IOMMU Fixes for Linux v4.10-rc2

Three fixes queued up:

	* Fix an issue with command buffer overflow handling in the AMD
	  IOMMU driver

	* Add an additional context entry flush to the Intel VT-d driver
	  to make sure any old context entry from kdump copying is
	  flushed out of the cache

	* Correct the encoding of the PASID table size in the Intel VT-d
	  driver
iommu/amd: Fix the left value check of cmd buffer

The generic command buffer entry is 128 bits (16 bytes), so the offset
of tail and head pointer should be 16 bytes aligned and increased with
0x10 per command.

When cmd buf is full, head = (tail + 0x10) % CMD_BUFFER_SIZE.

So when left space of cmd buf should be able to store only two
command, we should be issued one COMPLETE_WAIT additionally to wait
all older commands completed. Then the left space should be increased
after IOMMU fetching from cmd buf.

So left check value should be left <= 0x20 (two commands).

Signed-off-by: Huang Rui <ray.huang@amd.com>
Fixes: ac0ea6e92b222 ('x86/amd-iommu: Improve handling of full command buffer')
Signed-off-by: Joerg Roedel <jroedel@suse.de>
1 file changed