This is the one change we''ve made to architecture-independent code for event channels. Rather than polling the event channel flags on every return, we pend an interrupt in evtchn_set_pending. This might be better abstracted into some architecture-dependent header file, but I''m not sure where. We could add an asm/event.h, though it does seem a bit excessive to add a file just for one trivial hook. Matt ===== event.h 1.26 vs 1.27 ====--- 1.26/xen/include/xen/event.h Fri Jun 3 10:42:09 2005 +++ 1.27/xen/include/xen/event.h Fri Jun 10 17:26:21 2005 @@ -34,6 +34,9 @@ { /* The VCPU pending flag must be set /after/ update to evtchn-pend. */ set_bit(0, &v->vcpu_info->evtchn_upcall_pending); +#ifdef __ia64__ + vcpu_pend_interrupt(v, s->arch.evtchn_vector); +#endif /* * NB1. ''vcpu_flags'' and ''processor'' must be checked /after/ update of _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel
Matt Chapman wrote:> This is the one change we''ve made to architecture-independent code > for event channels. Rather than polling the event channel flags > on every return, we pend an interrupt in evtchn_set_pending. > > This might be better abstracted into some architecture-dependent > header file, but I''m not sure where. We could add an asm/event.h, > though it does seem a bit excessive to add a file just for one > trivial hook.Not all event channel events get injected into the guest. For eg, on VT-x and VT-i, we use event channels to communicate events from the device models to the hypervisor on handling memory mapped and accesses to I/O ports. Have you already looked at this patch: http://article.gmane.org/gmane.comp.emulators.xen.devel/10852 vmx_check_guest_event() does something very similar. Also, it might be good to unify the names (callback_irq vs evtchn_vector -- I like evtchn_vector better). -Arun _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel
On Tue, Jun 14, 2005 at 03:17:48PM -0700, Arun Sharma wrote:> > Not all event channel events get injected into the guest. For eg, on > VT-x and VT-i, we use event channels to communicate events from the > device models to the hypervisor on handling memory mapped and accesses > to I/O ports. > > Have you already looked at this patch: > > http://article.gmane.org/gmane.comp.emulators.xen.devel/10852 > > vmx_check_guest_event() does something very similar.Ah, I hadn''t seen that patch. In that case, it is indeed better to abstract what I added to evtchn.h behind a hook function like check_guest_event(). I think this hook should be relevant for x86 VMX as well? i.e. if we arrange it so that vmx_check_guest_event is called from evtchn_set_pending, then you don''t have to call it on every exit to user?> Also, it might be good to unify the names (callback_irq vs evtchn_vector > -- I like evtchn_vector better).Sure. Also, I put it in the shared_info; I''m happy to move it to the VCPU structure though, that may be more appropriate. Matt _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel
This patch adds an architecture-specific hook function for event delivery, which does any necessary actions to notify the recipient, e.g. pending an IRQ. We plan to use this on IA64, I imagine it will be useful for VT-x domains as well. Thanks, Matt Signed-off-by: Matthew Chapman <matthewc@hp.com> _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel
Matt Chapman wrote:> This patch adds an architecture-specific hook function for event > delivery, which does any necessary actions to notify the recipient, > e.g. pending an IRQ. We plan to use this on IA64, I imagine it > will be useful for VT-x domains as well.Looks good to me. -Arun _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel