From: Vitaly Kuznetsov <vkuznets@redhat.com>
To: kvm@vger.kernel.org, Paolo Bonzini <pbonzini@redhat.com>
Subject: [PATCH kvm-unit-tests v2 2/4] x86: hyperv_stimer: define union hv_stimer_config
Date: Wed, 24 Feb 2021 17:35:45 +0100 [thread overview]
Message-ID: <20210224163547.197100-3-vkuznets@redhat.com> (raw)
In-Reply-To: <20210224163547.197100-1-vkuznets@redhat.com>
As a preparation to enabling direct synthetic timers properly define
hv_stimer_config.
Signed-off-by: Vitaly Kuznetsov <vkuznets@redhat.com>
---
x86/hyperv.h | 22 +++++++++++++++++-----
x86/hyperv_stimer.c | 21 ++++++++-------------
2 files changed, 25 insertions(+), 18 deletions(-)
diff --git a/x86/hyperv.h b/x86/hyperv.h
index e135221fa28a..9a83da483467 100644
--- a/x86/hyperv.h
+++ b/x86/hyperv.h
@@ -60,11 +60,23 @@
#define HV_SYNIC_SINT_VECTOR_MASK (0xFF)
#define HV_SYNIC_SINT_COUNT 16
-#define HV_STIMER_ENABLE (1ULL << 0)
-#define HV_STIMER_PERIODIC (1ULL << 1)
-#define HV_STIMER_LAZY (1ULL << 2)
-#define HV_STIMER_AUTOENABLE (1ULL << 3)
-#define HV_STIMER_SINT(config) (__u8)(((config) >> 16) & 0x0F)
+/*
+ * Synthetic timer configuration.
+ */
+union hv_stimer_config {
+ u64 as_uint64;
+ struct {
+ u64 enable:1;
+ u64 periodic:1;
+ u64 lazy:1;
+ u64 auto_enable:1;
+ u64 apic_vector:8;
+ u64 direct_mode:1;
+ u64 reserved_z0:3;
+ u64 sintx:4;
+ u64 reserved_z1:44;
+ };
+};
#define HV_SYNIC_STIMER_COUNT (4)
diff --git a/x86/hyperv_stimer.c b/x86/hyperv_stimer.c
index fa00dac4d66a..1e4eff270406 100644
--- a/x86/hyperv_stimer.c
+++ b/x86/hyperv_stimer.c
@@ -163,20 +163,15 @@ static void stimer_start(struct stimer *timer,
bool auto_enable, bool periodic,
u64 tick_100ns)
{
- u64 config, count;
+ u64 count;
+ union hv_stimer_config config = {.as_uint64 = 0};
atomic_set(&timer->fire_count, 0);
- config = 0;
- if (periodic) {
- config |= HV_STIMER_PERIODIC;
- }
-
- config |= ((u8)(timer->sint & 0xFF)) << 16;
- config |= HV_STIMER_ENABLE;
- if (auto_enable) {
- config |= HV_STIMER_AUTOENABLE;
- }
+ config.periodic = periodic;
+ config.enable = 1;
+ config.auto_enable = auto_enable;
+ config.sintx = timer->sint;
if (periodic) {
count = tick_100ns;
@@ -186,9 +181,9 @@ static void stimer_start(struct stimer *timer,
if (!auto_enable) {
wrmsr(HV_X64_MSR_STIMER0_COUNT + timer->index*2, count);
- wrmsr(HV_X64_MSR_STIMER0_CONFIG + timer->index*2, config);
+ wrmsr(HV_X64_MSR_STIMER0_CONFIG + timer->index*2, config.as_uint64);
} else {
- wrmsr(HV_X64_MSR_STIMER0_CONFIG + timer->index*2, config);
+ wrmsr(HV_X64_MSR_STIMER0_CONFIG + timer->index*2, config.as_uint64);
wrmsr(HV_X64_MSR_STIMER0_COUNT + timer->index*2, count);
}
}
--
2.29.2
next prev parent reply other threads:[~2021-02-24 16:39 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-02-24 16:35 [PATCH kvm-unit-tests v2 0/4] x86: hyperv_stimer: test direct mode Vitaly Kuznetsov
2021-02-24 16:35 ` [PATCH kvm-unit-tests v2 1/4] x86: hyperv_stimer: keep SINT number parameter in 'struct stimer' Vitaly Kuznetsov
2021-02-24 16:35 ` Vitaly Kuznetsov [this message]
2021-02-24 16:35 ` [PATCH kvm-unit-tests v2 3/4] x86: hyperv_stimer: don't require hyperv-testdev Vitaly Kuznetsov
2021-02-24 16:35 ` [PATCH kvm-unit-tests v2 4/4] x86: hyperv_stimer: add direct mode tests Vitaly Kuznetsov
2021-04-19 15:41 ` [PATCH kvm-unit-tests v2 0/4] x86: hyperv_stimer: test direct mode Vitaly Kuznetsov
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=20210224163547.197100-3-vkuznets@redhat.com \
--to=vkuznets@redhat.com \
--cc=kvm@vger.kernel.org \
--cc=pbonzini@redhat.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).