diff mbox

arm64: cpu hotplug: ensure we mask out CPU_TASKS_FROZEN in notifiers

Message ID 1442249991-13345-1-git-send-email-will.deacon@arm.com
State Accepted
Commit e56d82a116176f7af9d642b560abbbd3a2b68013
Headers show

Commit Message

Will Deacon Sept. 14, 2015, 4:59 p.m. UTC
We have a couple of CPU hotplug notifiers for resetting the CPU debug
state to a sane value when a CPU comes online.

This patch ensures that we mask out CPU_TASKS_FROZEN so that we don't
miss any online events occuring due to suspend/resume.

Signed-off-by: Will Deacon <will.deacon@arm.com>
---
 arch/arm64/kernel/debug-monitors.c | 2 +-
 arch/arm64/kernel/hw_breakpoint.c  | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

Comments

Lorenzo Pieralisi Sept. 14, 2015, 6:08 p.m. UTC | #1
On Mon, Sep 14, 2015 at 05:59:51PM +0100, Will Deacon wrote:
> We have a couple of CPU hotplug notifiers for resetting the CPU debug
> state to a sane value when a CPU comes online.
> 
> This patch ensures that we mask out CPU_TASKS_FROZEN so that we don't
> miss any online events occuring due to suspend/resume.
> 
> Signed-off-by: Will Deacon <will.deacon@arm.com>
> ---
>  arch/arm64/kernel/debug-monitors.c | 2 +-
>  arch/arm64/kernel/hw_breakpoint.c  | 2 +-
>  2 files changed, 2 insertions(+), 2 deletions(-)

Acked-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>

> 
> diff --git a/arch/arm64/kernel/debug-monitors.c b/arch/arm64/kernel/debug-monitors.c
> index 9b3b62ac9c24..cebf78661a55 100644
> --- a/arch/arm64/kernel/debug-monitors.c
> +++ b/arch/arm64/kernel/debug-monitors.c
> @@ -134,7 +134,7 @@ static int os_lock_notify(struct notifier_block *self,
>  				    unsigned long action, void *data)
>  {
>  	int cpu = (unsigned long)data;
> -	if (action == CPU_ONLINE)
> +	if ((action & ~CPU_TASKS_FROZEN) == CPU_ONLINE)
>  		smp_call_function_single(cpu, clear_os_lock, NULL, 1);
>  	return NOTIFY_OK;
>  }
> diff --git a/arch/arm64/kernel/hw_breakpoint.c b/arch/arm64/kernel/hw_breakpoint.c
> index 565244fd57ff..2926c3dd6479 100644
> --- a/arch/arm64/kernel/hw_breakpoint.c
> +++ b/arch/arm64/kernel/hw_breakpoint.c
> @@ -878,7 +878,7 @@ static int hw_breakpoint_reset_notify(struct notifier_block *self,
>  						void *hcpu)
>  {
>  	int cpu = (long)hcpu;
> -	if (action == CPU_ONLINE)
> +	if ((action & ~CPU_TASKS_FROZEN) == CPU_ONLINE)
>  		smp_call_function_single(cpu, hw_breakpoint_reset, NULL, 1);
>  	return NOTIFY_OK;
>  }
> -- 
> 2.1.4
>
diff mbox

Patch

diff --git a/arch/arm64/kernel/debug-monitors.c b/arch/arm64/kernel/debug-monitors.c
index 9b3b62ac9c24..cebf78661a55 100644
--- a/arch/arm64/kernel/debug-monitors.c
+++ b/arch/arm64/kernel/debug-monitors.c
@@ -134,7 +134,7 @@  static int os_lock_notify(struct notifier_block *self,
 				    unsigned long action, void *data)
 {
 	int cpu = (unsigned long)data;
-	if (action == CPU_ONLINE)
+	if ((action & ~CPU_TASKS_FROZEN) == CPU_ONLINE)
 		smp_call_function_single(cpu, clear_os_lock, NULL, 1);
 	return NOTIFY_OK;
 }
diff --git a/arch/arm64/kernel/hw_breakpoint.c b/arch/arm64/kernel/hw_breakpoint.c
index 565244fd57ff..2926c3dd6479 100644
--- a/arch/arm64/kernel/hw_breakpoint.c
+++ b/arch/arm64/kernel/hw_breakpoint.c
@@ -878,7 +878,7 @@  static int hw_breakpoint_reset_notify(struct notifier_block *self,
 						void *hcpu)
 {
 	int cpu = (long)hcpu;
-	if (action == CPU_ONLINE)
+	if ((action & ~CPU_TASKS_FROZEN) == CPU_ONLINE)
 		smp_call_function_single(cpu, hw_breakpoint_reset, NULL, 1);
 	return NOTIFY_OK;
 }