Multiple video cards in X?

classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

Multiple video cards in X?

Nick Holland
Hiya.

Before I spend a lot of time on what might be impossible, is it likely I
could succeed at getting multiple multi-head video cards working on
OpenBSD (amd64, radeon cards)?

I've got this in the machine:
OpenBSD 6.5-current (GENERIC.MP) #2: Sun Jun  2 00:29:17 MDT 2019
    [hidden email]:/usr/src/sys/arch/amd64/compile/GENERIC.MP
....
ppb2 at pci0 dev 3 function 0 "Intel X58 PCIE" rev 0x22: msi
pci3 at ppb2 bus 3
radeondrm0 at pci3 dev 0 function 0 "ATI Radeon HD 5450" rev 0x00
drm0 at radeondrm0
radeondrm0: msi
ppb3 at pci0 dev 7 function 0 "Intel X58 PCIE" rev 0x22: msi
pci4 at ppb3 bus 4
radeondrm1 at pci4 dev 0 function 0 "ATI Radeon HD 3450" rev 0x00
drm1 at radeondrm1
radeondrm1: msi
...

so I got a pair of cards recognized.  Two monitors on one card Just Work
with X with no xorg.conf file.  xrandr sees the config and seems to
work, driving the monitors at full resolution.

But the other card is ... idle.

Is it possible to use my other monitors in X on OpenBSD?  Any Broad
General Tips in doing so?  Man pages to read?  Authoritative tips,
including "Don't be an idiot, it's easy" to "it's not possible"?

To save 45k per copy of this message, links to dmesg and xorg log:

 http://nickh.org/Xorg.0.log.txt
 http://nickh.org/dmesg.txt

Nick.

Reply | Threaded
Open this post in threaded view
|

Re: Multiple video cards in X?

Joe M
Hello,

I have multiple video cards (AMD Radeon) cards working with OpenBSD. I
have 2 monitors connected to each card (HDMI and DVI ports).

The issues are that I can use only fvwm and I cannot move x windows
across the video cards. I can move x windows across monitors connected
to the same video card though.

I tried to hack around the Xenocara codebase to figure out if I can
fix it. During my adventures, I realized that though Xenocara can be
modified to support this, the issue is in the radeon driver
(radeondrm, I think). At that point, I gave up as I did not have the
bandwidth to figure out how radeondrm works.

It took me quite a lot of time to figure out the correct
configuration. I was hoping that I could get cwm to work. But, I could
not. Only fvwm works. I did not bother to dig through why.

joe:10114$ cat /etc/X11/xorg.conf

# get the xorg.conf.firstcard and xorg.conf.secondcard to work
# startx # uses xorg.conf
# cd /etc/X11; start -- :1 -config xorg.conf.secondcard # to get the
second card working
# once both of them work, below is bringing them together to show all
monitors at the same time

# leave out the monitor sections as the X fills up the holes

Section "ServerLayout"
        Identifier "Default Layout"
        Screen 0 "Screen 0"
        Screen 1 "Screen 1" RightOf "Screen 0"
EndSection

Section "Screen"
        Identifier "Screen 0"
        Device "Card 0"
EndSection

Section "Device"
        Identifier "Card 0"
        Driver "radeon"
        BusID "PCI:1:0:0"
        #Option "Monitor-HDMI-0" "HG281D"
        Option "Monitor-DVI-0" "AL2223W"
EndSection

Section "Monitor"
        Identifier "AL2223W"
        Option "LeftOf" "HDMI-0"
EndSection

Section "Screen"
        Identifier "Screen 1"
        Device "Card 1"
EndSection

Section "Device"
        Identifier "Card 1"
        Driver "radeon"
        BusID "PCI:11:0:0"
EndSection

joe:10131$ tail -5 /home/j/.xsession

# cwm cannot spawn multiple cards
# exec /usr/X11R6/bin/cwm
exec fvwm

Hope it helps.

On Thu, Jun 27, 2019 at 12:38 PM Nick Holland
<[hidden email]> wrote:

>
> Hiya.
>
> Before I spend a lot of time on what might be impossible, is it likely I
> could succeed at getting multiple multi-head video cards working on
> OpenBSD (amd64, radeon cards)?
>
> I've got this in the machine:
> OpenBSD 6.5-current (GENERIC.MP) #2: Sun Jun  2 00:29:17 MDT 2019
>     [hidden email]:/usr/src/sys/arch/amd64/compile/GENERIC.MP
> ....
> ppb2 at pci0 dev 3 function 0 "Intel X58 PCIE" rev 0x22: msi
> pci3 at ppb2 bus 3
> radeondrm0 at pci3 dev 0 function 0 "ATI Radeon HD 5450" rev 0x00
> drm0 at radeondrm0
> radeondrm0: msi
> ppb3 at pci0 dev 7 function 0 "Intel X58 PCIE" rev 0x22: msi
> pci4 at ppb3 bus 4
> radeondrm1 at pci4 dev 0 function 0 "ATI Radeon HD 3450" rev 0x00
> drm1 at radeondrm1
> radeondrm1: msi
> ...
>
> so I got a pair of cards recognized.  Two monitors on one card Just Work
> with X with no xorg.conf file.  xrandr sees the config and seems to
> work, driving the monitors at full resolution.
>
> But the other card is ... idle.
>
> Is it possible to use my other monitors in X on OpenBSD?  Any Broad
> General Tips in doing so?  Man pages to read?  Authoritative tips,
> including "Don't be an idiot, it's easy" to "it's not possible"?
>
> To save 45k per copy of this message, links to dmesg and xorg log:
>
>  http://nickh.org/Xorg.0.log.txt
>  http://nickh.org/dmesg.txt
>
> Nick.
>

Reply | Threaded
Open this post in threaded view
|

Re: Multiple video cards in X?

Nick Holland
On 6/28/19 5:01 AM, Joe M wrote:
(yes, over a month ago...)

> Hello,
>
> I have multiple video cards (AMD Radeon) cards working with OpenBSD.
>  I have 2 monitors connected to each card (HDMI and DVI ports).
>
> The issues are that I can use only fvwm and I cannot move x windows
> across the video cards. I can move x windows across monitors
> connected to the same video card though.
>
> I tried to hack around the Xenocara codebase to figure out if I can
> fix it. During my adventures, I realized that though Xenocara can be
> modified to support this, the issue is in the radeon driver
> (radeondrm, I think). At that point, I gave up as I did not have the
> bandwidth to figure out how radeondrm works.
>
> It took me quite a lot of time to figure out the correct
> configuration. I was hoping that I could get cwm to work. But, I
> could not. Only fvwm works. I did not bother to dig through why.
>
> joe:10114$ cat /etc/X11/xorg.conf
>
> # get the xorg.conf.firstcard and xorg.conf.secondcard to work #
> startx # uses xorg.conf # cd /etc/X11; start -- :1 -config
> xorg.conf.secondcard # to get the second card working # once both of
>  them work, below is bringing them together to show all monitors at
> the same time
>
> # leave out the monitor sections as the X fills up the holes
>
> Section "ServerLayout" Identifier "Default Layout" Screen 0 "Screen
> 0" Screen 1 "Screen 1" RightOf "Screen 0" EndSection
>
> Section "Screen" Identifier "Screen 0" Device "Card 0" EndSection
>
> Section "Device" Identifier "Card 0" Driver "radeon" BusID
> "PCI:1:0:0" #Option "Monitor-HDMI-0" "HG281D" Option "Monitor-DVI-0"
>  "AL2223W" EndSection
>
> Section "Monitor" Identifier "AL2223W" Option "LeftOf" "HDMI-0"
> EndSection
>
> Section "Screen" Identifier "Screen 1" Device "Card 1" EndSection
>
> Section "Device" Identifier "Card 1" Driver "radeon" BusID
> "PCI:11:0:0" EndSection
>
> joe:10131$ tail -5 /home/j/.xsession
>
> # cwm cannot spawn multiple cards # exec /usr/X11R6/bin/cwm exec
> fvwm
>
> Hope it helps.

Quite a bit, if nothing else, just gave me hope and a starting
place!

