X server on Linux 2.4
Bryan Henderson
bryanh at giraffe-data.com
Mon Jan 3 11:34:38 PST 2011
>this could probably use the HURD direct to pci backend, and some /dev/mem.
An excellent suggestion, which saved me a lot of effort. The new x86_pci
libpciaccess backend appears to work perfectly on Linux 2.4 on x86.
I can't confirm yet that this libpciaccess change is the only thing needed to
make current X.org work on Linux 2.4, as I am still working through other
problems building and configuring a server, but the log shows that the server
is finding the PCI video controller and talking to it to get monitor
information.
For anyone reading this in archives, here are the details of what I did: In
current (7.6) X.org, built for Linux, libpciaccess uses sysfs to access PCI
device information, via a backend called linux_sysfs. When built for GNU
Hurd, it instead uses x86 in and out instructions, using a backend called
x86_pci. x86_pci is new in 7.6 -- 7.5 can't run on Hurd. Though x86_pci is
used only for Hurd, the code is designed to work additionally on anything that
uses GNU libc, such as Linux. It has conditional compilation to handle the
non-Hurd glibc case, and in that case uses iopl(), outb(), etc. to execute raw
I/O instructions.
I made a one line change to C code and a one line change to the make file to
make libpciaccess use x86_pci instead of linux_sysfs when built for Linux.
That seems to be all that's needed.
Note that this works on Linux 2.4 on x86, not Linux 2.4 in general. A
/proc/bus/pci or pciutils libpci approach would presumably work on all Linux
2.4.
--
Bryan Henderson San Jose, California
More information about the xorg
mailing list