-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1
Hi all,
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.
I checked all documentation and it seems writeback does not work on pre rev F. of CPUs. Cache must be always invalidated.
Hmm I have some troubles on Opteron 175. I switched Coreboot to _RAMBASE=3MB and TOPK to 4096, I also fixed the initial cleaning routine to clean just
clear_memory(_RAMBASE, (CONFIG_LB_MEM_TOPK<<10) - DCACHE_RAM_SIZE) );
But CPU never returns from clear_init_ram, maybe some tags get b0rked.
I tried the copy-on-same-place trick and removed the stack relocation and it worked too.
My code looks like this now:
disable_cache_as_ram_bsp(); memcopy((void *)DCACHE_RAM_BASE , (void *)DCACHE_RAM_BASE, DCACHE_RAM_SIZE); __asm__("invd\n"); clear_init_ram();
Also I applied the cleanup patch for cache_as_ram.inc.
Seems to work, except there must be some other problem with resource management. When:
Reading resources .... all entries are listed, but no "Done". I think I have seen this problem already when I removed the call for clear_memory some time ago so something must use some untitialized memory from 0-3MB which is strange. I think it will get work again if I just add clear 0-640KB. I will try before sleep now.
Rudolf