| .. | .. |
|---|
| 145 | 145 | ktime_t t = watchdog_next_keepalive(wdd); |
|---|
| 146 | 146 | |
|---|
| 147 | 147 | if (t > 0) |
|---|
| 148 | | - hrtimer_start(&wd_data->timer, t, HRTIMER_MODE_REL); |
|---|
| 148 | + hrtimer_start(&wd_data->timer, t, HRTIMER_MODE_REL_HARD); |
|---|
| 149 | 149 | } else { |
|---|
| 150 | 150 | hrtimer_cancel(&wd_data->timer); |
|---|
| 151 | 151 | } |
|---|
| .. | .. |
|---|
| 164 | 164 | if (ktime_after(earliest_keepalive, now)) { |
|---|
| 165 | 165 | hrtimer_start(&wd_data->timer, |
|---|
| 166 | 166 | ktime_sub(earliest_keepalive, now), |
|---|
| 167 | | - HRTIMER_MODE_REL); |
|---|
| 167 | + HRTIMER_MODE_REL_HARD); |
|---|
| 168 | 168 | return 0; |
|---|
| 169 | 169 | } |
|---|
| 170 | 170 | |
|---|
| .. | .. |
|---|
| 959 | 959 | dev_set_name(&wd_data->dev, "watchdog%d", wdd->id); |
|---|
| 960 | 960 | |
|---|
| 961 | 961 | kthread_init_work(&wd_data->work, watchdog_ping_work); |
|---|
| 962 | | - hrtimer_init(&wd_data->timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL); |
|---|
| 962 | + hrtimer_init(&wd_data->timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL_HARD); |
|---|
| 963 | 963 | wd_data->timer.function = watchdog_timer_expired; |
|---|
| 964 | 964 | |
|---|
| 965 | 965 | if (wdd->id == 0) { |
|---|
| .. | .. |
|---|
| 1007 | 1007 | __module_get(wdd->ops->owner); |
|---|
| 1008 | 1008 | get_device(&wd_data->dev); |
|---|
| 1009 | 1009 | if (handle_boot_enabled) |
|---|
| 1010 | | - hrtimer_start(&wd_data->timer, 0, HRTIMER_MODE_REL); |
|---|
| 1010 | + hrtimer_start(&wd_data->timer, 0, HRTIMER_MODE_REL_HARD); |
|---|
| 1011 | 1011 | else |
|---|
| 1012 | 1012 | pr_info("watchdog%d running and kernel based pre-userspace handler disabled\n", |
|---|
| 1013 | 1013 | wdd->id); |
|---|