All of lore.kernel.org
 help / color / mirror / Atom feed
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


  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.