git://git.onelab.eu
/
linux-2.6.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
VServer 1.9.2 (patch-2.6.8.1-vs1.9.2.diff)
[linux-2.6.git]
/
arch
/
i386
/
kernel
/
smpboot.c
diff --git
a/arch/i386/kernel/smpboot.c
b/arch/i386/kernel/smpboot.c
index
45e8fba
..
1a9b081
100644
(file)
--- a/
arch/i386/kernel/smpboot.c
+++ b/
arch/i386/kernel/smpboot.c
@@
-47,7
+47,6
@@
#include <linux/delay.h>
#include <linux/mc146818rtc.h>
#include <linux/delay.h>
#include <linux/mc146818rtc.h>
-#include <asm/pgalloc.h>
#include <asm/tlbflush.h>
#include <asm/desc.h>
#include <asm/arch_hooks.h>
#include <asm/tlbflush.h>
#include <asm/desc.h>
#include <asm/arch_hooks.h>
@@
-83,6
+82,7
@@
int smp_threads_ready;
extern unsigned char trampoline_data [];
extern unsigned char trampoline_end [];
static unsigned char *trampoline_base;
extern unsigned char trampoline_data [];
extern unsigned char trampoline_end [];
static unsigned char *trampoline_base;
+static int trampoline_exec;
/*
* Currently trivial. Write the real->protected mode
/*
* Currently trivial. Write the real->protected mode
@@
-109,6
+109,10
@@
void __init smp_alloc_memory(void)
*/
if (__pa(trampoline_base) >= 0x9F000)
BUG();
*/
if (__pa(trampoline_base) >= 0x9F000)
BUG();
+ /*
+ * Make the SMP trampoline executable:
+ */
+ trampoline_exec = set_kernel_exec((unsigned long)trampoline_base, 1);
}
/*
}
/*
@@
-1193,7
+1197,9
@@
__init void arch_init_sched_domains(void)
int j;
cpumask_t nodemask;
struct sched_group *node = &sched_group_nodes[i];
int j;
cpumask_t nodemask;
struct sched_group *node = &sched_group_nodes[i];
- cpus_and(nodemask, node_to_cpumask(i), cpu_possible_map);
+ cpumask_t node_cpumask = node_to_cpumask(i);
+
+ cpus_and(nodemask, node_cpumask, cpu_possible_map);
if (cpus_empty(nodemask))
continue;
if (cpus_empty(nodemask))
continue;
@@
-1229,7
+1235,9
@@
__init void arch_init_sched_domains(void)
for (i = 0; i < MAX_NUMNODES; i++) {
struct sched_group *cpu = &sched_group_nodes[i];
cpumask_t nodemask;
for (i = 0; i < MAX_NUMNODES; i++) {
struct sched_group *cpu = &sched_group_nodes[i];
cpumask_t nodemask;
- cpus_and(nodemask, node_to_cpumask(i), cpu_possible_map);
+ cpumask_t node_cpumask = node_to_cpumask(i);
+
+ cpus_and(nodemask, node_cpumask, cpu_possible_map);
if (cpus_empty(nodemask))
continue;
if (cpus_empty(nodemask))
continue;
@@
-1372,6
+1380,10
@@
void __init smp_cpus_done(unsigned int max_cpus)
setup_ioapic_dest();
#endif
zap_low_mappings();
setup_ioapic_dest();
#endif
zap_low_mappings();
+ /*
+ * Disable executability of the SMP trampoline:
+ */
+ set_kernel_exec((unsigned long)trampoline_base, trampoline_exec);
}
void __init smp_intr_init(void)
}
void __init smp_intr_init(void)