Hey Stefan,

Thanks man.

Incidentally, does anyone have an example of how to represent 2 southbridges on an HT chain?.. ie:

CPU0 <---HT---> SB1 <---HT---> SB2


having issues figuring it out...

thanks ;)

-san


On 10/21/05, Stefan Reinauer <stepan@openbios.org> wrote:
Hi San,

this is good stuff, it should go in the tree. If nobody objects, I'll
put it in by the end of this weekend. Same for the other patch (gotta
check if the last lnxi mega patch doesn't do that one already though)

Stefan

* San Mehat <san@google.com> [051021 17:19]:
> *****BEGIN CUT*****
> Index: hypertransport.c
> ===================================================================
> --- hypertransport.c    (revision 2064)
> +++ hypertransport.c    (working copy)
> @@ -345,12 +345,25 @@
>                 /* Wait until the link initialization is complete */
>                 do {
>                         ctrl = pci_read_config16(prev.dev, prev.pos +
> prev.ctrl_off);
> -                       /* Is this the end of the hypertransport chain?
> -                        * Has the link failed?
> -                        * If so further scanning is pointless.
> -                        */
> -                       if (ctrl & ((1 << 6) | (1 << 4))) {
> -                               goto end_of_chain;
> +
> +                       if (ctrl & (1 << 6))
> +                               goto end_of_chain;      // End of chain
> +
> +                       if (ctrl & ((1 << 4) | (1 << 8))) {
> +                               /*
> +                                * Either the link has failed, or we have
> +                                * a CRC error.
> +                                * Sometimes this can happen due to link
> +                                * retrain, so lets knock it down and see
> +                                * if its transient
> +                                */
> +                               ctrl |= ((1 << 6) | (1 <<8)); // Link fail +
> Crc
> +                               pci_write_config16(prev.dev, prev.pos +
> prev.ctrl_off, ctrl);
> +                               ctrl = pci_read_config16(prev.dev, prev.pos +
> prev.ctrl_off);
> +                               if (ctrl & ((1 << 4) | (1 << 8))) {
> +                                       printk_alert("Detected error on
> Hypertransport Link\n");
> +                                       goto end_of_chain;
> +                               }
>                         }
>                 } while((ctrl & (1 << 5)) == 0);
>
> ****END CUT*****
>

> --
> LinuxBIOS mailing list
> LinuxBIOS@openbios.org
> http://www.openbios.org/mailman/listinfo/linuxbios

--
LinuxBIOS mailing list
LinuxBIOS@openbios.org
http://www.openbios.org/mailman/listinfo/linuxbios