x86-microcode: generic interface refactoring

This is the 1st patch in the series. Here the aim was to avoid any
significant changes, logically-wise.

So it's mainly about generic interface refactoring: e.g. make
microcode_{intel,amd}.c more about arch-specific details and less
about policies like make-sure-we-run-on-a-target-cpu
(no more set_cpus_allowed_ptr() here) and generic synchronization (no
more microcode_mutex here).

All in all, more line have been deleted than added.

4 files changed, 145 insertions(+), 198 deletions(-)

Signed-off-by: Dmitry Adamushko <dmitry.adamushko@gmail.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
This commit is contained in:
Dmitry Adamushko
2008-08-20 00:22:26 +02:00
committed by Ingo Molnar
parent 8343ef2437
commit d45de40934
4 changed files with 145 additions and 198 deletions

View File

@ -1,14 +1,18 @@
#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 microcode_ops {
long (*get_next_ucode)(void **mc, long offset);
long (*microcode_get_next_ucode)(void **mc, long offset);
int (*get_matching_microcode)(void *mc, int cpu);
int (*apply_microcode_check_cpu)(int cpu);
int (*microcode_sanity_check)(void *mc);
int (*cpu_request_microcode)(int cpu);
void (*collect_cpu_info)(int cpu_num);
int (*collect_cpu_info)(int cpu_num, struct cpu_signature *csig);
void (*apply_microcode)(int cpu);
void (*microcode_fini_cpu)(int cpu);
void (*clear_patch)(void *data);
@ -75,13 +79,21 @@ struct microcode_amd {
unsigned int mpb[0];
};
struct ucode_cpu_info {
int valid;
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 */