[coreboot] [LinuxBIOS] Messing with CAR in a big way

Marc Jones Marc.Jones at AMD.com
Mon Jan 14 17:45:46 CET 2008

ron minnich wrote:
> For reference here is the geode lx disable car. CAR is at 80000. The
> steps are to re-enable cache (for loop), then dirty all the tags for
> the CAR area (cld; rep movsl; etc); then write it all back (wbinvd).
> Works really well.
>         for (i = 0; i < ARRAY_SIZE(msr_table); i++)
>                 wrmsr(msr_table[i].msrnum, msr_table[i].msr);
>         __asm__ __volatile__("cld; rep movsl" ::"D" (DCACHE_RAM_BASE),
> "S" (DCACHE_RAM_BASE), "c" (DCACHE_RAM_SIZE/4): "memory");
>         __asm__ __volatile__ ("wbinvd\n");
> Would be great if this worked on k8.
> Thanks ron

K8 is a bit different than Intel and the Geode in how CAR works. For the 
K8 the cache is always left enabled. I think that means that the tags 
should all be correct and that a copy shouldn't be required, just the 
wbinvd. There has been some discussion about wbind and invd. I have 
always thought that a wbind should work as long as there is memory 
backing that area in cache. I think someone just needs to try it.


Marc Jones
Senior Firmware Engineer
(970) 226-9684 Office
mailto:Marc.Jones at amd.com

More information about the coreboot mailing list