All of lore.kernel.org
 help / color / mirror / Atom feed
From: Alex Williamson <alex.williamson@redhat.com>
To: Gerd Hoffmann <kraxel@redhat.com>, "Tian, Kevin" <kevin.tian@intel.com>
Cc: Neo Jia <cjia@nvidia.com>, Kirti Wankhede <kwankhede@nvidia.com>,
	Paolo Bonzini <pbonzini@redhat.com>,
	"Ruan, Shuai" <shuai.ruan@intel.com>,
	"Song, Jike" <jike.song@intel.com>,
	"Lv, Zhiyuan" <zhiyuan.lv@intel.com>,
	"kvm@vger.kernel.org" <kvm@vger.kernel.org>,
	qemu-devel <qemu-devel@nongnu.org>
Subject: Re: [RFC PATCH v1 1/1] vGPU core driver : to provide common interface for vGPU.
Date: Wed, 03 Feb 2016 12:32:43 -0700	[thread overview]
Message-ID: <1454527963.18969.8.camel@redhat.com> (raw)
In-Reply-To: <1454488111.4967.39.camel@redhat.com>

On Wed, 2016-02-03 at 09:28 +0100, Gerd Hoffmann wrote:
>   Hi,
> 
> > Actually I have a long puzzle in this area. Definitely libvirt will use UUID to
> > mark a VM. And obviously UUID is not recorded within KVM. Then how does
> > libvirt talk to KVM based on UUID? It could be a good reference to this design.
> 
> libvirt keeps track which qemu instance belongs to which vm.
> qemu also gets started with "-uuid ...", so one can query qemu via
> monitor ("info uuid") to figure what the uuid is.  It is also in the
> smbios tables so the guest can see it in the system information table.
> 
> The uuid is not visible to the kernel though, the kvm kernel driver
> doesn't know what the uuid is (and neither does vfio).  qemu uses file
> handles to talk to both kvm and vfio.  qemu notifies both kvm and vfio
> about anything relevant events (guest address space changes etc) and
> connects file descriptors (eventfd -> irqfd).

I think the original link to using a VM UUID for the vGPU comes from
NVIDIA having a userspace component which might get launched from a udev
event as the vGPU is created or the set of vGPUs within that UUID is
started.  Using the VM UUID then gives them a way to associate that
userspace process with a VM instance.  Maybe it could register with
libvirt for some sort of service provided for the VM, I don't know.

> qemu needs a sysfs node as handle to the vfio device, something
> like /sys/devices/virtual/vgpu/<name>.  <name> can be a uuid if you want
> have it that way, but it could be pretty much anything.  The sysfs node
> will probably show up as-is in the libvirt xml when assign a vgpu to a
> vm.  So the name should be something stable (i.e. when using a uuid as
> name you should better not generate a new one on each boot).

Actually I don't think there's really a persistent naming issue, that's
probably where we diverge from the SR-IOV model.  SR-IOV cannot
dynamically add a new VF, it needs to reset the number of VFs to zero,
then re-allocate all of them up to the new desired count.  That has some
obvious implications.  I think with both vendors here, we can
dynamically allocate new vGPUs, so I would expect that libvirt would
create each vGPU instance as it's needed.  None would be created by
default without user interaction.

Personally I think using a UUID makes sense, but it needs to be
userspace policy whether that UUID has any implicit meaning like
matching the VM UUID.  Having an index within a UUID bothers me a bit,
but it doesn't seem like too much of a concession to enable the use case
that NVIDIA is trying to achieve.  Thanks,

Alex


WARNING: multiple messages have this Message-ID (diff)
From: Alex Williamson <alex.williamson@redhat.com>
To: Gerd Hoffmann <kraxel@redhat.com>, "Tian, Kevin" <kevin.tian@intel.com>
Cc: "Ruan, Shuai" <shuai.ruan@intel.com>,
	"Song, Jike" <jike.song@intel.com>, Neo Jia <cjia@nvidia.com>,
	"kvm@vger.kernel.org" <kvm@vger.kernel.org>,
	qemu-devel <qemu-devel@nongnu.org>,
	Kirti Wankhede <kwankhede@nvidia.com>,
	"Lv, Zhiyuan" <zhiyuan.lv@intel.com>,
	Paolo Bonzini <pbonzini@redhat.com>
Subject: Re: [Qemu-devel] [RFC PATCH v1 1/1] vGPU core driver : to provide common interface for vGPU.
Date: Wed, 03 Feb 2016 12:32:43 -0700	[thread overview]
Message-ID: <1454527963.18969.8.camel@redhat.com> (raw)
In-Reply-To: <1454488111.4967.39.camel@redhat.com>

