Merge tag 'drm-intel-next-2018-09-06-2' of git://anongit.freedesktop.org/drm/drm...
[sfrench/cifs-2.6.git] / drivers / gpu / drm / i915 / gvt / gvt.c
index 712f9d14e7200678228065bd16d5d0bdec7a009b..6ef5a7fc70df967b2de542da23501dd5d0f1369b 100644 (file)
@@ -176,6 +176,7 @@ static const struct intel_gvt_ops intel_gvt_ops = {
        .emulate_mmio_write = intel_vgpu_emulate_mmio_write,
        .vgpu_create = intel_gvt_create_vgpu,
        .vgpu_destroy = intel_gvt_destroy_vgpu,
+       .vgpu_release = intel_gvt_release_vgpu,
        .vgpu_reset = intel_gvt_reset_vgpu,
        .vgpu_activate = intel_gvt_activate_vgpu,
        .vgpu_deactivate = intel_gvt_deactivate_vgpu,
@@ -188,7 +189,6 @@ static const struct intel_gvt_ops intel_gvt_ops = {
 
 /**
  * intel_gvt_init_host - Load MPT modules and detect if we're running in host
- * @gvt: intel gvt device
  *
  * This function is called at the driver loading stage. If failed to find a
  * loadable MPT module or detect currently we're running in a VM, then GVT-g
@@ -302,7 +302,7 @@ static int init_service_thread(struct intel_gvt *gvt)
 
 /**
  * intel_gvt_clean_device - clean a GVT device
- * @gvt: intel gvt device
+ * @dev_priv: i915 private
  *
  * This function is called at the driver unloading stage, to free the
  * resources owned by a GVT device.
@@ -315,6 +315,11 @@ void intel_gvt_clean_device(struct drm_i915_private *dev_priv)
        if (WARN_ON(!gvt))
                return;
 
+       intel_gvt_destroy_idle_vgpu(gvt->idle_vgpu);
+       intel_gvt_hypervisor_host_exit(&dev_priv->drm.pdev->dev, gvt);
+       intel_gvt_cleanup_vgpu_type_groups(gvt);
+       intel_gvt_clean_vgpu_types(gvt);
+
        intel_gvt_debugfs_clean(gvt);
        clean_service_thread(gvt);
        intel_gvt_clean_cmd_parser(gvt);
@@ -322,17 +327,10 @@ void intel_gvt_clean_device(struct drm_i915_private *dev_priv)
        intel_gvt_clean_workload_scheduler(gvt);
        intel_gvt_clean_gtt(gvt);
        intel_gvt_clean_irq(gvt);
-       intel_gvt_clean_mmio_info(gvt);
        intel_gvt_free_firmware(gvt);
-
-       intel_gvt_hypervisor_host_exit(&dev_priv->drm.pdev->dev, gvt);
-       intel_gvt_cleanup_vgpu_type_groups(gvt);
-       intel_gvt_clean_vgpu_types(gvt);
-
+       intel_gvt_clean_mmio_info(gvt);
        idr_destroy(&gvt->vgpu_idr);
 
-       intel_gvt_destroy_idle_vgpu(gvt->idle_vgpu);
-
        kfree(dev_priv->gvt);
        dev_priv->gvt = NULL;
 }