SHA256
1
0
forked from pool/qemu

- Update to latest stable release (9.0.1).

Full list of backports here:
    https://lore.kernel.org/qemu-devel/1718081053.366429.1238758.nullmailer@tls.msk.ru/
    
   A selection of them is reported here too:
    Update version for 9.0.1 release
    target/loongarch: fix a wrong print in cpu dump
    ui/sdl2: Allow host to power down screen
    virtio-gpu: fix v2 migration
    target/i386: fix SSE and SSE2 feature check
    target/i386: fix xsave.flat from kvm-unit-tests
    disas/riscv: Decode all of the pmpcfg and pmpaddr CSRs
    riscv, gdbstub.c: fix reg_width in ricsv_gen_dynamic_vector_feature()
    target/riscv/kvm.c: Fix the hart bit setting of AIA
    target/riscv: rvzicbo: Fixup CBO extension register calculation
    target/riscv: do not set mtval2 for non guest-page faults
    target/riscv: prioritize pmp errors in raise_mmu_exception()
    target/riscv: rvv: Remove redudant SEW checking for vector fp narrow/widen instructions
    target/riscv: rvv: Check single width operator for vfncvt.rod.f.f.w
    target/riscv: rvv: Check single width operator for vector fp widen instructions
    target/riscv: rvv: Fix Zvfhmin checking for vfwcvt.f.f.v and vfncvt.f.f.w instructions
    target/riscv/cpu.c: fix Zvkb extension config
    target/riscv: Fix the element agnostic function problem
    target/riscv/kvm: tolerate KVM disable ext errors
    target/riscv/kvm: Fix exposure of Zkr
    hw/intc/riscv_aplic: APLICs should add child earlier than realize
    iotests: test NBD+TLS+iothread
    qio: Inherit follow_coroutine_ctx across TLS
    ...

OBS-URL: https://build.opensuse.org/package/show/Virtualization/qemu?expand=0&rev=848
This commit is contained in:
Dario Faggioli 2024-06-28 14:56:57 +00:00 committed by Git OBS Bridge
parent 92bf160db8
commit 6f31d1a8d5
82 changed files with 2907 additions and 11319 deletions

View File

@ -1,35 +0,0 @@
{
"description": "SeaBIOS",
"interface-types": [
"bios"
],
"mapping": {
"device": "memory",
"filename": "/usr/share/qemu/bios-256k.bin"
},
"targets": [
{
"architecture": "i386",
"machines": [
"pc-i440fx-*",
"pc-q35-*"
]
},
{
"architecture": "x86_64",
"machines": [
"pc-i440fx-*",
"pc-q35-*"
]
}
],
"features": [
"acpi-s3",
"acpi-s4"
],
"tags": [
"CONFIG_QEMU=y",
"CONFIG_ROM_SIZE=256",
"CONFIG_ATA_DMA=n"
]
}

View File

@ -1,47 +0,0 @@
{
"description": "SeaBIOS",
"interface-types": [
"bios"
],
"mapping": {
"device": "memory",
"filename": "/usr/share/qemu/bios.bin"
},
"targets": [
{
"architecture": "i386",
"machines": [
"pc-i440fx-*",
"pc-q35-*"
]
},
{
"architecture": "x86_64",
"machines": [
"pc-i440fx-*",
"pc-q35-*"
]
}
],
"features": [
"acpi-s3",
"acpi-s4"
],
"tags": [
"CONFIG_QEMU=y",
"CONFIG_ROM_SIZE=128",
"CONFIG_ATA_DMA=n",
"CONFIG_BOOTSPLASH=n",
"CONFIG_XEN=n",
"CONFIG_USB_OHCI=n",
"CONFIG_USB_XHCI=n",
"CONFIG_USB_UAS=n",
"CONFIG_SDCARD=n",
"CONFIG_TCGBIOS=n",
"CONFIG_MPT_SCSI=n",
"CONFIG_PVSCSI=n",
"CONFIG_NVME=n",
"CONFIG_USE_SMM=n",
"CONFIG_VGAHOOKS=n"
]
}

View File

@ -1 +0,0 @@
KERNEL=="kvm", MODE="0666", GROUP="kvm"

View File

@ -1 +0,0 @@
SUBSYSTEM=="virtio-ports", ATTR{name}=="org.qemu.guest_agent.0", TAG+="systemd", ENV{SYSTEMD_WANTS}+="qemu-guest-agent.service"

BIN
DSDT.pcie

Binary file not shown.

View File

@ -1,43 +0,0 @@
From: Dario Faggioli <dfaggioli@suse.com>
Date: Thu, 21 Jul 2022 04:06:21 +0200
Subject: Disable some tests that have problems in OBS
Git-commit: 0000000000000000000000000000000000000000
We are disabling the following tests:
qemu-system-ppc64 / display-vga-test
They are failing due to some memory corruption errors. We believe that
this might be due to the combination of the compiler version and of LTO,
and will take up the investigation within the upstream community.
Signed-off-by: Dario Faggioli <dfaggioli@suse.com>
---
tests/qtest/meson.build | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/tests/qtest/meson.build b/tests/qtest/meson.build
index be4b30dea248d75f477cc402ce8d..06a2015232fd920170a9f503be52 100644
--- a/tests/qtest/meson.build
+++ b/tests/qtest/meson.build
@@ -39,6 +39,10 @@ qtests_pci = \
qtests_cxl = \
(config_all_devices.has_key('CONFIG_CXL') ? ['cxl-test'] : [])
+# display-vga-test currently fails in OBS, for ppc64
+qtests_pci_novga = \
+ (config_all_devices.has_key('CONFIG_IVSHMEM_DEVICE') ? ['ivshmem-test'] : [])
+
qtests_i386 = \
(slirp.found() ? ['pxe-test', 'test-netfilter'] : []) + \
(config_host.has_key('CONFIG_POSIX') ? ['test-filter-mirror'] : []) + \
@@ -167,7 +171,7 @@ qtests_ppc64 = \
(slirp.found() ? ['pxe-test'] : []) + \
(config_all_devices.has_key('CONFIG_USB_UHCI') ? ['usb-hcd-uhci-test'] : []) + \
(config_all_devices.has_key('CONFIG_USB_XHCI_NEC') ? ['usb-hcd-xhci-test'] : []) + \
- qtests_pci + ['migration-test', 'numa-test', 'cpu-plug-test', 'drive_del-test']
+ qtests_pci_novga + ['migration-test', 'numa-test', 'cpu-plug-test', 'drive_del-test']
qtests_sh4 = (config_all_devices.has_key('CONFIG_ISA_TESTDEV') ? ['endianness-test'] : [])
qtests_sh4eb = (config_all_devices.has_key('CONFIG_ISA_TESTDEV') ? ['endianness-test'] : [])

View File

