Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6

+137 -37
+14 -2
arch/ia64/hp/sim/hpsim_console.c
··· 21 #include <asm/machvec.h> 22 #include <asm/pgtable.h> 23 #include <asm/sal.h> 24 25 #include "hpsim_ssc.h" 26 ··· 29 static void simcons_write (struct console *, const char *, unsigned); 30 static struct tty_driver *simcons_console_device (struct console *, int *); 31 32 - struct console hpsim_cons = { 33 .name = "simcons", 34 .write = simcons_write, 35 .device = simcons_console_device, ··· 59 60 static struct tty_driver *simcons_console_device (struct console *c, int *index) 61 { 62 - extern struct tty_driver *hp_simserial_driver; 63 *index = c->index; 64 return hp_simserial_driver; 65 }
··· 21 #include <asm/machvec.h> 22 #include <asm/pgtable.h> 23 #include <asm/sal.h> 24 + #include <asm/hpsim.h> 25 26 #include "hpsim_ssc.h" 27 ··· 28 static void simcons_write (struct console *, const char *, unsigned); 29 static struct tty_driver *simcons_console_device (struct console *, int *); 30 31 + static struct console hpsim_cons = { 32 .name = "simcons", 33 .write = simcons_write, 34 .device = simcons_console_device, ··· 58 59 static struct tty_driver *simcons_console_device (struct console *c, int *index) 60 { 61 *index = c->index; 62 return hp_simserial_driver; 63 + } 64 + 65 + int simcons_register(void) 66 + { 67 + if (!ia64_platform_is("hpsim")) 68 + return 1; 69 + 70 + if (hpsim_cons.flags & CON_ENABLED) 71 + return 1; 72 + 73 + register_console(&hpsim_cons); 74 + return 0; 75 }
+2 -7
arch/ia64/hp/sim/hpsim_setup.c
··· 21 #include <asm/machvec.h> 22 #include <asm/pgtable.h> 23 #include <asm/sal.h> 24 25 #include "hpsim_ssc.h" 26 ··· 42 { 43 ROOT_DEV = Root_SDA1; /* default to first SCSI drive */ 44 45 - #ifdef CONFIG_HP_SIMSERIAL_CONSOLE 46 - { 47 - extern struct console hpsim_cons; 48 - if (ia64_platform_is("hpsim")) 49 - register_console(&hpsim_cons); 50 - } 51 - #endif 52 }
··· 21 #include <asm/machvec.h> 22 #include <asm/pgtable.h> 23 #include <asm/sal.h> 24 + #include <asm/hpsim.h> 25 26 #include "hpsim_ssc.h" 27 ··· 41 { 42 ROOT_DEV = Root_SDA1; /* default to first SCSI drive */ 43 44 + simcons_register(); 45 }
+3 -9
arch/ia64/hp/sim/simeth.c
··· 22 #include <linux/bitops.h> 23 #include <asm/system.h> 24 #include <asm/irq.h> 25 26 #define SIMETH_RECV_MAX 10 27 ··· 37 */ 38 #define SIMETH_FRAME_SIZE ETH_FRAME_LEN 39 40 - 41 - #define SSC_NETDEV_PROBE 100 42 - #define SSC_NETDEV_SEND 101 43 - #define SSC_NETDEV_RECV 102 44 - #define SSC_NETDEV_ATTACH 103 45 - #define SSC_NETDEV_DETACH 104 46 47 #define NETWORK_INTR 8 48 ··· 120 121 return r; 122 } 123 - 124 - extern long ia64_ssc (long, long, long, long, int); 125 - extern void ia64_ssc_connect_irq (long intr, long irq); 126 127 static inline int 128 netdev_probe(char *name, unsigned char *ether)
··· 22 #include <linux/bitops.h> 23 #include <asm/system.h> 24 #include <asm/irq.h> 25 + #include <asm/hpsim.h> 26 + 27 + #include "hpsim_ssc.h" 28 29 #define SIMETH_RECV_MAX 10 30 ··· 34 */ 35 #define SIMETH_FRAME_SIZE ETH_FRAME_LEN 36 37 38 #define NETWORK_INTR 8 39 ··· 123 124 return r; 125 } 126 127 static inline int 128 netdev_probe(char *name, unsigned char *ether)
+1 -2
arch/ia64/hp/sim/simscsi.c
··· 14 #include <linux/kernel.h> 15 #include <linux/timer.h> 16 #include <asm/irq.h> 17 18 #include <scsi/scsi.h> 19 #include <scsi/scsi_cmnd.h> ··· 59 int fd; 60 unsigned count; 61 }; 62 - 63 - extern long ia64_ssc (long arg0, long arg1, long arg2, long arg3, int nr); 64 65 static int desc[16] = { 66 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
··· 14 #include <linux/kernel.h> 15 #include <linux/timer.h> 16 #include <asm/irq.h> 17 + #include "hpsim_ssc.h" 18 19 #include <scsi/scsi.h> 20 #include <scsi/scsi_cmnd.h> ··· 58 int fd; 59 unsigned count; 60 }; 61 62 static int desc[16] = { 63 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
+22 -6
arch/ia64/kernel/irq_ia64.c
··· 82 }; 83 84 DEFINE_PER_CPU(int[IA64_NUM_VECTORS], vector_irq) = { 85 - [0 ... IA64_NUM_VECTORS - 1] = IA64_SPURIOUS_INT_VECTOR 86 }; 87 88 static cpumask_t vector_table[IA64_NUM_VECTORS] = { ··· 179 domain = cfg->domain; 180 cpus_and(mask, cfg->domain, cpu_online_map); 181 for_each_cpu_mask(cpu, mask) 182 - per_cpu(vector_irq, cpu)[vector] = IA64_SPURIOUS_INT_VECTOR; 183 cfg->vector = IRQ_VECTOR_UNASSIGNED; 184 cfg->domain = CPU_MASK_NONE; 185 irq_status[irq] = IRQ_UNUSED; ··· 249 250 /* Clear vector_irq */ 251 for (vector = 0; vector < IA64_NUM_VECTORS; ++vector) 252 - per_cpu(vector_irq, cpu)[vector] = IA64_SPURIOUS_INT_VECTOR; 253 /* Mark the inuse vectors */ 254 for (irq = 0; irq < NR_IRQS; ++irq) { 255 if (!cpu_isset(cpu, irq_cfg[irq].domain)) ··· 432 } else if (unlikely(IS_RESCHEDULE(vector))) 433 kstat_this_cpu.irqs[vector]++; 434 else { 435 ia64_setreg(_IA64_REG_CR_TPR, vector); 436 ia64_srlz_d(); 437 438 - generic_handle_irq(local_vector_to_irq(vector)); 439 440 /* 441 * Disable interrupts and send EOI: ··· 491 kstat_this_cpu.irqs[vector]++; 492 else { 493 struct pt_regs *old_regs = set_irq_regs(NULL); 494 495 ia64_setreg(_IA64_REG_CR_TPR, vector); 496 ia64_srlz_d(); ··· 502 * it will work. I hope it works!. 503 * Probably could shared code. 504 */ 505 - vectors_in_migration[local_vector_to_irq(vector)]=0; 506 - generic_handle_irq(local_vector_to_irq(vector)); 507 set_irq_regs(old_regs); 508 509 /*
··· 82 }; 83 84 DEFINE_PER_CPU(int[IA64_NUM_VECTORS], vector_irq) = { 85 + [0 ... IA64_NUM_VECTORS - 1] = -1 86 }; 87 88 static cpumask_t vector_table[IA64_NUM_VECTORS] = { ··· 179 domain = cfg->domain; 180 cpus_and(mask, cfg->domain, cpu_online_map); 181 for_each_cpu_mask(cpu, mask) 182 + per_cpu(vector_irq, cpu)[vector] = -1; 183 cfg->vector = IRQ_VECTOR_UNASSIGNED; 184 cfg->domain = CPU_MASK_NONE; 185 irq_status[irq] = IRQ_UNUSED; ··· 249 250 /* Clear vector_irq */ 251 for (vector = 0; vector < IA64_NUM_VECTORS; ++vector) 252 + per_cpu(vector_irq, cpu)[vector] = -1; 253 /* Mark the inuse vectors */ 254 for (irq = 0; irq < NR_IRQS; ++irq) { 255 if (!cpu_isset(cpu, irq_cfg[irq].domain)) ··· 432 } else if (unlikely(IS_RESCHEDULE(vector))) 433 kstat_this_cpu.irqs[vector]++; 434 else { 435 + int irq = local_vector_to_irq(vector); 436 + 437 ia64_setreg(_IA64_REG_CR_TPR, vector); 438 ia64_srlz_d(); 439 440 + if (unlikely(irq < 0)) { 441 + printk(KERN_ERR "%s: Unexpected interrupt " 442 + "vector %d on CPU %d is not mapped " 443 + "to any IRQ!\n", __FUNCTION__, vector, 444 + smp_processor_id()); 445 + } else 446 + generic_handle_irq(irq); 447 448 /* 449 * Disable interrupts and send EOI: ··· 483 kstat_this_cpu.irqs[vector]++; 484 else { 485 struct pt_regs *old_regs = set_irq_regs(NULL); 486 + int irq = local_vector_to_irq(vector); 487 488 ia64_setreg(_IA64_REG_CR_TPR, vector); 489 ia64_srlz_d(); ··· 493 * it will work. I hope it works!. 494 * Probably could shared code. 495 */ 496 + if (unlikely(irq < 0)) { 497 + printk(KERN_ERR "%s: Unexpected interrupt " 498 + "vector %d on CPU %d not being mapped " 499 + "to any IRQ!!\n", __FUNCTION__, vector, 500 + smp_processor_id()); 501 + } else { 502 + vectors_in_migration[irq]=0; 503 + generic_handle_irq(irq); 504 + } 505 set_irq_regs(old_regs); 506 507 /*
+7 -6
arch/ia64/kernel/setup.c
··· 60 #include <asm/smp.h> 61 #include <asm/system.h> 62 #include <asm/unistd.h> 63 64 #if defined(CONFIG_SMP) && (IA64_CPU_SIZE > PAGE_SIZE) 65 # error "struct cpuinfo_ia64 too big!" ··· 390 if (!efi_setup_pcdp_console(cmdline)) 391 earlycons++; 392 #endif 393 - #ifdef CONFIG_HP_SIMSERIAL_CONSOLE 394 - { 395 - extern struct console hpsim_cons; 396 - register_console(&hpsim_cons); 397 earlycons++; 398 - } 399 - #endif 400 401 return (earlycons) ? 0 : -1; 402 } ··· 956 957 /* clear TPR & XTP to enable all interrupt classes: */ 958 ia64_setreg(_IA64_REG_CR_TPR, 0); 959 #ifdef CONFIG_SMP 960 normal_xtp(); 961 #endif
··· 60 #include <asm/smp.h> 61 #include <asm/system.h> 62 #include <asm/unistd.h> 63 + #include <asm/hpsim.h> 64 65 #if defined(CONFIG_SMP) && (IA64_CPU_SIZE > PAGE_SIZE) 66 # error "struct cpuinfo_ia64 too big!" ··· 389 if (!efi_setup_pcdp_console(cmdline)) 390 earlycons++; 391 #endif 392 + if (!simcons_register()) 393 earlycons++; 394 395 return (earlycons) ? 0 : -1; 396 } ··· 960 961 /* clear TPR & XTP to enable all interrupt classes: */ 962 ia64_setreg(_IA64_REG_CR_TPR, 0); 963 + 964 + /* Clear any pending interrupts left by SAL/EFI */ 965 + while (ia64_get_ivr() != IA64_SPURIOUS_INT_VECTOR) 966 + ia64_eoi(); 967 + 968 #ifdef CONFIG_SMP 969 normal_xtp(); 970 #endif
+6
arch/ia64/kernel/smpboot.c
··· 58 #include <asm/system.h> 59 #include <asm/tlbflush.h> 60 #include <asm/unistd.h> 61 62 #define SMP_DEBUG 0 63 ··· 729 if (cpu == 0 && !bsp_remove_ok) { 730 printk ("Your platform does not support removal of BSP\n"); 731 return (-EBUSY); 732 } 733 734 cpu_clear(cpu, cpu_online_map);
··· 58 #include <asm/system.h> 59 #include <asm/tlbflush.h> 60 #include <asm/unistd.h> 61 + #include <asm/sn/arch.h> 62 63 #define SMP_DEBUG 0 64 ··· 728 if (cpu == 0 && !bsp_remove_ok) { 729 printk ("Your platform does not support removal of BSP\n"); 730 return (-EBUSY); 731 + } 732 + 733 + if (ia64_platform_is("sn2")) { 734 + if (!sn_cpu_disable_allowed(cpu)) 735 + return -EBUSY; 736 } 737 738 cpu_clear(cpu, cpu_online_map);
+3
arch/ia64/mm/contig.c
··· 17 #include <linux/bootmem.h> 18 #include <linux/efi.h> 19 #include <linux/mm.h> 20 #include <linux/swap.h> 21 22 #include <asm/meminit.h> ··· 57 present = pgdat->node_present_pages; 58 for(i = 0; i < pgdat->node_spanned_pages; i++) { 59 struct page *page; 60 if (pfn_valid(pgdat->node_start_pfn + i)) 61 page = pfn_to_page(pgdat->node_start_pfn + i); 62 else {
··· 17 #include <linux/bootmem.h> 18 #include <linux/efi.h> 19 #include <linux/mm.h> 20 + #include <linux/nmi.h> 21 #include <linux/swap.h> 22 23 #include <asm/meminit.h> ··· 56 present = pgdat->node_present_pages; 57 for(i = 0; i < pgdat->node_spanned_pages; i++) { 58 struct page *page; 59 + if (unlikely(i % MAX_ORDER_NR_PAGES == 0)) 60 + touch_nmi_watchdog(); 61 if (pfn_valid(pgdat->node_start_pfn + i)) 62 page = pfn_to_page(pgdat->node_start_pfn + i); 63 else {
+3
arch/ia64/mm/discontig.c
··· 16 17 #include <linux/kernel.h> 18 #include <linux/mm.h> 19 #include <linux/swap.h> 20 #include <linux/bootmem.h> 21 #include <linux/acpi.h> ··· 534 present = pgdat->node_present_pages; 535 for(i = 0; i < pgdat->node_spanned_pages; i++) { 536 struct page *page; 537 if (pfn_valid(pgdat->node_start_pfn + i)) 538 page = pfn_to_page(pgdat->node_start_pfn + i); 539 else {
··· 16 17 #include <linux/kernel.h> 18 #include <linux/mm.h> 19 + #include <linux/nmi.h> 20 #include <linux/swap.h> 21 #include <linux/bootmem.h> 22 #include <linux/acpi.h> ··· 533 present = pgdat->node_present_pages; 534 for(i = 0; i < pgdat->node_spanned_pages; i++) { 535 struct page *page; 536 + if (unlikely(i % MAX_ORDER_NR_PAGES == 0)) 537 + touch_nmi_watchdog(); 538 if (pfn_valid(pgdat->node_start_pfn + i)) 539 page = pfn_to_page(pgdat->node_start_pfn + i); 540 else {
+10 -4
arch/ia64/sn/kernel/huberror.c
··· 185 */ 186 void hub_error_init(struct hubdev_info *hubdev_info) 187 { 188 if (request_irq(SGI_II_ERROR, hub_eint_handler, IRQF_SHARED, 189 - "SN_hub_error", (void *)hubdev_info)) 190 printk("hub_error_init: Failed to request_irq for 0x%p\n", 191 hubdev_info); 192 - return; 193 } 194 195 ··· 205 */ 206 void ice_error_init(struct hubdev_info *hubdev_info) 207 { 208 if (request_irq 209 (SGI_TIO_ERROR, (void *)hub_eint_handler, IRQF_SHARED, "SN_TIO_error", 210 - (void *)hubdev_info)) 211 printk("ice_error_init: request_irq() error hubdev_info 0x%p\n", 212 hubdev_info); 213 - return; 214 } 215
··· 185 */ 186 void hub_error_init(struct hubdev_info *hubdev_info) 187 { 188 + 189 if (request_irq(SGI_II_ERROR, hub_eint_handler, IRQF_SHARED, 190 + "SN_hub_error", (void *)hubdev_info)) { 191 printk("hub_error_init: Failed to request_irq for 0x%p\n", 192 hubdev_info); 193 + return; 194 + } 195 + sn_set_err_irq_affinity(SGI_II_ERROR); 196 } 197 198 ··· 202 */ 203 void ice_error_init(struct hubdev_info *hubdev_info) 204 { 205 + 206 if (request_irq 207 (SGI_TIO_ERROR, (void *)hub_eint_handler, IRQF_SHARED, "SN_TIO_error", 208 + (void *)hubdev_info)) { 209 printk("ice_error_init: request_irq() error hubdev_info 0x%p\n", 210 hubdev_info); 211 + return; 212 + } 213 + sn_set_err_irq_affinity(SGI_TIO_ERROR); 214 } 215
+15
arch/ia64/sn/kernel/irq.c
··· 19 #include <asm/sn/pcidev.h> 20 #include <asm/sn/shub_mmr.h> 21 #include <asm/sn/sn_sal.h> 22 23 static void force_interrupt(int irq); 24 static void register_intr_pda(struct sn_irq_info *sn_irq_info); ··· 233 sn_irq_lh[irq], list) 234 (void)sn_retarget_vector(sn_irq_info, nasid, slice); 235 } 236 237 static void 238 sn_mask_irq(unsigned int irq)
··· 19 #include <asm/sn/pcidev.h> 20 #include <asm/sn/shub_mmr.h> 21 #include <asm/sn/sn_sal.h> 22 + #include <asm/sn/sn_feature_sets.h> 23 24 static void force_interrupt(int irq); 25 static void register_intr_pda(struct sn_irq_info *sn_irq_info); ··· 232 sn_irq_lh[irq], list) 233 (void)sn_retarget_vector(sn_irq_info, nasid, slice); 234 } 235 + 236 + #ifdef CONFIG_SMP 237 + void sn_set_err_irq_affinity(unsigned int irq) 238 + { 239 + /* 240 + * On systems which support CPU disabling (SHub2), all error interrupts 241 + * are targetted at the boot CPU. 242 + */ 243 + if (is_shub2() && sn_prom_feature_available(PRF_CPU_DISABLE_SUPPORT)) 244 + set_irq_affinity_info(irq, cpu_physical_id(0), 0); 245 + } 246 + #else 247 + void sn_set_err_irq_affinity(unsigned int irq) { } 248 + #endif 249 250 static void 251 sn_mask_irq(unsigned int irq)
+26
arch/ia64/sn/kernel/sn2/sn2_smp.c
··· 40 #include <asm/sn/shub_mmr.h> 41 #include <asm/sn/nodepda.h> 42 #include <asm/sn/rw_mmr.h> 43 44 DEFINE_PER_CPU(struct ptc_stats, ptcstats); 45 DECLARE_PER_CPU(struct ptc_stats, ptcstats); ··· 429 430 sn_send_IPI_phys(nasid, physid, vector, delivery_mode); 431 } 432 433 #ifdef CONFIG_PROC_FS 434
··· 40 #include <asm/sn/shub_mmr.h> 41 #include <asm/sn/nodepda.h> 42 #include <asm/sn/rw_mmr.h> 43 + #include <asm/sn/sn_feature_sets.h> 44 45 DEFINE_PER_CPU(struct ptc_stats, ptcstats); 46 DECLARE_PER_CPU(struct ptc_stats, ptcstats); ··· 428 429 sn_send_IPI_phys(nasid, physid, vector, delivery_mode); 430 } 431 + 432 + #ifdef CONFIG_HOTPLUG_CPU 433 + /** 434 + * sn_cpu_disable_allowed - Determine if a CPU can be disabled. 435 + * @cpu - CPU that is requested to be disabled. 436 + * 437 + * CPU disable is only allowed on SHub2 systems running with a PROM 438 + * that supports CPU disable. It is not permitted to disable the boot processor. 439 + */ 440 + bool sn_cpu_disable_allowed(int cpu) 441 + { 442 + if (is_shub2() && sn_prom_feature_available(PRF_CPU_DISABLE_SUPPORT)) { 443 + if (cpu != 0) 444 + return true; 445 + else 446 + printk(KERN_WARNING 447 + "Disabling the boot processor is not allowed.\n"); 448 + 449 + } else 450 + printk(KERN_WARNING 451 + "CPU disable is not supported on this system.\n"); 452 + 453 + return false; 454 + } 455 + #endif /* CONFIG_HOTPLUG_CPU */ 456 457 #ifdef CONFIG_PROC_FS 458
+2 -1
arch/ia64/sn/kernel/sn2/sn_hwperf.c
··· 66 } 67 68 sz = sn_hwperf_obj_cnt * sizeof(struct sn_hwperf_object_info); 69 - if ((objbuf = (struct sn_hwperf_object_info *) vmalloc(sz)) == NULL) { 70 printk("sn_hwperf_enum_objects: vmalloc(%d) failed\n", (int)sz); 71 e = -ENOMEM; 72 goto out;
··· 66 } 67 68 sz = sn_hwperf_obj_cnt * sizeof(struct sn_hwperf_object_info); 69 + objbuf = vmalloc(sz); 70 + if (objbuf == NULL) { 71 printk("sn_hwperf_enum_objects: vmalloc(%d) failed\n", (int)sz); 72 e = -ENOMEM; 73 goto out;
+1
arch/ia64/sn/pci/pcibr/pcibr_provider.c
··· 145 printk(KERN_WARNING 146 "pcibr cannot allocate interrupt for error handler\n"); 147 } 148 149 /* 150 * Update the Bridge with the "kernel" pagesize
··· 145 printk(KERN_WARNING 146 "pcibr cannot allocate interrupt for error handler\n"); 147 } 148 + sn_set_err_irq_affinity(SGI_PCIASIC_ERROR); 149 150 /* 151 * Update the Bridge with the "kernel" pagesize
+2
arch/ia64/sn/pci/tioca_provider.c
··· 654 __FUNCTION__, SGI_TIOCA_ERROR, 655 (int)tioca_common->ca_common.bs_persist_busnum); 656 657 /* Setup locality information */ 658 controller->node = tioca_kern->ca_closest_node; 659 return tioca_common;
··· 654 __FUNCTION__, SGI_TIOCA_ERROR, 655 (int)tioca_common->ca_common.bs_persist_busnum); 656 657 + sn_set_err_irq_affinity(SGI_TIOCA_ERROR); 658 + 659 /* Setup locality information */ 660 controller->node = tioca_kern->ca_closest_node; 661 return tioca_common;
+1
arch/ia64/sn/pci/tioce_provider.c
··· 1034 tioce_common->ce_pcibus.bs_persist_segment, 1035 tioce_common->ce_pcibus.bs_persist_busnum); 1036 1037 return tioce_common; 1038 } 1039
··· 1034 tioce_common->ce_pcibus.bs_persist_segment, 1035 tioce_common->ce_pcibus.bs_persist_busnum); 1036 1037 + sn_set_err_irq_affinity(SGI_PCIASIC_ERROR); 1038 return tioce_common; 1039 } 1040
+16
include/asm-ia64/hpsim.h
···
··· 1 + #ifndef _ASMIA64_HPSIM_H 2 + #define _ASMIA64_HPSIM_H 3 + 4 + #ifndef CONFIG_HP_SIMSERIAL_CONSOLE 5 + static inline int simcons_register(void) { return 1; } 6 + #else 7 + int simcons_register(void); 8 + #endif 9 + 10 + struct tty_driver; 11 + extern struct tty_driver *hp_simserial_driver; 12 + 13 + void ia64_ssc_connect_irq(long intr, long irq); 14 + void ia64_ctl_trace(long on); 15 + 16 + #endif
+1
include/asm-ia64/sn/arch.h
··· 81 extern u8 sn_region_size; 82 83 extern void sn_flush_all_caches(long addr, long bytes); 84 85 #endif /* _ASM_IA64_SN_ARCH_H */
··· 81 extern u8 sn_region_size; 82 83 extern void sn_flush_all_caches(long addr, long bytes); 84 + extern bool sn_cpu_disable_allowed(int cpu); 85 86 #endif /* _ASM_IA64_SN_ARCH_H */
+1
include/asm-ia64/sn/intr.h
··· 60 int, nasid_t, int); 61 extern void sn_intr_free(nasid_t, int, struct sn_irq_info *); 62 extern struct sn_irq_info *sn_retarget_vector(struct sn_irq_info *, nasid_t, int); 63 extern struct list_head **sn_irq_lh; 64 65 #define CPU_VECTOR_TO_IRQ(cpuid,vector) (vector)
··· 60 int, nasid_t, int); 61 extern void sn_intr_free(nasid_t, int, struct sn_irq_info *); 62 extern struct sn_irq_info *sn_retarget_vector(struct sn_irq_info *, nasid_t, int); 63 + extern void sn_set_err_irq_affinity(unsigned int); 64 extern struct list_head **sn_irq_lh; 65 66 #define CPU_VECTOR_TO_IRQ(cpuid,vector) (vector)
+1
include/asm-ia64/sn/sn_feature_sets.h
··· 31 #define PRF_PAL_CACHE_FLUSH_SAFE 0 32 #define PRF_DEVICE_FLUSH_LIST 1 33 #define PRF_HOTPLUG_SUPPORT 2 34 35 /* --------------------- OS Features -------------------------------*/ 36
··· 31 #define PRF_PAL_CACHE_FLUSH_SAFE 0 32 #define PRF_DEVICE_FLUSH_LIST 1 33 #define PRF_HOTPLUG_SUPPORT 2 34 + #define PRF_CPU_DISABLE_SUPPORT 3 35 36 /* --------------------- OS Features -------------------------------*/ 37