[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH v2 1/2] qapi/machine.json: add DEVICE_UNPLUG_ERROR QAPI event
From: |
Markus Armbruster |
Subject: |
Re: [PATCH v2 1/2] qapi/machine.json: add DEVICE_UNPLUG_ERROR QAPI event |
Date: |
Fri, 11 Jun 2021 14:12:47 +0200 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/27.2 (gnu/linux) |
Daniel Henrique Barboza <danielhb413@gmail.com> writes:
> 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_ERROR event that can be used by all
> unplug errors in the future.
>
> Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com>
> ---
> qapi/machine.json | 23 +++++++++++++++++++++++
> 1 file changed, 23 insertions(+)
>
> diff --git a/qapi/machine.json b/qapi/machine.json
> index 58a9c86b36..f0c7e56be0 100644
> --- a/qapi/machine.json
> +++ b/qapi/machine.json
> @@ -1274,3 +1274,26 @@
> ##
> { 'event': 'MEM_UNPLUG_ERROR',
> 'data': { 'device': 'str', 'msg': 'str' } }
> +
> +##
> +# @DEVICE_UNPLUG_ERROR:
> +#
> +# Emitted when a device hot unplug error occurs.
> +#
> +# @device: device name
> +#
> +# @msg: Informative message
> +#
> +# Since: 6.1
> +#
> +# Example:
> +#
> +# <- { "event": "DEVICE_UNPLUG_ERROR"
> +# "data": { "device": "dimm1",
> +# "msg": "Memory hotunplug rejected by the guest for device
> dimm1"
> +# },
> +# "timestamp": { "seconds": 1615570772, "microseconds": 202844 } }
> +#
> +##
> +{ 'event': 'DEVICE_UNPLUG_ERROR',
> + 'data': { 'device': 'str', 'msg': 'str' } }
Missing: update of device_add's doc comment in qdev.json:
# Notes: When this command completes, the device may not be removed from the
# guest. Hot removal is an operation that requires guest
cooperation.
# 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.
This sure could use some polish.
If I understand things correctly, we're aiming for the following device
unplug protocol:
Unplug the device with device_del (or possibly equivalent)
If we know we can't unplug the device, fail immediately. Also emit
DEVICE_UNPLUG_ERROR.
If possible, unplug the device synchronously and succeed. Also emit
DEVICE_DELETED.
Else, initiate unplug and succeed.
When unplug finishes, emit either DEVICE_DELETED or
DEVICE_UNPLUG_ERROR.
For some machines and devices, unplug may never finish.
Correct?
Any particular reason for not putting event DEVICE_UNPLUG_ERROR next to
DEVICE_DELETED in qdev.json?
[PATCH v2 2/2] spapr: use DEVICE_UNPLUG_ERROR to report unplug errors, Daniel Henrique Barboza, 2021/06/04
Re: [PATCH v2 0/2] DEVICE_UNPLUG_ERROR QAPI event, David Gibson, 2021/06/06