Hey Stefan,<br>
<br>
Thanks man.<br>
<br>
Incidentally, does anyone have an example of how to represent 2 southbridges on an HT chain?.. ie:<br>
<br>
CPU0 <---HT---> SB1 <---HT---> SB2<br>
<br>
<br>
having issues figuring it out...<br>
<br>
thanks ;)<br>
<br>
-san<br>
<br><br><div><span class="gmail_quote">On 10/21/05, <b class="gmail_sendername">Stefan Reinauer</b> <<a href="mailto:stepan@openbios.org">stepan@openbios.org</a>> wrote:</span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Hi San,<br><br>this is good stuff, it should go in the tree. If nobody objects, I'll<br>put it in by the end of this weekend. Same for the other patch (gotta<br>check if the last lnxi mega patch doesn't do that one already though)
<br><br>Stefan<br><br>* San Mehat <<a href="mailto:san@google.com">san@google.com</a>> [051021 17:19]:<br>> *****BEGIN CUT*****<br>> Index: hypertransport.c<br>> ===================================================================
<br>> --- hypertransport.c    (revision 2064)<br>> +++ hypertransport.c    (working copy)<br>> @@ -345,12 +345,25 @@<br>>                
/* Wait until the link initialization is complete */<br>>                 do {<br>>                        
ctrl = pci_read_config16(prev.dev, prev.pos +<br>> prev.ctrl_off);<br>>
-                      
/* Is this the end of the hypertransport chain?<br>>
-                        *
Has the link failed?<br>>
-                        *
If so further scanning is pointless.<br>>
-                        */<br>>
-                      
if (ctrl & ((1 << 6) | (1 << 4))) {<br>>
-                              
goto end_of_chain;<br>> +<br>>
+                      
if (ctrl & (1 << 6))<br>>
+                              
goto end_of_chain;      // End of chain<br>> +<br>>
+                      
if (ctrl & ((1 << 4) | (1 << 8))) {<br>>
+                              
/*<br>>
+                                *
Either the link has failed, or we have<br>>
+                                *
a CRC error.<br>>
+                                *
Sometimes this can happen due to link<br>>
+                                *
retrain, so lets knock it down and see<br>>
+                                *
if its transient<br>>
+                                */<br>>
+                              
ctrl |= ((1 << 6) | (1 <<8)); // Link fail +<br>> Crc<br>>
+                              
pci_write_config16(prev.dev, prev.pos +<br>> prev.ctrl_off, ctrl);<br>>
+                              
ctrl = pci_read_config16(prev.dev, prev.pos +<br>> prev.ctrl_off);<br>>
+                              
if (ctrl & ((1 << 4) | (1 << 8))) {<br>>
+                                      
printk_alert("Detected error on<br>> Hypertransport Link\n");<br>>
+                                      
goto end_of_chain;<br>>
+                              
}<br>>                        
}<br>>                
} while((ctrl & (1 << 5)) == 0);<br>><br>> ****END CUT*****<br>><br><br>> --<br>> LinuxBIOS mailing list<br>> <a href="mailto:LinuxBIOS@openbios.org">LinuxBIOS@openbios.org</a><br>> <a href="http://www.openbios.org/mailman/listinfo/linuxbios">
http://www.openbios.org/mailman/listinfo/linuxbios</a><br><br>--<br>LinuxBIOS mailing list<br><a href="mailto:LinuxBIOS@openbios.org">LinuxBIOS@openbios.org</a><br><a href="http://www.openbios.org/mailman/listinfo/linuxbios">
http://www.openbios.org/mailman/listinfo/linuxbios</a><br></blockquote></div><br>