Re: [git pull] x86 updates

From: Sam Ravnborg
Date: Tue Feb 05 2008 - 14:22:43 EST


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:
--
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/