[SeaBIOS] [coreboot] Seabios problems

Kevin O'Connor kevin at koconnor.net
Sat Jan 16 18:56:59 CET 2010


On Sat, Jan 16, 2010 at 12:06:01PM +0100, congedete at voila.fr wrote:
> Hello Kevin,
> 
> I can't give you the full log for the keyboard problem. I think this
> is a timeout issue: when I run Seabios in debuglevel=8, no problem,
> but if debuglevel=1 or even 4, my keyboard don't want to initialize
> most of the time. So, I suppose that sending debug data to the port
> gives time to the keyboard to initialize correctly.
> 
> The attachment files are the logs you asked me reporting the Vista
> booting error.  Do you use DMA since version 0.5.1 to boot ?

Lets try a couple of things.  For the keyboard, can you see if this
change improves things?  In either case, can you send the output it
produces?

--- a/src/ps2port.c
+++ b/src/ps2port.c
@@ -62,7 +62,7 @@ i8042_flush(void)
             return 0;
         udelay(50);
         u8 data = inb(PORT_PS2_DATA);
-        dprintf(7, "i8042 flushed %x (status=%x)\n", data, status);
+        dprintf(1, "i8042 flushed %x (status=%x)\n", data, status);
     }
 
     dprintf(1, "i8042 timeout on flush\n");

Your ps2 port has stale data in it, and I think that is causing the
init process to get confused.

For the DMA issue, it looks like your drive isn't ready for it.  Can
you see if this change improves things?

--- a/src/ata.c
+++ b/src/ata.c
@@ -856,6 +856,15 @@ init_drive_ata(struct drive_s *dummy, u16 *buffer)
     // Register with bcv system.
     add_bcv_internal(drive_g);
 
+    // XXX - set dma mode
+    struct ata_pio_command cmd;
+    memset(&cmd, 0, sizeof(cmd));
+    cmd.command = ATA_CMD_SET_FEATURES;
+    cmd.feature = 0x03;
+    cmd.sector_count = 0x22; // mwDMA mode 2
+    ret = ata_cmd_nondata(drive_g, &cmd);
+    dprintf(1, "set drive=%p dma=%d\n", drive_g, ret);
+
     return drive_g;
 }
 

Thanks,
-Kevin



More information about the SeaBIOS mailing list