From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1760225AbYBETWl (ORCPT ); Tue, 5 Feb 2008 14:22:41 -0500 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1755871AbYBETWd (ORCPT ); Tue, 5 Feb 2008 14:22:33 -0500 Received: from pasmtpb.tele.dk ([80.160.77.98]:41445 "EHLO pasmtpB.tele.dk" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755912AbYBETWc (ORCPT ); Tue, 5 Feb 2008 14:22:32 -0500 Date: Tue, 5 Feb 2008 20:22:36 +0100 From: Sam Ravnborg To: Linus Torvalds Cc: Ingo Molnar , Thomas Gleixner , "H. Peter Anvin" , linux-kernel@vger.kernel.org Subject: Re: [git pull] x86 updates Message-ID: <20080205192236.GA26426@uranus.ravnborg.org> References: <20080204161219.GA8092@elte.hu> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.4.2.1i Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, Feb 05, 2008 at 10:47:07AM -0800, Linus Torvalds wrote: > > > Ingo, Thomas, > should we not do this? > > Otherwise, it seems we generate a section that isn't allocated? > > I think toolchain should add the right flags automatically for sections > that start with ".[ro]data" and ".text", but not for the kernel-specific > ".init.*" sections. With a bit of help from the bin-utils people (Alan Modra) I recently discovered that the linker generate sections with different names when the flags differs, so fogetting "aw" casues the linekr to generate a section named .init.data.1 (or some other number). But I nevet got to investigate if ld does something magically with these autogenerated section names. But I added a check in modpost and it should warn about the code below. I would prefer the use of __CPUINITDATA __FINITDATA as defined in linux/init.h but otherwise - yes it should be fixed. With the use of __CPUINITDATA we can kill the ifdef too. Sam So something like this (untested - sorry): I sneaked an extra ENTRY() in just to clean up a bit. diff --git a/arch/x86/kernel/head_64.S b/arch/x86/kernel/head_64.S index 4f283ad..09b38d5 100644 --- a/arch/x86/kernel/head_64.S +++ b/arch/x86/kernel/head_64.S @@ -250,18 +250,13 @@ ENTRY(secondary_startup_64) lretq /* SMP bootup changes these two */ -#ifndef CONFIG_HOTPLUG_CPU - .pushsection .init.data -#endif + __CPUINITDATA .align 8 - .globl initial_code -initial_code: + ENTRY(initial_code) .quad x86_64_start_kernel -#ifndef CONFIG_HOTPLUG_CPU - .popsection -#endif - .globl init_rsp -init_rsp: + __FINITDATA + + ENTRY(init_rsp) .quad init_thread_union+THREAD_SIZE-8 bad_address: