MTRR patch v1.5

Richard Gooch (rgooch@atnf.CSIRO.AU)
Mon, 19 Jan 1998 17:36:55 +1100


Hi, Linus. Below is v1.5 of my MTRR patch (set Memory Type Range
Registers to speed frame-buffer access by 2.5x). It includes a patch
by David Wragg <dpw@doc.ic.ac.uk> to properly set the passive-release
enable bit (some BIOSes don't do this).

Could this go into 2.1.80 please?

Regards,

Richard....

begin 644 mtrr-patch-v1.5.gz
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
AY<)@&25#+6X[2D>.[FF[*9<$TSF)^LO_`(:JPQ-2J```
`
end