On 7/7/26 11:41 AM, Alex Deucher wrote:
> There's no need to crash the kernel for these cases.
>
> Signed-off-by: Alex Deucher <[email protected]>
> ---
> drivers/gpu/drm/amd/amdgpu/mes_v11_0.c | 17 ++++++++++-------
> 1 file changed, 10 insertions(+), 7 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/mes_v11_0.c
> b/drivers/gpu/drm/amd/amdgpu/mes_v11_0.c
> index 72ca7302bbfbc..ee5229ae3d75e 100644
> --- a/drivers/gpu/drm/amd/amdgpu/mes_v11_0.c
> +++ b/drivers/gpu/drm/amd/amdgpu/mes_v11_0.c
> @@ -86,7 +86,7 @@ static void mes_v11_0_ring_set_wptr(struct amdgpu_ring
> *ring)
> ring->wptr);
> WDOORBELL64(ring->doorbell_index, ring->wptr);
> } else {
> - BUG();
> + dev_warn(adev->dev, "mes_v11_0_ring_set_wptr() requires
> doorbell!\n");
Per scripts/checkpatch.pl:
WARNING: Prefer using '"%s...", __func__' to using 'mes_v11_0_ring_set_wptr',
this function's name, in a string
> }
> }
>
> @@ -97,12 +97,15 @@ static u64 mes_v11_0_ring_get_rptr(struct amdgpu_ring
> *ring)
>
> static u64 mes_v11_0_ring_get_wptr(struct amdgpu_ring *ring)
> {
> + struct amdgpu_device *adev = ring->adev;
> u64 wptr;
>
> - if (ring->use_doorbell)
> + if (ring->use_doorbell) {
> wptr = atomic64_read((atomic64_t *)ring->wptr_cpu_addr);
> - else
> - BUG();
> + } else {
> + dev_warn(adev->dev, "mes_v11_0_ring_get_wptr() requires
> doorbell!\n");
See above. Interestingly, scripts/checkpatch.pl doesn't catch this one.
There are additional prints like this in the series.
Thanks,
John
> + wptr = 0;
> + }
> return wptr;
> }
>
> @@ -294,7 +297,7 @@ static int convert_to_mes_queue_type(int queue_type)
> else if (queue_type == AMDGPU_RING_TYPE_SDMA)
> return MES_QUEUE_TYPE_SDMA;
> else
> - BUG();
> + WARN(1, "Invalid queue type %d\n", queue_type);
> return -1;
> }
>
> @@ -1544,7 +1547,7 @@ static int mes_v11_0_queue_init(struct amdgpu_device
> *adev,
> else if (pipe == AMDGPU_MES_SCHED_PIPE)
> ring = &adev->mes.ring[0];
> else
> - BUG();
> + WARN(1, "Invalid MES pipe %d\n", pipe);
>
> if ((pipe == AMDGPU_MES_SCHED_PIPE) &&
> (amdgpu_in_reset(adev) || adev->in_suspend)) {
> @@ -1627,7 +1630,7 @@ static int mes_v11_0_mqd_sw_init(struct amdgpu_device
> *adev,
> else if (pipe == AMDGPU_MES_SCHED_PIPE)
> ring = &adev->mes.ring[0];
> else
> - BUG();
> + return -EINVAL;
>
> if (ring->mqd_obj)
> return 0;