mirror of
https://github.com/cloud-hypervisor/cloud-hypervisor.git
synced 2026-08-05 02:19:16 +00:00
On Intel MSHV the memory-intercept guest_physical_address and the MSHV_VP_TRANSLATE_GVA ioctl both return a page-aligned GPA, while guest_virtual_address is byte-exact. Returning the cached/translated GPA unchanged made byte-sized MMIO land at BAR offset 0: virtio device_status writes (BAR+0x14) hit device_feature_select, so VIRTIO_F_VERSION_1 was never acked and virtio_blk/net/rng probes failed with -EINVAL, leaving the guest unable to mount rootfs. Splice gva & 0xfff into the returned GPA on both the intercept fast path and the translate_gva fallback, and relax the cached-GVA match to page granularity so it still hits for other byte offsets in the same page. This issue is reproducible on Intel machine, launching Cloud-Hypervisor on nested scenario, using the Linux Dom0 image as the guest image to turn on nested hypervisor into the guest. Assisted-by: Claude:Opus-4.7 Signed-off-by: Muminul Islam <muislam@microsoft.com>