RE: [PATCH v18 0/6] drm/i915/gvt: Dma-buf support for GVT-g

2017-11-22 Thread Zhang, Tina


> -Original Message-
> From: intel-gvt-dev [mailto:intel-gvt-dev-boun...@lists.freedesktop.org] On
> Behalf Of Zhenyu Wang
> Sent: Thursday, November 23, 2017 2:13 PM
> To: Gerd Hoffmann <kra...@redhat.com>
> Cc: Tian, Kevin <kevin.t...@intel.com>; alex.william...@redhat.com; intel-
> g...@lists.freedesktop.org; joonas.lahti...@linux.intel.com; Wang, Zhi A
> <zhi.a.w...@intel.com>; linux-kernel@vger.kernel.org;
> zhen...@linux.intel.com; Zhang, Tina <tina.zh...@intel.com>;
> kwankh...@nvidia.com; Lv, Zhiyuan <zhiyuan...@intel.com>; dan...@ffwll.ch;
> ch...@chris-wilson.co.uk; intel-gvt-...@lists.freedesktop.org; Yuan, Hang
> <hang.y...@intel.com>
> Subject: Re: [PATCH v18 0/6] drm/i915/gvt: Dma-buf support for GVT-g
> 
> On 2017.11.15 11:49:00 +0100, Gerd Hoffmann wrote:
> > On Wed, Nov 15, 2017 at 05:11:49PM +0800, Tina Zhang wrote:
> > > v17->v18:
> > > 1) unmap vgpu's opregion when destroying vgpu.
> > > 2) update comments for VFIO_DEVICE_GET_GFX_DMABUF. (Alex)
> >
> > > This patch set adds the dma-buf support for intel GVT-g.
> > >
> > > dma-buf is an uniform mechanism to share DMA buffers across
> > > different devices and subsystems. dma-buf for intel GVT-g is mainly
> > > used to share the vgpu's framebuffer to userspace to leverage
> > > userspace graphics stacks to render the framebuffer to the display 
> > > monitor.
> > >
> > > The main idea is that we create a gem object and set vgpu's
> > > framebuffer as its backing storage. Then, export a dma-buf associated with
> this gem object.
> > > With the fd of this dma-buf, userspace can directly handle this buffer.
> > >
> > > This patch set can be tried with the following example:
> > >   git://git.kraxel.org/qemu  branch: work/intel-vgpu
> > >
> > > A topic branch with the latest patch set is:
> > > https://github.com/intel/gvt-linux.git   branch: topic/dmabuf
> >
> > Tested-by: Gerd Hoffmann <kra...@redhat.com>
> >
> 
> After debugging with Tina on one left race that fixed by
> https://lists.freedesktop.org/archives/intel-gvt-dev/2017-
> November/002505.html
The next version of this patch set will include this patch.
Thanks.

BR,
Tina
> 
> I still need below qemu fix for proper cursor handling, otherwise qemu just
> crashed when I click in my terminal program which hides cursor then.
> 
> diff --git a/hw/vfio/display.c b/hw/vfio/display.c index
> e500ec2cb1..d9a044b080 100644
> --- a/hw/vfio/display.c
> +++ b/hw/vfio/display.c
> @@ -169,8 +169,9 @@ static void vfio_display_dmabuf_update(void *opaque)
>  cursor = vfio_display_get_dmabuf(vdev, DRM_PLANE_TYPE_CURSOR);
>  if (vdev->cursor != cursor) {
>  vdev->cursor = cursor;
> -dpy_gl_cursor_dmabuf(vdev->display_con,
> - >buf);
> +if (cursor)
> +dpy_gl_cursor_dmabuf(vdev->display_con,
> + >buf);
>  free_bufs = true;
>  }
>  if (cursor != NULL) {
> 
> And with these it seems pretty fine now that I'll queue them up for -next 
> pull.
> 
> thanks
> 
> --
> Open Source Technology Center, Intel ltd.
> 
> $gpg --keyserver wwwkeys.pgp.net --recv-keys 4D781827


RE: [PATCH v18 0/6] drm/i915/gvt: Dma-buf support for GVT-g

2017-11-22 Thread Zhang, Tina


> -Original Message-
> From: intel-gvt-dev [mailto:intel-gvt-dev-boun...@lists.freedesktop.org] On
> Behalf Of Zhenyu Wang
> Sent: Thursday, November 23, 2017 2:13 PM
> To: Gerd Hoffmann 
> Cc: Tian, Kevin ; alex.william...@redhat.com; intel-
> g...@lists.freedesktop.org; joonas.lahti...@linux.intel.com; Wang, Zhi A
> ; linux-kernel@vger.kernel.org;
> zhen...@linux.intel.com; Zhang, Tina ;
> kwankh...@nvidia.com; Lv, Zhiyuan ; dan...@ffwll.ch;
> ch...@chris-wilson.co.uk; intel-gvt-...@lists.freedesktop.org; Yuan, Hang
> 
> Subject: Re: [PATCH v18 0/6] drm/i915/gvt: Dma-buf support for GVT-g
> 
> On 2017.11.15 11:49:00 +0100, Gerd Hoffmann wrote:
> > On Wed, Nov 15, 2017 at 05:11:49PM +0800, Tina Zhang wrote:
> > > v17->v18:
> > > 1) unmap vgpu's opregion when destroying vgpu.
> > > 2) update comments for VFIO_DEVICE_GET_GFX_DMABUF. (Alex)
> >
> > > This patch set adds the dma-buf support for intel GVT-g.
> > >
> > > dma-buf is an uniform mechanism to share DMA buffers across
> > > different devices and subsystems. dma-buf for intel GVT-g is mainly
> > > used to share the vgpu's framebuffer to userspace to leverage
> > > userspace graphics stacks to render the framebuffer to the display 
> > > monitor.
> > >
> > > The main idea is that we create a gem object and set vgpu's
> > > framebuffer as its backing storage. Then, export a dma-buf associated with
> this gem object.
> > > With the fd of this dma-buf, userspace can directly handle this buffer.
> > >
> > > This patch set can be tried with the following example:
> > >   git://git.kraxel.org/qemu  branch: work/intel-vgpu
> > >
> > > A topic branch with the latest patch set is:
> > > https://github.com/intel/gvt-linux.git   branch: topic/dmabuf
> >
> > Tested-by: Gerd Hoffmann 
> >
> 
> After debugging with Tina on one left race that fixed by
> https://lists.freedesktop.org/archives/intel-gvt-dev/2017-
> November/002505.html
The next version of this patch set will include this patch.
Thanks.

