diff --git a/src/qemu/qemu_monitor.c b/src/qemu/qemu_monitor.c index 448999785a..6071c803df 100644 --- a/src/qemu/qemu_monitor.c +++ b/src/qemu/qemu_monitor.c @@ -1773,6 +1773,7 @@ qemuMonitorGetCPUInfoHotplug(struct qemuMonitorQueryHotpluggableCpusEntry *hotpl int order = 1; size_t totalvcpus = 0; size_t mastervcpu; /* this iterator is used for iterating hotpluggable entities */ + size_t slavevcpu; /* this corresponds to subentries of a hotpluggable entry */ size_t anyvcpu; /* this iterator is used for any vcpu entry in the result */ size_t i; size_t j; @@ -1816,6 +1817,9 @@ qemuMonitorGetCPUInfoHotplug(struct qemuMonitorQueryHotpluggableCpusEntry *hotpl * logical vcpus in the guest */ mastervcpu = 0; for (i = 0; i < nhotplugvcpus; i++) { + vcpus[mastervcpu].online = !!hotplugvcpus[i].qom_path; + vcpus[mastervcpu].hotpluggable = !!hotplugvcpus[i].alias || + !vcpus[mastervcpu].online; vcpus[mastervcpu].socket_id = hotplugvcpus[i].socket_id; vcpus[mastervcpu].core_id = hotplugvcpus[i].core_id; vcpus[mastervcpu].thread_id = hotplugvcpus[i].thread_id; @@ -1825,6 +1829,12 @@ qemuMonitorGetCPUInfoHotplug(struct qemuMonitorQueryHotpluggableCpusEntry *hotpl VIR_STEAL_PTR(vcpus[mastervcpu].type, hotplugvcpus[i].type); vcpus[mastervcpu].id = hotplugvcpus[i].enable_id; + /* copy state information to slave vcpus */ + for (slavevcpu = mastervcpu + 1; slavevcpu < mastervcpu + hotplugvcpus[i].vcpus; slavevcpu++) { + vcpus[slavevcpu].online = vcpus[mastervcpu].online; + vcpus[slavevcpu].hotpluggable = vcpus[mastervcpu].hotpluggable; + } + /* calculate next master vcpu (hotpluggable unit) entry */ mastervcpu += hotplugvcpus[i].vcpus; } diff --git a/src/qemu/qemu_monitor.h b/src/qemu/qemu_monitor.h index 255fff2eae..615ab3e940 100644 --- a/src/qemu/qemu_monitor.h +++ b/src/qemu/qemu_monitor.h @@ -422,6 +422,10 @@ struct _qemuMonitorCPUInfo { pid_t tid; int id; /* order of enabling of the given cpu */ + /* state data */ + bool online; + bool hotpluggable; + /* topology info for hotplug purposes. Hotplug of given vcpu impossible if * all entries are -1 */ int socket_id; diff --git a/tests/qemumonitorjsondata/qemumonitorjson-cpuinfo-ppc64-basic.data b/tests/qemumonitorjsondata/qemumonitorjson-cpuinfo-ppc64-basic.data index 9fc8148721..ae7c2f4b3b 100644 --- a/tests/qemumonitorjsondata/qemumonitorjson-cpuinfo-ppc64-basic.data +++ b/tests/qemumonitorjsondata/qemumonitorjson-cpuinfo-ppc64-basic.data @@ -1,40 +1,88 @@ [vcpu libvirt-id='0'] + online=yes + hotpluggable=no thread-id='21925' qemu-id='1' type='host-spapr-cpu-core' qom_path='/machine/unattached/device[1]' topology: core='0' vcpus='8' [vcpu libvirt-id='1'] + online=yes + hotpluggable=no thread-id='21926' [vcpu libvirt-id='2'] + online=yes + hotpluggable=no thread-id='21927' [vcpu libvirt-id='3'] + online=yes + hotpluggable=no thread-id='21928' [vcpu libvirt-id='4'] + online=yes + hotpluggable=no thread-id='21930' [vcpu libvirt-id='5'] + online=yes + hotpluggable=no thread-id='21931' [vcpu libvirt-id='6'] + online=yes + hotpluggable=no thread-id='21932' [vcpu libvirt-id='7'] + online=yes + hotpluggable=no thread-id='21933' [vcpu libvirt-id='8'] + online=no + hotpluggable=yes type='host-spapr-cpu-core' topology: core='8' vcpus='8' [vcpu libvirt-id='9'] + online=no + hotpluggable=yes [vcpu libvirt-id='10'] + online=no + hotpluggable=yes [vcpu libvirt-id='11'] + online=no + hotpluggable=yes [vcpu libvirt-id='12'] + online=no + hotpluggable=yes [vcpu libvirt-id='13'] + online=no + hotpluggable=yes [vcpu libvirt-id='14'] + online=no + hotpluggable=yes [vcpu libvirt-id='15'] + online=no + hotpluggable=yes [vcpu libvirt-id='16'] + online=no + hotpluggable=yes type='host-spapr-cpu-core' topology: core='16' vcpus='8' [vcpu libvirt-id='17'] + online=no + hotpluggable=yes [vcpu libvirt-id='18'] + online=no + hotpluggable=yes [vcpu libvirt-id='19'] + online=no + hotpluggable=yes [vcpu libvirt-id='20'] + online=no + hotpluggable=yes [vcpu libvirt-id='21'] + online=no + hotpluggable=yes [vcpu libvirt-id='22'] + online=no + hotpluggable=yes [vcpu libvirt-id='23'] + online=no + hotpluggable=yes diff --git a/tests/qemumonitorjsondata/qemumonitorjson-cpuinfo-ppc64-hotplug-1.data b/tests/qemumonitorjsondata/qemumonitorjson-cpuinfo-ppc64-hotplug-1.data index b0139b526e..5c0a6af0fc 100644 --- a/tests/qemumonitorjsondata/qemumonitorjson-cpuinfo-ppc64-hotplug-1.data +++ b/tests/qemumonitorjsondata/qemumonitorjson-cpuinfo-ppc64-hotplug-1.data @@ -1,24 +1,42 @@ [vcpu libvirt-id='0'] + online=yes + hotpluggable=no thread-id='21925' qemu-id='1' type='host-spapr-cpu-core' qom_path='/machine/unattached/device[1]' topology: core='0' vcpus='8' [vcpu libvirt-id='1'] + online=yes + hotpluggable=no thread-id='21926' [vcpu libvirt-id='2'] + online=yes + hotpluggable=no thread-id='21927' [vcpu libvirt-id='3'] + online=yes + hotpluggable=no thread-id='21928' [vcpu libvirt-id='4'] + online=yes + hotpluggable=no thread-id='21930' [vcpu libvirt-id='5'] + online=yes + hotpluggable=no thread-id='21931' [vcpu libvirt-id='6'] + online=yes + hotpluggable=no thread-id='21932' [vcpu libvirt-id='7'] + online=yes + hotpluggable=no thread-id='21933' [vcpu libvirt-id='8'] + online=yes + hotpluggable=yes thread-id='22131' qemu-id='2' type='host-spapr-cpu-core' @@ -26,26 +44,56 @@ qom_path='/machine/peripheral/vcpu0' topology: core='8' vcpus='8' [vcpu libvirt-id='9'] + online=yes + hotpluggable=yes thread-id='22132' [vcpu libvirt-id='10'] + online=yes + hotpluggable=yes thread-id='22133' [vcpu libvirt-id='11'] + online=yes + hotpluggable=yes thread-id='22134' [vcpu libvirt-id='12'] + online=yes + hotpluggable=yes thread-id='22135' [vcpu libvirt-id='13'] + online=yes + hotpluggable=yes thread-id='22136' [vcpu libvirt-id='14'] + online=yes + hotpluggable=yes thread-id='22137' [vcpu libvirt-id='15'] + online=yes + hotpluggable=yes thread-id='22138' [vcpu libvirt-id='16'] + online=no + hotpluggable=yes type='host-spapr-cpu-core' topology: core='16' vcpus='8' [vcpu libvirt-id='17'] + online=no + hotpluggable=yes [vcpu libvirt-id='18'] + online=no + hotpluggable=yes [vcpu libvirt-id='19'] + online=no + hotpluggable=yes [vcpu libvirt-id='20'] + online=no + hotpluggable=yes [vcpu libvirt-id='21'] + online=no + hotpluggable=yes [vcpu libvirt-id='22'] + online=no + hotpluggable=yes [vcpu libvirt-id='23'] + online=no + hotpluggable=yes diff --git a/tests/qemumonitorjsondata/qemumonitorjson-cpuinfo-ppc64-hotplug-2.data b/tests/qemumonitorjsondata/qemumonitorjson-cpuinfo-ppc64-hotplug-2.data index ea4b099c8f..ba4044e449 100644 --- a/tests/qemumonitorjsondata/qemumonitorjson-cpuinfo-ppc64-hotplug-2.data +++ b/tests/qemumonitorjsondata/qemumonitorjson-cpuinfo-ppc64-hotplug-2.data @@ -1,24 +1,42 @@ [vcpu libvirt-id='0'] + online=yes + hotpluggable=no thread-id='21925' qemu-id='1' type='host-spapr-cpu-core' qom_path='/machine/unattached/device[1]' topology: core='0' vcpus='8' [vcpu libvirt-id='1'] + online=yes + hotpluggable=no thread-id='21926' [vcpu libvirt-id='2'] + online=yes + hotpluggable=no thread-id='21927' [vcpu libvirt-id='3'] + online=yes + hotpluggable=no thread-id='21928' [vcpu libvirt-id='4'] + online=yes + hotpluggable=no thread-id='21930' [vcpu libvirt-id='5'] + online=yes + hotpluggable=no thread-id='21931' [vcpu libvirt-id='6'] + online=yes + hotpluggable=no thread-id='21932' [vcpu libvirt-id='7'] + online=yes + hotpluggable=no thread-id='21933' [vcpu libvirt-id='8'] + online=yes + hotpluggable=yes thread-id='22131' qemu-id='2' type='host-spapr-cpu-core' @@ -26,20 +44,36 @@ qom_path='/machine/peripheral/vcpu0' topology: core='8' vcpus='8' [vcpu libvirt-id='9'] + online=yes + hotpluggable=yes thread-id='22132' [vcpu libvirt-id='10'] + online=yes + hotpluggable=yes thread-id='22133' [vcpu libvirt-id='11'] + online=yes + hotpluggable=yes thread-id='22134' [vcpu libvirt-id='12'] + online=yes + hotpluggable=yes thread-id='22135' [vcpu libvirt-id='13'] + online=yes + hotpluggable=yes thread-id='22136' [vcpu libvirt-id='14'] + online=yes + hotpluggable=yes thread-id='22137' [vcpu libvirt-id='15'] + online=yes + hotpluggable=yes thread-id='22138' [vcpu libvirt-id='16'] + online=yes + hotpluggable=yes thread-id='22223' qemu-id='3' type='host-spapr-cpu-core' @@ -47,16 +81,30 @@ qom_path='/machine/peripheral/vcpu1' topology: core='16' vcpus='8' [vcpu libvirt-id='17'] + online=yes + hotpluggable=yes thread-id='22224' [vcpu libvirt-id='18'] + online=yes + hotpluggable=yes thread-id='22225' [vcpu libvirt-id='19'] + online=yes + hotpluggable=yes thread-id='22226' [vcpu libvirt-id='20'] + online=yes + hotpluggable=yes thread-id='22227' [vcpu libvirt-id='21'] + online=yes + hotpluggable=yes thread-id='22228' [vcpu libvirt-id='22'] + online=yes + hotpluggable=yes thread-id='22229' [vcpu libvirt-id='23'] + online=yes + hotpluggable=yes thread-id='22230' diff --git a/tests/qemumonitorjsondata/qemumonitorjson-cpuinfo-ppc64-hotplug-4.data b/tests/qemumonitorjsondata/qemumonitorjson-cpuinfo-ppc64-hotplug-4.data index 22a425d4af..d2c56ef989 100644 --- a/tests/qemumonitorjsondata/qemumonitorjson-cpuinfo-ppc64-hotplug-4.data +++ b/tests/qemumonitorjsondata/qemumonitorjson-cpuinfo-ppc64-hotplug-4.data @@ -1,24 +1,42 @@ [vcpu libvirt-id='0'] + online=yes + hotpluggable=no thread-id='21925' qemu-id='1' type='host-spapr-cpu-core' qom_path='/machine/unattached/device[1]' topology: core='0' vcpus='8' [vcpu libvirt-id='1'] + online=yes + hotpluggable=no thread-id='21926' [vcpu libvirt-id='2'] + online=yes + hotpluggable=no thread-id='21927' [vcpu libvirt-id='3'] + online=yes + hotpluggable=no thread-id='21928' [vcpu libvirt-id='4'] + online=yes + hotpluggable=no thread-id='21930' [vcpu libvirt-id='5'] + online=yes + hotpluggable=no thread-id='21931' [vcpu libvirt-id='6'] + online=yes + hotpluggable=no thread-id='21932' [vcpu libvirt-id='7'] + online=yes + hotpluggable=no thread-id='21933' [vcpu libvirt-id='8'] + online=yes + hotpluggable=yes thread-id='23170' qemu-id='3' type='host-spapr-cpu-core' @@ -26,20 +44,36 @@ qom_path='/machine/peripheral/vcpu0' topology: core='8' vcpus='8' [vcpu libvirt-id='9'] + online=yes + hotpluggable=yes thread-id='23171' [vcpu libvirt-id='10'] + online=yes + hotpluggable=yes thread-id='23172' [vcpu libvirt-id='11'] + online=yes + hotpluggable=yes thread-id='23173' [vcpu libvirt-id='12'] + online=yes + hotpluggable=yes thread-id='23174' [vcpu libvirt-id='13'] + online=yes + hotpluggable=yes thread-id='23175' [vcpu libvirt-id='14'] + online=yes + hotpluggable=yes thread-id='23176' [vcpu libvirt-id='15'] + online=yes + hotpluggable=yes thread-id='23177' [vcpu libvirt-id='16'] + online=yes + hotpluggable=yes thread-id='22741' qemu-id='2' type='host-spapr-cpu-core' @@ -47,16 +81,30 @@ qom_path='/machine/peripheral/vcpu1' topology: core='16' vcpus='8' [vcpu libvirt-id='17'] + online=yes + hotpluggable=yes thread-id='22742' [vcpu libvirt-id='18'] + online=yes + hotpluggable=yes thread-id='22743' [vcpu libvirt-id='19'] + online=yes + hotpluggable=yes thread-id='22744' [vcpu libvirt-id='20'] + online=yes + hotpluggable=yes thread-id='22745' [vcpu libvirt-id='21'] + online=yes + hotpluggable=yes thread-id='22746' [vcpu libvirt-id='22'] + online=yes + hotpluggable=yes thread-id='22747' [vcpu libvirt-id='23'] + online=yes + hotpluggable=yes thread-id='22748' diff --git a/tests/qemumonitorjsondata/qemumonitorjson-cpuinfo-ppc64-no-threads.data b/tests/qemumonitorjsondata/qemumonitorjson-cpuinfo-ppc64-no-threads.data index d7ab77b790..c2f541b3e6 100644 --- a/tests/qemumonitorjsondata/qemumonitorjson-cpuinfo-ppc64-no-threads.data +++ b/tests/qemumonitorjsondata/qemumonitorjson-cpuinfo-ppc64-no-threads.data @@ -1,72 +1,104 @@ [vcpu libvirt-id='0'] + online=yes + hotpluggable=no thread-id='35232' qemu-id='1' type='host-spapr-cpu-core' qom_path='/machine/unattached/device[1]' topology: core='0' vcpus='1' [vcpu libvirt-id='1'] + online=yes + hotpluggable=no thread-id='35233' qemu-id='2' type='host-spapr-cpu-core' qom_path='/machine/unattached/device[2]' topology: core='8' vcpus='1' [vcpu libvirt-id='2'] + online=yes + hotpluggable=no thread-id='35234' qemu-id='3' type='host-spapr-cpu-core' qom_path='/machine/unattached/device[3]' topology: core='16' vcpus='1' [vcpu libvirt-id='3'] + online=yes + hotpluggable=no thread-id='35235' qemu-id='4' type='host-spapr-cpu-core' qom_path='/machine/unattached/device[4]' topology: core='24' vcpus='1' [vcpu libvirt-id='4'] + online=yes + hotpluggable=no thread-id='35236' qemu-id='5' type='host-spapr-cpu-core' qom_path='/machine/unattached/device[5]' topology: core='32' vcpus='1' [vcpu libvirt-id='5'] + online=yes + hotpluggable=no thread-id='35237' qemu-id='6' type='host-spapr-cpu-core' qom_path='/machine/unattached/device[6]' topology: core='40' vcpus='1' [vcpu libvirt-id='6'] + online=yes + hotpluggable=no thread-id='35238' qemu-id='7' type='host-spapr-cpu-core' qom_path='/machine/unattached/device[7]' topology: core='48' vcpus='1' [vcpu libvirt-id='7'] + online=yes + hotpluggable=no thread-id='35239' qemu-id='8' type='host-spapr-cpu-core' qom_path='/machine/unattached/device[8]' topology: core='56' vcpus='1' [vcpu libvirt-id='8'] + online=no + hotpluggable=yes type='host-spapr-cpu-core' topology: core='64' vcpus='1' [vcpu libvirt-id='9'] + online=no + hotpluggable=yes type='host-spapr-cpu-core' topology: core='72' vcpus='1' [vcpu libvirt-id='10'] + online=no + hotpluggable=yes type='host-spapr-cpu-core' topology: core='80' vcpus='1' [vcpu libvirt-id='11'] + online=no + hotpluggable=yes type='host-spapr-cpu-core' topology: core='88' vcpus='1' [vcpu libvirt-id='12'] + online=no + hotpluggable=yes type='host-spapr-cpu-core' topology: core='96' vcpus='1' [vcpu libvirt-id='13'] + online=no + hotpluggable=yes type='host-spapr-cpu-core' topology: core='104' vcpus='1' [vcpu libvirt-id='14'] + online=no + hotpluggable=yes type='host-spapr-cpu-core' topology: core='112' vcpus='1' [vcpu libvirt-id='15'] + online=no + hotpluggable=yes type='host-spapr-cpu-core' topology: core='120' vcpus='1' diff --git a/tests/qemumonitorjsondata/qemumonitorjson-cpuinfo-x86-basic-pluggable.data b/tests/qemumonitorjsondata/qemumonitorjson-cpuinfo-x86-basic-pluggable.data index a367a090e2..67dfc0197f 100644 --- a/tests/qemumonitorjsondata/qemumonitorjson-cpuinfo-x86-basic-pluggable.data +++ b/tests/qemumonitorjsondata/qemumonitorjson-cpuinfo-x86-basic-pluggable.data @@ -1,39 +1,55 @@ [vcpu libvirt-id='0'] + online=yes + hotpluggable=no thread-id='518291' qemu-id='1' type='qemu64-x86_64-cpu' qom_path='/machine/unattached/device[0]' topology: socket='0' core='0' thread='0' vcpus='1' [vcpu libvirt-id='1'] + online=yes + hotpluggable=no thread-id='518292' qemu-id='2' type='qemu64-x86_64-cpu' qom_path='/machine/unattached/device[2]' topology: socket='0' core='0' thread='1' vcpus='1' [vcpu libvirt-id='2'] + online=yes + hotpluggable=no thread-id='518294' qemu-id='3' type='qemu64-x86_64-cpu' qom_path='/machine/unattached/device[3]' topology: socket='0' core='1' thread='0' vcpus='1' [vcpu libvirt-id='3'] + online=yes + hotpluggable=no thread-id='518295' qemu-id='4' type='qemu64-x86_64-cpu' qom_path='/machine/unattached/device[4]' topology: socket='0' core='1' thread='1' vcpus='1' [vcpu libvirt-id='4'] + online=yes + hotpluggable=no thread-id='518296' qemu-id='5' type='qemu64-x86_64-cpu' qom_path='/machine/unattached/device[5]' topology: socket='1' core='0' thread='0' vcpus='1' [vcpu libvirt-id='5'] + online=no + hotpluggable=yes type='qemu64-x86_64-cpu' topology: socket='1' core='0' thread='1' vcpus='1' [vcpu libvirt-id='6'] + online=no + hotpluggable=yes type='qemu64-x86_64-cpu' topology: socket='1' core='1' thread='0' vcpus='1' [vcpu libvirt-id='7'] + online=no + hotpluggable=yes type='qemu64-x86_64-cpu' topology: socket='1' core='1' thread='1' vcpus='1' diff --git a/tests/qemumonitorjsondata/qemumonitorjson-cpuinfo-x86-full.data b/tests/qemumonitorjsondata/qemumonitorjson-cpuinfo-x86-full.data index a6c1069eda..dba37457a7 100644 --- a/tests/qemumonitorjsondata/qemumonitorjson-cpuinfo-x86-full.data +++ b/tests/qemumonitorjsondata/qemumonitorjson-cpuinfo-x86-full.data @@ -1,10 +1,14 @@ [vcpu libvirt-id='0'] + online=yes + hotpluggable=no thread-id='895040' qemu-id='1' type='Broadwell-x86_64-cpu' qom_path='/machine/unattached/device[0]' topology: socket='0' core='0' thread='0' vcpus='1' [vcpu libvirt-id='1'] + online=yes + hotpluggable=yes thread-id='895056' qemu-id='2' type='Broadwell-x86_64-cpu' @@ -12,6 +16,8 @@ qom_path='/machine/peripheral/vcpu1' topology: socket='1' core='0' thread='0' vcpus='1' [vcpu libvirt-id='2'] + online=yes + hotpluggable=yes thread-id='895057' qemu-id='3' type='Broadwell-x86_64-cpu' @@ -19,6 +25,8 @@ qom_path='/machine/peripheral/vcpu2' topology: socket='2' core='0' thread='0' vcpus='1' [vcpu libvirt-id='3'] + online=yes + hotpluggable=yes thread-id='895058' qemu-id='4' type='Broadwell-x86_64-cpu' @@ -26,6 +34,8 @@ qom_path='/machine/peripheral/vcpu3' topology: socket='3' core='0' thread='0' vcpus='1' [vcpu libvirt-id='4'] + online=yes + hotpluggable=yes thread-id='895059' qemu-id='5' type='Broadwell-x86_64-cpu' @@ -33,6 +43,8 @@ qom_path='/machine/peripheral/vcpu4' topology: socket='4' core='0' thread='0' vcpus='1' [vcpu libvirt-id='5'] + online=yes + hotpluggable=yes thread-id='895060' qemu-id='6' type='Broadwell-x86_64-cpu' @@ -40,6 +52,8 @@ qom_path='/machine/peripheral/vcpu5' topology: socket='5' core='0' thread='0' vcpus='1' [vcpu libvirt-id='6'] + online=yes + hotpluggable=yes thread-id='895061' qemu-id='7' type='Broadwell-x86_64-cpu' @@ -47,6 +61,8 @@ qom_path='/machine/peripheral/vcpu6' topology: socket='6' core='0' thread='0' vcpus='1' [vcpu libvirt-id='7'] + online=yes + hotpluggable=yes thread-id='895062' qemu-id='8' type='Broadwell-x86_64-cpu' @@ -54,6 +70,8 @@ qom_path='/machine/peripheral/vcpu7' topology: socket='7' core='0' thread='0' vcpus='1' [vcpu libvirt-id='8'] + online=yes + hotpluggable=yes thread-id='895063' qemu-id='9' type='Broadwell-x86_64-cpu' @@ -61,6 +79,8 @@ qom_path='/machine/peripheral/vcpu8' topology: socket='8' core='0' thread='0' vcpus='1' [vcpu libvirt-id='9'] + online=yes + hotpluggable=yes thread-id='895064' qemu-id='10' type='Broadwell-x86_64-cpu' @@ -68,6 +88,8 @@ qom_path='/machine/peripheral/vcpu9' topology: socket='9' core='0' thread='0' vcpus='1' [vcpu libvirt-id='10'] + online=yes + hotpluggable=yes thread-id='895065' qemu-id='11' type='Broadwell-x86_64-cpu' diff --git a/tests/qemumonitorjsontest.c b/tests/qemumonitorjsontest.c index d3ec3b1720..9e195d743c 100644 --- a/tests/qemumonitorjsontest.c +++ b/tests/qemumonitorjsontest.c @@ -2357,6 +2357,9 @@ testQemuMonitorCPUInfoFormat(qemuMonitorCPUInfoPtr vcpus, virBufferAsprintf(&buf, "[vcpu libvirt-id='%zu']\n", i); virBufferAdjustIndent(&buf, 4); + virBufferAsprintf(&buf, "online=%s\n", vcpu->online ? "yes" : "no"); + virBufferAsprintf(&buf, "hotpluggable=%s\n", vcpu->hotpluggable ? "yes" : "no"); + if (vcpu->tid) virBufferAsprintf(&buf, "thread-id='%llu'\n", (unsigned long long) vcpu->tid);