fd/replay: kgsl context should use no-fault tolerance, report reset state
Some checks are pending
macOS-CI / macOS-CI (dri) (push) Waiting to run
macOS-CI / macOS-CI (xlib) (push) Waiting to run

Use KGSL_CONTEXT_NO_FAULT_TOLERANCE to push context into an error state
when a GPU fault is detected. This is useful when dealing with replays of
captures that are producing a GPU fault but might seem to replay just fine
because of the KGSL kernel fault tolerance.

Signed-off-by: Zan Dobersek <zdobersek@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/40667>
This commit is contained in:
Zan Dobersek 2026-03-16 09:46:41 +01:00 committed by Marge Bot
parent 8d5ba04e65
commit 468113efd4

View file

@ -762,7 +762,8 @@ device_create(uint64_t base_addr)
struct kgsl_drawctxt_create drawctxt_req = {
.flags = KGSL_CONTEXT_SAVE_GMEM |
KGSL_CONTEXT_NO_GMEM_ALLOC |
KGSL_CONTEXT_PREAMBLE,
KGSL_CONTEXT_PREAMBLE |
KGSL_CONTEXT_NO_FAULT_TOLERANCE,
};
ret = safe_ioctl(dev->fd, IOCTL_KGSL_DRAWCTXT_CREATE, &drawctxt_req);
@ -821,7 +822,21 @@ device_submit_cmdstreams(struct device *dev)
ret = safe_ioctl(dev->fd, IOCTL_KGSL_DEVICE_WAITTIMESTAMP_CTXTID, &wait);
if (ret) {
err(1, "IOCTL_KGSL_DEVICE_WAITTIMESTAMP_CTXTID failure %d", ret);
warn("IOCTL_KGSL_DEVICE_WAITTIMESTAMP_CTXTID failure %d", ret);
uint32_t value = dev->context_id;
struct kgsl_device_getproperty getprop = {
.type = KGSL_PROP_GPU_RESET_STAT,
.value = &value,
.sizebytes = sizeof(value),
};
ret = safe_ioctl(dev->fd, IOCTL_KGSL_DEVICE_GETPROPERTY, &getprop);
if (ret) {
err(1, "IOCTL_KGSL_DEVICE_GETPROPERTY failure %d", ret);
}
warnx("KGSL_PROP_GPU_RESET_STAT value %u", value);
}
u_vector_finish(&dev->cmdstreams);