When x-flts=on, we set up bindings to nested HWPT in host, after
migration, VFIO device binds to nesting parent HWPT by default.
We need to re-establish the bindings to nested HWPT, or else device
DMA will break.
Signed-off-by: Zhenzhong Duan <zhenzhong.duan@intel.com>
---
hw/i386/intel_iommu.c | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/hw/i386/intel_iommu.c b/hw/i386/intel_iommu.c
index edd1416382..8fec61be3e 100644
--- a/hw/i386/intel_iommu.c
+++ b/hw/i386/intel_iommu.c
@@ -4360,6 +4360,13 @@ static int vtd_post_load(void *opaque, int version_id)
*/
vtd_switch_address_space_all(iommu);
+ /*
+ * Bindings to nested HWPT in host is set up dynamically depending
+ * on pasid entry configuration from guest. After migration, we
+ * need to re-establish the bindings before restore device's DMA.
+ */
+ vtd_replay_pasid_bindings_all(iommu);
+
return 0;
}
--
2.47.1