All of lore.kernel.org
 help / color / mirror / Atom feed
From: Dave Martin <dave.martin@linaro.org>
To: Nicolas Pitre <nicolas.pitre@linaro.org>
Cc: Russell King - ARM Linux <linux@arm.linux.org.uk>,
	linux-omap@vger.kernel.org, linux-arm-kernel@lists.infradead.org
Subject: [PATCH v2] ARM: Avoid discarding sections that might have SMP_ON_UP fixups SMP_ON_UP fixups
Date: Thu, 27 Jan 2011 14:37:09 +0000	[thread overview]
Message-ID: <20110127143709.GA13735@arm.com> (raw)
In-Reply-To: <alpine.LFD.2.00.1101261617190.8580@xanadu.home>

On Wed, Jan 26, 2011 at 04:31:37PM -0500, Nicolas Pitre wrote:
> Since discarded sections are by definition not used, we should at least 
> put them into the .init section so to discard them at run time.  And 
> only the EXIT_TEXT and EXIT_DATA would need to be kept (see x86 for 
> example).
> 
> 
> Nicolas

I'll check up on whether we need to care about writable data.
For now I've just attempted to move stuff to .init.

Cheers
---Dave



v2: Also move the .exit stuff to the .init area where it can
be discarded on boot.  The result builds, but I haven't tested it
yet.

v1:

SMP_ON_UP fixups lead to vmlinux link errors if those sections are
discarded at link-time.  In particular this may happen for built-in
__exit stuff.

This patch modifies the vmlinux linker script to reduce the amount
of discarded sections, and tries to make sure that __exit sections
are kept in.

This is a hack and probably wrong!

Signed-off-by: Dave Martin <dave.martin@linaro.org>
---
 arch/arm/kernel/vmlinux.lds.S |   18 ++++++++++++++++++
 1 files changed, 18 insertions(+), 0 deletions(-)

diff --git a/arch/arm/kernel/vmlinux.lds.S b/arch/arm/kernel/vmlinux.lds.S
index 45b5651..5774b95 100644
--- a/arch/arm/kernel/vmlinux.lds.S
+++ b/arch/arm/kernel/vmlinux.lds.S
@@ -43,6 +43,17 @@ SECTIONS
 		_sinittext = .;
 			HEAD_TEXT
 			INIT_TEXT
+#ifdef CONFIG_SMP_ON_UP
+			*(.exit.text)
+			CPU_KEEP(exit.text)
+			DEV_KEEP(exit.text)
+			MEM_KEEP(exit.text)
+#endif
+#ifdef CONFIG_SMP_ON_UP
+			CPU_KEEP(exit.rodata)
+			DEV_KEEP(exit.rodata)
+			MEM_KEEP(exit.rodata)
+#endif
 		_einittext = .;
 		ARM_CPU_DISCARD(PROC_INFO)
 		__arch_info_begin = .;
@@ -72,6 +83,11 @@ SECTIONS
 		__init_begin = _stext;
 		INIT_DATA
 #endif
+#ifdef CONFIG_SMP_ON_UP
+		DEV_KEEP(exit.data)
+		CPU_KEEP(exit.data)
+		MEM_KEEP(exit.data)
+#endif
 	}
 
 	PERCPU(PAGE_SIZE)
@@ -85,6 +101,7 @@ SECTIONS
 	 * unwind exit sections must be discarded before the rest of the
 	 * unwind sections get included.
 	 */
+#ifndef CONFIG_SMP_ON_UP
 	/DISCARD/ : {
 		*(.ARM.exidx.exit.text)
 		*(.ARM.extab.exit.text)
@@ -99,6 +116,7 @@ SECTIONS
 		*(__ex_table)
 #endif
 	}
+#endif
 
 	.text : {			/* Real text segment		*/
 		_text = .;		/* Text and read-only data	*/
-- 
1.7.1


WARNING: multiple messages have this Message-ID (diff)
From: dave.martin@linaro.org (Dave Martin)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v2] ARM: Avoid discarding sections that might have SMP_ON_UP fixups SMP_ON_UP fixups
Date: Thu, 27 Jan 2011 14:37:09 +0000	[thread overview]
Message-ID: <20110127143709.GA13735@arm.com> (raw)
In-Reply-To: <alpine.LFD.2.00.1101261617190.8580@xanadu.home>

