Re: [PATCH] x86: Get irq for hpet timer

From: Clemens Ladisch
Date: Mon May 19 2008 - 12:10:52 EST


Kevin Hao wrote:
> + for (irq = find_first_bit(&cap, HPET_MAX_IRQ); irq < HPET_MAX_IRQ;
> + irq = find_next_bit(&cap, HPET_MAX_IRQ, 1 + irq)) {
> + if (request_irq(irq, hpet_interrupt, irq_flags,
> + devp->hd_name, (void *)devp))

This spams my log with interrupt sharing violations. As long as we do
not know that the interrupt slot is empty, we need IRQF_PROBE_SHARED
here.

Another problem: the interrupt controller doesn't get correctly
initialized for some interrupt line that didn't already have some
routing:
| $ cat /proc/interrupts
| CPU0
| 0: 63 IO-APIC-edge timer
| 1: 96 IO-APIC-edge i8042
| 2: 0 XT-PIC-XT hpet2
| 6: 3 IO-APIC-edge floppy
| 7: 0 IO-APIC-edge parport0
| 8: 3 IO-APIC-edge rtc
| 9: 0 IO-APIC-fasteoi acpi
| ...

Additionally, I vaguely remember that on X86, there is some funny stuff
going on with interrupt lines 0, 2 and 8 which means that the interrupt
number passed to request_irq() is not necessarily identical to the
hardware interrupt line.

I don't know which of these problems is responsible, or if I'm totally
wrong, but on my machine, interrupts from hpet2 do not arrive.


Regards,
Clemens
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/