|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [RFC PATCH V3 07/22] Add evtchn_extended in struct domain
This field is a bitmap of currently in use extended event channel ABI, which
can have 0 (no extended event channel in use) 1 bit set. It is manipulated by
hypervisor only, so if anything goes wrong it is a bug.
The default event channel ABI is EVTCHN_EXTENDED_NONE, which means no extended
event channel is used.
Signed-off-by: Wei Liu <wei.liu2@xxxxxxxxxx>
---
xen/common/event_channel.c | 1 +
xen/include/xen/event.h | 12 +++++++++++-
xen/include/xen/sched.h | 1 +
3 files changed, 13 insertions(+), 1 deletion(-)
diff --git a/xen/common/event_channel.c b/xen/common/event_channel.c
index 684a021..bd4b1e8 100644
--- a/xen/common/event_channel.c
+++ b/xen/common/event_channel.c
@@ -1179,6 +1179,7 @@ int evtchn_init(struct domain *d)
return -ENOMEM;
clear_page(d->evtchn);
+ d->evtchn_extended = EVTCHN_EXTENDED_NONE;
spin_lock_init(&d->event_lock);
if ( get_free_port(d) != 0 ) {
free_xenheap_page(d->evtchn);
diff --git a/xen/include/xen/event.h b/xen/include/xen/event.h
index f8de10b..240344b 100644
--- a/xen/include/xen/event.h
+++ b/xen/include/xen/event.h
@@ -14,6 +14,7 @@
#include <xen/softirq.h>
#include <asm/bitops.h>
#include <asm/event.h>
+#include <public/event_channel.h>
#ifndef CONFIG_COMPAT
#define BITS_PER_EVTCHN_WORD(d) BITS_PER_LONG
@@ -22,7 +23,16 @@
#endif
static inline unsigned int max_evtchns(struct domain *d)
{
- return BITS_PER_EVTCHN_WORD(d) * BITS_PER_EVTCHN_WORD(d);
+ unsigned int ret = 0;
+ switch ( d->evtchn_extended )
+ {
+ case EVTCHN_EXTENDED_NONE:
+ ret = BITS_PER_EVTCHN_WORD(d) * BITS_PER_EVTCHN_WORD(d);
+ break;
+ default:
+ BUG();
+ }
+ return ret;
}
#define EVTCHNS_PER_BUCKET 128
diff --git a/xen/include/xen/sched.h b/xen/include/xen/sched.h
index bb65cbf..dd40444 100644
--- a/xen/include/xen/sched.h
+++ b/xen/include/xen/sched.h
@@ -217,6 +217,7 @@ struct domain
/* Event channel information. */
struct evtchn **evtchn;
spinlock_t event_lock;
+ unsigned int evtchn_extended;
struct grant_table *grant_table;
--
1.7.10.4
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |