![]() | |||||||||||||
Messages in this thread |
Maciej W. Rozycki wrote: > On Tue, 20 May 2008, Kevin Hao wrote: > > We can simply skip these special IRQ. :-) > > Does anyone has a better solution? > > Hmm, you probably want to skip all lines that are edge-triggered. > Otherwise you may have problems with sharing. HPET interrupts can be either edge or level triggered. Probably we should modify it according to the type of the interrupt line we're trying to grab. > Drivers for devices used with these edge-triggered lines may have > special provisions to permit sharing ... An edge-triggered HPET interrupt line is not shared (we set IRQF_SHARED only if the register says that it's level triggered). > This driver is quite platform-specific -- how about instead of blindly > probing for interrupt lines, you actually allocate one somehow in platform > code? I don't have much of a clue about that "somehow", but this sound like a good idea. ;-) I think hpet_reserve_platform_timers() might be the place for this. It gets called from hpet_late_init(), which is a fs_initcall, so I think we should be careful not to grab some unsharable interrupt that might be needed by some ISA device whose driver is initialized later. (This was a bug in 2.6.25-rc5: <http://bugzilla.kernel.org/show_bug.cgi?id=10382>) Regards, Clemens | ||||||||||||
| Last update: 2008-05-21 10:31 [from the cache] ©2003-2008 | |||||||||||||