xref: /openbmc/linux/arch/x86/include/asm/microcode.h (revision 8fa5723aa7e053d498336b48448b292fc2e0458b)
1 #ifndef _ASM_X86_MICROCODE_H
2 #define _ASM_X86_MICROCODE_H
3 
4 struct cpu_signature {
5 	unsigned int sig;
6 	unsigned int pf;
7 	unsigned int rev;
8 };
9 
10 struct device;
11 
12 struct microcode_ops {
13 	int  (*request_microcode_user) (int cpu, const void __user *buf, size_t size);
14 	int  (*request_microcode_fw) (int cpu, struct device *device);
15 
16 	void (*apply_microcode) (int cpu);
17 
18 	int  (*collect_cpu_info) (int cpu, struct cpu_signature *csig);
19 	void (*microcode_fini_cpu) (int cpu);
20 };
21 
22 struct ucode_cpu_info {
23 	struct cpu_signature cpu_sig;
24 	int valid;
25 	void *mc;
26 };
27 extern struct ucode_cpu_info ucode_cpu_info[];
28 
29 #ifdef CONFIG_MICROCODE_INTEL
30 extern struct microcode_ops * __init init_intel_microcode(void);
31 #else
32 static inline struct microcode_ops * __init init_intel_microcode(void)
33 {
34 	return NULL;
35 }
36 #endif /* CONFIG_MICROCODE_INTEL */
37 
38 #ifdef CONFIG_MICROCODE_AMD
39 extern struct microcode_ops * __init init_amd_microcode(void);
40 #else
41 static inline struct microcode_ops * __init init_amd_microcode(void)
42 {
43 	return NULL;
44 }
45 #endif
46 
47 #endif /* _ASM_X86_MICROCODE_H */
48