Messages in this thread | | | Subject | Re: [patch V6 10/37] x86/entry: Switch XEN/PV hypercall entry to IDTENTRY | From | Boris Ostrovsky <> | Date | Wed, 20 May 2020 22:23:18 -0400 |
| |
On 5/20/20 3:16 PM, Thomas Gleixner wrote:
> +__visible noinstr void xen_pv_evtchn_do_upcall(struct pt_regs *regs) > +{ > + struct pt_regs *old_regs; > + bool inhcall; > + > + idtentry_enter(regs); > + old_regs = set_irq_regs(regs); > + > + run_on_irqstack(__xen_pv_evtchn_do_upcall, NULL, regs);
We need to handle nested case (i.e. !irq_needs_irq_stack(), like in your original version). Moving get_and_clear_inhcall() up should prevent scheduling when this happens.
-boris
> + > + set_irq_regs(old_regs); > + > + inhcall = get_and_clear_inhcall(); > + __idtentry_exit(regs, inhcall); > + restore_inhcall(inhcall); > }
| |