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
|
||||
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
|
||||
------------------------
|
||||
|
||||
|
@ -1305,6 +1305,10 @@
|
||||
#
|
||||
# @msg: Informative message
|
||||
#
|
||||
# Features:
|
||||
# @deprecated: This event is deprecated. Use @DEVICE_UNPLUG_GUEST_ERROR
|
||||
# instead.
|
||||
#
|
||||
# Since: 2.4
|
||||
#
|
||||
# Example:
|
||||
@ -1317,7 +1321,8 @@
|
||||
#
|
||||
##
|
||||
{ 'event': 'MEM_UNPLUG_ERROR',
|
||||
'data': { 'device': 'str', 'msg': 'str' } }
|
||||
'data': { 'device': 'str', 'msg': 'str' },
|
||||
'features': ['deprecated'] }
|
||||
|
||||
##
|
||||
# @SMPConfiguration:
|
||||
|
@ -84,7 +84,9 @@
|
||||
# This command merely requests that the guest begin the hot removal
|
||||
# process. Completion of the device removal process is signaled with a
|
||||
# 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
|
||||
#
|
||||
@ -124,3 +126,26 @@
|
||||
##
|
||||
{ 'event': 'DEVICE_DELETED',
|
||||
'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. */
|
||||
}
|
||||
|
||||
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