From mboxrd@z Thu Jan 1 00:00:00 1970 From: David Vrabel Subject: Re: [RFC PATCH 2/3] Xen: rework NR_EVENT_CHANNELS related stuffs. Date: Wed, 2 Jan 2013 14:20:23 +0000 Message-ID: <50E44227.1090803@citrix.com> References: <1356979137-18484-1-git-send-email-wei.liu2@citrix.com> <1356979137-18484-3-git-send-email-wei.liu2@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: <1356979137-18484-3-git-send-email-wei.liu2@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: Wei Liu Cc: konrad.wilk@oracle.com, xen-devel@lists.xen.org List-Id: xen-devel@lists.xenproject.org On 31/12/12 18:38, Wei Liu wrote: > Again, the changeset description is too brief. > Signed-off-by: Wei Liu > --- > drivers/xen/events.c | 44 +++++++++++++++++++++++++++++-------------- > drivers/xen/evtchn.c | 16 +++++++++------- > include/xen/events.h | 3 +++ > include/xen/interface/xen.h | 17 ++++++++++++++++- > 4 files changed, 58 insertions(+), 22 deletions(-) > > diff --git a/drivers/xen/events.c b/drivers/xen/events.c > index 835101f..f60ba76 100644 > --- a/drivers/xen/events.c > +++ b/drivers/xen/events.c > @@ -52,7 +52,8 @@ > #include > > /* N-level event channel, starting from 2 */ > -static unsigned int evtchn_level = 2; > +unsigned int evtchn_level = 2; > +EXPORT_SYMBOL_GPL(evtchn_level); I presume this is exported so the NR_EVENT_CHANNELS() macro works. I think it would be better to provide and export an evtchn_nr_channels() function instead. Perhaps make it part of the event channel ops structure? > --- a/include/xen/interface/xen.h > +++ b/include/xen/interface/xen.h > @@ -283,9 +283,24 @@ DEFINE_GUEST_HANDLE_STRUCT(multicall_entry); > > /* > * Event channel endpoints per domain: > + * 2-level: > * 1024 if a long is 32 bits; 4096 if a long is 64 bits. > + * 3-level: > + * 32k if a long is 32 bits; 256k if a long is 64 bits. > */ > -#define NR_EVENT_CHANNELS (sizeof(unsigned long) * sizeof(unsigned long) * 64) > +#define NR_EVENT_CHANNELS_L2 (sizeof(unsigned long) * sizeof(unsigned long) * 64) > +#define NR_EVENT_CHANNELS_L3 (NR_EVENT_CHANNELS_L2 * sizeof(unsigned long)) > +#define NR_EVENT_CHANNELS(x) ({ unsigned int __v = 0; \ > + switch (x) { \ > + case 2: \ > + __v = NR_EVENT_CHANNELS_L2; break; \ > + case 3: \ > + __v = NR_EVENT_CHANNELS_L3; break; \ > + default: \ > + BUG(); \ > + } \ > + __v; }) > + > > struct vcpu_time_info { > /* This should be split into a separate patch that resync's the Linux copy of the header with the Xen one. David