1# -*- Mode: Python -*- 2# vim: filetype=python 3# 4# This work is licensed under the terms of the GNU GPL, version 2 or later. 5# See the COPYING file in the top-level directory. 6 7## 8# = Machines 9## 10 11## 12# @SysEmuTarget: 13# 14# The comprehensive enumeration of QEMU system emulation ("softmmu") 15# targets. Run "./configure --help" in the project root directory, and 16# look for the *-softmmu targets near the "--target-list" option. The 17# individual target constants are not documented here, for the time 18# being. 19# 20# @rx: since 5.0 21# @avr: since 5.1 22# 23# Notes: The resulting QMP strings can be appended to the "qemu-system-" 24# prefix to produce the corresponding QEMU executable name. This 25# is true even for "qemu-system-x86_64". 26# 27# Since: 3.0 28## 29{ 'enum' : 'SysEmuTarget', 30 'data' : [ 'aarch64', 'alpha', 'arm', 'avr', 'cris', 'hppa', 'i386', 'lm32', 31 'm68k', 'microblaze', 'microblazeel', 'mips', 'mips64', 32 'mips64el', 'mipsel', 'moxie', 'nios2', 'or1k', 'ppc', 33 'ppc64', 'riscv32', 'riscv64', 'rx', 's390x', 'sh4', 34 'sh4eb', 'sparc', 'sparc64', 'tricore', 'unicore32', 35 'x86_64', 'xtensa', 'xtensaeb' ] } 36 37## 38# @CpuInfoArch: 39# 40# An enumeration of cpu types that enable additional information during 41# @query-cpus and @query-cpus-fast. 42# 43# @s390: since 2.12 44# 45# @riscv: since 2.12 46# 47# Since: 2.6 48## 49{ 'enum': 'CpuInfoArch', 50 'data': ['x86', 'sparc', 'ppc', 'mips', 'tricore', 's390', 'riscv', 'other' ] } 51 52## 53# @CpuInfo: 54# 55# Information about a virtual CPU 56# 57# @CPU: the index of the virtual CPU 58# 59# @current: this only exists for backwards compatibility and should be ignored 60# 61# @halted: true if the virtual CPU is in the halt state. Halt usually refers 62# to a processor specific low power mode. 63# 64# @qom_path: path to the CPU object in the QOM tree (since 2.4) 65# 66# @thread_id: ID of the underlying host thread 67# 68# @props: properties describing to which node/socket/core/thread 69# virtual CPU belongs to, provided if supported by board (since 2.10) 70# 71# @arch: architecture of the cpu, which determines which additional fields 72# will be listed (since 2.6) 73# 74# Since: 0.14.0 75# 76# Notes: @halted is a transient state that changes frequently. By the time the 77# data is sent to the client, the guest may no longer be halted. 78## 79{ 'union': 'CpuInfo', 80 'base': {'CPU': 'int', 'current': 'bool', 'halted': 'bool', 81 'qom_path': 'str', 'thread_id': 'int', 82 '*props': 'CpuInstanceProperties', 'arch': 'CpuInfoArch' }, 83 'discriminator': 'arch', 84 'data': { 'x86': 'CpuInfoX86', 85 'sparc': 'CpuInfoSPARC', 86 'ppc': 'CpuInfoPPC', 87 'mips': 'CpuInfoMIPS', 88 'tricore': 'CpuInfoTricore', 89 's390': 'CpuInfoS390', 90 'riscv': 'CpuInfoRISCV' } } 91 92## 93# @CpuInfoX86: 94# 95# Additional information about a virtual i386 or x86_64 CPU 96# 97# @pc: the 64-bit instruction pointer 98# 99# Since: 2.6 100## 101{ 'struct': 'CpuInfoX86', 'data': { 'pc': 'int' } } 102 103## 104# @CpuInfoSPARC: 105# 106# Additional information about a virtual SPARC CPU 107# 108# @pc: the PC component of the instruction pointer 109# 110# @npc: the NPC component of the instruction pointer 111# 112# Since: 2.6 113## 114{ 'struct': 'CpuInfoSPARC', 'data': { 'pc': 'int', 'npc': 'int' } } 115 116## 117# @CpuInfoPPC: 118# 119# Additional information about a virtual PPC CPU 120# 121# @nip: the instruction pointer 122# 123# Since: 2.6 124## 125{ 'struct': 'CpuInfoPPC', 'data': { 'nip': 'int' } } 126 127## 128# @CpuInfoMIPS: 129# 130# Additional information about a virtual MIPS CPU 131# 132# @PC: the instruction pointer 133# 134# Since: 2.6 135## 136{ 'struct': 'CpuInfoMIPS', 'data': { 'PC': 'int' } } 137 138## 139# @CpuInfoTricore: 140# 141# Additional information about a virtual Tricore CPU 142# 143# @PC: the instruction pointer 144# 145# Since: 2.6 146## 147{ 'struct': 'CpuInfoTricore', 'data': { 'PC': 'int' } } 148 149## 150# @CpuInfoRISCV: 151# 152# Additional information about a virtual RISCV CPU 153# 154# @pc: the instruction pointer 155# 156# Since 2.12 157## 158{ 'struct': 'CpuInfoRISCV', 'data': { 'pc': 'int' } } 159 160## 161# @CpuS390State: 162# 163# An enumeration of cpu states that can be assumed by a virtual 164# S390 CPU 165# 166# Since: 2.12 167## 168{ 'enum': 'CpuS390State', 169 'prefix': 'S390_CPU_STATE', 170 'data': [ 'uninitialized', 'stopped', 'check-stop', 'operating', 'load' ] } 171 172## 173# @CpuInfoS390: 174# 175# Additional information about a virtual S390 CPU 176# 177# @cpu-state: the virtual CPU's state 178# 179# Since: 2.12 180## 181{ 'struct': 'CpuInfoS390', 'data': { 'cpu-state': 'CpuS390State' } } 182 183## 184# @query-cpus: 185# 186# Returns a list of information about each virtual CPU. 187# 188# This command causes vCPU threads to exit to userspace, which causes 189# a small interruption to guest CPU execution. This will have a negative 190# impact on realtime guests and other latency sensitive guest workloads. 191# 192# Features: 193# @deprecated: This command is deprecated, because it interferes with 194# the guest. Use 'query-cpus-fast' instead to avoid the vCPU 195# interruption. 196# 197# Returns: a list of @CpuInfo for each virtual CPU 198# 199# Since: 0.14.0 200# 201# Example: 202# 203# -> { "execute": "query-cpus" } 204# <- { "return": [ 205# { 206# "CPU":0, 207# "current":true, 208# "halted":false, 209# "qom_path":"/machine/unattached/device[0]", 210# "arch":"x86", 211# "pc":3227107138, 212# "thread_id":3134 213# }, 214# { 215# "CPU":1, 216# "current":false, 217# "halted":true, 218# "qom_path":"/machine/unattached/device[2]", 219# "arch":"x86", 220# "pc":7108165, 221# "thread_id":3135 222# } 223# ] 224# } 225# 226## 227{ 'command': 'query-cpus', 'returns': ['CpuInfo'], 228 'features': [ 'deprecated' ] } 229 230## 231# @CpuInfoFast: 232# 233# Information about a virtual CPU 234# 235# @cpu-index: index of the virtual CPU 236# 237# @qom-path: path to the CPU object in the QOM tree 238# 239# @thread-id: ID of the underlying host thread 240# 241# @props: properties describing to which node/socket/core/thread 242# virtual CPU belongs to, provided if supported by board 243# 244# @arch: base architecture of the cpu 245# 246# @target: the QEMU system emulation target, which determines which 247# additional fields will be listed (since 3.0) 248# 249# Features: 250# @deprecated: Member @arch is deprecated. Use @target instead. 251# 252# Since: 2.12 253# 254## 255{ 'union' : 'CpuInfoFast', 256 'base' : { 'cpu-index' : 'int', 257 'qom-path' : 'str', 258 'thread-id' : 'int', 259 '*props' : 'CpuInstanceProperties', 260 'arch' : { 'type': 'CpuInfoArch', 261 'features': [ 'deprecated' ] }, 262 'target' : 'SysEmuTarget' }, 263 'discriminator' : 'target', 264 'data' : { 's390x' : 'CpuInfoS390' } } 265 266## 267# @query-cpus-fast: 268# 269# Returns information about all virtual CPUs. This command does not 270# incur a performance penalty and should be used in production 271# instead of query-cpus. 272# 273# Returns: list of @CpuInfoFast 274# 275# Since: 2.12 276# 277# Example: 278# 279# -> { "execute": "query-cpus-fast" } 280# <- { "return": [ 281# { 282# "thread-id": 25627, 283# "props": { 284# "core-id": 0, 285# "thread-id": 0, 286# "socket-id": 0 287# }, 288# "qom-path": "/machine/unattached/device[0]", 289# "arch":"x86", 290# "target":"x86_64", 291# "cpu-index": 0 292# }, 293# { 294# "thread-id": 25628, 295# "props": { 296# "core-id": 0, 297# "thread-id": 0, 298# "socket-id": 1 299# }, 300# "qom-path": "/machine/unattached/device[2]", 301# "arch":"x86", 302# "target":"x86_64", 303# "cpu-index": 1 304# } 305# ] 306# } 307## 308{ 'command': 'query-cpus-fast', 'returns': [ 'CpuInfoFast' ] } 309 310## 311# @cpu-add: 312# 313# Adds CPU with specified ID. 314# 315# @id: ID of CPU to be created, valid values [0..max_cpus) 316# 317# Features: 318# @deprecated: This command is deprecated. Use `device_add` instead. 319# See the `query-hotpluggable-cpus` command for details. 320# 321# Returns: Nothing on success 322# 323# Since: 1.5 324# 325# Example: 326# 327# -> { "execute": "cpu-add", "arguments": { "id": 2 } } 328# <- { "return": {} } 329# 330## 331{ 'command': 'cpu-add', 'data': {'id': 'int'}, 332 'features': [ 'deprecated' ] } 333 334## 335# @MachineInfo: 336# 337# Information describing a machine. 338# 339# @name: the name of the machine 340# 341# @alias: an alias for the machine name 342# 343# @is-default: whether the machine is default 344# 345# @cpu-max: maximum number of CPUs supported by the machine type 346# (since 1.5.0) 347# 348# @hotpluggable-cpus: cpu hotplug via -device is supported (since 2.7.0) 349# 350# @numa-mem-supported: true if '-numa node,mem' option is supported by 351# the machine type and false otherwise (since 4.1) 352# 353# @deprecated: if true, the machine type is deprecated and may be removed 354# in future versions of QEMU according to the QEMU deprecation 355# policy (since 4.1.0) 356# 357# @default-cpu-type: default CPU model typename if none is requested via 358# the -cpu argument. (since 4.2) 359# 360# @default-ram-id: the default ID of initial RAM memory backend (since 5.2) 361# 362# Since: 1.2.0 363## 364{ 'struct': 'MachineInfo', 365 'data': { 'name': 'str', '*alias': 'str', 366 '*is-default': 'bool', 'cpu-max': 'int', 367 'hotpluggable-cpus': 'bool', 'numa-mem-supported': 'bool', 368 'deprecated': 'bool', '*default-cpu-type': 'str', 369 '*default-ram-id': 'str' } } 370 371## 372# @query-machines: 373# 374# Return a list of supported machines 375# 376# Returns: a list of MachineInfo 377# 378# Since: 1.2.0 379## 380{ 'command': 'query-machines', 'returns': ['MachineInfo'] } 381 382## 383# @CurrentMachineParams: 384# 385# Information describing the running machine parameters. 386# 387# @wakeup-suspend-support: true if the machine supports wake up from 388# suspend 389# 390# Since: 4.0 391## 392{ 'struct': 'CurrentMachineParams', 393 'data': { 'wakeup-suspend-support': 'bool'} } 394 395## 396# @query-current-machine: 397# 398# Return information on the current virtual machine. 399# 400# Returns: CurrentMachineParams 401# 402# Since: 4.0 403## 404{ 'command': 'query-current-machine', 'returns': 'CurrentMachineParams' } 405 406## 407# @TargetInfo: 408# 409# Information describing the QEMU target. 410# 411# @arch: the target architecture 412# 413# Since: 1.2.0 414## 415{ 'struct': 'TargetInfo', 416 'data': { 'arch': 'SysEmuTarget' } } 417 418## 419# @query-target: 420# 421# Return information about the target for this QEMU 422# 423# Returns: TargetInfo 424# 425# Since: 1.2.0 426## 427{ 'command': 'query-target', 'returns': 'TargetInfo' } 428 429## 430# @NumaOptionsType: 431# 432# @node: NUMA nodes configuration 433# 434# @dist: NUMA distance configuration (since 2.10) 435# 436# @cpu: property based CPU(s) to node mapping (Since: 2.10) 437# 438# @hmat-lb: memory latency and bandwidth information (Since: 5.0) 439# 440# @hmat-cache: memory side cache information (Since: 5.0) 441# 442# Since: 2.1 443## 444{ 'enum': 'NumaOptionsType', 445 'data': [ 'node', 'dist', 'cpu', 'hmat-lb', 'hmat-cache' ] } 446 447## 448# @NumaOptions: 449# 450# A discriminated record of NUMA options. (for OptsVisitor) 451# 452# Since: 2.1 453## 454{ 'union': 'NumaOptions', 455 'base': { 'type': 'NumaOptionsType' }, 456 'discriminator': 'type', 457 'data': { 458 'node': 'NumaNodeOptions', 459 'dist': 'NumaDistOptions', 460 'cpu': 'NumaCpuOptions', 461 'hmat-lb': 'NumaHmatLBOptions', 462 'hmat-cache': 'NumaHmatCacheOptions' }} 463 464## 465# @NumaNodeOptions: 466# 467# Create a guest NUMA node. (for OptsVisitor) 468# 469# @nodeid: NUMA node ID (increase by 1 from 0 if omitted) 470# 471# @cpus: VCPUs belonging to this node (assign VCPUS round-robin 472# if omitted) 473# 474# @mem: memory size of this node; mutually exclusive with @memdev. 475# Equally divide total memory among nodes if both @mem and @memdev are 476# omitted. 477# 478# @memdev: memory backend object. If specified for one node, 479# it must be specified for all nodes. 480# 481# @initiator: defined in ACPI 6.3 Chapter 5.2.27.3 Table 5-145, 482# points to the nodeid which has the memory controller 483# responsible for this NUMA node. This field provides 484# additional information as to the initiator node that 485# is closest (as in directly attached) to this node, and 486# therefore has the best performance (since 5.0) 487# 488# Since: 2.1 489## 490{ 'struct': 'NumaNodeOptions', 491 'data': { 492 '*nodeid': 'uint16', 493 '*cpus': ['uint16'], 494 '*mem': 'size', 495 '*memdev': 'str', 496 '*initiator': 'uint16' }} 497 498## 499# @NumaDistOptions: 500# 501# Set the distance between 2 NUMA nodes. 502# 503# @src: source NUMA node. 504# 505# @dst: destination NUMA node. 506# 507# @val: NUMA distance from source node to destination node. 508# When a node is unreachable from another node, set the distance 509# between them to 255. 510# 511# Since: 2.10 512## 513{ 'struct': 'NumaDistOptions', 514 'data': { 515 'src': 'uint16', 516 'dst': 'uint16', 517 'val': 'uint8' }} 518 519## 520# @X86CPURegister32: 521# 522# A X86 32-bit register 523# 524# Since: 1.5 525## 526{ 'enum': 'X86CPURegister32', 527 'data': [ 'EAX', 'EBX', 'ECX', 'EDX', 'ESP', 'EBP', 'ESI', 'EDI' ] } 528 529## 530# @X86CPUFeatureWordInfo: 531# 532# Information about a X86 CPU feature word 533# 534# @cpuid-input-eax: Input EAX value for CPUID instruction for that feature word 535# 536# @cpuid-input-ecx: Input ECX value for CPUID instruction for that 537# feature word 538# 539# @cpuid-register: Output register containing the feature bits 540# 541# @features: value of output register, containing the feature bits 542# 543# Since: 1.5 544## 545{ 'struct': 'X86CPUFeatureWordInfo', 546 'data': { 'cpuid-input-eax': 'int', 547 '*cpuid-input-ecx': 'int', 548 'cpuid-register': 'X86CPURegister32', 549 'features': 'int' } } 550 551## 552# @DummyForceArrays: 553# 554# Not used by QMP; hack to let us use X86CPUFeatureWordInfoList internally 555# 556# Since: 2.5 557## 558{ 'struct': 'DummyForceArrays', 559 'data': { 'unused': ['X86CPUFeatureWordInfo'] } } 560 561## 562# @NumaCpuOptions: 563# 564# Option "-numa cpu" overrides default cpu to node mapping. 565# It accepts the same set of cpu properties as returned by 566# query-hotpluggable-cpus[].props, where node-id could be used to 567# override default node mapping. 568# 569# Since: 2.10 570## 571{ 'struct': 'NumaCpuOptions', 572 'base': 'CpuInstanceProperties', 573 'data' : {} } 574 575## 576# @HmatLBMemoryHierarchy: 577# 578# The memory hierarchy in the System Locality Latency and Bandwidth 579# Information Structure of HMAT (Heterogeneous Memory Attribute Table) 580# 581# For more information about @HmatLBMemoryHierarchy, see chapter 582# 5.2.27.4: Table 5-146: Field "Flags" of ACPI 6.3 spec. 583# 584# @memory: the structure represents the memory performance 585# 586# @first-level: first level of memory side cache 587# 588# @second-level: second level of memory side cache 589# 590# @third-level: third level of memory side cache 591# 592# Since: 5.0 593## 594{ 'enum': 'HmatLBMemoryHierarchy', 595 'data': [ 'memory', 'first-level', 'second-level', 'third-level' ] } 596 597## 598# @HmatLBDataType: 599# 600# Data type in the System Locality Latency and Bandwidth 601# Information Structure of HMAT (Heterogeneous Memory Attribute Table) 602# 603# For more information about @HmatLBDataType, see chapter 604# 5.2.27.4: Table 5-146: Field "Data Type" of ACPI 6.3 spec. 605# 606# @access-latency: access latency (nanoseconds) 607# 608# @read-latency: read latency (nanoseconds) 609# 610# @write-latency: write latency (nanoseconds) 611# 612# @access-bandwidth: access bandwidth (Bytes per second) 613# 614# @read-bandwidth: read bandwidth (Bytes per second) 615# 616# @write-bandwidth: write bandwidth (Bytes per second) 617# 618# Since: 5.0 619## 620{ 'enum': 'HmatLBDataType', 621 'data': [ 'access-latency', 'read-latency', 'write-latency', 622 'access-bandwidth', 'read-bandwidth', 'write-bandwidth' ] } 623 624## 625# @NumaHmatLBOptions: 626# 627# Set the system locality latency and bandwidth information 628# between Initiator and Target proximity Domains. 629# 630# For more information about @NumaHmatLBOptions, see chapter 631# 5.2.27.4: Table 5-146 of ACPI 6.3 spec. 632# 633# @initiator: the Initiator Proximity Domain. 634# 635# @target: the Target Proximity Domain. 636# 637# @hierarchy: the Memory Hierarchy. Indicates the performance 638# of memory or side cache. 639# 640# @data-type: presents the type of data, access/read/write 641# latency or hit latency. 642# 643# @latency: the value of latency from @initiator to @target 644# proximity domain, the latency unit is "ns(nanosecond)". 645# 646# @bandwidth: the value of bandwidth between @initiator and @target 647# proximity domain, the bandwidth unit is 648# "Bytes per second". 649# 650# Since: 5.0 651## 652{ 'struct': 'NumaHmatLBOptions', 653 'data': { 654 'initiator': 'uint16', 655 'target': 'uint16', 656 'hierarchy': 'HmatLBMemoryHierarchy', 657 'data-type': 'HmatLBDataType', 658 '*latency': 'uint64', 659 '*bandwidth': 'size' }} 660 661## 662# @HmatCacheAssociativity: 663# 664# Cache associativity in the Memory Side Cache Information Structure 665# of HMAT 666# 667# For more information of @HmatCacheAssociativity, see chapter 668# 5.2.27.5: Table 5-147 of ACPI 6.3 spec. 669# 670# @none: None (no memory side cache in this proximity domain, 671# or cache associativity unknown) 672# 673# @direct: Direct Mapped 674# 675# @complex: Complex Cache Indexing (implementation specific) 676# 677# Since: 5.0 678## 679{ 'enum': 'HmatCacheAssociativity', 680 'data': [ 'none', 'direct', 'complex' ] } 681 682## 683# @HmatCacheWritePolicy: 684# 685# Cache write policy in the Memory Side Cache Information Structure 686# of HMAT 687# 688# For more information of @HmatCacheWritePolicy, see chapter 689# 5.2.27.5: Table 5-147: Field "Cache Attributes" of ACPI 6.3 spec. 690# 691# @none: None (no memory side cache in this proximity domain, 692# or cache write policy unknown) 693# 694# @write-back: Write Back (WB) 695# 696# @write-through: Write Through (WT) 697# 698# Since: 5.0 699## 700{ 'enum': 'HmatCacheWritePolicy', 701 'data': [ 'none', 'write-back', 'write-through' ] } 702 703## 704# @NumaHmatCacheOptions: 705# 706# Set the memory side cache information for a given memory domain. 707# 708# For more information of @NumaHmatCacheOptions, see chapter 709# 5.2.27.5: Table 5-147: Field "Cache Attributes" of ACPI 6.3 spec. 710# 711# @node-id: the memory proximity domain to which the memory belongs. 712# 713# @size: the size of memory side cache in bytes. 714# 715# @level: the cache level described in this structure. 716# 717# @associativity: the cache associativity, 718# none/direct-mapped/complex(complex cache indexing). 719# 720# @policy: the write policy, none/write-back/write-through. 721# 722# @line: the cache Line size in bytes. 723# 724# Since: 5.0 725## 726{ 'struct': 'NumaHmatCacheOptions', 727 'data': { 728 'node-id': 'uint32', 729 'size': 'size', 730 'level': 'uint8', 731 'associativity': 'HmatCacheAssociativity', 732 'policy': 'HmatCacheWritePolicy', 733 'line': 'uint16' }} 734 735## 736# @HostMemPolicy: 737# 738# Host memory policy types 739# 740# @default: restore default policy, remove any nondefault policy 741# 742# @preferred: set the preferred host nodes for allocation 743# 744# @bind: a strict policy that restricts memory allocation to the 745# host nodes specified 746# 747# @interleave: memory allocations are interleaved across the set 748# of host nodes specified 749# 750# Since: 2.1 751## 752{ 'enum': 'HostMemPolicy', 753 'data': [ 'default', 'preferred', 'bind', 'interleave' ] } 754 755## 756# @Memdev: 757# 758# Information about memory backend 759# 760# @id: backend's ID if backend has 'id' property (since 2.9) 761# 762# @size: memory backend size 763# 764# @merge: enables or disables memory merge support 765# 766# @dump: includes memory backend's memory in a core dump or not 767# 768# @prealloc: enables or disables memory preallocation 769# 770# @host-nodes: host nodes for its memory policy 771# 772# @policy: memory policy of memory backend 773# 774# Since: 2.1 775## 776{ 'struct': 'Memdev', 777 'data': { 778 '*id': 'str', 779 'size': 'size', 780 'merge': 'bool', 781 'dump': 'bool', 782 'prealloc': 'bool', 783 'host-nodes': ['uint16'], 784 'policy': 'HostMemPolicy' }} 785 786## 787# @query-memdev: 788# 789# Returns information for all memory backends. 790# 791# Returns: a list of @Memdev. 792# 793# Since: 2.1 794# 795# Example: 796# 797# -> { "execute": "query-memdev" } 798# <- { "return": [ 799# { 800# "id": "mem1", 801# "size": 536870912, 802# "merge": false, 803# "dump": true, 804# "prealloc": false, 805# "host-nodes": [0, 1], 806# "policy": "bind" 807# }, 808# { 809# "size": 536870912, 810# "merge": false, 811# "dump": true, 812# "prealloc": true, 813# "host-nodes": [2, 3], 814# "policy": "preferred" 815# } 816# ] 817# } 818# 819## 820{ 'command': 'query-memdev', 'returns': ['Memdev'], 'allow-preconfig': true } 821 822## 823# @CpuInstanceProperties: 824# 825# List of properties to be used for hotplugging a CPU instance, 826# it should be passed by management with device_add command when 827# a CPU is being hotplugged. 828# 829# @node-id: NUMA node ID the CPU belongs to 830# @socket-id: socket number within node/board the CPU belongs to 831# @die-id: die number within node/board the CPU belongs to (Since 4.1) 832# @core-id: core number within die the CPU belongs to 833# @thread-id: thread number within core the CPU belongs to 834# 835# Note: currently there are 5 properties that could be present 836# but management should be prepared to pass through other 837# properties with device_add command to allow for future 838# interface extension. This also requires the filed names to be kept in 839# sync with the properties passed to -device/device_add. 840# 841# Since: 2.7 842## 843{ 'struct': 'CpuInstanceProperties', 844 'data': { '*node-id': 'int', 845 '*socket-id': 'int', 846 '*die-id': 'int', 847 '*core-id': 'int', 848 '*thread-id': 'int' 849 } 850} 851 852## 853# @HotpluggableCPU: 854# 855# @type: CPU object type for usage with device_add command 856# @props: list of properties to be used for hotplugging CPU 857# @vcpus-count: number of logical VCPU threads @HotpluggableCPU provides 858# @qom-path: link to existing CPU object if CPU is present or 859# omitted if CPU is not present. 860# 861# Since: 2.7 862## 863{ 'struct': 'HotpluggableCPU', 864 'data': { 'type': 'str', 865 'vcpus-count': 'int', 866 'props': 'CpuInstanceProperties', 867 '*qom-path': 'str' 868 } 869} 870 871## 872# @query-hotpluggable-cpus: 873# 874# TODO: Better documentation; currently there is none. 875# 876# Returns: a list of HotpluggableCPU objects. 877# 878# Since: 2.7 879# 880# Example: 881# 882# For pseries machine type started with -smp 2,cores=2,maxcpus=4 -cpu POWER8: 883# 884# -> { "execute": "query-hotpluggable-cpus" } 885# <- {"return": [ 886# { "props": { "core": 8 }, "type": "POWER8-spapr-cpu-core", 887# "vcpus-count": 1 }, 888# { "props": { "core": 0 }, "type": "POWER8-spapr-cpu-core", 889# "vcpus-count": 1, "qom-path": "/machine/unattached/device[0]"} 890# ]}' 891# 892# For pc machine type started with -smp 1,maxcpus=2: 893# 894# -> { "execute": "query-hotpluggable-cpus" } 895# <- {"return": [ 896# { 897# "type": "qemu64-x86_64-cpu", "vcpus-count": 1, 898# "props": {"core-id": 0, "socket-id": 1, "thread-id": 0} 899# }, 900# { 901# "qom-path": "/machine/unattached/device[0]", 902# "type": "qemu64-x86_64-cpu", "vcpus-count": 1, 903# "props": {"core-id": 0, "socket-id": 0, "thread-id": 0} 904# } 905# ]} 906# 907# For s390x-virtio-ccw machine type started with -smp 1,maxcpus=2 -cpu qemu 908# (Since: 2.11): 909# 910# -> { "execute": "query-hotpluggable-cpus" } 911# <- {"return": [ 912# { 913# "type": "qemu-s390x-cpu", "vcpus-count": 1, 914# "props": { "core-id": 1 } 915# }, 916# { 917# "qom-path": "/machine/unattached/device[0]", 918# "type": "qemu-s390x-cpu", "vcpus-count": 1, 919# "props": { "core-id": 0 } 920# } 921# ]} 922# 923## 924{ 'command': 'query-hotpluggable-cpus', 'returns': ['HotpluggableCPU'], 925 'allow-preconfig': true } 926 927## 928# @set-numa-node: 929# 930# Runtime equivalent of '-numa' CLI option, available at 931# preconfigure stage to configure numa mapping before initializing 932# machine. 933# 934# Since 3.0 935## 936{ 'command': 'set-numa-node', 'boxed': true, 937 'data': 'NumaOptions', 938 'allow-preconfig': true 939} 940