Thread (8 messages) 8 messages, 4 authors, 2016-07-28

Re: [Question]page allocation failure: order:2, mode:0x2000d1

From: Michal Hocko <mhocko@kernel.org>
Date: 2016-07-28 08:11:06
Also in: lkml

On Thu 28-07-16 15:50:32, Xishi Qiu wrote:
On 2016/7/20 15:47, Michal Hocko wrote:
quoted
On Wed 20-07-16 09:33:30, Yisheng Xie wrote:
quoted

On 2016/7/19 22:14, Vlastimil Babka wrote:
quoted
On 07/19/2016 03:48 PM, Xishi Qiu wrote:
[...]
quoted
quoted
quoted
mode:0x2000d1 means it expects to alloc from zone_dma, (on arm64 zone_dma is 0-4G)
Yes, but I don't see where the __GFP_DMA comes from. The backtrace
suggests it's alloc_thread_info_node() which uses THREADINFO_GFP
which is GFP_KERNEL | __GFP_NOTRACK. There shouldn't be __GFP_DMA,
even on arm64. Are there some local modifications to the kernel
source?
quoted
The page cache is very small(active_file:292kB inactive_file:240kB),
so did_some_progress may be zero, and will not retry, right?
Could be, and then __alloc_pages_may_oom() has this:

        /* The OOM killer does not needlessly kill tasks for lowmem */
        if (ac->high_zoneidx < ZONE_NORMAL)
                goto out;

So no oom and no faking progress for non-costly order that would
result in retry, because of that mysterious __GFP_DMA...
hi Vlastimil,
We do make change and add __GFP_DMA flag here for our platform driver's problem.
Why would you want to force thread_info to the DMA zone?
Hi Michal,

Because of our platform driver's problem, so we change the code(add GFP_DMA) to let
it alloc from zone_dma. (on arm64 zone_dma is 0-4G)
Why would any platform driver need to access kernel thread in the DMA
zone?
-- 
Michal Hocko
SUSE Labs

--
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