linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/8] section name cleanup for powerpc
@ 2009-04-30 23:56 Tim Abbott
  2009-04-30 23:56 ` [PATCH 1/8] powerpc: Remove unused __page_aligned macro Tim Abbott
  0 siblings, 1 reply; 12+ messages in thread
From: Tim Abbott @ 2009-04-30 23:56 UTC (permalink / raw)
  To: Sam Ravnborg
  Cc: Linux kernel mailing list, Anders Kaseorg, Waseem Daher,
	Denys Vlasenko, Jeff Arnold, Benjamin Herrenschmidt,
	Paul Mackerras, linuxppc-dev, Tim Abbott

This patch series cleans up the section names on the powerpc
architecture.  It requires the architecture-independent macro
definitions from this patch series:

<http://www.spinics.net/lists/mips/msg33499.html>

The long-term goal here is to add support for building the kernel with
-ffunction-sections -fdata-sections.  This requires renaming all the
magic section names in the kernel of the form .text.foo, .data.foo,
.bss.foo, and .rodata.foo to not have collisions with sections
generated for code like:

static int nosave = 0; /* -fdata-sections places in .data.nosave */
static void head(); /* -ffunction-sections places in .text.head */

Note that these patches have not been boot-tested (aside from testing
the analogous changes on x86), since I don't have access to the
appropriate hardware.

	-Tim Abbott


Tim Abbott (8):
  powerpc: Remove unused __page_aligned macro.
  powerpc: share .data output section definition between 32 and 64
    bits.
  powerpc: Use macros for .data.page_aligned section.
  powerpc: use NOSAVE_DATA macro for .data.nosave section.
  powerpc: use new macro for .data.cacheline_aligned section.
  powerpc: use new macros for .data.init_task.
  powerpc: use new macro for .data.read_mostly section.
  powerpc: convert to new generic read_mostly support.

 arch/powerpc/Kconfig                        |    3 ++
 arch/powerpc/include/asm/cache.h            |    4 --
 arch/powerpc/include/asm/page_64.h          |    8 ----
 arch/powerpc/kernel/init_task.c             |    3 +-
 arch/powerpc/kernel/machine_kexec_64.c      |    4 +-
 arch/powerpc/kernel/vdso.c                  |    3 +-
 arch/powerpc/kernel/vdso32/vdso32_wrapper.S |    3 +-
 arch/powerpc/kernel/vdso64/vdso64_wrapper.S |    3 +-
 arch/powerpc/kernel/vmlinux.lds.S           |   47 ++++++--------------------
 9 files changed, 23 insertions(+), 55 deletions(-)


^ permalink raw reply	[flat|nested] 12+ messages in thread

* [PATCH 1/8] powerpc: Remove unused __page_aligned macro.
  2009-04-30 23:56 [PATCH 0/8] section name cleanup for powerpc Tim Abbott
@ 2009-04-30 23:56 ` Tim Abbott
  2009-04-30 23:56   ` [PATCH 2/8] powerpc: share .data output section definition between 32 and 64 bits Tim Abbott
  0 siblings, 1 reply; 12+ messages in thread
From: Tim Abbott @ 2009-04-30 23:56 UTC (permalink / raw)
  To: Sam Ravnborg
  Cc: Linux kernel mailing list, Anders Kaseorg, Waseem Daher,
	Denys Vlasenko, Jeff Arnold, Benjamin Herrenschmidt,
	Paul Mackerras, linuxppc-dev, Tim Abbott

Signed-off-by: Tim Abbott <tabbott@mit.edu>
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: Paul Mackerras <paulus@samba.org>
Cc: linuxppc-dev@ozlabs.org
---
 arch/powerpc/include/asm/page_64.h |    8 --------
 1 files changed, 0 insertions(+), 8 deletions(-)

diff --git a/arch/powerpc/include/asm/page_64.h b/arch/powerpc/include/asm/page_64.h
index 043bfdf..20f9c74 100644
--- a/arch/powerpc/include/asm/page_64.h
+++ b/arch/powerpc/include/asm/page_64.h
@@ -152,14 +152,6 @@ do {						\
 
 #endif /* !CONFIG_HUGETLB_PAGE */
 
-#ifdef MODULE
-#define __page_aligned __attribute__((__aligned__(PAGE_SIZE)))
-#else
-#define __page_aligned \
-	__attribute__((__aligned__(PAGE_SIZE), \
-		__section__(".data.page_aligned")))
-#endif
-
 #define VM_DATA_DEFAULT_FLAGS \
 	(test_thread_flag(TIF_32BIT) ? \
 	 VM_DATA_DEFAULT_FLAGS32 : VM_DATA_DEFAULT_FLAGS64)
-- 
1.6.2.1


^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [PATCH 2/8] powerpc: share .data output section definition between 32 and 64 bits.
  2009-04-30 23:56 ` [PATCH 1/8] powerpc: Remove unused __page_aligned macro Tim Abbott
@ 2009-04-30 23:56   ` Tim Abbott
  2009-04-30 23:56     ` [PATCH 3/8] powerpc: Use macros for .data.page_aligned section Tim Abbott
  2009-05-01  1:46     ` [PATCH 2/8] powerpc: share .data output section definition between 32 and 64 bits Michael Ellerman
  0 siblings, 2 replies; 12+ messages in thread
From: Tim Abbott @ 2009-04-30 23:56 UTC (permalink / raw)
  To: Sam Ravnborg
  Cc: Linux kernel mailing list, Anders Kaseorg, Waseem Daher,
	Denys Vlasenko, Jeff Arnold, Benjamin Herrenschmidt,
	Paul Mackerras, linuxppc-dev, Tim Abbott

Since upcoming changes will add several more common pieces of code
between the 32-bit and 64-bit powerpc architectures, it seems best to
unify these two blocks.

Signed-off-by: Tim Abbott <tabbott@mit.edu>
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: Paul Mackerras <paulus@samba.org>
Cc: linuxppc-dev@ozlabs.org
---
 arch/powerpc/kernel/vmlinux.lds.S |    7 +++----
 1 files changed, 3 insertions(+), 4 deletions(-)

diff --git a/arch/powerpc/kernel/vmlinux.lds.S b/arch/powerpc/kernel/vmlinux.lds.S
index a047a6c..47899b0 100644
--- a/arch/powerpc/kernel/vmlinux.lds.S
+++ b/arch/powerpc/kernel/vmlinux.lds.S
@@ -220,20 +220,19 @@ SECTIONS
 	. = ALIGN(PAGE_SIZE);
 	_sdata = .;
 
-#ifdef CONFIG_PPC32
 	.data : AT(ADDR(.data) - LOAD_OFFSET) {
 		DATA_DATA
+#ifdef CONFIG_PPC32
 		*(.sdata)
 		*(.got.plt) *(.got)
-	}
 #else
-	.data : AT(ADDR(.data) - LOAD_OFFSET) {
-		DATA_DATA
 		*(.data.rel*)
 		*(.toc1)
 		*(.branch_lt)
+#endif
 	}
 
+#ifndef CONFIG_PPC32
 	.opd : AT(ADDR(.opd) - LOAD_OFFSET) {
 		*(.opd)
 	}
-- 
1.6.2.1


^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [PATCH 3/8] powerpc: Use macros for .data.page_aligned section.
  2009-04-30 23:56   ` [PATCH 2/8] powerpc: share .data output section definition between 32 and 64 bits Tim Abbott
@ 2009-04-30 23:56     ` Tim Abbott
  2009-04-30 23:56       ` [PATCH 4/8] powerpc: use NOSAVE_DATA macro for .data.nosave section Tim Abbott
  2009-05-01  1:46     ` [PATCH 2/8] powerpc: share .data output section definition between 32 and 64 bits Michael Ellerman
  1 sibling, 1 reply; 12+ messages in thread
From: Tim Abbott @ 2009-04-30 23:56 UTC (permalink / raw)
  To: Sam Ravnborg
  Cc: Linux kernel mailing list, Anders Kaseorg, Waseem Daher,
	Denys Vlasenko, Jeff Arnold, Benjamin Herrenschmidt,
	Paul Mackerras, linuxppc-dev, Tim Abbott

.data.page_aligned should not need a separate output section, so as
part of this cleanup I moved into the .data output section in the
linker scripts in order to eliminate unnecessary references to the
section name.

Note that this change moves the page-aligned data inside _edata.
Since it _is_ data, I suspect having page-aligned data outside _edata
was a bug.  Please comment if it is not.

Signed-off-by: Tim Abbott <tabbott@mit.edu>
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: Paul Mackerras <paulus@samba.org>
Cc: linuxppc-dev@ozlabs.org
---
 arch/powerpc/kernel/vdso.c                  |    3 ++-
 arch/powerpc/kernel/vdso32/vdso32_wrapper.S |    3 ++-
 arch/powerpc/kernel/vdso64/vdso64_wrapper.S |    3 ++-
 arch/powerpc/kernel/vmlinux.lds.S           |    6 +-----
 4 files changed, 7 insertions(+), 8 deletions(-)

diff --git a/arch/powerpc/kernel/vdso.c b/arch/powerpc/kernel/vdso.c
index ad06d5c..f075591 100644
--- a/arch/powerpc/kernel/vdso.c
+++ b/arch/powerpc/kernel/vdso.c
@@ -1,3 +1,4 @@
+
 /*
  *    Copyright (C) 2004 Benjamin Herrenschmidt, IBM Corp.
  *			 <benh@kernel.crashing.org>
@@ -74,7 +75,7 @@ static int vdso_ready;
 static union {
 	struct vdso_data	data;
 	u8			page[PAGE_SIZE];
-} vdso_data_store __attribute__((__section__(".data.page_aligned")));
+} vdso_data_store __page_aligned_data;
 struct vdso_data *vdso_data = &vdso_data_store.data;
 
 /* Format of the patch table */
diff --git a/arch/powerpc/kernel/vdso32/vdso32_wrapper.S b/arch/powerpc/kernel/vdso32/vdso32_wrapper.S
index 556f0ca..6e8f507 100644
--- a/arch/powerpc/kernel/vdso32/vdso32_wrapper.S
+++ b/arch/powerpc/kernel/vdso32/vdso32_wrapper.S
@@ -1,7 +1,8 @@
 #include <linux/init.h>
+#include <linux/linkage.h>
 #include <asm/page.h>
 
-	.section ".data.page_aligned"
+	__PAGE_ALIGNED_DATA
 
 	.globl vdso32_start, vdso32_end
 	.balign PAGE_SIZE
diff --git a/arch/powerpc/kernel/vdso64/vdso64_wrapper.S b/arch/powerpc/kernel/vdso64/vdso64_wrapper.S
index 0529cb9..b8553d6 100644
--- a/arch/powerpc/kernel/vdso64/vdso64_wrapper.S
+++ b/arch/powerpc/kernel/vdso64/vdso64_wrapper.S
@@ -1,7 +1,8 @@
 #include <linux/init.h>
+#include <linux/linkage.h>
 #include <asm/page.h>
 
-	.section ".data.page_aligned"
+	__PAGE_ALIGNED_DATA
 
 	.globl vdso64_start, vdso64_end
 	.balign PAGE_SIZE
diff --git a/arch/powerpc/kernel/vmlinux.lds.S b/arch/powerpc/kernel/vmlinux.lds.S
index 47899b0..d3dcea0 100644
--- a/arch/powerpc/kernel/vmlinux.lds.S
+++ b/arch/powerpc/kernel/vmlinux.lds.S
@@ -221,6 +221,7 @@ SECTIONS
 	_sdata = .;
 
 	.data : AT(ADDR(.data) - LOAD_OFFSET) {
+		PAGE_ALIGNED_DATA
 		DATA_DATA
 #ifdef CONFIG_PPC32
 		*(.sdata)
@@ -258,11 +259,6 @@ SECTIONS
 		*(.data.init_task)
 	}
 
-	. = ALIGN(PAGE_SIZE);
-	.data.page_aligned : AT(ADDR(.data.page_aligned) - LOAD_OFFSET) {
-		*(.data.page_aligned)
-	}
-
 	.data.cacheline_aligned : AT(ADDR(.data.cacheline_aligned) - LOAD_OFFSET) {
 		*(.data.cacheline_aligned)
 	}
-- 
1.6.2.1


^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [PATCH 4/8] powerpc: use NOSAVE_DATA macro for .data.nosave section.
  2009-04-30 23:56     ` [PATCH 3/8] powerpc: Use macros for .data.page_aligned section Tim Abbott
@ 2009-04-30 23:56       ` Tim Abbott
  2009-04-30 23:56         ` [PATCH 5/8] powerpc: use new macro for .data.cacheline_aligned section Tim Abbott
  0 siblings, 1 reply; 12+ messages in thread
From: Tim Abbott @ 2009-04-30 23:56 UTC (permalink / raw)
  To: Sam Ravnborg
  Cc: Linux kernel mailing list, Anders Kaseorg, Waseem Daher,
	Denys Vlasenko, Jeff Arnold, Benjamin Herrenschmidt,
	Paul Mackerras, linuxppc-dev, Tim Abbott

.data.nosave should not need a separate output section; this change
moves it into the .data section.

Signed-off-by: Tim Abbott <tabbott@mit.edu>
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: Paul Mackerras <paulus@samba.org>
Cc: linuxppc-dev@ozlabs.org
---
 arch/powerpc/kernel/vmlinux.lds.S |    9 +--------
 1 files changed, 1 insertions(+), 8 deletions(-)

diff --git a/arch/powerpc/kernel/vmlinux.lds.S b/arch/powerpc/kernel/vmlinux.lds.S
index d3dcea0..4223892 100644
--- a/arch/powerpc/kernel/vmlinux.lds.S
+++ b/arch/powerpc/kernel/vmlinux.lds.S
@@ -222,6 +222,7 @@ SECTIONS
 
 	.data : AT(ADDR(.data) - LOAD_OFFSET) {
 		PAGE_ALIGNED_DATA
+		NOSAVE_DATA
 		DATA_DATA
 #ifdef CONFIG_PPC32
 		*(.sdata)
@@ -268,14 +269,6 @@ SECTIONS
 		*(.data.read_mostly)
 	}
 
-	. = ALIGN(PAGE_SIZE);
-	.data_nosave : AT(ADDR(.data_nosave) - LOAD_OFFSET) {
-		__nosave_begin = .;
-		*(.data.nosave)
-		. = ALIGN(PAGE_SIZE);
-		__nosave_end = .;
-	}
-
 /*
  * And finally the bss
  */
-- 
1.6.2.1


^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [PATCH 5/8] powerpc: use new macro for .data.cacheline_aligned section.
  2009-04-30 23:56       ` [PATCH 4/8] powerpc: use NOSAVE_DATA macro for .data.nosave section Tim Abbott
@ 2009-04-30 23:56         ` Tim Abbott
  2009-04-30 23:56           ` [PATCH 6/8] powerpc: use new macros for .data.init_task Tim Abbott
  2009-05-18  4:23           ` [PATCH 5/8] powerpc: use new macro for .data.cacheline_aligned section Benjamin Herrenschmidt
  0 siblings, 2 replies; 12+ messages in thread
From: Tim Abbott @ 2009-04-30 23:56 UTC (permalink / raw)
  To: Sam Ravnborg
  Cc: Linux kernel mailing list, Anders Kaseorg, Waseem Daher,
	Denys Vlasenko, Jeff Arnold, Benjamin Herrenschmidt,
	Paul Mackerras, linuxppc-dev, Tim Abbott

.data.cacheline_aligned should not need a separate output section;
this change moves it into the .data section.

Since there isn't an ALIGN() directive before the
.data.cacheline_aligned scetion in the current linker script, I'd like
an ack from one of the powerpc maintainers that L1_CACHE_BYTES is the
correct alignment here.

Signed-off-by: Tim Abbott <tabbott@mit.edu>
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: Paul Mackerras <paulus@samba.org>
Cc: linuxppc-dev@ozlabs.org
---
 arch/powerpc/kernel/vmlinux.lds.S |    5 +----
 1 files changed, 1 insertions(+), 4 deletions(-)

diff --git a/arch/powerpc/kernel/vmlinux.lds.S b/arch/powerpc/kernel/vmlinux.lds.S
index 4223892..e769717 100644
--- a/arch/powerpc/kernel/vmlinux.lds.S
+++ b/arch/powerpc/kernel/vmlinux.lds.S
@@ -223,6 +223,7 @@ SECTIONS
 	.data : AT(ADDR(.data) - LOAD_OFFSET) {
 		PAGE_ALIGNED_DATA
 		NOSAVE_DATA
+		CACHELINE_ALIGNED_DATA(L1_CACHE_BYTES)
 		DATA_DATA
 #ifdef CONFIG_PPC32
 		*(.sdata)
@@ -260,10 +261,6 @@ SECTIONS
 		*(.data.init_task)
 	}
 
