Commit a340bf30 authored by Andy Grover's avatar Andy Grover

Merge groveronline.com:/root/bk/linux-2.5

into groveronline.com:/root/bk/linux-acpi
parents df9cf6c8 2b5d7502
...@@ -161,7 +161,7 @@ KAO --> ...@@ -161,7 +161,7 @@ KAO -->
</sect1> </sect1>
<sect1><title>MTRR Handling</title> <sect1><title>MTRR Handling</title>
!Earch/i386/kernel/mtrr.c !Earch/i386/kernel/cpu/mtrr/main.c
</sect1> </sect1>
<sect1><title>PCI Support Library</title> <sect1><title>PCI Support Library</title>
!Edrivers/pci/pci.c !Edrivers/pci/pci.c
......
...@@ -80,14 +80,14 @@ would have a contended child and we had assumed that no object is its ...@@ -80,14 +80,14 @@ would have a contended child and we had assumed that no object is its
own descendent. Moreover, there is exactly one cross-directory rename own descendent. Moreover, there is exactly one cross-directory rename
(see above). (see above).
Consider the object blocking the cross-directory rename. One of Consider the object blocking the cross-directory rename. One
its descendents is locked by cross-directory rename (otherwise we would again of its descendents is locked by cross-directory rename (otherwise we
have an infinite set of of contended objects). But that means that means would again have an infinite set of of contended objects). But that
that cross-directory rename is taking locks out of order. Due to (2) the means that cross-directory rename is taking locks out of order. Due
order hadn't changed since we had acquired filesystem lock. But locking to (2) the order hadn't changed since we had acquired filesystem lock.
rules for cross-directory rename guarantee that we do not try to acquire But locking rules for cross-directory rename guarantee that we do not
lock on descendent before the lock on ancestor. Contradiction. I.e. try to acquire lock on descendent before the lock on ancestor.
deadlock is impossible. Q.E.D. Contradiction. I.e. deadlock is impossible. Q.E.D.
These operations are guaranteed to avoid loop creation. Indeed, These operations are guaranteed to avoid loop creation. Indeed,
......
...@@ -69,7 +69,7 @@ Locking change: ->s_vfs_rename_sem is taken only by cross-directory renames. ...@@ -69,7 +69,7 @@ Locking change: ->s_vfs_rename_sem is taken only by cross-directory renames.
Most likely there is no need to change anything, but if you relied on Most likely there is no need to change anything, but if you relied on
global exclusion between renames for some internal purpose - you need to global exclusion between renames for some internal purpose - you need to
change your internal locking. Otherwise exclusion warranties remain the change your internal locking. Otherwise exclusion warranties remain the
same (i.e. parents are victim are locked, etc.). same (i.e. parents and victim are locked, etc.).
--- ---
[informational] [informational]
......
...@@ -156,6 +156,7 @@ static void __init init_intel(struct cpuinfo_x86 *c) ...@@ -156,6 +156,7 @@ static void __init init_intel(struct cpuinfo_x86 *c)
} }
#endif #endif
get_model_name(c);
if (c->cpuid_level > 1) { if (c->cpuid_level > 1) {
/* supports eax=2 call */ /* supports eax=2 call */
......
...@@ -490,15 +490,6 @@ static void __init do_initcalls(void) ...@@ -490,15 +490,6 @@ static void __init do_initcalls(void)
*/ */
static void __init do_basic_setup(void) static void __init do_basic_setup(void)
{ {
#if defined(CONFIG_MTRR) /* Do this after SMP initialization */
/*
* We should probably create some architecture-dependent "fixup after
* everything is up" style function where this would belong better
* than in init/main.c..
*/
mtrr_init();
#endif
#ifdef CONFIG_SYSCTL #ifdef CONFIG_SYSCTL
sysctl_init(); sysctl_init();
#endif #endif
...@@ -545,6 +536,15 @@ static int init(void * unused) ...@@ -545,6 +536,15 @@ static int init(void * unused)
*/ */
child_reaper = current; child_reaper = current;
#if defined(CONFIG_MTRR) /* Do this after SMP initialization */
/*
* We should probably create some architecture-dependent "fixup after
* everything is up" style function where this would belong better
* than in init/main.c..
*/
mtrr_init();
#endif
/* Sets up cpus_possible() */ /* Sets up cpus_possible() */
smp_prepare_cpus(max_cpus); smp_prepare_cpus(max_cpus);
......
...@@ -1220,6 +1220,7 @@ int get_signal_to_deliver(siginfo_t *info, struct pt_regs *regs) ...@@ -1220,6 +1220,7 @@ int get_signal_to_deliver(siginfo_t *info, struct pt_regs *regs)
#endif #endif
EXPORT_SYMBOL(recalc_sigpending);
EXPORT_SYMBOL(dequeue_signal); EXPORT_SYMBOL(dequeue_signal);
EXPORT_SYMBOL(flush_signals); EXPORT_SYMBOL(flush_signals);
EXPORT_SYMBOL(force_sig); EXPORT_SYMBOL(force_sig);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment