[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