Xen-Devel Archive mirror
 help / color / mirror / Atom feed
From: Fouad Hilly <fouad.hilly@cloud.com>
To: Xen-devel <xen-devel@lists.xenproject.org>
Cc: "Fouad Hilly" <fouad.hilly@cloud.com>,
	"Jan Beulich" <jbeulich@suse.com>,
	"Andrew Cooper" <andrew.cooper3@citrix.com>,
	"Roger Pau Monné" <roger.pau@citrix.com>
Subject: [PATCH v3 1/5] x86: Update x86 low level version check of microcode
Date: Tue, 30 Apr 2024 13:47:05 +0100	[thread overview]
Message-ID: <20240430124709.865183-2-fouad.hilly@cloud.com> (raw)
In-Reply-To: <20240430124709.865183-1-fouad.hilly@cloud.com>

Update microcode version check at Intel and AMD Level by:
Preventing the low level code from sending errors if the microcode
version is not a newer version. this is required to allow developers to do
ucode loading testing, including the introduction of Intel "min rev" field,
which requires an override mechanism for newer version checks. Even though
the check for newer is removed at this level, it still exists at higher
common level, where by default only newer version will be processed.
The option to override version check, will be added as part of this patch
series.
Other errors will be handled as required at this level.
Keep all the required code at low level that checks for signature and CPU compatibility

Signed-off-by: Fouad Hilly <fouad.hilly@cloud.com>
---
[v3]
1- Update intel code to return errors in case of invalid microcode only.
2- Update code comments.
3- Update commit message and its description

[v2]
Update message description to better describe the changes
 xen/arch/x86/cpu/microcode/amd.c   |  7 +++----
 xen/arch/x86/cpu/microcode/intel.c | 10 ++++------
 2 files changed, 7 insertions(+), 10 deletions(-)

diff --git a/xen/arch/x86/cpu/microcode/amd.c b/xen/arch/x86/cpu/microcode/amd.c
index 17e68697d5bf..316469ec06e4 100644
--- a/xen/arch/x86/cpu/microcode/amd.c
+++ b/xen/arch/x86/cpu/microcode/amd.c
@@ -384,11 +384,10 @@ static struct microcode_patch *cf_check cpu_request_microcode(
             }
 
             /*
-             * If the new ucode covers current CPU, compare ucodes and store the
-             * one with higher revision.
+             * If the microcode covers current CPU, then store its
+             * revision.
              */
-            if ( (microcode_fits(mc->patch) != MIS_UCODE) &&
-                 (!saved || (compare_header(mc->patch, saved) == NEW_UCODE)) )
+            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 96f34b336b21..de9115974d08 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 == MIS_UCODE )
         return -EINVAL;
 
     wbinvd();
@@ -355,11 +354,10 @@ static struct microcode_patch *cf_check cpu_request_microcode(
             break;
 
         /*
-         * If the new update covers current CPU, compare updates and store the
-         * one with higher revision.
+         * If the microcode covers current CPU, then store its
+         * revision.
          */
-        if ( (microcode_update_match(mc) != MIS_UCODE) &&
-             (!saved || compare_revisions(saved->rev, mc->rev) == NEW_UCODE) )
+        if ( (microcode_update_match(mc) != MIS_UCODE) && !saved )
             saved = mc;
 
         buf  += blob_size;
-- 
2.42.0



  reply	other threads:[~2024-04-30 12:47 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-04-30 12:47 [PATCH v3 0/5] x86/xen-ucode: Introduce --force option Fouad Hilly
2024-04-30 12:47 ` Fouad Hilly [this message]
2024-05-06  8:45   ` [PATCH v3 1/5] x86: Update x86 low level version check of microcode Jan Beulich
2024-05-09 14:33     ` Fouad Hilly
2024-04-30 12:47 ` [PATCH v3 2/5] x86: Refactor microcode_update() hypercall with flags Fouad Hilly
2024-05-06  9:14   ` Jan Beulich
2024-05-09 14:15     ` Fouad Hilly
2024-04-30 12:47 ` [PATCH v3 3/5] x86: Add usage() to print out usage message Fouad Hilly
2024-05-06  8:20   ` Jan Beulich
2024-05-09 13:59     ` Fouad Hilly
2024-04-30 12:47 ` [PATCH v3 4/5] x86: Use getopt to handle command line args Fouad Hilly
2024-05-06  8:21   ` Jan Beulich
2024-05-09 13:59     ` Fouad Hilly
2024-04-30 12:47 ` [PATCH v3 5/5] Add --force option to xen-ucode to override microcode version check Fouad Hilly
2024-05-06  9:39   ` Jan Beulich
2024-05-09 14:31     ` Fouad Hilly

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20240430124709.865183-2-fouad.hilly@cloud.com \
    --to=fouad.hilly@cloud.com \
    --cc=andrew.cooper3@citrix.com \
    --cc=jbeulich@suse.com \
    --cc=roger.pau@citrix.com \
    --cc=xen-devel@lists.xenproject.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).