[coreboot] patch: my latest mcp55

ron minnich rminnich at gmail.com
Wed Aug 13 17:54:45 CEST 2008


Committed revision 756.

Also:
On Wed, Aug 13, 2008 at 5:06 AM, Carl-Daniel Hailfinger
<c-d.hailfinger.devel.2006 at gmx.net> wrote:


> That code is really buggy. I wonder how/if it ever worked in v2. If you
> address the comments below, this is
> Acked-by: Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006 at gmx.net>

buggy in a style sense, but it worked. So I am only changing things
below related to style.

You're going to fix the subsys stuff :-)

I am very careful not to change functionality. This is a tricky chip.
It appears to have lots of bugs.


>
> I am now entitled to the title "professional reviewer" and need to get
> that printed on a t-shirt ;-)

we'll get that done :-)

>> +     struct ioapicreg *a = ioapicregvalues;
>>
>
> Either we use "ioapicregvalues" everywhere or we use "a" everywhere.
> Your choice.

once we get it working, we will make that change.

>> +             ioapicregvalues[0].value_high = NONE;
>> +             ioapicregvalues[0].value_low = DISABLED;
>> +     }
>> +
>> +     l = (unsigned long *) ioapic_base;
>> +
>> +     for (i = 0; i < sizeof(ioapicregvalues) / sizeof(ioapicregvalues[0]);
>>
>
> Please use the ARRAY_SIZE macro.

Next pass :-)


> What's the problem with using ioapicregvalues[i] and killing a completely?

I don't know. Again, next rev. I would actually prefer to use 'a'
everywhere, myself. Some compilers intentionally do more optimization
when given a pointer as opposed to an array index.

>
>> +             l[0] = (a->reg * 2) + 0x10;
>> +             l[4] = a->value_low;
>>
>
> These l[0] l[4] accesses need to be moved to a separate function. They
> are clearly paired accesses. One could also argue for writel() here.
>
>> +             value_low = l[4];
>>
>
> I don't get the idea here. Should this be a readback? If yes, this won't
> work. GCC is free to optimize this away. Needs to be readl().

No, it will work; l is volatile. We must not forget: this code is in
use supporting mainboards; we can not assume that things that "look
wrong" are wrong. We may be wrong :-)


>
> #ifdef CONFIG_HPET ?

I added that config variable.

Lest we forget: to be blunt, the HPET experience on almost all
platforms has not been a good one. In general, I don't see a need to
enable it in coreboot -- any reason to? Clearly, it did not work out.

I put the CONFIG_HPET around this, but left the call to it commented out :-)

>> +     /* Initialize the High Precision Event Timers */
>> +//   enable_hpet(dev);
>>
>
> #ifdef CONFIG_HPET instead of commenting it out?

I added a stronger comment to the effect of "NO!".
:-)

>> +                                     if( (base == 0x290) || (base >= 0x400)) {
>> +                                             if(var_num>=4) continue; // only 4 var ; compact them ?
>>
>
> comment doesn't match code.

YingHai, what does this comment mean?


>> -STAGE0_CHIPSET_OBJ += $(obj)/southbridge/nvidia/mcp55/stage1.o
>> +STAGE2_CHIPSET_SRC += $(src)/southbridge/nvidia/mcp55/ide.c \
>> +                                     $(src)/southbridge/nvidia/mcp55/pci.c \
>> +                                     $(src)/southbridge/nvidia/mcp55/lpc.c \
>> +                                     $(src)/southbridge/nvidia/mcp55/pcie.c \
>> +                                     $(src)/southbridge/nvidia/mcp55/sata.c \
>> +                                     $(src)/southbridge/nvidia/mcp55/smbus.c \
>> +                                     $(src)/southbridge/nvidia/mcp55/usb.c \
>> +                                     $(src)/southbridge/nvidia/mcp55/usb2.c \
>> +
>> +STAGE0_CHIPSET_OBJ += $(obj)/southbridge/nvidia/mcp55/stage1.o \
>>
>
> The \ at the end of the line needs to go away.
>>

style note: in the Bell Labs source, they leave the \ there. It's ok,
next line is blank. So the \ is actually common in the Land That
Invented Make. I took it out; it's not commonly done in GNU land. I
did this one out of habit; I prefer the Bell Labs style. It forces
blank lines. But I will go with the GNU style here, I'm the minority!

thanks

ron




More information about the coreboot mailing list