From: John Snow <jsnow@redhat.com>
To: qemu-block@nongnu.org
Cc: kwolf@redhat.com, pbonzini@redhat.com,
John Snow <jsnow@redhat.com>,
qemu-devel@nongnu.org, stefanha@redhat.com
Subject: [Qemu-devel] [PATCH v2 05/15] ahci: factor ncq_finish out of ncq_cb
Date: Wed, 1 Jul 2015 12:19:28 -0400 [thread overview]
Message-ID: <1435767578-32743-6-git-send-email-jsnow@redhat.com> (raw)
In-Reply-To: <1435767578-32743-1-git-send-email-jsnow@redhat.com>
When we add werror=stop or rerror=stop support to NCQ,
we'll want to take a codepath where we don't actually
complete the command, so factor that out into a new routine.
Signed-off-by: John Snow <jsnow@redhat.com>
---
hw/ide/ahci.c | 32 +++++++++++++++++++-------------
1 file changed, 19 insertions(+), 13 deletions(-)
diff --git a/hw/ide/ahci.c b/hw/ide/ahci.c
index b3a6a91..b0b9b41 100644
--- a/hw/ide/ahci.c
+++ b/hw/ide/ahci.c
@@ -933,23 +933,11 @@ static void ncq_err(NCQTransferState *ncq_tfs)
ncq_tfs->drive->port_regs.scr_err |= (1 << ncq_tfs->tag);
}
-static void ncq_cb(void *opaque, int ret)
+static void ncq_finish(NCQTransferState *ncq_tfs)
{
- NCQTransferState *ncq_tfs = (NCQTransferState *)opaque;
- IDEState *ide_state = &ncq_tfs->drive->port.ifs[0];
-
- if (ret == -ECANCELED) {
- return;
- }
/* Clear bit for this tag in SActive */
ncq_tfs->drive->port_regs.scr_act &= ~(1 << ncq_tfs->tag);
- if (ret < 0) {
- ncq_err(ncq_tfs);
- } else {
- ide_state->status = READY_STAT | SEEK_STAT;
- }
-
ahci_write_fis_sdb(ncq_tfs->drive->hba, ncq_tfs->drive->port_no,
(1 << ncq_tfs->tag));
@@ -962,6 +950,24 @@ static void ncq_cb(void *opaque, int ret)
ncq_tfs->used = 0;
}
+static void ncq_cb(void *opaque, int ret)
+{
+ NCQTransferState *ncq_tfs = (NCQTransferState *)opaque;
+ IDEState *ide_state = &ncq_tfs->drive->port.ifs[0];
+
+ if (ret == -ECANCELED) {
+ return;
+ }
+
+ if (ret < 0) {
+ ncq_err(ncq_tfs);
+ } else {
+ ide_state->status = READY_STAT | SEEK_STAT;
+ }
+
+ ncq_finish(ncq_tfs);
+}
+
static int is_ncq(uint8_t ata_cmd)
{
/* Based on SATA 3.2 section 13.6.3.2 */
--
2.1.0
next prev parent reply other threads:[~2015-07-01 16:19 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-07-01 16:19 [Qemu-devel] [PATCH v2 00/15] ahci: ncq cleanup, part 2 John Snow
2015-07-01 16:19 ` [Qemu-devel] [PATCH v2 01/15] ide: add limit to .prepare_buf() John Snow
2015-07-02 14:04 ` Stefan Hajnoczi
2015-07-01 16:19 ` [Qemu-devel] [PATCH v2 02/15] ahci: stash ncq command John Snow
2015-07-01 16:19 ` [Qemu-devel] [PATCH v2 03/15] ahci: assert is_ncq for process_ncq John Snow
2015-07-01 16:19 ` [Qemu-devel] [PATCH v2 04/15] ahci: refactor process_ncq_command John Snow
2015-07-01 16:19 ` John Snow [this message]
2015-07-01 16:19 ` [Qemu-devel] [PATCH v2 06/15] ahci: add rwerror=stop support for ncq John Snow
2015-07-02 14:05 ` Stefan Hajnoczi
2015-07-01 16:19 ` [Qemu-devel] [PATCH v2 07/15] ahci: correct types in NCQTransferState John Snow
2015-07-01 16:19 ` [Qemu-devel] [PATCH v2 08/15] ahci: correct ncq sector count John Snow
2015-07-01 16:19 ` [Qemu-devel] [PATCH v2 09/15] qtest/ahci: halted NCQ test John Snow
2015-07-01 16:19 ` [Qemu-devel] [PATCH v2 10/15] ahci: add cmd header to ncq transfer state John Snow
2015-07-01 16:19 ` [Qemu-devel] [PATCH v2 11/15] ahci: add get_cmd_header helper John Snow
2015-07-01 16:19 ` [Qemu-devel] [PATCH v2 12/15] ahci: ncq migration John Snow
2015-07-02 14:06 ` Stefan Hajnoczi
2015-07-01 16:19 ` [Qemu-devel] [PATCH v2 13/15] ahci: Do not map cmd_fis to generate response John Snow
2015-07-01 16:19 ` [Qemu-devel] [PATCH v2 14/15] qtest/ahci: halted ncq migration test John Snow
2015-07-01 16:19 ` [Qemu-devel] [PATCH v2 15/15] ahci: fix sdb fis semantics John Snow
2015-07-02 14:09 ` [Qemu-devel] [PATCH v2 00/15] ahci: ncq cleanup, part 2 Stefan Hajnoczi
2015-07-02 15:36 ` John Snow
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=1435767578-32743-6-git-send-email-jsnow@redhat.com \
--to=jsnow@redhat.com \
--cc=kwolf@redhat.com \
--cc=pbonzini@redhat.com \
--cc=qemu-block@nongnu.org \
--cc=qemu-devel@nongnu.org \
--cc=stefanha@redhat.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).