BR,
Tina
> 
> I still need below qemu fix for proper cursor handling, otherwise qemu just
> crashed when I click in my terminal program which hides cursor then.
> 
> diff --git a/hw/vfio/display.c b/hw/vfio/display.c index
> e500ec2cb1..d9a044b080 100644
> --- a/hw/vfio/display.c
> +++ b/hw/vfio/display.c
> @@ -169,8 +169,9 @@ static void vfio_display_dmabuf_update(void *opaque)
>  cursor = vfio_display_get_dmabuf(vdev, DRM_PLANE_TYPE_CURSOR);
>  if (vdev->cursor != cursor) {
>  vdev->cursor = cursor;
> -dpy_gl_cursor_dmabuf(vdev->display_con,
> - >buf);
> +if (cursor)
> +dpy_gl_cursor_dmabuf(vdev->display_con,
> + >buf);
>  free_bufs = true;
>  }
>  if (cursor != NULL) {
> 
> And with these it seems pretty fine now that I'll queue them up for -next 
> pull.
> 
> thanks
> 
> --
> Open Source Technology Center, Intel ltd.
> 
> $gpg --keyserver wwwkeys.pgp.net --recv-keys 4D781827


Re: [PATCH v18 0/6] drm/i915/gvt: Dma-buf support for GVT-g

2017-11-22 Thread Zhenyu Wang
On 2017.11.15 11:49:00 +0100, Gerd Hoffmann wrote:
> On Wed, Nov 15, 2017 at 05:11:49PM +0800, Tina Zhang wrote:
> > v17->v18:
> > 1) unmap vgpu's opregion when destroying vgpu.
> > 2) update comments for VFIO_DEVICE_GET_GFX_DMABUF. (Alex)
> 
> > This patch set adds the dma-buf support for intel GVT-g.
> > 
> > dma-buf is an uniform mechanism to share DMA buffers across different
> > devices and subsystems. dma-buf for intel GVT-g is mainly used to share
> > the vgpu's framebuffer to userspace to leverage userspace graphics stacks
> > to render the framebuffer to the display monitor.
> > 
> > The main idea is that we create a gem object and set vgpu's framebuffer as
> > its backing storage. Then, export a dma-buf associated with this gem object.
> > With the fd of this dma-buf, userspace can directly handle this buffer.
> > 
> > This patch set can be tried with the following example:
> > git://git.kraxel.org/qemu  branch: work/intel-vgpu
> > 
> > A topic branch with the latest patch set is:
> > https://github.com/intel/gvt-linux.git   branch: topic/dmabuf
> 
> Tested-by: Gerd Hoffmann 
> 

After debugging with Tina on one left race that fixed by
https://lists.freedesktop.org/archives/intel-gvt-dev/2017-November/002505.html

I still need below qemu fix for proper cursor handling, otherwise qemu
just crashed when I click in my terminal program which hides cursor then.

