BTW, I assume the software logic for KVM to find the HPA with a given HVA (as you said like below) should be the same as the hardware logic in MMU to translate ``GPA -> [extended/nested page tables] -> HPA''.  If this is true, I cannot understand how KVM can find a correct HPA with an HVA (e.g., array[0]'s HVA is not 0x0000000000000081 in the last email) that is different from its corresponding GPA.

GPA -> [memslots] -> HVA -> [host page tables] -> HPA