From: Nico Boehr <nrb@linux.ibm.com>
To: kvm@vger.kernel.org
Cc: frankja@linux.ibm.com, imbrenda@linux.ibm.com, thuth@redhat.com
Subject: [kvm-unit-tests PATCH v5 2/4] lib/s390x: add CPU timer related defines and functions
Date: Tue, 23 Aug 2022 10:45:23 +0200 [thread overview]
Message-ID: <20220823084525.52365-3-nrb@linux.ibm.com> (raw)
In-Reply-To: <20220823084525.52365-1-nrb@linux.ibm.com>
Upcoming changes will make use of the CPU timer, so add some defines and
functions to work with the CPU timer.
Since shifts for both CPU timer and TOD clock are the same, introduce a
new define S390_CLOCK_SHIFT_US. The respective shifts for CPU timer and
TOD clock reference it, so the semantic difference between the two
defines is kept.
Also add a define for the CPU timer subclass mask.
Signed-off-by: Nico Boehr <nrb@linux.ibm.com>
---
lib/s390x/asm/arch_def.h | 1 +
lib/s390x/asm/time.h | 17 ++++++++++++++++-
2 files changed, 17 insertions(+), 1 deletion(-)
diff --git a/lib/s390x/asm/arch_def.h b/lib/s390x/asm/arch_def.h
index e7ae454b3a33..b92291e8ae3f 100644
--- a/lib/s390x/asm/arch_def.h
+++ b/lib/s390x/asm/arch_def.h
@@ -78,6 +78,7 @@ struct cpu {
#define CTL0_EMERGENCY_SIGNAL (63 - 49)
#define CTL0_EXTERNAL_CALL (63 - 50)
#define CTL0_CLOCK_COMPARATOR (63 - 52)
+#define CTL0_CPU_TIMER (63 - 53)
#define CTL0_SERVICE_SIGNAL (63 - 54)
#define CR0_EXTM_MASK 0x0000000000006200UL /* Combined external masks */
diff --git a/lib/s390x/asm/time.h b/lib/s390x/asm/time.h
index 7652a151e87a..d8d91d68a667 100644
--- a/lib/s390x/asm/time.h
+++ b/lib/s390x/asm/time.h
@@ -11,9 +11,13 @@
#ifndef _ASMS390X_TIME_H_
#define _ASMS390X_TIME_H_
-#define STCK_SHIFT_US (63 - 51)
+#define S390_CLOCK_SHIFT_US (63 - 51)
+
+#define STCK_SHIFT_US S390_CLOCK_SHIFT_US
#define STCK_MAX ((1UL << 52) - 1)
+#define CPU_TIMER_SHIFT_US S390_CLOCK_SHIFT_US
+
static inline uint64_t get_clock_us(void)
{
uint64_t clk;
@@ -45,4 +49,15 @@ static inline void mdelay(unsigned long ms)
udelay(ms * 1000);
}
+static inline void cpu_timer_set_ms(int64_t timeout_ms)
+{
+ int64_t timer_value = (timeout_ms * 1000) << CPU_TIMER_SHIFT_US;
+
+ asm volatile (
+ "spt %[timer_value]\n"
+ :
+ : [timer_value] "Q" (timer_value)
+ );
+}
+
#endif
--
2.36.1
next prev parent reply other threads:[~2022-08-23 11:33 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-08-23 8:45 [kvm-unit-tests PATCH v5 0/4] Add panic test support Nico Boehr
2022-08-23 8:45 ` [kvm-unit-tests PATCH v5 1/4] runtime: add support for panic tests Nico Boehr
2022-08-23 9:39 ` Janosch Frank
2022-08-23 8:45 ` Nico Boehr [this message]
2022-08-23 9:32 ` [kvm-unit-tests PATCH v5 2/4] lib/s390x: add CPU timer related defines and functions Janosch Frank
2022-08-23 8:45 ` [kvm-unit-tests PATCH v5 3/4] s390x: add extint loop test Nico Boehr
2022-08-23 9:29 ` Janosch Frank
2022-08-23 8:45 ` [kvm-unit-tests PATCH v5 4/4] s390x: add pgm spec interrupt " Nico Boehr
2022-08-23 9:23 ` Janosch Frank
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=20220823084525.52365-3-nrb@linux.ibm.com \
--to=nrb@linux.ibm.com \
--cc=frankja@linux.ibm.com \
--cc=imbrenda@linux.ibm.com \
--cc=kvm@vger.kernel.org \
--cc=thuth@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