* [PATCH 00/11] Replace module_init with an alternate initcall in non modules
@ 2015-06-01 0:54 Paul Gortmaker
2015-06-01 0:54 ` [PATCH 01/11] mm: replace module_init usages with subsys_initcall in nommu.c Paul Gortmaker
2015-06-01 0:54 ` [PATCH 09/11] mm/page_owner.c: use late_initcall to hook in enabling Paul Gortmaker
0 siblings, 2 replies; 3+ messages in thread
From: Paul Gortmaker @ 2015-06-01 0:54 UTC (permalink / raw)
To: linux-kernel
Cc: Paul Gortmaker, Andrew Morton, Arnaldo Carvalho de Melo,
Benjamin Herrenschmidt, David S. Miller, Eric Paris,
H. Peter Anvin, Ingo Molnar, John McCutchan, Jozsef Kadlecsik,
Pablo Neira Ayuso, Patrick McHardy, Paul Mackerras,
Peter Zijlstra, Robert Love, Russell King, Scott Wood,
Thomas Gleixner, linux-arm-kernel, linux-mm, linuxppc-dev, netdev,
netfilter-devel, x86
This series of commits converts non-modular code that is using the
module_init() call to hook itself into the system to instead use one of
the alternate priority initcalls.
Unlike the earlier series[1] that used device_initcall and hence was a
runtime no-op, these commits change to one of the alternate initcalls,
because (a) we have them and (b) it seems like the right thing to do.
For example, it would seem logical to use arch_initcall for arch
specific setup code and fs_initcall for filesystem setup code.
This does mean however, that changes in the init ordering will be taking
place, and so there is a small risk that some kind of implicit init
ordering issue may lie uncovered. But I think it is still better to
give these ones sensible priorities than to just assign them all to
device_initcall in order to exactly preserve the old ordering.
Thad said, we have already made similar changes in core kernel code
in commit c96d6660dc65b0a90aea9834bfd8be1d5656da18 ("kernel: audit/fix
non-modular users of module_init in core code") without any regressions
reported, so this type of change isn't without precedent.
This work is factored out from what was a previously larger series[2] so
that there is a common theme and lower patch count to ease review.
Paul.
[1] https://lkml.org/lkml/2015/5/28/809
[2] https://marc.info/?l=linux-kernel&m=139033951228828
---
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: Arnaldo Carvalho de Melo <acme@kernel.org>
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: "David S. Miller" <davem@davemloft.net>
Cc: Eric Paris <eparis@parisplace.org>
Cc: "H. Peter Anvin" <hpa@zytor.com>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: John McCutchan <john@johnmccutchan.com>
Cc: Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>
Cc: Pablo Neira Ayuso <pablo@netfilter.org>
Cc: Patrick McHardy <kaber@trash.net>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Robert Love <rlove@rlove.org>
Cc: Russell King <linux@arm.linux.org.uk>
Cc: Scott Wood <scottwood@freescale.com>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: linux-arm-kernel@lists.infradead.org
Cc: linux-mm@kvack.org
Cc: linuxppc-dev@lists.ozlabs.org
Cc: netdev@vger.kernel.org
Cc: netfilter-devel@vger.kernel.org
Cc: x86@kernel.org
Paul Gortmaker (11):
mm: replace module_init usages with subsys_initcall in nommu.c
fs/notify: don't use module_init for non-modular inotify_user code
netfilter: don't use module_init/exit in core IPV4 code
x86: don't use module_init for non-modular core bootflag code
powerpc: use subsys_initcall for Freescale Local Bus
powerpc: don't use module_init for non-modular core hugetlb code
arm: use subsys_initcall in non-modular pl320 IPC code
lib/list_sort: use late_initcall to hook in self tests
mm/page_owner.c: use late_initcall to hook in enabling
x86: perf_event_intel_bts.c: use arch_initcall to hook in enabling
x86: perf_event_intel_pt.c: use arch_initcall to hook in enabling
arch/powerpc/mm/hugetlbpage.c | 2 +-
arch/powerpc/sysdev/fsl_lbc.c | 2 +-
arch/x86/kernel/bootflag.c | 2 +-
arch/x86/kernel/cpu/perf_event_intel_bts.c | 3 +--
arch/x86/kernel/cpu/perf_event_intel_pt.c | 3 +--
drivers/mailbox/pl320-ipc.c | 2 +-
fs/notify/inotify/inotify_user.c | 4 ++--
lib/list_sort.c | 2 +-
mm/nommu.c | 4 ++--
mm/page_owner.c | 2 +-
net/ipv4/netfilter.c | 9 +--------
11 files changed, 13 insertions(+), 22 deletions(-)
--
2.2.1
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
^ permalink raw reply [flat|nested] 3+ messages in thread
* [PATCH 01/11] mm: replace module_init usages with subsys_initcall in nommu.c
2015-06-01 0:54 [PATCH 00/11] Replace module_init with an alternate initcall in non modules Paul Gortmaker
@ 2015-06-01 0:54 ` Paul Gortmaker
2015-06-01 0:54 ` [PATCH 09/11] mm/page_owner.c: use late_initcall to hook in enabling Paul Gortmaker
1 sibling, 0 replies; 3+ messages in thread
From: Paul Gortmaker @ 2015-06-01 0:54 UTC (permalink / raw)
To: linux-kernel; +Cc: Paul Gortmaker, Andrew Morton, linux-mm
Compiling some arm/m68k configs with "# CONFIG_MMU is not set" reveals
two more instances of module_init being used for code that can't
possibly be modular, as CONFIG_MMU is either on or off.
We replace them with subsys_initcall as per what was done in other
mmu-enabled code.
Note that direct use of __initcall is discouraged, vs. one of the
priority categorized subgroups. As __initcall gets mapped onto
device_initcall, our use of subsys_initcall (which makes sense for these
files) will thus change this registration from level 6-device to level
4-subsys (i.e. slightly earlier).
One might think that core_initcall (l2) or postcore_initcall (l3) would
be more appropriate for anything in mm/ but if we look at the actual init
functions themselves, we see they are just sysctl setup stuff, and
hence the choice of subsys_initcall (l4) seems reasonable. At the same
time it minimizes the risk of changing the priority too drastically all
at once. We can adjust further in the future.
Also, a couple instances of missing ";" at EOL are fixed.
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: linux-mm@kvack.org
Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
---
mm/nommu.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/mm/nommu.c b/mm/nommu.c
index e544508e2a4b..e7b24dcec505 100644
--- a/mm/nommu.c
+++ b/mm/nommu.c
@@ -2157,7 +2157,7 @@ static int __meminit init_user_reserve(void)
sysctl_user_reserve_kbytes = min(free_kbytes / 32, 1UL << 17);
return 0;
}
-module_init(init_user_reserve)
+subsys_initcall(init_user_reserve);
/*
* Initialise sysctl_admin_reserve_kbytes.
@@ -2178,4 +2178,4 @@ static int __meminit init_admin_reserve(void)
sysctl_admin_reserve_kbytes = min(free_kbytes / 32, 1UL << 13);
return 0;
}
-module_init(init_admin_reserve)
+subsys_initcall(init_admin_reserve);
--
2.2.1
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
^ permalink raw reply related [flat|nested] 3+ messages in thread
* [PATCH 09/11] mm/page_owner.c: use late_initcall to hook in enabling
2015-06-01 0:54 [PATCH 00/11] Replace module_init with an alternate initcall in non modules Paul Gortmaker
2015-06-01 0:54 ` [PATCH 01/11] mm: replace module_init usages with subsys_initcall in nommu.c Paul Gortmaker
@ 2015-06-01 0:54 ` Paul Gortmaker
1 sibling, 0 replies; 3+ messages in thread
From: Paul Gortmaker @ 2015-06-01 0:54 UTC (permalink / raw)
To: linux-kernel; +Cc: Paul Gortmaker, Andrew Morton, linux-mm
This was using module_init, but there is no way this code can
be modular. In the non-modular case, a module_init becomes a
device_initcall, but this really isn't a device. So we should
choose a more appropriate initcall bucket to put it in.
In order of execution, our close choices are:
fs_initcall(fn)
rootfs_initcall(fn)
device_initcall(fn)
late_initcall(fn)
..and since the initcall here goes after debugfs, we really
should be post-rootfs, which means late_initcall makes the
most sense here.
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: linux-mm@kvack.org
Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
---
mm/page_owner.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/mm/page_owner.c b/mm/page_owner.c
index 0993f5f36b01..bd5f842b56d2 100644
--- a/mm/page_owner.c
+++ b/mm/page_owner.c
@@ -310,4 +310,4 @@ static int __init pageowner_init(void)
return 0;
}
-module_init(pageowner_init)
+late_initcall(pageowner_init)
--
2.2.1
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
^ permalink raw reply related [flat|nested] 3+ messages in thread
end of thread, other threads:[~2015-06-01 0:57 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-06-01 0:54 [PATCH 00/11] Replace module_init with an alternate initcall in non modules Paul Gortmaker
2015-06-01 0:54 ` [PATCH 01/11] mm: replace module_init usages with subsys_initcall in nommu.c Paul Gortmaker
2015-06-01 0:54 ` [PATCH 09/11] mm/page_owner.c: use late_initcall to hook in enabling Paul Gortmaker
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).