02 May, 2007

1 commit

  • Currently, all 32-bit powerpc platforms use asm-ppc/pgtable.h and
    asm-ppc/pgalloc.h, even when otherwise compiled with ARCH=powerpc.
    Those asm-ppc files are a fairly nasty tangle of #ifdefs including a
    bunch of things which shouldn't be necessary any more in arch/powerpc.

    Cleaning up that mess is going to take a while, but this patch is a
    first step. It separates the asm-powerpc/pg{alloc,table}.h into 64
    bit and 32 bit versions in asm-powerpc, which the basic .h files in
    asm-powerpc select based on config. We make a few tiny tweaks to the
    innards of the files along the way, making the outermost ifdefs
    (double-inclusion protection and __KERNEL__) a little cleaner, and
    #including asm-generic/pgtable.h from the top-level
    asm-powerpc/pgtable.h (since both the old 32-bit and 64-bit versions
    ended with such an #include).

    Signed-off-by: David Gibson
    Signed-off-by: Paul Mackerras

    David Gibson
     

08 Dec, 2006

1 commit

  • Replace all uses of kmem_cache_t with struct kmem_cache.

    The patch was generated using the following script:

    #!/bin/sh
    #
    # Replace one string by another in all the kernel sources.
    #

    set -e

    for file in `find * -name "*.c" -o -name "*.h"|xargs grep -l $1`; do
    quilt add $file
    sed -e "1,\$s/$1/$2/g" $file >/tmp/$$
    mv /tmp/$$ $file
    quilt refresh
    done

    The script was run like this

    sh replace kmem_cache_t "struct kmem_cache"

    Signed-off-by: Christoph Lameter
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Christoph Lameter
     

24 Aug, 2006

1 commit

  • On Tue, 2006-08-15 at 08:22 -0700, Dave Hansen wrote:
    > kernel BUG in cache_free_debugcheck at mm/slab.c:2748!

    Alright, this one is only triggered when slab debugging is enabled. The
    slabs are assumed to be aligned on a HUGEPTE_TABLE_SIZE boundary. The free
    path makes use of this assumption and uses the lowest nibble to pass around
    an index into an array of kmem_cache pointers. With slab debugging turned
    on, the slab is still aligned, but the "working" object pointer is not.
    This would break the assumption above that a full nibble is available for
    the PGF_CACHENUM_MASK.

    The following patch reduces PGF_CACHENUM_MASK to cover only the two least
    significant bits, which is enough to cover the current number of 4 pgtable
    cache types. Then use this constant to mask out the appropriate part of
    the huge pte pointer.

    Signed-off-by: Adam Litke
    Signed-off-by: Andrew Morton
    Signed-off-by: Paul Mackerras

    Adam Litke
     

28 Apr, 2006

1 commit

  • At present, ARCH=powerpc kernels can waste considerable space in
    pagetables when making large hugepage mappings. Hugepage PTEs go in
    PMD pages, but each PMD page maps 256M and so contains only 16
    hugepage PTEs (128 bytes of data), but takes up a 1024 byte
    allocation. With CONFIG_PPC_64K_PAGES enabled (64k base page size),
    the situation is worse. Now hugepage PTEs are at the PTE page level
    (also mapping 256M), so we store 16 hugepage PTEs in a 64k allocation.

    The PowerPC MMU already means that any 256M region is either all
    hugepage, or all normal pages. Thus, with some care, we can use a
    different allocation for the hugepage PTE tables and only allocate the
    128 bytes necessary.

    Signed-off-by: Paul Mackerras

    David Gibson
     

18 Feb, 2006

1 commit

  • One of the parameters to the __pud_free_tlb() macro for powerpc is
    incorrect (see patch) . We get away with it by accident, because the one
    place the macro is called, the second parameter is a variable named "pud".

    Signed-off-by: David Gibson
    Cc: Paul Mackerras
    Cc: Benjamin Herrenschmidt
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    David Gibson
     

09 Jan, 2006

1 commit

  • include/asm-ppc/ had #ifdef __KERNEL__ in all header files that
    are not meant for use by user space, include/asm-powerpc does
    not have this yet.

    This patch gets us a lot closer there. There are a few cases
    where I was not sure, so I left them out. I have verified
    that no CONFIG_* symbols are used outside of __KERNEL__
    any more and that there are no obvious compile errors when
    including any of the headers in user space libraries.

    Signed-off-by: Arnd Bergmann
    Signed-off-by: Paul Mackerras

    Arnd Bergmann
     

19 Nov, 2005

1 commit