On Wed, 21 May 2008, Clemens Ladisch wrote:Edge-triggered lines are generally associated with legacy devices. It may not be possible to grab one without disturbing the other device. I have had a look at the relevant areas of ACPI and HPET specs and it looks pretty straightforward, although not all the information is recorded in system tables. Essentially you are free to choose an arbitrary interrupt supported by the HPET -- which you can find in the timer's routing capability (as the proposed patch is doing). However you are right you really want to select one which does not conflict with a legacy device, so it's probably best to avoid the legacy range altogether (worth noting as for example the system I have handy has the capability of its timer #2 set to 0x00f00800 -- here IRQ11 may not be safe to use) and then you have to check how many inputs beyond the legacy range are supported by the I/O APICs in the system -- you can have a look at mp_find_ioapic() to see how obtain that information and then you can call mp_register_gsi() on the interrupt line selected like this to set up routing in the I/O APIC as necessary. Level-triggered mode has to be used as the resulting interrupt entry may happen to be shared with a PCI interrupt. Though I have just noticed there is something wrong with the spec -- it says that "The interrupts are all active high." which precludes sharing, hmm... -- broken spec? If hardware designers actually followed it in this respect (I wouldn't be surprised as for some of them software is abstract enough a concept not to be bothered with, and then it is a spec after all), then I am afraid we need to have a way to get an exclusive reservation of an I/O APIC line. It could be tough with a system using fixed routing and reusing a legacy IRQ might be the only choice -- if supported by the HPET router, that is. Of course if the HPET supports MSI delivery and the kernel configuration has it enabled, then you can avoid all the hassle with finding an available IRQ line altogether. Maciej --
| Davide Libenzi | [patch 7/8] fdmap v2 - implement sys_socket2 |
| Greg Kroah-Hartman | [PATCH 018/196] coda: convert struct class_device to struct device |
| Bart Van Assche | Integration of SCST in the mainstream Linux kernel |
| David Newall | Re: Slow DOWN, please!!! |
git: | |
| Christoph Lameter | Network latency regressions from 2.6.22 to 2.6.29 |
| David Miller | Re: [PATCH] pkt_sched: Destroy gen estimators under rtnl_lock(). |
| Arjan van de Ven | Re: [GIT]: Networking |
| Gerrit Renker | [PATCH 27/37] dccp: Integration of dynamic feature activation - part 2 (server side) |
