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
next prev parent 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.