So far we matched the XBOOTLDR partition only on MBR-partitioned media.
Let's do the same for GPT too.

Signed-off-by: Ahmad Fatoum <a.fat...@pengutronix.de>
---
 common/blspec.c | 25 +++++++++++++------------
 1 file changed, 13 insertions(+), 12 deletions(-)

diff --git a/common/blspec.c b/common/blspec.c
index cf9f973acd21..adc3fb2e2ea2 100644
--- a/common/blspec.c
+++ b/common/blspec.c
@@ -16,6 +16,7 @@
 #include <linux/stat.h>
 #include <linux/list.h>
 #include <linux/err.h>
+#include <uapi/spec/dps.h>
 #include <boot.h>
 
 #include <bootscan.h>
@@ -508,22 +509,22 @@ static int blspec_scan_disk(struct bootscanner *scanner,
                struct cdev *match = NULL;
 
                /*
-                * If the OS is installed on a disk with MBR disk label, and a
-                * partition with the MBR type id of 0xEA already exists it
-                * should be used as $BOOT
+                * If the OS is installed on a disk with:
+                *
+                * - MBR disk label, and a partition with the MBR type id of 
0xEA
+                *   already exists
+                *
+                * - GPT disk label, and a partition with the GPT type GUID of
+                *   bc13c2ff-59e6-4262-a352-b275fd6f7172 already exists
+                *
+                * it should be used as $BOOT
                 */
                if (cdev_is_mbr_partitioned(cdev)) {
                        if (partcdev->dos_partition_type == 0xea)
                                match = partcdev;
-               } else {
-                       /*
-                        * If the OS is installed on a disk with GPT disk 
label, and a
-                        * partition with the GPT type GUID of
-                        * bc13c2ff-59e6-4262-a352-b275fd6f7172 already exists, 
it
-                        * should be used as $BOOT.
-                        *
-                        * Not yet implemented
-                        */
+               } else if (cdev_is_gpt_partitioned(cdev)) {
+                       if (guid_equal(&partcdev->typeuuid, &SD_GPT_XBOOTLDR))
+                               match = partcdev;
                }
 
                if (!match)
-- 
2.39.5


Reply via email to