Bug 171453 - Dual head configuration doesn't work in 10.1 RC2
Dual head configuration doesn't work in 10.1 RC2
Status: RESOLVED FIXED
Classification: openSUSE
Product: SUSE Linux 10.1
Classification: openSUSE
Component: X.Org
RC 2
i686 SuSE Linux 10.1
: P3 - Medium : Critical (vote)
: ---
Assigned To: Stefan Dirsch
Stefan Dirsch
:
Depends on:
Blocks:
  Show dependency treegraph
 
Reported: 2006-05-02 01:39 UTC by Rajko Matovic
Modified: 2006-06-03 08:05 UTC (History)
4 users (show)

See Also:
Found By: Customer
Services Priority:
Business Priority:
Blocker: ---
Marketing QA Status: ---
IT Deployment: ---


Attachments
10.1 RC2 /etc/X11/xorg.conf (7.08 KB, text/plain)
2006-05-03 23:10 UTC, Rajko Matovic
Details
old log with "ati" driver Xorg.0.log.old (48.50 KB, text/plain)
2006-05-03 23:15 UTC, Rajko Matovic
Details
Xorg.0.log produced using xorg.conf from 10.1 in 10.0 (62.65 KB, text/plain)
2006-05-09 05:51 UTC, Rajko Matovic
Details
Original patch (3.77 KB, patch)
2006-05-23 09:20 UTC, Stefan Dirsch
Details | Diff
Adjusted patch (3.19 KB, patch)
2006-05-23 10:50 UTC, Stefan Dirsch
Details | Diff
Egbert's patch (8.21 KB, patch)
2006-06-02 10:28 UTC, Stefan Dirsch
Details | Diff
adjust Egbert's patch to our sources (8.04 KB, patch)
2006-06-02 11:13 UTC, Stefan Dirsch
Details | Diff
xorg-x11-server-6.9.0-57.i586.rpm (3.08 MB, application/octet-stream)
2006-06-02 13:48 UTC, Stefan Dirsch
Details
xorg-x11-server-6.9.0-57.x86_64.rpm (3.36 MB, application/octet-stream)
2006-06-02 13:53 UTC, Stefan Dirsch
Details
Xorg.0.log after installing xorg-x11-server-6.9.0-57.i586.rpm (52.64 KB, text/x-log)
2006-06-03 08:00 UTC, Rajko Matovic
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Rajko Matovic 2006-05-02 01:39:46 UTC
Dualboot system 10.0 and 10.1. 
Dual head with nVidia MX4000 and ATI Rage graphic adapters. 
Works fine in 10.0 retail. 
Problem is that old ATI Rage is not initialized. 

In Xorg.0.log for 10.0 is loaded 
/usr/X11R6/lib/modules/linux/libint10.a then 
/usr/X11R6/lib/modules/libddc.a then 
/usr/X11R6/lib/modules/libvbe.a
and than read ATI adapter data. 

In 10.1 log is this: 
(==) ATI(0): Chipset:  "ati".
(**) ATI(0): Depth 24, (--) framebuffer bpp 32
(II) Loading sub module "int10"
(II) LoadModule: "int10"
(II) Loading /usr/X11R6/lib/modules/linux/libint10.so
(II) Module int10: vendor="X.Org Foundation"
        compiled for 6.9.0, module version = 1.0.0
        ABI class: X.Org Video Driver, version 0.8
(EE) ATI(0): Cannot read V_BIOS
(WW) ATI(0): Unable to initialise int10 interface.
(EE) ATI(0): Adapter has not been initialised.

and it continues with nvidia.
Comment 1 Christian Boltz 2006-05-02 12:37:26 UTC
Does the behaviour change if you choose another driver in /etc/X11/xorg.conf?
Your current xorg.conf probably contains
    Driver "radeon"

SUSE 10.1 contains two more radeon drivers:
    Driver "radeonold"
    Driver "radeon10b"
Does it help if you replace "radeon" with one of them?
Comment 2 Rajko Matovic 2006-05-02 23:53:53 UTC
The driver in xorg.conf is "ati" the same as in snipplet from Xorg.0.log. 
The card is old PCI ATI 3D Rage II+DVD correctly recognized in 10.0 retail. 
The problem is only with 10.1 RC2 where is used libint10.so. The old libint10.a in 10.0 retail Xorg 6.8.2 works fine. Another installation using Xorg 6.8.2 is fine using libint10.a too. 

