Am 22.05.2012 12:59, schrieb Pavel Hrdina: > We have to set up 'media_changed' after guest start so floppy driver > could detect that there is no media in drive. For this purpose we call > 'fdctrl_change_cb' instead of 'fd_revalidate' in 'fdctrl_connect_drives'. > 'fd_revalidate' is called inside 'fdctrl_change_cb'. > > In 'fdctrl_handle_seek' we always set current track because we don't care > if there is media inserted or not. > > Signed-off-by: Pavel Hrdina <phrd...@redhat.com>
Can you please add a qtest case that shows the problems that you're fixing in this series? > diff --git a/hw/fdc.c b/hw/fdc.c > index cb4cd25..337b35a 100644 > --- a/hw/fdc.c > +++ b/hw/fdc.c > @@ -1617,11 +1617,7 @@ static void fdctrl_handle_seek(FDCtrl *fdctrl, int > direction) > /* The seek command just sends step pulses to the drive and doesn't care > if > * there is a medium inserted of if it's banging the head against the > drive. > */ > - if (fdctrl->fifo[2] > cur_drv->max_track) { > - cur_drv->track = cur_drv->max_track; > - } else { > - cur_drv->track = fdctrl->fifo[2]; > - } > + cur_drv->track = fdctrl->fifo[2]; Why is it okay to have cur_drv->track point outside the floppy? Won't it mess up future calculations? Not all other places check it again cur_drv->max_track. Kevin