lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:	Mon, 20 Apr 2015 16:46:31 +0530
From:	Preeti U Murthy <preeti@...ux.vnet.ibm.com>
To:	Thomas Gleixner <tglx@...utronix.de>,
	LKML <linux-kernel@...r.kernel.org>
CC:	Peter Zijlstra <peterz@...radead.org>,
	Ingo Molnar <mingo@...nel.org>,
	Viresh Kumar <viresh.kumar@...aro.org>,
	Marcelo Tosatti <mtosatt@...hat.com>,
	Frederic Weisbecker <fweisbec@...il.com>
Subject: Re: [patch 10/39] hrtimer: Use cpu_base->active_base for hotpath
 iterators

On 04/15/2015 02:38 AM, Thomas Gleixner wrote:
>>Now that we have the active_bases field in sync we can use it for

This sentence appears a bit ambiguous. I am guessing you are referring
to what the first patch in this series did, in which case wouldn't it be
better if it is stated a bit more elaborately like 'Now that it is
guaranteed that active_bases field will be in sync with the timerqueue
on the corresponding clock base' ? It took me a while to figure out what
the statement was referring to.

>>iterating over the clock bases. This allows to break out early if no
>>more active clock bases are available and avoids touching the cache
>>lines of inactive clock bases.
>>
>>Signed-off-by: Thomas Gleixner <tglx@...utronix.de>
>>---

Regards
Preeti U Murthy

>> kernel/time/hrtimer.c |   17 ++++++++---------
>> 1 file changed, 8 insertions(+), 9 deletions(-)
>>
>>Index: tip/kernel/time/hrtimer.c
>>===================================================================
>>--- tip.orig/kernel/time/hrtimer.c
>>+++ tip/kernel/time/hrtimer.c
>>@@ -419,16 +419,16 @@ static ktime_t __hrtimer_get_next_event(
>> {
>> 	struct hrtimer_clock_base *base = cpu_base->clock_base;
>> 	ktime_t expires, expires_next = { .tv64 = KTIME_MAX };
>>-	int i;
>>+	unsigned int active = cpu_base->active_bases;
>>
>>-	for (i = 0; i < HRTIMER_MAX_CLOCK_BASES; i++, base++) {
>>+	for (; active; base++, active >>= 1) {
>> 		struct timerqueue_node *next;
>> 		struct hrtimer *timer;
>>
>>-		next = timerqueue_getnext(&base->active);
>>-		if (!next)
>>+		if (!(active & 0x01))
>> 			continue;
>>
>>+		next = timerqueue_getnext(&base->active);
>> 		timer = container_of(next, struct hrtimer, node);
>> 		expires = ktime_sub(hrtimer_get_expires(timer),
>>base->offset);
>> 		if (expires.tv64 < expires_next.tv64)
>>@@ -1206,17 +1206,16 @@ static void __run_hrtimer(struct hrtimer
>>
>> static void __hrtimer_run_queues(struct hrtimer_cpu_base *cpu_base,
ktime_t
>>now)
>> {
>>-	int i;
>>+	struct hrtimer_clock_base *base = cpu_base->clock_base;
>>+	unsigned int active = cpu_base->active_bases;
>>
>>-	for (i = 0; i < HRTIMER_MAX_CLOCK_BASES; i++) {
>>-		struct hrtimer_clock_base *base;
>>+	for (; active; base++, active >>= 1) {
>> 		struct timerqueue_node *node;
>> 		ktime_t basenow;
>>
>>-		if (!(cpu_base->active_bases & (1 << i)))
>>+		if (!(active & 0x01))
>> 			continue;
>>
>>-		base = cpu_base->clock_base + i;
>> 		basenow = ktime_add(now, base->offset);
>>
>> 		while ((node = timerqueue_getnext(&base->active))) {
>>

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