Daniel P. Berrangé <berra...@redhat.com> writes: > The -device JSON syntax impl leaks a reference on the created > DeviceState instance. As a result when you hot-unplug the > device, the device_finalize method won't be called and thus > it will fail to emit the required DEVICE_DELETED event. > > A 'json-cli' feature was previously added against the > 'device_add' QMP command QAPI schema to indicated to mgmt > apps that -device supported JSON syntax. Given the hotplug > bug that feature flag is no unusable for its purpose, so
As Laurent and Thomas pointed out, this should be "is not usable" or "is unusable". > we add a new 'json-cli-hotplug' feature to indicate the > -device supports JSON without breaking hotplug. > > Fixes: https://gitlab.com/qemu-project/qemu/-/issues/802 > Signed-off-by: Daniel P. Berrangé <berra...@redhat.com> > --- > qapi/qdev.json | 5 ++++- > softmmu/vl.c | 4 +++- > tests/qtest/device-plug-test.c | 19 +++++++++++++++++++ > 3 files changed, 26 insertions(+), 2 deletions(-) > > diff --git a/qapi/qdev.json b/qapi/qdev.json > index 69656b14df..26cd10106b 100644 > --- a/qapi/qdev.json > +++ b/qapi/qdev.json > @@ -44,6 +44,9 @@ > # @json-cli: If present, the "-device" command line option supports JSON > # syntax with a structure identical to the arguments of this > # command. > +# @json-cli-hotplug: If present, the "-device" command line option supports > JSON > +# syntax without the reference counting leak that broke > +# hot-unplug For local consistency, please end the sentence with a period and wrap lines like so: # @json-cli-hotplug: If present, the "-device" command line option supports # JSON syntax without the reference counting leak that # broke hot-unplug. > # > # Notes: > # > @@ -74,7 +77,7 @@ > { 'command': 'device_add', > 'data': {'driver': 'str', '*bus': 'str', '*id': 'str'}, > 'gen': false, # so we can get the additional arguments > - 'features': ['json-cli'] } > + 'features': ['json-cli', 'json-cli-hotplug'] } > > ## > # @device_del: Kevin, I hope you can apply these touch-ups in your tree. Then, QAPI schema Acked-by: Markus Armbruster <arm...@redhat.com> [...]