diff --git a/hw/vfio/display.c b/hw/vfio/display.c
index e500ec2cb1..d9a044b080 100644
--- a/hw/vfio/display.c
+++ b/hw/vfio/display.c
@@ -169,8 +169,9 @@ static void vfio_display_dmabuf_update(void *opaque)
 cursor = vfio_display_get_dmabuf(vdev, DRM_PLANE_TYPE_CURSOR);
 if (vdev->cursor != cursor) {
 vdev->cursor = cursor;
-dpy_gl_cursor_dmabuf(vdev->display_con,
- >buf);
+if (cursor)
+dpy_gl_cursor_dmabuf(vdev->display_con,
+ >buf);
 free_bufs = true;
 }
 if (cursor != NULL) {

And with these it seems pretty fine now that I'll queue them up for -next pull.

thanks

-- 
Open Source Technology Center, Intel ltd.

$gpg --keyserver wwwkeys.pgp.net --recv-keys 4D781827


signature.asc
Description: PGP signature


Re: [PATCH v18 0/6] drm/i915/gvt: Dma-buf support for GVT-g

2017-11-22 Thread Zhenyu Wang
On 2017.11.15 11:49:00 +0100, Gerd Hoffmann wrote:
> On Wed, Nov 15, 2017 at 05:11:49PM +0800, Tina Zhang wrote:
> > v17->v18:
> > 1) unmap vgpu's opregion when destroying vgpu.
> > 2) update comments for VFIO_DEVICE_GET_GFX_DMABUF. (Alex)
> 
> > This patch set adds the dma-buf support for intel GVT-g.
> > 
> > dma-buf is an uniform mechanism to share DMA buffers across different
> > devices and subsystems. dma-buf for intel GVT-g is mainly used to share
> > the vgpu's framebuffer to userspace to leverage userspace graphics stacks
> > to render the framebuffer to the display monitor.
> > 
> > The main idea is that we create a gem object and set vgpu's framebuffer as
> > its backing storage. Then, export a dma-buf associated with this gem object.
> > With the fd of this dma-buf, userspace can directly handle this buffer.
> > 
> > This patch set can be tried with the following example:
> > git://git.kraxel.org/qemu  branch: work/intel-vgpu
> > 
> > A topic branch with the latest patch set is:
> > https://github.com/intel/gvt-linux.git   branch: topic/dmabuf
> 
> Tested-by: Gerd Hoffmann 
> 

After debugging with Tina on one left race that fixed by
https://lists.freedesktop.org/archives/intel-gvt-dev/2017-November/002505.html

I still need below qemu fix for proper cursor handling, otherwise qemu
just crashed when I click in my terminal program which hides cursor then.

diff --git a/hw/vfio/display.c b/hw/vfio/display.c
index e500ec2cb1..d9a044b080 100644
--- a/hw/vfio/display.c
+++ b/hw/vfio/display.c
@@ -169,8 +169,9 @@ static void vfio_display_dmabuf_update(void *opaque)
 cursor = vfio_display_get_dmabuf(vdev, DRM_PLANE_TYPE_CURSOR);
 if (vdev->cursor != cursor) {
 vdev->cursor = cursor;
-dpy_gl_cursor_dmabuf(vdev->display_con,
- >buf);
+if (cursor)
+dpy_gl_cursor_dmabuf(vdev->display_con,
+ >buf);
 free_bufs = true;
 }
 if (cursor != NULL) {

And with these it seems pretty fine now that I'll queue them up for -next pull.

thanks

-- 
Open Source Technology Center, Intel ltd.

$gpg --keyserver wwwkeys.pgp.net --recv-keys 4D781827


signature.asc
Description: PGP signature


Re: [PATCH v18 0/6] drm/i915/gvt: Dma-buf support for GVT-g

2017-11-16 Thread Gerd Hoffmann
> > > This patch set can be tried with the following example:
> > >   git://git.kraxel.org/qemu  branch: work/intel-vgpu
> > > 
> > 
> > Tested-by: Gerd Hoffmann 
> 
> Hi Gerd,
> 
> Can you share the xml snippets required for the VM to make this work?
> Last I tried I couldn't get the display/video/hostdev configuration to
> get any enhanced behavior through the dmabuf.  Thanks,

qemu built from the branch listed above.

Testing with a shell script right now, see below.  First argument is the
mode.  "vgpu-gtk" works fine.  "vgpu-spice-remote" works too, even
remotely, but it's not very efficient (grabs display data via opengl
ReadPixels, then sends it over classic spice protocol).

For the latter I have a libvirt snippet too, which has to jump through a
few loops due to libvirt not having support for vgou display yet, with
the most annonying issue being that libvirt insists adding a emulated
vga to the guest if you configure spice.

HTH,
  Gerd

== cut here 
#!/bin/sh

# args
mode="${1-vga}"; shift

# config
vers="26"
live="$(ls -t $HOME/iso/Fedora*Live*${vers}*.iso | head -1)"
name="$(basename $live)"
qemu="/usr/local/bin/qemu-system-x86_64"
uuid="aca92d96-6654-43d9-8f45-544c19e89f20"
path="/sys/bus/mdev/devices/${uuid}"

###
# tweaks

