QEMU update to version 8.2.0-28:
- hw/misc/mos6522: Fix bad class definition of the MOS6522 device - target/i386: Fix minor typo in NO_NESTED_DATA_BP feature bit - cpu: ensure we don't call start_exclusive from cpu_exec - Avoid unaligned fetch in ladr_match() - audio/audio.c: remove trailing newline in error_setg - acpi/tests/avocado/bits: wait for 200 seconds for SHUTDOWN event from bits VM - linux-user: Tolerate CONFIG_LSM_MMAP_MIN_ADDR - accel/tcg: Fix user-only probe_access_internal plugin - linux-user: Honor elf alignment when placing images - Reserve address for MSI mapping in the CVM scenario. Signed-off-by: Jiabo Feng <fengjiabo1@huawei.com> (cherry picked from commit 3ab56c27fe6b593be9a24f27b52b2730efa05304)
This commit is contained in:
parent
02a1399a3b
commit
05fcc90d20
37
Avoid-unaligned-fetch-in-ladr_match.patch
Normal file
37
Avoid-unaligned-fetch-in-ladr_match.patch
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
From d2ee29691b6d6b48ba8da179e97572f5a6684a9d Mon Sep 17 00:00:00 2001
|
||||||
|
From: gubin <gubin_yewu@cmss.chinamobile.com>
|
||||||
|
Date: Mon, 18 Nov 2024 14:47:25 +0800
|
||||||
|
Subject: [PATCH] Avoid unaligned fetch in ladr_match()
|
||||||
|
|
||||||
|
cherry-pick from 6a5287ce80470bb8df95901d73ee779a64e70c3a
|
||||||
|
|
||||||
|
There is no guarantee that the PCNetState is allocated such that
|
||||||
|
csr[8] is allocated on an 8-byte boundary. Since not all hosts are
|
||||||
|
capable of unaligned fetches the 16-bit elements need to be fetched
|
||||||
|
individually to avoid a potential fault. Closes issue #2143
|
||||||
|
|
||||||
|
Resolves: https://gitlab.com/qemu-project/qemu/-/issues/2143
|
||||||
|
Signed-off-by: Nick Briggs <nicholas.h.briggs@gmail.com>
|
||||||
|
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
|
||||||
|
Signed-off-by: Jason Wang <jasowang@redhat.com>
|
||||||
|
Signed-off-by: gubin <gubin_yewu@cmss.chinamobile.com>
|
||||||
|
---
|
||||||
|
hw/net/pcnet.c | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/hw/net/pcnet.c b/hw/net/pcnet.c
|
||||||
|
index a7e123e60d..7d574f487b 100644
|
||||||
|
--- a/hw/net/pcnet.c
|
||||||
|
+++ b/hw/net/pcnet.c
|
||||||
|
@@ -632,7 +632,7 @@ static inline int ladr_match(PCNetState *s, const uint8_t *buf, int size)
|
||||||
|
{
|
||||||
|
struct qemu_ether_header *hdr = (void *)buf;
|
||||||
|
if ((*(hdr->ether_dhost)&0x01) &&
|
||||||
|
- ((uint64_t *)&s->csr[8])[0] != 0LL) {
|
||||||
|
+ (s->csr[8] | s->csr[9] | s->csr[10] | s->csr[11]) != 0) {
|
||||||
|
uint8_t ladr[8] = {
|
||||||
|
s->csr[8] & 0xff, s->csr[8] >> 8,
|
||||||
|
s->csr[9] & 0xff, s->csr[9] >> 8,
|
||||||
|
--
|
||||||
|
2.41.0.windows.1
|
||||||
|
|
||||||
41
Reserve-address-for-MSI-mapping-in-the-CVM-scenario.patch
Normal file
41
Reserve-address-for-MSI-mapping-in-the-CVM-scenario.patch
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
From e698238a5fa6e78fdffc8269d59884df69da3434 Mon Sep 17 00:00:00 2001
|
||||||
|
From: chenzheng <chenzheng71@huawei.com>
|
||||||
|
Date: Thu, 5 Dec 2024 11:06:57 +0000
|
||||||
|
Subject: [PATCH] Reserve address for MSI mapping in the CVM scenario.
|
||||||
|
|
||||||
|
Signed-off-by: yangxiangkai@huawei.com
|
||||||
|
---
|
||||||
|
hw/arm/virt.c | 3 ++-
|
||||||
|
include/hw/arm/virt.h | 1 +
|
||||||
|
2 files changed, 3 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/hw/arm/virt.c b/hw/arm/virt.c
|
||||||
|
index a9efcec85e..8823f2ed1c 100644
|
||||||
|
--- a/hw/arm/virt.c
|
||||||
|
+++ b/hw/arm/virt.c
|
||||||
|
@@ -162,8 +162,9 @@ static const MemMapEntry base_memmap[] = {
|
||||||
|
[VIRT_PVTIME] = { 0x090a0000, 0x00010000 },
|
||||||
|
[VIRT_SECURE_GPIO] = { 0x090b0000, 0x00001000 },
|
||||||
|
[VIRT_CPUHP_ACPI] = { 0x090c0000, ACPI_CPU_HOTPLUG_REG_LEN},
|
||||||
|
- /* In the virtCCA scenario, this space is used for MSI interrupt mapping */
|
||||||
|
[VIRT_MMIO] = { 0x0a000000, 0x00000200 },
|
||||||
|
+ /* In the virtCCA scenario, this space is used for MSI interrupt mapping */
|
||||||
|
+ [VIRT_CVM_MSI] = { 0x0a001000, 0x00fff000 },
|
||||||
|
[VIRT_CPUFREQ] = { 0x0b000000, 0x00010000 },
|
||||||
|
/* ...repeating for a total of NUM_VIRTIO_TRANSPORTS, each of that size */
|
||||||
|
[VIRT_PLATFORM_BUS] = { 0x0c000000, 0x02000000 },
|
||||||
|
diff --git a/include/hw/arm/virt.h b/include/hw/arm/virt.h
|
||||||
|
index 4b7dc61c24..345b2d5594 100644
|
||||||
|
--- a/include/hw/arm/virt.h
|
||||||
|
+++ b/include/hw/arm/virt.h
|
||||||
|
@@ -121,6 +121,7 @@ enum {
|
||||||
|
VIRT_UART,
|
||||||
|
VIRT_CPUFREQ,
|
||||||
|
VIRT_MMIO,
|
||||||
|
+ VIRT_CVM_MSI,
|
||||||
|
VIRT_RTC,
|
||||||
|
VIRT_FW_CFG,
|
||||||
|
VIRT_PCIE,
|
||||||
|
--
|
||||||
|
2.41.0.windows.1
|
||||||
|
|
||||||
42
accel-tcg-Fix-user-only-probe_access_internal-plugin.patch
Normal file
42
accel-tcg-Fix-user-only-probe_access_internal-plugin.patch
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
From b611bd7f3f4525c8373f2e504594414e1ed5b058 Mon Sep 17 00:00:00 2001
|
||||||
|
From: guping <guping_yewu@cmss.chinamobile.com>
|
||||||
|
Date: Mon, 18 Nov 2024 02:50:17 +0000
|
||||||
|
Subject: [PATCH] accel/tcg: Fix user-only probe_access_internal plugin check
|
||||||
|
cherry-pick from 2a339fee450638b512c5122281cb5ab49331cfb8
|
||||||
|
MIME-Version: 1.0
|
||||||
|
Content-Type: text/plain; charset=UTF-8
|
||||||
|
Content-Transfer-Encoding: 8bit
|
||||||
|
|
||||||
|
The acc_flag check for write should have been against PAGE_WRITE_ORG,
|
||||||
|
not PAGE_WRITE. But it is better to combine two acc_flag checks
|
||||||
|
to a single check against access_type. This matches the system code
|
||||||
|
in cputlb.c.
|
||||||
|
|
||||||
|
Cc: qemu-stable@nongnu.org
|
||||||
|
Resolves: #2647
|
||||||
|
|
||||||
|
Signed-off-by: default avatarRichard Henderson <richard.henderson@linaro.org>
|
||||||
|
Message-Id: 20241111145002.144995-1-richard.henderson@linaro.org
|
||||||
|
Reviewed-by: default avatarAlex Bennée <alex.bennee@linaro.org>
|
||||||
|
|
||||||
|
Signed-off-by: guping <guping_yewu@cmss.chinamobile.com>
|
||||||
|
---
|
||||||
|
accel/tcg/user-exec.c | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/accel/tcg/user-exec.c b/accel/tcg/user-exec.c
|
||||||
|
index 68b252cb8e..e87848a5e2 100644
|
||||||
|
--- a/accel/tcg/user-exec.c
|
||||||
|
+++ b/accel/tcg/user-exec.c
|
||||||
|
@@ -794,7 +794,7 @@ static int probe_access_internal(CPUArchState *env, vaddr addr,
|
||||||
|
if (guest_addr_valid_untagged(addr)) {
|
||||||
|
int page_flags = page_get_flags(addr);
|
||||||
|
if (page_flags & acc_flag) {
|
||||||
|
- if ((acc_flag == PAGE_READ || acc_flag == PAGE_WRITE)
|
||||||
|
+ if (access_type != MMU_INST_FETCH
|
||||||
|
&& cpu_plugin_mem_cbs_enabled(env_cpu(env))) {
|
||||||
|
return TLB_MMIO;
|
||||||
|
}
|
||||||
|
--
|
||||||
|
2.41.0.windows.1
|
||||||
|
|
||||||
66
acpi-tests-avocado-bits-wait-for-200-seconds-for-SHU.patch
Normal file
66
acpi-tests-avocado-bits-wait-for-200-seconds-for-SHU.patch
Normal file
@ -0,0 +1,66 @@
|
|||||||
|
From 1f6dde2350209e937a5676c6775d1500136caea2 Mon Sep 17 00:00:00 2001
|
||||||
|
From: gubin <gubin_yewu@cmss.chinamobile.com>
|
||||||
|
Date: Mon, 18 Nov 2024 13:48:37 +0800
|
||||||
|
Subject: [PATCH] acpi/tests/avocado/bits: wait for 200 seconds for SHUTDOWN
|
||||||
|
event from bits VM
|
||||||
|
MIME-Version: 1.0
|
||||||
|
Content-Type: text/plain; charset=UTF-8
|
||||||
|
Content-Transfer-Encoding: 8bit
|
||||||
|
|
||||||
|
cheery-pick from 7ef4c41e91d59d72a3b8bc022a6cb3e81787a50a
|
||||||
|
|
||||||
|
By default, the timeout to receive any specified event from the QEMU VM is 60
|
||||||
|
seconds set by the python avocado test framework. Please see event_wait() and
|
||||||
|
events_wait() in python/qemu/machine/machine.py. If the matching event is not
|
||||||
|
triggered within that interval, an asyncio.TimeoutError is generated. Since the
|
||||||
|
timeout for the bits avocado test is 200 secs, we need to make event_wait()
|
||||||
|
timeout of the same value as well so that an early timeout is not triggered by
|
||||||
|
the avocado framework.
|
||||||
|
|
||||||
|
CC: peter.maydell@linaro.org
|
||||||
|
Resolves: https://gitlab.com/qemu-project/qemu/-/issues/2077
|
||||||
|
Signed-off-by: Ani Sinha <anisinha@redhat.com>
|
||||||
|
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
|
||||||
|
Message-id: 20240117042556.3360190-1-anisinha@redhat.com
|
||||||
|
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
|
||||||
|
Signed-off-by: gubin <gubin_yewu@cmss.chinamobile.com>
|
||||||
|
---
|
||||||
|
tests/avocado/acpi-bits.py | 9 ++++++---
|
||||||
|
1 file changed, 6 insertions(+), 3 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/tests/avocado/acpi-bits.py b/tests/avocado/acpi-bits.py
|
||||||
|
index 68b9e98d4e..efe4f52ee0 100644
|
||||||
|
--- a/tests/avocado/acpi-bits.py
|
||||||
|
+++ b/tests/avocado/acpi-bits.py
|
||||||
|
@@ -54,6 +54,8 @@
|
||||||
|
deps = ["xorriso", "mformat"] # dependent tools needed in the test setup/box.
|
||||||
|
supported_platforms = ['x86_64'] # supported test platforms.
|
||||||
|
|
||||||
|
+# default timeout of 120 secs is sometimes not enough for bits test.
|
||||||
|
+BITS_TIMEOUT = 200
|
||||||
|
|
||||||
|
def which(tool):
|
||||||
|
""" looks up the full path for @tool, returns None if not found
|
||||||
|
@@ -133,7 +135,7 @@ class AcpiBitsTest(QemuBaseTest): #pylint: disable=too-many-instance-attributes
|
||||||
|
|
||||||
|
"""
|
||||||
|
# in slower systems the test can take as long as 3 minutes to complete.
|
||||||
|
- timeout = 200
|
||||||
|
+ timeout = BITS_TIMEOUT
|
||||||
|
|
||||||
|
def __init__(self, *args, **kwargs):
|
||||||
|
super().__init__(*args, **kwargs)
|
||||||
|
@@ -400,7 +402,8 @@ def test_acpi_smbios_bits(self):
|
||||||
|
|
||||||
|
# biosbits has been configured to run all the specified test suites
|
||||||
|
# in batch mode and then automatically initiate a vm shutdown.
|
||||||
|
- # Rely on avocado's unit test timeout.
|
||||||
|
- self._vm.event_wait('SHUTDOWN')
|
||||||
|
+ # Set timeout to BITS_TIMEOUT for SHUTDOWN event from bits VM at par
|
||||||
|
+ # with the avocado test timeout.
|
||||||
|
+ self._vm.event_wait('SHUTDOWN', timeout=BITS_TIMEOUT)
|
||||||
|
self._vm.wait(timeout=None)
|
||||||
|
self.parse_log()
|
||||||
|
--
|
||||||
|
2.41.0.windows.1
|
||||||
|
|
||||||
36
audio-audio.c-remove-trailing-newline-in-error_setg.patch
Normal file
36
audio-audio.c-remove-trailing-newline-in-error_setg.patch
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
From b60350d9f495f568aa1380f02a13b51e9619a7de Mon Sep 17 00:00:00 2001
|
||||||
|
From: gubin <gubin_yewu@cmss.chinamobile.com>
|
||||||
|
Date: Mon, 18 Nov 2024 14:17:52 +0800
|
||||||
|
Subject: [PATCH] audio/audio.c: remove trailing newline in error_setg
|
||||||
|
MIME-Version: 1.0
|
||||||
|
Content-Type: text/plain; charset=UTF-8
|
||||||
|
Content-Transfer-Encoding: 8bit
|
||||||
|
|
||||||
|
cherry-pick from 09a36158c283f7448d1b00fdbb6634f05d27f922
|
||||||
|
|
||||||
|
error_setg() appends newline to the formatted message.
|
||||||
|
Fixes: cb94ff5f80c5 ("audio: propagate Error * out of audio_init")
|
||||||
|
|
||||||
|
Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>
|
||||||
|
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
|
||||||
|
Signed-off-by: gubin <gubin_yewu@cmss.chinamobile.com>
|
||||||
|
---
|
||||||
|
audio/audio.c | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/audio/audio.c b/audio/audio.c
|
||||||
|
index 8d1e4ad922..7ac74f9e16 100644
|
||||||
|
--- a/audio/audio.c
|
||||||
|
+++ b/audio/audio.c
|
||||||
|
@@ -1744,7 +1744,7 @@ static AudioState *audio_init(Audiodev *dev, Error **errp)
|
||||||
|
if (driver) {
|
||||||
|
done = !audio_driver_init(s, driver, dev, errp);
|
||||||
|
} else {
|
||||||
|
- error_setg(errp, "Unknown audio driver `%s'\n", drvname);
|
||||||
|
+ error_setg(errp, "Unknown audio driver `%s'", drvname);
|
||||||
|
}
|
||||||
|
if (!done) {
|
||||||
|
goto out;
|
||||||
|
--
|
||||||
|
2.41.0.windows.1
|
||||||
|
|
||||||
37
cpu-ensure-we-don-t-call-start_exclusive-from-cpu_ex.patch
Normal file
37
cpu-ensure-we-don-t-call-start_exclusive-from-cpu_ex.patch
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
From c5b349f9ff0792cce72cdd1ade2521c568058a25 Mon Sep 17 00:00:00 2001
|
||||||
|
From: qihao_yewu <qihao_yewu@cmss.chinamobile.com>
|
||||||
|
Date: Mon, 18 Nov 2024 14:20:56 -0500
|
||||||
|
Subject: [PATCH] cpu: ensure we don't call start_exclusive from cpu_exec
|
||||||
|
MIME-Version: 1.0
|
||||||
|
Content-Type: text/plain; charset=UTF-8
|
||||||
|
Content-Transfer-Encoding: 8bit
|
||||||
|
|
||||||
|
cheery-pick from 779f30a01af8566780cefc8639505b758950afb3
|
||||||
|
|
||||||
|
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
|
||||||
|
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
|
||||||
|
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
|
||||||
|
Message-ID: <20241025175857.2554252-3-pierrick.bouvier@linaro.org>
|
||||||
|
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
|
||||||
|
Signed-off-by: qihao_yewu <qihao_yewu@cmss.chinamobile.com>
|
||||||
|
---
|
||||||
|
cpu-common.c | 3 +++
|
||||||
|
1 file changed, 3 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/cpu-common.c b/cpu-common.c
|
||||||
|
index 54e63b3f77..a949ad7ca3 100644
|
||||||
|
--- a/cpu-common.c
|
||||||
|
+++ b/cpu-common.c
|
||||||
|
@@ -234,6 +234,9 @@ void start_exclusive(void)
|
||||||
|
CPUState *other_cpu;
|
||||||
|
int running_cpus;
|
||||||
|
|
||||||
|
+ /* Ensure we are not running, or start_exclusive will be blocked. */
|
||||||
|
+ g_assert(!current_cpu->running);
|
||||||
|
+
|
||||||
|
if (current_cpu->exclusive_context_count) {
|
||||||
|
current_cpu->exclusive_context_count++;
|
||||||
|
return;
|
||||||
|
--
|
||||||
|
2.41.0.windows.1
|
||||||
|
|
||||||
49
hw-misc-mos6522-Fix-bad-class-definition-of-the-MOS6.patch
Normal file
49
hw-misc-mos6522-Fix-bad-class-definition-of-the-MOS6.patch
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
From f0be5a2c99d2f893a27839cd5eb5fa74f3ff5564 Mon Sep 17 00:00:00 2001
|
||||||
|
From: qihao_yewu <qihao_yewu@cmss.chinamobile.com>
|
||||||
|
Date: Mon, 18 Nov 2024 21:03:55 -0500
|
||||||
|
Subject: [PATCH] hw/misc/mos6522: Fix bad class definition of the MOS6522
|
||||||
|
device
|
||||||
|
MIME-Version: 1.0
|
||||||
|
Content-Type: text/plain; charset=UTF-8
|
||||||
|
Content-Transfer-Encoding: 8bit
|
||||||
|
|
||||||
|
cheery-pick from c3d7c18b0d616cf7fb3c1f325503e1462307209d
|
||||||
|
|
||||||
|
When compiling QEMU with --enable-cfi, the "q800" m68k machine
|
||||||
|
currently crashes very early, when the q800_machine_init() function
|
||||||
|
tries to wire the interrupts of the "via1" device.
|
||||||
|
This happens because TYPE_MOS6522_Q800_VIA1 is supposed to be a
|
||||||
|
proper SysBus device, but its parent (TYPE_MOS6522) has a mistake
|
||||||
|
in its class definition where it is only derived from DeviceClass,
|
||||||
|
and not from SysBusDeviceClass, so we end up in funny memory access
|
||||||
|
issues here. Using the right class hierarchy for the MOS6522 device
|
||||||
|
fixes the problem.
|
||||||
|
|
||||||
|
Resolves: https://gitlab.com/qemu-project/qemu/-/issues/2675
|
||||||
|
Signed-off-by: Thomas Huth <thuth@redhat.com>
|
||||||
|
Fixes: 51f233ec92 ("misc: introduce new mos6522 VIA device")
|
||||||
|
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
|
||||||
|
Reviewed-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
|
||||||
|
Message-ID: <20241114104653.963812-1-thuth@redhat.com>
|
||||||
|
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
|
||||||
|
Signed-off-by: qihao_yewu <qihao_yewu@cmss.chinamobile.com>
|
||||||
|
---
|
||||||
|
include/hw/misc/mos6522.h | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/include/hw/misc/mos6522.h b/include/hw/misc/mos6522.h
|
||||||
|
index fba45668ab..920871a598 100644
|
||||||
|
--- a/include/hw/misc/mos6522.h
|
||||||
|
+++ b/include/hw/misc/mos6522.h
|
||||||
|
@@ -154,7 +154,7 @@ struct MOS6522State {
|
||||||
|
OBJECT_DECLARE_TYPE(MOS6522State, MOS6522DeviceClass, MOS6522)
|
||||||
|
|
||||||
|
struct MOS6522DeviceClass {
|
||||||
|
- DeviceClass parent_class;
|
||||||
|
+ SysBusDeviceClass parent_class;
|
||||||
|
|
||||||
|
ResettablePhases parent_phases;
|
||||||
|
void (*portB_write)(MOS6522State *dev);
|
||||||
|
--
|
||||||
|
2.41.0.windows.1
|
||||||
|
|
||||||
105
linux-user-Honor-elf-alignment-when-placing-images.patch
Normal file
105
linux-user-Honor-elf-alignment-when-placing-images.patch
Normal file
@ -0,0 +1,105 @@
|
|||||||
|
From ad5b05def5521a9cbbdd750c915fccaba391f53b Mon Sep 17 00:00:00 2001
|
||||||
|
From: Richard Henderson <richard.henderson@linaro.org>
|
||||||
|
Date: Tue, 12 Nov 2024 11:32:01 -0800
|
||||||
|
Subject: [PATCH] linux-user: Honor elf alignment when placing images
|
||||||
|
|
||||||
|
Most binaries don't actually depend on more than page alignment,
|
||||||
|
but any binary can request it. Not honoring this was a bug.
|
||||||
|
|
||||||
|
This became obvious when gdb reported
|
||||||
|
|
||||||
|
Failed to read a valid object file image from memory
|
||||||
|
|
||||||
|
when examining some vdso which are marked as needing more
|
||||||
|
than page alignment.
|
||||||
|
|
||||||
|
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
|
||||||
|
Signed-off-by: Zhongrui Tang <tangzhongrui_yewu@cmss.chinamobile.com>
|
||||||
|
---
|
||||||
|
linux-user/elfload.c | 35 ++++++++++++++++++++++++++++-------
|
||||||
|
1 file changed, 28 insertions(+), 7 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/linux-user/elfload.c b/linux-user/elfload.c
|
||||||
|
index cf9e74468b..2a82468079 100644
|
||||||
|
--- a/linux-user/elfload.c
|
||||||
|
+++ b/linux-user/elfload.c
|
||||||
|
@@ -3263,7 +3263,8 @@ static void load_elf_image(const char *image_name, const ImageSource *src,
|
||||||
|
char **pinterp_name)
|
||||||
|
{
|
||||||
|
g_autofree struct elf_phdr *phdr = NULL;
|
||||||
|
- abi_ulong load_addr, load_bias, loaddr, hiaddr, error;
|
||||||
|
+ abi_ulong load_addr, load_bias, loaddr, hiaddr, error, align;
|
||||||
|
+ size_t reserve_size, align_size;
|
||||||
|
int i, prot_exec;
|
||||||
|
Error *err = NULL;
|
||||||
|
|
||||||
|
@@ -3347,6 +3348,9 @@ static void load_elf_image(const char *image_name, const ImageSource *src,
|
||||||
|
|
||||||
|
load_addr = loaddr;
|
||||||
|
|
||||||
|
+ align = pow2ceil(info->alignment);
|
||||||
|
+ info->alignment = align;
|
||||||
|
+
|
||||||
|
if (pinterp_name != NULL) {
|
||||||
|
if (ehdr->e_type == ET_EXEC) {
|
||||||
|
/*
|
||||||
|
@@ -3355,8 +3359,6 @@ static void load_elf_image(const char *image_name, const ImageSource *src,
|
||||||
|
*/
|
||||||
|
probe_guest_base(image_name, loaddr, hiaddr);
|
||||||
|
} else {
|
||||||
|
- abi_ulong align;
|
||||||
|
-
|
||||||
|
/*
|
||||||
|
* The binary is dynamic, but we still need to
|
||||||
|
* select guest_base. In this case we pass a size.
|
||||||
|
@@ -3374,10 +3376,7 @@ static void load_elf_image(const char *image_name, const ImageSource *src,
|
||||||
|
* Since we do not have complete control over the guest
|
||||||
|
* address space, we prefer the kernel to choose some address
|
||||||
|
* rather than force the use of LOAD_ADDR via MAP_FIXED.
|
||||||
|
- * But without MAP_FIXED we cannot guarantee alignment,
|
||||||
|
- * only suggest it.
|
||||||
|
*/
|
||||||
|
- align = pow2ceil(info->alignment);
|
||||||
|
if (align) {
|
||||||
|
load_addr &= -align;
|
||||||
|
}
|
||||||
|
@@ -3401,13 +3400,35 @@ static void load_elf_image(const char *image_name, const ImageSource *src,
|
||||||
|
* In both cases, we will overwrite pages in this range with mappings
|
||||||
|
* from the executable.
|
||||||
|
*/
|
||||||
|
- load_addr = target_mmap(load_addr, (size_t)hiaddr - loaddr + 1, PROT_NONE,
|
||||||
|
+ reserve_size = (size_t)hiaddr - loaddr + 1;
|
||||||
|
+ align_size = reserve_size;
|
||||||
|
+
|
||||||
|
+ if (ehdr->e_type != ET_EXEC && align > qemu_real_host_page_size()) {
|
||||||
|
+ align_size += align - 1;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ load_addr = target_mmap(load_addr, align_size, PROT_NONE,
|
||||||
|
MAP_PRIVATE | MAP_ANON | MAP_NORESERVE |
|
||||||
|
(ehdr->e_type == ET_EXEC ? MAP_FIXED_NOREPLACE : 0),
|
||||||
|
-1, 0);
|
||||||
|
if (load_addr == -1) {
|
||||||
|
goto exit_mmap;
|
||||||
|
}
|
||||||
|
+
|
||||||
|
+ if (align_size != reserve_size) {
|
||||||
|
+ abi_ulong align_addr = ROUND_UP(load_addr, align);
|
||||||
|
+ abi_ulong align_end = align_addr + reserve_size;
|
||||||
|
+ abi_ulong load_end = load_addr + align_size;
|
||||||
|
+
|
||||||
|
+ if (align_addr != load_addr) {
|
||||||
|
+ target_munmap(load_addr, align_addr - load_addr);
|
||||||
|
+ }
|
||||||
|
+ if (align_end != load_end) {
|
||||||
|
+ target_munmap(align_end, load_end - align_end);
|
||||||
|
+ }
|
||||||
|
+ load_addr = align_addr;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
load_bias = load_addr - loaddr;
|
||||||
|
|
||||||
|
if (elf_is_fdpic(ehdr)) {
|
||||||
|
--
|
||||||
|
2.41.0.windows.1
|
||||||
|
|
||||||
52
linux-user-Tolerate-CONFIG_LSM_MMAP_MIN_ADDR.patch
Normal file
52
linux-user-Tolerate-CONFIG_LSM_MMAP_MIN_ADDR.patch
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
From 6d4db685ae8b4cbffab80c61c01ef56c57b67eb4 Mon Sep 17 00:00:00 2001
|
||||||
|
From: guping <guping_yewu@cmss.chinamobile.com>
|
||||||
|
Date: Mon, 18 Nov 2024 03:09:59 +0000
|
||||||
|
Subject: [PATCH] linux-user: Tolerate CONFIG_LSM_MMAP_MIN_ADDR cherry-pick
|
||||||
|
from fb7f3572b111ffb6c2dd2c7f6c5b4dc57dd8a3f5
|
||||||
|
|
||||||
|
Running qemu-i386 on a system running with SELinux in enforcing mode
|
||||||
|
(more precisely: s390x trixie container on Fedora 40) fails with:
|
||||||
|
|
||||||
|
qemu-i386: tests/tcg/i386-linux-user/sigreturn-sigmask: Unable to find a guest_base to satisfy all guest address mapping requirements
|
||||||
|
00000000-ffffffff
|
||||||
|
|
||||||
|
The reason is that main() determines mmap_min_addr from
|
||||||
|
/proc/sys/vm/mmap_min_addr, but SELinux additionally defines
|
||||||
|
CONFIG_LSM_MMAP_MIN_ADDR, which is normally larger: 32K or 64K, but,
|
||||||
|
in general, can be anything. There is no portable way to query its
|
||||||
|
value: /boot/config, /proc/config and /proc/config.gz are distro- and
|
||||||
|
environment-specific.
|
||||||
|
|
||||||
|
Once the identity map fails, the magnitude of guest_base does not
|
||||||
|
matter, so fix by starting the search from 1M or 1G.
|
||||||
|
|
||||||
|
Cc: qemu-stable@nongnu.org
|
||||||
|
Resolves: #2598
|
||||||
|
|
||||||
|
|
||||||
|
Suggested-by: default avatarRichard Henderson <richard.henderson@linaro.org>
|
||||||
|
Signed-off-by: default avatarIlya Leoshkevich <iii@linux.ibm.com>
|
||||||
|
Message-ID: <20241023002558.34589-1-iii@linux.ibm.com>
|
||||||
|
Signed-off-by: default avatarRichard Henderson <richard.henderson@linaro.org>
|
||||||
|
|
||||||
|
Signed-off-by: guping <guping_yewu@cmss.chinamobile.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 cf9e74468b..0df64c6442 100644
|
||||||
|
--- a/linux-user/elfload.c
|
||||||
|
+++ b/linux-user/elfload.c
|
||||||
|
@@ -2980,7 +2980,7 @@ static uintptr_t pgb_try_itree(const PGBAddrs *ga, uintptr_t base,
|
||||||
|
static uintptr_t pgb_find_itree(const PGBAddrs *ga, IntervalTreeRoot *root,
|
||||||
|
uintptr_t align, uintptr_t brk)
|
||||||
|
{
|
||||||
|
- uintptr_t last = mmap_min_addr;
|
||||||
|
+ uintptr_t last = sizeof(uintptr_t) == 4 ? MiB : GiB;
|
||||||
|
uintptr_t base, skip;
|
||||||
|
|
||||||
|
while (true) {
|
||||||
|
--
|
||||||
|
2.41.0.windows.1
|
||||||
|
|
||||||
24
qemu.spec
24
qemu.spec
@ -3,7 +3,7 @@
|
|||||||
|
|
||||||
Name: qemu
|
Name: qemu
|
||||||
Version: 8.2.0
|
Version: 8.2.0
|
||||||
Release: 27
|
Release: 28
|
||||||
Epoch: 11
|
Epoch: 11
|
||||||
Summary: QEMU is a generic and open source machine emulator and virtualizer
|
Summary: QEMU is a generic and open source machine emulator and virtualizer
|
||||||
License: GPLv2 and BSD and MIT and CC-BY-SA-4.0
|
License: GPLv2 and BSD and MIT and CC-BY-SA-4.0
|
||||||
@ -563,6 +563,16 @@ Patch0546: hw-loongarch-clean-code.patch
|
|||||||
Patch0547: hw-loongarch-boot-Use-warn_report-when-no-kernel-fil.patch
|
Patch0547: hw-loongarch-boot-Use-warn_report-when-no-kernel-fil.patch
|
||||||
Patch0548: hw-loongarch-fix-cpu-hotplug-reset.patch
|
Patch0548: hw-loongarch-fix-cpu-hotplug-reset.patch
|
||||||
Patch0549: fix-compile-error-on-loongarch.patch
|
Patch0549: fix-compile-error-on-loongarch.patch
|
||||||
|
Patch0550: Reserve-address-for-MSI-mapping-in-the-CVM-scenario.patch
|
||||||
|
Patch0551: linux-user-Honor-elf-alignment-when-placing-images.patch
|
||||||
|
Patch0552: accel-tcg-Fix-user-only-probe_access_internal-plugin.patch
|
||||||
|
Patch0553: linux-user-Tolerate-CONFIG_LSM_MMAP_MIN_ADDR.patch
|
||||||
|
Patch0554: acpi-tests-avocado-bits-wait-for-200-seconds-for-SHU.patch
|
||||||
|
Patch0555: audio-audio.c-remove-trailing-newline-in-error_setg.patch
|
||||||
|
Patch0556: Avoid-unaligned-fetch-in-ladr_match.patch
|
||||||
|
Patch0557: cpu-ensure-we-don-t-call-start_exclusive-from-cpu_ex.patch
|
||||||
|
Patch0558: target-i386-Fix-minor-typo-in-NO_NESTED_DATA_BP-feat.patch
|
||||||
|
Patch0559: hw-misc-mos6522-Fix-bad-class-definition-of-the-MOS6.patch
|
||||||
|
|
||||||
BuildRequires: flex
|
BuildRequires: flex
|
||||||
BuildRequires: gcc
|
BuildRequires: gcc
|
||||||
@ -1161,6 +1171,18 @@ getent passwd qemu >/dev/null || \
|
|||||||
%endif
|
%endif
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Fri Feb 21 2025 Jiabo Feng <fengjiabo1@huawei.com> - 11:8.2.0-28
|
||||||
|
- hw/misc/mos6522: Fix bad class definition of the MOS6522 device
|
||||||
|
- target/i386: Fix minor typo in NO_NESTED_DATA_BP feature bit
|
||||||
|
- cpu: ensure we don't call start_exclusive from cpu_exec
|
||||||
|
- Avoid unaligned fetch in ladr_match()
|
||||||
|
- audio/audio.c: remove trailing newline in error_setg
|
||||||
|
- acpi/tests/avocado/bits: wait for 200 seconds for SHUTDOWN event from bits VM
|
||||||
|
- linux-user: Tolerate CONFIG_LSM_MMAP_MIN_ADDR
|
||||||
|
- accel/tcg: Fix user-only probe_access_internal plugin
|
||||||
|
- linux-user: Honor elf alignment when placing images
|
||||||
|
- Reserve address for MSI mapping in the CVM scenario.
|
||||||
|
|
||||||
* Fri Dec 13 2024 Xianglai Li <lixianglai@loongson.cn> - 11:8.2.0-27
|
* Fri Dec 13 2024 Xianglai Li <lixianglai@loongson.cn> - 11:8.2.0-27
|
||||||
- fix compile error on loongarch
|
- fix compile error on loongarch
|
||||||
- hw/loongarch: fix cpu hotplug reset
|
- hw/loongarch: fix cpu hotplug reset
|
||||||
|
|||||||
50
target-i386-Fix-minor-typo-in-NO_NESTED_DATA_BP-feat.patch
Normal file
50
target-i386-Fix-minor-typo-in-NO_NESTED_DATA_BP-feat.patch
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
From c006b5b78ffe7e6af76cde943a9fdd082473ba55 Mon Sep 17 00:00:00 2001
|
||||||
|
From: qihao_yewu <qihao_yewu@cmss.chinamobile.com>
|
||||||
|
Date: Mon, 18 Nov 2024 15:45:24 -0500
|
||||||
|
Subject: [PATCH] target/i386: Fix minor typo in NO_NESTED_DATA_BP feature bit
|
||||||
|
|
||||||
|
cheery-pick from 9c882ad4dc96f658ff9f92b88b3749d0398e6fa2
|
||||||
|
|
||||||
|
Rename CPUID_8000_0021_EAX_No_NESTED_DATA_BP to
|
||||||
|
CPUID_8000_0021_EAX_NO_NESTED_DATA_BP.
|
||||||
|
|
||||||
|
No functional change intended.
|
||||||
|
|
||||||
|
Signed-off-by: Babu Moger <babu.moger@amd.com>
|
||||||
|
Link: https://lore.kernel.org/r/a6749acd125670d3930f4ca31736a91b1d965f2f.1729807947.git.babu.moger@amd.com
|
||||||
|
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
|
||||||
|
Signed-off-by: qihao_yewu <qihao_yewu@cmss.chinamobile.com>
|
||||||
|
---
|
||||||
|
target/i386/cpu.c | 2 +-
|
||||||
|
target/i386/cpu.h | 2 +-
|
||||||
|
2 files changed, 2 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/target/i386/cpu.c b/target/i386/cpu.c
|
||||||
|
index ca7e5337b0..c2dc929eaa 100644
|
||||||
|
--- a/target/i386/cpu.c
|
||||||
|
+++ b/target/i386/cpu.c
|
||||||
|
@@ -5063,7 +5063,7 @@ static const X86CPUDefinition builtin_x86_defs[] = {
|
||||||
|
CPUID_8000_0008_EBX_STIBP_ALWAYS_ON |
|
||||||
|
CPUID_8000_0008_EBX_AMD_SSBD | CPUID_8000_0008_EBX_AMD_PSFD,
|
||||||
|
.features[FEAT_8000_0021_EAX] =
|
||||||
|
- CPUID_8000_0021_EAX_No_NESTED_DATA_BP |
|
||||||
|
+ CPUID_8000_0021_EAX_NO_NESTED_DATA_BP |
|
||||||
|
CPUID_8000_0021_EAX_LFENCE_ALWAYS_SERIALIZING |
|
||||||
|
CPUID_8000_0021_EAX_NULL_SEL_CLR_BASE |
|
||||||
|
CPUID_8000_0021_EAX_AUTO_IBRS,
|
||||||
|
diff --git a/target/i386/cpu.h b/target/i386/cpu.h
|
||||||
|
index 34f9615b98..6ca185cd9d 100644
|
||||||
|
--- a/target/i386/cpu.h
|
||||||
|
+++ b/target/i386/cpu.h
|
||||||
|
@@ -971,7 +971,7 @@ uint64_t x86_cpu_get_supported_feature_word(FeatureWord w,
|
||||||
|
#define CPUID_8000_0008_EBX_AMD_PSFD (1U << 28)
|
||||||
|
|
||||||
|
/* Processor ignores nested data breakpoints */
|
||||||
|
-#define CPUID_8000_0021_EAX_No_NESTED_DATA_BP (1U << 0)
|
||||||
|
+#define CPUID_8000_0021_EAX_NO_NESTED_DATA_BP (1U << 0)
|
||||||
|
/* LFENCE is always serializing */
|
||||||
|
#define CPUID_8000_0021_EAX_LFENCE_ALWAYS_SERIALIZING (1U << 2)
|
||||||
|
/* Null Selector Clears Base */
|
||||||
|
--
|
||||||
|
2.41.0.windows.1
|
||||||
|
|
||||||
Loading…
x
Reference in New Issue
Block a user