70 lines
2.1 KiB
Diff
70 lines
2.1 KiB
Diff
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||
|
From: Ashok Raj <ashok.raj@intel.com>
|
||
|
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 <ashok.raj@intel.com>
|
||
|
---
|
||
|
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 <asm/msr.h>
|
||
|
|
||
|
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
|
||
|
|