On Wed, Jul 15, 2026 at 02:56:50PM +0530, Partha Satapathy via Devel wrote:
The existing per-vCPU 'order' attribute has different semantics and cannot be reused for this purpose. It is used to define the order and grouping of vCPUs when they are enabled. It applies to online vCPUs and is not a policy for selecting offline hotpluggable vCPUs.
In particular, 'order' is not used to choose which vCPUs are removed by a count-based `setvcpus` reduction. Therefore, it cannot express an administrator-defined hot-unplug sequence.
Aren't you simply describing a bug in the implementation of "order". I defined a guest with # virsh dumpxml --inactive 2 --xpath //vcpu <vcpu placement="static" current="4">8</vcpu> <vcpu id="0" enabled="yes" hotpluggable="no" order="1"/> <vcpu id="1" enabled="yes" hotpluggable="yes" order="2"/> <vcpu id="2" enabled="no" hotpluggable="yes" order="3"/> <vcpu id="3" enabled="no" hotpluggable="yes" order="4"/> <vcpu id="4" enabled="no" hotpluggable="yes" order="5"/> <vcpu id="5" enabled="no" hotpluggable="yes" order="6"/> <vcpu id="6" enabled="yes" hotpluggable="yes" order="7"/> <vcpu id="7" enabled="yes" hotpluggable="yes" order="8"/> Yet when I start this guest, libvirt throws away the order information I configured # virsh setvcpus rhel92 6 # virsh dumpxml rhel92 --xpath //vcpu <vcpu placement="static" current="4">8</vcpu> <vcpu id="0" enabled="yes" hotpluggable="no" order="1"/> <vcpu id="1" enabled="yes" hotpluggable="yes" order="2"/> <vcpu id="2" enabled="no" hotpluggable="yes"/> <vcpu id="3" enabled="no" hotpluggable="yes"/> <vcpu id="4" enabled="no" hotpluggable="yes"/> <vcpu id="5" enabled="no" hotpluggable="yes"/> <vcpu id="6" enabled="yes" hotpluggable="yes" order="3"/> <vcpu id="7" enabled="yes" hotpluggable="yes" order="4"/> and hotplugging CPUs ignores the order I defined # virsh setvcpus rhel92 6 # virsh dumpxml rhel92 --xpath //vcpu <vcpu placement="static" current="6">8</vcpu> <vcpu id="0" enabled="yes" hotpluggable="no" order="1"/> <vcpu id="1" enabled="yes" hotpluggable="yes" order="2"/> <vcpu id="2" enabled="yes" hotpluggable="yes" order="5"/> <vcpu id="3" enabled="yes" hotpluggable="yes" order="6"/> <vcpu id="4" enabled="no" hotpluggable="yes"/> <vcpu id="5" enabled="no" hotpluggable="yes"/> <vcpu id="6" enabled="yes" hotpluggable="yes" order="3"/> <vcpu id="7" enabled="yes" hotpluggable="yes" order="4"/> IMHO, that is just broken and we should fix "order" to be honoured, which would appear to address your use case. With regards, Daniel -- |: https://berrange.com ~~ https://hachyderm.io/@berrange :| |: https://libvirt.org ~~ https://entangle-photo.org :| |: https://pixelfed.art/berrange ~~ https://fstop138.berrange.com :|