qapi/qdev.json: add DEVICE_UNPLUG_GUEST_ERROR QAPI event
At this moment we only provide one event to report a hotunplug error, MEM_UNPLUG_ERROR. As of Linux kernel 5.12 and QEMU 6.0.0, the pseries machine is now able to report unplug errors for other device types, such as CPUs. Instead of creating a (device_type)_UNPLUG_ERROR for each new device, create a generic DEVICE_UNPLUG_GUEST_ERROR event that can be used by all guest side unplug errors in the future. This event has a similar API as the existing DEVICE_DELETED event, always providing the QOM path of the device and dev->id if there's any. With this new generic event, MEM_UNPLUG_ERROR is now marked as deprecated. Reviewed-by: David Gibson <david@gibson.dropbear.id.au> Reviewed-by: Greg Kurz <groug@kaod.org> Reviewed-by: Markus Armbruster <armbru@redhat.com> Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com> Message-Id: <20210907004755.424931-6-danielhb413@gmail.com> [dwg: Correct missing ')' in stubs/qdev.c] Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
This commit is contained in:
parent
a5bc19c542
commit
d43f1670c7
@ -238,6 +238,16 @@ The ``I7200`` guest CPU relies on the nanoMIPS ISA, which is deprecated
|
|||||||
(the ISA has never been upstreamed to a compiler toolchain). Therefore
|
(the ISA has never been upstreamed to a compiler toolchain). Therefore
|
||||||
this CPU is also deprecated.
|
this CPU is also deprecated.
|
||||||
|
|
||||||
|
|
||||||
|
QEMU API (QAPI) events
|
||||||
|
----------------------
|
||||||
|
|
||||||
|
``MEM_UNPLUG_ERROR`` (since 6.2)
|
||||||
|
''''''''''''''''''''''''''''''''''''''''''''''''''''''''
|
||||||
|
|
||||||
|
Use the more generic event ``DEVICE_UNPLUG_GUEST_ERROR`` instead.
|
||||||
|
|
||||||
|
|
||||||
System emulator machines
|
System emulator machines
|
||||||
------------------------
|
------------------------
|
||||||
|
|
||||||
|
@ -1305,6 +1305,10 @@
|
|||||||
#
|
#
|
||||||
# @msg: Informative message
|
# @msg: Informative message
|
||||||
#
|
#
|
||||||
|
# Features:
|
||||||
|
# @deprecated: This event is deprecated. Use @DEVICE_UNPLUG_GUEST_ERROR
|
||||||
|
# instead.
|
||||||
|
#
|
||||||
# Since: 2.4
|
# Since: 2.4
|
||||||
#
|
#
|
||||||
# Example:
|
# Example:
|
||||||
@ -1317,7 +1321,8 @@
|
|||||||
#
|
#
|
||||||
##
|
##
|
||||||
{ 'event': 'MEM_UNPLUG_ERROR',
|
{ 'event': 'MEM_UNPLUG_ERROR',
|
||||||
'data': { 'device': 'str', 'msg': 'str' } }
|
'data': { 'device': 'str', 'msg': 'str' },
|
||||||
|
'features': ['deprecated'] }
|
||||||
|
|
||||||
##
|
##
|
||||||
# @SMPConfiguration:
|
# @SMPConfiguration:
|
||||||
|
@ -84,7 +84,9 @@
|
|||||||
# This command merely requests that the guest begin the hot removal
|
# This command merely requests that the guest begin the hot removal
|
||||||
# process. Completion of the device removal process is signaled with a
|
# process. Completion of the device removal process is signaled with a
|
||||||
# DEVICE_DELETED event. Guest reset will automatically complete removal
|
# DEVICE_DELETED event. Guest reset will automatically complete removal
|
||||||
# for all devices.
|
# for all devices. If a guest-side error in the hot removal process is
|
||||||
|
# detected, the device will not be removed and a DEVICE_UNPLUG_GUEST_ERROR
|
||||||
|
# event is sent. Some errors cannot be detected.
|
||||||
#
|
#
|
||||||
# Since: 0.14
|
# Since: 0.14
|
||||||
#
|
#
|
||||||
@ -124,3 +126,26 @@
|
|||||||
##
|
##
|
||||||
{ 'event': 'DEVICE_DELETED',
|
{ 'event': 'DEVICE_DELETED',
|
||||||
'data': { '*device': 'str', 'path': 'str' } }
|
'data': { '*device': 'str', 'path': 'str' } }
|
||||||
|
|
||||||
|
##
|
||||||
|
# @DEVICE_UNPLUG_GUEST_ERROR:
|
||||||
|
#
|
||||||
|
# Emitted when a device hot unplug fails due to a guest reported error.
|
||||||
|
#
|
||||||
|
# @device: the device's ID if it has one
|
||||||
|
#
|
||||||
|
# @path: the device's QOM path
|
||||||
|
#
|
||||||
|
# Since: 6.2
|
||||||
|
#
|
||||||
|
# Example:
|
||||||
|
#
|
||||||
|
# <- { "event": "DEVICE_UNPLUG_GUEST_ERROR"
|
||||||
|
# "data": { "device": "core1",
|
||||||
|
# "path": "/machine/peripheral/core1" },
|
||||||
|
# },
|
||||||
|
# "timestamp": { "seconds": 1615570772, "microseconds": 202844 } }
|
||||||
|
#
|
||||||
|
##
|
||||||
|
{ 'event': 'DEVICE_UNPLUG_GUEST_ERROR',
|
||||||
|
'data': { '*device': 'str', 'path': 'str' } }
|
||||||
|
@ -21,3 +21,10 @@ void qapi_event_send_device_deleted(bool has_device,
|
|||||||
{
|
{
|
||||||
/* Nothing to do. */
|
/* Nothing to do. */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void qapi_event_send_device_unplug_guest_error(bool has_device,
|
||||||
|
const char *device,
|
||||||
|
const char *path)
|
||||||
|
{
|
||||||
|
/* Nothing to do. */
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user