From mboxrd@z Thu Jan 1 00:00:00 1970 From: Konrad Rzeszutek Wilk Subject: Re: [PATCH 02/13] xen/events: remove unnecessary init_evtchn_cpu_bindings() Date: Tue, 24 Sep 2013 10:40:04 -0400 Message-ID: <20130924144004.GC4712@phenom.dumpdata.com> References: <1379091601-30358-1-git-send-email-david.vrabel@citrix.com> <1379091601-30358-3-git-send-email-david.vrabel@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: Content-Disposition: inline In-Reply-To: <1379091601-30358-3-git-send-email-david.vrabel@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: David Vrabel Cc: Boris Ostrovsky , Jan Beulich , xen-devel@lists.xen.org List-Id: xen-devel@lists.xenproject.org On Fri, Sep 13, 2013 at 05:59:50PM +0100, David Vrabel wrote: > From: David Vrabel > > Event channels are always explicitly bound to a specific VCPU before > they are first enabled. There is no need to initialize all possible > events as bound to VCPU 0 at start of day or after a resume. How long has this presumption about explicit bounding been in the hypervisor? Should there also be a patch in the Xen headers documenting this behavior? Looks good to me - thought I would add the comment mentioning how long this behavior has been with the hypervisor - as we still can run on Xen 4.0 hypervisors and should not break that (and perhaps they don't rebind there?). > > Signed-off-by: David Vrabel > --- > drivers/xen/events.c | 22 ---------------------- > 1 files changed, 0 insertions(+), 22 deletions(-) > > diff --git a/drivers/xen/events.c b/drivers/xen/events.c > index ddcdbb5..1e2c74b 100644 > --- a/drivers/xen/events.c > +++ b/drivers/xen/events.c > @@ -334,24 +334,6 @@ static void bind_evtchn_to_cpu(unsigned int chn, unsigned int cpu) > info_for_irq(irq)->cpu = cpu; > } > > -static void init_evtchn_cpu_bindings(void) > -{ > - int i; > -#ifdef CONFIG_SMP > - struct irq_info *info; > - > - /* By default all event channels notify CPU#0. */ > - list_for_each_entry(info, &xen_irq_list_head, list) { > - struct irq_desc *desc = irq_to_desc(info->irq); > - cpumask_copy(desc->irq_data.affinity, cpumask_of(0)); > - } > -#endif > - > - for_each_possible_cpu(i) > - memset(per_cpu(cpu_evtchn_mask, i), > - (i == 0) ? ~0 : 0, NR_EVENT_CHANNELS/8); > -} > - > static inline void clear_evtchn(int port) > { > struct shared_info *s = HYPERVISOR_shared_info; > @@ -1778,8 +1760,6 @@ void xen_irq_resume(void) > unsigned int cpu, evtchn; > struct irq_info *info; > > - init_evtchn_cpu_bindings(); > - > /* New event-channel space is not 'live' yet. */ > for (evtchn = 0; evtchn < NR_EVENT_CHANNELS; evtchn++) > mask_evtchn(evtchn); > @@ -1890,8 +1870,6 @@ void __init xen_init_IRQ(void) > for (i = 0; i < NR_EVENT_CHANNELS; i++) > evtchn_to_irq[i] = -1; > > - init_evtchn_cpu_bindings(); > - > /* No event channels are 'live' right now. */ > for (i = 0; i < NR_EVENT_CHANNELS; i++) > mask_evtchn(i); > -- > 1.7.2.5 >