Accepting request 730437 from Virtualization:Staging

Update to v4.1.0. Also includes other major packaging changes as follows:
There is a new package maintenance workflow - see README.PACKAGING for details.
The sibling packages qemu-linux-user and qemu-testsuite are now created with the Build Service's MultiBuild feature. This also necessitates combining the qemu-linux-user changelog content back into qemu's. Luckily the delta there is quite small. Note that the qemu spec file is now that much busier, but added section markers should help reduce the confusion. Also qemu is being enabled for RISCV host compatibility, so some changes are related to that as well.

OBS-URL: https://build.opensuse.org/request/show/730437
OBS-URL: https://build.opensuse.org/package/show/Virtualization/qemu?expand=0&rev=487
This commit is contained in:
Bruce Rogers 2019-09-12 15:54:03 +00:00 committed by Git OBS Bridge
parent 55d58383b8
commit 0f796dd004
114 changed files with 4039 additions and 14360 deletions

View File

@ -1,42 +0,0 @@
From: Bruce Rogers <brogers@suse.com>
Date: Fri, 13 Apr 2018 11:46:47 -0600
Subject: tests: test-thread-pool is racy - add some barriers
I imagine there is more to be done to fix the memory consistency
races here, but these added barriers at least let it pass on ppc64le,
whereas before it would fail regularly there.
[BR: minor edits to pass qemu's checkpatch script]
Signed-off-by: Bruce Rogers <brogers@suse.com>
---
tests/test-thread-pool.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/tests/test-thread-pool.c b/tests/test-thread-pool.c
index 9cdccb3a47..2cbabaadd3 100644
--- a/tests/test-thread-pool.c
+++ b/tests/test-thread-pool.c
@@ -171,6 +171,7 @@ static void do_test_cancel(bool sync)
/* Cancel the jobs that haven't been started yet. */
num_canceled = 0;
for (i = 0; i < 100; i++) {
+ smp_mb(); /* test is currently racy */
if (atomic_cmpxchg(&data[i].n, 0, 3) == 0) {
data[i].ret = -ECANCELED;
if (sync) {
@@ -185,6 +186,7 @@ static void do_test_cancel(bool sync)
g_assert_cmpint(num_canceled, <, 100);
for (i = 0; i < 100; i++) {
+ smp_mb(); /* test is currently racy */
if (data[i].aiocb && data[i].n != 3) {
if (sync) {
/* Canceling the others will be a blocking operation. */
@@ -201,6 +203,7 @@ static void do_test_cancel(bool sync)
}
g_assert_cmpint(active, ==, 0);
for (i = 0; i < 100; i++) {
+ smp_mb(); /* test is currently racy */
if (data[i].n == 3) {
g_assert_cmpint(data[i].ret, ==, -ECANCELED);
g_assert(data[i].aiocb == NULL);

View File

@ -1,25 +0,0 @@
From: Bruce Rogers <brogers@suse.com>
Date: Fri, 11 Jan 2019 16:26:21 -0700
Subject: tests: Fix Makefile handling of check-report.tap
I assume this will get fixed upstream soon, but for now, fix
what I understand to be the intended functionality.
Signed-off-by: Bruce Rogers <brogers@suse.com>
---
tests/Makefile.include | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/tests/Makefile.include b/tests/Makefile.include
index 36fc73fef5..befc02ac7a 100644
--- a/tests/Makefile.include
+++ b/tests/Makefile.include
@@ -923,7 +923,7 @@ check-report-unit.tap: $(check-unit-y)
# Reports and overall runs
check-report.tap: $(patsubst %,check-report-qtest-%.tap, $(QTEST_TARGETS)) check-report-unit.tap
- $(call quiet-command,./scripts/tap-merge.py $^ > $@,"GEN","$@")
+ $(call quiet-command,./scripts/tap-merge.pl < $^ > $@,"GEN","$@")
# FPU Emulation tests (aka softfloat)
#

View File

@ -1,65 +0,0 @@
From: Bruce Rogers <brogers@suse.com>
Date: Fri, 15 Feb 2019 15:12:04 -0700
Subject: Revert "target/i386: kvm: add VMX migration blocker"
This reverts commit d98f26073bebddcd3da0ba1b86c3a34e840c0fb8.
Here is some text explaining the revert:
I've thought about this some more, and with upstream
discussions about it having stagnated, at this point I think
the best solution is to revert the patch which considers it
a migration blocker to have the vmx feature enabled. It's
worth noting that not only are migrations blocked, but
saving of the vm state via save/restore and snapshots.
Given that it is still widely known that Nested Virtualization
is not supported by SUSE and other vendors, but is still used
by quite a few people who understand that there are caveats
with it's usage, I believe this migration blocker is more
hurtful than helpful.
The fact that as of the v4.20 kernel, nested virtualization is
enabled by default (for vmx), was partly why the patch was
added in the first place. But my perspective is that perhaps
enabling nested was still a bit premature.
I will make sure our qemu changelog explains that despite
removing that migration blocker, the user is warned that
nested virtualization is still a "use at your own risk
feature".
[BR: BSC#1121604]
Signed-off-by: Bruce Rogers <brogers@suse.com>
---
target/i386/kvm.c | 12 ------------
1 file changed, 12 deletions(-)
diff --git a/target/i386/kvm.c b/target/i386/kvm.c
index 3b29ce5c0d..6ad450d9f1 100644
--- a/target/i386/kvm.c
+++ b/target/i386/kvm.c
@@ -906,7 +906,6 @@ static int hyperv_init_vcpu(X86CPU *cpu)
}
static Error *invtsc_mig_blocker;
-static Error *vmx_mig_blocker;
#define KVM_MAX_CPUID_ENTRIES 100
@@ -1270,17 +1269,6 @@ int kvm_arch_init_vcpu(CPUState *cs)
!!(c->ecx & CPUID_EXT_SMX);
}
- if ((env->features[FEAT_1_ECX] & CPUID_EXT_VMX) && !vmx_mig_blocker) {
- error_setg(&vmx_mig_blocker,
- "Nested VMX virtualization does not support live migration yet");
- r = migrate_add_blocker(vmx_mig_blocker, &local_err);
- if (local_err) {
- error_report_err(local_err);
- error_free(vmx_mig_blocker);
- return r;
- }
- }
-
if (env->mcg_cap & MCG_LMCE_P) {
has_msr_mcg_ext_ctl = has_msr_feature_control = true;
}

View File

@ -1,95 +0,0 @@
From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= <berrange@redhat.com>
Date: Wed, 1 May 2019 15:50:52 +0100
Subject: sockets: avoid string truncation warnings when copying UNIX path
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
In file included from /usr/include/string.h:494,
from include/qemu/osdep.h:101,
from util/qemu-sockets.c:18:
In function strncpy,
inlined from unix_connect_saddr.isra.0 at util/qemu-sockets.c:925:5:
/usr/include/bits/string_fortified.h:106:10: warning: __builtin_strncpy specified bound 108 equals destination size [-Wstringop-truncation]
106 | return __builtin___strncpy_chk (__dest, __src, __len, __bos (__dest));
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In function strncpy,
inlined from unix_listen_saddr.isra.0 at util/qemu-sockets.c:880:5:
/usr/include/bits/string_fortified.h:106:10: warning: __builtin_strncpy specified bound 108 equals destination size [-Wstringop-truncation]
106 | return __builtin___strncpy_chk (__dest, __src, __len, __bos (__dest));
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
We are already validating the UNIX socket path length earlier in
the functions. If we save this string length when we first check
it, then we can simply use memcpy instead of strcpy later, avoiding
the gcc truncation warnings.
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Reviewed-by: Stefano Garzarella <sgarzare@redhat.com>
Message-Id: <20190501145052.12579-1-berrange@redhat.com>
Signed-off-by: Laurent Vivier <laurent@vivier.eu>
(cherry picked from commit 2d2023c3b99edb33ad4bb9791f70456ea1a1c049)
Signed-off-by: Bruce Rogers <brogers@suse.com>
---
util/qemu-sockets.c | 12 ++++++++----
1 file changed, 8 insertions(+), 4 deletions(-)
diff --git a/util/qemu-sockets.c b/util/qemu-sockets.c
index 9705051690..ba6335e71a 100644
--- a/util/qemu-sockets.c
+++ b/util/qemu-sockets.c
@@ -830,6 +830,7 @@ static int unix_listen_saddr(UnixSocketAddress *saddr,
int sock, fd;
char *pathbuf = NULL;
const char *path;
+ size_t pathlen;
sock = qemu_socket(PF_UNIX, SOCK_STREAM, 0);
if (sock < 0) {
@@ -845,7 +846,8 @@ static int unix_listen_saddr(UnixSocketAddress *saddr,
path = pathbuf = g_strdup_printf("%s/qemu-socket-XXXXXX", tmpdir);
}
- if (strlen(path) > sizeof(un.sun_path)) {
+ pathlen = strlen(path);
+ if (pathlen > sizeof(un.sun_path)) {
error_setg(errp, "UNIX socket path '%s' is too long", path);
error_append_hint(errp, "Path must be less than %zu bytes\n",
sizeof(un.sun_path));
@@ -877,7 +879,7 @@ static int unix_listen_saddr(UnixSocketAddress *saddr,
memset(&un, 0, sizeof(un));
un.sun_family = AF_UNIX;
- strncpy(un.sun_path, path, sizeof(un.sun_path));
+ memcpy(un.sun_path, path, pathlen);
if (bind(sock, (struct sockaddr*) &un, sizeof(un)) < 0) {
error_setg_errno(errp, errno, "Failed to bind socket to %s", path);
@@ -901,6 +903,7 @@ static int unix_connect_saddr(UnixSocketAddress *saddr, Error **errp)
{
struct sockaddr_un un;
int sock, rc;
+ size_t pathlen;
if (saddr->path == NULL) {
error_setg(errp, "unix connect: no path specified");
@@ -913,7 +916,8 @@ static int unix_connect_saddr(UnixSocketAddress *saddr, Error **errp)
return -1;
}
- if (strlen(saddr->path) > sizeof(un.sun_path)) {
+ pathlen = strlen(saddr->path);
+ if (pathlen > sizeof(un.sun_path)) {
error_setg(errp, "UNIX socket path '%s' is too long", saddr->path);
error_append_hint(errp, "Path must be less than %zu bytes\n",
sizeof(un.sun_path));
@@ -922,7 +926,7 @@ static int unix_connect_saddr(UnixSocketAddress *saddr, Error **errp)
memset(&un, 0, sizeof(un));
un.sun_family = AF_UNIX;
- strncpy(un.sun_path, saddr->path, sizeof(un.sun_path));
+ memcpy(un.sun_path, saddr->path, pathlen);
/* connect to peer */
do {

View File

@ -1,47 +0,0 @@
From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= <berrange@redhat.com>
Date: Wed, 1 May 2019 15:46:46 +0100
Subject: linux-user: avoid string truncation warnings in uname field copying
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
In file included from /usr/include/string.h:494,
from include/qemu/osdep.h:101,
from linux-user/uname.c:20:
In function strncpy,
inlined from sys_uname at linux-user/uname.c:94:3:
/usr/include/bits/string_fortified.h:106:10: warning: __builtin_strncpy output may be truncated copying 64 bytes from a string of length 64 [-Wstringop-truncation]
106 | return __builtin___strncpy_chk (__dest, __src, __len, __bos (__dest));
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
We don't care where the NUL terminator in the original uname
field was. It suffices to copy the entire original field and
simply force a NUL terminator at the end of the new field.
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Message-Id: <20190501144646.4851-1-berrange@redhat.com>
Signed-off-by: Laurent Vivier <laurent@vivier.eu>
[BR: Played with indent to avoid error from checkpatch.pl]
(cherry picked from commit b2acfb55962bc8caeaa50a5158da2f701f2c1f7c)
Signed-off-by: Bruce Rogers <brogers@suse.com>
---
linux-user/uname.c | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/linux-user/uname.c b/linux-user/uname.c
index 313b79dbad..0c6ddf2ad9 100644
--- a/linux-user/uname.c
+++ b/linux-user/uname.c
@@ -72,9 +72,8 @@ const char *cpu_to_uname_machine(void *cpu_env)
#define COPY_UTSNAME_FIELD(dest, src) \
do { \
- /* __NEW_UTS_LEN doesn't include terminating null */ \
- (void) strncpy((dest), (src), __NEW_UTS_LEN); \
- (dest)[__NEW_UTS_LEN] = '\0'; \
+ memcpy((dest), (src), MIN(sizeof(src), sizeof(dest))); \
+ (dest)[sizeof(dest) - 1] = '\0'; \
} while (0)
int sys_uname(struct new_utsname *buf)

View File

@ -1,40 +0,0 @@
From: Alistair Francis <Alistair.Francis@wdc.com>
Date: Tue, 30 Apr 2019 23:29:01 +0000
Subject: linux-user/elfload: Fix GCC 9 build warnings
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Fix this warning when building with GCC9 on Fedora 30:
In function strncpy,
inlined from fill_psinfo at /home/alistair/qemu/linux-user/elfload.c:3208:12,
inlined from fill_note_info at /home/alistair/qemu/linux-user/elfload.c:3390:5,
inlined from elf_core_dump at /home/alistair/qemu/linux-user/elfload.c:3539:9:
/usr/include/bits/string_fortified.h:106:10: error: __builtin_strncpy specified bound 16 equals destination size [-Werror=stringop-truncation]
106 | return __builtin___strncpy_chk (__dest, __src, __len, __bos (__dest));
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
Reviewed-by: Laurent Vivier <laurent@vivier.eu>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-Id: <c4d2b1de9efadcf1c900b91361af9302823a72a9.1556666645.git.alistair.francis@wdc.com>
Signed-off-by: Laurent Vivier <laurent@vivier.eu>
(cherry picked from commit d7eb2b928a855a2e8038e8e75f7edf1a12226bd3)
Signed-off-by: Bruce Rogers <brogers@suse.com>
---
linux-user/elfload.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/linux-user/elfload.c b/linux-user/elfload.c
index c1a26021f8..d08fe23466 100644
--- a/linux-user/elfload.c
+++ b/linux-user/elfload.c
@@ -2872,7 +2872,7 @@ struct target_elf_prpsinfo {
target_gid_t pr_gid;
target_pid_t pr_pid, pr_ppid, pr_pgrp, pr_sid;
/* Lots missing */
- char pr_fname[16]; /* filename of executable */
+ char pr_fname[16] QEMU_NONSTRING; /* filename of executable */
char pr_psargs[ELF_PRARGSZ]; /* initial part of arg list */
};

View File

@ -1,144 +0,0 @@
From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= <berrange@redhat.com>
Date: Fri, 12 Apr 2019 13:16:26 +0100
Subject: qxl: avoid unaligned pointer reads/writes
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
The SPICE_RING_PROD_ITEM() macro is initializing a local
'uint64_t *' variable to point to the 'el' field inside
the QXLReleaseRing struct. This uint64_t field is not
guaranteed aligned as the struct is packed.
Code should not take the address of fields within a
packed struct. Changing the SPICE_RING_PROD_ITEM()
macro to avoid taking the address of the field is
impractical. It is clearer to just remove the macro
and inline its functionality in the three call sites
that need it.
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
Message-Id: <20190412121626.19829-6-berrange@redhat.com>
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
(cherry picked from commit 94932c95c10400acd286fd768a6b411e7ebbec8f)
Signed-off-by: Bruce Rogers <brogers@suse.com>
---
hw/display/qxl.c | 55 +++++++++++++++++++++---------------------------
1 file changed, 24 insertions(+), 31 deletions(-)
diff --git a/hw/display/qxl.c b/hw/display/qxl.c
index c8ce5781e0..5c38e6e906 100644
--- a/hw/display/qxl.c
+++ b/hw/display/qxl.c
@@ -33,24 +33,6 @@
#include "qxl.h"
-/*
- * NOTE: SPICE_RING_PROD_ITEM accesses memory on the pci bar and as
- * such can be changed by the guest, so to avoid a guest trigerrable
- * abort we just qxl_set_guest_bug and set the return to NULL. Still
- * it may happen as a result of emulator bug as well.
- */
-#undef SPICE_RING_PROD_ITEM
-#define SPICE_RING_PROD_ITEM(qxl, r, ret) { \
- uint32_t prod = (r)->prod & SPICE_RING_INDEX_MASK(r); \
- if (prod >= ARRAY_SIZE((r)->items)) { \
- qxl_set_guest_bug(qxl, "SPICE_RING_PROD_ITEM indices mismatch " \
- "%u >= %zu", prod, ARRAY_SIZE((r)->items)); \
- ret = NULL; \
- } else { \
- ret = &(r)->items[prod].el; \
- } \
- }
-
#undef SPICE_RING_CONS_ITEM
#define SPICE_RING_CONS_ITEM(qxl, r, ret) { \
uint32_t cons = (r)->cons & SPICE_RING_INDEX_MASK(r); \
@@ -414,7 +396,8 @@ static void init_qxl_rom(PCIQXLDevice *d)
static void init_qxl_ram(PCIQXLDevice *d)
{
uint8_t *buf;
- uint64_t *item;
+ uint32_t prod;
+ QXLReleaseRing *ring;
buf = d->vga.vram_ptr;
d->ram = (QXLRam *)(buf + le32_to_cpu(d->shadow_rom.ram_header_offset));
@@ -426,9 +409,12 @@ static void init_qxl_ram(PCIQXLDevice *d)
SPICE_RING_INIT(&d->ram->cmd_ring);
SPICE_RING_INIT(&d->ram->cursor_ring);
SPICE_RING_INIT(&d->ram->release_ring);
- SPICE_RING_PROD_ITEM(d, &d->ram->release_ring, item);
- assert(item);
- *item = 0;
+
+ ring = &d->ram->release_ring;
+ prod = ring->prod & SPICE_RING_INDEX_MASK(ring);
+ assert(prod < ARRAY_SIZE(ring->items));
+ ring->items[prod].el = 0;
+
qxl_ring_set_dirty(d);
}
@@ -732,7 +718,7 @@ static int interface_req_cmd_notification(QXLInstance *sin)
static inline void qxl_push_free_res(PCIQXLDevice *d, int flush)
{
QXLReleaseRing *ring = &d->ram->release_ring;
- uint64_t *item;
+ uint32_t prod;
int notify;
#define QXL_FREE_BUNCH_SIZE 32
@@ -759,11 +745,15 @@ static inline void qxl_push_free_res(PCIQXLDevice *d, int flush)
if (notify) {
qxl_send_events(d, QXL_INTERRUPT_DISPLAY);
}
- SPICE_RING_PROD_ITEM(d, ring, item);
- if (!item) {
+
+ ring = &d->ram->release_ring;
+ prod = ring->prod & SPICE_RING_INDEX_MASK(ring);
+ if (prod >= ARRAY_SIZE(ring->items)) {
+ qxl_set_guest_bug(d, "SPICE_RING_PROD_ITEM indices mismatch "
+ "%u >= %zu", prod, ARRAY_SIZE(ring->items));
return;
}
- *item = 0;
+ ring->items[prod].el = 0;
d->num_free_res = 0;
d->last_release = NULL;
qxl_ring_set_dirty(d);
@@ -775,7 +765,8 @@ static void interface_release_resource(QXLInstance *sin,
{
PCIQXLDevice *qxl = container_of(sin, PCIQXLDevice, ssd.qxl);
QXLReleaseRing *ring;
- uint64_t *item, id;
+ uint32_t prod;
+ uint64_t id;
if (ext.group_id == MEMSLOT_GROUP_HOST) {
/* host group -> vga mode update request */
@@ -792,16 +783,18 @@ static void interface_release_resource(QXLInstance *sin,
* pci bar 0, $command.release_info
*/
ring = &qxl->ram->release_ring;
- SPICE_RING_PROD_ITEM(qxl, ring, item);
- if (!item) {
+ prod = ring->prod & SPICE_RING_INDEX_MASK(ring);
+ if (prod >= ARRAY_SIZE(ring->items)) {
+ qxl_set_guest_bug(qxl, "SPICE_RING_PROD_ITEM indices mismatch "
+ "%u >= %zu", prod, ARRAY_SIZE(ring->items));
return;
}
- if (*item == 0) {
+ if (ring->items[prod].el == 0) {
/* stick head into the ring */
id = ext.info->id;
ext.info->next = 0;
qxl_ram_set_dirty(qxl, &ext.info->next);
- *item = id;
+ ring->items[prod].el = id;
qxl_ring_set_dirty(qxl);
} else {
/* append item to the list */

View File

@ -1,60 +0,0 @@
From: =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= <marcandre.lureau@redhat.com>
Date: Fri, 3 May 2019 15:00:29 +0200
Subject: libvhost-user: fix -Waddress-of-packed-member
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
/home/elmarco/src/qemu/contrib/libvhost-user/libvhost-user.c: In function vu_set_mem_table_exec_postcopy:
/home/elmarco/src/qemu/contrib/libvhost-user/libvhost-user.c:546:31: warning: taking address of packed member of struct VhostUserMsg may result in an unaligned pointer value [-Waddress-of-packed-member]
546 | VhostUserMemory *memory = &vmsg->payload.memory;
| ^~~~~~~~~~~~~~~~~~~~~
/home/elmarco/src/qemu/contrib/libvhost-user/libvhost-user.c: In function vu_set_mem_table_exec:
/home/elmarco/src/qemu/contrib/libvhost-user/libvhost-user.c:688:31: warning: taking address of packed member of struct VhostUserMsg may result in an unaligned pointer value [-Waddress-of-packed-member]
688 | VhostUserMemory *memory = &vmsg->payload.memory;
| ^~~~~~~~~~~~~~~~~~~~~
/home/elmarco/src/qemu/contrib/libvhost-user/libvhost-user.c: In function vu_set_vring_addr_exec:
/home/elmarco/src/qemu/contrib/libvhost-user/libvhost-user.c:817:36: warning: taking address of packed member of struct VhostUserMsg may result in an unaligned pointer value [-Waddress-of-packed-member]
817 | struct vhost_vring_addr *vra = &vmsg->payload.addr;
| ^~~~~~~~~~~~~~~~~~~
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Message-id: 20190503130034.24916-2-marcandre.lureau@redhat.com
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
(cherry picked from commit d288eef3a0a8ac46cc45808b50d73606476148b0)
Signed-off-by: Bruce Rogers <brogers@suse.com>
---
contrib/libvhost-user/libvhost-user.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/contrib/libvhost-user/libvhost-user.c b/contrib/libvhost-user/libvhost-user.c
index e08d6c7b97..dcf4a969f2 100644
--- a/contrib/libvhost-user/libvhost-user.c
+++ b/contrib/libvhost-user/libvhost-user.c
@@ -542,7 +542,7 @@ static bool
vu_set_mem_table_exec_postcopy(VuDev *dev, VhostUserMsg *vmsg)
{
int i;
- VhostUserMemory *memory = &vmsg->payload.memory;
+ VhostUserMemory m = vmsg->payload.memory, *memory = &m;
dev->nregions = memory->nregions;
DPRINT("Nregions: %d\n", memory->nregions);
@@ -684,7 +684,7 @@ static bool
vu_set_mem_table_exec(VuDev *dev, VhostUserMsg *vmsg)
{
int i;
- VhostUserMemory *memory = &vmsg->payload.memory;
+ VhostUserMemory m = vmsg->payload.memory, *memory = &m;
for (i = 0; i < dev->nregions; i++) {
VuDevRegion *r = &dev->regions[i];
@@ -813,7 +813,7 @@ vu_set_vring_num_exec(VuDev *dev, VhostUserMsg *vmsg)
static bool
vu_set_vring_addr_exec(VuDev *dev, VhostUserMsg *vmsg)
{
- struct vhost_vring_addr *vra = &vmsg->payload.addr;
+ struct vhost_vring_addr addr = vmsg->payload.addr, *vra = &addr;
unsigned int index = vra->index;
VuVirtq *vq = &dev->vq[index];

View File

@ -1,32 +0,0 @@
From: Paolo Bonzini <pbonzini@redhat.com>
Date: Wed, 15 May 2019 15:10:10 +0100
Subject: target/i386: define md-clear bit
md-clear is a new CPUID bit which is set when microcode provides the
mechanism to invoke a flush of various exploitable CPU buffers by invoking
the VERW instruction.
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Message-Id: <20190515141011.5315-2-berrange@redhat.com>
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
(cherry picked from commit b2ae52101fca7f9547ac2f388085dbc58f8fe1c0)
[BR: BSC#1111331 CVE-2018-12126 CVE-2018-12127 CVE-2018-12130
CVE-2019-11091]
Signed-off-by: Bruce Rogers <brogers@suse.com>
---
target/i386/cpu.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/target/i386/cpu.c b/target/i386/cpu.c
index d6bb57d210..4ea78a4939 100644
--- a/target/i386/cpu.c
+++ b/target/i386/cpu.c
@@ -1076,7 +1076,7 @@ static FeatureWordInfo feature_word_info[FEATURE_WORDS] = {
.feat_names = {
NULL, NULL, "avx512-4vnniw", "avx512-4fmaps",
NULL, NULL, NULL, NULL,
- NULL, NULL, NULL, NULL,
+ NULL, NULL, "md-clear", NULL,
NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL,

View File

@ -1,36 +0,0 @@
From: Gerd Hoffmann <kraxel@redhat.com>
Date: Tue, 14 May 2019 06:24:43 +0200
Subject: kbd-state: fix autorepeat handling
When allowing multiple down-events in a row (key autorepeat) we can't
use change_bit() any more to update the state, because autorepeat events
don't change the key state. We have to explicitly use set_bit() and
clear_bit() instead.
Cc: qemu-stable@nongnu.org
Fixes: 35921860156e kbd-state: don't block auto-repeat events
Buglink: https://bugs.launchpad.net/qemu/+bug/1828272
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Message-id: 20190514042443.10735-1-kraxel@redhat.com
Signed-off-by: Bruce Rogers <brogers@suse.com>
---
ui/kbd-state.c | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/ui/kbd-state.c b/ui/kbd-state.c
index f3ab2d7a66..1668d17dda 100644
--- a/ui/kbd-state.c
+++ b/ui/kbd-state.c
@@ -59,7 +59,11 @@ void qkbd_state_key_event(QKbdState *kbd, QKeyCode qcode, bool down)
}
/* update key and modifier state */
- change_bit(qcode, kbd->keys);
+ if (down) {
+ set_bit(qcode, kbd->keys);
+ } else {
+ clear_bit(qcode, kbd->keys);
+ }
switch (qcode) {
case Q_KEY_CODE_SHIFT:
case Q_KEY_CODE_SHIFT_R:

View File

@ -1,24 +0,0 @@
From: Bruce Rogers <brogers@suse.com>
Date: Tue, 28 May 2019 13:35:39 -0600
Subject: target/ppc: ensure we get null terminated rtas token name
Leave room for null termination of the string when doing strncpy.
Signed-off-by: Bruce Rogers <brogers@suse.com>
---
target/ppc/kvm.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/target/ppc/kvm.c b/target/ppc/kvm.c
index 2427c8ee13..7885de2d7c 100644
--- a/target/ppc/kvm.c
+++ b/target/ppc/kvm.c
@@ -2605,7 +2605,7 @@ int kvmppc_define_rtas_kernel_token(uint32_t token, const char *function)
return -ENOENT;
}
- strncpy(args.name, function, sizeof(args.name));
+ strncpy(args.name, function, sizeof(args.name) - 1);
return kvm_vm_ioctl(kvm_state, KVM_PPC_RTAS_DEFINE_TOKEN, &args);
}

View File

@ -1,33 +0,0 @@
From: Prasad J Pandit <pjp@fedoraproject.org>
Date: Thu, 25 Apr 2019 12:05:34 +0530
Subject: qxl: check release info object
When releasing spice resources in release_resource() routine,
if release info object 'ext.info' is null, it leads to null
pointer dereference. Add check to avoid it.
Reported-by: Bugs SysSec <bugs-syssec@rub.de>
Signed-off-by: Prasad J Pandit <pjp@fedoraproject.org>
Message-id: 20190425063534.32747-1-ppandit@redhat.com
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
(cherry picked from commit d52680fc932efb8a2f334cc6993e705ed1e31e99)
[LY: BSC#1135902 CVE-2019-12155]
Signed-off-by: Liang Yan <lyan@suse.com>
---
hw/display/qxl.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/hw/display/qxl.c b/hw/display/qxl.c
index 5c38e6e906..3880a7410b 100644
--- a/hw/display/qxl.c
+++ b/hw/display/qxl.c
@@ -768,6 +768,9 @@ static void interface_release_resource(QXLInstance *sin,
uint32_t prod;
uint64_t id;
+ if (!ext.info) {
+ return;
+ }
if (ext.group_id == MEMSLOT_GROUP_HOST) {
/* host group -> vga mode update request */
QXLCommandExt *cmdext = (void *)(intptr_t)(ext.info->id);

View File

@ -1,48 +0,0 @@
From: Liang Yan <lyan@suse.com>
Date: Thu, 25 Jul 2019 13:28:26 -0400
Subject: qemu-bridge-helper: restrict interface name
The interface names in qemu-bridge-helper are defined to be
of size IFNAMSIZ(=16), including the terminating null('\0') byte.
The same is applied to interface names read from 'bridge.conf'
file to form ACLs rules. If user supplied '--br=bridge' name
is not restricted to the same length, it could lead to ACL bypass
issue. Restrict bridge name to IFNAMSIZ, including null byte.
Reported-by: Riccardo Schirone <rschiron@redhat.com>
Signed-off-by: Prasad J Pandit <pjp@fedoraproject.org>
[LY: BSC#1140402 CVE-2019-13164]
Signed-off-by: Liang Yan <lyan@suse.com>
---
qemu-bridge-helper.c | 11 +++++++++++
1 file changed, 11 insertions(+)
diff --git a/qemu-bridge-helper.c b/qemu-bridge-helper.c
index cafe2bf27b..8ae6104ec4 100644
--- a/qemu-bridge-helper.c
+++ b/qemu-bridge-helper.c
@@ -109,6 +109,13 @@ static int parse_acl_file(const char *filename, ACLList *acl_list)
}
*argend = 0;
+ if (!g_str_equal(cmd, "include") && strlen(arg) >= IFNAMSIZ) {
+ fprintf(stderr, "name `%s' too long: %zu\n", arg, strlen(arg));
+ fclose(f);
+ errno = EINVAL;
+ return -1;
+ }
+
if (strcmp(cmd, "deny") == 0) {
acl_rule = calloc(1, sizeof(*acl_rule));
if (!acl_rule) {
@@ -264,6 +271,10 @@ int main(int argc, char **argv)
return EXIT_FAILURE;
}
}
+ if (strlen(bridge) >= IFNAMSIZ) {
+ fprintf(stderr, "name `%s' too long: %zu\n", bridge, strlen(bridge));
+ return EXIT_FAILURE;
+ }
if (bridge == NULL || unixfd == -1) {
usage();

View File

@ -1,334 +0,0 @@
From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= <berrange@redhat.com>
Date: Thu, 18 Jul 2019 15:06:41 +0200
Subject: linux-user: fix to handle variably sized SIOCGSTAMP with new kernels
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
The SIOCGSTAMP symbol was previously defined in the
asm-generic/sockios.h header file. QEMU sees that header
indirectly via sys/socket.h
In linux kernel commit 0768e17073dc527ccd18ed5f96ce85f9985e9115
the asm-generic/sockios.h header no longer defines SIOCGSTAMP.
Instead it provides only SIOCGSTAMP_OLD, which only uses a
32-bit time_t on 32-bit architectures.
The linux/sockios.h header then defines SIOCGSTAMP using
either SIOCGSTAMP_OLD or SIOCGSTAMP_NEW as appropriate. If
SIOCGSTAMP_NEW is used, then the tv_sec field is 64-bit even
on 32-bit architectures
To cope with this we must now convert the old and new type from
the target to the host one.
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
Signed-off-by: Laurent Vivier <laurent@vivier.eu>
Reviewed-by: Arnd Bergmann <arnd@arndb.de>
Message-Id: <20190718130641.15294-1-laurent@vivier.eu>
Signed-off-by: Laurent Vivier <laurent@vivier.eu>
(cherry picked from commit 6d5d5dde9adb5acb32e6b8e3dfbf47fff0f308d2)
Signed-off-by: Bruce Rogers <brogers@suse.com>
---
linux-user/ioctls.h | 21 +++++-
linux-user/syscall.c | 140 +++++++++++++++++++++++++++++--------
linux-user/syscall_defs.h | 31 +++++++-
linux-user/syscall_types.h | 6 --
4 files changed, 160 insertions(+), 38 deletions(-)
diff --git a/linux-user/ioctls.h b/linux-user/ioctls.h
index ae8951625f..e6a27ad9d6 100644
--- a/linux-user/ioctls.h
+++ b/linux-user/ioctls.h
@@ -219,8 +219,25 @@
IOCTL(SIOCGRARP, IOC_R, MK_PTR(MK_STRUCT(STRUCT_arpreq)))
IOCTL(SIOCGIWNAME, IOC_W | IOC_R, MK_PTR(MK_STRUCT(STRUCT_char_ifreq)))
IOCTL(SIOCGPGRP, IOC_R, MK_PTR(TYPE_INT)) /* pid_t */
- IOCTL(SIOCGSTAMP, IOC_R, MK_PTR(MK_STRUCT(STRUCT_timeval)))
- IOCTL(SIOCGSTAMPNS, IOC_R, MK_PTR(MK_STRUCT(STRUCT_timespec)))
+
+ /*
+ * We can't use IOCTL_SPECIAL() because it will set
+ * host_cmd to XXX_OLD and XXX_NEW and these macros
+ * are not defined with kernel prior to 5.2.
+ * We must set host_cmd to the same value as in target_cmd
+ * otherwise the consistency check in syscall_init()
+ * will trigger an error.
+ * host_cmd is ignored by the do_ioctl_XXX() helpers.
+ * FIXME: create a macro to define this kind of entry
+ */
+ { TARGET_SIOCGSTAMP_OLD, TARGET_SIOCGSTAMP_OLD,
+ "SIOCGSTAMP_OLD", IOC_R, do_ioctl_SIOCGSTAMP },
+ { TARGET_SIOCGSTAMPNS_OLD, TARGET_SIOCGSTAMPNS_OLD,
+ "SIOCGSTAMPNS_OLD", IOC_R, do_ioctl_SIOCGSTAMPNS },
+ { TARGET_SIOCGSTAMP_NEW, TARGET_SIOCGSTAMP_NEW,
+ "SIOCGSTAMP_NEW", IOC_R, do_ioctl_SIOCGSTAMP },
+ { TARGET_SIOCGSTAMPNS_NEW, TARGET_SIOCGSTAMPNS_NEW,
+ "SIOCGSTAMPNS_NEW", IOC_R, do_ioctl_SIOCGSTAMPNS },
IOCTL(RNDGETENTCNT, IOC_R, MK_PTR(TYPE_INT))
IOCTL(RNDADDTOENTCNT, IOC_W, MK_PTR(TYPE_INT))
diff --git a/linux-user/syscall.c b/linux-user/syscall.c
index ed1c76e304..4e94bf6ecf 100644
--- a/linux-user/syscall.c
+++ b/linux-user/syscall.c
@@ -37,6 +37,7 @@
#include <sched.h>
#include <sys/timex.h>
#include <sys/socket.h>
+#include <linux/sockios.h>
#include <sys/un.h>
#include <sys/uio.h>
#include <poll.h>
@@ -1139,8 +1140,9 @@ static inline abi_long copy_from_user_timeval(struct timeval *tv,
{
struct target_timeval *target_tv;
- if (!lock_user_struct(VERIFY_READ, target_tv, target_tv_addr, 1))
+ if (!lock_user_struct(VERIFY_READ, target_tv, target_tv_addr, 1)) {
return -TARGET_EFAULT;
+ }
__get_user(tv->tv_sec, &target_tv->tv_sec);
__get_user(tv->tv_usec, &target_tv->tv_usec);
@@ -1155,8 +1157,26 @@ static inline abi_long copy_to_user_timeval(abi_ulong target_tv_addr,
{
struct target_timeval *target_tv;
- if (!lock_user_struct(VERIFY_WRITE, target_tv, target_tv_addr, 0))
+ if (!lock_user_struct(VERIFY_WRITE, target_tv, target_tv_addr, 0)) {
+ return -TARGET_EFAULT;
+ }
+
+ __put_user(tv->tv_sec, &target_tv->tv_sec);
+ __put_user(tv->tv_usec, &target_tv->tv_usec);
+
+ unlock_user_struct(target_tv, target_tv_addr, 1);
+
+ return 0;
+}
+
+static inline abi_long copy_to_user_timeval64(abi_ulong target_tv_addr,
+ const struct timeval *tv)
+{
+ struct target__kernel_sock_timeval *target_tv;
+
+ if (!lock_user_struct(VERIFY_WRITE, target_tv, target_tv_addr, 0)) {
return -TARGET_EFAULT;
+ }
__put_user(tv->tv_sec, &target_tv->tv_sec);
__put_user(tv->tv_usec, &target_tv->tv_usec);
@@ -1166,6 +1186,48 @@ static inline abi_long copy_to_user_timeval(abi_ulong target_tv_addr,
return 0;
}
+static inline abi_long target_to_host_timespec(struct timespec *host_ts,
+ abi_ulong target_addr)
+{
+ struct target_timespec *target_ts;
+
+ if (!lock_user_struct(VERIFY_READ, target_ts, target_addr, 1)) {
+ return -TARGET_EFAULT;
+ }
+ __get_user(host_ts->tv_sec, &target_ts->tv_sec);
+ __get_user(host_ts->tv_nsec, &target_ts->tv_nsec);
+ unlock_user_struct(target_ts, target_addr, 0);
+ return 0;
+}
+
+static inline abi_long host_to_target_timespec(abi_ulong target_addr,
+ struct timespec *host_ts)
+{
+ struct target_timespec *target_ts;
+
+ if (!lock_user_struct(VERIFY_WRITE, target_ts, target_addr, 0)) {
+ return -TARGET_EFAULT;
+ }
+ __put_user(host_ts->tv_sec, &target_ts->tv_sec);
+ __put_user(host_ts->tv_nsec, &target_ts->tv_nsec);
+ unlock_user_struct(target_ts, target_addr, 1);
+ return 0;
+}
+
+static inline abi_long host_to_target_timespec64(abi_ulong target_addr,
+ struct timespec *host_ts)
+{
+ struct target__kernel_timespec *target_ts;
+
+ if (!lock_user_struct(VERIFY_WRITE, target_ts, target_addr, 0)) {
+ return -TARGET_EFAULT;
+ }
+ __put_user(host_ts->tv_sec, &target_ts->tv_sec);
+ __put_user(host_ts->tv_nsec, &target_ts->tv_nsec);
+ unlock_user_struct(target_ts, target_addr, 1);
+ return 0;
+}
+
static inline abi_long copy_from_user_timezone(struct timezone *tz,
abi_ulong target_tz_addr)
{
@@ -4790,6 +4852,54 @@ static abi_long do_ioctl_kdsigaccept(const IOCTLEntry *ie, uint8_t *buf_temp,
return get_errno(safe_ioctl(fd, ie->host_cmd, sig));
}
+static abi_long do_ioctl_SIOCGSTAMP(const IOCTLEntry *ie, uint8_t *buf_temp,
+ int fd, int cmd, abi_long arg)
+{
+ struct timeval tv;
+ abi_long ret;
+
+ ret = get_errno(safe_ioctl(fd, SIOCGSTAMP, &tv));
+ if (is_error(ret)) {
+ return ret;
+ }
+
+ if (cmd == (int)TARGET_SIOCGSTAMP_OLD) {
+ if (copy_to_user_timeval(arg, &tv)) {
+ return -TARGET_EFAULT;
+ }
+ } else {
+ if (copy_to_user_timeval64(arg, &tv)) {
+ return -TARGET_EFAULT;
+ }
+ }
+
+ return ret;
+}
+
+static abi_long do_ioctl_SIOCGSTAMPNS(const IOCTLEntry *ie, uint8_t *buf_temp,
+ int fd, int cmd, abi_long arg)
+{
+ struct timespec ts;
+ abi_long ret;
+
+ ret = get_errno(safe_ioctl(fd, SIOCGSTAMPNS, &ts));
+ if (is_error(ret)) {
+ return ret;
+ }
+
+ if (cmd == (int)TARGET_SIOCGSTAMPNS_OLD) {
+ if (host_to_target_timespec(arg, &ts)) {
+ return -TARGET_EFAULT;
+ }
+ } else{
+ if (host_to_target_timespec64(arg, &ts)) {
+ return -TARGET_EFAULT;
+ }
+ }
+
+ return ret;
+}
+
#ifdef TIOCGPTPEER
static abi_long do_ioctl_tiocgptpeer(const IOCTLEntry *ie, uint8_t *buf_temp,
int fd, int cmd, abi_long arg)
@@ -6180,32 +6290,6 @@ static inline abi_long target_ftruncate64(void *cpu_env, abi_long arg1,
}
#endif
-static inline abi_long target_to_host_timespec(struct timespec *host_ts,
- abi_ulong target_addr)
-{
- struct target_timespec *target_ts;
-
- if (!lock_user_struct(VERIFY_READ, target_ts, target_addr, 1))
- return -TARGET_EFAULT;
- __get_user(host_ts->tv_sec, &target_ts->tv_sec);
- __get_user(host_ts->tv_nsec, &target_ts->tv_nsec);
- unlock_user_struct(target_ts, target_addr, 0);
- return 0;
-}
-
-static inline abi_long host_to_target_timespec(abi_ulong target_addr,
- struct timespec *host_ts)
-{
- struct target_timespec *target_ts;
-
- if (!lock_user_struct(VERIFY_WRITE, target_ts, target_addr, 0))
- return -TARGET_EFAULT;
- __put_user(host_ts->tv_sec, &target_ts->tv_sec);
- __put_user(host_ts->tv_nsec, &target_ts->tv_nsec);
- unlock_user_struct(target_ts, target_addr, 1);
- return 0;
-}
-
static inline abi_long target_to_host_itimerspec(struct itimerspec *host_itspec,
abi_ulong target_addr)
{
diff --git a/linux-user/syscall_defs.h b/linux-user/syscall_defs.h
index 12c8407144..cfb3eeec07 100644
--- a/linux-user/syscall_defs.h
+++ b/linux-user/syscall_defs.h
@@ -208,16 +208,34 @@ struct target_linger {
abi_int l_linger; /* How long to linger for */
};
+#if defined(TARGET_SPARC64) && !defined(TARGET_ABI32)
+struct target_timeval {
+ abi_long tv_sec;
+ abi_int tv_usec;
+};
+#define target__kernel_sock_timeval target_timeval
+#else
struct target_timeval {
abi_long tv_sec;
abi_long tv_usec;
};
+struct target__kernel_sock_timeval {
+ abi_llong tv_sec;
+ abi_llong tv_usec;
+};
+#endif
+
struct target_timespec {
abi_long tv_sec;
abi_long tv_nsec;
};
+struct target__kernel_timespec {
+ abi_llong tv_sec;
+ abi_llong tv_nsec;
+};
+
struct target_timezone {
abi_int tz_minuteswest;
abi_int tz_dsttime;
@@ -743,8 +761,17 @@ struct target_pollfd {
#define TARGET_SIOCATMARK 0x8905
#define TARGET_SIOCGPGRP 0x8904
#endif
-#define TARGET_SIOCGSTAMP 0x8906 /* Get stamp (timeval) */
-#define TARGET_SIOCGSTAMPNS 0x8907 /* Get stamp (timespec) */
+
+#if defined(TARGET_SH4)
+#define TARGET_SIOCGSTAMP_OLD TARGET_IOR('s', 100, struct target_timeval)
+#define TARGET_SIOCGSTAMPNS_OLD TARGET_IOR('s', 101, struct target_timespec)
+#else
+#define TARGET_SIOCGSTAMP_OLD 0x8906
+#define TARGET_SIOCGSTAMPNS_OLD 0x8907
+#endif
+
+#define TARGET_SIOCGSTAMP_NEW TARGET_IOR(0x89, 0x06, abi_llong[2])
+#define TARGET_SIOCGSTAMPNS_NEW TARGET_IOR(0x89, 0x07, abi_llong[2])
/* Networking ioctls */
#define TARGET_SIOCADDRT 0x890B /* add routing table entry */
diff --git a/linux-user/syscall_types.h b/linux-user/syscall_types.h
index b98a23b0f1..4e36983826 100644
--- a/linux-user/syscall_types.h
+++ b/linux-user/syscall_types.h
@@ -14,12 +14,6 @@ STRUCT(serial_icounter_struct,
STRUCT(sockaddr,
TYPE_SHORT, MK_ARRAY(TYPE_CHAR, 14))
-STRUCT(timeval,
- MK_ARRAY(TYPE_LONG, 2))
-
-STRUCT(timespec,
- MK_ARRAY(TYPE_LONG, 2))
-
STRUCT(rtentry,
TYPE_ULONG, MK_STRUCT(STRUCT_sockaddr), MK_STRUCT(STRUCT_sockaddr), MK_STRUCT(STRUCT_sockaddr),
TYPE_SHORT, TYPE_SHORT, TYPE_ULONG, TYPE_PTRVOID, TYPE_SHORT, TYPE_PTRVOID,

View File

@ -20,10 +20,10 @@ Signed-off-by: Alexander Graf <agraf@suse.de>
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/util/thread-pool.c b/util/thread-pool.c
index 610646d131..2e34e9846d 100644
index 4ed9b89ab2d9c4e6d805ea47c2b2..697c989885ca8aa4dd1185b780df 100644
--- a/util/thread-pool.c
+++ b/util/thread-pool.c
@@ -308,7 +308,12 @@ static void thread_pool_init_one(ThreadPool *pool, AioContext *ctx)
@@ -307,7 +307,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);

View File

@ -8,21 +8,21 @@ Signed-off-by: Bruce Rogers <brogers@suse.com>
1 file changed, 2 insertions(+)
diff --git a/Makefile b/Makefile
index f9d6e92510..583bfc5d93 100644
index 00ed716275743a161ea05e7d2a1e..ab4d8683ad8f86aa680b343310e1 100644
--- a/Makefile
+++ b/Makefile
@@ -809,6 +809,7 @@ ifneq ($(BLOBS),)
$(INSTALL_DATA) $(SRC_PATH)/pc-bios/$$x "$(DESTDIR)$(qemu_datadir)"; \
@@ -887,6 +887,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"; \
mkdir -p "$(DESTDIR)$(qemu_icondir)/hicolor/$${s}/apps"; \
$(INSTALL_DATA) $(SRC_PATH)/ui/icons/qemu_$${s}.png \
@@ -823,6 +824,7 @@ endif
mkdir -p "$(DESTDIR)/$(qemu_desktopdir)"
@@ -901,6 +902,7 @@ endif
mkdir -p "$(DESTDIR)$(qemu_desktopdir)"
$(INSTALL_DATA) $(SRC_PATH)/ui/qemu.desktop \
"$(DESTDIR)/$(qemu_desktopdir)/qemu.desktop"
"$(DESTDIR)$(qemu_desktopdir)/qemu.desktop"
+endif
ifdef CONFIG_GTK
$(MAKE) -C po $@

View File

@ -0,0 +1,29 @@
From: Stewart Smith <stewart@linux.ibm.com>
Date: Tue, 18 Jun 2019 16:09:44 +1000
Subject: Disable -Waddress-of-packed-member for GCC9
Git-commit: b904cb733750de1bb0e04e5012c391a9c3094d11
We throw a bunch of errors in errorlog code otherwise, which we should
fix, but we don't *have* to yet.
Signed-off-by: Stewart Smith <stewart@linux.ibm.com>
Signed-off-by: Bruce Rogers <brogers@suse.com>
---
Makefile.main | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/roms/skiboot/Makefile.main b/roms/skiboot/Makefile.main
index a8e34d16c4729921901871b3f9e3..91dc73e06903e8f10c6ad09c1db9 100644
--- a/roms/skiboot/Makefile.main
+++ b/roms/skiboot/Makefile.main
@@ -120,7 +120,8 @@ endif
CFLAGS += $(call try-cflag,$(CC),-Wjump-misses-init) \
$(call try-cflag,$(CC),-Wsuggest-attribute=const) \
$(call try-cflag,$(CC),-Wsuggest-attribute=noreturn) \
- $(call try-cflag,$(CC),-Wstack-usage=1024)
+ $(call try-cflag,$(CC),-Wstack-usage=1024) \
+ $(call try-cflag,$(CC),-Wno-error=address-of-packed-member)
CFLAGS += $(CWARNS) $(OPTS) $(DBG)

View File

@ -0,0 +1,67 @@
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 e5f6927de889167d286ccfcdda92..1ddbddd247d9929d63b1654d7206 100644
--- a/roms/ipxe/src/Makefile.housekeeping
+++ b/roms/ipxe/src/Makefile.housekeeping
@@ -454,7 +454,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;

View File

@ -0,0 +1,35 @@
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;
}

View File

@ -29,7 +29,7 @@ Signed-off-by: Bruce Rogers <brogers@suse.com>
5 files changed, 22 insertions(+)
diff --git a/chardev/char-fe.c b/chardev/char-fe.c
index f3530a90e6..f8aa0daf31 100644
index f3530a90e6364d813097105b6113..f8aa0daf31692810efc7d5ca32eb 100644
--- a/chardev/char-fe.c
+++ b/chardev/char-fe.c
@@ -21,6 +21,7 @@
@ -41,7 +41,7 @@ index f3530a90e6..f8aa0daf31 100644
#include "qemu/error-report.h"
#include "qapi/error.h"
diff --git a/chardev/char-mux.c b/chardev/char-mux.c
index 23aa82125d..83252fd399 100644
index 200c62a0d08bd779de8efdc95aad..10acb4fce1d3bda0d9f818eeb5ee 100644
--- a/chardev/char-mux.c
+++ b/chardev/char-mux.c
@@ -22,6 +22,7 @@
@ -51,8 +51,8 @@ index 23aa82125d..83252fd399 100644
+#define HW_POISON_H /* avoid poison since we patch against rules it "enforces" */
#include "qemu/osdep.h"
#include "qapi/error.h"
#include "qemu/option.h"
@@ -190,6 +191,17 @@ static void mux_chr_accept_input(Chardev *chr)
#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);
}
@ -70,7 +70,7 @@ index 23aa82125d..83252fd399 100644
}
static int mux_chr_can_read(void *opaque)
@@ -324,6 +336,10 @@ static void qemu_chr_open_mux(Chardev *chr,
@@ -325,6 +337,10 @@ static void qemu_chr_open_mux(Chardev *chr,
}
d->focus = -1;
@ -82,7 +82,7 @@ index 23aa82125d..83252fd399 100644
* set of muxes
*/
diff --git a/chardev/char.c b/chardev/char.c
index 514cd6b0c3..9bd3848366 100644
index 7b6b2cb12300042c6adf257e188c..d2134d72f60e58f35ee9e7869db4 100644
--- a/chardev/char.c
+++ b/chardev/char.c
@@ -22,6 +22,7 @@
@ -94,7 +94,7 @@ index 514cd6b0c3..9bd3848366 100644
#include "qemu/cutils.h"
#include "monitor/monitor.h"
diff --git a/include/chardev/char-mux.h b/include/chardev/char-mux.h
index 572cefd517..6e80785bd9 100644
index 572cefd517c8fa9d605cbd10fc21..6e80785bd9c12b85e747fa9f924e 100644
--- a/include/chardev/char-mux.h
+++ b/include/chardev/char-mux.h
@@ -34,6 +34,9 @@ typedef struct MuxChardev {
@ -108,7 +108,7 @@ index 572cefd517..6e80785bd9 100644
int mux_cnt;
int term_got_escape;
diff --git a/tests/test-char.c b/tests/test-char.c
index 95ccfd3cdb..87fb0c1a4c 100644
index f9440cdcfdb51f98b2f6542e6f21..d1f99632de1acb95ba8e1b4a8584 100644
--- a/tests/test-char.c
+++ b/tests/test-char.c
@@ -1,3 +1,4 @@

View File

@ -2,9 +2,10 @@ 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.
[BR: BSC#1077564]
Signed-off-by: Bruce Rogers <brogers@suse.com>
---
scripts/analyze-migration.py | 2 +-
@ -12,7 +13,7 @@ Signed-off-by: Bruce Rogers <brogers@suse.com>
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/scripts/analyze-migration.py b/scripts/analyze-migration.py
index e527eb168e..fd376eac71 100755
index e527eb168e9ce7c3944094ec6701..fd376eac71f73e6366a9e17a1c51 100755
--- a/scripts/analyze-migration.py
+++ b/scripts/analyze-migration.py
@@ -1,4 +1,4 @@
@ -22,7 +23,7 @@ index e527eb168e..fd376eac71 100755
# Migration Stream Analyzer
#
diff --git a/scripts/vmstate-static-checker.py b/scripts/vmstate-static-checker.py
index d3467288dc..2046b1fedd 100755
index d3467288dcc5dd2f7274576262f7..2046b1feddb4c225c8f3bee080ac 100755
--- a/scripts/vmstate-static-checker.py
+++ b/scripts/vmstate-static-checker.py
@@ -1,4 +1,4 @@

View File

@ -1,6 +1,18 @@
--- a/tools/keymap-gen 2019-08-05 21:56:01.731846467 +0200
+++ b/tools/keymap-gen 2019-08-05 22:00:14.563720016 +0200
@@ -20,6 +20,7 @@
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
@ -8,7 +20,7 @@
import time
import sys
@@ -317,7 +318,11 @@
@@ -317,7 +318,11 @@ class LanguageGenerator(object):
raise NotImplementedError()
def generate_header(self, database, args):

View File

@ -14,10 +14,10 @@ Signed-off-by: Bruce Rogers <brogers@suse.com>
1 file changed, 2 insertions(+)
diff --git a/exec.c b/exec.c
index 6ab62f4eee..55f3bed025 100644
index 3e78de3b8f8bb1914811a7965377..d2183f58816f53f15ef64e844291 100644
--- a/exec.c
+++ b/exec.c
@@ -2281,11 +2281,13 @@ RAMBlock *qemu_ram_alloc_from_fd(ram_addr_t size, MemoryRegion *mr,
@@ -2339,11 +2339,13 @@ RAMBlock *qemu_ram_alloc_from_fd(ram_addr_t size, MemoryRegion *mr,
return NULL;
}

73
README.PACKAGING Normal file
View File

@ -0,0 +1,73 @@
The qemu package, and derived packages have 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.
The qemu.spec file is generated from a qemu.spec.in template, so to make changes
to the spec file (besides patch name or order changes), you'll need to edit the
template. The patches included are inserted into the spec file by scripts
described below.
If you are not modifying any patches or their order, but just need to update the
spec file from a changed template, run the refresh.sh script.
If the set of patches is being modified, including their order, you will want to
first run pkg2git.sh, in order to get the current patch queue made available in
a local git branch named frombundle. (qemu packaging now includes a "bundle of
git bundles" stored as a package source file, which contains the "git version"
of the package patches.) You will create an altered patch queue in the
$GIT_BRANCH branch (see config.h for actual name), and use the frombundle branch
as a starting point (eg perhaps start by doing git reset frombundle, then cherry
-pick upstream patches from there). Once you have the patch queue ready to go
run git2pkg.sh to update the bundle of bundles (bundles.tsr.xz file) as well as
the spec and patch files.
Additional Notes:
** SPECIAL NOTE ABOUT CURRENT STATUS ***
The current status as of 12 Sep 2019 is that for this incarnation of qemu
packaging, the old update_git.sh workflow is no longer supported, being
suplanted with the workflow described above. THIS IS STILL A WORK IN PROGRESS.
If it isn't working right, please contact Bruce Rogers <brogers@suse.com>.
It isn't foolproof by a long shot!
Also note that qemu now takes advantage of the MultiBuild feature of the Build
Service. No longer do the qemu-linux-user and qemu-testsuite packages have build
service links to the qemu package, but instead are generated straight from the
main qemu spec file via the use of a _multibuild file which identifies those
package variants.
- Bruce Rogers
*** END SPECIAL NOTE ***
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:
Git-commit: <40-char-sha-id>
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.
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.
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:
Include-If: %ifarch aarch64
This will cause the patch application in the spec file to be done as follows:
%ifarch aarch64
%patch0013 -p1
%endif
A track 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 specfile, 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 spec
file, the actual patch (eg specially-handled-change.patch) is referenced as, eg:
patch -p1 < %_sourcedir/specially-handled-change.patch

View File

@ -16,26 +16,26 @@ Signed-off-by: Bruce Rogers <brogers@suse.com>
1 file changed, 12 insertions(+)
diff --git a/vl.c b/vl.c
index c696ad2a13..de43d2adf2 100644
index b426b3213461210565bd1db15a0c..2b864f7dbe8b60ace40fa3258a37 100644
--- a/vl.c
+++ b/vl.c
@@ -29,6 +29,7 @@
@@ -30,6 +30,7 @@
#include "qemu/cutils.h"
#include "qemu/help_option.h"
#include "qemu/uuid.h"
+#include <sys/resource.h>
#include "sysemu/seccomp.h"
#include "sysemu/tcg.h"
#ifdef CONFIG_SDL
@@ -3021,6 +3022,7 @@ int main(int argc, char **argv, char **envp)
@@ -2889,6 +2890,7 @@ int main(int argc, char **argv, char **envp)
bool list_data_dirs = false;
char *dir, **dirs;
BlockdevOptionsQueue bdo_queue = QSIMPLEQ_HEAD_INITIALIZER(bdo_queue);
+ struct rlimit rlimit_as;
module_call_init(MODULE_INIT_TRACE);
os_set_line_buffering();
@@ -3029,6 +3031,16 @@ int main(int argc, char **argv, char **envp)
@@ -2900,6 +2902,16 @@ int main(int argc, char **argv, char **envp)
qemu_mutex_lock_iothread();
@ -50,5 +50,5 @@ index c696ad2a13..de43d2adf2 100644
+ }
+
atexit(qemu_run_exit_notifiers);
error_set_progname(argv[0]);
qemu_init_exec_dir(argv[0]);

View File

@ -9,10 +9,10 @@ Signed-off-by: Bruce Rogers <brogers@suse.com>
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/Makefile b/Makefile
index 04a0d45050..f9d6e92510 100644
index 85862fb81a1d276c41133a31b2d9..00ed716275743a161ea05e7d2a1e 100644
--- a/Makefile
+++ b/Makefile
@@ -521,7 +521,7 @@ fsdev/virtfs-proxy-helper$(EXESUF): LIBS += -lcap
@@ -556,7 +556,7 @@ fsdev/virtfs-proxy-helper$(EXESUF): LIBS += -lcap
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
@ -22,10 +22,10 @@ index 04a0d45050..f9d6e92510 100644
qemu-img-cmds.h: $(SRC_PATH)/qemu-img-cmds.hx $(SRC_PATH)/scripts/hxtool
diff --git a/configure b/configure
index 1c563a7027..5df1b9a285 100755
index 714e7fb6a1fbd72ccdcd92b506ce..578d208b374261803d84c22c2479 100755
--- a/configure
+++ b/configure
@@ -3755,7 +3755,7 @@ int main(void) {
@@ -3781,7 +3781,7 @@ int main(void) {
return 0;
}
EOF

View File

@ -0,0 +1,53 @@
From: Valentine Barshak <gvaxon@gmail.com>
Date: Mon, 22 Jul 2019 10:47:50 +0100
Subject: Workaround compilation error with gcc 9.1
References: bsc#1121464
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 97fa325bb52314e05192d0414436..e5f6927de889167d286ccfcdda92 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

View File

@ -8,10 +8,10 @@ Signed-off-by: Bruce Rogers <brogers@suse.com>
1 file changed, 6 insertions(+)
diff --git a/linux-user/signal.c b/linux-user/signal.c
index e2c0b37173..8588c97507 100644
index 5ca6d62b15d3e4d3faee3f554fff..1d6382ce881795b057ab229e4129 100644
--- a/linux-user/signal.c
+++ b/linux-user/signal.c
@@ -575,6 +575,10 @@ static void QEMU_NORETURN dump_core_and_abort(int target_sig)
@@ -581,6 +581,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);
@ -22,7 +22,7 @@ index e2c0b37173..8588c97507 100644
/* dump core if supported by target binary format */
if (core_dump_signal(target_sig) && (ts->bprm->core_dump != NULL)) {
stop_all_tasks();
@@ -592,6 +596,8 @@ static void QEMU_NORETURN dump_core_and_abort(int target_sig)
@@ -598,6 +602,8 @@ static void QEMU_NORETURN dump_core_and_abort(int target_sig)
target_sig, strsignal(host_sig), "core dumped" );
}

View File

@ -50,4 +50,15 @@
</memory>
</hardware>
</overwrite>
<!-- To build qemu in a reasonable amount of time, aarch64 and x86_64 needs as much parallelism as we can get -->
<overwrite>
<conditions>
<arch>aarch64</arch>
<arch>x86_64</arch>
<package>qemu</package>
</conditions>
<hardware>
<processors>8</processors>
</hardware>
</overwrite>
</constraints>

4
_multibuild Normal file
View File

@ -0,0 +1,4 @@
<multibuild>
<package>linux-user</package>
<package>testsuite</package>
</multibuild>

View File

@ -5,21 +5,21 @@ 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.
Addresses part of BNC#812836.
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 9c079d6834..ebcc240196 100644
index ec4e186cec7ccff739b7bad8dcc4..be5529867ab426b38b26dab5498a 100644
--- a/hw/acpi/piix4.c
+++ b/hw/acpi/piix4.c
@@ -315,7 +315,7 @@ static bool piix4_vmstate_need_smbus(void *opaque, int version_id)
@@ -306,7 +306,7 @@ static bool piix4_vmstate_need_smbus(void *opaque, int version_id)
static const VMStateDescription vmstate_acpi = {
.name = "piix4_pm",
.version_id = 3,

159
ati-add-edid-support.patch Normal file
View File

@ -0,0 +1,159 @@
From: Gerd Hoffmann <kraxel@redhat.com>
Date: Mon, 18 Mar 2019 15:43:53 +0100
Subject: ati: add edid support.
Git-commit: 588eb12163b51c4d402383369456ce1cd1ec86ab
Read EDID blob via i2c, store in VBE_edid.
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Signed-off-by: Bruce Rogers <brogers@suse.com>
---
vgasrc/atiext.c | 114 ++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 114 insertions(+)
diff --git a/roms/seabios/vgasrc/atiext.c b/roms/seabios/vgasrc/atiext.c
index 0586279ce214fac7d2a7e6c87a94..8c9e6966db47f083646193d7faf6 100644
--- a/roms/seabios/vgasrc/atiext.c
+++ b/roms/seabios/vgasrc/atiext.c
@@ -19,6 +19,8 @@
#define MM_DATA 0x0004
#define CRTC_GEN_CNTL 0x0050
#define CRTC_EXT_CNTL 0x0054
+#define GPIO_VGA_DDC 0x0060
+#define GPIO_DVI_DDC 0x0064
#define CRTC_H_TOTAL_DISP 0x0200
#define CRTC_V_TOTAL_DISP 0x0208
#define CRTC_OFFSET 0x0224
@@ -106,6 +108,20 @@ static inline void ati_write(u32 reg, u32 val)
}
}
+static inline u32 ati_read(u32 reg)
+{
+ u32 io_addr = GET_GLOBAL(ati_io_addr);
+ u32 val;
+
+ if (reg < 0x100) {
+ val = inl(io_addr + reg);
+ } else {
+ outl(reg, io_addr + MM_INDEX);
+ reg = inl(io_addr + MM_DATA);
+ }
+ return val;
+}
+
static void ati_clear(u32 offset, u32 size)
{
u8 data[64];
@@ -180,6 +196,97 @@ ati_set_mode(struct vgamode_s *vmode_g, int flags)
return stdvga_set_mode(vmode_g, flags);
}
+/****************************************************************
+ * edid
+ ****************************************************************/
+
+static void
+ati_i2c_set_scl_sda(int scl, int sda)
+{
+ u32 data = 0;
+
+ if (!scl)
+ data |= (1 << 17);
+ if (!sda)
+ data |= (1 << 16);
+ ati_write(GPIO_DVI_DDC, data);
+}
+
+static int
+ati_i2c_get_sda(void)
+{
+ u32 data = ati_read(GPIO_DVI_DDC);
+
+ return data & (1 << 8) ? 1 : 0;
+}
+
+static void ati_i2c_start(void)
+{
+ ati_i2c_set_scl_sda(1, 1);
+ ati_i2c_set_scl_sda(1, 0);
+ ati_i2c_set_scl_sda(0, 0);
+}
+
+static void ati_i2c_ack(void)
+{
+ ati_i2c_set_scl_sda(0, 0);
+ ati_i2c_set_scl_sda(1, 0);
+ ati_i2c_set_scl_sda(0, 0);
+}
+
+static void ati_i2c_stop(void)
+{
+ ati_i2c_set_scl_sda(0, 0);
+ ati_i2c_set_scl_sda(1, 0);
+ ati_i2c_set_scl_sda(1, 1);
+}
+
+static void ati_i2c_send_byte(u8 byte)
+{
+ int i, bit;
+
+ for (i = 0; i < 8; i++) {
+ bit = (1 << (7-i)) & byte ? 1 : 0;
+ ati_i2c_set_scl_sda(0, bit);
+ ati_i2c_set_scl_sda(1, bit);
+ ati_i2c_set_scl_sda(0, bit);
+ }
+}
+
+static u8 ati_i2c_recv_byte(void)
+{
+ u8 byte = 0;
+ int i, bit;
+
+ for (i = 0; i < 8; i++) {
+ ati_i2c_set_scl_sda(0, 1);
+ ati_i2c_set_scl_sda(1, 1);
+ bit = ati_i2c_get_sda();
+ ati_i2c_set_scl_sda(0, 1);
+ if (bit)
+ byte |= (1 << (7-i));
+ }
+
+ return byte;
+}
+
+static void ati_i2c_edid(void)
+{
+ u8 byte;
+ int i;
+
+ dprintf(1, "ati: reading edid blob\n");
+ ati_i2c_start();
+ ati_i2c_send_byte(0x50 << 1 | 1);
+ ati_i2c_ack();
+ for (i = 0; i < 128; i++) {
+ byte = ati_i2c_recv_byte();
+ ati_i2c_ack();
+ SET_VGA(VBE_edid[i], byte);
+ }
+ ati_i2c_stop();
+}
+
/****************************************************************
* init
****************************************************************/
@@ -241,5 +348,12 @@ ati_setup(void)
}
}
+ u16 device = pci_config_readw(bdf, PCI_DEVICE_ID);
+ switch (device) {
+ case 0x5159:
+ ati_i2c_edid();
+ break;
+ }
+
return 0;
}

View File

@ -0,0 +1,78 @@
From: Gerd Hoffmann <kraxel@redhat.com>
Date: Mon, 24 Jun 2019 13:35:46 +0200
Subject: ati-vga: add rage128 edid support
Git-commit: 020bc4fc5ce93107c8e1bc731b9802cee56a123e
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Signed-off-by: Bruce Rogers <brogers@suse.com>
---
vgasrc/atiext.c | 25 +++++++++++++++++++++++++
1 file changed, 25 insertions(+)
diff --git a/roms/seabios/vgasrc/atiext.c b/roms/seabios/vgasrc/atiext.c
index 71dfa859a22dc569ed2fd1312c6b..69dfd46e550a8865734def85c62d 100644
--- a/roms/seabios/vgasrc/atiext.c
+++ b/roms/seabios/vgasrc/atiext.c
@@ -21,6 +21,7 @@
#define CRTC_EXT_CNTL 0x0054
#define GPIO_VGA_DDC 0x0060
#define GPIO_DVI_DDC 0x0064
+#define GPIO_MONID 0x0068
#define CRTC_H_TOTAL_DISP 0x0200
#define CRTC_V_TOTAL_DISP 0x0208
#define CRTC_OFFSET 0x0224
@@ -47,6 +48,7 @@ static u32 ati_i2c_reg VAR16;
static u32 ati_i2c_bit_scl_out VAR16;
static u32 ati_i2c_bit_sda_out VAR16;
static u32 ati_i2c_bit_sda_in VAR16;
+static u32 ati_i2c_bit_enable VAR16 = -1;
int
@@ -208,8 +210,11 @@ ati_set_mode(struct vgamode_s *vmode_g, int flags)
static void
ati_i2c_set_scl_sda(int scl, int sda)
{
+ u32 enable = GET_GLOBAL(ati_i2c_bit_enable);
u32 data = 0;
+ if (enable != -1)
+ data |= (1 << enable);
if (!scl)
data |= (1 << GET_GLOBAL(ati_i2c_bit_scl_out));
if (!sda)
@@ -316,6 +321,23 @@ static void ati_i2c_edid_radeon(void)
dprintf(1, "ati: ... %s\n", valid ? "good" : "invalid");
}
+static void ati_i2c_edid_rage128(void)
+{
+ int valid;
+
+ SET_VGA(ati_i2c_bit_enable, 25);
+ SET_VGA(ati_i2c_bit_scl_out, 18);
+ SET_VGA(ati_i2c_bit_sda_out, 17);
+ SET_VGA(ati_i2c_bit_sda_in, 9);
+ SET_VGA(ati_i2c_reg, GPIO_MONID);
+
+ dprintf(1, "ati: reading edid blob (rage128) ... \n");
+ ati_i2c_edid();
+ valid = (GET_GLOBAL(VBE_edid[0]) == 0x00 &&
+ GET_GLOBAL(VBE_edid[1]) == 0xff);
+ dprintf(1, "ati: ... %s\n", valid ? "good" : "invalid");
+}
+
/****************************************************************
* init
****************************************************************/
@@ -379,6 +401,9 @@ ati_setup(void)
u16 device = pci_config_readw(bdf, PCI_DEVICE_ID);
switch (device) {
+ case 0x5046:
+ ati_i2c_edid_rage128();
+ break;
case 0x5159:
ati_i2c_edid_radeon();
break;

View File

@ -0,0 +1,28 @@
From: Gerd Hoffmann <kraxel@redhat.com>
Date: Mon, 24 Jun 2019 12:09:31 +0200
Subject: ati-vga: fix ati_read()
Git-commit: 136e2612bd48ef06562625f15259fbacf7bcf66f
Cut & paste bug probably. Had no bad effect so far because the code
doesn't read registers larger than 0x100.
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Signed-off-by: Bruce Rogers <brogers@suse.com>
---
vgasrc/atiext.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/roms/seabios/vgasrc/atiext.c b/roms/seabios/vgasrc/atiext.c
index b3975226c47852c80ec4278b9a95..a24b980638a9562daaa37fe236b4 100644
--- a/roms/seabios/vgasrc/atiext.c
+++ b/roms/seabios/vgasrc/atiext.c
@@ -117,7 +117,7 @@ static inline u32 ati_read(u32 reg)
val = inl(io_addr + reg);
} else {
outl(reg, io_addr + MM_INDEX);
- reg = inl(io_addr + MM_DATA);
+ val = inl(io_addr + MM_DATA);
}
return val;
}

View File

@ -0,0 +1,95 @@
From: Gerd Hoffmann <kraxel@redhat.com>
Date: Mon, 24 Jun 2019 12:08:32 +0200
Subject: ati-vga: make i2c register and bits configurable
Git-commit: ae9a9796ec395e66ff0ed6d4484ea40ce85c0300
Prepare to support other ati cards. Also log access mode and whenever
we got a valid edid block.
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Signed-off-by: Bruce Rogers <brogers@suse.com>
---
vgasrc/atiext.c | 34 +++++++++++++++++++++++++++-------
1 file changed, 27 insertions(+), 7 deletions(-)
diff --git a/roms/seabios/vgasrc/atiext.c b/roms/seabios/vgasrc/atiext.c
index a24b980638a9562daaa37fe236b4..901e82d013837f54f4db292628d1 100644
--- a/roms/seabios/vgasrc/atiext.c
+++ b/roms/seabios/vgasrc/atiext.c
@@ -43,6 +43,11 @@
#define CRT_CRTC_ON 0x00008000
static u32 ati_io_addr VAR16 = 0;
+static u32 ati_i2c_reg VAR16;
+static u32 ati_i2c_bit_scl_out VAR16;
+static u32 ati_i2c_bit_sda_out VAR16;
+static u32 ati_i2c_bit_sda_in VAR16;
+
int
is_ati_mode(struct vgamode_s *vmode_g)
@@ -206,18 +211,18 @@ ati_i2c_set_scl_sda(int scl, int sda)
u32 data = 0;
if (!scl)
- data |= (1 << 17);
+ data |= (1 << GET_GLOBAL(ati_i2c_bit_scl_out));
if (!sda)
- data |= (1 << 16);
- ati_write(GPIO_DVI_DDC, data);
+ data |= (1 << GET_GLOBAL(ati_i2c_bit_sda_out));
+ ati_write(GET_GLOBAL(ati_i2c_reg), data);
}
static int
ati_i2c_get_sda(void)
{
- u32 data = ati_read(GPIO_DVI_DDC);
+ u32 data = ati_read(GET_GLOBAL(ati_i2c_reg));
- return data & (1 << 8) ? 1 : 0;
+ return data & (1 << GET_GLOBAL(ati_i2c_bit_sda_in)) ? 1 : 0;
}
static void ati_i2c_start(void)
@@ -275,7 +280,6 @@ static void ati_i2c_edid(void)
u8 byte;
int i;
- dprintf(1, "ati: reading edid blob\n");
ati_i2c_start();
ati_i2c_send_byte(0x50 << 1 | 1);
ati_i2c_ack();
@@ -287,6 +291,22 @@ static void ati_i2c_edid(void)
ati_i2c_stop();
}
+static void ati_i2c_edid_radeon(void)
+{
+ int valid;
+
+ SET_VGA(ati_i2c_bit_scl_out, 17);
+ SET_VGA(ati_i2c_bit_sda_out, 16);
+ SET_VGA(ati_i2c_bit_sda_in, 8);
+
+ dprintf(1, "ati: reading edid blob (radeon dvi) ... \n");
+ SET_VGA(ati_i2c_reg, GPIO_DVI_DDC);
+ ati_i2c_edid();
+ valid = (GET_GLOBAL(VBE_edid[0]) == 0x00 &&
+ GET_GLOBAL(VBE_edid[1]) == 0xff);
+ dprintf(1, "ati: ... %s\n", valid ? "good" : "invalid");
+}
+
/****************************************************************
* init
****************************************************************/
@@ -351,7 +371,7 @@ ati_setup(void)
u16 device = pci_config_readw(bdf, PCI_DEVICE_ID);
switch (device) {
case 0x5159:
- ati_i2c_edid();
+ ati_i2c_edid_radeon();
break;
}

View File

@ -0,0 +1,27 @@
From: Gerd Hoffmann <kraxel@redhat.com>
Date: Mon, 24 Jun 2019 12:09:52 +0200
Subject: ati-vga: make less verbose
Git-commit: ce52a31f612e33df66ac3553d9633732e34a277b
Reduce loglevel for mode line removals from 1 to 3.
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Signed-off-by: Bruce Rogers <brogers@suse.com>
---
vgasrc/atiext.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/roms/seabios/vgasrc/atiext.c b/roms/seabios/vgasrc/atiext.c
index 8c9e6966db47f083646193d7faf6..b3975226c47852c80ec4278b9a95 100644
--- a/roms/seabios/vgasrc/atiext.c
+++ b/roms/seabios/vgasrc/atiext.c
@@ -343,7 +343,7 @@ ati_setup(void)
height > 0xfff ||
mem > totalmem ||
memmodel != MM_DIRECT) {
- dprintf(1, "ati: removing mode 0x%x\n", GET_GLOBAL(m->mode));
+ dprintf(3, "ati: removing mode 0x%x\n", GET_GLOBAL(m->mode));
SET_VGA(m->mode, 0xffff);
}
}

View File

@ -0,0 +1,35 @@
From: Gerd Hoffmann <kraxel@redhat.com>
Date: Mon, 24 Jun 2019 12:17:28 +0200
Subject: ati-vga: try vga ddc first
Git-commit: af573dceef7b9a45d13192ec5abf29b73c78540e
Try vga ddc bus before dvi ddc bus.
Return early in case we got valid data.
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Signed-off-by: Bruce Rogers <brogers@suse.com>
---
vgasrc/atiext.c | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/roms/seabios/vgasrc/atiext.c b/roms/seabios/vgasrc/atiext.c
index 901e82d013837f54f4db292628d1..71dfa859a22dc569ed2fd1312c6b 100644
--- a/roms/seabios/vgasrc/atiext.c
+++ b/roms/seabios/vgasrc/atiext.c
@@ -299,6 +299,15 @@ static void ati_i2c_edid_radeon(void)
SET_VGA(ati_i2c_bit_sda_out, 16);
SET_VGA(ati_i2c_bit_sda_in, 8);
+ dprintf(1, "ati: reading edid blob (radeon vga) ... \n");
+ SET_VGA(ati_i2c_reg, GPIO_VGA_DDC);
+ ati_i2c_edid();
+ valid = (GET_GLOBAL(VBE_edid[0]) == 0x00 &&
+ GET_GLOBAL(VBE_edid[1]) == 0xff);
+ dprintf(1, "ati: ... %s\n", valid ? "good" : "invalid");
+ if (valid)
+ return;
+
dprintf(1, "ati: reading edid blob (radeon dvi) ... \n");
SET_VGA(ati_i2c_reg, GPIO_DVI_DDC);
ati_i2c_edid();

57
bundle2local.sh Normal file
View File

@ -0,0 +1,57 @@
#!/bin/bash
#
# This script takes patches stored in the bundle and places
# them into a branch named frombundle for each local repo it
# finds.
# NYI: report if the required base commit isn't there - they may need to fetch the latest from upstream
set -e
source ./config.sh
rm -rf $GIT_DIR
rm -rf $CMP_DIR
rm -rf $BUNDLE_DIR
rm -f checkpatch.log
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
echo "Found local repo $LOCAL_REPO corresponding to archived git bundle"
else
echo "No local repo $LOCAL_REPO corresponding to archived git bundle"
fi
git -C $LOCAL_REPO remote remove bundlerepo || true
# git won't let you delete this branch if it's the current branch (returns 1) HOW TO HANDLE?
# detect this case, and ask user to switch to another branch? or do it for them - switch to master killing any "state" for this branch
git -C $LOCAL_REPO branch -D frombundle || true
git -C $LOCAL_REPO remote add bundlerepo $BUNDLE_DIR/$entry
# in next, the head may be FETCH_HEAD or HEAD depending on how we created:
git -C $LOCAL_REPO fetch bundlerepo FETCH_HEAD
#git -C $LOCAL_REPO fetch bundlerepo HEAD
git -C $LOCAL_REPO branch frombundle FETCH_HEAD
git -C $LOCAL_REPO remote remove bundlerepo
done
echo "For each local repo found a branch named frombundle contains the patches from the bundle."
echo "Use this as the starting point for making changes to the $GIT_BRANCH, which gets used as"
echo "the source when updating the bundle stored with the package."
rm -rf $BUNDLE_DIR

471
bundle2spec.sh Normal file
View File

@ -0,0 +1,471 @@
#!/bin/bash
#
# Instead of a quilt workflow, we use a git tree that contains
# all the commits on top of a qemu source tarball.
#
# When updating this package, just either update the git tree
# below (use rebase!) or change the tree path and use your own
#
# That way we can easily rebase against the next stable release
# when it comes.
# !!!!!! WARNING - our use of the sort order of our globbing will
# get the patches out of order once they go over 9999!!!!!!!!!!!
set -e
source ./config.sh
rm -rf $GIT_DIR
rm -rf $CMP_DIR
rm -rf $BUNDLE_DIR
rm -f checkpatch.log
rm -rf checkthese
if [ "$GIT_UPSTREAM_COMMIT_ISH" = "LATEST" ]; then
# This is just a safety valve in case the above gets edited wrong:
if ! [ "$GIT_BRANCH" = "master" ]; then
echo "LATEST implies master branch, please fix configuration"
exit
fi
(cd ${LOCAL_REPO_MAP[0]} && git remote update upstream)
fi
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
# It's ok for either of these to be empty when using "LATEST"
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 "Warning: No tarball found"
fi
mkdir -p $BUNDLE_DIR
# This 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}.{patch_prefix}.{bundle}", where {path/} isn't present for
# the top (qemu) bundle (ie it's for submodules).
tar xJf bundles.tar.xz -C $BUNDLE_DIR
# !!! The following may be overkill, since it seems that find does do a depth first, which is all we need
BUNDLE_FILES=$(find $BUNDLE_DIR -printf "%P\n"|grep "bundle$")
if [ "$GIT_UPSTREAM_COMMIT_ISH" = "LATEST" ]; then
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=9 -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
NEW_COMMIT_ISH=$(cd ${LOCAL_REPO_MAP[0]} && git rev-parse --short=9 \
upstream/$GIT_BRANCH)
NOW_SECONDS=$(date +%s)
git clone -ls ${LOCAL_REPO_MAP[0]} $GIT_DIR -b $GIT_BRANCH --single-branch &>/dev/null
if [ "$OLD_COMMIT_ISH" != "$NEW_COMMIT_ISH" ]; then
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)
(cd $GIT_DIR && git submodule update --init --recursive &>/dev/null)
VERSION_EXTRA=+git.$NOW_SECONDS.$NEW_COMMIT_ISH
fi
QEMU_VERSION=$(cat $GIT_DIR/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]
else
SOURCE_VERSION=$[$MAJOR_VERSION+1].0.0-rc$[X-90]
fi
else
SOURCE_VERSION=$MAJOR_VERSION.$MINOR_VERSION.$X
fi
if [ "$OLD_COMMIT_ISH" != "$NEW_COMMIT_ISH" ]; then
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
echo "New tarball created. Attempting rebase..."
if ! (cd $GIT_DIR && git rebase upstream/$GIT_BRANCH $GIT_BRANCH); then
echo "rebasing master on upstream/master needs human assistance." \
"Exiting"
(cd $GIT_DIR && git rebase --abort)
rm qemu-$SOURCE_VERSION$VERSION_EXTRA.tar
exit
fi
echo "WARNING: To rebase, master is being checked out"
if ! (cd ${LOCAL_REPO_MAP[0]} && git rebase upstream/$GIT_BRANCH \
$GIT_BRANCH); then
echo "WARNING: Script error? rebasing master on upstream/master" \
"succeeded in temp"
echo "dir but failed in local tree! Please investigate"
(cd ${LOCAL_REPO_MAP[0]} && git rebase --abort)
rm qemu-$SOURCE_VERSION$VERSION_EXTRA.tar
exit
fi
echo "Rebase successful"
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
fi
# We're done with GIT_UPSTREAM_COMMIT_ISH carrying the special value LATEST
GIT_UPSTREAM_COMMIT_ISH=$NEW_COMMIT_ISH
WRITE_LOG=0
else # not based on LATEST upstream master, rather any upstream commitish
if [ "$OLD_SOURCE_VERSION_AND_EXTRA" = "" ]; then
echo "Failure: tarball required which corresponds to commitish:" \
"$GIT_UPSTREAM_COMMITISH"
exit
fi
if [ -d "${LOCAL_REPO_MAP[0]}" ]; then
echo "Processing local git tree branch: $GIT_BRANCH, using commitish:"\
"$GIT_UPSTREAM_COMMIT_ISH"
if ! (cd ${LOCAL_REPO_MAP[0]} && git show-branch $GIT_BRANCH &>/dev/null)
then
echo "Error: Branch $GIT_BRANCH not found - please create a remote"\
"tracking branch of origin/$GIT_BRANCH"
exit
fi
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
# !!!!! REVIEW WHERE THIS mkdir SHOULD BE HAPPENING (kind of replaces the clone operation)
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
# depending on how created, the bundle's head is called HEAD or FETCH_HEAD
#git -C $GIT_DIR/$SUBDIR fetch bundle HEAD
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
# ( THIS ISNT WORKING - IS OLD HISTORY:)
else
echo "Processing $GIT_BRANCH branch of remote git tree, using"\
"commitish: $GIT_UPSTREAM_COMMIT_ISH"
echo "(For fast processing, consider establishing a local git tree"\
"at ${LOCAL_REPO_MAP[0]})"
# NYI - should be able to combine with local case for the most part
fi
QEMU_VERSION=$(cat $GIT_DIR/VERSION)
SOURCE_VERSION=$OLD_SOURCE_VERSION_AND_EXTRA
NEW_COMMIT_ISH=
WRITE_LOG=1
fi
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:]]{4}-.* ]]; then
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
echo "calling osc rm on $i"
done
# we need to 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
#step 0, and 0.1 are done above - question remains if the numbered case should use check dir
rm -f checkthese
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
#NEXT is #2 in lgorithm
for i in *.patch; do
if [[ $i =~ $NUMBERED_PATCH_RE ]]; then
if [[ "$NUMBERED_PATCHES" = "1" ]]; then
osc rm --force $i
echo "calling osc rm on $i"
echo " $i" >> qemu.changes.deleted
let DELETED_COUNT+=1
let TOTAL_COUNT+=1
fi
else
osc rm --force $i
echo "calling osc rm on $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
echo "calling osc add on:"; cat qemu.changes.added
fi
# NYI do we need this check?
if [ ! -e checkpatch.pl ]; then
tar Jxf qemu-$SOURCE_VERSION$VERSION_EXTRA.tar.xz \
qemu-$SOURCE_VERSION/scripts/checkpatch.pl --strip-components=2
fi
if [[ -e checkthese ]]; then
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
# Patches changed, so update the version using current time
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"
SEABIOS_VERSION=$(tar JxfO qemu-$SOURCE_VERSION$VERSION_EXTRA.tar.xz \
qemu-$SOURCE_VERSION/roms/seabios/.version | cut -d '-' -f 2)
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" = "QEMU_VERSION" ]; then
echo "%define qemuver $QEMU_VERSION$VERSION_EXTRA"
echo "%define srcver $SOURCE_VERSION$VERSION_EXTRA"
echo "Version: %qemuver"
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
elif [ "$line" = "SEABIOS_VERSION" ]; then
echo "Version: $SEABIOS_VERSION"
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 ] || [ -e qemu.changes.added ]; then
echo "Patch queue updated from ${GIT_TREE} ${GIT_BRANCH}" > \
$package.changes.proposed
fi
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
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

3
bundles.tar.xz Normal file
View File

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

50
checkbundle.sh Normal file
View File

@ -0,0 +1,50 @@
#!/bin/bash
#
# This script simply does some basic checks on the bundle tarball
# NYI: report if the required base commit isn't there - they may need to fetch the latest from upstream
set -e
source ./config.sh
rm -rf $GIT_DIR
rm -rf $BUNDLE_DIR
mkdir -p $GIT_DIR
mkdir -p $BUNDLE_DIR
tar xJf bundles.tar.xz -C $BUNDLE_DIR
BUNDLE_FILES=$(find $BUNDLE_DIR -printf "%P\n"|grep "bundle$")
git -C $GIT_DIR init
# !!!! I suspect that given the current format of the bundles dir struct, the 1st isn't used
# I suspect also that we are getting a redundant ./ in the path which isn't helpful
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
if [ "$(git -C $GIT_DIR bundle verify $BUNDLE_DIR/$entry 2>&1>/dev/null|tail --lines=1)" == "error: $GITREPO_COMMIT_ISH" ]; then
echo "Verified bundle name matches bundle's base commit as expected"
fi
git bundle list-heads $BUNDLE_DIR/$entry
LOCAL_REPO=$(readlink -f ${LOCAL_REPO_MAP[$PATCH_RANGE_INDEX]})
if [ -e $LOCAL_REPO ]; then
echo "Found local repo $LOCAL_REPO corresponding to archived git bundle, verifying base commit is present (ok if no error)..."
git -C $LOCAL_REPO verify-commit $GITREPO_COMMIT_ISH || true
else
echo "No local repo $LOCAL_REPO corresponding to archived git bundle"
fi
done
rm -rf $GIT_DIR
rm -rf $BUNDLE_DIR

102
config.sh Normal file
View File

@ -0,0 +1,102 @@
# The next few VARIABLES may be edited (or uncommented) as required:
# The 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=v4.1.0
if [ "$GIT_UPSTREAM_COMMIT_ISH" = "LATEST" ]; then
echo "Using LATEST upstream commit as base for tarball and patch queue"
GIT_BRANCH=master
fi
# otherwise we specify the branch to use, eg:
# WARNING: If transitioning from using LATEST to not, MANUALLY re-set the
# tarball present
GIT_BRANCH=opensuse-4.1
# This is used for the automated development branch tracking
NEXT_RELEASE_IS_MAJOR=0
# The shared openSUSE specific git repo, on which $GIT_LOCAL_TREE is based
GIT_TREE=git://github.com/openSUSE/qemu.git
# 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-openhackware
~/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
)
# Should we instead simply have this stored in bundle somehow? (perhaps have an ordering number, and
# store a patchrange value in this file. Unclear what is best - perhaps once we do a full scripting
# solution the right choice will fall out - what makes sense as to how the project gets initialized
# what is easiest to create (and how) to get packaging working with this workflow?
PATCH_PATH_MAP=(
""
"roms/seabios/"
"roms/ipxe/"
"roms/sgabios/"
"roms/edk2/"
"roms/skiboot/"
"roms/SLOF/"
"roms/openbios/"
"ui/keycodemapdb/"
"slirp/"
"roms/u-boot/"
"roms/openhackware/"
"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

View File

@ -12,15 +12,15 @@ Signed-off-by: Bruce Rogers <brogers@suse.com>
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/configure b/configure
index 5df1b9a285..cf261e9cc5 100755
index 578d208b374261803d84c22c2479..6cfe739061d2d8fef6d89147fcd5 100755
--- a/configure
+++ b/configure
@@ -6166,12 +6166,13 @@ if { test "$cpu" = "i386" || test "$cpu" = "x86_64"; } && \
@@ -6211,12 +6211,13 @@ if { test "$cpu" = "i386" || test "$cpu" = "x86_64"; } && \
fi
done
fi
-if test "$cpu" = "ppc64" && test "$targetos" != "Darwin" ; then
+if test "$cpu" = "ppc64" && test "$targetos" != "Darwin" && \
-if test "$ARCH" = "ppc64" && test "$targetos" != "Darwin" ; then
+if test "$ARCH" = "ppc64" && test "$targetos" != "Darwin" && \
+ test "$softmmu" = yes ; then
roms="$roms spapr-rtas"
fi

View File

@ -0,0 +1,22 @@
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 bd34cfc2394a9103fec2e951bb67..7b8a5cd6b17254685df89798ed10 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

39
git2pkg.sh Normal file
View File

@ -0,0 +1,39 @@
#!/bin/bash
set -e
source ./config.sh
echo "Updating the package from the $GIT_BRANCH branch of the local repos."
echo "(If SUCCESS is not printed upon completion, see /tmp/git2pkg.log for issues)"
# 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-skiboot
~/git/qemu-keycodemapdb
)
# 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[@]}
fi
done
./initbundle.sh &> /tmp/git2pkg.log
./bundle2spec.sh &>> /tmp/git2pkg.log
echo "SUCCESS"
tail -9 /tmp/git2pkg.log

View File

@ -0,0 +1,64 @@
From: Stewart Smith <stewart@linux.ibm.com>
Date: Tue, 18 Jun 2019 16:06:44 +1000
Subject: hdata/vpd: fix printing (char*)0x00
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Git-commit: ba977f2e4406f9de318afcdf5d666e77585ef269
GCC9 now catches this bug:
In file included from hdata/vpd.c:17:
In function vpd_vini_parse,
inlined from vpd_data_parse at hdata/vpd.c:416:3:
/home/stewart/skiboot/include/skiboot.h:93:31: error: %s directive argument is null [-Werror=format-overflow=]
93 | #define prlog(l, f, ...) do { _prlog(l, pr_fmt(f), ##__VA_ARGS__); } while(0)
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
hdata/vpd.c:390:5: note: in expansion of macro prlog
390 | prlog(PR_WARNING,
| ^~~~~
hdata/vpd.c: In function vpd_data_parse:
hdata/vpd.c:391:46: note: format string is defined here
391 | "VPD: CCIN desc not available for: %s\n",
| ^~
cc1: all warnings being treated as errors
Signed-off-by: Stewart Smith <stewart@linux.ibm.com>
Signed-off-by: Bruce Rogers <brogers@suse.com>
---
hdata/vpd.c | 9 +++++----
1 file changed, 5 insertions(+), 4 deletions(-)
diff --git a/roms/skiboot/hdata/vpd.c b/roms/skiboot/hdata/vpd.c
index 129b5062356a48d900c6aa5a140d..5a01bcc9f6fa2faef2a118eca938 100644
--- a/roms/skiboot/hdata/vpd.c
+++ b/roms/skiboot/hdata/vpd.c
@@ -328,6 +328,7 @@ static void vpd_vini_parse(struct dt_node *node,
const void *fruvpd, unsigned int fruvpd_sz)
{
const void *kw;
+ const char *desc;
uint8_t sz;
const struct card_info *cinfo;
@@ -381,15 +382,15 @@ static void vpd_vini_parse(struct dt_node *node,
dt_add_property_string(node,
"description", cinfo->description);
} else {
- kw = vpd_find(fruvpd, fruvpd_sz, "VINI", "DR", &sz);
- if (kw) {
+ desc = vpd_find(fruvpd, fruvpd_sz, "VINI", "DR", &sz);
+ if (desc) {
dt_add_prop_sanitize_val(node,
- "description", kw, sz);
+ "description", desc, sz);
} else {
dt_add_property_string(node, "description", "Unknown");
prlog(PR_WARNING,
"VPD: CCIN desc not available for: %s\n",
- (char *)kw);
+ (char*)kw);
}
}
}

View File

@ -41,7 +41,7 @@ Signed-off-by: Bruce Rogers <brogers@suse.com>
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/hw/intc/exynos4210_gic.c b/hw/intc/exynos4210_gic.c
index 69f9c18d73..4770950c94 100644
index e37d457fcf3ae8f37ae3c4047161..640f146a50af42ccd03aa18786f2 100644
--- a/hw/intc/exynos4210_gic.c
+++ b/hw/intc/exynos4210_gic.c
@@ -288,8 +288,8 @@ static void exynos4210_gic_realize(DeviceState *dev, Error **errp)

View File

@ -2,23 +2,24 @@ 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.
[BR: BSC#994082 BSC#1084316 BOO#1131894]
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 47be9071fa..d4b95ebc84 100644
index 7bcd67b098e91a0e724b77b224c1..44e62c2a627195d71ac569e9de49 100644
--- a/hw/smbios/smbios.c
+++ b/hw/smbios/smbios.c
@@ -960,6 +960,7 @@ void smbios_entry_add(QemuOpts *opts, Error **errp)
@@ -965,6 +965,7 @@ void smbios_entry_add(QemuOpts *opts, Error **errp)
struct smbios_structure_header *header;
int size;
struct smbios_table *table; /* legacy mode only */
@ -26,7 +27,7 @@ index 47be9071fa..d4b95ebc84 100644
qemu_opts_validate(opts, qemu_smbios_file_opts, &err);
if (err) {
@@ -974,11 +975,21 @@ void smbios_entry_add(QemuOpts *opts, Error **errp)
@@ -979,11 +980,21 @@ void smbios_entry_add(QemuOpts *opts, Error **errp)
}
/*
@ -52,7 +53,7 @@ index 47be9071fa..d4b95ebc84 100644
header = (struct smbios_structure_header *)(smbios_tables +
smbios_tables_len);
@@ -993,6 +1004,19 @@ void smbios_entry_add(QemuOpts *opts, Error **errp)
@@ -998,6 +1009,19 @@ void smbios_entry_add(QemuOpts *opts, Error **errp)
header->type);
return;
}
@ -72,7 +73,7 @@ index 47be9071fa..d4b95ebc84 100644
set_bit(header->type, have_binfile_bitmap);
if (header->type == 4) {
@@ -1013,6 +1037,17 @@ void smbios_entry_add(QemuOpts *opts, Error **errp)
@@ -1018,6 +1042,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.
*/

View File

@ -1,9 +1,12 @@
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]
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);
| ~~~~~~~^~~~~~~~~~
@ -14,10 +17,10 @@ Signed-off-by: Bruce Rogers <brogers@suse.com>
1 file changed, 13 insertions(+)
diff --git a/hw/usb/dev-mtp.c b/hw/usb/dev-mtp.c
index 99548b012d..8233beacab 100644
index fd1b3394a5b4b4827deece722e0c..8de503cc4d55423ae0bd070867c0 100644
--- a/hw/usb/dev-mtp.c
+++ b/hw/usb/dev-mtp.c
@@ -1711,9 +1711,22 @@ static void usb_mtp_write_metadata(MTPState *s, uint64_t dlen)
@@ -1720,9 +1720,22 @@ static void usb_mtp_write_metadata(MTPState *s, uint64_t dlen)
assert(!s->write_pending);
assert(p != NULL);

View File

@ -1,9 +1,12 @@
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=]
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]
@ -12,7 +15,7 @@ hw/usb/hcd-xhci.c:3339:54: note: directive argument in the range [1, 2147483647]
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
/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 ());
@ -25,10 +28,10 @@ Signed-off-by: Bruce Rogers <brogers@suse.com>
1 file changed, 1 insertion(+)
diff --git a/hw/usb/hcd-xhci.c b/hw/usb/hcd-xhci.c
index ec28bee319..2b061772b2 100644
index 5894a186633414970fe748dbd9f4..47ea8dd3a5f6a09e361f0f59c7b9 100644
--- a/hw/usb/hcd-xhci.c
+++ b/hw/usb/hcd-xhci.c
@@ -3322,6 +3322,7 @@ static void usb_xhci_init(XHCIState *xhci)
@@ -3324,6 +3324,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++) {

View File

@ -5,21 +5,21 @@ 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.
Addresses part of BNC#812836.
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 6190b6fc5d..177b1acf37 100644
index 76ca6ec4446998f62d384a909814..fb9d5047f8c50df8ad0e662a42ac 100644
--- a/hw/timer/i8254_common.c
+++ b/hw/timer/i8254_common.c
@@ -259,6 +259,12 @@ static int pit_dispatch_post_load(void *opaque, int version_id)
@@ -261,6 +261,12 @@ static int pit_dispatch_post_load(void *opaque, int version_id)
return 0;
}
@ -32,7 +32,7 @@ index 6190b6fc5d..177b1acf37 100644
static const VMStateDescription vmstate_pit_common = {
.name = "i8254",
.version_id = 3,
@@ -268,6 +274,7 @@ static const VMStateDescription vmstate_pit_common = {
@@ -270,6 +276,7 @@ static const VMStateDescription vmstate_pit_common = {
.pre_save = pit_dispatch_pre_save,
.post_load = pit_dispatch_post_load,
.fields = (VMStateField[]) {

View File

@ -18,10 +18,10 @@ Signed-off-by: Andreas Färber <afaerber@suse.de>
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/target/i386/cpu.h b/target/i386/cpu.h
index 83fb522554..572290c3d6 100644
index 8b3dc5533e6994bf9066f88f1a5e..3440f1e4297940d8db2e533d5cb1 100644
--- a/target/i386/cpu.h
+++ b/target/i386/cpu.h
@@ -1708,7 +1708,7 @@ uint64_t cpu_get_tsc(CPUX86State *env);
@@ -1713,7 +1713,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)

58
initbundle.sh Normal file
View File

@ -0,0 +1,58 @@
#!/bin/bash
source ./config.sh
set -e
# What is needed to "start"?
# it all begins with an upstream repo, which may have submodules, incl. recursively (each represents another repo)
# To facilitate speedy work on this upstream repo, we want to have local clones of these repos
# Next we have a tarball, either that we created from the repo, or that upstream provided
# To alter the content of this tarball, lets use git to track these changes, and produce patches which can be included
# in the package spec file
# The following can get things a bit out of the expected order, but I don't think that is really much of a problem, as long as we're guaranteed to patch the superproject before any of it's submodules
# !!!! actually the simply submodule status --recursive w/out the additional processing we do for the groking of the bundle files
SUBMODULE_COMMIT_IDS=($(git -C ~/git/qemu-opensuse submodule status --recursive|awk '{print $1}'))
SUBMODULE_DIRS=($(git -C ~/git/qemu-opensuse submodule status --recursive|awk '{print $2}'))
SUBMODULE_COUNT=${#SUBMODULE_COMMIT_IDS[@]}
# !!! I should be able to 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 $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
# also handle the superproject (I need to make this smarter, or change something - works for tag, but not normal commit:
GIT_UPSTREAM_COMMIT=$(git -C ~/git/qemu-opensuse show-ref -d $GIT_UPSTREAM_COMMIT_ISH|grep -F "^{}"|awk '{print $1}')
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
rm -rf $GIT_DIR
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]}
fi
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]})
git -C $GIT_DIR/$SUBDIR fetch origin $GIT_BRANCH
git -C $GIT_DIR/$SUBDIR bundle create $BUNDLE_DIR/$SUBDIR$GITREPO_COMMIT_ISH.bundle $GITREPO_COMMIT_ISH..FETCH_HEAD || true
git -C $(readlink -f ${LOCAL_REPO_MAP[$PATCH_RANGE_INDEX]}) remote get-url origin >$BUNDLE_DIR/$SUBDIR/repo
fi
done
tar cJvf bundles.tar.xz -C $BUNDLE_DIR .
rm -rf $BUNDLE_DIR
rm -rf $GIT_DIR

View File

@ -1,4 +1,8 @@
ipxe:Makefile: fix issues of build reproducibility
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
@ -6,12 +10,14 @@ change. (bsc#1011213)
Signed-off-by: Bruce Rogers <brogers@suse.com>
---
src/Makefile.housekeeping | 13 ++++++++++---
src/Makefile.housekeeping | 13 ++++++++++---
1 file changed, 10 insertions(+), 3 deletions(-)
--- a/src/Makefile.housekeeping
+++ b/src/Makefile.housekeeping
@@ -1079,11 +1079,18 @@ blib : $(BLIB)
diff --git a/roms/ipxe/src/Makefile.housekeeping b/roms/ipxe/src/Makefile.housekeeping
index f8334921b8b93cbd03f0a0de9910..97fa325bb52314e05192d0414436 100644
--- a/roms/ipxe/src/Makefile.housekeeping
+++ b/roms/ipxe/src/Makefile.housekeeping
@@ -1162,11 +1162,18 @@ blib : $(BLIB)
# Command to generate build ID. Must be unique for each $(BIN)/%.tmp,
# even within the same build run.
#
@ -32,7 +38,7 @@ Signed-off-by: Bruce Rogers <brogers@suse.com>
# Build version
#
@@ -1103,7 +1110,7 @@ $(BIN)/version.%.o : core/version.c $(MA
@@ -1186,7 +1193,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 $@ \

View File

@ -1,35 +0,0 @@
From 0ee72a15887b838d967c3b05070d5ad86f0d729a Mon Sep 17 00:00:00 2001
From: Bruce Rogers <brogers@suse.com>
Date: Fri, 25 Jan 2019 10:29:16 -0700
Subject: [PATCH] [build] Disable gcc address of packed member warning
GCC 9.0 introduces a new warning for using pointers to packed
structure and union members. ipxe code is replete with this usage,
partly because the architectures it is designed for handle unaligned
accesses. Therefore this warning is not very helpful and since the
default build considers warnings to be errors, needs to be disabled.
[BR: BSC#1121464]
Signed-off-by: Bruce Rogers <brogers@suse.com>
--- a/src/Makefile.housekeeping
+++ b/src/Makefile.housekeeping
@@ -187,6 +187,19 @@ WNST_FLAGS := $(shell $(WNST_TEST) && $(
WORKAROUND_CFLAGS += $(WNST_FLAGS)
endif
+# GCC 9.0 introduces a new warning for using pointers to packed
+# structure and union members. ipxe code is replete with this usage,
+# partly because the architectures it is designed for handle unaligned
+# accesses. Therefore this warning is not very helpful and since the
+# default build considers warnings to be errors, needs to be disabled.
+#
+ifeq ($(CCTYPE),gcc)
+WNAOPM_TEST = $(CC) -Waddress-of-packed-member -x c -c /dev/null -o /dev/null \
+ >/dev/null 2>&1
+WNAOPM_FLAGS := $(shell $(WNAOPM_TEST) && $(ECHO) '-Wno-address-of-packed-member')
+WORKAROUND_CFLAGS += $(WNAOPM_FLAGS)
+endif
+
# Some versions of gas choke on division operators, treating them as
# comment markers. Specifying --divide will work around this problem,
# but isn't available on older gas versions.

View File

@ -1,37 +0,0 @@
From 16a934b5fc715cd0f213390c88df0b4ec73d85f1 Mon Sep 17 00:00:00 2001
From: Bruce Rogers <brogers@suse.com>
Date: Mon, 25 Feb 2019 15:21:06 -0700
Subject: [PATCH] efi: Avoid string op warning with cross gcc 7 compile
When we started cross compiling using the gcc7 arm compiler, the
a string op warning popped up that isn't addressed by the mechanism
already in place. Add a kludge to address it.
Signed-off-by: Bruce Rogers <brogers@suse.com>
---
src/util/elf2efi.c | 9 ++++++++-
1 file changed, 8 insertions(+), 1 deletion(-)
diff --git a/src/util/elf2efi.c b/src/util/elf2efi.c
index 2c5b9df8..7d1cf03f 100644
--- a/src/util/elf2efi.c
+++ b/src/util/elf2efi.c
@@ -494,7 +494,14 @@ 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 ) );
+ /*
+ * The arm cross gcc 7 compiler warns about string problem here. Avoid
+ * it by doing operation in two stages
+ */
+ strncpy ( ( char * ) new->hdr.Name, name, sizeof ( new->hdr.Name ) -1 );
+ if (strlen(name) == sizeof( new->hdr.Name ) -1 ) {
+ *(( char * ) new->hdr.Name + sizeof( new->hdr.Name ) -1) = '\0';
+ }
new->hdr.Misc.VirtualSize = section_memsz;
new->hdr.VirtualAddress = shdr->sh_addr;
new->hdr.SizeOfRawData = section_filesz;
--
2.20.1

View File

@ -1,42 +0,0 @@
From 1280c1f65b73d6d0c4833e39a3bb8194bd03f906 Mon Sep 17 00:00:00 2001
From: Bruce Rogers <brogers@suse.com>
Date: Fri, 25 Jan 2019 09:37:44 -0700
Subject: [PATCH] [efi] Simplify diagnostic for NULL handle
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Compiling with GCC 9 now warns as follows:
interface/efi/efi_debug.c:334:3: error: %s directive argument is null [-Werror=format-overflow=]
334 | printf ( "HANDLE %s could not retrieve protocols\n",
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
335 | efi_handle_name ( handle ) );
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
cc1: all warnings being treated as errors
Simplify this diagnostic by simply indicating a <NULL> has been
passed as a handle.
[BR: BSC#1121464]
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/src/interface/efi/efi_debug.c b/src/interface/efi/efi_debug.c
index 8ea0a822..19fba767 100644
--- a/src/interface/efi/efi_debug.c
+++ b/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 <NULL> could not retrieve protocols\n" );
return;
}
--
2.20.1

View File

@ -1,36 +0,0 @@
ipxe: use gcc6 for more compact code
We have a strict size limit of 64K which needs to be enforced for
pxe-virtio.rom for migration compatibility. The v4.8 gcc compiler
used in SLE12 doesn't produce as compact code as does more recent
gcc compilers, and the pxe-virtio.rom produced with it doesn't fit
in 64K anymore without taking extraordinary efforts. I was unable
to find enough opportunities in the ipxe code and data to reduce
its size, and found that using a more recent compiler would be the
best solution to keeping the rom size within the 64K size limit.
I also discovered that $(WORKAROUND_CFLAGS) is specific to CC, but
gets used with HOST_CC, so we'd better keep those the same version
to not get in trouble with different supported options.
Signed-off-by: Bruce Rogers <brogers@suse.com>
--- a/src/Makefile
+++ b/src/Makefile
@@ -15,7 +15,7 @@ CROSS_COMPILE ?= $(CROSS)
#
# Locations of tools
#
-HOST_CC := gcc
+HOST_CC := gcc-6
RM := rm -f
TOUCH := touch
MKDIR := mkdir
@@ -24,7 +24,7 @@ ECHO := echo
PRINTF := printf
PERL := perl
TRUE := true
-CC := $(CROSS_COMPILE)gcc
+CC := $(CROSS_COMPILE)gcc-6
CPP := $(CC) -E
AS := $(CROSS_COMPILE)as
LD := $(CROSS_COMPILE)ld

View File

@ -17,17 +17,18 @@ 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 | 20 ++++++++++++++++++++
1 file changed, 20 insertions(+)
linux-user/syscall.c | 24 ++++++++++++++++++++++++
1 file changed, 24 insertions(+)
diff --git a/linux-user/syscall.c b/linux-user/syscall.c
index 958f94ab2a..fade440440 100644
index cf5de07a09235e6d92735332dc7f..3bb2c8921fc203264bbc0a37fe1d 100644
--- a/linux-user/syscall.c
+++ b/linux-user/syscall.c
@@ -6711,6 +6711,25 @@ static int open_self_stat(void *cpu_env, int fd)
@@ -6958,6 +6958,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,
@ -46,15 +47,18 @@ index 958f94ab2a..fade440440 100644
+
+ return 0;
+}
+#endif
+
static int open_self_auxv(void *cpu_env, int fd)
{
CPUState *cpu = ENV_GET_CPU((CPUArchState *)cpu_env);
@@ -6831,6 +6850,7 @@ static int do_openat(void *cpu_env, int dirfd, const char *pathname, int flags,
#if defined(HOST_WORDS_BIGENDIAN) != defined(TARGET_WORDS_BIGENDIAN)
{ "/proc/net/route", open_net_route, is_proc },
CPUState *cpu = env_cpu((CPUArchState *)cpu_env);
@@ -7100,6 +7121,9 @@ static int do_openat(void *cpu_env, int dirfd, const char *pathname, int flags,
#if defined(TARGET_SPARC)
{ "/proc/cpuinfo", open_cpuinfo, is_proc },
#endif
+#if defined(TARGET_ARM)
+ { "cpuinfo", open_cpuinfo, is_proc_myself },
{ NULL, NULL, NULL }
};
+#endif
#if defined(TARGET_M68K)
{ "/proc/hardware", open_hardware, is_proc },
#endif

View File

@ -35,7 +35,7 @@ Signed-off-by: Andreas Färber <afaerber@suse.de>
3 files changed, 57 insertions(+)
diff --git a/Makefile.target b/Makefile.target
index ae02495951..53fd5aa01e 100644
index 933b27453a1dbb9273e0a9ff2d58..6e401da667fe4295acec4dc11302 100644
--- a/Makefile.target
+++ b/Makefile.target
@@ -42,6 +42,10 @@ STPFILES=
@ -49,7 +49,7 @@ index ae02495951..53fd5aa01e 100644
config-target.h: config-target.h-timestamp
config-target.h-timestamp: config-target.mak
@@ -130,6 +134,8 @@ QEMU_CFLAGS+=-I$(SRC_PATH)/linux-user/$(TARGET_ABI_DIR) \
@@ -134,6 +138,8 @@ QEMU_CFLAGS+=-I$(SRC_PATH)/linux-user/$(TARGET_ABI_DIR) \
obj-y += linux-user/
obj-y += gdbstub.o thunk.o
@ -58,7 +58,7 @@ index ae02495951..53fd5aa01e 100644
endif #CONFIG_LINUX_USER
#########################################################
@@ -170,7 +176,11 @@ GENERATED_FILES += hmp-commands.h hmp-commands-info.h
@@ -175,7 +181,11 @@ generated-files-y += config-devices.h
endif # CONFIG_SOFTMMU
@ -70,7 +70,7 @@ index ae02495951..53fd5aa01e 100644
all-obj-y := $(obj-y)
include $(SRC_PATH)/Makefile.objs
@@ -207,6 +217,9 @@ ifdef CONFIG_DARWIN
@@ -212,6 +222,9 @@ ifdef CONFIG_DARWIN
$(call quiet-command,SetFile -a C $@,"SETFILE","$(TARGET_DIR)$@")
endif
@ -81,18 +81,18 @@ index ae02495951..53fd5aa01e 100644
$(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 769b8d8336..d48837313d 100644
index d2f33beb5e52efce6adc7fb85b7f..ffc6b095e253d4c448000a974d4d 100644
--- a/linux-user/Makefile.objs
+++ b/linux-user/Makefile.objs
@@ -7,3 +7,5 @@ obj-$(TARGET_HAS_BFLT) += flatload.o
obj-$(TARGET_I386) += vm86.o
@@ -8,3 +8,5 @@ obj-$(TARGET_I386) += vm86.o
obj-$(TARGET_ARM) += arm/nwfpe/
obj-$(TARGET_M68K) += m68k-sim.o
obj-$(TARGET_ARM) += arm/semihost.o
obj-$(TARGET_AARCH64) += arm/semihost.o
+
+obj-binfmt-y = binfmt.o
diff --git a/linux-user/binfmt.c b/linux-user/binfmt.c
new file mode 100644
index 0000000000..cd1f513b33
index 0000000000000000000000000000000000000000..cd1f513b334f3b263d9e4b5adb1981e376429fa6
--- /dev/null
+++ b/linux-user/binfmt.c
@@ -0,0 +1,42 @@

View File

@ -11,7 +11,7 @@ Signed-off-by: Alexander Graf <agraf@suse.de>
1 file changed, 26 insertions(+)
diff --git a/linux-user/binfmt.c b/linux-user/binfmt.c
index cd1f513b33..458f136fb4 100644
index cd1f513b334f3b263d9e4b5adb19..458f136fb41727702854cae4e542 100644
--- a/linux-user/binfmt.c
+++ b/linux-user/binfmt.c
@@ -5,6 +5,9 @@

View File

@ -15,10 +15,10 @@ Signed-off-by: Alexander Graf <agraf@suse.de>
1 file changed, 7 insertions(+), 2 deletions(-)
diff --git a/linux-user/syscall.c b/linux-user/syscall.c
index f2d1f8669f..5088649781 100644
index 8aa653262154326beced64bbe782..5360786be3466c44554b373b4238 100644
--- a/linux-user/syscall.c
+++ b/linux-user/syscall.c
@@ -7342,8 +7342,13 @@ static abi_long do_syscall1(void *cpu_env, int num, abi_ulong arg1,
@@ -7619,8 +7619,13 @@ static abi_long do_syscall1(void *cpu_env, int num, abi_ulong arg1,
return ret;
#endif
#ifdef TARGET_NR_lseek

View File

@ -15,10 +15,10 @@ Signed-off-by: Andreas Schwab <schwab@suse.de>
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/linux-user/syscall.c b/linux-user/syscall.c
index 5088649781..ed1c76e304 100644
index 5360786be3466c44554b373b4238..330fbecb120ebc9ebc1c0ec121f6 100644
--- a/linux-user/syscall.c
+++ b/linux-user/syscall.c
@@ -9360,7 +9360,7 @@ static abi_long do_syscall1(void *cpu_env, int num, abi_ulong arg1,
@@ -9646,7 +9646,7 @@ static abi_long do_syscall1(void *cpu_env, int num, abi_ulong arg1,
{
struct timespec ts, *pts;

View File

@ -16,10 +16,10 @@ Signed-off-by: Alexander Graf <agraf@suse.de>
2 files changed, 13 insertions(+), 13 deletions(-)
diff --git a/linux-user/qemu.h b/linux-user/qemu.h
index ef400cb78a..ccb198f666 100644
index aac0334627003fbf375dfd4c88d0..abd0b4569699ff87d015c951e651 100644
--- a/linux-user/qemu.h
+++ b/linux-user/qemu.h
@@ -206,10 +206,10 @@ abi_long memcpy_to_target(abi_ulong dest, const void *src,
@@ -207,10 +207,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);
@ -35,10 +35,10 @@ index ef400cb78a..ccb198f666 100644
extern __thread CPUState *thread_cpu;
void cpu_loop(CPUArchState *env);
diff --git a/linux-user/syscall.c b/linux-user/syscall.c
index fade440440..f2d1f8669f 100644
index 3bb2c8921fc203264bbc0a37fe1d..8aa653262154326beced64bbe782 100644
--- a/linux-user/syscall.c
+++ b/linux-user/syscall.c
@@ -6988,10 +6988,10 @@ static int host_to_target_cpu_mask(const unsigned long *host_mask,
@@ -7264,10 +7264,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>.
*/
@ -51,18 +51,18 @@ index fade440440..f2d1f8669f 100644
+ abi_ulong arg5, abi_ulong arg6, abi_ulong arg7,
+ abi_ulong arg8)
{
CPUState *cpu = ENV_GET_CPU(cpu_env);
CPUState *cpu = env_cpu(cpu_env);
abi_long ret;
@@ -9727,7 +9727,7 @@ static abi_long do_syscall1(void *cpu_env, int num, abi_long arg1,
@@ -10013,7 +10013,7 @@ static abi_long do_syscall1(void *cpu_env, int num, abi_long arg1,
*/
ret = -TARGET_EINVAL;
if (cpu_isar_feature(aa64_sve, arm_env_get_cpu(cpu_env))
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 = arm_env_get_cpu(env);
ARMCPU *cpu = env_archcpu(env);
uint32_t vq, old_vq;
@@ -11630,10 +11630,10 @@ static abi_long do_syscall1(void *cpu_env, int num, abi_long arg1,
@@ -11993,10 +11993,10 @@ static abi_long do_syscall1(void *cpu_env, int num, abi_long arg1,
return ret;
}
@ -75,5 +75,5 @@ index fade440440..f2d1f8669f 100644
+ abi_ulong arg5, abi_ulong arg6, abi_ulong arg7,
+ abi_ulong arg8)
{
CPUState *cpu = ENV_GET_CPU(cpu_env);
CPUState *cpu = env_cpu(cpu_env);
abi_long ret;

View File

@ -11,7 +11,7 @@ Signed-off-by: Bruce Rogers <brogers@suse.com>
1 file changed, 1 insertion(+)
diff --git a/pc-bios/s390-ccw/netboot.mak b/pc-bios/s390-ccw/netboot.mak
index 14e96b2aa6..c965a4cfd4 100644
index 5eefb7c289395ca37fcd241ce53d..ea2994722cde7e8a65796d374dc7 100644
--- a/pc-bios/s390-ccw/netboot.mak
+++ b/pc-bios/s390-ccw/netboot.mak
@@ -53,6 +53,7 @@ libc.a: $(LIBCOBJS)

40
pkg2git.sh Normal file
View File

@ -0,0 +1,40 @@
#!/bin/bash
set -e
source ./config.sh
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)"
# 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-skiboot
~/git/qemu-keycodemapdb
)
# 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[@]}
fi
done
./bundle2local.sh &> /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 git2pkg.sh"

View File

@ -1,8 +0,0 @@
#!/bin/sh
cp qemu.changes qemu-testsuite.changes
if [ "$1" != "-q" ]; then
echo "Note that the patch queue needs to be regenerated via update_git.sh"
echo "before running $0."
fi

View File

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

Binary file not shown.

3
qemu-4.1.0.tar.xz Normal file
View File

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

View File

@ -13,7 +13,7 @@ Signed-off-by: Andreas Färber <afaerber@suse.de>
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/scripts/qemu-binfmt-conf.sh b/scripts/qemu-binfmt-conf.sh
index b5a16742a1..4f1358e2fd 100755
index b5a16742a149c0d2e08c6a34d08e..4f1358e2fd8c0da34cf06a763ca8 100755
--- a/scripts/qemu-binfmt-conf.sh
+++ b/scripts/qemu-binfmt-conf.sh
@@ -319,7 +319,7 @@ BINFMT_SET=qemu_register_interpreter

View File

@ -12,7 +12,7 @@ Signed-off-by: Andreas Färber <afaerber@suse.de>
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/scripts/qemu-binfmt-conf.sh b/scripts/qemu-binfmt-conf.sh
index 4f1358e2fd..13add7775e 100755
index 4f1358e2fd8c0da34cf06a763ca8..13add7775eb7d24c52735b02cd51 100755
--- a/scripts/qemu-binfmt-conf.sh
+++ b/scripts/qemu-binfmt-conf.sh
@@ -262,7 +262,7 @@ qemu_generate_register() {

View File

@ -5,11 +5,12 @@ 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.
[BR: BOO#988279]
Signed-off-by: Bruce Rogers <brogers@suse.com>
[AF: Rebased for v2.7.0-rc2]
Signed-off-by: Andreas Färber <afaerber@suse.de>
@ -18,11 +19,11 @@ Signed-off-by: Andreas Färber <afaerber@suse.de>
1 file changed, 25 insertions(+), 3 deletions(-)
diff --git a/qemu-bridge-helper.c b/qemu-bridge-helper.c
index 5396fbfbb6..cafe2bf27b 100644
index 3d50ec094c794b9c0835628f10c5..f2291b398f8e4589f649af226dba 100644
--- a/qemu-bridge-helper.c
+++ b/qemu-bridge-helper.c
@@ -110,7 +110,12 @@ static int parse_acl_file(const char *filename, ACLList *acl_list)
*argend = 0;
@@ -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));
@ -35,7 +36,7 @@ index 5396fbfbb6..cafe2bf27b 100644
if (strcmp(arg, "all") == 0) {
acl_rule->type = ACL_DENY_ALL;
} else {
@@ -119,7 +124,12 @@ static int parse_acl_file(const char *filename, ACLList *acl_list)
@@ -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) {
@ -49,7 +50,7 @@ index 5396fbfbb6..cafe2bf27b 100644
if (strcmp(arg, "all") == 0) {
acl_rule->type = ACL_ALLOW_ALL;
} else {
@@ -413,6 +423,18 @@ int main(int argc, char **argv)
@@ -433,6 +443,18 @@ int main(int argc, char **argv)
goto cleanup;
}
@ -68,7 +69,7 @@ index 5396fbfbb6..cafe2bf27b 100644
/* write fd to the domain socket */
if (send_fd(unixfd, fd) == -1) {
fprintf(stderr, "failed to write fd to unix socket: %s\n",
@@ -434,7 +456,7 @@ cleanup:
@@ -454,7 +476,7 @@ cleanup:
}
while ((acl_rule = QSIMPLEQ_FIRST(&acl_list)) != NULL) {
QSIMPLEQ_REMOVE_HEAD(&acl_list, entry);

View File

@ -11,10 +11,10 @@ Signed-off-by: Bruce Rogers <brogers@suse.com>
1 file changed, 3 insertions(+)
diff --git a/linux-user/syscall.c b/linux-user/syscall.c
index 96cd4bf86d..cb0019b3df 100644
index 8367cb138dfe075e06ca455009cc..17914fadfc9f3390d4b8ab8d74a6 100644
--- a/linux-user/syscall.c
+++ b/linux-user/syscall.c
@@ -8173,6 +8173,9 @@ static abi_long do_syscall1(void *cpu_env, int num, abi_long arg1,
@@ -8446,6 +8446,9 @@ static abi_long do_syscall1(void *cpu_env, int num, abi_long arg1,
case TARGET_NR_gettimeofday:
{
struct timeval tv;

View File

@ -13,10 +13,10 @@ Signed-off-by: Bruce Rogers <brogers@suse.com>
1 file changed, 13 insertions(+), 1 deletion(-)
diff --git a/linux-user/syscall.c b/linux-user/syscall.c
index cb0019b3df..4d4112adf9 100644
index 17914fadfc9f3390d4b8ab8d74a6..25fd641816c0a54e49a167f5e818 100644
--- a/linux-user/syscall.c
+++ b/linux-user/syscall.c
@@ -4824,7 +4824,19 @@ static abi_long do_ioctl(int fd, int cmd, abi_long arg)
@@ -5043,7 +5043,19 @@ static abi_long do_ioctl(int fd, int cmd, abi_long arg)
ie = ioctl_entries;
for(;;) {
if (ie->target_cmd == 0) {

View File

@ -16,10 +16,10 @@ Signed-off-by: Bruce Rogers <brogers@suse.com>
1 file changed, 8 insertions(+)
diff --git a/linux-user/syscall.c b/linux-user/syscall.c
index 4d4112adf9..958f94ab2a 100644
index 25fd641816c0a54e49a167f5e818..cf5de07a09235e6d92735332dc7f 100644
--- a/linux-user/syscall.c
+++ b/linux-user/syscall.c
@@ -4865,6 +4865,13 @@ static abi_long do_ioctl(int fd, int cmd, abi_long arg)
@@ -5084,6 +5084,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) {
@ -33,7 +33,7 @@ index 4d4112adf9..958f94ab2a 100644
case IOC_R:
ret = get_errno(safe_ioctl(fd, ie->host_cmd, buf_temp));
if (!is_error(ret)) {
@@ -4883,6 +4890,7 @@ static abi_long do_ioctl(int fd, int cmd, abi_long arg)
@@ -5102,6 +5109,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;

File diff suppressed because it is too large Load Diff

View File

@ -1,369 +0,0 @@
#
# spec file for package qemu-linux-user
#
# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
#
# 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/
#
%define build_in_tree 1
%define srcname qemu
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
%define qemuver 4.0.0
%define srcver 4.0.0
Version: %qemuver
Release: 0
Source: https://wiki.qemu.org/download/%{srcname}-%{srcver}.tar.xz
Source99: https://wiki.qemu.org/download/%{srcname}-%{srcver}.tar.xz.sig
Source100: %{srcname}.keyring
Source400: update_git.sh
# Upstream First -- https://wiki.qemu.org/Contribute/SubmitAPatch
# This patch queue is auto-generated from https://github.com/openSUSE/qemu
Patch0001: 0001-XXX-dont-dump-core-on-sigabort.patch
Patch0002: 0002-qemu-binfmt-conf-Modify-default-pat.patch
Patch0003: 0003-qemu-cvs-gettimeofday.patch
Patch0004: 0004-qemu-cvs-ioctl_debug.patch
Patch0005: 0005-qemu-cvs-ioctl_nodirection.patch
Patch0006: 0006-linux-user-add-binfmt-wrapper-for-a.patch
Patch0007: 0007-PPC-KVM-Disable-mmu-notifier-check.patch
Patch0008: 0008-linux-user-binfmt-support-host-bina.patch
Patch0009: 0009-linux-user-Fake-proc-cpuinfo.patch
Patch0010: 0010-linux-user-use-target_ulong.patch
Patch0011: 0011-Make-char-muxer-more-robust-wrt-sma.patch
Patch0012: 0012-linux-user-lseek-explicitly-cast-no.patch
Patch0013: 0013-AIO-Reduce-number-of-threads-for-32.patch
Patch0014: 0014-xen_disk-Add-suse-specific-flush-di.patch
Patch0015: 0015-qemu-bridge-helper-reduce-security-.patch
Patch0016: 0016-qemu-binfmt-conf-use-qemu-ARCH-binf.patch
Patch0017: 0017-linux-user-properly-test-for-infini.patch
Patch0018: 0018-roms-Makefile-pass-a-packaging-time.patch
Patch0019: 0019-Raise-soft-address-space-limit-to-h.patch
Patch0020: 0020-increase-x86_64-physical-bits-to-42.patch
Patch0021: 0021-vga-Raise-VRAM-to-16-MiB-for-pc-0.1.patch
Patch0022: 0022-i8254-Fix-migration-from-SLE11-SP2.patch
Patch0023: 0023-acpi_piix4-Fix-migration-from-SLE11.patch
Patch0024: 0024-Switch-order-of-libraries-for-mpath.patch
Patch0025: 0025-Make-installed-scripts-explicitly-p.patch
Patch0026: 0026-hw-smbios-handle-both-file-formats-.patch
Patch0027: 0027-tests-test-thread-pool-is-racy-add-.patch
Patch0028: 0028-xen-add-block-resize-support-for-xe.patch
Patch0029: 0029-tests-qemu-iotests-Triple-timeout-o.patch
Patch0030: 0030-tests-block-io-test-130-needs-some-.patch
Patch0031: 0031-xen-ignore-live-parameter-from-xen-.patch
Patch0032: 0032-tests-Fix-Makefile-handling-of-chec.patch
Patch0033: 0033-Conditionalize-ui-bitmap-installati.patch
Patch0034: 0034-Revert-target-i386-kvm-add-VMX-migr.patch
Patch0035: 0035-tests-change-error-message-in-test-.patch
Patch0036: 0036-sockets-avoid-string-truncation-war.patch
Patch0037: 0037-hw-usb-hcd-xhci-Fix-GCC-9-build-war.patch
Patch0038: 0038-hw-usb-dev-mtp-Fix-GCC-9-build-warn.patch
Patch0039: 0039-linux-user-avoid-string-truncation-.patch
Patch0040: 0040-linux-user-elfload-Fix-GCC-9-build-.patch
Patch0041: 0041-qxl-avoid-unaligned-pointer-reads-w.patch
Patch0042: 0042-libvhost-user-fix-Waddress-of-packe.patch
Patch0043: 0043-target-i386-define-md-clear-bit.patch
Patch0044: 0044-hw-intc-exynos4210_gic-provide-more.patch
Patch0045: 0045-kbd-state-fix-autorepeat-handling.patch
Patch0046: 0046-target-ppc-ensure-we-get-null-termi.patch
Patch0047: 0047-configure-only-populate-roms-if-sof.patch
Patch0048: 0048-pc-bios-s390-ccw-net-avoid-warning-.patch
Patch0049: 0049-qxl-check-release-info-object.patch
Patch0050: 0050-qemu-bridge-helper-restrict-interfa.patch
Patch0051: 0051-linux-user-fix-to-handle-variably-s.patch
# Please do not add QEMU patches manually here.
# Run update_git.sh to regenerate this queue.
ExcludeArch: s390
BuildRoot: %{_tmppath}/%{name}-%{version}-build
BuildRequires: e2fsprogs-devel
BuildRequires: fdupes
BuildRequires: gcc-c++
BuildRequires: glib2-devel-static
BuildRequires: glibc-devel-static
BuildRequires: makeinfo
BuildRequires: pcre-devel-static
%if 0%{?suse_version} > 1320
BuildRequires: python3-base
%else
BuildRequires: python-base
%endif
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
%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.
%prep
%setup -q -n %{srcname}-%{expand:%%(SV=%{srcver};echo ${SV%%%%+git*})}
%patch0001 -p1
%patch0002 -p1
%patch0003 -p1
%patch0004 -p1
%patch0005 -p1
%patch0006 -p1
%patch0007 -p1
%patch0008 -p1
%patch0009 -p1
%patch0010 -p1
%patch0011 -p1
%patch0012 -p1
%patch0013 -p1
%patch0014 -p1
%patch0015 -p1
%patch0016 -p1
%patch0017 -p1
%patch0018 -p1
%patch0019 -p1
%patch0020 -p1
%patch0021 -p1
%patch0022 -p1
%patch0023 -p1
%patch0024 -p1
%patch0025 -p1
%patch0026 -p1
%patch0027 -p1
%patch0028 -p1
%patch0029 -p1
%patch0030 -p1
%patch0031 -p1
%patch0032 -p1
%patch0033 -p1
%patch0034 -p1
%patch0035 -p1
%patch0036 -p1
%patch0037 -p1
%patch0038 -p1
%patch0039 -p1
%patch0040 -p1
%patch0041 -p1
%patch0042 -p1
%patch0043 -p1
%patch0044 -p1
%patch0045 -p1
%patch0046 -p1
%patch0047 -p1
%patch0048 -p1
%patch0049 -p1
%patch0050 -p1
%patch0051 -p1
%build
%define _lto_cflags %{nil}
%if %build_in_tree
%define mybuilddir %{_builddir}/%buildsubdir
%else
%define mybuilddir %{_builddir}/mybuilddir
mkdir -p %mybuilddir
cd %mybuilddir
%endif
%{_builddir}/%buildsubdir/configure \
--prefix=%_prefix \
--sysconfdir=%_sysconfdir \
--libdir=%_libdir \
--libexecdir=%_libexecdir \
--localstatedir=%_localstatedir \
%if 0%{?suse_version} > 1320
--python=%_bindir/python3 \
%else
--python=%_bindir/python2 \
%endif
--extra-cflags="%{optflags}" \
--disable-stack-protector \
--disable-strip \
--without-default-devices \
--disable-system --enable-linux-user \
--disable-tools --disable-guest-agent \
--static \
--disable-modules \
--disable-pie \
--disable-docs \
--audio-drv-list="" \
--enable-attr \
--disable-auth-pam \
--disable-blobs \
--disable-bluez \
--disable-bochs \
--disable-brlapi \
--disable-bzip2 \
--disable-cap-ng \
--disable-capstone \
--disable-cloop \
--enable-coroutine-pool \
--disable-curl \
--disable-curses \
--disable-dmg \
--disable-fdt \
--disable-gcrypt \
--disable-glusterfs \
--disable-gnutls \
--disable-gtk \
--disable-hax \
--disable-hvf \
--disable-iconv \
--disable-jemalloc \
--disable-kvm \
--disable-libiscsi \
--disable-libnfs \
--disable-libpmem \
--disable-libssh2 \
--disable-libusb \
--disable-libxml2 \
--disable-linux-aio \
--disable-lzfse \
--disable-lzo \
--disable-malloc-trim \
--enable-membarrier \
--disable-mpath \
--disable-netmap \
--disable-nettle \
--disable-numa \
--disable-opengl \
--disable-parallels \
--disable-pvrdma \
--disable-qcow1 \
--disable-qed \
--disable-rbd \
--disable-rdma \
--disable-replication \
--disable-sanitizers \
--disable-sdl \
--disable-sdl-image \
--disable-seccomp \
--disable-sheepdog \
--disable-slirp \
--disable-smartcard \
--disable-snappy \
--disable-spice \
--disable-tcmalloc \
--disable-tpm \
--disable-usb-redir \
--disable-vde \
--disable-vdi \
--disable-vhost-crypto \
--disable-vhost-kernel \
--disable-vhost-net \
--disable-vhost-scsi \
--disable-vhost-user \
--disable-vhost-vsock \
--disable-virglrenderer \
--disable-virtfs \
--disable-vnc \
--disable-vnc-jpeg \
--disable-vnc-png \
--disable-vnc-sasl \
--disable-vte \
--disable-vvfat \
--enable-werror \
--disable-whpx \
--disable-xen \
--disable-xen-pci-passthrough \
--disable-xfsctl \
make %{?_smp_mflags} V=1
%ifarch %ix86
%define qemu_arch i386
%endif
%ifarch x86_64
%define qemu_arch x86_64
%endif
%ifarch %arm
%define qemu_arch arm
%endif
%ifarch aarch64
%define qemu_arch aarch64
%endif
%ifarch ppc
%define qemu_arch ppc
%endif
%ifarch ppc64
%define qemu_arch ppc64
%endif
%ifarch ppc64le
%define qemu_arch ppc64le
%endif
%ifarch s390x
%define qemu_arch s390x
%endif
%ifarch %ix86 x86_64 %arm aarch64 ppc ppc64 ppc64le s390x
%check
cd %mybuilddir
%{qemu_arch}-linux-user/qemu-%{qemu_arch} %_bindir/ls > /dev/null
make %{?_smp_mflags} check-softfloat
%endif
%install
cd %mybuilddir
make %{?_smp_mflags} 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
%fdupes -s %{buildroot}
%files
%defattr(-, root, root)
%doc Changelog README 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-hppa
%_bindir/qemu-i386
%_bindir/qemu-m68k
%_bindir/qemu-microblaze
%_bindir/qemu-microblazeel
%_bindir/qemu-mips
%_bindir/qemu-mipsel
%_bindir/qemu-mipsn32
%_bindir/qemu-mipsn32el
%_bindir/qemu-mips64
%_bindir/qemu-mips64el
%_bindir/qemu-nios2
%_bindir/qemu-or1k
%_bindir/qemu-ppc64abi32
%_bindir/qemu-ppc64
%_bindir/qemu-ppc64le
%_bindir/qemu-ppc
%_bindir/qemu-riscv32
%_bindir/qemu-riscv64
%_bindir/qemu-s390x
%_bindir/qemu-sh4
%_bindir/qemu-sh4eb
%_bindir/qemu-sparc32plus
%_bindir/qemu-sparc64
%_bindir/qemu-sparc
%_bindir/qemu-tilegx
%_bindir/qemu-x86_64
%_bindir/qemu-xtensa
%_bindir/qemu-xtensaeb
%_bindir/qemu-*-binfmt
%_sbindir/qemu-binfmt-conf.sh
%changelog

View File

@ -1,266 +0,0 @@
#
# spec file for package qemu-linux-user
#
# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
#
# 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/
#
%define build_in_tree 1
%define srcname qemu
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
QEMU_VERSION
Release: 0
Source: https://wiki.qemu.org/download/%{srcname}-%{srcver}.tar.xz
Source100: %{srcname}.keyring
Source400: update_git.sh
# Upstream First -- https://wiki.qemu.org/Contribute/SubmitAPatch
# This patch queue is auto-generated from https://github.com/openSUSE/qemu
PATCH_FILES
# Please do not add QEMU patches manually here.
# Run update_git.sh to regenerate this queue.
ExcludeArch: s390
BuildRoot: %{_tmppath}/%{name}-%{version}-build
BuildRequires: e2fsprogs-devel
BuildRequires: fdupes
BuildRequires: gcc-c++
BuildRequires: glib2-devel-static
BuildRequires: glibc-devel-static
BuildRequires: makeinfo
BuildRequires: pcre-devel-static
%if 0%{?suse_version} > 1320
BuildRequires: python3-base
%else
BuildRequires: python-base
%endif
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
%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.
%prep
%setup -q -n %{srcname}-%{expand:%%(SV=%{srcver};echo ${SV%%%%+git*})}
PATCH_EXEC
%build
%define _lto_cflags %{nil}
%if %build_in_tree
%define mybuilddir %{_builddir}/%buildsubdir
%else
%define mybuilddir %{_builddir}/mybuilddir
mkdir -p %mybuilddir
cd %mybuilddir
%endif
%{_builddir}/%buildsubdir/configure \
--prefix=%_prefix \
--sysconfdir=%_sysconfdir \
--libdir=%_libdir \
--libexecdir=%_libexecdir \
--localstatedir=%_localstatedir \
%if 0%{?suse_version} > 1320
--python=%_bindir/python3 \
%else
--python=%_bindir/python2 \
%endif
--extra-cflags="%{optflags}" \
--disable-stack-protector \
--disable-strip \
--without-default-devices \
--disable-system --enable-linux-user \
--disable-tools --disable-guest-agent \
--static \
--disable-modules \
--disable-pie \
--disable-docs \
--audio-drv-list="" \
--enable-attr \
--disable-auth-pam \
--disable-blobs \
--disable-bluez \
--disable-bochs \
--disable-brlapi \
--disable-bzip2 \
--disable-cap-ng \
--disable-capstone \
--disable-cloop \
--enable-coroutine-pool \
--disable-curl \
--disable-curses \
--disable-dmg \
--disable-fdt \
--disable-gcrypt \
--disable-glusterfs \
--disable-gnutls \
--disable-gtk \
--disable-hax \
--disable-hvf \
--disable-iconv \
--disable-jemalloc \
--disable-kvm \
--disable-libiscsi \
--disable-libnfs \
--disable-libpmem \
--disable-libssh2 \
--disable-libusb \
--disable-libxml2 \
--disable-linux-aio \
--disable-lzfse \
--disable-lzo \
--disable-malloc-trim \
--enable-membarrier \
--disable-mpath \
--disable-netmap \
--disable-nettle \
--disable-numa \
--disable-opengl \
--disable-parallels \
--disable-pvrdma \
--disable-qcow1 \
--disable-qed \
--disable-rbd \
--disable-rdma \
--disable-replication \
--disable-sanitizers \
--disable-sdl \
--disable-sdl-image \
--disable-seccomp \
--disable-sheepdog \
--disable-slirp \
--disable-smartcard \
--disable-snappy \
--disable-spice \
--disable-tcmalloc \
--disable-tpm \
--disable-usb-redir \
--disable-vde \
--disable-vdi \
--disable-vhost-crypto \
--disable-vhost-kernel \
--disable-vhost-net \
--disable-vhost-scsi \
--disable-vhost-user \
--disable-vhost-vsock \
--disable-virglrenderer \
--disable-virtfs \
--disable-vnc \
--disable-vnc-jpeg \
--disable-vnc-png \
--disable-vnc-sasl \
--disable-vte \
--disable-vvfat \
--enable-werror \
--disable-whpx \
--disable-xen \
--disable-xen-pci-passthrough \
--disable-xfsctl \
make %{?_smp_mflags} V=1
%ifarch %ix86
%define qemu_arch i386
%endif
%ifarch x86_64
%define qemu_arch x86_64
%endif
%ifarch %arm
%define qemu_arch arm
%endif
%ifarch aarch64
%define qemu_arch aarch64
%endif
%ifarch ppc
%define qemu_arch ppc
%endif
%ifarch ppc64
%define qemu_arch ppc64
%endif
%ifarch ppc64le
%define qemu_arch ppc64le
%endif
%ifarch s390x
%define qemu_arch s390x
%endif
%ifarch %ix86 x86_64 %arm aarch64 ppc ppc64 ppc64le s390x
%check
cd %mybuilddir
%{qemu_arch}-linux-user/qemu-%{qemu_arch} %_bindir/ls > /dev/null
make %{?_smp_mflags} check-softfloat
%endif
%install
cd %mybuilddir
make %{?_smp_mflags} 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
%fdupes -s %{buildroot}
%files
%defattr(-, root, root)
%doc Changelog README 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-hppa
%_bindir/qemu-i386
%_bindir/qemu-m68k
%_bindir/qemu-microblaze
%_bindir/qemu-microblazeel
%_bindir/qemu-mips
%_bindir/qemu-mipsel
%_bindir/qemu-mipsn32
%_bindir/qemu-mipsn32el
%_bindir/qemu-mips64
%_bindir/qemu-mips64el
%_bindir/qemu-nios2
%_bindir/qemu-or1k
%_bindir/qemu-ppc64abi32
%_bindir/qemu-ppc64
%_bindir/qemu-ppc64le
%_bindir/qemu-ppc
%_bindir/qemu-riscv32
%_bindir/qemu-riscv64
%_bindir/qemu-s390x
%_bindir/qemu-sh4
%_bindir/qemu-sh4eb
%_bindir/qemu-sparc32plus
%_bindir/qemu-sparc64
%_bindir/qemu-sparc
%_bindir/qemu-tilegx
%_bindir/qemu-x86_64
%_bindir/qemu-xtensa
%_bindir/qemu-xtensaeb
%_bindir/qemu-*-binfmt
%_sbindir/qemu-binfmt-conf.sh
%changelog

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,3 +1,195 @@
-------------------------------------------------------------------
Wed Sep 11 14:31:26 UTC 2019 - Bruce Rogers <brogers@suse.com>
- Include more tweaks to our packaging workflow scripts
- Produce qemu-linux-user and qemu-testsuite via the build service
multibuild capability, instead of duplicating the spec file and
using package link in build service
* combine qemu-linux-user spec file into main qemu spec file. Since
this model uses a single changelog, here are some historicial
mentions from the now unused qemu-linux-user.changes (delta from
qemu's was quite minimal):
- Adjust to a v5.2 linux kernel change regarding SIOCGSTAMP
- Fix pwrite64/pread64 to return 0 over -1 for a
zero length NULL buffer in qemu (bsc#1121600)
* bsc#1112499
* Since qemu-testsuite.spec and qemu-testsuite.changes were just
copies of the main qemu version nothing needs to be done there
-------------------------------------------------------------------
Fri Sep 6 16:10:18 UTC 2019 - Bruce Rogers <brogers@suse.com>
- Build opensbi from source on riscv64
-------------------------------------------------------------------
Fri Sep 6 16:04:15 UTC 2019 - Bruce Rogers <brogers@suse.com>
- Update to v4.1.0: See http://wiki.qemu.org/ChangeLog/4.1
Take note that ongoing feature deprecation is tracked at both
http://wiki.qemu-project.org/Features/LegacyRemoval and in
Appendix B of the qemu-doc.* files installed with the qemu package
Some noteworthy changes:
* x86: CPU models are now versioned
* x86: CPU die topology can now be configured
* x86: New Hygon Dhyana and Intel Snowridge CPU models
* s390: The bios now supports IPL (boot) from ECKD DASD assigned
to the guest via vfio-ccw
* s390: The bios now tolerates the presence of bootmap signature
entries written by zipl
* PowerPC: pseries machine now supports KVM acceleration
(kernel_irqchip=on) of the XIVE interrupt controller
* PowerPC: pseries now supports hot-plug of PCI bridges and hot-plug
and unplug of devices under PCI bridges
* ARM: QEMU now supports emulating an FPU for Cortex-M CPUs, and the
Cortex-M4 and Cortex-M33 now provide the FP
* Python 2 support is deprecated
* UEFI platform firmware binaries, and matching variable store
templates are now installed
* Now it's possible to specify memory-less NUMA node when using
"-numa node,memdev" options
* Possible to trigger self announcement on specific network interfaces
* Default memory distribution between NUMA nodes is now deprecated
* Fallback to normal RAM allocation if QEMU is not able to allocate
from the "-mem-path" provided file/filesystem is now deprecated
* virtio-gpu 2d/3d rendering may now be offloaded to an external
vhost-user process, such as QEMU vhost-user-gpu
* QEMU will automatically try to use the MAP_SYNC mmap flag for memory
backends configured with pmem=on,share=on
* Additional SeaVGABIOS patches added for vga-ati compatibility
- Drop attempt at build compatibility with SLE12
- New sub-packages: qemu-edk2, qemu-vhost-user-gpu
- Conditionalize building of qemu-edk2 (and leave unbuilt for now)
- Implement new packaging workflow, includes no longer numbering
patches, and having the "current git repo" stored with the package
in the form of git bundles
* Patches dropped (upstream unless otherwise noted):
0027-tests-test-thread-pool-is-racy-add-.patch
0032-tests-Fix-Makefile-handling-of-chec.patch
0034-Revert-target-i386-kvm-add-VMX-migr.patch
0036-sockets-avoid-string-truncation-war.patch
0039-linux-user-avoid-string-truncation-.patch
0040-linux-user-elfload-Fix-GCC-9-build-.patch
0041-qxl-avoid-unaligned-pointer-reads-w.patch
0042-libvhost-user-fix-Waddress-of-packe.patch
0043-target-i386-define-md-clear-bit.patch
0045-kbd-state-fix-autorepeat-handling.patch
0046-target-ppc-ensure-we-get-null-termi.patch
0049-qxl-check-release-info-object.patch
0050-qemu-bridge-helper-restrict-interfa.patch
0051-linux-user-fix-to-handle-variably-s.patch
ipxe-use-gcc6-for-more-compact-code.patch (no longer needed)
(the next three are replaced by the upstream equivalent)
ipxe-efi-Simplify-diagnostic-for-NULL-handle.patch
ipxe-build-Disable-gcc-address-of-packed-member-warning.patch
ipxe-efi-Avoid-string-op-warning-with-cross-gcc-7-compile.patch
slirp-fix-heap-overflow-in-ip_reass-on-big-packet-input.patch
* Patches renamed:
0001-XXX-dont-dump-core-on-sigabort.patch
-> XXX-dont-dump-core-on-sigabort.patch
0002-qemu-binfmt-conf-Modify-default-pat.patch
-> qemu-binfmt-conf-Modify-default-path.patch
0003-qemu-cvs-gettimeofday.patch
-> qemu-cvs-gettimeofday.patch
0004-qemu-cvs-ioctl_debug.patch
-> qemu-cvs-ioctl_debug.patch
0005-qemu-cvs-ioctl_nodirection.patch
-> qemu-cvs-ioctl_nodirection.patch
0006-linux-user-add-binfmt-wrapper-for-a.patch
-> linux-user-add-binfmt-wrapper-for-argv-0.patch
0007-PPC-KVM-Disable-mmu-notifier-check.patch
-> PPC-KVM-Disable-mmu-notifier-check.patch
0008-linux-user-binfmt-support-host-bina.patch
-> linux-user-binfmt-support-host-binaries.patch
0009-linux-user-Fake-proc-cpuinfo.patch
-> linux-user-Fake-proc-cpuinfo.patch
0010-linux-user-use-target_ulong.patch
-> linux-user-use-target_ulong.patch
0011-Make-char-muxer-more-robust-wrt-sma.patch
-> Make-char-muxer-more-robust-wrt-small-FI.patch
0012-linux-user-lseek-explicitly-cast-no.patch
-> linux-user-lseek-explicitly-cast-non-set.patch
0013-AIO-Reduce-number-of-threads-for-32.patch
-> AIO-Reduce-number-of-threads-for-32bit-h.patch
0014-xen_disk-Add-suse-specific-flush-di.patch
-> xen_disk-Add-suse-specific-flush-disable.patch
0015-qemu-bridge-helper-reduce-security-.patch
-> qemu-bridge-helper-reduce-security-profi.patch
0016-qemu-binfmt-conf-use-qemu-ARCH-binf.patch
-> qemu-binfmt-conf-use-qemu-ARCH-binfmt.patch
0017-linux-user-properly-test-for-infini.patch
-> linux-user-properly-test-for-infinite-ti.patch
0018-roms-Makefile-pass-a-packaging-time.patch
-> roms-Makefile-pass-a-packaging-timestamp.patch
0019-Raise-soft-address-space-limit-to-h.patch
-> Raise-soft-address-space-limit-to-hard-l.patch
0020-increase-x86_64-physical-bits-to-42.patch
-> increase-x86_64-physical-bits-to-42.patch
0021-vga-Raise-VRAM-to-16-MiB-for-pc-0.1.patch
-> vga-Raise-VRAM-to-16-MiB-for-pc-0.15-and.patch
0022-i8254-Fix-migration-from-SLE11-SP2.patch
-> i8254-Fix-migration-from-SLE11-SP2.patch
0023-acpi_piix4-Fix-migration-from-SLE11.patch
-> acpi_piix4-Fix-migration-from-SLE11-SP2.patch
0024-Switch-order-of-libraries-for-mpath.patch
-> Switch-order-of-libraries-for-mpath-supp.patch
0025-Make-installed-scripts-explicitly-p.patch
-> Make-installed-scripts-explicitly-python.patch
0026-hw-smbios-handle-both-file-formats-.patch
-> hw-smbios-handle-both-file-formats-regar.patch
0028-xen-add-block-resize-support-for-xe.patch
-> xen-add-block-resize-support-for-xen-dis.patch
0029-tests-qemu-iotests-Triple-timeout-o.patch
-> tests-qemu-iotests-Triple-timeout-of-i-o.patch
0030-tests-block-io-test-130-needs-some-.patch
-> tests-block-io-test-130-needs-some-delay.patch
0031-xen-ignore-live-parameter-from-xen-.patch
-> xen-ignore-live-parameter-from-xen-save-.patch
0033-Conditionalize-ui-bitmap-installati.patch
-> Conditionalize-ui-bitmap-installation-be.patch
0035-tests-change-error-message-in-test-.patch
-> tests-change-error-message-in-test-162.patch
0037-hw-usb-hcd-xhci-Fix-GCC-9-build-war.patch
-> hw-usb-hcd-xhci-Fix-GCC-9-build-warning.patch
0038-hw-usb-dev-mtp-Fix-GCC-9-build-warn.patch
-> hw-usb-dev-mtp-Fix-GCC-9-build-warning.patch
0044-hw-intc-exynos4210_gic-provide-more.patch
-> hw-intc-exynos4210_gic-provide-more-room.patch
0047-configure-only-populate-roms-if-sof.patch
-> configure-only-populate-roms-if-softmmu.patch
0048-pc-bios-s390-ccw-net-avoid-warning-.patch
-> pc-bios-s390-ccw-net-avoid-warning-about.patch
* Patches added:
roms-change-cross-compiler-naming-to-be-.patch
roms-Makefile.edk2-don-t-invoke-git-sinc.patch
vga-move-modelist-from-bochsvga.c-to-new.patch
vga-make-memcpy_high-public.patch
vga-add-atiext-driver.patch
vga-add-ati-bios-tables.patch
vbe-add-edid-support.patch
ati-add-edid-support.patch
ati-vga-make-less-verbose.patch
ati-vga-fix-ati_read.patch
ati-vga-make-i2c-register-and-bits-confi.patch
ati-vga-try-vga-ddc-first.patch
ati-vga-add-rage128-edid-support.patch
enable-cross-compilation-on-ARM.patch
Fix-s-directive-argument-is-null-error.patch
Workaround-compilation-error-with-gcc-9..patch
Do-not-apply-WORKAROUND_CFLAGS-for-host-.patch
roms-sgabios-Fix-csum8-to-be-built-by-ho.patch
Disable-Waddress-of-packed-member-for-GC.patch
hdata-vpd-fix-printing-char-0x00.patch
- Patch queue updated from git://github.com/openSUSE/qemu.git opensuse-4.1
-------------------------------------------------------------------
Fri Aug 9 14:04:52 UTC 2019 - Bruce Rogers <brogers@suse.com>
- Since we build seabios, take advantage of ability to add our own
identifying version info by changing SEABIOS_EXTRAVERSION from
"-prebuilt.qemu.org" to "-rebuilt.suse.com" (or
"-rebuilt.opensuse.org for openSUSE releases)
-------------------------------------------------------------------
Wed Aug 7 02:40:53 UTC 2019 - Liang Yan <lyan@suse.com>

936
qemu.spec

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

40
refresh.sh Normal file
View File

@ -0,0 +1,40 @@
#!/bin/bash
set -e
source ./config.sh
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)"
# 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-skiboot
~/git/qemu-keycodemapdb
)
# 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[@]}
fi
done
./bundle2spec.sh &> /tmp/refresh.log
echo "SUCCESS"
tail -9 /tmp/refresh.log

View File

@ -3,6 +3,8 @@ 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
@ -12,17 +14,16 @@ 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.
[BR: BSC#1011213]
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 1ff78b63bb..b4a3adccb2 100644
index 775c963f9dd55bfa17772afb73f4..6efeb1ef7c38fb71556b762d6bf1 100644
--- a/roms/Makefile
+++ b/roms/Makefile
@@ -49,6 +49,12 @@ SEABIOS_EXTRAVERSION="-prebuilt.qemu.org"
@@ -51,6 +51,12 @@ SEABIOS_EXTRAVERSION="-prebuilt.qemu.org"
#
EDK2_EFIROM = edk2/BaseTools/Source/C/bin/EfiRom
@ -35,7 +36,7 @@ index 1ff78b63bb..b4a3adccb2 100644
default:
@echo "nothing is build by default"
@echo "available build targets:"
@@ -91,7 +97,7 @@ build-seabios-config-%: config.%
@@ -99,7 +105,7 @@ build-seabios-config-%: config.%
.PHONY: sgabios skiboot
sgabios:
@ -44,7 +45,7 @@ index 1ff78b63bb..b4a3adccb2 100644
cp sgabios/sgabios.bin ../pc-bios
@@ -111,11 +117,13 @@ efi-rom-%: build-pxe-roms build-efi-roms $(EDK2_EFIROM)
@@ -119,11 +125,13 @@ efi-rom-%: build-pxe-roms build-efi-roms edk2-basetools
build-pxe-roms:
$(MAKE) -C ipxe/src CONFIG=qemu \
@ -58,7 +59,7 @@ index 1ff78b63bb..b4a3adccb2 100644
CROSS_COMPILE=$(x86_64_cross_prefix) \
$(patsubst %,bin-i386-efi/%.efidrv,$(pxerom_targets)) \
$(patsubst %,bin-x86_64-efi/%.efidrv,$(pxerom_targets))
@@ -137,7 +145,9 @@ $(EDK2_EFIROM):
@@ -145,7 +153,9 @@ edk2-basetools:
EXTRA_LDFLAGS='$(EDK2_BASETOOLS_LDFLAGS)'
slof:

View File

@ -0,0 +1,22 @@
From: Bruce Rogers <brogers@suse.com>
Date: Thu, 20 Jun 2019 18:45:36 -0600
Subject: roms/Makefile.edk2: don't invoke git, since the tarball is complete
Signed-off-by: Bruce Rogers <brogers@suse.com>
---
roms/Makefile.edk2 | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/roms/Makefile.edk2 b/roms/Makefile.edk2
index c2f2ff59d5b1d8b3fa394ed42c8d..98328b883c6578dd9591f069cd2d 100644
--- a/roms/Makefile.edk2
+++ b/roms/Makefile.edk2
@@ -47,7 +47,7 @@ all: $(foreach flashdev,$(flashdevs),../pc-bios/edk2-$(flashdev).fd.bz2) \
.INTERMEDIATE: $(foreach flashdev,$(flashdevs),../pc-bios/edk2-$(flashdev).fd)
submodules:
- cd edk2 && git submodule update --init --force
+ cd edk2
# See notes on the ".NOTPARALLEL" target and the "+" indicator in
# "tests/uefi-test-tools/Makefile".

View File

@ -0,0 +1,30 @@
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 a9fae7ee891bc4cadbe1a3cb3f54..d70bed1729cf0a3ce41ab72df78e 100644
--- a/roms/edk2-funcs.sh
+++ b/roms/edk2-funcs.sh
@@ -113,7 +113,15 @@ qemu_edk2_get_cross_prefix()
# no cross-compiler needed
:
else
- printf '%s-linux-gnu-\n' "$gcc_arch"
+ if [ "$emulation_target" == arm ]; then
+ printf '%s-suse-linux-gnueabi-\n' "$gcc_arch"
+ else
+ if [ "$gcc_arch" == i686 ]; then
+ printf '%s-suse-linux-\n' "i586"
+ else
+ printf '%s-suse-linux-\n' "$gcc_arch"
+ fi
+ fi
fi
}

View File

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

View File

@ -1,11 +0,0 @@
--- a/Makefile 2019-02-20 17:45:15.458665862 +0100
+++ b/Makefile 2019-02-20 17:45:01.578593929 +0100
@@ -13,7 +13,7 @@ export CONFIG_SHELL := sh
export KCONFIG_AUTOHEADER := autoconf.h
export KCONFIG_CONFIG := $(CURDIR)/.config
export LC_ALL := C
-CROSS_PREFIX=
+CROSS_PREFIX=$(CROSS_COMPILE)
ifneq ($(CROSS_PREFIX),)
CC=$(CROSS_PREFIX)gcc
endif

View File

@ -1,4 +1,6 @@
seabios: switch to python3 as needed
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
@ -7,16 +9,17 @@ Include changes proposed by the python3 2to3 tool.
Signed-off-by: Bruce Rogers <brogers@suse.com>
---
Makefile | 2 +-
scripts/acpi_extract.py | 2 +-
scripts/acpi_extract_preprocess.py | 2 +-
scripts/acpi_extract.py | 2 +-
scripts/layoutrom.py | 28 ++++++++++++++--------------
scripts/vgafixup.py | 2 +-
6 files changed, 19 insertions(+), 19 deletions(-)
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(-)
--- a/Makefile
+++ b/Makefile
diff --git a/roms/seabios/Makefile b/roms/seabios/Makefile
index 629185ed9f7153fa08ba56c121ee..bd34cfc2394a9103fec2e951bb67 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
@ -26,24 +29,16 @@ Signed-off-by: Bruce Rogers <brogers@suse.com>
CPP=cpp
IASL:=iasl
LD32BIT_FLAG:=-melf_i386
--- a/scripts/acpi_extract.py
+++ b/scripts/acpi_extract.py
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.
--- a/scripts/acpi_extract_preprocess.py
+++ b/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.
--- a/scripts/acpi_extract.py
+++ b/scripts/acpi_extract.py
@@ -348,7 +348,7 @@ def main():
# Pretty print output
outstrs = ["/* DO NOT EDIT! This is an autogenerated file."
@ -53,8 +48,20 @@ Signed-off-by: Bruce Rogers <brogers@suse.com>
otype = get_value_type(max(output[array]))
outstrs.append("static unsigned %s %s[] = {" % (otype, array))
odata = []
--- a/scripts/layoutrom.py
+++ b/scripts/layoutrom.py
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))
@ -79,7 +86,7 @@ Signed-off-by: Bruce Rogers <brogers@suse.com>
return firstfixed + BUILD_BIOS_ADDR
@@ -288,12 +288,12 @@ def doLayout(sections, config, genreloc)
@@ -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
@ -98,7 +105,7 @@ Signed-off-by: Bruce Rogers <brogers@suse.com>
return li
@@ -312,7 +312,7 @@ def outXRefs(sections, useseg=0, exports
@@ -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
@ -107,7 +114,7 @@ Signed-off-by: Bruce Rogers <brogers@suse.com>
loc = symbol.section.finalloc
if useseg:
loc = symbol.section.finalsegloc
@@ -482,8 +482,8 @@ def checkRuntime(reloc, rsection, data,
@@ -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:
@ -127,8 +134,10 @@ Signed-off-by: Bruce Rogers <brogers@suse.com>
if (symbol.section is not None
and symbol.section.finalloc is not None
and '.data.varlow.' in symbol.section.name
--- a/scripts/vgafixup.py
+++ b/scripts/vgafixup.py
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:])

View File

@ -1,4 +1,6 @@
seabios: use python2 explicitly as needed
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
@ -6,13 +8,15 @@ 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 +-
Makefile | 2 +-
scripts/acpi_extract.py | 2 +-
scripts/acpi_extract_preprocess.py | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
--- a/Makefile
+++ b/Makefile
diff --git a/roms/seabios/Makefile b/roms/seabios/Makefile
index d2d11dbef87521d82c30a7c6f0bf..629185ed9f7153fa08ba56c121ee 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
@ -22,16 +26,20 @@ Signed-off-by: Bruce Rogers <brogers@suse.com>
CPP=cpp
IASL:=iasl
LD32BIT_FLAG:=-melf_i386
--- a/scripts/acpi_extract.py
+++ b/scripts/acpi_extract.py
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.
--- a/scripts/acpi_extract_preprocess.py
+++ b/scripts/acpi_extract_preprocess.py
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

View File

@ -1,4 +1,9 @@
sgabios:Makefile: fix issues of build reproducibility
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
@ -7,11 +12,13 @@ change. (bsc#1011213)
Signed-off-by: Bruce Rogers <brogers@suse.com>
Signed-off-by: Andreas Färber <afaerber@suse.de>
---
Makefile | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
Makefile | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
--- a/Makefile
+++ b/Makefile
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$

View File

@ -1,11 +0,0 @@
--- a/Makefile 2019-02-22 09:46:54.768180093 +0100
+++ b/Makefile 2019-02-22 09:47:05.544250815 +0100
@@ -55,7 +55,7 @@ sgabios.elf: .depend $(OBJS) $(LDSCRIPT)
$(LD) $(LDFLAGS) $(OBJS) -o $@
csum8: csum8.c
- $(CC) -Wall -O2 -o $@ $<
+ $(HOSTCC) -Wall -O2 -o $@ $<
sgabios.o: buildinfo

View File

@ -1,26 +0,0 @@
diff --git a/Makefile.main b/Makefile.main
index 19378789..bbfc552a 100644
--- a/Makefile.main
+++ b/Makefile.main
@@ -75,6 +75,7 @@ CPPFLAGS += -DDEBUG -DCCAN_LIST_DEBUG
endif
CFLAGS := -fno-strict-aliasing -pie -fpie -fno-pic -mbig-endian -m64
+CFLAGS += -Wno-address-of-packed-member
CFLAGS += -mcpu=power7
CFLAGS += -Wl,--oformat,elf64-powerpc
CFLAGS += $(call try-cflag,$(CC),-ffixed-r13)
diff --git a/hdata/vpd.c b/hdata/vpd.c
index 129b5062..ce17c1dc 100644
--- a/hdata/vpd.c
+++ b/hdata/vpd.c
@@ -388,8 +388,7 @@ static void vpd_vini_parse(struct dt_node *node,
} else {
dt_add_property_string(node, "description", "Unknown");
prlog(PR_WARNING,
- "VPD: CCIN desc not available for: %s\n",
- (char *)kw);
+ "VPD: CCIN desc not available for: NULL\n");
}
}
}

View File

@ -1,36 +0,0 @@
From 126c04acbabd7ad32c2b018fe10dfac2a3bc1210 Mon Sep 17 00:00:00 2001
From: Samuel Thibault <samuel.thibault@ens-lyon.org>
Date: Sun, 28 Jul 2019 19:11:24 +0200
Subject: [PATCH] Fix heap overflow in ip_reass on big packet input
When the first fragment does not fit in the preallocated buffer, q will
already be pointing to the ext buffer, so we mustn't try to update it.
Signed-off-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
(cherry picked from commit 126c04acbabd7ad32c2b018fe10dfac2a3bc1210)
[LY: CVE-2019-14378 BSC#1143794]
Signed-off-by: Liang Yan <lyan@suse.com>
---
src/ip_input.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
--- a/src/ip_input.c
+++ b/src/ip_input.c
@@ -331,6 +331,8 @@ insert:
q = fp->frag_link.next;
m = dtom(slirp, q);
+ int was_ext = m->m_flags & M_EXT;
+
q = (struct ipasfrag *) q->ipf_next;
while (q != (struct ipasfrag*)&fp->frag_link) {
struct mbuf *t = dtom(slirp, q);
@@ -353,7 +355,7 @@ insert:
* the old buffer (in the mbuf), so we must point ip
* into the new buffer.
*/
- if (m->m_flags & M_EXT) {
+ if (!was_ext && m->m_flags & M_EXT) {
int delta = (char *)q - m->m_dat;
q = (struct ipasfrag *)(m->m_ext + delta);
}

View File

@ -1,7 +1,8 @@
From 85cf819ab57556851df13a0cd74fff495feceb3c Mon Sep 17 00:00:00 2001
From: Bruce Rogers <brogers@suse.com>
Date: Mon, 24 Jul 2017 10:44:24 -0600
Subject: [PATCH] stub out the SAN req's in int13
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
@ -12,10 +13,10 @@ Signed-off-by: Bruce Rogers <brogers@suse.com>
src/arch/x86/interface/pcbios/int13.c | 21 +++++++++++++++++++++
1 file changed, 21 insertions(+)
diff --git a/src/arch/x86/interface/pcbios/int13.c b/src/arch/x86/interface/pcbios/int13.c
index ca789a0d..40c61419 100644
--- a/src/arch/x86/interface/pcbios/int13.c
+++ b/src/arch/x86/interface/pcbios/int13.c
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 );
@ -103,6 +104,3 @@ index ca789a0d..40c61419 100644
PROVIDE_SANBOOT ( pcbios, san_boot, int13_boot );
PROVIDE_SANBOOT ( pcbios, san_describe, int13_describe );
+#pragma GCC diagnostic pop
--
2.16.3

View File

@ -230,16 +230,9 @@ Deprecated, Superseded, Modified and Dropped Features
host_net_add
host_net_remove
- These previously unsupported QMP command is 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)
- This previously unsupported QMP command is now supported under a new name:
x-blockdev-create (use blockdev-create instead)
- This previously unsupported QMP command 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
@ -479,9 +472,6 @@ QEMU Command-Line and Monitor Syntax and Support
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_passwd
block_resize
@ -551,7 +541,6 @@ QEMU Command-Line and Monitor Syntax and Support
query-cpu-model-expansion
query-cpus
query-cpus-fast
query-current-machine
query-display-options
query-dump
query-dump-guest-memory-capability
@ -810,13 +799,16 @@ QEMU Command-Line and Monitor Syntax and Support
query-colo-status
query-sev
query-sev-launch-measure
x-block-dirty-bitmap-disable
x-block-dirty-bitmap-enable
x-block-dirty-bitmap-merge
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-exit-preconfig
x-nbd-server-add-bitmap
xen-colo-do-checkpoint
xen-load-devices-state
xen-save-devices-state

View File

@ -232,16 +232,9 @@ Deprecated, Superseded, Modified and Dropped Features
host_net_add
host_net_remove
- These previously unsupported QMP command is 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)
- This previously unsupported QMP command is now supported under a new name:
x-blockdev-create (use blockdev-create instead)
- This previously unsupported QMP command 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
@ -474,9 +467,6 @@ QEMU Command-Line and Monitor Syntax and Support
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_passwd
block_resize
@ -544,7 +534,6 @@ QEMU Command-Line and Monitor Syntax and Support
query-cpu-model-expansion
query-cpus
query-cpus-fast
query-current-machine
query-display-options
query-dump
query-dump-guest-memory-capability
@ -751,13 +740,16 @@ QEMU Command-Line and Monitor Syntax and Support
query-colo-status
query-sev
query-sev-launch-measure
x-block-dirty-bitmap-disable
x-block-dirty-bitmap-enable
x-block-dirty-bitmap-merge
x-blockdev-change
x-blockdev-insert-medium
x-blockdev-remove-medium
x-blockdev-reopen
x-colo-lost-heartbeat
x-exit-preconfig
x-debug-block-dirty-bitmap-sha256
x-nbd-server-add-bitmap
xen-colo-do-checkpoint
xen-load-devices-state
xen-save-devices-state

View File

@ -227,16 +227,9 @@ Deprecated, Superseded, Modified and Dropped Features
usb_add
usb_del
- These previously unsupported QMP command is 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)
- This previously unsupported QMP command is now supported under a new name:
x-blockdev-create (use blockdev-create instead)
- This previously unsupported QMP command 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
@ -470,9 +463,6 @@ QEMU Command-Line and Monitor Syntax and Support
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_passwd
block_resize
@ -542,7 +532,6 @@ QEMU Command-Line and Monitor Syntax and Support
query-cpu-model-expansion
query-cpus
query-cpus-fast
query-current-machine
query-display-options
query-dump
query-dump-guest-memory-capability
@ -766,13 +755,16 @@ QEMU Command-Line and Monitor Syntax and Support
query-tpm
query-tpm-models
query-tpm-types
x-block-dirty-bitmap-disable
x-block-dirty-bitmap-enable
x-block-dirty-bitmap-merge
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-exit-preconfig
x-nbd-server-add-bitmap
xen-colo-do-checkpoint
xen-load-devices-state
xen-save-devices-state

Some files were not shown because too many files have changed in this diff Show More