diff --git a/xen/arch/x86/cpu/microcode/core.c b/xen/arch/x86/cpu/microcode/core.c index e2d8ab8b24..e38e5eb7ff 100644 --- a/xen/arch/x86/cpu/microcode/core.c +++ b/xen/arch/x86/cpu/microcode/core.c @@ -376,7 +376,9 @@ static int secondary_nmi_work(void) { cpumask_set_cpu(smp_processor_id(), &cpu_callin_map); - return wait_for_state(LOADING_EXIT) ? 0 : -EBUSY; + wait_for_state(LOADING_EXIT); + + return 0; } static int primary_thread_work(const struct microcode_patch *patch) @@ -386,7 +388,7 @@ static int primary_thread_work(const struct microcode_patch *patch) cpumask_set_cpu(smp_processor_id(), &cpu_callin_map); if ( !wait_for_state(LOADING_ENTER) ) - return -EBUSY; + return 0; ret = alternative_call(ucode_ops.apply_microcode, patch); if ( !ret ) @@ -427,7 +429,7 @@ static int cf_check microcode_nmi_callback( static int secondary_thread_fn(void) { if ( !wait_for_state(LOADING_CALLIN) ) - return -EBUSY; + return 0; self_nmi(); @@ -449,7 +451,7 @@ static int secondary_thread_fn(void) static int primary_thread_fn(const struct microcode_patch *patch) { if ( !wait_for_state(LOADING_CALLIN) ) - return -EBUSY; + return 0; if ( ucode_in_nmi ) {