Compare commits
No commits in common. "factory" and "factory" have entirely different histories.
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
||||
.osc
|
@ -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"
|
||||
]
|
||||
}
|
@ -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"
|
||||
]
|
||||
}
|
@ -1 +0,0 @@
|
||||
KERNEL=="kvm", MODE="0666", GROUP="kvm"
|
@ -1 +0,0 @@
|
||||
SUBSYSTEM=="virtio-ports", ATTR{name}=="org.qemu.guest_agent.0", TAG+="systemd", ENV{SYSTEMD_WANTS}+="qemu-ga@virtio\\x2dports-org.qemu.guest_agent.0.service"
|
@ -1,39 +0,0 @@
|
||||
From: Alexander Graf <agraf@suse.de>
|
||||
Date: Wed, 14 Jan 2015 01:32:11 +0100
|
||||
Subject: AIO: Reduce number of threads for 32bit hosts
|
||||
|
||||
On hosts with limited virtual address space (32bit pointers), we can very
|
||||
easily run out of virtual memory with big thread pools.
|
||||
|
||||
Instead, we should limit ourselves to small pools to keep memory footprint
|
||||
low on those systems.
|
||||
|
||||
This patch fixes random VM stalls like
|
||||
|
||||
(process:25114): GLib-ERROR **: gmem.c:103: failed to allocate 1048576 bytes
|
||||
|
||||
on 32bit ARM systems for me.
|
||||
|
||||
Signed-off-by: Alexander Graf <agraf@suse.de>
|
||||
---
|
||||
util/thread-pool.c | 7 ++++++-
|
||||
1 file changed, 6 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/util/thread-pool.c b/util/thread-pool.c
|
||||
index d763cea505b68575af8e1b39cd95..785487b8767d96ca76c643f1851f 100644
|
||||
--- a/util/thread-pool.c
|
||||
+++ b/util/thread-pool.c
|
||||
@@ -306,7 +306,12 @@ static void thread_pool_init_one(ThreadPool *pool, AioContext *ctx)
|
||||
qemu_mutex_init(&pool->lock);
|
||||
qemu_cond_init(&pool->worker_stopped);
|
||||
qemu_sem_init(&pool->sem, 0);
|
||||
- pool->max_threads = 64;
|
||||
+ if (sizeof(pool) == 4) {
|
||||
+ /* 32bit systems run out of virtual memory quickly */
|
||||
+ pool->max_threads = 4;
|
||||
+ } else {
|
||||
+ pool->max_threads = 64;
|
||||
+ }
|
||||
pool->new_thread_bh = aio_bh_new(ctx, spawn_thread_bh_fn, pool);
|
||||
|
||||
QLIST_INIT(&pool->head);
|
@ -1,29 +0,0 @@
|
||||
From: Bruce Rogers <brogers@suse.com>
|
||||
Date: Wed, 23 Jan 2019 20:23:01 -0700
|
||||
Subject: Conditionalize ui bitmap installation better
|
||||
|
||||
Signed-off-by: Bruce Rogers <brogers@suse.com>
|
||||
---
|
||||
Makefile | 2 ++
|
||||
1 file changed, 2 insertions(+)
|
||||
|
||||
diff --git a/Makefile b/Makefile
|
||||
index e7116289550f169a65f8aecfeccf..3da7feaf0d9e9b3f1222efb8823b 100644
|
||||
--- a/Makefile
|
||||
+++ b/Makefile
|
||||
@@ -970,6 +970,7 @@ ifneq ($(DESCS),)
|
||||
"$(DESTDIR)$(qemu_datadir)/firmware/$$x"; \
|
||||
done
|
||||
endif
|
||||
+ifneq ($(or $(CONFIG_GTK),$(CONFIG_SDL)),)
|
||||
for s in $(ICON_SIZES); do \
|
||||
mkdir -p "$(DESTDIR)$(qemu_icondir)/hicolor/$${s}/apps"; \
|
||||
$(INSTALL_DATA) $(SRC_PATH)/ui/icons/qemu_$${s}.png \
|
||||
@@ -984,6 +985,7 @@ endif
|
||||
mkdir -p "$(DESTDIR)$(qemu_desktopdir)"
|
||||
$(INSTALL_DATA) $(SRC_PATH)/ui/qemu.desktop \
|
||||
"$(DESTDIR)$(qemu_desktopdir)/qemu.desktop"
|
||||
+endif
|
||||
ifdef CONFIG_GTK
|
||||
$(MAKE) -C po $@
|
||||
endif
|
@ -1,67 +0,0 @@
|
||||
From: Michael Brown <mcb30@ipxe.org>
|
||||
Date: Mon, 22 Jul 2019 14:51:28 +0100
|
||||
Subject: Do not apply WORKAROUND_CFLAGS for host compiler
|
||||
|
||||
Git-commit: a4f8c6e31f6c62522cfc633bbbffa81b22f9d6f3
|
||||
Include-If: %ifarch aarch64
|
||||
|
||||
The WORKAROUND_CFLAGS list is constructed based on running tests on
|
||||
the target compiler, and the results may not be valid for the host
|
||||
compiler.
|
||||
|
||||
The only relevant workaround required for the host compiler is
|
||||
-Wno-stringop-truncation, which is needed to avoid a spurious compiler
|
||||
warning for a totally correct usage of strncpy() in util/elf2efi.c.
|
||||
|
||||
Duplicating the workaround tests for the host compiler is messy, as is
|
||||
conditionally applying __attribute__((nonstring)). Fix instead by
|
||||
disapplying WORKAROUND_CFLAGS for the host compiler, and using
|
||||
memcpy() with an explicitly calculated length instead of strncpy() in
|
||||
util/elf2efi.c.
|
||||
|
||||
Reported-by: Ignat Korchagin <ignat@cloudflare.com>
|
||||
Reported-by: Christopher Clark <christopher.w.clark@gmail.com>
|
||||
Signed-off-by: Michael Brown <mcb30@ipxe.org>
|
||||
Signed-off-by: Bruce Rogers <brogers@suse.com>
|
||||
---
|
||||
src/Makefile.housekeeping | 2 +-
|
||||
src/util/elf2efi.c | 6 +++++-
|
||||
2 files changed, 6 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/roms/ipxe/src/Makefile.housekeeping b/roms/ipxe/src/Makefile.housekeeping
|
||||
index d94eb1454c9168545c933ec6e900..9c33cc08c4db1bbd0f9966924fce 100644
|
||||
--- a/roms/ipxe/src/Makefile.housekeeping
|
||||
+++ b/roms/ipxe/src/Makefile.housekeeping
|
||||
@@ -455,7 +455,7 @@ endif
|
||||
CFLAGS += $(WORKAROUND_CFLAGS) $(EXTRA_CFLAGS)
|
||||
ASFLAGS += $(WORKAROUND_ASFLAGS) $(EXTRA_ASFLAGS)
|
||||
LDFLAGS += $(WORKAROUND_LDFLAGS) $(EXTRA_LDFLAGS)
|
||||
-HOST_CFLAGS += $(WORKAROUND_CFLAGS) -O2 -g
|
||||
+HOST_CFLAGS += -O2 -g
|
||||
|
||||
# Inhibit -Werror if NO_WERROR is specified on make command line
|
||||
#
|
||||
diff --git a/roms/ipxe/src/util/elf2efi.c b/roms/ipxe/src/util/elf2efi.c
|
||||
index 2c5b9df8aae853bfce4d5d3bae89..bcd53c9afda7880d42ec80c07f17 100644
|
||||
--- a/roms/ipxe/src/util/elf2efi.c
|
||||
+++ b/roms/ipxe/src/util/elf2efi.c
|
||||
@@ -458,6 +458,7 @@ static struct pe_section * process_section ( struct elf_file *elf,
|
||||
struct pe_header *pe_header ) {
|
||||
struct pe_section *new;
|
||||
const char *name;
|
||||
+ size_t name_len;
|
||||
size_t section_memsz;
|
||||
size_t section_filesz;
|
||||
unsigned long code_start;
|
||||
@@ -494,7 +495,10 @@ static struct pe_section * process_section ( struct elf_file *elf,
|
||||
memset ( new, 0, sizeof ( *new ) + section_filesz );
|
||||
|
||||
/* Fill in section header details */
|
||||
- strncpy ( ( char * ) new->hdr.Name, name, sizeof ( new->hdr.Name ) );
|
||||
+ name_len = strlen ( name );
|
||||
+ if ( name_len > sizeof ( new->hdr.Name ) )
|
||||
+ name_len = sizeof ( new->hdr.Name );
|
||||
+ memcpy ( new->hdr.Name, name, name_len );
|
||||
new->hdr.Misc.VirtualSize = section_memsz;
|
||||
new->hdr.VirtualAddress = shdr->sh_addr;
|
||||
new->hdr.SizeOfRawData = section_filesz;
|
@ -1,30 +0,0 @@
|
||||
From: Bruce Rogers <brogers@suse.com>
|
||||
Date: Fri, 1 Nov 2019 19:41:52 -0600
|
||||
Subject: Enable cross compile prefix for C compiler invocation
|
||||
|
||||
Signed-off-by: Bruce Rogers <brogers@suse.com>
|
||||
---
|
||||
Makefile | 5 +++--
|
||||
1 file changed, 3 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/roms/qboot/Makefile b/roms/qboot/Makefile
|
||||
index adbf1b319e4a7bee78e2f95c5e51..cdde20fc37b13a1877668cd20e2f 100644
|
||||
--- a/roms/qboot/Makefile
|
||||
+++ b/roms/qboot/Makefile
|
||||
@@ -1,3 +1,4 @@
|
||||
+CROSS_COMPILE ?=
|
||||
obj-y = code16.o entry.o main.o string.o printf.o cstart.o fw_cfg.o
|
||||
obj-y += linuxboot.o malloc.o tables.o hwsetup.o pci.o code32seg.o
|
||||
obj-y += mptable.o
|
||||
@@ -25,9 +26,9 @@ autodepend-flags = -MMD -MF .deps/cc-$(patsubst %/,%,$(dir $*))-$(notdir $*).d
|
||||
|
||||
.PRECIOUS: %.o
|
||||
%.o: %.c
|
||||
- $(CC) $(CFLAGS) $(BIOS_CFLAGS) $($@-cflags) -c -s $< -o $@
|
||||
+ $(CROSS_COMPILE)$(CC) $(CFLAGS) $(BIOS_CFLAGS) $($@-cflags) -c -s $< -o $@
|
||||
%.o: %.S
|
||||
- $(CC) $(CFLAGS) $(BIOS_CFLAGS) -c -s $< -o $@
|
||||
+ $(CROSS_COMPILE)$(CC) $(CFLAGS) $(BIOS_CFLAGS) -c -s $< -o $@
|
||||
|
||||
bios.bin.elf: $(obj-y) flat.lds
|
||||
$(LD) -T flat.lds -o bios.bin.elf $(obj-y)
|
@ -1,35 +0,0 @@
|
||||
From: Valentine Barshak <gvaxon@gmail.com>
|
||||
Date: Sun, 9 Jun 2019 13:30:11 +0300
|
||||
Subject: Fix "'%s' directive argument is null" error
|
||||
|
||||
Git-commit: 412acd7854de10e7194f362a6b1a3257a17974f7
|
||||
References: bsc#1121464
|
||||
|
||||
Use '%p' directive, and print handle's address if the address is null
|
||||
and the handle doesn't have a name. This fixes the following
|
||||
compilation error:
|
||||
|
||||
interface/efi/efi_debug.c:334:3: error: '%s' directive
|
||||
argument is null [-Werror=format-overflow=]
|
||||
|
||||
Signed-off-by: Valentine Barshak <gvaxon@gmail.com>
|
||||
Signed-off-by: Michael Brown <mcb30@ipxe.org>
|
||||
Signed-off-by: Bruce Rogers <brogers@suse.com>
|
||||
---
|
||||
src/interface/efi/efi_debug.c | 3 +--
|
||||
1 file changed, 1 insertion(+), 2 deletions(-)
|
||||
|
||||
diff --git a/roms/ipxe/src/interface/efi/efi_debug.c b/roms/ipxe/src/interface/efi/efi_debug.c
|
||||
index 8ea0a822d044caca088c64ca2407..de9b1af5579cfddba1b55788b7b6 100644
|
||||
--- a/roms/ipxe/src/interface/efi/efi_debug.c
|
||||
+++ b/roms/ipxe/src/interface/efi/efi_debug.c
|
||||
@@ -331,8 +331,7 @@ void dbg_efi_protocols ( EFI_HANDLE handle ) {
|
||||
|
||||
/* Sanity check */
|
||||
if ( ! handle ) {
|
||||
- printf ( "HANDLE %s could not retrieve protocols\n",
|
||||
- efi_handle_name ( handle ) );
|
||||
+ printf ( "HANDLE %p could not retrieve protocols\n", handle );
|
||||
return;
|
||||
}
|
||||
|
@ -1,131 +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 +++
|
||||
chardev/chardev-sysemu.c | 1 +
|
||||
tests/test-char.c | 1 +
|
||||
6 files changed, 23 insertions(+)
|
||||
|
||||
diff --git a/chardev/char-fe.c b/chardev/char-fe.c
|
||||
index 474715c5a9257ae9e9e286d2e02d..eeb1b3e0b548027e2bcda0c272d5 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 6f980bb83647da13c62f514391b3..094bc6703a3febdf5fefb7c0024f 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"
|
||||
@@ -191,6 +192,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)
|
||||
@@ -325,6 +337,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 77e7ec814f2196d8352e2f3ec75e..bcdec537e8753025b715e75214e6 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 f4d0429763bc28438e6cd6e7de1a..fc6cd39eb2d98af15aec25642438 100644
|
||||
--- a/chardev/chardev-internal.h
|
||||
+++ b/chardev/chardev-internal.h
|
||||
@@ -36,6 +36,9 @@ typedef 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/chardev/chardev-sysemu.c b/chardev/chardev-sysemu.c
|
||||
index eecdc615ee1c6c64060452ac837d..c052f101e89c193af1effa9c6fa5 100644
|
||||
--- a/chardev/chardev-sysemu.c
|
||||
+++ b/chardev/chardev-sysemu.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 "sysemu/sysemu.h"
|
||||
#include "chardev/char.h"
|
||||
diff --git a/tests/test-char.c b/tests/test-char.c
|
||||
index d35cc839bc60db1884c3f265629b..51635ba059ef2302608459e84a65 100644
|
||||
--- a/tests/test-char.c
|
||||
+++ b/tests/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>
|
||||
|
@ -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 95838cbff3f00f1ba097ee032032..d5f6c67bf1f7305461bb536f57b1 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 539ead62b498202fc40b42bff05f..0b7d30eef392cd659dbd722d8bdc 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.
|
@ -1,35 +0,0 @@
|
||||
From: =?UTF-8?q?Stefan=20Br=C3=BCns?= <stefan.bruens@rwth-aachen.de>
|
||||
Date: Mon, 5 Aug 2019 20:03:11 +0000
|
||||
Subject: Make keycode-gen output reproducible (use SOURCE_DATE_EPOCH
|
||||
timestamp)
|
||||
|
||||
Signed-off-by: Bruce Rogers <brogers@suse.com
|
||||
---
|
||||
tools/keymap-gen | 7 ++++++-
|
||||
1 file changed, 6 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/ui/keycodemapdb/tools/keymap-gen b/ui/keycodemapdb/tools/keymap-gen
|
||||
index f0269e3cabf57881bb41e2333143..a374eb255fb3c55b65b475e86461 100755
|
||||
--- a/ui/keycodemapdb/tools/keymap-gen
|
||||
+++ b/ui/keycodemapdb/tools/keymap-gen
|
||||
@@ -20,6 +20,7 @@ except:
|
||||
sys.path.append(os.path.join(os.path.dirname(__file__), "../thirdparty"))
|
||||
import argparse
|
||||
import hashlib
|
||||
+import os
|
||||
import time
|
||||
import sys
|
||||
|
||||
@@ -317,7 +318,11 @@ class LanguageGenerator(object):
|
||||
raise NotImplementedError()
|
||||
|
||||
def generate_header(self, database, args):
|
||||
- today = time.strftime("%Y-%m-%d %H:%M")
|
||||
+ sde = os.getenv("SOURCE_DATE_EPOCH")
|
||||
+ if sde:
|
||||
+ today = time.strftime("%Y-%m-%d %H:%M", time.gmtime(int(sde)))
|
||||
+ else:
|
||||
+ today = time.strftime("%Y-%m-%d %H:%M")
|
||||
self._boilerplate([
|
||||
"This file is auto-generated from keymaps.csv on %s" % today,
|
||||
"Database checksum sha256(%s)" % database.mapchecksum,
|
@ -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>
|
||||
---
|
||||
exec.c | 2 ++
|
||||
1 file changed, 2 insertions(+)
|
||||
|
||||
diff --git a/exec.c b/exec.c
|
||||
index 6f381f98e2a01c432c28c0c094db..0cec6a514147a1b90e2056f3eac4 100644
|
||||
--- a/exec.c
|
||||
+++ b/exec.c
|
||||
@@ -2328,11 +2328,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
|
||||
|
||||
if (phys_mem_alloc != qemu_anon_ram_alloc) {
|
||||
/*
|
242
README.PACKAGING
242
README.PACKAGING
@ -1,74 +1,202 @@
|
||||
The qemu package includes a special maintenance workflow in order to support git
|
||||
based patching. Please use it in order to have changes you make be acceptable to
|
||||
the package maintainers.
|
||||
# PACKAGING WORKFLOW(S)
|
||||
|
||||
Currently a local clone of the upstream repo(s) is required for the packaging
|
||||
workflow. It is anticipated that the need for any extra setup will be reduced or
|
||||
even eliminated entirely in the future, but for now, you will need do so some
|
||||
setup. See config.sh for details.
|
||||
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 qemu.spec.in template, so to make changes
|
||||
to the spec file beyond the patch name generation, patch reference and automated
|
||||
versioning done by the scripts, you need to edit the template. Do not directly
|
||||
edit the spec file. The spec file's version and patch references are added when
|
||||
the update_git.sh script 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
|
||||
queue available in a local git branch named frombundle (see config.sh for the
|
||||
locations). This set of patches comes from a "bundle of git bundles", the
|
||||
bundles.tar.xz file, which is included as a package source file. You will then
|
||||
create an altered patch queue in the branch which corresponds to this release
|
||||
(eg: opensuse-5.0), using the frombundle branch as the starting point for your
|
||||
changes (eg perhaps start by doing git reset --hard frombundle, then cherry-pick
|
||||
upstream patches from there). Once you have the patch queue ready to go run
|
||||
'bash ./update_git.sh git2pkg' which updates the bundles.tar.xz file, as well as
|
||||
the spec and patch files.
|
||||
The reminder of this document provides more details, explanations and examples
|
||||
for both contributors and maintainers.
|
||||
|
||||
The default action for update_git.sh is git2pkg, which helps simplify repeated
|
||||
package updates as you modify the patch queue from the local git repo.
|
||||
|
||||
The maintainer and automation use another workflow mode dealing with packaging
|
||||
the latest upstream qemu. See 'LATEST' references in the scripts for details.
|
||||
# FOR CONTRIBUTORS
|
||||
|
||||
* * * * * * * * *
|
||||
## BACKPORTING AN UPSTREAM PATCH
|
||||
|
||||
Additional Notes:
|
||||
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.
|
||||
|
||||
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.
|
||||
If the backport is related to Bugzilla (or Jira, and/or CVEs, etc) entry, add a
|
||||
reference to that, such as:
|
||||
|
||||
The ability to provide a conditional inclusion of a patch (eg based on
|
||||
architecture, is provided by using the "Include-If:" tag similarly, as follows:
|
||||
Resolves: bsc#123456
|
||||
|
||||
Include-If: %ifarch aarch64
|
||||
Or:
|
||||
|
||||
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
|
||||
|
@ -1,54 +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 4eb9d1f7fd54f27583bfb1ce9407..c6e7530b012db308d0c607ec749d 100644
|
||||
--- a/softmmu/vl.c
|
||||
+++ b/softmmu/vl.c
|
||||
@@ -34,6 +34,7 @@
|
||||
#include "qemu/uuid.h"
|
||||
#include "sysemu/reset.h"
|
||||
#include "sysemu/runstate.h"
|
||||
+#include <sys/resource.h>
|
||||
#include "sysemu/seccomp.h"
|
||||
#include "sysemu/tcg.h"
|
||||
#include "sysemu/xen.h"
|
||||
@@ -2868,6 +2869,7 @@ void qemu_init(int argc, char **argv, char **envp)
|
||||
BlockdevOptionsQueue bdo_queue = QSIMPLEQ_HEAD_INITIALIZER(bdo_queue);
|
||||
QemuPluginList plugin_list = QTAILQ_HEAD_INITIALIZER(plugin_list);
|
||||
int mem_prealloc = 0; /* force preallocation of physical target memory */
|
||||
+ struct rlimit rlimit_as;
|
||||
|
||||
os_set_line_buffering();
|
||||
|
||||
@@ -2879,6 +2881,16 @@ void qemu_init(int argc, char **argv, char **envp)
|
||||
|
||||
qemu_mutex_lock_iothread();
|
||||
|
||||
+ /*
|
||||
+ * 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);
|
||||
+ }
|
||||
+
|
||||
atexit(qemu_run_exit_notifiers);
|
||||
qemu_init_exec_dir(argv[0]);
|
||||
|
@ -1,36 +0,0 @@
|
||||
From: Bruce Rogers <brogers@suse.com>
|
||||
Date: Fri, 3 Nov 2017 11:12:40 -0600
|
||||
Subject: Switch order of libraries for mpath support
|
||||
|
||||
Signed-off-by: Bruce Rogers <brogers@suse.com>
|
||||
---
|
||||
Makefile | 2 +-
|
||||
configure | 2 +-
|
||||
2 files changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/Makefile b/Makefile
|
||||
index 13dd708c4af52df3bc932812fc60..e7116289550f169a65f8aecfeccf 100644
|
||||
--- a/Makefile
|
||||
+++ b/Makefile
|
||||
@@ -613,7 +613,7 @@ fsdev/virtfs-proxy-helper$(EXESUF): fsdev/virtfs-proxy-helper.o fsdev/9p-marshal
|
||||
|
||||
scsi/qemu-pr-helper$(EXESUF): scsi/qemu-pr-helper.o scsi/utils.o $(authz-obj-y) $(crypto-obj-y) $(io-obj-y) $(qom-obj-y) $(COMMON_LDADDS)
|
||||
ifdef CONFIG_MPATH
|
||||
-scsi/qemu-pr-helper$(EXESUF): LIBS += -ludev -lmultipath -lmpathpersist
|
||||
+scsi/qemu-pr-helper$(EXESUF): LIBS += -ludev -lmpathpersist -lmultipath
|
||||
endif
|
||||
|
||||
qemu-img-cmds.h: $(SRC_PATH)/qemu-img-cmds.hx $(SRC_PATH)/scripts/hxtool
|
||||
diff --git a/configure b/configure
|
||||
index 2acc4d1465f8165ae3a238784231..a47fda0fb5267e153a3f1f3ee3bc 100755
|
||||
--- a/configure
|
||||
+++ b/configure
|
||||
@@ -4100,7 +4100,7 @@ int main(void) {
|
||||
return 0;
|
||||
}
|
||||
EOF
|
||||
- if compile_prog "" "-ludev -lmultipath -lmpathpersist" ; then
|
||||
+ if compile_prog "" "-ludev -lmpathpersist -lmultipath" ; then
|
||||
mpathpersist=yes
|
||||
mpathpersist_new_api=yes
|
||||
else
|
@ -1,33 +0,0 @@
|
||||
From: Alexander Graf <agraf@suse.de>
|
||||
Date: Mon, 21 Nov 2011 23:50:36 +0100
|
||||
Subject: XXX dont dump core on sigabort
|
||||
|
||||
Signed-off-by: Bruce Rogers <brogers@suse.com>
|
||||
---
|
||||
linux-user/signal.c | 6 ++++++
|
||||
1 file changed, 6 insertions(+)
|
||||
|
||||
diff --git a/linux-user/signal.c b/linux-user/signal.c
|
||||
index 8cf51ffecde659742b7aac6dfaae..08cb813a8a1782ed4b845d716ce2 100644
|
||||
--- a/linux-user/signal.c
|
||||
+++ b/linux-user/signal.c
|
||||
@@ -632,6 +632,10 @@ static void QEMU_NORETURN dump_core_and_abort(int target_sig)
|
||||
trace_user_force_sig(env, target_sig, host_sig);
|
||||
gdb_signalled(env, target_sig);
|
||||
|
||||
+ if (target_sig == 6) {
|
||||
+ goto no_core;
|
||||
+ }
|
||||
+
|
||||
/* dump core if supported by target binary format */
|
||||
if (core_dump_signal(target_sig) && (ts->bprm->core_dump != NULL)) {
|
||||
stop_all_tasks();
|
||||
@@ -649,6 +653,8 @@ static void QEMU_NORETURN dump_core_and_abort(int target_sig)
|
||||
target_sig, strsignal(host_sig), "core dumped" );
|
||||
}
|
||||
|
||||
+no_core:
|
||||
+
|
||||
/* The proper exit code for dying from an uncaught signal is
|
||||
* -<signal>. The kernel doesn't allow exit() or _exit() to pass
|
||||
* a negative value. To get the proper exit code we need to
|
36
_constraints
36
_constraints
@ -1,29 +1,15 @@
|
||||
<constraints>
|
||||
<!-- All builds are fine with 9GB disk -->
|
||||
<overwrite>
|
||||
<conditions>
|
||||
<package>qemu</package>
|
||||
<package>qemu:linux-user</package>
|
||||
<package>qemu:testsuite</package>
|
||||
<package>qemu:qemu-linux-user</package>
|
||||
</conditions>
|
||||
<hardware>
|
||||
<disk>
|
||||
<size unit="G">9</size>
|
||||
<size unit="G">13</size>
|
||||
</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 +22,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 +40,7 @@
|
||||
<overwrite>
|
||||
<conditions>
|
||||
<arch>ppc64</arch>
|
||||
<package>qemu:testsuite</package>
|
||||
<package>qemu</package>
|
||||
</conditions>
|
||||
<hardware>
|
||||
<memory>
|
||||
@ -73,4 +59,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>
|
||||
|
@ -1,4 +1,3 @@
|
||||
<multibuild>
|
||||
<package>linux-user</package>
|
||||
<package>testsuite</package>
|
||||
<package>qemu-linux-user</package>
|
||||
</multibuild>
|
||||
|
22
_service
Normal file
22
_service
Normal 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
4
_servicedata
Normal file
@ -0,0 +1,4 @@
|
||||
<servicedata>
|
||||
<service name="tar_scm">
|
||||
<param name="url">https://github.com/opensuse/qemu.git</param>
|
||||
<param name="changesrevision">d6950a38c1c779c678bd1f64e8685ddf7af43e53</param></service></servicedata>
|
@ -1,30 +0,0 @@
|
||||
From: =?UTF-8?q?Andreas=20F=C3=A4rber?= <afaerber@suse.de>
|
||||
Date: Wed, 31 Jul 2013 17:32:35 +0200
|
||||
Subject: acpi_piix4: Fix migration from SLE11 SP2
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
References: bnc#812836
|
||||
|
||||
qemu-kvm 0.15 uses the same GPE format as qemu 1.4, but as version 2
|
||||
rather than 3.
|
||||
|
||||
Signed-off-by: Andreas Färber <afaerber@suse.de>
|
||||
---
|
||||
hw/acpi/piix4.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/hw/acpi/piix4.c b/hw/acpi/piix4.c
|
||||
index 26bac4f16c18a7d32b3821e5e3e6..81c2a3410319e6236c1a09b07bb1 100644
|
||||
--- a/hw/acpi/piix4.c
|
||||
+++ b/hw/acpi/piix4.c
|
||||
@@ -275,7 +275,7 @@ static bool piix4_vmstate_need_smbus(void *opaque, int version_id)
|
||||
static const VMStateDescription vmstate_acpi = {
|
||||
.name = "piix4_pm",
|
||||
.version_id = 3,
|
||||
- .minimum_version_id = 3,
|
||||
+ .minimum_version_id = 2, /* qemu-kvm */
|
||||
.post_load = vmstate_acpi_post_load,
|
||||
.fields = (VMStateField[]) {
|
||||
VMSTATE_PCI_DEVICE(parent_obj, PIIX4PMState),
|
11
bridge.conf
11
bridge.conf
@ -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.
|
@ -1,30 +0,0 @@
|
||||
From: Bruce Rogers <brogers@suse.com>
|
||||
Date: Wed, 6 May 2020 15:03:02 -0600
|
||||
Subject: [build] Be explicit about -fcommon compiler directive
|
||||
|
||||
Git-commit: f982a712979619dbae2c6e0d741757e2ce94be11
|
||||
References: boo#1171140
|
||||
|
||||
gcc10 switched default behavior from -fcommon to -fno-common. Since
|
||||
"__shared" relies on the legacy behavior, explicitly specify it.
|
||||
|
||||
Signed-off-by: Bruce Rogers <brogers@suse.com>
|
||||
Modified-by: Michael Brown <mcb30@ipxe.org>
|
||||
Signed-off-by: Michael Brown <mcb30@ipxe.org>
|
||||
Signed-off-by: Bruce Rogers <brogers@suse.com>
|
||||
---
|
||||
src/Makefile.housekeeping | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/roms/ipxe/src/Makefile.housekeeping b/roms/ipxe/src/Makefile.housekeeping
|
||||
index 4b09e81f0b1eb82e79f6af11986d..f6f3e29248d3e59b76de690aeb0c 100644
|
||||
--- a/roms/ipxe/src/Makefile.housekeeping
|
||||
+++ b/roms/ipxe/src/Makefile.housekeeping
|
||||
@@ -422,6 +422,7 @@ CFLAGS += -Os
|
||||
CFLAGS += -g
|
||||
ifeq ($(CCTYPE),gcc)
|
||||
CFLAGS += -ffreestanding
|
||||
+CFLAGS += -fcommon
|
||||
CFLAGS += -Wall -W -Wformat-nonliteral
|
||||
HOST_CFLAGS += -Wall -W -Wformat-nonliteral
|
||||
endif
|
@ -1,55 +0,0 @@
|
||||
From: Valentine Barshak <gvaxon@gmail.com>
|
||||
Date: Mon, 22 Jul 2019 10:47:50 +0100
|
||||
Subject: [build] Workaround compilation error with gcc 9.1
|
||||
|
||||
Git-commit: 1dd56dbd11082fb622c2ed21cfaced4f47d798a6
|
||||
References: bsc#1121464
|
||||
Include-If: %if 0%{?suse_version} > 1500 && 0%{?is_opensuse}
|
||||
|
||||
Compiling with gcc 9.1 generates lots of "taking address of packed
|
||||
member of ... may result in an unaligned pointer value" warnings.
|
||||
|
||||
Some of these warnings are genuine, and indicate correctly that parts
|
||||
of iPXE currently require the CPU (or runtime environment) to support
|
||||
unaligned accesses. For example: the TCP/IP receive data path will
|
||||
attempt to access 32-bit fields that may not be aligned to a 32-bit
|
||||
boundary.
|
||||
|
||||
Other warnings are either spurious (such as when the pointer is to a
|
||||
variable-length byte array, which can have no alignment requirement
|
||||
anyway) or unhelpful (such as when the pointer is used solely to
|
||||
provide a debug colour value for the DBGC() macro).
|
||||
|
||||
There appears to be no easy way to silence the spurious warnings.
|
||||
Since the ability to perform unaligned accesses is already a
|
||||
requirement for iPXE, work around the problem by silencing this class
|
||||
of warnings.
|
||||
|
||||
Signed-off-by: Valentine Barshak <gvaxon@gmail.com>
|
||||
Modified-by: Michael Brown <mcb30@ipxe.org>
|
||||
Signed-off-by: Michael Brown <mcb30@ipxe.org>
|
||||
Signed-off-by: Bruce Rogers <brogers@suse.com>
|
||||
---
|
||||
src/Makefile.housekeeping | 9 +++++++++
|
||||
1 file changed, 9 insertions(+)
|
||||
|
||||
diff --git a/roms/ipxe/src/Makefile.housekeeping b/roms/ipxe/src/Makefile.housekeeping
|
||||
index f8334921b8b93cbd03f0a0de9910..4b09e81f0b1eb82e79f6af11986d 100644
|
||||
--- a/roms/ipxe/src/Makefile.housekeeping
|
||||
+++ b/roms/ipxe/src/Makefile.housekeeping
|
||||
@@ -185,6 +185,15 @@ WNST_TEST = $(CC) -Wstringop-truncation -x c -c /dev/null -o /dev/null \
|
||||
>/dev/null 2>&1
|
||||
WNST_FLAGS := $(shell $(WNST_TEST) && $(ECHO) '-Wno-stringop-truncation')
|
||||
WORKAROUND_CFLAGS += $(WNST_FLAGS)
|
||||
+
|
||||
+# gcc 9.1 generates warnings for taking address of packed member which
|
||||
+# may result in an unaligned pointer value. Inhibit the warnings.
|
||||
+#
|
||||
+WNAPM_TEST = $(CC) -Wno-address-of-packed-member -x c -c /dev/null \
|
||||
+ -o /dev/null >/dev/null 2>&1
|
||||
+WNAPM_FLAGS := $(shell $(WNAPM_TEST) && \
|
||||
+ $(ECHO) '-Wno-address-of-packed-member')
|
||||
+WORKAROUND_CFLAGS += $(WNAPM_FLAGS)
|
||||
endif
|
||||
|
||||
# Some versions of gas choke on division operators, treating them as
|
@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:538acceeee5a8882a1bacc0a4601a05e402922c18bec4609c6491796073f8556
|
||||
size 44000
|
257
common.inc
Normal file
257
common.inc
Normal file
@ -0,0 +1,257 @@
|
||||
%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
|
||||
|
||||
%ifarch %ix86 x86_64
|
||||
%bcond_without vmsr_helper
|
||||
%else
|
||||
%define vmsr_helper 0
|
||||
%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.
|
||||
|
||||
%define disable_everything \\\
|
||||
--audio-drv-list= \\\
|
||||
--disable-af-xdp \\\
|
||||
--disable-alsa \\\
|
||||
--disable-attr \\\
|
||||
--disable-auth-pam \\\
|
||||
--disable-avx2 \\\
|
||||
--disable-avx512bw \\\
|
||||
--disable-blkio \\\
|
||||
--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-colo-proxy \\\
|
||||
--disable-coreaudio \\\
|
||||
--disable-coroutine-pool \\\
|
||||
--disable-crypto-afalg \\\
|
||||
--disable-curl \\\
|
||||
--disable-curses \\\
|
||||
--disable-dbus-display \\\
|
||||
--disable-debug-graph-lock \\\
|
||||
--disable-debug-info \\\
|
||||
--disable-debug-mutex \\\
|
||||
--disable-debug-remap \\\
|
||||
--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-gtk-clipboard \\\
|
||||
--disable-guest-agent \\\
|
||||
--disable-guest-agent-msi \\\
|
||||
--disable-hv-balloon \\\
|
||||
--disable-hvf \\\
|
||||
--disable-iconv \\\
|
||||
--disable-jack \\\
|
||||
--disable-kvm \\\
|
||||
--disable-l2tpv3 \\\
|
||||
--disable-libdaxctl \\\
|
||||
--disable-libdw \\\
|
||||
--disable-libiscsi \\\
|
||||
--disable-libkeyutils \\\
|
||||
--disable-libkeyutils \\\
|
||||
--disable-libnfs \\\
|
||||
--disable-libpmem \\\
|
||||
--disable-libssh \\\
|
||||
--disable-libudev \\\
|
||||
--disable-libusb \\\
|
||||
--disable-linux-aio \\\
|
||||
--disable-linux-io-uring \\\
|
||||
--disable-linux-user \\\
|
||||
--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-qcow1 \\\
|
||||
--disable-qed \\\
|
||||
--disable-qom-cast-debug \\\
|
||||
--disable-qpl \\\
|
||||
--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-sndio \\\
|
||||
--disable-sparse \\\
|
||||
--disable-spice \\\
|
||||
--disable-spice-protocol \\\
|
||||
--disable-strip \\\
|
||||
--disable-system \\\
|
||||
--disable-tcg \\\
|
||||
--disable-tcg-interpreter \\\
|
||||
--disable-tools \\\
|
||||
--disable-tpm \\\
|
||||
--disable-tsan \\\
|
||||
--disable-u2f \\\
|
||||
--disable-uadk \\\
|
||||
--disable-usb-redir \\\
|
||||
--disable-user \\\
|
||||
--disable-vde \\\
|
||||
--disable-vdi \\\
|
||||
--disable-vhdx \\\
|
||||
--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-vpc \\\
|
||||
--disable-vte \\\
|
||||
--disable-vvfat \\\
|
||||
--disable-werror \\\
|
||||
--disable-whpx \\\
|
||||
--disable-xen \\\
|
||||
--disable-xen-pci-passthrough \\\
|
||||
--disable-xkbcommon \\\
|
||||
--disable-zstd \\\
|
||||
--without-default-devices
|
110
config.sh
110
config.sh
@ -1,110 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
# config.sh:
|
||||
|
||||
# The next few VARIABLES are to be edited as required:
|
||||
|
||||
# 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=v5.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=0
|
||||
|
||||
# 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
|
||||
|
||||
# Temporary directories used by this script
|
||||
GIT_DIR=/dev/shm/qemu-factory-git-dir
|
||||
CMP_DIR=/dev/shm/qemu-factory-cmp-dir
|
||||
BUNDLE_DIR=/dev/shm/qemu-factory-bundle-dir
|
||||
|
||||
# For the following, use 1 or 0 as needed
|
||||
NUMBERED_PATCHES=0
|
||||
|
||||
PATCH_RANGE=1000
|
||||
REPO_COUNT=26
|
||||
|
||||
# Perhaps we need to instead use the terminal local dirname as the index
|
||||
# and store the ~/git/ as a separate VARIABLE
|
||||
# This way, we only have one big array instead of two
|
||||
# BUT STILL WE NEED TO START WITH THE DATA STORED SOMEWHERE!!!!!!
|
||||
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-tests-berkeley-softfloat-3
|
||||
~/git/qemu-tests-berkeley-testfloat-3
|
||||
~/git/qemu-edk2-berkeley-softfloat-3
|
||||
~/git/qemu-edk2-openssl-boringssl
|
||||
~/git/qemu-edk2-openssl-krb5
|
||||
~/git/qemu-edk2-openssl-pyca-cryptography
|
||||
)
|
||||
|
||||
# TEMPORARY! FOR NOW WE REQUIRE THESE LOCALLY TO DO WORK ON PACKAGE
|
||||
REQUIRED_LOCAL_REPO_MAP=(
|
||||
~/git/qemu-opensuse
|
||||
~/git/qemu-seabios
|
||||
~/git/qemu-ipxe
|
||||
~/git/qemu-sgabios
|
||||
~/git/qemu-keycodemapdb
|
||||
~/git/qemu-qboot
|
||||
)
|
||||
|
||||
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/"
|
||||
"tests/fp/berkeley-softfloat-3/"
|
||||
"tests/fp/berkeley-testfloat-3/"
|
||||
"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/"
|
||||
)
|
||||
|
||||
# Zero based numbering, so we subtract 1 here:
|
||||
if (( (REPO_COUNT * PATCH_RANGE) - 1 > 9999 )); then
|
||||
FIVE_DIGIT_POTENTIAL=1
|
||||
else
|
||||
FIVE_DIGIT_POTENTIAL=0
|
||||
fi
|
@ -1,26 +0,0 @@
|
||||
From: Bruce Rogers <brogers@suse.com>
|
||||
Date: Tue, 28 May 2019 14:23:37 -0600
|
||||
Subject: configure: only populate roms if softmmu
|
||||
|
||||
Currently roms are mistakenly getting built in a linux-user only
|
||||
configuration. Add check for softmmu in all places where our list of
|
||||
roms is being added to.
|
||||
|
||||
Signed-off-by: Bruce Rogers <brogers@suse.com>
|
||||
---
|
||||
configure | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/configure b/configure
|
||||
index a47fda0fb5267e153a3f1f3ee3bc..3b3c5dc2f93b87a91d247079f4c8 100755
|
||||
--- a/configure
|
||||
+++ b/configure
|
||||
@@ -6770,7 +6770,7 @@ if { test "$cpu" = "i386" || test "$cpu" = "x86_64"; } && \
|
||||
fi
|
||||
|
||||
# Only build s390-ccw bios if we're on s390x and the compiler has -march=z900
|
||||
-if test "$cpu" = "s390x" ; then
|
||||
+if test "$cpu" = "s390x" && test "$softmmu" = yes ; then
|
||||
write_c_skeleton
|
||||
if compile_prog "-march=z900" ""; then
|
||||
roms="$roms s390-ccw"
|
@ -1,32 +0,0 @@
|
||||
From: Bruce Rogers <brogers@suse.com>
|
||||
Date: Fri, 17 Apr 2020 13:07:37 -0600
|
||||
Subject: configure: remove $pkgversion from CONFIG_STAMP input to broaden
|
||||
compatibility
|
||||
|
||||
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>
|
||||
---
|
||||
configure | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/configure b/configure
|
||||
index 3b3c5dc2f93b87a91d247079f4c8..4340229b47a3294307a08df3339e 100755
|
||||
--- a/configure
|
||||
+++ b/configure
|
||||
@@ -7229,7 +7229,7 @@ fi
|
||||
if test "$modules" = "yes"; then
|
||||
# $shacmd can generate a hash started with digit, which the compiler doesn't
|
||||
# like as an symbol. So prefix it with an underscore
|
||||
- echo "CONFIG_STAMP=_$( (echo $qemu_version; echo $pkgversion; cat $0) | $shacmd - | cut -f1 -d\ )" >> $config_host_mak
|
||||
+ echo "CONFIG_STAMP=_$( (echo $qemu_version; cat $0) | $shacmd - | cut -f1 -d\ )" >> $config_host_mak
|
||||
echo "CONFIG_MODULES=y" >> $config_host_mak
|
||||
fi
|
||||
if test "$module_upgrades" = "yes"; then
|
@ -1,27 +0,0 @@
|
||||
From: Bruce Rogers <brogers@suse.com>
|
||||
Date: Tue, 28 Apr 2020 09:53:49 -0600
|
||||
Subject: docs: add SUSE support statements to html docs
|
||||
|
||||
Include-If: %if %{legacy_qemu_kvm} && 0%{?is_opensuse} == 0
|
||||
|
||||
We can fairly easily produce an html version of our support statements.
|
||||
Now that qemu includes fairly good html-based documentation, leverage it
|
||||
to expose our SUSE specific in-package support documentation.
|
||||
|
||||
Signed-off-by: Bruce Rogers <brogers@suse.com>
|
||||
---
|
||||
docs/index.html.in | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/docs/index.html.in b/docs/index.html.in
|
||||
index 6736fa4360cfb8c40cbab2a362b0..ad431321ee858bcbe3e237e687b5 100644
|
||||
--- a/docs/index.html.in
|
||||
+++ b/docs/index.html.in
|
||||
@@ -7,6 +7,7 @@
|
||||
<body>
|
||||
<h1>QEMU @@VERSION@@ Documentation</h1>
|
||||
<ul>
|
||||
+ <li><a href="/usr/share/doc/packages/qemu-kvm/kvm-supported.html">SUSE Support Statements</a></li>
|
||||
<li><a href="system/index.html">System Emulation User's Guide</a></li>
|
||||
<li><a href="user/index.html">User Mode Emulation User's Guide</a></li>
|
||||
<li><a href="tools/index.html">Tools Guide</a></li>
|
@ -1,62 +0,0 @@
|
||||
From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= <berrange@redhat.com>
|
||||
Date: Tue, 14 Jul 2020 17:26:59 +0100
|
||||
Subject: docs: fix trace docs build with sphinx 3.1.1
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Git-commit: 0000000000000000000000000000000000000000
|
||||
Include-If: %if 0%{?suse_version} > 1500
|
||||
|
||||
In Fedora 33 rawhide, we now have sphinx 3.1.1, as opposed
|
||||
to previous 2.2.2. This new version generates a warning on
|
||||
the source:
|
||||
|
||||
docs/qemu-option-trace.rst.inc:4:Malformed option description
|
||||
'[enable=]PATTERN', should look like "opt", "-opt args",
|
||||
"--opt args", "/opt args" or "+opt args"
|
||||
|
||||
This turns into an error when QEMU passes -W to sphinx-build
|
||||
|
||||
Strangely the previous 2.2.2 code has the exact same logic
|
||||
for checking the syntax, but it is not being triggered. While
|
||||
it is only complaining about the first option, I changed all
|
||||
the options to give consistency.
|
||||
|
||||
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
|
||||
Signed-off-by: Bruce Rogers <brogers@suse.com>
|
||||
---
|
||||
docs/qemu-option-trace.rst.inc | 6 +++---
|
||||
1 file changed, 3 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/docs/qemu-option-trace.rst.inc b/docs/qemu-option-trace.rst.inc
|
||||
index 7e09773a9c518f6a47e9262b66c6..e79b0b43fcb3f5a05ad281109e6f 100644
|
||||
--- a/docs/qemu-option-trace.rst.inc
|
||||
+++ b/docs/qemu-option-trace.rst.inc
|
||||
@@ -1,7 +1,7 @@
|
||||
|
||||
Specify tracing options.
|
||||
|
||||
-.. option:: [enable=]PATTERN
|
||||
+.. option:: -trace [enable=]PATTERN
|
||||
|
||||
Immediately enable events matching *PATTERN*
|
||||
(either event name or a globbing pattern). This option is only
|
||||
@@ -11,7 +11,7 @@ Specify tracing options.
|
||||
|
||||
Use :option:`-trace help` to print a list of names of trace points.
|
||||
|
||||
-.. option:: events=FILE
|
||||
+.. option:: -trace events=FILE
|
||||
|
||||
Immediately enable events listed in *FILE*.
|
||||
The file must contain one event name (as listed in the ``trace-events-all``
|
||||
@@ -19,7 +19,7 @@ Specify tracing options.
|
||||
available if QEMU has been compiled with the ``simple``, ``log`` or
|
||||
``ftrace`` tracing backend.
|
||||
|
||||
-.. option:: file=FILE
|
||||
+.. option:: -trace file=FILE
|
||||
|
||||
Log output traces to *FILE*.
|
||||
This option is only available if QEMU has been compiled with
|
@ -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 edb83b7a1c77f7bb75c371330b2c..74a01853f26458d94d4a4e056b7b 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
|
@ -1,52 +0,0 @@
|
||||
From: Bruce Rogers <brogers@suse.com>
|
||||
Date: Fri, 1 Nov 2019 19:32:57 -0600
|
||||
Subject: ensure headers included are compatible with freestanding mode
|
||||
|
||||
Certain standard headers are designated for use in freestanding mode
|
||||
while others are prohibited. To conform to these rules, use <stdint.h>
|
||||
instead of <inttypes.h> as well as switch one <string.h> reference to
|
||||
the "string.h" implemented in project.
|
||||
|
||||
Signed-off-by: Bruce Rogers <brogers@suse.com>
|
||||
---
|
||||
include/bios.h | 2 +-
|
||||
malloc.c | 2 +-
|
||||
pci.c | 2 +-
|
||||
3 files changed, 3 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/roms/qboot/include/bios.h b/roms/qboot/include/bios.h
|
||||
index f36638b977864c220bf3ed9a612f..7f8f677671d7b47e7c07f800646c 100644
|
||||
--- a/roms/qboot/include/bios.h
|
||||
+++ b/roms/qboot/include/bios.h
|
||||
@@ -1,7 +1,7 @@
|
||||
#ifndef BIOS_H_
|
||||
#define BIOS_H_
|
||||
|
||||
-#include <inttypes.h>
|
||||
+#include <stdint.h>
|
||||
#include <stddef.h>
|
||||
#include <stdbool.h>
|
||||
|
||||
diff --git a/roms/qboot/malloc.c b/roms/qboot/malloc.c
|
||||
index 8738373b774358425b2767fc7e9f..bd0ac0f23ee1e3c4a8f5e003ff1d 100644
|
||||
--- a/roms/qboot/malloc.c
|
||||
+++ b/roms/qboot/malloc.c
|
||||
@@ -1,4 +1,4 @@
|
||||
-#include <inttypes.h>
|
||||
+#include <stdint.h>
|
||||
#include "string.h"
|
||||
#include "bios.h"
|
||||
|
||||
diff --git a/roms/qboot/pci.c b/roms/qboot/pci.c
|
||||
index 65c9e81793ab7aad9b5d1679e78e..63ebda6a0580463ea2b562317cec 100644
|
||||
--- a/roms/qboot/pci.c
|
||||
+++ b/roms/qboot/pci.c
|
||||
@@ -1,7 +1,7 @@
|
||||
#include "bios.h"
|
||||
#include "ioport.h"
|
||||
#include "pci.h"
|
||||
-#include <string.h>
|
||||
+#include "string.h"
|
||||
|
||||
static uint16_t addend;
|
||||
static uint8_t bus, bridge_head;
|
@ -1,43 +0,0 @@
|
||||
From: Michael Brown <mcb30@ipxe.org>
|
||||
Date: Sat, 27 Jun 2020 20:43:32 +0100
|
||||
Subject: [golan] Add explicit type casts for nodnic_queue_pair_type
|
||||
|
||||
Git-commit: 8a1d66c7aec020f3e90254ed2fa55ecd9494fcc3
|
||||
References: boo#1171139
|
||||
|
||||
GCC 10 emits warnings for implicit conversions of enumerated types.
|
||||
|
||||
The flexboot_nodnic code defines nodnic_queue_pair_type with values
|
||||
identical to those of ib_queue_pair_type, and implicitly casts between
|
||||
them. Add an explicit cast to fix the warning.
|
||||
|
||||
Signed-off-by: Michael Brown <mcb30@ipxe.org>
|
||||
Signed-off-by: Bruce Rogers <brogers@suse.com>
|
||||
---
|
||||
src/drivers/infiniband/flexboot_nodnic.c | 6 ++++--
|
||||
1 file changed, 4 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/roms/ipxe/src/drivers/infiniband/flexboot_nodnic.c b/roms/ipxe/src/drivers/infiniband/flexboot_nodnic.c
|
||||
index c13fcefc56866da67d701baa96b8..4463bb78458cbeadd962ed7909ef 100644
|
||||
--- a/roms/ipxe/src/drivers/infiniband/flexboot_nodnic.c
|
||||
+++ b/roms/ipxe/src/drivers/infiniband/flexboot_nodnic.c
|
||||
@@ -365,7 +365,8 @@ static int flexboot_nodnic_create_qp ( struct ib_device *ibdev,
|
||||
goto qp_alloc_err;
|
||||
}
|
||||
|
||||
- status = nodnic_port_create_qp(&port->port_priv, qp->type,
|
||||
+ status = nodnic_port_create_qp(&port->port_priv,
|
||||
+ (nodnic_queue_pair_type) qp->type,
|
||||
qp->send.num_wqes * sizeof(struct nodnic_send_wqbb),
|
||||
qp->send.num_wqes,
|
||||
qp->recv.num_wqes * sizeof(struct nodnic_recv_wqe),
|
||||
@@ -406,7 +407,8 @@ static void flexboot_nodnic_destroy_qp ( struct ib_device *ibdev,
|
||||
struct flexboot_nodnic_port *port = &flexboot_nodnic->port[ibdev->port - 1];
|
||||
struct flexboot_nodnic_queue_pair *flexboot_nodnic_qp = ib_qp_get_drvdata ( qp );
|
||||
|
||||
- nodnic_port_destroy_qp(&port->port_priv, qp->type,
|
||||
+ nodnic_port_destroy_qp(&port->port_priv,
|
||||
+ (nodnic_queue_pair_type) qp->type,
|
||||
flexboot_nodnic_qp->nodnic_queue_pair);
|
||||
|
||||
free(flexboot_nodnic_qp);
|
@ -1,26 +0,0 @@
|
||||
From: Jon Doron <arilou@gmail.com>
|
||||
Date: Wed, 15 Jul 2020 11:43:26 +0300
|
||||
Subject: hw: hyperv: vmbus: Fix 32bit compilation
|
||||
|
||||
Git-commit: 0000000000000000000000000000000000000000
|
||||
|
||||
Signed-off-by: Jon Doron <arilou@gmail.com>
|
||||
Signed-off-by: Bruce Rogers <brogers@suse.com>
|
||||
---
|
||||
hw/hyperv/vmbus.c | 3 ++-
|
||||
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/hw/hyperv/vmbus.c b/hw/hyperv/vmbus.c
|
||||
index 34392e892af6228f270ec327563e..c28bb4201be449eb6dae4b0e0218 100644
|
||||
--- a/hw/hyperv/vmbus.c
|
||||
+++ b/hw/hyperv/vmbus.c
|
||||
@@ -383,7 +383,8 @@ static ssize_t gpadl_iter_io(GpadlIter *iter, void *buf, uint32_t len)
|
||||
}
|
||||
}
|
||||
|
||||
- p = (void *)(((uintptr_t)iter->map & TARGET_PAGE_MASK) | off_in_page);
|
||||
+ p = (void *)(uintptr_t)(((uintptr_t)iter->map & TARGET_PAGE_MASK) |
|
||||
+ off_in_page);
|
||||
if (iter->dir == DMA_DIRECTION_FROM_DEVICE) {
|
||||
memcpy(p, buf, cplen);
|
||||
} else {
|
@ -1,57 +0,0 @@
|
||||
From: Bruce Rogers <brogers@suse.com>
|
||||
Date: Wed, 15 May 2019 13:32:01 -0600
|
||||
Subject: hw/intc/exynos4210_gic: provide more room when formatting alias names
|
||||
|
||||
sprintf related parameter validation complains about the size of the
|
||||
buffer being written to in exynos4210_gic_realize(). Provide a bit more
|
||||
space to avoid the following warning:
|
||||
/home/abuild/rpmbuild/BUILD/qemu-4.0.0/hw/intc/exynos4210_gic.c: In function 'exynos4210_gic_realize':
|
||||
/home/abuild/rpmbuild/BUILD/qemu-4.0.0/hw/intc/exynos4210_gic.c:316:36: error: '%x' directive writing between 1 and 7 bytes into a region of size between 4 and 28 [-Werror=format-overflow=]
|
||||
316 | sprintf(cpu_alias_name, "%s%x", cpu_prefix, i);
|
||||
| ^~
|
||||
/home/abuild/rpmbuild/BUILD/qemu-4.0.0/hw/intc/exynos4210_gic.c:316:33: note: directive argument in the range [0, 29020050]
|
||||
316 | sprintf(cpu_alias_name, "%s%x", cpu_prefix, i);
|
||||
| ^~~~~~
|
||||
In file included from /usr/include/stdio.h:867,
|
||||
from /home/abuild/rpmbuild/BUILD/qemu-4.0.0/include/qemu/osdep.h:99,
|
||||
from /home/abuild/rpmbuild/BUILD/qemu-4.0.0/hw/intc/exynos4210_gic.c:23:
|
||||
/usr/include/bits/stdio2.h:36:10: note: '__builtin___sprintf_chk' output between 2 and 32 bytes into a destination of size 28
|
||||
36 | return __builtin___sprintf_chk (__s, __USE_FORTIFY_LEVEL - 1,
|
||||
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
37 | __bos (__s), __fmt, __va_arg_pack ());
|
||||
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
/home/abuild/rpmbuild/BUILD/qemu-4.0.0/hw/intc/exynos4210_gic.c:326:37: error: '%x' directive writing between 1 and 7 bytes into a region of size between 3 and 28 [-Werror=format-overflow=]
|
||||
326 | sprintf(dist_alias_name, "%s%x", dist_prefix, i);
|
||||
| ^~
|
||||
/home/abuild/rpmbuild/BUILD/qemu-4.0.0/hw/intc/exynos4210_gic.c:326:34: note: directive argument in the range [0, 29020050]
|
||||
326 | sprintf(dist_alias_name, "%s%x", dist_prefix, i);
|
||||
| ^~~~~~
|
||||
In file included from /usr/include/stdio.h:867,
|
||||
from /home/abuild/rpmbuild/BUILD/qemu-4.0.0/include/qemu/osdep.h:99,
|
||||
from /home/abuild/rpmbuild/BUILD/qemu-4.0.0/hw/intc/exynos4210_gic.c:23:
|
||||
/usr/include/bits/stdio2.h:36:10: note: '__builtin___sprintf_chk' output between 2 and 33 bytes into a destination of size 28
|
||||
36 | return __builtin___sprintf_chk (__s, __USE_FORTIFY_LEVEL - 1,
|
||||
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
37 | __bos (__s), __fmt, __va_arg_pack ());
|
||||
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Signed-off-by: Bruce Rogers <brogers@suse.com>
|
||||
---
|
||||
hw/intc/exynos4210_gic.c | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/hw/intc/exynos4210_gic.c b/hw/intc/exynos4210_gic.c
|
||||
index 0aa3b843a9e045348b719cb4b8a4..83506dda3c9142350319d7f4dd5c 100644
|
||||
--- a/hw/intc/exynos4210_gic.c
|
||||
+++ b/hw/intc/exynos4210_gic.c
|
||||
@@ -291,8 +291,8 @@ static void exynos4210_gic_realize(DeviceState *dev, Error **errp)
|
||||
SysBusDevice *sbd = SYS_BUS_DEVICE(obj);
|
||||
const char cpu_prefix[] = "exynos4210-gic-alias_cpu";
|
||||
const char dist_prefix[] = "exynos4210-gic-alias_dist";
|
||||
- char cpu_alias_name[sizeof(cpu_prefix) + 3];
|
||||
- char dist_alias_name[sizeof(cpu_prefix) + 3];
|
||||
+ char cpu_alias_name[sizeof(cpu_prefix) + 7];
|
||||
+ char dist_alias_name[sizeof(cpu_prefix) + 8];
|
||||
SysBusDevice *gicbusdev;
|
||||
uint32_t n = s->num_cpu;
|
||||
uint32_t i;
|
@ -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 f56082690437df2962681ea823d3..4ad74efc8e764429b5567c91d7ed 100644
|
||||
--- a/hw/smbios/smbios.c
|
||||
+++ b/hw/smbios/smbios.c
|
||||
@@ -962,6 +962,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;
|
||||
@@ -974,11 +975,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);
|
||||
|
||||
@@ -993,6 +1004,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) {
|
||||
@@ -1013,6 +1037,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);
|
@ -1,45 +0,0 @@
|
||||
From: Alistair Francis <Alistair.Francis@wdc.com>
|
||||
Date: Sat, 4 May 2019 07:58:55 -0600
|
||||
Subject: hw/usb/dev-mtp: Fix GCC 9 build warning
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Fix this warning with GCC 9 on Fedora 30:
|
||||
hw/usb/dev-mtp.c:1715:36: error: taking address of packed member of struct <anonymous> may result in an unaligned pointer value [-Werror=address-of-packed-member]
|
||||
1715 | dataset->filename);
|
||||
| ~~~~~~~^~~~~~~~~~
|
||||
|
||||
Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
|
||||
Signed-off-by: Bruce Rogers <brogers@suse.com>
|
||||
---
|
||||
hw/usb/dev-mtp.c | 13 +++++++++++++
|
||||
1 file changed, 13 insertions(+)
|
||||
|
||||
diff --git a/hw/usb/dev-mtp.c b/hw/usb/dev-mtp.c
|
||||
index 15a2243101f8c465e038e26c6551..d4d3a388f2034d735a6595fdaa36 100644
|
||||
--- a/hw/usb/dev-mtp.c
|
||||
+++ b/hw/usb/dev-mtp.c
|
||||
@@ -1721,9 +1721,22 @@ static void usb_mtp_write_metadata(MTPState *s, uint64_t dlen)
|
||||
assert(!s->write_pending);
|
||||
assert(p != NULL);
|
||||
|
||||
+/*
|
||||
+ * We are about to access a packed struct. We are confident that the pointer
|
||||
+ * address won't be unaligned, so we ignore GCC warnings.
|
||||
+ */
|
||||
+#if defined(CONFIG_PRAGMA_DIAGNOSTIC_AVAILABLE) && QEMU_GNUC_PREREQ(9, 0)
|
||||
+#pragma GCC diagnostic push
|
||||
+#pragma GCC diagnostic ignored "-Waddress-of-packed-member"
|
||||
+#endif
|
||||
+
|
||||
filename = utf16_to_str(MIN(dataset->length, filename_chars),
|
||||
dataset->filename);
|
||||
|
||||
+#if defined(CONFIG_PRAGMA_DIAGNOSTIC_AVAILABLE) && QEMU_GNUC_PREREQ(9, 0)
|
||||
+#pragma GCC diagnostic pop
|
||||
+#endif
|
||||
+
|
||||
if (strchr(filename, '/')) {
|
||||
usb_mtp_queue_result(s, RES_PARAMETER_NOT_SUPPORTED, d->trans,
|
||||
0, 0, 0, 0);
|
@ -1,41 +0,0 @@
|
||||
From: Alistair Francis <Alistair.Francis@wdc.com>
|
||||
Date: Sat, 4 May 2019 07:58:35 -0600
|
||||
Subject: hw/usb/hcd-xhci: Fix GCC 9 build warning
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Fix this build warning with GCC 9 on Fedora 30:
|
||||
hw/usb/hcd-xhci.c:3339:66: error: %d directive output may be truncated writing between 1 and 10 bytes into a region of size 5 [-Werror=format-truncation=]
|
||||
3339 | snprintf(port->name, sizeof(port->name), "usb2 port #%d", i+1);
|
||||
| ^~
|
||||
hw/usb/hcd-xhci.c:3339:54: note: directive argument in the range [1, 2147483647]
|
||||
3339 | snprintf(port->name, sizeof(port->name), "usb2 port #%d", i+1);
|
||||
| ^~~~~~~~~~~~~~~
|
||||
In file included from /usr/include/stdio.h:867,
|
||||
from /home/alistair/qemu/include/qemu/osdep.h:99,
|
||||
from hw/usb/hcd-xhci.c:21:
|
||||
/usr/include/bits/stdio2.h:67:10: note: __builtin___snprintf_chk output between 13 and 22 bytes into a destination of size 16
|
||||
67 | return __builtin___snprintf_chk (__s, __n, __USE_FORTIFY_LEVEL - 1,
|
||||
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
68 | __bos (__s), __fmt, __va_arg_pack ());
|
||||
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
|
||||
Signed-off-by: Bruce Rogers <brogers@suse.com>
|
||||
---
|
||||
hw/usb/hcd-xhci.c | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/hw/usb/hcd-xhci.c b/hw/usb/hcd-xhci.c
|
||||
index 67a18fe2b64c2cc0f77be5897c5d..79386df49b7aaec7c2f2b4c19b6f 100644
|
||||
--- a/hw/usb/hcd-xhci.c
|
||||
+++ b/hw/usb/hcd-xhci.c
|
||||
@@ -3340,6 +3340,7 @@ static void usb_xhci_init(XHCIState *xhci)
|
||||
usb_bus_new(&xhci->bus, sizeof(xhci->bus), &xhci_bus_ops, dev);
|
||||
|
||||
for (i = 0; i < usbports; i++) {
|
||||
+ g_assert(i < MAX(MAXPORTS_2, MAXPORTS_3));
|
||||
speedmask = 0;
|
||||
if (i < xhci->numports_2) {
|
||||
if (xhci_get_flag(xhci, XHCI_FLAG_SS_FIRST)) {
|
@ -1,42 +0,0 @@
|
||||
From: =?UTF-8?q?Andreas=20F=C3=A4rber?= <afaerber@suse.de>
|
||||
Date: Wed, 31 Jul 2013 17:05:29 +0200
|
||||
Subject: i8254: Fix migration from SLE11 SP2
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
References: bnc#812836
|
||||
|
||||
qemu-kvm 0.15 had a VMSTATE_UINT32(flags, PITState) field that
|
||||
qemu 1.4 does not have.
|
||||
|
||||
Signed-off-by: Andreas Färber <afaerber@suse.de>
|
||||
---
|
||||
hw/timer/i8254_common.c | 7 +++++++
|
||||
1 file changed, 7 insertions(+)
|
||||
|
||||
diff --git a/hw/timer/i8254_common.c b/hw/timer/i8254_common.c
|
||||
index 050875b49738809ac586ba9ed259..59aa28b8a72590e7fdda0feecefe 100644
|
||||
--- a/hw/timer/i8254_common.c
|
||||
+++ b/hw/timer/i8254_common.c
|
||||
@@ -224,6 +224,12 @@ static int pit_dispatch_post_load(void *opaque, int version_id)
|
||||
return 0;
|
||||
}
|
||||
|
||||
+static bool is_qemu_kvm(void *opaque, int version_id)
|
||||
+{
|
||||
+ /* HACK: We ignore incoming migration from upstream qemu */
|
||||
+ return version_id < 3;
|
||||
+}
|
||||
+
|
||||
static const VMStateDescription vmstate_pit_common = {
|
||||
.name = "i8254",
|
||||
.version_id = 3,
|
||||
@@ -231,6 +237,7 @@ static const VMStateDescription vmstate_pit_common = {
|
||||
.pre_save = pit_dispatch_pre_save,
|
||||
.post_load = pit_dispatch_post_load,
|
||||
.fields = (VMStateField[]) {
|
||||
+ VMSTATE_UNUSED_TEST(is_qemu_kvm, 4),
|
||||
VMSTATE_UINT32_V(channels[0].irq_disabled, PITCommonState, 3),
|
||||
VMSTATE_STRUCT_ARRAY(channels, PITCommonState, 3, 2,
|
||||
vmstate_pit_channel, PITChannelState),
|
@ -1,32 +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>
|
||||
---
|
||||
target/i386/cpu.h | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/target/i386/cpu.h b/target/i386/cpu.h
|
||||
index e1a5c174dce15c4620bb94bc2826..2dc6d4ae0b61303401cc08bfb7ae 100644
|
||||
--- a/target/i386/cpu.h
|
||||
+++ b/target/i386/cpu.h
|
||||
@@ -1963,7 +1963,7 @@ uint64_t cpu_get_tsc(CPUX86State *env);
|
||||
/* XXX: This value should match the one returned by CPUID
|
||||
* and in exec.c */
|
||||
# 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
|
@ -1,89 +0,0 @@
|
||||
From: Michael Brown <mcb30@ipxe.org>
|
||||
Date: Sat, 27 Jun 2020 20:21:11 +0100
|
||||
Subject: [intel] Avoid spurious compiler warning on GCC 10
|
||||
|
||||
Git-commit: 28cf9806d1632d378485005babec295da0c77fcf
|
||||
References: boo#1171123
|
||||
|
||||
GCC 10 produces a spurious warning about an out-of-bounds array access
|
||||
for the unsized raw dword array in union intelvf_msg.
|
||||
|
||||
Avoid the warning by embedding the zero-length array within a struct.
|
||||
|
||||
Signed-off-by: Michael Brown <mcb30@ipxe.org>
|
||||
Signed-off-by: Bruce Rogers <brogers@suse.com>
|
||||
---
|
||||
src/drivers/net/intelvf.c | 18 ++++++++++--------
|
||||
src/drivers/net/intelvf.h | 8 +++++++-
|
||||
2 files changed, 17 insertions(+), 9 deletions(-)
|
||||
|
||||
diff --git a/roms/ipxe/src/drivers/net/intelvf.c b/roms/ipxe/src/drivers/net/intelvf.c
|
||||
index ac6fea745457863544edf6658138..0d48b4178cb5aa0542ba7c507d04 100644
|
||||
--- a/roms/ipxe/src/drivers/net/intelvf.c
|
||||
+++ b/roms/ipxe/src/drivers/net/intelvf.c
|
||||
@@ -52,14 +52,15 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
|
||||
*/
|
||||
static void intelvf_mbox_write ( struct intel_nic *intel,
|
||||
const union intelvf_msg *msg ) {
|
||||
+ const struct intelvf_msg_raw *raw = &msg->raw;
|
||||
unsigned int i;
|
||||
|
||||
/* Write message */
|
||||
DBGC2 ( intel, "INTEL %p sending message", intel );
|
||||
- for ( i = 0 ; i < ( sizeof ( *msg ) / sizeof ( msg->dword[0] ) ) ; i++){
|
||||
- DBGC2 ( intel, "%c%08x", ( i ? ':' : ' ' ), msg->dword[i] );
|
||||
- writel ( msg->dword[i], ( intel->regs + intel->mbox.mem +
|
||||
- ( i * sizeof ( msg->dword[0] ) ) ) );
|
||||
+ for ( i = 0 ; i < ( sizeof ( *msg ) / sizeof ( raw->dword[0] ) ) ; i++){
|
||||
+ DBGC2 ( intel, "%c%08x", ( i ? ':' : ' ' ), raw->dword[i] );
|
||||
+ writel ( raw->dword[i], ( intel->regs + intel->mbox.mem +
|
||||
+ ( i * sizeof ( raw->dword[0] ) ) ) );
|
||||
}
|
||||
DBGC2 ( intel, "\n" );
|
||||
}
|
||||
@@ -72,14 +73,15 @@ static void intelvf_mbox_write ( struct intel_nic *intel,
|
||||
*/
|
||||
static void intelvf_mbox_read ( struct intel_nic *intel,
|
||||
union intelvf_msg *msg ) {
|
||||
+ struct intelvf_msg_raw *raw = &msg->raw;
|
||||
unsigned int i;
|
||||
|
||||
/* Read message */
|
||||
DBGC2 ( intel, "INTEL %p received message", intel );
|
||||
- for ( i = 0 ; i < ( sizeof ( *msg ) / sizeof ( msg->dword[0] ) ) ; i++){
|
||||
- msg->dword[i] = readl ( intel->regs + intel->mbox.mem +
|
||||
- ( i * sizeof ( msg->dword[0] ) ) );
|
||||
- DBGC2 ( intel, "%c%08x", ( i ? ':' : ' ' ), msg->dword[i] );
|
||||
+ for ( i = 0 ; i < ( sizeof ( *msg ) / sizeof ( raw->dword[0] ) ) ; i++){
|
||||
+ raw->dword[i] = readl ( intel->regs + intel->mbox.mem +
|
||||
+ ( i * sizeof ( raw->dword[0] ) ) );
|
||||
+ DBGC2 ( intel, "%c%08x", ( i ? ':' : ' ' ), raw->dword[i] );
|
||||
}
|
||||
DBGC2 ( intel, "\n" );
|
||||
}
|
||||
diff --git a/roms/ipxe/src/drivers/net/intelvf.h b/roms/ipxe/src/drivers/net/intelvf.h
|
||||
index ab404698fe6de9f48370931fdf56..ffb18e04052f1b4a6fe406f5062c 100644
|
||||
--- a/roms/ipxe/src/drivers/net/intelvf.h
|
||||
+++ b/roms/ipxe/src/drivers/net/intelvf.h
|
||||
@@ -119,6 +119,12 @@ struct intelvf_msg_queues {
|
||||
uint32_t dflt;
|
||||
} __attribute__ (( packed ));
|
||||
|
||||
+/** Raw mailbox message */
|
||||
+struct intelvf_msg_raw {
|
||||
+ /** Raw dwords */
|
||||
+ uint32_t dword[0];
|
||||
+} __attribute__ (( packed ));
|
||||
+
|
||||
/** Mailbox message */
|
||||
union intelvf_msg {
|
||||
/** Message header */
|
||||
@@ -132,7 +138,7 @@ union intelvf_msg {
|
||||
/** Queue configuration message */
|
||||
struct intelvf_msg_queues queues;
|
||||
/** Raw dwords */
|
||||
- uint32_t dword[0];
|
||||
+ struct intelvf_msg_raw raw;
|
||||
};
|
||||
|
||||
/** Maximum time to wait for mailbox message
|
@ -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 f6f3e29248d3e59b76de690aeb0c..d94eb1454c9168545c933ec6e900 100644
|
||||
--- a/roms/ipxe/src/Makefile.housekeeping
|
||||
+++ b/roms/ipxe/src/Makefile.housekeeping
|
||||
@@ -1172,11 +1172,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
|
||||
#
|
||||
@@ -1196,7 +1203,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
|
13
ksm.service
13
ksm.service
@ -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
|
@ -1,64 +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>
|
||||
---
|
||||
linux-user/syscall.c | 24 ++++++++++++++++++++++++
|
||||
1 file changed, 24 insertions(+)
|
||||
|
||||
diff --git a/linux-user/syscall.c b/linux-user/syscall.c
|
||||
index 1a835798d19cc77da8d7ec6bdc7b..5cd29859d6ac5349f04c03996b12 100644
|
||||
--- a/linux-user/syscall.c
|
||||
+++ b/linux-user/syscall.c
|
||||
@@ -7473,6 +7473,27 @@ static int open_self_stat(void *cpu_env, int fd)
|
||||
return 0;
|
||||
}
|
||||
|
||||
+#if defined(TARGET_ARM)
|
||||
+static int open_cpuinfo(void *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
|
||||
+
|
||||
static int open_self_auxv(void *cpu_env, int fd)
|
||||
{
|
||||
CPUState *cpu = env_cpu((CPUArchState *)cpu_env);
|
||||
@@ -7627,6 +7648,9 @@ static int do_openat(void *cpu_env, int dirfd, const char *pathname, int flags,
|
||||
#if defined(TARGET_SPARC) || defined(TARGET_HPPA)
|
||||
{ "/proc/cpuinfo", open_cpuinfo, is_proc },
|
||||
#endif
|
||||
+#if defined(TARGET_ARM)
|
||||
+ { "cpuinfo", open_cpuinfo, is_proc_myself },
|
||||
+#endif
|
||||
#if defined(TARGET_M68K)
|
||||
{ "/proc/hardware", open_hardware, is_proc },
|
||||
#endif
|
@ -1,139 +0,0 @@
|
||||
From: Alexander Graf <agraf@suse.de>
|
||||
Date: Fri, 30 Sep 2011 19:40:36 +0200
|
||||
Subject: linux-user: add binfmt wrapper for argv[0] handling
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
When using qemu's linux-user binaries through binfmt, argv[0] gets lost
|
||||
along the execution because qemu only gets passed in the full file name
|
||||
to the executable while argv[0] can be something completely different.
|
||||
|
||||
This breaks in some subtile situations, such as the grep and make test
|
||||
suites.
|
||||
|
||||
This patch adds a wrapper binary called qemu-$TARGET-binfmt that can be
|
||||
used with binfmt's P flag which passes the full path _and_ argv[0] to
|
||||
the binfmt handler.
|
||||
|
||||
The binary would be smart enough to be versatile and only exist in the
|
||||
system once, creating the qemu binary path names from its own argv[0].
|
||||
However, this seemed like it didn't fit the make system too well, so
|
||||
we're currently creating a new binary for each target archictecture.
|
||||
|
||||
CC: Reinhard Max <max@suse.de>
|
||||
Signed-off-by: Alexander Graf <agraf@suse.de>
|
||||
[AF: Rebased onto new Makefile infrastructure, twice]
|
||||
[AF: Updated for aarch64 for v2.0.0-rc1]
|
||||
[AF: Rebased onto Makefile changes for v2.1.0-rc0]
|
||||
[AF: Rebased onto script rewrite for v2.7.0-rc2 - to be fixed]
|
||||
Signed-off-by: Andreas Färber <afaerber@suse.de>
|
||||
---
|
||||
Makefile.target | 13 +++++++++++++
|
||||
linux-user/Makefile.objs | 1 +
|
||||
linux-user/binfmt.c | 42 ++++++++++++++++++++++++++++++++++++++++
|
||||
3 files changed, 56 insertions(+)
|
||||
|
||||
diff --git a/Makefile.target b/Makefile.target
|
||||
index ffa2657269ac5e4ed4eab213e1bd..b6621549b8909d76e64cc0c5c2f3 100644
|
||||
--- a/Makefile.target
|
||||
+++ b/Makefile.target
|
||||
@@ -39,6 +39,10 @@ endif
|
||||
PROGS=$(QEMU_PROG) $(QEMU_PROGW)
|
||||
STPFILES=
|
||||
|
||||
+ifdef CONFIG_LINUX_USER
|
||||
+PROGS+=$(QEMU_PROG)-binfmt
|
||||
+endif
|
||||
+
|
||||
config-target.h: config-target.h-timestamp
|
||||
config-target.h-timestamp: config-target.mak
|
||||
|
||||
@@ -134,6 +138,8 @@ QEMU_CFLAGS+=-I$(SRC_PATH)/linux-user/$(TARGET_ABI_DIR) \
|
||||
obj-y += linux-user/
|
||||
obj-y += gdbstub.o thunk.o
|
||||
|
||||
+obj-binfmt-y += linux-user/
|
||||
+
|
||||
endif #CONFIG_LINUX_USER
|
||||
|
||||
#########################################################
|
||||
@@ -173,7 +179,11 @@ generated-files-y += config-devices.h
|
||||
|
||||
endif # CONFIG_SOFTMMU
|
||||
|
||||
+ifdef CONFIG_LINUX_USER
|
||||
+dummy := $(call unnest-vars,,obj-y obj-binfmt-y)
|
||||
+else
|
||||
dummy := $(call unnest-vars,,obj-y)
|
||||
+endif
|
||||
all-obj-y := $(obj-y)
|
||||
|
||||
#
|
||||
@@ -222,6 +232,9 @@ ifdef CONFIG_DARWIN
|
||||
$(call quiet-command,SetFile -a C $@,"SETFILE","$(TARGET_DIR)$@")
|
||||
endif
|
||||
|
||||
+$(QEMU_PROG)-binfmt: $(obj-binfmt-y)
|
||||
+ $(call LINK,$^)
|
||||
+
|
||||
gdbstub-xml.c: $(TARGET_XML_FILES) $(SRC_PATH)/scripts/feature_to_c.sh
|
||||
$(call quiet-command,rm -f $@ && $(SHELL) $(SRC_PATH)/scripts/feature_to_c.sh $@ $(TARGET_XML_FILES),"GEN","$(TARGET_DIR)$@")
|
||||
|
||||
diff --git a/linux-user/Makefile.objs b/linux-user/Makefile.objs
|
||||
index 1940910a7321c5a44d29c2602f9e..84c770a6cb58193d73afdffa2b01 100644
|
||||
--- a/linux-user/Makefile.objs
|
||||
+++ b/linux-user/Makefile.objs
|
||||
@@ -23,3 +23,4 @@ obj-$(TARGET_SPARC) += sparc/
|
||||
obj-$(TARGET_SPARC64) += $(TARGET_ABI_DIR)/
|
||||
obj-$(TARGET_X86_64) += x86_64/
|
||||
obj-$(TARGET_XTENSA) += xtensa/
|
||||
+obj-binfmt-y = binfmt.o
|
||||
diff --git a/linux-user/binfmt.c b/linux-user/binfmt.c
|
||||
new file mode 100644
|
||||
index 0000000000000000000000000000000000000000..cd1f513b334f3b263d9e4b5adb1981e376429fa6
|
||||
--- /dev/null
|
||||
+++ b/linux-user/binfmt.c
|
||||
@@ -0,0 +1,42 @@
|
||||
+#include <stdio.h>
|
||||
+#include <stdarg.h>
|
||||
+#include <unistd.h>
|
||||
+#include <libgen.h>
|
||||
+#include <string.h>
|
||||
+#include <stdlib.h>
|
||||
+
|
||||
+
|
||||
+int main(int argc, char **argv, char **envp)
|
||||
+{
|
||||
+ char *binfmt;
|
||||
+ char **new_argv;
|
||||
+
|
||||
+ /*
|
||||
+ * Check if our file name ends with -binfmt
|
||||
+ */
|
||||
+ binfmt = argv[0] + strlen(argv[0]) - strlen("-binfmt");
|
||||
+ if (strcmp(binfmt, "-binfmt")) {
|
||||
+ fprintf(stderr, "%s: Invalid executable name\n", argv[0]);
|
||||
+ exit(1);
|
||||
+ }
|
||||
+ if (argc < 3) {
|
||||
+ fprintf(stderr, "%s: Please use me through binfmt with P flag\n",
|
||||
+ argv[0]);
|
||||
+ exit(1);
|
||||
+ }
|
||||
+
|
||||
+ binfmt[0] = '\0';
|
||||
+ /* Now argv[0] is the real qemu binary name */
|
||||
+
|
||||
+ new_argv = (char **)malloc((argc + 2) * sizeof(*new_argv));
|
||||
+ if (argc > 3) {
|
||||
+ memcpy(&new_argv[4], &argv[3], (argc - 3) * sizeof(*new_argv));
|
||||
+ }
|
||||
+ new_argv[0] = argv[0];
|
||||
+ new_argv[1] = (char *)"-0";
|
||||
+ new_argv[2] = argv[2];
|
||||
+ new_argv[3] = argv[1];
|
||||
+ new_argv[argc + 1] = NULL;
|
||||
+
|
||||
+ return execve(new_argv[0], new_argv, envp);
|
||||
+}
|
@ -1,56 +0,0 @@
|
||||
From: Alexander Graf <agraf@suse.de>
|
||||
Date: Thu, 2 Feb 2012 18:02:33 +0100
|
||||
Subject: linux-user: binfmt: support host binaries
|
||||
|
||||
When we have a working host binary equivalent for the guest binary we're
|
||||
trying to run, let's just use that instead as it will be a lot faster.
|
||||
|
||||
Signed-off-by: Alexander Graf <agraf@suse.de>
|
||||
---
|
||||
linux-user/binfmt.c | 26 ++++++++++++++++++++++++++
|
||||
1 file changed, 26 insertions(+)
|
||||
|
||||
diff --git a/linux-user/binfmt.c b/linux-user/binfmt.c
|
||||
index cd1f513b334f3b263d9e4b5adb19..458f136fb41727702854cae4e542 100644
|
||||
--- a/linux-user/binfmt.c
|
||||
+++ b/linux-user/binfmt.c
|
||||
@@ -5,6 +5,9 @@
|
||||
#include <string.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
+#ifdef __x86_64__
|
||||
+#define ARCH_NAME "x86_64"
|
||||
+#endif
|
||||
|
||||
int main(int argc, char **argv, char **envp)
|
||||
{
|
||||
@@ -28,6 +31,29 @@ int main(int argc, char **argv, char **envp)
|
||||
binfmt[0] = '\0';
|
||||
/* Now argv[0] is the real qemu binary name */
|
||||
|
||||
+#ifdef ARCH_NAME
|
||||
+ {
|
||||
+ char *hostbin;
|
||||
+ char *guestarch;
|
||||
+ int r;
|
||||
+
|
||||
+ guestarch = strrchr(argv[0], '-') ;
|
||||
+ if (!guestarch) {
|
||||
+ goto skip;
|
||||
+ }
|
||||
+ guestarch++;
|
||||
+ r = asprintf(&hostbin, "/emul/" ARCH_NAME "-for-%s/%s", guestarch, argv[1]);
|
||||
+ if ((r > 0) && !access(hostbin, X_OK)) {
|
||||
+ /*
|
||||
+ * We found a host binary replacement for the non-host binary. Let's
|
||||
+ * use that instead!
|
||||
+ */
|
||||
+ return execve(hostbin, &argv[2], envp);
|
||||
+ }
|
||||
+ }
|
||||
+skip:
|
||||
+#endif
|
||||
+
|
||||
new_argv = (char **)malloc((argc + 2) * sizeof(*new_argv));
|
||||
if (argc > 3) {
|
||||
memcpy(&new_argv[4], &argv[3], (argc - 3) * sizeof(*new_argv));
|
@ -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 9ec933bdc0078f3fc62bfd499957..78a1f6c347511b85634da898f831 100644
|
||||
--- a/linux-user/syscall.c
|
||||
+++ b/linux-user/syscall.c
|
||||
@@ -8149,8 +8149,13 @@ static abi_long do_syscall1(void *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 */
|
@ -1,29 +0,0 @@
|
||||
From: Andreas Schwab <schwab@linux-m68k.org>
|
||||
Date: Thu, 8 Sep 2016 11:21:05 +0200
|
||||
Subject: linux-user: properly test for infinite timeout in poll (#8)
|
||||
|
||||
After "linux-user: use target_ulong" the poll syscall was no longer
|
||||
handling infinite timeout.
|
||||
|
||||
/home/abuild/rpmbuild/BUILD/qemu-2.7.0-rc5/linux-user/syscall.c:9773:26: warning: comparison of unsigned expression >= 0 is always true [-Wtype-limits]
|
||||
if (arg3 >= 0) {
|
||||
^~
|
||||
|
||||
Signed-off-by: Andreas Schwab <schwab@suse.de>
|
||||
---
|
||||
linux-user/syscall.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/linux-user/syscall.c b/linux-user/syscall.c
|
||||
index 78a1f6c347511b85634da898f831..d70d8a59f44feaf126d8b6187f17 100644
|
||||
--- a/linux-user/syscall.c
|
||||
+++ b/linux-user/syscall.c
|
||||
@@ -10207,7 +10207,7 @@ static abi_long do_syscall1(void *cpu_env, int num, abi_ulong arg1,
|
||||
{
|
||||
struct timespec ts, *pts;
|
||||
|
||||
- if (arg3 >= 0) {
|
||||
+ if ((abi_long)arg3 >= 0) {
|
||||
/* Convert ms to secs, ns */
|
||||
ts.tv_sec = arg3 / 1000;
|
||||
ts.tv_nsec = (arg3 % 1000) * 1000000LL;
|
@ -1,79 +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>
|
||||
---
|
||||
linux-user/qemu.h | 8 ++++----
|
||||
linux-user/syscall.c | 18 +++++++++---------
|
||||
2 files changed, 13 insertions(+), 13 deletions(-)
|
||||
|
||||
diff --git a/linux-user/qemu.h b/linux-user/qemu.h
|
||||
index 5c964389c101ce00fcffe206bc69..76d0399e82d5c2b599b9472e0743 100644
|
||||
--- a/linux-user/qemu.h
|
||||
+++ b/linux-user/qemu.h
|
||||
@@ -227,10 +227,10 @@ abi_long memcpy_to_target(abi_ulong dest, const void *src,
|
||||
void target_set_brk(abi_ulong new_brk);
|
||||
abi_long do_brk(abi_ulong new_brk);
|
||||
void syscall_init(void);
|
||||
-abi_long do_syscall(void *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(void *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;
|
||||
void cpu_loop(CPUArchState *env);
|
||||
const char *target_strerror(int err);
|
||||
diff --git a/linux-user/syscall.c b/linux-user/syscall.c
|
||||
index 5cd29859d6ac5349f04c03996b12..9ec933bdc0078f3fc62bfd499957 100644
|
||||
--- a/linux-user/syscall.c
|
||||
+++ b/linux-user/syscall.c
|
||||
@@ -7791,10 +7791,10 @@ static int host_to_target_cpu_mask(const unsigned long *host_mask,
|
||||
* of syscall results, can be performed.
|
||||
* All errnos that do_syscall() returns must be -TARGET_<errcode>.
|
||||
*/
|
||||
-static abi_long do_syscall1(void *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(void *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;
|
||||
@@ -10578,7 +10578,7 @@ static abi_long do_syscall1(void *cpu_env, int num, abi_long arg1,
|
||||
*/
|
||||
ret = -TARGET_EINVAL;
|
||||
if (cpu_isar_feature(aa64_sve, env_archcpu(cpu_env))
|
||||
- && arg2 >= 0 && arg2 <= 512 * 16 && !(arg2 & 15)) {
|
||||
+ && arg2 <= 512 * 16 && !(arg2 & 15)) {
|
||||
CPUARMState *env = cpu_env;
|
||||
ARMCPU *cpu = env_archcpu(env);
|
||||
uint32_t vq, old_vq;
|
||||
@@ -12610,10 +12610,10 @@ static abi_long do_syscall1(void *cpu_env, int num, abi_long arg1,
|
||||
return ret;
|
||||
}
|
||||
|
||||
-abi_long do_syscall(void *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(void *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;
|
@ -1,24 +0,0 @@
|
||||
From: Bruce Rogers <brogers@suse.com>
|
||||
Date: Wed, 29 May 2019 09:59:02 -0600
|
||||
Subject: pc-bios/s390-ccw/net: avoid warning about packed structure members
|
||||
|
||||
This is hopefully temporary. Simply disable the warning about taking
|
||||
the address of packed structure members which is new in gcc9.
|
||||
|
||||
Signed-off-by: Bruce Rogers <brogers@suse.com>
|
||||
---
|
||||
pc-bios/s390-ccw/netboot.mak | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/pc-bios/s390-ccw/netboot.mak b/pc-bios/s390-ccw/netboot.mak
|
||||
index 577c023afe3db17ada307b2abbcc..cea8fb8532ddccda2390d936c93f 100644
|
||||
--- a/pc-bios/s390-ccw/netboot.mak
|
||||
+++ b/pc-bios/s390-ccw/netboot.mak
|
||||
@@ -54,6 +54,7 @@ LIBNETOBJS := args.o dhcp.o dns.o icmpv6.o ipv6.o tcp.o udp.o bootp.o \
|
||||
dhcpv6.o ethernet.o ipv4.o ndp.o tftp.o pxelinux.o
|
||||
LIBNETCFLAGS = $(QEMU_CFLAGS) $(CFLAGS) $(LIBC_INC) $(LIBNET_INC) \
|
||||
-DDHCPARCH=0x1F -MMD -MP -MT $@ -MF $(@:%.o=%.d)
|
||||
+LIBNETCFLAGS += -Wno-address-of-packed-member
|
||||
|
||||
%.o : $(SLOF_DIR)/lib/libnet/%.c
|
||||
$(call quiet-command,$(CC) $(LIBNETCFLAGS) -c -o $@ $<,"CC","$(TARGET_DIR)$@")
|
@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:c9174eb5933d9eb5e61f541cd6d1184cd3118dfe4c5c4955bc1bdc4d390fa4e5
|
||||
size 62911540
|
Binary file not shown.
3
qemu-9.1.0.obscpio
Normal file
3
qemu-9.1.0.obscpio
Normal file
@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:70dcc8717465d0590135ed6c257920d4043e1a9dc502d513e41884dfd98bcbd5
|
||||
size 850210319
|
@ -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 9f1580a91c7d3ad64120fe8ee66d..246546b10ca5df38035e5ba46a09 100755
|
||||
--- a/scripts/qemu-binfmt-conf.sh
|
||||
+++ b/scripts/qemu-binfmt-conf.sh
|
||||
@@ -323,7 +323,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
|
||||
QEMU_SUFFIX=""
|
@ -1,38 +0,0 @@
|
||||
From: Andreas Schwab <schwab@suse.de>
|
||||
Date: Fri, 12 Aug 2016 18:20:49 +0200
|
||||
Subject: qemu-binfmt-conf: use qemu-ARCH-binfmt
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Signed-off-by: Andreas Schwab <schwab@suse.de>
|
||||
Signed-off-by: Andreas Färber <afaerber@suse.de>
|
||||
---
|
||||
scripts/qemu-binfmt-conf.sh | 6 +++---
|
||||
1 file changed, 3 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/scripts/qemu-binfmt-conf.sh b/scripts/qemu-binfmt-conf.sh
|
||||
index 246546b10ca5df38035e5ba46a09..e0666a3afdc81f0f8277a53f3e1e 100755
|
||||
--- a/scripts/qemu-binfmt-conf.sh
|
||||
+++ b/scripts/qemu-binfmt-conf.sh
|
||||
@@ -266,7 +266,7 @@ qemu_generate_register() {
|
||||
flags="${flags}F"
|
||||
fi
|
||||
|
||||
- echo ":qemu-$cpu:M::$magic:$mask:$qemu:$flags"
|
||||
+ echo ":qemu-$cpu:M::$magic:$mask:$qemu:P$flags"
|
||||
}
|
||||
|
||||
qemu_register_interpreter() {
|
||||
@@ -305,9 +305,9 @@ qemu_set_binfmts() {
|
||||
continue
|
||||
fi
|
||||
|
||||
- qemu="$QEMU_PATH/qemu-$cpu"
|
||||
+ qemu="$QEMU_PATH/qemu-$cpu-binfmt"
|
||||
if [ "$cpu" = "i486" ] ; then
|
||||
- qemu="$QEMU_PATH/qemu-i386"
|
||||
+ qemu="$QEMU_PATH/qemu-i386-binfmt"
|
||||
fi
|
||||
|
||||
qemu="$qemu$QEMU_SUFFIX"
|
@ -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 88b26747fc866116637716264dea..9ed35df944fa6968045e675e023a 100644
|
||||
--- a/qemu-bridge-helper.c
|
||||
+++ b/qemu-bridge-helper.c
|
||||
@@ -123,7 +123,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 {
|
||||
@@ -132,7 +137,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 {
|
||||
@@ -433,6 +443,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",
|
||||
@@ -454,7 +476,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;
|
@ -1,26 +0,0 @@
|
||||
From: Ulrich Hecht <uli@suse.de>
|
||||
Date: Tue, 14 Apr 2009 16:25:41 +0200
|
||||
Subject: qemu-cvs-gettimeofday
|
||||
|
||||
No clue what this is for.
|
||||
|
||||
[BR: minor edits to pass qemu's checkpatch script]
|
||||
Signed-off-by: Bruce Rogers <brogers@suse.com>
|
||||
---
|
||||
linux-user/syscall.c | 3 +++
|
||||
1 file changed, 3 insertions(+)
|
||||
|
||||
diff --git a/linux-user/syscall.c b/linux-user/syscall.c
|
||||
index 945fc252791ce79d968dba5f9545..b1e68b7b1b3d689af62cd271cf31 100644
|
||||
--- a/linux-user/syscall.c
|
||||
+++ b/linux-user/syscall.c
|
||||
@@ -8988,6 +8988,9 @@ static abi_long do_syscall1(void *cpu_env, int num, abi_long arg1,
|
||||
{
|
||||
struct timeval tv;
|
||||
struct timezone tz;
|
||||
+ if (copy_from_user_timeval(&tv, arg1)) {
|
||||
+ return -TARGET_EFAULT;
|
||||
+ }
|
||||
|
||||
ret = get_errno(gettimeofday(&tv, &tz));
|
||||
if (!is_error(ret)) {
|
@ -1,41 +0,0 @@
|
||||
From: Alexander Graf <agraf@suse.de>
|
||||
Date: Tue, 14 Apr 2009 16:26:33 +0200
|
||||
Subject: qemu-cvs-ioctl_debug
|
||||
|
||||
Extends unsupported ioctl debug output.
|
||||
|
||||
Signed-off-by: Alexander Graf <agraf@suse.de>
|
||||
Signed-off-by: Ulrich Hecht <uli@suse.de>
|
||||
[BR: minor edits to pass qemu's checkpatch script]
|
||||
Signed-off-by: Bruce Rogers <brogers@suse.com>
|
||||
---
|
||||
linux-user/syscall.c | 15 ++++++++++++++-
|
||||
1 file changed, 14 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/linux-user/syscall.c b/linux-user/syscall.c
|
||||
index b1e68b7b1b3d689af62cd271cf31..8a80cf418ab4299548a85b90e427 100644
|
||||
--- a/linux-user/syscall.c
|
||||
+++ b/linux-user/syscall.c
|
||||
@@ -5440,8 +5440,21 @@ static abi_long do_ioctl(int fd, int cmd, abi_long arg)
|
||||
ie = ioctl_entries;
|
||||
for(;;) {
|
||||
if (ie->target_cmd == 0) {
|
||||
+ int i;
|
||||
qemu_log_mask(
|
||||
- LOG_UNIMP, "Unsupported ioctl: cmd=0x%04lx\n", (long)cmd);
|
||||
+ LOG_UNIMP, "Unsupported ioctl: cmd=0x%04lx (%x)\n", (unsigned long)cmd,
|
||||
+ (unsigned int)(cmd & (TARGET_IOC_SIZEMASK << TARGET_IOC_SIZESHIFT))
|
||||
+ >> TARGET_IOC_SIZESHIFT);
|
||||
+ for (i = 0; ioctl_entries[i].target_cmd; i++) {
|
||||
+ if ((ioctl_entries[i].target_cmd & ~(TARGET_IOC_SIZEMASK
|
||||
+ << TARGET_IOC_SIZESHIFT)) == (cmd & ~(TARGET_IOC_SIZEMASK <<
|
||||
+ TARGET_IOC_SIZESHIFT)))
|
||||
+ qemu_log_mask(
|
||||
+ LOG_UNIMP, "%p\t->\t%s (%x)\n", (void *)(unsigned long)
|
||||
+ ioctl_entries[i].host_cmd, ioctl_entries[i].name,
|
||||
+ (ioctl_entries[i].target_cmd & (TARGET_IOC_SIZEMASK
|
||||
+ << TARGET_IOC_SIZESHIFT)) >> TARGET_IOC_SIZESHIFT);
|
||||
+ }
|
||||
return -TARGET_ENOSYS;
|
||||
}
|
||||
if (ie->target_cmd == cmd)
|
@ -1,43 +0,0 @@
|
||||
From: Alexander Graf <agraf@suse.de>
|
||||
Date: Tue, 14 Apr 2009 16:27:36 +0200
|
||||
Subject: qemu-cvs-ioctl_nodirection
|
||||
|
||||
the direction given in the ioctl should be correct so we can assume the
|
||||
communication is uni-directional. The alsa developers did not like this
|
||||
concept though and declared ioctls IOC_R and IOC_W even though they were
|
||||
IOC_RW.
|
||||
|
||||
Signed-off-by: Alexander Graf <agraf@suse.de>
|
||||
Signed-off-by: Ulrich Hecht <uli@suse.de>
|
||||
[BR: minor edits to pass qemu's checkpatch script]
|
||||
Signed-off-by: Bruce Rogers <brogers@suse.com>
|
||||
---
|
||||
linux-user/syscall.c | 8 ++++++++
|
||||
1 file changed, 8 insertions(+)
|
||||
|
||||
diff --git a/linux-user/syscall.c b/linux-user/syscall.c
|
||||
index 8a80cf418ab4299548a85b90e427..1a835798d19cc77da8d7ec6bdc7b 100644
|
||||
--- a/linux-user/syscall.c
|
||||
+++ b/linux-user/syscall.c
|
||||
@@ -5485,6 +5485,13 @@ static abi_long do_ioctl(int fd, int cmd, abi_long arg)
|
||||
arg_type++;
|
||||
target_size = thunk_type_size(arg_type, 0);
|
||||
switch(ie->access) {
|
||||
+ /*
|
||||
+ * FIXME: actually the direction given in the ioctl should be
|
||||
+ * correct so we can assume the communication is uni-directional.
|
||||
+ * The alsa developers did not like this concept though and
|
||||
+ * declared ioctls IOC_R and IOC_W even though they were IOC_RW.
|
||||
+ */
|
||||
+/*
|
||||
case IOC_R:
|
||||
ret = get_errno(safe_ioctl(fd, ie->host_cmd, buf_temp));
|
||||
if (!is_error(ret)) {
|
||||
@@ -5503,6 +5510,7 @@ static abi_long do_ioctl(int fd, int cmd, abi_long arg)
|
||||
unlock_user(argptr, arg, 0);
|
||||
ret = get_errno(safe_ioctl(fd, ie->host_cmd, buf_temp));
|
||||
break;
|
||||
+*/
|
||||
default:
|
||||
case IOC_RW:
|
||||
argptr = lock_user(VERIFY_READ, arg, target_size, 1);
|
@ -1,14 +0,0 @@
|
||||
[Unit]
|
||||
Description=QEMU Guest Agent
|
||||
Documentation=http://wiki.qemu.org/Features/GuestAgent
|
||||
BindsTo=dev-%i.device
|
||||
After=dev-%i.device
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
ExecStart=-/usr/bin/qemu-ga -p /dev/%I
|
||||
Restart=always
|
||||
RestartSec=0
|
||||
|
||||
[Install]
|
||||
WantedBy=dev-%i.device
|
23
qemu-ifup
23
qemu-ifup
@ -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
|
@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:b1b92b2e22f846e4f7c692d8466f3865fbb95c2523aee7fc0a06524a39061e94
|
||||
size 47
|
215
qemu-linux-user.spec
Normal file
215
qemu-linux-user.spec
Normal file
@ -0,0 +1,215 @@
|
||||
#
|
||||
# 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.1.0
|
||||
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-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:
|
||||
# * 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_everything} \
|
||||
%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
|
@ -4,3 +4,4 @@ from Config import *
|
||||
addFilter("arch-dependent-file-in-usr-share")
|
||||
addFilter("obsolete-not-provided")
|
||||
addFilter("summary-not-capitalized")
|
||||
addFilter("executable-stack")
|
||||
|
@ -1,78 +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 "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/kvm/images/"
|
||||
|
||||
# network-related info often useful for debugging
|
||||
if [ systemctl is-enabled NetworkManager.service 2>&1 > /dev/null ]; then
|
||||
echo "NOTE: NetworkManager should not be enabled on a KVM host"
|
||||
fi
|
||||
plugin_command "route -n"
|
||||
plugin_command "arp -v"
|
||||
plugin_command "ip link show type bridge"
|
||||
plugin_command "bridge link show"
|
||||
|
||||
echo "Done"
|
2999
qemu.changes
2999
qemu.changes
File diff suppressed because it is too large
Load Diff
493
qemu.keyring
493
qemu.keyring
@ -1,493 +0,0 @@
|
||||
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||
|
||||
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
|
||||
=YraJ
|
||||
-----END PGP PUBLIC KEY BLOCK-----
|
4
qemu.obsinfo
Normal file
4
qemu.obsinfo
Normal file
@ -0,0 +1,4 @@
|
||||
name: qemu
|
||||
version: 9.1.0
|
||||
mtime: 1726073275
|
||||
commit: d6950a38c1c779c678bd1f64e8685ddf7af43e53
|
2166
qemu.spec.in
2166
qemu.spec.in
File diff suppressed because it is too large
Load Diff
@ -1,22 +0,0 @@
|
||||
From: Bruce Rogers <brogers@suse.com>
|
||||
Date: Sun, 3 Nov 2019 07:21:40 -0700
|
||||
Subject: roms/Makefile: enable cross compile for building microvm bios
|
||||
|
||||
Signed-off-by: Bruce Rogers <brogers@suse.com>
|
||||
---
|
||||
roms/Makefile | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/roms/Makefile b/roms/Makefile
|
||||
index 3aaf3835730023e9a941fc9cd2c2..1bfe34b404d2822bda71edf25ae4 100644
|
||||
--- a/roms/Makefile
|
||||
+++ b/roms/Makefile
|
||||
@@ -205,7 +205,7 @@ opensbi64-sifive_u:
|
||||
cp opensbi/build/platform/sifive/fu540/firmware/fw_jump.bin ../pc-bios/opensbi-riscv64-sifive_u-fw_jump.bin
|
||||
|
||||
bios-microvm:
|
||||
- $(MAKE) -C qboot
|
||||
+ $(MAKE) -C qboot CROSS_COMPILE=$(x86_64_cross_prefix) CC=gcc
|
||||
cp qboot/bios.bin ../pc-bios/bios-microvm.bin
|
||||
|
||||
clean:
|
@ -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 f9acf39954dcf96618fab21cafe7..3aaf3835730023e9a941fc9cd2c2 100644
|
||||
--- a/roms/Makefile
|
||||
+++ b/roms/Makefile
|
||||
@@ -51,6 +51,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:"
|
||||
@@ -101,7 +107,7 @@ build-seabios-config-%: config.%
|
||||
|
||||
.PHONY: sgabios skiboot
|
||||
sgabios:
|
||||
- $(MAKE) -C sgabios
|
||||
+ $(MAKE) -C sgabios PACKAGING_TIMESTAMP=$(PACKAGING_TIMESTAMP)
|
||||
cp sgabios/sgabios.bin ../pc-bios
|
||||
|
||||
|
||||
@@ -121,11 +127,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-i386-efi/%.efidrv,$(pxerom_targets)) \
|
||||
$(patsubst %,bin-x86_64-efi/%.efidrv,$(pxerom_targets))
|
||||
@@ -148,7 +156,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:
|
@ -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
|
||||
}
|
||||
|
@ -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
|
||||
|
@ -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 87a6ac92e69f23c1ce799d16512a..edb83b7a1c77f7bb75c371330b2c 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=python2
|
||||
+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 86c6226c0f9aae4e4687cf216369..7ac054e626780253fcec78414b17 100755
|
||||
--- a/roms/seabios/scripts/acpi_extract.py
|
||||
+++ b/roms/seabios/scripts/acpi_extract.py
|
||||
@@ -1,4 +1,4 @@
|
||||
-#!/usr/bin/python2
|
||||
+#!/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 b8e92a525730442815a0dce78f45..6963847a8b5d3e4bf9340a67afe2 100755
|
||||
--- a/roms/seabios/scripts/acpi_extract_preprocess.py
|
||||
+++ b/roms/seabios/scripts/acpi_extract_preprocess.py
|
||||
@@ -1,4 +1,4 @@
|
||||
-#!/usr/bin/python2
|
||||
+#!/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 6616721d1b584892074491b292ba..c6d003273990ae66ca62bc36fe07 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
|
||||
|
||||
@@ -691,7 +691,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')
|
@ -1,48 +0,0 @@
|
||||
From: Bruce Rogers <brogers@suse.com>
|
||||
Date: Thu, 27 Jun 2019 10:15:24 -0600
|
||||
Subject: seabios: use python2 explicitly as needed
|
||||
|
||||
Switch to python2 the places where "python" is explicitly referenced.
|
||||
(Ignore the uses of #!/usr/bin/env python, since that usage does the
|
||||
right thing in our build environment).
|
||||
|
||||
Signed-off-by: Bruce Rogers <brogers@suse.com>
|
||||
---
|
||||
Makefile | 2 +-
|
||||
scripts/acpi_extract.py | 2 +-
|
||||
scripts/acpi_extract_preprocess.py | 2 +-
|
||||
3 files changed, 3 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/roms/seabios/Makefile b/roms/seabios/Makefile
|
||||
index 3d8943ef5f25afb9c41db84ad2a0..87a6ac92e69f23c1ce799d16512a 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=python2
|
||||
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..86c6226c0f9aae4e4687cf216369 100755
|
||||
--- a/roms/seabios/scripts/acpi_extract.py
|
||||
+++ b/roms/seabios/scripts/acpi_extract.py
|
||||
@@ -1,4 +1,4 @@
|
||||
-#!/usr/bin/python
|
||||
+#!/usr/bin/python2
|
||||
# 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/acpi_extract_preprocess.py b/roms/seabios/scripts/acpi_extract_preprocess.py
|
||||
index 2698118406d97c164783335c7fb6..b8e92a525730442815a0dce78f45 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/python2
|
||||
# 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.
|
@ -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
|
||||
|
@ -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
|
@ -1,885 +0,0 @@
|
||||
[qemu-arm package document]
|
||||
|
||||
POST SLES 15 SP2 QEMU/KVM RELATED SUPPORT STATEMENTS
|
||||
|
||||
Overview
|
||||
--------
|
||||
|
||||
The QEMU based packages included with SLES 15 SP2 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 SP2,
|
||||
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 SP2
|
||||
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 SP2 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
|
||||
-----------------------------------------------------
|
||||
|
||||
- http://wiki.qemu-project.org/Features/LegacyRemoval
|
||||
This website tracks feature 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 is also tracked
|
||||
in Appendix B of the qemu-doc.* files installed with the qemu package.
|
||||
|
||||
- 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:
|
||||
-device scsi-disk (use scsi-hd or scsi-cd instead)
|
||||
-device virtio-blk,scsi= (use virtio-scsi instead)
|
||||
-device virtio-blk-pci,scsi= (use virtio-scsi instead)
|
||||
-realtime mlock= (use -overcommit mem-lock- instead)
|
||||
|
||||
- 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)
|
||||
-sdl
|
||||
-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)
|
||||
-tb-size
|
||||
|
||||
- These previously unsupported command line options are no longer recognized:
|
||||
-bt
|
||||
-device at24c-eeprom
|
||||
-device mmio_interface
|
||||
-device ssi-sd
|
||||
-enable-hax
|
||||
-tdf
|
||||
-xen-create
|
||||
|
||||
- These previously supported QMP commands are now deprecated:
|
||||
change (use blockdev-change-medium or change-vnc-password instead)
|
||||
cpu-add
|
||||
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
|
||||
cpu-add
|
||||
migrate_set_downtime
|
||||
migrate_set_speed
|
||||
|
||||
- These previously supported monitor commands are no longer recognized:
|
||||
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:
|
||||
acl_add ...
|
||||
acl_policy ...
|
||||
acl_remove ...
|
||||
acl_reset ...
|
||||
acl_show ...
|
||||
|
||||
- These previously unsupported monitor commands are no longer recognized:
|
||||
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-4.2
|
||||
instead of virt-3.1) if possible.
|
||||
|
||||
- The following command line options are supported:
|
||||
-accel ...
|
||||
-add-fd ...
|
||||
-alt-grab
|
||||
-append ...
|
||||
-audio-help
|
||||
-audiodev
|
||||
-bios ...
|
||||
-blockdev ...
|
||||
-boot ...
|
||||
-cdrom ...
|
||||
-chardev ..
|
||||
-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|vhost-vsock-pci-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]
|
||||
(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|virt-2.6|virt-2.11|virtio-3.1|virt-4.2]
|
||||
-machine [help|?|none|virt|virt-2.6|virt-2.11|virt-3.1|virt-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
|
||||
-nographic
|
||||
-no-quit
|
||||
-no-reboot
|
||||
-no-shutdown
|
||||
-no-user-config
|
||||
-object ...
|
||||
-only-migratable
|
||||
-parallel ...
|
||||
-pidfile ...
|
||||
-plugin ...
|
||||
-qmp ...
|
||||
-qmp-pretty ...
|
||||
-readconfig ...
|
||||
-realtime ...
|
||||
-rtc ...
|
||||
-runas ...
|
||||
-s
|
||||
-S
|
||||
-sandbox ...
|
||||
-seed ...
|
||||
-serial ...
|
||||
-show-cursor
|
||||
-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 ...
|
||||
cpu-add ...
|
||||
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_cache_size ...
|
||||
migrate_set_capability ...
|
||||
migrate_set_downtime ...
|
||||
migrate_set_parameter ...
|
||||
migrate_set_speed ...
|
||||
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-latency-histogram-set
|
||||
block_passwd
|
||||
block_resize
|
||||
block_set_io_throttle
|
||||
block-set-write-threshold
|
||||
block_stream
|
||||
change
|
||||
change-vnc-password
|
||||
chardev-add
|
||||
chardev-change
|
||||
chardev-remove
|
||||
chardev-send-break
|
||||
client_migrate_info
|
||||
closefd
|
||||
cont
|
||||
cpu
|
||||
cpu-add
|
||||
device_add
|
||||
device_del
|
||||
device-list-properties
|
||||
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-cache-size
|
||||
migrate-set-capabilities
|
||||
migrate_set_downtime
|
||||
migrate_set_speed
|
||||
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-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
|
||||
query-cpus-fast
|
||||
query-current-machine
|
||||
query-display-options
|
||||
query-dump
|
||||
query-dump-guest-memory-capability
|
||||
query-events
|
||||
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-cache-size
|
||||
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-xen-replication-status
|
||||
quit
|
||||
remove-fd
|
||||
ringbuf-read
|
||||
ringbuf-write
|
||||
rtc-reset-reinjection
|
||||
screendump
|
||||
send-key
|
||||
set_link
|
||||
set_password
|
||||
stop
|
||||
system_powerdown
|
||||
system_reset
|
||||
system_wakeup
|
||||
trace-event-get-state
|
||||
trace-event-set-state
|
||||
transaction
|
||||
watchdog-set-action
|
||||
|
||||
- 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|
|
||||
ARMbitband-memory|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|
|
||||
fsl,imx6ul|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|virtio-iommu-pci-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|tpm-tis-device|nvdimm|vhost-user-vsock-device|i
|
||||
vhost-user-vsock-pci|vhost-user-vsock-pci-non-transitional|
|
||||
vhost-user-vsock-pci-transitional]
|
||||
(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-hax
|
||||
-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|highbank|imx25-pdk|integratorcp|kzm|lm3s6965evb|lm3s811evb|
|
||||
mainstone|mcimx6ul-evk|mcimx7d-sabre|microbit|midway|mps2-an385|mps2-an505|
|
||||
mps2-an511|mps2-an521|musca-a|musca-b1|musicpal|n800|n810|netduino2|
|
||||
netduinoplus2|nuri|orangepi-pc|palmetto-bmc|raspi2|raspi3|realview-eb|
|
||||
realview-eb-mpcore|realview-pb-a8|realview-pbx-a9|romulus-bmc|sabrelite|
|
||||
sbsa-ref|smdkc210|sonorapass-bmc|spitz|swift-bmc|sx1|sx1-v1|tacoma-bmc|
|
||||
terrier|tosa|verdex|versatileab|versatilepb|vexpress-a15|vexpress-a9|
|
||||
virt-2.7|virt-2.8|virt-2.12|virt-3.0|virt-4.0|virt-4.1|virt-5.0|virt-5.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|highbank|imx25-pdk|integratorcp|kzm|lm3s6965evb|
|
||||
lm3s811evb|mainstone|mcimx6ul-evk|mcimx7d-sabre|microbit|midway|
|
||||
mps2-an385|mps2-an521|mps2-an505|mps2-an511|musca-a|musca-b1|
|
||||
musicpal|n800|n810|netduino2|netduinoplus2|nuri|orangepi-pc|
|
||||
palmetto-bmc|raspi2|raspi3|realview-eb|realview-eb-mpcore|
|
||||
realview-pb-a8|realview-pbx-a9|romulus-bmc|sabrelite|sbsa-ref|
|
||||
smdkc210|sonorapass-bmc|spitz|swift-bmc|sx1|sx1-v1|tacoma-bmc|
|
||||
terrier|tosa|verdex|versatileab|versatilepb|vexpress-a15|vexpress-a9|
|
||||
virt-2.7|virt-2.8|virt-2.12|virt-3.0|virt-4.0|virt-4.1|virt-5.0|
|
||||
virt-5.1|witherspoon-bmc|xilinx-zynq-a9|xlnx-versal-virt|xlnx-zcu102|
|
||||
z2]
|
||||
|
||||
-mtdblock file
|
||||
-net [dump|socket|vde] ...
|
||||
-netdev [dump|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 ...
|
||||
-tb-size ...
|
||||
-tpmdev emulator ...
|
||||
-vga [cg3|tcx|virtio|cirrus|xenfb]
|
||||
-win2k-hack
|
||||
-xen-attach ...
|
||||
-xen-domid ...
|
||||
-xen-domid-restrict ...
|
||||
|
||||
- The following monitor commands are unsupported:
|
||||
acl_add ...
|
||||
acl_policy ...
|
||||
acl_remove ...
|
||||
acl_reset ...
|
||||
acl_show ...
|
||||
block_job_cancel ...
|
||||
block_job_complete ...
|
||||
block_job_pause ...
|
||||
block_job_resume ...
|
||||
block_job_set_speed ...
|
||||
block_passwd ...
|
||||
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 ...
|
||||
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-sev
|
||||
query-sev-launch-measure
|
||||
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
|
@ -1,5 +0,0 @@
|
||||
[qemu-ppc package document]
|
||||
|
||||
POST SLES 15 SP2 QEMU/KVM RELATED SUPPORT STATEMENTS
|
||||
|
||||
QEMU/KVM on ppc is not supported.
|
@ -1,837 +0,0 @@
|
||||
[qemu-s390 package document]
|
||||
|
||||
POST SLES 15 SP2 QEMU/KVM RELATED SUPPORT STATEMENTS
|
||||
|
||||
Overview
|
||||
--------
|
||||
|
||||
The QEMU based packages included with SLES 15 SP2 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 SP2
|
||||
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 SP2 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
|
||||
-----------------------------------------------------
|
||||
|
||||
- http://wiki.qemu-project.org/Features/LegacyRemoval
|
||||
This website tracks feature 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 is also tracked
|
||||
in Appendix B of the qemu-doc.* files installed with the qemu package.
|
||||
|
||||
- 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.
|
||||
|
||||
- This previously supported command line option is now considered deprecated:
|
||||
-device virtio-blk,scsi= (use virtio-scsi instead)
|
||||
-device virtio-blk-pci,scsi= (use virtio-scsi instead)
|
||||
-realtime mlock= (use -overcommit mem-lock= instead)
|
||||
|
||||
- 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)
|
||||
-sdl
|
||||
-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
|
||||
-device ide-drive (use ide-hd or ide-cd)
|
||||
-device scsi-disk (use scsi-hd or scsi-cd)
|
||||
-soundhw (use -device ... instead)
|
||||
-tb-size
|
||||
|
||||
- These previously unsupported command line options are no longer recognized:
|
||||
-device mmio_interface
|
||||
-device ramfb
|
||||
-enable-hax
|
||||
-tdf
|
||||
-xen-create
|
||||
|
||||
- These previously supported QMP commands are now deprecated:
|
||||
change (use blockdev-change-medium or change-vnc-password instead)
|
||||
cpu-add
|
||||
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
|
||||
cpu-add
|
||||
migrate_set_downtime
|
||||
migrate_set_speed
|
||||
|
||||
- These previously supported monitor commands are no longer recognized:
|
||||
pci_add (use device_add instead)
|
||||
pci_del (use device_del instead)
|
||||
|
||||
- These previously unsupported monitor command are now deprecated:
|
||||
acl_add ...
|
||||
acl_policy ...
|
||||
acl_remove ...
|
||||
acl_reset ...
|
||||
acl_show ...
|
||||
|
||||
- These previously unsupported monitor commands are no longer recognized:
|
||||
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-4.2 instead of s390-ccw-virtio-3.1) if possible.
|
||||
|
||||
- The following command line options are supported:
|
||||
-accel ...
|
||||
-add-fd ...
|
||||
-alt-grab
|
||||
-append ...
|
||||
-audio-help
|
||||
-audiodev
|
||||
-bios ...
|
||||
-blockdev ...
|
||||
-boot ...
|
||||
-cdrom ...
|
||||
-chardev ..
|
||||
-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-disk|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|
|
||||
vhost-vsock-pci-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]
|
||||
(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|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]
|
||||
|
||||
-machine
|
||||
|
||||
[help|?|none|s390-ccw-virtio|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]
|
||||
|
||||
-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 ...
|
||||
-realtime ...
|
||||
-rtc ...
|
||||
-runas ...
|
||||
-s
|
||||
-S
|
||||
-sandbox ...
|
||||
-seed ...
|
||||
-serial ...
|
||||
-show-cursor
|
||||
-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 ...
|
||||
cpu-add ...
|
||||
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_cache_size ...
|
||||
migrate_set_capability ...
|
||||
migrate_set_downtime ...
|
||||
migrate_set_parameter ...
|
||||
migrate_set_speed ...
|
||||
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-latency-histogram-set
|
||||
block_passwd
|
||||
block_resize
|
||||
block_set_io_throttle
|
||||
block-set-write-threshold
|
||||
block_stream
|
||||
change
|
||||
change-vnc-password
|
||||
chardev-add
|
||||
chardev-change
|
||||
chardev-remove
|
||||
chardev-send-break
|
||||
client_migrate_info
|
||||
closefd
|
||||
cont
|
||||
cpu
|
||||
cpu-add
|
||||
device_add
|
||||
device_del
|
||||
device-list-properties
|
||||
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-cache-size
|
||||
migrate-set-capabilities
|
||||
migrate_set_downtime
|
||||
migrate_set_speed
|
||||
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-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
|
||||
query-cpus-fast
|
||||
query-current-machine
|
||||
query-display-options
|
||||
query-dump
|
||||
query-dump-guest-memory-capability
|
||||
query-events
|
||||
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-cache-size
|
||||
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-xen-replication-status
|
||||
quit
|
||||
remove-fd
|
||||
ringbuf-read
|
||||
ringbuf-write
|
||||
rtc-reset-reinjection
|
||||
screendump
|
||||
send-key
|
||||
set_link
|
||||
set_password
|
||||
stop
|
||||
system_powerdown
|
||||
system_reset
|
||||
system_wakeup
|
||||
trace-event-get-state
|
||||
trace-event-set-state
|
||||
transaction
|
||||
watchdog-set-action
|
||||
|
||||
- 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|virtio-iommu-pci-transitional|
|
||||
vhost-user-vsock-device|vhost-user-vsock-pci|
|
||||
vhost-user-vsock-pci-non-transitional|
|
||||
vhost-user-vsock-pci-transitional]
|
||||
(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-hax
|
||||
-enable-sync-profile
|
||||
-fda/-fdb ...
|
||||
-g ...
|
||||
-hda/-hdb/-hdc/-hdd ...
|
||||
-icount ...
|
||||
-L ...
|
||||
-M
|
||||
|
||||
[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]
|
||||
|
||||
-machine
|
||||
|
||||
[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]
|
||||
|
||||
-mtdblock file
|
||||
-net [dump|socket|vde] ...
|
||||
-netdev [dump|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
|
||||
-tb-size ...
|
||||
-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:
|
||||
acl_add ...
|
||||
acl_policy ...
|
||||
acl_remove ...
|
||||
acl_reset ...
|
||||
acl_show ...
|
||||
block_job_cancel ...
|
||||
block_job_complete ...
|
||||
block_job_pause ...
|
||||
block_job_resume ...
|
||||
block_job_set_speed ...
|
||||
block_passwd ...
|
||||
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 ...
|
||||
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-sev
|
||||
query-sev-launch-measure
|
||||
query-tpm
|
||||
query-tpm-models
|
||||
query-tpm-types
|
||||
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
|
@ -1,933 +0,0 @@
|
||||
[qemu-x86 package document]
|
||||
|
||||
POST SLES 15 SP2 QEMU/KVM RELATED SUPPORT STATEMENTS
|
||||
|
||||
Overview
|
||||
--------
|
||||
|
||||
The QEMU based packages included with SLES 15 SP2 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 SP2
|
||||
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 SP2 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
|
||||
-----------------------------------------------------
|
||||
|
||||
- http://wiki.qemu-project.org/Features/LegacyRemoval
|
||||
This website tracks feature 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 is also tracked
|
||||
in Appendix B of the qemu-doc.* files installed with the qemu package.
|
||||
|
||||
- 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 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:
|
||||
-device ide-drive (use ide-hd or ide-cd instead)
|
||||
-device scsi-disk (use scsi-hd or scsi-cd instead)
|
||||
-device virtio-blk,scsi= (use virtio-scsi instead)
|
||||
-device virtio-blk-pci,scsi= (use virtio-scsi instead)
|
||||
-realtime mlock= (use -overcommit mem-lock= instead)
|
||||
|
||||
- These previously supported command line options are no longer supported:
|
||||
<previously mentioned items have been moved to another category>
|
||||
|
||||
- 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)
|
||||
-sdl
|
||||
-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:
|
||||
-no-kvm-pit
|
||||
-soundhw (use -device ... instead)
|
||||
-tb-size
|
||||
|
||||
- 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.
|
||||
|
||||
- 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 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
|
||||
-tdf (note: mistakenly listed previously as supported)
|
||||
-xen-create
|
||||
|
||||
- The previously unsupported machine types pc-1.0, pc-1.1, pc-1.2 and pc-1.3 are
|
||||
now deprecated.
|
||||
|
||||
- The previously unsupported machine types pc-0.10, pc-0.13, pc-0.14 and
|
||||
pc-0.11 are no longer recognized.
|
||||
|
||||
- These previously supported QMP commands are now deprecated:
|
||||
change (use blockdev-change-medium or change-vnc-password instead)
|
||||
cpu-add
|
||||
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
|
||||
cpu-add
|
||||
migrate_set_downtime
|
||||
migrate_set_speed
|
||||
|
||||
- These previously supported monitor commands are no longer recognized:
|
||||
cpu_set
|
||||
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:
|
||||
acl_add ...
|
||||
acl_policy ...
|
||||
acl_remove ...
|
||||
acl_reset ...
|
||||
acl_show ...
|
||||
|
||||
- These previously unsupported monitor commands are no longer recognized:
|
||||
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-4.2
|
||||
instead of pc-i440fx-3.1) if possible.
|
||||
|
||||
- The following command line options are supported:
|
||||
-accel ...
|
||||
-add-fd ...
|
||||
-alt-grab
|
||||
-append ...
|
||||
-audio-help
|
||||
-audiodev
|
||||
-bios ...
|
||||
-blockdev ...
|
||||
-boot ...
|
||||
-cdrom ...
|
||||
-chardev ..
|
||||
-cpu ... (all except host)
|
||||
-ctrl-grab
|
||||
-d ...
|
||||
-daemonize
|
||||
-debugcon ...
|
||||
-device
|
||||
|
||||
[isa-serial|isa-parallel|isa-fdc|ide-drive|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-disk|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|
|
||||
vhost-vsock-pci-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|mc146818rtc]
|
||||
(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|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|q35|
|
||||
pc-q35-2.6|pc-q35-2.9|pc-q35-2.11|pc-q35-3.1|pc-q35-4.2|xenfv|xenfv-4.2]
|
||||
|
||||
-machine
|
||||
|
||||
[help|?|none|pc|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|q35|pc-q35-2.6|pc-q35-2.9|pc-q35-2.11|
|
||||
pc-q35-3.1|pc-q35-4.2|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 ...
|
||||
-realtime ...
|
||||
-rtc ...
|
||||
-runas ...
|
||||
-s
|
||||
-S
|
||||
-sandbox ...
|
||||
-seed ...
|
||||
-serial ...
|
||||
-show-cursor
|
||||
-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 ...
|
||||
cpu-add ...
|
||||
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_cache_size ...
|
||||
migrate_set_capability ...
|
||||
migrate_set_downtime ...
|
||||
migrate_set_parameter ...
|
||||
migrate_set_speed ...
|
||||
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-latency-histogram-set
|
||||
block_passwd
|
||||
block_resize
|
||||
block_set_io_throttle
|
||||
block-set-write-threshold
|
||||
block_stream
|
||||
change
|
||||
change-vnc-password
|
||||
chardev-add
|
||||
chardev-change
|
||||
chardev-remove
|
||||
chardev-send-break
|
||||
client_migrate_info
|
||||
closefd
|
||||
cont
|
||||
cpu
|
||||
cpu-add
|
||||
device_add
|
||||
device_del
|
||||
device-list-properties
|
||||
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-cache-size
|
||||
migrate-set-capabilities
|
||||
migrate_set_downtime
|
||||
migrate_set_speed
|
||||
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-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
|
||||
query-cpus-fast
|
||||
query-current-machine
|
||||
query-display-options
|
||||
query-dump
|
||||
query-dump-guest-memory-capability
|
||||
query-events
|
||||
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-cache-size
|
||||
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-xen-replication-status
|
||||
quit
|
||||
remove-fd
|
||||
ringbuf-read
|
||||
ringbuf-write
|
||||
rtc-reset-reinjection
|
||||
screendump
|
||||
send-key
|
||||
set_link
|
||||
set_password
|
||||
set-numa-node
|
||||
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
|
||||
|
||||
- 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|
|
||||
virtio-iommu-pci-transitional|xen-sysdev|imx.usbphy|vmbus-bridge|
|
||||
vhost-user-vsock-device|vhost-user-vsock-pci|
|
||||
vhost-user-vsock-pci-non-transitional|
|
||||
vhost-user-vsock-pci-transitional|virtio-mem|virtio-mem-pci]
|
||||
(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-hax
|
||||
-enable-sync-profile
|
||||
-g ...
|
||||
-icount ...
|
||||
-L ...
|
||||
-M
|
||||
|
||||
[isapc|microvm|pc-1.0|pc-1.1|pc-1.2|pc-1.3|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-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]
|
||||
|
||||
-machine
|
||||
|
||||
[isapc|microvm|pc-1.0|pc-1.1|pc-1.2|pc-1.3|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-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]
|
||||
|
||||
-mtdblock file
|
||||
-net [dump|socket|vde] ...
|
||||
-netdev [dump|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 ...
|
||||
-tb-size ...
|
||||
-tpmdev emulator ...
|
||||
-vga [cg3|tcx|virtio|vmware]
|
||||
-win2k-hack
|
||||
|
||||
- The following monitor commands are unsupported:
|
||||
acl_add ...
|
||||
acl_policy ...
|
||||
acl_remove ...
|
||||
acl_reset ...
|
||||
acl_show ...
|
||||
block_job_cancel ...
|
||||
block_job_complete ...
|
||||
block_job_pause ...
|
||||
block_job_resume ...
|
||||
block_job_set_speed ...
|
||||
block_passwd ...
|
||||
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 ...
|
||||
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-sev
|
||||
query-sev-launch-measure
|
||||
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
|
@ -1,25 +0,0 @@
|
||||
From: Bruce Rogers <brogers@suse.com>
|
||||
Date: Sat, 5 Oct 2019 09:09:42 -0600
|
||||
Subject: test: add mapping from arch of i686 to qemu_arch=i386
|
||||
|
||||
While we don't specifically set QEMU_PROG, the code which detects the
|
||||
host architecture needs a little help mapping the output of uname -m to
|
||||
what the qemu project uses to reference that architecture.
|
||||
|
||||
Signed-off-by: Bruce Rogers <brogers@suse.com>
|
||||
---
|
||||
tests/qemu-iotests/common.config | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/tests/qemu-iotests/common.config b/tests/qemu-iotests/common.config
|
||||
index 9bd1a5a6fc8367c336e9f51fe22f..e1c6ffa0cca3a8f14feeb38d6da8 100644
|
||||
--- a/tests/qemu-iotests/common.config
|
||||
+++ b/tests/qemu-iotests/common.config
|
||||
@@ -24,6 +24,7 @@ PATH=".:$PATH"
|
||||
HOSTOS=$(uname -s)
|
||||
arch=$(uname -m)
|
||||
[[ "$arch" =~ "ppc64" ]] && qemu_arch=ppc64 || qemu_arch="$arch"
|
||||
+[[ "$arch" = "i686" ]] && qemu_arch=i386
|
||||
|
||||
# make sure we have a standard umask
|
||||
umask 022
|
@ -1,107 +0,0 @@
|
||||
From: Bruce Rogers <brogers@suse.com>
|
||||
Date: Tue, 15 Oct 2019 11:16:14 -0600
|
||||
Subject: tests: Fix block tests to be compatible with membarrier configuration
|
||||
|
||||
The use of membarriers collides with the block test's practice of
|
||||
SIGKILLing test vm's. Have them quit politely. Tests: 130, 153 - and
|
||||
though test 161 seems to have the same issue, it is not yet fixed, but
|
||||
just marked here as possibly needing a fix.
|
||||
|
||||
Signed-off-by: Bruce Rogers <brogers@suse.com>
|
||||
---
|
||||
tests/qemu-iotests/130 | 6 ++++--
|
||||
tests/qemu-iotests/130.out | 2 ++
|
||||
tests/qemu-iotests/153 | 6 ++++--
|
||||
tests/qemu-iotests/153.out | 4 ++++
|
||||
4 files changed, 14 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/tests/qemu-iotests/130 b/tests/qemu-iotests/130
|
||||
index a7b365701c490b4b4894eb0c26a8..02cb0f8216a6618b5e0dc526c361 100755
|
||||
--- a/tests/qemu-iotests/130
|
||||
+++ b/tests/qemu-iotests/130
|
||||
@@ -63,7 +63,8 @@ echo
|
||||
_launch_qemu -drive id=testdisk,file="$TEST_IMG",backing.file.filename="$TEST_IMG.base"
|
||||
_send_qemu_cmd $QEMU_HANDLE "commit testdisk" "(qemu)"
|
||||
_send_qemu_cmd $QEMU_HANDLE '' '(qemu)'
|
||||
-_cleanup_qemu
|
||||
+_send_qemu_cmd $QEMU_HANDLE 'quit' ''
|
||||
+wait=1 _cleanup_qemu
|
||||
_img_info | _filter_img_info
|
||||
|
||||
# Make sure that if there was a backing file that was just overridden on the
|
||||
@@ -72,7 +73,8 @@ _make_test_img -F raw -b "$TEST_IMG.orig" 64M
|
||||
_launch_qemu -drive id=testdisk,file="$TEST_IMG",backing.file.filename="$TEST_IMG.base",backing.driver=$IMGFMT
|
||||
_send_qemu_cmd $QEMU_HANDLE "commit testdisk" "(qemu)"
|
||||
_send_qemu_cmd $QEMU_HANDLE '' '(qemu)'
|
||||
-_cleanup_qemu
|
||||
+_send_qemu_cmd $QEMU_HANDLE 'quit' ''
|
||||
+wait=1 _cleanup_qemu
|
||||
_img_info | _filter_img_info
|
||||
|
||||
echo
|
||||
diff --git a/tests/qemu-iotests/130.out b/tests/qemu-iotests/130.out
|
||||
index e45285ccc311522481ac1b27ba99..7168bdf70c3eb32d4de0d28bb947 100644
|
||||
--- a/tests/qemu-iotests/130.out
|
||||
+++ b/tests/qemu-iotests/130.out
|
||||
@@ -11,6 +11,7 @@ virtual size: 64 MiB (67108864 bytes)
|
||||
QEMU X.Y.Z monitor - type 'help' for more information
|
||||
(qemu) commit testdisk
|
||||
(qemu)
|
||||
+(qemu) quit
|
||||
image: TEST_DIR/t.IMGFMT
|
||||
file format: IMGFMT
|
||||
virtual size: 64 MiB (67108864 bytes)
|
||||
@@ -18,6 +19,7 @@ Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864 backing_file=TEST_DIR/t
|
||||
QEMU X.Y.Z monitor - type 'help' for more information
|
||||
(qemu) commit testdisk
|
||||
(qemu)
|
||||
+(qemu) quit
|
||||
image: TEST_DIR/t.IMGFMT
|
||||
file format: IMGFMT
|
||||
virtual size: 64 MiB (67108864 bytes)
|
||||
diff --git a/tests/qemu-iotests/153 b/tests/qemu-iotests/153
|
||||
index 34045ea3cfeb5e30acac17ae8a10..b5cec71dd9a718055d9264e51946 100755
|
||||
--- a/tests/qemu-iotests/153
|
||||
+++ b/tests/qemu-iotests/153
|
||||
@@ -201,7 +201,8 @@ _send_qemu_cmd $QEMU_HANDLE \
|
||||
'return'
|
||||
_run_cmd $QEMU_IMG commit -b "${TEST_IMG}.b" "${TEST_IMG}.c"
|
||||
|
||||
-_cleanup_qemu
|
||||
+_send_qemu_cmd $QEMU_HANDLE "{ 'execute': 'quit' }" ''
|
||||
+wait=1 _cleanup_qemu
|
||||
|
||||
_launch_qemu
|
||||
|
||||
@@ -253,7 +254,8 @@ _send_qemu_cmd $QEMU_HANDLE \
|
||||
|
||||
_run_cmd $QEMU_IO "${TEST_IMG}" -c 'write 0 512'
|
||||
|
||||
-_cleanup_qemu
|
||||
+_send_qemu_cmd $QEMU_HANDLE "{ 'execute': 'quit' }" ''
|
||||
+wait=1 _cleanup_qemu
|
||||
|
||||
echo
|
||||
echo "== Detecting -U and force-share conflicts =="
|
||||
diff --git a/tests/qemu-iotests/153.out b/tests/qemu-iotests/153.out
|
||||
index 8a79e1ee870d72c6d346898113b1..d1d6b673b22d5443700ae9c146c7 100644
|
||||
--- a/tests/qemu-iotests/153.out
|
||||
+++ b/tests/qemu-iotests/153.out
|
||||
@@ -424,6 +424,8 @@ Is another process using the image [TEST_DIR/t.qcow2]?
|
||||
_qemu_img_wrapper commit -b TEST_DIR/t.qcow2.b TEST_DIR/t.qcow2.c
|
||||
{ 'execute': 'qmp_capabilities' }
|
||||
{"return": {}}
|
||||
+{"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "SHUTDOWN", "data": {"guest": false, "reason": "host-qmp-quit"}}
|
||||
+{"return": {}}
|
||||
Adding drive
|
||||
{ 'execute': 'human-monitor-command', 'arguments': { 'command-line': 'drive_add 0 if=none,id=d0,file=TEST_DIR/t.IMGFMT' } }
|
||||
{"return": "OKrn"}
|
||||
@@ -457,6 +459,8 @@ Closing the other
|
||||
{"return": ""}
|
||||
|
||||
_qemu_io_wrapper TEST_DIR/t.qcow2 -c write 0 512
|
||||
+{"return": {}}
|
||||
+{"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "SHUTDOWN", "data": {"guest": false, "reason": "host-qmp-quit"}}
|
||||
|
||||
== Detecting -U and force-share conflicts ==
|
||||
|
@ -1,27 +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
|
||||
|
||||
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 5a00d36d17878376380430dad705..390cca9027e918f1a0d252753ce5 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
|
||||
|
@ -1,27 +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
|
||||
|
||||
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>
|
||||
---
|
||||
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 de680cf1c7c92e50b82aa2bc0262..4f2557cc568beed038223af7660b 100644
|
||||
--- a/tests/qemu-iotests/common.qemu
|
||||
+++ b/tests/qemu-iotests/common.qemu
|
||||
@@ -76,7 +76,7 @@ _timed_wait_for()
|
||||
timeout=yes
|
||||
|
||||
QEMU_STATUS[$h]=0
|
||||
- while IFS= read -t ${QEMU_COMM_TIMEOUT} resp <&${QEMU_OUT[$h]}
|
||||
+ while IFS= read -t $((${QEMU_COMM_TIMEOUT}*3)) resp <&${QEMU_OUT[$h]}
|
||||
do
|
||||
if [ -z "${silent}" ] && [ -z "${mismatch_only}" ]; then
|
||||
echo "${resp}" | _filter_testdir | _filter_qemu \
|
824
update_git.sh
824
update_git.sh
@ -1,824 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
# update_git.sh: script to manage package maintenance using a git-based
|
||||
# workflow. Commands are as follows:
|
||||
# git2pkg (update package spec file and patches from git)
|
||||
# pkg2git (update git (frombundle branch) from the package "bundleofbundles")
|
||||
# refresh (refresh spec file from spec file template and "bundlofbundles")
|
||||
#
|
||||
# (default is git2pkg)
|
||||
|
||||
# TODO NOTES:
|
||||
|
||||
# after ensuring current status of local repo is clean, incl submodules, we checkout master+submodules, then also ensure they're clean, then checkout the commit or tag corresponding to latest / stable-release + submodules (but don't bother to verift that's clean) - so this is a detached HEAD for stable-release and IS master (almost certainly) for LATEST. WOW - is that what we need to be doing!?!?! At least it seems to be working for the cases I've seen!!!!
|
||||
# initbundle operates from the current checked out state of the local superproject, to get the submodule ids - CORRECT!!!!
|
||||
# the LATEST processing of cloning the local repo, clones master - but perhaps it doesn't matter? because it adds upstream as a remote and probably gets most things from there? INVESTIGATE!!!!!!!!!!!!!!!!!!!1
|
||||
# bundle2local checks out master in local repo to ensure we're off the frombundle branch (doesn't seem needed the way the script currently is). It fetches the bundle's head (FETCH_HEAD) REQUIRING that the base commit be present (which it seems to be. Then it creates the frombundle branch, with the current FETCH_HEAD (SAME AS IN BUNDLE, RIGHT?)
|
||||
# The LATEST's rebase loop checks out the frombundle branch (with force), so we are now OFF of the "correct checkout" that happened at the beginning, it DELETES the GIT_BRANCH (so in this case it DIDN'T MATTER WHAT WAS THERE WHEN SCRIPT STARTED !!!!!!! WARNING !!!!!, branches off of the frombundle branch (w/checkout), then rebases that (which came from bundle) onto the current superproject, or submodule commit id.
|
||||
# At this point, if the GIT_BRANCH rebased ok, it's ready for making a patchqueue, out of, if the rebase failed, it's time to manually fix that.!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!1
|
||||
|
||||
# LATEST processing implies updated upstream/master IS the right thing
|
||||
# HOW do we protect against a bad bundle being created (we do have the build service's tracking of previous files - is that sufficient?
|
||||
# initbundle - what does it need? Currently we take the default branch in local superproject for the superproject and submodule commit ids, so it needs to be right! (ie which ever branch it is (DECIDE!), make it the RIGHT ONE for this release. It takes the commits from the $GIT_BUNDLE branch of each of superproject and submodule repos, which are beyond above found commits. IT CERTIANLY SEEMS REASONABLE THAT WE WOULD HAVE THE $$GIT_BRANCH BRANCH BE THE DEFAULT AND CORRECT BUT HOW DO WE GUARANTEE THATS OK? GIVEN OUR REQS HERE QEMU_VERSION CAN BE GRABBED HERE IN LOCAL SUPERPROJECT RIGHT AWAY!
|
||||
# bundle2local - what does it need? This checks out local master just to get off of frombundle (could have been $GIT_BRANCH as well) No other req's
|
||||
# bundle2spec - what does it need? THIS SHOULD HAVE LATEST SPLIT OUT!!!! We allow this alone, so see what setup it alone needs - for this one particularly, we don't want to REQUIRE local repo. FOR NOW I ASSUME THE RIGHT THING IS CHECKED OUT!
|
||||
#
|
||||
# SEEMS WE SHOULD NOT,NOT,NOT require user to have previously updated, or set local repo a certain way, but for us to enforce it or actually do it
|
||||
# TODO: confirm local repo present, correct remotes, correct local branches, somehow validate local branch content against remote, ...
|
||||
#
|
||||
# In both cases we DO require the $GIT_BRANCH to exist, and should confirm that the appropriate upstream basis commit is indeed part of that. In the LATEST case, we can treat master as a source for initial current upstream.
|
||||
|
||||
set -e
|
||||
|
||||
source ./config.sh
|
||||
|
||||
declare -A COMMIT_IDS_BY_SUBMODULE_PATH
|
||||
|
||||
# Get version info from the packages' tarball - decode and do some checks
|
||||
BASE_RE="qemu-[[:digit:]]+(\.[[:digit:]]+){2}(-rc[[:digit:]])?"
|
||||
EXTRA_RE="\+git\.[[:digit:]]+\.([[:xdigit:]]+)"
|
||||
SUFFIX_RE="\.tar\.xz"
|
||||
SIG_SUFFIX_RE="\.tar\.xz\.sig"
|
||||
QEMU_TARBALL=($(find -maxdepth 1 -type f -regextype posix-extended -regex \
|
||||
"\./$BASE_RE($EXTRA_RE)?$SUFFIX_RE" -printf "%f "))
|
||||
QEMU_TARBALL_SIG=($(find -maxdepth 1 -type f -regextype posix-extended -regex \
|
||||
"\./$BASE_RE($EXTRA_RE)?$SIG_SUFFIX_RE" -printf "%f "))
|
||||
|
||||
if [ ${#QEMU_TARBALL[@]} -gt 1 ]; then
|
||||
echo "Multiple qemu tarballs detected. Please clean up"
|
||||
exit
|
||||
fi
|
||||
if [ ${#QEMU_TARBALL_SIG[@]} -gt 1 ]; then
|
||||
echo "Multiple qemu tarballs signature files detected. Please clean up"
|
||||
exit
|
||||
fi
|
||||
OLD_SOURCE_VERSION_AND_EXTRA=$(echo $QEMU_TARBALL 2>/dev/null | head --bytes=-8\
|
||||
| cut --bytes=6-)
|
||||
VERSION_EXTRA=$(echo $OLD_SOURCE_VERSION_AND_EXTRA|awk -F+ '{if ($2) print \
|
||||
"+"$2}')
|
||||
if [ "$OLD_SOURCE_VERSION_AND_EXTRA" = "" ]; then
|
||||
echo "ERROR: No tarball found!"
|
||||
exit
|
||||
fi
|
||||
|
||||
#==============================================================================
|
||||
|
||||
TEMP_CHECK() {
|
||||
|
||||
# Validate that all the local repos that we currently have patches in are available
|
||||
# TEMPORARY REQUIREMENT!
|
||||
for entry in ${REQUIRED_LOCAL_REPO_MAP[@]}; do
|
||||
if [[ -e $(readlink -f ${entry}) ]]; then
|
||||
if $(git -C $entry branch| grep -F "$GIT_BRANCH" >/dev/null); then
|
||||
:
|
||||
else
|
||||
echo "Didn't find the $GIT_BRANCH branch in repo at $entry"
|
||||
exit
|
||||
fi
|
||||
else
|
||||
echo "ERROR! For now, you need to have these local git repos available:"
|
||||
echo ${REQUIRED_LOCAL_REPO_MAP[@]}
|
||||
exit
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
#==============================================================================
|
||||
|
||||
initbundle() {
|
||||
# The bundle tarball has git bundles stored in a directory structure which mimics the
|
||||
# submodule locations in the containing git repo. Also at that same dir level
|
||||
# is a file named repo which contains the one line git repo url (with git:// or
|
||||
# http(s) prefix). The bundles are named as follows:
|
||||
# "{path/}{git_sha}.{bundle}", where {path/} isn't present for
|
||||
# the top (qemu) bundle (ie it's for submodules).
|
||||
|
||||
SUBMODULE_COMMIT_IDS=($(git -C ${LOCAL_REPO_MAP[0]} submodule status --recursive|awk '{print $1}'))
|
||||
SUBMODULE_DIRS=($(git -C ${LOCAL_REPO_MAP[0]} submodule status --recursive|awk '{print $2}'))
|
||||
SUBMODULE_COUNT=${#SUBMODULE_COMMIT_IDS[@]}
|
||||
# TODO: do this with simply math - ie: use (( ... ))
|
||||
if [[ "$REPO_COUNT" != "$(expr $SUBMODULE_COUNT + 1)" ]]; then
|
||||
echo "ERROR: submodule count doesn't match the REPO_COUNT variable in config.sh file!"
|
||||
exit
|
||||
fi
|
||||
rm -rf $GIT_DIR
|
||||
rm -rf $BUNDLE_DIR
|
||||
mkdir -p $BUNDLE_DIR
|
||||
for (( i=0; i <$SUBMODULE_COUNT; i++ )); do
|
||||
mkdir -p $BUNDLE_DIR/${SUBMODULE_DIRS[$i]}
|
||||
# what should this file be? for now use an extension of id
|
||||
touch $BUNDLE_DIR/${SUBMODULE_DIRS[$i]}/${SUBMODULE_COMMIT_IDS[$i]}.id
|
||||
done
|
||||
if [ "$GIT_UPSTREAM_COMMIT_ISH" = "LATEST" ]; then
|
||||
GIT_UPSTREAM_COMMIT=$NEW_COMMIT_ISH_FULL
|
||||
else
|
||||
# TODO: make this smarter, or change something - works for tag, but not normal commit?
|
||||
GIT_UPSTREAM_COMMIT=$(git -C ${LOCAL_REPO_MAP[0]} show-ref -d $GIT_UPSTREAM_COMMIT_ISH|grep -F "^{}"|awk '{print $1}')
|
||||
fi
|
||||
touch $BUNDLE_DIR/$GIT_UPSTREAM_COMMIT.id
|
||||
|
||||
# Now go through all the submodule local repos that are present and create a bundle file for the patches found there
|
||||
for (( i=0; i <$REPO_COUNT; i++ )); do
|
||||
if [[ -e $(readlink -f ${LOCAL_REPO_MAP[$i]}) ]]; then
|
||||
SUBDIR=${PATCH_PATH_MAP[$i]}
|
||||
GITREPO_COMMIT_ISH=($BUNDLE_DIR/$SUBDIR*.id)
|
||||
if [[ $GITREPO_COMMIT_ISH =~ .*(.{40})[.]id ]]; then
|
||||
GITREPO_COMMIT_ISH=${BASH_REMATCH[1]}
|
||||
echo "Using $GITREPO_COMMIT_ISH"
|
||||
PATCH_RANGE_INDEX=$i
|
||||
mkdir -p $GIT_DIR/$SUBDIR
|
||||
git -C $GIT_DIR/$SUBDIR init
|
||||
git -C $GIT_DIR/$SUBDIR remote add origin file://$(readlink -f \
|
||||
${LOCAL_REPO_MAP[$PATCH_RANGE_INDEX]})
|
||||
if [[ $(git -C $GIT_DIR/$SUBDIR ls-remote --heads origin $GIT_BRANCH) ]]; then
|
||||
git -C $GIT_DIR/$SUBDIR fetch origin $GIT_BRANCH
|
||||
if [[ $(git -C $GIT_DIR/$SUBDIR rev-list $GITREPO_COMMIT_ISH..FETCH_HEAD) ]]; then
|
||||
git -C $GIT_DIR/$SUBDIR bundle create $BUNDLE_DIR/$SUBDIR$GITREPO_COMMIT_ISH.bundle $GITREPO_COMMIT_ISH..FETCH_HEAD
|
||||
#TODO: post-process repo info to avoid un-needed diffs (eg git vs https)
|
||||
git -C $(readlink -f ${LOCAL_REPO_MAP[$PATCH_RANGE_INDEX]}) remote get-url origin >$BUNDLE_DIR/$SUBDIR/repo
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
done
|
||||
# keep diffs to a minimum - touch bundle files to "something common"
|
||||
tar --format gnu --xz \
|
||||
--numeric-owner \
|
||||
--owner=0 \
|
||||
--group=0 \
|
||||
--mtime="@$(date -r qemu-$SOURCE_VERSION$VERSION_EXTRA.tar.xz +%s)" \
|
||||
--create \
|
||||
-f bundles.tar.xz -C $BUNDLE_DIR .
|
||||
rm -rf $BUNDLE_DIR
|
||||
rm -rf $GIT_DIR
|
||||
}
|
||||
|
||||
#==============================================================================
|
||||
|
||||
bundle2local() {
|
||||
rm -rf $BUNDLE_DIR
|
||||
mkdir -p $BUNDLE_DIR
|
||||
tar xJf bundles.tar.xz -C $BUNDLE_DIR
|
||||
BUNDLE_FILES=$(find $BUNDLE_DIR -printf "%P\n"|grep "bundle$")
|
||||
|
||||
for entry in ${BUNDLE_FILES[@]}; do
|
||||
if [[ $entry =~ ^(.*)[/]*([a-f0-9]{40})[.]bundle$ ]]; then
|
||||
SUBDIR=${BASH_REMATCH[1]}
|
||||
GITREPO_COMMIT_ISH=${BASH_REMATCH[2]}
|
||||
else
|
||||
echo "ERROR! BAD BUNDLE CONTENT!"
|
||||
exit
|
||||
fi
|
||||
for (( i=0; i <$REPO_COUNT; i++ )); do
|
||||
if [[ "$SUBDIR" = "${PATCH_PATH_MAP[$i]}" ]]; then
|
||||
PATCH_RANGE_INDEX=$i
|
||||
break
|
||||
fi
|
||||
done
|
||||
|
||||
LOCAL_REPO=$(readlink -f ${LOCAL_REPO_MAP[$PATCH_RANGE_INDEX]})
|
||||
if [ -e $LOCAL_REPO ]; then
|
||||
git -C $LOCAL_REPO remote remove bundlerepo || true
|
||||
# git won't let you delete a branch we're on - so get onto master temporarily (TODO: is there a better approach?)
|
||||
git -C $LOCAL_REPO checkout master -f
|
||||
git -C $LOCAL_REPO branch -D frombundle || true
|
||||
git -C $LOCAL_REPO remote add bundlerepo $BUNDLE_DIR/$entry
|
||||
git -C $LOCAL_REPO fetch bundlerepo FETCH_HEAD
|
||||
git -C $LOCAL_REPO branch frombundle FETCH_HEAD
|
||||
git -C $LOCAL_REPO remote remove bundlerepo
|
||||
else
|
||||
echo "No local repo $LOCAL_REPO corresponding to archived git bundle!"
|
||||
exit
|
||||
fi
|
||||
done
|
||||
rm -rf $BUNDLE_DIR
|
||||
}
|
||||
|
||||
#==============================================================================
|
||||
|
||||
redo_tarball_and_rebase_patches() {
|
||||
rm -rf $GIT_DIR
|
||||
|
||||
#!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||
# CREATE TARBALL, USING FRESH REPO - WE COULD RELY MORE ON LOCAL IF WE WERE MORE CAREFUL
|
||||
#!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||
|
||||
# TODO: WHAT IS THIS NEXT LINE EVEN DOING FOR US?? (OK, it's initing a repo, what do we rely on there?)
|
||||
git clone -ls ${LOCAL_REPO_MAP[0]} $GIT_DIR -b master --single-branch &>/dev/null
|
||||
echo "Please wait..."
|
||||
(cd $GIT_DIR && git remote add upstream \
|
||||
git://git.qemu-project.org/qemu.git &>/dev/null)
|
||||
(cd $GIT_DIR && git remote update upstream &>/dev/null)
|
||||
(cd $GIT_DIR && git checkout $NEW_COMMIT_ISH &>/dev/null)
|
||||
# As an alternative, we could add a --recurse-submodules to the checkout instead here as well, right?
|
||||
#UPSTREAM DOESNT DO THIS (time takes 17 minutes!):
|
||||
# (cd $GIT_DIR && git submodule update --init --recursive &>/dev/null)
|
||||
#INSTEAD THESE NEXT TWO LINES ARE WHAT IS DONE (these take 9 minutes and 3 minutes respectively):
|
||||
(cd $GIT_DIR && git submodule update --init &>/dev/null)
|
||||
(cd $GIT_DIR/roms/edk2 && git submodule update --init &>/dev/null)
|
||||
VERSION_EXTRA=+git.$NOW_SECONDS.$NEW_COMMIT_ISH
|
||||
if (cd ${LOCAL_REPO_MAP[0]} && git describe --exact-match $NEW_COMMIT_ISH \
|
||||
&>/dev/null); then
|
||||
if [ "$X" = "50" ]; then
|
||||
echo "Ignoring non-standard tag"
|
||||
else
|
||||
# there is no VERSION_EXTRA
|
||||
VERSION_EXTRA=
|
||||
fi
|
||||
fi
|
||||
(cd $GIT_DIR/roms/seabios && git describe --tags --long --dirty > \
|
||||
.version)
|
||||
(cd $GIT_DIR/roms/skiboot && ./make_version.sh > .version)
|
||||
echo "Almost there..."
|
||||
tar --exclude=.git --transform "s,$GIT_DIR,qemu-$SOURCE_VERSION," \
|
||||
-Pcf qemu-$SOURCE_VERSION$VERSION_EXTRA.tar $GIT_DIR
|
||||
osc rm --force qemu-$OLD_SOURCE_VERSION_AND_EXTRA.tar.xz &>/dev/null ||\
|
||||
true
|
||||
osc rm --force qemu-$OLD_SOURCE_VERSION_AND_EXTRA.tar.xz.sig \
|
||||
&>/dev/null || true
|
||||
unset QEMU_TARBALL_SIG
|
||||
xz -T 0 qemu-$SOURCE_VERSION$VERSION_EXTRA.tar
|
||||
osc add qemu-$SOURCE_VERSION$VERSION_EXTRA.tar.xz
|
||||
|
||||
#!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||
# GET THE SUBMODULE COMMIT ID'S FROM THIS NEWLY MINTED QEMU CHECKOUT. WE'LL USE THAT WHEN WE REBASE OUR PATCHES
|
||||
#!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||
|
||||
# !! We (perhaps temporarily) do MORE recursive submodules, since we are tracking ALL in these scripts, while upstream doesn't include all in tarball currently
|
||||
# !!! THIS IS AT LEAST PARTLY REDUNDANT WITH THE update --init DONE ABOUT 30 LINES AGO
|
||||
(cd $GIT_DIR && git submodule update --init --recursive &>/dev/null)
|
||||
SUBMODULE_COMMIT_IDS=($(git -C $GIT_DIR submodule status --recursive|awk '{print $1}'))
|
||||
SUBMODULE_DIRS=($(git -C $GIT_DIR submodule status --recursive|awk '{print $2}'))
|
||||
SUBMODULE_COUNT=${#SUBMODULE_COMMIT_IDS[@]}
|
||||
# TODO: do this with simply math - ie: use (( ... ))
|
||||
if [[ "$REPO_COUNT" != "$(expr $SUBMODULE_COUNT + 1)" ]]; then
|
||||
echo "ERROR: submodule count doesn't match the REPO_COUNT variable in config.sh file!"
|
||||
exit
|
||||
fi
|
||||
# We have the submodule commits, but not in the PATCH ORDER which our config.sh has (see $PATCH_PATH_MAP)
|
||||
for (( i=0; i <$REPO_COUNT-1; i++ )); do
|
||||
COMMIT_IDS_BY_SUBMODULE_PATH[${SUBMODULE_DIRS[$i]}/]=${SUBMODULE_COMMIT_IDS[$i]}
|
||||
done
|
||||
COMMIT_IDS_BY_SUBMODULE_PATH[SUPERPROJECT]=$NEW_COMMIT_ISH_FULL
|
||||
|
||||
#!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||
# MOVE BUNDLE COMMITS OVER TO LOCAL frombundle BRANCH
|
||||
#!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||
|
||||
bundle2local
|
||||
|
||||
#!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||
# REBASE frombundle patches USING COMMIT_IDS_BY_SUBMODULE, ALSO USING OLD ID'S STORED IN OLD BUNDLE
|
||||
#!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||
|
||||
mkdir -p $BUNDLE_DIR
|
||||
tar xJf bundles.tar.xz -C $BUNDLE_DIR
|
||||
# Now go through all the submodule local repos that are present and create a bundle file for the patches found there
|
||||
for (( i=0; i <$REPO_COUNT; i++ )); do
|
||||
if [[ -e $(readlink -f ${LOCAL_REPO_MAP[$i]}) ]]; then
|
||||
if $(git -C ${LOCAL_REPO_MAP[$i]} branch | grep -F "frombundle" >/dev/null); then
|
||||
SUBDIR=${PATCH_PATH_MAP[$i]}
|
||||
GITREPO_COMMIT_ISH=($BUNDLE_DIR/$SUBDIR*.id)
|
||||
if [[ $GITREPO_COMMIT_ISH =~ .*(.{40})[.]id ]]; then
|
||||
GITREPO_COMMIT_ISH=${BASH_REMATCH[1]}
|
||||
fi
|
||||
git -C ${LOCAL_REPO_MAP[$i]} checkout frombundle -f
|
||||
git -C ${LOCAL_REPO_MAP[$i]} branch -D $GIT_BRANCH
|
||||
git -C ${LOCAL_REPO_MAP[$i]} checkout -b $GIT_BRANCH
|
||||
if [[ "$SUBDIR" = "" ]]; then
|
||||
SUBDIR=SUPERPROJECT
|
||||
fi
|
||||
if ! $(git -C ${LOCAL_REPO_MAP[$i]} rebase --onto ${COMMIT_IDS_BY_SUBMODULE_PATH[$SUBDIR]} $GITREPO_COMMIT_ISH >/dev/null); then
|
||||
# TODO: record that this one needs manual help!
|
||||
echo "Rebase of ${LOCAL_REPO_MAP[$i]}, branch $GIT_BRANCH needs manual help"
|
||||
REBASE_FAILS="${LOCAL_REPO_MAP[$i]} $REBASE_FAILS"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
#==============================================================================
|
||||
|
||||
bundle2spec() {
|
||||
rm -f checkpatch.log
|
||||
rm -f checkthese
|
||||
rm -rf checkdir
|
||||
rm -rf $GIT_DIR
|
||||
rm -rf $CMP_DIR
|
||||
rm -rf $BUNDLE_DIR
|
||||
mkdir -p $BUNDLE_DIR
|
||||
|
||||
#!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||
# NOW PROCESS BUNDLES INTO COMMITS AND FILL SPEC FILE
|
||||
#!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||
|
||||
tar xJf bundles.tar.xz -C $BUNDLE_DIR
|
||||
BUNDLE_FILES=$(find $BUNDLE_DIR -printf "%P\n"|grep "bundle$")
|
||||
|
||||
for entry in ${BUNDLE_FILES[@]}; do
|
||||
if [[ $entry =~ ^(.*)[/]*([a-f0-9]{40})[.]bundle$ ]]; then
|
||||
SUBDIR=${BASH_REMATCH[1]}
|
||||
GITREPO_COMMIT_ISH=${BASH_REMATCH[2]}
|
||||
else
|
||||
echo "ERROR! BAD BUNDLE CONTENT!"
|
||||
exit
|
||||
fi
|
||||
for (( i=0; i <$REPO_COUNT; i++ )); do
|
||||
if [[ "$SUBDIR" = "${PATCH_PATH_MAP[$i]}" ]]; then
|
||||
PATCH_RANGE_INDEX=$i
|
||||
break
|
||||
fi
|
||||
done
|
||||
|
||||
mkdir -p $GIT_DIR/$SUBDIR
|
||||
git -C $GIT_DIR/$SUBDIR init
|
||||
git -C $GIT_DIR/$SUBDIR remote add origin file://$(readlink -f \
|
||||
${LOCAL_REPO_MAP[$PATCH_RANGE_INDEX]})
|
||||
git -C $GIT_DIR/$SUBDIR fetch origin $GIT_BRANCH
|
||||
git -C $GIT_DIR/$SUBDIR reset --hard $GITREPO_COMMIT_ISH
|
||||
git -C $GIT_DIR/$SUBDIR remote add bundle $BUNDLE_DIR/$entry
|
||||
git -C $GIT_DIR/$SUBDIR fetch bundle FETCH_HEAD
|
||||
git -C $GIT_DIR/$SUBDIR format-patch -N --suffix= --no-renames -o $CMP_DIR -k --stat=72 \
|
||||
--indent-heuristic --zero-commit --no-signature --full-index \
|
||||
--src-prefix=a/$SUBDIR --dst-prefix=b/$SUBDIR \
|
||||
--start-number=$(expr $PATCH_RANGE_INDEX \* $PATCH_RANGE) \
|
||||
$GITREPO_COMMIT_ISH..FETCH_HEAD > /dev/null
|
||||
done
|
||||
|
||||
rm -rf $GIT_DIR
|
||||
rm -rf $BUNDLE_DIR
|
||||
|
||||
(
|
||||
CHANGED_COUNT=0
|
||||
UNCHANGED_COUNT=0
|
||||
DELETED_COUNT=0
|
||||
ADDED_COUNT=0
|
||||
TOTAL_COUNT=0
|
||||
|
||||
shopt -s nullglob
|
||||
|
||||
for i in $CMP_DIR/*; do
|
||||
# index line isn't consistent, so cut full index to normal line length
|
||||
sed -E -i 's/(^index [a-f0-9]{28})[a-f0-9]{12}([.][.][a-f0-9]{28})[a-f0-9]{12}( [0-9]{6}$)/\1\2\3/' $i
|
||||
BASENAME=$(basename $i)
|
||||
if [ "$FIVE_DIGIT_POTENTIAL" = "1" ]; then
|
||||
if [[ $BASENAME =~ [[:digit:]]{5}.* ]]; then
|
||||
:
|
||||
else
|
||||
BASENAME=0$BASENAME
|
||||
fi
|
||||
fi
|
||||
if [[ "$NUMBERED_PATCHES" = "0" ]]; then
|
||||
KEEP_COUNT=40+4+$FIVE_DIGIT_POTENTIAL+1
|
||||
else
|
||||
KEEP_COUNT=40
|
||||
fi
|
||||
tail -n +2 $i > $CMP_DIR/${BASENAME:0:$KEEP_COUNT}.patch
|
||||
rm $i
|
||||
done
|
||||
if [[ "$NUMBERED_PATCHES" = "0" ]]; then
|
||||
for i in [0-9]*.patch; do
|
||||
osc rm --force $i
|
||||
done
|
||||
# make sure that w/out the numbered prefixes, the patchnames are all unique
|
||||
mkdir checkdir
|
||||
for i in $CMP_DIR/*; do
|
||||
BASENAME=$(basename $i)
|
||||
FINALNAME=${BASENAME:4+$FIVE_DIGIT_POTENTIAL+1:40+1+5}
|
||||
if [[ -e checkdir/$FINALNAME ]]; then
|
||||
echo "ERROR! Patch name $FINALNAME is not unique! Please modify patch subject to achieve uniqueness"
|
||||
exit 1
|
||||
fi
|
||||
cp $i checkdir/$FINALNAME
|
||||
done
|
||||
CHECK_DIR=checkdir
|
||||
cp $CMP_DIR/*.patch .
|
||||
else
|
||||
CHECK_DIR=$CMP_DIR
|
||||
fi
|
||||
if [ "$FIVE_DIGIT_POTENTIAL" = "0" ]; then
|
||||
CHECK_PREFIX="0"
|
||||
else
|
||||
CHECK_PREFIX="00"
|
||||
fi
|
||||
for i in $CHECK_DIR/*; do
|
||||
BASENAME=$(basename $i)
|
||||
if [ -e $BASENAME ]; then
|
||||
if cmp -s $i $BASENAME; then
|
||||
touch --reference=$BASENAME $i
|
||||
rm $BASENAME
|
||||
let UNCHANGED_COUNT+=1
|
||||
else
|
||||
if [ "${BASENAME:0:1+$FIVE_DIGIT_POTENTIAL}" = "$CHECK_PREFIX" ]; then
|
||||
echo "$BASENAME" >> checkthese
|
||||
fi
|
||||
rm $BASENAME
|
||||
let CHANGED_COUNT+=1
|
||||
let TOTAL_COUNT+=1
|
||||
fi
|
||||
else
|
||||
echo " $BASENAME" >> qemu.changes.added
|
||||
if [ "${BASENAME:0:1+$FIVE_DIGIT_POTENTIAL}" = "$CHECK_PREFIX" ]; then
|
||||
echo "$BASENAME" >> checkthese
|
||||
fi
|
||||
let ADDED_COUNT+=1
|
||||
let TOTAL_COUNT+=1
|
||||
fi
|
||||
done
|
||||
if [ "$FIVE_DIGIT_POTENTIAL" = "0" ]; then
|
||||
NUMBERED_PATCH_RE="^[[:digit:]]{4}-.*[.]patch$"
|
||||
else
|
||||
NUMBERED_PATCH_RE="^[[:digit:]]{5}-.*[.]patch$"
|
||||
fi
|
||||
for i in *.patch; do
|
||||
if [[ $i =~ $NUMBERED_PATCH_RE ]]; then
|
||||
if [[ "$NUMBERED_PATCHES" = "1" ]]; then
|
||||
osc rm --force $i
|
||||
echo " $i" >> qemu.changes.deleted
|
||||
let DELETED_COUNT+=1
|
||||
let TOTAL_COUNT+=1
|
||||
fi
|
||||
else
|
||||
osc rm --force $i
|
||||
echo " $i" >> qemu.changes.deleted
|
||||
let DELETED_COUNT+=1
|
||||
let TOTAL_COUNT+=1
|
||||
fi
|
||||
done
|
||||
mv $CHECK_DIR/* .
|
||||
if [ -e qemu.changes.added ]; then
|
||||
xargs osc add < qemu.changes.added
|
||||
fi
|
||||
|
||||
if [[ -e checkthese ]]; then
|
||||
tar Jxf qemu-$SOURCE_VERSION$VERSION_EXTRA.tar.xz \
|
||||
qemu-$SOURCE_VERSION/scripts/checkpatch.pl --strip-components=2
|
||||
for i in $(cat checkthese); do
|
||||
./checkpatch.pl --no-tree --terse --no-summary --summary-file \
|
||||
--patch $i >> checkpatch.log || true
|
||||
done
|
||||
fi
|
||||
rm -f checkthese
|
||||
rm -f checkpatch.pl
|
||||
if [ -s checkpatch.log ]; then
|
||||
echo "WARNING: Issues reported by qemu patch checker. Please handle" \
|
||||
"ERROR items now:"
|
||||
cat checkpatch.log
|
||||
fi
|
||||
rm -f checkpatch.log
|
||||
if [ "$TOTAL_COUNT" != "0" -a "$VERSION_EXTRA" != "" -a "$OLD_COMMIT_ISH" =\
|
||||
"$NEW_COMMIT_ISH" ]; then
|
||||
# Only patches changed: update the version using current timestamp
|
||||
VERSION_EXTRA=+git.$NOW_SECONDS.$OLD_COMMIT_ISH
|
||||
osc mv qemu-$OLD_SOURCE_VERSION_AND_EXTRA.tar.xz \
|
||||
qemu-$SOURCE_VERSION$VERSION_EXTRA.tar.xz
|
||||
osc add qemu-$SOURCE_VERSION$VERSION_EXTRA.tar.xz
|
||||
fi
|
||||
|
||||
echo "QEMU version file: $QEMU_VERSION"
|
||||
echo "QEMU source version: $SOURCE_VERSION"
|
||||
echo "QEMU version extra: $VERSION_EXTRA"
|
||||
|
||||
# get rid of "rel-" prefix to the seabios version - keep any trailing git info, such as: "-44-g88ab0c1"
|
||||
SEABIOS_VERSION=${SEABIOS_VERSION:-$(tar JxfO qemu-$SOURCE_VERSION$VERSION_EXTRA.tar.xz \
|
||||
qemu-$SOURCE_VERSION/roms/seabios/.version | cut -c5- | tr '-' '_')}
|
||||
|
||||
for package in qemu; do
|
||||
while IFS= read -r line; do
|
||||
if [ "$line" = "PATCH_FILES" ]; then
|
||||
for i in [0-9]*-*.patch; do
|
||||
NUM=${i%%-*}
|
||||
DIV=$((10#$NUM/$PATCH_RANGE))
|
||||
REM=$((10#$NUM%$PATCH_RANGE))
|
||||
if [[ "$REM" = "0" ]]; then
|
||||
if [[ "$DIV" = "0" ]]; then
|
||||
echo "# Patches applied in base project:"
|
||||
else
|
||||
echo "# Patches applied in ${PATCH_PATH_MAP[$DIV]}:"
|
||||
fi
|
||||
fi
|
||||
if [[ "$FIVE_DIGIT_POTENTIAL" != "0" ]]; then
|
||||
if [[ "$NUMBERED_PATCHES" = "0" ]]; then
|
||||
PATCH_NUMBER=${i%%-*}
|
||||
echo -e "Patch$NUM: ${i:${#PATCH_NUMBER}+1:40+1+5}"
|
||||
else
|
||||
echo -e "Patch$NUM: $i"
|
||||
fi
|
||||
else
|
||||
if [[ "$NUMBERED_PATCHES" = "0" ]]; then
|
||||
PATCH_NUMBER=${i%%-*}
|
||||
echo -e "Patch$NUM: ${i:${#PATCH_NUMBER}+1:40+1+5}"
|
||||
else
|
||||
echo -e "Patch$NUM: $i"
|
||||
fi
|
||||
fi
|
||||
done
|
||||
elif [ "$line" = "PATCH_EXEC" ]; then
|
||||
for i in [0-9]*-*.patch; do
|
||||
S=$(grep "^Include-If: " $i) || true
|
||||
NUM=${i%%-*}
|
||||
if [ "$S" != "" ]; then
|
||||
echo "${S:12}"
|
||||
echo "%patch$NUM -p1"
|
||||
echo "%endif"
|
||||
else
|
||||
echo "%patch$NUM -p1"
|
||||
fi
|
||||
done
|
||||
elif [ "$line" = "INSERT_VERSIONING" ]; then
|
||||
echo "%define qemuver $QEMU_VERSION$VERSION_EXTRA"
|
||||
echo "%define srcver $SOURCE_VERSION$VERSION_EXTRA"
|
||||
echo "%define sbver $SEABIOS_VERSION"
|
||||
elif [[ "$line" =~ ^Source: ]]; then
|
||||
echo "$line"
|
||||
if [ ${#QEMU_TARBALL_SIG[@]} -eq 1 ]; then
|
||||
# We assume the signature file corresponds - just add .sig
|
||||
echo "$line.sig"|sed 's/^Source: /Source99:/'
|
||||
fi
|
||||
else
|
||||
echo "$line"
|
||||
fi
|
||||
done < $package.spec.in > $CMP_DIR/$package.spec
|
||||
if cmp -s $package.spec $CMP_DIR/$package.spec; then
|
||||
echo "$package.spec unchanged"
|
||||
else
|
||||
mv $CMP_DIR/$package.spec $package.spec
|
||||
echo "$package.spec regenerated"
|
||||
let PACKAGE_CHANGED_COUNT+=1
|
||||
fi
|
||||
|
||||
if [ "$WRITE_LOG" = "1" ]; then
|
||||
# Factory requires all deleted and added patches to be mentioned
|
||||
if [ -e qemu.changes.deleted ]; then
|
||||
echo "* Patches dropped:" >> $package.changes.proposed
|
||||
cat qemu.changes.deleted >> $package.changes.proposed
|
||||
fi
|
||||
if [ -e qemu.changes.added ]; then
|
||||
echo "* Patches added:" >> $package.changes.proposed
|
||||
cat qemu.changes.added >> $package.changes.proposed
|
||||
fi
|
||||
if [ -e $package.changes.proposed ]; then
|
||||
osc vc --file=$package.changes.proposed $package
|
||||
rm -f $package.changes.proposed
|
||||
fi
|
||||
fi
|
||||
done
|
||||
if [[ "$NUMBERED_PATCHES" = "0" ]]; then
|
||||
rm -f [0-9]*-*.patch
|
||||
fi
|
||||
if [ -e qemu.changes.deleted ]; then
|
||||
rm -f qemu.changes.deleted
|
||||
fi
|
||||
if [ -e qemu.changes.added ]; then
|
||||
rm -f qemu.changes.added
|
||||
fi
|
||||
# Decide if there is a better way to handle the no change case:
|
||||
if [[ "0" = "$(expr $CHANGED_COUNT + $DELETED_COUNT + $ADDED_COUNT)" ]]; then
|
||||
osc revert bundles.tar.xz
|
||||
fi
|
||||
echo "git patch summary"
|
||||
echo " unchanged: $UNCHANGED_COUNT"
|
||||
echo " changed: $CHANGED_COUNT"
|
||||
echo " deleted: $DELETED_COUNT"
|
||||
echo " added: $ADDED_COUNT"
|
||||
)
|
||||
|
||||
rm -rf $CMP_DIR
|
||||
rm -rf checkdir
|
||||
|
||||
osc service localrun format_spec_file
|
||||
}
|
||||
|
||||
#==============================================================================
|
||||
|
||||
usage() {
|
||||
echo "Usage:"
|
||||
echo "bash ./git_update.sh <command>"
|
||||
echo "description: package maintenance using a git-based workflow. Commands:"
|
||||
echo " git2pkg (update package spec file and patches from git. Is default)"
|
||||
echo " pkg2git (update git (frombundle branch) from the package "bundleofbundles")"
|
||||
echo " refresh (refresh spec file from spec file template and "bundlofbundles")"
|
||||
echo "(See script for details on doing 'LATEST' workflow)"
|
||||
}
|
||||
|
||||
#==============================================================================
|
||||
|
||||
explain_setup() {
|
||||
echo "Currently we require local git repos at these locations:"
|
||||
echo "${REQUIRED_LOCAL_REPO_MAP[@]}"
|
||||
echo "Where each has as it's remote the uri: https://github.com/opensuse/*.git"
|
||||
echo "and where * is replaced by the qemu-whatever, and the remote is named origin"
|
||||
echo "and the qemu or qemu submodule repos as remotes named upstream"
|
||||
}
|
||||
|
||||
#==============================================================================
|
||||
|
||||
if [[ ! -e $(readlink -f ${LOCAL_REPO_MAP[0]}) ]]; then
|
||||
echo "ERROR: Local QEMU related git repos not found. Please follow these setup instructions:"
|
||||
explain_setup
|
||||
exit
|
||||
fi
|
||||
# There are some req's on needing a recent git, and a recent osc (double chk the osc part - I guess it's related to the osc service )
|
||||
|
||||
# get the current state of the git superproject
|
||||
# TODO: This sends output to stdout which we don't want to see
|
||||
git -C ${LOCAL_REPO_MAP[0]} status --untracked-files=no --branch --porcelain=2 \
|
||||
| awk '{print "var"NR"="$3}'
|
||||
# $var1 is the current commit
|
||||
# $var2 is the current branch or 'detached', if not on a branch
|
||||
# $var3 is the current upstream branch (if set), as in eg 'origin/opensuse-5.0'
|
||||
# $var4 is not of use to us
|
||||
|
||||
# TODO: What checks should be different between LATEST and non-LATEST?
|
||||
# If we don't actually patch from the submodule repo, we shouldn't care about what's in the local one
|
||||
# Does non-LATEST really require master?
|
||||
echo "WARNING: Script using local git repos. Some operations may be time consuming..."
|
||||
#TODO: Most of these checks are not necessary
|
||||
for (( i=0; i <$REPO_COUNT; i++ )); do
|
||||
if [[ -e $(readlink -f ${LOCAL_REPO_MAP[$i]}) ]]; then
|
||||
if [[ -d ${LOCAL_REPO_MAP[$i]}/.git/rebase-merge || \
|
||||
-d ${LOCAL_REPO_MAP[$i]}/.git/rebase-apply ]]; then
|
||||
echo "ERROR! Rebase appears to be in progress in ${LOCAL_REPO_MAP[$i]}. Please resolve"
|
||||
exit
|
||||
fi
|
||||
# !! Does this presume the branch as indicated in config is the current branch? (I believe that's been my modus operandi to date, so perhaps THAT should be enforced at this point?)
|
||||
if ! git -C ${LOCAL_REPO_MAP[$i]} submodule update --init --recursive &> /dev/null; then
|
||||
echo "Please clean up state of local repo ${LOCAL_REPO_MAP[$i]} before using script"
|
||||
echo "(ensure git submodule update --init --recursive is successful)"
|
||||
exit
|
||||
fi
|
||||
if [ "$(git -C ${LOCAL_REPO_MAP[$i]} status --porcelain)" ]; then
|
||||
echo "Please clean up state of local repo ${LOCAL_REPO_MAP[$i]} before using script"
|
||||
echo "(ensure git status --porcelain produces no output)"
|
||||
exit
|
||||
fi
|
||||
if ! git -C ${LOCAL_REPO_MAP[$i]} checkout master --recurse-submodules -f &> /dev/null; then
|
||||
echo "Please clean up state of local repo ${LOCAL_REPO_MAP[$i]} before using script"
|
||||
echo "(cannot check out master, incl. it's submodules)"
|
||||
exit
|
||||
fi
|
||||
if ! git -C ${LOCAL_REPO_MAP[$i]} submodule update --init --recursive &> /dev/null; then
|
||||
echo "Please clean up state of local repo ${LOCAL_REPO_MAP[$i]} before using script"
|
||||
echo "(cannot init and update master submodules)"
|
||||
exit
|
||||
fi
|
||||
if [ "$(git -C ${LOCAL_REPO_MAP[$i]} status --porcelain)" ]; then
|
||||
echo "Please clean up state of local repo ${LOCAL_REPO_MAP[$i]} before using script"
|
||||
echo "(ensure git status --porcelain produces no output)"
|
||||
exit
|
||||
fi
|
||||
fi
|
||||
done
|
||||
if [ "$GIT_UPSTREAM_COMMIT_ISH" = "LATEST" ]; then
|
||||
if [ "$1" = "continue" ]; then
|
||||
CONTINUE_AFTER_REBASE=1
|
||||
else
|
||||
if [ "$1" = "pause" ]; then
|
||||
PAUSE_BEFORE_BUNDLE_CREATION=1
|
||||
else
|
||||
if [ "$1" ]; then
|
||||
echo "ERROR: unrecognized option '$1'. Script in LATEST mode only recognizes 'pause' and 'continue' options"
|
||||
exit
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
for (( i=0; i <$REPO_COUNT; i++ )); do
|
||||
if [[ -e $(readlink -f ${LOCAL_REPO_MAP[$i]}) ]]; then
|
||||
git -C ${LOCAL_REPO_MAP[$i]} remote update upstream &> /dev/null
|
||||
fi
|
||||
done
|
||||
NEW_COMMIT_ISH_FULL=$(cd ${LOCAL_REPO_MAP[0]} && git rev-parse upstream/master)
|
||||
NEW_COMMIT_ISH=${NEW_COMMIT_ISH_FULL:0:8}
|
||||
git -C ${LOCAL_REPO_MAP[0]} checkout $NEW_COMMIT_ISH_FULL --recurse-submodules -f &> /dev/null
|
||||
QEMU_VERSION=$(git -C ${LOCAL_REPO_MAP[0]} show upstream/master:VERSION)
|
||||
MAJOR_VERSION=$(echo $QEMU_VERSION|awk -F. '{print $1}')
|
||||
MINOR_VERSION=$(echo $QEMU_VERSION|awk -F. '{print $2}')
|
||||
X=$(echo $QEMU_VERSION|awk -F. '{print $3}')
|
||||
# 0 = release, 50 = development cycle, 90..99 equate to release candidates
|
||||
if [ "$X" != "0" -a "$X" != "50" ]; then
|
||||
if [ "$NEXT_RELEASE_IS_MAJOR" = "0" ]; then
|
||||
SOURCE_VERSION=$MAJOR_VERSION.$[$MINOR_VERSION+1].0-rc$[X-90]
|
||||
GIT_BRANCH=opensuse-$MAJOR_VERSION.$[$MINOR_VERSION+1]
|
||||
else
|
||||
SOURCE_VERSION=$[$MAJOR_VERSION+1].0.0-rc$[X-90]
|
||||
GIT_BRANCH=opensuse-$[$MAJOR_VERSION+1].0
|
||||
fi
|
||||
else
|
||||
SOURCE_VERSION=$MAJOR_VERSION.$MINOR_VERSION.$X
|
||||
if [ "$NEXT_RELEASE_IS_MAJOR" = "0" ]; then
|
||||
GIT_BRANCH=opensuse-$MAJOR_VERSION.$[$MINOR_VERSION+1]
|
||||
else
|
||||
GIT_BRANCH=opensuse-$[MAJOR_VERSION+1].0
|
||||
fi
|
||||
fi
|
||||
WRITE_LOG=0
|
||||
echo "Processing LATEST upstream changes"
|
||||
echo "(If SUCCESS is not printed upon completion, see /tmp/latest.log for issues)"
|
||||
TEMP_CHECK
|
||||
if [[ $QEMU_TARBALL =~ $BASE_RE$EXTRA_RE$SUFFIX_RE ]]; then
|
||||
OLD_COMMIT_ISH=${BASH_REMATCH[3]}
|
||||
else
|
||||
#Assume release (or release candidate) tarball with equivalent tag:
|
||||
OLD_COMMIT_ISH=$(cd ${LOCAL_REPO_MAP[0]} && git rev-list --abbrev-commit \
|
||||
--abbrev=8 -1 v$OLD_SOURCE_VERSION_AND_EXTRA)
|
||||
fi
|
||||
if [ ${#QEMU_TARBALL_SIG[@]} -ne 0 ]; then
|
||||
echo "INFO: Ignoring signature file: $QEMU_TARBALL_SIG"
|
||||
QEMU_TARBALL_SIG=
|
||||
fi
|
||||
NOW_SECONDS=$(date +%s)
|
||||
if [ "$OLD_COMMIT_ISH" != "$NEW_COMMIT_ISH" ]; then
|
||||
if [ "$CONTINUE_AFTER_REBASE" = "1" ]; then
|
||||
echo "continue after rebase selected but tarball is out of date. Continuing not possible."
|
||||
echo "If desired, save your rebase work (eg, branch $GIT_BRANCH), because otherwise it will"
|
||||
echo "be lost. Then run script again without the continue option"
|
||||
exit
|
||||
fi
|
||||
redo_tarball_and_rebase_patches &> /tmp/latest.log
|
||||
if [[ "$REBASE_FAILS" ]]; then
|
||||
echo "ERROR! Rebase of the $GIT_BRANCH branch failed in the following local git repos:"
|
||||
echo $REBASE_FAILS
|
||||
echo "Manually resolve all these rebases, then finish the workflow by passing 'continue' to script"
|
||||
if [[ "$PAUSE_BEFORE_BUNDLE_CREATION" = "1" ]]; then
|
||||
echo "Feel free to also do the work now occasioned by the selected 'pause' option"
|
||||
fi
|
||||
exit
|
||||
fi
|
||||
CONTINUE_AFTER_REBASE=1
|
||||
fi
|
||||
if [[ "$PAUSE_BEFORE_BUNDLE_CREATION" = "1" ]]; then
|
||||
echo "As requested, pausing before re-creating bundle of bundles for additional patch or specfile work"
|
||||
echo "(using current 'ready to go' $GIT_BRANCH branch of local repos to produce patches.)"
|
||||
echo "When changes are complete, finish the workflow by passing 'continue' to script"
|
||||
exit
|
||||
fi
|
||||
if [ "$CONTINUE_AFTER_REBASE" = "1" ]; then
|
||||
initbundle &>> /tmp/latest.log
|
||||
fi
|
||||
bundle2spec &>> /tmp/latest.log
|
||||
echo "SUCCESS"
|
||||
tail -9 /tmp/latest.log
|
||||
else # not LATEST
|
||||
if [ ! "$GIT_UPSTREAM_COMMIT_ISH" = "v$OLD_SOURCE_VERSION_AND_EXTRA" ]; then
|
||||
echo "Tarball name (which we decode) doesn't correspond to the \$GIT_UPSTREAM_COMMIT_ISH in config.sh"
|
||||
exit
|
||||
fi
|
||||
git -C ${LOCAL_REPO_MAP[0]} checkout $GIT_UPSTREAM_COMMIT_ISH --recurse-submodules -f &> /dev/null
|
||||
NEW_COMMIT_ISH=
|
||||
SOURCE_VERSION=$OLD_SOURCE_VERSION_AND_EXTRA
|
||||
QEMU_VERSION=$(tar JxfO qemu-$SOURCE_VERSION$VERSION_EXTRA.tar.xz qemu-$SOURCE_VERSION/VERSION)
|
||||
if [ ! "$QEMU_VERSION" = "$OLD_SOURCE_VERSION_AND_EXTRA" ]; then
|
||||
echo "Tarball name (which we decode) doesn't correspond to the VERSION file contained therein"
|
||||
exit
|
||||
fi
|
||||
MAJOR_VERSION=$(echo $QEMU_VERSION|awk -F. '{print $1}')
|
||||
MINOR_VERSION=$(echo $QEMU_VERSION|awk -F. '{print $2}')
|
||||
GIT_BRANCH=opensuse-$MAJOR_VERSION.$MINOR_VERSION
|
||||
WRITE_LOG=1
|
||||
if [ "$1" = "" ]; then
|
||||
set -- git2pkg
|
||||
fi
|
||||
case $1 in
|
||||
initbundle )
|
||||
initbundle
|
||||
;;
|
||||
git2pkg )
|
||||
echo "Updating the package using the $GIT_BRANCH branch of the local repos."
|
||||
echo "(If SUCCESS is not printed upon completion, see /tmp/git2pkg.log for issues)"
|
||||
TEMP_CHECK
|
||||
initbundle &> /tmp/git2pkg.log
|
||||
bundle2spec &>> /tmp/git2pkg.log
|
||||
echo "SUCCESS"
|
||||
tail -9 /tmp/git2pkg.log
|
||||
;;
|
||||
pkg2git )
|
||||
echo "Exporting the package's git bundles to the local repo's frombundle branches..."
|
||||
echo "(If SUCCESS is not printed upon completion, see /tmp/pkg2git.log for issues)"
|
||||
TEMP_CHECK
|
||||
bundle2local &> /tmp/pkg2git.log
|
||||
echo "SUCCESS"
|
||||
echo "To modify package patches, use the frombundle branch as the basis for updating"
|
||||
echo "the $GIT_BRANCH branch with the new patch queue."
|
||||
echo "Then export the changes back to the package using update_git.sh git2pkg"
|
||||
;;
|
||||
refresh )
|
||||
echo "Updating the spec file and patches from the spec file template and the bundle"
|
||||
echo "of bundles (bundles.tar.xz)"
|
||||
echo "(If SUCCESS is not printed upon completion, see /tmp/refresh.log for issues)"
|
||||
TEMP_CHECK
|
||||
bundle2spec &> /tmp/refresh.log
|
||||
echo "SUCCESS"
|
||||
tail -9 /tmp/refresh.log
|
||||
;;
|
||||
* )
|
||||
echo "Unknown command"
|
||||
usage
|
||||
;;
|
||||
help )
|
||||
usage
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
exit
|
||||
|
@ -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 1a379e8771faee970808dd2efd89..310b9639e06b0d543f22652fadd9 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);
|
@ -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 a843d202b5b4dd449e6982b59d80..d75642353e8276f5d3c391fe2c48 100644
|
||||
--- a/migration/savevm.c
|
||||
+++ b/migration/savevm.c
|
||||
@@ -2820,7 +2820,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 controle 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)",
|
@ -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 8a7a3f54523ed050587c3e2047de..1a379e8771faee970808dd2efd89 100644
|
||||
--- a/hw/block/xen-block.c
|
||||
+++ b/hw/block/xen-block.c
|
||||
@@ -729,6 +729,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;
|
||||
@@ -797,6 +799,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.
|
Loading…
Reference in New Issue
Block a user