All of lore.kernel.org
 help / color / mirror / Atom feed
From: David Gibson <david@gibson.dropbear.id.au>
To: Eduardo Habkost <ehabkost@redhat.com>
Cc: Thomas Huth <thuth@redhat.com>,
	qemu-ppc@nongnu.org, Paolo Bonzini <pbonzini@redhat.com>,
	Bharata B Rao <bharata@linux.vnet.ibm.com>,
	qemu-devel@nongnu.org, Alexander Graf <agraf@suse.de>,
	Markus Armbruster <armbru@redhat.com>
Subject: Re: [Qemu-devel] [PATCH 2/2] vl: Print CPU help after we've registered the CPU accelerators
Date: Thu, 9 Mar 2017 12:29:10 +1100	[thread overview]
Message-ID: <20170309012910.GJ19967@umbus.fritz.box> (raw)
In-Reply-To: <20170308120850.GA4694@thinpad.lan.raisama.net>

[-- Attachment #1: Type: text/plain, Size: 4017 bytes --]

On Wed, Mar 08, 2017 at 09:08:50AM -0300, Eduardo Habkost wrote:
> On Wed, Mar 08, 2017 at 01:33:45PM +1100, David Gibson wrote:
> > On Tue, Mar 07, 2017 at 09:02:37AM -0300, Eduardo Habkost wrote:
> > > On Tue, Mar 07, 2017 at 02:31:05PM +1100, David Gibson wrote:
> > > > On Mon, Mar 06, 2017 at 08:47:52AM -0300, Eduardo Habkost wrote:
> > > > > On Mon, Mar 06, 2017 at 10:06:27AM +1100, David Gibson wrote:
> > > > > > On Fri, Mar 03, 2017 at 11:58:07AM -0300, Eduardo Habkost wrote:
> > > > > > > On Tue, Jan 31, 2017 at 02:11:59PM +0100, Thomas Huth wrote:
> > > > > > > > When running with KVM on POWER, we register some CPU types during
> > > > > > > > the initialization function of the ppc64 KVM code (which unfortunately
> > > > > > > > also can not be done via a type_init() like it is done on x86).
> > > > > > > 
> > > > > > > Can you elaborate why it can't be done via type_init()? If the
> > > > > > > QOM type hierarchy depends on any runtime data unavailable at
> > > > > > > type_init(), we should fix that.
> > > > > > 
> > > > > > Hmm.. how?  This is specifically for the special 'host' cpu in the
> > > > > > case of KVM.  We can't use a static configuration here, because there
> > > > > > are things on the host that could limit what features of the CPU are
> > > > > > available for guest use.  So, we need KVM to be initialized in order
> > > > > > to query that information.
> > > > > 
> > > > > There's nothing saying you need to query that information before
> > > > > type_register() or during class_init, does it? The behavior of
> > > > > TYPE_HOST_POWERPC_CPU after object_new() is called can be as
> > > > > dynamic as you want it to, but the QOM type hierarchy is supposed
> > > > > to be static.
> > > > 
> > > > So, the thing is we have some properties that logically belong in the
> > > > CPU class, rather than instance, and that's correct for all TCG CPUs,
> > > > but not for the KVM host CPU.  It seems nasty to have to force all
> > > > those things into the instance just because of KVM.
> > > 
> > > You can still register any class properties you want, without
> > > querying KVM first. Are there properties that you are able to
> > > register only after querying KVM? Is the set of class properties
> > > on TYPE_HOST_POWERPC_CPU different depending on the host
> > > capabilities?
> > 
> > Sorry, I used "properties" sloppily, not meaning QOM properties.
> > 
> > There are several fields in the CPU class which describe CPU
> > capabilities - bitmasks indicating which instructions are available,
> > and L1 cacheline sizes.  There are some other things that are in the
> > CPU instance at the moment, but arguably would belong better in the
> > class: available page sizes and PTE encodings, for example.
> > 
> > At the real hardware level these things are dependent only the model
> > of CPU - hence belonging in cpu class, not instance.  But, because of
> > the way virtualization works on POWER, some of the features may not be
> > available to guests, due to configuration of the hypervisor.  So for
> > the "host" cpu we need to query KVM to see which CPU features are
> > actually available.
> > 
> 
> I see. If there is data that is available only at PowerPCCPUClass
> and you don't want to duplicate it at PowerPCCPU, we can have a
> solution for that: instead of late-registration of the class, we
> could leave those fields to be populated after KVM is
> initialized.

Ok, that sounds workable.

> Anyway, I don't think this is urgent: the code already treats
> "host" as an exception in ppc_cpu_list(), and (AFAICS) the
> original problem this patch addresses is related to the
> inaccurate alias information only (which is not a consequence of
> the late type_register() call).

I agree.

-- 
David Gibson			| I'll have my music baroque, and my code
david AT gibson.dropbear.id.au	| minimalist, thank you.  NOT _the_ _other_
				| _way_ _around_!
http://www.ozlabs.org/~dgibson

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 819 bytes --]

  reply	other threads:[~2017-03-09  3:00 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-01-31 13:11 [Qemu-devel] [PATCH 0/2] ppc: Fix problems with duplicated CPU family types Thomas Huth
2017-01-31 13:11 ` [Qemu-devel] [PATCH 1/2] ppc/kvm: Handle the "family" CPU via alias instead of registering new types Thomas Huth
2017-02-01  0:10   ` David Gibson
2017-02-01  7:39     ` Thomas Huth
2017-02-01 22:27       ` David Gibson
2017-01-31 13:11 ` [Qemu-devel] [PATCH 2/2] vl: Print CPU help after we've registered the CPU accelerators Thomas Huth
2017-02-01  0:08   ` David Gibson
2017-02-02  1:11     ` Paolo Bonzini
2017-03-03 14:58   ` Eduardo Habkost
2017-03-05 23:06     ` David Gibson
2017-03-06 11:47       ` Eduardo Habkost
2017-03-07  3:31         ` David Gibson
2017-03-07 12:02           ` Eduardo Habkost
2017-03-08  2:33             ` David Gibson
2017-03-08 12:08               ` Eduardo Habkost
2017-03-09  1:29                 ` David Gibson [this message]
2017-03-07  9:02     ` Thomas Huth
2017-03-07 12:07       ` Eduardo Habkost
2017-03-10 12:40       ` Andrea Bolognani
2017-03-08 14:31     ` Peter Maydell
2017-03-08 14:50       ` Eduardo Habkost
2017-03-08 15:50         ` Thomas Huth

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=20170309012910.GJ19967@umbus.fritz.box \
    --to=david@gibson.dropbear.id.au \
    --cc=agraf@suse.de \
    --cc=armbru@redhat.com \
    --cc=bharata@linux.vnet.ibm.com \
    --cc=ehabkost@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=qemu-ppc@nongnu.org \
    --cc=thuth@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 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.