Skip to content

Commit

Permalink
x86: reduce memory and intra-node effects
Browse files Browse the repository at this point in the history
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
  • Loading branch information
Mike Travis authored and Ingo Molnar committed Jan 30, 2008
1 parent 4dbf7af commit 693e3c5
Show file tree
Hide file tree
Showing 5 changed files with 14 additions and 9 deletions.
5 changes: 3 additions & 2 deletions arch/x86/kernel/apic_64.c
Original file line number Diff line number Diff line change
Expand Up @@ -1175,14 +1175,15 @@ __cpuinit int apic_is_clustered_box(void)
{
int i, clusters, zeros;
unsigned id;
u16 *bios_cpu_apicid = x86_bios_cpu_apicid_early_ptr;
DECLARE_BITMAP(clustermap, NUM_APIC_CLUSTERS);

bitmap_zero(clustermap, NUM_APIC_CLUSTERS);

for (i = 0; i < NR_CPUS; i++) {
/* are we being called early in kernel startup? */
if (x86_bios_cpu_apicid_early_ptr) {
id = ((u16 *)x86_bios_cpu_apicid_early_ptr)[i];
if (bios_cpu_apicid) {
id = bios_cpu_apicid[i];
}
else if (i < nr_cpu_ids) {
if (cpu_present(i))
Expand Down
6 changes: 3 additions & 3 deletions arch/x86/kernel/mpparse_64.c
Original file line number Diff line number Diff line change
Expand Up @@ -122,16 +122,16 @@ static void __cpuinit MP_processor_info(struct mpc_config_processor *m)
physid_set(m->mpc_apicid, phys_cpu_present_map);
if (m->mpc_cpuflag & CPU_BOOTPROCESSOR) {
/*
* x86_bios_cpu_apicid is required to have processors listed
* x86_bios_cpu_apicid is required to have processors listed
* in same order as logical cpu numbers. Hence the first
* entry is BSP, and so on.
*/
cpu = 0;
}
/* are we being called early in kernel startup? */
if (x86_cpu_to_apicid_early_ptr) {
u16 *cpu_to_apicid = (u16 *)x86_cpu_to_apicid_early_ptr;
u16 *bios_cpu_apicid = (u16 *)x86_bios_cpu_apicid_early_ptr;
u16 *cpu_to_apicid = x86_cpu_to_apicid_early_ptr;
u16 *bios_cpu_apicid = x86_bios_cpu_apicid_early_ptr;

cpu_to_apicid[cpu] = m->mpc_apicid;
bios_cpu_apicid[cpu] = m->mpc_apicid;
Expand Down
2 changes: 1 addition & 1 deletion arch/x86/mm/numa_64.c
Original file line number Diff line number Diff line change
Expand Up @@ -562,7 +562,7 @@ __cpuinit void numa_add_cpu(int cpu)

void __cpuinit numa_set_node(int cpu, int node)
{
u16 *cpu_to_node_map = (u16 *)x86_cpu_to_node_map_early_ptr;
u16 *cpu_to_node_map = x86_cpu_to_node_map_early_ptr;

cpu_pda(cpu)->nodenumber = node;

Expand Down
8 changes: 6 additions & 2 deletions arch/x86/mm/srat_64.c
Original file line number Diff line number Diff line change
Expand Up @@ -346,8 +346,12 @@ int __init acpi_scan_nodes(unsigned long start, unsigned long end)
/* First clean up the node list */
for (i = 0; i < MAX_NUMNODES; i++) {
cutoff_node(i, start, end);
/* ZZZ why was this needed. At least add a comment */
if (nodes[i].end && (nodes[i].end - nodes[i].start) < NODE_MIN_SIZE) {
/*
* don't confuse VM with a node that doesn't have the
* minimum memory.
*/
if (nodes[i].end &&
(nodes[i].end - nodes[i].start) < NODE_MIN_SIZE) {
unparse_node(i);
node_set_offline(i);
}
Expand Down
2 changes: 1 addition & 1 deletion include/asm-x86/topology.h
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ extern cpumask_t node_to_cpumask_map[];
/* Returns the number of the node containing CPU 'cpu' */
static inline int cpu_to_node(int cpu)
{
u16 *cpu_to_node_map = (u16 *)x86_cpu_to_node_map_early_ptr;
u16 *cpu_to_node_map = x86_cpu_to_node_map_early_ptr;

if (cpu_to_node_map)
return cpu_to_node_map[cpu];
Expand Down

0 comments on commit 693e3c5

Please sign in to comment.