On Wed, Mar 11, 2026 at 04:31:41PM +0100, Mohamed Mediouni wrote:
> Thank you, I’ll test this further. Boot-tested it on an Alpine Linux VM but
> looks like
> that wasn’t enough...
>
> FYI I added a new callback interface in x86_emul_ops (mmu_gva_to_gpa) to
> support
> adding the Hyper-V page table walker, but if it’s anything like the WHP one
> it’s going to
> be very slow… which is why I moved to the new interface in the first place.
hmm, I quickly tried that and implemented a hook like this:
static MMUTranslateResult gva_to_gpa(CPUState *cpu, target_ulong gva,
uint64_t *gpa, MMUTranslateFlags flags)
{
uint64_t hv_flags = 0;
if (!x86_is_paging_mode(cpu)) {
*gpa = gva;
return MMU_TRANSLATE_SUCCESS;
}
if (flags & MMU_TRANSLATE_VALIDATE_WRITE) {
hv_flags = HV_TRANSLATE_GVA_VALIDATE_WRITE;
} else if (flags & MMU_TRANSLATE_VALIDATE_EXECUTE) {
hv_flags = HV_TRANSLATE_GVA_VALIDATE_EXECUTE;
} else {
hv_flags = HV_TRANSLATE_GVA_VALIDATE_READ;
}
if (translate_gva(cpu, gva, gpa, hv_flags) < 0) {
return MMU_TRANSLATE_PAGE_NOT_MAPPED;
}
return MMU_TRANSLATE_SUCCESS;
}
static const struct x86_emul_ops mshv_x86_emul_ops = {
.read_segment_descriptor = read_segment_descriptor,
.mmu_gva_to_gpa = gva_to_gpa,
};
but without explicitly disabling la57, I still see the same MMIO errors
during guest boot (ubuntu jammy). probably needs more investigation. I
think for now disabling la57 seems ok.