|
|
@@ -499,15 +499,10 @@ static int check_online_cpus(void)
|
|
|
static enum ucode_state reload_for_cpu(int cpu)
|
|
|
{
|
|
|
struct ucode_cpu_info *uci = ucode_cpu_info + cpu;
|
|
|
- enum ucode_state ustate;
|
|
|
|
|
|
if (!uci->valid)
|
|
|
return UCODE_OK;
|
|
|
|
|
|
- ustate = microcode_ops->request_microcode_fw(cpu, µcode_pdev->dev, true);
|
|
|
- if (ustate != UCODE_OK)
|
|
|
- return ustate;
|
|
|
-
|
|
|
return apply_microcode_on_target(cpu);
|
|
|
}
|
|
|
|
|
|
@@ -515,11 +510,11 @@ static ssize_t reload_store(struct device *dev,
|
|
|
struct device_attribute *attr,
|
|
|
const char *buf, size_t size)
|
|
|
{
|
|
|
+ int cpu, bsp = boot_cpu_data.cpu_index;
|
|
|
enum ucode_state tmp_ret = UCODE_OK;
|
|
|
bool do_callback = false;
|
|
|
unsigned long val;
|
|
|
ssize_t ret = 0;
|
|
|
- int cpu;
|
|
|
|
|
|
ret = kstrtoul(buf, 0, &val);
|
|
|
if (ret)
|
|
|
@@ -528,6 +523,10 @@ static ssize_t reload_store(struct device *dev,
|
|
|
if (val != 1)
|
|
|
return size;
|
|
|
|
|
|
+ tmp_ret = microcode_ops->request_microcode_fw(bsp, µcode_pdev->dev, true);
|
|
|
+ if (tmp_ret != UCODE_OK)
|
|
|
+ return size;
|
|
|
+
|
|
|
get_online_cpus();
|
|
|
|
|
|
ret = check_online_cpus();
|