From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jean Delvare Subject: Re: yield() in i2c non-happy paths hits BUG under -rt patch Date: Wed, 18 Nov 2009 17:52:02 +0100 Message-ID: <20091118175202.490989d8@hyperion.delvare> References: <20091107210147.3e754278@hyperion.delvare> <4AF7148C.9090706@thebigcorporation.com> <20091112211255.09cd884a@hyperion.delvare> <20091116155606.GC29479@sirena.org.uk> <20091118010520.4cd397d4@lxorguk.ukuu.org.uk> Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Cc: Alan Cox , Mark Brown , Thomas Gleixner , Sven-Thorsten Dietrich , linux-i2c@vger.kernel.org, rt-users , "Ben Dooks (embedded platforms)" , Peter Zijlstra , LKML To: Leon Woestenberg Return-path: In-Reply-To: Sender: linux-kernel-owner@vger.kernel.org List-Id: linux-rt-users.vger.kernel.org On Wed, 18 Nov 2009 17:28:53 +0100, Leon Woestenberg wrote: > On Wed, Nov 18, 2009 at 2:05 AM, Alan Cox wrote: > > Our timers are very efficient and some day we will need to make jiffies a > > function and stop the timer ticking for best performance. At that point > > timers are probably the most efficient way to do much of this. > > The problem with I2C bitbanged is the stringent timing, we need a way > to have fine-grained sleeping > mixed with real-time tasks in order to make this work. FWIW, the problem that was initially reported has nothing to do with this. i2c-algo-bit used mdelay() during transactions, not yield(). yield() is used only in once place, _between_ transactions attempts. There are no strict timing constraints there. -- Jean Delvare