]> git.proxmox.com Git - mirror_ubuntu-kernels.git/commitdiff
drm/amdkfd: simplify APU VRAM handling
authorAlex Deucher <alexander.deucher@amd.com>
Wed, 22 May 2024 19:26:50 +0000 (15:26 -0400)
committerAlex Deucher <alexander.deucher@amd.com>
Wed, 29 May 2024 21:06:15 +0000 (17:06 -0400)
With commit 89773b85599a
("drm/amdkfd: Let VRAM allocations go to GTT domain on small APUs")
big and small APU "VRAM" handling in KFD was unified.  Since AMD_IS_APU
is set for both big and small APUs, we can simplify the checks in
the code.

v2: clean up a few more places (Lang)

Acked-by: Felix Kuehling <felix.kuehling@amd.com>
Reviewed-by: Lang Yu <Lang.Yu@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
drivers/gpu/drm/amd/amdkfd/kfd_migrate.c
drivers/gpu/drm/amd/amdkfd/kfd_svm.c
drivers/gpu/drm/amd/amdkfd/kfd_svm.h

index 8975cf41a91ac90672167d5abab8f13275ced0dc..48ad0c04aa72b7ea760687070e6ff2e80a4674c9 100644 (file)
@@ -196,7 +196,7 @@ int amdgpu_amdkfd_reserve_mem_limit(struct amdgpu_device *adev,
                        return -EINVAL;
 
                vram_size = KFD_XCP_MEMORY_SIZE(adev, xcp_id);
-               if (adev->gmc.is_app_apu || adev->flags & AMD_IS_APU) {
+               if (adev->flags & AMD_IS_APU) {
                        system_mem_needed = size;
                        ttm_mem_needed = size;
                }
@@ -233,7 +233,7 @@ int amdgpu_amdkfd_reserve_mem_limit(struct amdgpu_device *adev,
        if (adev && xcp_id >= 0) {
                adev->kfd.vram_used[xcp_id] += vram_needed;
                adev->kfd.vram_used_aligned[xcp_id] +=
-                               (adev->gmc.is_app_apu || adev->flags & AMD_IS_APU) ?
+                               (adev->flags & AMD_IS_APU) ?
                                vram_needed :
                                ALIGN(vram_needed, VRAM_AVAILABLITY_ALIGN);
        }
@@ -261,7 +261,7 @@ void amdgpu_amdkfd_unreserve_mem_limit(struct amdgpu_device *adev,
 
                if (adev) {
                        adev->kfd.vram_used[xcp_id] -= size;
-                       if (adev->gmc.is_app_apu || adev->flags & AMD_IS_APU) {
+                       if (adev->flags & AMD_IS_APU) {
                                adev->kfd.vram_used_aligned[xcp_id] -= size;
                                kfd_mem_limit.system_mem_used -= size;
                                kfd_mem_limit.ttm_mem_used -= size;
@@ -890,7 +890,7 @@ static int kfd_mem_attach(struct amdgpu_device *adev, struct kgd_mem *mem,
         * if peer device has large BAR. In contrast, access over xGMI is
         * allowed for both small and large BAR configurations of peer device
         */
-       if ((adev != bo_adev && !(adev->gmc.is_app_apu || adev->flags & AMD_IS_APU)) &&
+       if ((adev != bo_adev && !(adev->flags & AMD_IS_APU)) &&
            ((mem->domain == AMDGPU_GEM_DOMAIN_VRAM) ||
             (mem->alloc_flags & KFD_IOC_ALLOC_MEM_FLAGS_DOORBELL) ||
             (mem->alloc_flags & KFD_IOC_ALLOC_MEM_FLAGS_MMIO_REMAP))) {
@@ -1658,7 +1658,7 @@ size_t amdgpu_amdkfd_get_available_memory(struct amdgpu_device *adev,
                - atomic64_read(&adev->vram_pin_size)
                - reserved_for_pt;
 
-       if (adev->gmc.is_app_apu || adev->flags & AMD_IS_APU) {
+       if (adev->flags & AMD_IS_APU) {
                system_mem_available = no_system_mem_limit ?
                                        kfd_mem_limit.max_system_mem_limit :
                                        kfd_mem_limit.max_system_mem_limit -
@@ -1706,7 +1706,7 @@ int amdgpu_amdkfd_gpuvm_alloc_memory_of_gpu(
        if (flags & KFD_IOC_ALLOC_MEM_FLAGS_VRAM) {
                domain = alloc_domain = AMDGPU_GEM_DOMAIN_VRAM;
 
-               if (adev->gmc.is_app_apu || adev->flags & AMD_IS_APU) {
+               if (adev->flags & AMD_IS_APU) {
                        domain = AMDGPU_GEM_DOMAIN_GTT;
                        alloc_domain = AMDGPU_GEM_DOMAIN_GTT;
                        alloc_flags = 0;
@@ -1953,7 +1953,7 @@ int amdgpu_amdkfd_gpuvm_free_memory_of_gpu(
        if (size) {
                if (!is_imported &&
                   (mem->bo->preferred_domains == AMDGPU_GEM_DOMAIN_VRAM ||
-                  ((adev->gmc.is_app_apu || adev->flags & AMD_IS_APU) &&
+                  ((adev->flags & AMD_IS_APU) &&
                    mem->bo->preferred_domains == AMDGPU_GEM_DOMAIN_GTT)))
                        *size = bo_size;
                else
@@ -2376,7 +2376,7 @@ static int import_obj_create(struct amdgpu_device *adev,
        (*mem)->bo = bo;
        (*mem)->va = va;
        (*mem)->domain = (bo->preferred_domains & AMDGPU_GEM_DOMAIN_VRAM) &&
-                        !(adev->gmc.is_app_apu || adev->flags & AMD_IS_APU) ?
+                        !(adev->flags & AMD_IS_APU) ?
                         AMDGPU_GEM_DOMAIN_VRAM : AMDGPU_GEM_DOMAIN_GTT;
 
        (*mem)->mapped_to_gpu_memory = 0;
index 4816fcb9803a9d0b631cd5943341f06201c27cf6..8ee3d07ffbdfa243623a93fa4f7aeb56ba02334f 100644 (file)
@@ -1023,7 +1023,7 @@ int kgd2kfd_init_zone_device(struct amdgpu_device *adev)
        if (amdgpu_ip_version(adev, GC_HWIP, 0) < IP_VERSION(9, 0, 1))
                return -EINVAL;
 
-       if (adev->gmc.is_app_apu || adev->flags & AMD_IS_APU)
+       if (adev->flags & AMD_IS_APU)
                return 0;
 
        pgmap = &kfddev->pgmap;
index 069b81eeea03cb7f84f9b9acdd958f2339bae124..31e500859ab012500d6678fe36ce89e8936f0f30 100644 (file)
@@ -2619,8 +2619,7 @@ svm_range_best_restore_location(struct svm_range *prange,
                return -1;
        }
 
-       if (node->adev->gmc.is_app_apu ||
-           node->adev->flags & AMD_IS_APU)
+       if (node->adev->flags & AMD_IS_APU)
                return 0;
 
        if (prange->preferred_loc == gpuid ||
@@ -3338,8 +3337,7 @@ svm_range_best_prefetch_location(struct svm_range *prange)
                goto out;
        }
 
-       if (bo_node->adev->gmc.is_app_apu ||
-           bo_node->adev->flags & AMD_IS_APU) {
+       if (bo_node->adev->flags & AMD_IS_APU) {
                best_loc = 0;
                goto out;
        }
index 9c37bd0567efa5be8f5da736f0c96eea5d2a6320..70c1776611c472cb9b213729f0567ac20600ef4c 100644 (file)
@@ -201,7 +201,6 @@ void svm_range_list_lock_and_flush_work(struct svm_range_list *svms, struct mm_s
  * is initialized to not 0 when page migration register device memory.
  */
 #define KFD_IS_SVM_API_SUPPORTED(adev) ((adev)->kfd.pgmap.type != 0 ||\
-                                       (adev)->gmc.is_app_apu ||\
                                        ((adev)->flags & AMD_IS_APU))
 
 void svm_range_bo_unref_async(struct svm_range_bo *svm_bo);