[PATCH 1/4] drm/amdgpu: add stride to calculate oss ring offsets
Felix Kuehling
felix.kuehling at amd.com
Fri Mar 20 14:30:35 UTC 2020
On 2020-03-19 20:22, Alex Sierra wrote:
> Arcturus and vega10 share the same vega10_ih, however both
> have different register offsets at the ih ring section.
> This variable is used to help calculate ih ring register addresses
> from the osssys, that corresponds to the current asic type.
>
> Signed-off-by: Alex Sierra <alex.sierra at amd.com>
> ---
> drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c | 4 ++++
> drivers/gpu/drm/amd/amdgpu/amdgpu_irq.h | 1 +
> 2 files changed, 5 insertions(+)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c
> index 5ed4227f304b..fa384ae9a9bc 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c
> @@ -279,6 +279,10 @@ int amdgpu_irq_init(struct amdgpu_device *adev)
> amdgpu_hotplug_work_func);
> }
>
> + if (adev->asic_type == CHIP_ARCTURUS)
> + adev->irq.ring_stride = 1;
> + else
> + adev->irq.ring_stride = 0;
This can't be right. ring_stride==0 would result in all mmIH_RING(...)
register access to map to the same physical registers. So effectively
everything would go to ring0.
Regards,
Felix
> INIT_WORK(&adev->irq.ih1_work, amdgpu_irq_handle_ih1);
> INIT_WORK(&adev->irq.ih2_work, amdgpu_irq_handle_ih2);
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_irq.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_irq.h
> index c718e94a55c9..1ec5b735cd9e 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_irq.h
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_irq.h
> @@ -97,6 +97,7 @@ struct amdgpu_irq {
> struct irq_domain *domain; /* GPU irq controller domain */
> unsigned virq[AMDGPU_MAX_IRQ_SRC_ID];
> uint32_t srbm_soft_reset;
> + unsigned ring_stride;
> };
>
> void amdgpu_irq_disable_all(struct amdgpu_device *adev);
More information about the amd-gfx
mailing list