Here's what I ended up with as a MINIMAL xorg.conf that seems to work
for me, with the same quirks you describe:
==================================
Section "ServerLayout"
        Identifier "Default Layout"
        Screen 0 "Screen 0"
        Screen 1 "Screen 1" Above "Screen 0"
EndSection

Section "Screen"
        Identifier "Screen 0"
        Device "Card 0"
EndSection

Section "Screen"
        Identifier "Screen 1"
        Device "Card 1"
EndSection

Section "Device"
        Identifier "Card 0"
        Driver "radeon"
        BusID "PCI:3:0:0"
EndSection

Section "Device"
        Identifier "Card 1"
        Driver "radeon"
        BusID "PCI:4:0:0"
EndSection
==================================

I added some monitor sections and not only did it work exactly
as it does with this, I couldn't make it do anything better or
different.

Key parts:
* the BusID lines seem critical.  Otherwise, just get first card.
* a "Screen" appears to be all monitors attached to one Device.
* My primary video card ("Screen 0" is attached to two monitors
on my desk, the secondary video card ("Screen 1") is attached to
two monitors above them.  Hence, the "Screen 1" Above "Screen 0"

I found Fluxbox seems to work with all four monitors as you
described fvwm doing.  The mouse can move appropriately between
all four monitors, but tasks can only go side-to-side in one
"screen" (two monitors).  This, I was actually excited about, as
I wanted to be able to have multiple INDEPENDENT desktops between
monitors. Ok, I got it between PAIRS of monitors.  Doesn't suck.

What DOES suck is some of the apps I wanted on both screens...don't.
Firefox and Chrome both refuse to start a new instance in the other
screen.  Not the end of the world, there are more browsers out there,
I suspect I can run iridium or something similar in one "screen" and
a cousin in the other.

My "screens" are slightly dissimilar -- screen 0 is two 1920x1200
monitors, screen 1 is two 1920x1080 monitors.  No issues noted.

The login box and the ssh key box are centered between two monitors.
Annoying, but not a show stopper.  In general, while two monitors on
one card seemed to keep track of each monitor (didn't start things
straddling them), four monitors on two cards...not quite so elegant.

Once running, seems I can use xrandr to rotate and mess with
individual monitors.

So ... It does work!

Nick.


> On Thu, Jun 27, 2019 at 12:38 PM Nick Holland
> <[hidden email]> wrote:
>>
>> Hiya.
>>
>> Before I spend a lot of time on what might be impossible, is it
>> likely I could succeed at getting multiple multi-head video cards
>> working on OpenBSD (amd64, radeon cards)?
>>
>> I've got this in the machine: OpenBSD 6.5-current (GENERIC.MP) #2:
>>  Sun Jun  2 00:29:17 MDT 2019
>> [hidden email]:/usr/src/sys/arch/amd64/compile/GENERIC.MP
>>
>>
>>
>>
....

>> ppb2 at pci0 dev 3 function 0 "Intel X58 PCIE" rev 0x22: msi pci3
>> at ppb2 bus 3 radeondrm0 at pci3 dev 0 function 0 "ATI Radeon HD
>> 5450" rev 0x00 drm0 at radeondrm0 radeondrm0: msi ppb3 at pci0 dev
>>  7 function 0 "Intel X58 PCIE" rev 0x22: msi pci4 at ppb3 bus 4
>> radeondrm1 at pci4 dev 0 function 0 "ATI Radeon HD 3450" rev 0x00
>> drm1 at radeondrm1 radeondrm1: msi ...
>>
>> so I got a pair of cards recognized.  Two monitors on one card Just
>> Work with X with no xorg.conf file.  xrandr sees the config and
>> seems to work, driving the monitors at full resolution.
>>
>> But the other card is ... idle.
>>
>> Is it possible to use my other monitors in X on OpenBSD?  Any
>> Broad General Tips in doing so?  Man pages to read?  Authoritative
>> tips, including "Don't be an idiot, it's easy" to "it's not
>> possible"?
>>
>> To save 45k per copy of this message, links to dmesg and xorg log:
>>
>> http://nickh.org/Xorg.0.log.txt http://nickh.org/dmesg.txt
>>
>> Nick.
>>
>