> I would really like to make linux work nicely on machines with
> dual-speed ram. I have 20Meg and only 16Meg are cacheable. When top
> 4Meg are used, machine goes to speed about speed of 386... I made some
> patch but it is not too good. (Mail me for it).
thinking about it (without knowing what your patch does), a reasonably
fast and scalable solution is to 'split' page-freelists, and put a wrapper
on top of them to shield this dualness from the rest of gfp() [the
bitmap/buddy part]. The policy then is to allocate from the 'preferred'
freelist always, if possible, and free a page into the correct list
always.
this issue is much different from the low-16M ISA DMA allocation feature,
as we are not forced to pick a 'good' page.
with some clever code we could even auto-detect (and report) caching
anomalies (and work around them), cache behavior is quite predictable if
we are cli()-ed...
-- mingo