On Wed, Jan 26, 2011 at 04:31:37PM -0500, Nicolas Pitre wrote:
> Since discarded sections are by definition not used, we should at least 
> put them into the .init section so to discard them at run time.  And 
> only the EXIT_TEXT and EXIT_DATA would need to be kept (see x86 for 
> example).
> 
> 
> Nicolas

I'll check up on whether we need to care about writable data.
For now I've just attempted to move stuff to .init.

Cheers
---Dave



v2: Also move the .exit stuff to the .init area where it can
be discarded on boot.  The result builds, but I haven't tested it
yet.

v1:

SMP_ON_UP fixups lead to vmlinux link errors if those sections are
discarded at link-time.  In particular this may happen for built-in
__exit stuff.

This patch modifies the vmlinux linker script to reduce the amount
of discarded sections, and tries to make sure that __exit sections
are kept in.

This is a hack and probably wrong!

Signed-off-by: Dave Martin <dave.martin@linaro.org>
---
 arch/arm/kernel/vmlinux.lds.S |   18 ++++++++++++++++++
 1 files changed, 18 insertions(+), 0 deletions(-)

diff --git a/arch/arm/kernel/vmlinux.lds.S b/arch/arm/kernel/vmlinux.lds.S
index 45b5651..5774b95 100644
--- a/arch/arm/kernel/vmlinux.lds.S
+++ b/arch/arm/kernel/vmlinux.lds.S
@@ -43,6 +43,17 @@ SECTIONS
 		_sinittext = .;
 			HEAD_TEXT
 			INIT_TEXT
+#ifdef CONFIG_SMP_ON_UP
+			*(.exit.text)
+			CPU_KEEP(exit.text)
+			DEV_KEEP(exit.text)
+			MEM_KEEP(exit.text)
+#endif
+#ifdef CONFIG_SMP_ON_UP
+			CPU_KEEP(exit.rodata)
+			DEV_KEEP(exit.rodata)
+			MEM_KEEP(exit.rodata)
+#endif
 		_einittext = .;
 		ARM_CPU_DISCARD(PROC_INFO)
 		__arch_info_begin = .;
@@ -72,6 +83,11 @@ SECTIONS
 		__init_begin = _stext;
 		INIT_DATA
 #endif
+#ifdef CONFIG_SMP_ON_UP
+		DEV_KEEP(exit.data)
+		CPU_KEEP(exit.data)
+		MEM_KEEP(exit.data)
+#endif
 	}
 
 	PERCPU(PAGE_SIZE)
@@ -85,6 +101,7 @@ SECTIONS
 	 * unwind exit sections must be discarded before the rest of the
 	 * unwind sections get included.
 	 */
+#ifndef CONFIG_SMP_ON_UP
 	/DISCARD/ : {
 		*(.ARM.exidx.exit.text)
 		*(.ARM.extab.exit.text)
@@ -99,6 +116,7 @@ SECTIONS
 		*(__ex_table)
 #endif
 	}
