Top Banner
1 Intel® Open Source Technology Center Intel® Open Source Technology Center Generic Buffer Sharing Mechanism for Mediated Devices Tina Zhang [email protected]
25

Generic Buffer Sharing Mechanism for Mediated Devices · 2017. 12. 14. · Intel® Open Source Technology Center 24 Summary The implementation is generic enough for mediated vGPUs.

Oct 01, 2020

Download

Documents

dariahiddleston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Generic Buffer Sharing Mechanism for Mediated Devices · 2017. 12. 14. · Intel® Open Source Technology Center 24 Summary The implementation is generic enough for mediated vGPUs.

1Intel® Open Source Technology CenterIntel® Open Source Technology Center

Generic Buffer Sharing Mechanism for

Mediated Devices

Tina Zhang

[email protected]

Page 2: Generic Buffer Sharing Mechanism for Mediated Devices · 2017. 12. 14. · Intel® Open Source Technology Center 24 Summary The implementation is generic enough for mediated vGPUs.

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 · 2017. 12. 14. · Intel® Open Source Technology Center 24 Summary The implementation is generic enough for mediated vGPUs.

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 · 2017. 12. 14. · Intel® Open Source Technology Center 24 Summary The implementation is generic enough for mediated vGPUs.

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 · 2017. 12. 14. · Intel® Open Source Technology Center 24 Summary The implementation is generic enough for mediated vGPUs.

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 · 2017. 12. 14. · Intel® Open Source Technology Center 24 Summary The implementation is generic enough for mediated vGPUs.

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 · 2017. 12. 14. · Intel® Open Source Technology Center 24 Summary The implementation is generic enough for mediated vGPUs.

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 · 2017. 12. 14. · Intel® Open Source Technology Center 24 Summary The implementation is generic enough for mediated vGPUs.

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 · 2017. 12. 14. · Intel® Open Source Technology Center 24 Summary The implementation is generic enough for mediated vGPUs.

9Intel® Open Source Technology CenterIntel® Open Source Technology Center

Generic Buffer Sharing in MDEV Framework

Page 10: Generic Buffer Sharing Mechanism for Mediated Devices · 2017. 12. 14. · Intel® Open Source Technology Center 24 Summary The implementation is generic enough for mediated vGPUs.

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 remote protocol (e.g. SPICE)

• Supported by Linux graphics stacks

• As an extension to the mediated device framework

• Can be leveraged by other mediated devices

Page 11: Generic Buffer Sharing Mechanism for Mediated Devices · 2017. 12. 14. · Intel® Open Source Technology Center 24 Summary The implementation is generic enough for mediated vGPUs.

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 · 2017. 12. 14. · Intel® Open Source Technology Center 24 Summary The implementation is generic enough for mediated vGPUs.

12Intel® Open Source Technology Center

Buffer Sharing in MDEV Framework

New Component

Existing Component

Page 13: Generic Buffer Sharing Mechanism for Mediated Devices · 2017. 12. 14. · Intel® Open Source Technology Center 24 Summary The implementation is generic enough for mediated vGPUs.

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 · 2017. 12. 14. · Intel® Open Source Technology Center 24 Summary The implementation is generic enough for mediated vGPUs.

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 · 2017. 12. 14. · Intel® Open Source Technology Center 24 Summary The implementation is generic enough for mediated vGPUs.

15Intel® Open Source Technology Center

Buffer Sharing in MDEV Framework

New Component

Existing Component

Pass fd to

buffer user

Page 16: Generic Buffer Sharing Mechanism for Mediated Devices · 2017. 12. 14. · Intel® Open Source Technology Center 24 Summary The implementation is generic enough for mediated vGPUs.

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 · 2017. 12. 14. · Intel® Open Source Technology Center 24 Summary The implementation is generic enough for mediated vGPUs.

17Intel® Open Source Technology Center

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 */

};

VFIO_DEVICE_QUERY_GFX_PLANE

Page 18: Generic Buffer Sharing Mechanism for Mediated Devices · 2017. 12. 14. · Intel® Open Source Technology Center 24 Summary The implementation is generic enough for mediated vGPUs.

18Intel® Open Source Technology Center

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 · 2017. 12. 14. · Intel® Open Source Technology Center 24 Summary The implementation is generic enough for mediated vGPUs.

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 · 2017. 12. 14. · Intel® Open Source Technology Center 24 Summary The implementation is generic enough for mediated vGPUs.

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 · 2017. 12. 14. · Intel® Open Source Technology Center 24 Summary The implementation is generic enough for mediated vGPUs.

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 · 2017. 12. 14. · Intel® Open Source Technology Center 24 Summary The implementation is generic enough for mediated vGPUs.

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 · 2017. 12. 14. · Intel® Open Source Technology Center 24 Summary The implementation is generic enough for mediated vGPUs.

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 · 2017. 12. 14. · Intel® Open Source Technology Center 24 Summary The implementation is generic enough for mediated vGPUs.

24Intel® Open Source Technology Center

Summary

The implementation is generic enough for mediated vGPUs.

The design is also generic enough for other I/O mediators.

• Based on DMA-BUF subsystem

Welcome innovations based on this generic buffer sharing mechanism

Page 25: Generic Buffer Sharing Mechanism for Mediated Devices · 2017. 12. 14. · Intel® Open Source Technology Center 24 Summary The implementation is generic enough for mediated vGPUs.

Intel® Open Source Technology Center

https://github.com/01org/gvt-linux