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;