lkml.org 
[lkml]   [2017]   [Jan]   [17]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 12/13] x86/microcode/AMD: Simplify saving from initrd
    Date
    From: Borislav Petkov <bp@suse.de>

    No need to use the previously stashed info in the container - simply go
    ahead and parse the initrd once more. It simplifies and streamlines the
    code a whole lot.

    Signed-off-by: Borislav Petkov <bp@suse.de>
    ---
    arch/x86/kernel/cpu/microcode/amd.c | 43 +++++++++++--------------------------
    1 file changed, 13 insertions(+), 30 deletions(-)

    diff --git a/arch/x86/kernel/cpu/microcode/amd.c b/arch/x86/kernel/cpu/microcode/amd.c
    index f1a61f181c9a..1ee33793c74a 100644
    --- a/arch/x86/kernel/cpu/microcode/amd.c
    +++ b/arch/x86/kernel/cpu/microcode/amd.c
    @@ -379,43 +379,26 @@ load_microcode_amd(int cpu, u8 family, const u8 *data, size_t size);

    int __init save_microcode_in_initrd_amd(unsigned int cpuid_1_eax)
    {
    + struct cont_desc desc;
    enum ucode_state ret;
    - int retval = 0;
    -
    - if (!cont.data) {
    - if (IS_ENABLED(CONFIG_X86_32) && (cont.size != -1)) {
    - struct cpio_data cp;
    -
    - cp = find_microcode_in_initrd(ucode_path, false);
    - if (!(cp.data && cp.size)) {
    - cont.size = -1;
    - return -EINVAL;
    - }
    + struct cpio_data cp;

    - cont.cpuid_1_eax = cpuid_1_eax;
    + cp = find_microcode_in_initrd(ucode_path, false);
    + if (!(cp.data && cp.size))
    + return -EINVAL;

    - scan_containers(cp.data, cp.size, &cont);
    - if (!cont.eq_id) {
    - cont.size = -1;
    - return -EINVAL;
    - }
    + desc.cpuid_1_eax = cpuid_1_eax;

    - } else
    - return -EINVAL;
    - }
    + scan_containers(cp.data, cp.size, &desc);
    + if (!desc.eq_id)
    + return -EINVAL;

    - ret = load_microcode_amd(smp_processor_id(), x86_family(cpuid_1_eax), cont.data, cont.size);
    + ret = load_microcode_amd(smp_processor_id(), x86_family(cpuid_1_eax),
    + desc.data, desc.size);
    if (ret != UCODE_OK)
    - retval = -EINVAL;
    -
    - /*
    - * This will be freed any msec now, stash patches for the current
    - * family and switch to patch cache for cpu hotplug, etc later.
    - */
    - cont.data = NULL;
    - cont.size = 0;
    + return -EINVAL;

    - return retval;
    + return 0;
    }

    void reload_ucode_amd(void)
    --
    2.11.0
    \
     
     \ /
      Last update: 2017-01-17 18:41    [W:4.213 / U:0.212 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site