Control: reassign -1 src:linux 6.9.2-1~exp1 On Sat, Jul 13, 2024 at 03:13:23PM +0100, Tj wrote: > Source: debian-installer > Followup-For: Bug #1075713 > X-Debbugs-Cc: tj.iam...@proton.me > > Finally managed to build the v6.8.12 initrd; process is quite convoluted > due to having to manually identify, install, and depmod modules. > However... > > ... it works (both with and without a hard-coded xorg.conf fragment). > > The Xorg.0.log trace messages I added show that the call to > fbdevHWProbe() succeeds, falls through to the subordinate 'else' clause > and calls xf86ClaimFbSlot(): > > With the hard-coded fragment: > > ~ # grep fbdev /var/log/Xorg.0.log > [ 88.861] (II) LoadModule: "fbdev" > [ 88.861] (II) Loading /usr/lib/xorg/modules/drivers/fbdev_drv.so > [ 88.861] (II) Module fbdev: vendor="X.Org Foundation" > [ 88.861] (II) FBDEV: driver for framebuffer: fbdev > [ 88.894] fbdev trace: FBDevPciProbe() > [ 88.894] (II) Loading sub module "fbdevhw" > [ 88.894] (II) LoadModule: "fbdevhw" > [ 88.894] (II) Loading /usr/lib/xorg/modules/libfbdevhw.so > [ 88.894] (II) Module fbdevhw: vendor="X.Org Foundation" > [ 88.894] fbdev trace: FBDevPciProbe() return > [ 88.894] (WW) Falling back to old probe method for fbdev > [ 88.894] fbdev trace: FBDevProbe() > [ 88.894] (II) Loading sub module "fbdevhw" > [ 88.894] (II) LoadModule: "fbdevhw" > [ 88.894] (II) Loading /usr/lib/xorg/modules/libfbdevhw.so > [ 88.894] (II) Module fbdevhw: vendor="X.Org Foundation" > [ 88.894] fbdev: FBDevProbe() for() numDevSection=0 > [ 88.894] fbdev: FBDevProbe() isPci0 isISA=0 > [ 88.895] fbdev: FBDevProbe() calling fbdevHWProbe(NULL, '/dev/fb0', NULL) > [ 88.895] fbdev trace: FBDevProbe() fbdevHWProbe() > [ 88.895] fbdev trace: FBDevProbe() else xf86ClaimFbSlot() > [ 88.895] fbdev trace: FBDevProbe() return > [ 88.895] (II) UnloadModule: "fbdev" > [ 88.895] (II) UnloadSubModule: "fbdevhw" > [ 88.895] fbdev: PreInit 0 > [ 88.895] (**) FBDEV(0): Option "fbdev" "/dev/fb0" > > Auto-detection without hard coded fragment: > > ~ # grep fbdev /var/log/Xorg.0.log > [ 213.290] (==) Matched fbdev as autoconfigured driver 2 > [ 213.291] (II) LoadModule: "fbdev" > [ 213.291] (II) Loading /usr/lib/xorg/modules/drivers/fbdev_drv.so > [ 213.291] (II) Module fbdev: vendor="X.Org Foundation" > [ 213.291] (II) FBDEV: driver for framebuffer: fbdev > [ 213.324] fbdev trace: FBDevPciProbe() > [ 213.324] (II) Loading sub module "fbdevhw" > [ 213.324] (II) LoadModule: "fbdevhw" > [ 213.324] (II) Loading /usr/lib/xorg/modules/libfbdevhw.so > [ 213.324] (II) Module fbdevhw: vendor="X.Org Foundation" > [ 213.324] fbdev trace: FBDevPciProbe() return > [ 213.324] (WW) Falling back to old probe method for fbdev > [ 213.324] fbdev trace: FBDevProbe() > [ 213.324] (II) Loading sub module "fbdevhw" > [ 213.324] (II) LoadModule: "fbdevhw" > [ 213.324] (II) Loading /usr/lib/xorg/modules/libfbdevhw.so > [ 213.324] (II) Module fbdevhw: vendor="X.Org Foundation" > [ 213.325] fbdev: FBDevProbe() for() numDevSection=0 > [ 213.325] fbdev: FBDevProbe() isPci0 isISA=0 > [ 213.325] fbdev: FBDevProbe() calling fbdevHWProbe(NULL, '(null)', NULL) > [ 213.325] fbdev trace: FBDevProbe() fbdevHWProbe() > [ 213.325] fbdev trace: FBDevProbe() else xf86ClaimFbSlot() > [ 213.325] fbdev trace: FBDevProbe() return > [ 213.325] (II) UnloadModule: "fbdev" > [ 213.325] (II) UnloadSubModule: "fbdevhw" > [ 213.325] fbdev: PreInit 0 > > Notice here both of these succeed: > > fbdev: FBDevProbe() calling fbdevHWProbe(NULL, '/dev/fb0', NULL) > fbdev: FBDevProbe() calling fbdevHWProbe(NULL, '(null)', NULL) > > This leads back to: > > xorg-server-${VERSION}/hw/xfree86/fbdevhw/fbdevhw.c > > Bool > fbdevHWProbe(struct pci_device *pPci, char *device, char **namep) > { > int fd; > > if (pPci) > fd = fbdev_open_pci(pPci, namep); > else > fd = fbdev_open(-1, device, namep); > > if (-1 == fd) > return FALSE; > close(fd); > return TRUE; > } > > So I now instrument xserver-xorg-core's > hw/xfree86/fbdevhw/fbdevhw.c::fbdev_open() > > With v6.8.12 Xorg reports: > > ~ # uname -r; grep fbdev /var/log/Xorg.0.log > 6.8.12-amd64 > [ 14.033] (==) Matched fbdev as autoconfigured driver 2 > [ 14.033] (II) LoadModule: "fbdev" > [ 14.033] (II) Loading /usr/lib/xorg/modules/drivers/fbdev_drv.so > [ 14.033] (II) Module fbdev: vendor="X.Org Foundation" > [ 14.033] (II) FBDEV: driver for framebuffer: fbdev > [ 14.066] fbdev trace: FBDevPciProbe() > [ 14.066] (II) Loading sub module "fbdevhw" > [ 14.066] (II) LoadModule: "fbdevhw" > [ 14.066] (II) Loading /usr/lib/xorg/modules/libfbdevhw.so > [ 14.066] (II) Module fbdevhw: vendor="X.Org Foundation" > [ 14.067] fbdev trace: FBDevPciProbe() return > [ 14.067] (WW) Falling back to old probe method for fbdev > [ 14.067] fbdev trace: FBDevProbe() > [ 14.067] (II) Loading sub module "fbdevhw" > [ 14.067] (II) LoadModule: "fbdevhw" > [ 14.067] (II) Loading /usr/lib/xorg/modules/libfbdevhw.so > [ 14.067] (II) Module fbdevhw: vendor="X.Org Foundation" > [ 14.067] fbdev: FBDevProbe() for() numDevSection=0 > [ 14.067] fbdev: FBDevProbe() isPci0 isISA=0 > [ 14.067] fbdev: FBDevProbe() calling fbdevHWProbe(NULL, '(null)', NULL) > [ 14.067] (II) fbdev_open(scrnIndex=-1, dev=(null), namep=(nil)) > [ 14.067] (II) fbdev_open() using dev from env FRAMEBUFFER=(null) > [ 14.067] (II) fbdev_open() using default dev=/dev/fb0 > [ 14.067] (II) fbdev_open() sysfs_path=/sys/class/graphics/fb0 > [ 14.067] (II) fbdev_open() > buf=../../devices/platform/vesa-framebuffer.0/graphics/fb0 > [ 14.067] (II) fbdev_open() returning file descriptor 11 > [ 14.067] fbdev trace: FBDevProbe() fbdevHWProbe() > [ 14.067] fbdev trace: FBDevProbe() else xf86ClaimFbSlot() > [ 14.067] fbdev trace: FBDevProbe() return > [ 14.067] (II) UnloadModule: "fbdev" > [ 14.067] (II) UnloadSubModule: "fbdevhw" > [ 14.067] fbdev: PreInit 0 > [ 14.067] (II) FBDEV(0): fbdev_open(scrnIndex=0, dev=(null), namep=(nil)) > [ 14.067] (II) FBDEV(0): fbdev_open() using dev from env FRAMEBUFFER=(null) > [ 14.067] (II) FBDEV(0): fbdev_open() using default dev=/dev/fb0 > [ 14.067] (II) FBDEV(0): fbdev_open() sysfs_path=/sys/class/graphics/fb0 > [ 14.067] (II) FBDEV(0): fbdev_open() > buf=../../devices/platform/vesa-framebuffer.0/graphics/fb0 > [ 14.067] (II) FBDEV(0): fbdev_open() returning file descriptor 12 > > ~ # ls -l /sys/devices/platform/vesa-framebuffer.0/ > total 0 > lrwxrwxrwx 1 root root 0 Jul 13 14:01 driver -> > ../../../bus/platform/drivers/vesa-framebuffer > With v6.9.7: > > ~ # uname -r; grep fbdev /var/log/Xorg.0.log > 6.9.7-amd64 > [ 15.582] (==) Matched fbdev as autoconfigured driver 2 > [ 15.582] (II) LoadModule: "fbdev" > [ 15.582] (II) Loading /usr/lib/xorg/modules/drivers/fbdev_drv.so > [ 15.582] (II) Module fbdev: vendor="X.Org Foundation" > [ 15.582] (II) FBDEV: driver for framebuffer: fbdev > [ 15.608] fbdev trace: FBDevPciProbe() > [ 15.608] (II) Loading sub module "fbdevhw" > [ 15.608] (II) LoadModule: "fbdevhw" > [ 15.608] (II) Loading /usr/lib/xorg/modules/libfbdevhw.so > [ 15.608] (II) Module fbdevhw: vendor="X.Org Foundation" > [ 15.608] fbdev trace: FBDevPciProbe() return > [ 15.608] (WW) Falling back to old probe method for fbdev > [ 15.608] fbdev trace: FBDevProbe() > [ 15.608] (II) Loading sub module "fbdevhw" > [ 15.608] (II) LoadModule: "fbdevhw" > [ 15.609] (II) Loading /usr/lib/xorg/modules/libfbdevhw.so > [ 15.609] (II) Module fbdevhw: vendor="X.Org Foundation" > [ 15.609] fbdev: FBDevProbe() for() numDevSection=0 > [ 15.609] fbdev: FBDevProbe() isPci0 isISA=0 > [ 15.609] fbdev: FBDevProbe() calling fbdevHWProbe(NULL, '(null)', NULL) > [ 15.609] (II) fbdev_open(scrnIndex=-1, dev=(null), namep=(nil)) > [ 15.609] (II) fbdev_open() using dev from env FRAMEBUFFER=(null) > [ 15.609] (II) fbdev_open() using default dev=/dev/fb0 > [ 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 > [ 15.609] (II) fbdev_open() strstr() matches > [ 15.609] (II) fbdev_open() returning -1 due to PCI device: > sysfs_path/sys/class/graphics/fb0 > buf=../../devices/pci0000:00/0000:00:01.0/vesa-framebuffer.0/graphics/fb0 > [ 15.609] fbdev trace: FBDevProbe() return > [ 15.609] (II) UnloadModule: "fbdev" > [ 15.609] (II) UnloadSubModule: "fbdevhw" > > So the issue here is the framebuffer device was a platform device but is > now a PCI device. On v6.9.7 there is no platform entry so this isn't just > a case of multiple symlinks and the 'wrong' one being used: > > ls -1 /sys/devices/platform/ > PNP0103:00 > i8042 > pcspkr > power > reg-dummy > serial8250 > uevent > > ~ # ls -l /sys/devices/pci0000:00/0000:00:01.0/vesa-framebuffer.0/ > total 0 > lrwxrwxrwx 1 root root 0 Jul 13 14:05 driver -> > ../../../../bus/platform/drivers/vesa-framebuffer > > This looks likely to be caused by these Linux commits: > > 9eac534db0013 firmware/sysfb: Set firmware-framebuffer parent device > 4e754597d603c firmware/sysfb: Create firmware device only for enabled PCI > devices > > $ git describe --contains 9eac534db0013a > v6.9-rc1~126^2~19^2~8
Thanks, so reassigning it back to src:linux. Regards, Salvatore