mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2025-01-16 18:26:42 +00:00
ARM: sunxi: mc-smp: Use DT enable-method for sun9i A80 SMP
Instead of having an early init function check the machine compatible and installing multi-cluster SMP support for the A80 if it matches, use a new cpu enable-method string. This makes the platform support future proof in case anyone manages to add PSCI support. The original init code for the SMP support is changed into the .prepare_cpus callback in the smp_operations structure. Instead of panicing when resources are missing like on some platforms, our code merely guards against engaging SMP or CPU hotplug and returns an error. Acked-by: Maxime Ripard <maxime.ripard@bootlin.com> Reviewed-by: Rob Herring <robh@kernel.org> Signed-off-by: Chen-Yu Tsai <wens@csie.org>
This commit is contained in:
parent
c161daea99
commit
8591743f12
@ -198,6 +198,7 @@ described below.
|
||||
"actions,s500-smp"
|
||||
"allwinner,sun6i-a31"
|
||||
"allwinner,sun8i-a23"
|
||||
"allwinner,sun9i-a80-smp"
|
||||
"amlogic,meson8-smp"
|
||||
"amlogic,meson8b-smp"
|
||||
"arm,realview-smp"
|
||||
|
@ -690,7 +690,26 @@ static int __init sunxi_mc_smp_init(void)
|
||||
struct resource res;
|
||||
int ret;
|
||||
|
||||
if (!of_machine_is_compatible("allwinner,sun9i-a80"))
|
||||
/*
|
||||
* Don't bother checking the "cpus" node, as an enable-method
|
||||
* property in that node is undocumented.
|
||||
*/
|
||||
node = of_cpu_device_node_get(0);
|
||||
if (!node)
|
||||
return -ENODEV;
|
||||
|
||||
/*
|
||||
* We can't actually use the enable-method magic in the kernel.
|
||||
* Our loopback / trampoline code uses the CPU suspend framework,
|
||||
* which requires the identity mapping be available. It would not
|
||||
* yet be available if we used the .init_cpus or .prepare_cpus
|
||||
* callbacks in smp_operations, which we would use if we were to
|
||||
* use CPU_METHOD_OF_DECLARE
|
||||
*/
|
||||
ret = of_property_match_string(node, "enable-method",
|
||||
"allwinner,sun9i-a80-smp");
|
||||
of_node_put(node);
|
||||
if (ret)
|
||||
return -ENODEV;
|
||||
|
||||
if (!sunxi_mc_smp_cpu_table_init())
|
||||
|
Loading…
x
Reference in New Issue
Block a user