mirror of
https://github.com/torvalds/linux.git
synced 2026-10-11 04:47:02 +02:00
drm/amdkfd: move TBA/TMA from system to device memory
for GFX9.4.2 and above. -v2: keep APU with GTT allocation -v3: use dev->adev->apu_prefer_gtt instead Signed-off-by: James Zhu <James.Zhu@amd.com> Reviewed-by: Vladimir Indic <vladimir.indic@amd.com> Reviewed-by: Harish Kasiviswanathan <Harish.Kasiviswanathan@amd.com> Reviewed-by: Philip Yang <philip.yang@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
parent
f8f759426b
commit
fe5966d4fd
|
|
@ -776,9 +776,14 @@ static int kfd_process_alloc_gpuvm(struct kfd_process_device *pdd,
|
|||
}
|
||||
|
||||
if (kptr) {
|
||||
u32 domain;
|
||||
|
||||
if (flags & KFD_IOC_ALLOC_MEM_FLAGS_VRAM)
|
||||
domain = AMDGPU_GEM_DOMAIN_VRAM;
|
||||
else
|
||||
domain = AMDGPU_GEM_DOMAIN_GTT;
|
||||
err = amdgpu_amdkfd_gpuvm_map_bo_to_kernel((struct kgd_mem *)*mem,
|
||||
kptr, NULL,
|
||||
AMDGPU_GEM_DOMAIN_GTT);
|
||||
kptr, NULL, domain);
|
||||
if (err) {
|
||||
pr_debug("Map BO to kernel failed err %d\n", err);
|
||||
goto sync_memory_failed;
|
||||
|
|
@ -1484,8 +1489,7 @@ static int kfd_process_device_init_cwsr_dgpu(struct kfd_process_device *pdd)
|
|||
{
|
||||
struct kfd_node *dev = pdd->dev;
|
||||
struct qcm_process_device *qpd = &pdd->qpd;
|
||||
uint32_t flags = KFD_IOC_ALLOC_MEM_FLAGS_GTT
|
||||
| KFD_IOC_ALLOC_MEM_FLAGS_NO_SUBSTITUTE
|
||||
u32 flags = KFD_IOC_ALLOC_MEM_FLAGS_NO_SUBSTITUTE
|
||||
| KFD_IOC_ALLOC_MEM_FLAGS_EXECUTABLE;
|
||||
struct kgd_mem *mem;
|
||||
void *kaddr;
|
||||
|
|
@ -1494,7 +1498,12 @@ static int kfd_process_device_init_cwsr_dgpu(struct kfd_process_device *pdd)
|
|||
if (!dev->kfd->cwsr_enabled || qpd->cwsr_kaddr || !qpd->cwsr_base)
|
||||
return 0;
|
||||
|
||||
/* cwsr_base is only set for dGPU */
|
||||
if (KFD_GC_VERSION(dev) >= IP_VERSION(9, 4, 2) && !dev->adev->apu_prefer_gtt)
|
||||
flags |= KFD_IOC_ALLOC_MEM_FLAGS_VRAM;
|
||||
else
|
||||
flags |= KFD_IOC_ALLOC_MEM_FLAGS_GTT;
|
||||
|
||||
/* Allocate CWSR TBA/TMA buffers */
|
||||
ret = kfd_process_alloc_gpuvm(pdd, qpd->cwsr_base,
|
||||
KFD_CWSR_TBA_TMA_SIZE, flags, &mem, &kaddr);
|
||||
if (ret)
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user