All of lore.kernel.org
 help / color / mirror / Atom feed
From: Roger Pau Monne <roger.pau@citrix.com>
To: <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
	Roger Pau Monne <roger.pau@citrix.com>,
	Ian Jackson <iwj@xenproject.org>, Wei Liu <wl@xen.org>
Subject: [PATCH v4 04/10] libs/guest: allow fetching a specific MSR entry from a cpu policy
Date: Fri,  7 May 2021 13:04:16 +0200	[thread overview]
Message-ID: <20210507110422.24608-5-roger.pau@citrix.com> (raw)
In-Reply-To: <20210507110422.24608-1-roger.pau@citrix.com>

Introduce an interface that returns a specific MSR entry from a cpu
policy in xen_msr_entry_t format.

This is useful to callers can peek data from the opaque
xc_cpu_policy_t type.

No caller of the interface introduced on this patch.

Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
---
Changes since v3:
 - Use x86_msr_get_entry.

Changes since v1:
 - Introduce a helper to perform a binary search of the MSR entries
   array.
---
 tools/include/xenguest.h        |  2 ++
 tools/libs/guest/xg_cpuid_x86.c | 20 ++++++++++++++++++++
 2 files changed, 22 insertions(+)

diff --git a/tools/include/xenguest.h b/tools/include/xenguest.h
index 7001e04e88d..8e8461b0660 100644
--- a/tools/include/xenguest.h
+++ b/tools/include/xenguest.h
@@ -747,6 +747,8 @@ int xc_cpu_policy_update_msrs(xc_interface *xch, xc_cpu_policy_t *policy,
 int xc_cpu_policy_get_cpuid(xc_interface *xch, const xc_cpu_policy_t *policy,
                             uint32_t leaf, uint32_t subleaf,
                             xen_cpuid_leaf_t *out);
+int xc_cpu_policy_get_msr(xc_interface *xch, const xc_cpu_policy_t *policy,
+                          uint32_t msr, xen_msr_entry_t *out);
 
 /* Compatibility calculations. */
 bool xc_cpu_policy_is_compatible(xc_interface *xch, xc_cpu_policy_t *host,
diff --git a/tools/libs/guest/xg_cpuid_x86.c b/tools/libs/guest/xg_cpuid_x86.c
index 460512d063b..cdfc79a86e7 100644
--- a/tools/libs/guest/xg_cpuid_x86.c
+++ b/tools/libs/guest/xg_cpuid_x86.c
@@ -883,6 +883,26 @@ int xc_cpu_policy_get_cpuid(xc_interface *xch, const xc_cpu_policy_t *policy,
     return 0;
 }
 
+int xc_cpu_policy_get_msr(xc_interface *xch, const xc_cpu_policy_t *policy,
+                          uint32_t msr, xen_msr_entry_t *out)
+{
+    const uint64_t *val;
+
+    *out = (xen_msr_entry_t){};
+
+    val = x86_msr_get_entry(&policy->msr, msr);
+    if ( !val )
+    {
+        errno = ENOENT;
+        return -1;
+    }
+
+    out->idx = msr;
+    out->val = *val;
+
+    return 0;
+}
+
 bool xc_cpu_policy_is_compatible(xc_interface *xch, xc_cpu_policy_t *host,
                                  xc_cpu_policy_t *guest)
 {
-- 
2.31.1



  parent reply	other threads:[~2021-05-07 11:07 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-05-07 11:04 [PATCH v4 00/10] libs/guest: new CPUID/MSR interface Roger Pau Monne
2021-05-07 11:04 ` [PATCH v4 01/10] libx86: introduce helper to fetch cpuid leaf Roger Pau Monne
2021-05-07 11:04 ` [PATCH v4 02/10] libs/guest: allow fetching a specific CPUID leaf from a cpu policy Roger Pau Monne
2021-05-07 11:04 ` [PATCH v4 03/10] libx86: introduce helper to fetch msr entry Roger Pau Monne
2021-05-17 15:43   ` Jan Beulich
2021-05-18 10:50     ` Roger Pau Monné
2021-05-18 11:29       ` Jan Beulich
2021-05-07 11:04 ` Roger Pau Monne [this message]
2021-05-07 11:04 ` [PATCH v4 05/10] libs/guest: make a cpu policy compatible with older Xen versions Roger Pau Monne
2021-05-07 11:04 ` [PATCH v4 06/10] libs/guest: introduce helper set cpu topology in cpu policy Roger Pau Monne
2021-05-07 11:04 ` [PATCH v4 07/10] libs/guest: rework xc_cpuid_xend_policy Roger Pau Monne
2021-05-07 11:04 ` [PATCH v4 08/10] libs/guest: apply a featureset into a cpu policy Roger Pau Monne
2021-05-07 11:04 ` [PATCH v4 09/10] libs/{light,guest}: implement xc_cpuid_apply_policy in libxl Roger Pau Monne
2021-05-14  9:36   ` Roger Pau Monné
2021-05-07 11:04 ` [PATCH v4 10/10] libs/guest: (re)move xc_cpu_policy_apply_cpuid Roger Pau Monne

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=20210507110422.24608-5-roger.pau@citrix.com \
    --to=roger.pau@citrix.com \
    --cc=andrew.cooper3@citrix.com \
    --cc=iwj@xenproject.org \
    --cc=wl@xen.org \
    --cc=xen-devel@lists.xenproject.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.