Re: [PATCH v3 0/2] drm: Add GPU reset sysfs

From: Pekka Paalanen
Date: Mon Nov 28 2022 - 04:25:48 EST


On Fri, 25 Nov 2022 14:52:01 -0300
André Almeida <andrealmeid@xxxxxxxxxx> wrote:

> This patchset adds a udev event for DRM device's resets.

Hi,

this seems a good idea to me.

> Userspace apps can trigger GPU resets by misuse of graphical APIs or driver
> bugs. Either way, the GPU reset might lead the system to a broken state[1], that
> might be recovered if user has access to a tty or a remote shell. Arguably, this
> recovery could happen automatically by the system itself, thus this is the goal
> of this patchset.
>
> For debugging and report purposes, device coredump support was already added
> for amdgpu[2], but it's not suitable for programmatic usage like this one given
> the uAPI not being stable and the need for parsing.
>
> GL/VK is out of scope for this use, giving that we are dealing with device
> resets regardless of API.

I see that the reported PID is intended to be the culprit, the process
that caused the GPU to crash or hang, if identified. Hence, killing
that process perhaps makes sense, even if it could recover on its own
through GL/VK "device lost" mechanism.

"VRAM lost" is interesting. Innocent processes essentially lost the GPU
in that case, I suppose, but that's no reason to kill them and restart
the whole graphics stack outright. Those that actually handle GL/VK
device lost should theoretically be fine, right?

Display servers can make more enlightened decisions on whether they
need to restart or not, if they are implemented to handle that.

The example gpu-resetd [3] behaviour in that case seems sub-optimal.
Could it do better? How would it know, or avoid knowing, which
processes handled the GPU reset fine and which need external restarting?

Maybe gpu-resetd should kill the culprit only if it causes resets
repeatedly? But if the culprit does not handle device lost and also
does not die... how do you know you need to kill it?


Thanks,
pq

>
> A basic userspace daemon is provided at [3] showing how the interface is used
> to recovery from resets.
>
> [1] A search for "reset" in DRM/AMD issue tracker shows reports of resets
> making the system unusable:
> https://gitlab.freedesktop.org/drm/amd/-/issues/?search=reset
>
> [2] https://lore.kernel.org/amd-gfx/20220602081538.1652842-2-Amaranath.Somalapuram@xxxxxxx/
>
> [3] https://gitlab.freedesktop.org/andrealmeid/gpu-resetd
>
> v2: https://lore.kernel.org/dri-devel/20220308180403.75566-1-contactshashanksharma@xxxxxxxxx/
>
> André Almeida (1):
> drm/amdgpu: Add work function for GPU reset event
>
> Shashank Sharma (1):
> drm: Add GPU reset sysfs event
>
> drivers/gpu/drm/amd/amdgpu/amdgpu.h | 4 +++
> drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 30 ++++++++++++++++++++++
> drivers/gpu/drm/drm_sysfs.c | 26 +++++++++++++++++++
> include/drm/drm_sysfs.h | 13 ++++++++++
> 4 files changed, 73 insertions(+)
>

Attachment: pgpJu1QdGdmgG.pgp
Description: OpenPGP digital signature