Re: [PATCH 08/23] xen: statically initialize cpu_evtchn_mask_p

From: Paolo Bonzini
Date: Mon Jan 24 2011 - 12:44:19 EST


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.

Paolo
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/