From: Bert Karwatzki <spasswolf@web.de>
To: Alex Deucher <alexander.deucher@amd.com>
Cc: Bert Karwatzki <spasswolf@web.de>,
linux-kernel@vger.kernel.org, amd-gfx@lists.freedesktop.org,
linux-next@vger.kernel.org, Jesse Zhang <jesse.zhang@amd.com>,
Amber Lin <Amber.Lin@amd.com>,
Mario Limonciello <mario.limonciello@amd.com>
Subject: [Re] GPU reset when running the ROCm hsa runtime tests on gfx12 and next-20260701
Date: Sun, 5 Jul 2026 02:35:02 +0200 [thread overview]
Message-ID: <20260705003504.31425-1-spasswolf@web.de> (raw)
In-Reply-To: <20260703124405.56248-1-spasswolf@web.de>
I identified the problem in
f94bbd648bb4 ("drm/amdgpu: use a single entry point for mes compute reset")
it's reset_queues_mes() being called unconditionally. f94bbd648bb4 can be fixed
like this:
diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c b/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c
index 6054c8e216b8..ed1ffa8b1743 100644
--- a/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c
+++ b/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c
@@ -484,15 +484,18 @@ static int suspend_all_queues_mes(struct device_queue_manager *dqm)
if (!down_read_trylock(&adev->reset_domain->sem))
return -EIO;
+ r = amdgpu_mes_suspend(adev, ffs(dqm->dev->xcc_mask) - 1);
- if (!reset_queues_mes(dqm)) {
- r = 0;
- goto out;
- }
+ if (r) {
+ if (!reset_queues_mes(dqm)) {
+ r = 0;
+ goto out;
+ }
- dev_err(adev->dev, "failed to suspend gangs from MES\n");
- dev_err(adev->dev, "MES might be in unrecoverable state, issue a GPU reset\n");
- kfd_hws_hang(dqm);
+ dev_err(adev->dev, "failed to suspend gangs from MES\n");
+ dev_err(adev->dev, "MES might be in unrecoverable state, issue a GPU reset\n");
+ kfd_hws_hang(dqm);
+ }
out:
up_read(&adev->reset_domain->sem);
But when I try to fix next-20260701 like this
diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c b/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c
index 5c9dfb0c424f..5a78b1504f8c 100644
--- a/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c
+++ b/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c
@@ -493,7 +493,10 @@ static int recover_bad_queue_mes(struct device_queue_manager *dqm, struct queue
if (!down_read_trylock(&adev->reset_domain->sem))
return -EIO;
- r = reset_queues_mes(dqm, q);
+ r = amdgpu_mes_suspend(adev, ffs(dqm->dev->xcc_mask) - 1);
+
+ if (r)
+ r = reset_queues_mes(dqm, q);
up_read(&adev->reset_domain->sem);
return r;
I still get GPUVM errors (but no GPU reset) and when running
$ /usr/libexec/rocm/libhsa-runtime64-tests/run-tests
[ 146.577245] [ T418] amdgpu 0000:03:00.0: [gfxhub] page fault (src_id:0 ring:157 vmid:0 pasid:0)
[ 146.577247] [ T418] amdgpu 0000:03:00.0: in page starting at address 0x00000000002ba000 from client 10
[ 146.577248] [ T418] amdgpu 0000:03:00.0: GCVM_L2_PROTECTION_FAULT_STATUS:0x00000B3A
[ 146.577249] [ T418] amdgpu 0000:03:00.0: Faulty UTCL2 client ID: CPC (0x5)
[ 146.577249] [ T418] amdgpu 0000:03:00.0: MORE_FAULTS: 0x0
[ 146.577250] [ T418] amdgpu 0000:03:00.0: WALKER_ERROR: 0x5
[ 146.577250] [ T418] amdgpu 0000:03:00.0: PERMISSION_FAULTS: 0x3
[ 146.577250] [ T418] amdgpu 0000:03:00.0: MAPPING_ERROR: 0x1
[ 146.577251] [ T418] amdgpu 0000:03:00.0: RW: 0x0
[ 146.577606] [ T418] amdgpu 0000:03:00.0: [gfxhub] page fault (src_id:0 ring:157 vmid:0 pasid:0)
[ 146.577608] [ T418] amdgpu 0000:03:00.0: in page starting at address 0x00000000002ba000 from client 10
[ 146.577609] [ T418] amdgpu 0000:03:00.0: GCVM_L2_PROTECTION_FAULT_STATUS:0x00000B3A
[ 146.577609] [ T418] amdgpu 0000:03:00.0: Faulty UTCL2 client ID: CPC (0x5)
[ 146.577610] [ T418] amdgpu 0000:03:00.0: MORE_FAULTS: 0x0
[ 146.577611] [ T418] amdgpu 0000:03:00.0: WALKER_ERROR: 0x5
[ 146.577611] [ T418] amdgpu 0000:03:00.0: PERMISSION_FAULTS: 0x3
[ 146.577611] [ T418] amdgpu 0000:03:00.0: MAPPING_ERROR: 0x1
[ 146.577612] [ T418] amdgpu 0000:03:00.0: RW: 0x0
This means there's at least another error in these commits (reverting all these in
next-20260701 fixes the issue)
b789664e3e30 ("drm/amdkfd: Clean up suspend_all and resume_all mes")
a665d09b10af ("drm/amdkfd: Pass known bad queue info to reset")
a4e4d945cba8 ("drm/amdgpu/gfx: defer per-queue helper_end until after MES resume")
f401a2633e02 ("drm/amdgpu: Remove faulty queue before resume")
f94bbd648bb4 ("drm/amdgpu: use a single entry point for mes compute reset")
Bert Karwatzki
next prev parent reply other threads:[~2026-07-05 0:35 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-07-03 12:44 GPU reset when running the ROCm hsa runtime tests on gfx12 and next-20260701 Bert Karwatzki
2026-07-05 0:35 ` Bert Karwatzki [this message]
2026-07-05 22:45 ` [Re] " Bert Karwatzki
2026-07-06 12:46 ` Bert Karwatzki
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=20260705003504.31425-1-spasswolf@web.de \
--to=spasswolf@web.de \
--cc=Amber.Lin@amd.com \
--cc=alexander.deucher@amd.com \
--cc=amd-gfx@lists.freedesktop.org \
--cc=jesse.zhang@amd.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-next@vger.kernel.org \
--cc=mario.limonciello@amd.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox