From: Anthony Liguori <aliguori@us.ibm.com>
To: Markus Armbruster <armbru@redhat.com>, qemu-devel@nongnu.org
Cc: jan.kiszka@siemens.com, alex.williamson@redhat.com,
Luiz Capitulino <lcapitulino@redhat.com>,
afaerber@suse.de, aviksil@linux.vnet.ibm.com
Subject: Re: [Qemu-devel] [PATCH v3 08/16] boot-order-test: New; covering just PC for now
Date: Fri, 14 Jun 2013 08:48:51 -0500 [thread overview]
Message-ID: <87hah0g5vg.fsf@codemonkey.ws> (raw)
In-Reply-To: <1371208516-7857-9-git-send-email-armbru@redhat.com>
Markus Armbruster <armbru@redhat.com> writes:
> Signed-off-by: Markus Armbruster <armbru@redhat.com>
> ---
> tests/Makefile | 2 ++
> tests/boot-order-test.c | 68 +++++++++++++++++++++++++++++++++++++++++++++++++
> 2 files changed, 70 insertions(+)
> create mode 100644 tests/boot-order-test.c
>
> diff --git a/tests/Makefile b/tests/Makefile
> index c107489..394e029 100644
> --- a/tests/Makefile
> +++ b/tests/Makefile
> @@ -54,6 +54,7 @@ gcov-files-i386-y = hw/fdc.c
> check-qtest-i386-y += tests/ide-test$(EXESUF)
> check-qtest-i386-y += tests/hd-geo-test$(EXESUF)
> gcov-files-i386-y += hw/hd-geometry.c
> +check-qtest-i386-y += tests/boot-order-test$(EXESUF)
> check-qtest-i386-y += tests/rtc-test$(EXESUF)
> check-qtest-i386-y += tests/i440fx-test$(EXESUF)
> check-qtest-i386-y += tests/fw_cfg-test$(EXESUF)
> @@ -130,6 +131,7 @@ tests/m48t59-test$(EXESUF): tests/m48t59-test.o
> tests/fdc-test$(EXESUF): tests/fdc-test.o
> tests/ide-test$(EXESUF): tests/ide-test.o $(libqos-pc-obj-y)
> tests/hd-geo-test$(EXESUF): tests/hd-geo-test.o
> +tests/boot-order-test$(EXESUF): tests/boot-order-test.o
> tests/tmp105-test$(EXESUF): tests/tmp105-test.o $(libqos-omap-obj-y)
> tests/i440fx-test$(EXESUF): tests/i440fx-test.o $(libqos-pc-obj-y)
> tests/fw_cfg-test$(EXESUF): tests/fw_cfg-test.o $(libqos-pc-obj-y)
> diff --git a/tests/boot-order-test.c b/tests/boot-order-test.c
> new file mode 100644
> index 0000000..2215710
> --- /dev/null
> +++ b/tests/boot-order-test.c
> @@ -0,0 +1,68 @@
> +/*
> + * Boot order test cases.
> + *
> + * Copyright (c) 2013 Red Hat Inc.
> + *
> + * Authors:
> + * Markus Armbruster <armbru@redhat.com>,
> + *
> + * This work is licensed under the terms of the GNU GPL, version 2 or later.
> + * See the COPYING file in the top-level directory.
> + */
> +
> +#include <glib.h>
> +#include "libqtest.h"
> +
> +static void test_pc_cmos_byte(int reg, int expected)
> +{
> + int actual;
> +
> + outb(0x70, reg);
> + actual = inb(0x71);
> + g_assert_cmphex(actual, ==, expected);
> +}
> +
> +static void test_pc_cmos(uint8_t boot1, uint8_t boot2)
> +{
> + test_pc_cmos_byte(0x38, boot1);
> + test_pc_cmos_byte(0x3d, boot2);
> +}
> +
> +static void test_pc_with_args(const char *test_args,
> + uint8_t boot1, uint8_t boot2,
> + uint8_t reboot1, uint8_t reboot2)
> +{
> + char *args = g_strdup_printf("-nodefaults -display none %s", test_args);
> +
> + qtest_start(args);
> + test_pc_cmos(boot1, boot2);
> + qmp("{ 'execute': 'system_reset' }");
I think this races. I'd suggest doing a tight loop of this test and
running it a few thousand times to see if you can catch it.
qmp_system_reset() calls qemu_system_reset_requested() which stops all
CPUs but let's control fall back to the main loop which actually does
the device reset.
I think there's a tiny window where this command could return while the
reset routines have not been actually called yet.
Technically speaking, I think it's necessary to wait for a reset event
to know that the device model has been reset.
Regards,
Anthony Liguori
> + test_pc_cmos(reboot1, reboot2);
> + qtest_quit(global_qtest);
> + g_free(args);
> +}
> +
> +static void test_pc_boot_order(void)
> +{
> + test_pc_with_args("", 0x30, 0x12, 0x30, 0x12);
> + test_pc_with_args("-no-fd-bootchk", 0x31, 0x12, 0x31, 0x12);
> + test_pc_with_args("-boot c", 0, 0x02, 0, 0x02);
> + test_pc_with_args("-boot nda", 0x10, 0x34, 0x10, 0x34);
> + test_pc_with_args("-boot order=", 0, 0, 0, 0);
> + test_pc_with_args("-boot order= -boot order=c", 0, 0x02, 0, 0x02);
> + test_pc_with_args("-boot once=a", 0, 0x01, 0x30, 0x12);
> + test_pc_with_args("-boot once=a -no-fd-bootchk", 0x01, 0x01, 0x31, 0x12);
> + test_pc_with_args("-boot once=a,order=c", 0, 0x01, 0, 0x02);
> + test_pc_with_args("-boot once=d -boot order=nda", 0, 0x03, 0x10, 0x34);
> + test_pc_with_args("-boot once=a -boot once=b -boot once=c",
> + 0, 0x02, 0x30, 0x12);
> +}
> +
> +int main(int argc, char *argv[])
> +{
> + g_test_init(&argc, &argv, NULL);
> +
> + qtest_add_func("boot-order/pc", test_pc_boot_order);
> +
> + return g_test_run();
> +}
> --
> 1.7.11.7
next prev parent reply other threads:[~2013-06-14 13:49 UTC|newest]
Thread overview: 39+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-06-14 11:15 [Qemu-devel] [PATCH v3 00/16] -boot and -no-fd-bootchk fixes Markus Armbruster
2013-06-14 11:15 ` [Qemu-devel] [PATCH v3 01/16] vl: Clean up parsing of -boot option argument Markus Armbruster
2013-06-14 13:36 ` Anthony Liguori
2013-06-14 11:15 ` [Qemu-devel] [PATCH v3 02/16] qemu-option: check_params() is now unused, drop it Markus Armbruster
2013-06-14 13:36 ` Anthony Liguori
2013-06-14 11:15 ` [Qemu-devel] [PATCH v3 03/16] vl: Fix -boot order and once regressions, and related bugs Markus Armbruster
2013-06-14 13:38 ` Anthony Liguori
2013-06-14 11:15 ` [Qemu-devel] [PATCH v3 04/16] vl: Rename *boot_devices to *boot_order, for consistency Markus Armbruster
2013-06-14 13:38 ` Anthony Liguori
2013-06-14 11:15 ` [Qemu-devel] [PATCH v3 05/16] pc: Make -no-fd-bootchk stick across boot order changes Markus Armbruster
2013-06-14 13:40 ` Anthony Liguori
2013-06-18 11:39 ` Markus Armbruster
2013-07-08 1:24 ` Kevin O'Connor
2013-06-14 11:15 ` [Qemu-devel] [PATCH v3 06/16] doc: Drop ref to Bochs from -no-fd-bootchk documentation Markus Armbruster
2013-06-14 13:41 ` Anthony Liguori
2013-06-14 11:15 ` [Qemu-devel] [PATCH v3 07/16] qtest: Don't reset on qtest chardev connect Markus Armbruster
2013-06-14 13:44 ` Anthony Liguori
2013-06-18 11:41 ` Markus Armbruster
2013-06-14 11:15 ` [Qemu-devel] [PATCH v3 08/16] boot-order-test: New; covering just PC for now Markus Armbruster
2013-06-14 13:48 ` Anthony Liguori [this message]
2013-06-18 13:33 ` Markus Armbruster
2013-06-18 14:13 ` Andreas Färber
2013-06-18 15:02 ` Anthony Liguori
2013-06-14 11:15 ` [Qemu-devel] [PATCH v3 09/16] boot-order-test: Add tests for PowerMacs Markus Armbruster
2013-06-14 13:49 ` Anthony Liguori
2013-06-14 11:15 ` [Qemu-devel] [PATCH v3 10/16] boot-order-test: Cover -boot once in ppc tests Markus Armbruster
2013-06-14 13:50 ` Anthony Liguori
2013-06-14 11:15 ` [Qemu-devel] [PATCH v3 11/16] boot-order-test: Better separate target-specific and generic parts Markus Armbruster
2013-06-14 13:52 ` Anthony Liguori
2013-06-14 11:15 ` [Qemu-devel] [PATCH v3 12/16] boot-order-test: Code motion for better readability Markus Armbruster
2013-06-14 11:15 ` [Qemu-devel] [PATCH v3 13/16] boot-order-test: Add tests for PowerPC PREP Markus Armbruster
2013-06-14 11:15 ` [Qemu-devel] [PATCH v3 14/16] boot-order-test: Add tests for Sun4m Markus Armbruster
2013-06-14 11:15 ` [Qemu-devel] [PATCH v3 15/16] boot-order-test: Support fw_cfg in I/O space Markus Armbruster
2013-06-14 13:53 ` Anthony Liguori
2013-06-14 14:04 ` Andreas Färber
2013-06-19 6:49 ` Markus Armbruster
2013-06-19 18:47 ` Markus Armbruster
2013-06-14 11:15 ` [Qemu-devel] [PATCH v3 16/16] boot-order-test: Add tests for Sun4u Markus Armbruster
2013-06-21 15:34 ` [Qemu-devel] [PATCH v3 00/16] -boot and -no-fd-bootchk fixes 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=87hah0g5vg.fsf@codemonkey.ws \
--to=aliguori@us.ibm.com \
--cc=afaerber@suse.de \
--cc=alex.williamson@redhat.com \
--cc=armbru@redhat.com \
--cc=aviksil@linux.vnet.ibm.com \
--cc=jan.kiszka@siemens.com \
--cc=lcapitulino@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.