|
From: | Pavel Hrdina |
Subject: | Re: [Qemu-devel] [PATCH] fdc: fix media change detection for windows |
Date: | Tue, 05 Jun 2012 16:30:49 +0200 |
User-agent: | Mozilla/5.0 (X11; Linux x86_64; rv:12.0) Gecko/20120430 Thunderbird/12.0.1 |
On 06/05/2012 04:02 PM, Kevin Wolf wrote:
Windows sends these command at the start of installation in this order: RECALIBRATE, SENSE INTERRUPT STATUS, READ. Windows completely ignores the 'dir' register and reads data from no media and then stuck. This happens if you start windows installation with floppy drive without media.Am 05.06.2012 15:48, schrieb Pavel Hrdina:The windows uses 'READ' command at the start of instalation. We have to also check the 'media_change' bit in the 'fd_seek'. Signed-off-by: Pavel Hrdina<address@hidden>Can you explain the scenario in more detail? What is Windows trying and why should it fail? What is happening today?
--- hw/fdc.c | 3 ++- 1 files changed, 2 insertions(+), 1 deletions(-) diff --git a/hw/fdc.c b/hw/fdc.c index 30d34e3..70b0c00 100644 --- a/hw/fdc.c +++ b/hw/fdc.c @@ -128,7 +128,8 @@ static int fd_seek(FDrive *drv, uint8_t head, uint8_t track, uint8_t sect, int ret; if (track> drv->max_track || - (head != 0&& (drv->flags& FDISK_DBL_SIDES) == 0)) { + (head != 0&& (drv->flags& FDISK_DBL_SIDES) == 0) || + drv->media_changed) { FLOPPY_DPRINTF("try to read %d %02x %02x (max=%d %d %02x %02x)\n", head, track, sect, 1, (drv->flags& FDISK_DBL_SIDES) == 0 ? 0 : 1,Context: Next thing in the code is an error return. This looks wrong to me. drv->media_changed is also true when a new floppy has been inserted, but there was no step pulse yet. Is there any reason why an fd_seek() should fail when a floppy is present? Last, but not least: Any floppy fixes should come with qtest cases. Kevin
Well, you're right. I should change the code a little bit. Pavel
[Prev in Thread] | Current Thread | [Next in Thread] |