16 Sep, 2016

1 commit

  • With the device stream ID relationship suitably abstracted and
    of_xlate() hooked up, the PCI dependency now looks, and is, entirely
    arbitrary. Any bus using the of_dma_configure() mechanism will work,
    so extend support to the platform and AMBA buses which do just that.

    Acked-by: Will Deacon
    Tested-by: Lorenzo Pieralisi
    Signed-off-by: Robin Murphy
    Signed-off-by: Will Deacon

    Robin Murphy
     

26 Jul, 2016

1 commit


13 Jul, 2016

1 commit


21 Jun, 2016

3 commits

  • Now that the driver is DT adapted, bus_set_iommu gets called only
    when on compatible matching. So the driver should not break multiplatform
    builds now. So remove the BROKEN config.

    Signed-off-by: Sricharan R
    Tested-by: Archit Taneja
    Tested-by: Srinivas Kandagatla
    Signed-off-by: Joerg Roedel

    Sricharan R
     
  • This iommu uses the armv7 short descriptor format. So use the
    generic ARMV7S pagetable ops instead of rewriting the same stuff
    in the driver.

    Signed-off-by: Sricharan R
    Tested-by: Archit Taneja
    Tested-by: Srinivas Kandagatla
    Signed-off-by: Joerg Roedel

    Sricharan R
     
  • Mediatek SoC's M4U has two generations of HW architcture. Generation one
    uses flat, one layer pagetable, and was shipped with ARM architecture, it
    only supports 4K size page mapping. MT2701 SoC uses this generation one
    m4u HW. Generation two uses the ARM short-descriptor translation table
    format for address translation, and was shipped with ARM64 architecture,
    MT8173 uses this generation two m4u HW. All the two generation iommu HW
    only have one iommu domain, and all its iommu clients share the same
    iova address.

    These two generation m4u HW have slit different register groups and
    register offset, but most register names are the same. This patch add iommu
    support for mediatek SoC mt2701.

    Signed-off-by: Honghui Zhang
    Signed-off-by: Joerg Roedel

    Honghui Zhang
     

10 May, 2016

1 commit


09 May, 2016

1 commit


07 Apr, 2016

1 commit


21 Mar, 2016

1 commit


01 Mar, 2016

1 commit


29 Feb, 2016

1 commit

  • The newly added Mediatek IOMMU driver uses the IOMMU_DMA infrastructure,
    but unlike other such drivers, it does not select 'ARM_DMA_USE_IOMMU',
    which is a prerequisite, leading to a link error:

    warning: (MTK_IOMMU) selects IOMMU_DMA which has unmet direct dependencies (IOMMU_SUPPORT && NEED_SG_DMA_LENGTH)
    drivers/iommu/built-in.o: In function `iommu_put_dma_cookie':
    mtk_iommu.c:(.text+0x11fe): undefined reference to `put_iova_domain'
    drivers/iommu/built-in.o: In function `iommu_dma_init_domain':
    mtk_iommu.c:(.text+0x1316): undefined reference to `init_iova_domain'
    drivers/iommu/built-in.o: In function `__iommu_dma_unmap':
    mtk_iommu.c:(.text+0x1380): undefined reference to `find_iova'

    This adds the same select that the other drivers have. On a related
    note, I wonder if we should just always select ARM_DMA_USE_IOMMU
    whenever any IOMMU driver is enabled. Are there any cases where
    we would enable an IOMMU but not use it?

    Signed-off-by: Arnd Bergmann
    Fixes: 0df4fabe208d ("iommu/mediatek: Add mt8173 IOMMU driver")
    Signed-off-by: Joerg Roedel

    Arnd Bergmann
     

25 Feb, 2016

