[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
- [PATCH 00/15] Add missing SPARC support, Eric Snowberg, 2016/06/29
- [PATCH 01/15] sparc64: fix OF path names for sun4v systems, Eric Snowberg, 2016/06/29
- [PATCH 02/15] sparc64: Add blocklist GPT support for SPARC, Eric Snowberg, 2016/06/29
- [PATCH 03/15] grub-install: fix memory leak, Eric Snowberg, 2016/06/29
- [PATCH 04/15] sparc64: Use the correct disk name in core.img,
Eric Snowberg <=
- [PATCH 05/15] ieee1275: fix segfault in grub-ofpathname, Eric Snowberg, 2016/06/29
- [PATCH 06/15] ieee1275: add nvme support within ofpath, Eric Snowberg, 2016/06/29
- [PATCH 07/15] ofdisk: memory corruption fix, Eric Snowberg, 2016/06/29
- [PATCH 09/15] ieee1275: ofdisk - don't continue to query block-size after we have it, Eric Snowberg, 2016/06/29
- [PATCH 08/15] ofdisk: move open logic, Eric Snowberg, 2016/06/29
- [PATCH 11/15] sparc64: boot performance improvements, Eric Snowberg, 2016/06/29
- [PATCH 10/15] ofdisk: refactor open logic, Eric Snowberg, 2016/06/29
- [PATCH 12/15] ofdisk: only add aliases that exist, Eric Snowberg, 2016/06/29
- [PATCH 14/15] parser: Remove escape from the state transitions, Eric Snowberg, 2016/06/29
- [PATCH 13/15] sparc64: add disks that don't have a devalias to the device list, Eric Snowberg, 2016/06/29