From: Vijay Kumar <vijay.ac.kumar@xxxxxxxxxx>I can give a try :). But looks to me one thing that will go wrong is irq accounting done in __irq_enter() and rcu_irq_enter().
Date: Thu, 20 Jul 2017 21:44:24 -0500
I had same thoughts initially but I had to go with this approach asI still think we should be able to fake the state such that this
scheduler_ipi is wrapped with irq_enter() and irq_exit(). Whereas POKE
resumes the cpu in process context.
Comments in scheduler_ipi():
* Not all reschedule IPI handlers call irq_enter/irq_exit, since
* traditionally all their work was done from the interrupt return
* path. Now that we actually do some work, we need to make sure
* we do call them.
*
* Some archs already do call them, luckily irq_enter/exit nest
* properly.
*
* Arguably we should visit all archs and update all handlers,
* however a fair share of IPIs are still resched only so this would
* somewhat pessimize the simple resched case.
*/
irq_enter();
direct schedule_ipi() call will work.
I could be wrong :)