case "$mode" in
vga)
args="-vga std"
;;
virtio)
args="-vga virtio"
;;
virtio-gl)
args=""
args="$args -vga virtio"
args="$args -display gtk,gl=on"
;;
vgpu-gtk)
args=""
args="$args -vga none"
args="$args -display gtk,gl=on"
args="$args -device vfio-pci,sysfsdev=${path},addr=0x5,x-display=on"
qemu="sudo $qemu"
;;
vgpu-sdl)
# intel sdl 1.2 patches ...
args=""
args="$args -vga none"
args="$args -display sdl"
args="$args -device vfio-pci,sysfsdev=${path},addr=0x5"
qemu="sudo $qemu"
;;
vgpu-spice-local)
# using spice, passing around dma-bufs
# FIXME: launch remote-viewer on unix socket
args=""
args="$args -vga none"
args="$args -spice disable-ticketing,gl=on,unix,addr=/tmp/spice-vgpu"
args="$args -device vfio-pci,sysfsdev=${path},addr=0x5,x-display=on"
qemu="sudo $qemu"
;;
vgpu-spice-remote)
# using spice, readpixels dmabuf,
# send traditional spice display updates
(sleep 1; remote-viewer spice://localhost:5909) &
args=""
args="$args -vga none"
args="$args -display egl-headless"
args="$args -spice disable-ticketing,gl=off,port=5909"
args="$args -device vfio-pci,sysfsdev=${path},addr=0x5,x-display=on"
qemu="sudo $qemu"
;;
*)
echo "unknown mode: $mode"
echo "valid modes:"
echo "vga virtio virtio-gl vgpu-gtk vgpu-sdl"
echo "vgpu-spice-local vgpu-spice-remote"
exit 1
;;
esac

###
# go!

set -ex
exec $qemu -enable-kvm -name "$name"\
-boot menu=on -m 2G -usb\
-drive if=none,id=live,media=cdrom,file="$live" \
-netdev user,id=unet \
\
-device virtio-net-pci,addr=0x08,netdev=unet\
-device virtio-scsi-pci,addr=0x09   \
-device scsi-cd,drive=live,scsi-id=4,bootindex=1 \
-device usb-tablet  \
\
$args "$@"
== cut here 

  liveiso-vgpu-remote
  a2fc1e5e-8370-44b2-a31f-140f441e0355
  1048576
  1048576
  2
  
hvm


  
  



  
  
Broadwell
  
  



  
  destroy
  restart
  restart
  
/usr/local/bin/qemu-system-x86_64

  
  
  
  
  
  



  


  


  


  
  
  
  
  


  


  


  
  


  




  


  


  
  


  

  
  


  

  
  






  




Re: [PATCH v18 0/6] drm/i915/gvt: Dma-buf support for GVT-g

2017-11-16 Thread Gerd Hoffmann
> > > This patch set can be tried with the following example:
> > >   git://git.kraxel.org/qemu  branch: work/intel-vgpu
> > > 
> > 
> > Tested-by: Gerd Hoffmann 
> 
> Hi Gerd,
> 
> Can you share the xml snippets required for the VM to make this work?
> Last I tried I couldn't get the display/video/hostdev configuration to
> get any enhanced behavior through the dmabuf.  Thanks,

qemu built from the branch listed above.

Testing with a shell script right now, see below.  First argument is the
mode.  "vgpu-gtk" works fine.  "vgpu-spice-remote" works too, even
remotely, but it's not very efficient (grabs display data via opengl
ReadPixels, then sends it over classic spice protocol).

For the latter I have a libvirt snippet too, which has to jump through a
few loops due to libvirt not having support for vgou display yet, with
the most annonying issue being that libvirt insists adding a emulated
vga to the guest if you configure spice.

HTH,
  Gerd

== cut here 
#!/bin/sh

# args
mode="${1-vga}"; shift

# config
vers="26"
live="$(ls -t $HOME/iso/Fedora*Live*${vers}*.iso | head -1)"
name="$(basename $live)"
qemu="/usr/local/bin/qemu-system-x86_64"
uuid="aca92d96-6654-43d9-8f45-544c19e89f20"
path="/sys/bus/mdev/devices/${uuid}"

###
# tweaks

