diff options
Diffstat (limited to 'arch/x86/kernel/cpu/microcode')
| -rw-r--r-- | arch/x86/kernel/cpu/microcode/core.c | 15 | 
1 files changed, 7 insertions, 8 deletions
| diff --git a/arch/x86/kernel/cpu/microcode/core.c b/arch/x86/kernel/cpu/microcode/core.c index 7019d4b2df0c..baec68b7e010 100644 --- a/arch/x86/kernel/cpu/microcode/core.c +++ b/arch/x86/kernel/cpu/microcode/core.c @@ -545,8 +545,7 @@ static int __wait_for_cpus(atomic_t *t, long long timeout)  /*   * Returns:   * < 0 - on error - *   0 - no update done - *   1 - microcode was updated + *   0 - success (no update done or microcode was updated)   */  static int __reload_late(void *info)  { @@ -573,11 +572,11 @@ static int __reload_late(void *info)  	else  		goto wait_for_siblings; -	if (err > UCODE_NFOUND) { -		pr_warn("Error reloading microcode on CPU %d\n", cpu); +	if (err >= UCODE_NFOUND) { +		if (err == UCODE_ERROR) +			pr_warn("Error reloading microcode on CPU %d\n", cpu); +  		ret = -1; -	} else if (err == UCODE_UPDATED || err == UCODE_OK) { -		ret = 1;  	}  wait_for_siblings: @@ -608,7 +607,7 @@ static int microcode_reload_late(void)  	atomic_set(&late_cpus_out, 0);  	ret = stop_machine_cpuslocked(__reload_late, NULL, cpu_online_mask); -	if (ret > 0) +	if (ret == 0)  		microcode_check();  	pr_info("Reload completed, microcode revision: 0x%x\n", boot_cpu_data.microcode); @@ -649,7 +648,7 @@ static ssize_t reload_store(struct device *dev,  put:  	put_online_cpus(); -	if (ret >= 0) +	if (ret == 0)  		ret = size;  	return ret; |