On Wed, 2016-02-03 at 09:28 +0100, Gerd Hoffmann wrote:
>   Hi,
> 
> > Actually I have a long puzzle in this area. Definitely libvirt will use UUID to
> > mark a VM. And obviously UUID is not recorded within KVM. Then how does
> > libvirt talk to KVM based on UUID? It could be a good reference to this design.
> 
> libvirt keeps track which qemu instance belongs to which vm.
> qemu also gets started with "-uuid ...", so one can query qemu via
> monitor ("info uuid") to figure what the uuid is.  It is also in the
> smbios tables so the guest can see it in the system information table.
> 
> The uuid is not visible to the kernel though, the kvm kernel driver
> doesn't know what the uuid is (and neither does vfio).  qemu uses file
> handles to talk to both kvm and vfio.  qemu notifies both kvm and vfio
> about anything relevant events (guest address space changes etc) and
> connects file descriptors (eventfd -> irqfd).

I think the original link to using a VM UUID for the vGPU comes from
NVIDIA having a userspace component which might get launched from a udev
event as the vGPU is created or the set of vGPUs within that UUID is
started.  Using the VM UUID then gives them a way to associate that
userspace process with a VM instance.  Maybe it could register with
libvirt for some sort of service provided for the VM, I don't know.

> qemu needs a sysfs node as handle to the vfio device, something
> like /sys/devices/virtual/vgpu/<name>.  <name> can be a uuid if you want
> have it that way, but it could be pretty much anything.  The sysfs node
> will probably show up as-is in the libvirt xml when assign a vgpu to a
> vm.  So the name should be something stable (i.e. when using a uuid as
> name you should better not generate a new one on each boot).

Actually I don't think there's really a persistent naming issue, that's
probably where we diverge from the SR-IOV model.  SR-IOV cannot
dynamically add a new VF, it needs to reset the number of VFs to zero,
then re-allocate all of them up to the new desired count.  That has some
obvious implications.  I think with both vendors here, we can
dynamically allocate new vGPUs, so I would expect that libvirt would
create each vGPU instance as it's needed.  None would be created by
default without user interaction.

Personally I think using a UUID makes sense, but it needs to be
userspace policy whether that UUID has any implicit meaning like
matching the VM UUID.  Having an index within a UUID bothers me a bit,
but it doesn't seem like too much of a concession to enable the use case
that NVIDIA is trying to achieve.  Thanks,

Alex

  reply	other threads:[~2016-02-03 19:32 UTC|newest]

