Messages in this thread |  | | | Date | Mon, 19 May 2008 18:10:32 +0200 | | From | Clemens Ladisch <> | | Subject | Re: [PATCH] x86: Get irq for hpet timer | |
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
|  |