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