From 53a5941b997d7902576b9f1f561972196faf633d Mon Sep 17 00:00:00 2001 From: "David B. Kinder" Date: Mon, 23 Jul 2018 14:37:00 -0700 Subject: [PATCH] doc: add GVT-G porting guide Transcode, review, and publish GVT-G porting guide documentation. Merged glossary entries, added anchor links in GVT-g_api for referencing from this document. Signed-off-by: David B. Kinder --- doc/api/GVT-g_api.rst | 4 + doc/developer-guides/GVT-G-porting.rst | 174 ++++++++++++++++++ .../images/GVT-G-porting-image1.png | Bin 0 -> 16727 bytes doc/developer-guides/index.rst | 1 + doc/glossary.rst | 8 +- 5 files changed, 186 insertions(+), 1 deletion(-) create mode 100644 doc/developer-guides/GVT-G-porting.rst create mode 100644 doc/developer-guides/images/GVT-G-porting-image1.png diff --git a/doc/api/GVT-g_api.rst b/doc/api/GVT-g_api.rst index 45bf3581b..6176a830d 100644 --- a/doc/api/GVT-g_api.rst +++ b/doc/api/GVT-g_api.rst @@ -83,6 +83,7 @@ responses to user space modules, notified by vIRQ injections. .. kernel-doc:: include/linux/vhm/acrn_vhm_mm.h :functions: update_memmap_attr +.. _MPT_interface: ACRN-GT mediated pass-through (MPT) interface ************************************************** @@ -143,6 +144,7 @@ This section describes the wrap functions: intel_gvt_hypervisor_unpause_domain intel_gvt_hypervisor_dom0_ready +.. _intel_gvt_ops_interface: GVT-g intel_gvt_ops interface ***************************** @@ -183,6 +185,8 @@ in the `ACRN kernel GitHub repo`_ intel_gvt_activate_vgpu intel_gvt_deactivate_vgpu +.. _sysfs_interface: + ACRN-GT sysfs interface *********************** diff --git a/doc/developer-guides/GVT-G-porting.rst b/doc/developer-guides/GVT-G-porting.rst new file mode 100644 index 000000000..9698d3a0b --- /dev/null +++ b/doc/developer-guides/GVT-G-porting.rst @@ -0,0 +1,174 @@ +.. _GVT-G-porting: + +GVT-G Enabling and Porting Guide +################################ + +Introduction +************ + +GVT-g is Intel's Open Source GPU virtualization solution, up-streamed to +the Linux kernel. Its implementation over KVM is named KVMGT, over Xen +is named XenGT, and over ACRN is named ACRN-GT. GVT-g can export +multiple virtual-GPU (vGPU) instances for virtual machine (VM) system. A +VM can be assigned one instance of a vGPU. The guest OS graphic driver +needs only minor modifications to drive the vGPU adapter in a VM. Every +vGPU instance adopts the full HW GPU's acceleration capability for +media, 3D renderingi, and display. + +ACRN-GT refers to the glue layer between the ACRN hypervisor and GVT-g +core device model. It works as the agent of hypervisor-related services. +It is the only layer that needs to be rewritten when porting GVT-g to +other specific hypervisors. + +For simplicity, in the rest of this document, the term GVT is used to +refer to the core device model component of GVT-g, specifically +corresponding to ``gvt.ko`` when build as a module. + +Purpose of this document +************************ + +This document explains the relationship between components of GVT-g in +the ACRN hypervisor, shows how to enable GVT-g on ACRN, and guides +developers porting GVT-g to work on other hypervisors. + +This document describes: + +- the overall components of GVT-g +- interaction interface of each components +- core interaction scenarios + +APIs of each component interface can be found in the :ref:`GVT-g_api` +documentation. + + +Overall Components +****************** + +For the GVT-g solution for the ACRN hypervisor, there are two +key modules: ACRN-GT and GVT: + +ACRN-GT module + Compiled from ``drivers/gpu/drm/i915/gvt/acrn_gvt.c``, the ACRN-GT + module acts as a glue layer between the ACRN hypervisor and the + interface to the ACRN-DM in user space. + + ACRN-GT is the agent of hypervisor related services, including I/O trap + request, IRQ injection, address translation, VM controls, etc. It also + listens to ACRN hypervisor in ``acrngt_emulation_thread``, and informs GVT + module of I/O traps. + + It calls into the GVT module's :ref:`intel_gvt_ops_interface` to invoke + Device Model's routines, and receives request from GVT module through + the :ref:`MPT_interface`. + + User space programs, such as ACRN-DM, communicate with ACRN-GT through + the :ref:`sysfs_interface` by writing to sysfs node + ``/sys/kernel/gvt/control/create_gvt_instance``. + + This is the only module that needs to be rewritten when porting to + another embedded device hypervisor. + +GVT module + This Device Model service is the central part of all + GVT-g components. It receives workloads from each vGPU, shadows the + workloads, and dispatches the workloads to Dom0's i915 module to deliver + workloads to real hardware. It also emulates the virtual display to each + VM. + +VHM module + This is a kernel module that requires an interrupt (vIRQ) number, + and exposes APIs to external kernel modules such as GVT-g, and the + virtIO BE service running in kernel space. It exposes a char device node + in user space, and only interacts with the DM. The DM routes I/O + requests and responses between other modules to and from the VHM module + via the char device. DM may use the VHM for hypervisor service + (including remote memory map), and VHM may directly service the request + such as for the remote memory map, or invoking hypercall. It also sends + I/O responses to user space modules, notified by vIRQ injections. + + +.. figure:: images/GVT-G-porting-image1.png + :width: 700px + :align: center + :name: GVT-g_components + + GVT-g components and interfaces + +Core scenario interaction sequences +*********************************** + + +vGPU creation scenario +====================== + +In this scenario, ACRN-GT receives a create request from ACRN-DM. It +calls GVT's :ref:`intel_gvt_ops_interface` to inform GVT of vGPU +creation. This interface sets up all vGPU resources such as MMIO, GMA, +PVINFO, GTT, DISPLAY, and Execlists, and calls back to the ACRN-GT +module through the :ref:`MPT_interface` ``attach_vgpu``. Then, the +ACRN-GT module sets up an I/O request server and asks to trap the PCI +configure space of the vGPU (virtual device 0:2:0) via VHM's APIs. +Finally, the ACRN-GT module launches a ACRN-GT emulation thread to +listen to I/O trap notifications from HVM and ACRN hypervisor. + +vGPU destroy scenario +===================== + +In this scenario, ACRN-GT receives a destroy request from ACRN-DM. It +calls GVT's :ref:`intel_gvt_ops_interface` to inform GVT of the vGPU destroy +request, and cleans up all vGPU resources. + +vGPU pci configure space write scenario +======================================= + +ACRN traps the vGPU's PCI config space write, notifies ACRN-GT's +``acrngt_emulation_thread``, which calls ``acrngt_hvm_pio_emulation`` to +handle all I/O trap notifications. This routine calls the GVT's +:ref:`intel_gvt_ops_interface` ``emulate_cfg_write`` to emulate the vGPU PCI +config space write: + +#. If it's BAR0 (GTTMMIO) write, turn on/off GTTMMIO trap, according to + the write value. +#. If it's BAR1 (Aperture) write, maps/unmaps vGPU's aperture to its + corresponding part in the host's aperture. +#. Otherwise, write to the virtual PCI configuration space of the vGPU. + +pci configure space read scenario +================================= + +Call sequence is almost the same as the write scenario above, +but instead it calls the GVT's :ref:`intel_gvt_ops_interface` +``emulate_cfg_read`` to emulate the vGPU PCI config space read. + +GGTT read/write scenario +======================== + +GGTT's trap is set up in the pci configure space write +scenario above. + +MMIO read/write scenario +======================== + +MMIO's trap is set up in the pci configure space write +scenario above. + +PPGTT write protection page set/unset scenario +============================================== + +PPGTT write protection page is set by calling ``acrn_ioreq_add_iorange`` +with range type as ``REQ_WP``, and trap its write to device model while +allowing read without trap. + +PPGTT write protection page is unset by calling ``acrn_ioreq_del_range``. + +PPGTT write protection page write +================================= + +In the VHM module, ioreq for PPGTT WP and MMIO trap is the same. It will +also be trapped into the routine ``intel_vgpu_emulate_mmio_write()``. + +API details +*********** + +APIs of each component interface can be found in the :ref:`GVT-g_api` +documentation. diff --git a/doc/developer-guides/images/GVT-G-porting-image1.png b/doc/developer-guides/images/GVT-G-porting-image1.png new file mode 100644 index 0000000000000000000000000000000000000000..8174f97089cb49d341abfee1e3c4d1106d426d2d GIT binary patch literal 16727 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 Fe*tRW*kAwv literal 0 HcmV?d00001 diff --git a/doc/developer-guides/index.rst b/doc/developer-guides/index.rst index 605e03a42..6169e5561 100644 --- a/doc/developer-guides/index.rst +++ b/doc/developer-guides/index.rst @@ -24,6 +24,7 @@ specific areas within the ACRN hypervisor system. ACPI-virt-hld.rst APL_GVT-g-hld.rst uart-virtualization.rst + GVT-G-porting.rst Contributing to the project *************************** diff --git a/doc/glossary.rst b/doc/glossary.rst index dfa736773..6689ff2fb 100644 --- a/doc/glossary.rst +++ b/doc/glossary.rst @@ -20,7 +20,7 @@ Glossary of Terms A user mode device model application running in Service OS to provide device emulations in ACRN hypervisor. - aperture + aperture, Low GM CPU-visible graphics memory API @@ -36,6 +36,9 @@ Glossary of Terms BIOS Basic Input/Output System. + Dom0 i915 + The Intel Graphics driver running in Domain 0 + ELSP GPU's ExecList submission port @@ -71,6 +74,9 @@ Glossary of Terms GVT-s Virtual shared graphics acceleration (multiple VMs to one physical GPU) + Hidden GM, High GM + Hidden or High graphics memory, not visible to the CPU. + I2C Inter-Integrated Circuit