From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Ashok Raj Date: Sat, 20 Jul 2019 14:14:47 +0000 Subject: [PATCH] x86/microcode: echo 2 > reload to force load ucode. If you want to force a ucode load even if the version doesn't change try this To just do a normal upgrade where new rev > current rev Signed-off-by: Ashok Raj --- arch/x86/kernel/cpu/microcode/core.c | 8 +++++++- arch/x86/kernel/cpu/microcode/intel.c | 2 +- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/arch/x86/kernel/cpu/microcode/core.c b/arch/x86/kernel/cpu/microcode/core.c index d44fe3e5c028..2b0e98ec22bc 100644 --- a/arch/x86/kernel/cpu/microcode/core.c +++ b/arch/x86/kernel/cpu/microcode/core.c @@ -615,18 +615,23 @@ static ssize_t reload_store(struct device *dev, struct device_attribute *attr, const char *buf, size_t size) { + extern bool force_ucode_load; enum ucode_state tmp_ret = UCODE_OK; int bsp = boot_cpu_data.cpu_index; unsigned long val; + bool orig_cmd_line = force_ucode_load; ssize_t ret = 0; ret = kstrtoul(buf, 0, &val); if (ret) return ret; - if (val != 1) + if (!val || val > 2) return size; + if (val == 2) + force_ucode_load = true; + tmp_ret = microcode_ops->request_microcode_fw(bsp, µcode_pdev->dev, true); if (tmp_ret != UCODE_NEW) return size; @@ -642,6 +647,7 @@ static ssize_t reload_store(struct device *dev, mutex_unlock(µcode_mutex); put: + force_ucode_load = orig_cmd_line; put_online_cpus(); if (ret >= 0) diff --git a/arch/x86/kernel/cpu/microcode/intel.c b/arch/x86/kernel/cpu/microcode/intel.c index 9e85d785b226..5c67ac023f4a 100644 --- a/arch/x86/kernel/cpu/microcode/intel.c +++ b/arch/x86/kernel/cpu/microcode/intel.c @@ -39,7 +39,7 @@ #include static const char ucode_path[] = "kernel/x86/microcode/GenuineIntel.bin"; -static bool force_ucode_load = false; +bool force_ucode_load = false; /* Current microcode patch used in early patching on the APs. */ static struct microcode_intel *intel_ucode_patch; -- https://clearlinux.org