Remove microcode version check at Intel and AMD Level.
Microcode version check will be at higher and common level.
Signed-off-by: Fouad Hilly <fouad.hilly@cloud.com>
---
xen/arch/x86/cpu/microcode/amd.c | 8 ++------
xen/arch/x86/cpu/microcode/intel.c | 11 +++--------
2 files changed, 5 insertions(+), 14 deletions(-)
diff --git a/xen/arch/x86/cpu/microcode/amd.c b/xen/arch/x86/cpu/microcode/amd.c
index 75fc84e445ce..4f805f662701 100644
--- a/xen/arch/x86/cpu/microcode/amd.c
+++ b/xen/arch/x86/cpu/microcode/amd.c
@@ -383,12 +383,8 @@ static struct microcode_patch *cf_check cpu_request_microcode(
goto skip;
}
- /*
- * If the new ucode covers current CPU, compare ucodes and store the
- * one with higher revision.
- */
- if ( (microcode_fits(mc->patch) != MIS_UCODE) &&
- (!saved || (compare_header(mc->patch, saved) == NEW_UCODE)) )
+ /* If the provided ucode covers current CPU, then store its revision. */
+ if ( (microcode_fits(mc->patch) != MIS_UCODE) && !saved )
{
saved = mc->patch;
saved_size = mc->len;
diff --git a/xen/arch/x86/cpu/microcode/intel.c b/xen/arch/x86/cpu/microcode/intel.c
index 060c529a6e5d..e65c02a57987 100644
--- a/xen/arch/x86/cpu/microcode/intel.c
+++ b/xen/arch/x86/cpu/microcode/intel.c
@@ -294,8 +294,7 @@ static int cf_check apply_microcode(const struct microcode_patch *patch)
result = microcode_update_match(patch);
- if ( result != NEW_UCODE &&
- !(opt_ucode_allow_same && result == SAME_UCODE) )
+ if ( result != NEW_UCODE && result != SAME_UCODE )
return -EINVAL;
wbinvd();
@@ -354,12 +353,8 @@ static struct microcode_patch *cf_check cpu_request_microcode(
if ( error )
break;
- /*
- * If the new update covers current CPU, compare updates and store the
- * one with higher revision.
- */
- if ( (microcode_update_match(mc) != MIS_UCODE) &&
- (!saved || compare_revisions(saved->rev, mc->rev) == NEW_UCODE) )
+ /* If the provided ucode covers current CPU, then store its revision. */
+ if ( (microcode_update_match(mc) != MIS_UCODE) && !saved )
saved = mc;
buf += blob_size;
--
2.42.0
Microcode version check will be at higher and common level.
Signed-off-by: Fouad Hilly <fouad.hilly@cloud.com>
---
xen/arch/x86/cpu/microcode/amd.c | 8 ++------
xen/arch/x86/cpu/microcode/intel.c | 11 +++--------
2 files changed, 5 insertions(+), 14 deletions(-)
diff --git a/xen/arch/x86/cpu/microcode/amd.c b/xen/arch/x86/cpu/microcode/amd.c
index 75fc84e445ce..4f805f662701 100644
--- a/xen/arch/x86/cpu/microcode/amd.c
+++ b/xen/arch/x86/cpu/microcode/amd.c
@@ -383,12 +383,8 @@ static struct microcode_patch *cf_check cpu_request_microcode(
goto skip;
}
- /*
- * If the new ucode covers current CPU, compare ucodes and store the
- * one with higher revision.
- */
- if ( (microcode_fits(mc->patch) != MIS_UCODE) &&
- (!saved || (compare_header(mc->patch, saved) == NEW_UCODE)) )
+ /* If the provided ucode covers current CPU, then store its revision. */
+ if ( (microcode_fits(mc->patch) != MIS_UCODE) && !saved )
{
saved = mc->patch;
saved_size = mc->len;
diff --git a/xen/arch/x86/cpu/microcode/intel.c b/xen/arch/x86/cpu/microcode/intel.c
index 060c529a6e5d..e65c02a57987 100644
--- a/xen/arch/x86/cpu/microcode/intel.c
+++ b/xen/arch/x86/cpu/microcode/intel.c
@@ -294,8 +294,7 @@ static int cf_check apply_microcode(const struct microcode_patch *patch)
result = microcode_update_match(patch);
- if ( result != NEW_UCODE &&
- !(opt_ucode_allow_same && result == SAME_UCODE) )
+ if ( result != NEW_UCODE && result != SAME_UCODE )
return -EINVAL;
wbinvd();
@@ -354,12 +353,8 @@ static struct microcode_patch *cf_check cpu_request_microcode(
if ( error )
break;
- /*
- * If the new update covers current CPU, compare updates and store the
- * one with higher revision.
- */
- if ( (microcode_update_match(mc) != MIS_UCODE) &&
- (!saved || compare_revisions(saved->rev, mc->rev) == NEW_UCODE) )
+ /* If the provided ucode covers current CPU, then store its revision. */
+ if ( (microcode_update_match(mc) != MIS_UCODE) && !saved )
saved = mc;
buf += blob_size;
--
2.42.0