Date
1 - 2 of 2
[PATCH v4 2/2] config_tools: add own_pcpu widget
Zhao, Yuanyuan
Add "exclusively owns physical CPUs" checkbox to pre-launched VMs
and post-launched VMs. RTVM will not display this checkbox.
If this checkbox is set, the VM will use all the pCPUs assigned to
it alone.
v2->v3:
1.Hide own_pcpu for TEE_VM and REE_VM.
2.'own_pcpu' -> 'guest_flag'.
Signed-off-by: Yuanyuan Zhao <yuanyuan.zhao@...>
---
.../ConfigForm/CustomWidget/cpu_affinity.vue | 30 +++++++++++++++++++
misc/config_tools/library/common.py | 2 +-
.../schema/checks/cpu_assignment.xsd | 7 +++++
misc/config_tools/schema/config.xsd | 5 ++++
.../static_allocators/guest_flags.py | 2 ++
5 files changed, 45 insertions(+), 1 deletion(-)
diff --git a/misc/config_tools/configurator/packages/configurator/src/pages/Config/ConfigForm/CustomWidget/cpu_affinity.vue b/misc/config_tools/configurator/packages/configurator/src/pages/Config/ConfigForm/CustomWidget/cpu_affinity.vue
index 7c2fba2bc..a4a693da9 100644
--- a/misc/config_tools/configurator/packages/configurator/src/pages/Config/ConfigForm/CustomWidget/cpu_affinity.vue
+++ b/misc/config_tools/configurator/packages/configurator/src/pages/Config/ConfigForm/CustomWidget/cpu_affinity.vue
@@ -3,6 +3,26 @@
<b>{{ uiOptions.title }}</b>
<div class="p-4">
<div v-if="defaultVal.pcpu && defaultVal.pcpu.length>0">
+ <b-row v-if="is_std_vm">
+ <label>
+ <n-popover trigger="hover" placement="top-start" style="width: 500px">
+ <template #trigger>
+ <IconInfo/>
+ </template>
+ <span> Enable a VM exclusively owns the physical CPUs assigned to it. </span>
+ </n-popover>
+ Exclusively owns physical CPUs: </label>
+ <b-col>own_pcpu</b-col>
+ <b-col>
+ <b-form-checkbox v-model="pcpu_owned" :value="'y'" :uncheckedValue="'n'"
+ @click="click_own_pcpu"
+ >
+ </b-form-checkbox>
+ </b-col>
+ <b-col></b-col>
+ <b-col></b-col>
+ <b-col></b-col>
+ </b-row>
<b-row>
<b-col></b-col>
<b-col></b-col>
@@ -116,9 +136,15 @@ export default {
isRTVM() {
return vueUtils.getPathVal(this.rootFormData, 'vm_type') === 'RTVM'
},
+ is_std_vm() {
+ return vueUtils.getPathVal(this.rootFormData, 'vm_type') === 'STANDARD_VM'
+ },
pcpuid_enum() {
return window.getCurrentFormSchemaData().BasicConfigType.definitions.CPUAffinityConfiguration.properties.pcpu_id.enum
},
+ pcpu_owned() {
+ return vueUtils.getPathVal(this.rootFormData, 'own_pcpu')
+ },
uiOptions() {
return formUtils.getUiOptions({
schema: this.schema,
@@ -148,6 +174,10 @@ export default {
addPCPU(index) {
this.defaultVal.pcpu.splice(index + 1, 0, {pcpu_id: null, real_time_vcpu: "n"})
},
+ click_own_pcpu() {
+ let newValue = this.pcpu_owned === 'y' ? 'n' : 'y';
+ vueUtils.setPathVal(this.rootFormData, 'own_pcpu', newValue)
+ },
removePCPU(index) {
if (this.defaultVal.pcpu.length === 1) {
// prevent delete for the last one
diff --git a/misc/config_tools/library/common.py b/misc/config_tools/library/common.py
index 9c9d9c62e..345d487a1 100644
--- a/misc/config_tools/library/common.py
+++ b/misc/config_tools/library/common.py
@@ -24,7 +24,7 @@ PY_CACHES = ["__pycache__", "../board_config/__pycache__", "../scenario_config/_
GUEST_FLAG = ["0", "0UL", "GUEST_FLAG_SECURE_WORLD_ENABLED", "GUEST_FLAG_LAPIC_PASSTHROUGH",
"GUEST_FLAG_IO_COMPLETION_POLLING", "GUEST_FLAG_NVMX_ENABLED", "GUEST_FLAG_HIDE_MTRR",
"GUEST_FLAG_RT", "GUEST_FLAG_SECURITY_VM", "GUEST_FLAG_VCAT_ENABLED",
- "GUEST_FLAG_TEE", "GUEST_FLAG_REE"]
+ "GUEST_FLAG_TEE", "GUEST_FLAG_REE", "GUEST_FLAG_OWN_PCPU"]
MULTI_ITEM = ["guest_flag", "pcpu_id", "vcpu_clos", "input", "block", "network", "pci_dev", "shm_region", "communication_vuart"]
diff --git a/misc/config_tools/schema/checks/cpu_assignment.xsd b/misc/config_tools/schema/checks/cpu_assignment.xsd
index 5cfdfbac2..ff92ee2e1 100644
--- a/misc/config_tools/schema/checks/cpu_assignment.xsd
+++ b/misc/config_tools/schema/checks/cpu_assignment.xsd
@@ -25,6 +25,13 @@
</xs:annotation>
</xs:assert>
+ <xs:assert test="every $pcpu in /acrn-config/vm[own_pcpu = 'y']//cpu_affinity//pcpu_id satisfies
+ count(/acrn-config/vm[@id != $pcpu/ancestor::vm//companion_vmid]//cpu_affinity[.//pcpu_id = $pcpu]) <= 1">
+ <xs:annotation acrn:severity="error" acrn:report-on="//vm//cpu_affinity[.//pcpu_id = $pcpu]">
+ <xs:documentation>Physical CPU {$pcpu} is assigned to a VM "[{$pcpu/ancestor::vm/name}]" exclusively owns the physical CPUs assigned to it. Look for, and probably remove, any affinity assignments to CPU {$pcpu} in these VMs {//vm[cpu_affinity//pcpu_id = $pcpu and name != $pcpu/ancestor::vm/name]/name} settings.</xs:documentation>
+ </xs:annotation>
+ </xs:assert>
+
<xs:assert test="every $vm in /acrn-config/vm[load_order != 'SERVICE_VM'] satisfies
count($vm/cpu_affinity/pcpu[pcpu_id != '']) > 0">
<xs:annotation acrn:severity="error" acrn:report-on="$vm/cpu_affinity">
diff --git a/misc/config_tools/schema/config.xsd b/misc/config_tools/schema/config.xsd
index 0aa4f1ebb..4f9df99d9 100644
--- a/misc/config_tools/schema/config.xsd
+++ b/misc/config_tools/schema/config.xsd
@@ -349,6 +349,11 @@ Refer to :ref:`vuart_config` for detailed vUART settings.</xs:documentation>
<xs:annotation acrn:title="" acrn:views="basic, advanced" acrn:applicable-vms="pre-launched, post-launched">
</xs:annotation>
</xs:element>
+ <xs:element name="own_pcpu" type="Boolean" default="n">
+ <xs:annotation acrn:title="Exclusively owns physical CPUs" acrn:views="">
+ <xs:documentation>Enable a VM exclusively owns the physical CPUs assigned to it.</xs:documentation>
+ </xs:annotation>
+ </xs:element>
<xs:element name="cpu_affinity" type="CPUAffinityConfigurations" minOccurs="0">
<xs:annotation acrn:title="Physical CPU affinity" acrn:views="basic" acrn:applicable-vms="pre-launched, post-launched">
<xs:documentation>Select a subset of physical CPUs that this VM can use. More than one can be selected.</xs:documentation>
diff --git a/misc/config_tools/static_allocators/guest_flags.py b/misc/config_tools/static_allocators/guest_flags.py
index 24f30d207..946b7770e 100644
--- a/misc/config_tools/static_allocators/guest_flags.py
+++ b/misc/config_tools/static_allocators/guest_flags.py
@@ -25,6 +25,8 @@ policies = [
GuestFlagPolicy(".//vm_type = 'RTVM' and .//load_order = 'PRE_LAUNCHED_VM'", "GUEST_FLAG_PMU_PASSTHROUGH"),
GuestFlagPolicy(".//vm_type = 'TEE_VM'", "GUEST_FLAG_TEE"),
GuestFlagPolicy(".//vm_type = 'REE_VM'", "GUEST_FLAG_REE"),
+ GuestFlagPolicy(".//own_pcpu = 'y'", "GUEST_FLAG_OWN_PCPU"),
+ GuestFlagPolicy(".//vm_type = 'RTVM'", "GUEST_FLAG_OWN_PCPU"),
]
def fn(board_etree, scenario_etree, allocation_etree):
--
2.25.1
and post-launched VMs. RTVM will not display this checkbox.
If this checkbox is set, the VM will use all the pCPUs assigned to
it alone.
v2->v3:
1.Hide own_pcpu for TEE_VM and REE_VM.
2.'own_pcpu' -> 'guest_flag'.
Signed-off-by: Yuanyuan Zhao <yuanyuan.zhao@...>
---
.../ConfigForm/CustomWidget/cpu_affinity.vue | 30 +++++++++++++++++++
misc/config_tools/library/common.py | 2 +-
.../schema/checks/cpu_assignment.xsd | 7 +++++
misc/config_tools/schema/config.xsd | 5 ++++
.../static_allocators/guest_flags.py | 2 ++
5 files changed, 45 insertions(+), 1 deletion(-)
diff --git a/misc/config_tools/configurator/packages/configurator/src/pages/Config/ConfigForm/CustomWidget/cpu_affinity.vue b/misc/config_tools/configurator/packages/configurator/src/pages/Config/ConfigForm/CustomWidget/cpu_affinity.vue
index 7c2fba2bc..a4a693da9 100644
--- a/misc/config_tools/configurator/packages/configurator/src/pages/Config/ConfigForm/CustomWidget/cpu_affinity.vue
+++ b/misc/config_tools/configurator/packages/configurator/src/pages/Config/ConfigForm/CustomWidget/cpu_affinity.vue
@@ -3,6 +3,26 @@
<b>{{ uiOptions.title }}</b>
<div class="p-4">
<div v-if="defaultVal.pcpu && defaultVal.pcpu.length>0">
+ <b-row v-if="is_std_vm">
+ <label>
+ <n-popover trigger="hover" placement="top-start" style="width: 500px">
+ <template #trigger>
+ <IconInfo/>
+ </template>
+ <span> Enable a VM exclusively owns the physical CPUs assigned to it. </span>
+ </n-popover>
+ Exclusively owns physical CPUs: </label>
+ <b-col>own_pcpu</b-col>
+ <b-col>
+ <b-form-checkbox v-model="pcpu_owned" :value="'y'" :uncheckedValue="'n'"
+ @click="click_own_pcpu"
+ >
+ </b-form-checkbox>
+ </b-col>
+ <b-col></b-col>
+ <b-col></b-col>
+ <b-col></b-col>
+ </b-row>
<b-row>
<b-col></b-col>
<b-col></b-col>
@@ -116,9 +136,15 @@ export default {
isRTVM() {
return vueUtils.getPathVal(this.rootFormData, 'vm_type') === 'RTVM'
},
+ is_std_vm() {
+ return vueUtils.getPathVal(this.rootFormData, 'vm_type') === 'STANDARD_VM'
+ },
pcpuid_enum() {
return window.getCurrentFormSchemaData().BasicConfigType.definitions.CPUAffinityConfiguration.properties.pcpu_id.enum
},
+ pcpu_owned() {
+ return vueUtils.getPathVal(this.rootFormData, 'own_pcpu')
+ },
uiOptions() {
return formUtils.getUiOptions({
schema: this.schema,
@@ -148,6 +174,10 @@ export default {
addPCPU(index) {
this.defaultVal.pcpu.splice(index + 1, 0, {pcpu_id: null, real_time_vcpu: "n"})
},
+ click_own_pcpu() {
+ let newValue = this.pcpu_owned === 'y' ? 'n' : 'y';
+ vueUtils.setPathVal(this.rootFormData, 'own_pcpu', newValue)
+ },
removePCPU(index) {
if (this.defaultVal.pcpu.length === 1) {
// prevent delete for the last one
diff --git a/misc/config_tools/library/common.py b/misc/config_tools/library/common.py
index 9c9d9c62e..345d487a1 100644
--- a/misc/config_tools/library/common.py
+++ b/misc/config_tools/library/common.py
@@ -24,7 +24,7 @@ PY_CACHES = ["__pycache__", "../board_config/__pycache__", "../scenario_config/_
GUEST_FLAG = ["0", "0UL", "GUEST_FLAG_SECURE_WORLD_ENABLED", "GUEST_FLAG_LAPIC_PASSTHROUGH",
"GUEST_FLAG_IO_COMPLETION_POLLING", "GUEST_FLAG_NVMX_ENABLED", "GUEST_FLAG_HIDE_MTRR",
"GUEST_FLAG_RT", "GUEST_FLAG_SECURITY_VM", "GUEST_FLAG_VCAT_ENABLED",
- "GUEST_FLAG_TEE", "GUEST_FLAG_REE"]
+ "GUEST_FLAG_TEE", "GUEST_FLAG_REE", "GUEST_FLAG_OWN_PCPU"]
MULTI_ITEM = ["guest_flag", "pcpu_id", "vcpu_clos", "input", "block", "network", "pci_dev", "shm_region", "communication_vuart"]
diff --git a/misc/config_tools/schema/checks/cpu_assignment.xsd b/misc/config_tools/schema/checks/cpu_assignment.xsd
index 5cfdfbac2..ff92ee2e1 100644
--- a/misc/config_tools/schema/checks/cpu_assignment.xsd
+++ b/misc/config_tools/schema/checks/cpu_assignment.xsd
@@ -25,6 +25,13 @@
</xs:annotation>
</xs:assert>
+ <xs:assert test="every $pcpu in /acrn-config/vm[own_pcpu = 'y']//cpu_affinity//pcpu_id satisfies
+ count(/acrn-config/vm[@id != $pcpu/ancestor::vm//companion_vmid]//cpu_affinity[.//pcpu_id = $pcpu]) <= 1">
+ <xs:annotation acrn:severity="error" acrn:report-on="//vm//cpu_affinity[.//pcpu_id = $pcpu]">
+ <xs:documentation>Physical CPU {$pcpu} is assigned to a VM "[{$pcpu/ancestor::vm/name}]" exclusively owns the physical CPUs assigned to it. Look for, and probably remove, any affinity assignments to CPU {$pcpu} in these VMs {//vm[cpu_affinity//pcpu_id = $pcpu and name != $pcpu/ancestor::vm/name]/name} settings.</xs:documentation>
+ </xs:annotation>
+ </xs:assert>
+
<xs:assert test="every $vm in /acrn-config/vm[load_order != 'SERVICE_VM'] satisfies
count($vm/cpu_affinity/pcpu[pcpu_id != '']) > 0">
<xs:annotation acrn:severity="error" acrn:report-on="$vm/cpu_affinity">
diff --git a/misc/config_tools/schema/config.xsd b/misc/config_tools/schema/config.xsd
index 0aa4f1ebb..4f9df99d9 100644
--- a/misc/config_tools/schema/config.xsd
+++ b/misc/config_tools/schema/config.xsd
@@ -349,6 +349,11 @@ Refer to :ref:`vuart_config` for detailed vUART settings.</xs:documentation>
<xs:annotation acrn:title="" acrn:views="basic, advanced" acrn:applicable-vms="pre-launched, post-launched">
</xs:annotation>
</xs:element>
+ <xs:element name="own_pcpu" type="Boolean" default="n">
+ <xs:annotation acrn:title="Exclusively owns physical CPUs" acrn:views="">
+ <xs:documentation>Enable a VM exclusively owns the physical CPUs assigned to it.</xs:documentation>
+ </xs:annotation>
+ </xs:element>
<xs:element name="cpu_affinity" type="CPUAffinityConfigurations" minOccurs="0">
<xs:annotation acrn:title="Physical CPU affinity" acrn:views="basic" acrn:applicable-vms="pre-launched, post-launched">
<xs:documentation>Select a subset of physical CPUs that this VM can use. More than one can be selected.</xs:documentation>
diff --git a/misc/config_tools/static_allocators/guest_flags.py b/misc/config_tools/static_allocators/guest_flags.py
index 24f30d207..946b7770e 100644
--- a/misc/config_tools/static_allocators/guest_flags.py
+++ b/misc/config_tools/static_allocators/guest_flags.py
@@ -25,6 +25,8 @@ policies = [
GuestFlagPolicy(".//vm_type = 'RTVM' and .//load_order = 'PRE_LAUNCHED_VM'", "GUEST_FLAG_PMU_PASSTHROUGH"),
GuestFlagPolicy(".//vm_type = 'TEE_VM'", "GUEST_FLAG_TEE"),
GuestFlagPolicy(".//vm_type = 'REE_VM'", "GUEST_FLAG_REE"),
+ GuestFlagPolicy(".//own_pcpu = 'y'", "GUEST_FLAG_OWN_PCPU"),
+ GuestFlagPolicy(".//vm_type = 'RTVM'", "GUEST_FLAG_OWN_PCPU"),
]
def fn(board_etree, scenario_etree, allocation_etree):
--
2.25.1
Junjie Mao
toggle quoted message
Show quoted text
-----Original Message-----Reviewed-by: Junjie Mao <junjie.mao@...>
From: Yuanyuan Zhao <yuanyuan.zhao@...>
Sent: Wednesday, September 7, 2022 4:19 PM
To: Dong, Eddie <eddie.dong@...>; Mao, Junjie <junjie.mao@...>; Li, Fei1
<fei1.li@...>; acrn-dev@...
Cc: yuanyuan.zhao@...
Subject: [PATCH v4 2/2] config_tools: add own_pcpu widget
Add "exclusively owns physical CPUs" checkbox to pre-launched VMs
and post-launched VMs. RTVM will not display this checkbox.
If this checkbox is set, the VM will use all the pCPUs assigned to
it alone.
v2->v3:
1.Hide own_pcpu for TEE_VM and REE_VM.
2.'own_pcpu' -> 'guest_flag'.
Signed-off-by: Yuanyuan Zhao <yuanyuan.zhao@...>
---
.../ConfigForm/CustomWidget/cpu_affinity.vue | 30 +++++++++++++++++++
misc/config_tools/library/common.py | 2 +-
.../schema/checks/cpu_assignment.xsd | 7 +++++
misc/config_tools/schema/config.xsd | 5 ++++
.../static_allocators/guest_flags.py | 2 ++
5 files changed, 45 insertions(+), 1 deletion(-)
diff --git
a/misc/config_tools/configurator/packages/configurator/src/pages/Config/ConfigForm/CustomW
idget/cpu_affinity.vue
b/misc/config_tools/configurator/packages/configurator/src/pages/Config/ConfigForm/CustomW
idget/cpu_affinity.vue
index 7c2fba2bc..a4a693da9 100644
---
a/misc/config_tools/configurator/packages/configurator/src/pages/Config/ConfigForm/CustomW
idget/cpu_affinity.vue
+++
b/misc/config_tools/configurator/packages/configurator/src/pages/Config/ConfigForm/CustomW
idget/cpu_affinity.vue
@@ -3,6 +3,26 @@
<b>{{ uiOptions.title }}</b>
<div class="p-4">
<div v-if="defaultVal.pcpu && defaultVal.pcpu.length>0">
+ <b-row v-if="is_std_vm">
+ <label>
+ <n-popover trigger="hover" placement="top-start" style="width: 500px">
+ <template #trigger>
+ <IconInfo/>
+ </template>
+ <span> Enable a VM exclusively owns the physical CPUs assigned to it.
</span>
+ </n-popover>
+ Exclusively owns physical CPUs: </label>
+ <b-col>own_pcpu</b-col>
+ <b-col>
+ <b-form-checkbox v-model="pcpu_owned" :value="'y'" :uncheckedValue="'n'"
+ @click="click_own_pcpu"
+ >
+ </b-form-checkbox>
+ </b-col>
+ <b-col></b-col>
+ <b-col></b-col>
+ <b-col></b-col>
+ </b-row>
<b-row>
<b-col></b-col>
<b-col></b-col>
@@ -116,9 +136,15 @@ export default {
isRTVM() {
return vueUtils.getPathVal(this.rootFormData, 'vm_type') === 'RTVM'
},
+ is_std_vm() {
+ return vueUtils.getPathVal(this.rootFormData, 'vm_type') === 'STANDARD_VM'
+ },
pcpuid_enum() {
return
window.getCurrentFormSchemaData().BasicConfigType.definitions.CPUAffinityConfiguration.pro
perties.pcpu_id.enum
},
+ pcpu_owned() {
+ return vueUtils.getPathVal(this.rootFormData, 'own_pcpu')
+ },
uiOptions() {
return formUtils.getUiOptions({
schema: this.schema,
@@ -148,6 +174,10 @@ export default {
addPCPU(index) {
this.defaultVal.pcpu.splice(index + 1, 0, {pcpu_id: null, real_time_vcpu: "n"})
},
+ click_own_pcpu() {
+ let newValue = this.pcpu_owned === 'y' ? 'n' : 'y';
+ vueUtils.setPathVal(this.rootFormData, 'own_pcpu', newValue)
+ },
removePCPU(index) {
if (this.defaultVal.pcpu.length === 1) {
// prevent delete for the last one
diff --git a/misc/config_tools/library/common.py b/misc/config_tools/library/common.py
index 9c9d9c62e..345d487a1 100644
--- a/misc/config_tools/library/common.py
+++ b/misc/config_tools/library/common.py
@@ -24,7 +24,7 @@ PY_CACHES = ["__pycache__", "../board_config/__pycache__",
"../scenario_config/_
GUEST_FLAG = ["0", "0UL", "GUEST_FLAG_SECURE_WORLD_ENABLED",
"GUEST_FLAG_LAPIC_PASSTHROUGH",
"GUEST_FLAG_IO_COMPLETION_POLLING", "GUEST_FLAG_NVMX_ENABLED",
"GUEST_FLAG_HIDE_MTRR",
"GUEST_FLAG_RT", "GUEST_FLAG_SECURITY_VM", "GUEST_FLAG_VCAT_ENABLED",
- "GUEST_FLAG_TEE", "GUEST_FLAG_REE"]
+ "GUEST_FLAG_TEE", "GUEST_FLAG_REE", "GUEST_FLAG_OWN_PCPU"]
MULTI_ITEM = ["guest_flag", "pcpu_id", "vcpu_clos", "input", "block", "network",
"pci_dev", "shm_region", "communication_vuart"]
diff --git a/misc/config_tools/schema/checks/cpu_assignment.xsd
b/misc/config_tools/schema/checks/cpu_assignment.xsd
index 5cfdfbac2..ff92ee2e1 100644
--- a/misc/config_tools/schema/checks/cpu_assignment.xsd
+++ b/misc/config_tools/schema/checks/cpu_assignment.xsd
@@ -25,6 +25,13 @@
</xs:annotation>
</xs:assert>
+ <xs:assert test="every $pcpu in /acrn-config/vm[own_pcpu = 'y']//cpu_affinity//pcpu_id
satisfies
+ count(/acrn-config/vm[@id !=
$pcpu/ancestor::vm//companion_vmid]//cpu_affinity[.//pcpu_id = $pcpu]) <= 1">
+ <xs:annotation acrn:severity="error" acrn:report-on="//vm//cpu_affinity[.//pcpu_id =
$pcpu]">
+ <xs:documentation>Physical CPU {$pcpu} is assigned to a VM
"[{$pcpu/ancestor::vm/name}]" exclusively owns the physical CPUs assigned to it. Look for,
and probably remove, any affinity assignments to CPU {$pcpu} in these VMs
{//vm[cpu_affinity//pcpu_id = $pcpu and name != $pcpu/ancestor::vm/name]/name}
settings.</xs:documentation>
+ </xs:annotation>
+ </xs:assert>
+
<xs:assert test="every $vm in /acrn-config/vm[load_order != 'SERVICE_VM'] satisfies
count($vm/cpu_affinity/pcpu[pcpu_id != '']) > 0">
<xs:annotation acrn:severity="error" acrn:report-on="$vm/cpu_affinity">
diff --git a/misc/config_tools/schema/config.xsd b/misc/config_tools/schema/config.xsd
index 0aa4f1ebb..4f9df99d9 100644
--- a/misc/config_tools/schema/config.xsd
+++ b/misc/config_tools/schema/config.xsd
@@ -349,6 +349,11 @@ Refer to :ref:`vuart_config` for detailed vUART
settings.</xs:documentation>
<xs:annotation acrn:title="" acrn:views="basic, advanced" acrn:applicable-vms="pre-
launched, post-launched">
</xs:annotation>
</xs:element>
+ <xs:element name="own_pcpu" type="Boolean" default="n">
+ <xs:annotation acrn:title="Exclusively owns physical CPUs" acrn:views="">
+ <xs:documentation>Enable a VM exclusively owns the physical CPUs assigned to
it.</xs:documentation>
+ </xs:annotation>
+ </xs:element>
<xs:element name="cpu_affinity" type="CPUAffinityConfigurations" minOccurs="0">
<xs:annotation acrn:title="Physical CPU affinity" acrn:views="basic"
acrn:applicable-vms="pre-launched, post-launched">
<xs:documentation>Select a subset of physical CPUs that this VM can use. More
than one can be selected.</xs:documentation>
diff --git a/misc/config_tools/static_allocators/guest_flags.py
b/misc/config_tools/static_allocators/guest_flags.py
index 24f30d207..946b7770e 100644
--- a/misc/config_tools/static_allocators/guest_flags.py
+++ b/misc/config_tools/static_allocators/guest_flags.py
@@ -25,6 +25,8 @@ policies = [
GuestFlagPolicy(".//vm_type = 'RTVM' and .//load_order = 'PRE_LAUNCHED_VM'",
"GUEST_FLAG_PMU_PASSTHROUGH"),
GuestFlagPolicy(".//vm_type = 'TEE_VM'", "GUEST_FLAG_TEE"),
GuestFlagPolicy(".//vm_type = 'REE_VM'", "GUEST_FLAG_REE"),
+ GuestFlagPolicy(".//own_pcpu = 'y'", "GUEST_FLAG_OWN_PCPU"),
+ GuestFlagPolicy(".//vm_type = 'RTVM'", "GUEST_FLAG_OWN_PCPU"),
]
def fn(board_etree, scenario_etree, allocation_etree):
--
2.25.1