From 00542efd15c5ee37fa927fbe9ba85a2bb377d406 Mon Sep 17 00:00:00 2001 From: cinap_lenrek Date: Sat, 19 Mar 2022 15:53:40 +0000 Subject: 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. --- sys/src/9/port/devuart.c | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) (limited to 'sys/src') diff --git a/sys/src/9/port/devuart.c b/sys/src/9/port/devuart.c index 928bfc9c5..b3291719f 100644 --- a/sys/src/9/port/devuart.c +++ b/sys/src/9/port/devuart.c @@ -240,9 +240,30 @@ uartreset(void) 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++; -- cgit v1.2.3