ref: 2200f997c1798e54ca1b130b21a2b2a1917eb190
parent: c0c9e6dc618cb80c1409f103ef18add777f9fdeb
author: cinap_lenrek <cinap_lenrek@felloff.net>
date: Sat Mar 19 11:53:40 EDT 2022
devuart: allow serial console on late detected uarts pci uarts are detected late and usually do not contain the console= parameter logic. for these, we can just enable them when devuart is reset, and replay the boot messages once enabled. this is usefull as it allows us to use these uarts for kernel debugging in interrupt context.
--- a/sys/src/9/port/devuart.c
+++ b/sys/src/9/port/devuart.c
@@ -240,9 +240,30 @@
uart[i] = p;
p->dev = i;
+
+ /*
+ * enable serial console for uarts detected
+ * late during boot (like pci card).
+ */
+ if(consuart == nil){
+ char *s, *options;
+
+ if((s = getconf("console")) != nil
+ && strtoul(s, &options, 0) == i
+ && options > s){
+ p->console = 1;
+ if(*options != '\0')
+ uartctl(p, options);
+ }
+ }
+
if(p->console || p->special){
if(uartenable(p) != nil){
if(p->console){
+ if(consuart == nil){
+ consuart = p;
+ uartputs(kmesg.buf, kmesg.n);
+ }
serialoq = p->oq;
}
p->opens++;
--
⑨