linux/drivers/iommu
Suravee Suthikulpanit 3f398bc776 iommu/AMD: Per-thread IOMMU Interrupt Handling
In the current interrupt handling scheme, there are as many threads as
the number of IOMMUs. Each thread is created and assigned to an IOMMU at
the time of registering interrupt handlers (request_threaded_irq).
When an IOMMU HW generates an interrupt, the irq handler (top half) wakes up
the corresponding thread to process event and PPR logs of all IOMMUs
starting from the 1st IOMMU.

In the system with multiple IOMMU,this handling scheme complicates the
synchronization of the IOMMU data structures and status registers as
there could be multiple threads competing for the same IOMMU while
the other IOMMU could be left unhandled.

To simplify, this patch is proposing a different interrupt handling scheme
by having each thread only managing interrupts of the corresponding IOMMU.
This can be achieved by passing the struct amd_iommu when registering the
interrupt handlers. This structure is unique for each IOMMU and can be used
by the bottom half thread to identify the IOMMU to be handled instead
of calling for_each_iommu.  Besides this also eliminate the needs to lock
the IOMMU for processing event and PPR logs.

Signed-off-by: Suravee Suthikulpanit <suravee.suthikulpanit@amd.com>
Signed-off-by: Joerg Roedel <joro@8bytes.org>
2013-04-23 14:34:26 +02:00
..
amd_iommu_init.c iommu/AMD: Per-thread IOMMU Interrupt Handling 2013-04-23 14:34:26 +02:00
amd_iommu_proto.h iommu/amd: Add initialization routines for AMD interrupt remapping 2012-09-28 17:43:52 +02:00
amd_iommu_types.h iommu/amd: Extend IVRS special device data structure 2013-04-19 20:48:43 +02:00
amd_iommu_v2.c IOMMU Updates for Linux v3.6-rc1 2012-07-24 16:24:11 -07:00
amd_iommu.c iommu/AMD: Per-thread IOMMU Interrupt Handling 2013-04-23 14:34:26 +02:00
dmar.c iommu, x86: Add DMA remap fault reason 2013-03-06 09:41:51 +01:00
exynos-iommu.c iommu/exynos: Make exynos_sysmmu_disable static 2013-02-07 21:53:29 +01:00
intel_irq_remapping.c x86/intel/irq_remapping: Clean up x2apic opt-out security warning mess 2013-02-03 12:13:48 +01:00
intel-iommu.c Merge branch 'drm-next' of git://people.freedesktop.org/~airlied/linux 2013-02-25 16:46:44 -08:00
iommu.c iommu: Add DOMAIN_ATTR_WINDOWS domain attribute 2013-02-06 10:47:28 +01:00
iova.c iommu: Fix typo in iommu 2012-07-24 12:58:49 +02:00
irq_remapping.c x86, io_apic: remove duplicated include from irq_remapping.c 2013-03-26 15:32:06 +01:00
irq_remapping.h x86, irq: Move irq_remapping_enabled declaration to iommu code 2013-01-28 12:17:26 +01:00
Kconfig iommu: OMAP: build only on OMAP2+ 2013-03-09 18:54:34 +01:00
Makefile iommu/shmobile: Add iommu driver for Renesas IPMMU modules 2013-02-06 10:57:25 +01:00
msm_iommu_dev.c
msm_iommu.c iommu/msm: Implement DOMAIN_ATTR_GEOMETRY attribute 2012-07-11 12:20:05 +02:00
of_iommu.c iommu: Add DMA window parser, of_get_dma_window() 2012-06-25 13:50:28 +02:00
omap-iommu2.c iommu/omap: Adapt to runtime pm 2012-12-03 18:48:23 +01:00
omap-iommu-debug.c ARM: OMAP2+: Move iommu/iovmm headers to platform_data 2012-11-20 10:05:01 -08:00
omap-iommu.c iommu/omap: Remove unnecessary null pointer check 2013-01-28 15:21:27 +01:00
omap-iommu.h iommu/omap: Adapt to runtime pm 2012-12-03 18:48:23 +01:00
omap-iopgtable.h ARM: OMAP2+: Move iommu2 to drivers/iommu/omap-iommu2.c 2012-11-20 10:04:41 -08:00
omap-iovmm.c ARM: OMAP2+: Move iommu/iovmm headers to platform_data 2012-11-20 10:05:01 -08:00
shmobile-iommu.c iommu/shmobile: Add iommu driver for Renesas IPMMU modules 2013-02-06 10:57:25 +01:00
shmobile-ipmmu.c iommu/shmobile: Add iommu driver for Renesas IPMMU modules 2013-02-06 10:57:25 +01:00
shmobile-ipmmu.h iommu/shmobile: Add iommu driver for Renesas IPMMU modules 2013-02-06 10:57:25 +01:00
tegra-gart.c iommu/tegra: assume CONFIG_OF in gart driver 2013-02-19 15:44:41 +01:00
tegra-smmu.c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs 2013-02-26 20:16:07 -08:00