All of lore.kernel.org
 help / color / mirror / Atom feed
From: Eduardo Habkost <ehabkost@redhat.com>
To: David Hildenbrand <david@redhat.com>
Cc: qemu-devel@nongnu.org, libvir-list@redhat.com,
	Markus Armbruster <armbru@redhat.com>,
	Christian Borntraeger <borntraeger@de.ibm.com>,
	"Jason J. Herne" <jjherne@linux.vnet.ibm.com>,
	Cornelia Huck <cornelia.huck@de.ibm.com>,
	Igor Mammedov <imammedo@redhat.com>,
	Jiri Denemark <jdenemar@redhat.com>,
	Richard Henderson <rth@twiddle.net>
Subject: Re: [Qemu-devel] [PATCH for-2.9 00/17] target-i386: Implement query-cpu-model-expansion
Date: Mon, 5 Dec 2016 15:11:35 -0200	[thread overview]
Message-ID: <20161205171135.GG13060@thinpad.lan.raisama.net> (raw)
In-Reply-To: <d611cf93-06e4-edc1-8012-1501f3b883ad@redhat.com>

On Mon, Dec 05, 2016 at 04:15:38PM +0100, David Hildenbrand wrote:
> Am 02.12.2016 um 22:17 schrieb Eduardo Habkost:
> > This series implements query-cpu-model-expansion on target-i386.
> > 
> > QAPI / interface changes
> > ------------------------
> > 
> > When implementing this, I have noticed that the "host" CPU model
> > in i386 includes some migration-unsafe features that can't be
> > translated to any migration-safe representation: "pmu", and
> > "host-cache-info".
> > 
> > To be able to handle the migration-unsafe features, I have
> > extended the query-cpu-model-expansion definition to be clear
> > about what happens to those features when the CPU model is
> > expanded (in short: static expansion removes them, full expansion
> > keeps them).
> 
> I think this makes sense. The important part is to really keep static
> expansion static :)
> 
> > 
> > I also added "static" and "migration-safe" fields to the return
> > value of query-cpu-model-expansion, so callers can know if the
> > the expanded representation is static and migration-safe.
> 
> Is static really needed? I can understand why migration-safe might be
> of interest, but can't see how "static" could help (I mean we have
> static expansion for this purpose). Do you have anything special in
> mind regarding exposing "static"?

I didn't have any specific use case in mind. My main worry is to
avoid letting management software make any assumptions about the
returned data. If we don't add an explicit "static" field, a
client might make some wrong assumptions just because some
conditions are known to be always true on existing
implementations. e.g.: a client could incorrectly assume that
"query-cpu-model-expansion type=full" of a migration-safe model
would always be static.


> 
> > 
> > Test code
> > ---------
> > 
> > I have added a Python test script for the feature, that will try
> > multiple combinations of the expansion operation, and see if the
> > returned data keeps matches some constratins.
> > 
> > The test script works with the s390x query-cpu-model-expansion
> > command, except that: 1) I couldn't test it with KVM; 2) qtest.py
> > error handling when QEMU refuses to run is unreliable (so the
> > script needs runnability information to be availble in TCG mode,
> > too, to skip not-runnable CPU models and avoid problems).
> 
> Everything except "host" should behave completely the same on s390x
> with or without KVM being active. So with !KVM tests we can already
> cover most of the interesting parts. Thanks for taking care of s390x.
> 
> > 
> > Future versions of the test script could run a arch-specific
> > CPUID-dump guest binary, and validate data seen by the guest
> > directly. While we don't do that, the script validates all QOM
> > properties on the CPU objects looking for unexpected changes. At
> > least in the case of x86, the QOM properties will include lots of
> > the CPUID data seen by the guest, giving us decent coverage.
> 
> Something like that would be cool. Unfortunately, e.g. on s390x some
> CPUID-like data (e.g. STFL(E) and SCP info) is only available from
> kernel space. So we can't simply run a user space script. However,
> something like a kernel module would be possible (or even something like the
> s390x pc-bios to simply read and dump the data).

I meant a kernel binary, above. On x86, there are existing test
cases on the autotest repository that run a very small kernel[1]
that simply dumps CPUID data to the serial console. We could
reuse it, or we could add a CPUID command to the qtest protocol.
I'm not sure what's the best solution.

We can try to use a similar approach on s390x to reuse code in
the test script, but we can add arch-specific code to it if
necessary.

[1] https://github.com/autotest/tp-qemu/tree/master/qemu/deps/cpuid/src

-- 
Eduardo

  reply	other threads:[~2016-12-05 17:11 UTC|newest]

Thread overview: 35+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-12-02 21:17 [Qemu-devel] [PATCH for-2.9 00/17] target-i386: Implement query-cpu-model-expansion Eduardo Habkost
2016-12-02 21:18 ` [Qemu-devel] [PATCH for-2.9 01/17] qmp: Report QOM type name on query-cpu-definitions Eduardo Habkost
2016-12-02 21:18 ` [Qemu-devel] [PATCH for-2.9 02/17] qemu.py: Make logging optional Eduardo Habkost
2016-12-02 21:18 ` [Qemu-devel] [PATCH for-2.9 03/17] qtest.py: Support QTEST_LOG environment variable Eduardo Habkost
2016-12-02 21:18 ` [Qemu-devel] [PATCH for-2.9 04/17] qtest.py: make logging optional Eduardo Habkost
2016-12-02 21:18 ` [Qemu-devel] [PATCH for-2.9 05/17] qtest.py: Make 'binary' parameter optional Eduardo Habkost
2016-12-02 21:18 ` [Qemu-devel] [PATCH for-2.9 06/17] tests: Add rules to non-gtester qtest test cases Eduardo Habkost
2016-12-02 21:18 ` [Qemu-devel] [PATCH for-2.9 07/17] target-i386: Reorganize and document CPUID initialization steps Eduardo Habkost
2016-12-02 21:18 ` [Qemu-devel] [PATCH for-2.9 08/17] target-i386: Support "-cpu host" on TCG too Eduardo Habkost
2016-12-02 21:18 ` [Qemu-devel] [PATCH for-2.9 09/17] target-i386: Move "host" properties to base class Eduardo Habkost
2016-12-02 21:18 ` [Qemu-devel] [PATCH for-2.9 10/17] target-i386: Allow short strings to be used as vendor ID Eduardo Habkost
2016-12-02 21:18 ` [Qemu-devel] [PATCH for-2.9 11/17] target-i386: Remove AMD feature flag aliases from Opteron models Eduardo Habkost
2016-12-02 21:18 ` [Qemu-devel] [PATCH for-2.9 12/17] target-i386: Return migration-safe field on query-cpu-definitions Eduardo Habkost
2016-12-02 21:18 ` [Qemu-devel] [PATCH for-2.9 13/17] cpu: Support comma escaping when parsing -cpu Eduardo Habkost
2016-12-02 21:18 ` [Qemu-devel] [PATCH for-2.9 14/17] qapi: add static/migration-safe info to query-cpu-model-expansion Eduardo Habkost
2016-12-13  9:47   ` Markus Armbruster
2016-12-13 12:46     ` Eduardo Habkost
2016-12-02 21:18 ` [Qemu-devel] [PATCH for-2.9 15/17] target-i386: Define static "base" CPU model Eduardo Habkost
2016-12-05 18:18   ` David Hildenbrand
2016-12-05 23:57     ` Eduardo Habkost
2016-12-06  9:32       ` David Hildenbrand
2016-12-06 12:43         ` Eduardo Habkost
2016-12-16 16:02       ` Jiri Denemark
2016-12-20 16:49         ` David Hildenbrand
2016-12-02 21:18 ` [Qemu-devel] [PATCH for-2.9 16/17] tests: query-cpu-model-test.py test code Eduardo Habkost
2016-12-02 21:18 ` [Qemu-devel] [PATCH for-2.9 17/17] target-i386: Implement query-cpu-model-expansion QMP command Eduardo Habkost
2016-12-13 10:16   ` Markus Armbruster
2016-12-13 12:55     ` Eduardo Habkost
2016-12-13 19:20       ` Markus Armbruster
2016-12-13 21:11         ` Eduardo Habkost
2016-12-05  9:09 ` [Qemu-devel] [libvirt] [PATCH for-2.9 00/17] target-i386: Implement query-cpu-model-expansion no-reply
2016-12-05 15:15 ` [Qemu-devel] " David Hildenbrand
2016-12-05 17:11   ` Eduardo Habkost [this message]
2016-12-05 18:13     ` David Hildenbrand
2016-12-05 23:45       ` Eduardo Habkost

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=20161205171135.GG13060@thinpad.lan.raisama.net \
    --to=ehabkost@redhat.com \
    --cc=armbru@redhat.com \
    --cc=borntraeger@de.ibm.com \
    --cc=cornelia.huck@de.ibm.com \
    --cc=david@redhat.com \
    --cc=imammedo@redhat.com \
    --cc=jdenemar@redhat.com \
    --cc=jjherne@linux.vnet.ibm.com \
    --cc=libvir-list@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=rth@twiddle.net \
    /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.