All of lore.kernel.org
 help / color / mirror / Atom feed
From: Pavel Hrdina <phrdina@redhat.com>
To: Kevin Wolf <kwolf@redhat.com>
Cc: mtosatti@redhat.com, qemu-devel@nongnu.org, armbru@redhat.com
Subject: Re: [Qemu-devel] [PATCH v2] fdc: fix media change detection for windows
Date: Tue, 05 Jun 2012 18:34:16 +0200	[thread overview]
Message-ID: <4FCE3508.8030009@redhat.com> (raw)
In-Reply-To: <4FCE2C32.1060309@redhat.com>

On 06/05/2012 05:56 PM, Kevin Wolf wrote:
> Am 05.06.2012 17:50, schrieb Pavel Hrdina:
>> Sorry, I forget the qtest. I'll create it and send it again.
>>
>> Pavel
>>
>> On 06/05/2012 05:46 PM, Pavel Hrdina wrote:
>>> The Windows uses 'READ' command at the start of an instalation
>>> without checking the 'dir' register. We have to abort the transfer
>>> with an abnormal termination if there is no media in the drive.
>>>
>>> We have to also check the 'media_change' bit in the 'fd_seek'. This
>>> internal seek clears the 'media_change' bit, too, if there is
>>> a media inserted.
>>>
>>> Signed-off-by: Pavel Hrdina<phrdina@redhat.com>
>>> ---
>>>    hw/fdc.c |    7 ++++++-
>>>    1 files changed, 6 insertions(+), 1 deletions(-)
>>>
>>> diff --git a/hw/fdc.c b/hw/fdc.c
>>> index 30d34e3..2d6dd30 100644
>>> --- a/hw/fdc.c
>>> +++ b/hw/fdc.c
>>> @@ -127,8 +127,13 @@ static int fd_seek(FDrive *drv, uint8_t head, uint8_t track, uint8_t sect,
>>>        uint32_t sector;
>>>        int ret;
>>>
>>> +    if (drv->bs != NULL&&   bdrv_is_inserted(drv->bs)) {
>>> +        drv->media_changed = 0;
>>> +    }
>>> +
>>>        if (track>   drv->max_track ||
>>> -        (head != 0&&   (drv->flags&   FDISK_DBL_SIDES) == 0)) {
>>> +        (head != 0&&   (drv->flags&   FDISK_DBL_SIDES) == 0) ||
>>> +        drv->media_changed) {
> Why not directly use bdrv_is_inserted() here?
>
> Fiddling around with media_changed feels rather hacky and is strictly
> speaking incorrect because a step pulse is not guaranteed to happen in
> the following code. The floppy code doesn't get it quite right today
> anyway, but a hack like this would contribute to the problem.
>
>
>>>            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,
> Kevin
>
I'll move the code into the end of 'fd_seek' function, where a step is 
guaranteed. Internal seek should also reset the 'media_changed' bit if 
there is a media in the drive. I'll create the qtest tomorrow then I'll 
send another version of this patch.

Pavel

  reply	other threads:[~2012-06-05 16:34 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-06-05 15:46 [Qemu-devel] [PATCH v2] fdc: fix media change detection for windows Pavel Hrdina
2012-06-05 15:50 ` Pavel Hrdina
2012-06-05 15:56   ` Kevin Wolf
2012-06-05 16:34     ` Pavel Hrdina [this message]
2012-06-06 10:35       ` Kevin Wolf
2012-06-06 13:43         ` Pavel Hrdina
2012-06-06 13:58           ` Kevin Wolf

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4FCE3508.8030009@redhat.com \
    --to=phrdina@redhat.com \
    --cc=armbru@redhat.com \
    --cc=kwolf@redhat.com \
    --cc=mtosatti@redhat.com \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.