Linux 3.8-rc6
-----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.13 (GNU/Linux) iQEcBAABAgAGBQJRCxWdAAoJEHm+PkMAQRiG3bAH/28D2NbRLIDo6QIzk3seCCh3 A6vqDWbX671JRa0RO38DrWhqv6L/EisvjNZMVxBNaN635+3+yC7wsKziXYxA4+AL Ef9JISiwXykRWwrC8Q34YBWfWgeFTmaau71IRv45x2OTwiijd6cvjXhLDrOhHEGL rdAGJxIdBOfuASw1zpn9PxzfAtg1j/FGP03B4yy+JFhYzuDp3pvnDIysAnXefLml UheuBELdNf8Jx7NtW80PTa+TQtruWPC8otoiJevV4TrAWmAOctJiM1izL+VOZqqD I/v5aGf9mCN+cxLq06imwgEHWmP1I7yDdjjTHrr4wwIMws1vg8PNsJqG3AsPcwM= =dR8S -----END PGP SIGNATURE----- Merge tag 'v3.8-rc6' into next/cleanup Linux 3.8-rc6
This commit is contained in:
commit
94c16ea6ea
249 changed files with 2092 additions and 1179 deletions
|
@ -87,12 +87,6 @@ static DEFINE_SEMAPHORE(console_sem);
|
|||
struct console *console_drivers;
|
||||
EXPORT_SYMBOL_GPL(console_drivers);
|
||||
|
||||
#ifdef CONFIG_LOCKDEP
|
||||
static struct lockdep_map console_lock_dep_map = {
|
||||
.name = "console_lock"
|
||||
};
|
||||
#endif
|
||||
|
||||
/*
|
||||
* This is used for debugging the mess that is the VT code by
|
||||
* keeping track if we have the console semaphore held. It's
|
||||
|
@ -1924,7 +1918,6 @@ void console_lock(void)
|
|||
return;
|
||||
console_locked = 1;
|
||||
console_may_schedule = 1;
|
||||
mutex_acquire(&console_lock_dep_map, 0, 0, _RET_IP_);
|
||||
}
|
||||
EXPORT_SYMBOL(console_lock);
|
||||
|
||||
|
@ -1946,7 +1939,6 @@ int console_trylock(void)
|
|||
}
|
||||
console_locked = 1;
|
||||
console_may_schedule = 0;
|
||||
mutex_acquire(&console_lock_dep_map, 0, 1, _RET_IP_);
|
||||
return 1;
|
||||
}
|
||||
EXPORT_SYMBOL(console_trylock);
|
||||
|
@ -2107,7 +2099,6 @@ skip:
|
|||
local_irq_restore(flags);
|
||||
}
|
||||
console_locked = 0;
|
||||
mutex_release(&console_lock_dep_map, 1, _RET_IP_);
|
||||
|
||||
/* Release the exclusive_console once it is used */
|
||||
if (unlikely(exclusive_console))
|
||||
|
|
13
kernel/smp.c
13
kernel/smp.c
|
@ -33,6 +33,7 @@ struct call_function_data {
|
|||
struct call_single_data csd;
|
||||
atomic_t refs;
|
||||
cpumask_var_t cpumask;
|
||||
cpumask_var_t cpumask_ipi;
|
||||
};
|
||||
|
||||
static DEFINE_PER_CPU_SHARED_ALIGNED(struct call_function_data, cfd_data);
|
||||
|
@ -56,6 +57,9 @@ hotplug_cfd(struct notifier_block *nfb, unsigned long action, void *hcpu)
|
|||
if (!zalloc_cpumask_var_node(&cfd->cpumask, GFP_KERNEL,
|
||||
cpu_to_node(cpu)))
|
||||
return notifier_from_errno(-ENOMEM);
|
||||
if (!zalloc_cpumask_var_node(&cfd->cpumask_ipi, GFP_KERNEL,
|
||||
cpu_to_node(cpu)))
|
||||
return notifier_from_errno(-ENOMEM);
|
||||
break;
|
||||
|
||||
#ifdef CONFIG_HOTPLUG_CPU
|
||||
|
@ -65,6 +69,7 @@ hotplug_cfd(struct notifier_block *nfb, unsigned long action, void *hcpu)
|
|||
case CPU_DEAD:
|
||||
case CPU_DEAD_FROZEN:
|
||||
free_cpumask_var(cfd->cpumask);
|
||||
free_cpumask_var(cfd->cpumask_ipi);
|
||||
break;
|
||||
#endif
|
||||
};
|
||||
|
@ -526,6 +531,12 @@ void smp_call_function_many(const struct cpumask *mask,
|
|||
return;
|
||||
}
|
||||
|
||||
/*
|
||||
* After we put an entry into the list, data->cpumask
|
||||
* may be cleared again when another CPU sends another IPI for
|
||||
* a SMP function call, so data->cpumask will be zero.
|
||||
*/
|
||||
cpumask_copy(data->cpumask_ipi, data->cpumask);
|
||||
raw_spin_lock_irqsave(&call_function.lock, flags);
|
||||
/*
|
||||
* Place entry at the _HEAD_ of the list, so that any cpu still
|
||||
|
@ -549,7 +560,7 @@ void smp_call_function_many(const struct cpumask *mask,
|
|||
smp_mb();
|
||||
|
||||
/* Send a message to all CPUs in the map */
|
||||
arch_send_call_function_ipi_mask(data->cpumask);
|
||||
arch_send_call_function_ipi_mask(data->cpumask_ipi);
|
||||
|
||||
/* Optionally wait for the CPUs to complete */
|
||||
if (wait)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue