From 9de337131f3fee8496da14ded312835774772b98 Mon Sep 17 00:00:00 2001
From: CentOS Sources
Date: Oct 18 2021 10:43:41 +0000
Subject: import libvirt-7.6.0-2.module+el8.6.0+12861+13975d62
---
diff --git a/.gitignore b/.gitignore
index 7677d22..26f35cf 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1 +1 @@
-SOURCES/libvirt-6.0.0.tar.xz
+SOURCES/libvirt-7.6.0.tar.xz
diff --git a/.libvirt.metadata b/.libvirt.metadata
index 4a2f940..0b015ea 100644
--- a/.libvirt.metadata
+++ b/.libvirt.metadata
@@ -1 +1 @@
-9939a559e652d44b27e3404a26bcabe58988e4b4 SOURCES/libvirt-6.0.0.tar.xz
+d80c78e465ed9af0c745141e323fa312656e8ff6 SOURCES/libvirt-7.6.0.tar.xz
diff --git a/SOURCES/libvirt-Add-testdata-for-AMD-EPYC-7502.patch b/SOURCES/libvirt-Add-testdata-for-AMD-EPYC-7502.patch
deleted file mode 100644
index 1530f4e..0000000
--- a/SOURCES/libvirt-Add-testdata-for-AMD-EPYC-7502.patch
+++ /dev/null
@@ -1,2173 +0,0 @@
-From a2f2e97422de810517a77d8f098564e3b6c0f7c2 Mon Sep 17 00:00:00 2001
-Message-Id:
-From: Markus Schade
-Date: Thu, 8 Oct 2020 18:01:24 +0200
-Subject: [PATCH] Add testdata for AMD EPYC 7502
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Signed-off-by: Markus Schade
-Reviewed-by: Jiri Denemark
-(cherry picked from commit e06590f1708a599286f3ee3690b3dc50ee525d40)
-
-https://bugzilla.redhat.com/show_bug.cgi?id=1861506
-
-Signed-off-by: Jiri Denemark
-Message-Id: <2efe44ce5c929916c92656803d39635ae7c189b9.1602172344.git.jdenemar@redhat.com>
-Reviewed-by: Ján Tomko
----
- tests/cputest.c | 1 +
- ...86_64-cpuid-EPYC-7502-32-Core-disabled.xml | 9 +
- ...x86_64-cpuid-EPYC-7502-32-Core-enabled.xml | 11 +
- .../x86_64-cpuid-EPYC-7502-32-Core-guest.xml | 42 +
- .../x86_64-cpuid-EPYC-7502-32-Core-host.xml | 43 +
- .../x86_64-cpuid-EPYC-7502-32-Core-json.xml | 31 +
- .../x86_64-cpuid-EPYC-7502-32-Core.json | 1866 +++++++++++++++++
- .../x86_64-cpuid-EPYC-7502-32-Core.sig | 4 +
- .../x86_64-cpuid-EPYC-7502-32-Core.xml | 66 +
- 9 files changed, 2073 insertions(+)
- create mode 100644 tests/cputestdata/x86_64-cpuid-EPYC-7502-32-Core-disabled.xml
- create mode 100644 tests/cputestdata/x86_64-cpuid-EPYC-7502-32-Core-enabled.xml
- create mode 100644 tests/cputestdata/x86_64-cpuid-EPYC-7502-32-Core-guest.xml
- create mode 100644 tests/cputestdata/x86_64-cpuid-EPYC-7502-32-Core-host.xml
- create mode 100644 tests/cputestdata/x86_64-cpuid-EPYC-7502-32-Core-json.xml
- create mode 100644 tests/cputestdata/x86_64-cpuid-EPYC-7502-32-Core.json
- create mode 100644 tests/cputestdata/x86_64-cpuid-EPYC-7502-32-Core.sig
- create mode 100644 tests/cputestdata/x86_64-cpuid-EPYC-7502-32-Core.xml
-
-diff --git a/tests/cputest.c b/tests/cputest.c
-index 68e8eb0290..388174eba7 100644
---- a/tests/cputest.c
-+++ b/tests/cputest.c
-@@ -1242,6 +1242,7 @@ mymain(void)
- DO_TEST_CPUID(VIR_ARCH_X86_64, "Hygon-C86-7185-32-core", JSON_HOST);
- DO_TEST_CPUID(VIR_ARCH_X86_64, "EPYC-7601-32-Core", JSON_HOST);
- DO_TEST_CPUID(VIR_ARCH_X86_64, "EPYC-7601-32-Core-ibpb", JSON_MODELS_REQUIRED);
-+ DO_TEST_CPUID(VIR_ARCH_X86_64, "EPYC-7502-32-Core", JSON_MODELS);
- DO_TEST_CPUID(VIR_ARCH_X86_64, "FX-8150", JSON_NONE);
- DO_TEST_CPUID(VIR_ARCH_X86_64, "Opteron-1352", JSON_NONE);
- DO_TEST_CPUID(VIR_ARCH_X86_64, "Opteron-2350", JSON_HOST);
-diff --git a/tests/cputestdata/x86_64-cpuid-EPYC-7502-32-Core-disabled.xml b/tests/cputestdata/x86_64-cpuid-EPYC-7502-32-Core-disabled.xml
-new file mode 100644
-index 0000000000..ca71b9efb5
---- /dev/null
-+++ b/tests/cputestdata/x86_64-cpuid-EPYC-7502-32-Core-disabled.xml
-@@ -0,0 +1,9 @@
-+
-+
-+
-+
-+
-+
-+
-+
-+
-diff --git a/tests/cputestdata/x86_64-cpuid-EPYC-7502-32-Core-enabled.xml b/tests/cputestdata/x86_64-cpuid-EPYC-7502-32-Core-enabled.xml
-new file mode 100644
-index 0000000000..09a9952c27
---- /dev/null
-+++ b/tests/cputestdata/x86_64-cpuid-EPYC-7502-32-Core-enabled.xml
-@@ -0,0 +1,11 @@
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-diff --git a/tests/cputestdata/x86_64-cpuid-EPYC-7502-32-Core-guest.xml b/tests/cputestdata/x86_64-cpuid-EPYC-7502-32-Core-guest.xml
-new file mode 100644
-index 0000000000..1320f65a58
---- /dev/null
-+++ b/tests/cputestdata/x86_64-cpuid-EPYC-7502-32-Core-guest.xml
-@@ -0,0 +1,42 @@
-+
-+ EPYC-IBPB
-+ AMD
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-diff --git a/tests/cputestdata/x86_64-cpuid-EPYC-7502-32-Core-host.xml b/tests/cputestdata/x86_64-cpuid-EPYC-7502-32-Core-host.xml
-new file mode 100644
-index 0000000000..37905ec812
---- /dev/null
-+++ b/tests/cputestdata/x86_64-cpuid-EPYC-7502-32-Core-host.xml
-@@ -0,0 +1,43 @@
-+
-+ x86_64
-+ EPYC-IBPB
-+ AMD
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-diff --git a/tests/cputestdata/x86_64-cpuid-EPYC-7502-32-Core-json.xml b/tests/cputestdata/x86_64-cpuid-EPYC-7502-32-Core-json.xml
-new file mode 100644
-index 0000000000..225cf63852
---- /dev/null
-+++ b/tests/cputestdata/x86_64-cpuid-EPYC-7502-32-Core-json.xml
-@@ -0,0 +1,31 @@
-+
-+ EPYC-IBPB
-+ AMD
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-diff --git a/tests/cputestdata/x86_64-cpuid-EPYC-7502-32-Core.json b/tests/cputestdata/x86_64-cpuid-EPYC-7502-32-Core.json
-new file mode 100644
-index 0000000000..06c265d829
---- /dev/null
-+++ b/tests/cputestdata/x86_64-cpuid-EPYC-7502-32-Core.json
-@@ -0,0 +1,1866 @@
-+{
-+ "return": {
-+ "model": {
-+ "name": "base",
-+ "props": {
-+ "vmx-entry-load-rtit-ctl": false,
-+ "phys-bits": 0,
-+ "core-id": -1,
-+ "xlevel": 2147483679,
-+ "cmov": true,
-+ "ia64": false,
-+ "ssb-no": false,
-+ "aes": true,
-+ "vmx-apicv-xapic": false,
-+ "mmx": true,
-+ "arat": true,
-+ "rdpid": true,
-+ "vmx-page-walk-5": false,
-+ "vmx-page-walk-4": false,
-+ "vmx-desc-exit": false,
-+ "gfni": false,
-+ "ibrs-all": false,
-+ "pause-filter": false,
-+ "xsavec": true,
-+ "intel-pt": false,
-+ "vmx-cr8-store-exit": false,
-+ "hv-frequencies": false,
-+ "tsc-frequency": 0,
-+ "vmx-rdseed-exit": false,
-+ "xd": true,
-+ "x-intel-pt-auto-level": true,
-+ "hv-vendor-id": "",
-+ "vmx-eptp-switching": false,
-+ "kvm_asyncpf": true,
-+ "kvm-asyncpf": true,
-+ "perfctr_core": true,
-+ "perfctr-core": true,
-+ "mpx": false,
-+ "avx512cd": false,
-+ "pbe": false,
-+ "decodeassists": false,
-+ "vmx-exit-clear-bndcfgs": false,
-+ "vmx-exit-load-efer": false,
-+ "sse4_1": true,
-+ "sse4-1": true,
-+ "sse4.1": true,
-+ "family": 23,
-+ "legacy-cache": true,
-+ "vmx-vmwrite-vmexit-fields": false,
-+ "vmx-vnmi": false,
-+ "vmx-true-ctls": false,
-+ "host-phys-bits-limit": 0,
-+ "vmx-ept-execonly": false,
-+ "vmx-exit-save-efer": false,
-+ "vmx-invept-all-context": false,
-+ "vmware-cpuid-freq": true,
-+ "wbnoinvd": true,
-+ "avx512f": false,
-+ "xcrypt": false,
-+ "hv-runtime": false,
-+ "hv-stimer-direct": false,
-+ "mce": true,
-+ "mca": true,
-+ "msr": true,
-+ "thread-id": -1,
-+ "vmx-exit-load-pat": false,
-+ "vmx-intr-exit": false,
-+ "min-level": 16,
-+ "vmx-flexpriority": false,
-+ "xgetbv1": true,
-+ "cid": false,
-+ "hv-relaxed": false,
-+ "avx512-bf16": false,
-+ "ds": false,
-+ "hv-crash": false,
-+ "fxsr": true,
-+ "vmx-cr8-load-exit": false,
-+ "xsaveopt": true,
-+ "vmx-apicv-vid": false,
-+ "vmx-exit-save-pat": false,
-+ "tsx-ctrl": false,
-+ "xtpr": false,
-+ "vmx-ple": false,
-+ "hv-evmcs": false,
-+ "avx512-vpopcntdq": false,
-+ "phe": false,
-+ "avx512vl": false,
-+ "extapic": false,
-+ "vmx-vmfunc": false,
-+ "3dnowprefetch": true,
-+ "vmx-activity-shutdown": false,
-+ "avx512vbmi2": false,
-+ "cr8legacy": true,
-+ "vmx-encls-exit": false,
-+ "stibp": true,
-+ "vmx-msr-bitmap": false,
-+ "cpuid-0xb": true,
-+ "xcrypt-en": false,
-+ "vmx-mwait-exit": false,
-+ "kvm_pv_eoi": true,
-+ "vmx-pml": false,
-+ "apic-id": 4294967295,
-+ "vmx-nmi-exit": false,
-+ "vmx-invept-single-context-noglobals": false,
-+ "pn": false,
-+ "rsba": false,
-+ "dca": false,
-+ "vmx-unrestricted-guest": false,
-+ "vendor": "AuthenticAMD",
-+ "hv-ipi": false,
-+ "vmx-cr3-store-noexit": false,
-+ "pku": false,
-+ "smx": false,
-+ "cmp-legacy": true,
-+ "cmp_legacy": true,
-+ "node-id": -1,
-+ "avx512-4fmaps": false,
-+ "vmcb_clean": false,
-+ "vmcb-clean": false,
-+ "hle": false,
-+ "amd-no-ssb": false,
-+ "3dnowext": false,
-+ "npt": true,
-+ "rdctl-no": true,
-+ "vmx-invvpid": false,
-+ "memory": "/machine/unattached/system[0]",
-+ "clwb": true,
-+ "lbrv": false,
-+ "adx": true,
-+ "ss": false,
-+ "pni": true,
-+ "svm_lock": false,
-+ "svm-lock": false,
-+ "pfthreshold": false,
-+ "smap": true,
-+ "smep": true,
-+ "vmx-invpcid-exit": false,
-+ "x2apic": true,
-+ "avx512vnni": false,
-+ "avx512vbmi": false,
-+ "vmx-apicv-x2apic": false,
-+ "hv-stimer": false,
-+ "kvm-pv-sched-yield": true,
-+ "vmx-invlpg-exit": false,
-+ "x-hv-synic-kvm-only": false,
-+ "vmx-invvpid-all-context": false,
-+ "i64": true,
-+ "vmx-activity-hlt": false,
-+ "flushbyasid": false,
-+ "f16c": true,
-+ "vmx-exit-ack-intr": false,
-+ "ace2-en": false,
-+ "pae": true,
-+ "pat": true,
-+ "sse": true,
-+ "die-id": -1,
-+ "vmx-tsc-offset": false,
-+ "phe-en": false,
-+ "kvm_nopiodelay": true,
-+ "kvm-nopiodelay": true,
-+ "tm": false,
-+ "kvmclock-stable-bit": true,
-+ "vmx-rdtsc-exit": false,
-+ "hypervisor": true,
-+ "vmx-rdtscp-exit": false,
-+ "socket-id": -1,
-+ "mds-no": true,
-+ "pcommit": false,
-+ "vmx-vpid": false,
-+ "syscall": true,
-+ "level": 16,
-+ "avx512dq": false,
-+ "x-migrate-smi-count": true,
-+ "svm": true,
-+ "full-cpuid-auto-level": true,
-+ "hv-reset": false,
-+ "invtsc": false,
-+ "vmx-monitor-exit": false,
-+ "sse3": true,
-+ "sse2": true,
-+ "ssbd": true,
-+ "vmx-wbinvd-exit": false,
-+ "est": false,
-+ "kvm-poll-control": true,
-+ "kvm_poll_control": true,
-+ "avx512ifma": false,
-+ "tm2": false,
-+ "kvm-pv-eoi": true,
-+ "kvm-pv-ipi": true,
-+ "cx8": true,
-+ "vmx-invvpid-single-addr": false,
-+ "waitpkg": false,
-+ "cldemote": false,
-+ "vmx-ept": false,
-+ "hv-reenlightenment": false,
-+ "kvm_mmu": false,
-+ "kvm-mmu": false,
-+ "sse4-2": true,
-+ "sse4.2": true,
-+ "sse4_2": true,
-+ "pge": true,
-+ "fill-mtrr-mask": true,
-+ "avx512bitalg": false,
-+ "vmx-entry-load-bndcfgs": false,
-+ "nodeid_msr": false,
-+ "pdcm": false,
-+ "vmx-exit-clear-rtit-ctl": false,
-+ "model": 49,
-+ "movbe": true,
-+ "nrip_save": true,
-+ "nrip-save": true,
-+ "vmx-pause-exit": false,
-+ "ssse3": true,
-+ "kvm_pv_unhalt": true,
-+ "sse4a": true,
-+ "invpcid": false,
-+ "pdpe1gb": true,
-+ "tsc-deadline": true,
-+ "skip-l1dfl-vmentry": true,
-+ "vmx-exit-load-perf-global-ctrl": false,
-+ "fma": true,
-+ "cx16": true,
-+ "de": true,
-+ "enforce": false,
-+ "stepping": 0,
-+ "xsave": true,
-+ "clflush": true,
-+ "skinit": false,
-+ "tsc": true,
-+ "tce": false,
-+ "fpu": true,
-+ "ds-cpl": false,
-+ "ds_cpl": false,
-+ "ibs": false,
-+ "fma4": false,
-+ "host-phys-bits": false,
-+ "vmx-exit-nosave-debugctl": false,
-+ "vmx-invept": false,
-+ "la57": false,
-+ "osvw": true,
-+ "check": true,
-+ "hv-spinlocks": 4294967295,
-+ "vmx-eptad": false,
-+ "pmu": false,
-+ "vmx-entry-noload-debugctl": false,
-+ "pmm": false,
-+ "apic": true,
-+ "spec-ctrl": true,
-+ "vmx-posted-intr": false,
-+ "vmx-apicv-register": false,
-+ "min-xlevel2": 0,
-+ "tsc-adjust": true,
-+ "tsc_adjust": true,
-+ "kvm-steal-time": true,
-+ "kvm_steal_time": true,
-+ "kvmclock": true,
-+ "vmx-zero-len-inject": false,
-+ "l3-cache": true,
-+ "pschange-mc-no": true,
-+ "vmx-rdrand-exit": false,
-+ "lwp": false,
-+ "hv-passthrough": false,
-+ "amd-ssbd": true,
-+ "ibpb": true,
-+ "xop": false,
-+ "core-capability": false,
-+ "avx": true,
-+ "vmx-invept-single-context": false,
-+ "movdiri": false,
-+ "avx512bw": false,
-+ "acpi": false,
-+ "ace2": false,
-+ "fsgsbase": true,
-+ "hv-vapic": false,
-+ "vmx-ept-1gb": false,
-+ "vmx-ept-2mb": false,
-+ "ht": false,
-+ "vmx-io-exit": false,
-+ "nx": true,
-+ "pclmulqdq": true,
-+ "mmxext": true,
-+ "popcnt": true,
-+ "vaes": false,
-+ "xsaves": true,
-+ "movdir64b": false,
-+ "vmx-shadow-vmcs": false,
-+ "tcg-cpuid": true,
-+ "lm": true,
-+ "vmx-exit-save-preemption-timer": false,
-+ "vmx-entry-load-pat": false,
-+ "vmx-entry-load-perf-global-ctrl": false,
-+ "vmx-io-bitmap": false,
-+ "vmx-store-lma": false,
-+ "umip": true,
-+ "vmx-movdr-exit": false,
-+ "avx2": true,
-+ "pse": true,
-+ "pclmuldq": true,
-+ "sep": true,
-+ "vmx-cr3-load-noexit": false,
-+ "virt-ssbd": true,
-+ "x-hv-max-vps": -1,
-+ "nodeid-msr": false,
-+ "md-clear": false,
-+ "split-lock-detect": false,
-+ "kvm": true,
-+ "misalignsse": true,
-+ "min-xlevel": 2147483679,
-+ "realized": false,
-+ "kvm-pv-unhalt": true,
-+ "bmi2": true,
-+ "bmi1": true,
-+ "tsc_scale": false,
-+ "tsc-scale": false,
-+ "topoext": false,
-+ "amd-stibp": true,
-+ "hv-vpindex": false,
-+ "hv-no-nonarch-coresharing": "off",
-+ "vmx-preemption-timer": false,
-+ "xlevel2": 0,
-+ "clflushopt": true,
-+ "vmx-vnmi-pending": false,
-+ "kvm-no-smi-migration": false,
-+ "monitor": false,
-+ "vmx-vintr-pending": false,
-+ "avx512er": false,
-+ "pmm-en": false,
-+ "taa-no": false,
-+ "pcid": false,
-+ "vmx-secondary-ctls": false,
-+ "arch-capabilities": true,
-+ "vmx-xsaves": false,
-+ "clzero": true,
-+ "3dnow": false,
-+ "erms": false,
-+ "x-force-features": false,
-+ "vmx-entry-ia32e-mode": false,
-+ "lahf-lm": true,
-+ "lahf_lm": true,
-+ "vmx-ins-outs": false,
-+ "vpclmulqdq": false,
-+ "xstore": false,
-+ "fxsr-opt": true,
-+ "fxsr_opt": true,
-+ "hv-synic": false,
-+ "rtm": false,
-+ "kvm-hint-dedicated": false,
-+ "lmce": false,
-+ "hv-time": false,
-+ "perfctr_nb": false,
-+ "perfctr-nb": false,
-+ "hv-tlbflush": false,
-+ "ffxsr": true,
-+ "rdrand": true,
-+ "rdseed": true,
-+ "avx512-4vnniw": false,
-+ "vme": true,
-+ "vmx": false,
-+ "dtes64": false,
-+ "mtrr": true,
-+ "rdtscp": true,
-+ "xsaveerptr": true,
-+ "pse36": true,
-+ "kvm-pv-tlb-flush": true,
-+ "vmx-activity-wait-sipi": false,
-+ "tbm": false,
-+ "vmx-rdpmc-exit": false,
-+ "wdt": false,
-+ "vmx-entry-load-efer": false,
-+ "level-func7": 0,
-+ "vmx-mtf": false,
-+ "pause_filter": false,
-+ "model-id": "AMD EPYC 7502 32-Core Processor ",
-+ "sha-ni": true,
-+ "abm": true,
-+ "vmx-ept-advanced-exitinfo": false,
-+ "avx512pf": false,
-+ "vmx-hlt-exit": false,
-+ "xstore-en": false
-+ }
-+ }
-+ },
-+ "id": "model-expansion"
-+}
-+
-+{
-+ "return": [
-+ {
-+ "name": "max",
-+ "typename": "max-x86_64-cpu",
-+ "unavailable-features": [],
-+ "static": false,
-+ "migration-safe": false
-+ },
-+ {
-+ "name": "host",
-+ "typename": "host-x86_64-cpu",
-+ "unavailable-features": [],
-+ "static": false,
-+ "migration-safe": false
-+ },
-+ {
-+ "name": "base",
-+ "typename": "base-x86_64-cpu",
-+ "unavailable-features": [],
-+ "static": true,
-+ "migration-safe": true
-+ },
-+ {
-+ "name": "qemu64-v1",
-+ "typename": "qemu64-v1-x86_64-cpu",
-+ "unavailable-features": [],
-+ "static": false,
-+ "migration-safe": true
-+ },
-+ {
-+ "name": "qemu64",
-+ "typename": "qemu64-x86_64-cpu",
-+ "unavailable-features": [],
-+ "alias-of": "qemu64-v1",
-+ "static": false,
-+ "migration-safe": true
-+ },
-+ {
-+ "name": "qemu32-v1",
-+ "typename": "qemu32-v1-x86_64-cpu",
-+ "unavailable-features": [],
-+ "static": false,
-+ "migration-safe": true
-+ },
-+ {
-+ "name": "qemu32",
-+ "typename": "qemu32-x86_64-cpu",
-+ "unavailable-features": [],
-+ "alias-of": "qemu32-v1",
-+ "static": false,
-+ "migration-safe": true
-+ },
-+ {
-+ "name": "phenom-v1",
-+ "typename": "phenom-v1-x86_64-cpu",
-+ "unavailable-features": [
-+ "3dnowext",
-+ "3dnow"
-+ ],
-+ "static": false,
-+ "migration-safe": true
-+ },
-+ {
-+ "name": "phenom",
-+ "typename": "phenom-x86_64-cpu",
-+ "unavailable-features": [
-+ "3dnowext",
-+ "3dnow"
-+ ],
-+ "alias-of": "phenom-v1",
-+ "static": false,
-+ "migration-safe": true
-+ },
-+ {
-+ "name": "pentium3-v1",
-+ "typename": "pentium3-v1-x86_64-cpu",
-+ "unavailable-features": [],
-+ "static": false,
-+ "migration-safe": true
-+ },
-+ {
-+ "name": "pentium3",
-+ "typename": "pentium3-x86_64-cpu",
-+ "unavailable-features": [],
-+ "alias-of": "pentium3-v1",
-+ "static": false,
-+ "migration-safe": true
-+ },
-+ {
-+ "name": "pentium2-v1",
-+ "typename": "pentium2-v1-x86_64-cpu",
-+ "unavailable-features": [],
-+ "static": false,
-+ "migration-safe": true
-+ },
-+ {
-+ "name": "pentium2",
-+ "typename": "pentium2-x86_64-cpu",
-+ "unavailable-features": [],
-+ "alias-of": "pentium2-v1",
-+ "static": false,
-+ "migration-safe": true
-+ },
-+ {
-+ "name": "pentium-v1",
-+ "typename": "pentium-v1-x86_64-cpu",
-+ "unavailable-features": [],
-+ "static": false,
-+ "migration-safe": true
-+ },
-+ {
-+ "name": "pentium",
-+ "typename": "pentium-x86_64-cpu",
-+ "unavailable-features": [],
-+ "alias-of": "pentium-v1",
-+ "static": false,
-+ "migration-safe": true
-+ },
-+ {
-+ "name": "n270-v1",
-+ "typename": "n270-v1-x86_64-cpu",
-+ "unavailable-features": [
-+ "ss"
-+ ],
-+ "static": false,
-+ "migration-safe": true
-+ },
-+ {
-+ "name": "n270",
-+ "typename": "n270-x86_64-cpu",
-+ "unavailable-features": [
-+ "ss"
-+ ],
-+ "alias-of": "n270-v1",
-+ "static": false,
-+ "migration-safe": true
-+ },
-+ {
-+ "name": "kvm64-v1",
-+ "typename": "kvm64-v1-x86_64-cpu",
-+ "unavailable-features": [],
-+ "static": false,
-+ "migration-safe": true
-+ },
-+ {
-+ "name": "kvm64",
-+ "typename": "kvm64-x86_64-cpu",
-+ "unavailable-features": [],
-+ "alias-of": "kvm64-v1",
-+ "static": false,
-+ "migration-safe": true
-+ },
-+ {
-+ "name": "kvm32-v1",
-+ "typename": "kvm32-v1-x86_64-cpu",
-+ "unavailable-features": [],
-+ "static": false,
-+ "migration-safe": true
-+ },
-+ {
-+ "name": "kvm32",
-+ "typename": "kvm32-x86_64-cpu",
-+ "unavailable-features": [],
-+ "alias-of": "kvm32-v1",
-+ "static": false,
-+ "migration-safe": true
-+ },
-+ {
-+ "name": "coreduo-v1",
-+ "typename": "coreduo-v1-x86_64-cpu",
-+ "unavailable-features": [
-+ "ss"
-+ ],
-+ "static": false,
-+ "migration-safe": true
-+ },
-+ {
-+ "name": "coreduo",
-+ "typename": "coreduo-x86_64-cpu",
-+ "unavailable-features": [
-+ "ss"
-+ ],
-+ "alias-of": "coreduo-v1",
-+ "static": false,
-+ "migration-safe": true
-+ },
-+ {
-+ "name": "core2duo-v1",
-+ "typename": "core2duo-v1-x86_64-cpu",
-+ "unavailable-features": [
-+ "ss"
-+ ],
-+ "static": false,
-+ "migration-safe": true
-+ },
-+ {
-+ "name": "core2duo",
-+ "typename": "core2duo-x86_64-cpu",
-+ "unavailable-features": [
-+ "ss"
-+ ],
-+ "alias-of": "core2duo-v1",
-+ "static": false,
-+ "migration-safe": true
-+ },
-+ {
-+ "name": "athlon-v1",
-+ "typename": "athlon-v1-x86_64-cpu",
-+ "unavailable-features": [
-+ "3dnowext",
-+ "3dnow"
-+ ],
-+ "static": false,
-+ "migration-safe": true
-+ },
-+ {
-+ "name": "athlon",
-+ "typename": "athlon-x86_64-cpu",
-+ "unavailable-features": [
-+ "3dnowext",
-+ "3dnow"
-+ ],
-+ "alias-of": "athlon-v1",
-+ "static": false,
-+ "migration-safe": true
-+ },
-+ {
-+ "name": "Westmere-v2",
-+ "typename": "Westmere-v2-x86_64-cpu",
-+ "unavailable-features": [],
-+ "static": false,
-+ "migration-safe": true
-+ },
-+ {
-+ "name": "Westmere-v1",
-+ "typename": "Westmere-v1-x86_64-cpu",
-+ "unavailable-features": [],
-+ "static": false,
-+ "migration-safe": true
-+ },
-+ {
-+ "name": "Westmere-IBRS",
-+ "typename": "Westmere-IBRS-x86_64-cpu",
-+ "unavailable-features": [],
-+ "alias-of": "Westmere-v2",
-+ "static": false,
-+ "migration-safe": true
-+ },
-+ {
-+ "name": "Westmere",
-+ "typename": "Westmere-x86_64-cpu",
-+ "unavailable-features": [],
-+ "alias-of": "Westmere-v1",
-+ "static": false,
-+ "migration-safe": true
-+ },
-+ {
-+ "name": "Snowridge-v2",
-+ "typename": "Snowridge-v2-x86_64-cpu",
-+ "unavailable-features": [
-+ "erms",
-+ "gfni",
-+ "cldemote",
-+ "movdiri",
-+ "movdir64b",
-+ "core-capability",
-+ "split-lock-detect"
-+ ],
-+ "static": false,
-+ "migration-safe": true
-+ },
-+ {
-+ "name": "Snowridge-v1",
-+ "typename": "Snowridge-v1-x86_64-cpu",
-+ "unavailable-features": [
-+ "erms",
-+ "mpx",
-+ "gfni",
-+ "cldemote",
-+ "movdiri",
-+ "movdir64b",
-+ "core-capability",
-+ "mpx",
-+ "mpx",
-+ "split-lock-detect"
-+ ],
-+ "static": false,
-+ "migration-safe": true
-+ },
-+ {
-+ "name": "Snowridge",
-+ "typename": "Snowridge-x86_64-cpu",
-+ "unavailable-features": [
-+ "erms",
-+ "mpx",
-+ "gfni",
-+ "cldemote",
-+ "movdiri",
-+ "movdir64b",
-+ "core-capability",
-+ "mpx",
-+ "mpx",
-+ "split-lock-detect"
-+ ],
-+ "alias-of": "Snowridge-v1",
-+ "static": false,
-+ "migration-safe": true
-+ },
-+ {
-+ "name": "Skylake-Server-v3",
-+ "typename": "Skylake-Server-v3-x86_64-cpu",
-+ "unavailable-features": [
-+ "pcid",
-+ "erms",
-+ "invpcid",
-+ "avx512f",
-+ "avx512dq",
-+ "avx512cd",
-+ "avx512bw",
-+ "avx512vl",
-+ "pku",
-+ "avx512f",
-+ "avx512f",
-+ "avx512f",
-+ "pku"
-+ ],
-+ "static": false,
-+ "migration-safe": true
-+ },
-+ {
-+ "name": "Skylake-Server-v2",
-+ "typename": "Skylake-Server-v2-x86_64-cpu",
-+ "unavailable-features": [
-+ "pcid",
-+ "hle",
-+ "erms",
-+ "invpcid",
-+ "rtm",
-+ "avx512f",
-+ "avx512dq",
-+ "avx512cd",
-+ "avx512bw",
-+ "avx512vl",
-+ "pku",
-+ "avx512f",
-+ "avx512f",
-+ "avx512f",
-+ "pku"
-+ ],
-+ "static": false,
-+ "migration-safe": true
-+ },
-+ {
-+ "name": "Skylake-Server-v1",
-+ "typename": "Skylake-Server-v1-x86_64-cpu",
-+ "unavailable-features": [
-+ "pcid",
-+ "hle",
-+ "erms",
-+ "invpcid",
-+ "rtm",
-+ "avx512f",
-+ "avx512dq",
-+ "avx512cd",
-+ "avx512bw",
-+ "avx512vl",
-+ "pku",
-+ "avx512f",
-+ "avx512f",
-+ "avx512f",
-+ "pku"
-+ ],
-+ "static": false,
-+ "migration-safe": true
-+ },
-+ {
-+ "name": "Skylake-Server-noTSX-IBRS",
-+ "typename": "Skylake-Server-noTSX-IBRS-x86_64-cpu",
-+ "unavailable-features": [
-+ "pcid",
-+ "erms",
-+ "invpcid",
-+ "avx512f",
-+ "avx512dq",
-+ "avx512cd",
-+ "avx512bw",
-+ "avx512vl",
-+ "pku",
-+ "avx512f",
-+ "avx512f",
-+ "avx512f",
-+ "pku"
-+ ],
-+ "alias-of": "Skylake-Server-v3",
-+ "static": false,
-+ "migration-safe": true
-+ },
-+ {
-+ "name": "Skylake-Server-IBRS",
-+ "typename": "Skylake-Server-IBRS-x86_64-cpu",
-+ "unavailable-features": [
-+ "pcid",
-+ "hle",
-+ "erms",
-+ "invpcid",
-+ "rtm",
-+ "avx512f",
-+ "avx512dq",
-+ "avx512cd",
-+ "avx512bw",
-+ "avx512vl",
-+ "pku",
-+ "avx512f",
-+ "avx512f",
-+ "avx512f",
-+ "pku"
-+ ],
-+ "alias-of": "Skylake-Server-v2",
-+ "static": false,
-+ "migration-safe": true
-+ },
-+ {
-+ "name": "Skylake-Server",
-+ "typename": "Skylake-Server-x86_64-cpu",
-+ "unavailable-features": [
-+ "pcid",
-+ "hle",
-+ "erms",
-+ "invpcid",
-+ "rtm",
-+ "avx512f",
-+ "avx512dq",
-+ "avx512cd",
-+ "avx512bw",
-+ "avx512vl",
-+ "pku",
-+ "avx512f",
-+ "avx512f",
-+ "avx512f",
-+ "pku"
-+ ],
-+ "alias-of": "Skylake-Server-v1",
-+ "static": false,
-+ "migration-safe": true
-+ },
-+ {
-+ "name": "Skylake-Client-v3",
-+ "typename": "Skylake-Client-v3-x86_64-cpu",
-+ "unavailable-features": [
-+ "pcid",
-+ "erms",
-+ "invpcid"
-+ ],
-+ "static": false,
-+ "migration-safe": true
-+ },
-+ {
-+ "name": "Skylake-Client-v2",
-+ "typename": "Skylake-Client-v2-x86_64-cpu",
-+ "unavailable-features": [
-+ "pcid",
-+ "hle",
-+ "erms",
-+ "invpcid",
-+ "rtm"
-+ ],
-+ "static": false,
-+ "migration-safe": true
-+ },
-+ {
-+ "name": "Skylake-Client-v1",
-+ "typename": "Skylake-Client-v1-x86_64-cpu",
-+ "unavailable-features": [
-+ "pcid",
-+ "hle",
-+ "erms",
-+ "invpcid",
-+ "rtm"
-+ ],
-+ "static": false,
-+ "migration-safe": true
-+ },
-+ {
-+ "name": "Skylake-Client-noTSX-IBRS",
-+ "typename": "Skylake-Client-noTSX-IBRS-x86_64-cpu",
-+ "unavailable-features": [
-+ "pcid",
-+ "erms",
-+ "invpcid"
-+ ],
-+ "alias-of": "Skylake-Client-v3",
-+ "static": false,
-+ "migration-safe": true
-+ },
-+ {
-+ "name": "Skylake-Client-IBRS",
-+ "typename": "Skylake-Client-IBRS-x86_64-cpu",
-+ "unavailable-features": [
-+ "pcid",
-+ "hle",
-+ "erms",
-+ "invpcid",
-+ "rtm"
-+ ],
-+ "alias-of": "Skylake-Client-v2",
-+ "static": false,
-+ "migration-safe": true
-+ },
-+ {
-+ "name": "Skylake-Client",
-+ "typename": "Skylake-Client-x86_64-cpu",
-+ "unavailable-features": [
-+ "pcid",
-+ "hle",
-+ "erms",
-+ "invpcid",
-+ "rtm"
-+ ],
-+ "alias-of": "Skylake-Client-v1",
-+ "static": false,
-+ "migration-safe": true
-+ },
-+ {
-+ "name": "SandyBridge-v2",
-+ "typename": "SandyBridge-v2-x86_64-cpu",
-+ "unavailable-features": [],
-+ "static": false,
-+ "migration-safe": true
-+ },
-+ {
-+ "name": "SandyBridge-v1",
-+ "typename": "SandyBridge-v1-x86_64-cpu",
-+ "unavailable-features": [],
-+ "static": false,
-+ "migration-safe": true
-+ },
-+ {
-+ "name": "SandyBridge-IBRS",
-+ "typename": "SandyBridge-IBRS-x86_64-cpu",
-+ "unavailable-features": [],
-+ "alias-of": "SandyBridge-v2",
-+ "static": false,
-+ "migration-safe": true
-+ },
-+ {
-+ "name": "SandyBridge",
-+ "typename": "SandyBridge-x86_64-cpu",
-+ "unavailable-features": [],
-+ "alias-of": "SandyBridge-v1",
-+ "static": false,
-+ "migration-safe": true
-+ },
-+ {
-+ "name": "Penryn-v1",
-+ "typename": "Penryn-v1-x86_64-cpu",
-+ "unavailable-features": [],
-+ "static": false,
-+ "migration-safe": true
-+ },
-+ {
-+ "name": "Penryn",
-+ "typename": "Penryn-x86_64-cpu",
-+ "unavailable-features": [],
-+ "alias-of": "Penryn-v1",
-+ "static": false,
-+ "migration-safe": true
-+ },
-+ {
-+ "name": "Opteron_G5-v1",
-+ "typename": "Opteron_G5-v1-x86_64-cpu",
-+ "unavailable-features": [
-+ "xop",
-+ "fma4",
-+ "tbm"
-+ ],
-+ "static": false,
-+ "migration-safe": true
-+ },
-+ {
-+ "name": "Opteron_G5",
-+ "typename": "Opteron_G5-x86_64-cpu",
-+ "unavailable-features": [
-+ "xop",
-+ "fma4",
-+ "tbm"
-+ ],
-+ "alias-of": "Opteron_G5-v1",
-+ "static": false,
-+ "migration-safe": true
-+ },
-+ {
-+ "name": "Opteron_G4-v1",
-+ "typename": "Opteron_G4-v1-x86_64-cpu",
-+ "unavailable-features": [
-+ "xop",
-+ "fma4"
-+ ],
-+ "static": false,
-+ "migration-safe": true
-+ },
-+ {
-+ "name": "Opteron_G4",
-+ "typename": "Opteron_G4-x86_64-cpu",
-+ "unavailable-features": [
-+ "xop",
-+ "fma4"
-+ ],
-+ "alias-of": "Opteron_G4-v1",
-+ "static": false,
-+ "migration-safe": true
-+ },
-+ {
-+ "name": "Opteron_G3-v1",
-+ "typename": "Opteron_G3-v1-x86_64-cpu",
-+ "unavailable-features": [],
-+ "static": false,
-+ "migration-safe": true
-+ },
-+ {
-+ "name": "Opteron_G3",
-+ "typename": "Opteron_G3-x86_64-cpu",
-+ "unavailable-features": [],
-+ "alias-of": "Opteron_G3-v1",
-+ "static": false,
-+ "migration-safe": true
-+ },
-+ {
-+ "name": "Opteron_G2-v1",
-+ "typename": "Opteron_G2-v1-x86_64-cpu",
-+ "unavailable-features": [],
-+ "static": false,
-+ "migration-safe": true
-+ },
-+ {
-+ "name": "Opteron_G2",
-+ "typename": "Opteron_G2-x86_64-cpu",
-+ "unavailable-features": [],
-+ "alias-of": "Opteron_G2-v1",
-+ "static": false,
-+ "migration-safe": true
-+ },
-+ {
-+ "name": "Opteron_G1-v1",
-+ "typename": "Opteron_G1-v1-x86_64-cpu",
-+ "unavailable-features": [],
-+ "static": false,
-+ "migration-safe": true
-+ },
-+ {
-+ "name": "Opteron_G1",
-+ "typename": "Opteron_G1-x86_64-cpu",
-+ "unavailable-features": [],
-+ "alias-of": "Opteron_G1-v1",
-+ "static": false,
-+ "migration-safe": true
-+ },
-+ {
-+ "name": "Nehalem-v2",
-+ "typename": "Nehalem-v2-x86_64-cpu",
-+ "unavailable-features": [],
-+ "static": false,
-+ "migration-safe": true
-+ },
-+ {
-+ "name": "Nehalem-v1",
-+ "typename": "Nehalem-v1-x86_64-cpu",
-+ "unavailable-features": [],
-+ "static": false,
-+ "migration-safe": true
-+ },
-+ {
-+ "name": "Nehalem-IBRS",
-+ "typename": "Nehalem-IBRS-x86_64-cpu",
-+ "unavailable-features": [],
-+ "alias-of": "Nehalem-v2",
-+ "static": false,
-+ "migration-safe": true
-+ },
-+ {
-+ "name": "Nehalem",
-+ "typename": "Nehalem-x86_64-cpu",
-+ "unavailable-features": [],
-+ "alias-of": "Nehalem-v1",
-+ "static": false,
-+ "migration-safe": true
-+ },
-+ {
-+ "name": "KnightsMill-v1",
-+ "typename": "KnightsMill-v1-x86_64-cpu",
-+ "unavailable-features": [
-+ "ss",
-+ "erms",
-+ "avx512f",
-+ "avx512pf",
-+ "avx512er",
-+ "avx512cd",
-+ "avx512-vpopcntdq",
-+ "avx512-4vnniw",
-+ "avx512-4fmaps",
-+ "avx512f",
-+ "avx512f",
-+ "avx512f"
-+ ],
-+ "static": false,
-+ "migration-safe": true
-+ },
-+ {
-+ "name": "KnightsMill",
-+ "typename": "KnightsMill-x86_64-cpu",
-+ "unavailable-features": [
-+ "ss",
-+ "erms",
-+ "avx512f",
-+ "avx512pf",
-+ "avx512er",
-+ "avx512cd",
-+ "avx512-vpopcntdq",
-+ "avx512-4vnniw",
-+ "avx512-4fmaps",
-+ "avx512f",
-+ "avx512f",
-+ "avx512f"
-+ ],
-+ "alias-of": "KnightsMill-v1",
-+ "static": false,
-+ "migration-safe": true
-+ },
-+ {
-+ "name": "IvyBridge-v2",
-+ "typename": "IvyBridge-v2-x86_64-cpu",
-+ "unavailable-features": [
-+ "erms"
-+ ],
-+ "static": false,
-+ "migration-safe": true
-+ },
-+ {
-+ "name": "IvyBridge-v1",
-+ "typename": "IvyBridge-v1-x86_64-cpu",
-+ "unavailable-features": [
-+ "erms"
-+ ],
-+ "static": false,
-+ "migration-safe": true
-+ },
-+ {
-+ "name": "IvyBridge-IBRS",
-+ "typename": "IvyBridge-IBRS-x86_64-cpu",
-+ "unavailable-features": [
-+ "erms"
-+ ],
-+ "alias-of": "IvyBridge-v2",
-+ "static": false,
-+ "migration-safe": true
-+ },
-+ {
-+ "name": "IvyBridge",
-+ "typename": "IvyBridge-x86_64-cpu",
-+ "unavailable-features": [
-+ "erms"
-+ ],
-+ "alias-of": "IvyBridge-v1",
-+ "static": false,
-+ "migration-safe": true
-+ },
-+ {
-+ "name": "Icelake-Server-v2",
-+ "typename": "Icelake-Server-v2-x86_64-cpu",
-+ "unavailable-features": [
-+ "pcid",
-+ "erms",
-+ "invpcid",
-+ "avx512f",
-+ "avx512dq",
-+ "avx512cd",
-+ "avx512bw",
-+ "avx512vl",
-+ "avx512vbmi",
-+ "pku",
-+ "avx512vbmi2",
-+ "gfni",
-+ "vaes",
-+ "vpclmulqdq",
-+ "avx512vnni",
-+ "avx512bitalg",
-+ "avx512-vpopcntdq",
-+ "la57",
-+ "avx512f",
-+ "avx512f",
-+ "avx512f",
-+ "pku"
-+ ],
-+ "static": false,
-+ "migration-safe": true
-+ },
-+ {
-+ "name": "Icelake-Server-v1",
-+ "typename": "Icelake-Server-v1-x86_64-cpu",
-+ "unavailable-features": [
-+ "pcid",
-+ "hle",
-+ "erms",
-+ "invpcid",
-+ "rtm",
-+ "avx512f",
-+ "avx512dq",
-+ "avx512cd",
-+ "avx512bw",
-+ "avx512vl",
-+ "avx512vbmi",
-+ "pku",
-+ "avx512vbmi2",
-+ "gfni",
-+ "vaes",
-+ "vpclmulqdq",
-+ "avx512vnni",
-+ "avx512bitalg",
-+ "avx512-vpopcntdq",
-+ "la57",
-+ "avx512f",
-+ "avx512f",
-+ "avx512f",
-+ "pku"
-+ ],
-+ "static": false,
-+ "migration-safe": true
-+ },
-+ {
-+ "name": "Icelake-Server-noTSX",
-+ "typename": "Icelake-Server-noTSX-x86_64-cpu",
-+ "unavailable-features": [
-+ "pcid",
-+ "erms",
-+ "invpcid",
-+ "avx512f",
-+ "avx512dq",
-+ "avx512cd",
-+ "avx512bw",
-+ "avx512vl",
-+ "avx512vbmi",
-+ "pku",
-+ "avx512vbmi2",
-+ "gfni",
-+ "vaes",
-+ "vpclmulqdq",
-+ "avx512vnni",
-+ "avx512bitalg",
-+ "avx512-vpopcntdq",
-+ "la57",
-+ "avx512f",
-+ "avx512f",
-+ "avx512f",
-+ "pku"
-+ ],
-+ "alias-of": "Icelake-Server-v2",
-+ "static": false,
-+ "migration-safe": true
-+ },
-+ {
-+ "name": "Icelake-Server",
-+ "typename": "Icelake-Server-x86_64-cpu",
-+ "unavailable-features": [
-+ "pcid",
-+ "hle",
-+ "erms",
-+ "invpcid",
-+ "rtm",
-+ "avx512f",
-+ "avx512dq",
-+ "avx512cd",
-+ "avx512bw",
-+ "avx512vl",
-+ "avx512vbmi",
-+ "pku",
-+ "avx512vbmi2",
-+ "gfni",
-+ "vaes",
-+ "vpclmulqdq",
-+ "avx512vnni",
-+ "avx512bitalg",
-+ "avx512-vpopcntdq",
-+ "la57",
-+ "avx512f",
-+ "avx512f",
-+ "avx512f",
-+ "pku"
-+ ],
-+ "alias-of": "Icelake-Server-v1",
-+ "static": false,
-+ "migration-safe": true
-+ },
-+ {
-+ "name": "Icelake-Client-v2",
-+ "typename": "Icelake-Client-v2-x86_64-cpu",
-+ "unavailable-features": [
-+ "pcid",
-+ "erms",
-+ "invpcid",
-+ "avx512vbmi",
-+ "pku",
-+ "avx512vbmi2",
-+ "gfni",
-+ "vaes",
-+ "vpclmulqdq",
-+ "avx512vnni",
-+ "avx512bitalg",
-+ "avx512-vpopcntdq",
-+ "pku"
-+ ],
-+ "static": false,
-+ "migration-safe": true
-+ },
-+ {
-+ "name": "Icelake-Client-v1",
-+ "typename": "Icelake-Client-v1-x86_64-cpu",
-+ "unavailable-features": [
-+ "pcid",
-+ "hle",
-+ "erms",
-+ "invpcid",
-+ "rtm",
-+ "avx512vbmi",
-+ "pku",
-+ "avx512vbmi2",
-+ "gfni",
-+ "vaes",
-+ "vpclmulqdq",
-+ "avx512vnni",
-+ "avx512bitalg",
-+ "avx512-vpopcntdq",
-+ "pku"
-+ ],
-+ "static": false,
-+ "migration-safe": true
-+ },
-+ {
-+ "name": "Icelake-Client-noTSX",
-+ "typename": "Icelake-Client-noTSX-x86_64-cpu",
-+ "unavailable-features": [
-+ "pcid",
-+ "erms",
-+ "invpcid",
-+ "avx512vbmi",
-+ "pku",
-+ "avx512vbmi2",
-+ "gfni",
-+ "vaes",
-+ "vpclmulqdq",
-+ "avx512vnni",
-+ "avx512bitalg",
-+ "avx512-vpopcntdq",
-+ "pku"
-+ ],
-+ "alias-of": "Icelake-Client-v2",
-+ "static": false,
-+ "migration-safe": true
-+ },
-+ {
-+ "name": "Icelake-Client",
-+ "typename": "Icelake-Client-x86_64-cpu",
-+ "unavailable-features": [
-+ "pcid",
-+ "hle",
-+ "erms",
-+ "invpcid",
-+ "rtm",
-+ "avx512vbmi",
-+ "pku",
-+ "avx512vbmi2",
-+ "gfni",
-+ "vaes",
-+ "vpclmulqdq",
-+ "avx512vnni",
-+ "avx512bitalg",
-+ "avx512-vpopcntdq",
-+ "pku"
-+ ],
-+ "alias-of": "Icelake-Client-v1",
-+ "static": false,
-+ "migration-safe": true
-+ },
-+ {
-+ "name": "Haswell-v4",
-+ "typename": "Haswell-v4-x86_64-cpu",
-+ "unavailable-features": [
-+ "pcid",
-+ "erms",
-+ "invpcid"
-+ ],
-+ "static": false,
-+ "migration-safe": true
-+ },
-+ {
-+ "name": "Haswell-v3",
-+ "typename": "Haswell-v3-x86_64-cpu",
-+ "unavailable-features": [
-+ "pcid",
-+ "hle",
-+ "erms",
-+ "invpcid",
-+ "rtm"
-+ ],
-+ "static": false,
-+ "migration-safe": true
-+ },
-+ {
-+ "name": "Haswell-v2",
-+ "typename": "Haswell-v2-x86_64-cpu",
-+ "unavailable-features": [
-+ "pcid",
-+ "erms",
-+ "invpcid"
-+ ],
-+ "static": false,
-+ "migration-safe": true
-+ },
-+ {
-+ "name": "Haswell-v1",
-+ "typename": "Haswell-v1-x86_64-cpu",
-+ "unavailable-features": [
-+ "pcid",
-+ "hle",
-+ "erms",
-+ "invpcid",
-+ "rtm"
-+ ],
-+ "static": false,
-+ "migration-safe": true
-+ },
-+ {
-+ "name": "Haswell-noTSX-IBRS",
-+ "typename": "Haswell-noTSX-IBRS-x86_64-cpu",
-+ "unavailable-features": [
-+ "pcid",
-+ "erms",
-+ "invpcid"
-+ ],
-+ "alias-of": "Haswell-v4",
-+ "static": false,
-+ "migration-safe": true
-+ },
-+ {
-+ "name": "Haswell-noTSX",
-+ "typename": "Haswell-noTSX-x86_64-cpu",
-+ "unavailable-features": [
-+ "pcid",
-+ "erms",
-+ "invpcid"
-+ ],
-+ "alias-of": "Haswell-v2",
-+ "static": false,
-+ "migration-safe": true
-+ },
-+ {
-+ "name": "Haswell-IBRS",
-+ "typename": "Haswell-IBRS-x86_64-cpu",
-+ "unavailable-features": [
-+ "pcid",
-+ "hle",
-+ "erms",
-+ "invpcid",
-+ "rtm"
-+ ],
-+ "alias-of": "Haswell-v3",
-+ "static": false,
-+ "migration-safe": true
-+ },
-+ {
-+ "name": "Haswell",
-+ "typename": "Haswell-x86_64-cpu",
-+ "unavailable-features": [
-+ "pcid",
-+ "hle",
-+ "erms",
-+ "invpcid",
-+ "rtm"
-+ ],
-+ "alias-of": "Haswell-v1",
-+ "static": false,
-+ "migration-safe": true
-+ },
-+ {
-+ "name": "EPYC-v3",
-+ "typename": "EPYC-v3-x86_64-cpu",
-+ "unavailable-features": [],
-+ "static": false,
-+ "migration-safe": true
-+ },
-+ {
-+ "name": "EPYC-v2",
-+ "typename": "EPYC-v2-x86_64-cpu",
-+ "unavailable-features": [],
-+ "static": false,
-+ "migration-safe": true
-+ },
-+ {
-+ "name": "EPYC-v1",
-+ "typename": "EPYC-v1-x86_64-cpu",
-+ "unavailable-features": [],
-+ "static": false,
-+ "migration-safe": true
-+ },
-+ {
-+ "name": "EPYC-Rome-v1",
-+ "typename": "EPYC-Rome-v1-x86_64-cpu",
-+ "unavailable-features": [],
-+ "static": false,
-+ "migration-safe": true
-+ },
-+ {
-+ "name": "EPYC-Rome",
-+ "typename": "EPYC-Rome-x86_64-cpu",
-+ "unavailable-features": [],
-+ "alias-of": "EPYC-Rome-v1",
-+ "static": false,
-+ "migration-safe": true
-+ },
-+ {
-+ "name": "EPYC-IBPB",
-+ "typename": "EPYC-IBPB-x86_64-cpu",
-+ "unavailable-features": [],
-+ "alias-of": "EPYC-v2",
-+ "static": false,
-+ "migration-safe": true
-+ },
-+ {
-+ "name": "EPYC",
-+ "typename": "EPYC-x86_64-cpu",
-+ "unavailable-features": [],
-+ "alias-of": "EPYC-v1",
-+ "static": false,
-+ "migration-safe": true
-+ },
-+ {
-+ "name": "Dhyana-v1",
-+ "typename": "Dhyana-v1-x86_64-cpu",
-+ "unavailable-features": [],
-+ "static": false,
-+ "migration-safe": true
-+ },
-+ {
-+ "name": "Dhyana",
-+ "typename": "Dhyana-x86_64-cpu",
-+ "unavailable-features": [],
-+ "alias-of": "Dhyana-v1",
-+ "static": false,
-+ "migration-safe": true
-+ },
-+ {
-+ "name": "Denverton-v1",
-+ "typename": "Denverton-v1-x86_64-cpu",
-+ "unavailable-features": [
-+ "erms",
-+ "mpx",
-+ "mpx",
-+ "mpx"
-+ ],
-+ "static": false,
-+ "migration-safe": true
-+ },
-+ {
-+ "name": "Denverton",
-+ "typename": "Denverton-x86_64-cpu",
-+ "unavailable-features": [
-+ "erms",
-+ "mpx",
-+ "mpx",
-+ "mpx"
-+ ],
-+ "alias-of": "Denverton-v1",
-+ "static": false,
-+ "migration-safe": true
-+ },
-+ {
-+ "name": "Cooperlake-v1",
-+ "typename": "Cooperlake-v1-x86_64-cpu",
-+ "unavailable-features": [
-+ "pcid",
-+ "hle",
-+ "erms",
-+ "invpcid",
-+ "rtm",
-+ "avx512f",
-+ "avx512dq",
-+ "avx512cd",
-+ "avx512bw",
-+ "avx512vl",
-+ "pku",
-+ "avx512vnni",
-+ "avx512-bf16",
-+ "avx512f",
-+ "avx512f",
-+ "avx512f",
-+ "pku",
-+ "ibrs-all"
-+ ],
-+ "static": false,
-+ "migration-safe": true
-+ },
-+ {
-+ "name": "Cooperlake",
-+ "typename": "Cooperlake-x86_64-cpu",
-+ "unavailable-features": [
-+ "pcid",
-+ "hle",
-+ "erms",
-+ "invpcid",
-+ "rtm",
-+ "avx512f",
-+ "avx512dq",
-+ "avx512cd",
-+ "avx512bw",
-+ "avx512vl",
-+ "pku",
-+ "avx512vnni",
-+ "avx512-bf16",
-+ "avx512f",
-+ "avx512f",
-+ "avx512f",
-+ "pku",
-+ "ibrs-all"
-+ ],
-+ "alias-of": "Cooperlake-v1",
-+ "static": false,
-+ "migration-safe": true
-+ },
-+ {
-+ "name": "Conroe-v1",
-+ "typename": "Conroe-v1-x86_64-cpu",
-+ "unavailable-features": [],
-+ "static": false,
-+ "migration-safe": true
-+ },
-+ {
-+ "name": "Conroe",
-+ "typename": "Conroe-x86_64-cpu",
-+ "unavailable-features": [],
-+ "alias-of": "Conroe-v1",
-+ "static": false,
-+ "migration-safe": true
-+ },
-+ {
-+ "name": "Cascadelake-Server-v3",
-+ "typename": "Cascadelake-Server-v3-x86_64-cpu",
-+ "unavailable-features": [
-+ "pcid",
-+ "erms",
-+ "invpcid",
-+ "avx512f",
-+ "avx512dq",
-+ "avx512cd",
-+ "avx512bw",
-+ "avx512vl",
-+ "pku",
-+ "avx512vnni",
-+ "avx512f",
-+ "avx512f",
-+ "avx512f",
-+ "pku",
-+ "ibrs-all"
-+ ],
-+ "static": false,
-+ "migration-safe": true
-+ },
-+ {
-+ "name": "Cascadelake-Server-v2",
-+ "typename": "Cascadelake-Server-v2-x86_64-cpu",
-+ "unavailable-features": [
-+ "pcid",
-+ "hle",
-+ "erms",
-+ "invpcid",
-+ "rtm",
-+ "avx512f",
-+ "avx512dq",
-+ "avx512cd",
-+ "avx512bw",
-+ "avx512vl",
-+ "pku",
-+ "avx512vnni",
-+ "avx512f",
-+ "avx512f",
-+ "avx512f",
-+ "pku",
-+ "ibrs-all"
-+ ],
-+ "static": false,
-+ "migration-safe": true
-+ },
-+ {
-+ "name": "Cascadelake-Server-v1",
-+ "typename": "Cascadelake-Server-v1-x86_64-cpu",
-+ "unavailable-features": [
-+ "pcid",
-+ "hle",
-+ "erms",
-+ "invpcid",
-+ "rtm",
-+ "avx512f",
-+ "avx512dq",
-+ "avx512cd",
-+ "avx512bw",
-+ "avx512vl",
-+ "pku",
-+ "avx512vnni",
-+ "avx512f",
-+ "avx512f",
-+ "avx512f",
-+ "pku"
-+ ],
-+ "static": false,
-+ "migration-safe": true
-+ },
-+ {
-+ "name": "Cascadelake-Server-noTSX",
-+ "typename": "Cascadelake-Server-noTSX-x86_64-cpu",
-+ "unavailable-features": [
-+ "pcid",
-+ "erms",
-+ "invpcid",
-+ "avx512f",
-+ "avx512dq",
-+ "avx512cd",
-+ "avx512bw",
-+ "avx512vl",
-+ "pku",
-+ "avx512vnni",
-+ "avx512f",
-+ "avx512f",
-+ "avx512f",
-+ "pku",
-+ "ibrs-all"
-+ ],
-+ "alias-of": "Cascadelake-Server-v3",
-+ "static": false,
-+ "migration-safe": true
-+ },
-+ {
-+ "name": "Cascadelake-Server",
-+ "typename": "Cascadelake-Server-x86_64-cpu",
-+ "unavailable-features": [
-+ "pcid",
-+ "hle",
-+ "erms",
-+ "invpcid",
-+ "rtm",
-+ "avx512f",
-+ "avx512dq",
-+ "avx512cd",
-+ "avx512bw",
-+ "avx512vl",
-+ "pku",
-+ "avx512vnni",
-+ "avx512f",
-+ "avx512f",
-+ "avx512f",
-+ "pku"
-+ ],
-+ "alias-of": "Cascadelake-Server-v1",
-+ "static": false,
-+ "migration-safe": true
-+ },
-+ {
-+ "name": "Broadwell-v4",
-+ "typename": "Broadwell-v4-x86_64-cpu",
-+ "unavailable-features": [
-+ "pcid",
-+ "erms",
-+ "invpcid"
-+ ],
-+ "static": false,
-+ "migration-safe": true
-+ },
-+ {
-+ "name": "Broadwell-v3",
-+ "typename": "Broadwell-v3-x86_64-cpu",
-+ "unavailable-features": [
-+ "pcid",
-+ "hle",
-+ "erms",
-+ "invpcid",
-+ "rtm"
-+ ],
-+ "static": false,
-+ "migration-safe": true
-+ },
-+ {
-+ "name": "Broadwell-v2",
-+ "typename": "Broadwell-v2-x86_64-cpu",
-+ "unavailable-features": [
-+ "pcid",
-+ "erms",
-+ "invpcid"
-+ ],
-+ "static": false,
-+ "migration-safe": true
-+ },
-+ {
-+ "name": "Broadwell-v1",
-+ "typename": "Broadwell-v1-x86_64-cpu",
-+ "unavailable-features": [
-+ "pcid",
-+ "hle",
-+ "erms",
-+ "invpcid",
-+ "rtm"
-+ ],
-+ "static": false,
-+ "migration-safe": true
-+ },
-+ {
-+ "name": "Broadwell-noTSX-IBRS",
-+ "typename": "Broadwell-noTSX-IBRS-x86_64-cpu",
-+ "unavailable-features": [
-+ "pcid",
-+ "erms",
-+ "invpcid"
-+ ],
-+ "alias-of": "Broadwell-v4",
-+ "static": false,
-+ "migration-safe": true
-+ },
-+ {
-+ "name": "Broadwell-noTSX",
-+ "typename": "Broadwell-noTSX-x86_64-cpu",
-+ "unavailable-features": [
-+ "pcid",
-+ "erms",
-+ "invpcid"
-+ ],
-+ "alias-of": "Broadwell-v2",
-+ "static": false,
-+ "migration-safe": true
-+ },
-+ {
-+ "name": "Broadwell-IBRS",
-+ "typename": "Broadwell-IBRS-x86_64-cpu",
-+ "unavailable-features": [
-+ "pcid",
-+ "hle",
-+ "erms",
-+ "invpcid",
-+ "rtm"
-+ ],
-+ "alias-of": "Broadwell-v3",
-+ "static": false,
-+ "migration-safe": true
-+ },
-+ {
-+ "name": "Broadwell",
-+ "typename": "Broadwell-x86_64-cpu",
-+ "unavailable-features": [
-+ "pcid",
-+ "hle",
-+ "erms",
-+ "invpcid",
-+ "rtm"
-+ ],
-+ "alias-of": "Broadwell-v1",
-+ "static": false,
-+ "migration-safe": true
-+ },
-+ {
-+ "name": "486-v1",
-+ "typename": "486-v1-x86_64-cpu",
-+ "unavailable-features": [],
-+ "static": false,
-+ "migration-safe": true
-+ },
-+ {
-+ "name": "486",
-+ "typename": "486-x86_64-cpu",
-+ "unavailable-features": [],
-+ "alias-of": "486-v1",
-+ "static": false,
-+ "migration-safe": true
-+ }
-+ ],
-+ "id": "definitions"
-+}
-diff --git a/tests/cputestdata/x86_64-cpuid-EPYC-7502-32-Core.sig b/tests/cputestdata/x86_64-cpuid-EPYC-7502-32-Core.sig
-new file mode 100644
-index 0000000000..cf54739de9
---- /dev/null
-+++ b/tests/cputestdata/x86_64-cpuid-EPYC-7502-32-Core.sig
-@@ -0,0 +1,4 @@
-+830f10
-+family: 23 (0x17)
-+model: 49 (0x31)
-+stepping: 0 (0x00)
-diff --git a/tests/cputestdata/x86_64-cpuid-EPYC-7502-32-Core.xml b/tests/cputestdata/x86_64-cpuid-EPYC-7502-32-Core.xml
-new file mode 100644
-index 0000000000..d6753065b9
---- /dev/null
-+++ b/tests/cputestdata/x86_64-cpuid-EPYC-7502-32-Core.xml
-@@ -0,0 +1,66 @@
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
---
-2.29.2
-
diff --git a/SOURCES/libvirt-Allow-NUMA-nodes-without-vCPUs.patch b/SOURCES/libvirt-Allow-NUMA-nodes-without-vCPUs.patch
deleted file mode 100644
index 37df946..0000000
--- a/SOURCES/libvirt-Allow-NUMA-nodes-without-vCPUs.patch
+++ /dev/null
@@ -1,456 +0,0 @@
-From 5f6723e71e3765d1d43bfa9ba1c66e0e05e11a48 Mon Sep 17 00:00:00 2001
-Message-Id: <5f6723e71e3765d1d43bfa9ba1c66e0e05e11a48@dist-git>
-From: Michal Privoznik
-Date: Mon, 9 Nov 2020 17:22:32 +0100
-Subject: [PATCH] Allow NUMA nodes without vCPUs
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-QEMU allows creating NUMA nodes that have memory only.
-These are somehow important for HMAT.
-
-With check done in qemuValidateDomainDef() for QEMU 2.7 or newer
-(checked via QEMU_CAPS_NUMA), we can be sure that the vCPUs are
-fully assigned to NUMA nodes in domain XML.
-
-Signed-off-by: Michal Privoznik
-Reviewed-by: Daniel Henrique Barboza
-(cherry picked from commit a26f61ee0cffa421b87ef568002b684dd8025432)
-
-Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1749518
-
-Conflicts:
-- src/qemu/qemu_validate.c: This file doesn't exist in downstream
-yet, so I've moved the change that original patch would do to
-qemu_domain.c where the validator lives.
-
-Signed-off-by: Michal Privoznik
-Message-Id: <365508c75e579e9037ad555d6c372068ccd50c95.1604938867.git.mprivozn@redhat.com>
-Reviewed-by: Ján Tomko
----
- docs/formatdomain.html.in | 2 +
- docs/schemas/cputypes.rng | 8 ++-
- src/conf/numa_conf.c | 59 ++++++++++---------
- src/libxl/xen_xl.c | 10 ++--
- src/qemu/qemu_command.c | 26 ++++----
- src/qemu/qemu_domain.c | 22 +++----
- tests/qemuxml2argvdata/numatune-no-vcpu.args | 33 +++++++++++
- tests/qemuxml2argvdata/numatune-no-vcpu.xml | 42 +++++++++++++
- tests/qemuxml2argvtest.c | 1 +
- tests/qemuxml2xmloutdata/numatune-no-vcpu.xml | 1 +
- tests/qemuxml2xmltest.c | 1 +
- 11 files changed, 149 insertions(+), 56 deletions(-)
- create mode 100644 tests/qemuxml2argvdata/numatune-no-vcpu.args
- create mode 100644 tests/qemuxml2argvdata/numatune-no-vcpu.xml
- create mode 120000 tests/qemuxml2xmloutdata/numatune-no-vcpu.xml
-
-diff --git a/docs/formatdomain.html.in b/docs/formatdomain.html.in
-index 76799f5ffc..4b8d312596 100644
---- a/docs/formatdomain.html.in
-+++ b/docs/formatdomain.html.in
-@@ -1783,6 +1783,8 @@
- cpus
specifies the CPU or range of CPUs that are
- part of the node. memory
specifies the node memory
- in kibibytes (i.e. blocks of 1024 bytes).
-+ Since 6.6.0 the cpus
attribute
-+ is optional and if omitted a CPU-less NUMA node is created.
- Since 1.2.11 one can use an additional unit
attribute to
- define units in which memory
is specified.
-diff --git a/docs/schemas/cputypes.rng b/docs/schemas/cputypes.rng
-index e2744acad3..a1682a1003 100644
---- a/docs/schemas/cputypes.rng
-+++ b/docs/schemas/cputypes.rng
-@@ -115,9 +115,11 @@
-
-
-
--
--
--
-+
-+
-+
-+
-+
-
-
-
-diff --git a/src/conf/numa_conf.c b/src/conf/numa_conf.c
-index c9cc8ac22e..a805336d16 100644
---- a/src/conf/numa_conf.c
-+++ b/src/conf/numa_conf.c
-@@ -889,32 +889,28 @@ virDomainNumaDefParseXML(virDomainNumaPtr def,
- }
- VIR_FREE(tmp);
-
-- if (def->mem_nodes[cur_cell].cpumask) {
-+ if (def->mem_nodes[cur_cell].mem) {
- virReportError(VIR_ERR_XML_ERROR,
- _("Duplicate NUMA cell info for cell id '%u'"),
- cur_cell);
- goto cleanup;
- }
-
-- if (!(tmp = virXMLPropString(nodes[i], "cpus"))) {
-- virReportError(VIR_ERR_XML_ERROR, "%s",
-- _("Missing 'cpus' attribute in NUMA cell"));
-- goto cleanup;
-- }
-+ if ((tmp = virXMLPropString(nodes[i], "cpus"))) {
-+ g_autoptr(virBitmap) cpumask = NULL;
-
-- if (virBitmapParse(tmp, &def->mem_nodes[cur_cell].cpumask,
-- VIR_DOMAIN_CPUMASK_LEN) < 0)
-- goto cleanup;
-+ if (virBitmapParse(tmp, &cpumask, VIR_DOMAIN_CPUMASK_LEN) < 0)
-+ goto cleanup;
-
-- if (virBitmapIsAllClear(def->mem_nodes[cur_cell].cpumask)) {
-- virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
-- _("NUMA cell %d has no vCPUs assigned"), cur_cell);
-- goto cleanup;
-+ if (!virBitmapIsAllClear(cpumask))
-+ def->mem_nodes[cur_cell].cpumask = g_steal_pointer(&cpumask);
-+ VIR_FREE(tmp);
- }
-- VIR_FREE(tmp);
-
- for (j = 0; j < n; j++) {
-- if (j == cur_cell || !def->mem_nodes[j].cpumask)
-+ if (j == cur_cell ||
-+ !def->mem_nodes[j].cpumask ||
-+ !def->mem_nodes[cur_cell].cpumask)
- continue;
-
- if (virBitmapOverlaps(def->mem_nodes[j].cpumask,
-@@ -976,7 +972,6 @@ virDomainNumaDefFormatXML(virBufferPtr buf,
- {
- virDomainMemoryAccess memAccess;
- virTristateBool discard;
-- char *cpustr;
- size_t ncells = virDomainNumaGetNodeCount(def);
- size_t i;
-
-@@ -986,17 +981,22 @@ virDomainNumaDefFormatXML(virBufferPtr buf,
- virBufferAddLit(buf, "\n");
- virBufferAdjustIndent(buf, 2);
- for (i = 0; i < ncells; i++) {
-+ virBitmapPtr cpumask = virDomainNumaGetNodeCpumask(def, i);
- int ndistances;
-
- memAccess = virDomainNumaGetNodeMemoryAccessMode(def, i);
- discard = virDomainNumaGetNodeDiscard(def, i);
-
-- if (!(cpustr = virBitmapFormat(virDomainNumaGetNodeCpumask(def, i))))
-- return -1;
--
- virBufferAddLit(buf, "\n");
- }
--
-- VIR_FREE(cpustr);
- }
- virBufferAdjustIndent(buf, -2);
- virBufferAddLit(buf, " | \n");
-@@ -1048,8 +1046,12 @@ virDomainNumaGetCPUCountTotal(virDomainNumaPtr numa)
- size_t i;
- unsigned int ret = 0;
-
-- for (i = 0; i < numa->nmem_nodes; i++)
-- ret += virBitmapCountBits(virDomainNumaGetNodeCpumask(numa, i));
-+ for (i = 0; i < numa->nmem_nodes; i++) {
-+ virBitmapPtr cpumask = virDomainNumaGetNodeCpumask(numa, i);
-+
-+ if (cpumask)
-+ ret += virBitmapCountBits(cpumask);
-+ }
-
- return ret;
- }
-@@ -1061,11 +1063,14 @@ virDomainNumaGetMaxCPUID(virDomainNumaPtr numa)
- unsigned int ret = 0;
-
- for (i = 0; i < numa->nmem_nodes; i++) {
-+ virBitmapPtr cpumask = virDomainNumaGetNodeCpumask(numa, i);
- int bit;
-
-- bit = virBitmapLastSetBit(virDomainNumaGetNodeCpumask(numa, i));
-- if (bit > ret)
-- ret = bit;
-+ if (cpumask) {
-+ bit = virBitmapLastSetBit(cpumask);
-+ if (bit > ret)
-+ ret = bit;
-+ }
- }
-
- return ret;
-diff --git a/src/libxl/xen_xl.c b/src/libxl/xen_xl.c
-index edea30a86a..752fa925ec 100644
---- a/src/libxl/xen_xl.c
-+++ b/src/libxl/xen_xl.c
-@@ -1443,19 +1443,21 @@ xenFormatXLVnuma(virConfValuePtr list,
- {
- int ret = -1;
- size_t i;
--
- virBuffer buf = VIR_BUFFER_INITIALIZER;
- virConfValuePtr numaVnode, tmp;
--
-+ virBitmapPtr cpumask = virDomainNumaGetNodeCpumask(numa, node);
- size_t nodeSize = virDomainNumaGetNodeMemorySize(numa, node) / 1024;
-- char *nodeVcpus = virBitmapFormat(virDomainNumaGetNodeCpumask(numa, node));
-+ g_autofree char *nodeVcpus = NULL;
-
-- if (VIR_ALLOC(numaVnode) < 0)
-+ if (!cpumask ||
-+ VIR_ALLOC(numaVnode) < 0)
- goto cleanup;
-
- numaVnode->type = VIR_CONF_LIST;
- numaVnode->list = NULL;
-
-+ nodeVcpus = virBitmapFormat(cpumask);
-+
- /* pnode */
- virBufferAsprintf(&buf, "pnode=%zu", node);
- xenFormatXLVnode(numaVnode, &buf);
-diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c
-index 1a573c2817..ac63d18a42 100644
---- a/src/qemu/qemu_command.c
-+++ b/src/qemu/qemu_command.c
-@@ -7364,8 +7364,6 @@ qemuBuildNumaCommandLine(virQEMUDriverConfigPtr cfg,
- size_t i, j;
- virQEMUCapsPtr qemuCaps = priv->qemuCaps;
- g_auto(virBuffer) buf = VIR_BUFFER_INITIALIZER;
-- char *cpumask = NULL;
-- char *tmpmask = NULL;
- char *next = NULL;
- virBufferPtr nodeBackends = NULL;
- bool needBackend = false;
-@@ -7400,9 +7398,7 @@ qemuBuildNumaCommandLine(virQEMUDriverConfigPtr cfg,
- goto cleanup;
-
- for (i = 0; i < ncells; i++) {
-- VIR_FREE(cpumask);
-- if (!(cpumask = virBitmapFormat(virDomainNumaGetNodeCpumask(def->numa, i))))
-- goto cleanup;
-+ virBitmapPtr cpumask = virDomainNumaGetNodeCpumask(def->numa, i);
-
- if (needBackend) {
- virCommandAddArg(cmd, "-object");
-@@ -7412,11 +7408,19 @@ qemuBuildNumaCommandLine(virQEMUDriverConfigPtr cfg,
- virCommandAddArg(cmd, "-numa");
- virBufferAsprintf(&buf, "node,nodeid=%zu", i);
-
-- for (tmpmask = cpumask; tmpmask; tmpmask = next) {
-- if ((next = strchr(tmpmask, ',')))
-- *(next++) = '\0';
-- virBufferAddLit(&buf, ",cpus=");
-- virBufferAdd(&buf, tmpmask, -1);
-+ if (cpumask) {
-+ g_autofree char *cpumaskStr = NULL;
-+ char *tmpmask;
-+
-+ if (!(cpumaskStr = virBitmapFormat(cpumask)))
-+ goto cleanup;
-+
-+ for (tmpmask = cpumaskStr; tmpmask; tmpmask = next) {
-+ if ((next = strchr(tmpmask, ',')))
-+ *(next++) = '\0';
-+ virBufferAddLit(&buf, ",cpus=");
-+ virBufferAdd(&buf, tmpmask, -1);
-+ }
- }
-
- if (needBackend)
-@@ -7447,8 +7451,6 @@ qemuBuildNumaCommandLine(virQEMUDriverConfigPtr cfg,
- ret = 0;
-
- cleanup:
-- VIR_FREE(cpumask);
--
- if (nodeBackends) {
- for (i = 0; i < ncells; i++)
- virBufferFreeAndReset(&nodeBackends[i]);
-diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c
-index 35b536868a..be25790f12 100644
---- a/src/qemu/qemu_domain.c
-+++ b/src/qemu/qemu_domain.c
-@@ -5373,7 +5373,7 @@ qemuDomainDefValidateNuma(const virDomainDef *def,
- }
-
- for (i = 0; i < ncells; i++) {
-- g_autofree char * cpumask = NULL;
-+ virBitmapPtr cpumask = virDomainNumaGetNodeCpumask(def->numa, i);
-
- if (!hasMemoryCap &&
- virDomainNumaGetNodeMemoryAccessMode(def->numa, i)) {
-@@ -5383,17 +5383,19 @@ qemuDomainDefValidateNuma(const virDomainDef *def,
- return -1;
- }
-
-- if (!(cpumask = virBitmapFormat(virDomainNumaGetNodeCpumask(def->numa, i))))
-- return -1;
-+ if (cpumask) {
-+ g_autofree char * cpumaskStr = NULL;
-+ if (!(cpumaskStr = virBitmapFormat(cpumask)))
-+ return -1;
-
-- if (strchr(cpumask, ',') &&
-- !virQEMUCapsGet(qemuCaps, QEMU_CAPS_NUMA)) {
-- virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
-- _("disjoint NUMA cpu ranges are not supported "
-- "with this QEMU"));
-- return -1;
-+ if (strchr(cpumaskStr, ',') &&
-+ !virQEMUCapsGet(qemuCaps, QEMU_CAPS_NUMA)) {
-+ virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
-+ _("disjoint NUMA cpu ranges are not supported "
-+ "with this QEMU"));
-+ return -1;
-+ }
- }
--
- }
-
- if (virDomainNumaNodesDistancesAreBeingSet(def->numa) &&
-diff --git a/tests/qemuxml2argvdata/numatune-no-vcpu.args b/tests/qemuxml2argvdata/numatune-no-vcpu.args
-new file mode 100644
-index 0000000000..a1f1ee044e
---- /dev/null
-+++ b/tests/qemuxml2argvdata/numatune-no-vcpu.args
-@@ -0,0 +1,33 @@
-+LC_ALL=C \
-+PATH=/bin \
-+HOME=/tmp/lib/domain--1-QEMUGuest \
-+USER=test \
-+LOGNAME=test \
-+XDG_DATA_HOME=/tmp/lib/domain--1-QEMUGuest/.local/share \
-+XDG_CACHE_HOME=/tmp/lib/domain--1-QEMUGuest/.cache \
-+XDG_CONFIG_HOME=/tmp/lib/domain--1-QEMUGuest/.config \
-+QEMU_AUDIO_DRV=none \
-+/usr/bin/qemu-system-x86_64 \
-+-name QEMUGuest \
-+-S \
-+-machine pc,accel=tcg,usb=off,dump-guest-core=off \
-+-m 12288 \
-+-realtime mlock=off \
-+-smp 12,sockets=12,cores=1,threads=1 \
-+-numa node,nodeid=0,cpus=0-3,mem=2048 \
-+-numa node,nodeid=1,cpus=4-7,mem=2048 \
-+-numa node,nodeid=2,cpus=8-11,mem=2048 \
-+-numa node,nodeid=3,mem=2048 \
-+-numa node,nodeid=4,mem=2048 \
-+-numa node,nodeid=5,mem=2048 \
-+-uuid c7a5fdb2-cdaf-9455-926a-d65c16db1809 \
-+-display none \
-+-no-user-config \
-+-nodefaults \
-+-chardev socket,id=charmonitor,path=/tmp/lib/domain--1-QEMUGuest/monitor.sock,\
-+server,nowait \
-+-mon chardev=charmonitor,id=monitor,mode=control \
-+-rtc base=utc \
-+-no-shutdown \
-+-usb \
-+-device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x3
-diff --git a/tests/qemuxml2argvdata/numatune-no-vcpu.xml b/tests/qemuxml2argvdata/numatune-no-vcpu.xml
-new file mode 100644
-index 0000000000..f25a07d7ed
---- /dev/null
-+++ b/tests/qemuxml2argvdata/numatune-no-vcpu.xml
-@@ -0,0 +1,42 @@
-+
-+ QEMUGuest
-+ c7a5fdb2-cdaf-9455-926a-d65c16db1809
-+ 12582912
-+ 12582912
-+ 12
-+
-+ hvm
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+ |
-+ |
-+ |
-+ |
-+ |
-+ |
-+
-+
-+
-+ destroy
-+ restart
-+ restart
-+
-+ /usr/bin/qemu-system-x86_64
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-diff --git a/tests/qemuxml2argvtest.c b/tests/qemuxml2argvtest.c
-index ff92af606d..49699e495d 100644
---- a/tests/qemuxml2argvtest.c
-+++ b/tests/qemuxml2argvtest.c
-@@ -1812,6 +1812,7 @@ mymain(void)
- DO_TEST_PARSE_ERROR("numatune-memnode-no-memory", NONE);
-
- DO_TEST("numatune-distances", QEMU_CAPS_NUMA, QEMU_CAPS_NUMA_DIST);
-+ DO_TEST("numatune-no-vcpu", NONE);
-
- DO_TEST("numatune-auto-nodeset-invalid", NONE);
- DO_TEST("numatune-auto-prefer", QEMU_CAPS_OBJECT_MEMORY_RAM,
-diff --git a/tests/qemuxml2xmloutdata/numatune-no-vcpu.xml b/tests/qemuxml2xmloutdata/numatune-no-vcpu.xml
-new file mode 120000
-index 0000000000..f213032685
---- /dev/null
-+++ b/tests/qemuxml2xmloutdata/numatune-no-vcpu.xml
-@@ -0,0 +1 @@
-+../qemuxml2argvdata/numatune-no-vcpu.xml
-\ No newline at end of file
-diff --git a/tests/qemuxml2xmltest.c b/tests/qemuxml2xmltest.c
-index 6c3f5c4a9e..1ddeba30f0 100644
---- a/tests/qemuxml2xmltest.c
-+++ b/tests/qemuxml2xmltest.c
-@@ -1105,6 +1105,7 @@ mymain(void)
- DO_TEST("numatune-memnode", QEMU_CAPS_NUMA, QEMU_CAPS_OBJECT_MEMORY_FILE);
- DO_TEST("numatune-memnode-no-memory", QEMU_CAPS_OBJECT_MEMORY_FILE);
- DO_TEST("numatune-distances", QEMU_CAPS_NUMA, QEMU_CAPS_NUMA_DIST);
-+ DO_TEST("numatune-no-vcpu", QEMU_CAPS_NUMA);
-
- DO_TEST("bios-nvram", NONE);
- DO_TEST("bios-nvram-os-interleave", NONE);
---
-2.29.2
-
diff --git a/SOURCES/libvirt-RHEL-Add-rhel-machine-types-to-qemuDomainMachineNeedsFDC.patch b/SOURCES/libvirt-RHEL-Add-rhel-machine-types-to-qemuDomainMachineNeedsFDC.patch
index 763b437..30b5089 100644
--- a/SOURCES/libvirt-RHEL-Add-rhel-machine-types-to-qemuDomainMachineNeedsFDC.patch
+++ b/SOURCES/libvirt-RHEL-Add-rhel-machine-types-to-qemuDomainMachineNeedsFDC.patch
@@ -1,5 +1,5 @@
-From a04fcb5b463c90c47705ca0f28e40b73c00b6b72 Mon Sep 17 00:00:00 2001
-Message-Id:
+From 7d799ffd509381fc863983cbf4869fc329e7a784 Mon Sep 17 00:00:00 2001
+Message-Id: <7d799ffd509381fc863983cbf4869fc329e7a784@dist-git>
From: =?UTF-8?q?J=C3=A1n=20Tomko?=
Date: Mon, 22 Feb 2016 12:51:51 +0100
Subject: [PATCH] RHEL: Add rhel machine types to qemuDomainMachineNeedsFDC
@@ -17,10 +17,10 @@ Signed-off-by: Jiri Denemark
1 file changed, 4 insertions(+)
diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c
-index a6dde15bad..0edf316fff 100644
+index 7e2efc8168..7b4447dc81 100644
--- a/src/qemu/qemu_domain.c
+++ b/src/qemu/qemu_domain.c
-@@ -12631,6 +12631,10 @@ qemuDomainMachineNeedsFDC(const char *machine,
+@@ -8834,6 +8834,10 @@ qemuDomainMachineNeedsFDC(const char *machine,
return false;
}
@@ -32,5 +32,5 @@ index a6dde15bad..0edf316fff 100644
}
--
-2.25.0
+2.32.0
diff --git a/SOURCES/libvirt-RHEL-Enable-usage-of-x-blockdev-reopen.patch b/SOURCES/libvirt-RHEL-Enable-usage-of-x-blockdev-reopen.patch
new file mode 100644
index 0000000..d680e49
--- /dev/null
+++ b/SOURCES/libvirt-RHEL-Enable-usage-of-x-blockdev-reopen.patch
@@ -0,0 +1,253 @@
+From a732080685a349e4ab2709e33ac3e99aa9771161 Mon Sep 17 00:00:00 2001
+Message-Id:
+From: Peter Krempa
+Date: Wed, 28 Jul 2021 17:37:21 +0200
+Subject: [PATCH] RHEL: Enable usage of x-blockdev-reopen
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+RHEL-only
+
+Introduce a new capability QEMU_CAPS_BLOCKDEV_REOPEN_COM_REDHAT_AV_8_2_0_API
+based on the presence of '__com.redhat_rhel-av-8_2_0-api' feature for
+'x-blockdev-reopen' which states that reopen works for what libvirt
+is going to use it and wire up code to call the x- prefixed command.
+
+This implementation will become dormant once qemu starts supporting
+upstream-stable blockdev-reopen.
+
+https://bugzilla.redhat.com/show_bug.cgi?id=1799013
+
+Starting with libvirt-7.6, upstream has adapted to the new format of
+arguments so this patch was modified to support blockdev-reopen which
+takes an array of nodes to reopen.
+
+https://bugzilla.redhat.com/show_bug.cgi?id=1929765
+Message-Id: <3fcde2fc6add36d5276ae224caf18adc8bca7d48.1627486352.git.pkrempa@redhat.com>
+Reviewed-by: Ján Tomko
+---
+ src/qemu/qemu_block.c | 24 +++++++++++++++---------
+ src/qemu/qemu_block.h | 3 ++-
+ src/qemu/qemu_capabilities.c | 11 +++++++++++
+ src/qemu/qemu_capabilities.h | 1 +
+ src/qemu/qemu_monitor.c | 5 +++--
+ src/qemu/qemu_monitor.h | 3 ++-
+ src/qemu/qemu_monitor_json.c | 12 +++++++++---
+ src/qemu/qemu_monitor_json.h | 3 ++-
+ tests/qemumonitorjsontest.c | 2 +-
+ 9 files changed, 46 insertions(+), 18 deletions(-)
+
+diff --git a/src/qemu/qemu_block.c b/src/qemu/qemu_block.c
+index 4691dff4f7..1f731fff3d 100644
+--- a/src/qemu/qemu_block.c
++++ b/src/qemu/qemu_block.c
+@@ -3289,7 +3289,8 @@ qemuBlockBitmapsHandleCommitFinish(virStorageSource *topsrc,
+
+ int
+ qemuBlockReopenFormatMon(qemuMonitor *mon,
+- virStorageSource *src)
++ virStorageSource *src,
++ bool downstream)
+ {
+ g_autoptr(virJSONValue) reopenprops = NULL;
+ g_autoptr(virJSONValue) srcprops = NULL;
+@@ -3298,15 +3299,19 @@ qemuBlockReopenFormatMon(qemuMonitor *mon,
+ if (!(srcprops = qemuBlockStorageSourceGetBlockdevProps(src, src->backingStore)))
+ return -1;
+
+- if (virJSONValueArrayAppend(reopenoptions, &srcprops) < 0)
+- return -1;
++ if (downstream) {
++ reopenprops = g_steal_pointer(&srcprops);
++ } else {
++ if (virJSONValueArrayAppend(reopenoptions, &srcprops) < 0)
++ return -1;
+
+- if (virJSONValueObjectCreate(&reopenprops,
+- "a:options", &reopenoptions,
+- NULL) < 0)
+- return -1;
++ if (virJSONValueObjectCreate(&reopenprops,
++ "a:options", &reopenoptions,
++ NULL) < 0)
++ return -1;
++ }
+
+- if (qemuMonitorBlockdevReopen(mon, &reopenprops) < 0)
++ if (qemuMonitorBlockdevReopen(mon, &reopenprops, downstream) < 0)
+ return -1;
+
+ return 0;
+@@ -3330,6 +3335,7 @@ qemuBlockReopenFormat(virDomainObj *vm,
+ {
+ qemuDomainObjPrivate *priv = vm->privateData;
+ virQEMUDriver *driver = priv->driver;
++ bool downstream = virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_BLOCKDEV_REOPEN_COM_REDHAT_AV_8_2_0_API);
+ int rc;
+
+ /* If we are lacking the object here, qemu might have opened an image with
+@@ -3343,7 +3349,7 @@ qemuBlockReopenFormat(virDomainObj *vm,
+ if (qemuDomainObjEnterMonitorAsync(driver, vm, asyncJob) < 0)
+ return -1;
+
+- rc = qemuBlockReopenFormatMon(priv->mon, src);
++ rc = qemuBlockReopenFormatMon(priv->mon, src, downstream);
+
+ if (qemuDomainObjExitMonitor(driver, vm) < 0 || rc < 0)
+ return -1;
+diff --git a/src/qemu/qemu_block.h b/src/qemu/qemu_block.h
+index 54601a48a9..88fc9974c4 100644
+--- a/src/qemu/qemu_block.h
++++ b/src/qemu/qemu_block.h
+@@ -268,7 +268,8 @@ qemuBlockBitmapsHandleCommitFinish(virStorageSource *topsrc,
+ /* only for use in qemumonitorjsontest */
+ int
+ qemuBlockReopenFormatMon(qemuMonitor *mon,
+- virStorageSource *src);
++ virStorageSource *src,
++ bool downstream);
+
+ int
+ qemuBlockReopenReadWrite(virDomainObj *vm,
+diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c
+index 9558938866..6734ed213d 100644
+--- a/src/qemu/qemu_capabilities.c
++++ b/src/qemu/qemu_capabilities.c
+@@ -637,6 +637,7 @@ VIR_ENUM_IMPL(virQEMUCaps,
+ "confidential-guest-support",
+ "query-display-options",
+ "s390-pv-guest",
++ "blockdev-reopen.__com.redhat_rhel-av-8_2_0-api",
+ );
+
+
+@@ -1551,6 +1552,7 @@ static struct virQEMUCapsDevicePropsFlags virQEMUCapsDevicePropsVhostUserFS[] =
+
+ /* see documentation for virQEMUQAPISchemaPathGet for the query format */
+ static struct virQEMUCapsStringFlags virQEMUCapsQMPSchemaQueries[] = {
++ { "x-blockdev-reopen/$__com.redhat_rhel-av-8_2_0-api", QEMU_CAPS_BLOCKDEV_REOPEN_COM_REDHAT_AV_8_2_0_API },
+ { "blockdev-add/arg-type/options/+gluster/debug-level", QEMU_CAPS_GLUSTER_DEBUG_LEVEL},
+ { "blockdev-add/arg-type/+gluster/debug", QEMU_CAPS_GLUSTER_DEBUG_LEVEL},
+ { "blockdev-add/arg-type/+vxhs", QEMU_CAPS_VXHS},
+@@ -5204,6 +5206,15 @@ virQEMUCapsInitProcessCaps(virQEMUCaps *qemuCaps)
+ qemuCaps->arch == VIR_ARCH_MIPS)
+ virQEMUCapsSet(qemuCaps, QEMU_CAPS_SCSI_NCR53C90);
+
++ /* RHEL-only:
++ * - if upstream blockdev-reopen is enabled, clear the downstream flag
++ * - if the downstream flag is present but not the upstream, assert the upstream flag too
++ */
++ if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_BLOCKDEV_REOPEN))
++ virQEMUCapsClear(qemuCaps, QEMU_CAPS_BLOCKDEV_REOPEN_COM_REDHAT_AV_8_2_0_API);
++ if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_BLOCKDEV_REOPEN_COM_REDHAT_AV_8_2_0_API))
++ virQEMUCapsSet(qemuCaps, QEMU_CAPS_BLOCKDEV_REOPEN);
++
+ virQEMUCapsInitProcessCapsInterlock(qemuCaps);
+ }
+
+diff --git a/src/qemu/qemu_capabilities.h b/src/qemu/qemu_capabilities.h
+index 2b1bb57a49..def0dd2030 100644
+--- a/src/qemu/qemu_capabilities.h
++++ b/src/qemu/qemu_capabilities.h
+@@ -617,6 +617,7 @@ typedef enum { /* virQEMUCapsFlags grouping marker for syntax-check */
+ QEMU_CAPS_MACHINE_CONFIDENTAL_GUEST_SUPPORT, /* -machine confidential-guest-support */
+ QEMU_CAPS_QUERY_DISPLAY_OPTIONS, /* 'query-display-options' qmp command present */
+ QEMU_CAPS_S390_PV_GUEST, /* -object s390-pv-guest,... */
++ QEMU_CAPS_BLOCKDEV_REOPEN_COM_REDHAT_AV_8_2_0_API, /* downstream support for blockdev reopen in rhel-av-8.2.0 */
+
+ QEMU_CAPS_LAST /* this must always be the last item */
+ } virQEMUCapsFlags;
+diff --git a/src/qemu/qemu_monitor.c b/src/qemu/qemu_monitor.c
+index 6e2d8010c5..7ebaa7b099 100644
+--- a/src/qemu/qemu_monitor.c
++++ b/src/qemu/qemu_monitor.c
+@@ -4339,14 +4339,15 @@ qemuMonitorBlockdevAdd(qemuMonitor *mon,
+
+ int
+ qemuMonitorBlockdevReopen(qemuMonitor *mon,
+- virJSONValue **props)
++ virJSONValue **props,
++ bool downstream)
+ {
+ VIR_DEBUG("props=%p (node-name=%s)", *props,
+ NULLSTR(virJSONValueObjectGetString(*props, "node-name")));
+
+ QEMU_CHECK_MONITOR(mon);
+
+- return qemuMonitorJSONBlockdevReopen(mon, props);
++ return qemuMonitorJSONBlockdevReopen(mon, props, downstream);
+ }
+
+
+diff --git a/src/qemu/qemu_monitor.h b/src/qemu/qemu_monitor.h
+index 1491c1297c..5a93447e23 100644
+--- a/src/qemu/qemu_monitor.h
++++ b/src/qemu/qemu_monitor.h
+@@ -1366,7 +1366,8 @@ int qemuMonitorBlockdevAdd(qemuMonitor *mon,
+ virJSONValue **props);
+
+ int qemuMonitorBlockdevReopen(qemuMonitor *mon,
+- virJSONValue **props);
++ virJSONValue **props,
++ bool downstream);
+
+ int qemuMonitorBlockdevDel(qemuMonitor *mon,
+ const char *nodename);
+diff --git a/src/qemu/qemu_monitor_json.c b/src/qemu/qemu_monitor_json.c
+index ca2c3bb6cf..8ecd5f3bbd 100644
+--- a/src/qemu/qemu_monitor_json.c
++++ b/src/qemu/qemu_monitor_json.c
+@@ -8687,13 +8687,19 @@ qemuMonitorJSONBlockdevAdd(qemuMonitor *mon,
+
+ int
+ qemuMonitorJSONBlockdevReopen(qemuMonitor *mon,
+- virJSONValue **props)
++ virJSONValue **props,
++ bool downstream)
+ {
+ g_autoptr(virJSONValue) cmd = NULL;
+ g_autoptr(virJSONValue) reply = NULL;
+
+- if (!(cmd = qemuMonitorJSONMakeCommandInternal("blockdev-reopen", props)))
+- return -1;
++ if (downstream) {
++ if (!(cmd = qemuMonitorJSONMakeCommandInternal("x-blockdev-reopen", props)))
++ return -1;
++ } else {
++ if (!(cmd = qemuMonitorJSONMakeCommandInternal("blockdev-reopen", props)))
++ return -1;
++ }
+
+ if (qemuMonitorJSONCommand(mon, cmd, &reply) < 0)
+ return -1;
+diff --git a/src/qemu/qemu_monitor_json.h b/src/qemu/qemu_monitor_json.h
+index 01a3ba25f1..90792c9939 100644
+--- a/src/qemu/qemu_monitor_json.h
++++ b/src/qemu/qemu_monitor_json.h
+@@ -601,7 +601,8 @@ int qemuMonitorJSONBlockdevAdd(qemuMonitor *mon,
+ ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2);
+
+ int qemuMonitorJSONBlockdevReopen(qemuMonitor *mon,
+- virJSONValue **props)
++ virJSONValue **props,
++ bool downstream)
+ ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2);
+
+ int qemuMonitorJSONBlockdevDel(qemuMonitor *mon,
+diff --git a/tests/qemumonitorjsontest.c b/tests/qemumonitorjsontest.c
+index 2122d9d999..c20287afee 100644
+--- a/tests/qemumonitorjsontest.c
++++ b/tests/qemumonitorjsontest.c
+@@ -2820,7 +2820,7 @@ testQemuMonitorJSONBlockdevReopen(const void *opaque)
+ if (qemuMonitorTestAddItem(test, "blockdev-reopen", "{\"return\":{}}") < 0)
+ return -1;
+
+- if (qemuBlockReopenFormatMon(qemuMonitorTestGetMonitor(test), src) < 0)
++ if (qemuBlockReopenFormatMon(qemuMonitorTestGetMonitor(test), src, false) < 0)
+ return -1;
+
+ return 0;
+--
+2.32.0
+
diff --git a/SOURCES/libvirt-RHEL-Fix-virConnectGetMaxVcpus-output.patch b/SOURCES/libvirt-RHEL-Fix-virConnectGetMaxVcpus-output.patch
index 345c0b2..36198db 100644
--- a/SOURCES/libvirt-RHEL-Fix-virConnectGetMaxVcpus-output.patch
+++ b/SOURCES/libvirt-RHEL-Fix-virConnectGetMaxVcpus-output.patch
@@ -1,5 +1,5 @@
-From 3e50b013277c7fa05987ceba440f8c4583b6c634 Mon Sep 17 00:00:00 2001
-Message-Id: <3e50b013277c7fa05987ceba440f8c4583b6c634@dist-git>
+From ce1f2d4397f1c3fe3bf87e8b49736bf3c5000de8 Mon Sep 17 00:00:00 2001
+Message-Id:
From: =?UTF-8?q?J=C3=A1n=20Tomko?=
Date: Mon, 27 Aug 2018 13:09:38 +0200
Subject: [PATCH] RHEL: Fix virConnectGetMaxVcpus output
@@ -26,10 +26,10 @@ Reviewed-by: Andrea Bolognani
1 file changed, 5 insertions(+)
diff --git a/src/util/virhostcpu.c b/src/util/virhostcpu.c
-index 7f14340f49..256976cce1 100644
+index 7aa92ad11d..337f03b41b 100644
--- a/src/util/virhostcpu.c
+++ b/src/util/virhostcpu.c
-@@ -1169,6 +1169,11 @@ virHostCPUGetKVMMaxVCPUs(void)
+@@ -1192,6 +1192,11 @@ virHostCPUGetKVMMaxVCPUs(void)
return -1;
}
@@ -42,5 +42,5 @@ index 7f14340f49..256976cce1 100644
/* at first try KVM_CAP_MAX_VCPUS to determine the maximum count */
if ((ret = ioctl(fd, KVM_CHECK_EXTENSION, KVM_CAP_MAX_VCPUS)) > 0)
--
-2.25.0
+2.32.0
diff --git a/SOURCES/libvirt-RHEL-Hack-around-changed-Broadwell-Haswell-CPUs.patch b/SOURCES/libvirt-RHEL-Hack-around-changed-Broadwell-Haswell-CPUs.patch
index 12d8958..f7c6f50 100644
--- a/SOURCES/libvirt-RHEL-Hack-around-changed-Broadwell-Haswell-CPUs.patch
+++ b/SOURCES/libvirt-RHEL-Hack-around-changed-Broadwell-Haswell-CPUs.patch
@@ -1,5 +1,5 @@
-From 0dd015e1aff1a56a4584824d1a97c9eacabf7f03 Mon Sep 17 00:00:00 2001
-Message-Id: <0dd015e1aff1a56a4584824d1a97c9eacabf7f03@dist-git>
+From 0c42b50b3f2e3cb84d704268fcb267a5b0fabdec Mon Sep 17 00:00:00 2001
+Message-Id: <0c42b50b3f2e3cb84d704268fcb267a5b0fabdec@dist-git>
From: Jiri Denemark
Date: Fri, 27 Mar 2015 12:48:40 +0100
Subject: [PATCH] RHEL: Hack around changed Broadwell/Haswell CPUs
@@ -21,28 +21,28 @@ Signed-off-by: Jiri Denemark
src/qemu/qemu_command.c | 21 +++++++++++++++++++
tests/qemuxml2argvdata/cpu-Haswell.args | 2 +-
.../qemuxml2argvdata/cpu-host-model-cmt.args | 2 +-
- .../cpu-translation.x86_64-4.0.0.args | 4 ++--
- .../cpu-translation.x86_64-latest.args | 4 ++--
- tests/qemuxml2argvdata/cpu-tsc-frequency.args | 4 ++--
+ .../cpu-translation.x86_64-4.0.0.args | 2 +-
+ .../cpu-translation.x86_64-latest.args | 2 +-
+ tests/qemuxml2argvdata/cpu-tsc-frequency.args | 2 +-
tests/qemuxml2argvdata/q35-acpi-nouefi.args | 2 +-
tests/qemuxml2argvdata/q35-acpi-uefi.args | 2 +-
tests/qemuxml2argvdata/q35-noacpi-nouefi.args | 2 +-
- 9 files changed, 32 insertions(+), 11 deletions(-)
+ 9 files changed, 29 insertions(+), 8 deletions(-)
diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c
-index 904d2beab5..e10cc7fc74 100644
+index 156af4caee..b37d693c72 100644
--- a/src/qemu/qemu_command.c
+++ b/src/qemu/qemu_command.c
-@@ -6469,6 +6469,8 @@ qemuBuildCpuModelArgStr(virQEMUDriverPtr driver,
+@@ -6343,6 +6343,8 @@ qemuBuildCpuModelArgStr(virQEMUDriver *driver,
{
size_t i;
- virCPUDefPtr cpu = def->cpu;
+ virCPUDef *cpu = def->cpu;
+ bool hle = false;
+ bool rtm = false;
switch ((virCPUMode) cpu->mode) {
case VIR_CPU_MODE_HOST_PASSTHROUGH:
-@@ -6524,6 +6526,11 @@ qemuBuildCpuModelArgStr(virQEMUDriverPtr driver,
+@@ -6407,6 +6409,11 @@ qemuBuildCpuModelArgStr(virQEMUDriver *driver,
virBufferAsprintf(buf, ",vendor=%s", cpu->vendor_id);
for (i = 0; i < cpu->nfeatures; i++) {
@@ -54,7 +54,7 @@ index 904d2beab5..e10cc7fc74 100644
switch ((virCPUFeaturePolicy) cpu->features[i].policy) {
case VIR_CPU_FEATURE_FORCE:
case VIR_CPU_FEATURE_REQUIRE:
-@@ -6541,6 +6548,20 @@ qemuBuildCpuModelArgStr(virQEMUDriverPtr driver,
+@@ -6424,6 +6431,20 @@ qemuBuildCpuModelArgStr(virQEMUDriver *driver,
}
}
@@ -76,7 +76,7 @@ index 904d2beab5..e10cc7fc74 100644
}
diff --git a/tests/qemuxml2argvdata/cpu-Haswell.args b/tests/qemuxml2argvdata/cpu-Haswell.args
-index a33b16f7ce..d35de5ea58 100644
+index 8bbd6277fd..55b66b343d 100644
--- a/tests/qemuxml2argvdata/cpu-Haswell.args
+++ b/tests/qemuxml2argvdata/cpu-Haswell.args
@@ -11,7 +11,7 @@ QEMU_AUDIO_DRV=none \
@@ -89,65 +89,59 @@ index a33b16f7ce..d35de5ea58 100644
-realtime mlock=off \
-smp 6,sockets=6,cores=1,threads=1 \
diff --git a/tests/qemuxml2argvdata/cpu-host-model-cmt.args b/tests/qemuxml2argvdata/cpu-host-model-cmt.args
-index 42f969fd62..c8795acb3e 100644
+index e21a889bee..5092e9f43a 100644
--- a/tests/qemuxml2argvdata/cpu-host-model-cmt.args
+++ b/tests/qemuxml2argvdata/cpu-host-model-cmt.args
-@@ -12,7 +12,7 @@ QEMU_AUDIO_DRV=none \
+@@ -11,7 +11,7 @@ QEMU_AUDIO_DRV=none \
+ -name QEMUGuest1 \
-S \
-machine pc,accel=tcg,usb=off,dump-guest-core=off \
- -cpu Haswell,+vme,+ds,+acpi,+ss,+ht,+tm,+pbe,+dtes64,+monitor,+ds_cpl,+vmx,\
--+smx,+est,+tm2,+xtpr,+pdcm,+f16c,+rdrand,+pdpe1gb,+abm,+lahf_lm \
-++smx,+est,+tm2,+xtpr,+pdcm,+f16c,+rdrand,+pdpe1gb,+abm,+lahf_lm,+rtm,+hle \
+--cpu Haswell,+vme,+ds,+acpi,+ss,+ht,+tm,+pbe,+dtes64,+monitor,+ds_cpl,+vmx,+smx,+est,+tm2,+xtpr,+pdcm,+f16c,+rdrand,+pdpe1gb,+abm,+lahf_lm \
++-cpu Haswell,+vme,+ds,+acpi,+ss,+ht,+tm,+pbe,+dtes64,+monitor,+ds_cpl,+vmx,+smx,+est,+tm2,+xtpr,+pdcm,+f16c,+rdrand,+pdpe1gb,+abm,+lahf_lm,+rtm,+hle \
-m 214 \
-realtime mlock=off \
-smp 6,sockets=6,cores=1,threads=1 \
diff --git a/tests/qemuxml2argvdata/cpu-translation.x86_64-4.0.0.args b/tests/qemuxml2argvdata/cpu-translation.x86_64-4.0.0.args
-index f8e19fca24..08c672fd2c 100644
+index 79bb77cc68..ac7694ada1 100644
--- a/tests/qemuxml2argvdata/cpu-translation.x86_64-4.0.0.args
+++ b/tests/qemuxml2argvdata/cpu-translation.x86_64-4.0.0.args
-@@ -14,8 +14,8 @@ QEMU_AUDIO_DRV=none \
- file=/tmp/lib/domain--1-QEMUGuest1/master-key.aes \
+@@ -12,7 +12,7 @@ QEMU_AUDIO_DRV=none \
+ -S \
+ -object secret,id=masterKey0,format=raw,file=/tmp/lib/domain--1-QEMUGuest1/master-key.aes \
-machine pc-i440fx-4.0,accel=tcg,usb=off,dump-guest-core=off \
- -cpu Haswell,pclmuldq=on,ds_cpl=on,tsc_adjust=on,fxsr_opt=on,lahf_lm=on,\
--cmp_legacy=on,nodeid_msr=on,perfctr_core=on,perfctr_nb=on,kvm_pv_eoi=on,\
--kvm_pv_unhalt=on \
-+cmp_legacy=on,nodeid_msr=on,perfctr_core=on,perfctr_nb=on,rtm=on,hle=on,\
-+kvm_pv_eoi=on,kvm_pv_unhalt=on \
+--cpu Haswell,pclmuldq=on,ds_cpl=on,tsc_adjust=on,fxsr_opt=on,lahf_lm=on,cmp_legacy=on,nodeid_msr=on,perfctr_core=on,perfctr_nb=on,kvm_pv_eoi=on,kvm_pv_unhalt=on \
++-cpu Haswell,pclmuldq=on,ds_cpl=on,tsc_adjust=on,fxsr_opt=on,lahf_lm=on,cmp_legacy=on,nodeid_msr=on,perfctr_core=on,perfctr_nb=on,rtm=on,hle=on,kvm_pv_eoi=on,kvm_pv_unhalt=on \
-m 214 \
-overcommit mem-lock=off \
-smp 1,sockets=1,cores=1,threads=1 \
diff --git a/tests/qemuxml2argvdata/cpu-translation.x86_64-latest.args b/tests/qemuxml2argvdata/cpu-translation.x86_64-latest.args
-index 9322b826f4..1dbfc9553b 100644
+index bb6b5c9986..f4a9fde2bf 100644
--- a/tests/qemuxml2argvdata/cpu-translation.x86_64-latest.args
+++ b/tests/qemuxml2argvdata/cpu-translation.x86_64-latest.args
-@@ -14,8 +14,8 @@ QEMU_AUDIO_DRV=none \
- file=/tmp/lib/domain--1-QEMUGuest1/master-key.aes \
- -machine pc,accel=tcg,usb=off,dump-guest-core=off \
- -cpu Haswell,pclmulqdq=on,ds-cpl=on,tsc-adjust=on,fxsr-opt=on,lahf-lm=on,\
--cmp-legacy=on,nodeid-msr=on,perfctr-core=on,perfctr-nb=on,kvm-pv-eoi=on,\
--kvm-pv-unhalt=on \
-+cmp-legacy=on,nodeid-msr=on,perfctr-core=on,perfctr-nb=on,rtm=on,hle=on,\
-+kvm-pv-eoi=on,kvm-pv-unhalt=on \
+@@ -11,7 +11,7 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-QEMUGuest1/.config \
+ -S \
+ -object '{"qom-type":"secret","id":"masterKey0","format":"raw","file":"/tmp/lib/domain--1-QEMUGuest1/master-key.aes"}' \
+ -machine pc,accel=tcg,usb=off,dump-guest-core=off,memory-backend=pc.ram \
+--cpu Haswell,pclmulqdq=on,ds-cpl=on,tsc-adjust=on,fxsr-opt=on,lahf-lm=on,cmp-legacy=on,nodeid-msr=on,perfctr-core=on,perfctr-nb=on,kvm-pv-eoi=on,kvm-pv-unhalt=on \
++-cpu Haswell,pclmulqdq=on,ds-cpl=on,tsc-adjust=on,fxsr-opt=on,lahf-lm=on,cmp-legacy=on,nodeid-msr=on,perfctr-core=on,perfctr-nb=on,rtm=on,hle=on,kvm-pv-eoi=on,kvm-pv-unhalt=on \
-m 214 \
+ -object '{"qom-type":"memory-backend-ram","id":"pc.ram","size":224395264}' \
-overcommit mem-lock=off \
- -smp 1,sockets=1,cores=1,threads=1 \
diff --git a/tests/qemuxml2argvdata/cpu-tsc-frequency.args b/tests/qemuxml2argvdata/cpu-tsc-frequency.args
-index 55b72b4404..45a777d468 100644
+index 0f6f79653e..207ac0a0bb 100644
--- a/tests/qemuxml2argvdata/cpu-tsc-frequency.args
+++ b/tests/qemuxml2argvdata/cpu-tsc-frequency.args
-@@ -12,8 +12,8 @@ QEMU_AUDIO_DRV=none \
+@@ -11,7 +11,7 @@ QEMU_AUDIO_DRV=none \
+ -name QEMUGuest1 \
-S \
-machine pc,accel=kvm,usb=off,dump-guest-core=off \
- -cpu Haswell,+vme,+ds,+acpi,+ss,+ht,+tm,+pbe,+dtes64,+monitor,+ds_cpl,+vmx,\
--+smx,+est,+tm2,+xtpr,+pdcm,+f16c,+rdrand,+pdpe1gb,+abm,+lahf_lm,+invtsc,\
--tsc-frequency=3504000000 \
-++smx,+est,+tm2,+xtpr,+pdcm,+f16c,+rdrand,+pdpe1gb,+abm,+lahf_lm,+invtsc,+rtm,\
-++hle,tsc-frequency=3504000000 \
+--cpu Haswell,+vme,+ds,+acpi,+ss,+ht,+tm,+pbe,+dtes64,+monitor,+ds_cpl,+vmx,+smx,+est,+tm2,+xtpr,+pdcm,+f16c,+rdrand,+pdpe1gb,+abm,+lahf_lm,+invtsc,tsc-frequency=3504000000 \
++-cpu Haswell,+vme,+ds,+acpi,+ss,+ht,+tm,+pbe,+dtes64,+monitor,+ds_cpl,+vmx,+smx,+est,+tm2,+xtpr,+pdcm,+f16c,+rdrand,+pdpe1gb,+abm,+lahf_lm,+invtsc,+rtm,+hle,tsc-frequency=3504000000 \
-m 214 \
-realtime mlock=off \
-smp 1,sockets=1,cores=1,threads=1 \
diff --git a/tests/qemuxml2argvdata/q35-acpi-nouefi.args b/tests/qemuxml2argvdata/q35-acpi-nouefi.args
-index 09e06c96ea..aed56fb1fc 100644
+index f3d255e76e..bdb94c6fb5 100644
--- a/tests/qemuxml2argvdata/q35-acpi-nouefi.args
+++ b/tests/qemuxml2argvdata/q35-acpi-nouefi.args
@@ -11,7 +11,7 @@ QEMU_AUDIO_DRV=none \
@@ -160,7 +154,7 @@ index 09e06c96ea..aed56fb1fc 100644
-realtime mlock=off \
-smp 1,sockets=1,cores=1,threads=1 \
diff --git a/tests/qemuxml2argvdata/q35-acpi-uefi.args b/tests/qemuxml2argvdata/q35-acpi-uefi.args
-index d00fe5bc1d..1f4bfe7f87 100644
+index b51a102e01..3ca8ac98a9 100644
--- a/tests/qemuxml2argvdata/q35-acpi-uefi.args
+++ b/tests/qemuxml2argvdata/q35-acpi-uefi.args
@@ -11,7 +11,7 @@ QEMU_AUDIO_DRV=none \
@@ -169,11 +163,11 @@ index d00fe5bc1d..1f4bfe7f87 100644
-machine q35,accel=tcg,usb=off,dump-guest-core=off \
--cpu Haswell \
+-cpu Haswell,+rtm,+hle \
- -drive file=/usr/share/OVMF/OVMF_CODE.fd,if=pflash,format=raw,unit=0,\
- readonly=on \
- -drive file=/var/lib/libvirt/qemu/nvram/guest_VARS.fd,if=pflash,format=raw,\
+ -drive file=/usr/share/OVMF/OVMF_CODE.fd,if=pflash,format=raw,unit=0,readonly=on \
+ -drive file=/var/lib/libvirt/qemu/nvram/guest_VARS.fd,if=pflash,format=raw,unit=1 \
+ -m 1024 \
diff --git a/tests/qemuxml2argvdata/q35-noacpi-nouefi.args b/tests/qemuxml2argvdata/q35-noacpi-nouefi.args
-index de34dff1cf..ccea7f91f9 100644
+index 0cee789ad1..39f28e8c6d 100644
--- a/tests/qemuxml2argvdata/q35-noacpi-nouefi.args
+++ b/tests/qemuxml2argvdata/q35-noacpi-nouefi.args
@@ -11,7 +11,7 @@ QEMU_AUDIO_DRV=none \
@@ -186,5 +180,5 @@ index de34dff1cf..ccea7f91f9 100644
-realtime mlock=off \
-smp 1,sockets=1,cores=1,threads=1 \
--
-2.25.0
+2.32.0
diff --git a/SOURCES/libvirt-RHEL-qemu-Add-ability-to-set-sgio-values-for-hostdev.patch b/SOURCES/libvirt-RHEL-qemu-Add-ability-to-set-sgio-values-for-hostdev.patch
index 95cd351..5cc8dbd 100644
--- a/SOURCES/libvirt-RHEL-qemu-Add-ability-to-set-sgio-values-for-hostdev.patch
+++ b/SOURCES/libvirt-RHEL-qemu-Add-ability-to-set-sgio-values-for-hostdev.patch
@@ -1,5 +1,5 @@
-From fce502cf5233d800479c2efcf7721ab895db8998 Mon Sep 17 00:00:00 2001
-Message-Id:
+From e290c6907c1d478724b8d7f178715db6cf4bd278 Mon Sep 17 00:00:00 2001
+Message-Id:
From: John Ferlan
Date: Mon, 17 Dec 2018 20:42:30 -0500
Subject: [PATCH] RHEL: qemu: Add ability to set sgio values for hostdev
@@ -15,27 +15,34 @@ Add necessary checks in order to allow setting sgio values for a scsi
host device
Signed-off-by: John Ferlan
+Signed-off-by: Ján Tomko
Signed-off-by: Jiri Denemark
-(cherry picked from commit f2cf0ae7bc371c75f6c0e79192711f2b1d201b10)
-Reviewed-by: Ján Tomko
---
- src/qemu/qemu_conf.c | 15 ++++++++-------
- 1 file changed, 8 insertions(+), 7 deletions(-)
+ src/qemu/qemu_conf.c | 25 ++++++++++++++++---------
+ 1 file changed, 16 insertions(+), 9 deletions(-)
diff --git a/src/qemu/qemu_conf.c b/src/qemu/qemu_conf.c
-index b62dd1df52..ce7869e6be 100644
+index 916a3d36ee..a749fc1bbc 100644
--- a/src/qemu/qemu_conf.c
+++ b/src/qemu/qemu_conf.c
-@@ -1810,6 +1810,7 @@ qemuSetUnprivSGIO(virDomainDeviceDefPtr dev)
- virDomainDiskDefPtr disk = NULL;
- virDomainHostdevDefPtr hostdev = NULL;
+@@ -1836,8 +1836,9 @@ qemuSetUnprivSGIO(virDomainDeviceDef *dev)
+ virDomainDiskDef *disk = NULL;
+ virDomainHostdevDef *hostdev = NULL;
g_autofree char *sysfs_path = NULL;
+ g_autofree char *hostdev_path = NULL;
const char *path = NULL;
- int val = -1;
+- int val = -1;
++ int val = 0;
-@@ -1830,14 +1831,10 @@ qemuSetUnprivSGIO(virDomainDeviceDefPtr dev)
- if (!qemuIsSharedHostdev(hostdev))
+ /* "sgio" is only valid for block disk; cdrom
+ * and floopy disk can have empty source.
+@@ -1853,17 +1854,14 @@ qemuSetUnprivSGIO(virDomainDeviceDef *dev)
+ } else if (dev->type == VIR_DOMAIN_DEVICE_HOSTDEV) {
+ hostdev = dev->data.hostdev;
+
+- if (!qemuIsSharedHostdev(hostdev))
++ if (hostdev->source.subsys.u.scsi.protocol ==
++ VIR_DOMAIN_HOSTDEV_SCSI_PROTOCOL_TYPE_ISCSI)
return 0;
- if (hostdev->source.subsys.u.scsi.sgio) {
@@ -51,19 +58,24 @@ index b62dd1df52..ce7869e6be 100644
} else {
return 0;
}
-@@ -1846,7 +1843,11 @@ qemuSetUnprivSGIO(virDomainDeviceDefPtr dev)
+@@ -1872,7 +1870,16 @@ qemuSetUnprivSGIO(virDomainDeviceDef *dev)
return -1;
/* By default, filter the SG_IO commands, i.e. set unpriv_sgio to 0. */
- val = (disk->sgio == VIR_DOMAIN_DEVICE_SGIO_UNFILTERED);
-+ if (dev->type == VIR_DOMAIN_DEVICE_DISK)
-+ val = (disk->sgio == VIR_DOMAIN_DEVICE_SGIO_UNFILTERED);
-+ else
-+ val = (hostdev->source.subsys.u.scsi.sgio ==
-+ VIR_DOMAIN_DEVICE_SGIO_UNFILTERED);
++ if (dev->type == VIR_DOMAIN_DEVICE_DISK) {
++ if (disk->sgio == VIR_DOMAIN_DEVICE_SGIO_UNFILTERED)
++ val = 1;
++ } else {
++ /* Only settable if was present for hostdev */
++ if (qemuIsSharedHostdev(hostdev) &&
++ hostdev->source.subsys.u.scsi.sgio ==
++ VIR_DOMAIN_DEVICE_SGIO_UNFILTERED)
++ val = 1;
++ }
/* Do not do anything if unpriv_sgio is not supported by the kernel and the
* whitelist is enabled. But if requesting unfiltered access, always call
--
-2.25.0
+2.32.0
diff --git a/SOURCES/libvirt-RHEL-qemu-Add-check-for-unpriv-sgio-for-SCSI-generic-host-device.patch b/SOURCES/libvirt-RHEL-qemu-Add-check-for-unpriv-sgio-for-SCSI-generic-host-device.patch
index 5f0af94..f47399f 100644
--- a/SOURCES/libvirt-RHEL-qemu-Add-check-for-unpriv-sgio-for-SCSI-generic-host-device.patch
+++ b/SOURCES/libvirt-RHEL-qemu-Add-check-for-unpriv-sgio-for-SCSI-generic-host-device.patch
@@ -1,5 +1,5 @@
-From 5a192657ad4e08fc773fef90c6b07df3620fa1c2 Mon Sep 17 00:00:00 2001
-Message-Id: <5a192657ad4e08fc773fef90c6b07df3620fa1c2@dist-git>
+From 5a3113135bcbf5170033c9ef11cbbc320ad47d7d Mon Sep 17 00:00:00 2001
+Message-Id: <5a3113135bcbf5170033c9ef11cbbc320ad47d7d@dist-git>
From: John Ferlan
Date: Mon, 17 Dec 2018 20:42:31 -0500
Subject: [PATCH] RHEL: qemu: Add check for unpriv sgio for SCSI generic host
@@ -19,23 +19,22 @@ This restores functionality removed by upstream commit id 'ce346623'
to remove sgio support for the SCSI generic host device.
Signed-off-by: John Ferlan
+Signed-off-by: Ján Tomko
Signed-off-by: Jiri Denemark
-(cherry picked from commit 712005bcf26190dc6fd1fe56283377987909cc4b)
-Reviewed-by: Ján Tomko
---
src/qemu/qemu_conf.c | 20 ++++++++++++++++++--
1 file changed, 18 insertions(+), 2 deletions(-)
diff --git a/src/qemu/qemu_conf.c b/src/qemu/qemu_conf.c
-index ce7869e6be..2a84972fd9 100644
+index a749fc1bbc..2beef89cd1 100644
--- a/src/qemu/qemu_conf.c
+++ b/src/qemu/qemu_conf.c
-@@ -1717,13 +1717,29 @@ qemuSharedHostdevAddRemoveInternal(virQEMUDriverPtr driver,
+@@ -1743,13 +1743,29 @@ qemuSharedHostdevAddRemoveInternal(virQEMUDriver *driver,
{
g_autofree char *dev_path = NULL;
g_autofree char *key = NULL;
-+ virDomainHostdevSubsysSCSIPtr scsisrc = &hostdev->source.subsys.u.scsi;
-+ virDomainHostdevSubsysSCSIHostPtr scsihostsrc = &scsisrc->u.host;
++ virDomainHostdevSubsysSCSI *scsisrc = &hostdev->source.subsys.u.scsi;
++ virDomainHostdevSubsysSCSIHost *scsihostsrc = &scsisrc->u.host;
int ret = -1;
if (!qemuIsSharedHostdev(hostdev))
@@ -63,5 +62,5 @@ index ce7869e6be..2a84972fd9 100644
qemuDriverLock(driver);
--
-2.25.0
+2.32.0
diff --git a/SOURCES/libvirt-RHEL-qemu-Alter-qemuSetUnprivSGIO-hostdev-shareable-logic.patch b/SOURCES/libvirt-RHEL-qemu-Alter-qemuSetUnprivSGIO-hostdev-shareable-logic.patch
deleted file mode 100644
index 2b30707..0000000
--- a/SOURCES/libvirt-RHEL-qemu-Alter-qemuSetUnprivSGIO-hostdev-shareable-logic.patch
+++ /dev/null
@@ -1,53 +0,0 @@
-From e79d54ff8e760ac1a200a37fb05cc9aa758c48d3 Mon Sep 17 00:00:00 2001
-Message-Id:
-From: John Ferlan
-Date: Mon, 17 Dec 2018 20:42:33 -0500
-Subject: [PATCH] RHEL: qemu: Alter qemuSetUnprivSGIO hostdev shareable logic
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-https://bugzilla.redhat.com/show_bug.cgi?id=1656362 (RHEL8)
-https://bugzilla.redhat.com/show_bug.cgi?id=1656360 (RHEL7)
-
-RHEL-only
-
-Fix the logic to handle the case where if the element
-was removed from the domain , then we have to reset the
-SGIO value back to 0. Without this patch the check for not shareable
-and return 0 would bypass resetting the value back to 0.
-
-Signed-off-by: John Ferlan
-Reviewed-by: Ján Tomko
----
- src/qemu/qemu_conf.c | 7 +++----
- 1 file changed, 3 insertions(+), 4 deletions(-)
-
-diff --git a/src/qemu/qemu_conf.c b/src/qemu/qemu_conf.c
-index faabc4d49f..590052b035 100644
---- a/src/qemu/qemu_conf.c
-+++ b/src/qemu/qemu_conf.c
-@@ -1844,9 +1844,6 @@ qemuSetUnprivSGIO(virDomainDeviceDefPtr dev)
- } else if (dev->type == VIR_DOMAIN_DEVICE_HOSTDEV) {
- hostdev = dev->data.hostdev;
-
-- if (!qemuIsSharedHostdev(hostdev))
-- return 0;
--
- if (!(hostdev_path = qemuGetHostdevPath(hostdev)))
- return -1;
-
-@@ -1863,7 +1860,9 @@ qemuSetUnprivSGIO(virDomainDeviceDefPtr dev)
- disk->sgio == VIR_DOMAIN_DEVICE_SGIO_UNFILTERED) {
- val = 1;
- } else {
-- if (hostdev->source.subsys.u.scsi.sgio ==
-+ /* Only settable if was present for hostdev */
-+ if (qemuIsSharedHostdev(hostdev) &&
-+ hostdev->source.subsys.u.scsi.sgio ==
- VIR_DOMAIN_DEVICE_SGIO_UNFILTERED)
- val = 1;
- }
---
-2.25.0
-
diff --git a/SOURCES/libvirt-RHEL-qemu-Alter-val-usage-in-qemuSetUnprivSGIO.patch b/SOURCES/libvirt-RHEL-qemu-Alter-val-usage-in-qemuSetUnprivSGIO.patch
deleted file mode 100644
index 850b5ab..0000000
--- a/SOURCES/libvirt-RHEL-qemu-Alter-val-usage-in-qemuSetUnprivSGIO.patch
+++ /dev/null
@@ -1,60 +0,0 @@
-From fa46b5b4d5bb732462d0d5484cc010aa652d821b Mon Sep 17 00:00:00 2001
-Message-Id:
-From: John Ferlan
-Date: Mon, 17 Dec 2018 20:42:32 -0500
-Subject: [PATCH] RHEL: qemu: Alter @val usage in qemuSetUnprivSGIO
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-https://bugzilla.redhat.com/show_bug.cgi?id=1656362 (RHEL8)
-https://bugzilla.redhat.com/show_bug.cgi?id=1656360 (RHEL7)
-
-RHEL-only
-
-Rather than initializing to -1 and then setting to the result
-of a boolean check (either 0 or 1), let's just initialize @val
-to 0 and then only change to 1 if conditions are "right".
-
-Signed-off-by: John Ferlan
-Reviewed-by: Ján Tomko
----
- src/qemu/qemu_conf.c | 15 +++++++++------
- 1 file changed, 9 insertions(+), 6 deletions(-)
-
-diff --git a/src/qemu/qemu_conf.c b/src/qemu/qemu_conf.c
-index 2a84972fd9..faabc4d49f 100644
---- a/src/qemu/qemu_conf.c
-+++ b/src/qemu/qemu_conf.c
-@@ -1828,7 +1828,7 @@ qemuSetUnprivSGIO(virDomainDeviceDefPtr dev)
- g_autofree char *sysfs_path = NULL;
- g_autofree char *hostdev_path = NULL;
- const char *path = NULL;
-- int val = -1;
-+ int val = 0;
-
- /* "sgio" is only valid for block disk; cdrom
- * and floopy disk can have empty source.
-@@ -1859,11 +1859,14 @@ qemuSetUnprivSGIO(virDomainDeviceDefPtr dev)
- return -1;
-
- /* By default, filter the SG_IO commands, i.e. set unpriv_sgio to 0. */
-- if (dev->type == VIR_DOMAIN_DEVICE_DISK)
-- val = (disk->sgio == VIR_DOMAIN_DEVICE_SGIO_UNFILTERED);
-- else
-- val = (hostdev->source.subsys.u.scsi.sgio ==
-- VIR_DOMAIN_DEVICE_SGIO_UNFILTERED);
-+ if (dev->type == VIR_DOMAIN_DEVICE_DISK &&
-+ disk->sgio == VIR_DOMAIN_DEVICE_SGIO_UNFILTERED) {
-+ val = 1;
-+ } else {
-+ if (hostdev->source.subsys.u.scsi.sgio ==
-+ VIR_DOMAIN_DEVICE_SGIO_UNFILTERED)
-+ val = 1;
-+ }
-
- /* Do not do anything if unpriv_sgio is not supported by the kernel and the
- * whitelist is enabled. But if requesting unfiltered access, always call
---
-2.25.0
-
diff --git a/SOURCES/libvirt-RHEL-qemu-Fix-crash-trying-to-use-iSCSI-hostdev.patch b/SOURCES/libvirt-RHEL-qemu-Fix-crash-trying-to-use-iSCSI-hostdev.patch
deleted file mode 100644
index e0bc6a1..0000000
--- a/SOURCES/libvirt-RHEL-qemu-Fix-crash-trying-to-use-iSCSI-hostdev.patch
+++ /dev/null
@@ -1,45 +0,0 @@
-From 163740bff28c6f1a82663bc652f2cd5df39e4276 Mon Sep 17 00:00:00 2001
-Message-Id: <163740bff28c6f1a82663bc652f2cd5df39e4276@dist-git>
-From: John Ferlan
-Date: Fri, 25 Jan 2019 12:19:12 -0500
-Subject: [PATCH] RHEL: qemu: Fix crash trying to use iSCSI hostdev
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-https://bugzilla.redhat.com/show_bug.cgi?id=1669424
-https://bugzilla.redhat.com/show_bug.cgi?id=1669966
-
-RHEL-only
-
-Commit 861a1a4d2 moved the qemuIsSharedHostdev filter in the
-HOSTDEV half of the logic to allow calling qemuGetHostdevPath;
-however, that neglected to check whether the SCSI hostdev was
-using the iSCSI protocol which has a different overlayed struct
-format (u.iscsi vs. u.host) resulting in attempted access of
-u.host when calling virSCSIDeviceGetDevName.
-
-Signed-off-by: John Ferlan
-Reviewed-by: Ján Tomko
----
- src/qemu/qemu_conf.c | 4 ++++
- 1 file changed, 4 insertions(+)
-
-diff --git a/src/qemu/qemu_conf.c b/src/qemu/qemu_conf.c
-index 0674292fab..3d2f0e7bbb 100644
---- a/src/qemu/qemu_conf.c
-+++ b/src/qemu/qemu_conf.c
-@@ -1844,6 +1844,10 @@ qemuSetUnprivSGIO(virDomainDeviceDefPtr dev)
- } else if (dev->type == VIR_DOMAIN_DEVICE_HOSTDEV) {
- hostdev = dev->data.hostdev;
-
-+ if (hostdev->source.subsys.u.scsi.protocol ==
-+ VIR_DOMAIN_HOSTDEV_SCSI_PROTOCOL_TYPE_ISCSI)
-+ return 0;
-+
- if (!(hostdev_path = qemuGetHostdevPath(hostdev)))
- return -1;
-
---
-2.25.0
-
diff --git a/SOURCES/libvirt-RHEL-qemu-Fix-logic-error-in-qemuSetUnprivSGIO.patch b/SOURCES/libvirt-RHEL-qemu-Fix-logic-error-in-qemuSetUnprivSGIO.patch
deleted file mode 100644
index b4d84ed..0000000
--- a/SOURCES/libvirt-RHEL-qemu-Fix-logic-error-in-qemuSetUnprivSGIO.patch
+++ /dev/null
@@ -1,59 +0,0 @@
-From f6a05ac3cb33c473de8ed49b53d22910fc0140df Mon Sep 17 00:00:00 2001
-Message-Id:
-From: John Ferlan
-Date: Wed, 16 Jan 2019 15:54:31 -0500
-Subject: [PATCH] RHEL: qemu: Fix logic error in qemuSetUnprivSGIO
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-https://bugzilla.redhat.com/show_bug.cgi?id=1666605
-
-RHEL-only
-
-Commit c0f26a13c6 had a logic error with using both DISK and
-sgio which resulted in a DISK that didn't have sgio set falling
-into the else clause and trying to deref a NULL @hostdev resulting
-in a libvirtd crash:
-
-Thread 1 (Thread 0x7ffbc6353700 (LWP 12642)):
- 0 0x00007ffb958e7d7a in qemuSetUnprivSGIO
- 1 0x00007ffb958d9d92 in qemuDomainAttachDeviceDiskLive
- 2 0x00007ffb9594fce8 in qemuDomainAttachDeviceFlags
- 3 0x00007ffbde399d71 in virDomainAttachDevice
- 4 0x0000563b73ded4b2 in remoteDispatchDomainAttachDeviceHelper
-
-for hotplug of XML:
-
-
-
-
-
-
-
-Signed-off-by: John Ferlan
-Reviewed-by: Ján Tomko
----
- src/qemu/qemu_conf.c | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/src/qemu/qemu_conf.c b/src/qemu/qemu_conf.c
-index 590052b035..0674292fab 100644
---- a/src/qemu/qemu_conf.c
-+++ b/src/qemu/qemu_conf.c
-@@ -1856,9 +1856,9 @@ qemuSetUnprivSGIO(virDomainDeviceDefPtr dev)
- return -1;
-
- /* By default, filter the SG_IO commands, i.e. set unpriv_sgio to 0. */
-- if (dev->type == VIR_DOMAIN_DEVICE_DISK &&
-- disk->sgio == VIR_DOMAIN_DEVICE_SGIO_UNFILTERED) {
-- val = 1;
-+ if (dev->type == VIR_DOMAIN_DEVICE_DISK) {
-+ if (disk->sgio == VIR_DOMAIN_DEVICE_SGIO_UNFILTERED)
-+ val = 1;
- } else {
- /* Only settable if was present for hostdev */
- if (qemuIsSharedHostdev(hostdev) &&
---
-2.25.0
-
diff --git a/SOURCES/libvirt-RHEL-qemuCheckUnprivSGIO-use-sysfs_path-to-get-unpriv_sgio.patch b/SOURCES/libvirt-RHEL-qemuCheckUnprivSGIO-use-sysfs_path-to-get-unpriv_sgio.patch
deleted file mode 100644
index d9855b0..0000000
--- a/SOURCES/libvirt-RHEL-qemuCheckUnprivSGIO-use-sysfs_path-to-get-unpriv_sgio.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-From ef5a82d50464478a302cb59804d03e4a3dada83e Mon Sep 17 00:00:00 2001
-Message-Id:
-From: =?UTF-8?q?J=C3=A1n=20Tomko?=
-Date: Fri, 6 Mar 2020 15:52:26 +0100
-Subject: [PATCH] RHEL: qemuCheckUnprivSGIO: use @sysfs_path to get unpriv_sgio
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Downstream commit 65f4ff0e2c9a968b7ec65c8d751d4055cc212628
- RHEL: qemuSetUnprivSGIO: Actually use calculated
- @sysfs_path to set unpriv_sgio
-removed the device_path -> sysfs_path conversion from
-both virGetDeviceUnprivSGIO and virSetDeviceUnprivSGIO,
-but only adjusted one of the callers.
-
-https://bugzilla.redhat.com/show_bug.cgi?id=1808400
-
-Signed-off-by: Ján Tomko
-Signed-off-by: Andrea Bolognani
-Message-Id: <20200306145226.1610708-7-abologna@redhat.com>
-Reviewed-by: Jiri Denemark
----
- src/qemu/qemu_conf.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/qemu/qemu_conf.c b/src/qemu/qemu_conf.c
-index b61d7e59fa..6a22d78ac6 100644
---- a/src/qemu/qemu_conf.c
-+++ b/src/qemu/qemu_conf.c
-@@ -1430,7 +1430,7 @@ qemuCheckUnprivSGIO(virHashTablePtr sharedDevices,
- if (!(virHashLookup(sharedDevices, key)))
- return 0;
-
-- if (virGetDeviceUnprivSGIO(device_path, &val) < 0)
-+ if (virGetDeviceUnprivSGIO(sysfs_path, &val) < 0)
- return -1;
-
- /* Error message on failure needs to be handled in caller
---
-2.25.1
-
diff --git a/SOURCES/libvirt-RHEL-qemuSetUnprivSGIO-Actually-use-calculated-sysfs_path-to-set-unpriv_sgio.patch b/SOURCES/libvirt-RHEL-qemuSetUnprivSGIO-Actually-use-calculated-sysfs_path-to-set-unpriv_sgio.patch
deleted file mode 100644
index b4ed1ae..0000000
--- a/SOURCES/libvirt-RHEL-qemuSetUnprivSGIO-Actually-use-calculated-sysfs_path-to-set-unpriv_sgio.patch
+++ /dev/null
@@ -1,170 +0,0 @@
-From 717423e7a452b0715e95b492b15dc08983677d12 Mon Sep 17 00:00:00 2001
-Message-Id: <717423e7a452b0715e95b492b15dc08983677d12@dist-git>
-From: Michal Privoznik
-Date: Fri, 6 Mar 2020 15:52:25 +0100
-Subject: [PATCH] RHEL: qemuSetUnprivSGIO: Actually use calculated @sysfs_path
- to set unpriv_sgio
-
-In previous commits I've attempted to make qemuSetUnprivSGIO()
-construct a generic enough path for SCSI devices to set
-unpriv_sgio. However, virSetDeviceUnprivSGIO() does not care
-about that - it constructs the path on it's own again. This is
-suboptimal in either case - we already have the path constructed.
-
-https://bugzilla.redhat.com/show_bug.cgi?id=1808390
-
-Signed-off-by: Michal Privoznik
-Signed-off-by: Andrea Bolognani
-Message-Id: <20200306145226.1610708-6-abologna@redhat.com>
-Reviewed-by: Jiri Denemark
----
- src/qemu/qemu_conf.c | 8 +++-----
- src/util/virutil.c | 24 ++++++------------------
- src/util/virutil.h | 2 --
- 3 files changed, 9 insertions(+), 25 deletions(-)
-
-diff --git a/src/qemu/qemu_conf.c b/src/qemu/qemu_conf.c
-index 6d6feb97cd..b61d7e59fa 100644
---- a/src/qemu/qemu_conf.c
-+++ b/src/qemu/qemu_conf.c
-@@ -1430,7 +1430,7 @@ qemuCheckUnprivSGIO(virHashTablePtr sharedDevices,
- if (!(virHashLookup(sharedDevices, key)))
- return 0;
-
-- if (virGetDeviceUnprivSGIO(device_path, NULL, &val) < 0)
-+ if (virGetDeviceUnprivSGIO(device_path, &val) < 0)
- return -1;
-
- /* Error message on failure needs to be handled in caller
-@@ -1789,7 +1789,6 @@ qemuSetUnprivSGIO(virDomainDeviceDefPtr dev)
- virDomainDiskDefPtr disk = NULL;
- virDomainHostdevDefPtr hostdev = NULL;
- g_autofree char *sysfs_path = NULL;
-- const char *path = NULL;
- int val = 0;
-
- /* "sgio" is only valid for block disk; cdrom
-@@ -1797,13 +1796,12 @@ qemuSetUnprivSGIO(virDomainDeviceDefPtr dev)
- */
- if (dev->type == VIR_DOMAIN_DEVICE_DISK) {
- disk = dev->data.disk;
-+ const char *path = virDomainDiskGetSource(disk);
-
- if (disk->device != VIR_DOMAIN_DISK_DEVICE_LUN ||
- !virStorageSourceIsBlockLocal(disk->src))
- return 0;
-
-- path = virDomainDiskGetSource(disk);
--
- if (!(sysfs_path = virGetUnprivSGIOSysfsPath(path, NULL)))
- return -1;
-
-@@ -1843,7 +1841,7 @@ qemuSetUnprivSGIO(virDomainDeviceDefPtr dev)
- * virSetDeviceUnprivSGIO, to report an error for unsupported unpriv_sgio.
- */
- if ((virFileExists(sysfs_path) || val == 1) &&
-- virSetDeviceUnprivSGIO(path, NULL, val) < 0)
-+ virSetDeviceUnprivSGIO(sysfs_path, val) < 0)
- return -1;
-
- return 0;
-diff --git a/src/util/virutil.c b/src/util/virutil.c
-index f142951acf..4198473fce 100644
---- a/src/util/virutil.c
-+++ b/src/util/virutil.c
-@@ -1421,18 +1421,13 @@ virGetUnprivSGIOSysfsPath(const char *path,
-
- int
- virSetDeviceUnprivSGIO(const char *path,
-- const char *sysfs_dir,
- int unpriv_sgio)
- {
-- char *sysfs_path = NULL;
- char *val = NULL;
- int ret = -1;
- int rc;
-
-- if (!(sysfs_path = virGetUnprivSGIOSysfsPath(path, sysfs_dir)))
-- return -1;
--
-- if (!virFileExists(sysfs_path)) {
-+ if (!virFileExists(path)) {
- virReportError(VIR_ERR_OPERATION_INVALID, "%s",
- _("unpriv_sgio is not supported by this kernel"));
- goto cleanup;
-@@ -1440,38 +1435,32 @@ virSetDeviceUnprivSGIO(const char *path,
-
- val = g_strdup_printf("%d", unpriv_sgio);
-
-- if ((rc = virFileWriteStr(sysfs_path, val, 0)) < 0) {
-- virReportSystemError(-rc, _("failed to set %s"), sysfs_path);
-+ if ((rc = virFileWriteStr(path, val, 0)) < 0) {
-+ virReportSystemError(-rc, _("failed to set %s"), path);
- goto cleanup;
- }
-
- ret = 0;
- cleanup:
-- VIR_FREE(sysfs_path);
- VIR_FREE(val);
- return ret;
- }
-
- int
- virGetDeviceUnprivSGIO(const char *path,
-- const char *sysfs_dir,
- int *unpriv_sgio)
- {
-- char *sysfs_path = NULL;
- char *buf = NULL;
- char *tmp = NULL;
- int ret = -1;
-
-- if (!(sysfs_path = virGetUnprivSGIOSysfsPath(path, sysfs_dir)))
-- return -1;
--
-- if (!virFileExists(sysfs_path)) {
-+ if (!virFileExists(path)) {
- virReportError(VIR_ERR_OPERATION_INVALID, "%s",
- _("unpriv_sgio is not supported by this kernel"));
- goto cleanup;
- }
-
-- if (virFileReadAll(sysfs_path, 1024, &buf) < 0)
-+ if (virFileReadAll(path, 1024, &buf) < 0)
- goto cleanup;
-
- if ((tmp = strchr(buf, '\n')))
-@@ -1479,13 +1468,12 @@ virGetDeviceUnprivSGIO(const char *path,
-
- if (virStrToLong_i(buf, NULL, 10, unpriv_sgio) < 0) {
- virReportError(VIR_ERR_INTERNAL_ERROR,
-- _("failed to parse value of %s"), sysfs_path);
-+ _("failed to parse value of %s"), path);
- goto cleanup;
- }
-
- ret = 0;
- cleanup:
-- VIR_FREE(sysfs_path);
- VIR_FREE(buf);
- return ret;
- }
-diff --git a/src/util/virutil.h b/src/util/virutil.h
-index 1a6ae1787a..a2530e21b5 100644
---- a/src/util/virutil.h
-+++ b/src/util/virutil.h
-@@ -124,10 +124,8 @@ int virGetDeviceID(const char *path,
- int *maj,
- int *min);
- int virSetDeviceUnprivSGIO(const char *path,
-- const char *sysfs_dir,
- int unpriv_sgio);
- int virGetDeviceUnprivSGIO(const char *path,
-- const char *sysfs_dir,
- int *unpriv_sgio);
- char *virGetUnprivSGIOSysfsPath(const char *path,
- const char *sysfs_dir);
---
-2.25.1
-
diff --git a/SOURCES/libvirt-RHEL-virscsi-Check-device-type-before-getting-it-s-dev-node-name.patch b/SOURCES/libvirt-RHEL-virscsi-Check-device-type-before-getting-it-s-dev-node-name.patch
index f371ff8..0367ce9 100644
--- a/SOURCES/libvirt-RHEL-virscsi-Check-device-type-before-getting-it-s-dev-node-name.patch
+++ b/SOURCES/libvirt-RHEL-virscsi-Check-device-type-before-getting-it-s-dev-node-name.patch
@@ -1,5 +1,5 @@
-From f66beef45382be2aed6d021a409e90f8114c8671 Mon Sep 17 00:00:00 2001
-Message-Id:
+From 5488481a03dc8dfcbb99df263b3206e65fa8f4fa Mon Sep 17 00:00:00 2001
+Message-Id: <5488481a03dc8dfcbb99df263b3206e65fa8f4fa@dist-git>
From: Michal Privoznik
Date: Fri, 6 Mar 2020 15:52:21 +0100
Subject: [PATCH] RHEL: virscsi: Check device type before getting it's /dev
@@ -16,20 +16,20 @@ Signed-off-by: Andrea Bolognani
Message-Id: <20200306145226.1610708-2-abologna@redhat.com>
Reviewed-by: Jiri Denemark
---
- src/util/virscsi.c | 146 ++++++++++++++++++++++++++++++---
+ src/util/virscsi.c | 140 ++++++++++++++++++++++++++++++---
tests/virscsidata/0-0-0-0/type | 1 +
tests/virscsidata/1-0-0-0/type | 1 +
- 3 files changed, 137 insertions(+), 11 deletions(-)
+ 3 files changed, 131 insertions(+), 11 deletions(-)
create mode 100644 tests/virscsidata/0-0-0-0/type
create mode 100644 tests/virscsidata/1-0-0-0/type
diff --git a/src/util/virscsi.c b/src/util/virscsi.c
-index 06659c45c7..c40857977f 100644
+index b1f202eef1..3d68f829e4 100644
--- a/src/util/virscsi.c
+++ b/src/util/virscsi.c
-@@ -50,6 +50,32 @@ struct _virUsedByInfo {
+@@ -47,6 +47,32 @@ struct _virUsedByInfo {
+ };
typedef struct _virUsedByInfo virUsedByInfo;
- typedef virUsedByInfo *virUsedByInfoPtr;
+
+/* Keep in sync with scsi/scsi_proto.h */
@@ -60,8 +60,8 @@ index 06659c45c7..c40857977f 100644
struct _virSCSIDevice {
unsigned int adapter;
unsigned int bus;
-@@ -134,6 +160,84 @@ virSCSIDeviceGetSgName(const char *sysfs_prefix,
- return sg;
+@@ -126,6 +152,78 @@ virSCSIDeviceGetSgName(const char *sysfs_prefix,
+ return NULL;
}
+
@@ -119,40 +119,33 @@ index 06659c45c7..c40857977f 100644
+ unsigned int target,
+ unsigned long long unit)
+{
-+ DIR *dir = NULL;
++ g_autoptr(DIR) dir = NULL;
+ struct dirent *entry;
+ g_autofree char *path = NULL;
-+ char *name = NULL;
+
+ path = g_strdup_printf("%s/%d:%u:%u:%llu/block",
+ prefix, adapter, bus, target, unit);
+
+ if (virDirOpen(&dir, path) < 0)
-+ goto cleanup;
-+
-+ while (virDirRead(dir, &entry, path) > 0) {
-+ name = g_strdup(entry->d_name);
-+ break;
-+ }
++ return NULL;
+
-+ cleanup:
-+ VIR_DIR_CLOSE(dir);
++ if (virDirRead(dir, &entry, path) > 0)
++ return g_strdup(entry->d_name);
+
-+ return name;
++ return NULL;
+}
+
+
/* Returns device name (e.g. "sdc") on success, or NULL
* on failure.
*/
-@@ -144,32 +248,52 @@ virSCSIDeviceGetDevName(const char *sysfs_prefix,
+@@ -136,25 +234,45 @@ virSCSIDeviceGetDevName(const char *sysfs_prefix,
unsigned int target,
unsigned long long unit)
{
-- DIR *dir = NULL;
+- g_autoptr(DIR) dir = NULL;
- struct dirent *entry;
- g_autofree char *path = NULL;
- char *name = NULL;
unsigned int adapter_id;
+ virSCSIDeviceType type;
const char *prefix = sysfs_prefix ? sysfs_prefix : SYSFS_SCSI_DEVICES;
@@ -162,19 +155,20 @@ index 06659c45c7..c40857977f 100644
- path = g_strdup_printf("%s/%d:%u:%u:%llu/block", prefix, adapter_id, bus,
- target, unit);
+-
+- if (virDirOpen(&dir, path) < 0)
+ if (virSCSIDeviceGetType(prefix, adapter_id,
+ bus, target, unit, &type) < 0)
-+ return NULL;
+ return NULL;
-- if (virDirOpen(&dir, path) < 0)
-- goto cleanup;
+- if (virDirRead(dir, &entry, path) > 0)
+- return g_strdup(entry->d_name);
+-
+- return NULL;
+ switch (type) {
+ case VIR_SCSI_DEVICE_TYPE_DISK:
-+ name = virSCSIDeviceGetDevNameBlock(prefix, adapter_id, bus, target, unit);
-+ break;
-
-- while (virDirRead(dir, &entry, path) > 0) {
-- name = g_strdup(entry->d_name);
++ return virSCSIDeviceGetDevNameBlock(prefix, adapter_id, bus, target, unit);
++
+ case VIR_SCSI_DEVICE_TYPE_TAPE:
+ case VIR_SCSI_DEVICE_TYPE_PRINTER:
+ case VIR_SCSI_DEVICE_TYPE_PROCESSOR:
@@ -197,18 +191,11 @@ index 06659c45c7..c40857977f 100644
+ virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
+ _("unsupported SCSI device type: %x"),
+ type);
- break;
- }
-
-- cleanup:
-- VIR_DIR_CLOSE(dir);
- return name;
++ return NULL;
++ }
}
-+
- virSCSIDevicePtr
- virSCSIDeviceNew(const char *sysfs_prefix,
- const char *adapter,
+ virSCSIDevice *
diff --git a/tests/virscsidata/0-0-0-0/type b/tests/virscsidata/0-0-0-0/type
new file mode 100644
index 0000000000..573541ac97
@@ -224,5 +211,5 @@ index 0000000000..573541ac97
@@ -0,0 +1 @@
+0
--
-2.25.1
+2.32.0
diff --git a/SOURCES/libvirt-RHEL-virscsi-Introduce-and-use-virSCSIDeviceGetUnprivSGIOSysfsPath.patch b/SOURCES/libvirt-RHEL-virscsi-Introduce-and-use-virSCSIDeviceGetUnprivSGIOSysfsPath.patch
index 5feb8f5..41272ea 100644
--- a/SOURCES/libvirt-RHEL-virscsi-Introduce-and-use-virSCSIDeviceGetUnprivSGIOSysfsPath.patch
+++ b/SOURCES/libvirt-RHEL-virscsi-Introduce-and-use-virSCSIDeviceGetUnprivSGIOSysfsPath.patch
@@ -1,5 +1,5 @@
-From c9fc757c867d197c17350b6a9cabc63cc08105d2 Mon Sep 17 00:00:00 2001
-Message-Id:
+From 27dee7b5a4152ceea00662a6f112c994d7f2b818 Mon Sep 17 00:00:00 2001
+Message-Id: <27dee7b5a4152ceea00662a6f112c994d7f2b818@dist-git>
From: Michal Privoznik
Date: Fri, 6 Mar 2020 15:52:23 +0100
Subject: [PATCH] RHEL: virscsi: Introduce and use
@@ -22,16 +22,18 @@ Message-Id: <20200306145226.1610708-4-abologna@redhat.com>
Reviewed-by: Jiri Denemark
---
src/libvirt_private.syms | 1 +
- src/qemu/qemu_conf.c | 18 +++++++++++-------
- src/util/virscsi.c | 18 ++++++++++++++++++
+ src/qemu/qemu_conf.c | 29 ++++++++++++++++++-----------
+ src/util/virscsi.c | 19 +++++++++++++++++++
src/util/virscsi.h | 5 +++++
- 4 files changed, 35 insertions(+), 7 deletions(-)
+ src/util/virutil.c | 24 ++++++------------------
+ src/util/virutil.h | 2 --
+ 6 files changed, 49 insertions(+), 31 deletions(-)
diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms
-index 5dc99e03cf..1f97879faa 100644
+index 43493ea76e..0f701ed1ae 100644
--- a/src/libvirt_private.syms
+++ b/src/libvirt_private.syms
-@@ -2959,6 +2959,7 @@ virSCSIDeviceGetSgName;
+@@ -3168,6 +3168,7 @@ virSCSIDeviceGetSgName;
virSCSIDeviceGetShareable;
virSCSIDeviceGetTarget;
virSCSIDeviceGetUnit;
@@ -40,29 +42,50 @@ index 5dc99e03cf..1f97879faa 100644
virSCSIDeviceListAdd;
virSCSIDeviceListCount;
diff --git a/src/qemu/qemu_conf.c b/src/qemu/qemu_conf.c
-index 7aaf2862a4..6d6feb97cd 100644
+index 2beef89cd1..90ff7f56f0 100644
--- a/src/qemu/qemu_conf.c
+++ b/src/qemu/qemu_conf.c
-@@ -1789,7 +1789,6 @@ qemuSetUnprivSGIO(virDomainDeviceDefPtr dev)
- virDomainDiskDefPtr disk = NULL;
- virDomainHostdevDefPtr hostdev = NULL;
+@@ -1500,7 +1500,7 @@ qemuCheckUnprivSGIO(GHashTable *sharedDevices,
+ if (!(virHashLookup(sharedDevices, key)))
+ return 0;
+
+- if (virGetDeviceUnprivSGIO(device_path, NULL, &val) < 0)
++ if (virGetDeviceUnprivSGIO(sysfs_path, &val) < 0)
+ return -1;
+
+ /* Error message on failure needs to be handled in caller
+@@ -1852,39 +1852,46 @@ qemuSetUnprivSGIO(virDomainDeviceDef *dev)
+ virDomainDiskDef *disk = NULL;
+ virDomainHostdevDef *hostdev = NULL;
g_autofree char *sysfs_path = NULL;
- g_autofree char *hostdev_path = NULL;
- const char *path = NULL;
+- const char *path = NULL;
int val = 0;
-@@ -1804,24 +1803,29 @@ qemuSetUnprivSGIO(virDomainDeviceDefPtr dev)
+ /* "sgio" is only valid for block disk; cdrom
+ * and floopy disk can have empty source.
+ */
+ if (dev->type == VIR_DOMAIN_DEVICE_DISK) {
++ const char *path;
++
+ disk = dev->data.disk;
++ path = virDomainDiskGetSource(disk);
+
+ if (disk->device != VIR_DOMAIN_DISK_DEVICE_LUN ||
+ !virStorageSourceIsBlockLocal(disk->src))
return 0;
- path = virDomainDiskGetSource(disk);
-+
+- path = virDomainDiskGetSource(disk);
+ if (!(sysfs_path = virGetUnprivSGIOSysfsPath(path, NULL)))
+ return -1;
+
} else if (dev->type == VIR_DOMAIN_DEVICE_HOSTDEV) {
++ virDomainHostdevSubsysSCSI *scsisrc;
++ virDomainHostdevSubsysSCSIHost *scsihostsrc;
++
hostdev = dev->data.hostdev;
-+ virDomainHostdevSubsysSCSIPtr scsisrc = &hostdev->source.subsys.u.scsi;
-+ virDomainHostdevSubsysSCSIHostPtr scsihostsrc = &scsisrc->u.host;
++ scsisrc = &hostdev->source.subsys.u.scsi;
++ scsihostsrc = &scsisrc->u.host;
if (hostdev->source.subsys.u.scsi.protocol ==
VIR_DOMAIN_HOSTDEV_SCSI_PROTOCOL_TYPE_ISCSI)
@@ -87,14 +110,24 @@ index 7aaf2862a4..6d6feb97cd 100644
/* By default, filter the SG_IO commands, i.e. set unpriv_sgio to 0. */
if (dev->type == VIR_DOMAIN_DEVICE_DISK) {
if (disk->sgio == VIR_DOMAIN_DEVICE_SGIO_UNFILTERED)
+@@ -1902,7 +1909,7 @@ qemuSetUnprivSGIO(virDomainDeviceDef *dev)
+ * virSetDeviceUnprivSGIO, to report an error for unsupported unpriv_sgio.
+ */
+ if ((virFileExists(sysfs_path) || val == 1) &&
+- virSetDeviceUnprivSGIO(path, NULL, val) < 0)
++ virSetDeviceUnprivSGIO(sysfs_path, val) < 0)
+ return -1;
+
+ return 0;
diff --git a/src/util/virscsi.c b/src/util/virscsi.c
-index 57958c06ea..1bba4051b6 100644
+index d6c10c0667..7a8e6b3b23 100644
--- a/src/util/virscsi.c
+++ b/src/util/virscsi.c
-@@ -322,6 +322,24 @@ virSCSIDeviceGetDevName(const char *sysfs_prefix,
+@@ -302,6 +302,25 @@ virSCSIDeviceGetDevName(const char *sysfs_prefix,
+ }
}
-
++
+char *
+virSCSIDeviceGetUnprivSGIOSysfsPath(const char *sysfs_prefix,
+ const char *adapter,
@@ -113,14 +146,14 @@ index 57958c06ea..1bba4051b6 100644
+}
+
+
- virSCSIDevicePtr
+ virSCSIDevice *
virSCSIDeviceNew(const char *sysfs_prefix,
const char *adapter,
diff --git a/src/util/virscsi.h b/src/util/virscsi.h
-index 51627e0c05..c040d76716 100644
+index 65ad15ed76..5721985939 100644
--- a/src/util/virscsi.h
+++ b/src/util/virscsi.h
-@@ -42,6 +42,11 @@ char *virSCSIDeviceGetDevName(const char *sysfs_prefix,
+@@ -40,6 +40,11 @@ char *virSCSIDeviceGetDevName(const char *sysfs_prefix,
unsigned int bus,
unsigned int target,
unsigned long long unit);
@@ -130,8 +163,105 @@ index 51627e0c05..c040d76716 100644
+ unsigned int target,
+ unsigned long long unit);
- virSCSIDevicePtr virSCSIDeviceNew(const char *sysfs_prefix,
+ virSCSIDevice *virSCSIDeviceNew(const char *sysfs_prefix,
const char *adapter,
+diff --git a/src/util/virutil.c b/src/util/virutil.c
+index 00cd56e2b2..d0fc49c39f 100644
+--- a/src/util/virutil.c
++++ b/src/util/virutil.c
+@@ -1382,18 +1382,13 @@ virGetUnprivSGIOSysfsPath(const char *path,
+
+ int
+ virSetDeviceUnprivSGIO(const char *path,
+- const char *sysfs_dir,
+ int unpriv_sgio)
+ {
+- char *sysfs_path = NULL;
+ char *val = NULL;
+ int ret = -1;
+ int rc;
+
+- if (!(sysfs_path = virGetUnprivSGIOSysfsPath(path, sysfs_dir)))
+- return -1;
+-
+- if (!virFileExists(sysfs_path)) {
++ if (!virFileExists(path)) {
+ virReportError(VIR_ERR_OPERATION_INVALID, "%s",
+ _("unpriv_sgio is not supported by this kernel"));
+ goto cleanup;
+@@ -1401,38 +1396,32 @@ virSetDeviceUnprivSGIO(const char *path,
+
+ val = g_strdup_printf("%d", unpriv_sgio);
+
+- if ((rc = virFileWriteStr(sysfs_path, val, 0)) < 0) {
+- virReportSystemError(-rc, _("failed to set %s"), sysfs_path);
++ if ((rc = virFileWriteStr(path, val, 0)) < 0) {
++ virReportSystemError(-rc, _("failed to set %s"), path);
+ goto cleanup;
+ }
+
+ ret = 0;
+ cleanup:
+- VIR_FREE(sysfs_path);
+ VIR_FREE(val);
+ return ret;
+ }
+
+ int
+ virGetDeviceUnprivSGIO(const char *path,
+- const char *sysfs_dir,
+ int *unpriv_sgio)
+ {
+- char *sysfs_path = NULL;
+ char *buf = NULL;
+ char *tmp = NULL;
+ int ret = -1;
+
+- if (!(sysfs_path = virGetUnprivSGIOSysfsPath(path, sysfs_dir)))
+- return -1;
+-
+- if (!virFileExists(sysfs_path)) {
++ if (!virFileExists(path)) {
+ virReportError(VIR_ERR_OPERATION_INVALID, "%s",
+ _("unpriv_sgio is not supported by this kernel"));
+ goto cleanup;
+ }
+
+- if (virFileReadAll(sysfs_path, 1024, &buf) < 0)
++ if (virFileReadAll(path, 1024, &buf) < 0)
+ goto cleanup;
+
+ if ((tmp = strchr(buf, '\n')))
+@@ -1440,13 +1429,12 @@ virGetDeviceUnprivSGIO(const char *path,
+
+ if (virStrToLong_i(buf, NULL, 10, unpriv_sgio) < 0) {
+ virReportError(VIR_ERR_INTERNAL_ERROR,
+- _("failed to parse value of %s"), sysfs_path);
++ _("failed to parse value of %s"), path);
+ goto cleanup;
+ }
+
+ ret = 0;
+ cleanup:
+- VIR_FREE(sysfs_path);
+ VIR_FREE(buf);
+ return ret;
+ }
+diff --git a/src/util/virutil.h b/src/util/virutil.h
+index 854b494890..da267c6446 100644
+--- a/src/util/virutil.h
++++ b/src/util/virutil.h
+@@ -120,10 +120,8 @@ int virGetDeviceID(const char *path,
+ int *maj,
+ int *min) G_GNUC_NO_INLINE;
+ int virSetDeviceUnprivSGIO(const char *path,
+- const char *sysfs_dir,
+ int unpriv_sgio);
+ int virGetDeviceUnprivSGIO(const char *path,
+- const char *sysfs_dir,
+ int *unpriv_sgio);
+ char *virGetUnprivSGIOSysfsPath(const char *path,
+ const char *sysfs_dir);
--
-2.25.1
+2.32.0
diff --git a/SOURCES/libvirt-RHEL-virscsi-Support-TAPEs-in-virSCSIDeviceGetDevName.patch b/SOURCES/libvirt-RHEL-virscsi-Support-TAPEs-in-virSCSIDeviceGetDevName.patch
index 7724e4d..b46151a 100644
--- a/SOURCES/libvirt-RHEL-virscsi-Support-TAPEs-in-virSCSIDeviceGetDevName.patch
+++ b/SOURCES/libvirt-RHEL-virscsi-Support-TAPEs-in-virSCSIDeviceGetDevName.patch
@@ -1,5 +1,5 @@
-From c481bcacd1f515d2e93036dc452a25e9ff06f7ae Mon Sep 17 00:00:00 2001
-Message-Id:
+From 172cd449d1c757219cbea6e9d94dbff54f28b833 Mon Sep 17 00:00:00 2001
+Message-Id: <172cd449d1c757219cbea6e9d94dbff54f28b833@dist-git>
From: Michal Privoznik
Date: Fri, 6 Mar 2020 15:52:22 +0100
Subject: [PATCH] RHEL: virscsi: Support TAPEs in virSCSIDeviceGetDevName()
@@ -15,7 +15,7 @@ Signed-off-by: Andrea Bolognani
Message-Id: <20200306145226.1610708-3-abologna@redhat.com>
Reviewed-by: Jiri Denemark
---
- src/util/virscsi.c | 28 +++++++++++++++
+ src/util/virscsi.c | 27 +++++++++++++++
tests/virscsidata/2-0-0-0/model | 1 +
tests/virscsidata/2-0-0-0/scsi_tape/st0/dev | 1 +
tests/virscsidata/2-0-0-0/sg3/dev | 1 +
@@ -24,7 +24,7 @@ Reviewed-by: Jiri Denemark
tests/virscsidata/2-0-0-0/vendor | 1 +
tests/virscsidata/sg3 | 0
tests/virscsitest.c | 38 ++++++++++++++++++---
- 9 files changed, 67 insertions(+), 5 deletions(-)
+ 9 files changed, 66 insertions(+), 5 deletions(-)
create mode 100644 tests/virscsidata/2-0-0-0/model
create mode 100644 tests/virscsidata/2-0-0-0/scsi_tape/st0/dev
create mode 100644 tests/virscsidata/2-0-0-0/sg3/dev
@@ -34,10 +34,10 @@ Reviewed-by: Jiri Denemark
create mode 100644 tests/virscsidata/sg3
diff --git a/src/util/virscsi.c b/src/util/virscsi.c
-index c40857977f..57958c06ea 100644
+index 3d68f829e4..d6c10c0667 100644
--- a/src/util/virscsi.c
+++ b/src/util/virscsi.c
-@@ -238,6 +238,31 @@ virSCSIDeviceGetDevNameBlock(const char *prefix,
+@@ -224,6 +224,31 @@ virSCSIDeviceGetDevNameBlock(const char *prefix,
}
@@ -69,12 +69,11 @@ index c40857977f..57958c06ea 100644
/* Returns device name (e.g. "sdc") on success, or NULL
* on failure.
*/
-@@ -266,6 +291,9 @@ virSCSIDeviceGetDevName(const char *sysfs_prefix,
- break;
+@@ -250,6 +275,8 @@ virSCSIDeviceGetDevName(const char *sysfs_prefix,
+ return virSCSIDeviceGetDevNameBlock(prefix, adapter_id, bus, target, unit);
case VIR_SCSI_DEVICE_TYPE_TAPE:
-+ name = virSCSIDeviceGetDevNameTape(prefix, adapter_id, bus, target, unit);
-+ break;
++ return virSCSIDeviceGetDevNameTape(prefix, adapter_id, bus, target, unit);
+
case VIR_SCSI_DEVICE_TYPE_PRINTER:
case VIR_SCSI_DEVICE_TYPE_PROCESSOR:
@@ -126,10 +125,10 @@ diff --git a/tests/virscsidata/sg3 b/tests/virscsidata/sg3
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/tests/virscsitest.c b/tests/virscsitest.c
-index d5a0da4753..e501d6d041 100644
+index 0d7c35a261..0647bb4841 100644
--- a/tests/virscsitest.c
+++ b/tests/virscsitest.c
-@@ -32,18 +32,34 @@ VIR_LOG_INIT("tests.scsitest");
+@@ -33,18 +33,34 @@ VIR_LOG_INIT("tests.scsitest");
static char *virscsi_prefix;
@@ -167,7 +166,7 @@ index d5a0da4753..e501d6d041 100644
ret = 0;
cleanup:
-@@ -212,15 +228,27 @@ mymain(void)
+@@ -213,15 +229,27 @@ mymain(void)
CREATE_SYMLINK("0-0-0-0", "0:0:0:0");
CREATE_SYMLINK("1-0-0-0", "1:0:0:0");
@@ -198,5 +197,5 @@ index d5a0da4753..e501d6d041 100644
ret = -1;
--
-2.25.1
+2.32.0
diff --git a/SOURCES/libvirt-RHEL-virutil-Accept-non-block-devices-in-virGetDeviceID.patch b/SOURCES/libvirt-RHEL-virutil-Accept-non-block-devices-in-virGetDeviceID.patch
index 4568177..dd87c87 100644
--- a/SOURCES/libvirt-RHEL-virutil-Accept-non-block-devices-in-virGetDeviceID.patch
+++ b/SOURCES/libvirt-RHEL-virutil-Accept-non-block-devices-in-virGetDeviceID.patch
@@ -1,5 +1,5 @@
-From cd2640c256389b4041e4cd38fd72f77184bb4414 Mon Sep 17 00:00:00 2001
-Message-Id:
+From 7da0de5b5de0b43e7da21844cad3c643f9f19997 Mon Sep 17 00:00:00 2001
+Message-Id: <7da0de5b5de0b43e7da21844cad3c643f9f19997@dist-git>
From: Michal Privoznik
Date: Fri, 6 Mar 2020 15:52:24 +0100
Subject: [PATCH] RHEL: virutil: Accept non-block devices in virGetDeviceID()
@@ -19,10 +19,10 @@ Reviewed-by: Jiri Denemark
1 file changed, 3 deletions(-)
diff --git a/src/util/virutil.c b/src/util/virutil.c
-index a0fd7618ee..f142951acf 100644
+index d0fc49c39f..0b8d763584 100644
--- a/src/util/virutil.c
+++ b/src/util/virutil.c
-@@ -1379,9 +1379,6 @@ virGetDeviceID(const char *path, int *maj, int *min)
+@@ -1338,9 +1338,6 @@ virGetDeviceID(const char *path, int *maj, int *min)
if (stat(path, &sb) < 0)
return -errno;
@@ -33,5 +33,5 @@ index a0fd7618ee..f142951acf 100644
*maj = major(sb.st_rdev);
if (min)
--
-2.25.1
+2.32.0
diff --git a/SOURCES/libvirt-RNG-Allow-interleaving-of-domain-cpu-numa-cell-children.patch b/SOURCES/libvirt-RNG-Allow-interleaving-of-domain-cpu-numa-cell-children.patch
deleted file mode 100644
index 27fb4b4..0000000
--- a/SOURCES/libvirt-RNG-Allow-interleaving-of-domain-cpu-numa-cell-children.patch
+++ /dev/null
@@ -1,63 +0,0 @@
-From e37b1531942872a229b9f45524ea4679f3b1e8d6 Mon Sep 17 00:00:00 2001
-Message-Id:
-From: Michal Privoznik
-Date: Mon, 9 Nov 2020 17:22:33 +0100
-Subject: [PATCH] RNG: Allow interleaving of /domain/cpu/numa/cell children
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-So far, the | element can have two types of children
-elements: and (which can be repeated more
-times). However, there is no reason to require specific order in
-input XML. Allow elements to be interleaved.
-
-Signed-off-by: Michal Privoznik
-Reviewed-by: Ján Tomko
-(cherry picked from commit fd2ad818b29ca56904dd228f0774f553f99c1157)
-
-Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1749518
-
-Signed-off-by: Michal Privoznik
-Message-Id: <48b8e99ea6fbc6bcab0f7b3d17e7824ef1b232e2.1604938847.git.mprivozn@redhat.com>
-Reviewed-by: Ján Tomko
----
- docs/schemas/cputypes.rng | 22 ++++++++++++----------
- 1 file changed, 12 insertions(+), 10 deletions(-)
-
-diff --git a/docs/schemas/cputypes.rng b/docs/schemas/cputypes.rng
-index ba30dbf9ff..a1cae23161 100644
---- a/docs/schemas/cputypes.rng
-+++ b/docs/schemas/cputypes.rng
-@@ -146,16 +146,18 @@
-
-
-
--
--
--
--
--
--
--
--
--
--
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-
-
-
---
-2.29.2
-
diff --git a/SOURCES/libvirt-Remove-checking-of-return-value-of-virHashNew.patch b/SOURCES/libvirt-Remove-checking-of-return-value-of-virHashNew.patch
deleted file mode 100644
index 10e8801..0000000
--- a/SOURCES/libvirt-Remove-checking-of-return-value-of-virHashNew.patch
+++ /dev/null
@@ -1,62 +0,0 @@
-From ca7c7a8b07c31dc8bf96f7da6fb53af884e36ddb Mon Sep 17 00:00:00 2001
-Message-Id:
-From: Peter Krempa
-Date: Tue, 4 Feb 2020 15:08:01 +0100
-Subject: [PATCH] Remove checking of return value of virHashNew
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-There are two calls to virHashNew which check the return value. It's not
-necessary any more as virHashNew always returns a valid pointer.
-
-Signed-off-by: Peter Krempa
-Reviewed-by: Michal Privoznik
-(cherry picked from commit 6eab924daa243afa67f2cc20dcbdf521904bb62b)
-
-https://bugzilla.redhat.com/show_bug.cgi?id=1793263
-Message-Id: <08acb2e50b584a75c0131a628ee441f47e8fe823.1580824112.git.pkrempa@redhat.com>
-Reviewed-by: Ján Tomko
----
- src/conf/backup_conf.c | 6 +-----
- src/qemu/qemu_monitor_json.c | 3 +--
- 2 files changed, 2 insertions(+), 7 deletions(-)
-
-diff --git a/src/conf/backup_conf.c b/src/conf/backup_conf.c
-index b370b686f1..64c8f6cc09 100644
---- a/src/conf/backup_conf.c
-+++ b/src/conf/backup_conf.c
-@@ -439,15 +439,11 @@ virDomainBackupAlignDisks(virDomainBackupDefPtr def,
- virDomainDefPtr dom,
- const char *suffix)
- {
-- g_autoptr(virHashTable) disks = NULL;
-+ g_autoptr(virHashTable) disks = virHashNew(NULL);
- size_t i;
- int ndisks;
- bool backup_all = false;
-
--
-- if (!(disks = virHashNew(NULL)))
-- return -1;
--
- /* Unlikely to have a guest without disks but technically possible. */
- if (!dom->ndisks) {
- virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
-diff --git a/src/qemu/qemu_monitor_json.c b/src/qemu/qemu_monitor_json.c
-index 5d8c7e9b5e..3fc0bcb80c 100644
---- a/src/qemu/qemu_monitor_json.c
-+++ b/src/qemu/qemu_monitor_json.c
-@@ -2992,8 +2992,7 @@ qemuMonitorJSONBlockGetNamedNodeDataJSON(virJSONValuePtr nodes)
- {
- g_autoptr(virHashTable) ret = NULL;
-
-- if (!(ret = virHashNew((virHashDataFree) qemuMonitorJSONBlockNamedNodeDataFree)))
-- return NULL;
-+ ret = virHashNew((virHashDataFree) qemuMonitorJSONBlockNamedNodeDataFree);
-
- if (virJSONValueArrayForeachSteal(nodes,
- qemuMonitorJSONBlockGetNamedNodeDataWorker,
---
-2.25.0
-
diff --git a/SOURCES/libvirt-Remove-qemuDomainSecretInfoNew.patch b/SOURCES/libvirt-Remove-qemuDomainSecretInfoNew.patch
deleted file mode 100644
index 4534ae8..0000000
--- a/SOURCES/libvirt-Remove-qemuDomainSecretInfoNew.patch
+++ /dev/null
@@ -1,109 +0,0 @@
-From 160863c5cac5519c287462439b9ce8abc6a8237e Mon Sep 17 00:00:00 2001
-Message-Id: <160863c5cac5519c287462439b9ce8abc6a8237e@dist-git>
-From: Peter Krempa
-Date: Mon, 16 Mar 2020 22:11:48 +0100
-Subject: [PATCH] Remove qemuDomainSecretInfoNew
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Replace it by a direct call to qemuDomainSecretAESSetupFromSecret.
-
-Signed-off-by: Peter Krempa
-Reviewed-by: Ján Tomko
-(cherry picked from commit f742461389c11a7d4cc8bda941814c4128eadf94)
-https://bugzilla.redhat.com/show_bug.cgi?id=1804750
-Message-Id:
-Reviewed-by: Ján Tomko
----
- src/qemu/qemu_domain.c | 53 +++++++++++-------------------------------
- 1 file changed, 13 insertions(+), 40 deletions(-)
-
-diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c
-index c286f50650..af23079d5d 100644
---- a/src/qemu/qemu_domain.c
-+++ b/src/qemu/qemu_domain.c
-@@ -1669,33 +1669,6 @@ qemuDomainSecretInfoNewPlain(virSecretUsageType usageType,
- }
-
-
--/* qemuDomainSecretInfoNew:
-- * @priv: pointer to domain private object
-- * @srcAlias: Alias base to use for TLS object
-- * @usageType: Secret usage type
-- * @username: username
-- * @looupDef: lookup def describing secret
-- * @isLuks: boolean for luks lookup
-- *
-- * Helper function to create a secinfo to be used for secinfo consumers. This
-- * sets up encrypted data to be used with qemu's 'secret' object.
-- *
-- * Returns @secinfo on success, NULL on failure. Caller is responsible
-- * to eventually free @secinfo.
-- */
--static qemuDomainSecretInfoPtr
--qemuDomainSecretInfoNew(qemuDomainObjPrivatePtr priv,
-- const char *srcAlias,
-- virSecretUsageType usageType,
-- const char *username,
-- virSecretLookupTypeDefPtr lookupDef,
-- bool isLuks)
--{
-- return qemuDomainSecretAESSetupFromSecret(priv, srcAlias, usageType, username,
-- lookupDef, isLuks);
--}
--
--
- /**
- * qemuDomainSecretInfoTLSNew:
- * @priv: pointer to domain private object
-@@ -1722,9 +1695,9 @@ qemuDomainSecretInfoTLSNew(qemuDomainObjPrivatePtr priv,
- }
- seclookupdef.type = VIR_SECRET_LOOKUP_TYPE_UUID;
-
-- return qemuDomainSecretInfoNew(priv, srcAlias,
-- VIR_SECRET_USAGE_TYPE_TLS, NULL,
-- &seclookupdef, false);
-+ return qemuDomainSecretAESSetupFromSecret(priv, srcAlias,
-+ VIR_SECRET_USAGE_TYPE_TLS,
-+ NULL, &seclookupdef, false);
- }
-
-
-@@ -1814,11 +1787,11 @@ qemuDomainSecretStorageSourcePrepare(qemuDomainObjPrivatePtr priv,
- src->auth->username,
- &src->auth->seclookupdef);
- } else {
-- srcPriv->secinfo = qemuDomainSecretInfoNew(priv, authalias,
-- usageType,
-- src->auth->username,
-- &src->auth->seclookupdef,
-- false);
-+ srcPriv->secinfo = qemuDomainSecretAESSetupFromSecret(priv, authalias,
-+ usageType,
-+ src->auth->username,
-+ &src->auth->seclookupdef,
-+ false);
- }
-
- if (!srcPriv->secinfo)
-@@ -1826,11 +1799,11 @@ qemuDomainSecretStorageSourcePrepare(qemuDomainObjPrivatePtr priv,
- }
-
- if (hasEnc) {
-- if (!(srcPriv->encinfo =
-- qemuDomainSecretInfoNew(priv, encalias,
-- VIR_SECRET_USAGE_TYPE_VOLUME, NULL,
-- &src->encryption->secrets[0]->seclookupdef,
-- true)))
-+ if (!(srcPriv->encinfo = qemuDomainSecretAESSetupFromSecret(priv, encalias,
-+ VIR_SECRET_USAGE_TYPE_VOLUME,
-+ NULL,
-+ &src->encryption->secrets[0]->seclookupdef,
-+ true)))
- return -1;
- }
-
---
-2.25.1
-
diff --git a/SOURCES/libvirt-api-disallow-virDomainAgentSetResponseTimeout-on-read-only-connections.patch b/SOURCES/libvirt-api-disallow-virDomainAgentSetResponseTimeout-on-read-only-connections.patch
deleted file mode 100644
index 5d9ae06..0000000
--- a/SOURCES/libvirt-api-disallow-virDomainAgentSetResponseTimeout-on-read-only-connections.patch
+++ /dev/null
@@ -1,45 +0,0 @@
-From 0c1bec6a89f97c77ba9e0ed4146deb8606ea6f16 Mon Sep 17 00:00:00 2001
-Message-Id: <0c1bec6a89f97c77ba9e0ed4146deb8606ea6f16@dist-git>
-From: Jonathon Jongsma
-Date: Wed, 25 Mar 2020 11:21:19 -0500
-Subject: [PATCH] api: disallow virDomainAgentSetResponseTimeout() on read-only
- connections
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-This function changes the amount of time that libvirt waits for a
-response from the guest agent for all guest agent commands. Since this
-is a configuration change, it should not be allowed on read-only
-connections.
-
-Signed-off-by: Jonathon Jongsma
-Reviewed-by: Daniel Henrique Barboza
-Reviewed-by: Michal Privoznik
-(cherry picked from commit 4cc90c2e62df653e909ad31fd810224bf8bcf913)
-
-https://bugzilla.redhat.com/show_bug.cgi?id=1814508
-
-Signed-off-by: Jonathon Jongsma
-Message-Id: <20200325162119.9047-2-jjongsma@redhat.com>
-Reviewed-by: Ján Tomko
----
- src/libvirt-domain.c | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/src/libvirt-domain.c b/src/libvirt-domain.c
-index eb66999f07..3deee54e48 100644
---- a/src/libvirt-domain.c
-+++ b/src/libvirt-domain.c
-@@ -12554,6 +12554,8 @@ virDomainAgentSetResponseTimeout(virDomainPtr domain,
- virCheckDomainReturn(domain, -1);
- conn = domain->conn;
-
-+ virCheckReadOnlyGoto(conn->flags, error);
-+
- if (conn->driver->domainAgentSetResponseTimeout) {
- if (conn->driver->domainAgentSetResponseTimeout(domain, timeout, flags) < 0)
- goto error;
---
-2.26.0
-
diff --git a/SOURCES/libvirt-cgroup-use-virCgroupSetCpuShares-instead-of-virCgroupSetupCpuShares.patch b/SOURCES/libvirt-cgroup-use-virCgroupSetCpuShares-instead-of-virCgroupSetupCpuShares.patch
deleted file mode 100644
index 9eec89b..0000000
--- a/SOURCES/libvirt-cgroup-use-virCgroupSetCpuShares-instead-of-virCgroupSetupCpuShares.patch
+++ /dev/null
@@ -1,146 +0,0 @@
-From 8d08db00d403ddd17cb51d972842c6d13a122d57 Mon Sep 17 00:00:00 2001
-Message-Id: <8d08db00d403ddd17cb51d972842c6d13a122d57@dist-git>
-From: Pavel Hrdina
-Date: Thu, 4 Mar 2021 12:57:58 +0100
-Subject: [PATCH] cgroup: use virCgroupSetCpuShares instead of
- virCgroupSetupCpuShares
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Now that we enforce the cpu.shares range kernel will no longer silently
-change the value that libvirt configures so there is no need to read
-the value back to get the actual configuration.
-
-Signed-off-by: Pavel Hrdina
-Reviewed-by: Michal Privoznik
-(cherry picked from commit e95489d813cb7cc68b02905ce3ec059bc395b465)
-
-Conflicts:
- src/lxc/lxc_cgroup.c
- src/lxc/lxc_driver.c
- src/qemu/qemu_cgroup.c
- src/qemu/qemu_driver.c
- - downstream doesn't have virCgroupSetupCpuShares() function
- so we just remove usage of virCgroupGetCpuShares()
-
-Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1798463
-
-Signed-off-by: Pavel Hrdina
-Message-Id:
-Reviewed-by: Ján Tomko
----
- src/lxc/lxc_cgroup.c | 5 -----
- src/lxc/lxc_driver.c | 6 +-----
- src/qemu/qemu_cgroup.c | 20 --------------------
- src/qemu/qemu_driver.c | 8 ++------
- 4 files changed, 3 insertions(+), 36 deletions(-)
-
-diff --git a/src/lxc/lxc_cgroup.c b/src/lxc/lxc_cgroup.c
-index 7f3701593a..f785f50754 100644
---- a/src/lxc/lxc_cgroup.c
-+++ b/src/lxc/lxc_cgroup.c
-@@ -38,13 +38,8 @@ static int virLXCCgroupSetupCpuTune(virDomainDefPtr def,
- virCgroupPtr cgroup)
- {
- if (def->cputune.sharesSpecified) {
-- unsigned long long val;
- if (virCgroupSetCpuShares(cgroup, def->cputune.shares) < 0)
- return -1;
--
-- if (virCgroupGetCpuShares(cgroup, &val) < 0)
-- return -1;
-- def->cputune.shares = val;
- }
-
- if (def->cputune.quota != 0 &&
-diff --git a/src/lxc/lxc_driver.c b/src/lxc/lxc_driver.c
-index a8c93dd228..853ddac8b9 100644
---- a/src/lxc/lxc_driver.c
-+++ b/src/lxc/lxc_driver.c
-@@ -1909,14 +1909,10 @@ lxcDomainSetSchedulerParametersFlags(virDomainPtr dom,
-
- if (STREQ(param->field, VIR_DOMAIN_SCHEDULER_CPU_SHARES)) {
- if (def) {
-- unsigned long long val;
- if (virCgroupSetCpuShares(priv->cgroup, params[i].value.ul) < 0)
- goto endjob;
-
-- if (virCgroupGetCpuShares(priv->cgroup, &val) < 0)
-- goto endjob;
--
-- def->cputune.shares = val;
-+ def->cputune.shares = params[i].value.ul;
- def->cputune.sharesSpecified = true;
- }
-
-diff --git a/src/qemu/qemu_cgroup.c b/src/qemu/qemu_cgroup.c
-index 3a62b4ac15..95ea5bed74 100644
---- a/src/qemu/qemu_cgroup.c
-+++ b/src/qemu/qemu_cgroup.c
-@@ -933,10 +933,6 @@ static int
- qemuSetupCpuCgroup(virDomainObjPtr vm)
- {
- qemuDomainObjPrivatePtr priv = vm->privateData;
-- virObjectEventPtr event = NULL;
-- virTypedParameterPtr eventParams = NULL;
-- int eventNparams = 0;
-- int eventMaxparams = 0;
-
- if (!virCgroupHasController(priv->cgroup, VIR_CGROUP_CONTROLLER_CPU)) {
- if (vm->def->cputune.sharesSpecified) {
-@@ -949,24 +945,8 @@ qemuSetupCpuCgroup(virDomainObjPtr vm)
- }
-
- if (vm->def->cputune.sharesSpecified) {
-- unsigned long long val;
- if (virCgroupSetCpuShares(priv->cgroup, vm->def->cputune.shares) < 0)
- return -1;
--
-- if (virCgroupGetCpuShares(priv->cgroup, &val) < 0)
-- return -1;
-- if (vm->def->cputune.shares != val) {
-- vm->def->cputune.shares = val;
-- if (virTypedParamsAddULLong(&eventParams, &eventNparams,
-- &eventMaxparams,
-- VIR_DOMAIN_TUNABLE_CPU_CPU_SHARES,
-- val) < 0)
-- return -1;
--
-- event = virDomainEventTunableNewFromObj(vm, eventParams, eventNparams);
-- }
--
-- virObjectEventStateQueue(priv->driver->domainEventState, event);
- }
-
- return 0;
-diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
-index a1103a96dd..3914d3ff68 100644
---- a/src/qemu/qemu_driver.c
-+++ b/src/qemu/qemu_driver.c
-@@ -10625,20 +10625,16 @@ qemuDomainSetSchedulerParametersFlags(virDomainPtr dom,
-
- if (STREQ(param->field, VIR_DOMAIN_SCHEDULER_CPU_SHARES)) {
- if (def) {
-- unsigned long long val;
- if (virCgroupSetCpuShares(priv->cgroup, value_ul) < 0)
- goto endjob;
-
-- if (virCgroupGetCpuShares(priv->cgroup, &val) < 0)
-- goto endjob;
--
-- def->cputune.shares = val;
-+ def->cputune.shares = value_ul;
- def->cputune.sharesSpecified = true;
-
- if (virTypedParamsAddULLong(&eventParams, &eventNparams,
- &eventMaxNparams,
- VIR_DOMAIN_TUNABLE_CPU_CPU_SHARES,
-- val) < 0)
-+ value_ul) < 0)
- goto endjob;
- }
-
---
-2.30.0
-
diff --git a/SOURCES/libvirt-check-for-NULL-before-calling-g_regex_unref.patch b/SOURCES/libvirt-check-for-NULL-before-calling-g_regex_unref.patch
deleted file mode 100644
index a0c6d04..0000000
--- a/SOURCES/libvirt-check-for-NULL-before-calling-g_regex_unref.patch
+++ /dev/null
@@ -1,77 +0,0 @@
-From 5fe7795d5fa5061f0ba615472f9351f9d29abf48 Mon Sep 17 00:00:00 2001
-Message-Id: <5fe7795d5fa5061f0ba615472f9351f9d29abf48@dist-git>
-From: =?UTF-8?q?J=C3=A1n=20Tomko?=
-Date: Fri, 2 Oct 2020 13:44:44 +0200
-Subject: [PATCH] check for NULL before calling g_regex_unref
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-g_regex_unref reports an error if called with a NULL argument.
-
-We have two cases in the code where we (possibly) call it on a NULL
-argument. The interesting one is in virDomainQemuMonitorEventCleanup.
-
-Based on VIR_CONNECT_DOMAIN_QEMU_MONITOR_EVENT_REGISTER_REGEX, we unref
-data->regex, which has two problems:
-
-* On the client side, flags is -1 so the comparison is true even if no
- regex was used, reproducible by:
- $ virsh qemu-monitor-event --timeout 1
- which results in an ugly error:
-(process:1289846): GLib-CRITICAL **: 14:58:42.631: g_regex_unref: assertion 'regex != NULL' failed
-* On the server side, we only create the regex if both the flag and the
- string are present, so it's possible to trigger this message by:
- $ virsh qemu-monitor-event --regex --timeout 1
-
-Use a non-NULL comparison instead of the flag to decide whether we need
-to unref the regex. And add a non-NULL check to the unref in the
-VirtualBox test too.
-
-Signed-off-by: Ján Tomko
-Fixes: 71efb59a4de7c51b1bc889a316f1796ebf55738f
-https://bugzilla.redhat.com/show_bug.cgi?id=1876907
-Reviewed-by: Peter Krempa
-Reviewed-by: Martin Kletzander
-(cherry picked from commit 92b252456ee6d6ffc6e39e62ce1ce6c50113e00e)
-
-https://bugzilla.redhat.com/show_bug.cgi?id=1861176
-
-Signed-off-by: Ján Tomko
-Message-Id: <7d3c84f6556d0d46ada037d5e56c831babba609f.1601639064.git.jtomko@redhat.com>
-Reviewed-by: Jiri Denemark
----
- src/conf/domain_event.c | 2 +-
- tests/vboxsnapshotxmltest.c | 3 ++-
- 2 files changed, 3 insertions(+), 2 deletions(-)
-
-diff --git a/src/conf/domain_event.c b/src/conf/domain_event.c
-index 33fbf10406..d3acde0236 100644
---- a/src/conf/domain_event.c
-+++ b/src/conf/domain_event.c
-@@ -2194,7 +2194,7 @@ virDomainQemuMonitorEventCleanup(void *opaque)
- virDomainQemuMonitorEventData *data = opaque;
-
- VIR_FREE(data->event);
-- if (data->flags & VIR_CONNECT_DOMAIN_QEMU_MONITOR_EVENT_REGISTER_REGEX)
-+ if (data->regex)
- g_regex_unref(data->regex);
- if (data->freecb)
- (data->freecb)(data->opaque);
-diff --git a/tests/vboxsnapshotxmltest.c b/tests/vboxsnapshotxmltest.c
-index d1a7522931..8577157020 100644
---- a/tests/vboxsnapshotxmltest.c
-+++ b/tests/vboxsnapshotxmltest.c
-@@ -134,7 +134,8 @@ mymain(void)
- DO_TEST("2disks-3snap-brother");
-
- cleanup:
-- g_regex_unref(testSnapshotXMLVariableLineRegex);
-+ if (testSnapshotXMLVariableLineRegex)
-+ g_regex_unref(testSnapshotXMLVariableLineRegex);
- return ret == 0 ? EXIT_SUCCESS : EXIT_FAILURE;
- }
-
---
-2.28.0
-
diff --git a/SOURCES/libvirt-conf-Add-support-for-cookies-for-HTTP-based-disks.patch b/SOURCES/libvirt-conf-Add-support-for-cookies-for-HTTP-based-disks.patch
deleted file mode 100644
index ed4e875..0000000
--- a/SOURCES/libvirt-conf-Add-support-for-cookies-for-HTTP-based-disks.patch
+++ /dev/null
@@ -1,449 +0,0 @@
-From 4abdfae3b67295a0143f650768630e009d1b2798 Mon Sep 17 00:00:00 2001
-Message-Id: <4abdfae3b67295a0143f650768630e009d1b2798@dist-git>
-From: Peter Krempa
-Date: Mon, 16 Mar 2020 22:11:57 +0100
-Subject: [PATCH] conf: Add support for cookies for HTTP based disks
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Add possibility to specify one or more cookies for http based disks.
-This patch adds the config parser, storage and validation of the
-cookies.
-
-Signed-off-by: Peter Krempa
-Reviewed-by: Ján Tomko
-(cherry picked from commit 3b076391befc3fe72deb0c244ac6c2b4c100b410)
-
-https://bugzilla.redhat.com/show_bug.cgi?id=1804750
-Message-Id: <3135a30f0d0a1a4bb8da02c49f10a1bcf3a394f4.1584391727.git.pkrempa@redhat.com>
-Reviewed-by: Ján Tomko
----
- docs/formatdomain.html.in | 10 ++
- docs/schemas/domaincommon.rng | 24 ++++
- src/conf/domain_conf.c | 82 +++++++++++++
- src/libvirt_private.syms | 1 +
- src/util/virstoragefile.c | 115 ++++++++++++++++++
- src/util/virstoragefile.h | 15 +++
- .../disk-network-http.xml | 8 ++
- 7 files changed, 255 insertions(+)
-
-diff --git a/docs/formatdomain.html.in b/docs/formatdomain.html.in
-index 2cce247958..5a10d64e83 100644
---- a/docs/formatdomain.html.in
-+++ b/docs/formatdomain.html.in
-@@ -2839,6 +2839,9 @@
- <driver name='qemu' type='raw'/>
- <source protocol="http" name="url_path">
- <host name="hostname" port="80"/>
-+ <cookies>
-+ <cookie name="test">somevalue</cookie>
-+ </cookies>
- </source>
- <target dev='hde' bus='ide' tray='open'/>
- <readonly/>
-@@ -3382,6 +3385,13 @@
- certificate validation. Supported values are yes
and
- no
. Since 6.2.0
-
-+ cookies
-+
-+ For http
and https
accessed storage it's
-+ possible to pass one or more cookies. The cookie name and value
-+ must conform to the HTTP specification.
-+ Since 6.2.0
-+
-
-
-
-diff --git a/docs/schemas/domaincommon.rng b/docs/schemas/domaincommon.rng
-index 548601b61c..bdf35e64f6 100644
---- a/docs/schemas/domaincommon.rng
-+++ b/docs/schemas/domaincommon.rng
-@@ -1817,6 +1817,24 @@
-
-
-
-+
-+
-+
-+
-+
-+
-+ [!#$%&'*+\-.0-9A-Z\^_`a-z|~]+
-+
-+
-+
-+ [!#$%&'()*+\-./0-9:>=<?@A-Z\^_`\[\]a-z|~]+
-+
-+
-+
-+
-+
-+
-+
-
-
-
-@@ -1833,6 +1851,9 @@
-
-
-
-+
-+
-+
-
-
-
-@@ -1849,6 +1870,9 @@
-
-
-
-+
-+
-+
-
-
-
-diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
-index 70bbc35bb3..d066d3aac1 100644
---- a/src/conf/domain_conf.c
-+++ b/src/conf/domain_conf.c
-@@ -9249,6 +9249,62 @@ virDomainDiskSourcePoolDefParse(xmlNodePtr node,
- }
-
-
-+static virStorageNetCookieDefPtr
-+virDomainStorageNetCookieParse(xmlNodePtr node,
-+ xmlXPathContextPtr ctxt)
-+{
-+ VIR_XPATH_NODE_AUTORESTORE(ctxt);
-+ g_autoptr(virStorageNetCookieDef) cookie = NULL;
-+
-+ ctxt->node = node;
-+
-+ cookie = g_new0(virStorageNetCookieDef, 1);
-+
-+ if (!(cookie->name = virXPathString("string(./@name)", ctxt))) {
-+ virReportError(VIR_ERR_XML_ERROR, "%s", _("missing cookie name"));
-+ return NULL;
-+ }
-+
-+ if (!(cookie->value = virXPathString("string(.)", ctxt))) {
-+ virReportError(VIR_ERR_XML_ERROR, _("missing value for cookie '%s'"),
-+ cookie->name);
-+ return NULL;
-+ }
-+
-+ return g_steal_pointer(&cookie);
-+}
-+
-+
-+static int
-+virDomainStorageNetCookiesParse(xmlNodePtr node,
-+ xmlXPathContextPtr ctxt,
-+ virStorageSourcePtr src)
-+{
-+ VIR_XPATH_NODE_AUTORESTORE(ctxt);
-+ g_autofree xmlNodePtr *nodes = NULL;
-+ ssize_t nnodes;
-+ size_t i;
-+
-+ ctxt->node = node;
-+
-+ if ((nnodes = virXPathNodeSet("./cookie", ctxt, &nodes)) < 0)
-+ return -1;
-+
-+ src->cookies = g_new0(virStorageNetCookieDefPtr, nnodes);
-+ src->ncookies = nnodes;
-+
-+ for (i = 0; i < nnodes; i++) {
-+ if (!(src->cookies[i] = virDomainStorageNetCookieParse(nodes[i], ctxt)))
-+ return -1;
-+ }
-+
-+ if (virStorageSourceNetCookiesValidate(src) < 0)
-+ return -1;
-+
-+ return 0;
-+}
-+
-+
- static int
- virDomainDiskSourceNetworkParse(xmlNodePtr node,
- xmlXPathContextPtr ctxt,
-@@ -9260,6 +9316,7 @@ virDomainDiskSourceNetworkParse(xmlNodePtr node,
- g_autofree char *haveTLS = NULL;
- g_autofree char *tlsCfg = NULL;
- g_autofree char *sslverifystr = NULL;
-+ xmlNodePtr tmpnode;
-
- if (!(protocol = virXMLPropString(node, "protocol"))) {
- virReportError(VIR_ERR_XML_ERROR, "%s",
-@@ -9345,6 +9402,13 @@ virDomainDiskSourceNetworkParse(xmlNodePtr node,
- src->sslverify = verify;
- }
-
-+ if ((src->protocol == VIR_STORAGE_NET_PROTOCOL_HTTP ||
-+ src->protocol == VIR_STORAGE_NET_PROTOCOL_HTTPS) &&
-+ (tmpnode = virXPathNode("./cookies", ctxt))) {
-+ if (virDomainStorageNetCookiesParse(tmpnode, ctxt, src) < 0)
-+ return -1;
-+ }
-+
- return 0;
- }
-
-@@ -24281,6 +24345,22 @@ virDomainSourceDefFormatSeclabel(virBufferPtr buf,
- }
-
-
-+static void
-+virDomainDiskSourceFormatNetworkCookies(virBufferPtr buf,
-+ virStorageSourcePtr src)
-+{
-+ g_auto(virBuffer) childBuf = VIR_BUFFER_INIT_CHILD(buf);
-+ size_t i;
-+
-+ for (i = 0; i < src->ncookies; i++) {
-+ virBufferEscapeString(&childBuf, "", src->cookies[i]->name);
-+ virBufferEscapeString(&childBuf, "%s \n", src->cookies[i]->value);
-+ }
-+
-+ virXMLFormatElement(buf, "cookies", NULL, &childBuf);
-+}
-+
-+
- static int
- virDomainDiskSourceFormatNetwork(virBufferPtr attrBuf,
- virBufferPtr childBuf,
-@@ -24331,6 +24411,8 @@ virDomainDiskSourceFormatNetwork(virBufferPtr attrBuf,
- virTristateBoolTypeToString(src->sslverify));
- }
-
-+ virDomainDiskSourceFormatNetworkCookies(childBuf, src);
-+
- return 0;
- }
-
-diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms
-index dbbec0d567..ac5527ef01 100644
---- a/src/libvirt_private.syms
-+++ b/src/libvirt_private.syms
-@@ -3123,6 +3123,7 @@ virStorageSourceIsEmpty;
- virStorageSourceIsLocalStorage;
- virStorageSourceIsRelative;
- virStorageSourceIsSameLocation;
-+virStorageSourceNetCookiesValidate;
- virStorageSourceNetworkAssignDefaultPorts;
- virStorageSourceNew;
- virStorageSourceNewFromBacking;
-diff --git a/src/util/virstoragefile.c b/src/util/virstoragefile.c
-index cfa77fccf8..6350168d73 100644
---- a/src/util/virstoragefile.c
-+++ b/src/util/virstoragefile.c
-@@ -2157,6 +2157,118 @@ virStorageSourceSeclabelsCopy(virStorageSourcePtr to,
- }
-
-
-+void
-+virStorageNetCookieDefFree(virStorageNetCookieDefPtr def)
-+{
-+ if (!def)
-+ return;
-+
-+ g_free(def->name);
-+ g_free(def->value);
-+
-+ g_free(def);
-+}
-+
-+
-+static void
-+virStorageSourceNetCookiesClear(virStorageSourcePtr src)
-+{
-+ size_t i;
-+
-+ if (!src || !src->cookies)
-+ return;
-+
-+ for (i = 0; i < src->ncookies; i++)
-+ virStorageNetCookieDefFree(src->cookies[i]);
-+
-+ g_clear_pointer(&src->cookies, g_free);
-+ src->ncookies = 0;
-+}
-+
-+
-+static void
-+virStorageSourceNetCookiesCopy(virStorageSourcePtr to,
-+ const virStorageSource *from)
-+{
-+ size_t i;
-+
-+ if (from->ncookies == 0)
-+ return;
-+
-+ to->cookies = g_new0(virStorageNetCookieDefPtr, from->ncookies);
-+ to->ncookies = from->ncookies;
-+
-+ for (i = 0; i < from->ncookies; i++) {
-+ to->cookies[i]->name = g_strdup(from->cookies[i]->name);
-+ to->cookies[i]->value = g_strdup(from->cookies[i]->value);
-+ }
-+}
-+
-+
-+/* see https://tools.ietf.org/html/rfc6265#section-4.1.1 */
-+static const char virStorageSourceCookieValueInvalidChars[] =
-+ "\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0A\x0B\x0C\x0D\x0E\x0F"
-+ "\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1A\x1B\x1C\x1D\x1E\x1F"
-+ " \",;\\";
-+
-+/* in addition cookie name can't contain these */
-+static const char virStorageSourceCookieNameInvalidChars[] =
-+ "()<>@:/[]?={}";
-+
-+static int
-+virStorageSourceNetCookieValidate(virStorageNetCookieDefPtr def)
-+{
-+ /* name must have at least 1 character */
-+ if (*(def->name) == '\0') {
-+ virReportError(VIR_ERR_XML_ERROR, "%s",
-+ _("cookie name must not be empty"));
-+ return -1;
-+ }
-+
-+ /* check invalid characters in name */
-+ if (virStringHasChars(def->name, virStorageSourceCookieValueInvalidChars) ||
-+ virStringHasChars(def->name, virStorageSourceCookieNameInvalidChars)) {
-+ virReportError(VIR_ERR_XML_ERROR,
-+ _("cookie name '%s' contains invalid characters"),
-+ def->name);
-+ return -1;
-+ }
-+
-+ /* check invalid characters in value */
-+ if (virStringHasChars(def->value, virStorageSourceCookieValueInvalidChars)) {
-+ virReportError(VIR_ERR_XML_ERROR,
-+ _("value of cookie '%s' contains invalid characters"),
-+ def->name);
-+ return -1;
-+ }
-+
-+ return 0;
-+}
-+
-+
-+int
-+virStorageSourceNetCookiesValidate(virStorageSourcePtr src)
-+{
-+ size_t i;
-+ size_t j;
-+
-+ for (i = 0; i < src->ncookies; i++) {
-+ if (virStorageSourceNetCookieValidate(src->cookies[i]) < 0)
-+ return -1;
-+
-+ for (j = i + 1; j < src->ncookies; j++) {
-+ if (STREQ(src->cookies[i]->name, src->cookies[j]->name)) {
-+ virReportError(VIR_ERR_XML_ERROR, _("duplicate cookie '%s'"),
-+ src->cookies[i]->name);
-+ return -1;
-+ }
-+ }
-+ }
-+
-+ return 0;
-+}
-+
-+
- static virStorageTimestampsPtr
- virStorageTimestampsCopy(const virStorageTimestamps *src)
- {
-@@ -2299,6 +2411,8 @@ virStorageSourceCopy(const virStorageSource *src,
- def->nhosts = src->nhosts;
- }
-
-+ virStorageSourceNetCookiesCopy(def, src);
-+
- if (src->srcpool &&
- !(def->srcpool = virStorageSourcePoolDefCopy(src->srcpool)))
- return NULL;
-@@ -2560,6 +2674,7 @@ virStorageSourceClear(virStorageSourcePtr def)
- VIR_FREE(def->volume);
- VIR_FREE(def->snapshot);
- VIR_FREE(def->configFile);
-+ virStorageSourceNetCookiesClear(def);
- virStorageSourcePoolDefFree(def->srcpool);
- virBitmapFree(def->features);
- VIR_FREE(def->compat);
-diff --git a/src/util/virstoragefile.h b/src/util/virstoragefile.h
-index fab4248c3d..1c7c046ad6 100644
---- a/src/util/virstoragefile.h
-+++ b/src/util/virstoragefile.h
-@@ -162,6 +162,17 @@ struct _virStorageNetHostDef {
- char *socket; /* path to unix socket */
- };
-
-+typedef struct _virStorageNetCookieDef virStorageNetCookieDef;
-+typedef virStorageNetCookieDef *virStorageNetCookieDefPtr;
-+struct _virStorageNetCookieDef {
-+ char *name;
-+ char *value;
-+};
-+
-+void virStorageNetCookieDefFree(virStorageNetCookieDefPtr def);
-+
-+G_DEFINE_AUTOPTR_CLEANUP_FUNC(virStorageNetCookieDef, virStorageNetCookieDefFree);
-+
- /* Information for a storage volume from a virStoragePool */
-
- /*
-@@ -276,6 +287,8 @@ struct _virStorageSource {
- the source definition */
- size_t nhosts;
- virStorageNetHostDefPtr hosts;
-+ size_t ncookies;
-+ virStorageNetCookieDefPtr *cookies;
- virStorageSourcePoolDefPtr srcpool;
- virStorageAuthDefPtr auth;
- bool authInherited;
-@@ -477,6 +490,8 @@ int virStorageSourceUpdateCapacity(virStorageSourcePtr src,
- int virStorageSourceNewFromBacking(virStorageSourcePtr parent,
- virStorageSourcePtr *backing);
-
-+int virStorageSourceNetCookiesValidate(virStorageSourcePtr src);
-+
- virStorageSourcePtr virStorageSourceCopy(const virStorageSource *src,
- bool backingChain)
- ATTRIBUTE_NONNULL(1);
-diff --git a/tests/genericxml2xmlindata/disk-network-http.xml b/tests/genericxml2xmlindata/disk-network-http.xml
-index bdcc1977f2..bafb77c8ec 100644
---- a/tests/genericxml2xmlindata/disk-network-http.xml
-+++ b/tests/genericxml2xmlindata/disk-network-http.xml
-@@ -33,6 +33,10 @@
-
-
-
-+
-+ testcookievalue
-+ blurb
-+
-
-
-
-@@ -41,6 +45,10 @@
-
-
-
-+
-+ testcookievalue
-+ blurb
-+
-
-
-
---
-2.25.1
-
diff --git a/SOURCES/libvirt-conf-Add-support-for-http-s-query-strings.patch b/SOURCES/libvirt-conf-Add-support-for-http-s-query-strings.patch
deleted file mode 100644
index 32169e7..0000000
--- a/SOURCES/libvirt-conf-Add-support-for-http-s-query-strings.patch
+++ /dev/null
@@ -1,160 +0,0 @@
-From 45ecbd824c92bd05a46557bfcaff39196f701e6c Mon Sep 17 00:00:00 2001
-Message-Id: <45ecbd824c92bd05a46557bfcaff39196f701e6c@dist-git>
-From: Peter Krempa
-Date: Mon, 30 Mar 2020 17:21:45 +0200
-Subject: [PATCH] conf: Add support for http(s) query strings
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Add a new attribute for holding the query part for http(s) disks.
-
-Signed-off-by: Peter Krempa
-Reviewed-by: Ján Tomko
-(cherry picked from commit 56368124728f0d65dde07244c741b459fcd6b939)
-https://bugzilla.redhat.com/show_bug.cgi?id=1804750
-Message-Id:
-Reviewed-by: Jiri Denemark
----
- docs/formatdomain.html.in | 7 ++++++-
- docs/schemas/domaincommon.rng | 6 ++++++
- src/conf/domain_conf.c | 5 +++++
- src/util/virstoragefile.c | 2 ++
- src/util/virstoragefile.h | 1 +
- tests/qemuxml2argvdata/disk-network-http.xml | 2 +-
- .../qemuxml2xmloutdata/disk-network-http.x86_64-latest.xml | 2 +-
- 7 files changed, 22 insertions(+), 3 deletions(-)
-
-diff --git a/docs/formatdomain.html.in b/docs/formatdomain.html.in
-index 143db21d4d..9c588185df 100644
---- a/docs/formatdomain.html.in
-+++ b/docs/formatdomain.html.in
-@@ -2837,7 +2837,7 @@
- </disk>
- <disk type='network' device='cdrom'>
- <driver name='qemu' type='raw'/>
-- <source protocol="http" name="url_path">
-+ <source protocol="http" name="url_path" query="foo=bar&baz=flurb>
- <host name="hostname" port="80"/>
- <cookies>
- <cookie name="test">somevalue</cookie>
-@@ -3103,6 +3103,11 @@
- ('tls' Since 4.5.0 )
-
-
-+ For protocols http
and https
an
-+ optional attribute query
specifies the query string.
-+ (Since 6.2.0 )
-+
-+
- For "iscsi" (since 1.0.4 ), the
- name
attribute may include a logical unit number,
- separated from the target's name by a slash (e.g.,
-diff --git a/docs/schemas/domaincommon.rng b/docs/schemas/domaincommon.rng
-index e17f7ff8c0..dd8f27243a 100644
---- a/docs/schemas/domaincommon.rng
-+++ b/docs/schemas/domaincommon.rng
-@@ -1869,6 +1869,9 @@
-
-
-
-+
-+
-+
-
-
-
-@@ -1894,6 +1897,9 @@
-
-
-
-+
-+
-+
-
-
-
-diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
-index e3755fa285..28160a2967 100644
---- a/src/conf/domain_conf.c
-+++ b/src/conf/domain_conf.c
-@@ -9382,6 +9382,10 @@ virDomainDiskSourceNetworkParse(xmlNodePtr node,
- /* config file currently only works with remote disks */
- src->configFile = virXPathString("string(./config/@file)", ctxt);
-
-+ if (src->protocol == VIR_STORAGE_NET_PROTOCOL_HTTP ||
-+ src->protocol == VIR_STORAGE_NET_PROTOCOL_HTTPS)
-+ src->query = virXMLPropString(node, "query");
-+
- if (virDomainStorageNetworkParseHosts(node, &src->hosts, &src->nhosts) < 0)
- return -1;
-
-@@ -24390,6 +24394,7 @@ virDomainDiskSourceFormatNetwork(virBufferPtr attrBuf,
- path = g_strdup_printf("%s/%s", src->volume, src->path);
-
- virBufferEscapeString(attrBuf, " name='%s'", path ? path : src->path);
-+ virBufferEscapeString(attrBuf, " query='%s'", src->query);
-
- if (src->haveTLS != VIR_TRISTATE_BOOL_ABSENT &&
- !(flags & VIR_DOMAIN_DEF_FORMAT_MIGRATABLE &&
-diff --git a/src/util/virstoragefile.c b/src/util/virstoragefile.c
-index f8d741f040..4082e3f5f7 100644
---- a/src/util/virstoragefile.c
-+++ b/src/util/virstoragefile.c
-@@ -2418,6 +2418,7 @@ virStorageSourceCopy(const virStorageSource *src,
- def->compat = g_strdup(src->compat);
- def->tlsAlias = g_strdup(src->tlsAlias);
- def->tlsCertdir = g_strdup(src->tlsCertdir);
-+ def->query = g_strdup(src->query);
-
- if (src->sliceStorage)
- def->sliceStorage = virStorageSourceSliceCopy(src->sliceStorage);
-@@ -2696,6 +2697,7 @@ virStorageSourceClear(virStorageSourcePtr def)
- VIR_FREE(def->volume);
- VIR_FREE(def->snapshot);
- VIR_FREE(def->configFile);
-+ VIR_FREE(def->query);
- virStorageSourceNetCookiesClear(def);
- virStorageSourcePoolDefFree(def->srcpool);
- virBitmapFree(def->features);
-diff --git a/src/util/virstoragefile.h b/src/util/virstoragefile.h
-index 0230f44652..8089d1e07f 100644
---- a/src/util/virstoragefile.h
-+++ b/src/util/virstoragefile.h
-@@ -285,6 +285,7 @@ struct _virStorageSource {
- char *snapshot; /* for storage systems supporting internal snapshots */
- char *configFile; /* some storage systems use config file as part of
- the source definition */
-+ char *query; /* query string for HTTP based protocols */
- size_t nhosts;
- virStorageNetHostDefPtr hosts;
- size_t ncookies;
-diff --git a/tests/qemuxml2argvdata/disk-network-http.xml b/tests/qemuxml2argvdata/disk-network-http.xml
-index 93e6617433..3abf499019 100644
---- a/tests/qemuxml2argvdata/disk-network-http.xml
-+++ b/tests/qemuxml2argvdata/disk-network-http.xml
-@@ -42,7 +42,7 @@
-
-
-
--
-+
-
-
-
-diff --git a/tests/qemuxml2xmloutdata/disk-network-http.x86_64-latest.xml b/tests/qemuxml2xmloutdata/disk-network-http.x86_64-latest.xml
-index 60073c227c..45b01841ec 100644
---- a/tests/qemuxml2xmloutdata/disk-network-http.x86_64-latest.xml
-+++ b/tests/qemuxml2xmloutdata/disk-network-http.x86_64-latest.xml
-@@ -46,7 +46,7 @@
-
-
-
--
-+
-
-
-
---
-2.26.0
-
diff --git a/SOURCES/libvirt-conf-Add-support-for-modifying-ssl-validation-for-https-ftps-disks.patch b/SOURCES/libvirt-conf-Add-support-for-modifying-ssl-validation-for-https-ftps-disks.patch
deleted file mode 100644
index 995852c..0000000
--- a/SOURCES/libvirt-conf-Add-support-for-modifying-ssl-validation-for-https-ftps-disks.patch
+++ /dev/null
@@ -1,242 +0,0 @@
-From ffe8028ca07eb049b12d5c152b3d66489378d731 Mon Sep 17 00:00:00 2001
-Message-Id:
-From: Peter Krempa
-Date: Mon, 16 Mar 2020 22:11:56 +0100
-Subject: [PATCH] conf: Add support for modifying ssl validation for https/ftps
- disks
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-To allow turning off verification of SSL cerificates add a new element
- to the disk source XML which will allow configuring the validation
-process using the 'verify' attribute.
-
-Signed-off-by: Peter Krempa
-Reviewed-by: Ján Tomko
-(cherry picked from commit 25481e25b14108373bf2e5e95c04fe30bff96bb4)
-
-https://bugzilla.redhat.com/show_bug.cgi?id=1804750
-Message-Id:
-Reviewed-by: Ján Tomko
----
- docs/formatdomain.html.in | 9 ++++
- docs/schemas/domaincommon.rng | 51 ++++++++++++++++++-
- src/conf/domain_conf.c | 19 +++++++
- src/util/virstoragefile.c | 1 +
- src/util/virstoragefile.h | 1 +
- .../disk-network-http.xml | 9 ++++
- 6 files changed, 88 insertions(+), 2 deletions(-)
-
-diff --git a/docs/formatdomain.html.in b/docs/formatdomain.html.in
-index e9830ab231..2cce247958 100644
---- a/docs/formatdomain.html.in
-+++ b/docs/formatdomain.html.in
-@@ -2847,6 +2847,7 @@
- <driver name='qemu' type='raw'/>
- <source protocol="https" name="url_path">
- <host name="hostname" port="443"/>
-+ <ssl verify="no"/>
- </source>
- <target dev='hdf' bus='ide' tray='open'/>
- <readonly/>
-@@ -3373,6 +3374,14 @@
- The offset
and size
values are in bytes.
- Since 6.1.0
-
-+ ssl
-+
-+ For https
and ftps
accessed storage it's
-+ possible to tweak the SSL transport parameters with this element.
-+ The verify
attribute allows to turn on or off SSL
-+ certificate validation. Supported values are yes
and
-+ no
. Since 6.2.0
-+
-
-
-
-diff --git a/docs/schemas/domaincommon.rng b/docs/schemas/domaincommon.rng
-index aa70e340b9..548601b61c 100644
---- a/docs/schemas/domaincommon.rng
-+++ b/docs/schemas/domaincommon.rng
-@@ -1808,12 +1808,39 @@
-
-
-
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+ https
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-
-
-
-
- http
-- https
-
-
-
-@@ -1825,13 +1852,31 @@
-
-
-
-+
-+
-+
-+
-+ ftps
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-
-
-
-
- sheepdog
- ftp
-- ftps
- tftp
-
-
-@@ -1909,6 +1954,8 @@
-
-
-
-+
-+
-
-
-
-diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
-index b3c4084c38..70bbc35bb3 100644
---- a/src/conf/domain_conf.c
-+++ b/src/conf/domain_conf.c
-@@ -9259,6 +9259,7 @@ virDomainDiskSourceNetworkParse(xmlNodePtr node,
- g_autofree char *protocol = NULL;
- g_autofree char *haveTLS = NULL;
- g_autofree char *tlsCfg = NULL;
-+ g_autofree char *sslverifystr = NULL;
-
- if (!(protocol = virXMLPropString(node, "protocol"))) {
- virReportError(VIR_ERR_XML_ERROR, "%s",
-@@ -9331,6 +9332,19 @@ virDomainDiskSourceNetworkParse(xmlNodePtr node,
-
- virStorageSourceInitiatorParseXML(ctxt, &src->initiator);
-
-+ if ((src->protocol == VIR_STORAGE_NET_PROTOCOL_HTTPS ||
-+ src->protocol == VIR_STORAGE_NET_PROTOCOL_FTPS) &&
-+ (sslverifystr = virXPathString("string(./ssl/@verify)", ctxt))) {
-+ int verify;
-+ if ((verify = virTristateBoolTypeFromString(sslverifystr)) < 0) {
-+ virReportError(VIR_ERR_XML_ERROR,
-+ _("invalid ssl verify mode '%s'"), sslverifystr);
-+ return -1;
-+ }
-+
-+ src->sslverify = verify;
-+ }
-+
- return 0;
- }
-
-@@ -24312,6 +24326,11 @@ virDomainDiskSourceFormatNetwork(virBufferPtr attrBuf,
-
- virStorageSourceInitiatorFormatXML(&src->initiator, childBuf);
-
-+ if (src->sslverify != VIR_TRISTATE_BOOL_ABSENT) {
-+ virBufferAsprintf(childBuf, " \n",
-+ virTristateBoolTypeToString(src->sslverify));
-+ }
-+
- return 0;
- }
-
-diff --git a/src/util/virstoragefile.c b/src/util/virstoragefile.c
-index b88763b267..cfa77fccf8 100644
---- a/src/util/virstoragefile.c
-+++ b/src/util/virstoragefile.c
-@@ -2270,6 +2270,7 @@ virStorageSourceCopy(const virStorageSource *src,
- def->cachemode = src->cachemode;
- def->discard = src->discard;
- def->detect_zeroes = src->detect_zeroes;
-+ def->sslverify = src->sslverify;
-
- /* storage driver metadata are not copied */
- def->drv = NULL;
-diff --git a/src/util/virstoragefile.h b/src/util/virstoragefile.h
-index 5b995d54ab..fab4248c3d 100644
---- a/src/util/virstoragefile.h
-+++ b/src/util/virstoragefile.h
-@@ -282,6 +282,7 @@ struct _virStorageSource {
- virStorageEncryptionPtr encryption;
- bool encryptionInherited;
- virStoragePRDefPtr pr;
-+ virTristateBool sslverify;
-
- virStorageSourceNVMeDefPtr nvme; /* type == VIR_STORAGE_TYPE_NVME */
-
-diff --git a/tests/genericxml2xmlindata/disk-network-http.xml b/tests/genericxml2xmlindata/disk-network-http.xml
-index fde1222fd0..bdcc1977f2 100644
---- a/tests/genericxml2xmlindata/disk-network-http.xml
-+++ b/tests/genericxml2xmlindata/disk-network-http.xml
-@@ -25,6 +25,7 @@
-
-
-
-+
-
-
-
-@@ -35,6 +36,14 @@
-
-
-
-+
-+
-+
-+
-+
-+
-+
-+
-
-
-
---
-2.25.1
-
diff --git a/SOURCES/libvirt-conf-Add-support-for-setting-timeout-and-readahead-size-for-network-disks.patch b/SOURCES/libvirt-conf-Add-support-for-setting-timeout-and-readahead-size-for-network-disks.patch
deleted file mode 100644
index 5fe493e..0000000
--- a/SOURCES/libvirt-conf-Add-support-for-setting-timeout-and-readahead-size-for-network-disks.patch
+++ /dev/null
@@ -1,205 +0,0 @@
-From 3050ddce41896311b8c3ad06f148bea358e597b8 Mon Sep 17 00:00:00 2001
-Message-Id: <3050ddce41896311b8c3ad06f148bea358e597b8@dist-git>
-From: Peter Krempa
-Date: Mon, 16 Mar 2020 22:11:58 +0100
-Subject: [PATCH] conf: Add support for setting timeout and readahead size for
- network disks
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Some disk backends support configuring the readahead buffer or timeout
-for requests. Add the knobs to the XML.
-
-Signed-off-by: Peter Krempa
-Reviewed-by: Ján Tomko
-(cherry picked from commit 63fd46177367c6653c4c986558f6d0e4a700cfcc)
-
-https://bugzilla.redhat.com/show_bug.cgi?id=1804750
-Message-Id: <2694bc6f9a327f89d82da18320e7137152915ad3.1584391727.git.pkrempa@redhat.com>
-Reviewed-by: Ján Tomko
----
- docs/formatdomain.html.in | 16 +++++++++++++
- docs/schemas/domaincommon.rng | 23 +++++++++++++++++++
- src/conf/domain_conf.c | 19 +++++++++++++++
- src/util/virstoragefile.c | 2 ++
- src/util/virstoragefile.h | 3 +++
- .../disk-network-http.xml | 2 ++
- 6 files changed, 65 insertions(+)
-
-diff --git a/docs/formatdomain.html.in b/docs/formatdomain.html.in
-index 5a10d64e83..2b8f9eabc2 100644
---- a/docs/formatdomain.html.in
-+++ b/docs/formatdomain.html.in
-@@ -2842,6 +2842,8 @@
- <cookies>
- <cookie name="test">somevalue</cookie>
- </cookies>
-+ <readahead size='65536'/>
-+ <timeout seconds='6'/>
- </source>
- <target dev='hde' bus='ide' tray='open'/>
- <readonly/>
-@@ -3392,6 +3394,20 @@
- must conform to the HTTP specification.
- Since 6.2.0
-
-+ readahead
-+
-+ Specifies the size of the readahead buffer for protocols
-+ which support it. (all 'curl' based drivers in qemu). The size
-+ is in bytes. Note that '0' is considered as if the value is not
-+ provided.
-+ Since 6.2.0
-+
-+ timeout
-+
-+ Specifies the connection timeout for protocols which support it.
-+ Note that '0' is considered as if the value is not provided.
-+ Since 6.2.0
-+
-
-
-
-diff --git a/docs/schemas/domaincommon.rng b/docs/schemas/domaincommon.rng
-index bdf35e64f6..3a0edbed97 100644
---- a/docs/schemas/domaincommon.rng
-+++ b/docs/schemas/domaincommon.rng
-@@ -1808,6 +1808,25 @@
-
-
-
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-
-
-
-@@ -1854,6 +1873,7 @@
-
-
-
-+
-
-
-
-@@ -1873,6 +1893,7 @@
-
-
-
-+
-
-
-
-@@ -1892,6 +1913,7 @@
-
-
-
-+
-
-
-
-@@ -1910,6 +1932,7 @@
-
-
-
-+
-
-
-
-diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
-index d066d3aac1..8aec85e83c 100644
---- a/src/conf/domain_conf.c
-+++ b/src/conf/domain_conf.c
-@@ -9409,6 +9409,19 @@ virDomainDiskSourceNetworkParse(xmlNodePtr node,
- return -1;
- }
-
-+ if (src->protocol == VIR_STORAGE_NET_PROTOCOL_HTTP ||
-+ src->protocol == VIR_STORAGE_NET_PROTOCOL_HTTPS ||
-+ src->protocol == VIR_STORAGE_NET_PROTOCOL_FTP ||
-+ src->protocol == VIR_STORAGE_NET_PROTOCOL_FTPS) {
-+
-+ if (virXPathULongLong("string(./readahead/@size)", ctxt, &src->readahead) == -2 ||
-+ virXPathULongLong("string(./timeout/@seconds)", ctxt, &src->timeout) == -2) {
-+ virReportError(VIR_ERR_XML_ERROR, "%s",
-+ _("invalid readahead size or timeout"));
-+ return -1;
-+ }
-+ }
-+
- return 0;
- }
-
-@@ -24413,6 +24426,12 @@ virDomainDiskSourceFormatNetwork(virBufferPtr attrBuf,
-
- virDomainDiskSourceFormatNetworkCookies(childBuf, src);
-
-+ if (src->readahead)
-+ virBufferAsprintf(childBuf, " \n", src->readahead);
-+
-+ if (src->timeout)
-+ virBufferAsprintf(childBuf, " \n", src->timeout);
-+
- return 0;
- }
-
-diff --git a/src/util/virstoragefile.c b/src/util/virstoragefile.c
-index 6350168d73..7893e054c3 100644
---- a/src/util/virstoragefile.c
-+++ b/src/util/virstoragefile.c
-@@ -2383,6 +2383,8 @@ virStorageSourceCopy(const virStorageSource *src,
- def->discard = src->discard;
- def->detect_zeroes = src->detect_zeroes;
- def->sslverify = src->sslverify;
-+ def->readahead = src->readahead;
-+ def->timeout = src->timeout;
-
- /* storage driver metadata are not copied */
- def->drv = NULL;
-diff --git a/src/util/virstoragefile.h b/src/util/virstoragefile.h
-index 1c7c046ad6..1abdaf89ce 100644
---- a/src/util/virstoragefile.h
-+++ b/src/util/virstoragefile.h
-@@ -296,6 +296,9 @@ struct _virStorageSource {
- bool encryptionInherited;
- virStoragePRDefPtr pr;
- virTristateBool sslverify;
-+ /* both values below have 0 as default value */
-+ unsigned long long readahead; /* size of the readahead buffer in bytes */
-+ unsigned long long timeout; /* connection timeout in seconds */
-
- virStorageSourceNVMeDefPtr nvme; /* type == VIR_STORAGE_TYPE_NVME */
-
-diff --git a/tests/genericxml2xmlindata/disk-network-http.xml b/tests/genericxml2xmlindata/disk-network-http.xml
-index bafb77c8ec..a8430b8365 100644
---- a/tests/genericxml2xmlindata/disk-network-http.xml
-+++ b/tests/genericxml2xmlindata/disk-network-http.xml
-@@ -49,6 +49,8 @@
- testcookievalue
- blurb
-
-+
-+
-
-
-
---
-2.25.1
-
diff --git a/SOURCES/libvirt-conf-Don-t-format-http-cookies-unless-VIR_DOMAIN_DEF_FORMAT_SECURE-is-used.patch b/SOURCES/libvirt-conf-Don-t-format-http-cookies-unless-VIR_DOMAIN_DEF_FORMAT_SECURE-is-used.patch
deleted file mode 100644
index 6c4c17c..0000000
--- a/SOURCES/libvirt-conf-Don-t-format-http-cookies-unless-VIR_DOMAIN_DEF_FORMAT_SECURE-is-used.patch
+++ /dev/null
@@ -1,58 +0,0 @@
-From 898e0003ae21e9fbe49995980c8746e9d2ac9b8b Mon Sep 17 00:00:00 2001
-Message-Id: <898e0003ae21e9fbe49995980c8746e9d2ac9b8b@dist-git>
-From: Peter Krempa
-Date: Tue, 23 Jun 2020 14:23:06 +0200
-Subject: [PATCH] conf: Don't format http cookies unless
- VIR_DOMAIN_DEF_FORMAT_SECURE is used
-
-Starting with 3b076391befc3fe72deb0c244ac6c2b4c100b410
-(v6.1.0-122-g3b076391be) we support http cookies. Since they may contain
-somewhat sensitive information we should not format them into the XML
-unless VIR_DOMAIN_DEF_FORMAT_SECURE is asserted.
-
-Reported-by: Han Han
-Signed-off-by: Peter Krempa
-Reviewed-by: Erik Skultety
-(cherry picked from commit a5b064bf4b17a9884d7d361733737fb614ad8979)
-
-CVE-2020-14301
-Message-Id: <592a0b594666f580e743b6bd2b4ddccbd1e0cc7c.1592914898.git.pkrempa@redhat.com>
-
-Reviewed-by: Jiri Denemark
----
- src/conf/domain_conf.c | 8 ++++++--
- 1 file changed, 6 insertions(+), 2 deletions(-)
-
-diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
-index ed9ca0e9d8..60962ee7c1 100644
---- a/src/conf/domain_conf.c
-+++ b/src/conf/domain_conf.c
-@@ -24377,11 +24377,15 @@ virDomainSourceDefFormatSeclabel(virBufferPtr buf,
-
- static void
- virDomainDiskSourceFormatNetworkCookies(virBufferPtr buf,
-- virStorageSourcePtr src)
-+ virStorageSourcePtr src,
-+ unsigned int flags)
- {
- g_auto(virBuffer) childBuf = VIR_BUFFER_INIT_CHILD(buf);
- size_t i;
-
-+ if (!(flags & VIR_DOMAIN_DEF_FORMAT_SECURE))
-+ return;
-+
- for (i = 0; i < src->ncookies; i++) {
- virBufferEscapeString(&childBuf, "", src->cookies[i]->name);
- virBufferEscapeString(&childBuf, "%s \n", src->cookies[i]->value);
-@@ -24442,7 +24446,7 @@ virDomainDiskSourceFormatNetwork(virBufferPtr attrBuf,
- virTristateBoolTypeToString(src->sslverify));
- }
-
-- virDomainDiskSourceFormatNetworkCookies(childBuf, src);
-+ virDomainDiskSourceFormatNetworkCookies(childBuf, src, flags);
-
- if (src->readahead)
- virBufferAsprintf(childBuf, " \n", src->readahead);
---
-2.27.0
-
diff --git a/SOURCES/libvirt-conf-Don-t-generate-machine-names-with-a-dot.patch b/SOURCES/libvirt-conf-Don-t-generate-machine-names-with-a-dot.patch
deleted file mode 100644
index 1a24e0b..0000000
--- a/SOURCES/libvirt-conf-Don-t-generate-machine-names-with-a-dot.patch
+++ /dev/null
@@ -1,97 +0,0 @@
-From 3ff27fe469c36e5655231f6759150350b17de298 Mon Sep 17 00:00:00 2001
-Message-Id: <3ff27fe469c36e5655231f6759150350b17de298@dist-git>
-From: Michal Privoznik
-Date: Fri, 13 Mar 2020 13:08:09 +0100
-Subject: [PATCH] conf: Don't generate machine names with a dot
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-According to the linked BZ, machined expects either valid
-hostname or valid FQDN (see systemd commit
-v239-3092-gd65652f1f2). While in case of multiple dots, a
-trailing one doesn't violate FQDN, it does violate the rule in
-case of something simple, like "domain.". But it's safe to remove
-it in both cases.
-
-Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1808499
-Fixes: 45464db8ba502764cf37ec9335770248bdb3d9a8
-
-Signed-off-by: Michal Privoznik
-Reviewed-by: Ján Tomko
-(cherry picked from commit 2695191a44eb7375225b4ad073825ed3563a172a)
-Signed-off-by: Michal Privoznik
-Message-Id: <355e05e31ec98522fa0e03a0c2c7af8ca097070d.1584101247.git.mprivozn@redhat.com>
-Reviewed-by: Ján Tomko
----
- src/conf/domain_conf.c | 14 +++++++-------
- tests/virsystemdtest.c | 5 +++--
- 2 files changed, 10 insertions(+), 9 deletions(-)
-
-diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
-index 4b297c96bc..b3c4084c38 100644
---- a/src/conf/domain_conf.c
-+++ b/src/conf/domain_conf.c
-@@ -30688,20 +30688,20 @@ static void
- virDomainMachineNameAppendValid(virBufferPtr buf,
- const char *name)
- {
-- bool skip_dot = false;
-+ bool skip = true;
-
- for (; *name; name++) {
- if (strlen(virBufferCurrentContent(buf)) >= 64)
- break;
-
-- if (*name == '.') {
-- if (!skip_dot)
-+ if (*name == '.' || *name == '-') {
-+ if (!skip)
- virBufferAddChar(buf, *name);
-- skip_dot = true;
-+ skip = true;
- continue;
- }
-
-- skip_dot = false;
-+ skip = false;
-
- if (!strchr(HOSTNAME_CHARS, *name))
- continue;
-@@ -30709,8 +30709,8 @@ virDomainMachineNameAppendValid(virBufferPtr buf,
- virBufferAddChar(buf, *name);
- }
-
-- /* trailing dashes are not allowed */
-- virBufferTrimChars(buf, "-");
-+ /* trailing dashes or dots are not allowed */
-+ virBufferTrimChars(buf, "-.");
- }
-
- #undef HOSTNAME_CHARS
-diff --git a/tests/virsystemdtest.c b/tests/virsystemdtest.c
-index 26876850b8..eb510b40e4 100644
---- a/tests/virsystemdtest.c
-+++ b/tests/virsystemdtest.c
-@@ -733,7 +733,7 @@ mymain(void)
- TEST_MACHINE("demo", 1, "qemu-1-demo");
- TEST_MACHINE("demo-name", 2, "qemu-2-demo-name");
- TEST_MACHINE("demo!name", 3, "qemu-3-demoname");
-- TEST_MACHINE(".demo", 4, "qemu-4-.demo");
-+ TEST_MACHINE(".demo", 4, "qemu-4-demo");
- TEST_MACHINE("bull\U0001f4a9", 5, "qemu-5-bull");
- TEST_MACHINE("demo..name", 6, "qemu-6-demo.name");
- TEST_MACHINE("12345678901234567890123456789012345678901234567890123456789", 7,
-@@ -743,7 +743,8 @@ mymain(void)
- TEST_MACHINE("kstest-network-device-default-httpks_(c9eed63e-981e-48ec-acdc-56b3f8c5f678)", 100,
- "qemu-100-kstest-network-device-default-httpksc9eed63e-981e-48ec");
- TEST_MACHINE("kstest-network-device-default-httpks_(c9eed63e-981e-48ec--cdc-56b3f8c5f678)", 10,
-- "qemu-10-kstest-network-device-default-httpksc9eed63e-981e-48ec");
-+ "qemu-10-kstest-network-device-default-httpksc9eed63e-981e-48ec-c");
-+ TEST_MACHINE("demo.-.test.", 11, "qemu-11-demo.test");
-
- # define TESTS_PM_SUPPORT_HELPER(name, function) \
- do { \
---
-2.25.1
-
diff --git a/SOURCES/libvirt-conf-Implement-support-for-slices-of-disk-source.patch b/SOURCES/libvirt-conf-Implement-support-for-slices-of-disk-source.patch
deleted file mode 100644
index 3083b2c..0000000
--- a/SOURCES/libvirt-conf-Implement-support-for-slices-of-disk-source.patch
+++ /dev/null
@@ -1,143 +0,0 @@
-From 6d5174acd7530d554ac2651f3e6a5da9f69fe6e4 Mon Sep 17 00:00:00 2001
-Message-Id: <6d5174acd7530d554ac2651f3e6a5da9f69fe6e4@dist-git>
-From: Peter Krempa
-Date: Wed, 19 Feb 2020 15:10:20 +0100
-Subject: [PATCH] conf: Implement support for of disk source
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Implement parsing and formatting of the 'storage' slice.
-
-Signed-off-by: Peter Krempa
-Reviewed-by: Ján Tomko
-(cherry picked from commit bbf5d05cfd003e33600009cac7ea98ef1539dd7c)
-
-https://bugzilla.redhat.com/show_bug.cgi?id=1791788
-Message-Id:
-Reviewed-by: Ján Tomko
----
- src/conf/domain_conf.c | 86 ++++++++++++++++++++++++++++++++++++++++++
- 1 file changed, 86 insertions(+)
-
-diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
-index b46b92aecf..5c11f49463 100644
---- a/src/conf/domain_conf.c
-+++ b/src/conf/domain_conf.c
-@@ -9441,6 +9441,57 @@ virDomainStorageSourceParseBase(const char *type,
- }
-
-
-+static virStorageSourceSlicePtr
-+virDomainStorageSourceParseSlice(xmlNodePtr node,
-+ xmlXPathContextPtr ctxt)
-+{
-+ VIR_XPATH_NODE_AUTORESTORE(ctxt);
-+ g_autofree char *offset = NULL;
-+ g_autofree char *size = NULL;
-+ g_autofree virStorageSourceSlicePtr ret = g_new0(virStorageSourceSlice, 1);
-+
-+ ctxt->node = node;
-+
-+ if (!(offset = virXPathString("string(./@offset)", ctxt)) ||
-+ !(size = virXPathString("string(./@size)", ctxt))) {
-+ virReportError(VIR_ERR_XML_ERROR, "%s",
-+ _("missing offset or size attribute of slice"));
-+ return NULL;
-+ }
-+
-+ if (virStrToLong_ullp(offset, NULL, 10, &ret->offset) < 0) {
-+ virReportError(VIR_ERR_XML_ERROR,
-+ _("malformed value '%s' of 'offset' attribute of slice"),
-+ offset);
-+ return NULL;
-+ }
-+
-+ if (virStrToLong_ullp(size, NULL, 10, &ret->size) < 0) {
-+ virReportError(VIR_ERR_XML_ERROR,
-+ _("malformed value '%s' of 'size' attribute of slice"),
-+ size);
-+ return NULL;
-+ }
-+
-+ return g_steal_pointer(&ret);
-+}
-+
-+
-+static int
-+virDomainStorageSourceParseSlices(virStorageSourcePtr src,
-+ xmlXPathContextPtr ctxt)
-+{
-+ xmlNodePtr node;
-+
-+ if ((node = virXPathNode("./slices/slice[@type='storage']", ctxt))) {
-+ if (!(src->sliceStorage = virDomainStorageSourceParseSlice(node, ctxt)))
-+ return -1;
-+ }
-+
-+ return 0;
-+}
-+
-+
- /**
- * virDomainStorageSourceParse:
- * @node: XML node pointing to the source element to parse
-@@ -9506,6 +9557,9 @@ virDomainStorageSourceParse(xmlNodePtr node,
- if (virDomainDiskSourcePRParse(node, ctxt, &src->pr) < 0)
- return -1;
-
-+ if (virDomainStorageSourceParseSlices(src, ctxt) < 0)
-+ return -1;
-+
- if (virSecurityDeviceLabelDefParseXML(&src->seclabels, &src->nseclabels,
- ctxt, flags) < 0)
- return -1;
-@@ -24226,6 +24280,36 @@ virDomainDiskSourceFormatPrivateData(virBufferPtr buf,
- }
-
-
-+static void
-+virDomainDiskSourceFormatSlice(virBufferPtr buf,
-+ const char *slicetype,
-+ virStorageSourceSlicePtr slice)
-+{
-+ g_auto(virBuffer) attrBuf = VIR_BUFFER_INITIALIZER;
-+
-+ if (!slice)
-+ return;
-+
-+ virBufferAsprintf(&attrBuf, " type='%s'", slicetype);
-+ virBufferAsprintf(&attrBuf, " offset='%llu'", slice->offset);
-+ virBufferAsprintf(&attrBuf, " size='%llu'", slice->size);
-+
-+ virXMLFormatElement(buf, "slice", &attrBuf, NULL);
-+}
-+
-+
-+static void
-+virDomainDiskSourceFormatSlices(virBufferPtr buf,
-+ virStorageSourcePtr src)
-+{
-+ g_auto(virBuffer) childBuf = VIR_BUFFER_INIT_CHILD(buf);
-+
-+ virDomainDiskSourceFormatSlice(&childBuf, "storage", src->sliceStorage);
-+
-+ virXMLFormatElement(buf, "slices", NULL, &childBuf);
-+}
-+
-+
- /**
- * virDomainDiskSourceFormat:
- * @buf: output buffer
-@@ -24296,6 +24380,8 @@ virDomainDiskSourceFormat(virBufferPtr buf,
- return -1;
- }
-
-+ virDomainDiskSourceFormatSlices(&childBuf, src);
-+
- if (src->type != VIR_STORAGE_TYPE_NETWORK)
- virDomainSourceDefFormatSeclabel(&childBuf, src->nseclabels,
- src->seclabels, flags);
---
-2.25.0
-
diff --git a/SOURCES/libvirt-conf-Introduce-VIR_DOMAIN_TIMER_NAME_ARMVTIMER.patch b/SOURCES/libvirt-conf-Introduce-VIR_DOMAIN_TIMER_NAME_ARMVTIMER.patch
deleted file mode 100644
index ba2679f..0000000
--- a/SOURCES/libvirt-conf-Introduce-VIR_DOMAIN_TIMER_NAME_ARMVTIMER.patch
+++ /dev/null
@@ -1,129 +0,0 @@
-From eb6bdf4798eea9bae5ddca1fdd13fb5ef6e99596 Mon Sep 17 00:00:00 2001
-Message-Id:
-From: Andrea Bolognani
-Date: Fri, 14 Feb 2020 13:12:35 +0100
-Subject: [PATCH] conf: Introduce VIR_DOMAIN_TIMER_NAME_ARMVTIMER
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-This new timer model will be used to control the behavior of the
-virtual timer for KVM ARM/virt guests.
-
-Signed-off-by: Andrea Bolognani
-Reviewed-by: Masayoshi Mizuma
-Reviewed-by: Ján Tomko
-(cherry picked from commit 3809e88a87e5898c9cf3a277cb32e20fca8fb2d0)
-
-https://bugzilla.redhat.com/show_bug.cgi?id=1762634
-
-Signed-off-by: Andrea Bolognani
-Message-Id: <20200214121237.623948-5-abologna@redhat.com>
-Reviewed-by: Ján Tomko
----
- docs/schemas/domaincommon.rng | 1 +
- src/conf/domain_conf.c | 1 +
- src/conf/domain_conf.h | 1 +
- src/libxl/libxl_conf.c | 1 +
- src/libxl/xen_common.c | 1 +
- src/qemu/qemu_command.c | 2 ++
- src/qemu/qemu_domain.c | 3 +++
- 7 files changed, 10 insertions(+)
-
-diff --git a/docs/schemas/domaincommon.rng b/docs/schemas/domaincommon.rng
-index 026e753567..19476a2735 100644
---- a/docs/schemas/domaincommon.rng
-+++ b/docs/schemas/domaincommon.rng
-@@ -1239,6 +1239,7 @@
-
- hpet
- pit
-+ armvtimer
-
-
-
-diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
-index 58f72b3b0f..68d9ce9c4e 100644
---- a/src/conf/domain_conf.c
-+++ b/src/conf/domain_conf.c
-@@ -1062,6 +1062,7 @@ VIR_ENUM_IMPL(virDomainTimerName,
- "tsc",
- "kvmclock",
- "hypervclock",
-+ "armvtimer",
- );
-
- VIR_ENUM_IMPL(virDomainTimerTrack,
-diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h
-index ee8eb3ddc0..ef2c1b80f7 100644
---- a/src/conf/domain_conf.h
-+++ b/src/conf/domain_conf.h
-@@ -1989,6 +1989,7 @@ typedef enum {
- VIR_DOMAIN_TIMER_NAME_TSC,
- VIR_DOMAIN_TIMER_NAME_KVMCLOCK,
- VIR_DOMAIN_TIMER_NAME_HYPERVCLOCK,
-+ VIR_DOMAIN_TIMER_NAME_ARMVTIMER,
-
- VIR_DOMAIN_TIMER_NAME_LAST
- } virDomainTimerNameType;
-diff --git a/src/libxl/libxl_conf.c b/src/libxl/libxl_conf.c
-index 2488bb9d32..ffac890262 100644
---- a/src/libxl/libxl_conf.c
-+++ b/src/libxl/libxl_conf.c
-@@ -361,6 +361,7 @@ libxlMakeDomBuildInfo(virDomainDefPtr def,
- case VIR_DOMAIN_TIMER_NAME_HYPERVCLOCK:
- case VIR_DOMAIN_TIMER_NAME_RTC:
- case VIR_DOMAIN_TIMER_NAME_PIT:
-+ case VIR_DOMAIN_TIMER_NAME_ARMVTIMER:
- virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
- _("unsupported timer type (name) '%s'"),
- virDomainTimerNameTypeToString(clock.timers[i]->name));
-diff --git a/src/libxl/xen_common.c b/src/libxl/xen_common.c
-index 415549a42c..9a385eba0d 100644
---- a/src/libxl/xen_common.c
-+++ b/src/libxl/xen_common.c
-@@ -2182,6 +2182,7 @@ xenFormatCPUFeatures(virConfPtr conf, virDomainDefPtr def)
- case VIR_DOMAIN_TIMER_NAME_HYPERVCLOCK:
- case VIR_DOMAIN_TIMER_NAME_RTC:
- case VIR_DOMAIN_TIMER_NAME_PIT:
-+ case VIR_DOMAIN_TIMER_NAME_ARMVTIMER:
- virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
- _("unsupported timer type (name) '%s'"),
- virDomainTimerNameTypeToString(def->clock.timers[i]->name));
-diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c
-index 0ad09baa1d..e1e19e0fcc 100644
---- a/src/qemu/qemu_command.c
-+++ b/src/qemu/qemu_command.c
-@@ -6200,6 +6200,7 @@ qemuBuildClockCommandLine(virCommandPtr cmd,
- case VIR_DOMAIN_TIMER_NAME_TSC:
- case VIR_DOMAIN_TIMER_NAME_KVMCLOCK:
- case VIR_DOMAIN_TIMER_NAME_HYPERVCLOCK:
-+ case VIR_DOMAIN_TIMER_NAME_ARMVTIMER:
- /* Timers above are handled when building -cpu. */
- case VIR_DOMAIN_TIMER_NAME_LAST:
- break;
-@@ -6631,6 +6632,7 @@ qemuBuildCpuCommandLine(virCommandPtr cmd,
- if (timer->frequency > 0)
- virBufferAsprintf(&buf, ",tsc-frequency=%lu", timer->frequency);
- break;
-+ case VIR_DOMAIN_TIMER_NAME_ARMVTIMER:
- case VIR_DOMAIN_TIMER_NAME_PLATFORM:
- case VIR_DOMAIN_TIMER_NAME_PIT:
- case VIR_DOMAIN_TIMER_NAME_RTC:
-diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c
-index 846d1ecb29..4de4f9da53 100644
---- a/src/qemu/qemu_domain.c
-+++ b/src/qemu/qemu_domain.c
-@@ -5504,6 +5504,9 @@ qemuDomainDefValidateClockTimers(const virDomainDef *def,
- return -1;
- }
- break;
-+
-+ case VIR_DOMAIN_TIMER_NAME_ARMVTIMER:
-+ break;
- }
- }
-
---
-2.25.0
-
diff --git a/SOURCES/libvirt-conf-Move-and-rename-virDomainParseScaledValue.patch b/SOURCES/libvirt-conf-Move-and-rename-virDomainParseScaledValue.patch
deleted file mode 100644
index 52e7f0b..0000000
--- a/SOURCES/libvirt-conf-Move-and-rename-virDomainParseScaledValue.patch
+++ /dev/null
@@ -1,357 +0,0 @@
-From 0cee78aa69f5e3317b5e4853454a108e597228e5 Mon Sep 17 00:00:00 2001
-Message-Id: <0cee78aa69f5e3317b5e4853454a108e597228e5@dist-git>
-From: Michal Privoznik
-Date: Wed, 7 Oct 2020 18:45:33 +0200
-Subject: [PATCH] conf: Move and rename virDomainParseScaledValue()
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-There is nothing domain specific about the function, thus it
-should not have virDomain prefix. Also, the fact that it is a
-static function makes it impossible to use from other files.
-Move the function to virxml.c and drop the 'Domain' infix.
-
-Signed-off-by: Michal Privoznik
-Reviewed-by: Daniel Henrique Barboza
-(cherry picked from commit 04bd77a19f8312493151ce377da40577b1470a0b)
-
-Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1749518
-
-Conflicts:
-- src/conf/domain_conf.c: Some context mismatch, and some areas
-the original commit changes don't exist in this old libvirt yet
-or the calls are in other places because of refactors.
-
-Signed-off-by: Michal Privoznik
-Message-Id: <26a847deef5941fd90f892cf5fe1443cf3fc90ca.1602087923.git.mprivozn@redhat.com>
-Reviewed-by: Ján Tomko
----
- src/conf/domain_conf.c | 135 ++++++++++-----------------------------
- src/libvirt_private.syms | 1 +
- src/util/virxml.c | 72 +++++++++++++++++++++
- src/util/virxml.h | 8 +++
- 4 files changed, 114 insertions(+), 102 deletions(-)
-
-diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
-index 306926b64c..484f3b4352 100644
---- a/src/conf/domain_conf.c
-+++ b/src/conf/domain_conf.c
-@@ -10644,75 +10644,6 @@ virDomainDiskDefParseXML(virDomainXMLOptionPtr xmlopt,
- goto cleanup;
- }
-
--/**
-- * virDomainParseScaledValue:
-- * @xpath: XPath to memory amount
-- * @units_xpath: XPath to units attribute
-- * @ctxt: XPath context
-- * @val: scaled value is stored here
-- * @scale: default scale for @val
-- * @max: maximal @val allowed
-- * @required: is the value required?
-- *
-- * Parse a value located at @xpath within @ctxt, and store the
-- * result into @val. The value is scaled by units located at
-- * @units_xpath (or the 'unit' attribute under @xpath if
-- * @units_xpath is NULL). If units are not present, the default
-- * @scale is used. If @required is set, then the value must
-- * exist; otherwise, the value is optional. The resulting value
-- * is in bytes.
-- *
-- * Returns 1 on success,
-- * 0 if the value was not present and !@required,
-- * -1 on failure after issuing error.
-- */
--static int
--virDomainParseScaledValue(const char *xpath,
-- const char *units_xpath,
-- xmlXPathContextPtr ctxt,
-- unsigned long long *val,
-- unsigned long long scale,
-- unsigned long long max,
-- bool required)
--{
-- unsigned long long bytes;
-- g_autofree char *xpath_full = NULL;
-- g_autofree char *unit = NULL;
-- g_autofree char *bytes_str = NULL;
--
-- *val = 0;
-- xpath_full = g_strdup_printf("string(%s)", xpath);
--
-- bytes_str = virXPathString(xpath_full, ctxt);
-- if (!bytes_str) {
-- if (!required)
-- return 0;
-- virReportError(VIR_ERR_XML_ERROR,
-- _("missing element or attribute '%s'"),
-- xpath);
-- return -1;
-- }
-- VIR_FREE(xpath_full);
--
-- if (virStrToLong_ullp(bytes_str, NULL, 10, &bytes) < 0) {
-- virReportError(VIR_ERR_XML_ERROR,
-- _("Invalid value '%s' for element or attribute '%s'"),
-- bytes_str, xpath);
-- return -1;
-- }
--
-- if (units_xpath)
-- xpath_full = g_strdup_printf("string(%s)", units_xpath);
-- else
-- xpath_full = g_strdup_printf("string(%s/@unit)", xpath);
-- unit = virXPathString(xpath_full, ctxt);
--
-- if (virScaleInteger(&bytes, unit, scale, max) < 0)
-- return -1;
--
-- *val = bytes;
-- return 1;
--}
-
-
- /**
-@@ -10749,8 +10680,8 @@ virDomainParseMemory(const char *xpath,
-
- max = virMemoryMaxValue(capped);
-
-- if (virDomainParseScaledValue(xpath, units_xpath, ctxt,
-- &bytes, 1024, max, required) < 0)
-+ if (virParseScaledValue(xpath, units_xpath, ctxt,
-+ &bytes, 1024, max, required) < 0)
- return -1;
-
- /* Yes, we really do use kibibytes for our internal sizing. */
-@@ -10792,9 +10723,9 @@ virDomainParseMemoryLimit(const char *xpath,
- int ret;
- unsigned long long bytes;
-
-- ret = virDomainParseScaledValue(xpath, units_xpath, ctxt, &bytes, 1024,
-- VIR_DOMAIN_MEMORY_PARAM_UNLIMITED << 10,
-- false);
-+ ret = virParseScaledValue(xpath, units_xpath, ctxt, &bytes, 1024,
-+ VIR_DOMAIN_MEMORY_PARAM_UNLIMITED << 10,
-+ false);
-
- if (ret < 0)
- return -1;
-@@ -11125,9 +11056,9 @@ virDomainControllerDefParseXML(virDomainXMLOptionPtr xmlopt,
- "have an address"));
- goto error;
- }
-- if ((rc = virDomainParseScaledValue("./pcihole64", NULL,
-- ctxt, &bytes, 1024,
-- 1024ULL * ULONG_MAX, false)) < 0)
-+ if ((rc = virParseScaledValue("./pcihole64", NULL,
-+ ctxt, &bytes, 1024,
-+ 1024ULL * ULONG_MAX, false)) < 0)
- goto error;
-
- if (rc == 1)
-@@ -11349,14 +11280,14 @@ virDomainFSDefParseXML(virDomainXMLOptionPtr xmlopt,
- }
- }
-
-- if (virDomainParseScaledValue("./space_hard_limit[1]",
-- NULL, ctxt, &def->space_hard_limit,
-- 1, ULLONG_MAX, false) < 0)
-+ if (virParseScaledValue("./space_hard_limit[1]",
-+ NULL, ctxt, &def->space_hard_limit,
-+ 1, ULLONG_MAX, false) < 0)
- goto error;
-
-- if (virDomainParseScaledValue("./space_soft_limit[1]",
-- NULL, ctxt, &def->space_soft_limit,
-- 1, ULLONG_MAX, false) < 0)
-+ if (virParseScaledValue("./space_soft_limit[1]",
-+ NULL, ctxt, &def->space_soft_limit,
-+ 1, ULLONG_MAX, false) < 0)
- goto error;
-
- cur = node->children;
-@@ -15205,8 +15136,8 @@ virDomainShmemDefParseXML(virDomainXMLOptionPtr xmlopt,
- goto cleanup;
- }
-
-- if (virDomainParseScaledValue("./size[1]", NULL, ctxt,
-- &def->size, 1, ULLONG_MAX, false) < 0)
-+ if (virParseScaledValue("./size[1]", NULL, ctxt,
-+ &def->size, 1, ULLONG_MAX, false) < 0)
- goto cleanup;
-
- if ((server = virXPathNode("./server[1]", ctxt))) {
-@@ -19603,9 +19534,9 @@ virDomainCachetuneDefParseCache(xmlXPathContextPtr ctxt,
- return -1;
- }
-
-- if (virDomainParseScaledValue("./@size", "./@unit",
-- ctxt, &size, 1024,
-- ULLONG_MAX, true) < 0)
-+ if (virParseScaledValue("./@size", "./@unit",
-+ ctxt, &size, 1024,
-+ ULLONG_MAX, true) < 0)
- return -1;
-
- if (virResctrlAllocSetCacheSize(alloc, level, type, cache, size) < 0)
-@@ -20712,13 +20643,13 @@ virDomainDefParseXML(xmlDocPtr xml,
- VIR_FREE(tmp);
- }
-
-- if (virDomainParseScaledValue("./features/hpt/maxpagesize",
-- NULL,
-- ctxt,
-- &def->hpt_maxpagesize,
-- 1024,
-- ULLONG_MAX,
-- false) < 0) {
-+ if (virParseScaledValue("./features/hpt/maxpagesize",
-+ NULL,
-+ ctxt,
-+ &def->hpt_maxpagesize,
-+ 1024,
-+ ULLONG_MAX,
-+ false) < 0) {
- virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
- "%s",
- _("Unable to parse HPT maxpagesize setting"));
-@@ -20944,13 +20875,13 @@ virDomainDefParseXML(xmlDocPtr xml,
- }
-
- if (def->features[VIR_DOMAIN_FEATURE_SMM] == VIR_TRISTATE_SWITCH_ON) {
-- int rv = virDomainParseScaledValue("string(./features/smm/tseg)",
-- "string(./features/smm/tseg/@unit)",
-- ctxt,
-- &def->tseg_size,
-- 1024 * 1024, /* Defaults to mebibytes */
-- ULLONG_MAX,
-- false);
-+ int rv = virParseScaledValue("string(./features/smm/tseg)",
-+ "string(./features/smm/tseg/@unit)",
-+ ctxt,
-+ &def->tseg_size,
-+ 1024 * 1024, /* Defaults to mebibytes */
-+ ULLONG_MAX,
-+ false);
- if (rv < 0)
- goto error;
- def->tseg_specified = rv;
-diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms
-index 130828706a..acb25eb8c8 100644
---- a/src/libvirt_private.syms
-+++ b/src/libvirt_private.syms
-@@ -3442,6 +3442,7 @@ virVsockSetGuestCid;
-
-
- # util/virxml.h
-+virParseScaledValue;
- virXMLCheckIllegalChars;
- virXMLChildElementCount;
- virXMLExtractNamespaceXML;
-diff --git a/src/util/virxml.c b/src/util/virxml.c
-index 0e66d1623b..bae2e6aca5 100644
---- a/src/util/virxml.c
-+++ b/src/util/virxml.c
-@@ -33,6 +33,7 @@
- #include "viralloc.h"
- #include "virfile.h"
- #include "virstring.h"
-+#include "virutil.h"
-
- #define VIR_FROM_THIS VIR_FROM_XML
-
-@@ -1433,3 +1434,74 @@ virXMLNamespaceRegister(xmlXPathContextPtr ctxt,
-
- return 0;
- }
-+
-+
-+/**
-+ * virParseScaledValue:
-+ * @xpath: XPath to memory amount
-+ * @units_xpath: XPath to units attribute
-+ * @ctxt: XPath context
-+ * @val: scaled value is stored here
-+ * @scale: default scale for @val
-+ * @max: maximal @val allowed
-+ * @required: is the value required?
-+ *
-+ * Parse a value located at @xpath within @ctxt, and store the
-+ * result into @val. The value is scaled by units located at
-+ * @units_xpath (or the 'unit' attribute under @xpath if
-+ * @units_xpath is NULL). If units are not present, the default
-+ * @scale is used. If @required is set, then the value must
-+ * exist; otherwise, the value is optional. The resulting value
-+ * is in bytes.
-+ *
-+ * Returns 1 on success,
-+ * 0 if the value was not present and !@required,
-+ * -1 on failure after issuing error.
-+ */
-+int
-+virParseScaledValue(const char *xpath,
-+ const char *units_xpath,
-+ xmlXPathContextPtr ctxt,
-+ unsigned long long *val,
-+ unsigned long long scale,
-+ unsigned long long max,
-+ bool required)
-+{
-+ unsigned long long bytes;
-+ g_autofree char *xpath_full = NULL;
-+ g_autofree char *unit = NULL;
-+ g_autofree char *bytes_str = NULL;
-+
-+ *val = 0;
-+ xpath_full = g_strdup_printf("string(%s)", xpath);
-+
-+ bytes_str = virXPathString(xpath_full, ctxt);
-+ if (!bytes_str) {
-+ if (!required)
-+ return 0;
-+ virReportError(VIR_ERR_XML_ERROR,
-+ _("missing element or attribute '%s'"),
-+ xpath);
-+ return -1;
-+ }
-+ VIR_FREE(xpath_full);
-+
-+ if (virStrToLong_ullp(bytes_str, NULL, 10, &bytes) < 0) {
-+ virReportError(VIR_ERR_XML_ERROR,
-+ _("Invalid value '%s' for element or attribute '%s'"),
-+ bytes_str, xpath);
-+ return -1;
-+ }
-+
-+ if (units_xpath)
-+ xpath_full = g_strdup_printf("string(%s)", units_xpath);
-+ else
-+ xpath_full = g_strdup_printf("string(%s/@unit)", xpath);
-+ unit = virXPathString(xpath_full, ctxt);
-+
-+ if (virScaleInteger(&bytes, unit, scale, max) < 0)
-+ return -1;
-+
-+ *val = bytes;
-+ return 1;
-+}
-diff --git a/src/util/virxml.h b/src/util/virxml.h
-index 26ab9f9c2d..39b261687a 100644
---- a/src/util/virxml.h
-+++ b/src/util/virxml.h
-@@ -269,3 +269,11 @@ virXMLNamespaceFormatNS(virBufferPtr buf,
- int
- virXMLNamespaceRegister(xmlXPathContextPtr ctxt,
- virXMLNamespace const *ns);
-+
-+int virParseScaledValue(const char *xpath,
-+ const char *units_xpath,
-+ xmlXPathContextPtr ctxt,
-+ unsigned long long *val,
-+ unsigned long long scale,
-+ unsigned long long max,
-+ bool required);
---
-2.29.2
-
diff --git a/SOURCES/libvirt-conf-Parse-and-format-HMAT.patch b/SOURCES/libvirt-conf-Parse-and-format-HMAT.patch
deleted file mode 100644
index 6f3d8f6..0000000
--- a/SOURCES/libvirt-conf-Parse-and-format-HMAT.patch
+++ /dev/null
@@ -1,877 +0,0 @@
-From 17e9b949ec3876e74bcaa217810afbd46f297a65 Mon Sep 17 00:00:00 2001
-Message-Id: <17e9b949ec3876e74bcaa217810afbd46f297a65@dist-git>
-From: Michal Privoznik
-Date: Wed, 7 Oct 2020 18:45:39 +0200
-Subject: [PATCH] conf: Parse and format HMAT
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-To cite ACPI specification:
-
- Heterogeneous Memory Attribute Table describes the memory
- attributes, such as memory side cache attributes and bandwidth
- and latency details, related to the System Physical Address
- (SPA) Memory Ranges. The software is expected to use this
- information as hint for optimization.
-
-According to our upstream discussion [1] this is exposed under
- as under NUMA | and or
- under numa/latencies.
-
-1: https://www.redhat.com/archives/libvir-list/2020-January/msg00422.html
-
-Signed-off-by: Michal Privoznik
-Reviewed-by: Daniel Henrique Barboza
-(cherry picked from commit a89bbbac86383a10be0cec5a93feb7ed820871eb)
-
-Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1749518
-
-Conflicts:
-- src/conf/numa_conf.c: Context, because we're not using
-VIR_XPATH_NODE_AUTORESTORE() everywhere in the old code.
-
-Signed-off-by: Michal Privoznik
-Message-Id:
-Reviewed-by: Ján Tomko
----
- docs/formatdomain.html.in | 107 +++++++
- docs/schemas/cputypes.rng | 110 ++++++-
- src/conf/numa_conf.c | 349 ++++++++++++++++++++-
- src/conf/numa_conf.h | 33 ++
- src/libvirt_private.syms | 6 +
- tests/qemuxml2argvdata/numatune-hmat.xml | 52 +++
- tests/qemuxml2xmloutdata/numatune-hmat.xml | 1 +
- tests/qemuxml2xmltest.c | 1 +
- 8 files changed, 644 insertions(+), 15 deletions(-)
- create mode 100644 tests/qemuxml2argvdata/numatune-hmat.xml
- create mode 120000 tests/qemuxml2xmloutdata/numatune-hmat.xml
-
-diff --git a/docs/formatdomain.html.in b/docs/formatdomain.html.in
-index 4b8d312596..bec753e37f 100644
---- a/docs/formatdomain.html.in
-+++ b/docs/formatdomain.html.in
-@@ -1874,6 +1874,113 @@
- using 10 for local and 20 for remote distances.
-
-
-+
-+
-+
-+...
-+<cpu>
-+ ...
-+ <numa>
-+ <cell id='0' cpus='0-3' memory='512000' unit='KiB' discard='yes'/>
-+ <cell id='1' cpus='4-7' memory='512000' unit='KiB' memAccess='shared'/>
-+ <cell id='3' cpus='0-3' memory='2097152' unit='KiB'>
-+ <cache level='1' associativity='direct' policy='writeback'>
-+ <size value='10' unit='KiB'/>
-+ <line value='8' unit='B'/>
-+ </cache>
-+ </cell>
-+ <interconnects>
-+ <latency initiator='0' target='0' type='access' value='5'/>
-+ <latency initiator='0' target='0' cache='1' type='access' value='10'/>
-+ <bandwidth initiator='0' target='0' type='access' value='204800' unit='KiB'/>
-+ </interconnects>
-+ </numa>
-+ ...
-+</cpu>
-+...
-+
-+
-+ Since 6.6.0 the cell
element can
-+ have a cache
child element which describes memory side cache
-+ for memory proximity domains. The cache
element has a
-+ level
attribute describing the cache level and thus the
-+ element can be repeated multiple times to describe different levels of
-+ the cache.
-+
-+
-+
-+ The cache
element then has following mandatory attributes:
-+
-+
-+
-+ level
-+
-+ Level of the cache this description refers to.
-+
-+
-+ associativity
-+
-+ Describes cache associativity (accepted values are none
,
-+ direct
and full
).
-+
-+
-+ policy
-+
-+ Describes cache write associativity (accepted values are
-+ none
, writeback
and
-+ writethrough
).
-+
-+
-+
-+
-+ The cache
element has two mandatory child elements then:
-+ size
and line
which describe cache size and
-+ cache line size. Both elements accept two attributes: value
-+ and unit
which set the value of corresponding cache
-+ attribute.
-+
-+
-+
-+ The NUMA description has an optional interconnects
element that
-+ describes the normalized memory read/write latency, read/write bandwidth
-+ between Initiator Proximity Domains (Processor or I/O) and Target
-+ Proximity Domains (Memory).
-+
-+
-+
-+ The interconnects
element can have zero or more
-+ latency
child elements to describe latency between two
-+ memory nodes and zero or more bandwidth
child elements to
-+ describe bandwidth between two memory nodes. Both these have the
-+ following mandatory attributes:
-+
-+
-+
-+ initiator
-+ Refers to the source NUMA node
-+
-+ target
-+ Refers to the target NUMA node
-+
-+ type
-+ The type of the access. Accepted values: access
,
-+ read
, write
-+
-+ value
-+ The actual value. For latency this is delay in nanoseconds, for
-+ bandwidth this value is in kibibytes per second. Use additional
-+ unit
attribute to change the units.
-+
-+
-+
-+ To describe latency from one NUMA node to a cache of another NUMA node
-+ the latency
element has optional cache
-+ attribute which in combination with target
attribute creates
-+ full reference to distant NUMA node's cache level. For instance,
-+ target='0' cache='1'
refers to the first level cache of NUMA
-+ node 0.
-+
-+
-
-
-
-diff --git a/docs/schemas/cputypes.rng b/docs/schemas/cputypes.rng
-index a1682a1003..ba30dbf9ff 100644
---- a/docs/schemas/cputypes.rng
-+++ b/docs/schemas/cputypes.rng
-@@ -102,9 +102,14 @@
-
-
-
--
--
--
-+
-+
-+
-+
-+
-+
-+
-+
-
-
-
-@@ -148,6 +153,9 @@
-
-
-
-+
-+
-+
-
-
-
-@@ -162,6 +170,102 @@
-
-
-
-+
-+
-+
-+
-+
-+
-+
-+ none
-+ direct
-+ full
-+
-+
-+
-+
-+ none
-+ writeback
-+ writethrough
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+ access
-+ read
-+ write
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+ access
-+ read
-+ write
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-
-
-
-diff --git a/src/conf/numa_conf.c b/src/conf/numa_conf.c
-index a805336d16..5c764190c3 100644
---- a/src/conf/numa_conf.c
-+++ b/src/conf/numa_conf.c
-@@ -59,9 +59,37 @@ VIR_ENUM_IMPL(virDomainMemoryAccess,
- "private",
- );
-
-+VIR_ENUM_IMPL(virDomainCacheAssociativity,
-+ VIR_DOMAIN_CACHE_ASSOCIATIVITY_LAST,
-+ "none",
-+ "direct",
-+ "full",
-+);
-+
-+VIR_ENUM_IMPL(virDomainCachePolicy,
-+ VIR_DOMAIN_CACHE_POLICY_LAST,
-+ "none",
-+ "writeback",
-+ "writethrough",
-+);
-+
-+VIR_ENUM_IMPL(virDomainMemoryLatency,
-+ VIR_DOMAIN_MEMORY_LATENCY_LAST,
-+ "none",
-+ "access",
-+ "read",
-+ "write"
-+);
-+
- typedef struct _virDomainNumaDistance virDomainNumaDistance;
- typedef virDomainNumaDistance *virDomainNumaDistancePtr;
-
-+typedef struct _virDomainNumaCache virDomainNumaCache;
-+typedef virDomainNumaCache *virDomainNumaCachePtr;
-+
-+typedef struct _virDomainNumaInterconnect virDomainNumaInterconnect;
-+typedef virDomainNumaInterconnect *virDomainNumaInterconnectPtr;
-+
- typedef struct _virDomainNumaNode virDomainNumaNode;
- typedef virDomainNumaNode *virDomainNumaNodePtr;
-
-@@ -86,9 +114,30 @@ struct _virDomainNuma {
- unsigned int cellid;
- } *distances; /* remote node distances */
- size_t ndistances;
-+
-+ struct _virDomainNumaCache {
-+ unsigned int level; /* cache level */
-+ unsigned int size; /* cache size */
-+ unsigned int line; /* line size, !!! in bytes !!! */
-+ virDomainCacheAssociativity associativity; /* cache associativity */
-+ virDomainCachePolicy policy; /* cache policy */
-+ } *caches;
-+ size_t ncaches;
- } *mem_nodes; /* guest node configuration */
- size_t nmem_nodes;
-
-+ struct _virDomainNumaInterconnect {
-+ virDomainNumaInterconnectType type; /* whether structure describes latency
-+ or bandwidth */
-+ unsigned int initiator; /* the initiator NUMA node */
-+ unsigned int target; /* the target NUMA node */
-+ unsigned int cache; /* the target cache on @target; if 0 then the
-+ memory on @target */
-+ virDomainMemoryLatency accessType; /* what type of access is defined */
-+ unsigned long value; /* value itself */
-+ } *interconnects;
-+ size_t ninterconnects;
-+
- /* Future NUMA tuning related stuff should go here. */
- };
-
-@@ -368,9 +417,13 @@ virDomainNumaFree(virDomainNumaPtr numa)
-
- if (numa->mem_nodes[i].ndistances > 0)
- VIR_FREE(numa->mem_nodes[i].distances);
-+
-+ VIR_FREE(numa->mem_nodes[i].caches);
- }
- VIR_FREE(numa->mem_nodes);
-
-+ VIR_FREE(numa->interconnects);
-+
- VIR_FREE(numa);
- }
-
-@@ -841,6 +894,97 @@ virDomainNumaDefNodeDistanceParseXML(virDomainNumaPtr def,
- return ret;
- }
-
-+
-+static int
-+virDomainNumaDefNodeCacheParseXML(virDomainNumaPtr def,
-+ xmlXPathContextPtr ctxt,
-+ unsigned int cur_cell)
-+{
-+ g_autofree xmlNodePtr *nodes = NULL;
-+ int n;
-+ size_t i;
-+
-+ if ((n = virXPathNodeSet("./cache", ctxt, &nodes)) < 0)
-+ return -1;
-+
-+ def->mem_nodes[cur_cell].caches = g_new0(virDomainNumaCache, n);
-+
-+ for (i = 0; i < n; i++) {
-+ VIR_XPATH_NODE_AUTORESTORE(ctxt);
-+ virDomainNumaCachePtr cache = &def->mem_nodes[cur_cell].caches[i];
-+ g_autofree char *tmp = NULL;
-+ unsigned int level;
-+ int associativity;
-+ int policy;
-+ unsigned long long size;
-+ unsigned long long line;
-+
-+ if (!(tmp = virXMLPropString(nodes[i], "level"))) {
-+ virReportError(VIR_ERR_XML_ERROR,
-+ _("Missing 'level' attribute in cache "
-+ "element for NUMA node %d"),
-+ cur_cell);
-+ return -1;
-+ }
-+
-+ if (virStrToLong_uip(tmp, NULL, 10, &level) < 0 ||
-+ level == 0) {
-+ virReportError(VIR_ERR_XML_ERROR,
-+ _("Invalid 'level' attribute in cache "
-+ "element for NUMA node %d"),
-+ cur_cell);
-+ return -1;
-+ }
-+ VIR_FREE(tmp);
-+
-+ if (!(tmp = virXMLPropString(nodes[i], "associativity"))) {
-+ virReportError(VIR_ERR_XML_ERROR,
-+ _("Missing 'associativity' attribute in cache "
-+ "element for NUMA node %d"),
-+ cur_cell);
-+ return -1;
-+ }
-+
-+ if ((associativity = virDomainCacheAssociativityTypeFromString(tmp)) < 0) {
-+ virReportError(VIR_ERR_XML_ERROR,
-+ _("Invalid cache associativity '%s'"),
-+ tmp);
-+ return -1;
-+ }
-+ VIR_FREE(tmp);
-+
-+ if (!(tmp = virXMLPropString(nodes[i], "policy"))) {
-+ virReportError(VIR_ERR_XML_ERROR,
-+ _("Missing 'policy' attribute in cache "
-+ "element for NUMA node %d"),
-+ cur_cell);
-+ }
-+
-+ if ((policy = virDomainCachePolicyTypeFromString(tmp)) < 0) {
-+ virReportError(VIR_ERR_XML_ERROR,
-+ _("Invalid cache policy '%s'"),
-+ tmp);
-+ return -1;
-+ }
-+ VIR_FREE(tmp);
-+
-+ ctxt->node = nodes[i];
-+ if (virDomainParseMemory("./size/@value", "./size/unit",
-+ ctxt, &size, true, false) < 0)
-+ return -1;
-+
-+ if (virParseScaledValue("./line/@value", "./line/unit",
-+ ctxt, &line, 1, ULLONG_MAX, true) < 0)
-+ return -1;
-+
-+ *cache = (virDomainNumaCache){level, size, line, associativity, policy};
-+ def->mem_nodes[cur_cell].ncaches++;
-+ }
-+
-+ return 0;
-+}
-+
-+
- int
- virDomainNumaDefParseXML(virDomainNumaPtr def,
- xmlXPathContextPtr ctxt)
-@@ -867,6 +1011,7 @@ virDomainNumaDefParseXML(virDomainNumaPtr def,
- def->nmem_nodes = n;
-
- for (i = 0; i < n; i++) {
-+ VIR_XPATH_NODE_AUTORESTORE(ctxt);
- int rc;
- unsigned int cur_cell = i;
-
-@@ -953,7 +1098,109 @@ virDomainNumaDefParseXML(virDomainNumaPtr def,
-
- /* Parse NUMA distances info */
- if (virDomainNumaDefNodeDistanceParseXML(def, ctxt, cur_cell) < 0)
-+ goto cleanup;
-+
-+ /* Parse cache info */
-+ if (virDomainNumaDefNodeCacheParseXML(def, ctxt, cur_cell) < 0)
-+ goto cleanup;
-+ }
-+
-+ VIR_FREE(nodes);
-+ if ((n = virXPathNodeSet("./cpu/numa[1]/interconnects[1]/latency|"
-+ "./cpu/numa[1]/interconnects[1]/bandwidth", ctxt, &nodes)) < 0)
-+ goto cleanup;
-+
-+ def->interconnects = g_new0(virDomainNumaInterconnect, n);
-+ for (i = 0; i < n; i++) {
-+ virDomainNumaInterconnectType type;
-+ unsigned int initiator;
-+ unsigned int target;
-+ unsigned int cache = 0;
-+ int accessType;
-+ unsigned long long value;
-+
-+ if (virXMLNodeNameEqual(nodes[i], "latency")) {
-+ type = VIR_DOMAIN_NUMA_INTERCONNECT_TYPE_LATENCY;
-+
-+ if (!(tmp = virXMLPropString(nodes[i], "value"))) {
-+ virReportError(VIR_ERR_XML_ERROR, "%s",
-+ _("Missing 'value' attribute in NUMA interconnects"));
- goto cleanup;
-+ }
-+
-+ if (virStrToLong_ullp(tmp, NULL, 10, &value) < 0) {
-+ virReportError(VIR_ERR_XML_ERROR, "%s",
-+ _("Invalid 'value' attribute in NUMA interconnects"));
-+ goto cleanup;
-+ }
-+ VIR_FREE(tmp);
-+ } else if (virXMLNodeNameEqual(nodes[i], "bandwidth")) {
-+ VIR_XPATH_NODE_AUTORESTORE(ctxt);
-+ type = VIR_DOMAIN_NUMA_INTERCONNECT_TYPE_BANDWIDTH;
-+
-+ ctxt->node = nodes[i];
-+
-+ if (virDomainParseMemory("./@value", "./@unit", ctxt, &value, true, false) < 0)
-+ goto cleanup;
-+ } else {
-+ /* Ignore yet unknown child elements. */
-+ continue;
-+ }
-+
-+ if (!(tmp = virXMLPropString(nodes[i], "initiator"))) {
-+ virReportError(VIR_ERR_XML_ERROR, "%s",
-+ _("Missing 'initiator' attribute in NUMA interconnects"));
-+ goto cleanup;
-+ }
-+
-+ if (virStrToLong_uip(tmp, NULL, 10, &initiator) < 0) {
-+ virReportError(VIR_ERR_XML_ERROR, "%s",
-+ _("Invalid 'initiator' attribute in NUMA interconnects"));
-+ goto cleanup;
-+ }
-+ VIR_FREE(tmp);
-+
-+ if (!(tmp = virXMLPropString(nodes[i], "target"))) {
-+ virReportError(VIR_ERR_XML_ERROR, "%s",
-+ _("Missing 'target' attribute in NUMA interconnects"));
-+ goto cleanup;
-+ }
-+
-+ if (virStrToLong_uip(tmp, NULL, 10, &target) < 0) {
-+ virReportError(VIR_ERR_XML_ERROR, "%s",
-+ _("Invalid 'target' attribute in NUMA interconnects"));
-+ goto cleanup;
-+ }
-+ VIR_FREE(tmp);
-+
-+
-+ /* cache attribute is optional */
-+ if ((tmp = virXMLPropString(nodes[i], "cache"))) {
-+ if (virStrToLong_uip(tmp, NULL, 10, &cache) < 0 ||
-+ cache == 0) {
-+ virReportError(VIR_ERR_XML_ERROR, "%s",
-+ _("Invalid 'cache' attribute in NUMA interconnects"));
-+ goto cleanup;
-+ }
-+ }
-+ VIR_FREE(tmp);
-+
-+ if (!(tmp = virXMLPropString(nodes[i], "type"))) {
-+ virReportError(VIR_ERR_XML_ERROR, "%s",
-+ _("Missing 'type' attribute in NUMA interconnects"));
-+ goto cleanup;
-+ }
-+
-+ if ((accessType = virDomainMemoryLatencyTypeFromString(tmp)) <= 0) {
-+ virReportError(VIR_ERR_XML_ERROR, "%s",
-+ _("Invalid 'type' attribute in NUMA interconnects"));
-+ goto cleanup;
-+ }
-+ VIR_FREE(tmp);
-+
-+ def->interconnects[i] = (virDomainNumaInterconnect) {type, initiator, target,
-+ cache, accessType, value};
-+ def->ninterconnects++;
- }
-
- ret = 0;
-@@ -983,6 +1230,7 @@ virDomainNumaDefFormatXML(virBufferPtr buf,
- for (i = 0; i < ncells; i++) {
- virBitmapPtr cpumask = virDomainNumaGetNodeCpumask(def, i);
- int ndistances;
-+ size_t ncaches;
-
- memAccess = virDomainNumaGetNodeMemoryAccessMode(def, i);
- discard = virDomainNumaGetNodeDiscard(def, i);
-@@ -1009,30 +1257,107 @@ virDomainNumaDefFormatXML(virBufferPtr buf,
- virTristateBoolTypeToString(discard));
-
- ndistances = def->mem_nodes[i].ndistances;
-- if (ndistances == 0) {
-+ ncaches = def->mem_nodes[i].ncaches;
-+ if (ndistances == 0 && ncaches == 0) {
- virBufferAddLit(buf, "/>\n");
- } else {
- size_t j;
-- virDomainNumaDistancePtr distances = def->mem_nodes[i].distances;
-
- virBufferAddLit(buf, ">\n");
- virBufferAdjustIndent(buf, 2);
-- virBufferAddLit(buf, "\n");
-- virBufferAdjustIndent(buf, 2);
-- for (j = 0; j < ndistances; j++) {
-- if (distances[j].value) {
-- virBufferAddLit(buf, " \n");
-+
-+ if (ndistances) {
-+ virDomainNumaDistancePtr distances = def->mem_nodes[i].distances;
-+
-+ virBufferAddLit(buf, "\n");
-+ virBufferAdjustIndent(buf, 2);
-+ for (j = 0; j < ndistances; j++) {
-+ if (distances[j].value) {
-+ virBufferAddLit(buf, " \n");
-+ }
- }
-+ virBufferAdjustIndent(buf, -2);
-+ virBufferAddLit(buf, " \n");
-+ }
-+
-+ for (j = 0; j < ncaches; j++) {
-+ virDomainNumaCachePtr cache = &def->mem_nodes[i].caches[j];
-+
-+ virBufferAsprintf(buf, "level);
-+ if (cache->associativity) {
-+ virBufferAsprintf(buf, " associativity='%s'",
-+ virDomainCacheAssociativityTypeToString(cache->associativity));
-+ }
-+
-+ if (cache->policy) {
-+ virBufferAsprintf(buf, " policy='%s'",
-+ virDomainCachePolicyTypeToString(cache->policy));
-+ }
-+ virBufferAddLit(buf, ">\n");
-+
-+ virBufferAdjustIndent(buf, 2);
-+ virBufferAsprintf(buf,
-+ " \n",
-+ cache->size);
-+
-+ if (cache->line) {
-+ virBufferAsprintf(buf,
-+ " \n",
-+ cache->line);
-+ }
-+
-+ virBufferAdjustIndent(buf, -2);
-+ virBufferAddLit(buf, " \n");
- }
-- virBufferAdjustIndent(buf, -2);
-- virBufferAddLit(buf, " \n");
- virBufferAdjustIndent(buf, -2);
- virBufferAddLit(buf, "\n");
- }
- }
-+
-+ if (def->ninterconnects) {
-+ virBufferAddLit(buf, "\n");
-+ virBufferAdjustIndent(buf, 2);
-+ }
-+
-+ for (i = 0; i < def->ninterconnects; i++) {
-+ virDomainNumaInterconnectPtr l = &def->interconnects[i];
-+
-+ switch (l->type) {
-+ case VIR_DOMAIN_NUMA_INTERCONNECT_TYPE_LATENCY:
-+ virBufferAddLit(buf, "initiator, l->target);
-+
-+ if (l->cache > 0) {
-+ virBufferAsprintf(buf,
-+ " cache='%u'",
-+ l->cache);
-+ }
-+
-+ virBufferAsprintf(buf,
-+ " type='%s' value='%lu'",
-+ virDomainMemoryLatencyTypeToString(l->accessType),
-+ l->value);
-+
-+ if (l->type == VIR_DOMAIN_NUMA_INTERCONNECT_TYPE_BANDWIDTH)
-+ virBufferAddLit(buf, " unit='KiB'");
-+ virBufferAddLit(buf, "/>\n");
-+ }
-+
-+ if (def->ninterconnects) {
-+ virBufferAdjustIndent(buf, -2);
-+ virBufferAddLit(buf, " \n");
-+ }
-+
- virBufferAdjustIndent(buf, -2);
- virBufferAddLit(buf, "\n");
-
-diff --git a/src/conf/numa_conf.h b/src/conf/numa_conf.h
-index 6808439a7c..5043c5a6d4 100644
---- a/src/conf/numa_conf.h
-+++ b/src/conf/numa_conf.h
-@@ -52,6 +52,39 @@ typedef enum {
- } virDomainMemoryAccess;
- VIR_ENUM_DECL(virDomainMemoryAccess);
-
-+typedef enum {
-+ VIR_DOMAIN_CACHE_ASSOCIATIVITY_NONE, /* No associativity */
-+ VIR_DOMAIN_CACHE_ASSOCIATIVITY_DIRECT, /* Direct mapped cache */
-+ VIR_DOMAIN_CACHE_ASSOCIATIVITY_FULL, /* Fully associative cache */
-+
-+ VIR_DOMAIN_CACHE_ASSOCIATIVITY_LAST
-+} virDomainCacheAssociativity;
-+VIR_ENUM_DECL(virDomainCacheAssociativity);
-+
-+typedef enum {
-+ VIR_DOMAIN_CACHE_POLICY_NONE, /* No policy */
-+ VIR_DOMAIN_CACHE_POLICY_WRITEBACK, /* Write-back policy */
-+ VIR_DOMAIN_CACHE_POLICY_WRITETHROUGH, /* Write-through policy */
-+
-+ VIR_DOMAIN_CACHE_POLICY_LAST
-+} virDomainCachePolicy;
-+VIR_ENUM_DECL(virDomainCachePolicy);
-+
-+typedef enum {
-+ VIR_DOMAIN_NUMA_INTERCONNECT_TYPE_LATENCY,
-+ VIR_DOMAIN_NUMA_INTERCONNECT_TYPE_BANDWIDTH,
-+} virDomainNumaInterconnectType;
-+
-+typedef enum {
-+ VIR_DOMAIN_MEMORY_LATENCY_NONE = 0, /* No memory latency defined */
-+ VIR_DOMAIN_MEMORY_LATENCY_ACCESS, /* Access latency */
-+ VIR_DOMAIN_MEMORY_LATENCY_READ, /* Read latency */
-+ VIR_DOMAIN_MEMORY_LATENCY_WRITE, /* Write latency */
-+
-+ VIR_DOMAIN_MEMORY_LATENCY_LAST
-+} virDomainMemoryLatency;
-+VIR_ENUM_DECL(virDomainMemoryLatency);
-+
-
- virDomainNumaPtr virDomainNumaNew(void);
- void virDomainNumaFree(virDomainNumaPtr numa);
-diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms
-index acb25eb8c8..de95e3b116 100644
---- a/src/libvirt_private.syms
-+++ b/src/libvirt_private.syms
-@@ -808,8 +808,14 @@ virNodeDeviceDeleteVport;
- virNodeDeviceGetParentName;
-
- # conf/numa_conf.h
-+virDomainCacheAssociativityTypeFromString;
-+virDomainCacheAssociativityTypeToString;
-+virDomainCachePolicyTypeFromString;
-+virDomainCachePolicyTypeToString;
- virDomainMemoryAccessTypeFromString;
- virDomainMemoryAccessTypeToString;
-+virDomainMemoryLatencyTypeFromString;
-+virDomainMemoryLatencyTypeToString;
- virDomainNumaCheckABIStability;
- virDomainNumaEquals;
- virDomainNumaFree;
-diff --git a/tests/qemuxml2argvdata/numatune-hmat.xml b/tests/qemuxml2argvdata/numatune-hmat.xml
-new file mode 100644
-index 0000000000..83f0b56c9b
---- /dev/null
-+++ b/tests/qemuxml2argvdata/numatune-hmat.xml
-@@ -0,0 +1,52 @@
-+
-+ QEMUGuest
-+ c7a5fdb2-cdaf-9455-926a-d65c16db1809
-+ 8388608
-+ 8388608
-+ 12
-+
-+ hvm
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+ |
-+ |
-+ |
-+ |
-+ |
-+ |
-+
-+
-+
-+
-+
-+
-+
-+
-+ destroy
-+ restart
-+ restart
-+
-+ /usr/bin/qemu-system-x86_64
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-diff --git a/tests/qemuxml2xmloutdata/numatune-hmat.xml b/tests/qemuxml2xmloutdata/numatune-hmat.xml
-new file mode 120000
-index 0000000000..6903a80ab1
---- /dev/null
-+++ b/tests/qemuxml2xmloutdata/numatune-hmat.xml
-@@ -0,0 +1 @@
-+../qemuxml2argvdata/numatune-hmat.xml
-\ No newline at end of file
-diff --git a/tests/qemuxml2xmltest.c b/tests/qemuxml2xmltest.c
-index 1ddeba30f0..de1d720e1d 100644
---- a/tests/qemuxml2xmltest.c
-+++ b/tests/qemuxml2xmltest.c
-@@ -1106,6 +1106,7 @@ mymain(void)
- DO_TEST("numatune-memnode-no-memory", QEMU_CAPS_OBJECT_MEMORY_FILE);
- DO_TEST("numatune-distances", QEMU_CAPS_NUMA, QEMU_CAPS_NUMA_DIST);
- DO_TEST("numatune-no-vcpu", QEMU_CAPS_NUMA);
-+ DO_TEST("numatune-hmat", NONE);
-
- DO_TEST("bios-nvram", NONE);
- DO_TEST("bios-nvram-os-interleave", NONE);
---
-2.29.2
-
diff --git a/SOURCES/libvirt-conf-Validate-NUMA-HMAT-configuration.patch b/SOURCES/libvirt-conf-Validate-NUMA-HMAT-configuration.patch
deleted file mode 100644
index 1ca6905..0000000
--- a/SOURCES/libvirt-conf-Validate-NUMA-HMAT-configuration.patch
+++ /dev/null
@@ -1,166 +0,0 @@
-From 0ae283a1cb5224f3eb4fa32706e9b9c212577e51 Mon Sep 17 00:00:00 2001
-Message-Id: <0ae283a1cb5224f3eb4fa32706e9b9c212577e51@dist-git>
-From: Michal Privoznik
-Date: Wed, 7 Oct 2020 18:45:40 +0200
-Subject: [PATCH] conf: Validate NUMA HMAT configuration
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-There are several restrictions, for instance @initiator and
-@target have to refer to existing NUMA nodes (daa), @cache has to
-refer to a defined cache level and so on.
-
-Signed-off-by: Michal Privoznik
-Reviewed-by: Daniel Henrique Barboza
-(cherry picked from commit f0611fe8830543d03d1871422f8c542453f0c8db)
-
-Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1749518
-
-Signed-off-by: Michal Privoznik
-Message-Id:
-Reviewed-by: Ján Tomko
----
- src/conf/domain_conf.c | 3 ++
- src/conf/numa_conf.c | 99 ++++++++++++++++++++++++++++++++++++++++++
- src/conf/numa_conf.h | 1 +
- 3 files changed, 103 insertions(+)
-
-diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
-index 3229d5ec95..f41559f33e 100644
---- a/src/conf/domain_conf.c
-+++ b/src/conf/domain_conf.c
-@@ -7144,6 +7144,9 @@ virDomainDefValidateInternal(const virDomainDef *def,
- if (virDomainDefCputuneValidate(def) < 0)
- return -1;
-
-+ if (virDomainNumaDefValidate(def->numa) < 0)
-+ return -1;
-+
- return 0;
- }
-
-diff --git a/src/conf/numa_conf.c b/src/conf/numa_conf.c
-index 5c764190c3..c90fb01bb6 100644
---- a/src/conf/numa_conf.c
-+++ b/src/conf/numa_conf.c
-@@ -1365,6 +1365,105 @@ virDomainNumaDefFormatXML(virBufferPtr buf,
- }
-
-
-+int
-+virDomainNumaDefValidate(const virDomainNuma *def)
-+{
-+ size_t i;
-+ size_t j;
-+
-+ if (!def)
-+ return 0;
-+
-+ for (i = 0; i < def->nmem_nodes; i++) {
-+ const virDomainNumaNode *node = &def->mem_nodes[i];
-+ g_autoptr(virBitmap) levelsSeen = virBitmapNewEmpty();
-+
-+ for (j = 0; j < node->ncaches; j++) {
-+ const virDomainNumaCache *cache = &node->caches[j];
-+
-+ /* Relax this if there's ever fourth layer of cache */
-+ if (cache->level > 3) {
-+ virReportError(VIR_ERR_XML_ERROR, "%s",
-+ _("Ain't nobody heard of that much cache level"));
-+ return -1;
-+ }
-+
-+ if (virBitmapIsBitSet(levelsSeen, cache->level)) {
-+ virReportError(VIR_ERR_XML_ERROR,
-+ _("Cache level '%u' already defined"),
-+ cache->level);
-+ return -1;
-+ }
-+
-+ if (virBitmapSetBitExpand(levelsSeen, cache->level))
-+ return -1;
-+ }
-+ }
-+
-+ for (i = 0; i < def->ninterconnects; i++) {
-+ const virDomainNumaInterconnect *l = &def->interconnects[i];
-+
-+ if (l->initiator >= def->nmem_nodes) {
-+ virReportError(VIR_ERR_XML_ERROR, "%s",
-+ _("'initiator' refers to a non-existent NUMA node"));
-+ return -1;
-+ }
-+
-+ if (l->target >= def->nmem_nodes) {
-+ virReportError(VIR_ERR_XML_ERROR, "%s",
-+ _("'target' refers to a non-existent NUMA node"));
-+ return -1;
-+ }
-+
-+ if (!def->mem_nodes[l->initiator].cpumask) {
-+ virReportError(VIR_ERR_XML_ERROR, "%s",
-+ _("NUMA nodes without CPUs can't be initiator"));
-+ return -1;
-+ }
-+
-+ if (l->cache > 0) {
-+ for (j = 0; j < def->mem_nodes[l->target].ncaches; j++) {
-+ const virDomainNumaCache *cache = def->mem_nodes[l->target].caches;
-+
-+ if (l->cache == cache->level)
-+ break;
-+ }
-+
-+ if (j == def->mem_nodes[l->target].ncaches) {
-+ virReportError(VIR_ERR_XML_ERROR, "%s",
-+ _("'cache' refers to a non-existent NUMA node cache"));
-+ return -1;
-+ }
-+ }
-+
-+ for (j = 0; j < i; j++) {
-+ const virDomainNumaInterconnect *ll = &def->interconnects[j];
-+
-+ if (l->type == ll->type &&
-+ l->initiator == ll->initiator &&
-+ l->target == ll->target &&
-+ l->cache == ll->cache &&
-+ l->accessType == ll->accessType) {
-+ virReportError(VIR_ERR_XML_ERROR, "%s",
-+ _("Duplicate info for NUMA latencies"));
-+ return -1;
-+ }
-+
-+
-+ if (l->initiator != l->target &&
-+ l->initiator == ll->target &&
-+ l->target == ll->initiator) {
-+ virReportError(VIR_ERR_XML_ERROR, "%s",
-+ _("Link already defined"));
-+ return -1;
-+ }
-+ }
-+ }
-+
-+ return 0;
-+}
-+
-+
- unsigned int
- virDomainNumaGetCPUCountTotal(virDomainNumaPtr numa)
- {
-diff --git a/src/conf/numa_conf.h b/src/conf/numa_conf.h
-index 5043c5a6d4..2963004c94 100644
---- a/src/conf/numa_conf.h
-+++ b/src/conf/numa_conf.h
-@@ -217,5 +217,6 @@ bool virDomainNumatuneNodeSpecified(virDomainNumaPtr numatune,
-
- int virDomainNumaDefParseXML(virDomainNumaPtr def, xmlXPathContextPtr ctxt);
- int virDomainNumaDefFormatXML(virBufferPtr buf, virDomainNumaPtr def);
-+int virDomainNumaDefValidate(const virDomainNuma *def);
-
- unsigned int virDomainNumaGetCPUCountTotal(virDomainNumaPtr numa);
---
-2.29.2
-
diff --git a/SOURCES/libvirt-conf-add-new-PCI_CONNECT-flag-AUTOASSIGN.patch b/SOURCES/libvirt-conf-add-new-PCI_CONNECT-flag-AUTOASSIGN.patch
deleted file mode 100644
index 7e0dba2..0000000
--- a/SOURCES/libvirt-conf-add-new-PCI_CONNECT-flag-AUTOASSIGN.patch
+++ /dev/null
@@ -1,87 +0,0 @@
-From 2780cb41f7682741be2bbe662d629dd1bd3b4f6e Mon Sep 17 00:00:00 2001
-Message-Id: <2780cb41f7682741be2bbe662d629dd1bd3b4f6e@dist-git>
-From: Laine Stump
-Date: Sun, 26 Apr 2020 13:04:10 -0400
-Subject: [PATCH] conf: add new PCI_CONNECT flag AUTOASSIGN
-
-This new flag will be set for any controller that we decide can have
-devices assigned to it automatically during PCI device assignment. In
-the past PCI_CONNECT_TYPE_HOTPLUGGABLE was used for this purpose, but
-that is overloading that flag, and no longer technically correct; what
-we *really* want is to auto-assign devices to any pcie-root-port or
-pcie-switch-downstream-port regardless of whether or not that
-controller happens to have hotplug enabled.
-
-This patch just adds the flag, but doesn't use it at all. Note that
-the numbering of all the other flags was changed in order to insert
-the new flag near the beginning of the list; that doesn't cause any
-problem because the connect flags aren't stored anywhere between runs
-of libvirtd.
-
-Signed-off-by: Laine Stump
-Reviewed-by: Michal Privoznik
-(cherry picked from commit c296a846ad7de3066a17404f4f407d3e1b6d7935)
-
-https://bugzilla.redhat.com/1802592
-Signed-off-by: Laine Stump
-Message-Id: <20200426170415.18328-8-laine@redhat.com>
-Reviewed-by: Michal Privoznik
----
- src/conf/domain_addr.h | 41 +++++++++++++++++++++--------------------
- 1 file changed, 21 insertions(+), 20 deletions(-)
-
-diff --git a/src/conf/domain_addr.h b/src/conf/domain_addr.h
-index dcb90618f8..40738ddb72 100644
---- a/src/conf/domain_addr.h
-+++ b/src/conf/domain_addr.h
-@@ -32,26 +32,27 @@ typedef enum {
- } virPCIDeviceAddressExtensionFlags;
-
- typedef enum {
-- VIR_PCI_CONNECT_HOTPLUGGABLE = 1 << 0, /* is hotplug needed/supported */
--
-- /* set for devices that can share a single slot in auto-assignment
-- * (by assigning one device to each of the 8 functions on the slot)
-- */
-- VIR_PCI_CONNECT_AGGREGATE_SLOT = 1 << 1,
--
-- /* kinds of devices as a bitmap so they can be combined (some PCI
-- * controllers permit connecting multiple types of devices)
-- */
-- VIR_PCI_CONNECT_TYPE_PCI_DEVICE = 1 << 2,
-- VIR_PCI_CONNECT_TYPE_PCIE_DEVICE = 1 << 3,
-- VIR_PCI_CONNECT_TYPE_PCIE_ROOT_PORT = 1 << 4,
-- VIR_PCI_CONNECT_TYPE_PCIE_SWITCH_UPSTREAM_PORT = 1 << 5,
-- VIR_PCI_CONNECT_TYPE_PCIE_SWITCH_DOWNSTREAM_PORT = 1 << 6,
-- VIR_PCI_CONNECT_TYPE_DMI_TO_PCI_BRIDGE = 1 << 7,
-- VIR_PCI_CONNECT_TYPE_PCI_EXPANDER_BUS = 1 << 8,
-- VIR_PCI_CONNECT_TYPE_PCIE_EXPANDER_BUS = 1 << 9,
-- VIR_PCI_CONNECT_TYPE_PCI_BRIDGE = 1 << 10,
-- VIR_PCI_CONNECT_TYPE_PCIE_TO_PCI_BRIDGE = 1 << 11,
-+ VIR_PCI_CONNECT_AUTOASSIGN = 1 << 0, /* okay to autoassign a device to this controller */
-+ VIR_PCI_CONNECT_HOTPLUGGABLE = 1 << 1, /* is hotplug needed/supported */
-+
-+ /* set for devices that can share a single slot in auto-assignment
-+ * (by assigning one device to each of the 8 functions on the slot)
-+ */
-+ VIR_PCI_CONNECT_AGGREGATE_SLOT = 1 << 2,
-+
-+ /* kinds of devices as a bitmap so they can be combined (some PCI
-+ * controllers permit connecting multiple types of devices)
-+ */
-+ VIR_PCI_CONNECT_TYPE_PCI_DEVICE = 1 << 3,
-+ VIR_PCI_CONNECT_TYPE_PCIE_DEVICE = 1 << 4,
-+ VIR_PCI_CONNECT_TYPE_PCIE_ROOT_PORT = 1 << 5,
-+ VIR_PCI_CONNECT_TYPE_PCIE_SWITCH_UPSTREAM_PORT = 1 << 6,
-+ VIR_PCI_CONNECT_TYPE_PCIE_SWITCH_DOWNSTREAM_PORT = 1 << 7,
-+ VIR_PCI_CONNECT_TYPE_DMI_TO_PCI_BRIDGE = 1 << 8,
-+ VIR_PCI_CONNECT_TYPE_PCI_EXPANDER_BUS = 1 << 9,
-+ VIR_PCI_CONNECT_TYPE_PCIE_EXPANDER_BUS = 1 << 10,
-+ VIR_PCI_CONNECT_TYPE_PCI_BRIDGE = 1 << 11,
-+ VIR_PCI_CONNECT_TYPE_PCIE_TO_PCI_BRIDGE = 1 << 12,
- } virDomainPCIConnectFlags;
-
- /* a combination of all bits that describe the type of connections
---
-2.26.2
-
diff --git a/SOURCES/libvirt-conf-add-support-for-specifying-CPU-dies-parameter.patch b/SOURCES/libvirt-conf-add-support-for-specifying-CPU-dies-parameter.patch
deleted file mode 100644
index 341c98f..0000000
--- a/SOURCES/libvirt-conf-add-support-for-specifying-CPU-dies-parameter.patch
+++ /dev/null
@@ -1,1510 +0,0 @@
-From c86535685add6ff59a6cce0fa48ee27a23d71815 Mon Sep 17 00:00:00 2001
-Message-Id:
-From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?=
-Date: Mon, 3 Feb 2020 18:07:22 +0000
-Subject: [PATCH] conf: add support for specifying CPU "dies" parameter
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Recently CPU hardware vendors have started to support a new structure
-inside the CPU package topology known as a "die". Thus the hierarchy
-is now:
-
- sockets > dies > cores > threads
-
-This adds support for "dies" in the XML parser, with the value
-defaulting to 1 if not specified for backwards compatibility.
-
-For example a system with 64 logical CPUs might report
-
-
-
-Reviewed-by: Jiri Denemark
-Reviewed-by: Daniel Henrique Barboza
-Signed-off-by: Daniel P. Berrangé
-(cherry picked from commit fbf27730a36da573b1065c179f4d96b9a751f22f)
-
-BZ: https://bugzilla.redhat.com/show_bug.cgi?id=1785207
-BZ: https://bugzilla.redhat.com/show_bug.cgi?id=1785211
-Message-Id: <20200203180726.2203691-2-berrange@redhat.com>
-Reviewed-by: Jiri Denemark
----
- docs/formatcaps.html.in | 2 +-
- docs/formatdomain.html.in | 22 ++++++++++--------
- docs/schemas/cputypes.rng | 5 ++++
- src/bhyve/bhyve_command.c | 5 ++++
- src/conf/cpu_conf.c | 23 +++++++++++++++++--
- src/conf/cpu_conf.h | 1 +
- src/conf/domain_conf.c | 3 ++-
- src/cpu/cpu.c | 1 +
- src/libxl/libxl_capabilities.c | 1 +
- src/qemu/qemu_command.c | 5 ++++
- src/vmx/vmx.c | 7 ++++++
- .../x86_64-host+guest,model486-result.xml | 2 +-
- .../x86_64-host+guest,models-result.xml | 2 +-
- .../cputestdata/x86_64-host+guest-result.xml | 2 +-
- tests/cputestdata/x86_64-host+guest.xml | 2 +-
- .../x86_64-host+host-model-nofallback.xml | 2 +-
- ...t-Haswell-noTSX+Haswell,haswell-result.xml | 2 +-
- ...ell-noTSX+Haswell-noTSX,haswell-result.xml | 2 +-
- ...ost-Haswell-noTSX+Haswell-noTSX-result.xml | 2 +-
- .../x86_64-host-worse+guest-result.xml | 2 +-
- .../ppc64-modern-bulk-result-conf.xml | 2 +-
- .../ppc64-modern-bulk-result-live.xml | 2 +-
- .../ppc64-modern-individual-result-conf.xml | 2 +-
- .../ppc64-modern-individual-result-live.xml | 2 +-
- .../x86-modern-bulk-result-conf.xml | 2 +-
- .../x86-modern-bulk-result-live.xml | 2 +-
- .../x86-modern-individual-add-result-conf.xml | 2 +-
- .../x86-modern-individual-add-result-live.xml | 2 +-
- .../x86-old-bulk-result-conf.xml | 2 +-
- .../x86-old-bulk-result-live.xml | 2 +-
- .../cpu-hotplug-granularity.xml | 2 +-
- .../qemuxml2argvdata/cpu-hotplug-startup.xml | 2 +-
- tests/qemuxml2argvdata/cpu-numa-disjoint.xml | 2 +-
- .../qemuxml2argvdata/cpu-numa-disordered.xml | 2 +-
- tests/qemuxml2argvdata/cpu-numa-memshared.xml | 2 +-
- .../cpu-numa-no-memory-element.xml | 2 +-
- tests/qemuxml2argvdata/cpu-numa1.xml | 2 +-
- tests/qemuxml2argvdata/cpu-numa2.xml | 2 +-
- tests/qemuxml2argvdata/cpu-numa3.xml | 2 +-
- tests/qemuxml2argvdata/cpu-topology1.xml | 2 +-
- tests/qemuxml2argvdata/cpu-topology2.xml | 2 +-
- tests/qemuxml2argvdata/cpu-topology3.xml | 2 +-
- .../fd-memory-no-numa-topology.xml | 2 +-
- .../fd-memory-numa-topology.xml | 2 +-
- .../fd-memory-numa-topology2.xml | 2 +-
- .../fd-memory-numa-topology3.xml | 2 +-
- .../graphics-spice-timeout.xml | 2 +-
- tests/qemuxml2argvdata/hugepages-nvdimm.xml | 2 +-
- .../memfd-memory-default-hugepage.xml | 2 +-
- tests/qemuxml2argvdata/memfd-memory-numa.xml | 2 +-
- tests/qemuxml2argvdata/memory-align-fail.xml | 2 +-
- .../memory-hotplug-dimm-addr.xml | 2 +-
- .../qemuxml2argvdata/memory-hotplug-dimm.xml | 2 +-
- .../memory-hotplug-nvdimm-access.xml | 2 +-
- .../memory-hotplug-nvdimm-align.xml | 2 +-
- .../memory-hotplug-nvdimm-label.xml | 2 +-
- .../memory-hotplug-nvdimm-pmem.xml | 2 +-
- .../memory-hotplug-nvdimm-readonly.xml | 2 +-
- .../memory-hotplug-nvdimm.xml | 2 +-
- tests/qemuxml2argvdata/memory-hotplug.xml | 2 +-
- .../numad-auto-memory-vcpu-cpuset.xml | 2 +-
- ...to-memory-vcpu-no-cpuset-and-placement.xml | 2 +-
- .../numad-auto-vcpu-no-numatune.xml | 2 +-
- ...d-auto-vcpu-static-numatune-no-nodeset.xml | 2 +-
- .../numad-auto-vcpu-static-numatune.xml | 2 +-
- .../numad-static-memory-auto-vcpu.xml | 2 +-
- .../numad-static-vcpu-no-numatune.xml | 2 +-
- tests/qemuxml2argvdata/numad.xml | 2 +-
- .../numatune-auto-nodeset-invalid.xml | 2 +-
- .../numatune-memory-invalid-nodeset.xml | 2 +-
- tests/qemuxml2argvdata/numatune-memory.xml | 2 +-
- .../pci-expander-bus-bad-machine.xml | 2 +-
- tests/qemuxml2argvdata/pci-expander-bus.xml | 2 +-
- .../pcie-expander-bus-bad-bus.xml | 2 +-
- .../pcie-expander-bus-bad-machine.xml | 2 +-
- tests/qemuxml2argvdata/pcie-expander-bus.xml | 2 +-
- .../pseries-default-phb-numa-node.xml | 2 +-
- .../pseries-phb-numa-node.xml | 2 +-
- tests/qemuxml2argvdata/smp.xml | 2 +-
- .../qemuxml2xmloutdata/cpu-numa-disjoint.xml | 2 +-
- .../cpu-numa-disordered.xml | 2 +-
- .../qemuxml2xmloutdata/cpu-numa-memshared.xml | 2 +-
- .../cpu-numa-no-memory-element.xml | 2 +-
- tests/qemuxml2xmloutdata/cpu-numa1.xml | 2 +-
- tests/qemuxml2xmloutdata/cpu-numa2.xml | 2 +-
- .../graphics-spice-timeout.xml | 2 +-
- .../memory-hotplug-dimm.xml | 2 +-
- tests/qemuxml2xmloutdata/memory-hotplug.xml | 2 +-
- .../numad-auto-memory-vcpu-cpuset.xml | 2 +-
- ...to-memory-vcpu-no-cpuset-and-placement.xml | 2 +-
- .../numad-auto-vcpu-no-numatune.xml | 2 +-
- .../numad-static-vcpu-no-numatune.xml | 2 +-
- tests/qemuxml2xmloutdata/pci-expander-bus.xml | 2 +-
- .../qemuxml2xmloutdata/pcie-expander-bus.xml | 2 +-
- .../pseries-phb-numa-node.xml | 2 +-
- tests/qemuxml2xmloutdata/smp.xml | 2 +-
- .../vmx2xmldata/vmx2xml-esx-in-the-wild-8.xml | 2 +-
- .../vmx2xmldata/vmx2xml-esx-in-the-wild-9.xml | 2 +-
- 98 files changed, 148 insertions(+), 101 deletions(-)
-
-diff --git a/docs/formatcaps.html.in b/docs/formatcaps.html.in
-index 2a0aa963bb..59d21a7d9e 100644
---- a/docs/formatcaps.html.in
-+++ b/docs/formatcaps.html.in
-@@ -173,7 +173,7 @@
- </features>
- <model>core2duo</model>
- <vendor>Intel</vendor>
-- <topology sockets="1" cores="2" threads="1"/>
-+ <topology sockets="1" dies="1" cores="2" threads="1"/>
- <feature name="lahf_lm"/>
- <feature name='xtpr'/>
- ...
-diff --git a/docs/formatdomain.html.in b/docs/formatdomain.html.in
-index 6e86d057a8..4db9c292b7 100644
---- a/docs/formatdomain.html.in
-+++ b/docs/formatdomain.html.in
-@@ -1470,7 +1470,7 @@
- <cpu match='exact'>
- <model fallback='allow'>core2duo</model>
- <vendor>Intel</vendor>
-- <topology sockets='1' cores='2' threads='1'/>
-+ <topology sockets='1' dies='1' cores='2' threads='1'/>
- <cache level='3' mode='emulate'/>
- <feature policy='disable' name='lahf_lm'/>
- </cpu>
-@@ -1479,7 +1479,7 @@
-
- <cpu mode='host-model'>
- <model fallback='forbid'/>
-- <topology sockets='1' cores='2' threads='1'/>
-+ <topology sockets='1' dies='1' cores='2' threads='1'/>
- </cpu>
- ...
-
-@@ -1498,7 +1498,7 @@
-
- ...
- <cpu>
-- <topology sockets='1' cores='2' threads='1'/>
-+ <topology sockets='1' dies='1' cores='2' threads='1'/>
- </cpu>
- ...
-
-@@ -1673,13 +1673,15 @@
-
- topology
- The topology
element specifies requested topology of
-- virtual CPU provided to the guest. Three non-zero values have to be
-- given for sockets
, cores
, and
-- threads
: total number of CPU sockets, number of cores per
-- socket, and number of threads per core, respectively. Hypervisors may
-- require that the maximum number of vCPUs specified by the
-- cpus
element equals to the number of vcpus resulting
-- from the topology.
-+ virtual CPU provided to the guest. Four attributes, sockets
,
-+ dies
, cores
, and threads
,
-+ accept non-zero positive integer values. They refer to the total number
-+ of CPU sockets, number of dies per socket, number of cores per die, and
-+ number of threads per core, respectively. The dies
-+ attribute is optional and will default to 1 if omitted, while the other
-+ attributes are all mandatory. Hypervisors may require that the maximum
-+ number of vCPUs specified by the cpus
element equals to
-+ the number of vcpus resulting from the topology.
-
- feature
- The cpu
element can contain zero or more
-diff --git a/docs/schemas/cputypes.rng b/docs/schemas/cputypes.rng
-index 1f1e0e36d5..e2744acad3 100644
---- a/docs/schemas/cputypes.rng
-+++ b/docs/schemas/cputypes.rng
-@@ -86,6 +86,11 @@
-
-
-
-+
-+
-+
-+
-+
-
-
-
-diff --git a/src/bhyve/bhyve_command.c b/src/bhyve/bhyve_command.c
-index 48336ffa1b..d78221aea8 100644
---- a/src/bhyve/bhyve_command.c
-+++ b/src/bhyve/bhyve_command.c
-@@ -453,6 +453,11 @@ virBhyveProcessBuildBhyveCmd(virConnectPtr conn,
- /* CPUs */
- virCommandAddArg(cmd, "-c");
- if (def->cpu && def->cpu->sockets) {
-+ if (def->dies != 1) {
-+ virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
-+ _("Only 1 die per socket is supported"));
-+ goto cleanup;
-+ }
- if (nvcpus != def->cpu->sockets * def->cpu->cores * def->cpu->threads) {
- virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
- _("Invalid CPU topology: total number of vCPUs "
-diff --git a/src/conf/cpu_conf.c b/src/conf/cpu_conf.c
-index b463981de0..837d77581c 100644
---- a/src/conf/cpu_conf.c
-+++ b/src/conf/cpu_conf.c
-@@ -239,6 +239,7 @@ virCPUDefCopyWithoutModel(const virCPUDef *cpu)
- copy->check = cpu->check;
- copy->fallback = cpu->fallback;
- copy->sockets = cpu->sockets;
-+ copy->dies = cpu->dies;
- copy->cores = cpu->cores;
- copy->threads = cpu->threads;
- copy->arch = cpu->arch;
-@@ -535,6 +536,17 @@ virCPUDefParseXML(xmlXPathContextPtr ctxt,
- }
- def->sockets = (unsigned int) ul;
-
-+ if (virXPathNode("./topology[1]/@dies", ctxt)) {
-+ if (virXPathULong("string(./topology[1]/@dies)", ctxt, &ul) < 0) {
-+ virReportError(VIR_ERR_XML_ERROR, "%s",
-+ _("Malformed 'dies' attribute in CPU topology"));
-+ goto cleanup;
-+ }
-+ def->dies = (unsigned int) ul;
-+ } else {
-+ def->dies = 1;
-+ }
-+
- if (virXPathULong("string(./topology[1]/@cores)", ctxt, &ul) < 0) {
- virReportError(VIR_ERR_XML_ERROR, "%s",
- _("Missing 'cores' attribute in CPU topology"));
-@@ -549,7 +561,7 @@ virCPUDefParseXML(xmlXPathContextPtr ctxt,
- }
- def->threads = (unsigned int) ul;
-
-- if (!def->sockets || !def->cores || !def->threads) {
-+ if (!def->sockets || !def->cores || !def->threads || !def->dies) {
- virReportError(VIR_ERR_XML_ERROR, "%s",
- _("Invalid CPU topology"));
- goto cleanup;
-@@ -817,9 +829,10 @@ virCPUDefFormatBuf(virBufferPtr buf,
- virBufferAddLit(buf, "/>\n");
- }
-
-- if (def->sockets && def->cores && def->threads) {
-+ if (def->sockets && def->dies && def->cores && def->threads) {
- virBufferAddLit(buf, "sockets);
-+ virBufferAsprintf(buf, " dies='%u'", def->dies);
- virBufferAsprintf(buf, " cores='%u'", def->cores);
- virBufferAsprintf(buf, " threads='%u'", def->threads);
- virBufferAddLit(buf, "/>\n");
-@@ -1058,6 +1071,12 @@ virCPUDefIsEqual(virCPUDefPtr src,
- return false;
- }
-
-+ if (src->dies != dst->dies) {
-+ MISMATCH(_("Target CPU dies %d does not match source %d"),
-+ dst->dies, src->dies);
-+ return false;
-+ }
-+
- if (src->cores != dst->cores) {
- MISMATCH(_("Target CPU cores %d does not match source %d"),
- dst->cores, src->cores);
-diff --git a/src/conf/cpu_conf.h b/src/conf/cpu_conf.h
-index ec3d2379cf..6cef9e9726 100644
---- a/src/conf/cpu_conf.h
-+++ b/src/conf/cpu_conf.h
-@@ -134,6 +134,7 @@ struct _virCPUDef {
- char *vendor;
- unsigned int microcodeVersion;
- unsigned int sockets;
-+ unsigned int dies;
- unsigned int cores;
- unsigned int threads;
- size_t nfeatures;
-diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
-index ee57152da7..0478914c69 100644
---- a/src/conf/domain_conf.c
-+++ b/src/conf/domain_conf.c
-@@ -2053,7 +2053,8 @@ virDomainDefGetVcpusTopology(const virDomainDef *def,
- tmp = def->cpu->sockets;
-
- /* multiplication of 32bit numbers fits into a 64bit variable */
-- if ((tmp *= def->cpu->cores) > UINT_MAX ||
-+ if ((tmp *= def->cpu->dies) > UINT_MAX ||
-+ (tmp *= def->cpu->cores) > UINT_MAX ||
- (tmp *= def->cpu->threads) > UINT_MAX) {
- virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
- _("cpu topology results in more than %u cpus"), UINT_MAX);
-diff --git a/src/cpu/cpu.c b/src/cpu/cpu.c
-index d99466472b..ae3a0acc10 100644
---- a/src/cpu/cpu.c
-+++ b/src/cpu/cpu.c
-@@ -421,6 +421,7 @@ virCPUGetHost(virArch arch,
-
- if (nodeInfo) {
- cpu->sockets = nodeInfo->sockets;
-+ cpu->dies = 1;
- cpu->cores = nodeInfo->cores;
- cpu->threads = nodeInfo->threads;
- }
-diff --git a/src/libxl/libxl_capabilities.c b/src/libxl/libxl_capabilities.c
-index e9f958cd8a..beac8c8cfc 100644
---- a/src/libxl/libxl_capabilities.c
-+++ b/src/libxl/libxl_capabilities.c
-@@ -186,6 +186,7 @@ libxlCapsInitCPU(virCapsPtr caps, libxl_physinfo *phy_info,
- cpu->type = VIR_CPU_TYPE_HOST;
- cpu->cores = phy_info->cores_per_socket;
- cpu->threads = phy_info->threads_per_core;
-+ cpu->dies = 1;
- cpu->sockets = phy_info->nr_cpus / (cpu->cores * cpu->threads);
- caps->host.cpu = cpu;
-
-diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c
-index e10cc7fc74..d7e8216092 100644
---- a/src/qemu/qemu_command.c
-+++ b/src/qemu/qemu_command.c
-@@ -7130,6 +7130,11 @@ qemuBuildSmpCommandLine(virCommandPtr cmd,
- /* sockets, cores, and threads are either all zero
- * or all non-zero, thus checking one of them is enough */
- if (def->cpu && def->cpu->sockets) {
-+ if (def->cpu->dies != 1) {
-+ virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
-+ _("Only 1 die per socket is supported"));
-+ return -1;
-+ }
- virBufferAsprintf(&buf, ",sockets=%u", def->cpu->sockets);
- virBufferAsprintf(&buf, ",cores=%u", def->cpu->cores);
- virBufferAsprintf(&buf, ",threads=%u", def->cpu->threads);
-diff --git a/src/vmx/vmx.c b/src/vmx/vmx.c
-index aa88dfcb5d..4362da6cee 100644
---- a/src/vmx/vmx.c
-+++ b/src/vmx/vmx.c
-@@ -1485,6 +1485,7 @@ virVMXParseConfig(virVMXContext *ctx,
- "'numvcpus'"));
- goto cleanup;
- }
-+ cpu->dies = 1;
- cpu->cores = coresPerSocket;
- cpu->threads = 1;
-
-@@ -3206,6 +3207,12 @@ virVMXFormatConfig(virVMXContext *ctx, virDomainXMLOptionPtr xmlopt, virDomainDe
- goto cleanup;
- }
-
-+ if (def->cpu->dies != 1) {
-+ virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
-+ _("Only 1 die per socket is supported"));
-+ goto cleanup;
-+ }
-+
- calculated_vcpus = def->cpu->sockets * def->cpu->cores;
- if (calculated_vcpus != maxvcpus) {
- virReportError(VIR_ERR_INTERNAL_ERROR,
-diff --git a/tests/cputestdata/x86_64-host+guest,model486-result.xml b/tests/cputestdata/x86_64-host+guest,model486-result.xml
-index 85564ff458..ea8e2d3a48 100644
---- a/tests/cputestdata/x86_64-host+guest,model486-result.xml
-+++ b/tests/cputestdata/x86_64-host+guest,model486-result.xml
-@@ -1,6 +1,6 @@
-
- 486
--
-+
-
-
-
-diff --git a/tests/cputestdata/x86_64-host+guest,models-result.xml b/tests/cputestdata/x86_64-host+guest,models-result.xml
-index f79ed324c1..0dd6955898 100644
---- a/tests/cputestdata/x86_64-host+guest,models-result.xml
-+++ b/tests/cputestdata/x86_64-host+guest,models-result.xml
-@@ -1,6 +1,6 @@
-
- Nehalem
--
-+
-
-
-
-diff --git a/tests/cputestdata/x86_64-host+guest-result.xml b/tests/cputestdata/x86_64-host+guest-result.xml
-index 137a3d6647..28e3152cbf 100644
---- a/tests/cputestdata/x86_64-host+guest-result.xml
-+++ b/tests/cputestdata/x86_64-host+guest-result.xml
-@@ -1,6 +1,6 @@
-
- Penryn
--
-+
-
-
-
-diff --git a/tests/cputestdata/x86_64-host+guest.xml b/tests/cputestdata/x86_64-host+guest.xml
-index 137a3d6647..28e3152cbf 100644
---- a/tests/cputestdata/x86_64-host+guest.xml
-+++ b/tests/cputestdata/x86_64-host+guest.xml
-@@ -1,6 +1,6 @@
-
- Penryn
--
-+
-
-
-
-diff --git a/tests/cputestdata/x86_64-host+host-model-nofallback.xml b/tests/cputestdata/x86_64-host+host-model-nofallback.xml
-index 0c3ede0f6a..16d6e1daf2 100644
---- a/tests/cputestdata/x86_64-host+host-model-nofallback.xml
-+++ b/tests/cputestdata/x86_64-host+host-model-nofallback.xml
-@@ -1,7 +1,7 @@
-
- Penryn
- Intel
--
-+
-
-
-
-diff --git a/tests/cputestdata/x86_64-host-Haswell-noTSX+Haswell,haswell-result.xml b/tests/cputestdata/x86_64-host-Haswell-noTSX+Haswell,haswell-result.xml
-index 2dbe06c314..8eda6684a0 100644
---- a/tests/cputestdata/x86_64-host-Haswell-noTSX+Haswell,haswell-result.xml
-+++ b/tests/cputestdata/x86_64-host-Haswell-noTSX+Haswell,haswell-result.xml
-@@ -1,6 +1,6 @@
-
- Haswell
--
-+
-
-
-
-diff --git a/tests/cputestdata/x86_64-host-Haswell-noTSX+Haswell-noTSX,haswell-result.xml b/tests/cputestdata/x86_64-host-Haswell-noTSX+Haswell-noTSX,haswell-result.xml
-index 5d149bb295..cb02449d60 100644
---- a/tests/cputestdata/x86_64-host-Haswell-noTSX+Haswell-noTSX,haswell-result.xml
-+++ b/tests/cputestdata/x86_64-host-Haswell-noTSX+Haswell-noTSX,haswell-result.xml
-@@ -1,6 +1,6 @@
-
- Haswell
--
-+
-
-
-
-diff --git a/tests/cputestdata/x86_64-host-Haswell-noTSX+Haswell-noTSX-result.xml b/tests/cputestdata/x86_64-host-Haswell-noTSX+Haswell-noTSX-result.xml
-index 3b74089647..7ee926aba8 100644
---- a/tests/cputestdata/x86_64-host-Haswell-noTSX+Haswell-noTSX-result.xml
-+++ b/tests/cputestdata/x86_64-host-Haswell-noTSX+Haswell-noTSX-result.xml
-@@ -1,4 +1,4 @@
-
- Haswell-noTSX
--
-+
-
-diff --git a/tests/cputestdata/x86_64-host-worse+guest-result.xml b/tests/cputestdata/x86_64-host-worse+guest-result.xml
-index 2edc8756c4..9d54c66a8f 100644
---- a/tests/cputestdata/x86_64-host-worse+guest-result.xml
-+++ b/tests/cputestdata/x86_64-host-worse+guest-result.xml
-@@ -1,6 +1,6 @@
-
- Penryn
--
-+
-
-
-
-diff --git a/tests/qemuhotplugtestcpus/ppc64-modern-bulk-result-conf.xml b/tests/qemuhotplugtestcpus/ppc64-modern-bulk-result-conf.xml
-index 1a769235a3..f80c4367df 100644
---- a/tests/qemuhotplugtestcpus/ppc64-modern-bulk-result-conf.xml
-+++ b/tests/qemuhotplugtestcpus/ppc64-modern-bulk-result-conf.xml
-@@ -43,7 +43,7 @@
-
-
-
--
-+
-
-
- destroy
-diff --git a/tests/qemuhotplugtestcpus/ppc64-modern-bulk-result-live.xml b/tests/qemuhotplugtestcpus/ppc64-modern-bulk-result-live.xml
-index 43e6267250..7998b978fb 100644
---- a/tests/qemuhotplugtestcpus/ppc64-modern-bulk-result-live.xml
-+++ b/tests/qemuhotplugtestcpus/ppc64-modern-bulk-result-live.xml
-@@ -43,7 +43,7 @@
-
-
-
--
-+
-
-
- destroy
-diff --git a/tests/qemuhotplugtestcpus/ppc64-modern-individual-result-conf.xml b/tests/qemuhotplugtestcpus/ppc64-modern-individual-result-conf.xml
-index cfb44cc433..2a48a97eef 100644
---- a/tests/qemuhotplugtestcpus/ppc64-modern-individual-result-conf.xml
-+++ b/tests/qemuhotplugtestcpus/ppc64-modern-individual-result-conf.xml
-@@ -43,7 +43,7 @@
-
-
-
--
-+
-
-
- destroy
-diff --git a/tests/qemuhotplugtestcpus/ppc64-modern-individual-result-live.xml b/tests/qemuhotplugtestcpus/ppc64-modern-individual-result-live.xml
-index 0a8d372149..90518d1fa9 100644
---- a/tests/qemuhotplugtestcpus/ppc64-modern-individual-result-live.xml
-+++ b/tests/qemuhotplugtestcpus/ppc64-modern-individual-result-live.xml
-@@ -43,7 +43,7 @@
-
-
-
--
-+
-
-
- destroy
-diff --git a/tests/qemuhotplugtestcpus/x86-modern-bulk-result-conf.xml b/tests/qemuhotplugtestcpus/x86-modern-bulk-result-conf.xml
-index 6457f4056b..0d622fc8ae 100644
---- a/tests/qemuhotplugtestcpus/x86-modern-bulk-result-conf.xml
-+++ b/tests/qemuhotplugtestcpus/x86-modern-bulk-result-conf.xml
-@@ -19,7 +19,7 @@
-
-
-
--
-+
-
-
- destroy
-diff --git a/tests/qemuhotplugtestcpus/x86-modern-bulk-result-live.xml b/tests/qemuhotplugtestcpus/x86-modern-bulk-result-live.xml
-index fe9a81a091..ed9deaea4a 100644
---- a/tests/qemuhotplugtestcpus/x86-modern-bulk-result-live.xml
-+++ b/tests/qemuhotplugtestcpus/x86-modern-bulk-result-live.xml
-@@ -19,7 +19,7 @@
-
-
-
--
-+
-
-
- destroy
-diff --git a/tests/qemuhotplugtestcpus/x86-modern-individual-add-result-conf.xml b/tests/qemuhotplugtestcpus/x86-modern-individual-add-result-conf.xml
-index 58c088de88..342f172108 100644
---- a/tests/qemuhotplugtestcpus/x86-modern-individual-add-result-conf.xml
-+++ b/tests/qemuhotplugtestcpus/x86-modern-individual-add-result-conf.xml
-@@ -19,7 +19,7 @@
-
-
-
--
-+
-
-
- destroy
-diff --git a/tests/qemuhotplugtestcpus/x86-modern-individual-add-result-live.xml b/tests/qemuhotplugtestcpus/x86-modern-individual-add-result-live.xml
-index 12b28be5fe..b8341c74e5 100644
---- a/tests/qemuhotplugtestcpus/x86-modern-individual-add-result-live.xml
-+++ b/tests/qemuhotplugtestcpus/x86-modern-individual-add-result-live.xml
-@@ -19,7 +19,7 @@
-
-
-
--
-+
-
-
- destroy
-diff --git a/tests/qemuhotplugtestcpus/x86-old-bulk-result-conf.xml b/tests/qemuhotplugtestcpus/x86-old-bulk-result-conf.xml
-index f635e37b82..29da89f5bc 100644
---- a/tests/qemuhotplugtestcpus/x86-old-bulk-result-conf.xml
-+++ b/tests/qemuhotplugtestcpus/x86-old-bulk-result-conf.xml
-@@ -9,7 +9,7 @@
-
-
-
--
-+
-
-
- destroy
-diff --git a/tests/qemuhotplugtestcpus/x86-old-bulk-result-live.xml b/tests/qemuhotplugtestcpus/x86-old-bulk-result-live.xml
-index 6f50bb5c12..f81194db5b 100644
---- a/tests/qemuhotplugtestcpus/x86-old-bulk-result-live.xml
-+++ b/tests/qemuhotplugtestcpus/x86-old-bulk-result-live.xml
-@@ -9,7 +9,7 @@
-
-
-
--
-+
-
-
- destroy
-diff --git a/tests/qemuxml2argvdata/cpu-hotplug-granularity.xml b/tests/qemuxml2argvdata/cpu-hotplug-granularity.xml
-index a94f41e46a..bf6a42c306 100644
---- a/tests/qemuxml2argvdata/cpu-hotplug-granularity.xml
-+++ b/tests/qemuxml2argvdata/cpu-hotplug-granularity.xml
-@@ -7,7 +7,7 @@
- hvm
-
-
--
-+
-
-
- /usr/bin/qemu-system-ppc64
-diff --git a/tests/qemuxml2argvdata/cpu-hotplug-startup.xml b/tests/qemuxml2argvdata/cpu-hotplug-startup.xml
-index 99987ba15a..9d764e2f8c 100644
---- a/tests/qemuxml2argvdata/cpu-hotplug-startup.xml
-+++ b/tests/qemuxml2argvdata/cpu-hotplug-startup.xml
-@@ -17,7 +17,7 @@
-
-
-
--
-+
-
-
- destroy
-diff --git a/tests/qemuxml2argvdata/cpu-numa-disjoint.xml b/tests/qemuxml2argvdata/cpu-numa-disjoint.xml
-index b022384e97..c164b15e82 100644
---- a/tests/qemuxml2argvdata/cpu-numa-disjoint.xml
-+++ b/tests/qemuxml2argvdata/cpu-numa-disjoint.xml
-@@ -9,7 +9,7 @@
-
-
-
--
-+
-
- |
- |
-diff --git a/tests/qemuxml2argvdata/cpu-numa-disordered.xml b/tests/qemuxml2argvdata/cpu-numa-disordered.xml
-index e209150a55..6e00b91281 100644
---- a/tests/qemuxml2argvdata/cpu-numa-disordered.xml
-+++ b/tests/qemuxml2argvdata/cpu-numa-disordered.xml
-@@ -9,7 +9,7 @@
-
-
-
--
-+
-
- |
- |
-diff --git a/tests/qemuxml2argvdata/cpu-numa-memshared.xml b/tests/qemuxml2argvdata/cpu-numa-memshared.xml
-index 7e05916f78..f2ef035b00 100644
---- a/tests/qemuxml2argvdata/cpu-numa-memshared.xml
-+++ b/tests/qemuxml2argvdata/cpu-numa-memshared.xml
-@@ -9,7 +9,7 @@
-
-
-
--
-+
-
- |
- |
-diff --git a/tests/qemuxml2argvdata/cpu-numa-no-memory-element.xml b/tests/qemuxml2argvdata/cpu-numa-no-memory-element.xml
-index ee6b6aa870..97dac01e84 100644
---- a/tests/qemuxml2argvdata/cpu-numa-no-memory-element.xml
-+++ b/tests/qemuxml2argvdata/cpu-numa-no-memory-element.xml
-@@ -8,7 +8,7 @@
-
-
-
--
-+
-
- |
- |
-diff --git a/tests/qemuxml2argvdata/cpu-numa1.xml b/tests/qemuxml2argvdata/cpu-numa1.xml
-index b21941d51a..867d21e152 100644
---- a/tests/qemuxml2argvdata/cpu-numa1.xml
-+++ b/tests/qemuxml2argvdata/cpu-numa1.xml
-@@ -9,7 +9,7 @@
-
-
-
--
-+
-
- |
- |
-diff --git a/tests/qemuxml2argvdata/cpu-numa2.xml b/tests/qemuxml2argvdata/cpu-numa2.xml
-index b85b19f5e0..e589948dc7 100644
---- a/tests/qemuxml2argvdata/cpu-numa2.xml
-+++ b/tests/qemuxml2argvdata/cpu-numa2.xml
-@@ -9,7 +9,7 @@
-
-
-
--
-+
-
- |
- |
-diff --git a/tests/qemuxml2argvdata/cpu-numa3.xml b/tests/qemuxml2argvdata/cpu-numa3.xml
-index e2b9e9014d..350fbe7c07 100644
---- a/tests/qemuxml2argvdata/cpu-numa3.xml
-+++ b/tests/qemuxml2argvdata/cpu-numa3.xml
-@@ -9,7 +9,7 @@
-
-
-
--
-+
-
- |
- |
-diff --git a/tests/qemuxml2argvdata/cpu-topology1.xml b/tests/qemuxml2argvdata/cpu-topology1.xml
-index 9d77d10a5c..af82a1c51a 100644
---- a/tests/qemuxml2argvdata/cpu-topology1.xml
-+++ b/tests/qemuxml2argvdata/cpu-topology1.xml
-@@ -9,7 +9,7 @@
-
-
-
--
-+
-
-
- destroy
-diff --git a/tests/qemuxml2argvdata/cpu-topology2.xml b/tests/qemuxml2argvdata/cpu-topology2.xml
-index 9d9701914a..1b113b8b13 100644
---- a/tests/qemuxml2argvdata/cpu-topology2.xml
-+++ b/tests/qemuxml2argvdata/cpu-topology2.xml
-@@ -10,7 +10,7 @@
-
-
- core2duo
--
-+
-
-
- destroy
-diff --git a/tests/qemuxml2argvdata/cpu-topology3.xml b/tests/qemuxml2argvdata/cpu-topology3.xml
-index 9d77d10a5c..af82a1c51a 100644
---- a/tests/qemuxml2argvdata/cpu-topology3.xml
-+++ b/tests/qemuxml2argvdata/cpu-topology3.xml
-@@ -9,7 +9,7 @@
-
-
-
--
-+
-
-
- destroy
-diff --git a/tests/qemuxml2argvdata/fd-memory-no-numa-topology.xml b/tests/qemuxml2argvdata/fd-memory-no-numa-topology.xml
-index 4c30761110..eb3300b1fb 100644
---- a/tests/qemuxml2argvdata/fd-memory-no-numa-topology.xml
-+++ b/tests/qemuxml2argvdata/fd-memory-no-numa-topology.xml
-@@ -14,7 +14,7 @@
-
-
-
--
-+
-
-
- destroy
-diff --git a/tests/qemuxml2argvdata/fd-memory-numa-topology.xml b/tests/qemuxml2argvdata/fd-memory-numa-topology.xml
-index f22a8e81f8..b7b5a19166 100644
---- a/tests/qemuxml2argvdata/fd-memory-numa-topology.xml
-+++ b/tests/qemuxml2argvdata/fd-memory-numa-topology.xml
-@@ -14,7 +14,7 @@
-
-
-
--
-+
-
- |
-
-diff --git a/tests/qemuxml2argvdata/fd-memory-numa-topology2.xml b/tests/qemuxml2argvdata/fd-memory-numa-topology2.xml
-index 925f39b6ab..07de0bd717 100644
---- a/tests/qemuxml2argvdata/fd-memory-numa-topology2.xml
-+++ b/tests/qemuxml2argvdata/fd-memory-numa-topology2.xml
-@@ -14,7 +14,7 @@
-
-
-
--
-+
-
- |
- |
-diff --git a/tests/qemuxml2argvdata/fd-memory-numa-topology3.xml b/tests/qemuxml2argvdata/fd-memory-numa-topology3.xml
-index 71a8e083c9..8711641b68 100644
---- a/tests/qemuxml2argvdata/fd-memory-numa-topology3.xml
-+++ b/tests/qemuxml2argvdata/fd-memory-numa-topology3.xml
-@@ -14,7 +14,7 @@
-
-
-
--
-+
-
- |
- |
-diff --git a/tests/qemuxml2argvdata/graphics-spice-timeout.xml b/tests/qemuxml2argvdata/graphics-spice-timeout.xml
-index 6bb4eb8f4c..d96f519bf8 100644
---- a/tests/qemuxml2argvdata/graphics-spice-timeout.xml
-+++ b/tests/qemuxml2argvdata/graphics-spice-timeout.xml
-@@ -18,7 +18,7 @@
-
- core2duo
- Intel
--
-+
-
-
-
-diff --git a/tests/qemuxml2argvdata/hugepages-nvdimm.xml b/tests/qemuxml2argvdata/hugepages-nvdimm.xml
-index b784777805..144d02b56e 100644
---- a/tests/qemuxml2argvdata/hugepages-nvdimm.xml
-+++ b/tests/qemuxml2argvdata/hugepages-nvdimm.xml
-@@ -16,7 +16,7 @@
-
-
-
--
-+
-
- |
-
-diff --git a/tests/qemuxml2argvdata/memfd-memory-default-hugepage.xml b/tests/qemuxml2argvdata/memfd-memory-default-hugepage.xml
-index 45ff012711..ded56dd538 100644
---- a/tests/qemuxml2argvdata/memfd-memory-default-hugepage.xml
-+++ b/tests/qemuxml2argvdata/memfd-memory-default-hugepage.xml
-@@ -18,7 +18,7 @@
-
-
-
--
-+
-
- |
-
-diff --git a/tests/qemuxml2argvdata/memfd-memory-numa.xml b/tests/qemuxml2argvdata/memfd-memory-numa.xml
-index f088f01d11..ebe638f600 100644
---- a/tests/qemuxml2argvdata/memfd-memory-numa.xml
-+++ b/tests/qemuxml2argvdata/memfd-memory-numa.xml
-@@ -20,7 +20,7 @@
-
-
-
--
-+
-
- |
-
-diff --git a/tests/qemuxml2argvdata/memory-align-fail.xml b/tests/qemuxml2argvdata/memory-align-fail.xml
-index 75c1a46068..636f0e3d8e 100644
---- a/tests/qemuxml2argvdata/memory-align-fail.xml
-+++ b/tests/qemuxml2argvdata/memory-align-fail.xml
-@@ -10,7 +10,7 @@
-
-
-
--
-+
-
- |
-
-diff --git a/tests/qemuxml2argvdata/memory-hotplug-dimm-addr.xml b/tests/qemuxml2argvdata/memory-hotplug-dimm-addr.xml
-index c289fdd5ff..ea4f4fd745 100644
---- a/tests/qemuxml2argvdata/memory-hotplug-dimm-addr.xml
-+++ b/tests/qemuxml2argvdata/memory-hotplug-dimm-addr.xml
-@@ -10,7 +10,7 @@
-
-
-
--
-+
-
- |
-
-diff --git a/tests/qemuxml2argvdata/memory-hotplug-dimm.xml b/tests/qemuxml2argvdata/memory-hotplug-dimm.xml
-index c68336f871..585e0a5f51 100644
---- a/tests/qemuxml2argvdata/memory-hotplug-dimm.xml
-+++ b/tests/qemuxml2argvdata/memory-hotplug-dimm.xml
-@@ -14,7 +14,7 @@
-
-
-
--
-+
-
- |
-
-diff --git a/tests/qemuxml2argvdata/memory-hotplug-nvdimm-access.xml b/tests/qemuxml2argvdata/memory-hotplug-nvdimm-access.xml
-index 4e62dd0e18..a1cc1264eb 100644
---- a/tests/qemuxml2argvdata/memory-hotplug-nvdimm-access.xml
-+++ b/tests/qemuxml2argvdata/memory-hotplug-nvdimm-access.xml
-@@ -14,7 +14,7 @@
-
-
-
--
-+
-
- |
-
-diff --git a/tests/qemuxml2argvdata/memory-hotplug-nvdimm-align.xml b/tests/qemuxml2argvdata/memory-hotplug-nvdimm-align.xml
-index defa109e80..018a693aaf 100644
---- a/tests/qemuxml2argvdata/memory-hotplug-nvdimm-align.xml
-+++ b/tests/qemuxml2argvdata/memory-hotplug-nvdimm-align.xml
-@@ -14,7 +14,7 @@
-
-
-
--
-+
-
- |
-
-diff --git a/tests/qemuxml2argvdata/memory-hotplug-nvdimm-label.xml b/tests/qemuxml2argvdata/memory-hotplug-nvdimm-label.xml
-index 89d01d672f..c9d54a6088 100644
---- a/tests/qemuxml2argvdata/memory-hotplug-nvdimm-label.xml
-+++ b/tests/qemuxml2argvdata/memory-hotplug-nvdimm-label.xml
-@@ -14,7 +14,7 @@
-
-
-
--
-+
-
- |
-
-diff --git a/tests/qemuxml2argvdata/memory-hotplug-nvdimm-pmem.xml b/tests/qemuxml2argvdata/memory-hotplug-nvdimm-pmem.xml
-index e6a4f7901a..391d70f20e 100644
---- a/tests/qemuxml2argvdata/memory-hotplug-nvdimm-pmem.xml
-+++ b/tests/qemuxml2argvdata/memory-hotplug-nvdimm-pmem.xml
-@@ -14,7 +14,7 @@
-
-
-
--
-+
-
- |
-
-diff --git a/tests/qemuxml2argvdata/memory-hotplug-nvdimm-readonly.xml b/tests/qemuxml2argvdata/memory-hotplug-nvdimm-readonly.xml
-index dd48540712..09b2c5c833 100644
---- a/tests/qemuxml2argvdata/memory-hotplug-nvdimm-readonly.xml
-+++ b/tests/qemuxml2argvdata/memory-hotplug-nvdimm-readonly.xml
-@@ -14,7 +14,7 @@
-
-
-
--
-+
-
- |
-
-diff --git a/tests/qemuxml2argvdata/memory-hotplug-nvdimm.xml b/tests/qemuxml2argvdata/memory-hotplug-nvdimm.xml
-index 9c76dda6c8..a32474da06 100644
---- a/tests/qemuxml2argvdata/memory-hotplug-nvdimm.xml
-+++ b/tests/qemuxml2argvdata/memory-hotplug-nvdimm.xml
-@@ -14,7 +14,7 @@
-
-
-
--
-+
-
- |
-
-diff --git a/tests/qemuxml2argvdata/memory-hotplug.xml b/tests/qemuxml2argvdata/memory-hotplug.xml
-index e1f086567b..8d09856e95 100644
---- a/tests/qemuxml2argvdata/memory-hotplug.xml
-+++ b/tests/qemuxml2argvdata/memory-hotplug.xml
-@@ -10,7 +10,7 @@
-
-
-
--
-+
-
- |
-
-diff --git a/tests/qemuxml2argvdata/numad-auto-memory-vcpu-cpuset.xml b/tests/qemuxml2argvdata/numad-auto-memory-vcpu-cpuset.xml
-index 50dbc3c466..5758e65d09 100644
---- a/tests/qemuxml2argvdata/numad-auto-memory-vcpu-cpuset.xml
-+++ b/tests/qemuxml2argvdata/numad-auto-memory-vcpu-cpuset.xml
-@@ -12,7 +12,7 @@
-
-
-
--
-+
-
-
- destroy
-diff --git a/tests/qemuxml2argvdata/numad-auto-memory-vcpu-no-cpuset-and-placement.xml b/tests/qemuxml2argvdata/numad-auto-memory-vcpu-no-cpuset-and-placement.xml
-index d9cd6b83f1..80314d05a3 100644
---- a/tests/qemuxml2argvdata/numad-auto-memory-vcpu-no-cpuset-and-placement.xml
-+++ b/tests/qemuxml2argvdata/numad-auto-memory-vcpu-no-cpuset-and-placement.xml
-@@ -12,7 +12,7 @@
-
-
-
--
-+
-
-
- destroy
-diff --git a/tests/qemuxml2argvdata/numad-auto-vcpu-no-numatune.xml b/tests/qemuxml2argvdata/numad-auto-vcpu-no-numatune.xml
-index f21ba0a786..0edf8ee46f 100644
---- a/tests/qemuxml2argvdata/numad-auto-vcpu-no-numatune.xml
-+++ b/tests/qemuxml2argvdata/numad-auto-vcpu-no-numatune.xml
-@@ -9,7 +9,7 @@
-
-
-
--
-+
-
-
- destroy
-diff --git a/tests/qemuxml2argvdata/numad-auto-vcpu-static-numatune-no-nodeset.xml b/tests/qemuxml2argvdata/numad-auto-vcpu-static-numatune-no-nodeset.xml
-index 378d17face..517dd5dbd7 100644
---- a/tests/qemuxml2argvdata/numad-auto-vcpu-static-numatune-no-nodeset.xml
-+++ b/tests/qemuxml2argvdata/numad-auto-vcpu-static-numatune-no-nodeset.xml
-@@ -12,7 +12,7 @@
-
-
-
--
-+
-
-
- destroy
-diff --git a/tests/qemuxml2argvdata/numad-auto-vcpu-static-numatune.xml b/tests/qemuxml2argvdata/numad-auto-vcpu-static-numatune.xml
-index e20bd8db0b..a7f32b6802 100644
---- a/tests/qemuxml2argvdata/numad-auto-vcpu-static-numatune.xml
-+++ b/tests/qemuxml2argvdata/numad-auto-vcpu-static-numatune.xml
-@@ -12,7 +12,7 @@
-
-
-
--
-+
-
-
- destroy
-diff --git a/tests/qemuxml2argvdata/numad-static-memory-auto-vcpu.xml b/tests/qemuxml2argvdata/numad-static-memory-auto-vcpu.xml
-index 50dbc3c466..5758e65d09 100644
---- a/tests/qemuxml2argvdata/numad-static-memory-auto-vcpu.xml
-+++ b/tests/qemuxml2argvdata/numad-static-memory-auto-vcpu.xml
-@@ -12,7 +12,7 @@
-
-
-
--
-+
-
-
- destroy
-diff --git a/tests/qemuxml2argvdata/numad-static-vcpu-no-numatune.xml b/tests/qemuxml2argvdata/numad-static-vcpu-no-numatune.xml
-index 7ccaa5aff4..3237e7c7c5 100644
---- a/tests/qemuxml2argvdata/numad-static-vcpu-no-numatune.xml
-+++ b/tests/qemuxml2argvdata/numad-static-vcpu-no-numatune.xml
-@@ -9,7 +9,7 @@
-
-
-
--
-+
-
-
- destroy
-diff --git a/tests/qemuxml2argvdata/numad.xml b/tests/qemuxml2argvdata/numad.xml
-index 081a59a013..ae995e2d6b 100644
---- a/tests/qemuxml2argvdata/numad.xml
-+++ b/tests/qemuxml2argvdata/numad.xml
-@@ -12,7 +12,7 @@
-
-
-
--
-+
-
-
- destroy
-diff --git a/tests/qemuxml2argvdata/numatune-auto-nodeset-invalid.xml b/tests/qemuxml2argvdata/numatune-auto-nodeset-invalid.xml
-index 44ec55a810..e6ca895b0d 100644
---- a/tests/qemuxml2argvdata/numatune-auto-nodeset-invalid.xml
-+++ b/tests/qemuxml2argvdata/numatune-auto-nodeset-invalid.xml
-@@ -12,7 +12,7 @@
-
-
-
--
-+
-
-
- destroy
-diff --git a/tests/qemuxml2argvdata/numatune-memory-invalid-nodeset.xml b/tests/qemuxml2argvdata/numatune-memory-invalid-nodeset.xml
-index 441f2b8989..70e7b92f34 100644
---- a/tests/qemuxml2argvdata/numatune-memory-invalid-nodeset.xml
-+++ b/tests/qemuxml2argvdata/numatune-memory-invalid-nodeset.xml
-@@ -12,7 +12,7 @@
-
-
-
--
-+
-
-
- destroy
-diff --git a/tests/qemuxml2argvdata/numatune-memory.xml b/tests/qemuxml2argvdata/numatune-memory.xml
-index c9887dbebc..93ee70cc0b 100644
---- a/tests/qemuxml2argvdata/numatune-memory.xml
-+++ b/tests/qemuxml2argvdata/numatune-memory.xml
-@@ -12,7 +12,7 @@
-
-
-
--
-+
-
-
- destroy
-diff --git a/tests/qemuxml2argvdata/pci-expander-bus-bad-machine.xml b/tests/qemuxml2argvdata/pci-expander-bus-bad-machine.xml
-index 606ddfd73c..5093944a1c 100644
---- a/tests/qemuxml2argvdata/pci-expander-bus-bad-machine.xml
-+++ b/tests/qemuxml2argvdata/pci-expander-bus-bad-machine.xml
-@@ -8,7 +8,7 @@
- hvm
-
-
--
-+
-
- |
- |
-diff --git a/tests/qemuxml2argvdata/pci-expander-bus.xml b/tests/qemuxml2argvdata/pci-expander-bus.xml
-index 79c959346d..d9aeda1757 100644
---- a/tests/qemuxml2argvdata/pci-expander-bus.xml
-+++ b/tests/qemuxml2argvdata/pci-expander-bus.xml
-@@ -8,7 +8,7 @@
- hvm
-
-
--
-+
-
- |
- |
-diff --git a/tests/qemuxml2argvdata/pcie-expander-bus-bad-bus.xml b/tests/qemuxml2argvdata/pcie-expander-bus-bad-bus.xml
-index f0ab0a16d1..4a6cb492bb 100644
---- a/tests/qemuxml2argvdata/pcie-expander-bus-bad-bus.xml
-+++ b/tests/qemuxml2argvdata/pcie-expander-bus-bad-bus.xml
-@@ -9,7 +9,7 @@
-
-
-
--
-+
-
- |
- |
-diff --git a/tests/qemuxml2argvdata/pcie-expander-bus-bad-machine.xml b/tests/qemuxml2argvdata/pcie-expander-bus-bad-machine.xml
-index dc64d97b83..1c27047b75 100644
---- a/tests/qemuxml2argvdata/pcie-expander-bus-bad-machine.xml
-+++ b/tests/qemuxml2argvdata/pcie-expander-bus-bad-machine.xml
-@@ -8,7 +8,7 @@
- hvm
-
-
--
-+
-
- |
- |
-diff --git a/tests/qemuxml2argvdata/pcie-expander-bus.xml b/tests/qemuxml2argvdata/pcie-expander-bus.xml
-index 5c5d34d1e0..80693f8a1c 100644
---- a/tests/qemuxml2argvdata/pcie-expander-bus.xml
-+++ b/tests/qemuxml2argvdata/pcie-expander-bus.xml
-@@ -9,7 +9,7 @@
-
-
-
--
-+
-
- |
- |
-diff --git a/tests/qemuxml2argvdata/pseries-default-phb-numa-node.xml b/tests/qemuxml2argvdata/pseries-default-phb-numa-node.xml
-index 12d277aaf8..27f211d59d 100644
---- a/tests/qemuxml2argvdata/pseries-default-phb-numa-node.xml
-+++ b/tests/qemuxml2argvdata/pseries-default-phb-numa-node.xml
-@@ -7,7 +7,7 @@
-
-
-
--
-+
-
- |
-
-diff --git a/tests/qemuxml2argvdata/pseries-phb-numa-node.xml b/tests/qemuxml2argvdata/pseries-phb-numa-node.xml
-index aeccb14dfb..52c39d5dbd 100644
---- a/tests/qemuxml2argvdata/pseries-phb-numa-node.xml
-+++ b/tests/qemuxml2argvdata/pseries-phb-numa-node.xml
-@@ -8,7 +8,7 @@
-
-
-
--
-+
-
- |
- |
-diff --git a/tests/qemuxml2argvdata/smp.xml b/tests/qemuxml2argvdata/smp.xml
-index 55d5cdeff2..6041506ed8 100644
---- a/tests/qemuxml2argvdata/smp.xml
-+++ b/tests/qemuxml2argvdata/smp.xml
-@@ -9,7 +9,7 @@
-
-
-
--
-+
-
-
- destroy
-diff --git a/tests/qemuxml2xmloutdata/cpu-numa-disjoint.xml b/tests/qemuxml2xmloutdata/cpu-numa-disjoint.xml
-index f0ca39b5d3..d7f5372fbc 100644
---- a/tests/qemuxml2xmloutdata/cpu-numa-disjoint.xml
-+++ b/tests/qemuxml2xmloutdata/cpu-numa-disjoint.xml
-@@ -9,7 +9,7 @@
-
-
-
--
-+
-
- |
- |
-diff --git a/tests/qemuxml2xmloutdata/cpu-numa-disordered.xml b/tests/qemuxml2xmloutdata/cpu-numa-disordered.xml
-index 1e672adc44..487ced1008 100644
---- a/tests/qemuxml2xmloutdata/cpu-numa-disordered.xml
-+++ b/tests/qemuxml2xmloutdata/cpu-numa-disordered.xml
-@@ -9,7 +9,7 @@
-
-
-
--
-+
-
- |
- |
-diff --git a/tests/qemuxml2xmloutdata/cpu-numa-memshared.xml b/tests/qemuxml2xmloutdata/cpu-numa-memshared.xml
-index 3db0db047c..f472bffec3 100644
---- a/tests/qemuxml2xmloutdata/cpu-numa-memshared.xml
-+++ b/tests/qemuxml2xmloutdata/cpu-numa-memshared.xml
-@@ -9,7 +9,7 @@
-
-
-
--
-+
-
- |
- |
-diff --git a/tests/qemuxml2xmloutdata/cpu-numa-no-memory-element.xml b/tests/qemuxml2xmloutdata/cpu-numa-no-memory-element.xml
-index 8596baae6c..2ef7f84646 100644
---- a/tests/qemuxml2xmloutdata/cpu-numa-no-memory-element.xml
-+++ b/tests/qemuxml2xmloutdata/cpu-numa-no-memory-element.xml
-@@ -9,7 +9,7 @@
-
-
-
--
-+
-
- |
- |
-diff --git a/tests/qemuxml2xmloutdata/cpu-numa1.xml b/tests/qemuxml2xmloutdata/cpu-numa1.xml
-index 8596baae6c..2ef7f84646 100644
---- a/tests/qemuxml2xmloutdata/cpu-numa1.xml
-+++ b/tests/qemuxml2xmloutdata/cpu-numa1.xml
-@@ -9,7 +9,7 @@
-
-
-
--
-+
-
- |
- |
-diff --git a/tests/qemuxml2xmloutdata/cpu-numa2.xml b/tests/qemuxml2xmloutdata/cpu-numa2.xml
-index 8596baae6c..2ef7f84646 100644
---- a/tests/qemuxml2xmloutdata/cpu-numa2.xml
-+++ b/tests/qemuxml2xmloutdata/cpu-numa2.xml
-@@ -9,7 +9,7 @@
-
-
-
--
-+
-
- |
- |
-diff --git a/tests/qemuxml2xmloutdata/graphics-spice-timeout.xml b/tests/qemuxml2xmloutdata/graphics-spice-timeout.xml
-index 3f0babd8fc..6e23652448 100644
---- a/tests/qemuxml2xmloutdata/graphics-spice-timeout.xml
-+++ b/tests/qemuxml2xmloutdata/graphics-spice-timeout.xml
-@@ -18,7 +18,7 @@
-
- core2duo
- Intel
--
-+
-
-
-
-diff --git a/tests/qemuxml2xmloutdata/memory-hotplug-dimm.xml b/tests/qemuxml2xmloutdata/memory-hotplug-dimm.xml
-index f4a118cea5..326b5c954c 100644
---- a/tests/qemuxml2xmloutdata/memory-hotplug-dimm.xml
-+++ b/tests/qemuxml2xmloutdata/memory-hotplug-dimm.xml
-@@ -14,7 +14,7 @@
-
-
-
--
-+
-
- |
-
-diff --git a/tests/qemuxml2xmloutdata/memory-hotplug.xml b/tests/qemuxml2xmloutdata/memory-hotplug.xml
-index 0e02f210bc..0e5295dcd0 100644
---- a/tests/qemuxml2xmloutdata/memory-hotplug.xml
-+++ b/tests/qemuxml2xmloutdata/memory-hotplug.xml
-@@ -10,7 +10,7 @@
-
-
-
--
-+
-
- |
-
-diff --git a/tests/qemuxml2xmloutdata/numad-auto-memory-vcpu-cpuset.xml b/tests/qemuxml2xmloutdata/numad-auto-memory-vcpu-cpuset.xml
-index 133177b679..841ea699a1 100644
---- a/tests/qemuxml2xmloutdata/numad-auto-memory-vcpu-cpuset.xml
-+++ b/tests/qemuxml2xmloutdata/numad-auto-memory-vcpu-cpuset.xml
-@@ -12,7 +12,7 @@
-
-
-
--
-+
-
-
- destroy
-diff --git a/tests/qemuxml2xmloutdata/numad-auto-memory-vcpu-no-cpuset-and-placement.xml b/tests/qemuxml2xmloutdata/numad-auto-memory-vcpu-no-cpuset-and-placement.xml
-index dc14ecd139..2e3998e155 100644
---- a/tests/qemuxml2xmloutdata/numad-auto-memory-vcpu-no-cpuset-and-placement.xml
-+++ b/tests/qemuxml2xmloutdata/numad-auto-memory-vcpu-no-cpuset-and-placement.xml
-@@ -12,7 +12,7 @@
-
-
-
--
-+
-
-
- destroy
-diff --git a/tests/qemuxml2xmloutdata/numad-auto-vcpu-no-numatune.xml b/tests/qemuxml2xmloutdata/numad-auto-vcpu-no-numatune.xml
-index 76d7c3b835..7c1f18c216 100644
---- a/tests/qemuxml2xmloutdata/numad-auto-vcpu-no-numatune.xml
-+++ b/tests/qemuxml2xmloutdata/numad-auto-vcpu-no-numatune.xml
-@@ -12,7 +12,7 @@
-
-
-
--
-+
-
-
- destroy
-diff --git a/tests/qemuxml2xmloutdata/numad-static-vcpu-no-numatune.xml b/tests/qemuxml2xmloutdata/numad-static-vcpu-no-numatune.xml
-index 523962117e..3d05790c0e 100644
---- a/tests/qemuxml2xmloutdata/numad-static-vcpu-no-numatune.xml
-+++ b/tests/qemuxml2xmloutdata/numad-static-vcpu-no-numatune.xml
-@@ -9,7 +9,7 @@
-
-
-
--
-+
-
-
- destroy
-diff --git a/tests/qemuxml2xmloutdata/pci-expander-bus.xml b/tests/qemuxml2xmloutdata/pci-expander-bus.xml
-index e0d787e57c..60e4e4af7f 100644
---- a/tests/qemuxml2xmloutdata/pci-expander-bus.xml
-+++ b/tests/qemuxml2xmloutdata/pci-expander-bus.xml
-@@ -9,7 +9,7 @@
-
-
-
--
-+
-
- |
- |
-diff --git a/tests/qemuxml2xmloutdata/pcie-expander-bus.xml b/tests/qemuxml2xmloutdata/pcie-expander-bus.xml
-index 643b4823bb..452d476da6 100644
---- a/tests/qemuxml2xmloutdata/pcie-expander-bus.xml
-+++ b/tests/qemuxml2xmloutdata/pcie-expander-bus.xml
-@@ -9,7 +9,7 @@
-
-
-
--
-+
-
- |
- |
-diff --git a/tests/qemuxml2xmloutdata/pseries-phb-numa-node.xml b/tests/qemuxml2xmloutdata/pseries-phb-numa-node.xml
-index 80b771e89d..b05ac334a6 100644
---- a/tests/qemuxml2xmloutdata/pseries-phb-numa-node.xml
-+++ b/tests/qemuxml2xmloutdata/pseries-phb-numa-node.xml
-@@ -13,7 +13,7 @@
-
-
-
--
-+
-
- |
- |
-diff --git a/tests/qemuxml2xmloutdata/smp.xml b/tests/qemuxml2xmloutdata/smp.xml
-index d3712cb7df..3e00f578e5 100644
---- a/tests/qemuxml2xmloutdata/smp.xml
-+++ b/tests/qemuxml2xmloutdata/smp.xml
-@@ -9,7 +9,7 @@
-
-
-
--
-+
-
-
- destroy
-diff --git a/tests/vmx2xmldata/vmx2xml-esx-in-the-wild-8.xml b/tests/vmx2xmldata/vmx2xml-esx-in-the-wild-8.xml
-index eba5f4734a..2011bfb3b9 100644
---- a/tests/vmx2xmldata/vmx2xml-esx-in-the-wild-8.xml
-+++ b/tests/vmx2xmldata/vmx2xml-esx-in-the-wild-8.xml
-@@ -11,7 +11,7 @@
- hvm
-
-
--
-+
-
-
- destroy
-diff --git a/tests/vmx2xmldata/vmx2xml-esx-in-the-wild-9.xml b/tests/vmx2xmldata/vmx2xml-esx-in-the-wild-9.xml
-index f1fe6dd4c9..fa428c1986 100644
---- a/tests/vmx2xmldata/vmx2xml-esx-in-the-wild-9.xml
-+++ b/tests/vmx2xmldata/vmx2xml-esx-in-the-wild-9.xml
-@@ -12,7 +12,7 @@
- hvm
-
-
--
-+
-
-
- destroy
---
-2.25.0
-
diff --git a/SOURCES/libvirt-conf-add-virtiofs-related-elements-and-attributes.patch b/SOURCES/libvirt-conf-add-virtiofs-related-elements-and-attributes.patch
deleted file mode 100644
index 7cf26c8..0000000
--- a/SOURCES/libvirt-conf-add-virtiofs-related-elements-and-attributes.patch
+++ /dev/null
@@ -1,395 +0,0 @@
-From c811bd72130364673dd4a0d2a997a1d8f675eb71 Mon Sep 17 00:00:00 2001
-Message-Id:
-From: =?UTF-8?q?J=C3=A1n=20Tomko?=
-Date: Wed, 4 Mar 2020 12:42:42 +0100
-Subject: [PATCH] conf: add virtiofs-related elements and attributes
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Add more elements for tuning the virtiofsd daemon
-and the vhost-user-fs device:
-
-
-
-
-
-
-
-
-Signed-off-by: Ján Tomko
-Reviewed-by: Daniel P. Berrangé
-Reviewed-by: Masayoshi Mizuma
-Reviewed-by: Peter Krempa
-Tested-by: Andrea Bolognani
-(cherry picked from commit 66079339847dc942b9b673e3040b56b055a8d8f5)
-Signed-off-by: Ján Tomko
-https://bugzilla.redhat.com/show_bug.cgi?id=1694166
-Message-Id: <506d0532c6043a9b8c946bdc42c3d9c5529f6fb8.1583322090.git.jtomko@redhat.com>
-Reviewed-by: Michal Privoznik
----
- docs/formatdomain.html.in | 25 ++++-
- docs/schemas/domaincommon.rng | 48 ++++++++
- src/conf/domain_conf.c | 104 +++++++++++++++++-
- src/conf/domain_conf.h | 15 +++
- src/libvirt_private.syms | 1 +
- .../vhost-user-fs-fd-memory.xml | 6 +-
- .../vhost-user-fs-hugepages.xml | 1 +
- 7 files changed, 197 insertions(+), 3 deletions(-)
-
-diff --git a/docs/formatdomain.html.in b/docs/formatdomain.html.in
-index 337ab01316..e9830ab231 100644
---- a/docs/formatdomain.html.in
-+++ b/docs/formatdomain.html.in
-@@ -3936,7 +3936,11 @@
- <readonly/>
- </filesystem>
- <filesystem type='mount' accessmode='passthrough'>
-- <driver type='virtiofs'/>
-+ <driver type='virtiofs queue='1024'/>
-+ <binary path='/usr/libexec/virtiofsd' xattr='on'>
-+ <cache mode='always'/>
-+ <lock posix='on' flock='on'/>
-+ </binary>
- <source dir='/path'/>
- <target dir='mount_tag'/>
- </filesystem>
-@@ -4063,9 +4067,28 @@
- Virtio-specific options can also be
- set. (Since 3.5.0 )
-
-+
-+ For virtiofs
, the queue
attribute can be used
-+ to specify the queue size (i.e. how many requests can the queue fit).
-+ (Since 6.2.0 )
-+
-
-
-
-+ binary
-+
-+ The optional binary
element can tune the options for virtiofsd.
-+ All of the following attributes and elements are optional.
-+ The attribute path
can be used to override the path to the daemon.
-+ Attribute xattr
enables the use of filesystem extended attributes.
-+ Caching can be tuned via the cache
element, possible mode
-+ values being none
and always
.
-+ Locking can be controlled via the lock
-+ element - attributes posix
and flock
both accepting
-+ values on
or off
.
-+ (Since 6.2.0 )
-+
-+
- source
-
- The resource on the host that is being accessed in the guest. The
-diff --git a/docs/schemas/domaincommon.rng b/docs/schemas/domaincommon.rng
-index 5a9291b443..aa70e340b9 100644
---- a/docs/schemas/domaincommon.rng
-+++ b/docs/schemas/domaincommon.rng
-@@ -2500,6 +2500,9 @@
-
-
-
-+
-+
-+
-
-
-
-@@ -2649,12 +2652,57 @@
-
- virtiofs
-
-+
-+
-+
-+
-+
-
-
-
-
-
-
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+ none
-+ always
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-
-
-
-diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
-index 31d4828802..3a370e6b90 100644
---- a/src/conf/domain_conf.c
-+++ b/src/conf/domain_conf.c
-@@ -500,6 +500,14 @@ VIR_ENUM_IMPL(virDomainFSModel,
- "virtio-non-transitional",
- );
-
-+VIR_ENUM_IMPL(virDomainFSCacheMode,
-+ VIR_DOMAIN_FS_CACHE_MODE_LAST,
-+ "default",
-+ "none",
-+ "always",
-+);
-+
-+
- VIR_ENUM_IMPL(virDomainNet,
- VIR_DOMAIN_NET_TYPE_LAST,
- "user",
-@@ -2322,6 +2330,7 @@ void virDomainFSDefFree(virDomainFSDefPtr def)
- virDomainDeviceInfoClear(&def->info);
- VIR_FREE(def->virtio);
- virObjectUnref(def->privateData);
-+ VIR_FREE(def->binary);
-
- VIR_FREE(def);
- }
-@@ -11293,6 +11302,63 @@ virDomainFSDefParseXML(virDomainXMLOptionPtr xmlopt,
- }
- }
-
-+ if (def->fsdriver == VIR_DOMAIN_FS_DRIVER_TYPE_VIRTIOFS) {
-+ g_autofree char *queue_size = virXPathString("string(./driver/@queue)", ctxt);
-+ g_autofree char *binary = virXPathString("string(./binary/@path)", ctxt);
-+ g_autofree char *xattr = virXPathString("string(./binary/@xattr)", ctxt);
-+ g_autofree char *cache = virXPathString("string(./binary/cache/@mode)", ctxt);
-+ g_autofree char *posix_lock = virXPathString("string(./binary/lock/@posix)", ctxt);
-+ g_autofree char *flock = virXPathString("string(./binary/lock/@flock)", ctxt);
-+ int val;
-+
-+ if (queue_size && virStrToLong_ull(queue_size, NULL, 10, &def->queue_size) < 0) {
-+ virReportError(VIR_ERR_XML_ERROR,
-+ _("cannot parse queue size '%s' for virtiofs"),
-+ queue_size);
-+ goto error;
-+ }
-+
-+ if (binary)
-+ def->binary = virFileSanitizePath(binary);
-+
-+ if (xattr) {
-+ if ((val = virTristateSwitchTypeFromString(xattr)) <= 0) {
-+ virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
-+ _("unknown xattr value '%s'"), xattr);
-+ goto error;
-+ }
-+ def->xattr = val;
-+ }
-+
-+ if (cache) {
-+ if ((val = virDomainFSCacheModeTypeFromString(cache)) <= 0) {
-+ virReportError(VIR_ERR_XML_ERROR,
-+ _("cannot parse cache mode '%s' for virtiofs"),
-+ cache);
-+ goto error;
-+ }
-+ def->cache = val;
-+ }
-+
-+ if (posix_lock) {
-+ if ((val = virTristateSwitchTypeFromString(posix_lock)) <= 0) {
-+ virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
-+ _("unknown posix lock value '%s'"), posix_lock);
-+ goto error;
-+ }
-+ def->posix_lock = val;
-+ }
-+
-+ if (flock) {
-+ if ((val = virTristateSwitchTypeFromString(flock)) <= 0) {
-+ virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
-+ _("unknown flock value '%s'"), flock);
-+ goto error;
-+ }
-+ def->flock = val;
-+ }
-+ }
-+
- if (format) {
- if ((def->format = virStorageFileFormatTypeFromString(format)) <= 0) {
- virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
-@@ -24994,6 +25060,9 @@ virDomainFSDefFormat(virBufferPtr buf,
- const char *wrpolicy = virDomainFSWrpolicyTypeToString(def->wrpolicy);
- const char *src = def->src->path;
- g_auto(virBuffer) driverAttrBuf = VIR_BUFFER_INITIALIZER;
-+ g_auto(virBuffer) driverBuf = VIR_BUFFER_INIT_CHILD(buf);
-+ g_auto(virBuffer) binaryAttrBuf = VIR_BUFFER_INITIALIZER;
-+ g_auto(virBuffer) binaryBuf = VIR_BUFFER_INIT_CHILD(buf);
-
- if (!type) {
- virReportError(VIR_ERR_INTERNAL_ERROR,
-@@ -25017,6 +25086,8 @@ virDomainFSDefFormat(virBufferPtr buf,
- virBufferAddLit(buf, ">\n");
-
- virBufferAdjustIndent(buf, 2);
-+ virBufferAdjustIndent(&driverBuf, 2);
-+ virBufferAdjustIndent(&binaryBuf, 2);
- if (def->fsdriver) {
- virBufferAsprintf(&driverAttrBuf, " type='%s'", fsdriver);
-
-@@ -25028,11 +25099,42 @@ virDomainFSDefFormat(virBufferPtr buf,
- if (def->wrpolicy)
- virBufferAsprintf(&driverAttrBuf, " wrpolicy='%s'", wrpolicy);
-
-+ if (def->queue_size)
-+ virBufferAsprintf(&driverAttrBuf, " queue='%llu'", def->queue_size);
-+
-+ }
-+
-+ if (def->fsdriver == VIR_DOMAIN_FS_DRIVER_TYPE_VIRTIOFS) {
-+ g_auto(virBuffer) lockAttrBuf = VIR_BUFFER_INITIALIZER;
-+ virBufferEscapeString(&binaryAttrBuf, " path='%s'", def->binary);
-+
-+ if (def->xattr != VIR_TRISTATE_SWITCH_ABSENT) {
-+ virBufferAsprintf(&binaryAttrBuf, " xattr='%s'",
-+ virTristateSwitchTypeToString(def->xattr));
-+ }
-+
-+ if (def->cache != VIR_DOMAIN_FS_CACHE_MODE_DEFAULT) {
-+ virBufferAsprintf(&binaryBuf, " \n",
-+ virDomainFSCacheModeTypeToString(def->cache));
-+ }
-+
-+ if (def->posix_lock != VIR_TRISTATE_SWITCH_ABSENT) {
-+ virBufferAsprintf(&lockAttrBuf, " posix='%s'",
-+ virTristateSwitchTypeToString(def->posix_lock));
-+ }
-+
-+ if (def->flock != VIR_TRISTATE_SWITCH_ABSENT) {
-+ virBufferAsprintf(&lockAttrBuf, " flock='%s'",
-+ virTristateSwitchTypeToString(def->flock));
-+ }
-+
-+ virXMLFormatElement(&binaryBuf, "lock", &lockAttrBuf, NULL);
- }
-
- virDomainVirtioOptionsFormat(&driverAttrBuf, def->virtio);
-
-- virXMLFormatElement(buf, "driver", &driverAttrBuf, NULL);
-+ virXMLFormatElement(buf, "driver", &driverAttrBuf, &driverBuf);
-+ virXMLFormatElement(buf, "binary", &binaryAttrBuf, &binaryBuf);
-
- switch (def->type) {
- case VIR_DOMAIN_FS_TYPE_MOUNT:
-diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h
-index 921cc42a57..2a382ede72 100644
---- a/src/conf/domain_conf.h
-+++ b/src/conf/domain_conf.h
-@@ -802,6 +802,14 @@ typedef enum {
- VIR_DOMAIN_FS_MODEL_LAST
- } virDomainFSModel;
-
-+typedef enum {
-+ VIR_DOMAIN_FS_CACHE_MODE_DEFAULT = 0,
-+ VIR_DOMAIN_FS_CACHE_MODE_NONE,
-+ VIR_DOMAIN_FS_CACHE_MODE_ALWAYS,
-+
-+ VIR_DOMAIN_FS_CACHE_MODE_LAST
-+} virDomainFSCacheMode;
-+
- struct _virDomainFSDef {
- int type;
- int fsdriver; /* enum virDomainFSDriverType */
-@@ -817,6 +825,12 @@ struct _virDomainFSDef {
- unsigned long long space_hard_limit; /* in bytes */
- unsigned long long space_soft_limit; /* in bytes */
- bool symlinksResolved;
-+ char *binary;
-+ unsigned long long queue_size;
-+ virTristateSwitch xattr;
-+ virDomainFSCacheMode cache;
-+ virTristateSwitch posix_lock;
-+ virTristateSwitch flock;
- virDomainVirtioOptionsPtr virtio;
- virObjectPtr privateData;
- };
-@@ -3437,6 +3451,7 @@ VIR_ENUM_DECL(virDomainFSDriver);
- VIR_ENUM_DECL(virDomainFSAccessMode);
- VIR_ENUM_DECL(virDomainFSWrpolicy);
- VIR_ENUM_DECL(virDomainFSModel);
-+VIR_ENUM_DECL(virDomainFSCacheMode);
- VIR_ENUM_DECL(virDomainNet);
- VIR_ENUM_DECL(virDomainNetBackend);
- VIR_ENUM_DECL(virDomainNetVirtioTxMode);
-diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms
-index bc2858fc00..5dc99e03cf 100644
---- a/src/libvirt_private.syms
-+++ b/src/libvirt_private.syms
-@@ -389,6 +389,7 @@ virDomainDiskSourceFormat;
- virDomainDiskTranslateSourcePool;
- virDomainFeatureTypeFromString;
- virDomainFeatureTypeToString;
-+virDomainFSCacheModeTypeToString;
- virDomainFSDefFree;
- virDomainFSDefNew;
- virDomainFSDriverTypeToString;
-diff --git a/tests/qemuxml2argvdata/vhost-user-fs-fd-memory.xml b/tests/qemuxml2argvdata/vhost-user-fs-fd-memory.xml
-index a6b6279fb8..f6bb663e97 100644
---- a/tests/qemuxml2argvdata/vhost-user-fs-fd-memory.xml
-+++ b/tests/qemuxml2argvdata/vhost-user-fs-fd-memory.xml
-@@ -27,7 +27,11 @@
-
-
-
--
-+
-+
-+
-+
-+
-
-
-
-diff --git a/tests/qemuxml2argvdata/vhost-user-fs-hugepages.xml b/tests/qemuxml2argvdata/vhost-user-fs-hugepages.xml
-index 70df7b890d..96b9774704 100644
---- a/tests/qemuxml2argvdata/vhost-user-fs-hugepages.xml
-+++ b/tests/qemuxml2argvdata/vhost-user-fs-hugepages.xml
-@@ -63,6 +63,7 @@
-
-
-
-+
-
-
-
---
-2.25.1
-
diff --git a/SOURCES/libvirt-conf-backup-Allow-configuration-of-names-exported-via-NBD.patch b/SOURCES/libvirt-conf-backup-Allow-configuration-of-names-exported-via-NBD.patch
deleted file mode 100644
index 1f1335e..0000000
--- a/SOURCES/libvirt-conf-backup-Allow-configuration-of-names-exported-via-NBD.patch
+++ /dev/null
@@ -1,146 +0,0 @@
-From 100ae962cd0f4dbfd5270bc2d61f05ec1c524c0a Mon Sep 17 00:00:00 2001
-Message-Id: <100ae962cd0f4dbfd5270bc2d61f05ec1c524c0a@dist-git>
-From: Peter Krempa
-Date: Tue, 4 Feb 2020 15:07:40 +0100
-Subject: [PATCH] conf: backup: Allow configuration of names exported via NBD
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-If users wish to use different name for exported disks or bitmaps
-the new fields allow to do so. Additionally they also document the
-current settings.
-
-Signed-off-by: Peter Krempa
-Reviewed-by: Daniel Henrique Barboza
-Reviewed-by: Eric Blake
-(cherry picked from commit 12ccd8d4db12d71a270d903701a8edb83d41f127)
-
-https://bugzilla.redhat.com/show_bug.cgi?id=1207659
-Message-Id: <8043f75d8d4b4ae7e7ae3671d71407f733e6a3cf.1580824112.git.pkrempa@redhat.com>
-Reviewed-by: Ján Tomko
----
- docs/formatbackup.html.in | 9 +++++++++
- docs/schemas/domainbackup.rng | 8 ++++++++
- src/conf/backup_conf.c | 10 ++++++++++
- src/conf/backup_conf.h | 2 ++
- tests/domainbackupxml2xmlin/backup-pull-seclabel.xml | 2 +-
- tests/domainbackupxml2xmlout/backup-pull-seclabel.xml | 2 +-
- 6 files changed, 31 insertions(+), 2 deletions(-)
-
-diff --git a/docs/formatbackup.html.in b/docs/formatbackup.html.in
-index 1c690901c7..543d913072 100644
---- a/docs/formatbackup.html.in
-+++ b/docs/formatbackup.html.in
-@@ -85,6 +85,15 @@
- Setting this attribute to yes
(default) specifies
- that the disk should take part in the backup and using
- no
excludes the disk from the backup.
-+ exportname
-+ Allows modification of the NBD export name for the given disk.
-+ By default equal to disk target.
-+ Valid only for pull mode backups.
-+ exportbitmap
-+ Allows modification of the name of the bitmap describing dirty
-+ blocks for an incremental backup exported via NBD export name
-+ for the given disk.
-+ Valid only for pull mode backups.
- type
- A mandatory attribute to describe the type of the
- disk, except when backup='no'
is
-diff --git a/docs/schemas/domainbackup.rng b/docs/schemas/domainbackup.rng
-index c1e4d80302..395ea841f9 100644
---- a/docs/schemas/domainbackup.rng
-+++ b/docs/schemas/domainbackup.rng
-@@ -165,6 +165,14 @@
-
-
-
-+
-+
-+
-+
-+
-+
-+
-+
-
-
-
-diff --git a/src/conf/backup_conf.c b/src/conf/backup_conf.c
-index 61dc8cd4b2..b370b686f1 100644
---- a/src/conf/backup_conf.c
-+++ b/src/conf/backup_conf.c
-@@ -71,6 +71,8 @@ virDomainBackupDefFree(virDomainBackupDefPtr def)
- virDomainBackupDiskDefPtr disk = def->disks + i;
-
- g_free(disk->name);
-+ g_free(disk->exportname);
-+ g_free(disk->exportbitmap);
- virObjectUnref(disk->store);
- }
-
-@@ -124,6 +126,11 @@ virDomainBackupDiskDefParseXML(xmlNodePtr node,
- if (def->backup == VIR_TRISTATE_BOOL_NO)
- return 0;
-
-+ if (!push) {
-+ def->exportname = virXMLPropString(node, "exportname");
-+ def->exportbitmap = virXMLPropString(node, "exportbitmap");
-+ }
-+
- if (internal) {
- if (!(state = virXMLPropString(node, "state")) ||
- (tmp = virDomainBackupDiskStateTypeFromString(state)) < 0) {
-@@ -333,6 +340,9 @@ virDomainBackupDiskDefFormat(virBufferPtr buf,
- if (disk->backup == VIR_TRISTATE_BOOL_YES) {
- virBufferAsprintf(&attrBuf, " type='%s'", virStorageTypeToString(disk->store->type));
-
-+ virBufferEscapeString(&attrBuf, " exportname='%s'", disk->exportname);
-+ virBufferEscapeString(&attrBuf, " exportbitmap='%s'", disk->exportbitmap);
-+
- if (disk->store->format > 0)
- virBufferEscapeString(&childBuf, " \n",
- virStorageFileFormatTypeToString(disk->store->format));
-diff --git a/src/conf/backup_conf.h b/src/conf/backup_conf.h
-index 7cf44245d4..672fd52ee7 100644
---- a/src/conf/backup_conf.h
-+++ b/src/conf/backup_conf.h
-@@ -51,6 +51,8 @@ typedef virDomainBackupDiskDef *virDomainBackupDiskDefPtr;
- struct _virDomainBackupDiskDef {
- char *name; /* name matching the 1525889631
-
-
--
-+
-
-
-
-diff --git a/tests/domainbackupxml2xmlout/backup-pull-seclabel.xml b/tests/domainbackupxml2xmlout/backup-pull-seclabel.xml
-index c631c9b979..450f007d3a 100644
---- a/tests/domainbackupxml2xmlout/backup-pull-seclabel.xml
-+++ b/tests/domainbackupxml2xmlout/backup-pull-seclabel.xml
-@@ -2,7 +2,7 @@
- 1525889631
-
-
--
-+
-
-
-
---
-2.25.0
-
diff --git a/SOURCES/libvirt-conf-backup-Store-incremental-backup-checkpoint-name-per-disk.patch b/SOURCES/libvirt-conf-backup-Store-incremental-backup-checkpoint-name-per-disk.patch
deleted file mode 100644
index acc76c3..0000000
--- a/SOURCES/libvirt-conf-backup-Store-incremental-backup-checkpoint-name-per-disk.patch
+++ /dev/null
@@ -1,67 +0,0 @@
-From 7f5c44bfd2b6290e142380775b6a6205ccc43840 Mon Sep 17 00:00:00 2001
-Message-Id: <7f5c44bfd2b6290e142380775b6a6205ccc43840@dist-git>
-From: Peter Krempa
-Date: Tue, 23 Jun 2020 12:23:37 +0200
-Subject: [PATCH] conf: backup: Store incremental backup checkpoint name
- per-disk
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-In preparation to allow heterogenous backups store the 'incremental'
-field per-disk and fill it by default from the per-backup field.
-
-Having this will be important once we'll want to allow incremental
-backup working while hotplugging a new disk.
-
-Signed-off-by: Peter Krempa
-Reviewed-by: Eric Blake
-(cherry picked from commit b8295160c36e555d8bcaef5015d0c1e3ae85fb17)
-https://bugzilla.redhat.com/show_bug.cgi?id=1804593
-Message-Id:
-Reviewed-by: Ján Tomko
----
- src/conf/backup_conf.c | 8 ++++++++
- src/conf/backup_conf.h | 1 +
- 2 files changed, 9 insertions(+)
-
-diff --git a/src/conf/backup_conf.c b/src/conf/backup_conf.c
-index 64c8f6cc09..58fb3ec759 100644
---- a/src/conf/backup_conf.c
-+++ b/src/conf/backup_conf.c
-@@ -71,6 +71,7 @@ virDomainBackupDefFree(virDomainBackupDefPtr def)
- virDomainBackupDiskDefPtr disk = def->disks + i;
-
- g_free(disk->name);
-+ g_free(disk->incremental);
- g_free(disk->exportname);
- g_free(disk->exportbitmap);
- virObjectUnref(disk->store);
-@@ -503,5 +504,12 @@ virDomainBackupAlignDisks(virDomainBackupDefPtr def,
- }
- }
-
-+ for (i = 0; i < def->ndisks; i++) {
-+ virDomainBackupDiskDefPtr backupdisk = &def->disks[i];
-+
-+ if (def->incremental && !backupdisk->incremental)
-+ backupdisk->incremental = g_strdup(def->incremental);
-+ }
-+
- return 0;
- }
-diff --git a/src/conf/backup_conf.h b/src/conf/backup_conf.h
-index 672fd52ee7..7ce7a46ad4 100644
---- a/src/conf/backup_conf.h
-+++ b/src/conf/backup_conf.h
-@@ -51,6 +51,7 @@ typedef virDomainBackupDiskDef *virDomainBackupDiskDefPtr;
- struct _virDomainBackupDiskDef {
- char *name; /* name matching the
-From: Laine Stump
-Date: Sun, 26 Apr 2020 13:17:02 -0400
-Subject: [PATCH] conf: check HOTPLUGGABLE connect flag when validating a PCI
- address
-
-The HOTPLUGGABLE flag is set for appropriates buses in a PCI address
-set, and thnis patch updates virDomainPCIAddressFlagsCompatible() to
-check the HOTPLUGGABLE flag when searching for a suitable bus/slot for
-a device. No devices request HOTPLUGGABLE though (yet), so there is no
-observable effect.
-
-Signed-off-by: Laine Stump
-Reviewed-by: Michal Privoznik
-(cherry picked from commit a283189f8c64882681ea99259ccfc8d1b8e524dd)
-
-https://bugzilla.redhat.com/1802592
-Signed-off-by: Laine Stump
-Message-Id: <20200426171703.18808-2-laine@redhat.com>
-Reviewed-by: Michal Privoznik
----
- src/conf/domain_addr.c | 12 ++++++++++++
- 1 file changed, 12 insertions(+)
-
-diff --git a/src/conf/domain_addr.c b/src/conf/domain_addr.c
-index cc45a0bbf1..ed41eca114 100644
---- a/src/conf/domain_addr.c
-+++ b/src/conf/domain_addr.c
-@@ -376,6 +376,18 @@ virDomainPCIAddressFlagsCompatible(virPCIDeviceAddressPtr addr,
- return false;
- }
-
-+ if ((devFlags & VIR_PCI_CONNECT_HOTPLUGGABLE) &&
-+ !(busFlags & VIR_PCI_CONNECT_HOTPLUGGABLE)) {
-+ if (reportError) {
-+ virReportError(errType,
-+ _("The device at PCI address %s requires "
-+ "hotplug capability, but the PCI controller "
-+ "with index='%d' doesn't support hotplug"),
-+ addrStr, addr->bus);
-+ }
-+ return false;
-+ }
-+
- /* If this bus doesn't allow the type of connection (PCI
- * vs. PCIe) required by the device, or if the device requires
- * hot-plug and this bus doesn't have it, return false.
---
-2.26.2
-
diff --git a/SOURCES/libvirt-conf-do-not-generate-machine-names-ending-with-a-dash.patch b/SOURCES/libvirt-conf-do-not-generate-machine-names-ending-with-a-dash.patch
deleted file mode 100644
index e67d233..0000000
--- a/SOURCES/libvirt-conf-do-not-generate-machine-names-ending-with-a-dash.patch
+++ /dev/null
@@ -1,70 +0,0 @@
-From f9fdeb29a61a98868d1a9f5284a85c57f826d6d1 Mon Sep 17 00:00:00 2001
-Message-Id:
-From: =?UTF-8?q?J=C3=A1n=20Tomko?=
-Date: Fri, 13 Mar 2020 13:08:08 +0100
-Subject: [PATCH] conf: do not generate machine names ending with a dash
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-As of systemd commit:
-
-commit d65652f1f21a4b0c59711320f34266c635393c89
-Author: Zbigniew Jędrzejewski-Szmek
-CommitDate: 2018-12-10 09:56:56 +0100
-
- Partially unify hostname_is_valid() and dns_name_is_valid()
-
-Dashes are no longer allowed at the end of machine names.
-
-Trim the trailing dashes from the generated name before passing
-it to machined.
-
-Fedora: https://bugzilla.redhat.com/show_bug.cgi?id=1790409
-
-Signed-off-by: Ján Tomko
-Reviewed-by: Erik Skultety
-(cherry picked from commit 45464db8ba502764cf37ec9335770248bdb3d9a8)
-
-Prerequisite for: https://bugzilla.redhat.com/show_bug.cgi?id=1808499
-
-Signed-off-by: Michal Privoznik
-Message-Id:
-Reviewed-by: Ján Tomko
----
- src/conf/domain_conf.c | 3 +++
- tests/virsystemdtest.c | 4 ++++
- 2 files changed, 7 insertions(+)
-
-diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
-index 77e3d25a2d..4b297c96bc 100644
---- a/src/conf/domain_conf.c
-+++ b/src/conf/domain_conf.c
-@@ -30708,6 +30708,9 @@ virDomainMachineNameAppendValid(virBufferPtr buf,
-
- virBufferAddChar(buf, *name);
- }
-+
-+ /* trailing dashes are not allowed */
-+ virBufferTrimChars(buf, "-");
- }
-
- #undef HOSTNAME_CHARS
-diff --git a/tests/virsystemdtest.c b/tests/virsystemdtest.c
-index 9b95ca6789..26876850b8 100644
---- a/tests/virsystemdtest.c
-+++ b/tests/virsystemdtest.c
-@@ -740,6 +740,10 @@ mymain(void)
- "qemu-7-123456789012345678901234567890123456789012345678901234567");
- TEST_MACHINE("123456789012345678901234567890123456789012345678901234567890", 8,
- "qemu-8-123456789012345678901234567890123456789012345678901234567");
-+ TEST_MACHINE("kstest-network-device-default-httpks_(c9eed63e-981e-48ec-acdc-56b3f8c5f678)", 100,
-+ "qemu-100-kstest-network-device-default-httpksc9eed63e-981e-48ec");
-+ TEST_MACHINE("kstest-network-device-default-httpks_(c9eed63e-981e-48ec--cdc-56b3f8c5f678)", 10,
-+ "qemu-10-kstest-network-device-default-httpksc9eed63e-981e-48ec");
-
- # define TESTS_PM_SUPPORT_HELPER(name, function) \
- do { \
---
-2.25.1
-
diff --git a/SOURCES/libvirt-conf-domain-Remove-checking-of-return-value-of-virHashCreateFull.patch b/SOURCES/libvirt-conf-domain-Remove-checking-of-return-value-of-virHashCreateFull.patch
deleted file mode 100644
index fe8367a..0000000
--- a/SOURCES/libvirt-conf-domain-Remove-checking-of-return-value-of-virHashCreateFull.patch
+++ /dev/null
@@ -1,73 +0,0 @@
-From 04792aa0715be4e779fca81fa8f7e9f2c5c1b71f Mon Sep 17 00:00:00 2001
-Message-Id: <04792aa0715be4e779fca81fa8f7e9f2c5c1b71f@dist-git>
-From: Peter Krempa
-Date: Tue, 4 Feb 2020 15:08:00 +0100
-Subject: [PATCH] conf: domain: Remove checking of return value of
- virHashCreateFull
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-This module has last two direct checks whether the value returned by
-virHashCreateFull is NULL. Remove them so that static analyzers don't
-get the false idea that checking the value is necessary.
-
-Signed-off-by: Peter Krempa
-Reviewed-by: Michal Privoznik
-(cherry picked from commit 2a5ea0a0c1843c7c43e673b3d2082cc3abdef602)
-
-https://bugzilla.redhat.com/show_bug.cgi?id=1793263
-Message-Id: <2e310ad44b341511caba735608bc0bba4b072d6c.1580824112.git.pkrempa@redhat.com>
-Reviewed-by: Ján Tomko
----
- src/conf/domain_addr.c | 30 ++++++++++++------------------
- 1 file changed, 12 insertions(+), 18 deletions(-)
-
-diff --git a/src/conf/domain_addr.c b/src/conf/domain_addr.c
-index 607ba56efd..f07b3d9725 100644
---- a/src/conf/domain_addr.c
-+++ b/src/conf/domain_addr.c
-@@ -1044,28 +1044,22 @@ virDomainPCIAddressSetExtensionAlloc(virDomainPCIAddressSetPtr addrs,
- if (VIR_ALLOC(addrs->zpciIds) < 0)
- return -1;
-
-- if (!(addrs->zpciIds->uids = virHashCreateFull(10, NULL,
-- virZPCIAddrKeyCode,
-- virZPCIAddrKeyEqual,
-- virZPCIAddrKeyCopy,
-- virZPCIAddrKeyPrintHuman,
-- virZPCIAddrKeyFree)))
-- goto error;
-+ addrs->zpciIds->uids = virHashCreateFull(10, NULL,
-+ virZPCIAddrKeyCode,
-+ virZPCIAddrKeyEqual,
-+ virZPCIAddrKeyCopy,
-+ virZPCIAddrKeyPrintHuman,
-+ virZPCIAddrKeyFree);
-
-- if (!(addrs->zpciIds->fids = virHashCreateFull(10, NULL,
-- virZPCIAddrKeyCode,
-- virZPCIAddrKeyEqual,
-- virZPCIAddrKeyCopy,
-- virZPCIAddrKeyPrintHuman,
-- virZPCIAddrKeyFree)))
-- goto error;
-+ addrs->zpciIds->fids = virHashCreateFull(10, NULL,
-+ virZPCIAddrKeyCode,
-+ virZPCIAddrKeyEqual,
-+ virZPCIAddrKeyCopy,
-+ virZPCIAddrKeyPrintHuman,
-+ virZPCIAddrKeyFree);
- }
-
- return 0;
--
-- error:
-- virDomainPCIAddressSetExtensionFree(addrs);
-- return -1;
- }
-
-
---
-2.25.0
-
diff --git a/SOURCES/libvirt-conf-during-PCI-hotplug-require-that-the-controller-support-hotplug.patch b/SOURCES/libvirt-conf-during-PCI-hotplug-require-that-the-controller-support-hotplug.patch
deleted file mode 100644
index a66d8c1..0000000
--- a/SOURCES/libvirt-conf-during-PCI-hotplug-require-that-the-controller-support-hotplug.patch
+++ /dev/null
@@ -1,47 +0,0 @@
-From 5ec240811e391f97378d0b6b726e0dee13ae8a40 Mon Sep 17 00:00:00 2001
-Message-Id: <5ec240811e391f97378d0b6b726e0dee13ae8a40@dist-git>
-From: Laine Stump
-Date: Sun, 26 Apr 2020 13:17:03 -0400
-Subject: [PATCH] conf: during PCI hotplug, require that the controller support
- hotplug
-
-Before this patch we would simply rely on QEMU failing to attach the
-device. Since we have a flag in the address set telling us which
-controllers support hotplug, we can fail the operation sooner.
-
-This also assures that when hotplugging with no provided PCI address,
-that we skip any controllers with hotplug='off', and attempt to assign
-the device to a controller that not only supports hotplug, but also
-has it enabled.
-
-Signed-off-by: Laine Stump
-Reviewed-by: Michal Privoznik
-(cherry picked from commit 7118bdee1550b6022e7362402ca8204add4cf80b)
-
-https://bugzilla.redhat.com/1802592
-Signed-off-by: Laine Stump
-Message-Id: <20200426171703.18808-3-laine@redhat.com>
-Reviewed-by: Michal Privoznik
----
- src/conf/domain_addr.c | 5 +++++
- 1 file changed, 5 insertions(+)
-
-diff --git a/src/conf/domain_addr.c b/src/conf/domain_addr.c
-index ed41eca114..34ea7bc051 100644
---- a/src/conf/domain_addr.c
-+++ b/src/conf/domain_addr.c
-@@ -936,6 +936,11 @@ virDomainPCIAddressEnsureAddr(virDomainPCIAddressSetPtr addrs,
- if (!flags)
- return 0;
-
-+ /* This function is only called during hotplug, so we require hotplug
-+ * support from the controller.
-+ */
-+ flags |= VIR_PCI_CONNECT_HOTPLUGGABLE;
-+
- if (!(addrStr = virPCIDeviceAddressAsString(&dev->addr.pci)))
- goto cleanup;
-
---
-2.26.2
-
diff --git a/SOURCES/libvirt-conf-introduce-support-for-firmware-auto-selection-feature-filtering.patch b/SOURCES/libvirt-conf-introduce-support-for-firmware-auto-selection-feature-filtering.patch
deleted file mode 100644
index 2b876eb..0000000
--- a/SOURCES/libvirt-conf-introduce-support-for-firmware-auto-selection-feature-filtering.patch
+++ /dev/null
@@ -1,415 +0,0 @@
-From 6f02748897062d40b411177ef752644505189a72 Mon Sep 17 00:00:00 2001
-Message-Id: <6f02748897062d40b411177ef752644505189a72@dist-git>
-From: Pavel Hrdina
-Date: Fri, 21 May 2021 14:16:11 +0200
-Subject: [PATCH] conf: introduce support for firmware auto-selection feature
- filtering
-
-When the firmware auto-selection was introduced it always picked first
-usable firmware based on the JSON descriptions on the host. It is
-possible to add/remove/change the JSON files but it will always be for
-the whole host.
-
-This patch introduces support for configuring the auto-selection per VM
-by adding users an option to limit what features they would like to have
-available in the firmware.
-
-Signed-off-by: Pavel Hrdina
-Reviewed-by: Michal Privoznik
-(cherry picked from commit cff524af6c5e1ddc11149394ed7f985242ebea0f)
-
-Conflicts:
- docs/formatdomain.rst
- - we still have formatdomain.html.in in downstream
- src/conf/domain_conf.c
- - missing following upstream commits:
- 0280fc72708b9d0f162a808bcc8d78137a68d58d
- 104dadcff6023da676df3905d1ed8688aea15e86
- 2d5f7a49ae0780143566932ab38215433982c89f
-
-Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1929357
-
-Signed-off-by: Pavel Hrdina
-Message-Id: <631e05bc5363abb3e48d8b652a806324801cce16.1621599207.git.phrdina@redhat.com>
-Reviewed-by: Michal Privoznik
----
- docs/formatdomain.html.in | 58 +++++++++++++
- docs/schemas/domaincommon.rng | 23 +++++
- src/conf/domain_conf.c | 83 ++++++++++++++++++-
- src/conf/domain_conf.h | 10 +++
- ...os-firmware-invalid-type.x86_64-latest.err | 1 +
- .../os-firmware-invalid-type.xml | 28 +++++++
- tests/qemuxml2argvtest.c | 1 +
- ...aarch64-os-firmware-efi.aarch64-latest.xml | 1 +
- .../os-firmware-bios.x86_64-latest.xml | 1 +
- .../os-firmware-efi-secboot.x86_64-latest.xml | 1 +
- .../os-firmware-efi.x86_64-latest.xml | 1 +
- tests/vmx2xmldata/vmx2xml-firmware-efi.xml | 1 +
- 12 files changed, 206 insertions(+), 3 deletions(-)
- create mode 100644 tests/qemuxml2argvdata/os-firmware-invalid-type.x86_64-latest.err
- create mode 100644 tests/qemuxml2argvdata/os-firmware-invalid-type.xml
-
-diff --git a/docs/formatdomain.html.in b/docs/formatdomain.html.in
-index a40bed347b..11f31618af 100644
---- a/docs/formatdomain.html.in
-+++ b/docs/formatdomain.html.in
-@@ -180,6 +180,64 @@
- ESX
and VMWare
hypervisor drivers, however,
- the i686
arch will always be chosen even on an
- x86_64
host. Since 0.0.1
-+ firmware
-+
-+ Since 7.2.0 QEMU/KVM only
-+
-+ When used together with firmware
attribute of
-+ os
element the type
attribute must
-+ have the same value.
-+
-+
-+ List of mandatory attributes:
-+
-+
-+ type
(accepted values are bios
-+ and efi
) same as the firmware
-+ attribute of os
element.
-+
-+
-+
-+
-+ When using firmware auto-selection there are different features
-+ enabled in the firmwares. The list of features can be used to
-+ limit what firmware should be automatically selected for the VM.
-+ The list of features can be specified using zero or more
-+ feature
elements. Libvirt will take into consideration
-+ only the listed features and ignore the rest when selecting the firmware.
-+
-+
-+ feature
-+
-+ The list of mandatory attributes:
-+
-+
-+
-+ enabled
(accepted values are yes
-+ and no
) is used to tell libvirt if the feature
-+ must be enabled or not in the automatically selected firmware
-+
-+
-+ name
the name of the feature, the list of the features:
-+
-+
-+ enrolled-keys
whether the selected nvram template
-+ has default certificate enrolled. Firmware with Secure Boot
-+ feature but without enrolled keys will successfully boot
-+ non-signed binaries as well. Valid only for firmwares with
-+ Secure Boot feature.
-+
-+
-+ secure-boot
whether the firmware implements
-+ UEFI Secure boot feature.
-+
-+
-+
-+
-+
-+
-+
-+
- loader
- The optional loader
tag refers to a firmware blob,
- which is specified by absolute path,
-diff --git a/docs/schemas/domaincommon.rng b/docs/schemas/domaincommon.rng
-index 6671ef3dfa..b7f6a6b494 100644
---- a/docs/schemas/domaincommon.rng
-+++ b/docs/schemas/domaincommon.rng
-@@ -268,6 +268,29 @@
-
-
-
-+
-+
-+
-+
-+ bios
-+ efi
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+ enrolled-keys
-+ secure-boot
-+
-+
-+
-+
-+
-+
-
-
-
-diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
-index 93a78f8277..28c8d0ecbd 100644
---- a/src/conf/domain_conf.c
-+++ b/src/conf/domain_conf.c
-@@ -1240,6 +1240,12 @@ VIR_ENUM_IMPL(virDomainOsDefFirmware,
- "efi",
- );
-
-+VIR_ENUM_IMPL(virDomainOsDefFirmwareFeature,
-+ VIR_DOMAIN_OS_DEF_FIRMWARE_FEATURE_LAST,
-+ "enrolled-keys",
-+ "secure-boot",
-+);
-+
- /* Internal mapping: subset of block job types that can be present in
- * XML (remaining types are not two-phase). */
- VIR_ENUM_DECL(virDomainBlockJob);
-@@ -19382,22 +19388,67 @@ virDomainDefParseBootFirmwareOptions(virDomainDefPtr def,
- xmlXPathContextPtr ctxt)
- {
- g_autofree char *firmware = virXPathString("string(./os/@firmware)", ctxt);
-+ g_autofree char *type = virXPathString("string(./os/firmware/@type)", ctxt);
-+ g_autofree xmlNodePtr *nodes = NULL;
-+ g_autofree int *features = NULL;
- int fw = 0;
-+ int n = 0;
-+ size_t i;
-
-- if (!firmware)
-+ if (!firmware && !type)
- return 0;
-
-- fw = virDomainOsDefFirmwareTypeFromString(firmware);
-+ if (firmware && type && STRNEQ(firmware, type)) {
-+ virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
-+ _("firmware attribute and firmware type has to be the same"));
-+ return -1;
-+ }
-+
-+ if (!type)
-+ type = g_steal_pointer(&firmware);
-+
-+ fw = virDomainOsDefFirmwareTypeFromString(type);
-
- if (fw <= 0) {
- virReportError(VIR_ERR_XML_ERROR,
- _("unknown firmware value %s"),
-- firmware);
-+ type);
- return -1;
- }
-
- def->os.firmware = fw;
-
-+ if ((n = virXPathNodeSet("./os/firmware/feature", ctxt, &nodes)) < 0)
-+ return -1;
-+
-+ if (n > 0)
-+ features = g_new0(int, VIR_DOMAIN_OS_DEF_FIRMWARE_FEATURE_LAST);
-+
-+ for (i = 0; i < n; i++) {
-+ g_autofree char *name = virXMLPropString(nodes[i], "name");
-+ g_autofree char *enabled = virXMLPropString(nodes[i], "enabled");
-+ int feature = virDomainOsDefFirmwareFeatureTypeFromString(name);
-+ int val = virTristateBoolTypeFromString(enabled);
-+
-+ if (feature < 0) {
-+ virReportError(VIR_ERR_XML_ERROR,
-+ _("invalid firmware feature name '%s'"),
-+ name);
-+ return -1;
-+ }
-+
-+ if (val < 0) {
-+ virReportError(VIR_ERR_XML_ERROR,
-+ _("invalid firmware feature enabled value '%s'"),
-+ enabled);
-+ return -1;
-+ }
-+
-+ features[feature] = val;
-+ }
-+
-+ def->os.firmwareFeatures = g_steal_pointer(&features);
-+
- return 0;
- }
-
-@@ -28987,6 +29038,32 @@ virDomainDefFormatInternalSetRootName(virDomainDefPtr def,
- virBufferAsprintf(buf, ">%s\n",
- virDomainOSTypeToString(def->os.type));
-
-+ if (def->os.firmware) {
-+ virBufferAsprintf(buf, "os.firmware));
-+
-+ if (def->os.firmwareFeatures) {
-+ virBufferAddLit(buf, ">\n");
-+
-+ virBufferAdjustIndent(buf, 2);
-+
-+ for (i = 0; i < VIR_DOMAIN_OS_DEF_FIRMWARE_FEATURE_LAST; i++) {
-+ if (def->os.firmwareFeatures[i] == VIR_TRISTATE_BOOL_ABSENT)
-+ continue;
-+
-+ virBufferAsprintf(buf, " \n",
-+ virTristateBoolTypeToString(def->os.firmwareFeatures[i]),
-+ virDomainOsDefFirmwareFeatureTypeToString(i));
-+ }
-+
-+ virBufferAdjustIndent(buf, -2);
-+
-+ virBufferAddLit(buf, " \n");
-+ } else {
-+ virBufferAddLit(buf, "/>\n");
-+ }
-+ }
-+
- virBufferEscapeString(buf, "%s \n",
- def->os.init);
- for (i = 0; def->os.initargv && def->os.initargv[i]; i++)
-diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h
-index 3aed1fb22a..1ad77ecac6 100644
---- a/src/conf/domain_conf.h
-+++ b/src/conf/domain_conf.h
-@@ -1967,9 +1967,19 @@ G_STATIC_ASSERT((int)VIR_DOMAIN_OS_DEF_FIRMWARE_LAST == (int)VIR_DOMAIN_LOADER_T
-
- VIR_ENUM_DECL(virDomainOsDefFirmware);
-
-+typedef enum {
-+ VIR_DOMAIN_OS_DEF_FIRMWARE_FEATURE_ENROLLED_KEYS,
-+ VIR_DOMAIN_OS_DEF_FIRMWARE_FEATURE_SECURE_BOOT,
-+
-+ VIR_DOMAIN_OS_DEF_FIRMWARE_FEATURE_LAST
-+} virDomainOsDefFirmwareFeature;
-+
-+VIR_ENUM_DECL(virDomainOsDefFirmwareFeature);
-+
- struct _virDomainOSDef {
- int type;
- virDomainOsDefFirmware firmware;
-+ int *firmwareFeatures;
- virArch arch;
- char *machine;
- size_t nBootDevs;
-diff --git a/tests/qemuxml2argvdata/os-firmware-invalid-type.x86_64-latest.err b/tests/qemuxml2argvdata/os-firmware-invalid-type.x86_64-latest.err
-new file mode 100644
-index 0000000000..c8174b1c8b
---- /dev/null
-+++ b/tests/qemuxml2argvdata/os-firmware-invalid-type.x86_64-latest.err
-@@ -0,0 +1 @@
-+unsupported configuration: firmware attribute and firmware type has to be the same
-diff --git a/tests/qemuxml2argvdata/os-firmware-invalid-type.xml b/tests/qemuxml2argvdata/os-firmware-invalid-type.xml
-new file mode 100644
-index 0000000000..41360df0f7
---- /dev/null
-+++ b/tests/qemuxml2argvdata/os-firmware-invalid-type.xml
-@@ -0,0 +1,28 @@
-+
-+ fedora
-+ 63840878-0deb-4095-97e6-fc444d9bc9fa
-+ 8192
-+ 8192
-+ 1
-+
-+ hvm
-+
-+
-+ /var/lib/libvirt/qemu/nvram/fedora_VARS.fd
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+ destroy
-+ restart
-+ restart
-+
-+ /usr/bin/qemu-system-x86_64
-+
-+
-+
-diff --git a/tests/qemuxml2argvtest.c b/tests/qemuxml2argvtest.c
-index a22e3ba157..bc04bea692 100644
---- a/tests/qemuxml2argvtest.c
-+++ b/tests/qemuxml2argvtest.c
-@@ -3094,6 +3094,7 @@ mymain(void)
- DO_TEST_CAPS_LATEST("os-firmware-bios");
- DO_TEST_CAPS_LATEST("os-firmware-efi");
- DO_TEST_CAPS_LATEST("os-firmware-efi-secboot");
-+ DO_TEST_CAPS_LATEST_PARSE_ERROR("os-firmware-invalid-type");
- DO_TEST_CAPS_ARCH_LATEST("aarch64-os-firmware-efi", "aarch64");
-
- DO_TEST_CAPS_LATEST("vhost-user-vga");
-diff --git a/tests/qemuxml2xmloutdata/aarch64-os-firmware-efi.aarch64-latest.xml b/tests/qemuxml2xmloutdata/aarch64-os-firmware-efi.aarch64-latest.xml
-index 1e51d55305..3cac8fc5c6 100644
---- a/tests/qemuxml2xmloutdata/aarch64-os-firmware-efi.aarch64-latest.xml
-+++ b/tests/qemuxml2xmloutdata/aarch64-os-firmware-efi.aarch64-latest.xml
-@@ -6,6 +6,7 @@
- 1
-
- hvm
-+
- /aarch64.kernel
- /aarch64.initrd
- earlyprintk console=ttyAMA0,115200n8 rw root=/dev/vda rootwait
-diff --git a/tests/qemuxml2xmloutdata/os-firmware-bios.x86_64-latest.xml b/tests/qemuxml2xmloutdata/os-firmware-bios.x86_64-latest.xml
-index 60d3498765..ef24f2fece 100644
---- a/tests/qemuxml2xmloutdata/os-firmware-bios.x86_64-latest.xml
-+++ b/tests/qemuxml2xmloutdata/os-firmware-bios.x86_64-latest.xml
-@@ -6,6 +6,7 @@
- 1
-
- hvm
-+
-
- /var/lib/libvirt/qemu/nvram/fedora_VARS.fd
-
-diff --git a/tests/qemuxml2xmloutdata/os-firmware-efi-secboot.x86_64-latest.xml b/tests/qemuxml2xmloutdata/os-firmware-efi-secboot.x86_64-latest.xml
-index 938da73711..3757191e8e 100644
---- a/tests/qemuxml2xmloutdata/os-firmware-efi-secboot.x86_64-latest.xml
-+++ b/tests/qemuxml2xmloutdata/os-firmware-efi-secboot.x86_64-latest.xml
-@@ -6,6 +6,7 @@
- 1
-
- hvm
-+
-
- /var/lib/libvirt/qemu/nvram/fedora_VARS.fd
-
-diff --git a/tests/qemuxml2xmloutdata/os-firmware-efi.x86_64-latest.xml b/tests/qemuxml2xmloutdata/os-firmware-efi.x86_64-latest.xml
-index 97ce8a75c7..f2e6b7f36d 100644
---- a/tests/qemuxml2xmloutdata/os-firmware-efi.x86_64-latest.xml
-+++ b/tests/qemuxml2xmloutdata/os-firmware-efi.x86_64-latest.xml
-@@ -6,6 +6,7 @@
- 1
-
- hvm
-+
-
- /var/lib/libvirt/qemu/nvram/fedora_VARS.fd
-
-diff --git a/tests/vmx2xmldata/vmx2xml-firmware-efi.xml b/tests/vmx2xmldata/vmx2xml-firmware-efi.xml
-index e21158cebf..375c47d281 100644
---- a/tests/vmx2xmldata/vmx2xml-firmware-efi.xml
-+++ b/tests/vmx2xmldata/vmx2xml-firmware-efi.xml
-@@ -5,6 +5,7 @@
- 1
-
- hvm
-+
-
-
- destroy
---
-2.31.1
-
diff --git a/SOURCES/libvirt-conf-introduce-virDomainDefParseBootAcpiOptions.patch b/SOURCES/libvirt-conf-introduce-virDomainDefParseBootAcpiOptions.patch
deleted file mode 100644
index f3d6fd4..0000000
--- a/SOURCES/libvirt-conf-introduce-virDomainDefParseBootAcpiOptions.patch
+++ /dev/null
@@ -1,124 +0,0 @@
-From 7ba2905bfcab4dbe4a491ee8587dd4c9ef457c0b Mon Sep 17 00:00:00 2001
-Message-Id: <7ba2905bfcab4dbe4a491ee8587dd4c9ef457c0b@dist-git>
-From: Pavel Hrdina
-Date: Fri, 21 May 2021 14:16:09 +0200
-Subject: [PATCH] conf: introduce virDomainDefParseBootAcpiOptions
-
-Extract the code to it's own function.
-
-Signed-off-by: Pavel Hrdina
-Reviewed-by: Michal Privoznik
-(cherry picked from commit 108cb29c1c7eec7b9089dd431e0bdcd82a0b07f1)
-
-Conflicts:
- src/conf/domain_conf.c
- - missing upstream commit d293a556d710754d8aa8d5caac0bb01a365fcbd8
-
-Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1929357
-
-Signed-off-by: Pavel Hrdina
-Message-Id: <5fb7ee0165340ff517b3f7f16ddc542813ac385d.1621599207.git.phrdina@redhat.com>
-Reviewed-by: Michal Privoznik
----
- src/conf/domain_conf.c | 71 ++++++++++++++++++++++++------------------
- 1 file changed, 41 insertions(+), 30 deletions(-)
-
-diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
-index 493700ed6b..f8d8d33245 100644
---- a/src/conf/domain_conf.c
-+++ b/src/conf/domain_conf.c
-@@ -19429,13 +19429,51 @@ virDomainDefParseBootLoaderOptions(virDomainDefPtr def,
-
-
- static int
--virDomainDefParseBootOptions(virDomainDefPtr def,
-- xmlXPathContextPtr ctxt)
-+virDomainDefParseBootAcpiOptions(virDomainDefPtr def,
-+ xmlXPathContextPtr ctxt)
- {
- int n;
- g_autofree xmlNodePtr *nodes = NULL;
- g_autofree char *tmp = NULL;
-
-+ if ((n = virXPathNodeSet("./os/acpi/table", ctxt, &nodes)) < 0)
-+ return -1;
-+
-+ if (n > 1) {
-+ virReportError(VIR_ERR_XML_ERROR, "%s",
-+ _("Only one acpi table is supported"));
-+ return -1;
-+ }
-+
-+ if (n == 1) {
-+ tmp = virXMLPropString(nodes[0], "type");
-+
-+ if (!tmp) {
-+ virReportError(VIR_ERR_XML_ERROR, "%s",
-+ _("Missing acpi table type"));
-+ return -1;
-+ }
-+
-+ if (STREQ_NULLABLE(tmp, "slic")) {
-+ VIR_FREE(tmp);
-+ tmp = virXMLNodeContentString(nodes[0]);
-+ def->os.slic_table = virFileSanitizePath(tmp);
-+ } else {
-+ virReportError(VIR_ERR_XML_ERROR,
-+ _("Unknown acpi table type: %s"),
-+ tmp);
-+ return -1;
-+ }
-+ }
-+
-+ return 0;
-+}
-+
-+
-+static int
-+virDomainDefParseBootOptions(virDomainDefPtr def,
-+ xmlXPathContextPtr ctxt)
-+{
- /*
- * Booting options for different OS types....
- *
-@@ -19467,36 +19505,9 @@ virDomainDefParseBootOptions(virDomainDefPtr def,
- }
-
- if (def->os.type == VIR_DOMAIN_OSTYPE_HVM) {
-- if ((n = virXPathNodeSet("./os/acpi/table", ctxt, &nodes)) < 0)
-+ if (virDomainDefParseBootAcpiOptions(def, ctxt) < 0)
- return -1;
-
-- if (n > 1) {
-- virReportError(VIR_ERR_XML_ERROR, "%s",
-- _("Only one acpi table is supported"));
-- return -1;
-- }
--
-- if (n == 1) {
-- tmp = virXMLPropString(nodes[0], "type");
--
-- if (!tmp) {
-- virReportError(VIR_ERR_XML_ERROR, "%s",
-- _("Missing acpi table type"));
-- return -1;
-- }
--
-- if (STREQ_NULLABLE(tmp, "slic")) {
-- VIR_FREE(tmp);
-- tmp = virXMLNodeContentString(nodes[0]);
-- def->os.slic_table = virFileSanitizePath(tmp);
-- } else {
-- virReportError(VIR_ERR_XML_ERROR,
-- _("Unknown acpi table type: %s"),
-- tmp);
-- return -1;
-- }
-- }
--
- if (virDomainDefParseBootXML(ctxt, def) < 0)
- return -1;
- }
---
-2.31.1
-
diff --git a/SOURCES/libvirt-conf-introduce-virDomainDefParseBootFirmwareOptions.patch b/SOURCES/libvirt-conf-introduce-virDomainDefParseBootFirmwareOptions.patch
deleted file mode 100644
index 409c3bd..0000000
--- a/SOURCES/libvirt-conf-introduce-virDomainDefParseBootFirmwareOptions.patch
+++ /dev/null
@@ -1,86 +0,0 @@
-From 2a019bfa26e697c60893afd09fcc2f0c3218691b Mon Sep 17 00:00:00 2001
-Message-Id: <2a019bfa26e697c60893afd09fcc2f0c3218691b@dist-git>
-From: Pavel Hrdina
-Date: Fri, 21 May 2021 14:16:07 +0200
-Subject: [PATCH] conf: introduce virDomainDefParseBootFirmwareOptions
-
-Extract the code to it's own function.
-
-Signed-off-by: Pavel Hrdina
-Reviewed-by: Michal Privoznik
-(cherry picked from commit bcf97abfc6b45694f0d789ae2bdf87c8d082fddf)
-
-Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1929357
-
-Signed-off-by: Pavel Hrdina
-Message-Id: <9a090d9f2a43b261ed1b6db608779a01a7594f4a.1621599207.git.phrdina@redhat.com>
-Reviewed-by: Michal Privoznik
----
- src/conf/domain_conf.c | 39 +++++++++++++++++++++++++++------------
- 1 file changed, 27 insertions(+), 12 deletions(-)
-
-diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
-index 432ad938f9..bb484a57c6 100644
---- a/src/conf/domain_conf.c
-+++ b/src/conf/domain_conf.c
-@@ -19377,6 +19377,31 @@ virDomainDefParseBootKernelOptions(virDomainDefPtr def,
- }
-
-
-+static int
-+virDomainDefParseBootFirmwareOptions(virDomainDefPtr def,
-+ xmlXPathContextPtr ctxt)
-+{
-+ g_autofree char *firmware = virXPathString("string(./os/@firmware)", ctxt);
-+ int fw = 0;
-+
-+ if (!firmware)
-+ return 0;
-+
-+ fw = virDomainOsDefFirmwareTypeFromString(firmware);
-+
-+ if (fw <= 0) {
-+ virReportError(VIR_ERR_XML_ERROR,
-+ _("unknown firmware value %s"),
-+ firmware);
-+ return -1;
-+ }
-+
-+ def->os.firmware = fw;
-+
-+ return 0;
-+}
-+
-+
- static int
- virDomainDefParseBootOptions(virDomainDefPtr def,
- xmlXPathContextPtr ctxt)
-@@ -19403,23 +19428,13 @@ virDomainDefParseBootOptions(virDomainDefPtr def,
- def->os.type == VIR_DOMAIN_OSTYPE_XENPVH ||
- def->os.type == VIR_DOMAIN_OSTYPE_HVM ||
- def->os.type == VIR_DOMAIN_OSTYPE_UML) {
-- g_autofree char *firmware = NULL;
- xmlNodePtr loader_node;
-
- virDomainDefParseBootKernelOptions(def, ctxt);
-
-- if (def->os.type == VIR_DOMAIN_OSTYPE_HVM &&
-- (firmware = virXPathString("string(./os/@firmware)", ctxt))) {
-- int fw = virDomainOsDefFirmwareTypeFromString(firmware);
--
-- if (fw <= 0) {
-- virReportError(VIR_ERR_XML_ERROR,
-- _("unknown firmware value %s"),
-- firmware);
-+ if (def->os.type == VIR_DOMAIN_OSTYPE_HVM) {
-+ if (virDomainDefParseBootFirmwareOptions(def, ctxt) < 0)
- return -1;
-- }
--
-- def->os.firmware = fw;
- }
-
- if ((loader_node = virXPathNode("./os/loader[1]", ctxt))) {
---
-2.31.1
-
diff --git a/SOURCES/libvirt-conf-introduce-virDomainDefParseBootInitOptions.patch b/SOURCES/libvirt-conf-introduce-virDomainDefParseBootInitOptions.patch
deleted file mode 100644
index 4195af7..0000000
--- a/SOURCES/libvirt-conf-introduce-virDomainDefParseBootInitOptions.patch
+++ /dev/null
@@ -1,173 +0,0 @@
-From adafaa880b67f1025c64515352e5e851daa62ae9 Mon Sep 17 00:00:00 2001
-Message-Id:
-From: Pavel Hrdina
-Date: Fri, 21 May 2021 14:16:05 +0200
-Subject: [PATCH] conf: introduce virDomainDefParseBootInitOptions
-
-Extract the code to it's own function.
-
-Signed-off-by: Pavel Hrdina
-Reviewed-by: Michal Privoznik
-(cherry picked from commit b07116438c96fddfa00bdb57878a707240574b42)
-
-Conflicts:
- src/conf/domain_conf.c
- - using VIR_ALLOC in downstream instead of g_new0
-
-Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1929357
-
-Signed-off-by: Pavel Hrdina
-Message-Id:
-Reviewed-by: Michal Privoznik
----
- src/conf/domain_conf.c | 115 +++++++++++++++++++++++------------------
- 1 file changed, 64 insertions(+), 51 deletions(-)
-
-diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
-index 444657c9a1..9eb418c7c0 100644
---- a/src/conf/domain_conf.c
-+++ b/src/conf/domain_conf.c
-@@ -19302,76 +19302,89 @@ virDomainVcpuParse(virDomainDefPtr def,
-
-
- static int
--virDomainDefParseBootOptions(virDomainDefPtr def,
-- xmlXPathContextPtr ctxt)
-+virDomainDefParseBootInitOptions(virDomainDefPtr def,
-+ xmlXPathContextPtr ctxt)
- {
- char *name = NULL;
- size_t i;
- int n;
- g_autofree xmlNodePtr *nodes = NULL;
-- g_autofree char *tmp = NULL;
-
-- /*
-- * Booting options for different OS types....
-- *
-- * - A bootloader (and optional kernel+initrd) (xen)
-- * - A kernel + initrd (xen)
-- * - A boot device (and optional kernel+initrd) (hvm)
-- * - An init script (exe)
-- */
-+ def->os.init = virXPathString("string(./os/init[1])", ctxt);
-+ def->os.cmdline = virXPathString("string(./os/cmdline[1])", ctxt);
-+ def->os.initdir = virXPathString("string(./os/initdir[1])", ctxt);
-+ def->os.inituser = virXPathString("string(./os/inituser[1])", ctxt);
-+ def->os.initgroup = virXPathString("string(./os/initgroup[1])", ctxt);
-
-- if (def->os.type == VIR_DOMAIN_OSTYPE_EXE) {
-- def->os.init = virXPathString("string(./os/init[1])", ctxt);
-- def->os.cmdline = virXPathString("string(./os/cmdline[1])", ctxt);
-- def->os.initdir = virXPathString("string(./os/initdir[1])", ctxt);
-- def->os.inituser = virXPathString("string(./os/inituser[1])", ctxt);
-- def->os.initgroup = virXPathString("string(./os/initgroup[1])", ctxt);
-+ if ((n = virXPathNodeSet("./os/initarg", ctxt, &nodes)) < 0)
-+ return -1;
-
-- if ((n = virXPathNodeSet("./os/initarg", ctxt, &nodes)) < 0)
-+ if (VIR_ALLOC_N(def->os.initargv, n+1) < 0)
-+ return -1;
-+ for (i = 0; i < n; i++) {
-+ if (!nodes[i]->children ||
-+ !nodes[i]->children->content) {
-+ virReportError(VIR_ERR_XML_ERROR, "%s",
-+ _("No data supplied for element"));
- return -1;
-+ }
-+ def->os.initargv[i] = g_strdup((const char *)nodes[i]->children->content);
-+ }
-+ def->os.initargv[n] = NULL;
-+ VIR_FREE(nodes);
-
-- if (VIR_ALLOC_N(def->os.initargv, n+1) < 0)
-+ if ((n = virXPathNodeSet("./os/initenv", ctxt, &nodes)) < 0)
-+ return -1;
-+
-+ if (VIR_ALLOC_N(def->os.initenv, n+1) < 0)
-+ return -1;
-+ for (i = 0; i < n; i++) {
-+ if (!(name = virXMLPropString(nodes[i], "name"))) {
-+ virReportError(VIR_ERR_XML_ERROR, "%s",
-+ _("No name supplied for element"));
- return -1;
-- for (i = 0; i < n; i++) {
-- if (!nodes[i]->children ||
-- !nodes[i]->children->content) {
-- virReportError(VIR_ERR_XML_ERROR, "%s",
-- _("No data supplied for element"));
-- return -1;
-- }
-- def->os.initargv[i] = g_strdup((const char *)nodes[i]->children->content);
- }
-- def->os.initargv[n] = NULL;
-- VIR_FREE(nodes);
-
-- if ((n = virXPathNodeSet("./os/initenv", ctxt, &nodes)) < 0)
-+ if (!nodes[i]->children ||
-+ !nodes[i]->children->content) {
-+ virReportError(VIR_ERR_XML_ERROR,
-+ _("No value supplied for element"),
-+ name);
- return -1;
-+ }
-
-- if (VIR_ALLOC_N(def->os.initenv, n+1) < 0)
-+ if (VIR_ALLOC(def->os.initenv[i]) < 0)
- return -1;
-- for (i = 0; i < n; i++) {
-- if (!(name = virXMLPropString(nodes[i], "name"))) {
-- virReportError(VIR_ERR_XML_ERROR, "%s",
-- _("No name supplied for element"));
-- return -1;
-- }
-
-- if (!nodes[i]->children ||
-- !nodes[i]->children->content) {
-- virReportError(VIR_ERR_XML_ERROR,
-- _("No value supplied for element"),
-- name);
-- return -1;
-- }
-+ def->os.initenv[i]->name = name;
-+ def->os.initenv[i]->value = g_strdup((const char *)nodes[i]->children->content);
-+ }
-+ def->os.initenv[n] = NULL;
-
-- if (VIR_ALLOC(def->os.initenv[i]) < 0)
-- return -1;
-+ return 0;
-+}
-
-- def->os.initenv[i]->name = name;
-- def->os.initenv[i]->value = g_strdup((const char *)nodes[i]->children->content);
-- }
-- def->os.initenv[n] = NULL;
-- VIR_FREE(nodes);
-+
-+static int
-+virDomainDefParseBootOptions(virDomainDefPtr def,
-+ xmlXPathContextPtr ctxt)
-+{
-+ int n;
-+ g_autofree xmlNodePtr *nodes = NULL;
-+ g_autofree char *tmp = NULL;
-+
-+ /*
-+ * Booting options for different OS types....
-+ *
-+ * - A bootloader (and optional kernel+initrd) (xen)
-+ * - A kernel + initrd (xen)
-+ * - A boot device (and optional kernel+initrd) (hvm)
-+ * - An init script (exe)
-+ */
-+
-+ if (def->os.type == VIR_DOMAIN_OSTYPE_EXE) {
-+ if (virDomainDefParseBootInitOptions(def, ctxt) < 0)
-+ return -1;
- }
-
- if (def->os.type == VIR_DOMAIN_OSTYPE_XEN ||
---
-2.31.1
-
diff --git a/SOURCES/libvirt-conf-introduce-virDomainDefParseBootKernelOptions.patch b/SOURCES/libvirt-conf-introduce-virDomainDefParseBootKernelOptions.patch
deleted file mode 100644
index a418a03..0000000
--- a/SOURCES/libvirt-conf-introduce-virDomainDefParseBootKernelOptions.patch
+++ /dev/null
@@ -1,60 +0,0 @@
-From a62075772680bd30ced25d7177048ab26db8ea09 Mon Sep 17 00:00:00 2001
-Message-Id:
-From: Pavel Hrdina
-Date: Fri, 21 May 2021 14:16:06 +0200
-Subject: [PATCH] conf: introduce virDomainDefParseBootKernelOptions
-
-Extract the code to it's own function.
-
-Signed-off-by: Pavel Hrdina
-Reviewed-by: Michal Privoznik
-(cherry picked from commit bf9b3f8e573092cc98ea647f25cf116e22bbfe3c)
-
-Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1929357
-
-Signed-off-by: Pavel Hrdina
-Message-Id: <936428a5fa6d4104361ac8080639a55111c14965.1621599207.git.phrdina@redhat.com>
-Reviewed-by: Michal Privoznik
----
- src/conf/domain_conf.c | 18 +++++++++++++-----
- 1 file changed, 13 insertions(+), 5 deletions(-)
-
-diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
-index 9eb418c7c0..432ad938f9 100644
---- a/src/conf/domain_conf.c
-+++ b/src/conf/domain_conf.c
-@@ -19365,6 +19365,18 @@ virDomainDefParseBootInitOptions(virDomainDefPtr def,
- }
-
-
-+static void
-+virDomainDefParseBootKernelOptions(virDomainDefPtr def,
-+ xmlXPathContextPtr ctxt)
-+{
-+ def->os.kernel = virXPathString("string(./os/kernel[1])", ctxt);
-+ def->os.initrd = virXPathString("string(./os/initrd[1])", ctxt);
-+ def->os.cmdline = virXPathString("string(./os/cmdline[1])", ctxt);
-+ def->os.dtb = virXPathString("string(./os/dtb[1])", ctxt);
-+ def->os.root = virXPathString("string(./os/root[1])", ctxt);
-+}
-+
-+
- static int
- virDomainDefParseBootOptions(virDomainDefPtr def,
- xmlXPathContextPtr ctxt)
-@@ -19394,11 +19406,7 @@ virDomainDefParseBootOptions(virDomainDefPtr def,
- g_autofree char *firmware = NULL;
- xmlNodePtr loader_node;
-
-- def->os.kernel = virXPathString("string(./os/kernel[1])", ctxt);
-- def->os.initrd = virXPathString("string(./os/initrd[1])", ctxt);
-- def->os.cmdline = virXPathString("string(./os/cmdline[1])", ctxt);
-- def->os.dtb = virXPathString("string(./os/dtb[1])", ctxt);
-- def->os.root = virXPathString("string(./os/root[1])", ctxt);
-+ virDomainDefParseBootKernelOptions(def, ctxt);
-
- if (def->os.type == VIR_DOMAIN_OSTYPE_HVM &&
- (firmware = virXPathString("string(./os/@firmware)", ctxt))) {
---
-2.31.1
-
diff --git a/SOURCES/libvirt-conf-introduce-virDomainDefParseBootLoaderOptions.patch b/SOURCES/libvirt-conf-introduce-virDomainDefParseBootLoaderOptions.patch
deleted file mode 100644
index 599fbfc..0000000
--- a/SOURCES/libvirt-conf-introduce-virDomainDefParseBootLoaderOptions.patch
+++ /dev/null
@@ -1,97 +0,0 @@
-From 6891ef941e693d86ebbab9e529e908dacf4a7dc6 Mon Sep 17 00:00:00 2001
-Message-Id: <6891ef941e693d86ebbab9e529e908dacf4a7dc6@dist-git>
-From: Pavel Hrdina
-Date: Fri, 21 May 2021 14:16:08 +0200
-Subject: [PATCH] conf: introduce virDomainDefParseBootLoaderOptions
-
-Extract the code to it's own function.
-
-Signed-off-by: Pavel Hrdina
-Reviewed-by: Michal Privoznik
-(cherry picked from commit b8dd70db4ee2f3a5edcbbeb8515830db9652cb59)
-
-Conflicts:
- src/conf/domain_conf.c
- - using VIR_ALLOC in downstream instead of g_new0
-
-Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1929357
-
-Signed-off-by: Pavel Hrdina
-Message-Id:
-Reviewed-by: Michal Privoznik
----
- src/conf/domain_conf.c | 44 +++++++++++++++++++++++++++---------------
- 1 file changed, 28 insertions(+), 16 deletions(-)
-
-diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
-index bb484a57c6..493700ed6b 100644
---- a/src/conf/domain_conf.c
-+++ b/src/conf/domain_conf.c
-@@ -19402,6 +19402,32 @@ virDomainDefParseBootFirmwareOptions(virDomainDefPtr def,
- }
-
-
-+static int
-+virDomainDefParseBootLoaderOptions(virDomainDefPtr def,
-+ xmlXPathContextPtr ctxt)
-+{
-+ xmlNodePtr loader_node = virXPathNode("./os/loader[1]", ctxt);
-+ const bool fwAutoSelect = def->os.firmware != VIR_DOMAIN_OS_DEF_FIRMWARE_NONE;
-+
-+ if (!loader_node)
-+ return 0;
-+
-+ if (VIR_ALLOC(def->os.loader) < 0)
-+ return -1;
-+
-+ if (virDomainLoaderDefParseXML(loader_node,
-+ def->os.loader,
-+ fwAutoSelect) < 0)
-+ return -1;
-+
-+ def->os.loader->nvram = virXPathString("string(./os/nvram[1])", ctxt);
-+ if (!fwAutoSelect)
-+ def->os.loader->templt = virXPathString("string(./os/nvram[1]/@template)", ctxt);
-+
-+ return 0;
-+}
-+
-+
- static int
- virDomainDefParseBootOptions(virDomainDefPtr def,
- xmlXPathContextPtr ctxt)
-@@ -19428,7 +19454,6 @@ virDomainDefParseBootOptions(virDomainDefPtr def,
- def->os.type == VIR_DOMAIN_OSTYPE_XENPVH ||
- def->os.type == VIR_DOMAIN_OSTYPE_HVM ||
- def->os.type == VIR_DOMAIN_OSTYPE_UML) {
-- xmlNodePtr loader_node;
-
- virDomainDefParseBootKernelOptions(def, ctxt);
-
-@@ -19437,21 +19462,8 @@ virDomainDefParseBootOptions(virDomainDefPtr def,
- return -1;
- }
-
-- if ((loader_node = virXPathNode("./os/loader[1]", ctxt))) {
-- const bool fwAutoSelect = def->os.firmware != VIR_DOMAIN_OS_DEF_FIRMWARE_NONE;
--
-- if (VIR_ALLOC(def->os.loader) < 0)
-- return -1;
--
-- if (virDomainLoaderDefParseXML(loader_node,
-- def->os.loader,
-- fwAutoSelect) < 0)
-- return -1;
--
-- def->os.loader->nvram = virXPathString("string(./os/nvram[1])", ctxt);
-- if (!fwAutoSelect)
-- def->os.loader->templt = virXPathString("string(./os/nvram[1]/@template)", ctxt);
-- }
-+ if (virDomainDefParseBootLoaderOptions(def, ctxt) < 0)
-+ return -1;
- }
-
- if (def->os.type == VIR_DOMAIN_OSTYPE_HVM) {
---
-2.31.1
-
diff --git a/SOURCES/libvirt-conf-new-attribute-hotplug-for-pci-controllers.patch b/SOURCES/libvirt-conf-new-attribute-hotplug-for-pci-controllers.patch
deleted file mode 100644
index 7d6bd50..0000000
--- a/SOURCES/libvirt-conf-new-attribute-hotplug-for-pci-controllers.patch
+++ /dev/null
@@ -1,290 +0,0 @@
-From 12892e0376be4dc07dc317b807f2ec86c27a94b2 Mon Sep 17 00:00:00 2001
-Message-Id: <12892e0376be4dc07dc317b807f2ec86c27a94b2@dist-git>
-From: Laine Stump
-Date: Sun, 26 Apr 2020 13:04:07 -0400
-Subject: [PATCH] conf: new attribute "hotplug" for pci controllers
-
-a element can now have a "hotplug"
-attribute in the subelement. This is intended to control
-whether or not the slot(s) of the controller support
-hotplugging/unplugging a device:
-
-
-
-
-
-The default value of hotplug is "on".
-
-Since support for configuring such an option is hypervisor-dependent
-(and will vary among different types of PCI controllers even on a
-single hypervisor), no validation is done in this patch - that
-validation will be done in the patch that wires support for the
-setting into the hypervisor.
-
-Signed-off-by: Laine Stump
-Reviewed-by: Michal Privoznik
-(cherry picked from commit 78f4d5e6f188a9f0f8d6da6b1fe78b9f4172d9ad)
-
-https://bugzilla.redhat.com/1802592
-Signed-off-by: Laine Stump
-
-Conflicts/Changes from upstread:
-
- tests/qemuxml2xmloutdata/pcie-root-port-nohotplug.x86_64-latest.xml:
-
- had to be modified to remove reference to the qemu64 CPU type.
-
-Signed-off-by: Laine Stump
-Message-Id: <20200426170415.18328-5-laine@redhat.com>
-Reviewed-by: Michal Privoznik
----
- docs/formatdomain.html.in | 11 +++
- docs/schemas/domaincommon.rng | 5 ++
- src/conf/domain_conf.c | 20 +++++-
- src/conf/domain_conf.h | 1 +
- .../pcie-root-port-nohotplug.xml | 35 ++++++++++
- ...pcie-root-port-nohotplug.x86_64-latest.xml | 67 +++++++++++++++++++
- tests/qemuxml2xmltest.c | 2 +-
- 7 files changed, 139 insertions(+), 2 deletions(-)
- create mode 100644 tests/qemuxml2argvdata/pcie-root-port-nohotplug.xml
- create mode 100644 tests/qemuxml2xmloutdata/pcie-root-port-nohotplug.x86_64-latest.xml
-
-diff --git a/docs/formatdomain.html.in b/docs/formatdomain.html.in
-index 9c588185df..76799f5ffc 100644
---- a/docs/formatdomain.html.in
-+++ b/docs/formatdomain.html.in
-@@ -4651,6 +4651,17 @@
- which is visible to the virtual machine. If set, port must be
- between 0 and 255.
-
-+ hotplug
-+
-+ pcie-root-port and pcie-switch-downstream-port controllers can
-+ also have a hotplug
attribute in
-+ the <target>
subelement, which is used to
-+ disable hotplug/unplug of devices on a particular
-+ controller. The default setting of hotplug
-+ is on
; it should be set to off
to
-+ disable hotplug/unplug of devices on a particular controller.
-+ Since 6.3.0
-+
- busNr
-
- pci-expander-bus and pcie-expander-bus controllers can have an
-diff --git a/docs/schemas/domaincommon.rng b/docs/schemas/domaincommon.rng
-index dd8f27243a..9fda5f17e0 100644
---- a/docs/schemas/domaincommon.rng
-+++ b/docs/schemas/domaincommon.rng
-@@ -2475,6 +2475,11 @@
-
-
-
-+
-+
-+
-+
-+
-
-
-
-diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
-index 28160a2967..ed9ca0e9d8 100644
---- a/src/conf/domain_conf.c
-+++ b/src/conf/domain_conf.c
-@@ -10933,6 +10933,7 @@ virDomainControllerDefParseXML(virDomainXMLOptionPtr xmlopt,
- g_autofree char *port = NULL;
- g_autofree char *busNr = NULL;
- g_autofree char *targetIndex = NULL;
-+ g_autofree char *hotplug = NULL;
- g_autofree char *ioeventfd = NULL;
- g_autofree char *portsStr = NULL;
- g_autofree char *iothread = NULL;
-@@ -11004,6 +11005,7 @@ virDomainControllerDefParseXML(virDomainXMLOptionPtr xmlopt,
- chassis = virXMLPropString(cur, "chassis");
- port = virXMLPropString(cur, "port");
- busNr = virXMLPropString(cur, "busNr");
-+ hotplug = virXMLPropString(cur, "hotplug");
- targetIndex = virXMLPropString(cur, "index");
- processedTarget = true;
- }
-@@ -11240,6 +11242,17 @@ virDomainControllerDefParseXML(virDomainXMLOptionPtr xmlopt,
- }
- def->opts.pciopts.numaNode = numaNode;
- }
-+ if (hotplug) {
-+ int val = virTristateSwitchTypeFromString(hotplug);
-+
-+ if (val <= 0) {
-+ virReportError(VIR_ERR_XML_ERROR,
-+ _("PCI controller unrecognized hotplug setting '%s'"),
-+ hotplug);
-+ goto error;
-+ }
-+ def->opts.pciopts.hotplug = val;
-+ }
- break;
- case VIR_DOMAIN_CONTROLLER_TYPE_XENBUS: {
- g_autofree char *gntframes = virXMLPropString(node, "maxGrantFrames");
-@@ -25112,7 +25125,8 @@ virDomainControllerDefFormat(virBufferPtr buf,
- def->opts.pciopts.port != -1 ||
- def->opts.pciopts.busNr != -1 ||
- def->opts.pciopts.targetIndex != -1 ||
-- def->opts.pciopts.numaNode != -1) {
-+ def->opts.pciopts.numaNode != -1 ||
-+ def->opts.pciopts.hotplug != VIR_TRISTATE_SWITCH_ABSENT) {
- virBufferAddLit(&childBuf, "opts.pciopts.chassisNr != -1)
- virBufferAsprintf(&childBuf, " chassisNr='%d'",
-@@ -25129,6 +25143,10 @@ virDomainControllerDefFormat(virBufferPtr buf,
- if (def->opts.pciopts.targetIndex != -1)
- virBufferAsprintf(&childBuf, " index='%d'",
- def->opts.pciopts.targetIndex);
-+ if (def->opts.pciopts.hotplug != VIR_TRISTATE_SWITCH_ABSENT) {
-+ virBufferAsprintf(&childBuf, " hotplug='%s'",
-+ virTristateSwitchTypeToString(def->opts.pciopts.hotplug));
-+ }
- if (def->opts.pciopts.numaNode == -1) {
- virBufferAddLit(&childBuf, "/>\n");
- } else {
-diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h
-index 2a382ede72..118077edaa 100644
---- a/src/conf/domain_conf.h
-+++ b/src/conf/domain_conf.h
-@@ -719,6 +719,7 @@ struct _virDomainPCIControllerOpts {
- * item in memory target config) -1 == unspecified
- */
- int numaNode;
-+ virTristateSwitch hotplug; /* 'off' to prevent hotplug/unplug, default 'on' */
- };
-
- struct _virDomainUSBControllerOpts {
-diff --git a/tests/qemuxml2argvdata/pcie-root-port-nohotplug.xml b/tests/qemuxml2argvdata/pcie-root-port-nohotplug.xml
-new file mode 100644
-index 0000000000..8a01494470
---- /dev/null
-+++ b/tests/qemuxml2argvdata/pcie-root-port-nohotplug.xml
-@@ -0,0 +1,35 @@
-+
-+ guest
-+ 11dbdcdd-4c3b-482b-8903-9bdb8c0a2774
-+ 2097152
-+ 2097152
-+ 2
-+
-+ hvm
-+
-+
-+ /usr/bin/qemu-system-x86_64
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-diff --git a/tests/qemuxml2xmloutdata/pcie-root-port-nohotplug.x86_64-latest.xml b/tests/qemuxml2xmloutdata/pcie-root-port-nohotplug.x86_64-latest.xml
-new file mode 100644
-index 0000000000..f7dbaccae9
---- /dev/null
-+++ b/tests/qemuxml2xmloutdata/pcie-root-port-nohotplug.x86_64-latest.xml
-@@ -0,0 +1,67 @@
-+
-+ guest
-+ 11dbdcdd-4c3b-482b-8903-9bdb8c0a2774
-+ 2097152
-+ 2097152
-+ 2
-+
-+ hvm
-+
-+
-+
-+ destroy
-+ restart
-+ destroy
-+
-+ /usr/bin/qemu-system-x86_64
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-diff --git a/tests/qemuxml2xmltest.c b/tests/qemuxml2xmltest.c
-index 15110dd104..c8218e423e 100644
---- a/tests/qemuxml2xmltest.c
-+++ b/tests/qemuxml2xmltest.c
-@@ -953,7 +953,7 @@ mymain(void)
- QEMU_CAPS_DEVICE_IOH3420);
- DO_TEST("pcie-root-port-model-ioh3420",
- QEMU_CAPS_DEVICE_IOH3420);
--
-+ DO_TEST_CAPS_LATEST("pcie-root-port-nohotplug");
- DO_TEST("pcie-switch-upstream-port",
- QEMU_CAPS_DEVICE_IOH3420,
- QEMU_CAPS_DEVICE_X3130_UPSTREAM,
---
-2.26.2
-
diff --git a/SOURCES/libvirt-conf-parse-format-teaming-subelement-of-interface.patch b/SOURCES/libvirt-conf-parse-format-teaming-subelement-of-interface.patch
deleted file mode 100644
index 10aec7f..0000000
--- a/SOURCES/libvirt-conf-parse-format-teaming-subelement-of-interface.patch
+++ /dev/null
@@ -1,468 +0,0 @@
-From 653245c4de76aba4e75131da8d40eed5b15ffd0d Mon Sep 17 00:00:00 2001
-Message-Id: <653245c4de76aba4e75131da8d40eed5b15ffd0d@dist-git>
-From: Laine Stump
-Date: Thu, 30 Jan 2020 14:12:40 -0500
-Subject: [PATCH] conf: parse/format subelement of
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-The subelement of devices is used to configure a
-simple teaming association between two interfaces in a domain. Example:
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-The interface with is assumed to always
-be present, while the interface with type='transient' may be be
-unplugged and later re-plugged; the persistent='blah' attribute (and
-in the one currently available implementation, also the matching MAC
-addresses) is what associates the two devices with each other. It is
-up to the hypervisor and the guest network drivers to determine what
-to do with this information.
-
-Signed-off-by: Laine Stump
-Reviewed-by: Daniel P. Berrangé
-(cherry picked from commit fb0509d06ac57434c2edbd81ee63deb32a0e598a)
-
-https://bugzilla.redhat.com/1693587
-Signed-off-by: Laine Stump
-Message-Id: <20200130191244.24174-3-laine@redhat.com>
-Reviewed-by: Jiri Denemark
----
- docs/schemas/domaincommon.rng | 19 ++++++
- src/conf/domain_conf.c | 47 +++++++++++++
- src/conf/domain_conf.h | 14 ++++
- .../net-virtio-teaming-network.xml | 37 +++++++++++
- tests/qemuxml2argvdata/net-virtio-teaming.xml | 50 ++++++++++++++
- .../net-virtio-teaming-network.xml | 51 ++++++++++++++
- .../qemuxml2xmloutdata/net-virtio-teaming.xml | 66 +++++++++++++++++++
- tests/qemuxml2xmltest.c | 6 ++
- 8 files changed, 290 insertions(+)
- create mode 100644 tests/qemuxml2argvdata/net-virtio-teaming-network.xml
- create mode 100644 tests/qemuxml2argvdata/net-virtio-teaming.xml
- create mode 100644 tests/qemuxml2xmloutdata/net-virtio-teaming-network.xml
- create mode 100644 tests/qemuxml2xmloutdata/net-virtio-teaming.xml
-
-diff --git a/docs/schemas/domaincommon.rng b/docs/schemas/domaincommon.rng
-index 76d94b156f..026e753567 100644
---- a/docs/schemas/domaincommon.rng
-+++ b/docs/schemas/domaincommon.rng
-@@ -3158,6 +3158,25 @@
-
-
-
-+
-+
-+
-+
-+
-+ persistent
-+
-+
-+
-+
-+ transient
-+
-+
-+
-+
-+
-+
-+
-+
-
-
-
-diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
-index 0478914c69..58f72b3b0f 100644
---- a/src/conf/domain_conf.c
-+++ b/src/conf/domain_conf.c
-@@ -554,6 +554,13 @@ VIR_ENUM_IMPL(virDomainNetVirtioTxMode,
- "timer",
- );
-
-+VIR_ENUM_IMPL(virDomainNetTeaming,
-+ VIR_DOMAIN_NET_TEAMING_TYPE_LAST,
-+ "none",
-+ "persistent",
-+ "transient",
-+);
-+
- VIR_ENUM_IMPL(virDomainNetInterfaceLinkState,
- VIR_DOMAIN_NET_INTERFACE_LINK_STATE_LAST,
- "default",
-@@ -6276,6 +6283,21 @@ virDomainNetDefValidate(const virDomainNetDef *net)
- virDomainNetTypeToString(net->type));
- return -1;
- }
-+
-+ if (net->teaming.type == VIR_DOMAIN_NET_TEAMING_TYPE_TRANSIENT) {
-+ if (!net->teaming.persistent) {
-+ virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
-+ _("teaming persistent attribute must be set if teaming type is 'transient'"));
-+ return -1;
-+ }
-+ } else {
-+ if (net->teaming.persistent) {
-+ virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
-+ _("teaming persistent attribute not allowed if teaming type is '%s'"),
-+ virDomainNetTeamingTypeToString(net->teaming.type));
-+ return -1;
-+ }
-+ }
- return 0;
- }
-
-@@ -11574,6 +11596,8 @@ virDomainNetDefParseXML(virDomainXMLOptionPtr xmlopt,
- g_autofree char *vhostuser_type = NULL;
- g_autofree char *trustGuestRxFilters = NULL;
- g_autofree char *vhost_path = NULL;
-+ g_autofree char *teamingType = NULL;
-+ g_autofree char *teamingPersistent = NULL;
- const char *prefix = xmlopt ? xmlopt->config.netPrefix : NULL;
-
- if (!(def = virDomainNetDefNew(xmlopt)))
-@@ -11775,6 +11799,10 @@ virDomainNetDefParseXML(virDomainXMLOptionPtr xmlopt,
- if (!vhost_path && (tmp = virXMLPropString(cur, "vhost")))
- vhost_path = virFileSanitizePath(tmp);
- VIR_FREE(tmp);
-+ } else if (virXMLNodeNameEqual(cur, "teaming") &&
-+ !teamingType && !teamingPersistent) {
-+ teamingType = virXMLPropString(cur, "type");
-+ teamingPersistent = virXMLPropString(cur, "persistent");
- }
- }
- cur = cur->next;
-@@ -12296,6 +12324,19 @@ virDomainNetDefParseXML(virDomainXMLOptionPtr xmlopt,
- }
- }
-
-+ if (teamingType) {
-+ int tmpTeaming;
-+
-+ if ((tmpTeaming = virDomainNetTeamingTypeFromString(teamingType)) <= 0) {
-+ virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
-+ _("unknown teaming type '%s'"),
-+ teamingType);
-+ goto error;
-+ }
-+ def->teaming.type = tmpTeaming;
-+ }
-+ def->teaming.persistent = g_steal_pointer(&teamingPersistent);
-+
- rv = virXPathULong("string(./tune/sndbuf)", ctxt, &def->tune.sndbuf);
- if (rv >= 0) {
- def->tune.sndbuf_specified = true;
-@@ -25741,6 +25782,12 @@ virDomainNetDefFormat(virBufferPtr buf,
- virBufferAddLit(buf, "\n");
- }
-
-+ if (def->teaming.type != VIR_DOMAIN_NET_TEAMING_TYPE_NONE) {
-+ virBufferAsprintf(buf, "teaming.type));
-+ virBufferEscapeString(buf, " persistent='%s'", def->teaming.persistent);
-+ virBufferAddLit(buf, "/>\n");
-+ }
- if (def->linkstate) {
- virBufferAsprintf(buf, " \n",
- virDomainNetInterfaceLinkStateTypeToString(def->linkstate));
-diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h
-index 6ae89fa498..ee8eb3ddc0 100644
---- a/src/conf/domain_conf.h
-+++ b/src/conf/domain_conf.h
-@@ -884,6 +884,15 @@ typedef enum {
- VIR_DOMAIN_NET_VIRTIO_TX_MODE_LAST
- } virDomainNetVirtioTxModeType;
-
-+/* the type of teaming device */
-+typedef enum {
-+ VIR_DOMAIN_NET_TEAMING_TYPE_NONE,
-+ VIR_DOMAIN_NET_TEAMING_TYPE_PERSISTENT,
-+ VIR_DOMAIN_NET_TEAMING_TYPE_TRANSIENT,
-+
-+ VIR_DOMAIN_NET_TEAMING_TYPE_LAST
-+} virDomainNetTeamingType;
-+
- /* link interface states */
- typedef enum {
- VIR_DOMAIN_NET_INTERFACE_LINK_STATE_DEFAULT = 0, /* Default link state (up) */
-@@ -958,6 +967,10 @@ struct _virDomainNetDef {
- char *tap;
- char *vhost;
- } backend;
-+ struct {
-+ virDomainNetTeamingType type;
-+ char *persistent; /* alias name of persistent device */
-+ } teaming;
- union {
- virDomainChrSourceDefPtr vhostuser;
- struct {
-@@ -3425,6 +3438,7 @@ VIR_ENUM_DECL(virDomainFSModel);
- VIR_ENUM_DECL(virDomainNet);
- VIR_ENUM_DECL(virDomainNetBackend);
- VIR_ENUM_DECL(virDomainNetVirtioTxMode);
-+VIR_ENUM_DECL(virDomainNetTeaming);
- VIR_ENUM_DECL(virDomainNetInterfaceLinkState);
- VIR_ENUM_DECL(virDomainNetModel);
- VIR_ENUM_DECL(virDomainChrDevice);
-diff --git a/tests/qemuxml2argvdata/net-virtio-teaming-network.xml b/tests/qemuxml2argvdata/net-virtio-teaming-network.xml
-new file mode 100644
-index 0000000000..edab52f3a1
---- /dev/null
-+++ b/tests/qemuxml2argvdata/net-virtio-teaming-network.xml
-@@ -0,0 +1,37 @@
-+
-+ QEMUGuest1
-+ c7a5fdbd-edaf-9455-926a-d65c16db1809
-+ 219100
-+ 219100
-+ 1
-+
-+ hvm
-+
-+
-+
-+ destroy
-+ restart
-+ destroy
-+
-+ /usr/bin/qemu-system-i386
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-diff --git a/tests/qemuxml2argvdata/net-virtio-teaming.xml b/tests/qemuxml2argvdata/net-virtio-teaming.xml
-new file mode 100644
-index 0000000000..830ce28524
---- /dev/null
-+++ b/tests/qemuxml2argvdata/net-virtio-teaming.xml
-@@ -0,0 +1,50 @@
-+
-+ QEMUGuest1
-+ c7a5fdbd-edaf-9455-926a-d65c16db1809
-+ 219100
-+ 219100
-+ 1
-+
-+ hvm
-+
-+
-+
-+ destroy
-+ restart
-+ destroy
-+
-+ /usr/bin/qemu-system-i386
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-diff --git a/tests/qemuxml2xmloutdata/net-virtio-teaming-network.xml b/tests/qemuxml2xmloutdata/net-virtio-teaming-network.xml
-new file mode 100644
-index 0000000000..e0dbeafe02
---- /dev/null
-+++ b/tests/qemuxml2xmloutdata/net-virtio-teaming-network.xml
-@@ -0,0 +1,51 @@
-+
-+ QEMUGuest1
-+ c7a5fdbd-edaf-9455-926a-d65c16db1809
-+ 219100
-+ 219100
-+ 1
-+
-+ hvm
-+
-+
-+
-+ destroy
-+ restart
-+ destroy
-+
-+ /usr/bin/qemu-system-i386
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-diff --git a/tests/qemuxml2xmloutdata/net-virtio-teaming.xml b/tests/qemuxml2xmloutdata/net-virtio-teaming.xml
-new file mode 100644
-index 0000000000..5a5695794a
---- /dev/null
-+++ b/tests/qemuxml2xmloutdata/net-virtio-teaming.xml
-@@ -0,0 +1,66 @@
-+
-+ QEMUGuest1
-+ c7a5fdbd-edaf-9455-926a-d65c16db1809
-+ 219100
-+ 219100
-+ 1
-+
-+ hvm
-+
-+
-+
-+ destroy
-+ restart
-+ destroy
-+
-+ /usr/bin/qemu-system-i386
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-diff --git a/tests/qemuxml2xmltest.c b/tests/qemuxml2xmltest.c
-index 3cefc64833..e54c540ef6 100644
---- a/tests/qemuxml2xmltest.c
-+++ b/tests/qemuxml2xmltest.c
-@@ -451,6 +451,12 @@ mymain(void)
- DO_TEST("net-eth-unmanaged-tap", NONE);
- DO_TEST("net-virtio-network-portgroup", NONE);
- DO_TEST("net-virtio-rxtxqueuesize", NONE);
-+ DO_TEST("net-virtio-teaming",
-+ QEMU_CAPS_VIRTIO_NET_FAILOVER,
-+ QEMU_CAPS_DEVICE_VFIO_PCI);
-+ DO_TEST("net-virtio-teaming-network",
-+ QEMU_CAPS_VIRTIO_NET_FAILOVER,
-+ QEMU_CAPS_DEVICE_VFIO_PCI);
- DO_TEST("net-hostdev", NONE);
- DO_TEST("net-hostdev-bootorder", NONE);
- DO_TEST("net-hostdev-vfio", QEMU_CAPS_DEVICE_VFIO_PCI);
---
-2.25.0
-
diff --git a/SOURCES/libvirt-conf-properly-clear-out-autogenerated-macvtap-names-when-formatting-parsing.patch b/SOURCES/libvirt-conf-properly-clear-out-autogenerated-macvtap-names-when-formatting-parsing.patch
deleted file mode 100644
index 0133af5..0000000
--- a/SOURCES/libvirt-conf-properly-clear-out-autogenerated-macvtap-names-when-formatting-parsing.patch
+++ /dev/null
@@ -1,117 +0,0 @@
-From b2e0155b59ae9f038bcf21da7c6b7fb0a99a7b67 Mon Sep 17 00:00:00 2001
-Message-Id:
-From: Laine Stump
-Date: Tue, 1 Dec 2020 22:01:00 -0500
-Subject: [PATCH] conf: properly clear out autogenerated macvtap names when
- formatting/parsing
-
-Back when macvtap support was added in commit 315baab9443 in Feb. 2010
-(libvirt-0.7.7), it was setup to autogenerate a name for the device if
-one wasn't supplied, in the pattern "macvtap%d" (or "macvlan%d"),
-similar to the way an unspecified standard tap device name will lead
-to an autogenerated "vnet%d".
-
-As a matter of fact, in commit ca1b7cc8e45 added in May 2010, the code
-was changed to *always* ignore a supplied device name for macvtap
-interfaces by deleting *any* name immediately during the
-parsing (this was intended to prevent one domain which had failed to
-completely start from deleting the macvtap device of another domain
-which had subsequently been provided the same device name (this will
-seem mildly ironic later). This was later fixed to only clear the
-device name when inactive XML was being parsed. HOWEVER - this was
-only done if the xml was - autogenerated
-names were not cleared for (which could
-also result in a macvtap device).
-
-Although the names of "vnetX" tap devices had always been
-automatically cleared when parsing (see commit d1304583d
-from July 2008 (!)), at the time macvtap support was added, both vnetX
-and macvtapX device names were always included when formatting the
-XML.
-
-Then in commit a8be259d0cc (July 2011, libvirt-0.9.4),
-formatting was changed to also clear out "vnetX" device names during
-XML formatting as well. However the same treatment wasn't given to
-"macvtapX".
-
-Now in 2020, there has been a report that a failed migration leads to
-the macvtap device of some other unrelated guest on the destination
-host losing its network connectivity. It was determined that this was
-due to the domain XML in the migration containing a macvtap device
-name, e.g. "macvtap0", that was already in use by the other guest on
-the destination. Normally this wouldn't be a problem, because libvirt
-would see that the device was already in use, and then find a
-different unused name. But in this case, other external problems were
-causing the migration to fail prior to selecting a macvtap device and
-successfully opening it, and during error recovery, qemuProcessStop()
-was called, which went through all def->nets objects and (if they were
-macvtap) deleted the device specified in net->ifname; since libvirt
-hadn't gotten to the point of replacing the incoming "macvtap0" with
-the name of a device it actually created for this guest, that meant
-that "macvtap0" was deleted, *even though it was currently in use by a
-different guest*!
-
-Whew!
-
-So, it turns out that when formatting "migratable" XML, "vnetX"
-devices are omitted, just as when formatting "inactive" XML. By making
-the code in both interface parsing and formatting consistent for
-"vnetX", "macvtapX", and "macvlanX", we can thus make sure that the
-autogenerated (and unneeded / completely *not* wanted) macvtap device
-name will not be sent with the migration XML. This way when a
-migration fails, net->ifname will be NULL, and libvirt won't have any
-device to try and (erroneously) delete.
-
-Signed-off-by: Laine Stump
-Reviewed-by: Daniel Henrique Barboza
-(cherry picked from commit 282d135ddbb7203565cd5527b451469b14953994)
-
-https://bugzilla.redhat.com/1872610
-
-Signed-off-by: Laine Stump
-Message-Id: <20201202030100.458879-1-laine@redhat.com>
-Reviewed-by: Michal Privoznik
----
- src/conf/domain_conf.c | 12 ++++--------
- 1 file changed, 4 insertions(+), 8 deletions(-)
-
-diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
-index f41559f33e..cd5c15f297 100644
---- a/src/conf/domain_conf.c
-+++ b/src/conf/domain_conf.c
-@@ -12183,14 +12183,6 @@ virDomainNetDefParseXML(virDomainXMLOptionPtr xmlopt,
- }
-
- def->data.direct.linkdev = g_steal_pointer(&dev);
--
-- if (ifname &&
-- flags & VIR_DOMAIN_DEF_PARSE_INACTIVE &&
-- (STRPREFIX(ifname, VIR_NET_GENERATED_MACVTAP_PREFIX) ||
-- STRPREFIX(ifname, VIR_NET_GENERATED_MACVLAN_PREFIX))) {
-- VIR_FREE(ifname);
-- }
--
- break;
-
- case VIR_DOMAIN_NET_TYPE_HOSTDEV:
-@@ -12238,6 +12230,8 @@ virDomainNetDefParseXML(virDomainXMLOptionPtr xmlopt,
- if (def->managed_tap != VIR_TRISTATE_BOOL_NO && ifname &&
- (flags & VIR_DOMAIN_DEF_PARSE_INACTIVE) &&
- (STRPREFIX(ifname, VIR_NET_GENERATED_TAP_PREFIX) ||
-+ STRPREFIX(ifname, VIR_NET_GENERATED_MACVTAP_PREFIX) ||
-+ STRPREFIX(ifname, VIR_NET_GENERATED_MACVLAN_PREFIX) ||
- (prefix && STRPREFIX(ifname, prefix)))) {
- /* An auto-generated target name, blank it out */
- VIR_FREE(ifname);
-@@ -25996,6 +25990,8 @@ virDomainNetDefFormat(virBufferPtr buf,
- (def->managed_tap == VIR_TRISTATE_BOOL_NO ||
- !((flags & VIR_DOMAIN_DEF_FORMAT_INACTIVE) &&
- (STRPREFIX(def->ifname, VIR_NET_GENERATED_TAP_PREFIX) ||
-+ STRPREFIX(def->ifname, VIR_NET_GENERATED_MACVTAP_PREFIX) ||
-+ STRPREFIX(def->ifname, VIR_NET_GENERATED_MACVLAN_PREFIX) ||
- (prefix && STRPREFIX(def->ifname, prefix)))))) {
- /* Skip auto-generated target names for inactive config. */
- virBufferEscapeString(&attrBuf, " dev='%s'", def->ifname);
---
-2.29.2
-
diff --git a/SOURCES/libvirt-conf-qemu-add-virtiofs-fsdriver-type.patch b/SOURCES/libvirt-conf-qemu-add-virtiofs-fsdriver-type.patch
deleted file mode 100644
index edad185..0000000
--- a/SOURCES/libvirt-conf-qemu-add-virtiofs-fsdriver-type.patch
+++ /dev/null
@@ -1,327 +0,0 @@
-From 2fce649fb569ab21c224f387456c996428f8a251 Mon Sep 17 00:00:00 2001
-Message-Id: <2fce649fb569ab21c224f387456c996428f8a251@dist-git>
-From: =?UTF-8?q?J=C3=A1n=20Tomko?=
-Date: Wed, 4 Mar 2020 12:42:41 +0100
-Subject: [PATCH] conf: qemu: add virtiofs fsdriver type
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Introduce a new 'virtiofs' driver type for filesystem.
-
-
-
-
-
-
-
-
-Signed-off-by: Ján Tomko
-Reviewed-by: Daniel P. Berrangé
-Reviewed-by: Peter Krempa
-Tested-by: Andrea Bolognani
-(cherry picked from commit ecc6ad6b90ad674a903c95d2a637f8b1b5833be2)
-Signed-off-by: Ján Tomko
-https://bugzilla.redhat.com/show_bug.cgi?id=1694166
-Message-Id:
-Reviewed-by: Michal Privoznik
----
- docs/formatdomain.html.in | 12 ++-
- docs/schemas/domaincommon.rng | 6 ++
- src/conf/domain_conf.c | 1 +
- src/conf/domain_conf.h | 1 +
- src/qemu/qemu_command.c | 4 +
- src/qemu/qemu_domain.c | 4 +
- src/qemu/qemu_domain_address.c | 4 +
- .../vhost-user-fs-fd-memory.xml | 39 ++++++++++
- .../vhost-user-fs-hugepages.xml | 74 +++++++++++++++++++
- .../vhost-user-fs-fd-memory.x86_64-latest.xml | 1 +
- .../vhost-user-fs-hugepages.x86_64-latest.xml | 1 +
- tests/qemuxml2xmltest.c | 3 +
- 12 files changed, 149 insertions(+), 1 deletion(-)
- create mode 100644 tests/qemuxml2argvdata/vhost-user-fs-fd-memory.xml
- create mode 100644 tests/qemuxml2argvdata/vhost-user-fs-hugepages.xml
- create mode 120000 tests/qemuxml2xmloutdata/vhost-user-fs-fd-memory.x86_64-latest.xml
- create mode 120000 tests/qemuxml2xmloutdata/vhost-user-fs-hugepages.x86_64-latest.xml
-
-diff --git a/docs/formatdomain.html.in b/docs/formatdomain.html.in
-index 50914a5207..337ab01316 100644
---- a/docs/formatdomain.html.in
-+++ b/docs/formatdomain.html.in
-@@ -3935,6 +3935,11 @@
- <target dir='/import/from/host'/>
- <readonly/>
- </filesystem>
-+ <filesystem type='mount' accessmode='passthrough'>
-+ <driver type='virtiofs'/>
-+ <source dir='/path'/>
-+ <target dir='mount_tag'/>
-+ </filesystem>
- ...
- </devices>
- ...
-@@ -3963,6 +3968,9 @@
- while the value immediate
means that a host writeback
- is immediately triggered for all pages touched during a guest file
- write operation (since 0.9.10) .
-+ Since 6.2.0 , type='virtiofs'
-+ is also supported. Using virtiofs requires setting up shared memory,
-+ see the guide: Virtio-FS
-
- template
-
-@@ -3998,7 +4006,9 @@
- The filesystem element has an optional attribute accessmode
- which specifies the security mode for accessing the source
- (since 0.8.5) . Currently this only works
-- with type='mount'
for the QEMU/KVM driver. The possible
-+ with type='mount'
for the QEMU/KVM driver.
-+ For driver type virtiofs
, only passthrough
is
-+ supported. For other driver types, the possible
- values are:
-
-
-diff --git a/docs/schemas/domaincommon.rng b/docs/schemas/domaincommon.rng
-index bfd8786ea8..5a9291b443 100644
---- a/docs/schemas/domaincommon.rng
-+++ b/docs/schemas/domaincommon.rng
-@@ -2645,6 +2645,12 @@
-
-
-
-+
-+
-+ virtiofs
-+
-+
-+
-
-
-
-diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
-index 990c5bcc1e..31d4828802 100644
---- a/src/conf/domain_conf.c
-+++ b/src/conf/domain_conf.c
-@@ -476,6 +476,7 @@ VIR_ENUM_IMPL(virDomainFSDriver,
- "loop",
- "nbd",
- "ploop",
-+ "virtiofs",
- );
-
- VIR_ENUM_IMPL(virDomainFSAccessMode,
-diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h
-index ef2c1b80f7..921cc42a57 100644
---- a/src/conf/domain_conf.h
-+++ b/src/conf/domain_conf.h
-@@ -771,6 +771,7 @@ typedef enum {
- VIR_DOMAIN_FS_DRIVER_TYPE_LOOP,
- VIR_DOMAIN_FS_DRIVER_TYPE_NBD,
- VIR_DOMAIN_FS_DRIVER_TYPE_PLOOP,
-+ VIR_DOMAIN_FS_DRIVER_TYPE_VIRTIOFS,
-
- VIR_DOMAIN_FS_DRIVER_TYPE_LAST
- } virDomainFSDriverType;
-diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c
-index 252809a8d7..7fdf58f067 100644
---- a/src/qemu/qemu_command.c
-+++ b/src/qemu/qemu_command.c
-@@ -2695,6 +2695,10 @@ qemuBuildFilesystemCommandLine(virCommandPtr cmd,
- return -1;
- break;
-
-+ case VIR_DOMAIN_FS_DRIVER_TYPE_VIRTIOFS:
-+ /* TODO: vhost-user-fs-pci */
-+ break;
-+
- case VIR_DOMAIN_FS_DRIVER_TYPE_LOOP:
- case VIR_DOMAIN_FS_DRIVER_TYPE_NBD:
- case VIR_DOMAIN_FS_DRIVER_TYPE_PLOOP:
-diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c
-index ed35260712..402b079b09 100644
---- a/src/qemu/qemu_domain.c
-+++ b/src/qemu/qemu_domain.c
-@@ -8361,6 +8361,10 @@ qemuDomainDeviceDefValidateFS(virDomainFSDefPtr fs,
- _("Filesystem driver type not supported"));
- return -1;
-
-+ case VIR_DOMAIN_FS_DRIVER_TYPE_VIRTIOFS:
-+ /* TODO: vhost-user-fs-pci */
-+ return 0;
-+
- case VIR_DOMAIN_FS_DRIVER_TYPE_LAST:
- default:
- virReportEnumRangeError(virDomainFSDriverType, fs->fsdriver);
-diff --git a/src/qemu/qemu_domain_address.c b/src/qemu/qemu_domain_address.c
-index 9e3bcc434d..3c6ac62ff5 100644
---- a/src/qemu/qemu_domain_address.c
-+++ b/src/qemu/qemu_domain_address.c
-@@ -690,6 +690,10 @@ qemuDomainDeviceCalculatePCIConnectFlags(virDomainDeviceDefPtr dev,
- }
- break;
-
-+ case VIR_DOMAIN_FS_DRIVER_TYPE_VIRTIOFS:
-+ /* vhost-user-fs-pci */
-+ return virtioFlags;
-+
- case VIR_DOMAIN_FS_DRIVER_TYPE_LOOP:
- case VIR_DOMAIN_FS_DRIVER_TYPE_NBD:
- case VIR_DOMAIN_FS_DRIVER_TYPE_PLOOP:
-diff --git a/tests/qemuxml2argvdata/vhost-user-fs-fd-memory.xml b/tests/qemuxml2argvdata/vhost-user-fs-fd-memory.xml
-new file mode 100644
-index 0000000000..a6b6279fb8
---- /dev/null
-+++ b/tests/qemuxml2argvdata/vhost-user-fs-fd-memory.xml
-@@ -0,0 +1,39 @@
-+
-+ guest
-+ 126f2720-6f8e-45ab-a886-ec9277079a67
-+ 14680064
-+ 14680064
-+
-+
-+
-+
-+ 2
-+
-+ hvm
-+
-+
-+
-+ qemu64
-+
-+ |
-+
-+
-+
-+ destroy
-+ restart
-+ destroy
-+
-+ /usr/bin/qemu-system-x86_64
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-diff --git a/tests/qemuxml2argvdata/vhost-user-fs-hugepages.xml b/tests/qemuxml2argvdata/vhost-user-fs-hugepages.xml
-new file mode 100644
-index 0000000000..70df7b890d
---- /dev/null
-+++ b/tests/qemuxml2argvdata/vhost-user-fs-hugepages.xml
-@@ -0,0 +1,74 @@
-+
-+ guest
-+ 1ccfd97d-5eb4-478a-bbe6-88d254c16db7
-+ 4194304
-+ 4194304
-+
-+
-+
-+
-+
-+
-+ 2
-+
-+ hvm
-+
-+
-+
-+
-+
-+
-+
-+ qemu64
-+
-+ |
-+
-+
-+
-+ destroy
-+ restart
-+ destroy
-+
-+ /usr/bin/qemu-system-x86_64
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-diff --git a/tests/qemuxml2xmloutdata/vhost-user-fs-fd-memory.x86_64-latest.xml b/tests/qemuxml2xmloutdata/vhost-user-fs-fd-memory.x86_64-latest.xml
-new file mode 120000
-index 0000000000..fbc552ef94
---- /dev/null
-+++ b/tests/qemuxml2xmloutdata/vhost-user-fs-fd-memory.x86_64-latest.xml
-@@ -0,0 +1 @@
-+../qemuxml2argvdata/vhost-user-fs-fd-memory.xml
-\ No newline at end of file
-diff --git a/tests/qemuxml2xmloutdata/vhost-user-fs-hugepages.x86_64-latest.xml b/tests/qemuxml2xmloutdata/vhost-user-fs-hugepages.x86_64-latest.xml
-new file mode 120000
-index 0000000000..0c0f05b254
---- /dev/null
-+++ b/tests/qemuxml2xmloutdata/vhost-user-fs-hugepages.x86_64-latest.xml
-@@ -0,0 +1 @@
-+../qemuxml2argvdata/vhost-user-fs-hugepages.xml
-\ No newline at end of file
-diff --git a/tests/qemuxml2xmltest.c b/tests/qemuxml2xmltest.c
-index d58259587b..f77f59fa3c 100644
---- a/tests/qemuxml2xmltest.c
-+++ b/tests/qemuxml2xmltest.c
-@@ -1428,6 +1428,9 @@ mymain(void)
- DO_TEST("vhost-vsock-ccw-auto", QEMU_CAPS_DEVICE_VHOST_VSOCK,
- QEMU_CAPS_CCW);
-
-+ DO_TEST_CAPS_LATEST("vhost-user-fs-fd-memory");
-+ DO_TEST_CAPS_LATEST("vhost-user-fs-hugepages");
-+
- DO_TEST("riscv64-virt",
- QEMU_CAPS_DEVICE_VIRTIO_MMIO);
- DO_TEST("riscv64-virt-pci",
---
-2.25.1
-
diff --git a/SOURCES/libvirt-conf-qemu-s-VIR_PCI_CONNECT_HOTPLUGGABLE-VIR_PCI_CONNECT_AUTOASSIGN-g.patch b/SOURCES/libvirt-conf-qemu-s-VIR_PCI_CONNECT_HOTPLUGGABLE-VIR_PCI_CONNECT_AUTOASSIGN-g.patch
deleted file mode 100644
index b6c0102..0000000
--- a/SOURCES/libvirt-conf-qemu-s-VIR_PCI_CONNECT_HOTPLUGGABLE-VIR_PCI_CONNECT_AUTOASSIGN-g.patch
+++ /dev/null
@@ -1,161 +0,0 @@
-From 4f2bf4edfb640c38281d63e54145433ce8a78d28 Mon Sep 17 00:00:00 2001
-Message-Id: <4f2bf4edfb640c38281d63e54145433ce8a78d28@dist-git>
-From: Laine Stump
-Date: Sun, 26 Apr 2020 13:04:11 -0400
-Subject: [PATCH] conf/qemu:
- s/VIR_PCI_CONNECT_HOTPLUGGABLE/VIR_PCI_CONNECT_AUTOASSIGN/g
-
-When the HOTPLUGGABLE flag was originally added, it was set for all
-the PCI controllers that accepted hotplugged devices, and requested
-for all devices that were auto-assigned to a controller. While we're
-still autoassigning to the same list of controllers, those controllers
-may or may not support hotplug, so let's use the flag that fits what
-we're actually doing.
-
-Signed-off-by: Laine Stump
-Reviewed-by: Michal Privoznik
-(cherry picked from commit 7c98f5e3652e19e4eb015d290c1eed2f1b58ee72)
-
-https://bugzilla.redhat.com/1802592
-Signed-off-by: Laine Stump
-Message-Id: <20200426170415.18328-9-laine@redhat.com>
-Reviewed-by: Michal Privoznik
----
- src/conf/domain_addr.c | 18 +++++++++---------
- src/qemu/qemu_domain_address.c | 14 +++++++-------
- 2 files changed, 16 insertions(+), 16 deletions(-)
-
-diff --git a/src/conf/domain_addr.c b/src/conf/domain_addr.c
-index e0be655772..53be6cd34b 100644
---- a/src/conf/domain_addr.c
-+++ b/src/conf/domain_addr.c
-@@ -362,8 +362,8 @@ virDomainPCIAddressFlagsCompatible(virPCIDeviceAddressPtr addr,
- * libvirt's assumptions about whether or not hotplug
- * capability will be required.
- */
-- if (devFlags & VIR_PCI_CONNECT_HOTPLUGGABLE)
-- busFlags |= VIR_PCI_CONNECT_HOTPLUGGABLE;
-+ if (devFlags & VIR_PCI_CONNECT_AUTOASSIGN)
-+ busFlags |= VIR_PCI_CONNECT_AUTOASSIGN;
- /* if the device is a pci-bridge, allow manually
- * assigning to any bus that would also accept a
- * standard PCI device.
-@@ -419,8 +419,8 @@ virDomainPCIAddressFlagsCompatible(virPCIDeviceAddressPtr addr,
- addrStr, addr->bus, connectStr);
- return false;
- }
-- if ((devFlags & VIR_PCI_CONNECT_HOTPLUGGABLE) &&
-- !(busFlags & VIR_PCI_CONNECT_HOTPLUGGABLE)) {
-+ if ((devFlags & VIR_PCI_CONNECT_AUTOASSIGN) &&
-+ !(busFlags & VIR_PCI_CONNECT_AUTOASSIGN)) {
- if (reportError) {
- virReportError(errType,
- _("The device at PCI address %s requires "
-@@ -509,7 +509,7 @@ virDomainPCIAddressBusSetModel(virDomainPCIAddressBusPtr bus,
- */
- switch (model) {
- case VIR_DOMAIN_CONTROLLER_MODEL_PCI_ROOT:
-- bus->flags = (VIR_PCI_CONNECT_HOTPLUGGABLE |
-+ bus->flags = (VIR_PCI_CONNECT_AUTOASSIGN |
- VIR_PCI_CONNECT_TYPE_PCI_DEVICE |
- VIR_PCI_CONNECT_TYPE_PCI_BRIDGE |
- VIR_PCI_CONNECT_TYPE_PCI_EXPANDER_BUS);
-@@ -517,14 +517,14 @@ virDomainPCIAddressBusSetModel(virDomainPCIAddressBusPtr bus,
- bus->maxSlot = VIR_PCI_ADDRESS_SLOT_LAST;
- break;
- case VIR_DOMAIN_CONTROLLER_MODEL_PCI_BRIDGE:
-- bus->flags = (VIR_PCI_CONNECT_HOTPLUGGABLE |
-+ bus->flags = (VIR_PCI_CONNECT_AUTOASSIGN |
- VIR_PCI_CONNECT_TYPE_PCI_DEVICE |
- VIR_PCI_CONNECT_TYPE_PCI_BRIDGE);
- bus->minSlot = 1;
- bus->maxSlot = VIR_PCI_ADDRESS_SLOT_LAST;
- break;
- case VIR_DOMAIN_CONTROLLER_MODEL_PCI_EXPANDER_BUS:
-- bus->flags = (VIR_PCI_CONNECT_HOTPLUGGABLE |
-+ bus->flags = (VIR_PCI_CONNECT_AUTOASSIGN |
- VIR_PCI_CONNECT_TYPE_PCI_DEVICE |
- VIR_PCI_CONNECT_TYPE_PCI_BRIDGE);
- bus->minSlot = 0;
-@@ -555,7 +555,7 @@ virDomainPCIAddressBusSetModel(virDomainPCIAddressBusPtr bus,
- case VIR_DOMAIN_CONTROLLER_MODEL_PCIE_TO_PCI_BRIDGE:
- /* Same as pci-bridge: 32 hotpluggable traditional PCI slots (0-31),
- * the first of which is not usable because of the SHPC */
-- bus->flags = (VIR_PCI_CONNECT_HOTPLUGGABLE |
-+ bus->flags = (VIR_PCI_CONNECT_AUTOASSIGN |
- VIR_PCI_CONNECT_TYPE_PCI_DEVICE |
- VIR_PCI_CONNECT_TYPE_PCI_BRIDGE);
- bus->minSlot = 1;
-@@ -566,7 +566,7 @@ virDomainPCIAddressBusSetModel(virDomainPCIAddressBusPtr bus,
- /* provides one slot which is pcie, can be used by endpoint
- * devices, pcie-switch-upstream-ports or pcie-to-pci-bridges,
- * and is hotpluggable */
-- bus->flags = (VIR_PCI_CONNECT_HOTPLUGGABLE |
-+ bus->flags = (VIR_PCI_CONNECT_AUTOASSIGN |
- VIR_PCI_CONNECT_TYPE_PCIE_DEVICE |
- VIR_PCI_CONNECT_TYPE_PCIE_SWITCH_UPSTREAM_PORT |
- VIR_PCI_CONNECT_TYPE_PCIE_TO_PCI_BRIDGE);
-diff --git a/src/qemu/qemu_domain_address.c b/src/qemu/qemu_domain_address.c
-index 3c6ac62ff5..e81585bc6c 100644
---- a/src/qemu/qemu_domain_address.c
-+++ b/src/qemu/qemu_domain_address.c
-@@ -571,7 +571,7 @@ qemuDomainDeviceCalculatePCIConnectFlags(virDomainDeviceDefPtr dev,
- virDomainPCIConnectFlags virtioFlags)
- {
- virDomainPCIConnectFlags pciFlags = (VIR_PCI_CONNECT_TYPE_PCI_DEVICE |
-- VIR_PCI_CONNECT_HOTPLUGGABLE);
-+ VIR_PCI_CONNECT_AUTOASSIGN);
-
- switch ((virDomainDeviceType)dev->type) {
- case VIR_DOMAIN_DEVICE_CONTROLLER: {
-@@ -1063,17 +1063,17 @@ qemuDomainFillDevicePCIConnectFlagsIterInit(virDomainDefPtr def,
-
- if (qemuDomainHasPCIeRoot(def)) {
- data->pcieFlags = (VIR_PCI_CONNECT_TYPE_PCIE_DEVICE |
-- VIR_PCI_CONNECT_HOTPLUGGABLE);
-+ VIR_PCI_CONNECT_AUTOASSIGN);
- } else {
- data->pcieFlags = (VIR_PCI_CONNECT_TYPE_PCI_DEVICE |
-- VIR_PCI_CONNECT_HOTPLUGGABLE);
-+ VIR_PCI_CONNECT_AUTOASSIGN);
- }
-
- if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_VIRTIO_PCI_DISABLE_LEGACY)) {
- data->virtioFlags = data->pcieFlags;
- } else {
- data->virtioFlags = (VIR_PCI_CONNECT_TYPE_PCI_DEVICE |
-- VIR_PCI_CONNECT_HOTPLUGGABLE);
-+ VIR_PCI_CONNECT_AUTOASSIGN);
- }
- }
-
-@@ -1729,7 +1729,7 @@ qemuDomainValidateDevicePCISlotsPIIX3(virDomainDefPtr def,
- virPCIDeviceAddress tmp_addr;
- bool qemuDeviceVideoUsable = virQEMUCapsGet(qemuCaps, QEMU_CAPS_DEVICE_VIDEO_PRIMARY);
- g_autofree char *addrStr = NULL;
-- virDomainPCIConnectFlags flags = (VIR_PCI_CONNECT_HOTPLUGGABLE
-+ virDomainPCIConnectFlags flags = (VIR_PCI_CONNECT_AUTOASSIGN
- | VIR_PCI_CONNECT_TYPE_PCI_DEVICE);
-
- /* Verify that first IDE and USB controllers (if any) is on the PIIX3, fn 1 */
-@@ -2666,7 +2666,7 @@ qemuDomainAssignPCIAddresses(virDomainDefPtr def,
- * domain.
- */
- virDomainDeviceInfo info = {
-- .pciConnectFlags = (VIR_PCI_CONNECT_HOTPLUGGABLE |
-+ .pciConnectFlags = (VIR_PCI_CONNECT_AUTOASSIGN |
- VIR_PCI_CONNECT_TYPE_PCI_DEVICE),
- .pciAddrExtFlags = VIR_PCI_ADDRESS_EXTENSION_NONE
- };
-@@ -2707,7 +2707,7 @@ qemuDomainAssignPCIAddresses(virDomainDefPtr def,
- addrs->nbuses > max_idx + 1 &&
- qemuDomainHasPCIeRoot(def)) {
- virDomainDeviceInfo info = {
-- .pciConnectFlags = (VIR_PCI_CONNECT_HOTPLUGGABLE |
-+ .pciConnectFlags = (VIR_PCI_CONNECT_AUTOASSIGN |
- VIR_PCI_CONNECT_TYPE_PCIE_DEVICE),
- .pciAddrExtFlags = VIR_PCI_ADDRESS_EXTENSION_NONE
- };
---
-2.26.2
-
diff --git a/SOURCES/libvirt-conf-remove-duplicated-firmware-type-attribute.patch b/SOURCES/libvirt-conf-remove-duplicated-firmware-type-attribute.patch
deleted file mode 100644
index 3bc500f..0000000
--- a/SOURCES/libvirt-conf-remove-duplicated-firmware-type-attribute.patch
+++ /dev/null
@@ -1,317 +0,0 @@
-From 4ca3f2f590fb860b01f1eb5fec8929ceba702dc6 Mon Sep 17 00:00:00 2001
-Message-Id: <4ca3f2f590fb860b01f1eb5fec8929ceba702dc6@dist-git>
-From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?=
-Date: Fri, 21 May 2021 14:16:14 +0200
-Subject: [PATCH] conf: remove duplicated firmware type attribute
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-The
-
-
-
-
-
-
-
-repeats the firmware attribute twice. This has no functional benefit, as
-evidenced by fact that we use a single struct field to store both
-attributes, while needlessly introducing an error scenario. The XML can
-just be simplified to:
-
-
-
-
-
-
-
-which also means that we don't need to emit the empty element
- for all existing configs too.
-
-Reviewed-by: Pavel Hrdina
-Signed-off-by: Daniel P. Berrangé
-(cherry picked from commit a9b1375d7d2f7d240dce09c5f8b62e568e386051)
-
-Conflicts:
- docs/formatdomain.rst
- - we still have formatdomain.html.in in downstream
-
-Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1929357
-
-Signed-off-by: Pavel Hrdina
-Message-Id: <299fd16fc3ce632bf25ca55cc4bb65a225437d61.1621599207.git.phrdina@redhat.com>
-Reviewed-by: Michal Privoznik
----
- docs/formatdomain.html.in | 15 ------
- docs/schemas/domaincommon.rng | 10 +---
- src/conf/domain_conf.c | 48 ++++++-------------
- .../os-firmware-efi-no-enrolled-keys.xml | 2 +-
- .../os-firmware-invalid-type.xml | 28 -----------
- tests/qemuxml2argvtest.c | 1 -
- ...aarch64-os-firmware-efi.aarch64-latest.xml | 1 -
- .../os-firmware-bios.x86_64-latest.xml | 1 -
- .../os-firmware-efi-secboot.x86_64-latest.xml | 1 -
- .../os-firmware-efi.x86_64-latest.xml | 1 -
- tests/vmx2xmldata/vmx2xml-firmware-efi.xml | 1 -
- 11 files changed, 18 insertions(+), 91 deletions(-)
- delete mode 100644 tests/qemuxml2argvdata/os-firmware-invalid-type.xml
-
-diff --git a/docs/formatdomain.html.in b/docs/formatdomain.html.in
-index 11f31618af..79e2e51c54 100644
---- a/docs/formatdomain.html.in
-+++ b/docs/formatdomain.html.in
-@@ -183,21 +183,6 @@
- firmware
-
- Since 7.2.0 QEMU/KVM only
--
-- When used together with firmware
attribute of
-- os
element the type
attribute must
-- have the same value.
--
--
-- List of mandatory attributes:
--
--
-- type
(accepted values are bios
-- and efi
) same as the firmware
-- attribute of os
element.
--
--
--
-
- When using firmware auto-selection there are different features
- enabled in the firmwares. The list of features can be used to
-diff --git a/docs/schemas/domaincommon.rng b/docs/schemas/domaincommon.rng
-index b7f6a6b494..ec8167e588 100644
---- a/docs/schemas/domaincommon.rng
-+++ b/docs/schemas/domaincommon.rng
-@@ -270,13 +270,7 @@
-
-
-
--
--
-- bios
-- efi
--
--
--
-+
-
-
-
-@@ -288,7 +282,7 @@
-
-
-
--
-+
-
-
-
-diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
-index 2ffa9c8a2a..6806064016 100644
---- a/src/conf/domain_conf.c
-+++ b/src/conf/domain_conf.c
-@@ -19389,31 +19389,21 @@ virDomainDefParseBootFirmwareOptions(virDomainDefPtr def,
- xmlXPathContextPtr ctxt)
- {
- g_autofree char *firmware = virXPathString("string(./os/@firmware)", ctxt);
-- g_autofree char *type = virXPathString("string(./os/firmware/@type)", ctxt);
- g_autofree xmlNodePtr *nodes = NULL;
- g_autofree int *features = NULL;
- int fw = 0;
- int n = 0;
- size_t i;
-
-- if (!firmware && !type)
-+ if (!firmware)
- return 0;
-
-- if (firmware && type && STRNEQ(firmware, type)) {
-- virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
-- _("firmware attribute and firmware type has to be the same"));
-- return -1;
-- }
--
-- if (!type)
-- type = g_steal_pointer(&firmware);
--
-- fw = virDomainOsDefFirmwareTypeFromString(type);
-+ fw = virDomainOsDefFirmwareTypeFromString(firmware);
-
- if (fw <= 0) {
- virReportError(VIR_ERR_XML_ERROR,
- _("unknown firmware value %s"),
-- type);
-+ firmware);
- return -1;
- }
-
-@@ -29039,30 +29029,22 @@ virDomainDefFormatInternalSetRootName(virDomainDefPtr def,
- virBufferAsprintf(buf, ">%s\n",
- virDomainOSTypeToString(def->os.type));
-
-- if (def->os.firmware) {
-- virBufferAsprintf(buf, "os.firmware));
--
-- if (def->os.firmwareFeatures) {
-- virBufferAddLit(buf, ">\n");
--
-- virBufferAdjustIndent(buf, 2);
-+ if (def->os.firmwareFeatures) {
-+ virBufferAddLit(buf, "\n");
-+ virBufferAdjustIndent(buf, 2);
-
-- for (i = 0; i < VIR_DOMAIN_OS_DEF_FIRMWARE_FEATURE_LAST; i++) {
-- if (def->os.firmwareFeatures[i] == VIR_TRISTATE_BOOL_ABSENT)
-- continue;
-+ for (i = 0; i < VIR_DOMAIN_OS_DEF_FIRMWARE_FEATURE_LAST; i++) {
-+ if (def->os.firmwareFeatures[i] == VIR_TRISTATE_BOOL_ABSENT)
-+ continue;
-
-- virBufferAsprintf(buf, " \n",
-- virTristateBoolTypeToString(def->os.firmwareFeatures[i]),
-- virDomainOsDefFirmwareFeatureTypeToString(i));
-- }
-+ virBufferAsprintf(buf, " \n",
-+ virTristateBoolTypeToString(def->os.firmwareFeatures[i]),
-+ virDomainOsDefFirmwareFeatureTypeToString(i));
-+ }
-
-- virBufferAdjustIndent(buf, -2);
-+ virBufferAdjustIndent(buf, -2);
-
-- virBufferAddLit(buf, " \n");
-- } else {
-- virBufferAddLit(buf, "/>\n");
-- }
-+ virBufferAddLit(buf, " \n");
- }
-
- virBufferEscapeString(buf, "%s \n",
-diff --git a/tests/qemuxml2argvdata/os-firmware-efi-no-enrolled-keys.xml b/tests/qemuxml2argvdata/os-firmware-efi-no-enrolled-keys.xml
-index 7f8f57a859..4999c4f125 100644
---- a/tests/qemuxml2argvdata/os-firmware-efi-no-enrolled-keys.xml
-+++ b/tests/qemuxml2argvdata/os-firmware-efi-no-enrolled-keys.xml
-@@ -6,7 +6,7 @@
- 1
-
- hvm
--
-+
-
-
-
-diff --git a/tests/qemuxml2argvdata/os-firmware-invalid-type.xml b/tests/qemuxml2argvdata/os-firmware-invalid-type.xml
-deleted file mode 100644
-index 41360df0f7..0000000000
---- a/tests/qemuxml2argvdata/os-firmware-invalid-type.xml
-+++ /dev/null
-@@ -1,28 +0,0 @@
--
-- fedora
-- 63840878-0deb-4095-97e6-fc444d9bc9fa
-- 8192
-- 8192
-- 1
--
-- hvm
--
--
-- /var/lib/libvirt/qemu/nvram/fedora_VARS.fd
--
--
--
--
--
--
--
--
--
-- destroy
-- restart
-- restart
--
-- /usr/bin/qemu-system-x86_64
--
--
--
-diff --git a/tests/qemuxml2argvtest.c b/tests/qemuxml2argvtest.c
-index 5e16d7fd31..be8054fa6a 100644
---- a/tests/qemuxml2argvtest.c
-+++ b/tests/qemuxml2argvtest.c
-@@ -3095,7 +3095,6 @@ mymain(void)
- DO_TEST_CAPS_LATEST("os-firmware-efi");
- DO_TEST_CAPS_LATEST("os-firmware-efi-secboot");
- DO_TEST_CAPS_LATEST("os-firmware-efi-no-enrolled-keys");
-- DO_TEST_CAPS_LATEST_PARSE_ERROR("os-firmware-invalid-type");
- DO_TEST_CAPS_ARCH_LATEST("aarch64-os-firmware-efi", "aarch64");
-
- DO_TEST_CAPS_LATEST("vhost-user-vga");
-diff --git a/tests/qemuxml2xmloutdata/aarch64-os-firmware-efi.aarch64-latest.xml b/tests/qemuxml2xmloutdata/aarch64-os-firmware-efi.aarch64-latest.xml
-index 3cac8fc5c6..1e51d55305 100644
---- a/tests/qemuxml2xmloutdata/aarch64-os-firmware-efi.aarch64-latest.xml
-+++ b/tests/qemuxml2xmloutdata/aarch64-os-firmware-efi.aarch64-latest.xml
-@@ -6,7 +6,6 @@
- 1
-
- hvm
--
- /aarch64.kernel
- /aarch64.initrd
- earlyprintk console=ttyAMA0,115200n8 rw root=/dev/vda rootwait
-diff --git a/tests/qemuxml2xmloutdata/os-firmware-bios.x86_64-latest.xml b/tests/qemuxml2xmloutdata/os-firmware-bios.x86_64-latest.xml
-index ef24f2fece..60d3498765 100644
---- a/tests/qemuxml2xmloutdata/os-firmware-bios.x86_64-latest.xml
-+++ b/tests/qemuxml2xmloutdata/os-firmware-bios.x86_64-latest.xml
-@@ -6,7 +6,6 @@
- 1
-
- hvm
--
-
- /var/lib/libvirt/qemu/nvram/fedora_VARS.fd
-
-diff --git a/tests/qemuxml2xmloutdata/os-firmware-efi-secboot.x86_64-latest.xml b/tests/qemuxml2xmloutdata/os-firmware-efi-secboot.x86_64-latest.xml
-index 3757191e8e..938da73711 100644
---- a/tests/qemuxml2xmloutdata/os-firmware-efi-secboot.x86_64-latest.xml
-+++ b/tests/qemuxml2xmloutdata/os-firmware-efi-secboot.x86_64-latest.xml
-@@ -6,7 +6,6 @@
- 1
-
- hvm
--
-
- /var/lib/libvirt/qemu/nvram/fedora_VARS.fd
-
-diff --git a/tests/qemuxml2xmloutdata/os-firmware-efi.x86_64-latest.xml b/tests/qemuxml2xmloutdata/os-firmware-efi.x86_64-latest.xml
-index f2e6b7f36d..97ce8a75c7 100644
---- a/tests/qemuxml2xmloutdata/os-firmware-efi.x86_64-latest.xml
-+++ b/tests/qemuxml2xmloutdata/os-firmware-efi.x86_64-latest.xml
-@@ -6,7 +6,6 @@
- 1
-
- hvm
--
-
- /var/lib/libvirt/qemu/nvram/fedora_VARS.fd
-
-diff --git a/tests/vmx2xmldata/vmx2xml-firmware-efi.xml b/tests/vmx2xmldata/vmx2xml-firmware-efi.xml
-index 375c47d281..e21158cebf 100644
---- a/tests/vmx2xmldata/vmx2xml-firmware-efi.xml
-+++ b/tests/vmx2xmldata/vmx2xml-firmware-efi.xml
-@@ -5,7 +5,6 @@
- 1
-
- hvm
--
-
-
- destroy
---
-2.31.1
-
diff --git a/SOURCES/libvirt-conf-remove-unused-virCapabilitiesSetHostCPU-method.patch b/SOURCES/libvirt-conf-remove-unused-virCapabilitiesSetHostCPU-method.patch
deleted file mode 100644
index c2f8d2f..0000000
--- a/SOURCES/libvirt-conf-remove-unused-virCapabilitiesSetHostCPU-method.patch
+++ /dev/null
@@ -1,88 +0,0 @@
-From 6ece5388a7fb7fc3c703cd1bc9e214ad411451d8 Mon Sep 17 00:00:00 2001
-Message-Id: <6ece5388a7fb7fc3c703cd1bc9e214ad411451d8@dist-git>
-From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?=
-Date: Mon, 3 Feb 2020 18:07:23 +0000
-Subject: [PATCH] conf: remove unused virCapabilitiesSetHostCPU method
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Reviewed-by: Daniel Henrique Barboza
-Reviewed-by: Jiri Denemark
-Signed-off-by: Daniel P. Berrangé
-(cherry picked from commit 2ce9474c2a6ba3df4977068dcee35d3fa5468749)
-
-BZ: https://bugzilla.redhat.com/show_bug.cgi?id=1785207
-BZ: https://bugzilla.redhat.com/show_bug.cgi?id=1785211
-Message-Id: <20200203180726.2203691-3-berrange@redhat.com>
-Reviewed-by: Jiri Denemark
----
- src/conf/capabilities.c | 21 ---------------------
- src/conf/capabilities.h | 6 ------
- src/libvirt_private.syms | 1 -
- 3 files changed, 28 deletions(-)
-
-diff --git a/src/conf/capabilities.c b/src/conf/capabilities.c
-index 9a39858280..bf1d9936ed 100644
---- a/src/conf/capabilities.c
-+++ b/src/conf/capabilities.c
-@@ -368,27 +368,6 @@ virCapabilitiesHostNUMAAddCell(virCapsHostNUMAPtr caps,
- g_ptr_array_add(caps->cells, cell);
- }
-
--
--/**
-- * virCapabilitiesSetHostCPU:
-- * @caps: capabilities to extend
-- * @cpu: CPU definition
-- *
-- * Sets host CPU specification
-- */
--int
--virCapabilitiesSetHostCPU(virCapsPtr caps,
-- virCPUDefPtr cpu)
--{
-- if (cpu == NULL)
-- return -1;
--
-- caps->host.cpu = cpu;
--
-- return 0;
--}
--
--
- /**
- * virCapabilitiesAllocMachines:
- * @machines: machine variants for emulator ('pc', or 'isapc', etc)
-diff --git a/src/conf/capabilities.h b/src/conf/capabilities.h
-index f604e7b95e..4a49e94aa5 100644
---- a/src/conf/capabilities.h
-+++ b/src/conf/capabilities.h
-@@ -258,12 +258,6 @@ virCapabilitiesHostNUMAAddCell(virCapsHostNUMAPtr caps,
- int npageinfo,
- virCapsHostNUMACellPageInfoPtr pageinfo);
-
--
--int
--virCapabilitiesSetHostCPU(virCapsPtr caps,
-- virCPUDefPtr cpu);
--
--
- virCapsGuestMachinePtr *
- virCapabilitiesAllocMachines(const char *const *names,
- int nnames);
-diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms
-index b97906b852..afa7d4fcae 100644
---- a/src/libvirt_private.syms
-+++ b/src/libvirt_private.syms
-@@ -77,7 +77,6 @@ virCapabilitiesHostSecModelAddBaseLabel;
- virCapabilitiesInitCaches;
- virCapabilitiesInitPages;
- virCapabilitiesNew;
--virCapabilitiesSetHostCPU;
- virCapabilitiesSetNetPrefix;
-
-
---
-2.25.0
-
diff --git a/SOURCES/libvirt-conf-rename-namespace-property-of-struct-_virStorageSourceNVMeDef.patch b/SOURCES/libvirt-conf-rename-namespace-property-of-struct-_virStorageSourceNVMeDef.patch
deleted file mode 100644
index dce9fb3..0000000
--- a/SOURCES/libvirt-conf-rename-namespace-property-of-struct-_virStorageSourceNVMeDef.patch
+++ /dev/null
@@ -1,144 +0,0 @@
-From 9b070e02e7b5bb95728a1fcdc8b7dfaaacc5f30a Mon Sep 17 00:00:00 2001
-Message-Id: <9b070e02e7b5bb95728a1fcdc8b7dfaaacc5f30a@dist-git>
-From: Peter Krempa
-Date: Tue, 24 Mar 2020 16:25:55 +0100
-Subject: [PATCH] conf: rename 'namespace' property of struct
- _virStorageSourceNVMeDef
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-While 'namespace' is not a reserved word in C, it is in C++. Our
-compilers are happy with it but syntax-hilighting in some editors
-hilights is as a keyword. Rename it to prevent confusion.
-
-Signed-off-by: Peter Krempa
-Reviewed-by: Michal Privoznik
-(cherry picked from commit 5793b8baa75747860f6ba97470969047e60c8579)
-
-https://bugzilla.redhat.com/show_bug.cgi?id=1804617
-Message-Id:
-Reviewed-by: Ján Tomko
----
- src/conf/domain_conf.c | 12 ++++++------
- src/qemu/qemu_block.c | 2 +-
- src/util/virhostdev.c | 2 +-
- src/util/virstoragefile.c | 4 ++--
- src/util/virstoragefile.h | 2 +-
- 5 files changed, 11 insertions(+), 11 deletions(-)
-
-diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
-index 8aec85e83c..1e8518139c 100644
---- a/src/conf/domain_conf.c
-+++ b/src/conf/domain_conf.c
-@@ -6054,7 +6054,7 @@ virDomainDiskDefValidate(const virDomainDef *def,
-
- if (disk->src->type == VIR_STORAGE_TYPE_NVME) {
- /* NVMe namespaces start from 1 */
-- if (disk->src->nvme->namespace == 0) {
-+ if (disk->src->nvme->namespc == 0) {
- virReportError(VIR_ERR_XML_ERROR, "%s",
- _("NVMe namespace can't be zero"));
- return -1;
-@@ -9433,7 +9433,7 @@ virDomainDiskSourceNVMeParse(xmlNodePtr node,
- {
- g_autoptr(virStorageSourceNVMeDef) nvme = NULL;
- g_autofree char *type = NULL;
-- g_autofree char *namespace = NULL;
-+ g_autofree char *namespc = NULL;
- g_autofree char *managed = NULL;
- xmlNodePtr address;
-
-@@ -9452,16 +9452,16 @@ virDomainDiskSourceNVMeParse(xmlNodePtr node,
- return -1;
- }
-
-- if (!(namespace = virXMLPropString(node, "namespace"))) {
-+ if (!(namespc = virXMLPropString(node, "namespace"))) {
- virReportError(VIR_ERR_XML_ERROR, "%s",
- _("missing 'namespace' attribute to disk source"));
- return -1;
- }
-
-- if (virStrToLong_ull(namespace, NULL, 10, &nvme->namespace) < 0) {
-+ if (virStrToLong_ull(namespc, NULL, 10, &nvme->namespc) < 0) {
- virReportError(VIR_ERR_XML_ERROR,
- _("malformed namespace '%s'"),
-- namespace);
-+ namespc);
- return -1;
- }
-
-@@ -24444,7 +24444,7 @@ virDomainDiskSourceNVMeFormat(virBufferPtr attrBuf,
- virBufferAddLit(attrBuf, " type='pci'");
- virBufferAsprintf(attrBuf, " managed='%s'",
- virTristateBoolTypeToString(nvme->managed));
-- virBufferAsprintf(attrBuf, " namespace='%llu'", nvme->namespace);
-+ virBufferAsprintf(attrBuf, " namespace='%llu'", nvme->namespc);
- virPCIDeviceAddressFormat(childBuf, nvme->pciAddr, false);
- }
-
-diff --git a/src/qemu/qemu_block.c b/src/qemu/qemu_block.c
-index 73cb5ba4bc..5697d4fc73 100644
---- a/src/qemu/qemu_block.c
-+++ b/src/qemu/qemu_block.c
-@@ -1008,7 +1008,7 @@ qemuBlockStorageSourceGetNVMeProps(virStorageSourcePtr src)
- ignore_value(virJSONValueObjectCreate(&ret,
- "s:driver", "nvme",
- "s:device", pciAddr,
-- "U:namespace", nvme->namespace,
-+ "U:namespace", nvme->namespc,
- NULL));
- return ret;
- }
-diff --git a/src/util/virhostdev.c b/src/util/virhostdev.c
-index 9b4ea30216..9596482146 100644
---- a/src/util/virhostdev.c
-+++ b/src/util/virhostdev.c
-@@ -2256,7 +2256,7 @@ virHostdevGetNVMeDeviceList(virNVMeDeviceListPtr nvmeDevices,
- continue;
-
- if (!(dev = virNVMeDeviceNew(&srcNVMe->pciAddr,
-- srcNVMe->namespace,
-+ srcNVMe->namespc,
- srcNVMe->managed)))
- return -1;
-
-diff --git a/src/util/virstoragefile.c b/src/util/virstoragefile.c
-index fa37840532..2e54620139 100644
---- a/src/util/virstoragefile.c
-+++ b/src/util/virstoragefile.c
-@@ -2052,7 +2052,7 @@ virStorageSourceNVMeDefCopy(const virStorageSourceNVMeDef *src)
-
- ret = g_new0(virStorageSourceNVMeDef, 1);
-
-- ret->namespace = src->namespace;
-+ ret->namespc = src->namespc;
- ret->managed = src->managed;
- virPCIDeviceAddressCopy(&ret->pciAddr, &src->pciAddr);
- return ret;
-@@ -2069,7 +2069,7 @@ virStorageSourceNVMeDefIsEqual(const virStorageSourceNVMeDef *a,
- if (!a || !b)
- return false;
-
-- if (a->namespace != b->namespace ||
-+ if (a->namespc != b->namespc ||
- a->managed != b->managed ||
- !virPCIDeviceAddressEqual(&a->pciAddr, &b->pciAddr))
- return false;
-diff --git a/src/util/virstoragefile.h b/src/util/virstoragefile.h
-index c1430cadd1..0230f44652 100644
---- a/src/util/virstoragefile.h
-+++ b/src/util/virstoragefile.h
-@@ -246,7 +246,7 @@ struct _virStorageSourceInitiatorDef {
- typedef struct _virStorageSourceNVMeDef virStorageSourceNVMeDef;
- typedef virStorageSourceNVMeDef *virStorageSourceNVMeDefPtr;
- struct _virStorageSourceNVMeDef {
-- unsigned long long namespace;
-+ unsigned long long namespc;
- int managed; /* enum virTristateBool */
- virPCIDeviceAddress pciAddr;
-
---
-2.26.0
-
diff --git a/SOURCES/libvirt-conf-simplify-logic-when-checking-for-AUTOASSIGN-PCI-addresses.patch b/SOURCES/libvirt-conf-simplify-logic-when-checking-for-AUTOASSIGN-PCI-addresses.patch
deleted file mode 100644
index cedc221..0000000
--- a/SOURCES/libvirt-conf-simplify-logic-when-checking-for-AUTOASSIGN-PCI-addresses.patch
+++ /dev/null
@@ -1,83 +0,0 @@
-From f52197675b2babfafb1b89058e3fd01decebd8ab Mon Sep 17 00:00:00 2001
-Message-Id:
-From: Laine Stump
-Date: Sun, 26 Apr 2020 13:04:12 -0400
-Subject: [PATCH] conf: simplify logic when checking for AUTOASSIGN PCI
- addresses
-
-Old behavior: If the address was manually provided by config, copy
-device AUTOASSIGN flag into the bus flag, and then later on in the
-function *always* check for a match of the flags (which will always
-match if the address came from config, since we just copied it).
-
-New behavior: Don't mess with the bus flags - just directly check if
-the AUTOASSIGN flag matches in bus and dev, but only make the check if
-the address didn't come from config (i.e. it was auto-assigned by
-libvirt).
-
-Signed-off-by: Laine Stump
-Reviewed-by: Michal Privoznik
-(cherry picked from commit fcdf87d3ef14de9dfb0acaf4b4445e1580dfc629)
-
-https://bugzilla.redhat.com/1802592
-Signed-off-by: Laine Stump
-Message-Id: <20200426170415.18328-10-laine@redhat.com>
-Reviewed-by: Michal Privoznik
----
- src/conf/domain_addr.c | 27 ++++++++++-----------------
- 1 file changed, 10 insertions(+), 17 deletions(-)
-
-diff --git a/src/conf/domain_addr.c b/src/conf/domain_addr.c
-index 53be6cd34b..05f036e3e6 100644
---- a/src/conf/domain_addr.c
-+++ b/src/conf/domain_addr.c
-@@ -358,18 +358,22 @@ virDomainPCIAddressFlagsCompatible(virPCIDeviceAddressPtr addr,
- */
- if (busFlags & VIR_PCI_CONNECT_TYPES_ENDPOINT)
- busFlags |= VIR_PCI_CONNECT_TYPES_ENDPOINT;
-- /* Also allow manual specification of bus to override
-- * libvirt's assumptions about whether or not hotplug
-- * capability will be required.
-- */
-- if (devFlags & VIR_PCI_CONNECT_AUTOASSIGN)
-- busFlags |= VIR_PCI_CONNECT_AUTOASSIGN;
- /* if the device is a pci-bridge, allow manually
- * assigning to any bus that would also accept a
- * standard PCI device.
- */
- if (devFlags & VIR_PCI_CONNECT_TYPE_PCI_BRIDGE)
- devFlags |= VIR_PCI_CONNECT_TYPE_PCI_DEVICE;
-+ } else if ((devFlags & VIR_PCI_CONNECT_AUTOASSIGN) &&
-+ !(busFlags & VIR_PCI_CONNECT_AUTOASSIGN)) {
-+ if (reportError) {
-+ virReportError(errType,
-+ _("The device at PCI address %s was auto-assigned "
-+ "this address, but the PCI controller "
-+ "with index='%d' doesn't allow auto-assignment"),
-+ addrStr, addr->bus);
-+ }
-+ return false;
- }
-
- /* If this bus doesn't allow the type of connection (PCI
-@@ -419,17 +423,6 @@ virDomainPCIAddressFlagsCompatible(virPCIDeviceAddressPtr addr,
- addrStr, addr->bus, connectStr);
- return false;
- }
-- if ((devFlags & VIR_PCI_CONNECT_AUTOASSIGN) &&
-- !(busFlags & VIR_PCI_CONNECT_AUTOASSIGN)) {
-- if (reportError) {
-- virReportError(errType,
-- _("The device at PCI address %s requires "
-- "hotplug capability, but the PCI controller "
-- "with index='%d' doesn't support hotplug"),
-- addrStr, addr->bus);
-- }
-- return false;
-- }
- return true;
- }
-
---
-2.26.2
-
diff --git a/SOURCES/libvirt-conf-use-switch-in-virDomainDefParseBootOptions.patch b/SOURCES/libvirt-conf-use-switch-in-virDomainDefParseBootOptions.patch
deleted file mode 100644
index e4a8822..0000000
--- a/SOURCES/libvirt-conf-use-switch-in-virDomainDefParseBootOptions.patch
+++ /dev/null
@@ -1,89 +0,0 @@
-From 75470b7c297be9bdd712282b89c48465dbe8d400 Mon Sep 17 00:00:00 2001
-Message-Id: <75470b7c297be9bdd712282b89c48465dbe8d400@dist-git>
-From: Pavel Hrdina
-Date: Fri, 21 May 2021 14:16:10 +0200
-Subject: [PATCH] conf: use switch in virDomainDefParseBootOptions
-
-The original code used a lot of conditions and was not that obvious
-when each XML bits are parsed.
-
-Signed-off-by: Pavel Hrdina
-Reviewed-by: Michal Privoznik
-(cherry picked from commit 6330be1ba3af5c4d2150fe2b831f7bc5d87c6d2a)
-
-Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1929357
-
-Signed-off-by: Pavel Hrdina
-Message-Id: <900c870b1720688123ed7b69850548ae308ea9a8.1621599207.git.phrdina@redhat.com>
-Reviewed-by: Michal Privoznik
----
- src/conf/domain_conf.c | 42 ++++++++++++++++++++++++++----------------
- 1 file changed, 26 insertions(+), 16 deletions(-)
-
-diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
-index f8d8d33245..93a78f8277 100644
---- a/src/conf/domain_conf.c
-+++ b/src/conf/domain_conf.c
-@@ -19483,33 +19483,43 @@ virDomainDefParseBootOptions(virDomainDefPtr def,
- * - An init script (exe)
- */
-
-- if (def->os.type == VIR_DOMAIN_OSTYPE_EXE) {
-- if (virDomainDefParseBootInitOptions(def, ctxt) < 0)
-- return -1;
-- }
--
-- if (def->os.type == VIR_DOMAIN_OSTYPE_XEN ||
-- def->os.type == VIR_DOMAIN_OSTYPE_XENPVH ||
-- def->os.type == VIR_DOMAIN_OSTYPE_HVM ||
-- def->os.type == VIR_DOMAIN_OSTYPE_UML) {
--
-+ switch ((virDomainOSType) def->os.type) {
-+ case VIR_DOMAIN_OSTYPE_HVM:
- virDomainDefParseBootKernelOptions(def, ctxt);
-
-- if (def->os.type == VIR_DOMAIN_OSTYPE_HVM) {
-- if (virDomainDefParseBootFirmwareOptions(def, ctxt) < 0)
-- return -1;
-- }
-+ if (virDomainDefParseBootFirmwareOptions(def, ctxt) < 0)
-+ return -1;
-
- if (virDomainDefParseBootLoaderOptions(def, ctxt) < 0)
- return -1;
-- }
-
-- if (def->os.type == VIR_DOMAIN_OSTYPE_HVM) {
- if (virDomainDefParseBootAcpiOptions(def, ctxt) < 0)
- return -1;
-
- if (virDomainDefParseBootXML(ctxt, def) < 0)
- return -1;
-+
-+ break;
-+
-+ case VIR_DOMAIN_OSTYPE_XEN:
-+ case VIR_DOMAIN_OSTYPE_XENPVH:
-+ case VIR_DOMAIN_OSTYPE_UML:
-+ virDomainDefParseBootKernelOptions(def, ctxt);
-+
-+ if (virDomainDefParseBootLoaderOptions(def, ctxt) < 0)
-+ return -1;
-+
-+ break;
-+
-+ case VIR_DOMAIN_OSTYPE_EXE:
-+ if (virDomainDefParseBootInitOptions(def, ctxt) < 0)
-+ return -1;
-+
-+ break;
-+
-+ case VIR_DOMAIN_OSTYPE_LINUX:
-+ case VIR_DOMAIN_OSTYPE_LAST:
-+ break;
- }
-
- return 0;
---
-2.31.1
-
diff --git a/SOURCES/libvirt-conf-use-virXMLFormatElement-in-virDomainFSDefFormat.patch b/SOURCES/libvirt-conf-use-virXMLFormatElement-in-virDomainFSDefFormat.patch
deleted file mode 100644
index 3e5d5df..0000000
--- a/SOURCES/libvirt-conf-use-virXMLFormatElement-in-virDomainFSDefFormat.patch
+++ /dev/null
@@ -1,70 +0,0 @@
-From d77f180068dab8747f5e2c098a9c59213ce19108 Mon Sep 17 00:00:00 2001
-Message-Id:
-From: =?UTF-8?q?J=C3=A1n=20Tomko?=
-Date: Wed, 4 Mar 2020 12:42:29 +0100
-Subject: [PATCH] conf: use virXMLFormatElement in virDomainFSDefFormat
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Use the virXMLFormatElement helper to format the driver element
-to simplify adding further sub-elements.
-
-Signed-off-by: Ján Tomko
-Reviewed-by: Peter Krempa
-(cherry picked from commit 3efdbae5bf054d1a2bdc98fdccff0273abe54c88)
-Signed-off-by: Ján Tomko
-https://bugzilla.redhat.com/show_bug.cgi?id=1694166
-Message-Id: <966ad0eebcb1ae5f20f59fc6cc84008bbfa6426f.1583322090.git.jtomko@redhat.com>
-Reviewed-by: Michal Privoznik
----
- src/conf/domain_conf.c | 16 ++++++----------
- 1 file changed, 6 insertions(+), 10 deletions(-)
-
-diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
-index 8a5f14d6cb..88117187c8 100644
---- a/src/conf/domain_conf.c
-+++ b/src/conf/domain_conf.c
-@@ -24991,7 +24991,7 @@ virDomainFSDefFormat(virBufferPtr buf,
- const char *fsdriver = virDomainFSDriverTypeToString(def->fsdriver);
- const char *wrpolicy = virDomainFSWrpolicyTypeToString(def->wrpolicy);
- const char *src = def->src->path;
-- g_auto(virBuffer) driverBuf = VIR_BUFFER_INITIALIZER;
-+ g_auto(virBuffer) driverAttrBuf = VIR_BUFFER_INITIALIZER;
-
- if (!type) {
- virReportError(VIR_ERR_INTERNAL_ERROR,
-@@ -25016,25 +25016,21 @@ virDomainFSDefFormat(virBufferPtr buf,
-
- virBufferAdjustIndent(buf, 2);
- if (def->fsdriver) {
-- virBufferAsprintf(&driverBuf, " type='%s'", fsdriver);
-+ virBufferAsprintf(&driverAttrBuf, " type='%s'", fsdriver);
-
- if (def->format)
-- virBufferAsprintf(&driverBuf, " format='%s'",
-+ virBufferAsprintf(&driverAttrBuf, " format='%s'",
- virStorageFileFormatTypeToString(def->format));
-
- /* Don't generate anything if wrpolicy is set to default */
- if (def->wrpolicy)
-- virBufferAsprintf(&driverBuf, " wrpolicy='%s'", wrpolicy);
-+ virBufferAsprintf(&driverAttrBuf, " wrpolicy='%s'", wrpolicy);
-
- }
-
-- virDomainVirtioOptionsFormat(&driverBuf, def->virtio);
-+ virDomainVirtioOptionsFormat(&driverAttrBuf, def->virtio);
-
-- if (virBufferUse(&driverBuf)) {
-- virBufferAddLit(buf, " \n");
-- }
-+ virXMLFormatElement(buf, "driver", &driverAttrBuf, NULL);
-
- switch (def->type) {
- case VIR_DOMAIN_FS_TYPE_MOUNT:
---
-2.25.1
-
diff --git a/SOURCES/libvirt-cpu-Change-control-flow-in-virCPUUpdateLive.patch b/SOURCES/libvirt-cpu-Change-control-flow-in-virCPUUpdateLive.patch
deleted file mode 100644
index b4dcabc..0000000
--- a/SOURCES/libvirt-cpu-Change-control-flow-in-virCPUUpdateLive.patch
+++ /dev/null
@@ -1,53 +0,0 @@
-From 2145d7b6f4370dfcd7dadae7daf544767cde0392 Mon Sep 17 00:00:00 2001
-Message-Id: <2145d7b6f4370dfcd7dadae7daf544767cde0392@dist-git>
-From: Jiri Denemark
-Date: Tue, 26 May 2020 10:58:51 +0200
-Subject: [PATCH] cpu: Change control flow in virCPUUpdateLive
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-The updateLive CPU sub-driver function is supposed to be called only for
-a subset of CPU definitions. Let's make it more obvious by turning a
-negative test and return into a positive check.
-
-Signed-off-by: Jiri Denemark
-Reviewed-by: Ján Tomko
-(cherry picked from commit 68c0b85ecb07c8cefcf4f4a2ffc28e123baa9e8c)
-
-https://bugzilla.redhat.com/show_bug.cgi?id=1839999
-
-Signed-off-by: Jiri Denemark
-Message-Id: <2633727669ca50970bd10abe9b045e24b76028d1.1590483392.git.jdenemar@redhat.com>
-Reviewed-by: Ján Tomko
----
- src/cpu/cpu.c | 11 ++++++-----
- 1 file changed, 6 insertions(+), 5 deletions(-)
-
-diff --git a/src/cpu/cpu.c b/src/cpu/cpu.c
-index ae3a0acc10..1cb2dd04f4 100644
---- a/src/cpu/cpu.c
-+++ b/src/cpu/cpu.c
-@@ -647,13 +647,14 @@ virCPUUpdateLive(virArch arch,
- if (!driver->updateLive)
- return 1;
-
-- if (cpu->mode != VIR_CPU_MODE_CUSTOM)
-- return 1;
-+ if (cpu->mode == VIR_CPU_MODE_CUSTOM) {
-+ if (driver->updateLive(cpu, dataEnabled, dataDisabled) < 0)
-+ return -1;
-
-- if (driver->updateLive(cpu, dataEnabled, dataDisabled) < 0)
-- return -1;
-+ return 0;
-+ }
-
-- return 0;
-+ return 1;
- }
-
-
---
-2.26.2
-
diff --git a/SOURCES/libvirt-cpu-Honor-check-full-for-host-passthrough-CPUs.patch b/SOURCES/libvirt-cpu-Honor-check-full-for-host-passthrough-CPUs.patch
deleted file mode 100644
index ff0dbcf..0000000
--- a/SOURCES/libvirt-cpu-Honor-check-full-for-host-passthrough-CPUs.patch
+++ /dev/null
@@ -1,100 +0,0 @@
-From 781e82d0330afe60ab1c366e43dfe8292fcf68eb Mon Sep 17 00:00:00 2001
-Message-Id: <781e82d0330afe60ab1c366e43dfe8292fcf68eb@dist-git>
-From: Jiri Denemark
-Date: Tue, 26 May 2020 10:58:53 +0200
-Subject: [PATCH] cpu: Honor check='full' for host-passthrough CPUs
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-The check attribute was completely ignored for host-passthrough CPUs
-even if they explicitly requested some features to be enabled. For
-example, a domain with the following CPU definition
-
-
-
-
-
-would happily start even when 'svm' cannot be enabled.
-
-Let's call virCPUArchUpdateLive for host-passthrough CPUs with
-VIR_CPU_CHECK_FULL to make sure the architecture specific code can
-validate the provided virtual CPU against the desired definition.
-
-https://bugzilla.redhat.com/show_bug.cgi?id=1515677
-
-Signed-off-by: Jiri Denemark
-Reviewed-by: Ján Tomko
-(cherry picked from commit ac36a824641862dcac057c6403b27ab1e91874f5)
-
-https://bugzilla.redhat.com/show_bug.cgi?id=1839999
-
-Signed-off-by: Jiri Denemark
-Message-Id:
-Reviewed-by: Ján Tomko
----
- src/cpu/cpu.c | 3 ++-
- src/cpu/cpu_x86.c | 10 +++++++++-
- 2 files changed, 11 insertions(+), 2 deletions(-)
-
-diff --git a/src/cpu/cpu.c b/src/cpu/cpu.c
-index 1cb2dd04f4..f2a0f560f6 100644
---- a/src/cpu/cpu.c
-+++ b/src/cpu/cpu.c
-@@ -647,7 +647,8 @@ virCPUUpdateLive(virArch arch,
- if (!driver->updateLive)
- return 1;
-
-- if (cpu->mode == VIR_CPU_MODE_CUSTOM) {
-+ if (cpu->mode == VIR_CPU_MODE_CUSTOM ||
-+ cpu->check == VIR_CPU_CHECK_FULL) {
- if (driver->updateLive(cpu, dataEnabled, dataDisabled) < 0)
- return -1;
-
-diff --git a/src/cpu/cpu_x86.c b/src/cpu/cpu_x86.c
-index 9e686a86d2..8c865bdaa4 100644
---- a/src/cpu/cpu_x86.c
-+++ b/src/cpu/cpu_x86.c
-@@ -3009,8 +3009,10 @@ virCPUx86UpdateLive(virCPUDefPtr cpu,
- virCPUDataPtr dataEnabled,
- virCPUDataPtr dataDisabled)
- {
-+ bool hostPassthrough = cpu->mode == VIR_CPU_MODE_HOST_PASSTHROUGH;
- virCPUx86MapPtr map;
- virCPUx86ModelPtr model = NULL;
-+ virCPUx86ModelPtr modelDisabled = NULL;
- virCPUx86Data enabled = VIR_CPU_X86_DATA_INIT;
- virCPUx86Data disabled = VIR_CPU_X86_DATA_INIT;
- virBuffer bufAdded = VIR_BUFFER_INITIALIZER;
-@@ -3026,6 +3028,10 @@ virCPUx86UpdateLive(virCPUDefPtr cpu,
- if (!(model = x86ModelFromCPU(cpu, map, -1)))
- goto cleanup;
-
-+ if (hostPassthrough &&
-+ !(modelDisabled = x86ModelFromCPU(cpu, map, VIR_CPU_FEATURE_DISABLE)))
-+ goto cleanup;
-+
- if (dataEnabled &&
- x86DataCopy(&enabled, &dataEnabled->data.x86) < 0)
- goto cleanup;
-@@ -3040,7 +3046,8 @@ virCPUx86UpdateLive(virCPUDefPtr cpu,
-
- if (x86DataIsSubset(&model->data, &feature->data))
- expected = VIR_CPU_FEATURE_REQUIRE;
-- else
-+ else if (!hostPassthrough ||
-+ x86DataIsSubset(&modelDisabled->data, &feature->data))
- expected = VIR_CPU_FEATURE_DISABLE;
-
- if (expected == VIR_CPU_FEATURE_DISABLE &&
-@@ -3101,6 +3108,7 @@ virCPUx86UpdateLive(virCPUDefPtr cpu,
-
- cleanup:
- x86ModelFree(model);
-+ x86ModelFree(modelDisabled);
- virCPUx86DataClear(&enabled);
- virCPUx86DataClear(&disabled);
- VIR_FREE(added);
---
-2.26.2
-
diff --git a/SOURCES/libvirt-cpu.c-Check-properly-for-virCapabilitiesGetNodeInfo-retval.patch b/SOURCES/libvirt-cpu.c-Check-properly-for-virCapabilitiesGetNodeInfo-retval.patch
deleted file mode 100644
index df7e1a6..0000000
--- a/SOURCES/libvirt-cpu.c-Check-properly-for-virCapabilitiesGetNodeInfo-retval.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-From 4b8dbdb81eb6a755dc58b359e65b769ee1dc3f86 Mon Sep 17 00:00:00 2001
-Message-Id: <4b8dbdb81eb6a755dc58b359e65b769ee1dc3f86@dist-git>
-From: Michal Privoznik
-Date: Fri, 24 Jan 2020 15:05:49 +0100
-Subject: [PATCH] cpu.c: Check properly for virCapabilitiesGetNodeInfo() retval
-
-The virCapabilitiesGetNodeInfo() function has the usual return
-value semantics for integeres: a negative value means an error,
-zero or a positive value means success. However, the function
-call done in virCPUProbeHost() doesn't check for the return value
-accordingly.
-
-Signed-off-by: Michal Privoznik
-Reviewed-by: Peter Krempa
-(cherry picked from commit 609acf1f5d5d666148355719346c8ee05f911e33)
-
-https://bugzilla.redhat.com/show_bug.cgi?id=1794691
-
-Signed-off-by: Michal Privoznik
-Message-Id: <033f07f79bc9fa26f669c83f9aa790bfaef25b93.1579874719.git.mprivozn@redhat.com>
-Reviewed-by: Jiri Denemark
----
- src/cpu/cpu.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/cpu/cpu.c b/src/cpu/cpu.c
-index a2ae5b8c07..d99466472b 100644
---- a/src/cpu/cpu.c
-+++ b/src/cpu/cpu.c
-@@ -455,7 +455,7 @@ virCPUProbeHost(virArch arch)
- {
- virNodeInfo nodeinfo;
-
-- if (virCapabilitiesGetNodeInfo(&nodeinfo))
-+ if (virCapabilitiesGetNodeInfo(&nodeinfo) < 0)
- return NULL;
-
- return virCPUGetHost(arch, VIR_CPU_TYPE_HOST, &nodeinfo, NULL);
---
-2.25.0
-
diff --git a/SOURCES/libvirt-cpu_conf-Format-vendor_id-for-host-model-CPUs.patch b/SOURCES/libvirt-cpu_conf-Format-vendor_id-for-host-model-CPUs.patch
deleted file mode 100644
index e088020..0000000
--- a/SOURCES/libvirt-cpu_conf-Format-vendor_id-for-host-model-CPUs.patch
+++ /dev/null
@@ -1,80 +0,0 @@
-From 37b27a297ecb87e65f41c212aaabde7311b042d6 Mon Sep 17 00:00:00 2001
-Message-Id: <37b27a297ecb87e65f41c212aaabde7311b042d6@dist-git>
-From: Jiri Denemark
-Date: Thu, 20 Feb 2020 09:08:05 +0100
-Subject: [PATCH] cpu_conf: Format vendor_id for host-model CPUs
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-In commit v5.9.0-400-gaf8e39921a I removed printing model's fallback and
-vendor_id attributes when no model is specified. However, vendor_id
-makes sense even without a specific CPU model (for host-model CPUs).
-
-https://bugzilla.redhat.com/show_bug.cgi?id=1804549
-
-Signed-off-by: Jiri Denemark
-Reviewed-by: Ján Tomko
-(cherry picked from commit 0905f222f1bfd9d741e94a8d653e05bb174846d3)
-Signed-off-by: Jiri Denemark
-Message-Id: <0b46ae9e26d1c7dbaa7f2dd58fd1156db237a853.1582186015.git.jdenemar@redhat.com>
-Reviewed-by: Ján Tomko
----
- src/conf/cpu_conf.c | 14 +++++++++-----
- tests/qemuxml2xmloutdata/cpu-host-model-vendor.xml | 4 +++-
- 2 files changed, 12 insertions(+), 6 deletions(-)
-
-diff --git a/src/conf/cpu_conf.c b/src/conf/cpu_conf.c
-index 837d77581c..1a2948ce11 100644
---- a/src/conf/cpu_conf.c
-+++ b/src/conf/cpu_conf.c
-@@ -791,10 +791,10 @@ virCPUDefFormatBuf(virBufferPtr buf,
- return -1;
- }
-
-- if (formatModel && def->model) {
-+ if (formatModel && (def->model || def->vendor_id)) {
- virBufferAddLit(buf, "type == VIR_CPU_TYPE_GUEST) {
-+ if (def->type == VIR_CPU_TYPE_GUEST && def->model) {
- const char *fallback;
-
- fallback = virCPUFallbackTypeToString(def->fallback);
-@@ -805,11 +805,15 @@ virCPUDefFormatBuf(virBufferPtr buf,
- return -1;
- }
- virBufferAsprintf(buf, " fallback='%s'", fallback);
-- if (def->vendor_id)
-- virBufferEscapeString(buf, " vendor_id='%s'", def->vendor_id);
- }
-
-- virBufferEscapeString(buf, ">%s \n", def->model);
-+ if (def->type == VIR_CPU_TYPE_GUEST)
-+ virBufferEscapeString(buf, " vendor_id='%s'", def->vendor_id);
-+
-+ if (def->model)
-+ virBufferEscapeString(buf, ">%s\n", def->model);
-+ else
-+ virBufferAddLit(buf, "/>\n");
- }
-
- if (formatModel && def->vendor)
-diff --git a/tests/qemuxml2xmloutdata/cpu-host-model-vendor.xml b/tests/qemuxml2xmloutdata/cpu-host-model-vendor.xml
-index d2447ccd10..2a7d0246cc 100644
---- a/tests/qemuxml2xmloutdata/cpu-host-model-vendor.xml
-+++ b/tests/qemuxml2xmloutdata/cpu-host-model-vendor.xml
-@@ -8,7 +8,9 @@
- hvm
-
-
--
-+
-+
-+
-
- destroy
- restart
---
-2.25.0
-
diff --git a/SOURCES/libvirt-cpu_map-Add-Cooperlake-x86-CPU-model.patch b/SOURCES/libvirt-cpu_map-Add-Cooperlake-x86-CPU-model.patch
deleted file mode 100644
index 45155f5..0000000
--- a/SOURCES/libvirt-cpu_map-Add-Cooperlake-x86-CPU-model.patch
+++ /dev/null
@@ -1,289 +0,0 @@
-From 1c8af21807f2cdaaa24651808f6dfeebfbcf75bb Mon Sep 17 00:00:00 2001
-Message-Id: <1c8af21807f2cdaaa24651808f6dfeebfbcf75bb@dist-git>
-From: Jiri Denemark
-Date: Tue, 26 May 2020 10:59:40 +0200
-Subject: [PATCH] cpu_map: Add Cooperlake x86 CPU model
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-The stepping range (10-11) is likely incomplete. QEMU uses 10 and the
-CPUID data for Cooperlake show 11. We will update the range if needed
-once more details about he CPU are available.
-
-Signed-off-by: Jiri Denemark
-Reviewed-by: Pavel Hrdina
-(cherry picked from commit 3944f6855b9d4df73754bb6e5c8023d77399879b)
-
-https://bugzilla.redhat.com/show_bug.cgi?id=1781878
-
-Conflicts:
- tests/domaincapsdata/qemu_5.1.0-q35.x86_64.xml
- tests/domaincapsdata/qemu_5.1.0-tcg.x86_64.xml
- tests/domaincapsdata/qemu_5.1.0.x86_64.xml
- - test data files do not exist downstream
-
-Signed-off-by: Jiri Denemark
-Message-Id: <62f2fa3e2ecab2026c41e93430b4e2b695c674f0.1590483392.git.jdenemar@redhat.com>
-Reviewed-by: Ján Tomko
----
- src/cpu_map/index.xml | 1 +
- src/cpu_map/x86_Cooperlake.xml | 90 +++++++++++++++++++
- .../x86_64-cpuid-Cooperlake-guest.xml | 13 +--
- .../x86_64-cpuid-Cooperlake-host.xml | 13 +--
- .../x86_64-cpuid-Cooperlake-json.xml | 13 +--
- .../domaincapsdata/qemu_5.0.0-q35.x86_64.xml | 1 +
- .../domaincapsdata/qemu_5.0.0-tcg.x86_64.xml | 1 +
- tests/domaincapsdata/qemu_5.0.0.x86_64.xml | 1 +
- 8 files changed, 100 insertions(+), 33 deletions(-)
- create mode 100644 src/cpu_map/x86_Cooperlake.xml
-
-diff --git a/src/cpu_map/index.xml b/src/cpu_map/index.xml
-index 50b030de29..ff1da2e677 100644
---- a/src/cpu_map/index.xml
-+++ b/src/cpu_map/index.xml
-@@ -54,6 +54,7 @@
-
-
-
-+
-
-
-
-diff --git a/src/cpu_map/x86_Cooperlake.xml b/src/cpu_map/x86_Cooperlake.xml
-new file mode 100644
-index 0000000000..41bd210638
---- /dev/null
-+++ b/src/cpu_map/x86_Cooperlake.xml
-@@ -0,0 +1,90 @@
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-diff --git a/tests/cputestdata/x86_64-cpuid-Cooperlake-guest.xml b/tests/cputestdata/x86_64-cpuid-Cooperlake-guest.xml
-index db5598740c..f169458399 100644
---- a/tests/cputestdata/x86_64-cpuid-Cooperlake-guest.xml
-+++ b/tests/cputestdata/x86_64-cpuid-Cooperlake-guest.xml
-@@ -1,5 +1,5 @@
-
-- Cascadelake-Server
-+ Cooperlake
- Intel
-
-
-@@ -20,22 +20,13 @@
-
-
-
-+
-
--
-
-
--
--
--
-
-
-
-
--
--
--
--
--
-
--
-
-diff --git a/tests/cputestdata/x86_64-cpuid-Cooperlake-host.xml b/tests/cputestdata/x86_64-cpuid-Cooperlake-host.xml
-index 6926b7c975..b0777181bb 100644
---- a/tests/cputestdata/x86_64-cpuid-Cooperlake-host.xml
-+++ b/tests/cputestdata/x86_64-cpuid-Cooperlake-host.xml
-@@ -1,6 +1,6 @@
-
- x86_64
-- Cascadelake-Server
-+ Cooperlake
- Intel
-
-
-@@ -21,22 +21,13 @@
-
-
-
-+
-
--
-
-
--
--
--
-
-
-
-
--
--
--
--
--
-
--
-
-diff --git a/tests/cputestdata/x86_64-cpuid-Cooperlake-json.xml b/tests/cputestdata/x86_64-cpuid-Cooperlake-json.xml
-index fc52805b2f..fb319d547c 100644
---- a/tests/cputestdata/x86_64-cpuid-Cooperlake-json.xml
-+++ b/tests/cputestdata/x86_64-cpuid-Cooperlake-json.xml
-@@ -1,24 +1,15 @@
-
-- Cascadelake-Server
-+ Cooperlake
- Intel
-
-
-
-
-+
-
--
-
--
--
--
-
-
-
--
--
--
--
--
-
--
-
-diff --git a/tests/domaincapsdata/qemu_5.0.0-q35.x86_64.xml b/tests/domaincapsdata/qemu_5.0.0-q35.x86_64.xml
-index b7e2c8a4fe..7bfd786ff6 100644
---- a/tests/domaincapsdata/qemu_5.0.0-q35.x86_64.xml
-+++ b/tests/domaincapsdata/qemu_5.0.0-q35.x86_64.xml
-@@ -93,6 +93,7 @@
- EPYC-IBPB
- EPYC
- Dhyana
-+ Cooperlake
- Conroe
- Cascadelake-Server-noTSX
- Cascadelake-Server
-diff --git a/tests/domaincapsdata/qemu_5.0.0-tcg.x86_64.xml b/tests/domaincapsdata/qemu_5.0.0-tcg.x86_64.xml
-index d634803b29..0a4bb16a89 100644
---- a/tests/domaincapsdata/qemu_5.0.0-tcg.x86_64.xml
-+++ b/tests/domaincapsdata/qemu_5.0.0-tcg.x86_64.xml
-@@ -101,6 +101,7 @@
- EPYC-IBPB
- EPYC
- Dhyana
-+ Cooperlake
- Conroe
- Cascadelake-Server-noTSX
- Cascadelake-Server
-diff --git a/tests/domaincapsdata/qemu_5.0.0.x86_64.xml b/tests/domaincapsdata/qemu_5.0.0.x86_64.xml
-index d2741375b4..d6ee66ab60 100644
---- a/tests/domaincapsdata/qemu_5.0.0.x86_64.xml
-+++ b/tests/domaincapsdata/qemu_5.0.0.x86_64.xml
-@@ -92,6 +92,7 @@
- EPYC-IBPB
- EPYC
- Dhyana
-+ Cooperlake
- Conroe
- Cascadelake-Server-noTSX
- Cascadelake-Server
---
-2.26.2
-
diff --git a/SOURCES/libvirt-cpu_map-Add-EPYC-Milan-x86-CPU-model.patch b/SOURCES/libvirt-cpu_map-Add-EPYC-Milan-x86-CPU-model.patch
deleted file mode 100644
index 3257983..0000000
--- a/SOURCES/libvirt-cpu_map-Add-EPYC-Milan-x86-CPU-model.patch
+++ /dev/null
@@ -1,145 +0,0 @@
-From b5716d1b191eb52cd88d7b94cb9bf0186f3e427b Mon Sep 17 00:00:00 2001
-Message-Id:
-From: Jiri Denemark
-Date: Wed, 3 Mar 2021 11:11:54 +0100
-Subject: [PATCH] cpu_map: Add EPYC-Milan x86 CPU model
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Introduced in QEMU 6.0.0 by 623972ceae091b31331ae4a1dc94fe5cbb891937
-
-Signed-off-by: Jiri Denemark
-Reviewed-by: Ján Tomko
-(cherry picked from commit f321a4822e9fa6542e48a78611989ecd9acaa83a)
-
-https://bugzilla.redhat.com/show_bug.cgi?id=1926864
-
-Conflicts:
- src/cpu_map/index.xml
- - context: commit 82bebba1803c63a733e17f5ab2618e020e4abd8d
- "cpu_map: Unify apostrophe and quotation mark usage" was
- not backported
-
-Signed-off-by: Jiri Denemark
-Message-Id: <715abc0f90faafb7daa193dd24bad65046c36de0.1614766279.git.jdenemar@redhat.com>
-Reviewed-by: Ján Tomko
----
- src/cpu_map/index.xml | 1 +
- src/cpu_map/x86_EPYC-Milan.xml | 92 ++++++++++++++++++++++++++++++++++
- 2 files changed, 93 insertions(+)
- create mode 100644 src/cpu_map/x86_EPYC-Milan.xml
-
-diff --git a/src/cpu_map/index.xml b/src/cpu_map/index.xml
-index 2f58261e6d..c3dda794b1 100644
---- a/src/cpu_map/index.xml
-+++ b/src/cpu_map/index.xml
-@@ -68,6 +68,7 @@
-
-
-
-+
-
-
-
-diff --git a/src/cpu_map/x86_EPYC-Milan.xml b/src/cpu_map/x86_EPYC-Milan.xml
-new file mode 100644
-index 0000000000..53f0cd6aac
---- /dev/null
-+++ b/src/cpu_map/x86_EPYC-Milan.xml
-@@ -0,0 +1,92 @@
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
---
-2.30.0
-
diff --git a/SOURCES/libvirt-cpu_map-Add-decode-element-to-x86-CPU-model-definitions.patch b/SOURCES/libvirt-cpu_map-Add-decode-element-to-x86-CPU-model-definitions.patch
deleted file mode 100644
index 515fa17..0000000
--- a/SOURCES/libvirt-cpu_map-Add-decode-element-to-x86-CPU-model-definitions.patch
+++ /dev/null
@@ -1,749 +0,0 @@
-From 4658a565f5536002c3a65e942eed0d877cd1d070 Mon Sep 17 00:00:00 2001
-Message-Id: <4658a565f5536002c3a65e942eed0d877cd1d070@dist-git>
-From: Jiri Denemark
-Date: Tue, 26 May 2020 10:58:56 +0200
-Subject: [PATCH] cpu_map: Add element to x86 CPU model definitions
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-The element specifies whether a particular CPU model can be used when
-creating a CPU definition from raw CPUID/MSR data. The @host attribute
-determines whether the CPU model can be used (host='on') for creating
-CPU definition for host capabilities. Usability of the model for domain
-capabilities and host-model CPU definitions is controlled by the @guest
-attribute.
-
-Signed-off-by: Jiri Denemark
-Reviewed-by: Christian Ehrhardt
-Tested-by: Christian Ehrhardt
-(cherry picked from commit f4914045c2bff46b120c6c2af80066d24e48b609)
-
-https://bugzilla.redhat.com/show_bug.cgi?id=1840008
-
-Signed-off-by: Jiri Denemark
-Message-Id: <3097db79eff1e45257ef12f891e8f9243bc8580f.1590483392.git.jdenemar@redhat.com>
-Reviewed-by: Ján Tomko
----
- src/cpu/cpu_x86.c | 43 +++++++++++++++++++
- src/cpu_map/x86_486.xml | 1 +
- src/cpu_map/x86_Broadwell-IBRS.xml | 1 +
- src/cpu_map/x86_Broadwell-noTSX-IBRS.xml | 1 +
- src/cpu_map/x86_Broadwell-noTSX.xml | 1 +
- src/cpu_map/x86_Broadwell.xml | 1 +
- src/cpu_map/x86_Cascadelake-Server-noTSX.xml | 1 +
- src/cpu_map/x86_Cascadelake-Server.xml | 1 +
- src/cpu_map/x86_Conroe.xml | 1 +
- src/cpu_map/x86_Dhyana.xml | 1 +
- src/cpu_map/x86_EPYC-IBPB.xml | 1 +
- src/cpu_map/x86_EPYC.xml | 1 +
- src/cpu_map/x86_Haswell-IBRS.xml | 1 +
- src/cpu_map/x86_Haswell-noTSX-IBRS.xml | 1 +
- src/cpu_map/x86_Haswell-noTSX.xml | 1 +
- src/cpu_map/x86_Haswell.xml | 1 +
- src/cpu_map/x86_Icelake-Client-noTSX.xml | 1 +
- src/cpu_map/x86_Icelake-Client.xml | 1 +
- src/cpu_map/x86_Icelake-Server-noTSX.xml | 1 +
- src/cpu_map/x86_Icelake-Server.xml | 1 +
- src/cpu_map/x86_IvyBridge-IBRS.xml | 1 +
- src/cpu_map/x86_IvyBridge.xml | 1 +
- src/cpu_map/x86_Nehalem-IBRS.xml | 1 +
- src/cpu_map/x86_Nehalem.xml | 1 +
- src/cpu_map/x86_Opteron_G1.xml | 1 +
- src/cpu_map/x86_Opteron_G2.xml | 1 +
- src/cpu_map/x86_Opteron_G3.xml | 1 +
- src/cpu_map/x86_Opteron_G4.xml | 1 +
- src/cpu_map/x86_Opteron_G5.xml | 1 +
- src/cpu_map/x86_Penryn.xml | 1 +
- src/cpu_map/x86_SandyBridge-IBRS.xml | 1 +
- src/cpu_map/x86_SandyBridge.xml | 1 +
- src/cpu_map/x86_Skylake-Client-IBRS.xml | 1 +
- src/cpu_map/x86_Skylake-Client-noTSX-IBRS.xml | 1 +
- src/cpu_map/x86_Skylake-Client.xml | 1 +
- src/cpu_map/x86_Skylake-Server-IBRS.xml | 1 +
- src/cpu_map/x86_Skylake-Server-noTSX-IBRS.xml | 1 +
- src/cpu_map/x86_Skylake-Server.xml | 1 +
- src/cpu_map/x86_Westmere-IBRS.xml | 1 +
- src/cpu_map/x86_Westmere.xml | 1 +
- src/cpu_map/x86_athlon.xml | 1 +
- src/cpu_map/x86_core2duo.xml | 1 +
- src/cpu_map/x86_coreduo.xml | 1 +
- src/cpu_map/x86_cpu64-rhel5.xml | 1 +
- src/cpu_map/x86_cpu64-rhel6.xml | 1 +
- src/cpu_map/x86_kvm32.xml | 1 +
- src/cpu_map/x86_kvm64.xml | 1 +
- src/cpu_map/x86_n270.xml | 1 +
- src/cpu_map/x86_pentium.xml | 1 +
- src/cpu_map/x86_pentium2.xml | 1 +
- src/cpu_map/x86_pentium3.xml | 1 +
- src/cpu_map/x86_pentiumpro.xml | 1 +
- src/cpu_map/x86_phenom.xml | 1 +
- src/cpu_map/x86_qemu32.xml | 1 +
- src/cpu_map/x86_qemu64.xml | 1 +
- 55 files changed, 97 insertions(+)
-
-diff --git a/src/cpu/cpu_x86.c b/src/cpu/cpu_x86.c
-index 8c865bdaa4..7fbb4c9a6c 100644
---- a/src/cpu/cpu_x86.c
-+++ b/src/cpu/cpu_x86.c
-@@ -125,6 +125,8 @@ typedef struct _virCPUx86Model virCPUx86Model;
- typedef virCPUx86Model *virCPUx86ModelPtr;
- struct _virCPUx86Model {
- char *name;
-+ bool decodeHost;
-+ bool decodeGuest;
- virCPUx86VendorPtr vendor;
- size_t nsignatures;
- uint32_t *signatures;
-@@ -1347,6 +1349,44 @@ x86ModelCompare(virCPUx86ModelPtr model1,
- }
-
-
-+static int
-+x86ModelParseDecode(virCPUx86ModelPtr model,
-+ xmlXPathContextPtr ctxt)
-+{
-+ g_autofree char *host = NULL;
-+ g_autofree char *guest = NULL;
-+ int val;
-+
-+ if ((host = virXPathString("string(./decode/@host)", ctxt)))
-+ val = virTristateSwitchTypeFromString(host);
-+ else
-+ val = VIR_TRISTATE_SWITCH_ABSENT;
-+
-+ if (val <= 0) {
-+ virReportError(VIR_ERR_INTERNAL_ERROR,
-+ _("invalid or missing decode/host attribute in CPU model %s"),
-+ model->name);
-+ return -1;
-+ }
-+ model->decodeHost = val == VIR_TRISTATE_SWITCH_ON;
-+
-+ if ((guest = virXPathString("string(./decode/@guest)", ctxt)))
-+ val = virTristateSwitchTypeFromString(guest);
-+ else
-+ val = VIR_TRISTATE_SWITCH_ABSENT;
-+
-+ if (val <= 0) {
-+ virReportError(VIR_ERR_INTERNAL_ERROR,
-+ _("invalid or missing decode/guest attribute in CPU model %s"),
-+ model->name);
-+ return -1;
-+ }
-+ model->decodeGuest = val == VIR_TRISTATE_SWITCH_ON;
-+
-+ return 0;
-+}
-+
-+
- static int
- x86ModelParseAncestor(virCPUx86ModelPtr model,
- xmlXPathContextPtr ctxt,
-@@ -1521,6 +1561,9 @@ x86ModelParse(xmlXPathContextPtr ctxt,
-
- model->name = g_strdup(name);
-
-+ if (x86ModelParseDecode(model, ctxt) < 0)
-+ goto cleanup;
-+
- if (x86ModelParseAncestor(model, ctxt, map) < 0)
- goto cleanup;
-
-diff --git a/src/cpu_map/x86_486.xml b/src/cpu_map/x86_486.xml
-index 61fa3797e8..d05b277392 100644
---- a/src/cpu_map/x86_486.xml
-+++ b/src/cpu_map/x86_486.xml
-@@ -1,5 +1,6 @@
-
-
-+
-
-
-
-diff --git a/src/cpu_map/x86_Broadwell-IBRS.xml b/src/cpu_map/x86_Broadwell-IBRS.xml
-index 4600cacec0..9033d5fcd5 100644
---- a/src/cpu_map/x86_Broadwell-IBRS.xml
-+++ b/src/cpu_map/x86_Broadwell-IBRS.xml
-@@ -1,5 +1,6 @@
-
-
-+
-
-
-
-diff --git a/src/cpu_map/x86_Broadwell-noTSX-IBRS.xml b/src/cpu_map/x86_Broadwell-noTSX-IBRS.xml
-index b3fc0b726a..c044b60e36 100644
---- a/src/cpu_map/x86_Broadwell-noTSX-IBRS.xml
-+++ b/src/cpu_map/x86_Broadwell-noTSX-IBRS.xml
-@@ -1,5 +1,6 @@
-
-
-+
-
-
-
-diff --git a/src/cpu_map/x86_Broadwell-noTSX.xml b/src/cpu_map/x86_Broadwell-noTSX.xml
-index ad932d0853..637f29ba1c 100644
---- a/src/cpu_map/x86_Broadwell-noTSX.xml
-+++ b/src/cpu_map/x86_Broadwell-noTSX.xml
-@@ -1,5 +1,6 @@
-
-
-+
-
-
-
-diff --git a/src/cpu_map/x86_Broadwell.xml b/src/cpu_map/x86_Broadwell.xml
-index 6de9227322..82939a4509 100644
---- a/src/cpu_map/x86_Broadwell.xml
-+++ b/src/cpu_map/x86_Broadwell.xml
-@@ -1,5 +1,6 @@
-
-
-+
-
-
-
-diff --git a/src/cpu_map/x86_Cascadelake-Server-noTSX.xml b/src/cpu_map/x86_Cascadelake-Server-noTSX.xml
-index d24415ebce..5adea664e9 100644
---- a/src/cpu_map/x86_Cascadelake-Server-noTSX.xml
-+++ b/src/cpu_map/x86_Cascadelake-Server-noTSX.xml
-@@ -1,5 +1,6 @@
-
-
-+
-
-
-
-diff --git a/src/cpu_map/x86_Cascadelake-Server.xml b/src/cpu_map/x86_Cascadelake-Server.xml
-index b69ac198b6..d7ec42f57e 100644
---- a/src/cpu_map/x86_Cascadelake-Server.xml
-+++ b/src/cpu_map/x86_Cascadelake-Server.xml
-@@ -1,5 +1,6 @@
-
-
-+
-
-
-
-diff --git a/src/cpu_map/x86_Conroe.xml b/src/cpu_map/x86_Conroe.xml
-index 89fe0ad2cf..4cacee6142 100644
---- a/src/cpu_map/x86_Conroe.xml
-+++ b/src/cpu_map/x86_Conroe.xml
-@@ -1,5 +1,6 @@
-
-
-+
-
-
-
-diff --git a/src/cpu_map/x86_Dhyana.xml b/src/cpu_map/x86_Dhyana.xml
-index cbc8020a94..689daf8649 100644
---- a/src/cpu_map/x86_Dhyana.xml
-+++ b/src/cpu_map/x86_Dhyana.xml
-@@ -1,5 +1,6 @@
-
-
-+
-
-
-
-diff --git a/src/cpu_map/x86_EPYC-IBPB.xml b/src/cpu_map/x86_EPYC-IBPB.xml
-index 283697ebd1..983c5f4445 100644
---- a/src/cpu_map/x86_EPYC-IBPB.xml
-+++ b/src/cpu_map/x86_EPYC-IBPB.xml
-@@ -1,5 +1,6 @@
-
-
-+
-
-
-
-diff --git a/src/cpu_map/x86_EPYC.xml b/src/cpu_map/x86_EPYC.xml
-index f0601392fd..3ebba9f4ed 100644
---- a/src/cpu_map/x86_EPYC.xml
-+++ b/src/cpu_map/x86_EPYC.xml
-@@ -1,5 +1,6 @@
-
-
-+
-
-
-
-diff --git a/src/cpu_map/x86_Haswell-IBRS.xml b/src/cpu_map/x86_Haswell-IBRS.xml
-index 4f86db838f..0ffe2bae0d 100644
---- a/src/cpu_map/x86_Haswell-IBRS.xml
-+++ b/src/cpu_map/x86_Haswell-IBRS.xml
-@@ -1,5 +1,6 @@
-
-
-+
-
-
-
-diff --git a/src/cpu_map/x86_Haswell-noTSX-IBRS.xml b/src/cpu_map/x86_Haswell-noTSX-IBRS.xml
-index 47318be6d5..75d709c009 100644
---- a/src/cpu_map/x86_Haswell-noTSX-IBRS.xml
-+++ b/src/cpu_map/x86_Haswell-noTSX-IBRS.xml
-@@ -1,5 +1,6 @@
-
-
-+
-
-
-
-diff --git a/src/cpu_map/x86_Haswell-noTSX.xml b/src/cpu_map/x86_Haswell-noTSX.xml
-index efd10c47de..b0a0faa856 100644
---- a/src/cpu_map/x86_Haswell-noTSX.xml
-+++ b/src/cpu_map/x86_Haswell-noTSX.xml
-@@ -1,5 +1,6 @@
-
-
-+
-
-
-
-diff --git a/src/cpu_map/x86_Haswell.xml b/src/cpu_map/x86_Haswell.xml
-index ac358d7967..ee16b30f19 100644
---- a/src/cpu_map/x86_Haswell.xml
-+++ b/src/cpu_map/x86_Haswell.xml
-@@ -1,5 +1,6 @@
-
-
-+
-
-
-
-diff --git a/src/cpu_map/x86_Icelake-Client-noTSX.xml b/src/cpu_map/x86_Icelake-Client-noTSX.xml
-index cd51881f40..540732af6f 100644
---- a/src/cpu_map/x86_Icelake-Client-noTSX.xml
-+++ b/src/cpu_map/x86_Icelake-Client-noTSX.xml
-@@ -1,5 +1,6 @@
-
-
-+
-
-
-
-diff --git a/src/cpu_map/x86_Icelake-Client.xml b/src/cpu_map/x86_Icelake-Client.xml
-index fbd53bbe11..5cf32e91fa 100644
---- a/src/cpu_map/x86_Icelake-Client.xml
-+++ b/src/cpu_map/x86_Icelake-Client.xml
-@@ -1,5 +1,6 @@
-
-
-+
-
-
-
-diff --git a/src/cpu_map/x86_Icelake-Server-noTSX.xml b/src/cpu_map/x86_Icelake-Server-noTSX.xml
-index 538c656712..5a53da23c7 100644
---- a/src/cpu_map/x86_Icelake-Server-noTSX.xml
-+++ b/src/cpu_map/x86_Icelake-Server-noTSX.xml
-@@ -1,5 +1,6 @@
-
-
-+
-
-
-
-diff --git a/src/cpu_map/x86_Icelake-Server.xml b/src/cpu_map/x86_Icelake-Server.xml
-index a565371977..367ade7240 100644
---- a/src/cpu_map/x86_Icelake-Server.xml
-+++ b/src/cpu_map/x86_Icelake-Server.xml
-@@ -1,5 +1,6 @@
-
-
-+
-
-
-
-diff --git a/src/cpu_map/x86_IvyBridge-IBRS.xml b/src/cpu_map/x86_IvyBridge-IBRS.xml
-index e0f2adfa82..430bc3232d 100644
---- a/src/cpu_map/x86_IvyBridge-IBRS.xml
-+++ b/src/cpu_map/x86_IvyBridge-IBRS.xml
-@@ -1,5 +1,6 @@
-
-
-+
-
-
-
-diff --git a/src/cpu_map/x86_IvyBridge.xml b/src/cpu_map/x86_IvyBridge.xml
-index 16213dbc62..eaf5d02e82 100644
---- a/src/cpu_map/x86_IvyBridge.xml
-+++ b/src/cpu_map/x86_IvyBridge.xml
-@@ -1,5 +1,6 @@
-
-
-+
-
-
-
-diff --git a/src/cpu_map/x86_Nehalem-IBRS.xml b/src/cpu_map/x86_Nehalem-IBRS.xml
-index 8cc19eff03..00d0d2fe51 100644
---- a/src/cpu_map/x86_Nehalem-IBRS.xml
-+++ b/src/cpu_map/x86_Nehalem-IBRS.xml
-@@ -1,5 +1,6 @@
-
-
-+
-
-
-
-diff --git a/src/cpu_map/x86_Nehalem.xml b/src/cpu_map/x86_Nehalem.xml
-index 530e5e8a0d..9968001fe7 100644
---- a/src/cpu_map/x86_Nehalem.xml
-+++ b/src/cpu_map/x86_Nehalem.xml
-@@ -1,5 +1,6 @@
-
-
-+
-
-
-
-diff --git a/src/cpu_map/x86_Opteron_G1.xml b/src/cpu_map/x86_Opteron_G1.xml
-index 73cf1de71e..57648ca93f 100644
---- a/src/cpu_map/x86_Opteron_G1.xml
-+++ b/src/cpu_map/x86_Opteron_G1.xml
-@@ -1,5 +1,6 @@
-
-
-+
-
-
-
-diff --git a/src/cpu_map/x86_Opteron_G2.xml b/src/cpu_map/x86_Opteron_G2.xml
-index 342105730e..db961b0067 100644
---- a/src/cpu_map/x86_Opteron_G2.xml
-+++ b/src/cpu_map/x86_Opteron_G2.xml
-@@ -1,5 +1,6 @@
-
-
-+
-
-
-
-diff --git a/src/cpu_map/x86_Opteron_G3.xml b/src/cpu_map/x86_Opteron_G3.xml
-index 7fbf8ac9e9..dab59d4f82 100644
---- a/src/cpu_map/x86_Opteron_G3.xml
-+++ b/src/cpu_map/x86_Opteron_G3.xml
-@@ -1,5 +1,6 @@
-
-
-+
-
-
-
-diff --git a/src/cpu_map/x86_Opteron_G4.xml b/src/cpu_map/x86_Opteron_G4.xml
-index 463b3676a0..a7fc8d5828 100644
---- a/src/cpu_map/x86_Opteron_G4.xml
-+++ b/src/cpu_map/x86_Opteron_G4.xml
-@@ -1,5 +1,6 @@
-
-
-+
-
-
-
-diff --git a/src/cpu_map/x86_Opteron_G5.xml b/src/cpu_map/x86_Opteron_G5.xml
-index 0f8fe32c87..ff775bdcef 100644
---- a/src/cpu_map/x86_Opteron_G5.xml
-+++ b/src/cpu_map/x86_Opteron_G5.xml
-@@ -1,5 +1,6 @@
-
-
-+
-
-
-
-diff --git a/src/cpu_map/x86_Penryn.xml b/src/cpu_map/x86_Penryn.xml
-index 279bb05570..29d4cd635b 100644
---- a/src/cpu_map/x86_Penryn.xml
-+++ b/src/cpu_map/x86_Penryn.xml
-@@ -1,5 +1,6 @@
-
-
-+
-
-
-
-diff --git a/src/cpu_map/x86_SandyBridge-IBRS.xml b/src/cpu_map/x86_SandyBridge-IBRS.xml
-index 7d1342ec6f..fbdb4f2bf6 100644
---- a/src/cpu_map/x86_SandyBridge-IBRS.xml
-+++ b/src/cpu_map/x86_SandyBridge-IBRS.xml
-@@ -1,5 +1,6 @@
-
-
-+
-
-
-
-diff --git a/src/cpu_map/x86_SandyBridge.xml b/src/cpu_map/x86_SandyBridge.xml
-index 48e4ac8082..7c85ed42df 100644
---- a/src/cpu_map/x86_SandyBridge.xml
-+++ b/src/cpu_map/x86_SandyBridge.xml
-@@ -1,5 +1,6 @@
-
-
-+
-
-
-
-diff --git a/src/cpu_map/x86_Skylake-Client-IBRS.xml b/src/cpu_map/x86_Skylake-Client-IBRS.xml
-index 4440313fc4..5709e7c2f9 100644
---- a/src/cpu_map/x86_Skylake-Client-IBRS.xml
-+++ b/src/cpu_map/x86_Skylake-Client-IBRS.xml
-@@ -1,5 +1,6 @@
-
-
-+
-
-
-
-
-
-
-
-
-
-diff --git a/src/cpu_map/x86_Skylake-Server-noTSX-IBRS.xml b/src/cpu_map/x86_Skylake-Server-noTSX-IBRS.xml
-index 455a072119..91a206f575 100644
---- a/src/cpu_map/x86_Skylake-Server-noTSX-IBRS.xml
-+++ b/src/cpu_map/x86_Skylake-Server-noTSX-IBRS.xml
-@@ -1,5 +1,6 @@
-
-
-+
-
-
-
-diff --git a/src/cpu_map/x86_Skylake-Server.xml b/src/cpu_map/x86_Skylake-Server.xml
-index 2da69e0dfc..f96875a85f 100644
---- a/src/cpu_map/x86_Skylake-Server.xml
-+++ b/src/cpu_map/x86_Skylake-Server.xml
-@@ -1,5 +1,6 @@
-
-
-+
-
-
-
-diff --git a/src/cpu_map/x86_Westmere-IBRS.xml b/src/cpu_map/x86_Westmere-IBRS.xml
-index 3baf56f47a..c7898f0c22 100644
---- a/src/cpu_map/x86_Westmere-IBRS.xml
-+++ b/src/cpu_map/x86_Westmere-IBRS.xml
-@@ -1,5 +1,6 @@
-
-
-+
-
-
-
-diff --git a/src/cpu_map/x86_Westmere.xml b/src/cpu_map/x86_Westmere.xml
-index 95c1d690c8..16e4ad6c30 100644
---- a/src/cpu_map/x86_Westmere.xml
-+++ b/src/cpu_map/x86_Westmere.xml
-@@ -1,5 +1,6 @@
-
-
-+
-
-
-
-diff --git a/src/cpu_map/x86_athlon.xml b/src/cpu_map/x86_athlon.xml
-index 0d44508e20..81c43c81e8 100644
---- a/src/cpu_map/x86_athlon.xml
-+++ b/src/cpu_map/x86_athlon.xml
-@@ -1,5 +1,6 @@
-
-
-+
-
-
-
-diff --git a/src/cpu_map/x86_core2duo.xml b/src/cpu_map/x86_core2duo.xml
-index 3c9a148f3c..412039fe55 100644
---- a/src/cpu_map/x86_core2duo.xml
-+++ b/src/cpu_map/x86_core2duo.xml
-@@ -1,5 +1,6 @@
-
-
-+
-
-
-
-diff --git a/src/cpu_map/x86_coreduo.xml b/src/cpu_map/x86_coreduo.xml
-index 676e846920..e2fda9a1d4 100644
---- a/src/cpu_map/x86_coreduo.xml
-+++ b/src/cpu_map/x86_coreduo.xml
-@@ -1,5 +1,6 @@
-
-
-+
-
-
-
-diff --git a/src/cpu_map/x86_cpu64-rhel5.xml b/src/cpu_map/x86_cpu64-rhel5.xml
-index 670a92f274..be6bcdb7a6 100644
---- a/src/cpu_map/x86_cpu64-rhel5.xml
-+++ b/src/cpu_map/x86_cpu64-rhel5.xml
-@@ -1,5 +1,6 @@
-
-
-+
-
-
-
-diff --git a/src/cpu_map/x86_cpu64-rhel6.xml b/src/cpu_map/x86_cpu64-rhel6.xml
-index 3cae0f00c2..c62b1b5575 100644
---- a/src/cpu_map/x86_cpu64-rhel6.xml
-+++ b/src/cpu_map/x86_cpu64-rhel6.xml
-@@ -1,5 +1,6 @@
-
-
-+
-
-
-
-diff --git a/src/cpu_map/x86_kvm32.xml b/src/cpu_map/x86_kvm32.xml
-index 5f08a5e7fc..9dd96d5b56 100644
---- a/src/cpu_map/x86_kvm32.xml
-+++ b/src/cpu_map/x86_kvm32.xml
-@@ -1,5 +1,6 @@
-
-
-+
-
-
-
-diff --git a/src/cpu_map/x86_kvm64.xml b/src/cpu_map/x86_kvm64.xml
-index 80b24e2a49..185af06f78 100644
---- a/src/cpu_map/x86_kvm64.xml
-+++ b/src/cpu_map/x86_kvm64.xml
-@@ -1,5 +1,6 @@
-
-
-+
-
-
-
-diff --git a/src/cpu_map/x86_n270.xml b/src/cpu_map/x86_n270.xml
-index cb359d968e..5507d2ea3b 100644
---- a/src/cpu_map/x86_n270.xml
-+++ b/src/cpu_map/x86_n270.xml
-@@ -1,5 +1,6 @@
-
-
-+
-
-
-
-diff --git a/src/cpu_map/x86_pentium.xml b/src/cpu_map/x86_pentium.xml
-index d44c1399b0..f0a8982115 100644
---- a/src/cpu_map/x86_pentium.xml
-+++ b/src/cpu_map/x86_pentium.xml
-@@ -1,5 +1,6 @@
-
-
-+
-
-
-
-diff --git a/src/cpu_map/x86_pentium2.xml b/src/cpu_map/x86_pentium2.xml
-index 0d772bad2f..aeba082297 100644
---- a/src/cpu_map/x86_pentium2.xml
-+++ b/src/cpu_map/x86_pentium2.xml
-@@ -1,5 +1,6 @@
-
-
-+
-
-
-
-diff --git a/src/cpu_map/x86_pentium3.xml b/src/cpu_map/x86_pentium3.xml
-index 24eb227c28..ab85d2967f 100644
---- a/src/cpu_map/x86_pentium3.xml
-+++ b/src/cpu_map/x86_pentium3.xml
-@@ -1,5 +1,6 @@
-
-
-+
-
-
-
-diff --git a/src/cpu_map/x86_pentiumpro.xml b/src/cpu_map/x86_pentiumpro.xml
-index 9f7a610a87..b6e061187c 100644
---- a/src/cpu_map/x86_pentiumpro.xml
-+++ b/src/cpu_map/x86_pentiumpro.xml
-@@ -1,5 +1,6 @@
-
-
-+
-
-
-
-diff --git a/src/cpu_map/x86_phenom.xml b/src/cpu_map/x86_phenom.xml
-index 71f004057b..f0f8ece57a 100644
---- a/src/cpu_map/x86_phenom.xml
-+++ b/src/cpu_map/x86_phenom.xml
-@@ -1,5 +1,6 @@
-
-
-+
-
-
-
-diff --git a/src/cpu_map/x86_qemu32.xml b/src/cpu_map/x86_qemu32.xml
-index 3c9cdec981..f3fb1959be 100644
---- a/src/cpu_map/x86_qemu32.xml
-+++ b/src/cpu_map/x86_qemu32.xml
-@@ -1,5 +1,6 @@
-
-
-+
-
-
-
-diff --git a/src/cpu_map/x86_qemu64.xml b/src/cpu_map/x86_qemu64.xml
-index a8e8dfe58d..0fe207a2b4 100644
---- a/src/cpu_map/x86_qemu64.xml
-+++ b/src/cpu_map/x86_qemu64.xml
-@@ -1,5 +1,6 @@
-
-
-+
-
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-
-
-
-diff --git a/tests/cputestdata/x86_64-cpuid-A10-5800K-disabled.xml b/tests/cputestdata/x86_64-cpuid-A10-5800K-disabled.xml
-index 6ed5b3573b..3bacf2cf95 100644
---- a/tests/cputestdata/x86_64-cpuid-A10-5800K-disabled.xml
-+++ b/tests/cputestdata/x86_64-cpuid-A10-5800K-disabled.xml
-@@ -3,4 +3,5 @@
-
-
-
-+
-
-diff --git a/tests/cputestdata/x86_64-cpuid-A10-5800K-enabled.xml b/tests/cputestdata/x86_64-cpuid-A10-5800K-enabled.xml
-index 5cae0b7130..f6afbe2cb3 100644
---- a/tests/cputestdata/x86_64-cpuid-A10-5800K-enabled.xml
-+++ b/tests/cputestdata/x86_64-cpuid-A10-5800K-enabled.xml
-@@ -3,4 +3,5 @@
-
-
-
-+
-
-diff --git a/tests/cputestdata/x86_64-cpuid-A10-5800K-guest.xml b/tests/cputestdata/x86_64-cpuid-A10-5800K-guest.xml
-index 98a95e1c41..8401e53d30 100644
---- a/tests/cputestdata/x86_64-cpuid-A10-5800K-guest.xml
-+++ b/tests/cputestdata/x86_64-cpuid-A10-5800K-guest.xml
-@@ -22,4 +22,14 @@
-
-
-
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-
-diff --git a/tests/cputestdata/x86_64-cpuid-A10-5800K-host.xml b/tests/cputestdata/x86_64-cpuid-A10-5800K-host.xml
-index cb90c967a3..2430adbfbc 100644
---- a/tests/cputestdata/x86_64-cpuid-A10-5800K-host.xml
-+++ b/tests/cputestdata/x86_64-cpuid-A10-5800K-host.xml
-@@ -23,4 +23,14 @@
-
-
-
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-
-diff --git a/tests/cputestdata/x86_64-cpuid-A10-5800K-json.xml b/tests/cputestdata/x86_64-cpuid-A10-5800K-json.xml
-index fa61b7b60b..51e6d2b660 100644
---- a/tests/cputestdata/x86_64-cpuid-A10-5800K-json.xml
-+++ b/tests/cputestdata/x86_64-cpuid-A10-5800K-json.xml
-@@ -11,6 +11,8 @@
-
-
-
-+
-+
-
-
-
-diff --git a/tests/cputestdata/x86_64-cpuid-EPYC-7601-32-Core-disabled.xml b/tests/cputestdata/x86_64-cpuid-EPYC-7601-32-Core-disabled.xml
-index c26c9c7be3..25ef2d3314 100644
---- a/tests/cputestdata/x86_64-cpuid-EPYC-7601-32-Core-disabled.xml
-+++ b/tests/cputestdata/x86_64-cpuid-EPYC-7601-32-Core-disabled.xml
-@@ -5,4 +5,5 @@
-
-
-
-+
-
-diff --git a/tests/cputestdata/x86_64-cpuid-EPYC-7601-32-Core-enabled.xml b/tests/cputestdata/x86_64-cpuid-EPYC-7601-32-Core-enabled.xml
-index 70b75f7115..e46908e981 100644
---- a/tests/cputestdata/x86_64-cpuid-EPYC-7601-32-Core-enabled.xml
-+++ b/tests/cputestdata/x86_64-cpuid-EPYC-7601-32-Core-enabled.xml
-@@ -5,4 +5,5 @@
-
-
-
-+
-
-diff --git a/tests/cputestdata/x86_64-cpuid-EPYC-7601-32-Core-guest.xml b/tests/cputestdata/x86_64-cpuid-EPYC-7601-32-Core-guest.xml
-index 612e571609..0053913327 100644
---- a/tests/cputestdata/x86_64-cpuid-EPYC-7601-32-Core-guest.xml
-+++ b/tests/cputestdata/x86_64-cpuid-EPYC-7601-32-Core-guest.xml
-@@ -15,4 +15,14 @@
-
-
-
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-
-diff --git a/tests/cputestdata/x86_64-cpuid-EPYC-7601-32-Core-host.xml b/tests/cputestdata/x86_64-cpuid-EPYC-7601-32-Core-host.xml
-index 7498d924e2..7acab0a999 100644
---- a/tests/cputestdata/x86_64-cpuid-EPYC-7601-32-Core-host.xml
-+++ b/tests/cputestdata/x86_64-cpuid-EPYC-7601-32-Core-host.xml
-@@ -16,4 +16,14 @@
-
-
-
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-
-diff --git a/tests/cputestdata/x86_64-cpuid-EPYC-7601-32-Core-ibpb-disabled.xml b/tests/cputestdata/x86_64-cpuid-EPYC-7601-32-Core-ibpb-disabled.xml
-index a7f4fa3f01..f4d92cf034 100644
---- a/tests/cputestdata/x86_64-cpuid-EPYC-7601-32-Core-ibpb-disabled.xml
-+++ b/tests/cputestdata/x86_64-cpuid-EPYC-7601-32-Core-ibpb-disabled.xml
-@@ -5,4 +5,5 @@
-
-
-
-+
-
-diff --git a/tests/cputestdata/x86_64-cpuid-EPYC-7601-32-Core-ibpb-enabled.xml b/tests/cputestdata/x86_64-cpuid-EPYC-7601-32-Core-ibpb-enabled.xml
-index 772456f947..910491c7f6 100644
---- a/tests/cputestdata/x86_64-cpuid-EPYC-7601-32-Core-ibpb-enabled.xml
-+++ b/tests/cputestdata/x86_64-cpuid-EPYC-7601-32-Core-ibpb-enabled.xml
-@@ -6,4 +6,5 @@
-
-
-
-+
-
-diff --git a/tests/cputestdata/x86_64-cpuid-EPYC-7601-32-Core-ibpb-guest.xml b/tests/cputestdata/x86_64-cpuid-EPYC-7601-32-Core-ibpb-guest.xml
-index 96fdea306f..9164987bbd 100644
---- a/tests/cputestdata/x86_64-cpuid-EPYC-7601-32-Core-ibpb-guest.xml
-+++ b/tests/cputestdata/x86_64-cpuid-EPYC-7601-32-Core-ibpb-guest.xml
-@@ -15,5 +15,15 @@
-
-
-
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-
-
-diff --git a/tests/cputestdata/x86_64-cpuid-EPYC-7601-32-Core-ibpb-host.xml b/tests/cputestdata/x86_64-cpuid-EPYC-7601-32-Core-ibpb-host.xml
-index 4fff74f3aa..2fa8861e44 100644
---- a/tests/cputestdata/x86_64-cpuid-EPYC-7601-32-Core-ibpb-host.xml
-+++ b/tests/cputestdata/x86_64-cpuid-EPYC-7601-32-Core-ibpb-host.xml
-@@ -16,4 +16,14 @@
-
-
-
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-
-diff --git a/tests/cputestdata/x86_64-cpuid-EPYC-7601-32-Core-ibpb-json.xml b/tests/cputestdata/x86_64-cpuid-EPYC-7601-32-Core-ibpb-json.xml
-index c4e34a0fa1..af1e7f2f32 100644
---- a/tests/cputestdata/x86_64-cpuid-EPYC-7601-32-Core-ibpb-json.xml
-+++ b/tests/cputestdata/x86_64-cpuid-EPYC-7601-32-Core-ibpb-json.xml
-@@ -6,6 +6,8 @@
-
-
-
-+
-+
-
-
-
-diff --git a/tests/cputestdata/x86_64-cpuid-EPYC-7601-32-Core-json.xml b/tests/cputestdata/x86_64-cpuid-EPYC-7601-32-Core-json.xml
-index 7bf2d1b852..4450a40f61 100644
---- a/tests/cputestdata/x86_64-cpuid-EPYC-7601-32-Core-json.xml
-+++ b/tests/cputestdata/x86_64-cpuid-EPYC-7601-32-Core-json.xml
-@@ -6,6 +6,8 @@
-
-
-
-+
-+
-
-
-
-diff --git a/tests/cputestdata/x86_64-cpuid-FX-8150-guest.xml b/tests/cputestdata/x86_64-cpuid-FX-8150-guest.xml
-index 6bd032bbcb..ee34ea8547 100644
---- a/tests/cputestdata/x86_64-cpuid-FX-8150-guest.xml
-+++ b/tests/cputestdata/x86_64-cpuid-FX-8150-guest.xml
-@@ -20,4 +20,14 @@
-
-
-
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-
-diff --git a/tests/cputestdata/x86_64-cpuid-FX-8150-host.xml b/tests/cputestdata/x86_64-cpuid-FX-8150-host.xml
-index ec670c612e..75595c02af 100644
---- a/tests/cputestdata/x86_64-cpuid-FX-8150-host.xml
-+++ b/tests/cputestdata/x86_64-cpuid-FX-8150-host.xml
-@@ -21,4 +21,14 @@
-
-
-
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-
-diff --git a/tests/cputestdata/x86_64-cpuid-Hygon-C86-7185-32-core-disabled.xml b/tests/cputestdata/x86_64-cpuid-Hygon-C86-7185-32-core-disabled.xml
-index c26c9c7be3..25ef2d3314 100644
---- a/tests/cputestdata/x86_64-cpuid-Hygon-C86-7185-32-core-disabled.xml
-+++ b/tests/cputestdata/x86_64-cpuid-Hygon-C86-7185-32-core-disabled.xml
-@@ -5,4 +5,5 @@
-
-
-
-+
-
-diff --git a/tests/cputestdata/x86_64-cpuid-Hygon-C86-7185-32-core-enabled.xml b/tests/cputestdata/x86_64-cpuid-Hygon-C86-7185-32-core-enabled.xml
-index fcefcf73c8..9181c3a9fe 100644
---- a/tests/cputestdata/x86_64-cpuid-Hygon-C86-7185-32-core-enabled.xml
-+++ b/tests/cputestdata/x86_64-cpuid-Hygon-C86-7185-32-core-enabled.xml
-@@ -6,4 +6,5 @@
-
-
-
-+
-
-diff --git a/tests/cputestdata/x86_64-cpuid-Hygon-C86-7185-32-core-guest.xml b/tests/cputestdata/x86_64-cpuid-Hygon-C86-7185-32-core-guest.xml
-index 844b8b9d4f..08c574255e 100644
---- a/tests/cputestdata/x86_64-cpuid-Hygon-C86-7185-32-core-guest.xml
-+++ b/tests/cputestdata/x86_64-cpuid-Hygon-C86-7185-32-core-guest.xml
-@@ -15,4 +15,14 @@
-
-
-
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-
-diff --git a/tests/cputestdata/x86_64-cpuid-Hygon-C86-7185-32-core-host.xml b/tests/cputestdata/x86_64-cpuid-Hygon-C86-7185-32-core-host.xml
-index 3d1b143eba..f1cddb6a19 100644
---- a/tests/cputestdata/x86_64-cpuid-Hygon-C86-7185-32-core-host.xml
-+++ b/tests/cputestdata/x86_64-cpuid-Hygon-C86-7185-32-core-host.xml
-@@ -16,4 +16,14 @@
-
-
-
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-
-diff --git a/tests/cputestdata/x86_64-cpuid-Hygon-C86-7185-32-core-json.xml b/tests/cputestdata/x86_64-cpuid-Hygon-C86-7185-32-core-json.xml
-index d3003b6965..0fdd934c08 100644
---- a/tests/cputestdata/x86_64-cpuid-Hygon-C86-7185-32-core-json.xml
-+++ b/tests/cputestdata/x86_64-cpuid-Hygon-C86-7185-32-core-json.xml
-@@ -7,6 +7,8 @@
-
-
-
-+
-+
-
-
-
-diff --git a/tests/cputestdata/x86_64-cpuid-Opteron-1352-guest.xml b/tests/cputestdata/x86_64-cpuid-Opteron-1352-guest.xml
-index 652f1e4333..a52c4cd303 100644
---- a/tests/cputestdata/x86_64-cpuid-Opteron-1352-guest.xml
-+++ b/tests/cputestdata/x86_64-cpuid-Opteron-1352-guest.xml
-@@ -15,4 +15,7 @@
-
-
-
-+
-+
-+
-
-diff --git a/tests/cputestdata/x86_64-cpuid-Opteron-1352-host.xml b/tests/cputestdata/x86_64-cpuid-Opteron-1352-host.xml
-index 399398eb3a..800b092f14 100644
---- a/tests/cputestdata/x86_64-cpuid-Opteron-1352-host.xml
-+++ b/tests/cputestdata/x86_64-cpuid-Opteron-1352-host.xml
-@@ -16,4 +16,7 @@
-
-
-
-+
-+
-+
-
-diff --git a/tests/cputestdata/x86_64-cpuid-Opteron-2350-disabled.xml b/tests/cputestdata/x86_64-cpuid-Opteron-2350-disabled.xml
-index 8ec1b12582..3f6fe54055 100644
---- a/tests/cputestdata/x86_64-cpuid-Opteron-2350-disabled.xml
-+++ b/tests/cputestdata/x86_64-cpuid-Opteron-2350-disabled.xml
-@@ -3,4 +3,5 @@
-
-
-
-+
-
-diff --git a/tests/cputestdata/x86_64-cpuid-Opteron-2350-enabled.xml b/tests/cputestdata/x86_64-cpuid-Opteron-2350-enabled.xml
-index 913980f15f..5fd0d6066d 100644
---- a/tests/cputestdata/x86_64-cpuid-Opteron-2350-enabled.xml
-+++ b/tests/cputestdata/x86_64-cpuid-Opteron-2350-enabled.xml
-@@ -2,4 +2,5 @@
-
-
-
-+
-
-diff --git a/tests/cputestdata/x86_64-cpuid-Opteron-2350-guest.xml b/tests/cputestdata/x86_64-cpuid-Opteron-2350-guest.xml
-index 652f1e4333..a52c4cd303 100644
---- a/tests/cputestdata/x86_64-cpuid-Opteron-2350-guest.xml
-+++ b/tests/cputestdata/x86_64-cpuid-Opteron-2350-guest.xml
-@@ -15,4 +15,7 @@
-
-
-
-+
-+
-+
-
-diff --git a/tests/cputestdata/x86_64-cpuid-Opteron-2350-host.xml b/tests/cputestdata/x86_64-cpuid-Opteron-2350-host.xml
-index 399398eb3a..800b092f14 100644
---- a/tests/cputestdata/x86_64-cpuid-Opteron-2350-host.xml
-+++ b/tests/cputestdata/x86_64-cpuid-Opteron-2350-host.xml
-@@ -16,4 +16,7 @@
-
-
-
-+
-+
-+
-
-diff --git a/tests/cputestdata/x86_64-cpuid-Opteron-2350-json.xml b/tests/cputestdata/x86_64-cpuid-Opteron-2350-json.xml
-index 741757aeb2..d128553c13 100644
---- a/tests/cputestdata/x86_64-cpuid-Opteron-2350-json.xml
-+++ b/tests/cputestdata/x86_64-cpuid-Opteron-2350-json.xml
-@@ -14,6 +14,7 @@
-
-
-
-+
-
-
-
-diff --git a/tests/cputestdata/x86_64-cpuid-Opteron-6234-disabled.xml b/tests/cputestdata/x86_64-cpuid-Opteron-6234-disabled.xml
-index 88124d1745..4dcd74103b 100644
---- a/tests/cputestdata/x86_64-cpuid-Opteron-6234-disabled.xml
-+++ b/tests/cputestdata/x86_64-cpuid-Opteron-6234-disabled.xml
-@@ -3,4 +3,5 @@
-
-
-
-+
-
-diff --git a/tests/cputestdata/x86_64-cpuid-Opteron-6234-enabled.xml b/tests/cputestdata/x86_64-cpuid-Opteron-6234-enabled.xml
-index 38d716449d..890b5df060 100644
---- a/tests/cputestdata/x86_64-cpuid-Opteron-6234-enabled.xml
-+++ b/tests/cputestdata/x86_64-cpuid-Opteron-6234-enabled.xml
-@@ -4,4 +4,5 @@
-
-
-
-+
-
-diff --git a/tests/cputestdata/x86_64-cpuid-Opteron-6234-guest.xml b/tests/cputestdata/x86_64-cpuid-Opteron-6234-guest.xml
-index 6bd032bbcb..ee34ea8547 100644
---- a/tests/cputestdata/x86_64-cpuid-Opteron-6234-guest.xml
-+++ b/tests/cputestdata/x86_64-cpuid-Opteron-6234-guest.xml
-@@ -20,4 +20,14 @@
-
-
-
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-
-diff --git a/tests/cputestdata/x86_64-cpuid-Opteron-6234-host.xml b/tests/cputestdata/x86_64-cpuid-Opteron-6234-host.xml
-index ec670c612e..75595c02af 100644
---- a/tests/cputestdata/x86_64-cpuid-Opteron-6234-host.xml
-+++ b/tests/cputestdata/x86_64-cpuid-Opteron-6234-host.xml
-@@ -21,4 +21,14 @@
-
-
-
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-
-diff --git a/tests/cputestdata/x86_64-cpuid-Opteron-6234-json.xml b/tests/cputestdata/x86_64-cpuid-Opteron-6234-json.xml
-index 2ad3c98a5a..abfc8db290 100644
---- a/tests/cputestdata/x86_64-cpuid-Opteron-6234-json.xml
-+++ b/tests/cputestdata/x86_64-cpuid-Opteron-6234-json.xml
-@@ -12,6 +12,8 @@
-
-
-
-+
-+
-
-
-
-diff --git a/tests/cputestdata/x86_64-cpuid-Opteron-6282-guest.xml b/tests/cputestdata/x86_64-cpuid-Opteron-6282-guest.xml
-index 6bd032bbcb..ee34ea8547 100644
---- a/tests/cputestdata/x86_64-cpuid-Opteron-6282-guest.xml
-+++ b/tests/cputestdata/x86_64-cpuid-Opteron-6282-guest.xml
-@@ -20,4 +20,14 @@
-
-
-
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-
-diff --git a/tests/cputestdata/x86_64-cpuid-Opteron-6282-host.xml b/tests/cputestdata/x86_64-cpuid-Opteron-6282-host.xml
-index ec670c612e..75595c02af 100644
---- a/tests/cputestdata/x86_64-cpuid-Opteron-6282-host.xml
-+++ b/tests/cputestdata/x86_64-cpuid-Opteron-6282-host.xml
-@@ -21,4 +21,14 @@
-
-
-
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-
-diff --git a/tests/cputestdata/x86_64-cpuid-Phenom-B95-disabled.xml b/tests/cputestdata/x86_64-cpuid-Phenom-B95-disabled.xml
-index d8d4e8a5f9..3910eb6e57 100644
---- a/tests/cputestdata/x86_64-cpuid-Phenom-B95-disabled.xml
-+++ b/tests/cputestdata/x86_64-cpuid-Phenom-B95-disabled.xml
-@@ -3,4 +3,5 @@
-
-
-
-+
-
-diff --git a/tests/cputestdata/x86_64-cpuid-Phenom-B95-enabled.xml b/tests/cputestdata/x86_64-cpuid-Phenom-B95-enabled.xml
-index d15e625087..2a090a04d8 100644
---- a/tests/cputestdata/x86_64-cpuid-Phenom-B95-enabled.xml
-+++ b/tests/cputestdata/x86_64-cpuid-Phenom-B95-enabled.xml
-@@ -2,4 +2,5 @@
-
-
-
-+
-
-diff --git a/tests/cputestdata/x86_64-cpuid-Phenom-B95-guest.xml b/tests/cputestdata/x86_64-cpuid-Phenom-B95-guest.xml
-index d7a06108bc..ab0e99f97d 100644
---- a/tests/cputestdata/x86_64-cpuid-Phenom-B95-guest.xml
-+++ b/tests/cputestdata/x86_64-cpuid-Phenom-B95-guest.xml
-@@ -17,5 +17,9 @@
-
-
-
-+
-+
-+
-+
-
-
-diff --git a/tests/cputestdata/x86_64-cpuid-Phenom-B95-host.xml b/tests/cputestdata/x86_64-cpuid-Phenom-B95-host.xml
-index 127b047854..95875918c9 100644
---- a/tests/cputestdata/x86_64-cpuid-Phenom-B95-host.xml
-+++ b/tests/cputestdata/x86_64-cpuid-Phenom-B95-host.xml
-@@ -28,4 +28,8 @@
-
-
-
-+
-+
-+
-+
-
-diff --git a/tests/cputestdata/x86_64-cpuid-Phenom-B95-json.xml b/tests/cputestdata/x86_64-cpuid-Phenom-B95-json.xml
-index 7ce56ac8e7..d161709981 100644
---- a/tests/cputestdata/x86_64-cpuid-Phenom-B95-json.xml
-+++ b/tests/cputestdata/x86_64-cpuid-Phenom-B95-json.xml
-@@ -13,6 +13,8 @@
-
-
-
-+
-+
-
-
-
-diff --git a/tests/cputestdata/x86_64-cpuid-Ryzen-7-1800X-Eight-Core-disabled.xml b/tests/cputestdata/x86_64-cpuid-Ryzen-7-1800X-Eight-Core-disabled.xml
-index 0358ecf478..a63cd5c4b4 100644
---- a/tests/cputestdata/x86_64-cpuid-Ryzen-7-1800X-Eight-Core-disabled.xml
-+++ b/tests/cputestdata/x86_64-cpuid-Ryzen-7-1800X-Eight-Core-disabled.xml
-@@ -6,4 +6,5 @@
-
-
-
-+
-
-diff --git a/tests/cputestdata/x86_64-cpuid-Ryzen-7-1800X-Eight-Core-enabled.xml b/tests/cputestdata/x86_64-cpuid-Ryzen-7-1800X-Eight-Core-enabled.xml
-index a212679fba..f1a0ad3315 100644
---- a/tests/cputestdata/x86_64-cpuid-Ryzen-7-1800X-Eight-Core-enabled.xml
-+++ b/tests/cputestdata/x86_64-cpuid-Ryzen-7-1800X-Eight-Core-enabled.xml
-@@ -5,4 +5,5 @@
-
-
-
-+
-
-diff --git a/tests/cputestdata/x86_64-cpuid-Ryzen-7-1800X-Eight-Core-guest.xml b/tests/cputestdata/x86_64-cpuid-Ryzen-7-1800X-Eight-Core-guest.xml
-index 612e571609..0053913327 100644
---- a/tests/cputestdata/x86_64-cpuid-Ryzen-7-1800X-Eight-Core-guest.xml
-+++ b/tests/cputestdata/x86_64-cpuid-Ryzen-7-1800X-Eight-Core-guest.xml
-@@ -15,4 +15,14 @@
-
-
-
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-
-diff --git a/tests/cputestdata/x86_64-cpuid-Ryzen-7-1800X-Eight-Core-host.xml b/tests/cputestdata/x86_64-cpuid-Ryzen-7-1800X-Eight-Core-host.xml
-index 7498d924e2..7acab0a999 100644
---- a/tests/cputestdata/x86_64-cpuid-Ryzen-7-1800X-Eight-Core-host.xml
-+++ b/tests/cputestdata/x86_64-cpuid-Ryzen-7-1800X-Eight-Core-host.xml
-@@ -16,4 +16,14 @@
-
-
-
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-
-diff --git a/tests/cputestdata/x86_64-cpuid-Ryzen-7-1800X-Eight-Core-json.xml b/tests/cputestdata/x86_64-cpuid-Ryzen-7-1800X-Eight-Core-json.xml
-index 32064548c7..aecc335c1e 100644
---- a/tests/cputestdata/x86_64-cpuid-Ryzen-7-1800X-Eight-Core-json.xml
-+++ b/tests/cputestdata/x86_64-cpuid-Ryzen-7-1800X-Eight-Core-json.xml
-@@ -6,6 +6,8 @@
-
-
-
-+
-+
-
-
-
-diff --git a/tests/domaincapsdata/qemu_3.0.0-tcg.x86_64.xml b/tests/domaincapsdata/qemu_3.0.0-tcg.x86_64.xml
-index d369fa827a..d3211e7a13 100644
---- a/tests/domaincapsdata/qemu_3.0.0-tcg.x86_64.xml
-+++ b/tests/domaincapsdata/qemu_3.0.0-tcg.x86_64.xml
-@@ -43,6 +43,7 @@
-
-
-
-+
-
-
-
-diff --git a/tests/domaincapsdata/qemu_3.1.0-tcg.x86_64.xml b/tests/domaincapsdata/qemu_3.1.0-tcg.x86_64.xml
-index 444d90504e..756b28034e 100644
---- a/tests/domaincapsdata/qemu_3.1.0-tcg.x86_64.xml
-+++ b/tests/domaincapsdata/qemu_3.1.0-tcg.x86_64.xml
-@@ -43,6 +43,7 @@
-
-
-
-+
-
-
-
-diff --git a/tests/domaincapsdata/qemu_4.0.0-tcg.x86_64.xml b/tests/domaincapsdata/qemu_4.0.0-tcg.x86_64.xml
-index 463f0db390..0aa8aa18be 100644
---- a/tests/domaincapsdata/qemu_4.0.0-tcg.x86_64.xml
-+++ b/tests/domaincapsdata/qemu_4.0.0-tcg.x86_64.xml
-@@ -43,6 +43,7 @@
-
-
-
-+
-
-
-
-@@ -57,6 +58,7 @@
-
-
-
-+
-
-
- qemu64
-diff --git a/tests/domaincapsdata/qemu_4.1.0-tcg.x86_64.xml b/tests/domaincapsdata/qemu_4.1.0-tcg.x86_64.xml
-index 5bfd065986..d6265ce243 100644
---- a/tests/domaincapsdata/qemu_4.1.0-tcg.x86_64.xml
-+++ b/tests/domaincapsdata/qemu_4.1.0-tcg.x86_64.xml
-@@ -43,6 +43,7 @@
-
-
-
-+
-
-
-
-@@ -57,6 +58,7 @@
-
-
-
-+
-
-
- qemu64
-diff --git a/tests/domaincapsdata/qemu_4.2.0-tcg.x86_64.xml b/tests/domaincapsdata/qemu_4.2.0-tcg.x86_64.xml
-index c762b0b600..bcaf9afd6f 100644
---- a/tests/domaincapsdata/qemu_4.2.0-tcg.x86_64.xml
-+++ b/tests/domaincapsdata/qemu_4.2.0-tcg.x86_64.xml
-@@ -43,6 +43,7 @@
-
-
-
-+
-
-
-
-@@ -57,6 +58,7 @@
-
-
-
-+
-
-
- qemu64
-diff --git a/tests/domaincapsdata/qemu_5.0.0-tcg.x86_64.xml b/tests/domaincapsdata/qemu_5.0.0-tcg.x86_64.xml
-index 0a4bb16a89..eb456dea28 100644
---- a/tests/domaincapsdata/qemu_5.0.0-tcg.x86_64.xml
-+++ b/tests/domaincapsdata/qemu_5.0.0-tcg.x86_64.xml
-@@ -43,6 +43,7 @@
-
-
-
-+
-
-
-
-@@ -56,6 +57,7 @@
-
-
-
-+
-
-
- qemu64
-diff --git a/tests/qemuxml2argvdata/cpu-host-model-cmt.x86_64-4.0.0.args b/tests/qemuxml2argvdata/cpu-host-model-cmt.x86_64-4.0.0.args
-index b44dc2ec48..6ee7bed18e 100644
---- a/tests/qemuxml2argvdata/cpu-host-model-cmt.x86_64-4.0.0.args
-+++ b/tests/qemuxml2argvdata/cpu-host-model-cmt.x86_64-4.0.0.args
-@@ -14,9 +14,9 @@ QEMU_AUDIO_DRV=none \
- file=/tmp/lib/domain--1-QEMUGuest1/master-key.aes \
- -machine pc-i440fx-4.0,accel=tcg,usb=off,dump-guest-core=off \
- -cpu EPYC,acpi=on,ss=on,hypervisor=on,erms=on,mpx=on,pcommit=on,clwb=on,pku=on,\
--la57=on,3dnowext=on,3dnow=on,vme=off,fma=off,avx=off,f16c=off,rdrand=off,\
--avx2=off,rdseed=off,sha-ni=off,xsavec=off,fxsr_opt=off,misalignsse=off,\
--3dnowprefetch=off,osvw=off,topoext=off \
-+la57=on,3dnowext=on,3dnow=on,npt=on,vme=off,fma=off,avx=off,f16c=off,\
-+rdrand=off,avx2=off,rdseed=off,sha-ni=off,xsavec=off,fxsr_opt=off,\
-+misalignsse=off,3dnowprefetch=off,osvw=off,topoext=off,nrip-save=off \
- -m 214 \
- -overcommit mem-lock=off \
- -smp 6,sockets=6,cores=1,threads=1 \
---
-2.29.2
-
diff --git a/SOURCES/libvirt-cpu_map-Add-missing-x86-features-in-0x7-CPUID-leaf.patch b/SOURCES/libvirt-cpu_map-Add-missing-x86-features-in-0x7-CPUID-leaf.patch
deleted file mode 100644
index 42bfd9e..0000000
--- a/SOURCES/libvirt-cpu_map-Add-missing-x86-features-in-0x7-CPUID-leaf.patch
+++ /dev/null
@@ -1,107 +0,0 @@
-From cff220056e78bad15a8addf9739f8a556b7a6ea2 Mon Sep 17 00:00:00 2001
-Message-Id:
-From: Jiri Denemark
-Date: Thu, 8 Oct 2020 18:01:21 +0200
-Subject: [PATCH] cpu_map: Add missing x86 features in 0x7 CPUID leaf
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Signed-off-by: Jiri Denemark
-Reviewed-by: Daniel P. Berrangé
-(cherry picked from commit 6ea3bb19c6fed39429c95eb284487b849cb12e2a)
-
-https://bugzilla.redhat.com/show_bug.cgi?id=1861506
-
-Conflicts:
- tests/cputestdata/x86_64-cpuid-Ryzen-9-3900X-12-Core-enabled.xml
- tests/cputestdata/x86_64-cpuid-Ryzen-9-3900X-12-Core-guest.xml
- tests/cputestdata/x86_64-cpuid-Ryzen-9-3900X-12-Core-host.xml
- tests/cputestdata/x86_64-cpuid-Ryzen-9-3900X-12-Core-json.xml
- tests/domaincapsdata/qemu_5.1.0-q35.x86_64.xml
- tests/domaincapsdata/qemu_5.1.0.x86_64.xml
- - not present downstream
-
-Signed-off-by: Jiri Denemark
-Message-Id: <04da640b0fbbbcec9be63e552a3029f983bf879a.1602172344.git.jdenemar@redhat.com>
-Reviewed-by: Ján Tomko
----
- src/cpu_map/x86_features.xml | 12 ++++++++++++
- .../x86_64-cpuid-Ice-Lake-Server-disabled.xml | 2 +-
- .../x86_64-cpuid-Ice-Lake-Server-guest.xml | 1 +
- .../x86_64-cpuid-Ice-Lake-Server-host.xml | 1 +
- 4 files changed, 15 insertions(+), 1 deletion(-)
-
-diff --git a/src/cpu_map/x86_features.xml b/src/cpu_map/x86_features.xml
-index 8525ae0fa5..364e45fb32 100644
---- a/src/cpu_map/x86_features.xml
-+++ b/src/cpu_map/x86_features.xml
-@@ -286,6 +286,9 @@
-
-
-
-+
-+
-+
-
-
-
-@@ -310,9 +313,18 @@
-
-
-
-+
-+
-+
-
-
-
-+
-+
-+
-+
-+
-+
-
-
-
-diff --git a/tests/cputestdata/x86_64-cpuid-Ice-Lake-Server-disabled.xml b/tests/cputestdata/x86_64-cpuid-Ice-Lake-Server-disabled.xml
-index 62c6bad612..ce65579bcc 100644
---- a/tests/cputestdata/x86_64-cpuid-Ice-Lake-Server-disabled.xml
-+++ b/tests/cputestdata/x86_64-cpuid-Ice-Lake-Server-disabled.xml
-@@ -1,7 +1,7 @@
-
-
-
--
-+
-
-
-
-diff --git a/tests/cputestdata/x86_64-cpuid-Ice-Lake-Server-guest.xml b/tests/cputestdata/x86_64-cpuid-Ice-Lake-Server-guest.xml
-index 4676f3aa7d..9b75ace710 100644
---- a/tests/cputestdata/x86_64-cpuid-Ice-Lake-Server-guest.xml
-+++ b/tests/cputestdata/x86_64-cpuid-Ice-Lake-Server-guest.xml
-@@ -23,6 +23,7 @@
-
-
-
-+
-
-
-
-diff --git a/tests/cputestdata/x86_64-cpuid-Ice-Lake-Server-host.xml b/tests/cputestdata/x86_64-cpuid-Ice-Lake-Server-host.xml
-index 35b9e39629..efbf9d363b 100644
---- a/tests/cputestdata/x86_64-cpuid-Ice-Lake-Server-host.xml
-+++ b/tests/cputestdata/x86_64-cpuid-Ice-Lake-Server-host.xml
-@@ -24,6 +24,7 @@
-
-
-
-+
-
-
-
---
-2.29.2
-
diff --git a/SOURCES/libvirt-cpu_map-Add-missing-x86-features-in-0x80000008-CPUID-leaf.patch b/SOURCES/libvirt-cpu_map-Add-missing-x86-features-in-0x80000008-CPUID-leaf.patch
deleted file mode 100644
index b7020fc..0000000
--- a/SOURCES/libvirt-cpu_map-Add-missing-x86-features-in-0x80000008-CPUID-leaf.patch
+++ /dev/null
@@ -1,224 +0,0 @@
-From 1d6a30efa98fc0cf39725792efae1a151797589f Mon Sep 17 00:00:00 2001
-Message-Id: <1d6a30efa98fc0cf39725792efae1a151797589f@dist-git>
-From: Jiri Denemark
-Date: Thu, 8 Oct 2020 18:01:22 +0200
-Subject: [PATCH] cpu_map: Add missing x86 features in 0x80000008 CPUID leaf
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Signed-off-by: Jiri Denemark
-Reviewed-by: Daniel P. Berrangé
-(cherry picked from commit 892b7c70f66abc511e1251382c9183493024f253)
-
-https://bugzilla.redhat.com/show_bug.cgi?id=1861506
-
-Conflicts:
- tests/cputestdata/x86_64-cpuid-EPYC-7601-32-Core-disabled.xml
- tests/cputestdata/x86_64-cpuid-EPYC-7601-32-Core-ibpb-disabled.xml
- tests/cputestdata/x86_64-cpuid-Hygon-C86-7185-32-core-disabled.xml
- tests/cputestdata/x86_64-cpuid-Ryzen-7-1800X-Eight-Core-disabled.xml
- - commit df69263c26 (cpu_map: Request test files update when
- adding x86 features) not backported
-
- tests/cputestdata/x86_64-cpuid-Ryzen-9-3900X-12-Core-disabled.xml
- tests/cputestdata/x86_64-cpuid-Ryzen-9-3900X-12-Core-enabled.xml
- tests/cputestdata/x86_64-cpuid-Ryzen-9-3900X-12-Core-guest.xml
- tests/cputestdata/x86_64-cpuid-Ryzen-9-3900X-12-Core-host.xml
- tests/cputestdata/x86_64-cpuid-Ryzen-9-3900X-12-Core-json.xml
- tests/domaincapsdata/qemu_5.1.0-q35.x86_64.xml
- tests/domaincapsdata/qemu_5.1.0.x86_64.xml
- - not present downstream
-
-Signed-off-by: Jiri Denemark
-Message-Id: <27effeb5e12252982411796bd72e078d3afe49cb.1602172344.git.jdenemar@redhat.com>
-Reviewed-by: Ján Tomko
----
- src/cpu_map/x86_features.xml | 6 ++++++
- tests/cputestdata/x86_64-cpuid-Cooperlake-enabled.xml | 2 +-
- tests/cputestdata/x86_64-cpuid-Cooperlake-json.xml | 1 +
- .../cputestdata/x86_64-cpuid-EPYC-7601-32-Core-disabled.xml | 1 +
- tests/cputestdata/x86_64-cpuid-EPYC-7601-32-Core-guest.xml | 1 +
- tests/cputestdata/x86_64-cpuid-EPYC-7601-32-Core-host.xml | 1 +
- .../x86_64-cpuid-EPYC-7601-32-Core-ibpb-disabled.xml | 1 +
- .../x86_64-cpuid-EPYC-7601-32-Core-ibpb-guest.xml | 1 +
- .../x86_64-cpuid-EPYC-7601-32-Core-ibpb-host.xml | 1 +
- .../x86_64-cpuid-Hygon-C86-7185-32-core-disabled.xml | 1 +
- .../x86_64-cpuid-Hygon-C86-7185-32-core-guest.xml | 1 +
- .../x86_64-cpuid-Hygon-C86-7185-32-core-host.xml | 1 +
- .../x86_64-cpuid-Ryzen-7-1800X-Eight-Core-disabled.xml | 1 +
- .../x86_64-cpuid-Ryzen-7-1800X-Eight-Core-guest.xml | 1 +
- .../x86_64-cpuid-Ryzen-7-1800X-Eight-Core-host.xml | 1 +
- 15 files changed, 20 insertions(+), 1 deletion(-)
-
-diff --git a/src/cpu_map/x86_features.xml b/src/cpu_map/x86_features.xml
-index 364e45fb32..5265b2989b 100644
---- a/src/cpu_map/x86_features.xml
-+++ b/src/cpu_map/x86_features.xml
-@@ -486,12 +486,18 @@
-
-
-
-+
-+
-+
-
-
-
-
-
-
-+
-+
-+
-
-
-
-diff --git a/tests/cputestdata/x86_64-cpuid-Cooperlake-enabled.xml b/tests/cputestdata/x86_64-cpuid-Cooperlake-enabled.xml
-index 2d7f83c80f..1d91c3efa8 100644
---- a/tests/cputestdata/x86_64-cpuid-Cooperlake-enabled.xml
-+++ b/tests/cputestdata/x86_64-cpuid-Cooperlake-enabled.xml
-@@ -6,6 +6,6 @@
-
-
-
--
-+
-
-
-diff --git a/tests/cputestdata/x86_64-cpuid-Cooperlake-json.xml b/tests/cputestdata/x86_64-cpuid-Cooperlake-json.xml
-index fb319d547c..c89e0e5350 100644
---- a/tests/cputestdata/x86_64-cpuid-Cooperlake-json.xml
-+++ b/tests/cputestdata/x86_64-cpuid-Cooperlake-json.xml
-@@ -10,6 +10,7 @@
-
-
-
-+
-
-
-
-diff --git a/tests/cputestdata/x86_64-cpuid-EPYC-7601-32-Core-disabled.xml b/tests/cputestdata/x86_64-cpuid-EPYC-7601-32-Core-disabled.xml
-index 747d725acf..c26c9c7be3 100644
---- a/tests/cputestdata/x86_64-cpuid-EPYC-7601-32-Core-disabled.xml
-+++ b/tests/cputestdata/x86_64-cpuid-EPYC-7601-32-Core-disabled.xml
-@@ -4,4 +4,5 @@
-
-
-
-+
-
-diff --git a/tests/cputestdata/x86_64-cpuid-EPYC-7601-32-Core-guest.xml b/tests/cputestdata/x86_64-cpuid-EPYC-7601-32-Core-guest.xml
-index b75196aac5..612e571609 100644
---- a/tests/cputestdata/x86_64-cpuid-EPYC-7601-32-Core-guest.xml
-+++ b/tests/cputestdata/x86_64-cpuid-EPYC-7601-32-Core-guest.xml
-@@ -14,4 +14,5 @@
-
-
-
-+
-
-diff --git a/tests/cputestdata/x86_64-cpuid-EPYC-7601-32-Core-host.xml b/tests/cputestdata/x86_64-cpuid-EPYC-7601-32-Core-host.xml
-index fd84b526db..7498d924e2 100644
---- a/tests/cputestdata/x86_64-cpuid-EPYC-7601-32-Core-host.xml
-+++ b/tests/cputestdata/x86_64-cpuid-EPYC-7601-32-Core-host.xml
-@@ -15,4 +15,5 @@
-
-
-
-+
-
-diff --git a/tests/cputestdata/x86_64-cpuid-EPYC-7601-32-Core-ibpb-disabled.xml b/tests/cputestdata/x86_64-cpuid-EPYC-7601-32-Core-ibpb-disabled.xml
-index af43fca98d..a7f4fa3f01 100644
---- a/tests/cputestdata/x86_64-cpuid-EPYC-7601-32-Core-ibpb-disabled.xml
-+++ b/tests/cputestdata/x86_64-cpuid-EPYC-7601-32-Core-ibpb-disabled.xml
-@@ -4,4 +4,5 @@
-
-
-
-+
-
-diff --git a/tests/cputestdata/x86_64-cpuid-EPYC-7601-32-Core-ibpb-guest.xml b/tests/cputestdata/x86_64-cpuid-EPYC-7601-32-Core-ibpb-guest.xml
-index 5044c8cc35..96fdea306f 100644
---- a/tests/cputestdata/x86_64-cpuid-EPYC-7601-32-Core-ibpb-guest.xml
-+++ b/tests/cputestdata/x86_64-cpuid-EPYC-7601-32-Core-ibpb-guest.xml
-@@ -14,5 +14,6 @@
-
-
-
-+
-
-
-diff --git a/tests/cputestdata/x86_64-cpuid-EPYC-7601-32-Core-ibpb-host.xml b/tests/cputestdata/x86_64-cpuid-EPYC-7601-32-Core-ibpb-host.xml
-index d7d5ce88d9..4fff74f3aa 100644
---- a/tests/cputestdata/x86_64-cpuid-EPYC-7601-32-Core-ibpb-host.xml
-+++ b/tests/cputestdata/x86_64-cpuid-EPYC-7601-32-Core-ibpb-host.xml
-@@ -15,4 +15,5 @@
-
-
-
-+
-
-diff --git a/tests/cputestdata/x86_64-cpuid-Hygon-C86-7185-32-core-disabled.xml b/tests/cputestdata/x86_64-cpuid-Hygon-C86-7185-32-core-disabled.xml
-index 747d725acf..c26c9c7be3 100644
---- a/tests/cputestdata/x86_64-cpuid-Hygon-C86-7185-32-core-disabled.xml
-+++ b/tests/cputestdata/x86_64-cpuid-Hygon-C86-7185-32-core-disabled.xml
-@@ -4,4 +4,5 @@
-
-
-
-+
-
-diff --git a/tests/cputestdata/x86_64-cpuid-Hygon-C86-7185-32-core-guest.xml b/tests/cputestdata/x86_64-cpuid-Hygon-C86-7185-32-core-guest.xml
-index 75c71233c6..844b8b9d4f 100644
---- a/tests/cputestdata/x86_64-cpuid-Hygon-C86-7185-32-core-guest.xml
-+++ b/tests/cputestdata/x86_64-cpuid-Hygon-C86-7185-32-core-guest.xml
-@@ -14,4 +14,5 @@
-
-
-
-+
-
-diff --git a/tests/cputestdata/x86_64-cpuid-Hygon-C86-7185-32-core-host.xml b/tests/cputestdata/x86_64-cpuid-Hygon-C86-7185-32-core-host.xml
-index 82f28067c4..3d1b143eba 100644
---- a/tests/cputestdata/x86_64-cpuid-Hygon-C86-7185-32-core-host.xml
-+++ b/tests/cputestdata/x86_64-cpuid-Hygon-C86-7185-32-core-host.xml
-@@ -15,4 +15,5 @@
-
-
-
-+
-
-diff --git a/tests/cputestdata/x86_64-cpuid-Ryzen-7-1800X-Eight-Core-disabled.xml b/tests/cputestdata/x86_64-cpuid-Ryzen-7-1800X-Eight-Core-disabled.xml
-index b085050618..0358ecf478 100644
---- a/tests/cputestdata/x86_64-cpuid-Ryzen-7-1800X-Eight-Core-disabled.xml
-+++ b/tests/cputestdata/x86_64-cpuid-Ryzen-7-1800X-Eight-Core-disabled.xml
-@@ -5,4 +5,5 @@
-
-
-
-+
-
-diff --git a/tests/cputestdata/x86_64-cpuid-Ryzen-7-1800X-Eight-Core-guest.xml b/tests/cputestdata/x86_64-cpuid-Ryzen-7-1800X-Eight-Core-guest.xml
-index b75196aac5..612e571609 100644
---- a/tests/cputestdata/x86_64-cpuid-Ryzen-7-1800X-Eight-Core-guest.xml
-+++ b/tests/cputestdata/x86_64-cpuid-Ryzen-7-1800X-Eight-Core-guest.xml
-@@ -14,4 +14,5 @@
-
-
-
-+
-
-diff --git a/tests/cputestdata/x86_64-cpuid-Ryzen-7-1800X-Eight-Core-host.xml b/tests/cputestdata/x86_64-cpuid-Ryzen-7-1800X-Eight-Core-host.xml
-index fd84b526db..7498d924e2 100644
---- a/tests/cputestdata/x86_64-cpuid-Ryzen-7-1800X-Eight-Core-host.xml
-+++ b/tests/cputestdata/x86_64-cpuid-Ryzen-7-1800X-Eight-Core-host.xml
-@@ -15,4 +15,5 @@
-
-
-
-+
-
---
-2.29.2
-
diff --git a/SOURCES/libvirt-cpu_map-Add-more-noTSX-x86-CPU-models.patch b/SOURCES/libvirt-cpu_map-Add-more-noTSX-x86-CPU-models.patch
deleted file mode 100644
index 5815a88..0000000
--- a/SOURCES/libvirt-cpu_map-Add-more-noTSX-x86-CPU-models.patch
+++ /dev/null
@@ -1,831 +0,0 @@
-From 59287d64100517e89dbd3a88af6fec4755ceab42 Mon Sep 17 00:00:00 2001
-Message-Id: <59287d64100517e89dbd3a88af6fec4755ceab42@dist-git>
-From: Christian Ehrhardt
-Date: Tue, 26 May 2020 10:58:55 +0200
-Subject: [PATCH] cpu_map: Add more -noTSX x86 CPU models
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-One of the mitigation methods for TAA[1] is to disable TSX
-support on the host system. Linux added a mechanism to disable
-TSX globally through the kernel command line, and many Linux
-distributions now default to tsx=off. This makes existing CPU
-models that have HLE and RTM enabled not usable anymore.
-
-Add new versions of all CPU models that have the HLE and RTM
-features enabled, that can be used when TSX is disabled in the
-host system.
-
-On systems disabling the features without those types defined
-in cpu-maps users end up without modern CPU types in the list
-of usable CPUs to use in the likes of virsh domcapabilities
-or tools higher in the stack like virt-manager.
-
-This adds:
--Cascadelake-Server-noTSX
--Icelake-Client-noTSX
--Icelake-Server-noTSX
--Skylake-Server-noTSX-IBRS
--Skylake-Client-noTSX-IBRS
-
-Introduced in QEMU by commit v4.2.0-rc2-3-g9ab2237f19 (function)
- and commit v4.2.0-rc2-4-g02fa60d101 (names)
-
-References:
-
- [1] TAA, TSX asynchronous Abort:
- https://software.intel.com/security-software-guidance/insights/deep-dive-intel-transactional-synchronization-extensions-intel-tsx-asynchronous-abort
- https://www.kernel.org/doc/html/latest/admin-guide/hw-vuln/tsx_async_abort.html
-
-Fixes: https://bugs.launchpad.net/ubuntu/+source/libvirt/+bug/1853200
-
-Signed-off-by: Christian Ehrhardt
-Message-Id: <20200310104806.2723-2-christian.ehrhardt@canonical.com>
-Reviewed-by: Jiri Denemark
-(cherry picked from commit dd17a4eba8618aeb0144f268f2222f65a85425fc)
-
-https://bugzilla.redhat.com/show_bug.cgi?id=1840008
-
-Signed-off-by: Jiri Denemark
-Message-Id:
-Reviewed-by: Ján Tomko
----
- src/cpu_map/Makefile.inc.am | 5 ++
- src/cpu_map/index.xml | 5 ++
- src/cpu_map/x86_Cascadelake-Server-noTSX.xml | 78 ++++++++++++++++
- src/cpu_map/x86_Icelake-Client-noTSX.xml | 81 +++++++++++++++++
- src/cpu_map/x86_Icelake-Server-noTSX.xml | 90 +++++++++++++++++++
- src/cpu_map/x86_Skylake-Client-noTSX-IBRS.xml | 73 +++++++++++++++
- src/cpu_map/x86_Skylake-Server-noTSX-IBRS.xml | 75 ++++++++++++++++
- .../x86_64-cpuid-Core-i7-8550U-guest.xml | 4 +-
- .../x86_64-cpuid-Core-i7-8550U-host.xml | 11 +--
- .../x86_64-cpuid-Core-i7-8550U-json.xml | 4 +-
- .../domaincapsdata/qemu_4.2.0-q35.x86_64.xml | 5 ++
- .../domaincapsdata/qemu_4.2.0-tcg.x86_64.xml | 5 ++
- tests/domaincapsdata/qemu_4.2.0.x86_64.xml | 5 ++
- .../domaincapsdata/qemu_5.0.0-q35.x86_64.xml | 5 ++
- .../domaincapsdata/qemu_5.0.0-tcg.x86_64.xml | 5 ++
- tests/domaincapsdata/qemu_5.0.0.x86_64.xml | 5 ++
- 16 files changed, 440 insertions(+), 16 deletions(-)
- create mode 100644 src/cpu_map/x86_Cascadelake-Server-noTSX.xml
- create mode 100644 src/cpu_map/x86_Icelake-Client-noTSX.xml
- create mode 100644 src/cpu_map/x86_Icelake-Server-noTSX.xml
- create mode 100644 src/cpu_map/x86_Skylake-Client-noTSX-IBRS.xml
- create mode 100644 src/cpu_map/x86_Skylake-Server-noTSX-IBRS.xml
-
-diff --git a/src/cpu_map/Makefile.inc.am b/src/cpu_map/Makefile.inc.am
-index e935178304..be64c9a0d4 100644
---- a/src/cpu_map/Makefile.inc.am
-+++ b/src/cpu_map/Makefile.inc.am
-@@ -20,6 +20,7 @@ cpumap_DATA = \
- cpu_map/x86_Broadwell-noTSX.xml \
- cpu_map/x86_Broadwell-noTSX-IBRS.xml \
- cpu_map/x86_Cascadelake-Server.xml \
-+ cpu_map/x86_Cascadelake-Server-noTSX.xml \
- cpu_map/x86_Conroe.xml \
- cpu_map/x86_core2duo.xml \
- cpu_map/x86_coreduo.xml \
-@@ -33,7 +34,9 @@ cpumap_DATA = \
- cpu_map/x86_Haswell-noTSX.xml \
- cpu_map/x86_Haswell-noTSX-IBRS.xml \
- cpu_map/x86_Icelake-Client.xml \
-+ cpu_map/x86_Icelake-Client-noTSX.xml \
- cpu_map/x86_Icelake-Server.xml \
-+ cpu_map/x86_Icelake-Server-noTSX.xml \
- cpu_map/x86_IvyBridge.xml \
- cpu_map/x86_IvyBridge-IBRS.xml \
- cpu_map/x86_kvm32.xml \
-@@ -58,8 +61,10 @@ cpumap_DATA = \
- cpu_map/x86_SandyBridge-IBRS.xml \
- cpu_map/x86_Skylake-Client.xml \
- cpu_map/x86_Skylake-Client-IBRS.xml \
-+ cpu_map/x86_Skylake-Client-noTSX-IBRS.xml \
- cpu_map/x86_Skylake-Server.xml \
- cpu_map/x86_Skylake-Server-IBRS.xml \
-+ cpu_map/x86_Skylake-Server-noTSX-IBRS.xml \
- cpu_map/x86_Westmere.xml \
- cpu_map/x86_Westmere-IBRS.xml \
- $(NULL)
-diff --git a/src/cpu_map/index.xml b/src/cpu_map/index.xml
-index ffb2f6fe1b..50b030de29 100644
---- a/src/cpu_map/index.xml
-+++ b/src/cpu_map/index.xml
-@@ -44,11 +44,16 @@
-
-
-
-+
-
-
-+
-
-+
-
-+
-
-+
-
-
-
-diff --git a/src/cpu_map/x86_Cascadelake-Server-noTSX.xml b/src/cpu_map/x86_Cascadelake-Server-noTSX.xml
-new file mode 100644
-index 0000000000..d24415ebce
---- /dev/null
-+++ b/src/cpu_map/x86_Cascadelake-Server-noTSX.xml
-@@ -0,0 +1,78 @@
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-diff --git a/src/cpu_map/x86_Icelake-Client-noTSX.xml b/src/cpu_map/x86_Icelake-Client-noTSX.xml
-new file mode 100644
-index 0000000000..cd51881f40
---- /dev/null
-+++ b/src/cpu_map/x86_Icelake-Client-noTSX.xml
-@@ -0,0 +1,81 @@
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-diff --git a/src/cpu_map/x86_Icelake-Server-noTSX.xml b/src/cpu_map/x86_Icelake-Server-noTSX.xml
-new file mode 100644
-index 0000000000..538c656712
---- /dev/null
-+++ b/src/cpu_map/x86_Icelake-Server-noTSX.xml
-@@ -0,0 +1,90 @@
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-diff --git a/src/cpu_map/x86_Skylake-Client-noTSX-IBRS.xml b/src/cpu_map/x86_Skylake-Client-noTSX-IBRS.xml
-new file mode 100644
-index 0000000000..3d2976692f
---- /dev/null
-+++ b/src/cpu_map/x86_Skylake-Client-noTSX-IBRS.xml
-@@ -0,0 +1,73 @@
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-diff --git a/src/cpu_map/x86_Skylake-Server-noTSX-IBRS.xml b/src/cpu_map/x86_Skylake-Server-noTSX-IBRS.xml
-new file mode 100644
-index 0000000000..455a072119
---- /dev/null
-+++ b/src/cpu_map/x86_Skylake-Server-noTSX-IBRS.xml
-@@ -0,0 +1,75 @@
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-diff --git a/tests/cputestdata/x86_64-cpuid-Core-i7-8550U-guest.xml b/tests/cputestdata/x86_64-cpuid-Core-i7-8550U-guest.xml
-index 92404e4d03..e03c4a06ba 100644
---- a/tests/cputestdata/x86_64-cpuid-Core-i7-8550U-guest.xml
-+++ b/tests/cputestdata/x86_64-cpuid-Core-i7-8550U-guest.xml
-@@ -1,5 +1,5 @@
-
-- Skylake-Client-IBRS
-+ Skylake-Client-noTSX-IBRS
- Intel
-
-
-@@ -26,6 +26,4 @@
-
-
-
--
--
-
-diff --git a/tests/cputestdata/x86_64-cpuid-Core-i7-8550U-host.xml b/tests/cputestdata/x86_64-cpuid-Core-i7-8550U-host.xml
-index 808a8ff969..7f6fe2eac3 100644
---- a/tests/cputestdata/x86_64-cpuid-Core-i7-8550U-host.xml
-+++ b/tests/cputestdata/x86_64-cpuid-Core-i7-8550U-host.xml
-@@ -1,8 +1,7 @@
-
- x86_64
-- Broadwell-noTSX-IBRS
-+ Skylake-Client-noTSX-IBRS
- Intel
--
-
-
-
-@@ -18,22 +17,14 @@
-
-
-
--
--
--
-
--
-
-
-
-
-
--
--
--
-
-
--
-
-
-
-diff --git a/tests/cputestdata/x86_64-cpuid-Core-i7-8550U-json.xml b/tests/cputestdata/x86_64-cpuid-Core-i7-8550U-json.xml
-index 645c0934c2..3d8e6775bf 100644
---- a/tests/cputestdata/x86_64-cpuid-Core-i7-8550U-json.xml
-+++ b/tests/cputestdata/x86_64-cpuid-Core-i7-8550U-json.xml
-@@ -1,5 +1,5 @@
-
-- Skylake-Client-IBRS
-+ Skylake-Client-noTSX-IBRS
- Intel
-
-
-@@ -14,6 +14,4 @@
-
-
-
--
--
-
-diff --git a/tests/domaincapsdata/qemu_4.2.0-q35.x86_64.xml b/tests/domaincapsdata/qemu_4.2.0-q35.x86_64.xml
-index c4c6bfb564..e257657981 100644
---- a/tests/domaincapsdata/qemu_4.2.0-q35.x86_64.xml
-+++ b/tests/domaincapsdata/qemu_4.2.0-q35.x86_64.xml
-@@ -63,8 +63,10 @@
- athlon
- Westmere-IBRS
- Westmere
-+ Skylake-Server-noTSX-IBRS
- Skylake-Server-IBRS
- Skylake-Server
-+ Skylake-Client-noTSX-IBRS
- Skylake-Client-IBRS
- Skylake-Client
- SandyBridge-IBRS
-@@ -79,7 +81,9 @@
- Nehalem
- IvyBridge-IBRS
- IvyBridge
-+ Icelake-Server-noTSX
- Icelake-Server
-+ Icelake-Client-noTSX
- Icelake-Client
- Haswell-noTSX-IBRS
- Haswell-noTSX
-@@ -89,6 +93,7 @@
- EPYC
- Dhyana
- Conroe
-+ Cascadelake-Server-noTSX
- Cascadelake-Server
- Broadwell-noTSX-IBRS
- Broadwell-noTSX
-diff --git a/tests/domaincapsdata/qemu_4.2.0-tcg.x86_64.xml b/tests/domaincapsdata/qemu_4.2.0-tcg.x86_64.xml
-index a7f8d9c5ee..c762b0b600 100644
---- a/tests/domaincapsdata/qemu_4.2.0-tcg.x86_64.xml
-+++ b/tests/domaincapsdata/qemu_4.2.0-tcg.x86_64.xml
-@@ -73,8 +73,10 @@
- athlon
- Westmere-IBRS
- Westmere
-+ Skylake-Server-noTSX-IBRS
- Skylake-Server-IBRS
- Skylake-Server
-+ Skylake-Client-noTSX-IBRS
- Skylake-Client-IBRS
- Skylake-Client
- SandyBridge-IBRS
-@@ -89,7 +91,9 @@
- Nehalem
- IvyBridge-IBRS
- IvyBridge
-+ Icelake-Server-noTSX
- Icelake-Server
-+ Icelake-Client-noTSX
- Icelake-Client
- Haswell-noTSX-IBRS
- Haswell-noTSX
-@@ -99,6 +103,7 @@
- EPYC
- Dhyana
- Conroe
-+ Cascadelake-Server-noTSX
- Cascadelake-Server
- Broadwell-noTSX-IBRS
- Broadwell-noTSX
-diff --git a/tests/domaincapsdata/qemu_4.2.0.x86_64.xml b/tests/domaincapsdata/qemu_4.2.0.x86_64.xml
-index f0e0f182a4..2918ba9715 100644
---- a/tests/domaincapsdata/qemu_4.2.0.x86_64.xml
-+++ b/tests/domaincapsdata/qemu_4.2.0.x86_64.xml
-@@ -62,8 +62,10 @@
- athlon
- Westmere-IBRS
- Westmere
-+ Skylake-Server-noTSX-IBRS
- Skylake-Server-IBRS
- Skylake-Server
-+ Skylake-Client-noTSX-IBRS
- Skylake-Client-IBRS
- Skylake-Client
- SandyBridge-IBRS
-@@ -78,7 +80,9 @@
- Nehalem
- IvyBridge-IBRS
- IvyBridge
-+ Icelake-Server-noTSX
- Icelake-Server
-+ Icelake-Client-noTSX
- Icelake-Client
- Haswell-noTSX-IBRS
- Haswell-noTSX
-@@ -88,6 +92,7 @@
- EPYC
- Dhyana
- Conroe
-+ Cascadelake-Server-noTSX
- Cascadelake-Server
- Broadwell-noTSX-IBRS
- Broadwell-noTSX
-diff --git a/tests/domaincapsdata/qemu_5.0.0-q35.x86_64.xml b/tests/domaincapsdata/qemu_5.0.0-q35.x86_64.xml
-index b635d573ef..7b2a929738 100644
---- a/tests/domaincapsdata/qemu_5.0.0-q35.x86_64.xml
-+++ b/tests/domaincapsdata/qemu_5.0.0-q35.x86_64.xml
-@@ -63,8 +63,10 @@
- athlon
- Westmere-IBRS
- Westmere
-+ Skylake-Server-noTSX-IBRS
- Skylake-Server-IBRS
- Skylake-Server
-+ Skylake-Client-noTSX-IBRS
- Skylake-Client-IBRS
- Skylake-Client
- SandyBridge-IBRS
-@@ -79,7 +81,9 @@
- Nehalem
- IvyBridge-IBRS
- IvyBridge
-+ Icelake-Server-noTSX
- Icelake-Server
-+ Icelake-Client-noTSX
- Icelake-Client
- Haswell-noTSX-IBRS
- Haswell-noTSX
-@@ -89,6 +93,7 @@
- EPYC
- Dhyana
- Conroe
-+ Cascadelake-Server-noTSX
- Cascadelake-Server
- Broadwell-noTSX-IBRS
- Broadwell-noTSX
-diff --git a/tests/domaincapsdata/qemu_5.0.0-tcg.x86_64.xml b/tests/domaincapsdata/qemu_5.0.0-tcg.x86_64.xml
-index 0fbc632267..d634803b29 100644
---- a/tests/domaincapsdata/qemu_5.0.0-tcg.x86_64.xml
-+++ b/tests/domaincapsdata/qemu_5.0.0-tcg.x86_64.xml
-@@ -72,8 +72,10 @@
- athlon
- Westmere-IBRS
- Westmere
-+ Skylake-Server-noTSX-IBRS
- Skylake-Server-IBRS
- Skylake-Server
-+ Skylake-Client-noTSX-IBRS
- Skylake-Client-IBRS
- Skylake-Client
- SandyBridge-IBRS
-@@ -88,7 +90,9 @@
- Nehalem
- IvyBridge-IBRS
- IvyBridge
-+ Icelake-Server-noTSX
- Icelake-Server
-+ Icelake-Client-noTSX
- Icelake-Client
- Haswell-noTSX-IBRS
- Haswell-noTSX
-@@ -98,6 +102,7 @@
- EPYC
- Dhyana
- Conroe
-+ Cascadelake-Server-noTSX
- Cascadelake-Server
- Broadwell-noTSX-IBRS
- Broadwell-noTSX
-diff --git a/tests/domaincapsdata/qemu_5.0.0.x86_64.xml b/tests/domaincapsdata/qemu_5.0.0.x86_64.xml
-index 27f76a8a5e..7609d49020 100644
---- a/tests/domaincapsdata/qemu_5.0.0.x86_64.xml
-+++ b/tests/domaincapsdata/qemu_5.0.0.x86_64.xml
-@@ -62,8 +62,10 @@
- athlon
- Westmere-IBRS
- Westmere
-+ Skylake-Server-noTSX-IBRS
- Skylake-Server-IBRS
- Skylake-Server
-+ Skylake-Client-noTSX-IBRS
- Skylake-Client-IBRS
- Skylake-Client
- SandyBridge-IBRS
-@@ -78,7 +80,9 @@
- Nehalem
- IvyBridge-IBRS
- IvyBridge
-+ Icelake-Server-noTSX
- Icelake-Server
-+ Icelake-Client-noTSX
- Icelake-Client
- Haswell-noTSX-IBRS
- Haswell-noTSX
-@@ -88,6 +92,7 @@
- EPYC
- Dhyana
- Conroe
-+ Cascadelake-Server-noTSX
- Cascadelake-Server
- Broadwell-noTSX-IBRS
- Broadwell-noTSX
---
-2.26.2
-
diff --git a/SOURCES/libvirt-cpu_map-Add-pschange-mc-no-bit-in-IA32_ARCH_CAPABILITIES-MSR.patch b/SOURCES/libvirt-cpu_map-Add-pschange-mc-no-bit-in-IA32_ARCH_CAPABILITIES-MSR.patch
deleted file mode 100644
index 82e7e94..0000000
--- a/SOURCES/libvirt-cpu_map-Add-pschange-mc-no-bit-in-IA32_ARCH_CAPABILITIES-MSR.patch
+++ /dev/null
@@ -1,212 +0,0 @@
-From 7d0790fb5061cb956390ce5f7a2b92ac9702ada6 Mon Sep 17 00:00:00 2001
-Message-Id: <7d0790fb5061cb956390ce5f7a2b92ac9702ada6@dist-git>
-From: Jiri Denemark
-Date: Tue, 26 May 2020 10:59:39 +0200
-Subject: [PATCH] cpu_map: Add pschange-mc-no bit in IA32_ARCH_CAPABILITIES MSR
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Signed-off-by: Jiri Denemark
-Reviewed-by: Pavel Hrdina
-(cherry picked from commit 12eb0c9496e802bad9e5ec71cde888b8fdb1b0b4)
-
-https://bugzilla.redhat.com/show_bug.cgi?id=1781878
-
-Conflicts:
- tests/cputestdata/x86_64-cpuid-Ryzen-9-3900X-12-Core-enabled.xml
- tests/cputestdata/x86_64-cpuid-Ryzen-9-3900X-12-Core-guest.xml
- tests/cputestdata/x86_64-cpuid-Ryzen-9-3900X-12-Core-host.xml
- tests/cputestdata/x86_64-cpuid-Ryzen-9-3900X-12-Core-json.xml
- tests/domaincapsdata/qemu_5.1.0-q35.x86_64.xml
- tests/domaincapsdata/qemu_5.1.0.x86_64.xml
- - test data files do not exist downstream
-
-Signed-off-by: Jiri Denemark
-Message-Id:
-Reviewed-by: Ján Tomko
----
- src/cpu_map/x86_features.xml | 3 +++
- tests/cputestdata/x86_64-cpuid-Cooperlake-guest.xml | 1 +
- tests/cputestdata/x86_64-cpuid-Cooperlake-host.xml | 1 +
- tests/cputestdata/x86_64-cpuid-Cooperlake-json.xml | 1 +
- tests/cputestdata/x86_64-cpuid-Core-i7-8550U-enabled.xml | 2 +-
- tests/cputestdata/x86_64-cpuid-Core-i7-8550U-guest.xml | 1 +
- tests/cputestdata/x86_64-cpuid-Core-i7-8550U-host.xml | 1 +
- tests/cputestdata/x86_64-cpuid-Core-i7-8550U-json.xml | 1 +
- tests/cputestdata/x86_64-cpuid-Xeon-Platinum-9242-enabled.xml | 2 +-
- tests/cputestdata/x86_64-cpuid-Xeon-Platinum-9242-json.xml | 1 +
- tests/domaincapsdata/qemu_4.2.0-q35.x86_64.xml | 1 +
- tests/domaincapsdata/qemu_4.2.0.x86_64.xml | 1 +
- tests/domaincapsdata/qemu_5.0.0-q35.x86_64.xml | 1 +
- tests/domaincapsdata/qemu_5.0.0.x86_64.xml | 1 +
- 14 files changed, 16 insertions(+), 2 deletions(-)
-
-diff --git a/src/cpu_map/x86_features.xml b/src/cpu_map/x86_features.xml
-index 2c4c29dc99..8525ae0fa5 100644
---- a/src/cpu_map/x86_features.xml
-+++ b/src/cpu_map/x86_features.xml
-@@ -509,6 +509,9 @@
-
-
-
-+
-+
-+
-
-
-
-diff --git a/tests/cputestdata/x86_64-cpuid-Cooperlake-guest.xml b/tests/cputestdata/x86_64-cpuid-Cooperlake-guest.xml
-index b5137e3c03..db5598740c 100644
---- a/tests/cputestdata/x86_64-cpuid-Cooperlake-guest.xml
-+++ b/tests/cputestdata/x86_64-cpuid-Cooperlake-guest.xml
-@@ -35,6 +35,7 @@
-
-
-
-+
-
-
-
-diff --git a/tests/cputestdata/x86_64-cpuid-Cooperlake-host.xml b/tests/cputestdata/x86_64-cpuid-Cooperlake-host.xml
-index 52b352f4f1..6926b7c975 100644
---- a/tests/cputestdata/x86_64-cpuid-Cooperlake-host.xml
-+++ b/tests/cputestdata/x86_64-cpuid-Cooperlake-host.xml
-@@ -36,6 +36,7 @@
-
-
-
-+
-
-
-
-diff --git a/tests/cputestdata/x86_64-cpuid-Cooperlake-json.xml b/tests/cputestdata/x86_64-cpuid-Cooperlake-json.xml
-index e323d6205e..fc52805b2f 100644
---- a/tests/cputestdata/x86_64-cpuid-Cooperlake-json.xml
-+++ b/tests/cputestdata/x86_64-cpuid-Cooperlake-json.xml
-@@ -18,6 +18,7 @@
-
-
-
-+
-
-
-
-diff --git a/tests/cputestdata/x86_64-cpuid-Core-i7-8550U-enabled.xml b/tests/cputestdata/x86_64-cpuid-Core-i7-8550U-enabled.xml
-index 6c480eeacf..57f8ebabba 100644
---- a/tests/cputestdata/x86_64-cpuid-Core-i7-8550U-enabled.xml
-+++ b/tests/cputestdata/x86_64-cpuid-Core-i7-8550U-enabled.xml
-@@ -5,5 +5,5 @@
-
-
-
--
-+
-
-diff --git a/tests/cputestdata/x86_64-cpuid-Core-i7-8550U-guest.xml b/tests/cputestdata/x86_64-cpuid-Core-i7-8550U-guest.xml
-index 92404e4d03..ed06515e99 100644
---- a/tests/cputestdata/x86_64-cpuid-Core-i7-8550U-guest.xml
-+++ b/tests/cputestdata/x86_64-cpuid-Core-i7-8550U-guest.xml
-@@ -26,6 +26,7 @@
-
-
-
-+
-
-
-
-diff --git a/tests/cputestdata/x86_64-cpuid-Core-i7-8550U-host.xml b/tests/cputestdata/x86_64-cpuid-Core-i7-8550U-host.xml
-index 7f6fe2eac3..7681c94649 100644
---- a/tests/cputestdata/x86_64-cpuid-Core-i7-8550U-host.xml
-+++ b/tests/cputestdata/x86_64-cpuid-Core-i7-8550U-host.xml
-@@ -27,4 +27,5 @@
-
-
-
-+
-
-diff --git a/tests/cputestdata/x86_64-cpuid-Core-i7-8550U-json.xml b/tests/cputestdata/x86_64-cpuid-Core-i7-8550U-json.xml
-index 645c0934c2..4774d39c7e 100644
---- a/tests/cputestdata/x86_64-cpuid-Core-i7-8550U-json.xml
-+++ b/tests/cputestdata/x86_64-cpuid-Core-i7-8550U-json.xml
-@@ -14,6 +14,7 @@
-
-
-
-+
-
-
-
-diff --git a/tests/cputestdata/x86_64-cpuid-Xeon-Platinum-9242-enabled.xml b/tests/cputestdata/x86_64-cpuid-Xeon-Platinum-9242-enabled.xml
-index 43c3a93a16..cd082feffe 100644
---- a/tests/cputestdata/x86_64-cpuid-Xeon-Platinum-9242-enabled.xml
-+++ b/tests/cputestdata/x86_64-cpuid-Xeon-Platinum-9242-enabled.xml
-@@ -6,5 +6,5 @@
-
-
-
--
-+
-
-diff --git a/tests/cputestdata/x86_64-cpuid-Xeon-Platinum-9242-json.xml b/tests/cputestdata/x86_64-cpuid-Xeon-Platinum-9242-json.xml
-index 36e95029be..10c256ee1e 100644
---- a/tests/cputestdata/x86_64-cpuid-Xeon-Platinum-9242-json.xml
-+++ b/tests/cputestdata/x86_64-cpuid-Xeon-Platinum-9242-json.xml
-@@ -17,5 +17,6 @@
-
-
-
-+
-
-
-diff --git a/tests/domaincapsdata/qemu_4.2.0-q35.x86_64.xml b/tests/domaincapsdata/qemu_4.2.0-q35.x86_64.xml
-index e257657981..4d9616cb69 100644
---- a/tests/domaincapsdata/qemu_4.2.0-q35.x86_64.xml
-+++ b/tests/domaincapsdata/qemu_4.2.0-q35.x86_64.xml
-@@ -47,6 +47,7 @@
-
-
-
-+
-
-
- qemu64
-diff --git a/tests/domaincapsdata/qemu_4.2.0.x86_64.xml b/tests/domaincapsdata/qemu_4.2.0.x86_64.xml
-index 2918ba9715..5210c917aa 100644
---- a/tests/domaincapsdata/qemu_4.2.0.x86_64.xml
-+++ b/tests/domaincapsdata/qemu_4.2.0.x86_64.xml
-@@ -46,6 +46,7 @@
-
-
-
-+
-
-
- qemu64
-diff --git a/tests/domaincapsdata/qemu_5.0.0-q35.x86_64.xml b/tests/domaincapsdata/qemu_5.0.0-q35.x86_64.xml
-index 7b2a929738..b7e2c8a4fe 100644
---- a/tests/domaincapsdata/qemu_5.0.0-q35.x86_64.xml
-+++ b/tests/domaincapsdata/qemu_5.0.0-q35.x86_64.xml
-@@ -47,6 +47,7 @@
-
-
-
-+
-
-
- qemu64
-diff --git a/tests/domaincapsdata/qemu_5.0.0.x86_64.xml b/tests/domaincapsdata/qemu_5.0.0.x86_64.xml
-index 7609d49020..d2741375b4 100644
---- a/tests/domaincapsdata/qemu_5.0.0.x86_64.xml
-+++ b/tests/domaincapsdata/qemu_5.0.0.x86_64.xml
-@@ -46,6 +46,7 @@
-
-
-
-+
-
-
- qemu64
---
-2.26.2
-
diff --git a/SOURCES/libvirt-cpu_map-Add-support-for-core-capability-CPU-feature.patch b/SOURCES/libvirt-cpu_map-Add-support-for-core-capability-CPU-feature.patch
deleted file mode 100644
index 0140b50..0000000
--- a/SOURCES/libvirt-cpu_map-Add-support-for-core-capability-CPU-feature.patch
+++ /dev/null
@@ -1,76 +0,0 @@
-From 287c112945dda0837c31348dc3c07ad7ed19596f Mon Sep 17 00:00:00 2001
-Message-Id: <287c112945dda0837c31348dc3c07ad7ed19596f@dist-git>
-From: Tim Wiederhake
-Date: Fri, 15 Jan 2021 15:17:20 +0100
-Subject: [PATCH] cpu_map: Add support for core-capability CPU feature
-
-Signed-off-by: Tim Wiederhake
-Reviewed-by: Jiri Denemark
-(cherry picked from commit e06dd56032acf904da1aedfc097fa0cae7cb0b0f)
-
-https://bugzilla.redhat.com/show_bug.cgi?id=1537734
-
-Signed-off-by: Tim Wiederhake
-Message-Id: <20210115141722.14986-5-twiederh@redhat.com>
-Reviewed-by: Jiri Denemark
----
- src/cpu_map/x86_features.xml | 3 +++
- tests/cputestdata/x86_64-cpuid-Atom-P5362-disabled.xml | 2 +-
- tests/cputestdata/x86_64-cpuid-Atom-P5362-guest.xml | 1 +
- tests/cputestdata/x86_64-cpuid-Atom-P5362-host.xml | 1 +
- 4 files changed, 6 insertions(+), 1 deletion(-)
-
-diff --git a/src/cpu_map/x86_features.xml b/src/cpu_map/x86_features.xml
-index 70e1c7b3fc..f8c0b9046c 100644
---- a/src/cpu_map/x86_features.xml
-+++ b/src/cpu_map/x86_features.xml
-@@ -350,6 +350,9 @@
-
-
-
-+
-+
-+
-
-
-
-diff --git a/tests/cputestdata/x86_64-cpuid-Atom-P5362-disabled.xml b/tests/cputestdata/x86_64-cpuid-Atom-P5362-disabled.xml
-index 842c7b4a2a..50e8084140 100644
---- a/tests/cputestdata/x86_64-cpuid-Atom-P5362-disabled.xml
-+++ b/tests/cputestdata/x86_64-cpuid-Atom-P5362-disabled.xml
-@@ -1,7 +1,7 @@
-
-
-
--
-+
-
-
-
-diff --git a/tests/cputestdata/x86_64-cpuid-Atom-P5362-guest.xml b/tests/cputestdata/x86_64-cpuid-Atom-P5362-guest.xml
-index 0f3e2e506e..4ad95f06b4 100644
---- a/tests/cputestdata/x86_64-cpuid-Atom-P5362-guest.xml
-+++ b/tests/cputestdata/x86_64-cpuid-Atom-P5362-guest.xml
-@@ -37,6 +37,7 @@
-
-
-
-+
-
-
-
-diff --git a/tests/cputestdata/x86_64-cpuid-Atom-P5362-host.xml b/tests/cputestdata/x86_64-cpuid-Atom-P5362-host.xml
-index 3bd009c1da..cc2b208e6a 100644
---- a/tests/cputestdata/x86_64-cpuid-Atom-P5362-host.xml
-+++ b/tests/cputestdata/x86_64-cpuid-Atom-P5362-host.xml
-@@ -47,6 +47,7 @@
-
-
-
-+
-
-
-
---
-2.30.0
-
diff --git a/SOURCES/libvirt-cpu_map-Add-support-for-fsrm-CPU-feature.patch b/SOURCES/libvirt-cpu_map-Add-support-for-fsrm-CPU-feature.patch
deleted file mode 100644
index c6bd8ab..0000000
--- a/SOURCES/libvirt-cpu_map-Add-support-for-fsrm-CPU-feature.patch
+++ /dev/null
@@ -1,76 +0,0 @@
-From 7de3eaba72cecf596c732d12485e4f1a6115bf2f Mon Sep 17 00:00:00 2001
-Message-Id: <7de3eaba72cecf596c732d12485e4f1a6115bf2f@dist-git>
-From: Tim Wiederhake
-Date: Fri, 15 Jan 2021 15:17:19 +0100
-Subject: [PATCH] cpu_map: Add support for fsrm CPU feature
-
-Signed-off-by: Tim Wiederhake
-Reviewed-by: Jiri Denemark
-(cherry picked from commit 8c5c660b99101544d8cfcb8edbe48688c04bee25)
-
-https://bugzilla.redhat.com/show_bug.cgi?id=1537734
-
-Signed-off-by: Tim Wiederhake
-Message-Id: <20210115141722.14986-4-twiederh@redhat.com>
-Reviewed-by: Jiri Denemark
----
- src/cpu_map/x86_features.xml | 3 +++
- tests/cputestdata/x86_64-cpuid-Ice-Lake-Server-disabled.xml | 2 +-
- tests/cputestdata/x86_64-cpuid-Ice-Lake-Server-guest.xml | 1 +
- tests/cputestdata/x86_64-cpuid-Ice-Lake-Server-host.xml | 1 +
- 4 files changed, 6 insertions(+), 1 deletion(-)
-
-diff --git a/src/cpu_map/x86_features.xml b/src/cpu_map/x86_features.xml
-index 30d1375437..70e1c7b3fc 100644
---- a/src/cpu_map/x86_features.xml
-+++ b/src/cpu_map/x86_features.xml
-@@ -332,6 +332,9 @@
-
-
-
-+
-+
-+
-
-
-
-diff --git a/tests/cputestdata/x86_64-cpuid-Ice-Lake-Server-disabled.xml b/tests/cputestdata/x86_64-cpuid-Ice-Lake-Server-disabled.xml
-index ce65579bcc..33bd1013f0 100644
---- a/tests/cputestdata/x86_64-cpuid-Ice-Lake-Server-disabled.xml
-+++ b/tests/cputestdata/x86_64-cpuid-Ice-Lake-Server-disabled.xml
-@@ -1,7 +1,7 @@
-
-
-
--
-+
-
-
-
-diff --git a/tests/cputestdata/x86_64-cpuid-Ice-Lake-Server-guest.xml b/tests/cputestdata/x86_64-cpuid-Ice-Lake-Server-guest.xml
-index 9b75ace710..3a71b28cfb 100644
---- a/tests/cputestdata/x86_64-cpuid-Ice-Lake-Server-guest.xml
-+++ b/tests/cputestdata/x86_64-cpuid-Ice-Lake-Server-guest.xml
-@@ -24,6 +24,7 @@
-
-
-
-+
-
-
-
-diff --git a/tests/cputestdata/x86_64-cpuid-Ice-Lake-Server-host.xml b/tests/cputestdata/x86_64-cpuid-Ice-Lake-Server-host.xml
-index efbf9d363b..1582de0422 100644
---- a/tests/cputestdata/x86_64-cpuid-Ice-Lake-Server-host.xml
-+++ b/tests/cputestdata/x86_64-cpuid-Ice-Lake-Server-host.xml
-@@ -25,6 +25,7 @@
-
-
-
-+
-
-
-
---
-2.30.0
-
diff --git a/SOURCES/libvirt-cpu_map-Add-support-for-split-lock-detect-CPU-feature.patch b/SOURCES/libvirt-cpu_map-Add-support-for-split-lock-detect-CPU-feature.patch
deleted file mode 100644
index 9eee928..0000000
--- a/SOURCES/libvirt-cpu_map-Add-support-for-split-lock-detect-CPU-feature.patch
+++ /dev/null
@@ -1,72 +0,0 @@
-From 4b6dd39819e82b0775e0f324b0b4efa537882878 Mon Sep 17 00:00:00 2001
-Message-Id: <4b6dd39819e82b0775e0f324b0b4efa537882878@dist-git>
-From: Tim Wiederhake
-Date: Fri, 15 Jan 2021 15:17:21 +0100
-Subject: [PATCH] cpu_map: Add support for split-lock-detect CPU feature
-
-Signed-off-by: Tim Wiederhake
-Reviewed-by: Jiri Denemark
-(cherry picked from commit 13db542cf3099f7955438e208dbe4b2b4e58067e)
-
-https://bugzilla.redhat.com/show_bug.cgi?id=1537734
-
-Signed-off-by: Tim Wiederhake
-Message-Id: <20210115141722.14986-6-twiederh@redhat.com>
-Reviewed-by: Jiri Denemark
----
- src/cpu_map/x86_features.xml | 5 +++++
- tests/cputestdata/x86_64-cpuid-Atom-P5362-disabled.xml | 1 +
- tests/cputestdata/x86_64-cpuid-Atom-P5362-guest.xml | 1 +
- tests/cputestdata/x86_64-cpuid-Atom-P5362-host.xml | 1 +
- 4 files changed, 8 insertions(+)
-
-diff --git a/src/cpu_map/x86_features.xml b/src/cpu_map/x86_features.xml
-index f8c0b9046c..83d8e641a8 100644
---- a/src/cpu_map/x86_features.xml
-+++ b/src/cpu_map/x86_features.xml
-@@ -574,4 +574,9 @@
-
-
-
-+
-+
-+
-+
-+
-
-diff --git a/tests/cputestdata/x86_64-cpuid-Atom-P5362-disabled.xml b/tests/cputestdata/x86_64-cpuid-Atom-P5362-disabled.xml
-index 50e8084140..81ffa7bfd3 100644
---- a/tests/cputestdata/x86_64-cpuid-Atom-P5362-disabled.xml
-+++ b/tests/cputestdata/x86_64-cpuid-Atom-P5362-disabled.xml
-@@ -4,5 +4,6 @@
-
-
-
-+
-
-
-diff --git a/tests/cputestdata/x86_64-cpuid-Atom-P5362-guest.xml b/tests/cputestdata/x86_64-cpuid-Atom-P5362-guest.xml
-index 4ad95f06b4..2eeff136c4 100644
---- a/tests/cputestdata/x86_64-cpuid-Atom-P5362-guest.xml
-+++ b/tests/cputestdata/x86_64-cpuid-Atom-P5362-guest.xml
-@@ -53,6 +53,7 @@
-
-
-
-+
-
-
-
-diff --git a/tests/cputestdata/x86_64-cpuid-Atom-P5362-host.xml b/tests/cputestdata/x86_64-cpuid-Atom-P5362-host.xml
-index cc2b208e6a..b3e9d5c1ff 100644
---- a/tests/cputestdata/x86_64-cpuid-Atom-P5362-host.xml
-+++ b/tests/cputestdata/x86_64-cpuid-Atom-P5362-host.xml
-@@ -64,4 +64,5 @@
-
-
-
-+
-
---
-2.30.0
-
diff --git a/SOURCES/libvirt-cpu_map-Define-and-enable-Snowridge-model.patch b/SOURCES/libvirt-cpu_map-Define-and-enable-Snowridge-model.patch
deleted file mode 100644
index 6a04845..0000000
--- a/SOURCES/libvirt-cpu_map-Define-and-enable-Snowridge-model.patch
+++ /dev/null
@@ -1,373 +0,0 @@
-From b177f66b37d0c64216ec579a5211461609a96ea8 Mon Sep 17 00:00:00 2001
-Message-Id:
-From: Tim Wiederhake
-Date: Fri, 15 Jan 2021 15:17:22 +0100
-Subject: [PATCH] cpu_map: Define and enable Snowridge model
-
-Due to missing pdpe1gb support in the host CPU data, the CPU is still
-incorrectly detected as Westmere-IBRS for host capabilities because we
-don't have the option to disable features included in the base model
-there.
-
-Signed-off-by: Tim Wiederhake
-Reviewed-by: Jiri Denemark
-(cherry picked from commit f0a5cf4b8a8b5a68348df5e8b197f30dd90b3c34)
-
-https://bugzilla.redhat.com/show_bug.cgi?id=1537734
-
-Conflicts:
-- src/cpu_map/index.xml: Context
-- src/cpu_map/meson.build: Not present downstream
-- tests/domaincapsdata/qemu_5.1.0-q35.x86_64.xml: Not present downstream
-- tests/domaincapsdata/qemu_5.1.0-tcg.x86_64.xml: Not present downstream
-- tests/domaincapsdata/qemu_5.1.0.x86_64.xml: Not present downstream
-- tests/domaincapsdata/qemu_5.2.0-q35.x86_64.xml: Not present downstream
-- tests/domaincapsdata/qemu_5.2.0-tcg.x86_64.xml: Not present downstream
-- tests/domaincapsdata/qemu_5.2.0.x86_64.xml: Not present downstream
-
-Additions:
-- src/cpu_map/Makefile.inc.am: Replaces upstream change of "meson.build"
-
-Signed-off-by: Tim Wiederhake
-Message-Id: <20210115141722.14986-7-twiederh@redhat.com>
-Reviewed-by: Jiri Denemark
----
- src/cpu_map/Makefile.inc.am | 1 +
- src/cpu_map/index.xml | 1 +
- src/cpu_map/x86_Snowridge.xml | 71 +++++++++++++++++++
- .../x86_64-cpuid-Atom-P5362-guest.xml | 28 ++------
- .../x86_64-cpuid-Atom-P5362-json.xml | 26 ++-----
- .../domaincapsdata/qemu_4.1.0-q35.x86_64.xml | 1 +
- .../domaincapsdata/qemu_4.1.0-tcg.x86_64.xml | 1 +
- tests/domaincapsdata/qemu_4.1.0.x86_64.xml | 1 +
- .../domaincapsdata/qemu_4.2.0-q35.x86_64.xml | 1 +
- .../domaincapsdata/qemu_4.2.0-tcg.x86_64.xml | 1 +
- tests/domaincapsdata/qemu_4.2.0.x86_64.xml | 1 +
- .../domaincapsdata/qemu_5.0.0-q35.x86_64.xml | 1 +
- .../domaincapsdata/qemu_5.0.0-tcg.x86_64.xml | 1 +
- tests/domaincapsdata/qemu_5.0.0.x86_64.xml | 1 +
- 14 files changed, 92 insertions(+), 44 deletions(-)
- create mode 100644 src/cpu_map/x86_Snowridge.xml
-
-diff --git a/src/cpu_map/Makefile.inc.am b/src/cpu_map/Makefile.inc.am
-index aad4b410f9..1dd78c6715 100644
---- a/src/cpu_map/Makefile.inc.am
-+++ b/src/cpu_map/Makefile.inc.am
-@@ -67,6 +67,7 @@ cpumap_DATA = \
- cpu_map/x86_Skylake-Server.xml \
- cpu_map/x86_Skylake-Server-IBRS.xml \
- cpu_map/x86_Skylake-Server-noTSX-IBRS.xml \
-+ cpu_map/x86_Snowridge.xml \
- cpu_map/x86_Westmere.xml \
- cpu_map/x86_Westmere-IBRS.xml \
- $(NULL)
-diff --git a/src/cpu_map/index.xml b/src/cpu_map/index.xml
-index 633b017a93..2f58261e6d 100644
---- a/src/cpu_map/index.xml
-+++ b/src/cpu_map/index.xml
-@@ -55,6 +55,7 @@
-
-
-
-+
-
-
-
-diff --git a/src/cpu_map/x86_Snowridge.xml b/src/cpu_map/x86_Snowridge.xml
-new file mode 100644
-index 0000000000..383a24d367
---- /dev/null
-+++ b/src/cpu_map/x86_Snowridge.xml
-@@ -0,0 +1,71 @@
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-diff --git a/tests/cputestdata/x86_64-cpuid-Atom-P5362-guest.xml b/tests/cputestdata/x86_64-cpuid-Atom-P5362-guest.xml
-index 2eeff136c4..f28e70b9e0 100644
---- a/tests/cputestdata/x86_64-cpuid-Atom-P5362-guest.xml
-+++ b/tests/cputestdata/x86_64-cpuid-Atom-P5362-guest.xml
-@@ -1,5 +1,5 @@
-
-- IvyBridge-IBRS
-+ Snowridge
- Intel
-
-
-@@ -16,36 +16,17 @@
-
-
-
--
-
--
-
-
--
--
--
--
-
--
--
-
--
-
--
--
--
-
-
--
--
--
--
--
--
-
-
-
--
-
-
-
-@@ -53,7 +34,8 @@
-
-
-
--
--
--
-+
-+
-+
-+
-
-diff --git a/tests/cputestdata/x86_64-cpuid-Atom-P5362-json.xml b/tests/cputestdata/x86_64-cpuid-Atom-P5362-json.xml
-index ca685d2f80..bbe0919706 100644
---- a/tests/cputestdata/x86_64-cpuid-Atom-P5362-json.xml
-+++ b/tests/cputestdata/x86_64-cpuid-Atom-P5362-json.xml
-@@ -1,33 +1,15 @@
-
-- IvyBridge-IBRS
-+ Snowridge
- Intel
-
-
-
--
-
--
-
--
--
--
--
--
--
--
-
--
--
--
-
-
--
--
--
--
--
-
--
-
-
-
-@@ -36,6 +18,8 @@
-
-
-
--
--
-+
-+
-+
-+
-
-diff --git a/tests/domaincapsdata/qemu_4.1.0-q35.x86_64.xml b/tests/domaincapsdata/qemu_4.1.0-q35.x86_64.xml
-index f4ddb66e38..228acde33b 100644
---- a/tests/domaincapsdata/qemu_4.1.0-q35.x86_64.xml
-+++ b/tests/domaincapsdata/qemu_4.1.0-q35.x86_64.xml
-@@ -63,6 +63,7 @@
- athlon
- Westmere-IBRS
- Westmere
-+ Snowridge
- Skylake-Server-IBRS
- Skylake-Server
- Skylake-Client-IBRS
-diff --git a/tests/domaincapsdata/qemu_4.1.0-tcg.x86_64.xml b/tests/domaincapsdata/qemu_4.1.0-tcg.x86_64.xml
-index d6265ce243..bda1aba8ed 100644
---- a/tests/domaincapsdata/qemu_4.1.0-tcg.x86_64.xml
-+++ b/tests/domaincapsdata/qemu_4.1.0-tcg.x86_64.xml
-@@ -75,6 +75,7 @@
- athlon
- Westmere-IBRS
- Westmere
-+ Snowridge
- Skylake-Server-IBRS
- Skylake-Server
- Skylake-Client-IBRS
-diff --git a/tests/domaincapsdata/qemu_4.1.0.x86_64.xml b/tests/domaincapsdata/qemu_4.1.0.x86_64.xml
-index bcc8bbcc7a..bb53138712 100644
---- a/tests/domaincapsdata/qemu_4.1.0.x86_64.xml
-+++ b/tests/domaincapsdata/qemu_4.1.0.x86_64.xml
-@@ -62,6 +62,7 @@
- athlon
- Westmere-IBRS
- Westmere
-+ Snowridge
- Skylake-Server-IBRS
- Skylake-Server
- Skylake-Client-IBRS
-diff --git a/tests/domaincapsdata/qemu_4.2.0-q35.x86_64.xml b/tests/domaincapsdata/qemu_4.2.0-q35.x86_64.xml
-index 4d9616cb69..0a3f3ef564 100644
---- a/tests/domaincapsdata/qemu_4.2.0-q35.x86_64.xml
-+++ b/tests/domaincapsdata/qemu_4.2.0-q35.x86_64.xml
-@@ -64,6 +64,7 @@
- athlon
- Westmere-IBRS
- Westmere
-+ Snowridge
- Skylake-Server-noTSX-IBRS
- Skylake-Server-IBRS
- Skylake-Server
-diff --git a/tests/domaincapsdata/qemu_4.2.0-tcg.x86_64.xml b/tests/domaincapsdata/qemu_4.2.0-tcg.x86_64.xml
-index bcaf9afd6f..e64b647f51 100644
---- a/tests/domaincapsdata/qemu_4.2.0-tcg.x86_64.xml
-+++ b/tests/domaincapsdata/qemu_4.2.0-tcg.x86_64.xml
-@@ -75,6 +75,7 @@
- athlon
- Westmere-IBRS
- Westmere
-+ Snowridge
- Skylake-Server-noTSX-IBRS
- Skylake-Server-IBRS
- Skylake-Server
-diff --git a/tests/domaincapsdata/qemu_4.2.0.x86_64.xml b/tests/domaincapsdata/qemu_4.2.0.x86_64.xml
-index 5210c917aa..5525758a48 100644
---- a/tests/domaincapsdata/qemu_4.2.0.x86_64.xml
-+++ b/tests/domaincapsdata/qemu_4.2.0.x86_64.xml
-@@ -63,6 +63,7 @@
- athlon
- Westmere-IBRS
- Westmere
-+ Snowridge
- Skylake-Server-noTSX-IBRS
- Skylake-Server-IBRS
- Skylake-Server
-diff --git a/tests/domaincapsdata/qemu_5.0.0-q35.x86_64.xml b/tests/domaincapsdata/qemu_5.0.0-q35.x86_64.xml
-index b2a7087a0e..4cb4bf6cce 100644
---- a/tests/domaincapsdata/qemu_5.0.0-q35.x86_64.xml
-+++ b/tests/domaincapsdata/qemu_5.0.0-q35.x86_64.xml
-@@ -64,6 +64,7 @@
- athlon
- Westmere-IBRS
- Westmere
-+ Snowridge
- Skylake-Server-noTSX-IBRS
- Skylake-Server-IBRS
- Skylake-Server
-diff --git a/tests/domaincapsdata/qemu_5.0.0-tcg.x86_64.xml b/tests/domaincapsdata/qemu_5.0.0-tcg.x86_64.xml
-index 39b11fb634..b5986404ae 100644
---- a/tests/domaincapsdata/qemu_5.0.0-tcg.x86_64.xml
-+++ b/tests/domaincapsdata/qemu_5.0.0-tcg.x86_64.xml
-@@ -74,6 +74,7 @@
- athlon
- Westmere-IBRS
- Westmere
-+ Snowridge
- Skylake-Server-noTSX-IBRS
- Skylake-Server-IBRS
- Skylake-Server
-diff --git a/tests/domaincapsdata/qemu_5.0.0.x86_64.xml b/tests/domaincapsdata/qemu_5.0.0.x86_64.xml
-index 3a1ee23302..0297ce600b 100644
---- a/tests/domaincapsdata/qemu_5.0.0.x86_64.xml
-+++ b/tests/domaincapsdata/qemu_5.0.0.x86_64.xml
-@@ -63,6 +63,7 @@
- athlon
- Westmere-IBRS
- Westmere
-+ Snowridge
- Skylake-Server-noTSX-IBRS
- Skylake-Server-IBRS
- Skylake-Server
---
-2.30.0
-
diff --git a/SOURCES/libvirt-cpu_map-Defined-and-enable-EPYC-Rome-model.patch b/SOURCES/libvirt-cpu_map-Defined-and-enable-EPYC-Rome-model.patch
deleted file mode 100644
index 0e6323a..0000000
--- a/SOURCES/libvirt-cpu_map-Defined-and-enable-EPYC-Rome-model.patch
+++ /dev/null
@@ -1,310 +0,0 @@
-From f441299f1b589a60199156a217c5f49fc9de954d Mon Sep 17 00:00:00 2001
-Message-Id:
-From: Markus Schade
-Date: Thu, 8 Oct 2020 18:01:25 +0200
-Subject: [PATCH] cpu_map: Defined and enable EPYC-Rome model
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Signed-off-by: Markus Schade
-Reviewed-by: Jiri Denemark
-(cherry picked from commit f941639f86f4bc66c106eb1291f1b58cf9e24680)
-
-https://bugzilla.redhat.com/show_bug.cgi?id=1861506
-
-Conflicts:
- src/cpu_map/meson.build
- - the corresponding change was applied to Makefile.inc.am as
- downstream still uses autotools
-
- tests/cputest.c
- tests/cputestdata/x86_64-cpuid-Ryzen-9-3900X-12-Core-host.xml
- - test data for Ryzen 9 3900X are not present downstream
-
- tests/domaincapsdata/qemu_5.1.0-q35.x86_64.xml
- tests/domaincapsdata/qemu_5.1.0-tcg.x86_64.xml
- tests/domaincapsdata/qemu_5.1.0.x86_64.xml
- tests/domaincapsdata/qemu_5.2.0-q35.x86_64.xml
- tests/domaincapsdata/qemu_5.2.0-tcg.x86_64.xml
- tests/domaincapsdata/qemu_5.2.0.x86_64.xml
- - not present downstream
-
-Signed-off-by: Jiri Denemark
-Message-Id:
-Reviewed-by: Ján Tomko
----
- src/cpu_map/Makefile.inc.am | 1 +
- src/cpu_map/index.xml | 1 +
- src/cpu_map/x86_EPYC-Rome.xml | 84 +++++++++++++++++++
- .../x86_64-cpuid-EPYC-7502-32-Core-guest.xml | 12 +--
- .../x86_64-cpuid-EPYC-7502-32-Core-host.xml | 12 +--
- .../x86_64-cpuid-EPYC-7502-32-Core-json.xml | 12 +--
- .../domaincapsdata/qemu_5.0.0-q35.x86_64.xml | 1 +
- .../domaincapsdata/qemu_5.0.0-tcg.x86_64.xml | 1 +
- tests/domaincapsdata/qemu_5.0.0.x86_64.xml | 1 +
- 9 files changed, 92 insertions(+), 33 deletions(-)
- create mode 100644 src/cpu_map/x86_EPYC-Rome.xml
-
-diff --git a/src/cpu_map/Makefile.inc.am b/src/cpu_map/Makefile.inc.am
-index b949cb0bea..aad4b410f9 100644
---- a/src/cpu_map/Makefile.inc.am
-+++ b/src/cpu_map/Makefile.inc.am
-@@ -30,6 +30,7 @@ cpumap_DATA = \
- cpu_map/x86_Dhyana.xml \
- cpu_map/x86_EPYC.xml \
- cpu_map/x86_EPYC-IBPB.xml \
-+ cpu_map/x86_EPYC-Rome.xml \
- cpu_map/x86_Haswell.xml \
- cpu_map/x86_Haswell-IBRS.xml \
- cpu_map/x86_Haswell-noTSX.xml \
-diff --git a/src/cpu_map/index.xml b/src/cpu_map/index.xml
-index ff1da2e677..633b017a93 100644
---- a/src/cpu_map/index.xml
-+++ b/src/cpu_map/index.xml
-@@ -66,6 +66,7 @@
-
-
-
-+
-
-
-
-diff --git a/src/cpu_map/x86_EPYC-Rome.xml b/src/cpu_map/x86_EPYC-Rome.xml
-new file mode 100644
-index 0000000000..99fc015fdd
---- /dev/null
-+++ b/src/cpu_map/x86_EPYC-Rome.xml
-@@ -0,0 +1,84 @@
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-diff --git a/tests/cputestdata/x86_64-cpuid-EPYC-7502-32-Core-guest.xml b/tests/cputestdata/x86_64-cpuid-EPYC-7502-32-Core-guest.xml
-index 1320f65a58..cb2caab6f5 100644
---- a/tests/cputestdata/x86_64-cpuid-EPYC-7502-32-Core-guest.xml
-+++ b/tests/cputestdata/x86_64-cpuid-EPYC-7502-32-Core-guest.xml
-@@ -1,12 +1,9 @@
-
-- EPYC-IBPB
-+ EPYC-Rome
- AMD
-
-
-
--
--
--
-
-
-
-@@ -17,18 +14,11 @@
-
-
-
--
-
-
--
--
--
--
-
--
-
-
--
-
-
-
-diff --git a/tests/cputestdata/x86_64-cpuid-EPYC-7502-32-Core-host.xml b/tests/cputestdata/x86_64-cpuid-EPYC-7502-32-Core-host.xml
-index 37905ec812..b6784f9eba 100644
---- a/tests/cputestdata/x86_64-cpuid-EPYC-7502-32-Core-host.xml
-+++ b/tests/cputestdata/x86_64-cpuid-EPYC-7502-32-Core-host.xml
-@@ -1,13 +1,10 @@
-
- x86_64
-- EPYC-IBPB
-+ EPYC-Rome
- AMD
-
-
-
--
--
--
-
-
-
-@@ -18,18 +15,11 @@
-
-
-
--
-
-
--
--
--
--
-
--
-
-
--
-
-
-
-diff --git a/tests/cputestdata/x86_64-cpuid-EPYC-7502-32-Core-json.xml b/tests/cputestdata/x86_64-cpuid-EPYC-7502-32-Core-json.xml
-index 225cf63852..86466c0547 100644
---- a/tests/cputestdata/x86_64-cpuid-EPYC-7502-32-Core-json.xml
-+++ b/tests/cputestdata/x86_64-cpuid-EPYC-7502-32-Core-json.xml
-@@ -1,28 +1,18 @@
-
-- EPYC-IBPB
-+ EPYC-Rome
- AMD
-
-
-
-
--
--
--
-
-
-
-
-
-
--
--
--
--
--
-
-
--
--
-
-
-
-diff --git a/tests/domaincapsdata/qemu_5.0.0-q35.x86_64.xml b/tests/domaincapsdata/qemu_5.0.0-q35.x86_64.xml
-index 7bfd786ff6..b2a7087a0e 100644
---- a/tests/domaincapsdata/qemu_5.0.0-q35.x86_64.xml
-+++ b/tests/domaincapsdata/qemu_5.0.0-q35.x86_64.xml
-@@ -90,6 +90,7 @@
- Haswell-noTSX
- Haswell-IBRS
- Haswell
-+ EPYC-Rome
- EPYC-IBPB
- EPYC
- Dhyana
-diff --git a/tests/domaincapsdata/qemu_5.0.0-tcg.x86_64.xml b/tests/domaincapsdata/qemu_5.0.0-tcg.x86_64.xml
-index eb456dea28..39b11fb634 100644
---- a/tests/domaincapsdata/qemu_5.0.0-tcg.x86_64.xml
-+++ b/tests/domaincapsdata/qemu_5.0.0-tcg.x86_64.xml
-@@ -100,6 +100,7 @@
- Haswell-noTSX
- Haswell-IBRS
- Haswell
-+ EPYC-Rome
- EPYC-IBPB
- EPYC
- Dhyana
-diff --git a/tests/domaincapsdata/qemu_5.0.0.x86_64.xml b/tests/domaincapsdata/qemu_5.0.0.x86_64.xml
-index d6ee66ab60..3a1ee23302 100644
---- a/tests/domaincapsdata/qemu_5.0.0.x86_64.xml
-+++ b/tests/domaincapsdata/qemu_5.0.0.x86_64.xml
-@@ -89,6 +89,7 @@
- Haswell-noTSX
- Haswell-IBRS
- Haswell
-+ EPYC-Rome
- EPYC-IBPB
- EPYC
- Dhyana
---
-2.29.2
-
diff --git a/SOURCES/libvirt-cpu_map-Distinguish-Cascadelake-Server-from-Skylake-Server.patch b/SOURCES/libvirt-cpu_map-Distinguish-Cascadelake-Server-from-Skylake-Server.patch
deleted file mode 100644
index ff72f17..0000000
--- a/SOURCES/libvirt-cpu_map-Distinguish-Cascadelake-Server-from-Skylake-Server.patch
+++ /dev/null
@@ -1,154 +0,0 @@
-From f1926a0cb9147ce54484858f5e0f7376ee9ac648 Mon Sep 17 00:00:00 2001
-Message-Id:
-From: Jiri Denemark
-Date: Tue, 26 May 2020 10:59:37 +0200
-Subject: [PATCH] cpu_map: Distinguish Cascadelake-Server from Skylake-Server
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-The signatures of these two CPU model differ only in stepping as both
-report family 6 and model 85. Skylake-Server uses stepping 4 or less and
-Cascadelake-Server uses stepping 5..7.
-
-https://bugzilla.redhat.com/show_bug.cgi?id=1761678
-
-Signed-off-by: Jiri Denemark
-Reviewed-by: Ján Tomko
-(cherry picked from commit 5d6059f8ec16d64f240dc5e6413ca55a3b46b3f7)
-
-https://bugzilla.redhat.com/show_bug.cgi?id=1840010
-
-Signed-off-by: Jiri Denemark
-Message-Id: <8711c401083e2605e7d8734764a5fe1b092749b0.1590483392.git.jdenemar@redhat.com>
-Reviewed-by: Ján Tomko
----
- src/cpu_map/x86_Cascadelake-Server-noTSX.xml | 2 +-
- src/cpu_map/x86_Cascadelake-Server.xml | 2 +-
- src/cpu_map/x86_Skylake-Server-IBRS.xml | 2 +-
- src/cpu_map/x86_Skylake-Server-noTSX-IBRS.xml | 2 +-
- src/cpu_map/x86_Skylake-Server.xml | 2 +-
- tests/cputestdata/x86_64-cpuid-Xeon-Gold-6130-guest.xml | 5 +++--
- tests/cputestdata/x86_64-cpuid-Xeon-Gold-6130-json.xml | 5 +++--
- 7 files changed, 11 insertions(+), 9 deletions(-)
-
-diff --git a/src/cpu_map/x86_Cascadelake-Server-noTSX.xml b/src/cpu_map/x86_Cascadelake-Server-noTSX.xml
-index 459174a30d..bfd4629836 100644
---- a/src/cpu_map/x86_Cascadelake-Server-noTSX.xml
-+++ b/src/cpu_map/x86_Cascadelake-Server-noTSX.xml
-@@ -1,7 +1,7 @@
-
-
-
--
-+
-
-
-
-diff --git a/src/cpu_map/x86_Cascadelake-Server.xml b/src/cpu_map/x86_Cascadelake-Server.xml
-index d7ec42f57e..335e9cb584 100644
---- a/src/cpu_map/x86_Cascadelake-Server.xml
-+++ b/src/cpu_map/x86_Cascadelake-Server.xml
-@@ -1,7 +1,7 @@
-
-
-
--
-+
-
-
-
-diff --git a/src/cpu_map/x86_Skylake-Server-IBRS.xml b/src/cpu_map/x86_Skylake-Server-IBRS.xml
-index bd6b6457ad..9fb3488809 100644
---- a/src/cpu_map/x86_Skylake-Server-IBRS.xml
-+++ b/src/cpu_map/x86_Skylake-Server-IBRS.xml
-@@ -1,7 +1,7 @@
-
-
-
--
-+
-
-
-
-diff --git a/src/cpu_map/x86_Skylake-Server-noTSX-IBRS.xml b/src/cpu_map/x86_Skylake-Server-noTSX-IBRS.xml
-index c2b7de40e8..c162c0acc3 100644
---- a/src/cpu_map/x86_Skylake-Server-noTSX-IBRS.xml
-+++ b/src/cpu_map/x86_Skylake-Server-noTSX-IBRS.xml
-@@ -1,7 +1,7 @@
-
-
-
--
-+
-
-
-
-diff --git a/src/cpu_map/x86_Skylake-Server.xml b/src/cpu_map/x86_Skylake-Server.xml
-index f96875a85f..e022d94c84 100644
---- a/src/cpu_map/x86_Skylake-Server.xml
-+++ b/src/cpu_map/x86_Skylake-Server.xml
-@@ -1,7 +1,7 @@
-
-
-
--
-+
-
-
-
-diff --git a/tests/cputestdata/x86_64-cpuid-Xeon-Gold-6130-guest.xml b/tests/cputestdata/x86_64-cpuid-Xeon-Gold-6130-guest.xml
-index cfb0eb982d..c21cb1e600 100644
---- a/tests/cputestdata/x86_64-cpuid-Xeon-Gold-6130-guest.xml
-+++ b/tests/cputestdata/x86_64-cpuid-Xeon-Gold-6130-guest.xml
-@@ -1,5 +1,5 @@
-
-- Cascadelake-Server
-+ Skylake-Server-IBRS
- Intel
-
-
-@@ -20,14 +20,15 @@
-
-
-
-+
-
-
-
-
-
-+
-
-
-
-
--
-
-diff --git a/tests/cputestdata/x86_64-cpuid-Xeon-Gold-6130-json.xml b/tests/cputestdata/x86_64-cpuid-Xeon-Gold-6130-json.xml
-index 968d904557..b482043ccf 100644
---- a/tests/cputestdata/x86_64-cpuid-Xeon-Gold-6130-json.xml
-+++ b/tests/cputestdata/x86_64-cpuid-Xeon-Gold-6130-json.xml
-@@ -1,16 +1,17 @@
-
-- Cascadelake-Server
-+ Skylake-Server-IBRS
- Intel
-
-
-
-
-+
-
-
-
-
-
-+
-
-
--
-
---
-2.26.2
-
diff --git a/SOURCES/libvirt-cpu_map-Distribute-x86_Cooperlake.xml.patch b/SOURCES/libvirt-cpu_map-Distribute-x86_Cooperlake.xml.patch
deleted file mode 100644
index cdbabf5..0000000
--- a/SOURCES/libvirt-cpu_map-Distribute-x86_Cooperlake.xml.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From a48703c3f77054ba1bdfa1adf3aa8277814874d1 Mon Sep 17 00:00:00 2001
-Message-Id:
-From: Jiri Denemark
-Date: Thu, 28 May 2020 09:50:05 +0200
-Subject: [PATCH] cpu_map: Distribute x86_Cooperlake.xml
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Signed-off-by: Jiri Denemark
-Reviewed-by: Daniel P. Berrangé
-(cherry picked from commit 1c425857fb9f652c7811f075f3d31ff561b95632)
-
-https://bugzilla.redhat.com/show_bug.cgi?id=1781878
-
-Signed-off-by: Jiri Denemark
-Message-Id: <98b6a65536435b8130694e50adc9f39ff3110d90.1590652079.git.jdenemar@redhat.com>
-Reviewed-by: Ján Tomko
----
- src/cpu_map/Makefile.inc.am | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/src/cpu_map/Makefile.inc.am b/src/cpu_map/Makefile.inc.am
-index be64c9a0d4..b949cb0bea 100644
---- a/src/cpu_map/Makefile.inc.am
-+++ b/src/cpu_map/Makefile.inc.am
-@@ -22,6 +22,7 @@ cpumap_DATA = \
- cpu_map/x86_Cascadelake-Server.xml \
- cpu_map/x86_Cascadelake-Server-noTSX.xml \
- cpu_map/x86_Conroe.xml \
-+ cpu_map/x86_Cooperlake.xml \
- cpu_map/x86_core2duo.xml \
- cpu_map/x86_coreduo.xml \
- cpu_map/x86_cpu64-rhel5.xml \
---
-2.26.2
-
diff --git a/SOURCES/libvirt-cpu_map-Don-t-use-new-noTSX-models-for-host-model-CPUs.patch b/SOURCES/libvirt-cpu_map-Don-t-use-new-noTSX-models-for-host-model-CPUs.patch
deleted file mode 100644
index e14d208..0000000
--- a/SOURCES/libvirt-cpu_map-Don-t-use-new-noTSX-models-for-host-model-CPUs.patch
+++ /dev/null
@@ -1,137 +0,0 @@
-From 2268a9862c16c87007bfbae117d345268f8420e4 Mon Sep 17 00:00:00 2001
-Message-Id: <2268a9862c16c87007bfbae117d345268f8420e4@dist-git>
-From: Jiri Denemark
-Date: Tue, 26 May 2020 10:58:58 +0200
-Subject: [PATCH] cpu_map: Don't use new noTSX models for host-model CPUs
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Host-model CPU definitions (and domain capabilities) will use the
-original CPU models (without noTSX in their name) and explicitly disable
-hle and rtm features. This way domains with host-model CPUs will be
-migratable even to older versions of libvirt which do not support the
-noTSX model variants.
-
-The new models will be advertised in host capabilities and they may
-be used explicitly with custom CPUs.
-
-Signed-off-by: Jiri Denemark
-Reviewed-by: Christian Ehrhardt
-Tested-by: Christian Ehrhardt
-(cherry picked from commit 17cdefe5f197030c70a0d250f3c5387b41663516)
-
-https://bugzilla.redhat.com/show_bug.cgi?id=1840008
-
-Signed-off-by: Jiri Denemark
-Message-Id:
-Reviewed-by: Ján Tomko
----
- src/cpu_map/x86_Cascadelake-Server-noTSX.xml | 2 +-
- src/cpu_map/x86_Icelake-Client-noTSX.xml | 2 +-
- src/cpu_map/x86_Icelake-Server-noTSX.xml | 2 +-
- src/cpu_map/x86_Skylake-Client-noTSX-IBRS.xml | 2 +-
- src/cpu_map/x86_Skylake-Server-noTSX-IBRS.xml | 2 +-
- tests/cputestdata/x86_64-cpuid-Core-i7-8550U-guest.xml | 4 +++-
- tests/cputestdata/x86_64-cpuid-Core-i7-8550U-json.xml | 4 +++-
- 7 files changed, 11 insertions(+), 7 deletions(-)
-
-diff --git a/src/cpu_map/x86_Cascadelake-Server-noTSX.xml b/src/cpu_map/x86_Cascadelake-Server-noTSX.xml
-index 5adea664e9..459174a30d 100644
---- a/src/cpu_map/x86_Cascadelake-Server-noTSX.xml
-+++ b/src/cpu_map/x86_Cascadelake-Server-noTSX.xml
-@@ -1,6 +1,6 @@
-
-
--
-+
-
-
-
-diff --git a/src/cpu_map/x86_Icelake-Client-noTSX.xml b/src/cpu_map/x86_Icelake-Client-noTSX.xml
-index 540732af6f..65e648ae21 100644
---- a/src/cpu_map/x86_Icelake-Client-noTSX.xml
-+++ b/src/cpu_map/x86_Icelake-Client-noTSX.xml
-@@ -1,6 +1,6 @@
-
-
--
-+
-
-
-
-diff --git a/src/cpu_map/x86_Icelake-Server-noTSX.xml b/src/cpu_map/x86_Icelake-Server-noTSX.xml
-index 5a53da23c7..2fd6906406 100644
---- a/src/cpu_map/x86_Icelake-Server-noTSX.xml
-+++ b/src/cpu_map/x86_Icelake-Server-noTSX.xml
-@@ -1,6 +1,6 @@
-
-
--
-+
-
-
-
-diff --git a/src/cpu_map/x86_Skylake-Client-noTSX-IBRS.xml b/src/cpu_map/x86_Skylake-Client-noTSX-IBRS.xml
-index 0c2f1e6ac4..ffba34502a 100644
---- a/src/cpu_map/x86_Skylake-Client-noTSX-IBRS.xml
-+++ b/src/cpu_map/x86_Skylake-Client-noTSX-IBRS.xml
-@@ -1,6 +1,6 @@
-
-
--
-+
-
-
-
-
-
-diff --git a/tests/cputestdata/x86_64-cpuid-Core-i7-8550U-guest.xml b/tests/cputestdata/x86_64-cpuid-Core-i7-8550U-guest.xml
-index e03c4a06ba..92404e4d03 100644
---- a/tests/cputestdata/x86_64-cpuid-Core-i7-8550U-guest.xml
-+++ b/tests/cputestdata/x86_64-cpuid-Core-i7-8550U-guest.xml
-@@ -1,5 +1,5 @@
-
-- Skylake-Client-noTSX-IBRS
-+ Skylake-Client-IBRS
- Intel
-
-
-@@ -26,4 +26,6 @@
-
-
-
-+
-+
-
-diff --git a/tests/cputestdata/x86_64-cpuid-Core-i7-8550U-json.xml b/tests/cputestdata/x86_64-cpuid-Core-i7-8550U-json.xml
-index 3d8e6775bf..645c0934c2 100644
---- a/tests/cputestdata/x86_64-cpuid-Core-i7-8550U-json.xml
-+++ b/tests/cputestdata/x86_64-cpuid-Core-i7-8550U-json.xml
-@@ -1,5 +1,5 @@
-
-- Skylake-Client-noTSX-IBRS
-+ Skylake-Client-IBRS
- Intel
-
-
-@@ -14,4 +14,6 @@
-
-
-
-+
-+
-
---
-2.26.2
-
diff --git a/SOURCES/libvirt-cpu_map-Fix-Icelake-Server-model-number.patch b/SOURCES/libvirt-cpu_map-Fix-Icelake-Server-model-number.patch
deleted file mode 100644
index 0ec9af6..0000000
--- a/SOURCES/libvirt-cpu_map-Fix-Icelake-Server-model-number.patch
+++ /dev/null
@@ -1,52 +0,0 @@
-From a6293a2b28a65f3c9ae0dcf387b222ebd242fa63 Mon Sep 17 00:00:00 2001
-Message-Id:
-From: Tim Wiederhake
-Date: Fri, 15 Jan 2021 15:17:17 +0100
-Subject: [PATCH] cpu_map: Fix Icelake Server model number
-
-See arch/x86/include/asm/intel-family.h in the Kernel:
- #define INTEL_FAM6_ICELAKE_X 0x6A
-
-Signed-off-by: Tim Wiederhake
-Reviewed-by: Jiri Denemark
-(cherry picked from commit 1278ac6265589cd83cc2e661056c860e98105507)
-
-https://bugzilla.redhat.com/show_bug.cgi?id=1537734
-
-Signed-off-by: Tim Wiederhake
-Message-Id: <20210115141722.14986-2-twiederh@redhat.com>
-Reviewed-by: Jiri Denemark
----
- src/cpu_map/x86_Icelake-Server-noTSX.xml | 2 +-
- src/cpu_map/x86_Icelake-Server.xml | 2 +-
- 2 files changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/src/cpu_map/x86_Icelake-Server-noTSX.xml b/src/cpu_map/x86_Icelake-Server-noTSX.xml
-index 2fd6906406..34a0f7c18c 100644
---- a/src/cpu_map/x86_Icelake-Server-noTSX.xml
-+++ b/src/cpu_map/x86_Icelake-Server-noTSX.xml
-@@ -1,7 +1,7 @@
-
-
-
--
-+
-
-
-
-diff --git a/src/cpu_map/x86_Icelake-Server.xml b/src/cpu_map/x86_Icelake-Server.xml
-index 367ade7240..1ee4ea9cd4 100644
---- a/src/cpu_map/x86_Icelake-Server.xml
-+++ b/src/cpu_map/x86_Icelake-Server.xml
-@@ -1,7 +1,7 @@
-
-
-
--
-+
-
-
-
---
-2.30.0
-
diff --git a/SOURCES/libvirt-cpu_map-Fix-spelling-of-svme-addr-chk-feature.patch b/SOURCES/libvirt-cpu_map-Fix-spelling-of-svme-addr-chk-feature.patch
deleted file mode 100644
index a603df9..0000000
--- a/SOURCES/libvirt-cpu_map-Fix-spelling-of-svme-addr-chk-feature.patch
+++ /dev/null
@@ -1,59 +0,0 @@
-From a7fb45c4e5a807a7b437a91cfc96c8c811351578 Mon Sep 17 00:00:00 2001
-Message-Id:
-From: Jiri Denemark
-Date: Thu, 4 Mar 2021 09:41:53 +0100
-Subject: [PATCH] cpu_map: Fix spelling of svme-addr-chk feature
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Commit a208176ca1d9eedf8aa6bf12fde6a7a9579ab549 introduced this feature
-with an incorrect "svme-addr-check" spelling.
-
-Signed-off-by: Jiri Denemark
-Reviewed-by: Tim Wiederhake
-(cherry picked from commit b5abf9a192248b1005f63a7102d2627375d70fe5)
-
-https://bugzilla.redhat.com/show_bug.cgi?id=1926864
-
-Conflicts:
- src/cpu_map/sync_qemu_i386.py
- - the original change to this file was not backported
-
-Signed-off-by: Jiri Denemark
-Message-Id: <75071287f9fc55f4bec82916726fcb8f31c1e014.1614847231.git.jdenemar@redhat.com>
-Reviewed-by: Ján Tomko
----
- src/cpu_map/x86_EPYC-Milan.xml | 2 +-
- src/cpu_map/x86_features.xml | 2 +-
- 2 files changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/src/cpu_map/x86_EPYC-Milan.xml b/src/cpu_map/x86_EPYC-Milan.xml
-index 53f0cd6aac..3055e175fa 100644
---- a/src/cpu_map/x86_EPYC-Milan.xml
-+++ b/src/cpu_map/x86_EPYC-Milan.xml
-@@ -76,7 +76,7 @@
-
-
-
--
-+
-
-
-
-diff --git a/src/cpu_map/x86_features.xml b/src/cpu_map/x86_features.xml
-index 8acd42f796..ba23f553c3 100644
---- a/src/cpu_map/x86_features.xml
-+++ b/src/cpu_map/x86_features.xml
-@@ -548,7 +548,7 @@
-
-
-
--
-+
-
-
-
---
-2.30.0
-
diff --git a/SOURCES/libvirt-cpu_map-Install-x86_EPYC-Milan.xml.patch b/SOURCES/libvirt-cpu_map-Install-x86_EPYC-Milan.xml.patch
deleted file mode 100644
index 4652d0e..0000000
--- a/SOURCES/libvirt-cpu_map-Install-x86_EPYC-Milan.xml.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-From 8b1e1aa7cb9dc428a36b549a73286ec7040864ed Mon Sep 17 00:00:00 2001
-Message-Id: <8b1e1aa7cb9dc428a36b549a73286ec7040864ed@dist-git>
-From: Jiri Denemark
-Date: Wed, 3 Mar 2021 11:11:55 +0100
-Subject: [PATCH] cpu_map: Install x86_EPYC-Milan.xml
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Signed-off-by: Jiri Denemark
-Reviewed-by: Pavel Hrdina
-(cherry picked from commit d3de79dbfc20dc4dfc19154b16079861c542b71e)
-
-https://bugzilla.redhat.com/show_bug.cgi?id=1926864
-
-Conflicts:
- src/cpu_map/meson.build
- - change goes to Makefile.inc.am instead
-
-Signed-off-by: Jiri Denemark
-Message-Id: <77cf69a7222fd9fc5ef0f1c25f0534090c29865f.1614766279.git.jdenemar@redhat.com>
-Reviewed-by: Ján Tomko
----
- src/cpu_map/Makefile.inc.am | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/src/cpu_map/Makefile.inc.am b/src/cpu_map/Makefile.inc.am
-index 1dd78c6715..45dbe9e216 100644
---- a/src/cpu_map/Makefile.inc.am
-+++ b/src/cpu_map/Makefile.inc.am
-@@ -30,6 +30,7 @@ cpumap_DATA = \
- cpu_map/x86_Dhyana.xml \
- cpu_map/x86_EPYC.xml \
- cpu_map/x86_EPYC-IBPB.xml \
-+ cpu_map/x86_EPYC-Milan.xml \
- cpu_map/x86_EPYC-Rome.xml \
- cpu_map/x86_Haswell.xml \
- cpu_map/x86_Haswell-IBRS.xml \
---
-2.30.0
-
diff --git a/SOURCES/libvirt-cpu_map-Remove-monitor-feature-from-EPYC-Rome.patch b/SOURCES/libvirt-cpu_map-Remove-monitor-feature-from-EPYC-Rome.patch
deleted file mode 100644
index 09af67b..0000000
--- a/SOURCES/libvirt-cpu_map-Remove-monitor-feature-from-EPYC-Rome.patch
+++ /dev/null
@@ -1,90 +0,0 @@
-From b91bb231645300a29ab82994a003ba22835ee994 Mon Sep 17 00:00:00 2001
-Message-Id:
-From: Jiri Denemark
-Date: Thu, 8 Oct 2020 18:01:26 +0200
-Subject: [PATCH] cpu_map: Remove monitor feature from EPYC-Rome
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-The feature is filtered by KVM and never automatically enabled. So even
-though QEMU definition of EPYC-Rome contains this feature, the guest
-won't see it. Also domain capabilities will show it as disabled for KVM
-domains. Thus the feature should not really be included in our
-definition of EPYC-Rome.
-
-Signed-off-by: Jiri Denemark
-Reviewed-by: Peter Krempa
-(cherry picked from commit 3bf6f9fe22dfbd3c1dcc614b31f2f4fe8b71a2f2)
-
-https://bugzilla.redhat.com/show_bug.cgi?id=1861506
-
-Conflicts:
- tests/cputestdata/x86_64-cpuid-Ryzen-9-3900X-12-Core-guest.xml
- tests/cputestdata/x86_64-cpuid-Ryzen-9-3900X-12-Core-host.xml
- tests/cputestdata/x86_64-cpuid-Ryzen-9-3900X-12-Core-json.xml
- tests/domaincapsdata/qemu_5.1.0-q35.x86_64.xml
- tests/domaincapsdata/qemu_5.1.0.x86_64.xml
- tests/domaincapsdata/qemu_5.2.0-q35.x86_64.xml
- tests/domaincapsdata/qemu_5.2.0.x86_64.xml
- - not present downstream
-
-Signed-off-by: Jiri Denemark
-Message-Id: <74b9257f49925312b025a99dd934a9613ca295d4.1602172344.git.jdenemar@redhat.com>
-Reviewed-by: Ján Tomko
----
- src/cpu_map/x86_EPYC-Rome.xml | 1 -
- tests/cputestdata/x86_64-cpuid-EPYC-7502-32-Core-guest.xml | 1 +
- tests/cputestdata/x86_64-cpuid-EPYC-7502-32-Core-host.xml | 1 +
- tests/cputestdata/x86_64-cpuid-EPYC-7502-32-Core-json.xml | 1 -
- 4 files changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/src/cpu_map/x86_EPYC-Rome.xml b/src/cpu_map/x86_EPYC-Rome.xml
-index 99fc015fdd..e54d0a48d8 100644
---- a/src/cpu_map/x86_EPYC-Rome.xml
-+++ b/src/cpu_map/x86_EPYC-Rome.xml
-@@ -37,7 +37,6 @@
-
-
-
--
-
-
-
-diff --git a/tests/cputestdata/x86_64-cpuid-EPYC-7502-32-Core-guest.xml b/tests/cputestdata/x86_64-cpuid-EPYC-7502-32-Core-guest.xml
-index cb2caab6f5..6d95b508b2 100644
---- a/tests/cputestdata/x86_64-cpuid-EPYC-7502-32-Core-guest.xml
-+++ b/tests/cputestdata/x86_64-cpuid-EPYC-7502-32-Core-guest.xml
-@@ -2,6 +2,7 @@
- EPYC-Rome
- AMD
-
-+
-
-
-
-diff --git a/tests/cputestdata/x86_64-cpuid-EPYC-7502-32-Core-host.xml b/tests/cputestdata/x86_64-cpuid-EPYC-7502-32-Core-host.xml
-index b6784f9eba..65eaeabdd0 100644
---- a/tests/cputestdata/x86_64-cpuid-EPYC-7502-32-Core-host.xml
-+++ b/tests/cputestdata/x86_64-cpuid-EPYC-7502-32-Core-host.xml
-@@ -3,6 +3,7 @@
- EPYC-Rome
- AMD
-
-+
-
-
-
-diff --git a/tests/cputestdata/x86_64-cpuid-EPYC-7502-32-Core-json.xml b/tests/cputestdata/x86_64-cpuid-EPYC-7502-32-Core-json.xml
-index 86466c0547..febfdfcf2b 100644
---- a/tests/cputestdata/x86_64-cpuid-EPYC-7502-32-Core-json.xml
-+++ b/tests/cputestdata/x86_64-cpuid-EPYC-7502-32-Core-json.xml
-@@ -17,5 +17,4 @@
-
-
-
--
-
---
-2.29.2
-
diff --git a/SOURCES/libvirt-cpu_x86-Add-support-for-stepping-part-of-CPU-signature.patch b/SOURCES/libvirt-cpu_x86-Add-support-for-stepping-part-of-CPU-signature.patch
deleted file mode 100644
index 35c3988..0000000
--- a/SOURCES/libvirt-cpu_x86-Add-support-for-stepping-part-of-CPU-signature.patch
+++ /dev/null
@@ -1,183 +0,0 @@
-From 51290a9442c1b9347c43b2fec34b7aa979d26c77 Mon Sep 17 00:00:00 2001
-Message-Id: <51290a9442c1b9347c43b2fec34b7aa979d26c77@dist-git>
-From: Jiri Denemark
-Date: Tue, 26 May 2020 10:59:34 +0200
-Subject: [PATCH] cpu_x86: Add support for stepping part of CPU signature
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-CPU models defined in the cpu_map can use signature/@stepping attribute
-to match a limited set of stepping numbers. The value is a bitmap for
-bits 0..15 each corresponding to a single stepping value. For example,
-stepping='4-6,9' will match 4, 5, 6, and 9. Omitting the attribute is
-equivalent to stepping='0-15'.
-
-Signed-off-by: Jiri Denemark
-Reviewed-by: Ján Tomko
-(cherry picked from commit c7a27949954d78dc95459758e329fb9c580361bb)
-
-https://bugzilla.redhat.com/show_bug.cgi?id=1840010
-
-Signed-off-by: Jiri Denemark
-Message-Id: <20bd9df72a22a004bb665409ddba20ff89a5b66d.1590483392.git.jdenemar@redhat.com>
-Reviewed-by: Ján Tomko
----
- src/cpu/cpu_x86.c | 60 +++++++++++++++++++++++++++++++++++++++--------
- 1 file changed, 50 insertions(+), 10 deletions(-)
-
-diff --git a/src/cpu/cpu_x86.c b/src/cpu/cpu_x86.c
-index 45a073c1d0..0d81f3d2ae 100644
---- a/src/cpu/cpu_x86.c
-+++ b/src/cpu/cpu_x86.c
-@@ -125,6 +125,7 @@ typedef struct _virCPUx86Signature virCPUx86Signature;
- struct _virCPUx86Signature {
- unsigned int family;
- unsigned int model;
-+ virBitmapPtr stepping;
- };
-
- typedef struct _virCPUx86Signatures virCPUx86Signatures;
-@@ -732,7 +733,17 @@ x86MakeSignature(unsigned int family,
- static uint32_t
- virCPUx86SignatureToCPUID(virCPUx86Signature *sig)
- {
-- return x86MakeSignature(sig->family, sig->model, 0);
-+ unsigned int stepping = 0;
-+
-+ if (sig->stepping) {
-+ ssize_t firstBit;
-+
-+ firstBit = virBitmapNextSetBit(sig->stepping, -1);
-+ if (firstBit >= 0)
-+ stepping = firstBit;
-+ }
-+
-+ return x86MakeSignature(sig->family, sig->model, stepping);
- }
-
-
-@@ -767,8 +778,8 @@ x86DataToSignatureFull(const virCPUx86Data *data,
- }
-
-
--/* Mask out irrelevant bits (R and Step) from processor signature. */
--#define SIGNATURE_MASK 0x0fff3ff0
-+/* Mask out reserved bits from processor signature. */
-+#define SIGNATURE_MASK 0x0fff3fff
-
- static uint32_t
- x86DataToSignature(const virCPUx86Data *data)
-@@ -1134,9 +1145,14 @@ virCPUx86SignaturesNew(size_t count)
- static void
- virCPUx86SignaturesFree(virCPUx86SignaturesPtr sigs)
- {
-+ size_t i;
-+
- if (!sigs)
- return;
-
-+ for (i = 0; i < sigs->count; i++)
-+ virBitmapFree(sigs->items[i].stepping);
-+
- g_free(sigs->items);
- g_free(sigs);
- }
-@@ -1153,8 +1169,12 @@ virCPUx86SignaturesCopy(virCPUx86SignaturesPtr src)
-
- dst = virCPUx86SignaturesNew(src->count);
-
-- for (i = 0; i < src->count; i++)
-- dst->items[i] = src->items[i];
-+ for (i = 0; i < src->count; i++) {
-+ dst->items[i].family = src->items[i].family;
-+ dst->items[i].model = src->items[i].model;
-+ if (src->items[i].stepping)
-+ dst->items[i].stepping = virBitmapNewCopy(src->items[i].stepping);
-+ }
-
- return dst;
- }
-@@ -1176,7 +1196,9 @@ virCPUx86SignaturesMatch(virCPUx86SignaturesPtr sigs,
-
- for (i = 0; i < sigs->count; i++) {
- if (sigs->items[i].family == family &&
-- sigs->items[i].model == model)
-+ sigs->items[i].model == model &&
-+ (!sigs->items[i].stepping ||
-+ virBitmapIsBitSet(sigs->items[i].stepping, stepping)))
- return true;
- }
-
-@@ -1194,9 +1216,15 @@ virCPUx86SignaturesFormat(virCPUx86SignaturesPtr sigs)
- return virBufferContentAndReset(&buf);
-
- for (i = 0; i < sigs->count; i++) {
-- virBufferAsprintf(&buf, "(%u,%u,0), ",
-+ g_autofree char *stepping = NULL;
-+
-+ if (sigs->items[i].stepping)
-+ stepping = virBitmapFormat(sigs->items[i].stepping);
-+
-+ virBufferAsprintf(&buf, "(%u,%u,%s), ",
- sigs->items[i].family,
-- sigs->items[i].model);
-+ sigs->items[i].model,
-+ stepping ? stepping : "0-15");
- }
-
- virBufferTrim(&buf, ", ", -1);
-@@ -1473,6 +1501,7 @@ x86ModelParseSignatures(virCPUx86ModelPtr model,
-
- for (i = 0; i < n; i++) {
- virCPUx86Signature *sig = &model->signatures->items[i];
-+ g_autofree char *stepping = NULL;
- int rc;
-
- ctxt->node = nodes[i];
-@@ -1492,6 +1521,11 @@ x86ModelParseSignatures(virCPUx86ModelPtr model,
- model->name);
- return -1;
- }
-+
-+ stepping = virXPathString("string(@stepping)", ctxt);
-+ /* stepping corresponds to 4 bits in 32b signature, see above */
-+ if (stepping && virBitmapParse(stepping, &sig->stepping, 16) < 0)
-+ return -1;
- }
-
- ctxt->node = root;
-@@ -2090,6 +2124,9 @@ x86Decode(virCPUDefPtr cpu,
- virDomainCapsCPUModelPtr hvModel = NULL;
- g_autofree char *sigs = NULL;
- uint32_t signature;
-+ unsigned int sigFamily;
-+ unsigned int sigModel;
-+ unsigned int sigStepping;
- ssize_t i;
- int rc;
-
-@@ -2103,6 +2140,7 @@ x86Decode(virCPUDefPtr cpu,
-
- vendor = x86DataToVendor(&data, map);
- signature = x86DataToSignature(&data);
-+ virCPUx86SignatureFromCPUID(signature, &sigFamily, &sigModel, &sigStepping);
-
- x86DataFilterTSX(&data, vendor, map);
-
-@@ -2184,8 +2222,10 @@ x86Decode(virCPUDefPtr cpu,
-
- sigs = virCPUx86SignaturesFormat(model->signatures);
-
-- VIR_DEBUG("Using CPU model %s (signatures %s) for CPU with signature %06lx",
-- model->name, NULLSTR(sigs), (unsigned long)signature);
-+ VIR_DEBUG("Using CPU model %s with signatures [%s] for "
-+ "CPU with signature (%u,%u,%u)",
-+ model->name, NULLSTR(sigs),
-+ sigFamily, sigModel, sigStepping);
-
- cpu->model = g_steal_pointer(&cpuModel->model);
- cpu->features = g_steal_pointer(&cpuModel->features);
---
-2.26.2
-
diff --git a/SOURCES/libvirt-cpu_x86-Don-t-check-return-value-of-x86ModelCopy.patch b/SOURCES/libvirt-cpu_x86-Don-t-check-return-value-of-x86ModelCopy.patch
deleted file mode 100644
index 208599b..0000000
--- a/SOURCES/libvirt-cpu_x86-Don-t-check-return-value-of-x86ModelCopy.patch
+++ /dev/null
@@ -1,74 +0,0 @@
-From 8a18e258633c347eb421904c63c2265ed59d61b5 Mon Sep 17 00:00:00 2001
-Message-Id: <8a18e258633c347eb421904c63c2265ed59d61b5@dist-git>
-From: Jiri Denemark
-Date: Tue, 26 May 2020 10:59:33 +0200
-Subject: [PATCH] cpu_x86: Don't check return value of x86ModelCopy
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Thanks to glib allocation functions which abort on OOM the function
-cannot ever return NULL.
-
-Signed-off-by: Jiri Denemark
-Reviewed-by: Ján Tomko
-(cherry picked from commit 70f3041d39802e53a19901bee040ff33850cd5e0)
-
-https://bugzilla.redhat.com/show_bug.cgi?id=1840010
-
-Signed-off-by: Jiri Denemark
-Message-Id: <3db9e891cf44e608a45504b120a5c276ead3ea8d.1590483392.git.jdenemar@redhat.com>
-Reviewed-by: Ján Tomko
----
- src/cpu/cpu_x86.c | 14 ++++----------
- 1 file changed, 4 insertions(+), 10 deletions(-)
-
-diff --git a/src/cpu/cpu_x86.c b/src/cpu/cpu_x86.c
-index b87e3753da..45a073c1d0 100644
---- a/src/cpu/cpu_x86.c
-+++ b/src/cpu/cpu_x86.c
-@@ -1287,9 +1287,6 @@ x86ModelFromCPU(const virCPUDef *cpu,
- model = g_new0(virCPUx86Model, 1);
- }
-
-- if (!model)
-- return NULL;
--
- for (i = 0; i < cpu->nfeatures; i++) {
- virCPUx86FeaturePtr feature;
- virCPUFeaturePolicy fpol;
-@@ -1869,9 +1866,7 @@ x86Compute(virCPUDefPtr host,
- return VIR_CPU_COMPARE_INCOMPATIBLE;
- }
-
-- if (!(diff = x86ModelCopy(host_model)))
-- return VIR_CPU_COMPARE_ERROR;
--
-+ diff = x86ModelCopy(host_model);
- x86DataSubtract(&diff->data, &cpu_optional->data);
- x86DataSubtract(&diff->data, &cpu_require->data);
- x86DataSubtract(&diff->data, &cpu_disable->data);
-@@ -1892,8 +1887,7 @@ x86Compute(virCPUDefPtr host,
- }
-
- if (guest) {
-- if (!(guest_model = x86ModelCopy(host_model)))
-- return VIR_CPU_COMPARE_ERROR;
-+ guest_model = x86ModelCopy(host_model);
-
- if (cpu->vendor && host_model->vendor &&
- virCPUx86DataAddItem(&guest_model->data,
-@@ -3131,8 +3125,8 @@ virCPUx86ExpandFeatures(virCPUDefPtr cpu)
- return -1;
- }
-
-- if (!(model = x86ModelCopy(model)) ||
-- x86DataToCPUFeatures(expanded, host ? -1 : VIR_CPU_FEATURE_REQUIRE,
-+ model = x86ModelCopy(model);
-+ if (x86DataToCPUFeatures(expanded, host ? -1 : VIR_CPU_FEATURE_REQUIRE,
- &model->data, map) < 0)
- return -1;
-
---
-2.26.2
-
diff --git a/SOURCES/libvirt-cpu_x86-Drop-noTSX-hint-for-incompatible-CPUs.patch b/SOURCES/libvirt-cpu_x86-Drop-noTSX-hint-for-incompatible-CPUs.patch
deleted file mode 100644
index ff9b9b1..0000000
--- a/SOURCES/libvirt-cpu_x86-Drop-noTSX-hint-for-incompatible-CPUs.patch
+++ /dev/null
@@ -1,102 +0,0 @@
-From 882e0241f82b5bcbe239cf00134950e141de642a Mon Sep 17 00:00:00 2001
-Message-Id: <882e0241f82b5bcbe239cf00134950e141de642a@dist-git>
-From: Jiri Denemark
-Date: Tue, 26 May 2020 10:58:59 +0200
-Subject: [PATCH] cpu_x86: Drop noTSX hint for incompatible CPUs
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-The hint was introduced a long time ago when broken TSX implementation
-was found in Haswell and Broadwell CPUs. Since then many more CPUs with
-TSX were introduced and and disabled due to TAA vulnerability.
-
-Thus the hint is not very useful and I think removing it is a better
-choice then updating it to cover all current noTSX models.
-
-This partially reverts:
-commit 7f127ded657b24e0e55cd5f3539ef5b2dc935908
- cpu: Rework cpuCompare* APIs
-
-Signed-off-by: Jiri Denemark
-Reviewed-by: Ján Tomko
-(cherry picked from commit 8452779049ef785b1d2e373b4d42633d4a929a60)
-
-https://bugzilla.redhat.com/show_bug.cgi?id=1840010
-
-Signed-off-by: Jiri Denemark
-Message-Id: <1126fcc8a0e18f0eed38c182013429fd7266c274.1590483392.git.jdenemar@redhat.com>
-Reviewed-by: Ján Tomko
----
- src/cpu/cpu_x86.c | 44 ++++++--------------------------------------
- 1 file changed, 6 insertions(+), 38 deletions(-)
-
-diff --git a/src/cpu/cpu_x86.c b/src/cpu/cpu_x86.c
-index b4d5c795f7..1b388ec1b2 100644
---- a/src/cpu/cpu_x86.c
-+++ b/src/cpu/cpu_x86.c
-@@ -1937,8 +1937,6 @@ virCPUx86Compare(virCPUDefPtr host,
- bool failIncompatible)
- {
- virCPUCompareResult ret = VIR_CPU_COMPARE_ERROR;
-- virCPUx86MapPtr map;
-- virCPUx86ModelPtr model = NULL;
- char *message = NULL;
-
- if (!host || !host->model) {
-@@ -1954,46 +1952,16 @@ virCPUx86Compare(virCPUDefPtr host,
-
- ret = x86Compute(host, cpu, NULL, &message);
-
-- if (ret == VIR_CPU_COMPARE_INCOMPATIBLE) {
-- bool noTSX = false;
--
-- if (STREQ_NULLABLE(cpu->model, "Haswell") ||
-- STREQ_NULLABLE(cpu->model, "Broadwell")) {
-- if (!(map = virCPUx86GetMap()))
-- goto cleanup;
--
-- if (!(model = x86ModelFromCPU(cpu, map, -1)))
-- goto cleanup;
--
-- noTSX = !x86FeatureInData("hle", &model->data, map) ||
-- !x86FeatureInData("rtm", &model->data, map);
-- }
--
-- if (failIncompatible) {
-- ret = VIR_CPU_COMPARE_ERROR;
-- if (message) {
-- if (noTSX) {
-- virReportError(VIR_ERR_CPU_INCOMPATIBLE,
-- _("%s; try using '%s-noTSX' CPU model"),
-- message, cpu->model);
-- } else {
-- virReportError(VIR_ERR_CPU_INCOMPATIBLE, "%s", message);
-- }
-- } else {
-- if (noTSX) {
-- virReportError(VIR_ERR_CPU_INCOMPATIBLE,
-- _("try using '%s-noTSX' CPU model"),
-- cpu->model);
-- } else {
-- virReportError(VIR_ERR_CPU_INCOMPATIBLE, NULL);
-- }
-- }
-- }
-+ if (ret == VIR_CPU_COMPARE_INCOMPATIBLE && failIncompatible) {
-+ ret = VIR_CPU_COMPARE_ERROR;
-+ if (message)
-+ virReportError(VIR_ERR_CPU_INCOMPATIBLE, "%s", message);
-+ else
-+ virReportError(VIR_ERR_CPU_INCOMPATIBLE, NULL);
- }
-
- cleanup:
- VIR_FREE(message);
-- x86ModelFree(model);
- return ret;
- }
-
---
-2.26.2
-
diff --git a/SOURCES/libvirt-cpu_x86-Honor-CPU-models-decode-element.patch b/SOURCES/libvirt-cpu_x86-Honor-CPU-models-decode-element.patch
deleted file mode 100644
index 3928482..0000000
--- a/SOURCES/libvirt-cpu_x86-Honor-CPU-models-decode-element.patch
+++ /dev/null
@@ -1,67 +0,0 @@
-From ba2f2a8c39f2e7fe5684d9b84a0a832be482a3ab Mon Sep 17 00:00:00 2001
-Message-Id:
-From: Jiri Denemark
-Date: Tue, 26 May 2020 10:58:57 +0200
-Subject: [PATCH] cpu_x86: Honor CPU models' element
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Signed-off-by: Jiri Denemark
-Reviewed-by: Christian Ehrhardt
-Tested-by: Christian Ehrhardt
-(cherry picked from commit 7cd896ef31d33f78d40df918a33fe3867e251509)
-
-https://bugzilla.redhat.com/show_bug.cgi?id=1840008
-
-Signed-off-by: Jiri Denemark
-Message-Id: <15f1eedf2c0df29a3942b4b28bc4575fa51ca19a.1590483392.git.jdenemar@redhat.com>
-Reviewed-by: Ján Tomko
----
- src/cpu/cpu_x86.c | 22 +++++++++++++++++-----
- 1 file changed, 17 insertions(+), 5 deletions(-)
-
-diff --git a/src/cpu/cpu_x86.c b/src/cpu/cpu_x86.c
-index 7fbb4c9a6c..b4d5c795f7 100644
---- a/src/cpu/cpu_x86.c
-+++ b/src/cpu/cpu_x86.c
-@@ -2044,10 +2044,23 @@ x86DecodeUseCandidate(virCPUx86ModelPtr current,
- virCPUx86ModelPtr candidate,
- virCPUDefPtr cpuCandidate,
- uint32_t signature,
-- const char *preferred,
-- bool checkPolicy)
-+ const char *preferred)
- {
-- if (checkPolicy) {
-+ if (cpuCandidate->type == VIR_CPU_TYPE_HOST &&
-+ !candidate->decodeHost) {
-+ VIR_DEBUG("%s is not supposed to be used for host CPU definition",
-+ cpuCandidate->model);
-+ return 0;
-+ }
-+
-+ if (cpuCandidate->type == VIR_CPU_TYPE_GUEST &&
-+ !candidate->decodeGuest) {
-+ VIR_DEBUG("%s is not supposed to be used for guest CPU definition",
-+ cpuCandidate->model);
-+ return 0;
-+ }
-+
-+ if (cpuCandidate->type == VIR_CPU_TYPE_HOST) {
- size_t i;
- for (i = 0; i < cpuCandidate->nfeatures; i++) {
- if (cpuCandidate->features[i].policy == VIR_CPU_FEATURE_DISABLE)
-@@ -2209,8 +2222,7 @@ x86Decode(virCPUDefPtr cpu,
-
- if ((rc = x86DecodeUseCandidate(model, cpuModel,
- candidate, cpuCandidate,
-- signature, preferred,
-- cpu->type == VIR_CPU_TYPE_HOST))) {
-+ signature, preferred))) {
- virCPUDefFree(cpuModel);
- cpuModel = cpuCandidate;
- model = candidate;
---
-2.26.2
-
diff --git a/SOURCES/libvirt-cpu_x86-Introduce-virCPUx86SignatureFromCPUID.patch b/SOURCES/libvirt-cpu_x86-Introduce-virCPUx86SignatureFromCPUID.patch
deleted file mode 100644
index 2f1d44f..0000000
--- a/SOURCES/libvirt-cpu_x86-Introduce-virCPUx86SignatureFromCPUID.patch
+++ /dev/null
@@ -1,71 +0,0 @@
-From 48e546c1097a61c806412efe53e216fbc8beafca Mon Sep 17 00:00:00 2001
-Message-Id: <48e546c1097a61c806412efe53e216fbc8beafca@dist-git>
-From: Jiri Denemark
-Date: Tue, 26 May 2020 10:59:31 +0200
-Subject: [PATCH] cpu_x86: Introduce virCPUx86SignatureFromCPUID
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-It can be used for separating family, model, and stepping numbers from a
-single 32b integer as reported by CPUID.
-
-Signed-off-by: Jiri Denemark
-Reviewed-by: Ján Tomko
-(cherry picked from commit 3b474c1f8f3c1f124fab303625733ea79047660c)
-
-https://bugzilla.redhat.com/show_bug.cgi?id=1840010
-
-Signed-off-by: Jiri Denemark
-Message-Id: <1fe352bfb7cf40b5b8e24eea3bf4e476269adb92.1590483392.git.jdenemar@redhat.com>
-Reviewed-by: Ján Tomko
----
- src/cpu/cpu_x86.c | 19 ++++++++++++++-----
- 1 file changed, 14 insertions(+), 5 deletions(-)
-
-diff --git a/src/cpu/cpu_x86.c b/src/cpu/cpu_x86.c
-index ed2090b0c6..dad3bceff0 100644
---- a/src/cpu/cpu_x86.c
-+++ b/src/cpu/cpu_x86.c
-@@ -717,6 +717,18 @@ x86MakeSignature(unsigned int family,
- }
-
-
-+static void
-+virCPUx86SignatureFromCPUID(uint32_t sig,
-+ unsigned int *family,
-+ unsigned int *model,
-+ unsigned int *stepping)
-+{
-+ *family = ((sig >> 20) & 0xff) + ((sig >> 8) & 0xf);
-+ *model = ((sig >> 12) & 0xf0) + ((sig >> 4) & 0xf);
-+ *stepping = sig & 0xf;
-+}
-+
-+
- static void
- x86DataToSignatureFull(const virCPUx86Data *data,
- unsigned int *family,
-@@ -725,17 +737,14 @@ x86DataToSignatureFull(const virCPUx86Data *data,
- {
- virCPUx86DataItem leaf1 = CPUID(.eax_in = 0x1);
- virCPUx86DataItemPtr item;
-- virCPUx86CPUIDPtr cpuid;
-
- *family = *model = *stepping = 0;
-
- if (!(item = virCPUx86DataGet(data, &leaf1)))
- return;
-
-- cpuid = &item->data.cpuid;
-- *family = ((cpuid->eax >> 20) & 0xff) + ((cpuid->eax >> 8) & 0xf);
-- *model = ((cpuid->eax >> 12) & 0xf0) + ((cpuid->eax >> 4) & 0xf);
-- *stepping = cpuid->eax & 0xf;
-+ virCPUx86SignatureFromCPUID(item->data.cpuid.eax,
-+ family, model, stepping);
- }
-
-
---
-2.26.2
-
diff --git a/SOURCES/libvirt-cpu_x86-Introduce-virCPUx86SignaturesFree.patch b/SOURCES/libvirt-cpu_x86-Introduce-virCPUx86SignaturesFree.patch
deleted file mode 100644
index a299de9..0000000
--- a/SOURCES/libvirt-cpu_x86-Introduce-virCPUx86SignaturesFree.patch
+++ /dev/null
@@ -1,64 +0,0 @@
-From 75afc6d9dc443666e1207ef6f1c968abdfec712a Mon Sep 17 00:00:00 2001
-Message-Id: <75afc6d9dc443666e1207ef6f1c968abdfec712a@dist-git>
-From: Jiri Denemark
-Date: Tue, 26 May 2020 10:59:30 +0200
-Subject: [PATCH] cpu_x86: Introduce virCPUx86SignaturesFree
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-The function will be used for freeing virCPUx86Signatures structure
-introduced later in this series.
-
-Signed-off-by: Jiri Denemark
-Reviewed-by: Ján Tomko
-(cherry picked from commit 372b2cf1ca3f4361546732a3f5f9c0c0be2591e9)
-
-https://bugzilla.redhat.com/show_bug.cgi?id=1840010
-
-Signed-off-by: Jiri Denemark
-Message-Id: <163ef39d14ce5457272e7508172f64d58d22a56b.1590483392.git.jdenemar@redhat.com>
-Reviewed-by: Ján Tomko
----
- src/cpu/cpu_x86.c | 11 +++++++++--
- 1 file changed, 9 insertions(+), 2 deletions(-)
-
-diff --git a/src/cpu/cpu_x86.c b/src/cpu/cpu_x86.c
-index 9248403eff..ed2090b0c6 100644
---- a/src/cpu/cpu_x86.c
-+++ b/src/cpu/cpu_x86.c
-@@ -1090,6 +1090,13 @@ x86FeatureParse(xmlXPathContextPtr ctxt,
- }
-
-
-+static void
-+virCPUx86SignaturesFree(uint32_t *signatures)
-+{
-+ g_free(signatures);
-+}
-+
-+
- static int
- virCPUx86SignaturesCopy(virCPUx86ModelPtr dst,
- virCPUx86ModelPtr src)
-@@ -1149,7 +1156,7 @@ x86ModelFree(virCPUx86ModelPtr model)
- return;
-
- g_free(model->name);
-- g_free(model->signatures);
-+ virCPUx86SignaturesFree(model->signatures);
- virCPUx86DataClear(&model->data);
- g_free(model);
- }
-@@ -1414,7 +1421,7 @@ x86ModelParseSignatures(virCPUx86ModelPtr model,
- return n;
-
- /* Remove inherited signatures. */
-- VIR_FREE(model->signatures);
-+ virCPUx86SignaturesFree(model->signatures);
-
- model->nsignatures = n;
- if (VIR_ALLOC_N(model->signatures, n) < 0)
---
-2.26.2
-
diff --git a/SOURCES/libvirt-cpu_x86-Move-and-rename-x86FormatSignatures.patch b/SOURCES/libvirt-cpu_x86-Move-and-rename-x86FormatSignatures.patch
deleted file mode 100644
index ea7f7bd..0000000
--- a/SOURCES/libvirt-cpu_x86-Move-and-rename-x86FormatSignatures.patch
+++ /dev/null
@@ -1,97 +0,0 @@
-From 2b76e3009c224c0d03a4d951e0686aad6f6dc577 Mon Sep 17 00:00:00 2001
-Message-Id: <2b76e3009c224c0d03a4d951e0686aad6f6dc577@dist-git>
-From: Jiri Denemark
-Date: Tue, 26 May 2020 10:59:29 +0200
-Subject: [PATCH] cpu_x86: Move and rename x86FormatSignatures
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Later in this series the function will work on a newly introduced
-virCPUx86Signatures structure. Let's move it to the place where all
-related functions will be added and rename the function as
-virCPUx86SignaturesFormat for easier review of the virCPUx86Signatures
-patch.
-
-Signed-off-by: Jiri Denemark
-Reviewed-by: Ján Tomko
-(cherry picked from commit 7e0d351fa69c468906533b2ac9b24212df13a370)
-
-https://bugzilla.redhat.com/show_bug.cgi?id=1840010
-
-Conflicts:
- src/cpu/cpu_x86.c
- - v6.0.0-264-g0a125c7144 which removes the third argument
- from virBufferTrim was not backported
-
-Signed-off-by: Jiri Denemark
-Message-Id:
-Reviewed-by: Ján Tomko
----
- src/cpu/cpu_x86.c | 36 ++++++++++++++++++------------------
- 1 file changed, 18 insertions(+), 18 deletions(-)
-
-diff --git a/src/cpu/cpu_x86.c b/src/cpu/cpu_x86.c
-index 65a99876a9..9248403eff 100644
---- a/src/cpu/cpu_x86.c
-+++ b/src/cpu/cpu_x86.c
-@@ -1125,6 +1125,23 @@ virCPUx86SignaturesMatch(virCPUx86ModelPtr model,
- }
-
-
-+static char *
-+virCPUx86SignaturesFormat(virCPUx86ModelPtr model)
-+{
-+ virBuffer buf = VIR_BUFFER_INITIALIZER;
-+ size_t i;
-+
-+ for (i = 0; i < model->nsignatures; i++) {
-+ virBufferAsprintf(&buf, "%06lx,",
-+ (unsigned long)model->signatures[i]);
-+ }
-+
-+ virBufferTrim(&buf, ",", -1);
-+
-+ return virBufferContentAndReset(&buf);
-+}
-+
-+
- static void
- x86ModelFree(virCPUx86ModelPtr model)
- {
-@@ -1890,23 +1907,6 @@ virCPUx86Compare(virCPUDefPtr host,
- }
-
-
--static char *
--x86FormatSignatures(virCPUx86ModelPtr model)
--{
-- virBuffer buf = VIR_BUFFER_INITIALIZER;
-- size_t i;
--
-- for (i = 0; i < model->nsignatures; i++) {
-- virBufferAsprintf(&buf, "%06lx,",
-- (unsigned long)model->signatures[i]);
-- }
--
-- virBufferTrim(&buf, ",", -1);
--
-- return virBufferContentAndReset(&buf);
--}
--
--
- /*
- * Checks whether a candidate model is a better fit for the CPU data than the
- * current model.
-@@ -2134,7 +2134,7 @@ x86Decode(virCPUDefPtr cpu,
- if (vendor)
- cpu->vendor = g_strdup(vendor->name);
-
-- sigs = x86FormatSignatures(model);
-+ sigs = virCPUx86SignaturesFormat(model);
-
- VIR_DEBUG("Using CPU model %s (signatures %s) for CPU with signature %06lx",
- model->name, NULLSTR(sigs), (unsigned long)signature);
---
-2.26.2
-
diff --git a/SOURCES/libvirt-cpu_x86-Move-and-rename-x86ModelCopySignatures.patch b/SOURCES/libvirt-cpu_x86-Move-and-rename-x86ModelCopySignatures.patch
deleted file mode 100644
index bda9331..0000000
--- a/SOURCES/libvirt-cpu_x86-Move-and-rename-x86ModelCopySignatures.patch
+++ /dev/null
@@ -1,100 +0,0 @@
-From 33cac9bcf27a885febf12e094cb2579f16a421b6 Mon Sep 17 00:00:00 2001
-Message-Id: <33cac9bcf27a885febf12e094cb2579f16a421b6@dist-git>
-From: Jiri Denemark
-Date: Tue, 26 May 2020 10:59:27 +0200
-Subject: [PATCH] cpu_x86: Move and rename x86ModelCopySignatures
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Later in this series the function will work on a newly introduced
-virCPUx86Signatures structure. Let's move it to the place were all
-related functions will be added and rename the function as
-virCPUx86SignaturesCopy for easier review of the virCPUx86Signatures
-patch.
-
-Signed-off-by: Jiri Denemark
-Reviewed-by: Ján Tomko
-(cherry picked from commit a8ec1d746ed41ac76df2e28cbc5683b3e37b9a60)
-
-https://bugzilla.redhat.com/show_bug.cgi?id=1840010
-
-Signed-off-by: Jiri Denemark
-Message-Id: <0d4f902805cd5534eadedd2ec61385e9798c8b40.1590483392.git.jdenemar@redhat.com>
-Reviewed-by: Ján Tomko
----
- src/cpu/cpu_x86.c | 36 ++++++++++++++++++------------------
- 1 file changed, 18 insertions(+), 18 deletions(-)
-
-diff --git a/src/cpu/cpu_x86.c b/src/cpu/cpu_x86.c
-index b4b1b475d6..16e6aa73d2 100644
---- a/src/cpu/cpu_x86.c
-+++ b/src/cpu/cpu_x86.c
-@@ -1090,23 +1090,9 @@ x86FeatureParse(xmlXPathContextPtr ctxt,
- }
-
-
--static void
--x86ModelFree(virCPUx86ModelPtr model)
--{
-- if (!model)
-- return;
--
-- g_free(model->name);
-- g_free(model->signatures);
-- virCPUx86DataClear(&model->data);
-- g_free(model);
--}
--G_DEFINE_AUTOPTR_CLEANUP_FUNC(virCPUx86Model, x86ModelFree);
--
--
- static int
--x86ModelCopySignatures(virCPUx86ModelPtr dst,
-- virCPUx86ModelPtr src)
-+virCPUx86SignaturesCopy(virCPUx86ModelPtr dst,
-+ virCPUx86ModelPtr src)
- {
- size_t i;
-
-@@ -1124,6 +1110,20 @@ x86ModelCopySignatures(virCPUx86ModelPtr dst,
- }
-
-
-+static void
-+x86ModelFree(virCPUx86ModelPtr model)
-+{
-+ if (!model)
-+ return;
-+
-+ g_free(model->name);
-+ g_free(model->signatures);
-+ virCPUx86DataClear(&model->data);
-+ g_free(model);
-+}
-+G_DEFINE_AUTOPTR_CLEANUP_FUNC(virCPUx86Model, x86ModelFree);
-+
-+
- static virCPUx86ModelPtr
- x86ModelCopy(virCPUx86ModelPtr model)
- {
-@@ -1132,7 +1132,7 @@ x86ModelCopy(virCPUx86ModelPtr model)
- copy = g_new0(virCPUx86Model, 1);
- copy->name = g_strdup(model->name);
-
-- if (x86ModelCopySignatures(copy, model) < 0) {
-+ if (virCPUx86SignaturesCopy(copy, model) < 0) {
- x86ModelFree(copy);
- return NULL;
- }
-@@ -1360,7 +1360,7 @@ x86ModelParseAncestor(virCPUx86ModelPtr model,
- }
-
- model->vendor = ancestor->vendor;
-- if (x86ModelCopySignatures(model, ancestor) < 0)
-+ if (virCPUx86SignaturesCopy(model, ancestor) < 0)
- return -1;
-
- x86DataCopy(&model->data, &ancestor->data);
---
-2.26.2
-
diff --git a/SOURCES/libvirt-cpu_x86-Move-and-rename-x86ModelHasSignature.patch b/SOURCES/libvirt-cpu_x86-Move-and-rename-x86ModelHasSignature.patch
deleted file mode 100644
index 5d87091..0000000
--- a/SOURCES/libvirt-cpu_x86-Move-and-rename-x86ModelHasSignature.patch
+++ /dev/null
@@ -1,101 +0,0 @@
-From 693d01f00b9608a4f4cac3b91e38b5537eff754f Mon Sep 17 00:00:00 2001
-Message-Id: <693d01f00b9608a4f4cac3b91e38b5537eff754f@dist-git>
-From: Jiri Denemark
-Date: Tue, 26 May 2020 10:59:28 +0200
-Subject: [PATCH] cpu_x86: Move and rename x86ModelHasSignature
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Later in this series the function will work on a newly introduced
-virCPUx86Signatures structure. Let's move it to the place were all
-related functions will be added and rename the function as
-virCPUx86SignaturesMatch for easier review of the virCPUx86Signatures
-patch.
-
-Signed-off-by: Jiri Denemark
-Reviewed-by: Ján Tomko
-(cherry picked from commit 782be9f0af2e02e725fca45b7674e8b2f008dc6c)
-
-https://bugzilla.redhat.com/show_bug.cgi?id=1840010
-
-Signed-off-by: Jiri Denemark
-Message-Id: <7662ee03449ae588a5381c546eb7e8a3b64cadb3.1590483392.git.jdenemar@redhat.com>
-Reviewed-by: Ján Tomko
----
- src/cpu/cpu_x86.c | 38 +++++++++++++++++++-------------------
- 1 file changed, 19 insertions(+), 19 deletions(-)
-
-diff --git a/src/cpu/cpu_x86.c b/src/cpu/cpu_x86.c
-index 16e6aa73d2..65a99876a9 100644
---- a/src/cpu/cpu_x86.c
-+++ b/src/cpu/cpu_x86.c
-@@ -1110,6 +1110,21 @@ virCPUx86SignaturesCopy(virCPUx86ModelPtr dst,
- }
-
-
-+static bool
-+virCPUx86SignaturesMatch(virCPUx86ModelPtr model,
-+ uint32_t signature)
-+{
-+ size_t i;
-+
-+ for (i = 0; i < model->nsignatures; i++) {
-+ if (model->signatures[i] == signature)
-+ return true;
-+ }
-+
-+ return false;
-+}
-+
-+
- static void
- x86ModelFree(virCPUx86ModelPtr model)
- {
-@@ -1875,21 +1890,6 @@ virCPUx86Compare(virCPUDefPtr host,
- }
-
-
--static bool
--x86ModelHasSignature(virCPUx86ModelPtr model,
-- uint32_t signature)
--{
-- size_t i;
--
-- for (i = 0; i < model->nsignatures; i++) {
-- if (model->signatures[i] == signature)
-- return true;
-- }
--
-- return false;
--}
--
--
- static char *
- x86FormatSignatures(virCPUx86ModelPtr model)
- {
-@@ -1961,8 +1961,8 @@ x86DecodeUseCandidate(virCPUx86ModelPtr current,
- * consider candidates with matching family/model.
- */
- if (signature &&
-- x86ModelHasSignature(current, signature) &&
-- !x86ModelHasSignature(candidate, signature)) {
-+ virCPUx86SignaturesMatch(current, signature) &&
-+ !virCPUx86SignaturesMatch(candidate, signature)) {
- VIR_DEBUG("%s differs in signature from matching %s",
- cpuCandidate->model, cpuCurrent->model);
- return 0;
-@@ -1978,8 +1978,8 @@ x86DecodeUseCandidate(virCPUx86ModelPtr current,
- * result in longer list of features.
- */
- if (signature &&
-- x86ModelHasSignature(candidate, signature) &&
-- !x86ModelHasSignature(current, signature)) {
-+ virCPUx86SignaturesMatch(candidate, signature) &&
-+ !virCPUx86SignaturesMatch(current, signature)) {
- VIR_DEBUG("%s provides matching signature", cpuCandidate->model);
- return 1;
- }
---
-2.26.2
-
diff --git a/SOURCES/libvirt-cpu_x86-Prepare-virCPUx86UpdateLive-for-easier-extension.patch b/SOURCES/libvirt-cpu_x86-Prepare-virCPUx86UpdateLive-for-easier-extension.patch
deleted file mode 100644
index 621e1e4..0000000
--- a/SOURCES/libvirt-cpu_x86-Prepare-virCPUx86UpdateLive-for-easier-extension.patch
+++ /dev/null
@@ -1,59 +0,0 @@
-From 760e248164be819bebc03893ace58e0ddae7e440 Mon Sep 17 00:00:00 2001
-Message-Id: <760e248164be819bebc03893ace58e0ddae7e440@dist-git>
-From: Jiri Denemark
-Date: Tue, 26 May 2020 10:58:52 +0200
-Subject: [PATCH] cpu_x86: Prepare virCPUx86UpdateLive for easier extension
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Adding more checks into the existing if statements would turn them into
-an unreadable mess.
-
-Signed-off-by: Jiri Denemark
-Reviewed-by: Ján Tomko
-(cherry picked from commit 8dc791b5d3b20552cc0b8d6c04e34dd0f3ebe2ff)
-
-https://bugzilla.redhat.com/show_bug.cgi?id=1839999
-
-Signed-off-by: Jiri Denemark
-Message-Id: <169ed0334144715b52575ca3f7e67ce3170ba91a.1590483392.git.jdenemar@redhat.com>
-Reviewed-by: Ján Tomko
----
- src/cpu/cpu_x86.c | 12 +++++++++---
- 1 file changed, 9 insertions(+), 3 deletions(-)
-
-diff --git a/src/cpu/cpu_x86.c b/src/cpu/cpu_x86.c
-index 9b7981d574..9e686a86d2 100644
---- a/src/cpu/cpu_x86.c
-+++ b/src/cpu/cpu_x86.c
-@@ -3036,9 +3036,15 @@ virCPUx86UpdateLive(virCPUDefPtr cpu,
-
- for (i = 0; i < map->nfeatures; i++) {
- virCPUx86FeaturePtr feature = map->features[i];
-+ virCPUFeaturePolicy expected = VIR_CPU_FEATURE_LAST;
-
-- if (x86DataIsSubset(&enabled, &feature->data) &&
-- !x86DataIsSubset(&model->data, &feature->data)) {
-+ if (x86DataIsSubset(&model->data, &feature->data))
-+ expected = VIR_CPU_FEATURE_REQUIRE;
-+ else
-+ expected = VIR_CPU_FEATURE_DISABLE;
-+
-+ if (expected == VIR_CPU_FEATURE_DISABLE &&
-+ x86DataIsSubset(&enabled, &feature->data)) {
- VIR_DEBUG("Feature '%s' enabled by the hypervisor", feature->name);
- if (cpu->check == VIR_CPU_CHECK_FULL)
- virBufferAsprintf(&bufAdded, "%s,", feature->name);
-@@ -3048,7 +3054,7 @@ virCPUx86UpdateLive(virCPUDefPtr cpu,
- }
-
- if (x86DataIsSubset(&disabled, &feature->data) ||
-- (x86DataIsSubset(&model->data, &feature->data) &&
-+ (expected == VIR_CPU_FEATURE_REQUIRE &&
- !x86DataIsSubset(&enabled, &feature->data))) {
- VIR_DEBUG("Feature '%s' disabled by the hypervisor", feature->name);
- if (cpu->check == VIR_CPU_CHECK_FULL)
---
-2.26.2
-
diff --git a/SOURCES/libvirt-cpu_x86-Replace-32b-signatures-in-virCPUx86Model-with-a-struct.patch b/SOURCES/libvirt-cpu_x86-Replace-32b-signatures-in-virCPUx86Model-with-a-struct.patch
deleted file mode 100644
index 203914b..0000000
--- a/SOURCES/libvirt-cpu_x86-Replace-32b-signatures-in-virCPUx86Model-with-a-struct.patch
+++ /dev/null
@@ -1,325 +0,0 @@
-From 22fecd96659495908f37e1c33c1ed52be5fb2d44 Mon Sep 17 00:00:00 2001
-Message-Id: <22fecd96659495908f37e1c33c1ed52be5fb2d44@dist-git>
-From: Jiri Denemark
-Date: Tue, 26 May 2020 10:59:32 +0200
-Subject: [PATCH] cpu_x86: Replace 32b signatures in virCPUx86Model with a
- struct
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-The CPU models in our cpu_map define their signatures using separate
-family and model numbers. Let's store the signatures in the same way in
-our runtime representation of the cpu_map.
-
-Signed-off-by: Jiri Denemark
-Reviewed-by: Ján Tomko
-(cherry picked from commit 22bded201ffc91661e44065203dcb987e51084ca)
-
-https://bugzilla.redhat.com/show_bug.cgi?id=1840010
-
-Conflicts:
- src/cpu/cpu_x86.c
- - v6.0.0-264-g0a125c7144 which removes the third argument
- from virBufferTrim was not backported
-
-Signed-off-by: Jiri Denemark
-Message-Id: <21c1eee9c7bb3811f43aa044bb97fa373a159e26.1590483392.git.jdenemar@redhat.com>
-Reviewed-by: Ján Tomko
----
- src/cpu/cpu_x86.c | 149 +++++++++++++++++++++++++++++-----------------
- 1 file changed, 95 insertions(+), 54 deletions(-)
-
-diff --git a/src/cpu/cpu_x86.c b/src/cpu/cpu_x86.c
-index dad3bceff0..b87e3753da 100644
---- a/src/cpu/cpu_x86.c
-+++ b/src/cpu/cpu_x86.c
-@@ -121,6 +121,19 @@ static virCPUx86Feature x86_kvm_features[] =
- KVM_FEATURE(VIR_CPU_x86_HV_STIMER_DIRECT),
- };
-
-+typedef struct _virCPUx86Signature virCPUx86Signature;
-+struct _virCPUx86Signature {
-+ unsigned int family;
-+ unsigned int model;
-+};
-+
-+typedef struct _virCPUx86Signatures virCPUx86Signatures;
-+typedef virCPUx86Signatures *virCPUx86SignaturesPtr;
-+struct _virCPUx86Signatures {
-+ size_t count;
-+ virCPUx86Signature *items;
-+};
-+
- typedef struct _virCPUx86Model virCPUx86Model;
- typedef virCPUx86Model *virCPUx86ModelPtr;
- struct _virCPUx86Model {
-@@ -128,8 +141,7 @@ struct _virCPUx86Model {
- bool decodeHost;
- bool decodeGuest;
- virCPUx86VendorPtr vendor;
-- size_t nsignatures;
-- uint32_t *signatures;
-+ virCPUx86SignaturesPtr signatures;
- virCPUx86Data data;
- };
-
-@@ -717,6 +729,13 @@ x86MakeSignature(unsigned int family,
- }
-
-
-+static uint32_t
-+virCPUx86SignatureToCPUID(virCPUx86Signature *sig)
-+{
-+ return x86MakeSignature(sig->family, sig->model, 0);
-+}
-+
-+
- static void
- virCPUx86SignatureFromCPUID(uint32_t sig,
- unsigned int *family,
-@@ -1099,41 +1118,65 @@ x86FeatureParse(xmlXPathContextPtr ctxt,
- }
-
-
-+static virCPUx86SignaturesPtr
-+virCPUx86SignaturesNew(size_t count)
-+{
-+ virCPUx86SignaturesPtr sigs;
-+
-+ sigs = g_new0(virCPUx86Signatures, 1);
-+ sigs->items = g_new0(virCPUx86Signature, count);
-+ sigs->count = count;
-+
-+ return sigs;
-+}
-+
-+
- static void
--virCPUx86SignaturesFree(uint32_t *signatures)
-+virCPUx86SignaturesFree(virCPUx86SignaturesPtr sigs)
- {
-- g_free(signatures);
-+ if (!sigs)
-+ return;
-+
-+ g_free(sigs->items);
-+ g_free(sigs);
- }
-
-
--static int
--virCPUx86SignaturesCopy(virCPUx86ModelPtr dst,
-- virCPUx86ModelPtr src)
-+static virCPUx86SignaturesPtr
-+virCPUx86SignaturesCopy(virCPUx86SignaturesPtr src)
- {
-+ virCPUx86SignaturesPtr dst;
- size_t i;
-
-- if (src->nsignatures == 0)
-- return 0;
-+ if (!src || src->count == 0)
-+ return NULL;
-
-- if (VIR_ALLOC_N(dst->signatures, src->nsignatures) < 0)
-- return -1;
-+ dst = virCPUx86SignaturesNew(src->count);
-
-- dst->nsignatures = src->nsignatures;
-- for (i = 0; i < src->nsignatures; i++)
-- dst->signatures[i] = src->signatures[i];
-+ for (i = 0; i < src->count; i++)
-+ dst->items[i] = src->items[i];
-
-- return 0;
-+ return dst;
- }
-
-
- static bool
--virCPUx86SignaturesMatch(virCPUx86ModelPtr model,
-+virCPUx86SignaturesMatch(virCPUx86SignaturesPtr sigs,
- uint32_t signature)
- {
- size_t i;
-+ unsigned int family;
-+ unsigned int model;
-+ unsigned int stepping;
-
-- for (i = 0; i < model->nsignatures; i++) {
-- if (model->signatures[i] == signature)
-+ if (!sigs)
-+ return false;
-+
-+ virCPUx86SignatureFromCPUID(signature, &family, &model, &stepping);
-+
-+ for (i = 0; i < sigs->count; i++) {
-+ if (sigs->items[i].family == family &&
-+ sigs->items[i].model == model)
- return true;
- }
-
-@@ -1142,17 +1185,21 @@ virCPUx86SignaturesMatch(virCPUx86ModelPtr model,
-
-
- static char *
--virCPUx86SignaturesFormat(virCPUx86ModelPtr model)
-+virCPUx86SignaturesFormat(virCPUx86SignaturesPtr sigs)
- {
- virBuffer buf = VIR_BUFFER_INITIALIZER;
- size_t i;
-
-- for (i = 0; i < model->nsignatures; i++) {
-- virBufferAsprintf(&buf, "%06lx,",
-- (unsigned long)model->signatures[i]);
-+ if (!sigs)
-+ return virBufferContentAndReset(&buf);
-+
-+ for (i = 0; i < sigs->count; i++) {
-+ virBufferAsprintf(&buf, "(%u,%u,0), ",
-+ sigs->items[i].family,
-+ sigs->items[i].model);
- }
-
-- virBufferTrim(&buf, ",", -1);
-+ virBufferTrim(&buf, ", ", -1);
-
- return virBufferContentAndReset(&buf);
- }
-@@ -1179,16 +1226,11 @@ x86ModelCopy(virCPUx86ModelPtr model)
-
- copy = g_new0(virCPUx86Model, 1);
- copy->name = g_strdup(model->name);
--
-- if (virCPUx86SignaturesCopy(copy, model) < 0) {
-- x86ModelFree(copy);
-- return NULL;
-- }
-+ copy->signatures = virCPUx86SignaturesCopy(model->signatures);
- x86DataCopy(©->data, &model->data);
--
- copy->vendor = model->vendor;
-
-- return copy;
-+ return g_steal_pointer(©);
- }
-
-
-@@ -1408,9 +1450,7 @@ x86ModelParseAncestor(virCPUx86ModelPtr model,
- }
-
- model->vendor = ancestor->vendor;
-- if (virCPUx86SignaturesCopy(model, ancestor) < 0)
-- return -1;
--
-+ model->signatures = virCPUx86SignaturesCopy(ancestor->signatures);
- x86DataCopy(&model->data, &ancestor->data);
-
- return 0;
-@@ -1432,34 +1472,29 @@ x86ModelParseSignatures(virCPUx86ModelPtr model,
- /* Remove inherited signatures. */
- virCPUx86SignaturesFree(model->signatures);
-
-- model->nsignatures = n;
-- if (VIR_ALLOC_N(model->signatures, n) < 0)
-- return -1;
-+ model->signatures = virCPUx86SignaturesNew(n);
-
- for (i = 0; i < n; i++) {
-- unsigned int sigFamily = 0;
-- unsigned int sigModel = 0;
-+ virCPUx86Signature *sig = &model->signatures->items[i];
- int rc;
-
- ctxt->node = nodes[i];
-
-- rc = virXPathUInt("string(@family)", ctxt, &sigFamily);
-- if (rc < 0 || sigFamily == 0) {
-+ rc = virXPathUInt("string(@family)", ctxt, &sig->family);
-+ if (rc < 0 || sig->family == 0) {
- virReportError(VIR_ERR_INTERNAL_ERROR,
- _("Invalid CPU signature family in model %s"),
- model->name);
- return -1;
- }
-
-- rc = virXPathUInt("string(@model)", ctxt, &sigModel);
-+ rc = virXPathUInt("string(@model)", ctxt, &sig->model);
- if (rc < 0) {
- virReportError(VIR_ERR_INTERNAL_ERROR,
- _("Invalid CPU signature model in model %s"),
- model->name);
- return -1;
- }
--
-- model->signatures[i] = x86MakeSignature(sigFamily, sigModel, 0);
- }
-
- ctxt->node = root;
-@@ -1865,9 +1900,12 @@ x86Compute(virCPUDefPtr host,
- &host_model->vendor->data) < 0)
- return VIR_CPU_COMPARE_ERROR;
-
-- if (host_model->signatures &&
-- x86DataAddSignature(&guest_model->data, *host_model->signatures) < 0)
-- return VIR_CPU_COMPARE_ERROR;
-+ if (host_model->signatures && host_model->signatures->count > 0) {
-+ virCPUx86Signature *sig = &host_model->signatures->items[0];
-+ if (x86DataAddSignature(&guest_model->data,
-+ virCPUx86SignatureToCPUID(sig)) < 0)
-+ return VIR_CPU_COMPARE_ERROR;
-+ }
-
- if (cpu->type == VIR_CPU_TYPE_GUEST
- && cpu->match == VIR_CPU_MATCH_EXACT)
-@@ -1977,8 +2015,8 @@ x86DecodeUseCandidate(virCPUx86ModelPtr current,
- * consider candidates with matching family/model.
- */
- if (signature &&
-- virCPUx86SignaturesMatch(current, signature) &&
-- !virCPUx86SignaturesMatch(candidate, signature)) {
-+ virCPUx86SignaturesMatch(current->signatures, signature) &&
-+ !virCPUx86SignaturesMatch(candidate->signatures, signature)) {
- VIR_DEBUG("%s differs in signature from matching %s",
- cpuCandidate->model, cpuCurrent->model);
- return 0;
-@@ -1994,8 +2032,8 @@ x86DecodeUseCandidate(virCPUx86ModelPtr current,
- * result in longer list of features.
- */
- if (signature &&
-- virCPUx86SignaturesMatch(candidate, signature) &&
-- !virCPUx86SignaturesMatch(current, signature)) {
-+ virCPUx86SignaturesMatch(candidate->signatures, signature) &&
-+ !virCPUx86SignaturesMatch(current->signatures, signature)) {
- VIR_DEBUG("%s provides matching signature", cpuCandidate->model);
- return 1;
- }
-@@ -2150,7 +2188,7 @@ x86Decode(virCPUDefPtr cpu,
- if (vendor)
- cpu->vendor = g_strdup(vendor->name);
-
-- sigs = virCPUx86SignaturesFormat(model);
-+ sigs = virCPUx86SignaturesFormat(model->signatures);
-
- VIR_DEBUG("Using CPU model %s (signatures %s) for CPU with signature %06lx",
- model->name, NULLSTR(sigs), (unsigned long)signature);
-@@ -3046,9 +3084,12 @@ virCPUx86Translate(virCPUDefPtr cpu,
- virCPUx86DataAddItem(&model->data, &model->vendor->data) < 0)
- return -1;
-
-- if (model->signatures &&
-- x86DataAddSignature(&model->data, model->signatures[0]) < 0)
-- return -1;
-+ if (model->signatures && model->signatures->count > 0) {
-+ virCPUx86Signature *sig = &model->signatures->items[0];
-+ if (x86DataAddSignature(&model->data,
-+ virCPUx86SignatureToCPUID(sig)) < 0)
-+ return -1;
-+ }
-
- if (!(translated = virCPUDefCopyWithoutModel(cpu)))
- return -1;
---
-2.26.2
-
diff --git a/SOURCES/libvirt-cpu_x86-Use-g_auto-in-virCPUx86Baseline.patch b/SOURCES/libvirt-cpu_x86-Use-g_auto-in-virCPUx86Baseline.patch
deleted file mode 100644
index 7eed7c0..0000000
--- a/SOURCES/libvirt-cpu_x86-Use-g_auto-in-virCPUx86Baseline.patch
+++ /dev/null
@@ -1,160 +0,0 @@
-From da1511d57b10d2cc1cb14d78c6911815ec7d9f64 Mon Sep 17 00:00:00 2001
-Message-Id:
-From: Jiri Denemark
-Date: Tue, 26 May 2020 10:59:20 +0200
-Subject: [PATCH] cpu_x86: Use g_auto* in virCPUx86Baseline
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Signed-off-by: Jiri Denemark
-Reviewed-by: Ján Tomko
-(cherry picked from commit 5efefe7d7eb129b72bcbbebfbba2d5750ffeeeff)
-
-https://bugzilla.redhat.com/show_bug.cgi?id=1840010
-
-Signed-off-by: Jiri Denemark
-Message-Id:
-Reviewed-by: Ján Tomko
----
- src/cpu/cpu_x86.c | 46 +++++++++++++++++-----------------------------
- 1 file changed, 17 insertions(+), 29 deletions(-)
-
-diff --git a/src/cpu/cpu_x86.c b/src/cpu/cpu_x86.c
-index 1ade53a4a8..6e7311694d 100644
---- a/src/cpu/cpu_x86.c
-+++ b/src/cpu/cpu_x86.c
-@@ -2697,21 +2697,20 @@ virCPUx86Baseline(virCPUDefPtr *cpus,
- bool migratable)
- {
- virCPUx86MapPtr map = NULL;
-- virCPUx86ModelPtr base_model = NULL;
-- virCPUDefPtr cpu = NULL;
-+ g_autoptr(virCPUx86Model) base_model = NULL;
-+ g_autoptr(virCPUDef) cpu = NULL;
- size_t i;
- virCPUx86VendorPtr vendor = NULL;
-- virCPUx86ModelPtr model = NULL;
- bool outputVendor = true;
- const char *modelName;
- bool matchingNames = true;
-- virCPUDataPtr featData = NULL;
-+ g_autoptr(virCPUData) featData = NULL;
-
- if (!(map = virCPUx86GetMap()))
-- goto error;
-+ return NULL;
-
- if (!(base_model = x86ModelFromCPU(cpus[0], map, -1)))
-- goto error;
-+ return NULL;
-
- cpu = virCPUDefNew();
-
-@@ -2723,11 +2722,12 @@ virCPUx86Baseline(virCPUDefPtr *cpus,
- } else if (!(vendor = x86VendorFind(map, cpus[0]->vendor))) {
- virReportError(VIR_ERR_OPERATION_FAILED,
- _("Unknown CPU vendor %s"), cpus[0]->vendor);
-- goto error;
-+ return NULL;
- }
-
- modelName = cpus[0]->model;
- for (i = 1; i < ncpus; i++) {
-+ g_autoptr(virCPUx86Model) model = NULL;
- const char *vn = NULL;
-
- if (matchingNames && cpus[i]->model) {
-@@ -2740,14 +2740,14 @@ virCPUx86Baseline(virCPUDefPtr *cpus,
- }
-
- if (!(model = x86ModelFromCPU(cpus[i], map, -1)))
-- goto error;
-+ return NULL;
-
- if (cpus[i]->vendor && model->vendor &&
- STRNEQ(cpus[i]->vendor, model->vendor->name)) {
- virReportError(VIR_ERR_OPERATION_FAILED,
- _("CPU vendor %s of model %s differs from vendor %s"),
- model->vendor->name, model->name, cpus[i]->vendor);
-- goto error;
-+ return NULL;
- }
-
- if (cpus[i]->vendor) {
-@@ -2763,30 +2763,28 @@ virCPUx86Baseline(virCPUDefPtr *cpus,
- if (!(vendor = x86VendorFind(map, vn))) {
- virReportError(VIR_ERR_OPERATION_FAILED,
- _("Unknown CPU vendor %s"), vn);
-- goto error;
-+ return NULL;
- }
- } else if (STRNEQ(vendor->name, vn)) {
- virReportError(VIR_ERR_OPERATION_FAILED,
- "%s", _("CPU vendors do not match"));
-- goto error;
-+ return NULL;
- }
- }
-
- x86DataIntersect(&base_model->data, &model->data);
-- x86ModelFree(model);
-- model = NULL;
- }
-
- if (features) {
- virCPUx86FeaturePtr feat;
-
- if (!(featData = virCPUDataNew(archs[0])))
-- goto cleanup;
-+ return NULL;
-
- for (i = 0; features[i]; i++) {
- if ((feat = x86FeatureFind(map, features[i])) &&
- x86DataAdd(&featData->data.x86, &feat->data) < 0)
-- goto cleanup;
-+ return NULL;
- }
-
- x86DataIntersect(&base_model->data, &featData->data.x86);
-@@ -2795,15 +2793,15 @@ virCPUx86Baseline(virCPUDefPtr *cpus,
- if (x86DataIsEmpty(&base_model->data)) {
- virReportError(VIR_ERR_OPERATION_FAILED,
- "%s", _("CPUs are incompatible"));
-- goto error;
-+ return NULL;
- }
-
- if (vendor &&
- virCPUx86DataAddItem(&base_model->data, &vendor->data) < 0)
-- goto error;
-+ return NULL;
-
- if (x86Decode(cpu, &base_model->data, models, modelName, migratable) < 0)
-- goto error;
-+ return NULL;
-
- if (STREQ_NULLABLE(cpu->model, modelName))
- cpu->fallback = VIR_CPU_FALLBACK_FORBID;
-@@ -2811,17 +2809,7 @@ virCPUx86Baseline(virCPUDefPtr *cpus,
- if (!outputVendor)
- VIR_FREE(cpu->vendor);
-
-- cleanup:
-- x86ModelFree(base_model);
-- virCPUx86DataFree(featData);
--
-- return cpu;
--
-- error:
-- x86ModelFree(model);
-- virCPUDefFree(cpu);
-- cpu = NULL;
-- goto cleanup;
-+ return g_steal_pointer(&cpu);
- }
-
-
---
-2.26.2
-
diff --git a/SOURCES/libvirt-cpu_x86-Use-g_auto-in-virCPUx86CheckFeature.patch b/SOURCES/libvirt-cpu_x86-Use-g_auto-in-virCPUx86CheckFeature.patch
deleted file mode 100644
index e10e3a4..0000000
--- a/SOURCES/libvirt-cpu_x86-Use-g_auto-in-virCPUx86CheckFeature.patch
+++ /dev/null
@@ -1,54 +0,0 @@
-From 22d4493fd34661f4b93c8d4c885e627d561f2e70 Mon Sep 17 00:00:00 2001
-Message-Id: <22d4493fd34661f4b93c8d4c885e627d561f2e70@dist-git>
-From: Jiri Denemark
-Date: Tue, 26 May 2020 10:59:18 +0200
-Subject: [PATCH] cpu_x86: Use g_auto* in virCPUx86CheckFeature
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Signed-off-by: Jiri Denemark
-Reviewed-by: Ján Tomko
-(cherry picked from commit 3b5f1ca58e8f12bc7b768206cb9c7c2ef237e3ff)
-
-https://bugzilla.redhat.com/show_bug.cgi?id=1840010
-
-Signed-off-by: Jiri Denemark
-Message-Id: <0834c0debe689b9b8a5f694738edc149856a08fa.1590483392.git.jdenemar@redhat.com>
-Reviewed-by: Ján Tomko
----
- src/cpu/cpu_x86.c | 11 +++--------
- 1 file changed, 3 insertions(+), 8 deletions(-)
-
-diff --git a/src/cpu/cpu_x86.c b/src/cpu/cpu_x86.c
-index 56081145c0..0aebe534e6 100644
---- a/src/cpu/cpu_x86.c
-+++ b/src/cpu/cpu_x86.c
-@@ -2278,21 +2278,16 @@ static int
- virCPUx86CheckFeature(const virCPUDef *cpu,
- const char *name)
- {
-- int ret = -1;
- virCPUx86MapPtr map;
-- virCPUx86ModelPtr model = NULL;
-+ g_autoptr(virCPUx86Model) model = NULL;
-
- if (!(map = virCPUx86GetMap()))
- return -1;
-
- if (!(model = x86ModelFromCPU(cpu, map, -1)))
-- goto cleanup;
--
-- ret = x86FeatureInData(name, &model->data, map);
-+ return -1;
-
-- cleanup:
-- x86ModelFree(model);
-- return ret;
-+ return x86FeatureInData(name, &model->data, map);
- }
-
-
---
-2.26.2
-
diff --git a/SOURCES/libvirt-cpu_x86-Use-g_auto-in-virCPUx86Compare.patch b/SOURCES/libvirt-cpu_x86-Use-g_auto-in-virCPUx86Compare.patch
deleted file mode 100644
index 1d15db0..0000000
--- a/SOURCES/libvirt-cpu_x86-Use-g_auto-in-virCPUx86Compare.patch
+++ /dev/null
@@ -1,69 +0,0 @@
-From 2abd91246d3967f62473a9034f5d11f8e8ea8980 Mon Sep 17 00:00:00 2001
-Message-Id: <2abd91246d3967f62473a9034f5d11f8e8ea8980@dist-git>
-From: Jiri Denemark
-Date: Tue, 26 May 2020 10:59:14 +0200
-Subject: [PATCH] cpu_x86: Use g_auto* in virCPUx86Compare
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Signed-off-by: Jiri Denemark
-Reviewed-by: Ján Tomko
-(cherry picked from commit bc62d7a49141d745b19d066c07599f228020a0b3)
-
-https://bugzilla.redhat.com/show_bug.cgi?id=1840010
-
-Signed-off-by: Jiri Denemark
-Message-Id: <548eeddbf9eabf5e4a872390189bb0adf746c75f.1590483392.git.jdenemar@redhat.com>
-Reviewed-by: Ján Tomko
----
- src/cpu/cpu_x86.c | 16 +++++++---------
- 1 file changed, 7 insertions(+), 9 deletions(-)
-
-diff --git a/src/cpu/cpu_x86.c b/src/cpu/cpu_x86.c
-index 1a1c846383..c111ff45d4 100644
---- a/src/cpu/cpu_x86.c
-+++ b/src/cpu/cpu_x86.c
-@@ -1847,32 +1847,30 @@ virCPUx86Compare(virCPUDefPtr host,
- virCPUDefPtr cpu,
- bool failIncompatible)
- {
-- virCPUCompareResult ret = VIR_CPU_COMPARE_ERROR;
-- char *message = NULL;
-+ virCPUCompareResult ret;
-+ g_autofree char *message = NULL;
-
- if (!host || !host->model) {
- if (failIncompatible) {
- virReportError(VIR_ERR_CPU_INCOMPATIBLE, "%s",
- _("unknown host CPU"));
-- } else {
-- VIR_WARN("unknown host CPU");
-- ret = VIR_CPU_COMPARE_INCOMPATIBLE;
-+ return VIR_CPU_COMPARE_ERROR;
- }
-- goto cleanup;
-+
-+ VIR_WARN("unknown host CPU");
-+ return VIR_CPU_COMPARE_INCOMPATIBLE;
- }
-
- ret = x86Compute(host, cpu, NULL, &message);
-
- if (ret == VIR_CPU_COMPARE_INCOMPATIBLE && failIncompatible) {
-- ret = VIR_CPU_COMPARE_ERROR;
- if (message)
- virReportError(VIR_ERR_CPU_INCOMPATIBLE, "%s", message);
- else
- virReportError(VIR_ERR_CPU_INCOMPATIBLE, NULL);
-+ return VIR_CPU_COMPARE_ERROR;
- }
-
-- cleanup:
-- VIR_FREE(message);
- return ret;
- }
-
---
-2.26.2
-
diff --git a/SOURCES/libvirt-cpu_x86-Use-g_auto-in-virCPUx86CopyMigratable.patch b/SOURCES/libvirt-cpu_x86-Use-g_auto-in-virCPUx86CopyMigratable.patch
deleted file mode 100644
index cd2562e..0000000
--- a/SOURCES/libvirt-cpu_x86-Use-g_auto-in-virCPUx86CopyMigratable.patch
+++ /dev/null
@@ -1,54 +0,0 @@
-From a96d5bdc7d2d2de7b35820530f0665dda3c66c68 Mon Sep 17 00:00:00 2001
-Message-Id:
-From: Jiri Denemark
-Date: Tue, 26 May 2020 10:59:26 +0200
-Subject: [PATCH] cpu_x86: Use g_auto* in virCPUx86CopyMigratable
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Signed-off-by: Jiri Denemark
-Reviewed-by: Ján Tomko
-(cherry picked from commit a32a3e934f5e7769dc9d12a221f344319200b435)
-
-https://bugzilla.redhat.com/show_bug.cgi?id=1840010
-
-Signed-off-by: Jiri Denemark
-Message-Id: <240a340d63d1c8612e58c2d5c52970291f3e7b6d.1590483392.git.jdenemar@redhat.com>
-Reviewed-by: Ján Tomko
----
- src/cpu/cpu_x86.c | 10 +++-------
- 1 file changed, 3 insertions(+), 7 deletions(-)
-
-diff --git a/src/cpu/cpu_x86.c b/src/cpu/cpu_x86.c
-index 917cf857a6..b4b1b475d6 100644
---- a/src/cpu/cpu_x86.c
-+++ b/src/cpu/cpu_x86.c
-@@ -3109,7 +3109,7 @@ x86FeatureFilterMigratable(const char *name,
- static virCPUDefPtr
- virCPUx86CopyMigratable(virCPUDefPtr cpu)
- {
-- virCPUDefPtr copy;
-+ g_autoptr(virCPUDef) copy = NULL;
- virCPUx86MapPtr map;
-
- if (!(map = virCPUx86GetMap()))
-@@ -3120,13 +3120,9 @@ virCPUx86CopyMigratable(virCPUDefPtr cpu)
-
- if (virCPUDefCopyModelFilter(copy, cpu, false,
- x86FeatureFilterMigratable, map) < 0)
-- goto error;
--
-- return copy;
-+ return NULL;
-
-- error:
-- virCPUDefFree(copy);
-- return NULL;
-+ return g_steal_pointer(©);
- }
-
-
---
-2.26.2
-
diff --git a/SOURCES/libvirt-cpu_x86-Use-g_auto-in-virCPUx86DataParse.patch b/SOURCES/libvirt-cpu_x86-Use-g_auto-in-virCPUx86DataParse.patch
deleted file mode 100644
index f9b1904..0000000
--- a/SOURCES/libvirt-cpu_x86-Use-g_auto-in-virCPUx86DataParse.patch
+++ /dev/null
@@ -1,87 +0,0 @@
-From 45226d208c57719b50152dbec99a75969989208b Mon Sep 17 00:00:00 2001
-Message-Id: <45226d208c57719b50152dbec99a75969989208b@dist-git>
-From: Jiri Denemark
-Date: Tue, 26 May 2020 10:59:12 +0200
-Subject: [PATCH] cpu_x86: Use g_auto* in virCPUx86DataParse
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Signed-off-by: Jiri Denemark
-Reviewed-by: Ján Tomko
-(cherry picked from commit c1532711dda6db27c7f6fa7d86ab5ec5d2ab2224)
-
-https://bugzilla.redhat.com/show_bug.cgi?id=1840010
-
-Signed-off-by: Jiri Denemark
-Message-Id:
-Reviewed-by: Ján Tomko
----
- src/cpu/cpu_x86.c | 23 ++++++++---------------
- 1 file changed, 8 insertions(+), 15 deletions(-)
-
-diff --git a/src/cpu/cpu_x86.c b/src/cpu/cpu_x86.c
-index cb5a2f941e..107fd9227d 100644
---- a/src/cpu/cpu_x86.c
-+++ b/src/cpu/cpu_x86.c
-@@ -1636,8 +1636,8 @@ virCPUx86DataFormat(const virCPUData *data)
- static virCPUDataPtr
- virCPUx86DataParse(xmlXPathContextPtr ctxt)
- {
-- xmlNodePtr *nodes = NULL;
-- virCPUDataPtr cpuData = NULL;
-+ g_autofree xmlNodePtr *nodes = NULL;
-+ g_autoptr(virCPUData) cpuData = NULL;
- virCPUx86DataItem item;
- size_t i;
- int n;
-@@ -1646,11 +1646,11 @@ virCPUx86DataParse(xmlXPathContextPtr ctxt)
- if (n <= 0) {
- virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
- _("no x86 CPU data found"));
-- goto error;
-+ return NULL;
- }
-
- if (!(cpuData = virCPUDataNew(VIR_ARCH_X86_64)))
-- goto error;
-+ return NULL;
-
- for (i = 0; i < n; i++) {
- ctxt->node = nodes[i];
-@@ -1658,28 +1658,21 @@ virCPUx86DataParse(xmlXPathContextPtr ctxt)
- if (x86ParseCPUID(ctxt, &item) < 0) {
- virReportError(VIR_ERR_INTERNAL_ERROR,
- _("failed to parse cpuid[%zu]"), i);
-- goto error;
-+ return NULL;
- }
- } else {
- if (x86ParseMSR(ctxt, &item) < 0) {
- virReportError(VIR_ERR_INTERNAL_ERROR,
- _("failed to parse msr[%zu]"), i);
-- goto error;
-+ return NULL;
- }
- }
-
- if (virCPUx86DataAdd(cpuData, &item) < 0)
-- goto error;
-+ return NULL;
- }
-
-- cleanup:
-- VIR_FREE(nodes);
-- return cpuData;
--
-- error:
-- virCPUx86DataFree(cpuData);
-- cpuData = NULL;
-- goto cleanup;
-+ return g_steal_pointer(&cpuData);
- }
-
-
---
-2.26.2
-
diff --git a/SOURCES/libvirt-cpu_x86-Use-g_auto-in-virCPUx86ExpandFeatures.patch b/SOURCES/libvirt-cpu_x86-Use-g_auto-in-virCPUx86ExpandFeatures.patch
deleted file mode 100644
index 21fe489..0000000
--- a/SOURCES/libvirt-cpu_x86-Use-g_auto-in-virCPUx86ExpandFeatures.patch
+++ /dev/null
@@ -1,86 +0,0 @@
-From 5f9b035adcf2813beb6cc82200b745f5e34acd8d Mon Sep 17 00:00:00 2001
-Message-Id: <5f9b035adcf2813beb6cc82200b745f5e34acd8d@dist-git>
-From: Jiri Denemark
-Date: Tue, 26 May 2020 10:59:25 +0200
-Subject: [PATCH] cpu_x86: Use g_auto* in virCPUx86ExpandFeatures
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Signed-off-by: Jiri Denemark
-Reviewed-by: Ján Tomko
-(cherry picked from commit ff6897c84504a3e663759d710968ad1f72bc9208)
-
-https://bugzilla.redhat.com/show_bug.cgi?id=1840010
-
-Signed-off-by: Jiri Denemark
-Message-Id:
-Reviewed-by: Ján Tomko
----
- src/cpu/cpu_x86.c | 22 ++++++++--------------
- 1 file changed, 8 insertions(+), 14 deletions(-)
-
-diff --git a/src/cpu/cpu_x86.c b/src/cpu/cpu_x86.c
-index c4654c8d4c..917cf857a6 100644
---- a/src/cpu/cpu_x86.c
-+++ b/src/cpu/cpu_x86.c
-@@ -3055,30 +3055,29 @@ static int
- virCPUx86ExpandFeatures(virCPUDefPtr cpu)
- {
- virCPUx86MapPtr map;
-- virCPUDefPtr expanded = NULL;
-- virCPUx86ModelPtr model = NULL;
-+ g_autoptr(virCPUDef) expanded = NULL;
-+ g_autoptr(virCPUx86Model) model = NULL;
- bool host = cpu->type == VIR_CPU_TYPE_HOST;
- size_t i;
-- int ret = -1;
-
- if (!(map = virCPUx86GetMap()))
-- goto cleanup;
-+ return -1;
-
- if (!(expanded = virCPUDefCopy(cpu)))
-- goto cleanup;
-+ return -1;
-
- virCPUDefFreeFeatures(expanded);
-
- if (!(model = x86ModelFind(map, cpu->model))) {
- virReportError(VIR_ERR_INTERNAL_ERROR,
- _("unknown CPU model %s"), cpu->model);
-- goto cleanup;
-+ return -1;
- }
-
- if (!(model = x86ModelCopy(model)) ||
- x86DataToCPUFeatures(expanded, host ? -1 : VIR_CPU_FEATURE_REQUIRE,
- &model->data, map) < 0)
-- goto cleanup;
-+ return -1;
-
- for (i = 0; i < cpu->nfeatures; i++) {
- virCPUFeatureDefPtr f = cpu->features + i;
-@@ -3089,17 +3088,12 @@ virCPUx86ExpandFeatures(virCPUDefPtr cpu)
- continue;
-
- if (virCPUDefUpdateFeature(expanded, f->name, f->policy) < 0)
-- goto cleanup;
-+ return -1;
- }
-
- virCPUDefFreeModel(cpu);
-
-- ret = virCPUDefCopyModel(cpu, expanded, false);
--
-- cleanup:
-- virCPUDefFree(expanded);
-- x86ModelFree(model);
-- return ret;
-+ return virCPUDefCopyModel(cpu, expanded, false);
- }
-
-
---
-2.26.2
-
diff --git a/SOURCES/libvirt-cpu_x86-Use-g_auto-in-virCPUx86GetHost.patch b/SOURCES/libvirt-cpu_x86-Use-g_auto-in-virCPUx86GetHost.patch
deleted file mode 100644
index 41ebaa9..0000000
--- a/SOURCES/libvirt-cpu_x86-Use-g_auto-in-virCPUx86GetHost.patch
+++ /dev/null
@@ -1,71 +0,0 @@
-From 0b64dac1a3a9ef9cdfe3446ebbe114da1ae86e97 Mon Sep 17 00:00:00 2001
-Message-Id: <0b64dac1a3a9ef9cdfe3446ebbe114da1ae86e97@dist-git>
-From: Jiri Denemark
-Date: Tue, 26 May 2020 10:59:19 +0200
-Subject: [PATCH] cpu_x86: Use g_auto* in virCPUx86GetHost
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Signed-off-by: Jiri Denemark
-Reviewed-by: Ján Tomko
-(cherry picked from commit 4a7f6f43a2a6144780d7ab74b8a6f6b008a7aa9d)
-
-https://bugzilla.redhat.com/show_bug.cgi?id=1840010
-
-Signed-off-by: Jiri Denemark
-Message-Id: <94056710375d491c42d12a46b20f670453c2a1c8.1590483392.git.jdenemar@redhat.com>
-Reviewed-by: Ján Tomko
----
- src/cpu/cpu_x86.c | 14 ++++++--------
- 1 file changed, 6 insertions(+), 8 deletions(-)
-
-diff --git a/src/cpu/cpu_x86.c b/src/cpu/cpu_x86.c
-index 0aebe534e6..1ade53a4a8 100644
---- a/src/cpu/cpu_x86.c
-+++ b/src/cpu/cpu_x86.c
-@@ -2637,18 +2637,18 @@ static int
- virCPUx86GetHost(virCPUDefPtr cpu,
- virDomainCapsCPUModelsPtr models)
- {
-- virCPUDataPtr cpuData = NULL;
-- int ret = -1;
-+ g_autoptr(virCPUData) cpuData = NULL;
-+ int ret;
-
- if (virCPUx86DriverInitialize() < 0)
-- goto cleanup;
-+ return -1;
-
- if (!(cpuData = virCPUDataNew(archs[0])))
-- goto cleanup;
-+ return -1;
-
- if (cpuidSet(CPUX86_BASIC, cpuData) < 0 ||
- cpuidSet(CPUX86_EXTENDED, cpuData) < 0)
-- goto cleanup;
-+ return -1;
-
- /* Read the IA32_ARCH_CAPABILITIES MSR (0x10a) if supported.
- * This is best effort since there might be no way to read the MSR
-@@ -2668,7 +2668,7 @@ virCPUx86GetHost(virCPUDefPtr cpu,
- };
-
- if (virCPUx86DataAdd(cpuData, &item) < 0)
-- goto cleanup;
-+ return -1;
- }
- }
-
-@@ -2684,8 +2684,6 @@ virCPUx86GetHost(virCPUDefPtr cpu,
- VIR_DEBUG("Host CPU does not support invariant TSC");
- }
-
-- cleanup:
-- virCPUx86DataFree(cpuData);
- return ret;
- }
- #endif
---
-2.26.2
-
diff --git a/SOURCES/libvirt-cpu_x86-Use-g_auto-in-virCPUx86LoadMap.patch b/SOURCES/libvirt-cpu_x86-Use-g_auto-in-virCPUx86LoadMap.patch
deleted file mode 100644
index d07a62e..0000000
--- a/SOURCES/libvirt-cpu_x86-Use-g_auto-in-virCPUx86LoadMap.patch
+++ /dev/null
@@ -1,51 +0,0 @@
-From 91a87dbe3a25e405ea5fbd87e4444ca77d04a34c Mon Sep 17 00:00:00 2001
-Message-Id: <91a87dbe3a25e405ea5fbd87e4444ca77d04a34c@dist-git>
-From: Jiri Denemark
-Date: Tue, 26 May 2020 10:59:11 +0200
-Subject: [PATCH] cpu_x86: Use g_auto* in virCPUx86LoadMap
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Signed-off-by: Jiri Denemark