[coreboot] HT chains fixup

Myles Watson mylesgw at gmail.com
Fri Nov 21 18:40:35 CET 2008



> -----Original Message-----
> From: coreboot-bounces at coreboot.org [mailto:coreboot-bounces at coreboot.org]
> On Behalf Of Marc Jones
> Sent: Friday, November 21, 2008 10:19 AM
> To: Coreboot
> Subject: Re: [coreboot] HT chains fixup
> 
> On Thu, Nov 20, 2008 at 4:31 PM, Peter Stuge <peter at stuge.se> wrote:
> 
> > How does HT unit arbitration work at power up? Ie. what determines
> > the order of unit 0:s?

Physical placement.  Since it's point-to-point, they hide in each other's
shadows when they have equal UnitIDs.

> The devices all come up with wiith unitid of 0 and are scanned depth
> first just as pci bridges are. The unitids can be set automatically
> but usually some devices are set specifically. The subtractive device
> is normally left as device 0. In the case or Serengeti it is 6 for
> historical reasons (  think there was a early 8111 bug that required
> the setting).

I think it's confusing to compare it to PCI since the meaning of depth is
different until UnitIDs are assigned.  It's not clear to me what it means to
set the values depth first in a case like this:

<-> is an ht link

k8 <-> 8132 <-> 8132 <-> 8111

Since the 8132s are tunnels and consume 2 UnitIDs each, how do you decide
which UnitIDs to assign to them.  Until you get to the 8111 (end of chain),
you don't know how many to skip.

at the beginning the UnitIDs are assigned:

k8 <-> 0 <-> 0 <-> 0

And only the first responds.  You choose some "safe" place to put it, and
continue.

k8 <-> 0xa <-> 0 <-> 0

Now the second one is visible.  You choose to increment the UnitID (2 were
consumed)

k8 <-> 0xa <-> 0xc <-> 0

Then you set the last one (cave) to 0x6 for historical reasons.

k8 <-> 0xa <-> 0xc <-> 0x6

There's nothing that says that that was the right way.  I could have easily
used any other safe value, or moved the UnitIDs after I knew how many each
device consumed.  These would be just as valid:

k8 <-> 0xc <-> 0xa <-> 0x6
k8 <-> 0x8 <-> 0xa <-> 0x6

etc. 

I realize that this is somewhat contrived since I can't say I've ever seen a
board like that, but it would be easy to build.

Thanks,
Myles





More information about the coreboot mailing list