[PATCH 0/3] Allow reserving more memory for PCI controllers
by Michal Privoznik
This is a rebased version I've posted a while ago:
https://lists.libvirt.org/archives/list/devel@lists.libvirt.org/thread/DF...
Michal Prívozník (3):
conf: Introduce @memReserve to <controller/>
qemu_validate: Restrict setting @memReserve only to some controllers
qemu_command: Generate mem-reserve for controllers
docs/formatdomain.rst | 6 +++++
src/conf/domain_conf.c | 9 +++++++
src/conf/domain_conf.h | 3 +++
src/conf/schemas/domaincommon.rng | 5 ++++
src/qemu/qemu_command.c | 3 +++
src/qemu/qemu_validate.c | 25 +++++++++++++++++++
.../q35-usb2.x86_64-latest.args | 2 +-
.../q35-usb2.x86_64-latest.xml | 2 +-
tests/qemuxmlconfdata/q35-usb2.xml | 2 +-
9 files changed, 54 insertions(+), 3 deletions(-)
--
2.43.2
6 months, 2 weeks
[PATCH] domain_interface: Fix build on FreeBSD
by Michal Privoznik
In one of my recent commits I've chopped just too much and moved
a variable declaration into a function not realizing it's still
used on FreeBSD. Bring it back but only for the FreeBSD case.
Fixes: f8b5bd855f8312457fd9ad8a68fb044982bd3cc6
Signed-off-by: Michal Privoznik <mprivozn(a)redhat.com>
---
Pushed as build breaker fix.
src/hypervisor/domain_interface.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/src/hypervisor/domain_interface.c b/src/hypervisor/domain_interface.c
index cc6aa8551a..756abb08e9 100644
--- a/src/hypervisor/domain_interface.c
+++ b/src/hypervisor/domain_interface.c
@@ -434,11 +434,14 @@ virDomainInterfaceDeleteDevice(virDomainDef *def,
}
break;
case VIR_DOMAIN_NET_TYPE_BRIDGE:
- case VIR_DOMAIN_NET_TYPE_NETWORK:
+ case VIR_DOMAIN_NET_TYPE_NETWORK: {
#ifdef VIR_NETDEV_TAP_REQUIRE_MANUAL_CLEANUP
+ const virNetDevVPortProfile *vport = virDomainNetGetActualVirtPortProfile(net);
+
if (!(vport && vport->virtPortType == VIR_NETDEV_VPORT_PROFILE_OPENVSWITCH))
ignore_value(virNetDevTapDelete(net->ifname, net->backend.tap));
#endif
+ }
break;
case VIR_DOMAIN_NET_TYPE_USER:
case VIR_DOMAIN_NET_TYPE_VHOSTUSER:
--
2.43.2
6 months, 2 weeks
[PATCH 0/2] A couple of fixes for non-standard builddir
by Michal Privoznik
The other day somebody on #virt complained about test suite failing on a
fresh checkout. Turned out, our mocking and some bash scripts are not
prepared for a case when there's a space in builddir path.
After these, there are still some tests failing, but my brain is too
small to fix them:
1) Somehow, $builddir/docs/html/libvirt-libvirt-common.html (and friends) are
generated into $builddir/html/libvirt-libvirt-common.html and I can't
figure out why. This means, check-html and check-html-references tests
are failing.
2) There's some problem with po_check as it fails to find generated
sources (like src/remote/remote_client_bodies.h). I've taken look
into our syntax-check.mk but I have no idea what's wrong nor how to
properly escape paths in Makefile.
Michal Prívozník (2):
tests: mock: Accept spaces in build path
tests: Allow spaces in path to virt-aa-helper
tests/securityselinuxlabeltest.c | 2 +-
tests/securityselinuxtest.c | 2 +-
tests/testutils.c | 6 ++++--
tests/testutils.h | 12 +++++++++++-
tests/viridentitytest.c | 2 +-
tests/virt-aa-helper-test | 4 ++--
6 files changed, 20 insertions(+), 8 deletions(-)
--
2.43.2
6 months, 2 weeks
VHPC'24 - 19th Virtualization in High-Performance Cloud Computing
Workshop - Call for Papers
by Remo Andreoli
VHPC'24<https://vhpc.org/>: August 26th-27th, Madrid, Spain, co-located with Euro-Par 2024. Papers due: May 6th.
The Workshop on Virtualization in High-Performance Cloud Computing (VHPC<https://vhpc.org>) aims to bring together researchers and industrial practitioners facing the challenges posed by virtualization in HPC/Cloud scenarios in order to foster discussion, collaboration, mutual exchange of knowledge and experience, enabling research to ultimately provide novel solutions for virtualized computing systems. The workshop features paper presentations, discussion sessions, and lightning talks. Accepted papers will be published in a Springer LNCS volume.
Focus Topics
This year, we are calling the timely topic of virtualization in support of high-memory LLM training workloads including, but not limited to:
* GPU hypervisor memory virtualization
* Flat CPU/GPU memory page tables/TLB
* Storage/filesystem to virtual memory mapped approaches
* Distributed memory virtualization
* Memory compression and reduction techniques
* Out-of-core training algorithms
* Memory-efficient allocation and data formats
* Benchmarking and profiling tools
* Real-world examples and applications of virtualization techniques in LLM training scenarios
In addition to the regular topic areas of HPC virtualization: design/architecture, management, performance management, modeling and configuration/tooling:
* Container Platforms (Kubernetes, Docker, Nitro/Firecracker, …) and Unikernel Frameworks
* Composable Lightweight Application Components and Lambda / Function-as-a-Service Paradigms
* Latency Control, Warm/Cold-start issues and Data/Container Placement in Heterogeneous Environments
* Energy-efficiency and Service Orchestration in Virtualized Cloud & HPC Infrastructures
The workshop will be composed of 20 min paper presentations, each followed by 10 min discussion sessions, plus lightning talks that are limited to 5 minutes. Presentations may be accompanied by interactive demonstrations. For more information and detailed paper submission instructions, refer to the VHPC'24 webpage<https://vhpc.org/>.
Important Dates (AoE)
* May 6th, 2024: Paper submission deadline (Springer LNCS)
* Jun 20th, 2024: Acceptance notification
* Jul 1st, 2024: Camera-ready version due
* Aug 26th-27th, 2024: Workshop Day
Workshop Chair
* Michael Alexander (chair), University of Vienna, Austria
* Anastassios Nanos (co-chair), Nubificus Ltd., UK
* Tommaso Cucinotta (co-chair), Scuola Superiore Sant'Anna, Italy
Publicity Chair
* Remo Andreoli, Scuola Superiore Sant'Anna, Italy
General Information
The workshop will be held in conjunction with the International European Conference on Parallel and Distributed Computing (Euro-Par 2024)<https://2024.euro-par.org>, on Aug 26th-27th, 2024, in Madrid, Spain.
The VHPC co-chairs
6 months, 2 weeks
[PATCH] vbox: Drop needless g_new0(..., 0) in vbox_snapshot_conf.c
by Michal Privoznik
clang on Fedora started to complain about some calls to g_new0()
we're making in vbox_snapshot_conf.c. Specifically, we're passing
zero as number of elements to allocate. And while usually SA
tools are not clever, in this specific case clang is right.
There are three cases where such call is made, but all of them
later use VIR_EXPAND_N() to allocate more memory (if needed). But
VIR_EXPAND_N() accepts a variable set to NULL happily.
Therefore, just drop those three calls to g_new0(..., 0) and let
VIR_EXPAND_N() allocate memory.
Signed-off-by: Michal Privoznik <mprivozn(a)redhat.com>
---
src/vbox/vbox_snapshot_conf.c | 6 ------
1 file changed, 6 deletions(-)
diff --git a/src/vbox/vbox_snapshot_conf.c b/src/vbox/vbox_snapshot_conf.c
index 89cd685954..b424648368 100644
--- a/src/vbox/vbox_snapshot_conf.c
+++ b/src/vbox/vbox_snapshot_conf.c
@@ -460,8 +460,6 @@ virVBoxSnapshotConfAllChildren(virVBoxSnapshotConfHardDisk *disk,
size_t i = 0;
size_t j = 0;
- ret = g_new0(virVBoxSnapshotConfHardDisk *, 0);
-
for (i = 0; i < disk->nchildren; i++) {
size_t tempSize = virVBoxSnapshotConfAllChildren(disk->children[i], &tempList);
VIR_EXPAND_N(ret, returnSize, tempSize);
@@ -1314,8 +1312,6 @@ virVBoxSnapshotConfRemoveFakeDisks(virVBoxSnapshotConfMachine *machine)
virVBoxSnapshotConfHardDisk **tempList = NULL;
virVBoxSnapshotConfHardDisk **diskList = NULL;
- diskList = g_new0(virVBoxSnapshotConfHardDisk *, 0);
-
for (i = 0; i < machine->mediaRegistry->ndisks; i++) {
tempSize = virVBoxSnapshotConfAllChildren(machine->mediaRegistry->disks[i], &tempList);
VIR_EXPAND_N(diskList, diskSize, tempSize);
@@ -1364,8 +1360,6 @@ virVBoxSnapshotConfDiskIsInMediaRegistry(virVBoxSnapshotConfMachine *machine,
virVBoxSnapshotConfHardDisk **tempList = NULL;
virVBoxSnapshotConfHardDisk **diskList = NULL;
- diskList = g_new0(virVBoxSnapshotConfHardDisk *, 0);
-
for (i = 0; i < machine->mediaRegistry->ndisks; i++) {
tempSize = virVBoxSnapshotConfAllChildren(machine->mediaRegistry->disks[i], &tempList);
VIR_EXPAND_N(diskList, diskSize, tempSize);
--
2.43.2
6 months, 3 weeks
[PATCH 0/5] Clear QoS for OVS more frequently
by Michal Privoznik
*** BLURB HERE ***
Michal Prívozník (5):
virnetdevopenvswitch: Fix comment to
virNetDevOpenvswitchInterfaceGetMaster()
hypervisor: Introduce and use virDomainInterfaceVportRemove()
virnetdevopenvswitch: Drop @brname arg from
virNetDevOpenvswitchRemovePort()
conf: Move virDomainClearNetBandwidth() to src/hypervisor/
domain_interface: Introduce and use virDomainInterfaceClearQoS()
src/conf/netdev_bandwidth_conf.c | 14 ------
src/conf/netdev_bandwidth_conf.h | 3 --
src/hypervisor/domain_interface.c | 78 ++++++++++++++++++++++++++-----
src/hypervisor/domain_interface.h | 5 ++
src/libvirt_private.syms | 4 +-
src/lxc/lxc_driver.c | 14 ++----
src/lxc/lxc_process.c | 18 +++----
src/qemu/qemu_hotplug.c | 40 ++--------------
src/util/virnetdevopenvswitch.c | 4 +-
src/util/virnetdevopenvswitch.h | 4 +-
src/util/virnetdevtap.c | 2 +-
11 files changed, 95 insertions(+), 91 deletions(-)
--
2.43.2
6 months, 3 weeks
[PATCH] vsh: Drop fwd declaration of a nonexistent function
by Michal Privoznik
The vshFindTypedParamByName() function no longer exists (as of
v1.0.2-rc1~82), but its header file declaration was still kept
around. Drop it.
Signed-off-by: Michal Privoznik <mprivozn(a)redhat.com>
---
tools/vsh.h | 3 ---
1 file changed, 3 deletions(-)
diff --git a/tools/vsh.h b/tools/vsh.h
index f06d65407d..eeba1d4b3c 100644
--- a/tools/vsh.h
+++ b/tools/vsh.h
@@ -314,9 +314,6 @@ void vshDebug(vshControl *ctl, int level, const char *format, ...)
#define vshStrcasecmp(S1, S2) strcasecmp(S1, S2)
int vshNameSorter(const void *a, const void *b);
-virTypedParameterPtr vshFindTypedParamByName(const char *name,
- virTypedParameterPtr list,
- int count);
char *vshGetTypedParamValue(vshControl *ctl, virTypedParameterPtr item)
ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2);
--
2.43.2
6 months, 3 weeks
[RFC PATCH v1 0/5] node_device_udev: small improvements
by Marc Hartmayer
The first patch fixes a resource leak, the other patches are small improvements
and locking improvements.
Marc Hartmayer (5):
node_device_udev: Remove the timeout if the data is disposed
node_device_udev: Test for mdevctlTimeout != -1
node_device_udev: Add comments about locking
node_device_udev: Take lock if driver->privateData is modified
node_device_udev: Rename `th` to `udevThread`
src/node_device/node_device_udev.c | 42 ++++++++++++++++++++----------
1 file changed, 28 insertions(+), 14 deletions(-)
base-commit: e2a7dd3f7e9843b0c0753cf6b6d9792351f8c6e1
--
2.34.1
6 months, 3 weeks
[PATCH RFC 00/12] Support throttle block filters
by wucf@linux.ibm.com
From: Chun Feng Wu <wucf(a)linux.ibm.com>
Hi,
I am thinking to leverage "throttle block filter" in QEMU to support more flexible I/O limits(e.g. tiered I/O groups), one sample provided by QEMU doc is:
https://github.com/qemu/qemu/blob/master/docs/throttle.txt
"For example, let's say that we have three different drives and we want to set I/O limits for
each one of them and an additional set of limits for the combined I/O of all three drives."
The implementation idea is to
- Define throttle groups(limit) in domain
- Define throttle filter to reference throttle group within disk
- Within domain disk, throttle filters references multiple throttle groups to form filter chain to apply multiple limits in QEMU like above sample
- Add new virsh cmds for throttle group management:
throttlegroupset Add or update a throttling group.
throttlegroupdel Delete a throttling group.
throttlegroupinfo Get a throttling group.
throttlegrouplist list all domain throttlegroups
- Update "attach-disk" to add one more option "--throttle-groups" to apply throttle filters e.g. "virsh attach-disk $VM_ID ${DISK_PATH}/vm1_disk_2.qcow2 vdd --driver qemu --subdriver qcow2 --targetbus virtio --throttle-groups limit2,limit012"
- I chose above semantics as I felt they're appropriate, if there are better ones please kindly suggest.
This patchset includes:
- Throttle group and throttle filter definition in patch 1
- New QMP processing to update and get throttle group in patch 2
- New API definition and implementation in patch 3
- Hotplug and qemuProcessLaunch flow implemenation in patch 4, 5
- Domain XML schema and doc(formatdomain.rst) change in patch 6
- Tests in patch 7, 8
- Virsh cmd implementation in patch 9
- Other enhencement/verification implementation in patch 10, 11, 12
From QMP perspective, the sample flow works this way:
- Throttle group creation:
virsh qemu-monitor-command 1 '{"execute":"object-add", "arguments":{"qom-type":"throttle-group","id":"limit0","limits":{"iops-total":200,"iops-read":0,"iops-total-max":200,"iops-total-max-length":1}}}'
virsh qemu-monitor-command 1 '{"execute":"object-add", "arguments":{"qom-type":"throttle-group","id":"limit1","limits":{"iops-total":250,"iops-read":0,"iops-total-max":250,"iops-total-max-length":1}}}'
virsh qemu-monitor-command 1 '{"execute":"object-add", "arguments":{"qom-type":"throttle-group","id":"limit2","limits":{"iops-total":300,"iops-read":0,"iops-total-max":300,"iops-total-max-length":1}}}'
virsh qemu-monitor-command 1 '{"execute":"object-add", "arguments":{"qom-type":"throttle-group","id":"limit012","limits":{"iops-total":400,"iops-read":0,"iops-total-max":400,"iops-total-max-length":1}}}'
- Chain up filters during attaching disk to apply two filters(limit0 and limit012):
virsh qemu-monitor-command 1 '{"execute":"blockdev-add", "arguments": {"driver":"file","filename":"/virt/disks/vm1_disk_1.qcow2","node-name":"test-3-storage","auto-read-only":true,"discard":"unmap"}}'
virsh qemu-monitor-command 1 '{"execute":"blockdev-add", "arguments":{"node-name":"test-3-format","read-only":false,"driver":"qcow2","file":"test-3-storage","backing":null}}'
virsh qemu-monitor-command 1 '{"execute":"blockdev-add", "arguments":{"driver":"throttle","node-name":"libvirt-5-filter","throttle-group": "limit0","file":"test-3-format"}}'
virsh qemu-monitor-command 1 '{"execute":"blockdev-add", "arguments": {"driver":"throttle","node-name":"libvirt-6-filter","throttle-group":"limit012","file":"libvirt-5-filter"}}'
virsh qemu-monitor-command 1 '{"execute": "device_add", "arguments": {"driver":"virtio-blk-pci","scsi":false,"bus":"pci.0","addr":"0x5","drive":"libvirt-6-filter","id":"virtio-disk1"}}'
BTW, I also got support from these guys(guyujie(a)linux.ibm.com, wuyx(a)linux.ibm.com, xinhaong(a)linux.ibm.com, commits under their names are included) to help do some enhancement/verification implementation, thanks a lot!
Any comments/suggestions will be appriciated!
Chun Feng Wu (9):
config: Introduce ThrottleGroup and ThrottleFilter
qemu: monitor: Add support for ThrottleGroup operations
remote: New APIs for ThrottleGroup lifecycle management
qemu: hotplug: Support hot attach block disk along with throttle
filters
qemu: command: Support throttle groups and filters during
qemuProcessLaunch
schema: Add new domain elements to support multiple throttle filters
test: Test throttle group lifecycle APIs
tests: Test qemuMonitorJSONGetThrottleGroup and
qemuMonitorJSONUpdateThrottleGroup
virsh: Add support for throttle group operations
Hao Ning Xin (1):
config: validate: Verify throttle group fields
Yan Xiu Wu (1):
config: validate: Use "iotune" and "throttlefilters" exclusively for
specific disk
Yu Jie Gu (1):
remote: Define remote_domain_set_throttle_group_args and adjust
throttle structs sequence
docs/formatdomain.rst | 48 ++
include/libvirt/libvirt-domain.h | 29 +
src/conf/domain_conf.c | 364 ++++++++++++
src/conf/domain_conf.h | 43 ++
src/conf/domain_validate.c | 115 ++--
src/conf/schemas/domaincommon.rng | 164 +++++-
src/conf/virconftypes.h | 4 +
src/driver-hypervisor.h | 22 +
src/libvirt-domain.c | 188 +++++++
src/libvirt_private.syms | 9 +
src/libvirt_public.syms | 7 +
src/qemu/qemu_block.c | 121 ++++
src/qemu/qemu_block.h | 53 ++
src/qemu/qemu_command.c | 148 +++++
src/qemu/qemu_command.h | 9 +
src/qemu/qemu_domain.c | 79 +++
src/qemu/qemu_domain.h | 10 +
src/qemu/qemu_driver.c | 520 +++++++++++++++++
src/qemu/qemu_hotplug.c | 23 +
src/qemu/qemu_monitor.c | 29 +
src/qemu/qemu_monitor.h | 10 +
src/qemu/qemu_monitor_json.c | 135 +++++
src/qemu/qemu_monitor_json.h | 13 +
src/remote/remote_daemon_dispatch.c | 60 ++
src/remote/remote_driver.c | 46 ++
src/remote/remote_protocol.x | 50 +-
src/remote_protocol-structs | 30 +
src/test/test_driver.c | 380 +++++++++++++
tests/qemumonitorjsontest.c | 89 +++
.../qemustatusxml2xmldata/backup-pull-in.xml | 1 +
.../blockjob-blockdev-in.xml | 1 +
.../blockjob-mirror-in.xml | 1 +
.../migration-in-params-in.xml | 1 +
.../migration-out-nbd-bitmaps-in.xml | 1 +
.../migration-out-nbd-out.xml | 1 +
.../migration-out-nbd-tls-out.xml | 1 +
.../migration-out-params-in.xml | 1 +
tests/qemustatusxml2xmldata/modern-in.xml | 1 +
tests/qemustatusxml2xmldata/upgrade-out.xml | 1 +
.../qemustatusxml2xmldata/vcpus-multi-in.xml | 1 +
tools/virsh-completer-domain.c | 62 ++
tools/virsh-completer-domain.h | 11 +
tools/virsh-domain.c | 530 ++++++++++++++++++
43 files changed, 3376 insertions(+), 36 deletions(-)
--
2.34.1
6 months, 3 weeks
[PATCH 0/3] qemu: Add support for virtio sound model
by Rayhan Faizel
virtio-sound-pci and virtio-sound-device were recently introduced
in QEMU 8.2.0.
The full documentation of the virtio sound implementation in QEMU
can be found here:
https://www.qemu.org/docs/master/system/devices/virtio-snd.html
Example:
<sound model='virtio' streams='2'/>
Rayhan Faizel (3):
qemu_capabilities: Add QEMU_CAPS_DEVICE_VIRTIO_SOUND capability
conf: Introduce support for virtio-sound devices
qemu: Generate command line for sound devices with model 'virtio'
docs/formatdomain.rst | 11 ++++-
src/conf/domain_conf.c | 25 +++++++++++
src/conf/domain_conf.h | 4 ++
src/conf/domain_postparse.c | 13 +++++-
src/conf/schemas/domaincommon.rng | 11 +++++
src/libxl/libxl_domain.c | 1 +
src/qemu/qemu_capabilities.c | 3 ++
src/qemu/qemu_capabilities.h | 1 +
src/qemu/qemu_command.c | 24 +++++++++-
src/qemu/qemu_domain_address.c | 9 ++++
src/qemu/qemu_validate.c | 8 ++++
.../caps_8.2.0_aarch64.xml | 1 +
.../caps_8.2.0_armv7l.xml | 1 +
.../caps_8.2.0_loongarch64.xml | 1 +
.../qemucapabilitiesdata/caps_8.2.0_s390x.xml | 1 +
.../caps_8.2.0_x86_64.xml | 1 +
.../caps_9.0.0_x86_64.xml | 1 +
.../arm-vexpressa9-virtio.aarch64-latest.args | 1 +
.../arm-vexpressa9-virtio.aarch64-latest.xml | 3 ++
.../qemuxmlconfdata/arm-vexpressa9-virtio.xml | 3 +-
.../sound-device-virtio.x86_64-latest.args | 36 +++++++++++++++
.../sound-device-virtio.x86_64-latest.xml | 44 +++++++++++++++++++
tests/qemuxmlconfdata/sound-device-virtio.xml | 28 ++++++++++++
tests/qemuxmlconftest.c | 1 +
24 files changed, 226 insertions(+), 6 deletions(-)
create mode 100644 tests/qemuxmlconfdata/sound-device-virtio.x86_64-latest.args
create mode 100644 tests/qemuxmlconfdata/sound-device-virtio.x86_64-latest.xml
create mode 100644 tests/qemuxmlconfdata/sound-device-virtio.xml
--
2.34.1
6 months, 3 weeks