diff options
| -rw-r--r-- | arch/ia64/sn/kernel/setup.c | 10 | ||||
| -rw-r--r-- | include/asm-ia64/sn/sn_sal.h | 10 |
2 files changed, 18 insertions, 2 deletions
diff --git a/arch/ia64/sn/kernel/setup.c b/arch/ia64/sn/kernel/setup.c index 93577abae36d..97579348a549 100644 --- a/arch/ia64/sn/kernel/setup.c +++ b/arch/ia64/sn/kernel/setup.c | |||
| @@ -577,7 +577,8 @@ void __init sn_cpu_init(void) | |||
| 577 | int i; | 577 | int i; |
| 578 | static int wars_have_been_checked; | 578 | static int wars_have_been_checked; |
| 579 | 579 | ||
| 580 | if (smp_processor_id() == 0 && IS_MEDUSA()) { | 580 | cpuid = smp_processor_id(); |
| 581 | if (cpuid == 0 && IS_MEDUSA()) { | ||
| 581 | if (ia64_sn_is_fake_prom()) | 582 | if (ia64_sn_is_fake_prom()) |
| 582 | sn_prom_type = 2; | 583 | sn_prom_type = 2; |
| 583 | else | 584 | else |
| @@ -597,6 +598,12 @@ void __init sn_cpu_init(void) | |||
| 597 | sn_hub_info->as_shift = sn_hub_info->nasid_shift - 2; | 598 | sn_hub_info->as_shift = sn_hub_info->nasid_shift - 2; |
| 598 | 599 | ||
| 599 | /* | 600 | /* |
| 601 | * Don't check status. The SAL call is not supported on all PROMs | ||
| 602 | * but a failure is harmless. | ||
| 603 | */ | ||
| 604 | (void) ia64_sn_set_cpu_number(cpuid); | ||
| 605 | |||
| 606 | /* | ||
| 600 | * The boot cpu makes this call again after platform initialization is | 607 | * The boot cpu makes this call again after platform initialization is |
| 601 | * complete. | 608 | * complete. |
| 602 | */ | 609 | */ |
| @@ -607,7 +614,6 @@ void __init sn_cpu_init(void) | |||
| 607 | if (ia64_sn_get_prom_feature_set(i, &sn_prom_features[i]) != 0) | 614 | if (ia64_sn_get_prom_feature_set(i, &sn_prom_features[i]) != 0) |
| 608 | break; | 615 | break; |
| 609 | 616 | ||
| 610 | cpuid = smp_processor_id(); | ||
| 611 | cpuphyid = get_sapicid(); | 617 | cpuphyid = get_sapicid(); |
| 612 | 618 | ||
| 613 | if (ia64_sn_get_sapic_info(cpuphyid, &nasid, &subnode, &slice)) | 619 | if (ia64_sn_get_sapic_info(cpuphyid, &nasid, &subnode, &slice)) |
diff --git a/include/asm-ia64/sn/sn_sal.h b/include/asm-ia64/sn/sn_sal.h index cd490b20d592..bd4452bda357 100644 --- a/include/asm-ia64/sn/sn_sal.h +++ b/include/asm-ia64/sn/sn_sal.h | |||
| @@ -85,6 +85,7 @@ | |||
| 85 | #define SN_SAL_GET_PROM_FEATURE_SET 0x02000065 | 85 | #define SN_SAL_GET_PROM_FEATURE_SET 0x02000065 |
| 86 | #define SN_SAL_SET_OS_FEATURE_SET 0x02000066 | 86 | #define SN_SAL_SET_OS_FEATURE_SET 0x02000066 |
| 87 | #define SN_SAL_INJECT_ERROR 0x02000067 | 87 | #define SN_SAL_INJECT_ERROR 0x02000067 |
| 88 | #define SN_SAL_SET_CPU_NUMBER 0x02000068 | ||
| 88 | 89 | ||
| 89 | /* | 90 | /* |
| 90 | * Service-specific constants | 91 | * Service-specific constants |
| @@ -1150,4 +1151,13 @@ sn_inject_error(u64 paddr, u64 *data, u64 *ecc) | |||
| 1150 | local_irq_restore(irq_flags); | 1151 | local_irq_restore(irq_flags); |
| 1151 | return ret_stuff.status; | 1152 | return ret_stuff.status; |
| 1152 | } | 1153 | } |
| 1154 | |||
| 1155 | static inline int | ||
| 1156 | ia64_sn_set_cpu_number(int cpu) | ||
| 1157 | { | ||
| 1158 | struct ia64_sal_retval rv; | ||
| 1159 | |||
| 1160 | SAL_CALL_NOLOCK(rv, SN_SAL_SET_CPU_NUMBER, cpu, 0, 0, 0, 0, 0, 0); | ||
| 1161 | return rv.status; | ||
| 1162 | } | ||
| 1153 | #endif /* _ASM_IA64_SN_SN_SAL_H */ | 1163 | #endif /* _ASM_IA64_SN_SN_SAL_H */ |
