android_kernel_google_msm/drivers/pci
Chris Wright 1c9fc3d11b intel-iommu: Dont cache iova above 32bit
Mike Travis and Mike Habeck reported an issue where iova allocation
would return a range that was larger than a device's dma mask.

https://lkml.org/lkml/2011/3/29/423

The dmar initialization code will reserve all PCI MMIO regions and copy
those reservations into a domain specific iova tree.  It is possible for
one of those regions to be above the dma mask of a device.  It is typical
to allocate iovas with a 32bit mask (despite device's dma mask possibly
being larger) and cache the result until it exhausts the lower 32bit
address space.  Freeing the iova range that is >= the last iova in the
lower 32bit range when there is still an iova above the 32bit range will
corrupt the cached iova by pointing it to a region that is above 32bit.
If that region is also larger than the device's dma mask, a subsequent
allocation will return an unusable iova and cause dma failure.

Simply don't cache an iova that is above the 32bit caching boundary.

Reported-by: Mike Travis <travis@sgi.com>
Reported-by: Mike Habeck <habeck@sgi.com>
Cc: stable@kernel.org
Acked-by: Mike Travis <travis@sgi.com>
Tested-by: Mike Habeck <habeck@sgi.com>
Signed-off-by: Chris Wright <chrisw@sous-sol.org>
Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
2011-06-01 12:47:40 +01:00
..
hotplug Fix common misspellings 2011-03-31 11:26:23 -03:00
pcie Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci-2.6 2011-03-25 21:01:43 -07:00
.gitignore
access.c
bus.c
dmar.c intel-iommu: Remove obsolete comment from detect_intel_iommu 2011-05-24 13:08:31 +01:00
hotplug-pci.c
hotplug.c
htirq.c drivers: Final irq namespace conversion 2011-03-29 14:48:19 +02:00
intel-iommu.c intel-iommu: Speed up processing of the identity_mapping function 2011-06-01 12:47:36 +01:00
intr_remapping.c Fix common misspellings 2011-03-31 11:26:23 -03:00
intr_remapping.h
ioapic.c
iov.c
iova.c intel-iommu: Dont cache iova above 32bit 2011-06-01 12:47:40 +01:00
irq.c
Kconfig PCI: pci-label: Fix build failure when CONFIG_NLS is set to 'm' by allmodconfig 2011-04-12 08:39:02 -07:00
Makefile PCI: pci-label: Fix build failure when CONFIG_NLS is set to 'm' by allmodconfig 2011-04-12 08:39:02 -07:00
msi.c drivers: Final irq namespace conversion 2011-03-29 14:48:19 +02:00
msi.h
pci-acpi.c ACPI: Remove the wakeup.run_wake_count device field 2011-02-24 19:58:53 +01:00
pci-driver.c PM / Hibernate: Introduce CONFIG_HIBERNATE_CALLBACKS 2011-04-11 22:54:42 +02:00
pci-label.c PCI: label: remove #include of ACPI header to avoid warnings 2011-03-16 10:24:34 -07:00
pci-stub.c
pci-sysfs.c Fix common misspellings 2011-03-31 11:26:23 -03:00
pci.c PCI: PCIe links may not get configured for ASPM under POWERSAVE mode 2011-03-21 09:40:43 -07:00
pci.h PCI: Export ACPI _DSM provided firmware instance number and string name to sysfs 2011-03-04 10:41:56 -08:00
probe.c PCI: Avoid potential NULL pointer dereference in pci_scan_bridge 2011-02-08 13:08:05 -08:00
proc.c
quirks.c Fix common misspellings 2011-03-31 11:26:23 -03:00
remove.c
rom.c
search.c
setup-bus.c PCI: Clear bridge resource flags if requested size is 0 2011-05-16 18:33:35 -07:00
setup-irq.c
setup-res.c
slot.c
syscall.c
vpd.c
xen-pcifront.c pci/xen: Cleanup: convert int** to int[] 2011-02-18 12:41:49 -05:00