Don't log "unexpected" events on never-opened devices. Events left

over from the probe are now expected for incompatible UARTs that
deliver IRQs as a strobe (low) instead of a level (high).

Discard events on going-away devices too.  Endless loops may have
been possible when an active pccard was removed.
This commit is contained in:
bde 1998-06-16 11:05:59 +00:00
parent 74aab8b0d7
commit 0fd89b46c5
3 changed files with 12 additions and 33 deletions

View File

@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* from: @(#)com.c 7.5 (Berkeley) 5/16/91
* $Id: sio.c,v 1.205 1998/06/03 12:30:10 bde Exp $
* $Id: sio.c,v 1.206 1998/06/07 17:10:58 dfr Exp $
*/
#include "opt_comconsole.h"
@ -1887,14 +1887,11 @@ repeat:
com = com_addr(unit);
if (com == NULL)
continue;
if (com->gone)
continue;
tp = com->tp;
if (tp == NULL) {
if (tp == NULL || com->gone) {
/*
* XXX forget any events related to closed devices
* (actually never opened devices) so that we don't
* loop.
* Discard any events related to never-opened or
* going-away devices.
*/
disable_intr();
incc = com->iptr - com->ibuf;
@ -1905,10 +1902,6 @@ repeat:
}
com_events -= incc;
enable_intr();
if (incc != 0)
log(LOG_DEBUG,
"sio%d: %d events for device with no tp\n",
unit, incc);
continue;
}

View File

@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* from: @(#)com.c 7.5 (Berkeley) 5/16/91
* $Id: sio.c,v 1.205 1998/06/03 12:30:10 bde Exp $
* $Id: sio.c,v 1.206 1998/06/07 17:10:58 dfr Exp $
*/
#include "opt_comconsole.h"
@ -1887,14 +1887,11 @@ repeat:
com = com_addr(unit);
if (com == NULL)
continue;
if (com->gone)
continue;
tp = com->tp;
if (tp == NULL) {
if (tp == NULL || com->gone) {
/*
* XXX forget any events related to closed devices
* (actually never opened devices) so that we don't
* loop.
* Discard any events related to never-opened or
* going-away devices.
*/
disable_intr();
incc = com->iptr - com->ibuf;
@ -1905,10 +1902,6 @@ repeat:
}
com_events -= incc;
enable_intr();
if (incc != 0)
log(LOG_DEBUG,
"sio%d: %d events for device with no tp\n",
unit, incc);
continue;
}

View File

@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* from: @(#)com.c 7.5 (Berkeley) 5/16/91
* $Id: sio.c,v 1.205 1998/06/03 12:30:10 bde Exp $
* $Id: sio.c,v 1.206 1998/06/07 17:10:58 dfr Exp $
*/
#include "opt_comconsole.h"
@ -1887,14 +1887,11 @@ repeat:
com = com_addr(unit);
if (com == NULL)
continue;
if (com->gone)
continue;
tp = com->tp;
if (tp == NULL) {
if (tp == NULL || com->gone) {
/*
* XXX forget any events related to closed devices
* (actually never opened devices) so that we don't
* loop.
* Discard any events related to never-opened or
* going-away devices.
*/
disable_intr();
incc = com->iptr - com->ibuf;
@ -1905,10 +1902,6 @@ repeat:
}
com_events -= incc;
enable_intr();
if (incc != 0)
log(LOG_DEBUG,
"sio%d: %d events for device with no tp\n",
unit, incc);
continue;
}