* [PATCH] call stop_machine_text_poke() on all cpus
@ 2010-10-28 15:20 Jason Baron
2010-10-28 16:04 ` Mathieu Desnoyers
` (2 more replies)
0 siblings, 3 replies; 4+ messages in thread
From: Jason Baron @ 2010-10-28 15:20 UTC (permalink / raw)
To: masami.hiramatsu.pt
Cc: mathieu.desnoyers, hpa, tglx, andi, fweisbec, rostedt, mingo,
linux-kernel
Currently, text_poke_smp() passes a NULL as the third argument to
__stop_machine(), which will only run stop_machine_text_poke()
on 1 cpu. Change NULL -> cpu_online_mask, as stop_machine_text_poke()
is intended to be run on all cpus.
I actually didn't notice any problems with stop_machine_text_poke()
only being called on 1 cpu, but found this via code inspection.
Signed-off-by: Jason Baron <jbaron@redhat.com>
---
arch/x86/kernel/alternative.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/arch/x86/kernel/alternative.c b/arch/x86/kernel/alternative.c
index 9f39a1c..3c3f26f 100644
--- a/arch/x86/kernel/alternative.c
+++ b/arch/x86/kernel/alternative.c
@@ -705,6 +705,6 @@ void *__kprobes text_poke_smp(void *addr, const void *opcode, size_t len)
atomic_set(&stop_machine_first, 1);
wrote_text = 0;
/* Use __stop_machine() because the caller already got online_cpus. */
- __stop_machine(stop_machine_text_poke, (void *)&tpp, NULL);
+ __stop_machine(stop_machine_text_poke, (void *)&tpp, cpu_online_mask);
return addr;
}
--
1.7.1
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH] call stop_machine_text_poke() on all cpus
2010-10-28 15:20 [PATCH] call stop_machine_text_poke() on all cpus Jason Baron
@ 2010-10-28 16:04 ` Mathieu Desnoyers
2010-10-29 4:22 ` Masami Hiramatsu
2010-10-30 1:10 ` [tip:x86/urgent] x86, alternative: Call " tip-bot for Jason Baron
2 siblings, 0 replies; 4+ messages in thread
From: Mathieu Desnoyers @ 2010-10-28 16:04 UTC (permalink / raw)
To: Jason Baron
Cc: masami.hiramatsu.pt, hpa, tglx, andi, fweisbec, rostedt, mingo,
linux-kernel
* Jason Baron (jbaron@redhat.com) wrote:
> Currently, text_poke_smp() passes a NULL as the third argument to
> __stop_machine(), which will only run stop_machine_text_poke()
> on 1 cpu. Change NULL -> cpu_online_mask, as stop_machine_text_poke()
> is intended to be run on all cpus.
>
> I actually didn't notice any problems with stop_machine_text_poke()
> only being called on 1 cpu, but found this via code inspection.
>
> Signed-off-by: Jason Baron <jbaron@redhat.com>
Good catch!
The side-effect of this is that the other CPUs are not executing the
memory barrier and not flushing the icache, as we would normally expect.
Thanks,
Acked-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
> ---
> arch/x86/kernel/alternative.c | 2 +-
> 1 files changed, 1 insertions(+), 1 deletions(-)
>
> diff --git a/arch/x86/kernel/alternative.c b/arch/x86/kernel/alternative.c
> index 9f39a1c..3c3f26f 100644
> --- a/arch/x86/kernel/alternative.c
> +++ b/arch/x86/kernel/alternative.c
> @@ -705,6 +705,6 @@ void *__kprobes text_poke_smp(void *addr, const void *opcode, size_t len)
> atomic_set(&stop_machine_first, 1);
> wrote_text = 0;
> /* Use __stop_machine() because the caller already got online_cpus. */
> - __stop_machine(stop_machine_text_poke, (void *)&tpp, NULL);
> + __stop_machine(stop_machine_text_poke, (void *)&tpp, cpu_online_mask);
> return addr;
> }
> --
> 1.7.1
>
--
Mathieu Desnoyers
Operating System Efficiency R&D Consultant
EfficiOS Inc.
http://www.efficios.com
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH] call stop_machine_text_poke() on all cpus
2010-10-28 15:20 [PATCH] call stop_machine_text_poke() on all cpus Jason Baron
2010-10-28 16:04 ` Mathieu Desnoyers
@ 2010-10-29 4:22 ` Masami Hiramatsu
2010-10-30 1:10 ` [tip:x86/urgent] x86, alternative: Call " tip-bot for Jason Baron
2 siblings, 0 replies; 4+ messages in thread
From: Masami Hiramatsu @ 2010-10-29 4:22 UTC (permalink / raw)
To: Jason Baron
Cc: mathieu.desnoyers, hpa, tglx, andi, fweisbec, rostedt, mingo,
linux-kernel, 2nddept-manager
(2010/10/29 0:20), Jason Baron wrote:
> Currently, text_poke_smp() passes a NULL as the third argument to
> __stop_machine(), which will only run stop_machine_text_poke()
> on 1 cpu. Change NULL -> cpu_online_mask, as stop_machine_text_poke()
> is intended to be run on all cpus.
That should be my misunderstand...
>
> I actually didn't notice any problems with stop_machine_text_poke()
> only being called on 1 cpu, but found this via code inspection.
Thank you very much!
Acked-by: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
>
> Signed-off-by: Jason Baron <jbaron@redhat.com>
> ---
> arch/x86/kernel/alternative.c | 2 +-
> 1 files changed, 1 insertions(+), 1 deletions(-)
>
> diff --git a/arch/x86/kernel/alternative.c b/arch/x86/kernel/alternative.c
> index 9f39a1c..3c3f26f 100644
> --- a/arch/x86/kernel/alternative.c
> +++ b/arch/x86/kernel/alternative.c
> @@ -705,6 +705,6 @@ void *__kprobes text_poke_smp(void *addr, const void *opcode, size_t len)
> atomic_set(&stop_machine_first, 1);
> wrote_text = 0;
> /* Use __stop_machine() because the caller already got online_cpus. */
> - __stop_machine(stop_machine_text_poke, (void *)&tpp, NULL);
> + __stop_machine(stop_machine_text_poke, (void *)&tpp, cpu_online_mask);
> return addr;
> }
--
Masami HIRAMATSU
2nd Dept. Linux Technology Center
Hitachi, Ltd., Systems Development Laboratory
E-mail: masami.hiramatsu.pt@hitachi.com
^ permalink raw reply [flat|nested] 4+ messages in thread
* [tip:x86/urgent] x86, alternative: Call stop_machine_text_poke() on all cpus
2010-10-28 15:20 [PATCH] call stop_machine_text_poke() on all cpus Jason Baron
2010-10-28 16:04 ` Mathieu Desnoyers
2010-10-29 4:22 ` Masami Hiramatsu
@ 2010-10-30 1:10 ` tip-bot for Jason Baron
2 siblings, 0 replies; 4+ messages in thread
From: tip-bot for Jason Baron @ 2010-10-30 1:10 UTC (permalink / raw)
To: linux-tip-commits
Cc: linux-kernel, hpa, mingo, masami.hiramatsu.pt, mathieu.desnoyers,
jbaron, tglx, hpa
Commit-ID: 404ba5d7bb958d3d788bdaa0debc0bdf60f13ffe
Gitweb: http://git.kernel.org/tip/404ba5d7bb958d3d788bdaa0debc0bdf60f13ffe
Author: Jason Baron <jbaron@redhat.com>
AuthorDate: Thu, 28 Oct 2010 11:20:27 -0400
Committer: H. Peter Anvin <hpa@zytor.com>
CommitDate: Fri, 29 Oct 2010 16:42:58 -0700
x86, alternative: Call stop_machine_text_poke() on all cpus
Currently, text_poke_smp() passes a NULL as the third argument to
__stop_machine(), which will only run stop_machine_text_poke()
on 1 cpu. Change NULL -> cpu_online_mask, as stop_machine_text_poke()
is intended to be run on all cpus.
I actually didn't notice any problems with stop_machine_text_poke()
only being called on 1 cpu, but found this via code inspection.
Signed-off-by: Jason Baron <jbaron@redhat.com>
LKML-Reference: <20101028152026.GB2875@redhat.com>
Acked-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Acked-by: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
---
arch/x86/kernel/alternative.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/arch/x86/kernel/alternative.c b/arch/x86/kernel/alternative.c
index a36bb90..5ceeca3 100644
--- a/arch/x86/kernel/alternative.c
+++ b/arch/x86/kernel/alternative.c
@@ -638,7 +638,7 @@ void *__kprobes text_poke_smp(void *addr, const void *opcode, size_t len)
atomic_set(&stop_machine_first, 1);
wrote_text = 0;
/* Use __stop_machine() because the caller already got online_cpus. */
- __stop_machine(stop_machine_text_poke, (void *)&tpp, NULL);
+ __stop_machine(stop_machine_text_poke, (void *)&tpp, cpu_online_mask);
return addr;
}
^ permalink raw reply related [flat|nested] 4+ messages in thread
end of thread, other threads:[~2010-10-30 1:10 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-10-28 15:20 [PATCH] call stop_machine_text_poke() on all cpus Jason Baron
2010-10-28 16:04 ` Mathieu Desnoyers
2010-10-29 4:22 ` Masami Hiramatsu
2010-10-30 1:10 ` [tip:x86/urgent] x86, alternative: Call " tip-bot for Jason Baron
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.