Hi Nirmoy, Why keep a unused parameter: +static int amdgpu_amdkfd_validate_vm_bo(void *_unused. When I looked the codes, the only logic change is the validate page table bo in allowed_domain instead of vram domain. Can you explain why validate page table bo in vram domain cause a problem? When I looked at the codes, we only place page table in GTT domain when vram size is too small (function amdgpu_bo_get_preferred_pin_domain). Is there any other case we place page table in GTT? Regards, Oak On 2021-06-08, 8:02 AM, "amd-gfx on behalf of Das, Nirmoy" <amd-gfx-bounces@xxxxxxxxxxxxxxxxxxxxx on behalf of Nirmoy.Das@xxxxxxx> wrote: On 6/8/2021 1:42 PM, Christian König wrote: > > > Am 08.06.21 um 13:27 schrieb Nirmoy Das: >> Fixes handling when page tables are in system memory. >> >> v2: remove unwanted variable. >> change amdgpu_amdkfd_validate instead of amdgpu_amdkfd_bo_validate. >> >> Signed-off-by: Nirmoy Das <nirmoy.das@xxxxxxx> >> --- >> drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c | 15 ++++----------- >> 1 file changed, 4 insertions(+), 11 deletions(-) >> >> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c >> b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c >> index d6cb7cf76623..021f25085760 100644 >> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c >> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c >> @@ -348,11 +348,9 @@ static int amdgpu_amdkfd_bo_validate(struct >> amdgpu_bo *bo, uint32_t domain, >> 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; > > The structure define of amdgpu_vm_parser isn't used any more if we > drop this as well, isn't it? Right, I missed that. I will resend. Nirmoy > > Christian. > >> - >> - 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 >> @@ -366,20 +364,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, >> - ¶m); >> + ret = amdgpu_vm_validate_pt_bos(adev, vm, >> amdgpu_amdkfd_validate_vm_bo, NULL); >> if (ret) { >> pr_err("failed to validate PT BOs\n"); >> return ret; >> } >> >> - ret = amdgpu_amdkfd_validate(¶m, pd); >> + ret = amdgpu_amdkfd_validate_vm_bo(NULL, pd); >> if (ret) { >> pr_err("failed to validate PD\n"); >> return ret; >> -- >> 2.31.1 >> >> _______________________________________________ >> amd-gfx mailing list >> amd-gfx@xxxxxxxxxxxxxxxxxxxxx >> https://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Flists.freedesktop.org%2Fmailman%2Flistinfo%2Famd-gfx&data=04%7C01%7Coak.zeng%40amd.com%7C62e4b0ccafad4e3d110b08d92a755181%7C3dd8961fe4884e608e11a82d994e183d%7C0%7C0%7C637587505641608251%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=oufI2dIYs6Gx0EFuPEPgL0eYk5jrhsNwPbvDf8eBJ%2Bk%3D&reserved=0 >> > _______________________________________________ amd-gfx mailing list amd-gfx@xxxxxxxxxxxxxxxxxxxxx https://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Flists.freedesktop.org%2Fmailman%2Flistinfo%2Famd-gfx&data=04%7C01%7Coak.zeng%40amd.com%7C62e4b0ccafad4e3d110b08d92a755181%7C3dd8961fe4884e608e11a82d994e183d%7C0%7C0%7C637587505641608251%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=oufI2dIYs6Gx0EFuPEPgL0eYk5jrhsNwPbvDf8eBJ%2Bk%3D&reserved=0 _______________________________________________ amd-gfx mailing list amd-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/amd-gfx