Generic Buffer Sharing Mechanism for Mediated Devices...Intel® Open Source Technology Center 10...
Transcript of Generic Buffer Sharing Mechanism for Mediated Devices...Intel® Open Source Technology Center 10...
![Page 1: Generic Buffer Sharing Mechanism for Mediated Devices...Intel® Open Source Technology Center 10 Design Philosophy - Generic • Based on dma-buf subsystem which • Generic way provided](https://reader034.fdocuments.net/reader034/viewer/2022052010/601f8b01ad1a9755a1665631/html5/thumbnails/1.jpg)
1Intel® Open Source Technology CenterIntel® Open Source Technology Center
Generic Buffer Sharing Mechanism for
Mediated Devices
Tina Zhang
![Page 2: Generic Buffer Sharing Mechanism for Mediated Devices...Intel® Open Source Technology Center 10 Design Philosophy - Generic • Based on dma-buf subsystem which • Generic way provided](https://reader034.fdocuments.net/reader034/viewer/2022052010/601f8b01ad1a9755a1665631/html5/thumbnails/2.jpg)
2Intel® Open Source Technology CenterIntel® Open Source Technology Center
Agenda
Background
Generic Buffer Sharing in MDEV Framework
Status
Summary
![Page 3: Generic Buffer Sharing Mechanism for Mediated Devices...Intel® Open Source Technology Center 10 Design Philosophy - Generic • Based on dma-buf subsystem which • Generic way provided](https://reader034.fdocuments.net/reader034/viewer/2022052010/601f8b01ad1a9755a1665631/html5/thumbnails/3.jpg)
3Intel® Open Source Technology Center
Virtual Function I/O
Virtual Function I/O
• Secure, userspace driver framework
• Assigns physical I/O device to VMs
![Page 4: Generic Buffer Sharing Mechanism for Mediated Devices...Intel® Open Source Technology Center 10 Design Philosophy - Generic • Based on dma-buf subsystem which • Generic way provided](https://reader034.fdocuments.net/reader034/viewer/2022052010/601f8b01ad1a9755a1665631/html5/thumbnails/4.jpg)
4Intel® Open Source Technology Center
Mediated Device in VFIO
Qemu
VFIO
VFIO
Guest OS
Host Linux
Device
Driver
Linux device driver MDEV driverHypervisor
Mdev Framework
Hardware
I/O TrapLibvirt
Mdev mgmt
Pass MDEV UUID
Create/Configure MDEVGet MDEV info
![Page 5: Generic Buffer Sharing Mechanism for Mediated Devices...Intel® Open Source Technology Center 10 Design Philosophy - Generic • Based on dma-buf subsystem which • Generic way provided](https://reader034.fdocuments.net/reader034/viewer/2022052010/601f8b01ad1a9755a1665631/html5/thumbnails/5.jpg)
5Intel® Open Source Technology Center
A KEY MDEV Usage Requirement in GPU Virtualization Is
To Render Guest Framebuffer In The Host Side
![Page 6: Generic Buffer Sharing Mechanism for Mediated Devices...Intel® Open Source Technology Center 10 Design Philosophy - Generic • Based on dma-buf subsystem which • Generic way provided](https://reader034.fdocuments.net/reader034/viewer/2022052010/601f8b01ad1a9755a1665631/html5/thumbnails/6.jpg)
6Intel® Open Source Technology Center
Scenario-1: Remote Virtual Desktop
Desktop#1 Desktop#2 Desktop#N
3D/Media Acceleration
…
Network
Remote
Framebuffer
Streaming
![Page 7: Generic Buffer Sharing Mechanism for Mediated Devices...Intel® Open Source Technology Center 10 Design Philosophy - Generic • Based on dma-buf subsystem which • Generic way provided](https://reader034.fdocuments.net/reader034/viewer/2022052010/601f8b01ad1a9755a1665631/html5/thumbnails/7.jpg)
7Intel® Open Source Technology Center
Scenario-2: Automotive Virtualization
GPU Mediator Directly Configure VM Framebuffer to Display Panel
![Page 8: Generic Buffer Sharing Mechanism for Mediated Devices...Intel® Open Source Technology Center 10 Design Philosophy - Generic • Based on dma-buf subsystem which • Generic way provided](https://reader034.fdocuments.net/reader034/viewer/2022052010/601f8b01ad1a9755a1665631/html5/thumbnails/8.jpg)
8Intel® Open Source Technology Center
Scenario-3: Rich Virtual Client
VM1 VM2 VM3
Guest Framebuffers Composited
by Host Compositor
framebuffer framebuffer framebuffer
![Page 9: Generic Buffer Sharing Mechanism for Mediated Devices...Intel® Open Source Technology Center 10 Design Philosophy - Generic • Based on dma-buf subsystem which • Generic way provided](https://reader034.fdocuments.net/reader034/viewer/2022052010/601f8b01ad1a9755a1665631/html5/thumbnails/9.jpg)
9Intel® Open Source Technology CenterIntel® Open Source Technology Center
Generic Buffer Sharing in MDEV Framework
![Page 10: Generic Buffer Sharing Mechanism for Mediated Devices...Intel® Open Source Technology Center 10 Design Philosophy - Generic • Based on dma-buf subsystem which • Generic way provided](https://reader034.fdocuments.net/reader034/viewer/2022052010/601f8b01ad1a9755a1665631/html5/thumbnails/10.jpg)
10Intel® Open Source Technology Center
Design Philosophy - Generic
• Based on dma-buf subsystem which
• Generic way provided by kernel to share DMA buffers
• Already been supported by many device drivers
• Supported by Linux graphics stacks
• Used by remote protocol (e.g. SPICE)
• ABIs proposed by different MDEVs in the same category
![Page 11: Generic Buffer Sharing Mechanism for Mediated Devices...Intel® Open Source Technology Center 10 Design Philosophy - Generic • Based on dma-buf subsystem which • Generic way provided](https://reader034.fdocuments.net/reader034/viewer/2022052010/601f8b01ad1a9755a1665631/html5/thumbnails/11.jpg)
11Intel® Open Source Technology Center
A Short Note On Dma-buf
The exporter
• Producer of the dma-buf
• Implements dma_buf_ops
• Exports dma-buf as a file descriptor
The buffer-user
• Imports the dma-buf
• Gets the scatterlist in SGT
• Maps buffer address
Exporter Buffer-user
dma-buf
…
Physical memory
map
The dma-buf
• Represents a sg_table (SGT)
![Page 12: Generic Buffer Sharing Mechanism for Mediated Devices...Intel® Open Source Technology Center 10 Design Philosophy - Generic • Based on dma-buf subsystem which • Generic way provided](https://reader034.fdocuments.net/reader034/viewer/2022052010/601f8b01ad1a9755a1665631/html5/thumbnails/12.jpg)
12Intel® Open Source Technology Center
Buffer Sharing in MDEV Framework
New Component
Existing Component
![Page 13: Generic Buffer Sharing Mechanism for Mediated Devices...Intel® Open Source Technology Center 10 Design Philosophy - Generic • Based on dma-buf subsystem which • Generic way provided](https://reader034.fdocuments.net/reader034/viewer/2022052010/601f8b01ad1a9755a1665631/html5/thumbnails/13.jpg)
13Intel® Open Source Technology Center
Buffer Sharing in MDEV Framework
New Component
Existing Component
Query Buffer Info
![Page 14: Generic Buffer Sharing Mechanism for Mediated Devices...Intel® Open Source Technology Center 10 Design Philosophy - Generic • Based on dma-buf subsystem which • Generic way provided](https://reader034.fdocuments.net/reader034/viewer/2022052010/601f8b01ad1a9755a1665631/html5/thumbnails/14.jpg)
14Intel® Open Source Technology Center
Buffer Sharing in MDEV Framework
New Component
Existing Component
Ask for dma-buf fd of the buffer
Return fd of the exposed buffer
![Page 15: Generic Buffer Sharing Mechanism for Mediated Devices...Intel® Open Source Technology Center 10 Design Philosophy - Generic • Based on dma-buf subsystem which • Generic way provided](https://reader034.fdocuments.net/reader034/viewer/2022052010/601f8b01ad1a9755a1665631/html5/thumbnails/15.jpg)
15Intel® Open Source Technology Center
Buffer Sharing in MDEV Framework
New Component
Existing Component
Pass fd
![Page 16: Generic Buffer Sharing Mechanism for Mediated Devices...Intel® Open Source Technology Center 10 Design Philosophy - Generic • Based on dma-buf subsystem which • Generic way provided](https://reader034.fdocuments.net/reader034/viewer/2022052010/601f8b01ad1a9755a1665631/html5/thumbnails/16.jpg)
16Intel® Open Source Technology Center
Buffer Sharing in MDEV Framework
New Component
Existing Component
Access the
buffer through fd
![Page 17: Generic Buffer Sharing Mechanism for Mediated Devices...Intel® Open Source Technology Center 10 Design Philosophy - Generic • Based on dma-buf subsystem which • Generic way provided](https://reader034.fdocuments.net/reader034/viewer/2022052010/601f8b01ad1a9755a1665631/html5/thumbnails/17.jpg)
17Intel® Open Source Technology Center
VFIO_DEVICE_QUERY_GFX_PLANE
struct vfio_device_gfx_plane_info {
/* in */
__u32 drm_plane_type; /* type of plane: DRM_PLANE_TYPE_* */
/* out */
__u32 width; /* width of plane */
__u32 height; /* height of plane */
__u32 stride; /* stride of plane */
__u32 size; /* size of plane in bytes, align on page*/
…
__s32 dmabuf_id; /* dma-buf id */
};
Shared Guest Framebuffer Based on DMA-BUF(1/2)
![Page 18: Generic Buffer Sharing Mechanism for Mediated Devices...Intel® Open Source Technology Center 10 Design Philosophy - Generic • Based on dma-buf subsystem which • Generic way provided](https://reader034.fdocuments.net/reader034/viewer/2022052010/601f8b01ad1a9755a1665631/html5/thumbnails/18.jpg)
18Intel® Open Source Technology Center
Shared Guest Framebuffer Based on DMA-BUF(2/2)
VFIO_DEVICE_GET_GFX_DMABUF
struct vfio_device_gfx_dmabuf_fd {
__u32 argsz;
__u32 flags;
/* in */
__u32 dmabuf_id;
/* out */
__s32 dmabuf_fd;
};
![Page 19: Generic Buffer Sharing Mechanism for Mediated Devices...Intel® Open Source Technology Center 10 Design Philosophy - Generic • Based on dma-buf subsystem which • Generic way provided](https://reader034.fdocuments.net/reader034/viewer/2022052010/601f8b01ad1a9755a1665631/html5/thumbnails/19.jpg)
19Intel® Open Source Technology Center
Sharing vGPU Framebuffer For Remote Desktop
Network
Remote
Framebuffer
Streaming
1
2
3
VM1 framebuffer VM2 framebuffer VM3 framebuffer
![Page 20: Generic Buffer Sharing Mechanism for Mediated Devices...Intel® Open Source Technology Center 10 Design Philosophy - Generic • Based on dma-buf subsystem which • Generic way provided](https://reader034.fdocuments.net/reader034/viewer/2022052010/601f8b01ad1a9755a1665631/html5/thumbnails/20.jpg)
20Intel® Open Source Technology Center
Sharing vGPU Framebuffer For Direct Display
1
2
3
drmPrimeFDToHandle:
dma-buf fd -> handle
drmModeAddFB2:
handle -> framebuffer
drmModeSetCrtc:
render the framebuffer
to local display panelVM1
framebuffer
VM2
framebufferVM3
framebuffer
![Page 21: Generic Buffer Sharing Mechanism for Mediated Devices...Intel® Open Source Technology Center 10 Design Philosophy - Generic • Based on dma-buf subsystem which • Generic way provided](https://reader034.fdocuments.net/reader034/viewer/2022052010/601f8b01ad1a9755a1665631/html5/thumbnails/21.jpg)
21Intel® Open Source Technology Center
Sharing vGPU Framebuffer For Composited Display
eglCreateImageKHR:
Dma-buf fd -> image
glBindTexture:
Bind image to texture
![Page 22: Generic Buffer Sharing Mechanism for Mediated Devices...Intel® Open Source Technology Center 10 Design Philosophy - Generic • Based on dma-buf subsystem which • Generic way provided](https://reader034.fdocuments.net/reader034/viewer/2022052010/601f8b01ad1a9755a1665631/html5/thumbnails/22.jpg)
22Intel® Open Source Technology Center
Implementation Details
DMA-BUF Management
• Implements dma-buf operations
• Creates dma-buf object with an installed fd
• Caches the exposed DMA-BUF object
SGT Management
• Allocates/Releases the SGT
• Gets address of the mediated device buffer
Guest buffer Information Collection
• Gets the info by decoding values in the mediated device registers
![Page 23: Generic Buffer Sharing Mechanism for Mediated Devices...Intel® Open Source Technology Center 10 Design Philosophy - Generic • Based on dma-buf subsystem which • Generic way provided](https://reader034.fdocuments.net/reader034/viewer/2022052010/601f8b01ad1a9755a1665631/html5/thumbnails/23.jpg)
23Intel® Open Source Technology Center
Status
PATCH v15:
• Tested with Linux kernel 4.13
• Working with community for upstreaming
Userspace:
• Qemu UI patch-set of “start adding dma-buf support” designed by Gerd Hoffman
• Qemu UI RFC patch-set of “add display support” designed by Gerd Hoffman
![Page 24: Generic Buffer Sharing Mechanism for Mediated Devices...Intel® Open Source Technology Center 10 Design Philosophy - Generic • Based on dma-buf subsystem which • Generic way provided](https://reader034.fdocuments.net/reader034/viewer/2022052010/601f8b01ad1a9755a1665631/html5/thumbnails/24.jpg)
24Intel® Open Source Technology Center
Summary
The design is generic enough for I/O mediators.
• Based on DMA-BUF subsystem
The implementation is generic for mediated vGPUs.
Welcome innovations based on this generic buffer sharing mechanism
![Page 25: Generic Buffer Sharing Mechanism for Mediated Devices...Intel® Open Source Technology Center 10 Design Philosophy - Generic • Based on dma-buf subsystem which • Generic way provided](https://reader034.fdocuments.net/reader034/viewer/2022052010/601f8b01ad1a9755a1665631/html5/thumbnails/25.jpg)
Intel® Open Source Technology Center
https://github.com/01org/gvt-linux