From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:45910) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1SbuLB-0002Nj-Fh for qemu-devel@nongnu.org; Tue, 05 Jun 2012 10:02:42 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1SbuL3-00032E-6U for qemu-devel@nongnu.org; Tue, 05 Jun 2012 10:02:33 -0400 Received: from mx1.redhat.com ([209.132.183.28]:63369) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1SbuL2-00031v-UT for qemu-devel@nongnu.org; Tue, 05 Jun 2012 10:02:25 -0400 Received: from int-mx12.intmail.prod.int.phx2.redhat.com (int-mx12.intmail.prod.int.phx2.redhat.com [10.5.11.25]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id q55E2Mlw014008 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Tue, 5 Jun 2012 10:02:23 -0400 Message-ID: <4FCE116C.4050008@redhat.com> Date: Tue, 05 Jun 2012 16:02:20 +0200 From: Kevin Wolf MIME-Version: 1.0 References: <9349989e1c2f12d5d6bc00089efdb7947fdf8dac.1338903679.git.phrdina@redhat.com> In-Reply-To: <9349989e1c2f12d5d6bc00089efdb7947fdf8dac.1338903679.git.phrdina@redhat.com> Content-Type: text/plain; charset=ISO-8859-15 Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH] fdc: fix media change detection for windows List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Pavel Hrdina Cc: mtosatti@redhat.com, qemu-devel@nongnu.org, armbru@redhat.com 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 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