提交 8c1addbc 编写于 作者: T Tony Luck

[IA64] Fix breakage from irq change

A few missed spots in ia64-land from this gigantic commit:

7d12e780Signed-off-by: NTony Luck <tony.luck@intel.com>
上级 49f19ce4
...@@ -194,8 +194,11 @@ void fixup_irqs(void) ...@@ -194,8 +194,11 @@ void fixup_irqs(void)
*/ */
for (irq=0; irq < NR_IRQS; irq++) { for (irq=0; irq < NR_IRQS; irq++) {
if (vectors_in_migration[irq]) { if (vectors_in_migration[irq]) {
struct pt_regs *old_regs = set_irq_regs(NULL);
vectors_in_migration[irq]=0; vectors_in_migration[irq]=0;
__do_IRQ(irq, NULL); __do_IRQ(irq);
set_irq_regs(old_regs);
} }
} }
......
...@@ -226,6 +226,8 @@ void ia64_process_pending_intr(void) ...@@ -226,6 +226,8 @@ void ia64_process_pending_intr(void)
*/ */
while (vector != IA64_SPURIOUS_INT_VECTOR) { while (vector != IA64_SPURIOUS_INT_VECTOR) {
if (!IS_RESCHEDULE(vector)) { if (!IS_RESCHEDULE(vector)) {
struct pt_regs *old_regs = set_irq_regs(NULL);
ia64_setreg(_IA64_REG_CR_TPR, vector); ia64_setreg(_IA64_REG_CR_TPR, vector);
ia64_srlz_d(); ia64_srlz_d();
...@@ -236,7 +238,8 @@ void ia64_process_pending_intr(void) ...@@ -236,7 +238,8 @@ void ia64_process_pending_intr(void)
* Probably could shared code. * Probably could shared code.
*/ */
vectors_in_migration[local_vector_to_irq(vector)]=0; vectors_in_migration[local_vector_to_irq(vector)]=0;
__do_IRQ(local_vector_to_irq(vector), NULL); __do_IRQ(local_vector_to_irq(vector));
set_irq_regs(old_regs);
/* /*
* Disable interrupts and send EOI * Disable interrupts and send EOI
...@@ -253,7 +256,7 @@ void ia64_process_pending_intr(void) ...@@ -253,7 +256,7 @@ void ia64_process_pending_intr(void)
#ifdef CONFIG_SMP #ifdef CONFIG_SMP
extern irqreturn_t handle_IPI (int irq, void *dev_id, struct pt_regs *regs); extern irqreturn_t handle_IPI (int irq, void *dev_id);
static struct irqaction ipi_irqaction = { static struct irqaction ipi_irqaction = {
.handler = handle_IPI, .handler = handle_IPI,
......
...@@ -36,7 +36,7 @@ extern irqreturn_t timer_interrupt(int irq, void *dev_id, struct pt_regs *regs); ...@@ -36,7 +36,7 @@ extern irqreturn_t timer_interrupt(int irq, void *dev_id, struct pt_regs *regs);
#define SN_LB_INT_WAR_INTERVAL 100 #define SN_LB_INT_WAR_INTERVAL 100
void sn_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs) void sn_timer_interrupt(int irq, void *dev_id)
{ {
/* LED blinking */ /* LED blinking */
if (!pda->hb_count--) { if (!pda->hb_count--) {
......
...@@ -674,7 +674,7 @@ static void sn_sal_timer_poll(unsigned long data) ...@@ -674,7 +674,7 @@ static void sn_sal_timer_poll(unsigned long data)
if (!port->sc_port.irq) { if (!port->sc_port.irq) {
spin_lock_irqsave(&port->sc_port.lock, flags); spin_lock_irqsave(&port->sc_port.lock, flags);
if (sn_process_input) if (sn_process_input)
sn_receive_chars(port, NULL, flags); sn_receive_chars(port, flags);
sn_transmit_chars(port, TRANSMIT_RAW); sn_transmit_chars(port, TRANSMIT_RAW);
spin_unlock_irqrestore(&port->sc_port.lock, flags); spin_unlock_irqrestore(&port->sc_port.lock, flags);
mod_timer(&port->sc_timer, mod_timer(&port->sc_timer,
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册