Skip to contentSkip to conversation

Patch "hrtimer: Add support for CLOCK_MONOTONIC_RAW" has been added to the 4.4-stable tree

PATCH [email protected] 4 participants 5 messages Sep 27, 2016

Subsystems (2)
lore
Share & tools
lore

[email protected]

author maintainer Applied
#0 lore raw

This is a note to let you know that I've just added the patch titled

hrtimer: Add support for CLOCK_MONOTONIC_RAW

to the 4.4-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
hrtimer-add-support-for-clock_monotonic_raw.patch
and it can be found in the queue-4.4 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.

Quoted 1 line

From 9c808765e88efb6fa6af7e2206ef89512f1840a7 Mon Sep 17 00:00:00 2001

From: Marc Zyngier <[email protected]>
Date: Fri, 15 Jan 2016 17:41:08 +0000
Subject: hrtimer: Add support for CLOCK_MONOTONIC_RAW

From: Marc Zyngier <[email protected]>

commit 9c808765e88efb6fa6af7e2206ef89512f1840a7 upstream.

The KVM/ARM timer implementation arms a hrtimer when a vcpu is blocked (usually because it is waiting for an interrupt) while its timer is going to kick in the future.

It is essential that this timer doesn't get adjusted, or the guest will end up being woken-up at the wrong time (NTP running on the host seems to confuse the hell out of some guests).

In order to allow this, let's add CLOCK_MONOTONIC_RAW support to hrtimer (it is so far only supported for posix timers). It also has the (limited) benefit of fixing de0421d53bfb ("mac80211_hwsim:
shuffle code to prepare for dynamic radios"), which already uses this functionnality without realizing wasn't implemented (just being lucky...).

---
 include/linux/hrtimer.h |    1 +
 kernel/time/hrtimer.c   |   11 ++++++++++-
 2 files changed, 11 insertions(+), 1 deletion(-)
include/linux/hrtimer.h +1 -0
@@ -153,6 +153,7 @@ enum  hrtimer_base_type {
 	HRTIMER_BASE_REALTIME,
 	HRTIMER_BASE_BOOTTIME,
 	HRTIMER_BASE_TAI,
+	HRTIMER_BASE_MONOTONIC_RAW,
 	HRTIMER_MAX_CLOCK_BASES,
 };
 
kernel/time/hrtimer.c +10 -1
@@ -90,6 +90,11 @@ DEFINE_PER_CPU(struct hrtimer_cpu_base,
 			.clockid = CLOCK_TAI,
 			.get_time = &ktime_get_clocktai,
 		},
+		{
+			.index = HRTIMER_BASE_MONOTONIC_RAW,
+			.clockid = CLOCK_MONOTONIC_RAW,
+			.get_time = &ktime_get_raw,
+		},
 	}
 };
 
@@ -99,6 +104,7 @@ static const int hrtimer_clock_to_base_t
 
 	[CLOCK_REALTIME]	= HRTIMER_BASE_REALTIME,
 	[CLOCK_MONOTONIC]	= HRTIMER_BASE_MONOTONIC,
+	[CLOCK_MONOTONIC_RAW]	= HRTIMER_BASE_MONOTONIC_RAW,
 	[CLOCK_BOOTTIME]	= HRTIMER_BASE_BOOTTIME,
 	[CLOCK_TAI]		= HRTIMER_BASE_TAI,
 };
