Messages in this thread | | | Date | Thu, 7 Nov 2013 23:23:14 +0100 | From | Frederic Weisbecker <> | Subject | Re: [PATCH 2/4] irq_work: Provide a irq work that can be processed on any cpu |
| |
On Thu, Nov 07, 2013 at 11:19:04PM +0100, Jan Kara wrote: > On Thu 07-11-13 23:13:39, Frederic Weisbecker wrote: > > But then, who's going to process that work if every CPUs is idle? > Have a look into irq_work_queue(). There is: > /* > * If the work is not "lazy" or the tick is stopped, raise the irq > * work interrupt (if supported by the arch), otherwise, just wait > * for the next tick. We do this even for unbound work to make sure > * *some* CPU will be doing the work. > */ > if (!(work->flags & IRQ_WORK_LAZY) || tick_nohz_tick_stopped()) { > if (!this_cpu_cmpxchg(irq_work_raised, 0, 1)) > arch_irq_work_raise(); > } > > So we raise an interrupt if there would be no timer ticking (which is > what I suppose you mean by "CPU is idle"). That is nothing changed by my > patches...
Ok but we raise that interrupt locally, not to the other CPUs.
| |