From e7b63aec9d8033dc3034920500ecf1d46e2d781d Mon Sep 17 00:00:00 2001 From: "David B. Kinder" Date: Mon, 15 Oct 2018 12:39:30 -0700 Subject: [PATCH] doc: add static core partitioning doc Update HLD with the static core partitioning doc Signed-off-by: David B. Kinder --- doc/developer-guides/hld/hld-hypervisor.rst | 1 + .../hld/images/static-core-image1.png | Bin 0 -> 5537 bytes .../hld/images/static-core-image2.png | Bin 0 -> 12182 bytes doc/developer-guides/hld/static-core-hld.rst | 138 ++++++++++++++++++ 4 files changed, 139 insertions(+) create mode 100644 doc/developer-guides/hld/images/static-core-image1.png create mode 100644 doc/developer-guides/hld/images/static-core-image2.png create mode 100644 doc/developer-guides/hld/static-core-hld.rst diff --git a/doc/developer-guides/hld/hld-hypervisor.rst b/doc/developer-guides/hld/hld-hypervisor.rst index c18e1c15b..73d36d873 100644 --- a/doc/developer-guides/hld/hld-hypervisor.rst +++ b/doc/developer-guides/hld/hld-hypervisor.rst @@ -7,5 +7,6 @@ Hypervisor high-level design .. toctree:: :maxdepth: 1 + static-core-hld Memory management Interrupt management diff --git a/doc/developer-guides/hld/images/static-core-image1.png b/doc/developer-guides/hld/images/static-core-image1.png new file mode 100644 index 0000000000000000000000000000000000000000..2050f639f737ac1807c84a574270e6efab98235f GIT binary patch literal 5537 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 H>hXU8N^j=? literal 0 HcmV?d00001 diff --git a/doc/developer-guides/hld/images/static-core-image2.png b/doc/developer-guides/hld/images/static-core-image2.png new file mode 100644 index 0000000000000000000000000000000000000000..76c4b58bed64d47825d62332d4753f064da2570d GIT binary patch literal 12182 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 literal 0 HcmV?d00001 diff --git a/doc/developer-guides/hld/static-core-hld.rst b/doc/developer-guides/hld/static-core-hld.rst new file mode 100644 index 000000000..1a4b19cec --- /dev/null +++ b/doc/developer-guides/hld/static-core-hld.rst @@ -0,0 +1,138 @@ +.. cpu-partitioning-hld: + +Static CPU Partitioning +####################### + +CPU partitioning is a policy for mapping a virtual +CPU (VCPU) to a physical CPU. The current ACRN implementation forces a +static 1:1 mapping between VCPUs and physical CPUs and does +not support multiple VCPUs running on a physical CPU and does not +support VCPU migration from one physical CPU to another. + +This section describes the static CPU partitioning implementation in +ACRN. + +Overview +******** + +ACRN forces a fixed 1:1 mapping between a VCPU and a physical CPU when +creating a VCPU for the guest Operating System. This makes the VCPU +management code much simpler. + +An array is used to track the physical CPU allocation information. When +a VCPU is created, we query, allocate, and update the array to map the +VCPU to an available physical CPU. + +The physical CPU number assignment for each guest is pre-defined. For +example, on a platform with four CPU cores, one physical CPU is assigned +to run the Service Operating System (SOS) and other three physical CPUs +are assigned to run the User Operating System (UOS) instances. + +.. note:: + + To improvement SOS boot time, all physical CPUs are assigned to the SOS + during the SOS boot. Afterward, the physical CPUs defined for the UOS + are allocated by the Device Model (DM) by running the launch_uos.sh + script. + +CPU management in SOS +********************* + +With ACRN, all ACPI table entries are pass-thru to the SOS, including +the Multiple Interrupt Controller Table (MADT). The SOS sees all +physical CPUs by parsing the MADT when the SOS kernel boots. All +physical CPUs are initially assigned to the SOS by creating the same +number of virtual CPUs. + +When the SOS boot is finished, it releases the physical CPUs intended +for UOS use. + +Here is an example flow of CPU allocation on a multi-core platform. + +.. figure:: images/static-core-image2.png + :width: 600px + :align: center + :name: static-core-cpu-allocation + + CPU allocation on a multi-core platform + +CPU management in UOS +********************* + +From the UOS point of view, CPU management is very simple, using a +hypercall to create the virtual CPUs. Here's an example from from the DM +code: + +.. code-block:: c + + int vm_create_vcpu(struct vmctx *ctx, uint16_t vcpu_id) + { + struct acrn_create_vcpu cv; + int error; + + bzero(&cv, sizeof(struct acrn_create_vcpu)); + cv.vcpu_id = vcpu_id; + error = ioctl(ctx->fd, IC_CREATE_VCPU, &cv); + return error; + } + +The VHM will respond to the ioctl: + +.. code-block:: c + + case IC_CREATE_VCPU: { + struct acrn_create_vcpu cv; + + if (copy_from_user(&cv, (void *)ioctl_param, + sizeof(struct acrn_create_vcpu))) + return -EFAULT; + + ret = acrn_hypercall2(HC_CREATE_VCPU, vm->vmid, + virt_to_phys(&cv)); + if (ret < 0) { + pr_err("vhm: failed to create vcpu %d!\\n", + cv.vcpu_id); + return -EFAULT; + } + + atomic_inc(&vm->vcpu_num); + return ret; + } + +The hypercall ``HC_CREATE_VCPU`` is handled in the hypervisor with +the parameter: + +.. code-block:: c + + struct acrn_create_vcpu { + /** the virtual CPU ID for the VCPU created */ + uint16_t vcpu_id; + /** the physical CPU ID for the VCPU created */ + uint16_t pcpu_id; + } __attribute__((aligned(8))); + +CPU assignment management in HV +******************************* + +When we create a VCPU in the hypervisor, an available physical CPU is +picked and marked as used. When we destroy the VCPU, we mark the +physical CPU as available again. + +.. figure:: images/static-core-image1.png + :width: 600px + :align: center + :name: static-core-cpu-assign + + HV CPU Assignment Management + +#. ``allocate_pcpu()`` queries the physical CPU allocation info to get an + available physical CPU and marks physical CPU as not available +#. Physical CPU info is passed to ``create_vcpu()`` and a mapping is built + between the physical CPU and virtual CPU +#. When the VCPU is destroyed VCPU, the physical CPU is passed to the + ``free_pcpu()`` function +#. ``free_pcpu()`` marks the physical CPU available again. + +Currently, the ACRN hypervisor does not support virtual CPU migration to +different physical CPUs. This means no changes to the virtual CPU to +physical CPU can happen without first calling destroy_vcpu.