qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] Would virtio support 64 bit address for vring virtqueue


From: Xie, Huawei
Subject: Re: [Qemu-devel] Would virtio support 64 bit address for vring virtqueue?
Date: Wed, 28 Aug 2013 15:30:02 +0000

I know it is PFN, that is why I want to use the high 12bit for combined write 
in another reply, to fully address 64 bit address.
Is the 16TB address space what it is originally designed for? If it is, that 
will basically solve the problem. I will try later.
Thanks for reminder

-----Original Message-----
From: Laszlo Ersek [mailto:address@hidden 
Sent: Wednesday, August 28, 2013 7:46 PM
To: Xie, Huawei
Cc: Stefan Hajnoczi; address@hidden; address@hidden; Stefan Hajnoczi
Subject: Re: [Qemu-devel] Would virtio support 64 bit address for vring 
virtqueue?

On 08/28/13 11:22, Xie, Huawei wrote:
> Hi Stefan:
> I think you mention the descriptor address? I mean the vring PFN register.
> /* A 32-bit r/w PFN for the currently selected queue */
> #define VIRTIO_PCI_QUEUE_PFN          8
> 
> And the linux driver sample code:
> iowrite32(virt_to_phys(info->queue) >> VIRTIO_PCI_QUEUE_ADDR_SHIFT,
>                 vp_dev->ioaddr + VIRTIO_PCI_QUEUE_PFN);
> 
> -----Original Message-----
> From: Stefan Hajnoczi [mailto:address@hidden
> Sent: Wednesday, August 28, 2013 4:07 PM
> To: Xie, Huawei
> Cc: address@hidden; address@hidden; Stefan Hajnoczi
> Subject: Re: [Qemu-devel] Would virtio support 64 bit address for vring 
> virtqueue?
> 
> On Wed, Aug 28, 2013 at 03:18:39AM +0000, Xie, Huawei wrote:
>> I am developing virtio user space poll mode network driver. We allocate 
>> vring physical memory from huge page. On VMs with less than 4GB  memory, it 
>> works well.  But on VMs with like 8GB memory, huge page are all allocated 
>> from high end memory.
>> So would virtio support 64bit address for vring virtqueue?
> 
> The vring takes guest physical addresses and the C type is __u64 (see 
> /usr/include/linux/virtio_ring.h).  64-bit addresses are fine.

If you mean Queue Address field in the Virtio Header (section 2.2.2 in the 
virtio-0.9.5 specification), then please see 2.3 Virtqueue Configuration, step 
3. You have to divide the guest-phys address by 4096 and store the quotient. 
The Queue Address field takes a page frame number, not a page frame address.

This allows it to address up to 2^32 * 4096 == 16T bytes of RAM.

Laszlo




reply via email to

[Prev in Thread] Current Thread [Next in Thread]