Hypercall Loops
During a debugging session, guests often enter tight loops as they attempt to post or retrieve session data until they are successful. The calls to HvPostDebugData and HvRetrieveDebugData to post and retrieve debug data allow a guest to provide a hint to the hypervisor that the guest intends to behave this way. The hypervisor is aware of both the state of the debug session buffers and the characteristics (in particular, the speed) of the physical connection. The hypervisor can elect to use the hint under either of the following circumstances:
-
The guest attempts to retrieve data when the incoming data buffer is empty.
-
The guest attempts to post data when there is insufficient space in the outgoing data buffer.
In response to the hint, the hypervisor can use its knowledge of the physical connection and session state to perform one of the following operations:
-
Return control to the guest, which allows the guest to make another subsequent attempt (that is, another hypercall).
- Suspend the virtual processor for the amount of time that is specified by the caller. The hypervisor could terminate the suspension early if either of the following events occurred:
- The guest is retrieving debug data, and the hypervisor receives new incoming data.
- The guest is posting debug data, and adequate free outgoing buffer space has become available.
Send comments about this topic to Microsoft
Build date: 11/16/2013