1 #ifndef ASM_X86__MICROCODE_H
2 #define ASM_X86__MICROCODE_H
4 extern int microcode_init(void *opaque, struct module *module);
5 extern void microcode_exit(void);
10 struct microcode_ops {
11 int (*request_microcode_user) (int cpu, const void __user *buf, size_t size);
12 int (*request_microcode_fw) (int cpu, struct device *device);
14 void (*apply_microcode) (int cpu);
16 int (*collect_cpu_info) (int cpu, struct cpu_signature *csig);
17 void (*microcode_fini_cpu) (int cpu);
20 struct microcode_header_intel {
28 unsigned int datasize;
29 unsigned int totalsize;
30 unsigned int reserved[3];
33 struct microcode_intel {
34 struct microcode_header_intel hdr;
38 /* microcode format is extended from prescott processors */
39 struct extended_signature {
45 struct extended_sigtable {
48 unsigned int reserved[3];
49 struct extended_signature sigs[0];
52 struct equiv_cpu_entry {
53 unsigned int installed_cpu;
54 unsigned int fixed_errata_mask;
55 unsigned int fixed_errata_compare;
56 unsigned int equiv_cpu;
59 struct microcode_header_amd {
60 unsigned int data_code;
61 unsigned int patch_id;
62 unsigned char mc_patch_data_id[2];
63 unsigned char mc_patch_data_len;
64 unsigned char init_flag;
65 unsigned int mc_patch_data_checksum;
66 unsigned int nb_dev_id;
67 unsigned int sb_dev_id;
68 unsigned char processor_rev_id[2];
69 unsigned char nb_rev_id;
70 unsigned char sb_rev_id;
71 unsigned char bios_api_rev;
72 unsigned char reserved1[3];
73 unsigned int match_reg[8];
76 struct microcode_amd {
77 struct microcode_header_amd hdr;
81 struct cpu_signature {
87 struct ucode_cpu_info {
88 struct cpu_signature cpu_sig;
91 struct microcode_intel *mc_intel;
92 struct microcode_amd *mc_amd;
96 extern struct ucode_cpu_info ucode_cpu_info[];
98 #endif /* ASM_X86__MICROCODE_H */