From owner-freebsd-current@FreeBSD.ORG Sat Dec 27 13:22:03 2003 Return-Path: Delivered-To: freebsd-current@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id E53F716A4CE for ; Sat, 27 Dec 2003 13:22:03 -0800 (PST) Received: from harmony.village.org (rover.bsdimp.com [204.144.255.66]) by mx1.FreeBSD.org (Postfix) with ESMTP id C535643D49 for ; Sat, 27 Dec 2003 13:22:02 -0800 (PST) (envelope-from imp@bsdimp.com) Received: from localhost (warner@rover2.village.org [10.0.0.1]) by harmony.village.org (8.12.10/8.12.9) with ESMTP id hBRLLwAS001649; Sat, 27 Dec 2003 14:22:00 -0700 (MST) (envelope-from imp@bsdimp.com) Date: Sat, 27 Dec 2003 14:21:40 -0700 (MST) Message-Id: <20031227.142140.90125536.imp@bsdimp.com> To: dhee@myrealbox.com From: "M. Warner Losh" In-Reply-To: <1072558219.78a8a760dhee@myrealbox.com> References: <1072558219.78a8a760dhee@myrealbox.com> X-Mailer: Mew version 3.3 on Emacs 21.3 / Mule 5.0 (SAKAKI) Mime-Version: 1.0 Content-Type: Text/Plain; charset=us-ascii Content-Transfer-Encoding: 7bit cc: freebsd-current@freebsd.org Subject: Re: Serial driver problems with 5.2-current X-BeenThere: freebsd-current@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: Discussions about the use of FreeBSD-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 27 Dec 2003 21:22:04 -0000 Try this patch. It bails out more. Index: sio.c =================================================================== RCS file: /cache/ncvs/src/sys/dev/sio/sio.c,v retrieving revision 1.416 diff -u -r1.416 sio.c --- sio.c 17 Nov 2003 07:21:19 -0000 1.416 +++ sio.c 27 Dec 2003 21:16:50 -0000 @@ -1794,9 +1794,20 @@ } } line_status = inb(com->line_status_port); - + if (line_status == 0xff) { + printf("sio%d: spouting nonsense -- disabled.\n", + com->unit); + com->gone = 1; + return; + } /* input event? (check first to help avoid overruns) */ while (line_status & LSR_RCV_MASK) { + if (line_status == 0xff) { + printf("sio%d: linstatus bad -- disabled.\n", + com->unit); + com->gone = 1; + return; + } /* break/unnattached error bits or real input? */ if (!(line_status & LSR_RXRDY)) recv_data = 0;