[libvirt] [PATCH 0/3 for 3.2.0] Fix host-model CPU with non-migratable features
by Jiri Denemark
This series fixes a regression in libvirt which would break domains with
a CPU defined as, for example:
<cpu mode='host-model'>
<feature name='invtsc' policy='require'/>
</cpu>
Such domains would work just fine with libvirt <= 3.1.0 or QEMU < 2.9.0,
but they would be broken with current libvirt and QEMU >= 2.9.0.
This is because we started asking QEMU for CPU features supported by the
host CPU, by which we think all non-migratable features are not
supported because QEMU filters them out by default.
This series changes our code to properly detect even non-migratable
features, but still leaves the piece which relies on our cpu_map.xml to
filter them when someone asks for just <cpu mode='host-model'/>. Patches
which will use the data provided by QEMU instead of our static database
in cpu_map.xml will be sent soon, since they are not required to fix the
regression.
Jiri Denemark (3):
qemuMonitorCPUModelInfo: Add support for non-migratable features
qemu: Check migratable host CPU features
qemu: Check non-migratable host CPU features
src/qemu/qemu_capabilities.c | 96 ++-
src/qemu/qemu_monitor.c | 9 +-
src/qemu/qemu_monitor.h | 3 +
src/qemu/qemu_monitor_json.c | 11 +
src/qemu/qemu_monitor_json.h | 3 +-
tests/cputest.c | 2 +-
tests/domaincapsschemadata/qemu_2.9.0.x86_64.xml | 1 +
.../qemucapabilitiesdata/caps_2.8.0.s390x.replies | 8 +
tests/qemucapabilitiesdata/caps_2.8.0.s390x.xml | 2 +-
.../qemucapabilitiesdata/caps_2.9.0.x86_64.replies | 840 +++++++++++++++++++++
tests/qemucapabilitiesdata/caps_2.9.0.x86_64.xml | 368 ++++-----
11 files changed, 1148 insertions(+), 195 deletions(-)
--
2.12.2
7 years, 7 months
[libvirt] [PATCH] docs: document bhyve UEFI support
by Roman Bogorodskiy
- Add a news entry
- Update the driver page with documentation of the new options
and some examples
---
docs/drvbhyve.html.in | 94 +++++++++++++++++++++++++++++++++++++++++++++++++++
docs/news.xml | 13 +++++++
2 files changed, 107 insertions(+)
diff --git a/docs/drvbhyve.html.in b/docs/drvbhyve.html.in
index 64a1ff694..0aed121ff 100644
--- a/docs/drvbhyve.html.in
+++ b/docs/drvbhyve.html.in
@@ -155,6 +155,57 @@ Note the addition of <bootloader>.
</domain>
</pre>
+<h3>Example config (Linux UEFI guest, VNC, tablet)</h3>
+
+<p>This is an example to boot into Fedora 25 installation:</p>
+
+<pre>
+<domain type='bhyve'>
+ <name>fedora_uefi_vnc_tablet</name>
+ <memory unit='G'>4</memory>
+ <vcpu>2</vcpu>
+ <os>
+ <type>hvm</type>
+ <b><loader readonly="yes" type="pflash">/usr/local/share/uefi-firmware/BHYVE_UEFI.fd</loader></b>
+ </os>
+ <features>
+ <apic/>
+ <acpi/>
+ </features>
+ <clock offset='utc'/>
+ <on_poweroff>destroy</on_poweroff>
+ <on_reboot>restart</on_reboot>
+ <on_crash>destroy</on_crash>
+ <devices>
+ <disk type='file' device='cdrom'>
+ <driver name='file' type='raw'/>
+ <source file='/path/to/Fedora-Workstation-Live-x86_64-25-1.3.iso'/>
+ <target dev='hdc' bus='sata'/>
+ <readonly/>
+ </disk>
+ <disk type='file' device='disk'>
+ <driver name='file' type='raw'/>
+ <source file='/path/to/linux_uefi.img'/>
+ <target dev='hda' bus='sata'/>
+ </disk>
+ <interface type='bridge'>
+ <model type='virtio'/>
+ <source bridge="virbr0"/>
+ </interface>
+ <serial type="nmdm">
+ <source master="/dev/nmdm0A" slave="/dev/nmdm0B"/>
+ </serial>
+ <b><graphics type='vnc' port='5904'>
+ <listen type='address' address='127.0.0.1'/>
+ </graphics>
+ <controller type='usb' model='nec-xhci'/>
+ <input type='tablet' bus='usb'/></b>
+ </devices>
+</domain>
+</pre>
+
+<p>Please refer to the <a href="#uefi">UEFI</a> section for a more detailed explanation.</p>
+
<h2><a name="usage">Guest usage / management</a></h2>
<h3><a name="console">Connecting to a guest console</a></h3>
@@ -261,6 +312,49 @@ attempt to boot from the first partition in the disk image.</p>
<p>Caveat: <code>bootloader_args</code> does not support any quoting.
Filenames, etc, must not have spaces or they will be tokenized incorrectly.</p>
+<h3><a name="uefi">Using UEFI bootrom, VNC, and USB tables</a></h3>
+
+<p><span class="since">Since 3.2.0</span>, in addition to <a href="#grubbhyve">grub-bhyve</a>,
+non-FreeBSD guests could be also booted using an UEFI boot ROM, provided both guest OS and
+installed <code>bhyve(1)</code> version support UEFI. To use that, <code>loader</code>
+should be specified in the <code>os</code> section:</p>
+
+<pre>
+<domain type='bhyve'>
+ ...
+ <os>
+ <type>hvm</type>
+ <loader readonly="yes" type="pflash">/usr/local/share/uefi-firmware/BHYVE_UEFI.fd</loader>
+ </os>
+ ...
+</pre>
+
+<p>This uses the UEFI firmware provided by
+the <a href="https://www.freshports.org/sysutils/bhyve-firmware/">sysutils/bhyve-firmware</a>
+FreeBSD port.</p>
+
+<p>VNC and the tablet input device could be configured this way:</p>
+
+<pre>
+<domain type='bhyve'>
+ <devices>
+ ...
+ <graphics type='vnc' port='5904'>
+ <listen type='address' address='127.0.0.1'/>
+ </graphics>
+ <controller type='usb' model='nec-xhci'/>
+ <input type='tablet' bus='usb'/>
+ </devices>
+ ...
+</domain>
+</pre>
+
+<p>This way, VNC will be accessible on <code>127.0.0.1:5904</code>.</p>
+
+<p>Please note that the tablet device requires to have an USB controller
+of the <code>nec-xhci</code> model. Currently, only a single controller of this
+type and a single tablet are supported per domain.</p>
+
<h3><a name="clockconfig">Clock configuration</a></h3>
<p>Originally bhyve supported only localtime for RTC. Support for UTC time was introduced in
diff --git a/docs/news.xml b/docs/news.xml
index 814bd93fd..0db9813d7 100644
--- a/docs/news.xml
+++ b/docs/news.xml
@@ -70,6 +70,19 @@
introducing a new host device type in the XML.
</description>
</change>
+ <change>
+ <summary>
+ bhyve: Add support for UEFI boot ROM, VNC, and USB tablet
+ </summary>
+ <description>
+ The bhyve driver now supports booting using the UEFI boot ROM,
+ so non-FreeBSD guests that support UEFI could be booted without
+ using an external boot loader like grub-bhyve. Video is also
+ supported now, allowing to connect to guests via VNC and use
+ an USB tablet as an input device. Please refer to
+ the driver page for domain XML examples.
+ </description>
+ </change>
</section>
<section title="Improvements">
<change>
--
2.11.0
7 years, 7 months
[libvirt] [PATCH 0/4] qemu: ACPI and UEFI fixes
by Andrea Bolognani
Changes from [RFC]:
* Add patches 3 and 4.
[RFC] https://www.redhat.com/archives/libvir-list/2017-March/msg00347.html
Andrea Bolognani (4):
qemu: Advertise ACPI support for aarch64 guests
tests: Initialize basic capabilities properly
qemu: Enforce ACPI, UEFI requirements
tests: Test ACPI, UEFI requirements
src/qemu/qemu_capabilities.c | 30 +++++++++++++++++-----
src/qemu/qemu_command.c | 20 ++++++++++++++-
.../caps_2.6.0-gicv2.aarch64.xml | 1 +
.../caps_2.6.0-gicv3.aarch64.xml | 1 +
.../qemuxml2argv-aarch64-aavmf-virtio-mmio.args | 1 +
.../qemuxml2argv-aarch64-aavmf-virtio-mmio.xml | 1 -
....args => qemuxml2argv-aarch64-acpi-nouefi.args} | 9 ++++---
...gh.xml => qemuxml2argv-aarch64-acpi-nouefi.xml} | 18 ++++++-------
.../qemuxml2argv-aarch64-acpi-uefi.args | 22 ++++++++++++++++
...ough.xml => qemuxml2argv-aarch64-acpi-uefi.xml} | 17 ++++++------
.../qemuxml2argv-aarch64-cpu-passthrough.args | 1 +
.../qemuxml2argv-aarch64-cpu-passthrough.xml | 1 -
...rgs => qemuxml2argv-aarch64-noacpi-nouefi.args} | 13 +++++-----
....xml => qemuxml2argv-aarch64-noacpi-nouefi.xml} | 21 +++++++--------
.../qemuxml2argv-aarch64-noacpi-uefi.args | 23 +++++++++++++++++
...gh.xml => qemuxml2argv-aarch64-noacpi-uefi.xml} | 20 ++++++---------
.../qemuxml2argv-aarch64-video-virtio-gpu-pci.args | 1 +
.../qemuxml2argv-aarch64-video-virtio-gpu-pci.xml | 3 ---
...l2argv-aarch64-virt-2.6-virtio-pci-default.args | 1 +
...ml2argv-aarch64-virt-2.6-virtio-pci-default.xml | 1 -
.../qemuxml2argv-aarch64-virt-default-nic.args | 1 +
.../qemuxml2argv-aarch64-virt-default-nic.xml | 3 ---
.../qemuxml2argv-aarch64-virt-virtio.args | 1 +
.../qemuxml2argv-aarch64-virt-virtio.xml | 1 -
.../qemuxml2argv-aarch64-virtio-pci-default.args | 1 +
.../qemuxml2argv-aarch64-virtio-pci-default.xml | 1 -
...l2argv-aarch64-virtio-pci-manual-addresses.args | 1 +
...ml2argv-aarch64-virtio-pci-manual-addresses.xml | 1 -
.../qemuxml2argv-balloon-ccw-deflate.args | 1 -
.../qemuxml2argv-balloon-mmio-deflate.args | 1 +
.../qemuxml2argv-balloon-mmio-deflate.xml | 1 -
.../qemuxml2argv-console-sclp.args | 1 -
.../qemuxml2argv-console-virtio-ccw.args | 1 -
.../qemuxml2argv-console-virtio-s390.args | 1 -
.../qemuxml2argv-cpu-s390-features.args | 1 -
.../qemuxml2argv-cpu-s390-zEC12.args | 1 -
.../qemuxml2argv-disk-virtio-ccw-many.args | 1 -
.../qemuxml2argv-disk-virtio-ccw.args | 1 -
.../qemuxml2argv-disk-virtio-s390.args | 1 -
.../qemuxml2argv-disk-virtio-scsi-ccw.args | 1 -
tests/qemuxml2argvdata/qemuxml2argv-fs9p-ccw.args | 1 -
.../qemuxml2argv-hostdev-scsi-vhost-scsi-ccw.args | 1 -
.../qemuxml2argv-hugepages-numa.args | 1 +
.../qemuxml2argv-iothreads-disk-virtio-ccw.args | 1 -
.../qemuxml2argv-iothreads-virtio-scsi-ccw.args | 1 -
.../qemuxml2argv-machine-aeskeywrap-off-cap.args | 1 -
.../qemuxml2argv-machine-aeskeywrap-off-caps.args | 1 -
.../qemuxml2argv-machine-aeskeywrap-on-cap.args | 1 -
.../qemuxml2argv-machine-aeskeywrap-on-caps.args | 1 -
.../qemuxml2argv-machine-deakeywrap-off-cap.args | 1 -
.../qemuxml2argv-machine-deakeywrap-off-caps.args | 1 -
.../qemuxml2argv-machine-deakeywrap-on-cap.args | 1 -
.../qemuxml2argv-machine-deakeywrap-on-caps.args | 1 -
.../qemuxml2argv-machine-keywrap-none-caps.args | 1 -
.../qemuxml2argv-machine-keywrap-none.args | 1 -
.../qemuxml2argv-memory-hotplug-ppc64-nonuma.args | 1 -
.../qemuxml2argv-net-virtio-ccw.args | 1 -
.../qemuxml2argv-net-virtio-s390.args | 1 -
tests/qemuxml2argvdata/qemuxml2argv-ppc-dtb.args | 1 -
.../qemuxml2argv-ppce500-serial.args | 1 -
.../qemuxml2argv-pseries-basic.args | 1 -
.../qemuxml2argv-pseries-cpu-compat.args | 1 -
.../qemuxml2argv-pseries-cpu-exact.args | 1 -
.../qemuxml2argv-pseries-cpu-le.args | 1 -
.../qemuxml2argv-pseries-nvram.args | 1 -
.../qemuxml2argv-pseries-panic-missing.args | 1 -
.../qemuxml2argv-pseries-panic-no-address.args | 1 -
.../qemuxml2argv-pseries-usb-default.args | 1 -
.../qemuxml2argv-pseries-usb-kbd.args | 1 -
.../qemuxml2argv-pseries-usb-multi.args | 1 -
.../qemuxml2argv-pseries-vio-user-assigned.args | 1 -
.../qemuxml2argvdata/qemuxml2argv-pseries-vio.args | 1 -
.../qemuxml2argv-q35-acpi-nouefi.args | 21 +++++++++++++++
.../qemuxml2argv-q35-acpi-nouefi.xml | 27 +++++++++++++++++++
.../qemuxml2argv-q35-acpi-uefi.args | 22 ++++++++++++++++
.../qemuxml2argv-q35-acpi-uefi.xml | 26 +++++++++++++++++++
.../qemuxml2argv-q35-noacpi-nouefi.args | 22 ++++++++++++++++
.../qemuxml2argv-q35-noacpi-nouefi.xml | 24 +++++++++++++++++
.../qemuxml2argv-q35-noacpi-uefi.xml | 23 +++++++++++++++++
.../qemuxml2argv-q35-virt-manager-basic.args | 1 +
...muxml2argv-s390-allow-bogus-usb-controller.args | 1 -
.../qemuxml2argv-s390-allow-bogus-usb-none.args | 1 -
.../qemuxml2argv-s390-panic-missing.args | 1 -
.../qemuxml2argv-s390-panic-no-address.args | 1 -
.../qemuxml2argv-virtio-rng-ccw.args | 1 -
.../qemuxml2argv-watchdog-diag288.args | 1 -
tests/qemuxml2argvtest.c | 30 ++++++++++++++++++++--
.../qemuxml2xmlout-aarch64-aavmf-virtio-mmio.xml | 1 -
...qemuxml2xmlout-aarch64-video-virtio-gpu-pci.xml | 1 -
.../qemuxml2xmlout-aarch64-virtio-pci-default.xml | 1 -
...2xmlout-aarch64-virtio-pci-manual-addresses.xml | 1 -
91 files changed, 339 insertions(+), 126 deletions(-)
copy tests/qemuxml2argvdata/{qemuxml2argv-aarch64-cpu-passthrough.args => qemuxml2argv-aarch64-acpi-nouefi.args} (55%)
copy tests/qemuxml2argvdata/{qemuxml2argv-aarch64-cpu-passthrough.xml => qemuxml2argv-aarch64-acpi-nouefi.xml} (59%)
create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-aarch64-acpi-uefi.args
copy tests/qemuxml2argvdata/{qemuxml2argv-aarch64-cpu-passthrough.xml => qemuxml2argv-aarch64-acpi-uefi.xml} (63%)
copy tests/qemuxml2argvdata/{qemuxml2argv-aarch64-cpu-passthrough.args => qemuxml2argv-aarch64-noacpi-nouefi.args} (50%)
copy tests/qemuxml2argvdata/{qemuxml2argv-aarch64-cpu-passthrough.xml => qemuxml2argv-aarch64-noacpi-nouefi.xml} (57%)
create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-aarch64-noacpi-uefi.args
copy tests/qemuxml2argvdata/{qemuxml2argv-aarch64-cpu-passthrough.xml => qemuxml2argv-aarch64-noacpi-uefi.xml} (61%)
create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-q35-acpi-nouefi.args
create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-q35-acpi-nouefi.xml
create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-q35-acpi-uefi.args
create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-q35-acpi-uefi.xml
create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-q35-noacpi-nouefi.args
create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-q35-noacpi-nouefi.xml
create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-q35-noacpi-uefi.xml
--
2.7.4
7 years, 7 months
[libvirt] [python PATCH 0/2] Fix event comment and add handler for block threshold
by Peter Krempa
Peter Krempa (2):
event: fix comment for _dispatchDomainEventMetadataChangeCallback
event: Add handler for block threshold event
examples/event-test.py | 4 +++
libvirt-override-virConnect.py | 11 +++++++-
libvirt-override.c | 62 ++++++++++++++++++++++++++++++++++++++++++
3 files changed, 76 insertions(+), 1 deletion(-)
--
2.12.1
7 years, 7 months
[libvirt] [PATCH] qemu: domain: Properly lookup top of chain in qemuDomainGetStorageSourceByDevstr
by Peter Krempa
When idx is 0 virStorageFileChainLookup returns the base (bottom) of the
backing chain rather than the top. This is expected by the callers of
qemuDomainGetStorageSourceByDevstr.
Add a special case for idx == 0
---
With this you are not able to specify the top image of a disk when using
virDomainSetBlockThreshold in qemu.
src/qemu/qemu_domain.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c
index 458bb5f9a..589eb1889 100644
--- a/src/qemu/qemu_domain.c
+++ b/src/qemu/qemu_domain.c
@@ -8605,7 +8605,10 @@ qemuDomainGetStorageSourceByDevstr(const char *devstr,
goto cleanup;
}
- src = virStorageFileChainLookup(disk->src, NULL, NULL, idx, NULL);
+ if (idx == 0)
+ src = disk->src;
+ else
+ src = virStorageFileChainLookup(disk->src, NULL, NULL, idx, NULL);
cleanup:
VIR_FREE(target);
--
2.12.1
7 years, 7 months
[libvirt] encountered failed test cases with latest checkout of libvirt
by D L
Hi all,
This email content might be duplicated with other thread posted in other
places that I do not know yet where to find or search (please let me know
if it is true). I am working on a small bug of virsh domxml-to-native.
Before I made any changes to the code in order to fix the bug, I 'make
test'-ed and 'valgrind test'-ed the code, encountered four failures in
'make test' and 19 failures in 'make -C tests valgrind'. What I did today
was the following:
git checkout master
git pull
./autogen.sh --prefix=$(pwd)/build
make
make install
# So far so good, no errors ; however
make check VIR_TEST_EXPENSIVE=1
# generated the following test-suite.log
=========================================
libvirt 3.2.0: tests/test-suite.log
=========================================
# TOTAL: 115
# PASS: 111
# SKIP: 0
# XFAIL: 0
# FAIL: 4
# XPASS: 0
# ERROR: 0
.. contents:: :depth: 2
FAIL: virfirewalltest
=====================
TEST: virfirewalltest
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 40 FAIL
FAIL virfirewalltest (exit status: 1)
FAIL: networkxml2firewalltest
=============================
TEST: networkxml2firewalltest
0 FAIL
FAIL networkxml2firewalltest (exit status: 1)
FAIL: nwfilterebiptablestest
============================
TEST: nwfilterebiptablestest
0 FAIL
FAIL nwfilterebiptablestest (exit status: 1)
FAIL: nwfilterxml2firewalltest
==============================
TEST: nwfilterxml2firewalltest
0 FAIL
FAIL nwfilterxml2firewalltest (exit status: 1)
make syntax-check VIR_TEST_EXTENSIVE=1
# I did not paste the result here and I do not understand what it means.
# available upon request
Finally,
make -C tests valgrind
# generated file was attached.
It seems most of the valgrind failures were false positives, I can only
tell
by comparing the log file with the examples in the HACKING page. But I
do not have the knowledge to determine.
Could anyone tell me if I am missing something? Having those test failures
is a problem or not? Which ones can be safely ignored? Is there any easier
way to avoid the false positives? I am concerned because I also need to
run the test when I make changes to the code. On the other hand, I would
also like to learn the right way to do the testing or whatever it takes to
make
things right.
I am running linux using vmware Workstation Pro 12 on Windows 10.
Linux version 4.4.55-1-MANJARO (builduser@manjaro) (gcc version 6.3.1
20170306 (GCC) ) #1 SMP PREEMPT
Dan
7 years, 7 months
[libvirt] [PATCH resend V10 00/12] Support cache tune in libvirt
by Eli Qiao
Addressed comment from v10 -> v9
Marcelo:
* Improve default schemata calculate, support allocate from low schemata bits for other APP.
Addressed comment from v9 -> v8
Marcelo:
* New public API to query cache usage
Eli:
* Fix core dump while multiple tasks are added.
Addressed comment from v8 -> v7
Martin:
* Patch subject prefix.
* Move some of cpu related information to virhostcpu.c.
* Fix some memory leak in src/utils/resctrl.c
Martin & Marcelo:
* Don't remove directories which are not maintained by libvirt.
Addressed comment from v7 -> v6
Marcelo:
* Fix flock usage while VM initialization.
Addressed comment from v6 -> v5
Marcelo:
* Support other APPs to operate /sys/fs/resctrl at same time
Libvirt will scan /sys/fs/resctrl again before doing cache allocation.
patch 10 will address this.
Addressed comment from v4 -> v5:
Marcelo:
* Several typos
* Use flock instead of virFileLock
Addressed comment from v3 -> v4:
Daniel & Marcelo:
* Added concurrence support
Addressed comment from v2 -> v3:
Daniel:
* Fixed coding style, passed `make check` and `make syntax-check`
* Variables renaming and move from header file to c file.
* For locking/mutex support, no progress.
There are some discussion from mailing list, but I can not find a better
way to add locking support without performance impact.
I'll explain the process and please help to advice what shoud we do.
VM create:
1) Get the cache left value on each bank of the host. This should be
shared amount all VMs.
2) Calculate the schemata on the bank based on all created resctrl
domain's schemata
3) Calculate the default schemata by scaning all domain's schemata.
4) Flush default schemata to /sys/fs/resctrl/schemata
VM destroy:
1) Remove the resctrl domain of that VM
2) Recalculate default schemata
3) Flush default schemata to /sys/fs/resctrl/schemata
The key point is that all VMs shares /sys/fs/resctrl/schemata, and
when a VM create a resctrl domain, the schemata of that VM depends on
the default schemata and all other exsited schematas. So a global
mutex is reqired.
Before calculate a schemata or update default schemata, libvirt
should gain this global mutex.
I will try to think more about how to support this gracefully in next
patch set.
Marcelo:
* Added vcpu support for cachetune, this will allow user to define which
vcpu using which cache allocation bank.
<cachetune id='0' host_id=0 size='3072' unit='KiB' vcpus='0,1'/>
vcpus is a cpumap, the vcpu pids will be added to tasks file
* Added cdp compatible, user can specify l3 cache even host enable cdp.
See patch 8.
On a cdp enabled host, specify l3code/l3data by
<cachetune id='0' host_id='0' type='l3' size='3072' unit='KiB'/>
This will create a schemata like:
L3data:0=0xff00;...
L3code:0=0xff00;...
* Would you please help to test if the functions work.
Martin:
* Xml test case, I have no time to work on this yet, would you please
show me an example, would like to amend it later.
This series patches are for supportting CAT featues, which also
called cache tune in libvirt.
First to expose cache information which could be tuned in capabilites XML.
Then add new domain xml element support to add cacahe bank which will apply
on this libvirt domain.
This series patches add a util file `resctrl.c/h`, an interface to talk with
linux kernel's system fs.
There are still one TODO left:
2. Expose a new public interface to set cachetune lively.
Some discussion about this feature support can be found from:
https://www.redhat.com/archives/libvir-list/2017-January/msg00644.html
*** BLURB HERE ***
Eli Qiao (12):
Resctrl: Add some utils functions
Resctrl: expose cache information to capabilities
Resctrl: Add new xml element to support cache tune
Resctrl: Add private interfaces to operate cache bank
Qemu: Set cache tune while booting a new domain.
Resctrl: enable l3code/l3data
Resctrl: Make sure l3data/l3code are pairs
Resctrl: Compatible mode for cdp enabled
Resctrl: concurrence support
Resctrl: Scan resctrl before doing cache allocation
Resctrl: Add Public API for nodecachestats
Resctrl: Add nodecachestats
daemon/remote.c | 67 +++
docs/schemas/domaincommon.rng | 46 ++
include/libvirt/libvirt-host.h | 32 ++
include/libvirt/virterror.h | 1 +
po/POTFILES.in | 1 +
src/Makefile.am | 1 +
src/conf/capabilities.c | 56 ++
src/conf/capabilities.h | 23 +
src/conf/domain_conf.c | 182 +++++++
src/conf/domain_conf.h | 19 +
src/driver-hypervisor.h | 7 +
src/libvirt-host.c | 41 ++
src/libvirt_private.syms | 12 +
src/libvirt_public.syms | 1 +
src/nodeinfo.c | 64 +++
src/nodeinfo.h | 1 +
src/qemu/qemu_capabilities.c | 8 +
src/qemu/qemu_driver.c | 18 +
src/qemu/qemu_process.c | 54 ++
src/remote/remote_driver.c | 52 ++
src/remote/remote_protocol.x | 25 +-
src/remote_protocol-structs | 16 +
src/util/virerror.c | 1 +
src/util/virhostcpu.c | 186 ++++++-
src/util/virhostcpu.h | 6 +
src/util/virresctrl.c | 1098 ++++++++++++++++++++++++++++++++++++++++
src/util/virresctrl.h | 96 ++++
tools/virsh-host.c | 49 ++
28 files changed, 2145 insertions(+), 18 deletions(-)
create mode 100644 src/util/virresctrl.c
create mode 100644 src/util/virresctrl.h
--
1.9.1
7 years, 7 months
[libvirt] [PATCH] util: Add more virsysfs functions for handling resctrl sysfs
by Eli Qiao
Extended /sys/fs/resctrl sysfs handling.
Signed-off-by: Eli Qiao <liyong.qiao(a)intel.com>
---
src/libvirt_private.syms | 4 ++
src/util/virsysfs.c | 98 +++++++++++++++++++++++++++++++++++++++++++++++-
src/util/virsysfs.h | 15 ++++++++
3 files changed, 116 insertions(+), 1 deletion(-)
diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms
index b551cb8..e07ae79 100644
--- a/src/libvirt_private.syms
+++ b/src/libvirt_private.syms
@@ -2631,6 +2631,10 @@ virSysfsGetValueBitmap;
virSysfsGetValueInt;
virSysfsGetValueString;
virSysfsSetSystemPath;
+virSysfsGetResctrlString;
+virSysfsGetResctrlUint;
+virSysfsGetResctrlInfoString;
+virSysfsGetResCtrInfoUint;
# util/virsysinfo.h
diff --git a/src/util/virsysfs.c b/src/util/virsysfs.c
index 7a98b48..d1be289 100644
--- a/src/util/virsysfs.c
+++ b/src/util/virsysfs.c
@@ -36,8 +36,10 @@ VIR_LOG_INIT("util.sysfs");
#define VIR_SYSFS_VALUE_MAXLEN 8192
#define SYSFS_SYSTEM_PATH "/sys/devices/system"
+#define SYSFS_RESCTRL_PATH "/sys/fs/resctrl"
static const char *sysfs_system_path = SYSFS_SYSTEM_PATH;
+static const char *sysfs_resctrl_path = SYSFS_RESCTRL_PATH;
void virSysfsSetSystemPath(const char *path)
@@ -48,13 +50,26 @@ void virSysfsSetSystemPath(const char *path)
sysfs_system_path = SYSFS_SYSTEM_PATH;
}
-
const char *
virSysfsGetSystemPath(void)
{
return sysfs_system_path;
}
+void virSysfsSetResctrlPath(const char *path)
+{
+ if (path)
+ sysfs_resctrl_path = path;
+ else
+ sysfs_resctrl_path = SYSFS_RESCTRL_PATH;
+}
+
+const char *
+virSysfsGetResctrlPath(void)
+{
+ return sysfs_resctrl_path;
+}
+
int
virSysfsGetValueInt(const char *file,
int *value)
@@ -227,3 +242,84 @@ virSysfsGetNodeValueBitmap(unsigned int node,
VIR_FREE(path);
return ret;
}
+
+int
+virSysfsGetResctrlString(const char* file,
+ char **value)
+{
+ chat *path = NULL;
+ int ret = -1;
+ if (virAsprintf(&path, "%s/%s", sysfs_resctrl_path, file) < 0)
+ if (!virFileExists(path)) {
+ ret = -2;
+ goto cleanup;
+ }
+
+ if (virFileReadAll(path, VIR_SYSFS_VALUE_MAXLEN, value) < 0)
+ goto cleanup;
+
+ ret = 0;
+
+ cleanup:
+ VIR_FREE(path);
+ return ret;
+}
+
+int
+virSysfsGetResctrlUint(const char* file,
+ unsigned int **value)
+{
+ chat *path = NULL;
+ int ret = -1;
+ if (virAsprintf(&path, "%s/%s", sysfs_resctrl_path, file) < 0)
+ if (!virFileExists(path)) {
+ ret = -2;
+ goto cleanup;
+ }
+
+ ret = virFileReadValueUint(path, value);
+
+ cleanup:
+ VIR_FREE(path);
+ return ret;
+}
+
+int
+virSysfsGetResctrlInfoString(const char* file,
+ char **value)
+{
+ chat *path = NULL;
+ int ret = -1;
+ if (virAsprintf(&path, "%s/info/%s", sysfs_resctrl_path, file) < 0)
+ return -1;
+
+ if (!virFileExists(path)) {
+ ret = -2;
+ goto cleanup;
+ }
+
+ if (virFileReadAll(path, VIR_SYSFS_VALUE_MAXLEN, value) < 0)
+ goto cleanup;
+
+ ret = 0;
+
+ cleanup:
+ VIR_FREE(path);
+ return ret;
+}
+
+int
+virSysfsGetResCtrInfoUint(const char *file,
+ unsigned int *value)
+{
+ char *path = NULL;
+ int ret = -1;
+
+ if (virAsprintf(&path, "%s/info/%s", sysfs_resctrl_path, file) < 0)
+ return -1;
+
+ ret = virFileReadValueUint(path, value);
+
+ VIR_FREE(path);
+ return ret;
+}
diff --git a/src/util/virsysfs.h b/src/util/virsysfs.h
index cd871ff..81a27c2 100644
--- a/src/util/virsysfs.h
+++ b/src/util/virsysfs.h
@@ -67,4 +67,19 @@ virSysfsGetNodeValueBitmap(unsigned int cpu,
const char *file,
virBitmapPtr *value);
+int
+virSysfsGetResctrlString(const char* file,
+ char **value);
+
+int
+virSysfsGetResctrlUint(const char* file,
+ unsigned int **value);
+
+int
+virSysfsGetResctrlInfoString(const char* file,
+ char **value);
+
+int
+virSysfsGetResCtrInfoUint(const char *file,
+ unsigned int *value);
#endif /* __VIR_SYSFS_H__*/
--
1.9.1
7 years, 7 months
[libvirt] [PATCH] test: Add fake cpu id file
by Eli Qiao
Added fake cpu cache id and resctrl file
Signed-off-by: Eli Qiao <liyong.qiao(a)intel.com>
---
tests/vircaps2xmldata/linux-caches/cpu/cpu0/cache/index0/id | 1 +
tests/vircaps2xmldata/linux-caches/cpu/cpu0/cache/index1/id | 1 +
tests/vircaps2xmldata/linux-caches/cpu/cpu0/cache/index2/id | 1 +
tests/vircaps2xmldata/linux-caches/cpu/cpu0/cache/index3/id | 1 +
tests/vircaps2xmldata/linux-caches/cpu/cpu1/cache/index0/id | 1 +
tests/vircaps2xmldata/linux-caches/cpu/cpu1/cache/index1/id | 1 +
tests/vircaps2xmldata/linux-caches/cpu/cpu1/cache/index2/id | 1 +
tests/vircaps2xmldata/linux-caches/cpu/cpu1/cache/index3/id | 1 +
tests/vircaps2xmldata/linux-caches/cpu/cpu2/cache/index0/id | 1 +
tests/vircaps2xmldata/linux-caches/cpu/cpu2/cache/index1/id | 1 +
tests/vircaps2xmldata/linux-caches/cpu/cpu2/cache/index2/id | 1 +
tests/vircaps2xmldata/linux-caches/cpu/cpu2/cache/index3/id | 1 +
tests/vircaps2xmldata/linux-caches/cpu/cpu3/cache/index0/id | 1 +
tests/vircaps2xmldata/linux-caches/cpu/cpu3/cache/index1/id | 1 +
tests/vircaps2xmldata/linux-caches/cpu/cpu3/cache/index2/id | 1 +
tests/vircaps2xmldata/linux-caches/cpu/cpu3/cache/index3/id | 1 +
tests/vircaps2xmldata/linux-caches/cpu/cpu4/cache/index0/id | 1 +
tests/vircaps2xmldata/linux-caches/cpu/cpu4/cache/index1/id | 1 +
tests/vircaps2xmldata/linux-caches/cpu/cpu4/cache/index2/id | 1 +
tests/vircaps2xmldata/linux-caches/cpu/cpu4/cache/index3/id | 1 +
tests/vircaps2xmldata/linux-caches/cpu/cpu5/cache/index0/id | 1 +
tests/vircaps2xmldata/linux-caches/cpu/cpu5/cache/index1/id | 1 +
tests/vircaps2xmldata/linux-caches/cpu/cpu5/cache/index2/id | 1 +
tests/vircaps2xmldata/linux-caches/cpu/cpu5/cache/index3/id | 1 +
tests/vircaps2xmldata/linux-caches/cpu/cpu6/cache/index0/id | 1 +
tests/vircaps2xmldata/linux-caches/cpu/cpu6/cache/index1/id | 1 +
tests/vircaps2xmldata/linux-caches/cpu/cpu6/cache/index2/id | 1 +
tests/vircaps2xmldata/linux-caches/cpu/cpu6/cache/index3/id | 1 +
tests/vircaps2xmldata/linux-caches/cpu/cpu7/cache/index0/id | 1 +
tests/vircaps2xmldata/linux-caches/cpu/cpu7/cache/index1/id | 1 +
tests/vircaps2xmldata/linux-caches/cpu/cpu7/cache/index2/id | 1 +
tests/vircaps2xmldata/linux-caches/cpu/cpu7/cache/index3/id | 1 +
tests/vircaps2xmldata/linux-resctrl/cpus | 1 +
tests/vircaps2xmldata/linux-resctrl/info/L3/cbm_mask | 1 +
tests/vircaps2xmldata/linux-resctrl/info/L3/min_cbm_bits | 1 +
tests/vircaps2xmldata/linux-resctrl/info/L3/num_closids | 1 +
tests/vircaps2xmldata/linux-resctrl/schemata | 1 +
tests/vircaps2xmldata/linux-resctrl/tasks | 2 ++
38 files changed, 39 insertions(+)
create mode 100644 tests/vircaps2xmldata/linux-caches/cpu/cpu0/cache/index0/id
create mode 100644 tests/vircaps2xmldata/linux-caches/cpu/cpu0/cache/index1/id
create mode 100644 tests/vircaps2xmldata/linux-caches/cpu/cpu0/cache/index2/id
create mode 100644 tests/vircaps2xmldata/linux-caches/cpu/cpu0/cache/index3/id
create mode 100644 tests/vircaps2xmldata/linux-caches/cpu/cpu1/cache/index0/id
create mode 100644 tests/vircaps2xmldata/linux-caches/cpu/cpu1/cache/index1/id
create mode 100644 tests/vircaps2xmldata/linux-caches/cpu/cpu1/cache/index2/id
create mode 100644 tests/vircaps2xmldata/linux-caches/cpu/cpu1/cache/index3/id
create mode 100644 tests/vircaps2xmldata/linux-caches/cpu/cpu2/cache/index0/id
create mode 100644 tests/vircaps2xmldata/linux-caches/cpu/cpu2/cache/index1/id
create mode 100644 tests/vircaps2xmldata/linux-caches/cpu/cpu2/cache/index2/id
create mode 100644 tests/vircaps2xmldata/linux-caches/cpu/cpu2/cache/index3/id
create mode 100644 tests/vircaps2xmldata/linux-caches/cpu/cpu3/cache/index0/id
create mode 100644 tests/vircaps2xmldata/linux-caches/cpu/cpu3/cache/index1/id
create mode 100644 tests/vircaps2xmldata/linux-caches/cpu/cpu3/cache/index2/id
create mode 100644 tests/vircaps2xmldata/linux-caches/cpu/cpu3/cache/index3/id
create mode 100644 tests/vircaps2xmldata/linux-caches/cpu/cpu4/cache/index0/id
create mode 100644 tests/vircaps2xmldata/linux-caches/cpu/cpu4/cache/index1/id
create mode 100644 tests/vircaps2xmldata/linux-caches/cpu/cpu4/cache/index2/id
create mode 100644 tests/vircaps2xmldata/linux-caches/cpu/cpu4/cache/index3/id
create mode 100644 tests/vircaps2xmldata/linux-caches/cpu/cpu5/cache/index0/id
create mode 100644 tests/vircaps2xmldata/linux-caches/cpu/cpu5/cache/index1/id
create mode 100644 tests/vircaps2xmldata/linux-caches/cpu/cpu5/cache/index2/id
create mode 100644 tests/vircaps2xmldata/linux-caches/cpu/cpu5/cache/index3/id
create mode 100644 tests/vircaps2xmldata/linux-caches/cpu/cpu6/cache/index0/id
create mode 100644 tests/vircaps2xmldata/linux-caches/cpu/cpu6/cache/index1/id
create mode 100644 tests/vircaps2xmldata/linux-caches/cpu/cpu6/cache/index2/id
create mode 100644 tests/vircaps2xmldata/linux-caches/cpu/cpu6/cache/index3/id
create mode 100644 tests/vircaps2xmldata/linux-caches/cpu/cpu7/cache/index0/id
create mode 100644 tests/vircaps2xmldata/linux-caches/cpu/cpu7/cache/index1/id
create mode 100644 tests/vircaps2xmldata/linux-caches/cpu/cpu7/cache/index2/id
create mode 100644 tests/vircaps2xmldata/linux-caches/cpu/cpu7/cache/index3/id
create mode 100644 tests/vircaps2xmldata/linux-resctrl/cpus
create mode 100644 tests/vircaps2xmldata/linux-resctrl/info/L3/cbm_mask
create mode 100644 tests/vircaps2xmldata/linux-resctrl/info/L3/min_cbm_bits
create mode 100644 tests/vircaps2xmldata/linux-resctrl/info/L3/num_closids
create mode 100644 tests/vircaps2xmldata/linux-resctrl/schemata
create mode 100644 tests/vircaps2xmldata/linux-resctrl/tasks
diff --git a/tests/vircaps2xmldata/linux-caches/cpu/cpu0/cache/index0/id b/tests/vircaps2xmldata/linux-caches/cpu/cpu0/cache/index0/id
new file mode 100644
index 0000000..573541a
--- /dev/null
+++ b/tests/vircaps2xmldata/linux-caches/cpu/cpu0/cache/index0/id
@@ -0,0 +1 @@
+0
diff --git a/tests/vircaps2xmldata/linux-caches/cpu/cpu0/cache/index1/id b/tests/vircaps2xmldata/linux-caches/cpu/cpu0/cache/index1/id
new file mode 100644
index 0000000..573541a
--- /dev/null
+++ b/tests/vircaps2xmldata/linux-caches/cpu/cpu0/cache/index1/id
@@ -0,0 +1 @@
+0
diff --git a/tests/vircaps2xmldata/linux-caches/cpu/cpu0/cache/index2/id b/tests/vircaps2xmldata/linux-caches/cpu/cpu0/cache/index2/id
new file mode 100644
index 0000000..573541a
--- /dev/null
+++ b/tests/vircaps2xmldata/linux-caches/cpu/cpu0/cache/index2/id
@@ -0,0 +1 @@
+0
diff --git a/tests/vircaps2xmldata/linux-caches/cpu/cpu0/cache/index3/id b/tests/vircaps2xmldata/linux-caches/cpu/cpu0/cache/index3/id
new file mode 100644
index 0000000..573541a
--- /dev/null
+++ b/tests/vircaps2xmldata/linux-caches/cpu/cpu0/cache/index3/id
@@ -0,0 +1 @@
+0
diff --git a/tests/vircaps2xmldata/linux-caches/cpu/cpu1/cache/index0/id b/tests/vircaps2xmldata/linux-caches/cpu/cpu1/cache/index0/id
new file mode 100644
index 0000000..d00491f
--- /dev/null
+++ b/tests/vircaps2xmldata/linux-caches/cpu/cpu1/cache/index0/id
@@ -0,0 +1 @@
+1
diff --git a/tests/vircaps2xmldata/linux-caches/cpu/cpu1/cache/index1/id b/tests/vircaps2xmldata/linux-caches/cpu/cpu1/cache/index1/id
new file mode 100644
index 0000000..d00491f
--- /dev/null
+++ b/tests/vircaps2xmldata/linux-caches/cpu/cpu1/cache/index1/id
@@ -0,0 +1 @@
+1
diff --git a/tests/vircaps2xmldata/linux-caches/cpu/cpu1/cache/index2/id b/tests/vircaps2xmldata/linux-caches/cpu/cpu1/cache/index2/id
new file mode 100644
index 0000000..d00491f
--- /dev/null
+++ b/tests/vircaps2xmldata/linux-caches/cpu/cpu1/cache/index2/id
@@ -0,0 +1 @@
+1
diff --git a/tests/vircaps2xmldata/linux-caches/cpu/cpu1/cache/index3/id b/tests/vircaps2xmldata/linux-caches/cpu/cpu1/cache/index3/id
new file mode 100644
index 0000000..573541a
--- /dev/null
+++ b/tests/vircaps2xmldata/linux-caches/cpu/cpu1/cache/index3/id
@@ -0,0 +1 @@
+0
diff --git a/tests/vircaps2xmldata/linux-caches/cpu/cpu2/cache/index0/id b/tests/vircaps2xmldata/linux-caches/cpu/cpu2/cache/index0/id
new file mode 100644
index 0000000..0cfbf08
--- /dev/null
+++ b/tests/vircaps2xmldata/linux-caches/cpu/cpu2/cache/index0/id
@@ -0,0 +1 @@
+2
diff --git a/tests/vircaps2xmldata/linux-caches/cpu/cpu2/cache/index1/id b/tests/vircaps2xmldata/linux-caches/cpu/cpu2/cache/index1/id
new file mode 100644
index 0000000..0cfbf08
--- /dev/null
+++ b/tests/vircaps2xmldata/linux-caches/cpu/cpu2/cache/index1/id
@@ -0,0 +1 @@
+2
diff --git a/tests/vircaps2xmldata/linux-caches/cpu/cpu2/cache/index2/id b/tests/vircaps2xmldata/linux-caches/cpu/cpu2/cache/index2/id
new file mode 100644
index 0000000..0cfbf08
--- /dev/null
+++ b/tests/vircaps2xmldata/linux-caches/cpu/cpu2/cache/index2/id
@@ -0,0 +1 @@
+2
diff --git a/tests/vircaps2xmldata/linux-caches/cpu/cpu2/cache/index3/id b/tests/vircaps2xmldata/linux-caches/cpu/cpu2/cache/index3/id
new file mode 100644
index 0000000..573541a
--- /dev/null
+++ b/tests/vircaps2xmldata/linux-caches/cpu/cpu2/cache/index3/id
@@ -0,0 +1 @@
+0
diff --git a/tests/vircaps2xmldata/linux-caches/cpu/cpu3/cache/index0/id b/tests/vircaps2xmldata/linux-caches/cpu/cpu3/cache/index0/id
new file mode 100644
index 0000000..00750ed
--- /dev/null
+++ b/tests/vircaps2xmldata/linux-caches/cpu/cpu3/cache/index0/id
@@ -0,0 +1 @@
+3
diff --git a/tests/vircaps2xmldata/linux-caches/cpu/cpu3/cache/index1/id b/tests/vircaps2xmldata/linux-caches/cpu/cpu3/cache/index1/id
new file mode 100644
index 0000000..00750ed
--- /dev/null
+++ b/tests/vircaps2xmldata/linux-caches/cpu/cpu3/cache/index1/id
@@ -0,0 +1 @@
+3
diff --git a/tests/vircaps2xmldata/linux-caches/cpu/cpu3/cache/index2/id b/tests/vircaps2xmldata/linux-caches/cpu/cpu3/cache/index2/id
new file mode 100644
index 0000000..00750ed
--- /dev/null
+++ b/tests/vircaps2xmldata/linux-caches/cpu/cpu3/cache/index2/id
@@ -0,0 +1 @@
+3
diff --git a/tests/vircaps2xmldata/linux-caches/cpu/cpu3/cache/index3/id b/tests/vircaps2xmldata/linux-caches/cpu/cpu3/cache/index3/id
new file mode 100644
index 0000000..573541a
--- /dev/null
+++ b/tests/vircaps2xmldata/linux-caches/cpu/cpu3/cache/index3/id
@@ -0,0 +1 @@
+0
diff --git a/tests/vircaps2xmldata/linux-caches/cpu/cpu4/cache/index0/id b/tests/vircaps2xmldata/linux-caches/cpu/cpu4/cache/index0/id
new file mode 100644
index 0000000..573541a
--- /dev/null
+++ b/tests/vircaps2xmldata/linux-caches/cpu/cpu4/cache/index0/id
@@ -0,0 +1 @@
+0
diff --git a/tests/vircaps2xmldata/linux-caches/cpu/cpu4/cache/index1/id b/tests/vircaps2xmldata/linux-caches/cpu/cpu4/cache/index1/id
new file mode 100644
index 0000000..573541a
--- /dev/null
+++ b/tests/vircaps2xmldata/linux-caches/cpu/cpu4/cache/index1/id
@@ -0,0 +1 @@
+0
diff --git a/tests/vircaps2xmldata/linux-caches/cpu/cpu4/cache/index2/id b/tests/vircaps2xmldata/linux-caches/cpu/cpu4/cache/index2/id
new file mode 100644
index 0000000..573541a
--- /dev/null
+++ b/tests/vircaps2xmldata/linux-caches/cpu/cpu4/cache/index2/id
@@ -0,0 +1 @@
+0
diff --git a/tests/vircaps2xmldata/linux-caches/cpu/cpu4/cache/index3/id b/tests/vircaps2xmldata/linux-caches/cpu/cpu4/cache/index3/id
new file mode 100644
index 0000000..573541a
--- /dev/null
+++ b/tests/vircaps2xmldata/linux-caches/cpu/cpu4/cache/index3/id
@@ -0,0 +1 @@
+0
diff --git a/tests/vircaps2xmldata/linux-caches/cpu/cpu5/cache/index0/id b/tests/vircaps2xmldata/linux-caches/cpu/cpu5/cache/index0/id
new file mode 100644
index 0000000..d00491f
--- /dev/null
+++ b/tests/vircaps2xmldata/linux-caches/cpu/cpu5/cache/index0/id
@@ -0,0 +1 @@
+1
diff --git a/tests/vircaps2xmldata/linux-caches/cpu/cpu5/cache/index1/id b/tests/vircaps2xmldata/linux-caches/cpu/cpu5/cache/index1/id
new file mode 100644
index 0000000..d00491f
--- /dev/null
+++ b/tests/vircaps2xmldata/linux-caches/cpu/cpu5/cache/index1/id
@@ -0,0 +1 @@
+1
diff --git a/tests/vircaps2xmldata/linux-caches/cpu/cpu5/cache/index2/id b/tests/vircaps2xmldata/linux-caches/cpu/cpu5/cache/index2/id
new file mode 100644
index 0000000..d00491f
--- /dev/null
+++ b/tests/vircaps2xmldata/linux-caches/cpu/cpu5/cache/index2/id
@@ -0,0 +1 @@
+1
diff --git a/tests/vircaps2xmldata/linux-caches/cpu/cpu5/cache/index3/id b/tests/vircaps2xmldata/linux-caches/cpu/cpu5/cache/index3/id
new file mode 100644
index 0000000..573541a
--- /dev/null
+++ b/tests/vircaps2xmldata/linux-caches/cpu/cpu5/cache/index3/id
@@ -0,0 +1 @@
+0
diff --git a/tests/vircaps2xmldata/linux-caches/cpu/cpu6/cache/index0/id b/tests/vircaps2xmldata/linux-caches/cpu/cpu6/cache/index0/id
new file mode 100644
index 0000000..0cfbf08
--- /dev/null
+++ b/tests/vircaps2xmldata/linux-caches/cpu/cpu6/cache/index0/id
@@ -0,0 +1 @@
+2
diff --git a/tests/vircaps2xmldata/linux-caches/cpu/cpu6/cache/index1/id b/tests/vircaps2xmldata/linux-caches/cpu/cpu6/cache/index1/id
new file mode 100644
index 0000000..0cfbf08
--- /dev/null
+++ b/tests/vircaps2xmldata/linux-caches/cpu/cpu6/cache/index1/id
@@ -0,0 +1 @@
+2
diff --git a/tests/vircaps2xmldata/linux-caches/cpu/cpu6/cache/index2/id b/tests/vircaps2xmldata/linux-caches/cpu/cpu6/cache/index2/id
new file mode 100644
index 0000000..0cfbf08
--- /dev/null
+++ b/tests/vircaps2xmldata/linux-caches/cpu/cpu6/cache/index2/id
@@ -0,0 +1 @@
+2
diff --git a/tests/vircaps2xmldata/linux-caches/cpu/cpu6/cache/index3/id b/tests/vircaps2xmldata/linux-caches/cpu/cpu6/cache/index3/id
new file mode 100644
index 0000000..573541a
--- /dev/null
+++ b/tests/vircaps2xmldata/linux-caches/cpu/cpu6/cache/index3/id
@@ -0,0 +1 @@
+0
diff --git a/tests/vircaps2xmldata/linux-caches/cpu/cpu7/cache/index0/id b/tests/vircaps2xmldata/linux-caches/cpu/cpu7/cache/index0/id
new file mode 100644
index 0000000..00750ed
--- /dev/null
+++ b/tests/vircaps2xmldata/linux-caches/cpu/cpu7/cache/index0/id
@@ -0,0 +1 @@
+3
diff --git a/tests/vircaps2xmldata/linux-caches/cpu/cpu7/cache/index1/id b/tests/vircaps2xmldata/linux-caches/cpu/cpu7/cache/index1/id
new file mode 100644
index 0000000..00750ed
--- /dev/null
+++ b/tests/vircaps2xmldata/linux-caches/cpu/cpu7/cache/index1/id
@@ -0,0 +1 @@
+3
diff --git a/tests/vircaps2xmldata/linux-caches/cpu/cpu7/cache/index2/id b/tests/vircaps2xmldata/linux-caches/cpu/cpu7/cache/index2/id
new file mode 100644
index 0000000..00750ed
--- /dev/null
+++ b/tests/vircaps2xmldata/linux-caches/cpu/cpu7/cache/index2/id
@@ -0,0 +1 @@
+3
diff --git a/tests/vircaps2xmldata/linux-caches/cpu/cpu7/cache/index3/id b/tests/vircaps2xmldata/linux-caches/cpu/cpu7/cache/index3/id
new file mode 100644
index 0000000..573541a
--- /dev/null
+++ b/tests/vircaps2xmldata/linux-caches/cpu/cpu7/cache/index3/id
@@ -0,0 +1 @@
+0
diff --git a/tests/vircaps2xmldata/linux-resctrl/cpus b/tests/vircaps2xmldata/linux-resctrl/cpus
new file mode 100644
index 0000000..b3a79aa
--- /dev/null
+++ b/tests/vircaps2xmldata/linux-resctrl/cpus
@@ -0,0 +1 @@
+ffffff,ffffffff,ffffffff
diff --git a/tests/vircaps2xmldata/linux-resctrl/info/L3/cbm_mask b/tests/vircaps2xmldata/linux-resctrl/info/L3/cbm_mask
new file mode 100644
index 0000000..78031da
--- /dev/null
+++ b/tests/vircaps2xmldata/linux-resctrl/info/L3/cbm_mask
@@ -0,0 +1 @@
+fffff
diff --git a/tests/vircaps2xmldata/linux-resctrl/info/L3/min_cbm_bits b/tests/vircaps2xmldata/linux-resctrl/info/L3/min_cbm_bits
new file mode 100644
index 0000000..d00491f
--- /dev/null
+++ b/tests/vircaps2xmldata/linux-resctrl/info/L3/min_cbm_bits
@@ -0,0 +1 @@
+1
diff --git a/tests/vircaps2xmldata/linux-resctrl/info/L3/num_closids b/tests/vircaps2xmldata/linux-resctrl/info/L3/num_closids
new file mode 100644
index 0000000..b6a7d89
--- /dev/null
+++ b/tests/vircaps2xmldata/linux-resctrl/info/L3/num_closids
@@ -0,0 +1 @@
+16
diff --git a/tests/vircaps2xmldata/linux-resctrl/schemata b/tests/vircaps2xmldata/linux-resctrl/schemata
new file mode 100644
index 0000000..95bf1be
--- /dev/null
+++ b/tests/vircaps2xmldata/linux-resctrl/schemata
@@ -0,0 +1 @@
+L3:0=fffff;1=fffff
diff --git a/tests/vircaps2xmldata/linux-resctrl/tasks b/tests/vircaps2xmldata/linux-resctrl/tasks
new file mode 100644
index 0000000..1191247
--- /dev/null
+++ b/tests/vircaps2xmldata/linux-resctrl/tasks
@@ -0,0 +1,2 @@
+1
+2
--
1.9.1
7 years, 7 months