Thread (20 messages) 20 messages, 5 authors, 2016-06-03

Re: BUG: scheduling while atomic: cron/668/0x10c9a0c0

From: Geert Uytterhoeven <geert@linux-m68k.org>
Date: 2016-06-03 09:00:37
Also in: linux-m68k, lkml

Hi Mel,

On Fri, Jun 3, 2016 at 10:41 AM, Mel Gorman [off-list ref] wrote:
On Fri, Jun 03, 2016 at 09:57:22AM +0200, Geert Uytterhoeven wrote:
quoted
On Thu, Jun 2, 2016 at 8:43 PM, Andrew Morton [off-list ref] wrote:
quoted
On Thu, 2 Jun 2016 13:19:36 +0100 Mel Gorman [off-list ref] wrote:
quoted
quoted
quoted
Signed-off-by: Mel Gorman <redacted>
Acked-by: Vlastimil Babka <redacted>
Thanks.
I queued this.  A tested-by:Geert would be nice?

From: Mel Gorman <redacted>
Subject: mm, page_alloc: recalculate the preferred zoneref if the context can ignore memory policies

The optimistic fast path may use cpuset_current_mems_allowed instead of of
a NULL nodemask supplied by the caller for cpuset allocations.  The
preferred zone is calculated on this basis for statistic purposes and as a
starting point in the zonelist iterator.

However, if the context can ignore memory policies due to being atomic or
being able to ignore watermarks then the starting point in the zonelist
iterator is no longer correct.  This patch resets the zonelist iterator in
the allocator slowpath if the context can ignore memory policies.  This
will alter the zone used for statistics but only after it is known that it
makes sense for that context.  Resetting it before entering the slowpath
would potentially allow an ALLOC_CPUSET allocation to be accounted for
against the wrong zone.  Note that while nodemask is not explicitly set to
the original nodemask, it would only have been overwritten if
cpuset_enabled() and it was reset before the slowpath was entered.

Link: http://lkml.kernel.org/r/20160602103936.GU2527@techsingularity.net
Fixes: c33d6c06f60f710 ("mm, page_alloc: avoid looking up the first zone in a zonelist twice")
My understanding was that this was an an additional patch, not fixing
the problem in-se?
It doesn't fix the problem you had, it is a follow-on patch that
potentially affects.
Thanks for confirming!
quoted
Indeed, after applying this patch (without the other one that added
"z = ac->preferred_zoneref;" to the reset_fair block of
get_page_from_freelist()) I still get crashes...
The patch you have is the only one required for the crash. This patch
handles a corner case with atomic allocations that can ignore memory
policies.
OK.

In the mean time my tests completed successfully with both patches applied.

Thanks!

Gr{oetje,eeting}s,

                        Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
                                -- Linus Torvalds

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help