Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 21 Feb 2019 02:31:14 +0000 (UTC)
From:      Kyle Evans <kevans@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-11@freebsd.org
Subject:   svn commit: r344404 - stable/11/stand/efi/loader
Message-ID:  <201902210231.x1L2VEAd078840@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: kevans
Date: Thu Feb 21 02:31:14 2019
New Revision: 344404
URL: https://svnweb.freebsd.org/changeset/base/344404

Log:
  MFC r336463: If rootdev is set, use it as currdev.
  
  Setting rootdev in the enviornment should specify things
  completely. If it is set, then have it override everything else.

Modified:
  stable/11/stand/efi/loader/main.c
Directory Properties:
  stable/11/   (props changed)

Modified: stable/11/stand/efi/loader/main.c
==============================================================================
--- stable/11/stand/efi/loader/main.c	Thu Feb 21 02:28:04 2019	(r344403)
+++ stable/11/stand/efi/loader/main.c	Thu Feb 21 02:31:14 2019	(r344404)
@@ -166,16 +166,21 @@ out:
 }
 
 static void
+set_currdev(const char *devname)
+{
+
+	env_setenv("currdev", EV_VOLATILE, devname, efi_setcurrdev, env_nounset);
+	env_setenv("loaddev", EV_VOLATILE, devname, env_noset, env_nounset);
+}
+
+static void
 set_currdev_devdesc(struct devdesc *currdev)
 {
 	const char *devname;
 
 	devname = efi_fmtdev(currdev);
-
 	printf("Setting currdev to %s\n", devname);
-
-	env_setenv("currdev", EV_VOLATILE, devname, efi_setcurrdev, env_nounset);
-	env_setenv("loaddev", EV_VOLATILE, devname, env_noset, env_nounset);
+	set_currdev(devname);
 }
 
 static void
@@ -279,7 +284,15 @@ find_currdev(EFI_LOADED_IMAGE *img)
 	struct devsw *dev;
 	int unit;
 	uint64_t extra;
+	char *rootdev;
 
+	rootdev = getenv("rootdev");
+	if (rootdev != NULL) {
+		printf("Setting currdev to configured rootdev %s\n", rootdev);
+		set_currdev(rootdev);
+		return (0);
+	}
+
 #ifdef EFI_ZFS_BOOT
 	/*
 	 * Did efi_zfs_probe() detect the boot pool? If so, use the zpool
@@ -616,7 +629,7 @@ main(int argc, CHAR16 *argv[])
 	 * set the env based on it.
 	 */
 	boot_howto_to_env(howto);
-	
+
 	if (efi_copy_init()) {
 		printf("failed to allocate staging area\n");
 		return (EFI_BUFFER_TOO_SMALL);



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201902210231.x1L2VEAd078840>