From: Ralf Baechle <ralf@linux-mips.org>
To: Paul Gortmaker <paul.gortmaker@windriver.com>
Cc: David Daney <ddaney.cavm@gmail.com>, linux-mips@linux-mips.org
Subject: Re: [PATCH v2] mips: delete __cpuinit/__CPUINIT usage from MIPS code
Date: Thu, 20 Jun 2013 04:15:50 +0200 [thread overview]
Message-ID: <20130620021550.GA17009@linux-mips.org> (raw)
In-Reply-To: <20130620002806.GA15693@windriver.com>
On Wed, Jun 19, 2013 at 08:28:07PM -0400, Paul Gortmaker wrote:
> I am literally in the middle of typing up a mail to linux-arch that
> explains this, and that the no-op step comes in at the beginning of the
> merge window, and that the big purge comes at the end.
>
> However, I do not want that process to be set in stone ; as Ralf indicated,
> he expected some changes to the mips tree and wanted to deal with the
> conflicts himself (which is fine by me!) and so we can do that at the
> expense of some temporary section warnings. This is why I explicitly
> called them out in the above commit log.
>
> > Once that is working, we would make a second pass and remove the
> > symbols themselves.
>
> Yep, thanks for looking at things; it sounds like we are in alignment
> with how to proceed here -- only that I wasn't quick enough in getting
> the steps published and the no-op phase into linux-next.
And I having come to the same conclusion have spent the last few hours
running a test build with the following patch applied. It does
- make __cpuinit, __cpuinitdata, __cpuinitconst, __cpuexit, __cpuexitdata
and __cpuexitconst nops.
- with .cpuinit.* and .cpuexit.* sections now being unused support for
these sections in linker scripts and modpost is no longer required.
Ralf
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
include/asm-generic/vmlinux.lds.h | 20 ---------------
include/linux/init.h | 18 +++++++-------
scripts/mod/modpost.c | 52 +++++++--------------------------------
3 files changed, 18 insertions(+), 72 deletions(-)
diff --git a/include/asm-generic/vmlinux.lds.h b/include/asm-generic/vmlinux.lds.h
index eb58d2d..eab362e 100644
--- a/include/asm-generic/vmlinux.lds.h
+++ b/include/asm-generic/vmlinux.lds.h
@@ -76,14 +76,6 @@
#define DEV_DISCARD(sec) *(.dev##sec)
#endif
-#ifdef CONFIG_HOTPLUG_CPU
-#define CPU_KEEP(sec) *(.cpu##sec)
-#define CPU_DISCARD(sec)
-#else
-#define CPU_KEEP(sec)
-#define CPU_DISCARD(sec) *(.cpu##sec)
-#endif
-
#if defined(CONFIG_MEMORY_HOTPLUG)
#define MEM_KEEP(sec) *(.mem##sec)
#define MEM_DISCARD(sec)
@@ -184,8 +176,6 @@
*(.data..shared_aligned) /* percpu related */ \
DEV_KEEP(init.data) \
DEV_KEEP(exit.data) \
- CPU_KEEP(init.data) \
- CPU_KEEP(exit.data) \
MEM_KEEP(init.data) \
MEM_KEEP(exit.data) \
*(.data.unlikely) \
@@ -374,8 +364,6 @@
*(.ref.rodata) \
DEV_KEEP(init.rodata) \
DEV_KEEP(exit.rodata) \
- CPU_KEEP(init.rodata) \
- CPU_KEEP(exit.rodata) \
MEM_KEEP(init.rodata) \
MEM_KEEP(exit.rodata) \
} \
@@ -418,8 +406,6 @@
*(.ref.text) \
DEV_KEEP(init.text) \
DEV_KEEP(exit.text) \
- CPU_KEEP(init.text) \
- CPU_KEEP(exit.text) \
MEM_KEEP(init.text) \
MEM_KEEP(exit.text) \
*(.text.unlikely)
@@ -504,7 +490,6 @@
#define INIT_DATA \
*(.init.data) \
DEV_DISCARD(init.data) \
- CPU_DISCARD(init.data) \
MEM_DISCARD(init.data) \
KERNEL_CTORS() \
MCOUNT_REC() \
@@ -512,7 +497,6 @@
FTRACE_EVENTS() \
TRACE_SYSCALLS() \
DEV_DISCARD(init.rodata) \
- CPU_DISCARD(init.rodata) \
MEM_DISCARD(init.rodata) \
CLK_OF_TABLES() \
CLKSRC_OF_TABLES() \
@@ -522,22 +506,18 @@
#define INIT_TEXT \
*(.init.text) \
DEV_DISCARD(init.text) \
- CPU_DISCARD(init.text) \
MEM_DISCARD(init.text)
#define EXIT_DATA \
*(.exit.data) \
DEV_DISCARD(exit.data) \
DEV_DISCARD(exit.rodata) \
- CPU_DISCARD(exit.data) \
- CPU_DISCARD(exit.rodata) \
MEM_DISCARD(exit.data) \
MEM_DISCARD(exit.rodata)
#define EXIT_TEXT \
*(.exit.text) \
DEV_DISCARD(exit.text) \
- CPU_DISCARD(exit.text) \
MEM_DISCARD(exit.text)
#define EXIT_CALL \
diff --git a/include/linux/init.h b/include/linux/init.h
index 8618147..a4eefc1 100644
--- a/include/linux/init.h
+++ b/include/linux/init.h
@@ -94,12 +94,12 @@
#define __exit __section(.exit.text) __exitused __cold notrace
/* Used for HOTPLUG_CPU */
-#define __cpuinit __section(.cpuinit.text) __cold notrace
-#define __cpuinitdata __section(.cpuinit.data)
-#define __cpuinitconst __constsection(.cpuinit.rodata)
-#define __cpuexit __section(.cpuexit.text) __exitused __cold notrace
-#define __cpuexitdata __section(.cpuexit.data)
-#define __cpuexitconst __constsection(.cpuexit.rodata)
+#define __cpuinit
+#define __cpuinitdata
+#define __cpuinitconst
+#define __cpuexit
+#define __cpuexitdata
+#define __cpuexitconst
/* Used for MEMORY_HOTPLUG */
#define __meminit __section(.meminit.text) __cold notrace
@@ -118,9 +118,9 @@
#define __INITRODATA .section ".init.rodata","a",%progbits
#define __FINITDATA .previous
-#define __CPUINIT .section ".cpuinit.text", "ax"
-#define __CPUINITDATA .section ".cpuinit.data", "aw"
-#define __CPUINITRODATA .section ".cpuinit.rodata", "a"
+#define __CPUINIT
+#define __CPUINITDATA
+#define __CPUINITRODATA
#define __MEMINIT .section ".meminit.text", "ax"
#define __MEMINITDATA .section ".meminit.data", "aw"
diff --git a/scripts/mod/modpost.c b/scripts/mod/modpost.c
index a4be8e1..3acbf080 100644
--- a/scripts/mod/modpost.c
+++ b/scripts/mod/modpost.c
@@ -861,24 +861,23 @@ static void check_section(const char *modname, struct elf_info *elf,
#define ALL_INIT_DATA_SECTIONS \
- ".init.setup$", ".init.rodata$", \
- ".cpuinit.rodata$", ".meminit.rodata$", \
- ".init.data$", ".cpuinit.data$", ".meminit.data$"
+ ".init.setup$", ".init.rodata$", ".meminit.rodata$", \
+ ".init.data$", ".meminit.data$"
#define ALL_EXIT_DATA_SECTIONS \
- ".exit.data$", ".cpuexit.data$", ".memexit.data$"
+ ".exit.data$", ".memexit.data$"
#define ALL_INIT_TEXT_SECTIONS \
- ".init.text$", ".cpuinit.text$", ".meminit.text$"
+ ".init.text$", ".meminit.text$"
#define ALL_EXIT_TEXT_SECTIONS \
- ".exit.text$", ".cpuexit.text$", ".memexit.text$"
+ ".exit.text$", ".memexit.text$"
#define ALL_PCI_INIT_SECTIONS \
".pci_fixup_early$", ".pci_fixup_header$", ".pci_fixup_final$", \
".pci_fixup_enable$", ".pci_fixup_resume$", \
".pci_fixup_resume_early$", ".pci_fixup_suspend$"
-#define ALL_XXXINIT_SECTIONS CPU_INIT_SECTIONS, MEM_INIT_SECTIONS
-#define ALL_XXXEXIT_SECTIONS CPU_EXIT_SECTIONS, MEM_EXIT_SECTIONS
+#define ALL_XXXINIT_SECTIONS MEM_INIT_SECTIONS
+#define ALL_XXXEXIT_SECTIONS MEM_EXIT_SECTIONS
#define ALL_INIT_SECTIONS INIT_SECTIONS, ALL_XXXINIT_SECTIONS
#define ALL_EXIT_SECTIONS EXIT_SECTIONS, ALL_XXXEXIT_SECTIONS
@@ -887,11 +886,9 @@ static void check_section(const char *modname, struct elf_info *elf,
#define TEXT_SECTIONS ".text$"
#define INIT_SECTIONS ".init.*"
-#define CPU_INIT_SECTIONS ".cpuinit.*"
#define MEM_INIT_SECTIONS ".meminit.*"
#define EXIT_SECTIONS ".exit.*"
-#define CPU_EXIT_SECTIONS ".cpuexit.*"
#define MEM_EXIT_SECTIONS ".memexit.*"
/* init data sections */
@@ -979,48 +976,20 @@ const struct sectioncheck sectioncheck[] = {
.mismatch = DATA_TO_ANY_EXIT,
.symbol_white_list = { DEFAULT_SYMBOL_WHITE_LIST, NULL },
},
-/* Do not reference init code/data from cpuinit/meminit code/data */
+/* Do not reference init code/data from meminit code/data */
{
.fromsec = { ALL_XXXINIT_SECTIONS, NULL },
.tosec = { INIT_SECTIONS, NULL },
.mismatch = XXXINIT_TO_SOME_INIT,
.symbol_white_list = { DEFAULT_SYMBOL_WHITE_LIST, NULL },
},
-/* Do not reference cpuinit code/data from meminit code/data */
-{
- .fromsec = { MEM_INIT_SECTIONS, NULL },
- .tosec = { CPU_INIT_SECTIONS, NULL },
- .mismatch = XXXINIT_TO_SOME_INIT,
- .symbol_white_list = { DEFAULT_SYMBOL_WHITE_LIST, NULL },
-},
-/* Do not reference meminit code/data from cpuinit code/data */
-{
- .fromsec = { CPU_INIT_SECTIONS, NULL },
- .tosec = { MEM_INIT_SECTIONS, NULL },
- .mismatch = XXXINIT_TO_SOME_INIT,
- .symbol_white_list = { DEFAULT_SYMBOL_WHITE_LIST, NULL },
-},
-/* Do not reference exit code/data from cpuexit/memexit code/data */
+/* Do not reference exit code/data from memexit code/data */
{
.fromsec = { ALL_XXXEXIT_SECTIONS, NULL },
.tosec = { EXIT_SECTIONS, NULL },
.mismatch = XXXEXIT_TO_SOME_EXIT,
.symbol_white_list = { DEFAULT_SYMBOL_WHITE_LIST, NULL },
},
-/* Do not reference cpuexit code/data from memexit code/data */
-{
- .fromsec = { MEM_EXIT_SECTIONS, NULL },
- .tosec = { CPU_EXIT_SECTIONS, NULL },
- .mismatch = XXXEXIT_TO_SOME_EXIT,
- .symbol_white_list = { DEFAULT_SYMBOL_WHITE_LIST, NULL },
-},
-/* Do not reference memexit code/data from cpuexit code/data */
-{
- .fromsec = { CPU_EXIT_SECTIONS, NULL },
- .tosec = { MEM_EXIT_SECTIONS, NULL },
- .mismatch = XXXEXIT_TO_SOME_EXIT,
- .symbol_white_list = { DEFAULT_SYMBOL_WHITE_LIST, NULL },
-},
/* Do not use exit code/data from init code */
{
.fromsec = { ALL_INIT_SECTIONS, NULL },
@@ -1089,8 +1058,6 @@ static const struct sectioncheck *section_mismatch(
* Pattern 2:
* Many drivers utilise a *driver container with references to
* add, remove, probe functions etc.
- * These functions may often be marked __cpuinit and we do not want to
- * warn here.
* the pattern is identified by:
* tosec = init or exit section
* fromsec = data section
@@ -1249,7 +1216,6 @@ static Elf_Sym *find_elf_symbol2(struct elf_info *elf, Elf_Addr addr,
/*
* Convert a section name to the function/data attribute
* .init.text => __init
- * .cpuinit.data => __cpudata
* .memexitconst => __memconst
* etc.
*
next prev parent reply other threads:[~2013-06-20 2:15 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-06-18 14:38 [PATCH v2] mips: delete __cpuinit/__CPUINIT usage from MIPS code Paul Gortmaker
2013-06-18 14:38 ` Paul Gortmaker
2013-06-18 14:54 ` Ralf Baechle
2013-06-19 22:19 ` David Daney
2013-06-20 0:28 ` Paul Gortmaker
2013-06-20 0:28 ` Paul Gortmaker
2013-06-20 2:15 ` Ralf Baechle [this message]
2013-06-20 13:38 ` Paul Gortmaker
2013-06-20 13:38 ` Paul Gortmaker
2013-06-20 13:55 ` Ralf Baechle
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=20130620021550.GA17009@linux-mips.org \
--to=ralf@linux-mips.org \
--cc=ddaney.cavm@gmail.com \
--cc=linux-mips@linux-mips.org \
--cc=paul.gortmaker@windriver.com \
/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.