Bug 15206 - [dualhead, randr12, ppc] Second head displays nothing
Summary: [dualhead, randr12, ppc] Second head displays nothing
Status: RESOLVED INVALID
Alias: None
Product: xorg
Classification: Unclassified
Component: Driver/nouveau (show other bugs)
Version: unspecified
Hardware: All Linux (All)
: medium normal
Assignee: Nouveau Project
QA Contact: Xorg Project Team
URL:
Whiteboard:
Keywords:
: 19450 (view as bug list)
Depends on: 16171
Blocks:
  Show dependency treegraph
 
Reported: 2008-03-26 01:34 UTC by Robin Johnson
Modified: 2011-03-31 03:27 UTC (History)
3 users (show)

See Also:
i915 platform:
i915 features:


Attachments
Xorg.0.log (142.31 KB, text/plain)
2008-03-26 01:34 UTC, Robin Johnson
no flags Details
xrandr output (dual DVI) (1.00 KB, text/plain)
2008-03-26 01:34 UTC, Robin Johnson
no flags Details
xrandr output, mixed VGA/DVI (1.00 KB, text/plain)
2008-03-26 02:17 UTC, Robin Johnson
no flags Details
Xorg.0.log (28.23 KB, text/plain)
2008-06-19 22:52 UTC, Robin Johnson
no flags Details
Hexdump from /proc/device-tree/pci@0,f0000000/NVDA,Parent@0/NVDA,BMP (26.43 KB, text/plain)
2008-06-20 19:35 UTC, Robin Johnson
no flags Details
20080620_Xorg_nouveau.log (92.53 KB, text/plain)
2008-06-20 19:41 UTC, Robin Johnson
no flags Details
New Xorg.log (200.30 KB, text/plain)
2008-06-21 14:40 UTC, Robin Johnson
no flags Details

Description Robin Johnson 2008-03-26 01:34:08 UTC
Created attachment 15469 [details]
Xorg.0.log

On my PPC, trying to get dualhead working. I get nothing at all on the second display - the LCD thinks that there is no signal. xrandr does show two devices, but xrandr --auto does not active the second head at all.

Platform: PPC64 (G5) w/ 32-bit userspace.
Distro: Gentoo
xf86-video-nouveau git commit: 6924d1ac900524d0978a02f8f8509faab1809b62
x11-drm git commit: a244d2905052d3263bdcc26b295558a354702b89

Graphics card (lspci -nn -s): 
2:0000:0b:00.0 VGA compatible controller: nVidia Corporation NV43 [GeForce 6600] (rev a2)

Display devices:
2x Samsung SyncMaster 206BW.
Comment 1 Robin Johnson 2008-03-26 01:34:39 UTC
Created attachment 15470 [details]
xrandr output (dual DVI)
Comment 2 Maarten Maathuis 2008-03-26 01:42:19 UTC
This is a known issue, the G5's have a 2nd dvi transmitter on their card. We currently don't know how to activate that.
Comment 3 Robin Johnson 2008-03-26 02:13:57 UTC
Any hints/ideas/thumb-sucking on where to probe and muck around?
Comment 4 Robin Johnson 2008-03-26 02:17:52 UTC
Created attachment 15471 [details]
xrandr output, mixed VGA/DVI
Comment 5 Stuart Bennett 2008-05-06 11:37:03 UTC
You might like to try again with an up-to-date checkout. Off-ship dvi is now fixed for nv2x and nv3x x86, but I've no idea about nv4x and PPC :) It will probably help to boot with both monitors plugged so the open firmware stuff can set up as much as possible.
Comment 6 Paulo Zanoni 2008-06-05 11:22:32 UTC
I also have this problem, but on x86.

If I open 1 xserver with 2 nouveau screens, one of the screens will open normally and the other will get black. X won't put anything wrong on the log (as if everything started normally).

Then, if I open an X client and then kill it (like: DISPLAY=:0.0 xterm, and then ctrl+c) the Xserver will crash, and will print something like this:

(EE) NOUVEAU(0): [DRI] Locking deadlock.
        Already locked with context 136431004,
        trying to lock with context 2.
(EE) NOUVEAU(0): Error creating device

Fatal server error:
AddScreen/ScreenInit failed for driver 0


Should "2" be a pointer? Unitialized variable problem?


My xorg.conf is configured to open a screen for each output.



I also discovered that if I use one nouveau in one screen and nv in the other, the same problem will happen.

There is also a related problem that might have the same cause:
If I open 1 xserver with a nouveau screen and a radeonhd screen, both screens will open normally, but when I kill an X client (like opening an xterm and then killing it) the machine will freeze, and won't even respond to ping!

Since both events are triggered when a client dies, they might have the same cause. Maybe they are not related.

