This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
Home Products Support Community News


Re: [Xen-devel] Re: [PATCH 08/23] xen: statically initialize cpu_evtchn_

To: Paolo Bonzini <pbonzini@xxxxxxxxxx>
Subject: Re: [Xen-devel] Re: [PATCH 08/23] xen: statically initialize cpu_evtchn_mask_p
From: Ian Campbell <Ian.Campbell@xxxxxxxxxx>
Date: Tue, 25 Jan 2011 14:02:17 +0000
Cc: Jeremy Fitzhardinge <jeremy@xxxxxxxx>, "xen-devel@xxxxxxxxxxxxxxxxxxx" <xen-devel@xxxxxxxxxxxxxxxxxxx>, Stefano Stabellini <Stefano.Stabellini@xxxxxxxxxxxxx>, Konrad Rzeszutek Wilk <konrad.wilk@xxxxxxxxxx>, "linux-kernel@xxxxxxxxxxxxxxx" <linux-kernel@xxxxxxxxxxxxxxx>, Jan Beulich <JBeulich@xxxxxxxxxx>, Konrad Rzeszutek Wilk <konrad@xxxxxxxxxx>, Jeremy Fitzhardinge <Jeremy.Fitzhardinge@xxxxxxxxxx>
Delivery-date: Tue, 25 Jan 2011 06:03:23 -0800
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
In-reply-to: <4D3DBA6A.3080700@xxxxxxxxxx>
List-help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-id: Xen developer discussion <xen-devel.lists.xensource.com>
List-post: <mailto:xen-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
Organization: Citrix Systems, Inc.
References: <1286898271-32018-1-git-send-email-konrad.wilk@xxxxxxxxxx> <1286898271-32018-9-git-send-email-konrad.wilk@xxxxxxxxxx> <4D3DBA6A.3080700@xxxxxxxxxx>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
On Mon, 2011-01-24 at 17:44 +0000, Paolo Bonzini wrote:
> On 10/12/2010 05:44 PM, Konrad Rzeszutek Wilk wrote:
> > -static struct cpu_evtchn_s *cpu_evtchn_mask_p;
> > +
> > +static __initdata struct cpu_evtchn_s init_evtchn_mask = {
> > +   .bits[0 ... (NR_EVENT_CHANNELS/BITS_PER_LONG)-1] = ~0ul,
> > +};
> > +static struct cpu_evtchn_s *cpu_evtchn_mask_p =&init_evtchn_mask;
> > +
> >   static inline unsigned long *cpu_evtchn_mask(int cpu)
> >   {
> >     return cpu_evtchn_mask_p[cpu].bits;
> This causes a modpost warning:
>     WARNING: drivers/xen/built-in.o(.data+0x0): Section mismatch in
>     reference from the variable cpu_evtchn_mask_p to the variable
>     .init.data:init_evtchn_mask
>     The variable cpu_evtchn_mask_p references
>     the variable __initdata init_evtchn_mask
>     If the reference is valid then annotate the
>     variable with __init* or __refdata (see linux/init.h) or name the 
> variable:
>     *driver, *_template, *_timer, *_sht, *_ops, *_probe, *_probe_one, 
> *_console, 
> This is harmless, the variable is initialized to non-init data
> in an __init function.  The added noise is ugly, though.

Does this help? If I understand the comment which precedes  __initref
correctly it is intended to address precisely this situation.


xen: events: mark cpu_evtchn_mask_p as __refdata

This variable starts out pointing at init_evtchn_mask which is marked
__initdata but is set to point to a non-init data region in xen_init_IRQ
which is itself an __init function so this is safe.

Signed-off-by: Ian Campbell <ian.campbell@xxxxxxxxxx>

diff --git a/drivers/xen/events.c b/drivers/xen/events.c
index 31af0ac..5061af0 100644
--- a/drivers/xen/events.c
+++ b/drivers/xen/events.c
@@ -114,7 +114,7 @@ struct cpu_evtchn_s {
 static __initdata struct cpu_evtchn_s init_evtchn_mask = {
        .bits[0 ... (NR_EVENT_CHANNELS/BITS_PER_LONG)-1] = ~0ul,
-static struct cpu_evtchn_s *cpu_evtchn_mask_p = &init_evtchn_mask;
+static struct __refdata cpu_evtchn_s *cpu_evtchn_mask_p =
 static inline unsigned long *cpu_evtchn_mask(int cpu)

Xen-devel mailing list

<Prev in Thread] Current Thread [Next in Thread>