Re: [PATCH] time: Rename udelay_test.c to test_udelay.c

2014-08-06 Thread David Riley
On Mon, Aug 4, 2014 at 11:35 AM, John Stultz  wrote:
> Kees requested that this test module be renamed for consistency sake,
> so this patch renames the udelay_test.c file (recently added to
> tip/timers/core for 3.17) to test_udelay.c
>
> Cc: Kees Cook 
> Cc: Greg KH 
> Cc: Stephen Rothwell 
> Cc: Thomas Gleixner 
> Cc: Ingo Molnar 
> Cc: Linux-Next 
> Cc: David Riley 
> Signed-off-by: John Stultz 

Acked-by: David Riley 

> ---
>  kernel/time/Makefile  |   2 +-
>  kernel/time/test_udelay.c | 168 
> ++
>  kernel/time/udelay_test.c | 168 
> --
>  3 files changed, 169 insertions(+), 169 deletions(-)
>  create mode 100644 kernel/time/test_udelay.c
>  delete mode 100644 kernel/time/udelay_test.c
>
> diff --git a/kernel/time/Makefile b/kernel/time/Makefile
> index 7347426..f622cf2 100644
> --- a/kernel/time/Makefile
> +++ b/kernel/time/Makefile
> @@ -13,7 +13,7 @@ obj-$(CONFIG_TICK_ONESHOT)+= 
> tick-oneshot.o
>  obj-$(CONFIG_TICK_ONESHOT) += tick-sched.o
>  obj-$(CONFIG_TIMER_STATS)  += timer_stats.o
>  obj-$(CONFIG_DEBUG_FS) += timekeeping_debug.o
> -obj-$(CONFIG_TEST_UDELAY)  += udelay_test.o
> +obj-$(CONFIG_TEST_UDELAY)  += test_udelay.o
>
>  $(obj)/time.o: $(obj)/timeconst.h
>
> diff --git a/kernel/time/test_udelay.c b/kernel/time/test_udelay.c
> new file mode 100644
> index 000..e622ba3
> --- /dev/null
> +++ b/kernel/time/test_udelay.c
> @@ -0,0 +1,168 @@
> +/*
> + * udelay() test kernel module
> + *
> + * Test is executed by writing and reading to /sys/kernel/debug/udelay_test
> + * Tests are configured by writing: USECS ITERATIONS
> + * Tests are executed by reading from the same file.
> + * Specifying usecs of 0 or negative values will run multiples tests.
> + *
> + * Copyright (C) 2014 Google, Inc.
> + *
> + * This software is licensed under the terms of the GNU General Public
> + * License version 2, as published by the Free Software Foundation, and
> + * may be copied, distributed, and modified under those terms.
> + *
> + * This program is distributed in the hope that it will be useful,
> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> + * GNU General Public License for more details.
> + */
> +
> +#include 
> +#include 
> +#include 
> +#include 
> +#include 
> +
> +#define DEFAULT_ITERATIONS 100
> +
> +#define DEBUGFS_FILENAME "udelay_test"
> +
> +static DEFINE_MUTEX(udelay_test_lock);
> +static struct dentry *udelay_test_debugfs_file;
> +static int udelay_test_usecs;
> +static int udelay_test_iterations = DEFAULT_ITERATIONS;
> +
> +static int udelay_test_single(struct seq_file *s, int usecs, uint32_t iters)
> +{
> +   int min = 0, max = 0, fail_count = 0;
> +   uint64_t sum = 0;
> +   uint64_t avg;
> +   int i;
> +   /* Allow udelay to be up to 0.5% fast */
> +   int allowed_error_ns = usecs * 5;
> +
> +   for (i = 0; i < iters; ++i) {
> +   struct timespec ts1, ts2;
> +   int time_passed;
> +
> +   ktime_get_ts();
> +   udelay(usecs);
> +   ktime_get_ts();
> +   time_passed = timespec_to_ns() - timespec_to_ns();
> +
> +   if (i == 0 || time_passed < min)
> +   min = time_passed;
> +   if (i == 0 || time_passed > max)
> +   max = time_passed;
> +   if ((time_passed + allowed_error_ns) / 1000 < usecs)
> +   ++fail_count;
> +   WARN_ON(time_passed < 0);
> +   sum += time_passed;
> +   }
> +
> +   avg = sum;
> +   do_div(avg, iters);
> +   seq_printf(s, "%d usecs x %d: exp=%d allowed=%d min=%d avg=%lld 
> max=%d",
> +   usecs, iters, usecs * 1000,
> +   (usecs * 1000) - allowed_error_ns, min, avg, max);
> +   if (fail_count)
> +   seq_printf(s, " FAIL=%d", fail_count);
> +   seq_puts(s, "\n");
> +
> +   return 0;
> +}
> +
> +static int udelay_test_show(struct seq_file *s, void *v)
> +{
> +   int usecs;
> +   int iters;
> +   int ret = 0;
> +
> +   mutex_lock(_test_lock);
> +   usecs = udelay_test_usecs;
> +   iters = udelay_test_iterations;
> +   mutex_unlock(_test_lock);
> +
> +   if (usecs > 0 && iters > 0) {
> +   return udelay_test_single(s, usecs, iters);
> +   } else if (usecs == 0) {
> +   struct timespec ts;
> +
> +   ktime_get_ts();
> +   seq_printf(s, "udelay() test (lpj=%ld kt=%ld.%09ld)\n",
> +   loops_per_jiffy, ts.tv_sec, ts.tv_nsec);
> +   seq_puts(s, "usage:\n");
> +   seq_puts(s, "echo USECS [ITERS] > " DEBUGFS_FILENAME "\n");
> +   

Re: [PATCH] time: Rename udelay_test.c to test_udelay.c

2014-08-06 Thread David Riley
On Mon, Aug 4, 2014 at 11:35 AM, John Stultz john.stu...@linaro.org wrote:
 Kees requested that this test module be renamed for consistency sake,
 so this patch renames the udelay_test.c file (recently added to
 tip/timers/core for 3.17) to test_udelay.c

 Cc: Kees Cook keesc...@chromium.org
 Cc: Greg KH g...@kroah.com
 Cc: Stephen Rothwell s...@canb.auug.org.au
 Cc: Thomas Gleixner t...@linutronix.de
 Cc: Ingo Molnar mi...@elte.hu
 Cc: Linux-Next linux-n...@vger.kernel.org
 Cc: David Riley davidri...@chromium.org
 Signed-off-by: John Stultz john.stu...@linaro.org

Acked-by: David Riley davidri...@chromium.org

 ---
  kernel/time/Makefile  |   2 +-
  kernel/time/test_udelay.c | 168 
 ++
  kernel/time/udelay_test.c | 168 
 --
  3 files changed, 169 insertions(+), 169 deletions(-)
  create mode 100644 kernel/time/test_udelay.c
  delete mode 100644 kernel/time/udelay_test.c

 diff --git a/kernel/time/Makefile b/kernel/time/Makefile
 index 7347426..f622cf2 100644
 --- a/kernel/time/Makefile
 +++ b/kernel/time/Makefile
 @@ -13,7 +13,7 @@ obj-$(CONFIG_TICK_ONESHOT)+= 
 tick-oneshot.o
  obj-$(CONFIG_TICK_ONESHOT) += tick-sched.o
  obj-$(CONFIG_TIMER_STATS)  += timer_stats.o
  obj-$(CONFIG_DEBUG_FS) += timekeeping_debug.o
 -obj-$(CONFIG_TEST_UDELAY)  += udelay_test.o
 +obj-$(CONFIG_TEST_UDELAY)  += test_udelay.o

  $(obj)/time.o: $(obj)/timeconst.h

 diff --git a/kernel/time/test_udelay.c b/kernel/time/test_udelay.c
 new file mode 100644
 index 000..e622ba3
 --- /dev/null
 +++ b/kernel/time/test_udelay.c
 @@ -0,0 +1,168 @@
 +/*
 + * udelay() test kernel module
 + *
 + * Test is executed by writing and reading to /sys/kernel/debug/udelay_test
 + * Tests are configured by writing: USECS ITERATIONS
 + * Tests are executed by reading from the same file.
 + * Specifying usecs of 0 or negative values will run multiples tests.
 + *
 + * Copyright (C) 2014 Google, Inc.
 + *
 + * This software is licensed under the terms of the GNU General Public
 + * License version 2, as published by the Free Software Foundation, and
 + * may be copied, distributed, and modified under those terms.
 + *
 + * This program is distributed in the hope that it will be useful,
 + * but WITHOUT ANY WARRANTY; without even the implied warranty of
 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 + * GNU General Public License for more details.
 + */
 +
 +#include linux/debugfs.h
 +#include linux/delay.h
 +#include linux/ktime.h
 +#include linux/module.h
 +#include linux/uaccess.h
 +
 +#define DEFAULT_ITERATIONS 100
 +
 +#define DEBUGFS_FILENAME udelay_test
 +
 +static DEFINE_MUTEX(udelay_test_lock);
 +static struct dentry *udelay_test_debugfs_file;
 +static int udelay_test_usecs;
 +static int udelay_test_iterations = DEFAULT_ITERATIONS;
 +
 +static int udelay_test_single(struct seq_file *s, int usecs, uint32_t iters)
 +{
 +   int min = 0, max = 0, fail_count = 0;
 +   uint64_t sum = 0;
 +   uint64_t avg;
 +   int i;
 +   /* Allow udelay to be up to 0.5% fast */
 +   int allowed_error_ns = usecs * 5;
 +
 +   for (i = 0; i  iters; ++i) {
 +   struct timespec ts1, ts2;
 +   int time_passed;
 +
 +   ktime_get_ts(ts1);
 +   udelay(usecs);
 +   ktime_get_ts(ts2);
 +   time_passed = timespec_to_ns(ts2) - timespec_to_ns(ts1);
 +
 +   if (i == 0 || time_passed  min)
 +   min = time_passed;
 +   if (i == 0 || time_passed  max)
 +   max = time_passed;
 +   if ((time_passed + allowed_error_ns) / 1000  usecs)
 +   ++fail_count;
 +   WARN_ON(time_passed  0);
 +   sum += time_passed;
 +   }
 +
 +   avg = sum;
 +   do_div(avg, iters);
 +   seq_printf(s, %d usecs x %d: exp=%d allowed=%d min=%d avg=%lld 
 max=%d,
 +   usecs, iters, usecs * 1000,
 +   (usecs * 1000) - allowed_error_ns, min, avg, max);
 +   if (fail_count)
 +   seq_printf(s,  FAIL=%d, fail_count);
 +   seq_puts(s, \n);
 +
 +   return 0;
 +}
 +
 +static int udelay_test_show(struct seq_file *s, void *v)
 +{
 +   int usecs;
 +   int iters;
 +   int ret = 0;
 +
 +   mutex_lock(udelay_test_lock);
 +   usecs = udelay_test_usecs;
 +   iters = udelay_test_iterations;
 +   mutex_unlock(udelay_test_lock);
 +
 +   if (usecs  0  iters  0) {
 +   return udelay_test_single(s, usecs, iters);
 +   } else if (usecs == 0) {
 +   struct timespec ts;
 +
 +   ktime_get_ts(ts);
 +   seq_printf(s, udelay() test (lpj=%ld kt=%ld.%09ld)\n,
 +   loops_per_jiffy, ts.tv_sec, ts.tv_nsec);
 + 

Re: [PATCH] time: Rename udelay_test.c to test_udelay.c

2014-08-04 Thread Kees Cook
On Mon, Aug 4, 2014 at 11:35 AM, John Stultz  wrote:
> Kees requested that this test module be renamed for consistency sake,
> so this patch renames the udelay_test.c file (recently added to
> tip/timers/core for 3.17) to test_udelay.c
>
> Cc: Kees Cook 
> Cc: Greg KH 
> Cc: Stephen Rothwell 
> Cc: Thomas Gleixner 
> Cc: Ingo Molnar 
> Cc: Linux-Next 
> Cc: David Riley 
> Signed-off-by: John Stultz 

Thank you! :)

Acked-by: Kees Cook 

-Kees

> ---
>  kernel/time/Makefile  |   2 +-
>  kernel/time/test_udelay.c | 168 
> ++
>  kernel/time/udelay_test.c | 168 
> --
>  3 files changed, 169 insertions(+), 169 deletions(-)
>  create mode 100644 kernel/time/test_udelay.c
>  delete mode 100644 kernel/time/udelay_test.c
>
> diff --git a/kernel/time/Makefile b/kernel/time/Makefile
> index 7347426..f622cf2 100644
> --- a/kernel/time/Makefile
> +++ b/kernel/time/Makefile
> @@ -13,7 +13,7 @@ obj-$(CONFIG_TICK_ONESHOT)+= 
> tick-oneshot.o
>  obj-$(CONFIG_TICK_ONESHOT) += tick-sched.o
>  obj-$(CONFIG_TIMER_STATS)  += timer_stats.o
>  obj-$(CONFIG_DEBUG_FS) += timekeeping_debug.o
> -obj-$(CONFIG_TEST_UDELAY)  += udelay_test.o
> +obj-$(CONFIG_TEST_UDELAY)  += test_udelay.o
>
>  $(obj)/time.o: $(obj)/timeconst.h
>
> diff --git a/kernel/time/test_udelay.c b/kernel/time/test_udelay.c
> new file mode 100644
> index 000..e622ba3
> --- /dev/null
> +++ b/kernel/time/test_udelay.c
> @@ -0,0 +1,168 @@
> +/*
> + * udelay() test kernel module
> + *
> + * Test is executed by writing and reading to /sys/kernel/debug/udelay_test
> + * Tests are configured by writing: USECS ITERATIONS
> + * Tests are executed by reading from the same file.
> + * Specifying usecs of 0 or negative values will run multiples tests.
> + *
> + * Copyright (C) 2014 Google, Inc.
> + *
> + * This software is licensed under the terms of the GNU General Public
> + * License version 2, as published by the Free Software Foundation, and
> + * may be copied, distributed, and modified under those terms.
> + *
> + * This program is distributed in the hope that it will be useful,
> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> + * GNU General Public License for more details.
> + */
> +
> +#include 
> +#include 
> +#include 
> +#include 
> +#include 
> +
> +#define DEFAULT_ITERATIONS 100
> +
> +#define DEBUGFS_FILENAME "udelay_test"
> +
> +static DEFINE_MUTEX(udelay_test_lock);
> +static struct dentry *udelay_test_debugfs_file;
> +static int udelay_test_usecs;
> +static int udelay_test_iterations = DEFAULT_ITERATIONS;
> +
> +static int udelay_test_single(struct seq_file *s, int usecs, uint32_t iters)
> +{
> +   int min = 0, max = 0, fail_count = 0;
> +   uint64_t sum = 0;
> +   uint64_t avg;
> +   int i;
> +   /* Allow udelay to be up to 0.5% fast */
> +   int allowed_error_ns = usecs * 5;
> +
> +   for (i = 0; i < iters; ++i) {
> +   struct timespec ts1, ts2;
> +   int time_passed;
> +
> +   ktime_get_ts();
> +   udelay(usecs);
> +   ktime_get_ts();
> +   time_passed = timespec_to_ns() - timespec_to_ns();
> +
> +   if (i == 0 || time_passed < min)
> +   min = time_passed;
> +   if (i == 0 || time_passed > max)
> +   max = time_passed;
> +   if ((time_passed + allowed_error_ns) / 1000 < usecs)
> +   ++fail_count;
> +   WARN_ON(time_passed < 0);
> +   sum += time_passed;
> +   }
> +
> +   avg = sum;
> +   do_div(avg, iters);
> +   seq_printf(s, "%d usecs x %d: exp=%d allowed=%d min=%d avg=%lld 
> max=%d",
> +   usecs, iters, usecs * 1000,
> +   (usecs * 1000) - allowed_error_ns, min, avg, max);
> +   if (fail_count)
> +   seq_printf(s, " FAIL=%d", fail_count);
> +   seq_puts(s, "\n");
> +
> +   return 0;
> +}
> +
> +static int udelay_test_show(struct seq_file *s, void *v)
> +{
> +   int usecs;
> +   int iters;
> +   int ret = 0;
> +
> +   mutex_lock(_test_lock);
> +   usecs = udelay_test_usecs;
> +   iters = udelay_test_iterations;
> +   mutex_unlock(_test_lock);
> +
> +   if (usecs > 0 && iters > 0) {
> +   return udelay_test_single(s, usecs, iters);
> +   } else if (usecs == 0) {
> +   struct timespec ts;
> +
> +   ktime_get_ts();
> +   seq_printf(s, "udelay() test (lpj=%ld kt=%ld.%09ld)\n",
> +   loops_per_jiffy, ts.tv_sec, ts.tv_nsec);
> +   seq_puts(s, "usage:\n");
> +   seq_puts(s, "echo USECS [ITERS] > " DEBUGFS_FILENAME "\n");
> +  

Re: [PATCH] time: Rename udelay_test.c to test_udelay.c

2014-08-04 Thread Kees Cook
On Mon, Aug 4, 2014 at 11:35 AM, John Stultz john.stu...@linaro.org wrote:
 Kees requested that this test module be renamed for consistency sake,
 so this patch renames the udelay_test.c file (recently added to
 tip/timers/core for 3.17) to test_udelay.c

 Cc: Kees Cook keesc...@chromium.org
 Cc: Greg KH g...@kroah.com
 Cc: Stephen Rothwell s...@canb.auug.org.au
 Cc: Thomas Gleixner t...@linutronix.de
 Cc: Ingo Molnar mi...@elte.hu
 Cc: Linux-Next linux-n...@vger.kernel.org
 Cc: David Riley davidri...@chromium.org
 Signed-off-by: John Stultz john.stu...@linaro.org

Thank you! :)

Acked-by: Kees Cook keesc...@chromium.org

-Kees

 ---
  kernel/time/Makefile  |   2 +-
  kernel/time/test_udelay.c | 168 
 ++
  kernel/time/udelay_test.c | 168 
 --
  3 files changed, 169 insertions(+), 169 deletions(-)
  create mode 100644 kernel/time/test_udelay.c
  delete mode 100644 kernel/time/udelay_test.c

 diff --git a/kernel/time/Makefile b/kernel/time/Makefile
 index 7347426..f622cf2 100644
 --- a/kernel/time/Makefile
 +++ b/kernel/time/Makefile
 @@ -13,7 +13,7 @@ obj-$(CONFIG_TICK_ONESHOT)+= 
 tick-oneshot.o
  obj-$(CONFIG_TICK_ONESHOT) += tick-sched.o
  obj-$(CONFIG_TIMER_STATS)  += timer_stats.o
  obj-$(CONFIG_DEBUG_FS) += timekeeping_debug.o
 -obj-$(CONFIG_TEST_UDELAY)  += udelay_test.o
 +obj-$(CONFIG_TEST_UDELAY)  += test_udelay.o

  $(obj)/time.o: $(obj)/timeconst.h

 diff --git a/kernel/time/test_udelay.c b/kernel/time/test_udelay.c
 new file mode 100644
 index 000..e622ba3
 --- /dev/null
 +++ b/kernel/time/test_udelay.c
 @@ -0,0 +1,168 @@
 +/*
 + * udelay() test kernel module
 + *
 + * Test is executed by writing and reading to /sys/kernel/debug/udelay_test
 + * Tests are configured by writing: USECS ITERATIONS
 + * Tests are executed by reading from the same file.
 + * Specifying usecs of 0 or negative values will run multiples tests.
 + *
 + * Copyright (C) 2014 Google, Inc.
 + *
 + * This software is licensed under the terms of the GNU General Public
 + * License version 2, as published by the Free Software Foundation, and
 + * may be copied, distributed, and modified under those terms.
 + *
 + * This program is distributed in the hope that it will be useful,
 + * but WITHOUT ANY WARRANTY; without even the implied warranty of
 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 + * GNU General Public License for more details.
 + */
 +
 +#include linux/debugfs.h
 +#include linux/delay.h
 +#include linux/ktime.h
 +#include linux/module.h
 +#include linux/uaccess.h
 +
 +#define DEFAULT_ITERATIONS 100
 +
 +#define DEBUGFS_FILENAME udelay_test
 +
 +static DEFINE_MUTEX(udelay_test_lock);
 +static struct dentry *udelay_test_debugfs_file;
 +static int udelay_test_usecs;
 +static int udelay_test_iterations = DEFAULT_ITERATIONS;
 +
 +static int udelay_test_single(struct seq_file *s, int usecs, uint32_t iters)
 +{
 +   int min = 0, max = 0, fail_count = 0;
 +   uint64_t sum = 0;
 +   uint64_t avg;
 +   int i;
 +   /* Allow udelay to be up to 0.5% fast */
 +   int allowed_error_ns = usecs * 5;
 +
 +   for (i = 0; i  iters; ++i) {
 +   struct timespec ts1, ts2;
 +   int time_passed;
 +
 +   ktime_get_ts(ts1);
 +   udelay(usecs);
 +   ktime_get_ts(ts2);
 +   time_passed = timespec_to_ns(ts2) - timespec_to_ns(ts1);
 +
 +   if (i == 0 || time_passed  min)
 +   min = time_passed;
 +   if (i == 0 || time_passed  max)
 +   max = time_passed;
 +   if ((time_passed + allowed_error_ns) / 1000  usecs)
 +   ++fail_count;
 +   WARN_ON(time_passed  0);
 +   sum += time_passed;
 +   }
 +
 +   avg = sum;
 +   do_div(avg, iters);
 +   seq_printf(s, %d usecs x %d: exp=%d allowed=%d min=%d avg=%lld 
 max=%d,
 +   usecs, iters, usecs * 1000,
 +   (usecs * 1000) - allowed_error_ns, min, avg, max);
 +   if (fail_count)
 +   seq_printf(s,  FAIL=%d, fail_count);
 +   seq_puts(s, \n);
 +
 +   return 0;
 +}
 +
 +static int udelay_test_show(struct seq_file *s, void *v)
 +{
 +   int usecs;
 +   int iters;
 +   int ret = 0;
 +
 +   mutex_lock(udelay_test_lock);
 +   usecs = udelay_test_usecs;
 +   iters = udelay_test_iterations;
 +   mutex_unlock(udelay_test_lock);
 +
 +   if (usecs  0  iters  0) {
 +   return udelay_test_single(s, usecs, iters);
 +   } else if (usecs == 0) {
 +   struct timespec ts;
 +
 +   ktime_get_ts(ts);
 +   seq_printf(s, udelay() test (lpj=%ld kt=%ld.%09ld)\n,
 +   loops_per_jiffy,