On Fri, Nov 23, 2018 at 12:15:57PM +0100, Michal Hocko wrote:
On Thu 22-11-18 17:51:04, Daniel Vetter wrote:
Just a bit of paranoia, since if we start pushing this deep into callchains it's hard to spot all places where an mmu notifier implementation might fail when it's not allowed to.
What does WARN give you more than the existing pr_info? Is really backtrace that interesting?
Automated tools have to ignore everything at info level (there's too much of that). I guess I could do something like
if (blockable) pr_warn(...) else pr_info(...)
WARN() is simply my goto tool for getting something at warning level dumped into dmesg. But I think the pr_warn with the callback function should be enough indeed.
If you wonder where all the info level stuff happens that we have to ignore: suspend/resume is a primary culprit (fairly important for gfx/desktops), but there's a bunch of other places. Even if we ignore everything at info and below we still need filters because some drivers are a bit too trigger-happy (i915 definitely included I guess, so everyone contributes to this problem).
Cheers, Daniel
Cc: Andrew Morton akpm@linux-foundation.org Cc: Michal Hocko mhocko@suse.com Cc: "Christian König" christian.koenig@amd.com Cc: David Rientjes rientjes@google.com Cc: Daniel Vetter daniel.vetter@ffwll.ch Cc: "Jérôme Glisse" jglisse@redhat.com Cc: linux-mm@kvack.org Cc: Paolo Bonzini pbonzini@redhat.com Signed-off-by: Daniel Vetter daniel.vetter@intel.com
mm/mmu_notifier.c | 2 ++ 1 file changed, 2 insertions(+)
diff --git a/mm/mmu_notifier.c b/mm/mmu_notifier.c index 5119ff846769..59e102589a25 100644 --- a/mm/mmu_notifier.c +++ b/mm/mmu_notifier.c @@ -190,6 +190,8 @@ int __mmu_notifier_invalidate_range_start(struct mm_struct *mm, pr_info("%pS callback failed with %d in %sblockable context.\n", mn->ops->invalidate_range_start, _ret, !blockable ? "non-" : "");
WARN(blockable,"%pS callback failure not allowed\n",
}mn->ops->invalidate_range_start); ret = _ret; }
-- 2.19.1
-- Michal Hocko SUSE Labs