Bug 51798 - Cannot enable second video card on nvidia quadro NVS420
Summary: Cannot enable second video card on nvidia quadro NVS420
Status: RESOLVED INVALID
Alias: None
Product: xorg
Classification: Unclassified
Component: Driver/nouveau (show other bugs)
Version: 7.7 (2012.06)
Hardware: x86-64 (AMD64) Linux (All)
: high major
Assignee: Nouveau Project
QA Contact: Xorg Project Team
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2012-07-06 12:32 UTC by Ilya Ilyin
Modified: 2013-08-30 18:57 UTC (History)
1 user (show)

See Also:
i915 platform:
i915 features:


Attachments
lspci (24.40 KB, application/octet-stream)
2012-07-06 12:32 UTC, Ilya Ilyin
no flags Details
kernel messages on drm (6.99 KB, text/plain)
2012-07-06 12:39 UTC, Ilya Ilyin
no flags Details
Xorg log (58.68 KB, text/plain)
2012-07-06 12:49 UTC, Ilya Ilyin
no flags Details

Description Ilya Ilyin 2012-07-06 12:32:34 UTC
Created attachment 63903 [details]
lspci

With nouveau module I can only see two monitors working which are connected to the first video card out of two cards of NVS420, connected via PCI bridge
pci 03:00 and 04:00:

-[0000:00]-+-00.0  Intel Corporation 4 Series Chipset DRAM Controller
           +-01.0-[01-04]----00.0-[02-04]--+-00.0-[03]----00.0 G98 Quadro NVS420
           |                               \-02.0-[04]----00.0 G98 Quadro NVS420

Full list of PCIs are in the attachment.

DRI status is given here and shows that the second video card (card1) is not set to any PCI bus: 

dristat -a

/dev/dri/card0
  Busid: pci:0000:03:00.0
  Version information:
    Name: nouveau
    Version: 1.0.0
    Date: 20120316
    Desc: nVidia Riva/TNT/GeForce
  VM map information:
  flags: (R)estricted (r)ead/(w)rite (l)ocked (k)ernel (W)rite-combine (L)ock:
    slot     offset       size type flags    address mtrr
       0 0x11839000 0x00002000 SHM  w   L 0x1b7ff000 none
  DRI client information:
    a   pid   uid      magic     ioctls   prog
    y  1482     0          0          7   dristat
    y   761     0          0       3824   /usr/bin/Xorg
  System statistics:
    Lock                 0x00000000
    Opens                         2
    Closes                        1
    Ioctls                     3834
    Locks                         0
    Unlocks                       0

/dev/dri/card1
  Busid: (not set)
  Version information:
    Name: nouveau
    Version: 1.0.0
    Date: 20120316
    Desc: nVidia Riva/TNT/GeForce
  VM map information:
  flags: (R)estricted (r)ead/(w)rite (l)ocked (k)ernel (W)rite-combine (L)ock:
    slot     offset       size type flags    address mtrr
  DRI client information:
    a   pid   uid      magic     ioctls   prog
    y  1482     0          0          6   dristat
  System statistics:
    Lock                 0x00000000
    Opens                         0
    Closes                        0
    Ioctls                        8
    Locks                         0
    Unlocks                       0




Though all the DisplayPorts are connected:

ls /sys/class/drm/*/status | xargs -I {} -i bash -c "echo -n {}: ; cat {}"

/sys/class/drm/card0-DP-1/status:connected
/sys/class/drm/card0-DP-2/status:connected
/sys/class/drm/card1-DP-3/status:connected
/sys/class/drm/card1-DP-4/status:connected

BUT

ls /sys/bus/pci/devices/*/drm/*/card*/enabled | xargs -I {} -i bash -c "echo -n {}: ; cat {}"

/sys/bus/pci/devices/0000:03:00.0/drm/card0/card0-DP-1/enabled:enabled
/sys/bus/pci/devices/0000:03:00.0/drm/card0/card0-DP-2/enabled:enabled

/sys/bus/pci/devices/0000:04:00.0/drm/card1/card1-DP-3/enabled:disabled
/sys/bus/pci/devices/0000:04:00.0/drm/card1/card1-DP-4/enabled:disabled