Cards I used to test:
GeForce 7300
GeForce fx 5500

And the ATI mentioned as a RS690 (X1200).

Nouveau version is the most recent today.(e034616ab2bbbc486f90c5f64e2bd2de194cf92e)


Pieces of xorg.conf:
#### nvidia1 DVI-to-VGA + VGA ####
Section "Device"
    Identifier     "nvidia1"
    Driver         "nouveau"
    BusID          "PCI:2:0:0"

    Option "monitor-DVI-A-0" "nvidia1-DVI"
    Option "monitor-VGA-0"   "nvidia1-VGA"
EndSection

Section "Monitor"
    Identifier "nvidia1-DVI"
    Option "PreferredMode" "1024x768"
    Option "Enable" "true"
EndSection

Section "Monitor"
    Identifier "nvidia1-VGA"
    Option "PreferredMode" "1024x768"
    Option "Enable" "true"
    Option "RightOf" "nvidia1-DVI"
EndSection

#### nvidia2 DVI cable + VGA####
Section "Device"
    Identifier     "nvidia2"
    Driver         "nouveau"
    BusID          "PCI:3:1:0"

    Option "monitor-DVI-A-0" "nvidia2-DVI"
    Option "monitor-VGA-0"   "nvidia2-VGA"
EndSection

Section "Monitor"
    Identifier "nvidia2-DVI"
    Option "PreferredMode" "1024x768"
    Option "Enable" "true"
EndSection

Section "Monitor"
    Identifier "nvidia2-VGA"
    Option "PreferredMode" "1024x768"
    Option "Enable" "true"
    Option "RightOf" "nvidia2-DVI"
EndSection
Comment 7 Stuart Bennett 2008-06-17 02:32:02 UTC
Paulo, please open a separate bug for your issue; your problem is using two cards simultaneously, the original bug is someone using one card with two monitors.
Comment 8 Robin Johnson 2008-06-19 22:52:06 UTC
Created attachment 17245 [details]
Xorg.0.log

