Hi all,
1) As for NULL checkes I did something similar years ago:
http://www.coreboot.org/pipermail/coreboot/2011-July/065792.html
2) There is a performance impact if you map first 2MB/4MB of RAM via ONE PAE page It is described in intel manual, but I don't recall on which page. I don't know how big the impact is. (there is a impact because of MTRR regions for 0-1MB), so one might use 4KB pages for first 1MB...
3) To solve a problem with legit BDA stuff... Just add some function to remap parts to some other and use virtual address to do that. We might eventually define some region like D-seg to be on 0x0000 instead on 0xd0000 and "problem solved"
4) some processors have bugs in PAT, mainly with WC override. Linux says: /* * There is a known erratum on Pentium III and Core Solo * and Core Duo CPUs. * " Page with PAT set to WC while associated MTRR is UC * may consolidate to UC " * Because of this erratum, it is better to stick with * setting WC in MTRR rather than using PAT on these CPUs. * * Enable PAT WC only on P4, Core 2 or later CPUs. */ if (c->x86 > 0x6 || (c->x86 == 6 && c->x86_model >= 15)) return;
pat_disable("PAT WC disabled due to known CPU erratum."); return;
Thanks Rudolf