diff options
author | Thomas Bogendoerfer <tbogendoerfer@suse.de> | 2019-02-19 16:57:18 +0100 |
---|---|---|
committer | Paul Burton <paul.burton@mips.com> | 2019-02-19 21:46:02 +0100 |
commit | 9707b7e6394216f5c56c30a56c38bffec4c0474d (patch) | |
tree | 280e55c3532b45f6338a13bd8c8582e603866819 | |
parent | MIPS: SGI-IP27: use pr_info/pr_emerg and pr_cont to fix output (diff) | |
download | linux-9707b7e6394216f5c56c30a56c38bffec4c0474d.tar.xz linux-9707b7e6394216f5c56c30a56c38bffec4c0474d.zip |
MIPS: SGI-IP27: do xtalk scanning later
Move xtalk scanning to a later boot stage to be able using things like
kmalloc and friends.
Signed-off-by: Thomas Bogendoerfer <tbogendoerfer@suse.de>
Signed-off-by: Paul Burton <paul.burton@mips.com>
Cc: Ralf Baechle <ralf@linux-mips.org>
Cc: James Hogan <jhogan@kernel.org>
Cc: linux-mips@vger.kernel.org
Cc: linux-kernel@vger.kernel.org
-rw-r--r-- | arch/mips/sgi-ip27/ip27-init.c | 3 | ||||
-rw-r--r-- | arch/mips/sgi-ip27/ip27-xtalk.c | 13 |
2 files changed, 12 insertions, 4 deletions
diff --git a/arch/mips/sgi-ip27/ip27-init.c b/arch/mips/sgi-ip27/ip27-init.c index 83399e578b61..aba985cf07c0 100644 --- a/arch/mips/sgi-ip27/ip27-init.c +++ b/arch/mips/sgi-ip27/ip27-init.c @@ -52,8 +52,6 @@ EXPORT_SYMBOL_GPL(sn_cpu_info); extern void pcibr_setup(cnodeid_t); -extern void xtalk_probe_node(cnodeid_t nid); - static void per_hub_init(cnodeid_t cnode) { struct hub_data *hub = hub_data(cnode); @@ -71,7 +69,6 @@ static void per_hub_init(cnodeid_t cnode) REMOTE_HUB_S(nasid, IIO_ICTO, 0xff); hub_rtc_init(cnode); - xtalk_probe_node(cnode); #ifdef CONFIG_REPLICATE_EXHANDLERS /* diff --git a/arch/mips/sgi-ip27/ip27-xtalk.c b/arch/mips/sgi-ip27/ip27-xtalk.c index 4fe5678ba74d..ce06aaa115ae 100644 --- a/arch/mips/sgi-ip27/ip27-xtalk.c +++ b/arch/mips/sgi-ip27/ip27-xtalk.c @@ -99,7 +99,7 @@ static int xbow_probe(nasid_t nasid) return 0; } -void xtalk_probe_node(cnodeid_t nid) +static void xtalk_probe_node(cnodeid_t nid) { volatile u64 hubreg; nasid_t nasid; @@ -133,3 +133,14 @@ void xtalk_probe_node(cnodeid_t nid) break; } } + +static int __init xtalk_init(void) +{ + cnodeid_t cnode; + + for_each_online_node(cnode) + xtalk_probe_node(cnode); + + return 0; +} +arch_initcall(xtalk_init); |