All of lore.kernel.org
 help / color / mirror / Atom feed
From: Christoffer Dall <christoffer.dall@linaro.org>
To: "Daniel P. Berrange" <berrange@redhat.com>
Cc: Peter Maydell <peter.maydell@linaro.org>,
	Andrew Jones <drjones@redhat.com>,
	Eric Auger <eric.auger@linaro.org>,
	Libvirt <libvir-list@redhat.com>,
	Andre Przywara <andre.przywara@arm.com>,
	Andrea Bolognani <abologna@redhat.com>,
	qemu-devel@nongnu.org, Marc Zyngier <marc.zyngier@arm.com>
Subject: Re: [Qemu-devel] [libvirt] ARM KVM GICv3 Support
Date: Tue, 2 Feb 2016 12:49:33 +0100	[thread overview]
Message-ID: <20160202114933.GA11792@cbox> (raw)
In-Reply-To: <20160122144432.GJ14825@redhat.com>

On Fri, Jan 22, 2016 at 02:44:32PM +0000, Daniel P. Berrange wrote:
> On Wed, Jan 06, 2016 at 01:30:16PM +0000, Peter Maydell wrote:
> > On 6 January 2016 at 12:49, Andrea Bolognani <abologna@redhat.com> wrote:
> > > That's correct, having a QMP command that lists the values gic-version
> > > can have on the current host would be just great.
> > >
> > > If we had that, we could validate the GIC version chosen for a guest,
> > > and expose it in the capabilities XML so that higher-level tools can
> > > provide a list of choices to the user.
> > >
> > > Please note that this QMP command would have to work regardless of the
> > > machine type selected on QEMU's command line, because libvirt always
> > > runs a QEMU binary with '-M none' when probing its capabilities.
> > 
> > On the other hand, if you don't tell us the machine type you care
> > about then we can't tell you:
> >  (a) "this machine type doesn't support setting this property at all"
> >      (which applies to machines like vexpress-a15 which you can use with
> >      KVM on 32-bit hosts, and of course also to all the non-KVM models)
> 
> We have just recently merged support for registering properties against
> classes instead of object instances. There is also a proposed command
> to allow querying the list of properties against a class
> 
>   https://lists.gnu.org/archive/html/qemu-devel/2016-01/msg04348.html
> 
> So if we now update the machine types to register their properties against
> the class instead of object, then we can query what properties are present
> against each machine type, while still using '-M none'.
> 
> >  (b) "this machine type only supports GIC versions X and Y even if the
> >       host supports more" (this is currently only hypothetical, though,
> >       since we only have the property on 'virt'. it would only happen
> >       if in the future we needed something other than '2' or '3' or
> >       'host' I think.)
> 
> Our introspection support in QOM only allows us to say that a property
> is a particular type (int / enum / str / whatever). We don't have any
> way to expose info about what subset of possible values for a type are
> permitted. So I don't see any near term way to inform apps that the
> gic property accepts values x, y and but not z.
> 
> IMHO, we shouldn't try to overthink this. Libvirt can query the host
> to find out what GIC versions are supported and default to using the
> most recent version, on the basis that people are likely to have a
> matching QEMU. We can just rely on QEMU to report error if we pass
> it a version it doesn't support and not try to pre-emptively check
> before launch. The key is just getting the default right IMHO.
> 
This sounds fine to me.

However, not being familiar with the internals of libvirt I really can't
just what the right implementation approach here is.

As I understand we need to either:

  1) Add a QMP command that lets you ask for -M virt, if GIC version X
     is supported

  2) Just implement something in libvirt that checks what the kernel
     supports directly via the well-defined KVM interface and chooses
     the highest supported version per default.

To me it sounds like we should just go ahead with (2) and document
somehwere that if you get an error, you need to either manually change
the gic version setting in your VM definition file or upgrade QEMU.

Can someone with libvirt authority please advice whether (1) or (2) is
what we need to do?

Thanks,
-Christoffer

  reply	other threads:[~2016-02-02 11:49 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <1451993822.16471.1.camel@redhat.com>
     [not found] ` <20160105120832.GC28354@cbox>
     [not found]   ` <1451997467.16471.3.camel@redhat.com>
     [not found]     ` <20160105134720.GA2393@cbox>
     [not found]       ` <1452016711.16471.6.camel@redhat.com>
     [not found]         ` <CAFEAcA_Y6keKPb0Ayjp4yFSdfZXg7rFmxxZ33f=e4R0sV+b8HQ@mail.gmail.com>
     [not found]           ` <1452018414.16471.8.camel@redhat.com>
     [not found]             ` <20160106113402.GA13870@cbox>
     [not found]               ` <1452084567.4759.6.camel@redhat.com>
     [not found]                 ` <CAFEAcA9AGYQiWPDH6fcxMo=jycxtKL8c50JmH1TtS4=Qz53-XQ@mail.gmail.com>
     [not found]                   ` <20160109150155.GA31776@cbox>
     [not found]                     ` <1452613707.4114.9.camel@redhat.com>
2016-01-19 16:46                       ` [Qemu-devel] [libvirt] ARM KVM GICv3 Support Andrew Jones
2016-01-19 16:53                         ` Peter Maydell
2016-01-19 17:34                           ` Laszlo Ersek
2016-01-22 14:44                   ` Daniel P. Berrange
2016-02-02 11:49                     ` Christoffer Dall [this message]
2016-02-02 12:10                       ` Daniel P. Berrange
2016-02-02 12:59                         ` Andrew Jones
2016-02-02 13:15                           ` Peter Maydell
2016-02-02 14:04                             ` Andrew Jones
2016-02-02 14:07                               ` Peter Maydell
2016-02-02 14:05                           ` Christoffer Dall
2016-02-02 14:42                             ` Andrew Jones
2016-02-02 15:52                             ` Eric Blake
2016-02-02 15:58                               ` Christoffer Dall
2016-02-15 10:08                                 ` Andrea Bolognani
2016-02-02 15:09                           ` Andrea Bolognani
2016-02-02 15:36                             ` Pavel Fedin
2016-02-02 15:50                             ` Peter Maydell

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=20160202114933.GA11792@cbox \
    --to=christoffer.dall@linaro.org \
    --cc=abologna@redhat.com \
    --cc=andre.przywara@arm.com \
    --cc=berrange@redhat.com \
    --cc=drjones@redhat.com \
    --cc=eric.auger@linaro.org \
    --cc=libvir-list@redhat.com \
    --cc=marc.zyngier@arm.com \
    --cc=peter.maydell@linaro.org \
    --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.