MTRR v1.6 released

Richard Gooch (rgooch@atnf.CSIRO.AU)
Sat, 31 Jan 1998 22:59:17 +1100


Hi, all. Appended is my MTRR (set Memory Type Range Registers) patch
v1.6. This is against kernel 2.1.84.

New features since v1.5:

- PCI quirks patch by David Wragg <dpw@doc.ic.ac.uk>

- replaced global kernel lock with private spinlock

Regards,

Richard....

begin 644 mtrr-patch-v1.6.gz
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
J22?P)?>X^8:!_'$L'W7#<&B\==J*$JQ(*B??B')DB'KVOZ4(GEBEO0``
`
end