On Mon, Jul 21, 2025, at 14:50, Satadru Pramanik wrote:> Sure! > > Here you go. > > The command I ran was 'glxinfo -B' > > diff glxinfo_working.txt glxinfo_broken.txtUnfortunately, the 'diff' output makes this a little harder, try 'diff -u' next time. I suppose passing "-X raw" to strace would also help since the ioctl commands are heavily overloaded.> < 10221 ioctl(6, _IOC(_IOC_WRITE, 0x64, 0x47, 0x48), 0x7ffc5a254340) = 0 > < 10221 ioctl(6, _IOC(_IOC_READ|_IOC_WRITE, 0x64, 0x47, 0x88), > 0x7ffc5a254390) = 0I think this is where it goes wrong first: (0x64, 0x47) is the correct type and number for NVIF, but after my patch I only accept the _IOC_READ|_IOC_WRITE caller but not _IOC_WRITE.> < 10221 ioctl(6, _IOC(_IOC_WRITE, 0x64, 0x47, 0x38), 0x7ffc5a254240) = 0 > < 10221 ioctl(6, DRM_IOCTL_NOUVEAU_GEM_CPU_PREP, 0x7ffc5a254250) = 0 > < 10221 ioctl(6, _IOC(_IOC_READ|_IOC_WRITE, 0x64, 0x47, 0xa0), > 0x7ffc5a254200) = 0 > < 10221 ioctl(6, _IOC(_IOC_WRITE, 0x64, 0x47, 0x38), 0x7ffc5a254240) = 0 > < 10221 ioctl(6, _IOC(_IOC_READ|_IOC_WRITE, 0x64, 0x47, 0xa0), > 0x7ffc5a254200) = 0 > < 10221 ioctl(6, _IOC(_IOC_WRITE, 0x64, 0x47, 0x38), 0x7ffc5a254240) = 0 > < 10221 ioctl(6, _IOC(_IOC_WRITE, 0x64, 0x47, 0x38), 0x7ffc5a254240) = 0 > < 10221 ioctl(6, _IOC(_IOC_READ|_IOC_WRITE, 0x64, 0x47, 0xa0), > 0x7ffc5a254200) = 0 > < 10221 ioctl(6, _IOC(_IOC_WRITE, 0x64, 0x47, 0x38), 0x7ffc5a254240) = 0> < 10221 ioctl(6, _IOC(_IOC_READ|_IOC_WRITE, 0x64, 0x47, 0xa0), > 0x7ffc5a254200) = 0 > < 10221 ioctl(6, _IOC(_IOC_WRITE, 0x64, 0x47, 0x38), 0x7ffc5a254240) = 0More of the same> < 10221 ioctl(7, DRM_IOCTL_XE_EXEC_QUEUE_DESTROY, 0x7ffc5a2550e0) = -1 > EBADF (Bad file descriptor)This one manages to actually overload a command from another driver, but DRM_IOCTL_XE_EXEC_QUEUE_DESTROY happens to also work out to _IOC(_IOC_WRITE, 0x64, 0x47, 0x18). Obviously these commands still need to be supported, so we need to (at least) allow both _IOC_READ and _IOC_READ|_IOC_WRITE versions of it. Maintainers, do you prefer to just revert back to the original version, or should we do another round that allows exactly the necessary commands? It does get pretty ugly at that point, and is not that far off the origial version, with only really the _IOC_TYPE check remaining: diff --git a/drivers/gpu/drm/nouveau/nouveau_drm.c b/drivers/gpu/drm/nouveau/nouveau_drm.c index 7bb64fcdd497..8bc61dfe7d9d 100644 --- a/drivers/gpu/drm/nouveau/nouveau_drm.c +++ b/drivers/gpu/drm/nouveau/nouveau_drm.c @@ -1284,7 +1284,7 @@ nouveau_ioctls[] = { DRM_IOCTL_DEF_DRV(NOUVEAU_EXEC, nouveau_exec_ioctl_exec, DRM_RENDER_ALLOW), }; -#define DRM_IOCTL_NOUVEAU_NVIF _IOC(_IOC_READ | _IOC_WRITE, DRM_IOCTL_BASE, \ +#define DRM_IOCTL_NOUVEAU_NVIF _IOC(_IOC_WRITE, DRM_IOCTL_BASE, \ DRM_COMMAND_BASE + DRM_NOUVEAU_NVIF, 0) long @@ -1300,7 +1300,7 @@ nouveau_drm_ioctl(struct file *file, unsigned int cmd, unsigned long arg) return ret; } - if ((cmd & ~IOCSIZE_MASK) == DRM_IOCTL_NOUVEAU_NVIF) + if ((cmd & ~(IOCSIZE_MASK | IOC_OUT) == DRM_IOCTL_NOUVEAU_NVIF) ret = nouveau_abi16_ioctl(filp, (void __user *)arg, _IOC_SIZE(cmd)); else ret = drm_ioctl(file, cmd, arg); Arnd ----- (full quote below, as the reply was off-list)> 1,129c1,20 > < 10221 ioctl(4, DRM_IOCTL_VERSION, 0x5564c66a4e50) = 0 > < 10221 ioctl(4, DRM_IOCTL_VERSION, 0x5564c66a4e50) = 0 > < 10221 ioctl(4, DRM_IOCTL_ETNAVIV_GET_PARAM or > DRM_IOCTL_EXYNOS_GEM_CREATE or DRM_IOCTL_IVPU_GET_PARAM or > DRM_IOCTL_LIMA_GET_PARAM or DRM_IOCTL_NOUVEAU_GETPARAM or > DRM_IOCTL_OMAP_GET_PARAM or DRM_IOCTL_PVR_DEV_QUERY or > DRM_IOCTL_QAIC_MANAGE or DRM_IOCTL_TEGRA_GEM_CREATE, 0x7ffc5a254e20) > 0 > < 10221 ioctl(4, DRM_IOCTL_ETNAVIV_GET_PARAM or > DRM_IOCTL_EXYNOS_GEM_CREATE or DRM_IOCTL_IVPU_GET_PARAM or > DRM_IOCTL_LIMA_GET_PARAM or DRM_IOCTL_NOUVEAU_GETPARAM or > DRM_IOCTL_OMAP_GET_PARAM or DRM_IOCTL_PVR_DEV_QUERY or > DRM_IOCTL_QAIC_MANAGE or DRM_IOCTL_TEGRA_GEM_CREATE, 0x7ffc5a254e20) > 0 > < 10221 ioctl(5, DRM_IOCTL_VERSION, 0x5564c66a4e50) = 0 > < 10221 ioctl(5, DRM_IOCTL_VERSION, 0x5564c66a4e50) = 0 > < 10221 ioctl(5, DRM_IOCTL_ETNAVIV_GET_PARAM or > DRM_IOCTL_EXYNOS_GEM_CREATE or DRM_IOCTL_IVPU_GET_PARAM or > DRM_IOCTL_LIMA_GET_PARAM or DRM_IOCTL_NOUVEAU_GETPARAM or > DRM_IOCTL_OMAP_GET_PARAM or DRM_IOCTL_PVR_DEV_QUERY or > DRM_IOCTL_QAIC_MANAGE or DRM_IOCTL_TEGRA_GEM_CREATE, 0x7ffc5a254340) > 0 > < 10221 ioctl(5, DRM_IOCTL_ETNAVIV_GET_PARAM or > DRM_IOCTL_EXYNOS_GEM_CREATE or DRM_IOCTL_IVPU_GET_PARAM or > DRM_IOCTL_LIMA_GET_PARAM or DRM_IOCTL_NOUVEAU_GETPARAM or > DRM_IOCTL_OMAP_GET_PARAM or DRM_IOCTL_PVR_DEV_QUERY or > DRM_IOCTL_QAIC_MANAGE or DRM_IOCTL_TEGRA_GEM_CREATE, 0x7ffc5a254340) > 0 > < 10221 ioctl(6, DRM_IOCTL_VERSION, 0x5564c66a4e50) = 0 > < 10221 ioctl(6, DRM_IOCTL_VERSION, 0x5564c66a4e50) = 0 > < 10221 ioctl(6, _IOC(_IOC_WRITE, 0x64, 0x47, 0x48), 0x7ffc5a254340) = 0 > < 10221 ioctl(6, _IOC(_IOC_READ|_IOC_WRITE, 0x64, 0x47, 0x88), > 0x7ffc5a254390) = 0 > < 10221 ioctl(6, DRM_IOCTL_ETNAVIV_GET_PARAM or > DRM_IOCTL_EXYNOS_GEM_CREATE or DRM_IOCTL_IVPU_GET_PARAM or > DRM_IOCTL_LIMA_GET_PARAM or DRM_IOCTL_NOUVEAU_GETPARAM or > DRM_IOCTL_OMAP_GET_PARAM or DRM_IOCTL_PVR_DEV_QUERY or > DRM_IOCTL_QAIC_MANAGE or DRM_IOCTL_TEGRA_GEM_CREATE, 0x7ffc5a254330) > 0 > < 10221 ioctl(6, DRM_IOCTL_ETNAVIV_GET_PARAM or > DRM_IOCTL_EXYNOS_GEM_CREATE or DRM_IOCTL_IVPU_GET_PARAM or > DRM_IOCTL_LIMA_GET_PARAM or DRM_IOCTL_NOUVEAU_GETPARAM or > DRM_IOCTL_OMAP_GET_PARAM or DRM_IOCTL_PVR_DEV_QUERY or > DRM_IOCTL_QAIC_MANAGE or DRM_IOCTL_TEGRA_GEM_CREATE, 0x7ffc5a254330) > 0 > < 10221 ioctl(6, DRM_IOCTL_NOUVEAU_CHANNEL_ALLOC, 0x7ffc5a2541b0) = 0 > < 10221 ioctl(6, DRM_IOCTL_NOUVEAU_GEM_PUSHBUF, 0x7ffc5a2541c0) = 0 > < 10221 ioctl(6, DRM_IOCTL_NOUVEAU_GEM_NEW, 0x7ffc5a254110) = 0 > < 10221 ioctl(6, DRM_IOCTL_NOUVEAU_GEM_NEW, 0x7ffc5a254110) = 0 > < 10221 ioctl(6, DRM_IOCTL_NOUVEAU_GEM_NEW, 0x7ffc5a254110) = 0 > < 10221 ioctl(6, DRM_IOCTL_NOUVEAU_GEM_NEW, 0x7ffc5a254110) = 0 > < 10221 ioctl(6, DRM_IOCTL_ETNAVIV_GET_PARAM or > DRM_IOCTL_EXYNOS_GEM_CREATE or DRM_IOCTL_IVPU_GET_PARAM or > DRM_IOCTL_LIMA_GET_PARAM or DRM_IOCTL_NOUVEAU_GETPARAM or > DRM_IOCTL_OMAP_GET_PARAM or DRM_IOCTL_PVR_DEV_QUERY or > DRM_IOCTL_QAIC_MANAGE or DRM_IOCTL_TEGRA_GEM_CREATE, 0x7ffc5a254210) > 0 > < 10221 ioctl(6, DRM_IOCTL_NOUVEAU_GEM_NEW, 0x7ffc5a254260) = 0 > < 10221 ioctl(6, _IOC(_IOC_WRITE, 0x64, 0x47, 0x38), 0x7ffc5a254240) = 0 > < 10221 ioctl(6, DRM_IOCTL_NOUVEAU_GEM_CPU_PREP, 0x7ffc5a254250) = 0 > < 10221 ioctl(6, _IOC(_IOC_READ|_IOC_WRITE, 0x64, 0x47, 0xa0), > 0x7ffc5a254200) = 0 > < 10221 ioctl(6, _IOC(_IOC_WRITE, 0x64, 0x47, 0x38), 0x7ffc5a254240) = 0 > < 10221 ioctl(6, _IOC(_IOC_READ|_IOC_WRITE, 0x64, 0x47, 0xa0), > 0x7ffc5a254200) = 0 > < 10221 ioctl(6, _IOC(_IOC_WRITE, 0x64, 0x47, 0x38), 0x7ffc5a254240) = 0 > < 10221 ioctl(6, _IOC(_IOC_WRITE, 0x64, 0x47, 0x38), 0x7ffc5a254240) = 0 > < 10221 ioctl(6, _IOC(_IOC_READ|_IOC_WRITE, 0x64, 0x47, 0xa0), > 0x7ffc5a254200) = 0 > < 10221 ioctl(6, _IOC(_IOC_WRITE, 0x64, 0x47, 0x38), 0x7ffc5a254240) = 0 > < 10221 ioctl(6, DRM_IOCTL_NOUVEAU_GEM_NEW, 0x7ffc5a2541e0) = 0 > < 10221 ioctl(6, DRM_IOCTL_NOUVEAU_GEM_NEW, 0x7ffc5a254260) = 0 > < 10221 ioctl(6, DRM_IOCTL_ETNAVIV_GET_PARAM or > DRM_IOCTL_EXYNOS_GEM_CREATE or DRM_IOCTL_IVPU_GET_PARAM or > DRM_IOCTL_LIMA_GET_PARAM or DRM_IOCTL_NOUVEAU_GETPARAM or > DRM_IOCTL_OMAP_GET_PARAM or DRM_IOCTL_PVR_DEV_QUERY or > DRM_IOCTL_QAIC_MANAGE or DRM_IOCTL_TEGRA_GEM_CREATE, 0x7ffc5a2542a0) > 0 > < 10221 ioctl(6, DRM_IOCTL_NOUVEAU_GEM_NEW, 0x7ffc5a254260) = 0 > < 10221 ioctl(6, DRM_IOCTL_NOUVEAU_GEM_NEW, 0x7ffc5a254260) = 0 > < 10221 ioctl(6, DRM_IOCTL_NOUVEAU_GEM_NEW, 0x7ffc5a254260) = 0 > < 10221 ioctl(6, _IOC(_IOC_READ|_IOC_WRITE, 0x64, 0x47, 0xa0), > 0x7ffc5a254200) = 0 > < 10221 ioctl(6, _IOC(_IOC_WRITE, 0x64, 0x47, 0x38), 0x7ffc5a254240) = 0 > < 10221 ioctl(6, DRM_IOCTL_NOUVEAU_GEM_PUSHBUF, 0x7ffc5a254230) = 0 > < 10221 ioctl(6, DRM_IOCTL_GET_CAP, 0x7ffc5a254270) = 0 > < 10221 ioctl(6, DRM_IOCTL_NOUVEAU_GEM_PUSHBUF, 0x7ffc5a2549f0) = 0 > < 10221 ioctl(6, DRM_IOCTL_NOUVEAU_GEM_NEW, 0x7ffc5a254940) = 0 > < 10221 ioctl(6, DRM_IOCTL_NOUVEAU_GEM_NEW, 0x7ffc5a254940) = 0 > < 10221 ioctl(6, DRM_IOCTL_NOUVEAU_GEM_NEW, 0x7ffc5a254940) = 0 > < 10221 ioctl(6, DRM_IOCTL_NOUVEAU_GEM_NEW, 0x7ffc5a254940) = 0 > < 10221 ioctl(6, DRM_IOCTL_NOUVEAU_GEM_CPU_PREP, 0x7ffc5a2548f0) = 0 > < 10221 ioctl(6, DRM_IOCTL_NOUVEAU_GEM_NEW, 0x7ffc5a254a10) = 0 > < 10221 ioctl(6, DRM_IOCTL_NOUVEAU_GEM_NEW, 0x7ffc5a2546c0) = 0 > < 10221 ioctl(6, DRM_IOCTL_PRIME_HANDLE_TO_FD, 0x7ffc5a2547a8) = 0 > < 10221 ioctl(6, DRM_IOCTL_PRIME_HANDLE_TO_FD, 0x7ffc5a2547a8) = 0 > < 10221 ioctl(6, DRM_IOCTL_PRIME_HANDLE_TO_FD, 0x7ffc5a2547a8) = 0 > < 10221 ioctl(6, DRM_IOCTL_PRIME_HANDLE_TO_FD, 0x7ffc5a2547a8) = 0 > < 10221 ioctl(6, DRM_IOCTL_PRIME_HANDLE_TO_FD, 0x7ffc5a2547a8) = 0 > < 10221 ioctl(6, DRM_IOCTL_NOUVEAU_GEM_PUSHBUF, 0x7ffc5a254a10) = 0 > < 10221 ioctl(6, DRM_IOCTL_NOUVEAU_GEM_NEW, 0x7ffc5a254960) = 0 > < 10221 ioctl(6, DRM_IOCTL_NOUVEAU_GEM_NEW, 0x7ffc5a254960) = 0 > < 10221 ioctl(6, DRM_IOCTL_NOUVEAU_GEM_NEW, 0x7ffc5a254960) = 0 > < 10221 ioctl(6, DRM_IOCTL_NOUVEAU_GEM_NEW, 0x7ffc5a254960) = 0 > < 10221 ioctl(6, DRM_IOCTL_NOUVEAU_GEM_CPU_PREP, 0x7ffc5a254a40) = 0 > < 10221 ioctl(6, DRM_IOCTL_NOUVEAU_GEM_NEW, 0x7ffc5a254a30) = 0 > < 10221 ioctl(6, DRM_IOCTL_NOUVEAU_GEM_PUSHBUF, 0x7ffc5a254d00) = 0 > < 10221 ioctl(6, DRM_IOCTL_GEM_CLOSE, 0x7ffc5a254c70) = 0 > < 10221 ioctl(6, DRM_IOCTL_NOUVEAU_GEM_NEW, 0x7ffc5a254ba0) = 0 > < 10221 ioctl(6, DRM_IOCTL_NOUVEAU_GEM_PUSHBUF, 0x7ffc5a254c80) = 0 > < 10221 ioctl(6, DRM_IOCTL_GEM_CLOSE, 0x7ffc5a254cc0) = 0 > < 10221 ioctl(6, DRM_IOCTL_GEM_CLOSE, 0x7ffc5a254cc0) = 0 > < 10221 ioctl(6, DRM_IOCTL_GEM_CLOSE, 0x7ffc5a254d00) = 0 > < 10221 ioctl(6, DRM_IOCTL_GEM_CLOSE, 0x7ffc5a254d00) = 0 > < 10221 ioctl(6, DRM_IOCTL_GEM_CLOSE, 0x7ffc5a254d00) = 0 > < 10221 ioctl(6, DRM_IOCTL_GEM_CLOSE, 0x7ffc5a254d00) = 0 > < 10221 ioctl(6, DRM_IOCTL_NOUVEAU_GEM_NEW, 0x7ffc5a254730) = 0 > < 10221 ioctl(6, DRM_IOCTL_PRIME_HANDLE_TO_FD, 0x7ffc5a254818) = 0 > < 10221 ioctl(6, DRM_IOCTL_PRIME_HANDLE_TO_FD, 0x7ffc5a254818) = 0 > < 10221 ioctl(6, DRM_IOCTL_PRIME_HANDLE_TO_FD, 0x7ffc5a254818) = 0 > < 10221 ioctl(6, DRM_IOCTL_PRIME_HANDLE_TO_FD, 0x7ffc5a254818) = 0 > < 10221 ioctl(6, DRM_IOCTL_PRIME_HANDLE_TO_FD, 0x7ffc5a254818) = 0 > < 10221 ioctl(6, DRM_IOCTL_NOUVEAU_GEM_PUSHBUF, 0x7ffc5a254a30) = 0 > < 10221 ioctl(6, DRM_IOCTL_NOUVEAU_GEM_NEW, 0x7ffc5a254980) = 0 > < 10221 ioctl(6, DRM_IOCTL_NOUVEAU_GEM_NEW, 0x7ffc5a254980) = 0 > < 10221 ioctl(6, DRM_IOCTL_NOUVEAU_GEM_NEW, 0x7ffc5a254980) = 0 > < 10221 ioctl(6, DRM_IOCTL_NOUVEAU_GEM_NEW, 0x7ffc5a254980) = 0 > < 10221 ioctl(6, DRM_IOCTL_NOUVEAU_GEM_CPU_PREP, 0x7ffc5a254a60) = 0 > < 10221 ioctl(6, DRM_IOCTL_NOUVEAU_GEM_NEW, 0x7ffc5a254a50) = 0 > < 10221 ioctl(6, DRM_IOCTL_NOUVEAU_GEM_PUSHBUF, 0x7ffc5a254d00) = 0 > < 10221 ioctl(6, DRM_IOCTL_GEM_CLOSE, 0x7ffc5a254c70) = 0 > < 10221 ioctl(6, DRM_IOCTL_NOUVEAU_GEM_NEW, 0x7ffc5a254ba0) = 0 > < 10221 ioctl(6, DRM_IOCTL_NOUVEAU_GEM_PUSHBUF, 0x7ffc5a254c80) = 0 > < 10221 ioctl(6, DRM_IOCTL_GEM_CLOSE, 0x7ffc5a254cc0) = 0 > < 10221 ioctl(6, DRM_IOCTL_GEM_CLOSE, 0x7ffc5a254cc0) = 0 > < 10221 ioctl(6, DRM_IOCTL_GEM_CLOSE, 0x7ffc5a254d00) = 0 > < 10221 ioctl(6, DRM_IOCTL_GEM_CLOSE, 0x7ffc5a254d00) = 0 > < 10221 ioctl(6, DRM_IOCTL_GEM_CLOSE, 0x7ffc5a254d00) = 0 > < 10221 ioctl(6, DRM_IOCTL_GEM_CLOSE, 0x7ffc5a254d00) = 0 > < 10221 ioctl(6, DRM_IOCTL_NOUVEAU_GEM_NEW, 0x7ffc5a254730) = 0 > < 10221 ioctl(6, DRM_IOCTL_PRIME_HANDLE_TO_FD, 0x7ffc5a254818) = 0 > < 10221 ioctl(6, DRM_IOCTL_PRIME_HANDLE_TO_FD, 0x7ffc5a254818) = 0 > < 10221 ioctl(6, DRM_IOCTL_PRIME_HANDLE_TO_FD, 0x7ffc5a254818) = 0 > < 10221 ioctl(6, DRM_IOCTL_PRIME_HANDLE_TO_FD, 0x7ffc5a254818) = 0 > < 10221 ioctl(6, DRM_IOCTL_PRIME_HANDLE_TO_FD, 0x7ffc5a254818) = 0 > < 10221 ioctl(6, DRM_IOCTL_NOUVEAU_GEM_PUSHBUF, 0x7ffc5a254f70) = 0 > < 10221 ioctl(6, DRM_IOCTL_GEM_CLOSE, 0x7ffc5a254ee0) = 0 > < 10221 ioctl(6, DRM_IOCTL_NOUVEAU_GEM_NEW, 0x7ffc5a254e10) = 0 > < 10221 ioctl(6, DRM_IOCTL_NOUVEAU_GEM_PUSHBUF, 0x7ffc5a254ef0) = 0 > < 10221 ioctl(6, DRM_IOCTL_GEM_CLOSE, 0x7ffc5a254f30) = 0 > < 10221 ioctl(6, DRM_IOCTL_GEM_CLOSE, 0x7ffc5a254f30) = 0 > < 10221 ioctl(6, DRM_IOCTL_GEM_CLOSE, 0x7ffc5a254f70) = 0 > < 10221 ioctl(6, DRM_IOCTL_GEM_CLOSE, 0x7ffc5a254f70) = 0 > < 10221 ioctl(6, DRM_IOCTL_GEM_CLOSE, 0x7ffc5a254f70) = 0 > < 10221 ioctl(6, DRM_IOCTL_GEM_CLOSE, 0x7ffc5a254f70) = 0 > < 10221 ioctl(6, DRM_IOCTL_GEM_CLOSE, 0x7ffc5a2550b0) = 0 > < 10221 ioctl(6, DRM_IOCTL_GEM_CLOSE, 0x7ffc5a2550b0) = 0 > < 10221 ioctl(6, DRM_IOCTL_GEM_CLOSE, 0x7ffc5a2550b0) = 0 > < 10221 ioctl(6, DRM_IOCTL_GEM_CLOSE, 0x7ffc5a2550b0) = 0 > < 10221 ioctl(6, DRM_IOCTL_GEM_CLOSE, 0x7ffc5a2550b0) = 0 > < 10221 ioctl(6, DRM_IOCTL_GEM_CLOSE, 0x7ffc5a2550b0) = 0 > < 10221 ioctl(7, DRM_IOCTL_XE_EXEC_QUEUE_DESTROY, 0x7ffc5a2550e0) = -1 > EBADF (Bad file descriptor) > < 10221 ioctl(7, DRM_IOCTL_XE_EXEC_QUEUE_DESTROY, 0x7ffc5a2550e0) = -1 > EBADF (Bad file descriptor) > < 10221 ioctl(7, DRM_IOCTL_XE_EXEC_QUEUE_DESTROY, 0x7ffc5a2550e0) = -1 > EBADF (Bad file descriptor) > < 10221 ioctl(7, DRM_IOCTL_XE_EXEC_QUEUE_DESTROY, 0x7ffc5a2550e0) = -1 > EBADF (Bad file descriptor) > < 10221 ioctl(7, DRM_IOCTL_XE_EXEC_QUEUE_DESTROY, 0x7ffc5a2550e0) = -1 > EBADF (Bad file descriptor) > < 10221 ioctl(7, DRM_IOCTL_XE_EXEC_QUEUE_DESTROY, 0x7ffc5a2550e0) = -1 > EBADF (Bad file descriptor) > < 10221 ioctl(6, DRM_IOCTL_GEM_CLOSE, 0x7ffc5a255060) = 0 > < 10221 ioctl(6, DRM_IOCTL_GEM_CLOSE, 0x7ffc5a255060) = 0 > < 10221 ioctl(6, DRM_IOCTL_GEM_CLOSE, 0x7ffc5a255060) = 0 > < 10221 ioctl(6, DRM_IOCTL_GEM_CLOSE, 0x7ffc5a255060) = 0 > < 10221 ioctl(6, DRM_IOCTL_NOUVEAU_CHANNEL_FREE, 0x7ffc5a2550b8) = 0 > < 10222 +++ exited with 0 +++ > < 10221 +++ exited with 0 +++ > --- >> 5236 ioctl(4, UDMABUF_CREATE, 0x7fffd017e990) = 6 >> 5236 ioctl(6, DMA_BUF_IOCTL_EXPORT_SYNC_FILE, 0x7fffd017ea00) = 0 >> 5252 +++ exited with 0 +++ >> 5251 +++ exited with 0 +++ >> 5249 +++ exited with 0 +++ >> 5248 +++ exited with 0 +++ >> 5250 +++ exited with 0 +++ >> 5247 +++ exited with 0 +++ >> 5246 +++ exited with 0 +++ >> 5245 +++ exited with 0 +++ >> 5237 +++ exited with 0 +++ >> 5238 +++ exited with 0 +++ >> 5239 +++ exited with 0 +++ >> 5240 +++ exited with 0 +++ >> 5241 +++ exited with 0 +++ >> 5242 +++ exited with 0 +++ >> 5243 +++ exited with 0 +++ >> 5244 +++ exited with 0 +++ >> 5253 +++ exited with 0 +++ >> 5236 +++ exited with 0 +++ > > On Mon, Jul 21, 2025 at 8:38?AM Arnd Bergmann <arnd at arndb.de> wrote: >> >> On Mon, Jul 21, 2025, at 14:22, Satadru Pramanik wrote: >> > Hello all, >> > >> > I suspect this commit in 6.16-rc7 has broken acceleration with Mesa's >> > nouveau drivers on my machine. >> > >> > glxinfo -B reports that I'm using llvmpipe. >> >> Thanks for the report! Can you run the failing command with >> 'strace -f -o logfile.txt -e trace=ioctl ...' to see which command >> it tries? >> >> Either I made a stupid mistake in my patch and don't catch the >> intended command any more, or the command that gets sent is actually >> different from the one that the kernel expects. >> >> Arnd > > Attachments: > * glxinfo_working.txt > * glxinfo_broken.txt
Satadru Pramanik
2025-Jul-21 15:23 UTC
[PATCH] drm/nouveau: check ioctl command codes better
Unfortunately, that doesn't seem to fix the issue.
glxinfo -B still shows llvmpipe being used, just like on stock 6.16-rc7:
glxinfo -B
name of display: :0
display: :0 screen: 0
direct rendering: Yes
Extended renderer info (GLX_MESA_query_renderer):
Vendor: Mesa (0xffffffff)
Device: llvmpipe (LLVM 19.1.7, 256 bits) (0xffffffff)
Version: 25.2.0
Accelerated: no
Video memory: 15388MB
Unified memory: yes
Preferred profile: core (0x1)
Max core profile version: 4.5
Max compat profile version: 4.5
Max GLES1 profile version: 1.1
Max GLES[23] profile version: 3.2
Memory info (GL_ATI_meminfo):
VBO free memory - total: 0 MB, largest block: 0 MB
VBO free aux. memory - total: 12389 MB, largest block: 12389 MB
Texture free memory - total: 0 MB, largest block: 0 MB
Texture free aux. memory - total: 12389 MB, largest block: 12389 MB
Renderbuffer free memory - total: 0 MB, largest block: 0 MB
Renderbuffer free aux. memory - total: 12389 MB, largest block: 12389 MB
Memory info (GL_NVX_gpu_memory_info):
Dedicated video memory: 0 MB
Total available memory: 15388 MB
Currently available dedicated video memory: 0 MB
OpenGL vendor string: Mesa
OpenGL renderer string: llvmpipe (LLVM 19.1.7, 256 bits)
OpenGL core profile version string: 4.5 (Core Profile) Mesa
25.2.0~rc1+git2507191056.03f67b52319~p~mesarc0
OpenGL core profile shading language version string: 4.50
OpenGL core profile context flags: (none)
OpenGL core profile profile mask: core profile
OpenGL version string: 4.5 (Compatibility Profile) Mesa
25.2.0~rc1+git2507191056.03f67b52319~p~mesarc0
OpenGL shading language version string: 4.50
OpenGL context flags: (none)
OpenGL profile mask: compatibility profile
OpenGL ES profile version string: OpenGL ES 3.2 Mesa
25.2.0~rc1+git2507191056.03f67b52319~p~mesarc0
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.20
I ran `strace -f -o glxinfo_after_new_patch.txt -e trace=ioctl -X raw
glxinfo -B` to get the output attached.
I also ran `strace -f -o glxinfo_after_new_patch_no_X.txt -e
trace=ioctl glxinfo -B` and that output is also attached.
(This latter output is substantially the same as the output from
running this on stock 6.16-rc7.)
I'm happy to test any other patches.
Best,
Satadru
On Mon, Jul 21, 2025 at 9:50?AM Arnd Bergmann <arnd at arndb.de>
wrote:>
> On Mon, Jul 21, 2025, at 14:50, Satadru Pramanik wrote:
> > Sure!
> >
> > Here you go.
> >
> > The command I ran was 'glxinfo -B'
> >
> > diff glxinfo_working.txt glxinfo_broken.txt
>
> Unfortunately, the 'diff' output makes this a little harder,
> try 'diff -u' next time. I suppose passing "-X raw" to
strace
> would also help since the ioctl commands are heavily overloaded.
>
> > < 10221 ioctl(6, _IOC(_IOC_WRITE, 0x64, 0x47, 0x48),
0x7ffc5a254340) = 0
> > < 10221 ioctl(6, _IOC(_IOC_READ|_IOC_WRITE, 0x64, 0x47, 0x88),
> > 0x7ffc5a254390) = 0
>
> I think this is where it goes wrong first: (0x64, 0x47)
> is the correct type and number for NVIF, but after my patch
> I only accept the _IOC_READ|_IOC_WRITE caller but not _IOC_WRITE.
>
> > < 10221 ioctl(6, _IOC(_IOC_WRITE, 0x64, 0x47, 0x38),
0x7ffc5a254240) = 0
> > < 10221 ioctl(6, DRM_IOCTL_NOUVEAU_GEM_CPU_PREP, 0x7ffc5a254250) =
0
> > < 10221 ioctl(6, _IOC(_IOC_READ|_IOC_WRITE, 0x64, 0x47, 0xa0),
> > 0x7ffc5a254200) = 0
> > < 10221 ioctl(6, _IOC(_IOC_WRITE, 0x64, 0x47, 0x38),
0x7ffc5a254240) = 0
> > < 10221 ioctl(6, _IOC(_IOC_READ|_IOC_WRITE, 0x64, 0x47, 0xa0),
> > 0x7ffc5a254200) = 0
> > < 10221 ioctl(6, _IOC(_IOC_WRITE, 0x64, 0x47, 0x38),
0x7ffc5a254240) = 0
> > < 10221 ioctl(6, _IOC(_IOC_WRITE, 0x64, 0x47, 0x38),
0x7ffc5a254240) = 0
> > < 10221 ioctl(6, _IOC(_IOC_READ|_IOC_WRITE, 0x64, 0x47, 0xa0),
> > 0x7ffc5a254200) = 0
> > < 10221 ioctl(6, _IOC(_IOC_WRITE, 0x64, 0x47, 0x38),
0x7ffc5a254240) = 0
>
> > < 10221 ioctl(6, _IOC(_IOC_READ|_IOC_WRITE, 0x64, 0x47, 0xa0),
> > 0x7ffc5a254200) = 0
> > < 10221 ioctl(6, _IOC(_IOC_WRITE, 0x64, 0x47, 0x38),
0x7ffc5a254240) = 0
>
> More of the same
>
> > < 10221 ioctl(7, DRM_IOCTL_XE_EXEC_QUEUE_DESTROY, 0x7ffc5a2550e0) =
-1
> > EBADF (Bad file descriptor)
>
> This one manages to actually overload a command from another
> driver, but DRM_IOCTL_XE_EXEC_QUEUE_DESTROY happens to also work
> out to _IOC(_IOC_WRITE, 0x64, 0x47, 0x18).
>
> Obviously these commands still need to be supported, so we need
> to (at least) allow both _IOC_READ and _IOC_READ|_IOC_WRITE versions
> of it.
>
> Maintainers, do you prefer to just revert back to the original
> version, or should we do another round that allows exactly the
> necessary commands?
>
> It does get pretty ugly at that point, and is not that far off
> the origial version, with only really the _IOC_TYPE check remaining:
>
> diff --git a/drivers/gpu/drm/nouveau/nouveau_drm.c
b/drivers/gpu/drm/nouveau/nouveau_drm.c
> index 7bb64fcdd497..8bc61dfe7d9d 100644
> --- a/drivers/gpu/drm/nouveau/nouveau_drm.c
> +++ b/drivers/gpu/drm/nouveau/nouveau_drm.c
> @@ -1284,7 +1284,7 @@ nouveau_ioctls[] = {
> DRM_IOCTL_DEF_DRV(NOUVEAU_EXEC, nouveau_exec_ioctl_exec,
DRM_RENDER_ALLOW),
> };
>
> -#define DRM_IOCTL_NOUVEAU_NVIF _IOC(_IOC_READ | _IOC_WRITE,
DRM_IOCTL_BASE, \
> +#define DRM_IOCTL_NOUVEAU_NVIF _IOC(_IOC_WRITE, DRM_IOCTL_BASE, \
> DRM_COMMAND_BASE + DRM_NOUVEAU_NVIF, 0)
>
> long
> @@ -1300,7 +1300,7 @@ nouveau_drm_ioctl(struct file *file, unsigned int
cmd, unsigned long arg)
> return ret;
> }
>
> - if ((cmd & ~IOCSIZE_MASK) == DRM_IOCTL_NOUVEAU_NVIF)
> + if ((cmd & ~(IOCSIZE_MASK | IOC_OUT) == DRM_IOCTL_NOUVEAU_NVIF)
> ret = nouveau_abi16_ioctl(filp, (void __user *)arg,
_IOC_SIZE(cmd));
> else
> ret = drm_ioctl(file, cmd, arg);
>
> Arnd
>
> -----
> (full quote below, as the reply was off-list)
>
> > 1,129c1,20
> > < 10221 ioctl(4, DRM_IOCTL_VERSION, 0x5564c66a4e50) = 0
> > < 10221 ioctl(4, DRM_IOCTL_VERSION, 0x5564c66a4e50) = 0
> > < 10221 ioctl(4, DRM_IOCTL_ETNAVIV_GET_PARAM or
> > DRM_IOCTL_EXYNOS_GEM_CREATE or DRM_IOCTL_IVPU_GET_PARAM or
> > DRM_IOCTL_LIMA_GET_PARAM or DRM_IOCTL_NOUVEAU_GETPARAM or
> > DRM_IOCTL_OMAP_GET_PARAM or DRM_IOCTL_PVR_DEV_QUERY or
> > DRM_IOCTL_QAIC_MANAGE or DRM_IOCTL_TEGRA_GEM_CREATE, 0x7ffc5a254e20)
> > 0
> > < 10221 ioctl(4, DRM_IOCTL_ETNAVIV_GET_PARAM or
> > DRM_IOCTL_EXYNOS_GEM_CREATE or DRM_IOCTL_IVPU_GET_PARAM or
> > DRM_IOCTL_LIMA_GET_PARAM or DRM_IOCTL_NOUVEAU_GETPARAM or
> > DRM_IOCTL_OMAP_GET_PARAM or DRM_IOCTL_PVR_DEV_QUERY or
> > DRM_IOCTL_QAIC_MANAGE or DRM_IOCTL_TEGRA_GEM_CREATE, 0x7ffc5a254e20)
> > 0
> > < 10221 ioctl(5, DRM_IOCTL_VERSION, 0x5564c66a4e50) = 0
> > < 10221 ioctl(5, DRM_IOCTL_VERSION, 0x5564c66a4e50) = 0
> > < 10221 ioctl(5, DRM_IOCTL_ETNAVIV_GET_PARAM or
> > DRM_IOCTL_EXYNOS_GEM_CREATE or DRM_IOCTL_IVPU_GET_PARAM or
> > DRM_IOCTL_LIMA_GET_PARAM or DRM_IOCTL_NOUVEAU_GETPARAM or
> > DRM_IOCTL_OMAP_GET_PARAM or DRM_IOCTL_PVR_DEV_QUERY or
> > DRM_IOCTL_QAIC_MANAGE or DRM_IOCTL_TEGRA_GEM_CREATE, 0x7ffc5a254340)
> > 0
> > < 10221 ioctl(5, DRM_IOCTL_ETNAVIV_GET_PARAM or
> > DRM_IOCTL_EXYNOS_GEM_CREATE or DRM_IOCTL_IVPU_GET_PARAM or
> > DRM_IOCTL_LIMA_GET_PARAM or DRM_IOCTL_NOUVEAU_GETPARAM or
> > DRM_IOCTL_OMAP_GET_PARAM or DRM_IOCTL_PVR_DEV_QUERY or
> > DRM_IOCTL_QAIC_MANAGE or DRM_IOCTL_TEGRA_GEM_CREATE, 0x7ffc5a254340)
> > 0
> > < 10221 ioctl(6, DRM_IOCTL_VERSION, 0x5564c66a4e50) = 0
> > < 10221 ioctl(6, DRM_IOCTL_VERSION, 0x5564c66a4e50) = 0
> > < 10221 ioctl(6, _IOC(_IOC_WRITE, 0x64, 0x47, 0x48),
0x7ffc5a254340) = 0
> > < 10221 ioctl(6, _IOC(_IOC_READ|_IOC_WRITE, 0x64, 0x47, 0x88),
> > 0x7ffc5a254390) = 0
> > < 10221 ioctl(6, DRM_IOCTL_ETNAVIV_GET_PARAM or
> > DRM_IOCTL_EXYNOS_GEM_CREATE or DRM_IOCTL_IVPU_GET_PARAM or
> > DRM_IOCTL_LIMA_GET_PARAM or DRM_IOCTL_NOUVEAU_GETPARAM or
> > DRM_IOCTL_OMAP_GET_PARAM or DRM_IOCTL_PVR_DEV_QUERY or
> > DRM_IOCTL_QAIC_MANAGE or DRM_IOCTL_TEGRA_GEM_CREATE, 0x7ffc5a254330)
> > 0
> > < 10221 ioctl(6, DRM_IOCTL_ETNAVIV_GET_PARAM or
> > DRM_IOCTL_EXYNOS_GEM_CREATE or DRM_IOCTL_IVPU_GET_PARAM or
> > DRM_IOCTL_LIMA_GET_PARAM or DRM_IOCTL_NOUVEAU_GETPARAM or
> > DRM_IOCTL_OMAP_GET_PARAM or DRM_IOCTL_PVR_DEV_QUERY or
> > DRM_IOCTL_QAIC_MANAGE or DRM_IOCTL_TEGRA_GEM_CREATE, 0x7ffc5a254330)
> > 0
> > < 10221 ioctl(6, DRM_IOCTL_NOUVEAU_CHANNEL_ALLOC, 0x7ffc5a2541b0) =
0
> > < 10221 ioctl(6, DRM_IOCTL_NOUVEAU_GEM_PUSHBUF, 0x7ffc5a2541c0) = 0
> > < 10221 ioctl(6, DRM_IOCTL_NOUVEAU_GEM_NEW, 0x7ffc5a254110) = 0
> > < 10221 ioctl(6, DRM_IOCTL_NOUVEAU_GEM_NEW, 0x7ffc5a254110) = 0
> > < 10221 ioctl(6, DRM_IOCTL_NOUVEAU_GEM_NEW, 0x7ffc5a254110) = 0
> > < 10221 ioctl(6, DRM_IOCTL_NOUVEAU_GEM_NEW, 0x7ffc5a254110) = 0
> > < 10221 ioctl(6, DRM_IOCTL_ETNAVIV_GET_PARAM or
> > DRM_IOCTL_EXYNOS_GEM_CREATE or DRM_IOCTL_IVPU_GET_PARAM or
> > DRM_IOCTL_LIMA_GET_PARAM or DRM_IOCTL_NOUVEAU_GETPARAM or
> > DRM_IOCTL_OMAP_GET_PARAM or DRM_IOCTL_PVR_DEV_QUERY or
> > DRM_IOCTL_QAIC_MANAGE or DRM_IOCTL_TEGRA_GEM_CREATE, 0x7ffc5a254210)
> > 0
> > < 10221 ioctl(6, DRM_IOCTL_NOUVEAU_GEM_NEW, 0x7ffc5a254260) = 0
> > < 10221 ioctl(6, _IOC(_IOC_WRITE, 0x64, 0x47, 0x38),
0x7ffc5a254240) = 0
> > < 10221 ioctl(6, DRM_IOCTL_NOUVEAU_GEM_CPU_PREP, 0x7ffc5a254250) =
0
> > < 10221 ioctl(6, _IOC(_IOC_READ|_IOC_WRITE, 0x64, 0x47, 0xa0),
> > 0x7ffc5a254200) = 0
> > < 10221 ioctl(6, _IOC(_IOC_WRITE, 0x64, 0x47, 0x38),
0x7ffc5a254240) = 0
> > < 10221 ioctl(6, _IOC(_IOC_READ|_IOC_WRITE, 0x64, 0x47, 0xa0),
> > 0x7ffc5a254200) = 0
> > < 10221 ioctl(6, _IOC(_IOC_WRITE, 0x64, 0x47, 0x38),
0x7ffc5a254240) = 0
> > < 10221 ioctl(6, _IOC(_IOC_WRITE, 0x64, 0x47, 0x38),
0x7ffc5a254240) = 0
> > < 10221 ioctl(6, _IOC(_IOC_READ|_IOC_WRITE, 0x64, 0x47, 0xa0),
> > 0x7ffc5a254200) = 0
> > < 10221 ioctl(6, _IOC(_IOC_WRITE, 0x64, 0x47, 0x38),
0x7ffc5a254240) = 0
> > < 10221 ioctl(6, DRM_IOCTL_NOUVEAU_GEM_NEW, 0x7ffc5a2541e0) = 0
> > < 10221 ioctl(6, DRM_IOCTL_NOUVEAU_GEM_NEW, 0x7ffc5a254260) = 0
> > < 10221 ioctl(6, DRM_IOCTL_ETNAVIV_GET_PARAM or
> > DRM_IOCTL_EXYNOS_GEM_CREATE or DRM_IOCTL_IVPU_GET_PARAM or
> > DRM_IOCTL_LIMA_GET_PARAM or DRM_IOCTL_NOUVEAU_GETPARAM or
> > DRM_IOCTL_OMAP_GET_PARAM or DRM_IOCTL_PVR_DEV_QUERY or
> > DRM_IOCTL_QAIC_MANAGE or DRM_IOCTL_TEGRA_GEM_CREATE, 0x7ffc5a2542a0)
> > 0
> > < 10221 ioctl(6, DRM_IOCTL_NOUVEAU_GEM_NEW, 0x7ffc5a254260) = 0
> > < 10221 ioctl(6, DRM_IOCTL_NOUVEAU_GEM_NEW, 0x7ffc5a254260) = 0
> > < 10221 ioctl(6, DRM_IOCTL_NOUVEAU_GEM_NEW, 0x7ffc5a254260) = 0
> > < 10221 ioctl(6, _IOC(_IOC_READ|_IOC_WRITE, 0x64, 0x47, 0xa0),
> > 0x7ffc5a254200) = 0
> > < 10221 ioctl(6, _IOC(_IOC_WRITE, 0x64, 0x47, 0x38),
0x7ffc5a254240) = 0
> > < 10221 ioctl(6, DRM_IOCTL_NOUVEAU_GEM_PUSHBUF, 0x7ffc5a254230) = 0
> > < 10221 ioctl(6, DRM_IOCTL_GET_CAP, 0x7ffc5a254270) = 0
> > < 10221 ioctl(6, DRM_IOCTL_NOUVEAU_GEM_PUSHBUF, 0x7ffc5a2549f0) = 0
> > < 10221 ioctl(6, DRM_IOCTL_NOUVEAU_GEM_NEW, 0x7ffc5a254940) = 0
> > < 10221 ioctl(6, DRM_IOCTL_NOUVEAU_GEM_NEW, 0x7ffc5a254940) = 0
> > < 10221 ioctl(6, DRM_IOCTL_NOUVEAU_GEM_NEW, 0x7ffc5a254940) = 0
> > < 10221 ioctl(6, DRM_IOCTL_NOUVEAU_GEM_NEW, 0x7ffc5a254940) = 0
> > < 10221 ioctl(6, DRM_IOCTL_NOUVEAU_GEM_CPU_PREP, 0x7ffc5a2548f0) =
0
> > < 10221 ioctl(6, DRM_IOCTL_NOUVEAU_GEM_NEW, 0x7ffc5a254a10) = 0
> > < 10221 ioctl(6, DRM_IOCTL_NOUVEAU_GEM_NEW, 0x7ffc5a2546c0) = 0
> > < 10221 ioctl(6, DRM_IOCTL_PRIME_HANDLE_TO_FD, 0x7ffc5a2547a8) = 0
> > < 10221 ioctl(6, DRM_IOCTL_PRIME_HANDLE_TO_FD, 0x7ffc5a2547a8) = 0
> > < 10221 ioctl(6, DRM_IOCTL_PRIME_HANDLE_TO_FD, 0x7ffc5a2547a8) = 0
> > < 10221 ioctl(6, DRM_IOCTL_PRIME_HANDLE_TO_FD, 0x7ffc5a2547a8) = 0
> > < 10221 ioctl(6, DRM_IOCTL_PRIME_HANDLE_TO_FD, 0x7ffc5a2547a8) = 0
> > < 10221 ioctl(6, DRM_IOCTL_NOUVEAU_GEM_PUSHBUF, 0x7ffc5a254a10) = 0
> > < 10221 ioctl(6, DRM_IOCTL_NOUVEAU_GEM_NEW, 0x7ffc5a254960) = 0
> > < 10221 ioctl(6, DRM_IOCTL_NOUVEAU_GEM_NEW, 0x7ffc5a254960) = 0
> > < 10221 ioctl(6, DRM_IOCTL_NOUVEAU_GEM_NEW, 0x7ffc5a254960) = 0
> > < 10221 ioctl(6, DRM_IOCTL_NOUVEAU_GEM_NEW, 0x7ffc5a254960) = 0
> > < 10221 ioctl(6, DRM_IOCTL_NOUVEAU_GEM_CPU_PREP, 0x7ffc5a254a40) =
0
> > < 10221 ioctl(6, DRM_IOCTL_NOUVEAU_GEM_NEW, 0x7ffc5a254a30) = 0
> > < 10221 ioctl(6, DRM_IOCTL_NOUVEAU_GEM_PUSHBUF, 0x7ffc5a254d00) = 0
> > < 10221 ioctl(6, DRM_IOCTL_GEM_CLOSE, 0x7ffc5a254c70) = 0
> > < 10221 ioctl(6, DRM_IOCTL_NOUVEAU_GEM_NEW, 0x7ffc5a254ba0) = 0
> > < 10221 ioctl(6, DRM_IOCTL_NOUVEAU_GEM_PUSHBUF, 0x7ffc5a254c80) = 0
> > < 10221 ioctl(6, DRM_IOCTL_GEM_CLOSE, 0x7ffc5a254cc0) = 0
> > < 10221 ioctl(6, DRM_IOCTL_GEM_CLOSE, 0x7ffc5a254cc0) = 0
> > < 10221 ioctl(6, DRM_IOCTL_GEM_CLOSE, 0x7ffc5a254d00) = 0
> > < 10221 ioctl(6, DRM_IOCTL_GEM_CLOSE, 0x7ffc5a254d00) = 0
> > < 10221 ioctl(6, DRM_IOCTL_GEM_CLOSE, 0x7ffc5a254d00) = 0
> > < 10221 ioctl(6, DRM_IOCTL_GEM_CLOSE, 0x7ffc5a254d00) = 0
> > < 10221 ioctl(6, DRM_IOCTL_NOUVEAU_GEM_NEW, 0x7ffc5a254730) = 0
> > < 10221 ioctl(6, DRM_IOCTL_PRIME_HANDLE_TO_FD, 0x7ffc5a254818) = 0
> > < 10221 ioctl(6, DRM_IOCTL_PRIME_HANDLE_TO_FD, 0x7ffc5a254818) = 0
> > < 10221 ioctl(6, DRM_IOCTL_PRIME_HANDLE_TO_FD, 0x7ffc5a254818) = 0
> > < 10221 ioctl(6, DRM_IOCTL_PRIME_HANDLE_TO_FD, 0x7ffc5a254818) = 0
> > < 10221 ioctl(6, DRM_IOCTL_PRIME_HANDLE_TO_FD, 0x7ffc5a254818) = 0
> > < 10221 ioctl(6, DRM_IOCTL_NOUVEAU_GEM_PUSHBUF, 0x7ffc5a254a30) = 0
> > < 10221 ioctl(6, DRM_IOCTL_NOUVEAU_GEM_NEW, 0x7ffc5a254980) = 0
> > < 10221 ioctl(6, DRM_IOCTL_NOUVEAU_GEM_NEW, 0x7ffc5a254980) = 0
> > < 10221 ioctl(6, DRM_IOCTL_NOUVEAU_GEM_NEW, 0x7ffc5a254980) = 0
> > < 10221 ioctl(6, DRM_IOCTL_NOUVEAU_GEM_NEW, 0x7ffc5a254980) = 0
> > < 10221 ioctl(6, DRM_IOCTL_NOUVEAU_GEM_CPU_PREP, 0x7ffc5a254a60) =
0
> > < 10221 ioctl(6, DRM_IOCTL_NOUVEAU_GEM_NEW, 0x7ffc5a254a50) = 0
> > < 10221 ioctl(6, DRM_IOCTL_NOUVEAU_GEM_PUSHBUF, 0x7ffc5a254d00) = 0
> > < 10221 ioctl(6, DRM_IOCTL_GEM_CLOSE, 0x7ffc5a254c70) = 0
> > < 10221 ioctl(6, DRM_IOCTL_NOUVEAU_GEM_NEW, 0x7ffc5a254ba0) = 0
> > < 10221 ioctl(6, DRM_IOCTL_NOUVEAU_GEM_PUSHBUF, 0x7ffc5a254c80) = 0
> > < 10221 ioctl(6, DRM_IOCTL_GEM_CLOSE, 0x7ffc5a254cc0) = 0
> > < 10221 ioctl(6, DRM_IOCTL_GEM_CLOSE, 0x7ffc5a254cc0) = 0
> > < 10221 ioctl(6, DRM_IOCTL_GEM_CLOSE, 0x7ffc5a254d00) = 0
> > < 10221 ioctl(6, DRM_IOCTL_GEM_CLOSE, 0x7ffc5a254d00) = 0
> > < 10221 ioctl(6, DRM_IOCTL_GEM_CLOSE, 0x7ffc5a254d00) = 0
> > < 10221 ioctl(6, DRM_IOCTL_GEM_CLOSE, 0x7ffc5a254d00) = 0
> > < 10221 ioctl(6, DRM_IOCTL_NOUVEAU_GEM_NEW, 0x7ffc5a254730) = 0
> > < 10221 ioctl(6, DRM_IOCTL_PRIME_HANDLE_TO_FD, 0x7ffc5a254818) = 0
> > < 10221 ioctl(6, DRM_IOCTL_PRIME_HANDLE_TO_FD, 0x7ffc5a254818) = 0
> > < 10221 ioctl(6, DRM_IOCTL_PRIME_HANDLE_TO_FD, 0x7ffc5a254818) = 0
> > < 10221 ioctl(6, DRM_IOCTL_PRIME_HANDLE_TO_FD, 0x7ffc5a254818) = 0
> > < 10221 ioctl(6, DRM_IOCTL_PRIME_HANDLE_TO_FD, 0x7ffc5a254818) = 0
> > < 10221 ioctl(6, DRM_IOCTL_NOUVEAU_GEM_PUSHBUF, 0x7ffc5a254f70) = 0
> > < 10221 ioctl(6, DRM_IOCTL_GEM_CLOSE, 0x7ffc5a254ee0) = 0
> > < 10221 ioctl(6, DRM_IOCTL_NOUVEAU_GEM_NEW, 0x7ffc5a254e10) = 0
> > < 10221 ioctl(6, DRM_IOCTL_NOUVEAU_GEM_PUSHBUF, 0x7ffc5a254ef0) = 0
> > < 10221 ioctl(6, DRM_IOCTL_GEM_CLOSE, 0x7ffc5a254f30) = 0
> > < 10221 ioctl(6, DRM_IOCTL_GEM_CLOSE, 0x7ffc5a254f30) = 0
> > < 10221 ioctl(6, DRM_IOCTL_GEM_CLOSE, 0x7ffc5a254f70) = 0
> > < 10221 ioctl(6, DRM_IOCTL_GEM_CLOSE, 0x7ffc5a254f70) = 0
> > < 10221 ioctl(6, DRM_IOCTL_GEM_CLOSE, 0x7ffc5a254f70) = 0
> > < 10221 ioctl(6, DRM_IOCTL_GEM_CLOSE, 0x7ffc5a254f70) = 0
> > < 10221 ioctl(6, DRM_IOCTL_GEM_CLOSE, 0x7ffc5a2550b0) = 0
> > < 10221 ioctl(6, DRM_IOCTL_GEM_CLOSE, 0x7ffc5a2550b0) = 0
> > < 10221 ioctl(6, DRM_IOCTL_GEM_CLOSE, 0x7ffc5a2550b0) = 0
> > < 10221 ioctl(6, DRM_IOCTL_GEM_CLOSE, 0x7ffc5a2550b0) = 0
> > < 10221 ioctl(6, DRM_IOCTL_GEM_CLOSE, 0x7ffc5a2550b0) = 0
> > < 10221 ioctl(6, DRM_IOCTL_GEM_CLOSE, 0x7ffc5a2550b0) = 0
> > < 10221 ioctl(7, DRM_IOCTL_XE_EXEC_QUEUE_DESTROY, 0x7ffc5a2550e0) =
-1
> > EBADF (Bad file descriptor)
> > < 10221 ioctl(7, DRM_IOCTL_XE_EXEC_QUEUE_DESTROY, 0x7ffc5a2550e0) =
-1
> > EBADF (Bad file descriptor)
> > < 10221 ioctl(7, DRM_IOCTL_XE_EXEC_QUEUE_DESTROY, 0x7ffc5a2550e0) =
-1
> > EBADF (Bad file descriptor)
> > < 10221 ioctl(7, DRM_IOCTL_XE_EXEC_QUEUE_DESTROY, 0x7ffc5a2550e0) =
-1
> > EBADF (Bad file descriptor)
> > < 10221 ioctl(7, DRM_IOCTL_XE_EXEC_QUEUE_DESTROY, 0x7ffc5a2550e0) =
-1
> > EBADF (Bad file descriptor)
> > < 10221 ioctl(7, DRM_IOCTL_XE_EXEC_QUEUE_DESTROY, 0x7ffc5a2550e0) =
-1
> > EBADF (Bad file descriptor)
> > < 10221 ioctl(6, DRM_IOCTL_GEM_CLOSE, 0x7ffc5a255060) = 0
> > < 10221 ioctl(6, DRM_IOCTL_GEM_CLOSE, 0x7ffc5a255060) = 0
> > < 10221 ioctl(6, DRM_IOCTL_GEM_CLOSE, 0x7ffc5a255060) = 0
> > < 10221 ioctl(6, DRM_IOCTL_GEM_CLOSE, 0x7ffc5a255060) = 0
> > < 10221 ioctl(6, DRM_IOCTL_NOUVEAU_CHANNEL_FREE, 0x7ffc5a2550b8) =
0
> > < 10222 +++ exited with 0 +++
> > < 10221 +++ exited with 0 +++
> > ---
> >> 5236 ioctl(4, UDMABUF_CREATE, 0x7fffd017e990) = 6
> >> 5236 ioctl(6, DMA_BUF_IOCTL_EXPORT_SYNC_FILE, 0x7fffd017ea00) = 0
> >> 5252 +++ exited with 0 +++
> >> 5251 +++ exited with 0 +++
> >> 5249 +++ exited with 0 +++
> >> 5248 +++ exited with 0 +++
> >> 5250 +++ exited with 0 +++
> >> 5247 +++ exited with 0 +++
> >> 5246 +++ exited with 0 +++
> >> 5245 +++ exited with 0 +++
> >> 5237 +++ exited with 0 +++
> >> 5238 +++ exited with 0 +++
> >> 5239 +++ exited with 0 +++
> >> 5240 +++ exited with 0 +++
> >> 5241 +++ exited with 0 +++
> >> 5242 +++ exited with 0 +++
> >> 5243 +++ exited with 0 +++
> >> 5244 +++ exited with 0 +++
> >> 5253 +++ exited with 0 +++
> >> 5236 +++ exited with 0 +++
> >
> > On Mon, Jul 21, 2025 at 8:38?AM Arnd Bergmann <arnd at arndb.de>
wrote:
> >>
> >> On Mon, Jul 21, 2025, at 14:22, Satadru Pramanik wrote:
> >> > Hello all,
> >> >
> >> > I suspect this commit in 6.16-rc7 has broken acceleration
with Mesa's
> >> > nouveau drivers on my machine.
> >> >
> >> > glxinfo -B reports that I'm using llvmpipe.
> >>
> >> Thanks for the report! Can you run the failing command with
> >> 'strace -f -o logfile.txt -e trace=ioctl ...' to see which
command
> >> it tries?
> >>
> >> Either I made a stupid mistake in my patch and don't catch the
> >> intended command any more, or the command that gets sent is
actually
> >> different from the one that the kernel expects.
> >>
> >> Arnd
> >
> > Attachments:
> > * glxinfo_working.txt
> > * glxinfo_broken.txt
-------------- next part --------------
5098 ioctl(4, 0x40187542, 0x7ffdf49c6540) = 6
5098 ioctl(6, 0xc0086202, 0x7ffdf49c65b0) = 0
5110 +++ exited with 0 +++
5114 +++ exited with 0 +++
5111 +++ exited with 0 +++
5109 +++ exited with 0 +++
5113 +++ exited with 0 +++
5112 +++ exited with 0 +++
5108 +++ exited with 0 +++
5107 +++ exited with 0 +++
5099 +++ exited with 0 +++
5101 +++ exited with 0 +++
5100 +++ exited with 0 +++
5102 +++ exited with 0 +++
5103 +++ exited with 0 +++
5104 +++ exited with 0 +++
5105 +++ exited with 0 +++
5106 +++ exited with 0 +++
5115 +++ exited with 0 +++
5098 +++ exited with 0 +++
-------------- next part --------------
A non-text attachment was scrubbed...
Name: new_nouveau.patch
Type: text/x-patch
Size: 901 bytes
Desc: not available
URL:
<https://lists.freedesktop.org/archives/nouveau/attachments/20250721/041dc437/attachment-0001.bin>
-------------- next part --------------
6412 ioctl(4, UDMABUF_CREATE, 0x7ffe9d5c4440) = 6
6412 ioctl(6, DMA_BUF_IOCTL_EXPORT_SYNC_FILE, 0x7ffe9d5c44b0) = 0
6428 +++ exited with 0 +++
6425 +++ exited with 0 +++
6426 +++ exited with 0 +++
6423 +++ exited with 0 +++
6427 +++ exited with 0 +++
6422 +++ exited with 0 +++
6424 +++ exited with 0 +++
6421 +++ exited with 0 +++
6413 +++ exited with 0 +++
6414 +++ exited with 0 +++
6415 +++ exited with 0 +++
6417 +++ exited with 0 +++
6418 +++ exited with 0 +++
6416 +++ exited with 0 +++
6419 +++ exited with 0 +++
6420 +++ exited with 0 +++
6429 +++ exited with 0 +++
6412 +++ exited with 0 +++