MIPS: Fix early CM probing
Commit c014d164f2
("MIPS: Add platform callback before initializing
the L2 cache") added a platform_early_l2_init function in order to allow
platforms to probe for the CM before L2 initialisation is performed, so
that CM GCRs are available to mips_sc_probe.
That commit actually fails to do anything useful, since it checks
mips_cm_revision to determine whether it should call mips_cm_probe but
the result of mips_cm_revision will always be 0 until mips_cm_probe has
been called. Thus the "early" mips_cm_probe call never occurs.
Fix this & drop the useless weak platform_early_l2_init function by
simply calling mips_cm_probe from setup_arch. For platforms that don't
select CONFIG_MIPS_CM this will be a no-op, and for those that do it
removes the requirement for them to call mips_cm_probe manually
(although doing so isn't harmful for now).
Signed-off-by: Paul Burton <paul.burton@imgtec.com>
Reviewed-by: Alexander Sverdlin <alexander.sverdlin@nokia.com>
Cc: Andrzej Hajda <a.hajda@samsung.com>
Cc: Aaro Koskinen <aaro.koskinen@nokia.com>
Cc: Masahiro Yamada <yamada.masahiro@socionext.com>
Cc: Rob Herring <robh@kernel.org>
Cc: Peter Hurley <peter@hurleysoftware.com>
Cc: Leonid Yegoshin <Leonid.Yegoshin@imgtec.com>
Cc: Jaedon Shin <jaedon.shin@gmail.com>
Cc: James Hogan <james.hogan@imgtec.com>
Cc: Jonas Gorski <jogo@openwrt.org>
Cc: Markos Chandras <markos.chandras@imgtec.com>
Cc: linux-mips@linux-mips.org
Cc: linux-kernel@vger.kernel.org
Patchwork: https://patchwork.linux-mips.org/patch/12475/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
This commit is contained in:
Родитель
e6c058f9b2
Коммит
3af5a67c86
|
@ -782,6 +782,7 @@ static inline void prefill_possible_map(void) {}
|
||||||
void __init setup_arch(char **cmdline_p)
|
void __init setup_arch(char **cmdline_p)
|
||||||
{
|
{
|
||||||
cpu_probe();
|
cpu_probe();
|
||||||
|
mips_cm_probe();
|
||||||
prom_init();
|
prom_init();
|
||||||
|
|
||||||
setup_early_fdc_console();
|
setup_early_fdc_console();
|
||||||
|
|
|
@ -181,10 +181,6 @@ static int __init mips_sc_probe_cm3(void)
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
void __weak platform_early_l2_init(void)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline int __init mips_sc_probe(void)
|
static inline int __init mips_sc_probe(void)
|
||||||
{
|
{
|
||||||
struct cpuinfo_mips *c = ¤t_cpu_data;
|
struct cpuinfo_mips *c = ¤t_cpu_data;
|
||||||
|
@ -194,12 +190,6 @@ static inline int __init mips_sc_probe(void)
|
||||||
/* Mark as not present until probe completed */
|
/* Mark as not present until probe completed */
|
||||||
c->scache.flags |= MIPS_CACHE_NOT_PRESENT;
|
c->scache.flags |= MIPS_CACHE_NOT_PRESENT;
|
||||||
|
|
||||||
/*
|
|
||||||
* Do we need some platform specific probing before
|
|
||||||
* we configure L2?
|
|
||||||
*/
|
|
||||||
platform_early_l2_init();
|
|
||||||
|
|
||||||
if (mips_cm_revision() >= CM_REV_CM3)
|
if (mips_cm_revision() >= CM_REV_CM3)
|
||||||
return mips_sc_probe_cm3();
|
return mips_sc_probe_cm3();
|
||||||
|
|
||||||
|
|
|
@ -293,7 +293,6 @@ mips_pci_controller:
|
||||||
console_config();
|
console_config();
|
||||||
#endif
|
#endif
|
||||||
/* Early detection of CMP support */
|
/* Early detection of CMP support */
|
||||||
mips_cm_probe();
|
|
||||||
mips_cpc_probe();
|
mips_cpc_probe();
|
||||||
|
|
||||||
if (!register_cps_smp_ops())
|
if (!register_cps_smp_ops())
|
||||||
|
@ -304,10 +303,3 @@ mips_pci_controller:
|
||||||
return;
|
return;
|
||||||
register_up_smp_ops();
|
register_up_smp_ops();
|
||||||
}
|
}
|
||||||
|
|
||||||
void platform_early_l2_init(void)
|
|
||||||
{
|
|
||||||
/* L2 configuration lives in the CM3 */
|
|
||||||
if (mips_cm_revision() >= CM_REV_CM3)
|
|
||||||
mips_cm_probe();
|
|
||||||
}
|
|
||||||
|
|
Загрузка…
Ссылка в новой задаче