From: John Snow <jsnow@redhat.com>
To: "Hervé Poussineau" <hpoussin@reactos.org>, qemu-block@nongnu.org
Cc: qemu-devel@nongnu.org, Kevin Wolf <kwolf@redhat.com>
Subject: Re: [Qemu-devel] [PATCH] atapi: allow 0 transfer bytes for read_cd command
Date: Thu, 18 Aug 2016 12:05:07 -0400 [thread overview]
Message-ID: <463189a1-4c10-672c-6697-1673e1044fae@redhat.com> (raw)
In-Reply-To: <1471513714-11709-1-git-send-email-hpoussin@reactos.org>
On 08/18/2016 05:48 AM, Hervé Poussineau wrote:
> This fixes Windows NT4 startup when a cdrom is inserted.
>
> Fixes: 9ef2e93f9b1888c7d0deb4a105149138e6ad2e98
> Signed-off-by: Hervé Poussineau <hpoussin@reactos.org>
> ---
> hw/ide/atapi.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/hw/ide/atapi.c b/hw/ide/atapi.c
> index 6189675..63312f2 100644
> --- a/hw/ide/atapi.c
> +++ b/hw/ide/atapi.c
> @@ -1289,7 +1289,7 @@ static const struct AtapiCmd {
> [ 0xad ] = { cmd_read_dvd_structure, CHECK_READY },
> [ 0xbb ] = { cmd_set_speed, NONDATA },
> [ 0xbd ] = { cmd_mechanism_status, 0 },
> - [ 0xbe ] = { cmd_read_cd, CHECK_READY },
> + [ 0xbe ] = { cmd_read_cd, CHECK_READY | NONDATA },
> /* [1] handler detects and reports not ready condition itself */
> };
>
>
What's the exact nature of the problem? I intended the "NONDATA" flag to
be used exclusively for commands that do not return ANY information
except for status return codes:
/*
* Commands flagged with NONDATA do not in any circumstances return
* any data via ide_atapi_cmd_reply. These commands are exempt from
* the normal byte_count_limit constraints.
* See ATA8-ACS3 "7.21.5 Byte Count Limit"
*/
NONDATA = 0x04,
I wouldn't be comfortable applying it to a command that DID indeed
return data under some circumstances... though you're right that if the
command as delivered returns no data, the ATAPI layer is allowed to
process that request absent byte_count_limit being programmed.
You may need to adjust near this line in ide_atapi_cmd:
if (cmd->handler && !(cmd->flags & NONDATA)) {
to allow or disallow more commands as appropriate. It looks to me sadly
as if there is no hard and fast rule available to tell which commands
must set the BCL mandatorily ... and putting the check in the data
transfer itself puts us at risk for not aborting the command early enough.
I'll try to address this post-KVM forum, if you don't solve it by then.
--js
prev parent reply other threads:[~2016-08-18 16:05 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-08-18 9:48 [Qemu-devel] [PATCH] atapi: allow 0 transfer bytes for read_cd command Hervé Poussineau
2016-08-18 9:52 ` no-reply
2016-08-18 14:24 ` [Qemu-devel] [Qemu-block] " Kevin Wolf
2016-08-21 21:16 ` Hervé Poussineau
2016-08-22 8:35 ` Kevin Wolf
2016-09-01 22:14 ` John Snow
2016-08-18 16:05 ` John Snow [this message]
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=463189a1-4c10-672c-6697-1673e1044fae@redhat.com \
--to=jsnow@redhat.com \
--cc=hpoussin@reactos.org \
--cc=kwolf@redhat.com \
--cc=qemu-block@nongnu.org \
--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.