]> git.ipfire.org Git - thirdparty/mdadm.git/commitdiff
mdadm: added support for Intel Alderlake RST on VMD platform
authorOldřich Jedlička <oldium.pro@gmail.com>
Wed, 31 Aug 2022 17:57:29 +0000 (19:57 +0200)
committerJes Sorensen <jsorensen@fb.com>
Wed, 14 Sep 2022 13:46:06 +0000 (09:46 -0400)
Alderlake RST on VMD uses RstVmdV UEFI variable name, so detect it.

Signed-off-by: Oldřich Jedlička <oldium.pro@gmail.com>
Reviewed-by: Kinga Tanska <kinga.tanska@linux.intel.com>
Signed-off-by: Jes Sorensen <jsorensen@fb.com>
platform-intel.c

index 5a8729e7c4ae43be03fcc9d269a8792bd22d3cdf..757f0b1b8f4da6239883042167d3d2f27dd960f4 100644 (file)
@@ -512,7 +512,8 @@ static const struct imsm_orom *find_imsm_hba_orom(struct sys_dev *hba)
 #define AHCI_PROP "RstSataV"
 #define AHCI_SSATA_PROP "RstsSatV"
 #define AHCI_TSATA_PROP "RsttSatV"
-#define VMD_PROP "RstUefiV"
+#define VROC_VMD_PROP "RstUefiV"
+#define RST_VMD_PROP "RstVmdV"
 
 #define VENDOR_GUID \
        EFI_GUID(0x193dfefa, 0xa445, 0x4302, 0x99, 0xd8, 0xef, 0x3a, 0xad, 0x1a, 0x04, 0xc6)
@@ -605,6 +606,7 @@ const struct imsm_orom *find_imsm_efi(struct sys_dev *hba)
        struct orom_entry *ret;
        static const char * const sata_efivars[] = {AHCI_PROP, AHCI_SSATA_PROP,
                                                    AHCI_TSATA_PROP};
+       static const char * const vmd_efivars[] = {VROC_VMD_PROP, RST_VMD_PROP};
        unsigned long i;
 
        if (check_env("IMSM_TEST_AHCI_EFI") || check_env("IMSM_TEST_SCU_EFI"))
@@ -636,10 +638,16 @@ const struct imsm_orom *find_imsm_efi(struct sys_dev *hba)
 
                break;
        case SYS_DEV_VMD:
-               if (!read_efi_variable(&orom, sizeof(orom), VMD_PROP,
-                                      VENDOR_GUID))
-                       break;
-               return NULL;
+               for (i = 0; i < ARRAY_SIZE(vmd_efivars); i++) {
+                       if (!read_efi_variable(&orom, sizeof(orom),
+                                               vmd_efivars[i], VENDOR_GUID))
+                               break;
+               }
+
+               if (i == ARRAY_SIZE(vmd_efivars))
+                       return NULL;
+
+               break;
        default:
                return NULL;
        }