diff --git a/u_fbdevhw_kernel6.9_break_fbdev_open.patch b/u_fbdevhw_kernel6.9_break_fbdev_open.patch new file mode 100644 index 0000000..a12611d --- /dev/null +++ b/u_fbdevhw_kernel6.9_break_fbdev_open.patch @@ -0,0 +1,45 @@ +Linux kernel v6.9 has changed the symlink to point to the parent device. +This breaks fbdev_open() detection logic. Change it to use the subsystem +symlink instead which will remain stable. + +Kernel v6.8: + +[ 14.067] (II) fbdev_open() sysfs_path=/sys/class/graphics/fb0 +[ 14.067] (II) fbdev_open() buf=../../devices/platform/vesa-framebuffer.0/graphics/fb0 + +Kernel v6.9: + +[ 15.609] (II) fbdev_open() sysfs_path=/sys/class/graphics/fb0 +[ 15.609] (II) fbdev_open() buf=../../devices/pci0000:00/0000:00:01.0/vesa-framebuffer.0/graphics/fb0 + +Originally found in automated Debian ISO QA testing [0] and confirmed in Linux [1]. + +Tested on kernels v6.9.7 and v6.8.12 + +[0] https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=3D1075713 +[1] https://lore.kernel.org/lkml/lLyvPFC_APGHNfyGNHRpQy5izBikkaTPOpHooZIT3f= +FAoJPquSI31ZMueA99XTdr8ysir3X7O7IMdc6za-0m79vr_claeparHhoRouVgHOI=3D@proton= +.me/ + +Fixes: https://gitlab.freedesktop.org/xorg/xserver/-/issues/1714 +Signed-off-by: Tj +--- + hw/xfree86/fbdevhw/fbdevhw.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +Index: xorg-server-21.1.12/hw/xfree86/fbdevhw/fbdevhw.c +=================================================================== +--- xorg-server-21.1.12.orig/hw/xfree86/fbdevhw/fbdevhw.c ++++ xorg-server-21.1.12/hw/xfree86/fbdevhw/fbdevhw.c +@@ -335,9 +335,9 @@ fbdev_open(int scrnIndex, const char *de + char *sysfs_path = NULL; + char *node = strrchr(dev, '/') + 1; + +- if (asprintf(&sysfs_path, "/sys/class/graphics/%s", node) < 0 || ++ if (asprintf(&sysfs_path, "/sys/class/graphics/%s/device/subsystem", node) < 0 || + readlink(sysfs_path, buf, sizeof(buf) - 1) < 0 || +- strstr(buf, "devices/pci")) { ++ strstr(buf, "bus/pci")) { + free(sysfs_path); + close(fd); + return -1; diff --git a/xorg-x11-server.changes b/xorg-x11-server.changes index a2fc9b3..ce507d2 100644 --- a/xorg-x11-server.changes +++ b/xorg-x11-server.changes @@ -1,3 +1,12 @@ +------------------------------------------------------------------- +Thu Jul 18 10:44:59 UTC 2024 - Stefan Dirsch + +- u_fbdevhw_kernel6.9_break_fbdev_open.patch + * Linux kernel v6.9 has changed the symlink to point to the + parent device. This breaks fbdev_open() detection logic. + Change it to use the subsystem symlink instead which will + remain stable (gitlab xserver issue#1714) + ------------------------------------------------------------------- Wed Jun 12 09:08:15 UTC 2024 - Daniel Garcia diff --git a/xorg-x11-server.spec b/xorg-x11-server.spec index c252342..0138f8f 100644 --- a/xorg-x11-server.spec +++ b/xorg-x11-server.spec @@ -147,7 +147,7 @@ Requires: libpixman-1-0 >= 0.24 Requires: Mesa %if 0%{?suse_version} >= 1315 Requires(post): update-alternatives -Requires(postun): update-alternatives +Requires(postun):update-alternatives %endif Provides: xorg-x11-server-glx Obsoletes: xorg-x11-server-glx @@ -240,6 +240,8 @@ Patch1930: u_xfree86-activate-GPU-screens-on-autobind.patch Patch1960: u_sync-pci-ids-with-Mesa.patch +Patch2000: u_fbdevhw_kernel6.9_break_fbdev_open.patch + Patch1218176: u_miCloseScreen_check_for_null_pScreen_dev_private.patch Patch1222442: U_render-Avoid-possible-double-free-in-ProcRenderAddGl.patch @@ -397,6 +399,7 @@ sh %{SOURCE92} --verify . %{SOURCE91} %patch -P 1921 -p1 %patch -P 1930 -p1 %patch -P 1960 -p1 +%patch -P 2000 -p1 %patch -P 1218176 -p1