Hi Christian,
I have just realized the stolen_vga_memory problem,
I have ever thought that no one really use the stolen_vga_memory BO in KMD code, so it should be safe.
It seems we have to add a new parameter for amdgpu_bo_create_kernel() to pass the prefer region.
Thanks!
Rico
From: Christian König <ckoenig.leichtzumerken@xxxxxxxxx>
Sent: Wednesday, August 28, 2019 17:57 To: Yin, Tianci (Rico) <Tianci.Yin@xxxxxxx>; amd-gfx@xxxxxxxxxxxxxxxxxxxxx <amd-gfx@xxxxxxxxxxxxxxxxxxxxx> Cc: Xu, Feifei <Feifei.Xu@xxxxxxx>; Ma, Le <Le.Ma@xxxxxxx>; Xiao, Jack <Jack.Xiao@xxxxxxx>; Zhang, Hawking <Hawking.Zhang@xxxxxxx> Subject: Re: [PATCH] drm/amdgpu/psp: keep TMR in visible vram region for SRIOV Am 28.08.19 um 11:25 schrieb Tianci Yin:
> From: "Tianci.Yin" <tianci.yin@xxxxxxx> > > Fix compute ring test failure in sriov scenario. > > Signed-off-by: Tianci.Yin <tianci.yin@xxxxxxx> > --- > drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c | 14 ++++++++++---- > drivers/gpu/drm/amd/amdgpu/amdgpu_psp.h | 1 + > 2 files changed, 11 insertions(+), 4 deletions(-) > > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c > index 9f7cc5b..92c68c9 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c > @@ -261,9 +261,15 @@ static int psp_tmr_init(struct psp_context *psp) > } > } > > - ret = amdgpu_bo_create_kernel(psp->adev, tmr_size, PSP_TMR_SIZE, > - AMDGPU_GEM_DOMAIN_VRAM, > - &psp->tmr_bo, &psp->tmr_mc_addr, NULL); > + psp->tmr_buf = NULL; > + if (!amdgpu_sriov_vf(psp->adev)) > + ret = amdgpu_bo_create_kernel(psp->adev, tmr_size, PSP_TMR_SIZE, > + AMDGPU_GEM_DOMAIN_VRAM, > + &psp->tmr_bo, &psp->tmr_mc_addr, NULL); > + else > + ret = amdgpu_bo_create_kernel(psp->adev, tmr_size, PSP_TMR_SIZE, > + AMDGPU_GEM_DOMAIN_VRAM, > + &psp->tmr_bo, &psp->tmr_mc_addr, &psp->tmr_buf); Might be better to use a local variable for the CPU pointer instead of duplicating the calling parameters. BTW: How did you solved the stolen_vga_memory problem I pointed out in the original patch set? Christian. > > return ret; > } > @@ -1216,7 +1222,7 @@ static int psp_hw_fini(void *handle) > > psp_ring_destroy(psp, PSP_RING_TYPE__KM); > > - amdgpu_bo_free_kernel(&psp->tmr_bo, &psp->tmr_mc_addr, NULL); > + amdgpu_bo_free_kernel(&psp->tmr_bo, &psp->tmr_mc_addr, &psp->tmr_buf); > amdgpu_bo_free_kernel(&psp->fw_pri_bo, > &psp->fw_pri_mc_addr, &psp->fw_pri_buf); > amdgpu_bo_free_kernel(&psp->fence_buf_bo, > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.h > index bc0947f..b73d4aa 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.h > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.h > @@ -171,6 +171,7 @@ struct psp_context > /* tmr buffer */ > struct amdgpu_bo *tmr_bo; > uint64_t tmr_mc_addr; > + void *tmr_buf; > > /* asd firmware and buffer */ > const struct firmware *asd_fw; |
_______________________________________________ amd-gfx mailing list amd-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/amd-gfx