Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

drm/amdgpu: fix lru size grouping v2

Adding a BO can make it the insertion point for larger sizes as well.

v2: add a comment about the guard structure.

Signed-off-by: Christian König <christian.koenig@amd.com>
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Reviewed-by: Felix Kuehling <felix.kuehling@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Cc: stable@vger.kernel.org

authored by

Christian König and committed by
Alex Deucher
56615387 bdf00137

+10
+2
drivers/gpu/drm/amd/amdgpu/amdgpu.h
··· 426 426 427 427 /* custom LRU management */ 428 428 struct amdgpu_mman_lru log2_size[AMDGPU_TTM_LRU_SIZE]; 429 + /* guard for log2_size array, don't add anything in between */ 430 + struct amdgpu_mman_lru guard; 429 431 }; 430 432 431 433 int amdgpu_copy_buffer(struct amdgpu_ring *ring,
+8
drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
··· 950 950 struct list_head *res = lru->lru[tbo->mem.mem_type]; 951 951 952 952 lru->lru[tbo->mem.mem_type] = &tbo->lru; 953 + while ((++lru)->lru[tbo->mem.mem_type] == res) 954 + lru->lru[tbo->mem.mem_type] = &tbo->lru; 953 955 954 956 return res; 955 957 } ··· 962 960 struct list_head *res = lru->swap_lru; 963 961 964 962 lru->swap_lru = &tbo->swap; 963 + while ((++lru)->swap_lru == res) 964 + lru->swap_lru = &tbo->swap; 965 965 966 966 return res; 967 967 } ··· 1014 1010 lru->lru[j] = &adev->mman.bdev.man[j].lru; 1015 1011 lru->swap_lru = &adev->mman.bdev.glob->swap_lru; 1016 1012 } 1013 + 1014 + for (j = 0; j < TTM_NUM_MEM_TYPES; ++j) 1015 + adev->mman.guard.lru[j] = NULL; 1016 + adev->mman.guard.swap_lru = NULL; 1017 1017 1018 1018 adev->mman.initialized = true; 1019 1019 r = ttm_bo_init_mm(&adev->mman.bdev, TTM_PL_VRAM,