Patchwork K8 SMP broken?

login
register
about
Submitter Rudolf Marek
Date 2010-08-12 19:54:49
Message ID <4C645189.6050008@assembler.cz>
Download mbox | patch
Permalink /patch/1735/
State New
Headers show

Comments

Rudolf Marek - 2010-08-12 19:54:49
> Anyone feeling guilty? ;-)

Is it pre fam10h? It was always big mystery for me how it can work ;) The AP got 
the SAME stack... If you don't believe check for yourself. I think simple fix 
would be to do same thing as FAM10h code is doing.

Please can you try attached patch? Dunno if it works looks like it could.

Thanks,
Rudolf
Oskar Enoksson - 2010-08-16 19:59:17
Torsten Duwe wrote:
> On Thursday 12 August 2010 21:54:49 Rudolf Marek wrote:
>
>   
>> Is it pre fam10h? It was always big mystery for me how it can work ;) The
>> AP got the SAME stack... If you don't believe check for yourself. 
>>     
>
> Oskar seems to be succesful with the current code. Oskar, do you have 
> the old 248s running or did you upgrade to the 280s first?
>   
I tried to put my latest flashimage into a dual 248 server, and I had
the same behaviour that Rudolf described: an infinite loop or resets.

With some DIMM configurations I have seen the same behaviour with the
dual 280 also. Perhaps it's a memory configuration problem.
Mick Reed - 2010-08-17 03:39:42
>Torsten, what CPUs do you have?  I have a s2885 with 290s, I can easily* test your rom.

Sorry, I can't test it as easily* as I thought - nevermind.

Patch

Index: cache_as_ram.inc
===================================================================
--- cache_as_ram.inc	(revision 5666)
+++ cache_as_ram.inc	(working copy)
@@ -290,14 +290,11 @@ 
 	andl	$0x9fffffff, %eax
 	movl	%eax, %cr0
 
-	jmp_if_k8(fam10_end_part1)
-
 	/* So we need to check if it is BSP */
 	movl	$0x1b, %ecx
 	rdmsr
 	bt	$8, %eax /*BSC */
-	jnc	CAR_FAM10_ap
-fam10_end_part1:
+	jnc	CAR_ap
 
 	post_code(0xa2)
 
@@ -319,8 +316,8 @@ 
 
 	post_code(0xa3)
 
-	jmp	CAR_FAM10_ap_out
-CAR_FAM10_ap:
+	jmp	CAR_ap_out
+CAR_ap:
 	/* need to set stack pointer for AP */
 	/* it will be from CacheBase + (CacheSize - GlobalVarSize)/2 - (NodeID<<CoreIDbits + CoreID) * CacheSizeAPStack*/
 	/* So need to get the NodeID and CoreID at first */
@@ -361,7 +358,7 @@ 
 
 	post_code(0xa4)
 
-CAR_FAM10_ap_out:
+CAR_ap_out:
 
 	post_code(0xa5)