docs/system/deprecated.rst | 10 ++++++++++ hw/acpi/memory_hotplug.c | 13 +++++++++++-- hw/ppc/spapr.c | 8 ++++++++ hw/ppc/spapr_drc.c | 15 +++++++++------ qapi/machine.json | 6 +++++- qapi/qdev.json | 27 ++++++++++++++++++++++++++- 6 files changed, 69 insertions(+), 10 deletions(-)
Hi,
In this new version we're now sending both MEM_UNPLUG_ERROR and
the new DEVICE_UNPLUG_ERROR events to avoid breaking existing
listeners of MEM_UNPLUG_ERROR, which is now marked as deprecated.
All emitters of MEM_UNPLUG_ERROR are now emitting DEVICE_UNPLUG_ERROR
as well.
changes from v2:
- patch 1:
* moved DEVICE_UNPLUG_ERROR declaration to qapi/qdev.json
* updated 'device_del' description
* added 'deprecated' notice on MEM_UNPLUG_ERROR
* added MEM_UNPLUG_ERROR 'deprecated' info in docs/system/deprecated.rst
- patch 2:
* send both MEM_UNPLUG_ERROR and DEVICE_UNPLUG_ERROR
- patch 3 (new):
* send DEVICE_UNPLUG_ERROR in acpi/memory_hotplug.c
- v2 link: https://lists.gnu.org/archive/html/qemu-devel/2021-06/msg01304.html
changes from v1:
- former patches 1 and 2: dropped
- patch 1 (former 3): changed the version to '6.1'
- patch 2 (former 4): add a DEVICE_UNPLUG_ERROR event in the device
unplug error path of CPUs and DIMMs
- v1 link: https://lists.gnu.org/archive/html/qemu-devel/2021-03/msg04682.html
Daniel Henrique Barboza (3):
qapi/qdev.json: add DEVICE_UNPLUG_ERROR QAPI event
spapr: use DEVICE_UNPLUG_ERROR to report unplug errors
memory_hotplug.c: send DEVICE_UNPLUG_ERROR in
acpi_memory_hotplug_write()
docs/system/deprecated.rst | 10 ++++++++++
hw/acpi/memory_hotplug.c | 13 +++++++++++--
hw/ppc/spapr.c | 8 ++++++++
hw/ppc/spapr_drc.c | 15 +++++++++------
qapi/machine.json | 6 +++++-
qapi/qdev.json | 27 ++++++++++++++++++++++++++-
6 files changed, 69 insertions(+), 10 deletions(-)
--
2.31.1
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.
With this new generic event, MEM_UNPLUG_ERROR is now marked as deprecated.
Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com>
---
docs/system/deprecated.rst | 10 ++++++++++
qapi/machine.json | 6 +++++-
qapi/qdev.json | 27 ++++++++++++++++++++++++++-
3 files changed, 41 insertions(+), 2 deletions(-)
diff --git a/docs/system/deprecated.rst b/docs/system/deprecated.rst
index e2e0090878..c8200d99d4 100644
--- a/docs/system/deprecated.rst
+++ b/docs/system/deprecated.rst
@@ -192,6 +192,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.1)
+''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+
+Use the more generic event ``DEVICE_UNPLUG_ERROR`` instead.
+
+
System emulator machines
------------------------
diff --git a/qapi/machine.json b/qapi/machine.json
index e4d0f9b24f..91dc520734 100644
--- a/qapi/machine.json
+++ b/qapi/machine.json
@@ -1271,6 +1271,9 @@
#
# @msg: Informative message
#
+# Features:
+# @deprecated: This event is deprecated. Use @DEVICE_UNPLUG_ERROR instead.
+#
# Since: 2.4
#
# Example:
@@ -1283,4 +1286,5 @@
#
##
{ 'event': 'MEM_UNPLUG_ERROR',
- 'data': { 'device': 'str', 'msg': 'str' } }
+ 'data': { 'device': 'str', 'msg': 'str' },
+ 'features': ['deprecated'] }
diff --git a/qapi/qdev.json b/qapi/qdev.json
index b83178220b..349d7439fa 100644
--- a/qapi/qdev.json
+++ b/qapi/qdev.json
@@ -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 an error in the hot removal process is detected,
+# the device will not be removed and a DEVICE_UNPLUG_ERROR event is
+# sent.
#
# Since: 0.14
#
@@ -124,3 +126,26 @@
##
{ 'event': 'DEVICE_DELETED',
'data': { '*device': 'str', 'path': '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' } }
--
2.31.1
On Mon, Jun 21, 2021 at 05:59:05PM -0300, Daniel Henrique Barboza wrote:
> 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.
Something seems to have gone weirdly wrong with the formatting here.
> 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.
>
> With this new generic event, MEM_UNPLUG_ERROR is now marked as deprecated.
>
> Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com>
Apart from that
Reviewed-by: David Gibson <david@gibson.dropbear.id.au>
> ---
> docs/system/deprecated.rst | 10 ++++++++++
> qapi/machine.json | 6 +++++-
> qapi/qdev.json | 27 ++++++++++++++++++++++++++-
> 3 files changed, 41 insertions(+), 2 deletions(-)
>
> diff --git a/docs/system/deprecated.rst b/docs/system/deprecated.rst
> index e2e0090878..c8200d99d4 100644
> --- a/docs/system/deprecated.rst
> +++ b/docs/system/deprecated.rst
> @@ -192,6 +192,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.1)
> +''''''''''''''''''''''''''''''''''''''''''''''''''''''''
> +
> +Use the more generic event ``DEVICE_UNPLUG_ERROR`` instead.
> +
> +
> System emulator machines
> ------------------------
>
> diff --git a/qapi/machine.json b/qapi/machine.json
> index e4d0f9b24f..91dc520734 100644
> --- a/qapi/machine.json
> +++ b/qapi/machine.json
> @@ -1271,6 +1271,9 @@
> #
> # @msg: Informative message
> #
> +# Features:
> +# @deprecated: This event is deprecated. Use @DEVICE_UNPLUG_ERROR instead.
> +#
> # Since: 2.4
> #
> # Example:
> @@ -1283,4 +1286,5 @@
> #
> ##
> { 'event': 'MEM_UNPLUG_ERROR',
> - 'data': { 'device': 'str', 'msg': 'str' } }
> + 'data': { 'device': 'str', 'msg': 'str' },
> + 'features': ['deprecated'] }
> diff --git a/qapi/qdev.json b/qapi/qdev.json
> index b83178220b..349d7439fa 100644
> --- a/qapi/qdev.json
> +++ b/qapi/qdev.json
> @@ -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 an error in the hot removal process is detected,
> +# the device will not be removed and a DEVICE_UNPLUG_ERROR event is
> +# sent.
> #
> # Since: 0.14
> #
> @@ -124,3 +126,26 @@
> ##
> { 'event': 'DEVICE_DELETED',
> 'data': { '*device': 'str', 'path': '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' } }
>
--
David Gibson | I'll have my music baroque, and my code
david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_
| _way_ _around_!
http://www.ozlabs.org/~dgibson
On 7/5/21 1:52 AM, David Gibson wrote:
> On Mon, Jun 21, 2021 at 05:59:05PM -0300, Daniel Henrique Barboza wrote:
>> 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.
>
> Something seems to have gone weirdly wrong with the formatting here.
I have no idea what happened lol
>
>> 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.
>>
>> With this new generic event, MEM_UNPLUG_ERROR is now marked as deprecated.
>>
>> Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com>
>
> Apart from that
> Reviewed-by: David Gibson <david@gibson.dropbear.id.au>
Thanks for the reviews! I'll resend the series (hopefully with the proper
formatting) with your R-bs.
Daniel
>
>> ---
>> docs/system/deprecated.rst | 10 ++++++++++
>> qapi/machine.json | 6 +++++-
>> qapi/qdev.json | 27 ++++++++++++++++++++++++++-
>> 3 files changed, 41 insertions(+), 2 deletions(-)
>>
>> diff --git a/docs/system/deprecated.rst b/docs/system/deprecated.rst
>> index e2e0090878..c8200d99d4 100644
>> --- a/docs/system/deprecated.rst
>> +++ b/docs/system/deprecated.rst
>> @@ -192,6 +192,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.1)
>> +''''''''''''''''''''''''''''''''''''''''''''''''''''''''
>> +
>> +Use the more generic event ``DEVICE_UNPLUG_ERROR`` instead.
>> +
>> +
>> System emulator machines
>> ------------------------
>>
>> diff --git a/qapi/machine.json b/qapi/machine.json
>> index e4d0f9b24f..91dc520734 100644
>> --- a/qapi/machine.json
>> +++ b/qapi/machine.json
>> @@ -1271,6 +1271,9 @@
>> #
>> # @msg: Informative message
>> #
>> +# Features:
>> +# @deprecated: This event is deprecated. Use @DEVICE_UNPLUG_ERROR instead.
>> +#
>> # Since: 2.4
>> #
>> # Example:
>> @@ -1283,4 +1286,5 @@
>> #
>> ##
>> { 'event': 'MEM_UNPLUG_ERROR',
>> - 'data': { 'device': 'str', 'msg': 'str' } }
>> + 'data': { 'device': 'str', 'msg': 'str' },
>> + 'features': ['deprecated'] }
>> diff --git a/qapi/qdev.json b/qapi/qdev.json
>> index b83178220b..349d7439fa 100644
>> --- a/qapi/qdev.json
>> +++ b/qapi/qdev.json
>> @@ -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 an error in the hot removal process is detected,
>> +# the device will not be removed and a DEVICE_UNPLUG_ERROR event is
>> +# sent.
>> #
>> # Since: 0.14
>> #
>> @@ -124,3 +126,26 @@
>> ##
>> { 'event': 'DEVICE_DELETED',
>> 'data': { '*device': 'str', 'path': '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' } }
>>
>
© 2016 - 2026 Red Hat, Inc.