[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 |