case "$mode" in
vga)
args="-vga std"
;;
virtio)
args="-vga virtio"
;;
virtio-gl)
args=""
args="$args -vga virtio"
args="$args -display gtk,gl=on"
;;
vgpu-gtk)
args=""
args="$args -vga none"
args="$args -display gtk,gl=on"
args="$args -device vfio-pci,sysfsdev=${path},addr=0x5,x-display=on"
qemu="sudo $qemu"
;;
vgpu-sdl)
# intel sdl 1.2 patches ...
args=""
args="$args -vga none"
args="$args -display sdl"
args="$args -device vfio-pci,sysfsdev=${path},addr=0x5"
qemu="sudo $qemu"
;;
vgpu-spice-local)
# using spice, passing around dma-bufs
# FIXME: launch remote-viewer on unix socket
args=""
args="$args -vga none"
args="$args -spice disable-ticketing,gl=on,unix,addr=/tmp/spice-vgpu"
args="$args -device vfio-pci,sysfsdev=${path},addr=0x5,x-display=on"
qemu="sudo $qemu"
;;
vgpu-spice-remote)
# using spice, readpixels dmabuf,
# send traditional spice display updates
(sleep 1; remote-viewer spice://localhost:5909) &
args=""
args="$args -vga none"
args="$args -display egl-headless"
args="$args -spice disable-ticketing,gl=off,port=5909"
args="$args -device vfio-pci,sysfsdev=${path},addr=0x5,x-display=on"
qemu="sudo $qemu"
;;
*)
echo "unknown mode: $mode"
echo "valid modes:"
echo "vga virtio virtio-gl vgpu-gtk vgpu-sdl"
echo "vgpu-spice-local vgpu-spice-remote"
exit 1
;;
esac

###
# go!

set -ex
exec $qemu -enable-kvm -name "$name"\
-boot menu=on -m 2G -usb\
-drive if=none,id=live,media=cdrom,file="$live" \
-netdev user,id=unet \
\
-device virtio-net-pci,addr=0x08,netdev=unet\
-device virtio-scsi-pci,addr=0x09   \
-device scsi-cd,drive=live,scsi-id=4,bootindex=1 \
-device usb-tablet  \
\
$args "$@"
== cut here 

  liveiso-vgpu-remote
  a2fc1e5e-8370-44b2-a31f-140f441e0355
  1048576
  1048576
  2
  
hvm


  
  



  
  
Broadwell
  
  



  
  destroy
  restart
  restart
  
/usr/local/bin/qemu-system-x86_64

  
  
  
  
  
  



  


  


  


  
  
  
  
  


  


  


  
  


  




  


  


  
  


  

  
  


  

  
  






  




Re: [PATCH v18 0/6] drm/i915/gvt: Dma-buf support for GVT-g

2017-11-15 Thread Alex Williamson
On Wed, 15 Nov 2017 11:49:00 +0100
Gerd Hoffmann  wrote:

> On Wed, Nov 15, 2017 at 05:11:49PM +0800, Tina Zhang wrote:
> > v17->v18:
> > 1) unmap vgpu's opregion when destroying vgpu.
> > 2) update comments for VFIO_DEVICE_GET_GFX_DMABUF. (Alex)  
> 
> > This patch set adds the dma-buf support for intel GVT-g.
> > 
> > dma-buf is an uniform mechanism to share DMA buffers across different
> > devices and subsystems. dma-buf for intel GVT-g is mainly used to share
> > the vgpu's framebuffer to userspace to leverage userspace graphics stacks
> > to render the framebuffer to the display monitor.
> > 
> > The main idea is that we create a gem object and set vgpu's framebuffer as
> > its backing storage. Then, export a dma-buf associated with this gem object.
> > With the fd of this dma-buf, userspace can directly handle this buffer.
> > 
> > This patch set can be tried with the following example:
> > git://git.kraxel.org/qemu  branch: work/intel-vgpu
> > 
> > A topic branch with the latest patch set is:
> > https://github.com/intel/gvt-linux.git   branch: topic/dmabuf  
> 
> Tested-by: Gerd Hoffmann 

Hi Gerd,

Can you share the xml snippets required for the VM to make this work?
Last I tried I couldn't get the display/video/hostdev configuration to
get any enhanced behavior through the dmabuf.  Thanks,

Alex


Re: [PATCH v18 0/6] drm/i915/gvt: Dma-buf support for GVT-g

2017-11-15 Thread Alex Williamson
On Wed, 15 Nov 2017 11:49:00 +0100
Gerd Hoffmann  wrote:

> On Wed, Nov 15, 2017 at 05:11:49PM +0800, Tina Zhang wrote:
> > v17->v18:
> > 1) unmap vgpu's opregion when destroying vgpu.
> > 2) update comments for VFIO_DEVICE_GET_GFX_DMABUF. (Alex)  
> 
> > This patch set adds the dma-buf support for intel GVT-g.
> > 
> > dma-buf is an uniform mechanism to share DMA buffers across different
> > devices and subsystems. dma-buf for intel GVT-g is mainly used to share
> > the vgpu's framebuffer to userspace to leverage userspace graphics stacks
> > to render the framebuffer to the display monitor.
> > 
> > The main idea is that we create a gem object and set vgpu's framebuffer as
> > its backing storage. Then, export a dma-buf associated with this gem object.
> > With the fd of this dma-buf, userspace can directly handle this buffer.
> > 
> > This patch set can be tried with the following example:
> > git://git.kraxel.org/qemu  branch: work/intel-vgpu
> > 
> > A topic branch with the latest patch set is:
> > https://github.com/intel/gvt-linux.git   branch: topic/dmabuf  
> 
> Tested-by: Gerd Hoffmann 

