r = amdgpu_suspend(adev);
  
 -      /* evict remaining vram memory */
 +      /* evict remaining vram memory
 +       * This second call to evict vram is to evict the gart page table
 +       * using the CPU.
 +       */
        amdgpu_bo_evict_vram(adev);
  
+       amdgpu_atombios_scratch_regs_save(adev);
        pci_save_state(dev->pdev);
        if (suspend) {
                /* Shut down the device */
 
        for (i = 0; i < AMDGPU_NUM_VM; ++i) {
                struct amdgpu_vm_id *id = &adev->vm_manager.ids[i];
  
 -              fence_put(adev->vm_manager.ids[i].first);
 +              dma_fence_put(adev->vm_manager.ids[i].first);
                amdgpu_sync_free(&adev->vm_manager.ids[i].active);
 -              fence_put(id->flushed_updates);
 -              fence_put(id->last_flush);
 +              dma_fence_put(id->flushed_updates);
++              dma_fence_put(id->last_flush);
        }
  }
 
        int ret;
  
        /* Rotate src coordinates to match rotated GTT view */
 -      if (intel_rotation_90_or_270(rotation))
 +      if (drm_rotation_90_or_270(rotation))
                drm_rect_rotate(&plane_state->base.src,
-                               fb->width, fb->height, DRM_ROTATE_270);
+                               fb->width << 16, fb->height << 16,
+                               DRM_ROTATE_270);
  
        /*
         * Handle the AUX surface first since