linux/drivers
Chris Wright 1672af1164 intel-iommu: ignore page table validation in pass through mode
We are seeing a bug when booting w/ iommu=pt with current upstream
(bisect blames 19943b0e30 "intel-iommu:
Unify hardware and software passthrough support).

The issue is specific to this loop during identity map initialization
of each device:

domain_context_mapping_one(si_domain, ..., CONTEXT_TT_PASS_THROUGH)
...
		/* Skip top levels of page tables for
		* iommu which has less agaw than default.
		*/
		for (agaw = domain->agaw; agaw != iommu->agaw; agaw--) {
			pgd = phys_to_virt(dma_pte_addr(pgd));
			if (!dma_pte_present(pgd)) {      <------ failing here
				spin_unlock_irqrestore(&iommu->lock, flags);
			return -ENOMEM;
		}

This box has 2 iommu's in it.  The catchall iommu has MGAW == 48, and
SAGAW == 4.  The other iommu has MGAW == 39, SAGAW == 2.

The device that's failing the above pgd test is the only device connected
to the non-catchall iommu, which has a smaller address width than the
domain default.  This test is not necessary since the context is in PT
mode and the ASR is ignored.

Thanks to Don Dutile for discovering and debugging this one.

Cc: stable@kernel.org
Signed-off-by: Chris Wright <chrisw@sous-sol.org>
Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
2009-12-08 10:03:25 +00:00
..
accessibility
acpi
amba
ata Merge git://git.kernel.org/pub/scm/linux/kernel/git/brodo/pcmcia-2.6 2009-12-05 09:42:59 -08:00
atm
auxdisplay
base PM: fix irq enable/disable in runtime PM code 2009-11-29 16:51:27 +01:00
block aoe: prevent cache aliases 2009-12-01 16:32:20 -08:00
bluetooth Merge git://git.kernel.org/pub/scm/linux/kernel/git/brodo/pcmcia-2.6 2009-12-05 09:42:59 -08:00
cdrom
char Merge branch 'core-iommu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 2009-12-05 09:49:07 -08:00
clocksource
connector
cpufreq
cpuidle
crypto
dca
dio
dma
edac
eisa
firewire Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ieee1394/linux1394-2.6 2009-11-30 13:58:23 -08:00
firmware
gpio gpio: Langwell GPIO driver bugfixes 2009-12-01 16:32:19 -08:00
gpu Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/anholt/drm-intel 2009-11-30 13:57:19 -08:00
hid
hwmon
i2c Merge branch 'i2c-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jdelvare/staging 2009-11-30 14:50:44 -08:00
ide Merge git://git.kernel.org/pub/scm/linux/kernel/git/brodo/pcmcia-2.6 2009-12-05 09:42:59 -08:00
idle
ieee1394
ieee802154
infiniband
input Input: i8042 - add Dell Vostro 1320, 1520 and 1720 to the reset list 2009-12-02 15:41:33 -08:00
isdn Merge git://git.kernel.org/pub/scm/linux/kernel/git/brodo/pcmcia-2.6 2009-12-05 09:42:59 -08:00
leds
lguest
macintosh
mca
md md: revert incorrect fix for read error handling in raid1. 2009-12-01 17:30:59 +11:00
media drivers/media/dvb/dvb-core/dvb_frontend.c: needs semaphore.h 2009-12-01 16:32:19 -08:00
memstick
message
mfd mfd: Correct WM831X_MAX_ISEL_VALUE 2009-12-01 11:24:19 +01:00
misc
mmc [ARM] pxamci: call mmc_remove_host() before freeing resources 2009-12-02 22:58:19 +08:00
mtd Merge git://git.kernel.org/pub/scm/linux/kernel/git/brodo/pcmcia-2.6 2009-12-05 09:42:59 -08:00
net Merge git://git.kernel.org/pub/scm/linux/kernel/git/brodo/pcmcia-2.6 2009-12-05 09:42:59 -08:00
nubus
of
oprofile
parisc
parport pcmcia: rework the irq_req_t typedef 2009-11-28 18:03:14 +01:00
pci intel-iommu: ignore page table validation in pass through mode 2009-12-08 10:03:25 +00:00
pcmcia Merge git://git.kernel.org/pub/scm/linux/kernel/git/brodo/pcmcia-2.6 2009-12-05 09:42:59 -08:00
platform
pnp
power
pps
ps3
rapidio
regulator regulator: Initialise wm831x structure pointor for ISINK driver 2009-12-02 19:37:16 +00:00
rtc rtc-x1205: reset clock to sane state after power failure 2009-12-01 16:32:20 -08:00
s390
sbus
scsi Merge git://git.kernel.org/pub/scm/linux/kernel/git/brodo/pcmcia-2.6 2009-12-05 09:42:59 -08:00
serial Merge git://git.kernel.org/pub/scm/linux/kernel/git/brodo/pcmcia-2.6 2009-12-05 09:42:59 -08:00
sfi
sh
sn
spi SPI: spi_txx9: Fix bit rate calculation 2009-12-02 23:58:32 +00:00
ssb Merge git://git.kernel.org/pub/scm/linux/kernel/git/brodo/pcmcia-2.6 2009-12-05 09:42:59 -08:00
staging Merge git://git.kernel.org/pub/scm/linux/kernel/git/brodo/pcmcia-2.6 2009-12-05 09:42:59 -08:00
tc
telephony
thermal
uio
usb Merge git://git.kernel.org/pub/scm/linux/kernel/git/brodo/pcmcia-2.6 2009-12-05 09:42:59 -08:00
uwb
video VIDEO: Correct use of request_region/request_mem_region 2009-12-02 23:58:32 +00:00
virtio
vlynq
w1
watchdog [PATCH] rc32434_wdt: fix compilation failure 2009-12-02 12:47:24 +00:00
xen
zorro
Kconfig
Makefile