Fwd: X.org PCI changes breaks support for Silicon Motion SM720 Lynx3DM card?

Richard Schwarting aquarichy at gmail.com
Mon Dec 1 00:39:20 PST 2008


I have a Silicon Motion SM720 Lynx3DM card which X in Ubuntu 8.10 (and
Fedora 9) will not start on.  The log seems fine but ends with:
 AddScreen/ScreenInit failed for driver 0

The issue it experience seems to have been introduced by changes to X
to use libpciaccess.

Using GDB, and modified source littered with print statements, I see
that it is failing like so:

Xorg's dix/main.c's main() calls AddScreen(), which calls (*pfnInit)(...)
pfnInit points to Silicon Motion's smi_driver.c's SMI_ScreenInit.
SMI_ScreenInit calls SMI_MapMem().
SMI_MapMem calls libpciaccess's common_interface.c's pci_device_map_range().
It finds that the range that wants mapping is already mapped, and
everything falls apart.

The only other time pci_device_map_range() is called (and indeed for
the same region) is earlier when
dix.main.c's main() calls InitOutput(),
InitOutput() called xf86Screen[0]->PreInit(...).
PreInit pointed to Silicon Motion's smi_driver.c's SMI_PreInit()
and SMI_PreInit calls SMI_MapMem (which maps the same region as later
via pci_device_map_range()).

So, I'm going to try and find out what the correct behaviour should be
to fix it, but any hints would be gratefully appreciated.

I've filed bug #18816
(https://bugs.freedesktop.org/show_bug.cgi?id=18816) with regard to

 Richard Schwarting.

More information about the xorg mailing list