+#endif
 
 	.text : {			/* Real text segment		*/
 		_text = .;		/* Text and read-only data	*/
-- 
1.7.1

  reply	other threads:[~2011-01-27 14:37 UTC|newest]

Thread overview: 254+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-01-17 19:20 [PATCH 00/14] Fix issues with ARMv6+v6k+v7 kernels Russell King - ARM Linux
2011-01-17 19:20 ` Russell King - ARM Linux
2011-01-17 19:21 ` [PATCH 01/14] ARM: bitops: ensure set/clear/change bitops take a word-aligned pointer Russell King - ARM Linux
2011-01-17 19:21   ` Russell King - ARM Linux
2011-01-18  6:00   ` Nicolas Pitre
2011-01-18  6:00     ` Nicolas Pitre
2011-01-18 14:30     ` Russell King - ARM Linux
2011-01-18 14:30       ` Russell King - ARM Linux
2011-01-18 18:20       ` Nicolas Pitre
2011-01-18 18:20         ` Nicolas Pitre
2011-01-18 15:11     ` Catalin Marinas
2011-01-18 15:11       ` Catalin Marinas
2011-01-25 19:50   ` Tony Lindgren
2011-01-25 19:50     ` Tony Lindgren
2011-01-17 19:21 ` [PATCH 02/14] ARM: bitops: switch set/clear/change bitops to use ldrex/strex Russell King - ARM Linux
2011-01-17 19:21   ` Russell King - ARM Linux
2011-01-18  5:42   ` Nicolas Pitre
2011-01-18  5:42     ` Nicolas Pitre
2011-01-23  0:16   ` Russell King - ARM Linux
2011-01-23  0:16     ` Russell King - ARM Linux
2011-01-23  4:44     ` Nicolas Pitre
2011-01-23  4:44       ` Nicolas Pitre
2011-01-23  9:35       ` Russell King - ARM Linux
2011-01-23  9:35         ` Russell King - ARM Linux
2011-01-24  8:38         ` Poddar, Sourav
2011-01-24  8:38           ` Poddar, Sourav
2011-01-24  8:57           ` Poddar, Sourav
2011-01-24  8:57             ` Poddar, Sourav
2011-01-24 10:28             ` Russell King - ARM Linux
2011-01-24 10:28               ` Russell King - ARM Linux
2011-01-24 13:47               ` Poddar, Sourav
2011-01-24 13:47                 ` Poddar, Sourav
2011-01-24 14:11                 ` Russell King - ARM Linux
2011-01-24 14:11                   ` Russell King - ARM Linux
2011-01-24 14:54                   ` Poddar, Sourav
2011-01-24 14:54                     ` Poddar, Sourav
2011-01-24 15:00                     ` Russell King - ARM Linux
2011-01-24 15:00                       ` Russell King - ARM Linux
2011-01-25 13:57     ` Will Deacon
2011-01-25 13:57     ` Will Deacon
2011-01-25 14:11       ` Russell King - ARM Linux
2011-01-25 14:11         ` Russell King - ARM Linux
2011-01-25 14:19         ` Will Deacon
2011-01-25 14:19         ` Will Deacon
     [not found]     ` <000601cbbc97$cc6955d0$653c0170$%deacon@arm.com>
2011-01-25 21:38       ` Nicolas Pitre
2011-01-25 21:38         ` Nicolas Pitre
2011-01-25 19:51   ` Tony Lindgren
2011-01-25 19:51     ` Tony Lindgren
2011-01-17 19:22 ` [PATCH 03/14] ARM: v6k: remove CPU_32v6K dependencies in asm/spinlock.h Russell King - ARM Linux
2011-01-17 19:22   ` Russell King - ARM Linux
2011-01-17 23:13   ` Tony Lindgren
2011-01-17 23:13     ` Tony Lindgren
2011-01-25 16:43   ` Dave Martin
2011-01-25 16:43     ` Dave Martin
2011-01-25 16:59     ` Russell King - ARM Linux
2011-01-25 16:59       ` Russell King - ARM Linux
2011-01-25 17:33       ` Dave Martin
2011-01-25 17:33         ` Dave Martin
2011-01-25 17:46         ` Russell King - ARM Linux
2011-01-25 17:46           ` Russell King - ARM Linux
2011-01-25 21:21           ` Nicolas Pitre
2011-01-25 21:21             ` Nicolas Pitre
2011-01-26 11:11             ` Dave Martin
2011-01-26 11:11               ` Dave Martin
2011-01-26 12:44               ` Russell King - ARM Linux
2011-01-26 12:44                 ` Russell King - ARM Linux
2011-01-26 17:25                 ` [PATCH] ARM: Avoid discarding sections that might have SMP_ON_UP fixups Dave P. Martin
2011-01-26 17:25                   ` Dave P. Martin
2011-01-26 21:31                   ` Nicolas Pitre
2011-01-26 21:31                     ` Nicolas Pitre
2011-01-27 14:37                     ` Dave Martin [this message]
2011-01-27 14:37                       ` [PATCH v2] ARM: Avoid discarding sections that might have SMP_ON_UP fixups " Dave Martin
2011-01-27 16:46                       ` Russell King - ARM Linux
2011-01-27 16:46                         ` Russell King - ARM Linux
2011-02-09 14:22                   ` [PATCH] ARM: Avoid discarding sections that might have " Russell King - ARM Linux
2011-02-09 14:22                     ` Russell King - ARM Linux
2011-02-10 12:56                     ` Russell King - ARM Linux
2011-02-10 12:56                       ` Russell King - ARM Linux
2011-02-10 14:11                       ` Dave Martin
2011-02-10 14:11                         ` Dave Martin
2011-02-10 14:13                         ` Dave Martin
2011-02-10 14:13                           ` Dave Martin
2011-02-10 14:46                           ` Russell King - ARM Linux
2011-02-10 14:46                             ` Russell King - ARM Linux
2011-02-10 18:29                             ` Dave Martin
2011-02-10 18:29                               ` Dave Martin
2011-02-10 19:11                               ` Russell King - ARM Linux
2011-02-10 19:11                                 ` Russell King - ARM Linux
2011-02-11  9:33                                 ` Dave Martin
2011-02-11  9:33                                   ` Dave Martin
2011-02-11 10:13                                   ` Russell King - ARM Linux
2011-02-11 10:13                                     ` Russell King - ARM Linux
2011-02-11 10:52                                     ` Dave Martin
2011-02-11 10:52                                       ` Dave Martin
2011-02-11 16:05                                       ` Russell King - ARM Linux
2011-02-11 16:05                                         ` Russell King - ARM Linux
2011-02-11 16:17                                         ` Dave Martin
2011-02-11 16:17                                           ` Dave Martin
2011-02-11 16:32                                           ` Russell King - ARM Linux
2011-02-11 16:32                                             ` Russell King - ARM Linux
2011-02-16 16:35                                             ` Dave Martin
2011-02-16 16:35                                               ` Dave Martin
2011-02-18 17:52                                               ` Dave Martin
2011-02-18 17:52                                                 ` Dave Martin
2011-01-26 15:42               ` [PATCH 03/14] ARM: v6k: remove CPU_32v6K dependencies in asm/spinlock.h Nicolas Pitre
2011-01-26 15:42                 ` Nicolas Pitre
2011-01-26 15:52                 ` Russell King - ARM Linux
2011-01-26 15:52                   ` Russell King - ARM Linux
2011-01-26 16:59                   ` Dave Martin
2011-01-26 16:59                     ` Dave Martin
2011-01-26 21:06                     ` Nicolas Pitre
2011-01-26 21:06                       ` Nicolas Pitre
2011-01-27 11:44                       ` Dave P. Martin
2011-01-27 11:44                         ` Dave P. Martin
2011-01-17 19:22 ` [PATCH 04/14] ARM: v6k: introduce CPU_V6K option Russell King - ARM Linux
2011-01-17 19:22   ` Russell King - ARM Linux
2011-01-17 23:14   ` Tony Lindgren
2011-01-17 23:14     ` Tony Lindgren
2011-01-18 10:36   ` Will Deacon
2011-01-18 10:36   ` Will Deacon
2011-01-18 11:09     ` Russell King - ARM Linux
2011-01-18 11:09       ` Russell King - ARM Linux
2011-01-18 13:35       ` Russell King - ARM Linux
2011-01-18 13:35         ` Russell King - ARM Linux
2011-01-18 15:22         ` Will Deacon
2011-01-18 15:22         ` Will Deacon
2011-01-17 19:22 ` [PATCH 05/14] ARM: v6k: Realview EB 11MPCore and PB11MPCore use V6K architecture CPUs Russell King - ARM Linux
2011-01-17 19:22   ` Russell King - ARM Linux
2011-01-17 19:23 ` [PATCH 06/14] ARM: v6k: Dove platforms " Russell King - ARM Linux
2011-01-17 19:23   ` Russell King - ARM Linux
2011-01-17 23:39   ` Nicolas Pitre
2011-01-17 23:39     ` Nicolas Pitre
2011-01-17 19:23 ` [PATCH 07/14] ARM: v6k: select clear exclusive code seqences according to V6 variants Russell King - ARM Linux
2011-01-17 19:23   ` Russell King - ARM Linux
2011-01-17 23:15   ` Tony Lindgren
2011-01-17 23:15     ` Tony Lindgren
2011-01-17 19:23 ` [PATCH 08/14] ARM: v6k: select cmpxchg code sequences " Russell King - ARM Linux
2011-01-17 19:23   ` Russell King - ARM Linux
2011-01-17 23:18   ` Tony Lindgren
2011-01-17 23:18     ` Tony Lindgren
2011-01-17 19:24 ` [PATCH 09/14] ARM: v6k: select generic atomic64 code " Russell King - ARM Linux
2011-01-17 19:24   ` Russell King - ARM Linux
2011-01-17 23:21   ` Tony Lindgren
2011-01-17 23:21     ` Tony Lindgren
2011-01-18 10:24   ` Will Deacon
2011-01-18 10:24   ` Will Deacon
2011-01-17 19:24 ` [PATCH 10/14] ARM: v6k: select TLS register " Russell King - ARM Linux
2011-01-17 19:24   ` Russell King - ARM Linux
2011-01-17 22:23   ` Nicolas Pitre
2011-01-17 22:23     ` Nicolas Pitre
2011-01-17 22:36     ` Russell King - ARM Linux
2011-01-17 22:36       ` Russell King - ARM Linux
2011-01-17 22:52       ` Russell King - ARM Linux
2011-01-17 22:52         ` Russell King - ARM Linux
2011-01-18  4:27         ` Nicolas Pitre
2011-01-18  4:27           ` Nicolas Pitre
2011-01-18  4:25       ` Nicolas Pitre
2011-01-18  4:25         ` Nicolas Pitre
2011-01-17 23:21     ` Tony Lindgren
2011-01-17 23:21       ` Tony Lindgren
2011-01-17 19:24 ` [PATCH 11/14] ARM: v6k: use CPU domain feature if we include support for arch < ARMv6K Russell King - ARM Linux
2011-01-17 19:24   ` Russell King - ARM Linux
2011-01-17 22:03   ` Nicolas Pitre
2011-01-17 22:03     ` Nicolas Pitre
2011-01-17 23:23     ` Tony Lindgren
2011-01-17 23:23       ` Tony Lindgren
2011-01-27 18:14   ` Catalin Marinas
2011-01-27 18:14     ` Catalin Marinas
2011-01-27 18:59     ` Russell King - ARM Linux
2011-01-27 18:59       ` Russell King - ARM Linux
2011-01-28  9:46       ` Catalin Marinas
2011-01-28  9:46         ` Catalin Marinas
2011-01-28  9:59         ` Russell King - ARM Linux
2011-01-28  9:59           ` Russell King - ARM Linux
2011-01-28 10:46           ` Catalin Marinas
2011-01-28 10:46             ` Catalin Marinas
2011-01-28 11:06             ` Russell King - ARM Linux
2011-01-28 11:06               ` Russell King - ARM Linux
2011-01-28 12:25               ` Catalin Marinas
2011-01-28 12:25                 ` Catalin Marinas
2011-01-28 13:05                 ` Russell King - ARM Linux
2011-01-28 13:05                   ` Russell King - ARM Linux
2011-01-28 13:10                   ` Catalin Marinas
2011-01-28 13:10                     ` Catalin Marinas
2011-01-28 13:22                     ` Russell King - ARM Linux
2011-01-28 13:22                       ` Russell King - ARM Linux
2011-01-28 13:21                 ` Russell King - ARM Linux
2011-01-28 13:21                   ` Russell King - ARM Linux
2011-01-28 15:11                   ` Catalin Marinas
2011-01-28 15:11                     ` Catalin Marinas
2011-01-28 16:49                     ` Tony Lindgren
2011-01-28 16:49                       ` Tony Lindgren
2011-01-17 19:25 ` [PATCH 12/14] ARM: v6k: do not disable CPU_32v6K based on platform selection Russell King - ARM Linux
2011-01-17 19:25   ` Russell King - ARM Linux
2011-01-17 23:24   ` Tony Lindgren
2011-01-17 23:24     ` Tony Lindgren
2011-01-17 19:25 ` [PATCH 13/14] ARM: v6k: allow swp emulation again when ARMv7 is enabled Russell King - ARM Linux
2011-01-17 19:25   ` Russell King - ARM Linux
2011-01-17 23:24   ` Tony Lindgren
2011-01-17 23:24     ` Tony Lindgren
2011-01-17 19:25 ` [PATCH 14/14] ARM: v6k: only allow SMP if we have v6k or v7 CPU Russell King - ARM Linux
2011-01-17 19:25   ` Russell King - ARM Linux
2011-01-17 23:25   ` Tony Lindgren
2011-01-17 23:25     ` Tony Lindgren
2011-01-17 22:21 ` [PATCH 00/14] Fix issues with ARMv6+v6k+v7 kernels Tony Lindgren
2011-01-17 22:21   ` Tony Lindgren
2011-01-18 14:30 ` Kirill A. Shutemov
2011-01-18 14:30   ` Kirill A. Shutemov
2011-01-18 14:40   ` Russell King - ARM Linux
2011-01-18 14:40     ` Russell King - ARM Linux
2011-01-18 14:44     ` Kirill A. Shutemov
2011-01-18 14:44       ` Kirill A. Shutemov
2011-01-18 15:01       ` Russell King - ARM Linux
2011-01-18 15:01         ` Russell King - ARM Linux
2011-02-08 16:36 ` Santosh Shilimkar
2011-02-08 16:36   ` Santosh Shilimkar
2011-02-08 16:47   ` Russell King - ARM Linux
2011-02-08 16:47     ` Russell King - ARM Linux
2011-02-08 16:58     ` Santosh Shilimkar
2011-02-08 16:58       ` Santosh Shilimkar
2011-02-08 20:43       ` Nicolas Pitre
2011-02-08 20:43         ` Nicolas Pitre
2011-02-09  0:35         ` Tony Lindgren
2011-02-09  0:35           ` Tony Lindgren
2011-02-09  6:04           ` Santosh Shilimkar
2011-02-09  6:04             ` Santosh Shilimkar
2011-02-09  9:48             ` Dave Martin
2011-02-09  9:48               ` Dave Martin
2011-02-09 10:00               ` Santosh Shilimkar
2011-02-09 10:00                 ` Santosh Shilimkar
2011-02-09 16:24                 ` Tony Lindgren
2011-02-09 16:24                   ` Tony Lindgren
2011-02-09 16:27                   ` Santosh Shilimkar
2011-02-09 16:27                     ` Santosh Shilimkar
2011-02-09 16:32                   ` Russell King - ARM Linux
2011-02-09 16:32                     ` Russell King - ARM Linux
2011-02-09 16:44                     ` Russell King - ARM Linux
2011-02-09 16:44                       ` Russell King - ARM Linux
2011-02-09 16:45                     ` Nicolas Pitre
2011-02-09 16:45                       ` Nicolas Pitre
2011-02-09 17:48                       ` Tony Lindgren
2011-02-09 17:48                         ` Tony Lindgren
2011-02-09 10:01     ` Catalin Marinas
2011-02-09 10:01       ` Catalin Marinas
2011-02-10 13:04       ` Russell King - ARM Linux
2011-02-10 13:04         ` Russell King - ARM Linux
2011-02-10 13:12         ` Catalin Marinas
2011-02-10 13:12           ` Catalin Marinas
2011-02-10 13:16           ` Russell King - ARM Linux
2011-02-10 13:16             ` Russell King - ARM Linux
2011-02-11 20:45           ` Nicolas Pitre
2011-02-11 20:45             ` Nicolas Pitre
2011-02-11 21:07             ` Russell King - ARM Linux
2011-02-11 21:07               ` Russell King - ARM Linux

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20110127143709.GA13735@arm.com \
    --to=dave.martin@linaro.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-omap@vger.kernel.org \
    --cc=linux@arm.linux.org.uk \
    --cc=nicolas.pitre@linaro.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.