# -*- Mode: Python -*-
# vim: filetype=python
#
# SPDX-License-Identifier: GPL-2.0-or-later
# This work is licensed under the terms of the GNU GPL, version 2 or later.
# See the COPYING file in the top-level directory.

{ 'include': 'machine-common.json' }

##
# @S390CpuPolarization:
#
# An enumeration of CPU polarization that can be assumed by a virtual
# S390 CPU
#
# Since: 8.2
##
{ 'enum': 'S390CpuPolarization',
  'data': [ 'horizontal', 'vertical' ]
}

##
# @set-cpu-topology:
#
# Modify the topology by moving the CPU inside the topology tree, or
# by changing a modifier attribute of a CPU.  Absent values will not
# be modified.
#
# @core-id: the vCPU ID to be moved
#
# @socket-id: destination socket to move the vCPU to
#
# @book-id: destination book to move the vCPU to
#
# @drawer-id: destination drawer to move the vCPU to
#
# @entitlement: entitlement to set
#
# @dedicated: whether the provisioning of real to virtual CPU is
#     dedicated
#
# Features:
#
# @unstable: This command is experimental.
#
# Since: 8.2
##
{ 'command': 'set-cpu-topology',
  'data': {
      'core-id': 'uint16',
      '*socket-id': 'uint16',
      '*book-id': 'uint16',
      '*drawer-id': 'uint16',
      '*entitlement': 'S390CpuEntitlement',
      '*dedicated': 'bool'
  },
  'features': [ 'unstable' ]
}

##
# @CPU_POLARIZATION_CHANGE:
#
# Emitted when the guest asks to change the polarization.
#
# The guest can tell the host (via the PTF instruction) whether the
# CPUs should be provisioned using horizontal or vertical
# polarization.
#
# On horizontal polarization the host is expected to provision all
# vCPUs equally.
#
# On vertical polarization the host can provision each vCPU
# differently.  The guest will get information on the details of the
# provisioning the next time it uses the STSI(15) instruction.
#
# @polarization: polarization specified by the guest
#
# Features:
#
# @unstable: This event is experimental.
#
# Since: 8.2
#
# .. qmp-example::
#
#     <- { "event": "CPU_POLARIZATION_CHANGE",
#          "data": { "polarization": "horizontal" },
#          "timestamp": { "seconds": 1401385907, "microseconds": 422329 } }
##
{ 'event': 'CPU_POLARIZATION_CHANGE',
  'data': { 'polarization': 'S390CpuPolarization' },
  'features': [ 'unstable' ]
}

##
# @CpuPolarizationInfo:
#
# The result of a CPU polarization query.
#
# @polarization: the CPU polarization
#
# Since: 8.2
##
{ 'struct': 'CpuPolarizationInfo',
  'data': { 'polarization': 'S390CpuPolarization' }
}

##
# @query-s390x-cpu-polarization:
#
# Features:
#
# @unstable: This command is experimental.
#
# Returns: the machine's CPU polarization
#
# Since: 8.2
##
{ 'command': 'query-s390x-cpu-polarization', 'returns': 'CpuPolarizationInfo',
  'features': [ 'unstable' ]
}

##
# @SCLP_CPI_INFO_AVAILABLE:
#
# Emitted when the Control-Program Identification data is available in
# the QOM tree.
#
# Features:
#
# @unstable: This event is experimental.
#
# Since: 10.2
#
# .. qmp-example::
#
#     <- { "event": "SCLP_CPI_INFO_AVAILABLE",
#          "timestamp": { "seconds": 1401385907, "microseconds": 422329 } }
##
{ 'event': 'SCLP_CPI_INFO_AVAILABLE',
  'features': [ 'unstable' ]
}