@@ -1292,7 +1298,10 @@ static void __hrtimer_run_queues(struct
 		if (!(active & 0x01))
 			continue;
 
-		basenow = ktime_add(now, base->offset);
+		if (unlikely(base->index == HRTIMER_BASE_MONOTONIC_RAW))
+			basenow = ktime_get_raw();
+		else
+			basenow = ktime_add(now, base->offset);
 
 		while ((node = timerqueue_getnext(&base->active))) {
 			struct hrtimer *timer;

Patches currently in stable-queue which might be from [email protected] are

queue-4.4/hrtimer-add-support-for-clock_monotonic_raw.patch

#1 lore raw

Greg,

Quoted 39 lines · On Tue, 27 Sep 2016 16:27:57 +0200 <[email protected]> wrote:

This is a note to let you know that I've just added the patch titled

hrtimer: Add support for CLOCK_MONOTONIC_RAW

to the 4.4-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
hrtimer-add-support-for-clock_monotonic_raw.patch
and it can be found in the queue-4.4 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.

From 9c808765e88efb6fa6af7e2206ef89512f1840a7 Mon Sep 17 00:00:00 2001
From: Marc Zyngier <[email protected]>
Date: Fri, 15 Jan 2016 17:41:08 +0000
Subject: hrtimer: Add support for CLOCK_MONOTONIC_RAW

From: Marc Zyngier <[email protected]>

commit 9c808765e88efb6fa6af7e2206ef89512f1840a7 upstream.

The KVM/ARM timer implementation arms a hrtimer when a vcpu is blocked (usually because it is waiting for an interrupt) while its timer is going to kick in the future.

It is essential that this timer doesn't get adjusted, or the guest will end up being woken-up at the wrong time (NTP running on the host seems to confuse the hell out of some guests).

In order to allow this, let's add CLOCK_MONOTONIC_RAW support to hrtimer (it is so far only supported for posix timers). It also has the (limited) benefit of fixing de0421d53bfb ("mac80211_hwsim:
shuffle code to prepare for dynamic radios"), which already uses this functionnality without realizing wasn't implemented (just being lucky...).

Quoted 7 lines

Please drop that patch. It is utterly broken, and was reverted in mainline with commit 82e88ff1ea94 ("hrtimer: Revert CLOCK_MONOTONIC_RAW support").

Thanks,

	M.
Signature · 1 line
Jazz is not dead. It just smells funny.
author maintainer
#2 lore raw
Quoted 52 lines · Marc Zyngier

Greg,

Quoted 39 lines · On Tue, 27 Sep 2016 16:27:57 +0200 <[email protected]> wrote:

This is a note to let you know that I've just added the patch titled

hrtimer: Add support for CLOCK_MONOTONIC_RAW

to the 4.4-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
hrtimer-add-support-for-clock_monotonic_raw.patch
and it can be found in the queue-4.4 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.

From 9c808765e88efb6fa6af7e2206ef89512f1840a7 Mon Sep 17 00:00:00 2001
From: Marc Zyngier <[email protected]>
Date: Fri, 15 Jan 2016 17:41:08 +0000
Subject: hrtimer: Add support for CLOCK_MONOTONIC_RAW

From: Marc Zyngier <[email protected]>

commit 9c808765e88efb6fa6af7e2206ef89512f1840a7 upstream.

The KVM/ARM timer implementation arms a hrtimer when a vcpu is blocked (usually because it is waiting for an interrupt) while its timer is going to kick in the future.

It is essential that this timer doesn't get adjusted, or the guest will end up being woken-up at the wrong time (NTP running on the host seems to confuse the hell out of some guests).

In order to allow this, let's add CLOCK_MONOTONIC_RAW support to hrtimer (it is so far only supported for posix timers). It also has the (limited) benefit of fixing de0421d53bfb ("mac80211_hwsim:
shuffle code to prepare for dynamic radios"), which already uses this functionnality without realizing wasn't implemented (just being lucky...).

Quoted 7 lines
Quoted 4 lines

Please drop that patch. It is utterly broken, and was reverted in mainline with commit 82e88ff1ea94 ("hrtimer: Revert CLOCK_MONOTONIC_RAW support").

Ok, will do.

Felix, this kind of means this isn't the fix you were looking for, any other ideas?

thanks,

greg k-h

#3 lore raw
Quoted 58 lines · Greg KH
Quoted 52 lines · Marc Zyngier

Greg,

Quoted 39 lines · On Tue, 27 Sep 2016 16:27:57 +0200 <[email protected]> wrote:

This is a note to let you know that I've just added the patch titled

hrtimer: Add support for CLOCK_MONOTONIC_RAW

to the 4.4-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
hrtimer-add-support-for-clock_monotonic_raw.patch
and it can be found in the queue-4.4 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.

From 9c808765e88efb6fa6af7e2206ef89512f1840a7 Mon Sep 17 00:00:00 2001
From: Marc Zyngier <[email protected]>
Date: Fri, 15 Jan 2016 17:41:08 +0000
Subject: hrtimer: Add support for CLOCK_MONOTONIC_RAW

From: Marc Zyngier <[email protected]>

commit 9c808765e88efb6fa6af7e2206ef89512f1840a7 upstream.

The KVM/ARM timer implementation arms a hrtimer when a vcpu is blocked (usually because it is waiting for an interrupt) while its timer is going to kick in the future.

It is essential that this timer doesn't get adjusted, or the guest will end up being woken-up at the wrong time (NTP running on the host seems to confuse the hell out of some guests).

In order to allow this, let's add CLOCK_MONOTONIC_RAW support to hrtimer (it is so far only supported for posix timers). It also has the (limited) benefit of fixing de0421d53bfb ("mac80211_hwsim:
shuffle code to prepare for dynamic radios"), which already uses this functionnality without realizing wasn't implemented (just being lucky...).

Quoted 7 lines
Quoted 4 lines

Please drop that patch. It is utterly broken, and was reverted in mainline with commit 82e88ff1ea94 ("hrtimer: Revert CLOCK_MONOTONIC_RAW support").

Quoted 4 lines

Ok, will do.

Felix, this kind of means this isn't the fix you were looking for, any other ideas?

I guess I can send a mac80211_hwpatch to switch to CLOCK_MONOTONIC instead and add Cc: stable.

- Felix

#4 lore raw
Quoted 3 lines · Felix Fietkau
Quoted 3 lines
Quoted 3 lines

Please drop that patch. It is utterly broken, and was reverted in mainline with commit 82e88ff1ea94 ("hrtimer: Revert CLOCK_MONOTONIC_RAW support").

Probably shouldn't be discussing it in this context, but ...

Why did this also revert the illegal clock ID catching? That seems strange? Doesn't that mean that everything that specifies an otherwise not supported value will get HRTIMER_BASE_MONOTONIC?

Quoted 7 lines
Quoted 5 lines

Ok, will do.

Felix, this kind of means this isn't the fix you were looking for, any
other ideas?

I guess I can send a mac80211_hwpatch to switch to CLOCK_MONOTONIC instead and add Cc: stable.

I had actually selected _RAW for a reason, you don't want the frame timings to be affected by clock adjustments?

Arguably, it's rare that the clock is actually adjusted, and even if that does happen, chances are that nobody will actually care at that point in time, but ...

What would it take to actually add real support?

johannes