Event Log Buffers Ready Notification

During typical event log operation, the hypervisor transitions buffers to the HvEventLogBufferStateComplete state and places the buffers at the end of a pending buffer list, awaiting guest notification. Buffers of the global class are placed onto a single, global list. Buffers of the local class are placed onto a per-logical processor list.

The hypervisor can place buffers into the HvEventLogBufferStateComplete state for either of the following reasons:

  • The buffer does not contain enough free space to record one more event.

  • The caller called the HvFlushEventLogBuffer hypercall function to request that the active buffers for the type be flushed.

When either the count of buffers on a pending buffer list reaches the threshold value or buffers are explicitly flushed by the guest, the hypervisor transitions the buffers to the HvEventLogBufferStateReady state and posts an "event log buffers ready" notification message to SINT0 of one of the root partition's virtual processors. For event log types that use the local buffer class, the virtual processor that the hypervisor chooses corresponds with the logical processor that produced the pending buffer list (root virtual processors have a hard affinity with logical processors, as described in Root Partition). The hypervisor will direct lists of pending global class buffers to any available virtual processor.

The message that the hypervisor posts includes both the event log type and the index of the first buffer in a notification buffer list. Buffers that are forwarded to the guest on the notification list are removed from the pending list and the count of pending buffers is reset to zero. Note that the number of actual buffers present on a notification list might exceed the threshold value. The hypervisor attempts to report as many ready buffers as possible with each message. For more information about buffer lists, see Completed Buffer Lists.

The guest should respond to the message by reading the content of each of the buffers (perhaps writing the data to disk) and then by calling the HvReleaseEventLogBuffer hypercall function to release each of the buffers back to the hypervisor so they will be returned to the free list and reused. Buffers on a notification list can be released to the hypervisor in any order. For more information about the notification message format, see Event Log Buffers Ready Message.

 

 

Send comments about this topic to Microsoft

Build date: 11/16/2013

Show:
© 2014 Microsoft. All rights reserved.