WARNING - OLD ARCHIVES

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/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-devel

Re: [Xen-devel] [PATCH] xen: fix section mismatch in reference from the

To: Stefan Assmann <sassmann@xxxxxxxxxx>
Subject: Re: [Xen-devel] [PATCH] xen: fix section mismatch in reference from the function xen_hvm_init_shared_info()
From: Stefano Stabellini <stefano.stabellini@xxxxxxxxxxxxx>
Date: Wed, 1 Dec 2010 11:26:24 +0000
Cc: "xen-devel@xxxxxxxxxxxxxxxxxxx" <xen-devel@xxxxxxxxxxxxxxxxxxx>
Delivery-date: Wed, 01 Dec 2010 03:27:03 -0800
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
In-reply-to: <4CF52612.2080709@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>
References: <4CF52612.2080709@xxxxxxxxxx>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
User-agent: Alpine 2.00 (DEB 1167 2008-08-23)
On Tue, 30 Nov 2010, Stefan Assmann wrote:
> From: Stefan Assmann <sassmann@xxxxxxxxxx>
> 
> The following warning shows up when building the kernel with
> make CONFIG_DEBUG_SECTION_MISMATCH=y.
> 
> WARNING: arch/x86/built-in.o(.text+0x475): Section mismatch in reference from 
> the function xen_hvm_init_shared_info() to the function 
> .init.text:extend_brk()
> The function xen_hvm_init_shared_info() references
> the function __init extend_brk().
> This is often because xen_hvm_init_shared_info lacks a __init
> annotation or the annotation of extend_brk is wrong.
> 
> The problem is that xen_hvm_init_shared_info() calls extend_brk() which is
> an __init function. However xen_hvm_init_shared_info() cannot be an
> __init function as it's called on system resume as well. Easy fix by
> moving extend_brk() out of the function.
> 
> Signed-off-by: Stefan Assmann <sassmann@xxxxxxxxxx>
> ---
>  arch/x86/xen/enlighten.c |    8 ++++----
>  1 files changed, 4 insertions(+), 4 deletions(-)
> 
> diff --git a/arch/x86/xen/enlighten.c b/arch/x86/xen/enlighten.c
> index 02c710b..13b11fd 100644
> --- a/arch/x86/xen/enlighten.c
> +++ b/arch/x86/xen/enlighten.c
> @@ -83,6 +83,7 @@ EXPORT_SYMBOL(machine_to_phys_order);
>  struct start_info *xen_start_info;
>  EXPORT_SYMBOL_GPL(xen_start_info);
> 
> +struct shared_info *shared_info_page;
>  struct shared_info xen_dummy_shared_info;
> 
>  void *xen_initial_gdt;

why not static?


> @@ -1310,11 +1311,7 @@ void xen_hvm_init_shared_info(void)
>  {
>       int cpu;
>       struct xen_add_to_physmap xatp;
> -     static struct shared_info *shared_info_page = 0;
> 
> -     if (!shared_info_page)
> -             shared_info_page = (struct shared_info *)
> -                     extend_brk(PAGE_SIZE, PAGE_SIZE);
>       xatp.domid = DOMID_SELF;
>       xatp.idx = 0;
>       xatp.space = XENMAPSPACE_shared_info;
> @@ -1365,6 +1362,9 @@ static void __init xen_hvm_guest_init(void)
>       if (r < 0)
>               return;
> 
> +     shared_info_page = (struct shared_info *)
> +             extend_brk(PAGE_SIZE, PAGE_SIZE);
> +
>       xen_hvm_init_shared_info();
> 
>       if (xen_feature(XENFEAT_hvm_callback_vector))
> -- 
> 1.7.3.2
> 

thanks for the patch,

Stefano

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel

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