X server on Linux 2.4

Dave Airlie airlied at gmail.com
Tue Jan 4 00:59:52 PST 2011


On Tue, Jan 4, 2011 at 5:34 AM, Bryan Henderson <bryanh at giraffe-data.com> wrote:
>>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.

Yeah the problems with the direct to PCI backend is can possibly race
against the kernel
PCI routines so it might not be safe always.

Going via /proc/bus/pci like the old X server code would work in some
cases, however
you'll quickly run into all the issues on non-x86 or domain using x86
arches that caused
the headaches in the first place.

Dave.



More information about the xorg mailing list