Re: [PATCH 2/4] sched/fair: Drop out incomplete current period when sched averages accrue

From: Joe Perches
Date: Wed Apr 13 2016 - 00:05:13 EST


On Wed, 2016-04-13 at 04:14 +0800, Yuyang Du wrote:
> On Tue, Apr 12, 2016 at 01:02:58PM +0100, Dietmar Eggemann wrote:
> > On 10/04/16 23:36, Yuyang Du wrote:
> > [...]
> > > @@ -2704,11 +2694,14 @@ static __always_inline int
> > >  __update_load_avg(u64 now, int cpu, struct sched_avg *sa,
> > >     unsigned long weight, int running, struct cfs_rq *cfs_rq)
> > >  {
> > > - u64 delta, scaled_delta, periods;
> > > - u32 contrib;
> > > - unsigned int delta_w, scaled_delta_w, decayed = 0;
> > > + u64 delta;
> > > + u32 contrib, periods;
> > >   unsigned long scale_freq, scale_cpu;
> > >  
> > > + /*
> > > +  * now rolls down to a period boundary
> > > +  */
> > > + now = now && (u64)(~0xFFFFF);
> > This forces now to be 1.
> >
> > s/&&/&
> Duh, :)

You could also avoid the cast:

now &= 0xFFFFull;