IOMMU Fixes for Linux 4.12-rc7
Two fixes: * A fix for AMD IOMMU interrupt remapping code when IRQs are forwarded directly to KVM guests * Fixed check in the recently merged code to allow tboot with Intel VT-d disabled -----BEGIN PGP SIGNATURE----- Version: GnuPG v2 iQIcBAABAgAGBQJZVoIAAAoJECvwRC2XARrjpYoP/0JGpnrtGsw2GnXbe4jCXwWg hWpJze0QyHi7oJrNHRK1W72rwQxp53NUXS942bosXj18U+KU3x3UnLQfU5u1RfEi Z44riGpurZ2+Ied+X01eS5ALeno9/jj7DOnSDsrZS2vI56aJTGISNO/8xvE5M5Mj xwvOQW+K1Wgqac2Sdi+ckt8tUhik1MKbkL8k04/27Yzq6FxvkEyiHXDQcXA+eGId ewW034Z2ueriZ6fzuanQW3j57albeIN6XsTaOHbwD2edQwiyZ6yoMakKgMuHnpgx F4BtPtcbgSHSQ48ZZb9bdQpvEO3lY0jmSlMI4S2Fu5DmSIKC/KOy/4yYUhlQtrHT UUbIvq/pC+SMPxZiZAJhyIFcV6YkTelArPFx+QxsWvMMiXeGnezgeFsAOzwZuptF FFm9ItgfPkGxkiECFwJwSAHsTiiFocRfYHHv/ace/6X4ZB+nZrl3mSfX7+EtT2LG Kje2XtUzoGR/8LSBTMlQQeurhBZwbnoaFEtiVMrLODhvFT3IU7B00wgQHWNpjyRj Rqe/ScHRdRF1NQtW6QDTpNU4rZGB4lt1WxpMlONVVpO4LI/fXZq8Nq4lT+FzUHV1 xNQEh9xV2DK7bjT3HDd/OKSusaLzImNFYmi6+t/gROX8z/PqISb5IOmjaiO9pYYM coSJHmYL1hc0yFsNp6eB =bw0V -----END PGP SIGNATURE----- Merge tag 'iommu-fixes-v4.12-rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/joro/iommu Pull IOMMU fixes from Joerg Roedel: "Two fixes: - A fix for AMD IOMMU interrupt remapping code when IRQs are forwarded directly to KVM guests - Fixed check in the recently merged code to allow tboot with Intel VT-d disabled" * tag 'iommu-fixes-v4.12-rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/joro/iommu: iommu/amd: Fix interrupt remapping when disable guest_mode iommu/vt-d: Correctly disable Intel IOMMU force on
This commit is contained in:
commit
27ab862a3a
|
@ -514,7 +514,7 @@ int tboot_force_iommu(void)
|
|||
if (!tboot_enabled())
|
||||
return 0;
|
||||
|
||||
if (!intel_iommu_tboot_noforce)
|
||||
if (intel_iommu_tboot_noforce)
|
||||
return 1;
|
||||
|
||||
if (no_iommu || swiotlb || dmar_disabled)
|
||||
|
|
|
@ -3879,11 +3879,9 @@ static void irte_ga_prepare(void *entry,
|
|||
u8 vector, u32 dest_apicid, int devid)
|
||||
{
|
||||
struct irte_ga *irte = (struct irte_ga *) entry;
|
||||
struct iommu_dev_data *dev_data = search_dev_data(devid);
|
||||
|
||||
irte->lo.val = 0;
|
||||
irte->hi.val = 0;
|
||||
irte->lo.fields_remap.guest_mode = dev_data ? dev_data->use_vapic : 0;
|
||||
irte->lo.fields_remap.int_type = delivery_mode;
|
||||
irte->lo.fields_remap.dm = dest_mode;
|
||||
irte->hi.fields.vector = vector;
|
||||
|
@ -3939,10 +3937,10 @@ static void irte_ga_set_affinity(void *entry, u16 devid, u16 index,
|
|||
struct irte_ga *irte = (struct irte_ga *) entry;
|
||||
struct iommu_dev_data *dev_data = search_dev_data(devid);
|
||||
|
||||
if (!dev_data || !dev_data->use_vapic) {
|
||||
if (!dev_data || !dev_data->use_vapic ||
|
||||
!irte->lo.fields_remap.guest_mode) {
|
||||
irte->hi.fields.vector = vector;
|
||||
irte->lo.fields_remap.destination = dest_apicid;
|
||||
irte->lo.fields_remap.guest_mode = 0;
|
||||
modify_irte_ga(devid, index, irte, NULL);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue