[coreboot] HT_CHAIN_* woes
Marc Jones
marcj303 at gmail.com
Thu Sep 30 01:15:01 CEST 2010
On Wed, Sep 29, 2010 at 2:12 PM, Arne Georg Gleditsch
<arne.gleditsch at numascale.com> wrote:
> Marc Jones <marcj303 at gmail.com> writes:
>> Yes, This stuff is a mess.
>
> Thank you, then I'm not mad. :)
>
>> I don't completly understand it and couldn't document it. The
>> swaplist is really a place holder. I am not sure how the fields really
>> work. Part of the problem is the use of the same early ht init for sb
>> decode etc from K8, and then the later real ht init based on the AMD
>> code. The requirement of the CONFIG_HT_CHAIN_UNITID_BASE setting for
>> the BUIDSwaplist may be wrong.
>>
>> The SB_ setting refers to the the last device in the chain, like the
>> sb600 or sb700.
>
> Hm, ok. That helps a bit.
Sorry. I mis-spoke. The 780 is the last HT device, sb700 is a Alink
(PCI like) device.
>
>> Can you point what you are looking at in 780.c that is hard-coding the
>> HT address?
>
> In rs780.c
>
> 277 nb_dev = dev_find_slot(0, PCI_DEVFN(0, 0));
> 278 if (!nb_dev) {
> 279 die("rs780_enable: CAN NOT FIND RS780 DEVICE, HALT!\n");
>
> appears to assume that the rs780 exists as device 0.
Ah, ok. I see.
http://www.hypertransport.org/docs/tech/HTC20051222-0046-0008-Final-4-21-06.pdf
See section 7.2.2 to start.
>
>> There is a non-patch that may address this, check this email thread:
>> http://patchwork.coreboot.org/patch/1053/
>
> Right, I remember seeing that go by... Reading the patch, it would
> appear to be addressing the same issue. After digging a bit into this
> today, I now believe I can make things behave relatively sane by simply
> passing something like
>
> static BOOL ht_swaplist(u8 node, u8 link, u8 **List)
> {
> static u8 swaplist[] = { 0x0, 0xff, 0xff };
> if ((node == 0) && (link == 2)) {
> *List = swaplist;
> return 1;
> }
> return 0;
> }
>
> as the swaplist callback for this particular mainboard. If we can come
> up with a way of doing that in a reasonably clean manner, I think I
> prefer that to more magic based on the HT_CHAIN-variables.
>
> Hm. However, I also notice that of the boards calling the
> amd_ht_init-wrapper, the only other ones with HT_CHAIN_UNITID_BASE ==
> 0x0 are tilapia and mahogany, both rs780-based. And mahogany apparently
> needs patches to h3finit.c to work. Does tilapia_fam10 work
> as-is?
>
I don't think it does, I think that we need the patch, which is why I
acked it. We haven't received any more clarification from Zheng.
> Perhaps I should just work the above into the general swaplist callback
> for these cases?
If you can figure it out, please do. I didn't really look at the
swaplist contents and how it works.
Marc
--
http://se-eng.com
More information about the coreboot
mailing list