arm64: cpufeature: Pass capability structure to ->enable callback
authorMark Rutland <mark.rutland@arm.com>
Thu, 12 Apr 2018 11:11:09 +0000 (12:11 +0100)
committerJianxin Pan <jianxin.pan@amlogic.com>
Tue, 15 May 2018 11:22:05 +0000 (04:22 -0700)
PD#166068: arm64: cpufeature: Pass capability structure to ->enable callback

Fix CPU-hotplug fail to bringup issue once stopped CPU.

From: Will Deacon <will.deacon@arm.com>

commit 0a0d111d40fd1dc588cc590fab6b55d86ddc71d3 upstream.

In order to invoke the CPU capability ->matches callback from the ->enable
callback for applying local-CPU workarounds, we need a handle on the
capability structure.

This patch passes a pointer to the capability structure to the ->enable
callback.

Change-Id: I2c002dfbba4e923d0e44ab085ede46e6f47c9755
Reviewed-by: Suzuki K Poulose <suzuki.poulose@arm.com>
Signed-off-by: Will Deacon <will.deacon@arm.com>
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
Signed-off-by: Mark Rutland <mark.rutland@arm.com> [v4.9 backport]
Tested-by: Greg Hackmann <ghackmann@google.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Yixun Lan <yixun.lan@amlogic.com>
arch/arm64/kernel/cpufeature.c

index 0274745..1cf16c6 100644 (file)
@@ -1060,7 +1060,7 @@ void __init enable_cpu_capabilities(const struct arm64_cpu_capabilities *caps)
                         * uses an IPI, giving us a PSTATE that disappears when
                         * we return.
                         */
-                       stop_machine(caps->enable, NULL, cpu_online_mask);
+                       stop_machine(caps->enable, (void *)caps, cpu_online_mask);
 }
 
 /*
@@ -1117,7 +1117,7 @@ verify_local_cpu_features(const struct arm64_cpu_capabilities *caps_list)
                        cpu_die_early();
                }
                if (caps->enable)
-                       caps->enable(NULL);
+                       caps->enable((void *)caps);
        }
 }