Xorg fails to start on ATI FireMV 2400 quad monitor video card
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
xserver-xorg-driver-ati |
Unknown
|
High
|
|||
xserver-xorg-video-ati (Ubuntu) |
Invalid
|
Low
|
Unassigned |
Bug Description
Using Ubuntu Precise with all latest updates.
[with FireMV 2400 must boot kernel with "nomodeset" otherwise it will hang, bug #1091382 ]
X.Org X Server 1.11.3
Release Date: 2011-12-16
X Protocol Version 11, Revision 0
Build Operating System: Linux 2.6.42-23-generic x86_64 Ubuntu
Current Operating System: Linux tove 3.2.0-34-generic #53-Ubuntu SMP Thu Nov 15 10:48:16 UTC 2012 4
Kernel command line: BOOT_IMAGE=
Build Date: 29 August 2012 12:12:33AM
xorg-server 2:1.11.
Current version of pixman: 0.24.4
Before reporting problems, check http://
to make sure that you have the latest version.
Markers: (--) probed, (**) from config file, (==) default setting,
(++) from command line, (!!) notice, (II) informational,
(WW) warning, (EE) error, (NI) not implemented, (??) unknown.
(==) Log file: "/var/log/
(==) Using config file: "/etc/X11/
(==) Using system config directory "/usr/share/
(II) [KMS] drm report modesetting isn't supported.
[tcsetpgrp failed in terminal_inferior: Operation not permitted]
XRANDR name: DVI-1
Connector: DVI-I
CRT1: INTERNAL_DAC1
DFP1: INTERNAL_TMDS1
DDC reg: 0x60
XRANDR name: DVI-0
Connector: DVI-I
CRT2: INTERNAL_DAC2
DFP2: INTERNAL_DVO1
DDC reg: 0x64
finished output detect: 0
Unhandled monitor type 0
finished output detect: 1
finished all detect
Unhandled monitor type 0
Entering TV Save
Save TV timing tables
s
At this point the system hangs or reboots. When hung there is no response to ping so I guess the GPU has hung the kernel.
ProblemType: Bug
DistroRelease: Ubuntu 12.04
Package: xserver-
ProcVersionSign
Uname: Linux 3.2.0-34-generic x86_64
.tmp.unity.
ApportVersion: 2.0.1-0ubuntu15
Architecture: amd64
CompizPlugins: [core,bailer,
CompositorRunning: None
Date: Mon Dec 17 18:35:45 2012
DistroCodename: precise
DistroVariant: ubuntu
DkmsStatus:
virtualbox, 4.1.12, 3.2.0-32-generic, x86_64: installed
virtualbox, 4.1.12, 3.2.0-33-generic, x86_64: installed
virtualbox, 4.1.12, 3.2.0-34-generic, x86_64: installed
ExtraDebuggingI
GraphicsCard:
Advanced Micro Devices [AMD] nee ATI ES1000 [1002:515e] (rev 02) (prog-if 00 [VGA controller])
Subsystem: Dell PowerEdge T105 Embedded ATI ES1000 [1028:0225]
Advanced Micro Devices [AMD] nee ATI FireMV 2250 [1002:719b] (prog-if 00 [VGA controller])
Subsystem: Advanced Micro Devices [AMD] nee ATI Device [1002:0602]
Subsystem: Advanced Micro Devices [AMD] nee ATI Device [1002:0603]
MachineType: Dell Inc. PowerEdge T105
MarkForUpload: True
ProcKernelCmdLine: BOOT_IMAGE=
SourcePackage: xserver-
UpgradeStatus: Upgraded to precise on 2010-10-30 (778 days ago)
XorgConf:
Section "ServerFlags"
Option "NoTrapSignals" "true"
EndSection
dmi.bios.date: 07/30/2009
dmi.bios.vendor: Dell Inc.
dmi.bios.version: 1.4.4
dmi.board.name: 0RR825
dmi.board.vendor: Dell Inc.
dmi.board.version: A00
dmi.chassis.type: 7
dmi.chassis.vendor: Dell Inc.
dmi.modalias: dmi:bvnDellInc.
dmi.product.name: PowerEdge T105
dmi.product.
dmi.sys.vendor: Dell Inc.
nvidia-
version.compiz: compiz 1:0.9.7.
version.ia32-libs: ia32-libs 20090808ubuntu36
version.libdrm2: libdrm2 2.4.32-1ubuntu1
version.
version.
version.
version.
version.
version.
version.
version.
Changed in xserver-xorg-driver-ati: | |
importance: | Unknown → High |
status: | Unknown → Confirmed |
Changed in xserver-xorg-driver-ati: | |
status: | Confirmed → Unknown |
The FireMV 2400 card is a PCI card with two Radeon M9 chips connected via a PLX
PCI-PCI bridge. The system BIOS only initializes the first M9 but the driver
needs to initialize the second M9, this worked in Xorg 7.0 but doesn't work
anymore in 7.1. The result is the second M9 is completely un initialized and
will hard hang the system as soon as someone tries to access it (like moving the
mouse from screen 2 to 3).
The cause seems that Xorg 7.1 does a better job in detecting PCI-ROMs and finds
the PCI-ROM of the second chip (that is only 2k in size and does not hold the
BIOS, but probably just the chip settings), because it finds the ROM it does not
check if it is a multi device card, and so never initializes the second M9.
The diff shows a way to work around this problem on my (and only my) system, by
checking for the PCI-ID (2:5.0) of the second M9 and skip the BIOS detection
code and directly go to the multi device detection code. With this patch my card
works correctly. Of course this is no real sollution , it jsut shows that the
card does work, and where to look for a possible real solution.
diff -ru xorg-server- 1.1.0.orig/ hw/xfree86/ os-support/ bus/Pci. c 1.1.0.er/ hw/xfree86/ os-support/ bus/Pci. c 1.1.0.orig/ hw/xfree86/ os-support/ bus/Pci. c 2006-05-19 1.1.0.er/ hw/xfree86/ os-support/ bus/Pci. c 2006-06-29
xorg-server-
--- xorg-server-
01:51:34.000000000 +0200
+++ xorg-server-
00:25:52.000000000 +0200
@@ -1305,16 +1305,21 @@
PCITAG *pTag;
int i;
- /* fall back to the old code if the OS code fails */ (Tag, basereg, buf, len); BUS_FROM_ TAG(Tag) == 2) && (PCI_DEV_ FROM_TAG( Tag) == 5) && FROM_TAG( Tag) == 0))) { (Tag, basereg, buf, len);
- if (pciOSHandleBIOS) {
- n = pciOSHandleBIOS
- if (n)
- return n;
- }
+ /* MEGA DIRTY FOR ME ONLY TEST HACK */
+
+ if ( !((PCI_
(PCI_FUNC_
+ /* fall back to the old code if the OS code fails */
+ if (pciOSHandleBIOS) {
+ n = pciOSHandleBIOS
+ if (n)
+ return n;
+ }
- n = handlePciBIOS( Tag, basereg, buf, len );
- if (n)
- return n;
+ n = handlePciBIOS( Tag, basereg, buf, len );
+ if (n)
+ return n;
+
+ }
num = pciTestMultiDev iceCard( PCI_BUS_ FROM_TAG( Tag),
PCI_ DEV_FROM_ TAG(Tag) ,