mirror of
https://github.com/projectacrn/acrn-hypervisor.git
synced 2025-09-25 02:41:45 +00:00
hv: CAT is supposed to be enabled in the system level
In platforms that support CAT, when it is enabled by ACRN, i.e. IA32_resourceType_MASK_n registers are programmed with customized values, it has impacts to the whole system. The per guest flag GUEST_FLAG_CLOS_REQUIRED suggests that CAT may be enabled in some guests, but not in others who don't have this flag, which is conceptually incorrect. This patch removes GUEST_FLAG_CLOS_REQUIRED, and adds a new Kconfig entry CAT_ENABLED for CAT enabling. When it's enabled, platform_clos_array[] defines a set of system-wide Class of Service (COS, or CLOS), and the per guest vm_configs[].clos associates the guest with particular CLOS. Tracked-On: #2462 Signed-off-by: Zide Chen <zide.chen@intel.com>
This commit is contained in:
@@ -184,13 +184,10 @@ bool sanitize_vm_config(void)
|
||||
break;
|
||||
}
|
||||
|
||||
if ((vm_config->guest_flags & GUEST_FLAG_CLOS_REQUIRED) != 0U) {
|
||||
if (cat_cap_info.support && (vm_config->clos <= cat_cap_info.clos_max)) {
|
||||
cat_cap_info.enabled = true;
|
||||
} else {
|
||||
pr_err("%s set wrong CLOS or CAT is not supported\n", __func__);
|
||||
ret = false;
|
||||
}
|
||||
if (cat_cap_info.enabled && (vm_config->clos > cat_cap_info.clos_max)) {
|
||||
pr_err("%s set CLOS(%d) more than system supports(%d)\n", __func__,
|
||||
vm_config->clos, cat_cap_info.clos_max);
|
||||
ret = false;
|
||||
}
|
||||
|
||||
if (((vm_config->epc.size | vm_config->epc.base) & ~PAGE_MASK) != 0UL) {
|
||||
|
Reference in New Issue
Block a user