Commit bc05716d authored by Nirmoy Das's avatar Nirmoy Das Committed by Alex Deucher

drm/amdkfd: use allowed domain for vmbo validation

Fixes handling when page tables are in system memory.

v3: remove struct amdgpu_vm_parser.
v2: remove unwanted variable.
    change amdgpu_amdkfd_validate instead of amdgpu_amdkfd_bo_validate.
Signed-off-by: default avatarNirmoy Das <nirmoy.das@amd.com>
Reviewed-by: default avatarChristian König <christian.koenig@amd.com>
Reviewed-by: default avatarFelix Kuehling <Felix.Kuehling@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent c707b73f
...@@ -47,12 +47,6 @@ static struct { ...@@ -47,12 +47,6 @@ static struct {
spinlock_t mem_limit_lock; spinlock_t mem_limit_lock;
} kfd_mem_limit; } kfd_mem_limit;
/* Struct used for amdgpu_amdkfd_bo_validate */
struct amdgpu_vm_parser {
uint32_t domain;
bool wait;
};
static const char * const domain_bit_to_string[] = { static const char * const domain_bit_to_string[] = {
"CPU", "CPU",
"GTT", "GTT",
...@@ -348,11 +342,9 @@ static int amdgpu_amdkfd_bo_validate(struct amdgpu_bo *bo, uint32_t domain, ...@@ -348,11 +342,9 @@ static int amdgpu_amdkfd_bo_validate(struct amdgpu_bo *bo, uint32_t domain,
return ret; return ret;
} }
static int amdgpu_amdkfd_validate(void *param, struct amdgpu_bo *bo) static int amdgpu_amdkfd_validate_vm_bo(void *_unused, struct amdgpu_bo *bo)
{ {
struct amdgpu_vm_parser *p = param; return amdgpu_amdkfd_bo_validate(bo, bo->allowed_domains, false);
return amdgpu_amdkfd_bo_validate(bo, p->domain, p->wait);
} }
/* vm_validate_pt_pd_bos - Validate page table and directory BOs /* vm_validate_pt_pd_bos - Validate page table and directory BOs
...@@ -366,20 +358,15 @@ static int vm_validate_pt_pd_bos(struct amdgpu_vm *vm) ...@@ -366,20 +358,15 @@ static int vm_validate_pt_pd_bos(struct amdgpu_vm *vm)
{ {
struct amdgpu_bo *pd = vm->root.base.bo; struct amdgpu_bo *pd = vm->root.base.bo;
struct amdgpu_device *adev = amdgpu_ttm_adev(pd->tbo.bdev); struct amdgpu_device *adev = amdgpu_ttm_adev(pd->tbo.bdev);
struct amdgpu_vm_parser param;
int ret; int ret;
param.domain = AMDGPU_GEM_DOMAIN_VRAM; ret = amdgpu_vm_validate_pt_bos(adev, vm, amdgpu_amdkfd_validate_vm_bo, NULL);
param.wait = false;
ret = amdgpu_vm_validate_pt_bos(adev, vm, amdgpu_amdkfd_validate,
&param);
if (ret) { if (ret) {
pr_err("failed to validate PT BOs\n"); pr_err("failed to validate PT BOs\n");
return ret; return ret;
} }
ret = amdgpu_amdkfd_validate(&param, pd); ret = amdgpu_amdkfd_validate_vm_bo(NULL, pd);
if (ret) { if (ret) {
pr_err("failed to validate PD\n"); pr_err("failed to validate PD\n");
return ret; return ret;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment