https://bugzilla.tianocore.org/show_bug.cgi?id=3338 states:

When an application client displays or otherwise makes the EUI-64
identifiers visible to a user, the values should be displayed in
hexadecimal format with byte 7 first (i.e., on the left) and byte
0 last regardless of the internal representation of the EUI-64.

Signed-off-by: Heinrich Schuchardt <[email protected]>
---
 lib/efi_loader/efi_device_path_to_text.c | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/lib/efi_loader/efi_device_path_to_text.c 
b/lib/efi_loader/efi_device_path_to_text.c
index 4d73954ef8..80ce03dec9 100644
--- a/lib/efi_loader/efi_device_path_to_text.c
+++ b/lib/efi_loader/efi_device_path_to_text.c
@@ -190,13 +190,14 @@ static char *dp_msging(char *s, struct efi_device_path 
*dp)
                struct efi_device_path_nvme *ndp =
                        (struct efi_device_path_nvme *)dp;
                u32 ns_id;
-               int i;
 
                memcpy(&ns_id, &ndp->ns_id, sizeof(ns_id));
                s += sprintf(s, "NVMe(0x%x,", ns_id);
-               for (i = 0; i < sizeof(ndp->eui64); ++i)
+
+               /* Display byte 7 first, byte 0 last */
+               for (int i = 0; i < 8; ++i)
                        s += sprintf(s, "%s%02x", i ? "-" : "",
-                                    ndp->eui64[i]);
+                                    ndp->eui64[i ^ 7]);
                s += sprintf(s, ")");
 
                break;
-- 
2.34.1

Reply via email to