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:
parent
74aab8b0d7
commit
0fd89b46c5
@ -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;
|
||||
}
|
||||
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user