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

Reply via email to