From: Avi Kivity <avi@redhat.com>
To: Anthony Liguori <anthony@codemonkey.ws>
Cc: "lmr@redhat.com" <lmr@redhat.com>,
Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>,
cleber@redhat.com, dlaor@redhat.com,
qemu-devel <qemu-devel@nongnu.org>,
Gerd Hoffmann <kraxel@redhat.com>, Cleber Rosa <crosa@redhat.com>
Subject: Re: [Qemu-devel] [ANNOUNCE] qemu-test: a set of tests scripts for QEMU
Date: Thu, 29 Dec 2011 18:36:22 +0200 [thread overview]
Message-ID: <4EFC9706.4090500@redhat.com> (raw)
In-Reply-To: <4EFC916E.4070902@codemonkey.ws>
On 12/29/2011 06:12 PM, Anthony Liguori wrote:
>>> That's why I've also proposed qtest. But having written quite a few
>>> qtest unit tests by now, you hit the limits of this type of testing
>>> pretty quickly.
>>
>> Can you describe those limits?
>
>
> I started writing a finger print test. While it's easy to do PCI
> enumeration, it gets pretty nasty if you want to actually access BARs
> (to read virtio registers)
Why is that? it should be pretty easy to poke values into the BAR registers.
Something else we can do is access the BARs directly. We have APIs to
poke values into mmio, add an api to poke a value into a device's BAR.
Now that each BAR is represented by exactly one memory region, known to
the pci core even if it is not mapped, it should be easy.
> and forget about trying to get SMBIOS information as that involves
> mucking around with ACPI.
SMBIOS is built by seabios, yes? So fingerprinting it should be done
from seabios-test.git. Let's divide it into two problems:
- seabios pokes qemu to get information. We should fingerprint this
information to make sure different qemu version can interoperate with
different seabios versions (needed since we migrate the bios along with
the rest of the guest). I'm guessing most of this info is from fwcfg?
We can easily fingerprint it like any other device.
- we need to make sure seabios generates the same tables when using -M.
Here, we're not testing a device, rather we're testing guest code, so it
makes sense to use a guest for this.
However, I don't think it's even necessary. From a quick read of the
manual, SMBIOS is just a set of static tables in memory which are picked
up using a signature. So all we need to do is boot an empty guest, read
its memory, and look for the tables.
>
> OTOH, it was very simple to write with qemu-test:
>
> http://git.qemu.org/?p=qemu-test.git;a=blob;f=tests/finger-print.sh;h=fc715378a3bbae0b458cc419981c2493d98f5c3d;hb=HEAD
>
Yes; but using Linux limits you to what it exposes (of course Linux
exposes quite a lot, so that's mostly a non issue; but we'll have
counterexamples).
>
> And I ended up finding some long standing bugs in the process:
>
> http://mid.gmane.org/1324305949-20960-2-git-send-email-aliguori@us.ibm.com
>
>
> It's fairly nasty as it would only show up if doing migration from a
> new QEMU with a new guest to a old QEMU.
Yes, good catch.
>
> I think it's a good example of the type of test that I'm targeting at
> qemu-test. It's really not interesting to run it across multiple
> distro types. But doing it with qtest would be prohibitively hard.
I don't see why. A python library to read pci config should be a couple
of dozens of lines long. Then you iterate over all functions and print
selected registers.
>>> Please review the qtest series. I think it offers a pretty good
>>> approach to writing this style of test. But as I mentioned, you hit
>>> the limits pretty quickly.
>>
>> I think it's great, it looks like exactly what I wanted, except it's
>> been delivered on time.
>
>
> Can you take a look at how interrupts are handled? From what I
> gather, the only real limitation of this approach is that we won't be
> able to simulate MSI vectors but I don't think that's a huge problem.
>
> I looked at integrating interrupt handling at CPUs itself and that
> turned out to be fairly invasive.
You mention in the changelog replacing the APIC. Why can't you do that?
>
>> I'd really like to see it integrated quickly
>> with some flesh around it, then replying -ENOTEST to all patches. This
>> will improve qemu's quality a lot more than guest boot/ping tests, which
>> we do regularly with kvm-autotest anyway.
>>
>> Think of how new instruction emulations are always accompanied by new
>> kvm-unit-tests tests, I often don't even have to ask for them.
>
> Yes, this is exactly where I'm heading with all of this.
It looks great. One thing I'd change is to use the qmp protocol
(perhaps not the monitor, just the schema/codegen). Does something
prohibit this?
--
error compiling committee.c: too many arguments to function
next prev parent reply other threads:[~2011-12-29 16:36 UTC|newest]
Thread overview: 74+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-12-19 17:13 [Qemu-devel] [ANNOUNCE] qemu-test: a set of tests scripts for QEMU Anthony Liguori
2011-12-19 17:39 ` Avi Kivity
2011-12-19 17:55 ` Anthony Liguori
2011-12-20 20:34 ` Lucas Meneghel Rodrigues
2011-12-25 15:19 ` Dor Laor
2011-12-26 15:12 ` Anthony Liguori
2011-12-26 23:00 ` Dor Laor
2011-12-27 15:22 ` Anthony Liguori
2011-12-27 15:58 ` Avi Kivity
2011-12-27 16:40 ` Anthony Liguori
2011-12-27 18:00 ` Lucas Meneghel Rodrigues
2011-12-27 22:35 ` Cleber Rosa
2011-12-28 2:37 ` Anthony Liguori
2011-12-28 4:15 ` Cleber Rosa
2011-12-28 5:01 ` Cleber Rosa
2011-12-28 14:27 ` Anthony Liguori
2011-12-28 15:01 ` Avi Kivity
2011-12-28 15:28 ` Avi Kivity
2011-12-28 16:44 ` Anthony Liguori
2011-12-28 17:26 ` Avi Kivity
2011-12-29 16:12 ` Anthony Liguori
2011-12-29 16:36 ` Avi Kivity [this message]
2011-12-29 16:49 ` Anthony Liguori
2011-12-29 17:03 ` Avi Kivity
2011-12-29 17:10 ` Anthony Liguori
2011-12-29 17:18 ` Avi Kivity
2011-12-29 17:22 ` Peter Maydell
2011-12-29 17:26 ` Avi Kivity
2011-12-29 17:36 ` Peter Maydell
2011-12-29 17:40 ` Avi Kivity
2011-12-29 17:49 ` Peter Maydell
2011-12-29 17:56 ` Avi Kivity
2011-12-29 21:10 ` Peter Maydell
2012-01-01 9:21 ` Avi Kivity
2011-12-29 18:35 ` Anthony Liguori
2011-12-29 19:04 ` Peter Maydell
2011-12-29 19:40 ` Blue Swirl
2011-12-29 21:46 ` Anthony Liguori
2011-12-29 22:10 ` Peter Maydell
2011-12-29 22:30 ` Anthony Liguori
2011-12-30 15:43 ` Andreas Färber
2012-01-03 13:42 ` Anthony Liguori
2012-01-03 14:51 ` Andreas Färber
2011-12-29 22:11 ` Lucas Meneghel Rodrigues
2011-12-29 18:33 ` Anthony Liguori
2011-12-30 13:44 ` Andreas Färber
2012-01-02 14:07 ` Paolo Bonzini
2012-01-03 8:19 ` Stefan Hajnoczi
2012-01-03 9:10 ` Paolo Bonzini
2011-12-28 16:42 ` Anthony Liguori
2011-12-28 17:21 ` Avi Kivity
2011-12-29 14:38 ` Dor Laor
2011-12-29 16:39 ` Anthony Liguori
2011-12-29 16:53 ` Avi Kivity
2011-12-29 17:02 ` Anthony Liguori
2011-12-29 17:06 ` Avi Kivity
2011-12-29 17:11 ` Anthony Liguori
2011-12-29 23:17 ` Lucas Meneghel Rodrigues
2011-12-30 0:33 ` Anthony Liguori
2011-12-30 1:20 ` Lucas Meneghel Rodrigues
2011-12-30 2:20 ` Cleber Rosa
2012-01-03 13:52 ` Anthony Liguori
2011-12-29 22:45 ` Lucas Meneghel Rodrigues
2011-12-29 16:26 ` Anthony Liguori
2011-12-29 16:46 ` Avi Kivity
2011-12-29 16:53 ` Anthony Liguori
2011-12-29 17:08 ` Avi Kivity
2011-12-29 17:14 ` Anthony Liguori
2011-12-29 17:22 ` Avi Kivity
2011-12-29 18:27 ` Anthony Liguori
2011-12-29 17:16 ` Anthony Liguori
2011-12-29 17:23 ` Avi Kivity
2011-12-28 14:49 ` Christoph Hellwig
2011-12-28 16:30 ` 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=4EFC9706.4090500@redhat.com \
--to=avi@redhat.com \
--cc=anthony@codemonkey.ws \
--cc=cleber@redhat.com \
--cc=crosa@redhat.com \
--cc=dlaor@redhat.com \
--cc=kraxel@redhat.com \
--cc=lmr@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=stefanha@linux.vnet.ibm.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).