[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v3 07/23] xsplice: Implement support for applying/reverting/replacing patches. (v5)
> > > +static void reschedule_fn(void *unused) > > > +{ > > > + smp_mb(); /* Synchronize with setting do_work */ > > > + raise_softirq(SCHEDULE_SOFTIRQ); > > > > As you have to IPI each processor to raise a schedule softirq, you can > > set a per-cpu "xsplice enter rendezvous" variable. This prevents the > > need for the return-to-guest path to poll one single byte. > > .. Not sure I follow. The IPI we send to the other CPU is 0xfb - which > makes the smp_call_function_interrupt run, which calls this function: > reschedule_fn(). Then raise_softirq sets the bit on softirq_pending. > > Great. Since we caused an IPI that means we ended up calling VMEXIT which > eventually ends calling process_pending_softirqs() which calls schedule(). > And after that it calls check_for_xsplice_work(). > > Are you suggesting to add new softirq that would call in > check_for_xsplice_work()? > > Or are you suggesting to skip the softirq_pending check and all the > code around that and instead have each VMEXIT code path check this > per-cpu "xsplice enter" variable? If so, why not use the existing > softirq infrastructure? N/m. You were referring to the: > > > +void do_xsplice(void) .. > > > + /* Fast path: no work to do. */ > > > + if ( likely(!xsplice_work.do_work) ) > > > + return; which every CPU is going to do in when it calls idle_loop, svm_do_resume, and vmx_do_resume. Let me add that in! _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |