Message ID | AANLkTimWC-5VuWWEr2x0q7wWTS4hqbSUAYhjXffqeWD6@mail.gmail.com |
---|---|
State | New |
Headers | show |
On Sat, Mar 12, 2011 at 10:53 AM, Blue Swirl <blauwirbel@gmail.com> wrote: > The logic for calculating the drive state in pc.c does not match fdc.c > logic. Please try this patch. > > diff --git a/hw/pc.c b/hw/pc.c > index 5966bf1..4d67d9f 100644 > --- a/hw/pc.c > +++ b/hw/pc.c > @@ -382,7 +382,7 @@ void pc_cmos_init(ram_addr_t ram_size, ram_addr_t > above_4g_mem_size, > /* floppy type */ > for (i = 0; i < 2; i++) { > fd[i] = drive_get(IF_FLOPPY, 0, i); > - if (fd[i]) { > + if (fd[i] && bdrv_is_inserted(fd[i]->bdrv)) { > bdrv_get_floppy_geometry_hint(fd[i]->bdrv, &nb_heads, &max_track, > &last_sect, FDRIVE_DRV_NONE, > &fd_type[i]); > This patch fixes the problem, thanks! Tested-by: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
On Sat, Mar 12, 2011 at 2:58 PM, Stefan Hajnoczi <stefanha@gmail.com> wrote: > On Sat, Mar 12, 2011 at 10:53 AM, Blue Swirl <blauwirbel@gmail.com> wrote: >> The logic for calculating the drive state in pc.c does not match fdc.c >> logic. Please try this patch. >> >> diff --git a/hw/pc.c b/hw/pc.c >> index 5966bf1..4d67d9f 100644 >> --- a/hw/pc.c >> +++ b/hw/pc.c >> @@ -382,7 +382,7 @@ void pc_cmos_init(ram_addr_t ram_size, ram_addr_t >> above_4g_mem_size, >> /* floppy type */ >> for (i = 0; i < 2; i++) { >> fd[i] = drive_get(IF_FLOPPY, 0, i); >> - if (fd[i]) { >> + if (fd[i] && bdrv_is_inserted(fd[i]->bdrv)) { >> bdrv_get_floppy_geometry_hint(fd[i]->bdrv, &nb_heads, &max_track, >> &last_sect, FDRIVE_DRV_NONE, >> &fd_type[i]); >> > > This patch fixes the problem, thanks! > > Tested-by: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com> Thank you for testing, applied.
From a008e6fd41a31d437670eaa0ddf12352e8a4a8fb Mon Sep 17 00:00:00 2001 Message-Id: <a008e6fd41a31d437670eaa0ddf12352e8a4a8fb.1299926967.git.blauwirbel@gmail.com> From: Blue Swirl <blauwirbel@gmail.com> Date: Sat, 12 Mar 2011 09:52:25 +0000 Subject: [PATCH] pc: fix wrong CMOS values for floppy drives Before commit 63ffb564dca94f8bda01ed6d209784104630a4d2, states for floppy drives were calculated in fdc.c:fd_revalidate(). There it is also considered whether a disk is inserted or not. The commit didn't copy the logic completely to pc.c, which caused a regression. Fix by adding the same check also to pc.c. Signed-off-by: Blue Swirl <blauwirbel@gmail.com> --- hw/pc.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/hw/pc.c b/hw/pc.c index 5966bf1..4d67d9f 100644 --- a/hw/pc.c +++ b/hw/pc.c @@ -382,7 +382,7 @@ void pc_cmos_init(ram_addr_t ram_size, ram_addr_t above_4g_mem_size, /* floppy type */ for (i = 0; i < 2; i++) { fd[i] = drive_get(IF_FLOPPY, 0, i); - if (fd[i]) { + if (fd[i] && bdrv_is_inserted(fd[i]->bdrv)) { bdrv_get_floppy_geometry_hint(fd[i]->bdrv, &nb_heads, &max_track, &last_sect, FDRIVE_DRV_NONE, &fd_type[i]); -- 1.7.2.3