[coreboot] slow load times
Kevin O'Connor
kevin at koconnor.net
Wed Feb 18 05:22:44 CET 2009
On Tue, Feb 17, 2009 at 07:51:46PM -0700, Myles Watson wrote:
> > Does it work consistently? If it still fails sometimes I'm confused
> > on what it could be.
>
> I'm not sure either. It's strange that SeaBIOS can load grub, but the
> kernel is confused later. Once it gets to the confused state, the factory
> kernel has to be loaded. A cold reboot isn't sufficient.
Hrmm. So SeaBIOS can consistently see the drives, but Linux can't?
One more thing you can try - pull the latest SeaBIOS git and apply the
patch below. This will dump all of the drive's identify information.
-Kevin
--- a/src/ata.c
+++ b/src/ata.c
@@ -615,7 +615,7 @@ setup_translation(int driveid)
static void
extract_identify(int driveid, u16 *buffer)
{
- dprintf(3, "Identify w0=%x w2=%x\n", buffer[0], buffer[2]);
+ hexdump(buffer, 512);
// Read model name
char *model = ATA.devices[driveid].model;
@@ -753,7 +753,9 @@ ata_detect()
break;
// Look for device
+ await_not_bsy(iobase1);
outb(slave ? ATA_CB_DH_DEV1 : ATA_CB_DH_DEV0, iobase1+ATA_CB_DH);
+ await_not_bsy(iobase1);
outb(0x55, iobase1+ATA_CB_SC);
outb(0xaa, iobase1+ATA_CB_SN);
outb(0xaa, iobase1+ATA_CB_SC);
More information about the coreboot
mailing list