Bill Holler wrote:
> Yes.  The scenario you described is correct.
>
> Additionally the interrupt service routine interrupts all CPUs that
> have expired at the time the ISR is running.  It is possible for
> multiple CPUs to expire at the same time, or at least by the time
> the HPET's ISR runs.
>
> poke_cpu() is used to send the IPI because of its low overhead.
>   

Nice. It would be interesting to know the incremental cost of the I/O 
APIC programming to have the HPET re-target a different CPU.
You could detect in the ISR whether or not the CPU upon which you are 
interrupting is already idle, and if so then do the extra I/O APIC work. 
If it's busy, you might not want to incur the extra cost of the 
re-programming....but then again, if it is busy...maybe you do so that 
you won't get bothered again a little while later by the next HPET 
interrupt. :)

-Eric

Reply via email to