lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Wed, 18 Mar 2009 10:40:24 +1030 From: Rusty Russell <rusty@...tcorp.com.au> To: Len Brown <len.brown@...el.com>, Dave Jones <davej@...hat.com> Cc: Andrew Morton <akpm@...ux-foundation.org> Subject: [PATCH 3/9] use smp_call_function_single() in arch/x86/kernel/cpu/cpufreq/acpi-cpufreq.c From: Andrew Morton <akpm@...ux-foundation.org> Attempting to rid us of the problematic work_on_cpu(). Just use smp_call_function_single() here. Cc: Ingo Molnar <mingo@...e.hu> Cc: Venkatesh Pallipadi <venkatesh.pallipadi@...el.com> Cc: Len Brown <len.brown@...el.com> Cc: Zhao Yakui <yakui.zhao@...el.com> Cc: Dave Jones <davej@...hat.com> Cc: Thomas Gleixner <tglx@...utronix.de> Signed-off-by: Andrew Morton <akpm@...ux-foundation.org> Signed-off-by: Rusty Russell <rusty@...tcorp.com.au> --- arch/x86/kernel/cpu/cpufreq/acpi-cpufreq.c | 24 +++++++++++------------- 1 file changed, 11 insertions(+), 13 deletions(-) diff -puN arch/x86/kernel/cpu/cpufreq/acpi-cpufreq.c~arch-x86-kernel-cpu-cpufreq-acpi-cpufreqc-avoid-using-work_on_cpu arch/x86/kernel/cpu/cpufreq/acpi-cpufreq.c --- a/arch/x86/kernel/cpu/cpufreq/acpi-cpufreq.c~arch-x86-kernel-cpu-cpufreq-acpi-cpufreqc-avoid-using-work_on_cpu +++ a/arch/x86/kernel/cpu/cpufreq/acpi-cpufreq.c @@ -150,7 +150,8 @@ struct drv_cmd { u32 val; }; -static long do_drv_read(void *_cmd) +/* Called via smp_call_function_single(), on the target CPU */ +static void do_drv_read(void *_cmd) { struct drv_cmd *cmd = _cmd; u32 h; @@ -167,10 +168,10 @@ static long do_drv_read(void *_cmd) default: break; } - return 0; } -static long do_drv_write(void *_cmd) +/* Called via smp_call_function_single(), on the target CPU */ +static void do_drv_write(void *_cmd) { struct drv_cmd *cmd = _cmd; u32 lo, hi; @@ -189,23 +190,21 @@ static long do_drv_write(void *_cmd) default: break; } - return 0; } static void drv_read(struct drv_cmd *cmd) { cmd->val = 0; - work_on_cpu(cpumask_any(cmd->mask), do_drv_read, cmd); + smp_call_function_single(cpumask_any(cmd->mask), do_drv_read, cmd, 1); } static void drv_write(struct drv_cmd *cmd) { - unsigned int i; + unsigned int cpu; - for_each_cpu(i, cmd->mask) { - work_on_cpu(i, do_drv_write, cmd); - } + for_each_cpu(cpu, cmd->mask) + smp_call_function_single(cpu, do_drv_write, cmd, 1); } static u32 get_cur_val(const struct cpumask *mask) @@ -250,7 +249,8 @@ struct perf_cur { }; -static long read_measured_perf_ctrs(void *_cur) +/* Called via smp_call_function_single(), on the target CPU */ +static void read_measured_perf_ctrs(void *_cur) { struct perf_cur *cur = _cur; @@ -259,8 +259,6 @@ static long read_measured_perf_ctrs(void wrmsr(MSR_IA32_APERF, 0, 0); wrmsr(MSR_IA32_MPERF, 0, 0); - - return 0; } /* @@ -283,7 +281,7 @@ static unsigned int get_measured_perf(st unsigned int perf_percent; unsigned int retval; - if (!work_on_cpu(cpu, read_measured_perf_ctrs, &cur)) + if (smp_call_function_single(cpu, read_measured_perf_ctrs, &cur, 1)) return 0; #ifdef __i386__ _ -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@...r.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists