On 2014/7/17 17:37, Martin Kletzander wrote: > On Tue, May 20, 2014 at 11:17:32AM +0200, Martin Kletzander wrote: >> On Wed, May 14, 2014 at 08:23:21AM +0000, Wangrui (K) 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. >>> > > I came back to this mail right now because I need to have this > implemented. Is there any progress on your side with this or should I > try hitting this? >
There's some experimental progress, not good enough to send patches. Sure, you can hav a try. I would keep attention on your patches. You mentioned shm unlink below. If I Understand Correctly, QEMU does have code to cleanup shm. Libvirt should do the cleanup job. > [...] >>> 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" >>> >> >> What do these roles mean, I mean what's the difference between master >> and peer and why is it only used with the chardev? Does it mean >> master can only send interrupts or...? Just curious. >> > > @Cam (Cc'd) I was wondering about the role= options, so I looked into > the code. It looks like role=peer just effectively disables > migration. Did I miss any other difference? > > From the libvirt's POV I'd have a few more questions if I may. How > does the migration work (if there's role=master) WRT other guests > using the same shm? I found no shm_unlink call in QEMU sources (but > again, I'm not experienced in QEMU's internals), does that mean that > cleanup should be done by libvirt? > > Thank you for any info provided. > > Martin -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list