3 commits

  • This patch adds support for mediatek m4u (MultiMedia Memory Management
    Unit).

    Signed-off-by: Yong Wu
    Reviewed-by: Robin Murphy
    Signed-off-by: Joerg Roedel

    Yong Wu
     
  • Make use of ARCH_RENESAS in place of ARCH_SHMOBILE.

    This is part of an ongoing process to migrate from ARCH_SHMOBILE to
    ARCH_RENESAS the motivation for which being that RENESAS seems to be a more
    appropriate name than SHMOBILE for the majority of Renesas ARM based SoCs.

    Signed-off-by: Simon Horman
    Acked-by: Geert Uytterhoeven
    Acked-by: Laurent Pinchart
    Signed-off-by: Joerg Roedel

    Simon Horman
     
  • This patch adds support for v5 of SYSMMU controller, found in Samsung
    Exynos 5433 SoCs. The main difference of v5 is support for 36-bit physical
    address space and some changes in register layout and core clocks hanging.
    This patch also adds support for ARM64 architecture, which is used by
    Exynos 5433 SoCs.

    Signed-off-by: Marek Szyprowski
    Signed-off-by: Joerg Roedel

    Marek Szyprowski
     

17 Feb, 2016

1 commit


14 Dec, 2015

1 commit

  • As of commit 44d88c754e57a6d9 ("ARM: shmobile: Remove legacy SoC code
    for R-Mobile A1"), the Renesas IPMMU/IPMMUI driver is no longer used.
    In theory it could still be used on SH-Mobile AG5 and R-Mobile A1 SoCs,
    but that requires adding DT support to the driver, which is not
    planned.

    Remove the driver, it can be resurrected from git history when needed.

    Signed-off-by: Geert Uytterhoeven
    Acked-by: Simon Horman
    Signed-off-by: Joerg Roedel

    Geert Uytterhoeven
     

06 Nov, 2015

2 commits

  • Pull iommu updates from Joerg Roedel:
    "This time including:

    - A new IOMMU driver for s390 pci devices

    - Common dma-ops support based on iommu-api for ARM64. The plan is
    to use this as a basis for ARM32 and hopefully other architectures
    as well in the future.

    - MSI support for ARM-SMMUv3

    - Cleanups and dead code removal in the AMD IOMMU driver

    - Better RMRR handling for the Intel VT-d driver

    - Various other cleanups and small fixes"

    * tag 'iommu-updates-v4.4' of git://git.kernel.org/pub/scm/linux/kernel/git/joro/iommu: (41 commits)
    iommu/vt-d: Fix return value check of parse_ioapics_under_ir()
    iommu/vt-d: Propagate error-value from ir_parse_ioapic_hpet_scope()
    iommu/vt-d: Adjust the return value of the parse_ioapics_under_ir
    iommu: Move default domain allocation to iommu_group_get_for_dev()
    iommu: Remove is_pci_dev() fall-back from iommu_group_get_for_dev
    iommu/arm-smmu: Switch to device_group call-back
    iommu/fsl: Convert to device_group call-back
    iommu: Add device_group call-back to x86 iommu drivers
    iommu: Add generic_device_group() function
    iommu: Export and rename iommu_group_get_for_pci_dev()
    iommu: Revive device_group iommu-ops call-back
    iommu/amd: Remove find_last_devid_on_pci()
    iommu/amd: Remove first/last_device handling
    iommu/amd: Initialize amd_iommu_last_bdf for DEV_ALL
    iommu/amd: Cleanup buffer allocation
    iommu/amd: Remove cmd_buf_size and evt_buf_size from struct amd_iommu
    iommu/amd: Align DTE flag definitions
    iommu/amd: Remove old alias handling code
    iommu/amd: Set alias DTE in do_attach/do_detach
    iommu/amd: WARN when __[attach|detach]_device are called with irqs enabled
    ...

    Linus Torvalds
     
  • Pull intel iommu updates from David Woodhouse:
    "This adds "Shared Virtual Memory" (aka PASID support) for the Intel
    IOMMU. This allows devices to do DMA using process address space,
    translated through the normal CPU page tables for the relevant mm.

    With corresponding support added to the i915 driver, this has been
    tested with the graphics device on Skylake. We don't have the
    required TLP support in our PCIe root ports for supporting discrete
    devices yet, so it's only integrated devices that can do it so far"

    * git://git.infradead.org/intel-iommu: (23 commits)
    iommu/vt-d: Fix rwxp flags in SVM device fault callback
    iommu/vt-d: Expose struct svm_dev_ops without CONFIG_INTEL_IOMMU_SVM
    iommu/vt-d: Clean up pasid_enabled() and ecs_enabled() dependencies
    iommu/vt-d: Handle Caching Mode implementations of SVM
    iommu/vt-d: Fix SVM IOTLB flush handling
    iommu/vt-d: Use dev_err(..) in intel_svm_device_to_iommu(..)
    iommu/vt-d: fix a loop in prq_event_thread()
    iommu/vt-d: Fix IOTLB flushing for global pages
    iommu/vt-d: Fix address shifting in page request handler
    iommu/vt-d: shift wrapping bug in prq_event_thread()
    iommu/vt-d: Fix NULL pointer dereference in page request error case
    iommu/vt-d: Implement SVM_FLAG_SUPERVISOR_MODE for kernel access
    iommu/vt-d: Implement SVM_FLAG_PRIVATE_PASID to allocate unique PASIDs
    iommu/vt-d: Add callback to device driver on page faults
    iommu/vt-d: Implement page request handling
    iommu/vt-d: Generalise DMAR MSI setup to allow for page request events
    iommu/vt-d: Implement deferred invalidate for SVM
    iommu/vt-d: Add basic SVM PASID support
    iommu/vt-d: Always enable PASID/PRI PCI capabilities before ATS
    iommu/vt-d: Add initial support for PASID tables
    ...

    Linus Torvalds
     

02 Nov, 2015

1 commit


15 Oct, 2015

5 commits

  • Despite being a platform device, the SMMUv3 is capable of signaling
    interrupts using MSIs. Hook it into the platform MSI framework and
    enjoy faults being reported in a new and exciting way.

    Signed-off-by: Marc Zyngier
    [will: tidied up the binding example and reworked most of the code]
    Signed-off-by: Will Deacon

    Marc Zyngier
     
  • Taking inspiration from the existing arch/arm code, break out some
    generic functions to interface the DMA-API to the IOMMU-API. This will
    do the bulk of the heavy lifting for IOMMU-backed dma-mapping.

    Since associating an IOVA allocator with an IOMMU domain is a fairly
    common need, rather than introduce yet another private structure just to
    do this for ourselves, extend the top-level struct iommu_domain with the
    notion. A simple opaque cookie allows reuse by other IOMMU API users
    with their various different incompatible allocator types.

    Signed-off-by: Robin Murphy
    Signed-off-by: Joerg Roedel

    Robin Murphy
     
  • This provides basic PASID support for endpoint devices, tested with a
    version of the i915 driver.

    Signed-off-by: David Woodhouse

    David Woodhouse
     
  • The behaviour if you enable PASID support after ATS is undefined. So we
    have to enable it first, even if we don't know whether we'll need it.

    This is safe enough; unless we set up a context that permits it, the device
    can't actually *do* anything with it.

    Also shift the feature detction to dmar_insert_one_dev_info() as it only
    needs to happen once.

    Signed-off-by: David Woodhouse

    David Woodhouse
     
  • Add CONFIG_INTEL_IOMMU_SVM, and allocate PASID tables on supported hardware.

    Signed-off-by: David Woodhouse

    David Woodhouse
     

14 Oct, 2015

1 commit

  • Pull IOMMU fixes from Joerg Roedel:
    "A few fixes piled up:

    - Fix for a suspend/resume issue where PCI probing code overwrote
    dev->irq for the MSI irq of the AMD IOMMU.

    - Fix for a kernel crash when a 32 bit PCI device was assigned to a
    KVM guest.

    - Fix for a possible memory leak in the VT-d driver

    - A couple of fixes for the ARM-SMMU driver"

    * tag 'iommu-fixes-v4.3-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/joro/iommu:
    iommu/amd: Fix NULL pointer deref on device detach
    iommu/amd: Prevent binding other PCI drivers to IOMMU PCI devices
    iommu/vt-d: Fix memory leak in dmar_insert_one_dev_info()
    iommu/arm-smmu: Use correct address mask for CMD_TLBI_S2_IPA
    iommu/arm-smmu: Ensure IAS is set correctly for AArch32-capable SMMUs
    iommu/io-pgtable-arm: Don't use dma_to_phys()

    Linus Torvalds
     

06 Oct, 2015

1 commit


02 Oct, 2015

1 commit

  • Pull IOVA fixes from David Woodhouse:
    "The main fix here is the first one, fixing the over-allocation of
    size-aligned requests. The other patches simply make the existing
    IOVA code available to users other than the Intel VT-d driver, with no
    functional change.

    I concede the latter really *should* have been submitted during the
    merge window, but since it's basically risk-free and people are
    waiting to build on top of it and it's my fault I didn't get it in, I
    (and they) would be grateful if you'd take it"

    * git://git.infradead.org/intel-iommu:
    iommu: Make the iova library a module
    iommu: iova: Export symbols
    iommu: iova: Move iova cache management to the iova library
    iommu/iova: Avoid over-allocating when size-aligned

    Linus Torvalds
     

23 Sep, 2015

1 commit

  • In checking whether DMA addresses differ from physical addresses, using
    dma_to_phys() is actually the wrong thing to do, since it may hide any
    DMA offset, which is precisely one of the things we are checking for.
    Simply casting between the two address types, whilst ugly, is in fact
    the appropriate course of action. Further care (and ugliness) is also
    necessary in the comparison to avoid truncation if phys_addr_t and
    dma_addr_t differ in size.

    We can also reject any device with a fixed DMA offset up-front at page
    table creation, leaving the allocation-time check for the more subtle
    cases like bounce buffering due to an incorrect DMA mask.

    Furthermore, we can then fix the hackish KConfig dependency so that
    architectures without a dma_to_phys() implementation may still
    COMPILE_TEST (or even use!) the code. The true dependency is on the
    DMA API, so use the appropriate symbol for that.

    Signed-off-by: Robin Murphy
    [will: folded in selftest fix from Yong Wu]
    Signed-off-by: Will Deacon

    Robin Murphy
     

09 Sep, 2015

1 commit

  • Pull iommu updates for from Joerg Roedel:
    "This time the IOMMU updates are mostly cleanups or fixes. No big new
    features or drivers this time. In particular the changes include:

    - Bigger cleanup of the DomainIOMMU data structures and the code
    that manages them in the Intel VT-d driver. This makes the code
    easier to understand and maintain, and also easier to keep the data
    structures in sync. It is also a preparation step to make use of
    default domains from the IOMMU core in the Intel VT-d driver.

    - Fixes for a couple of DMA-API misuses in ARM IOMMU drivers, namely
    in the ARM and Tegra SMMU drivers.

    - Fix for a potential buffer overflow in the OMAP iommu driver's
    debug code

    - A couple of smaller fixes and cleanups in various drivers

    - One small new feature: Report domain-id usage in the Intel VT-d
    driver to easier detect bugs where these are leaked"

    * tag 'iommu-updates-v4.3' of git://git.kernel.org/pub/scm/linux/kernel/git/joro/iommu: (83 commits)
    iommu/vt-d: Really use upper context table when necessary
    x86/vt-d: Fix documentation of DRHD
    iommu/fsl: Really fix init section(s) content
    iommu/io-pgtable-arm: Unmap and free table when overwriting with block
    iommu/io-pgtable-arm: Move init-fn declarations to io-pgtable.h
    iommu/msm: Use BUG_ON instead of if () BUG()
    iommu/vt-d: Access iomem correctly
    iommu/vt-d: Make two functions static
    iommu/vt-d: Use BUG_ON instead of if () BUG()
    iommu/vt-d: Return false instead of 0 in irq_remapping_cap()
    iommu/amd: Use BUG_ON instead of if () BUG()
    iommu/amd: Make a symbol static
    iommu/amd: Simplify allocation in irq_remapping_alloc()
    iommu/tegra-smmu: Parameterize number of TLB lines
    iommu/tegra-smmu: Factor out tegra_smmu_set_pde()
    iommu/tegra-smmu: Extract tegra_smmu_pte_get_use()
    iommu/tegra-smmu: Use __GFP_ZERO to allocate zeroed pages
    iommu/tegra-smmu: Remove PageReserved manipulation
    iommu/tegra-smmu: Convert to use DMA API
    iommu/tegra-smmu: smmu_flush_ptc() wants device addresses
    ...

    Linus Torvalds
     

13 Aug, 2015

1 commit


06 Aug, 2015

1 commit

  • Currently, users of the LPAE page table code are (ab)using dma_map_page()
    as a means to flush page table updates for non-coherent IOMMUs. Since
    from the CPU's point of view, creating IOMMU page tables *is* passing
    DMA buffers to a device (the IOMMU's page table walker), there's little
    reason not to use the DMA API correctly.

    Allow IOMMU drivers to opt into DMA API operations for page table
    allocation and updates by providing their appropriate device pointer.
    The expectation is that an LPAE IOMMU should have a full view of system
    memory, so use streaming mappings to avoid unnecessary pressure on
    ZONE_DMA, and treat any DMA translation as a warning sign.

    Signed-off-by: Robin Murphy
    Signed-off-by: Will Deacon

    Robin Murphy
     

28 Jul, 2015

1 commit


27 Jun, 2015

2 commits

  • Pull drm updates from Dave Airlie:
    "This is the main drm pull request for v4.2.

    I've one other new driver from freescale on my radar, it's been posted
    and reviewed, I'd just like to get someone to give it a last look, so
    maybe I'll send it or maybe I'll leave it.

    There is no major nouveau changes in here, Ben was working on
    something big, and we agreed it was a bit late, there wasn't anything
    else he considered urgent to merge.

    There might be another msm pull for some bits that are waiting on
    arm-soc, I'll see how we time it.

    This touches some "of" stuff, acks are in place except for the fixes
    to the build in various configs,t hat I just applied.

    Summary:

    New drivers:
    - virtio-gpu:
    KMS only pieces of driver for virtio-gpu in qemu.
    This is just the first part of this driver, enough to run
    unaccelerated userspace on. As qemu merges more we'll start
    adding the 3D features for the virgl 3d work.
    - amdgpu:
    a new driver from AMD to driver their newer GPUs. (VI+)
    It contains a new cleaner userspace API, and is a clean
    break from radeon moving forward, that AMD are going to
    concentrate on. It also contains a set of register headers
    auto generated from AMD internal database.

    core:
    - atomic modesetting API completed, enabled by default now.
    - Add support for mode_id blob to atomic ioctl to complete interface.
    - bunch of Displayport MST fixes
    - lots of misc fixes.

    panel:
    - new simple panels
    - fix some long-standing build issues with bridge drivers

    radeon:
    - VCE1 support
    - add a GPU reset counter for userspace
    - lots of fixes.

    amdkfd:
    - H/W debugger support module
    - static user-mode queues
    - support killing all the waves when a process terminates
    - use standard DECLARE_BITMAP

    i915:
    - Add Broxton support
    - S3, rotation support for Skylake
    - RPS booting tuning
    - CPT modeset sequence fixes
    - ns2501 dither support
    - enable cmd parser on haswell
    - cdclk handling fixes
    - gen8 dynamic pte allocation
    - lots of atomic conversion work

    exynos:
    - Add atomic modesetting support
    - Add iommu support
    - Consolidate drm driver initialization
    - and MIC, DECON and MIPI-DSI support for exynos5433

    omapdrm:
    - atomic modesetting support (fixes lots of things in rewrite)

    tegra:
    - DP aux transaction fixes
    - iommu support fix

    msm:
    - adreno a306 support
    - various dsi bits
    - various 64-bit fixes
    - NV12MT support

    rcar-du:
    - atomic and misc fixes

    sti:
    - fix HDMI timing complaince

    tilcdc:
    - use drm component API to access tda998x driver
    - fix module unloading

    qxl:
    - stability fixes"

    * 'drm-next' of git://people.freedesktop.org/~airlied/linux: (872 commits)
    drm/nouveau: Pause between setting gpu to D3hot and cutting the power
    drm/dp/mst: close deadlock in connector destruction.
    drm: Always enable atomic API
    drm/vgem: Set unique to "vgem"
    of: fix a build error to of_graph_get_endpoint_by_regs function
    drm/dp/mst: take lock around looking up the branch device on hpd irq
    drm/dp/mst: make sure mst_primary mstb is valid in work function
    of: add EXPORT_SYMBOL for of_graph_get_endpoint_by_regs
    ARM: dts: rename the clock of MIPI DSI 'pll_clk' to 'sclk_mipi'
    drm/atomic: Don't set crtc_state->enable manually
    drm/exynos: dsi: do not set TE GPIO direction by input
    drm/exynos: dsi: add support for MIC driver as a bridge
    drm/exynos: dsi: add support for Exynos5433
    drm/exynos: dsi: make use of array for clock access
    drm/exynos: dsi: make use of driver data for static values
    drm/exynos: dsi: add macros for register access
    drm/exynos: dsi: rename pll_clk to sclk_clk
    drm/exynos: mic: add MIC driver
    of: add helper for getting endpoint node of specific identifiers
    drm/exynos: add Exynos5433 decon driver
    ...

    Linus Torvalds
     
  • Pull ARM SoC driver updates from Kevin Hilman:
    "Some of these are for drivers/soc, where we're now putting
    SoC-specific drivers these days. Some are for other driver subsystems
    where we have received acks from the appropriate maintainers.

    Some highlights:

    - simple-mfd: document DT bindings and misc updates
    - migrate mach-berlin to simple-mfd for clock, pinctrl and reset
    - memory: support for Tegra132 SoC
    - memory: introduce tegra EMC driver for scaling memory frequency
    - misc. updates for ARM CCI and CCN busses"

    * tag 'armsoc-drivers' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (48 commits)
    drivers: soc: sunxi: Introduce SoC driver to map SRAMs
    arm-cci: Add aliases for PMU events
    arm-cci: Add CCI-500 PMU support
    arm-cci: Sanitise CCI400 PMU driver specific code
    arm-cci: Abstract handling for CCI events
    arm-cci: Abstract out the PMU counter details
    arm-cci: Cleanup PMU driver code
    arm-cci: Do not enable CCI-400 PMU by default
    firmware: qcom: scm: Add HDCP Support
    ARM: berlin: add an ADC node for the BG2Q
    ARM: berlin: remove useless chip and system ctrl compatibles
    clk: berlin: drop direct of_iomap of nodes reg property
    ARM: berlin: move BG2Q clock node
    ARM: berlin: move BG2CD clock node
    ARM: berlin: move BG2 clock node
    clk: berlin: prepare simple-mfd conversion
    pinctrl: berlin: drop SoC stub provided regmap
    ARM: berlin: move pinctrl to simple-mfd nodes
    pinctrl: berlin: prepare to use regmap provided by syscon
    reset: berlin: drop arch_initcall initialization
    ...

    Linus Torvalds
     

02 Jun, 2015

1 commit

  • After adding virtio-gpu I get this funky kconfig dependency loop.

    scripts/kconfig/conf --oldconfig Kconfig
    drivers/video/fbdev/Kconfig:5:error: recursive dependency detected!
    drivers/video/fbdev/Kconfig:5: symbol FB is selected by DRM_KMS_FB_HELPER
    drivers/gpu/drm/Kconfig:34: symbol DRM_KMS_FB_HELPER is selected by DRM_VIRTIO_GPU
    drivers/gpu/drm/virtio/Kconfig:1: symbol DRM_VIRTIO_GPU depends on VIRTIO
    drivers/virtio/Kconfig:1: symbol VIRTIO is selected by REMOTEPROC
    drivers/remoteproc/Kconfig:4: symbol REMOTEPROC is selected by OMAP_REMOTEPROC
    drivers/remoteproc/Kconfig:12: symbol OMAP_REMOTEPROC depends on OMAP_IOMMU
    drivers/iommu/Kconfig:141: symbol OMAP_IOMMU is selected by VIDEO_OMAP3
    drivers/media/platform/Kconfig:96: symbol VIDEO_OMAP3 depends on VIDEO_V4L2
    drivers/media/v4l2-core/Kconfig:6: symbol VIDEO_V4L2 depends on I2C
    drivers/i2c/Kconfig:7: symbol I2C is selected by FB_DDC
    drivers/video/fbdev/Kconfig:59: symbol FB_DDC is selected by FB_CYBER2000_DDC
    drivers/video/fbdev/Kconfig:374: symbol FB_CYBER2000_DDC depends on FB_CYBER2000
    drivers/video/fbdev/Kconfig:362: symbol FB_CYBER2000 depends on FB

    Making VIDEO_OMAP3 depend on OMAP_IOMMU instead of selecting it breaks the
    loop, which looks like the best way to handle it to me. Updated OMAP_IOMMU
    help text accordingly.

    Signed-off-by: Gerd Hoffmann
    Acked-by: Mauro Carvalho Chehab

    Gerd Hoffmann
     

29 May, 2015

1 commit

  • Version three of the ARM SMMU architecture introduces significant
    changes and improvements over previous versions of the specification,
    necessitating a new driver in the Linux kernel.

    The main change to the programming interface is that the majority of the
    configuration data has been moved from MMIO registers to in-memory data
    structures, with communication between the CPU and the SMMU being
    mediated via in-memory circular queues.

    This patch adds an initial driver for SMMUv3 to Linux. We currently
    support pinned stage-1 (DMA) and stage-2 (KVM VFIO) mappings using the
    generic IO-pgtable code.

    Cc: Robin Murphy
    Signed-off-by: Will Deacon
    Signed-off-by: Joerg Roedel

    Will Deacon
     

04 May, 2015

1 commit


03 Mar, 2015

1 commit


25 Feb, 2015

1 commit

  • The MSM IOMMU driver unconditionally calls bus_set_iommu(), which is a
    very stupid thing to do on multi-platform kernels. While marking the
    driver BROKEN may seem a little extreme, there is no other way to make
    the driver skip initialization. One of the problems is that it doesn't
    have devicetree binding documentation and the driver doesn't contain a
    struct of_device_id table either, so no way to check that it is indeed
    valid to set up the IOMMU operations for this driver.

    This fixes a problem on Tegra20 where the DRM driver will try to use the
    obviously non-existent MSM IOMMU.

    Marking the driver BROKEN shouldn't do any harm, since there aren't any
    users currently. There is no struct of_device_id table, so the device
    can't be instantiated from device tree, and I couldn't find any code
    that would instantiate a matching platform_device either, so the driver
    is effectively unused.

    Reported-by: Nicolas Chauvet
    Cc: David Brown
    Cc: Daniel Walker
    Cc: Bryan Huntsman
    Cc: Olav Haugan
    Acked-by: Rob Clark
    Signed-off-by: Thierry Reding
    Signed-off-by: Joerg Roedel

    Thierry Reding