-	.data.cacheline_aligned : AT(ADDR(.data.cacheline_aligned) - LOAD_OFFSET) {
-		*(.data.cacheline_aligned)
-	}
-
 	. = ALIGN(L1_CACHE_BYTES);
 	.data.read_mostly : AT(ADDR(.data.read_mostly) - LOAD_OFFSET) {
 		*(.data.read_mostly)
-- 
1.6.2.1


^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [PATCH 6/8] powerpc: use new macros for .data.init_task.
  2009-04-30 23:56         ` [PATCH 5/8] powerpc: use new macro for .data.cacheline_aligned section Tim Abbott
@ 2009-04-30 23:56           ` Tim Abbott
  2009-04-30 23:56             ` [PATCH 7/8] powerpc: use new macro for .data.read_mostly section Tim Abbott
  2009-05-18  4:23           ` [PATCH 5/8] powerpc: use new macro for .data.cacheline_aligned section Benjamin Herrenschmidt
  1 sibling, 1 reply; 12+ messages in thread
From: Tim Abbott @ 2009-04-30 23:56 UTC (permalink / raw)
  To: Sam Ravnborg
  Cc: Linux kernel mailing list, Anders Kaseorg, Waseem Daher,
	Denys Vlasenko, Jeff Arnold, Benjamin Herrenschmidt,
	Paul Mackerras, linuxppc-dev, Tim Abbott

.data.init_task should not need a separate output section; this change
moves it into the .data section.

This patch uses THREAD_SIZE rather than 8192/16384 for the alignment.
This should have the effect of increasing the alignment to 32768 if
CONFIG_PPC_256K_PAGES is defined, but it seems that it should be that
way.  One of the powerpc maintainers should confirm that this is
correct, otherwise we can go back to the #ifdef.

Signed-off-by: Tim Abbott <tabbott@mit.edu>
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: Paul Mackerras <paulus@samba.org>
Cc: linuxppc-dev@ozlabs.org
---
 arch/powerpc/kernel/init_task.c        |    3 +--
 arch/powerpc/kernel/machine_kexec_64.c |    4 ++--
 arch/powerpc/kernel/vmlinux.lds.S      |   13 +++----------
 3 files changed, 6 insertions(+), 14 deletions(-)

diff --git a/arch/powerpc/kernel/init_task.c b/arch/powerpc/kernel/init_task.c
index 688b329..a4eb25d 100644
--- a/arch/powerpc/kernel/init_task.c
+++ b/arch/powerpc/kernel/init_task.c
@@ -20,8 +20,7 @@ EXPORT_SYMBOL(init_mm);
  * way process stacks are handled. This is done by having a special
  * "init_task" linker map entry..
  */
-union thread_union init_thread_union 
-	__attribute__((__section__(".data.init_task"))) =
+union thread_union init_thread_union __init_task_data =
 		{ INIT_THREAD_INFO(init_task) };
 
 /*
diff --git a/arch/powerpc/kernel/machine_kexec_64.c b/arch/powerpc/kernel/machine_kexec_64.c
index 49e705f..3761f76 100644
--- a/arch/powerpc/kernel/machine_kexec_64.c
+++ b/arch/powerpc/kernel/machine_kexec_64.c
@@ -10,6 +10,7 @@
  */
 
 
+#include <linux/init_task.h>
 #include <linux/kexec.h>
 #include <linux/smp.h>
 #include <linux/thread_info.h>
@@ -249,8 +250,7 @@ static void kexec_prepare_cpus(void)
  * We could use a smaller stack if we don't care about anything using
  * current, but that audit has not been performed.
  */
-static union thread_union kexec_stack
-	__attribute__((__section__(".data.init_task"))) = { };
+static union thread_union kexec_stack __init_task_data = { };
 
 /* Our assembly helper, in kexec_stub.S */
 extern NORET_TYPE void kexec_sequence(void *newstack, unsigned long start,
diff --git a/arch/powerpc/kernel/vmlinux.lds.S b/arch/powerpc/kernel/vmlinux.lds.S
index e769717..f91d7c1 100644
--- a/arch/powerpc/kernel/vmlinux.lds.S
+++ b/arch/powerpc/kernel/vmlinux.lds.S
@@ -6,6 +6,7 @@
 #include <asm/page.h>
 #include <asm-generic/vmlinux.lds.h>
 #include <asm/cache.h>
+#include <asm/thread_info.h>
 
 ENTRY(_stext)
 
@@ -221,6 +222,8 @@ SECTIONS
 	_sdata = .;
 
 	.data : AT(ADDR(.data) - LOAD_OFFSET) {
+		/* The initial task and kernel stack */
+		INIT_TASK_DATA(THREAD_SIZE)
 		PAGE_ALIGNED_DATA
 		NOSAVE_DATA
 		CACHELINE_ALIGNED_DATA(L1_CACHE_BYTES)
@@ -251,16 +254,6 @@ SECTIONS
 	_edata  =  .;
 	PROVIDE32 (edata = .);
 
-	/* The initial task and kernel stack */
-#ifdef CONFIG_PPC32
-	. = ALIGN(8192);
-#else
-	. = ALIGN(16384);
-#endif
-	.data.init_task : AT(ADDR(.data.init_task) - LOAD_OFFSET) {
-		*(.data.init_task)
-	}
-
 	. = ALIGN(L1_CACHE_BYTES);
 	.data.read_mostly : AT(ADDR(.data.read_mostly) - LOAD_OFFSET) {
 		*(.data.read_mostly)
-- 
1.6.2.1


^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [PATCH 7/8] powerpc: use new macro for .data.read_mostly section.
  2009-04-30 23:56           ` [PATCH 6/8] powerpc: use new macros for .data.init_task Tim Abbott
@ 2009-04-30 23:56             ` Tim Abbott
  2009-04-30 23:56               ` [PATCH 8/8] powerpc: convert to new generic read_mostly support Tim Abbott
  0 siblings, 1 reply; 12+ messages in thread
From: Tim Abbott @ 2009-04-30 23:56 UTC (permalink / raw)
  To: Sam Ravnborg
  Cc: Linux kernel mailing list, Anders Kaseorg, Waseem Daher,
	Denys Vlasenko, Jeff Arnold, Benjamin Herrenschmidt,
	Paul Mackerras, linuxppc-dev, Tim Abbott

.data.read_mostly should not need a separate output section; this
change moves it into the .data section.

Signed-off-by: Tim Abbott <tabbott@mit.edu>
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: Paul Mackerras <paulus@samba.org>
Cc: linuxppc-dev@ozlabs.org
---
 arch/powerpc/kernel/vmlinux.lds.S |    7 ++-----
 1 files changed, 2 insertions(+), 5 deletions(-)

diff --git a/arch/powerpc/kernel/vmlinux.lds.S b/arch/powerpc/kernel/vmlinux.lds.S
index f91d7c1..c982827 100644
--- a/arch/powerpc/kernel/vmlinux.lds.S
+++ b/arch/powerpc/kernel/vmlinux.lds.S
@@ -1,3 +1,4 @@
+
 #ifdef CONFIG_PPC64
 #define PROVIDE32(x)	PROVIDE(__unused__##x)
 #else
@@ -227,6 +228,7 @@ SECTIONS
 		PAGE_ALIGNED_DATA
 		NOSAVE_DATA
 		CACHELINE_ALIGNED_DATA(L1_CACHE_BYTES)
+		READ_MOSTLY_DATA(L1_CACHE_BYTES)
 		DATA_DATA
 #ifdef CONFIG_PPC32
 		*(.sdata)
@@ -254,11 +256,6 @@ SECTIONS
 	_edata  =  .;
 	PROVIDE32 (edata = .);
 
-	. = ALIGN(L1_CACHE_BYTES);
-	.data.read_mostly : AT(ADDR(.data.read_mostly) - LOAD_OFFSET) {
-		*(.data.read_mostly)
-	}
-
 /*
  * And finally the bss
  */
-- 
1.6.2.1


^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [PATCH 8/8] powerpc: convert to new generic read_mostly support.
  2009-04-30 23:56             ` [PATCH 7/8] powerpc: use new macro for .data.read_mostly section Tim Abbott
@ 2009-04-30 23:56               ` Tim Abbott
  0 siblings, 0 replies; 12+ messages in thread
From: Tim Abbott @ 2009-04-30 23:56 UTC (permalink / raw)
  To: Sam Ravnborg
  Cc: Linux kernel mailing list, Anders Kaseorg, Waseem Daher,
	Denys Vlasenko, Jeff Arnold, Benjamin Herrenschmidt,
	Paul Mackerras, linuxppc-dev, Tim Abbott

Signed-off-by: Tim Abbott <tabbott@mit.edu>
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: Paul Mackerras <paulus@samba.org>
Cc: linuxppc-dev@ozlabs.org
---
 arch/powerpc/Kconfig             |    3 +++
 arch/powerpc/include/asm/cache.h |    4 ----
 2 files changed, 3 insertions(+), 4 deletions(-)

diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig
index 4c78045..d29ea59 100644
--- a/arch/powerpc/Kconfig
+++ b/arch/powerpc/Kconfig
@@ -32,6 +32,9 @@ config GENERIC_CMOS_UPDATE
 config GENERIC_TIME
 	def_bool y
 
+config HAVE_READ_MOSTLY_DATA
+	def_bool y
+
 config GENERIC_TIME_VSYSCALL
 	def_bool y
 
diff --git a/arch/powerpc/include/asm/cache.h b/arch/powerpc/include/asm/cache.h
index 81de6eb..1843a11 100644
--- a/arch/powerpc/include/asm/cache.h
+++ b/arch/powerpc/include/asm/cache.h
@@ -37,9 +37,5 @@ struct ppc64_caches {
 extern struct ppc64_caches ppc64_caches;
 #endif /* __powerpc64__ && ! __ASSEMBLY__ */
 
-#if !defined(__ASSEMBLY__)
-#define __read_mostly __attribute__((__section__(".data.read_mostly")))
-#endif
-
 #endif /* __KERNEL__ */
 #endif /* _ASM_POWERPC_CACHE_H */
-- 
1.6.2.1


^ permalink raw reply related	[flat|nested] 12+ messages in thread

* Re: [PATCH 2/8] powerpc: share .data output section definition between 32 and 64 bits.
  2009-04-30 23:56   ` [PATCH 2/8] powerpc: share .data output section definition between 32 and 64 bits Tim Abbott
  2009-04-30 23:56     ` [PATCH 3/8] powerpc: Use macros for .data.page_aligned section Tim Abbott
@ 2009-05-01  1:46     ` Michael Ellerman
  2009-05-01  1:56       ` Tim Abbott
  1 sibling, 1 reply; 12+ messages in thread
From: Michael Ellerman @ 2009-05-01  1:46 UTC (permalink / raw)
  To: Tim Abbott
  Cc: Sam Ravnborg, Denys Vlasenko, Jeff Arnold,
	Linux kernel mailing list, Anders Kaseorg, linuxppc-dev,
	Paul Mackerras, Waseem Daher

[-- Attachment #1: Type: text/plain, Size: 1284 bytes --]

On Thu, 2009-04-30 at 19:56 -0400, Tim Abbott wrote:
> Since upcoming changes will add several more common pieces of code
> between the 32-bit and 64-bit powerpc architectures, it seems best to
> unify these two blocks.
> 
> Signed-off-by: Tim Abbott <tabbott@mit.edu>
> Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
> Cc: Paul Mackerras <paulus@samba.org>
> Cc: linuxppc-dev@ozlabs.org
> ---
>  arch/powerpc/kernel/vmlinux.lds.S |    7 +++----
>  1 files changed, 3 insertions(+), 4 deletions(-)
> 
> diff --git a/arch/powerpc/kernel/vmlinux.lds.S b/arch/powerpc/kernel/vmlinux.lds.S
> index a047a6c..47899b0 100644
> --- a/arch/powerpc/kernel/vmlinux.lds.S
> +++ b/arch/powerpc/kernel/vmlinux.lds.S
> @@ -220,20 +220,19 @@ SECTIONS
>  	. = ALIGN(PAGE_SIZE);
>  	_sdata = .;
>  
> -#ifdef CONFIG_PPC32
>  	.data : AT(ADDR(.data) - LOAD_OFFSET) {
>  		DATA_DATA
> +#ifdef CONFIG_PPC32
>  		*(.sdata)
>  		*(.got.plt) *(.got)
> -	}
>  #else
> -	.data : AT(ADDR(.data) - LOAD_OFFSET) {
> -		DATA_DATA
>  		*(.data.rel*)
>  		*(.toc1)
>  		*(.branch_lt)
> +#endif
>  	}
>  
> +#ifndef CONFIG_PPC32
>  	.opd : AT(ADDR(.opd) - LOAD_OFFSET) {
>  		*(.opd)
>  	}

This would be clearer in the positive, as in #ifdef CONFIG_PPC64.

cheers

[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 197 bytes --]

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH 2/8] powerpc: share .data output section definition between 32 and 64 bits.
  2009-05-01  1:46     ` [PATCH 2/8] powerpc: share .data output section definition between 32 and 64 bits Michael Ellerman
@ 2009-05-01  1:56       ` Tim Abbott
  0 siblings, 0 replies; 12+ messages in thread
From: Tim Abbott @ 2009-05-01  1:56 UTC (permalink / raw)
  To: Michael Ellerman
  Cc: Sam Ravnborg, Denys Vlasenko, Jeff Arnold,
	Linux kernel mailing list, Anders Kaseorg, linuxppc-dev,
	Paul Mackerras, Waseem Daher

On Fri, 1 May 2009, Michael Ellerman wrote:

> On Thu, 2009-04-30 at 19:56 -0400, Tim Abbott wrote:
> > +#ifndef CONFIG_PPC32
> 
> This would be clearer in the positive, as in #ifdef CONFIG_PPC64.

Good point.  New version below.

	-Tim Abbott

powerpc: share .data output section definition between 32 and 64 bits.

Since upcoming changes will add several more common pieces of code
between the 32-bit and 64-bit powerpc architectures, it seems best to
unify these two blocks.

Signed-off-by: Tim Abbott <tabbott@mit.edu>
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: Paul Mackerras <paulus@samba.org>
Cc: linuxppc-dev@ozlabs.org
---
 arch/powerpc/kernel/vmlinux.lds.S |    7 +++----
 1 files changed, 3 insertions(+), 4 deletions(-)

diff --git a/arch/powerpc/kernel/vmlinux.lds.S b/arch/powerpc/kernel/vmlinux.lds.S
index b9ef164..de80f89 100644
--- a/arch/powerpc/kernel/vmlinux.lds.S
+++ b/arch/powerpc/kernel/vmlinux.lds.S
@@ -219,20 +219,19 @@ SECTIONS
 	. = ALIGN(PAGE_SIZE);
 	_sdata = .;
 
-#ifdef CONFIG_PPC32
 	.data : AT(ADDR(.data) - LOAD_OFFSET) {
 		DATA_DATA
+#ifdef CONFIG_PPC32
 		*(.sdata)
 		*(.got.plt) *(.got)
-	}
 #else
-	.data : AT(ADDR(.data) - LOAD_OFFSET) {
-		DATA_DATA
 		*(.data.rel*)
 		*(.toc1)
 		*(.branch_lt)
+#endif
 	}
 
+#ifdef CONFIG_PPC64
 	.opd : AT(ADDR(.opd) - LOAD_OFFSET) {
 		*(.opd)
 	}
-- 
1.6.2.1


^ permalink raw reply related	[flat|nested] 12+ messages in thread

* Re: [PATCH 5/8] powerpc: use new macro for .data.cacheline_aligned section.
  2009-04-30 23:56         ` [PATCH 5/8] powerpc: use new macro for .data.cacheline_aligned section Tim Abbott
  2009-04-30 23:56           ` [PATCH 6/8] powerpc: use new macros for .data.init_task Tim Abbott
@ 2009-05-18  4:23           ` Benjamin Herrenschmidt
  1 sibling, 0 replies; 12+ messages in thread
From: Benjamin Herrenschmidt @ 2009-05-18  4:23 UTC (permalink / raw)
  To: Tim Abbott
  Cc: Sam Ravnborg, Linux kernel mailing list, Anders Kaseorg,
	Waseem Daher, Denys Vlasenko, Jeff Arnold, Paul Mackerras,
	linuxppc-dev

On Thu, 2009-04-30 at 19:56 -0400, Tim Abbott wrote:
> .data.cacheline_aligned should not need a separate output section;
> this change moves it into the .data section.
> 
> Since there isn't an ALIGN() directive before the
> .data.cacheline_aligned scetion in the current linker script, I'd like
> an ack from one of the powerpc maintainers that L1_CACHE_BYTES is the
> correct alignment here.

Yes, that's the right size.

Also. that looks like a bug to me in the current stuff. I'm queuing your
patch set for .31 but I'll stick a "fix" in .30 for that just in case
which unfortunately means your patches will probably need to be rebased.

Cheers,
Ben.

> Signed-off-by: Tim Abbott <tabbott@mit.edu>
> Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
> Cc: Paul Mackerras <paulus@samba.org>
> Cc: linuxppc-dev@ozlabs.org
> ---
>  arch/powerpc/kernel/vmlinux.lds.S |    5 +----
>  1 files changed, 1 insertions(+), 4 deletions(-)
> 
> diff --git a/arch/powerpc/kernel/vmlinux.lds.S b/arch/powerpc/kernel/vmlinux.lds.S
> index 4223892..e769717 100644
> --- a/arch/powerpc/kernel/vmlinux.lds.S
> +++ b/arch/powerpc/kernel/vmlinux.lds.S
> @@ -223,6 +223,7 @@ SECTIONS
>  	.data : AT(ADDR(.data) - LOAD_OFFSET) {
>  		PAGE_ALIGNED_DATA
>  		NOSAVE_DATA
> +		CACHELINE_ALIGNED_DATA(L1_CACHE_BYTES)
>  		DATA_DATA
>  #ifdef CONFIG_PPC32
>  		*(.sdata)
> @@ -260,10 +261,6 @@ SECTIONS
>  		*(.data.init_task)
>  	}
>  
> -	.data.cacheline_aligned : AT(ADDR(.data.cacheline_aligned) - LOAD_OFFSET) {
> -		*(.data.cacheline_aligned)
> -	}
> -
>  	. = ALIGN(L1_CACHE_BYTES);
>  	.data.read_mostly : AT(ADDR(.data.read_mostly) - LOAD_OFFSET) {
>  		*(.data.read_mostly)


^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2009-05-18  4:24 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2009-04-30 23:56 [PATCH 0/8] section name cleanup for powerpc Tim Abbott
2009-04-30 23:56 ` [PATCH 1/8] powerpc: Remove unused __page_aligned macro Tim Abbott
2009-04-30 23:56   ` [PATCH 2/8] powerpc: share .data output section definition between 32 and 64 bits Tim Abbott
2009-04-30 23:56     ` [PATCH 3/8] powerpc: Use macros for .data.page_aligned section Tim Abbott
2009-04-30 23:56       ` [PATCH 4/8] powerpc: use NOSAVE_DATA macro for .data.nosave section Tim Abbott
2009-04-30 23:56         ` [PATCH 5/8] powerpc: use new macro for .data.cacheline_aligned section Tim Abbott
2009-04-30 23:56           ` [PATCH 6/8] powerpc: use new macros for .data.init_task Tim Abbott
2009-04-30 23:56             ` [PATCH 7/8] powerpc: use new macro for .data.read_mostly section Tim Abbott
2009-04-30 23:56               ` [PATCH 8/8] powerpc: convert to new generic read_mostly support Tim Abbott
2009-05-18  4:23           ` [PATCH 5/8] powerpc: use new macro for .data.cacheline_aligned section Benjamin Herrenschmidt
2009-05-01  1:46     ` [PATCH 2/8] powerpc: share .data output section definition between 32 and 64 bits Michael Ellerman
2009-05-01  1:56       ` Tim Abbott

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).