Fatal crash on X startup on Ultra 10
Bug #56427 reported by
John Cooper
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
X.Org X server |
Fix Released
|
High
|
|||
xorg-server (Debian) |
Fix Released
|
Unknown
|
|||
xorg-server (Ubuntu) |
Fix Released
|
Medium
|
Unassigned |
Bug Description
I have an sun sparc Ultra 10 with an ATI 3D Rage Pro 215GP (rev 5c) and I can install Ubuntu server no probs but when I try to install X the box locks up hard, keyboad and network all stopped.
I can't get any useful logs out as it does not get a chance to write them to disk before it crashes!
Changed in xserver-xorg-video-ati: | |
importance: | Undecided → Medium |
status: | Unconfirmed → Confirmed |
Changed in xorg-server: | |
status: | Unknown → Fix Released |
Changed in xorg-server: | |
status: | Unknown → Confirmed |
Changed in xorg-server: | |
status: | Confirmed → Fix Released |
Changed in xorg-server: | |
importance: | Unknown → High |
Changed in xorg-server: | |
importance: | High → Unknown |
Changed in xorg-server: | |
importance: | Unknown → High |
To post a comment you must log in.
The code in hw/xfree86/ os-support/ bus/sparcPci. c:simbaCheckBus ()
is trying to mimmick VGA routing by disabling I/O space responses
behind the Simba PCI-PCI controller.
Unfortunately, doing this also happens to disable access to the
IDE controller I/O space registers, thus crashing the system. The
granularity of the I/O disabling in the Simba controller is not
fine enough to disable VGA without also disabling the IDE controller
registers.
What usually happens is that the SIMBA code disables the I/O range,
and the first module to get loaded afterwards which isn't already in
system ram goes out to disk which hangs. We get no console
messages because the console has been put into framebuffer mode
by the X server already.
This took a painfully long time to track down and debug.
In my opinion this Simba code should be just removed outright.
It cannot work properly without also disabling access to critical
system devices, such as the IDE controller.
The code tries to disable I/O space by clearing the lowest
bit of the APB_IO_ADDRESS_MAP register. The effect of this
is to disable the first 2MB of I/O space behind that bridge,
and it's extremely likely that other critical devices will be
sitting in that region, and thus be disabled too.
Bit 0 of this register controls I/O space in the range
0 --> ((1 << 21) - 1), bit 1 controls I/O space in the
range (1 << 21) --> ((2 << 21) - 1), etc.