From: Alex Williamson <alex.williamson@redhat.com>
To: Jike Song <jike.song@intel.com>
Cc: "Tian, Kevin" <kevin.tian@intel.com>,
Gerd Hoffmann <kraxel@redhat.com>,
Paolo Bonzini <pbonzini@redhat.com>,
"Lv, Zhiyuan" <zhiyuan.lv@intel.com>,
"Ruan, Shuai" <shuai.ruan@intel.com>,
"kvm@vger.kernel.org" <kvm@vger.kernel.org>,
qemu-devel <qemu-devel@nongnu.org>,
"igvt-g@lists.01.org" <igvt-g@ml01.01.org>,
Neo Jia <cjia@nvidia.com>
Subject: Re: VFIO based vGPU(was Re: [Announcement] 2015-Q3 release of XenGT - a Mediated ...)
Date: Tue, 26 Jan 2016 09:12:38 -0700 [thread overview]
Message-ID: <1453824758.26652.41.camel@redhat.com> (raw)
In-Reply-To: <56A72313.9030009@intel.com>
On Tue, 2016-01-26 at 15:41 +0800, Jike Song wrote:
> On 01/26/2016 05:30 AM, Alex Williamson wrote:
> > [cc +Neo @Nvidia]
> >
> > Hi Jike,
> >
> > On Mon, 2016-01-25 at 19:34 +0800, Jike Song wrote:
> > > On 01/20/2016 05:05 PM, Tian, Kevin wrote:
> > > > I would expect we can spell out next level tasks toward above
> > > > direction, upon which Alex can easily judge whether there are
> > > > some common VFIO framework changes that he can help :-)
> > >
> > > Hi Alex,
> > >
> > > Here is a draft task list after a short discussion w/ Kevin,
> > > would you please have a look?
> > >
> > > Bus Driver
> > >
> > > { in i915/vgt/xxx.c }
> > >
> > > - define a subset of vfio_pci interfaces
> > > - selective pass-through (say aperture)
> > > - trap MMIO: interface w/ QEMU
> >
> > What's included in the subset? Certainly the bus reset ioctls really
> > don't apply, but you'll need to support the full device interface,
> > right? That includes the region info ioctl and access through the vfio
> > device file descriptor as well as the interrupt info and setup ioctls.
> >
>
> [All interfaces I thought are via ioctl:) For other stuff like file
> descriptor we'll definitely keep it.]
>
> The list of ioctl commands provided by vfio_pci:
>
> - VFIO_DEVICE_GET_PCI_HOT_RESET_INFO
> - VFIO_DEVICE_PCI_HOT_RESET
>
> As you said, above 2 don't apply. But for this:
>
> - VFIO_DEVICE_RESET
>
> In my opinion it should be kept, no matter what will be provided in
> the bus driver.
Yes, the DEVICE_INFO ioctl describes whether it's present, I would
encourage implementing it.
> - VFIO_PCI_ROM_REGION_INDEX
> - VFIO_PCI_VGA_REGION_INDEX
>
> I suppose above 2 don't apply neither? For a vgpu we don't provide a
> ROM BAR or VGA region.
Right, these aren't ioctls, just indexes into the REGION_INFO ioctl,
they're optional.
> - VFIO_DEVICE_GET_INFO
> - VFIO_DEVICE_GET_REGION_INFO
> - VFIO_DEVICE_GET_IRQ_INFO
> - VFIO_DEVICE_SET_IRQS
>
> Above 4 are needed of course.
>
> We will need to extend:
>
> - VFIO_DEVICE_GET_REGION_INFO
>
>
> a) adding a flag: DONT_MAP. For example, the MMIO of vgpu
> should be trapped instead of being mmap-ed.
There's already an MMAP flag, mmap is only allowed when this is set, so
there's no need for the anti-flag. I'm also working on support for
sparse mmap capabilities so that within a region some portions can
support mmap.
> b) adding other information. For example, for the OpRegion, QEMU need
> to do more than mmap a region, it has to:
>
> - allocate a region
> - copy contents from somewhere in host to that region
> - mmap it to guest
>
>
> I remember you already have a prototype for this?
Yes, I'm working on this currently, it will by a device specific region
and QEMU can either copy the contents to a new buffer in guest memory
or provided trapped access to the host opregion. I thought vgpus
weren't going to need opregions though, I figured it was more for GVT-d
support. Thanks,
Alex
WARNING: multiple messages have this Message-ID (diff)
From: Alex Williamson <alex.williamson@redhat.com>
To: Jike Song <jike.song@intel.com>
Cc: "Ruan, Shuai" <shuai.ruan@intel.com>,
"Tian, Kevin" <kevin.tian@intel.com>, Neo Jia <cjia@nvidia.com>,
"kvm@vger.kernel.org" <kvm@vger.kernel.org>,
"igvt-g@lists.01.org" <igvt-g@ml01.01.org>,
qemu-devel <qemu-devel@nongnu.org>,
Gerd Hoffmann <kraxel@redhat.com>,
Paolo Bonzini <pbonzini@redhat.com>,
"Lv, Zhiyuan" <zhiyuan.lv@intel.com>
Subject: Re: [Qemu-devel] VFIO based vGPU(was Re: [Announcement] 2015-Q3 release of XenGT - a Mediated ...)
Date: Tue, 26 Jan 2016 09:12:38 -0700 [thread overview]
Message-ID: <1453824758.26652.41.camel@redhat.com> (raw)
In-Reply-To: <56A72313.9030009@intel.com>
On Tue, 2016-01-26 at 15:41 +0800, Jike Song wrote:
> On 01/26/2016 05:30 AM, Alex Williamson wrote:
> > [cc +Neo @Nvidia]
> >
> > Hi Jike,
> >
> > On Mon, 2016-01-25 at 19:34 +0800, Jike Song wrote:
> > > On 01/20/2016 05:05 PM, Tian, Kevin wrote:
> > > > I would expect we can spell out next level tasks toward above
> > > > direction, upon which Alex can easily judge whether there are
> > > > some common VFIO framework changes that he can help :-)
> > >
> > > Hi Alex,
> > >
> > > Here is a draft task list after a short discussion w/ Kevin,
> > > would you please have a look?
> > >
> > > Bus Driver
> > >
> > > { in i915/vgt/xxx.c }
> > >
> > > - define a subset of vfio_pci interfaces
> > > - selective pass-through (say aperture)
> > > - trap MMIO: interface w/ QEMU
> >
> > What's included in the subset? Certainly the bus reset ioctls really
> > don't apply, but you'll need to support the full device interface,
> > right? That includes the region info ioctl and access through the vfio
> > device file descriptor as well as the interrupt info and setup ioctls.
> >
>
> [All interfaces I thought are via ioctl:) For other stuff like file
> descriptor we'll definitely keep it.]
>
> The list of ioctl commands provided by vfio_pci:
>
> - VFIO_DEVICE_GET_PCI_HOT_RESET_INFO
> - VFIO_DEVICE_PCI_HOT_RESET
>
> As you said, above 2 don't apply. But for this:
>
> - VFIO_DEVICE_RESET
>
> In my opinion it should be kept, no matter what will be provided in
> the bus driver.
Yes, the DEVICE_INFO ioctl describes whether it's present, I would
encourage implementing it.
> - VFIO_PCI_ROM_REGION_INDEX
> - VFIO_PCI_VGA_REGION_INDEX
>
> I suppose above 2 don't apply neither? For a vgpu we don't provide a
> ROM BAR or VGA region.
Right, these aren't ioctls, just indexes into the REGION_INFO ioctl,
they're optional.
> - VFIO_DEVICE_GET_INFO
> - VFIO_DEVICE_GET_REGION_INFO
> - VFIO_DEVICE_GET_IRQ_INFO
> - VFIO_DEVICE_SET_IRQS
>
> Above 4 are needed of course.
>
> We will need to extend:
>
> - VFIO_DEVICE_GET_REGION_INFO
>
>
> a) adding a flag: DONT_MAP. For example, the MMIO of vgpu
> should be trapped instead of being mmap-ed.
There's already an MMAP flag, mmap is only allowed when this is set, so
there's no need for the anti-flag. I'm also working on support for
sparse mmap capabilities so that within a region some portions can
support mmap.
> b) adding other information. For example, for the OpRegion, QEMU need
> to do more than mmap a region, it has to:
>
> - allocate a region
> - copy contents from somewhere in host to that region
> - mmap it to guest
>
>
> I remember you already have a prototype for this?
Yes, I'm working on this currently, it will by a device specific region
and QEMU can either copy the contents to a new buffer in guest memory
or provided trapped access to the host opregion. I thought vgpus
weren't going to need opregions though, I figured it was more for GVT-d
support. Thanks,
Alex
next prev parent reply other threads:[~2016-01-26 16:12 UTC|newest]
Thread overview: 118+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-01-18 2:39 VFIO based vGPU(was Re: [Announcement] 2015-Q3 release of XenGT - a Mediated ...) Jike Song
2016-01-18 2:39 ` [Qemu-devel] " Jike Song
2016-01-18 4:47 ` Alex Williamson
2016-01-18 4:47 ` [Qemu-devel] " Alex Williamson
2016-01-18 8:56 ` Jike Song
2016-01-18 8:56 ` [Qemu-devel] " Jike Song
2016-01-18 19:05 ` Alex Williamson
2016-01-18 19:05 ` [Qemu-devel] " Alex Williamson
2016-01-20 8:59 ` Jike Song
2016-01-20 8:59 ` [Qemu-devel] " Jike Song
2016-01-20 9:05 ` Tian, Kevin
2016-01-20 9:05 ` [Qemu-devel] " Tian, Kevin
2016-01-25 11:34 ` Jike Song
2016-01-25 11:34 ` [Qemu-devel] " Jike Song
2016-01-25 21:30 ` Alex Williamson
2016-01-25 21:30 ` [Qemu-devel] " Alex Williamson
2016-01-25 21:45 ` Tian, Kevin
2016-01-25 21:45 ` [Qemu-devel] " Tian, Kevin
2016-01-25 21:48 ` Tian, Kevin
2016-01-25 21:48 ` [Qemu-devel] " Tian, Kevin
2016-01-26 9:48 ` Neo Jia
2016-01-26 9:48 ` [Qemu-devel] " Neo Jia
2016-01-26 10:20 ` Neo Jia
2016-01-26 10:20 ` [Qemu-devel] " Neo Jia
2016-01-26 19:24 ` Tian, Kevin
2016-01-26 19:24 ` [Qemu-devel] " Tian, Kevin
2016-01-26 19:29 ` Neo Jia
2016-01-26 19:29 ` [Qemu-devel] " Neo Jia
2016-01-26 20:06 ` Alex Williamson
2016-01-26 20:06 ` [Qemu-devel] " Alex Williamson
2016-01-26 21:38 ` Tian, Kevin
2016-01-26 21:38 ` [Qemu-devel] " Tian, Kevin
2016-01-26 22:28 ` Neo Jia
2016-01-26 22:28 ` [Qemu-devel] " Neo Jia
2016-01-26 23:30 ` Alex Williamson
2016-01-26 23:30 ` [Qemu-devel] " Alex Williamson
2016-01-27 9:14 ` Neo Jia
2016-01-27 9:14 ` [Qemu-devel] " Neo Jia
2016-01-27 16:10 ` Alex Williamson
2016-01-27 16:10 ` [Qemu-devel] " Alex Williamson
2016-01-27 21:48 ` Neo Jia
2016-01-27 21:48 ` [Qemu-devel] " Neo Jia
2016-01-27 8:06 ` Kirti Wankhede
2016-01-27 8:06 ` [Qemu-devel] " Kirti Wankhede
2016-01-27 16:00 ` Alex Williamson
2016-01-27 16:00 ` [Qemu-devel] " Alex Williamson
2016-01-27 20:55 ` Kirti Wankhede
2016-01-27 20:55 ` [Qemu-devel] " Kirti Wankhede
2016-01-27 21:58 ` Alex Williamson
2016-01-27 21:58 ` [Qemu-devel] " Alex Williamson
2016-01-28 3:01 ` Kirti Wankhede
2016-01-28 3:01 ` [Qemu-devel] " Kirti Wankhede
2016-01-26 7:41 ` Jike Song
2016-01-26 7:41 ` [Qemu-devel] " Jike Song
2016-01-26 14:05 ` Yang Zhang
2016-01-26 14:05 ` [Qemu-devel] " Yang Zhang
2016-01-26 16:37 ` Alex Williamson
2016-01-26 16:37 ` [Qemu-devel] " Alex Williamson
2016-01-26 21:21 ` Tian, Kevin
2016-01-26 21:21 ` [Qemu-devel] " Tian, Kevin
2016-01-26 21:30 ` Neo Jia
2016-01-26 21:30 ` [Qemu-devel] " Neo Jia
2016-01-26 21:43 ` Tian, Kevin
2016-01-26 21:43 ` [Qemu-devel] " Tian, Kevin
2016-01-26 21:43 ` Alex Williamson
2016-01-26 21:43 ` [Qemu-devel] " Alex Williamson
2016-01-26 21:50 ` Tian, Kevin
2016-01-26 21:50 ` [Qemu-devel] " Tian, Kevin
2016-01-26 22:07 ` Alex Williamson
2016-01-26 22:07 ` [Qemu-devel] " Alex Williamson
2016-01-26 22:15 ` Tian, Kevin
2016-01-26 22:15 ` [Qemu-devel] " Tian, Kevin
2016-01-26 22:27 ` Alex Williamson
2016-01-26 22:27 ` [Qemu-devel] " Alex Williamson
2016-01-26 22:39 ` Tian, Kevin
2016-01-26 22:39 ` [Qemu-devel] " Tian, Kevin
2016-01-26 22:56 ` Alex Williamson
2016-01-26 22:56 ` [Qemu-devel] " Alex Williamson
2016-01-27 1:47 ` Jike Song
2016-01-27 1:47 ` [Qemu-devel] " Jike Song
2016-01-27 3:07 ` Alex Williamson
2016-01-27 3:07 ` [Qemu-devel] " Alex Williamson
2016-01-27 5:43 ` Jike Song
2016-01-27 5:43 ` [Qemu-devel] " Jike Song
2016-01-27 16:19 ` Alex Williamson
2016-01-27 16:19 ` [Qemu-devel] " Alex Williamson
2016-01-28 6:00 ` Jike Song
2016-01-28 6:00 ` [Qemu-devel] " Jike Song
2016-01-28 15:23 ` Alex Williamson
2016-01-28 15:23 ` [Qemu-devel] " Alex Williamson
2016-01-29 7:20 ` Jike Song
2016-01-29 7:20 ` [Qemu-devel] " Jike Song
2016-01-29 8:49 ` [iGVT-g] " Jike Song
2016-01-29 8:49 ` [Qemu-devel] " Jike Song
2016-01-29 18:50 ` Alex Williamson
2016-01-29 18:50 ` [Qemu-devel] " Alex Williamson
2016-02-01 13:10 ` Gerd Hoffmann
2016-02-01 13:10 ` [Qemu-devel] " Gerd Hoffmann
2016-02-01 21:44 ` Alex Williamson
2016-02-01 21:44 ` [Qemu-devel] " Alex Williamson
2016-02-02 7:28 ` Gerd Hoffmann
2016-02-02 7:28 ` [Qemu-devel] " Gerd Hoffmann
2016-02-02 7:35 ` Zhiyuan Lv
2016-02-02 7:35 ` [Qemu-devel] " Zhiyuan Lv
2016-01-27 1:52 ` Yang Zhang
2016-01-27 1:52 ` [Qemu-devel] " Yang Zhang
2016-01-27 3:37 ` Alex Williamson
2016-01-27 3:37 ` [Qemu-devel] " Alex Williamson
2016-01-27 0:06 ` Jike Song
2016-01-27 0:06 ` [Qemu-devel] " Jike Song
2016-01-27 1:34 ` Yang Zhang
2016-01-27 1:34 ` [Qemu-devel] " Yang Zhang
2016-01-27 1:51 ` Jike Song
2016-01-27 1:51 ` [Qemu-devel] " Jike Song
2016-01-26 16:12 ` Alex Williamson [this message]
2016-01-26 16:12 ` Alex Williamson
2016-01-26 21:57 ` Tian, Kevin
2016-01-26 21:57 ` [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=1453824758.26652.41.camel@redhat.com \
--to=alex.williamson@redhat.com \
--cc=cjia@nvidia.com \
--cc=igvt-g@ml01.01.org \
--cc=jike.song@intel.com \
--cc=kevin.tian@intel.com \
--cc=kraxel@redhat.com \
--cc=kvm@vger.kernel.org \
--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.