svn commit: r307388 - head/sys/powerpc/powerpc

Justin Hibbits jhibbits at FreeBSD.org
Sun Oct 16 04:22:06 UTC 2016


Author: jhibbits
Date: Sun Oct 16 04:22:04 2016
New Revision: 307388
URL: https://svnweb.freebsd.org/changeset/base/307388

Log:
  Fix booting on systems that use loader(8) (most of them).
  
  r306065/r306067 introduced ofw_parse_bootargs(), setting environment variables
  from Open Firmware's /chosen/bootargs property.  On systems booting with
  loader(8) (meaning, most systems), the initial static kenv is created with no
  extra space, causing kern_setenv() to panic.  Since these already have the
  environment set directly, there is no need to parse bootargs anyway.
  
  Found by:	swills

Modified:
  head/sys/powerpc/powerpc/machdep.c

Modified: head/sys/powerpc/powerpc/machdep.c
==============================================================================
--- head/sys/powerpc/powerpc/machdep.c	Sun Oct 16 02:55:52 2016	(r307387)
+++ head/sys/powerpc/powerpc/machdep.c	Sun Oct 16 04:22:04 2016	(r307388)
@@ -238,6 +238,7 @@ powerpc_init(vm_offset_t fdt, vm_offset_
 	vm_offset_t	startkernel, endkernel;
 	void		*kmdp;
         char		*env;
+        bool		ofw_bootargs = false;
 #ifdef DDB
 	vm_offset_t ksym_start;
 	vm_offset_t ksym_end;
@@ -295,6 +296,7 @@ powerpc_init(vm_offset_t fdt, vm_offset_
 		bzero(__bss_start, _end - __bss_start);
 #endif
 		init_static_kenv(init_kenv, sizeof(init_kenv));
+		ofw_bootargs = true;
 	}
 	/* Store boot environment state */
 	OF_initial_setup((void *)fdt, NULL, (int (*)(void *))ofentry);
@@ -337,7 +339,8 @@ powerpc_init(vm_offset_t fdt, vm_offset_
 
 	OF_bootstrap();
 
-	ofw_parse_bootargs();
+	if (ofw_bootargs)
+		ofw_parse_bootargs();
 
 	/*
 	 * Initialize the console before printing anything.


More information about the svn-src-all mailing list