linux/drivers/pci
Joseph Cihula 51a63e67da intel_iommu: disable all VT-d PMRs when TXT launched
Intel VT-d Protected Memory Regions (PMRs) are supposed to be disabled,
on each VT-d engine, after DMA remapping is enabled on the engines.
This is because the behavior of having both enabled is not deterministic
and because, if TXT has been used to launch the kernel, the PMRs may be
programmed to cover memory regions that will be used for DMA.

Under some circumstances (certain quirks detected, lack of multiple
devices, etc.), the current code does not set up DMA remapping on some
VT-d engines.  In such cases it also skips disabling the PMRs.  This
causes failures when the kernel is launched with TXT (most often this
occurs on the graphics engine and results in colored vertical bars on
the display).

This patch detects when the kernel has been launched with TXT and then
disables the PMRs on all VT-d engines.  In some cases where the reason
that remapping is not being enabled is due to possible ACPI DMAR table
errors, the VT-d engine addresses may not be correct and thus not able
to be safely programmed even to disable PMRs.  Because part of the TXT
launch process is the verification of these addresses, it will always be
safe to disable PMRs if the TXT launch has succeeded and hence only
doing this in such cases.

Signed-off-by: Joseph Cihula <joseph.cihula@intel.com>
Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
2011-04-21 13:51:40 +01:00
..
hotplug headers: kobject.h redux 2011-01-10 08:51:44 -08:00
pcie PCI/PM: Report wakeup events before resuming devices 2011-01-14 08:55:43 -08:00
.gitignore
access.c PCI: output FW warning in pci_read/write_vpd 2010-05-18 15:00:25 -07:00
bus.c Revert "PCI: allocate bus resources from the top down" 2010-12-17 10:00:54 -08:00
dmar.c x86, vt-d: Handle previous faults after enabling fault handling 2010-12-13 16:53:57 -08:00
hotplug-pci.c
hotplug.c
htirq.c ht: Convert to new irq_chip functions 2010-10-12 16:53:37 +02:00
intel-iommu.c intel_iommu: disable all VT-d PMRs when TXT launched 2011-04-21 13:51:40 +01:00
intr_remapping.c x86: Speed up the irq_remapped check in hot pathes 2010-10-12 16:53:42 +02:00
intr_remapping.h intr-remap: generic support for remapping HPET MSIs 2009-08-27 23:33:20 +02:00
ioapic.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
iov.c PCI: fix pci_resource_alignment prototype 2010-09-09 13:41:25 -07:00
iova.c intel-iommu: Remove superfluous iova_alloc_lock from IOVA code 2009-07-15 08:17:02 +01:00
irq.c
Kconfig xen/pci: Make xen-pcifront be dependent on XEN_XENBUS_FRONTEND 2011-01-05 16:31:12 -05:00
Makefile pci root complex: support for tile architecture 2010-11-24 13:13:49 -05:00
msi.c PCI: Add mask bit definition for MSI-X table 2010-12-23 12:53:08 -08:00
msi.h PCI: MSI: Move MSI-X entry definition to pci_regs.h 2010-12-23 12:53:07 -08:00
pci-acpi.c PCI/PM: Report wakeup events before resuming devices 2011-01-14 08:55:43 -08:00
pci-driver.c PCI: fix __pci_device_probe kernel-doc warning 2010-12-23 12:53:09 -08:00
pci-label.c PCI: update for owner removal from struct device_attribute 2010-08-04 14:23:55 -07:00
pci-stub.c PCI: pci-stub: ignore zero-length id parameters 2010-12-23 12:53:52 -08:00
pci-sysfs.c PCI: sysfs: Update ROM to include default owner write access 2011-01-14 08:55:42 -08:00
pci.c PCI/PM: Report wakeup events before resuming devices 2011-01-14 08:55:43 -08:00
pci.h PCI/PM: Use pm_wakeup_event() directly for reporting wakeup events 2011-01-14 08:55:43 -08:00
probe.c PCI: log vendor/device ID always 2010-10-17 20:03:05 -07:00
proc.c BKL: remove extraneous #include <smp_lock.h> 2010-11-17 08:59:32 -08:00
quirks.c Merge branches 'x86-fixes-for-linus' and 'perf-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 2010-12-19 10:44:54 -08:00
remove.c PCI: eliminate redundant pci_stop_dev() call from pci_destroy_dev() 2009-06-11 12:04:19 -07:00
rom.c
search.c PCI: use for_each_pci_dev() 2010-07-30 09:47:22 -07:00
setup-bus.c PCI hotplug: make sure child bridges are enabled at hotplug time 2010-07-30 09:29:16 -07:00
setup-irq.c PCI: use for_each_pci_dev() 2010-07-30 09:47:22 -07:00
setup-res.c PCI: fix message typo 2010-10-17 20:03:05 -07:00
slot.c PCI: bus speed strings should be const 2010-08-31 15:28:00 -07:00
syscall.c headers: smp_lock.h redux 2009-07-12 12:22:34 -07:00
vpd.c pci: Add helper to search for VPD keywords 2010-02-28 00:43:33 -08:00
xen-pcifront.c xen-pcifront: fix PCI reference leak 2010-11-08 11:41:15 -05:00