Commit 48e30fa0 authored by Dimitri Sivanich's avatar Dimitri Sivanich Committed by Tony Luck
Browse files

[IA64] genirq fixup for SGI/SN



This patch allows the system to boot and enables the console and at least
some hardware drivers, as well as some platform error handling.

Tested on a variety of SGI Altix system without issues.

Signed-off-by: default avatarDimitri Sivanich <sivanich@sgi.com>
Tested-by: default avatarRaymund Will <rw@suse.de>
Signed-off-by: default avatarTony Luck <tony.luck@intel.com>
parent 0f261ede
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -192,6 +192,7 @@ void hub_error_init(struct hubdev_info *hubdev_info)
		    hubdev_info);
		return;
	}
	irq_set_handler(SGI_II_ERROR, handle_level_irq);
	sn_set_err_irq_affinity(SGI_II_ERROR);
}

@@ -213,6 +214,7 @@ void ice_error_init(struct hubdev_info *hubdev_info)
                       hubdev_info);
		return;
	}
	irq_set_handler(SGI_TIO_ERROR, handle_level_irq);
	sn_set_err_irq_affinity(SGI_TIO_ERROR);
}
+2 −0
Original line number Diff line number Diff line
@@ -352,6 +352,8 @@ void sn_irq_fixup(struct pci_dev *pci_dev, struct sn_irq_info *sn_irq_info)
	spin_lock(&sn_irq_info_lock);
	list_add_rcu(&sn_irq_info->list, sn_irq_lh[sn_irq_info->irq_irq]);
	reserve_irq_vector(sn_irq_info->irq_irq);
	if (sn_irq_info->irq_int_bit != -1)
		irq_set_handler(sn_irq_info->irq_irq, handle_level_irq);
	spin_unlock(&sn_irq_info_lock);

	register_intr_pda(sn_irq_info);
+1 −0
Original line number Diff line number Diff line
@@ -146,6 +146,7 @@ pcibr_bus_fixup(struct pcibus_bussoft *prom_bussoft, struct pci_controller *cont
		printk(KERN_WARNING
		       "pcibr cannot allocate interrupt for error handler\n");
	}
	irq_set_handler(SGI_PCIASIC_ERROR, handle_level_irq);
	sn_set_err_irq_affinity(SGI_PCIASIC_ERROR);

	/* 
+1 −0
Original line number Diff line number Diff line
@@ -649,6 +649,7 @@ tioca_bus_fixup(struct pcibus_bussoft *prom_bussoft, struct pci_controller *cont
		       __func__, SGI_TIOCA_ERROR,
		       (int)tioca_common->ca_common.bs_persist_busnum);

	irq_set_handler(SGI_TIOCA_ERROR, handle_level_irq);
	sn_set_err_irq_affinity(SGI_TIOCA_ERROR);

	/* Setup locality information */
+1 −0
Original line number Diff line number Diff line
@@ -1037,6 +1037,7 @@ tioce_bus_fixup(struct pcibus_bussoft *prom_bussoft, struct pci_controller *cont
		       tioce_common->ce_pcibus.bs_persist_segment,
		       tioce_common->ce_pcibus.bs_persist_busnum);

	irq_set_handler(SGI_PCIASIC_ERROR, handle_level_irq);
	sn_set_err_irq_affinity(SGI_PCIASIC_ERROR);
	return tioce_common;
}
Loading