Alignment Requirements

Callers of hypercall interface functions must specify the 64-bit guest physical address (GPA) of the input and output parameters. If the hypercall has no input or output parameters, the hypervisor ignores the corresponding GPA pointer.

The input and output parameter lists cannot overlap or cross page boundaries. Hypercall input and output pages must be GPA pages and not GPA overlay pages. If the virtual processor writes the input parameters to an overlay page and specifies a GPA within this page, hypervisor access to the input parameter list is undefined.

The hypervisor will validate that the calling partition can read from the input page before executing the requested hypercall. This validation consists of the following tests:

  • The specified GPA is mapped.

  • The GPA is marked readable.

If either of these tests fails, the hypervisor generates a memory intercept message. For more information about memory intercepts, see Memory Access Messages.

For hypercalls that have output parameters, the hypervisor will validate that the partition can write to the output page. This validation consists of the following tests:

  • The specified GPA is mapped.

  • The GPA is marked writable.

If either of these tests fails, the hypervisor tries to generate a memory intercept message. If the validation succeeds, the hypervisor locks the output GPA for the duration of the operation. Any attempt to remap or unmap this GPA will be deferred until after the hypercall is completed.

 

 

Send comments about this topic to Microsoft

Build date: 11/16/2013

Show:
© 2014 Microsoft. All rights reserved.