All of lore.kernel.org
 help / color / mirror / Atom feed
* ia64 event channels
@ 2005-06-14 20:32 Matt Chapman
       [not found] ` <mailman.1118781182.16413@unix-os.sc.intel.com>
  0 siblings, 1 reply; 5+ messages in thread
From: Matt Chapman @ 2005-06-14 20:32 UTC (permalink / raw)
  To: Keir Fraser; +Cc: xen-devel

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

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: ia64 event channels
       [not found] ` <mailman.1118781182.16413@unix-os.sc.intel.com>
@ 2005-06-14 22:17   ` Arun Sharma
  2005-06-15  0:50     ` Matt Chapman
  0 siblings, 1 reply; 5+ messages in thread
From: Arun Sharma @ 2005-06-14 22:17 UTC (permalink / raw)
  To: Matt Chapman; +Cc: Ling, Xiaofeng, 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

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: ia64 event channels
  2005-06-14 22:17   ` Arun Sharma
@ 2005-06-15  0:50     ` Matt Chapman
  2005-06-15 19:29       ` [PATCH] " Matt Chapman
  0 siblings, 1 reply; 5+ messages in thread
From: Matt Chapman @ 2005-06-15  0:50 UTC (permalink / raw)
  To: Arun Sharma; +Cc: Ling, Xiaofeng, 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

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] ia64 event channels
  2005-06-15  0:50     ` Matt Chapman
@ 2005-06-15 19:29       ` Matt Chapman
  2005-06-15 20:15         ` Arun Sharma
  0 siblings, 1 reply; 5+ messages in thread
From: Matt Chapman @ 2005-06-15 19:29 UTC (permalink / raw)
  To: Keir Fraser; +Cc: Arun Sharma, Ling, Xiaofeng, xen-devel

[-- Attachment #1: Type: text/plain, Size: 302 bytes --]

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>

[-- Attachment #2: event2.patch --]
[-- Type: text/plain, Size: 1637 bytes --]

diff -Nru a/xen/include/asm-ia64/event.h b/xen/include/asm-ia64/event.h
--- /dev/null	Wed Dec 31 16:00:00 1969
+++ b/xen/include/asm-ia64/event.h	Wed Jun 15 13:24:58 2005
@@ -0,0 +1,16 @@
+/******************************************************************************
+ * event.h
+ *
+ * A nice interface for passing asynchronous events to guest OSes.
+ * (architecture-dependent part)
+ *
+ */
+
+#ifndef __ASM_EVENT_H__
+#define __ASM_EVENT_H__
+
+static inline void evtchn_notify(struct vcpu *v)
+{
+}
+
+#endif
diff -Nru a/xen/include/asm-x86/event.h b/xen/include/asm-x86/event.h
--- /dev/null	Wed Dec 31 16:00:00 1969
+++ b/xen/include/asm-x86/event.h	Wed Jun 15 13:24:58 2005
@@ -0,0 +1,16 @@
+/******************************************************************************
+ * event.h
+ *
+ * A nice interface for passing asynchronous events to guest OSes.
+ * (architecture-dependent part)
+ *
+ */
+
+#ifndef __ASM_EVENT_H__
+#define __ASM_EVENT_H__
+
+static inline void evtchn_notify(struct vcpu *v)
+{
+}
+
+#endif
diff -Nru a/xen/include/xen/event.h b/xen/include/xen/event.h
--- a/xen/include/xen/event.h	Wed Jun 15 13:24:58 2005
+++ b/xen/include/xen/event.h	Wed Jun 15 13:24:58 2005
@@ -13,6 +13,7 @@
 #include <xen/sched.h>
 #include <xen/smp.h>
 #include <asm/bitops.h>
+#include <asm/event.h>
 
 /*
  * EVENT-CHANNEL NOTIFICATIONS
@@ -34,6 +35,7 @@
     {
         /* The VCPU pending flag must be set /after/ update to evtchn-pend. */
         set_bit(0, &v->vcpu_info->evtchn_upcall_pending);
+        evtchn_notify(v);
 
         /*
          * NB1. 'vcpu_flags' and 'processor' must be checked /after/ update of

[-- Attachment #3: Type: text/plain, Size: 138 bytes --]

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xensource.com
http://lists.xensource.com/xen-devel

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] ia64 event channels
  2005-06-15 19:29       ` [PATCH] " Matt Chapman
@ 2005-06-15 20:15         ` Arun Sharma
  0 siblings, 0 replies; 5+ messages in thread
From: Arun Sharma @ 2005-06-15 20:15 UTC (permalink / raw)
  To: Matt Chapman; +Cc: Ling, Xiaofeng, 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

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2005-06-15 20:15 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2005-06-14 20:32 ia64 event channels Matt Chapman
     [not found] ` <mailman.1118781182.16413@unix-os.sc.intel.com>
2005-06-14 22:17   ` Arun Sharma
2005-06-15  0:50     ` Matt Chapman
2005-06-15 19:29       ` [PATCH] " Matt Chapman
2005-06-15 20:15         ` Arun Sharma

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.