From: Daniel Henrique Barboza <danielhb413@gmail.com>
To: Markus Armbruster <armbru@redhat.com>
Cc: groug@kaod.org, qemu-ppc@nongnu.org, qemu-devel@nongnu.org,
david@gibson.dropbear.id.au
Subject: Re: [PATCH v2 1/2] qapi/machine.json: add DEVICE_UNPLUG_ERROR QAPI event
Date: Wed, 16 Jun 2021 13:41:47 -0300 [thread overview]
Message-ID: <ef085ae4-be21-46aa-728b-9377fe48deee@gmail.com> (raw)
In-Reply-To: <875yykr45c.fsf@dusky.pond.sub.org>
On 6/11/21 9:12 AM, Markus Armbruster wrote:
> 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.
Ok
>
> This sure could use some polish.
>
> If I understand things correctly, we're aiming for the following device
> unplug protocol:
One thing to note is that DEVICE_UNPLUG_ERROR isn't guaranteed to be send for
every hotunplug error. The event depends on machine/architecture support to
detect a guest side error.
>
> 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.
I haven't predicted to use this event in those cases as well, although it
seems reasonable to do so now that you mentioned it.
>
> 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.
Since there's no 100% guarantee that DEVICE_UNPLUG_ERROR will be emitted for
guest side errors, the wording here would be
"When unplug finishes, emit DEVICE_DELETED. A DEVICE_UNPLUG_ERROR can be
emitted if a guest side error was detected"
>
> 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?
Not really. I looked where MEM_UNPLUG_ERROR was declared and put it right
after it. I can change it to qdev.json near DEVICE_DELETED.
Thanks,
Daniel
>
>
next prev parent reply other threads:[~2021-06-16 16:42 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-06-04 20:03 [PATCH v2 0/2] DEVICE_UNPLUG_ERROR QAPI event Daniel Henrique Barboza
2021-06-04 20:03 ` [PATCH v2 1/2] qapi/machine.json: add " Daniel Henrique Barboza
2021-06-07 2:23 ` David Gibson
2021-06-07 2:23 ` David Gibson
2021-06-07 18:41 ` Eric Blake
2021-06-11 12:12 ` Markus Armbruster
2021-06-16 16:41 ` Daniel Henrique Barboza [this message]
2021-06-17 5:59 ` Markus Armbruster
2021-06-04 20:03 ` [PATCH v2 2/2] spapr: use DEVICE_UNPLUG_ERROR to report unplug errors Daniel Henrique Barboza
2021-06-07 2:24 ` David Gibson
2021-06-11 12:18 ` Markus Armbruster
2021-06-16 16:58 ` Daniel Henrique Barboza
2021-06-16 17:58 ` Eric Blake
2021-06-07 2:25 ` [PATCH v2 0/2] DEVICE_UNPLUG_ERROR QAPI event David Gibson
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=ef085ae4-be21-46aa-728b-9377fe48deee@gmail.com \
--to=danielhb413@gmail.com \
--cc=armbru@redhat.com \
--cc=david@gibson.dropbear.id.au \
--cc=groug@kaod.org \
--cc=qemu-devel@nongnu.org \
--cc=qemu-ppc@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.