From owner-cvs-src@FreeBSD.ORG Tue Sep 16 20:11:33 2003 Return-Path: Delivered-To: cvs-src@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id C438516A4B3; Tue, 16 Sep 2003 20:11:33 -0700 (PDT) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id 5296943F75; Tue, 16 Sep 2003 20:11:33 -0700 (PDT) (envelope-from marcel@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.12.9/8.12.9) with ESMTP id h8H3BXXJ004092; Tue, 16 Sep 2003 20:11:33 -0700 (PDT) (envelope-from marcel@repoman.freebsd.org) Received: (from marcel@localhost) by repoman.freebsd.org (8.12.9/8.12.9/Submit) id h8H3BXPw004091; Tue, 16 Sep 2003 20:11:33 -0700 (PDT) (envelope-from marcel) Message-Id: <200309170311.h8H3BXPw004091@repoman.freebsd.org> From: Marcel Moolenaar Date: Tue, 16 Sep 2003 20:11:32 -0700 (PDT) To: src-committers@FreeBSD.org, cvs-src@FreeBSD.org, cvs-all@FreeBSD.org X-FreeBSD-CVS-Branch: HEAD Subject: cvs commit: src/sys/dev/uart uart_core.c uart_dev_i8251.c uart_dev_ns8250.c uart_dev_z8530.c X-BeenThere: cvs-src@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: CVS commit messages for the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 17 Sep 2003 03:11:33 -0000 marcel 2003/09/16 20:11:32 PDT FreeBSD src repository Modified files: sys/dev/uart uart_core.c uart_dev_i8251.c uart_dev_ns8250.c uart_dev_z8530.c Log: In uart_intr() loop until all interrupts have been handled. Previously an UART interface could get stuck when a new interrupt condition arose while servicing a previous interrupt. Since an interrupt was already pending, no new interrupt would be triggered. Avoid infinite recursion by flushing the Rx FIFO and marking an overrun condition when we could not move the data from the Rx FIFO to the receive buffer in toto. Failure to flush the Rx FIFO would leave the Rx ready condition pending. Note that the SAB 82532 already did this due to the nature of the chip. Revision Changes Path 1.4 +15 -11 src/sys/dev/uart/uart_core.c 1.3 +12 -3 src/sys/dev/uart/uart_dev_i8251.c 1.5 +12 -3 src/sys/dev/uart/uart_dev_ns8250.c 1.4 +18 -2 src/sys/dev/uart/uart_dev_z8530.c