diff options
Diffstat (limited to 'arch/x86/include/asm/microcode.h')
-rw-r--r-- | arch/x86/include/asm/microcode.h | 25 |
1 files changed, 18 insertions, 7 deletions
diff --git a/arch/x86/include/asm/microcode.h b/arch/x86/include/asm/microcode.h index c882664716c1..ef51b501e22a 100644 --- a/arch/x86/include/asm/microcode.h +++ b/arch/x86/include/asm/microcode.h | |||
@@ -9,20 +9,31 @@ struct cpu_signature { | |||
9 | 9 | ||
10 | struct device; | 10 | struct device; |
11 | 11 | ||
12 | enum ucode_state { UCODE_ERROR, UCODE_OK, UCODE_NFOUND }; | ||
13 | |||
12 | struct microcode_ops { | 14 | struct microcode_ops { |
13 | int (*request_microcode_user) (int cpu, const void __user *buf, size_t size); | 15 | enum ucode_state (*request_microcode_user) (int cpu, |
14 | int (*request_microcode_fw) (int cpu, struct device *device); | 16 | const void __user *buf, size_t size); |
15 | 17 | ||
16 | void (*apply_microcode) (int cpu); | 18 | enum ucode_state (*request_microcode_fw) (int cpu, |
19 | struct device *device); | ||
17 | 20 | ||
18 | int (*collect_cpu_info) (int cpu, struct cpu_signature *csig); | ||
19 | void (*microcode_fini_cpu) (int cpu); | 21 | void (*microcode_fini_cpu) (int cpu); |
22 | |||
23 | /* | ||
24 | * The generic 'microcode_core' part guarantees that | ||
25 | * the callbacks below run on a target cpu when they | ||
26 | * are being called. | ||
27 | * See also the "Synchronization" section in microcode_core.c. | ||
28 | */ | ||
29 | int (*apply_microcode) (int cpu); | ||
30 | int (*collect_cpu_info) (int cpu, struct cpu_signature *csig); | ||
20 | }; | 31 | }; |
21 | 32 | ||
22 | struct ucode_cpu_info { | 33 | struct ucode_cpu_info { |
23 | struct cpu_signature cpu_sig; | 34 | struct cpu_signature cpu_sig; |
24 | int valid; | 35 | int valid; |
25 | void *mc; | 36 | void *mc; |
26 | }; | 37 | }; |
27 | extern struct ucode_cpu_info ucode_cpu_info[]; | 38 | extern struct ucode_cpu_info ucode_cpu_info[]; |
28 | 39 | ||