On Sat, Feb 14, 2009 at 2:02 AM, Kevin O'Connor kevin@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