diff options
Diffstat (limited to 'arch')
| -rw-r--r-- | arch/ia64/sn/kernel/setup.c | 30 |
1 files changed, 19 insertions, 11 deletions
diff --git a/arch/ia64/sn/kernel/setup.c b/arch/ia64/sn/kernel/setup.c index 14908ad7db8c..6f8c5883716b 100644 --- a/arch/ia64/sn/kernel/setup.c +++ b/arch/ia64/sn/kernel/setup.c | |||
| @@ -49,6 +49,7 @@ | |||
| 49 | #include <asm/sn/clksupport.h> | 49 | #include <asm/sn/clksupport.h> |
| 50 | #include <asm/sn/sn_sal.h> | 50 | #include <asm/sn/sn_sal.h> |
| 51 | #include <asm/sn/geo.h> | 51 | #include <asm/sn/geo.h> |
| 52 | #include <asm/sn/sn_feature_sets.h> | ||
| 52 | #include "xtalk/xwidgetdev.h" | 53 | #include "xtalk/xwidgetdev.h" |
| 53 | #include "xtalk/hubdev.h" | 54 | #include "xtalk/hubdev.h" |
| 54 | #include <asm/sn/klconfig.h> | 55 | #include <asm/sn/klconfig.h> |
| @@ -97,6 +98,7 @@ EXPORT_SYMBOL(sn_region_size); | |||
| 97 | int sn_prom_type; /* 0=hardware, 1=medusa/realprom, 2=medusa/fakeprom */ | 98 | int sn_prom_type; /* 0=hardware, 1=medusa/realprom, 2=medusa/fakeprom */ |
| 98 | 99 | ||
| 99 | short physical_node_map[MAX_PHYSNODE_ID]; | 100 | short physical_node_map[MAX_PHYSNODE_ID]; |
| 101 | static unsigned long sn_prom_features[MAX_PROM_FEATURE_SETS]; | ||
| 100 | 102 | ||
| 101 | EXPORT_SYMBOL(physical_node_map); | 103 | EXPORT_SYMBOL(physical_node_map); |
| 102 | 104 | ||
| @@ -271,7 +273,10 @@ void __init sn_setup(char **cmdline_p) | |||
| 271 | u32 version = sn_sal_rev(); | 273 | u32 version = sn_sal_rev(); |
| 272 | extern void sn_cpu_init(void); | 274 | extern void sn_cpu_init(void); |
| 273 | 275 | ||
| 274 | ia64_sn_plat_set_error_handling_features(); | 276 | ia64_sn_plat_set_error_handling_features(); // obsolete |
| 277 | ia64_sn_set_os_feature(OSF_MCA_SLV_TO_OS_INIT_SLV); | ||
| 278 | ia64_sn_set_os_feature(OSF_FEAT_LOG_SBES); | ||
| 279 | |||
| 275 | 280 | ||
| 276 | #if defined(CONFIG_VT) && defined(CONFIG_VGA_CONSOLE) | 281 | #if defined(CONFIG_VT) && defined(CONFIG_VGA_CONSOLE) |
| 277 | /* | 282 | /* |
| @@ -314,16 +319,6 @@ void __init sn_setup(char **cmdline_p) | |||
| 314 | 319 | ||
| 315 | printk("SGI SAL version %x.%02x\n", version >> 8, version & 0x00FF); | 320 | printk("SGI SAL version %x.%02x\n", version >> 8, version & 0x00FF); |
| 316 | 321 | ||
| 317 | /* | ||
| 318 | * Confirm the SAL we're running on is recent enough... | ||
| 319 | */ | ||
| 320 | if (version < SN_SAL_MIN_VERSION) { | ||
| 321 | printk(KERN_ERR "This kernel needs SGI SAL version >= " | ||
| 322 | "%x.%02x\n", SN_SAL_MIN_VERSION >> 8, | ||
| 323 | SN_SAL_MIN_VERSION & 0x00FF); | ||
| 324 | panic("PROM version too old\n"); | ||
| 325 | } | ||
| 326 | |||
| 327 | master_nasid = boot_get_nasid(); | 322 | master_nasid = boot_get_nasid(); |
| 328 | 323 | ||
| 329 | status = | 324 | status = |
| @@ -480,6 +475,10 @@ void __init sn_cpu_init(void) | |||
| 480 | if (nodepdaindr[0] == NULL) | 475 | if (nodepdaindr[0] == NULL) |
| 481 | return; | 476 | return; |
| 482 | 477 | ||
| 478 | for (i = 0; i < MAX_PROM_FEATURE_SETS; i++) | ||
| 479 | if (ia64_sn_get_prom_feature_set(i, &sn_prom_features[i]) != 0) | ||
| 480 | break; | ||
| 481 | |||
| 483 | cpuid = smp_processor_id(); | 482 | cpuid = smp_processor_id(); |
| 484 | cpuphyid = get_sapicid(); | 483 | cpuphyid = get_sapicid(); |
| 485 | 484 | ||
| @@ -651,3 +650,12 @@ nasid_slice_to_cpuid(int nasid, int slice) | |||
| 651 | 650 | ||
| 652 | return -1; | 651 | return -1; |
| 653 | } | 652 | } |
| 653 | |||
| 654 | int sn_prom_feature_available(int id) | ||
| 655 | { | ||
| 656 | if (id >= BITS_PER_LONG * MAX_PROM_FEATURE_SETS) | ||
| 657 | return 0; | ||
| 658 | return test_bit(id, sn_prom_features); | ||
| 659 | } | ||
| 660 | EXPORT_SYMBOL(sn_prom_feature_available); | ||
| 661 | |||
