On 2016年12月22日 17:48, Peter Xu wrote:
  /* Handle Translation Enable/Disable */
  static void vtd_handle_gcmd_te(IntelIOMMUState *s, bool en)
  {
+    if (s->dmar_enabled == en) {
+        return;
+    }
+
      VTD_DPRINTF(CSR, "Translation Enable %s", (en ? "on" : "off"));
if (en) {
@@ -1196,6 +1237,8 @@ static void vtd_handle_gcmd_te(IntelIOMMUState *s, bool 
en)
          /* Ok - report back to driver */
          vtd_set_clear_mask_long(s, DMAR_GSTS_REG, VTD_GSTS_TES, 0);
      }
+
+    vtd_switch_address_space_all(s, en);
  }

We may need something like notifier here to tell e.g vhost to stop device IOTLB. (Since it's likely this series were applied after device IOTLB patches)

Reply via email to