IOMMU Fixes for Linux v5.9-rc3

Including:

	- Three Intel VT-d fixes to fix address handling on 32bit, fix a
	  NULL pointer dereference bug and serialize a hardware register
	  access as required by the VT-d spec.

	- Two patches for AMD IOMMU to force AMD GPUs into translation mode
	  when memory encryption is active and disallow using IOMMUv2
	  functionality. This makes the AMDGPU driver working when
	  memory encryption is active.

	- Two more fixes for AMD IOMMU to fix updating the Interrupt
	  Remapping Table Entries.

	- MAINTAINERS file update for the Qualcom IOMMU driver.
iommu/vt-d: Handle 36bit addressing for x86-32

Beware that the address size for x86-32 may exceed unsigned long.

[    0.368971] UBSAN: shift-out-of-bounds in drivers/iommu/intel/iommu.c:128:14
[    0.369055] shift exponent 36 is too large for 32-bit type 'long unsigned int'

If we don't handle the wide addresses, the pages are mismapped and the
device read/writes go astray, detected as DMAR faults and leading to
device failure. The behaviour changed (from working to broken) in commit
fa954e683178 ("iommu/vt-d: Delegate the dma domain to upper layer"), but
the error looks older.

Fixes: fa954e683178 ("iommu/vt-d: Delegate the dma domain to upper layer")
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Acked-by: Lu Baolu <baolu.lu@linux.intel.com>
Cc: James Sewart <jamessewart@arista.com>
Cc: Lu Baolu <baolu.lu@linux.intel.com>
Cc: Joerg Roedel <jroedel@suse.de>
Cc: <stable@vger.kernel.org> # v5.3+
Link: https://lore.kernel.org/r/20200822160209.28512-1-chris@chris-wilson.co.uk
Signed-off-by: Joerg Roedel <jroedel@suse.de>
1 file changed