diff options
Diffstat (limited to 'usr')
-rw-r--r-- | usr/src/uts/i86pc/io/isa.c | 7 | ||||
-rw-r--r-- | usr/src/uts/i86pc/os/fakebop.c | 24 |
2 files changed, 27 insertions, 4 deletions
diff --git a/usr/src/uts/i86pc/io/isa.c b/usr/src/uts/i86pc/io/isa.c index c8888dded4..2eea45ebe5 100644 --- a/usr/src/uts/i86pc/io/isa.c +++ b/usr/src/uts/i86pc/io/isa.c @@ -684,7 +684,7 @@ is_pnpisa(dev_info_t *dip) /*ARGSUSED*/ static int isa_ctlops(dev_info_t *dip, dev_info_t *rdip, - ddi_ctl_enum_t ctlop, void *arg, void *result) + ddi_ctl_enum_t ctlop, void *arg, void *result) { int rn; struct ddi_parent_private_data *pdp; @@ -1245,7 +1245,7 @@ isa_enumerate(int reprogram) ndi_devi_alloc_sleep(isa_dip, "asy", (pnode_t)DEVI_SID_NODEID, &xdip); (void) ndi_prop_update_string(DDI_DEV_T_NONE, xdip, - "compatible", "PNP0500"); + "compatible", "pnpPNP,500"); /* This should be gotten from master file: */ (void) ndi_prop_update_string(DDI_DEV_T_NONE, xdip, "model", "Standard PC COM port"); @@ -1281,7 +1281,6 @@ isa_enumerate(int reprogram) * the serial ports there are in the dev_info tree. If any are missing, * this function will add them. */ - static void enumerate_BIOS_serial(dev_info_t *isa_dip) { @@ -1346,7 +1345,7 @@ enumerate_BIOS_serial(dev_info_t *isa_dip) ndi_devi_alloc_sleep(isa_dip, "asy", (pnode_t)DEVI_SID_NODEID, &xdip); (void) ndi_prop_update_string(DDI_DEV_T_NONE, xdip, - "compatible", "PNP0500"); + "compatible", "pnpPNP,500"); /* This should be gotten from master file: */ (void) ndi_prop_update_string(DDI_DEV_T_NONE, xdip, "model", "Standard PC COM port"); diff --git a/usr/src/uts/i86pc/os/fakebop.c b/usr/src/uts/i86pc/os/fakebop.c index eb91d4a56a..07bc24971f 100644 --- a/usr/src/uts/i86pc/os/fakebop.c +++ b/usr/src/uts/i86pc/os/fakebop.c @@ -1448,6 +1448,30 @@ process_boot_environment(struct boot_modules *benv) continue; } + /* + * The loader allows multiple console devices to be specified + * as a comma-separated list, but the kernel does not yet + * support multiple console devices. If a list is provided, + * ignore all but the first entry: + */ + if (strcmp(name, "console") == 0) { + char propval[BP_MAX_STRLEN]; + + for (uint32_t i = 0; i < BP_MAX_STRLEN; i++) { + propval[i] = value[i]; + if (value[i] == ' ' || + value[i] == ',' || + value[i] == '\0') { + propval[i] = '\0'; + break; + } + + if (i + 1 == BP_MAX_STRLEN) + propval[i] = '\0'; + } + bsetprops(name, propval); + continue; + } if (name_is_blacklisted(name) == B_TRUE) continue; |