Jan Beulich wrote: > >>> Thomas Schlichter 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