mirror of
https://github.com/xen-project/xen.git
synced 2026-10-28 10:11:27 +01:00
x86/cpuid: prevent shrinking migrated policies max leaves
CPUID policies from guest being migrated shouldn't have the maximum leaves shrink, as that would be a guest visible change. The hypervisor has no knowledge on whether a guest has been migrated or is build from scratch, and hence it must not blindly shrink the CPUID policy in recalculate_cpuid_policy. Remove the x86_cpuid_policy_shrink_max_leaves call from recalculate_cpuid_policy. Removing such call could be seen as a partial revert of540d911c28. Instead let the toolstack shrink the policies for newly created guests, while keeping the previous values for guests that are migrated in. Note that guests migrated in without a CPUID policy won't get any kind of shrinking applied. Fixes:540d911c28('x86/CPUID: shrink max_{,sub}leaf fields according to actual leaf contents') Signed-off-by: Roger Pau Monné <roger.pau@citrix.com> Acked-by: Andrew Cooper <andrew.cooper3@citrix.com> Release-Acked-by: Ian Jackson <iwj@xenproject.org>
This commit is contained in:
1 parent
c06e3d8103
commit
81da2b544c
2 files changed
+7
-2
No files matched your search
@@ -638,6 +638,13 @@ int xc_cpuid_apply_policy(xc_interface *xch, uint32_t domid, bool restore,
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Do not try to shrink the policy if restoring, as that could cause
|
||||
* guest visible changes in the maximum leaf fields.
|
||||
*/
|
||||
if ( !restore )
|
||||
x86_cpuid_policy_shrink_max_leaves(p);
|
||||
|
||||
rc = x86_cpuid_copy_to_buffer(p, leaves, &nr_leaves);
|
||||
if ( rc )
|
||||
{
|
||||
|
||||
@@ -719,8 +719,6 @@ void recalculate_cpuid_policy(struct domain *d)
|
||||
|
||||
if ( !p->extd.page1gb )
|
||||
p->extd.raw[0x19] = EMPTY_LEAF;
|
||||
|
||||
x86_cpuid_policy_shrink_max_leaves(p);
|
||||
}
|
||||
|
||||
int init_domain_cpuid_policy(struct domain *d)
|
||||
|
||||