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 - 2024 Red Hat, Inc.