NetBSD-Bugs archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

xsrc/55743: There is no support for VGA arbiter thus no multi PCI card support (with possible fix)

>Number:         55743
>Category:       xsrc
>Synopsis:       There is no support for VGA arbiter thus no multi PCI card support (with possible fix)
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    xsrc-manager
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Wed Oct 21 19:50:00 +0000 2020
>Originator:     Reinoud Zandijk
>Release:        NetBSD 9.0_STABLE
System: NetBSD 9.0_STABLE NetBSD 9.0_STABLE (GENERIC) #0: Sun Oct 4 18:24:07 UTC 2020 amd64
Architecture: x86_64
Machine: amd64
Starting X on a dual video card setup gives strange results. In this setup I
have two (different) plugged in PCI cards:

radeon0 at pci2 dev 0 function 0: vendor 1002 product 68f9 (rev. 0x00)
radeon1 at pci9 dev 0 function 0: vendor 1002 product 68e1 (rev. 0x00)

radeondrmkmsfb0 at radeon1
wsdisplay0 at radeondrmkmsfb0 kbdmux 1: console (default, vt100 emulation), using wskbd0

radeondrmkmsfb1 at radeon0
wsdisplay1 at radeondrmkmsfb1 kbdmux 1

The BIOS and the start of the kernel uses radeon0 and when drmkms kicks in,
the display switches to radeon1. I have no idea why they are enumerated the
other way around when attaching their radeondrmkmsfb's. I haven't been able to
get a wscons tty on wsdisplay1 yet but thats another PR I guess.

When starting X, the log explicitly tells:
[ 13277.496] (--) PCI: (2@2:0:0) 1002:68f9:1682:3030 rev 0, Mem @ 0xb0000000/268435456, 0xfb9c0000/131072, I/O @ 0x00009000/256, BIOS @ 0x????????/131072
[ 13277.496] (--) PCI:*(9@9:0:0) 1002:68e1:1787:3000 rev 0, Mem @ 0xd0000000/268435456, 0xfbec0000/131072, I/O @ 0x0000e000/256, BIOS @ 0x????????/131072
[ 13277.638] (WW) VGA arbiter: cannot open kernel arbiter, no multi-card support

And thus all other cards seem to be ignored. The /dev/dri/card0 and
/dev/dri/card1 devices are opened multiple times and queried and the
enumeration in X also goes well so I think it bombs out on this.

Plug two PCI (or PCI-e or whatever) graphic cards in one machine and start X.


The current code in xsrc/external/mit/libpciaccess/dist/src has no NetBSD
specific code to deal with this and uses the generic code that opens an non
existing device and thus fails reporting the error but there is OpenBSD code
for the vgaarbiter that implements it. Needed code could be ported from the
OpenBSD implementation.


Home | Main Index | Thread Index | Old Index