[libvirt] [RFC] require for suggestions on support for ivshmem device
Cam Macdonell
cam at cs.ualberta.ca
Thu May 15 19:00:26 UTC 2014
Thank you for bringing this up. I'm not experienced with the inner
workings of libvirt, but I'm happy to help in anyway I can in terms of
clarifying ivshmem's behaviour.
Cheers,
Cam
On Wed, May 14, 2014 at 2:23 AM, Wangrui (K) <moon.wangrui at huawei.com>wrote:
> Hi,
>
> Libvirt does not support ivshmem(Inter-VM Shared Memory) device recently,
> thus, I would like to know if there's any plan to support it in the future?
> If not, I would like to contribute a serial of patches to do so.
>
> On Jan 28, Wangyufei (James) asked about this question, and Daniel replied
> with 2 suggestions:
> 1. Libvirt should be capable of configuring the guest's xml on ivshmem.
> 2.An ivshmem daemon is needed to run on the host to support it, libvirt is
> recommended to provide such a daemon.
> Please refer to
> https://www.redhat.com/archives/libvir-list/2014-January/msg01335.htmlfor details.
>
> What I'll do later is the 1st suggestion, the 2nd one is left to be
> accomplished by someone else.
>
> Here is the detailed work I'll do to support configuration of the guest in
> libvirt:
> virDomainDefParseXML: parse ivshmem device xml when
> defining dom.xml
> virDomainDeviceInfoIterateInternal: iterate ivshmem devices
> qemuAssignDevicePCISlots: assign ivshmem device pci slots
> virDomainDefFormatInternal: format ivshmem device xml (Eg.
> virsh edit dom)
> virDomainDefFree: free ivshmem device def
>
> qemuBuildCommandLine: build ivshmem device command line when
> vm starts
> qemuAssignDeviceAliases: assign ivshmem device aliases when
> vm starts
>
> virDomainDeviceDefParse: attach and parse ivshmem device xml
> qemuDomainAttachDeviceConfig: attach ivshmem device xml
> persistently
> qemuDomainAttachDeviceLive: attach ivshmem device online
>
> qemuDomainDetachDeviceConfig: detach ivshmem device xml
> persistently
> qemuDomainDetachDeviceLive: detach ivshmem device online
>
>
> There are two ways to use ivshmem with qemu
> (please refer to
> http://qemu.weilnetz.de/qemu-doc.html#pcsys_005fother_005fdevs ):
> 1.Guests map a POSIX shared memory region into the guest as a PCI device
> that enables zero-copy communication to the application level of the
> guests, The basic syntax is:
>
> qemu-system-i386-device ivshmem, size = <size in format accepted by -m>
> [, shm = <shm name>]
>
> 2.If desired, interrupts can be sent between guest VMs accessing the same
> shared memory region.
> Interrupt support requires using a shared memory server and using a
> chardev socket to connect to it.
> An example syntax when using the shared memory server is:
>
> qemu-system-i386-device ivshmem, size = <size in format accepted by -m>
> [, chardev = <id>] [, msi = on]
> [, ioeventfd = on] [, vectors = n] [, role
> = peer | master]
> qemu-system-i386-chardev socket, path = <path>, id = <id>
>
> The respective xml configuration for the above 2 qemu command lines are
> shown as below:
>
> Example1: automatically attach device with KVM
>
> <devices>
> <ivshmem role='master'>
> <memory name='dom-ivshmem' size='2'/>
> </ivshmem>
> </devices>
>
> NOTE: "size" means ivshmem size in unit MB, "name" means shm name
> "role" is optional, it may be set to "master" or "peer", the default
> one is "master"
>
> Example2: manually attach device with static PCI slot 4 requested
>
> <devices>
> <ivshmem role='master'>
> <memory name='dom-ivshmem' size='2'/>
> <address type='pci' domain='0x0000' bus='0x00' slot='0x04'
> function='0x0'/>
> </ivshmem>
> </devices>
>
> Example3: automatically attach device with KVM
>
> <devices>
> <ivshmem role='master' type='unix'>
> <source mode='connect' path='/tmp/ivshmem'/>
> <memory name='dom-ivshmem' size='2'/>
> </ivshmem>
> </devices>
>
> NOTE: "path" means shared memory socket path which is set by the daemon.
> " source mode " and "type" is similar with vmchannel.
>
>
> I'm looking forward to your suggestions, thank you very much.
>
> --
> libvir-list mailing list
> libvir-list at redhat.com
> https://www.redhat.com/mailman/listinfo/libvir-list
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20140515/c560aea0/attachment-0001.htm>
More information about the libvir-list
mailing list