From: Michael Kelley <[email protected]> Huge page mappings in the guest physical address space depend on having matching alignment of the userspace address in the parent partition and of the guest physical address. Add a comment that captures this information. See the link to the mailing list thread.
No code or functional change. Link: https://lore.kernel.org/linux-hyperv/[email protected]/T/#m0871d2cae9b297fd397ddb8459e534981307c7dc Signed-off-by: Michael Kelley <[email protected]> --- drivers/hv/mshv_root_main.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/drivers/hv/mshv_root_main.c b/drivers/hv/mshv_root_main.c index 681b58154d5e..bc738ff4508e 100644 --- a/drivers/hv/mshv_root_main.c +++ b/drivers/hv/mshv_root_main.c @@ -1389,6 +1389,20 @@ mshv_partition_ioctl_set_memory(struct mshv_partition *partition, if (mem.flags & BIT(MSHV_SET_MEM_BIT_UNMAP)) return mshv_unmap_user_memory(partition, mem); + /* + * If the userspace_addr and the guest physical address (as derived + * from the guest_pfn) have the same alignment modulo PMD huge page + * size, the MSHV driver can map any PMD huge pages to the guest + * physical address space as PMD huge pages. If the alignments do + * not match, PMD huge pages must be mapped as single pages in the + * guest physical address space. The MSHV driver does not enforce + * that the alignments match, and it invokes the hypervisor to set + * up correct functional mappings either way. See mshv_chunk_stride(). + * The caller of the ioctl is responsible for providing userspace_addr + * and guest_pfn values with matching alignments if it wants the guest + * to get the performance benefits of PMD huge page mappings of its + * physical address space to real system memory. + */ return mshv_map_user_memory(partition, mem); } -- 2.25.1
