01 Nov, 2006

1 commit

  • The 10Gigabit ethernet device drivers appear to be able to chew
    up all 256MB of TCE mappings on pSeries systems, as evidenced by
    numerous error messages:

    iommu_alloc failed, tbl c0000000010d5c48 vaddr c0000000d875eff0 npages 1

    Some experimentation indicates that this is essentially because
    one 1500 byte ethernet MTU gets mapped as a 64K DMA region when
    the large 64K pages are enabled. Thus, it doesn't take much to
    exhaust all of the available DMA mappings for a high-speed card.

    This patch changes the iommu allocator to work with its own
    unique, distinct page size. Although the patch is long, its
    actually quite simple: it just #defines a distinct IOMMU_PAGE_SIZE
    and then uses this in all the places that matter.

    As a side effect, it also dramatically improves network performance
    on platforms with H-calls on iommu translation inserts/removes (since
    we no longer call it 16 times for a 1500 bytes packet when the iommu HW
    is still 4k).

    In the future, we might want to make the IOMMU_PAGE_SIZE a variable
    in the iommu_table instance, thus allowing support for different HW
    page sizes in the iommu itself.

    Signed-off-by: Linas Vepstas
    Signed-off-by: Benjamin Herrenschmidt
    Acked-by: Olof Johansson
    Acked-by: Stephen Rothwell
    Signed-off-by: Paul Mackerras

    Linas Vepstas
     

29 Apr, 2006

1 commit

  • It's been long overdue to kill the union tce_entry in the pSeries/iSeries
    TCE code, especially since I asked the Summit guys to do it on the code
    they copied from us.

    Also, while I was at it, I cleaned up some whitespace.

    Built and booted on pSeries, built on iSeries.

    Signed-off-by: Olof Johansson
    Signed-off-by: Paul Mackerras

    Olof Johansson
     

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
     

23 Nov, 2005

1 commit


10 Nov, 2005

1 commit

  • This patch moves a bunch of files from arch/ppc64 and
    include/asm-ppc64 which have no equivalents in ppc32 code into
    arch/powerpc and include/asm-powerpc. The file affected are:
    abs_addr.h
    compat.h
    lppaca.h
    paca.h
    tce.h
    cpu_setup_power4.S
    ioctl32.c
    firmware.c
    pacaData.c

    The only changes apart from the move and corresponding Makefile
    changes are:
    - #ifndef/#define in includes updated to _ASM_POWERPC_ form
    - trailing whitespace removed
    - comments giving full paths removed
    - pacaData.c renamed paca.c to remove studlyCaps
    - Misplaced { moved in lppaca.h

    Built and booted on POWER5 LPAR (ARCH=powerpc and ARCH=ppc64), built
    for 32-bit powermac (ARCH=powerpc).

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

    David Gibson