Thread overview: 85+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <56AFD231.3010404@nvidia.com>
2016-02-02  1:48 ` [RFC PATCH v1 1/1] vGPU core driver : to provide common interface for vGPU Kirti Wankhede
2016-02-02  1:48   ` [Qemu-devel] " Kirti Wankhede
2016-02-02  7:42   ` Tian, Kevin
2016-02-02  7:42     ` [Qemu-devel] " Tian, Kevin
2016-02-02  8:00     ` Gerd Hoffmann
2016-02-02  8:00       ` [Qemu-devel] " Gerd Hoffmann
2016-02-02  8:13       ` Neo Jia
2016-02-02  8:13         ` [Qemu-devel] " Neo Jia
2016-02-02  8:18         ` Tian, Kevin
2016-02-02  8:18           ` [Qemu-devel] " Tian, Kevin
2016-02-02  8:31           ` Neo Jia
2016-02-02  8:31             ` [Qemu-devel] " Neo Jia
2016-02-02 17:11             ` Alex Williamson
2016-02-02 17:11               ` [Qemu-devel] " Alex Williamson
2016-02-03  5:41               ` Tian, Kevin
2016-02-03  5:41                 ` [Qemu-devel] " Tian, Kevin
2016-02-03  8:28                 ` Gerd Hoffmann
2016-02-03  8:28                   ` [Qemu-devel] " Gerd Hoffmann
2016-02-03 19:32                   ` Alex Williamson [this message]
2016-02-03 19:32                     ` Alex Williamson
2016-02-16  6:49                     ` Tian, Kevin
2016-02-16  6:49                       ` [Qemu-devel] " Tian, Kevin
2016-02-16  7:13                       ` Neo Jia
2016-02-16  7:13                         ` [Qemu-devel] " Neo Jia
2016-02-16  7:27                         ` Tian, Kevin
2016-02-16  7:27                           ` [Qemu-devel] " Tian, Kevin
2016-02-16  7:36                           ` Neo Jia
2016-02-16  7:36                             ` [Qemu-devel] " Neo Jia
2016-02-16  7:40                             ` Tian, Kevin
2016-02-16  7:40                               ` [Qemu-devel] " Tian, Kevin
2016-02-16  7:53                               ` Neo Jia
2016-02-16  7:53                                 ` [Qemu-devel] " Neo Jia
2016-02-16  8:10                                 ` Tian, Kevin
2016-02-16  8:10                                   ` [Qemu-devel] " Tian, Kevin
2016-02-16  8:48                                   ` Neo Jia
2016-02-16  8:48                                     ` [Qemu-devel] " Neo Jia
2016-02-17  3:31                                     ` Tian, Kevin
2016-02-17  3:31                                       ` [Qemu-devel] " Tian, Kevin
2016-02-17  4:17                                       ` Neo Jia
2016-02-17  4:17                                         ` [Qemu-devel] " Neo Jia
2016-02-17  5:04                                         ` Tian, Kevin
2016-02-17  5:04                                           ` [Qemu-devel] " Tian, Kevin
2016-02-17  5:09                                           ` Eric Blake
2016-02-17  5:40                                             ` Neo Jia
2016-02-17  5:40                                               ` Neo Jia
2016-02-17  5:37                                           ` Neo Jia
2016-02-17  6:02                                             ` Tian, Kevin
2016-02-17  6:02                                               ` Tian, Kevin
2016-02-17  7:26                                               ` Neo Jia
2016-02-17  7:46                                                 ` Tian, Kevin
2016-02-17  7:46                                                   ` Tian, Kevin
2016-02-17  7:54                                                   ` Neo Jia
2016-02-17  8:57                                                     ` Tian, Kevin
2016-02-17  8:57                                                       ` Tian, Kevin
2016-02-17  9:34                                                       ` Neo Jia
2016-02-17  9:52                                                         ` Tian, Kevin
2016-02-17  9:52                                                           ` Tian, Kevin
2016-02-17 10:34                                                           ` Neo Jia
2016-02-17 10:34                                                             ` Neo Jia
2016-02-17 10:47                                                             ` Tian, Kevin
2016-02-17 10:47                                                               ` Tian, Kevin
2016-02-17 13:08                                                     ` Gerd Hoffmann
2016-02-17 13:08                                                       ` Gerd Hoffmann
2016-02-17 15:36                                                       ` Neo Jia
2016-02-17 15:36                                                         ` Neo Jia
2016-02-17  6:52                                         ` Gerd Hoffmann
2016-02-17  6:52                                           ` [Qemu-devel] " Gerd Hoffmann
2016-02-17  7:32                                           ` Neo Jia
2016-02-17  7:32                                             ` [Qemu-devel] " Neo Jia
2016-02-17  7:51                                             ` Tian, Kevin
2016-02-17  7:51                                               ` [Qemu-devel] " Tian, Kevin
2016-02-17  8:41                                               ` Neo Jia
2016-02-17  8:41                                                 ` [Qemu-devel] " Neo Jia
2016-02-17  9:01                                                 ` Tian, Kevin
2016-02-17  9:01                                                   ` [Qemu-devel] " Tian, Kevin
2016-02-02  8:29         ` Gerd Hoffmann
2016-02-02  8:29           ` [Qemu-devel] " Gerd Hoffmann
2016-02-02  9:25     ` Kirti Wankhede
2016-02-02  9:25       ` [Qemu-devel] " Kirti Wankhede
2016-02-03  5:56       ` Tian, Kevin
2016-02-03  5:56         ` [Qemu-devel] " Tian, Kevin
2016-02-03 13:21         ` Kirti Wankhede
2016-02-03 13:21           ` [Qemu-devel] " Kirti Wankhede
2016-02-04  3:08           ` Tian, Kevin
2016-02-04  3:08             ` [Qemu-devel] " Tian, Kevin

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=1454527963.18969.8.camel@redhat.com \
    --to=alex.williamson@redhat.com \
    --cc=cjia@nvidia.com \
    --cc=jike.song@intel.com \
    --cc=kevin.tian@intel.com \
    --cc=kraxel@redhat.com \
    --cc=kvm@vger.kernel.org \
    --cc=kwankhede@nvidia.com \
    --cc=pbonzini@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=shuai.ruan@intel.com \
    --cc=zhiyuan.lv@intel.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.