On Thu, Aug 28, 2008 at 06:46:03AM +0100, Chris Lamb wrote: > Package: bochsbios > Version: 2.3.7-1 > > This is a bug that has been discussed somewhat privately until now; I think > it deserves a real bug report so we can track it better. > > The issue is that a syslinux template is displayed with the Debian logo but > the text is cut off: > > "Press F1 for help, or ENTER to" > > It should, obviously, append "boot:" and allow the user to press enter or > enter parameters, etc. I don't know the full details but I can easily > reproduce this with Qemu using a Debian Live image. > > Simply waiting about 60 seconds results in the boot prompt appearing. I have > heard of some workarounds (including setting a high screen resolution!). > Using GRUB does not cause similar problems. > > I believe aurel32 will reply to this bug adding some more details: > > < lamby> aurel32: Is there are bug report open for that qemu/syslinux > timing issue? If not, could you file one; it is difficult to > track. > < aurel32> lamby: it's actually not a qemu issue, but a bochsbios issue > < aurel32> lamby: please open one, I'll add some details here > < aurel32> lamby: though some people are able to reproduce the problem with > real bios >
Here are some details. This has been broken by commit 1.187 of rombios.c: | revision 1.187 | date: 2007/10/14 08:11:05; author: vruppert; state: Exp; lines: +194 -84 | - improved HD recognition and CD boot (patches by Myles Watson) | * fixed minor error from printf patch confusion (negation based on wrong word) | * added helper function await_ide | * changed lba calculation to not corrupt lba (for debugging and clarity) | * added support for partial completions of ata_cmd_packet (never happens in | the simulator, but happens all the time in hardware) | * update atapi_request_sense and atapi_is_ready - based on FILO | * correct an int 15 call that should have been int 0x15 | * trivial fix when BX_PCIBIOS and BX_ROMBIOS32 not defined | - implemented %X in bios_printf (patch by Sebastian) And more specifically this part of the commit: --- rombios.c.orig +++ rombios.c @@ -2956,28 +2994,34 @@ ASM_END if (inout == ATA_DATA_NO) { + await_ide(NOT_BSY, iobase1, IDE_TIMEOUT); status = inb(iobase1 + ATA_CB_STAT); } else { + Bit16u loops = 0; + Bit8u sc; while (1) { + if (loops == 0) {//first time through + status = inb(iobase2 + ATA_CB_ASTAT); + await_ide(NOT_BSY_DRQ, iobase1, IDE_TIMEOUT); + } + else + await_ide(NOT_BSY, iobase1, IDE_TIMEOUT); + loops++; + status = inb(iobase1 + ATA_CB_STAT); + sc = inb(iobase1 + ATA_CB_SC); // Check if command completed - if ( (status & (ATA_CB_STAT_BSY | ATA_CB_STAT_DRQ) ) ==0 ) break; + if(((inb(iobase1 + ATA_CB_SC)&0x7)==0x3) && + ((status & (ATA_CB_STAT_RDY | ATA_CB_STAT_ERR)) == ATA_CB_STAT_RDY)) break; if (status & ATA_CB_STAT_ERR) { BX_DEBUG_ATA("ata_cmd_packet : error (status %02x)\n",status); return 3; } - // Device must be ready to send data - if ( (status & (ATA_CB_STAT_BSY | ATA_CB_STAT_RDY | ATA_CB_STAT_DRQ | ATA_CB_STAT_ERR) ) - != (ATA_CB_STAT_RDY | ATA_CB_STAT_DRQ) ) { - BX_DEBUG_ATA("ata_cmd_packet : not ready (status %02x)\n", status); - return 4; - } - // Normalize address bufseg += (bufoff / 16); bufoff %= 16; -- .''`. Aurelien Jarno | GPG: 1024D/F1BCDB73 : :' : Debian developer | Electrical Engineer `. `' [EMAIL PROTECTED] | [EMAIL PROTECTED] `- people.debian.org/~aurel32 | www.aurel32.net -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]