From: Borislav Petkov <borislav.petkov@amd.com>
To: hpa@zytor.com
Cc: x86@kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH] x86, msr: unify rdmsr_on_cpus/wrmsr_on_cpus
Date: Mon, 14 Sep 2009 14:55:11 +0200 [thread overview]
Message-ID: <20090914125511.GC13615@aftab> (raw)
In-Reply-To: <1248945002-2931-2-git-send-email-borislav.petkov@amd.com>
Hi Peter,
care to pick up the one below too while the merge window is still open?
On Thu, Jul 30, 2009 at 11:10:02AM +0200, Borislav Petkov wrote:
> Since rdmsr_on_cpus and wrmsr_on_cpus are almost identical, unify them
> into a common __rwmsr_on_cpus helper thus avoiding code duplication.
>
> While at it, convert cpumask_t's to const struct cpumask *.
>
> Signed-off-by: Borislav Petkov <borislav.petkov@amd.com>
> ---
>
> This one is .32 material.
>
> arch/x86/include/asm/msr.h | 4 +-
> arch/x86/lib/msr.c | 46 ++++++++++++++++++-------------------------
> 2 files changed, 21 insertions(+), 29 deletions(-)
>
> diff --git a/arch/x86/include/asm/msr.h b/arch/x86/include/asm/msr.h
> index 48ad9d2..f2f4309 100644
> --- a/arch/x86/include/asm/msr.h
> +++ b/arch/x86/include/asm/msr.h
> @@ -224,8 +224,8 @@ do { \
> #ifdef CONFIG_SMP
> int rdmsr_on_cpu(unsigned int cpu, u32 msr_no, u32 *l, u32 *h);
> int wrmsr_on_cpu(unsigned int cpu, u32 msr_no, u32 l, u32 h);
> -void rdmsr_on_cpus(const cpumask_t *mask, u32 msr_no, struct msr *msrs);
> -void wrmsr_on_cpus(const cpumask_t *mask, u32 msr_no, struct msr *msrs);
> +void rdmsr_on_cpus(const struct cpumask *mask, u32 msr_no, struct msr *msrs);
> +void wrmsr_on_cpus(const struct cpumask *mask, u32 msr_no, struct msr *msrs);
> int rdmsr_safe_on_cpu(unsigned int cpu, u32 msr_no, u32 *l, u32 *h);
> int wrmsr_safe_on_cpu(unsigned int cpu, u32 msr_no, u32 l, u32 h);
> #else /* CONFIG_SMP */
> diff --git a/arch/x86/lib/msr.c b/arch/x86/lib/msr.c
> index caa24ac..2f26cf4 100644
> --- a/arch/x86/lib/msr.c
> +++ b/arch/x86/lib/msr.c
> @@ -71,14 +71,9 @@ int wrmsr_on_cpu(unsigned int cpu, u32 msr_no, u32 l, u32 h)
> }
> EXPORT_SYMBOL(wrmsr_on_cpu);
>
> -/* rdmsr on a bunch of CPUs
> - *
> - * @mask: which CPUs
> - * @msr_no: which MSR
> - * @msrs: array of MSR values
> - *
> - */
> -void rdmsr_on_cpus(const cpumask_t *mask, u32 msr_no, struct msr *msrs)
> +static void __rwmsr_on_cpus(const struct cpumask *mask, u32 msr_no,
> + struct msr *msrs,
> + void (*msr_func) (void *info))
> {
> struct msr_info rv;
> int this_cpu;
> @@ -92,11 +87,23 @@ void rdmsr_on_cpus(const cpumask_t *mask, u32 msr_no, struct msr *msrs)
> this_cpu = get_cpu();
>
> if (cpumask_test_cpu(this_cpu, mask))
> - __rdmsr_on_cpu(&rv);
> + msr_func(&rv);
>
> - smp_call_function_many(mask, __rdmsr_on_cpu, &rv, 1);
> + smp_call_function_many(mask, msr_func, &rv, 1);
> put_cpu();
> }
> +
> +/* rdmsr on a bunch of CPUs
> + *
> + * @mask: which CPUs
> + * @msr_no: which MSR
> + * @msrs: array of MSR values
> + *
> + */
> +void rdmsr_on_cpus(const struct cpumask *mask, u32 msr_no, struct msr *msrs)
> +{
> + __rwmsr_on_cpus(mask, msr_no, msrs, __rdmsr_on_cpu);
> +}
> EXPORT_SYMBOL(rdmsr_on_cpus);
>
> /*
> @@ -107,24 +114,9 @@ EXPORT_SYMBOL(rdmsr_on_cpus);
> * @msrs: array of MSR values
> *
> */
> -void wrmsr_on_cpus(const cpumask_t *mask, u32 msr_no, struct msr *msrs)
> +void wrmsr_on_cpus(const struct cpumask *mask, u32 msr_no, struct msr *msrs)
> {
> - struct msr_info rv;
> - int this_cpu;
> -
> - memset(&rv, 0, sizeof(rv));
> -
> - rv.off = cpumask_first(mask);
> - rv.msrs = msrs;
> - rv.msr_no = msr_no;
> -
> - this_cpu = get_cpu();
> -
> - if (cpumask_test_cpu(this_cpu, mask))
> - __wrmsr_on_cpu(&rv);
> -
> - smp_call_function_many(mask, __wrmsr_on_cpu, &rv, 1);
> - put_cpu();
> + __rwmsr_on_cpus(mask, msr_no, msrs, __wrmsr_on_cpu);
> }
> EXPORT_SYMBOL(wrmsr_on_cpus);
>
> --
> 1.6.3.3
>
> _______________________________________________
> osrc-patches mailing list
> osrc-patches@elbe.amd.com
> https://ddcwww.amd.com/mailman/listinfo/osrc-patches
--
Regards/Gruss,
Boris.
Operating | Advanced Micro Devices GmbH
System | Karl-Hammerschmidt-Str. 34, 85609 Dornach b. München, Germany
Research | Geschäftsführer: Andrew Bowd, Thomas M. McCoy, Giuliano Meroni
Center | Sitz: Dornach, Gemeinde Aschheim, Landkreis München
(OSRC) | Registergericht München, HRB Nr. 43632
prev parent reply other threads:[~2009-09-14 12:55 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-07-06 14:29 [PATCH] [x86, msr]: remove code duplication Borislav Petkov
2009-07-06 21:31 ` H. Peter Anvin
2009-07-07 10:37 ` Borislav Petkov
2009-07-07 15:56 ` H. Peter Anvin
2009-07-08 11:19 ` [PATCH] [x86, msr]: execute on the correct CPU subset (was: Re: [PATCH] [x86, msr]: remove code duplication) Borislav Petkov
2009-07-16 16:51 ` Borislav Petkov
2009-07-16 17:24 ` [PATCH] [x86, msr]: execute on the correct CPU subset H. Peter Anvin
2009-07-27 20:46 ` H. Peter Anvin
2009-07-28 10:29 ` Borislav Petkov
2009-07-29 16:49 ` Borislav Petkov
2009-07-29 17:30 ` H. Peter Anvin
2009-07-29 18:02 ` Borislav Petkov
2009-07-29 18:05 ` H. Peter Anvin
2009-07-29 18:46 ` Borislav Petkov
2009-07-29 18:50 ` H. Peter Anvin
2009-07-30 9:10 ` [PATCH] x86, msr: " Borislav Petkov
2009-07-30 9:10 ` [PATCH] x86, msr: unify rdmsr_on_cpus/wrmsr_on_cpus Borislav Petkov
2009-09-14 12:55 ` Borislav Petkov [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20090914125511.GC13615@aftab \
--to=borislav.petkov@amd.com \
--cc=hpa@zytor.com \
--cc=linux-kernel@vger.kernel.org \
--cc=x86@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.