Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1757550AbcLOJ2H (ORCPT ); Thu, 15 Dec 2016 04:28:07 -0500 Received: from mail-wm0-f65.google.com ([74.125.82.65]:34328 "EHLO mail-wm0-f65.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753800AbcLOJ2D (ORCPT ); Thu, 15 Dec 2016 04:28:03 -0500 Date: Thu, 15 Dec 2016 10:27:59 +0100 From: Daniel Vetter To: Jani Nikula Cc: Nicholas Mc Guire , Daniel Vetter , David Airlie , intel-gfx@lists.freedesktop.org, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org Subject: Re: [Intel-gfx] [PATCH] drm/i915: use udelay for very short delays Message-ID: <20161215092759.ud4enhbs2szf6ohl@phenom.ffwll.local> Mail-Followup-To: Jani Nikula , Nicholas Mc Guire , Daniel Vetter , David Airlie , intel-gfx@lists.freedesktop.org, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org References: <1481776147-23041-1-git-send-email-hofrat@osadl.org> <87wpf1pnj2.fsf@intel.com> <20161215092519.7lzcx75oo3xjcaop@phenom.ffwll.local> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20161215092519.7lzcx75oo3xjcaop@phenom.ffwll.local> X-Operating-System: Linux phenom 4.8.0-1-amd64 User-Agent: NeoMutt/20161126 (1.7.1) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2057 Lines: 41 On Thu, Dec 15, 2016 at 10:25:19AM +0100, Daniel Vetter wrote: > On Thu, Dec 15, 2016 at 11:08:49AM +0200, Jani Nikula wrote: > > On Thu, 15 Dec 2016, Nicholas Mc Guire wrote: > > > Even on fast systems a 2 microsecond delay is most likely more efficient > > > as a busy-wait loop. The overhead of a hrtimer does not seem warranted - > > > change this to a udelay(2). > > > > Similar concerns as in [1]. We don't need the accuracy of udelay() here, > > so this boils down to which is the better use of CPU. We could probably > > relax the max delay more if that was helpful. But I'm not immediately > > sold on "is most likely more efficient" which sounds like a gut feeling. > > > > I'm sorry it's not clear in my other reply that I do appreciate > > addressing incorrect/silly use of usleep_range(); I'm just not (yet) > > convinced udelay() is the answer. > > So one reason why we unconditionally use *sleep variants is the > might_sleep check. Because in the past people have used udelay and mdelay, > those delays had to be increased a lot because hw, and at the same time > someone added users of these functions to our irq helper, resulting in irq > handling times measures in multiple ms. That's not good. > > So until someone can demonstrate that there's a real benefit (which let's > be honest, for modeset code, will never be the case) I very highly prefer > to use *sleep* functions. They prevent some silly things from happening by > accident. Micro-optimizing modeset code and hampering maitainability in > the process is not good. Also, the entire premise seems backwards: usleep_range is inefficient for certain parameter ranges and better replaced with udelay. That makes sense. But why exactly do we not fix udelay_range then, but instead do a cocci job crawling through all the thousands of callers? Just fix usleep(_range) to use udelay for very small values (and still keep the might_sleep check ofc) if that's more efficient! -Daniel -- Daniel Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch