[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [RFC v1 5/8] x86/init: move ebda reservations into linker table



On Tue, Dec 15, 2015 at 02:16:34PM -0800, Luis R. Rodriguez wrote:
> From: "Luis R. Rodriguez" <mcgrof@xxxxxxxx>
> 
> This lets us annotate its requirements specifically for
> PC and lguest subarchitectures. While at it since head.c
> just has ebda data rename it. Since we're using linker tables
> and both x86 32-bit and 64-bit have them we don't need
> to declare a call for this separately. This lets us
> also keep this declared static now.
> 
> Since we're using linker tables and have support to annotate
> subarchitecture do that instead. pv_legacy() is incorrect as
> its really only for legacy PV guests. There's no need for
> pv_legacy() check anymore now.

<nods>
> 
> Signed-off-by: Luis R. Rodriguez <mcgrof@xxxxxxxx>
> ---
>  arch/x86/include/asm/bios_ebda.h   | 2 --
>  arch/x86/kernel/Makefile           | 2 +-
>  arch/x86/kernel/{head.c => ebda.c} | 6 +++---
>  arch/x86/kernel/head32.c           | 2 --
>  arch/x86/kernel/head64.c           | 2 --
>  5 files changed, 4 insertions(+), 10 deletions(-)
>  rename arch/x86/kernel/{head.c => ebda.c} (94%)
> 
> diff --git a/arch/x86/include/asm/bios_ebda.h 
> b/arch/x86/include/asm/bios_ebda.h
> index aa6a3170ab5a..e63347eb3804 100644
> --- a/arch/x86/include/asm/bios_ebda.h
> +++ b/arch/x86/include/asm/bios_ebda.h
> @@ -38,8 +38,6 @@ static inline unsigned int get_bios_ebda_length(void)
>       return length;
>  }
>  
> -void reserve_ebda_region(void);
> -
>  #ifdef CONFIG_X86_CHECK_BIOS_CORRUPTION
>  /*
>   * This is obviously not a great place for this, but we want to be
> diff --git a/arch/x86/kernel/Makefile b/arch/x86/kernel/Makefile
> index be167a0a5e2c..e7a43f08bccc 100644
> --- a/arch/x86/kernel/Makefile
> +++ b/arch/x86/kernel/Makefile
> @@ -2,7 +2,7 @@
>  # Makefile for the linux kernel.
>  #
>  
> -extra-y                := head_$(BITS).o head$(BITS).o head.o vmlinux.lds
> +extra-y                := head_$(BITS).o head$(BITS).o ebda.o vmlinux.lds
>  
>  CPPFLAGS_vmlinux.lds += -U$(UTS_MACHINE)
>  
> diff --git a/arch/x86/kernel/head.c b/arch/x86/kernel/ebda.c
> similarity index 94%
> rename from arch/x86/kernel/head.c
> rename to arch/x86/kernel/ebda.c
> index 279fad7288f8..defc2f07a80b 100644
> --- a/arch/x86/kernel/head.c
> +++ b/arch/x86/kernel/ebda.c
> @@ -4,6 +4,7 @@
>  
>  #include <asm/setup.h>
>  #include <asm/bios_ebda.h>
> +#include <asm/x86_init.h>
>  
>  /*
>   * The BIOS places the EBDA/XBDA at the top of conventional
> @@ -26,7 +27,7 @@
>  #define LOWMEM_CAP           0x9f000U        /* Absolute maximum */
>  #define INSANE_CUTOFF                0x20000U        /* Less than this = 
> insane */
>  
> -void __init reserve_ebda_region(void)
> +static void __init reserve_ebda_region(void)
>  {
>       unsigned int lowmem, ebda_addr;
>  
> @@ -38,8 +39,6 @@ void __init reserve_ebda_region(void)
>        * that the paravirt case can handle memory setup
>        * correctly, without our help.
>        */
> -     if (paravirt_legacy())
> -             return;
>  
>       /* end of low (conventional) memory */
>       lowmem = *(unsigned short *)__va(BIOS_LOWMEM_KILOBYTES);
> @@ -69,3 +68,4 @@ void __init reserve_ebda_region(void)
>       /* reserve all memory between lowmem and the 1MB mark */
>       memblock_reserve(lowmem, 0x100000 - lowmem);
>  }
> +x86_init_early_pc_simple(reserve_ebda_region);
> diff --git a/arch/x86/kernel/head32.c b/arch/x86/kernel/head32.c
> index d93f3e42e61b..768fa3888066 100644
> --- a/arch/x86/kernel/head32.c
> +++ b/arch/x86/kernel/head32.c
> @@ -26,8 +26,6 @@ static void __init i386_default_early_setup(void)
>       /* Initialize 32bit specific setup functions */
>       x86_init.resources.reserve_resources = i386_reserve_resources;
>       x86_init.mpparse.setup_ioapic_ids = setup_ioapic_ids_from_mpc;
> -
> -     reserve_ebda_region();
>  }
>  
>  asmlinkage __visible void __init i386_start_kernel(void)
> diff --git a/arch/x86/kernel/head64.c b/arch/x86/kernel/head64.c
> index f83263a8d0ed..c913b7eb5056 100644
> --- a/arch/x86/kernel/head64.c
> +++ b/arch/x86/kernel/head64.c
> @@ -194,7 +194,5 @@ void __init x86_64_start_reservations(char 
> *real_mode_data)
>       x86_init_fn_init_tables();
>       x86_init_fn_early_init();
>  
> -     reserve_ebda_region();
> -

Nice!

Reviewed-by: Konrad Rzeszutek Wilk <konrad.wilk@xxxxxxxxxx>
>       start_kernel();
>  }
> -- 
> 2.6.2
> 

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.