* [PATCH v3 0/3] DEVICE_UNPLUG_ERROR QAPI event
@ 2021-06-21 20:59 Daniel Henrique Barboza
2021-06-21 20:59 ` [PATCH v3 1/3] qapi/qdev.json: add " Daniel Henrique Barboza
` (2 more replies)
0 siblings, 3 replies; 8+ messages in thread
From: Daniel Henrique Barboza @ 2021-06-21 20:59 UTC (permalink / raw)
To: qemu-devel
Cc: Daniel Henrique Barboza, armbru, groug, qemu-ppc, eblake, david
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
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH v3 1/3] qapi/qdev.json: add DEVICE_UNPLUG_ERROR QAPI event
2021-06-21 20:59 [PATCH v3 0/3] DEVICE_UNPLUG_ERROR QAPI event Daniel Henrique Barboza
@ 2021-06-21 20:59 ` Daniel Henrique Barboza
2021-07-05 4:52 ` David Gibson
2021-06-21 20:59 ` [PATCH v3 2/3] spapr: use DEVICE_UNPLUG_ERROR to report unplug errors Daniel Henrique Barboza
2021-06-21 20:59 ` [PATCH v3 3/3] memory_hotplug.c: send DEVICE_UNPLUG_ERROR in acpi_memory_hotplug_write() Daniel Henrique Barboza
2 siblings, 1 reply; 8+ messages in thread
From: Daniel Henrique Barboza @ 2021-06-21 20:59 UTC (permalink / raw)
To: qemu-devel
Cc: Daniel Henrique Barboza, armbru, groug, qemu-ppc, eblake, david
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
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH v3 2/3] spapr: use DEVICE_UNPLUG_ERROR to report unplug errors
2021-06-21 20:59 [PATCH v3 0/3] DEVICE_UNPLUG_ERROR QAPI event Daniel Henrique Barboza
2021-06-21 20:59 ` [PATCH v3 1/3] qapi/qdev.json: add " Daniel Henrique Barboza
@ 2021-06-21 20:59 ` Daniel Henrique Barboza
2021-07-05 4:55 ` David Gibson
2021-06-21 20:59 ` [PATCH v3 3/3] memory_hotplug.c: send DEVICE_UNPLUG_ERROR in acpi_memory_hotplug_write() Daniel Henrique Barboza
2 siblings, 1 reply; 8+ messages in thread
From: Daniel Henrique Barboza @ 2021-06-21 20:59 UTC (permalink / raw)
To: qemu-devel
Cc: Daniel Henrique Barboza, armbru, groug, qemu-ppc, eblake, david
Linux Kernel 5.12 is now unisolating CPU DRCs in the device_removal
error path, signalling that the hotunplug process wasn't successful.
This allow us to send a DEVICE_UNPLUG_ERROR in drc_unisolate_logical()
to signal this error to the management layer.
We also have another error path in spapr_memory_unplug_rollback() for
configured LMB DRCs. Kernels older than 5.13 will not unisolate the LMBs
in the hotunplug error path, but it will reconfigure them. Let's send
the DEVICE_UNPLUG_ERROR event in that code path as well to cover the
case of older kernels.
Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com>
---
hw/ppc/spapr.c | 8 ++++++++
hw/ppc/spapr_drc.c | 15 +++++++++------
2 files changed, 17 insertions(+), 6 deletions(-)
diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
index 4dd90b75cc..fc071a1767 100644
--- a/hw/ppc/spapr.c
+++ b/hw/ppc/spapr.c
@@ -29,6 +29,7 @@
#include "qemu/datadir.h"
#include "qapi/error.h"
#include "qapi/qapi-events-machine.h"
+#include "qapi/qapi-events-qdev.h"
#include "qapi/visitor.h"
#include "sysemu/sysemu.h"
#include "sysemu/hostmem.h"
@@ -3641,7 +3642,14 @@ void spapr_memory_unplug_rollback(SpaprMachineState *spapr, DeviceState *dev)
*/
qapi_error = g_strdup_printf("Memory hotunplug rejected by the guest "
"for device %s", dev->id);
+
+ /*
+ * Send both MEM_UNPLUG_ERROR and DEVICE_UNPLUG_ERROR
+ * while the deprecation of MEM_UNPLUG_ERROR is
+ * pending.
+ */
qapi_event_send_mem_unplug_error(dev->id, qapi_error);
+ qapi_event_send_device_unplug_error(dev->id, qapi_error);
}
/* Callback to be called during DRC release. */
diff --git a/hw/ppc/spapr_drc.c b/hw/ppc/spapr_drc.c
index a2f2634601..45a7b1aa16 100644
--- a/hw/ppc/spapr_drc.c
+++ b/hw/ppc/spapr_drc.c
@@ -17,6 +17,8 @@
#include "hw/ppc/spapr_drc.h"
#include "qom/object.h"
#include "migration/vmstate.h"
+#include "qapi/error.h"
+#include "qapi/qapi-events-qdev.h"
#include "qapi/visitor.h"
#include "qemu/error-report.h"
#include "hw/ppc/spapr.h" /* for RTAS return codes */
@@ -160,6 +162,10 @@ static uint32_t drc_unisolate_logical(SpaprDrc *drc)
* means that the kernel is refusing the removal.
*/
if (drc->unplug_requested && drc->dev) {
+ const char qapi_error_fmt[] = "Device hotunplug rejected by the "
+ "guest for device %s";
+ g_autofree char *qapi_error = NULL;
+
if (spapr_drc_type(drc) == SPAPR_DR_CONNECTOR_TYPE_LMB) {
spapr = SPAPR_MACHINE(qdev_get_machine());
@@ -167,13 +173,10 @@ static uint32_t drc_unisolate_logical(SpaprDrc *drc)
}
drc->unplug_requested = false;
- error_report("Device hotunplug rejected by the guest "
- "for device %s", drc->dev->id);
+ error_report(qapi_error_fmt, drc->dev->id);
- /*
- * TODO: send a QAPI DEVICE_UNPLUG_ERROR event when
- * it is implemented.
- */
+ qapi_error = g_strdup_printf(qapi_error_fmt, drc->dev->id);
+ qapi_event_send_device_unplug_error(drc->dev->id, qapi_error);
}
return RTAS_OUT_SUCCESS; /* Nothing to do */
--
2.31.1
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH v3 3/3] memory_hotplug.c: send DEVICE_UNPLUG_ERROR in acpi_memory_hotplug_write()
2021-06-21 20:59 [PATCH v3 0/3] DEVICE_UNPLUG_ERROR QAPI event Daniel Henrique Barboza
2021-06-21 20:59 ` [PATCH v3 1/3] qapi/qdev.json: add " Daniel Henrique Barboza
2021-06-21 20:59 ` [PATCH v3 2/3] spapr: use DEVICE_UNPLUG_ERROR to report unplug errors Daniel Henrique Barboza
@ 2021-06-21 20:59 ` Daniel Henrique Barboza
2021-07-05 4:56 ` David Gibson
2 siblings, 1 reply; 8+ messages in thread
From: Daniel Henrique Barboza @ 2021-06-21 20:59 UTC (permalink / raw)
To: qemu-devel
Cc: Michael S . Tsirkin, Daniel Henrique Barboza, armbru, groug,
qemu-ppc, Igor Mammedov, eblake, david
MEM_UNPLUG_ERROR is deprecated since the introduction of
DEVICE_UNPLUG_ERROR. Keep emitting both while the deprecation of
MEM_UNPLUG_ERROR is pending.
CC: Michael S. Tsirkin <mst@redhat.com>
CC: Igor Mammedov <imammedo@redhat.com>
Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com>
---
hw/acpi/memory_hotplug.c | 13 +++++++++++--
1 file changed, 11 insertions(+), 2 deletions(-)
diff --git a/hw/acpi/memory_hotplug.c b/hw/acpi/memory_hotplug.c
index af37889423..fb9f4d2de7 100644
--- a/hw/acpi/memory_hotplug.c
+++ b/hw/acpi/memory_hotplug.c
@@ -8,6 +8,7 @@
#include "qapi/error.h"
#include "qapi/qapi-events-acpi.h"
#include "qapi/qapi-events-machine.h"
+#include "qapi/qapi-events-qdev.h"
#define MEMORY_SLOTS_NUMBER "MDNR"
#define MEMORY_HOTPLUG_IO_REGION "HPMR"
@@ -177,9 +178,17 @@ static void acpi_memory_hotplug_write(void *opaque, hwaddr addr, uint64_t data,
/* call pc-dimm unplug cb */
hotplug_handler_unplug(hotplug_ctrl, dev, &local_err);
if (local_err) {
+ const char *error_pretty = error_get_pretty(local_err);
+
trace_mhp_acpi_pc_dimm_delete_failed(mem_st->selector);
- qapi_event_send_mem_unplug_error(dev->id,
- error_get_pretty(local_err));
+
+ /*
+ * Send both MEM_UNPLUG_ERROR and DEVICE_UNPLUG_ERROR
+ * while the deprecation of MEM_UNPLUG_ERROR is
+ * pending.
+ */
+ qapi_event_send_mem_unplug_error(dev->id, error_pretty);
+ qapi_event_send_device_unplug_error(dev->id, error_pretty);
error_free(local_err);
break;
}
--
2.31.1
^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH v3 1/3] qapi/qdev.json: add DEVICE_UNPLUG_ERROR QAPI event
2021-06-21 20:59 ` [PATCH v3 1/3] qapi/qdev.json: add " Daniel Henrique Barboza
@ 2021-07-05 4:52 ` David Gibson
2021-07-07 0:20 ` Daniel Henrique Barboza
0 siblings, 1 reply; 8+ messages in thread
From: David Gibson @ 2021-07-05 4:52 UTC (permalink / raw)
To: Daniel Henrique Barboza; +Cc: armbru, qemu-ppc, qemu-devel, eblake, groug
[-- Attachment #1: Type: text/plain, Size: 3895 bytes --]
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
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v3 2/3] spapr: use DEVICE_UNPLUG_ERROR to report unplug errors
2021-06-21 20:59 ` [PATCH v3 2/3] spapr: use DEVICE_UNPLUG_ERROR to report unplug errors Daniel Henrique Barboza
@ 2021-07-05 4:55 ` David Gibson
0 siblings, 0 replies; 8+ messages in thread
From: David Gibson @ 2021-07-05 4:55 UTC (permalink / raw)
To: Daniel Henrique Barboza; +Cc: armbru, qemu-ppc, qemu-devel, eblake, groug
[-- Attachment #1: Type: text/plain, Size: 989 bytes --]
On Mon, Jun 21, 2021 at 05:59:06PM -0300, Daniel Henrique Barboza wrote:
> Linux Kernel 5.12 is now unisolating CPU DRCs in the device_removal
> error path, signalling that the hotunplug process wasn't successful.
> This allow us to send a DEVICE_UNPLUG_ERROR in drc_unisolate_logical()
> to signal this error to the management layer.
>
> We also have another error path in spapr_memory_unplug_rollback() for
> configured LMB DRCs. Kernels older than 5.13 will not unisolate the LMBs
> in the hotunplug error path, but it will reconfigure them. Let's send
> the DEVICE_UNPLUG_ERROR event in that code path as well to cover the
> case of older kernels.
>
> Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com>
Reviewed-by: David Gibson <david@gibson.dropbear.id.au>
--
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
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v3 3/3] memory_hotplug.c: send DEVICE_UNPLUG_ERROR in acpi_memory_hotplug_write()
2021-06-21 20:59 ` [PATCH v3 3/3] memory_hotplug.c: send DEVICE_UNPLUG_ERROR in acpi_memory_hotplug_write() Daniel Henrique Barboza
@ 2021-07-05 4:56 ` David Gibson
0 siblings, 0 replies; 8+ messages in thread
From: David Gibson @ 2021-07-05 4:56 UTC (permalink / raw)
To: Daniel Henrique Barboza
Cc: Michael S . Tsirkin, armbru, qemu-devel, groug, qemu-ppc,
Igor Mammedov, eblake
[-- Attachment #1: Type: text/plain, Size: 2228 bytes --]
On Mon, Jun 21, 2021 at 05:59:07PM -0300, Daniel Henrique Barboza wrote:
> MEM_UNPLUG_ERROR is deprecated since the introduction of
> DEVICE_UNPLUG_ERROR. Keep emitting both while the deprecation of
> MEM_UNPLUG_ERROR is pending.
>
> CC: Michael S. Tsirkin <mst@redhat.com>
> CC: Igor Mammedov <imammedo@redhat.com>
> Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com>
Reviewed-by: David Gibson <david@gibson.dropbear.id.au>
> ---
> hw/acpi/memory_hotplug.c | 13 +++++++++++--
> 1 file changed, 11 insertions(+), 2 deletions(-)
>
> diff --git a/hw/acpi/memory_hotplug.c b/hw/acpi/memory_hotplug.c
> index af37889423..fb9f4d2de7 100644
> --- a/hw/acpi/memory_hotplug.c
> +++ b/hw/acpi/memory_hotplug.c
> @@ -8,6 +8,7 @@
> #include "qapi/error.h"
> #include "qapi/qapi-events-acpi.h"
> #include "qapi/qapi-events-machine.h"
> +#include "qapi/qapi-events-qdev.h"
>
> #define MEMORY_SLOTS_NUMBER "MDNR"
> #define MEMORY_HOTPLUG_IO_REGION "HPMR"
> @@ -177,9 +178,17 @@ static void acpi_memory_hotplug_write(void *opaque, hwaddr addr, uint64_t data,
> /* call pc-dimm unplug cb */
> hotplug_handler_unplug(hotplug_ctrl, dev, &local_err);
> if (local_err) {
> + const char *error_pretty = error_get_pretty(local_err);
> +
> trace_mhp_acpi_pc_dimm_delete_failed(mem_st->selector);
> - qapi_event_send_mem_unplug_error(dev->id,
> - error_get_pretty(local_err));
> +
> + /*
> + * Send both MEM_UNPLUG_ERROR and DEVICE_UNPLUG_ERROR
> + * while the deprecation of MEM_UNPLUG_ERROR is
> + * pending.
> + */
> + qapi_event_send_mem_unplug_error(dev->id, error_pretty);
> + qapi_event_send_device_unplug_error(dev->id, error_pretty);
> error_free(local_err);
> break;
> }
--
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
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v3 1/3] qapi/qdev.json: add DEVICE_UNPLUG_ERROR QAPI event
2021-07-05 4:52 ` David Gibson
@ 2021-07-07 0:20 ` Daniel Henrique Barboza
0 siblings, 0 replies; 8+ messages in thread
From: Daniel Henrique Barboza @ 2021-07-07 0:20 UTC (permalink / raw)
To: David Gibson; +Cc: armbru, qemu-ppc, qemu-devel, eblake, groug
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' } }
>>
>
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2021-07-07 0:26 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-06-21 20:59 [PATCH v3 0/3] DEVICE_UNPLUG_ERROR QAPI event Daniel Henrique Barboza
2021-06-21 20:59 ` [PATCH v3 1/3] qapi/qdev.json: add " Daniel Henrique Barboza
2021-07-05 4:52 ` David Gibson
2021-07-07 0:20 ` Daniel Henrique Barboza
2021-06-21 20:59 ` [PATCH v3 2/3] spapr: use DEVICE_UNPLUG_ERROR to report unplug errors Daniel Henrique Barboza
2021-07-05 4:55 ` David Gibson
2021-06-21 20:59 ` [PATCH v3 3/3] memory_hotplug.c: send DEVICE_UNPLUG_ERROR in acpi_memory_hotplug_write() Daniel Henrique Barboza
2021-07-05 4:56 ` David Gibson
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.