From: Andrew Morton <akpm@linux-foundation.org>
To: Miquel van Smoorenburg <mikevs@xs4all.net>
Cc: Andi Kleen <andi@firstfloor.org>,
Glauber Costa <gcosta@redhat.com>,
linux-kernel@vger.kernel.org, linux-mm@kvack.org,
Ingo Molnar <mingo@elte.hu>
Subject: Re: [PATCH] 2.6.26-rc: x86: pci-dma.c: use __GFP_NO_OOM instead of __GFP_NORETRY
Date: Tue, 27 May 2008 01:47:20 -0700 [thread overview]
Message-ID: <20080527014720.6db68517.akpm@linux-foundation.org> (raw)
In-Reply-To: <20080526234940.GA1376@xs4all.net>
On Tue, 27 May 2008 01:49:47 +0200 Miquel van Smoorenburg <mikevs@xs4all.net> wrote:
> Please consider the below patch for 2.6.26 (can somebody from the
> x86 team pick this up please? Thank you)
>
>
>
> [PATCH] 2.6.26-rc: x86: pci-dma.c: use __GFP_NO_OOM instead of __GFP_NORETRY
>
> arch/x86/kernel/pci-dma.c::dma_alloc_coherent() adds __GFP_NORETRY to
> the gfp flags before calling alloc_pages() to prevent the oom killer
> from running.
Now, why does dma_alloc_coherent() do that?
If __GFP_FS is cleared (most cases) then we won't be calling
out_of_memory() anyway.
If __GFP_FS _is_ set then setting __GFP_NORETRY will do much more than
avoiding oom-killings. It will prevent the page allocator from
retrying and will cause the problems which one assumes (without
evidence :() you have observed.
So... why not just remove the setting of __GFP_NORETRY? Why is it
wrong to oom-kill things in this case?
> This has the expected side effect that that alloc_pages() doesn't
> retry anymore. Not really a problem for dma_alloc_coherent(.. GFP_ATOMIC)
> which is the way most drivers use it (through pci_alloc_consistent())
> but drivers that call dma_alloc_coherent(.. GFP_KERNEL) directly can get
> unexpected failures.
>
> Until we have the mask allocator, use a new flag __GFP_NO_OOM
> instead of __GFP_NORETRY.
>
But this change increases the chances of a caller getting stuck in the
page allocator for ever, unable to make progress?
WARNING: multiple messages have this Message-ID (diff)
From: Andrew Morton <akpm@linux-foundation.org>
To: Miquel van Smoorenburg <mikevs@xs4all.net>
Cc: Andi Kleen <andi@firstfloor.org>,
Glauber Costa <gcosta@redhat.com>,
linux-kernel@vger.kernel.org, linux-mm@kvack.org,
Ingo Molnar <mingo@elte.hu>
Subject: Re: [PATCH] 2.6.26-rc: x86: pci-dma.c: use __GFP_NO_OOM instead of __GFP_NORETRY
Date: Tue, 27 May 2008 01:47:20 -0700 [thread overview]
Message-ID: <20080527014720.6db68517.akpm@linux-foundation.org> (raw)
In-Reply-To: <20080526234940.GA1376@xs4all.net>
On Tue, 27 May 2008 01:49:47 +0200 Miquel van Smoorenburg <mikevs@xs4all.net> wrote:
> Please consider the below patch for 2.6.26 (can somebody from the
> x86 team pick this up please? Thank you)
>
>
>
> [PATCH] 2.6.26-rc: x86: pci-dma.c: use __GFP_NO_OOM instead of __GFP_NORETRY
>
> arch/x86/kernel/pci-dma.c::dma_alloc_coherent() adds __GFP_NORETRY to
> the gfp flags before calling alloc_pages() to prevent the oom killer
> from running.
Now, why does dma_alloc_coherent() do that?
If __GFP_FS is cleared (most cases) then we won't be calling
out_of_memory() anyway.
If __GFP_FS _is_ set then setting __GFP_NORETRY will do much more than
avoiding oom-killings. It will prevent the page allocator from
retrying and will cause the problems which one assumes (without
evidence :() you have observed.
So... why not just remove the setting of __GFP_NORETRY? Why is it
wrong to oom-kill things in this case?
> This has the expected side effect that that alloc_pages() doesn't
> retry anymore. Not really a problem for dma_alloc_coherent(.. GFP_ATOMIC)
> which is the way most drivers use it (through pci_alloc_consistent())
> but drivers that call dma_alloc_coherent(.. GFP_KERNEL) directly can get
> unexpected failures.
>
> Until we have the mask allocator, use a new flag __GFP_NO_OOM
> instead of __GFP_NORETRY.
>
But this change increases the chances of a caller getting stuck in the
page allocator for ever, unable to make progress?
--
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>
next prev parent reply other threads:[~2008-05-27 8:49 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-05-26 23:49 [PATCH] 2.6.26-rc: x86: pci-dma.c: use __GFP_NO_OOM instead of __GFP_NORETRY Miquel van Smoorenburg
2008-05-26 23:49 ` Miquel van Smoorenburg
2008-05-27 8:03 ` Ingo Molnar
2008-05-27 8:03 ` Ingo Molnar
2008-05-27 8:47 ` Andrew Morton [this message]
2008-05-27 8:47 ` Andrew Morton
2008-05-27 9:35 ` Miquel van Smoorenburg
2008-05-27 9:35 ` Miquel van Smoorenburg
2008-05-28 2:47 ` Andi Kleen
2008-05-28 2:47 ` Andi Kleen
2008-05-28 8:31 ` Miquel van Smoorenburg
2008-05-28 8:31 ` Miquel van Smoorenburg
2008-05-28 8:40 ` Andrew Morton
2008-05-28 8:40 ` Andrew Morton
2008-05-28 12:54 ` Andi Kleen
2008-05-28 12:54 ` Andi Kleen
2008-06-02 10:15 ` Ingo Molnar
2008-06-02 10:15 ` Ingo Molnar
[not found] ` <1212682484.4332.7.camel@n2o.xs4all.nl>
2008-06-10 10:23 ` Ingo Molnar
2008-06-10 17:14 ` Jesse Barnes
2008-06-11 14:26 ` Miquel van Smoorenburg
2008-06-26 11:38 ` Ingo Molnar
2008-07-02 2:39 ` Jesse Barnes
2008-07-02 2:46 ` Yinghai Lu
2008-07-02 2:48 ` Jesse Barnes
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20080527014720.6db68517.akpm@linux-foundation.org \
--to=akpm@linux-foundation.org \
--cc=andi@firstfloor.org \
--cc=gcosta@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=mikevs@xs4all.net \
--cc=mingo@elte.hu \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.