On Thu, 15 Dec 2016, Nicholas Mc Guire <der.h...@hofr.at> wrote: > On Thu, Dec 15, 2016 at 10:47:57AM +0200, Jani Nikula wrote: >> On Thu, 15 Dec 2016, Nicholas Mc Guire <hof...@osadl.org> wrote: >> > usleep_range() is intended for delays in the 10us to 10ms range that need >> > good precision. a useleep_range(1, will effectively be no more than an >> > imprecise udelay with some added cache disruption as it will fire more or >> > less immediately - use udelay() here. >> > >> > Fixes: commit be4fc046bed3 ("drm/i915: add VLV DSI PLL Calculations") >> > Signed-off-by: Nicholas Mc Guire <hof...@osadl.org> >> > --- >> > >> > Problem located by coccinelle >> > >> > The requirement of waiting at least 0.5 us is assured with the udelay(1) >> > here which should be more effective than a usleep_range() - would >> > ndelay(500) make sense here ? >> >> This is in the modeset path, i.e. pretty slow anyway. In this case, the >> point is not to try hard to minimize the wait, the point is to guarantee >> "at least 0.5 us" has passed. If the CPU can do something else, >> including dozing off, in the mean time, great. I think we should stick >> with usleep_range(). > > well in that case maybe an acceptable solution would be to set it to > some suitable range 10,20 us ? or if not critical preferably even with a large > upper limit.
I'd be fine with 10, 50 here. Please do send the patch, Cc: me. >> >> I think the question is, how do we express this in code? IMO udelay() is >> not the answer. > > if the delay need to be kept short then no - then its not the answer > but usleep_ranges(1,2) I think is effectively just an inefficient version > of udelay(1), by the time the timer is setup and the task gives > up the cpu the timer would fire. > >> >> And why doesn't usleep_range() kernel-doc mention anything about the >> ranges? >> > > interesting - that might be part of the reason there are many findings > Documentation/timers/timers-howto.txt does > > SLEEPING FOR ~USECS OR SMALL MSECS ( 10us - 20ms): > * Use usleep_range I'd appreciate short additions to the kernel-doc documentation of each function to document the approximate range it's appropriate for. People will know where to look if their use doesn't fall in that range. Thanks, Jani. -- Jani Nikula, Intel Open Source Technology Center