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