All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Timur Kristóf" <timur.kristof@gmail.com>
To: Tvrtko Ursulin <tursulin@ursulin.net>,
	Alex Deucher <alexdeucher@gmail.com>
Cc: amd-gfx@lists.freedesktop.org,
	Alex Deucher <alexander.deucher@amd.com>,
	christian.koenig@amd.com, pierre-eric.pelloux-prayer@amd.com,
	Natalie Vock <natalie.vock@gmx.de>
Subject: Re: [PATCH 3/9] drm/amdgpu/gfx7: Return error code when compute ring tests fail
Date: Wed, 15 Jul 2026 10:02:49 +0200	[thread overview]
Message-ID: <7296879.9J7NaK4W3v@timur-max> (raw)
In-Reply-To: <CADnq5_M9hwLQw8YMqEebQ7q_kYLx2KKetZJFrszGOiOSYio_dQ@mail.gmail.com>

On 2026. július 14., kedd 22:41:33 közép-európai nyári idő Alex Deucher wrote:
> On Tue, Jul 14, 2026 at 4:14 PM Tvrtko Ursulin <tursulin@ursulin.net> wrote:
> > On 13/07/2026 13:58, Timur Kristóf wrote:
> > > The gfx_v7_0_cp_compute_resume() function should only return
> > > success when all compute rings are actually functional.
> > > This will be especially important for soft reset which needs
> > > this to know whether the reset was successful.
> > > 
> > > Signed-off-by: Timur Kristóf <timur.kristof@gmail.com>
> > > ---
> > > 
> > >   drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c | 6 ++++--
> > >   1 file changed, 4 insertions(+), 2 deletions(-)
> > > 
> > > diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c
> > > b/drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c index
> > > 9c4b3ac27e1f..a1a9f3fc4567 100644
> > > --- a/drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c
> > > +++ b/drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c
> > > @@ -3019,12 +3019,14 @@ static int gfx_v7_0_cp_compute_resume(struct
> > > amdgpu_device *adev)> > 
> > >       gfx_v7_0_cp_compute_enable(adev, true);
> > > 
> > > +     r = 0;
> > > +
> > > 
> > >       for (i = 0; i < adev->gfx.num_compute_rings; i++) {
> > >       
> > >               ring = &adev->gfx.compute_ring[i];
> > > 
> > > -             amdgpu_ring_test_helper(ring);
> > > +             r |= amdgpu_ring_test_helper(ring);
> > > 
> > >       }
> > > 
> > > -     return 0;
> > > +     return r;
> > > 
> > >   }
> > >   
> > >   static void gfx_v7_0_cp_enable(struct amdgpu_device *adev, bool
> > >   enable)
> > 
> > Gfx8 and 9 (did not look further) do not do it like that. Should they?
> > Or there is more work there to be done first?

I actually added the same code for GFX8 in the previous series.
In gfx_v8_0_cp_test_all_rings() it checks that all rings are functional, and 
it calls that from gfx_v8_0_cp_resume().

I think it would be a good idea to do this for newer GPUs as well, but I 
haven't yet touched the code for those.

> > 
> > I actually might like this because maybe it gets us closer to removing
> > the ring->sched.ready hack but what I am just not sure if the idea was
> > to allow driver to function with some non-functional rings after resume.
> > Under the premise that if they initialized during init, then after
> > resume they must too, or if they don't, it is a transient glitch. I
> > don't know.. I am being imaginative here thinking about silly driver
> > workarounds for weird hardware glitches. It is much more likely this was
> > just an oversight and it is completely fine to to error out.
> > 
> > I have to defer to Alex and Christian on this one.
> 
> The reason for not checking the errors was because compute queue
> failure was not seen as fatal.  There are a lot of compute queues
> (relative to other engines), so if something happened, it seemed
> better to just continue in a degraded mode with fewer compute queues
> than to fail to resume in general.

We had a conversation about a similar topic (it was about UVD), where Alex 
said that in general we should prefer not to handle degraded functionality in 
amdgpu. I think the same principle should apply here.

1. My main problem with handling degraded functionality here is that I have 
never seen any issue where just some compute queues fail to initialize after 
boot or after suspend/resume. That means we can't meaningfully test that 
scenario, so we can't trust any code we write to handle that either.
2. It would be very tedious to keep track of which queues didn't work in the 
first place vs. which are those that don't work because of a bug in the soft 
reset code. I consider the soft reset as failed if not all queues work 
correctly.

Considering the above, I vote that we should just expect all queues to work 
correctly at initialization and after a recovery. What do you guys think?

Thanks & best regards,
Timur






  reply	other threads:[~2026-07-15  8:02 UTC|newest]

Thread overview: 35+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-07-13 12:58 [PATCH 0/9] drm/amdgpu/gfx7: Use GFX IP block soft reset on GFX7 Timur Kristóf
2026-07-13 12:58 ` [PATCH 1/9] drm/amdgpu/gfx7: Make amdgpu_gfx_mqd_sw_init() usable " Timur Kristóf
2026-07-14 14:59   ` Tvrtko Ursulin
2026-07-14 15:05     ` Alex Deucher
2026-07-14 15:19       ` Tvrtko Ursulin
2026-07-14 15:39         ` Timur Kristóf
2026-07-14 18:23           ` Tvrtko Ursulin
2026-07-13 12:58 ` [PATCH 2/9] drm/amdgpu/gfx7: Refactor MQD initialization and finalization Timur Kristóf
2026-07-14 18:47   ` Tvrtko Ursulin
2026-07-15  8:08     ` Timur Kristóf
2026-07-15  8:26       ` Tvrtko Ursulin
2026-07-13 12:58 ` [PATCH 3/9] drm/amdgpu/gfx7: Return error code when compute ring tests fail Timur Kristóf
2026-07-14 18:55   ` Tvrtko Ursulin
2026-07-14 20:41     ` Alex Deucher
2026-07-15  8:02       ` Timur Kristóf [this message]
2026-07-15  9:50         ` Christian König
2026-07-15 10:50           ` Timur Kristóf
2026-07-13 12:58 ` [PATCH 4/9] drm/amdgpu/gfx7: Return error code when failing to start GFX ring Timur Kristóf
2026-07-14 18:58   ` Tvrtko Ursulin
2026-07-13 12:58 ` [PATCH 5/9] drm/amdgpu/gfx7: Fixup emitting SWITCH_BUFFER packets Timur Kristóf
2026-07-15  8:56   ` Tvrtko Ursulin
2026-07-15 10:36     ` Timur Kristóf
2026-07-15 11:20       ` Tvrtko Ursulin
2026-07-15 11:50       ` Christian König
2026-07-13 12:58 ` [PATCH 6/9] drm/amdgpu/gfx7: Clean up gfx ring during reset Timur Kristóf
2026-07-15  9:18   ` Tvrtko Ursulin
2026-07-15 10:16     ` Timur Kristóf
2026-07-15 11:07       ` Tvrtko Ursulin
2026-07-13 12:58 ` [PATCH 7/9] drm/amdgpu/gfx7: Use COND_EXEC Timur Kristóf
2026-07-15  9:38   ` Tvrtko Ursulin
2026-07-15 10:45     ` Timur Kristóf
2026-07-13 12:58 ` [PATCH 8/9] drm/amdgpu/gfx7: Fixup IP block soft reset Timur Kristóf
2026-07-15  9:53   ` Tvrtko Ursulin
2026-07-13 12:58 ` [PATCH 9/9] drm/amdgpu/gfx7: Enable IP block soft reset as a GPU recovery method Timur Kristóf
2026-07-15  9:55   ` Tvrtko Ursulin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=7296879.9J7NaK4W3v@timur-max \
    --to=timur.kristof@gmail.com \
    --cc=alexander.deucher@amd.com \
    --cc=alexdeucher@gmail.com \
    --cc=amd-gfx@lists.freedesktop.org \
    --cc=christian.koenig@amd.com \
    --cc=natalie.vock@gmx.de \
    --cc=pierre-eric.pelloux-prayer@amd.com \
    --cc=tursulin@ursulin.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.