In the mean time I updated xorg from factory, but it doesn't change anything. 
Comment 3 Stefan Dirsch 2006-05-03 13:34:18 UTC
Could you attach the Xserver config and logfile? Thanks.
Comment 4 Rajko Matovic 2006-05-03 23:10:38 UTC
Created attachment 81895 [details]
10.1 RC2 /etc/X11/xorg.conf
Comment 5 Rajko Matovic 2006-05-03 23:15:52 UTC
Created attachment 81896 [details]
old log with "ati" driver Xorg.0.log.old

This is old log with ati driver.
Comment 6 Rajko Matovic 2006-05-03 23:36:24 UTC
Comment on attachment 81895 [details]
10.1 RC2 /etc/X11/xorg.conf

In xorg.conf is 
       Xinerama "off" 
It was left that way last night after installing all of xorg from factory, and running sax2 again. It can be manually changed to "on", (I did that before update) but it doesn't change the result:"No second screen at all". Server doesn't crash, just silently ignores Xinerama.
Comment 7 Stefan Dirsch 2006-05-04 05:58:57 UTC
Honestly dualhead configurations with two different graphic cards (especially when one is a onboard GPU) have become more and more problematic in the past. :-( I would recommend buying a dualhead card instead.
Comment 8 Rajko Matovic 2006-05-05 00:08:41 UTC
Stefan, 

I have that working fine with xorg 6.8.2. and not with 6.9.0, so it might be indication of more hidden problems. The V_BIOS is not found? How come?
My guess libint10 is used by the driver to read video BIOS data. The ati driver is compiled for old libint10.a and can't use libint10.so, there was more to change, not only the name of the library, so now it fails. 
 
Recommendation to buy dual head card is fine, but I'm not that much consumer ;-)
I can live even with onboard as long as it keeps with demands. 
Comment 9 Stefan Dirsch 2006-05-05 03:53:59 UTC
This one:

programs/Xserver/hw/xfree86/os-support/linux/int10/linux.c:
[...]
        case BUS_PCI:
        {
            int pci_entity;
            
            if (bios.bus == BUS_PCI)
                pci_entity = xf86GetPciEntity(bios.location.pci.bus,
                                              bios.location.pci.dev,
                                              bios.location.pci.func);
            else 
                pci_entity = pInt->entityIndex;
            if (!mapPciRom(pci_entity, (unsigned char *)(V_BIOS))) {
                xf86DrvMsg(screen, X_ERROR, "Cannot read V_BIOS\n");
                goto error3;
            }
            pInt->BIOSseg = V_BIOS >> 4;
            break;
        }
[...]
BTW, zero changes in this file since X.Org 6.8.2 ...

It might help to see a Xserver logfile for X.Org 6.8.2 (with the same config file).
Comment 10 Rajko Matovic 2006-05-07 18:15:16 UTC
Default compilation of xorg 6.9.0 with make World, make install has the same problem. I would like to look into, but to skip gueswork I would need to know what are the changes that you made. 

BTW binary copy of X 10.0 installation with few softlinks to resolve missing libraries works with the rest of the system in Xinerama mode. 
Comment 11 Stefan Dirsch 2006-05-08 22:33:50 UTC
You did see my question in comment #9? "It might help to see a Xserver logfile for X.Org 6.8.2 (with the same config file)."
Comment 12 Rajko Matovic 2006-05-09 05:51:34 UTC
Created attachment 82552 [details]
Xorg.0.log produced using xorg.conf from 10.1 in 10.0

Modelines in this xorg.conf are different and make trouble to both monitors, but it works. 

BTW, when I asked for info that was just because I'm used to help my self, but as anyone I'd like not to invent hot water, if possible.
Comment 13 Stefan Dirsch 2006-05-09 06:29:01 UTC
Hmm ...

-(II) Loading /usr/X11R6/lib/modules/linux/libint10.so
+(II) Loading /usr/X11R6/lib/modules/linux/libint10.a
 (II) Module int10: vendor="X.Org Foundation"
-       compiled for 6.9.0, module version = 1.0.0
-       ABI class: X.Org Video Driver, version 0.8
-(EE) ATI(0): Cannot read V_BIOS
-(WW) ATI(0): Unable to initialise int10 interface.
-(EE) ATI(0): Adapter has not been initialised.
+       compiled for 6.8.2, module version = 1.0.0
+       ABI class: X.Org Video Driver, version 0.7
+(II) Truncating PCI BIOS Length to 32768
+(II) Loading sub module "ddc"
[...]
+(II) Loading sub module "vbe"
+(II) LoadModule: "vbe"
+(II) Loading /usr/X11R6/lib/modules/libvbe.a
+(II) Module vbe: vendor="X.Org Foundation"
+       compiled for 6.8.2, module version = 1.1.0
+       ABI class: X.Org Video Driver, version 0.7
+(II) ATI(0): VESA BIOS detected
[...]
Comment 14 Rajko Matovic 2006-05-10 03:18:04 UTC
That means back to square one. 
The ddc and vbe modules are not loaded (comment #1). 

I'll need some time to get back to clean system with development packages and debug info, than reload xc and start looking. 
I hope that you noticed comment that default Xorg sources compiled with "make World" give the same result. X system doesn't start, but Xorg.0.log has the same error. They have v.7.0 and fixing some exotic feature like dual display in 6.9 would probably 
Comment 15 Rajko Matovic 2006-05-10 03:20:21 UTC
(continue-sorry for this)
not rank very high on their top list. 

R.
Comment 16 Rajko Matovic 2006-05-21 15:23:33 UTC
I looked on X.org and found this:
https://bugs.freedesktop.org/show_bug.cgi?id=6751
with bugfix:
https://bugs.freedesktop.org/attachment.cgi?id=5483
taking date of bugfix:
hw/xfree86/os-support/bus/Pci.h	26 Apr 2006 09:42:29 -0000
and all activity aroung 10.1 GM this was probably too late to apply. 

This was tested:
https://bugs.freedesktop.org/show_bug.cgi?id=2597
and I can confirm that any adapter as secondary in BIOS is not initialized.

This is almost the same I have:
https://bugs.freedesktop.org/show_bug.cgi?id=6632

There is one more idea for adapters that must be listed as primary during POST, but I can't find the related bug. 

As metioned in comment#10 compiling default source with make World gives different layout when installed than the one SUSE has. I would like to know how to include patch in SUSE 10.1 installation of Xorg.
Comment 17 Stefan Dirsch 2006-05-21 15:43:58 UTC
Thanks, Rajko. Egbert, do you see any problems applying the mentioned patch for SLE10?

Comment 18 Egbert Eich 2006-05-22 11:54:33 UTC
Yeah, as I mentioned in the upstream patch already: this seems to be a good
solution. It's in 7.1. Please take it.
Comment 19 Stefan Dirsch 2006-05-22 12:49:00 UTC
Thanks. Sorry, I missed your comment in the upstream bugreport.
Comment 20 Stefan Dirsch 2006-05-23 09:20:46 UTC
Created attachment 84734 [details]
Original patch

Unfortunately the original needs to be heavily adjusted for  X.Org 6.9/7.0 since major changes has been done in Pci.c/linuxPci.c for X.Org 7.1. :-(
Comment 21 Stefan Dirsch 2006-05-23 10:50:51 UTC
Created attachment 84746 [details]
Adjusted patch

But I'm pretty sure I did something wrong. :-(

Pci.c:1388: warning: passing argument 3 of 'pciOSHandleBIOS' from incompatible pointer type
Pci.c:1388: warning: passing argument 4 of 'pciOSHandleBIOS' makes integer from pointer without a cast
Comment 22 Stefan Dirsch 2006-05-23 10:52:53 UTC
Egbert, I'm afraid you need to have a look at this. I don't want to break RC3 completely because of this.
Comment 23 Egbert Eich 2006-05-24 08:40:03 UTC
This is dangerous:
if (pciOSHandleBIOS) {
if the pointer not zeroed before.
Maybe you should explicitely zero the function pointer in the declaration.
Was this really in the original code? (Seems it was...)
+    if ((fd = open(file, O_RDWR)))
+      basereg = 0x0;
+    
+    /* enable the ROM first */
+    write(fd, "1", 2);
+    lseek(fd, 0, SEEK_SET);
Looks strange....
One would expect:
if (stat(file, &st) == 0 && (fd = open(file, O_RDWR)))
touching basereg doesn't really make sense.
Comment 24 Stefan Dirsch 2006-05-24 10:07:37 UTC
Thanks for checking. Honestly I was concerned about the parameter types of HandlePciBios/handlePciBIOS. These have been changed from

  PCITAG, int, int (*func)(PCITAG, CARD8*, ADDRESS, pointer), pointer

to

  PCITAG, int, unsigned char*, int

The warnings you see in comment #3 did *not* occur in the output before I applied my patch.

The code you mentioned above is still in X.Org 7.1.
Comment 25 Stefan Dirsch 2006-05-25 19:07:41 UTC
Egbert is going to rewrite the patch for RC3.
Comment 26 Rajko Matovic 2006-05-25 20:13:16 UTC
Stefan, 
You refered to RC3 couple of times. If that would be Release Candidate 3, for what version. Would be that available for download and testing in publicly accessible openSUSE Factory tree? 
Comment 27 Stefan Dirsch 2006-05-25 20:19:30 UTC
sorry, I've meant SLES/SLED RC3. I plan to provide an update for SUSE 10.1 when SLES10/SLED10 has been released.
Comment 28 Rajko Matovic 2006-05-26 04:42:32 UTC
I thought so as 10.1 is behind and 10.2 is to come. 
Now I have to see how to fix broken updater, to be able to use patch ;-)


Comment 29 Stefan Dirsch 2006-05-29 15:33:17 UTC
I tried to reproduce this one with a very similar setup on my P2 machine:

# sax2 -p
Chip: 0  is -> ATI Mach64 GR                    00:09:0 0x1002 0x4752 PCI ati
Chip: 1  is -> NVidia GeForce4 MX 440           01:00:0 0x10de 0x0171 AGP nv

Unfortunately I can't reproduce it. :-(

So once we have a patch/driver ready, we need you for testing, Rajko.
Comment 30 Rajko Matovic 2006-05-29 21:24:21 UTC
You want to say it works fine on P2. 
I should find where is that ATI Mach64 GR :-)

No problems. It will be special pleasure if it wakes up second screen. 
Comment 31 Stefan Dirsch 2006-06-01 19:17:46 UTC
> Egbert is going to rewrite the patch for RC3.
Egbert, anything ready, which we could submit for RC3?
Comment 32 Stefan Dirsch 2006-06-02 10:28:33 UTC
Created attachment 86809 [details]
Egbert's patch
Comment 33 Stefan Dirsch 2006-06-02 11:13:11 UTC
Created attachment 86821 [details]
adjust Egbert's patch to our sources
Comment 34 Stefan Dirsch 2006-06-02 13:39:38 UTC
- added patch to our xorg-x11 package
- submitted package
- fixed for SLE10 RC3.
Comment 35 Stefan Dirsch 2006-06-02 13:48:23 UTC
Created attachment 86891 [details]
xorg-x11-server-6.9.0-57.i586.rpm
Comment 36 Stefan Dirsch 2006-06-02 13:53:59 UTC
Created attachment 86895 [details]
xorg-x11-server-6.9.0-57.x86_64.rpm
Comment 37 Rajko Matovic 2006-06-03 06:03:13 UTC
Installed with 
        rpm -Fvh xorg* 
and started server. 
GUI works without reconfiguration.

Thanks Stefan.
Comment 38 Stefan Dirsch 2006-06-03 06:31:23 UTC
Thanks for checking! Would be good to see the new logfile for doublechecking.
Comment 39 Rajko Matovic 2006-06-03 08:00:06 UTC
Created attachment 87032 [details]
Xorg.0.log after installing xorg-x11-server-6.9.0-57.i586.rpm
Comment 40 Stefan Dirsch 2006-06-03 08:05:44 UTC
Thanks! Looks really good now. :-)