ktime_t t = watchdog_next_keepalive(wdd);
 
                if (t > 0)
-                       hrtimer_start(&wd_data->timer, t, HRTIMER_MODE_REL);
+                       hrtimer_start(&wd_data->timer, t,
+                                     HRTIMER_MODE_REL_HARD);
        } else {
                hrtimer_cancel(&wd_data->timer);
        }
        if (ktime_after(earliest_keepalive, now)) {
                hrtimer_start(&wd_data->timer,
                              ktime_sub(earliest_keepalive, now),
-                             HRTIMER_MODE_REL);
+                             HRTIMER_MODE_REL_HARD);
                return 0;
        }
 
                return -ENODEV;
 
        kthread_init_work(&wd_data->work, watchdog_ping_work);
-       hrtimer_init(&wd_data->timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL);
+       hrtimer_init(&wd_data->timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL_HARD);
        wd_data->timer.function = watchdog_timer_expired;
 
        if (wdd->id == 0) {
                __module_get(wdd->ops->owner);
                get_device(&wd_data->dev);
                if (handle_boot_enabled)
-                       hrtimer_start(&wd_data->timer, 0, HRTIMER_MODE_REL);
+                       hrtimer_start(&wd_data->timer, 0,
+                                     HRTIMER_MODE_REL_HARD);
                else
                        pr_info("watchdog%d running and kernel based pre-userspace handler disabled\n",
                                wdd->id);