From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Murthy, Arun R" Subject: Re: [PATCH v4] drm/i915: use hrtimer in wait for vblank Date: Tue, 25 Mar 2014 15:16:28 +0530 Message-ID: <53315074.6050502@gmail.com> References: <1395737902-11984-1-git-send-email-arun.r.murthy@intel.com> <20140325090703.GY4366@nuc-i3427.alporthouse.com> <87eh1qvd20.fsf@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii"; Format="flowed" Content-Transfer-Encoding: 7bit Return-path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTP id 127066E0D9 for ; Tue, 25 Mar 2014 02:47:23 -0700 (PDT) In-Reply-To: <87eh1qvd20.fsf@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Jani Nikula Cc: airlied@linux.ie, daniel.vetter@ffwll.ch, intel-gfx@lists.freedesktop.org, Arun R Murthy List-Id: intel-gfx@lists.freedesktop.org On Tuesday 25 March 2014 03:02 PM, Jani Nikula wrote: > On Tue, 25 Mar 2014, Chris Wilson wrote: >> On Tue, Mar 25, 2014 at 02:28:22PM +0530, Arun R Murthy wrote: >>> In wait for vblank use usleep_range, which will use hrtimers instead of >>> msleep. Using msleep(1~20) there are more chances of sleeping for 20ms. >>> Using usleep_range uses hrtimers and hence are precise, worst case will >>> trigger an interrupt at the higher/max timeout. >>> >>> As per kernel document "Documentation/timers/timers-howto.txt" sleeping >>> for 10us to 20ms its recomended to use usleep_range. >>> >>> Signed-off-by: Arun R Murthy >> Lgtm, I still feel that our use of W=1 is fairly arbitrary and worth >> tweaking in future. > With the current code, this is essentially the same as the original > patch. We never have W > 20, and thus we always take the usleep_range() > path. So W is definitely worth tweaking if we go with this now. > > Nitpick, the macro params should be parenthesized. This will now break > for _wait_for(cond, 10, 2 + 1) and such. wait_for(COND, TIMEOUT, ATOMIC, MS) and remove all wait_for_X function will look like _wait_for(COND< TIMEOUT, ATOMIC, MS) { /* loop */ /* check condition */ if (atomic) cpu_relax() else if (ms > 20) msleep else usleep_range } caller for wait_for will be setting all the parameters and hence no tweaks. Thanks and Regards, Arun R Murthy -------------------