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:
Zide Chen
2020-02-05 10:23:07 -08:00
committed by wenlingz
parent 8dcede7693
commit cc6f094926
7 changed files with 21 additions and 14 deletions

View File

@@ -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) {