Regression: firmware/sysfb.c device path

From: Tj
Date: Sat Jul 13 2024 - 13:20:47 EST


The recent commits to add the parent device path broke Debian's kvm based QA workers for testing installer ISOs after a kernel upgrade from v6.8.12 to v6.9.7. For the details:

https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1075713

It took some time to track it down since the superficial symptom appeared to involve the QXL driver. It turned out however to be the fbdev driver; specifically the change in the parent device path in sysfs reported between the two kernels:

6.8.12:

/sys/class/graphics/fb0 -> ../../devices/platform/vesa-framebuffer.0/graphics/fb0

6.9.7:

/sys/class/graphics/fb0 -> ../../devices/pci0000:00/0000:00:01.0/vesa-framebuffer.0/graphics/fb0

This breaks xserver-xorg-core's libfbdevhw.so because it differentiates code-paths based on whether "devices/pci" is matched in the symlink.

See hw/xfree86/fbdevhw/fbdevhw.c::fbdev_open()

https://gitlab.freedesktop.org/xorg/xserver/-/blob/master/hw/xfree86/fbdevhw/fbdevhw.c?ref_type=heads#L381