64MB MMIO Hole ?

Eric W. Biederman ebiederman at lnxi.com
Tue Feb 10 22:08:00 CET 2004


ebiederman at lnxi.com (Eric W. Biederman) writes:

> Li-Ta Lo <ollie at 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




More information about the coreboot mailing list