Weird performance behaviour in 7.0

Richard Todd rmtodd at ichotolot.servalan.com
Tue Jan 29 16:15:26 PST 2008


bruce at zuhause.mn.org writes:

> I'm curious, though, should I be worried about the memcontrol list
> entries that are listed as "set-by-firmware active bogus"?
>
> 0x0/0xf080000000 BIOS write-back set-by-firmware active bogus 
> 0x80000000/0xf040000000 BIOS write-back set-by-firmware active bogus 
> 0xc0000000/0xf010000000 BIOS write-back set-by-firmware active bogus 
> 0xcf800000/0xf000800000 BIOS uncacheable set-by-firmware active bogus 
> 0xcf700000/0xf000100000 BIOS uncacheable set-by-firmware active bogus 
> 0x100000000/0xf020000000 BIOS write-back set-by-firmware active bogus 
> 0x120000000/0xf008000000 BIOS write-back set-by-firmware active bogus 

Worried that it says "bogus"?  No, not really.  This is, as I said earlier,
the result of an issue in the amd64 machdep.c code for handling MTRRs --
it was written for the original amd64 where the "size" field of the MTRR
was a certain width.  On Core 2 Duo these fields are 4 bits shorter, so
the machdep.c code looks at 4 more bits from that register than it should and
so all the size fields have that leading "f" digit.  This causes the sizes
to no longer be a power of two, which causes machdep.c to set the "bogus" 
flag because those entries look funny.  The "bogus" flag being set doesn't
seem to actually break anything, and as near as I can figure if you change
the memcontrol entries the correct data gets written back to the registers
even on Core2Duo, so the "bogus" warnings seem to be pretty harmless.  



More information about the freebsd-current mailing list