char buffer[1];
};
-static void __microcode_fini_cpu(int cpu)
+static void __microcode_fini_cpu(unsigned int cpu)
{
struct ucode_cpu_info *uci = &per_cpu(ucode_cpu_info, cpu);
memset(uci, 0, sizeof(*uci));
}
-static void microcode_fini_cpu(int cpu)
+static void microcode_fini_cpu(unsigned int cpu)
{
spin_lock(µcode_mutex);
__microcode_fini_cpu(cpu);
spin_unlock(µcode_mutex);
}
-int microcode_resume_cpu(int cpu)
+int microcode_resume_cpu(unsigned int cpu)
{
int err;
struct ucode_cpu_info *uci = &per_cpu(ucode_cpu_info, cpu);
static DEFINE_SPINLOCK(microcode_update_lock);
/* See comment in start_update() for cases when this routine fails */
-static int collect_cpu_info(int cpu, struct cpu_signature *csig)
+static int collect_cpu_info(unsigned int cpu, struct cpu_signature *csig)
{
struct cpuinfo_x86 *c = &cpu_data[cpu];
return 0;
}
-static bool_t microcode_fits(const struct microcode_amd *mc_amd, int cpu)
+static bool_t microcode_fits(const struct microcode_amd *mc_amd,
+ unsigned int cpu)
{
struct ucode_cpu_info *uci = &per_cpu(ucode_cpu_info, cpu);
const struct microcode_header_amd *mc_header = mc_amd->mpb;
return 1;
}
-static int apply_microcode(int cpu)
+static int apply_microcode(unsigned int cpu)
{
unsigned long flags;
struct ucode_cpu_info *uci = &per_cpu(ucode_cpu_info, cpu);
return 0;
}
-static int cpu_request_microcode(int cpu, const void *buf, size_t bufsize)
+static int cpu_request_microcode(unsigned int cpu, const void *buf,
+ size_t bufsize)
{
struct microcode_amd *mc_amd, *mc_old;
size_t offset = 0;
return error;
}
-static int microcode_resume_match(int cpu, const void *mc)
+static int microcode_resume_match(unsigned int cpu, const void *mc)
{
struct ucode_cpu_info *uci = &per_cpu(ucode_cpu_info, cpu);
struct microcode_amd *mc_amd = uci->mc.mc_amd;
/* serialize access to the physical write to MSR 0x79 */
static DEFINE_SPINLOCK(microcode_update_lock);
-static int collect_cpu_info(int cpu_num, struct cpu_signature *csig)
+static int collect_cpu_info(unsigned int cpu_num, struct cpu_signature *csig)
{
struct cpuinfo_x86 *c = &cpu_data[cpu_num];
uint64_t msr_content;
}
static inline int microcode_update_match(
- int cpu_num, const struct microcode_header_intel *mc_header,
+ unsigned int cpu_num, const struct microcode_header_intel *mc_header,
int sig, int pf)
{
struct ucode_cpu_info *uci = &per_cpu(ucode_cpu_info, cpu_num);
* return 1 - found update
* return < 0 - error
*/
-static int get_matching_microcode(const void *mc, int cpu)
+static int get_matching_microcode(const void *mc, unsigned int cpu)
{
struct ucode_cpu_info *uci = &per_cpu(ucode_cpu_info, cpu);
const struct microcode_header_intel *mc_header = mc;
return 1;
}
-static int apply_microcode(int cpu)
+static int apply_microcode(unsigned int cpu)
{
unsigned long flags;
uint64_t msr_content;
unsigned int val[2];
- int cpu_num = raw_smp_processor_id();
+ unsigned int cpu_num = raw_smp_processor_id();
struct ucode_cpu_info *uci = &per_cpu(ucode_cpu_info, cpu_num);
/* We should bind the task to the CPU */
return offset + total_size;
}
-static int cpu_request_microcode(int cpu, const void *buf, size_t size)
+static int cpu_request_microcode(unsigned int cpu, const void *buf,
+ size_t size)
{
long offset = 0;
int error = 0;
return error;
}
-static int microcode_resume_match(int cpu, const void *mc)
+static int microcode_resume_match(unsigned int cpu, const void *mc)
{
return get_matching_microcode(mc, cpu);
}
struct ucode_cpu_info;
struct microcode_ops {
- int (*microcode_resume_match)(int cpu, const void *mc);
- int (*cpu_request_microcode)(int cpu, const void *buf, size_t size);
- int (*collect_cpu_info)(int cpu, struct cpu_signature *csig);
- int (*apply_microcode)(int cpu);
+ int (*microcode_resume_match)(unsigned int cpu, const void *mc);
+ int (*cpu_request_microcode)(unsigned int cpu, const void *buf,
+ size_t size);
+ int (*collect_cpu_info)(unsigned int cpu, struct cpu_signature *csig);
+ int (*apply_microcode)(unsigned int cpu);
int (*start_update)(void);
};
void microcode_set_module(unsigned int);
int microcode_update(XEN_GUEST_HANDLE_PARAM(const_void), unsigned long len);
-int microcode_resume_cpu(int cpu);
+int microcode_resume_cpu(unsigned int cpu);
enum get_cpu_vendor {
gcv_host_early,