grub-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH 04/15] sparc64: Use the correct disk name in core.img


From: Eric Snowberg
Subject: [PATCH 04/15] sparc64: Use the correct disk name in core.img
Date: Wed, 29 Jun 2016 14:43:17 -0700

Use the correct disk name and escape it properly in core.img for SPARC.
Prior to this patch, search.fs_uuid was missing from the core.img.
On SPARC, the core.img is very small and doesn't contain everything
needed to boot. Therefore many modules contained within:
/boot/grub/sparc64-ieee1275 are needed.

This patch will prevent walking the entire device tree every time
and possibly using the wrong disk.

This has been tested on T1 thru T7 hardware

I didn't change the behavior for other IEEE1275 platforms, but they
may benefit from this patch if they were added within the switch
statement.

Signed-off-by: Eric Snowberg <address@hidden>
---
 include/grub/emu/getroot.h |    2 ++
 util/grub-install.c        |   13 +++++++++++++
 util/probe.c               |    2 +-
 3 files changed, 16 insertions(+), 1 deletions(-)

diff --git a/include/grub/emu/getroot.h b/include/grub/emu/getroot.h
index 73fa2d3..4f04c7d 100644
--- a/include/grub/emu/getroot.h
+++ b/include/grub/emu/getroot.h
@@ -100,5 +100,7 @@ grub_util_guess_baremetal_drive (const char *orig_path);
 void
 grub_util_fprint_full_disk_name (FILE *f,
                                 const char *drive, grub_device_t dev);
+char *
+escape_of_path (const char *orig_path);
 
 #endif /* ! GRUB_UTIL_GETROOT_HEADER */
diff --git a/util/grub-install.c b/util/grub-install.c
index 7394739..f1ddf1c 100644
--- a/util/grub-install.c
+++ b/util/grub-install.c
@@ -1347,6 +1347,7 @@ main (int argc, char *argv[])
          || grub_drives[1]
          || (!install_drive
              && platform != GRUB_INSTALL_PLATFORM_POWERPC_IEEE1275)
+         || (platform == GRUB_INSTALL_PLATFORM_SPARC64_IEEE1275)
          || (install_drive && !is_same_disk (grub_drives[0], install_drive))
          || !have_bootdev (platform))
        {
@@ -1438,6 +1439,18 @@ main (int argc, char *argv[])
                    g = grub_util_guess_efi_drive (*curdev);
                    break;
                  case GRUB_INSTALL_PLATFORM_SPARC64_IEEE1275:
+                   {
+                     char *dname;
+                     const char *ofpath = grub_util_devname_to_ofpath 
(*curdev);
+                     g = xasprintf ("ieee1275/%s", ofpath);
+                     dname = escape_of_path (g);
+                     fprintf (load_cfg_f, "%s ", dname);
+                     free (dname);
+                     free (g);
+                     g = NULL;
+                     break;
+                   }
+
                  case GRUB_INSTALL_PLATFORM_POWERPC_IEEE1275:
                  case GRUB_INSTALL_PLATFORM_I386_IEEE1275:
                    {
diff --git a/util/probe.c b/util/probe.c
index fa7ca34..880cb5c 100644
--- a/util/probe.c
+++ b/util/probe.c
@@ -44,7 +44,7 @@
 /* Since OF path names can have "," characters in them, and GRUB
    internally uses "," to indicate partitions (unlike OF which uses
    ":" for this purpose) we escape such commas.  */
-static char *
+char *
 escape_of_path (const char *orig_path)
 {
   char *new_path, *d, c;
-- 
1.7.1




reply via email to

[Prev in Thread] Current Thread [Next in Thread]