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<address@hidden>
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