aboutsummaryrefslogtreecommitdiffstats
path: root/arch/ia64/sn/kernel/huberror.c
diff options
context:
space:
mode:
authorJohn Keller <jpk@sgi.com>2007-08-22 20:32:06 -0400
committerTony Luck <tony.luck@intel.com>2007-09-01 05:49:57 -0400
commit6e9de18120988388cdae5097c09e774416d58745 (patch)
tree04f7de7bee8d38a4e871970afda136bb5ac853be /arch/ia64/sn/kernel/huberror.c
parent1aac0b5739ae192ee812eee09625ebfc08c2d760 (diff)
[IA64] SN: Add support for CPU disable
Add additional support for CPU disable on SN platforms. Correctly setup the smp_affinity mask for I/O error IRQs. Restrict the use of the feature to Altix 4000 and 450 systems running with a CPU disable capable PROM, and do not allow disabling of CPU 0. Signed-off-by: John Keller <jpk@sgi.com> Signed-off-by: Tony Luck <tony.luck@intel.com>
Diffstat (limited to 'arch/ia64/sn/kernel/huberror.c')
-rw-r--r--arch/ia64/sn/kernel/huberror.c14
1 files changed, 10 insertions, 4 deletions
diff --git a/arch/ia64/sn/kernel/huberror.c b/arch/ia64/sn/kernel/huberror.c
index 2c3f9dfca78b..b663168da55c 100644
--- a/arch/ia64/sn/kernel/huberror.c
+++ b/arch/ia64/sn/kernel/huberror.c
@@ -185,11 +185,14 @@ void hubiio_crb_error_handler(struct hubdev_info *hubdev_info)
185 */ 185 */
186void hub_error_init(struct hubdev_info *hubdev_info) 186void hub_error_init(struct hubdev_info *hubdev_info)
187{ 187{
188
188 if (request_irq(SGI_II_ERROR, hub_eint_handler, IRQF_SHARED, 189 if (request_irq(SGI_II_ERROR, hub_eint_handler, IRQF_SHARED,
189 "SN_hub_error", (void *)hubdev_info)) 190 "SN_hub_error", (void *)hubdev_info)) {
190 printk("hub_error_init: Failed to request_irq for 0x%p\n", 191 printk("hub_error_init: Failed to request_irq for 0x%p\n",
191 hubdev_info); 192 hubdev_info);
192 return; 193 return;
194 }
195 sn_set_err_irq_affinity(SGI_II_ERROR);
193} 196}
194 197
195 198
@@ -202,11 +205,14 @@ void hub_error_init(struct hubdev_info *hubdev_info)
202 */ 205 */
203void ice_error_init(struct hubdev_info *hubdev_info) 206void ice_error_init(struct hubdev_info *hubdev_info)
204{ 207{
208
205 if (request_irq 209 if (request_irq
206 (SGI_TIO_ERROR, (void *)hub_eint_handler, IRQF_SHARED, "SN_TIO_error", 210 (SGI_TIO_ERROR, (void *)hub_eint_handler, IRQF_SHARED, "SN_TIO_error",
207 (void *)hubdev_info)) 211 (void *)hubdev_info)) {
208 printk("ice_error_init: request_irq() error hubdev_info 0x%p\n", 212 printk("ice_error_init: request_irq() error hubdev_info 0x%p\n",
209 hubdev_info); 213 hubdev_info);
210 return; 214 return;
215 }
216 sn_set_err_irq_affinity(SGI_TIO_ERROR);
211} 217}
212 218