[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: Dimitri Sivanich <sivanich@sgi.com> Tested-by: Raymund Will <rw@suse.de> Signed-off-by: Tony Luck <tony.luck@intel.com>
This commit is contained in:
Родитель
0f261ede31
Коммит
48e30fa073
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
||||
/*
|
||||
|
|
|
@ -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 */
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -743,6 +743,7 @@ static void __init sn_sal_switch_to_interrupts(struct sn_cons_port *port)
|
|||
spin_lock_irqsave(&port->sc_port.lock, flags);
|
||||
port->sc_port.irq = SGI_UART_VECTOR;
|
||||
port->sc_ops = &intr_ops;
|
||||
irq_set_handler(port->sc_port.irq, handle_level_irq);
|
||||
|
||||
/* turn on receive interrupts */
|
||||
ia64_sn_console_intr_enable(SAL_CONSOLE_INTR_RECV);
|
||||
|
|
Загрузка…
Ссылка в новой задаче