Merge tag 'drm-misc-next-2023-01-03' of git://anongit.freedesktop.org/drm/drm-misc...
[sfrench/cifs-2.6.git] / drivers / gpu / drm / amd / amdgpu / amdgpu_ttm.c
index 068c2d8495fd871fd2ddc85756076a5423e1a203..28a7d2ea6661722b4a0ed5de15f7617861a14499 100644 (file)
@@ -695,8 +695,19 @@ out_unlock:
        return r;
 }
 
+/* amdgpu_ttm_tt_discard_user_pages - Discard range and pfn array allocations
+ */
+void amdgpu_ttm_tt_discard_user_pages(struct ttm_tt *ttm,
+                                     struct hmm_range *range)
+{
+       struct amdgpu_ttm_tt *gtt = (void *)ttm;
+
+       if (gtt && gtt->userptr && range)
+               amdgpu_hmm_range_get_pages_done(range);
+}
+
 /*
- * amdgpu_ttm_tt_userptr_range_done - stop HMM track the CPU page table change
+ * amdgpu_ttm_tt_get_user_pages_done - stop HMM track the CPU page table change
  * Check if the pages backing this ttm range have been invalidated
  *
  * Returns: true if pages are still valid
@@ -714,10 +725,6 @@ bool amdgpu_ttm_tt_get_user_pages_done(struct ttm_tt *ttm,
 
        WARN_ONCE(!range->hmm_pfns, "No user pages to check\n");
 
-       /*
-        * FIXME: Must always hold notifier_lock for this, and must
-        * not ignore the return code.
-        */
        return !amdgpu_hmm_range_get_pages_done(range);
 }
 #endif
@@ -1545,7 +1552,7 @@ static void amdgpu_ttm_drv_reserve_vram_fini(struct amdgpu_device *adev)
 {
        amdgpu_bo_free_kernel(&adev->mman.drv_vram_usage_reserved_bo,
                                                  NULL,
-                                                 NULL);
+                                                 &adev->mman.drv_vram_usage_va);
 }
 
 /**
@@ -1569,7 +1576,6 @@ static int amdgpu_ttm_fw_reserve_vram_init(struct amdgpu_device *adev)
        return amdgpu_bo_create_kernel_at(adev,
                                          adev->mman.fw_vram_usage_start_offset,
                                          adev->mman.fw_vram_usage_size,
-                                         AMDGPU_GEM_DOMAIN_VRAM,
                                          &adev->mman.fw_vram_usage_reserved_bo,
                                          &adev->mman.fw_vram_usage_va);
 }
@@ -1583,8 +1589,9 @@ static int amdgpu_ttm_fw_reserve_vram_init(struct amdgpu_device *adev)
  */
 static int amdgpu_ttm_drv_reserve_vram_init(struct amdgpu_device *adev)
 {
-       uint64_t vram_size = adev->gmc.visible_vram_size;
+       u64 vram_size = adev->gmc.visible_vram_size;
 
+       adev->mman.drv_vram_usage_va = NULL;
        adev->mman.drv_vram_usage_reserved_bo = NULL;
 
        if (adev->mman.drv_vram_usage_size == 0 ||
@@ -1594,9 +1601,8 @@ static int amdgpu_ttm_drv_reserve_vram_init(struct amdgpu_device *adev)
        return amdgpu_bo_create_kernel_at(adev,
                                          adev->mman.drv_vram_usage_start_offset,
                                          adev->mman.drv_vram_usage_size,
-                                         AMDGPU_GEM_DOMAIN_VRAM,
                                          &adev->mman.drv_vram_usage_reserved_bo,
-                                         NULL);
+                                         &adev->mman.drv_vram_usage_va);
 }
 
 /*
@@ -1675,7 +1681,6 @@ static int amdgpu_ttm_reserve_tmr(struct amdgpu_device *adev)
                ret = amdgpu_bo_create_kernel_at(adev,
                                         ctx->c2p_train_data_offset,
                                         ctx->train_data_size,
-                                        AMDGPU_GEM_DOMAIN_VRAM,
                                         &ctx->c2p_bo,
                                         NULL);
                if (ret) {
@@ -1689,7 +1694,6 @@ static int amdgpu_ttm_reserve_tmr(struct amdgpu_device *adev)
        ret = amdgpu_bo_create_kernel_at(adev,
                                adev->gmc.real_vram_size - adev->mman.discovery_tmr_size,
                                adev->mman.discovery_tmr_size,
-                               AMDGPU_GEM_DOMAIN_VRAM,
                                &adev->mman.discovery_memory,
                                NULL);
        if (ret) {
@@ -1790,21 +1794,18 @@ int amdgpu_ttm_init(struct amdgpu_device *adev)
         * avoid display artifacts while transitioning between pre-OS
         * and driver.  */
        r = amdgpu_bo_create_kernel_at(adev, 0, adev->mman.stolen_vga_size,
-                                      AMDGPU_GEM_DOMAIN_VRAM,
                                       &adev->mman.stolen_vga_memory,
                                       NULL);
        if (r)
                return r;
        r = amdgpu_bo_create_kernel_at(adev, adev->mman.stolen_vga_size,
                                       adev->mman.stolen_extended_size,
-                                      AMDGPU_GEM_DOMAIN_VRAM,
                                       &adev->mman.stolen_extended_memory,
                                       NULL);
        if (r)
                return r;
        r = amdgpu_bo_create_kernel_at(adev, adev->mman.stolen_reserved_offset,
                                       adev->mman.stolen_reserved_size,
-                                      AMDGPU_GEM_DOMAIN_VRAM,
                                       &adev->mman.stolen_reserved_memory,
                                       NULL);
        if (r)