From a6cef1095f7a87c1a3ded55523531ebb448a80a7 Mon Sep 17 00:00:00 2001 From: "David B. Kinder" Date: Tue, 8 Jan 2019 16:52:15 -0800 Subject: [PATCH] doc: add GVT-g kernel options doc Update developer docs with a new GVT-g kernel options document. Update existing docs with referenced labels. Signed-off-by: David B. Kinder --- doc/developer-guides/GVT-g-kernel-options.rst | 237 ++++++++++++++++++ doc/developer-guides/hld/hld-APL_GVT-g.rst | 4 + doc/developer-guides/images/i915-image1.png | Bin 0 -> 10421 bytes doc/developer-guides/images/i915-image2.png | Bin 0 -> 37711 bytes doc/developer-guides/images/i915-image3.png | Bin 0 -> 7458 bytes doc/developer-guides/images/i915-image4.png | Bin 0 -> 13705 bytes doc/developer-guides/images/i915-image5.png | Bin 0 -> 13754 bytes doc/developer-guides/index.rst | 1 + 8 files changed, 242 insertions(+) create mode 100644 doc/developer-guides/GVT-g-kernel-options.rst create mode 100644 doc/developer-guides/images/i915-image1.png create mode 100644 doc/developer-guides/images/i915-image2.png create mode 100644 doc/developer-guides/images/i915-image3.png create mode 100644 doc/developer-guides/images/i915-image4.png create mode 100644 doc/developer-guides/images/i915-image5.png diff --git a/doc/developer-guides/GVT-g-kernel-options.rst b/doc/developer-guides/GVT-g-kernel-options.rst new file mode 100644 index 000000000..7d706c2f4 --- /dev/null +++ b/doc/developer-guides/GVT-g-kernel-options.rst @@ -0,0 +1,237 @@ +.. _GVT-g-kernel-options: + +GVT-g (AcrnGT) Kernel Options +############################# + +AcrnGT supports flexible configurations so customers can configure +AcrnGT easily, according to their requirements. This document introduces +the kernel command line options that are related to AcrnGT. + +i915.enable_gvt +*************** + +This option enables support for Intel GVT-g graphics virtualization +support in the host By default, it's not enabled, so we need to add +``i915.enable_gvt=1`` in the SOS kernel command line. This is a Service +OS only parameter, and cannot be enabled in the User OS. + +i915.enable_pvmmio +****************** + +We introduce the feature named **Para-Virtualized MMIO** (PVMMIO) +to improve graphics performance of the GVT-g guest. +This feature batches sequential MMIO writes into a +shared buffer between the Service OS and User OS, and then submits a +para-virtualized command to notify to GVT-g in Service OS. This +effectively reduces the trap numbers of MMIO operations and improves +overall graphics performance. + +The ``i915.enable_pvmmio`` option controls +the optimization levels of the PVMMIO feature: each bit represents a +sub-feature of the optimization. By default, all +sub-features of PVMMIO are enabled but can also be selectively +enabled as well. + +The PVMMIO optimization levels are: + +* PVMMIO_ELSP_SUBMIT = 0x1 - Batch submission of the guest graphics + workloads +* PVMMIO_PLANE_UPDATE = 0x2 - Batch plane register update operations +* PVMMIO_PLANE_WM_UPDATE = 0x4 - Batch watermark registers update operations +* PVMMIO_MASTER_IRQ = 0x8 - Batch IRQ related registers +* PVMMIO_PPGTT_UPDATE = 0x10 - Use PVMMIO method to update the PPGTT table + of guest. + +.. note:: This parameter works in both the Service OS and User OS, but + changes to one will affect the other. For example, if either SOS or UOS + disables the PVMMIO_PPGTT_UPDATE feature, this optimization will be + disabled for both. + +i915.gvt_workload_priority +************************** + +acrnGT supports **Prioritized Rendering** as described in the +:ref:`GVT-g-prioritized-rendering` high-level design. This +configuration option controls the priority level of GVT-g guests. +Priority levels range from -1023 to 1023. + +The default priority is 0, the same priority as the Service OS. If the +level is negative, the guest's priority will be lower than the Service +OS, so graphics preemption will work and the prioritized rendering +feature will be enabled. This is a Service OS only parameters, and does +not work in the User OS. + +i915.enable_initial_modeset +*************************** + +At time, kernel graphics must be initialized with a valid display +configuration with full display pipeline programming in place before the +user space is initialized and without a fbdev & fb console. + +When ``i915.enable_initial_modeset=1``, the FBDEV of i915 will not be +initialized, so users would not be able to see the fb console on screen. +If there is no graphics UI running by default, users will see black +screens displayed. + +When ``i915.enable_initial_modeset=0`` in SOS, the plane restriction +(also known as plane-based domain ownership) feature will be disabled. +(See the next section and :ref:`plane_restriction` in the ACRN GVT-g +High Level Design for more information about this feature.) + +In the current configuration, we will set +``i915.enable_initial_modeset=1`` in SOS and +``i915.enable_initial_modeset=0`` in UOS. + +i915.avail_planes_per_pipe and i915.domain_plane_owners +******************************************************* + +Both Service OS and User OS are provided a set of HW planes where they +can display their contents. Since each domain provides its content, +there is no need for any extra composition to be done through SOS. +``i915.avail_planes_per_pipe`` and ``i915.domain_plane_owners`` work +together to provide the plane restriction (or plan-based domain +ownership) feature. + +i915.domain_plane_owners +======================== + +On Intel's display +hardware, each pipeline contains several planes, which are blended +together by their Z-order and rendered to the display monitors. In +AcrnGT, we can control each planes' ownership so that the domains can +display contents on the planes they own. + +The ``i915.domain_plane_owners`` parameter controls the ownership of all +the planes in the system, as shown in :numref:`i915-planes-pipes`. Each +4-bit nibble identifies the domain id owner for that plane and a group +of 4 nibbles represents a pipe. This is a Service OS only configuration +and cannot be modified at runtime. Domain ID 0x0 is for the Service OS, +the User OS use domain IDs from 0x1 to 0xF. + +.. figure:: images/i915-image1.png + :width: 900px + :align: center + :name: i915-planes-pipes + + i915.domain_plane_owners + +For example, if we set ``i915.domain_plane_owners=0x010001101110``, the +plane ownership will be as shown in :numref:`i915-planes-example1` - SOS +(green) owns plane 1A, 1B, 4B, 1C, and 2C, and UOS #1 owns plane 2A, 3A, +4A, 2B, 3B and 3C. + +.. figure:: images/i915-image2.png + :width: 900px + :align: center + :name: i915-planes-example1 + + i915.domain_plane_owners example + +Some other examples: + +* i915.domain_plane_owners=0x022211110000 - SOS (0x0) owns planes on pipe A; + UOS #1 (0x1) owns all planes on pipe B; and UOS #2 (0x2) owns all + planes on pipe C (since, in the representation in + :numref:`i915-planes-pipes` above, there are only 3 planes attached to + pipe C). + +* i915.domain_plane_owners=0x000001110000 - SOS owns all planes on pipe A + and pipe C; UOS #1 owns plane 1, 2 and 3 on pipe B. Plane 4 on pipe B + is owned by the SOS so that if it wants to display notice message, it + can display on top of the UOS. + +i915.avail_planes_per_pipe +========================== + +Option ``i915.avail_planes_per_pipe`` is a bitmask (shown in +:numref:`i915-avail-planes`) that tells the i915 +driver which planes are available and can be exposed to the compositor. +This is a parameter that must to be set in each domain. If +``i915.avail_planes_per_pipe=0``, the plane restriction feature is disabled. + +.. figure:: images/i915-image3.png + :width: 600px + :align: center + :name: i915-avail-planes + + i915.avail_planes_per_pipe + +For example, if we set ``i915.avail_planes_per_pipe=0x030901`` in SOS +and ``i915.avail_planes_per_pipe=0x04060E`` in UOS, the planes will be as +shown in :numref:`i915-avail-planes-example1` and +:numref:`i915-avail-planes-example1`: + +.. figure:: images/i915-image4.png + :width: 500px + :align: center + :name: i915-avail-planes-example1 + + SOS i915.avail_planes_per_pipe + +.. figure:: images/i915-image5.png + :width: 500px + :align: center + :name: i915-avail-planes-example2 + + UOS i915.avail_planes_per_pipe + +``i915.avail_planes_per_pipe`` controls the view of planes from i915 drivers +inside of every domain, and ``i915.domain_plane_owners`` is the global +arbiter controlling which domain can present its content onto the +real hardware. Generally, they are aligned. For example, we can set +``i915.domain_plane_owners= 0x011111110000``, +``i915.avail_planes_per_pipe=0x00000F`` in SOS, and +``i915.avail_planes_per_pipe=0x070F00`` in domain 1, so every domain will +only flip on the planes they owns. + +However, we don't force alignment: ``avail_planes_per_pipe`` might +not be aligned with the +setting of ``domain_plane_owners``. Consider this example: +``i915.domain_plane_owners=0x011111110000``, +``i915.avail_planes_per_pipe=0x01010F`` in SOS and +``i915.avail_planes_per_pipe=0x070F00`` in domain 1. +With this configuration, SOS will be able to render on plane 1B and +plane 1C, however, the content of plane 1B and plane 1C will not be +flipped onto the real hardware. + +i915.domain_scaler_owner +************************ + +On each Intel GPU display pipeline, there are several plane scalers +to zoom in/out the planes. For example, if a 720p video is played +full-screen on a 1080p display monitor, the kernel driver will use a +scaler to zoom in the video plane to a 1080p image and present it onto a +display pipeline. (Refer to "Intel Open Source Graphics PRM Vol 7: +display" for the details.) + +On Broxton platforms, Pipe A and Pipe B each +have two plane scalers, and Pipe C has one plane scaler. To support the +plane scaling in AcrnGT guest OS, we introduced the parameter +``i915.domain_scaler_owner``, to assign a specific scaler to the target +guest OS. + +As with the parameter ``i915.domain_plane_owners``, each nibble of +``i915.domain_scaler_owner`` represents the domain id that owns the scaler; +every nibble (4 bits) represents a scaler and every group of 2 nibbles +represents a pipe. This is a Service OS only configuration and cannot be +modified at runtime. Domain ID 0x0 is for the Service OS, the User OS +use domain IDs from 0x1 to 0xF. + +For example, if we set ``i915.domain_scaler_owner=0x021100``, the SOS +owns scaler 1A, 2A; UOS #1 owns scaler 1B, 2B; and UOS #2 owns scaler +1C. + +i915.enable_hangcheck +********************* + +This parameter enable detection of a GPU hang. When enabled, the i915 +will start a timer to check if the workload is completed in a specific +time. If not, i915 will treat it as a GPU hang and trigger a GPU reset. + +In AcrnGT, the workload in SOS and UOS can be set to different +priorities. If SOS is assigned a higher priority than the UOS, the UOS's +workload might not be able to run on the HW on time. This may lead to +the guest i915 triggering a hangcheck and lead to a guest GPU reset. +This reset is unnecessary so we use ``i915.enable_hangcheck=0`` to +disable this timeout check and prevent guest from triggering unnecessary +GPU resets. diff --git a/doc/developer-guides/hld/hld-APL_GVT-g.rst b/doc/developer-guides/hld/hld-APL_GVT-g.rst index 7b4df68d6..8541d53cd 100644 --- a/doc/developer-guides/hld/hld-APL_GVT-g.rst +++ b/doc/developer-guides/hld/hld-APL_GVT-g.rst @@ -655,6 +655,8 @@ For detailed information about this model, please refer to the `Linux HYPER_DMABUF Driver High Level Design `_. +.. _plane_restriction: + Plane-Based Domain Ownership ---------------------------- @@ -813,6 +815,8 @@ page tables at render context switches. Per-VM Shadow PPGTT +.. _GVT-g-prioritized-rendering: + Prioritized Rendering and Preemption ==================================== diff --git a/doc/developer-guides/images/i915-image1.png b/doc/developer-guides/images/i915-image1.png new file mode 100644 index 0000000000000000000000000000000000000000..f7bdfbae73c86818df664a02afe0a5ae26b9d7da GIT binary patch literal 10421 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 B+^hfq literal 0 HcmV?d00001 diff --git a/doc/developer-guides/images/i915-image2.png b/doc/developer-guides/images/i915-image2.png new file mode 100644 index 0000000000000000000000000000000000000000..3479b7c8b21476450317ed88b4a9bdd4a5463e2d GIT binary patch literal 37711 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 literal 0 HcmV?d00001 diff --git a/doc/developer-guides/images/i915-image3.png b/doc/developer-guides/images/i915-image3.png new file mode 100644 index 0000000000000000000000000000000000000000..ea10547074cc749b3cfb02c65812133620ed45f8 GIT binary patch literal 7458 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 literal 0 HcmV?d00001 diff --git a/doc/developer-guides/images/i915-image5.png b/doc/developer-guides/images/i915-image5.png new file mode 100644 index 0000000000000000000000000000000000000000..a9aab67a2daebac454d2dfee6b7ca800180c4a96 GIT binary patch literal 13754 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%0AbJC$t~NbBQL=z2-*!ci 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 literal 0 HcmV?d00001 diff --git a/doc/developer-guides/index.rst b/doc/developer-guides/index.rst index 42497bf4c..1eb9a8268 100644 --- a/doc/developer-guides/index.rst +++ b/doc/developer-guides/index.rst @@ -9,6 +9,7 @@ Developer Guides hld/index primer GVT-g-porting + GVT-g-kernel-options trusty l1tf modularity