Re: [PATCH v3] softirq: Prevent looping on disabled tasklets

2017-02-17 Thread Thomas Gleixner
On Sun, 12 Feb 2017, Chris Wilson wrote: > On Sun, Feb 12, 2017 at 03:46:09PM +, Chris Wilson wrote: > > +void tasklet_enable(struct tasklet_struct *t) > > +{ > > + if (!atomic_dec_and_test(&t->count)) > > + return; > > + > > + if (test_bit(TASKLET_STATE_SCHED, &t->state)) > > +

Re: [PATCH v3] softirq: Prevent looping on disabled tasklets

2017-02-12 Thread Chris Wilson
On Sun, Feb 12, 2017 at 03:46:09PM +, Chris Wilson wrote: > +void tasklet_enable(struct tasklet_struct *t) > +{ > + if (!atomic_dec_and_test(&t->count)) > + return; > + > + if (test_bit(TASKLET_STATE_SCHED, &t->state)) > + raise_softirq(HI_SOFTIRQ | TASKLET_SOFTI

[PATCH v3] softirq: Prevent looping on disabled tasklets

2017-02-12 Thread Chris Wilson
Disabling a tasklet causes it not to run during tasklet_action, but is put back onto the runnable tasklet list, and a new softirq raised. As the softirq is raised from within __do_softirq() this causing __do_softirq() to loop constantly until its timeslice expires and is transferred to the ksoftirq