* [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).