Re: linux-2.3.31: drivers/char/drm/drmP.h does not allow 386 build

Rik Faith (faith@precisioninsight.com)
Thu, 9 Dec 1999 05:37:20 -0500 (EST)


On Wed 8 Dec 1999 22:38:31 -0800,
Adam J. Richter <adam@yggdrasil.com> wrote:
>
> As of linux-2.3.31, drivers/char/drm/drmP.h deliberately aborts
> the compile the CPU type in the kernel build is configured to be 386.
> The problem is that this is the way that one builds a kernel that can
> run on any x86 (to avoid things like generating the BSWAP instruction,
> which the 386 lacks). It does not necessarily mean that the CPU is
> actually a 386. This change to drmP.h makes it impossible to build a fully
> configured for the full x86 processor family. If there is some reason
> why the "direct rendering infrastructure" should not run on a 386, then
> this check should be done at run time, not compile time.

We need to use the CMPXCHG instruction for fast locking, and this
instruction is not available on the 386. Would it be sufficient if we
compiled using the CMPXCHG instruction and then did a run-time test for the
386 and never executed this instruction? This is approximately what we did
before 2.3.31. (386s are too slow to make direct-rendering a viable
option, so we don't support the DRI on 386s [and all modern graphics cards
are PCI or AGP, and most (all?) 386s don't have these busses available].)

I'll CC Richard Henderson, since this impacts i386 and Alpha kernel include
files. The other alternative is to implement the generic cmpxchg routine
for 386's using other instructions, but this seems like a waste of effort
if no one will ever use the routine.

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/