This is a tangle, but it's a small step in the right direction.
In the following change, xstate_init() is going to start using the Raw policy.
calculate_raw_cpu_policy() is sufficiently separate from the other policies to
safely move like this.
No functional change.
Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
---
CC: Jan Beulich <JBeulich@suse.com>
CC: Roger Pau Monné <roger.pau@citrix.com>
CC: Oleksii Kurochko <oleksii.kurochko@gmail.com>
This is necessary for the forthcoming xstate_{un,}compressed_size() to perform
boot-time sanity checks on state components which aren't fully enabled yet. I
decided that doing this was better than extending the xstate_{offsets,sizes}[]
logic that we're intending to retire in due course.
v3:
* New.
v4:
* Adjust commit message a little.
---
xen/arch/x86/cpu-policy.c | 1 -
xen/arch/x86/setup.c | 4 +++-
2 files changed, 3 insertions(+), 2 deletions(-)
diff --git a/xen/arch/x86/cpu-policy.c b/xen/arch/x86/cpu-policy.c
index b96f4ee55cc4..5b66f002df05 100644
--- a/xen/arch/x86/cpu-policy.c
+++ b/xen/arch/x86/cpu-policy.c
@@ -845,7 +845,6 @@ static void __init calculate_hvm_def_policy(void)
void __init init_guest_cpu_policies(void)
{
- calculate_raw_cpu_policy();
calculate_host_policy();
if ( IS_ENABLED(CONFIG_PV) )
diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
index dd51e68dbe5b..eee20bb1753c 100644
--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
@@ -1888,7 +1888,9 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
tsx_init(); /* Needs microcode. May change HLE/RTM feature bits. */
- identify_cpu(&boot_cpu_data);
+ calculate_raw_cpu_policy(); /* Needs microcode. No other dependenices. */
+
+ identify_cpu(&boot_cpu_data); /* Needs microcode and raw policy. */
set_in_cr4(X86_CR4_OSFXSR | X86_CR4_OSXMMEXCPT);
--
2.39.2