[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH 2/6] x86/ucode: Move microcode into its own directory
Split the existing asm/microcode.h in half, keeping the per-cpu cpu_sig available to external users, and moving everything else into private.h Take the opportunity to trim and clean up the include lists for all 3 source files, all of which include rather more than necessary. No functional change. Signed-off-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> Acked-by: Jan Beulich <jbeulich@xxxxxxxx> --- CC: Jan Beulich <JBeulich@xxxxxxxx> CC: Wei Liu <wl@xxxxxxx> CC: Roger Pau Monné <roger.pau@xxxxxxxxxx> Inclusion of asm/flushtlb.h in isolation was broken by c/s 80943aa40e, and the commit message even states this breakage. I'm surprised it got accepted. Either this needs fixing, or the 23(!) other files including asm/flushtlb.h should be adjusted. Personally I don't think it is reasonable to require including xen/mm.h just to get at tlb flushing functionality, but I also can't spot an obvious way to untangle the dependencies (hence the TODO). --- xen/arch/x86/Makefile | 3 --- xen/arch/x86/cpu/Makefile | 1 + xen/arch/x86/cpu/microcode/Makefile | 3 +++ .../x86/{microcode_amd.c => cpu/microcode/amd.c} | 12 ++++----- xen/arch/x86/{microcode.c => cpu/microcode/core.c} | 15 +++-------- .../{microcode_intel.c => cpu/microcode/intel.c} | 9 +++---- .../x86/cpu/microcode/private.h} | 19 +++++--------- xen/include/asm-x86/microcode.h | 30 ---------------------- 8 files changed, 22 insertions(+), 70 deletions(-) create mode 100644 xen/arch/x86/cpu/microcode/Makefile rename xen/arch/x86/{microcode_amd.c => cpu/microcode/amd.c} (99%) rename xen/arch/x86/{microcode.c => cpu/microcode/core.c} (99%) rename xen/arch/x86/{microcode_intel.c => cpu/microcode/intel.c} (98%) copy xen/{include/asm-x86/microcode.h => arch/x86/cpu/microcode/private.h} (78%) diff --git a/xen/arch/x86/Makefile b/xen/arch/x86/Makefile index ed709e2373..e954edbc2e 100644 --- a/xen/arch/x86/Makefile +++ b/xen/arch/x86/Makefile @@ -43,9 +43,6 @@ obj-$(CONFIG_INDIRECT_THUNK) += indirect-thunk.o obj-y += ioport_emulate.o obj-y += irq.o obj-$(CONFIG_KEXEC) += machine_kexec.o -obj-y += microcode_amd.o -obj-y += microcode_intel.o -obj-y += microcode.o obj-y += mm.o x86_64/mm.o obj-$(CONFIG_HVM) += monitor.o obj-y += mpparse.o diff --git a/xen/arch/x86/cpu/Makefile b/xen/arch/x86/cpu/Makefile index de983006a1..35561fe51d 100644 --- a/xen/arch/x86/cpu/Makefile +++ b/xen/arch/x86/cpu/Makefile @@ -1,4 +1,5 @@ obj-y += mcheck/ +obj-y += microcode/ obj-y += mtrr/ obj-y += amd.o diff --git a/xen/arch/x86/cpu/microcode/Makefile b/xen/arch/x86/cpu/microcode/Makefile new file mode 100644 index 0000000000..aae235245b --- /dev/null +++ b/xen/arch/x86/cpu/microcode/Makefile @@ -0,0 +1,3 @@ +obj-y += amd.o +obj-y += core.o +obj-y += intel.o diff --git a/xen/arch/x86/microcode_amd.c b/xen/arch/x86/cpu/microcode/amd.c similarity index 99% rename from xen/arch/x86/microcode_amd.c rename to xen/arch/x86/cpu/microcode/amd.c index bc7459416c..9028889813 100644 --- a/xen/arch/x86/microcode_amd.c +++ b/xen/arch/x86/cpu/microcode/amd.c @@ -16,16 +16,14 @@ #include <xen/err.h> #include <xen/init.h> -#include <xen/kernel.h> -#include <xen/lib.h> -#include <xen/sched.h> -#include <xen/smp.h> -#include <xen/spinlock.h> +#include <xen/mm.h> /* TODO: Fix asm/tlbflush.h breakage */ +#include <asm/hvm/svm/svm.h> #include <asm/msr.h> #include <asm/processor.h> -#include <asm/microcode.h> -#include <asm/hvm/svm/svm.h> +#include <asm/system.h> + +#include "private.h" #define pr_debug(x...) ((void)0) diff --git a/xen/arch/x86/microcode.c b/xen/arch/x86/cpu/microcode/core.c similarity index 99% rename from xen/arch/x86/microcode.c rename to xen/arch/x86/cpu/microcode/core.c index 27a88c6826..ac5da6b2fe 100644 --- a/xen/arch/x86/microcode.c +++ b/xen/arch/x86/cpu/microcode/core.c @@ -22,29 +22,22 @@ */ #include <xen/cpu.h> +#include <xen/earlycpio.h> #include <xen/err.h> +#include <xen/guest_access.h> #include <xen/init.h> -#include <xen/kernel.h> -#include <xen/lib.h> -#include <xen/notifier.h> #include <xen/param.h> -#include <xen/sched.h> -#include <xen/smp.h> -#include <xen/softirq.h> #include <xen/spinlock.h> #include <xen/stop_machine.h> -#include <xen/tasklet.h> -#include <xen/guest_access.h> -#include <xen/earlycpio.h> #include <xen/watchdog.h> #include <asm/apic.h> #include <asm/delay.h> -#include <asm/msr.h> #include <asm/nmi.h> #include <asm/processor.h> #include <asm/setup.h> -#include <asm/microcode.h> + +#include "private.h" /* * Before performing a late microcode update on any thread, we diff --git a/xen/arch/x86/microcode_intel.c b/xen/arch/x86/cpu/microcode/intel.c similarity index 98% rename from xen/arch/x86/microcode_intel.c rename to xen/arch/x86/cpu/microcode/intel.c index 91b7d473f7..90fb006c94 100644 --- a/xen/arch/x86/microcode_intel.c +++ b/xen/arch/x86/cpu/microcode/intel.c @@ -23,15 +23,12 @@ #include <xen/err.h> #include <xen/init.h> -#include <xen/kernel.h> -#include <xen/lib.h> -#include <xen/sched.h> -#include <xen/smp.h> -#include <xen/spinlock.h> #include <asm/msr.h> #include <asm/processor.h> -#include <asm/microcode.h> +#include <asm/system.h> + +#include "private.h" #define pr_debug(x...) ((void)0) diff --git a/xen/include/asm-x86/microcode.h b/xen/arch/x86/cpu/microcode/private.h similarity index 78% copy from xen/include/asm-x86/microcode.h copy to xen/arch/x86/cpu/microcode/private.h index 1a2bbacc6c..2e3be79eaf 100644 --- a/xen/include/asm-x86/microcode.h +++ b/xen/arch/x86/cpu/microcode/private.h @@ -1,7 +1,9 @@ -#ifndef ASM_X86__MICROCODE_H -#define ASM_X86__MICROCODE_H +#ifndef ASM_X86_MICROCODE_PRIVATE_H +#define ASM_X86_MICROCODE_PRIVATE_H -#include <xen/percpu.h> +#include <xen/types.h> + +#include <asm/microcode.h> enum microcode_match_result { OLD_UCODE, /* signature matched, but revision id is older or equal */ @@ -9,8 +11,6 @@ enum microcode_match_result { MIS_UCODE, /* signature mismatched */ }; -struct cpu_signature; - struct microcode_patch { union { struct microcode_intel *mc_intel; @@ -32,13 +32,6 @@ struct microcode_ops { const struct microcode_patch *new, const struct microcode_patch *old); }; -struct cpu_signature { - unsigned int sig; - unsigned int pf; - unsigned int rev; -}; - -DECLARE_PER_CPU(struct cpu_signature, cpu_sig); extern const struct microcode_ops *microcode_ops; -#endif /* ASM_X86__MICROCODE_H */ +#endif /* ASM_X86_MICROCODE_PRIVATE_H */ diff --git a/xen/include/asm-x86/microcode.h b/xen/include/asm-x86/microcode.h index 1a2bbacc6c..9b6ff7db08 100644 --- a/xen/include/asm-x86/microcode.h +++ b/xen/include/asm-x86/microcode.h @@ -3,35 +3,6 @@ #include <xen/percpu.h> -enum microcode_match_result { - OLD_UCODE, /* signature matched, but revision id is older or equal */ - NEW_UCODE, /* signature matched, but revision id is newer */ - MIS_UCODE, /* signature mismatched */ -}; - -struct cpu_signature; - -struct microcode_patch { - union { - struct microcode_intel *mc_intel; - struct microcode_amd *mc_amd; - void *mc; - }; -}; - -struct microcode_ops { - struct microcode_patch *(*cpu_request_microcode)(const void *buf, - size_t size); - int (*collect_cpu_info)(struct cpu_signature *csig); - int (*apply_microcode)(const struct microcode_patch *patch); - int (*start_update)(void); - void (*end_update_percpu)(void); - void (*free_patch)(void *mc); - bool (*match_cpu)(const struct microcode_patch *patch); - enum microcode_match_result (*compare_patch)( - const struct microcode_patch *new, const struct microcode_patch *old); -}; - struct cpu_signature { unsigned int sig; unsigned int pf; @@ -39,6 +10,5 @@ struct cpu_signature { }; DECLARE_PER_CPU(struct cpu_signature, cpu_sig); -extern const struct microcode_ops *microcode_ops; #endif /* ASM_X86__MICROCODE_H */ -- 2.11.0 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |