Bug 193975 - MGA 2064W hangs in dual-head setup
MGA 2064W hangs in dual-head setup
Status: CLOSED UPSTREAM
Product: Fedora
Classification: Fedora
Component: xorg-x11-drv-mga (Show other bugs)
5
All Linux
medium Severity medium
: ---
: ---
Assigned To: X/OpenGL Maintenance List
:
Depends On:
Blocks:
  Show dependency treegraph
 
Reported: 2006-06-03 12:57 EDT by Enrico Scholz
Modified: 2007-11-30 17:11 EST (History)
0 users

See Also:
Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of:
Environment:
Last Closed: 2006-06-07 04:28:30 EDT
Type: ---
Regression: ---
Mount Type: ---
Documentation: ---
CRM:
Verified Versions:
Category: ---
oVirt Team: ---
RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: ---


Attachments (Terms of Use)


External Trackers
Tracker ID Priority Status Summary Last Updated
FreeDesktop.org 7103 None None None Never

  None (edit)
Description Enrico Scholz 2006-06-03 12:57:03 EDT
[I file this ticket for tracking purpose; upstream report is at
 https://bugs.freedesktop.org/show_bug.cgi?id=7103]

Description of problem:

When having a primary AGP graphic cards (in my case an ATI Radeon
RV100 QY) and a PCI Matrox MGA 2064W, X will hang at startup.

This happens because the BIOS address can not be determined; the
interesting code is in mga_driver.c

| static Bool
| MGAPreInit(ScrnInfoPtr pScrn, int flags)
|
|     if (pMga->device->BiosBase != 0) {
|         /* XXX This isn't used */
|         pMga->BiosAddress = pMga->device->BiosBase;
|         pMga->BiosFrom = X_CONFIG;
|     } else {
|         /* details: rombase sdk pp 4-15 */
|         if (pMga->PciInfo->biosBase != 0) {
|             pMga->BiosAddress = pMga->PciInfo->biosBase & 0xffff0000;
|             pMga->BiosFrom = X_PROBED;
|         } else if (pMga->Primary) {
|             pMga->BiosAddress = 0xc0000;
|             pMga->BiosFrom = X_DEFAULT;
|         }
|     }

In my case, both pMga->device->BiosBase and pMga->PciInfo->biosBase
are NULL and pMga->Primary is false.

Therefore, 'pMga->BiosAddress == 0' will hold. Then, the startup will
hang somewhere in

|    mga_read_and_process_bios( pScrn );                                                               


Skipping this operation (like in the '#if defined(__alpha__)'
conditional), will continue the startup process but:

* it will hang later somewhere in int10, or (when not loading the
  int10 module),
* X will startup, but will assume wrong capabilities so that I have
  only a 640x480 screen.



I fixed the issue by applying

|-         } else if (pMga->Primary) {
|+         } else if (pMga->Primary || 1) {

to the code above and X runs without problems.

Environment:
Fedora Core 5, xorg-x11-drv-mga-1.2.1.3-1.2

| 00:0e.0 VGA compatible controller: Matrox Graphics, Inc. MGA 2064W [Millennium] (rev 01) (prog-if 00 [VGA])
| 01:00.0 VGA compatible controller: ATI Technologies Inc Radeon RV100 QY [Radeon 7000/VE] (prog-if 00 [VGA])


vanilla 2.6.16 kernel; mga-fb kernel driver *IS* activated


xorg-x11 from Fedora Core 4 (xorg-x11-6.8.2) worked without problems
on this hardware.


Version-Release number of selected component (if applicable):

xorg-x11-drv-mga-1.2.1.3-1.2


How reproducible:
100%
Comment 1 Mike A. Harris 2006-06-07 04:28:30 EDT
Thanks for the report.  We'll monitor the X.Org report, and once the issue
is resolved, we'll review the final solution, and consider including it in
a future FC update.

Thanks again.

Note You need to log in before you can comment on or make changes to this bug.