]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
Merge remote-tracking branch 'amdgpu/drm-next'
authorStephen Rothwell <sfr@canb.auug.org.au>
Thu, 3 Jun 2021 02:59:12 +0000 (12:59 +1000)
committerStephen Rothwell <sfr@canb.auug.org.au>
Thu, 3 Jun 2021 02:59:12 +0000 (12:59 +1000)
# Conflicts:
# drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
# drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c

30 files changed:
1  2 
drivers/gpu/drm/Kconfig
drivers/gpu/drm/amd/amdgpu/amdgpu.h
drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
drivers/gpu/drm/amd/amdgpu/amdgpu_display.c
drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
drivers/gpu/drm/amd/amdgpu/amdgpu_gart.c
drivers/gpu/drm/amd/amdgpu/amdgpu_gart.h
drivers/gpu/drm/amd/amdgpu/amdgpu_gmc.c
drivers/gpu/drm/amd/amdgpu/amdgpu_gtt_mgr.c
drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c
drivers/gpu/drm/amd/amdgpu/amdgpu_object.c
drivers/gpu/drm/amd/amdgpu/amdgpu_object.h
drivers/gpu/drm/amd/amdgpu/amdgpu_psp.h
drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c
drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.h
drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c
drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
drivers/gpu/drm/amd/amdgpu/gfx_v10_0.c
drivers/gpu/drm/amd/amdgpu/gmc_v10_0.c
drivers/gpu/drm/amd/amdgpu/gmc_v7_0.c
drivers/gpu/drm/amd/amdgpu/psp_v11_0.c
drivers/gpu/drm/amd/amdgpu/psp_v3_1.c
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c
drivers/gpu/drm/amd/pm/swsmu/smu_cmn.c
drivers/gpu/drm/drm_fourcc.c
drivers/gpu/drm/radeon/radeon_cs.c

Simple merge
Simple merge
index d1bb69a7747068e4bde885c05b1bbe74e1e9ade3,6d737b14f81170056e787f5d3a7d5de9f1efa5d1..9384ceda5137f7a80d35cce7dbabce2ff49610f9
@@@ -92,8 -91,11 +92,11 @@@ void amdgpu_driver_unload_kms(struct dr
                pm_runtime_forbid(dev->dev);
        }
  
+       if (amdgpu_acpi_smart_shift_update(dev, AMDGPU_SS_DRV_UNLOAD))
+               DRM_WARN("smart shift update failed\n");
        amdgpu_acpi_fini(adev);
 -      amdgpu_device_fini(adev);
 +      amdgpu_device_fini_hw(adev);
  }
  
  void amdgpu_register_gpu_instance(struct amdgpu_device *adev)