Hi Gerd,

Can you share the xml snippets required for the VM to make this work?
Last I tried I couldn't get the display/video/hostdev configuration to
get any enhanced behavior through the dmabuf.  Thanks,

Alex


Re: [PATCH v18 0/6] drm/i915/gvt: Dma-buf support for GVT-g

2017-11-15 Thread Gerd Hoffmann
On Wed, Nov 15, 2017 at 05:11:49PM +0800, Tina Zhang wrote:
> v17->v18:
> 1) unmap vgpu's opregion when destroying vgpu.
> 2) update comments for VFIO_DEVICE_GET_GFX_DMABUF. (Alex)

> This patch set adds the dma-buf support for intel GVT-g.
> 
> dma-buf is an uniform mechanism to share DMA buffers across different
> devices and subsystems. dma-buf for intel GVT-g is mainly used to share
> the vgpu's framebuffer to userspace to leverage userspace graphics stacks
> to render the framebuffer to the display monitor.
> 
> The main idea is that we create a gem object and set vgpu's framebuffer as
> its backing storage. Then, export a dma-buf associated with this gem object.
> With the fd of this dma-buf, userspace can directly handle this buffer.
> 
> This patch set can be tried with the following example:
>   git://git.kraxel.org/qemu  branch: work/intel-vgpu
> 
> A topic branch with the latest patch set is:
> https://github.com/intel/gvt-linux.git   branch: topic/dmabuf

Tested-by: Gerd Hoffmann 



Re: [PATCH v18 0/6] drm/i915/gvt: Dma-buf support for GVT-g

2017-11-15 Thread Gerd Hoffmann
On Wed, Nov 15, 2017 at 05:11:49PM +0800, Tina Zhang wrote:
> v17->v18:
> 1) unmap vgpu's opregion when destroying vgpu.
> 2) update comments for VFIO_DEVICE_GET_GFX_DMABUF. (Alex)

> This patch set adds the dma-buf support for intel GVT-g.
> 
> dma-buf is an uniform mechanism to share DMA buffers across different
> devices and subsystems. dma-buf for intel GVT-g is mainly used to share
> the vgpu's framebuffer to userspace to leverage userspace graphics stacks
> to render the framebuffer to the display monitor.
> 
> The main idea is that we create a gem object and set vgpu's framebuffer as
> its backing storage. Then, export a dma-buf associated with this gem object.
> With the fd of this dma-buf, userspace can directly handle this buffer.
> 
> This patch set can be tried with the following example:
>   git://git.kraxel.org/qemu  branch: work/intel-vgpu
> 
> A topic branch with the latest patch set is:
> https://github.com/intel/gvt-linux.git   branch: topic/dmabuf

Tested-by: Gerd Hoffmann 



[PATCH v18 0/6] drm/i915/gvt: Dma-buf support for GVT-g

2017-11-15 Thread Tina Zhang
v17->v18:
1) unmap vgpu's opregion when destroying vgpu.
2) update comments for VFIO_DEVICE_GET_GFX_DMABUF. (Alex)

v16->v17:
1) modify VFIO_DEVICE_GET_GFX_DMABUF interface. (Alex)
2) add comments for x_hot/y_hot. (Gerd)

v15->v16:
1) add cursor hotspot fields in struct vfio_device_gfx_plane_info. (Gerd)
2) clean up some typos and add comments for VFIO_DEVICE_QUERY_GFX_PLANE. (Alex)
3) seperate the GEM Proxy part to another patch-set. (Joonas and Chris)
   
https://lists.freedesktop.org/archives/intel-gvt-dev/2017-November/002377.html
4) please note that this patch-set needs 3) to be applied first.
5) rebase to 4.14.0-rc6.
 
v14->15:
1) add VFIO_DEVICE_GET_GFX_DMABUF ABI. (Gerd)
2) add intel_vgpu_dmabuf_cleanup() to clean up the vGPU's dmabuf. (Gerd)

v13->v14:
1) add PROBE, DMABUF and REGION flags. (Alex)
2) return -ENXIO when gem proxy object is banned by ioctl.
   (Chris) (Daniel)
3) add some details about the float pixel format. (Daniel)
4) add F suffix to the defined name. (Daniel)
5) refine pixel format table. (Zhenyu)

v12->v13:
1) add comments to GEM proxy. (Chris)
2) don't ban GEM proxy in i915_gem_sw_finish_ioctl. (Chris)
3) check GEM proxy bar after finishing i915_gem_object_wait. (Chris)
4) remove GEM proxy bar in i915_gem_madvise_ioctl.

v11->v12:
1) add drm_format_mod back. (Gerd and Zhenyu)
2) add region_index. (Gerd)
3) refine the lifecycle of dmabuf.
4) send to dri-devel at lists.freedesktop.org. (Ville) 

