From 781b4a5639759e5ec948b4a27f583795fd15e421 Mon Sep 17 00:00:00 2001 From: Andrew Cooper Date: Wed, 18 Mar 2020 20:18:21 +0000 Subject: [PATCH] x86/ucode: Move interface from processor.h to microcode.h This reduces the complexity of processor.h, particularly the need to include public/xen.h. Substitute processor.h includes for microcode.h in some sources, and add microcode.h includes in others. Only 4 of the function declarations are actually called externally. Move the vendor init declarations to private.h No functional change. Signed-off-by: Andrew Cooper Acked-by: Jan Beulich --- xen/arch/x86/acpi/power.c | 1 + xen/arch/x86/cpu/microcode/private.h | 3 +++ xen/arch/x86/efi/efi-boot.h | 2 +- xen/arch/x86/platform_hypercall.c | 1 + xen/arch/x86/setup.c | 1 + xen/arch/x86/smpboot.c | 1 + xen/arch/x86/spec_ctrl.c | 1 - xen/include/asm-x86/microcode.h | 8 ++++++++ xen/include/asm-x86/processor.h | 8 -------- 9 files changed, 16 insertions(+), 10 deletions(-) diff --git a/xen/arch/x86/acpi/power.c b/xen/arch/x86/acpi/power.c index b5df00b22c..e3d6eefe65 100644 --- a/xen/arch/x86/acpi/power.c +++ b/xen/arch/x86/acpi/power.c @@ -30,6 +30,7 @@ #include #include #include +#include #include #include diff --git a/xen/arch/x86/cpu/microcode/private.h b/xen/arch/x86/cpu/microcode/private.h index 2e3be79eaf..459b6a4c54 100644 --- a/xen/arch/x86/cpu/microcode/private.h +++ b/xen/arch/x86/cpu/microcode/private.h @@ -34,4 +34,7 @@ struct microcode_ops { extern const struct microcode_ops *microcode_ops; +int microcode_init_intel(void); +int microcode_init_amd(void); + #endif /* ASM_X86_MICROCODE_PRIVATE_H */ diff --git a/xen/arch/x86/efi/efi-boot.h b/xen/arch/x86/efi/efi-boot.h index bf7b0a61dc..7bfb96875c 100644 --- a/xen/arch/x86/efi/efi-boot.h +++ b/xen/arch/x86/efi/efi-boot.h @@ -6,8 +6,8 @@ #include #include #include +#include #include -#include static struct file __initdata ucode; static multiboot_info_t __initdata mbi = { diff --git a/xen/arch/x86/platform_hypercall.c b/xen/arch/x86/platform_hypercall.c index 80efb84328..ee2efdd875 100644 --- a/xen/arch/x86/platform_hypercall.c +++ b/xen/arch/x86/platform_hypercall.c @@ -27,6 +27,7 @@ #include #include #include +#include #include #include #include diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c index c87040c890..885919d5c3 100644 --- a/xen/arch/x86/setup.c +++ b/xen/arch/x86/setup.c @@ -52,6 +52,7 @@ #include #include #include +#include /* opt_nosmp: If true, secondary processors are ignored. */ static bool __initdata opt_nosmp; diff --git a/xen/arch/x86/smpboot.c b/xen/arch/x86/smpboot.c index 0e54bd14f3..09264b02d1 100644 --- a/xen/arch/x86/smpboot.c +++ b/xen/arch/x86/smpboot.c @@ -39,6 +39,7 @@ #include #include #include +#include #include #include #include diff --git a/xen/arch/x86/spec_ctrl.c b/xen/arch/x86/spec_ctrl.c index aed2c6613a..c5d8e587a8 100644 --- a/xen/arch/x86/spec_ctrl.c +++ b/xen/arch/x86/spec_ctrl.c @@ -24,7 +24,6 @@ #include #include -#include #include #include #include diff --git a/xen/include/asm-x86/microcode.h b/xen/include/asm-x86/microcode.h index 9b6ff7db08..89b9aaa02d 100644 --- a/xen/include/asm-x86/microcode.h +++ b/xen/include/asm-x86/microcode.h @@ -1,8 +1,11 @@ #ifndef ASM_X86__MICROCODE_H #define ASM_X86__MICROCODE_H +#include #include +#include + struct cpu_signature { unsigned int sig; unsigned int pf; @@ -11,4 +14,9 @@ struct cpu_signature { DECLARE_PER_CPU(struct cpu_signature, cpu_sig); +void microcode_set_module(unsigned int idx); +int microcode_update(XEN_GUEST_HANDLE_PARAM(const_void), unsigned long len); +int early_microcode_init(void); +int microcode_update_one(bool start_update); + #endif /* ASM_X86__MICROCODE_H */ diff --git a/xen/include/asm-x86/processor.h b/xen/include/asm-x86/processor.h index 895c7032b9..fe231c5072 100644 --- a/xen/include/asm-x86/processor.h +++ b/xen/include/asm-x86/processor.h @@ -9,7 +9,6 @@ #include #include #include -#include #include #include #include @@ -579,13 +578,6 @@ void cpuid_hypervisor_leaves(const struct vcpu *v, uint32_t leaf, int guest_rdmsr_xen(const struct vcpu *v, uint32_t idx, uint64_t *val); int guest_wrmsr_xen(struct vcpu *v, uint32_t idx, uint64_t val); -void microcode_set_module(unsigned int); -int microcode_update(XEN_GUEST_HANDLE_PARAM(const_void), unsigned long len); -int early_microcode_init(void); -int microcode_update_one(bool start_update); -int microcode_init_intel(void); -int microcode_init_amd(void); - static inline uint8_t get_cpu_family(uint32_t raw, uint8_t *model, uint8_t *stepping) { -- 2.30.2