···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>2324static void force_interrupt(int irq);25static 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_SMP237+void sn_set_err_irq_affinity(unsigned int irq)238+{239+ /*240+ * On systems which support CPU disabling (SHub2), all error interrupts241+ * 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+#else247+void sn_set_err_irq_affinity(unsigned int irq) { }248+#endif249250static void251sn_mask_irq(unsigned int irq)
···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>4445DEFINE_PER_CPU(struct ptc_stats, ptcstats);46DECLARE_PER_CPU(struct ptc_stats, ptcstats);···428429 sn_send_IPI_phys(nasid, physid, vector, delivery_mode);430}431+432+#ifdef CONFIG_HOTPLUG_CPU433+/**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 PROM438+ * 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+ else446+ printk(KERN_WARNING447+ "Disabling the boot processor is not allowed.\n");448+449+ } else450+ printk(KERN_WARNING451+ "CPU disable is not supported on this system.\n");452+453+ return false;454+}455+#endif /* CONFIG_HOTPLUG_CPU */456457#ifdef CONFIG_PROC_FS458
···145 printk(KERN_WARNING146 "pcibr cannot allocate interrupt for error handler\n");147 }0148149 /* 150 * Update the Bridge with the "kernel" pagesize
···145 printk(KERN_WARNING146 "pcibr cannot allocate interrupt for error handler\n");147 }148+ sn_set_err_irq_affinity(SGI_PCIASIC_ERROR);149150 /* 151 * Update the Bridge with the "kernel" pagesize