> Date: Tue, 11 Apr 2017 16:25:57 +0200 (CEST)
> From: Mark Kettenis <[email protected]>
> 
> > Date: Tue, 11 Apr 2017 14:12:38 +0000
> > From: Visa Hankala <[email protected]>
> > 
> > On Tue, Apr 11, 2017 at 03:51:51PM +0200, Mark Kettenis wrote:
> > > +                 if (ISSET(sc->sc_hwflags, COM_HW_CONSOLE)) {
> > > +                         if (db_console)
> > > +                                 Debugger();
> > > +                         continue;
> > > +                 }
> > 
> > Should these be inside #ifdef DDB like in com(4)?
> 
> Yes

Se here is an updated diff; thanks for catching this.

ok?


Index: arch/arm64/dev/pluart.c
===================================================================
RCS file: /cvs/src/sys/arch/arm64/dev/pluart.c,v
retrieving revision 1.2
diff -u -p -r1.2 pluart.c
--- arch/arm64/dev/pluart.c     20 Jan 2017 08:03:21 -0000      1.2
+++ arch/arm64/dev/pluart.c     11 Apr 2017 14:54:22 -0000
@@ -256,6 +256,7 @@ pluartattach(struct device *parent, stru
                cn_tab->cn_dev = makedev(maj, sc->sc_dev.dv_unit);
 
                printf(": console");
+               SET(sc->sc_hwflags, COM_HW_CONSOLE);
        }
 
        timeout_set(&sc->sc_diag_tmo, pluart_diag, sc);
@@ -304,8 +305,18 @@ pluart_intr(void *arg)
 
        p = sc->sc_ibufp;
 
-       while(ISSET(bus_space_read_4(iot, ioh, UART_FR), UART_FR_RXFF)) {
-               c = bus_space_read_1(iot, ioh, UART_DR);
+       while (ISSET(bus_space_read_4(iot, ioh, UART_FR), UART_FR_RXFF)) {
+               c = bus_space_read_2(iot, ioh, UART_DR);
+               if (c & UART_DR_BE) {
+#ifdef DDB
+                       if (ISSET(sc->sc_hwflags, COM_HW_CONSOLE)) {
+                               if (db_console)
+                                       Debugger();
+                               continue;
+                       }
+#endif
+                       c = 0;
+               }
                if (p >= sc->sc_ibufend) {
                        sc->sc_floods++;
                        if (sc->sc_errors++ == 0)
Index: arch/armv7/dev/pluart.c
===================================================================
RCS file: /cvs/src/sys/arch/armv7/dev/pluart.c,v
retrieving revision 1.1
diff -u -p -r1.1 pluart.c
--- arch/armv7/dev/pluart.c     31 Aug 2016 16:19:40 -0000      1.1
+++ arch/armv7/dev/pluart.c     11 Apr 2017 14:54:22 -0000
@@ -260,6 +260,7 @@ pluartattach(struct device *parent, stru
                cn_tab->cn_dev = makedev(maj, sc->sc_dev.dv_unit);
 
                printf(": console");
+               SET(sc->sc_hwflags, COM_HW_CONSOLE);
        }
 
        timeout_set(&sc->sc_diag_tmo, pluart_diag, sc);
@@ -308,8 +309,18 @@ pluart_intr(void *arg)
 
        p = sc->sc_ibufp;
 
-       while(ISSET(bus_space_read_4(iot, ioh, UART_FR), UART_FR_RXFF)) {
-               c = bus_space_read_1(iot, ioh, UART_DR);
+       while (ISSET(bus_space_read_4(iot, ioh, UART_FR), UART_FR_RXFF)) {
+               c = bus_space_read_2(iot, ioh, UART_DR);
+               if (c & UART_DR_BE) {
+#ifdef DDB
+                       if (ISSET(sc->sc_hwflags, COM_HW_CONSOLE)) {
+                               if (db_console)
+                                       Debugger();
+                               continue;
+                       }
+#endif
+                       c = 0;
+               }
                if (p >= sc->sc_ibufend) {
                        sc->sc_floods++;
                        if (sc->sc_errors++ == 0)

Reply via email to