Blame SOURCES/0057-mdadm-added-support-for-Intel-Alderlake-RST-on-VMD-p.patch

c3a0e9
From ea7a02a3294aae223e1329aed5da7f4aa3ac05c5 Mon Sep 17 00:00:00 2001
c3a0e9
From: =?UTF-8?q?Old=C5=99ich=20Jedli=C4=8Dka?= <oldium.pro@gmail.com>
c3a0e9
Date: Wed, 31 Aug 2022 19:57:29 +0200
c3a0e9
Subject: [PATCH 57/63] mdadm: added support for Intel Alderlake RST on VMD
c3a0e9
 platform
c3a0e9
MIME-Version: 1.0
c3a0e9
Content-Type: text/plain; charset=UTF-8
c3a0e9
Content-Transfer-Encoding: 8bit
c3a0e9
c3a0e9
Alderlake RST on VMD uses RstVmdV UEFI variable name, so detect it.
c3a0e9
c3a0e9
Signed-off-by: Oldřich Jedlička <oldium.pro@gmail.com>
c3a0e9
Reviewed-by: Kinga Tanska <kinga.tanska@linux.intel.com>
c3a0e9
Signed-off-by: Jes Sorensen <jsorensen@fb.com>
c3a0e9
---
c3a0e9
 platform-intel.c | 18 +++++++++++++-----
c3a0e9
 1 file changed, 13 insertions(+), 5 deletions(-)
c3a0e9
c3a0e9
diff --git a/platform-intel.c b/platform-intel.c
c3a0e9
index 5a8729e7..757f0b1b 100644
c3a0e9
--- a/platform-intel.c
c3a0e9
+++ b/platform-intel.c
c3a0e9
@@ -512,7 +512,8 @@ static const struct imsm_orom *find_imsm_hba_orom(struct sys_dev *hba)
c3a0e9
 #define AHCI_PROP "RstSataV"
c3a0e9
 #define AHCI_SSATA_PROP "RstsSatV"
c3a0e9
 #define AHCI_TSATA_PROP "RsttSatV"
c3a0e9
-#define VMD_PROP "RstUefiV"
c3a0e9
+#define VROC_VMD_PROP "RstUefiV"
c3a0e9
+#define RST_VMD_PROP "RstVmdV"
c3a0e9
 
c3a0e9
 #define VENDOR_GUID \
c3a0e9
 	EFI_GUID(0x193dfefa, 0xa445, 0x4302, 0x99, 0xd8, 0xef, 0x3a, 0xad, 0x1a, 0x04, 0xc6)
c3a0e9
@@ -605,6 +606,7 @@ const struct imsm_orom *find_imsm_efi(struct sys_dev *hba)
c3a0e9
 	struct orom_entry *ret;
c3a0e9
 	static const char * const sata_efivars[] = {AHCI_PROP, AHCI_SSATA_PROP,
c3a0e9
 						    AHCI_TSATA_PROP};
c3a0e9
+	static const char * const vmd_efivars[] = {VROC_VMD_PROP, RST_VMD_PROP};
c3a0e9
 	unsigned long i;
c3a0e9
 
c3a0e9
 	if (check_env("IMSM_TEST_AHCI_EFI") || check_env("IMSM_TEST_SCU_EFI"))
c3a0e9
@@ -636,10 +638,16 @@ const struct imsm_orom *find_imsm_efi(struct sys_dev *hba)
c3a0e9
 
c3a0e9
 		break;
c3a0e9
 	case SYS_DEV_VMD:
c3a0e9
-		if (!read_efi_variable(&orom, sizeof(orom), VMD_PROP,
c3a0e9
-				       VENDOR_GUID))
c3a0e9
-			break;
c3a0e9
-		return NULL;
c3a0e9
+		for (i = 0; i < ARRAY_SIZE(vmd_efivars); i++) {
c3a0e9
+			if (!read_efi_variable(&orom, sizeof(orom),
c3a0e9
+						vmd_efivars[i], VENDOR_GUID))
c3a0e9
+				break;
c3a0e9
+		}
c3a0e9
+
c3a0e9
+		if (i == ARRAY_SIZE(vmd_efivars))
c3a0e9
+			return NULL;
c3a0e9
+
c3a0e9
+		break;
c3a0e9
 	default:
c3a0e9
 		return NULL;
c3a0e9
 	}
c3a0e9
-- 
c3a0e9
2.38.1
c3a0e9