]> git.proxmox.com Git - mirror_ubuntu-focal-kernel.git/commitdiff
drm/amdkfd: use allowed domain for vmbo validation
authorNirmoy Das <nirmoy.das@amd.com>
Tue, 8 Jun 2021 11:23:44 +0000 (13:23 +0200)
committerStefan Bader <stefan.bader@canonical.com>
Fri, 13 Aug 2021 07:46:38 +0000 (09:46 +0200)
BugLink: https://bugs.launchpad.net/bugs/1938713
[ 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>
Signed-off-by: Kamal Mostafa <kamal@canonical.com>
Signed-off-by: Stefan Bader <stefan.bader@canonical.com>
drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c

index f3fa271e3394c0b75070605764505b3710ffe2fc..25af45adc03e7a4c3b147c4ad40c14651a901158 100644 (file)
@@ -55,12 +55,6 @@ static struct {
        spinlock_t mem_limit_lock;
 } 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[] = {
                "CPU",
                "GTT",
@@ -293,11 +287,9 @@ validate_fail:
        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, p->domain, p->wait);
+       return amdgpu_amdkfd_bo_validate(bo, bo->allowed_domains, false);
 }
 
 /* vm_validate_pt_pd_bos - Validate page table and directory BOs
@@ -311,20 +303,15 @@ static int vm_validate_pt_pd_bos(struct amdgpu_vm *vm)
 {
        struct amdgpu_bo *pd = vm->root.base.bo;
        struct amdgpu_device *adev = amdgpu_ttm_adev(pd->tbo.bdev);
-       struct amdgpu_vm_parser param;
        int ret;
 
-       param.domain = AMDGPU_GEM_DOMAIN_VRAM;
-       param.wait = false;
-
-       ret = amdgpu_vm_validate_pt_bos(adev, vm, amdgpu_amdkfd_validate,
-                                       &param);
+       ret = amdgpu_vm_validate_pt_bos(adev, vm, amdgpu_amdkfd_validate_vm_bo, NULL);
        if (ret) {
                pr_err("amdgpu: failed to validate PT BOs\n");
                return ret;
        }
 
-       ret = amdgpu_amdkfd_validate(&param, pd);
+       ret = amdgpu_amdkfd_validate_vm_bo(NULL, pd);
        if (ret) {
                pr_err("amdgpu: failed to validate PD\n");
                return ret;