Skip to content

Commit

Permalink
x86/microcode/intel: Simplify load_ucode_intel_bsp()
Browse files Browse the repository at this point in the history
Don't compute start and end from start and size in order to compute size
again down the path in scan_microcode(). So pass size directly instead
and simplify a bunch. Shorten variable names and remove useless ones.

Signed-off-by: Borislav Petkov <bp@suse.de>
  • Loading branch information
Borislav Petkov committed Mar 2, 2015
1 parent 2d48bb9 commit 02f3517
Showing 1 changed file with 18 additions and 31 deletions.
49 changes: 18 additions & 31 deletions arch/x86/kernel/cpu/microcode/intel_early.c
Original file line number Diff line number Diff line change
Expand Up @@ -552,12 +552,10 @@ EXPORT_SYMBOL_GPL(save_mc_for_early);

static __initdata char ucode_name[] = "kernel/x86/microcode/GenuineIntel.bin";
static __init enum ucode_state
scan_microcode(unsigned long start, unsigned long end,
struct mc_saved_data *mc_saved_data,
unsigned long *mc_saved_in_initrd,
struct ucode_cpu_info *uci)
scan_microcode(unsigned long start, unsigned long size,
struct mc_saved_data *mc_saved_data,
unsigned long *mc_saved_in_initrd, struct ucode_cpu_info *uci)
{
unsigned int size = end - start + 1;
struct cpio_data cd;
long offset = 0;
#ifdef CONFIG_X86_32
Expand All @@ -573,7 +571,6 @@ scan_microcode(unsigned long start, unsigned long end,
if (!cd.data)
return UCODE_ERROR;


return get_matching_model_microcode(0, start, cd.data, cd.size,
mc_saved_data, mc_saved_in_initrd,
uci);
Expand Down Expand Up @@ -721,50 +718,40 @@ int __init save_microcode_in_initrd_intel(void)
static void __init
_load_ucode_intel_bsp(struct mc_saved_data *mc_saved_data,
unsigned long *mc_saved_in_initrd,
unsigned long initrd_start_early,
unsigned long initrd_end_early)
unsigned long start, unsigned long size)
{
struct ucode_cpu_info uci;
enum ucode_state ret;

collect_cpu_info_early(&uci);
scan_microcode(initrd_start_early, initrd_end_early, mc_saved_data,
mc_saved_in_initrd, &uci);
scan_microcode(start, size, mc_saved_data, mc_saved_in_initrd, &uci);

ret = load_microcode(mc_saved_data, mc_saved_in_initrd,
initrd_start_early, &uci);
ret = load_microcode(mc_saved_data, mc_saved_in_initrd, start, &uci);
if (ret != UCODE_OK)
return;

apply_microcode_early(&uci, true);
}

void __init
load_ucode_intel_bsp(void)
void __init load_ucode_intel_bsp(void)
{
u64 ramdisk_image, ramdisk_size;
unsigned long initrd_start_early, initrd_end_early;
u64 start, size;
#ifdef CONFIG_X86_32
struct boot_params *boot_params_p;
struct boot_params *p;

boot_params_p = (struct boot_params *)__pa_nodebug(&boot_params);
ramdisk_image = boot_params_p->hdr.ramdisk_image;
ramdisk_size = boot_params_p->hdr.ramdisk_size;
initrd_start_early = ramdisk_image;
initrd_end_early = initrd_start_early + ramdisk_size;
p = (struct boot_params *)__pa_nodebug(&boot_params);
start = p->hdr.ramdisk_image;
size = p->hdr.ramdisk_size;

_load_ucode_intel_bsp(
(struct mc_saved_data *)__pa_nodebug(&mc_saved_data),
(unsigned long *)__pa_nodebug(&mc_saved_in_initrd),
initrd_start_early, initrd_end_early);
(struct mc_saved_data *)__pa_nodebug(&mc_saved_data),
(unsigned long *)__pa_nodebug(&mc_saved_in_initrd),
start, size);
#else
ramdisk_image = boot_params.hdr.ramdisk_image;
ramdisk_size = boot_params.hdr.ramdisk_size;
initrd_start_early = ramdisk_image + PAGE_OFFSET;
initrd_end_early = initrd_start_early + ramdisk_size;
start = boot_params.hdr.ramdisk_image + PAGE_OFFSET;
size = boot_params.hdr.ramdisk_size;

_load_ucode_intel_bsp(&mc_saved_data, mc_saved_in_initrd,
initrd_start_early, initrd_end_early);
_load_ucode_intel_bsp(&mc_saved_data, mc_saved_in_initrd, start, size);
#endif
}

Expand Down

0 comments on commit 02f3517

Please sign in to comment.