From: Christoph Lameter <clameter@sgi.com>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: "Rafael J. Wysocki" <rjw@sisk.pl>,
Pawel Staszewski <pstaszewski@artcom.pl>,
LKML <linux-kernel@vger.kernel.org>,
Adrian Bunk <bunk@kernel.org>,
Andrew Morton <akpm@linux-foundation.org>,
Natalie Protasevich <protasnb@gmail.com>
Subject: Re: 2.6.25-rc7-git2: Reported regressions from 2.6.24
Date: Sat, 29 Mar 2008 13:42:14 -0700 (PDT) [thread overview]
Message-ID: <Pine.LNX.4.64.0803291330190.26394@schroedinger.engr.sgi.com> (raw)
In-Reply-To: <alpine.LFD.1.00.0803281214580.14670@woody.linux-foundation.org>
On Fri, 28 Mar 2008, Linus Torvalds wrote:
> .. where kmap_atomic() on x86 does:
>
> kmap_atomic() ->
> kmap_atomic_prot() ->
> debug_kmap_atomic_prot() ->
> if (in_irq())
> WARN_ON_ONCE()
>
> none of which are at all conditional on __GFP_HIGHMEM.
kmap check for PageHighmem and does not do a kmap for regular pages.
So this is actually okay. If the allocation that was performed does not
allow GFP_HIGHMEM then the kmap will never use a real mapping. The check
should not trigger.
> > Then clear_highpage calls additional checking functions that have
> > the effect of generally forbiding zeroing in interrupt context if
> > CONFIG_HIGHMEM is set. This is wrong and needs to be fixed.
>
> No. Dammit, the bug is in SLUB.
>
> If SLUB *ever* calls the page allocator with __GFP_ZERO set, it's a
> bug, and that has nothing to do with GFP_ATOMIC or anything else. Because
> SLUB uses its own logic for clearing the result.
Yes it uses its own logic if the object is managed by SLUB but not if the
object is too big and/or the allocation forwarded to the page allocator
or for other internal allocations of buffers etc.
> Why cannot you just admit it?
Admitting something that is not true is rather difficult.
> Now, _outside_ of SLUB there appear to be other users too, and those users
> need to either be fixed or we need to allow __GFP_ZERO togethe with
> GFP_ATOMIC. But the fact is, SLUB had a really stupid bug that it
> shouldn't have had.
So what you want is to forbid any use of
alloc_pages(__GFP_ZERO|...)
from an interrupt context? That works fine on most platforms and used to
work fine on x86 as well until the check was added on January 30th.
If we really want this then the check in prep_zero_page should be changed
too:
---
mm/page_alloc.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
Index: linux-2.6/mm/page_alloc.c
===================================================================
--- linux-2.6.orig/mm/page_alloc.c 2008-03-29 13:40:42.166669333 -0700
+++ linux-2.6/mm/page_alloc.c 2008-03-29 13:41:21.039168276 -0700
@@ -317,7 +317,7 @@ static inline void prep_zero_page(struct
* clear_highpage() will use KM_USER0, so it's a bug to use __GFP_ZERO
* and __GFP_HIGHMEM from hard or soft interrupt context.
*/
- VM_BUG_ON((gfp_flags & __GFP_HIGHMEM) && in_interrupt());
+ VM_BUG_ON(in_interrupt());
for (i = 0; i < (1 << order); i++)
clear_highpage(page + i);
}
next prev parent reply other threads:[~2008-03-29 20:44 UTC|newest]
Thread overview: 55+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-03-27 22:53 Rafael J. Wysocki
2008-03-28 0:18 ` Carlos R. Mafra
2008-03-28 0:23 ` Rafael J. Wysocki
2008-03-28 2:30 ` Linus Torvalds
2008-03-28 3:24 ` Christoph Lameter
2008-03-28 4:00 ` Linus Torvalds
2008-03-28 10:48 ` Paweł Staszewski
2008-03-28 17:46 ` Andrew Morton
2008-03-28 21:57 ` Rafael J. Wysocki
2008-03-28 17:15 ` Pekka Enberg
2008-03-28 17:27 ` Linus Torvalds
2008-03-28 18:08 ` Pekka Enberg
2008-03-28 18:20 ` Linus Torvalds
2008-03-28 18:38 ` Christoph Lameter
2008-03-28 18:47 ` Andrew Morton
2008-03-28 18:53 ` Christoph Lameter
2008-03-28 19:37 ` Linus Torvalds
2008-03-28 19:59 ` Linus Torvalds
2008-03-28 19:59 ` Pekka Enberg
2008-03-28 20:24 ` Linus Torvalds
2008-03-28 18:37 ` Christoph Lameter
2008-03-28 19:32 ` Linus Torvalds
2008-03-28 18:33 ` Christoph Lameter
2008-03-28 19:25 ` Linus Torvalds
2008-03-29 20:42 ` Christoph Lameter [this message]
2008-03-29 21:29 ` Linus Torvalds
2008-03-29 23:52 ` Pekka Enberg
2008-03-31 18:56 ` Christoph Lameter
2008-03-31 18:45 ` Christoph Lameter
2008-03-28 3:31 ` Yinghai Lu
2008-03-31 10:14 ` Kamalesh Babulal
2008-03-31 12:10 ` Rafael J. Wysocki
2008-03-28 11:29 ` Haavard Skinnemoen
2008-03-28 16:11 ` Rafael J. Wysocki
2008-03-28 16:10 ` Rafael J. Wysocki
2008-03-28 16:47 ` Linus Torvalds
2008-03-28 17:36 ` Adrian Bunk
2008-03-28 20:33 ` Ingo Molnar
2008-03-28 22:28 ` Rafael J. Wysocki
2008-03-31 13:34 ` Ingo Molnar
2008-03-28 10:24 ` Thomas Gleixner
2008-03-28 10:58 ` Thomas Gleixner
2008-03-28 11:00 ` Peter Zijlstra
2008-03-28 11:13 ` Adrian Bunk
2008-03-28 11:16 ` Thomas Gleixner
2008-03-28 11:31 ` Adrian Bunk
2008-03-28 16:17 ` Rafael J. Wysocki
2008-03-28 17:06 ` Adrian Bunk
2008-03-28 20:42 ` Ingo Molnar
2008-03-28 22:33 ` Rafael J. Wysocki
2008-03-28 11:44 ` Peter Zijlstra
2008-03-28 16:12 ` Rafael J. Wysocki
2008-03-28 16:18 ` Thomas Gleixner
2008-03-28 18:57 ` Mark Lord
2008-03-28 22:37 ` Rafael J. Wysocki
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=Pine.LNX.4.64.0803291330190.26394@schroedinger.engr.sgi.com \
--to=clameter@sgi.com \
--cc=akpm@linux-foundation.org \
--cc=bunk@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=protasnb@gmail.com \
--cc=pstaszewski@artcom.pl \
--cc=rjw@sisk.pl \
--cc=torvalds@linux-foundation.org \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®