From owner-freebsd-bugs@FreeBSD.ORG Thu May 8 17:00:24 2003 Return-Path: Delivered-To: freebsd-bugs@hub.freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 3764737B401 for ; Thu, 8 May 2003 17:00:24 -0700 (PDT) Received: from freefall.freebsd.org (freefall.freebsd.org [216.136.204.21]) by mx1.FreeBSD.org (Postfix) with ESMTP id B99C143F3F for ; Thu, 8 May 2003 17:00:23 -0700 (PDT) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (gnats@localhost [127.0.0.1]) by freefall.freebsd.org (8.12.9/8.12.9) with ESMTP id h4900NUp063037 for ; Thu, 8 May 2003 17:00:23 -0700 (PDT) (envelope-from gnats@freefall.freebsd.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.12.9/8.12.9/Submit) id h4900NC4063036; Thu, 8 May 2003 17:00:23 -0700 (PDT) Date: Thu, 8 May 2003 17:00:23 -0700 (PDT) Message-Id: <200305090000.h4900NC4063036@freefall.freebsd.org> To: freebsd-bugs@FreeBSD.org From: Bruce Evans Subject: Re: kern/51982: sio1: interrupt-level buffer overflows X-BeenThere: freebsd-bugs@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list Reply-To: Bruce Evans List-Id: Bug reports List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 09 May 2003 00:00:24 -0000 The following reply was made to PR kern/51982; it has been noted by GNATS. From: Bruce Evans To: Ian Freislich Cc: FreeBSD-gnats-submit@freebsd.org, freebsd-bugs@freebsd.org Subject: Re: kern/51982: sio1: interrupt-level buffer overflows Date: Fri, 9 May 2003 09:56:39 +1000 (EST) On Mon, 5 May 2003, Ian Freislich wrote: > >Description: > Transferring data at "high" speed 115200bps over the serial > line (even though the actual incoming line stream is about > 37000bps according to the modem LCD panel) results in the > following messages on the console at a rate of about 1 log > line every 10 to 15 seconds. > > These buffer overruns have gradually become more frequent > from about 3 lines and 24 overruns a day around September > 2002 (when I started running Current - 4.x does not suffer > from this) to the current flurry. -current has excessive interrupt latency caused by Giant locking almost everything. Try changing this line in sio.c: cp4ticks = speed / 10 / hz * 4; to something like: cp4ticks = speed / 10 / hz * 40; or if you use a non-default value for hz (default is 100): cp4ticks = speed / 10 / 100 * 40; The original version provides enough buffering for about 4 hardclock ticks (default 40 msec on i386's; much smaller on some other arches) of input at full speed. The third version provides 400 msec of buffering. Transient interrupt latency problems are supposed to be made harmless by using rts flow control. There is a PR (maybe from you?) about rts flow control apparently not working for one modem. The hz term was never quite right here. It assumes that the specified value of hz actually works to within 100% (interrupt latency no larger than 2/hz seconds for the lowest priority interrupt handler in the system). The large interrupt latency of -current shows worst-case latency even 2/100 seconds on a multi-GHz machine may be too much for low priority interrupt handlers to ask for. The relevant interrupt handler (siopoll()) became a low priority interrupt handler when it got locked by Giant. Bruce