Re: MIPS, i8259 and spurious interrupts.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



hi,


>/************************************************************************************/
>/* Why am I not returning from the following
>call?                                  */
>/************************************************************************************/
>
>	printk("*** SP 1 irq: %d***\n", irq);
>	if (i8259A_irq_real(irq))
>		/*
>		 * oops, the IRQ _is_ in service according to the
>		 * 8259A - not spurious, go handle it.
>		 */
>	printk("*** SP 2 ***\n");
>		goto handle_real_irq;
do you really mean it? the goto is unconditional now?
but your output susgest that i8259A_irq_real never return true
>
>	{
>		static int spurious_irq_mask = 0;
>
>	printk("*** SP 3 ***\n");
>
>		/*
>		 * At this point we can be sure the IRQ is spurious,
>		 * lets ACK and report it. [once per IRQ]
>		 */
>	printk("*** SP 4 ***\n");
>
>		if (!(spurious_irq_mask & irqmask)) {
>			printk("spurious 8259A interrupt: IRQ%d.\n", irq);
>			spurious_irq_mask |= irqmask;
>		}
>	printk("*** SP 5 ***\n");
>
>		irq_err_count++;
>		/*
>		 * Theoretically we do not have to handle this IRQ,
>		 * but in Linux this does not cause problems and is
>		 * simpler for us.
>		 */
>	printk("*** SP 6 ***\n");
>
>		goto handle_real_irq;
>	}
>}
>
>
>Thanks in advance for any advice...
>
>-- 
>Scott A. McConnell

Regards
            Zhang Fuxin
            fxzhang@ict.ac.cn


[Index of Archives]     [Linux MIPS Home]     [LKML Archive]     [Linux ARM Kernel]     [Linux ARM]     [Linux]     [Git]     [Yosemite News]     [Linux SCSI]     [Linux Hams]

  Powered by Linux