index 663aa7d2e2ea7aa8764aeed3604f361a98803668,86259435803ecf860b8e33c0f1dd35b935c3e4b5..7cb7ffdd190032af6ed279e6255537ae6a7ebd23
@@@ -459,10 -479,11 +461,11 @@@ static int amdgpu_bo_move(struct ttm_bu
  {
        struct amdgpu_device *adev;
        struct amdgpu_bo *abo;
 -      struct ttm_resource *old_mem = &bo->mem;
 +      struct ttm_resource *old_mem = bo->resource;
        int r;
  
-       if (new_mem->mem_type == TTM_PL_TT) {
+       if (new_mem->mem_type == TTM_PL_TT ||
+           new_mem->mem_type == AMDGPU_PL_PREEMPT) {
                r = amdgpu_ttm_backend_bind(bo->bdev, bo->ttm, new_mem);
                if (r)
                        return r;
@@@ -989,8 -1012,9 +995,9 @@@ int amdgpu_ttm_alloc_gart(struct ttm_bu
                        return r;
                }
  
 -              ttm_resource_free(bo, &bo->mem);
 -              bo->mem = tmp;
+               amdgpu_gart_invalidate_tlb(adev);
 +              ttm_resource_free(bo, bo->resource);
 +              ttm_bo_assign_mem(bo, &tmp);
        }
  
        return 0;
@@@ -1348,7 -1373,16 +1356,16 @@@ static bool amdgpu_ttm_bo_eviction_valu
                }
        }
  
 -      switch (bo->mem.mem_type) {
 +      switch (bo->resource->mem_type) {
+       case AMDGPU_PL_PREEMPT:
+               /* Preemptible BOs don't own system resources managed by the
+                * driver (pages, VRAM, GART space). They point to resources
+                * owned by someone else (e.g. pageable memory in user mode
+                * or a DMABuf). They are used in a preemptible context so we
+                * can guarantee no deadlocks and good QoS in case of MMU
+                * notifiers or DMABuf move notifiers from the resource owner.
+                */
+               return false;
        case TTM_PL_TT:
                if (amdgpu_bo_is_amdgpu_bo(bo) &&
                    amdgpu_bo_encrypted(ttm_to_amdgpu_bo(bo)))
@@@ -1767,8 -1809,13 +1791,9 @@@ void amdgpu_ttm_fini(struct amdgpu_devi
        amdgpu_bo_free_kernel(&adev->mman.discovery_memory, NULL, NULL);
        amdgpu_ttm_fw_reserve_vram_fini(adev);
  
 -      if (adev->mman.aper_base_kaddr)
 -              iounmap(adev->mman.aper_base_kaddr);
 -      adev->mman.aper_base_kaddr = NULL;
 -
        amdgpu_vram_mgr_fini(adev);
        amdgpu_gtt_mgr_fini(adev);
+       amdgpu_preempt_mgr_fini(adev);
        ttm_range_man_fini(&adev->mman.bdev, AMDGPU_PL_GDS);
        ttm_range_man_fini(&adev->mman.bdev, AMDGPU_PL_GWS);
        ttm_range_man_fini(&adev->mman.bdev, AMDGPU_PL_OA);
@@@ -1919,7 -2010,12 +1944,12 @@@ int amdgpu_fill_buffer(struct amdgpu_b
                return -EINVAL;
        }
  
 -      if (bo->tbo.mem.mem_type == AMDGPU_PL_PREEMPT) {
++      if (bo->tbo.resource->mem_type == AMDGPU_PL_PREEMPT) {
+               DRM_ERROR("Trying to clear preemptible memory.\n");
+               return -EINVAL;
+       }
 -      if (bo->tbo.mem.mem_type == TTM_PL_TT) {
 +      if (bo->tbo.resource->mem_type == TTM_PL_TT) {
                r = amdgpu_ttm_alloc_gart(&bo->tbo);
                if (r)
                        return r;
index bcfd4a8d02885f8dec3cfdfb6e8d679ff9ef1db7,1923f035713a8a08158aba9f2f1dc41f004791aa..625cecd7a51ada8fcc7abd39c810b97c9a1eb638
@@@ -657,11 -657,10 +658,11 @@@ void amdgpu_vm_move_to_lru_tail(struct 
                if (!bo->parent)
                        continue;
  
 -              ttm_bo_move_to_lru_tail(&bo->tbo, &bo->tbo.mem,
 +              ttm_bo_move_to_lru_tail(&bo->tbo, bo->tbo.resource,
                                        &vm->lru_bulk_move);
-               if (bo->shadow)
-                       ttm_bo_move_to_lru_tail(&bo->shadow->tbo,
-                                               bo->shadow->tbo.resource,
+               if (shadow)
 -                      ttm_bo_move_to_lru_tail(&shadow->tbo, &shadow->tbo.mem,
++                      ttm_bo_move_to_lru_tail(&shadow->tbo,
++                                              shadow->tbo.resource,
                                                &vm->lru_bulk_move);
        }
        spin_unlock(&adev->mman.bdev.lru_lock);
@@@ -1818,11 -1853,12 +1859,12 @@@ int amdgpu_vm_bo_update(struct amdgpu_d
                        struct drm_gem_object *gobj = dma_buf->priv;
                        struct amdgpu_bo *abo = gem_to_amdgpu_bo(gobj);
  
 -                      if (abo->tbo.mem.mem_type == TTM_PL_VRAM)
 +                      if (abo->tbo.resource->mem_type == TTM_PL_VRAM)
                                bo = gem_to_amdgpu_bo(gobj);
                }
 -              mem = &bo->tbo.mem;
 +              mem = bo->tbo.resource;
-               if (mem->mem_type == TTM_PL_TT)
+               if (mem->mem_type == TTM_PL_TT ||
+                   mem->mem_type == AMDGPU_PL_PREEMPT)
                        pages_addr = bo->tbo.ttm->dma_address;
        }
  
Simple merge
Simple merge
Simple merge
Simple merge