[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <04d47f21-6183-42d5-bc18-f23a8c3c2009@suse.com>
Date: Fri, 25 Apr 2025 12:08:36 +0200
From: Jürgen Groß <jgross@...e.com>
To: "Xin Li (Intel)" <xin@...or.com>, linux-kernel@...r.kernel.org,
kvm@...r.kernel.org, linux-perf-users@...r.kernel.org,
linux-hyperv@...r.kernel.org, virtualization@...ts.linux.dev,
linux-pm@...r.kernel.org, linux-edac@...r.kernel.org,
xen-devel@...ts.xenproject.org, linux-acpi@...r.kernel.org,
linux-hwmon@...r.kernel.org, netdev@...r.kernel.org,
platform-driver-x86@...r.kernel.org
Cc: tglx@...utronix.de, mingo@...hat.com, bp@...en8.de,
dave.hansen@...ux.intel.com, x86@...nel.org, hpa@...or.com, acme@...nel.org,
andrew.cooper3@...rix.com, peterz@...radead.org, namhyung@...nel.org,
mark.rutland@....com, alexander.shishkin@...ux.intel.com, jolsa@...nel.org,
irogers@...gle.com, adrian.hunter@...el.com, kan.liang@...ux.intel.com,
wei.liu@...nel.org, ajay.kaher@...adcom.com,
bcm-kernel-feedback-list@...adcom.com, tony.luck@...el.com,
pbonzini@...hat.com, vkuznets@...hat.com, seanjc@...gle.com,
luto@...nel.org, boris.ostrovsky@...cle.com, kys@...rosoft.com,
haiyangz@...rosoft.com, decui@...rosoft.com, dapeng1.mi@...ux.intel.com
Subject: Re: [PATCH v3 10/14] x86/xen/msr: Remove pmu_msr_{read,write}()
On 25.04.25 10:34, Xin Li (Intel) wrote:
> As pmu_msr_{read,write}() are now wrappers of pmu_msr_chk_emulated(),
> remove them and use pmu_msr_chk_emulated() directly.
>
> As pmu_msr_chk_emulated() could easily return false in the cases where
> it would set *emul to false, remove the "emul" argument and use the
> return value instead.
>
> While at it, convert the data type of MSR index to u32 in functions
> called in pmu_msr_chk_emulated().
>
> Suggested-by: H. Peter Anvin (Intel) <hpa@...or.com>
> Suggested-by: Juergen Gross <jgross@...e.com>
> Signed-off-by: Xin Li (Intel) <xin@...or.com>
> ---
>
> Change in v3:
> *) Remove the "emul" argument of pmu_msr_chk_emulated() (Juergen Gross).
> ---
> arch/x86/xen/enlighten_pv.c | 15 ++++++++-------
> arch/x86/xen/pmu.c | 30 ++++++------------------------
> arch/x86/xen/xen-ops.h | 3 +--
> 3 files changed, 15 insertions(+), 33 deletions(-)
>
> diff --git a/arch/x86/xen/enlighten_pv.c b/arch/x86/xen/enlighten_pv.c
> index 61e51a970f3c..528a2f4df050 100644
> --- a/arch/x86/xen/enlighten_pv.c
> +++ b/arch/x86/xen/enlighten_pv.c
> @@ -1090,7 +1090,7 @@ static u64 xen_do_read_msr(unsigned int msr, int *err)
> {
> u64 val = 0; /* Avoid uninitialized value for safe variant. */
>
> - if (pmu_msr_read_emulated(msr, &val))
> + if (pmu_msr_chk_emulated(msr, &val, true))
> return val;
>
> if (err)
> @@ -1162,12 +1162,13 @@ static void xen_do_write_msr(unsigned int msr, unsigned int low,
> default:
> val = (u64)high << 32 | low;
>
> - if (!pmu_msr_write_emulated(msr, val)) {
> - if (err)
> - *err = native_write_msr_safe(msr, low, high);
> - else
> - native_write_msr(msr, low, high);
> - }
> + if (pmu_msr_chk_emulated(msr, &val, false))
> + return;
> +
> + if (err)
> + *err = native_write_msr_safe(msr, low, high);
> + else
> + native_write_msr(msr, low, high);
> }
> }
>
> diff --git a/arch/x86/xen/pmu.c b/arch/x86/xen/pmu.c
> index b6557f2d1a2e..6bee83018694 100644
> --- a/arch/x86/xen/pmu.c
> +++ b/arch/x86/xen/pmu.c
> @@ -128,7 +128,7 @@ static inline uint32_t get_fam15h_addr(u32 addr)
> return addr;
> }
>
> -static inline bool is_amd_pmu_msr(unsigned int msr)
> +static bool is_amd_pmu_msr(u32 msr)
> {
> if (boot_cpu_data.x86_vendor != X86_VENDOR_AMD &&
> boot_cpu_data.x86_vendor != X86_VENDOR_HYGON)
> @@ -194,8 +194,7 @@ static bool is_intel_pmu_msr(u32 msr_index, int *type, int *index)
> }
> }
>
> -static bool xen_intel_pmu_emulate(unsigned int msr, u64 *val, int type,
> - int index, bool is_read)
> +static bool xen_intel_pmu_emulate(u32 msr, u64 *val, int type, int index, bool is_read)
> {
> uint64_t *reg = NULL;
> struct xen_pmu_intel_ctxt *ctxt;
> @@ -257,7 +256,7 @@ static bool xen_intel_pmu_emulate(unsigned int msr, u64 *val, int type,
> return false;
> }
>
> -static bool xen_amd_pmu_emulate(unsigned int msr, u64 *val, bool is_read)
> +static bool xen_amd_pmu_emulate(u32 msr, u64 *val, bool is_read)
> {
> uint64_t *reg = NULL;
> int i, off = 0;
> @@ -298,33 +297,16 @@ static bool xen_amd_pmu_emulate(unsigned int msr, u64 *val, bool is_read)
> return false;
> }
>
> -static bool pmu_msr_chk_emulated(unsigned int msr, uint64_t *val, bool is_read,
> - bool *emul)
> +bool pmu_msr_chk_emulated(u32 msr, u64 *val, bool is_read)
> {
> int type, index = 0;
>
> if (is_amd_pmu_msr(msr))
> - *emul = xen_amd_pmu_emulate(msr, val, is_read);
> + return xen_amd_pmu_emulate(msr, val, is_read);
> else if (is_intel_pmu_msr(msr, &type, &index))
> - *emul = xen_intel_pmu_emulate(msr, val, type, index, is_read);
> + return xen_intel_pmu_emulate(msr, val, type, index, is_read);
> else
Can you please remove the two "else" instances above? With directly returning
form the "if" clause they are no longer needed.
With that you can add my:
Reviewed-by: Juergen Gross <jgross@...e.com>
Juergen
Download attachment "OpenPGP_0xB0DE9DD628BF132F.asc" of type "application/pgp-keys" (3684 bytes)
Download attachment "OpenPGP_signature.asc" of type "application/pgp-signature" (496 bytes)
Powered by blists - more mailing lists