01 Feb, 2008

27 commits


31 Jan, 2008

13 commits

  • * 'for-2.6.25' of git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc: (454 commits)
    [POWERPC] Cell IOMMU fixed mapping support
    [POWERPC] Split out the ioid fetching/checking logic
    [POWERPC] Add support to cell_iommu_setup_page_tables() for multiple windows
    [POWERPC] Split out the IOMMU logic from cell_dma_dev_setup()
    [POWERPC] Split cell_iommu_setup_hardware() into two parts
    [POWERPC] Split out the logic that allocates struct iommus
    [POWERPC] Allocate the hash table under 1G on cell
    [POWERPC] Add set_dma_ops() to match get_dma_ops()
    [POWERPC] 83xx: Clean up / convert mpc83xx board DTS files to v1 format.
    [POWERPC] 85xx: Only invalidate TLB0 and TLB1
    [POWERPC] 83xx: Fix typo in mpc837x compatible entries
    [POWERPC] 85xx: convert sbc85* boards to use machine_device_initcall
    [POWERPC] 83xx: rework platform Kconfig
    [POWERPC] 85xx: rework platform Kconfig
    [POWERPC] 86xx: Remove unused IRQ defines
    [POWERPC] QE: Explicitly set address-cells and size cells for muram
    [POWERPC] Convert StorCenter DTS file to /dts-v1/ format.
    [POWERPC] 86xx: Convert all 86xx DTS files to /dts-v1/ format.
    [PPC] Remove 85xx from arch/ppc
    [PPC] Remove 83xx from arch/ppc
    ...

    Linus Torvalds
     
  • This patch adds support for setting up a fixed IOMMU mapping on certain
    cell machines. For 64-bit devices this avoids the performance overhead of
    mapping and unmapping pages at runtime. 32-bit devices are unable to use
    the fixed mapping.

    The fixed mapping is established at boot, and maps all of physical memory
    1:1 into device space at some offset. On machines with < 30 GB of memory
    we setup the fixed mapping immediately above the normal IOMMU window.

    For example a machine with 4GB of memory would end up with the normal
    IOMMU window from 0-2GB and the fixed mapping window from 2GB to 6GB. In
    this case a 64-bit device wishing to DMA to 1GB would be told to DMA to
    3GB, plus any offset required by firmware. The firmware offset is encoded
    in the "dma-ranges" property.

    On machines with 30GB or more of memory, we are unable to place the fixed
    mapping above the normal IOMMU window as we would run out of address space.
    Instead we move the normal IOMMU window to coincide with the hash page
    table, this region does not need to be part of the fixed mapping as no
    device should ever be DMA'ing to it. We then setup the fixed mapping
    from 0 to 32GB.

    Signed-off-by: Michael Ellerman
    Acked-by: Arnd Bergmann
    Signed-off-by: Paul Mackerras

    Michael Ellerman
     
  • Split out the ioid fetching and checking logic so we can use it elsewhere
    in a subsequent patch.

    Signed-off-by: Michael Ellerman
    Acked-by: Arnd Bergmann
    Signed-off-by: Paul Mackerras

    Michael Ellerman
     
  • Add support to cell_iommu_setup_page_tables() for handling two windows,
    the dynamic window and the fixed window. A fixed window size of 0
    indicates that there is no fixed window at all.

    Currently there are no callers who pass a non-zero fixed window, but the
    upcoming fixed IOMMU mapping patch will change that.

    Signed-off-by: Michael Ellerman
    Acked-by: Arnd Bergmann
    Signed-off-by: Paul Mackerras

    Michael Ellerman
     
  • Split the IOMMU logic out from cell_dma_dev_setup() into a separate
    function. If we're not using dma_direct_ops or dma_iommu_ops we don't
    know what the hell's going on, so BUG.

    Signed-off-by: Michael Ellerman
    Acked-by: Arnd Bergmann
    Signed-off-by: Paul Mackerras

    Michael Ellerman
     
  • Split cell_iommu_setup_hardware() into two parts. Split the page table
    setup into cell_iommu_setup_page_tables() and the bits that kick the
    hardware into cell_iommu_enable_hardware().

    Signed-off-by: Michael Ellerman
    Acked-by: Arnd Bergmann
    Signed-off-by: Paul Mackerras

    Michael Ellerman
     
  • Split out the logic that allocates a struct iommu into a separate
    function. This can fail however the calling code has never cared - so
    just return if we can't allocate an iommu.

    Signed-off-by: Michael Ellerman
    Acked-by: Arnd Bergmann
    Signed-off-by: Paul Mackerras

    Michael Ellerman
     
  • In order to support the fixed IOMMU mapping (in a subsequent patch),
    we need the hash table to be inside the IOMMUs DMA window. This is
    usually 2G, but let's make sure the hash table is under 1G as that
    will satisfy the IOMMU requirements and also means the hash table will
    be on node 0.

    Signed-off-by: Michael Ellerman
    Acked-by: Arnd Bergmann
    Signed-off-by: Paul Mackerras

    Michael Ellerman
     
  • Signed-off-by: Michael Ellerman
    Acked-by: Arnd Bergmann
    Signed-off-by: Paul Mackerras

    Michael Ellerman
     
  • * git://git.kernel.org/pub/scm/linux/kernel/git/x86/linux-2.6-x86:
    alpha: fix x86.git merge build error
    ia64: on UP percpu variables are not small memory model
    x86: fix arch/x86/kernel/test_nx.c modular build bug
    s390: use generic percpu linux-2.6.git
    POWERPC: use generic per cpu
    ia64: use generic percpu
    SPARC64: use generic percpu
    percpu: change Kconfig to HAVE_SETUP_PER_CPU_AREA
    modules: fold percpu_modcopy into module.c
    x86: export copy_from_user_ll_nocache[_nozero]
    x86: fix duplicated TIF on 64-bit

    Linus Torvalds
     
  • * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ieee1394/linux1394-2.6: (26 commits)
    firewire: fw-sbp2: Use sbp2 device-provided mgt orb timeout for logins
    firewire: fw-sbp2: increase login orb reply timeout, fix "failed to login"
    firewire: replace subtraction with bitwise and
    firewire: fw-core: react on bus resets while the config ROM is being fetched
    firewire: enforce access order between generation and node ID, fix "giving up on config rom"
    firewire: fw-cdev: use device generation, not card generation
    firewire: fw-sbp2: use device generation, not card generation
    firewire: fw-sbp2: try to increase reconnect_hold (speed up reconnection)
    firewire: fw-sbp2: skip unnecessary logout
    firewire vs. ieee1394: clarify MAINTAINERS
    firewire: fw-ohci: Dynamically allocate buffers for DMA descriptors
    firewire: fw-ohci: CycleTooLong interrupt management
    firewire: Fix extraction of source node id
    firewire: fw-ohci: Bug fixes for packet-per-buffer support
    firewire: fw-ohci: Fix for dualbuffer three-or-more buffers
    firewire: fw-sbp2: remove unused misleading macro
    firewire: fw-sbp2: prepare for s/g chaining
    firewire: fw-sbp2: refactor workq and kref handling
    ieee1394: ohci1394: don't schedule IT tasklets on IR events
    ieee1394: sbp2: raise default transfer size limit
    ...

    Linus Torvalds
     
  • Paul Mackerras
     
  • Paul Mackerras