[PATCH 0/2] DEVICE_UNPLUG_GUEST_ERROR support

Daniel Henrique Barboza danielhb413 at gmail.com
Fri Nov 12 16:48:23 UTC 2021



On 11/12/21 09:13, Michal Prívozník wrote:
> On 11/1/21 1:27 AM, Daniel Henrique Barboza wrote:
>> Hi,
>>
>> This small series adds support to a new QMP event called
>> DEVICE_UNPLUG_GUEST_SUPPORT introduced recently in upstream QEMU.
>> This event is emitted when a device removal error is detected in the guest
>> side. Libvirt can use this event to to abort the removal operation
>> immediately instead of waiting for the operation to timeout.
>>
>> Upstream QEMU is emitting this event in the following cases:
>>
>> - memory removal errors in ACPI and pseries guests
>> - CPU removal errors in pseries guests
>>
>> Adding support to DEVICE_UNPLUG_GUEST_ERROR will allow Libvirt to
>> detect all device removal errors that QEMU might add in the future.
>>
>> The patches were tested using a common scenario where CPU removal will
>> fail everytime in a pseries guest:
>>
>> - start a pseries guest with 1 CPU
>> - add one CPU
>> - offline vcpu0 in the guest kernel
>> - try to remove the recently added CPU (vcpu1). The kernel will refuse the
>> unplug because vcpu1 is the last online CPU
>>
>> This test case will cause 'setvcpus' to hang until the timeout is fired:
>>
>> [danielhb at ltc-boston118 build]$ sudo ./run tools/virsh setvcpus f34 1
>> error: Timed out during operation: vcpu unplug request timed out. Unplug result must be manually inspected in the domain
>>
>> With this series applied, 'setvcpus' will report the error as soon as
>> the DEVICE_UNPLUG_GUEST_ERROR event is received:
>>
>> [danielhb at ltc-boston118 build]$ sudo ./run tools/virsh setvcpus f34 1
>> error: operation failed: unplug of device was rejected by the guest
>>
>>
>> I haven't add any documentation because I didn't find a good place to
>> document this change, and I'm not sure if this is necessary either since
>> this doesn't change user ABI. If this requires a doc change please let
>> me know.
> 
> Right, this is an internal implementation and your patches just emit an
> already existing event, so I think no additional doc is needed. Except
> maybe a NEWS.rst?

Yeah, perhaps a NEWS.rst entry is warranted in the "Improvements" section.
I'll send a patch.


> 
>>
>>
>>
>> Daniel Henrique Barboza (2):
>>    tests: update QEMU and domain ppc64 capabilities for qemu 6.2
>>    qemu: add DEVICE_UNPLUG_GUEST_ERROR event support
>>
>>   src/qemu/qemu_monitor.c                       |    12 +
>>   src/qemu/qemu_monitor.h                       |     9 +
>>   src/qemu/qemu_monitor_json.c                  |    19 +
>>   src/qemu/qemu_process.c                       |    37 +
>>   tests/domaincapsdata/qemu_6.2.0.ppc64.xml     |   138 +
>>   .../caps_6.2.0.ppc64.replies                  | 31062 ++++++++++++++++
>>   .../qemucapabilitiesdata/caps_6.2.0.ppc64.xml |  1167 +
>>   ...default-video-type-ppc64.ppc64-latest.args |    13 +-
>>   ...ault-cpu-kvm-pseries-2.7.ppc64-latest.args |    13 +-
>>   ...ault-cpu-kvm-pseries-3.1.ppc64-latest.args |    13 +-
>>   ...ault-cpu-kvm-pseries-4.2.ppc64-latest.args |    13 +-
>>   ...ault-cpu-tcg-pseries-2.7.ppc64-latest.args |    13 +-
>>   ...ault-cpu-tcg-pseries-3.1.ppc64-latest.args |    13 +-
>>   ...ault-cpu-tcg-pseries-4.2.ppc64-latest.args |    13 +-
>>   .../ppc64-pseries-graphics.ppc64-latest.args  |    29 +-
>>   .../ppc64-pseries-headless.ppc64-latest.args  |    23 +-
>>   .../ppc64-tpmproxy-single.ppc64-latest.args   |    11 +-
>>   .../ppc64-tpmproxy-with-tpm.ppc64-latest.args |    13 +-
>>   .../tpm-emulator-spapr.ppc64-latest.args      |    19 +-
>>   19 files changed, 32531 insertions(+), 99 deletions(-)
>>   create mode 100644 tests/domaincapsdata/qemu_6.2.0.ppc64.xml
>>   create mode 100644 tests/qemucapabilitiesdata/caps_6.2.0.ppc64.replies
>>   create mode 100644 tests/qemucapabilitiesdata/caps_6.2.0.ppc64.xml
/>>
> 
> Reviewed-by: Michal Privoznik <mprivozn at redhat.com>

Pushed. Thanks!

Daniel
> 
> Michal
> 




More information about the libvir-list mailing list