Print this page
12220 loader multi-console shouldn't override bootenv.rc
*** 99,109 ****
bootops_t bootop; /* simple bootops we'll pass on to kernel */
struct bsys_mem bm;
/*
* Boot info from "glue" code in low memory. xbootp is used by:
! * do_bop_phys_alloc(), do_bsys_alloc() and boot_prop_finish().
*/
static struct xboot_info *xbootp;
static uintptr_t next_virt; /* next available virtual address */
static paddr_t next_phys; /* next available physical address from dboot */
static paddr_t high_phys = -(paddr_t)1; /* last used physical address */
--- 99,109 ----
bootops_t bootop; /* simple bootops we'll pass on to kernel */
struct bsys_mem bm;
/*
* Boot info from "glue" code in low memory. xbootp is used by:
! * do_bop_phys_alloc(), do_bsys_alloc() and read_bootenvrc().
*/
static struct xboot_info *xbootp;
static uintptr_t next_virt; /* next available virtual address */
static paddr_t next_phys; /* next available physical address from dboot */
static paddr_t high_phys = -(paddr_t)1; /* last used physical address */
*** 668,678 ****
* setprop name "value"
*
* we do single character I/O since this is really just looking at memory
*/
void
! boot_prop_finish(void)
{
int fd;
char *line;
int c;
int bytes_read;
--- 668,678 ----
* setprop name "value"
*
* we do single character I/O since this is really just looking at memory
*/
void
! read_bootenvrc(void)
{
int fd;
char *line;
int c;
int bytes_read;
*** 776,796 ****
strlen(boot_args) > 0)
continue;
/*
* If a property was explicitly set on the command line
! * it will override a setting in bootenv.rc
*/
! if (do_bsys_getproplen(NULL, name) >= 0)
continue;
bsetprops(name, value);
}
done:
if (fd >= 0)
(void) BRD_CLOSE(bfs_ops, fd);
/*
* Check if we have to limit the boot time allocator
*/
if (do_bsys_getproplen(NULL, "physmem") != -1 &&
do_bsys_getprop(NULL, "physmem", line) >= 0 &&
--- 776,811 ----
strlen(boot_args) > 0)
continue;
/*
* If a property was explicitly set on the command line
! * it will override a setting in bootenv.rc. We make an
! * exception for a property from the bootloader such as:
! *
! * console="text,ttya,ttyb,ttyc,ttyd"
! *
! * In such a case, picking the first value here (as
! * lookup_console_devices() does) is at best a guess; if
! * bootenv.rc has a value, it's probably better.
*/
! if (strcmp(name, "console") == 0) {
! char propval[BP_MAX_STRLEN] = "";
!
! if (do_bsys_getprop(NULL, name, propval) == -1 ||
! strchr(propval, ',') != NULL)
! bsetprops(name, value);
continue;
+ }
+ if (do_bsys_getproplen(NULL, name) == -1)
bsetprops(name, value);
}
done:
if (fd >= 0)
(void) BRD_CLOSE(bfs_ops, fd);
+
/*
* Check if we have to limit the boot time allocator
*/
if (do_bsys_getproplen(NULL, "physmem") != -1 &&
do_bsys_getprop(NULL, "physmem", line) >= 0 &&
*** 841,861 ****
}
} else {
v_len = 0;
}
consoledev[v_len] = 0;
! bcons_init2(inputdev, outputdev, consoledev);
} else {
/*
* Ensure console property exists
* If not create it as "hypervisor"
*/
v_len = do_bsys_getproplen(NULL, "console");
if (v_len < 0)
bsetprops("console", "hypervisor");
inputdev = outputdev = consoledev = "hypervisor";
! bcons_init2(inputdev, outputdev, consoledev);
}
if (find_boot_prop("prom_debug") || kbm_debug)
boot_prop_display(line);
}
--- 856,876 ----
}
} else {
v_len = 0;
}
consoledev[v_len] = 0;
! bcons_post_bootenvrc(inputdev, outputdev, consoledev);
} else {
/*
* Ensure console property exists
* If not create it as "hypervisor"
*/
v_len = do_bsys_getproplen(NULL, "console");
if (v_len < 0)
bsetprops("console", "hypervisor");
inputdev = outputdev = consoledev = "hypervisor";
! bcons_post_bootenvrc(inputdev, outputdev, consoledev);
}
if (find_boot_prop("prom_debug") || kbm_debug)
boot_prop_display(line);
}