A segunda placa de vídeo não tem saída

4

Estou tentando definir o motivo pelo qual a GPU repassa não funcionar com o dispositivo NVidia GTX 750 Ti. Portanto, estou tentando iniciar uma segunda instância X com essa placa de vídeo - a principal é uma GTX 1070.

Estou conectando-os ao mesmo monitor - o 1070 via DisplayPort, o 750Ti via HDMI.

A inicialização do Windows resulta na detecção e ativação de ambos, e eu recebo saída via DisplayPort e HDMI.

Ao inicializar usando o Linux, o 1070 funciona sem problemas. O 750Ti é detectado:

# nvidia-smi -L
GPU 0: GeForce GTX 1070 (UUID: GPU-a66c5cbb-a541-a3d7-845c-f8c0c021ae71)
GPU 1: GeForce GTX 750 Ti (UUID: GPU-db546e26-f6d5-5345-45e4-434e0bfb4f62)

e no programa nvidia-settings ele é mostrado como conectado ao monitor.

No entanto, ao iniciar uma segunda instância do Xorg, não recebo saída na porta HDMI.

O comando que eu uso é

sudo Xorg :2 vt8 -config xorg-second.conf  -configdir conf.d

onde conf.d está vazio, para garantir que nenhuma outra configuração seja aplicada, e o xorg-second.conf é praticamente padrão, exceto

Section "Device"
    Identifier     "Device0"
    Driver         "nvidia"
    BusID          "PCI:3:0:0"
    VendorName     "NVIDIA Corporation"
EndSection

Section "Screen"
    Identifier     "Screen0"
    Device         "Device0"
    Monitor        "Monitor0"
    DefaultDepth    24
    Option         "Coolbits" "4"
    SubSection     "Display"
        Depth       24
    EndSubSection
EndSection

para garantir que a placa de vídeo correta seja selecionada.

Eu tentei trocar de cabos, mas isso não ajudou.

Por que a segunda placa de vídeo não envia a saída para o meu monitor e como posso corrigi-la?

Editar : Aqui está a saída para xrandr para ambas as instâncias X:

$ xrandr --display :1
Screen 0: minimum 8 x 8, current 2560 x 1440, maximum 32767 x 32767
DVI-D-0 disconnected (normal left inverted right x axis y axis)
HDMI-0 disconnected (normal left inverted right x axis y axis)
DP-0 disconnected (normal left inverted right x axis y axis)
DP-1 disconnected (normal left inverted right x axis y axis)
DP-2 disconnected (normal left inverted right x axis y axis)
DP-3 disconnected (normal left inverted right x axis y axis)
DP-4 connected primary 2560x1440+0+0 (normal left inverted right x axis y axis) 553mm x 311mm
   2560x1440     59.95*+
   2048x1152     60.00  
   1920x1200     59.88  
   1920x1080     60.00    59.94    50.00    29.97    25.00    23.97    60.05    60.00    50.04  
   1680x1050     59.95  
   1600x1200     60.00  
   1280x1024     75.02    60.02  
   1280x720      60.00    59.94    50.00  
   1200x960      59.90  
   1152x864      75.00  
   1024x768      75.03    60.00  
   800x600       75.00    60.32  
   720x576       50.00  
   720x480       59.94  
   640x480       75.00    59.94    59.93  
DP-5 disconnected (normal left inverted right x axis y axis)

$ xrandr --display :2
Screen 0: minimum 8 x 8, current 2560 x 1440, maximum 16384 x 16384
DVI-I-0 disconnected primary (normal left inverted right x axis y axis)
DVI-I-1 disconnected (normal left inverted right x axis y axis)
HDMI-0 connected 2560x1440+0+0 (normal left inverted right x axis y axis) 553mm x 311mm
   2560x1440     59.95*+
   2048x1152     60.00  
   1920x1200     59.88  
   1920x1080     60.00    59.94    50.00    29.97    25.00    23.97    60.05    60.00    50.04  
   1680x1050     59.95  
   1600x1200     60.00  
   1280x1024     75.02    60.02  
   1280x720      60.00    59.94    50.00  
   1200x960      60.00  
   1152x864      75.00  
   1024x768      75.03    60.00  
   800x600       75.00    60.32  
   720x576       50.00  
   720x480       59.94  
   640x480       75.00    59.94    59.93  
DP-0 disconnected (normal left inverted right x axis y axis)
DP-1 disconnected (normal left inverted right x axis y axis)

Interessante notar que quando executo xrandr --display :2 pela segunda vez, ele trava. As linhas finais da saída strace são

