linux-stable/drivers/iommu
Jiang Liu 13d09b6603 iommu/vt-d: Allow IR works in XAPIC mode though CPU works in X2APIC mode
Currently if CPU supports X2APIC, IR hardware must work in X2APIC mode
or disabled. Change the code to support IR working in XAPIC mode when
CPU supports X2APIC. Then the CPU APIC driver will decide how to handle
such as configuration by:
1) Disabling X2APIC mode
2) Forcing X2APIC physical mode

This change also fixes a live locking when
1) BIOS enables CPU X2APIC
2) DMAR table disables X2APIC mode or IR hardware doesn't support X2APIC
with following messages:
[   37.863463] dmar: INTR-REMAP: Request device [[f0:1f.7] fault index 2
[   37.863463] INTR-REMAP:[fault reason 36] Detected reserved fields in the IRTE entry
[   37.879372] dmar: INTR-REMAP: Request device [[f0:1f.7] fault index 2
[   37.879372] INTR-REMAP:[fault reason 36] Detected reserved fields in the IRTE entry
[   37.895282] dmar: INTR-REMAP: Request device [[f0:1f.7] fault index 2
[   37.895282] INTR-REMAP:[fault reason 36] Detected reserved fields in the IRTE entry
[   37.911192] dmar: INTR-REMAP: Request device [[f0:1f.7] fault index 2

Signed-off-by: Jiang Liu <jiang.liu@linux.intel.com>
Tested-by: Joerg Roedel <joro@8bytes.org>
Cc: Tony Luck <tony.luck@intel.com>
Cc: iommu@lists.linux-foundation.org
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: Yinghai Lu <yinghai@kernel.org>
Cc: Borislav Petkov <bp@alien8.de>
Link: http://lkml.kernel.org/r/1420615903-28253-11-git-send-email-jiang.liu@linux.intel.com
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
2015-01-15 11:24:23 +01:00
..
amd_iommu.c Merge branch 'x86-apic-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2014-12-19 14:02:02 -08:00
amd_iommu_init.c iommu/amd: Fix devid mapping for ivrs_ioapic override 2014-09-25 19:24:52 +02:00
amd_iommu_proto.h perf/x86/amd: Add IOMMU Performance Counter resource management 2013-06-19 13:04:52 +02:00
amd_iommu_types.h iommu/amd: Move struct iommu_dev_data to amd_iommu.c 2014-08-26 11:37:37 +02:00
amd_iommu_v2.c Merge branch 'drm-next' of git://people.freedesktop.org/~airlied/linux 2014-12-15 15:52:01 -08:00
arm-smmu.c Driver core patches for 3.19-rc1 2014-12-14 16:10:09 -08:00
dmar.c iommu/vt-d: Search for ACPI _DSM method for DMAR hotplug 2014-11-18 11:18:36 +01:00
exynos-iommu.c Driver core patches for 3.19-rc1 2014-12-14 16:10:09 -08:00
fsl_pamu.c iommu: drop owner assignment from platform_drivers 2014-10-20 16:20:42 +02:00
fsl_pamu.h iommu/fsl: Freescale PAMU driver and iommu implementation. 2013-08-14 11:38:34 +02:00
fsl_pamu_domain.c iommu/fsl: Convert to iommu_capable() API function 2014-09-25 15:47:37 +02:00
fsl_pamu_domain.h iommu/fsl: Freescale PAMU driver and iommu implementation. 2013-08-14 11:38:34 +02:00
intel-iommu.c iommu/vt-d: Remove dead code in device_notifier 2015-01-05 12:23:38 +01:00
intel_irq_remapping.c iommu/vt-d: Allow IR works in XAPIC mode though CPU works in X2APIC mode 2015-01-15 11:24:23 +01:00
iommu-sysfs.c iommu: Fix compile error in iommu-sysfs.c 2014-07-07 12:01:21 +02:00
iommu-traces.c iommu: Add iommu_error class event to iommu trace 2013-09-25 11:07:04 +02:00
iommu.c ARM: SoC/iommu configuration for 3.19 2014-12-16 14:53:01 -08:00
iova.c iommu/vt-d: Update IOMMU state when memory hotplug happens 2014-03-04 17:51:06 +01:00
ipmmu-vmsa.c iommu/ipmmu-vmsa: Change IOMMU_EXEC to IOMMU_NOEXEC 2015-01-05 12:23:37 +01:00
irq_remapping.c iommu, x86: Restructure setup of the irq remapping feature 2015-01-15 11:24:22 +01:00
irq_remapping.h iommu/irq_remapping: Fix the regression of hpet irq remapping 2014-09-25 19:11:47 +02:00
Kconfig ARM: SoC/iommu configuration for 3.19 2014-12-16 14:53:01 -08:00
Makefile Merge branches 'arm/omap', 'arm/msm', 'arm/rockchip', 'arm/renesas', 'arm/smmu', 'x86/vt-d', 'x86/amd' and 'core' into next 2014-12-02 13:07:13 +01:00
msm_iommu.c Merge branches 'arm/omap', 'arm/msm', 'arm/rockchip', 'arm/renesas', 'arm/smmu', 'x86/vt-d', 'x86/amd' and 'core' into next 2014-12-02 13:07:13 +01:00
msm_iommu.h iommu/msm: Move mach includes to iommu directory 2013-08-06 11:18:03 -07:00
msm_iommu_dev.c iommu/msm: Use dev_get_platdata() 2014-11-04 15:03:39 +01:00
msm_iommu_hw-8xxx.h iommu/msm: Move mach includes to iommu directory 2013-08-06 11:18:03 -07:00
of_iommu.c iommu: store DT-probed IOMMU data privately 2014-12-05 14:35:52 +00:00
omap-iommu-debug.c iommu/omap: Switch pagetable debugfs entry to use seq_file 2014-10-23 14:33:48 +02:00
omap-iommu.c Merge branches 'arm/omap', 'arm/msm', 'arm/rockchip', 'arm/renesas', 'arm/smmu', 'x86/vt-d', 'x86/amd' and 'core' into next 2014-12-02 13:07:13 +01:00
omap-iommu.h iommu/omap: Do not export unneeded functions 2014-10-23 14:33:47 +02:00
omap-iopgtable.h iommu/omap: Move to_iommu definition from omap-iopgtable.h 2014-04-16 16:30:15 +02:00
rockchip-iommu.c iommu/rockchip: Drop owner assignment from platform_drivers 2015-01-05 12:40:06 +01:00
shmobile-iommu.c iommu: Add iommu_map_sg() function 2014-11-04 14:53:36 +01:00
shmobile-ipmmu.c iommu: drop owner assignment from platform_drivers 2014-10-20 16:20:42 +02:00
shmobile-ipmmu.h iommu/shmobile: Turn the flush_lock mutex into a spinlock 2014-01-07 15:35:25 +01:00
tegra-gart.c iommu: drop owner assignment from platform_drivers 2014-10-20 16:20:42 +02:00
tegra-smmu.c memory: Add NVIDIA Tegra memory controller support 2014-12-04 16:11:47 +01:00