From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:37325) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1SWpZr-00017J-PA for qemu-devel@nongnu.org; Tue, 22 May 2012 09:56:48 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1SWpZl-000441-9e for qemu-devel@nongnu.org; Tue, 22 May 2012 09:56:43 -0400 Received: from mx1.redhat.com ([209.132.183.28]:61590) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1SWpZl-00043l-1Y for qemu-devel@nongnu.org; Tue, 22 May 2012 09:56:37 -0400 Received: from int-mx11.intmail.prod.int.phx2.redhat.com (int-mx11.intmail.prod.int.phx2.redhat.com [10.5.11.24]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id q4MDuZlL011447 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Tue, 22 May 2012 09:56:35 -0400 Message-ID: <4FBB9B11.2030501@redhat.com> Date: Tue, 22 May 2012 15:56:33 +0200 From: Pavel Hrdina MIME-Version: 1.0 References: <32c32f56ba695401f1357dff7935b9ace76c1ebf.1337683541.git.phrdina@redhat.com> <4FBB801B.4010401@redhat.com> <4FBB946E.4000601@redhat.com> <4FBB97BC.4020205@redhat.com> In-Reply-To: <4FBB97BC.4020205@redhat.com> Content-Type: text/plain; charset=ISO-8859-15; format=flowed Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH 2/2] fdc: fix media detection List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Kevin Wolf Cc: qemu-devel@nongnu.org On 05/22/2012 03:42 PM, Kevin Wolf wrote: > Am 22.05.2012 15:28, schrieb Pavel Hrdina: >> On 05/22/2012 02:01 PM, Kevin Wolf wrote: >>> 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 >>> Can you please add a qtest case that shows the problems that you're >>> fixing in this series? >> I'm new to qemu. By "add a qtest case" you mean update tests/fdc-test.c ? > Sorry, I should have been more specific. Yes, that's what I mean. > >>>> 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 >> Well, you are right. Than we have to set 'max_track' even if there is no >> media. I tested this on bare-metal without media and where floppy driver >> ask to seek to specific track, it ends good and return specific track >> position as actual. >> I'll rewrite this behavior and send patch v2. > You mean max_track = 0 isn't a good value to work with? How can a real > drive position the head correctly when it doesn't have a media (and > therefore doesn't know its geometry)? > > But if you have a good default value for max_track that we should use > when no medium is present, go ahead. > > Kevin When you try mount floppy in linux while there is no media then a floppy driver tries to seek on track 1. Virtual guest always get actual track position 0 so tries to seek again and stuck in loop which cause kernel panic. On bare-metal floppy driver gets actual track position 1 and stop seeking. I thing, that a real drive ignore geometry and just seeks to specific position. Pavel