2 long (*get_next_ucode
)(void **mc
, long offset
);
3 long (*microcode_get_next_ucode
)(void **mc
, long offset
);
4 int (*get_matching_microcode
)(void *mc
, int cpu
);
5 int (*apply_microcode_check_cpu
)(int cpu
);
6 int (*microcode_sanity_check
)(void *mc
);
7 int (*cpu_request_microcode
)(int cpu
);
8 void (*collect_cpu_info
)(int cpu_num
);
9 void (*apply_microcode
)(int cpu
);
10 void (*microcode_fini_cpu
)(int cpu
);
11 void (*clear_patch
)(void *data
);
14 struct microcode_header_intel
{
22 unsigned int datasize
;
23 unsigned int totalsize
;
24 unsigned int reserved
[3];
27 struct microcode_intel
{
28 struct microcode_header_intel hdr
;
32 /* microcode format is extended from prescott processors */
33 struct extended_signature
{
39 struct extended_sigtable
{
42 unsigned int reserved
[3];
43 struct extended_signature sigs
[0];
46 struct equiv_cpu_entry
{
47 unsigned int installed_cpu
;
48 unsigned int fixed_errata_mask
;
49 unsigned int fixed_errata_compare
;
50 unsigned int equiv_cpu
;
53 struct microcode_header_amd
{
54 unsigned int data_code
;
55 unsigned int patch_id
;
56 unsigned char mc_patch_data_id
[2];
57 unsigned char mc_patch_data_len
;
58 unsigned char init_flag
;
59 unsigned int mc_patch_data_checksum
;
60 unsigned int nb_dev_id
;
61 unsigned int sb_dev_id
;
62 unsigned char processor_rev_id
[2];
63 unsigned char nb_rev_id
;
64 unsigned char sb_rev_id
;
65 unsigned char bios_api_rev
;
66 unsigned char reserved1
[3];
67 unsigned int match_reg
[8];
70 struct microcode_amd
{
71 struct microcode_header_amd hdr
;
75 struct ucode_cpu_info
{
81 struct microcode_intel
*mc_intel
;
82 struct microcode_amd
*mc_amd
;