[coreboot] slow load times

Myles Watson mylesgw at gmail.com
Tue Feb 17 17:50:02 CET 2009


On Sat, Feb 14, 2009 at 2:02 AM, Kevin O'Connor <kevin at koconnor.net> wrote:
> On Fri, Feb 13, 2009 at 09:26:43PM -0700, Myles Watson wrote:
>> > > It didn't work for me that way.  It still works for me to use the reset
>> > > button.
>> > Hrmm.  That's weird.  Can you send a SeaBIOS log of a run where you
>> > boot up until failure, press ctrl+alt+delete, and then go to the
>> > failure again?
>> Sure.  From what I've been able to tell, there's nothing significant there.
>> SeaBIOS detects the drives the second time
>
> Oh - I was only looking to see if SeaBIOS could detect the drives the
> second time.  Can you see if the patch below fixes the problem for
> you?
>
>>, but when Linux tries to boot it
>> gets confused when it tries to load the SATA drivers and hangs.  I don't
>> think I was clear on that before.  It could be related to the interrupt
>> routing problems, or something that's not getting reset correctly by
>> Coreboot.
>
> On ctrl+alt+delete, coreboot isn't called.  I've seen problems with
> SeaBIOS booting after a soft-reboot, but I don't know why.  It looks
> like SeaBIOS is doing a full internal reset correctly..
>
> If you send the full log, maybe it will help diagnose that problem.

I've attached 3 logs.  booted is from cold boot and was successful.
ctrl-alt-del and ctrl-alt-del2 were my attempts to reboot during
SeaBIOS.  One time it hung the machine, the other time it didn't seem
to do much.  When it fails, the SeaBIOS part looks the same, but I get
this at boot time, sometimes followed by kernel a panic.

[    6.832316] ata5.00: ATAPI: _NEC DVD_RW ND-3540A, 1.01, max UDMA/33
[   11.836055] ata5.01: qc timeout (cmd 0xf8)
[   11.840036] ata5.01: failed to read native max address (err_mask=0x4)
[   22.008055] ata5.01: qc timeout (cmd 0xf8)
[   22.012036] ata5.01: failed to read native max address (err_mask=0x4)
[   22.016034] ata5.01: revalidation failed (errno=-5)
[   32.184057] ata5.01: qc timeout (cmd 0xf8)
[   32.188036] ata5.01: failed to read native max address (err_mask=0x4)
[   32.192033] ata5.01: revalidation failed (errno=-5)
[   32.196033] ata5.01: disabled
[   32.200038] ata5.00: failed to IDENTIFY (I/O error, err_mask=0x40)
[   32.208032] ata5.00: revalidation failed (errno=-5)
[   32.376331] ata5: nv_mode_filter: 0x739f&0xfffff->0x739f, BIOS=0x0
(0x0) ACPI=0x0
[   32.400263] ata5.00: configured for UDMA/33
[   38.068062] ata5.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x6 frozen
[   38.072039] ata5.00: cmd a0/00:00:00:24:00/00:00:00:00:00/a0 tag 0 pio 36 in
[   38.072041]          cdb 12 00 00 00 24 00 00 00  00 00 00 00 00 00 00 00
[   38.072042]          res 40/00:00:00:00:00/00:00:00:00:00/00 Emask
0x4 (timeout)
[   38.076033] ata5.00: status: { DRDY }
[   38.080053] ata5: soft resetting link
[   38.244318] ata5: nv_mode_filter: 0x739f&0xfffff->0x739f, BIOS=0x0
(0x0) ACPI=0x0
[   38.264247] ata5.00: configured for UDMA/33
[   38.268043] ata5: EH complete
[   43.768043] ata5.00: limiting speed to UDMA/25:PIO4
[   43.772034] ata5.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x6 frozen
[   43.776036] ata5.00: cmd a0/00:00:00:24:00/00:00:00:00:00/a0 tag 0 pio 36 in
[   43.776038]          cdb 12 00 00 00 24 00 00 00  00 00 00 00 00 00 00 00
[   43.776039]          res 40/00:00:00:00:00/00:00:00:00:00/00 Emask
0x4 (timeout)
[   43.780033] ata5.00: status: { DRDY }
[   43.784043] ata5: soft resetting link
[   43.952316] ata5: nv_mode_filter: 0x339f&0xfffff->0x339f, BIOS=0x0
(0x0) ACPI=0x0
[   43.972246] ata5.00: configured for UDMA/25
[   43.976035] ata5: EH complete
[   49.476041] ata5.00: limiting speed to PIO4
[   49.480033] ata5.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x6 frozen
[   49.484036] ata5.00: cmd a0/00:00:00:24:00/00:00:00:00:00/a0 tag 0 pio 36 in
[   49.484038]          cdb 12 00 00 00 24 00 00 00  00 00 00 00 00 00 00 00
[   49.484039]          res 40/00:00:00:00:00/00:00:00:00:00/00 Emask
0x4 (timeout)
[   49.488032] ata5.00: status: { DRDY }

Thanks,
Myles

> -Kevin
>
>
> --- a/src/ata.c
> +++ b/src/ata.c
> @@ -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);

This patch makes it wait for the controllers to initialize.  It works
sometimes from cold boot now!

Thanks,
Myles
-------------- next part --------------
A non-text attachment was scrubbed...
Name: seabios.booted.log
Type: text/x-log
Size: 70874 bytes
Desc: not available
URL: <http://www.coreboot.org/pipermail/coreboot/attachments/20090217/848b12ef/attachment.log>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: seabios.ctrl-alt-del.log
Type: text/x-log
Size: 22740 bytes
Desc: not available
URL: <http://www.coreboot.org/pipermail/coreboot/attachments/20090217/848b12ef/attachment-0001.log>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: seabios.ctrl-alt-del2.log
Type: text/x-log
Size: 31291 bytes
Desc: not available
URL: <http://www.coreboot.org/pipermail/coreboot/attachments/20090217/848b12ef/attachment-0002.log>


More information about the coreboot mailing list