AMD General Reviewed-by: Leo Liu <[email protected]>
> -----Original Message----- > From: Liang, Prike <[email protected]> > Sent: Thursday, October 29, 2026 10:48 PM > To: [email protected] > Cc: Deucher, Alexander <[email protected]>; Koenig, Christian > <[email protected]>; Lazar, Lijo <[email protected]>; Prosyak, Vitaly > <[email protected]>; Liang, Prike <[email protected]>; Liu, Leo > <[email protected]> > Subject: [PATCH 2/3] drm/amdgpu/vce: don't allocate a scheduler fence in the > direct IB test > > The IB tests run inside GPU recovery, which must not allocate memory with > reclaim. The direct IB pool and the job allocation use GFP_ATOMIC for > this reason. > > amdgpu_vce_get_create_msg() and amdgpu_vce_get_destroy_msg() still pass > the VCE scheduler entity for direct submissions, so drm_sched_job_init() > allocates a scheduler fence with GFP_KERNEL that the direct submission > never uses. > > The create message is always submitted directly, so don't pass the entity > there. The destroy message also goes through the scheduler when the > handles of a closed file are freed, so only pass the entity for those > scheduled submissions. > > Signed-off-by: Prike Liang <[email protected]> > Cc: Leo Liu <[email protected]> > --- > drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c | 5 +++-- > 1 file changed, 3 insertions(+), 2 deletions(-) > > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c > b/drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c > index 3952af9ae115..dec3c6d9b6ba 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c > @@ -471,7 +471,7 @@ static int amdgpu_vce_get_create_msg(struct > amdgpu_ring *ring, uint32_t handle, > uint64_t addr; > int i, r; > > - r = amdgpu_job_alloc_with_ib(ring->adev, &ring->adev->vce.entity, > + r = amdgpu_job_alloc_with_ib(ring->adev, NULL, > AMDGPU_FENCE_OWNER_UNDEFINED, > ib_size_dw * 4, AMDGPU_IB_POOL_DIRECT, > > AMDGPU_KERNEL_JOB_ID_VCN_RING_TEST, > @@ -562,7 +562,8 @@ static int amdgpu_vce_get_destroy_msg(struct > amdgpu_ring *ring, uint32_t handle, > struct dma_fence *f = NULL; > int i, r; > > - r = amdgpu_job_alloc_with_ib(ring->adev, &ring->adev->vce.entity, > + r = amdgpu_job_alloc_with_ib(ring->adev, > + direct ? NULL : &ring->adev->vce.entity, > AMDGPU_FENCE_OWNER_UNDEFINED, > ib_size_dw * 4, > direct ? AMDGPU_IB_POOL_DIRECT : > -- > 2.34.1
