On Mon, Nov 14, 2016 at 09:50:02 +0100, Martin Kletzander wrote: > On Sun, Nov 13, 2016 at 11:15:29PM +0530, Nehal J Wani wrote: > >The man page of qemu(2.6.2), states the following: > > > > -smp > >[cpus=]n[,cores=cores][,threads=threads][,sockets=sockets][,maxcpus=maxcpus] > > Simulate an SMP system with n CPUs. On the PC target, up to 255 > >CPUs are supported. On Sparc32 target, Linux limits the number of usable > >CPUs to 4. For the PC target, the number of cores per > > socket, the number of threads per cores and the total number of > >sockets can be specified. Missing values will be computed. *If any on the > >three values is given, the total number of CPUs n can be > > omitted*. maxcpus specifies the maximum number of hotpluggable > >CPUs. > > > >So, I built the master branch of libvirt and tested the following: > > > >Client: > > > >$ ./run ./tools/virsh domxml-from-native qemu-argv <(echo > >'/usr/bin/qemu-system-x86_64 -enable-kvm -smp cores=2,threads=1,sockets=1') This command line is parsed as having 0 online cpus and 0 maximum cpus in libvirt as we did not update the code for a while. > >error: Disconnected from qemu:///session due to I/O error > >error: Cannot recv data: Connection reset by peer > > > >Server: > > > >$ ./run gdb ./daemon/libvirtd > >GNU gdb (GDB) Fedora 7.11.1-86.fc24 > >... > >Starting program: /home/wani/libvirt/daemon/.libs/lt-libvirtd > >[Thread debugging using libthread_db enabled] > >... > >[Thread 0x7fffc462c700 (LWP 16850) exited] > >... > >Thread 4 "lt-libvirtd" received signal SIGSEGV, Segmentation fault. > >[Switching to Thread 0x7fffe4cf1700 (LWP 16836)] > >qemuDomainDefVcpusPostParse (def=0x7fffb8000ec0) at qemu/qemu_domain.c:2480 > >2480 if (!vcpu->online) { > > > > > >qemuDomainDefVcpusPostParse() calls vcpu = virDomainDefGetVcpu(def, 0), > >which returns NULL. This happens as the code happily sets vcpus to 0. The post parse code expects at least 1 vcpu. > > > >I'd be happy to send a patch, but I am not sure what the right solution is. > > > >- Should not specifying n to -smp allowed? > > I don't understand that ^^. > > >- Should -cpus=n also be parsed in qemuParseCommandLineSmp()? > > > > But the parsing code should be fixed. Looks like the value could be > just computed. But domxml-to-native is not very used I believe. There are three issues with the code: 1: if the total calculated vcpu count is 0 libvirt does not reject it - this causes the crash 2: qemu now supports the cpus= parameter which libvirt does not parse 3: qemu accepts topology as a valid way how to specify maximum cpu count I'll post patches in a while.
Attachment:
signature.asc
Description: Digital signature
-- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list