Re: Pentium DEATH in user-mode

Andre Derrick Balsa (andrewbalsa@usa.net)
Sun, 09 Nov 1997 03:48:34 +0100


Hi Alan,

Alan Cox wrote:
>
...
> I've been through most Linux drivers a lot of times. On most CPU's (ie non PC)
> Linux "locked" operations are not bus atomic anyway and things are fine for
> the kernel. On devices very few busses propogate "lock" or equivalent
> "read-modify-write" cycles to I/O devices, let alone use them.

Exactly. I am testing the NO-LOCK option right now and I don't expect to
run into any problems from the linux kernel or its drivers. :-)

On the other hand there could be a problem with PCI memory mapped I/O
devices, like some video chips (the Matrox chips use memory-mapped I/O,
as well as the ET6000). :-(

But now here is an interesting feature of the 6x86: you can define
weak-locking (i.e. the same effect as the NO_LOCK flag) for specific
memory regions, using the ARRs. So, we can have Weak Locking set for
normal memory and Strong Locking enforced for the rest of the address
space or some specific regions. :-)

>
> Perhaps the kernel cyrix patch should handle this automatically.
>

No, the cyrix patch does not setup the ARRs. That's too system specific
(i.e. it varies from one machine to another), it simply can't be done
automatically.

Again, a simple system check (taking a look at /proc/pci) and correct
configuration of the ARRs using set6x86 will solve the problem.

The Weak Locking bit that should be set is bit 2 in RCR7 (0xe3). Here is
the corresponding set6x86 command:

set6x86 -p 0xe3 -s 0x04

Usually ARR7 will have been correctly setup by the motherboard BIOS,
except for the Weak Locking bit. Anyway, you can easily read the ARR
settings and experiment with them using set6x86 version 1.3: it has a
special utility just for this purpose.

Cheers,

========================================================
Andrew D. Balsa
Home Page: http://www.tux.org/~balsa
andrewbalsa@usa.net
========================================================