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);