]> git.proxmox.com Git - mirror_qemu.git/commit - hw/i386/intel_iommu.c
intel_iommu: relax iq tail check on VTD_GCMD_QIE enable
authorLadi Prosek <lprosek@redhat.com>
Mon, 19 Jun 2017 07:31:16 +0000 (09:31 +0200)
committerMichael S. Tsirkin <mst@redhat.com>
Mon, 3 Jul 2017 19:29:48 +0000 (22:29 +0300)
commit8991c460be5a0811194fd4d2b49ba7146a23526b
tree4981ef1ad33d0e16d9dc42c1966086f94e3e3c58
parentba94971354376876b7a4c243831bd4032045eacc
intel_iommu: relax iq tail check on VTD_GCMD_QIE enable

The VT-d spec (section 6.5.2) prescribes software to zero the
Invalidation Queue Tail Register before enabling the VTD_GCMD_QIE
Global Command Register bit. Windows Server 2012 R2 and possibly
other older Windows versions violate the protocol and set a
non-zero queue tail first, which in effect makes them crash early
on boot with -device intel-iommu,intremap=on.

This commit relaxes the check and instead of failing to enable
VTD_GCMD_QIE with vtd_err_qi_enable, it behaves as if the tail
register was set just after enabling VTD_GCMD_QIE
(see vtd_handle_iqt_write).

Signed-off-by: Ladi Prosek <lprosek@redhat.com>
Reviewed-by: Peter Xu <peterx@redhat.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
hw/i386/intel_iommu.c
hw/i386/trace-events