Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752589AbaBZFL3 (ORCPT ); Wed, 26 Feb 2014 00:11:29 -0500 Received: from mail-wg0-f48.google.com ([74.125.82.48]:64407 "EHLO mail-wg0-f48.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750824AbaBZFLX (ORCPT ); Wed, 26 Feb 2014 00:11:23 -0500 MIME-Version: 1.0 In-Reply-To: <1393072281-5814-1-git-send-email-peter@hurleysoftware.com> References: <1393072281-5814-1-git-send-email-peter@hurleysoftware.com> Date: Wed, 26 Feb 2014 13:11:21 +0800 Message-ID: Subject: Re: [PATCH] tty: Fix low_latency BUG From: Feng Tang To: Peter Hurley Cc: Greg Kroah-Hartman , Jiri Slaby , linux-serial@vger.kernel.org, Beat Bolli , Pavel Roskin , Linux Kernel Mailing List , Jiri Kosina , David Sterba , Felipe Balbi , Grant Edwards , Stanislaw Gruszka , Hal Murray , Alan Cox , stable@vger.kernel.org Content-Type: text/plain; charset=ISO-8859-1 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Peter, 2014-02-22 20:31 GMT+08:00 Peter Hurley : > The user-settable knob, low_latency, has been the source of > several BUG reports which stem from flush_to_ldisc() running > in interrupt context. Since 3.12, which added several sleeping > locks (termios_rwsem and buf->lock) to the input processing path, > the frequency of these BUG reports has increased. > > Note that changes in 3.12 did not introduce this regression; > sleeping locks were first added to the input processing path > with the removal of the BKL from N_TTY in commit > a88a69c91256418c5907c2f1f8a0ec0a36f9e6cc, > 'n_tty: Fix loss of echoed characters and remove bkl from n_tty' > and later in commit 38db89799bdf11625a831c5af33938dcb11908b6, > 'tty: throttling race fix'. Since those changes, executing > flush_to_ldisc() in interrupt_context (ie, low_latency set), is unsafe. > > However, since most devices do not validate if the low_latency > setting is appropriate for the context (process or interrupt) in > which they receive data, some reports are due to misconfiguration. > Further, serial dma devices for which dma fails, resort to > interrupt receiving as a backup without resetting low_latency. > > Historically, low_latency was used to force wake-up the reading > process rather than wait for the next scheduler tick. The > effect was to trim multiple milliseconds of latency from > when the process would receive new data. > > Recent tests [1] have shown that the reading process now receives > data with only 10's of microseconds latency without low_latency set. The 10's of miscroseconds is ok for 115200 bps like device, but it may hurt the high speed device like Bluetooth which runs at 3M/4M bps or higher. More and more smartphones are using uart as the Bluetooth data interface due to its low-pin, low-power feature, and many of them are using HZ=100 kernel, I'm afraid this added delay may cause some problem. Thanks, Feng -- 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/