IOMMU Fixes for Linux v5.3-rc7

Including:

	* Revert for an Intel VT-d patch that caused problems for some
	  users.

	* Removal of a feature in the Intel VT-d driver that was never
	  supported in hardware. This qualifies as a fix because the
	  code for this feature sets reserved bits in the invalidation
	  queue descriptor, causing failed invalidations on real
	  hardware.

	* Two fixes for AMD IOMMU driver to fix a race condition and to
	  add a missing IOTLB flush when kernel is booted in kdump mode.
iommu/amd: Fix race in increase_address_space()

After the conversion to lock-less dma-api call the
increase_address_space() function can be called without any
locking. Multiple CPUs could potentially race for increasing
the address space, leading to invalid domain->mode settings
and invalid page-tables. This has been happening in the wild
under high IO load and memory pressure.

Fix the race by locking this operation. The function is
called infrequently so that this does not introduce
a performance regression in the dma-api path again.

Reported-by: Qian Cai <cai@lca.pw>
Fixes: 256e4621c21a ('iommu/amd: Make use of the generic IOVA allocator')
Signed-off-by: Joerg Roedel <jroedel@suse.de>
1 file changed