v10->v11:
1) rename plane_type to drm_plane_type. (Gerd)
2) move fields of vfio_device_query_gfx_plane to
   vfio_device_gfx_plane_info. (Gerd)
3) remove drm_format_mod, start fields. (Daniel)
4) remove plane_id.

v9->v10:
1) remove dma-buf management
2) refine the ABI API VFIO_DEVICE_QUERY_GFX_PLANE
3) track the dma-buf create and release in kernel mode

v8->v9:
1) refine the dma-buf ioctl definition
2) add a lock to protect the dmabuf list
3) move drm format change to a separate patch
4) codes cleanup

v7->v8:
1) refine framebuffer decoder code
2) fix a bug in decoding primary plane

v6->v7:
1) release dma-buf related allocations in dma-buf's associated release
   function.
2) refine ioctl interface for querying plane info or create dma-buf
3) refine framebuffer decoder code
4) the patch series is based on 4.12.0-rc1

v5->v6:
1) align the dma-buf life cycle with the vfio device.
2) add the dma-buf related operations in a separate patch.
3) i915 releated changes.

v4->v5:
1) fix bug while checking whether the gem obj is gvt's dma-buf when user
   change caching mode or domains. Add a helper function to do it.
2) add definition for the query plane and create dma-buf.

v3->v4:
1) fix bug while checking whether the gem obj is gvt's dma-buf when set
   caching mode or doamins.

v2->v3:
1) add a field gvt_plane_info in the drm_i915_gem_obj structure to save
   the decoded plane information to avoid look up while need the plane info.
2) declare a new flag I915_GEM_OBJECT_IS_GVT_DMABUF in drm_i915_gem_object
   to represent the gem obj for gvt's dma-buf. The tiling mode, caching mode
   and domains can not be changed for this kind of gem object.
3) change dma-buf related information to be more generic. So other vendor
   can use the same interface.

v1->v2:
1) create a management fd for dma-buf operations.
2) alloc gem object's backing storage in gem obj's get_pages() callback.

This patch set adds the dma-buf support for intel GVT-g.

dma-buf is an uniform mechanism to share DMA buffers across different
devices and subsystems. dma-buf for intel GVT-g is mainly used to share
the vgpu's framebuffer to userspace to leverage userspace graphics stacks
to render the framebuffer to the display monitor.

The main idea is that we create a gem object and set vgpu's framebuffer as
its backing storage. Then, export a dma-buf associated with this gem object.
With the fd of this dma-buf, userspace can directly handle this buffer.

This patch set can be tried with the following example:
git://git.kraxel.org/qemu  branch: work/intel-vgpu

A topic branch with the latest patch set is:
https://github.com/intel/gvt-linux.git   branch: topic/dmabuf

Tina Zhang (6):
  drm/i915/gvt: Add framebuffer decoder support
  drm: Introduce RGB 64-bit 16:16:16:16 float format
  drm/i915/gvt: Add RGB 64-bit 16:16:16:16 float format
  drm/i915/gvt: Add opregion support
  vfio: ABI for mdev display dma-buf operation
  drm/i915/gvt: Dmabuf support for GVT-g

 drivers/gpu/drm/i915/gvt/Makefile  |   3 +-
 drivers/gpu/drm/i915/gvt/display.c |   2 +-
 drivers/gpu/drm/i915/gvt/display.h |   2 +
 drivers/gpu/drm/i915/gvt/dmabuf.c  | 523 +
 drivers/gpu/drm/i915/gvt/dmabuf.h  |  67 +
 drivers/gpu/drm/i915/gvt/fb_decoder.c  | 521 
 drivers/gpu/drm/i915/gvt/fb_decoder.h  | 169 +++
 drivers/gpu/drm/i915/gvt/gvt.c |   2 +
 drivers/gpu/drm/i915/gvt/gvt.h |  12 +
 drivers/gpu/drm/i915/gvt/hypercall.h   |   3 +
 

[PATCH v18 0/6] drm/i915/gvt: Dma-buf support for GVT-g

2017-11-15 Thread Tina Zhang
v17->v18:
1) unmap vgpu's opregion when destroying vgpu.
2) update comments for VFIO_DEVICE_GET_GFX_DMABUF. (Alex)

v16->v17:
1) modify VFIO_DEVICE_GET_GFX_DMABUF interface. (Alex)
2) add comments for x_hot/y_hot. (Gerd)

v15->v16:
1) add cursor hotspot fields in struct vfio_device_gfx_plane_info. (Gerd)
2) clean up some typos and add comments for VFIO_DEVICE_QUERY_GFX_PLANE. (Alex)
3) seperate the GEM Proxy part to another patch-set. (Joonas and Chris)
   
https://lists.freedesktop.org/archives/intel-gvt-dev/2017-November/002377.html
4) please note that this patch-set needs 3) to be applied first.
5) rebase to 4.14.0-rc6.
 
