Re: Divide-by-zero in post_init_entity_util_avg

2016-06-17 Thread Peter Zijlstra
On Fri, Jun 17, 2016 at 11:16:24AM +0300, Andrey Ryabinin wrote: > > I suppose instead we'd want something like: > > > > tmp = READ_ONCE(*ptr); > > if (tmp > val) > > tmp -= val; > > else > > tmp = 0; > > WRITE_ONCE(*ptr, tmp); > > > > In order to generate: > > > >

Re: Divide-by-zero in post_init_entity_util_avg

2016-06-17 Thread Andrey Ryabinin
On 06/16/2016 03:25 PM, Peter Zijlstra wrote: > On Thu, Jun 16, 2016 at 10:50:40AM +0200, Peter Zijlstra wrote: >> diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c >> index f75930bdd326..3fd3d903e6b6 100644 >> --- a/kernel/sched/fair.c >> +++ b/kernel/sched/fair.c >> @@ -2878,6 +2878,20 @@

Re: Divide-by-zero in post_init_entity_util_avg

2016-06-16 Thread Peter Zijlstra
On Thu, Jun 16, 2016 at 02:25:04PM +0200, Peter Zijlstra wrote: > On Thu, Jun 16, 2016 at 10:50:40AM +0200, Peter Zijlstra wrote: > > diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c > > index f75930bdd326..3fd3d903e6b6 100644 > > --- a/kernel/sched/fair.c > > +++ b/kernel/sched/fair.c > > @@

Re: Divide-by-zero in post_init_entity_util_avg

2016-06-16 Thread Peter Zijlstra
On Thu, Jun 16, 2016 at 10:50:40AM +0200, Peter Zijlstra wrote: > diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c > index f75930bdd326..3fd3d903e6b6 100644 > --- a/kernel/sched/fair.c > +++ b/kernel/sched/fair.c > @@ -2878,6 +2878,20 @@ static inline void cfs_rq_util_change(struct cfs_rq >

Re: Divide-by-zero in post_init_entity_util_avg

2016-06-16 Thread Peter Zijlstra
On Thu, Jun 09, 2016 at 03:07:50PM +0200, Peter Zijlstra wrote: > Which given the lack of serialization, and the code generated from > update_cfs_rq_load_avg() is entirely possible. > > if (atomic_long_read(&cfs_rq->removed_load_avg)) { > s64 r = atomic_long_xchg(&cfs_rq->remov

Re: Divide-by-zero in post_init_entity_util_avg

2016-06-12 Thread Yuyang Du
On Thu, Jun 09, 2016 at 03:07:50PM +0200, Peter Zijlstra wrote: > Which given the lack of serialization, and the code generated from > update_cfs_rq_load_avg() is entirely possible. > > if (atomic_long_read(&cfs_rq->removed_load_avg)) { > s64 r = atomic_long_xchg(&cfs_rq->remov

Re: Divide-by-zero in post_init_entity_util_avg

2016-06-09 Thread Peter Zijlstra
Chris Wilson reported a divide by 0 at: post_init_entity_util_avg(): >725if (cfs_rq->avg.util_avg != 0) { >726sa->util_avg = cfs_rq->avg.util_avg * > se->load.weight; > -> 727sa->util_avg /= (cfs_rq-

Re: Divide-by-zero in post_init_entity_util_avg

2016-06-09 Thread Peter Zijlstra
On Thu, Jun 09, 2016 at 10:01:42AM +0100, Chris Wilson wrote: > > [15774.966082] divide error: [#1] SMP > [15774.966137] Modules linked in: i915 intel_gtt > [15774.966208] CPU: 1 PID: 15319 Comm: gemscript Not tainted 4.7.0-rc1+ #330 > [15774.966252] Hardware name: /NUC5CPYB,

Re: Divide-by-zero in post_init_entity_util_avg

2016-06-09 Thread Yuyang Du
On Thu, Jun 09, 2016 at 10:01:42AM +0100, Chris Wilson wrote: > I've presumed commit 2b8c41daba327 ("sched/fair: Initiate a new task's > util avg to a bounded value") to be at fault, hence the CCs. Though it > may just be a victim. > > gdb says 0x43/0x80 is > >725if (c

Divide-by-zero in post_init_entity_util_avg

2016-06-09 Thread Chris Wilson
[15774.966082] divide error: [#1] SMP [15774.966137] Modules linked in: i915 intel_gtt [15774.966208] CPU: 1 PID: 15319 Comm: gemscript Not tainted 4.7.0-rc1+ #330 [15774.966252] Hardware name: /NUC5CPYB, BIOS PYBSWCEL.86A.0027.2015.0507.1758 05/07/2015 [15774.966317] task: