On Thu, Oct 24, 2019 at 01:49:11PM -0400, John Snow wrote: > > > On 10/23/19 4:17 AM, Kevin Wolf wrote: > > The important difference here is legacy IDE (which works) vs. AHCI > > (which doesn't work). If you add a -device ahci to the -M pc case, it > > starts failing, too. > > > > Not sure why AHCI fails, but I'll just CC John who is the lucky > > maintainer of this device. :-) > > Hm... It looks like SeaBIOS is identifying the drive correctly and > perfectly well, but we're failing at boot_disk(u8 bootdrv, int > checksig), about here: > > call16_int(0x13, &br); > > if (br.flags & F_CF) { > printf("Boot failed: could not read the boot disk\n\n"); > return; > } > > Looking at AHCI tracing (From the QEMU side), it looks like we set up > the drive correctly, and then never touch the port ever again -- I don't > see an attempted read on QEMU's end. > > I'll need to look through SeaBIOS source for hints, I'm not sure right > yet. If anyone is more familiar with the SeaBIOS boot code, maybe they > can give a pointer faster than I'll figure it out myself.
Hi, John, I don't know seabios well, but I did have a pointer in my previous email on where it faulted. It seems to me that the issue is that SeaBIOS may have got incorrect secs/cyls/heads information (and explicitly setting secs=1,cyls=1,heads=1 on the block device fixes the issue). Thanks, -- Peter Xu