socket(AF_UNIX, SOCK_STREAM|SOCK_CLOEXEC, 0) = 3
connect(3, {sa_family=AF_UNIX, sun_path=@"/tmp/.X11-unix/X2"}, 20) = 0
getpeername(3, {sa_family=AF_UNIX, sun_path=@"/tmp/.X11-unix/X2"}, [124->20]) = 0
uname({sysname="Linux", nodename="mars", ...}) = 0
access("/run/user/1000/gdm/Xauthority", R_OK) = 0
open("/run/user/1000/gdm/Xauthority", O_RDONLY) = 4
fstat(4, {st_mode=S_IFREG|0700, st_size=96, ...}) = 0
read(4, "
DPMS (Energy Star):
  Standby: 600    Suspend: 600    Off: 600
  DPMS is Enabled
  Monitor is On
# nvidia-smi -L
GPU 0: GeForce GTX 1070 (UUID: GPU-a66c5cbb-a541-a3d7-845c-f8c0c021ae71)
GPU 1: GeForce GTX 750 Ti (UUID: GPU-db546e26-f6d5-5345-45e4-434e0bfb4f62)
mars
sudo Xorg :2 vt8 -config xorg-second.conf  -configdir conf.d
Section "Device"
    Identifier     "Device0"
    Driver         "nvidia"
    BusID          "PCI:3:0:0"
    VendorName     "NVIDIA Corporation"
EndSection

Section "Screen"
    Identifier     "Screen0"
    Device         "Device0"
    Monitor        "Monitor0"
    DefaultDepth    24
    Option         "Coolbits" "4"
    SubSection     "Display"
        Depth       24
    EndSubSection
EndSection
$ xrandr --display :1
Screen 0: minimum 8 x 8, current 2560 x 1440, maximum 32767 x 32767
DVI-D-0 disconnected (normal left inverted right x axis y axis)
HDMI-0 disconnected (normal left inverted right x axis y axis)
DP-0 disconnected (normal left inverted right x axis y axis)
DP-1 disconnected (normal left inverted right x axis y axis)
DP-2 disconnected (normal left inverted right x axis y axis)
DP-3 disconnected (normal left inverted right x axis y axis)
DP-4 connected primary 2560x1440+0+0 (normal left inverted right x axis y axis) 553mm x 311mm
   2560x1440     59.95*+
   2048x1152     60.00  
   1920x1200     59.88  
   1920x1080     60.00    59.94    50.00    29.97    25.00    23.97    60.05    60.00    50.04  
   1680x1050     59.95  
   1600x1200     60.00  
   1280x1024     75.02    60.02  
   1280x720      60.00    59.94    50.00  
   1200x960      59.90  
   1152x864      75.00  
   1024x768      75.03    60.00  
   800x600       75.00    60.32  
   720x576       50.00  
   720x480       59.94  
   640x480       75.00    59.94    59.93  
DP-5 disconnected (normal left inverted right x axis y axis)

$ xrandr --display :2
Screen 0: minimum 8 x 8, current 2560 x 1440, maximum 16384 x 16384
DVI-I-0 disconnected primary (normal left inverted right x axis y axis)
DVI-I-1 disconnected (normal left inverted right x axis y axis)
HDMI-0 connected 2560x1440+0+0 (normal left inverted right x axis y axis) 553mm x 311mm
   2560x1440     59.95*+
   2048x1152     60.00  
   1920x1200     59.88  
   1920x1080     60.00    59.94    50.00    29.97    25.00    23.97    60.05    60.00    50.04  
   1680x1050     59.95  
   1600x1200     60.00  
   1280x1024     75.02    60.02  
   1280x720      60.00    59.94    50.00  
   1200x960      60.00  
   1152x864      75.00  
   1024x768      75.03    60.00  
   800x600       75.00    60.32  
   720x576       50.00  
   720x480       59.94  
   640x480       75.00    59.94    59.93  
DP-0 disconnected (normal left inverted right x axis y axis)
DP-1 disconnected (normal left inverted right x axis y axis)
MIT-MAGIC-COOKIE-1
socket(AF_UNIX, SOCK_STREAM|SOCK_CLOEXEC, 0) = 3
connect(3, {sa_family=AF_UNIX, sun_path=@"/tmp/.X11-unix/X2"}, 20) = 0
getpeername(3, {sa_family=AF_UNIX, sun_path=@"/tmp/.X11-unix/X2"}, [124->20]) = 0
uname({sysname="Linux", nodename="mars", ...}) = 0
access("/run/user/1000/gdm/Xauthority", R_OK) = 0
open("/run/user/1000/gdm/Xauthority", O_RDONLY) = 4
fstat(4, {st_mode=S_IFREG|0700, st_size=96, ...}) = 0
read(4, "
DPMS (Energy Star):
  Standby: 600    Suspend: 600    Off: 600
  DPMS is Enabled
  Monitor is On
%pre%mars%pre%%pre%%pre%MIT-MAGIC-COOKIE-1%pre%"..., 4096) = 96 close(4) = 0 getsockname(3, {sa_family=AF_UNIX}, [124->2]) = 0 fcntl(3, F_GETFL) = 0x2 (flags O_RDWR) fcntl(3, F_SETFL, O_RDWR|O_NONBLOCK) = 0 fcntl(3, F_SETFD, FD_CLOEXEC) = 0 poll([{fd=3, events=POLLIN|POLLOUT}], 1, -1) = 1 ([{fd=3, revents=POLLOUT}]) writev(3, [{iov_base="l%pre%\v%pre%%pre%%pre%%pre%%pre%%pre%%pre%", iov_len=12}, {iov_base="", iov_len=0}, {iov_base="MIT-MAGIC-COOKIE-1", iov_len=18}, {iov_base="%pre%%pre%", iov_len=2}, {iov_base="164:3(7y4(X", iov_len=16}, {iov_base="", iov_len=0}], 6) = 48 recvfrom(3, 0x18dd330, 8, 0, NULL, NULL) = -1 EAGAIN (Resource temporarily unavailable) poll([{fd=3, events=POLLIN}], 1, -1
"..., 4096) = 96 close(4) = 0 getsockname(3, {sa_family=AF_UNIX}, [124->2]) = 0 fcntl(3, F_GETFL) = 0x2 (flags O_RDWR) fcntl(3, F_SETFL, O_RDWR|O_NONBLOCK) = 0 fcntl(3, F_SETFD, FD_CLOEXEC) = 0 poll([{fd=3, events=POLLIN|POLLOUT}], 1, -1) = 1 ([{fd=3, revents=POLLOUT}]) writev(3, [{iov_base="l%pre%\v%pre%%pre%%pre%%pre%%pre%%pre%%pre%", iov_len=12}, {iov_base="", iov_len=0}, {iov_base="MIT-MAGIC-COOKIE-1", iov_len=18}, {iov_base="%pre%%pre%", iov_len=2}, {iov_base="164:3(7y4(X", iov_len=16}, {iov_base="", iov_len=0}], 6) = 48 recvfrom(3, 0x18dd330, 8, 0, NULL, NULL) = -1 EAGAIN (Resource temporarily unavailable) poll([{fd=3, events=POLLIN}], 1, -1

Editar 2

$ xset -display :2 q (apenas a parte sobre o DPMS)

%pre%

Log do Xorg - link

    
por Robert Munteanu 23.03.2017 / 19:16

1 resposta

1

No log, você pode ver que o servidor em :2 também detecta a placa gráfica principal GTX 1070 (GP104-A) at PCI:1:0:0 (GPU-1) . Isso é algo que não acontece nos drivers normais do X - se você disser ao driver em xorg.conf para usar somente PCI:3:0:0 , ele só usará este cartão e nunca verá qualquer outro cartão.

Portanto, a única explicação que tenho é que, como os drivers Nvidia de código-fonte fechado usam uma infraestrutura diferente (um driver de kernel unificado muito semelhante para Windows e Linux), os drivers Nvidia simplesmente não são feitos para lidar com esse tipo de situação, ou eles lidam com isso de forma diferente. Contanto que você use os drivers de código fechado, pode muito bem ser que uma única instância do driver de kernel deva direcionar todas as placas disponíveis, e é isso. E ninguém realmente testou usando vários servidores X para se conectar a essa única instância (afinal, a Nvidia até fornece apenas o "TwinView" específico da nvidia para várias telas). Sem falar em usar um driver de kernel para uma placa em uma VM e outro driver de kernel fora da VM.

E se você não puder usar os drivers nouveau , não há como evitar isso.

Você pode tentar usar as opções específicas da Nvidia para 375.39 , por exemplo, defina ProbeAllGpus para FALSE para ambos os servidores. Talvez isso ajude, talvez não. Possivelmente, MultiGPU ajuda, embora eu pense que isso é para uma situação diferente.

Você também pode tentar ConnectedMonitor ou UseDisplayDevice para restringir a exibição de alguma forma.

A maneira de testar essa teoria seria usar duas placas da Nvidia que também são suportadas pelo Nouveau, e então ver se é possível fazer o driver Nouveau funcionar dessa maneira. Infelizmente, não tenho o hardware para fazer isso.

    
por 02.04.2017 / 08:50