1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- #ifndef ASM_X86__MICROCODE_H
- #define ASM_X86__MICROCODE_H
- extern int microcode_init(void *opaque, struct module *module);
- extern void microcode_exit(void);
- struct cpu_signature;
- struct device;
- struct microcode_ops {
- int (*request_microcode_user) (int cpu, const void __user *buf, size_t size);
- int (*request_microcode_fw) (int cpu, struct device *device);
- void (*apply_microcode) (int cpu);
- int (*collect_cpu_info) (int cpu, struct cpu_signature *csig);
- void (*microcode_fini_cpu) (int cpu);
- };
- struct microcode_header_intel {
- unsigned int hdrver;
- unsigned int rev;
- unsigned int date;
- unsigned int sig;
- unsigned int cksum;
- unsigned int ldrver;
- unsigned int pf;
- unsigned int datasize;
- unsigned int totalsize;
- unsigned int reserved[3];
- };
- struct microcode_intel {
- struct microcode_header_intel hdr;
- unsigned int bits[0];
- };
- /* microcode format is extended from prescott processors */
- struct extended_signature {
- unsigned int sig;
- unsigned int pf;
- unsigned int cksum;
- };
- struct extended_sigtable {
- unsigned int count;
- unsigned int cksum;
- unsigned int reserved[3];
- struct extended_signature sigs[0];
- };
- struct equiv_cpu_entry {
- unsigned int installed_cpu;
- unsigned int fixed_errata_mask;
- unsigned int fixed_errata_compare;
- unsigned int equiv_cpu;
- };
- struct microcode_header_amd {
- unsigned int data_code;
- unsigned int patch_id;
- unsigned char mc_patch_data_id[2];
- unsigned char mc_patch_data_len;
- unsigned char init_flag;
- unsigned int mc_patch_data_checksum;
- unsigned int nb_dev_id;
- unsigned int sb_dev_id;
- unsigned char processor_rev_id[2];
- unsigned char nb_rev_id;
- unsigned char sb_rev_id;
- unsigned char bios_api_rev;
- unsigned char reserved1[3];
- unsigned int match_reg[8];
- };
- struct microcode_amd {
- struct microcode_header_amd hdr;
- unsigned int mpb[0];
- };
- struct cpu_signature {
- unsigned int sig;
- unsigned int pf;
- unsigned int rev;
- };
- struct ucode_cpu_info {
- struct cpu_signature cpu_sig;
- int valid;
- union {
- struct microcode_intel *mc_intel;
- struct microcode_amd *mc_amd;
- void *valid_mc;
- } mc;
- };
- extern struct ucode_cpu_info ucode_cpu_info[];
- #endif /* ASM_X86__MICROCODE_H */
|