On Mon, Jul 3, 2017 at 5:11 PM, Felix Kuehling <Felix.Kuehling at amd.com> wrote: > Enable SDMA context switching on CIK (copied from sdma_v3_0.c). > > Signed-off-by: Felix Kuehling <Felix.Kuehling at amd.com> Reviewed-by: Alex Deucher <alexander.deucher at amd.com> > --- > drivers/gpu/drm/amd/amdgpu/cik_sdma.c | 30 ++++++++++++++++++++++++++++++ > 1 file changed, 30 insertions(+) > > diff --git a/drivers/gpu/drm/amd/amdgpu/cik_sdma.c b/drivers/gpu/drm/amd/amdgpu/cik_sdma.c > index c216e16..4a9cea0 100644 > --- a/drivers/gpu/drm/amd/amdgpu/cik_sdma.c > +++ b/drivers/gpu/drm/amd/amdgpu/cik_sdma.c > @@ -342,6 +342,33 @@ static void cik_sdma_rlc_stop(struct amdgpu_device *adev) > } > > /** > + * cik_ctx_switch_enable - stop the async dma engines context switch > + * > + * @adev: amdgpu_device pointer > + * @enable: enable/disable the DMA MEs context switch. > + * > + * Halt or unhalt the async dma engines context switch (VI). > + */ > +static void cik_ctx_switch_enable(struct amdgpu_device *adev, bool enable) > +{ > + u32 f32_cntl; > + int i; > + > + for (i = 0; i < adev->sdma.num_instances; i++) { > + f32_cntl = RREG32(mmSDMA0_CNTL + sdma_offsets[i]); > + if (enable) { > + f32_cntl = REG_SET_FIELD(f32_cntl, SDMA0_CNTL, > + AUTO_CTXSW_ENABLE, 1); > + } else { > + f32_cntl = REG_SET_FIELD(f32_cntl, SDMA0_CNTL, > + AUTO_CTXSW_ENABLE, 0); > + } > + > + WREG32(mmSDMA0_CNTL + sdma_offsets[i], f32_cntl); > + } > +} > + > +/** > * cik_sdma_enable - stop the async dma engines > * > * @adev: amdgpu_device pointer > @@ -537,6 +564,8 @@ static int cik_sdma_start(struct amdgpu_device *adev) > > /* halt the engine before programing */ > cik_sdma_enable(adev, false); > + /* enable sdma ring preemption */ > + cik_ctx_switch_enable(adev, true); > > /* start the gfx rings and rlc compute queues */ > r = cik_sdma_gfx_resume(adev); > @@ -984,6 +1013,7 @@ static int cik_sdma_hw_fini(void *handle) > { > struct amdgpu_device *adev = (struct amdgpu_device *)handle; > > + cik_ctx_switch_enable(adev, false); > cik_sdma_enable(adev, false); > > return 0; > -- > 1.9.1 > > _______________________________________________ > amd-gfx mailing list > amd-gfx at lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/amd-gfx