android_kernel_xiaomi_sm8350/drivers/pci
Tom Lyon a99c47a228 intel-iommu: errors with smaller iommu widths
When using iommu_domain_alloc with the Intel iommu, the domain address
width is always initialized to 48 bits (agaw 2).  This domain->agaw value
is then used by pfn_to_dma_pte to (always) build a 4 level page table.
However, not all systems support iommu width of 48 or 4 level page tables.
In particular, the Core i5-660 and i5-670 support an address width of 36
bits (not 39!), an agaw of only 1, and only 3 level page tables.

This version of the patch simply lops off extra levels of the page tables
if the agaw value of the iommu is less than what is currently allocated
for the domain (in intel_iommu_attach_device).  If there were already
allocated addresses above what the new iommu can handle, EFAULT is
returned.

Signed-off-by: Tom Lyon <pugs@cisco.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
2010-05-17 08:34:18 +01:00
..
hotplug PCI: print resources consistently with %pR 2010-03-24 13:21:36 -07:00
pcie PM: Allow PCI devices to suspend/resume asynchronously 2010-02-26 20:39:12 +01:00
.gitignore
access.c PCI: Add pci_bus_set_ops 2009-06-16 14:29:33 -07:00
bus.c Driver core: create lock/unlock functions for struct device 2010-03-07 17:04:52 -08:00
dmar.c intel-iommu: Fix boot inside 64bit virtualbox with io-apic disabled 2010-04-14 15:38:59 +01:00
hotplug-pci.c
hotplug.c
htirq.c Merge branch 'x86/apic' into irq/numa 2009-05-12 12:17:36 +02:00
intel-iommu.c intel-iommu: errors with smaller iommu widths 2010-05-17 08:34:18 +01:00
intr_remapping.c intel-iommu: Print out iommu seq_id 2010-04-09 16:33:13 +01:00
intr_remapping.h intr-remap: generic support for remapping HPET MSIs 2009-08-27 23:33:20 +02:00
ioapic.c PCI: print resources consistently with %pR 2010-03-24 13:21:36 -07:00
iov.c pci: Add SR-IOV convenience functions and macros 2010-02-12 16:56:07 -08:00
iova.c intel-iommu: Remove superfluous iova_alloc_lock from IOVA code 2009-07-15 08:17:02 +01:00
irq.c
Kconfig PCI: push deprecated pci_find_device() function to last user 2010-02-22 16:17:01 -08:00
Makefile microblaze: Enable PCI, missing files 2010-03-11 14:04:27 +01:00
msi.c PCI MSI: Style cleanups 2009-09-09 13:29:35 -07:00
msi.h PCI MSI: shorten PCI_MSIX_ENTRY_* symbol names 2009-06-29 12:15:19 -07:00
pci-acpi.c Merge branch 'acpica' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6 2010-03-01 10:36:22 -08:00
pci-driver.c PCI PM: Run-time callbacks for PCI bus type 2010-02-22 16:21:19 -08:00
pci-stub.c PCI: pci-stub: add pci_stub.ids parameter 2009-09-09 13:44:34 -07:00
pci-sysfs.c sysfs: Initialised pci bus legacy_mem field before use 2010-03-19 07:12:11 -07:00
pci.c PCI: cleanup error return for pcix get and set mmrbc functions 2010-03-19 12:41:48 -07:00
pci.h PCI PM: Run-time callbacks for PCI bus type 2010-02-22 16:21:19 -08:00
probe.c PCI: complain about devices that seem to be broken 2010-03-24 13:21:36 -07:00
proc.c
quirks.c PCI: don't say we claimed a resource if we failed 2010-03-25 08:51:35 -07: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: change PCI nomenclature in drivers/pci/ (comment changes) 2009-12-16 13:37:53 -08:00
setup-bus.c pci: don't reassign to ROM res if it is not going to be enabled 2010-03-01 07:41:55 -08:00
setup-irq.c
setup-res.c PCI: for address space collisions, show conflicting resource 2010-03-24 13:21:34 -07:00
slot.c Driver core: Constify struct sysfs_ops in struct kobj_type 2010-03-07 17:04:49 -08: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