* [PATCH 0/3] ARM: context tracking support prerequisites
@ 2013-03-20 23:34 Kevin Hilman
2013-03-20 23:34 ` [PATCH 1/3] cputime_nsecs: use math64.h for nsec resolution conversion helpers Kevin Hilman
` (2 more replies)
0 siblings, 3 replies; 10+ messages in thread
From: Kevin Hilman @ 2013-03-20 23:34 UTC (permalink / raw)
To: linux-arm-kernel
This series is a set of prerequistes for getting the new context
tracking subsystem, and adaptive tickless support working on ARM.
Kevin Hilman (3):
cputime_nsecs: use math64.h for nsec resolution conversion helpers
init/Kconfig: virt CPU accounting: drop 64-bit requirment
ARM: Kconfig: allow virt CPU accounting
arch/arm/Kconfig | 1 +
include/asm-generic/cputime_nsecs.h | 28 +++++++++++++++++++---------
init/Kconfig | 2 +-
3 files changed, 21 insertions(+), 10 deletions(-)
--
1.8.2
^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH 1/3] cputime_nsecs: use math64.h for nsec resolution conversion helpers
2013-03-20 23:34 [PATCH 0/3] ARM: context tracking support prerequisites Kevin Hilman
@ 2013-03-20 23:34 ` Kevin Hilman
2013-04-11 17:10 ` Frederic Weisbecker
2013-03-20 23:34 ` [PATCH 2/3] init/Kconfig: virt CPU accounting: drop 64-bit requirment Kevin Hilman
2013-03-20 23:34 ` [PATCH 3/3] ARM: Kconfig: allow virt CPU accounting Kevin Hilman
2 siblings, 1 reply; 10+ messages in thread
From: Kevin Hilman @ 2013-03-20 23:34 UTC (permalink / raw)
To: linux-arm-kernel
For the nsec resolution conversions to be useable on non 64-bit
architectures, the helpers in <linux/math64.h> need to be used so the
right arch-specific 64-bit math helpers can be used (e.g. do_div())
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Signed-off-by: Kevin Hilman <khilman@linaro.org>
---
include/asm-generic/cputime_nsecs.h | 28 +++++++++++++++++++---------
1 file changed, 19 insertions(+), 9 deletions(-)
diff --git a/include/asm-generic/cputime_nsecs.h b/include/asm-generic/cputime_nsecs.h
index a8ece9a..2c9e62c 100644
--- a/include/asm-generic/cputime_nsecs.h
+++ b/include/asm-generic/cputime_nsecs.h
@@ -16,21 +16,27 @@
#ifndef _ASM_GENERIC_CPUTIME_NSECS_H
#define _ASM_GENERIC_CPUTIME_NSECS_H
+#include <linux/math64.h>
+
typedef u64 __nocast cputime_t;
typedef u64 __nocast cputime64_t;
#define cputime_one_jiffy jiffies_to_cputime(1)
+#define cputime_div(__ct, divisor) div_u64((__force u64)__ct, divisor)
+#define cputime_div_rem(__ct, divisor, remainder) \
+ div_u64_rem((__force u64)__ct, divisor, remainder);
+
/*
* Convert cputime <-> jiffies (HZ)
*/
#define cputime_to_jiffies(__ct) \
- ((__force u64)(__ct) / (NSEC_PER_SEC / HZ))
+ cputime_div(__ct, NSEC_PER_SEC / HZ)
#define cputime_to_scaled(__ct) (__ct)
#define jiffies_to_cputime(__jif) \
(__force cputime_t)((__jif) * (NSEC_PER_SEC / HZ))
#define cputime64_to_jiffies64(__ct) \
- ((__force u64)(__ct) / (NSEC_PER_SEC / HZ))
+ cputime_div(__ct, NSEC_PER_SEC / HZ)
#define jiffies64_to_cputime64(__jif) \
(__force cputime64_t)((__jif) * (NSEC_PER_SEC / HZ))
@@ -45,7 +51,7 @@ typedef u64 __nocast cputime64_t;
* Convert cputime <-> microseconds
*/
#define cputime_to_usecs(__ct) \
- ((__force u64)(__ct) / NSEC_PER_USEC)
+ cputime_div(__ct, NSEC_PER_USEC)
#define usecs_to_cputime(__usecs) \
(__force cputime_t)((__usecs) * NSEC_PER_USEC)
#define usecs_to_cputime64(__usecs) \
@@ -55,7 +61,7 @@ typedef u64 __nocast cputime64_t;
* Convert cputime <-> seconds
*/
#define cputime_to_secs(__ct) \
- ((__force u64)(__ct) / NSEC_PER_SEC)
+ cputime_div(__ct, NSEC_PER_SEC)
#define secs_to_cputime(__secs) \
(__force cputime_t)((__secs) * NSEC_PER_SEC)
@@ -69,8 +75,10 @@ static inline cputime_t timespec_to_cputime(const struct timespec *val)
}
static inline void cputime_to_timespec(const cputime_t ct, struct timespec *val)
{
- val->tv_sec = (__force u64) ct / NSEC_PER_SEC;
- val->tv_nsec = (__force u64) ct % NSEC_PER_SEC;
+ u32 rem;
+
+ val->tv_sec = cputime_div_rem(ct, NSEC_PER_SEC, &rem);
+ val->tv_nsec = rem;
}
/*
@@ -83,15 +91,17 @@ static inline cputime_t timeval_to_cputime(const struct timeval *val)
}
static inline void cputime_to_timeval(const cputime_t ct, struct timeval *val)
{
- val->tv_sec = (__force u64) ct / NSEC_PER_SEC;
- val->tv_usec = ((__force u64) ct % NSEC_PER_SEC) / NSEC_PER_USEC;
+ u32 rem;
+
+ val->tv_sec = cputime_div_rem(ct, NSEC_PER_SEC, &rem);
+ val->tv_usec = rem / NSEC_PER_USEC;
}
/*
* Convert cputime <-> clock (USER_HZ)
*/
#define cputime_to_clock_t(__ct) \
- ((__force u64)(__ct) / (NSEC_PER_SEC / USER_HZ))
+ cputime_div(__ct, (NSEC_PER_SEC / USER_HZ))
#define clock_t_to_cputime(__x) \
(__force cputime_t)((__x) * (NSEC_PER_SEC / USER_HZ))
--
1.8.2
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH 2/3] init/Kconfig: virt CPU accounting: drop 64-bit requirment
2013-03-20 23:34 [PATCH 0/3] ARM: context tracking support prerequisites Kevin Hilman
2013-03-20 23:34 ` [PATCH 1/3] cputime_nsecs: use math64.h for nsec resolution conversion helpers Kevin Hilman
@ 2013-03-20 23:34 ` Kevin Hilman
2013-03-20 23:34 ` [PATCH 3/3] ARM: Kconfig: allow virt CPU accounting Kevin Hilman
2 siblings, 0 replies; 10+ messages in thread
From: Kevin Hilman @ 2013-03-20 23:34 UTC (permalink / raw)
To: linux-arm-kernel
The 64-bit requirement can be removed after the conversion of
the conversion of the nsec granularity cputime to work on !64_BIT
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Signed-off-by: Kevin Hilman <khilman@linaro.org>
---
init/Kconfig | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/init/Kconfig b/init/Kconfig
index 8a1dac2..1f1a328 100644
--- a/init/Kconfig
+++ b/init/Kconfig
@@ -329,7 +329,7 @@ config VIRT_CPU_ACCOUNTING_NATIVE
config VIRT_CPU_ACCOUNTING_GEN
bool "Full dynticks CPU time accounting"
- depends on HAVE_CONTEXT_TRACKING && 64BIT
+ depends on HAVE_CONTEXT_TRACKING
select VIRT_CPU_ACCOUNTING
select CONTEXT_TRACKING
help
--
1.8.2
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH 3/3] ARM: Kconfig: allow virt CPU accounting
2013-03-20 23:34 [PATCH 0/3] ARM: context tracking support prerequisites Kevin Hilman
2013-03-20 23:34 ` [PATCH 1/3] cputime_nsecs: use math64.h for nsec resolution conversion helpers Kevin Hilman
2013-03-20 23:34 ` [PATCH 2/3] init/Kconfig: virt CPU accounting: drop 64-bit requirment Kevin Hilman
@ 2013-03-20 23:34 ` Kevin Hilman
2 siblings, 0 replies; 10+ messages in thread
From: Kevin Hilman @ 2013-03-20 23:34 UTC (permalink / raw)
To: linux-arm-kernel
With the 64-bit requirement removed from virt CPU accounting,
allow ARM platforms to enable it.
Signed-off-by: Kevin Hilman <khilman@linaro.org>
---
arch/arm/Kconfig | 1 +
1 file changed, 1 insertion(+)
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index 5b71469..9473d55 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -59,6 +59,7 @@ config ARM
select CLONE_BACKWARDS
select OLD_SIGSUSPEND3
select OLD_SIGACTION
+ select HAVE_VIRT_CPU_ACCOUNTING
help
The ARM series is a line of low-power-consumption RISC chip designs
licensed by ARM Ltd and targeted at embedded applications and
--
1.8.2
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH 1/3] cputime_nsecs: use math64.h for nsec resolution conversion helpers
2013-03-20 23:34 ` [PATCH 1/3] cputime_nsecs: use math64.h for nsec resolution conversion helpers Kevin Hilman
@ 2013-04-11 17:10 ` Frederic Weisbecker
2013-04-15 14:02 ` Kevin Hilman
0 siblings, 1 reply; 10+ messages in thread
From: Frederic Weisbecker @ 2013-04-11 17:10 UTC (permalink / raw)
To: linux-arm-kernel
On Wed, Mar 20, 2013 at 04:34:25PM -0700, Kevin Hilman wrote:
> For the nsec resolution conversions to be useable on non 64-bit
> architectures, the helpers in <linux/math64.h> need to be used so the
> right arch-specific 64-bit math helpers can be used (e.g. do_div())
>
> Cc: Frederic Weisbecker <fweisbec@gmail.com>
> Signed-off-by: Kevin Hilman <khilman@linaro.org>
Ok the patch is nice!
I'm queuing it.
Thanks.
^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH 1/3] cputime_nsecs: use math64.h for nsec resolution conversion helpers
2013-04-11 17:10 ` Frederic Weisbecker
@ 2013-04-15 14:02 ` Kevin Hilman
2013-04-15 14:08 ` Frederic Weisbecker
0 siblings, 1 reply; 10+ messages in thread
From: Kevin Hilman @ 2013-04-15 14:02 UTC (permalink / raw)
To: linux-arm-kernel
Frederic Weisbecker <fweisbec@gmail.com> writes:
> On Wed, Mar 20, 2013 at 04:34:25PM -0700, Kevin Hilman wrote:
>> For the nsec resolution conversions to be useable on non 64-bit
>> architectures, the helpers in <linux/math64.h> need to be used so the
>> right arch-specific 64-bit math helpers can be used (e.g. do_div())
>>
>> Cc: Frederic Weisbecker <fweisbec@gmail.com>
>> Signed-off-by: Kevin Hilman <khilman@linaro.org>
>
> Ok the patch is nice!
>
> I'm queuing it.
Thanks, did you queue PATCH 3/3 also to remove the 64-bit limitation
from VIRT_CPU_ACCOUNTING_GEN: https://lkml.org/lkml/2013/3/20/656
Kevin
^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH 1/3] cputime_nsecs: use math64.h for nsec resolution conversion helpers
2013-04-15 14:02 ` Kevin Hilman
@ 2013-04-15 14:08 ` Frederic Weisbecker
0 siblings, 0 replies; 10+ messages in thread
From: Frederic Weisbecker @ 2013-04-15 14:08 UTC (permalink / raw)
To: linux-arm-kernel
2013/4/15 Kevin Hilman <khilman@linaro.org>:
> Frederic Weisbecker <fweisbec@gmail.com> writes:
>
>> On Wed, Mar 20, 2013 at 04:34:25PM -0700, Kevin Hilman wrote:
>>> For the nsec resolution conversions to be useable on non 64-bit
>>> architectures, the helpers in <linux/math64.h> need to be used so the
>>> right arch-specific 64-bit math helpers can be used (e.g. do_div())
>>>
>>> Cc: Frederic Weisbecker <fweisbec@gmail.com>
>>> Signed-off-by: Kevin Hilman <khilman@linaro.org>
>>
>> Ok the patch is nice!
>>
>> I'm queuing it.
>
> Thanks, did you queue PATCH 3/3 also to remove the 64-bit limitation
> from VIRT_CPU_ACCOUNTING_GEN: https://lkml.org/lkml/2013/3/20/656
Not yet, for this one I need to deeply check we haven't forgotten
anything concerning cputime_t operations in 32 bits archs.
^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH 3/3] ARM: Kconfig: allow virt CPU accounting
2013-07-03 18:36 [PATCH 0/3] nohz/full: final Kconfig bits for ARM support Kevin Hilman
@ 2013-07-03 18:36 ` Kevin Hilman
2013-07-19 16:17 ` Frederic Weisbecker
0 siblings, 1 reply; 10+ messages in thread
From: Kevin Hilman @ 2013-07-03 18:36 UTC (permalink / raw)
To: linux-arm-kernel
With the 64-bit requirement removed from virt CPU accounting,
allow ARM platforms to enable it.
Cc: Russell King <rmk+kernel@arm.linux.org.uk>
Signed-off-by: Kevin Hilman <khilman@linaro.org>
---
arch/arm/Kconfig | 1 +
1 file changed, 1 insertion(+)
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index 136f263..7850612 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -61,6 +61,7 @@ config ARM
select OLD_SIGSUSPEND3
select OLD_SIGACTION
select HAVE_CONTEXT_TRACKING
+ select HAVE_VIRT_CPU_ACCOUNTING
help
The ARM series is a line of low-power-consumption RISC chip designs
licensed by ARM Ltd and targeted at embedded applications and
--
1.8.3
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH 3/3] ARM: Kconfig: allow virt CPU accounting
2013-07-03 18:36 ` [PATCH 3/3] ARM: Kconfig: allow virt CPU accounting Kevin Hilman
@ 2013-07-19 16:17 ` Frederic Weisbecker
2013-08-02 0:29 ` Kevin Hilman
0 siblings, 1 reply; 10+ messages in thread
From: Frederic Weisbecker @ 2013-07-19 16:17 UTC (permalink / raw)
To: linux-arm-kernel
On Wed, Jul 03, 2013 at 11:36:41AM -0700, Kevin Hilman wrote:
> With the 64-bit requirement removed from virt CPU accounting,
> allow ARM platforms to enable it.
>
> Cc: Russell King <rmk+kernel@arm.linux.org.uk>
> Signed-off-by: Kevin Hilman <khilman@linaro.org>
> ---
> arch/arm/Kconfig | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
> index 136f263..7850612 100644
> --- a/arch/arm/Kconfig
> +++ b/arch/arm/Kconfig
> @@ -61,6 +61,7 @@ config ARM
> select OLD_SIGSUSPEND3
> select OLD_SIGACTION
> select HAVE_CONTEXT_TRACKING
> + select HAVE_VIRT_CPU_ACCOUNTING
I think you got confused here. HAVE_VIRT_CPU_ACCOUNTING is the arch capability
for VIRT_CPU_ACCOUNTING_NATIVE, not for VIRT_CPU_ACCOUNTING_GEN that only requires
support for context tracking.
That's my bad, all those names start to be confusing now.
The VIRT based Kconfig naming is a bit weird, that doesn't really reflect what the feature
is doing. "Virtual cputime accounting" just doesn't give any clue, except perhaps suggesting
the stuff deals with virtualization while it actually has nothing to do with.
I don't even know what virtual refers to here.
Same goes for vtime based APIs. In fact I just based my work on the legacy that was
there and expanded further the non-sense ;-)
I'll need to do a big renaming one day.
But to begin with I should rename s/HAVE_VIRT_CPU_ACCOUNTING/HAVE_VIRT_CPU_ACCOUNTING_NATIVE.
> help
> The ARM series is a line of low-power-consumption RISC chip designs
> licensed by ARM Ltd and targeted at embedded applications and
> --
> 1.8.3
>
^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH 3/3] ARM: Kconfig: allow virt CPU accounting
2013-07-19 16:17 ` Frederic Weisbecker
@ 2013-08-02 0:29 ` Kevin Hilman
0 siblings, 0 replies; 10+ messages in thread
From: Kevin Hilman @ 2013-08-02 0:29 UTC (permalink / raw)
To: linux-arm-kernel
Frederic Weisbecker <fweisbec@gmail.com> writes:
> On Wed, Jul 03, 2013 at 11:36:41AM -0700, Kevin Hilman wrote:
>> With the 64-bit requirement removed from virt CPU accounting,
>> allow ARM platforms to enable it.
>>
>> Cc: Russell King <rmk+kernel@arm.linux.org.uk>
>> Signed-off-by: Kevin Hilman <khilman@linaro.org>
>> ---
>> arch/arm/Kconfig | 1 +
>> 1 file changed, 1 insertion(+)
>>
>> diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
>> index 136f263..7850612 100644
>> --- a/arch/arm/Kconfig
>> +++ b/arch/arm/Kconfig
>> @@ -61,6 +61,7 @@ config ARM
>> select OLD_SIGSUSPEND3
>> select OLD_SIGACTION
>> select HAVE_CONTEXT_TRACKING
>> + select HAVE_VIRT_CPU_ACCOUNTING
>
> I think you got confused here. HAVE_VIRT_CPU_ACCOUNTING is the arch capability
> for VIRT_CPU_ACCOUNTING_NATIVE, not for VIRT_CPU_ACCOUNTING_GEN that only requires
> support for context tracking.
Yes, I am confused. :/
> That's my bad, all those names start to be confusing now.
> The VIRT based Kconfig naming is a bit weird, that doesn't really reflect what the feature
> is doing. "Virtual cputime accounting" just doesn't give any clue, except perhaps suggesting
> the stuff deals with virtualization while it actually has nothing to do with.
> I don't even know what virtual refers to here.
>
> Same goes for vtime based APIs. In fact I just based my work on the legacy that was
> there and expanded further the non-sense ;-)
>
> I'll need to do a big renaming one day.
>
> But to begin with I should rename s/HAVE_VIRT_CPU_ACCOUNTING/HAVE_VIRT_CPU_ACCOUNTING_NATIVE.
OK, I just tested and I can indeed drop this patch.
Thanks for clarifying,
Kevin
^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2013-08-02 0:29 UTC | newest]
Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-03-20 23:34 [PATCH 0/3] ARM: context tracking support prerequisites Kevin Hilman
2013-03-20 23:34 ` [PATCH 1/3] cputime_nsecs: use math64.h for nsec resolution conversion helpers Kevin Hilman
2013-04-11 17:10 ` Frederic Weisbecker
2013-04-15 14:02 ` Kevin Hilman
2013-04-15 14:08 ` Frederic Weisbecker
2013-03-20 23:34 ` [PATCH 2/3] init/Kconfig: virt CPU accounting: drop 64-bit requirment Kevin Hilman
2013-03-20 23:34 ` [PATCH 3/3] ARM: Kconfig: allow virt CPU accounting Kevin Hilman
-- strict thread matches above, loose matches on Subject: below --
2013-07-03 18:36 [PATCH 0/3] nohz/full: final Kconfig bits for ARM support Kevin Hilman
2013-07-03 18:36 ` [PATCH 3/3] ARM: Kconfig: allow virt CPU accounting Kevin Hilman
2013-07-19 16:17 ` Frederic Weisbecker
2013-08-02 0:29 ` Kevin Hilman
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).