During the last months I have spent too many hours trying to figure out
the structure of the CPUHOTPLUG code and never came anywhere near
a point where I would call myself familiar with the code base.
The reson for me looking into the code was to fix a number
of section mismatch warnings - which I succeeded doing.
But during this process I do not recall I encountered a single
real bug. There were sloppy usage of the __cpuinit annotation
and stuff like this.
And I also realised that __cpuinit was used as replacement
for factoring out code only used for CPUHOTPLUG.
But again I could not fix this myself.
So I have queued up following patch that just drop
the section mismatch checks for __cpu* entirely.
I noone object I will push it to mainline soon.
Sam
diff --git a/scripts/mod/modpost.c b/scripts/mod/modpost.c
index 757294b..007db40 100644
--- a/scripts/mod/modpost.c
+++ b/scripts/mod/modpost.c
@@ -738,14 +738,14 @@ static int check_section(const char *modname, const char *sec)
#define ALL_INIT_DATA_SECTIONS \
- ".init.data$", ".devinit.data$", ".cpuinit.data$", ".meminit.data$"
+ ".init.data$", ".devinit.data$", ".meminit.data$"
#define ALL_EXIT_DATA_SECTIONS \
- ".exit.data$", ".devexit.data$", ".cpuexit.data$", ".memexit.data$"
+ ".exit.data$", ".devexit.data$", ".memexit.data$"
#define ALL_INIT_TEXT_SECTIONS \
- ".init.text$", ".devinit.text$", ".cpuinit.text$", ".meminit.text$"
+ ".init.text$", ".devinit.text$", ".meminit.text$"
#define ALL_EXIT_TEXT_SECTIONS \
- ".exit.text$", ".devexit.text$", ".cpuexit.text$", ".memexit.text$"
+ ".exit.text$", ".devexit.text$", ".memexit.text$"
#define ALL_INIT_SECTIONS ALL_INIT_DATA_SECTIONS, ALL_INIT_TEXT_SECTIONS
#define ALL_EXIT_SECTIONS ALL_EXIT_DATA_SECTIONS, ALL_EXIT_TEXT_SECTIONS
@@ -755,12 +755,10 @@ static int check_section(const char *modname, const char *sec)
#define INIT_SECTIONS ".init.data$", ".init.text$"
#define DEV_INIT_SECTIONS ".devinit.data$", ".devinit.text$"
-#define CPU_INIT_SECTIONS ".cpuinit.data$", ".cpuinit.text$"
#define MEM_INIT_SECTIONS ".meminit.data$", ".meminit.text$"
#define EXIT_SECTIONS ".exit.data$", ".exit.text$"
#define DEV_EXIT_SECTIONS ".devexit.data$", ".devexit.text$"
-#define CPU_EXIT_SECTIONS ".cpuexit.data$", ".cpuexit.text$"
#define MEM_EXIT_SECTIONS ".memexit.data$", ".memexit.text$"
/* init data sections */
@@ -847,15 +845,15 @@ const struct sectioncheck sectioncheck[] = {
.tosec = { ALL_EXIT_SECTIONS, NULL },
.mismatch = DATA_TO_EXIT,
},
-/* Do not reference init code/data from devinit/cpuinit/meminit code/data */
+/* Do not reference init code/data from devinit/meminit code/data */
{
- .fromsec = { DEV_INIT_SECTIONS, CPU_INIT_SECTIONS, MEM_INIT_SECTIONS, NULL },
+ .fromsec = { DEV_INIT_SECTIONS, MEM_INIT_SECTIONS, NULL },
.tosec = { INIT_SECTIONS, NULL },
.mismatch = XXXINIT_TO_INIT,
},
-/* Do not reference exit code/data from devexit/cpuexit/memexit code/data */
+/* Do not reference exit code/data from devexit/memexit code/data */
{
- .fromsec = { DEV_EXIT_SECTIONS, CPU_EXIT_SECTIONS, MEM_EXIT_SECTIONS, NULL },
+ .fromsec = { DEV_EXIT_SECTIONS, MEM_EXIT_SECTIONS, NULL },
.tosec = { EXIT_SECTIONS, NULL },
.mismatch = XXXEXIT_TO_EXIT,
},
@@ -1070,7 +1068,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.
*/
--
| Tomasz Kłoczko | Is it time for remove (crap) ALSA from kernel tree ? |
| Aubrey | O_DIRECT question |
| David Miller | Slow DOWN, please!!! |
| Linus Torvalds | Linux 2.6.27-rc8 |
git: | |
| Francis Moreau | emacs and git... |
| Linus Torvalds | I'm a total push-over.. |
| Keith Packard | Re: parsecvs tool now creates git repositories |
| Andreas Hildebrandt | CVS-$Id:$ replacement in git? |
| Jason Dixon | Wasting our Freedom |
| Richard Stallman | Real men don't attack straw men |
| Edwin Eyan Moragas | poll(2) vs kqueue(2) performance |
| James Hartley | scp batch mode? |
| Chris Peterson | [PATCH] drivers/net: remove network drivers' last few uses of IRQF_SAMPLE_RANDOM |
| Karen Xie | [RFC][PATCH 1/1] cxgb3i: cxgb3 iSCSI initiator |
| Lennert Buytenhek | [PATCH 14/39] mv643xx_eth: remove port serial status register bit defines |
| Andrew Morton | Re: [Bugme-new] [Bug 11036] New: atl1 tx busy and hw csum wrong |
| high memory | 2 hours ago | Linux kernel |
| semaphore access speed | 5 hours ago | Applications and Utilities |
| the kernel how to power off the machine | 6 hours ago | Linux kernel |
| Easter Eggs in windows XP | 8 hours ago | Windows |
| Shared swap partition | 9 hours ago | Linux general |
| Root password | 9 hours ago | Linux general |
| Where/when DNOTIFY is used? | 11 hours ago | Linux kernel |
| How to convert Linux Kernel built-in module into a loadable module | 14 hours ago | Linux kernel |
| Linux 2.6.24 and I/O schedulers | 14 hours ago | Linux kernel |
| USB Driver -- Interrupt Polling -- A Little Help Please | 20 hours ago | Linux general |
