|
@@ -319,11 +319,9 @@ static enum hrtimer_restart watchdog_timer_fn(struct hrtimer *hrtimer)
|
|
|
*/
|
|
|
static int watchdog(void *unused)
|
|
|
{
|
|
|
- struct sched_param param = { .sched_priority = MAX_RT_PRIO-1 };
|
|
|
+ struct sched_param param = { .sched_priority = 0 };
|
|
|
struct hrtimer *hrtimer = &__raw_get_cpu_var(watchdog_hrtimer);
|
|
|
|
|
|
- sched_setscheduler(current, SCHED_FIFO, ¶m);
|
|
|
-
|
|
|
/* initialize timestamp */
|
|
|
__touch_watchdog();
|
|
|
|
|
@@ -350,7 +348,6 @@ static int watchdog(void *unused)
|
|
|
set_current_state(TASK_INTERRUPTIBLE);
|
|
|
}
|
|
|
__set_current_state(TASK_RUNNING);
|
|
|
- param.sched_priority = 0;
|
|
|
sched_setscheduler(current, SCHED_NORMAL, ¶m);
|
|
|
return 0;
|
|
|
}
|
|
@@ -439,6 +436,7 @@ static int watchdog_enable(int cpu)
|
|
|
|
|
|
/* create the watchdog thread */
|
|
|
if (!p) {
|
|
|
+ struct sched_param param = { .sched_priority = MAX_RT_PRIO-1 };
|
|
|
p = kthread_create_on_node(watchdog, NULL, cpu_to_node(cpu), "watchdog/%d", cpu);
|
|
|
if (IS_ERR(p)) {
|
|
|
printk(KERN_ERR "softlockup watchdog for %i failed\n", cpu);
|
|
@@ -450,6 +448,7 @@ static int watchdog_enable(int cpu)
|
|
|
}
|
|
|
goto out;
|
|
|
}
|
|
|
+ sched_setscheduler(p, SCHED_FIFO, ¶m);
|
|
|
kthread_bind(p, cpu);
|
|
|
per_cpu(watchdog_touch_ts, cpu) = 0;
|
|
|
per_cpu(softlockup_watchdog, cpu) = p;
|