qapi: Extract ACPI commands to 'acpi.json'
Only qemu-system-FOO and qemu-storage-daemon provide QMP monitors, therefore such declarations and definitions are irrelevant for user-mode emulation. Extracting the ACPI commands to their own schema reduces the size of the qapi-misc* headers generated, and pulls less QAPI-generated code into user-mode. Suggested-by: Markus Armbruster <armbru@redhat.com> Acked-by: Igor Mammedov <imammedo@redhat.com> Acked-by: Markus Armbruster <armbru@redhat.com> Acked-by: Paolo Bonzini <pbonzini@redhat.com> Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com> Message-Id: <20200913195348.1064154-8-philmd@redhat.com> [Commit message tweaked] Signed-off-by: Markus Armbruster <armbru@redhat.com>
This commit is contained in:
parent
b495ec6c5e
commit
27c9188fa0
@ -1632,6 +1632,7 @@ F: hw/acpi/*
|
|||||||
F: hw/smbios/*
|
F: hw/smbios/*
|
||||||
F: hw/i386/acpi-build.[hc]
|
F: hw/i386/acpi-build.[hc]
|
||||||
F: hw/arm/virt-acpi-build.c
|
F: hw/arm/virt-acpi-build.c
|
||||||
|
F: qapi/acpi.json
|
||||||
F: tests/qtest/bios-tables-test*
|
F: tests/qtest/bios-tables-test*
|
||||||
F: tests/qtest/acpi-utils.[hc]
|
F: tests/qtest/acpi-utils.[hc]
|
||||||
F: tests/data/acpi/
|
F: tests/data/acpi/
|
||||||
|
@ -27,7 +27,7 @@
|
|||||||
#include "qapi/error.h"
|
#include "qapi/error.h"
|
||||||
#include "qapi/opts-visitor.h"
|
#include "qapi/opts-visitor.h"
|
||||||
#include "qapi/qapi-events-run-state.h"
|
#include "qapi/qapi-events-run-state.h"
|
||||||
#include "qapi/qapi-visit-misc.h"
|
#include "qapi/qapi-visit-acpi.h"
|
||||||
#include "qemu/error-report.h"
|
#include "qemu/error-report.h"
|
||||||
#include "qemu/module.h"
|
#include "qemu/module.h"
|
||||||
#include "qemu/option.h"
|
#include "qemu/option.h"
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
#include "migration/vmstate.h"
|
#include "migration/vmstate.h"
|
||||||
#include "hw/acpi/cpu.h"
|
#include "hw/acpi/cpu.h"
|
||||||
#include "qapi/error.h"
|
#include "qapi/error.h"
|
||||||
#include "qapi/qapi-events-misc.h"
|
#include "qapi/qapi-events-acpi.h"
|
||||||
#include "trace.h"
|
#include "trace.h"
|
||||||
#include "sysemu/numa.h"
|
#include "sysemu/numa.h"
|
||||||
|
|
||||||
|
@ -7,8 +7,8 @@
|
|||||||
#include "migration/vmstate.h"
|
#include "migration/vmstate.h"
|
||||||
#include "trace.h"
|
#include "trace.h"
|
||||||
#include "qapi/error.h"
|
#include "qapi/error.h"
|
||||||
|
#include "qapi/qapi-events-acpi.h"
|
||||||
#include "qapi/qapi-events-machine.h"
|
#include "qapi/qapi-events-machine.h"
|
||||||
#include "qapi/qapi-events-misc.h"
|
|
||||||
|
|
||||||
#define MEMORY_SLOTS_NUMBER "MDNR"
|
#define MEMORY_SLOTS_NUMBER "MDNR"
|
||||||
#define MEMORY_HOTPLUG_IO_REGION "HPMR"
|
#define MEMORY_HOTPLUG_IO_REGION "HPMR"
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
#ifndef ACPI_DEV_INTERFACE_H
|
#ifndef ACPI_DEV_INTERFACE_H
|
||||||
#define ACPI_DEV_INTERFACE_H
|
#define ACPI_DEV_INTERFACE_H
|
||||||
|
|
||||||
#include "qapi/qapi-types-misc.h"
|
#include "qapi/qapi-types-acpi.h"
|
||||||
#include "qom/object.h"
|
#include "qom/object.h"
|
||||||
#include "hw/boards.h"
|
#include "hw/boards.h"
|
||||||
#include "hw/qdev-core.h"
|
#include "hw/qdev-core.h"
|
||||||
|
@ -30,6 +30,7 @@
|
|||||||
#include "sysemu/blockdev.h"
|
#include "sysemu/blockdev.h"
|
||||||
#include "sysemu/block-backend.h"
|
#include "sysemu/block-backend.h"
|
||||||
#include "qapi/error.h"
|
#include "qapi/error.h"
|
||||||
|
#include "qapi/qapi-commands-acpi.h"
|
||||||
#include "qapi/qapi-commands-block.h"
|
#include "qapi/qapi-commands-block.h"
|
||||||
#include "qapi/qapi-commands-control.h"
|
#include "qapi/qapi-commands-control.h"
|
||||||
#include "qapi/qapi-commands-machine.h"
|
#include "qapi/qapi-commands-machine.h"
|
||||||
|
141
qapi/acpi.json
Normal file
141
qapi/acpi.json
Normal file
@ -0,0 +1,141 @@
|
|||||||
|
# -*- Mode: Python -*-
|
||||||
|
# vim: filetype=python
|
||||||
|
#
|
||||||
|
# This work is licensed under the terms of the GNU GPL, version 2 or later.
|
||||||
|
# See the COPYING file in the top-level directory.
|
||||||
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
|
##
|
||||||
|
# = ACPI
|
||||||
|
##
|
||||||
|
|
||||||
|
##
|
||||||
|
# @AcpiTableOptions:
|
||||||
|
#
|
||||||
|
# Specify an ACPI table on the command line to load.
|
||||||
|
#
|
||||||
|
# At most one of @file and @data can be specified. The list of files specified
|
||||||
|
# by any one of them is loaded and concatenated in order. If both are omitted,
|
||||||
|
# @data is implied.
|
||||||
|
#
|
||||||
|
# Other fields / optargs can be used to override fields of the generic ACPI
|
||||||
|
# table header; refer to the ACPI specification 5.0, section 5.2.6 System
|
||||||
|
# Description Table Header. If a header field is not overridden, then the
|
||||||
|
# corresponding value from the concatenated blob is used (in case of @file), or
|
||||||
|
# it is filled in with a hard-coded value (in case of @data).
|
||||||
|
#
|
||||||
|
# String fields are copied into the matching ACPI member from lowest address
|
||||||
|
# upwards, and silently truncated / NUL-padded to length.
|
||||||
|
#
|
||||||
|
# @sig: table signature / identifier (4 bytes)
|
||||||
|
#
|
||||||
|
# @rev: table revision number (dependent on signature, 1 byte)
|
||||||
|
#
|
||||||
|
# @oem_id: OEM identifier (6 bytes)
|
||||||
|
#
|
||||||
|
# @oem_table_id: OEM table identifier (8 bytes)
|
||||||
|
#
|
||||||
|
# @oem_rev: OEM-supplied revision number (4 bytes)
|
||||||
|
#
|
||||||
|
# @asl_compiler_id: identifier of the utility that created the table
|
||||||
|
# (4 bytes)
|
||||||
|
#
|
||||||
|
# @asl_compiler_rev: revision number of the utility that created the
|
||||||
|
# table (4 bytes)
|
||||||
|
#
|
||||||
|
# @file: colon (:) separated list of pathnames to load and
|
||||||
|
# concatenate as table data. The resultant binary blob is expected to
|
||||||
|
# have an ACPI table header. At least one file is required. This field
|
||||||
|
# excludes @data.
|
||||||
|
#
|
||||||
|
# @data: colon (:) separated list of pathnames to load and
|
||||||
|
# concatenate as table data. The resultant binary blob must not have an
|
||||||
|
# ACPI table header. At least one file is required. This field excludes
|
||||||
|
# @file.
|
||||||
|
#
|
||||||
|
# Since: 1.5
|
||||||
|
##
|
||||||
|
{ 'struct': 'AcpiTableOptions',
|
||||||
|
'data': {
|
||||||
|
'*sig': 'str',
|
||||||
|
'*rev': 'uint8',
|
||||||
|
'*oem_id': 'str',
|
||||||
|
'*oem_table_id': 'str',
|
||||||
|
'*oem_rev': 'uint32',
|
||||||
|
'*asl_compiler_id': 'str',
|
||||||
|
'*asl_compiler_rev': 'uint32',
|
||||||
|
'*file': 'str',
|
||||||
|
'*data': 'str' }}
|
||||||
|
|
||||||
|
##
|
||||||
|
# @ACPISlotType:
|
||||||
|
#
|
||||||
|
# @DIMM: memory slot
|
||||||
|
# @CPU: logical CPU slot (since 2.7)
|
||||||
|
##
|
||||||
|
{ 'enum': 'ACPISlotType', 'data': [ 'DIMM', 'CPU' ] }
|
||||||
|
|
||||||
|
##
|
||||||
|
# @ACPIOSTInfo:
|
||||||
|
#
|
||||||
|
# OSPM Status Indication for a device
|
||||||
|
# For description of possible values of @source and @status fields
|
||||||
|
# see "_OST (OSPM Status Indication)" chapter of ACPI5.0 spec.
|
||||||
|
#
|
||||||
|
# @device: device ID associated with slot
|
||||||
|
#
|
||||||
|
# @slot: slot ID, unique per slot of a given @slot-type
|
||||||
|
#
|
||||||
|
# @slot-type: type of the slot
|
||||||
|
#
|
||||||
|
# @source: an integer containing the source event
|
||||||
|
#
|
||||||
|
# @status: an integer containing the status code
|
||||||
|
#
|
||||||
|
# Since: 2.1
|
||||||
|
##
|
||||||
|
{ 'struct': 'ACPIOSTInfo',
|
||||||
|
'data' : { '*device': 'str',
|
||||||
|
'slot': 'str',
|
||||||
|
'slot-type': 'ACPISlotType',
|
||||||
|
'source': 'int',
|
||||||
|
'status': 'int' } }
|
||||||
|
|
||||||
|
##
|
||||||
|
# @query-acpi-ospm-status:
|
||||||
|
#
|
||||||
|
# Return a list of ACPIOSTInfo for devices that support status
|
||||||
|
# reporting via ACPI _OST method.
|
||||||
|
#
|
||||||
|
# Since: 2.1
|
||||||
|
#
|
||||||
|
# Example:
|
||||||
|
#
|
||||||
|
# -> { "execute": "query-acpi-ospm-status" }
|
||||||
|
# <- { "return": [ { "device": "d1", "slot": "0", "slot-type": "DIMM", "source": 1, "status": 0},
|
||||||
|
# { "slot": "1", "slot-type": "DIMM", "source": 0, "status": 0},
|
||||||
|
# { "slot": "2", "slot-type": "DIMM", "source": 0, "status": 0},
|
||||||
|
# { "slot": "3", "slot-type": "DIMM", "source": 0, "status": 0}
|
||||||
|
# ]}
|
||||||
|
#
|
||||||
|
##
|
||||||
|
{ 'command': 'query-acpi-ospm-status', 'returns': ['ACPIOSTInfo'] }
|
||||||
|
|
||||||
|
##
|
||||||
|
# @ACPI_DEVICE_OST:
|
||||||
|
#
|
||||||
|
# Emitted when guest executes ACPI _OST method.
|
||||||
|
#
|
||||||
|
# @info: OSPM Status Indication
|
||||||
|
#
|
||||||
|
# Since: 2.1
|
||||||
|
#
|
||||||
|
# Example:
|
||||||
|
#
|
||||||
|
# <- { "event": "ACPI_DEVICE_OST",
|
||||||
|
# "data": { "device": "d1", "slot": "0",
|
||||||
|
# "slot-type": "DIMM", "source": 1, "status": 0 } }
|
||||||
|
#
|
||||||
|
##
|
||||||
|
{ 'event': 'ACPI_DEVICE_OST',
|
||||||
|
'data': { 'info': 'ACPIOSTInfo' } }
|
@ -14,6 +14,7 @@ util_ss.add(files(
|
|||||||
))
|
))
|
||||||
|
|
||||||
qapi_all_modules = [
|
qapi_all_modules = [
|
||||||
|
'acpi',
|
||||||
'audio',
|
'audio',
|
||||||
'authz',
|
'authz',
|
||||||
'block-core',
|
'block-core',
|
||||||
|
131
qapi/misc.json
131
qapi/misc.json
@ -970,64 +970,6 @@
|
|||||||
##
|
##
|
||||||
{ 'command': 'query-fdsets', 'returns': ['FdsetInfo'] }
|
{ 'command': 'query-fdsets', 'returns': ['FdsetInfo'] }
|
||||||
|
|
||||||
##
|
|
||||||
# @AcpiTableOptions:
|
|
||||||
#
|
|
||||||
# Specify an ACPI table on the command line to load.
|
|
||||||
#
|
|
||||||
# At most one of @file and @data can be specified. The list of files specified
|
|
||||||
# by any one of them is loaded and concatenated in order. If both are omitted,
|
|
||||||
# @data is implied.
|
|
||||||
#
|
|
||||||
# Other fields / optargs can be used to override fields of the generic ACPI
|
|
||||||
# table header; refer to the ACPI specification 5.0, section 5.2.6 System
|
|
||||||
# Description Table Header. If a header field is not overridden, then the
|
|
||||||
# corresponding value from the concatenated blob is used (in case of @file), or
|
|
||||||
# it is filled in with a hard-coded value (in case of @data).
|
|
||||||
#
|
|
||||||
# String fields are copied into the matching ACPI member from lowest address
|
|
||||||
# upwards, and silently truncated / NUL-padded to length.
|
|
||||||
#
|
|
||||||
# @sig: table signature / identifier (4 bytes)
|
|
||||||
#
|
|
||||||
# @rev: table revision number (dependent on signature, 1 byte)
|
|
||||||
#
|
|
||||||
# @oem_id: OEM identifier (6 bytes)
|
|
||||||
#
|
|
||||||
# @oem_table_id: OEM table identifier (8 bytes)
|
|
||||||
#
|
|
||||||
# @oem_rev: OEM-supplied revision number (4 bytes)
|
|
||||||
#
|
|
||||||
# @asl_compiler_id: identifier of the utility that created the table
|
|
||||||
# (4 bytes)
|
|
||||||
#
|
|
||||||
# @asl_compiler_rev: revision number of the utility that created the
|
|
||||||
# table (4 bytes)
|
|
||||||
#
|
|
||||||
# @file: colon (:) separated list of pathnames to load and
|
|
||||||
# concatenate as table data. The resultant binary blob is expected to
|
|
||||||
# have an ACPI table header. At least one file is required. This field
|
|
||||||
# excludes @data.
|
|
||||||
#
|
|
||||||
# @data: colon (:) separated list of pathnames to load and
|
|
||||||
# concatenate as table data. The resultant binary blob must not have an
|
|
||||||
# ACPI table header. At least one file is required. This field excludes
|
|
||||||
# @file.
|
|
||||||
#
|
|
||||||
# Since: 1.5
|
|
||||||
##
|
|
||||||
{ 'struct': 'AcpiTableOptions',
|
|
||||||
'data': {
|
|
||||||
'*sig': 'str',
|
|
||||||
'*rev': 'uint8',
|
|
||||||
'*oem_id': 'str',
|
|
||||||
'*oem_table_id': 'str',
|
|
||||||
'*oem_rev': 'uint32',
|
|
||||||
'*asl_compiler_id': 'str',
|
|
||||||
'*asl_compiler_rev': 'uint32',
|
|
||||||
'*file': 'str',
|
|
||||||
'*data': 'str' }}
|
|
||||||
|
|
||||||
##
|
##
|
||||||
# @CommandLineParameterType:
|
# @CommandLineParameterType:
|
||||||
#
|
#
|
||||||
@ -1121,79 +1063,6 @@
|
|||||||
'returns': ['CommandLineOptionInfo'],
|
'returns': ['CommandLineOptionInfo'],
|
||||||
'allow-preconfig': true }
|
'allow-preconfig': true }
|
||||||
|
|
||||||
##
|
|
||||||
# @ACPISlotType:
|
|
||||||
#
|
|
||||||
# @DIMM: memory slot
|
|
||||||
# @CPU: logical CPU slot (since 2.7)
|
|
||||||
##
|
|
||||||
{ 'enum': 'ACPISlotType', 'data': [ 'DIMM', 'CPU' ] }
|
|
||||||
|
|
||||||
##
|
|
||||||
# @ACPIOSTInfo:
|
|
||||||
#
|
|
||||||
# OSPM Status Indication for a device
|
|
||||||
# For description of possible values of @source and @status fields
|
|
||||||
# see "_OST (OSPM Status Indication)" chapter of ACPI5.0 spec.
|
|
||||||
#
|
|
||||||
# @device: device ID associated with slot
|
|
||||||
#
|
|
||||||
# @slot: slot ID, unique per slot of a given @slot-type
|
|
||||||
#
|
|
||||||
# @slot-type: type of the slot
|
|
||||||
#
|
|
||||||
# @source: an integer containing the source event
|
|
||||||
#
|
|
||||||
# @status: an integer containing the status code
|
|
||||||
#
|
|
||||||
# Since: 2.1
|
|
||||||
##
|
|
||||||
{ 'struct': 'ACPIOSTInfo',
|
|
||||||
'data' : { '*device': 'str',
|
|
||||||
'slot': 'str',
|
|
||||||
'slot-type': 'ACPISlotType',
|
|
||||||
'source': 'int',
|
|
||||||
'status': 'int' } }
|
|
||||||
|
|
||||||
##
|
|
||||||
# @query-acpi-ospm-status:
|
|
||||||
#
|
|
||||||
# Return a list of ACPIOSTInfo for devices that support status
|
|
||||||
# reporting via ACPI _OST method.
|
|
||||||
#
|
|
||||||
# Since: 2.1
|
|
||||||
#
|
|
||||||
# Example:
|
|
||||||
#
|
|
||||||
# -> { "execute": "query-acpi-ospm-status" }
|
|
||||||
# <- { "return": [ { "device": "d1", "slot": "0", "slot-type": "DIMM", "source": 1, "status": 0},
|
|
||||||
# { "slot": "1", "slot-type": "DIMM", "source": 0, "status": 0},
|
|
||||||
# { "slot": "2", "slot-type": "DIMM", "source": 0, "status": 0},
|
|
||||||
# { "slot": "3", "slot-type": "DIMM", "source": 0, "status": 0}
|
|
||||||
# ]}
|
|
||||||
#
|
|
||||||
##
|
|
||||||
{ 'command': 'query-acpi-ospm-status', 'returns': ['ACPIOSTInfo'] }
|
|
||||||
|
|
||||||
##
|
|
||||||
# @ACPI_DEVICE_OST:
|
|
||||||
#
|
|
||||||
# Emitted when guest executes ACPI _OST method.
|
|
||||||
#
|
|
||||||
# @info: OSPM Status Indication
|
|
||||||
#
|
|
||||||
# Since: 2.1
|
|
||||||
#
|
|
||||||
# Example:
|
|
||||||
#
|
|
||||||
# <- { "event": "ACPI_DEVICE_OST",
|
|
||||||
# "data": { "device": "d1", "slot": "0",
|
|
||||||
# "slot-type": "DIMM", "source": 1, "status": 0 } }
|
|
||||||
#
|
|
||||||
##
|
|
||||||
{ 'event': 'ACPI_DEVICE_OST',
|
|
||||||
'data': { 'info': 'ACPIOSTInfo' } }
|
|
||||||
|
|
||||||
##
|
##
|
||||||
# @ReplayMode:
|
# @ReplayMode:
|
||||||
#
|
#
|
||||||
|
@ -85,3 +85,4 @@
|
|||||||
{ 'include': 'misc.json' }
|
{ 'include': 'misc.json' }
|
||||||
{ 'include': 'misc-target.json' }
|
{ 'include': 'misc-target.json' }
|
||||||
{ 'include': 'audio.json' }
|
{ 'include': 'audio.json' }
|
||||||
|
{ 'include': 'acpi.json' }
|
||||||
|
Loading…
Reference in New Issue
Block a user