ebiederman@lnxi.com (Eric W. Biederman) writes:
Li-Ta Lo ollie@lanl.gov writes:
Eric,
You put a preprocessor warnning for 64MB MMIO Hole in the amdk8/northbridge.c.
#warning "FIXME improve mtrr.c so we don't use up all of the mtrrs with a 64M MMIO hole"
What exactly is it ? Is that for the AGP aperture (you call it IOMMU_APERTURE) ?
No, although the IOMMU_APERATURE plays a role there. But this was implemented before I implemented the IOMMU_APERATURE code in misc_control.c
The IOMMU_APERATURE is just another large I/O region as far as that code is concerned.
Consider a machine with 4GB of RAM. Not all of the RAM can be used as there are PCI I/O devices at the end of memory. With just positive mtrrs you get:
2GB 1GB 512MB 256MB 128MB 64MB ------ This is where you exhaust all six BIOS mtrrs. 32MB 16MB ------ All 8 mtrrs are exhausted.
So we need to find a way to assign MTRRS. But still be able to assign a write-combining area to the video frame buffer.
The linux mtrr support does not know how to cope with overlapping mtrrs.
I forgot to mention the very elegant solution to this problem.
At some simple power of 2 the Opteron memory is hoisted above 4G. The overlapping mtrrs do not need to be implemented. This is something I would like to play with but I have not yet had the chance.
The meaning of that FIXME is that we are currently misplacing a noticeable chunk of memory on Opteron machines with 4GB of RAM.
Eric