access is directed to that overlay page. Otherwise, the access is directed to the underlying GPA page. When the hypervisor performs a guest page table walk either in response to a virtual processor memory access or a call to HvTranslateVirtualAddress, it might find that a page table is located on a GPA location associated with an overlay page. In this case, the hypervisor may choose to do any one of the following: generate a guest page fault, reference the contents of the overlay page, or reference the contents of the underlying GPA mapping. Because this behavior can vary from one hypervisor implementation to the next, it is strongly recommended that guests avoid this situation. GPA Data Types Map Page Flags The following flags are used with the HvMapGpaPages hypercall. typedef UINT32 HV_MAP_GPA_FLAGS; #define HV_MAP_GPA_READABLE 0x00000001 #define HV_MAP_GPA_WRITABLE 0x00000002 #define HV_MAP_GPA_EXECUTABLE 0x00000004 GPA Interfaces HvMapGpaPages The HvMapGpaPages hypercall maps one or more GPA pages within the GPA space to caller’s pages within the target GPA space. partition’s Wrapper Interface HV_STATUS HvMapGpaPages( __in HV_PARTITION_ID TargetPartitionId, __in HV_GPA_PAGE_NUMBER TargetGpaBase, __in HV_MAP_GPA_FLAGS MapFlags, __inout PUINT32 PageCount, __in_ecount(PageCount) PCHV_GPA_PAGE_NUMBER SourceGpaPageList ); Native Interface HvMapGpaPages [rep] Call Code = 0x004B Input Parameter Header 0 TargetPartitionId (8 bytes) 8 TargetGpaBase (8 bytes) 16 MapFlags (4 bytes) Padding (4 bytes) Input List Element 0 SourceGpaPage (8 bytes)
access is directed to that overlay page. Otherwise, the access is directed to the underlying GPA page. When the hypervisor performs a guest page table walk either in response to a virtual processor memory access or a call to HvTranslateVirtualAddress, it might find that a page table is located on a GPA location associated with an overlay page. In this case, the hypervisor may choose to do any one of the following: generate a guest page fault, reference the contents of the overlay page, or reference the contents of the underlying GPA mapping. Because this behavior can vary from one hypervisor implementation to the next, it is strongly recommended that guests avoid this situation. GPA Data Types Map Page Flags The following flags are used with the HvMapGpaPages hypercall. typedef UINT32 HV_MAP_GPA_FLAGS; #define HV_MAP_GPA_READABLE 0x00000001 #define HV_MAP_GPA_WRITABLE 0x00000002 #define HV_MAP_GPA_EXECUTABLE 0x00000004 GPA Interfaces HvMapGpaPages The HvMapGpaPages hypercall maps one or more GPA pages within the caller’s GPA space to pages within the target partition’s GPA space. Wrapper Interface HV_STATUS HvMapGpaPages( __in HV_PARTITION_ID TargetPartitionId, __in HV_GPA_PAGE_NUMBER TargetGpaBase, __in HV_MAP_GPA_FLAGS MapFlags, __inout PUINT32 PageCount, __in_ecount(PageCount) PCHV_GPA_PAGE_NUMBER SourceGpaPageList ); Native Interface HvMapGpaPages [rep] Call Code = 0x004B Input Parameter Header 0 TargetPartitionId (8 bytes) 8 TargetGpaBase (8 bytes) 16 MapFlags (4 bytes) Padding (4 bytes) Input List Element 0 SourceGpaPage (8 bytes)
Hypervisor%20Top%20Level%20Functional%20Specification%20v0_83.docx