All of lore.kernel.org
 help / color / mirror / Atom feed
From: Christian Ehrhardt <ehrhardt@linux.vnet.ibm.com>
To: "fio@vger.kernel.org" <fio@vger.kernel.org>,
	Christian Ehrhardt <ehrhardt@linux.vnet.ibm.com>
Subject: [PATCH] fio: fix cycles_start build issue
Date: Fri, 27 Feb 2015 09:31:40 +0100	[thread overview]
Message-ID: <54F02B6C.8080506@linux.vnet.ibm.com> (raw)

Hi,
a recent checkout of fio-git revealed a build issue on s390.
For whatever reason my git send-email setup is broken so I paste it in 
the mail and hope it doesn't get mangled, let me know if that fails.

---

Subject: [PATCH] fio: fix cycles_start build issue

From: Christian Ehrhardt <ehrhardt@linux.vnet.ibm.com>

There is an issue introduced with "commit 73df3e07 gettime: offset CPU cycle
counter by initial value". For architectures which define
ARCH_CPU_CLOCK_CYCLES_PER_USEC (currently only s390) this causes a build 
error

gettime.c:174:11: error: ‘cycles_start’ undeclared (first use in this 
function)
    if (t < cycles_start && !cycles_wrap)

To make sure variables and code are only compiled in the same cases I 
added a
clock definition called ARCH_CPU_CLOCK_WRAPS. We could merge
ARCH_CPU_CLOCK_WRAPS and the existing ARCH_CPU_CLOCK_CYCLES_PER_USEC 
into one
if you prefer, so far nobody else uses it.

To avoid cluttering all architecture headers I enabled it by default in
arch-generic.h, so any arch not needing the wrap handling can undef
ARCH_CPU_CLOCK_WRAPS later in their headers.

Signed-off-by: Christian Ehrhardt <ehrhardt@linux.vnet.ibm.com>
---

[diffstat]
  arch/arch-generic.h |    1 +
  arch/arch-s390.h    |    1 +
  gettime.c           |    7 +++++++
  3 files changed, 9 insertions(+)

[diff]
diff --git a/arch/arch-generic.h b/arch/arch-generic.h
index a0b71f8..825a829 100644
--- a/arch/arch-generic.h
+++ b/arch/arch-generic.h
@@ -2,6 +2,7 @@
  #define ARCH_GENERIC_H

  #define FIO_ARCH	(arch_generic)
+#define ARCH_CPU_CLOCK_WRAPS

  #define nop			do { } while (0)
  #define read_barrier()		__asm__ __volatile__("": : :"memory")
diff --git a/arch/arch-s390.h b/arch/arch-s390.h
index 169282b..0c93424 100644
--- a/arch/arch-s390.h
+++ b/arch/arch-s390.h
@@ -39,6 +39,7 @@ static inline unsigned long long get_cpu_clock(void)
  }

  #define ARCH_CPU_CLOCK_CYCLES_PER_USEC 1
+#undef ARCH_CPU_CLOCK_WRAPS
  #define ARCH_HAVE_CPU_CLOCK

  #define ARCH_HAVE_INIT
diff --git a/gettime.c b/gettime.c
index 6863ce3..29884a1 100644
--- a/gettime.c
+++ b/gettime.c
@@ -17,6 +17,8 @@
  static unsigned long cycles_per_usec;
  static unsigned long inv_cycles_per_usec;
  static uint64_t max_cycles_for_mult;
+#endif
+#ifdef ARCH_CPU_CLOCK_WRAPS
  static unsigned long long cycles_start, cycles_wrap;
  #endif
  int tsc_reliable = 0;
@@ -171,6 +173,7 @@ static void __fio_gettime(struct timeval *tp)
  #endif

  		t = get_cpu_clock();
+#ifdef ARCH_CPU_CLOCK_WRAPS
  		if (t < cycles_start && !cycles_wrap)
  			cycles_wrap = 1;
  		else if (cycles_wrap && t >= cycles_start && !tv->warned) {
@@ -179,6 +182,8 @@ static void __fio_gettime(struct timeval *tp)
  		}

  		t -= cycles_start;
+#endif
+
  		tv->last_cycles = t;
  		tv->last_tv_valid = 1;
  #ifdef ARCH_CPU_CLOCK_CYCLES_PER_USEC
@@ -311,8 +316,10 @@ static int calibrate_cpu_clock(void)
  	inv_cycles_per_usec = 16777216UL / cycles_per_usec;
  	max_cycles_for_mult = ~0ULL / inv_cycles_per_usec;
  	dprint(FD_TIME, "inv_cycles_per_usec=%lu\n", inv_cycles_per_usec);
+#ifdef ARCH_CPU_CLOCK_WRAPS
  	cycles_start = get_cpu_clock();
  	dprint(FD_TIME, "cycles_start=%llu\n", cycles_start);
+#endif
  	return 0;
  }
  #else


             reply	other threads:[~2015-02-27  8:31 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-02-27  8:31 Christian Ehrhardt [this message]
2015-02-27 15:20 ` [PATCH] fio: fix cycles_start build issue Jens Axboe
2015-03-02  8:22   ` Christian Ehrhardt

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=54F02B6C.8080506@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.