diff options
author | Dean Nelson <dcn@sgi.com> | 2005-03-21 21:41:00 -0500 |
---|---|---|
committer | Tony Luck <tony.luck@intel.com> | 2005-05-03 15:07:46 -0400 |
commit | 2e34f07ff0c944399a6456e2d91cf0ca1d9a497c (patch) | |
tree | d09796e3f37d7cd809eceb5d931f1e2171a32f5b /arch | |
parent | ce0a3956b32650e229b68964c4400bbdc5ad3ca1 (diff) |
[PATCH] move cnodeid_to_nasid_table out of pda
Another step in the effort to eliminate the SN pda structure.
This patch moves the cnodeid_to_nasid_table field out of the pda,
making it a standalone per-cpu data item, and exports it so it can
be accessed by kernel modules.
Signed-off-by: Dean Nelson <dcn@sgi.com>
Signed-off-by: Tony Luck <tony.luck@intel.com>
Diffstat (limited to 'arch')
-rw-r--r-- | arch/ia64/sn/kernel/setup.c | 31 |
1 files changed, 17 insertions, 14 deletions
diff --git a/arch/ia64/sn/kernel/setup.c b/arch/ia64/sn/kernel/setup.c index d35f2a6f9c94..fea71ee891eb 100644 --- a/arch/ia64/sn/kernel/setup.c +++ b/arch/ia64/sn/kernel/setup.c | |||
@@ -3,7 +3,7 @@ | |||
3 | * License. See the file "COPYING" in the main directory of this archive | 3 | * License. See the file "COPYING" in the main directory of this archive |
4 | * for more details. | 4 | * for more details. |
5 | * | 5 | * |
6 | * Copyright (C) 1999,2001-2004 Silicon Graphics, Inc. All rights reserved. | 6 | * Copyright (C) 1999,2001-2005 Silicon Graphics, Inc. All rights reserved. |
7 | */ | 7 | */ |
8 | 8 | ||
9 | #include <linux/config.h> | 9 | #include <linux/config.h> |
@@ -73,6 +73,9 @@ EXPORT_SYMBOL(sn_rtc_cycles_per_second); | |||
73 | DEFINE_PER_CPU(struct sn_hub_info_s, __sn_hub_info); | 73 | DEFINE_PER_CPU(struct sn_hub_info_s, __sn_hub_info); |
74 | EXPORT_PER_CPU_SYMBOL(__sn_hub_info); | 74 | EXPORT_PER_CPU_SYMBOL(__sn_hub_info); |
75 | 75 | ||
76 | DEFINE_PER_CPU(short, __sn_cnodeid_to_nasid[MAX_NUMNODES]); | ||
77 | EXPORT_PER_CPU_SYMBOL(__sn_cnodeid_to_nasid); | ||
78 | |||
76 | partid_t sn_partid = -1; | 79 | partid_t sn_partid = -1; |
77 | EXPORT_SYMBOL(sn_partid); | 80 | EXPORT_SYMBOL(sn_partid); |
78 | char sn_system_serial_number_string[128]; | 81 | char sn_system_serial_number_string[128]; |
@@ -373,11 +376,11 @@ static void __init sn_init_pdas(char **cmdline_p) | |||
373 | { | 376 | { |
374 | cnodeid_t cnode; | 377 | cnodeid_t cnode; |
375 | 378 | ||
376 | memset(pda->cnodeid_to_nasid_table, -1, | 379 | memset(sn_cnodeid_to_nasid, -1, |
377 | sizeof(pda->cnodeid_to_nasid_table)); | 380 | sizeof(__ia64_per_cpu_var(__sn_cnodeid_to_nasid))); |
378 | for_each_online_node(cnode) | 381 | for_each_online_node(cnode) |
379 | pda->cnodeid_to_nasid_table[cnode] = | 382 | sn_cnodeid_to_nasid[cnode] = |
380 | pxm_to_nasid(nid_to_pxm_map[cnode]); | 383 | pxm_to_nasid(nid_to_pxm_map[cnode]); |
381 | 384 | ||
382 | numionodes = num_online_nodes(); | 385 | numionodes = num_online_nodes(); |
383 | scan_for_ionodes(); | 386 | scan_for_ionodes(); |
@@ -486,15 +489,18 @@ void __init sn_cpu_init(void) | |||
486 | pda->idle_flag = 0; | 489 | pda->idle_flag = 0; |
487 | 490 | ||
488 | if (cpuid != 0) { | 491 | if (cpuid != 0) { |
489 | memcpy(pda->cnodeid_to_nasid_table, | 492 | /* copy cpu 0's sn_cnodeid_to_nasid table to this cpu's */ |
490 | pdacpu(0)->cnodeid_to_nasid_table, | 493 | memcpy(sn_cnodeid_to_nasid, |
491 | sizeof(pda->cnodeid_to_nasid_table)); | 494 | (&per_cpu(__sn_cnodeid_to_nasid, 0)), |
495 | sizeof(__ia64_per_cpu_var(__sn_cnodeid_to_nasid))); | ||
492 | } | 496 | } |
493 | 497 | ||
494 | /* | 498 | /* |
495 | * Check for WARs. | 499 | * Check for WARs. |
496 | * Only needs to be done once, on BSP. | 500 | * Only needs to be done once, on BSP. |
497 | * Has to be done after loop above, because it uses pda.cnodeid_to_nasid_table[i]. | 501 | * Has to be done after loop above, because it uses this cpu's |
502 | * sn_cnodeid_to_nasid table which was just initialized if this | ||
503 | * isn't cpu 0. | ||
498 | * Has to be done before assignment below. | 504 | * Has to be done before assignment below. |
499 | */ | 505 | */ |
500 | if (!wars_have_been_checked) { | 506 | if (!wars_have_been_checked) { |
@@ -580,8 +586,7 @@ static void __init scan_for_ionodes(void) | |||
580 | brd = find_lboard_any(brd, KLTYPE_SNIA); | 586 | brd = find_lboard_any(brd, KLTYPE_SNIA); |
581 | 587 | ||
582 | while (brd) { | 588 | while (brd) { |
583 | pda->cnodeid_to_nasid_table[numionodes] = | 589 | sn_cnodeid_to_nasid[numionodes] = brd->brd_nasid; |
584 | brd->brd_nasid; | ||
585 | physical_node_map[brd->brd_nasid] = numionodes; | 590 | physical_node_map[brd->brd_nasid] = numionodes; |
586 | root_lboard[numionodes] = brd; | 591 | root_lboard[numionodes] = brd; |
587 | numionodes++; | 592 | numionodes++; |
@@ -602,8 +607,7 @@ static void __init scan_for_ionodes(void) | |||
602 | root_lboard[nasid_to_cnodeid(nasid)], | 607 | root_lboard[nasid_to_cnodeid(nasid)], |
603 | KLTYPE_TIO); | 608 | KLTYPE_TIO); |
604 | while (brd) { | 609 | while (brd) { |
605 | pda->cnodeid_to_nasid_table[numionodes] = | 610 | sn_cnodeid_to_nasid[numionodes] = brd->brd_nasid; |
606 | brd->brd_nasid; | ||
607 | physical_node_map[brd->brd_nasid] = numionodes; | 611 | physical_node_map[brd->brd_nasid] = numionodes; |
608 | root_lboard[numionodes] = brd; | 612 | root_lboard[numionodes] = brd; |
609 | numionodes++; | 613 | numionodes++; |
@@ -614,7 +618,6 @@ static void __init scan_for_ionodes(void) | |||
614 | brd = find_lboard_any(brd, KLTYPE_TIO); | 618 | brd = find_lboard_any(brd, KLTYPE_TIO); |
615 | } | 619 | } |
616 | } | 620 | } |
617 | |||
618 | } | 621 | } |
619 | 622 | ||
620 | int | 623 | int |