Commit 8ce36481 authored by Linus Torvalds's avatar Linus Torvalds
Browse files

Merge tag 'timers-urgent-2021-05-16' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip

Pull timer fixes from Thomas Gleixner:
 "Two fixes for timers:

   - Use the ALARM feature check in the alarmtimer core code insted of
     the old method of checking for the set_alarm() callback.

     Drivers can have that callback set but the feature bit cleared. If
     such a RTC device is selected then alarms wont work.

   - Use a proper define to let the preprocessor check whether Hyper-V
     VDSO clocksource should be active.

     The code used a constant in an enum with #ifdef, which evaluates to
     always false and disabled the clocksource for VDSO"

* tag 'timers-urgent-2021-05-16' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
  clocksource/drivers/hyper-v: Re-enable VDSO_CLOCKMODE_HVCLOCK on X86
  alarmtimer: Check RTC features instead of ops
parents f44e58bb 3486d2c9
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -7,4 +7,6 @@
	VDSO_CLOCKMODE_PVCLOCK,	\
	VDSO_CLOCKMODE_HVCLOCK

#define HAVE_VDSO_CLOCKMODE_HVCLOCK

#endif /* __ASM_VDSO_CLOCKSOURCE_H */
+2 −2
Original line number Diff line number Diff line
@@ -419,7 +419,7 @@ static void resume_hv_clock_tsc(struct clocksource *arg)
	hv_set_register(HV_REGISTER_REFERENCE_TSC, tsc_msr);
}

#ifdef VDSO_CLOCKMODE_HVCLOCK
#ifdef HAVE_VDSO_CLOCKMODE_HVCLOCK
static int hv_cs_enable(struct clocksource *cs)
{
	vclocks_set_used(VDSO_CLOCKMODE_HVCLOCK);
@@ -435,7 +435,7 @@ static struct clocksource hyperv_cs_tsc = {
	.flags	= CLOCK_SOURCE_IS_CONTINUOUS,
	.suspend= suspend_hv_clock_tsc,
	.resume	= resume_hv_clock_tsc,
#ifdef VDSO_CLOCKMODE_HVCLOCK
#ifdef HAVE_VDSO_CLOCKMODE_HVCLOCK
	.enable = hv_cs_enable,
	.vdso_clock_mode = VDSO_CLOCKMODE_HVCLOCK,
#else
+1 −1
Original line number Diff line number Diff line
@@ -92,7 +92,7 @@ static int alarmtimer_rtc_add_device(struct device *dev,
	if (rtcdev)
		return -EBUSY;

	if (!rtc->ops->set_alarm)
	if (!test_bit(RTC_FEATURE_ALARM, rtc->features))
		return -1;
	if (!device_may_wakeup(rtc->dev.parent))
		return -1;