v14->15:
1) add VFIO_DEVICE_GET_GFX_DMABUF ABI. (Gerd)
2) add intel_vgpu_dmabuf_cleanup() to clean up the vGPU's dmabuf. (Gerd)

v13->v14:
1) add PROBE, DMABUF and REGION flags. (Alex)
2) return -ENXIO when gem proxy object is banned by ioctl.
   (Chris) (Daniel)
3) add some details about the float pixel format. (Daniel)
4) add F suffix to the defined name. (Daniel)
5) refine pixel format table. (Zhenyu)

v12->v13:
1) add comments to GEM proxy. (Chris)
2) don't ban GEM proxy in i915_gem_sw_finish_ioctl. (Chris)
3) check GEM proxy bar after finishing i915_gem_object_wait. (Chris)
4) remove GEM proxy bar in i915_gem_madvise_ioctl.

v11->v12:
1) add drm_format_mod back. (Gerd and Zhenyu)
2) add region_index. (Gerd)
3) refine the lifecycle of dmabuf.
4) send to dri-devel at lists.freedesktop.org. (Ville) 

v10->v11:
1) rename plane_type to drm_plane_type. (Gerd)
2) move fields of vfio_device_query_gfx_plane to
   vfio_device_gfx_plane_info. (Gerd)
3) remove drm_format_mod, start fields. (Daniel)
4) remove plane_id.

v9->v10:
1) remove dma-buf management
2) refine the ABI API VFIO_DEVICE_QUERY_GFX_PLANE
3) track the dma-buf create and release in kernel mode

v8->v9:
1) refine the dma-buf ioctl definition
2) add a lock to protect the dmabuf list
3) move drm format change to a separate patch
4) codes cleanup

v7->v8:
1) refine framebuffer decoder code
2) fix a bug in decoding primary plane

v6->v7:
1) release dma-buf related allocations in dma-buf's associated release
   function.
2) refine ioctl interface for querying plane info or create dma-buf
3) refine framebuffer decoder code
4) the patch series is based on 4.12.0-rc1

v5->v6:
1) align the dma-buf life cycle with the vfio device.
2) add the dma-buf related operations in a separate patch.
3) i915 releated changes.

v4->v5:
1) fix bug while checking whether the gem obj is gvt's dma-buf when user
   change caching mode or domains. Add a helper function to do it.
2) add definition for the query plane and create dma-buf.

v3->v4:
1) fix bug while checking whether the gem obj is gvt's dma-buf when set
   caching mode or doamins.

v2->v3:
1) add a field gvt_plane_info in the drm_i915_gem_obj structure to save
   the decoded plane information to avoid look up while need the plane info.
2) declare a new flag I915_GEM_OBJECT_IS_GVT_DMABUF in drm_i915_gem_object
   to represent the gem obj for gvt's dma-buf. The tiling mode, caching mode
   and domains can not be changed for this kind of gem object.
3) change dma-buf related information to be more generic. So other vendor
   can use the same interface.

v1->v2:
1) create a management fd for dma-buf operations.
2) alloc gem object's backing storage in gem obj's get_pages() callback.

This patch set adds the dma-buf support for intel GVT-g.

dma-buf is an uniform mechanism to share DMA buffers across different
devices and subsystems. dma-buf for intel GVT-g is mainly used to share
the vgpu's framebuffer to userspace to leverage userspace graphics stacks
to render the framebuffer to the display monitor.

The main idea is that we create a gem object and set vgpu's framebuffer as
its backing storage. Then, export a dma-buf associated with this gem object.
With the fd of this dma-buf, userspace can directly handle this buffer.

This patch set can be tried with the following example:
git://git.kraxel.org/qemu  branch: work/intel-vgpu

A topic branch with the latest patch set is:
https://github.com/intel/gvt-linux.git   branch: topic/dmabuf

Tina Zhang (6):
  drm/i915/gvt: Add framebuffer decoder support
  drm: Introduce RGB 64-bit 16:16:16:16 float format
  drm/i915/gvt: Add RGB 64-bit 16:16:16:16 float format
  drm/i915/gvt: Add opregion support
  vfio: ABI for mdev display dma-buf operation
  drm/i915/gvt: Dmabuf support for GVT-g

 drivers/gpu/drm/i915/gvt/Makefile  |   3 +-
 drivers/gpu/drm/i915/gvt/display.c |   2 +-
 drivers/gpu/drm/i915/gvt/display.h |   2 +
 drivers/gpu/drm/i915/gvt/dmabuf.c  | 523 +
 drivers/gpu/drm/i915/gvt/dmabuf.h  |  67 +
 drivers/gpu/drm/i915/gvt/fb_decoder.c  | 521 
 drivers/gpu/drm/i915/gvt/fb_decoder.h  | 169 +++
 drivers/gpu/drm/i915/gvt/gvt.c |   2 +
 drivers/gpu/drm/i915/gvt/gvt.h |  12 +
 drivers/gpu/drm/i915/gvt/hypercall.h   |   3 +