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
Hello.
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
this.
Cheers,
Richard Schwarting.
More information about the xorg
mailing list