(In reply to comment #5)
> You might like to try again with an up-to-date checkout. Off-ship dvi is now
> fixed for nv2x and nv3x x86, but I've no idea about nv4x and PPC :) It will
> probably help to boot with both monitors plugged so the open firmware stuff can
> set up as much as possible.
Sorry about the delay, but I was busy, and didn't get a chance to test it until now.

It's not moved forward, in fact it's even worse now. X doesn't even start on a single display, let alone get two of them up. Here's the kernel log, and I'll attach the Xorg.log in a moment.

From the kernel:
[   73.994279] [drm] Initialized drm 1.1.0 20060810
[   74.003382] PCI: Unable to reserve mem region #2:10000000@90000000 for device 0000:0b:00.0
[   74.003933] [drm] Detected an NV40 generation card (0x043100a4)
[   74.003940] [drm] Initialized nouveau 0.0.10 drm-2.3.0-1298-g8712f0a17bb135d4a on minor 0
[   74.003974] [drm] Used old pci detect: framebuffer loaded
[   74.004972] [drm] OF bios successfully copied (6447 bytes)

Versions:
xf86-video-nouveau df52dc4664df11d57fcf8a6c9ae3f87a149e5392
x11-drm 8712f0a17bb135d4ad3eb85b30f47c561cf9c148
libdrm 8712f0a17bb135d4ad3eb85b30f47c561cf9c148
mesa d785a0c8b2ff45d07a8d2992d089eb96c04658db (gallium-0.1 branch)
Comment 9 Robin Johnson 2008-06-20 19:35:38 UTC
It's an endian problem.

0x36 into the BIOS, there is a pointer to the DCB.
On PPC, the pointer is _NOT_ swapped. If it does get swapped, then it points to a valid DCB structure. The definitions of le16_to_cpu/le32_to_cpu need changing!

0000030: 0100 0000 b010 0b18 3036 2f32 342f 3035
...
0001810: 18cb bddc 4e85 18d8 18e4 18f0 18fe 1812

See the attached hexdump of NVDA,BMP.
Comment 10 Robin Johnson 2008-06-20 19:35:59 UTC
Created attachment 17275 [details]
Hexdump from /proc/device-tree/pci@0,f0000000/NVDA,Parent@0/NVDA,BMP
Comment 11 Robin Johnson 2008-06-20 19:41:29 UTC
Created attachment 17276 [details]
20080620_Xorg_nouveau.log

After forcibly changing the le{16,32}_to_cpu definitions to do the bswap{16,32}, here's what happens.

The full Xorg.log is attached, but the snippet at the end that catches my eye is:
(II) [drm] DRM interface version 1.3
(II) [drm] DRM open master succeeded.
(II) NOUVEAU(0): [drm] Using the DRM lock SAREA also for drawables.
(II) NOUVEAU(0): [drm] framebuffer handle = 0x98000000
(II) NOUVEAU(0): [drm] added 1 reserved context for kernel
(II) NOUVEAU(0): X context handle = 0x1
(II) NOUVEAU(0): [drm] installed DRM signal handler
(EE) NOUVEAU(0): Failed to allocate memory for framebuffer!


Kernel log:
[84617.583277] [drm] Initialized drm 1.1.0 20060810
[84620.167843] PCI: Unable to reserve mem region #2:10000000@90000000 for device 0000:0b:00.0
[84620.168414] [drm] Detected an NV40 generation card (0x043100a4)
[84620.168423] [drm] Initialized nouveau 0.0.10 drm-2.3.0-1298-g8712f0a17bb135d4a on minor 0
[84620.168461] [drm] Used old pci detect: framebuffer loaded
[84621.597255] [drm] OF bios successfully copied (6447 bytes)
[84621.598177] [drm] OF bios successfully copied (6447 bytes)
[84622.202587] [drm] OF bios successfully copied (6447 bytes)
[84622.203405] [drm] OF bios successfully copied (6447 bytes)
[84622.204114] [drm] OF bios successfully copied (6447 bytes)
[84622.253426] [drm] Allocating FIFO number 0
[84622.266771] [drm] nouveau_fifo_alloc: initialised FIFO 0
[84622.266940] [drm:nouveau_ioctl_getparam] *ERROR* unknown parameter -4611686003779437824
[84622.267055] [drm:nouveau_ioctl_getparam] *ERROR* unknown parameter -4611686003779437824
[84622.267157] [drm:nouveau_ioctl_getparam] *ERROR* unknown parameter -4611686003779437824
[84623.330948] [drm] nouveau_fifo_free: freeing fifo 0
Comment 12 Robin Johnson 2008-06-20 20:07:21 UTC
Tracing the memory allocation failure:
src/nv_driver.c:1556:NVMapMem fails calling nouveau_bo_new(...), returns -ENOMEM;
src/nouveau_bo.c:55:nouveau_bo_new drmCommandWriteRead fails, returns -ENOMEM;
Comment 13 Robin Johnson 2008-06-21 14:39:34 UTC
Ok, I made some very significant progress now. The memory allocation issue was a bug in x11-drm, and was fixed by commit 1915de2c56d71bbd04a7c085cbd35fbe8e33af9d.

The display does come up [1], and xrandr thinks that both outputs work. However, when I do "xrandr --output DVI-D-1 --right-of DVI-D-0", while the taskbar etc all expand, nothing goes onto the second display. The power LED continues it's blinking to indicate there is no signal.

[1] Additionally, the bswap hack seems to have mucked up colors. White comes out as yellow. Magenta and cyan are reversed. Red and green are reversed. Attachment coming soon.
Comment 14 Robin Johnson 2008-06-21 14:40:25 UTC
Created attachment 17284 [details]
New Xorg.log

New Xorg.log that shows both DVI-D-{0,1} coming up on PPC64-32ul / NV43, but there is no actual output on DVI-D-1 yet.
Comment 15 Robin Johnson 2008-06-21 16:23:01 UTC
Ok, the bswap and color issue appears to be because of bug 16171 in xorg-server.
Comment 16 Stuart Bennett 2009-01-07 15:46:11 UTC
*** Bug 19450 has been marked as a duplicate of this bug. ***
Comment 17 Danny 2009-01-07 21:01:55 UTC
Stuart,
we cannot trace the driver on OSX, but we can make register dumps. Would it be useful to dump and compare all known regs under OSX?

d.
Comment 18 Stuart Bennett 2009-01-08 06:49:45 UTC
"maybe" :)

This is why someone with hardware and time/motivation needs to try it; that's certainly a good first method of attack, equally it could be some magic bits in an unknown register.  Worst of all, it may need some I2C init sequence passing to the off-die chip, which makes it fairly hard to work out.

I don't know how much of this is done in OpenFirmware and how much the Mac driver -- if the OF can light up the DVI-I-1 output at boot there's a reasonable chance someone could get it to work.
Comment 19 Lucas Stach 2011-02-15 03:35:14 UTC
This bug is against an ancient version of nouveau. Is this still an issue with recent nouveau?

Please retest. If we get no update within one month I will close this bug. Thanks.
Comment 20 Robin Johnson 2011-02-15 13:04:00 UTC
I no longer own the PPC hardware where the bug occurred, so I cannot test.
Comment 21 Lucas Stach 2011-03-31 03:27:01 UTC
Closing as we can't process this bug further.


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.