Thread (15 messages) 15 messages, 4 authors, 2017-10-03
STALE3200d REVIEWED: 1 (0M)

[PATCH v2 3/5] ARM: vmlinux.lds.S: replace open coded .data sections with generic macros

From: Ard Biesheuvel <hidden>
Date: 2017-08-30 15:11:53

On 30 August 2017 at 03:55, Nicolas Pitre [off-list ref] wrote:
Our .data section is missing PAGE_ALIGNED_DATA() which contains,
amongst other things, the vdso page. This creates a System.map that
looks like this:

c15769a8 D _edata
c1577000 d vdso_data_store
c1578000 D __start___bug_table
c1580544 D __stop___bug_table
c1580544 B __bss_start

By using RW_DATA_SECTION() we pick whatever generic sections might be
added in the future and have page-aligned data next to other strongly
aligned data. Furthermore we now include the entire thing, including the
bug table, in the data accounting surrounded by _sdata/_edata.

While at it let's also remplace the open coded .init.data by its
equivalent INIT_DATA_SECTION().

Signed-off-by: Nicolas Pitre <redacted>
Acked-by: Ard Biesheuvel <redacted>
quoted hunk ↗ jump to hunk
---
 arch/arm/kernel/vmlinux.lds.S | 38 ++++++--------------------------------
 1 file changed, 6 insertions(+), 32 deletions(-)
diff --git a/arch/arm/kernel/vmlinux.lds.S b/arch/arm/kernel/vmlinux.lds.S
index 4f86b4b7bd..f73ba564b5 100644
--- a/arch/arm/kernel/vmlinux.lds.S
+++ b/arch/arm/kernel/vmlinux.lds.S
@@ -214,14 +214,9 @@ SECTIONS
                *(.pv_table)
                __pv_table_end = .;
        }
-       .init.data : {
-               INIT_DATA
-               INIT_SETUP(16)
-               INIT_CALLS
-               CON_INITCALL
-               SECURITY_INITCALL
-               INIT_RAM_FS
-       }
+
+       INIT_DATA_SECTION(16)
+
        .exit.data : {
                ARM_EXIT_KEEP(EXIT_DATA)
        }
@@ -237,30 +232,9 @@ SECTIONS
 #endif
        __init_end = .;

-       .data : {
-               _data = .;              /* address in memory */
-               _sdata = .;
-
-               /*
-                * first, the init task union, aligned
-                * to an 8192 byte boundary.
-                */
-               INIT_TASK_DATA(THREAD_SIZE)
-
-               NOSAVE_DATA
-               CACHELINE_ALIGNED_DATA(L1_CACHE_BYTES)
-               READ_MOSTLY_DATA(L1_CACHE_BYTES)
-
-               /*
-                * and the usual data section
-                */
-               DATA_DATA
-               CONSTRUCTORS
-
-               _edata = .;
-       }
-
-       BUG_TABLE
+       _sdata = .;
+       RW_DATA_SECTION(L1_CACHE_BYTES, PAGE_SIZE, THREAD_SIZE)
+       _edata = .;

 #ifdef CONFIG_HAVE_TCM
         /*
--
2.9.5
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help