int intel_gvt_scan_and_shadow_workload(struct intel_vgpu_workload *workload);
 void enter_failsafe_mode(struct intel_vgpu *vgpu, int reason);
+void intel_vgpu_detach_regions(struct intel_vgpu *vgpu);
 
 enum {
        GVT_FAILSAFE_UNSUPPORTED_GUEST,
 
 struct intel_gvt_mpt {
        int (*host_init)(struct device *dev, void *gvt);
        void (*host_exit)(struct device *dev, void *gvt);
-       void (*detach_vgpu)(struct intel_vgpu *vgpu);
        int (*inject_msi)(struct intel_vgpu *vgpu, u32 addr, u16 data);
        int (*enable_page_track)(struct intel_vgpu *vgpu, u64 gfn);
        int (*disable_page_track)(struct intel_vgpu *vgpu, u64 gfn);
 
        return true;
 }
 
-static void kvmgt_detach_vgpu(struct intel_vgpu *vgpu)
+void intel_vgpu_detach_regions(struct intel_vgpu *vgpu)
 {
        int i;
 
 static const struct intel_gvt_mpt kvmgt_mpt = {
        .host_init = kvmgt_host_init,
        .host_exit = kvmgt_host_exit,
-       .detach_vgpu = kvmgt_detach_vgpu,
        .inject_msi = kvmgt_inject_msi,
        .enable_page_track = kvmgt_page_track_add,
        .disable_page_track = kvmgt_page_track_remove,
 
        intel_gvt_host.mpt->host_exit(dev, gvt);
 }
 
-/**
- * intel_gvt_hypervisor_detach_vgpu - call hypervisor to release vGPU
- * related stuffs inside hypervisor.
- *
- * Returns:
- * Zero on success, negative error code if failed.
- */
-static inline void intel_gvt_hypervisor_detach_vgpu(struct intel_vgpu *vgpu)
-{
-       /* optional to provide */
-       if (!intel_gvt_host.mpt->detach_vgpu)
-               return;
-
-       intel_gvt_host.mpt->detach_vgpu(vgpu);
-}
-
 #define MSI_CAP_CONTROL(offset) (offset + 2)
 #define MSI_CAP_ADDRESS(offset) (offset + 4)
 #define MSI_CAP_DATA(offset) (offset + 8)
 
        intel_vgpu_clean_opregion(vgpu);
        intel_vgpu_reset_ggtt(vgpu, true);
        intel_vgpu_clean_gtt(vgpu);
-       intel_gvt_hypervisor_detach_vgpu(vgpu);
+       intel_vgpu_detach_regions(vgpu);
        intel_vgpu_free_resource(vgpu);
        intel_vgpu_clean_mmio(vgpu);
        intel_vgpu_dmabuf_cleanup(vgpu);