Messages in this thread | | | Subject | Re: [PATCH v2] xen/events: remove event handling recursion detection | From | Boris Ostrovsky <> | Date | Thu, 28 Nov 2019 16:37:27 -0500 |
| |
On 11/28/19 3:45 AM, Juergen Gross wrote: > - > static void __xen_evtchn_do_upcall(void) > { > struct vcpu_info *vcpu_info = __this_cpu_read(xen_vcpu); > - int cpu = get_cpu(); > - unsigned count; > + int cpu = smp_processor_id(); > > do { > vcpu_info->evtchn_upcall_pending = 0; > > - if (__this_cpu_inc_return(xed_nesting_count) - 1) > - goto out; > - > xen_evtchn_handle_events(cpu); > > BUG_ON(!irqs_disabled()); > > - count = __this_cpu_read(xed_nesting_count); > - __this_cpu_write(xed_nesting_count, 0); > - } while (count != 1 || vcpu_info->evtchn_upcall_pending); > - > -out: > + rmb(); /* Hypervisor can set upcall pending. */
virt_rmb() perhaps then?
-boris
> > - put_cpu(); > + } while (vcpu_info->evtchn_upcall_pending); > } > > void xen_evtchn_do_upcall(struct pt_regs *regs)
| |