@ -1,97 +0,0 @@
From: =?UTF-8?q?Martin=20Li=C5=A1ka?= <Martin Liška>
Date: Tue, 22 Mar 2022 11:40:17 +0100
Subject: Ignore spurious GCC 12 warning
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Git-commit: 0000000000000000000000000000000000000000
References: bsc#1197018
Building with GCC 12 fails producing errors. This is an example (but
there are others):
[ 1051s] Sdk/C/LzmaEnc.c: In function 'LzmaEnc_CodeOneMemBlock':
[ 1051s] Sdk/C/LzmaEnc.c:2641:19: error: storing the address of local
variable 'outStream' in '*p.rc.outStream' [-Werror=dangling-pointer=]
[ 1051s] 2641 | p->rc.outStream = &outStream.vt;
[ 1051s] | ~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~
[ 1051s] Sdk/C/LzmaEnc.c:2624:28: note: 'outStream' declared here
[ 1051s] 2624 | CLzmaEnc_SeqOutStreamBuf outStream;
[ 1051s] | ^~~~~~~~~
[ 1051s] Sdk/C/LzmaEnc.c:2624:28: note: 'pp' declared here
Which is a false positive reported by GCC compiler:
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98503
Work it around by silencing the warning.
Signed-off-by: Martin Liška <martin.liska@suse.com>
Signed-off-by: Dario Faggioli <dfaggioli@suse.com>
---
BaseTools/Source/C/DevicePath/DevicePathUtilities.c | 4 ++++
BaseTools/Source/C/GenFfs/GenFfs.c | 4 ++++
BaseTools/Source/C/GenSec/GenSec.c | 4 ++++
BaseTools/Source/C/LzmaCompress/Sdk/C/LzmaEnc.c | 4 ++++
4 files changed, 16 insertions(+)
diff --git a/roms/edk2/BaseTools/Source/C/DevicePath/DevicePathUtilities.c b/roms/edk2/BaseTools/Source/C/DevicePath/DevicePathUtilities.c
index 2ffefa8ceeeff9a1d0504ad71918..c9fb4329843a8fc34e596b506571 100644
--- a/roms/edk2/BaseTools/Source/C/DevicePath/DevicePathUtilities.c
+++ b/roms/edk2/BaseTools/Source/C/DevicePath/DevicePathUtilities.c
@@ -16,6 +16,10 @@
#include "UefiDevicePathLib.h"
#include <Protocol/DevicePathUtilities.h>
+#if __GNUC__ >= 12
+# pragma GCC diagnostic ignored "-Wstringop-overflow"
+#endif
+
//
// Template for an end-of-device path node.
//
diff --git a/roms/edk2/BaseTools/Source/C/GenFfs/GenFfs.c b/roms/edk2/BaseTools/Source/C/GenFfs/GenFfs.c
index 949025c333251bc5776159a6c535..be55a529743494677f8515906c6c 100644
--- a/roms/edk2/BaseTools/Source/C/GenFfs/GenFfs.c
+++ b/roms/edk2/BaseTools/Source/C/GenFfs/GenFfs.c
@@ -36,6 +36,10 @@ SPDX-License-Identifier: BSD-2-Clause-Patent
#define UTILITY_MAJOR_VERSION 0
#define UTILITY_MINOR_VERSION 1
+#if __GNUC__ >= 12
+# pragma GCC diagnostic ignored "-Wuse-after-free"
+#endif
+
STATIC CHAR8 *mFfsFileType[] = {
NULL, // 0x00
"EFI_FV_FILETYPE_RAW", // 0x01
diff --git a/roms/edk2/BaseTools/Source/C/GenSec/GenSec.c b/roms/edk2/BaseTools/Source/C/GenSec/GenSec.c
index d54a4f9e0a7d67b7c8494ab37011..fb40ad36584c1cd53cc7ca4a9d4f 100644
--- a/roms/edk2/BaseTools/Source/C/GenSec/GenSec.c
+++ b/roms/edk2/BaseTools/Source/C/GenSec/GenSec.c
@@ -37,6 +37,10 @@ SPDX-License-Identifier: BSD-2-Clause-Patent
#define UTILITY_MAJOR_VERSION 0
#define UTILITY_MINOR_VERSION 1
+#if __GNUC__ >= 12
+# pragma GCC diagnostic ignored "-Wuse-after-free"
+#endif
+
STATIC CHAR8 *mSectionTypeName[] = {
NULL, // 0x00 - reserved
"EFI_SECTION_COMPRESSION", // 0x01
diff --git a/roms/edk2/BaseTools/Source/C/LzmaCompress/Sdk/C/LzmaEnc.c b/roms/edk2/BaseTools/Source/C/LzmaCompress/Sdk/C/LzmaEnc.c
index 4e9b499f8d80dc4d6bc13515e794..ab9b7cc34f69bceb74c454ce5032 100644
--- a/roms/edk2/BaseTools/Source/C/LzmaCompress/Sdk/C/LzmaEnc.c
+++ b/roms/edk2/BaseTools/Source/C/LzmaCompress/Sdk/C/LzmaEnc.c
@@ -40,6 +40,10 @@ static unsigned g_STAT_OFFSET = 0;
#define REP_LEN_COUNT 64
+#if __GNUC__ >= 12
+# pragma GCC diagnostic ignored "-Wdangling-pointer"
+#endif
+
void LzmaEncProps_Init(CLzmaEncProps *p)
{
p->level = 5;

View File

@ -1,118 +0,0 @@
From: Alexander Graf <agraf@suse.de>
Date: Thu, 1 Apr 2010 17:36:23 +0200
Subject: Make char muxer more robust wrt small FIFOs
Virtio-Console can only process one character at a time. Using it on S390
gave me strange "lags" where I got the character I pressed before when
pressing one. So I typed in "abc" and only received "a", then pressed "d"
but the guest received "b" and so on.
While the stdio driver calls a poll function that just processes on its
queue in case virtio-console can't take multiple characters at once, the
muxer does not have such callbacks, so it can't empty its queue.
To work around that limitation, I introduced a new timer that only gets
active when the guest can not receive any more characters. In that case
it polls again after a while to check if the guest is now receiving input.
This patch fixes input when using -nographic on s390 for me.
[AF: Rebased for v2.7.0-rc2]
[BR: minor edits to pass qemu's checkpatch script]
Signed-off-by: Bruce Rogers <brogers@suse.com>
---
chardev/char-fe.c | 1 +
chardev/char-mux.c | 16 ++++++++++++++++
chardev/char.c | 1 +
chardev/chardev-internal.h | 3 +++
tests/unit/test-char.c | 1 +
5 files changed, 22 insertions(+)
diff --git a/chardev/char-fe.c b/chardev/char-fe.c
index 7789f7be9c873928be895d618e98..c7556602c77787357c802553ab91 100644
--- a/chardev/char-fe.c
+++ b/chardev/char-fe.c
@@ -21,6 +21,7 @@
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/
+#define HW_POISON_H /* avoid poison since we patch against rules it "enforces" */
#include "qemu/osdep.h"
#include "qemu/error-report.h"
#include "qapi/error.h"
diff --git a/chardev/char-mux.c b/chardev/char-mux.c
index ee2d47b20d9bd0d2ceb132343bf3..5a7c66e7466cefdc96cb95e26b84 100644
--- a/chardev/char-mux.c
+++ b/chardev/char-mux.c
@@ -22,6 +22,7 @@
* THE SOFTWARE.
*/
+#define HW_POISON_H /* avoid poison since we patch against rules it "enforces" */
#include "qemu/osdep.h"
#include "qapi/error.h"
#include "qemu/module.h"
@@ -198,6 +199,17 @@ static void mux_chr_accept_input(Chardev *chr)
be->chr_read(be->opaque,
&d->buffer[m][d->cons[m]++ & MUX_BUFFER_MASK], 1);
}
+
+#if defined(TARGET_S390X)
+ /*
+ * We're still not able to sync producer and consumer, so let's wait a bit
+ * and try again by then.
+ */
+ if (d->prod[m] != d->cons[m]) {
+ qemu_mod_timer(d->accept_timer, qemu_get_clock_ns(vm_clock)
+ + (int64_t)100000);
+ }
+#endif
}
static int mux_chr_can_read(void *opaque)
@@ -332,6 +344,10 @@ static void qemu_chr_open_mux(Chardev *chr,
}
d->focus = -1;
+#if defined(TARGET_S390X)
+ d->accept_timer = qemu_new_timer_ns(vm_clock,
+ (QEMUTimerCB *)mux_chr_accept_input, chr);
+#endif
/* only default to opened state if we've realized the initial
* set of muxes
*/
diff --git a/chardev/char.c b/chardev/char.c
index 0169d8dde4b533c9cf851831b03c..3b1495c0a4fd6b9e81f6703eeb49 100644
--- a/chardev/char.c
+++ b/chardev/char.c
@@ -22,6 +22,7 @@
* THE SOFTWARE.
*/
+#define HW_POISON_H /* avoid poison since we patch against rules it "enforces" */
#include "qemu/osdep.h"
#include "qemu/cutils.h"
#include "monitor/monitor.h"
diff --git a/chardev/chardev-internal.h b/chardev/chardev-internal.h
index 4e03af31476cb88cbe699dfafb23..ae5738ae4e3bd90ae703740a68da 100644
--- a/chardev/chardev-internal.h
+++ b/chardev/chardev-internal.h
@@ -37,6 +37,9 @@ struct MuxChardev {
Chardev parent;
CharBackend *backends[MAX_MUX];
CharBackend chr;
+#if defined(TARGET_S390X)
+ QEMUTimer *accept_timer;
+#endif
int focus;
int mux_cnt;
int term_got_escape;
diff --git a/tests/unit/test-char.c b/tests/unit/test-char.c
index 5b3b48ebacd353d4525226e3aaf5..6ce130a663ec372d18f0a674af8e 100644
--- a/tests/unit/test-char.c
+++ b/tests/unit/test-char.c
@@ -1,3 +1,4 @@
+#define HW_POISON_H /* avoid poison since we patch against rules it "enforces" */
#include "qemu/osdep.h"
#include <glib/gstdio.h>

View File

@ -1,34 +0,0 @@
From: Bruce Rogers <brogers@suse.com>
Date: Thu, 25 Jan 2018 14:16:10 -0700
Subject: Make installed scripts explicitly python3
References: bsc#1077564
We want to explicitly reference python3 in the scripts we install.
Signed-off-by: Bruce Rogers <brogers@suse.com>
---
scripts/analyze-migration.py | 2 +-
scripts/vmstate-static-checker.py | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/scripts/analyze-migration.py b/scripts/analyze-migration.py
index b82a1b0c58c4490ffd0c7d083a44..26f9fb1382108787cc1b56546873 100755
--- a/scripts/analyze-migration.py
+++ b/scripts/analyze-migration.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python3
+#!/usr/bin/python3
#
# Migration Stream Analyzer
#
diff --git a/scripts/vmstate-static-checker.py b/scripts/vmstate-static-checker.py
index b36938836026facea26c0e475579..cf08875c4a51dfe17902e802e76b 100755
--- a/scripts/vmstate-static-checker.py
+++ b/scripts/vmstate-static-checker.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python3
+#!/usr/bin/python3
#
# Compares vmstate information stored in JSON format, obtained from
# the -dump-vmstate QEMU command.

View File

@ -1,28 +0,0 @@
From: Dario Faggioli <dfaggioli@suse.com>
Date: Wed, 16 Feb 2022 19:22:01 +0100
Subject: Makefile: define endianess for cross-building on aarch64
Git-commit: 0000000000000000000000000000000000000000
References: bsc#1193545
Include aarch64 in the endianess check, so we can cross-build from
there too.
Signed-of-by: Dario Faggioli <dfaggioli@suse.com>
---
Makefile.main | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/roms/skiboot/Makefile.main b/roms/skiboot/Makefile.main
index c8a63e8b110f3c6bf115314da7bf..98790ec5c3b0f35272f032798353 100644
--- a/roms/skiboot/Makefile.main
+++ b/roms/skiboot/Makefile.main
@@ -50,7 +50,7 @@ endif
# Host tools and options
HOSTCC=gcc
-HOSTEND=$(shell uname -m | sed -e 's/^i.*86$$/LITTLE/' -e 's/^x86.*/LITTLE/' -e 's/^ppc64le/LITTLE/' -e 's/^ppc.*/BIG/')
+HOSTEND=$(shell uname -m | sed -e 's/^i.*86$$/LITTLE/' -e 's/^x86.*/LITTLE/' -e 's/^ppc64le/LITTLE/' -e 's/^aarch64/LITTLE/' -e 's/^ppc.*/BIG/')
HOSTCFLAGS:=-O1 $(CWARNS) -DHAVE_$(HOSTEND)_ENDIAN -MMD
HOSTCFLAGS += $(call try-cflag,$(HOSTCC),-std=gnu11)
HOSTCFLAGS += $(call try-cflag,$(HOSTCC),-m64)

View File

@ -1,57 +0,0 @@
From: Aurelien Jarno <aurelien@aurel32.net>
Date: Fri, 28 Jan 2022 18:33:46 +0100
Subject: Makefile: fix build with binutils 2.38
Git-commit: 5d53b55aa77ffeefd4012445dfa6ad3535e1ff2c
From version 2.38, binutils default to ISA spec version 20191213. This
means that the csr read/write (csrr*/csrw*) instructions and fence.i
instruction has separated from the `I` extension, become two standalone
extensions: Zicsr and Zifencei. As the kernel uses those instruction,
this causes the following build failure:
CC lib/sbi/sbi_tlb.o
<<BUILDDIR>>/lib/sbi/sbi_tlb.c: Assembler messages:
<<BUILDDIR>>/lib/sbi/sbi_tlb.c:190: Error: unrecognized opcode `fence.i'
make: *** [Makefile:431: <<BUILDDIR>>/build/lib/sbi/sbi_tlb.o] Error 1
The fix is to specify those extensions explicitly in -march. However as
older binutils version do not support this, we first need to detect
that.
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
Tested-by: Alexandre Ghiti <alexandre.ghiti@canonical.com>
Reviewed-by: Anup Patel <anup@brainfault.org>
Signed-off-by: Dario Faggioli <dfaggioli@suse.com>
---
Makefile | 9 ++++++++-
1 file changed, 8 insertions(+), 1 deletion(-)
diff --git a/roms/opensbi/Makefile b/roms/opensbi/Makefile
index 062883e9695fb4447d2e61d7f282..fc1ea13e519a702e8b09d9006a2c 100644
--- a/roms/opensbi/Makefile
+++ b/roms/opensbi/Makefile
@@ -153,6 +153,9 @@ OPENSBI_LD_PIE := $(shell $(CC) $(CLANG_TARGET) $(RELAX_FLAG) $(USE_LD_FLAG) -fP
# Check whether the compiler supports -m(no-)save-restore
CC_SUPPORT_SAVE_RESTORE := $(shell $(CC) $(CLANG_TARGET) $(RELAX_FLAG) -nostdlib -mno-save-restore -x c /dev/null -o /dev/null 2>&1 | grep "\-save\-restore" >/dev/null && echo n || echo y)
+# Check whether the assembler and the compiler support the Zicsr and Zifencei extensions
+CC_SUPPORT_ZICSR_ZIFENCEI := $(shell $(CC) $(CLANG_TARGET) $(RELAX_FLAG) -nostdlib -march=rv$(OPENSBI_CC_XLEN)imafd_zicsr_zifencei -x c /dev/null -o /dev/null 2>&1 | grep "zicsr\|zifencei" > /dev/null && echo n || echo y)
+
# Build Info:
# OPENSBI_BUILD_TIME_STAMP -- the compilation time stamp
# OPENSBI_BUILD_COMPILER_VERSION -- the compiler version info
@@ -223,7 +226,11 @@ ifndef PLATFORM_RISCV_ABI
endif
ifndef PLATFORM_RISCV_ISA
ifneq ($(PLATFORM_RISCV_TOOLCHAIN_DEFAULT), 1)
- PLATFORM_RISCV_ISA = rv$(PLATFORM_RISCV_XLEN)imafdc
+ ifeq ($(CC_SUPPORT_ZICSR_ZIFENCEI), y)
+ PLATFORM_RISCV_ISA = rv$(PLATFORM_RISCV_XLEN)imafdc_zicsr_zifencei
+ else
+ PLATFORM_RISCV_ISA = rv$(PLATFORM_RISCV_XLEN)imafdc
+ endif
else
PLATFORM_RISCV_ISA = $(OPENSBI_CC_ISA)
endif

View File

@ -1,33 +0,0 @@
From: Alexander Graf <agraf@suse.de>
Date: Fri, 6 Jan 2012 01:05:55 +0100
Subject: PPC: KVM: Disable mmu notifier check
When using hugetlbfs (which is required for HV mode KVM on 970), we
check for MMU notifiers that on 970 can not be implemented properly.
So disable the check for mmu notifiers on PowerPC guests, making
KVM guests work there, even if possibly racy in some odd circumstances.
Signed-off-by: Bruce Rogers <brogers@suse.com>
---
softmmu/physmem.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/softmmu/physmem.c b/softmmu/physmem.c
index dc3c3e5f2e7071eb21e77f3d95c2..b89279889e13b9d1bc37440a67a8 100644
--- a/softmmu/physmem.c
+++ b/softmmu/physmem.c
@@ -2077,11 +2077,13 @@ RAMBlock *qemu_ram_alloc_from_fd(ram_addr_t size, MemoryRegion *mr,
return NULL;
}
+#ifndef TARGET_PPC
if (kvm_enabled() && !kvm_has_sync_mmu()) {
error_setg(errp,
"host lacks kvm mmu notifiers, -mem-path unsupported");
return NULL;
}
+#endif
size = HOST_PAGE_ALIGN(size);
file_size = get_file_size(fd);

View File

@ -1,92 +1,202 @@
The qemu package includes a special maintenance workflow in order to support git
based patching, including of submodules. Please use it in order to have changes
you make be acceptable to the package maintainers. A bash script (update_git.sh)
implements this workflow.
# PACKAGING WORKFLOW(S)
A local clone of the upstream repo(s) is required for the packaging workflow.
If none is found, the qemu superproject will be cloned as a shallow repo for the
workflow script's use. If you intend to do more than superficial work in the
qemu package, unshallow it. The submodule local repos aren't needed unless you
intend to do patch work there. See config.sh for the local repo paths.
The qemu package follows a special maintenance workflow in order to support
git based patching, including of submodules. Please use it in order to have
changes you make be acceptable to the package maintainers.
The qemu.spec file is generated from a template file (qemu.spec.in), so to make
spec file changes outside of the patch file references (handled by the script),
you need to edit the template file, and NOT the qemu.spec file. The spec file's
version and patch references are added when update_git.sh is passed certain
commands, as described below.
All the development happens at https://github.com/openSUSE/qemu. The relevant
branch is `factory`.
If you are not modifying any patches or their order, but just need to update the
spec file from a changed template, run 'bash ./update_git.sh refresh'.
Any change to the package should be submitted in the form of a Pull Request
against such repository and branch.
If the set of patches is being modified, including their order, you will want to
first run 'bash ./update_git.sh pkg2git', which makes the current package patch
set available in a local git branch named 'frombundle' (see config.sh for the
locations). This incarnation of the package patches comes from a "bundle of git
bundles", included as a package source file named bundles.tar.xz, which the
script extracts to the corresponding local frombundle branch. To add, remove or
modify the package patches, you will then do that work in a local branch whose
name corresponds to that qemu package's release version as follows:
The qemu major and minor release numbers are part of the name, prefixed by
'opensuse-', so, for example, for the v5.2.0 based SLE-15-SP3 qemu, the branch
would be named 'opensuse-5.2'. You want to start your work based on the current
patchqueue as contained in 'frombundle', so one approach is to do (depending on
your local repo's current state), 'git checkout -f --recurse-submodules -B
opensuse-5.2 frombundle', and then cherry-pick upstream patches into it, or
interactive rebase it to modify or delete patches, etc. Be careful to keep the
branch based on the upstream tag which represents the package tarball however!
The reminder of this document provides more details, explanations and examples
for both contributors and maintainers.
Once you have the patch queue ready to go, simply run 'bash ./update_git.sh
git2pkg' (in your local obs branch directory) to refresh the bundles.tar.xz
file, as well as the package spec and patch files. The package qemu.changes file
is modified to list added or removed patches as a starting point for documenting
the change.
When you are ready to check in the package, using 'bash update_git.sh ci' is
provided as a convenience (and to help preserve correct spec file formatting,
since a 'normal osc check-in' messes up the spec file a bit).
# FOR CONTRIBUTORS
Additional Notes:
## BACKPORTING AN UPSTREAM PATCH
The maintainer and automation use another workflow mode dealing with packaging
the latest upstream qemu. See 'LATEST' references in the scripts for details,
as this is an 'expert mode' and isn't documented here.
For submitting a backport of an upstream patch, proceed as follows (a local
copy of the repository is of course necessary).
Patches which are from an upstream git repo should have the commit id recorded
just below the Subject line (after a blank line) as follows:
Identify the hash of the commit that needs backporting and do:
Git-commit: <40-char-sha-id>
git cherry-pick -esx <commit_hash>
If a patch is anticipated to be shortly included in upstream repo, mark that
fact by doing the above with 40 0's, which will flag it as needing to be updated
in the near future.
This way, the changelog will already contain the reference to the upstream
commit itself, and the appropriate "Signed-off-by:" tag.
We try to maintain, if possible, patch ordering as follows: (tarball as base),
patches which come from upstream commits in commit order, patches which will
soon be upstream (as mentioned above), followed by our private patches.
If the backport is related to Bugzilla (or Jira, and/or CVEs, etc) entry, add a
reference to that, such as:
Bug or feature tracking identifiers should also be added to the patch similarly,
using the abbreviations identified here:
http://en.opensuse.org/openSUSE:Packaging_Patches_guidelines#Current_set_of_abbreviations
using the "Reference:" tag, with multiple entries comma separated.
Resolves: bsc#123456
The ability to provide a conditional inclusion of a patch (eg based on
architecture, is provided by this workflow by using the "Include-If:" tag, as
shown here:
Or:
Include-If: %ifarch aarch64
References: jsc#PED-1234
Or:
Resolves: bsc#7891011 (CVE-1234-5678)
Add it between the "(cherry picked from commit ...)" line and the "Signed-off-by:"
line that follows it.
An example of the end result, where Dario Faggioli (<dfaggioli@suse.com>) is
backporting upstream commit abe2c4bdb65e8dd in order to fix bug 1209546 from
bugzilla.opensuse.org is:
test-vmstate: fix bad GTree usage, use-after-free
According to g_tree_foreach() documentation:
"The tree may not be modified while iterating over it (you can't
add/remove items)."
[...]
Get rid of the node removal within the tree traversal. Also
check the trees have the same number of nodes before the actual
diff.
Fixes: 9a85e4b8f6 ("migration: Support gtree migration")
Resolves: https://gitlab.com/qemu-project/qemu/-/issues/1518
Signed-off-by: Marc-Andr303251 Lureau <marcandre.lureau@redhat.com>
Signed-off-by: Eric Auger <eric.auger@redhat.com>
Reported-by: Richard W.M. Jones <rjones@redhat.com>
Tested-by: Richard W.M. Jones <rjones@redhat.com>
Reviewed-by: Richard W.M. Jones <rjones@redhat.com>
Reviewed-by: Daniel P. Berrang303251 <berrange@redhat.com>
Reviewed-by: Juan Quintela <quintela@redhat.com>
Signed-off-by: Juan Quintela <quintela@redhat.com>
(cherry picked from commit abe2c4bdb65e8dd9cb2f01c355baa394bf49a8af)
Resolves: bsc#1209546
Signed-off-by: Dario Faggioli <dfaggioli@suse.com>
Of course, all conflicts and issues should be resolved, before committing the
result/completing the cherry-picking.
At this point, the PR should be opened. As soon as that happens, some checks
will be run automatically and the maintainers of the QEMU package will review
and, eventually, merge or reject it.
PRs containing multiple commits are allowed. They are actually encouraged, if
the patches being backported are related and/or dependant among each others. It
must, however, always be the case that each upstream commit is cherry-picked
individually.
Note that there is no need to change any 'qemu.changes' file. That will, in
fact be handled by the package maintainers (and such RPM changelog entries will
be automatically generated out of the git commit messages).
## ADDING A PATCH NOT COMING FROM UPSTREAM
Downstream patches, i.e., patches that are not backports of upstream commits,
should be avoided as much as possible. The (largely!) recommended approach is
to submit the patch upstream and then, once it is accepted and committed,
backport it.
If that is not possible (for whatever reason), a pull request with a downstream
only patch can be opened. The procedure is almost identical to the one described
above for upstream backports. The main differences are:
1) Downstream only patch cannot be cherry-picked from upstream commits, of
course. Therefore, the PR will consist of the commit(s) that introduces the
patch.
2) There will be no "(cherry picked from commit ...") line in the changelog
of a downstream only patch. On the other hand, the "Resolves:" or
"Reference:" tag, that link the patch to the issue it's trying to solve,
must be there, and the same is true for the "Signed-off-by:" tag
indicating who is proposing adding it.
3) It is required that the subject of the commit starts with the [openSUSE] tag.
An example of a downstream only commit is:
[openSUSE] pc: q35: Bump max_cpus to 1024
And use the new limit for machine version 7.1 too.
Keep the old limit of 288 for machine versions 7.0 and earlier.
Signed-off-by: Dario Faggioli <dfaggioli@suse.com>
References: bsc#1202282, jsc#PED-2592
Signed-off-by: Dario Faggioli <dfaggioli@suse.com>
## CHANGING THE PACKAGING FILES
Files that are necessary for building the RPM (like the spec file) or that
are part of the RPM and will be copied in the appropriate places in the
filesystem when it is installed are also part of the git repository. In fact,
they can be found in the `rpm/` directory.
Any addition, removal or change of and on any of those file should just be done
as a regular commit, and a pull request including such commit(s) should be
opened.
Commits to packaging files should be prefixed with both the [openSUSE] tag and
an [RPM] tag. An example can be this one:
[openSUSE][RPM] Add downstream packaging files
Stash the "packaging files" in the QEMU repository, in the rpm/
directory. During package build, they will be pulled out from there
and used as appropriate.
Signed-off-by: Dario Faggioli <dfaggioli@suse.com>
## ADDING A PATCH IN A SUBMODULE
For including a backport, or in general adding a patch, to a submodule, the
downstream git repository for the submodule must be checkedout at the location
where the submodule resides, in the main QEMU git repository.
For example, for including a downstream patch in the ipxe submodule, a local
copy of the repository https://github.com/openSUSE/qemu-ipxe.git is necessary.
After checking out the `factory` branch, add the patch there (cherry-picking
it from upstream, if it is a backport, and respecting all the tagging rules
explained in the previous sections).
At this point:
- the branch must be pushed;
- in the main (qemu) repository, a commit must be added and pushed, for making
sure that the new patch is picked up.
Basically, the commit in the main repository is how the information that a
submodule as a new head is recorded.
The changelog of such commit shall include a reference to the subjects of all
the new commits in the various submodules. Unfortinately, there is not yet a
good way of achieving this automatically.
As last step, a pull request should be opened, as usual.
## REMOVING PATCHES
If a patch, or, in general, a commit, that is already part of the repository
must be removed, this must be done without rewriting the git history, i.e., with
a revert (and then a pull request with the revert should be opened).
# FOR MAINTAINERS
## REVIEWING AND ACCEPTING PRs
TODO
## COMMITTING CHANGES INTO FACTORY
TODO
## UPDATING THE BASE QEMU VERSION
TODO
# MANUAL AND AUTOMATED CHECKS
TODO
This will cause the patch application in the spec file to be done as follows:
%ifarch aarch64
%patch0013 -p1
%endif
A trick worth noting is, if a given git tracked patch is to be applied in a way
that can't be done in the normal patching section of the spec file, you can
still include the patch, and use it by name with the patch program elsewhere in
the spec file by doing something such as:
Include-If: %if 0%{?patch-possibly-applied-elsewhere}
(this variable will remain undefined in the spec file) And then elsewhere in the
spec file, the actual patch (eg specially-handled-change.patch) is referenced as
eg:
patch -p1 < %_sourcedir/specially-handled-change.patch

View File

@ -1,47 +0,0 @@
From: =?UTF-8?q?Andreas=20F=C3=A4rber?= <afaerber@suse.de>
Date: Sun, 15 Jan 2012 19:53:49 +0100
Subject: Raise soft address space limit to hard limit
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
For SLES we want users to be able to use large memory configurations
with KVM without fiddling with ulimit -Sv.
Signed-off-by: Andreas Färber <afaerber@suse.de>
[BR: add include for sys/resource.h]
Signed-off-by: Bruce Rogers <brogers@suse.com>
---
softmmu/vl.c | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/softmmu/vl.c b/softmmu/vl.c
index 706bd7cff793dff6433c93dc6601..738736c50d90e7144743dfe0f61c 100644
--- a/softmmu/vl.c
+++ b/softmmu/vl.c
@@ -42,6 +42,7 @@
#include "sysemu/reset.h"
#include "sysemu/runstate.h"
#include "sysemu/runstate-action.h"
+#include <sys/resource.h>
#include "sysemu/seccomp.h"
#include "sysemu/tcg.h"
#include "sysemu/xen.h"
@@ -2613,6 +2614,17 @@ void qemu_init(int argc, char **argv, char **envp)
MachineClass *machine_class;
bool userconfig = true;
FILE *vmstate_dump_file = NULL;
+ struct rlimit rlimit_as;
+
+ /*
+ * Try to raise the soft address space limit.
+ * Default on SLES 11 SP2 is 80% of physical+swap memory.
+ */
+ getrlimit(RLIMIT_AS, &rlimit_as);
+ if (rlimit_as.rlim_cur < rlimit_as.rlim_max) {
+ rlimit_as.rlim_cur = rlimit_as.rlim_max;
+ setrlimit(RLIMIT_AS, &rlimit_as);
+ }
qemu_add_opts(&qemu_drive_opts);
qemu_add_drive_opts(&qemu_legacy_drive_opts);

View File

@ -1,42 +0,0 @@
From: Bruce Rogers <brogers@suse.com>
Date: Mon, 14 Sep 2020 14:15:00 -0600
Subject: Revert "roms/efirom, tests/uefi-test-tools: update edk2's own
submodules first"
This reverts commit ec87b5daca761039bbcf781eedbe4987f790836f.
No need. In our build system submodules are checked out.
Signed-off-by: Bruce Rogers <brogers@suse.com>
[DF: Rebased on top of 6.2.0]
Signed-off-by: Dario Faggioli <dfaggioli@suse.com>
---
roms/Makefile | 2 --
tests/uefi-test-tools/Makefile | 1 -
2 files changed, 3 deletions(-)
diff --git a/roms/Makefile b/roms/Makefile
index 0e652aff895fe0680cf35e43b299..fd2c5824787e1c983f6e66170a60 100644
--- a/roms/Makefile
+++ b/roms/Makefile
@@ -151,8 +151,6 @@ build-efi-roms: build-pxe-roms
# efirom
#
edk2-basetools:
- cd edk2/BaseTools && git submodule update --init --force \
- Source/C/BrotliCompress/brotli
$(MAKE) -C edk2/BaseTools \
PYTHON_COMMAND=$${EDK2_PYTHON_COMMAND:-python3} \
EXTRA_OPTFLAGS='$(EDK2_BASETOOLS_OPTFLAGS)' \
diff --git a/tests/uefi-test-tools/Makefile b/tests/uefi-test-tools/Makefile
index 471f0de981090b3d419b8bc7890c..1dcddcdbbabf1c7dbea9c233d0ef 100644
--- a/tests/uefi-test-tools/Makefile
+++ b/tests/uefi-test-tools/Makefile
@@ -99,7 +99,6 @@ Build/bios-tables-test.%.efi: build-edk2-tools
+./build.sh $(edk2_dir) BiosTablesTest $* $@
build-edk2-tools:
- cd $(edk2_dir)/BaseTools && git submodule update --init --force
$(MAKE) -C $(edk2_dir)/BaseTools \
PYTHON_COMMAND=$${EDK2_PYTHON_COMMAND:-python3} \
EXTRA_OPTFLAGS='$(EDK2_BASETOOLS_OPTFLAGS)' \

View File

@ -1,55 +0,0 @@
From: Dario Faggioli <dfaggioli@suse.com>
Date: Tue, 24 May 2022 20:52:17 +0200
Subject: Revert "tests/qtest: enable more vhost-user tests by default"
Git-commit: 0000000000000000000000000000000000000000
Revert commit "tests/qtest: enable more vhost-user tests by default"
(8dcb404bff6d9), as it causes prooblem when building with GCC 12 and LTO
enabled.
This should be considered temporary, until the actual reason why the
code of the tests that are added in that commit breaks.
It has been reported upstream, and will be (hopefully) solved there:
https://lore.kernel.org/qemu-devel/1d3bbff9e92e7c8a24db9e140dcf3f428c2df103.camel@suse.com/
Signed-off-by: Dario Faggioli <dfaggioli@suse.com>
---
tests/qtest/vhost-user-test.c | 21 ++++++++++++---------
1 file changed, 12 insertions(+), 9 deletions(-)
diff --git a/tests/qtest/vhost-user-test.c b/tests/qtest/vhost-user-test.c
index 8bf390be207cd2c016662c78f4a4..a4f7cc4359fac1bc6f556ef28810 100644
--- a/tests/qtest/vhost-user-test.c
+++ b/tests/qtest/vhost-user-test.c
@@ -996,17 +996,20 @@ static void register_vhost_user_test(void)
"virtio-net",
test_migrate, &opts);
- opts.before = vhost_user_test_setup_reconnect;
- qos_add_test("vhost-user/reconnect", "virtio-net",
- test_reconnect, &opts);
+ /* keeps failing on build-system since Aug 15 2017 */
+ if (getenv("QTEST_VHOST_USER_FIXME")) {
+ opts.before = vhost_user_test_setup_reconnect;
+ qos_add_test("vhost-user/reconnect", "virtio-net",
+ test_reconnect, &opts);
- opts.before = vhost_user_test_setup_connect_fail;
- qos_add_test("vhost-user/connect-fail", "virtio-net",
- test_vhost_user_started, &opts);
+ opts.before = vhost_user_test_setup_connect_fail;
+ qos_add_test("vhost-user/connect-fail", "virtio-net",
+ test_vhost_user_started, &opts);
- opts.before = vhost_user_test_setup_flags_mismatch;
- qos_add_test("vhost-user/flags-mismatch", "virtio-net",
- test_vhost_user_started, &opts);
+ opts.before = vhost_user_test_setup_flags_mismatch;
+ qos_add_test("vhost-user/flags-mismatch", "virtio-net",
+ test_vhost_user_started, &opts);
+ }
opts.before = vhost_user_test_setup_multiqueue;
opts.edge.extra_device_opts = "mq=on";

View File

@ -1,62 +0,0 @@
From: =?UTF-8?q?Martin=20Li=C5=A1ka?= <martin.liska@suse.com>
Date: Tue, 22 Mar 2022 10:52:19 +0100
Subject: Silence GCC 12 spurious warnings
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Git-commit: 0000000000000000000000000000000000000000
References: bsc#1197018
With GCC 12, build fails like this:
[ 6245s] inlined from 'memcpy_user' at
arch/x86/include/librm.h:155:2,
[ 6245s] inlined from 'copy_from_user' at
include/ipxe/uaccess.h:338:2,
[ 6245s] inlined from 'acpi_sx_zsdt' at core/acpi.c:217:3:
[ 6245s] arch/x86/include/bits/string.h:79:32: error: array subscript
'union <anonymous>[0]' is partly outside array bounds of 'union
<anonymous>[1]' [-Werror=array-bounds]
[ 6245s] 79 | dest_u->u32[0] = src_u->u32[0];
[ 6245s] | ~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~
[ 6245s] core/acpi.c: In function 'acpi_sx_zsdt':
[ 6245s] core/acpi.c:191:11: note: object 'buf' of size 4
[ 6245s] 191 | } buf;
[ 6245s] | ^~~
Which is a false positive reported by GCC compiler:
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98503
Silence the watning.
Signed-off-by: Martin Liška <martin.liska@suse.com>
Signed-off-by: Dario Faggioli <dfaggioli@suse.com>
---
src/Makefile.housekeeping | 13 +++++++++++++
1 file changed, 13 insertions(+)
diff --git a/roms/ipxe/src/Makefile.housekeeping b/roms/ipxe/src/Makefile.housekeeping
index 36cfb950e014914232f254b7edbb..cad327d31dbe0bd69d956c32d28d 100644
--- a/roms/ipxe/src/Makefile.housekeeping
+++ b/roms/ipxe/src/Makefile.housekeeping
@@ -183,6 +183,19 @@ WNAPM_TEST = $(CC) -Wno-address-of-packed-member -x c -c /dev/null \
WNAPM_FLAGS := $(shell $(WNAPM_TEST) && \
$(ECHO) '-Wno-address-of-packed-member')
WORKAROUND_CFLAGS += $(WNAPM_FLAGS)
+
+# gcc 12.1 generates false positive warnings. Inhibit the warnings.
+WNAB_TEST = $(CC) -Wno-array-bounds -x c -c /dev/null \
+ -o /dev/null >/dev/null 2>&1
+WNAB_FLAGS := $(shell $(WNAB_TEST) && \
+ $(ECHO) '-Wno-array-bounds')
+WORKAROUND_CFLAGS += $(WNAB_FLAGS)
+
+WNDP_TEST = $(CC) -Wno-dangling-pointer-x c -c /dev/null \
+ -o /dev/null >/dev/null 2>&1
+WNDP_FLAGS := $(shell $(WNAB_TEST) && \
+ $(ECHO) '-Wno-dangling-pointer')
+WORKAROUND_CFLAGS += $(WNDP_FLAGS)
endif
# Some versions of gas choke on division operators, treating them as

View File

@ -3,8 +3,7 @@
<overwrite>
<conditions>
<package>qemu</package>
<package>qemu:linux-user</package>
<package>qemu:testsuite</package>
<package>qemu:qemu-linux-user</package>
</conditions>
<hardware>
<disk>
@ -12,18 +11,6 @@
</disk>
</hardware>
</overwrite>
<!-- To test qemu-linux-user, armv7l needs more than the default memory -->
<overwrite>
<conditions>
<arch>armv7l</arch>
<package>qemu:linux-user</package>
</conditions>
<hardware>
<memory>
<size unit="M">8192</size>
</memory>
</hardware>
</overwrite>
<!-- To build qemu, s390x needs more than the default memory -->
<overwrite>
<conditions>
@ -36,13 +23,13 @@
</memory>
</hardware>
</overwrite>
<!-- Excluding ARM, qemu-testsuite needs more than the default memory -->
<!-- And this is the case for (some of the) other arch-es as well -->
<overwrite>
<conditions>
<arch>i586</arch>
<arch>x86_64</arch>
<arch>ppc64le</arch>
<package>qemu:testsuite</package>
<package>qemu</package>
</conditions>
<hardware>
<memory>
@ -54,7 +41,7 @@
<overwrite>
<conditions>
<arch>ppc64</arch>
<package>qemu:testsuite</package>
<package>qemu</package>
</conditions>
<hardware>
<memory>
@ -73,4 +60,16 @@
<processors>8</processors>
</hardware>
</overwrite>
<!-- To test qemu-linux-user, armv7l needs more than the default memory -->
<overwrite>
<conditions>
<arch>armv7l</arch>
<package>qemu:qemu-linux-user</package>
</conditions>
<hardware>
<memory>
<size unit="M">8192</size>
</memory>
</hardware>
</overwrite>
</constraints>

View File

@ -1,3 +1,3 @@
<multibuild>
<package>linux-user</package>
<package>qemu-linux-user</package>
</multibuild>

22
_service Normal file
View File

@ -0,0 +1,22 @@
<services>
<service name="obs_scm" mode="manual">
<param name="scm">git</param>
<param name="url">https://github.com/opensuse/qemu.git</param>
<param name="revision">factory</param>
<param name="versionformat">@PARENT_TAG@</param>
<param name="versionrewrite-pattern">[v]?([^-+a-z]+)(.*)</param>
<param name="versionrewrite-replacement">\1</param>
<param name="changesgenerate">enable</param>
<param name="extract">rpm/common.inc</param>
<param name="extract">rpm/qemu.spec</param>
<param name="extract">rpm/qemu-linux-user.spec</param>
<param name="extract">rpm/README.PACKAGING</param>
<param name="extract">rpm/qemu-rpmlintrc</param>
</service>
<service name="set_version" mode="manual"/>
<service name="tar" mode="buildtime"/>
<service name="recompress" mode="buildtime">
<param name="file">*.tar</param>
<param name="compression">xz</param>
</service>
</services>

4
_servicedata Normal file
View File

@ -0,0 +1,4 @@
<servicedata>
<service name="tar_scm">
<param name="url">https://github.com/opensuse/qemu.git</param>
<param name="changesrevision">aaca3d0d6b11f122737d41bb934749ba718229da</param></service></servicedata>

View File

@ -1,31 +0,0 @@
From: Bruce Rogers <brogers@suse.com>
Date: Tue, 16 Feb 2021 11:29:41 -0700
Subject: [ath5k] Add missing AR5K_EEPROM_READ in ath5k_eeprom_read_turbo_modes
Git-commit: 19d0fab40f07eeea7fe6b9e0d4e8d4b0c2de215f
References: boo#1181922
The GCC11 compiler pointed out something that apparently no previous
compiler noticed: in ath5k_eeprom_pread_turbo_modes, local variable
val is used uninitialized. From what I can see, the code is just
missing an initial AR5K_EEPROM_READ. Add it right before the switch
statement.
Signed-off-by: Bruce Rogers <brogers@suse.com>
Signed-off-by: Michael Brown <mcb30@ipxe.org>
---
src/drivers/net/ath/ath5k/ath5k_eeprom.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/roms/ipxe/src/drivers/net/ath/ath5k/ath5k_eeprom.c b/roms/ipxe/src/drivers/net/ath/ath5k/ath5k_eeprom.c
index 983d206b7e36cc4981ecbb760a41..12519bc599fb7d4757da43a6bcc2 100644
--- a/roms/ipxe/src/drivers/net/ath/ath5k/ath5k_eeprom.c
+++ b/roms/ipxe/src/drivers/net/ath/ath5k/ath5k_eeprom.c
@@ -416,6 +416,7 @@ ath5k_eeprom_read_turbo_modes(struct ath5k_hw *ah,
if (ee->ee_version < AR5K_EEPROM_VERSION_5_0)
return 0;
+ AR5K_EEPROM_READ(o++, val);
switch (mode){
case AR5K_EEPROM_MODE_11A:
ee->ee_switch_settling_turbo[mode] = (val >> 6) & 0x7f;

View File

@ -1,79 +0,0 @@
From: Sam Li <faithilikerun@gmail.com>
Date: Sat, 24 Sep 2022 22:48:15 +0800
Subject: block/io_uring: revert "Use io_uring_register_ring_fd() to skip fd
operations"
Git-commit: 0000000000000000000000000000000000000000
References: bsc#1204082
Resolves: https://gitlab.com/qemu-project/qemu/-/issues/1193
The commit "Use io_uring_register_ring_fd() to skip fd operations" broke
when booting a guest with iothread and io_uring. That is because the
io_uring_register_ring_fd() call is made from the main thread instead of
IOThread where io_uring_submit() is called. It can not be guaranteed
to register the ring fd in the correct thread or unregister the same ring
fd if the IOThread is disabled. This optimization is not critical so we
will revert previous commit.
This reverts commit e2848bc574fe2715c694bf8fe9a1ba7f78a1125a
and 77e3f038af1764983087e3551a0fde9951952c4d.
Signed-off-by: Sam Li <faithilikerun@gmail.com>
Signed-off-by: Dario Faggioli <dfaggioli@suse.com>
---
block/io_uring.c | 13 +------------
meson.build | 1 -
2 files changed, 1 insertion(+), 13 deletions(-)
diff --git a/block/io_uring.c b/block/io_uring.c
index a1760152e0581c279e22b1c3a8d0..973e15d87693370dd3388f511962 100644
--- a/block/io_uring.c
+++ b/block/io_uring.c
@@ -11,7 +11,6 @@
#include "qemu/osdep.h"
#include <liburing.h>
#include "block/aio.h"
-#include "qemu/error-report.h"
#include "qemu/queue.h"
#include "block/block.h"
#include "block/raw-aio.h"
@@ -19,7 +18,6 @@
#include "qapi/error.h"
#include "trace.h"
-
/* io_uring ring size */
#define MAX_ENTRIES 128
@@ -432,17 +430,8 @@ LuringState *luring_init(Error **errp)
}
ioq_init(&s->io_q);
-#ifdef CONFIG_LIBURING_REGISTER_RING_FD
- if (io_uring_register_ring_fd(&s->ring) < 0) {
- /*
- * Only warn about this error: we will fallback to the non-optimized
- * io_uring operations.
- */
- warn_report("failed to register linux io_uring ring file descriptor");
- }
-#endif
-
return s;
+
}
void luring_cleanup(LuringState *s)
diff --git a/meson.build b/meson.build
index 6641e86c0107906bb07d6b35d54a..265fea0648a8b651306deae60c0f 100644
--- a/meson.build
+++ b/meson.build
@@ -1805,7 +1805,6 @@ config_host_data.set('CONFIG_LIBNFS', libnfs.found())
config_host_data.set('CONFIG_LIBSSH', libssh.found())
config_host_data.set('CONFIG_LINUX_AIO', libaio.found())
config_host_data.set('CONFIG_LINUX_IO_URING', linux_io_uring.found())
-config_host_data.set('CONFIG_LIBURING_REGISTER_RING_FD', cc.has_function('io_uring_register_ring_fd', prefix: '#include <liburing.h>', dependencies:linux_io_uring))
config_host_data.set('CONFIG_LIBPMEM', libpmem.found())
config_host_data.set('CONFIG_NUMA', numa.found())
config_host_data.set('CONFIG_OPENGL', opengl.found())

View File

@ -1,11 +0,0 @@
# Access control file for qemu bridge helper
# Syntax consists of:
# # comment (ignored)
# allow all
# allow <bridge_name>
# deny all
# deny <bridge_name>
# include /path/to/additional/ACL/file
# Users are blacklisted by default and 'deny' takes precedence over 'allow'.
# Including additional ACL files allows file access permissions to be used as
# a component of the policy to allow access or deny access to specific bridges.

View File

@ -1,28 +0,0 @@
From: Bruce Rogers <brogers@suse.com>
Date: Thu, 4 Feb 2021 11:06:47 -0700
Subject: build: be explicit about -mx86-used-note=no
binutils v2.36 switched the default for the assembler's -mx86-used-note,
which caused breakage building seavgabios as follows:
ld: section .note.gnu.property LMA [0000000000000000,0000000000000027]
overlaps section .text LMA [0000000000000000,0000000000006e87]
Fix by explicitly specifying -mx86-used-note=no to assembler in seabios'
Makefile (boo#1181775)
Signed-off-by: Bruce Rogers <brogers@suse.com>
---
Makefile | 1 +
1 file changed, 1 insertion(+)
diff --git a/roms/seabios/Makefile b/roms/seabios/Makefile
index 5ced69cd8be94d36c8aaa887ce73..e0c51a4e455e9796437b7f59dd17 100644
--- a/roms/seabios/Makefile
+++ b/roms/seabios/Makefile
@@ -73,6 +73,7 @@ COMMONCFLAGS += $(call cc-option,$(CC),-fstack-check=no,)
COMMONCFLAGS += $(call cc-option,$(CC),-Wno-address-of-packed-member,)
COMMONCFLAGS += $(call cc-option,$(CC),-fcf-protection=none,)
COMMA := ,
+COMMONCFLAGS += $(call cc-option,$(CC),-Wa$(COMMA)-mx86-used-note=no,)
CFLAGS32FLAT := $(COMMONCFLAGS) -DMODE16=0 -DMODESEGMENT=0
CFLAGSSEG := $(COMMONCFLAGS) -DMODESEGMENT=1 -fno-defer-pop \

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:9f317be581f7c79828e97405398736903b44f3f132fe075201fca2975142658b
size 43516

102
common.inc Normal file
View File

@ -0,0 +1,102 @@
%define _buildshell /bin/bash
%define sbver 1.16.3_3_gc13ff2cd
%define srcdir %{_builddir}/%buildsubdir
%define blddir %srcdir/build
%define build_x86_firmware 0
%define build_ppc_firmware 0
%define build_opensbi_firmware 0
%define kvm_available 0
%define legacy_qemu_kvm 0
%define force_fit_virtio_pxe_rom 1
%define with_xen 0%{!?_without_xen:1}
%if "%{?distribution}" == ""
%define distro private-build
%else
%define distro %{distribution}
%endif
# Items to exclude in ALP-based products
%if 0%{?suse_version} == 1600
%define with_xen 0
%endif
%bcond_with system_membarrier
%bcond_with malloc_trim
%bcond_with chkqtests
%if 0%{?suse_version} > 1600
# canokey is an openSUSE thing, not a SLE one
%ifarch x86_64
%bcond_without canokey
%else
%bcond_with canokey
%endif
%endif
%if 0%{?suse_version} > 1600
# XDP seems not to be there in SLE...
%bcond_without xdp
%else
%bcond_with xdp
%endif
# Make it possible to build without spice (for SLE/Leap Micro)
%bcond_without spice
# We do not have the stuff needed to compile rutabaga support.
# If/when we want to do it, we can check how it's done here:
# https://src.fedoraproject.org/rpms/qemu/c/deeb9357cb751df21c566fd8408936cfb034d43b?branch=rawhide
%define has_rutabaga_gfx 0
%define has_virtiofsd 1
# Upstream virtiofsd does not even build on 32 bit systems
%ifarch %ix86 %arm
%define has_virtiofsd 0
%endif
# non-x86 archs still seem to have some issues with Link Time Optimization
%ifnarch %ix86 x86_64
%define _lto_cflags %{nil}
%endif
%ifarch aarch64
%define qemu_arch aarch64
%endif
%ifarch %arm
%define qemu_arch arm
%endif
%ifarch %ix86
%define qemu_arch i386
%endif
%ifarch ppc64
%define qemu_arch ppc64
%endif
%ifarch ppc
%define qemu_arch ppc
%endif
%ifarch ppc64le
%define qemu_arch ppc64le
%endif
%ifarch riscv64
%define qemu_arch riscv64
%endif
%ifarch s390x
%define qemu_arch s390x
%endif
%ifarch x86_64
%define qemu_arch x86_64
%endif
%define generic_qemu_description \
QEMU provides full machine emulation and cross architecture usage. It closely\
integrates with KVM and Xen virtualization, allowing for excellent performance.\
Many options are available for defining the emulated environment, including\
traditional devices, direct host device access, and interfaces specific to\
virtualization.

122
config.sh
View File

@ -1,122 +0,0 @@
#!/bin/bash
# config.sh:
# The next few VARIABLES are to be edited as required:
# Package name. (In multibuild, it's the base package). Used to ref spec file.
PKG=qemu
# Here is the git repo which tracks a separate upstream git based project
# We take this approach so we can have our own tags and branches, and store
# the patches in git for others to access outside of the bundle.
PACKAGE_MAIN_GIT_REPO=https://github.com/openSUSE/qemu.git
# This is the upstream for the PACKAGE_MAIN_GIT_REPO
UPSTREAM_GIT_REPO=https://gitlab.com/qemu-project/qemu.git
# The following specifies the upstream tag or commit upon which our patchqueue
# gets rebased. The special value LATEST may be used to "automatically" track
# the upstream development tree in the master branch
#GIT_UPSTREAM_COMMIT_ISH=v7.0.0
GIT_UPSTREAM_COMMIT_ISH=v7.1.0
# WARNING: If transitioning from using LATEST to not, MANUALLY re-set the
# tarball present. If transitioning TO LATEST, make sure that
# NEXT_RELEASE_IS_MAJOR is set correctly
# This is used to choose the version number when LATEST processing is active
NEXT_RELEASE_IS_MAJOR=1
# Unfortunately, SeaBIOS doesn't always follow an "always increasing" version
# model, so there may be times we should overide the automated version setting.
# We can do so by specifing the value here:
#SEABIOS_VERSION=1.13.0
# In following, use 1 or 0 as needed (representing true or false respectively)
NUMBERED_PATCHES=0
PATCH_RANGE=1000
# For compatibility with old packages, we include this option
OVERRIDE_FIVE_DIGIT_NUMBERING=0
# Path to be used for temporary files, directories, repositories, etc.
# Default is /dev/shm. An alternative could be /tmp (e.g., when building
# in containers, or whatever).
#TMPDIR=/dev/shm
TMPDIR=/tmp
# This array tracks all git submodule paths within the superproject (1st entry)
PATCH_PATH_MAP=(
""
"roms/seabios/"
"roms/ipxe/"
"roms/sgabios/"
"roms/edk2/"
"roms/skiboot/"
"roms/SLOF/"
"roms/openbios/"
"ui/keycodemapdb/"
"slirp/"
"roms/u-boot/"
"roms/qboot/"
"dtc/"
"roms/opensbi/"
"roms/edk2/CryptoPkg/Library/OpensslLib/openssl/"
"capstone/"
"roms/qemu-palcode/"
"roms/seabios-hppa/"
"roms/u-boot-sam460ex/"
"roms/QemuMacDrivers/"
"meson/"
"tests/fp/berkeley-softfloat-3/"
"tests/fp/berkeley-testfloat-3/"
"tests/lcitool/libvirt-ci"
"roms/edk2/ArmPkg/Library/ArmSoftFloatLib/berkeley-softfloat-3/"
"roms/edk2/CryptoPkg/Library/OpensslLib/openssl/boringssl/"
"roms/edk2/CryptoPkg/Library/OpensslLib/openssl/krb5/"
"roms/edk2/CryptoPkg/Library/OpensslLib/openssl/pyca-cryptography/"
"roms/edk2/BaseTools/Source/C/BrotliCompress/brotli/"
"roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/"
"roms/edk2/MdeModulePkg/Universal/RegularExpressionDxe/oniguruma/"
"roms/edk2/UnitTestFrameworkPkg/Library/CmockaLib/cmocka/"
"roms/vbootrom/"
"roms/edk2/RedfishPkg/Library/JsonLib/jansson"
)
# (order and count must correspond to PATCH_PATH_MAP)
LOCAL_REPO_MAP=(
~/git/qemu-opensuse
~/git/qemu-seabios
~/git/qemu-ipxe
~/git/qemu-sgabios
~/git/qemu-edk2
~/git/qemu-skiboot
~/git/qemu-SLOF
~/git/qemu-openbios
~/git/qemu-keycodemapdb
~/git/qemu-slirp
~/git/qemu-u-boot
~/git/qemu-qboot
~/git/qemu-dtc
~/git/qemu-opensbi
~/git/qemu-edk2-openssl
~/git/qemu-capstone
~/git/qemu-qemu-palcode
~/git/qemu-seabios-hppa
~/git/qemu-u-boot-sam460ex
~/git/qemu-QemuMacDrivers
~/git/qemu-meson
~/git/qemu-tests-berkeley-softfloat-3
~/git/qemu-tests-berkeley-testfloat-3
~/git/qemu-tests-lcitool-libvirt-ci
~/git/qemu-edk2-berkeley-softfloat-3
~/git/qemu-edk2-openssl-boringssl
~/git/qemu-edk2-openssl-krb5
~/git/qemu-edk2-openssl-pyca-cryptography
~/git/qemu-edk2-BrotliCompress-brotli
~/git/qemu-edk2-BrotliCustomDecompressLib-brotli
~/git/qemu-edk2-oniguruma
~/git/qemu-edk2-cmocka
~/git/qemu-vbootrom
~/git/qemu-edk2-jansson
)

View File

@ -1,22 +0,0 @@
From: Bruce Rogers <brogers@suse.com>
Date: Mon, 26 Aug 2019 13:28:57 -0600
Subject: enable cross compilation on ARM
Signed-off-by: Bruce Rogers <brogers@suse.com>
---
Makefile | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/roms/seabios/Makefile b/roms/seabios/Makefile
index 408983026669e531dcb84230dd23..5ced69cd8be94d36c8aaa887ce73 100644
--- a/roms/seabios/Makefile
+++ b/roms/seabios/Makefile
@@ -13,7 +13,7 @@ export CONFIG_SHELL := sh
export KCONFIG_AUTOHEADER := autoconf.h
export KCONFIG_CONFIG := $(CURDIR)/.config
export LC_ALL := C
-CROSS_PREFIX=
+CROSS_PREFIX=$(CROSS_COMPILE)
ifneq ($(CROSS_PREFIX),)
CC=$(CROSS_PREFIX)gcc
endif

View File

@ -1,27 +0,0 @@
From: Bruce Rogers <brogers@suse.com>
Date: Thu, 13 Aug 2020 18:23:35 -0600
Subject: help compiler out by initializing array
The pre-release gcc 11 compiler is complaining that result_raw in
bigint_test_exec is flagged as possibly being uninitialized when used
(-Werror=maybe-uninitialized). Help the compiler by initializing the
array.
Signed-off-by: Bruce Rogers <brogers@suse.com>
---
src/tests/bigint_test.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/roms/ipxe/src/tests/bigint_test.c b/roms/ipxe/src/tests/bigint_test.c
index 8d40c3188784a693e83a2a9d3217..dfcd393c413b1c66ab2e9988c472 100644
--- a/roms/ipxe/src/tests/bigint_test.c
+++ b/roms/ipxe/src/tests/bigint_test.c
@@ -210,7 +210,7 @@ void bigint_mod_exp_sample ( const bigint_element_t *base0,
static const uint8_t addend_raw[] = addend; \
static const uint8_t value_raw[] = value; \
static const uint8_t expected_raw[] = expected; \
- uint8_t result_raw[ sizeof ( expected_raw ) ]; \
+ uint8_t result_raw[ sizeof ( expected_raw ) ] = {0}; \
unsigned int size = \
bigint_required_size ( sizeof ( value_raw ) ); \
bigint_t ( size ) addend_temp; \

View File

@ -1,31 +0,0 @@
From: Mauro Matteo Cascella <mcascell@redhat.com>
Date: Mon, 7 Mar 2022 16:22:01 +0100
Subject: hw/scsi/megasas: check for NULL frame in megasas_command_cancelled()
Git-commit: 0000000000000000000000000000000000000000
References: bsc#1180432, CVE-2020-35503
Ensure that 'cmd->frame' is not NULL before accessing the 'header' field.
This check prevents a potential NULL pointer dereference issue.
RHBZ: https://bugzilla.redhat.com/show_bug.cgi?id=1910346
Signed-off-by: Mauro Matteo Cascella <mcascell@redhat.com>
Reported-by: Cheolwoo Myung <cwmyung@snu.ac.kr>
Signed-off-by: Dario Faggioli <dfaggioli@suse.com>
---
hw/scsi/megasas.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/hw/scsi/megasas.c b/hw/scsi/megasas.c
index d5dfb412bac4251c9fa06eb416b4..cf97b4d2db5bf91a0e18908e900d 100644
--- a/hw/scsi/megasas.c
+++ b/hw/scsi/megasas.c
@@ -1927,7 +1927,7 @@ static void megasas_command_cancelled(SCSIRequest *req)
{
MegasasCmd *cmd = req->hba_private;
- if (!cmd) {
+ if (!cmd || !cmd->frame) {
return;
}
cmd->frame->header.cmd_status = MFI_STAT_SCSI_IO_FAILED;

View File

@ -1,93 +0,0 @@
From: Bruce Rogers <brogers@suse.com>
Date: Fri, 5 Apr 2019 21:10:30 -0600
Subject: hw/smbios: handle both file formats regardless of machine type
References: bsc#994082, bsc#1084316, boo#1131894
It's easy enough to handle either per-spec or legacy smbios structures
in the smbios file input without regard to the machine type used, by
simply applying the basic smbios formatting rules. then depending on
what is detected. terminal numm bytes are added or removed for machine
type specific processing.
Signed-off-by: Bruce Rogers <brogers@suse.com>
---
hw/smbios/smbios.c | 43 +++++++++++++++++++++++++++++++++++++++----
1 file changed, 39 insertions(+), 4 deletions(-)
diff --git a/hw/smbios/smbios.c b/hw/smbios/smbios.c
index 60349ee402719d55896658bf203c..59091c8454bf6d8d05c4c8313753 100644
--- a/hw/smbios/smbios.c
+++ b/hw/smbios/smbios.c
@@ -1180,6 +1180,7 @@ void smbios_entry_add(QemuOpts *opts, Error **errp)
struct smbios_structure_header *header;
int size;
struct smbios_table *table; /* legacy mode only */
+ uint8_t *dbl_nulls, *orig_end;
if (!qemu_opts_validate(opts, qemu_smbios_file_opts, errp)) {
return;
@@ -1192,11 +1193,21 @@ void smbios_entry_add(QemuOpts *opts, Error **errp)
}
/*
- * NOTE: standard double '\0' terminator expected, per smbios spec.
- * (except in legacy mode, where the second '\0' is implicit and
- * will be inserted by the BIOS).
+ * NOTE: standard double '\0' terminator expected, per smbios spec,
+ * unless the data is formatted for legacy mode, which is used by
+ * pc-i440fx-2.0 and earlier machine types. Legacy mode structures
+ * without strings have no '\0' terminators, and those with strings
+ * also don't have an additional '\0' terminator at the end of the
+ * final string '\0' terminator. The BIOS will add the '\0' terminators
+ * to comply with the smbios spec.
+ * For greater compatibility, regardless of the machine type used,
+ * either format is accepted.
*/
- smbios_tables = g_realloc(smbios_tables, smbios_tables_len + size);
+ smbios_tables = g_realloc(smbios_tables, smbios_tables_len + size + 2);
+ orig_end = smbios_tables + smbios_tables_len + size;
+ /* add extra null bytes to end in case of legacy file data */
+ *orig_end = '\0';
+ *(orig_end + 1) = '\0';
header = (struct smbios_structure_header *)(smbios_tables +
smbios_tables_len);
@@ -1211,6 +1222,19 @@ void smbios_entry_add(QemuOpts *opts, Error **errp)
header->type);
return;
}
+ for (dbl_nulls = smbios_tables + smbios_tables_len + header->length;
+ dbl_nulls + 2 <= orig_end; dbl_nulls++) {
+ if (*dbl_nulls == '\0' && *(dbl_nulls + 1) == '\0') {
+ break;
+ }
+ }
+ if (dbl_nulls + 2 < orig_end) {
+ error_setg(errp, "SMBIOS file data malformed");
+ return;
+ }
+ /* increase size by how many extra nulls were actually needed */
+ size += dbl_nulls + 2 - orig_end;
+ smbios_tables = g_realloc(smbios_tables, smbios_tables_len + size);
set_bit(header->type, have_binfile_bitmap);
if (header->type == 4) {
@@ -1231,6 +1255,17 @@ void smbios_entry_add(QemuOpts *opts, Error **errp)
* delete the one we don't need from smbios_set_defaults(),
* once we know which machine version has been requested.
*/
+ if (dbl_nulls + 2 == orig_end) {
+ /* chop off nulls to get legacy format */
+ if (header->length + 2 == size) {
+ size -= 2;
+ } else {
+ size -= 1;
+ }
+ } else {
+ /* undo conversion from legacy format to per-spec format */
+ size -= dbl_nulls + 2 - orig_end;
+ }
if (!smbios_entries) {
smbios_entries_len = sizeof(uint16_t);
smbios_entries = g_malloc0(smbios_entries_len);

View File

@ -1,73 +0,0 @@
From: Bruce Rogers <brogers@suse.com>
Date: Fri, 17 May 2013 16:49:58 -0600
Subject: increase x86_64 physical bits to 42
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Allow for guests with higher amounts of ram. The current thought
is that 2TB specified on qemu commandline would be an appropriate
limit. Note that this requires the next higher bit value since
the highest address is actually more than 2TB due to the pci
memory hole.
Signed-off-by: Bruce Rogers <brogers@suse.com>
Signed-off-by: Andreas Färber <afaerber@suse.de>
The DSDT needs to be updated as well, or tests will fail.
The necessary changes are the following ones:
@@ -5,13 +5,13 @@
*
* Disassembling to symbolic ASL+ operators
*
- * Disassembly of /tmp/aml-ML87L1, Thu May 19 16:20:30 2022
+ * Disassembly of tests/data/acpi/microvm/DSDT.pcie, Thu May 19 16:20:30 2022
*
* Original Table Header:
* Signature "DSDT"
* Length 0x00000BCF (3023)
* Revision 0x02
- * Checksum 0xD1
+ * Checksum 0xD8
* OEM ID "BOCHS "
* OEM Table ID "BXPC "
* OEM Revision 0x00000001 (1)
@@ -1256,10 +1256,10 @@
,, , AddressRangeMemory, TypeStatic)
QWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, NonCacheable, ReadWrite,
0x0000000000000000, // Granularity
- 0x0000030000000000, // Range Minimum
- 0x000003FFFFFFFFFF, // Range Maximum
+ 0x000000C000000000, // Range Minimum
+ 0x000000FFFFFFFFFF, // Range Maximum
0x0000000000000000, // Translation Offset
- 0x0000010000000000, // Length
+ 0x0000004000000000, // Length
,, , AddressRangeMemory, TypeStatic)
})
Name (SUPP, Zero)
We cannot, however, commit the modified binary as part of this patch,
will not apply it. The binary is instead put in the package, and copied
in place in the spec file, just before 'make check'.
Signed-off-by: Dario Faggioli <dfaggioli@suse.com>
---
target/i386/tcg/helper-tcg.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/target/i386/tcg/helper-tcg.h b/target/i386/tcg/helper-tcg.h
index 34167e2e29cacee8dfb05e943fac..8ded299c8f4bf91ba2bea6b88211 100644
--- a/target/i386/tcg/helper-tcg.h
+++ b/target/i386/tcg/helper-tcg.h
@@ -26,7 +26,7 @@
#define TARGET_MAX_INSN_SIZE 16
#if defined(TARGET_X86_64)
-# define TCG_PHYS_ADDR_BITS 40
+# define TCG_PHYS_ADDR_BITS 42
#else
# define TCG_PHYS_ADDR_BITS 36
#endif

View File

@ -1,49 +0,0 @@
From: Bruce Rogers <brogers@suse.com>
Date: Thu, 27 Jun 2019 10:15:24 -0600
Subject: ipxe:Makefile: fix issues of build reproducibility
References: bsc#1011213
It is desirable to produce the same bits on subsequent
builds when the actual code of the package doesn't
change. (bsc#1011213)
Signed-off-by: Bruce Rogers <brogers@suse.com>
---
src/Makefile.housekeeping | 13 ++++++++++---
1 file changed, 10 insertions(+), 3 deletions(-)
diff --git a/roms/ipxe/src/Makefile.housekeeping b/roms/ipxe/src/Makefile.housekeeping
index 134becd508c2f7f7c01c2f601d36..36cfb950e014914232f254b7edbb 100644
--- a/roms/ipxe/src/Makefile.housekeeping
+++ b/roms/ipxe/src/Makefile.housekeeping
@@ -1163,11 +1163,18 @@ blib : $(BLIB)
# Command to generate build ID. Must be unique for each $(BIN)/%.tmp,
# even within the same build run.
#
-BUILD_ID_CMD := perl -e 'printf "0x%08x", int ( rand ( 0xffffffff ) );'
+# NB: In the case of the SUSE qemu-ipxe package we want reproducible
+# builds, so we just use the TGT_ROM_NAME variable, which is already
+# a unique (in the context of the files we generate) hex value suitable
+# for specifying the build_id. We no longer define a BUILD_ID_CMD, as
+# we need to use the TGT_ROM_NAME variable directly in the link command
# Build timestamp
#
-BUILD_TIMESTAMP := $(shell date +%s)
+# NB: In the case of the SUSE qemu-ipxe package we want reproducible
+# builds, so we use a pre-determined timestamp, rather than the current
+# timestamp
+BUILD_TIMESTAMP := $(PACKAGING_TIMESTAMP)
# Build version
#
@@ -1187,7 +1194,7 @@ $(BIN)/version.%.o : core/version.c $(MAKEDEPS) $(GIT_INDEX)
$(BIN)/%.tmp : $(BIN)/version.%.o $(BLIB) $(MAKEDEPS) $(LDSCRIPT)
$(QM)$(ECHO) " [LD] $@"
$(Q)$(LD) $(LDFLAGS) -T $(LDSCRIPT) $(TGT_LD_FLAGS) $< $(BLIB) -o $@ \
- --defsym _build_id=`$(BUILD_ID_CMD)` \
+ --defsym _build_id=`$(PRINTF) "0x%b" "$(TGT_ROM_NAME)"` \
--defsym _build_timestamp=$(BUILD_TIMESTAMP) \
-Map $(BIN)/$*.tmp.map
$(Q)$(OBJDUMP) -ht $@ | $(PERL) $(SORTOBJDUMP) >> $(BIN)/$*.tmp.map

View File

@ -1,13 +0,0 @@
[Unit]
Description=Kernel Samepage Merging
ConditionPathExists=/sys/kernel/mm/ksm
ConditionVirtualization=no
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/bin/bash -c "/bin/echo 1 > /sys/kernel/mm/ksm/run"
ExecStop=/bin/bash -c "/bin/echo 0 > /sys/kernel/mm/ksm/run"
[Install]
WantedBy=multi-user.target

View File

@ -1,3 +0,0 @@
# load kvm module at boot time
kvm

View File

@ -1,75 +0,0 @@
From: Alexander Graf <agraf@suse.de>
Date: Mon, 23 Jul 2012 10:24:14 +0200
Subject: linux-user: Fake /proc/cpuinfo
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Fedora 17 for ARM reads /proc/cpuinfo and fails if it doesn't contain
ARM related contents. This patch implements a quick hack to expose real
/proc/cpuinfo data taken from a real world machine.
The real fix would be to generate at least the flags automatically based
on the selected CPU. Please do not submit this patch upstream until this
has happened.
Signed-off-by: Alexander Graf <agraf@suse.de>
[AF: Rebased for v1.6 and v1.7]
Signed-off-by: Andreas Färber <afaerber@suse.de>
[DF: Restructured it a bit, to make ARM look like other arch-es]
Signed-off-by: Dario Faggioli <dfaggioli@suse.com>
---
linux-user/syscall.c | 26 ++++++++++++++++++++++++--
1 file changed, 24 insertions(+), 2 deletions(-)
diff --git a/linux-user/syscall.c b/linux-user/syscall.c
index f4091212027c254a19dc871a675d..b746511fe5ba1c03cf44a14ed811 100644
--- a/linux-user/syscall.c
+++ b/linux-user/syscall.c
@@ -8157,7 +8157,8 @@ static int is_proc_myself(const char *filename, const char *entry)
}
#if HOST_BIG_ENDIAN != TARGET_BIG_ENDIAN || \
- defined(TARGET_SPARC) || defined(TARGET_M68K) || defined(TARGET_HPPA)
+ defined(TARGET_SPARC) || defined(TARGET_M68K) || \
+ defined(TARGET_HPPA) || defined(TARGET_ARM)
static int is_proc(const char *filename, const char *entry)
{
return strcmp(filename, entry) == 0;
@@ -8229,6 +8230,27 @@ static int open_cpuinfo(CPUArchState *cpu_env, int fd)
}
#endif
+#if defined(TARGET_ARM)
+static int open_cpuinfo(CPUArchState *cpu_env, int fd)
+{
+ dprintf(fd,
+"Processor : ARMv7 Processor rev 5 (v7l)\n"
+"BogoMIPS : 799.53\n"
+"Features : swp half thumb fastmult vfp edsp thumbee neon vfpv3\n"
+"CPU implementer : 0x41\n"
+"CPU architecture: 7\n"
+"CPU variant : 0x2\n"
+"CPU part : 0xc08\n"
+"CPU revision : 5\n"
+"\n"
+"Hardware : Genesi Efika MX (Smarttop)\n"
+"Revision : 51030\n"
+"Serial : 0000000000000000\n");
+ return 0;
+}
+#endif
+
+
#if defined(TARGET_M68K)
static int open_hardware(CPUArchState *cpu_env, int fd)
{
@@ -8253,7 +8275,7 @@ static int do_openat(CPUArchState *cpu_env, int dirfd, const char *pathname, int
#if HOST_BIG_ENDIAN != TARGET_BIG_ENDIAN
{ "/proc/net/route", open_net_route, is_proc },
#endif
-#if defined(TARGET_SPARC) || defined(TARGET_HPPA)
+#if defined(TARGET_SPARC) || defined(TARGET_HPPA) || defined(TARGET_ARM)
{ "/proc/cpuinfo", open_cpuinfo, is_proc },
#endif
#if defined(TARGET_M68K)

View File

@ -1,66 +0,0 @@
From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= <berrange@redhat.com>
Date: Tue, 4 Oct 2022 10:32:03 +0100
Subject: linux-user: add more compat ioctl definitions
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Git-commit: 0000000000000000000000000000000000000000
Refereces: bsc#1204001
GLibc changes prevent us from including linux/fs.h anymore,
and we previously adjusted to this in
commit 3cd3df2a9584e6f753bb62a0028bd67124ab5532
Author: Daniel P. Berrangé <berrange@redhat.com>
Date: Tue Aug 2 12:41:34 2022 -0400
linux-user: fix compat with glibc >= 2.36 sys/mount.h
That change required adding compat ioctl definitions on the
QEMU side for any ioctls that we would otherwise obtain
from linux/fs.h. This commit adds more that were initially
missed, due to their usage being conditionalized in QEMU.
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
Signed-off-by: Dario Faggioli <dfaggioli@suse.com>
---
linux-user/syscall.c | 25 +++++++++++++++++++++++++
1 file changed, 25 insertions(+)
diff --git a/linux-user/syscall.c b/linux-user/syscall.c
index 9d92e56e3996dc2174a4af9d0491..5acb463d5e11311b2108358c7c01 100644
--- a/linux-user/syscall.c
+++ b/linux-user/syscall.c
@@ -111,6 +111,31 @@
#define FS_IOC32_SETFLAGS _IOW('f', 2, int)
#define FS_IOC32_GETVERSION _IOR('v', 1, int)
#define FS_IOC32_SETVERSION _IOW('v', 2, int)
+
+#define BLKGETSIZE64 _IOR(0x12,114,size_t)
+#define BLKDISCARD _IO(0x12,119)
+#define BLKIOMIN _IO(0x12,120)
+#define BLKIOOPT _IO(0x12,121)
+#define BLKALIGNOFF _IO(0x12,122)
+#define BLKPBSZGET _IO(0x12,123)
+#define BLKDISCARDZEROES _IO(0x12,124)
+#define BLKSECDISCARD _IO(0x12,125)
+#define BLKROTATIONAL _IO(0x12,126)
+#define BLKZEROOUT _IO(0x12,127)
+
+#define FIBMAP _IO(0x00,1)
+#define FIGETBSZ _IO(0x00,2)
+
+struct file_clone_range {
+ __s64 src_fd;
+ __u64 src_offset;
+ __u64 src_length;
+ __u64 dest_offset;
+};
+
+#define FICLONE _IOW(0x94, 9, int)
+#define FICLONERANGE _IOW(0x94, 13, struct file_clone_range)
+
#else
#include <linux/fs.h>
#endif

View File

@ -1,134 +0,0 @@
From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= <berrange@redhat.com>
Date: Tue, 4 Oct 2022 10:32:06 +0100
Subject: linux-user: drop conditionals for obsolete kernel header versions
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Git-commit: 0000000000000000000000000000000000000000
Refereces: bsc#1204001
Given our newly enforced 4.18 baseline for the kernel headers version,
we can drop any conditional checks for older versions.
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
Signed-off-by: Dario Faggioli <dfaggioli@suse.com>
---
linux-user/linux_loop.h | 4 ----
linux-user/syscall.c | 14 ++------------
tests/tcg/i386/test-i386.c | 10 +++-------
3 files changed, 5 insertions(+), 23 deletions(-)
diff --git a/linux-user/linux_loop.h b/linux-user/linux_loop.h
index f80b96f1ff92c71bc1232b733d37..5a9e0edef2729642bfca8f146e6d 100644
--- a/linux-user/linux_loop.h
+++ b/linux-user/linux_loop.h
@@ -31,10 +31,6 @@ enum {
#include <asm/posix_types.h> /* for __kernel_old_dev_t */
#include <asm/types.h> /* for __u64 */
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,0) /* This is a guess. */
-#define __kernel_old_dev_t __kernel_dev_t
-#endif
-
/* Backwards compatibility version */
struct loop_info {
int lo_number; /* ioctl r/o */
diff --git a/linux-user/syscall.c b/linux-user/syscall.c
index 5acb463d5e11311b2108358c7c01..d7c0d4a45d3907f1ef28fe93f9b6 100644
--- a/linux-user/syscall.c
+++ b/linux-user/syscall.c
@@ -2525,16 +2525,12 @@ set_timeout:
case NETLINK_DROP_MEMBERSHIP:
case NETLINK_BROADCAST_ERROR:
case NETLINK_NO_ENOBUFS:
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 2, 0)
case NETLINK_LISTEN_ALL_NSID:
case NETLINK_CAP_ACK:
-#endif /* LINUX_VERSION_CODE >= KERNEL_VERSION(4, 2, 0) */
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 12, 0)
case NETLINK_EXT_ACK:
-#endif /* LINUX_VERSION_CODE >= KERNEL_VERSION(4, 12, 0) */
#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 20, 0)
case NETLINK_GET_STRICT_CHK:
-#endif /* LINUX_VERSION_CODE >= KERNEL_VERSION(4, 12, 0) */
+#endif /* LINUX_VERSION_CODE >= KERNEL_VERSION(4, 20, 0) */
break;
default:
goto unimplemented;
@@ -2903,16 +2899,12 @@ get_timeout:
case NETLINK_PKTINFO:
case NETLINK_BROADCAST_ERROR:
case NETLINK_NO_ENOBUFS:
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 2, 0)
case NETLINK_LISTEN_ALL_NSID:
case NETLINK_CAP_ACK:
-#endif /* LINUX_VERSION_CODE >= KERNEL_VERSION(4, 2, 0) */
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 12, 0)
case NETLINK_EXT_ACK:
-#endif /* LINUX_VERSION_CODE >= KERNEL_VERSION(4, 12, 0) */
#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 20, 0)
case NETLINK_GET_STRICT_CHK:
-#endif /* LINUX_VERSION_CODE >= KERNEL_VERSION(4, 12, 0) */
+#endif /* LINUX_VERSION_CODE >= KERNEL_VERSION(4, 20, 0) */
if (get_user_u32(len, optlen)) {
return -TARGET_EFAULT;
}
@@ -2929,7 +2921,6 @@ get_timeout:
return -TARGET_EFAULT;
}
break;
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 2, 0)
case NETLINK_LIST_MEMBERSHIPS:
{
uint32_t *results;
@@ -2960,7 +2951,6 @@ get_timeout:
unlock_user(results, optval_addr, 0);
break;
}
-#endif /* LINUX_VERSION_CODE >= KERNEL_VERSION(4, 2, 0) */
default:
goto unimplemented;
}
diff --git a/tests/tcg/i386/test-i386.c b/tests/tcg/i386/test-i386.c
index ac8d5a3c1f8b6eacf32649155c98..bd7ebb9d68b9e90673ed16a6f4cd 100644
--- a/tests/tcg/i386/test-i386.c
+++ b/tests/tcg/i386/test-i386.c
@@ -1231,10 +1231,6 @@ static inline int modify_ldt(int func, void * ptr, unsigned long bytecount)
return syscall(__NR_modify_ldt, func, ptr, bytecount);
}
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 5, 66)
-#define modify_ldt_ldt_s user_desc
-#endif
-
#define MK_SEL(n) (((n) << 3) | 7)
uint8_t seg_data1[4096];
@@ -1272,7 +1268,7 @@ uint8_t seg_data2[4096];
/* NOTE: we use Linux modify_ldt syscall */
void test_segs(void)
{
- struct modify_ldt_ldt_s ldt;
+ struct user_desc ldt;
long long ldt_table[3];
int res, res2;
char tmp;
@@ -1374,7 +1370,7 @@ extern char code16_func3;
void test_code16(void)
{
- struct modify_ldt_ldt_s ldt;
+ struct user_desc ldt;
int res, res2;
/* build a code segment */
@@ -1781,7 +1777,7 @@ void test_exceptions(void)
}
{
- struct modify_ldt_ldt_s ldt;
+ struct user_desc ldt;
ldt.entry_number = 1;
ldt.base_addr = (unsigned long)&seg_data1;
ldt.limit = (sizeof(seg_data1) + 0xfff) >> 12;

View File

@ -1,36 +0,0 @@
From: Alexander Graf <agraf@suse.de>
Date: Thu, 13 Dec 2012 14:29:22 +0100
Subject: linux-user: lseek: explicitly cast non-set offsets to signed
When doing lseek, SEEK_SET indicates that the offset is an unsigned variable.
Other seek types have parameters that can be negative.
When converting from 32bit to 64bit parameters, we need to take this into
account and enable SEEK_END and SEEK_CUR to be negative, while SEEK_SET stays
absolute positioned which we need to maintain as unsigned.
Signed-off-by: Alexander Graf <agraf@suse.de>
---
linux-user/syscall.c | 9 +++++++--
1 file changed, 7 insertions(+), 2 deletions(-)
diff --git a/linux-user/syscall.c b/linux-user/syscall.c
index de782620fe3c9169a58e442a6f05..9d92e56e3996dc2174a4af9d0491 100644
--- a/linux-user/syscall.c
+++ b/linux-user/syscall.c
@@ -8936,8 +8936,13 @@ static abi_long do_syscall1(CPUArchState *cpu_env, int num, abi_ulong arg1,
return ret;
#endif
#ifdef TARGET_NR_lseek
- case TARGET_NR_lseek:
- return get_errno(lseek(arg1, arg2, arg3));
+ case TARGET_NR_lseek: {
+ off_t off = arg2;
+ if (arg3 != SEEK_SET) {
+ off = (abi_long)arg2;
+ }
+ return get_errno(lseek(arg1, off, arg3));
+ }
#endif
#if defined(TARGET_NR_getxpid) && defined(TARGET_ALPHA)
/* Alpha specific */

View File

@ -1,101 +0,0 @@
From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= <berrange@redhat.com>
Date: Tue, 4 Oct 2022 10:32:04 +0100
Subject: linux-user: remove conditionals for many fs.h ioctls
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Git-commit: 0000000000000000000000000000000000000000
Refereces: bsc#1204001
These ioctls have been defined in linux/fs.h for a long time
* BLKGETSIZE64 - <2.6.12 (linux.git epoch)
* BLKDISCARD - 2.6.28 (d30a2605be9d5132d95944916e8f578fcfe4f976)
* BLKIOMIN - 2.6.32 (ac481c20ef8f6c6f2be75d581863f40c43874ef7)
* BLKIOOPT - 2.6.32 (ac481c20ef8f6c6f2be75d581863f40c43874ef7)
* BLKALIGNOFF - 2.6.32 (ac481c20ef8f6c6f2be75d581863f40c43874ef7)
* BLKPBSZGET - 2.6.32 (ac481c20ef8f6c6f2be75d581863f40c43874ef7)
* BLKDISCARDZEROES - 2.6.32 (98262f2762f0067375f83824d81ea929e37e6bfe)
* BLKSECDISCARD - 2.6.36 (8d57a98ccd0b4489003473979da8f5a1363ba7a3)
* BLKROTATIONAL - 3.2 (ef00f59c95fe6e002e7c6e3663cdea65e253f4cc)
* BLKZEROOUT - 3.6 (66ba32dc167202c3cf8c86806581a9393ec7f488)
* FIBMAP - <2.6.12 (linux.git epoch)
* FIGETBSZ - <2.6.12 (linux.git epoch)
and when building with latest glibc, we'll see compat definitions
in syscall.c anyway thanks to the previous patch. Thus we can
assume they always exist and remove the conditional checks.
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
Signed-off-by: Dario Faggioli <dfaggioli@suse.com>
---
linux-user/ioctls.h | 24 ------------------------
1 file changed, 24 deletions(-)
diff --git a/linux-user/ioctls.h b/linux-user/ioctls.h
index f182d40190ed43ffa1bbc4fd09cb..071f7ca2537560e3c923c9a18abb 100644
--- a/linux-user/ioctls.h
+++ b/linux-user/ioctls.h
@@ -96,9 +96,7 @@
IOCTL(BLKROGET, IOC_R, MK_PTR(TYPE_INT))
IOCTL(BLKRRPART, 0, TYPE_NULL)
IOCTL(BLKGETSIZE, IOC_R, MK_PTR(TYPE_ULONG))
-#ifdef BLKGETSIZE64
IOCTL(BLKGETSIZE64, IOC_R, MK_PTR(TYPE_ULONGLONG))
-#endif
IOCTL(BLKFLSBUF, 0, TYPE_NULL)
IOCTL(BLKRASET, 0, TYPE_INT)
IOCTL(BLKRAGET, IOC_R, MK_PTR(TYPE_LONG))
@@ -107,33 +105,15 @@
IOCTL_SPECIAL(BLKPG, IOC_W, do_ioctl_blkpg,
MK_PTR(MK_STRUCT(STRUCT_blkpg_ioctl_arg)))
-#ifdef BLKDISCARD
IOCTL(BLKDISCARD, IOC_W, MK_PTR(MK_ARRAY(TYPE_ULONGLONG, 2)))
-#endif
-#ifdef BLKIOMIN
IOCTL(BLKIOMIN, IOC_R, MK_PTR(TYPE_INT))
-#endif
-#ifdef BLKIOOPT
IOCTL(BLKIOOPT, IOC_R, MK_PTR(TYPE_INT))
-#endif
-#ifdef BLKALIGNOFF
IOCTL(BLKALIGNOFF, IOC_R, MK_PTR(TYPE_INT))
-#endif
-#ifdef BLKPBSZGET
IOCTL(BLKPBSZGET, IOC_R, MK_PTR(TYPE_INT))
-#endif
-#ifdef BLKDISCARDZEROES
IOCTL(BLKDISCARDZEROES, IOC_R, MK_PTR(TYPE_INT))
-#endif
-#ifdef BLKSECDISCARD
IOCTL(BLKSECDISCARD, IOC_W, MK_PTR(MK_ARRAY(TYPE_ULONGLONG, 2)))
-#endif
-#ifdef BLKROTATIONAL
IOCTL(BLKROTATIONAL, IOC_R, MK_PTR(TYPE_SHORT))
-#endif
-#ifdef BLKZEROOUT
IOCTL(BLKZEROOUT, IOC_W, MK_PTR(MK_ARRAY(TYPE_ULONGLONG, 2)))
-#endif
IOCTL(FDMSGON, 0, TYPE_NULL)
IOCTL(FDMSGOFF, 0, TYPE_NULL)
@@ -149,17 +129,13 @@
IOCTL(FDTWADDLE, 0, TYPE_NULL)
IOCTL(FDEJECT, 0, TYPE_NULL)
-#ifdef FIBMAP
IOCTL(FIBMAP, IOC_W | IOC_R, MK_PTR(TYPE_LONG))
-#endif
#ifdef FICLONE
IOCTL(FICLONE, IOC_W, TYPE_INT)
IOCTL(FICLONERANGE, IOC_W, MK_PTR(MK_STRUCT(STRUCT_file_clone_range)))
#endif
-#ifdef FIGETBSZ
IOCTL(FIGETBSZ, IOC_R, MK_PTR(TYPE_LONG))
-#endif
#ifdef CONFIG_FIEMAP
IOCTL_SPECIAL(FS_IOC_FIEMAP, IOC_W | IOC_R, do_ioctl_fs_ioc_fiemap,
MK_PTR(MK_STRUCT(STRUCT_fiemap)))

View File

@ -1,67 +0,0 @@
From: Dario Faggioli <dfaggioli@suse.com>
Date: Wed, 28 Sep 2022 13:13:08 +0200
Subject: linux-user: use "max" as default CPU model, to deal with x86_64-v2
binaries
Git-commit: 0000000000000000000000000000000000000000
References: bsc#1203684
The old "qemu64" model cannot run binaries compiled for, e.g.,
x86_64-v2. This could be a problem because a couple of major
distribution are switching to that as their baseline. In fact, errors
like this one can be observed (if 'ls' is such a binary):
x86_64-linux-user/qemu-x86_64 /usr/bin/ls
qemu: uncaught target signal 4 (Illegal instruction) - core dumped
Instead, using "max" as the CPU model, everything (of course) works:
export QEMU_CPU=max
x86_64-linux-user/qemu-x86_64 /usr/bin/ls
This has been and is being discussed in several places, e.g.:
https://lore.kernel.org/qemu-devel/20210607135843.196595-1-berrange@redhat.com/
https://bugzilla.redhat.com/show_bug.cgi?id=2079915
https://bugzilla.redhat.com/show_bug.cgi?id=2080133
http:s//github.com/containers/podman/issues/14314
However, these are all about system-emulation/virtualization, which is
indeed quite tricky. In fact, what would be a good alternative default
CPU model to pick, in that case? At the same time, however, it's also
less problematic. In fact, people using QEMU for that purpose are likely
in one of the following two situations already:
1) they're starting QEMU manually, with a long and complex command line,
for whatever specific reason. In that case, adding '-cpu host' (or
whatever) to such long and complex command line, isn't a big deal;
2) they're using QEMU via libvirt, which has its own fancy and
convenient ways of determining the best CPU model, and the default
"qemu64" one is pretty much never being used.
The case of Linux user emulation, however, it's a bit more tricky, as
it's less convenient to actually pass any parameter to QEMU at all, in
this scenario, so having to add one might be complicated. The same goes
for having to define the QEMU_CPU environment variable. When doing Linux
userspace emulation, though, a lot of the downsides of just using '-cpu
host' as the default are non-issue (e.g., we do not need to think about
migration!).
Therefore, while the topic remain complex and unsolved for system
emulation, for Linux user, let's just switch and be happy.
Signed-off-by: Dario Faggioli <dfaggioli@suse.com>
---
linux-user/x86_64/target_elf.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/linux-user/x86_64/target_elf.h b/linux-user/x86_64/target_elf.h
index 7b76a90de8805a84b4983f3b2bb9..3f628f8d66197faae698cbec4e24 100644
--- a/linux-user/x86_64/target_elf.h
+++ b/linux-user/x86_64/target_elf.h
@@ -9,6 +9,6 @@
#define X86_64_TARGET_ELF_H
static inline const char *cpu_get_model(uint32_t eflags)
{
- return "qemu64";
+ return "max";
}
#endif

View File

@ -1,85 +0,0 @@
From: Alexander Graf <agraf@suse.de>
Date: Tue, 9 Oct 2012 09:06:49 +0200
Subject: linux-user: use target_ulong
Linux syscalls pass pointers or data length or other information of that sort
to the kernel. This is all stuff you don't want to have sign extended.
Otherwise a host 64bit variable parameter with a size parameter will extend
it to a negative number, breaking lseek for example.
Pass syscall arguments as ulong always.
Signed-off-by: Alexander Graf <agraf@suse.de>
[JRZ: changes from linux-user/qemu.h wass moved to linux-user/user-internals.h]
Signed-off-by: Jose R Ziviani <jziviani@suse.de>
[DF: Forward port, i.e., use ulong for do_prctl too]
Signed-off-by: Dario Faggioli <dfaggioli@suse.com>
---
linux-user/syscall.c | 20 ++++++++++----------
linux-user/user-internals.h | 8 ++++----
2 files changed, 14 insertions(+), 14 deletions(-)
diff --git a/linux-user/syscall.c b/linux-user/syscall.c
index b746511fe5ba1c03cf44a14ed811..de782620fe3c9169a58e442a6f05 100644
--- a/linux-user/syscall.c
+++ b/linux-user/syscall.c
@@ -6405,8 +6405,8 @@ static abi_long do_prctl_inval1(CPUArchState *env, abi_long arg2)
#define do_prctl_sme_set_vl do_prctl_inval1
#endif
-static abi_long do_prctl(CPUArchState *env, abi_long option, abi_long arg2,
- abi_long arg3, abi_long arg4, abi_long arg5)
+static abi_long do_prctl(CPUArchState *env, abi_ulong option, abi_ulong arg2,
+ abi_ulong arg3, abi_ulong arg4, abi_ulong arg5)
{
abi_long ret;
@@ -8581,10 +8581,10 @@ _syscall2(int, pivot_root, const char *, new_root, const char *, put_old)
* of syscall results, can be performed.
* All errnos that do_syscall() returns must be -TARGET_<errcode>.
*/
-static abi_long do_syscall1(CPUArchState *cpu_env, int num, abi_long arg1,
- abi_long arg2, abi_long arg3, abi_long arg4,
- abi_long arg5, abi_long arg6, abi_long arg7,
- abi_long arg8)
+static abi_long do_syscall1(CPUArchState *cpu_env, int num, abi_ulong arg1,
+ abi_ulong arg2, abi_ulong arg3, abi_ulong arg4,
+ abi_ulong arg5, abi_ulong arg6, abi_ulong arg7,
+ abi_ulong arg8)
{
CPUState *cpu = env_cpu(cpu_env);
abi_long ret;
@@ -13203,10 +13203,10 @@ static abi_long do_syscall1(CPUArchState *cpu_env, int num, abi_long arg1,
return ret;
}
-abi_long do_syscall(CPUArchState *cpu_env, int num, abi_long arg1,
- abi_long arg2, abi_long arg3, abi_long arg4,
- abi_long arg5, abi_long arg6, abi_long arg7,
- abi_long arg8)
+abi_long do_syscall(CPUArchState *cpu_env, int num, abi_ulong arg1,
+ abi_ulong arg2, abi_ulong arg3, abi_ulong arg4,
+ abi_ulong arg5, abi_ulong arg6, abi_ulong arg7,
+ abi_ulong arg8)
{
CPUState *cpu = env_cpu(cpu_env);
abi_long ret;
diff --git a/linux-user/user-internals.h b/linux-user/user-internals.h
index 0280e76addda504ea9745a17324b..1026e09da8caecf3e74159ea319e 100644
--- a/linux-user/user-internals.h
+++ b/linux-user/user-internals.h
@@ -59,10 +59,10 @@ int info_is_fdpic(struct image_info *info);
void target_set_brk(abi_ulong new_brk);
void syscall_init(void);
-abi_long do_syscall(CPUArchState *cpu_env, int num, abi_long arg1,
- abi_long arg2, abi_long arg3, abi_long arg4,
- abi_long arg5, abi_long arg6, abi_long arg7,
- abi_long arg8);
+abi_long do_syscall(CPUArchState *cpu_env, int num, abi_ulong arg1,
+ abi_ulong arg2, abi_ulong arg3, abi_ulong arg4,
+ abi_ulong arg5, abi_ulong arg6, abi_ulong arg7,
+ abi_ulong arg8);
extern __thread CPUState *thread_cpu;
G_NORETURN void cpu_loop(CPUArchState *env);
abi_long get_errno(abi_long ret);

View File

@ -1,62 +0,0 @@
From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= <berrange@redhat.com>
Date: Tue, 4 Oct 2022 10:32:05 +0100
Subject: meson: enforce a minimum Linux kernel headers version >= 4.18
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Git-commit: 0000000000000000000000000000000000000000
Refereces: bsc#1204001
Various areas of QEMU have a dependency on Linux kernel header
definitions. This falls under the scope of our supported platforms
matrix, but historically we've not checked for a minimum kernel
headers version. This has made it unclear when we can drop support
for older kernel headers.
* Alpine 3.14: 5.10
* CentOS 8: 4.18
* CentOS 9: 5.14
* Debian 10: 4.19
* Debian 11: 5.10
* Fedora 35: 5.19
* Fedora 36: 5.19
* OpenSUSE 15.3: 5.3.0
* Ubuntu 20.04: 5.4
* Ubuntu 22.04: 5.15
The above ignores the 3rd version digit since distros update their
packages periodically and such updates don't generally affect public
APIs to the extent that it matters for our build time check.
Overall, we can set the baseline to 4.18 currently.
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
Signed-off-by: Dario Faggioli <dfaggioli@suse.com>
---
meson.build | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/meson.build b/meson.build
index 41f693a822a7ec58085bb53a8518..6641e86c0107906bb07d6b35d54a 100644
--- a/meson.build
+++ b/meson.build
@@ -248,6 +248,18 @@ if targetos == 'linux'
add_project_arguments('-isystem', meson.current_source_dir() / 'linux-headers',
'-isystem', 'linux-headers',
language: ['c', 'cpp'])
+
+ if not cc.compiles('''
+ #include <linux/version.h>
+ int main(void) {
+#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 18, 0)
+#error "QEMU requires Linux kernel headers version >= 4.18.0"
+#endif
+ return 0;
+ }''')
+ error('QEMU requires Linux kernel headers version >= 4.18.0')
+endif
+
endif
add_project_arguments('-iquote', '.',

View File

@ -1,32 +0,0 @@
From: Bruce Rogers <brogers@suse.com>
Date: Fri, 28 Aug 2020 13:50:40 -0600
Subject: meson: install ivshmem-client and ivshmem-server
Turn on the meson install flag for these executables
Signed-off-by: Bruce Rogers <brogers@suse.com>
---
contrib/ivshmem-client/meson.build | 2 +-
contrib/ivshmem-server/meson.build | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/contrib/ivshmem-client/meson.build b/contrib/ivshmem-client/meson.build
index ce8dcca84ddb23de1d8eaa813f5a..bc77336258302e0f7a962ef47ed6 100644
--- a/contrib/ivshmem-client/meson.build
+++ b/contrib/ivshmem-client/meson.build
@@ -1,4 +1,4 @@
executable('ivshmem-client', files('ivshmem-client.c', 'main.c'), genh,
dependencies: glib,
build_by_default: targetos == 'linux',
- install: false)
+ install: true)
diff --git a/contrib/ivshmem-server/meson.build b/contrib/ivshmem-server/meson.build
index c6c3c82e89f363e1929bfa08e318..185879a0c6ce71b1272a7ef6ce4d 100644
--- a/contrib/ivshmem-server/meson.build
+++ b/contrib/ivshmem-server/meson.build
@@ -1,4 +1,4 @@
executable('ivshmem-server', files('ivshmem-server.c', 'main.c'), genh,
dependencies: [qemuutil, rt],
build_by_default: targetos == 'linux',
- install: false)
+ install: true)

View File

@ -1,35 +0,0 @@
From: Dario Faggioli <dfaggioli@suse.com>
Date: Tue, 20 Sep 2022 09:10:59 +0200
Subject: meson: remove $pkgversion from CONFIG_STAMP input to broaden
compatibility
Git-commit: 0000000000000000000000000000000000000000
As part of the effort to close the gap with Leap I think we are fine
removing the $pkgversion component to creating a unique CONFIG_STAMP.
This stamp is only used in creating a unique symbol used in ensuring the
dynamically loaded modules correspond correctly to the loading qemu.
The default inputs to producing this unique symbol are somewhat reasonable
as a generic mechanism, but specific packaging and maintenance practices
might require the default to be modified for best use. This is an example
of that.
Signed-off-by: Bruce Rogers <brogers@suse.com>
Signed-off-by: Dario Faggioli <dfaggioli@suse.com>
---
meson.build | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/meson.build b/meson.build
index 20fddbd707c91c1baee604202fb1..41f693a822a7ec58085bb53a8518 100644
--- a/meson.build
+++ b/meson.build
@@ -1736,7 +1736,7 @@ config_host_data.set_quoted('CONFIG_SYSCONFDIR', get_option('prefix') / get_opti
if config_host.has_key('CONFIG_MODULES')
config_host_data.set('CONFIG_STAMP', run_command(
meson.current_source_dir() / 'scripts/qemu-stamp.py',
- meson.project_version(), get_option('pkgversion'), '--',
+ meson.project_version(), '--',
meson.current_source_dir() / 'configure',
capture: true, check: true).stdout().strip())
endif

View File

@ -1,60 +0,0 @@
From: Zheyu Ma <zheyuma97@gmail.com>
Date: Sun, 21 Aug 2022 20:43:43 +0800
Subject: net: tulip: Restrict DMA engine to memories
Git-commit: 36a894aeb64a2e02871016da1c37d4a4ca109182
References: bsc#1202665, CVE-2022-2962
The DMA engine is started by I/O access and then itself accesses the
I/O registers, triggering a reentrancy bug.
The following log can reveal it:
==5637==ERROR: AddressSanitizer: stack-overflow
#0 0x5595435f6078 in tulip_xmit_list_update qemu/hw/net/tulip.c:673
#1 0x5595435f204a in tulip_write qemu/hw/net/tulip.c:805:13
#2 0x559544637f86 in memory_region_write_accessor qemu/softmmu/memory.c:492:5
#3 0x5595446379fa in access_with_adjusted_size qemu/softmmu/memory.c:554:18
#4 0x5595446372fa in memory_region_dispatch_write qemu/softmmu/memory.c
#5 0x55954468b74c in flatview_write_continue qemu/softmmu/physmem.c:2825:23
#6 0x559544683662 in flatview_write qemu/softmmu/physmem.c:2867:12
#7 0x5595446833f3 in address_space_write qemu/softmmu/physmem.c:2963:18
#8 0x5595435fb082 in dma_memory_rw_relaxed qemu/include/sysemu/dma.h:87:12
#9 0x5595435fb082 in dma_memory_rw qemu/include/sysemu/dma.h:130:12
#10 0x5595435fb082 in dma_memory_write qemu/include/sysemu/dma.h:171:12
#11 0x5595435fb082 in stl_le_dma qemu/include/sysemu/dma.h:272:1
#12 0x5595435fb082 in stl_le_pci_dma qemu/include/hw/pci/pci.h:910:1
#13 0x5595435fb082 in tulip_desc_write qemu/hw/net/tulip.c:101:9
#14 0x5595435f7e3d in tulip_xmit_list_update qemu/hw/net/tulip.c:706:9
#15 0x5595435f204a in tulip_write qemu/hw/net/tulip.c:805:13
Fix this bug by restricting the DMA engine to memories regions.
Signed-off-by: Zheyu Ma <zheyuma97@gmail.com>
Signed-off-by: Jason Wang <jasowang@redhat.com>
Signed-off-by: Dario Faggioli <dfaggioli@suse.com>
---
hw/net/tulip.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/hw/net/tulip.c b/hw/net/tulip.c
index 097e905bec296dd1c5e96771ef63..b9e42c322ab1fb92416adfc5fda9 100644
--- a/hw/net/tulip.c
+++ b/hw/net/tulip.c
@@ -70,7 +70,7 @@ static const VMStateDescription vmstate_pci_tulip = {
static void tulip_desc_read(TULIPState *s, hwaddr p,
struct tulip_descriptor *desc)
{
- const MemTxAttrs attrs = MEMTXATTRS_UNSPECIFIED;
+ const MemTxAttrs attrs = { .memory = true };
if (s->csr[0] & CSR0_DBO) {
ldl_be_pci_dma(&s->dev, p, &desc->status, attrs);
@@ -88,7 +88,7 @@ static void tulip_desc_read(TULIPState *s, hwaddr p,
static void tulip_desc_write(TULIPState *s, hwaddr p,
struct tulip_descriptor *desc)
{
- const MemTxAttrs attrs = MEMTXATTRS_UNSPECIFIED;
+ const MemTxAttrs attrs = { .memory = true };
if (s->csr[0] & CSR0_DBO) {
stl_be_pci_dma(&s->dev, p, desc->status, attrs);

View File

@ -1,23 +0,0 @@
From: Bruce Rogers <brogers@suse.com>
Date: Mon, 23 Nov 2020 07:06:37 -0700
Subject: qboot: add cross.ini file to handle aarch64 based build
Signed-off-by: Bruce Rogers <brogers@suse.com>
---
cross.ini | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/roms/qboot/cross.ini b/roms/qboot/cross.ini
new file mode 100644
index 0000000000000000000000000000000000000000..4b3584da7e189efad7865450bf5310685c2e0f31
--- /dev/null
+++ b/roms/qboot/cross.ini
@@ -0,0 +1,8 @@
+[host_machine]
+system = 'linux'
+cpu_family = 'x86'
+cpu = 'x86_64'
+endian = 'little'
+
+[binaries]
+c = 'x86_64-suse-linux-gcc'

BIN
qemu-7.1.0.tar.xz (Stored with Git LFS)

Binary file not shown.

Binary file not shown.

3
qemu-9.0.0.obscpio Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:c8a73ea50fffa698bd1e6ac4e6dc6dd0c397d03b519754974b739887f18b1a6c
size 849561615

View File

@ -1,27 +0,0 @@
From: =?UTF-8?q?Andreas=20F=C3=A4rber?= <afaerber@suse.de>
Date: Wed, 10 Aug 2016 19:00:24 +0200
Subject: qemu-binfmt-conf: Modify default path
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Change QEMU_PATH from /usr/local/bin to /usr/bin prefix.
Signed-off-by: Andreas Färber <afaerber@suse.de>
---
scripts/qemu-binfmt-conf.sh | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/scripts/qemu-binfmt-conf.sh b/scripts/qemu-binfmt-conf.sh
index 6ef9f118d9ffe39cfadcdf54168e..4115eaa121aabc17a417f5ef4955 100755
--- a/scripts/qemu-binfmt-conf.sh
+++ b/scripts/qemu-binfmt-conf.sh
@@ -341,7 +341,7 @@ BINFMT_SET=qemu_register_interpreter
SYSTEMDDIR="/etc/binfmt.d"
DEBIANDIR="/usr/share/binfmts"
-QEMU_PATH=/usr/local/bin
+QEMU_PATH=/usr/bin
CREDENTIAL=no
PERSISTENT=no
PRESERVE_ARG0=no

View File

@ -1,80 +0,0 @@
From: Bruce Rogers <brogers@suse.com>
Date: Tue, 2 Aug 2016 11:36:02 -0600
Subject: qemu-bridge-helper: reduce security profile
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
References: boo#988279
Change from using glib alloc and free routines to those
from libc. Also perform safety measure of dropping privs
to user if configured no-caps.
Signed-off-by: Bruce Rogers <brogers@suse.com>
[AF: Rebased for v2.7.0-rc2]
Signed-off-by: Andreas Färber <afaerber@suse.de>
---
qemu-bridge-helper.c | 28 +++++++++++++++++++++++++---
1 file changed, 25 insertions(+), 3 deletions(-)
diff --git a/qemu-bridge-helper.c b/qemu-bridge-helper.c
index a26e1663f02de3c99198df6e2080..f3483b0a344da4f82b6710551390 100644
--- a/qemu-bridge-helper.c
+++ b/qemu-bridge-helper.c
@@ -124,7 +124,12 @@ static int parse_acl_file(const char *filename, ACLList *acl_list)
}
if (strcmp(cmd, "deny") == 0) {
- acl_rule = g_malloc(sizeof(*acl_rule));
+ acl_rule = calloc(1, sizeof(*acl_rule));
+ if (!acl_rule) {
+ fclose(f);
+ errno = ENOMEM;
+ return -1;
+ }
if (strcmp(arg, "all") == 0) {
acl_rule->type = ACL_DENY_ALL;
} else {
@@ -133,7 +138,12 @@ static int parse_acl_file(const char *filename, ACLList *acl_list)
}
QSIMPLEQ_INSERT_TAIL(acl_list, acl_rule, entry);
} else if (strcmp(cmd, "allow") == 0) {
- acl_rule = g_malloc(sizeof(*acl_rule));
+ acl_rule = calloc(1, sizeof(*acl_rule));
+ if (!acl_rule) {
+ fclose(f);
+ errno = ENOMEM;
+ return -1;
+ }
if (strcmp(arg, "all") == 0) {
acl_rule->type = ACL_ALLOW_ALL;
} else {
@@ -438,6 +448,18 @@ int main(int argc, char **argv)
goto cleanup;
}
+#ifndef CONFIG_LIBCAP
+ /*
+ * avoid sending the fd as root user if running suid to not fool
+ * peer credentials to daemons that dont expect that
+ */
+ if (setuid(getuid()) < 0) {
+ fprintf(stderr, "Failed to drop privileges.\n");
+ ret = EXIT_FAILURE;
+ goto cleanup;
+ }
+#endif
+
/* write fd to the domain socket */
if (send_fd(unixfd, fd) == -1) {
fprintf(stderr, "failed to write fd to unix socket: %s\n",
@@ -459,7 +481,7 @@ cleanup:
}
while ((acl_rule = QSIMPLEQ_FIRST(&acl_list)) != NULL) {
QSIMPLEQ_REMOVE_HEAD(&acl_list, entry);
- g_free(acl_rule);
+ free(acl_rule);
}
return ret;

View File

@ -1,14 +0,0 @@
[Unit]
Description=QEMU Guest Agent
Documentation=http://wiki.qemu.org/Features/GuestAgent
BindsTo=dev-virtio\x2dports-org.qemu.guest_agent.0.device
After=dev-virtio\x2dports-org.qemu.guest_agent.0.device
[Service]
Type=simple
ExecStart=-/usr/bin/qemu-ga -p /dev/virtio-ports/org.qemu.guest_agent.0
Restart=always
RestartSec=0
[Install]
WantedBy=dev-virtio\x2dports-org.qemu.guest_agent.0.device

View File

@ -1,23 +0,0 @@
#!/bin/sh
# sample bridge qemu-ifup script
echo 'configuring qemu network with bridge for' $*
# If bridge is not specified, try device with default route.
bridge=$2
if [ -z "$bridge" ]; then
bridge=$(/usr/sbin/ip route list | /usr/bin/awk '/^default / { print $5 }')
fi
# Exit if $bridge is not a bridge. Exit with 0 status
# so qemu process is not terminated and provide message
# about failure to setup network.
if [ ! -e "/sys/class/net/${bridge}/bridge" ]
then
echo "WARNING! ${bridge} is not a bridge. qemu-ifup exiting. VM may not have a functioning networking stack."
exit 0
fi
/usr/sbin/ip link set $1 up
/usr/sbin/ip link set $1 master $bridge || true

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:b1b92b2e22f846e4f7c692d8466f3865fbb95c2523aee7fc0a06524a39061e94
size 47

352
qemu-linux-user.spec Normal file
View File

@ -0,0 +1,352 @@
#
# spec file for package qemu-linux-user
#
# Copyright (c) 2024 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
%include %{_sourcedir}/common.inc
%ifarch %ix86 x86_64 s390x
%define legacy_qemu_kvm 1
%endif
Name: qemu-linux-user
URL: https://www.qemu.org/
Summary: CPU emulator for user space
License: BSD-2-Clause AND BSD-3-Clause AND GPL-2.0-only AND GPL-2.0-or-later AND LGPL-2.1-or-later AND MIT
Group: System/Emulators/PC
Version: 9.0.1
Release: 0
Source0: qemu-%{version}.tar.xz
Source1: common.inc
Source200: qemu-rpmlintrc
Source303: README.PACKAGING
Source1000: qemu-rpmlintrc
BuildRoot: %{_tmppath}/%{name}-%{version}-build
BuildRequires: bison
BuildRequires: glib2-devel-static >= 2.56
BuildRequires: glibc-devel-static
BuildRequires: (pcre-devel-static if glib2-devel-static < 2.73 else pcre2-devel-static)
# passing filelist check for /usr/lib/binfmt.d
BuildRequires: systemd
BuildRequires: zlib-devel-static
# we must not install the qemu-linux-user package when under QEMU build
%if 0%{?qemu_user_space_build:1}
#!BuildIgnore: post-build-checks
%endif
BuildRequires: discount
BuildRequires: fdupes
BuildRequires: flex
BuildRequires: gcc-c++
BuildRequires: meson
BuildRequires: ninja >= 1.7
%if 0%{?suse_version} >= 1600
BuildRequires: python3-Sphinx
BuildRequires: python3-base >= 3.8
%else
BuildRequires: python311-Sphinx
BuildRequires: python311-base
%endif
%description
QEMU provides CPU emulation along with other related capabilities. This package
provides programs to run user space binaries and libraries meant for another
architecture. The syscall interface is intercepted and execution below the
syscall layer occurs on the native hardware and operating system.
%files
%doc README.rst VERSION
%license COPYING COPYING.LIB LICENSE
%_bindir/qemu-aarch64
%_bindir/qemu-aarch64_be
%_bindir/qemu-alpha
%_bindir/qemu-arm
%_bindir/qemu-armeb
%_bindir/qemu-cris
%_bindir/qemu-hexagon
%_bindir/qemu-hppa
%_bindir/qemu-i386
%_bindir/qemu-loongarch64
%_bindir/qemu-m68k
%_bindir/qemu-microblaze
%_bindir/qemu-microblazeel
%_bindir/qemu-mips
%_bindir/qemu-mips64
%_bindir/qemu-mips64el
%_bindir/qemu-mipsel
%_bindir/qemu-mipsn32
%_bindir/qemu-mipsn32el
%_bindir/qemu-nios2
%_bindir/qemu-or1k
%_bindir/qemu-ppc
%_bindir/qemu-ppc64
%_bindir/qemu-ppc64le
%_bindir/qemu-riscv32
%_bindir/qemu-riscv64
%_bindir/qemu-s390x
%_bindir/qemu-sh4
%_bindir/qemu-sh4eb
%_bindir/qemu-sparc
%_bindir/qemu-sparc32plus
%_bindir/qemu-sparc64
%_bindir/qemu-x86_64
%_bindir/qemu-xtensa
%_bindir/qemu-xtensaeb
%_sbindir/qemu-binfmt-conf.sh
%_prefix/lib/binfmt.d/qemu-*.conf
%prep
%autosetup -n qemu-%{version} -p1
# We have the meson subprojects there, but as submodules (because OBS
# SCM bridge can handle the latter, but not the former) so we need to
# apply the layering of the packagefiles manually
meson subprojects packagefiles --apply berkeley-testfloat-3
meson subprojects packagefiles --apply berkeley-softfloat-3
%build
%define rpmfilesdir %{_builddir}/qemu-%{version}/rpm
%if %{legacy_qemu_kvm}
# FIXME: Why are we copying the s390 specific one?
cp %{rpmfilesdir}/supported.s390.txt docs/supported.rst
sed -i '/^\ \ \ about\/index.*/i \ \ \ supported.rst' docs/index.rst
%endif
find . -iname ".git" -exec rm -rf {} +
mkdir -p %blddir
cd %blddir
# We define a few general and common options and then we disable
# pretty much everything. Afterwards, there is a section for each
# of the flavors where we explicitly enable all the feature we want
# for them.
# TODO: Check whether we want to enable the followings:
# * avx512f
# * debug-info
# * fuse
# * malloc-trim
# * multiprocess
# * qom-cast-debug
# * trace-backends=dtrace
#
# Fedora has avx2 enabled for ix86, while we can't (I tried). Guess it's
# because, for them, ix86 == i686 (while for us it's i586).
# Let's try to stick to _FORTIFY_SOURCE=2 for now
EXTRA_CFLAGS="$(echo %{optflags} | sed -E 's/-[A-Z]?_FORTIFY_SOURCE[=]?[0-9]*//g') -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -Wno-error"
%srcdir/configure \
%if 0%{?suse_version} >= 1600
--python=%_bindir/python3 \
%else
--python=%_bindir/python3.11 \
%endif
--docdir=%_docdir \
--datadir=%_datadir \
--extra-cflags="${EXTRA_CFLAGS}" \
--firmwarepath=%_datadir/%name \
--libdir=%_libdir \
--libexecdir=%_libexecdir \
--localstatedir=%_localstatedir \
--prefix=%_prefix \
--sysconfdir=%_sysconfdir \
--with-pkgversion="%(echo '%{distro}' | sed 's/ (.*)//')" \
--disable-af-xdp \
--disable-alsa \
--disable-attr \
--disable-auth-pam \
--disable-avx2 \
--disable-avx512f \
--disable-block-drv-whitelist-in-tools \
--disable-bochs \
--disable-bpf \
--disable-brlapi \
--disable-bsd-user \
--disable-bzip2 \
--disable-cap-ng \
--disable-capstone \
--disable-cfi \
--disable-cfi-debug \
--disable-cloop \
--disable-cocoa \
--disable-coreaudio \
--disable-coroutine-pool \
--disable-crypto-afalg \
--disable-curl \
--disable-curses \
--disable-dbus-display \
--disable-debug-info \
--disable-debug-mutex \
--disable-debug-tcg \
--disable-dmg \
--disable-docs \
--disable-download \
--disable-dsound \
--disable-fdt \
--disable-fuse \
--disable-fuse-lseek \
--disable-gcrypt \
--disable-gettext \
--disable-gio \
--disable-glusterfs \
--disable-gnutls \
--disable-gtk \
--disable-guest-agent \
--disable-guest-agent-msi \
--disable-hv-balloon \
--disable-hvf \
--disable-iconv \
--disable-jack \
--disable-kvm \
--disable-l2tpv3 \
--disable-libdaxctl \
--disable-libiscsi \
--disable-libkeyutils \
--disable-libnfs \
--disable-libpmem \
--disable-libssh \
--disable-libudev \
--disable-libusb \
--disable-linux-aio \
--disable-linux-io-uring \
--disable-linux-user \
--disable-live-block-migration \
--disable-lto \
--disable-lzfse \
--disable-lzo \
--disable-malloc-trim \
--disable-membarrier \
--disable-module-upgrades \
--disable-modules \
--disable-mpath \
--disable-multiprocess \
--disable-netmap \
--disable-nettle \
--disable-numa \
--disable-nvmm \
--disable-opengl \
--disable-oss \
--disable-pa \
--disable-parallels \
--disable-pie \
--disable-pipewire \
--disable-pixman \
--disable-plugins \
--disable-png \
--disable-pvrdma \
--disable-qcow1 \
--disable-qed \
--disable-qom-cast-debug \
--disable-rbd \
--disable-rdma \
--disable-relocatable \
--disable-replication \
--disable-rng-none \
--disable-rutabaga-gfx \
--disable-safe-stack \
--disable-sanitizers \
--disable-sdl \
--disable-sdl-image \
--disable-seccomp \
--disable-selinux \
--disable-slirp \
--disable-slirp-smbd \
--disable-smartcard \
--disable-snappy \
--disable-sparse \
--disable-spice \
--disable-spice-protocol \
--disable-strip \
--disable-system \
--disable-tcg \
--disable-tcg-interpreter \
--disable-tools \
--disable-tpm \
--disable-u2f \
--disable-usb-redir \
--disable-user \
--disable-vde \
--disable-vdi \
--disable-vhost-crypto \
--disable-vhost-kernel \
--disable-vhost-net \
--disable-vhost-user \
--disable-vhost-user-blk-server \
--disable-vhost-vdpa \
--disable-virglrenderer \
--disable-virtfs \
--disable-vnc \
--disable-vnc-jpeg \
--disable-vnc-sasl \
--disable-vte \
--disable-vvfat \
--disable-werror \
--disable-whpx \
--disable-xen \
--disable-xen-pci-passthrough \
--disable-xkbcommon \
--disable-zstd \
--without-default-devices \
%if %{with system_membarrier}
--enable-membarrier \
%endif
%if %{with malloc_trim}
--enable-malloc-trim \
%endif
%if "%{_lto_cflags}" != "%{nil}"
--enable-lto \
%endif
--disable-install-blobs \
--enable-attr \
--enable-coroutine-pool \
--enable-linux-user \
--enable-selinux \
--enable-tcg \
--static
echo "=== Content of config-host.mak: ==="
cat config-host.mak
echo "=== ==="
%make_build
%install
cd %blddir
%make_build install DESTDIR=%{buildroot}
rm -rf %{buildroot}%_datadir/qemu/keymaps
unlink %{buildroot}%_datadir/qemu/trace-events-all
install -d -m 755 %{buildroot}%_sbindir
install -m 755 scripts/qemu-binfmt-conf.sh %{buildroot}%_sbindir
install -d -m 755 %{buildroot}%{_prefix}/lib/binfmt.d/
scripts/qemu-binfmt-conf.sh --systemd ALL --persistent yes --preserve-argv0 yes --exportdir %{buildroot}%{_prefix}/lib/binfmt.d/
%fdupes -s %{buildroot}
%check
cd %blddir
%ifarch aarch64 %ix86 ppc ppc64 ppc64le riscv64 s390x x86_64
./qemu-%{qemu_arch} %_bindir/ls > /dev/null
%endif
%make_build check-softfloat
%changelog

View File

@ -1,81 +0,0 @@
#!/bin/bash
#############################################################
# Name: Supportconfig Plugin for QEMU/KVM
# Description: Gathers important troubleshooting information
# about QEMU
# Author: Jim Fehlig <jfehlig@suse.com>
#############################################################
RCFILE="/usr/lib/supportconfig/resources/scplugin.rc"
if [ -s $RCFILE ]; then
if ! source $RCFILE; then
echo "ERROR: Initializing resource file: $RCFILE" >&2
exit 1
fi
fi
rpm_verify() {
thisrpm="$1"
local ret=0
echo
echo "#==[ Validating RPM ]=================================#"
if rpm -q "$thisrpm" >/dev/null 2>&1; then
echo "# rpm -V $thisrpm"
if rpm -V "$thisrpm"; then
echo "Status: Passed"
else
echo "Status: WARNING"
fi
else
echo "package $thisrpm is not installed"
ret=1
fi
echo
return $ret
}
if ! rpm_verify qemu; then
echo "Skipped"
exit 0
fi
# skip if the host is xen
echo "#==[ Checking if booted Xen ]=================================#"
if [ -d /proc/xen ] && [ -e /proc/xen/capabilities ] && [ `cat /proc/xen/capabilities` = "control_d" ]; then
echo "Yes"
echo "Skipped"
exit 0
else
echo "No"
echo
fi
# basic system information
plugin_command "uname -r"
plugin_command "lscpu"
plugin_command "lspci -v"
plugin_command "lsscsi"
plugin_command "kvm_stat -1"
plugin_command "lsmod | grep ^kvm"
for MODULE in `lsmod | grep ^kvm | cut -d ' ' -f 1`; do
plugin_command "modinfo $MODULE"
done
plugin_command "ps -ef | grep qemu"
# list contents of common config and image directories
plugin_command "ls -alR /var/lib/libvirt/images/"
# network-related info often useful for debugging
nm_enabled=$(systemctl is-enabled NetworkManager.service > /dev/null 2>&1; echo $?)
if [ $nm_enabled -eq 0 ]; then
echo "NOTE: NetworkManager should not be enabled on a KVM host"
fi
plugin_command "ip route list"
plugin_command "ip neigh list"
plugin_command "ip link show type bridge"
plugin_command "bridge link show"
echo "Done"

File diff suppressed because it is too large Load Diff

View File

@ -1,493 +0,0 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
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
=YraJ
-----END PGP PUBLIC KEY BLOCK-----

4
qemu.obsinfo Normal file
View File

@ -0,0 +1,4 @@
name: qemu
version: 9.0.1
mtime: 1719581360
commit: aaca3d0d6b11f122737d41bb934749ba718229da

2750
qemu.spec

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,26 +0,0 @@
From: Bruce Rogers <brogers@suse.com>
Date: Mon, 23 Nov 2020 07:13:23 -0700
Subject: roms/Makefile: add --cross-file to qboot meson setup for aarch64
We add a --cross-file reference so that we can do cross compilation
of qboot from an aarch64 build.
Signed-off-by: Bruce Rogers <brogers@suse.com>
Signed-off-by: Dario Faggioli <dfaggioli@suse.com>
---
roms/Makefile | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/roms/Makefile b/roms/Makefile
index 3d53bd528666b594ab3d6b631450..0e652aff895fe0680cf35e43b299 100644
--- a/roms/Makefile
+++ b/roms/Makefile
@@ -199,7 +199,7 @@ MESON = meson
NINJA = ninja
qboot:
mkdir -p qboot/build
- $(MESON) setup $(if $(wildcard qboot/build/meson-private),--wipe,) qboot qboot/build
+ $(MESON) setup $(if $(x86_64_cross_prefix),--cross-file qboot/cross.ini,) $(if $(wildcard qboot/build/meson-private),--wipe,) qboot qboot/build
$(NINJA) -C qboot/build
cp qboot/build/bios.bin ../pc-bios/qboot.rom

View File

@ -1,72 +0,0 @@
From: Bruce Rogers <brogers@suse.com>
Date: Sat, 19 Nov 2016 08:06:30 -0700
Subject: roms/Makefile: pass a packaging timestamp to subpackages with date
info
References: bsc#1011213
Certain rom subpackages build from qemu git-submodules call the date
program to include date information in the packaged binaries. This
causes repeated builds of the package to be different, wkere the only
real difference is due to the fact that time build timestamp has
changed. To promote reproducible builds and avoid customers being
prompted to update packages needlessly, we'll use the timestamp of the
VERSION file as the packaging timestamp for all packages that build in a
timestamp for whatever reason.
Signed-off-by: Bruce Rogers <brogers@suse.com>
---
roms/Makefile | 14 ++++++++++++--
1 file changed, 12 insertions(+), 2 deletions(-)
diff --git a/roms/Makefile b/roms/Makefile
index 5e44d9789001979a0e9ef3183f90..3d53bd528666b594ab3d6b631450 100644
--- a/roms/Makefile
+++ b/roms/Makefile
@@ -52,6 +52,12 @@ SEABIOS_EXTRAVERSION="-prebuilt.qemu.org"
#
EDK2_EFIROM = edk2/BaseTools/Source/C/bin/EfiRom
+# NB: Certain SUSE qemu subpackages use date information, but we want
+# reproducible builds, so we use a pre-determined timestamp, rather
+# than the current timestamp to acheive consistent results build to
+# build.
+PACKAGING_TIMESTAMP = $(shell date -r ../VERSION +%s)
+
default help:
@echo "nothing is build by default"
@echo "available build targets:"
@@ -104,7 +110,7 @@ build-seabios-config-%: config.%
.PHONY: sgabios skiboot qboot
sgabios:
- $(MAKE) -C sgabios
+ $(MAKE) -C sgabios PACKAGING_TIMESTAMP=$(PACKAGING_TIMESTAMP)
cp sgabios/sgabios.bin ../pc-bios
@@ -123,11 +129,13 @@ efi-rom-%: build-pxe-roms build-efi-roms edk2-basetools
build-pxe-roms:
$(MAKE) -C ipxe/src CONFIG=qemu \
+ PACKAGING_TIMESTAMP=$(PACKAGING_TIMESTAMP) \
CROSS_COMPILE=$(x86_64_cross_prefix) \
$(patsubst %,bin/%.rom,$(pxerom_targets))
build-efi-roms: build-pxe-roms
$(MAKE) -C ipxe/src CONFIG=qemu \
+ PACKAGING_TIMESTAMP=$(PACKAGING_TIMESTAMP) \
CROSS_COMPILE=$(x86_64_cross_prefix) \
$(patsubst %,bin-x86_64-efi/%.efidrv,$(pxerom_targets))
@@ -151,7 +159,9 @@ edk2-basetools:
EXTRA_LDFLAGS='$(EDK2_BASETOOLS_LDFLAGS)'
slof:
- $(MAKE) -C SLOF CROSS=$(powerpc64_cross_prefix) qemu
+ $(MAKE) -C SLOF CROSS=$(powerpc64_cross_prefix) \
+ PACKAGING_TIMESTAMP=$(PACKAGING_TIMESTAMP) \
+ qemu
cp SLOF/boot_rom.bin ../pc-bios/slof.bin
u-boot.e500:

View File

@ -1,30 +0,0 @@
From: Bruce Rogers <brogers@suse.com>
Date: Thu, 20 Jun 2019 17:58:37 -0600
Subject: roms: change cross compiler naming to be suse specific
Signed-off-by: Bruce Rogers <brogers@suse.com>
---
roms/edk2-funcs.sh | 10 +++++++++-
1 file changed, 9 insertions(+), 1 deletion(-)
diff --git a/roms/edk2-funcs.sh b/roms/edk2-funcs.sh
index cd6e4f2c82d2b346cdb7b3199bca..529e335121fcb60e419bfc656b6d 100644
--- a/roms/edk2-funcs.sh
+++ b/roms/edk2-funcs.sh
@@ -116,7 +116,15 @@ qemu_edk2_get_cross_prefix()
# force soft-float cross-compiler on Debian
printf 'arm-linux-gnueabi-'
else
- printf '%s-linux-gnu-\n' "$gcc_arch"
+ if [ "$emulation_target" == arm ]; then
+ printf '%s-suse-linux-gnueabi-\n' "$gcc_arch"
+ else
+ if [ "$gcc_arch" == i686 ]; then
+ printf '%s-suse-linux-\n' "i586"
+ else
+ printf '%s-suse-linux-\n' "$gcc_arch"
+ fi
+ fi
fi
}

View File

@ -1,22 +0,0 @@
From: Bruce Rogers <brogers@suse.com>
Date: Thu, 27 Jun 2019 09:38:43 -0600
Subject: roms/sgabios: Fix csum8 to be built by host compiler
Signed-off-by: Bruce Rogers <brogers@suse.com
---
Makefile | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/roms/sgabios/Makefile b/roms/sgabios/Makefile
index d2934c9f678dadfae5201b8507e9..d7e108faf69007056ddc08c4e63c 100644
--- a/roms/sgabios/Makefile
+++ b/roms/sgabios/Makefile
@@ -55,7 +55,7 @@ sgabios.elf: .depend $(OBJS) $(LDSCRIPT) csum8
$(LD) $(LDFLAGS) $(OBJS) -o $@
csum8: csum8.c
- $(CC) -Wall -O2 -o $@ $<
+ $(HOSTCC) -Wall -O2 -o $@ $<
sgabios.o: buildinfo

View File

@ -1,37 +0,0 @@
From: Hannes Reinecke <hare@suse.de>
Date: Fri, 25 Mar 2022 18:41:52 +0100
Subject: scsi-generic: check for additional SG_IO status on completion
Git-commit: 0000000000000000000000000000000000000000
References: bsc#1178049
SG_IO may return additional status in the 'status', 'driver_status',
and 'host_status' fields. When either of these fields are set the
command has not been executed normally, so we should not continue
processing this command but rather return an error.
scsi_read_complete() already checks for these errors,
scsi_write_complete() does not.
Signed-off-by: Hannes Reinecke <hare@suse.de>
Signed-off-by: Lin Ma <lma@suse.com>
Signed-off-by: Dario Faggioli <dfaggioli@suse.com>
---
hw/scsi/scsi-generic.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/hw/scsi/scsi-generic.c b/hw/scsi/scsi-generic.c
index aa3ae417ac726e9decf7e678e25f..8eb65f5f81bd4e998966571a3741 100644
--- a/hw/scsi/scsi-generic.c
+++ b/hw/scsi/scsi-generic.c
@@ -397,7 +397,10 @@ static void scsi_write_complete(void * opaque, int ret)
aio_context_acquire(blk_get_aio_context(s->conf.blk));
- if (ret || r->req.io_canceled) {
+ if (ret || r->req.io_canceled ||
+ r->io_header.status != SCSI_HOST_OK ||
+ (r->io_header.driver_status & SG_ERR_DRIVER_TIMEOUT) ||
+ r->io_header.status != GOOD) {
scsi_command_complete_noio(r, ret);
goto done;
}

View File

@ -1,103 +0,0 @@
From: Lin Ma <lma@suse.com>
Date: Sat, 20 Nov 2021 18:05:57 +0800
Subject: scsi-generic: replace logical block count of response of READ
CAPACITY
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Git-commit: 0000000000000000000000000000000000000000
References: [SUSE-JIRA] (SLE-20965)
While using SCSI passthrough, Following scenario makes qemu doesn't
realized the capacity change of remote scsi target:
1. online resize the scsi target.
2. issue 'rescan-scsi-bus.sh -s ...' in host.
3. issue 'rescan-scsi-bus.sh -s ...' in vm.
In above scenario I used to experienced errors while accessing the
additional disk space in vm. I think the reasonable operations should
be:
1. online resize the scsi target.
2. issue 'rescan-scsi-bus.sh -s ...' in host.
3. issue 'block_resize' via qmp to notify qemu.
4. issue 'rescan-scsi-bus.sh -s ...' in vm.
The errors disappear once I notify qemu by block_resize via qmp.
So this patch replaces the number of logical blocks of READ CAPACITY
response from scsi target by qemu's bs->total_sectors. If the user in
vm wants to access the additional disk space, The administrator of
host must notify qemu once resizeing the scsi target.
Bonus is that domblkinfo of libvirt can reflect the consistent capacity
information between host and vm in case of missing block_resize in qemu.
E.g:
...
<disk type='block' device='lun'>
<driver name='qemu' type='raw'/>
<source dev='/dev/sdc' index='1'/>
<backingStore/>
<target dev='sda' bus='scsi'/>
<alias name='scsi0-0-0-0'/>
<address type='drive' controller='0' bus='0' target='0' unit='0'/>
</disk>
...
Before:
1. online resize the scsi target.
2. host:~ # rescan-scsi-bus.sh -s /dev/sdc
3. guest:~ # rescan-scsi-bus.sh -s /dev/sda
4 host:~ # virsh domblkinfo --domain $DOMAIN --human --device sda
Capacity: 4.000 GiB
Allocation: 0.000 B
Physical: 8.000 GiB
5. guest:~ # lsblk /dev/sda
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 8G 0 disk
└─sda1 8:1 0 2G 0 part
After:
1. online resize the scsi target.
2. host:~ # rescan-scsi-bus.sh -s /dev/sdc
3. guest:~ # rescan-scsi-bus.sh -s /dev/sda
4 host:~ # virsh domblkinfo --domain $DOMAIN --human --device sda
Capacity: 4.000 GiB
Allocation: 0.000 B
Physical: 8.000 GiB
5. guest:~ # lsblk /dev/sda
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 4G 0 disk
└─sda1 8:1 0 2G 0 part
Signed-off-by: Lin Ma <lma@suse.com>
---
hw/scsi/scsi-generic.c | 10 ++++++++--
1 file changed, 8 insertions(+), 2 deletions(-)
diff --git a/hw/scsi/scsi-generic.c b/hw/scsi/scsi-generic.c
index 3d35d307e1a2dcb1390b7c319b85..aa3ae417ac726e9decf7e678e25f 100644
--- a/hw/scsi/scsi-generic.c
+++ b/hw/scsi/scsi-generic.c
@@ -322,11 +322,17 @@ static void scsi_read_complete(void * opaque, int ret)
if (r->req.cmd.buf[0] == READ_CAPACITY_10 &&
(ldl_be_p(&r->buf[0]) != 0xffffffffU || s->max_lba == 0)) {
s->blocksize = ldl_be_p(&r->buf[4]);
- s->max_lba = ldl_be_p(&r->buf[0]) & 0xffffffffULL;
+ BlockBackend *blk = s->conf.blk;
+ BlockDriverState *bs = blk_bs(blk);
+ s->max_lba = bs->total_sectors - 1;
+ stl_be_p(&r->buf[0], s->max_lba);
} else if (r->req.cmd.buf[0] == SERVICE_ACTION_IN_16 &&
(r->req.cmd.buf[1] & 31) == SAI_READ_CAPACITY_16) {
s->blocksize = ldl_be_p(&r->buf[8]);
- s->max_lba = ldq_be_p(&r->buf[0]);
+ BlockBackend *blk = s->conf.blk;
+ BlockDriverState *bs = blk_bs(blk);
+ s->max_lba = bs->total_sectors - 1;
+ stq_be_p(&r->buf[0], s->max_lba);
}
/*

View File

@ -1,149 +0,0 @@
From: Bruce Rogers <brogers@suse.com>
Date: Thu, 27 Jun 2019 10:15:24 -0600
Subject: seabios: switch to python3 as needed
Switch to python3 the places where "python2" is explicitly referenced.
(Ignore the uses of #!/usr/bin/env python, since that usage does the
right thing in our build environment).
Include changes proposed by the python3 2to3 tool.
Signed-off-by: Bruce Rogers <brogers@suse.com>
---
Makefile | 2 +-
scripts/acpi_extract.py | 4 ++--
scripts/acpi_extract_preprocess.py | 2 +-
scripts/layoutrom.py | 28 ++++++++++++++--------------
scripts/vgafixup.py | 2 +-
5 files changed, 19 insertions(+), 19 deletions(-)
diff --git a/roms/seabios/Makefile b/roms/seabios/Makefile
index c108f87de7683667d1a0cad6b9e5..408983026669e531dcb84230dd23 100644
--- a/roms/seabios/Makefile
+++ b/roms/seabios/Makefile
@@ -22,7 +22,7 @@ LD=$(CROSS_PREFIX)ld
OBJCOPY=$(CROSS_PREFIX)objcopy
OBJDUMP=$(CROSS_PREFIX)objdump
STRIP=$(CROSS_PREFIX)strip
-PYTHON=python
+PYTHON=python3
CPP=cpp
IASL:=iasl
LD32BIT_FLAG:=-melf_i386
diff --git a/roms/seabios/scripts/acpi_extract.py b/roms/seabios/scripts/acpi_extract.py
index 3ed863b6a79412a1276bb905d08f..7ac054e626780253fcec78414b17 100755
--- a/roms/seabios/scripts/acpi_extract.py
+++ b/roms/seabios/scripts/acpi_extract.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python
+#!/usr/bin/python3
# Copyright (C) 2011 Red Hat, Inc., Michael S. Tsirkin <mst@redhat.com>
#
# This file may be distributed under the terms of the GNU GPLv3 license.
@@ -348,7 +348,7 @@ def main():
# Pretty print output
outstrs = ["/* DO NOT EDIT! This is an autogenerated file."
" See scripts/acpi_extract.py. */"]
- for array in output.keys():
+ for array in list(output.keys()):
otype = get_value_type(max(output[array]))
outstrs.append("static unsigned %s %s[] = {" % (otype, array))
odata = []
diff --git a/roms/seabios/scripts/acpi_extract_preprocess.py b/roms/seabios/scripts/acpi_extract_preprocess.py
index 2698118406d97c164783335c7fb6..6963847a8b5d3e4bf9340a67afe2 100755
--- a/roms/seabios/scripts/acpi_extract_preprocess.py
+++ b/roms/seabios/scripts/acpi_extract_preprocess.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python
+#!/usr/bin/python3
# Copyright (C) 2011 Red Hat, Inc., Michael S. Tsirkin <mst@redhat.com>
#
# This file may be distributed under the terms of the GNU GPLv3 license.
diff --git a/roms/seabios/scripts/layoutrom.py b/roms/seabios/scripts/layoutrom.py
index abebf0211fa9627cec31cce76b8d..34b3e68f556af124346755e87c58 100755
--- a/roms/seabios/scripts/layoutrom.py
+++ b/roms/seabios/scripts/layoutrom.py
@@ -81,8 +81,8 @@ def fitSections(sections, fillsections):
section.finalsegloc = addr
fixedsections.append((addr, section))
if section.align != 1:
- print("Error: Fixed section %s has non-zero alignment (%d)" % (
- section.name, section.align))
+ print(("Error: Fixed section %s has non-zero alignment (%d)" % (
+ section.name, section.align)))
sys.exit(1)
fixedsections.sort(key=operator.itemgetter(0))
firstfixed = fixedsections[0][0]
@@ -142,10 +142,10 @@ def fitSections(sections, fillsections):
# Report stats
total = BUILD_BIOS_SIZE-firstfixed
slack = total - totalused
- print ("Fixed space: 0x%x-0x%x total: %d slack: %d"
+ print(("Fixed space: 0x%x-0x%x total: %d slack: %d"
" Percent slack: %.1f%%" % (
firstfixed, BUILD_BIOS_SIZE, total, slack,
- (float(slack) / total) * 100.0))
+ (float(slack) / total) * 100.0)))
return firstfixed + BUILD_BIOS_ADDR
@@ -288,12 +288,12 @@ def doLayout(sections, config, genreloc):
size32flat = sec32fseg_start - sec32flat_start
size32init = sec32flat_start - sec32init_start
sizelow = li.sec32low_end - li.sec32low_start
- print("16bit size: %d" % size16)
- print("32bit segmented size: %d" % size32seg)
- print("32bit flat size: %d" % (size32flat + size32textfseg))
- print("32bit flat init size: %d" % size32init)
- print("Lowmem size: %d" % sizelow)
- print("f-segment var size: %d" % size32fseg)
+ print(("16bit size: %d" % size16))
+ print(("32bit segmented size: %d" % size32seg))
+ print(("32bit flat size: %d" % (size32flat + size32textfseg)))
+ print(("32bit flat init size: %d" % size32init))
+ print(("Lowmem size: %d" % sizelow))
+ print(("f-segment var size: %d" % size32fseg))
return li
@@ -312,7 +312,7 @@ def outXRefs(sections, useseg=0, exportsyms=[], forcedelta=0):
and (symbol.section.fileid != section.fileid
or symbol.name != reloc.symbolname)):
xrefs[reloc.symbolname] = symbol
- for symbolname, symbol in xrefs.items():
+ for symbolname, symbol in list(xrefs.items()):
loc = symbol.section.finalloc
if useseg:
loc = symbol.section.finalsegloc
@@ -482,8 +482,8 @@ def checkRuntime(reloc, rsection, data, chain):
if section is None or '.init.' in section.name:
return 0
if '.data.varinit.' in section.name:
- print("ERROR: %s is VARVERIFY32INIT but used from %s" % (
- section.name, chain))
+ print(("ERROR: %s is VARVERIFY32INIT but used from %s" % (
+ section.name, chain)))
sys.exit(1)
return 1
@@ -695,7 +695,7 @@ def main():
li = doLayout(sections, config, genreloc)
# Exported symbols
- li.varlowsyms = [symbol for symbol in symbols['32flat'].values()
+ li.varlowsyms = [symbol for symbol in list(symbols['32flat'].values())
if (symbol.section is not None
and symbol.section.finalloc is not None
and '.data.varlow.' in symbol.section.name
diff --git a/roms/seabios/scripts/vgafixup.py b/roms/seabios/scripts/vgafixup.py
index 2053cd5d78e5935658e1fecec074..dc662480f909e27958fa906d73b1 100644
--- a/roms/seabios/scripts/vgafixup.py
+++ b/roms/seabios/scripts/vgafixup.py
@@ -29,7 +29,7 @@ re_leal = re.compile(
def handle_leal(sline):
m = re_leal.match(sline[5:])
if m is None or m.group('index') == '%esp':
- print("Unable to fixup leal instruction: %s" % (sline,))
+ print(("Unable to fixup leal instruction: %s" % (sline,)))
sys.exit(-1)
offset, base, index, scale, dest = m.group(
'offset', 'base', 'index', 'scale', 'dest')

View File

@ -1,36 +0,0 @@
From: Bruce Rogers <brogers@suse.com>
Date: Thu, 27 Jun 2019 10:15:24 -0600
Subject: sgabios:Makefile: fix issues of build reproducibility
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
It is desirable to produce the same bits on subsequent
builds when the actual code of the package doesn't
change. (bsc#1011213)
Signed-off-by: Bruce Rogers <brogers@suse.com>
Signed-off-by: Andreas Färber <afaerber@suse.de>
---
Makefile | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/roms/sgabios/Makefile b/roms/sgabios/Makefile
index 970b0ff37a1ae58e98d0527da215..d2934c9f678dadfae5201b8507e9 100644
--- a/roms/sgabios/Makefile
+++ b/roms/sgabios/Makefile
@@ -14,10 +14,10 @@
#
# $Id$
-BUILD_DATE = \"$(shell date -u)\"
-BUILD_SHORT_DATE = \"$(shell date -u +%D)\"
-BUILD_HOST = \"$(shell hostname)\"
-BUILD_USER = \"$(shell whoami)\"
+BUILD_DATE = \"$(shell date --date='@$(PACKAGING_TIMESTAMP)' -u)\"
+BUILD_SHORT_DATE = \"$(shell date --date='@$(PACKAGING_TIMESTAMP)' -u +%D)\"
+BUILD_HOST = \"buildhost\"
+BUILD_USER = \"geeko\"
CFLAGS := -Wall -Os -m32 -nostdlib

View File

@ -1,106 +0,0 @@
From: Bruce Rogers <brogers@suse.com>
Date: Mon, 24 Jul 2017 10:44:24 -0600
Subject: stub out the SAN req's in int13
Include-If: %if 0%{?patch-possibly-applied-elsewhere}
We need to find some code or data to change so we can make the rom fit
into the legacy size requirements. Comment out SAN support, and
hopefully nobody will be impacted.
Signed-off-by: Bruce Rogers <brogers@suse.com>
---
src/arch/x86/interface/pcbios/int13.c | 21 +++++++++++++++++++++
1 file changed, 21 insertions(+)
diff --git a/roms/ipxe/src/arch/x86/interface/pcbios/int13.c b/roms/ipxe/src/arch/x86/interface/pcbios/int13.c
index ca789a0d154e1fe3c2508a3aefea..40c61419c0c134120d1ce7c81a1e 100644
--- a/roms/ipxe/src/arch/x86/interface/pcbios/int13.c
+++ b/roms/ipxe/src/arch/x86/interface/pcbios/int13.c
@@ -23,6 +23,12 @@
FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
+#define INCLUDE_SAN_HOOKS 0
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wunused-parameter"
+#pragma GCC diagnostic ignored "-Wunused-function"
+#pragma GCC diagnostic ignored "-Wunused-variable"
+
#include <stdint.h>
#include <stdlib.h>
#include <limits.h>
@@ -1243,6 +1249,7 @@ static void int13_unhook_vector ( void ) {
*/
static int int13_hook ( unsigned int drive, struct uri **uris,
unsigned int count, unsigned int flags ) {
+#if INCLUDE_SAN_HOOKS
struct san_device *sandev;
struct int13_data *int13;
unsigned int natural_drive;
@@ -1315,6 +1322,9 @@ static int int13_hook ( unsigned int drive, struct uri **uris,
sandev_put ( sandev );
err_alloc:
return rc;
+#else
+ return -1;
+#endif
}
/**
@@ -1328,6 +1338,7 @@ static int int13_hook ( unsigned int drive, struct uri **uris,
*/
static void int13_unhook ( unsigned int drive ) {
struct san_device *sandev;
+#if INCLUDE_SAN_HOOKS
/* Find drive */
sandev = sandev_find ( drive );
@@ -1353,6 +1364,7 @@ static void int13_unhook ( unsigned int drive ) {
/* Drop reference to drive */
sandev_put ( sandev );
+#endif
}
/**
@@ -1514,6 +1526,7 @@ static int int13_load_eltorito ( unsigned int drive, struct segoff *address ) {
* Note that this function can never return success, by definition.
*/
static int int13_boot ( unsigned int drive, const char *filename __unused ) {
+#if INCLUDE_SAN_HOOKS
struct memory_map memmap;
struct segoff address;
int rc;
@@ -1539,6 +1552,9 @@ static int int13_boot ( unsigned int drive, const char *filename __unused ) {
}
return -ECANCELED; /* -EIMPOSSIBLE */
+#else
+ return -1;
+#endif
}
/** Maximum size of boot firmware table(s) */
@@ -1605,6 +1621,7 @@ static int int13_install ( struct acpi_header *acpi ) {
* @ret rc Return status code
*/
static int int13_describe ( void ) {
+#if INCLUDE_SAN_HOOKS
int rc;
/* Clear tables */
@@ -1619,9 +1636,13 @@ static int int13_describe ( void ) {
}
return 0;
+#else
+ return -1;
+#endif
}
PROVIDE_SANBOOT ( pcbios, san_hook, int13_hook );
PROVIDE_SANBOOT ( pcbios, san_unhook, int13_unhook );
PROVIDE_SANBOOT ( pcbios, san_boot, int13_boot );
PROVIDE_SANBOOT ( pcbios, san_describe, int13_describe );
+#pragma GCC diagnostic pop

View File

@ -1,926 +0,0 @@
[qemu-arm package document]
SLES 15 SP4 QEMU/KVM RELATED SUPPORT STATEMENTS
===============================================
Overview
--------
The QEMU based packages included with SLES 15 SP4 provide a large variety of
features, from the very latest customer requests to features of questionable
quality or value. The linux kernel includes components which contribute KVM
virtualization features as well. This document was created to assist the user
in deciding which features can be relied upon to build enterprise class
virtualization solutions. KVM based virtualization for x86 (Intel 64/AMD64),
for IBM System z (s390x), and for the ARM64 architecture (AArch64) are offered
at the L3 (full support) level. The bulk of this document deals with L3
supported features and is primarily ARM64 centric. This document should be
considered a companion to the standard virtualization documentation delivered
with the product.
KVM is implemented in linux kernel modules which enable the linux kernel to
function as an integral part of the KVM hypervisor. The hypervisor-guest
interaction is managed by QEMU through the /dev/kvm ioctl interface. The linux
host assists in the virtualization of storage, networking and display
resources as well as allowing direct hardware passthrough of PCI and USB
devices. Linux memory and cpu management features are used by QEMU/KVM to
enable guests to share those host resources as efficiently as possible.
QEMU is a primary component of KVM based virtualization. The QEMU emulator
binary qemu-system-aarch64 is the program to use to access KVM virtualization.
When using this program, the -machine option accel=kvm (or its alias
-enable-kvm) or --accel kvm option must be specified for KVM acceleration to
be used by the guest.
Libvirt is the preferred means of accessing QEMU/KVM functionality and is
documented elsewhere. This document focuses on the features and direct usage
of QEMU/KVM as provided by the QEMU based packages.
Major QEMU/KVM Supported Features
---------------------------------
- KVM virtualization is accomplished by using the QEMU program in KVM
acceleration mode. KVM acceleration requires that both guest and host have
the same fundamental architecture.
- Guest images created under previous QEMU versions are supported by machine
version compatibilities built into more recent QEMU versions.
- For ease of use, the QEMU program has defaults which represent traditional
usage patterns.
- Guest virtual machine characteristics are specified by a combination of
internal defaults, options provided on the QEMU program command-line, runtime
configurations set via the monitor interfaces and optional config files. The
runtime control of a VM is effected either through the Human Monitor
"Protocol" (HMP), or the JSON based programmatical QEMU Monitor Protocol (QMP)
interface. For QMP details, see qemu-qmp-ref man page.
Since a KVM guest runs in the context of a normal linux process, some types
of execution controls are managed with linux tools.
- QEMU is compatible with EDK II based UEFI firmware available with SLES 15 SP4,
which allow boot options common to physical systems, along with other features
tailored to virtualization. Various VGABIOS ROMs, from the SEABIOS project,
are also available.
- Some QEMU messages have been localized to various languages. This is provided
by the optional qemu-lang package. Keyboard mappings for various nationalities
is also provided.
- Virtual machine lifecycle controls include startup through the UEFI BIOS or
kernel boot, ACPI based shutdown, execution pausing, the saving and restoring
of machine state or disk state, VM migration to another host, and
miscellaneous controls available through the "monitors" mentioned above.
- Guest execution state may be "moved" in both time (save/restore) and space
(static and live migration). These migrations or save/restore operations can
take place either from certain prior SLES versioned hosts to a SLES 15 SP4
host or between hosts of the same version. Certain other restrictions also
apply.
- Security considerations include privileged helpers and a security model which
allows running guests as a non-root user.
- QEMU provides best effort reuse of existing disk images, including those with
systems installed, through geometry probing. Also disk images produced by
other popular virtualization technologies may be imported into QEMU supported
storage formats. These QEMU formats include features which exploit the
benefits of virtualization.
- Memory, cpu and disk space overcommit are possible and can be beneficial when
done responsibly. Additional management of these resources comes in the form
of memory ballooning or hotplug, host KSM, vcpu hot-add, online disk resizing,
trim, discard and hole punching.
- Guest performance is enhanced through the use of virtio devices, various disk
caching modes, network acceleration via the vhost-net kernel module, multi-
queue network transmit capabilities, host transparent huge pages (THP) and
direct hugetlb usage. Physical PCI and USB devices may also be passed through
to the guest, including SR-IOV VF's.
- The guest UI is accessable via GTK, VNC, Spice, and serial (including curses
TUI) interfaces.
- Guest timekeeping is supported in a variety of ways, including a paravirtual
clocksource, and options for the various guest clocks for how to handle the
timeslicing of the guest's execution on the host.
- In addition to the para-virtualized devices already mentioned, other devices
and infrastructure designed to avoid virtualization "problem areas" are
available such as SPICE graphics, vmmouse emulation, tablet style pointer
interfaces and virtio based UI interfaces.
- A built-in user-mode network (SLIRP) stack is available.
- Portions of the host file system may be shared with a guest by using virtFS.
- A guest "agent" is available for SLES 15 SP4 KVM guests via the
qemu-guest-agent package. This allows some introspection and control of the
guest OS environment from the host.
QEMU/KVM Technology Previews
----------------------------
- All features indicated as not being supported in this document fall under the
Technology Preview definition contained in the main product's release notes.
Noteworthy QEMU/KVM Unsupported Features
----------------------------------------
- Note that some features are unsupported simply due to lack of validation. If
an existing feature is desired, but not marked supported, let SUSE know about
your requirements.
- The TCG "acceleration" mode may be helpful for problem isolation, but
otherwise presents insufficient benefit and stability.
- GlusterFS integration is not enabled.
- 32 bit ARM KVM has never been supported by SUSE, but it's worth noting that
this capability will cease to even be possible in a near-future QEMU/KVM
(kernel) combination.
Deprecated, Superseded, Modified and Dropped Features
-----------------------------------------------------
- https://qemu-project.gitlab.io/qemu/about/deprecated.html and
https://qemu-project.gitlab.io/qemu/about/removed-features.html
These websites track features deprecation and removal at the upstream
development level. Our qemu package inherits this community direction, but be
aware that we can and will deviate as needed. Those deviations and additional
information can be found in this section. Feature deprecation as well as
removed features are also tracked in the "System Emulation" section of the
documentation installed with the qemu package.
- qemu-img: Deprecate use of -b without -F. Creating an image that requires
format probing of the backing image is potentially unsafe and is now
deprecated.
- Aspeed swift-bmc machine is deprecated. It can be easily replaced by the
witherspoon-bmc or the romulus-bmc machines.
- The previously non-persistent backing file with pmem=on is deprecated. Modify
VM configuration to set pmem=off to continue using fake NVDIMM with backing
file or move backing file to NVDIMM storage and keep pmem=on.
- The use of "?" as a parameter to "-cpu", "-soundhw", "-device", "-M",
"-machine" and "-d" is now considered deprecated. Use "help"
instead.
- The use of "if=scsi" as a parameter to "-drive" does not work anymore with PC
machine types, as it created an obsolete SCSI controller model.
- Use of aio=native without direct cache mode also being specified (cache=none,
cache=directsync, or cache.direct=on) is no longer allowed.
- The use of image encryption in qcow and qcow2 formats is now considered
deprecated.
Analysis has shown it to be weak encryption, in addition to suffering from
poor design. Images can easily be converted to a non-encrypted format.
- Use of acpi, boot-opts, and smp-opts in a -readconfig config file are now
considered deprecated. In the future those names will be standardized to
acpitable, boot, and smp respectively.
- These previously supported command line options are now considered deprecated:
-display sdl,window_close= (use -display sdl,window-close)
-no-quit (use -display ...,window-close=off)
-chardev tty (use serial name instead)
-chardev paraport (use parallel name instead)
-device virtio-blk,scsi= (use virtio-scsi instead)
-device virtio-blk-pci,scsi= (use virtio-scsi instead)
-enable-fips (not really helpful - see https://git.qemu.org/?p=qemu.git;a=commit;h=166310299a1e7824bbff17e1f016659d18b4a559 for details)
-realtime mlock= (use -overcommit mem-lock= instead)
-spice password=string (use password-string option instead)
-writeconfig (no replacement - never really worked right)
-share and noshare must be replaced by share=on/share=off
-nodelay must be replaced by nodelay=on rather than delay=off
-object-add options opened=on and loaded=on (both had no effect)
- These previously supported command line options are no longer supported:
-device ide-drive (use ide-hd or ide-cd instead)
-device scsi-disk (use scsi-hd or scsi-cd instead)
- These previously supported command line options are no longer recognized:
-balloon (use -device virtio-balloon instead)
-clock
-device ivshmem (use ivshmem-doorbell or ivshmem-plain instead)
-device pc-sysfw (no longer needed)
-device pci-assign, -device kvm-pci-assign (use -device vfio-pci instead)
-display sdl
-no-frame
-nodefconfig (use -no-user-config instead)
-realtime ...
-sdl
-show-cursor
-virtioconsole (use -device virtconsole instead)
- The previously unsupported machine type xlnx-ep108 is no longer recognized
(used xlnx-zcu102 unstead)
- Specifying a cpu feature with both "+feature/-feature" and "feature=on/off"
will now cause a warning. The current behavior for this combination where
"+feature/-feature" wins over "feature=on/off", will be changed going forward
so that "+feature" and "-feature" will be synonyms for "feature=on" and
"feature=off" respectively.
- The previously supported blkdev-add QMP command has been flagged as lacking
and could possibly change syntax in the future.
- This previously unsupported command line option is now deprecated:
-soundhw (use -device ... instead)
- These previously unsupported command line options are no longer recognized:
-bt
-device at24c-eeprom
-device mmio_interface
-device ssi-sd
-device tpm-tis-device
-device u2f-passthru
-device vhost-user-vsock-pci-transitional
-device vhost-vsock-pci-transitional
-device virtio-iommu-pci-transitional
-enable-hax
-tb-size
-tdf
-xen-create
- These previously supported QMP commands are now deprecated:
<previously mentioned items have been moved to another category>
- These previously supported QMP commands are no longer recognized:
info cpustats
block_passwd
change (use blockdev-change-medium or change-vnc-password instead)
cpu-add (use device_add instead)
migrate-set-cache-size (use migrate-set-parameters instead)
migrate_set_downtime (use migrate-set-parameters instead)
migrate_set_speed (use migrate-set-parameters instead)
query-cpus (use query-cpus-fast instead)
query-events
query-migrate-cache-size (use query-migrate-parameters instead)
- These previously supported monitor commands are now deprecated:
change
- These previously supported monitor commands are no longer recognized:
info cpustats
block_passwd ...
cpu-add (use device_add instead)
migrate_set_cache_size
migrate_set_downtime
migrate_set_speed
pci_add (use device_add instead)
pci_del (use device_del instead)
usb_add (use device_add instead)
usb_del (use device_del instead)
- These previously unsupported monitor command are now deprecated:
<previously mentioned items have been moved to another category>
- These previously unsupported monitor commands are no longer recognized:
acl_add ...
acl_policy ...
acl_remove ...
acl_reset ...
acl_show ...
host_net_add
host_net_remove
- These previously unsupported QMP commands are now supported under a new name:
x-block-dirty-bitmap-disable (use block-dirty-bitmap-disable instead)
x-block-dirty-bitmap-enable (use block-dirty-bitmap-enable instead)
x-block-dirty-bitmap-merge (use block-dirty-bitmap-merge instead)
x-block-latency-histogram-set (use block-latency-histogram-set instead)
x-blockdev-create (use blockdev-create instead)
- This previously unsupported QMP commands is no longer recognized:
x-nbd-server-add-bitmap
- Due to upstream's decision to no longer fully support the qed storage format
going forward (since it really provides no benefit over qcow2 and is now no
longer actively maintained upstream), creating qed storage images is no longer
supported and it is highly discouraged to continue using existing qed images.
They should instead be converted to another supported format.
QEMU Command-Line and Monitor Syntax and Support
------------------------------------------------
- The QEMU program command-line syntax is as follows:
qemu-system-aarch64 [options]
Where 'options' are taken from the options listed below.
The images used with -drive or -cdrom, may be in the raw (no format) or qcow2
storage formats, and may be located in files within the host filesystem,
logical volumes, host physical disks, or network based storage. Read only
media may also be accessed via URL style protocol specifiers.
Note that as a general rule, as new command line options are added which serve
to replace an older option or interface, you are strongly encouraged to adapt
your usage to the new option. The new option is being introduced to provide
better functionality and usability going forward. In some cases existing
problems or even bugs in older interfaces cannot be fixed due to functional
expectations, but are resolved in the newer interface or option.
This advice includes moving to the most recent machine type (eg virt-6.1
instead of virt-6.0) if possible.
- The following command line options are supported:
-accel ...
-action ...
-add-fd ...
-alt-grab
-append ...
-audio-help
-audiodev
-bios ...
-blockdev ...
-boot ...
-cdrom ...
-chardev ...
-compat ...
-cpu host
-ctrl-grab
-d ...
-daemonize
-debugcon ...
-device
[VGA|rtl8139|virtio-net-pci|virtio-blk-pci|virtio-balloon-pci|
virtio-9p-pci|usb-hub|usb-ehci|usb-tablet|usb-storage|usb-mouse|
usb-kbd|virtserialport|virtconsole|virtio-serial-pci|i82559er|
virtio-scsi-pci|scsi-cd|scsi-hd|scsi-generic|scsi-disk|scsi-block|
pci-serial|pci-serial-2x|pci-serial-4x|ich9-ahci|usb-host|usb-serial|
usb-wacom-tablet|usb-braille|usb-net|pci-ohci|virtio-rng-pci|i6300esb|
qxl|qxl-vga|pvpanic|vfio-pci|ivshmem-doorbell|ivshmem-plain|
pci-bridge|megasas-gen2|e1000e|e1000|vmcoreinfo|pcie-pci-bridge|
vhost-user-blk|vhost-user-blk-pci|vhost-user-scsi|vhost-user-scsi-pci|
vhost-vsock-pci|virtio-crypto-pci|virtio-vga|
vhost-scsi-pci-non-transitional|vhost-scsi-pci-transitional|
vhost-user-blk-pci-non-transitional|vhost-user-blk-pci-transitional|
vhost-user-scsi-pci-non-transitional|vhost-user-scsi-pci-transitional|
vhost-vsock-pci-non-transitional|virtio-9p-pci-non-transitional|
virtio-9p-pci-transitional|virtio-balloon-pci-non-transitional|
virtio-balloon-pci-transitional|virtio-blk-pci-non-transitional|
virtio-blk-pci-transitional|virtio-input-host-pci-non-transitional|
virtio-input-host-pci-transitional|virtio-net-pci-non-transitional|
virtio-net-pci-transitional|virtio-rng-pci-non-transitional|
virtio-rng-pci-transitional|virtio-scsi-pci-non-transitional|
virtio-scsi-pci-transitional|virtio-serial-pci-non-transitional|
virtio-serial-pci-transitional|vhost-user-fs-pci|vhost-user-gpu|
vhost-user-pci-pci|vhost-user-input|vhost-user-input-pci|
vhost-user-vga|virtio-mmio|guest-loader|nvme-subsys|pvpanic-pci]
(the following are aliases of these supported devices: ahci|
virtio-blk|virtio-net|virtio-serial|virtio-balloon| virtio-9p|
virtio-input-host|virtio-keyboard|virtio-mouse|virtio-tablet|
virtio-gpu|virtio-scsi|virtio-rng|e1000-82540em)
-dfilter range, ...
-display ...
-drive
... (if specified if=[virtio] and format=[qcow2|raw] and
snapshot=off only)
-echr ...
-enable-fips
-enable-kvm
-fsdev ...
-full-screen
-fw_cfg ...
-gdb ...
-global ...
-h
-help
-incoming ...
-initrd ...
-iscsi ...
-k ...
-kernel ...
-loadvm ...
-m ...
-M [help|none|virt-2.6|virt-2.11|virtio-3.1|virt-4.2|virt-5.2|virt-6.0|virt-6.1]
-machine [help|none|virt-2.6|virt-2.11|virt-3.1|virt-4.2|virt-5.2|virt-6.0|virt-6.1]
-mem-path ...
-mem-prealloc
-mon ...
-monitor ...
-msg ...
-name ...
-net
[bridge|l2tpv3|nic|none|tap|user] ... (for model= only e1000, rtl8139,
and virtio are supported)
-netdev [bridge|tap|user] ...
-nic ...
-no-acpi
-nodefaults
-nographic
-no-quit
-no-reboot
-no-shutdown
-no-user-config
-object ...
-only-migratable
-parallel ...
-pidfile ...
-plugin ...
-qmp ...
-qmp-pretty ...
-readconfig ...
-rtc ...
-runas ...
-s
-S
-sandbox ...
-seed ...
-serial ...
-smbios ...
-smp ...
-spice
-tpmdev passthrough ...
-trace ...
-usb
-usbdevice [braile|disk|host|mouse|net|serial|tablet]
-uuid ...
-version
-vga [none|qxl|std|virtio]
-virtfs ...
-vnc ...
-watchdog ...
-watchdog-action ...
-writeconfig ...
- The following monitor commands are supported:
?
announce_self ...
balloon ...
block_resize ...
boot_set ...
c
change ...
chardev-add ...
chardev-change ...
chardev-remove ...
chardev-send-break ...
client_migrate_info ...
closefd ...
cont
cpu ...
delvm ...
device_add ...
device_del ...
drive_add ...
drive_backup ...
drive_del ...
dump_guest_memory ...
eject ...
gdbserver ...
gpa2hpa ...
gpa2hva ...
gva2gpa ...
help
i ...
info ...
loadvm ...
logfile ...
logitem ...
mce ...
memsave ...
migrate ...
migrate_cancel
migrate_continue ...
migrate_incoming
migrate_pause
migrate_recover ...
migrate_set_capability ...
migrate_set_parameter ...
migrate_start_post_copy
mouse_button ...
mouse_move ...
mouse_set ...
nmi ...
o ...
object_add ...
object_del ...
p ...
pmemsave ...
print ...
q
qemu-io ...
qom-list
qom-set
ringbuf_read ...
ringbuf_write ...
savevm ...
screendump ...
sendkey ...
snapshot_blkdev_internal ...
snapshot_delete_blkdev_internal ...
stop
sum ...
system_powerdown
system_reset
system_wakeup
trace-event ...
watchdog_action ...
x ...
xp ...
- The following QMP commands are supported:
add_client
add-fd
announce-self
balloon
blockdev-add
blockdev-backup
blockdev-change-medium
blockdev-close-tray
blockdev-create
blockdev-del
blockdev-mirror
blockdev-open-tray
blockdev-snapshot
blockdev-snapshot-delete-internal-sync
blockdev-snapshot-internal-sync
blockdev-snapshot-sync
block-commit
block-dirty-bitmap-add
block-dirty-bitmap-clear
block-dirty-bitmap-disable
block-dirty-bitmap-enable
block-dirty-bitmap-merge
block-dirty-bitmap-remove
block-export-add
block-export-del
block-latency-histogram-set
block_resize
block_set_io_throttle
block-set-write-threshold
block_stream
calc-dirty-rate
change-vnc-password
chardev-add
chardev-change
chardev-remove
chardev-send-break
client_migrate_info
closefd
cont
cpu
device_add
device_del
device-list-properties
display-reload
dump-guest-memory
eject
expire_password
getfd
human-monitor-command
inject-nmi
input-send-event
job-cancel
job-complete
job-dismiss
job-finalize
job-pause
job-resume
memsave
migrate
migrate_cancel
migrate-continue
migrate-incoming
migrate-pause
migrate-resume
migrate-set-capabilities
migrate-set-parameters
migrate-start-postcopy
object-add
object-del
pmemsave
qmp_capabilities
qom-get
qom-list
qom-list-types
qom-set
query-acpi-ospm-status
query-balloon
query-block
query-block-exports
query-block-jobs
query-blockstats
query-chardev
query-chardev-backends
query-command-line-options
query-commands
query-cpu-definitions
query-cpu-model-expansion
query-cpus-fast
query-current-machine
query-display-options
query-dirty-rate
query-dump
query-dump-guest-memory-capability
query-fdsets
query-gic-capabilities
query-hotpluggable-cpus
query-iothreads
query-jobs
query-kvm
query-machines
query-memdev
query-memory-devices
query-memory-size-summary
query-mice
query-migrate
query-migrate-capabilities
query-migrate-parameters
query-name
query-named-block-nodes
query-pci
query-pr-managers
query-qmp-schema
query-rocker
query-rocker-of-dpa-flows
query-rocker-of-dpa-groups
query-rocker-ports
query-rx-filter
query-spice
query-status
query-target
query-tpm
query-tpm-models
query-tpm-types
query-uuid
query-version
query-vnc
query-vnc-servers
query-yank
query-xen-replication-status
quit
remove-fd
ringbuf-read
ringbuf-write
screendump
send-key
set-action
set_link
set_password
snapshot-delete
snapshot-load
snapshot-save
stop
system_powerdown
system_reset
system_wakeup
trace-event-get-state
trace-event-set-state
transaction
watchdog-set-action
yank
- The following command line options are unsupported:
-acpitable ...
-chroot ...
-cpu ... (all except host)
-curses
-device
[160s33b|320s33b|640s33b|a15mpcore_priv|a9mpcore_priv|a9-scu|adlib|
ads7846|allwinner-a10|allwinner-a10-pic|allwinner-A10-timer|
allwinner-emac|amd-iommu|AMDVI-PCI|arm1026-arm-cpu|arm1136-arm-cpu|
arm1136-r2-arm-cpu|arm1176-arm-cpu|arm11mpcore-arm-cpu|
arm11mpcore_priv|arm11-scu|arm926-arm-cpu|arm946-arm-cpu|
arm.cortex-a9-global-timer|arm_gic|arm-gicv2m|
arm_mptimer|armv7m_nvic|aspeed.timer|aspeed.vic|ast2400|
at25128a-nonjedec|at25256a-nonjedec|at25df041a|at25df321a|at25df641|
at25fs010|at25fs040|at26df081a|at26df161a|at26df321|at26f004|
at45db081d|bcm2835-aux|bcm2835-dma|bcm2835-fb|bcm2835-ic|bcm2835-mbox|
bcm2835-peripherals|bcm2835-property|bcm2836|bcm2836-control|
bochs-display|cadence_gem|cadence_ttc|cadence_uart|ccid-card-emulated|
ccid-card-passthru|cfi.pflash02|cirrus-vga|cmsdk-apb-dualtimer|
cmsdk-apb-watchdog|corgi-ssp|cortex-a15-arm-cpu|cortex-a53-arm-cpu|
cortex-a57-arm-cpu|cortex-a72-arm-cpu|cortex-a8-arm-cpu|
cortex-a9-arm-cpu|cortex-m0-arm-cpu|cortex-m3-arm-cpu|
cortex-m4-arm-cpu|cortex-r5-arm-cpu|cs4231a|digic|digic-timer|
digic-uart|ds1338|dscm1xxxx|e1000|en25f32|en25p32|en25p64|en25q32b|
en25q64|exynos4210.combiner|exynos4210-ehci-usb|exynos4210.fimd|
exynos4210.gic|exynos4210.i2c|exynos4210.irq_gate|exynos4210.mct|
exynos4210.pmu|exynos4210.pwm|exynos4210.rtc|exynos4210.uart|floppy|
fslimx25|fslimx31|fusbh200-ehci-usb|fw_cfg|gd25q32|gd25q64|
gpex-pcihost|gpex-root|gpio_i2c|gpio-key|gus|hyperv-testdev|
highbank-regs|host-arm-cpu|*-i386-cpu|i8042|ib700|icp-ctrl-regs|
igd-passthrough-isa-bridge|imx25.ccm|imx31.ccm|imx6.ccm|imx.avic|
imx.epit|imx.fec|imx.gpio|imx.gpt|imx.i2c|imx.serial|imx6ul.ccm|
integrator_core|integrator_debug|integrator_pic|integrator_pit|
intel_iommu|iotkit-sysctl|iotkit-sysinfo|ipmi-bmc-extern|ipmi-bmc-sim|
isa-applesmc|isa-cirrus-vga|isa-debugcon|isa-debug-exit|isa-fdc|
isa-ide|isa-ipmi-bt|isa-ipmi-kcs|isa-parallel|isa-vga|kvaser_pci|
kvm-arm-gic|kvm-arm-gicv3|l2x0|lan9118|lm8323|loader|lsi53c810a|
lsi53c895a|m25p05|m25p10|m25p128|m25p16|m25p20|m25p32|m25p40|m25p64|
m25p80|m25pe16|m25pe20|m25pe80|m25px32|m25px32-s0|m25px32-s1|m25px64|
m45pe10|m45pe16|m45pe80|mainstone-fpga|max1110|max1111|max7310|
mioe3680_pci|msf2-soc|msf2-sysreg|mss-sp1|mss-timer|musicpal_gpio|
musicpal_key|musicpal_lcd|musicpal-misc|mv88w8618_audio|mv88w8618_eth|
mv88w8618_flashcfg|mv88w8618_pic|mv88w8618_pit|mv88w8618_wlan|
mx25l12805d|mx25l12855e|mx25l1606e|mx25l2005a|mx25l25635e|mx25l25655e|
mx25l3205d|mx25l4005a|mx25l6405d|mx25l8005|n25q032|n25q032a11|
n25q032a13|n25q064|n25q064a11|n25q064a13|n25q128|n25q128a11|
n25q128a13|n25q256a|n25q256a11|n25q256a13|n25q512a|n25q512a11|
n25q512a13|nand|ne2k_isa|nrf51-soc|nrf51_soc.uart|nvdimm|omap2-gpio|
omap2-intc|omap-gpio|omap_i2c|omap-intc|onenand|pc-dimm|pc-testdev|
piix3-ide|piix3-ide|piix3-ide-xen|piix3-usb-uhci|pl011|pl011_luminary|
pl022|pl031|pl041|pl050_keyboard|pl050_mouse|pl061|pl061_luminary|
pl080|pl081|pl110|pl110_versatile|pl111|pl181|pl190|pl330|
platform-bus-device|pvrdma|pxa250-arm-cpu|pxa255-arm-cpu|pxa25x-timer|
pxa260-arm-cpu|pxa261-arm-cpu|pxa262-arm-cpu|pxa270-a0-arm-cpu|
pxa270-a1-arm-cpu|pxa270-arm-cpu|pxa270-b0-arm-cpu|pxa270-b1-arm-cpu|
pxa270-c0-arm-cpu|pxa270-c5-arm-cpu|pxa27x-timer|pxa2xx-dma|
pxa2xx-fir|pxa2xx-gpio|pxa2xx_i2c|pxa2xx-i2c-slave|pxa2xx-mmci|
pxa2xx-pcmcia|pxa2xx_pic|pxa2xx_rtc|pxa2xx-ssp|ramfb|realview_gic|
realview_mpcore|realview_pci|realview_sysctl|s25fl016k|s25fl064k|
s25fl129p0|s25fl129p1|s25fl256s0|s25fl256s1|s25fl512s|s25sl004a|
s25sl008a|s25sl016a|s25sl032a|s25sl032p|s25sl064a|s25sl064p|
s25sl12800|s25sl12801|s70fl01gs|sa1100-arm-cpu|sa1110-arm-cpu|sb16|
scoop|sdhci-pci|sga|sii9022|sl-nand|smbus-eeprom|smc91c111|sp804|
spitz-keyboard|spitz-lcdtg|ssd0303|ssd0323|sst25vf016b|sst25vf032b|
sst25vf040b|sst25vf080b|sst25wf010|sst25wf020|sst25wf040| sst25wf080|
sst25wf512|stellaris-adc|stellaris_enet|stellaris-gptm|stellaris-i2c|
stm32f205-soc|stm32f2xx-syscfg|stm32f2xx-timer|stm32f2xx-usart|
strongarm-gpio|strongarm_pic|strongarm-ppc|strongarm-rtc|
strongarm-ssp|strongarm-uart|tegra2-ehci-usb|ti925t-arm-cpu|tmp105|
tosa_dac|tosa-ssp|tusb6010|twl92230|tz-msc|usb-redir|versatile_i2c|
versatilepb_sic|versatile_pci|versatile_pci_host|vfio-pci-nohotplug|
vfio-platform|vhost-vsock-device|virtconsole|virtio-crypto-device|
vmgenid|vmware-svga|w25q256|w25q32|w25q32dw|w25q64|w25q80|w25q80bl|
w25x10|w25x16|w25x20|w25x32|w25x40|w25x64|w25x80|wm8750|*-x86_64-cpu|
xen-backend|xen-pci-passthrough|xen-platform|xen-pvdevice|xgmac|
xilinxzynq_slcr|xlnx-versal|xlnx.ps7-qspi|xlnx.ps7-spi|xlnxzynqmp|
xlnxzynq-xadc|armsse-cpuid|armsse-mhu|cpu-cluster|luminary-watchdog|
microbit.i2c|nrf51_soc.gpio|nrf51_soc.nvm|nrf51_soc.rng|
nrf51_soc.timer|platform-ehci-usb|sse-200|vmware-svga|vmxnet3|ati-vga|
cirrus-vga|vhost-user-fs-device|tulip|ati-vga|aw-hc-ehci-usb|
virtio-iommu-device|virtio-iommu-pci|
virtio-iommu-pci-non-transitional|cortex-m7-arm-cpu|allwinner-cpucfg|
allwinner-h3|allwinner-h3-ccu|allwinner-h3-dramc|allwinner-h3-sysctrl|
allwinner-rtc-sun4i|allwinner-rtc-sun6i|allwinner-rtc-sun7i|
allwinner-sdhost-sun4i|allwinner-sdhost-sun5i|allwinner-sid|
allwinner-sun8i-emac|imx.rngc|imx.usbphy|serial|serial-io|
stm32f405-soc|stm32f4xx-exti|stm32f4xx-syscfg|nvdimm|
vhost-user-vsock-device|vhost-user-vsock-pci|
vhost-user-vsock-pci-non-transitional|nvme-ns|ads7846|led|ssd0323|
vhost-user-vga|ctucan_pci|bcm2835-cprman-clock-mux|
bcm2835-cprman-cprman-dsi0hsck-mux|bcm2835-cprman-cprman-pll|
bcm2835-cprman-cprman-pll-channel|mt25ql512ab|mx66l5123f|n25q512ax3|
ssd0323|at24c-eeprom|emc1413|emc1414|is25lp016d|is25lp032|is25lp064|
is25lp080d|is25lp128|is25lp256|is25lq040b|is25wp032|is25wp064|
is25wp128|is25wp256|npcm7xx-clock-divider|npcm7xx-clock-pll|
npcm7xx-clock-sel]
(the following are aliases of these unsupported devices: lsi|
piix3-usb-uhci)
(note that some of these device names represent supported devices and
are used internally, but are not specifyable via -device even though
they appear in the list of devices)
-drive
,if=[scsi|mtd|pflash], snapshot=on, format=[anything besides qcow2 or
raw]
-dtb file
-enable-sync-profile
-fda/-fdb ...
-g ...
-hda/-hdb/-hdc/-hdd ...
-icount ...
-L ...
-M
[akita|ast2500-evb|ast2600-evb|borzoi|canon-a1100|cheetah|collie|connex|
cubieboard|emcraft-sf2|g220a-bmc|highbank|imx25-pdk|integratorcp|kzm|
lm3s6965evb|lm3s811evb|mainstone|mcimx6ul-evk|mcimx7d-sabre|microbit|
midway|mps2-an385|mps2-an386|mps2-an500|mps2-an505|mps2-an511|mps2-an521|
mps3-an524|mps3-an547|musca-a|musca-b1|musicpal|n800|n810|netduino2|
netduinoplus2|npcm750-evb|nuri|orangepi-pc|palmetto-bmc|quanta-gsj|raspi0|
raspi1ap|raspi2|raspi2b|raspi3ap|raspi3|raspi3b|realview-eb|
realview-eb-mpcore|realview-pb-a8|realview-pbx-a9|romulus-bmc|sabrelite|
sbsa-ref|smdkc210|sonorapass-bmc|spitz|supermicrox11-bmc|swift-bmc|sx1|
sx1-v1|tacoma-bmc|terrier|tosa|verdex|versatileab|versatilepb|
vexpress-a15|vexpress-a9|virt-2.12|virt-2.7|virt-2.8|virt-3.0|virt-4.0|
virt-4.1|virt-5.0|virt-5.1|virt-6.0|virt|virt-6.1|witherspoon-bmc|
xilinx-zynq-a9|xlnx-versal-virt|xlnx-zcu102|z2]
-machine
[akita|ast2500-evb|ast2600-evb|borzoi|canon-a1100|cheetah|collie|
connex|cubieboard|emcraft-sf2|g220a-bmc|highbank|imx25-pdk|
integratorcp|kzm|lm3s6965evb|lm3s811evb|mainstone|mcimx6ul-evk|
mcimx7d-sabre|microbit|midway|mps2-an385|mps2-an386|mps2-an500|
mps2-an505|mps2-an511|mps2-an521|mps3-an524|mps3-an547|musca-a|
musca-b1|musicpal|n800|n810|netduino2|netduinoplus2|npcm750-evb|
nuri|orangepi-pc|palmetto-bmc|quanta-gsj|raspi0|raspi1ap|raspi2|
raspi2b|raspi3ap|raspi3|raspi3b|realview-eb|realview-eb-mpcore|
realview-pb-a8|realview-pbx-a9|romulus-bmc|sabrelite|sbsa-ref|
smdkc210|sonorapass-bmc|spitz|supermicrox11-bmc|swift-bmc|sx1|
sx1-v1|tacoma-bmc|terrier|tosa|verdex|versatileab|versatilepb|
vexpress-a15|vexpress-a9|virt-2.12|virt-2.7|virt-2.8|virt-3.0|
virt-4.0|virt-4.1|virt-5.0|virt-5.1|virt-6.0|virt|virt-6.1|
witherspoon-bmc|xilinx-zynq-a9|xlnx-versal-virt|xlnx-zcu102|z2]
-mtdblock file
-net [socket|vde] ...
-netdev [hubport|l2tpv3|socket|vde] ...
-no-fd-bootchk
-no-hpet
-no-kvm
-no-kvm-irqchip
-no-kvm-pit
-no-kvm-pit-reinjection
-numa cpu ...
-numa dist ...
-numa node ...
-option-rom ...
-overcommit ...
-pflash file
-portrait
-preconfig
-prom-env ...
-qtest ...
-qtest-log ...
-rotate
-sd file
-sdl
-set ...
-singlestep
-snapshot
-soundhw ...
-tpmdev emulator ...
-vga [cg3|tcx|virtio|cirrus|xenfb]
-win2k-hack
-xen-attach ...
-xen-domid ...
-xen-domid-restrict ...
- The following monitor commands are unsupported:
block_job_cancel ...
block_job_complete ...
block_job_pause ...
block_job_resume ...
block_job_set_speed ...
commit ...
drive_mirror ...
exit_preconfig
expire_password ...
hostfwd_add ...
hostfwd_remove ...
nbd_server_add ...
nbd server_start ...
nbd_server_stop ...
netdev_add
netdev_del ...
pcie_aer_inject_error ...
replay_break ...
replay_delete_break
replay_seek ...
set_link ...
set_password ...
singlestep ...
snapshot_blkdev ...
stopcapture ...
sync-profile ...
wavcapture ...
x_colo_lost_heartbeat
- The following QMP commands are unsupported:
block-job-cancel
block-job-complete
block-job-pause
block-job-resume
block-job-set-speed
change-backing-file
drive-backup
drive-mirror
netdev_add
netdev_del
nbd-server-add
nbd-server-start
nbd-server-stop
query-colo-status
replay_break
replay_delete_break
replay_seek
x-blockdev-amend
x-blockdev-change
x-blockdev-insert-medium
x-blockdev-remove-medium
x-blockdev-reopen
x-colo-lost-heartbeat
x-debug-block-dirty-bitmap-sha256
x-debug-query-block-graph
x-exit-preconfig
xen-colo-do-checkpoint
xen-load-devices-state
xen-save-devices-state
xen-set-global-dirty-log
xen-set-replication

View File

@ -1,6 +0,0 @@
[qemu-ppc package document]
SLES 15 SP4 QEMU/KVM RELATED SUPPORT STATEMENTS
===============================================
QEMU/KVM on ppc is not supported.

View File

@ -1,868 +0,0 @@
[qemu-s390 package document]
SLES 15 SP4 QEMU/KVM RELATED SUPPORT STATEMENTS
===============================================
Overview
--------
The QEMU based packages included with SLES 15 SP4 provide a large variety of
features, from the very latest customer requests to features of questionable
quality or value. The linux kernel includes components which contribute KVM
virtualization features as well. This document was created to assist the user
in deciding which features can be relied upon to build enterprise class
virtualization solutions. KVM based virtualization for x86 (Intel 64/AMD64),
for IBM System z (s390x), and for the ARM64 architecture (AArch64) are offered
at the L3 (full support) level. The bulk of this document deals with L3
supported features and is primarily s390x centric. This document should be
considered a companion to the standard virtualization documentation delivered
with the product.
KVM is implemented in linux kernel modules which enable the linux kernel to
function as an integral part of the KVM hypervisor. The hypervisor-guest
interaction is managed by QEMU through the /dev/kvm ioctl interface. The linux
host assists in the virtualization of storage, networking and display
resources as well as allowing direct hardware passthrough of PCI devices.
Linux memory and cpu management features are used by QEMU/KVM to enable guests
to share those host resources as efficiently as possible.
QEMU is a primary component of KVM based virtualization. The legacy qemu-kvm
program is available for continuity with pre SLES 12 usage, including in
libvirt domain xml references. The QEMU emulator binary qemu-system-s390x is
now the primary program to use to access KVM virtualization. When using this
program, the -machine option accel=kvm (or its alias -enable-kvm) or --accel
kvm option must be specified for KVM acceleration to be used by the guest.
Libvirt is the preferred means of accessing QEMU/KVM functionality and is
documented elsewhere. This document focuses on the features and direct usage
of QEMU/KVM as provided by the QEMU based packages.
Major QEMU/KVM Supported Features
---------------------------------
- KVM virtualization is accomplished by using the QEMU program in KVM
acceleration mode. KVM acceleration requires that both guest and host have
the same fundamental architecture.
- Guest images created under previous QEMU versions are supported by machine
version compatibilities built into more recent QEMU versions.
- For ease of use, the QEMU program has defaults which represent traditional
usage patterns.
- Guest virtual machine characteristics are specified by a combination of
internal defaults, options provided on the QEMU program command-line, runtime
configurations set via the monitor interfaces and optional config files. The
runtime control of a VM is effected either through the Human Monitor
"Protocol" (HMP), or the JSON based programmatical QEMU Monitor Protocol (QMP)
interface. For QMP details, see qemu-qmp-ref man page.
Since a KVM guest runs in the context of a normal linux process, some types
of execution controls are managed with linux tools.
- QEMU incorporates virtualized, s390 specific, ccw bus based firmware for
booting s390 guests. This firmware is automatically incorporated and
doesn't need to be explicitly referenced.
- Some QEMU messages have been localized to various languages. This is provided
by the optional qemu-lang package. Keyboard mappings for various nationalities
is also provided.
- Virtual machine lifecycle controls include startup through the ccw firmware or
kernel boot, firmware based shutdown, execution pausing, the saving and
restoring of machine state or disk state, VM migration to another host, and
miscellaneous controls available through the "monitors" mentioned above.
- Guest execution state may be "moved" in both time (save/restore) and space
(static and live migration). These migrations or save/restore operations can
take place either from certain prior SLES versioned hosts to a SLES 15 SP4
host or between hosts of the same version. Certain other restrictions also
apply.
- Security considerations include privileged helpers and a security model which
allows running guests as a non-root user.
- QEMU provides best effort reuse of existing disk images, including those with
systems installed, through geometry probing. Also disk images produced by
other popular virtualization technologies may be imported into QEMU supported
storage formats. These QEMU formats include features which exploit the
benefits of virtualization.
- Memory, cpu and disk space overcommit are possible and can be beneficial when
done responsibly. Additional management of these resources comes in the form
of memory ballooning or hotplug, host KSM, vcpu hot-add, online disk resizing,
trim, discard and hole punching.
- Guest performance is enhanced through the use of virtio devices, various disk
caching modes, network acceleration via the vhost-net kernel module, multi-
queue network transmit capabilities, host transparent huge pages (THP) and
direct hugetlb usage. Physical PCI devices may also be passed through to the
guest, including SR-IOV VF's.
- The guest UI is accessable via GTK, VNC, and serial (including curses TUI)
interfaces.
- Guest timekeeping is supported in a variety of ways, including a paravirtual
clocksource, and options for the various guest clocks for how to handle the
timeslicing of the guest's execution on the host.
- In addition to the para-virtualized devices already mentioned, other devices
and infrastructure designed to avoid virtualization "problem areas" are
available such as SPICE graphics, vmmouse emulation, tablet style pointer
interfaces and virtio based UI interfaces.
- A built-in user-mode network (SLIRP) stack is available.
- Portions of the host file system may be shared with a guest by using virtFS.
- A guest "agent" is available for SLES 15 SP4 KVM guests via the
qemu-guest-agent package. This allows some introspection and control of the
guest OS environment from the host.
QEMU/KVM Technology Previews
----------------------------
- All features indicated as not being supported in this document fall under the
Technology Preview definition contained in the main product's release notes.
Noteworthy QEMU/KVM Unsupported Features
----------------------------------------
- Note that some features are unsupported simply due to lack of validation. If
an existing feature is desired, but not marked supported, let SUSE know about
your requirements.
- The TCG "acceleration" mode may be helpful for problem isolation, but
otherwise presents insufficient benefit and stability.
- GlusterFS integration is not enabled.
Deprecated, Superseded, Modified and Dropped Features
-----------------------------------------------------
- https://qemu-project.gitlab.io/qemu/about/deprecated.html and
https://qemu-project.gitlab.io/qemu/about/removed-features.html
These websites track features deprecation and removal at the upstream
development level. Our qemu package inherits this community direction, but be
aware that we can and will deviate as needed. Those deviations and additional
information can be found in this section. Feature deprecation as well as
removed features are also tracked in the "System Emulation" section of the
documentation installed with the qemu package.
- qemu-img: Deprecate use of -b without -F. Creating an image that requires
format probing of the backing image is potentially unsafe and is now
deprecated.
- The previously non-persistent backing file with pmem=on is deprecated. Modify
VM configuration to set pmem=off to continue using fake NVDIMM with backing
file or move backing file to NVDIMM storage and keep pmem=on.
- The use of "?" as a parameter to "-cpu", "-soundhw", "-device", "-M",
"-machine" and "-d" is now considered deprecated. Use "help"
instead.
- The use of "if=scsi" as a parameter to "-drive" does not work anymore with PC
machine types, as it created an obsolete SCSI controller model.
- Use of aio=native without direct cache mode also being specified (cache=none,
cache=directsync, or cache.direct=on) is no longer allowed.
- The use of image encryption in qcow and qcow2 formats is now considered
deprecated.
Analysis has shown it to be weak encryption, in addition to suffering from
poor design. Images can easily be converted to a non-encrypted format.
- Use of acpi, boot-opts, and smp-opts in a -readconfig config file are now
considered deprecated. In the future those names will be standardized to
acpitable, boot, and smp respectively.
- These previously supported command line options are now considered deprecated:
-display sdl,window_close= (use -display sdl,window-close)
-no-quit (use -display ...,window-close=off)
-chardev tty (use serial name instead)
-chardev paraport (use parallel name instead)
-device virtio-blk,scsi= (use virtio-scsi instead)
-device virtio-blk-pci,scsi= (use virtio-scsi instead)
-enable-fips (not really helpful - see https://git.qemu.org/?p=qemu.git;a=commit;h=166310299a1e7824bbff17e1f016659d18b4a559 for details)
-realtime mlock= (use -overcommit mem-lock= instead)
-spice password=string (use password-string option instead)
-writeconfig (no replacement - never really worked right)
-share and noshare must be replaced by share=on/share=off
-nodelay must be replaced by nodelay=on rather than delay=off
-object-add options opened=on and loaded=on (both had no effect)
- These previously supported command line options are no longer supported:
<previously mentioned items have been moved to another category>
- These previously supported command line options are no longer recognized:
-balloon (use -device virtio-balloon instead)
-clock
-device ivshmem (use ivshmem-doorbell or ivshmem-plain instead)
-device pc-sysfw (no longer needed)
-device pci-assign, -device kvm-pci-assign (use -device vfio-pci instead)
-display sdl
-no-frame
-nodefconfig (use -no-user-config instead)
-realtime ...
-sdl
-show-cursor
-virtioconsole (use -device virtconsole instead)
- Specifying a cpu feature with both "+feature/-feature" and "feature=on/off"
will now cause a warning. The current behavior for this combination where
"+feature/-feature" wins over "feature=on/off", will be changed going forward
so that "+feature" and "-feature" will be synonyms for "feature=on" and
"feature=off" respectively.
- The previously supported blkdev-add QMP command has been flagged as lacking
and could possibly change syntax in the future.
- These previously unsupported command line options are now deprecated:
-bt
-soundhw (use -device ... instead)
- These previously unsupported command line options are no longer recognized:
-device ide-drive (use ide-hd or ide-cd)
-device mmio_interface
-device ramfb
-device scsi-disk (use scsi-hd or scsi-cd)
-device vhost-user-vsock-pci-transitional
-device vhost-vsock-pci-transitional
-device virtio-iommu-pci-transitional
-enable-hax
-tb-size
-tdf
-xen-create
- These previously supported QMP commands are now deprecated:
<previously mentioned items have been moved to another category>
- These previously supported QMP commands are no longer recognized:
info cpustats
block_passwd
change (use blockdev-change-medium or change-vnc-password instead)
cpu-add (use device_add instead)
migrate-set-cache-size (use migrate-set-parameters instead)
migrate_set_downtime (use migrate-set-parameters instead)
migrate_set_speed (use migrate-set-parameters instead)
query-cpus (use query-cpus-fast instead)
query-events
query-migrate-cache-size (use query-migrate-parameters instead)
- These previously supported monitor commands are now deprecated:
change
- These previously supported monitor commands are no longer recognized:
info cpustats
block_passwd ...
cpu-add (use device_add instead)
migrate_set_cache_size
migrate_set_downtime
migrate_set_speed
pci_add (use device_add instead)
pci_del (use device_del instead)
- These previously unsupported monitor command are now deprecated:
<previously mentioned items have been moved to another category>
- These previously unsupported monitor commands are no longer recognized:
acl_add ...
acl_policy ...
acl_remove ...
acl_reset ...
acl_show ...
host_net_add
host_net_remove
usb_add
usb_del
- These previously unsupported QMP commands are now supported under a new name:
x-block-dirty-bitmap-disable (use block-dirty-bitmap-disable instead)
x-block-dirty-bitmap-enable (use block-dirty-bitmap-enable instead)
x-block-dirty-bitmap-merge (use block-dirty-bitmap-merge instead)
x-block-latency-histogram-set (use block-latency-histogram-set instead)
x-blockdev-create (use blockdev-create instead)
- This previously unsupported QMP commands is no longer recognized:
x-nbd-server-add-bitmap
- Due to upstream's decision to no longer fully support the qed storage format
going forward (since it really provides no benefit over qcow2 and is now no
longer actively maintained upstream), creating qed storage images is no longer
supported and it is highly discouraged to continue using existing qed images.
They should instead be converted to another supported format.
QEMU Command-Line and Monitor Syntax and Support
------------------------------------------------
- The QEMU program command-line syntax is as follows:
qemu-system-s390x [options]
Where 'options' are taken from the options listed below.
The images used with -drive or -cdrom, may be in the raw (no format) or qcow2
storage formats, and may be located in files within the host filesystem,
logical volumes, host physical disks, or network based storage. Read only
media may also be accessed via URL style protocol specifiers.
Note that as a general rule, as new command line options are added which serve
to replace an older option or interface, you are strongly encouraged to adapt
your usage to the new option. The new option is being introduced to provide
better functionality and usability going forward. In some cases existing
problems or even bugs in older interfaces cannot be fixed due to functional
expectations, but are resolved in the newer interface or option.
This advice includes moving to the most recent machine type (eg
s390-ccw-virtio-6.1 instead of s390-ccw-virtio-6.0) if possible.
- The following command line options are supported:
-accel ...
-action ...
-add-fd ...
-alt-grab
-append ...
-audio-help
-audiodev
-bios ...
-blockdev ...
-boot ...
-cdrom ...
-chardev ...
-compat ...
-cpu host
-ctrl-grab
-d ...
-daemonize
-debugcon ...
-device
[virtio-net-pci|virtio-blk-pci|virtio-balloon-pci|virtserialport|
virtconsole|virtio-serial-pci|virtio-scsi-pci|scsi-cd|scsi-hd|
scsi-generic|scsi-block|virtio-rng-pci|pci-bridge|megasas-gen2|e1000e|
e1000|zpci|virtio-gpu-ccw|virtio-keyboard-ccw|vhost-user-blk-pci|
vhost-user-scsi|vhost-user-scsi-pci|vhost-vsock-ccw|
virtio-balloon-ccw|virtio-blk-ccw|vhost-scsi-ccw|vhost-user-blk|
virtio-crypto-ccw|virtio-net-ccw|virtio-rng-ccw|virtio-scsi-ccw|
virtio-serial-ccw|virtio-mouse-ccw|virtio-tablet-ccw|vfio-pci|
virtio-vga|vhost-scsi-pci-non-transitional|
vhost-scsi-pci-transitional|vhost-user-blk-pci-non-transitional|
vhost-user-blk-pci-transitional|vhost-user-scsi-pci-non-transitional|
vhost-user-scsi-pci-transitional|vhost-vsock-pci-non-transitional|
virtio-9p-ccw|virtio-9p-pci-non-transitional|
virtio-9p-pci-transitional|virtio-balloon-pci-non-transitional|
virtio-balloon-pci-transitional|virtio-blk-pci-non-transitional|
virtio-blk-pci-transitional|virtio-input-host-pci-non-transitional|
virtio-input-host-pci-transitional|virtio-net-pci-non-transitional|
virtio-net-pci-transitional|virtio-rng-pci-non-transitional|
virtio-rng-pci-transitional|virtio-scsi-pci-non-transitional|
virtio-scsi-pci-transitional|virtio-serial-pci-non-transitional|
virtio-serial-pci-transitional|vhost-user-fs-pci|vhost-user-gpu|
vhost-user-pci-pci|vhost-user-input|vhost-user-input-pci|
vhost-user-vga]
(the following are aliases of these supported devices: virtio-blk|
virtio-input-host|virtio-keyboard|virtio-mouse|virtio-tablet|
virtio-gpu|virtio-9p|virtio-net|virtio-serial|virtio-balloon|
virtio-scsi|virtio-rng)
-dfilter range, ...
-display ...
-drive
... (if specified if=[virtio] and format=[qcow2|raw] and
snapshot=off only)
-echr ...
-enable-fips
-enable-kvm
-fsdev ...
-full-screen
-fw_cfg ...
-gdb ...
-global ...
-h
-help
-incoming ...
-initrd ...
-iscsi ...
-k ...
-kernel ...
-loadvm ...
-m ...
-M
[help|?|none|s390-ccw-virtio-2.6|s390-ccw-virtio-2.9|s390-ccw-virtio-2.11|
s390-ccw-virtio-3.1|s390-ccw-virtio-4.2|s390-ccw-virtio-5.2]
-machine
[help|?|none|s390-ccw-virtio-2.6|s390-ccw-virtio-2.9|
s390-ccw-virtio-2.11|s390-ccw-virtio-3.1|s390-ccw-virtio-4.2|
s390-ccw-virtio-5.2]
-mem-path ...
-mem-prealloc
-mon ...
-monitor ...
-msg ...
-name ...
-net
[bridge|l2tpv3|nic|none|tap|user] ... (for model= only e1000, rtl8139,
and virtio are supported)
-netdev [bridge|tap|user] ...
-nic ...
-nodefaults
-nographic
-no-quit
-no-reboot
-no-shutdown
-no-user-config
-object ...
-only-migratable
-parallel ...
-pidfile ...
-plugin ...
-qmp ...
-qmp-pretty ...
-readconfig ...
-rtc ...
-runas ...
-s
-S
-sandbox ...
-seed ...
-serial ...
-smp ...
-trace ...
-uuid ...
-version
-vga [none|qxl|std]
-virtfs ...
-vnc ...
-watchdog ...
-watchdog-action ...
-writeconfig ...
- The following monitor commands are supported:
?
announce_self ...
balloon ...
block_resize ...
boot_set ...
c
change ...
chardev-add ...
chardev-change ...
chardev-remove ...
chardev-send-break ...
client_migrate_info ...
closefd ...
cont
cpu ...
delvm ...
device_add ...
device_del ...
drive_add ...
drive_backup ...
drive_del ...
dump_guest_memory ...
eject ...
gdbserver ...
gpa2hpa ...
gpa2hva ...
gva2gpa ...
help
i ...
info ...
loadvm ...
logfile ...
logitem ...
mce ...
memsave ...
migrate ...
migrate_cancel
migrate_continue ...
migrate_incoming
migrate_pause
migrate_recover ...
migrate_set_capability ...
migrate_set_parameter ...
migrate_start_post_copy
mouse_button ...
mouse_move ...
mouse_set ...
nmi ...
o ...
object_add ...
object_del ...
p ...
pmemsave ...
print ...
q
qemu-io ...
qom-list
qom-set
ringbuf_read ...
ringbuf_write ...
savevm ...
screendump ...
sendkey ...
snapshot_blkdev_internal ...
snapshot_delete_blkdev_internal ...
stop
sum ...
system_powerdown
system_reset
system_wakeup
trace-event ...
watchdog_action ...
x ...
xp ...
- The following QMP commands are supported:
add_client
add-fd
announce-self
balloon
blockdev-add
blockdev-backup
blockdev-change-medium
blockdev-close-tray
blockdev-create
blockdev-del
blockdev-mirror
blockdev-open-tray
blockdev-snapshot
blockdev-snapshot-delete-internal-sync
blockdev-snapshot-internal-sync
blockdev-snapshot-sync
block-commit
block-dirty-bitmap-add
block-dirty-bitmap-clear
block-dirty-bitmap-disable
block-dirty-bitmap-enable
block-dirty-bitmap-merge
block-dirty-bitmap-remove
block-export-add
block-export-del
block-latency-histogram-set
block_resize
block_set_io_throttle
block-set-write-threshold
block_stream
calc-dirty-rate
change-vnc-password
chardev-add
chardev-change
chardev-remove
chardev-send-break
client_migrate_info
closefd
cont
cpu
device_add
device_del
device-list-properties
display-reload
dump-guest-memory
eject
expire_password
getfd
human-monitor-command
inject-nmi
input-send-event
job-cancel
job-complete
job-dismiss
job-finalize
job-pause
job-resume
memsave
migrate
migrate_cancel
migrate-continue
migrate-incoming
migrate-pause
migrate-resume
migrate-set-capabilities
migrate-set-parameters
migrate-start-postcopy
object-add
object-del
pmemsave
qmp_capabilities
qom-get
qom-list
qom-list-types
qom-set
query-acpi-ospm-status
query-balloon
query-block
query-block-exports
query-block-jobs
query-blockstats
query-chardev
query-chardev-backends
query-command-line-options
query-commands
query-cpu-definitions
query-cpu-model-baseline
query-cpu-model-comparison
query-cpu-model-expansion
query-cpus-fast
query-current-machine
query-dirty-rate
query-display-options
query-dump
query-dump-guest-memory-capability
query-fdsets
query-gic-capabilities
query-hotpluggable-cpus
query-iothreads
query-jobs
query-kvm
query-machines
query-memdev
query-memory-devices
query-memory-size-summary
query-mice
query-migrate
query-migrate-capabilities
query-migrate-parameters
query-name
query-named-block-nodes
query-pci
query-pr-managers
query-qmp-schema
query-rocker
query-rocker-of-dpa-flows
query-rocker-of-dpa-groups
query-rocker-ports
query-rx-filter
query-spice
query-status
query-target
query-uuid
query-version
query-vnc
query-vnc-servers
query-yank
query-xen-replication-status
quit
remove-fd
ringbuf-read
ringbuf-write
screendump
send-key
set-action
set_link
set_password
snapshot-delete
snapshot-load
snapshot-save
stop
system_powerdown
system_reset
system_wakeup
trace-event-get-state
trace-event-set-state
transaction
watchdog-set-action
yank
- The following command line options are unsupported:
-acpitable ...
-chroot ...
-cpu ... (all except host)
-curses
-device
[AC97|adlib|am53c974|amd-iommu|AMDVI-PCI|ccid-card-emulated|
ccid-card-passthrough|cirrus-vga|cs4231a|dc390|diag288|e1000-82544gc|
e1000-82545em|edu|ES1370|floppy|generic-sdhci|gus|hda-duplex|
hda-micro|hda-output|hyperv-testdev|*-i386-cpu|i8042|i82550|i82551|
i82557a|i82557b|i82557c|i82558a|i82558b|i82559a|i82559b|i82559c|
i82562|i82801|i82801b11-bridge|ib700|ich9-intel-hda|ich9-usb-ehci1|
ich9-usb-ehci2|ich9-usb-uhci1|ich9-usb-uhci2|ich9-usb-uhci3|
ich9-usb-uhci4|ich9-usb-uhci5|ich9-usb-uhci6|ide-cd|ide-drive|ide-hd|
igd-passthrough-isa-bridge|intel-hda|intel_iommu|ioh3420|
ipmi-bmc-extern|ipmi-bmc-sim|ipoctal232|isa-applesmc|isa-cirrus-vga|
isa-debugcon|isa-debug-exit|isa-fdc|isa-ide|isa-ipmi-bt|isa-ipmi-kcs|
isa-parallel|isa-serial|isa-vga|lsi53c810|lsi53c810a|max-s390x-cpu|
megasas|mptsas1068|ne2k_isa|ne2k_pci|nec-usb-xhci|nvdimm|nvme|pc-dimm|
pci-testdev|pcnet|pc-testdev|piix3-ide|piix3-ide|piix3-ide-xen|
piix4-usb-uhci|pvscsi|pxb|pxb-host|pxb-pcie|qemu-s390-cpu|rocker|
s390-flic|s390-flic-qemu|s390-ipl|s390-pcihost|
s390-sclp-event-facility|s390-skeys-qemu|sb16|sclp|sclpconsole|
sclp-cpu-hotplug|sclplmconsole|sclp-memory-hotplug-dev|sclpquiesce|
sd-card|sdhci-pci|secondary-vga|sga|smbus-eeprom|tpci200|usb-audio|
usb-bot|usb-ccid|usb-mtp|usb-uas|vfio-ap|vfio-pci-nohotplug|
virtio-9p-device|virtual-css-bridge|vmcoreinfo|vmgenid|vmware-svga|
vmxnet3|vt82c686b-usb-uhci|x3130-upstream|*-x86_64-cpu|xen-backend|
xen-pci-passthrough|xen-platform|xen-pvdevice|xio3130-downstream|
z10BC.2-base-s390x-cpu|z10BC.2-s390x-cpu|z10BC-base-s390x-cpu|
z10BC-s390x-cpu|z10EC.2-base-s390x-cpu|z10EC.2-s390x-cpu|
z10EC.3-base-s390x-cpu|z10EC.3-s390x-cpu|z10EC-base-s390x-cpu|
z10EC-s390x-cpu|z114-base-s390x-cpu|z114-s390x-cpu|
z13.2-base-s390x-cpu|z13.2-s390x-cpu|z13-base-s390x-cpu|z13-s390x-cpu|
z13s-base-s390x-cpu|z13s-s390x-cpu|z196.2-base-s390x-cpu|
z196.2-s390x-cpu|z196-base-s390x-cpu|z196-s390x-cpu|
z800-base-s390x-cpu|z800-s390x-cpu|z890.2-base-s390x-cpu|
z890.2-s390x-cpu|z890.3-base-s390x-cpu|z890.3-s390x-cpu|
z890-base-s390x-cpu|z890-s390x-cpu|z900.2-base-s390x-cpu|
z900.2-s390x-cpu|z900.3-base-s390x-cpu|z900.3-s390x-cpu|
z900-base-s390x-cpu|z900-s390x-cpu|z990.2-base-s390x-cpu|
z990.2-s390x-cpu|z990.3-base-s390x-cpu|z990.3-s390x-cpu|
z990.4-base-s390x-cpu|z990.4-s390x-cpu|z990.5-base-s390x-cpu|
z990.5-s390x-cpu|z990-base-s390x-cpu|z990-s390x-cpu|
z9BC.2-base-s390x-cpu|z9BC.2-s390x-cpu|z9BC-base-s390x-cpu|
z9BC-s390x-cpu|z9EC.2-base-s390x-cpu|z9EC.2-s390x-cpu|
z9EC.3-base-s390x-cpu|z9EC.3-s390x-cpu|z9EC-base-s390x-cpu|
z9EC-s390x-cpu|z14ZR1-base-s390x-cpu|z14ZR1-s390x-cpu|
zBC12-base-s390x-cpu|zBC12-s390x-cpu|zEC12.2-base-s390x-cpu|
zEC12.2-s390x-cpu|zEC12-base-s390x-cpu|zEC12-s390x-cpu|cpu-cluster|
z14.2-base-s390x-cpu|z14.2-s390x-cpu|vhost-user-fs-device|
virtio-iommu-device|virtio-iommu-pci|
virtio-iommu-pci-non-transitional|vhost-user-vsock-device|
vhost-user-vsock-pci|vhost-user-vsock-pci-non-transitional|
vhost-user-fs-ccw|guest-loader]
(the following are aliases of these unsupported devices: lsi|
ahci|e1000-82540em|vfio-ccw)
(note that some of these device names represent supported devices and
are used internally, but are not specifyable via -device even though
they appear in the list of devices)
-drive
,if=[scsi|mtd|pflash], snapshot=on, format=[anything besides qcow2 or
raw]
-dtb file
-enable-sync-profile
-fda/-fdb ...
-g ...
-hda/-hdb/-hdc/-hdd ...
-icount ...
-L ...
-M
[s390-ccw-virtio|s390-ccw-virtio-2.4|s390-ccw-virtio-2.5|
s390-ccw-virtio-2.7|s390-ccw-virtio-2.8|s390-ccw-virtio-2.10|
s390-ccw-virtio-2.12|s390-ccw-virtio-3.0|s390-ccw-virtio-4.0|
s390-ccw-virtio-4.1|s390-ccw-virtio-5.0|s390-ccw-virtio-5.1|
s390-ccw-virtio-6.0|s390-ccw-virtio-6.1]
-machine
[s390-ccw-virtio|s390-ccw-virtio-2.4|s390-ccw-virtio-2.5|
s390-ccw-virtio-2.7|s390-ccw-virtio-2.8|s390-ccw-virtio-2.10|
s390-ccw-virtio-2.12|s390-ccw-virtio-3.0|s390-ccw-virtio-4.0|
s390-ccw-virtio-4.1|s390-ccw-virtio-5.0|s390-ccw-virtio-5.1|
s390-ccw-virtio-6.0|s390-ccw-virtio-6.1]
-mtdblock file
-net [socket|vde] ...
-netdev [hubport|l2tpv3|socket|vde] ...
-no-acpi
-no-fd-bootchk
-no-hpet
-no-kvm
-no-kvm-irqchip
-no-kvm-pit
-no-kvm-pit-reinjection
-numa cpu ...
-numa dist ...
-numa node ...
-option-rom ...
-overcommit ...
-pflash file
-portrait
-preconfig
-prom-env ...
-qtest ...
-qtest-log ...
-rotate
-sd file
-sdl
-set ...
-singlestep
-smbios ...
-snapshot
-soundhw ...
-spice
-tdf
-tpmdev emulator ...
-tpmdev passthrough ...
-usb
-usbdevice [braile|disk|host|mouse|net|serial|tablet]
-vga [cg3|tcx|virtio|cirrus|xenfb|vmware]
-win2k-hack
-xen-attach ...
-xen-domid ...
-xen-domid-restrict ...
- The following monitor commands are unsupported:
block_job_cancel ...
block_job_complete ...
block_job_pause ...
block_job_resume ...
block_job_set_speed ...
commit ...
drive_mirror ...
exit_preconfig
expire_password ...
hostfwd_add ...
hostfwd_remove ...
nbd_server_add ...
nbd server_start ...
nbd_server_stop ...
netdev_add
netdev_del ...
pcie_aer_inject_error ...
replay_break ...
replay_delete_break
replay_seek ...
set_link ...
set_password ...
singlestep ...
snapshot_blkdev ...
stopcapture ...
sync-profile ...
wavcapture ...
x_colo_lost_heartbeat
- The following QMP commands are unsupported:
block-job-cancel
block-job-complete
block-job-pause
block-job-resume
block-job-set-speed
change-backing-file
drive-backup
drive-mirror
dump-skeys
netdev_add
netdev_del
nbd-server-add
nbd-server-start
nbd-server-stop
query-colo-status
query-tpm
query-tpm-models
query-tpm-types
replay_break
replay_delete_break
replay_seek
x-blockdev-amend
x-blockdev-change
x-blockdev-insert-medium
x-blockdev-remove-medium
x-blockdev-reopen
x-colo-lost-heartbeat
x-debug-block-dirty-bitmap-sha256
x-debug-query-block-graph
x-exit-preconfig
xen-colo-do-checkpoint
xen-load-devices-state
xen-save-devices-state
xen-set-global-dirty-log
xen-set-replication

View File

@ -1,963 +0,0 @@
[qemu-x86 package document]
SLES 15 SP4 QEMU/KVM RELATED SUPPORT STATEMENTS
===============================================
Overview
--------
The QEMU based packages included with SLES 15 SP4 provide a large variety of
features, from the very latest customer requests to features of questionable
quality or value. The linux kernel includes components which contribute KVM
virtualization features as well. This document was created to assist the user
in deciding which features can be relied upon to build enterprise class
virtualization solutions. KVM based virtualization for x86 (Intel 64/AMD64),
for IBM System z (s390x), and for the ARM64 architecture (AArch64) are offered
at the L3 (full support) level. The bulk of this document deals with L3
supported features and is primarily x86 centric. This document should be
considered a companion to the standard virtualization documentation delivered
with the product.
KVM is implemented in linux kernel modules which enable the linux kernel to
function as an integral part of the KVM hypervisor. The hypervisor-guest
interaction is managed by QEMU through the /dev/kvm ioctl interface. The linux
host assists in the virtualization of storage, networking and display
resources as well as allowing direct hardware passthrough of PCI and USB
devices. Linux memory and cpu management features are used by QEMU/KVM to
enable guests to share those host resources as efficiently as possible.
QEMU is a primary component of KVM based virtualization. The legacy qemu-kvm
program is available for continuity with pre SLES 12 usage, including in
libvirt domain xml references. The QEMU emulator binaries qemu-system-x86_64
and qemu-system-i386 (x86 host) are now the primary programs to use to access
KVM virtualization. When using these programs, the -machine option accel=kvm
(or its alias -enable-kvm), or --accel kvm option must be specified for KVM
acceleration to be used by the guest. Although Xen uses QEMU for
virtualization as well, this document does not identify Xen supported
features.
Libvirt is the preferred means of accessing QEMU/KVM functionality and is
documented elsewhere. This document focuses on the features and direct usage
of QEMU/KVM as provided by the QEMU based packages.
Major QEMU/KVM Supported Features
---------------------------------
- KVM virtualization is accomplished by using the QEMU program in KVM
acceleration mode. KVM acceleration requires that both guest and host have
the same fundamental architecture.
- Guest images created under previous QEMU versions are supported by machine
version compatibilities built into more recent QEMU versions.
- For ease of use, the QEMU program has defaults which represent traditional
usage patterns.
- Guest virtual machine characteristics are specified by a combination of
internal defaults, options provided on the QEMU program command-line, runtime
configurations set via the monitor interfaces and optional config files. The
runtime control of a VM is effected either through the Human Monitor
"Protocol" (HMP), or the JSON based programmatical QEMU Monitor Protocol (QMP)
interface. For QMP details, see qemu-qmp-ref man page.
Since a KVM guest runs in the context of a normal linux process, some types
of execution controls are managed with linux tools.
- Various standard vCPU types are available, along with the ability to specify
individual CPU features visible to the guest.
- QEMU incorporates a SEABIOS based system BIOS and iPXE based PXE ROMs, which
allow boot options common to physical systems, along with other features
tailored to virtualization. Various VGABIOS ROMs, also from the SEABIOS
project, are also included. A UEFI based guest boot environment is also
available by using the firmware provided by the qemu-ovmf-x86_64 package.
- Some QEMU messages have been localized to various languages. This is provided
by the optional qemu-lang package. Keyboard mappings for various nationalities
is also provided.
- Virtual machine lifecycle controls include startup through the system BIOS or
kernel boot, ACPI or legacy based shutdown, execution pausing, the saving and
restoring of machine state or disk state, VM migration to another host, and
miscellaneous controls available through the "monitors" mentioned above.
- Guest execution state may be "moved" in both time (save/restore) and space
(static and live migration). These migrations or save/restore operations can
take place either from certain prior SLES versioned hosts to a SLES 15 SP4
host or between hosts of the same version. Certain other restrictions also
apply.
- Security considerations include seccomp2 based sandboxing, vTPM, privileged
helpers and a security model which allows running guests as a non-root user.
- QEMU/KVM supports a wide range of operating systems within the VMs. See the
online SUSE documentation for supported OS's. Windows guests can optionally be
accelerated with QEMU/KVM provided Hyper-V hypercalls, or with paravirtual
drivers from the SUSE Virtual Machine Driver Pack. Linux includes a number of
paravirtual drivers as well.
- QEMU provides best effort reuse of existing disk images, including those with
systems installed, through geometry probing. Also disk images produced by
other popular virtualization technologies may be imported into QEMU supported
storage formats. These QEMU formats include features which exploit the
benefits of virtualization.
- Memory, cpu and disk space overcommit are possible and can be beneficial when
done responsibly. Additional management of these resources comes in the form
of memory ballooning or hotplug, host KSM, vcpu hot-add, online disk resizing,
trim, discard and hole punching.
- Guest performance is enhanced through the use of virtio devices, various disk
caching modes, network acceleration via the vhost-net kernel module, multi-
queue network transmit capabilities, host transparent huge pages (THP) and
direct hugetlb usage. Physical PCI and USB devices may also be passed through
to the guest, including SR-IOV VF's.
- The guest UI is accessable via GTK, VNC, Spice, and serial (including curses
TUI) interfaces.
- Guest timekeeping is supported in a variety of ways, including a paravirtual
clocksource, and options for the various guest clocks for how to handle the
timeslicing of the guest's execution on the host.
- Guest OS's interact with virtualized hardware including a choice of either
older or more recent x86 system chipsets, system devices and buses, and a
variety of common storage and networking emulated devices. SMBIOS and ACPI
table details can be customized.
- In addition to the para-virtualized devices already mentioned, other devices
and infrastructure designed to avoid virtualization "problem areas" are
available such as SPICE graphics, vmmouse emulation, tablet style pointer
interfaces and virtio based UI interfaces.
- A built-in user-mode network (SLIRP) stack is available.
- Portions of the host file system may be shared with a guest by using virtFS.
- A guest "agent" is available for SLES 15 SP4 KVM guests via the
qemu-guest-agent package. This allows some introspection and control of the
guest OS environment from the host.
QEMU/KVM Technology Previews
----------------------------
- Nested VMX and SVM virtualization is possible.
- All features indicated as not being supported in this document fall under the
Technology Preview definition contained in the main product's release notes.
Noteworthy QEMU/KVM Unsupported Features
----------------------------------------
- Note that some features are unsupported simply due to lack of validation. If
an existing feature is desired, but not marked supported, let SUSE know about
your requirements.
- The TCG "acceleration" mode may be helpful for problem isolation, but
otherwise presents insufficient benefit and stability.
- Use of -cpu host is not supported in all host/guest configurations.
- GlusterFS integration is not enabled.
Deprecated, Superseded, Modified and Dropped Features
-----------------------------------------------------
- https://qemu-project.gitlab.io/qemu/about/deprecated.html and
https://qemu-project.gitlab.io/qemu/about/removed-features.html
These websites track features deprecation and removal at the upstream
development level. Our qemu package inherits this community direction, but be
aware that we can and will deviate as needed. Those deviations and additional
information can be found in this section. Feature deprecation as well as
removed features are also tracked in the "System Emulation" section of the
documentation installed with the qemu package.
- qemu-img: Deprecate use of -b without -F. Creating an image that requires
format probing of the backing image is potentially unsafe and is now
deprecated.
- When no video adapter is specified, the default used is stdvga. This differs
from the default of prior releases which was cirrus. The cirrus adapter was
considered too outdated to continue to use as the default.
- The deprecated windows drivers (win-virtio-drivers.iso) are no longer provided.
The Virtual Machine Driver Pack is the supported way to get virtio drivers for
Windows guests.
- The use of ",boot=on" for virtio disks is no longer needed since the bios used
supports the virtio block interface directly. In fact, its usage may cause
problems, and is now considered deprecated.
- The previously non-persistent backing file with pmem=on is deprecated. Modify
VM configuration to set pmem=off to continue using fake NVDIMM with backing
file or move backing file to NVDIMM storage and keep pmem=on.
- The use of "?" as a parameter to "-cpu", "-soundhw", "-device", "-M",
"-machine" and "-d" is now considered deprecated. Use "help"
instead.
- The use of "if=scsi" as a parameter to "-drive" does not work anymore with PC
machine types, as it created an obsolete SCSI controller model.
- Passthrough of a host floppy device is now considered deprecated.
- Use of aio=native without direct cache mode also being specified (cache=none,
cache=directsync, or cache.direct=on) is no longer allowed.
- The use of image encryption in qcow and qcow2 formats is now considered
deprecated.
Analysis has shown it to be weak encryption, in addition to suffering from
poor design. Images can easily be converted to a non-encrypted format.
- Use of acpi, boot-opts, and smp-opts in a -readconfig config file are now
considered deprecated. In the future those names will be standardized to
acpitable, boot, and smp respectively.
- When only a partial SMP topology is provided (ie only some of sockets, cores,
threads) the derived guest ABI is not guaranteed to be equivalent in future
versions.
- These previously supported command line options are now considered deprecated:
-display sdl,window_close= (use -display sdl,window-close)
-no-quit (use -display ...,window-close=off)
-M option kernel-irqchip=off
-chardev tty (use serial name instead)
-chardev paraport (use parallel name instead)
-device virtio-blk,scsi= (use virtio-scsi instead)
-device virtio-blk-pci,scsi= (use virtio-scsi instead)
-enable-fips (not really helpful - see https://git.qemu.org/?p=qemu.git;a=commit;h=166310299a1e7824bbff17e1f016659d18b4a559 for details)
-realtime mlock= (use -overcommit mem-lock= instead)
-spice password=string (use password-string option instead)
-writeconfig (no replacement - never really worked right)
-share and noshare must be replaced by share=on/share=off
-nodelay must be replaced by nodelay=on rather than delay=off
-object-add options opened=on and loaded=on (both had no effect)
- These previously supported command line options are no longer supported:
-device ide-drive (use ide-hd or ide-cd instead)
-device scsi-disk (use scsi-hd or scsi-cd instead)
- The previously supported machine types pc-0.12, pc-0.14 and pc-0.15 are no
longer recognized. Switch to a newer machine type.
- These previously supported command line options are no longer recognized:
-balloon (use -device virtio-balloon instead)
-clock
-device ivshmem (use ivshmem-doorbell or ivshmem-plain instead)
-device pc-sysfw (no longer needed)
-device pci-assign, -device kvm-pci-assign (use -device vfio-pci instead)
-display sdl
-no-frame
-nodefconfig (use -no-user-config instead)
-realtime ...
-sdl
-show-cursor
-virtioconsole (use -device virtconsole instead)
- Specifying a cpu feature with both "+feature/-feature" and "feature=on/off"
will now cause a warning. The current behavior for this combination where
"+feature/-feature" wins over "feature=on/off", will be changed going forward
so that "+feature" and "-feature" will be synonyms for "feature=on" and
"feature=off" respectively.
- The case of specified sockets, cores, and threads not matching the vcpu count
is no longer silently ignored. QEMU now requires that the topology match the
vcpu count.
- The previously supported blkdev-add QMP command has been flagged as lacking
and could possibly change syntax in the future.
- These previously unsupported command line options are now deprecated:
-no-kvm-pit
-soundhw (use -device ... instead)
- These previously unsupported command line options are no longer recognized:
-bt
-device at24c-eeprom
-device ccid-card-passthru
-device cfi.pflash01
-device esp
-device exynos4210-ehci-usb
-device fusbh200-ehci-usb
-device icc-bridge
-device q35-pcihost
-device mch
-device mmio_interface
-device smbus-eeprom
-device SUNW,fdtwo
-device sysbus-ahci
-device sysbus-fdc
-device sysbus-ohci
-device tegra2-ehci-usb
-device testdev (use -device pc-testdev instead)
-device vhost-user-vsock-pci-transitional
-device vhost-vsock-pci-transitional
-device virtio-iommu-pci-transitional
-device virtio-mmio
-device xln,ps7-usb
-enable-hax (use -accel hax instead)
-enable-nesting
-kvm-shadow-memory (use -machine kvm_shadow_mem= instead)
-M mac
-machine mac
-no-kvm-irqchip (use -machine kernel_irqchip=off instead)
-no-kvm-pit
-no-kvm-pit-reinjection (use -global kvm-pit.lost_tick_policy=discard instead)
-nvram
-old-param
-osk
-pcidevice (use -device vfio-pci instead)
-qtest
-semihosting
-tb-size
-tdf (note: mistakenly listed previously as supported)
-xen-create
- The previously unsupported machine types pc-0.10, pc-0.11, pc-0.13,
pc-1.0, pc-1.1, pc-1.2 and pc-1.3 are are no longer recognized.
- These previously supported QMP commands are now deprecated:
<previously mentioned items have been moved to another category>
- These previously supported QMP commands are no longer recognized:
info cpustats
block_passwd
change (use blockdev-change-medium or change-vnc-password instead)
cpu-add (use device_add instead)
migrate-set-cache-size (use migrate-set-parameters instead)
migrate_set_downtime (use migrate-set-parameters instead)
migrate_set_speed (use migrate-set-parameters instead)
query-cpus (use query-cpus-fast instead)
query-events
query-migrate-cache-size (use query-migrate-parameters instead)
- These previously supported monitor commands are now deprecated:
change
- These previously supported monitor commands are no longer recognized:
info cpustats
block_passwd ...
block_passwd
cpu-add
cpu_set
migrate_set_cache_size
migrate_set_downtime
migrate_set_speed
pci_add (use device_add instead)
pci_del (use device_del instead)
usb_add (use device_add instead)
usb_del (use device_del instead)
- These previously unsupported monitor command are now deprecated:
<previously mentioned items have been moved to another category>
- These previously unsupported monitor commands are no longer recognized:
acl_add ...
acl_policy ...
acl_remove ...
acl_reset ...
acl_show ...
host_net_add
host_net_remove
- These previously unsupported QMP commands are now supported under a new name:
x-block-dirty-bitmap-disable (use block-dirty-bitmap-disable instead)
x-block-dirty-bitmap-enable (use block-dirty-bitmap-enable instead)
x-block-dirty-bitmap-merge (use block-dirty-bitmap-merge instead)
x-block-latency-histogram-set (use block-latency-histogram-set instead)
x-blockdev-create (use blockdev-create instead)
x-input-send-event (use input-send-event instead)
- This previously unsupported QMP commands is no longer recognized:
x-nbd-server-add-bitmap
- Due to the lack of migration support (mainly due to ahci interface issues)
and other unstable interface issues, earlier versions of the q35 machine type
are not supported in this release. The current q35 machine type is however now
fully supported.
- Due to upstream's decision to no longer fully support the qed storage format
going forward (since it really provides no benefit over qcow2 and is now no
longer actively maintained upstream), creating qed storage images is no longer
supported and it is highly discouraged to continue using existing qed images.
They should instead be converted to another supported format.
- If KVM Intel nested virtualization is enabled, and the guest is passed the vmx
feature, then live migration or save/restore is prohibited.
QEMU Command-Line and Monitor Syntax and Support
------------------------------------------------
- The QEMU program command-line syntax is as follows:
qemu-system-i386 [options] [disk_image]
qemu-system-x86_64 [options] [disk_image]
Where 'options' are taken from the options listed below, and 'disk_image' is
the file system reference to the x86 guest's primary IDE based hard disk
image. This image as well as those used with -drive or -cdrom, may be in the
raw (no format) or qcow2 storage formats, and may be located in files within
the host filesystem, logical volumes, host physical disks, or network based
storage. Read only media may also be accessed via URL style protocol
specifiers.
Note that as a general rule, as new command line options are added which serve
to replace an older option or interface, you are strongly encouraged to adapt
your usage to the new option. The new option is being introduced to provide
better functionality and usability going forward. In some cases existing
problems or even bugs in older interfaces cannot be fixed due to functional
expectations, but are resolved in the newer interface or option.
This advice includes moving to the most recent machine type (eg pc-i440fx-6.1
instead of pc-i440fx-6.0) if possible.
- The following command line options are supported:
-accel ...
-action ...
-add-fd ...
-alt-grab
-append ...
-audio-help
-audiodev
-bios ...
-blockdev ...
-boot ...
-cdrom ...
-chardev ...
-compat ...
-cpu ... (all except host)
-ctrl-grab
-d ...
-daemonize
-debugcon ...
-device
[isa-serial|isa-parallel|isa-fdc|ide-hd|ide-cd|VGA|cirrus-vga|rtl8139|
usb-hub|usb-ehci|usb-tablet|usb-storage|usb-mouse|usb-kbd|
virtserialport|virtconsole|sga|i82559er|scsi-cd|scsi-hd|scsi-generic|
scsi-block|pci-serial|pci-serial-2x|pci-serial-4x|ich9-ahci|
piix3-usb-uhci|usb-host|usb-serial|usb-wacom-tablet|usb-braille|
usb-net|pci-ohci|piix4-usb-uhci|i6300esb|ib700|qxl|qxl-vga|pvpanic|
vfio-pci|ivshmem-doorbell|ivshmem-plain|pci-bridge|megasas-gen2|
pc-dimm|floppy|e1000e|ccid-card-emulated|ccid-card-passthrough|
xen-backend|loader|e1000-82540em|vmgenid|vmcoreinfo|pcie-pci-bridge|
ich9-usb-ehci1|ich9-usb-ehci2|ich9-usb-uhci1|ich9-usb-uhci2|
ich9-usb-uhci3|ich9-usb-uhci4|ich9-usb-uhci5|ich9-usb-uhci6|
usb-redir|vhost-scsi|vhost-scsi-pci|vhost-user-blk|
vhost-user-blk-pci|vhost-user-blk-pci-non-transitional|
vhost-user-blk-pci-transitional|vhost-user-scsi|vhost-user-scsi-pci|
vhost-user-scsi-pci-non-transitional|vhost-user-pci-transitional|
vhost-vsock-pci|vhost-vsock-pci-non-transitional|virtio-balloon-pci|
virtio-balloon-pci-non-transitional|virtio-balloon-pci-transitional|
virtio-blk-pci|virtio-blk-pci-non-transitional|
virtio-blk-pci-transitional|virtio-net-pci|
virtio-net-pci-non-transitional|virtio-net-pci-transitional|
virtio-9p-pci|virtio-9p-pci-non-transitional|
virtio-9p-pci-transitional|virtio-serial-pci|
virtio-serial-pci-non-transitional|virtio-serial-pci-transitional|
virtio-scsi-pci|virtio-scsi-pci-non-transitional|
virtio-scsi-pci-transitional|virtio-rng-pci|
virtio-rng-pci-non-transitional|virtio-rng-pci-transitional|
virtio-input-host-pci|virtio-input-host-pci-non-transitional|
virtio-input-host-pci-transitional|virtio-keyboard-pci|
virtio-mouse-pci|virtio-tablet-pci|virtio-gpu-pci|virtio-crypto-pci|
virtio-vga|vhost-user-fs-pci|vhost-user-gpu|vhost-user-pci-pci|
vhost-user-input|vhost-user-input-pci|vhost-user-vga|virtio-mmio|
virtio-pmem|virtio-pmem-pci|mc146818rtci|nvme-subsys|guest-loader|
pvpanic-pci]
(the following are aliases of these supported devices: ahci|
e1000|virtio-blk|virtio-net|virtio-serial|virtio-balloon|virtio-9p|
virtio-scsi|virtio-rng|virtio-input-host|virtio-keyboard|virtio-mouse|virtio-tablet|virtio-gpu)
-dfilter range, ...
-display ...
-drive
... (if specified if=[floppy|ide|virtio] and format=[qcow2|raw] and
snapshot=off only)
-echr ...
-enable-fips
-enable-kvm
-fda/-fdb ...
-fsdev ...
-full-screen
-fw_cfg ...
-gdb ...
-global ...
-h
-hda/-hdb/-hdc/-hdd ...
-help
-incoming ...
-initrd ...
-iscsi ...
-k ...
-kernel ...
-loadvm ...
-m ...
-M
[help|none|pc-i440fx-1.4|pc-i440fx-1.7|pc-i440fx-2.0|pc-i440fx-2.3|
pc-i440fx-2.6|pc-i440fx-2.9|pc-i440fx-2.11|pc-i440fx-3.1|pc-i440fx-4.2|
pc-i440fx-5.2|pc-i440fx-6.0|pc-i440fx-6.1|pc-q35-2.6|pc-q35-2.9|
pc-q35-2.11|pc-q35-3.1|pc-q35-4.2|pc-q35-5.2|pc-q35-6.0|pc-q35-6.1|
xenfv|xenfv-4.2]
-machine
[help|none|pc-i440fx-1.4|pc-i440fx-1.7|pc-i440fx-2.0|
pc-i440fx-2.3|pc-440fx-2.6|pc-i440fx-2.9|pc-i440fx-2.11|
pc-i440fx-3.1|pc-i440fx-4.2|pc-i440fx-5.2|pc-i440fx-6.0|
pc-i440fx-6.1|pc-q35-2.6|pc-q35-2.9|pc-q35-2.11|pc-q35-3.1|
pc-q35-4.2|pc-q35-5.2|pc-q35-6.0|pc-q35-6.1|xenfv|xenifv-4.2]
-mem-path ...
-mem-prealloc
-mon ...
-monitor ...
-msg ...
-name ...
-net
[bridge|l2tpv3|nic|none|tap|user] ... (for model= only e1000, rtl8139,
and virtio are supported)
-netdev [bridge|tap|user] ...
-nic ...
-no-acpi
-nodefaults
-no-fd-bootchk
-nographic
-no-hpet
-no-quit
-no-reboot
-no-shutdown
-no-user-config
-numa cpu ...
-numa dist ...
-object ...
-only-migratable
-parallel ...
-pidfile ...
-plugin ...
-qmp ...
-qmp-pretty ...
-readconfig ...
-rtc ...
-runas ...
-s
-S
-sandbox ...
-seed ...
-serial ...
-smbios ...
-smp ...
-spice
-tpmdev passthrough ...
-trace ...
-usb
-usbdevice [braile|disk|host|mouse|net|serial|tablet]
-uuid ...
-version
-vga [cirrus|none|qxl|std|xenfb]
-virtfs ...
-vnc ...
-watchdog ...
-watchdog-action ...
-writeconfig ...
-xen-attach ...
-xen-domid ...
-xen-domid-restrict ...
- The following monitor commands are supported:
?
announce_self ...
balloon ...
block_resize ...
boot_set ...
c
change ...
chardev-add ...
chardev-change ...
chardev-remove ...
chardev-send-break ...
client_migrate_info ...
closefd ...
cont
cpu ...
delvm ...
device_add ...
device_del ...
drive_add ...
drive_backup ...
drive_del ...
dump_guest_memory ...
eject ...
gdbserver ...
gpa2hpa ...
gpa2hva ...
gva2gpa ...
help
i ...
info ...
loadvm ...
logfile ...
logitem ...
mce ...
memsave ...
migrate ...
migrate_cancel
migrate_continue ...
migrate_incoming
migrate_pause
migrate_recover ...
migrate_set_capability ...
migrate_set_parameter ...
migrate_start_post_copy
mouse_button ...
mouse_move ...
mouse_set ...
nmi ...
o ...
object_add ...
object_del ...
p ...
pci_add ...
pci_del...
pmemsave ...
print ...
q
qemu-io ...
qom-list
qom-set
ringbuf_read ...
ringbuf_write ...
savevm ...
screendump ...
sendkey ...
snapshot_blkdev_internal ...
snapshot_delete_blkdev_internal ...
stop
sum ...
system_powerdown
system_reset
system_wakeup
trace-event ...
watchdog_action ...
x ...
xp ...
- The following QMP commands are supported:
add_client
add-fd
announce-self
balloon
blockdev-add
blockdev-backup
blockdev-change-medium
blockdev-close-tray
blockdev-create
blockdev-del
blockdev-mirror
blockdev-open-tray
blockdev-snapshot
blockdev-snapshot-delete-internal-sync
blockdev-snapshot-internal-sync
blockdev-snapshot-sync
block-commit
block-dirty-bitmap-add
block-dirty-bitmap-clear
block-dirty-bitmap-disable
block-dirty-bitmap-enable
block-dirty-bitmap-merge
block-dirty-bitmap-remove
block-export-add
block-export-del
block-latency-histogram-set
block_resize
block_set_io_throttle
block-set-write-threshold
block_stream
calc-dirty-rate
change-vnc-password
chardev-add
chardev-change
chardev-remove
chardev-send-break
client_migrate_info
closefd
cont
cpu
device_add
device_del
device-list-properties
display-reload
dump-guest-memory
eject
expire_password
getfd
human-monitor-command
inject-nmi
input-send-event
job-cancel
job-complete
job-dismiss
job-finalize
job-pause
job-resume
memsave
migrate
migrate_cancel
migrate-continue
migrate-incoming
migrate-pause
migrate-resume
migrate-set-capabilities
migrate-set-parameters
migrate-start-postcopy
object-add
object-del
pmemsave
qmp_capabilities
qom-get
qom-list
qom-list-types
qom-set
query-acpi-ospm-status
query-balloon
query-block
query-block-exports
query-block-jobs
query-blockstats
query-chardev
query-chardev-backends
query-command-line-options
query-commands
query-cpu-definitions
query-cpu-model-expansion
query-cpus-fast
query-current-machine
query-dirty-rate
query-display-options
query-dump
query-dump-guest-memory-capability
query-fdsets
query-gic-capabilities
query-hotpluggable-cpus
query-iothreads
query-jobs
query-kvm
query-machines
query-memdev
query-memory-devices
query-memory-size-summary
query-mice
query-migrate
query-migrate-capabilities
query-migrate-parameters
query-name
query-named-block-nodes
query-pci
query-pr-managers
query-qmp-schema
query-rocker
query-rocker-of-dpa-flows
query-rocker-of-dpa-groups
query-rocker-ports
query-rx-filter
query-sev
query-sev-capabilities
query-sev-launch-measure
query-spice
query-status
query-target
query-tpm
query-tpm-models
query-tpm-types
query-uuid
query-version
query-vnc
query-vnc-servers
query-yank
query-xen-replication-status
quit
remove-fd
ringbuf-read
ringbuf-write
screendump
send-key
set-action
set_link
set_password
set-numa-node
sev-inject-launch-secret
snapshot-delete
snapshot-load
snapshot-save
stop
system_powerdown
system_reset
system_wakeup
trace-event-get-state
trace-event-set-state
transaction
watchdog-set-action
xen-load-devices-state
xen-save-devices-state
xen-set-global-dirty-log
yank
- The following command line options are unsupported:
-acpitable ...
-chroot ...
-cpu host
-curses
-device
[ipoctal232|i82562|nec-usb-xhci|hda-duplex|hda-output|usb-bot|
lsi53c810a|isa-debug-exit|ne2k_pci|usb-uas|ioh3420|isa-ide|usb-ccid|
pcnet|ich9-intel-hda|dc390|hda-micro|x3130-upstream|isa-cirrus-vga|
pc-testdev|ne2k_isa|isa-vga|cs4231a|gus|vmware-svga|i82801b11-bridge|
i82557a|i82557c|i82557b|i82801|AC97|am53c974|intel-hda|i82558a|
i82558b|usb-audio|i82550|isa-debugcon|sb16|megasas|i82551|
xio3130-downstream|vt82c686b-usb-uhci|tpci200|i82559a|i82559b|i82559c|
isa-applesmc|adlib|ES1370|lsi53c810|nvme|pci-testdev|pvscsi|
virtio-9p-device|virtio-balloon-device|virtio-blk-device|
virtio-net-device|virtio-rng-device|virtio-scsi-device|
virtio-serial-device|vmxnet3|xen-pci-passthrough|xen-platform|
xen-pvdevice|piix3-ide|piix3-ide-xen|piix3-ide|i8042|sdhci-pci|
secondary-vga|edu|intel_iommu|usb-mtp|e1000-82544gc|e1000-82545em|
pci-bridge-seat|pxb|pxb-pcie|rocker|virtio-input-host-device|
virtio-keyboard-device|virtio-mouse-device|virtio-tablet-device|
hyperv-testdev|generic-sdhci|igd-passthrough-isa-bridge|
ipmi-bmc-extern|ipmi-bmc-sim|isa-ipmi-bt|isa-ipmi-kcs|mptsas1068|
nvdimm|pxb-host|sd-card|virtio-gpu-device|amd-iommu|AMDVI-PCI|
vhost-vsock-device|virtio-crypto-device|vfio-pci-igd-lpc-bridge|
pcie-root-port|qemu-xhci|*-i386-cpu|*-x86_64-cpu|pvrdma|bochs-display|
ramfb|ccid-card-emulated|ccid-card-passthru|kvaser_pci|tpm-crb|
mioe3680_pci|pcm3680_pci|hyperv-synic|vfio-pci-nohotplug|
vfio-platform|xen-bridge|xen-cdrom|xen-disk|ati-vga|cpu-cluster|
intel-iommu|vhost-user-fs-device|tulip|ati-vga|i2c-ddc|pci-ipmi-bt|
pci-ipmi-kcs|serial|serial-io|serial-mm|virtio-iommu-device|
virtio-iommu-pci|virtio-iommu-pci-nontransitional|xen-sysdev|
imx.usbphy|vmbus-bridge|vhost-user-vsock-device|vhost-user-vsock-pci|
vhost-user-vsock-pci-non-transitional|virtio-mem|virtio-mem-pci|
nvme-ns|ctucan_pci|u2f-passthru]
(the following are aliases of these unsupported devices: lsi)
(note that some of these device names represent supported devices and
are used internally, but are not specifyable via -device even though
they appear in the list of devices)
-drive
,if=[scsi|mtd|pflash], snapshot=on, format=[anything besides qcow2 or
raw]
-dtb file
-enable-sync-profile
-g ...
-icount ...
-L ...
-M
[pc|isapc|microvm|x-remote|pc-i440fx-1.5|pc-i440fx-1.6|pc-i440fx-2.1|
pc-i440fx-2.2|pc-i440fx-2.4|pc-i440fx-2.5|pc-i440fx-2.7|pc-i440fx-2.8|
pc-i440fx-2.10|pc-i440fx-2.12|pc-i440fx-3.0|pc-i440fx-4.0|pc-i440fx-4.1|
pc-i440fx-5.0|pc-i440fx-5.1|pc-i440fx-6.0|q35|pc-q35-1.4|pc-q35-1.5|
pc-q35-1.6|pc-q35-1.7|pc-q35-2.0|pc-q35-2.1|pc-q35-2.2|pc-q35-2.3|
pc-q35-2.4|pc-q35-2.5|pc-q35-2.7|pc-q35-2.8|pc-q35-2.10|pc-q35-2.12|
pc-q35-3.0|pc-q35-4.0|pc-q35-4.1|pc-q35-5.0|pc-q35-5.1|pc-q35-6.0]
-machine
[pc|isapc|microvm|x-remote|pc-i440fx-1.5|pc-i440fx-1.6|pc-i440fx-2.1|
pc-i440fx-2.2|pc-i440fx-2.4|pc-i440fx-2.5|pc-i440fx-2.7|
pc-i440fx-2.8|pc-i440fx-2.10|pc-i440fx-2.12|pc-i440fx-3.0|
pc-i440fx-4.0|pc-i440fx-4.1|pc-i440fx-5.0|pc-i440fx-5.1|
pc-i440fx-6.0|q35|pc-q35-1.4|pc-q35-1.5|pc-q35-1.6|pc-q35-1.7|
pc-q35-2.0|pc-q35-2.1|pc-q35-2.2|pc-q35-2.3|pc-q35-2.4|pc-q35-2.5|
pc-q35-2.7|pc-q35-2.8|pc-q35-2.10|pc-q35-2.12|pc-q35-3.0|pc-q35-4.0|
pc-q35-4.1|pc-q35-5.0|pc-q35-5.1|pc-q35-6.0]
-mtdblock file
-net [socket|vde] ...
-netdev [hubport|l2tpv3|socket|vde] ...
-no-kvm
-numa node ...
-option-rom ...
-overcommit ...
-pflash file
-portrait
-preconfig
-prom-env ...
-qtest ...
-qtest-log ...
-rotate
-sd file
-sdl
-set ...
-singlestep
-snapshot
-soundhw ...
-tpmdev emulator ...
-vga [cg3|tcx|virtio|vmware]
-win2k-hack
- The following monitor commands are unsupported:
block_job_cancel ...
block_job_complete ...
block_job_pause ...
block_job_resume ...
block_job_set_speed ...
commit ...
drive_mirror ...
exit_preconfig
expire_password ...
hostfwd_add ...
hostfwd_remove ...
nbd_server_add ...
nbd server_start ...
nbd_server_stop ...
netdev_add
netdev_del ...
pcie_aer_inject_error ...
replay_break ...
replay_delete_break
replay_seek ...
set_link ...
set_password ...
singlestep ...
snapshot_blkdev ...
stopcapture ...
sync-profile ...
wavcapture ...
x_colo_lost_heartbeat
- The following QMP commands are unsupported:
block-job-cancel
block-job-complete
block-job-pause
block-job-resume
block-job-set-speed
change-backing-file
drive-backup
drive-mirror
netdev_add
netdev_del
nbd-server-add
nbd-server-start
nbd-server-stop
query-colo-status
query-replay
replay_break
replay_delete_break
replay_seek
x-blockdev-amend
x-blockdev-change
x-blockdev-insert-medium
x-blockdev-remove-medium
x-blockdev-reopen
x-colo-lost-heartbeat
x-debug-block-dirty-bitmap-sha256
x-debug-query-block-graph
x-exit-preconfig
xen-colo-do-checkpoint
xen-set-replication

View File

@ -1,29 +0,0 @@
From: Bruce Rogers <brogers@suse.com>
Date: Mon, 11 Mar 2019 22:02:37 -0600
Subject: tests: change error message in test 162
Git-commit: 0000000000000000000000000000000000000000
Since we have a quite restricted execution environment, as far as
networking is concerned, we need to change the error message we expect
in test 162. There is actually no routing set up so the error we get is
"Network is unreachable". Change the expected output accordingly.
Signed-off-by: Bruce Rogers <brogers@suse.com>
---
tests/qemu-iotests/162.out | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/tests/qemu-iotests/162.out b/tests/qemu-iotests/162.out
index f8714cb0d27d2b15d3feaaaf729c..2793aed277903222ea4396157d31 100644
--- a/tests/qemu-iotests/162.out
+++ b/tests/qemu-iotests/162.out
@@ -1,7 +1,7 @@
QA output created by 162
=== NBD ===
-qemu-img: Could not open 'json:{"driver": "nbd", "host": -1}': address resolution failed for -1:10809: Name or service not known
+qemu-img: Could not open 'json:{"driver": "nbd", "host": 42}': Failed to connect socket: Network is unreachable
image: nbd://localhost:PORT
image: nbd+unix://?socket=42

View File

@ -1,31 +0,0 @@
From: Bruce Rogers <brogers@suse.com>
Date: Tue, 20 Nov 2018 15:46:41 -0700
Subject: tests/qemu-iotests: Triple timeout of i/o tests due to obs
environment
Git-commit: 0000000000000000000000000000000000000000
Executing tests in obs is very fickle, since you aren't guaranteed
reliable cpu time. Triple the timeout for each test to help ensure
we don't fail a test because the stars align against us.
Signed-off-by: Bruce Rogers <brogers@suse.com>
[DF: Small tweaks necessary for rebasing on top of 6.2.0]
Signed-off-by: Dario Faggioli <dfaggioli@suse.com>
---
tests/qemu-iotests/common.qemu | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/tests/qemu-iotests/common.qemu b/tests/qemu-iotests/common.qemu
index 0f1fecc68edfb07633589b0f3c75..b23c4798aa112efee49cf5c9469e 100644
--- a/tests/qemu-iotests/common.qemu
+++ b/tests/qemu-iotests/common.qemu
@@ -85,7 +85,7 @@ _timed_wait_for()
timeout=yes
QEMU_STATUS[$h]=0
- read_timeout="-t ${QEMU_COMM_TIMEOUT}"
+ read_timeout="-t $((${QEMU_COMM_TIMEOUT}*3))"
if [ -n "${GDB_OPTIONS}" ]; then
read_timeout=
fi

File diff suppressed because it is too large Load Diff

View File

@ -1,30 +0,0 @@
From: Bruce Rogers <brogers@suse.com>
Date: Wed, 16 Jan 2019 16:29:36 -0700
Subject: xen: add block resize support for xen disks
Provide monitor naming of xen disks, and plumb guest driver
notification through xenstore of resizing instigated via the
monitor.
[BR: minor edits to pass qemu's checkpatch script]
[BR: significant rework needed due to upstream xen disk qdevification]
[BR: At this point, monitor_add_blk call is all we need to add!]
Signed-off-by: Bruce Rogers <brogers@suse.com>
---
hw/block/xen-block.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/hw/block/xen-block.c b/hw/block/xen-block.c
index 4c7f17c253e97bd747347aca3063..46168753f3dcc0d1795d5f567145 100644
--- a/hw/block/xen-block.c
+++ b/hw/block/xen-block.c
@@ -270,6 +270,9 @@ static void xen_block_realize(XenDevice *xendev, Error **errp)
xen_block_set_size(blockdev);
+ if (!monitor_add_blk(conf->blk, blockdev->drive->id, errp)) {
+ return;
+ }
blockdev->dataplane =
xen_block_dataplane_create(xendev, blk, conf->logical_block_size,
blockdev->props.iothread);

View File

@ -1,41 +0,0 @@
From: Olaf Hering <olaf@aepfle.de>
Date: Tue, 8 Jan 2019 14:20:08 +0100
Subject: xen: ignore live parameter from xen-save-devices-state
References: bsc#1079730, bsc#1101982, bsc#1063993
The final step of xl migrate|save for an HVM domU is saving the state of
qemu. This also involves releasing all block devices. While releasing
backends ought to be a separate step, such functionality is not
implemented.
Unfortunately, releasing the block devices depends on the optional
'live' option. This breaks offline migration with 'virsh migrate domU
dom0' because the sending side does not release the disks, as a result
the receiving side can not properly claim write access to the disks.
As a minimal fix, remove the dependency on the 'live' option. Upstream
may fix this in a different way, like removing the newly added 'live'
parameter entirely.
Fixes: 5d6c599fe1 ("migration, xen: Fix block image lock issue on live migration")
Signed-off-by: Olaf Hering <olaf@aepfle.de>
Signed-off-by: Bruce Rogers <brogers@suse.com>
---
migration/savevm.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/migration/savevm.c b/migration/savevm.c
index 48e85c052c2c0197405803b9ef83..58eea0775eaa78d5d0250cdcbcaf 100644
--- a/migration/savevm.c
+++ b/migration/savevm.c
@@ -2950,7 +2950,7 @@ void qmp_xen_save_devices_state(const char *filename, bool has_live, bool live,
* So call bdrv_inactivate_all (release locks) here to let the other
* side of the migration take control of the images.
*/
- if (live && !saved_vm_running) {
+ if (!saved_vm_running) {
ret = bdrv_inactivate_all();
if (ret) {
error_setg(errp, "%s: bdrv_inactivate_all() failed (%d)",

View File

@ -1,49 +0,0 @@
From: Bruce Rogers <brogers@suse.com>
Date: Wed, 9 Mar 2016 15:18:11 -0700
Subject: xen_disk: Add suse specific flush disable handling and map to QEMU
equiv
Add code to read the suse specific suse-diskcache-disable-flush flag out
of xenstore, and set the equivalent flag within QEMU.
Patch taken from Xen's patch queue, Olaf Hering being the original author.
[bsc#879425]
[BR: minor edits to pass qemu's checkpatch script]
[BR: With qdevification of xen-block, code has changed significantly]
Signed-off-by: Bruce Rogers <brogers@suse.com>
Signed-off-by: Olaf Hering <olaf@aepfle.de>
---
hw/block/xen-block.c | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/hw/block/xen-block.c b/hw/block/xen-block.c
index 345b284d70181727f17a64d51bf2..4c7f17c253e97bd747347aca3063 100644
--- a/hw/block/xen-block.c
+++ b/hw/block/xen-block.c
@@ -722,6 +722,8 @@ static XenBlockDrive *xen_block_drive_create(const char *id,
const char *mode = qdict_get_try_str(opts, "mode");
const char *direct_io_safe = qdict_get_try_str(opts, "direct-io-safe");
const char *discard_enable = qdict_get_try_str(opts, "discard-enable");
+ const char *suse_diskcache_disable_flush = qdict_get_try_str(opts,
+ "suse-diskcache-disable-flush");
char *driver = NULL;
char *filename = NULL;
XenBlockDrive *drive = NULL;
@@ -802,6 +804,16 @@ static XenBlockDrive *xen_block_drive_create(const char *id,
}
}
+ if (suse_diskcache_disable_flush) {
+ unsigned long value;
+ if (!qemu_strtoul(suse_diskcache_disable_flush, NULL, 2, &value) && !!value) {
+ QDict *cache_qdict = qdict_new();
+
+ qdict_put_bool(cache_qdict, "no-flush", true);
+ qdict_put_obj(file_layer, "cache", QOBJECT(cache_qdict));
+ }
+ }
+
/*
* It is necessary to turn file locking off as an emulated device
* may have already opened the same image file.