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: Laszlo Ersek
Subject: Re: [Qemu-devel] Would virtio support 64 bit address for vring virtqueue?
Date: Wed, 28 Aug 2013 13:45:35 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130806 Thunderbird/17.0.8

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]