i.e. the last two ports of card1 are disabled.
Comment 1 Ilya Ilyin 2012-07-06 12:39:37 UTC
Created attachment 63904 [details]
kernel messages on drm

Kernel drm messages for the two PCI 03 and 04 are rather the same.
Comment 2 Ilya Ilyin 2012-07-06 12:49:14 UTC
Created attachment 63905 [details]
Xorg log

As the result, X server opens only the first two monitors of card0. Any experiments without xorg.conf or with it have no positive outcome: the last two monitors are always blank as disabled.

With the commercial nvidia driver everything works from a scratch on four displays as one long screen with Xinerama extension, but it has no proper ARGB support for Quardro NVS.

How to enable /dev/dri/card1? Is there another way for manual tuning with KMS?
I tried video=DP-1:e video=DP-2:e video=DP-3:e video=DP-4:e, but the result is the same.
Comment 3 Ilia Mirkin 2013-08-25 19:12:08 UTC
> ls /sys/bus/pci/devices/*/drm/*/card*/enabled | xargs -I {} -i bash -c "echo -n {}: ; cat {}"

Here's a neat trick:

grep . /sys/bus/pci/devices/*/drm/*/card*/enabled

I think "enabled" is like "is there a KMS user that has enabled this connector" (probably something to do with assigned crtc's or who knows). e.g. Xorg. Looking at your xorg log, it only loads for the first gpu. Do you have an xorg.conf that hardcodes the busid?

In any case, I'd highly recommend retesting with a new kernel and xf86-video-nouveau (and maybe xorg-server).
Comment 4 Emil Velikov 2013-08-30 14:09:43 UTC
(In reply to comment #3)
Slight improvement of Ilia's trick

grep . /sys/bus/pci/devices/*/drm/*/card*/{status,enabled}
 
> I think "enabled" is like "is there a KMS user that has enabled this
> connector" (probably something to do with assigned crtc's or who knows).
I think so too,
* status indicates if there is a connection (cable is plugged)
* whereas enabled - if the output enabled/is there a user that has enabled

> e.g. Xorg. Looking at your xorg log, it only loads for the first gpu. Do you
> have an xorg.conf that hardcodes the busid?
> 
Indeed, I was wondering why nouveau is loaded only once by X

A minimal xorg.conf like the following should do the job

Section "Device"
    Identifier  "Device0"
    Driver      "nouveau"
    # Actual PCI location of first card/gpu
    BusID       "PCI:3:0:0"
EndSection

Section "Device"
    Identifier  "Device1"
    Driver      "nouveau"
    # Actual PCI location of second card/gpu
    BusID       "PCI:4:0:0"
EndSection

Additionally if you're planning to use three or more outputs you might want to setup xinerama/zaphod heads [1]

> In any case, I'd highly recommend retesting with a new kernel and
> xf86-video-nouveau (and maybe xorg-server).
Seconded


[1] http://nouveau.freedesktop.org/wiki/MultiMonitorDesktop/
Comment 5 Ilia Mirkin 2013-08-30 18:02:26 UTC
BTW2: It has been noticed that the second gpu's outputs are not going to be enabled since 3.7 unless you use nouveau.modeset=1. This will hopefully be fixed in a future kernel though. When re-resting, please use that option on the kernel commandline. Lastly, a fix went into xf86-video-nouveau 1.0.8 for a bug that caused the second GPU to never be used by X on those cards, so make sure you upgrade to at least that version.
Comment 6 Ilya Ilyin 2013-08-30 18:51:29 UTC
Thanks for your comments: I was certainly playing with xorg.conf with the explicit specification of the BusID for each Device, but with no avail.

But the good or bad news is that our NVS420 device is ceased to exist any longer: its cooling fun jammed, and it was burned up to 98C, then failed to function properly even with two screens. We have replaced it with another dual video port card, so that this case is closed for me so far, but your comments would be useful for other people having a similar problem.
Comment 7 Ilia Mirkin 2013-08-30 18:57:14 UTC
Sorry to hear the card died. Marking as invalid since the original owner no longer has the hardware.

Note that Kepler cards (nve0+) have 4 CRTC's on one GPU, and the current linux stack is a whole lot better at supporting a single GPU with multiple screens than multiple GPUs with multiple screens.


Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.