Re: [RFC Patch] use MTRR for write combining if PAT is not available

From: Thomas Schlichter
Date: Wed Oct 14 2009 - 15:15:55 EST


Jan Beulich wrote:
> >>> Thomas Schlichter <thomas.schlichter@xxxxxx> 13.10.09 23:29 >>>
> >No, at least the comments in mtrr_add and mtrr_check state that it is just
> >required that phys_addr and size are multiple of PAGE_SIZE. And I'm not
> > sure if it is always safe to round these up/down to the next PAGE
> > boundary. If it is not, maybe it is better to fail...
>
> That function isn't the limiting factor, generic_validate_add_page() is
> what you need to look at (plus the spec on how the MTRR ranges are
> calculated by the CPU from the base/mask register pairs).

Yes, you are right. Sorry for not looking into generic_validate_add_page()
before. Thank you for showing!

I added a function mtrr_add_unaligned() that tries to create as many MTRR
entries as necessary, beginning with the biggest regions. It does not check
the return values of each mtrr_add(), nor does it return the indexes of the
created MTRR entries. So it seems to be only useful with increment=false. Or
do you have a better idea?

Kind regards,
Thomas