Blob Blame History Raw
From 03f6e77635f4f311a2c7bdd581f6202fa52feef7 Mon Sep 17 00:00:00 2001
From: Valdimir Serbinenko <phcoder@gmail.com>
Date: Sun, 13 May 2012 18:23:02 +0000
Subject: [PATCH] Don't scan device tree if flag is set.

Don't scan device tree if GRUB_IEEE1275_FLAG_NO_TREE_SCANNING_FOR_DISKS is
set.

=== modified file 'grub-core/disk/ieee1275/ofdisk.c'
---
 grub-core/disk/ieee1275/ofdisk.c |    3 ++-
 grub-core/kern/ieee1275/cmain.c  |    3 +++
 include/grub/ieee1275/ieee1275.h |    2 ++
 3 files changed, 7 insertions(+), 1 deletion(-)

diff --git a/grub-core/disk/ieee1275/ofdisk.c b/grub-core/disk/ieee1275/ofdisk.c
index 56fed0a..6b734f7 100644
--- a/grub-core/disk/ieee1275/ofdisk.c
+++ b/grub-core/disk/ieee1275/ofdisk.c
@@ -159,7 +159,8 @@ scan (void)
   }
 
   grub_devalias_iterate (dev_iterate_alias);
-  grub_ieee1275_devices_iterate (dev_iterate);
+  if (!grub_ieee1275_test_flag (GRUB_IEEE1275_FLAG_NO_TREE_SCANNING_FOR_DISKS))
+    grub_ieee1275_devices_iterate (dev_iterate);
 }
 
 static int
diff --git a/grub-core/kern/ieee1275/cmain.c b/grub-core/kern/ieee1275/cmain.c
index 9e80757..e04ce5b 100644
--- a/grub-core/kern/ieee1275/cmain.c
+++ b/grub-core/kern/ieee1275/cmain.c
@@ -88,6 +88,9 @@ grub_ieee1275_find_options (void)
   if (rc >= 0 && !grub_strcmp (tmp, "Emulated PC"))
     is_qemu = 1;
 
+  if (rc >= 0 && grub_strncmp (tmp, "IBM", 3) == 0)
+    grub_ieee1275_set_flag (GRUB_IEEE1275_FLAG_NO_TREE_SCANNING_FOR_DISKS);
+
   if (grub_strncmp (tmp, "PowerMac", sizeof ("PowerMac") - 1) == 0)
     grub_ieee1275_set_flag (GRUB_IEEE1275_FLAG_BROKEN_ADDRESS_CELLS);
 
diff --git a/include/grub/ieee1275/ieee1275.h b/include/grub/ieee1275/ieee1275.h
index fb85db9..99a4bc1 100644
--- a/include/grub/ieee1275/ieee1275.h
+++ b/include/grub/ieee1275/ieee1275.h
@@ -116,6 +116,8 @@ enum grub_ieee1275_flag
      1 address cell is used on PowerMacs.
    */
   GRUB_IEEE1275_FLAG_BROKEN_ADDRESS_CELLS,
+
+  GRUB_IEEE1275_FLAG_NO_TREE_SCANNING_FOR_DISKS
 };
 
 extern int EXPORT_FUNC(grub_ieee1275_test_flag) (enum grub_ieee1275_flag flag);
-- 
1.7.10.1