[dpdk-dev] [PATCH v3 2/7] vhost: get guest/host physical address mappings

linhaifeng haifeng.lin at huawei.com
Tue Nov 29 14:14:44 CET 2016


在 2016/10/9 15:27, Yuanhan Liu 写道:
> +static void
> +add_guest_pages(struct virtio_net *dev, struct virtio_memory_region *reg,
> +		uint64_t page_size)
> +{
> +	uint64_t reg_size = reg->size;
> +	uint64_t host_user_addr  = reg->host_user_addr;
> +	uint64_t guest_phys_addr = reg->guest_phys_addr;
> +	uint64_t host_phys_addr;
> +	uint64_t size;
> +
> +	host_phys_addr = rte_mem_virt2phy((void *)(uintptr_t)host_user_addr);
> +	size = page_size - (guest_phys_addr & (page_size - 1));
> +	size = RTE_MIN(size, reg_size);

Have you use 1G hugepage to create a VM with 25G memory?
When I try, vhost crashed, use below code fixed:

-	size = page_size - (guest_phys_addr & (page_size - 1));
-	size = RTE_MIN(size, reg_size);
+ 	size = reg_size % page_size;



More information about the dev mailing list