From mboxrd@z Thu Jan 1 00:00:00 1970 From: Konrad Rzeszutek Wilk Subject: Re: [RFC v1 5/8] x86/init: move ebda reservations into linker table Date: Wed, 20 Jan 2016 15:46:10 -0500 Message-ID: <20160120204610.GE4769@char.us.oracle.com> References: <1450217797-19295-1-git-send-email-mcgrof@do-not-panic.com> <1450217797-19295-6-git-send-email-mcgrof@do-not-panic.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: Content-Disposition: inline In-Reply-To: <1450217797-19295-6-git-send-email-mcgrof@do-not-panic.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: "Luis R. Rodriguez" Cc: peter.senna@gmail.com, ryabinin.a.a@gmail.com, JBeulich@suse.com, hpa@zytor.com, qiuxishi@huawei.com, boris.ostrovsky@oracle.com, xen-devel@lists.xensource.com, joro@8bytes.org, x86@kernel.org, mingo@redhat.com, aryabinin@virtuozzo.com, mchehab@osg.samsung.com, andreyknvl@google.com, mcgrof@suse.com, rusty@rustcorp.com.au, bp@alien8.de, tglx@linutronix.de, mcb30@ipxe.org, valentinrothberg@gmail.com, jgross@suse.com, linux-kernel@vger.kernel.org, luto@amacapital.net, long.wanglong@huawei.com List-Id: xen-devel@lists.xenproject.org On Tue, Dec 15, 2015 at 02:16:34PM -0800, Luis R. Rodriguez wrote: > From: "Luis R. Rodriguez" > > 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. > > Signed-off-by: Luis R. Rodriguez > --- > 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 > #include > +#include > > /* > * 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 > start_kernel(); > } > -- > 2.6.2 >