Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S269360AbUI3VZj (ORCPT ); Thu, 30 Sep 2004 17:25:39 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S269531AbUI3VZj (ORCPT ); Thu, 30 Sep 2004 17:25:39 -0400 Received: from h-68-165-86-241.dllatx37.covad.net ([68.165.86.241]:2677 "EHLO sol.microgate.com") by vger.kernel.org with ESMTP id S269360AbUI3VZ2 (ORCPT ); Thu, 30 Sep 2004 17:25:28 -0400 Subject: Re: Serial driver hangs From: Paul Fulghum To: Alan Cox Cc: Russell King , Roland =?ISO-8859-1?Q?Ca=DFebohm?= , Linux Kernel Mailing List In-Reply-To: <1096575030.19487.50.camel@localhost.localdomain> References: <200409281734.38781.roland.cassebohm@visionsystems.de> <200409291607.07493.roland.cassebohm@visionsystems.de> <1096467951.1964.22.camel@deimos.microgate.com> <200409301816.44649.roland.cassebohm@visionsystems.de> <1096571398.1938.112.camel@deimos.microgate.com> <1096569273.19487.46.camel@localhost.localdomain> <1096573912.1938.136.camel@deimos.microgate.com> <20040930205922.F5892@flint.arm.linux.org.uk> <1096574739.1938.142.camel@deimos.microgate.com> <1096576200.1938.154.camel@deimos.microgate.com> <1096575030.19487.50.camel@localhost.localdomain> Content-Type: text/plain Message-Id: <1096579503.1938.166.camel@deimos.microgate.com> Mime-Version: 1.0 X-Mailer: Ximian Evolution 1.4.6 Date: Thu, 30 Sep 2004 16:25:04 -0500 Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1089 Lines: 33 On Thu, 2004-09-30 at 15:10, Alan Cox wrote: > On Iau, 2004-09-30 at 21:30, Paul Fulghum wrote: > > tty->flip.work.func and tty->flip.tqueue.routine > > are set to flush_to_ldisc() > > flush_to_ldisc was ok, then someone added the low latency > flag. In the current 2.6.9rc3 patch flush_to_ldisc honours > TTY_DONT_FLIP also In the cases I described the low latency flag does not come into play because flush_to_ldisc() is called directly instead of through tty_flip_buffer_push(). TTY_DONT_FLIP is only set in read_chan(). If read_chan() is not running, TTY_DONT_FLIP is not set and does not prevent buffers from flipping if the ISR calls flush_to_ldisc() directly while ldisc->receive_buf() is running. The answer seems to be: don't call flush_to_ldisc directly like the current serial driver does. -- Paul Fulghum paulkf@microgate.com - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/