drm/amdkfd: use allowed domain for vmbo validation
[ Upstream commit bc05716d4fdd065013633602c5960a2bf1511b9c ] 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: Nirmoy Das <nirmoy.das@amd.com> Reviewed-by: Christian König <christian.koenig@amd.com> Reviewed-by: Felix Kuehling <Felix.Kuehling@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com> Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:

committed by
Greg Kroah-Hartman

parent
fb3b4bcdd3
commit
378c156f9d
@@ -48,12 +48,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",
|
||||||
@@ -337,11 +331,9 @@ validate_fail:
|
|||||||
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
|
||||||
@@ -355,20 +347,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,
|
|
||||||
¶m);
|
|
||||||
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(¶m, 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;
|
||||||
|
Reference in New Issue
Block a user