From: David Vrabel <david.vrabel@citrix.com>
To: Wei Liu <wei.liu2@citrix.com>
Cc: Wei Liu <liuw@liuw.name>, xen-devel@lists.xen.org
Subject: Re: [RFC PATCH 1/3] Add a field in struct domain to indicate evtchn level.
Date: Wed, 2 Jan 2013 11:11:00 +0000 [thread overview]
Message-ID: <50E415C4.8090600@citrix.com> (raw)
In-Reply-To: <1356978155-18293-2-git-send-email-wei.liu2@citrix.com>
On 31/12/12 18:22, Wei Liu wrote:
> From: Wei Liu <liuw@liuw.name>
The first patch needs to add the ABI documentation.
It's not clear what this is all for from just the changeset descriptions.
> Signed-off-by: Wei Liu <wei.liu2@citrix.com>
> ---
> xen/common/event_channel.c | 1 +
> xen/include/xen/sched.h | 15 ++++++++++++++-
> 2 files changed, 15 insertions(+), 1 deletion(-)
>
> diff --git a/xen/common/event_channel.c b/xen/common/event_channel.c
> index 89f0ca7..87e422e 100644
> --- a/xen/common/event_channel.c
> +++ b/xen/common/event_channel.c
> @@ -1173,6 +1173,7 @@ void notify_via_xen_event_channel(struct domain *ld, int lport)
> int evtchn_init(struct domain *d)
> {
> spin_lock_init(&d->event_lock);
> + d->evtchn_level = 2;
I'd be inclined to have something like:
/* Original ABI: 2 level event channels */
#define EVTCHN_LEVEL_DEFAULT 2
...
d->evtchn_level = EVTCHN_LEVEL_DEFAULT;
> if ( get_free_port(d) != 0 )
> return -EINVAL;
> evtchn_from_port(d, 0)->state = ECS_RESERVED;
> diff --git a/xen/include/xen/sched.h b/xen/include/xen/sched.h
> index 6c55039..1c43e0a 100644
> --- a/xen/include/xen/sched.h
> +++ b/xen/include/xen/sched.h
> @@ -50,7 +50,19 @@ extern struct domain *dom0;
> #else
> #define BITS_PER_EVTCHN_WORD(d) (has_32bit_shinfo(d) ? 32 : BITS_PER_LONG)
> #endif
> -#define MAX_EVTCHNS(d) (BITS_PER_EVTCHN_WORD(d) * BITS_PER_EVTCHN_WORD(d))
> +#define MAX_EVTCHNS_L2(d) (BITS_PER_EVTCHN_WORD(d) * BITS_PER_EVTCHN_WORD(d))
> +#define MAX_EVTCHNS_L3(d) (MAX_EVTCHNS_L2(d) * BITS_PER_EVTCHN_WORD(d))
> +#define MAX_EVTCHNS(d) ({ int __v = 0; \
> + switch ( d->evtchn_level ) { \
> + case 2: \
> + __v = MAX_EVTCHNS_L2(d); break; \
> + case 3: \
> + __v = MAX_EVTCHNS_L3(d); break; \
> + default: \
> + BUG(); \
> + }; \
> + __v;})
Here you BUG if d->evtchn_level is bad, but in other places in later
patches with similar you have a printk. Need to be more consistent here.
On the Linux side you use a set of event channel ops instead of
repeatedly testing d->evtchn_level. Would this also be a better
approach for the Xen side?
David
> #define EVTCHNS_PER_BUCKET 128
> #define NR_EVTCHN_BUCKETS (NR_EVENT_CHANNELS / EVTCHNS_PER_BUCKET)
>
> @@ -262,6 +274,7 @@ struct domain
> /* Event channel information. */
> struct evtchn *evtchn[NR_EVTCHN_BUCKETS];
> spinlock_t event_lock;
> + unsigned int evtchn_level;
>
> struct grant_table *grant_table;
>
next prev parent reply other threads:[~2013-01-02 11:11 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-12-31 18:22 Implement 3-level event channels in Xen Wei Liu
2012-12-31 18:22 ` [RFC PATCH 1/3] Add a field in struct domain to indicate evtchn level Wei Liu
2013-01-02 11:11 ` David Vrabel [this message]
2013-01-02 14:28 ` Wei Liu
2012-12-31 18:22 ` [RFC PATCH 2/3] Dynamically allocate domain->evtchn, also bump EVTCHNS_PER_BUCKET to 512 Wei Liu
2013-01-02 13:38 ` David Vrabel
2013-01-02 14:27 ` Wei Liu
2013-01-03 10:36 ` Jan Beulich
2013-01-03 11:33 ` Wei Liu
2013-01-03 11:39 ` Jan Beulich
2012-12-31 18:22 ` [RFC PATCH 3/3] Implement 3-level event channel routines Wei Liu
2013-01-02 14:08 ` David Vrabel
2013-01-02 16:45 ` Ian Campbell
2013-01-03 10:46 ` Jan Beulich
2013-01-03 11:35 ` Jan Beulich
2013-01-08 17:33 ` Wei Liu
2013-01-09 8:38 ` Jan Beulich
2013-01-09 10:56 ` Ian Campbell
2013-01-09 11:24 ` Jan Beulich
2013-01-09 11:31 ` Ian Campbell
2013-01-09 11:41 ` Jan Beulich
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=50E415C4.8090600@citrix.com \
--to=david.vrabel@citrix.com \
--cc=liuw@liuw.name \
--cc=wei.liu2@citrix.com \
--cc=xen-devel@lists.xen.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.