1 /* SPDX-License-Identifier: GPL-2.0-or-later */
2 #ifndef X86_CPU_POLICY_H
3 #define X86_CPU_POLICY_H
4 
5 struct cpu_policy;
6 struct domain;
7 
8 extern struct cpu_policy     raw_cpu_policy;
9 extern struct cpu_policy    host_cpu_policy;
10 extern struct cpu_policy  pv_max_cpu_policy;
11 extern struct cpu_policy  pv_def_cpu_policy;
12 extern struct cpu_policy hvm_max_cpu_policy;
13 extern struct cpu_policy hvm_def_cpu_policy;
14 
15 /* Initialise the guest cpu_policy objects. */
16 void init_guest_cpu_policies(void);
17 
18 /* Allocate and initialise a CPU policy suitable for the domain. */
19 int init_domain_cpu_policy(struct domain *d);
20 
21 /* Apply dom0-specific tweaks to the CPUID policy. */
22 void init_dom0_cpuid_policy(struct domain *d);
23 
24 /* Clamp the CPUID policy to reality. */
25 void recalculate_cpuid_policy(struct domain *d);
26 
27 /*
28  * Collect the raw CPUID and MSR values.  Called during boot, and after late
29  * microcode loading.
30  */
31 void calculate_raw_cpu_policy(void);
32 
33 #endif /* X86_CPU_POLICY_H */
34