On 25.05.22 01:32, zhenwei pi wrote: > > > On 5/25/22 03:35, Sean Christopherson wrote: >> On Fri, May 20, 2022, zhenwei pi wrote: >>> @@ -59,6 +60,12 @@ enum virtio_balloon_config_read { >>> VIRTIO_BALLOON_CONFIG_READ_CMD_ID = 0, >>> }; >>> >>> +/* the request body to commucate with host side */ >>> +struct __virtio_balloon_recover { >>> + struct virtio_balloon_recover vbr; >>> + __virtio32 pfns[VIRTIO_BALLOON_PAGES_PER_PAGE]; >> >> I assume this is copied from virtio_balloon.pfns, which also uses __virtio32, but >> isn't that horribly broken? PFNs are 'unsigned long', i.e. 64 bits on 64-bit kernels. >> x86-64 at least most definitely generates 64-bit PFNs. Unless there's magic I'm >> missing, page_to_balloon_pfn() will truncate PFNs and feed the host bad info. >> > > Yes, I also noticed this point, I suppose the balloon device can not > work on a virtual machine which has physical address larger than 16T. Yes, that's a historical artifact and we never ran into it in practice -- because 16TB VMs are still rare, especially when paired with virtio-balloon inflation/deflation. Most probably the guest should just stop inflating when hitting such a big PFN. In the future, we might want a proper sg interface instead. -- Thanks, David / dhildenb _______________________________________________ Virtualization mailing list Virtualization@xxxxxxxxxxxxxxxxxxxxxxxxxx https://lists.linuxfoundation.org/mailman/listinfo/virtualization