On Wed, Oct 14, 2020 at 9:53 AM Nirmoy Das <nirmoy.das@xxxxxxx> wrote: > > Because of firmware bug, Raven asics can't handle jobs > scheduled to multiple compute queues. So enable only one > compute queue till we have a firmware fix. > > Signed-off-by: Nirmoy Das <nirmoy.das@xxxxxxx> > --- > drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c | 4 ++++ > drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c | 11 ++++++++++- > 2 files changed, 14 insertions(+), 1 deletion(-) > > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c > index 8c9bacfdbc30..ca2ac985b300 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c > @@ -195,6 +195,10 @@ static bool amdgpu_gfx_is_multipipe_capable(struct amdgpu_device *adev) > bool amdgpu_gfx_is_high_priority_compute_queue(struct amdgpu_device *adev, > int queue) > { > + /* We only enable one compute queue for Raven */ > + if (adev->asic_type == CHIP_RAVEN) > + return false; > + > /* Policy: make queue 0 of each pipe as high priority compute queue */ > return (queue == 0); > > diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c b/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c > index 0d8e203b10ef..f3fc9ad8bc20 100644 > --- a/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c > +++ b/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c > @@ -4633,7 +4633,16 @@ static int gfx_v9_0_early_init(void *handle) > adev->gfx.num_gfx_rings = 0; > else > adev->gfx.num_gfx_rings = GFX9_NUM_GFX_RINGS; > - adev->gfx.num_compute_rings = amdgpu_num_kcq; > + > + /* raven firmware currently can not load balance jobs > + * among multiple compute queues. Enable only one > + * compute queue till we have a firmware fix. > + */ > + if (adev->asic_type == CHIP_RAVEN) > + adev->gfx.num_compute_rings = 1; > + else > + adev->gfx.num_compute_rings = amdgpu_num_kcq; > + I would suggest something like this instead so we can override easily for testing: diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c index abddcd9dab3d..a2954b41e59d 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c @@ -1376,6 +1376,12 @@ static int amdgpu_device_check_arguments(struct amdgpu_device *adev) if (amdgpu_num_kcq == -1) { amdgpu_num_kcq = 8; + /* raven firmware currently can not load balance jobs + * among multiple compute queues. Enable only one + * compute queue till we have a firmware fix. + */ + if (adev->asic_type == CHIP_RAVEN) + amdgpu_num_kcq = 1; } else if (amdgpu_num_kcq > 8 || amdgpu_num_kcq < 0) { amdgpu_num_kcq = 8; dev_warn(adev->dev, "set kernel compute queue number to 8 due to invalid parameter provided by user\n"); Alex > gfx_v9_0_set_kiq_pm4_funcs(adev); > gfx_v9_0_set_ring_funcs(adev); > gfx_v9_0_set_irq_funcs(adev); > -- > 2.28.0 > > _______________________________________________ > amd-gfx mailing list > amd-gfx@xxxxxxxxxxxxxxxxxxxxx > https://lists.freedesktop.org/mailman/listinfo/amd-gfx _______________________________________________ amd-gfx mailing list amd-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/amd-gfx