[libvirt] [PATCH 01/10] qemu: auto assign pci address for shared memory device

Martin Kletzander mkletzan at redhat.com
Wed Jul 8 09:37:12 UTC 2015


On Fri, Jul 03, 2015 at 02:39:49PM +0200, Martin Kletzander wrote:
>On Wed, Jun 17, 2015 at 11:56:12AM +0800, Luyao Huang wrote:
>>Shared memory device is base on PCI address, even we do not
>>pass the pci address to qemu, qemu will auto assign a pci
>>address for it.
>>
>>Signed-off-by: Luyao Huang <lhuang at redhat.com>
>>---
>>src/qemu/qemu_command.c                        | 11 +++++++++++
>>tests/qemuxml2argvdata/qemuxml2argv-shmem.args | 16 ++++++++--------
>>2 files changed, 19 insertions(+), 8 deletions(-)
>>
>>diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c
>>index 89f775d..5ac43d8 100644
>>--- a/src/qemu/qemu_command.c
>>+++ b/src/qemu/qemu_command.c
>>@@ -2562,6 +2562,7 @@ qemuAssignDevicePCISlots(virDomainDefPtr def,
>>                                               flags) < 0)
>>            goto error;
>>    }
>>+
>
>Spurious change, ACK without that.
>

I also squashed in the following to make sure it works fine (which it
does):

diff --git i/tests/qemuxml2argvdata/qemuxml2argv-shmem.args w/tests/qemuxml2argvdata/qemuxml2argv-shmem.args
index 4c383db6985f..08cd5ac4588e 100644
--- i/tests/qemuxml2argvdata/qemuxml2argv-shmem.args
+++ w/tests/qemuxml2argvdata/qemuxml2argv-shmem.args
@@ -2,8 +2,8 @@ LC_ALL=C PATH=/bin HOME=/home/test USER=test LOGNAME=test QEMU_AUDIO_DRV=none \
 /usr/bin/qemu -S -M pc -m 214 -smp 1 -nographic -nodefaults \
 -monitor unix:/tmp/test-monitor,server,nowait -no-acpi -boot c -usb \
 -device ivshmem,shm=shmem0,id=shmem0,bus=pci.0,addr=0x3 \
--device ivshmem,size=128m,shm=shmem1,id=shmem1,bus=pci.0,addr=0x4 \
--device ivshmem,size=256m,shm=shmem2,id=shmem2,bus=pci.0,addr=0x5 \
+-device ivshmem,size=128m,shm=shmem1,id=shmem1,bus=pci.0,addr=0x5 \
+-device ivshmem,size=256m,shm=shmem2,id=shmem2,bus=pci.0,addr=0x4 \
 -device ivshmem,size=512m,chardev=charshmem3,id=shmem3,bus=pci.0,addr=0x6 \
 -chardev socket,id=charshmem3,path=/var/lib/libvirt/shmem-shmem3-sock \
 -device ivshmem,size=1024m,chardev=charshmem4,id=shmem4,bus=pci.0,addr=0x7 \
diff --git i/tests/qemuxml2argvdata/qemuxml2argv-shmem.xml w/tests/qemuxml2argvdata/qemuxml2argv-shmem.xml
index fd79c89c1a43..d4b38f91b050 100644
--- i/tests/qemuxml2argvdata/qemuxml2argv-shmem.xml
+++ w/tests/qemuxml2argvdata/qemuxml2argv-shmem.xml
@@ -23,6 +23,7 @@
     </shmem>
     <shmem name='shmem2'>
       <size unit='M'>256</size>
+      <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
     </shmem>
     <shmem name='shmem3'>
       <size unit='M'>512</size>


>>    /* Further non-primary video cards which have to be qxl type */
>>    for (i = 1; i < def->nvideos; i++) {
>>        if (def->videos[i]->type != VIR_DOMAIN_VIDEO_TYPE_QXL) {
>>@@ -2575,6 +2576,16 @@ qemuAssignDevicePCISlots(virDomainDefPtr def,
>>                                               flags) < 0)
>>            goto error;
>>    }
>>+
>>+    /* Shared Memory */
>>+    for (i = 0; i < def->nshmems; i++) {
>>+        if (def->shmems[i]->info.type != VIR_DOMAIN_DEVICE_ADDRESS_TYPE_NONE)
>>+            continue;
>>+
>>+        if (virDomainPCIAddressReserveNextSlot(addrs,
>>+                                               &def->shmems[i]->info, flags) < 0)
>>+            goto error;
>>+    }
>>    for (i = 0; i < def->ninputs; i++) {
>>        /* Nada - none are PCI based (yet) */
>>    }
>>diff --git a/tests/qemuxml2argvdata/qemuxml2argv-shmem.args b/tests/qemuxml2argvdata/qemuxml2argv-shmem.args
>>index a3d3cc8..d37879a 100644
>>--- a/tests/qemuxml2argvdata/qemuxml2argv-shmem.args
>>+++ b/tests/qemuxml2argvdata/qemuxml2argv-shmem.args
>>@@ -1,16 +1,16 @@
>>LC_ALL=C PATH=/bin HOME=/home/test USER=test LOGNAME=test QEMU_AUDIO_DRV=none \
>>/usr/bin/qemu -S -M pc -m 214 -smp 1 -nographic -nodefaults \
>>-monitor unix:/tmp/test-monitor,server,nowait -no-acpi -boot c -usb \
>>--device ivshmem,shm=shmem0 \
>>--device ivshmem,size=128m,shm=shmem1 \
>>--device ivshmem,size=256m,shm=shmem2 \
>>--device ivshmem,size=512m,chardev=charshmem3 \
>>+-device ivshmem,shm=shmem0,bus=pci.0,addr=0x3 \
>>+-device ivshmem,size=128m,shm=shmem1,bus=pci.0,addr=0x4 \
>>+-device ivshmem,size=256m,shm=shmem2,bus=pci.0,addr=0x5 \
>>+-device ivshmem,size=512m,chardev=charshmem3,bus=pci.0,addr=0x6 \
>>-chardev socket,id=charshmem3,path=/var/lib/libvirt/shmem-shmem3-sock \
>>--device ivshmem,size=1024m,chardev=charshmem4 \
>>+-device ivshmem,size=1024m,chardev=charshmem4,bus=pci.0,addr=0x7 \
>>-chardev socket,id=charshmem4,path=/tmp/shmem4-sock \
>>--device ivshmem,size=2048m,chardev=charshmem5,msi=on,ioeventfd=off \
>>+-device ivshmem,size=2048m,chardev=charshmem5,msi=on,ioeventfd=off,bus=pci.0,addr=0x8 \
>>-chardev socket,id=charshmem5,path=/tmp/shmem5-sock \
>>--device ivshmem,size=4096m,chardev=charshmem6,msi=on,vectors=16 \
>>+-device ivshmem,size=4096m,chardev=charshmem6,msi=on,vectors=16,bus=pci.0,addr=0x9 \
>>-chardev socket,id=charshmem6,path=/tmp/shmem6-sock \
>>--device ivshmem,size=8192m,chardev=charshmem7,msi=on,vectors=32,ioeventfd=on \
>>+-device ivshmem,size=8192m,chardev=charshmem7,msi=on,vectors=32,ioeventfd=on,bus=pci.0,addr=0xa \
>>-chardev socket,id=charshmem7,path=/tmp/shmem7-sock
>>--
>>1.8.3.1
>>
>>--
>>libvir-list mailing list
>>libvir-list at redhat.com
>>https://www.redhat.com/mailman/listinfo/libvir-list



>--
>libvir-list mailing list
>libvir-list at redhat.com
>https://www.redhat.com/mailman/listinfo/libvir-list
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: not available
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20150708/7c694363/attachment-0001.sig>


More information about the libvir-list mailing list