NetBSD-Bugs archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: kern/55286: Kernel messages cause loss of serial console input
The following reply was made to PR kern/55286; it has been noted by GNATS.
From: Martin Husemann <martin%duskware.de@localhost>
To: gnats-bugs%netbsd.org@localhost
Cc:
Subject: Re: kern/55286: Kernel messages cause loss of serial console input
Date: Mon, 25 May 2020 14:56:07 +0200
Here is a patch that uses readahead in comcnputc only while we are still
cold - compile tested only, but should fix the problem as well.
Martin
Index: com.c
===================================================================
RCS file: /cvsroot/src/sys/dev/ic/com.c,v
retrieving revision 1.358
diff -u -p -r1.358 com.c
--- com.c 1 May 2020 07:27:51 -0000 1.358
+++ com.c 25 May 2020 12:48:20 -0000
@@ -159,7 +159,7 @@ int com_to_tiocm(struct com_softc *);
void com_iflush(struct com_softc *);
int com_common_getc(dev_t, struct com_regs *);
-static void com_common_putc(dev_t, struct com_regs *, int);
+static void com_common_putc(dev_t, struct com_regs *, int, int);
int cominit(struct com_regs *, int, int, int, tcflag_t);
@@ -2399,12 +2399,12 @@ com_common_getc(dev_t dev, struct com_re
}
static void
-com_common_putc(dev_t dev, struct com_regs *regsp, int c)
+com_common_putc(dev_t dev, struct com_regs *regsp, int c, int with_readahead)
{
int s = splserial();
int cin, stat, timo;
- if (com_readaheadcount < MAX_READAHEAD
+ if (with_readahead && com_readaheadcount < MAX_READAHEAD
&& ISSET(stat = CSR_READ_1(regsp, COM_REG_LSR), LSR_RXRDY)) {
int cn_trapped = 0;
cin = CSR_READ_1(regsp, COM_REG_RXDATA);
@@ -2572,7 +2572,7 @@ void
comcnputc(dev_t dev, int c)
{
- com_common_putc(dev, &comcons_info.regs, c);
+ com_common_putc(dev, &comcons_info.regs, c, cold);
}
void
@@ -2641,7 +2641,7 @@ void
com_kgdb_putc(void *arg, int c)
{
- com_common_putc(NODEV, &comkgdbregs, c);
+ com_common_putc(NODEV, &comkgdbregs, c, 0);
}
#endif /* KGDB */
Home |
Main Index |
Thread Index |
Old Index