Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752003AbbEDIdw (ORCPT ); Mon, 4 May 2015 04:33:52 -0400 Received: from metis.ext.pengutronix.de ([92.198.50.35]:49539 "EHLO metis.ext.pengutronix.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750798AbbEDIdo (ORCPT ); Mon, 4 May 2015 04:33:44 -0400 Date: Mon, 4 May 2015 10:33:12 +0200 From: Uwe =?iso-8859-1?Q?Kleine-K=F6nig?= To: Doug Anderson Cc: Wolfram Sang , Addy Ke , Max Schwarz , Heiko Stuebner , Dmitry Torokhov , linux-rockchip@lists.infradead.org, linux-arm-kernel@lists.infradead.org, linux-i2c@vger.kernel.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH] i2c: rk3x: Increase wait timeout to 1 second Message-ID: <20150504083312.GN25193@pengutronix.de> References: <1430430247-9632-1-git-send-email-dianders@chromium.org> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <1430430247-9632-1-git-send-email-dianders@chromium.org> User-Agent: Mutt/1.5.21 (2010-09-15) X-SA-Exim-Connect-IP: 2001:67c:670:100:1d::c0 X-SA-Exim-Mail-From: ukl@pengutronix.de X-SA-Exim-Scanned: No (on metis.ext.pengutronix.de); SAEximRunCond expanded to false X-PTX-Original-Recipient: linux-kernel@vger.kernel.org Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1729 Lines: 40 On Thu, Apr 30, 2015 at 02:44:07PM -0700, Doug Anderson wrote: > While it's not sensible for an i2c command to _actually_ need more > than 200ms to complete, let's increase the timeout anyway. Why? It > turns out that if you've got a large number of printks going out to a > serial console, interrupts on a CPU can be disabled for hundreds of > milliseconds. That's not a great situation to be in to start with > (maybe we should put a cap in vprintk_emit()) but it's pretty annoying > to start seeing unexplained i2c timeouts. > > A normal system shouldn't see i2c timeouts anyway, so increasing the > timeout should help people debugging without hurting other people > excessively. Hmm, correct me if I'm wrong: You say that the following can happen: rk3x_i2c_xfer calls wait_event_timeout and blocks schedule ... disable_irqs ... xfer complete ... do some work ... enable_irqs control back to i2c driver after timeout elapsed wait_event_timeout returned 0 The documentation of wait_event_timeout tells: * Returns: * 0 if the @condition evaluated to %false after the @timeout elapsed, * 1 if the @condition evaluated to %true after the @timeout elapsed, * or the remaining jiffies (at least 1) if the @condition evaluated * to %true before the @timeout elapsed. Where is the misunderstanding? Best regards Uwe -- Pengutronix e.K. | Uwe Kleine-K?nig | Industrial Linux Solutions | http://www.pengutronix.de/ | -- 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/