Messages in this thread | | | Date | Wed, 03 Dec 2014 05:37:51 +0100 | From | Juergen Gross <> | Subject | Re: [Xen-devel] [PATCH] xen: privcmd: schedule() after private hypercall when non CONFIG_PREEMPT |
| |
On 12/03/2014 03:28 AM, Luis R. Rodriguez wrote: > On Tue, Dec 02, 2014 at 11:11:18AM +0000, David Vrabel wrote: >> On 01/12/14 22:36, Luis R. Rodriguez wrote: >>> >>> Then I do agree its a fair analogy (and find this obviously odd that how >>> widespread cond_resched() is), we just don't have an equivalent for IRQ >>> context, why not avoid the special check then and use this all the time in the >>> middle of a hypercall on the return from an interrupt (e.g., the timer >>> interrupt)? >> >> http://lists.xen.org/archives/html/xen-devel/2014-02/msg01101.html > > OK thanks! That explains why we need some asm code but in that submission you > still also had used is_preemptible_hypercall(regs) and in the new > implementation you use a CPU variable xen_in_preemptible_hcall prior to calling > preempt_schedule_irq(). I believe you added the CPU variable because > preempt_schedule_irq() will preempt first without any checks if it should, I'm > asking why not do something like cond_resched_irq() where we check with > should_resched() prior to preempting and that way we can avoid having to use > the CPU variable?
Because that could preempt at any asynchronous interrupt making the no-preempt kernel fully preemptive. How would you know you are just doing a critical hypercall which should be preempted?
Juergen
| |