lkml.org 
[lkml]   [2005]   [Nov]   [6]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH] mm: poison struct page for ptlock
    Hugh Dickins <hugh@veritas.com> wrote:
    >
    > On Sun, 6 Nov 2005, Andrew Morton wrote:
    > >
    > > This patch makes the ppc64 crash. See
    > > http://www.zip.com.au/~akpm/linux/patches/stuff/dsc02976.jpg
    > >
    > > I don't know what the access address was (ia32 nicely tells you), but if
    > > it's `DAR' then we have LIST_POISON1. Which would indicate that the slab
    > > page which backs the mm_struct itself is getting freed-up-pte-page
    > > treatment, which is deeply screwed up.
    > >
    > > I'll try it on x86_64 and ia64, see if it's specific to ppc64.
    >
    > I think it'll turn out to be (my patch, yes, but) the way mm/slab.c does
    >
    > #define SET_PAGE_CACHE(pg,x) ((pg)->lru.next = (struct list_head *)(x))
    > #define GET_PAGE_CACHE(pg) ((kmem_cache_t *)(pg)->lru.next)
    > #define SET_PAGE_SLAB(pg,x) ((pg)->lru.prev = (struct list_head *)(x))
    > #define GET_PAGE_SLAB(pg) ((struct slab *)(pg)->lru.prev)
    >
    > and needs those fields preserved while that page is in the slab.
    > Though I've not tried to work out why it crashes on an mm_struct.
    >
    > I'd checked that none of the architectures were using those page fields
    > of a page table page, but never considered that slab was using them: my
    > patch probably breaks all those which use slab for their page tables.

    Ah, of course, yes. pagetable pages which come from slab have a live
    page.lru even while the memory is in use by the caller.

    > Drat. I'm trying to think of the best way to retrieve the situation.

    I suspect a slab-based fix/workaround would be unpleasant. Simpler to not
    use slab for pagetable pages.

    I doubt if there's much benefit to pagetable-pages-in-slab, really. It
    _used_ to make sense because slab has the per-cpu LIFO magazines. But now
    the page allocator has them too, it's probably better to rely upon that
    magazine to provide cache-warm pages.

    > The priority must be for you to get 2.6.14-mm1 out: is the easiest for
    > now simply to revert my patch (and the _private one(s) you added on top)?

    yup, when I can get the steaming pile to compile.

    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

    \
     
     \ /
      Last update: 2005-11-07 00:16    [W:0.022 / U:33.376 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site