All of lore.kernel.org
 help / color / mirror / Atom feed
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 v2 1/2] lib/s390x: time: add wrapper for stckf
Date: Thu,  1 Sep 2022 17:09:55 +0200	[thread overview]
Message-ID: <20220901150956.1075828-2-nrb@linux.ibm.com> (raw)
In-Reply-To: <20220901150956.1075828-1-nrb@linux.ibm.com>

Upcoming changes will do performance measurements of instructions. Since
stck is designed to return unique values even on concurrent calls, it is
unsuited for performance measurements. stckf should be used in this
case.

While touching that code, also add a missing cc clobber in
get_clock_us() and avoid the memory clobber by moving the clock value to
the output operands.

Hence, add a nice wrapper for stckf to the time library.

Signed-off-by: Nico Boehr <nrb@linux.ibm.com>
---
 lib/s390x/asm/time.h | 11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)

diff --git a/lib/s390x/asm/time.h b/lib/s390x/asm/time.h
index 7652a151e87a..8d2327a40541 100644
--- a/lib/s390x/asm/time.h
+++ b/lib/s390x/asm/time.h
@@ -14,11 +14,20 @@
 #define STCK_SHIFT_US	(63 - 51)
 #define STCK_MAX	((1UL << 52) - 1)
 
+static inline uint64_t get_clock_fast(void)
+{
+	uint64_t clk;
+
+	asm volatile(" stckf %0 " : "=Q"(clk) : : "cc");
+
+	return clk;
+}
+
 static inline uint64_t get_clock_us(void)
 {
 	uint64_t clk;
 
-	asm volatile(" stck %0 " : : "Q"(clk) : "memory");
+	asm volatile(" stck %0 " : "=Q"(clk) : : "cc");
 
 	return clk >> STCK_SHIFT_US;
 }
-- 
2.36.1


  reply	other threads:[~2022-09-01 15:10 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-09-01 15:09 [kvm-unit-tests PATCH v2 0/2] s390x: Add exit time test Nico Boehr
2022-09-01 15:09 ` Nico Boehr [this message]
2022-10-06 11:16   ` [kvm-unit-tests PATCH v2 1/2] lib/s390x: time: add wrapper for stckf Claudio Imbrenda
2022-09-01 15:09 ` [kvm-unit-tests PATCH v2 2/2] s390x: add exittime tests Nico Boehr
2022-10-06 11:15   ` Claudio Imbrenda
2022-10-06 11:18 ` [kvm-unit-tests PATCH v2 0/2] s390x: Add exit time test Claudio Imbrenda
2022-10-11 11:26   ` Nico Boehr

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=20220901150956.1075828-2-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 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.