[Bug 275876] FreeBSD Handbook: The X Window System: 5.4.3. Video Cards: Use of BusID appears wrong

From: <bugzilla-noreply_at_freebsd.org>
Date: Thu, 21 Dec 2023 22:29:15 UTC
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=275876

            Bug ID: 275876
           Summary: FreeBSD Handbook: The X Window System: 5.4.3. Video
                    Cards: Use of BusID appears wrong
           Product: Documentation
           Version: Latest
          Hardware: Any
                OS: Any
            Status: New
          Severity: Affects Only Me
          Priority: ---
         Component: Books & Articles
          Assignee: doc@FreeBSD.org
          Reporter: david@catwhisker.org

The section of
https://docs.freebsd.org/en/books/handbook/x11/#x-graphic-card-drivers after
"To configure multiple video cards, the BusID can be added. A list of video
card bus IDs can be displayed by executing:" shows:

The output should be similar to the following:

vgapci0@pci0:0:2:0:     class=0x030000 rev=0x07 hdr=0x00 vendor=0x8086
device=0x2a42 subvendor=0x17aa subdevice=0x20e4
    vendor     = 'Intel Corporation'
    device     = 'Mobile 4 Series Chipset Integrated Graphics Controller'
    class      = display
--
vgapci1@pci0:0:2:1:     class=0x038000 rev=0x07 hdr=0x00 vendor=0x8086
device=0x2a43 subvendor=0x17aa subdevice=0x20e4
    vendor     = 'Intel Corporation'
    device     = 'Mobile 4 Series Chipset Integrated Graphics Controller'
    class      = display

(which is fine), but then shows:
Example 6. Select Intel® Video Driver and NVIDIA® Video Driver in a File

/usr/local/etc/X11/xorg.conf.d/20-drivers.conf

Section "Device"
        Identifier "Card0"
        Driver     "intel"
        BusID     "pci0:0:2:0"
EndSection

Section "Device"
        Identifier "Card0"
        Driver     "nvidia"
        BusID     "pci0:0:2:1"
EndSection

(which appears to be syntactically incorrect).

In my case, the pciconf output is:g1-70(14.0-S)[1] pciconf -lv | grep -B4 VGA
vgapci1@pci0:0:2:0:     class=0x030000 rev=0x06 hdr=0x00 vendor=0x8086
device=0x0416 subvendor=0x1028 subdevice=0x05cc
    vendor     = 'Intel Corporation'
    device     = '4th Gen Core Processor Integrated Graphics Controller'
    class      = display
    subclass   = VGA
--
vgapci0@pci0:1:0:0:     class=0x030000 rev=0xa1 hdr=0x00 vendor=0x10de
device=0x11fc subvendor=0x1028 subdevice=0x15cc
    vendor     = 'NVIDIA Corporation'
    device     = 'GK106GLM [Quadro K2100M]'
    class      = display
    subclass   = VGA
g1-70(14.0-S)[2]

When I tried bringing up X11 with no configuration files at all, that failed
(as documented in xorg.conf(5), under BusID: "In multi-head configurations, or
when using a secondary graphics card in a single-head configuration, this entry
is mandatory.").

When I tried using the precise syntax from `pciconf -lv` in the BusID, Xorg
failed to recognize it at all.

The above xorg.conf(5) page documents the syntax for BusID as:
| PCI:bus@domain:device:function (e.g., “PCI:1@0:0:0”....

while pciconf(8) documents the displayed "selector" as:
| ... Selectors identify a PCI device by its address
|     in PCI config space and can take one of the following forms:
|
|           •   pcidomain:bus:device:function
|           •   pcibus:device:function
|           •   pcibus:device
|
|     In the case of an abridged form, omitted selector components are assumed
|     to be 0.

So: while pciconf may well append a numeral to the literal "pci", that's not a
valid syntax for Xorg.  And there appears to be a potential for a bit
"shuffling" of the selector component IDs.

What brought me here is that, now that I have switched from only using
x11/nvidia-driver-390 (running stable/12) to also using i915kms (running
stable/14), Xorg itself "works," but I no longer have GLX, so I can't even run
nvidia-settings (for example):  This, from Xorg.log:
[ 30222.667] (II) Platform probe for /dev/dri/card0
[ 30222.682] (!!) More than one possible primary device found
[ 30222.682] (--) PCI: (0@0:2:0) 8086:0416:1028:05cc rev 6, Mem @
0xf5400000/4194304, 0xd0000000/268435456, I/O @ 0x0000f000/64, BIOS @
0x????????/65536
[ 30222.682] (--) PCI: (1@0:0:0) 10de:11fc:1028:15cc rev 161, Mem @
0xf4000000/16777216, 0xe0000000/268435456, 0xf0000000/33554432, I/O @
0x0000e000/128, BIOS @ 0x????????/65536
[ 30222.682] (II) LoadModule: "glx"
...
...
[ 30222.868] (II) Initializing extension GLX
[ 30222.868] (EE) Failed to initialize GLX extension (Compatible NVIDIA X
driver not found)
[ 30222.868] (II) modeset(0): Damage tracking initialized
....

and with stable/14, the i915kms is required in order to get suspend/resume to
work on the laptop.

-- 
You are receiving this mail because:
You are the assignee for the bug.