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
next 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.