From: ehrhardt@linux.vnet.ibm.com
To: fio@vger.kernel.org
Cc: Christian Ehrhardt <ehrhardt@linux.vnet.ibm.com>
Subject: [patch 1/1] [PATCH] fio: fix s390 timing for older machines/binutils
Date: Thu, 10 Apr 2014 15:09:47 +0200 [thread overview]
Message-ID: <20140410131000.557506615@linux.vnet.ibm.com> (raw)
In-Reply-To: 20140410130946.570253556@linux.vnet.ibm.com
[-- Attachment #1: fix-s390stck-for-older-systems.patch --]
[-- Type: text/plain, Size: 2838 bytes --]
From: Christian Ehrhardt <ehrhardt@linux.vnet.ibm.com>
Older gcc/binutils or one with very low default march will refuse to use stckf.
On top of that machines older than a z196 don not even have the store clock
fast facility.
To fix all of those issues, check for the facilities in configure step and make
the usage of stckf and a matching march dependent to it.
Signed-off-by: Christian Ehrhardt <ehrhardt@linux.vnet.ibm.com>
---
[diffstat]
arch/arch-s390.h | 12 ++++++++----
configure | 34 ++++++++++++++++++++++++++++++++++
2 files changed, 42 insertions(+), 4 deletions(-)
[diff]
--- a/arch/arch-s390.h
+++ b/arch/arch-s390.h
@@ -22,15 +22,19 @@
#define read_barrier() asm volatile("bcr 15,0" : : : "memory")
#define write_barrier() asm volatile("bcr 15,0" : : : "memory")
-/*
- * Fio needs monotonic (never lower), but not strict monotonic (never the same)
- * so store clock fast is enough
- */
static inline unsigned long long get_cpu_clock(void)
{
unsigned long long clk;
+#ifdef CONFIG_S390_Z196_FACILITIES
+ /*
+ * Fio needs monotonic (never lower), but not strict monotonic (never
+ * the same) so store clock fast is enough.
+ */
__asm__ __volatile__("stckf %0" : "=Q" (clk) : : "cc");
+#else
+ __asm__ __volatile__("stck %0" : "=Q" (clk) : : "cc");
+#endif
return clk>>12;
}
--- a/configure
+++ b/configure
@@ -1181,6 +1181,36 @@ if compile_prog "" "" "setvbuf"; then
fi
echo "setvbuf $setvbuf"
+##########################################
+# Check if we support stckf on s390
+s390_z196_facilities="no"
+cat > $TMPC << EOF
+#define STFLE_BITS_Z196 45 /* various z196 facilities ... */
+int main(int argc, char **argv)
+{
+ /* We want just 1 double word to be returned. */
+ register unsigned long reg0 asm("0") = 0;
+ unsigned long stfle_bits;
+ asm volatile(".machine push" "\n\t"
+ ".machine \"z9-109\"" "\n\t"
+ "stfle %0" "\n\t"
+ ".machine pop" "\n"
+ : "=QS" (stfle_bits), "+d" (reg0)
+ : : "cc");
+
+ if ((stfle_bits & (1UL << (63 - STFLE_BITS_Z196))) != 0)
+ return 0;
+ else
+ return -1;
+}
+EOF
+if compile_prog "" "" "s390_z196_facilities"; then
+ $TMPE
+ if [[ $? -eq 0 ]]; then
+ s390_z196_facilities="yes"
+ fi
+fi
+echo "s390_z196_facilities $s390_z196_facilities"
#############################################################################
if test "$wordsize" = "64" ; then
@@ -1311,6 +1341,10 @@ fi
if test "$setvbuf" = "yes" ; then
output_sym "CONFIG_SETVBUF"
fi
+if test "$s390_z196_facilities" = "yes" ; then
+ output_sym "CONFIG_S390_Z196_FACILITIES"
+ CFLAGS="$CFLAGS -march=z9-109"
+fi
echo "LIBS+=$LIBS" >> $config_host_mak
echo "CFLAGS+=$CFLAGS" >> $config_host_mak
next prev parent reply other threads:[~2014-04-10 13:10 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-04-10 13:09 [patch 0/1] Further timing and nop fixes for the s390 architecture ehrhardt
2014-04-10 13:09 ` ehrhardt [this message]
2014-04-10 14:04 ` [patch 1/1] [PATCH] fio: fix s390 timing for older machines/binutils Jens Axboe
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=20140410131000.557506615@linux.vnet.ibm.com \
--to=ehrhardt@linux.vnet.ibm.com \
--cc=fio@vger.kernel.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.