On Tue, Aug 23, 2016 at 01:17:01PM +0800, Dou Liyang wrote: > Hi Alexandre, > > At 08/22/2016 04:56 PM, Alexandre DERUMIER wrote: > > Hello, > > > > I'm looking to implement cpu hotplug, > > > > and I have a question about cpu flags > > > > currently I have something like > > > > -cpu qemu64,+lahf_lm,+sep,+kvm_pv_unhalt,+kvm_pv_eoi,enforce > > -smp 4,sockets=2,cores=2,maxcpus=4 > > > > > > Does I need to define flags like: > > > > -smp 2,sockets=2,cores=2,maxcpus=4 > > -device > > qemu64-x86_64-cpu,+lahf_lm,+sep,+kvm_pv_unhalt,+kvm_pv_eoi,enforce,id=cpu1,socket-id=1,core-id=1,thread-id=0 > > I think we don't need to do that. > In my option, just like this: > > -device qemu64-x86_64-cpu,id=cpu1,socket-id=1,.. > > Because QEMU sets the "-cpu" options in MachineState: > > current_machine->cpu_model = cpu_model; > > when you add a CPU, QEMU can get the flag from the MachineState.
You don't need to repeat the flags, but that's not because of MachineState::cpu_model, but because of the semantics of -smp: The option: -smp MODEL,+FOO,+BAR is internally translated to: -global MODEL.FOO=on -global MODEL.BAR=on in addition to setting the CPU model for creating initial CPUs to MODEL. > > > ... > > > > ? > > > > > > Another question, > > is -smp mandatory ? (if I want coldplug all cpus) > > it's not mandatory. such as this: > > ./x86_64-softmmu/qemu-system-x86_64 -m 1G /image/fedora.img > -enable-kvm -monitor stdio > > (qemu) info cpus > * CPU #0: pc=0xffffffff81060586 (halted) thread_id=4032 > > the default number of CPUs is 1. > > > > > -smp sockets=2,cores=2,maxcpus=4 > > > -device qemu64-x86_64-cpu,id=cpu1,socket-id=1,core-id=1,thread-id=0 > > -device qemu64-x86_64-cpu,id=cpu1,socket-id=1,core-id=2,thread-id=0 > > -device qemu64-x86_64-cpu,id=cpu3,socket-id=2,core-id=1,thread-id=0 > > -device qemu64-x86_64-cpu,id=cpu4,socket-id=2,core-id=2,thread-id=0 > > > > or does I need minimum 1 non unplugable cpu As mentioned above, the default number of CPUs is 1, so "-smp sockets=2" is the same as "-smp 1,sockets=2". I assume you mean something like "-smp 0", but that doesn't work today. I would like to eventually allow all CPUs to be created using -device, but that's not possible yet. > > > > -smp 1,sockets=2,cores=2,maxcpus=4 > > -device qemu64-x86_64-cpu,id=cpu1,socket-id=1,core-id=2,thread-id=0 > > -device qemu64-x86_64-cpu,id=cpu3,socket-id=2,core-id=1,thread-id=0 > > -device qemu64-x86_64-cpu,id=cpu4,socket-id=2,core-id=2,thread-id=0 > > > > I think that is better, and the socket-id/core-id/thread-id starts at > index 0 > > I am new to the community. Please don't mind, and take with a grain of > salt. > > Thanks, > Dou > > -- Eduardo