From: Michael Roth <mdroth@linux.vnet.ibm.com>
To: qemu-devel@nongnu.org
Cc: kwolf@redhat.com, afaerber@suse.de, stefanha@redhat.com
Subject: [Qemu-devel] [PATCH] ide-test: fix failure for test_flush
Date: Mon, 10 Jun 2013 13:23:20 -0500 [thread overview]
Message-ID: <1370888600-25388-1-git-send-email-mdroth@linux.vnet.ibm.com> (raw)
bd07684aacfb61668ae2c25b7dd00b64f3d7c7f3 added a test to ensure BSY
flag is set when a flush request is in flight. It does this by setting
a blkdebug breakpoint on flush_to_os before issuing a CMD_FLUSH_CACHE.
It then resumes CMD_FLUSH_CACHE operation and checks that BSY is unset.
The actual unsetting of BSY does not occur until ide_flush_cb gets
called in a bh, however, so in some cases this check will race with
the actual completion.
Fix this by polling the ide status register until BSY flag gets unset
before we do our final sanity checks. According to
f68ec8379e88502b4841a110c070e9b118d3151c this is in line with how a guest
would determine whether or not the device is still busy.
Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
---
tests/ide-test.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/tests/ide-test.c b/tests/ide-test.c
index 828e71a..7e2eb94 100644
--- a/tests/ide-test.c
+++ b/tests/ide-test.c
@@ -455,7 +455,10 @@ static void test_flush(void)
data = inb(IDE_BASE + reg_device);
g_assert_cmpint(data & DEV, ==, 0);
- data = inb(IDE_BASE + reg_status);
+ do {
+ data = inb(IDE_BASE + reg_status);
+ } while (data & BSY);
+
assert_bit_set(data, DRDY);
assert_bit_clear(data, BSY | DF | ERR | DRQ);
--
1.7.9.5
next reply other threads:[~2013-06-10 18:23 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-06-10 18:23 Michael Roth [this message]
2013-06-11 7:38 ` [Qemu-devel] [PATCH] ide-test: fix failure for test_flush Kevin Wolf
2013-06-11 10:05 ` Andreas Färber
2013-06-11 12:13 ` Kevin Wolf
2013-06-11 15:45 ` mdroth
2013-06-17 21:06 ` Anthony Liguori
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=1370888600-25388-1-git-send-email-mdroth@linux.vnet.ibm.com \
--to=mdroth@linux.vnet.ibm.com \
--cc=afaerber@suse.de \
--cc=kwolf@redhat.com \
--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).