Issue labe improvements
by Peter Krempa
Hi,
from time to time when I try to go through upstream issues I always feel
that the labels we have are suboptimal and don't always allow to track
the current state of the issue.
Recently I've had a look at the qemu issues and found what I was
lacking.
Specifically I'm lacking the 'workflow' class of labels they use.
I propose we adopt the following changes:
1) Convert the existing 'bug', 'enhancement', 'support', and
'discussion' labels into a set of scoped labels (again inspiration taken
from qemu):
kind::bug
kind::enhancement
kind::support
kind::discussion
kind::documentation
This is mostly as the above kinds are mutually exclusive.
2) Introduce the workflow label similarly to what qemu uses:
workflow::Confirmed/Triaged (<- confirmed for bugs, triaged for
enhancements)
workflow::Needs Info (replaces "needinfo")
workflow::In progress (replaces "Doing")
I'd also potentially like to have a 'Unconfirmed' state for when the
bug has enough info, but it's unknown why it's happening.
I want to specifically avoid the ambiguous "Triaged" when used on it's
own.
3) Convert host-* labels into a scoped label. Hosts are usually mutually
exclusive
4) Convert driver-* into scoped labels. Usually issues are not exceeding
these boundaries
5) Remove the following unused or ambiguous labels:
- critical
- incident
- Doing
- To Do
- gsoc::20* (all seem to be unused)
I'm willing to go ahead and re-triage open stuff if nobody objects to
the above changes.
2 years, 11 months
[PATCH 0/2] remote_daemon: Set shutdown callbacks only after init is done
by Michal Privoznik
*** BLURB HERE ***
Michal Prívozník (2):
remote_daemon: Set shutdown callbacks only after init is done
Revert "qemu: Avoid crash in qemuStateShutdownPrepare() and
qemuStateShutdownWait()"
src/qemu/qemu_driver.c | 6 ------
src/remote/remote_daemon.c | 7 ++++---
2 files changed, 4 insertions(+), 9 deletions(-)
--
2.32.0
2 years, 11 months
[PATCH V2 0/3] Add virDomainSetLaunchSecurityState API
by Jim Fehlig
V2 of https://listman.redhat.com/archives/libvir-list/2021-November/msg00980.html
Like V1, this series is compile-tested only. I plan to work on functional
testing soon, after wrapping up some tasks.
Changes since V1:
- Optional secret set address changed to unsigned long long
- Improved documentation
- Ensure VM is in paused state
- Other small fixes
Jim Fehlig (3):
libvirt: Introduce virDomainSetLaunchSecurityState public API
remote: Add RPC support for the virDomainSetLaunchSecurityState API
qemu: Implement the virDomainSetLaunchSecurityState API
include/libvirt/libvirt-domain.h | 35 +++++++++++++
src/driver-hypervisor.h | 7 +++
src/libvirt-domain.c | 62 ++++++++++++++++++++++
src/libvirt_public.syms | 5 ++
src/qemu/qemu_driver.c | 88 ++++++++++++++++++++++++++++++++
src/qemu/qemu_monitor.c | 14 +++++
src/qemu/qemu_monitor.h | 7 +++
src/qemu/qemu_monitor_json.c | 45 ++++++++++++++++
src/qemu/qemu_monitor_json.h | 6 +++
src/remote/remote_driver.c | 1 +
src/remote/remote_protocol.x | 17 +++++-
src/remote_protocol-structs | 9 ++++
12 files changed, 295 insertions(+), 1 deletion(-)
--
2.34.1
2 years, 11 months
[PATCH v1 00/12] Add riscv kvm accel support
by Yifei Jiang
This series adds both riscv32 and riscv64 kvm support, and implements
migration based on riscv.
Because of RISC-V KVM has been merged into the Linux master, so this
series are changed from RFC to patch v1.
Several steps to use this:
1. Build emulation
$ ./configure --target-list=riscv64-softmmu
$ make -j$(nproc)
2. Build kernel
3. Build QEMU VM
Cross built in riscv toolchain.
$ PKG_CONFIG_LIBDIR=<toolchain pkgconfig path>
$ export PKG_CONFIG_SYSROOT_DIR=<toolchain sysroot path>
$ ./configure --target-list=riscv64-softmmu --enable-kvm \
--cross-prefix=riscv64-linux-gnu- --disable-libiscsi --disable-glusterfs \
--disable-libusb --disable-usb-redir --audio-drv-list= --disable-opengl \
--disable-libxml2
$ make -j$(nproc)
4. Start emulation
$ ./qemu-system-riscv64 -M virt -m 4096M -cpu rv64,x-h=true -nographic \
-name guest=riscv-hyp,debug-threads=on \
-smp 4 \
-bios ./fw_jump.bin \
-kernel ./Image \
-drive file=./hyp.img,format=raw,id=hd0 \
-device virtio-blk-device,drive=hd0 \
-append "root=/dev/vda rw console=ttyS0 earlycon=sbi"
5. Start kvm-acceled QEMU VM in emulation
$ ./qemu-system-riscv64 -M virt,accel=kvm -m 1024M -cpu host -nographic \
-name guest=riscv-guset \
-smp 2 \
-bios none \
-kernel ./Image \
-drive file=./guest.img,format=raw,id=hd0 \
-device virtio-blk-device,drive=hd0 \
-append "root=/dev/vda rw console=ttyS0 earlycon=sbi"
Changes since RFC v6
- Rebase on recent commit 8627edfb3f1fca24a96a0954148885c3241c10f8
- Sync-up headers with Linux-5.16-rc1
Changes since RFC v5
- Rebase on QEMU v6.1.0-rc1 and kvm-riscv linux v19.
- Move kvm interrupt setting to riscv_cpu_update_mip().
- Replace __u64 with uint64_t.
Changes since RFC v4
- Rebase on QEMU v6.0.0-rc2 and kvm-riscv linux v17.
- Remove time scaling support as software solution is incomplete.
Because it will cause unacceptable performance degradation. and
We will post a better solution.
- Revise according to Alistair's review comments.
- Remove compile time XLEN checks in kvm_riscv_reg_id
- Surround TYPE_RISCV_CPU_HOST definition by CONFIG_KVM and share
it between RV32 and RV64.
- Add kvm-stub.c for reduce unnecessary compilation checks.
- Add riscv_setup_direct_kernel() to direct boot kernel for KVM.
Changes since RFC v3
- Rebase on QEMU v5.2.0-rc2 and kvm-riscv linux v15.
- Add time scaling support(New patches 13, 14 and 15).
- Fix the bug that guest vm can't reboot.
Changes since RFC v2
- Fix checkpatch error at target/riscv/sbi_ecall_interface.h.
- Add riscv migration support.
Changes since RFC v1
- Add separate SBI ecall interface header.
- Add riscv32 kvm accel support.
Yifei Jiang (12):
update-linux-headers: Add asm-riscv/kvm.h
target/riscv: Add target/riscv/kvm.c to place the public kvm interface
target/riscv: Implement function kvm_arch_init_vcpu
target/riscv: Implement kvm_arch_get_registers
target/riscv: Implement kvm_arch_put_registers
target/riscv: Support start kernel directly by KVM
target/riscv: Support setting external interrupt by KVM
target/riscv: Handle KVM_EXIT_RISCV_SBI exit
target/riscv: Add host cpu type
target/riscv: Add kvm_riscv_get/put_regs_timer
target/riscv: Implement virtual time adjusting with vm state changing
target/riscv: Support virtual time context synchronization
hw/riscv/boot.c | 11 +
hw/riscv/virt.c | 7 +
include/hw/riscv/boot.h | 1 +
linux-headers/asm-riscv/kvm.h | 128 ++++++
linux-headers/linux/kvm.h | 8 +
meson.build | 2 +
target/riscv/cpu.c | 57 +++
target/riscv/cpu.h | 10 +
target/riscv/cpu_helper.c | 27 --
target/riscv/kvm-stub.c | 30 ++
target/riscv/kvm.c | 610 +++++++++++++++++++++++++++++
target/riscv/kvm_riscv.h | 25 ++
target/riscv/machine.c | 14 +
target/riscv/meson.build | 1 +
target/riscv/sbi_ecall_interface.h | 72 ++++
15 files changed, 976 insertions(+), 27 deletions(-)
create mode 100644 linux-headers/asm-riscv/kvm.h
create mode 100644 target/riscv/kvm-stub.c
create mode 100644 target/riscv/kvm.c
create mode 100644 target/riscv/kvm_riscv.h
create mode 100644 target/riscv/sbi_ecall_interface.h
--
2.19.1
2 years, 11 months
[PATCH] qemu_monitor_json.h: Unify header formatting
by Peter Krempa
Use the modern style and fix all offenders since new functions were
already using the contemporary style.
Signed-off-by: Peter Krempa <pkrempa(a)redhat.com>
---
src/qemu/qemu_monitor_json.h | 957 ++++++++++++++++++++---------------
1 file changed, 551 insertions(+), 406 deletions(-)
diff --git a/src/qemu/qemu_monitor_json.h b/src/qemu/qemu_monitor_json.h
index 0984717675..64064b0519 100644
--- a/src/qemu/qemu_monitor_json.h
+++ b/src/qemu/qemu_monitor_json.h
@@ -28,61 +28,82 @@
#include "cpu/cpu.h"
#include "util/virgic.h"
-int qemuMonitorJSONIOProcessLine(qemuMonitor *mon,
- const char *line,
- qemuMonitorMessage *msg) G_GNUC_NO_INLINE;
-
-int qemuMonitorJSONIOProcess(qemuMonitor *mon,
- const char *data,
- size_t len,
- qemuMonitorMessage *msg);
-
-int qemuMonitorJSONHumanCommand(qemuMonitor *mon,
- const char *cmd,
- char **reply);
-
-int qemuMonitorJSONSetCapabilities(qemuMonitor *mon);
-
-int qemuMonitorJSONStartCPUs(qemuMonitor *mon);
-int qemuMonitorJSONStopCPUs(qemuMonitor *mon);
-int qemuMonitorJSONGetStatus(qemuMonitor *mon,
- bool *running,
- virDomainPausedReason *reason);
-
-int qemuMonitorJSONSystemPowerdown(qemuMonitor *mon);
-int qemuMonitorJSONSystemReset(qemuMonitor *mon);
-
-int qemuMonitorJSONQueryCPUs(qemuMonitor *mon,
- struct qemuMonitorQueryCpusEntry **entries,
- size_t *nentries,
- bool force,
- bool fast);
-int qemuMonitorJSONUpdateVideoMemorySize(qemuMonitor *mon,
- virDomainVideoDef *video,
- char *path);
-int qemuMonitorJSONUpdateVideoVram64Size(qemuMonitor *mon,
- virDomainVideoDef *video,
- char *path);
-int qemuMonitorJSONGetBalloonInfo(qemuMonitor *mon,
- unsigned long long *currmem);
-int qemuMonitorJSONGetMemoryStats(qemuMonitor *mon,
- char *balloonpath,
- virDomainMemoryStatPtr stats,
- unsigned int nr_stats);
-int qemuMonitorJSONSetMemoryStatsPeriod(qemuMonitor *mon,
- char *balloonpath,
- int period);
-int qemuMonitorJSONGetBlockInfo(qemuMonitor *mon,
- GHashTable *table);
-
-virJSONValue *qemuMonitorJSONQueryBlockstats(qemuMonitor *mon,
- bool queryNodes);
-int qemuMonitorJSONGetAllBlockStatsInfo(qemuMonitor *mon,
- GHashTable *hash);
-int qemuMonitorJSONBlockStatsUpdateCapacity(qemuMonitor *mon,
- GHashTable *stats);
-int qemuMonitorJSONBlockStatsUpdateCapacityBlockdev(qemuMonitor *mon,
- GHashTable *stats);
+int
+qemuMonitorJSONIOProcessLine(qemuMonitor *mon,
+ const char *line,
+ qemuMonitorMessage *msg)
+ G_GNUC_NO_INLINE;
+
+int
+qemuMonitorJSONIOProcess(qemuMonitor *mon,
+ const char *data,
+ size_t len,
+ qemuMonitorMessage *msg);
+
+int
+qemuMonitorJSONHumanCommand(qemuMonitor *mon,
+ const char *cmd,
+ char **reply);
+
+int
+qemuMonitorJSONSetCapabilities(qemuMonitor *mon);
+
+int
+qemuMonitorJSONStartCPUs(qemuMonitor *mon);
+int
+qemuMonitorJSONStopCPUs(qemuMonitor *mon);
+int
+qemuMonitorJSONGetStatus(qemuMonitor *mon,
+ bool *running,
+ virDomainPausedReason *reason);
+
+int
+qemuMonitorJSONSystemPowerdown(qemuMonitor *mon);
+int
+qemuMonitorJSONSystemReset(qemuMonitor *mon);
+
+int
+qemuMonitorJSONQueryCPUs(qemuMonitor *mon,
+ struct qemuMonitorQueryCpusEntry **entries,
+ size_t *nentries,
+ bool force,
+ bool fast);
+int
+qemuMonitorJSONUpdateVideoMemorySize(qemuMonitor *mon,
+ virDomainVideoDef *video,
+ char *path);
+int
+qemuMonitorJSONUpdateVideoVram64Size(qemuMonitor *mon,
+ virDomainVideoDef *video,
+ char *path);
+int
+qemuMonitorJSONGetBalloonInfo(qemuMonitor *mon,
+ unsigned long long *currmem);
+int
+qemuMonitorJSONGetMemoryStats(qemuMonitor *mon,
+ char *balloonpath,
+ virDomainMemoryStatPtr stats,
+ unsigned int nr_stats);
+int
+qemuMonitorJSONSetMemoryStatsPeriod(qemuMonitor *mon,
+ char *balloonpath,
+ int period);
+int
+qemuMonitorJSONGetBlockInfo(qemuMonitor *mon,
+ GHashTable *table);
+
+virJSONValue *
+qemuMonitorJSONQueryBlockstats(qemuMonitor *mon,
+ bool queryNodes);
+int
+qemuMonitorJSONGetAllBlockStatsInfo(qemuMonitor *mon,
+ GHashTable *hash);
+int
+qemuMonitorJSONBlockStatsUpdateCapacity(qemuMonitor *mon,
+ GHashTable *stats);
+int
+qemuMonitorJSONBlockStatsUpdateCapacityBlockdev(qemuMonitor *mon,
+ GHashTable *stats);
GHashTable *
qemuMonitorJSONBlockGetNamedNodeDataJSON(virJSONValue *nodes);
@@ -91,236 +112,295 @@ GHashTable *
qemuMonitorJSONBlockGetNamedNodeData(qemuMonitor *mon,
bool supports_flat);
-int qemuMonitorJSONBlockResize(qemuMonitor *mon,
- const char *device,
- const char *nodename,
- unsigned long long size);
-
-int qemuMonitorJSONSetPassword(qemuMonitor *mon,
- const char *protocol,
- const char *password,
- const char *action_if_connected);
-int qemuMonitorJSONExpirePassword(qemuMonitor *mon,
- const char *protocol,
- const char *expire_time);
-int qemuMonitorJSONSetBalloon(qemuMonitor *mon,
- unsigned long long newmem);
-
-int qemuMonitorJSONEjectMedia(qemuMonitor *mon,
- const char *dev_name,
- bool force);
-int qemuMonitorJSONChangeMedia(qemuMonitor *mon,
- const char *dev_name,
- const char *newmedia,
- const char *format);
-
-
-int qemuMonitorJSONSaveVirtualMemory(qemuMonitor *mon,
- unsigned long long offset,
- unsigned long long length,
- const char *path);
-int qemuMonitorJSONSavePhysicalMemory(qemuMonitor *mon,
- unsigned long long offset,
- unsigned long long length,
- const char *path);
-
-int qemuMonitorJSONSetMigrationSpeed(qemuMonitor *mon,
- unsigned long bandwidth);
-
-int qemuMonitorJSONSetMigrationDowntime(qemuMonitor *mon,
- unsigned long long downtime);
-
-int qemuMonitorJSONGetMigrationCacheSize(qemuMonitor *mon,
- unsigned long long *cacheSize);
-int qemuMonitorJSONSetMigrationCacheSize(qemuMonitor *mon,
- unsigned long long cacheSize);
-
-int qemuMonitorJSONGetMigrationParams(qemuMonitor *mon,
- virJSONValue **params);
-int qemuMonitorJSONSetMigrationParams(qemuMonitor *mon,
- virJSONValue **params);
+int
+qemuMonitorJSONBlockResize(qemuMonitor *mon,
+ const char *device,
+ const char *nodename,
+ unsigned long long size);
-int qemuMonitorJSONGetMigrationStats(qemuMonitor *mon,
- qemuMonitorMigrationStats *stats,
- char **error);
+int
+qemuMonitorJSONSetPassword(qemuMonitor *mon,
+ const char *protocol,
+ const char *password,
+ const char *action_if_connected);
+int
+qemuMonitorJSONExpirePassword(qemuMonitor *mon,
+ const char *protocol,
+ const char *expire_time);
+int
+qemuMonitorJSONSetBalloon(qemuMonitor *mon,
+ unsigned long long newmem);
-int qemuMonitorJSONGetMigrationCapabilities(qemuMonitor *mon,
- char ***capabilities);
-int qemuMonitorJSONSetMigrationCapabilities(qemuMonitor *mon,
- virJSONValue **caps);
+int
+qemuMonitorJSONEjectMedia(qemuMonitor *mon,
+ const char *dev_name,
+ bool force);
+int
+qemuMonitorJSONChangeMedia(qemuMonitor *mon,
+ const char *dev_name,
+ const char *newmedia,
+ const char *format);
-int qemuMonitorJSONGetGICCapabilities(qemuMonitor *mon,
- virGICCapability **capabilities);
+int
+qemuMonitorJSONSaveVirtualMemory(qemuMonitor *mon,
+ unsigned long long offset,
+ unsigned long long length,
+ const char *path);
+int
+qemuMonitorJSONSavePhysicalMemory(qemuMonitor *mon,
+ unsigned long long offset,
+ unsigned long long length,
+ const char *path);
-int qemuMonitorJSONGetSEVCapabilities(qemuMonitor *mon,
- virSEVCapability **capabilities);
+int
+qemuMonitorJSONSetMigrationSpeed(qemuMonitor *mon,
+ unsigned long bandwidth);
-int qemuMonitorJSONMigrate(qemuMonitor *mon,
- unsigned int flags,
- const char *uri);
-int qemuMonitorJSONGetSpiceMigrationStatus(qemuMonitor *mon,
- bool *spice_migrated);
+int
+qemuMonitorJSONSetMigrationDowntime(qemuMonitor *mon,
+ unsigned long long downtime);
+int
+qemuMonitorJSONGetMigrationCacheSize(qemuMonitor *mon,
+ unsigned long long *cacheSize);
+int
+qemuMonitorJSONSetMigrationCacheSize(qemuMonitor *mon,
+ unsigned long long cacheSize);
-int qemuMonitorJSONMigrateCancel(qemuMonitor *mon);
+int
+qemuMonitorJSONGetMigrationParams(qemuMonitor *mon,
+ virJSONValue **params);
+int
+qemuMonitorJSONSetMigrationParams(qemuMonitor *mon,
+ virJSONValue **params);
-int qemuMonitorJSONQueryDump(qemuMonitor *mon,
- qemuMonitorDumpStats *stats);
+int
+qemuMonitorJSONGetMigrationStats(qemuMonitor *mon,
+ qemuMonitorMigrationStats *stats,
+ char **error);
+
+int
+qemuMonitorJSONGetMigrationCapabilities(qemuMonitor *mon,
+ char ***capabilities);
+int
+qemuMonitorJSONSetMigrationCapabilities(qemuMonitor *mon,
+ virJSONValue **caps);
+
+int
+qemuMonitorJSONGetGICCapabilities(qemuMonitor *mon,
+ virGICCapability **capabilities);
+
+int
+qemuMonitorJSONGetSEVCapabilities(qemuMonitor *mon,
+ virSEVCapability **capabilities);
+
+int
+qemuMonitorJSONMigrate(qemuMonitor *mon,
+ unsigned int flags,
+ const char *uri);
+int
+qemuMonitorJSONGetSpiceMigrationStatus(qemuMonitor *mon,
+ bool *spice_migrated);
-int qemuMonitorJSONGetDumpGuestMemoryCapability(qemuMonitor *mon,
- const char *capability);
-int qemuMonitorJSONDump(qemuMonitor *mon,
- const char *protocol,
- const char *dumpformat,
- bool detach);
+int
+qemuMonitorJSONMigrateCancel(qemuMonitor *mon);
+
+int
+qemuMonitorJSONQueryDump(qemuMonitor *mon,
+ qemuMonitorDumpStats *stats);
+
+int
+qemuMonitorJSONGetDumpGuestMemoryCapability(qemuMonitor *mon,
+ const char *capability);
-int qemuMonitorJSONGraphicsRelocate(qemuMonitor *mon,
- int type,
- const char *hostname,
- int port,
- int tlsPort,
- const char *tlsSubject);
+int
+qemuMonitorJSONDump(qemuMonitor *mon,
+ const char *protocol,
+ const char *dumpformat,
+ bool detach);
-int qemuMonitorJSONAddPCIHostDevice(qemuMonitor *mon,
- virPCIDeviceAddress *hostAddr,
- virPCIDeviceAddress *guestAddr);
+int
+qemuMonitorJSONGraphicsRelocate(qemuMonitor *mon,
+ int type,
+ const char *hostname,
+ int port,
+ int tlsPort,
+ const char *tlsSubject);
-int qemuMonitorJSONAddPCIDisk(qemuMonitor *mon,
- const char *path,
- const char *bus,
- virPCIDeviceAddress *guestAddr);
+int
+qemuMonitorJSONAddPCIHostDevice(qemuMonitor *mon,
+ virPCIDeviceAddress *hostAddr,
+ virPCIDeviceAddress *guestAddr);
+
+int
+qemuMonitorJSONAddPCIDisk(qemuMonitor *mon,
+ const char *path,
+ const char *bus,
+ virPCIDeviceAddress *guestAddr);
-int qemuMonitorJSONAddPCINetwork(qemuMonitor *mon,
- const char *nicstr,
- virPCIDeviceAddress *guestAddr);
+int
+qemuMonitorJSONAddPCINetwork(qemuMonitor *mon,
+ const char *nicstr,
+ virPCIDeviceAddress *guestAddr);
-int qemuMonitorJSONRemovePCIDevice(qemuMonitor *mon,
- virPCIDeviceAddress *guestAddr);
+int
+qemuMonitorJSONRemovePCIDevice(qemuMonitor *mon,
+ virPCIDeviceAddress *guestAddr);
-int qemuMonitorJSONAddFileHandleToSet(qemuMonitor *mon,
- int fd,
- int fdset,
- const char *opaque,
- qemuMonitorAddFdInfo *info);
+int
+qemuMonitorJSONAddFileHandleToSet(qemuMonitor *mon,
+ int fd,
+ int fdset,
+ const char *opaque,
+ qemuMonitorAddFdInfo *info);
-int qemuMonitorJSONRemoveFdset(qemuMonitor *mon,
- int fdset);
+int
+qemuMonitorJSONRemoveFdset(qemuMonitor *mon,
+ int fdset);
-int qemuMonitorJSONQueryFdsets(qemuMonitor *mon,
- qemuMonitorFdsets **fdsets);
+int
+qemuMonitorJSONQueryFdsets(qemuMonitor *mon,
+ qemuMonitorFdsets **fdsets);
-int qemuMonitorJSONSendFileHandle(qemuMonitor *mon,
- const char *fdname,
- int fd);
+int
+qemuMonitorJSONSendFileHandle(qemuMonitor *mon,
+ const char *fdname,
+ int fd);
-int qemuMonitorJSONCloseFileHandle(qemuMonitor *mon,
- const char *fdname);
+int
+qemuMonitorJSONCloseFileHandle(qemuMonitor *mon,
+ const char *fdname);
-int qemuMonitorJSONAddNetdev(qemuMonitor *mon,
- virJSONValue **props);
+int
+qemuMonitorJSONAddNetdev(qemuMonitor *mon,
+ virJSONValue **props);
-int qemuMonitorJSONRemoveNetdev(qemuMonitor *mon,
- const char *alias);
+int
+qemuMonitorJSONRemoveNetdev(qemuMonitor *mon,
+ const char *alias);
-int qemuMonitorJSONQueryRxFilter(qemuMonitor *mon, const char *alias,
- virNetDevRxFilter **filter);
+int
+qemuMonitorJSONQueryRxFilter(qemuMonitor *mon,
+ const char *alias,
+ virNetDevRxFilter **filter);
-int qemuMonitorJSONGetChardevInfo(qemuMonitor *mon,
- GHashTable *info);
+int
+qemuMonitorJSONGetChardevInfo(qemuMonitor *mon,
+ GHashTable *info);
-int qemuMonitorJSONAttachPCIDiskController(qemuMonitor *mon,
- const char *bus,
- virPCIDeviceAddress *guestAddr);
+int
+qemuMonitorJSONAttachPCIDiskController(qemuMonitor *mon,
+ const char *bus,
+ virPCIDeviceAddress *guestAddr);
-int qemuMonitorJSONAddDeviceProps(qemuMonitor *mon,
- virJSONValue **props);
+int
+qemuMonitorJSONAddDeviceProps(qemuMonitor *mon,
+ virJSONValue **props);
-int qemuMonitorJSONDelDevice(qemuMonitor *mon,
- const char *devalias);
+int
+qemuMonitorJSONDelDevice(qemuMonitor *mon,
+ const char *devalias);
-int qemuMonitorJSONAddObject(qemuMonitor *mon,
- virJSONValue **props);
+int
+qemuMonitorJSONAddObject(qemuMonitor *mon,
+ virJSONValue **props);
-int qemuMonitorJSONDelObject(qemuMonitor *mon,
- const char *objalias,
- bool report_error);
+int
+qemuMonitorJSONDelObject(qemuMonitor *mon,
+ const char *objalias,
+ bool report_error);
-int qemuMonitorJSONTransaction(qemuMonitor *mon, virJSONValue **actions)
+int
+qemuMonitorJSONTransaction(qemuMonitor *mon,
+ virJSONValue **actions)
ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2);
-int qemuMonitorJSONDriveMirror(qemuMonitor *mon,
- const char *device,
- const char *file,
- const char *format,
- unsigned long long speed,
- unsigned int granularity,
- unsigned long long buf_size,
- bool shallow,
- bool reuse)
+int
+qemuMonitorJSONDriveMirror(qemuMonitor *mon,
+ const char *device,
+ const char *file,
+ const char *format,
+ unsigned long long speed,
+ unsigned int granularity,
+ unsigned long long buf_size,
+ bool shallow,
+ bool reuse)
ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2) ATTRIBUTE_NONNULL(3);
-int qemuMonitorJSONBlockdevMirror(qemuMonitor *mon,
- const char *jobname,
- bool persistjob,
- const char *device,
- const char *target,
- unsigned long long speed,
- unsigned int granularity,
- unsigned long long buf_size,
- bool shallow,
- bool syncWrite)
+
+int
+qemuMonitorJSONBlockdevMirror(qemuMonitor *mon,
+ const char *jobname,
+ bool persistjob,
+ const char *device,
+ const char *target,
+ unsigned long long speed,
+ unsigned int granularity,
+ unsigned long long buf_size,
+ bool shallow,
+ bool syncWrite)
ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(4) ATTRIBUTE_NONNULL(5);
-int qemuMonitorJSONDrivePivot(qemuMonitor *mon,
- const char *jobname)
+
+int
+qemuMonitorJSONDrivePivot(qemuMonitor *mon,
+ const char *jobname)
ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2);
-int qemuMonitorJSONBlockCommit(qemuMonitor *mon,
- const char *device,
- const char *jobname,
- bool persistjob,
- const char *top,
- const char *topNode,
- const char *base,
- const char *baseNode,
- const char *backingName,
- unsigned long long bandwidth)
+int
+qemuMonitorJSONBlockCommit(qemuMonitor *mon,
+ const char *device,
+ const char *jobname,
+ bool persistjob,
+ const char *top,
+ const char *topNode,
+ const char *base,
+ const char *baseNode,
+ const char *backingName,
+ unsigned long long bandwidth)
ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2);
-char *qemuMonitorJSONDiskNameLookup(qemuMonitor *mon,
- const char *device,
- virStorageSource *top,
- virStorageSource *target)
+char *
+qemuMonitorJSONDiskNameLookup(qemuMonitor *mon,
+ const char *device,
+ virStorageSource *top,
+ virStorageSource *target)
ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2) ATTRIBUTE_NONNULL(3)
ATTRIBUTE_NONNULL(4);
-int qemuMonitorJSONArbitraryCommand(qemuMonitor *mon,
- const char *cmd_str,
- char **reply_str);
+int
+qemuMonitorJSONArbitraryCommand(qemuMonitor *mon,
+ const char *cmd_str,
+ char **reply_str);
-int qemuMonitorJSONInjectNMI(qemuMonitor *mon);
+int
+qemuMonitorJSONInjectNMI(qemuMonitor *mon);
-int qemuMonitorJSONSendKey(qemuMonitor *mon,
- unsigned int holdtime,
- unsigned int *keycodes,
- unsigned int nkeycodes);
+int
+qemuMonitorJSONSendKey(qemuMonitor *mon,
+ unsigned int holdtime,
+ unsigned int *keycodes,
+ unsigned int nkeycodes);
-int qemuMonitorJSONScreendump(qemuMonitor *mon,
- const char *device,
- unsigned int head,
- const char *file);
-
-int qemuMonitorJSONBlockStream(qemuMonitor *mon,
- const char *device,
- const char *jobname,
- bool persistjob,
- const char *base,
- const char *baseNode,
- const char *backingName,
- unsigned long long speed)
+int
+qemuMonitorJSONScreendump(qemuMonitor *mon,
+ const char *device,
+ unsigned int head,
+ const char *file);
+
+int
+qemuMonitorJSONBlockStream(qemuMonitor *mon,
+ const char *device,
+ const char *jobname,
+ bool persistjob,
+ const char *base,
+ const char *baseNode,
+ const char *backingName,
+ unsigned long long speed)
ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2);
-int qemuMonitorJSONBlockJobCancel(qemuMonitor *mon,
- const char *jobname,
- bool force)
+int
+qemuMonitorJSONBlockJobCancel(qemuMonitor *mon,
+ const char *jobname,
+ bool force)
ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2);
int
@@ -329,93 +409,114 @@ qemuMonitorJSONGetJobInfo(qemuMonitor *mon,
size_t *njobs);
-int qemuMonitorJSONBlockJobSetSpeed(qemuMonitor *mon,
- const char *jobname,
- unsigned long long speed)
+int
+qemuMonitorJSONBlockJobSetSpeed(qemuMonitor *mon,
+ const char *jobname,
+ unsigned long long speed)
ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2);
-GHashTable *qemuMonitorJSONGetAllBlockJobInfo(qemuMonitor *mon,
- bool rawjobname)
+GHashTable *
+qemuMonitorJSONGetAllBlockJobInfo(qemuMonitor *mon,
+ bool rawjobname)
ATTRIBUTE_NONNULL(1);
-int qemuMonitorJSONJobDismiss(qemuMonitor *mon,
- const char *jobname)
+int
+qemuMonitorJSONJobDismiss(qemuMonitor *mon,
+ const char *jobname)
ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2);
-int qemuMonitorJSONJobComplete(qemuMonitor *mon,
- const char *jobname)
+int
+qemuMonitorJSONJobComplete(qemuMonitor *mon,
+ const char *jobname)
ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2);
-int qemuMonitorJSONSetLink(qemuMonitor *mon,
- const char *name,
- virDomainNetInterfaceLinkState state);
+int
+qemuMonitorJSONSetLink(qemuMonitor *mon,
+ const char *name,
+ virDomainNetInterfaceLinkState state);
-int qemuMonitorJSONOpenGraphics(qemuMonitor *mon,
- const char *protocol,
- const char *fdname,
- bool skipauth);
+int
+qemuMonitorJSONOpenGraphics(qemuMonitor *mon,
+ const char *protocol,
+ const char *fdname,
+ bool skipauth);
-int qemuMonitorJSONSetBlockIoThrottle(qemuMonitor *mon,
- const char *drivealias,
- const char *qomid,
- virDomainBlockIoTuneInfo *info);
+int
+qemuMonitorJSONSetBlockIoThrottle(qemuMonitor *mon,
+ const char *drivealias,
+ const char *qomid,
+ virDomainBlockIoTuneInfo *info);
-int qemuMonitorJSONGetBlockIoThrottle(qemuMonitor *mon,
- const char *drivealias,
- const char *qdevid,
- virDomainBlockIoTuneInfo *reply);
+int
+qemuMonitorJSONGetBlockIoThrottle(qemuMonitor *mon,
+ const char *drivealias,
+ const char *qdevid,
+ virDomainBlockIoTuneInfo *reply);
-int qemuMonitorJSONSystemWakeup(qemuMonitor *mon);
+int
+qemuMonitorJSONSystemWakeup(qemuMonitor *mon);
-char *qemuMonitorJSONGetSEVMeasurement(qemuMonitor *mon);
+char *
+qemuMonitorJSONGetSEVMeasurement(qemuMonitor *mon);
-int qemuMonitorJSONGetVersion(qemuMonitor *mon,
- int *major,
- int *minor,
- int *micro,
- char **package)
+int
+qemuMonitorJSONGetVersion(qemuMonitor *mon,
+ int *major,
+ int *minor,
+ int *micro,
+ char **package)
ATTRIBUTE_NONNULL(2) ATTRIBUTE_NONNULL(3) ATTRIBUTE_NONNULL(4);
-int qemuMonitorJSONGetMachines(qemuMonitor *mon,
- qemuMonitorMachineInfo ***machines)
+int
+qemuMonitorJSONGetMachines(qemuMonitor *mon,
+ qemuMonitorMachineInfo ***machines)
ATTRIBUTE_NONNULL(2);
-int qemuMonitorJSONGetCPUDefinitions(qemuMonitor *mon,
- qemuMonitorCPUDefs **cpuDefs)
+int
+qemuMonitorJSONGetCPUDefinitions(qemuMonitor *mon,
+ qemuMonitorCPUDefs **cpuDefs)
ATTRIBUTE_NONNULL(2);
-int qemuMonitorJSONGetCPUModelExpansion(qemuMonitor *mon,
- qemuMonitorCPUModelExpansionType type,
- virCPUDef *cpu,
- bool migratable,
- bool fail_no_props,
- qemuMonitorCPUModelInfo **model_info)
+int
+qemuMonitorJSONGetCPUModelExpansion(qemuMonitor *mon,
+ qemuMonitorCPUModelExpansionType type,
+ virCPUDef *cpu,
+ bool migratable,
+ bool fail_no_props,
+ qemuMonitorCPUModelInfo **model_info)
ATTRIBUTE_NONNULL(3) ATTRIBUTE_NONNULL(6);
-int qemuMonitorJSONGetCPUModelBaseline(qemuMonitor *mon,
- virCPUDef *cpu_a,
- virCPUDef *cpu_b,
- qemuMonitorCPUModelInfo **baseline)
+int
+qemuMonitorJSONGetCPUModelBaseline(qemuMonitor *mon,
+ virCPUDef *cpu_a,
+ virCPUDef *cpu_b,
+ qemuMonitorCPUModelInfo **baseline)
ATTRIBUTE_NONNULL(2) ATTRIBUTE_NONNULL(3) ATTRIBUTE_NONNULL(4);
-int qemuMonitorJSONGetCPUModelComparison(qemuMonitor *mon,
- virCPUDef *cpu_a,
- virCPUDef *cpu_b,
- char **result)
+int
+qemuMonitorJSONGetCPUModelComparison(qemuMonitor *mon,
+ virCPUDef *cpu_a,
+ virCPUDef *cpu_b,
+ char **result)
ATTRIBUTE_NONNULL(2) ATTRIBUTE_NONNULL(3);
-int qemuMonitorJSONGetCommands(qemuMonitor *mon,
- char ***commands)
+int
+qemuMonitorJSONGetCommands(qemuMonitor *mon,
+ char ***commands)
ATTRIBUTE_NONNULL(2);
-GHashTable *qemuMonitorJSONGetCommandLineOptions(qemuMonitor *mon);
-int qemuMonitorJSONGetKVMState(qemuMonitor *mon,
- bool *enabled,
- bool *present)
+GHashTable *
+qemuMonitorJSONGetCommandLineOptions(qemuMonitor *mon);
+
+int
+qemuMonitorJSONGetKVMState(qemuMonitor *mon,
+ bool *enabled,
+ bool *present)
ATTRIBUTE_NONNULL(2) ATTRIBUTE_NONNULL(3);
-int qemuMonitorJSONGetObjectTypes(qemuMonitor *mon,
- char ***types)
+int
+qemuMonitorJSONGetObjectTypes(qemuMonitor *mon,
+ char ***types)
ATTRIBUTE_NONNULL(2);
/* ListPath structures and API's are public only for qemumonitorjsontest */
@@ -425,12 +526,14 @@ struct _qemuMonitorJSONListPath {
char *type;
};
-int qemuMonitorJSONGetObjectListPaths(qemuMonitor *mon,
- const char *path,
- qemuMonitorJSONListPath ***paths)
+int
+qemuMonitorJSONGetObjectListPaths(qemuMonitor *mon,
+ const char *path,
+ qemuMonitorJSONListPath ***paths)
ATTRIBUTE_NONNULL(2) ATTRIBUTE_NONNULL(3);
-void qemuMonitorJSONListPathFree(qemuMonitorJSONListPath *paths);
+void
+qemuMonitorJSONListPathFree(qemuMonitorJSONListPath *paths);
/* ObjectProperty structures and Get/Set API's are public only
* for qemumonitorjsontest
@@ -462,166 +565,207 @@ struct _qemuMonitorJSONObjectProperty {
} val;
};
-int qemuMonitorJSONGetObjectProperty(qemuMonitor *mon,
- const char *path,
- const char *property,
- qemuMonitorJSONObjectProperty *prop)
+int
+qemuMonitorJSONGetObjectProperty(qemuMonitor *mon,
+ const char *path,
+ const char *property,
+ qemuMonitorJSONObjectProperty *prop)
ATTRIBUTE_NONNULL(2) ATTRIBUTE_NONNULL(3) ATTRIBUTE_NONNULL(4);
-int qemuMonitorJSONSetObjectProperty(qemuMonitor *mon,
- const char *path,
- const char *property,
- qemuMonitorJSONObjectProperty *prop)
+int
+qemuMonitorJSONSetObjectProperty(qemuMonitor *mon,
+ const char *path,
+ const char *property,
+ qemuMonitorJSONObjectProperty *prop)
ATTRIBUTE_NONNULL(2) ATTRIBUTE_NONNULL(3) ATTRIBUTE_NONNULL(4);
-GHashTable *qemuMonitorJSONGetDeviceProps(qemuMonitor *mon,
- const char *device)
+GHashTable *
+qemuMonitorJSONGetDeviceProps(qemuMonitor *mon,
+ const char *device)
ATTRIBUTE_NONNULL(2);
-int qemuMonitorJSONGetObjectProps(qemuMonitor *mon,
- const char *object,
- char ***props)
+int
+qemuMonitorJSONGetObjectProps(qemuMonitor *mon,
+ const char *object,
+ char ***props)
ATTRIBUTE_NONNULL(2) ATTRIBUTE_NONNULL(3);
-char *qemuMonitorJSONGetTargetArch(qemuMonitor *mon);
-
-int qemuMonitorJSONNBDServerStart(qemuMonitor *mon,
- const virStorageNetHostDef *server,
- const char *tls_alias);
-int qemuMonitorJSONNBDServerAdd(qemuMonitor *mon,
- const char *deviceID,
- const char *export,
- bool writable,
- const char *bitmap);
-int qemuMonitorJSONNBDServerStop(qemuMonitor *mon);
-
-int qemuMonitorJSONBlockExportAdd(qemuMonitor *mon,
- virJSONValue **props);
-
-int qemuMonitorJSONGetTPMModels(qemuMonitor *mon,
- char ***tpmmodels)
+
+char *
+qemuMonitorJSONGetTargetArch(qemuMonitor *mon);
+
+int
+qemuMonitorJSONNBDServerStart(qemuMonitor *mon,
+ const virStorageNetHostDef *server,
+ const char *tls_alias);
+int
+qemuMonitorJSONNBDServerAdd(qemuMonitor *mon,
+ const char *deviceID,
+ const char *export,
+ bool writable,
+ const char *bitmap);
+int
+qemuMonitorJSONNBDServerStop(qemuMonitor *mon);
+
+int
+qemuMonitorJSONBlockExportAdd(qemuMonitor *mon,
+ virJSONValue **props);
+
+int
+qemuMonitorJSONGetTPMModels(qemuMonitor *mon,
+ char ***tpmmodels)
ATTRIBUTE_NONNULL(2);
-int qemuMonitorJSONGetTPMTypes(qemuMonitor *mon,
- char ***tpmtypes)
+int
+qemuMonitorJSONGetTPMTypes(qemuMonitor *mon,
+ char ***tpmtypes)
ATTRIBUTE_NONNULL(2);
-int qemuMonitorJSONAttachCharDev(qemuMonitor *mon,
- const char *chrID,
- virDomainChrSourceDef *chr);
-int qemuMonitorJSONDetachCharDev(qemuMonitor *mon,
- const char *chrID);
+int
+qemuMonitorJSONAttachCharDev(qemuMonitor *mon,
+ const char *chrID,
+ virDomainChrSourceDef *chr);
+int
+qemuMonitorJSONDetachCharDev(qemuMonitor *mon,
+ const char *chrID);
-int qemuMonitorJSONGetDeviceAliases(qemuMonitor *mon,
- char ***aliases);
+int
+qemuMonitorJSONGetDeviceAliases(qemuMonitor *mon,
+ char ***aliases);
-int qemuMonitorJSONGetCPUx86Data(qemuMonitor *mon,
- const char *property,
- virCPUData **cpudata);
+int
+qemuMonitorJSONGetCPUx86Data(qemuMonitor *mon,
+ const char *property,
+ virCPUData **cpudata);
-int qemuMonitorJSONGetGuestCPUx86(qemuMonitor *mon,
- virCPUData **data,
- virCPUData **disabled);
+int
+qemuMonitorJSONGetGuestCPUx86(qemuMonitor *mon,
+ virCPUData **data,
+ virCPUData **disabled);
-int qemuMonitorJSONGetGuestCPU(qemuMonitor *mon,
- virArch arch,
- qemuMonitorCPUFeatureTranslationCallback translate,
- void *opaque,
- virCPUData **enabled,
- virCPUData **disabled);
+int
+qemuMonitorJSONGetGuestCPU(qemuMonitor *mon,
+ virArch arch,
+ qemuMonitorCPUFeatureTranslationCallback translate,
+ void *opaque,
+ virCPUData **enabled,
+ virCPUData **disabled);
-int qemuMonitorJSONRTCResetReinjection(qemuMonitor *mon);
+int
+qemuMonitorJSONRTCResetReinjection(qemuMonitor *mon);
-int qemuMonitorJSONGetIOThreads(qemuMonitor *mon,
- qemuMonitorIOThreadInfo ***iothreads,
- int *niothreads)
+int
+qemuMonitorJSONGetIOThreads(qemuMonitor *mon,
+ qemuMonitorIOThreadInfo ***iothreads,
+ int *niothreads)
ATTRIBUTE_NONNULL(2);
-int qemuMonitorJSONSetIOThread(qemuMonitor *mon,
- qemuMonitorIOThreadInfo *iothreadInfo)
+int
+qemuMonitorJSONSetIOThread(qemuMonitor *mon,
+ qemuMonitorIOThreadInfo *iothreadInfo)
ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2);
-int qemuMonitorJSONGetMemoryDeviceInfo(qemuMonitor *mon,
- GHashTable *info)
+int
+qemuMonitorJSONGetMemoryDeviceInfo(qemuMonitor *mon,
+ GHashTable *info)
ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2);
-int qemuMonitorJSONFindLinkPath(qemuMonitor *mon,
- const char *name,
- const char *alias,
- char **path)
+int
+qemuMonitorJSONFindLinkPath(qemuMonitor *mon,
+ const char *name,
+ const char *alias,
+ char **path)
ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2) ATTRIBUTE_NONNULL(4);
-int qemuMonitorJSONMigrateIncoming(qemuMonitor *mon,
- const char *uri)
+int
+qemuMonitorJSONMigrateIncoming(qemuMonitor *mon,
+ const char *uri)
ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2);
-int qemuMonitorJSONMigrateStartPostCopy(qemuMonitor *mon)
+int
+qemuMonitorJSONMigrateStartPostCopy(qemuMonitor *mon)
ATTRIBUTE_NONNULL(1);
-int qemuMonitorJSONMigrateContinue(qemuMonitor *mon,
- qemuMonitorMigrationStatus status)
+int
+qemuMonitorJSONMigrateContinue(qemuMonitor *mon,
+ qemuMonitorMigrationStatus status)
ATTRIBUTE_NONNULL(1);
-int qemuMonitorJSONGetRTCTime(qemuMonitor *mon,
- struct tm *tm)
+int
+qemuMonitorJSONGetRTCTime(qemuMonitor *mon,
+ struct tm *tm)
ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2);
-int qemuMonitorJSONGetHotpluggableCPUs(qemuMonitor *mon,
- struct qemuMonitorQueryHotpluggableCpusEntry **entries,
- size_t *nentries)
+int
+qemuMonitorJSONGetHotpluggableCPUs(qemuMonitor *mon,
+ struct qemuMonitorQueryHotpluggableCpusEntry **entries,
+ size_t *nentries)
ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2) ATTRIBUTE_NONNULL(3);
-virJSONValue *qemuMonitorJSONQueryQMPSchema(qemuMonitor *mon)
+virJSONValue *
+qemuMonitorJSONQueryQMPSchema(qemuMonitor *mon)
ATTRIBUTE_NONNULL(1);
-int qemuMonitorJSONSetBlockThreshold(qemuMonitor *mon,
- const char *nodename,
- unsigned long long threshold)
+int
+qemuMonitorJSONSetBlockThreshold(qemuMonitor *mon,
+ const char *nodename,
+ unsigned long long threshold)
ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2);
-virJSONValue *qemuMonitorJSONQueryNamedBlockNodes(qemuMonitor *mon,
- bool flat)
+virJSONValue *
+qemuMonitorJSONQueryNamedBlockNodes(qemuMonitor *mon,
+ bool flat)
ATTRIBUTE_NONNULL(1);
-int qemuMonitorJSONSetWatchdogAction(qemuMonitor *mon,
- const char *action)
+int
+qemuMonitorJSONSetWatchdogAction(qemuMonitor *mon,
+ const char *action)
ATTRIBUTE_NONNULL(1);
-int qemuMonitorJSONBlockdevCreate(qemuMonitor *mon,
- const char *jobname,
- virJSONValue **props)
+int
+qemuMonitorJSONBlockdevCreate(qemuMonitor *mon,
+ const char *jobname,
+ virJSONValue **props)
ATTRIBUTE_NONNULL(1);
-int qemuMonitorJSONBlockdevAdd(qemuMonitor *mon,
- virJSONValue **props)
+int
+qemuMonitorJSONBlockdevAdd(qemuMonitor *mon,
+ virJSONValue **props)
ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2);
-int qemuMonitorJSONBlockdevReopen(qemuMonitor *mon,
- virJSONValue **props)
+int
+qemuMonitorJSONBlockdevReopen(qemuMonitor *mon,
+ virJSONValue **props)
ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2);
-int qemuMonitorJSONBlockdevDel(qemuMonitor *mon,
- const char *nodename)
+int
+qemuMonitorJSONBlockdevDel(qemuMonitor *mon,
+ const char *nodename)
ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2);
-int qemuMonitorJSONBlockdevTrayOpen(qemuMonitor *mon,
- const char *id,
- bool force)
+int
+qemuMonitorJSONBlockdevTrayOpen(qemuMonitor *mon,
+ const char *id,
+ bool force)
ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2);
-int qemuMonitorJSONBlockdevTrayClose(qemuMonitor *mon,
- const char *id)
+int
+qemuMonitorJSONBlockdevTrayClose(qemuMonitor *mon,
+ const char *id)
ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2);
-int qemuMonitorJSONBlockdevMediumRemove(qemuMonitor *mon,
- const char *id)
+int
+qemuMonitorJSONBlockdevMediumRemove(qemuMonitor *mon,
+ const char *id)
ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2);
-int qemuMonitorJSONBlockdevMediumInsert(qemuMonitor *mon,
- const char *id,
- const char *nodename)
+int
+qemuMonitorJSONBlockdevMediumInsert(qemuMonitor *mon,
+ const char *id,
+ const char *nodename)
ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2) ATTRIBUTE_NONNULL(3);
-int qemuMonitorJSONGetPRManagerInfo(qemuMonitor *mon,
- GHashTable *info)
+int
+qemuMonitorJSONGetPRManagerInfo(qemuMonitor *mon,
+ GHashTable *info)
ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2);
int
@@ -684,9 +828,10 @@ qemuMonitorJSONTransactionBackup(virJSONValue *actions,
const char *bitmap,
qemuMonitorTransactionBackupSyncMode syncmode);
-int qemuMonitorJSONSetDBusVMStateIdList(qemuMonitor *mon,
- const char *vmstatepath,
- const char *idstr)
+int
+qemuMonitorJSONSetDBusVMStateIdList(qemuMonitor *mon,
+ const char *vmstatepath,
+ const char *idstr)
ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2) ATTRIBUTE_NONNULL(3);
int
--
2.31.1
2 years, 11 months
[libvirt PATCH 0/6] Improve AMD SEV support
by Daniel P. Berrangé
This addresses a few issues in the AMD SEV support
- Neither host or domain level SEV metadata is
exposed in virsh commands
- The domain launch security parameters don't expose
enough info to validate the measurement
The second point was the real purpose of my work. Per the
SEV API guide to calculate the measurement we need
measurement = HMAC(0x04 || API_MAJOR || API_MINOR || BUILD ||
GCTX.POLICY || GCTX.LD || MNONCE; GCTX.TIK)
The API_MINOR, API_MAJOR, BUILD values are things that are
available from 'query-sev' QMP command and libvirt does
not expose this info. This patch series adds them to
virDomainGetLaunchSecurityParams alongside the measurement
that we already report.
So now the client can fetch this info and calculate an expected
measurement to compare with the actual measurement they got.
They will thus know if the guest is safe to inject secrets into,
which is where Jim's recent patches come into play.
Daniel P. Berrangé (6):
include: add new launch security parameters
qemu: report error querying launch params for inactive guest
qemu: add monitor APIs for query-sev
qemu: report new launch security parameters
tools: add 'domlaunchsecinfo' virsh command
tools: add 'nodesevinfo' virsh command
include/libvirt/libvirt-domain.h | 32 +++++++++++++++++++
src/qemu/qemu_driver.c | 47 ++++++++++++++++++++++++----
src/qemu/qemu_monitor.c | 13 ++++++++
src/qemu/qemu_monitor.h | 9 ++++++
src/qemu/qemu_monitor_json.c | 45 +++++++++++++++++++++++++++
src/qemu/qemu_monitor_json.h | 8 +++++
tools/virsh-domain.c | 53 ++++++++++++++++++++++++++++++++
tools/virsh-host.c | 45 +++++++++++++++++++++++++++
8 files changed, 246 insertions(+), 6 deletions(-)
--
2.33.1
2 years, 11 months
[PATCH 00/36] virBitmap freeing cleanup
by Peter Krempa
Peter Krempa (36):
virCapabilitiesInitCaches: Refactor freeing of temporary variables
conf: capabilities: Clean up freeing of virBitmap
virDomainSchedulerParse: Refactor cleanup
virDomainNumatuneParseXML: Refactor cleanup
virDomainDriverGetIOThreadsConfig: Automatically free virBitmap
qemuDomainAssignMemorySlots: Refactor cleanup
qemu: driver: Automatically free temporary virBitmap-s
qemuDomainSelectHotplugVcpuEntities: Refactor cleanup
qemuDomainSetVcpusInternal: Refactor cleanup
qemuDomainSetVcpuInternal: Refactor cleanup
qemuProcessValidateHotpluggableVcpus: Refactor cleanup
qemuSnapshotCreateInactiveExternal: Automatically free temporary
variables
virHostCPUCountThreadSiblings: Refactor cleanup
virHostCPUHasValidSubcoreConfiguration: Refactor cleanup
virHostCPUParseNode: Use automatic memory freeing for virBitmap
virCgroupGetPercpuStats: Refactor cleanup
virshParseCPUList: Refactor cleanup
virnumamock: Use automatic memory freeing for virBitmap
test_virCapabilitiesGetCpusForNodemask: Refactor cleanup
util: bitmap: Unexport 'virBitmapParseSeparator'
virBitmapExpand: Remove return value
virBitmapUnion: Remove return value
virBitmapClearBitExpand: Remove return value
virBitmapSetBitExpand: Remove return value
virBitmapParseSeparator: Remove separator parsing capability
virBitmapParseInternal: Allocate the bitmap in the caller
util: bitmap: Unify parsing of bitmaps
test_driver: Use automatic memory freeing for temporary virBitmaps
lxcSetCpusetTune: Refactor memory clearing
libxl_driver: Use automatic memory freeing for virBitmap
libxlDomainGetNumaParameters: Don't clear a freshly allocated bitmap
lxc_controller: Use automatic memory freeing for virBitmap
virLXCControllerSetup(Resource|Cgroup)Limits: Refactor cleanup
virt-host-validate-common: Use automatic memory freeing for virBitmap
virt-host-validate-qemu: Use automatic memory freeing for virBitmap
virHostCPUGetInfoPopulateLinux: Use automatic memory freeing for
virBitmap
src/conf/capabilities.c | 27 ++---
src/conf/domain_conf.c | 16 +--
src/conf/numa_conf.c | 55 ++++-----
src/hypervisor/domain_driver.c | 7 +-
src/libvirt_private.syms | 1 -
src/libxl/libxl_driver.c | 7 +-
src/lxc/lxc_controller.c | 39 +++---
src/lxc/lxc_native.c | 20 ++--
src/network/bridge_driver.c | 3 +-
src/qemu/qemu_domain_address.c | 12 +-
src/qemu/qemu_driver.c | 50 +++-----
src/qemu/qemu_hotplug.c | 54 ++++-----
src/qemu/qemu_process.c | 16 +--
src/qemu/qemu_snapshot.c | 12 +-
src/test/test_driver.c | 17 +--
src/util/virbitmap.c | 190 ++++++++----------------------
src/util/virbitmap.h | 17 +--
src/util/vircgroup.c | 27 ++---
src/util/virhostcpu.c | 51 +++-----
src/util/virnuma.c | 3 +-
src/util/virqemu.c | 3 +-
src/util/virtpm.c | 3 +-
tests/testutils.c | 2 +-
tests/virbitmaptest.c | 15 +--
tests/vircapstest.c | 19 +--
tests/virnumamock.c | 14 +--
tools/virsh-domain.c | 10 +-
tools/virt-host-validate-common.c | 8 +-
tools/virt-host-validate-qemu.c | 4 +-
29 files changed, 223 insertions(+), 479 deletions(-)
--
2.31.1
2 years, 11 months
[PATCH] docs: Update more links to point to the new Go modules
by Andrea Bolognani
A couple of links were still pointing to the obsolete Go
packages instead of the current module-aware ones.
Signed-off-by: Andrea Bolognani <abologna(a)redhat.com>
---
Pushed as trivial.
docs/bindings.rst | 2 +-
docs/docs.html.in | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/docs/bindings.rst b/docs/bindings.rst
index c5b6b94519..81a4a67067 100644
--- a/docs/bindings.rst
+++ b/docs/bindings.rst
@@ -10,7 +10,7 @@ other languages:
- **C#**: Arnaud Champion develops `C# bindings <csharp.html>`__.
- **Go**: Daniel Berrange develops `Go
- bindings <https://pkg.go.dev/libvirt.org/libvirt-go>`__.
+ bindings <https://pkg.go.dev/libvirt.org/go/libvirt>`__.
- **Java**: Daniel Veillard develops `Java bindings <java.html>`__.
diff --git a/docs/docs.html.in b/docs/docs.html.in
index 22a43517ed..8132090762 100644
--- a/docs/docs.html.in
+++ b/docs/docs.html.in
@@ -83,7 +83,7 @@
<dt><a href="bindings.html">Language bindings and API modules</a></dt>
<dd>Bindings of the libvirt API for
<a href="csharp.html">c#</a>,
- <a href="https://pkg.go.dev/libvirt.org/libvirt-go">go</a>,
+ <a href="https://pkg.go.dev/libvirt.org/go/libvirt">go</a>,
<a href="java.html">java</a>,
<a href="https://libvirt.org/ocaml/">ocaml</a>,
<a href="https://search.cpan.org/dist/Sys-Virt/">perl</a>,
--
2.31.1
2 years, 11 months
[PATCH] NEWS: Fix spacing between releases
by Andrea Bolognani
Signed-off-by: Andrea Bolognani <abologna(a)redhat.com>
---
Pushed as trivial.
NEWS.rst | 1 +
1 file changed, 1 insertion(+)
diff --git a/NEWS.rst b/NEWS.rst
index a4252d555d..6c8ac1d9f9 100644
--- a/NEWS.rst
+++ b/NEWS.rst
@@ -190,6 +190,7 @@ v7.8.0 (2021-10-01)
active. This information can also be retrieved with the new virsh command
``nodedev-info``.
+
v7.7.0 (2021-09-01)
===================
--
2.31.1
2 years, 11 months
can cgroup(cpu,mem) limit qemu and obtain right usage
by longguang.yue
Hi, all:
kata runs qemu as a kubernetes pod and use cgroup to limit cpu/memory.
my question are :
1. how libvirt obtain qemu's cpu and memory usage, how about non-root mode cpu usage?
2. if qemu is limited in cgroups , does that usage include non-root mode cpu usage?
thanks
2 years, 11 months