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

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
...@@ -7,4 +7,6 @@ ...@@ -7,4 +7,6 @@
VDSO_CLOCKMODE_PVCLOCK, \ VDSO_CLOCKMODE_PVCLOCK, \
VDSO_CLOCKMODE_HVCLOCK VDSO_CLOCKMODE_HVCLOCK
#define HAVE_VDSO_CLOCKMODE_HVCLOCK
#endif /* __ASM_VDSO_CLOCKSOURCE_H */ #endif /* __ASM_VDSO_CLOCKSOURCE_H */
...@@ -419,7 +419,7 @@ static void resume_hv_clock_tsc(struct clocksource *arg) ...@@ -419,7 +419,7 @@ static void resume_hv_clock_tsc(struct clocksource *arg)
hv_set_register(HV_REGISTER_REFERENCE_TSC, tsc_msr); 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) static int hv_cs_enable(struct clocksource *cs)
{ {
vclocks_set_used(VDSO_CLOCKMODE_HVCLOCK); vclocks_set_used(VDSO_CLOCKMODE_HVCLOCK);
...@@ -435,7 +435,7 @@ static struct clocksource hyperv_cs_tsc = { ...@@ -435,7 +435,7 @@ static struct clocksource hyperv_cs_tsc = {
.flags = CLOCK_SOURCE_IS_CONTINUOUS, .flags = CLOCK_SOURCE_IS_CONTINUOUS,
.suspend= suspend_hv_clock_tsc, .suspend= suspend_hv_clock_tsc,
.resume = resume_hv_clock_tsc, .resume = resume_hv_clock_tsc,
#ifdef VDSO_CLOCKMODE_HVCLOCK #ifdef HAVE_VDSO_CLOCKMODE_HVCLOCK
.enable = hv_cs_enable, .enable = hv_cs_enable,
.vdso_clock_mode = VDSO_CLOCKMODE_HVCLOCK, .vdso_clock_mode = VDSO_CLOCKMODE_HVCLOCK,
#else #else
......
...@@ -92,7 +92,7 @@ static int alarmtimer_rtc_add_device(struct device *dev, ...@@ -92,7 +92,7 @@ static int alarmtimer_rtc_add_device(struct device *dev,
if (rtcdev) if (rtcdev)
return -EBUSY; return -EBUSY;
if (!rtc->ops->set_alarm) if (!test_bit(RTC_FEATURE_ALARM, rtc->features))
return -1; return -1;
if (!device_may_wakeup(rtc->dev.parent)) if (!device_may_wakeup(rtc->dev.parent))
return -1; return -1;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment