Trigger Types
Virtual interrupts are either edge-triggered or level-triggered. Edge-triggered interrupts are latched upon assertion and cannot be withdrawn. Level-triggered interrupts are not latched and can potentially be withdrawn by deasserting. The following table indicates, for each interrupt type that is defined in HV_INTERRUPT_TYPE, what the implicit interrupt trigger type is and whether software should specify a vector with the virtual interrupt in a call to the HvAssertVirtualInterrupt hypercall function.
Interrupt type | Vector applicable? | Trigger type |
---|---|---|
HvX64InterruptTypeNmi |
No |
Edge |
HvX64InterruptTypeInit |
No |
Edge |
HvX64InterruptTypeSipi |
Yes |
Edge |
HvX64InterruptTypeFixed |
Yes |
Edge or Level |
HvX64InterruptTypeLowestPriority |
Yes |
Edge or Level |
HvX64InterruptTypeExtInt |
Yes |
Level |
HvX64InterruptTypeSmi |
Yes |
Level |
Some time after a virtual interrupt is asserted, the virtual processor might acknowledge the virtual interrupt. Until then, software can deassert level-triggered virtual interrupts by calling HvAssertVirtualInterrupt with vector HV_INTERRUPT_VECTOR_NONE or can re-assert level-triggered virtual interrupts by calling HvAssertVirtualInterrupt again. Deasserting an edge-triggered interrupt is unnecessary and has no effect.
Send comments about this topic to Microsoft
Build date: 11/16/2013