Skip to content

Commit

Permalink
Merge branch 'core-fixes-for-linus' of git://git.kernel.org/pub/scm/l…
Browse files Browse the repository at this point in the history
…inux/kernel/git/tip/linux-2.6-tip

* 'core-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
  softlockup: fix NMI hangs due to lock race - 2.6.26-rc regression
  rcupreempt: remove export of rcu_batches_completed_bh
  cpuset: limit the input of cpuset.sched_relax_domain_level
  • Loading branch information
Linus Torvalds committed Jun 20, 2008
2 parents e570dc2 + 9c106c1 commit 1f1e2ce
Show file tree
Hide file tree
Showing 5 changed files with 19 additions and 11 deletions.
2 changes: 1 addition & 1 deletion Documentation/cpusets.txt
Original file line number Diff line number Diff line change
Expand Up @@ -542,7 +542,7 @@ otherwise initial value -1 that indicates the cpuset has no request.
2 : search cores in a package.
3 : search cpus in a node [= system wide on non-NUMA system]
( 4 : search nodes in a chunk of node [on NUMA system] )
( 5~ : search system wide [on NUMA system])
( 5 : search system wide [on NUMA system] )

This file is per-cpuset and affect the sched domain where the cpuset
belongs to. Therefore if the flag 'sched_load_balance' of a cpuset
Expand Down
4 changes: 2 additions & 2 deletions kernel/cpuset.c
Original file line number Diff line number Diff line change
Expand Up @@ -1037,8 +1037,8 @@ int current_cpuset_is_being_rebound(void)

static int update_relax_domain_level(struct cpuset *cs, s64 val)
{
if ((int)val < 0)
val = -1;
if (val < -1 || val >= SD_LV_MAX)
return -EINVAL;

if (val != cs->relax_domain_level) {
cs->relax_domain_level = val;
Expand Down
2 changes: 0 additions & 2 deletions kernel/rcupreempt.c
Original file line number Diff line number Diff line change
Expand Up @@ -217,8 +217,6 @@ long rcu_batches_completed(void)
}
EXPORT_SYMBOL_GPL(rcu_batches_completed);

EXPORT_SYMBOL_GPL(rcu_batches_completed_bh);

void __rcu_read_lock(void)
{
int idx;
Expand Down
7 changes: 6 additions & 1 deletion kernel/sched.c
Original file line number Diff line number Diff line change
Expand Up @@ -6879,7 +6879,12 @@ static int default_relax_domain_level = -1;

static int __init setup_relax_domain_level(char *str)
{
default_relax_domain_level = simple_strtoul(str, NULL, 0);
unsigned long val;

val = simple_strtoul(str, NULL, 0);
if (val < SD_LV_MAX)
default_relax_domain_level = val;

return 1;
}
__setup("relax_domain_level=", setup_relax_domain_level);
Expand Down
15 changes: 10 additions & 5 deletions kernel/softlockup.c
Original file line number Diff line number Diff line change
Expand Up @@ -49,12 +49,17 @@ static unsigned long get_timestamp(int this_cpu)
return cpu_clock(this_cpu) >> 30LL; /* 2^30 ~= 10^9 */
}

void touch_softlockup_watchdog(void)
static void __touch_softlockup_watchdog(void)
{
int this_cpu = raw_smp_processor_id();

__raw_get_cpu_var(touch_timestamp) = get_timestamp(this_cpu);
}

void touch_softlockup_watchdog(void)
{
__raw_get_cpu_var(touch_timestamp) = 0;
}
EXPORT_SYMBOL(touch_softlockup_watchdog);

void touch_all_softlockup_watchdogs(void)
Expand All @@ -80,7 +85,7 @@ void softlockup_tick(void)
unsigned long now;

if (touch_timestamp == 0) {
touch_softlockup_watchdog();
__touch_softlockup_watchdog();
return;
}

Expand All @@ -95,7 +100,7 @@ void softlockup_tick(void)

/* do not print during early bootup: */
if (unlikely(system_state != SYSTEM_RUNNING)) {
touch_softlockup_watchdog();
__touch_softlockup_watchdog();
return;
}

Expand Down Expand Up @@ -214,7 +219,7 @@ static int watchdog(void *__bind_cpu)
sched_setscheduler(current, SCHED_FIFO, &param);

/* initialize timestamp */
touch_softlockup_watchdog();
__touch_softlockup_watchdog();

set_current_state(TASK_INTERRUPTIBLE);
/*
Expand All @@ -223,7 +228,7 @@ static int watchdog(void *__bind_cpu)
* debug-printout triggers in softlockup_tick().
*/
while (!kthread_should_stop()) {
touch_softlockup_watchdog();
__touch_softlockup_watchdog();
schedule();

if (kthread_should_stop())
Expand Down

0 comments on commit 1f1e2ce

Please sign in to comment.