[coreboot] [PATCH] fix hd8me early-boot 50 sec stallout

Myles Watson mylesgw at gmail.com
Fri May 14 21:13:49 CEST 2010


On Fri, May 14, 2010 at 10:45 AM, Joe Korty <joe.korty at ccur.com> wrote:
> Fix the SuperMicro H8DME-2 early-boot 50 sec stall.
>
> Somewhere between r5491 and r5496, a change occured which
> added some 30-50 seconds to the boot time of a Supermicro
> H8DME-2.  This rises by an additional 30-50 seconds if
> the boot sequence decides it needs to reset-restart.
>
> The problem was traced to a printk which was enabled
> somewhere between those two svn revisions.  Apparently this
> printk appears too early in the boot sequence to function
> correctly.
It's possible that someone was confused because there are two
invocations of enable_smbus in romstage.c

Do you need both?
>
> This patch again comments out the printk, but this
> time around, adds an explanation, to encourage future
> maintainers to keep it commented out.
>
> Please apply.
I think we could commit this, but while you're thinking about it maybe
we should fix it a little more.

I think it would make sense to return from the function and set a post
code when the SMBus controller is not found, instead of calling the
write functions with an invalid device.

Thanks,
Myles

> Index: trunk/src/southbridge/nvidia/mcp55/mcp55_early_smbus.c
> ===================================================================
> --- trunk.orig/src/southbridge/nvidia/mcp55/mcp55_early_smbus.c 2010-05-14 08:37:35.000000000 -0400
> +++ trunk/src/southbridge/nvidia/mcp55/mcp55_early_smbus.c      2010-05-14 08:39:06.000000000 -0400
> @@ -32,11 +32,14 @@
>        device_t dev;
>        dev = pci_locate_device(PCI_ID(0x10de, 0x0368), 0);
>
> +#if 0
> +       /* for the h8dme, at least, this is too early for a printk */
>        if (dev == PCI_DEV_INVALID) {

                  post code & return here, with no else.

>        } else {
>                printk(BIOS_DEBUG, "SMBus controller enabled\n");
>        }
> +#endif
>
>        /* set smbus iobase */
>        pci_write_config32(dev, 0x20, SMBUS0_IO_BASE | 1);
>
> --
> coreboot mailing list: coreboot at coreboot.org
> http://www.coreboot.org/mailman/listinfo/coreboot
>




More information about the coreboot mailing list