From e34f86a2f91c39d610d58baa6f4c9ed9a5a5d791 Mon Sep 17 00:00:00 2001 From: Guenter Roeck Date: Mon, 12 Dec 2022 09:03:17 -0600 Subject: [PATCH 001/174] target/sh4: Mask restore of env->flags from tb->flags The values in env->flags are a subset of tb->flags. Restore only the bits that belong. Cc: qemu-stable@nongnu.org Fixes: ab419fd8a035 ("target/sh4: Fix TB_FLAG_UNALIGN") Signed-off-by: Guenter Roeck Message-ID: <20221212011345.GA2235238@roeck-us.net> [rth: Reduce to only the the superh_cpu_synchronize_from_tb change] Signed-off-by: Richard Henderson (cherry picked from commit bc2331635ce18ff068d2bb1e493bc546e1f786e1) Signed-off-by: Michael Tokarev --- target/sh4/cpu.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/target/sh4/cpu.c b/target/sh4/cpu.c index 453268392b..827cee25af 100644 --- a/target/sh4/cpu.c +++ b/target/sh4/cpu.c @@ -47,7 +47,7 @@ static void superh_cpu_synchronize_from_tb(CPUState *cs, SuperHCPU *cpu = SUPERH_CPU(cs); cpu->env.pc = tb_pc(tb); - cpu->env.flags = tb->flags; + cpu->env.flags = tb->flags & TB_FLAG_ENVFLAGS_MASK; } static void superh_restore_state_to_opc(CPUState *cs, From f16011abc161e0fa6ac2bea78aa7ebacfb173e59 Mon Sep 17 00:00:00 2001 From: Jason Wang Date: Fri, 16 Dec 2022 11:35:52 +0800 Subject: [PATCH 002/174] vhost: fix vq dirty bitmap syncing when vIOMMU is enabled When vIOMMU is enabled, the vq->used_phys is actually the IOVA not GPA. So we need to translate it to GPA before the syncing otherwise we may hit the following crash since IOVA could be out of the scope of the GPA log size. This could be noted when using virtio-IOMMU with vhost using 1G memory. Fixes: c471ad0e9bd46 ("vhost_net: device IOTLB support") Cc: qemu-stable@nongnu.org Tested-by: Lei Yang Reported-by: Yalan Zhang Signed-off-by: Jason Wang Message-Id: <20221216033552.77087-1-jasowang@redhat.com> Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin (cherry picked from commit 345cc1cbcbce2bab00abc2b88338d7d89c702d6b) Signed-off-by: Michael Tokarev --- hw/virtio/vhost.c | 84 ++++++++++++++++++++++++++++++++++++----------- 1 file changed, 64 insertions(+), 20 deletions(-) diff --git a/hw/virtio/vhost.c b/hw/virtio/vhost.c index 7fb008bc9e..fdcd1a8fdf 100644 --- a/hw/virtio/vhost.c +++ b/hw/virtio/vhost.c @@ -20,6 +20,7 @@ #include "qemu/range.h" #include "qemu/error-report.h" #include "qemu/memfd.h" +#include "qemu/log.h" #include "standard-headers/linux/vhost_types.h" #include "hw/virtio/virtio-bus.h" #include "hw/virtio/virtio-access.h" @@ -106,6 +107,24 @@ static void vhost_dev_sync_region(struct vhost_dev *dev, } } +static bool vhost_dev_has_iommu(struct vhost_dev *dev) +{ + VirtIODevice *vdev = dev->vdev; + + /* + * For vhost, VIRTIO_F_IOMMU_PLATFORM means the backend support + * incremental memory mapping API via IOTLB API. For platform that + * does not have IOMMU, there's no need to enable this feature + * which may cause unnecessary IOTLB miss/update transactions. + */ + if (vdev) { + return virtio_bus_device_iommu_enabled(vdev) && + virtio_host_has_feature(vdev, VIRTIO_F_IOMMU_PLATFORM); + } else { + return false; + } +} + static int vhost_sync_dirty_bitmap(struct vhost_dev *dev, MemoryRegionSection *section, hwaddr first, @@ -137,8 +156,51 @@ static int vhost_sync_dirty_bitmap(struct vhost_dev *dev, continue; } - vhost_dev_sync_region(dev, section, start_addr, end_addr, vq->used_phys, - range_get_last(vq->used_phys, vq->used_size)); + if (vhost_dev_has_iommu(dev)) { + IOMMUTLBEntry iotlb; + hwaddr used_phys = vq->used_phys, used_size = vq->used_size; + hwaddr phys, s, offset; + + while (used_size) { + rcu_read_lock(); + iotlb = address_space_get_iotlb_entry(dev->vdev->dma_as, + used_phys, + true, + MEMTXATTRS_UNSPECIFIED); + rcu_read_unlock(); + + if (!iotlb.target_as) { + qemu_log_mask(LOG_GUEST_ERROR, "translation " + "failure for used_iova %"PRIx64"\n", + used_phys); + return -EINVAL; + } + + offset = used_phys & iotlb.addr_mask; + phys = iotlb.translated_addr + offset; + + /* + * Distance from start of used ring until last byte of + * IOMMU page. + */ + s = iotlb.addr_mask - offset; + /* + * Size of used ring, or of the part of it until end + * of IOMMU page. To avoid zero result, do the adding + * outside of MIN(). + */ + s = MIN(s, used_size - 1) + 1; + + vhost_dev_sync_region(dev, section, start_addr, end_addr, phys, + range_get_last(phys, s)); + used_size -= s; + used_phys += s; + } + } else { + vhost_dev_sync_region(dev, section, start_addr, + end_addr, vq->used_phys, + range_get_last(vq->used_phys, vq->used_size)); + } } return 0; } @@ -306,24 +368,6 @@ static inline void vhost_dev_log_resize(struct vhost_dev *dev, uint64_t size) dev->log_size = size; } -static bool vhost_dev_has_iommu(struct vhost_dev *dev) -{ - VirtIODevice *vdev = dev->vdev; - - /* - * For vhost, VIRTIO_F_IOMMU_PLATFORM means the backend support - * incremental memory mapping API via IOTLB API. For platform that - * does not have IOMMU, there's no need to enable this feature - * which may cause unnecessary IOTLB miss/update transactions. - */ - if (vdev) { - return virtio_bus_device_iommu_enabled(vdev) && - virtio_host_has_feature(vdev, VIRTIO_F_IOMMU_PLATFORM); - } else { - return false; - } -} - static void *vhost_memory_map(struct vhost_dev *dev, hwaddr addr, hwaddr *plen, bool is_write) { From 5f43c7786eaec3689aff3f2ea6101c54828a7f3e Mon Sep 17 00:00:00 2001 From: Chenyi Qiang Date: Fri, 16 Dec 2022 14:22:31 +0800 Subject: [PATCH 003/174] virtio-mem: Fix the bitmap index of the section offset vmem->bitmap indexes the memory region of the virtio-mem backend at a granularity of block_size. To calculate the index of target section offset, the block_size should be divided instead of the bitmap_size. Fixes: 2044969f0b ("virtio-mem: Implement RamDiscardManager interface") Signed-off-by: Chenyi Qiang Message-Id: <20221216062231.11181-1-chenyi.qiang@intel.com> Reviewed-by: David Hildenbrand Reviewed-by: Michael S. Tsirkin Cc: qemu-stable@nongnu.org Signed-off-by: David Hildenbrand (cherry picked from commit b11cf32e07a2f7ff0d171b89497381a04c9d07e0) Signed-off-by: Michael Tokarev --- hw/virtio/virtio-mem.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/hw/virtio/virtio-mem.c b/hw/virtio/virtio-mem.c index ed170def48..e19ee817fe 100644 --- a/hw/virtio/virtio-mem.c +++ b/hw/virtio/virtio-mem.c @@ -235,7 +235,7 @@ static int virtio_mem_for_each_plugged_section(const VirtIOMEM *vmem, uint64_t offset, size; int ret = 0; - first_bit = s->offset_within_region / vmem->bitmap_size; + first_bit = s->offset_within_region / vmem->block_size; first_bit = find_next_bit(vmem->bitmap, vmem->bitmap_size, first_bit); while (first_bit < vmem->bitmap_size) { MemoryRegionSection tmp = *s; @@ -267,7 +267,7 @@ static int virtio_mem_for_each_unplugged_section(const VirtIOMEM *vmem, uint64_t offset, size; int ret = 0; - first_bit = s->offset_within_region / vmem->bitmap_size; + first_bit = s->offset_within_region / vmem->block_size; first_bit = find_next_zero_bit(vmem->bitmap, vmem->bitmap_size, first_bit); while (first_bit < vmem->bitmap_size) { MemoryRegionSection tmp = *s; From a2093dd6fecec34079b4b0d3a7be218cfcd5b69b Mon Sep 17 00:00:00 2001 From: Chenyi Qiang Date: Wed, 28 Dec 2022 17:03:12 +0800 Subject: [PATCH 004/174] virtio-mem: Fix the iterator variable in a vmem->rdl_list loop MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit It should be the variable rdl2 to revert the already-notified listeners. Fixes: 2044969f0b ("virtio-mem: Implement RamDiscardManager interface") Signed-off-by: Chenyi Qiang Message-Id: <20221228090312.17276-1-chenyi.qiang@intel.com> Cc: qemu-stable@nongnu.org Reviewed-by: Philippe Mathieu-Daudé Signed-off-by: David Hildenbrand (cherry picked from commit 29f1b328e3b767cba2661920a8470738469b9e36) Signed-off-by: Michael Tokarev --- hw/virtio/virtio-mem.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hw/virtio/virtio-mem.c b/hw/virtio/virtio-mem.c index e19ee817fe..56db586c89 100644 --- a/hw/virtio/virtio-mem.c +++ b/hw/virtio/virtio-mem.c @@ -341,7 +341,7 @@ static int virtio_mem_notify_plug(VirtIOMEM *vmem, uint64_t offset, if (ret) { /* Notify all already-notified listeners. */ QLIST_FOREACH(rdl2, &vmem->rdl_list, next) { - MemoryRegionSection tmp = *rdl->section; + MemoryRegionSection tmp = *rdl2->section; if (rdl2 == rdl) { break; From 305c0f8c54071fd50364c01438f9979af5110c97 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20Benn=C3=A9e?= Date: Thu, 5 Jan 2023 11:43:04 +0000 Subject: [PATCH 005/174] target/arm: fix handling of HLT semihosting in system mode MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The check semihosting_enabled() wants to know if the guest is currently in user mode. Unlike the other cases the test was inverted causing us to block semihosting calls in non-EL0 modes. Cc: qemu-stable@nongnu.org Fixes: 19b26317e9 (target/arm: Honour -semihosting-config userspace=on) Signed-off-by: Alex Bennée Reviewed-by: Peter Maydell Signed-off-by: Peter Maydell (cherry picked from commit 9788d4c007cbde7cda1b7a577b8b836335eb2b73) Signed-off-by: Michael Tokarev --- target/arm/translate.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/target/arm/translate.c b/target/arm/translate.c index 74a903072f..1dcaefb8e7 100644 --- a/target/arm/translate.c +++ b/target/arm/translate.c @@ -1184,7 +1184,7 @@ static inline void gen_hlt(DisasContext *s, int imm) * semihosting, to provide some semblance of security * (and for consistency with our 32-bit semihosting). */ - if (semihosting_enabled(s->current_el != 0) && + if (semihosting_enabled(s->current_el == 0) && (imm == (s->thumb ? 0x3c : 0xf000))) { gen_exception_internal_insn(s, EXCP_SEMIHOST); return; From 6647b6edeaf65495bea867fc5b16c0eccde6f153 Mon Sep 17 00:00:00 2001 From: Paolo Bonzini Date: Wed, 14 Dec 2022 13:25:00 +0100 Subject: [PATCH 006/174] meson: accept relative symlinks in "meson introspect --installed" data When installing shared libraries, as is the case for libvfio-user.so, Meson will include relative symbolic links in the output of "meson introspect --installed": { "libvfio-user.so": "/usr/local/lib64/libvfio-user.so", ... } In the case of scripts/symlink-install-tree.py, this will be a symbolic link to a symbolic link but, in any case, there is no issue in creating it. Cc: qemu-stable@nongnu.org Signed-off-by: Paolo Bonzini (cherry picked from commit f32eb0021a85efaca97f69b0e9201737562a8e4f) Signed-off-by: Michael Tokarev --- scripts/symlink-install-tree.py | 1 - 1 file changed, 1 deletion(-) diff --git a/scripts/symlink-install-tree.py b/scripts/symlink-install-tree.py index a5bf0b0d6d..67cb86dd52 100644 --- a/scripts/symlink-install-tree.py +++ b/scripts/symlink-install-tree.py @@ -17,7 +17,6 @@ introspect = os.environ.get('MESONINTROSPECT') out = subprocess.run([*introspect.split(' '), '--installed'], stdout=subprocess.PIPE, check=True).stdout for source, dest in json.loads(out).items(): - assert os.path.isabs(source) bundle_dest = destdir_join('qemu-bundle', dest) path = os.path.dirname(bundle_dest) try: From e05827b632679ec632896cf354d7e8d5b8b50cdc Mon Sep 17 00:00:00 2001 From: Richard Henderson Date: Sat, 3 Dec 2022 11:57:44 -0600 Subject: [PATCH 007/174] target/riscv: Set pc_succ_insn for !rvc illegal insn MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Failure to set pc_succ_insn may result in a TB covering zero bytes, which triggers an assert within the code generator. Cc: qemu-stable@nongnu.org Resolves: https://gitlab.com/qemu-project/qemu/-/issues/1224 Signed-off-by: Richard Henderson Reviewed-by: Alistair Francis Reviewed-by: Philippe Mathieu-Daudé Message-Id: <20221203175744.151365-1-richard.henderson@linaro.org> [ Changes by AF: - Add missing run-plugin-test-noc-% line ] Signed-off-by: Alistair Francis (cherry picked from commit ec2918b467228e7634f1dd5f35033ad3021b6ef7) Signed-off-by: Michael Tokarev --- target/riscv/translate.c | 12 ++++-------- tests/tcg/Makefile.target | 2 ++ tests/tcg/riscv64/Makefile.target | 6 ++++++ tests/tcg/riscv64/test-noc.S | 32 +++++++++++++++++++++++++++++++ 4 files changed, 44 insertions(+), 8 deletions(-) create mode 100644 tests/tcg/riscv64/test-noc.S diff --git a/target/riscv/translate.c b/target/riscv/translate.c index db123da5ec..1ed4bb5ec3 100644 --- a/target/riscv/translate.c +++ b/target/riscv/translate.c @@ -1064,14 +1064,10 @@ static void decode_opc(CPURISCVState *env, DisasContext *ctx, uint16_t opcode) /* Check for compressed insn */ if (insn_len(opcode) == 2) { - if (!has_ext(ctx, RVC)) { - gen_exception_illegal(ctx); - } else { - ctx->opcode = opcode; - ctx->pc_succ_insn = ctx->base.pc_next + 2; - if (decode_insn16(ctx, opcode)) { - return; - } + ctx->opcode = opcode; + ctx->pc_succ_insn = ctx->base.pc_next + 2; + if (has_ext(ctx, RVC) && decode_insn16(ctx, opcode)) { + return; } } else { uint32_t opcode32 = opcode; diff --git a/tests/tcg/Makefile.target b/tests/tcg/Makefile.target index 75257f2b29..14bc013181 100644 --- a/tests/tcg/Makefile.target +++ b/tests/tcg/Makefile.target @@ -117,6 +117,8 @@ endif %: %.c $(CC) $(CFLAGS) $(EXTRA_CFLAGS) $< -o $@ $(LDFLAGS) +%: %.S + $(CC) $(CFLAGS) $(EXTRA_CFLAGS) $< -o $@ $(LDFLAGS) else # For softmmu targets we include a different Makefile fragement as the # build options for bare programs are usually pretty different. They diff --git a/tests/tcg/riscv64/Makefile.target b/tests/tcg/riscv64/Makefile.target index b5b89dfb0e..cc3ed65ffd 100644 --- a/tests/tcg/riscv64/Makefile.target +++ b/tests/tcg/riscv64/Makefile.target @@ -4,3 +4,9 @@ VPATH += $(SRC_PATH)/tests/tcg/riscv64 TESTS += test-div TESTS += noexec + +# Disable compressed instructions for test-noc +TESTS += test-noc +test-noc: LDFLAGS = -nostdlib -static +run-test-noc: QEMU_OPTS += -cpu rv64,c=false +run-plugin-test-noc-%: QEMU_OPTS += -cpu rv64,c=false diff --git a/tests/tcg/riscv64/test-noc.S b/tests/tcg/riscv64/test-noc.S new file mode 100644 index 0000000000..e29d60c8b3 --- /dev/null +++ b/tests/tcg/riscv64/test-noc.S @@ -0,0 +1,32 @@ +#include + + .text + .globl _start +_start: + .option norvc + li a0, 4 /* SIGILL */ + la a1, sa + li a2, 0 + li a3, 8 + li a7, __NR_rt_sigaction + scall + + .option rvc + li a0, 1 + j exit + .option norvc + +pass: + li a0, 0 +exit: + li a7, __NR_exit + scall + + .data + /* struct kernel_sigaction sa = { .sa_handler = pass }; */ + .type sa, @object + .size sa, 32 +sa: + .dword pass + .zero 24 + From 6a3aa014c54535d0ac67516b10ea17778bbafffd Mon Sep 17 00:00:00 2001 From: Laszlo Ersek Date: Thu, 5 Jan 2023 17:18:04 +0100 Subject: [PATCH 008/174] acpi: cpuhp: fix guest-visible maximum access size to the legacy reg block MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The modern ACPI CPU hotplug interface was introduced in the following series (aa1dd39ca307..679dd1a957df), released in v2.7.0: 1 abd49bc2ed2f docs: update ACPI CPU hotplug spec with new protocol 2 16bcab97eb9f pc: piix4/ich9: add 'cpu-hotplug-legacy' property 3 5e1b5d93887b acpi: cpuhp: add CPU devices AML with _STA method 4 ac35f13ba8f8 pc: acpi: introduce AcpiDeviceIfClass.madt_cpu hook 5 d2238cb6781d acpi: cpuhp: implement hot-add parts of CPU hotplug interface 6 8872c25a26cc acpi: cpuhp: implement hot-remove parts of CPU hotplug interface 7 76623d00ae57 acpi: cpuhp: add cpu._OST handling 8 679dd1a957df pc: use new CPU hotplug interface since 2.7 machine type Before patch#1, "docs/specs/acpi_cpu_hotplug.txt" only specified 1-byte accesses for the hotplug register block. Patch#1 preserved the same restriction for the legacy register block, but: - it specified DWORD accesses for some of the modern registers, - in particular, the switch from the legacy block to the modern block would require a DWORD write to the *legacy* block. The latter functionality was then implemented in cpu_status_write() [hw/acpi/cpu_hotplug.c], in patch#8. Unfortunately, all DWORD accesses depended on a dormant bug: the one introduced in earlier commit a014ed07bd5a ("memory: accept mismatching sizes in memory_region_access_valid", 2013-05-29); first released in v1.6.0. Due to commit a014ed07bd5a, the DWORD accesses to the *legacy* CPU hotplug register block would work in spite of the above series *not* relaxing "valid.max_access_size = 1" in "hw/acpi/cpu_hotplug.c": > static const MemoryRegionOps AcpiCpuHotplug_ops = { > .read = cpu_status_read, > .write = cpu_status_write, > .endianness = DEVICE_LITTLE_ENDIAN, > .valid = { > .min_access_size = 1, > .max_access_size = 1, > }, > }; Later, in commits e6d0c3ce6895 ("acpi: cpuhp: introduce 'Command data 2' field", 2020-01-22) and ae340aa3d256 ("acpi: cpuhp: spec: add typical usecases", 2020-01-22), first released in v5.0.0, the modern CPU hotplug interface (including the documentation) was extended with another DWORD *read* access, namely to the "Command data 2" register, which would be important for the guest to confirm whether it managed to switch the register block from legacy to modern. This functionality too silently depended on the bug from commit a014ed07bd5a. In commit 5d971f9e6725 ('memory: Revert "memory: accept mismatching sizes in memory_region_access_valid"', 2020-06-26), first released in v5.1.0, the bug from commit a014ed07bd5a was fixed (the commit was reverted). That swiftly exposed the bug in "AcpiCpuHotplug_ops", still present from the v2.7.0 series quoted at the top -- namely the fact that "valid.max_access_size = 1" didn't match what the guest was supposed to do, according to the spec ("docs/specs/acpi_cpu_hotplug.txt"). The symptom is that the "modern interface negotiation protocol" described in commit ae340aa3d256: > + Use following steps to detect and enable modern CPU hotplug interface: > + 1. Store 0x0 to the 'CPU selector' register, > + attempting to switch to modern mode > + 2. Store 0x0 to the 'CPU selector' register, > + to ensure valid selector value > + 3. Store 0x0 to the 'Command field' register, > + 4. Read the 'Command data 2' register. > + If read value is 0x0, the modern interface is enabled. > + Otherwise legacy or no CPU hotplug interface available falls apart for the guest: steps 1 and 2 are lost, because they are DWORD writes; so no switching happens. Step 3 (a single-byte write) is not lost, but it has no effect; see the condition in cpu_status_write() in patch#8. And step 4 *misleads* the guest into thinking that the switch worked: the DWORD read is lost again -- it returns zero to the guest without ever reaching the device model, so the guest never learns the switch didn't work. This means that guest behavior centered on the "Command data 2" register worked *only* in the v5.0.0 release; it got effectively regressed in v5.1.0. To make things *even more* complicated, the breakage was (and remains, as of today) visible with TCG acceleration only. Commit 5d971f9e6725 makes no difference with KVM acceleration -- the DWORD accesses still work, despite "valid.max_access_size = 1". As commit 5d971f9e6725 suggests, fix the problem by raising "valid.max_access_size" to 4 -- the spec now clearly instructs the guest to perform DWORD accesses to the legacy register block too, for enabling (and verifying!) the modern block. In order to keep compatibility for the device model implementation though, set "impl.max_access_size = 1", so that wide accesses be split before they reach the legacy read/write handlers, like they always have been on KVM, and like they were on TCG before 5d971f9e6725 (v5.1.0). Tested with: - OVMF IA32 + qemu-system-i386, CPU hotplug/hot-unplug with SMM, intermixed with ACPI S3 suspend/resume, using KVM accel (regression-test); - OVMF IA32X64 + qemu-system-x86_64, CPU hotplug/hot-unplug with SMM, intermixed with ACPI S3 suspend/resume, using KVM accel (regression-test); - OVMF IA32 + qemu-system-i386, SMM enabled, using TCG accel; verified the register block switch and the present/possible CPU counting through the modern hotplug interface, during OVMF boot (bugfix test); - I do not have any testcase (guest payload) for regression-testing CPU hotplug through the *legacy* CPU hotplug register block. Cc: "Michael S. Tsirkin" Cc: Ani Sinha Cc: Ard Biesheuvel Cc: Igor Mammedov Cc: Paolo Bonzini Cc: Peter Maydell Cc: Philippe Mathieu-Daudé Cc: qemu-stable@nongnu.org Ref: "IO port write width clamping differs between TCG and KVM" Link: http://mid.mail-archive.com/aaedee84-d3ed-a4f9-21e7-d221a28d1683@redhat.com Link: https://lists.gnu.org/archive/html/qemu-devel/2023-01/msg00199.html Reported-by: Ard Biesheuvel Signed-off-by: Laszlo Ersek Tested-by: Ard Biesheuvel Reviewed-by: Philippe Mathieu-Daudé Tested-by: Igor Mammedov Message-Id: <20230105161804.82486-1-lersek@redhat.com> Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin (cherry picked from commit dab30fbef3896bb652a09d46c37d3f55657cbcbb) Signed-off-by: Michael Tokarev --- hw/acpi/cpu_hotplug.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/hw/acpi/cpu_hotplug.c b/hw/acpi/cpu_hotplug.c index 53654f8638..ff14c3f410 100644 --- a/hw/acpi/cpu_hotplug.c +++ b/hw/acpi/cpu_hotplug.c @@ -52,6 +52,9 @@ static const MemoryRegionOps AcpiCpuHotplug_ops = { .endianness = DEVICE_LITTLE_ENDIAN, .valid = { .min_access_size = 1, + .max_access_size = 4, + }, + .impl = { .max_access_size = 1, }, }; From 9d86da9e07d02362bca4d21cca3ebf8af4f32522 Mon Sep 17 00:00:00 2001 From: Klaus Jensen Date: Mon, 12 Dec 2022 11:30:52 +0100 Subject: [PATCH 009/174] hw/nvme: fix missing endian conversions for doorbell buffers The eventidx and doorbell value are not handling endianness correctly. Fix this. Fixes: 3f7fe8de3d49 ("hw/nvme: Implement shadow doorbell buffer support") Cc: qemu-stable@nongnu.org Reported-by: Guenter Roeck Reviewed-by: Keith Busch Signed-off-by: Klaus Jensen (cherry picked from commit 2fda0726e5149e032acfa5fe442db56cd6433c4c) Signed-off-by: Michael Tokarev Conflicts: hw/nvme/ctrl.c --- hw/nvme/ctrl.c | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/hw/nvme/ctrl.c b/hw/nvme/ctrl.c index e54276dc1d..98d8e34109 100644 --- a/hw/nvme/ctrl.c +++ b/hw/nvme/ctrl.c @@ -1333,8 +1333,12 @@ static inline void nvme_blk_write(BlockBackend *blk, int64_t offset, static void nvme_update_cq_head(NvmeCQueue *cq) { - pci_dma_read(&cq->ctrl->parent_obj, cq->db_addr, &cq->head, - sizeof(cq->head)); + uint32_t v; + + pci_dma_read(&cq->ctrl->parent_obj, cq->db_addr, &v, sizeof(v)); + + cq->head = le32_to_cpu(v); + trace_pci_nvme_shadow_doorbell_cq(cq->cqid, cq->head); } @@ -6141,15 +6145,21 @@ static uint16_t nvme_admin_cmd(NvmeCtrl *n, NvmeRequest *req) static void nvme_update_sq_eventidx(const NvmeSQueue *sq) { - pci_dma_write(&sq->ctrl->parent_obj, sq->ei_addr, &sq->tail, - sizeof(sq->tail)); + uint32_t v = cpu_to_le32(sq->tail); + + pci_dma_write(&sq->ctrl->parent_obj, sq->ei_addr, &v, sizeof(v)); + trace_pci_nvme_eventidx_sq(sq->sqid, sq->tail); } static void nvme_update_sq_tail(NvmeSQueue *sq) { - pci_dma_read(&sq->ctrl->parent_obj, sq->db_addr, &sq->tail, - sizeof(sq->tail)); + uint32_t v; + + pci_dma_read(&sq->ctrl->parent_obj, sq->db_addr, &v, sizeof(v)); + + sq->tail = le32_to_cpu(v); + trace_pci_nvme_shadow_doorbell_sq(sq->sqid, sq->tail); } From 4e98327e1480399beeb57fab618f2495b8ba2d2c Mon Sep 17 00:00:00 2001 From: Klaus Jensen Date: Thu, 8 Dec 2022 09:12:45 +0100 Subject: [PATCH 010/174] hw/nvme: fix missing cq eventidx update Prior to reading the shadow doorbell cq head, we have to update the eventidx. Otherwise, we risk that the driver will skip an mmio doorbell write. This happens on riscv64, as reported by Guenter. Adding the missing update to the cq eventidx fixes the issue. Fixes: 3f7fe8de3d49 ("hw/nvme: Implement shadow doorbell buffer support") Cc: qemu-stable@nongnu.org Cc: qemu-riscv@nongnu.org Reported-by: Guenter Roeck Reviewed-by: Keith Busch Signed-off-by: Klaus Jensen (cherry picked from commit fa5db2aa168bdc0f15c269b6212ef47632fab8ba) Signed-off-by: Michael Tokarev --- hw/nvme/ctrl.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/hw/nvme/ctrl.c b/hw/nvme/ctrl.c index 98d8e34109..1d3e058452 100644 --- a/hw/nvme/ctrl.c +++ b/hw/nvme/ctrl.c @@ -1331,6 +1331,15 @@ static inline void nvme_blk_write(BlockBackend *blk, int64_t offset, } } +static void nvme_update_cq_eventidx(const NvmeCQueue *cq) +{ + uint32_t v = cpu_to_le32(cq->head); + + //not in 7.2: trace_pci_nvme_update_cq_eventidx(cq->cqid, cq->head); + + pci_dma_write(PCI_DEVICE(cq->ctrl), cq->ei_addr, &v, sizeof(v)); +} + static void nvme_update_cq_head(NvmeCQueue *cq) { uint32_t v; @@ -1355,6 +1364,7 @@ static void nvme_post_cqes(void *opaque) hwaddr addr; if (n->dbbuf_enabled) { + nvme_update_cq_eventidx(cq); nvme_update_cq_head(cq); } From f549ee8c258cc599024cd38126da206352d18c7b Mon Sep 17 00:00:00 2001 From: Paolo Bonzini Date: Sat, 7 Jan 2023 14:32:41 +0100 Subject: [PATCH 011/174] configure: fix GLIB_VERSION for cross-compilation MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit configure uses "pkg-config" directly so that GLIB_VERSION is always based on host glib version. To correctly handle cross-compilation it should use "$pkg_config" and take GLIB_VERSION from the cross-compiled glib. Reported-by: Валентин Resolves: https://gitlab.com/qemu-project/qemu/-/issues/1414 Cc: qemu-stable@nongnu.org Signed-off-by: Paolo Bonzini (cherry picked from commit acedc9a660f83b362a1dec4b699e85d5dd82a067) Signed-off-by: Michael Tokarev --- configure | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configure b/configure index 26c7bc5154..5f1828f1ec 100755 --- a/configure +++ b/configure @@ -2416,7 +2416,7 @@ echo "QEMU_OBJCFLAGS=$QEMU_OBJCFLAGS" >> $config_host_mak echo "GLIB_CFLAGS=$glib_cflags" >> $config_host_mak echo "GLIB_LIBS=$glib_libs" >> $config_host_mak echo "GLIB_BINDIR=$glib_bindir" >> $config_host_mak -echo "GLIB_VERSION=$(pkg-config --modversion glib-2.0)" >> $config_host_mak +echo "GLIB_VERSION=$($pkg_config --modversion glib-2.0)" >> $config_host_mak echo "QEMU_LDFLAGS=$QEMU_LDFLAGS" >> $config_host_mak echo "EXESUF=$EXESUF" >> $config_host_mak From de605876ebda47fc56298576b13acbdfc55732fc Mon Sep 17 00:00:00 2001 From: Richard Henderson Date: Wed, 4 Jan 2023 11:00:56 -0800 Subject: [PATCH 012/174] target/arm: Fix sve_probe_page MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Don't dereference CPUTLBEntryFull until we verify that the page is valid. Move the other user-only info field updates after the valid check to match. Cc: qemu-stable@nongnu.org Resolves: https://gitlab.com/qemu-project/qemu/-/issues/1412 Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daudé Message-id: 20230104190056.305143-1-richard.henderson@linaro.org Signed-off-by: Peter Maydell (cherry picked from commit ce848378b999214777fa984a8a0a3e3deb1cf687) Signed-off-by: Michael Tokarev --- target/arm/sve_helper.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/target/arm/sve_helper.c b/target/arm/sve_helper.c index 1afeadf9c8..521fc9b969 100644 --- a/target/arm/sve_helper.c +++ b/target/arm/sve_helper.c @@ -5354,15 +5354,10 @@ bool sve_probe_page(SVEHostPage *info, bool nofault, CPUARMState *env, #ifdef CONFIG_USER_ONLY flags = probe_access_flags(env, addr, access_type, mmu_idx, nofault, &info->host, retaddr); - memset(&info->attrs, 0, sizeof(info->attrs)); - /* Require both ANON and MTE; see allocation_tag_mem(). */ - info->tagged = (flags & PAGE_ANON) && (flags & PAGE_MTE); #else CPUTLBEntryFull *full; flags = probe_access_full(env, addr, access_type, mmu_idx, nofault, &info->host, &full, retaddr); - info->attrs = full->attrs; - info->tagged = full->pte_attrs == 0xf0; #endif info->flags = flags; @@ -5371,6 +5366,15 @@ bool sve_probe_page(SVEHostPage *info, bool nofault, CPUARMState *env, return false; } +#ifdef CONFIG_USER_ONLY + memset(&info->attrs, 0, sizeof(info->attrs)); + /* Require both ANON and MTE; see allocation_tag_mem(). */ + info->tagged = (flags & PAGE_ANON) && (flags & PAGE_MTE); +#else + info->attrs = full->attrs; + info->tagged = full->pte_attrs == 0xf0; +#endif + /* Ensure that info->host[] is relative to addr, not addr + mem_off. */ info->host -= mem_off; return true; From c3ea5ef558f34cc0bf9f1e4208d43970acabfbef Mon Sep 17 00:00:00 2001 From: Evgeny Iakovlev Date: Thu, 5 Jan 2023 23:12:51 +0100 Subject: [PATCH 013/174] target/arm: allow writes to SCR_EL3.HXEn bit when FEAT_HCX is enabled ARM trusted firmware, when built with FEAT_HCX support, sets SCR_EL3.HXEn bit to allow EL2 to modify HCRX_EL2 register without trapping it in EL3. Qemu uses a valid mask to clear unsupported SCR_EL3 bits when emulating SCR_EL3 write, and that mask doesn't include SCR_EL3.HXEn bit even if FEAT_HCX is enabled and exposed to the guest. As a result EL3 writes of that bit are ignored. Cc: qemu-stable@nongnu.org Signed-off-by: Evgeny Iakovlev Message-id: 20230105221251.17896-4-eiakovlev@linux.microsoft.com Reviewed-by: Peter Maydell Signed-off-by: Peter Maydell (cherry picked from commit 08899b5c68a55a3780d707e2464073c8f2670d31) Signed-off-by: Michael Tokarev --- target/arm/helper.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/target/arm/helper.c b/target/arm/helper.c index d8c8223ec3..22bc935242 100644 --- a/target/arm/helper.c +++ b/target/arm/helper.c @@ -1820,6 +1820,9 @@ static void scr_write(CPUARMState *env, const ARMCPRegInfo *ri, uint64_t value) if (cpu_isar_feature(aa64_sme, cpu)) { valid_mask |= SCR_ENTP2; } + if (cpu_isar_feature(aa64_hcx, cpu)) { + valid_mask |= SCR_HXEN; + } } else { valid_mask &= ~(SCR_RW | SCR_ST); if (cpu_isar_feature(aa32_ras, cpu)) { From 75ecd0872ff264ebc84d64510e2eab6f951227ab Mon Sep 17 00:00:00 2001 From: Richard Henderson Date: Fri, 13 Jan 2023 19:46:05 -1000 Subject: [PATCH 014/174] target/arm: Fix in_debug path in S1_ptw_translate During the conversion, the test against get_phys_addr_lpae got inverted, meaning that successful translations went to the 'failed' label. Cc: qemu-stable@nongnu.org Fixes: f3639a64f60 ("target/arm: Use softmmu tlbs for page table walking") Resolves: https://gitlab.com/qemu-project/qemu/-/issues/1417 Signed-off-by: Richard Henderson Message-id: 20230114054605.2977022-1-richard.henderson@linaro.org Reviewed-by: Peter Maydell Signed-off-by: Peter Maydell (cherry picked from commit 4a1103afb16efa64600ef0c2b03afe60f689fdc9) Signed-off-by: Michael Tokarev --- target/arm/ptw.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/target/arm/ptw.c b/target/arm/ptw.c index f812734bfb..bb22271a1d 100644 --- a/target/arm/ptw.c +++ b/target/arm/ptw.c @@ -238,8 +238,8 @@ static bool S1_ptw_translate(CPUARMState *env, S1Translate *ptw, }; GetPhysAddrResult s2 = { }; - if (!get_phys_addr_lpae(env, &s2ptw, addr, MMU_DATA_LOAD, - false, &s2, fi)) { + if (get_phys_addr_lpae(env, &s2ptw, addr, MMU_DATA_LOAD, + false, &s2, fi)) { goto fail; } ptw->out_phys = s2.f.phys_addr; From f759e330002777e9a4a7a3a600aad322733125fc Mon Sep 17 00:00:00 2001 From: Richard Henderson Date: Thu, 26 Jan 2023 13:31:34 -1000 Subject: [PATCH 015/174] target/arm: Fix physical address resolution for Stage2 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Conversion to probe_access_full missed applying the page offset. Cc: qemu-stable@nongnu.org Reported-by: Sid Manning Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daudé Message-id: 20230126233134.103193-1-richard.henderson@linaro.org Fixes: f3639a64f602 ("target/arm: Use softmmu tlbs for page table walking") Signed-off-by: Richard Henderson Signed-off-by: Peter Maydell (cherry picked from commit 9d2617ac7d3139d870ba14204aedd74395990192) Signed-off-by: Michael Tokarev --- target/arm/ptw.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/target/arm/ptw.c b/target/arm/ptw.c index bb22271a1d..0b16068557 100644 --- a/target/arm/ptw.c +++ b/target/arm/ptw.c @@ -266,7 +266,7 @@ static bool S1_ptw_translate(CPUARMState *env, S1Translate *ptw, if (unlikely(flags & TLB_INVALID_MASK)) { goto fail; } - ptw->out_phys = full->phys_addr; + ptw->out_phys = full->phys_addr | (addr & ~TARGET_PAGE_MASK); ptw->out_rw = full->prot & PAGE_WRITE; pte_attrs = full->pte_attrs; pte_secure = full->attrs.secure; From ee2ec0ac52a315c8b4e9991b4523abd0c62d24d7 Mon Sep 17 00:00:00 2001 From: David Hildenbrand Date: Thu, 5 Jan 2023 13:45:25 +0100 Subject: [PATCH 016/174] migration/ram: Fix error handling in ram_write_tracking_start() If something goes wrong during uffd_change_protection(), we would miss to unregister uffd-wp and not release our reference. Fix it by performing the uffd_change_protection(true) last. Note that a uffd_change_protection(false) on the recovery path without a prior uffd_change_protection(false) is fine. Fixes: 278e2f551a09 ("migration: support UFFD write fault processing in ram_save_iterate()") Cc: qemu-stable@nongnu.org Reviewed-by: Peter Xu Reviewed-by: Juan Quintela Signed-off-by: David Hildenbrand Signed-off-by: Juan Quintela (cherry picked from commit 72ef3a370836aa07261ad7aaeea27ed5cbcee342) Signed-off-by: Michael Tokarev --- migration/ram.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/migration/ram.c b/migration/ram.c index 1338e47665..8062713c75 100644 --- a/migration/ram.c +++ b/migration/ram.c @@ -1885,13 +1885,14 @@ int ram_write_tracking_start(void) block->max_length, UFFDIO_REGISTER_MODE_WP, NULL)) { goto fail; } + block->flags |= RAM_UF_WRITEPROTECT; + memory_region_ref(block->mr); + /* Apply UFFD write protection to the block memory range */ if (uffd_change_protection(rs->uffdio_fd, block->host, block->max_length, true, false)) { goto fail; } - block->flags |= RAM_UF_WRITEPROTECT; - memory_region_ref(block->mr); trace_ram_write_tracking_ramblock_start(block->idstr, block->page_size, block->host, block->max_length); From eca533b60a44796143133eeb30fe61a8c9d429e9 Mon Sep 17 00:00:00 2001 From: David Hildenbrand Date: Thu, 5 Jan 2023 13:45:24 +0100 Subject: [PATCH 017/174] migration/ram: Fix populate_read_range() Unfortunately, commit f7b9dcfbcf44 broke populate_read_range(): the loop end condition is very wrong, resulting in that function not populating the full range. Lets' fix that. Fixes: f7b9dcfbcf44 ("migration/ram: Factor out populating pages readable in ram_block_populate_pages()") Cc: qemu-stable@nongnu.org Reviewed-by: Peter Xu Reviewed-by: Juan Quintela Signed-off-by: David Hildenbrand Signed-off-by: Juan Quintela (cherry picked from commit 5f19a4491941fdc5c5b50ce4ade6ffffe0f591b4) Signed-off-by: Michael Tokarev --- migration/ram.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/migration/ram.c b/migration/ram.c index 8062713c75..f25ebd9620 100644 --- a/migration/ram.c +++ b/migration/ram.c @@ -1765,13 +1765,15 @@ out: static inline void populate_read_range(RAMBlock *block, ram_addr_t offset, ram_addr_t size) { + const ram_addr_t end = offset + size; + /* * We read one byte of each page; this will preallocate page tables if * required and populate the shared zeropage on MAP_PRIVATE anonymous memory * where no page was populated yet. This might require adaption when * supporting other mappings, like shmem. */ - for (; offset < size; offset += block->page_size) { + for (; offset < end; offset += block->page_size) { char tmp = *((char *)block->host + offset); /* Don't optimize the read out */ From 6e0c9109046d4cec3d1c277f4bf54602c3fc1ba6 Mon Sep 17 00:00:00 2001 From: Kevin Wolf Date: Thu, 12 Jan 2023 20:14:51 +0100 Subject: [PATCH 018/174] qcow2: Fix theoretical corruption in store_bitmap() error path MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit In order to write the bitmap table to the image file, it is converted to big endian. If the write fails, it is passed to clear_bitmap_table() to free all of the clusters it had allocated before. However, if we don't convert it back to native endianness first, we'll free things at a wrong offset. In practical terms, the offsets will be so high that we won't actually free any allocated clusters, but just run into an error, but in theory this can cause image corruption. Cc: qemu-stable@nongnu.org Signed-off-by: Kevin Wolf Message-Id: <20230112191454.169353-2-kwolf@redhat.com> Reviewed-by: Hanna Czenczek Reviewed-by: Philippe Mathieu-Daudé Signed-off-by: Kevin Wolf (cherry picked from commit b03dd9613bcf8fe948581b2b3585510cb525c382) Signed-off-by: Michael Tokarev --- block/qcow2-bitmap.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/block/qcow2-bitmap.c b/block/qcow2-bitmap.c index bcad567c0c..3dff99ba06 100644 --- a/block/qcow2-bitmap.c +++ b/block/qcow2-bitmap.c @@ -115,7 +115,7 @@ static int update_header_sync(BlockDriverState *bs) return bdrv_flush(bs->file->bs); } -static inline void bitmap_table_to_be(uint64_t *bitmap_table, size_t size) +static inline void bitmap_table_bswap_be(uint64_t *bitmap_table, size_t size) { size_t i; @@ -1401,9 +1401,10 @@ static int store_bitmap(BlockDriverState *bs, Qcow2Bitmap *bm, Error **errp) goto fail; } - bitmap_table_to_be(tb, tb_size); + bitmap_table_bswap_be(tb, tb_size); ret = bdrv_pwrite(bs->file, tb_offset, tb_size * sizeof(tb[0]), tb, 0); if (ret < 0) { + bitmap_table_bswap_be(tb, tb_size); error_setg_errno(errp, -ret, "Failed to write bitmap '%s' to file", bm_name); goto fail; From 2c0fdb4ed3a122b29462880f4f4c28335d6935ff Mon Sep 17 00:00:00 2001 From: Stefan Hajnoczi Date: Tue, 7 Feb 2023 15:37:16 -0500 Subject: [PATCH 019/174] block: fix detect-zeroes= with BDRV_REQ_REGISTERED_BUF When a write request is converted into a write zeroes request by the detect-zeroes= feature, it is no longer associated with an I/O buffer. The BDRV_REQ_REGISTERED_BUF flag doesn't make sense without an I/O buffer and must be cleared because bdrv_co_do_pwrite_zeroes() fails with -EINVAL when it's set. Fiona Ebner bisected and diagnosed this QEMU 7.2 regression where writes containing zeroes to a blockdev with discard=unmap,detect-zeroes=unmap fail. Buglink: https://gitlab.com/qemu-project/qemu/-/issues/1404 Fixes: e8b6535533be ("block: add BDRV_REQ_REGISTERED_BUF request flag") Tested-by: Fiona Ebner Cc: qemu-stable@nongnu.org Reviewed-by: Eric Blake Reviewed-by: Hanna Czenczek Signed-off-by: Stefan Hajnoczi Message-Id: <20230207203719.242926-2-stefanha@redhat.com> (cherry picked from commit 3c5867156eb81c7c71611d078b2c5c2c863f884a) Signed-off-by: Michael Tokarev --- block/io.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/block/io.c b/block/io.c index b9424024f9..bbaa0d1b2d 100644 --- a/block/io.c +++ b/block/io.c @@ -2087,6 +2087,9 @@ static int coroutine_fn bdrv_aligned_pwritev(BdrvChild *child, if (bs->detect_zeroes == BLOCKDEV_DETECT_ZEROES_OPTIONS_UNMAP) { flags |= BDRV_REQ_MAY_UNMAP; } + + /* Can't use optimization hint with bufferless zero write */ + flags &= ~BDRV_REQ_REGISTERED_BUF; } if (ret < 0) { From 93ff84d4c0b78ece4dba688cf2d2db6e1a3945f4 Mon Sep 17 00:00:00 2001 From: Richard Henderson Date: Sat, 14 Jan 2023 13:05:41 -1000 Subject: [PATCH 020/174] tests/tcg/i386: Introduce and use reg_t consistently MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Define reg_t based on the actual register width. Define the inlines using that type. This will allow input registers to 32-bit insns to be set to 64-bit values on x86-64, which allows testing various edge cases. Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daudé Message-Id: <20230114230542.3116013-2-richard.henderson@linaro.org> Signed-off-by: Paolo Bonzini (cherry picked from commit 5d62d6649cd367b5b4a3676e7514d2f9ca86cb03) Signed-off-by: Michael Tokarev --- tests/tcg/i386/test-i386-bmi2.c | 182 ++++++++++++++++---------------- 1 file changed, 93 insertions(+), 89 deletions(-) diff --git a/tests/tcg/i386/test-i386-bmi2.c b/tests/tcg/i386/test-i386-bmi2.c index 5fadf47510..3c3ef85513 100644 --- a/tests/tcg/i386/test-i386-bmi2.c +++ b/tests/tcg/i386/test-i386-bmi2.c @@ -3,34 +3,40 @@ #include #include +#ifdef __x86_64 +typedef uint64_t reg_t; +#else +typedef uint32_t reg_t; +#endif + #define insn1q(name, arg0) \ -static inline uint64_t name##q(uint64_t arg0) \ +static inline reg_t name##q(reg_t arg0) \ { \ - uint64_t result64; \ + reg_t result64; \ asm volatile (#name "q %1, %0" : "=r"(result64) : "rm"(arg0)); \ return result64; \ } #define insn1l(name, arg0) \ -static inline uint32_t name##l(uint32_t arg0) \ +static inline reg_t name##l(reg_t arg0) \ { \ - uint32_t result32; \ + reg_t result32; \ asm volatile (#name "l %k1, %k0" : "=r"(result32) : "rm"(arg0)); \ return result32; \ } #define insn2q(name, arg0, c0, arg1, c1) \ -static inline uint64_t name##q(uint64_t arg0, uint64_t arg1) \ +static inline reg_t name##q(reg_t arg0, reg_t arg1) \ { \ - uint64_t result64; \ + reg_t result64; \ asm volatile (#name "q %2, %1, %0" : "=r"(result64) : c0(arg0), c1(arg1)); \ return result64; \ } #define insn2l(name, arg0, c0, arg1, c1) \ -static inline uint32_t name##l(uint32_t arg0, uint32_t arg1) \ +static inline reg_t name##l(reg_t arg0, reg_t arg1) \ { \ - uint32_t result32; \ + reg_t result32; \ asm volatile (#name "l %k2, %k1, %k0" : "=r"(result32) : c0(arg0), c1(arg1)); \ return result32; \ } @@ -65,130 +71,128 @@ insn1l(blsr, src) int main(int argc, char *argv[]) { uint64_t ehlo = 0x202020204f4c4845ull; uint64_t mask = 0xa080800302020001ull; - uint32_t result32; + reg_t result; #ifdef __x86_64 - uint64_t result64; - /* 64 bits */ - result64 = andnq(mask, ehlo); - assert(result64 == 0x002020204d4c4844); + result = andnq(mask, ehlo); + assert(result == 0x002020204d4c4844); - result64 = pextq(ehlo, mask); - assert(result64 == 133); + result = pextq(ehlo, mask); + assert(result == 133); - result64 = pdepq(result64, mask); - assert(result64 == (ehlo & mask)); + result = pdepq(result, mask); + assert(result == (ehlo & mask)); - result64 = pextq(-1ull, mask); - assert(result64 == 511); /* mask has 9 bits set */ + result = pextq(-1ull, mask); + assert(result == 511); /* mask has 9 bits set */ - result64 = pdepq(-1ull, mask); - assert(result64 == mask); + result = pdepq(-1ull, mask); + assert(result == mask); - result64 = bextrq(mask, 0x3f00); - assert(result64 == (mask & ~INT64_MIN)); + result = bextrq(mask, 0x3f00); + assert(result == (mask & ~INT64_MIN)); - result64 = bextrq(mask, 0x1038); - assert(result64 == 0xa0); + result = bextrq(mask, 0x1038); + assert(result == 0xa0); - result64 = bextrq(mask, 0x10f8); - assert(result64 == 0); + result = bextrq(mask, 0x10f8); + assert(result == 0); - result64 = blsiq(0x30); - assert(result64 == 0x10); + result = blsiq(0x30); + assert(result == 0x10); - result64 = blsiq(0x30ull << 32); - assert(result64 == 0x10ull << 32); + result = blsiq(0x30ull << 32); + assert(result == 0x10ull << 32); - result64 = blsmskq(0x30); - assert(result64 == 0x1f); + result = blsmskq(0x30); + assert(result == 0x1f); - result64 = blsrq(0x30); - assert(result64 == 0x20); + result = blsrq(0x30); + assert(result == 0x20); - result64 = blsrq(0x30ull << 32); - assert(result64 == 0x20ull << 32); + result = blsrq(0x30ull << 32); + assert(result == 0x20ull << 32); - result64 = bzhiq(mask, 0x3f); - assert(result64 == (mask & ~INT64_MIN)); + result = bzhiq(mask, 0x3f); + assert(result == (mask & ~INT64_MIN)); - result64 = bzhiq(mask, 0x1f); - assert(result64 == (mask & ~(-1 << 30))); + result = bzhiq(mask, 0x1f); + assert(result == (mask & ~(-1 << 30))); - result64 = rorxq(0x2132435465768798, 8); - assert(result64 == 0x9821324354657687); + result = rorxq(0x2132435465768798, 8); + assert(result == 0x9821324354657687); - result64 = sarxq(0xffeeddccbbaa9988, 8); - assert(result64 == 0xffffeeddccbbaa99); + result = sarxq(0xffeeddccbbaa9988, 8); + assert(result == 0xffffeeddccbbaa99); - result64 = sarxq(0x77eeddccbbaa9988, 8 | 64); - assert(result64 == 0x0077eeddccbbaa99); + result = sarxq(0x77eeddccbbaa9988, 8 | 64); + assert(result == 0x0077eeddccbbaa99); - result64 = shrxq(0xffeeddccbbaa9988, 8); - assert(result64 == 0x00ffeeddccbbaa99); + result = shrxq(0xffeeddccbbaa9988, 8); + assert(result == 0x00ffeeddccbbaa99); - result64 = shrxq(0x77eeddccbbaa9988, 8 | 192); - assert(result64 == 0x0077eeddccbbaa99); + result = shrxq(0x77eeddccbbaa9988, 8 | 192); + assert(result == 0x0077eeddccbbaa99); - result64 = shlxq(0xffeeddccbbaa9988, 8); - assert(result64 == 0xeeddccbbaa998800); + result = shlxq(0xffeeddccbbaa9988, 8); + assert(result == 0xeeddccbbaa998800); #endif /* 32 bits */ - result32 = andnl(mask, ehlo); - assert(result32 == 0x04d4c4844); + result = andnl(mask, ehlo); + assert(result == 0x04d4c4844); - result32 = pextl((uint32_t) ehlo, mask); - assert(result32 == 5); + result = pextl((uint32_t) ehlo, mask); + assert(result == 5); - result32 = pdepl(result32, mask); - assert(result32 == (uint32_t)(ehlo & mask)); + result = pdepl(result, mask); + assert(result == (uint32_t)(ehlo & mask)); - result32 = pextl(-1u, mask); - assert(result32 == 7); /* mask has 3 bits set */ + result = pextl(-1u, mask); + assert(result == 7); /* mask has 3 bits set */ - result32 = pdepl(-1u, mask); - assert(result32 == (uint32_t)mask); + result = pdepl(-1u, mask); + assert(result == (uint32_t)mask); - result32 = bextrl(mask, 0x1f00); - assert(result32 == (mask & ~INT32_MIN)); + result = bextrl(mask, 0x1f00); + assert(result == (mask & ~INT32_MIN)); - result32 = bextrl(ehlo, 0x1018); - assert(result32 == 0x4f); + result = bextrl(ehlo, 0x1018); + assert(result == 0x4f); - result32 = bextrl(mask, 0x1038); - assert(result32 == 0); + result = bextrl(mask, 0x1038); + assert(result == 0); - result32 = blsil(0xffff); - assert(result32 == 1); + result = blsil(0xffff); + assert(result == 1); - result32 = blsmskl(0x300); - assert(result32 == 0x1ff); + result = blsmskl(0x300); + assert(result == 0x1ff); - result32 = blsrl(0xffc); - assert(result32 == 0xff8); + result = blsrl(0xffc); + assert(result == 0xff8); - result32 = bzhil(mask, 0xf); - assert(result32 == 1); + result = bzhil(mask, 0xf); + assert(result == 1); - result32 = rorxl(0x65768798, 8); - assert(result32 == 0x98657687); + result = rorxl(0x65768798, 8); + assert(result == 0x98657687); - result32 = sarxl(0xffeeddcc, 8); - assert(result32 == 0xffffeedd); + result = sarxl(0xffeeddcc, 8); + assert(result == 0xffffeedd); - result32 = sarxl(0x77eeddcc, 8 | 32); - assert(result32 == 0x0077eedd); + result = sarxl(0x77eeddcc, 8 | 32); + assert(result == 0x0077eedd); - result32 = shrxl(0xffeeddcc, 8); - assert(result32 == 0x00ffeedd); + result = shrxl(0xffeeddcc, 8); + assert(result == 0x00ffeedd); - result32 = shrxl(0x77eeddcc, 8 | 128); - assert(result32 == 0x0077eedd); + result = shrxl(0x77eeddcc, 8 | 128); + assert(result == 0x0077eedd); - result32 = shlxl(0xffeeddcc, 8); - assert(result32 == 0xeeddcc00); + result = shlxl(0xffeeddcc, 8); + assert(result == 0xeeddcc00); return 0; } From 8d3c9fc4392cebe8cf19487d88ce1c68372b6a07 Mon Sep 17 00:00:00 2001 From: Richard Henderson Date: Sat, 14 Jan 2023 13:05:42 -1000 Subject: [PATCH 021/174] target/i386: Fix BEXTR instruction There were two problems here: not limiting the input to operand bits, and not correctly handling large extraction length. Resolves: https://gitlab.com/qemu-project/qemu/-/issues/1372 Signed-off-by: Richard Henderson Message-Id: <20230114230542.3116013-3-richard.henderson@linaro.org> Cc: qemu-stable@nongnu.org Fixes: 1d0b926150e5 ("target/i386: move scalar 0F 38 and 0F 3A instruction to new decoder", 2022-10-18) Signed-off-by: Paolo Bonzini (cherry picked from commit b14c0098975264ed03144f145bca0179a6763a07) Signed-off-by: Michael Tokarev --- target/i386/tcg/emit.c.inc | 22 +++++++++++----------- tests/tcg/i386/test-i386-bmi2.c | 12 ++++++++++++ 2 files changed, 23 insertions(+), 11 deletions(-) diff --git a/target/i386/tcg/emit.c.inc b/target/i386/tcg/emit.c.inc index 7037ff91c6..99f6ba6e19 100644 --- a/target/i386/tcg/emit.c.inc +++ b/target/i386/tcg/emit.c.inc @@ -1078,30 +1078,30 @@ static void gen_ANDN(DisasContext *s, CPUX86State *env, X86DecodedInsn *decode) static void gen_BEXTR(DisasContext *s, CPUX86State *env, X86DecodedInsn *decode) { MemOp ot = decode->op[0].ot; - TCGv bound, zero; + TCGv bound = tcg_constant_tl(ot == MO_64 ? 63 : 31); + TCGv zero = tcg_constant_tl(0); + TCGv mone = tcg_constant_tl(-1); /* * Extract START, and shift the operand. * Shifts larger than operand size get zeros. */ tcg_gen_ext8u_tl(s->A0, s->T1); + if (TARGET_LONG_BITS == 64 && ot == MO_32) { + tcg_gen_ext32u_tl(s->T0, s->T0); + } tcg_gen_shr_tl(s->T0, s->T0, s->A0); - bound = tcg_constant_tl(ot == MO_64 ? 63 : 31); - zero = tcg_constant_tl(0); tcg_gen_movcond_tl(TCG_COND_LEU, s->T0, s->A0, bound, s->T0, zero); /* - * Extract the LEN into a mask. Lengths larger than - * operand size get all ones. + * Extract the LEN into an inverse mask. Lengths larger than + * operand size get all zeros, length 0 gets all ones. */ tcg_gen_extract_tl(s->A0, s->T1, 8, 8); - tcg_gen_movcond_tl(TCG_COND_LEU, s->A0, s->A0, bound, s->A0, bound); - - tcg_gen_movi_tl(s->T1, 1); - tcg_gen_shl_tl(s->T1, s->T1, s->A0); - tcg_gen_subi_tl(s->T1, s->T1, 1); - tcg_gen_and_tl(s->T0, s->T0, s->T1); + tcg_gen_shl_tl(s->T1, mone, s->A0); + tcg_gen_movcond_tl(TCG_COND_LEU, s->T1, s->A0, bound, s->T1, zero); + tcg_gen_andc_tl(s->T0, s->T0, s->T1); gen_op_update1_cc(s); set_cc_op(s, CC_OP_LOGICB + ot); diff --git a/tests/tcg/i386/test-i386-bmi2.c b/tests/tcg/i386/test-i386-bmi2.c index 3c3ef85513..982d4abda4 100644 --- a/tests/tcg/i386/test-i386-bmi2.c +++ b/tests/tcg/i386/test-i386-bmi2.c @@ -99,6 +99,9 @@ int main(int argc, char *argv[]) { result = bextrq(mask, 0x10f8); assert(result == 0); + result = bextrq(0xfedcba9876543210ull, 0x7f00); + assert(result == 0xfedcba9876543210ull); + result = blsiq(0x30); assert(result == 0x10); @@ -164,6 +167,15 @@ int main(int argc, char *argv[]) { result = bextrl(mask, 0x1038); assert(result == 0); + result = bextrl((reg_t)0x8f635a775ad3b9b4ull, 0x3018); + assert(result == 0x5a); + + result = bextrl((reg_t)0xfedcba9876543210ull, 0x7f00); + assert(result == 0x76543210u); + + result = bextrl(-1, 0); + assert(result == 0); + result = blsil(0xffff); assert(result == 1); From 6809dbc5c52f66d2d2ff9030a3d739e50ef3d9c8 Mon Sep 17 00:00:00 2001 From: Richard Henderson Date: Sat, 14 Jan 2023 08:06:01 -1000 Subject: [PATCH 022/174] target/i386: Fix C flag for BLSI, BLSMSK, BLSR We forgot to set cc_src, which is used for computing C. Resolves: https://gitlab.com/qemu-project/qemu/-/issues/1370 Signed-off-by: Richard Henderson Message-Id: <20230114180601.2993644-1-richard.henderson@linaro.org> Cc: qemu-stable@nongnu.org Fixes: 1d0b926150e5 ("target/i386: move scalar 0F 38 and 0F 3A instruction to new decoder", 2022-10-18) Signed-off-by: Paolo Bonzini (cherry picked from commit 99282098dc74c2055bde5652bde6cf0067d0c370) Signed-off-by: Michael Tokarev --- target/i386/tcg/emit.c.inc | 3 +++ 1 file changed, 3 insertions(+) diff --git a/target/i386/tcg/emit.c.inc b/target/i386/tcg/emit.c.inc index 99f6ba6e19..4d7702c106 100644 --- a/target/i386/tcg/emit.c.inc +++ b/target/i386/tcg/emit.c.inc @@ -1111,6 +1111,7 @@ static void gen_BLSI(DisasContext *s, CPUX86State *env, X86DecodedInsn *decode) { MemOp ot = decode->op[0].ot; + tcg_gen_mov_tl(cpu_cc_src, s->T0); tcg_gen_neg_tl(s->T1, s->T0); tcg_gen_and_tl(s->T0, s->T0, s->T1); tcg_gen_mov_tl(cpu_cc_dst, s->T0); @@ -1121,6 +1122,7 @@ static void gen_BLSMSK(DisasContext *s, CPUX86State *env, X86DecodedInsn *decode { MemOp ot = decode->op[0].ot; + tcg_gen_mov_tl(cpu_cc_src, s->T0); tcg_gen_subi_tl(s->T1, s->T0, 1); tcg_gen_xor_tl(s->T0, s->T0, s->T1); tcg_gen_mov_tl(cpu_cc_dst, s->T0); @@ -1131,6 +1133,7 @@ static void gen_BLSR(DisasContext *s, CPUX86State *env, X86DecodedInsn *decode) { MemOp ot = decode->op[0].ot; + tcg_gen_mov_tl(cpu_cc_src, s->T0); tcg_gen_subi_tl(s->T1, s->T0, 1); tcg_gen_and_tl(s->T0, s->T0, s->T1); tcg_gen_mov_tl(cpu_cc_dst, s->T0); From c45d10f6557b4fdae3e97f1326429bb85f5a8717 Mon Sep 17 00:00:00 2001 From: Paolo Bonzini Date: Tue, 31 Jan 2023 09:48:03 +0100 Subject: [PATCH 023/174] target/i386: fix ADOX followed by ADCX When ADCX is followed by ADOX or vice versa, the second instruction's carry comes from EFLAGS and the condition codes use the CC_OP_ADCOX operation. Retrieving the carry from EFLAGS is handled by this bit of gen_ADCOX: tcg_gen_extract_tl(carry_in, cpu_cc_src, ctz32(cc_op == CC_OP_ADCX ? CC_C : CC_O), 1); Unfortunately, in this case cc_op has been overwritten by the previous "if" statement to CC_OP_ADCOX. This works by chance when the first instruction is ADCX; however, if the first instruction is ADOX, ADCX will incorrectly take its carry from OF instead of CF. Fix by moving the computation of the new cc_op at the end of the function. The included exhaustive test case fails without this patch and passes afterwards. Because ADCX/ADOX need not be invoked through the VEX prefix, this regression bisects to commit 16fc5726a6e2 ("target/i386: reimplement 0x0f 0x38, add AVX", 2022-10-18). However, the mistake happened a little earlier, when BMI instructions were rewritten using the new decoder framework. Resolves: https://gitlab.com/qemu-project/qemu/-/issues/1471 Reported-by: Paul Jolly Fixes: 1d0b926150e5 ("target/i386: move scalar 0F 38 and 0F 3A instruction to new decoder", 2022-10-18) Cc: qemu-stable@nongnu.org Signed-off-by: Paolo Bonzini (cherry picked from commit 60c7dd22e1383754d5f150bc9f7c2785c662a7b6) Signed-off-by: Michael Tokarev --- target/i386/tcg/emit.c.inc | 20 +++++---- tests/tcg/i386/Makefile.target | 6 ++- tests/tcg/i386/test-i386-adcox.c | 75 ++++++++++++++++++++++++++++++++ 3 files changed, 91 insertions(+), 10 deletions(-) create mode 100644 tests/tcg/i386/test-i386-adcox.c diff --git a/target/i386/tcg/emit.c.inc b/target/i386/tcg/emit.c.inc index 4d7702c106..0d7c6e80ae 100644 --- a/target/i386/tcg/emit.c.inc +++ b/target/i386/tcg/emit.c.inc @@ -1015,6 +1015,7 @@ VSIB_AVX(VPGATHERQ, vpgatherq) static void gen_ADCOX(DisasContext *s, CPUX86State *env, MemOp ot, int cc_op) { + int opposite_cc_op; TCGv carry_in = NULL; TCGv carry_out = (cc_op == CC_OP_ADCX ? cpu_cc_dst : cpu_cc_src2); TCGv zero; @@ -1022,14 +1023,8 @@ static void gen_ADCOX(DisasContext *s, CPUX86State *env, MemOp ot, int cc_op) if (cc_op == s->cc_op || s->cc_op == CC_OP_ADCOX) { /* Re-use the carry-out from a previous round. */ carry_in = carry_out; - cc_op = s->cc_op; - } else if (s->cc_op == CC_OP_ADCX || s->cc_op == CC_OP_ADOX) { - /* Merge with the carry-out from the opposite instruction. */ - cc_op = CC_OP_ADCOX; - } - - /* If we don't have a carry-in, get it out of EFLAGS. */ - if (!carry_in) { + } else { + /* We don't have a carry-in, get it out of EFLAGS. */ if (s->cc_op != CC_OP_ADCX && s->cc_op != CC_OP_ADOX) { gen_compute_eflags(s); } @@ -1053,7 +1048,14 @@ static void gen_ADCOX(DisasContext *s, CPUX86State *env, MemOp ot, int cc_op) tcg_gen_add2_tl(s->T0, carry_out, s->T0, carry_out, s->T1, zero); break; } - set_cc_op(s, cc_op); + + opposite_cc_op = cc_op == CC_OP_ADCX ? CC_OP_ADOX : CC_OP_ADCX; + if (s->cc_op == CC_OP_ADCOX || s->cc_op == opposite_cc_op) { + /* Merge with the carry-out from the opposite instruction. */ + set_cc_op(s, CC_OP_ADCOX); + } else { + set_cc_op(s, cc_op); + } } static void gen_ADCX(DisasContext *s, CPUX86State *env, X86DecodedInsn *decode) diff --git a/tests/tcg/i386/Makefile.target b/tests/tcg/i386/Makefile.target index 81831cafbc..bafd8c2180 100644 --- a/tests/tcg/i386/Makefile.target +++ b/tests/tcg/i386/Makefile.target @@ -14,7 +14,7 @@ config-cc.mak: Makefile I386_SRCS=$(notdir $(wildcard $(I386_SRC)/*.c)) ALL_X86_TESTS=$(I386_SRCS:.c=) SKIP_I386_TESTS=test-i386-ssse3 test-avx test-3dnow test-mmx -X86_64_TESTS:=$(filter test-i386-bmi2 $(SKIP_I386_TESTS), $(ALL_X86_TESTS)) +X86_64_TESTS:=$(filter test-i386-adcox test-i386-bmi2 $(SKIP_I386_TESTS), $(ALL_X86_TESTS)) test-i386-sse-exceptions: CFLAGS += -msse4.1 -mfpmath=sse run-test-i386-sse-exceptions: QEMU_OPTS += -cpu max @@ -28,6 +28,10 @@ test-i386-bmi2: CFLAGS=-O2 run-test-i386-bmi2: QEMU_OPTS += -cpu max run-plugin-test-i386-bmi2-%: QEMU_OPTS += -cpu max +test-i386-adcox: CFLAGS=-O2 +run-test-i386-adcox: QEMU_OPTS += -cpu max +run-plugin-test-i386-adcox-%: QEMU_OPTS += -cpu max + # # hello-i386 is a barebones app # diff --git a/tests/tcg/i386/test-i386-adcox.c b/tests/tcg/i386/test-i386-adcox.c new file mode 100644 index 0000000000..16169efff8 --- /dev/null +++ b/tests/tcg/i386/test-i386-adcox.c @@ -0,0 +1,75 @@ +/* See if various BMI2 instructions give expected results */ +#include +#include +#include + +#define CC_C 1 +#define CC_O (1 << 11) + +#ifdef __x86_64__ +#define REG uint64_t +#else +#define REG uint32_t +#endif + +void test_adox_adcx(uint32_t in_c, uint32_t in_o, REG adcx_operand, REG adox_operand) +{ + REG flags; + REG out_adcx, out_adox; + + asm("pushf; pop %0" : "=r"(flags)); + flags &= ~(CC_C | CC_O); + flags |= (in_c ? CC_C : 0); + flags |= (in_o ? CC_O : 0); + + out_adcx = adcx_operand; + out_adox = adox_operand; + asm("push %0; popf;" + "adox %3, %2;" + "adcx %3, %1;" + "pushf; pop %0" + : "+r" (flags), "+r" (out_adcx), "+r" (out_adox) + : "r" ((REG)-1), "0" (flags), "1" (out_adcx), "2" (out_adox)); + + assert(out_adcx == in_c + adcx_operand - 1); + assert(out_adox == in_o + adox_operand - 1); + assert(!!(flags & CC_C) == (in_c || adcx_operand)); + assert(!!(flags & CC_O) == (in_o || adox_operand)); +} + +void test_adcx_adox(uint32_t in_c, uint32_t in_o, REG adcx_operand, REG adox_operand) +{ + REG flags; + REG out_adcx, out_adox; + + asm("pushf; pop %0" : "=r"(flags)); + flags &= ~(CC_C | CC_O); + flags |= (in_c ? CC_C : 0); + flags |= (in_o ? CC_O : 0); + + out_adcx = adcx_operand; + out_adox = adox_operand; + asm("push %0; popf;" + "adcx %3, %1;" + "adox %3, %2;" + "pushf; pop %0" + : "+r" (flags), "+r" (out_adcx), "+r" (out_adox) + : "r" ((REG)-1), "0" (flags), "1" (out_adcx), "2" (out_adox)); + + assert(out_adcx == in_c + adcx_operand - 1); + assert(out_adox == in_o + adox_operand - 1); + assert(!!(flags & CC_C) == (in_c || adcx_operand)); + assert(!!(flags & CC_O) == (in_o || adox_operand)); +} + +int main(int argc, char *argv[]) { + /* try all combinations of input CF, input OF, CF from op1+op2, OF from op2+op1 */ + int i; + for (i = 0; i <= 15; i++) { + printf("%d\n", i); + test_adcx_adox(!!(i & 1), !!(i & 2), !!(i & 4), !!(i & 8)); + test_adox_adcx(!!(i & 1), !!(i & 2), !!(i & 4), !!(i & 8)); + } + return 0; +} + From f163cf6be4b7b51f7327d264ea2572f8b495d287 Mon Sep 17 00:00:00 2001 From: Richard Henderson Date: Sat, 14 Jan 2023 13:32:06 -1000 Subject: [PATCH 024/174] target/i386: Fix BZHI instruction We did not correctly handle N >= operand size. Resolves: https://gitlab.com/qemu-project/qemu/-/issues/1374 Signed-off-by: Richard Henderson Message-Id: <20230114233206.3118472-1-richard.henderson@linaro.org> Signed-off-by: Paolo Bonzini (cherry picked from commit 9ad2ba6e8e7fc195d0dd0b76ab38bd2fceb1bdd4) Signed-off-by: Michael Tokarev --- target/i386/tcg/emit.c.inc | 14 +++++++------- tests/tcg/i386/test-i386-bmi2.c | 3 +++ 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/target/i386/tcg/emit.c.inc b/target/i386/tcg/emit.c.inc index 0d7c6e80ae..7296f3952c 100644 --- a/target/i386/tcg/emit.c.inc +++ b/target/i386/tcg/emit.c.inc @@ -1145,20 +1145,20 @@ static void gen_BLSR(DisasContext *s, CPUX86State *env, X86DecodedInsn *decode) static void gen_BZHI(DisasContext *s, CPUX86State *env, X86DecodedInsn *decode) { MemOp ot = decode->op[0].ot; - TCGv bound; + TCGv bound = tcg_constant_tl(ot == MO_64 ? 63 : 31); + TCGv zero = tcg_constant_tl(0); + TCGv mone = tcg_constant_tl(-1); - tcg_gen_ext8u_tl(s->T1, cpu_regs[s->vex_v]); - bound = tcg_constant_tl(ot == MO_64 ? 63 : 31); + tcg_gen_ext8u_tl(s->T1, s->T1); /* * Note that since we're using BMILG (in order to get O * cleared) we need to store the inverse into C. */ - tcg_gen_setcond_tl(TCG_COND_LT, cpu_cc_src, s->T1, bound); - tcg_gen_movcond_tl(TCG_COND_GT, s->T1, s->T1, bound, bound, s->T1); + tcg_gen_setcond_tl(TCG_COND_LEU, cpu_cc_src, s->T1, bound); - tcg_gen_movi_tl(s->A0, -1); - tcg_gen_shl_tl(s->A0, s->A0, s->T1); + tcg_gen_shl_tl(s->A0, mone, s->T1); + tcg_gen_movcond_tl(TCG_COND_LEU, s->A0, s->T1, bound, s->A0, zero); tcg_gen_andc_tl(s->T0, s->T0, s->A0); gen_op_update1_cc(s); diff --git a/tests/tcg/i386/test-i386-bmi2.c b/tests/tcg/i386/test-i386-bmi2.c index 982d4abda4..0244df7987 100644 --- a/tests/tcg/i386/test-i386-bmi2.c +++ b/tests/tcg/i386/test-i386-bmi2.c @@ -123,6 +123,9 @@ int main(int argc, char *argv[]) { result = bzhiq(mask, 0x1f); assert(result == (mask & ~(-1 << 30))); + result = bzhiq(mask, 0x40); + assert(result == mask); + result = rorxq(0x2132435465768798, 8); assert(result == 0x9821324354657687); From 856a67cadea901221c69fb4251c038389a5d4571 Mon Sep 17 00:00:00 2001 From: Paolo Bonzini Date: Tue, 10 Jan 2023 17:36:33 +0100 Subject: [PATCH 025/174] block/iscsi: fix double-free on BUSY or similar statuses Commit 8c460269aa77 ("iscsi: base all handling of check condition on scsi_sense_to_errno", 2019-07-15) removed a "goto out" so that the same coroutine is re-entered twice; once from iscsi_co_generic_cb, once from the timer callback iscsi_retry_timer_expired. This can cause a crash. Resolves: https://gitlab.com/qemu-project/qemu/-/issues/1378 Reported-by: Grzegorz Zdanowski Signed-off-by: Paolo Bonzini (cherry picked from commit 5080152e2ef6cde7aa692e29880c62bd54acb750) Signed-off-by: Michael Tokarev --- block/iscsi.c | 1 + 1 file changed, 1 insertion(+) diff --git a/block/iscsi.c b/block/iscsi.c index a316d46d96..1bba42a71b 100644 --- a/block/iscsi.c +++ b/block/iscsi.c @@ -268,6 +268,7 @@ iscsi_co_generic_cb(struct iscsi_context *iscsi, int status, timer_mod(&iTask->retry_timer, qemu_clock_get_ms(QEMU_CLOCK_REALTIME) + retry_time); iTask->do_retry = 1; + return; } else if (status == SCSI_STATUS_CHECK_CONDITION) { int error = iscsi_translate_sense(&task->sense); if (error == EAGAIN) { From 1ca37b7ef63bbc929d7b10a4c62d65b2268c7548 Mon Sep 17 00:00:00 2001 From: Julia Suvorova Date: Thu, 23 Feb 2023 13:57:47 +0100 Subject: [PATCH 026/174] hw/smbios: fix field corruption in type 4 table Since table type 4 of SMBIOS version 2.6 is shorter than 3.0, the strings which follow immediately after the struct fields have been overwritten by unconditional filling of later fields such as core_count2. Make these fields dependent on the SMBIOS version. Fixes: 05e27d74c7 ("hw/smbios: add core_count2 to smbios table type 4") Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=2169904 Signed-off-by: Julia Suvorova Message-Id: <20230223125747.254914-1-jusual@redhat.com> Reviewed-by: Igor Mammedov Reviewed-by: Ani Sinha Reviewed-by: Igor Mammedov Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin (cherry picked from commit 60d09b8dc7dd4256d664ad680795cb1327805b2b) Signed-off-by: Michael Tokarev --- hw/smbios/smbios.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/hw/smbios/smbios.c b/hw/smbios/smbios.c index b4243de735..66a020999b 100644 --- a/hw/smbios/smbios.c +++ b/hw/smbios/smbios.c @@ -749,14 +749,16 @@ static void smbios_build_type_4_table(MachineState *ms, unsigned instance) t->core_count = (ms->smp.cores > 255) ? 0xFF : ms->smp.cores; t->core_enabled = t->core_count; - t->core_count2 = t->core_enabled2 = cpu_to_le16(ms->smp.cores); - t->thread_count = (ms->smp.threads > 255) ? 0xFF : ms->smp.threads; - t->thread_count2 = cpu_to_le16(ms->smp.threads); t->processor_characteristics = cpu_to_le16(0x02); /* Unknown */ t->processor_family2 = cpu_to_le16(0x01); /* Other */ + if (tbl_len == SMBIOS_TYPE_4_LEN_V30) { + t->core_count2 = t->core_enabled2 = cpu_to_le16(ms->smp.cores); + t->thread_count2 = cpu_to_le16(ms->smp.threads); + } + SMBIOS_BUILD_TABLE_POST; smbios_type4_count++; } From 538c8180c31bd18692bc7aae970e3c646d327477 Mon Sep 17 00:00:00 2001 From: "Michael S. Tsirkin" Date: Wed, 8 Feb 2023 15:55:38 -0500 Subject: [PATCH 027/174] Revert "x86: do not re-randomize RNG seed on snapshot load" MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit 14b29fea742034186403914b4d013d0e83f19e78. Signed-off-by: Michael S. Tsirkin Fixes: 14b29fea74 ("x86: do not re-randomize RNG seed on snapshot load") Tested-by: Nathan Chancellor Tested-by: Dov Murik Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Reviewed-by: Daniel P. Berrangé (cherry picked from commit ef82d893de6d5bc0023026e636eae0f9a3e319dd) Signed-off-by: Michael Tokarev --- hw/i386/x86.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hw/i386/x86.c b/hw/i386/x86.c index 78cc131926..7984f65352 100644 --- a/hw/i386/x86.c +++ b/hw/i386/x86.c @@ -1115,7 +1115,7 @@ void x86_load_linux(X86MachineState *x86ms, setup_data->type = cpu_to_le32(SETUP_RNG_SEED); setup_data->len = cpu_to_le32(RNG_SEED_LENGTH); qemu_guest_getrandom_nofail(setup_data->data, RNG_SEED_LENGTH); - qemu_register_reset_nosnapshotload(reset_rng_seed, setup_data); + qemu_register_reset(reset_rng_seed, setup_data); fw_cfg_add_bytes_callback(fw_cfg, FW_CFG_KERNEL_DATA, reset_rng_seed, NULL, setup_data, kernel, kernel_size, true); } else { From 851de2751fa9b60a57d16367b9f20178bb32cc79 Mon Sep 17 00:00:00 2001 From: "Michael S. Tsirkin" Date: Wed, 8 Feb 2023 15:55:39 -0500 Subject: [PATCH 028/174] Revert "x86: re-initialize RNG seed when selecting kernel" MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit cc63374a5a7c240b7d3be734ef589dabbefc7527. Fixes: cc63374a5a ("x86: re-initialize RNG seed when selecting kernel") Signed-off-by: Michael S. Tsirkin Tested-by: Nathan Chancellor Tested-by: Dov Murik Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Reviewed-by: Daniel P. Berrangé (cherry picked from commit b4bfa0a31d86caf89223e10e701c5b00df369b37) Signed-off-by: Michael Tokarev --- hw/i386/x86.c | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/hw/i386/x86.c b/hw/i386/x86.c index 7984f65352..e1a5f244a9 100644 --- a/hw/i386/x86.c +++ b/hw/i386/x86.c @@ -1116,14 +1116,11 @@ void x86_load_linux(X86MachineState *x86ms, setup_data->len = cpu_to_le32(RNG_SEED_LENGTH); qemu_guest_getrandom_nofail(setup_data->data, RNG_SEED_LENGTH); qemu_register_reset(reset_rng_seed, setup_data); - fw_cfg_add_bytes_callback(fw_cfg, FW_CFG_KERNEL_DATA, reset_rng_seed, NULL, - setup_data, kernel, kernel_size, true); - } else { - fw_cfg_add_bytes(fw_cfg, FW_CFG_KERNEL_DATA, kernel, kernel_size); } fw_cfg_add_i32(fw_cfg, FW_CFG_KERNEL_ADDR, prot_addr); fw_cfg_add_i32(fw_cfg, FW_CFG_KERNEL_SIZE, kernel_size); + fw_cfg_add_bytes(fw_cfg, FW_CFG_KERNEL_DATA, kernel, kernel_size); sev_load_ctx.kernel_data = (char *)kernel; sev_load_ctx.kernel_size = kernel_size; From 8faaaf1bcdd1864ee2000135217ea8fc1e293347 Mon Sep 17 00:00:00 2001 From: "Michael S. Tsirkin" Date: Wed, 8 Feb 2023 15:55:40 -0500 Subject: [PATCH 029/174] Revert "x86: reinitialize RNG seed on system reboot" MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit 763a2828bf313ed55878b09759dc435355035f2e. Fixes: 763a2828bf ("x86: reinitialize RNG seed on system reboot") Signed-off-by: Michael S. Tsirkin Tested-by: Nathan Chancellor Tested-by: Dov Murik Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Reviewed-by: Daniel P. Berrangé (cherry picked from commit fdc27ced04160904af1f290b561eded73abb8f1d) Signed-off-by: Michael Tokarev --- hw/i386/x86.c | 7 ------- 1 file changed, 7 deletions(-) diff --git a/hw/i386/x86.c b/hw/i386/x86.c index e1a5f244a9..32f37ab7c2 100644 --- a/hw/i386/x86.c +++ b/hw/i386/x86.c @@ -787,12 +787,6 @@ static void reset_setup_data(void *opaque) stq_p(fixup->pos, fixup->orig_val); } -static void reset_rng_seed(void *opaque) -{ - SetupData *setup_data = opaque; - qemu_guest_getrandom_nofail(setup_data->data, le32_to_cpu(setup_data->len)); -} - void x86_load_linux(X86MachineState *x86ms, FWCfgState *fw_cfg, int acpi_data_size, @@ -1115,7 +1109,6 @@ void x86_load_linux(X86MachineState *x86ms, setup_data->type = cpu_to_le32(SETUP_RNG_SEED); setup_data->len = cpu_to_le32(RNG_SEED_LENGTH); qemu_guest_getrandom_nofail(setup_data->data, RNG_SEED_LENGTH); - qemu_register_reset(reset_rng_seed, setup_data); } fw_cfg_add_i32(fw_cfg, FW_CFG_KERNEL_ADDR, prot_addr); From 814c0b185dbc55fe73d1887aac791b25f4e499d4 Mon Sep 17 00:00:00 2001 From: "Michael S. Tsirkin" Date: Wed, 8 Feb 2023 15:55:41 -0500 Subject: [PATCH 030/174] Revert "x86: use typedef for SetupData struct" MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit eebb38a5633a77f5fa79d6486d5b2fcf8fbe3c07. Fixes: eebb38a563 ("x86: use typedef for SetupData struct") Signed-off-by: Michael S. Tsirkin Tested-by: Nathan Chancellor Tested-by: Dov Murik Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Reviewed-by: Daniel P. Berrangé (cherry picked from commit ea96a784773259d469f3f2465f09e04eabb80a66) Signed-off-by: Michael Tokarev --- hw/i386/x86.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/hw/i386/x86.c b/hw/i386/x86.c index 32f37ab7c2..76b12108b4 100644 --- a/hw/i386/x86.c +++ b/hw/i386/x86.c @@ -657,12 +657,12 @@ DeviceState *ioapic_init_secondary(GSIState *gsi_state) return dev; } -typedef struct SetupData { +struct setup_data { uint64_t next; uint32_t type; uint32_t len; uint8_t data[]; -} __attribute__((packed)) SetupData; +} __attribute__((packed)); /* @@ -803,7 +803,7 @@ void x86_load_linux(X86MachineState *x86ms, FILE *f; char *vmode; MachineState *machine = MACHINE(x86ms); - SetupData *setup_data; + struct setup_data *setup_data; const char *kernel_filename = machine->kernel_filename; const char *initrd_filename = machine->initrd_filename; const char *dtb_filename = machine->dtb; @@ -1086,11 +1086,11 @@ void x86_load_linux(X86MachineState *x86ms, } setup_data_offset = QEMU_ALIGN_UP(kernel_size, 16); - kernel_size = setup_data_offset + sizeof(SetupData) + dtb_size; + kernel_size = setup_data_offset + sizeof(struct setup_data) + dtb_size; kernel = g_realloc(kernel, kernel_size); - setup_data = (SetupData *)(kernel + setup_data_offset); + setup_data = (struct setup_data *)(kernel + setup_data_offset); setup_data->next = cpu_to_le64(first_setup_data); first_setup_data = prot_addr + setup_data_offset; setup_data->type = cpu_to_le32(SETUP_DTB); @@ -1101,9 +1101,9 @@ void x86_load_linux(X86MachineState *x86ms, if (!legacy_no_rng_seed) { setup_data_offset = QEMU_ALIGN_UP(kernel_size, 16); - kernel_size = setup_data_offset + sizeof(SetupData) + RNG_SEED_LENGTH; + kernel_size = setup_data_offset + sizeof(struct setup_data) + RNG_SEED_LENGTH; kernel = g_realloc(kernel, kernel_size); - setup_data = (SetupData *)(kernel + setup_data_offset); + setup_data = (struct setup_data *)(kernel + setup_data_offset); setup_data->next = cpu_to_le64(first_setup_data); first_setup_data = prot_addr + setup_data_offset; setup_data->type = cpu_to_le32(SETUP_RNG_SEED); From 99fb11df6f69a10b8b1be0b3bc2bb08e6bbd84b6 Mon Sep 17 00:00:00 2001 From: "Michael S. Tsirkin" Date: Wed, 8 Feb 2023 16:04:40 -0500 Subject: [PATCH 031/174] Revert "x86: return modified setup_data only if read as memory, not as file" MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit e935b735085dfa61d8e6d276b6f9e7687796a3c7. Fixes: e935b73508 ("x86: return modified setup_data only if read as memory, not as file") Signed-off-by: Michael S. Tsirkin Tested-by: Nathan Chancellor Tested-by: Dov Murik Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Reviewed-by: Daniel P. Berrangé (cherry picked from commit ae80d81cfa865cbe443543679e013e7fa5fcd12c) Signed-off-by: Michael Tokarev --- hw/i386/x86.c | 46 +++++++++------------------------------ hw/nvram/fw_cfg.c | 12 +++++----- include/hw/nvram/fw_cfg.h | 22 ------------------- 3 files changed, 16 insertions(+), 64 deletions(-) diff --git a/hw/i386/x86.c b/hw/i386/x86.c index 76b12108b4..4831193c86 100644 --- a/hw/i386/x86.c +++ b/hw/i386/x86.c @@ -37,7 +37,6 @@ #include "sysemu/whpx.h" #include "sysemu/numa.h" #include "sysemu/replay.h" -#include "sysemu/reset.h" #include "sysemu/sysemu.h" #include "sysemu/cpu-timers.h" #include "sysemu/xen.h" @@ -769,24 +768,6 @@ static bool load_elfboot(const char *kernel_filename, return true; } -typedef struct SetupDataFixup { - void *pos; - hwaddr orig_val, new_val; - uint32_t addr; -} SetupDataFixup; - -static void fixup_setup_data(void *opaque) -{ - SetupDataFixup *fixup = opaque; - stq_p(fixup->pos, fixup->new_val); -} - -static void reset_setup_data(void *opaque) -{ - SetupDataFixup *fixup = opaque; - stq_p(fixup->pos, fixup->orig_val); -} - void x86_load_linux(X86MachineState *x86ms, FWCfgState *fw_cfg, int acpi_data_size, @@ -1111,11 +1092,8 @@ void x86_load_linux(X86MachineState *x86ms, qemu_guest_getrandom_nofail(setup_data->data, RNG_SEED_LENGTH); } - fw_cfg_add_i32(fw_cfg, FW_CFG_KERNEL_ADDR, prot_addr); - fw_cfg_add_i32(fw_cfg, FW_CFG_KERNEL_SIZE, kernel_size); - fw_cfg_add_bytes(fw_cfg, FW_CFG_KERNEL_DATA, kernel, kernel_size); - sev_load_ctx.kernel_data = (char *)kernel; - sev_load_ctx.kernel_size = kernel_size; + /* Offset 0x250 is a pointer to the first setup_data link. */ + stq_p(header + 0x250, first_setup_data); /* * If we're starting an encrypted VM, it will be OVMF based, which uses the @@ -1125,20 +1103,16 @@ void x86_load_linux(X86MachineState *x86ms, * file the user passed in. */ if (!sev_enabled()) { - SetupDataFixup *fixup = g_malloc(sizeof(*fixup)); - memcpy(setup, header, MIN(sizeof(header), setup_size)); - /* Offset 0x250 is a pointer to the first setup_data link. */ - fixup->pos = setup + 0x250; - fixup->orig_val = ldq_p(fixup->pos); - fixup->new_val = first_setup_data; - fixup->addr = cpu_to_le32(real_addr); - fw_cfg_add_bytes_callback(fw_cfg, FW_CFG_SETUP_ADDR, fixup_setup_data, NULL, - fixup, &fixup->addr, sizeof(fixup->addr), true); - qemu_register_reset(reset_setup_data, fixup); - } else { - fw_cfg_add_i32(fw_cfg, FW_CFG_SETUP_ADDR, real_addr); } + + fw_cfg_add_i32(fw_cfg, FW_CFG_KERNEL_ADDR, prot_addr); + fw_cfg_add_i32(fw_cfg, FW_CFG_KERNEL_SIZE, kernel_size); + fw_cfg_add_bytes(fw_cfg, FW_CFG_KERNEL_DATA, kernel, kernel_size); + sev_load_ctx.kernel_data = (char *)kernel; + sev_load_ctx.kernel_size = kernel_size; + + fw_cfg_add_i32(fw_cfg, FW_CFG_SETUP_ADDR, real_addr); fw_cfg_add_i32(fw_cfg, FW_CFG_SETUP_SIZE, setup_size); fw_cfg_add_bytes(fw_cfg, FW_CFG_SETUP_DATA, setup, setup_size); sev_load_ctx.setup_data = (char *)setup; diff --git a/hw/nvram/fw_cfg.c b/hw/nvram/fw_cfg.c index 6edf5ea3e9..371a45dfe2 100644 --- a/hw/nvram/fw_cfg.c +++ b/hw/nvram/fw_cfg.c @@ -693,12 +693,12 @@ static const VMStateDescription vmstate_fw_cfg = { } }; -void fw_cfg_add_bytes_callback(FWCfgState *s, uint16_t key, - FWCfgCallback select_cb, - FWCfgWriteCallback write_cb, - void *callback_opaque, - void *data, size_t len, - bool read_only) +static void fw_cfg_add_bytes_callback(FWCfgState *s, uint16_t key, + FWCfgCallback select_cb, + FWCfgWriteCallback write_cb, + void *callback_opaque, + void *data, size_t len, + bool read_only) { int arch = !!(key & FW_CFG_ARCH_LOCAL); diff --git a/include/hw/nvram/fw_cfg.h b/include/hw/nvram/fw_cfg.h index 2e503904dc..c1f81a5f13 100644 --- a/include/hw/nvram/fw_cfg.h +++ b/include/hw/nvram/fw_cfg.h @@ -117,28 +117,6 @@ struct FWCfgMemState { */ void fw_cfg_add_bytes(FWCfgState *s, uint16_t key, void *data, size_t len); -/** - * fw_cfg_add_bytes_callback: - * @s: fw_cfg device being modified - * @key: selector key value for new fw_cfg item - * @select_cb: callback function when selecting - * @write_cb: callback function after a write - * @callback_opaque: argument to be passed into callback function - * @data: pointer to start of item data - * @len: size of item data - * @read_only: is file read only - * - * Add a new fw_cfg item, available by selecting the given key, as a raw - * "blob" of the given size. The data referenced by the starting pointer - * is only linked, NOT copied, into the data structure of the fw_cfg device. - */ -void fw_cfg_add_bytes_callback(FWCfgState *s, uint16_t key, - FWCfgCallback select_cb, - FWCfgWriteCallback write_cb, - void *callback_opaque, - void *data, size_t len, - bool read_only); - /** * fw_cfg_add_string: * @s: fw_cfg device being modified From b3f36e52ac1d0fa47007c0b33dfd63c809afc7fd Mon Sep 17 00:00:00 2001 From: "Michael S. Tsirkin" Date: Wed, 8 Feb 2023 16:05:35 -0500 Subject: [PATCH 032/174] Revert "hw/i386: pass RNG seed via setup_data entry" MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit 67f7e426e53833a5db75b0d813e8d537b8a75bd2. Additionally to the automatic revert, I went over the code and dropped all mentions of legacy_no_rng_seed manually, effectively reverting a combination of 2 additional commits: commit ffe2d2382e5f1aae1abc4081af407905ef380311 Author: Jason A. Donenfeld Date: Wed Sep 21 11:31:34 2022 +0200 x86: re-enable rng seeding via SetupData commit 3824e25db1a84fadc50b88dfbe27047aa2f7f85d Author: Gerd Hoffmann Date: Wed Aug 17 10:39:40 2022 +0200 x86: disable rng seeding via setup_data Fixes: 67f7e426e5 ("hw/i386: pass RNG seed via setup_data entry") Signed-off-by: Michael S. Tsirkin Tested-by: Nathan Chancellor Tested-by: Dov Murik Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Reviewed-by: Daniel P. Berrangé (cherry picked from commit 167f4873580d3729565044cda73c3e20997950f2) Signed-off-by: Michael Tokarev Mjt: this required manual edit for stable-7.2 --- hw/i386/microvm.c | 2 +- hw/i386/pc.c | 4 ++-- hw/i386/pc_piix.c | 2 -- hw/i386/pc_q35.c | 2 -- hw/i386/x86.c | 26 ++++---------------------- include/hw/i386/pc.h | 3 --- include/hw/i386/x86.h | 3 +-- 7 files changed, 8 insertions(+), 34 deletions(-) diff --git a/hw/i386/microvm.c b/hw/i386/microvm.c index 170a331e3f..b231ceda9a 100644 --- a/hw/i386/microvm.c +++ b/hw/i386/microvm.c @@ -330,7 +330,7 @@ static void microvm_memory_init(MicrovmMachineState *mms) rom_set_fw(fw_cfg); if (machine->kernel_filename != NULL) { - x86_load_linux(x86ms, fw_cfg, 0, true, false); + x86_load_linux(x86ms, fw_cfg, 0, true); } if (mms->option_roms) { diff --git a/hw/i386/pc.c b/hw/i386/pc.c index 546b703cb4..ec5a10534b 100644 --- a/hw/i386/pc.c +++ b/hw/i386/pc.c @@ -799,7 +799,7 @@ void xen_load_linux(PCMachineState *pcms) rom_set_fw(fw_cfg); x86_load_linux(x86ms, fw_cfg, pcmc->acpi_data_size, - pcmc->pvh_enabled, pcmc->legacy_no_rng_seed); + pcmc->pvh_enabled); for (i = 0; i < nb_option_roms; i++) { assert(!strcmp(option_rom[i].name, "linuxboot.bin") || !strcmp(option_rom[i].name, "linuxboot_dma.bin") || @@ -1119,7 +1119,7 @@ void pc_memory_init(PCMachineState *pcms, if (linux_boot) { x86_load_linux(x86ms, fw_cfg, pcmc->acpi_data_size, - pcmc->pvh_enabled, pcmc->legacy_no_rng_seed); + pcmc->pvh_enabled); } for (i = 0; i < nb_option_roms; i++) { diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c index 0ad0ed1603..24616bf924 100644 --- a/hw/i386/pc_piix.c +++ b/hw/i386/pc_piix.c @@ -449,11 +449,9 @@ DEFINE_I440FX_MACHINE(v7_2, "pc-i440fx-7.2", NULL, static void pc_i440fx_7_1_machine_options(MachineClass *m) { - PCMachineClass *pcmc = PC_MACHINE_CLASS(m); pc_i440fx_7_2_machine_options(m); m->alias = NULL; m->is_default = false; - pcmc->legacy_no_rng_seed = true; compat_props_add(m->compat_props, hw_compat_7_1, hw_compat_7_1_len); compat_props_add(m->compat_props, pc_compat_7_1, pc_compat_7_1_len); } diff --git a/hw/i386/pc_q35.c b/hw/i386/pc_q35.c index a496bd6e74..f522874add 100644 --- a/hw/i386/pc_q35.c +++ b/hw/i386/pc_q35.c @@ -383,10 +383,8 @@ DEFINE_Q35_MACHINE(v7_2, "pc-q35-7.2", NULL, static void pc_q35_7_1_machine_options(MachineClass *m) { - PCMachineClass *pcmc = PC_MACHINE_CLASS(m); pc_q35_7_2_machine_options(m); m->alias = NULL; - pcmc->legacy_no_rng_seed = true; compat_props_add(m->compat_props, hw_compat_7_1, hw_compat_7_1_len); compat_props_add(m->compat_props, pc_compat_7_1, pc_compat_7_1_len); } diff --git a/hw/i386/x86.c b/hw/i386/x86.c index 4831193c86..80be3032cc 100644 --- a/hw/i386/x86.c +++ b/hw/i386/x86.c @@ -26,7 +26,6 @@ #include "qemu/cutils.h" #include "qemu/units.h" #include "qemu/datadir.h" -#include "qemu/guest-random.h" #include "qapi/error.h" #include "qapi/qmp/qerror.h" #include "qapi/qapi-visit-common.h" @@ -771,8 +770,7 @@ static bool load_elfboot(const char *kernel_filename, void x86_load_linux(X86MachineState *x86ms, FWCfgState *fw_cfg, int acpi_data_size, - bool pvh_enabled, - bool legacy_no_rng_seed) + bool pvh_enabled) { bool linuxboot_dma_enabled = X86_MACHINE_GET_CLASS(x86ms)->fwcfg_dma_enabled; uint16_t protocol; @@ -780,7 +778,7 @@ void x86_load_linux(X86MachineState *x86ms, int dtb_size, setup_data_offset; uint32_t initrd_max; uint8_t header[8192], *setup, *kernel; - hwaddr real_addr, prot_addr, cmdline_addr, initrd_addr = 0, first_setup_data = 0; + hwaddr real_addr, prot_addr, cmdline_addr, initrd_addr = 0; FILE *f; char *vmode; MachineState *machine = MACHINE(x86ms); @@ -790,7 +788,6 @@ void x86_load_linux(X86MachineState *x86ms, const char *dtb_filename = machine->dtb; const char *kernel_cmdline = machine->kernel_cmdline; SevKernelLoaderContext sev_load_ctx = {}; - enum { RNG_SEED_LENGTH = 32 }; /* Align to 16 bytes as a paranoia measure */ cmdline_size = (strlen(kernel_cmdline) + 16) & ~15; @@ -1070,31 +1067,16 @@ void x86_load_linux(X86MachineState *x86ms, kernel_size = setup_data_offset + sizeof(struct setup_data) + dtb_size; kernel = g_realloc(kernel, kernel_size); + stq_p(header + 0x250, prot_addr + setup_data_offset); setup_data = (struct setup_data *)(kernel + setup_data_offset); - setup_data->next = cpu_to_le64(first_setup_data); - first_setup_data = prot_addr + setup_data_offset; + setup_data->next = 0; setup_data->type = cpu_to_le32(SETUP_DTB); setup_data->len = cpu_to_le32(dtb_size); load_image_size(dtb_filename, setup_data->data, dtb_size); } - if (!legacy_no_rng_seed) { - setup_data_offset = QEMU_ALIGN_UP(kernel_size, 16); - kernel_size = setup_data_offset + sizeof(struct setup_data) + RNG_SEED_LENGTH; - kernel = g_realloc(kernel, kernel_size); - setup_data = (struct setup_data *)(kernel + setup_data_offset); - setup_data->next = cpu_to_le64(first_setup_data); - first_setup_data = prot_addr + setup_data_offset; - setup_data->type = cpu_to_le32(SETUP_RNG_SEED); - setup_data->len = cpu_to_le32(RNG_SEED_LENGTH); - qemu_guest_getrandom_nofail(setup_data->data, RNG_SEED_LENGTH); - } - - /* Offset 0x250 is a pointer to the first setup_data link. */ - stq_p(header + 0x250, first_setup_data); - /* * If we're starting an encrypted VM, it will be OVMF based, which uses the * efi stub for booting and doesn't require any values to be placed in the diff --git a/include/hw/i386/pc.h b/include/hw/i386/pc.h index c95333514e..0c76e82626 100644 --- a/include/hw/i386/pc.h +++ b/include/hw/i386/pc.h @@ -128,9 +128,6 @@ struct PCMachineClass { /* create kvmclock device even when KVM PV features are not exposed */ bool kvmclock_create_always; - - /* skip passing an rng seed for legacy machines */ - bool legacy_no_rng_seed; }; #define TYPE_PC_MACHINE "generic-pc-machine" diff --git a/include/hw/i386/x86.h b/include/hw/i386/x86.h index 62fa5774f8..df82c5fd42 100644 --- a/include/hw/i386/x86.h +++ b/include/hw/i386/x86.h @@ -126,8 +126,7 @@ void x86_bios_rom_init(MachineState *ms, const char *default_firmware, void x86_load_linux(X86MachineState *x86ms, FWCfgState *fw_cfg, int acpi_data_size, - bool pvh_enabled, - bool legacy_no_rng_seed); + bool pvh_enabled); bool x86_machine_is_smm_enabled(const X86MachineState *x86ms); bool x86_machine_is_acpi_enabled(const X86MachineState *x86ms); From fd4bf2632c8cab171949dfe07c91fbb59bf8f416 Mon Sep 17 00:00:00 2001 From: Akihiko Odaki Date: Mon, 30 Jan 2023 23:03:20 +0900 Subject: [PATCH 033/174] vhost-user-gpio: Configure vhost_dev when connecting MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit vhost_dev_cleanup(), called from vu_gpio_disconnect(), clears vhost_dev so vhost-user-gpio must set the members of vhost_dev each time connecting. do_vhost_user_cleanup() should also acquire the pointer to vqs directly from VHostUserGPIO instead of referring to vhost_dev as it can be called after vhost_dev_cleanup(). Fixes: 27ba7b027f ("hw/virtio: add boilerplate for vhost-user-gpio device") Signed-off-by: Akihiko Odaki Message-Id: <20230130140320.77999-1-akihiko.odaki@daynix.com> Reviewed-by: Viresh Kumar Reviewed-by: Alex Bennée Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin (cherry picked from commit daae36c13abc73cf1055abc2d33cb71cc5d34310) Signed-off-by: Michael Tokarev --- hw/virtio/vhost-user-gpio.c | 10 ++++++---- include/hw/virtio/vhost-user-gpio.h | 2 +- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/hw/virtio/vhost-user-gpio.c b/hw/virtio/vhost-user-gpio.c index b7b82a1099..97145376eb 100644 --- a/hw/virtio/vhost-user-gpio.c +++ b/hw/virtio/vhost-user-gpio.c @@ -16,6 +16,7 @@ #include "trace.h" #define REALIZE_CONNECTION_RETRIES 3 +#define VHOST_NVQS 2 /* Features required from VirtIO */ static const int feature_bits[] = { @@ -198,8 +199,7 @@ static void do_vhost_user_cleanup(VirtIODevice *vdev, VHostUserGPIO *gpio) { virtio_delete_queue(gpio->command_vq); virtio_delete_queue(gpio->interrupt_vq); - g_free(gpio->vhost_dev.vqs); - gpio->vhost_dev.vqs = NULL; + g_free(gpio->vhost_vqs); virtio_cleanup(vdev); vhost_user_cleanup(&gpio->vhost_user); } @@ -219,6 +219,9 @@ static int vu_gpio_connect(DeviceState *dev, Error **errp) vhost_dev_set_config_notifier(vhost_dev, &gpio_ops); gpio->vhost_user.supports_config = true; + gpio->vhost_dev.nvqs = VHOST_NVQS; + gpio->vhost_dev.vqs = gpio->vhost_vqs; + ret = vhost_dev_init(vhost_dev, &gpio->vhost_user, VHOST_BACKEND_TYPE_USER, 0, errp); if (ret < 0) { @@ -337,10 +340,9 @@ static void vu_gpio_device_realize(DeviceState *dev, Error **errp) virtio_init(vdev, VIRTIO_ID_GPIO, sizeof(gpio->config)); - gpio->vhost_dev.nvqs = 2; gpio->command_vq = virtio_add_queue(vdev, 256, vu_gpio_handle_output); gpio->interrupt_vq = virtio_add_queue(vdev, 256, vu_gpio_handle_output); - gpio->vhost_dev.vqs = g_new0(struct vhost_virtqueue, gpio->vhost_dev.nvqs); + gpio->vhost_vqs = g_new0(struct vhost_virtqueue, VHOST_NVQS); gpio->connected = false; diff --git a/include/hw/virtio/vhost-user-gpio.h b/include/hw/virtio/vhost-user-gpio.h index a9305c5e6c..a9d3f9b049 100644 --- a/include/hw/virtio/vhost-user-gpio.h +++ b/include/hw/virtio/vhost-user-gpio.h @@ -23,7 +23,7 @@ struct VHostUserGPIO { VirtIODevice parent_obj; CharBackend chardev; struct virtio_gpio_config config; - struct vhost_virtqueue *vhost_vq; + struct vhost_virtqueue *vhost_vqs; struct vhost_dev vhost_dev; VhostUserState vhost_user; VirtQueue *command_vq; From b5be595c62ea6cfe36d73a29e274b78bca704c81 Mon Sep 17 00:00:00 2001 From: Akihiko Odaki Date: Mon, 30 Jan 2023 23:04:35 +0900 Subject: [PATCH 034/174] vhost-user-i2c: Back up vqs before cleaning up vhost_dev vhost_dev_cleanup() clears vhost_dev so back up its vqs member to free the memory pointed by the member. Fixes: 7221d3b634 ("hw/virtio: add boilerplate for vhost-user-i2c device") Signed-off-by: Akihiko Odaki Message-Id: <20230130140435.78049-1-akihiko.odaki@daynix.com> Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin (cherry picked from commit 0126793bee853e7c134627f51d2de5428a612e99) Signed-off-by: Michael Tokarev --- hw/virtio/vhost-user-i2c.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/hw/virtio/vhost-user-i2c.c b/hw/virtio/vhost-user-i2c.c index dc5c828ba6..60eaf0d95b 100644 --- a/hw/virtio/vhost-user-i2c.c +++ b/hw/virtio/vhost-user-i2c.c @@ -143,8 +143,6 @@ static void do_vhost_user_cleanup(VirtIODevice *vdev, VHostUserI2C *i2c) vhost_user_cleanup(&i2c->vhost_user); virtio_delete_queue(i2c->vq); virtio_cleanup(vdev); - g_free(i2c->vhost_dev.vqs); - i2c->vhost_dev.vqs = NULL; } static int vu_i2c_connect(DeviceState *dev) @@ -228,6 +226,7 @@ static void vu_i2c_device_realize(DeviceState *dev, Error **errp) ret = vhost_dev_init(&i2c->vhost_dev, &i2c->vhost_user, VHOST_BACKEND_TYPE_USER, 0, errp); if (ret < 0) { + g_free(i2c->vhost_dev.vqs); do_vhost_user_cleanup(vdev, i2c); } @@ -239,10 +238,12 @@ static void vu_i2c_device_unrealize(DeviceState *dev) { VirtIODevice *vdev = VIRTIO_DEVICE(dev); VHostUserI2C *i2c = VHOST_USER_I2C(dev); + struct vhost_virtqueue *vhost_vqs = i2c->vhost_dev.vqs; /* This will stop vhost backend if appropriate. */ vu_i2c_set_status(vdev, 0); vhost_dev_cleanup(&i2c->vhost_dev); + g_free(vhost_vqs); do_vhost_user_cleanup(vdev, i2c); } From b8db116da19f39285347adc1438df200b2db61e5 Mon Sep 17 00:00:00 2001 From: Akihiko Odaki Date: Mon, 30 Jan 2023 23:05:16 +0900 Subject: [PATCH 035/174] vhost-user-rng: Back up vqs before cleaning up vhost_dev vhost_dev_cleanup() clears vhost_dev so back up its vqs member to free the memory pointed by the member. Fixes: 821d28b88f ("vhost-user-rng: Add vhost-user-rng implementation") Signed-off-by: Akihiko Odaki Message-Id: <20230130140516.78078-1-akihiko.odaki@daynix.com> Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin (cherry picked from commit f0dac71596d4b87a1a77d1f4efb6a6adb4730d7b) Signed-off-by: Michael Tokarev --- hw/virtio/vhost-user-rng.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/hw/virtio/vhost-user-rng.c b/hw/virtio/vhost-user-rng.c index 201a39e220..efc54cd3fb 100644 --- a/hw/virtio/vhost-user-rng.c +++ b/hw/virtio/vhost-user-rng.c @@ -229,6 +229,7 @@ static void vu_rng_device_realize(DeviceState *dev, Error **errp) return; vhost_dev_init_failed: + g_free(rng->vhost_dev.vqs); virtio_delete_queue(rng->req_vq); virtio_add_queue_failed: virtio_cleanup(vdev); @@ -239,12 +240,12 @@ static void vu_rng_device_unrealize(DeviceState *dev) { VirtIODevice *vdev = VIRTIO_DEVICE(dev); VHostUserRNG *rng = VHOST_USER_RNG(dev); + struct vhost_virtqueue *vhost_vqs = rng->vhost_dev.vqs; vu_rng_set_status(vdev, 0); vhost_dev_cleanup(&rng->vhost_dev); - g_free(rng->vhost_dev.vqs); - rng->vhost_dev.vqs = NULL; + g_free(vhost_vqs); virtio_delete_queue(rng->req_vq); virtio_cleanup(vdev); vhost_user_cleanup(&rng->vhost_user); From 5a1c74097e858ce67cbdf58c885de7bf1fe84abd Mon Sep 17 00:00:00 2001 From: "Dr. David Alan Gilbert" Date: Mon, 9 Jan 2023 10:58:09 +0000 Subject: [PATCH 036/174] virtio-rng-pci: fix migration compat for vectors MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fixup the migration compatibility for existing machine types so that they do not enable msi-x. Symptom: (qemu) qemu: get_pci_config_device: Bad config data: i=0x34 read: 84 device: 98 cmask: ff wmask: 0 w1cmask:0 qemu: Failed to load PCIDevice:config qemu: Failed to load virtio-rng:virtio qemu: error while loading state for instance 0x0 of device '0000:00:03.0/virtio-rng' qemu: load of migration failed: Invalid argument Note: This fix will break migration from 7.2->7.2-fixed with this patch bz: https://bugzilla.redhat.com/show_bug.cgi?id=2155749 Fixes: 9ea02e8f1 ("virtio-rng-pci: Allow setting nvectors, so we can use MSI-X") Signed-off-by: Dr. David Alan Gilbert Message-Id: <20230109105809.163975-1-dgilbert@redhat.com> Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Reviewed-by: Thomas Huth Acked-by: David Daney Fixes: 9ea02e8f1 ("virtio-rng-pci: Allow setting nvectors, so we can use MSI-X")
Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé (cherry picked from commit bad9c5a5166fd5e3a892b7b0477cf2f4bd3a959a) Signed-off-by: Michael Tokarev --- hw/core/machine.c | 1 + 1 file changed, 1 insertion(+) diff --git a/hw/core/machine.c b/hw/core/machine.c index 8d34caa31d..77a0a131d1 100644 --- a/hw/core/machine.c +++ b/hw/core/machine.c @@ -42,6 +42,7 @@ GlobalProperty hw_compat_7_1[] = { { "virtio-device", "queue_reset", "false" }, + { "virtio-rng-pci", "vectors", "0" }, }; const size_t hw_compat_7_1_len = G_N_ELEMENTS(hw_compat_7_1); From 0546b42bce213c12e41b3af40738c08a8bbef23a Mon Sep 17 00:00:00 2001 From: "Dr. David Alan Gilbert" Date: Tue, 7 Feb 2023 17:49:44 +0000 Subject: [PATCH 037/174] virtio-rng-pci: fix transitional migration compat for vectors In bad9c5a516 ("virtio-rng-pci: fix migration compat for vectors") I fixed the virtio-rng-pci migration compatibility, but it was discovered that we also need to fix the other aliases of the device for the transitional cases. Fixes: 9ea02e8f1 ('virtio-rng-pci: Allow setting nvectors, so we can use MSI-X') bz: https://bugzilla.redhat.com/show_bug.cgi?id=2162569 Signed-off-by: Dr. David Alan Gilbert Message-Id: <20230207174944.138255-1-dgilbert@redhat.com> Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin (cherry picked from commit 62bdb8871512076841f4464f7e26efdc7783f78d) Signed-off-by: Michael Tokarev --- hw/core/machine.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/hw/core/machine.c b/hw/core/machine.c index 77a0a131d1..035d078a74 100644 --- a/hw/core/machine.c +++ b/hw/core/machine.c @@ -43,6 +43,8 @@ GlobalProperty hw_compat_7_1[] = { { "virtio-device", "queue_reset", "false" }, { "virtio-rng-pci", "vectors", "0" }, + { "virtio-rng-pci-transitional", "vectors", "0" }, + { "virtio-rng-pci-non-transitional", "vectors", "0" }, }; const size_t hw_compat_7_1_len = G_N_ELEMENTS(hw_compat_7_1); From c21a2456b6d35813dfb196d9079094cc4801b2c0 Mon Sep 17 00:00:00 2001 From: Akihiko Odaki Date: Tue, 31 Jan 2023 12:00:37 +0900 Subject: [PATCH 038/174] hw/timer/hpet: Fix expiration time overflow The expiration time provided for timer_mod() can overflow if a ridiculously large value is set to the comparator register. The resulting value can represent a past time after rounded, forcing the timer to fire immediately. If the timer is configured as periodic, it will rearm the timer again, and form an endless loop. Check if the expiration value will overflow, and if it will, stop the timer instead of rearming the timer with the overflowed time. This bug was found by Alexander Bulekov when fuzzing igb, a new network device emulation: https://patchew.org/QEMU/20230129053316.1071513-1-alxndr@bu.edu/ The fixed test case is: fuzz/crash_2d7036941dcda1ad4380bb8a9174ed0c949bcefd Fixes: 16b29ae180 ("Add HPET emulation to qemu (Beth Kon)") Signed-off-by: Akihiko Odaki Acked-by: Michael S. Tsirkin Message-Id: <20230131030037.18856-1-akihiko.odaki@daynix.com> Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin (cherry picked from commit 37d2bcbc2a4e9c2e9061bec72a32c7e49b9f81ec) Signed-off-by: Michael Tokarev --- hw/timer/hpet.c | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/hw/timer/hpet.c b/hw/timer/hpet.c index 9520471be2..5f88ffdef8 100644 --- a/hw/timer/hpet.c +++ b/hw/timer/hpet.c @@ -352,6 +352,16 @@ static const VMStateDescription vmstate_hpet = { } }; +static void hpet_arm(HPETTimer *t, uint64_t ticks) +{ + if (ticks < ns_to_ticks(INT64_MAX / 2)) { + timer_mod(t->qemu_timer, + qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL) + ticks_to_ns(ticks)); + } else { + timer_del(t->qemu_timer); + } +} + /* * timer expiration callback */ @@ -374,13 +384,11 @@ static void hpet_timer(void *opaque) } } diff = hpet_calculate_diff(t, cur_tick); - timer_mod(t->qemu_timer, - qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL) + (int64_t)ticks_to_ns(diff)); + hpet_arm(t, diff); } else if (t->config & HPET_TN_32BIT && !timer_is_periodic(t)) { if (t->wrap_flag) { diff = hpet_calculate_diff(t, cur_tick); - timer_mod(t->qemu_timer, qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL) + - (int64_t)ticks_to_ns(diff)); + hpet_arm(t, diff); t->wrap_flag = 0; } } @@ -407,8 +415,7 @@ static void hpet_set_timer(HPETTimer *t) t->wrap_flag = 1; } } - timer_mod(t->qemu_timer, - qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL) + (int64_t)ticks_to_ns(diff)); + hpet_arm(t, diff); } static void hpet_del_timer(HPETTimer *t) From e2672ec498f07957f527484ab4c4d20c8cfde7d9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eugenio=20P=C3=A9rez?= Date: Thu, 9 Feb 2023 18:00:04 +0100 Subject: [PATCH 039/174] vdpa: stop all svq on device deletion MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Not stopping them leave the device in a bad state when virtio-net fronted device is unplugged with device_del monitor command. This is not triggable in regular poweroff or qemu forces shutdown because cleanup is called right after vhost_vdpa_dev_start(false). But devices hot unplug does not call vdpa device cleanups. This lead to all the vhost_vdpa devices without stop the SVQ but the last. Fix it and clean the code, making it symmetric with vhost_vdpa_svqs_start. Fixes: dff4426fa656 ("vhost: Add Shadow VirtQueue kick forwarding capabilities") Reported-by: Lei Yang Signed-off-by: Eugenio Pérez Message-Id: <20230209170004.899472-1-eperezma@redhat.com> Tested-by: Laurent Vivier Acked-by: Jason Wang (cherry picked from commit 2e1a9de96b487cf818a22d681cad8d3f5d18dcca) Signed-off-by: Michael Tokarev Mjt: this required manual edit for stable-7.2 --- hw/virtio/vhost-vdpa.c | 17 ++--------------- 1 file changed, 2 insertions(+), 15 deletions(-) diff --git a/hw/virtio/vhost-vdpa.c b/hw/virtio/vhost-vdpa.c index 7468e44b87..03c78d25d8 100644 --- a/hw/virtio/vhost-vdpa.c +++ b/hw/virtio/vhost-vdpa.c @@ -707,26 +707,11 @@ static int vhost_vdpa_get_device_id(struct vhost_dev *dev, return ret; } -static void vhost_vdpa_reset_svq(struct vhost_vdpa *v) -{ - if (!v->shadow_vqs_enabled) { - return; - } - - for (unsigned i = 0; i < v->shadow_vqs->len; ++i) { - VhostShadowVirtqueue *svq = g_ptr_array_index(v->shadow_vqs, i); - vhost_svq_stop(svq); - } -} - static int vhost_vdpa_reset_device(struct vhost_dev *dev) { - struct vhost_vdpa *v = dev->opaque; int ret; uint8_t status = 0; - vhost_vdpa_reset_svq(v); - ret = vhost_vdpa_call(dev, VHOST_VDPA_SET_STATUS, &status); trace_vhost_vdpa_reset_device(dev, status); return ret; @@ -1088,6 +1073,8 @@ static void vhost_vdpa_svqs_stop(struct vhost_dev *dev) for (unsigned i = 0; i < v->shadow_vqs->len; ++i) { VhostShadowVirtqueue *svq = g_ptr_array_index(v->shadow_vqs, i); + + vhost_svq_stop(svq); vhost_vdpa_svq_unmap_rings(dev, svq); } } From a7485cdca768b195dd062b326aa4791c3fefeffd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20L=C3=B3pez?= Date: Mon, 13 Feb 2023 09:57:47 +0100 Subject: [PATCH 040/174] vhost: avoid a potential use of an uninitialized variable in vhost_svq_poll() MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit In vhost_svq_poll(), if vhost_svq_get_buf() fails due to a device providing invalid descriptors, len is left uninitialized and returned to the caller, potentally leaking stack data or causing undefined behavior. Fix this by initializing len to 0. Found with GCC 13 and -fanalyzer (abridged): ../hw/virtio/vhost-shadow-virtqueue.c: In function ‘vhost_svq_poll’: ../hw/virtio/vhost-shadow-virtqueue.c:538:12: warning: use of uninitialized value ‘len’ [CWE-457] [-Wanalyzer-use-of-uninitialized-value] 538 | return len; | ^~~ ‘vhost_svq_poll’: events 1-4 | | 522 | size_t vhost_svq_poll(VhostShadowVirtqueue *svq) | | ^~~~~~~~~~~~~~ | | | | | (1) entry to ‘vhost_svq_poll’ |...... | 525 | uint32_t len; | | ~~~ | | | | | (2) region created on stack here | | (3) capacity: 4 bytes |...... | 528 | if (vhost_svq_more_used(svq)) { | | ~ | | | | | (4) inlined call to ‘vhost_svq_more_used’ from ‘vhost_svq_poll’ (...) | 528 | if (vhost_svq_more_used(svq)) { | | ^~~~~~~~~~~~~~~~~~~~~~~~~ | | || | | |(8) ...to here | | (7) following ‘true’ branch... |...... | 537 | vhost_svq_get_buf(svq, &len); | | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | | | | | (9) calling ‘vhost_svq_get_buf’ from ‘vhost_svq_poll’ | +--> ‘vhost_svq_get_buf’: events 10-11 | | 416 | static VirtQueueElement *vhost_svq_get_buf(VhostShadowVirtqueue *svq, | | ^~~~~~~~~~~~~~~~~ | | | | | (10) entry to ‘vhost_svq_get_buf’ |...... | 423 | if (!vhost_svq_more_used(svq)) { | | ~ | | | | | (11) inlined call to ‘vhost_svq_more_used’ from ‘vhost_svq_get_buf’ | (...) | ‘vhost_svq_get_buf’: event 14 | | 423 | if (!vhost_svq_more_used(svq)) { | | ^ | | | | | (14) following ‘false’ branch... | ‘vhost_svq_get_buf’: event 15 | |cc1: | (15): ...to here | <------+ | ‘vhost_svq_poll’: events 16-17 | | 537 | vhost_svq_get_buf(svq, &len); | | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~ | | | | | (16) returning to ‘vhost_svq_poll’ from ‘vhost_svq_get_buf’ | 538 | return len; | | ~~~ | | | | | (17) use of uninitialized value ‘len’ here Note by Laurent Vivier : The return value is only used to detect an error: vhost_svq_poll vhost_vdpa_net_cvq_add vhost_vdpa_net_load_cmd vhost_vdpa_net_load_mac -> a negative return is only used to detect error vhost_vdpa_net_load_mq -> a negative return is only used to detect error vhost_vdpa_net_handle_ctrl_avail -> a negative return is only used to detect error Fixes: d368c0b052ad ("vhost: Do not depend on !NULL VirtQueueElement on vhost_svq_flush") Signed-off-by: Carlos López Message-Id: <20230213085747.19956-1-clopez@suse.de> Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin (cherry picked from commit e4dd39c699b7d63a06f686ec06ded8adbee989c1) Signed-off-by: Michael Tokarev --- hw/virtio/vhost-shadow-virtqueue.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hw/virtio/vhost-shadow-virtqueue.c b/hw/virtio/vhost-shadow-virtqueue.c index 5bd14cad96..a723073747 100644 --- a/hw/virtio/vhost-shadow-virtqueue.c +++ b/hw/virtio/vhost-shadow-virtqueue.c @@ -522,7 +522,7 @@ static void vhost_svq_flush(VhostShadowVirtqueue *svq, size_t vhost_svq_poll(VhostShadowVirtqueue *svq) { int64_t start_us = g_get_monotonic_time(); - uint32_t len; + uint32_t len = 0; do { if (vhost_svq_more_used(svq)) { From 6cf13d9d0135ed7183cd43b48193afd179f395e2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20L=C3=B3pez?= Date: Fri, 10 Feb 2023 12:25:15 +0100 Subject: [PATCH 041/174] libvhost-user: check for NULL when allocating a virtqueue element MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Check the return value for malloc(), avoiding a NULL pointer dereference, and propagate error in function callers. Found with GCC 13 and -fanalyzer: ../subprojects/libvhost-user/libvhost-user.c: In function ‘virtqueue_alloc_element’: ../subprojects/libvhost-user/libvhost-user.c:2556:19: error: dereference of possibly-NULL ‘elem’ [CWE-690] [-Werror=analyzer-possible-null-dereference] 2556 | elem->out_num = out_num; | ~~~~~~~~~~~~~~^~~~~~~~~ ‘virtqueue_alloc_element’: event 1 | | 2554 | assert(sz >= sizeof(VuVirtqElement)); | | ^~~~~~ | | | | | (1) following ‘true’ branch (when ‘sz > 31’)... | ‘virtqueue_alloc_element’: events 2-4 | | 2555 | elem = malloc(out_sg_end); | | ^~~~ ~~~~~~~~~~~~~~~~~~ | | | | | | | (3) this call could return NULL | | (2) ...to here | 2556 | elem->out_num = out_num; | | ~~~~~~~~~~~~~~~~~~~~~~~ | | | | | (4) ‘elem’ could be NULL: unchecked value from (3) | Signed-off-by: Carlos López Message-Id: <20230210112514.16858-1-clopez@suse.de> Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin (cherry picked from commit 9c1916057a8b14411116106e5a5c0c33d551cfeb) Signed-off-by: Michael Tokarev --- subprojects/libvhost-user/libvhost-user.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/subprojects/libvhost-user/libvhost-user.c b/subprojects/libvhost-user/libvhost-user.c index d6ee6e7d91..b17e82b2b0 100644 --- a/subprojects/libvhost-user/libvhost-user.c +++ b/subprojects/libvhost-user/libvhost-user.c @@ -2547,6 +2547,10 @@ virtqueue_alloc_element(size_t sz, assert(sz >= sizeof(VuVirtqElement)); elem = malloc(out_sg_end); + if (!elem) { + DPRINT("%s: failed to malloc virtqueue element\n", __func__); + return NULL; + } elem->out_num = out_num; elem->in_num = in_num; elem->in_sg = (void *)elem + in_sg_ofs; @@ -2633,6 +2637,9 @@ vu_queue_map_desc(VuDev *dev, VuVirtq *vq, unsigned int idx, size_t sz) /* Now copy what we have collected and mapped */ elem = virtqueue_alloc_element(sz, out_num, in_num); + if (!elem) { + return NULL; + } elem->index = idx; for (i = 0; i < out_num; i++) { elem->out_sg[i] = iov[i]; From 2529bbf4a70d591c02e7a94a15d1e3dd4dbcfae1 Mon Sep 17 00:00:00 2001 From: Yajun Wu Date: Tue, 14 Feb 2023 10:14:30 +0800 Subject: [PATCH 042/174] chardev/char-socket: set s->listener = NULL in char_socket_finalize MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit After live migration with virtio block device, qemu crash at: #0 0x000055914f46f795 in object_dynamic_cast_assert (obj=0x559151b7b090, typename=0x55914f80fbc4 "qio-channel", file=0x55914f80fb90 "/images/testvfe/sw/qemu.gerrit/include/io/channel.h", line=30, func=0x55914f80fcb8 <__func__.17257> "QIO_CHANNEL") at ../qom/object.c:872 #1 0x000055914f480d68 in QIO_CHANNEL (obj=0x559151b7b090) at /images/testvfe/sw/qemu.gerrit/include/io/channel.h:29 #2 0x000055914f4812f8 in qio_net_listener_set_client_func_full (listener=0x559151b7a720, func=0x55914f580b97 , data=0x5591519f4ea0, notify=0x0, context=0x0) at ../io/net-listener.c:166 #3 0x000055914f580059 in tcp_chr_update_read_handler (chr=0x5591519f4ea0) at ../chardev/char-socket.c:637 #4 0x000055914f583dca in qemu_chr_be_update_read_handlers (s=0x5591519f4ea0, context=0x0) at ../chardev/char.c:226 #5 0x000055914f57b7c9 in qemu_chr_fe_set_handlers_full (b=0x559152bf23a0, fd_can_read=0x0, fd_read=0x0, fd_event=0x0, be_change=0x0, opaque=0x0, context=0x0, set_open=false, sync_state=true) at ../chardev/char-fe.c:279 #6 0x000055914f57b86d in qemu_chr_fe_set_handlers (b=0x559152bf23a0, fd_can_read=0x0, fd_read=0x0, fd_event=0x0, be_change=0x0, opaque=0x0, context=0x0, set_open=false) at ../chardev/char-fe.c:304 #7 0x000055914f378caf in vhost_user_async_close (d=0x559152bf21a0, chardev=0x559152bf23a0, vhost=0x559152bf2420, cb=0x55914f2fb8c1 ) at ../hw/virtio/vhost-user.c:2725 #8 0x000055914f2fba40 in vhost_user_blk_event (opaque=0x559152bf21a0, event=CHR_EVENT_CLOSED) at ../hw/block/vhost-user-blk.c:395 #9 0x000055914f58388c in chr_be_event (s=0x5591519f4ea0, event=CHR_EVENT_CLOSED) at ../chardev/char.c:61 #10 0x000055914f583905 in qemu_chr_be_event (s=0x5591519f4ea0, event=CHR_EVENT_CLOSED) at ../chardev/char.c:81 #11 0x000055914f581275 in char_socket_finalize (obj=0x5591519f4ea0) at ../chardev/char-socket.c:1083 #12 0x000055914f46f073 in object_deinit (obj=0x5591519f4ea0, type=0x5591519055c0) at ../qom/object.c:680 #13 0x000055914f46f0e5 in object_finalize (data=0x5591519f4ea0) at ../qom/object.c:694 #14 0x000055914f46ff06 in object_unref (objptr=0x5591519f4ea0) at ../qom/object.c:1202 #15 0x000055914f4715a4 in object_finalize_child_property (obj=0x559151b76c50, name=0x559151b7b250 "char3", opaque=0x5591519f4ea0) at ../qom/object.c:1747 #16 0x000055914f46ee86 in object_property_del_all (obj=0x559151b76c50) at ../qom/object.c:632 #17 0x000055914f46f0d2 in object_finalize (data=0x559151b76c50) at ../qom/object.c:693 #18 0x000055914f46ff06 in object_unref (objptr=0x559151b76c50) at ../qom/object.c:1202 #19 0x000055914f4715a4 in object_finalize_child_property (obj=0x559151b6b560, name=0x559151b76630 "chardevs", opaque=0x559151b76c50) at ../qom/object.c:1747 #20 0x000055914f46ef67 in object_property_del_child (obj=0x559151b6b560, child=0x559151b76c50) at ../qom/object.c:654 #21 0x000055914f46f042 in object_unparent (obj=0x559151b76c50) at ../qom/object.c:673 #22 0x000055914f58632a in qemu_chr_cleanup () at ../chardev/char.c:1189 #23 0x000055914f16c66c in qemu_cleanup () at ../softmmu/runstate.c:830 #24 0x000055914eee7b9e in qemu_default_main () at ../softmmu/main.c:38 #25 0x000055914eee7bcc in main (argc=86, argv=0x7ffc97cb8d88) at ../softmmu/main.c:48 In char_socket_finalize after s->listener freed, event callback function vhost_user_blk_event will be called to handle CHR_EVENT_CLOSED. vhost_user_blk_event is calling qio_net_listener_set_client_func_full which is still using s->listener. Setting s->listener = NULL after object_unref(OBJECT(s->listener)) can solve this issue. Signed-off-by: Yajun Wu Acked-by: Jiri Pirko Message-Id: <20230214021430.3638579-1-yajunw@nvidia.com> Reviewed-by: Marc-André Lureau Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin (cherry picked from commit b8a7f51f59e28d5a8e0c07ed3919cc9695560ed2) Signed-off-by: Michael Tokarev --- chardev/char-socket.c | 1 + 1 file changed, 1 insertion(+) diff --git a/chardev/char-socket.c b/chardev/char-socket.c index 879564aa8a..b00efb1482 100644 --- a/chardev/char-socket.c +++ b/chardev/char-socket.c @@ -1065,6 +1065,7 @@ static void char_socket_finalize(Object *obj) qio_net_listener_set_client_func_full(s->listener, NULL, NULL, NULL, chr->gcontext); object_unref(OBJECT(s->listener)); + s->listener = NULL; } if (s->tls_creds) { object_unref(OBJECT(s->tls_creds)); From f6d602d078e3e680ec713bb28045fb8fa3d17fac Mon Sep 17 00:00:00 2001 From: Jason Wang Date: Thu, 23 Feb 2023 14:59:20 +0800 Subject: [PATCH 043/174] intel-iommu: fail MAP notifier without caching mode Without caching mode, MAP notifier won't work correctly since guest won't send IOTLB update event when it establishes new mappings in the I/O page tables. Let's fail the IOMMU notifiers early instead of misbehaving silently. Reviewed-by: Eric Auger Tested-by: Viktor Prutyanov Signed-off-by: Jason Wang Message-Id: <20230223065924.42503-2-jasowang@redhat.com> Reviewed-by: Peter Xu Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin (cherry picked from commit b8d78277c091f26fdd64f239bc8bb7e55d74cecf) Signed-off-by: Michael Tokarev --- hw/i386/intel_iommu.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/hw/i386/intel_iommu.c b/hw/i386/intel_iommu.c index a08ee85edf..9143376677 100644 --- a/hw/i386/intel_iommu.c +++ b/hw/i386/intel_iommu.c @@ -3186,6 +3186,13 @@ static int vtd_iommu_notify_flag_changed(IOMMUMemoryRegion *iommu, "Snoop Control with vhost or VFIO is not supported"); return -ENOTSUP; } + if (!s->caching_mode && (new & IOMMU_NOTIFIER_MAP)) { + error_setg_errno(errp, ENOTSUP, + "device %02x.%02x.%x requires caching mode", + pci_bus_num(vtd_as->bus), PCI_SLOT(vtd_as->devfn), + PCI_FUNC(vtd_as->devfn)); + return -ENOTSUP; + } /* Update per-address-space notifier flags */ vtd_as->notifier_flags = new; From b05232a25659ea14eb0b477c17aca9a7ce50bb64 Mon Sep 17 00:00:00 2001 From: Jason Wang Date: Thu, 23 Feb 2023 14:59:21 +0800 Subject: [PATCH 044/174] intel-iommu: fail DEVIOTLB_UNMAP without dt mode Without dt mode, device IOTLB notifier won't work since guest won't send device IOTLB invalidation descriptor in this case. Let's fail early instead of misbehaving silently. Reviewed-by: Laurent Vivier Tested-by: Laurent Vivier Tested-by: Viktor Prutyanov Buglink: https://bugzilla.redhat.com/2156876 Signed-off-by: Jason Wang Message-Id: <20230223065924.42503-3-jasowang@redhat.com> Reviewed-by: Peter Xu Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin (cherry picked from commit 09adb0e021207b60a0c51a68939b4539d98d3ef3) Signed-off-by: Michael Tokarev --- hw/i386/intel_iommu.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/hw/i386/intel_iommu.c b/hw/i386/intel_iommu.c index 9143376677..d025ef2873 100644 --- a/hw/i386/intel_iommu.c +++ b/hw/i386/intel_iommu.c @@ -3179,6 +3179,7 @@ static int vtd_iommu_notify_flag_changed(IOMMUMemoryRegion *iommu, { VTDAddressSpace *vtd_as = container_of(iommu, VTDAddressSpace, iommu); IntelIOMMUState *s = vtd_as->iommu_state; + X86IOMMUState *x86_iommu = X86_IOMMU_DEVICE(s); /* TODO: add support for VFIO and vhost users */ if (s->snoop_control) { @@ -3193,6 +3194,13 @@ static int vtd_iommu_notify_flag_changed(IOMMUMemoryRegion *iommu, PCI_FUNC(vtd_as->devfn)); return -ENOTSUP; } + if (!x86_iommu->dt_supported && (new & IOMMU_NOTIFIER_DEVIOTLB_UNMAP)) { + error_setg_errno(errp, ENOTSUP, + "device %02x.%02x.%x requires device IOTLB mode", + pci_bus_num(vtd_as->bus), PCI_SLOT(vtd_as->devfn), + PCI_FUNC(vtd_as->devfn)); + return -ENOTSUP; + } /* Update per-address-space notifier flags */ vtd_as->notifier_flags = new; From 7c8a67ed462a1089e7c3837cb94579031c6ecc6b Mon Sep 17 00:00:00 2001 From: Anton Johansson Date: Mon, 23 Jan 2023 21:14:31 +0100 Subject: [PATCH 045/174] block: Handle curl 7.55.0, 7.85.0 version changes MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 7.55.0 deprecates CURLINFO_CONTENT_LENGTH_DOWNLOAD in favour of a *_T version, which returns curl_off_t instead of a double. * 7.85.0 deprecates CURLOPT_PROTOCOLS and CURLOPT_REDIR_PROTOCOLS in favour of *_STR variants, specifying the desired protocols via a string. Resolves: https://gitlab.com/qemu-project/qemu/-/issues/1440 Signed-off-by: Anton Johansson Message-Id: <20230123201431.23118-1-anjo@rev.ng> Reviewed-by: Philippe Mathieu-Daudé Reviewed-by: Kevin Wolf Signed-off-by: Kevin Wolf (cherry picked from commit e7b8d9d038f313c2b9e601609e7d7c3ca6ad0234) Signed-off-by: Michael Tokarev --- block/curl.c | 44 +++++++++++++++++++++++++++++++++++++------- 1 file changed, 37 insertions(+), 7 deletions(-) diff --git a/block/curl.c b/block/curl.c index cba4c4cac7..0b125095e3 100644 --- a/block/curl.c +++ b/block/curl.c @@ -37,8 +37,15 @@ // #define DEBUG_VERBOSE +/* CURL 7.85.0 switches to a string based API for specifying + * the desired protocols. + */ +#if LIBCURL_VERSION_NUM >= 0x075500 +#define PROTOCOLS "HTTP,HTTPS,FTP,FTPS" +#else #define PROTOCOLS (CURLPROTO_HTTP | CURLPROTO_HTTPS | \ CURLPROTO_FTP | CURLPROTO_FTPS) +#endif #define CURL_NUM_STATES 8 #define CURL_NUM_ACB 8 @@ -509,9 +516,18 @@ static int curl_init_state(BDRVCURLState *s, CURLState *state) * obscure protocols. For example, do not allow POP3/SMTP/IMAP see * CVE-2013-0249. * - * Restricting protocols is only supported from 7.19.4 upwards. + * Restricting protocols is only supported from 7.19.4 upwards. Note: + * version 7.85.0 deprecates CURLOPT_*PROTOCOLS in favour of a string + * based CURLOPT_*PROTOCOLS_STR API. */ -#if LIBCURL_VERSION_NUM >= 0x071304 +#if LIBCURL_VERSION_NUM >= 0x075500 + if (curl_easy_setopt(state->curl, + CURLOPT_PROTOCOLS_STR, PROTOCOLS) || + curl_easy_setopt(state->curl, + CURLOPT_REDIR_PROTOCOLS_STR, PROTOCOLS)) { + goto err; + } +#elif LIBCURL_VERSION_NUM >= 0x071304 if (curl_easy_setopt(state->curl, CURLOPT_PROTOCOLS, PROTOCOLS) || curl_easy_setopt(state->curl, CURLOPT_REDIR_PROTOCOLS, PROTOCOLS)) { goto err; @@ -669,7 +685,12 @@ static int curl_open(BlockDriverState *bs, QDict *options, int flags, const char *file; const char *cookie; const char *cookie_secret; - double d; + /* CURL >= 7.55.0 uses curl_off_t for content length instead of a double */ +#if LIBCURL_VERSION_NUM >= 0x073700 + curl_off_t cl; +#else + double cl; +#endif const char *secretid; const char *protocol_delimiter; int ret; @@ -796,27 +817,36 @@ static int curl_open(BlockDriverState *bs, QDict *options, int flags, } if (curl_easy_perform(state->curl)) goto out; - if (curl_easy_getinfo(state->curl, CURLINFO_CONTENT_LENGTH_DOWNLOAD, &d)) { + /* CURL 7.55.0 deprecates CURLINFO_CONTENT_LENGTH_DOWNLOAD in favour of + * the *_T version which returns a more sensible type for content length. + */ +#if LIBCURL_VERSION_NUM >= 0x073700 + if (curl_easy_getinfo(state->curl, CURLINFO_CONTENT_LENGTH_DOWNLOAD_T, &cl)) { goto out; } +#else + if (curl_easy_getinfo(state->curl, CURLINFO_CONTENT_LENGTH_DOWNLOAD, &cl)) { + goto out; + } +#endif /* Prior CURL 7.19.4 return value of 0 could mean that the file size is not * know or the size is zero. From 7.19.4 CURL returns -1 if size is not * known and zero if it is really zero-length file. */ #if LIBCURL_VERSION_NUM >= 0x071304 - if (d < 0) { + if (cl < 0) { pstrcpy(state->errmsg, CURL_ERROR_SIZE, "Server didn't report file size."); goto out; } #else - if (d <= 0) { + if (cl <= 0) { pstrcpy(state->errmsg, CURL_ERROR_SIZE, "Unknown file size or zero-length file."); goto out; } #endif - s->len = d; + s->len = cl; if ((!strncasecmp(s->url, "http://", strlen("http://")) || !strncasecmp(s->url, "https://", strlen("https://"))) From 9d46d348f649f640b2ba0b0b160b562c8f720fc9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20Benn=C3=A9e?= Date: Wed, 21 Dec 2022 09:04:09 +0000 Subject: [PATCH 046/174] tests/tcg: fix unused variable in linux-test MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The latest hexagon compiler picks up that we never consume wcount. Given the name of the #define that rcount checks against is WCOUNT_MAX I figured the check just got missed. Signed-off-by: Alex Bennée Reviewed-by: Philippe Mathieu-Daudé Message-Id: <20221221090411.1995037-5-alex.bennee@linaro.org> (cherry picked from commit 2bc6c79417b89c3306b724577e775f03fe61fb2e) Signed-off-by: Michael Tokarev --- tests/tcg/multiarch/linux/linux-test.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/tests/tcg/multiarch/linux/linux-test.c b/tests/tcg/multiarch/linux/linux-test.c index 5a2a4f2258..64f57cb287 100644 --- a/tests/tcg/multiarch/linux/linux-test.c +++ b/tests/tcg/multiarch/linux/linux-test.c @@ -354,13 +354,17 @@ static void test_pipe(void) if (FD_ISSET(fds[0], &rfds)) { chk_error(read(fds[0], &ch, 1)); rcount++; - if (rcount >= WCOUNT_MAX) + if (rcount >= WCOUNT_MAX) { break; + } } if (FD_ISSET(fds[1], &wfds)) { ch = 'a'; chk_error(write(fds[1], &ch, 1)); wcount++; + if (wcount >= WCOUNT_MAX) { + break; + } } } } From e807a1c29f90d50ba5a26a787048451092ec0d4c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= Date: Tue, 24 Jan 2023 18:00:57 +0000 Subject: [PATCH 047/174] build-sys: fix crlf-ending C code MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit On msys2, the shader-to-C script produces bad C: ./ui/shader/texture-blit-vert.h:2:5: error: missing terminating " character [-Werror] Fix it by changing the line ending from crlf to lf, and convert the script to Python (qemu build seems perl-free after that). Signed-off-by: Marc-André Lureau Acked-by: Thomas Huth Message-Id: <20230110132700.833690-2-marcandre.lureau@redhat.com> Signed-off-by: Alex Bennée Message-Id: <20230124180127.1881110-6-alex.bennee@linaro.org> (cherry picked from commit e2c4012bc35894d60e54bd077ceaaae565d43c15) Signed-off-by: Michael Tokarev --- meson.build | 2 +- scripts/shaderinclude.pl | 16 ---------------- scripts/shaderinclude.py | 26 ++++++++++++++++++++++++++ 3 files changed, 27 insertions(+), 17 deletions(-) delete mode 100644 scripts/shaderinclude.pl create mode 100644 scripts/shaderinclude.py diff --git a/meson.build b/meson.build index 5c6b5a1c75..b88867ca9d 100644 --- a/meson.build +++ b/meson.build @@ -2777,7 +2777,7 @@ config_host_data.set('CONFIG_SLIRP', slirp.found()) genh += configure_file(output: 'config-host.h', configuration: config_host_data) hxtool = find_program('scripts/hxtool') -shaderinclude = find_program('scripts/shaderinclude.pl') +shaderinclude = find_program('scripts/shaderinclude.py') qapi_gen = find_program('scripts/qapi-gen.py') qapi_gen_depends = [ meson.current_source_dir() / 'scripts/qapi/__init__.py', meson.current_source_dir() / 'scripts/qapi/commands.py', diff --git a/scripts/shaderinclude.pl b/scripts/shaderinclude.pl deleted file mode 100644 index cd3bb40b12..0000000000 --- a/scripts/shaderinclude.pl +++ /dev/null @@ -1,16 +0,0 @@ -#!/usr/bin/env perl -use strict; -use warnings; - -my $file = shift; -open FILE, "<", $file or die "open $file: $!"; -my $name = $file; -$name =~ s|.*/||; -$name =~ s/[-.]/_/g; -print "static GLchar ${name}_src[] =\n"; -while () { - chomp; - printf " \"%s\\n\"\n", $_; -} -print " \"\\n\";\n"; -close FILE; diff --git a/scripts/shaderinclude.py b/scripts/shaderinclude.py new file mode 100644 index 0000000000..ab2aade2cd --- /dev/null +++ b/scripts/shaderinclude.py @@ -0,0 +1,26 @@ +#!/usr/bin/env python3 +# +# Copyright (C) 2023 Red Hat, Inc. +# +# SPDX-License-Identifier: GPL-2.0-or-later + +import sys +import os + + +def main(args): + file_path = args[1] + basename = os.path.basename(file_path) + varname = basename.replace('-', '_').replace('.', '_') + + with os.fdopen(sys.stdout.fileno(), "wt", closefd=False, newline='\n') as stdout: + with open(file_path, "r", encoding='utf-8') as file: + print(f'static GLchar {varname}_src[] =', file=stdout) + for line in file: + line = line.rstrip() + print(f' "{line}\\n"', file=stdout) + print(' "\\n";', file=stdout) + + +if __name__ == '__main__': + sys.exit(main(sys.argv)) From 32b8913f725aaad6cf6aa7462a9b15e350a40b1d Mon Sep 17 00:00:00 2001 From: Michael Tokarev Date: Thu, 30 Mar 2023 10:12:46 +0300 Subject: [PATCH 048/174] Update version for 7.2.1 release Signed-off-by: Michael Tokarev --- VERSION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/VERSION b/VERSION index 0ee843cc60..b26a34e470 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -7.2.0 +7.2.1 From 099e8cd9eac7924c9439d51786eda0988bd8f0b7 Mon Sep 17 00:00:00 2001 From: Markus Armbruster Date: Tue, 7 Feb 2023 08:51:11 +0100 Subject: [PATCH 049/174] qga: Drop dangling reference to QERR_QGA_LOGGING_DISABLED MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit slog()'s function comment advises to use QERR_QGA_LOGGING_DISABLED. This macro never existed. The reference got added in commit e3d4d25206a "guest agent: add guest agent RPCs/commands" along with QERR_QGA_LOGGING_FAILED, so maybe that one was meant. However, QERR_QGA_LOGGING_FAILED was never actually used, and was removed in commit d73f0beadb5 "qerror.h: Remove unused error classes". Drop the dangling reference. Signed-off-by: Markus Armbruster Message-Id: <20230207075115.1525-9-armbru@redhat.com> Reviewed-by: Philippe Mathieu-Daudé Reviewed-by: Juan Quintela Reviewed-by: Konstantin Kostiuk (cherry picked from commit c40233593ed5732de1676412527e42431e33e62c) Signed-off-by: Michael Tokarev --- qga/commands.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/qga/commands.c b/qga/commands.c index 7ff551d092..6cf978322e 100644 --- a/qga/commands.c +++ b/qga/commands.c @@ -32,9 +32,8 @@ #define GUEST_FILE_READ_COUNT_MAX (48 * MiB) /* Note: in some situations, like with the fsfreeze, logging may be - * temporarilly disabled. if it is necessary that a command be able - * to log for accounting purposes, check ga_logging_enabled() beforehand, - * and use the QERR_QGA_LOGGING_DISABLED to generate an error + * temporarily disabled. if it is necessary that a command be able + * to log for accounting purposes, check ga_logging_enabled() beforehand. */ void slog(const gchar *fmt, ...) { From 5bfbcc3faa43e59e09e9f96ac7eebd98e05ea8e3 Mon Sep 17 00:00:00 2001 From: Konstantin Kostiuk Date: Fri, 3 Mar 2023 21:20:07 +0200 Subject: [PATCH 050/174] qga/win32: Remove change action from MSI installer Remove the 'change' button from "Programs and Features" because it does not checks if a user is an admin or not. The installer has no components to choose from and always installs everything. So the 'change' button is not obviously needed but can create a security issue. resolves: https://bugzilla.redhat.com/show_bug.cgi?id=2167423 fixes: CVE-2023-0664 (part 1 of 2) Signed-off-by: Konstantin Kostiuk Reviewed-by: Yan Vugenfirer Reported-by: Brian Wiltse (cherry picked from commit 88288c2a51faa7c795f053fc8b31b1c16ff804c5) Signed-off-by: Michael Tokarev --- qga/installer/qemu-ga.wxs | 1 + 1 file changed, 1 insertion(+) diff --git a/qga/installer/qemu-ga.wxs b/qga/installer/qemu-ga.wxs index 813d1c6ca6..3442383627 100644 --- a/qga/installer/qemu-ga.wxs +++ b/qga/installer/qemu-ga.wxs @@ -31,6 +31,7 @@ /> + From b209cc4556d56938fa8a933670b8fb98c036af37 Mon Sep 17 00:00:00 2001 From: Fiona Ebner Date: Thu, 25 Aug 2022 11:29:10 +0200 Subject: [PATCH 051/174] hw/net/vmxnet3: allow VMXNET3_MAX_MTU itself as a value Currently, VMXNET3_MAX_MTU itself (being 9000) is not considered a valid value for the MTU, but a guest running ESXi 7.0 might try to set it and fail the assert [0]. In the Linux kernel, dev->max_mtu itself is a valid value for the MTU and for the vmxnet3 driver it's 9000, so a guest running Linux will also fail the assert when trying to set an MTU of 9000. VMXNET3_MAX_MTU and s->mtu don't seem to be used in relation to buffer allocations/accesses, so allowing the upper limit itself as a value should be fine. [0]: https://forum.proxmox.com/threads/114011/ Fixes: d05dcd94ae ("net: vmxnet3: validate configuration values during activate (CVE-2021-20203)") Signed-off-by: Fiona Ebner Signed-off-by: Jason Wang (cherry picked from commit 099a63828130843741d317cb28e936f468b2b53b) Signed-off-by: Michael Tokarev --- hw/net/vmxnet3.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hw/net/vmxnet3.c b/hw/net/vmxnet3.c index d2ab527ef4..56559cda24 100644 --- a/hw/net/vmxnet3.c +++ b/hw/net/vmxnet3.c @@ -1441,7 +1441,7 @@ static void vmxnet3_activate_device(VMXNET3State *s) vmxnet3_setup_rx_filtering(s); /* Cache fields from shared memory */ s->mtu = VMXNET3_READ_DRV_SHARED32(d, s->drv_shmem, devRead.misc.mtu); - assert(VMXNET3_MIN_MTU <= s->mtu && s->mtu < VMXNET3_MAX_MTU); + assert(VMXNET3_MIN_MTU <= s->mtu && s->mtu <= VMXNET3_MAX_MTU); VMW_CFPRN("MTU is %u", s->mtu); s->max_rx_frags = From a2efa1fac49b7d7d10564ef0007b2ed02e69fdf5 Mon Sep 17 00:00:00 2001 From: Yuval Shaia Date: Sun, 3 Apr 2022 12:52:34 +0300 Subject: [PATCH 052/174] hw/pvrdma: Protect against buggy or malicious guest driver Guest driver might execute HW commands when shared buffers are not yet allocated. This could happen on purpose (malicious guest) or because of some other guest/host address mapping error. We need to protect againts such case. Fixes: CVE-2022-1050 Reported-by: Raven Signed-off-by: Yuval Shaia Message-Id: <20220403095234.2210-1-yuval.shaia.ml@gmail.com> Signed-off-by: Laurent Vivier (cherry picked from commit 31c4b6fb0293e359f9ef8a61892667e76eea4c99) Signed-off-by: Michael Tokarev --- hw/rdma/vmw/pvrdma_cmd.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/hw/rdma/vmw/pvrdma_cmd.c b/hw/rdma/vmw/pvrdma_cmd.c index da7ddfa548..89db963c46 100644 --- a/hw/rdma/vmw/pvrdma_cmd.c +++ b/hw/rdma/vmw/pvrdma_cmd.c @@ -796,6 +796,12 @@ int pvrdma_exec_cmd(PVRDMADev *dev) dsr_info = &dev->dsr_info; + if (!dsr_info->dsr) { + /* Buggy or malicious guest driver */ + rdma_error_report("Exec command without dsr, req or rsp buffers"); + goto out; + } + if (dsr_info->req->hdr.cmd >= sizeof(cmd_handlers) / sizeof(struct cmd_handler)) { rdma_error_report("Unsupported command"); From a3c6cd83e32d7729889b3eab2a9b6b4650c56ea9 Mon Sep 17 00:00:00 2001 From: Thomas Huth Date: Tue, 14 Feb 2023 15:10:56 +0100 Subject: [PATCH 053/174] target/s390x/arch_dump: Fix memory corruption in s390x_write_elf64_notes() MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit "note_size" can be smaller than sizeof(note), so unconditionally calling memset(notep, 0, sizeof(note)) could cause a memory corruption here in case notep has been allocated dynamically, thus let's use note_size as length argument for memset() instead. Reported-by: Sebastian Mitterle Fixes: 113d8f4e95 ("s390x: pv: Add dump support") Message-Id: <20230214141056.680969-1-thuth@redhat.com> Reviewed-by: Janosch Frank Reviewed-by: Philippe Mathieu-Daudé Signed-off-by: Thomas Huth (cherry picked from commit eb60026120081430d554c9cabaa36c4ac271fce0) Signed-off-by: Michael Tokarev --- target/s390x/arch_dump.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/target/s390x/arch_dump.c b/target/s390x/arch_dump.c index a2329141e8..a7c44ba49d 100644 --- a/target/s390x/arch_dump.c +++ b/target/s390x/arch_dump.c @@ -248,7 +248,7 @@ static int s390x_write_elf64_notes(const char *note_name, notep = g_malloc(note_size); } - memset(notep, 0, sizeof(note)); + memset(notep, 0, note_size); /* Setup note header data */ notep->hdr.n_descsz = cpu_to_be32(content_size); From 17b032c6598ea756889f25e8d3e4cd9f2036669b Mon Sep 17 00:00:00 2001 From: Nina Schoetterl-Glausch Date: Fri, 10 Mar 2023 12:41:56 +0100 Subject: [PATCH 054/174] target/s390x: Fix emulation of C(G)HRL The second operand of COMPARE HALFWORD RELATIVE LONG is a signed halfword, it does not have the same size as the first operand. Fixes: a7e836d5eb ("target-s390: Convert COMPARE, COMPARE LOGICAL") Signed-off-by: Nina Schoetterl-Glausch Reviewed-by: Richard Henderson Reviewed-by: David Hildenbrand Message-Id: <20230310114157.3024170-2-nsg@linux.ibm.com> Signed-off-by: Thomas Huth (cherry picked from commit 54fce97cfcaf5463ee5f325bc1f1d4adc2772f38) Signed-off-by: Michael Tokarev --- target/s390x/tcg/insn-data.h.inc | 4 ++-- target/s390x/tcg/translate.c | 7 +++++++ 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/target/s390x/tcg/insn-data.h.inc b/target/s390x/tcg/insn-data.h.inc index 54d4250c9f..2a5fc99818 100644 --- a/target/s390x/tcg/insn-data.h.inc +++ b/target/s390x/tcg/insn-data.h.inc @@ -199,8 +199,8 @@ C(0xe55c, CHSI, SIL, GIE, m1_32s, i2, 0, 0, 0, cmps64) C(0xe558, CGHSI, SIL, GIE, m1_64, i2, 0, 0, 0, cmps64) /* COMPARE HALFWORD RELATIVE LONG */ - C(0xc605, CHRL, RIL_b, GIE, r1_o, mri2_32s, 0, 0, 0, cmps32) - C(0xc604, CGHRL, RIL_b, GIE, r1_o, mri2_64, 0, 0, 0, cmps64) + C(0xc605, CHRL, RIL_b, GIE, r1_o, mri2_16s, 0, 0, 0, cmps32) + C(0xc604, CGHRL, RIL_b, GIE, r1_o, mri2_16s, 0, 0, 0, cmps64) /* COMPARE HIGH */ C(0xb9cd, CHHR, RRE, HW, r1_sr32, r2_sr32, 0, 0, 0, cmps32) C(0xb9dd, CHLR, RRE, HW, r1_sr32, r2_o, 0, 0, 0, cmps32) diff --git a/target/s390x/tcg/translate.c b/target/s390x/tcg/translate.c index 1e599ac259..9c3ee5ed72 100644 --- a/target/s390x/tcg/translate.c +++ b/target/s390x/tcg/translate.c @@ -6050,6 +6050,13 @@ static void in2_m2_64a(DisasContext *s, DisasOps *o) #define SPEC_in2_m2_64a 0 #endif +static void in2_mri2_16s(DisasContext *s, DisasOps *o) +{ + o->in2 = tcg_temp_new_i64(); + tcg_gen_qemu_ld16s(o->in2, gen_ri2(s), get_mem_index(s)); +} +#define SPEC_in2_mri2_16s 0 + static void in2_mri2_16u(DisasContext *s, DisasOps *o) { in2_ri2(s, o); From ad2f459ce03bb9cb1f3c577f5503c8861f777ba1 Mon Sep 17 00:00:00 2001 From: Richard Henderson Date: Sun, 26 Feb 2023 17:55:31 -1000 Subject: [PATCH 055/174] target/s390x: Split out gen_ri2 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Use tcg_constant_i64. Adjust in2_mri2_* to allocate a new temporary for the output, using gen_ri2 for the address. Reviewed-by: Philippe Mathieu-Daudé Signed-off-by: Richard Henderson (cherry picked from commit bdbc87e323ee417735141ed2b11dab0091b57593) Signed-off-by: Michael Tokarev --- target/s390x/tcg/translate.c | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/target/s390x/tcg/translate.c b/target/s390x/tcg/translate.c index 9c3ee5ed72..ab60b51e31 100644 --- a/target/s390x/tcg/translate.c +++ b/target/s390x/tcg/translate.c @@ -5962,9 +5962,14 @@ static void in2_a2(DisasContext *s, DisasOps *o) } #define SPEC_in2_a2 0 +static TCGv gen_ri2(DisasContext *s) +{ + return tcg_constant_i64(s->base.pc_next + (int64_t)get_field(s, i2) * 2); +} + static void in2_ri2(DisasContext *s, DisasOps *o) { - o->in2 = tcg_const_i64(s->base.pc_next + (int64_t)get_field(s, i2) * 2); + o->in2 = gen_ri2(s); } #define SPEC_in2_ri2 0 @@ -6059,29 +6064,29 @@ static void in2_mri2_16s(DisasContext *s, DisasOps *o) static void in2_mri2_16u(DisasContext *s, DisasOps *o) { - in2_ri2(s, o); - tcg_gen_qemu_ld16u(o->in2, o->in2, get_mem_index(s)); + o->in2 = tcg_temp_new_i64(); + tcg_gen_qemu_ld16u(o->in2, gen_ri2(s), get_mem_index(s)); } #define SPEC_in2_mri2_16u 0 static void in2_mri2_32s(DisasContext *s, DisasOps *o) { - in2_ri2(s, o); - tcg_gen_qemu_ld32s(o->in2, o->in2, get_mem_index(s)); + o->in2 = tcg_temp_new_i64(); + tcg_gen_qemu_ld32s(o->in2, gen_ri2(s), get_mem_index(s)); } #define SPEC_in2_mri2_32s 0 static void in2_mri2_32u(DisasContext *s, DisasOps *o) { - in2_ri2(s, o); - tcg_gen_qemu_ld32u(o->in2, o->in2, get_mem_index(s)); + o->in2 = tcg_temp_new_i64(); + tcg_gen_qemu_ld32u(o->in2, gen_ri2(s), get_mem_index(s)); } #define SPEC_in2_mri2_32u 0 static void in2_mri2_64(DisasContext *s, DisasOps *o) { - in2_ri2(s, o); - tcg_gen_qemu_ld64(o->in2, o->in2, get_mem_index(s)); + o->in2 = tcg_temp_new_i64(); + tcg_gen_qemu_ld64(o->in2, gen_ri2(s), get_mem_index(s)); } #define SPEC_in2_mri2_64 0 From 5d42bf6c574dcb174689fb837552c6f228db9cf3 Mon Sep 17 00:00:00 2001 From: Ilya Leoshkevich Date: Thu, 16 Mar 2023 22:07:50 +0100 Subject: [PATCH 056/174] target/s390x: Fix EXECUTE of relative long instructions The code uses the wrong base for relative addressing: it should use the target instruction address and not the EXECUTE's address. Fix by storing the target instruction address in the new CPUS390XState member and loading it from the code generated by gen_ri2(). Reported-by: Nina Schoetterl-Glausch Signed-off-by: Ilya Leoshkevich Reviewed-by: Richard Henderson Reviewed-by: David Hildenbrand Message-Id: <20230316210751.302423-2-iii@linux.ibm.com> Signed-off-by: Thomas Huth (cherry picked from commit 703d03a4aaf38f285555ef5422ba5ce075416fc4) Signed-off-by: Michael Tokarev --- target/s390x/cpu.h | 1 + target/s390x/tcg/mem_helper.c | 1 + target/s390x/tcg/translate.c | 13 ++++++++++++- 3 files changed, 14 insertions(+), 1 deletion(-) diff --git a/target/s390x/cpu.h b/target/s390x/cpu.h index 7d6d01325b..8aaf8dd5a3 100644 --- a/target/s390x/cpu.h +++ b/target/s390x/cpu.h @@ -87,6 +87,7 @@ struct CPUArchState { uint64_t cc_vr; uint64_t ex_value; + uint64_t ex_target; uint64_t __excp_addr; uint64_t psa; diff --git a/target/s390x/tcg/mem_helper.c b/target/s390x/tcg/mem_helper.c index 3758b9e688..7e7de5e2f1 100644 --- a/target/s390x/tcg/mem_helper.c +++ b/target/s390x/tcg/mem_helper.c @@ -2618,6 +2618,7 @@ void HELPER(ex)(CPUS390XState *env, uint32_t ilen, uint64_t r1, uint64_t addr) that ex_value is non-zero, which flags that we are in a state that requires such execution. */ env->ex_value = insn | ilen; + env->ex_target = addr; } uint32_t HELPER(mvcos)(CPUS390XState *env, uint64_t dest, uint64_t src, diff --git a/target/s390x/tcg/translate.c b/target/s390x/tcg/translate.c index ab60b51e31..e328aa5b97 100644 --- a/target/s390x/tcg/translate.c +++ b/target/s390x/tcg/translate.c @@ -5964,7 +5964,18 @@ static void in2_a2(DisasContext *s, DisasOps *o) static TCGv gen_ri2(DisasContext *s) { - return tcg_constant_i64(s->base.pc_next + (int64_t)get_field(s, i2) * 2); + int64_t delta = (int64_t)get_field(s, i2) * 2; + TCGv ri2; + + if (unlikely(s->ex_value)) { + ri2 = tcg_temp_new_i64(); + tcg_gen_ld_i64(ri2, cpu_env, offsetof(CPUS390XState, ex_target)); + tcg_gen_addi_i64(ri2, ri2, delta); + } else { + ri2 = tcg_constant_i64(s->base.pc_next + delta); + } + + return ri2; } static void in2_ri2(DisasContext *s, DisasOps *o) From d8592b05becfeea4da2c71b79ea3d9a7ef8cfe50 Mon Sep 17 00:00:00 2001 From: Markus Armbruster Date: Mon, 3 Apr 2023 16:12:30 +0100 Subject: [PATCH 057/174] hw/arm: do not free machine->fdt in arm_load_dtb() At this moment, arm_load_dtb() can free machine->fdt when binfo->dtb_filename is NULL. If there's no 'dtb_filename', 'fdt' will be retrieved by binfo->get_dtb(). If get_dtb() returns machine->fdt, as is the case of machvirt_dtb() from hw/arm/virt.c, fdt now has a pointer to machine->fdt. And, in that case, the existing g_free(fdt) at the end of arm_load_dtb() will make machine->fdt point to an invalid memory region. Since monitor command 'dumpdtb' was introduced a couple of releases ago, running it with any ARM machine that uses arm_load_dtb() will crash QEMU. Let's enable all arm_load_dtb() callers to use dumpdtb properly. Instead of freeing 'fdt', assign it back to ms->fdt. Cc: Peter Maydell Cc: qemu-arm@nongnu.org Fixes: bf353ad55590f ("qmp/hmp, device_tree.c: introduce dumpdtb") Reported-by: Markus Armbruster Signed-off-by: Daniel Henrique Barboza Signed-off-by: Markus Armbruster Reviewed-by: Daniel Henrique Barboza Message-id: 20230328165935.1512846-1-armbru@redhat.com Signed-off-by: Peter Maydell (cherry picked from commit 12148d442ec3f4386c8624ffcf44c61a8b344018) Signed-off-by: Michael Tokarev --- hw/arm/boot.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/hw/arm/boot.c b/hw/arm/boot.c index 15c2bf1867..725bab8adc 100644 --- a/hw/arm/boot.c +++ b/hw/arm/boot.c @@ -686,7 +686,10 @@ int arm_load_dtb(hwaddr addr, const struct arm_boot_info *binfo, qemu_register_reset_nosnapshotload(qemu_fdt_randomize_seeds, rom_ptr_for_as(as, addr, size)); - g_free(fdt); + if (fdt != ms->fdt) { + g_free(ms->fdt); + ms->fdt = fdt; + } return size; From 248aa3deb68a327a9450b536fab8e03a4ed89918 Mon Sep 17 00:00:00 2001 From: Stefan Hajnoczi Date: Thu, 23 Mar 2023 10:48:59 -0400 Subject: [PATCH 058/174] aio-posix: fix race between epoll upgrade and aio_set_fd_handler() If another thread calls aio_set_fd_handler() while the IOThread event loop is upgrading from ppoll(2) to epoll(7) then we might miss new AioHandlers. The epollfd will not monitor the new AioHandler's fd, resulting in hangs. Take the AioHandler list lock while upgrading to epoll. This prevents AioHandlers from changing while epoll is being set up. If we cannot lock because we're in a nested event loop, then don't upgrade to epoll (it will happen next time we're not in a nested call). The downside to taking the lock is that the aio_set_fd_handler() thread has to wait until the epoll upgrade is finished, which involves many epoll_ctl(2) system calls. However, this scenario is rare and I couldn't think of another solution that is still simple. Reported-by: Qing Wang Buglink: https://bugzilla.redhat.com/show_bug.cgi?id=2090998 Cc: Paolo Bonzini Cc: Fam Zheng Signed-off-by: Stefan Hajnoczi Message-Id: <20230323144859.1338495-1-stefanha@redhat.com> Reviewed-by: Kevin Wolf Signed-off-by: Kevin Wolf (cherry picked from commit e62da98527fa35fe5f532cded01a33edf9fbe7b2) Signed-off-by: Michael Tokarev --- util/fdmon-epoll.c | 25 ++++++++++++++++++------- 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/util/fdmon-epoll.c b/util/fdmon-epoll.c index e11a8a022e..1683aa1105 100644 --- a/util/fdmon-epoll.c +++ b/util/fdmon-epoll.c @@ -127,6 +127,8 @@ static bool fdmon_epoll_try_enable(AioContext *ctx) bool fdmon_epoll_try_upgrade(AioContext *ctx, unsigned npfd) { + bool ok; + if (ctx->epollfd < 0) { return false; } @@ -136,14 +138,23 @@ bool fdmon_epoll_try_upgrade(AioContext *ctx, unsigned npfd) return false; } - if (npfd >= EPOLL_ENABLE_THRESHOLD) { - if (fdmon_epoll_try_enable(ctx)) { - return true; - } else { - fdmon_epoll_disable(ctx); - } + if (npfd < EPOLL_ENABLE_THRESHOLD) { + return false; } - return false; + + /* The list must not change while we add fds to epoll */ + if (!qemu_lockcnt_dec_if_lock(&ctx->list_lock)) { + return false; + } + + ok = fdmon_epoll_try_enable(ctx); + + qemu_lockcnt_inc_and_unlock(&ctx->list_lock); + + if (!ok) { + fdmon_epoll_disable(ctx); + } + return ok; } void fdmon_epoll_setup(AioContext *ctx) From 5d4218f0b22812b37662f29a5c33619823f948e0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= Date: Tue, 21 Mar 2023 17:16:08 +0100 Subject: [PATCH 059/174] target/s390x: Fix float_comp_to_cc() prototype MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit GCC13 reports an error : ../target/s390x/tcg/fpu_helper.c:123:5: error: conflicting types for ‘float_comp_to_cc’ due to enum/integer mismatch; have ‘int(CPUS390XState *, FloatRelation)’ {aka ‘int(struct CPUArchState *, FloatRelation)’} [-Werror=enum-int-mismatch] 123 | int float_comp_to_cc(CPUS390XState *env, FloatRelation float_compare) | ^~~~~~~~~~~~~~~~ In file included from ../target/s390x/tcg/fpu_helper.c:23: ../target/s390x/s390x-internal.h:302:5: note: previous declaration of ‘float_comp_to_cc’ with type ‘int(CPUS390XState *, int)’ {aka ‘int(struct CPUArchState *, int)’} 302 | int float_comp_to_cc(CPUS390XState *env, int float_compare); | ^~~~~~~~~~~~~~~~ Fixes: 71bfd65c5f ("softfloat: Name compare relation enum") Signed-off-by: Cédric Le Goater Reviewed-by: Philippe Mathieu-Daudé Message-Id: <20230321161609.716474-3-clg@kaod.org> Reviewed-by: Richard Henderson Reviewed-by: Thomas Huth Signed-off-by: Thomas Huth (cherry picked from commit f79283fdb8efca0cd6e818bebad12f367e83f6e6) Signed-off-by: Michael Tokarev --- target/s390x/s390x-internal.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/target/s390x/s390x-internal.h b/target/s390x/s390x-internal.h index 5d4361d35b..825252d728 100644 --- a/target/s390x/s390x-internal.h +++ b/target/s390x/s390x-internal.h @@ -11,6 +11,7 @@ #define S390X_INTERNAL_H #include "cpu.h" +#include "fpu/softfloat.h" #ifndef CONFIG_USER_ONLY typedef struct LowCore { @@ -299,7 +300,7 @@ uint32_t set_cc_nz_f128(float128 v); uint8_t s390_softfloat_exc_to_ieee(unsigned int exc); int s390_swap_bfp_rounding_mode(CPUS390XState *env, int m3); void s390_restore_bfp_rounding_mode(CPUS390XState *env, int old_mode); -int float_comp_to_cc(CPUS390XState *env, int float_compare); +int float_comp_to_cc(CPUS390XState *env, FloatRelation float_compare); #define DCMASK_ZERO 0x0c00 #define DCMASK_NORMAL 0x0300 From a3f531cee66b12041098f7a809c2a7d6ecb6ad7d Mon Sep 17 00:00:00 2001 From: Pierrick Bouvier Date: Tue, 21 Feb 2023 16:30:05 +0100 Subject: [PATCH 060/174] qga/vss-win32: fix warning for clang++-15 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Reported when compiling with clang-windows-arm64. ../qga/vss-win32/install.cpp:537:9: error: variable 'hr' is used uninitialized whenever 'if' condition is false [-Werror,-Wsometimes-uninitialized] if (!(ControlService(service, SERVICE_CONTROL_STOP, NULL))) { ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../qga/vss-win32/install.cpp:545:12: note: uninitialized use occurs here return hr; ^~ Signed-off-by: Pierrick Bouvier Fixes: 917ebcb170 ("qga-win: Fix QGA VSS Provider service stop failure") Reviewed-by: Konstantin Kostiuk Reviewed-by: Philippe Mathieu-Daudé Signed-off-by: Kostiantyn Kostiuk (cherry picked from commit 0fcd574b025fccdf14d5140687cafe2bc30b634f) Signed-off-by: Michael Tokarev --- qga/vss-win32/install.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/qga/vss-win32/install.cpp b/qga/vss-win32/install.cpp index b57508fbe0..b8087e5baa 100644 --- a/qga/vss-win32/install.cpp +++ b/qga/vss-win32/install.cpp @@ -518,7 +518,7 @@ namespace _com_util /* Stop QGA VSS provider service using Winsvc API */ STDAPI StopService(void) { - HRESULT hr; + HRESULT hr = S_OK; SC_HANDLE manager = OpenSCManager(NULL, NULL, SC_MANAGER_ALL_ACCESS); SC_HANDLE service = NULL; From c74cba83622a306bd9af18adf19edb8c72d8be3c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= Date: Mon, 20 Feb 2023 11:22:51 +0400 Subject: [PATCH 061/174] ui: fix crash on serial reset, during init MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit For ex, when resetting the xlnx-zcu102 machine: (lldb) bt * thread #1, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=1, address=0x50) * frame #0: 0x10020a740 gd_vc_send_chars(vc=0x000000000) at gtk.c:1759:41 [opt] frame #1: 0x100636264 qemu_chr_fe_accept_input(be=) at char-fe.c:159:9 [opt] frame #2: 0x1000608e0 cadence_uart_reset_hold [inlined] uart_rx_reset(s=0x10810a960) at cadence_uart.c:158:5 [opt] frame #3: 0x1000608d4 cadence_uart_reset_hold(obj=0x10810a960) at cadence_uart.c:530:5 [opt] frame #4: 0x100580ab4 resettable_phase_hold(obj=0x10810a960, opaque=0x000000000, type=) at resettable.c:0 [opt] frame #5: 0x10057d1b0 bus_reset_child_foreach(obj=, cb=(resettable_phase_hold at resettable.c:162), opaque=0x000000000, type=RESET_TYPE_COLD) at bus.c:97:13 [opt] frame #6: 0x1005809f8 resettable_phase_hold [inlined] resettable_child_foreach(rc=0x000060000332d2c0, obj=0x0000600002c1c180, cb=, opaque=0x000000000, type=RESET_TYPE_COLD) at resettable.c:96:9 [opt] frame #7: 0x1005809d8 resettable_phase_hold(obj=0x0000600002c1c180, opaque=0x000000000, type=RESET_TYPE_COLD) at resettable.c:173:5 [opt] frame #8: 0x1005803a0 resettable_assert_reset(obj=0x0000600002c1c180, type=) at resettable.c:60:5 [opt] frame #9: 0x10058027c resettable_reset(obj=0x0000600002c1c180, type=RESET_TYPE_COLD) at resettable.c:45:5 [opt] While the chardev is created early, the VirtualConsole is associated after, during qemu_init_displays(). Signed-off-by: Marc-André Lureau Tested-by: Philippe Mathieu-Daudé Reviewed-by: Philippe Mathieu-Daudé Message-Id: <20230220072251.3385878-1-marcandre.lureau@redhat.com> (cherry picked from commit 49152ac47003ca21fc6f2a5c3e517f79649e1541) Signed-off-by: Michael Tokarev --- ui/gtk.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/ui/gtk.c b/ui/gtk.c index 4817623c8f..dfaf6d33c3 100644 --- a/ui/gtk.c +++ b/ui/gtk.c @@ -1783,7 +1783,9 @@ static void gd_vc_chr_accept_input(Chardev *chr) VCChardev *vcd = VC_CHARDEV(chr); VirtualConsole *vc = vcd->console; - gd_vc_send_chars(vc); + if (vc) { + gd_vc_send_chars(vc); + } } static void gd_vc_chr_set_echo(Chardev *chr, bool echo) From d9bb73d8e3a02135a34b2b7d7ba8f8e1e660a1e5 Mon Sep 17 00:00:00 2001 From: Bernhard Beschow Date: Sat, 18 Mar 2023 19:59:31 +0100 Subject: [PATCH 062/174] qemu/osdep: Switch position of "extern" and "G_NORETURN" Fixes the Windows build under msys2 using GCC 12 which fails with the following error: [184/579] Compiling C++ object qga/vss-win32/qga-vss.dll.p/install.cpp.obj FAILED: qga/vss-win32/qga-vss.dll.p/install.cpp.obj "c++" "-m64" "-mcx16" "-Iqga/vss-win32/qga-vss.dll.p" "-Iqga/vss-win32" "-I../src/qga/vss-win32" "-I." "-Iqapi" "-Itrace" "-Iui" "-Iui/shader" "-IC:/msys64/mingw64/include/glib-2.0" "-IC:/msys64/mingw64/lib/glib-2.0/include" "-fdiagnostics-color=auto" "-Wall" "-Winvalid-pch" "-Wnon-virtual-dtor" "-Werror" "-std=gnu++11" "-g" "-iquote" "." "-iquote" "C:/msys64/home/shentey/Projects/qemu/src" "-iquote" "C:/msys64/home/shentey/Projects/qemu/src/include" "-iquote" "C:/msys64/home/shentey/Projects/qemu/src/tcg/i386" "-D__STDC_LIMIT_MACROS" "-D__STDC_CONSTANT_MACROS" "-D__STDC_FORMAT_MACROS" "-fno-pie" "-no-pie" "-D_GNU_SOURCE" "-D_FILE_OFFSET_BITS=64" "-D_LARGEFILE_SOURCE" "-fno-strict-aliasing" "-fno-common" "-fwrapv" "-Wundef" "-Wwrite-strings" "-Wtype-limits" "-Wformat-security" "-Wformat-y2k" "-Winit-self" "-Wignored-qualifiers" "-Wempty-body" "-Wendif-labels" "-Wexpansion-to-defined" "-Wimplicit-fallthrough=2" "-Wmissing-format-attribute" "-Wno-missing-include-dirs" "-Wno-shift-negative-value" "-Wno-psabi" "-fstack-protector-strong" "-Wno-unknown-pragmas" "-Wno-delete-non-virtual-dtor" "-Wno-non-virtual-dtor" -MD -MQ qga/vss-win32/qga-vss.dll.p/install.cpp.obj -MF "qga/vss-win32/qga-vss.dll.p/install.cpp.obj.d" -o qga/vss-win32/qga-vss.dll.p/install.cpp.obj "-c" ../src/qga/vss-win32/install.cpp In file included from C:/msys64/mingw64/lib/glib-2.0/include/glibconfig.h:9, from C:/msys64/mingw64/include/glib-2.0/glib/gtypes.h:34, from C:/msys64/mingw64/include/glib-2.0/glib/galloca.h:34, from C:/msys64/mingw64/include/glib-2.0/glib.h:32, from C:/msys64/home/shentey/Projects/qemu/src/include/glib-compat.h:32, from C:/msys64/home/shentey/Projects/qemu/src/include/qemu/osdep.h:144, from ../src/qga/vss-win32/install.cpp:13: C:/msys64/mingw64/include/glib-2.0/glib/gmacros.h:1075:21: error: standard attributes in middle of decl-specifiers 1075 | # define G_NORETURN [[noreturn]] | ^ C:/msys64/home/shentey/Projects/qemu/src/include/qemu/osdep.h:240:8: note: in expansion of macro 'G_NORETURN' 240 | extern G_NORETURN | ^~~~~~~~~~ C:/msys64/mingw64/include/glib-2.0/glib/gmacros.h:1075:21: note: standard attributes must precede the decl-specifiers to apply to the declaration, or follow them to apply to the type 1075 | # define G_NORETURN [[noreturn]] | ^ C:/msys64/home/shentey/Projects/qemu/src/include/qemu/osdep.h:240:8: note: in expansion of macro 'G_NORETURN' 240 | extern G_NORETURN | ^~~~~~~~~~ C:/msys64/mingw64/include/glib-2.0/glib/gmacros.h:1075:21: error: attribute ignored [-Werror=attributes] 1075 | # define G_NORETURN [[noreturn]] | ^ C:/msys64/home/shentey/Projects/qemu/src/include/qemu/osdep.h:240:8: note: in expansion of macro 'G_NORETURN' 240 | extern G_NORETURN | ^~~~~~~~~~ C:/msys64/mingw64/include/glib-2.0/glib/gmacros.h:1075:21: note: an attribute that appertains to a type-specifier is ignored 1075 | # define G_NORETURN [[noreturn]] | ^ C:/msys64/home/shentey/Projects/qemu/src/include/qemu/osdep.h:240:8: note: in expansion of macro 'G_NORETURN' 240 | extern G_NORETURN | ^~~~~~~~~~ cc1plus.exe: all warnings being treated as errors Apparently it also fixes the compilation with Clang 15 (see https://gitlab.com/qemu-project/qemu/-/issues/1541 ). Resolves: https://gitlab.com/qemu-project/qemu/-/issues/1541 Signed-off-by: Bernhard Beschow Message-Id: <20230318185931.181659-1-shentey@gmail.com> Reviewed-by: Peter Maydell Signed-off-by: Thomas Huth (cherry picked from commit 5cb993ff131fca2abef3ce074a20258fd6fce557) Signed-off-by: Michael Tokarev --- include/qemu/osdep.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/qemu/osdep.h b/include/qemu/osdep.h index b9c4307779..3d6cb431ad 100644 --- a/include/qemu/osdep.h +++ b/include/qemu/osdep.h @@ -177,7 +177,7 @@ extern "C" { * supports QEMU_ERROR, this will be reported at compile time; otherwise * this will be reported at link time due to the missing symbol. */ -extern G_NORETURN +G_NORETURN extern void QEMU_ERROR("code path is reachable") qemu_build_not_reached_always(void); #if defined(__OPTIMIZE__) && !defined(__NO_INLINE__) From b57641e907acadd7593e0fec4ef52a21c9864aa7 Mon Sep 17 00:00:00 2001 From: Mathis Marion Date: Tue, 7 Mar 2023 16:42:55 +0100 Subject: [PATCH 063/174] linux-user: fix sockaddr_in6 endianness MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The sin6_scope_id field uses the host byte order, so there is a conversion to be made when host and target endianness differ. Signed-off-by: Mathis Marion Reviewed-by: Laurent Vivier Reviewed-by: Philippe Mathieu-Daudé Message-Id: <20230307154256.101528-2-Mathis.Marion@silabs.com> Signed-off-by: Laurent Vivier (cherry picked from commit 44cf6731d6b9a48bcd57392e8cd6f0f712aaa677) Signed-off-by: Michael Tokarev --- linux-user/syscall.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/linux-user/syscall.c b/linux-user/syscall.c index 24b25759be..106d5ed05b 100644 --- a/linux-user/syscall.c +++ b/linux-user/syscall.c @@ -1755,6 +1755,11 @@ static inline abi_long target_to_host_sockaddr(int fd, struct sockaddr *addr, lladdr = (struct target_sockaddr_ll *)addr; lladdr->sll_ifindex = tswap32(lladdr->sll_ifindex); lladdr->sll_hatype = tswap16(lladdr->sll_hatype); + } else if (sa_family == AF_INET6) { + struct sockaddr_in6 *in6addr; + + in6addr = (struct sockaddr_in6 *)addr; + in6addr->sin6_scope_id = tswap32(in6addr->sin6_scope_id); } unlock_user(target_saddr, target_addr, 0); From b6abbe6250a140d6f4b779f04c95e79a0f0aeffa Mon Sep 17 00:00:00 2001 From: Ilya Leoshkevich Date: Fri, 24 Feb 2023 01:39:06 +0100 Subject: [PATCH 064/174] linux-user: Fix unaligned memory access in prlimit64 syscall MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit target_rlimit64 contains uint64_t fields, so it's 8-byte aligned on some hosts, while some guests may align their respective type on a 4-byte boundary. This may lead to an unaligned access, which is an UB. Fix by defining the fields as abi_ullong. This makes the host alignment match that of the guest, and lets the compiler know that it should emit code that can deal with the guest alignment. While at it, also use __get_user() and __put_user() instead of tswap64(). Fixes: 163a05a8398b ("linux-user: Implement prlimit64 syscall") Reported-by: Richard Henderson Signed-off-by: Ilya Leoshkevich Reviewed-by: Philippe Mathieu-Daudé Reviewed-by: Laurent Vivier Message-Id: <20230224003907.263914-2-iii@linux.ibm.com> Signed-off-by: Laurent Vivier (cherry picked from commit 9c1da8b5ee7f6e80e6b683e7fb73df1029a7cbbe) Signed-off-by: Michael Tokarev --- linux-user/generic/target_resource.h | 4 ++-- linux-user/syscall.c | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/linux-user/generic/target_resource.h b/linux-user/generic/target_resource.h index 539d8c4677..37d3eb09b3 100644 --- a/linux-user/generic/target_resource.h +++ b/linux-user/generic/target_resource.h @@ -12,8 +12,8 @@ struct target_rlimit { }; struct target_rlimit64 { - uint64_t rlim_cur; - uint64_t rlim_max; + abi_ullong rlim_cur; + abi_ullong rlim_max; }; #define TARGET_RLIM_INFINITY ((abi_ulong)-1) diff --git a/linux-user/syscall.c b/linux-user/syscall.c index 106d5ed05b..8f8f8cf1db 100644 --- a/linux-user/syscall.c +++ b/linux-user/syscall.c @@ -12888,8 +12888,8 @@ static abi_long do_syscall1(CPUArchState *cpu_env, int num, abi_long arg1, if (!lock_user_struct(VERIFY_READ, target_rnew, arg3, 1)) { return -TARGET_EFAULT; } - rnew.rlim_cur = tswap64(target_rnew->rlim_cur); - rnew.rlim_max = tswap64(target_rnew->rlim_max); + __get_user(rnew.rlim_cur, &target_rnew->rlim_cur); + __get_user(rnew.rlim_max, &target_rnew->rlim_max); unlock_user_struct(target_rnew, arg3, 0); rnewp = &rnew; } @@ -12899,8 +12899,8 @@ static abi_long do_syscall1(CPUArchState *cpu_env, int num, abi_long arg1, if (!lock_user_struct(VERIFY_WRITE, target_rold, arg4, 1)) { return -TARGET_EFAULT; } - target_rold->rlim_cur = tswap64(rold.rlim_cur); - target_rold->rlim_max = tswap64(rold.rlim_max); + __put_user(rold.rlim_cur, &target_rold->rlim_cur); + __put_user(rold.rlim_max, &target_rold->rlim_max); unlock_user_struct(target_rold, arg4, 1); } return ret; From 73a11e3723a157df669888fc89c4e776d5fcc8ee Mon Sep 17 00:00:00 2001 From: Mathis Marion Date: Mon, 20 Feb 2023 09:58:19 +0100 Subject: [PATCH 065/174] linux-user: fix timerfd read endianness conversion When reading the expiration count from a timerfd, the endianness of the 64bit value read is the one of the host, just as for eventfds. Signed-off-by: Mathis Marion Reviewed-by: Laurent Vivier Message-Id: <20230220085822.626798-2-Mathis.Marion@silabs.com> Signed-off-by: Laurent Vivier (cherry picked from commit d759a62b122dcdf76d6ea10c56c5dff1d04d731d) Signed-off-by: Michael Tokarev --- linux-user/fd-trans.c | 10 +++++++--- linux-user/fd-trans.h | 1 + linux-user/syscall.c | 8 ++++++-- 3 files changed, 14 insertions(+), 5 deletions(-) diff --git a/linux-user/fd-trans.c b/linux-user/fd-trans.c index 7b25468d02..146aaaafaa 100644 --- a/linux-user/fd-trans.c +++ b/linux-user/fd-trans.c @@ -1622,7 +1622,7 @@ TargetFdTrans target_signalfd_trans = { .host_to_target_data = host_to_target_data_signalfd, }; -static abi_long swap_data_eventfd(void *buf, size_t len) +static abi_long swap_data_u64(void *buf, size_t len) { uint64_t *counter = buf; int i; @@ -1640,8 +1640,12 @@ static abi_long swap_data_eventfd(void *buf, size_t len) } TargetFdTrans target_eventfd_trans = { - .host_to_target_data = swap_data_eventfd, - .target_to_host_data = swap_data_eventfd, + .host_to_target_data = swap_data_u64, + .target_to_host_data = swap_data_u64, +}; + +TargetFdTrans target_timerfd_trans = { + .host_to_target_data = swap_data_u64, }; #if defined(CONFIG_INOTIFY) && (defined(TARGET_NR_inotify_init) || \ diff --git a/linux-user/fd-trans.h b/linux-user/fd-trans.h index 1b9fa2041c..910faaf237 100644 --- a/linux-user/fd-trans.h +++ b/linux-user/fd-trans.h @@ -130,6 +130,7 @@ extern TargetFdTrans target_netlink_route_trans; extern TargetFdTrans target_netlink_audit_trans; extern TargetFdTrans target_signalfd_trans; extern TargetFdTrans target_eventfd_trans; +extern TargetFdTrans target_timerfd_trans; #if (defined(TARGET_NR_inotify_init) && defined(__NR_inotify_init)) || \ (defined(CONFIG_INOTIFY1) && defined(TARGET_NR_inotify_init1) && \ defined(__NR_inotify_init1)) diff --git a/linux-user/syscall.c b/linux-user/syscall.c index 8f8f8cf1db..9ca30149d4 100644 --- a/linux-user/syscall.c +++ b/linux-user/syscall.c @@ -13120,8 +13120,12 @@ static abi_long do_syscall1(CPUArchState *cpu_env, int num, abi_long arg1, #if defined(TARGET_NR_timerfd_create) && defined(CONFIG_TIMERFD) case TARGET_NR_timerfd_create: - return get_errno(timerfd_create(arg1, - target_to_host_bitmask(arg2, fcntl_flags_tbl))); + ret = get_errno(timerfd_create(arg1, + target_to_host_bitmask(arg2, fcntl_flags_tbl))); + if (ret >= 0) { + fd_trans_register(ret, &target_timerfd_trans); + } + return ret; #endif #if defined(TARGET_NR_timerfd_gettime) && defined(CONFIG_TIMERFD) From dda57509e91d9d329fe11f2a3390ef38e2a86139 Mon Sep 17 00:00:00 2001 From: Richard Henderson Date: Mon, 27 Feb 2023 12:58:29 -1000 Subject: [PATCH 066/174] target/arm: Handle m-profile in arm_is_secure Resolves: https://gitlab.com/qemu-project/qemu/-/issues/1421 Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson Message-id: 20230227225832.816605-2-richard.henderson@linaro.org Signed-off-by: Peter Maydell (cherry picked from commit 9094f9551df849f68d40236092d8af3ed869d093) Signed-off-by: Michael Tokarev --- target/arm/cpu.h | 3 +++ 1 file changed, 3 insertions(+) diff --git a/target/arm/cpu.h b/target/arm/cpu.h index 9aeed3c848..a9cd7178f8 100644 --- a/target/arm/cpu.h +++ b/target/arm/cpu.h @@ -2407,6 +2407,9 @@ static inline bool arm_is_el3_or_mon(CPUARMState *env) /* Return true if the processor is in secure state */ static inline bool arm_is_secure(CPUARMState *env) { + if (arm_feature(env, ARM_FEATURE_M)) { + return env->v7m.secure; + } if (arm_is_el3_or_mon(env)) { return true; } From 3218890da457ee17b3b49b8c2451130ed808cb79 Mon Sep 17 00:00:00 2001 From: Peter Xu Date: Sun, 26 Mar 2023 13:25:38 -0400 Subject: [PATCH 067/174] io: tls: Inherit QIO_CHANNEL_FEATURE_SHUTDOWN on server side MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit TLS iochannel will inherit io_shutdown() from the master ioc, however we missed to do that on the server side. This will e.g. allow qemu_file_shutdown() to work on dest QEMU too for migration. Acked-by: Daniel P. Berrangé Signed-off-by: Peter Xu Reviewed-by: Juan Quintela Signed-off-by: Juan Quintela (cherry picked from commit 86d063fa83901bc8150343ff8b03979fbea392c9) Signed-off-by: Michael Tokarev --- io/channel-tls.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/io/channel-tls.c b/io/channel-tls.c index 4ce890a538..4ce08ccc28 100644 --- a/io/channel-tls.c +++ b/io/channel-tls.c @@ -74,6 +74,9 @@ qio_channel_tls_new_server(QIOChannel *master, ioc = QIO_CHANNEL_TLS(object_new(TYPE_QIO_CHANNEL_TLS)); ioc->master = master; + if (qio_channel_has_feature(master, QIO_CHANNEL_FEATURE_SHUTDOWN)) { + qio_channel_set_feature(QIO_CHANNEL(ioc), QIO_CHANNEL_FEATURE_SHUTDOWN); + } object_ref(OBJECT(master)); ioc->session = qcrypto_tls_session_new( From c22120835295f2bbb7d101f1fa60abb70029be85 Mon Sep 17 00:00:00 2001 From: Klaus Jensen Date: Tue, 11 Apr 2023 20:54:44 +0200 Subject: [PATCH 068/174] hw/nvme: fix memory leak in nvme_dsm MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The iocb (and the allocated memory to hold LBA ranges) leaks if reading the LBA ranges fails. Fix this by adding a free and an unref of the iocb. Reported-by: Coverity (CID 1508281) Fixes: d7d1474fd85d ("hw/nvme: reimplement dsm to allow cancellation") Reviewed-by: Philippe Mathieu-Daudé Signed-off-by: Klaus Jensen (cherry picked from commit 4b32319cdacd99be983e1a74128289ef52c5964e) Signed-off-by: Michael Tokarev --- hw/nvme/ctrl.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/hw/nvme/ctrl.c b/hw/nvme/ctrl.c index 1d3e058452..749a6938dd 100644 --- a/hw/nvme/ctrl.c +++ b/hw/nvme/ctrl.c @@ -2491,6 +2491,9 @@ static uint16_t nvme_dsm(NvmeCtrl *n, NvmeRequest *req) status = nvme_h2c(n, (uint8_t *)iocb->range, sizeof(NvmeDsmRange) * nr, req); if (status) { + g_free(iocb->range); + qemu_aio_unref(iocb); + return status; } From 2e0e234272a65930743fe4580a500b6bf6782529 Mon Sep 17 00:00:00 2001 From: Lukas Tschoke Date: Sat, 8 Apr 2023 00:11:38 +0200 Subject: [PATCH 069/174] block/vhdx: fix dynamic VHDX BAT corruption The corruption occurs when a BAT entry aligned to 4096 bytes is changed. Specifically, the corruption occurs during the creation of the LOG Data Descriptor. The incorrect behavior involves copying 4088 bytes from the original 4096 bytes aligned offset to `tmp[8..4096]` and then copying the new value for the first BAT entry to the beginning `tmp[0..8]`. This results in all existing BAT entries inside the 4K region being incorrectly moved by 8 bytes and the last entry being lost. This bug did not cause noticeable corruption when only sequentially writing once to an empty dynamic VHDX (e.g. using `qemu-img convert -O vhdx -o subformat=dynamic ...`), but it still resulted in invalid values for the (unused) Sector Bitmap BAT entries. Importantly, this corruption would only become noticeable after the corrupted BAT is re-read from the file. Resolves: https://gitlab.com/qemu-project/qemu/-/issues/727 Cc: qemu-stable@nongnu.org Signed-off-by: Lukas Tschoke Message-Id: <6cfb6d6b-adc5-7772-c8a5-6bae9a0ad668@gmail.com> Reviewed-by: Kevin Wolf Signed-off-by: Kevin Wolf (cherry picked from commit 8af037fe4cfeb88bbcded3122cec2c5be0b90907) Signed-off-by: Michael Tokarev --- block/vhdx-log.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/block/vhdx-log.c b/block/vhdx-log.c index 572582b87b..0866897a85 100644 --- a/block/vhdx-log.c +++ b/block/vhdx-log.c @@ -980,7 +980,7 @@ static int vhdx_log_write(BlockDriverState *bs, BDRVVHDXState *s, sector_write = merged_sector; } else if (i == sectors - 1 && trailing_length) { /* partial sector at the end of the buffer */ - ret = bdrv_pread(bs->file, file_offset, + ret = bdrv_pread(bs->file, file_offset + trailing_length, VHDX_LOG_SECTOR_SIZE - trailing_length, merged_sector + trailing_length, 0); if (ret < 0) { From 161e1f22b8a288f88efa40590faab1bc4c2d86a9 Mon Sep 17 00:00:00 2001 From: Michael Tokarev Date: Sun, 23 Apr 2023 13:06:20 +0300 Subject: [PATCH 070/174] Update version for 7.2.2 release --- VERSION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/VERSION b/VERSION index b26a34e470..77f5bec5b2 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -7.2.1 +7.2.2 From bfc532703f3c4f8d2744748c440ca36ce9798ccb Mon Sep 17 00:00:00 2001 From: Paolo Bonzini Date: Thu, 30 Mar 2023 14:23:40 +0200 Subject: [PATCH 071/174] vnc: avoid underflow when accessing user-provided address If hostlen is zero, there is a possibility that addrstr[hostlen - 1] underflows and, if a closing bracked is there, hostlen - 2 is passed to g_strndup() on the next line. If websocket==false then addrstr[0] would be a colon, but if websocket==true this could in principle happen. Fix it by checking hostlen. Reported by Coverity. Signed-off-by: Paolo Bonzini (cherry picked from commit 3f9c41c5df9617510d8533cf6588172efb3df34b) Signed-off-by: Michael Tokarev --- ui/vnc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ui/vnc.c b/ui/vnc.c index 88f55cbf3c..1856d57380 100644 --- a/ui/vnc.c +++ b/ui/vnc.c @@ -3765,7 +3765,7 @@ static int vnc_display_get_address(const char *addrstr, addr->type = SOCKET_ADDRESS_TYPE_INET; inet = &addr->u.inet; - if (addrstr[0] == '[' && addrstr[hostlen - 1] == ']') { + if (hostlen && addrstr[0] == '[' && addrstr[hostlen - 1] == ']') { inet->host = g_strndup(addrstr + 1, hostlen - 2); } else { inet->host = g_strndup(addrstr, hostlen); From 84d5232d9d16541e803ad572ef48e6008677f8ff Mon Sep 17 00:00:00 2001 From: Yang Zhong Date: Thu, 6 Apr 2023 02:40:41 -0400 Subject: [PATCH 072/174] target/i386: Change wrong XFRM value in SGX CPUID leaf MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The previous patch wrongly replaced FEAT_XSAVE_XCR0_{LO|HI} with FEAT_XSAVE_XSS_{LO|HI} in CPUID(EAX=12,ECX=1):{ECX,EDX}. As a result, SGX enclaves only supported SSE and x87 feature (xfrm=0x3). Fixes: 301e90675c3f ("target/i386: Enable support for XSAVES based features") Signed-off-by: Yang Zhong Reviewed-by: Yang Weijiang Reviewed-by: Kai Huang Message-Id: <20230406064041.420039-1-yang.zhong@linux.intel.com> Signed-off-by: Paolo Bonzini (cherry picked from commit 72497cff896fecf74306ed33626c30e43633cdd6) Signed-off-by: Michael Tokarev --- target/i386/cpu.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/target/i386/cpu.c b/target/i386/cpu.c index 22b681ca37..0f71ff9fea 100644 --- a/target/i386/cpu.c +++ b/target/i386/cpu.c @@ -5584,8 +5584,8 @@ void cpu_x86_cpuid(CPUX86State *env, uint32_t index, uint32_t count, } else { *eax &= env->features[FEAT_SGX_12_1_EAX]; *ebx &= 0; /* ebx reserve */ - *ecx &= env->features[FEAT_XSAVE_XSS_LO]; - *edx &= env->features[FEAT_XSAVE_XSS_HI]; + *ecx &= env->features[FEAT_XSAVE_XCR0_LO]; + *edx &= env->features[FEAT_XSAVE_XCR0_HI]; /* FP and SSE are always allowed regardless of XSAVE/XCR0. */ *ecx |= XSTATE_FP_MASK | XSTATE_SSE_MASK; From e557055653ca315402da4eaa26b64f7b49f211fc Mon Sep 17 00:00:00 2001 From: Igor Mammedov Date: Tue, 18 Apr 2023 11:04:49 +0200 Subject: [PATCH 073/174] acpi: pcihp: allow repeating hot-unplug requests with Q35 using ACPI PCI hotplug by default, user's request to unplug device is ignored when it's issued before guest OS has been booted. And any additional attempt to request device hot-unplug afterwards results in following error: "Device XYZ is already in the process of unplug" arguably it can be considered as a regression introduced by [2], before which it was possible to issue unplug request multiple times. Accept new uplug requests after timeout (1ms). This brings ACPI PCI hotplug on par with native PCIe unplug behavior [1] and allows user to repeat unplug requests at propper times. Set expire timeout to arbitrary 1msec so user won't be able to flood guest with SCI interrupts by calling device_del in tight loop. PS: ACPI spec doesn't mandate what OSPM can do with GPEx.status bits set before it's booted => it's impl. depended. Status bits may be retained (I tested with one Windows version) or cleared (Linux since 2.6 kernel times) during guest's ACPI subsystem initialization. Clearing status bits (though not wrong per se) hides the unplug event from guest, and it's upto user to repeat device_del later when guest is able to handle unplug requests. 1) 18416c62e3 ("pcie: expire pending delete") 2) Fixes: cce8944cc9ef ("qdev-monitor: Forbid repeated device_del") Signed-off-by: Igor Mammedov Acked-by: Gerd Hoffmann CC: mst@redhat.com CC: anisinha@redhat.com CC: jusual@redhat.com CC: kraxel@redhat.com Message-Id: <20230418090449.2155757-1-imammedo@redhat.com> Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Reviewed-by: Ani Sinha (cherry picked from commit 0f689cf5ada4d5df5ab95c7f7aa9fc221afa855d) Signed-off-by: Michael Tokarev --- hw/acpi/pcihp.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/hw/acpi/pcihp.c b/hw/acpi/pcihp.c index 84d75e6b84..a2a3738b46 100644 --- a/hw/acpi/pcihp.c +++ b/hw/acpi/pcihp.c @@ -429,6 +429,16 @@ void acpi_pcihp_device_unplug_request_cb(HotplugHandler *hotplug_dev, * acpi_pcihp_eject_slot() when the operation is completed. */ pdev->qdev.pending_deleted_event = true; + /* if unplug was requested before OSPM is initialized, + * linux kernel will clear GPE0.sts[] bits during boot, which effectively + * hides unplug event. And than followup qmp_device_del() calls remain + * blocked by above flag permanently. + * Unblock qmp_device_del() by setting expire limit, so user can + * repeat unplug request later when OSPM has been booted. + */ + pdev->qdev.pending_deleted_expires_ms = + qemu_clock_get_ms(QEMU_CLOCK_VIRTUAL); /* 1 msec */ + s->acpi_pcihp_pci_status[bsel].down |= (1U << slot); acpi_send_event(DEVICE(hotplug_dev), ACPI_PCI_HOTPLUG_STATUS); } From 4e35bd88a547d6f1e0b512dc6530ab65b9310b21 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20Benn=C3=A9e?= Date: Mon, 24 Apr 2023 10:22:37 +0100 Subject: [PATCH 074/174] qemu-options: finesse the recommendations around -blockdev MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit We are a bit premature in recommending -blockdev/-device as the best way to configure block devices. It seems there are times the more human friendly -drive still makes sense especially when -snapshot is involved. Improve the language to hopefully make things clearer. Suggested-by: Michael Tokarev Signed-off-by: Alex Bennée Reviewed-by: Thomas Huth Cc: Markus Armbruster Cc: Kevin Wolf Message-Id: <20230424092249.58552-7-alex.bennee@linaro.org> (cherry picked from commit c1654c3e37c31fb638597efedcd07d071837b78b) Signed-off-by: Michael Tokarev --- qemu-options.hx | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/qemu-options.hx b/qemu-options.hx index 7f99d15b23..e52289479b 100644 --- a/qemu-options.hx +++ b/qemu-options.hx @@ -1140,10 +1140,22 @@ have gone through several iterations as the feature set and complexity of the block layer have grown. Many online guides to QEMU often reference older and deprecated options, which can lead to confusion. -The recommended modern way to describe disks is to use a combination of +The most explicit way to describe disks is to use a combination of ``-device`` to specify the hardware device and ``-blockdev`` to describe the backend. The device defines what the guest sees and the -backend describes how QEMU handles the data. +backend describes how QEMU handles the data. It is the only guaranteed +stable interface for describing block devices and as such is +recommended for management tools and scripting. + +The ``-drive`` option combines the device and backend into a single +command line option which is a more human friendly. There is however no +interface stability guarantee although some older board models still +need updating to work with the modern blockdev forms. + +Older options like ``-hda`` are essentially macros which expand into +``-drive`` options for various drive interfaces. The original forms +bake in a lot of assumptions from the days when QEMU was emulating a +legacy PC, they are not recommended for modern configurations. ERST @@ -1636,6 +1648,14 @@ SRST the raw disk image you use is not written back. You can however force the write back by pressing C-a s (see the :ref:`disk images` chapter in the System Emulation Users Guide). + + .. warning:: + snapshot is incompatible with ``-blockdev`` (instead use qemu-img + to manually create snapshot images to attach to your blockdev). + If you have mixed ``-blockdev`` and ``-drive`` declarations you + can use the 'snapshot' property on your drive declarations + instead of this global option. + ERST DEF("fsdev", HAS_ARG, QEMU_OPTION_fsdev, From 0a65c4588c30416b3cd7eabc0435c6f4c96a44f6 Mon Sep 17 00:00:00 2001 From: Peter Maydell Date: Thu, 20 Apr 2023 13:22:56 +0100 Subject: [PATCH 075/174] docs/about/deprecated.rst: Add "since 7.1" tag to dtb-kaslr-seed deprecation MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit In commit 5242876f37ca we deprecated the dtb-kaslr-seed property of the virt board, but forgot the "since n.n" tag in the documentation of this in deprecated.rst. This deprecation note first appeared in the 7.1 release, so retrospectively add the correct "since 7.1" annotation to it. Signed-off-by: Peter Maydell Reviewed-by: Philippe Mathieu-Daudé Reviewed-by: Alex Bennée Message-id: 20230420122256.1023709-1-peter.maydell@linaro.org (cherry picked from commit ac64ebbecf80f6bc764d120f85fe9fa28fbd9e85) Signed-off-by: Michael Tokarev --- docs/about/deprecated.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/about/deprecated.rst b/docs/about/deprecated.rst index 93affe3669..0b26c01da0 100644 --- a/docs/about/deprecated.rst +++ b/docs/about/deprecated.rst @@ -233,8 +233,8 @@ Use the more generic event ``DEVICE_UNPLUG_GUEST_ERROR`` instead. System emulator machines ------------------------ -Arm ``virt`` machine ``dtb-kaslr-seed`` property -'''''''''''''''''''''''''''''''''''''''''''''''' +Arm ``virt`` machine ``dtb-kaslr-seed`` property (since 7.1) +'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' The ``dtb-kaslr-seed`` property on the ``virt`` board has been deprecated; use the new name ``dtb-randomness`` instead. The new name From 32900bff7025d7141380a7c6ff17a5b2c26378fe Mon Sep 17 00:00:00 2001 From: Akihiko Odaki Date: Thu, 20 Apr 2023 10:21:15 +0100 Subject: [PATCH 076/174] target/arm: Initialize debug capabilities only once MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit kvm_arm_init_debug() used to be called several times on a SMP system as kvm_arch_init_vcpu() calls it. Move the call to kvm_arch_init() to make sure it will be called only once; otherwise it will overwrite pointers to memory allocated with the previous call and leak it. Fixes: e4482ab7e3 ("target-arm: kvm - add support for HW assisted debug") Suggested-by: Philippe Mathieu-Daudé Signed-off-by: Akihiko Odaki Message-id: 20230405153644.25300-1-akihiko.odaki@daynix.com Reviewed-by: Peter Maydell Signed-off-by: Peter Maydell (cherry picked from commit ad5c6ddea327758daa9f0e6edd916be39dce7dca) Signed-off-by: Michael Tokarev --- target/arm/kvm.c | 2 ++ target/arm/kvm64.c | 18 ++++-------------- target/arm/kvm_arm.h | 8 ++++++++ 3 files changed, 14 insertions(+), 14 deletions(-) diff --git a/target/arm/kvm.c b/target/arm/kvm.c index f022c644d2..84da49332c 100644 --- a/target/arm/kvm.c +++ b/target/arm/kvm.c @@ -280,6 +280,8 @@ int kvm_arch_init(MachineState *ms, KVMState *s) } } + kvm_arm_init_debug(s); + return ret; } diff --git a/target/arm/kvm64.c b/target/arm/kvm64.c index 1197253d12..810db33ccb 100644 --- a/target/arm/kvm64.c +++ b/target/arm/kvm64.c @@ -74,24 +74,16 @@ GArray *hw_breakpoints, *hw_watchpoints; #define get_hw_bp(i) (&g_array_index(hw_breakpoints, HWBreakpoint, i)) #define get_hw_wp(i) (&g_array_index(hw_watchpoints, HWWatchpoint, i)) -/** - * kvm_arm_init_debug() - check for guest debug capabilities - * @cs: CPUState - * - * kvm_check_extension returns the number of debug registers we have - * or 0 if we have none. - * - */ -static void kvm_arm_init_debug(CPUState *cs) +void kvm_arm_init_debug(KVMState *s) { - have_guest_debug = kvm_check_extension(cs->kvm_state, + have_guest_debug = kvm_check_extension(s, KVM_CAP_SET_GUEST_DEBUG); - max_hw_wps = kvm_check_extension(cs->kvm_state, KVM_CAP_GUEST_DEBUG_HW_WPS); + max_hw_wps = kvm_check_extension(s, KVM_CAP_GUEST_DEBUG_HW_WPS); hw_watchpoints = g_array_sized_new(true, true, sizeof(HWWatchpoint), max_hw_wps); - max_hw_bps = kvm_check_extension(cs->kvm_state, KVM_CAP_GUEST_DEBUG_HW_BPS); + max_hw_bps = kvm_check_extension(s, KVM_CAP_GUEST_DEBUG_HW_BPS); hw_breakpoints = g_array_sized_new(true, true, sizeof(HWBreakpoint), max_hw_bps); return; @@ -920,8 +912,6 @@ int kvm_arch_init_vcpu(CPUState *cs) } cpu->mp_affinity = mpidr & ARM64_AFFINITY_MASK; - kvm_arm_init_debug(cs); - /* Check whether user space can specify guest syndrome value */ kvm_arm_init_serror_injection(cs); diff --git a/target/arm/kvm_arm.h b/target/arm/kvm_arm.h index 99017b635c..330fbe5c72 100644 --- a/target/arm/kvm_arm.h +++ b/target/arm/kvm_arm.h @@ -18,6 +18,14 @@ #define KVM_ARM_VGIC_V2 (1 << 0) #define KVM_ARM_VGIC_V3 (1 << 1) +/** + * kvm_arm_init_debug() - initialize guest debug capabilities + * @s: KVMState + * + * Should be called only once before using guest debug capabilities. + */ +void kvm_arm_init_debug(KVMState *s); + /** * kvm_arm_vcpu_init: * @cs: CPUState From e96dc26e89e4eefa73088b0358cc389607a4cbc9 Mon Sep 17 00:00:00 2001 From: Peter Maydell Date: Mon, 24 Apr 2023 16:19:19 +0100 Subject: [PATCH 077/174] hw/net/msf2-emac: Don't modify descriptor in-place in emac_store_desc() The msf2-emac ethernet controller has functions emac_load_desc() and emac_store_desc() which read and write the in-memory descriptor blocks and handle conversion between guest and host endianness. As currently written, emac_store_desc() does the endianness conversion in-place; this means that it effectively consumes the input EmacDesc struct, because on a big-endian host the fields will be overwritten with the little-endian versions of their values. Unfortunately, in all the callsites the code continues to access fields in the EmacDesc struct after it has called emac_store_desc() -- specifically, it looks at the d.next field. The effect of this is that on a big-endian host networking doesn't work because the address of the next descriptor is corrupted. We could fix this by making the callsite avoid using the struct; but it's more robust to have emac_store_desc() leave its input alone. (emac_load_desc() also does an in-place conversion, but here this is fine, because the function is supposed to be initializing the struct.) Cc: qemu-stable@nongnu.org Signed-off-by: Peter Maydell Reviewed-by: Thomas Huth Message-id: 20230424151919.1333299-1-peter.maydell@linaro.org (cherry picked from commit d565f58b38424e9a390a7ea33ff7477bab693fda) Signed-off-by: Michael Tokarev --- hw/net/msf2-emac.c | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/hw/net/msf2-emac.c b/hw/net/msf2-emac.c index 7ccd3e5142..db3a04deb1 100644 --- a/hw/net/msf2-emac.c +++ b/hw/net/msf2-emac.c @@ -118,14 +118,18 @@ static void emac_load_desc(MSF2EmacState *s, EmacDesc *d, hwaddr desc) d->next = le32_to_cpu(d->next); } -static void emac_store_desc(MSF2EmacState *s, EmacDesc *d, hwaddr desc) +static void emac_store_desc(MSF2EmacState *s, const EmacDesc *d, hwaddr desc) { - /* Convert from host endianness into LE. */ - d->pktaddr = cpu_to_le32(d->pktaddr); - d->pktsize = cpu_to_le32(d->pktsize); - d->next = cpu_to_le32(d->next); + EmacDesc outd; + /* + * Convert from host endianness into LE. We use a local struct because + * calling code may still want to look at the fields afterwards. + */ + outd.pktaddr = cpu_to_le32(d->pktaddr); + outd.pktsize = cpu_to_le32(d->pktsize); + outd.next = cpu_to_le32(d->next); - address_space_write(&s->dma_as, desc, MEMTXATTRS_UNSPECIFIED, d, sizeof *d); + address_space_write(&s->dma_as, desc, MEMTXATTRS_UNSPECIFIED, &outd, sizeof outd); } static void msf2_dma_tx(MSF2EmacState *s) From 8e9c265f14dbc904d6e8aab1fa46f63c17c936c7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= Date: Mon, 24 Apr 2023 16:27:15 +0100 Subject: [PATCH 078/174] hw/arm/boot: Make write_bootloader() public as arm_write_bootloader() MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The arm boot.c code includes a utility function write_bootloader() which assists in writing a boot-code fragment into guest memory, including handling endianness and fixing it up with entry point addresses and similar things. This is useful not just for the boot.c code but also in board model code, so rename it to arm_write_bootloader() and make it globally visible. Since we are making it public, make its API a little neater: move the AddressSpace* argument to be next to the hwaddr argument, and allow the fixupcontext array to be const, since we never modify it in this function. Cc: qemu-stable@nongnu.org Signed-off-by: Cédric Le Goater Tested-by: Cédric Le Goater Reviewed-by: Philippe Mathieu-Daudé Signed-off-by: Peter Maydell Message-id: 20230424152717.1333930-2-peter.maydell@linaro.org [PMM: Split out from another patch by Cédric, added doc comment] Signed-off-by: Peter Maydell (cherry picked from commit 0fe43f0abf19bbe24df3dbf0613bb47ed55f1482) Signed-off-by: Michael Tokarev --- hw/arm/boot.c | 35 +++++++------------------------ include/hw/arm/boot.h | 49 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 57 insertions(+), 27 deletions(-) diff --git a/hw/arm/boot.c b/hw/arm/boot.c index 725bab8adc..8ff315f431 100644 --- a/hw/arm/boot.c +++ b/hw/arm/boot.c @@ -59,26 +59,6 @@ AddressSpace *arm_boot_address_space(ARMCPU *cpu, return cpu_get_address_space(cs, asidx); } -typedef enum { - FIXUP_NONE = 0, /* do nothing */ - FIXUP_TERMINATOR, /* end of insns */ - FIXUP_BOARDID, /* overwrite with board ID number */ - FIXUP_BOARD_SETUP, /* overwrite with board specific setup code address */ - FIXUP_ARGPTR_LO, /* overwrite with pointer to kernel args */ - FIXUP_ARGPTR_HI, /* overwrite with pointer to kernel args (high half) */ - FIXUP_ENTRYPOINT_LO, /* overwrite with kernel entry point */ - FIXUP_ENTRYPOINT_HI, /* overwrite with kernel entry point (high half) */ - FIXUP_GIC_CPU_IF, /* overwrite with GIC CPU interface address */ - FIXUP_BOOTREG, /* overwrite with boot register address */ - FIXUP_DSB, /* overwrite with correct DSB insn for cpu */ - FIXUP_MAX, -} FixupType; - -typedef struct ARMInsnFixup { - uint32_t insn; - FixupType fixup; -} ARMInsnFixup; - static const ARMInsnFixup bootloader_aarch64[] = { { 0x580000c0 }, /* ldr x0, arg ; Load the lower 32-bits of DTB */ { 0xaa1f03e1 }, /* mov x1, xzr */ @@ -149,9 +129,10 @@ static const ARMInsnFixup smpboot[] = { { 0, FIXUP_TERMINATOR } }; -static void write_bootloader(const char *name, hwaddr addr, - const ARMInsnFixup *insns, uint32_t *fixupcontext, - AddressSpace *as) +void arm_write_bootloader(const char *name, + AddressSpace *as, hwaddr addr, + const ARMInsnFixup *insns, + const uint32_t *fixupcontext) { /* Fix up the specified bootloader fragment and write it into * guest memory using rom_add_blob_fixed(). fixupcontext is @@ -213,8 +194,8 @@ static void default_write_secondary(ARMCPU *cpu, fixupcontext[FIXUP_DSB] = CP15_DSB_INSN; } - write_bootloader("smpboot", info->smp_loader_start, - smpboot, fixupcontext, as); + arm_write_bootloader("smpboot", as, info->smp_loader_start, + smpboot, fixupcontext); } void arm_write_secure_board_setup_dummy_smc(ARMCPU *cpu, @@ -1174,8 +1155,8 @@ static void arm_setup_direct_kernel_boot(ARMCPU *cpu, fixupcontext[FIXUP_ENTRYPOINT_LO] = entry; fixupcontext[FIXUP_ENTRYPOINT_HI] = entry >> 32; - write_bootloader("bootloader", info->loader_start, - primary_loader, fixupcontext, as); + arm_write_bootloader("bootloader", as, info->loader_start, + primary_loader, fixupcontext); if (info->write_board_setup) { info->write_board_setup(cpu, info); diff --git a/include/hw/arm/boot.h b/include/hw/arm/boot.h index f18cc3064f..80c492d742 100644 --- a/include/hw/arm/boot.h +++ b/include/hw/arm/boot.h @@ -183,4 +183,53 @@ void arm_write_secure_board_setup_dummy_smc(ARMCPU *cpu, const struct arm_boot_info *info, hwaddr mvbar_addr); +typedef enum { + FIXUP_NONE = 0, /* do nothing */ + FIXUP_TERMINATOR, /* end of insns */ + FIXUP_BOARDID, /* overwrite with board ID number */ + FIXUP_BOARD_SETUP, /* overwrite with board specific setup code address */ + FIXUP_ARGPTR_LO, /* overwrite with pointer to kernel args */ + FIXUP_ARGPTR_HI, /* overwrite with pointer to kernel args (high half) */ + FIXUP_ENTRYPOINT_LO, /* overwrite with kernel entry point */ + FIXUP_ENTRYPOINT_HI, /* overwrite with kernel entry point (high half) */ + FIXUP_GIC_CPU_IF, /* overwrite with GIC CPU interface address */ + FIXUP_BOOTREG, /* overwrite with boot register address */ + FIXUP_DSB, /* overwrite with correct DSB insn for cpu */ + FIXUP_MAX, +} FixupType; + +typedef struct ARMInsnFixup { + uint32_t insn; + FixupType fixup; +} ARMInsnFixup; + +/** + * arm_write_bootloader - write a bootloader to guest memory + * @name: name of the bootloader blob + * @as: AddressSpace to write the bootloader + * @addr: guest address to write it + * @insns: the blob to be loaded + * @fixupcontext: context to be used for any fixups in @insns + * + * Write a bootloader to guest memory at address @addr in the address + * space @as. @name is the name to use for the resulting ROM blob, so + * it should be unique in the system and reasonably identifiable for debugging. + * + * @insns must be an array of ARMInsnFixup structs, each of which has + * one 32-bit value to be written to the guest memory, and a fixup to be + * applied to the value. FIXUP_NONE (do nothing) is value 0, so effectively + * the fixup is optional when writing a struct initializer. + * The final entry in the array must be { 0, FIXUP_TERMINATOR }. + * + * All other supported fixup types have the semantics "ignore insn + * and instead use the value from the array element @fixupcontext[fixup]". + * The caller should therefore provide @fixupcontext as an array of + * size FIXUP_MAX whose elements have been initialized for at least + * the entries that @insns refers to. + */ +void arm_write_bootloader(const char *name, + AddressSpace *as, hwaddr addr, + const ARMInsnFixup *insns, + const uint32_t *fixupcontext); + #endif /* HW_ARM_BOOT_H */ From 5ebe440c2b26cd953fc9014a40cd13e02bc334c2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= Date: Mon, 24 Apr 2023 16:27:16 +0100 Subject: [PATCH 079/174] hw/arm/aspeed: Use arm_write_bootloader() to write the bootloader MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit When writing the secondary-CPU stub boot loader code to the guest, use arm_write_bootloader() instead of directly calling rom_add_blob_fixed(). This fixes a bug on big-endian hosts, because arm_write_bootloader() will correctly byte-swap the host-byte-order array values into the guest-byte-order to write into the guest memory. Cc: qemu-stable@nongnu.org Signed-off-by: Cédric Le Goater Tested-by: Cédric Le Goater Reviewed-by: Philippe Mathieu-Daudé Signed-off-by: Peter Maydell Message-id: 20230424152717.1333930-3-peter.maydell@linaro.org [PMM: Moved the "make arm_write_bootloader() function public" part to its own patch; updated commit message to note that this fixes an actual bug; adjust to the API changes noted in previous commit] Signed-off-by: Peter Maydell (cherry picked from commit 902bba549fc386b4b9805320ed1a2e5b68478bdd) Signed-off-by: Michael Tokarev --- hw/arm/aspeed.c | 38 ++++++++++++++++++++------------------ 1 file changed, 20 insertions(+), 18 deletions(-) diff --git a/hw/arm/aspeed.c b/hw/arm/aspeed.c index 55f114ef72..97fb1916ec 100644 --- a/hw/arm/aspeed.c +++ b/hw/arm/aspeed.c @@ -188,33 +188,35 @@ struct AspeedMachineState { static void aspeed_write_smpboot(ARMCPU *cpu, const struct arm_boot_info *info) { - static const uint32_t poll_mailbox_ready[] = { + AddressSpace *as = arm_boot_address_space(cpu, info); + static const ARMInsnFixup poll_mailbox_ready[] = { /* * r2 = per-cpu go sign value * r1 = AST_SMP_MBOX_FIELD_ENTRY * r0 = AST_SMP_MBOX_FIELD_GOSIGN */ - 0xee100fb0, /* mrc p15, 0, r0, c0, c0, 5 */ - 0xe21000ff, /* ands r0, r0, #255 */ - 0xe59f201c, /* ldr r2, [pc, #28] */ - 0xe1822000, /* orr r2, r2, r0 */ + { 0xee100fb0 }, /* mrc p15, 0, r0, c0, c0, 5 */ + { 0xe21000ff }, /* ands r0, r0, #255 */ + { 0xe59f201c }, /* ldr r2, [pc, #28] */ + { 0xe1822000 }, /* orr r2, r2, r0 */ - 0xe59f1018, /* ldr r1, [pc, #24] */ - 0xe59f0018, /* ldr r0, [pc, #24] */ + { 0xe59f1018 }, /* ldr r1, [pc, #24] */ + { 0xe59f0018 }, /* ldr r0, [pc, #24] */ - 0xe320f002, /* wfe */ - 0xe5904000, /* ldr r4, [r0] */ - 0xe1520004, /* cmp r2, r4 */ - 0x1afffffb, /* bne */ - 0xe591f000, /* ldr pc, [r1] */ - AST_SMP_MBOX_GOSIGN, - AST_SMP_MBOX_FIELD_ENTRY, - AST_SMP_MBOX_FIELD_GOSIGN, + { 0xe320f002 }, /* wfe */ + { 0xe5904000 }, /* ldr r4, [r0] */ + { 0xe1520004 }, /* cmp r2, r4 */ + { 0x1afffffb }, /* bne */ + { 0xe591f000 }, /* ldr pc, [r1] */ + { AST_SMP_MBOX_GOSIGN }, + { AST_SMP_MBOX_FIELD_ENTRY }, + { AST_SMP_MBOX_FIELD_GOSIGN }, + { 0, FIXUP_TERMINATOR } }; + static const uint32_t fixupcontext[FIXUP_MAX] = { 0 }; - rom_add_blob_fixed("aspeed.smpboot", poll_mailbox_ready, - sizeof(poll_mailbox_ready), - info->smp_loader_start); + arm_write_bootloader("aspeed.smpboot", as, info->smp_loader_start, + poll_mailbox_ready, fixupcontext); } static void aspeed_reset_secondary(ARMCPU *cpu, From d46d4036160513ed07b0022a37bd22f425ca113d Mon Sep 17 00:00:00 2001 From: Peter Maydell Date: Mon, 24 Apr 2023 16:27:17 +0100 Subject: [PATCH 080/174] hw/arm/raspi: Use arm_write_bootloader() to write boot code MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit When writing the secondary-CPU stub boot loader code to the guest, use arm_write_bootloader() instead of directly calling rom_add_blob_fixed(). This fixes a bug on big-endian hosts, because arm_write_bootloader() will correctly byte-swap the host-byte-order array values into the guest-byte-order to write into the guest memory. Cc: qemu-stable@nongnu.org Signed-off-by: Peter Maydell Tested-by: Cédric Le Goater Reviewed-by: Philippe Mathieu-Daudé Message-id: 20230424152717.1333930-4-peter.maydell@linaro.org (cherry picked from commit 0acbdb4c4ab6b0a09f159bae4899b0737cf64242) Signed-off-by: Michael Tokarev --- hw/arm/raspi.c | 64 +++++++++++++++++++++++++++----------------------- 1 file changed, 34 insertions(+), 30 deletions(-) diff --git a/hw/arm/raspi.c b/hw/arm/raspi.c index 92d068d1f9..a7d287b1a8 100644 --- a/hw/arm/raspi.c +++ b/hw/arm/raspi.c @@ -16,6 +16,7 @@ #include "qemu/units.h" #include "qemu/cutils.h" #include "qapi/error.h" +#include "hw/arm/boot.h" #include "hw/arm/bcm2836.h" #include "hw/registerfields.h" #include "qemu/error-report.h" @@ -124,20 +125,22 @@ static const char *board_type(uint32_t board_rev) static void write_smpboot(ARMCPU *cpu, const struct arm_boot_info *info) { - static const uint32_t smpboot[] = { - 0xe1a0e00f, /* mov lr, pc */ - 0xe3a0fe00 + (BOARDSETUP_ADDR >> 4), /* mov pc, BOARDSETUP_ADDR */ - 0xee100fb0, /* mrc p15, 0, r0, c0, c0, 5;get core ID */ - 0xe7e10050, /* ubfx r0, r0, #0, #2 ;extract LSB */ - 0xe59f5014, /* ldr r5, =0x400000CC ;load mbox base */ - 0xe320f001, /* 1: yield */ - 0xe7953200, /* ldr r3, [r5, r0, lsl #4] ;read mbox for our core*/ - 0xe3530000, /* cmp r3, #0 ;spin while zero */ - 0x0afffffb, /* beq 1b */ - 0xe7853200, /* str r3, [r5, r0, lsl #4] ;clear mbox */ - 0xe12fff13, /* bx r3 ;jump to target */ - 0x400000cc, /* (constant: mailbox 3 read/clear base) */ + static const ARMInsnFixup smpboot[] = { + { 0xe1a0e00f }, /* mov lr, pc */ + { 0xe3a0fe00 + (BOARDSETUP_ADDR >> 4) }, /* mov pc, BOARDSETUP_ADDR */ + { 0xee100fb0 }, /* mrc p15, 0, r0, c0, c0, 5;get core ID */ + { 0xe7e10050 }, /* ubfx r0, r0, #0, #2 ;extract LSB */ + { 0xe59f5014 }, /* ldr r5, =0x400000CC ;load mbox base */ + { 0xe320f001 }, /* 1: yield */ + { 0xe7953200 }, /* ldr r3, [r5, r0, lsl #4] ;read mbox for our core */ + { 0xe3530000 }, /* cmp r3, #0 ;spin while zero */ + { 0x0afffffb }, /* beq 1b */ + { 0xe7853200 }, /* str r3, [r5, r0, lsl #4] ;clear mbox */ + { 0xe12fff13 }, /* bx r3 ;jump to target */ + { 0x400000cc }, /* (constant: mailbox 3 read/clear base) */ + { 0, FIXUP_TERMINATOR } }; + static const uint32_t fixupcontext[FIXUP_MAX] = { 0 }; /* check that we don't overrun board setup vectors */ QEMU_BUILD_BUG_ON(SMPBOOT_ADDR + sizeof(smpboot) > MVBAR_ADDR); @@ -145,9 +148,8 @@ static void write_smpboot(ARMCPU *cpu, const struct arm_boot_info *info) QEMU_BUILD_BUG_ON((BOARDSETUP_ADDR & 0xf) != 0 || (BOARDSETUP_ADDR >> 4) >= 0x100); - rom_add_blob_fixed_as("raspi_smpboot", smpboot, sizeof(smpboot), - info->smp_loader_start, - arm_boot_address_space(cpu, info)); + arm_write_bootloader("raspi_smpboot", arm_boot_address_space(cpu, info), + info->smp_loader_start, smpboot, fixupcontext); } static void write_smpboot64(ARMCPU *cpu, const struct arm_boot_info *info) @@ -161,26 +163,28 @@ static void write_smpboot64(ARMCPU *cpu, const struct arm_boot_info *info) * the primary CPU goes into the kernel. We put these variables inside * a rom blob, so that the reset for ROM contents zeroes them for us. */ - static const uint32_t smpboot[] = { - 0xd2801b05, /* mov x5, 0xd8 */ - 0xd53800a6, /* mrs x6, mpidr_el1 */ - 0x924004c6, /* and x6, x6, #0x3 */ - 0xd503205f, /* spin: wfe */ - 0xf86678a4, /* ldr x4, [x5,x6,lsl #3] */ - 0xb4ffffc4, /* cbz x4, spin */ - 0xd2800000, /* mov x0, #0x0 */ - 0xd2800001, /* mov x1, #0x0 */ - 0xd2800002, /* mov x2, #0x0 */ - 0xd2800003, /* mov x3, #0x0 */ - 0xd61f0080, /* br x4 */ + static const ARMInsnFixup smpboot[] = { + { 0xd2801b05 }, /* mov x5, 0xd8 */ + { 0xd53800a6 }, /* mrs x6, mpidr_el1 */ + { 0x924004c6 }, /* and x6, x6, #0x3 */ + { 0xd503205f }, /* spin: wfe */ + { 0xf86678a4 }, /* ldr x4, [x5,x6,lsl #3] */ + { 0xb4ffffc4 }, /* cbz x4, spin */ + { 0xd2800000 }, /* mov x0, #0x0 */ + { 0xd2800001 }, /* mov x1, #0x0 */ + { 0xd2800002 }, /* mov x2, #0x0 */ + { 0xd2800003 }, /* mov x3, #0x0 */ + { 0xd61f0080 }, /* br x4 */ + { 0, FIXUP_TERMINATOR } }; + static const uint32_t fixupcontext[FIXUP_MAX] = { 0 }; static const uint64_t spintables[] = { 0, 0, 0, 0 }; - rom_add_blob_fixed_as("raspi_smpboot", smpboot, sizeof(smpboot), - info->smp_loader_start, as); + arm_write_bootloader("raspi_smpboot", as, info->smp_loader_start, + smpboot, fixupcontext); rom_add_blob_fixed_as("raspi_spintables", spintables, sizeof(spintables), SPINTABLE_ADDR, as); } From 5eb742fce562dc7f364337a5bbd08bc200ddc0e6 Mon Sep 17 00:00:00 2001 From: Peter Maydell Date: Mon, 24 Apr 2023 16:28:33 +0100 Subject: [PATCH 081/174] hw/intc/allwinner-a10-pic: Don't use set_bit()/clear_bit() MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The Allwinner PIC model uses set_bit() and clear_bit() to update the values in its irq_pending[] array when an interrupt arrives. However it is using these functions wrongly: they work on an array of type 'long', and it is passing an array of type 'uint32_t'. Because the code manually figures out the right array element, this works on little-endian hosts and on 32-bit big-endian hosts, where bits 0..31 in a 'long' are in the same place as they are in a 'uint32_t'. However it breaks on 64-bit big-endian hosts. Remove the use of set_bit() and clear_bit() in favour of using deposit32() on the array element. This fixes a bug where on big-endian 64-bit hosts the guest kernel would hang early on in bootup. Cc: qemu-stable@nongnu.org Signed-off-by: Peter Maydell Reviewed-by: Thomas Huth Reviewed-by: Philippe Mathieu-Daudé Message-id: 20230424152833.1334136-1-peter.maydell@linaro.org (cherry picked from commit 2c5fa0778c3b4307f9f3af7f27886c46d129c62f) Signed-off-by: Michael Tokarev --- hw/intc/allwinner-a10-pic.c | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/hw/intc/allwinner-a10-pic.c b/hw/intc/allwinner-a10-pic.c index 8cca124807..4875e68ba6 100644 --- a/hw/intc/allwinner-a10-pic.c +++ b/hw/intc/allwinner-a10-pic.c @@ -49,12 +49,9 @@ static void aw_a10_pic_update(AwA10PICState *s) static void aw_a10_pic_set_irq(void *opaque, int irq, int level) { AwA10PICState *s = opaque; + uint32_t *pending_reg = &s->irq_pending[irq / 32]; - if (level) { - set_bit(irq % 32, (void *)&s->irq_pending[irq / 32]); - } else { - clear_bit(irq % 32, (void *)&s->irq_pending[irq / 32]); - } + *pending_reg = deposit32(*pending_reg, irq % 32, 1, level); aw_a10_pic_update(s); } From e4e79c8e00753a317adbd69f89c79072b5bb397a Mon Sep 17 00:00:00 2001 From: Peter Maydell Date: Mon, 24 Apr 2023 16:39:08 +0100 Subject: [PATCH 082/174] target/arm: Define and use new load_cpu_field_low32() In several places in the 32-bit Arm translate.c, we try to use load_cpu_field() to load from a CPUARMState field into a TCGv_i32 where the field is actually 64-bit. This works on little-endian hosts, but gives the wrong half of the register on big-endian. Add a new load_cpu_field_low32() which loads the low 32 bits of a 64-bit field into a TCGv_i32. The new macro includes a compile-time check against accidentally using it on a field of the wrong size. Use it to fix the two places in the code where we were using load_cpu_field() on a 64-bit field. This fixes a bug where on big-endian hosts the guest would crash after executing an ERET instruction, and a more corner case one where some UNDEFs for attempted accesses to MSR banked registers from Secure EL1 might go to the wrong EL. Cc: qemu-stable@nongnu.org Signed-off-by: Peter Maydell Reviewed-by: Richard Henderson Message-id: 20230424153909.1419369-2-peter.maydell@linaro.org (cherry picked from commit 7f3a3d3dc433dc06c0adb480729af80f9c8e3739) Signed-off-by: Michael Tokarev --- target/arm/translate-a32.h | 7 +++++++ target/arm/translate.c | 4 ++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/target/arm/translate-a32.h b/target/arm/translate-a32.h index 5339c22f1e..99eea85fa8 100644 --- a/target/arm/translate-a32.h +++ b/target/arm/translate-a32.h @@ -61,6 +61,13 @@ static inline TCGv_i32 load_cpu_offset(int offset) #define load_cpu_field(name) load_cpu_offset(offsetof(CPUARMState, name)) +/* Load from the low half of a 64-bit field to a TCGv_i32 */ +#define load_cpu_field_low32(name) \ + ({ \ + QEMU_BUILD_BUG_ON(sizeof_field(CPUARMState, name) != 8); \ + load_cpu_offset(offsetoflow32(CPUARMState, name)); \ + }) + void store_cpu_offset(TCGv_i32 var, int offset, int size); #define store_cpu_field(var, name) \ diff --git a/target/arm/translate.c b/target/arm/translate.c index 1dcaefb8e7..a06da05640 100644 --- a/target/arm/translate.c +++ b/target/arm/translate.c @@ -2886,7 +2886,7 @@ static bool msr_banked_access_decode(DisasContext *s, int r, int sysm, int rn, if (arm_dc_feature(s, ARM_FEATURE_AARCH64) && dc_isar_feature(aa64_sel2, s)) { /* Target EL is EL<3 minus SCR_EL3.EEL2> */ - tcg_el = load_cpu_field(cp15.scr_el3); + tcg_el = load_cpu_field_low32(cp15.scr_el3); tcg_gen_sextract_i32(tcg_el, tcg_el, ctz32(SCR_EEL2), 1); tcg_gen_addi_i32(tcg_el, tcg_el, 3); } else { @@ -6558,7 +6558,7 @@ static bool trans_ERET(DisasContext *s, arg_ERET *a) } if (s->current_el == 2) { /* ERET from Hyp uses ELR_Hyp, not LR */ - tmp = load_cpu_field(elr_el[2]); + tmp = load_cpu_field_low32(elr_el[2]); } else { tmp = load_reg(s, 14); } From 4b02ac725a5e65a838c8a21be54d6325365b5e1f Mon Sep 17 00:00:00 2001 From: Peter Maydell Date: Mon, 24 Apr 2023 17:50:52 +0100 Subject: [PATCH 083/174] hw/sd/allwinner-sdhost: Correctly byteswap descriptor fields MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit In allwinner_sdhost_process_desc() we just read directly from guest memory into a host TransferDescriptor struct and back. This only works on little-endian hosts. Abstract the reading and writing of descriptors into functions that handle the byte-swapping so that TransferDescriptor structs as seen by the rest of the code are always in host-order. This fixes a failure of one of the avocado tests on s390. Cc: qemu-stable@nongnu.org Signed-off-by: Peter Maydell Reviewed-by: Thomas Huth Reviewed-by: Alex Bennée Reviewed-by: Philippe Mathieu-Daudé Message-id: 20230424165053.1428857-2-peter.maydell@linaro.org (cherry picked from commit 3e20d90824c262de6887aa1bc52af94db69e4310) Signed-off-by: Michael Tokarev --- hw/sd/allwinner-sdhost.c | 31 ++++++++++++++++++++++++++----- 1 file changed, 26 insertions(+), 5 deletions(-) diff --git a/hw/sd/allwinner-sdhost.c b/hw/sd/allwinner-sdhost.c index 51e5e90830..92a0f42708 100644 --- a/hw/sd/allwinner-sdhost.c +++ b/hw/sd/allwinner-sdhost.c @@ -302,6 +302,30 @@ static void allwinner_sdhost_auto_stop(AwSdHostState *s) } } +static void read_descriptor(AwSdHostState *s, hwaddr desc_addr, + TransferDescriptor *desc) +{ + uint32_t desc_words[4]; + dma_memory_read(&s->dma_as, desc_addr, &desc_words, sizeof(desc_words), + MEMTXATTRS_UNSPECIFIED); + desc->status = le32_to_cpu(desc_words[0]); + desc->size = le32_to_cpu(desc_words[1]); + desc->addr = le32_to_cpu(desc_words[2]); + desc->next = le32_to_cpu(desc_words[3]); +} + +static void write_descriptor(AwSdHostState *s, hwaddr desc_addr, + const TransferDescriptor *desc) +{ + uint32_t desc_words[4]; + desc_words[0] = cpu_to_le32(desc->status); + desc_words[1] = cpu_to_le32(desc->size); + desc_words[2] = cpu_to_le32(desc->addr); + desc_words[3] = cpu_to_le32(desc->next); + dma_memory_write(&s->dma_as, desc_addr, &desc_words, sizeof(desc_words), + MEMTXATTRS_UNSPECIFIED); +} + static uint32_t allwinner_sdhost_process_desc(AwSdHostState *s, hwaddr desc_addr, TransferDescriptor *desc, @@ -312,9 +336,7 @@ static uint32_t allwinner_sdhost_process_desc(AwSdHostState *s, uint32_t num_bytes = max_bytes; uint8_t buf[1024]; - /* Read descriptor */ - dma_memory_read(&s->dma_as, desc_addr, desc, sizeof(*desc), - MEMTXATTRS_UNSPECIFIED); + read_descriptor(s, desc_addr, desc); if (desc->size == 0) { desc->size = klass->max_desc_size; } else if (desc->size > klass->max_desc_size) { @@ -356,8 +378,7 @@ static uint32_t allwinner_sdhost_process_desc(AwSdHostState *s, /* Clear hold flag and flush descriptor */ desc->status &= ~DESC_STATUS_HOLD; - dma_memory_write(&s->dma_as, desc_addr, desc, sizeof(*desc), - MEMTXATTRS_UNSPECIFIED); + write_descriptor(s, desc_addr, desc); return num_done; } From ec979ff52c1026a85595062c5e03a31a6f2fb786 Mon Sep 17 00:00:00 2001 From: Peter Maydell Date: Mon, 24 Apr 2023 17:50:53 +0100 Subject: [PATCH 084/174] hw/net/allwinner-sun8i-emac: Correctly byteswap descriptor fields MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit In allwinner-sun8i-emac we just read directly from guest memory into a host FrameDescriptor struct and back. This only works on little-endian hosts. Reading and writing of descriptors is already abstracted into functions; make those functions also handle the byte-swapping so that TransferDescriptor structs as seen by the rest of the code are always in host-order, and fix two places that were doing ad-hoc descriptor reading without using the functions. Cc: qemu-stable@nongnu.org Signed-off-by: Peter Maydell Reviewed-by: Thomas Huth Reviewed-by: Alex Bennée Reviewed-by: Philippe Mathieu-Daudé Message-id: 20230424165053.1428857-3-peter.maydell@linaro.org (cherry picked from commit a4ae17e5ec512862bf73e40dfbb1e7db71f2c1e7) Signed-off-by: Michael Tokarev --- hw/net/allwinner-sun8i-emac.c | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/hw/net/allwinner-sun8i-emac.c b/hw/net/allwinner-sun8i-emac.c index ecc0245fe8..c3fed5fcbe 100644 --- a/hw/net/allwinner-sun8i-emac.c +++ b/hw/net/allwinner-sun8i-emac.c @@ -350,8 +350,13 @@ static void allwinner_sun8i_emac_get_desc(AwSun8iEmacState *s, FrameDescriptor *desc, uint32_t phys_addr) { - dma_memory_read(&s->dma_as, phys_addr, desc, sizeof(*desc), + uint32_t desc_words[4]; + dma_memory_read(&s->dma_as, phys_addr, &desc_words, sizeof(desc_words), MEMTXATTRS_UNSPECIFIED); + desc->status = le32_to_cpu(desc_words[0]); + desc->status2 = le32_to_cpu(desc_words[1]); + desc->addr = le32_to_cpu(desc_words[2]); + desc->next = le32_to_cpu(desc_words[3]); } static uint32_t allwinner_sun8i_emac_next_desc(AwSun8iEmacState *s, @@ -400,10 +405,15 @@ static uint32_t allwinner_sun8i_emac_tx_desc(AwSun8iEmacState *s, } static void allwinner_sun8i_emac_flush_desc(AwSun8iEmacState *s, - FrameDescriptor *desc, + const FrameDescriptor *desc, uint32_t phys_addr) { - dma_memory_write(&s->dma_as, phys_addr, desc, sizeof(*desc), + uint32_t desc_words[4]; + desc_words[0] = cpu_to_le32(desc->status); + desc_words[1] = cpu_to_le32(desc->status2); + desc_words[2] = cpu_to_le32(desc->addr); + desc_words[3] = cpu_to_le32(desc->next); + dma_memory_write(&s->dma_as, phys_addr, &desc_words, sizeof(desc_words), MEMTXATTRS_UNSPECIFIED); } @@ -638,8 +648,7 @@ static uint64_t allwinner_sun8i_emac_read(void *opaque, hwaddr offset, break; case REG_TX_CUR_BUF: /* Transmit Current Buffer */ if (s->tx_desc_curr != 0) { - dma_memory_read(&s->dma_as, s->tx_desc_curr, &desc, sizeof(desc), - MEMTXATTRS_UNSPECIFIED); + allwinner_sun8i_emac_get_desc(s, &desc, s->tx_desc_curr); value = desc.addr; } else { value = 0; @@ -652,8 +661,7 @@ static uint64_t allwinner_sun8i_emac_read(void *opaque, hwaddr offset, break; case REG_RX_CUR_BUF: /* Receive Current Buffer */ if (s->rx_desc_curr != 0) { - dma_memory_read(&s->dma_as, s->rx_desc_curr, &desc, sizeof(desc), - MEMTXATTRS_UNSPECIFIED); + allwinner_sun8i_emac_get_desc(s, &desc, s->rx_desc_curr); value = desc.addr; } else { value = 0; From 9b300a100c6db039d32e444d587c292369585eee Mon Sep 17 00:00:00 2001 From: Shivaprasad G Bhat Date: Tue, 2 May 2023 20:55:30 +0530 Subject: [PATCH 085/174] softfloat: Fix the incorrect computation in float32_exp2 The float32_exp2 function is computing wrong exponent of 2. For example, with the following set of values {0.1, 2.0, 2.0, -1.0}, the expected output would be {1.071773, 4.000000, 4.000000, 0.500000}. Instead, the function is computing {1.119102, 3.382044, 3.382044, -0.191022} Looking at the code, the float32_exp2() attempts to do this 2 3 4 5 n x x x x x x x e = 1 + --- + --- + --- + --- + --- + ... + --- + ... 1! 2! 3! 4! 5! n! But because of the typo it ends up doing x x x x x x x e = 1 + --- + --- + --- + --- + --- + ... + --- + ... 1! 2! 3! 4! 5! n! This is because instead of the xnp which holds the numerator, parts_muladd is using the xp which is just 'x'. Commit '572c4d862ff2' refactored this function, and mistakenly used xp instead of xnp. Cc: qemu-stable@nongnu.org Fixes: 572c4d862ff2 "softfloat: Convert float32_exp2 to FloatParts" Partially-Resolves: https://gitlab.com/qemu-project/qemu/-/issues/1623 Reported-By: Luca Barbato (https://gitlab.com/lu-zero) Signed-off-by: Shivaprasad G Bhat Signed-off-by: Vaibhav Jain Message-Id: <168304110865.537992.13059030916325018670.stgit@localhost.localdomain> Reviewed-by: Richard Henderson Signed-off-by: Richard Henderson (cherry picked from commit 1098cc3fcf952763fc9fd72c1c8fda30a18cc8ea) Signed-off-by: Michael Tokarev --- fpu/softfloat.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fpu/softfloat.c b/fpu/softfloat.c index c7454c3eb1..108f9cb224 100644 --- a/fpu/softfloat.c +++ b/fpu/softfloat.c @@ -5135,7 +5135,7 @@ float32 float32_exp2(float32 a, float_status *status) float64_unpack_canonical(&rp, float64_one, status); for (i = 0 ; i < 15 ; i++) { float64_unpack_canonical(&tp, float32_exp2_coefficients[i], status); - rp = *parts_muladd(&tp, &xp, &rp, 0, status); + rp = *parts_muladd(&tp, &xnp, &rp, 0, status); xnp = *parts_mul(&xnp, &xp, status); } From e3074f666f9346752edc96eb33b2faf6b56ee0e3 Mon Sep 17 00:00:00 2001 From: Paolo Bonzini Date: Thu, 4 May 2023 10:20:46 +0200 Subject: [PATCH 086/174] meson: leave unnecessary modules out of the build meson.build files choose whether to build modules based on foo.found() expressions. If a feature is enabled (e.g. --enable-gtk), these expressions are true even if the code is not used by any emulator, and this results in an unexpected difference between modular and non-modular builds. For non-modular builds, the files are not included in any binary, and therefore the source files are never processed. For modular builds, however, all .so files are unconditionally built by default, and therefore a normal "make" tries to build them. However, the corresponding trace-*.h files are absent due to this conditional: if have_system trace_events_subdirs += [ ... 'ui', ... ] endif which was added to avoid wasting time running tracetool on unused trace-events files. This causes a compilation failure; fix it by skipping module builds entirely if (depending on the module directory) have_block or have_system are false. Reported-by: Michael Tokarev Cc: qemu-stable@nongnu.org Signed-off-by: Paolo Bonzini (cherry picked from commit ef709860ea12ec59c4cd7373bd2fd7a4e50143ee) Signed-off-by: Michael Tokarev --- meson.build | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/meson.build b/meson.build index b88867ca9d..450c48a9f0 100644 --- a/meson.build +++ b/meson.build @@ -3164,6 +3164,10 @@ modinfo_files = [] block_mods = [] softmmu_mods = [] foreach d, list : modules + if not (d == 'block' ? have_block : have_system) + continue + endif + foreach m, module_ss : list if enable_modules and targetos != 'windows' module_ss = module_ss.apply(config_all, strict: false) From 89640e03ecfbe5eb05f0b39cdc83d93fbff0c739 Mon Sep 17 00:00:00 2001 From: Kevin Wolf Date: Wed, 3 May 2023 16:01:42 +0200 Subject: [PATCH 087/174] block: Fix use after free in blockdev_mark_auto_del() job_cancel_locked() drops the job list lock temporarily and it may call aio_poll(). We must assume that the list has changed after this call. Also, with unlucky timing, it can end up freeing the job during job_completed_txn_abort_locked(), making the job pointer invalid, too. For both reasons, we can't just continue at block_job_next_locked(job). Instead, start at the head of the list again after job_cancel_locked() and skip those jobs that we already cancelled (or that are completing anyway). Cc: qemu-stable@nongnu.org Signed-off-by: Kevin Wolf Message-Id: <20230503140142.474404-1-kwolf@redhat.com> Reviewed-by: Stefan Hajnoczi Signed-off-by: Kevin Wolf (cherry picked from commit e2626874a32602d4e52971c786ef5ffb4430629d) Signed-off-by: Michael Tokarev --- blockdev.c | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/blockdev.c b/blockdev.c index 3f1dec6242..ae27a41efa 100644 --- a/blockdev.c +++ b/blockdev.c @@ -152,12 +152,22 @@ void blockdev_mark_auto_del(BlockBackend *blk) JOB_LOCK_GUARD(); - for (job = block_job_next_locked(NULL); job; - job = block_job_next_locked(job)) { - if (block_job_has_bdrv(job, blk_bs(blk))) { + do { + job = block_job_next_locked(NULL); + while (job && (job->job.cancelled || + job->job.deferred_to_main_loop || + !block_job_has_bdrv(job, blk_bs(blk)))) + { + job = block_job_next_locked(job); + } + if (job) { + /* + * This drops the job lock temporarily and polls, so we need to + * restart processing the list from the start after this. + */ job_cancel_locked(&job->job, false); } - } + } while (job); dinfo->auto_del = 1; } From 666e6bbf85c4f2adc100784c8f27f7c4a8e5cc78 Mon Sep 17 00:00:00 2001 From: LIU Zhiwei Date: Fri, 24 Mar 2023 14:40:11 +0800 Subject: [PATCH 088/174] target/riscv: Fix itrigger when icount is used When I boot a ubuntu image, QEMU output a "Bad icount read" message and exit. The reason is that when execute helper_mret or helper_sret, it will cause a call to icount_get_raw_locked (), which needs set can_do_io flag on cpustate. Thus we setting this flag when execute these two instructions. Signed-off-by: LIU Zhiwei Reviewed-by: Weiwei Li Acked-by: Alistair Francis Message-Id: <20230324064011.976-1-zhiwei_liu@linux.alibaba.com> Signed-off-by: Alistair Francis (cherry picked from commit df3ac6da476e346a17bad5bc843de1135a269229) Signed-off-by: Michael Tokarev --- target/riscv/insn_trans/trans_privileged.c.inc | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/target/riscv/insn_trans/trans_privileged.c.inc b/target/riscv/insn_trans/trans_privileged.c.inc index 3281408a87..74e2894462 100644 --- a/target/riscv/insn_trans/trans_privileged.c.inc +++ b/target/riscv/insn_trans/trans_privileged.c.inc @@ -77,6 +77,9 @@ static bool trans_sret(DisasContext *ctx, arg_sret *a) #ifndef CONFIG_USER_ONLY if (has_ext(ctx, RVS)) { decode_save_opc(ctx); + if (tb_cflags(ctx->base.tb) & CF_USE_ICOUNT) { + gen_io_start(); + } gen_helper_sret(cpu_pc, cpu_env); tcg_gen_exit_tb(NULL, 0); /* no chaining */ ctx->base.is_jmp = DISAS_NORETURN; @@ -93,6 +96,9 @@ static bool trans_mret(DisasContext *ctx, arg_mret *a) { #ifndef CONFIG_USER_ONLY decode_save_opc(ctx); + if (tb_cflags(ctx->base.tb) & CF_USE_ICOUNT) { + gen_io_start(); + } gen_helper_mret(cpu_pc, cpu_env); tcg_gen_exit_tb(NULL, 0); /* no chaining */ ctx->base.is_jmp = DISAS_NORETURN; From 0e262ee8e9c9f7c2adbaceb83920344533e2ed95 Mon Sep 17 00:00:00 2001 From: Richard Henderson Date: Fri, 5 May 2023 21:40:49 +0100 Subject: [PATCH 089/174] accel/tcg: Fix atomic_mmu_lookup for reads MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit A copy-paste bug had us looking at the victim cache for writes. Cc: qemu-stable@nongnu.org Reported-by: Peter Maydell Signed-off-by: Richard Henderson Fixes: 08dff435e2 ("tcg: Probe the proper permissions for atomic ops") Reviewed-by: Philippe Mathieu-Daudé Reviewed-by: Peter Maydell Message-Id: <20230505204049.352469-1-richard.henderson@linaro.org> (cherry picked from commit 8c313254e61ed47a1bf4a2db714b25cdd94fbcce) Signed-off-by: Michael Tokarev --- accel/tcg/cputlb.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/accel/tcg/cputlb.c b/accel/tcg/cputlb.c index 6f1c00682b..1160aec626 100644 --- a/accel/tcg/cputlb.c +++ b/accel/tcg/cputlb.c @@ -1817,7 +1817,7 @@ static void *atomic_mmu_lookup(CPUArchState *env, target_ulong addr, } else /* if (prot & PAGE_READ) */ { tlb_addr = tlbe->addr_read; if (!tlb_hit(tlb_addr, addr)) { - if (!VICTIM_TLB_HIT(addr_write, addr)) { + if (!VICTIM_TLB_HIT(addr_read, addr)) { tlb_fill(env_cpu(env), addr, size, MMU_DATA_LOAD, mmu_idx, retaddr); index = tlb_index(env, mmu_idx, addr); From 379a05f3847f1b2b4b2a4b4845b56e264ec81572 Mon Sep 17 00:00:00 2001 From: Peter Maydell Date: Fri, 12 May 2023 15:43:38 +0100 Subject: [PATCH 090/174] ui: Fix pixel colour channel order for PNG screenshots MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit When we take a PNG screenshot the ordering of the colour channels in the data is not correct, resulting in the image having weird colouring compared to the actual display. (Specifically, on a little-endian host the blue and red channels are swapped; on big-endian everything is wrong.) This happens because the pixman idea of the pixel data and the libpng idea differ. PIXMAN_a8r8g8b8 defines that pixels are 32-bit values, with A in bits 24-31, R in bits 16-23, G in bits 8-15 and B in bits 0-7. This means that on little-endian systems the bytes in memory are B G R A and on big-endian systems they are A R G B libpng, on the other hand, thinks of pixels as being a series of values for each channel, so its format PNG_COLOR_TYPE_RGB_ALPHA always wants bytes in the order R G B A This isn't the same as the pixman order for either big or little endian hosts. The alpha channel is also unnecessary bulk in the output PNG file, because there is no alpha information in a screenshot. To handle the endianness issue, we already define in ui/qemu-pixman.h various PIXMAN_BE_* and PIXMAN_LE_* values that give consistent byte-order pixel channel formats. So we can use PIXMAN_BE_r8g8b8 and PNG_COLOR_TYPE_RGB, which both have an in-memory byte order of R G B and 3 bytes per pixel. (PPM format screenshots get this right; they already use the PIXMAN_BE_r8g8b8 format.) Cc: qemu-stable@nongnu.org Resolves: https://gitlab.com/qemu-project/qemu/-/issues/1622 Fixes: 9a0a119a382867 ("Added parameter to take screenshot with screendump as PNG") Signed-off-by: Peter Maydell Reviewed-by: Marc-André Lureau Message-id: 20230502135548.2451309-1-peter.maydell@linaro.org (cherry picked from commit cd22a0f520f471e3bd33bc19cf3b2fa772cdb2a8) Signed-off-by: Michael Tokarev --- ui/console.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ui/console.c b/ui/console.c index 3c0d9b061a..646202214a 100644 --- a/ui/console.c +++ b/ui/console.c @@ -307,7 +307,7 @@ static bool png_save(int fd, pixman_image_t *image, Error **errp) png_struct *png_ptr; png_info *info_ptr; g_autoptr(pixman_image_t) linebuf = - qemu_pixman_linebuf_create(PIXMAN_a8r8g8b8, width); + qemu_pixman_linebuf_create(PIXMAN_BE_r8g8b8, width); uint8_t *buf = (uint8_t *)pixman_image_get_data(linebuf); FILE *f = fdopen(fd, "wb"); int y; @@ -337,7 +337,7 @@ static bool png_save(int fd, pixman_image_t *image, Error **errp) png_init_io(png_ptr, f); png_set_IHDR(png_ptr, info_ptr, width, height, 8, - PNG_COLOR_TYPE_RGB_ALPHA, PNG_INTERLACE_NONE, + PNG_COLOR_TYPE_RGB, PNG_INTERLACE_NONE, PNG_COMPRESSION_TYPE_BASE, PNG_FILTER_TYPE_BASE); png_write_info(png_ptr, info_ptr); From c94d55f63e2c0bdc8114a09e106efe5de0810d84 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= Date: Thu, 20 Apr 2023 22:29:39 +0200 Subject: [PATCH 091/174] async: Suppress GCC13 false positive in aio_bh_poll() MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit GCC13 reports an error : ../util/async.c: In function ‘aio_bh_poll’: include/qemu/queue.h:303:22: error: storing the address of local variable ‘slice’ in ‘*ctx.bh_slice_list.sqh_last’ [-Werror=dangling-pointer=] 303 | (head)->sqh_last = &(elm)->field.sqe_next; \ | ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~ ../util/async.c:169:5: note: in expansion of macro ‘QSIMPLEQ_INSERT_TAIL’ 169 | QSIMPLEQ_INSERT_TAIL(&ctx->bh_slice_list, &slice, next); | ^~~~~~~~~~~~~~~~~~~~ ../util/async.c:161:17: note: ‘slice’ declared here 161 | BHListSlice slice; | ^~~~~ ../util/async.c:161:17: note: ‘ctx’ declared here But the local variable 'slice' is removed from the global context list in following loop of the same routine. Add a pragma to silent GCC. Cc: Stefan Hajnoczi Cc: Paolo Bonzini Cc: Daniel P. Berrangé Signed-off-by: Cédric Le Goater Reviewed-by: Daniel Henrique Barboza Reviewed-by: Philippe Mathieu-Daudé Reviewed-by: Stefan Hajnoczi Reviewed-by: Thomas Huth Tested-by: Daniel Henrique Barboza Message-Id: <20230420202939.1982044-1-clg@kaod.org> Signed-off-by: Paolo Bonzini (cherry picked from commit d66ba6dc1cce914673bd8a89fca30a7715ea70d1) Signed-off-by: Michael Tokarev (Mjt: cherry-picked to stable-7.2 to eliminate CI failures on win*) --- util/async.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/util/async.c b/util/async.c index 63434ddae4..f449c3444e 100644 --- a/util/async.c +++ b/util/async.c @@ -158,7 +158,21 @@ int aio_bh_poll(AioContext *ctx) int ret = 0; QSLIST_MOVE_ATOMIC(&slice.bh_list, &ctx->bh_list); + + /* + * GCC13 [-Werror=dangling-pointer=] complains that the local variable + * 'slice' is being stored in the global 'ctx->bh_slice_list' but the + * list is emptied before this function returns. + */ +#if !defined(__clang__) +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wpragmas" +#pragma GCC diagnostic ignored "-Wdangling-pointer=" +#endif QSIMPLEQ_INSERT_TAIL(&ctx->bh_slice_list, &slice, next); +#if !defined(__clang__) +#pragma GCC diagnostic pop +#endif while ((s = QSIMPLEQ_FIRST(&ctx->bh_slice_list))) { QEMUBH *bh; From afc11df42a031ae8b583c1480c5b1460b4eb84c5 Mon Sep 17 00:00:00 2001 From: Shivaprasad G Bhat Date: Thu, 4 May 2023 05:35:39 -0400 Subject: [PATCH 092/174] tcg: ppc64: Fix mask generation for vextractdm MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit In function do_extractm() the mask is calculated as dup_const(1 << (element_width - 1)). '1' being signed int works fine for MO_8,16,32. For MO_64, on PPC64 host this ends up becoming 0 on compilation. The vextractdm uses MO_64, and it ends up having mask as 0. Explicitly use 1ULL instead of signed int 1 like its used everywhere else. Resolves: https://gitlab.com/qemu-project/qemu/-/issues/1536 Signed-off-by: Shivaprasad G Bhat Reviewed-by: Alex Bennée Reviewed-by: Lucas Mateus Castro Reviewed-by: Richard Henderson Reviewed-by: Cédric Le Goater Message-Id: <168319292809.1159309.5817546227121323288.stgit@ltc-boston1.aus.stglabs.ibm.com> Signed-off-by: Daniel Henrique Barboza (cherry picked from commit 6a5d81b17201ab8a95539bad94c8a6c08a42e076) Signed-off-by: Michael Tokarev --- target/ppc/translate/vmx-impl.c.inc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/target/ppc/translate/vmx-impl.c.inc b/target/ppc/translate/vmx-impl.c.inc index 7741f2eb49..764b76dcc6 100644 --- a/target/ppc/translate/vmx-impl.c.inc +++ b/target/ppc/translate/vmx-impl.c.inc @@ -2231,7 +2231,7 @@ static bool trans_VEXPANDQM(DisasContext *ctx, arg_VX_tb *a) static bool do_vextractm(DisasContext *ctx, arg_VX_tb *a, unsigned vece) { const uint64_t elem_width = 8 << vece, elem_count_half = 8 >> vece, - mask = dup_const(vece, 1 << (elem_width - 1)); + mask = dup_const(vece, 1ULL << (elem_width - 1)); uint64_t i, j; TCGv_i64 lo, hi, t0, t1; From a641521e50c1664582568af3f169d51524767f30 Mon Sep 17 00:00:00 2001 From: Albert Esteve Date: Thu, 2 Mar 2023 13:17:19 +0100 Subject: [PATCH 093/174] hw/virtio/vhost-user: avoid using unitialized errp During protocol negotiation, when we the QEMU stub does not support a backend with F_CONFIG, it throws a warning and supresses the VHOST_USER_PROTOCOL_F_CONFIG bit. However, the warning uses warn_reportf_err macro and passes an unitialized errp pointer. However, the macro tries to edit the 'msg' member of the unitialized Error and segfaults. Instead, just use warn_report, which prints a warning message directly to the output. Fixes: 5653493 ("hw/virtio/vhost-user: don't suppress F_CONFIG when supported") Signed-off-by: Albert Esteve Message-Id: <20230302121719.9390-1-aesteve@redhat.com> Reviewed-by: Peter Maydell Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin (cherry picked from commit 90e31232cf8fa7f257263dd431ea954a1ae54bff) Signed-off-by: Michael Tokarev --- hw/virtio/vhost-user.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/hw/virtio/vhost-user.c b/hw/virtio/vhost-user.c index 8f635844af..1fc37f92be 100644 --- a/hw/virtio/vhost-user.c +++ b/hw/virtio/vhost-user.c @@ -2108,8 +2108,8 @@ static int vhost_user_backend_init(struct vhost_dev *dev, void *opaque, } else { if (virtio_has_feature(protocol_features, VHOST_USER_PROTOCOL_F_CONFIG)) { - warn_reportf_err(*errp, "vhost-user backend supports " - "VHOST_USER_PROTOCOL_F_CONFIG but QEMU does not."); + warn_report("vhost-user backend supports " + "VHOST_USER_PROTOCOL_F_CONFIG but QEMU does not."); protocol_features &= ~(1ULL << VHOST_USER_PROTOCOL_F_CONFIG); } } From 2a0afe1bde6a97bb499913b0fe043eb906d759b1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20L=C3=B3pez?= Date: Thu, 2 Mar 2023 11:03:59 +0100 Subject: [PATCH 094/174] virtio: fix reachable assertion due to stale value of cached region size MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit In virtqueue_{split,packed}_get_avail_bytes() descriptors are read in a loop via MemoryRegionCache regions and calls to vring_{split,packed}_desc_read() - these take a region cache and the index of the descriptor to be read. For direct descriptors we use a cache provided by the caller, whose size matches that of the virtqueue vring. We limit the number of descriptors we can read by the size of that vring: max = vq->vring.num; ... MemoryRegionCache *desc_cache = &caches->desc; For indirect descriptors, we initialize a new cache and limit the number of descriptors by the size of the intermediate descriptor: len = address_space_cache_init(&indirect_desc_cache, vdev->dma_as, desc.addr, desc.len, false); desc_cache = &indirect_desc_cache; ... max = desc.len / sizeof(VRingDesc); However, the first initialization of `max` is done outside the loop where we process guest descriptors, while the second one is done inside. This means that a sequence of an indirect descriptor followed by a direct one will leave a stale value in `max`. If the second descriptor's `next` field is smaller than the stale value, but greater than the size of the virtqueue ring (and thus the cached region), a failed assertion will be triggered in address_space_read_cached() down the call chain. Fix this by initializing `max` inside the loop in both functions. Fixes: 9796d0ac8fb0 ("virtio: use address_space_map/unmap to access descriptors") Signed-off-by: Carlos López Message-Id: <20230302100358.3613-1-clopez@suse.de> Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin (cherry picked from commit bbc1c327d7974261c61566cdb950cc5fa0196b41) Signed-off-by: Michael Tokarev --- hw/virtio/virtio.c | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/hw/virtio/virtio.c b/hw/virtio/virtio.c index eb6347ab5d..384c8f0f08 100644 --- a/hw/virtio/virtio.c +++ b/hw/virtio/virtio.c @@ -1478,7 +1478,7 @@ static void virtqueue_split_get_avail_bytes(VirtQueue *vq, VRingMemoryRegionCaches *caches) { VirtIODevice *vdev = vq->vdev; - unsigned int max, idx; + unsigned int idx; unsigned int total_bufs, in_total, out_total; MemoryRegionCache indirect_desc_cache = MEMORY_REGION_CACHE_INVALID; int64_t len = 0; @@ -1487,13 +1487,12 @@ static void virtqueue_split_get_avail_bytes(VirtQueue *vq, idx = vq->last_avail_idx; total_bufs = in_total = out_total = 0; - max = vq->vring.num; - while ((rc = virtqueue_num_heads(vq, idx)) > 0) { MemoryRegionCache *desc_cache = &caches->desc; unsigned int num_bufs; VRingDesc desc; unsigned int i; + unsigned int max = vq->vring.num; num_bufs = total_bufs; @@ -1615,7 +1614,7 @@ static void virtqueue_packed_get_avail_bytes(VirtQueue *vq, VRingMemoryRegionCaches *caches) { VirtIODevice *vdev = vq->vdev; - unsigned int max, idx; + unsigned int idx; unsigned int total_bufs, in_total, out_total; MemoryRegionCache *desc_cache; MemoryRegionCache indirect_desc_cache = MEMORY_REGION_CACHE_INVALID; @@ -1627,14 +1626,14 @@ static void virtqueue_packed_get_avail_bytes(VirtQueue *vq, wrap_counter = vq->last_avail_wrap_counter; total_bufs = in_total = out_total = 0; - max = vq->vring.num; - for (;;) { unsigned int num_bufs = total_bufs; unsigned int i = idx; int rc; + unsigned int max = vq->vring.num; desc_cache = &caches->desc; + vring_packed_desc_read(vdev, &desc, desc_cache, idx, true); if (!is_desc_avail(desc.flags, wrap_counter)) { break; From b7b814cd87a5fbe9f0fb5732dd28932699317bda Mon Sep 17 00:00:00 2001 From: Wang Liang Date: Mon, 24 Apr 2023 18:39:02 +0800 Subject: [PATCH 095/174] block/monitor: Fix crash when executing HMP commit hmp_commit() calls blk_is_available() from a non-coroutine context (and in the main loop). blk_is_available() is a co_wrapper_mixed_bdrv_rdlock function, and in the non-coroutine context it calls AIO_WAIT_WHILE(), which crashes if the aio_context lock is not taken before. Resolves: https://gitlab.com/qemu-project/qemu/-/issues/1615 Signed-off-by: Wang Liang Message-Id: <20230424103902.45265-1-wangliangzz@126.com> Reviewed-by: Emanuele Giuseppe Esposito Reviewed-by: Kevin Wolf Signed-off-by: Kevin Wolf (cherry picked from commit 8c1e8fb2e7fc2cbeb57703e143965a4cd3ad301a) Signed-off-by: Michael Tokarev --- block/monitor/block-hmp-cmds.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/block/monitor/block-hmp-cmds.c b/block/monitor/block-hmp-cmds.c index b6135e9bfe..cf21b5e40a 100644 --- a/block/monitor/block-hmp-cmds.c +++ b/block/monitor/block-hmp-cmds.c @@ -213,15 +213,17 @@ void hmp_commit(Monitor *mon, const QDict *qdict) error_report("Device '%s' not found", device); return; } - if (!blk_is_available(blk)) { - error_report("Device '%s' has no medium", device); - return; - } bs = bdrv_skip_implicit_filters(blk_bs(blk)); aio_context = bdrv_get_aio_context(bs); aio_context_acquire(aio_context); + if (!blk_is_available(blk)) { + error_report("Device '%s' has no medium", device); + aio_context_release(aio_context); + return; + } + ret = bdrv_commit(bs); aio_context_release(aio_context); From 6b718596862f21d09c69c6875f57a3c474459c25 Mon Sep 17 00:00:00 2001 From: Ilya Leoshkevich Date: Thu, 27 Apr 2023 01:58:12 +0200 Subject: [PATCH 096/174] target/s390x: Fix EXECUTE of relative branches Fix a problem similar to the one fixed by commit 703d03a4aaf3 ("target/s390x: Fix EXECUTE of relative long instructions"), but now for relative branches. Reported-by: Nina Schoetterl-Glausch Signed-off-by: Ilya Leoshkevich Reviewed-by: Richard Henderson Message-Id: <20230426235813.198183-2-iii@linux.ibm.com> Signed-off-by: Thomas Huth (cherry picked from commit e8ecdfeb30f087574191cde523e846e023911c8d) Signed-off-by: Michael Tokarev --- target/s390x/tcg/translate.c | 81 ++++++++++++++++++++++++++---------- 1 file changed, 58 insertions(+), 23 deletions(-) diff --git a/target/s390x/tcg/translate.c b/target/s390x/tcg/translate.c index e328aa5b97..0885bf2641 100644 --- a/target/s390x/tcg/translate.c +++ b/target/s390x/tcg/translate.c @@ -1585,18 +1585,51 @@ static DisasJumpType op_bal(DisasContext *s, DisasOps *o) } } +/* + * Disassemble the target of a branch. The results are returned in a form + * suitable for passing into help_branch(): + * + * - bool IS_IMM reflects whether the target is fixed or computed. Non-EXECUTEd + * branches, whose DisasContext *S contains the relative immediate field RI, + * are considered fixed. All the other branches are considered computed. + * - int IMM is the value of RI. + * - TCGv_i64 CDEST is the address of the computed target. + */ +#define disas_jdest(s, ri, is_imm, imm, cdest) do { \ + if (have_field(s, ri)) { \ + if (unlikely(s->ex_value)) { \ + cdest = tcg_temp_new_i64(); \ + tcg_gen_ld_i64(cdest, cpu_env, offsetof(CPUS390XState, ex_target));\ + tcg_gen_addi_i64(cdest, cdest, (int64_t)get_field(s, ri) * 2); \ + is_imm = false; \ + } else { \ + is_imm = true; \ + } \ + } else { \ + is_imm = false; \ + } \ + imm = is_imm ? get_field(s, ri) : 0; \ +} while (false) + static DisasJumpType op_basi(DisasContext *s, DisasOps *o) { + DisasCompare c; + bool is_imm; + int imm; + pc_to_link_info(o->out, s, s->pc_tmp); - return help_goto_direct(s, s->base.pc_next + (int64_t)get_field(s, i2) * 2); + + disas_jdest(s, i2, is_imm, imm, o->in2); + disas_jcc(s, &c, 0xf); + return help_branch(s, &c, is_imm, imm, o->in2); } static DisasJumpType op_bc(DisasContext *s, DisasOps *o) { int m1 = get_field(s, m1); - bool is_imm = have_field(s, i2); - int imm = is_imm ? get_field(s, i2) : 0; DisasCompare c; + bool is_imm; + int imm; /* BCR with R2 = 0 causes no branching */ if (have_field(s, r2) && get_field(s, r2) == 0) { @@ -1613,6 +1646,7 @@ static DisasJumpType op_bc(DisasContext *s, DisasOps *o) return DISAS_NEXT; } + disas_jdest(s, i2, is_imm, imm, o->in2); disas_jcc(s, &c, m1); return help_branch(s, &c, is_imm, imm, o->in2); } @@ -1620,10 +1654,10 @@ static DisasJumpType op_bc(DisasContext *s, DisasOps *o) static DisasJumpType op_bct32(DisasContext *s, DisasOps *o) { int r1 = get_field(s, r1); - bool is_imm = have_field(s, i2); - int imm = is_imm ? get_field(s, i2) : 0; DisasCompare c; + bool is_imm; TCGv_i64 t; + int imm; c.cond = TCG_COND_NE; c.is_64 = false; @@ -1638,6 +1672,7 @@ static DisasJumpType op_bct32(DisasContext *s, DisasOps *o) tcg_gen_extrl_i64_i32(c.u.s32.a, t); tcg_temp_free_i64(t); + disas_jdest(s, i2, is_imm, imm, o->in2); return help_branch(s, &c, is_imm, imm, o->in2); } @@ -1668,9 +1703,9 @@ static DisasJumpType op_bcth(DisasContext *s, DisasOps *o) static DisasJumpType op_bct64(DisasContext *s, DisasOps *o) { int r1 = get_field(s, r1); - bool is_imm = have_field(s, i2); - int imm = is_imm ? get_field(s, i2) : 0; DisasCompare c; + bool is_imm; + int imm; c.cond = TCG_COND_NE; c.is_64 = true; @@ -1681,6 +1716,7 @@ static DisasJumpType op_bct64(DisasContext *s, DisasOps *o) c.u.s64.a = regs[r1]; c.u.s64.b = tcg_const_i64(0); + disas_jdest(s, i2, is_imm, imm, o->in2); return help_branch(s, &c, is_imm, imm, o->in2); } @@ -1688,10 +1724,10 @@ static DisasJumpType op_bx32(DisasContext *s, DisasOps *o) { int r1 = get_field(s, r1); int r3 = get_field(s, r3); - bool is_imm = have_field(s, i2); - int imm = is_imm ? get_field(s, i2) : 0; DisasCompare c; + bool is_imm; TCGv_i64 t; + int imm; c.cond = (s->insn->data ? TCG_COND_LE : TCG_COND_GT); c.is_64 = false; @@ -1707,6 +1743,7 @@ static DisasJumpType op_bx32(DisasContext *s, DisasOps *o) store_reg32_i64(r1, t); tcg_temp_free_i64(t); + disas_jdest(s, i2, is_imm, imm, o->in2); return help_branch(s, &c, is_imm, imm, o->in2); } @@ -1714,9 +1751,9 @@ static DisasJumpType op_bx64(DisasContext *s, DisasOps *o) { int r1 = get_field(s, r1); int r3 = get_field(s, r3); - bool is_imm = have_field(s, i2); - int imm = is_imm ? get_field(s, i2) : 0; DisasCompare c; + bool is_imm; + int imm; c.cond = (s->insn->data ? TCG_COND_LE : TCG_COND_GT); c.is_64 = true; @@ -1733,6 +1770,7 @@ static DisasJumpType op_bx64(DisasContext *s, DisasOps *o) c.u.s64.a = regs[r1]; c.g1 = true; + disas_jdest(s, i2, is_imm, imm, o->in2); return help_branch(s, &c, is_imm, imm, o->in2); } @@ -1750,10 +1788,9 @@ static DisasJumpType op_cj(DisasContext *s, DisasOps *o) c.u.s64.a = o->in1; c.u.s64.b = o->in2; - is_imm = have_field(s, i4); - if (is_imm) { - imm = get_field(s, i4); - } else { + o->out = NULL; + disas_jdest(s, i4, is_imm, imm, o->out); + if (!is_imm && !o->out) { imm = 0; o->out = get_address(s, 0, get_field(s, b4), get_field(s, d4)); @@ -5964,15 +6001,13 @@ static void in2_a2(DisasContext *s, DisasOps *o) static TCGv gen_ri2(DisasContext *s) { - int64_t delta = (int64_t)get_field(s, i2) * 2; - TCGv ri2; + TCGv ri2 = NULL; + bool is_imm; + int imm; - if (unlikely(s->ex_value)) { - ri2 = tcg_temp_new_i64(); - tcg_gen_ld_i64(ri2, cpu_env, offsetof(CPUS390XState, ex_target)); - tcg_gen_addi_i64(ri2, ri2, delta); - } else { - ri2 = tcg_constant_i64(s->base.pc_next + delta); + disas_jdest(s, i2, is_imm, imm, ri2); + if (is_imm) { + ri2 = tcg_constant_i64(s->base.pc_next + imm * 2); } return ri2; From 00acdd8a9f64a55def450210dca8be7e8cb55b5e Mon Sep 17 00:00:00 2001 From: Ilya Leoshkevich Date: Thu, 11 May 2023 15:47:26 +0200 Subject: [PATCH 097/174] s390x/tcg: Fix LDER instruction format It's RRE, not RXE. Found by running valgrind's none/tests/s390x/bfp-2. Fixes: 86b59624c4aa ("s390x/tcg: Implement LOAD LENGTHENED short HFP to long HFP") Reviewed-by: David Hildenbrand Signed-off-by: Ilya Leoshkevich Message-Id: <20230511134726.469651-1-iii@linux.ibm.com> Reviewed-by: Richard Henderson Signed-off-by: Thomas Huth (cherry picked from commit 970641de01908dd09b569965e78f13842e5854bc) Signed-off-by: Michael Tokarev (Mjt: context tweak) --- target/s390x/tcg/insn-data.h.inc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/target/s390x/tcg/insn-data.h.inc b/target/s390x/tcg/insn-data.h.inc index 2a5fc99818..13ffdda4da 100644 --- a/target/s390x/tcg/insn-data.h.inc +++ b/target/s390x/tcg/insn-data.h.inc @@ -606,7 +606,7 @@ F(0xed04, LDEB, RXE, Z, 0, m2_32u, new, f1, ldeb, 0, IF_BFP) F(0xed05, LXDB, RXE, Z, 0, m2_64, new_P, x1, lxdb, 0, IF_BFP) F(0xed06, LXEB, RXE, Z, 0, m2_32u, new_P, x1, lxeb, 0, IF_BFP) - F(0xb324, LDER, RXE, Z, 0, e2, new, f1, lde, 0, IF_AFP1) + F(0xb324, LDER, RRE, Z, 0, e2, new, f1, lde, 0, IF_AFP1) F(0xed24, LDE, RXE, Z, 0, m2_32u, new, f1, lde, 0, IF_AFP1) /* LOAD ROUNDED */ F(0xb344, LEDBR, RRF_e, Z, 0, f2, new, e1, ledb, 0, IF_BFP) From de6596aa9dc49916a095881f0afde4f11528da59 Mon Sep 17 00:00:00 2001 From: Jason Andryuk Date: Tue, 2 May 2023 10:37:22 -0400 Subject: [PATCH 098/174] 9pfs/xen: Fix segfault on shutdown xen_9pfs_free can't use gnttabdev since it is already closed and NULL-ed out when free is called. Do the teardown in _disconnect(). This matches the setup done in _connect(). trace-events are also added for the XenDevOps functions. Signed-off-by: Jason Andryuk Reviewed-by: Stefano Stabellini Message-Id: <20230502143722.15613-1-jandryuk@gmail.com> [C.S.: - Remove redundant return in xen_9pfs_free(). - Add comment to trace-events. ] Signed-off-by: Christian Schoenebeck (cherry picked from commit 92e667f6fd5806a6a705a2a43e572bd9ec6819da) Signed-off-by: Michael Tokarev (Mjt: minor context conflict in hw/9pfs/xen-9p-backend.c) --- hw/9pfs/trace-events | 6 ++++++ hw/9pfs/xen-9p-backend.c | 35 ++++++++++++++++++++++------------- 2 files changed, 28 insertions(+), 13 deletions(-) diff --git a/hw/9pfs/trace-events b/hw/9pfs/trace-events index 6c77966c0b..a12e55c165 100644 --- a/hw/9pfs/trace-events +++ b/hw/9pfs/trace-events @@ -48,3 +48,9 @@ v9fs_readlink(uint16_t tag, uint8_t id, int32_t fid) "tag %d id %d fid %d" v9fs_readlink_return(uint16_t tag, uint8_t id, char* target) "tag %d id %d name %s" v9fs_setattr(uint16_t tag, uint8_t id, int32_t fid, int32_t valid, int32_t mode, int32_t uid, int32_t gid, int64_t size, int64_t atime_sec, int64_t mtime_sec) "tag %u id %u fid %d iattr={valid %d mode %d uid %d gid %d size %"PRId64" atime=%"PRId64" mtime=%"PRId64" }" v9fs_setattr_return(uint16_t tag, uint8_t id) "tag %u id %u" + +# xen-9p-backend.c +xen_9pfs_alloc(char *name) "name %s" +xen_9pfs_connect(char *name) "name %s" +xen_9pfs_disconnect(char *name) "name %s" +xen_9pfs_free(char *name) "name %s" diff --git a/hw/9pfs/xen-9p-backend.c b/hw/9pfs/xen-9p-backend.c index 65c4979c3c..ab1df8dd2f 100644 --- a/hw/9pfs/xen-9p-backend.c +++ b/hw/9pfs/xen-9p-backend.c @@ -24,6 +24,8 @@ #include "qemu/option.h" #include "fsdev/qemu-fsdev.h" +#include "trace.h" + #define VERSIONS "1" #define MAX_RINGS 8 #define MAX_RING_ORDER 9 @@ -335,6 +337,8 @@ static void xen_9pfs_disconnect(struct XenLegacyDevice *xendev) Xen9pfsDev *xen_9pdev = container_of(xendev, Xen9pfsDev, xendev); int i; + trace_xen_9pfs_disconnect(xendev->name); + for (i = 0; i < xen_9pdev->num_rings; i++) { if (xen_9pdev->rings[i].evtchndev != NULL) { qemu_set_fd_handler(xenevtchn_fd(xen_9pdev->rings[i].evtchndev), @@ -343,39 +347,40 @@ static void xen_9pfs_disconnect(struct XenLegacyDevice *xendev) xen_9pdev->rings[i].local_port); xen_9pdev->rings[i].evtchndev = NULL; } - } -} - -static int xen_9pfs_free(struct XenLegacyDevice *xendev) -{ - Xen9pfsDev *xen_9pdev = container_of(xendev, Xen9pfsDev, xendev); - int i; - - if (xen_9pdev->rings[0].evtchndev != NULL) { - xen_9pfs_disconnect(xendev); - } - - for (i = 0; i < xen_9pdev->num_rings; i++) { if (xen_9pdev->rings[i].data != NULL) { xen_be_unmap_grant_refs(&xen_9pdev->xendev, xen_9pdev->rings[i].data, (1 << xen_9pdev->rings[i].ring_order)); + xen_9pdev->rings[i].data = NULL; } if (xen_9pdev->rings[i].intf != NULL) { xen_be_unmap_grant_refs(&xen_9pdev->xendev, xen_9pdev->rings[i].intf, 1); + xen_9pdev->rings[i].intf = NULL; } if (xen_9pdev->rings[i].bh != NULL) { qemu_bh_delete(xen_9pdev->rings[i].bh); + xen_9pdev->rings[i].bh = NULL; } } g_free(xen_9pdev->id); + xen_9pdev->id = NULL; g_free(xen_9pdev->tag); + xen_9pdev->tag = NULL; g_free(xen_9pdev->path); + xen_9pdev->path = NULL; g_free(xen_9pdev->security_model); + xen_9pdev->security_model = NULL; g_free(xen_9pdev->rings); + xen_9pdev->rings = NULL; +} + +static int xen_9pfs_free(struct XenLegacyDevice *xendev) +{ + trace_xen_9pfs_free(xendev->name); + return 0; } @@ -387,6 +392,8 @@ static int xen_9pfs_connect(struct XenLegacyDevice *xendev) V9fsState *s = &xen_9pdev->state; QemuOpts *fsdev; + trace_xen_9pfs_connect(xendev->name); + if (xenstore_read_fe_int(&xen_9pdev->xendev, "num-rings", &xen_9pdev->num_rings) == -1 || xen_9pdev->num_rings > MAX_RINGS || xen_9pdev->num_rings < 1) { @@ -494,6 +501,8 @@ out: static void xen_9pfs_alloc(struct XenLegacyDevice *xendev) { + trace_xen_9pfs_alloc(xendev->name); + xenstore_write_be_str(xendev, "versions", VERSIONS); xenstore_write_be_int(xendev, "max-rings", MAX_RINGS); xenstore_write_be_int(xendev, "max-ring-page-order", MAX_RING_ORDER); From 6bebd3f81842e1303122311d133d380f2792590a Mon Sep 17 00:00:00 2001 From: Chuck Zmudzinski Date: Sat, 21 Jan 2023 19:57:02 -0500 Subject: [PATCH 099/174] xen/pt: reserve PCI slot 2 for Intel igd-passthru Intel specifies that the Intel IGD must occupy slot 2 on the PCI bus, as noted in docs/igd-assign.txt in the Qemu source code. Currently, when the xl toolstack is used to configure a Xen HVM guest with Intel IGD passthrough to the guest with the Qemu upstream device model, a Qemu emulated PCI device will occupy slot 2 and the Intel IGD will occupy a different slot. This problem often prevents the guest from booting. The only available workarounds are not good: Configure Xen HVM guests to use the old and no longer maintained Qemu traditional device model available from xenbits.xen.org which does reserve slot 2 for the Intel IGD or use the "pc" machine type instead of the "xenfv" machine type and add the xen platform device at slot 3 using a command line option instead of patching qemu to fix the "xenfv" machine type directly. The second workaround causes some degredation in startup performance such as a longer boot time and reduced resolution of the grub menu that is displayed on the monitor. This patch avoids that reduced startup performance when using the Qemu upstream device model for Xen HVM guests configured with the igd-passthru=on option. To implement this feature in the Qemu upstream device model for Xen HVM guests, introduce the following new functions, types, and macros: * XEN_PT_DEVICE_CLASS declaration, based on the existing TYPE_XEN_PT_DEVICE * XEN_PT_DEVICE_GET_CLASS macro helper function for XEN_PT_DEVICE_CLASS * typedef XenPTQdevRealize function pointer * XEN_PCI_IGD_SLOT_MASK, the value of slot_reserved_mask to reserve slot 2 * xen_igd_reserve_slot and xen_igd_clear_slot functions Michael Tsirkin: * Introduce XEN_PCI_IGD_DOMAIN, XEN_PCI_IGD_BUS, XEN_PCI_IGD_DEV, and XEN_PCI_IGD_FN - use them to compute the value of XEN_PCI_IGD_SLOT_MASK The new xen_igd_reserve_slot function uses the existing slot_reserved_mask member of PCIBus to reserve PCI slot 2 for Xen HVM guests configured using the xl toolstack with the gfx_passthru option enabled, which sets the igd-passthru=on option to Qemu for the Xen HVM machine type. The new xen_igd_reserve_slot function also needs to be implemented in hw/xen/xen_pt_stub.c to prevent FTBFS during the link stage for the case when Qemu is configured with --enable-xen and --disable-xen-pci-passthrough, in which case it does nothing. The new xen_igd_clear_slot function overrides qdev->realize of the parent PCI device class to enable the Intel IGD to occupy slot 2 on the PCI bus since slot 2 was reserved by xen_igd_reserve_slot when the PCI bus was created in hw/i386/pc_piix.c for the case when igd-passthru=on. Move the call to xen_host_pci_device_get, and the associated error handling, from xen_pt_realize to the new xen_igd_clear_slot function to initialize the device class and vendor values which enables the checks for the Intel IGD to succeed. The verification that the host device is an Intel IGD to be passed through is done by checking the domain, bus, slot, and function values as well as by checking that gfx_passthru is enabled, the device class is VGA, and the device vendor in Intel. Signed-off-by: Chuck Zmudzinski Reviewed-by: Michael S. Tsirkin Reviewed-by: Stefano Stabellini Message-Id: Signed-off-by: Anthony PERARD (cherry picked from commit 4f67543bb8c5b031c2ad3785c1a2f3c255d72b25) Signed-off-by: Michael Tokarev --- hw/i386/pc_piix.c | 1 + hw/xen/xen_pt.c | 64 ++++++++++++++++++++++++++++++++++++-------- hw/xen/xen_pt.h | 20 ++++++++++++++ hw/xen/xen_pt_stub.c | 4 +++ 4 files changed, 78 insertions(+), 11 deletions(-) diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c index 24616bf924..04f793cca1 100644 --- a/hw/i386/pc_piix.c +++ b/hw/i386/pc_piix.c @@ -405,6 +405,7 @@ static void pc_xen_hvm_init(MachineState *machine) } pc_xen_hvm_init_pci(machine); + xen_igd_reserve_slot(pcms->bus); pci_create_simple(pcms->bus, -1, "xen-platform"); } #endif diff --git a/hw/xen/xen_pt.c b/hw/xen/xen_pt.c index 0ec7e52183..5dd706efbf 100644 --- a/hw/xen/xen_pt.c +++ b/hw/xen/xen_pt.c @@ -57,6 +57,7 @@ #include #include "hw/pci/pci.h" +#include "hw/pci/pci_bus.h" #include "hw/qdev-properties.h" #include "hw/qdev-properties-system.h" #include "hw/xen/xen.h" @@ -780,15 +781,6 @@ static void xen_pt_realize(PCIDevice *d, Error **errp) s->hostaddr.bus, s->hostaddr.slot, s->hostaddr.function, s->dev.devfn); - xen_host_pci_device_get(&s->real_device, - s->hostaddr.domain, s->hostaddr.bus, - s->hostaddr.slot, s->hostaddr.function, - errp); - if (*errp) { - error_append_hint(errp, "Failed to \"open\" the real pci device"); - return; - } - s->is_virtfn = s->real_device.is_virtfn; if (s->is_virtfn) { XEN_PT_LOG(d, "%04x:%02x:%02x.%d is a SR-IOV Virtual Function\n", @@ -803,8 +795,10 @@ static void xen_pt_realize(PCIDevice *d, Error **errp) s->io_listener = xen_pt_io_listener; /* Setup VGA bios for passthrough GFX */ - if ((s->real_device.domain == 0) && (s->real_device.bus == 0) && - (s->real_device.dev == 2) && (s->real_device.func == 0)) { + if ((s->real_device.domain == XEN_PCI_IGD_DOMAIN) && + (s->real_device.bus == XEN_PCI_IGD_BUS) && + (s->real_device.dev == XEN_PCI_IGD_DEV) && + (s->real_device.func == XEN_PCI_IGD_FN)) { if (!is_igd_vga_passthrough(&s->real_device)) { error_setg(errp, "Need to enable igd-passthru if you're trying" " to passthrough IGD GFX"); @@ -950,11 +944,58 @@ static void xen_pci_passthrough_instance_init(Object *obj) PCI_DEVICE(obj)->cap_present |= QEMU_PCI_CAP_EXPRESS; } +void xen_igd_reserve_slot(PCIBus *pci_bus) +{ + if (!xen_igd_gfx_pt_enabled()) { + return; + } + + XEN_PT_LOG(0, "Reserving PCI slot 2 for IGD\n"); + pci_bus->slot_reserved_mask |= XEN_PCI_IGD_SLOT_MASK; +} + +static void xen_igd_clear_slot(DeviceState *qdev, Error **errp) +{ + ERRP_GUARD(); + PCIDevice *pci_dev = (PCIDevice *)qdev; + XenPCIPassthroughState *s = XEN_PT_DEVICE(pci_dev); + XenPTDeviceClass *xpdc = XEN_PT_DEVICE_GET_CLASS(s); + PCIBus *pci_bus = pci_get_bus(pci_dev); + + xen_host_pci_device_get(&s->real_device, + s->hostaddr.domain, s->hostaddr.bus, + s->hostaddr.slot, s->hostaddr.function, + errp); + if (*errp) { + error_append_hint(errp, "Failed to \"open\" the real pci device"); + return; + } + + if (!(pci_bus->slot_reserved_mask & XEN_PCI_IGD_SLOT_MASK)) { + xpdc->pci_qdev_realize(qdev, errp); + return; + } + + if (is_igd_vga_passthrough(&s->real_device) && + s->real_device.domain == XEN_PCI_IGD_DOMAIN && + s->real_device.bus == XEN_PCI_IGD_BUS && + s->real_device.dev == XEN_PCI_IGD_DEV && + s->real_device.func == XEN_PCI_IGD_FN && + s->real_device.vendor_id == PCI_VENDOR_ID_INTEL) { + pci_bus->slot_reserved_mask &= ~XEN_PCI_IGD_SLOT_MASK; + XEN_PT_LOG(pci_dev, "Intel IGD found, using slot 2\n"); + } + xpdc->pci_qdev_realize(qdev, errp); +} + static void xen_pci_passthrough_class_init(ObjectClass *klass, void *data) { DeviceClass *dc = DEVICE_CLASS(klass); PCIDeviceClass *k = PCI_DEVICE_CLASS(klass); + XenPTDeviceClass *xpdc = XEN_PT_DEVICE_CLASS(klass); + xpdc->pci_qdev_realize = dc->realize; + dc->realize = xen_igd_clear_slot; k->realize = xen_pt_realize; k->exit = xen_pt_unregister_device; k->config_read = xen_pt_pci_read_config; @@ -977,6 +1018,7 @@ static const TypeInfo xen_pci_passthrough_info = { .instance_size = sizeof(XenPCIPassthroughState), .instance_finalize = xen_pci_passthrough_finalize, .class_init = xen_pci_passthrough_class_init, + .class_size = sizeof(XenPTDeviceClass), .instance_init = xen_pci_passthrough_instance_init, .interfaces = (InterfaceInfo[]) { { INTERFACE_CONVENTIONAL_PCI_DEVICE }, diff --git a/hw/xen/xen_pt.h b/hw/xen/xen_pt.h index e7c4316a7d..292bdf7499 100644 --- a/hw/xen/xen_pt.h +++ b/hw/xen/xen_pt.h @@ -41,7 +41,20 @@ typedef struct XenPTReg XenPTReg; #define TYPE_XEN_PT_DEVICE "xen-pci-passthrough" OBJECT_DECLARE_SIMPLE_TYPE(XenPCIPassthroughState, XEN_PT_DEVICE) +#define XEN_PT_DEVICE_CLASS(klass) \ + OBJECT_CLASS_CHECK(XenPTDeviceClass, klass, TYPE_XEN_PT_DEVICE) +#define XEN_PT_DEVICE_GET_CLASS(obj) \ + OBJECT_GET_CLASS(XenPTDeviceClass, obj, TYPE_XEN_PT_DEVICE) + +typedef void (*XenPTQdevRealize)(DeviceState *qdev, Error **errp); + +typedef struct XenPTDeviceClass { + PCIDeviceClass parent_class; + XenPTQdevRealize pci_qdev_realize; +} XenPTDeviceClass; + uint32_t igd_read_opregion(XenPCIPassthroughState *s); +void xen_igd_reserve_slot(PCIBus *pci_bus); void igd_write_opregion(XenPCIPassthroughState *s, uint32_t val); void xen_igd_passthrough_isa_bridge_create(XenPCIPassthroughState *s, XenHostPCIDevice *dev); @@ -76,6 +89,13 @@ typedef int (*xen_pt_conf_byte_read) #define XEN_PCI_INTEL_OPREGION 0xfc +#define XEN_PCI_IGD_DOMAIN 0 +#define XEN_PCI_IGD_BUS 0 +#define XEN_PCI_IGD_DEV 2 +#define XEN_PCI_IGD_FN 0 +#define XEN_PCI_IGD_SLOT_MASK \ + (1UL << PCI_SLOT(PCI_DEVFN(XEN_PCI_IGD_DEV, XEN_PCI_IGD_FN))) + typedef enum { XEN_PT_GRP_TYPE_HARDWIRED = 0, /* 0 Hardwired reg group */ XEN_PT_GRP_TYPE_EMU, /* emul reg group */ diff --git a/hw/xen/xen_pt_stub.c b/hw/xen/xen_pt_stub.c index 2d8cac8d54..5c108446a8 100644 --- a/hw/xen/xen_pt_stub.c +++ b/hw/xen/xen_pt_stub.c @@ -20,3 +20,7 @@ void xen_igd_gfx_pt_set(bool value, Error **errp) error_setg(errp, "Xen PCI passthrough support not built in"); } } + +void xen_igd_reserve_slot(PCIBus *pci_bus) +{ +} From 7620c12422bef5f98647511317de15b953d3ffe7 Mon Sep 17 00:00:00 2001 From: Greg Kurz Date: Thu, 19 Jan 2023 18:24:23 +0100 Subject: [PATCH 100/174] Revert "vhost-user: Monitor slave channel in vhost_user_read()" This reverts commit db8a3772e300c1a656331a92da0785d81667dc81. Motivation : this is breaking vhost-user with DPDK as reported in [0]. Received unexpected msg type. Expected 22 received 40 Fail to update device iotlb Received unexpected msg type. Expected 40 received 22 Received unexpected msg type. Expected 22 received 11 Fail to update device iotlb Received unexpected msg type. Expected 11 received 22 vhost VQ 1 ring restore failed: -71: Protocol error (71) Received unexpected msg type. Expected 22 received 11 Fail to update device iotlb Received unexpected msg type. Expected 11 received 22 vhost VQ 0 ring restore failed: -71: Protocol error (71) unable to start vhost net: 71: falling back on userspace virtio The failing sequence that leads to the first error is : - QEMU sends a VHOST_USER_GET_STATUS (40) request to DPDK on the master socket - QEMU starts a nested event loop in order to wait for the VHOST_USER_GET_STATUS response and to be able to process messages from the slave channel - DPDK sends a couple of legitimate IOTLB miss messages on the slave channel - QEMU processes each IOTLB request and sends VHOST_USER_IOTLB_MSG (22) updates on the master socket - QEMU assumes to receive a response for the latest VHOST_USER_IOTLB_MSG but it gets the response for the VHOST_USER_GET_STATUS instead The subsequent errors have the same root cause : the nested event loop breaks the order by design. It lures QEMU to expect responses to the latest message sent on the master socket to arrive first. Since this was only needed for DAX enablement which is still not merged upstream, just drop the code for now. A working solution will have to be merged later on. Likely protect the master socket with a mutex and service the slave channel with a separate thread, as discussed with Maxime in the mail thread below. [0] https://lore.kernel.org/qemu-devel/43145ede-89dc-280e-b953-6a2b436de395@redhat.com/ Reported-by: Yanghang Liu Buglink: https://bugzilla.redhat.com/show_bug.cgi?id=2155173 Signed-off-by: Greg Kurz Message-Id: <20230119172424.478268-2-groug@kaod.org> Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Acked-by: Stefan Hajnoczi Acked-by: Maxime Coquelin (cherry picked from commit f340a59d5a852d75ae34555723694c7e8eafbd0c) Signed-off-by: Michael Tokarev --- hw/virtio/vhost-user.c | 35 +++-------------------------------- 1 file changed, 3 insertions(+), 32 deletions(-) diff --git a/hw/virtio/vhost-user.c b/hw/virtio/vhost-user.c index 1fc37f92be..d95f24ed24 100644 --- a/hw/virtio/vhost-user.c +++ b/hw/virtio/vhost-user.c @@ -356,35 +356,6 @@ end: return G_SOURCE_REMOVE; } -static gboolean slave_read(QIOChannel *ioc, GIOCondition condition, - gpointer opaque); - -/* - * This updates the read handler to use a new event loop context. - * Event sources are removed from the previous context : this ensures - * that events detected in the previous context are purged. They will - * be re-detected and processed in the new context. - */ -static void slave_update_read_handler(struct vhost_dev *dev, - GMainContext *ctxt) -{ - struct vhost_user *u = dev->opaque; - - if (!u->slave_ioc) { - return; - } - - if (u->slave_src) { - g_source_destroy(u->slave_src); - g_source_unref(u->slave_src); - } - - u->slave_src = qio_channel_add_watch_source(u->slave_ioc, - G_IO_IN | G_IO_HUP, - slave_read, dev, NULL, - ctxt); -} - static int vhost_user_read(struct vhost_dev *dev, VhostUserMsg *msg) { struct vhost_user *u = dev->opaque; @@ -406,7 +377,6 @@ static int vhost_user_read(struct vhost_dev *dev, VhostUserMsg *msg) * be prepared for re-entrancy. So we create a new one and switch chr * to use it. */ - slave_update_read_handler(dev, ctxt); qemu_chr_be_update_read_handlers(chr->chr, ctxt); qemu_chr_fe_add_watch(chr, G_IO_IN | G_IO_HUP, vhost_user_read_cb, &data); @@ -418,7 +388,6 @@ static int vhost_user_read(struct vhost_dev *dev, VhostUserMsg *msg) * context that have been processed by the nested loop are purged. */ qemu_chr_be_update_read_handlers(chr->chr, prev_ctxt); - slave_update_read_handler(dev, NULL); g_main_loop_unref(loop); g_main_context_unref(ctxt); @@ -1802,7 +1771,9 @@ static int vhost_setup_slave_channel(struct vhost_dev *dev) return -ECONNREFUSED; } u->slave_ioc = ioc; - slave_update_read_handler(dev, NULL); + u->slave_src = qio_channel_add_watch_source(u->slave_ioc, + G_IO_IN | G_IO_HUP, + slave_read, dev, NULL, NULL); if (reply_supported) { msg.hdr.flags |= VHOST_USER_NEED_REPLY_MASK; From 0c6e9547ae6de872fe4a6822ca99c6389141088c Mon Sep 17 00:00:00 2001 From: Greg Kurz Date: Thu, 19 Jan 2023 18:24:24 +0100 Subject: [PATCH 101/174] Revert "vhost-user: Introduce nested event loop in vhost_user_read()" This reverts commit a7f523c7d114d445c5d83aecdba3efc038e5a692. The nested event loop is broken by design. It's only user was removed. Drop the code as well so that nobody ever tries to use it again. I had to fix a couple of trivial conflicts around return values because of 025faa872bcf ("vhost-user: stick to -errno error return convention"). Signed-off-by: Greg Kurz Message-Id: <20230119172424.478268-3-groug@kaod.org> Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Acked-by: Maxime Coquelin (cherry picked from commit 4382138f642f69fdbc79ebf4e93d84be8061191f) Signed-off-by: Michael Tokarev --- hw/virtio/vhost-user.c | 65 ++++-------------------------------------- 1 file changed, 5 insertions(+), 60 deletions(-) diff --git a/hw/virtio/vhost-user.c b/hw/virtio/vhost-user.c index d95f24ed24..d92b026e1c 100644 --- a/hw/virtio/vhost-user.c +++ b/hw/virtio/vhost-user.c @@ -305,19 +305,8 @@ static int vhost_user_read_header(struct vhost_dev *dev, VhostUserMsg *msg) return 0; } -struct vhost_user_read_cb_data { - struct vhost_dev *dev; - VhostUserMsg *msg; - GMainLoop *loop; - int ret; -}; - -static gboolean vhost_user_read_cb(void *do_not_use, GIOCondition condition, - gpointer opaque) +static int vhost_user_read(struct vhost_dev *dev, VhostUserMsg *msg) { - struct vhost_user_read_cb_data *data = opaque; - struct vhost_dev *dev = data->dev; - VhostUserMsg *msg = data->msg; struct vhost_user *u = dev->opaque; CharBackend *chr = u->user->chr; uint8_t *p = (uint8_t *) msg; @@ -325,8 +314,7 @@ static gboolean vhost_user_read_cb(void *do_not_use, GIOCondition condition, r = vhost_user_read_header(dev, msg); if (r < 0) { - data->ret = r; - goto end; + return r; } /* validate message size is sane */ @@ -334,8 +322,7 @@ static gboolean vhost_user_read_cb(void *do_not_use, GIOCondition condition, error_report("Failed to read msg header." " Size %d exceeds the maximum %zu.", msg->hdr.size, VHOST_USER_PAYLOAD_SIZE); - data->ret = -EPROTO; - goto end; + return -EPROTO; } if (msg->hdr.size) { @@ -346,53 +333,11 @@ static gboolean vhost_user_read_cb(void *do_not_use, GIOCondition condition, int saved_errno = errno; error_report("Failed to read msg payload." " Read %d instead of %d.", r, msg->hdr.size); - data->ret = r < 0 ? -saved_errno : -EIO; - goto end; + return r < 0 ? -saved_errno : -EIO; } } -end: - g_main_loop_quit(data->loop); - return G_SOURCE_REMOVE; -} - -static int vhost_user_read(struct vhost_dev *dev, VhostUserMsg *msg) -{ - struct vhost_user *u = dev->opaque; - CharBackend *chr = u->user->chr; - GMainContext *prev_ctxt = chr->chr->gcontext; - GMainContext *ctxt = g_main_context_new(); - GMainLoop *loop = g_main_loop_new(ctxt, FALSE); - struct vhost_user_read_cb_data data = { - .dev = dev, - .loop = loop, - .msg = msg, - .ret = 0 - }; - - /* - * We want to be able to monitor the slave channel fd while waiting - * for chr I/O. This requires an event loop, but we can't nest the - * one to which chr is currently attached : its fd handlers might not - * be prepared for re-entrancy. So we create a new one and switch chr - * to use it. - */ - qemu_chr_be_update_read_handlers(chr->chr, ctxt); - qemu_chr_fe_add_watch(chr, G_IO_IN | G_IO_HUP, vhost_user_read_cb, &data); - - g_main_loop_run(loop); - - /* - * Restore the previous event loop context. This also destroys/recreates - * event sources : this guarantees that all pending events in the original - * context that have been processed by the nested loop are purged. - */ - qemu_chr_be_update_read_handlers(chr->chr, prev_ctxt); - - g_main_loop_unref(loop); - g_main_context_unref(ctxt); - - return data.ret; + return 0; } static int process_message_reply(struct vhost_dev *dev, From 273147b94254103f9b1b774989fad18b15489e78 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= Date: Tue, 21 Mar 2023 17:16:09 +0100 Subject: [PATCH 102/174] target/ppc: Fix helper_pminsn() prototype MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit GCC13 reports an error: ../target/ppc/excp_helper.c:2625:6: error: conflicting types for ‘helper_pminsn’ due to enum/integer mismatch; have ‘void(CPUPPCState *, powerpc_pm_insn_t)’ {aka ‘void(struct CPUArchState *, powerpc_pm_insn_t)’} [-Werror=enum-int-mismatch] 2625 | void helper_pminsn(CPUPPCState *env, powerpc_pm_insn_t insn) | ^~~~~~~~~~~~~ In file included from /home/legoater/work/qemu/qemu.git/include/qemu/osdep.h:49, from ../target/ppc/excp_helper.c:19: /home/legoater/work/qemu/qemu.git/include/exec/helper-head.h:23:27: note: previous declaration of ‘helper_pminsn’ with type ‘void(CPUArchState *, uint32_t)’ {aka ‘void(CPUArchState *, unsigned int)’} 23 | #define HELPER(name) glue(helper_, name) | ^~~~~~~ Fixes: 7778a575c7 ("ppc: Add P7/P8 Power Management instructions") Signed-off-by: Cédric Le Goater Reviewed-by: Daniel Henrique Barboza Message-Id: <20230321161609.716474-4-clg@kaod.org> Reviewed-by: Richard Henderson Reviewed-by: Thomas Huth Signed-off-by: Thomas Huth (cherry picked from commit 07e4804fcde1559aaa335fd680487ba308d86fb3) Signed-off-by: Michael Tokarev --- target/ppc/excp_helper.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/target/ppc/excp_helper.c b/target/ppc/excp_helper.c index 94adcb766b..30bc2e6adf 100644 --- a/target/ppc/excp_helper.c +++ b/target/ppc/excp_helper.c @@ -2631,7 +2631,7 @@ void helper_scv(CPUPPCState *env, uint32_t lev) } } -void helper_pminsn(CPUPPCState *env, powerpc_pm_insn_t insn) +void helper_pminsn(CPUPPCState *env, uint32_t insn) { CPUState *cs; From e7f1150829b8855244e1a9568e996dea12628c67 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20Benn=C3=A9e?= Date: Tue, 2 May 2023 15:20:59 +0100 Subject: [PATCH 103/174] tests/docker: bump the xtensa base to debian:11-slim MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Stretch is going out of support so things like security updates will fail. As the toolchain itself is binary it hopefully won't mind the underlying OS being updated. Message-Id: <20230503091244.1450613-3-alex.bennee@linaro.org> Reviewed-by: Thomas Huth Reviewed-by: Juan Quintela Signed-off-by: Alex Bennée Reported-by: Richard Henderson (cherry picked from commit 3217b84f3cd813a7daffc64b26543c313f3a042a) Signed-off-by: Michael Tokarev --- tests/docker/dockerfiles/debian-xtensa-cross.docker | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/docker/dockerfiles/debian-xtensa-cross.docker b/tests/docker/dockerfiles/debian-xtensa-cross.docker index 2f11b3b7bc..aebfabdd6e 100644 --- a/tests/docker/dockerfiles/debian-xtensa-cross.docker +++ b/tests/docker/dockerfiles/debian-xtensa-cross.docker @@ -5,7 +5,7 @@ # using a prebuilt toolchains for Xtensa cores from: # https://github.com/foss-xtensa/toolchain/releases # -FROM docker.io/library/debian:stretch-slim +FROM docker.io/library/debian:11-slim RUN apt-get update && \ DEBIAN_FRONTEND=noninteractive apt install -yy eatmydata && \ From 95cb7a725546bb1943e5d68e49f27fd20881f02e Mon Sep 17 00:00:00 2001 From: Daniil Kovalev Date: Tue, 4 Apr 2023 08:21:54 +0300 Subject: [PATCH 104/174] linux-user: Fix mips fp64 executables loading If a program requires fr1, we should set the FR bit of CP0 control status register and add F64 hardware flag. The corresponding `else if` branch statement is copied from the linux kernel sources (see `arch_check_elf` function in linux/arch/mips/kernel/elf.c). Signed-off-by: Daniil Kovalev Reviewed-by: Jiaxun Yang Message-Id: <20230404052153.16617-1-dkovalev@compiler-toolchain-for.me> Signed-off-by: Laurent Vivier (cherry picked from commit a0f8d2701b205d9d7986aa555e0566b13dc18fa0) Signed-off-by: Michael Tokarev --- linux-user/mips/cpu_loop.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/linux-user/mips/cpu_loop.c b/linux-user/mips/cpu_loop.c index d5c1c7941d..8735e58bad 100644 --- a/linux-user/mips/cpu_loop.c +++ b/linux-user/mips/cpu_loop.c @@ -290,7 +290,10 @@ void target_cpu_copy_regs(CPUArchState *env, struct target_pt_regs *regs) env->CP0_Status |= (1 << CP0St_FR); env->hflags |= MIPS_HFLAG_F64; } - } else if (!prog_req.fre && !prog_req.frdefault && + } else if (prog_req.fr1) { + env->CP0_Status |= (1 << CP0St_FR); + env->hflags |= MIPS_HFLAG_F64; + } else if (!prog_req.fre && !prog_req.frdefault && !prog_req.fr1 && !prog_req.single && !prog_req.soft) { fprintf(stderr, "qemu: Can't find a matching FPU mode\n"); exit(1); From 89bf901afb1876548f5391b46fcfc08ed328c70c Mon Sep 17 00:00:00 2001 From: Michael Tokarev Date: Sun, 9 Apr 2023 13:53:27 +0300 Subject: [PATCH 105/174] linux-user: fix getgroups/setgroups allocations linux-user getgroups(), setgroups(), getgroups32() and setgroups32() used alloca() to allocate grouplist arrays, with unchecked gidsetsize coming from the "guest". With NGROUPS_MAX being 65536 (linux, and it is common for an application to allocate NGROUPS_MAX for getgroups()), this means a typical allocation is half the megabyte on the stack. Which just overflows stack, which leads to immediate SIGSEGV in actual system getgroups() implementation. An example of such issue is aptitude, eg https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=811087#72 Cap gidsetsize to NGROUPS_MAX (return EINVAL if it is larger than that), and use heap allocation for grouplist instead of alloca(). While at it, fix coding style and make all 4 implementations identical. Try to not impose random limits - for example, allow gidsetsize to be negative for getgroups() - just do not allocate negative-sized grouplist in this case but still do actual getgroups() call. But do not allow negative gidsetsize for setgroups() since its argument is unsigned. Capping by NGROUPS_MAX seems a bit arbitrary, - we can do more, it is not an error if set size will be NGROUPS_MAX+1. But we should not allow integer overflow for the array being allocated. Maybe it is enough to just call g_try_new() and return ENOMEM if it fails. Maybe there's also no need to convert setgroups() since this one is usually smaller and known beforehand (KERN_NGROUPS_MAX is actually 63, - this is apparently a kernel-imposed limit for runtime group set). The patch fixes aptitude segfault mentioned above. Signed-off-by: Michael Tokarev Message-Id: <20230409105327.1273372-1-mjt@msgid.tls.msk.ru> Signed-off-by: Laurent Vivier (cherry picked from commit 1e35d327890bdd117a67f79c52e637fb12bb1bf4) Signed-off-by: Michael Tokarev --- linux-user/syscall.c | 105 +++++++++++++++++++++++++++++-------------- 1 file changed, 71 insertions(+), 34 deletions(-) diff --git a/linux-user/syscall.c b/linux-user/syscall.c index 9ca30149d4..cedf22c5b5 100644 --- a/linux-user/syscall.c +++ b/linux-user/syscall.c @@ -11438,39 +11438,58 @@ static abi_long do_syscall1(CPUArchState *cpu_env, int num, abi_long arg1, { int gidsetsize = arg1; target_id *target_grouplist; - gid_t *grouplist; + g_autofree gid_t *grouplist = NULL; int i; - grouplist = alloca(gidsetsize * sizeof(gid_t)); - ret = get_errno(getgroups(gidsetsize, grouplist)); - if (gidsetsize == 0) - return ret; - if (!is_error(ret)) { - target_grouplist = lock_user(VERIFY_WRITE, arg2, gidsetsize * sizeof(target_id), 0); - if (!target_grouplist) - return -TARGET_EFAULT; - for(i = 0;i < ret; i++) - target_grouplist[i] = tswapid(high2lowgid(grouplist[i])); - unlock_user(target_grouplist, arg2, gidsetsize * sizeof(target_id)); + if (gidsetsize > NGROUPS_MAX) { + return -TARGET_EINVAL; } + if (gidsetsize > 0) { + grouplist = g_try_new(gid_t, gidsetsize); + if (!grouplist) { + return -TARGET_ENOMEM; + } + } + ret = get_errno(getgroups(gidsetsize, grouplist)); + if (!is_error(ret) && gidsetsize > 0) { + target_grouplist = lock_user(VERIFY_WRITE, arg2, + gidsetsize * sizeof(target_id), 0); + if (!target_grouplist) { + return -TARGET_EFAULT; + } + for (i = 0; i < ret; i++) { + target_grouplist[i] = tswapid(high2lowgid(grouplist[i])); + } + unlock_user(target_grouplist, arg2, + gidsetsize * sizeof(target_id)); + } + return ret; } - return ret; case TARGET_NR_setgroups: { int gidsetsize = arg1; target_id *target_grouplist; - gid_t *grouplist = NULL; + g_autofree gid_t *grouplist = NULL; int i; - if (gidsetsize) { - grouplist = alloca(gidsetsize * sizeof(gid_t)); - target_grouplist = lock_user(VERIFY_READ, arg2, gidsetsize * sizeof(target_id), 1); + + if (gidsetsize > NGROUPS_MAX || gidsetsize < 0) { + return -TARGET_EINVAL; + } + if (gidsetsize > 0) { + grouplist = g_try_new(gid_t, gidsetsize); + if (!grouplist) { + return -TARGET_ENOMEM; + } + target_grouplist = lock_user(VERIFY_READ, arg2, + gidsetsize * sizeof(target_id), 1); if (!target_grouplist) { return -TARGET_EFAULT; } for (i = 0; i < gidsetsize; i++) { grouplist[i] = low2highgid(tswapid(target_grouplist[i])); } - unlock_user(target_grouplist, arg2, 0); + unlock_user(target_grouplist, arg2, + gidsetsize * sizeof(target_id)); } return get_errno(setgroups(gidsetsize, grouplist)); } @@ -11755,41 +11774,59 @@ static abi_long do_syscall1(CPUArchState *cpu_env, int num, abi_long arg1, { int gidsetsize = arg1; uint32_t *target_grouplist; - gid_t *grouplist; + g_autofree gid_t *grouplist = NULL; int i; - grouplist = alloca(gidsetsize * sizeof(gid_t)); + if (gidsetsize > NGROUPS_MAX) { + return -TARGET_EINVAL; + } + if (gidsetsize > 0) { + grouplist = g_try_new(gid_t, gidsetsize); + if (!grouplist) { + return -TARGET_ENOMEM; + } + } ret = get_errno(getgroups(gidsetsize, grouplist)); - if (gidsetsize == 0) - return ret; - if (!is_error(ret)) { - target_grouplist = lock_user(VERIFY_WRITE, arg2, gidsetsize * 4, 0); + if (!is_error(ret) && gidsetsize > 0) { + target_grouplist = lock_user(VERIFY_WRITE, arg2, + gidsetsize * 4, 0); if (!target_grouplist) { return -TARGET_EFAULT; } - for(i = 0;i < ret; i++) + for (i = 0; i < ret; i++) { target_grouplist[i] = tswap32(grouplist[i]); + } unlock_user(target_grouplist, arg2, gidsetsize * 4); } + return ret; } - return ret; #endif #ifdef TARGET_NR_setgroups32 case TARGET_NR_setgroups32: { int gidsetsize = arg1; uint32_t *target_grouplist; - gid_t *grouplist; + g_autofree gid_t *grouplist = NULL; int i; - grouplist = alloca(gidsetsize * sizeof(gid_t)); - target_grouplist = lock_user(VERIFY_READ, arg2, gidsetsize * 4, 1); - if (!target_grouplist) { - return -TARGET_EFAULT; + if (gidsetsize > NGROUPS_MAX || gidsetsize < 0) { + return -TARGET_EINVAL; + } + if (gidsetsize > 0) { + grouplist = g_try_new(gid_t, gidsetsize); + if (!grouplist) { + return -TARGET_ENOMEM; + } + target_grouplist = lock_user(VERIFY_READ, arg2, + gidsetsize * 4, 1); + if (!target_grouplist) { + return -TARGET_EFAULT; + } + for (i = 0; i < gidsetsize; i++) { + grouplist[i] = tswap32(target_grouplist[i]); + } + unlock_user(target_grouplist, arg2, 0); } - for(i = 0;i < gidsetsize; i++) - grouplist[i] = tswap32(target_grouplist[i]); - unlock_user(target_grouplist, arg2, 0); return get_errno(setgroups(gidsetsize, grouplist)); } #endif From 08fd84005f8f40c1af22c72294b8f69b0069d089 Mon Sep 17 00:00:00 2001 From: Eric Blake Date: Fri, 14 Apr 2023 10:33:58 -0500 Subject: [PATCH 106/174] migration: Handle block device inactivation failures better Consider what happens when performing a migration between two host machines connected to an NFS server serving multiple block devices to the guest, when the NFS server becomes unavailable. The migration attempts to inactivate all block devices on the source (a necessary step before the destination can take over); but if the NFS server is non-responsive, the attempt to inactivate can itself fail. When that happens, the destination fails to get the migrated guest (good, because the source wasn't able to flush everything properly): (qemu) qemu-kvm: load of migration failed: Input/output error at which point, our only hope for the guest is for the source to take back control. With the current code base, the host outputs a message, but then appears to resume: (qemu) qemu-kvm: qemu_savevm_state_complete_precopy_non_iterable: bdrv_inactivate_all() failed (-1) (src qemu)info status VM status: running but a second migration attempt now asserts: (src qemu) qemu-kvm: ../block.c:6738: int bdrv_inactivate_recurse(BlockDriverState *): Assertion `!(bs->open_flags & BDRV_O_INACTIVE)' failed. Whether the guest is recoverable on the source after the first failure is debatable, but what we do not want is to have qemu itself fail due to an assertion. It looks like the problem is as follows: In migration.c:migration_completion(), the source sets 'inactivate' to true (since COLO is not enabled), then tries savevm.c:qemu_savevm_state_complete_precopy() with a request to inactivate block devices. In turn, this calls block.c:bdrv_inactivate_all(), which fails when flushing runs up against the non-responsive NFS server. With savevm failing, we are now left in a state where some, but not all, of the block devices have been inactivated; but migration_completion() then jumps to 'fail' rather than 'fail_invalidate' and skips an attempt to reclaim those those disks by calling bdrv_activate_all(). Even if we do attempt to reclaim disks, we aren't taking note of failure there, either. Thus, we have reached a state where the migration engine has forgotten all state about whether a block device is inactive, because we did not set s->block_inactive in enough places; so migration allows the source to reach vm_start() and resume execution, violating the block layer invariant that the guest CPUs should not be restarted while a device is inactive. Note that the code in migration.c:migrate_fd_cancel() will also try to reactivate all block devices if s->block_inactive was set, but because we failed to set that flag after the first failure, the source assumes it has reclaimed all devices, even though it still has remaining inactivated devices and does not try again. Normally, qmp_cont() will also try to reactivate all disks (or correctly fail if the disks are not reclaimable because NFS is not yet back up), but the auto-resumption of the source after a migration failure does not go through qmp_cont(). And because we have left the block layer in an inconsistent state with devices still inactivated, the later migration attempt is hitting the assertion failure. Since it is important to not resume the source with inactive disks, this patch marks s->block_inactive before attempting inactivation, rather than after succeeding, in order to prevent any vm_start() until it has successfully reactivated all devices. See also https://bugzilla.redhat.com/show_bug.cgi?id=2058982 Signed-off-by: Eric Blake Reviewed-by: Juan Quintela Acked-by: Lukas Straub Tested-by: Lukas Straub Signed-off-by: Juan Quintela (cherry picked from commit 403d18ae384239876764bbfa111d6cc5dcb673d1) Signed-off-by: Michael Tokarev --- migration/migration.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/migration/migration.c b/migration/migration.c index f485eea5fb..043d22e049 100644 --- a/migration/migration.c +++ b/migration/migration.c @@ -3328,13 +3328,11 @@ static void migration_completion(MigrationState *s) MIGRATION_STATUS_DEVICE); } if (ret >= 0) { + s->block_inactive = inactivate; qemu_file_set_rate_limit(s->to_dst_file, INT64_MAX); ret = qemu_savevm_state_complete_precopy(s->to_dst_file, false, inactivate); } - if (inactivate && ret >= 0) { - s->block_inactive = true; - } } qemu_mutex_unlock_iothread(); @@ -3402,6 +3400,7 @@ fail_invalidate: bdrv_activate_all(&local_err); if (local_err) { error_report_err(local_err); + s->block_inactive = true; } else { s->block_inactive = false; } From b514d5a89888ba76d3891fa34eb48e6d91128749 Mon Sep 17 00:00:00 2001 From: Eric Blake Date: Thu, 20 Apr 2023 09:35:51 -0500 Subject: [PATCH 107/174] migration: Minor control flow simplification No need to declare a temporary variable. Suggested-by: Juan Quintela Fixes: 1df36e8c6289 ("migration: Handle block device inactivation failures better") Signed-off-by: Eric Blake Reviewed-by: Juan Quintela Signed-off-by: Juan Quintela (cherry picked from commit 5d39f44d7ac5c63f53d4d0900ceba9521bc27e49) Signed-off-by: Michael Tokarev --- migration/migration.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/migration/migration.c b/migration/migration.c index 043d22e049..2c92ad9014 100644 --- a/migration/migration.c +++ b/migration/migration.c @@ -3320,7 +3320,6 @@ static void migration_completion(MigrationState *s) ret = global_state_store(); if (!ret) { - bool inactivate = !migrate_colo_enabled(); ret = vm_stop_force_state(RUN_STATE_FINISH_MIGRATE); trace_migration_completion_vm_stop(ret); if (ret >= 0) { @@ -3328,10 +3327,10 @@ static void migration_completion(MigrationState *s) MIGRATION_STATUS_DEVICE); } if (ret >= 0) { - s->block_inactive = inactivate; + s->block_inactive = !migrate_colo_enabled(); qemu_file_set_rate_limit(s->to_dst_file, INT64_MAX); ret = qemu_savevm_state_complete_precopy(s->to_dst_file, false, - inactivate); + s->block_inactive); } } qemu_mutex_unlock_iothread(); From 7405624def23e89a858983103e0fa81935b30ac4 Mon Sep 17 00:00:00 2001 From: Eric Blake Date: Tue, 2 May 2023 15:52:12 -0500 Subject: [PATCH 108/174] migration: Attempt disk reactivation in more failure scenarios Commit fe904ea824 added a fail_inactivate label, which tries to reactivate disks on the source after a failure while s->state == MIGRATION_STATUS_ACTIVE, but didn't actually use the label if qemu_savevm_state_complete_precopy() failed. This failure to reactivate is also present in commit 6039dd5b1c (also covering the new s->state == MIGRATION_STATUS_DEVICE state) and 403d18ae (ensuring s->block_inactive is set more reliably). Consolidate the two labels back into one - no matter HOW migration is failed, if there is any chance we can reach vm_start() after having attempted inactivation, it is essential that we have tried to restart disks before then. This also makes the cleanup more like migrate_fd_cancel(). Suggested-by: Kevin Wolf Signed-off-by: Eric Blake Message-Id: <20230502205212.134680-1-eblake@redhat.com> Acked-by: Peter Xu Reviewed-by: Juan Quintela Reviewed-by: Kevin Wolf Signed-off-by: Kevin Wolf (cherry picked from commit 6dab4c93ecfae48e2e67b984d1032c1e988d3005) Signed-off-by: Michael Tokarev (Mjt: minor context tweak near added comment in migration/migration.c) --- migration/migration.c | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/migration/migration.c b/migration/migration.c index 2c92ad9014..c19fb5cb3e 100644 --- a/migration/migration.c +++ b/migration/migration.c @@ -3327,6 +3327,11 @@ static void migration_completion(MigrationState *s) MIGRATION_STATUS_DEVICE); } if (ret >= 0) { + /* + * Inactivate disks except in COLO, and track that we + * have done so in order to remember to reactivate + * them if migration fails or is cancelled. + */ s->block_inactive = !migrate_colo_enabled(); qemu_file_set_rate_limit(s->to_dst_file, INT64_MAX); ret = qemu_savevm_state_complete_precopy(s->to_dst_file, false, @@ -3367,13 +3372,13 @@ static void migration_completion(MigrationState *s) rp_error = await_return_path_close_on_source(s); trace_migration_return_path_end_after(rp_error); if (rp_error) { - goto fail_invalidate; + goto fail; } } if (qemu_file_get_error(s->to_dst_file)) { trace_migration_completion_file_err(); - goto fail_invalidate; + goto fail; } if (migrate_colo_enabled() && s->state == MIGRATION_STATUS_ACTIVE) { @@ -3387,26 +3392,25 @@ static void migration_completion(MigrationState *s) return; -fail_invalidate: - /* If not doing postcopy, vm_start() will be called: let's regain - * control on images. - */ - if (s->state == MIGRATION_STATUS_ACTIVE || - s->state == MIGRATION_STATUS_DEVICE) { +fail: + if (s->block_inactive && (s->state == MIGRATION_STATUS_ACTIVE || + s->state == MIGRATION_STATUS_DEVICE)) { + /* + * If not doing postcopy, vm_start() will be called: let's + * regain control on images. + */ Error *local_err = NULL; qemu_mutex_lock_iothread(); bdrv_activate_all(&local_err); if (local_err) { error_report_err(local_err); - s->block_inactive = true; } else { s->block_inactive = false; } qemu_mutex_unlock_iothread(); } -fail: migrate_set_state(&s->state, current_active_state, MIGRATION_STATUS_FAILED); } From d68a13c6726611be70a2856b71efac8cdce0689e Mon Sep 17 00:00:00 2001 From: Richard Henderson Date: Thu, 18 May 2023 10:31:43 +0100 Subject: [PATCH 109/174] target/arm: Fix vd == vm overlap in sve_ldff1_z If vd == vm, copy vm to scratch, so that we can pre-zero the output and still access the gather indicies. Cc: qemu-stable@nongnu.org Resolves: https://gitlab.com/qemu-project/qemu/-/issues/1612 Signed-off-by: Richard Henderson Message-id: 20230504104232.1877774-1-richard.henderson@linaro.org Reviewed-by: Peter Maydell Signed-off-by: Peter Maydell (cherry picked from commit a6771f2f5cbfbf312e2fb5b1627f38a6bf6321d0) Signed-off-by: Michael Tokarev --- target/arm/sve_helper.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/target/arm/sve_helper.c b/target/arm/sve_helper.c index 521fc9b969..27838fb6e2 100644 --- a/target/arm/sve_helper.c +++ b/target/arm/sve_helper.c @@ -6726,6 +6726,7 @@ void sve_ldff1_z(CPUARMState *env, void *vd, uint64_t *vg, void *vm, intptr_t reg_off; SVEHostPage info; target_ulong addr, in_page; + ARMVectorReg scratch; /* Skip to the first true predicate. */ reg_off = find_next_active(vg, 0, reg_max, esz); @@ -6735,6 +6736,11 @@ void sve_ldff1_z(CPUARMState *env, void *vd, uint64_t *vg, void *vm, return; } + /* Protect against overlap between vd and vm. */ + if (unlikely(vd == vm)) { + vm = memcpy(&scratch, vm, reg_max); + } + /* * Probe the first element, allowing faults. */ From 61f6b12cf3278a67677f17dea7278a70fb2069ac Mon Sep 17 00:00:00 2001 From: Paolo Bonzini Date: Wed, 10 May 2023 18:15:25 +0200 Subject: [PATCH 110/174] scsi-generic: fix buffer overflow on block limits inquiry MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Using linux 6.x guest, at boot time, an inquiry on a scsi-generic device makes qemu crash. This is caused by a buffer overflow when scsi-generic patches the block limits VPD page. Do the operations on a temporary on-stack buffer that is guaranteed to be large enough. Reported-by: Théo Maillart Analyzed-by: Théo Maillart Cc: qemu-stable@nongnu.org Signed-off-by: Paolo Bonzini (cherry picked from commit 9bd634b2f5e2f10fe35d7609eb83f30583f2e15a) Signed-off-by: Michael Tokarev --- hw/scsi/scsi-generic.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/hw/scsi/scsi-generic.c b/hw/scsi/scsi-generic.c index 92cce20a4d..d513870181 100644 --- a/hw/scsi/scsi-generic.c +++ b/hw/scsi/scsi-generic.c @@ -190,12 +190,16 @@ static int scsi_handle_inquiry_reply(SCSIGenericReq *r, SCSIDevice *s, int len) if ((s->type == TYPE_DISK || s->type == TYPE_ZBC) && (r->req.cmd.buf[1] & 0x01)) { page = r->req.cmd.buf[2]; - if (page == 0xb0) { + if (page == 0xb0 && r->buflen >= 8) { + uint8_t buf[16] = {}; + uint8_t buf_used = MIN(r->buflen, 16); uint64_t max_transfer = calculate_max_transfer(s); - stl_be_p(&r->buf[8], max_transfer); - /* Also take care of the opt xfer len. */ - stl_be_p(&r->buf[12], - MIN_NON_ZERO(max_transfer, ldl_be_p(&r->buf[12]))); + + memcpy(buf, r->buf, buf_used); + stl_be_p(&buf[8], max_transfer); + stl_be_p(&buf[12], MIN_NON_ZERO(max_transfer, ldl_be_p(&buf[12]))); + memcpy(r->buf + 8, buf + 8, buf_used - 8); + } else if (s->needs_vpd_bl_emulation && page == 0x00 && r->buflen >= 4) { /* * Now we're capable of supplying the VPD Block Limits From eee0666a501558d41b53a793fb0cfdc1e578294e Mon Sep 17 00:00:00 2001 From: Paolo Bonzini Date: Tue, 9 May 2023 16:17:15 +0200 Subject: [PATCH 111/174] target/i386: fix operand size for VCOMI/VUCOMI instructions Compared to other SSE instructions, VUCOMISx and VCOMISx are different: the single and double precision versions are distinguished through a prefix, however they use no-prefix and 0x66 for SS and SD respectively. Scalar values usually are associated with 0xF2 and 0xF3. Because of these, they incorrectly perform a 128-bit memory load instead of a 32- or 64-bit load. Fix this by writing a custom decoding function. I tested that the reproducer is fixed and the test-avx output does not change. Reported-by: Gabriele Svelto Resolves: https://gitlab.com/qemu-project/qemu/-/issues/1637 Fixes: f8d19eec0d53 ("target/i386: reimplement 0x0f 0x28-0x2f, add AVX", 2022-10-18) Cc: qemu-stable@nongnu.org Signed-off-by: Paolo Bonzini (cherry picked from commit 2b55e479e6fcbb466585fd25077a50c32e10dc3a) Signed-off-by: Michael Tokarev --- target/i386/tcg/decode-new.c.inc | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/target/i386/tcg/decode-new.c.inc b/target/i386/tcg/decode-new.c.inc index 80c579164f..c2ee712561 100644 --- a/target/i386/tcg/decode-new.c.inc +++ b/target/i386/tcg/decode-new.c.inc @@ -782,6 +782,17 @@ static void decode_0F2D(DisasContext *s, CPUX86State *env, X86OpEntry *entry, ui *entry = *decode_by_prefix(s, opcodes_0F2D); } +static void decode_VxCOMISx(DisasContext *s, CPUX86State *env, X86OpEntry *entry, uint8_t *b) +{ + /* + * VUCOMISx and VCOMISx are different and use no-prefix and 0x66 for SS and SD + * respectively. Scalar values usually are associated with 0xF2 and 0xF3, for + * which X86_VEX_REPScalar exists, but here it has to be decoded by hand. + */ + entry->s1 = entry->s2 = (s->prefix & PREFIX_DATA ? X86_SIZE_sd : X86_SIZE_ss); + entry->gen = (*b == 0x2E ? gen_VUCOMI : gen_VCOMI); +} + static void decode_sse_unary(DisasContext *s, CPUX86State *env, X86OpEntry *entry, uint8_t *b) { if (!(s->prefix & (PREFIX_REPZ | PREFIX_REPNZ))) { @@ -870,8 +881,8 @@ static const X86OpEntry opcodes_0F[256] = { [0x2B] = X86_OP_GROUP0(0F2B), [0x2C] = X86_OP_GROUP0(0F2C), [0x2D] = X86_OP_GROUP0(0F2D), - [0x2E] = X86_OP_ENTRY3(VUCOMI, None,None, V,x, W,x, vex4 p_00_66), - [0x2F] = X86_OP_ENTRY3(VCOMI, None,None, V,x, W,x, vex4 p_00_66), + [0x2E] = X86_OP_GROUP3(VxCOMISx, None,None, V,x, W,x, vex3 p_00_66), /* VUCOMISS/SD */ + [0x2F] = X86_OP_GROUP3(VxCOMISx, None,None, V,x, W,x, vex3 p_00_66), /* VCOMISS/SD */ [0x38] = X86_OP_GROUP0(0F38), [0x3a] = X86_OP_GROUP0(0F3A), From 48b60eb6c917646df9efa7ddb4c25929f358d647 Mon Sep 17 00:00:00 2001 From: Xinyu Li Date: Wed, 10 May 2023 22:52:22 +0800 Subject: [PATCH 112/174] target/i386: fix avx2 instructions vzeroall and vpermdq vzeroall: xmm_regs should be used instead of xmm_t0 vpermdq: bit 3 and 7 of imm should be considered Signed-off-by: Xinyu Li Message-Id: <20230510145222.586487-1-lixinyu20s@ict.ac.cn> Cc: qemu-stable@nongnu.org Signed-off-by: Paolo Bonzini (cherry picked from commit 056d649007bc9fdae9f1d576e77c1316e9a34468) Signed-off-by: Michael Tokarev --- target/i386/ops_sse.h | 8 ++++++++ target/i386/tcg/emit.c.inc | 2 +- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/target/i386/ops_sse.h b/target/i386/ops_sse.h index 3cbc36a59d..44c1e70093 100644 --- a/target/i386/ops_sse.h +++ b/target/i386/ops_sse.h @@ -2493,6 +2493,14 @@ void helper_vpermdq_ymm(Reg *d, Reg *v, Reg *s, uint32_t order) d->Q(1) = r1; d->Q(2) = r2; d->Q(3) = r3; + if (order & 0x8) { + d->Q(0) = 0; + d->Q(1) = 0; + } + if (order & 0x80) { + d->Q(2) = 0; + d->Q(3) = 0; + } } void helper_vpermq_ymm(Reg *d, Reg *s, uint32_t order) diff --git a/target/i386/tcg/emit.c.inc b/target/i386/tcg/emit.c.inc index 7296f3952c..5d31fce65d 100644 --- a/target/i386/tcg/emit.c.inc +++ b/target/i386/tcg/emit.c.inc @@ -2288,7 +2288,7 @@ static void gen_VZEROALL(DisasContext *s, CPUX86State *env, X86DecodedInsn *deco { TCGv_ptr ptr = tcg_temp_new_ptr(); - tcg_gen_addi_ptr(ptr, cpu_env, offsetof(CPUX86State, xmm_t0)); + tcg_gen_addi_ptr(ptr, cpu_env, offsetof(CPUX86State, xmm_regs)); gen_helper_memset(ptr, ptr, tcg_constant_i32(0), tcg_constant_ptr(CPU_NB_REGS * sizeof(ZMMReg))); tcg_temp_free_ptr(ptr); From 6f4dc62715265aca412de3f70a3302bc5712f6a4 Mon Sep 17 00:00:00 2001 From: Hawkins Jiawei Date: Tue, 9 May 2023 16:48:17 +0800 Subject: [PATCH 113/174] vhost: fix possible wrap in SVQ descriptor ring MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit QEMU invokes vhost_svq_add() when adding a guest's element into SVQ. In vhost_svq_add(), it uses vhost_svq_available_slots() to check whether QEMU can add the element into SVQ. If there is enough space, then QEMU combines some out descriptors and some in descriptors into one descriptor chain, and adds it into `svq->vring.desc` by vhost_svq_vring_write_descs(). Yet the problem is that, `svq->shadow_avail_idx - svq->shadow_used_idx` in vhost_svq_available_slots() returns the number of occupied elements, or the number of descriptor chains, instead of the number of occupied descriptors, which may cause wrapping in SVQ descriptor ring. Here is an example. In vhost_handle_guest_kick(), QEMU forwards as many available buffers to device by virtqueue_pop() and vhost_svq_add_element(). virtqueue_pop() returns a guest's element, and then this element is added into SVQ by vhost_svq_add_element(), a wrapper to vhost_svq_add(). If QEMU invokes virtqueue_pop() and vhost_svq_add_element() `svq->vring.num` times, vhost_svq_available_slots() thinks QEMU just ran out of slots and everything should work fine. But in fact, virtqueue_pop() returns `svq->vring.num` elements or descriptor chains, more than `svq->vring.num` descriptors due to guest memory fragmentation, and this causes wrapping in SVQ descriptor ring. This bug is valid even before marking the descriptors used. If the guest memory is fragmented, SVQ must add chains so it can try to add more descriptors than possible. This patch solves it by adding `num_free` field in VhostShadowVirtqueue structure and updating this field in vhost_svq_add() and vhost_svq_get_buf(), to record the number of free descriptors. Fixes: 100890f7ca ("vhost: Shadow virtqueue buffers forwarding") Signed-off-by: Hawkins Jiawei Acked-by: Eugenio Pérez Message-Id: <20230509084817.3973-1-yin31149@gmail.com> Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Tested-by: Lei Yang (cherry picked from commit 5d410557dea452f6231a7c66155e29a37e168528) Signed-off-by: Michael Tokarev --- hw/virtio/vhost-shadow-virtqueue.c | 5 ++++- hw/virtio/vhost-shadow-virtqueue.h | 3 +++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/hw/virtio/vhost-shadow-virtqueue.c b/hw/virtio/vhost-shadow-virtqueue.c index a723073747..d422418f2d 100644 --- a/hw/virtio/vhost-shadow-virtqueue.c +++ b/hw/virtio/vhost-shadow-virtqueue.c @@ -68,7 +68,7 @@ bool vhost_svq_valid_features(uint64_t features, Error **errp) */ static uint16_t vhost_svq_available_slots(const VhostShadowVirtqueue *svq) { - return svq->vring.num - (svq->shadow_avail_idx - svq->shadow_used_idx); + return svq->num_free; } /** @@ -263,6 +263,7 @@ int vhost_svq_add(VhostShadowVirtqueue *svq, const struct iovec *out_sg, return -EINVAL; } + svq->num_free -= ndescs; svq->desc_state[qemu_head].elem = elem; svq->desc_state[qemu_head].ndescs = ndescs; vhost_svq_kick(svq); @@ -449,6 +450,7 @@ static VirtQueueElement *vhost_svq_get_buf(VhostShadowVirtqueue *svq, last_used_chain = vhost_svq_last_desc_of_chain(svq, num, used_elem.id); svq->desc_next[last_used_chain] = svq->free_head; svq->free_head = used_elem.id; + svq->num_free += num; *len = used_elem.len; return g_steal_pointer(&svq->desc_state[used_elem.id].elem); @@ -656,6 +658,7 @@ void vhost_svq_start(VhostShadowVirtqueue *svq, VirtIODevice *vdev, svq->vq = vq; svq->vring.num = virtio_queue_get_num(vdev, virtio_get_queue_index(vq)); + svq->num_free = svq->vring.num; driver_size = vhost_svq_driver_area_size(svq); device_size = vhost_svq_device_area_size(svq); svq->vring.desc = qemu_memalign(qemu_real_host_page_size(), driver_size); diff --git a/hw/virtio/vhost-shadow-virtqueue.h b/hw/virtio/vhost-shadow-virtqueue.h index d04c34a589..328a7fc075 100644 --- a/hw/virtio/vhost-shadow-virtqueue.h +++ b/hw/virtio/vhost-shadow-virtqueue.h @@ -107,6 +107,9 @@ typedef struct VhostShadowVirtqueue { /* Next head to consume from the device */ uint16_t last_used_idx; + + /* Size of SVQ vring free descriptors */ + uint16_t num_free; } VhostShadowVirtqueue; bool vhost_svq_valid_features(uint64_t features, Error **errp); From dd63d3a5b8b312ba042a827441d62458ad63a374 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eugenio=20P=C3=A9rez?= Date: Thu, 4 May 2023 12:14:47 +0200 Subject: [PATCH 114/174] virtio-net: not enable vq reset feature unconditionally MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The commit 93a97dc5200a ("virtio-net: enable vq reset feature") enables unconditionally vq reset feature as long as the device is emulated. This makes impossible to actually disable the feature, and it causes migration problems from qemu version previous than 7.2. The entire final commit is unneeded as device system already enable or disable the feature properly. This reverts commit 93a97dc5200a95e63b99cb625f20b7ae802ba413. Fixes: 93a97dc5200a ("virtio-net: enable vq reset feature") Signed-off-by: Eugenio Pérez Message-Id: <20230504101447.389398-1-eperezma@redhat.com> Reviewed-by: Xuan Zhuo Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin (cherry picked from commit 1fac00f70b3261050af5564b20ca55c1b2a3059a) Signed-off-by: Michael Tokarev --- hw/net/virtio-net.c | 1 - 1 file changed, 1 deletion(-) diff --git a/hw/net/virtio-net.c b/hw/net/virtio-net.c index aba12759d5..4abd49e298 100644 --- a/hw/net/virtio-net.c +++ b/hw/net/virtio-net.c @@ -802,7 +802,6 @@ static uint64_t virtio_net_get_features(VirtIODevice *vdev, uint64_t features, } if (!get_vhost_net(nc->peer)) { - virtio_add_feature(&features, VIRTIO_F_RING_RESET); return features; } From 926a8380f2eb2dcb3c455b4382f4dac5c980ecba Mon Sep 17 00:00:00 2001 From: Mauro Matteo Cascella Date: Tue, 9 May 2023 09:53:17 +0200 Subject: [PATCH 115/174] virtio-crypto: fix NULL pointer dereference in virtio_crypto_free_request Ensure op_info is not NULL in case of QCRYPTODEV_BACKEND_ALG_SYM algtype. Fixes: 0e660a6f90a ("crypto: Introduce RSA algorithm") Signed-off-by: Mauro Matteo Cascella Reported-by: Yiming Tao Message-Id: <20230509075317.1132301-1-mcascell@redhat.com> Reviewed-by: Gonglei Reviewed-by: zhenwei pi Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin (cherry picked from commit 3e69908907f8d3dd20d5753b0777a6e3824ba824) Signed-off-by: Michael Tokarev (Mjt: context tweak after 999c789f00 cryptodev: Introduce cryptodev alg type in QAPI) --- hw/virtio/virtio-crypto.c | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/hw/virtio/virtio-crypto.c b/hw/virtio/virtio-crypto.c index 97da74e719..a6dbdd32da 100644 --- a/hw/virtio/virtio-crypto.c +++ b/hw/virtio/virtio-crypto.c @@ -476,15 +476,17 @@ static void virtio_crypto_free_request(VirtIOCryptoReq *req) size_t max_len; CryptoDevBackendSymOpInfo *op_info = req->op_info.u.sym_op_info; - max_len = op_info->iv_len + - op_info->aad_len + - op_info->src_len + - op_info->dst_len + - op_info->digest_result_len; + if (op_info) { + max_len = op_info->iv_len + + op_info->aad_len + + op_info->src_len + + op_info->dst_len + + op_info->digest_result_len; - /* Zeroize and free request data structure */ - memset(op_info, 0, sizeof(*op_info) + max_len); - g_free(op_info); + /* Zeroize and free request data structure */ + memset(op_info, 0, sizeof(*op_info) + max_len); + g_free(op_info); + } } else if (req->flags == CRYPTODEV_BACKEND_ALG_ASYM) { CryptoDevBackendAsymOpInfo *op_info = req->op_info.u.asym_op_info; if (op_info) { From f9f42e708f33fc54b2943b8f585d1d8f258cba49 Mon Sep 17 00:00:00 2001 From: Akihiko Odaki Date: Thu, 23 Feb 2023 19:20:15 +0900 Subject: [PATCH 116/174] e1000: Count CRC in Tx statistics The Software Developer's Manual 13.7.4.5 "Packets Transmitted (64 Bytes) Count" says: > This register counts the number of packets transmitted that are > exactly 64 bytes (from through , > inclusively) in length. It also says similar for the other Tx statistics registers. Add the number of bytes for CRC to those registers. Signed-off-by: Akihiko Odaki Signed-off-by: Jason Wang (cherry picked from commit c50b152485d4e10dfa1e1d7ea668f29a5fb92e9c) Signed-off-by: Michael Tokarev (Mjt: pick this for 7.2 too: a fix by its own and makes next patch to apply cleanly) --- hw/net/e1000.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/hw/net/e1000.c b/hw/net/e1000.c index e26e0a64c1..9cd3d6f495 100644 --- a/hw/net/e1000.c +++ b/hw/net/e1000.c @@ -567,7 +567,7 @@ e1000_send_packet(E1000State *s, const uint8_t *buf, int size) qemu_send_packet(nc, buf, size); } inc_tx_bcast_or_mcast_count(s, buf); - e1000x_increase_size_stats(s->mac_reg, PTCregs, size); + e1000x_increase_size_stats(s->mac_reg, PTCregs, size + 4); } static void @@ -631,7 +631,7 @@ xmit_seg(E1000State *s) } e1000x_inc_reg_if_not_full(s->mac_reg, TPT); - e1000x_grow_8reg_if_not_full(s->mac_reg, TOTL, s->tx.size); + e1000x_grow_8reg_if_not_full(s->mac_reg, TOTL, s->tx.size + 4); s->mac_reg[GPTC] = s->mac_reg[TPT]; s->mac_reg[GOTCL] = s->mac_reg[TOTL]; s->mac_reg[GOTCH] = s->mac_reg[TOTH]; From b121ebe143e575de85f2ef2525bba57adb5ac35a Mon Sep 17 00:00:00 2001 From: "timothee.cocault@gmail.com" Date: Mon, 10 Apr 2023 17:27:48 +0200 Subject: [PATCH 117/174] e1000e: Fix tx/rx counters MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The bytes and packets counter registers are cleared on read. Copying the "total counter" registers to the "good counter" registers has side effects. If the "total" register is never read by the OS, it only gets incremented. This leads to exponential growth of the "good" register. This commit increments the counters individually to avoid this. Signed-off-by: Timothée Cocault Signed-off-by: Jason Wang (cherry picked from commit 8d689f6aae8be096b4a1859be07c1b083865f755) Signed-off-by: Michael Tokarev (Mjt: removed hw/net/igb_core.c part: igb introduced in 8.0) --- hw/net/e1000.c | 5 ++--- hw/net/e1000e_core.c | 5 ++--- hw/net/e1000x_common.c | 5 ++--- 3 files changed, 6 insertions(+), 9 deletions(-) diff --git a/hw/net/e1000.c b/hw/net/e1000.c index 9cd3d6f495..0dfdf47313 100644 --- a/hw/net/e1000.c +++ b/hw/net/e1000.c @@ -632,9 +632,8 @@ xmit_seg(E1000State *s) e1000x_inc_reg_if_not_full(s->mac_reg, TPT); e1000x_grow_8reg_if_not_full(s->mac_reg, TOTL, s->tx.size + 4); - s->mac_reg[GPTC] = s->mac_reg[TPT]; - s->mac_reg[GOTCL] = s->mac_reg[TOTL]; - s->mac_reg[GOTCH] = s->mac_reg[TOTH]; + e1000x_inc_reg_if_not_full(s->mac_reg, GPTC); + e1000x_grow_8reg_if_not_full(s->mac_reg, GOTCL, s->tx.size + 4); } static void diff --git a/hw/net/e1000e_core.c b/hw/net/e1000e_core.c index fc9cdb4528..c71d82ce1d 100644 --- a/hw/net/e1000e_core.c +++ b/hw/net/e1000e_core.c @@ -687,9 +687,8 @@ e1000e_on_tx_done_update_stats(E1000ECore *core, struct NetTxPkt *tx_pkt) g_assert_not_reached(); } - core->mac[GPTC] = core->mac[TPT]; - core->mac[GOTCL] = core->mac[TOTL]; - core->mac[GOTCH] = core->mac[TOTH]; + e1000x_inc_reg_if_not_full(core->mac, GPTC); + e1000x_grow_8reg_if_not_full(core->mac, GOTCL, tot_len); } static void diff --git a/hw/net/e1000x_common.c b/hw/net/e1000x_common.c index a8d93870b5..3fdc34f753 100644 --- a/hw/net/e1000x_common.c +++ b/hw/net/e1000x_common.c @@ -217,15 +217,14 @@ e1000x_update_rx_total_stats(uint32_t *mac, e1000x_increase_size_stats(mac, PRCregs, data_fcs_size); e1000x_inc_reg_if_not_full(mac, TPR); - mac[GPRC] = mac[TPR]; + e1000x_inc_reg_if_not_full(mac, GPRC); /* TOR - Total Octets Received: * This register includes bytes received in a packet from the field through the field, inclusively. * Always include FCS length (4) in size. */ e1000x_grow_8reg_if_not_full(mac, TORL, data_size + 4); - mac[GORCL] = mac[TORL]; - mac[GORCH] = mac[TORH]; + e1000x_grow_8reg_if_not_full(mac, GORCL, data_size + 4); } void From 859759ee3995a3130855732860536588c0f33668 Mon Sep 17 00:00:00 2001 From: Stefan Hajnoczi Date: Thu, 13 Apr 2023 13:19:46 -0400 Subject: [PATCH 118/174] rtl8139: fix large_send_mss divide-by-zero MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit If the driver sets large_send_mss to 0 then a divide-by-zero occurs. Even if the division wasn't a problem, the for loop that emits MSS-sized packets would never terminate. Solve these issues by skipping offloading when large_send_mss=0. This issue was found by OSS-Fuzz as part of Alexander Bulekov's device fuzzing work. The reproducer is: $ cat << EOF | ./qemu-system-i386 -display none -machine accel=qtest, -m \ 512M,slots=1,maxmem=0xffff000000000000 -machine q35 -nodefaults -device \ rtl8139,netdev=net0 -netdev user,id=net0 -device \ pc-dimm,id=nv1,memdev=mem1,addr=0xb800a64602800000 -object \ memory-backend-ram,id=mem1,size=2M -qtest stdio outl 0xcf8 0x80000814 outl 0xcfc 0xe0000000 outl 0xcf8 0x80000804 outw 0xcfc 0x06 write 0xe0000037 0x1 0x04 write 0xe00000e0 0x2 0x01 write 0x1 0x1 0x04 write 0x3 0x1 0x98 write 0xa 0x1 0x8c write 0xb 0x1 0x02 write 0xc 0x1 0x46 write 0xd 0x1 0xa6 write 0xf 0x1 0xb8 write 0xb800a646028c000c 0x1 0x08 write 0xb800a646028c000e 0x1 0x47 write 0xb800a646028c0010 0x1 0x02 write 0xb800a646028c0017 0x1 0x06 write 0xb800a646028c0036 0x1 0x80 write 0xe00000d9 0x1 0x40 EOF Buglink: https://gitlab.com/qemu-project/qemu/-/issues/1582 Closes: https://gitlab.com/qemu-project/qemu/-/issues/1582 Cc: qemu-stable@nongnu.org Cc: Peter Maydell Fixes: 6d71357a3b65 ("rtl8139: honor large send MSS value") Reported-by: Alexander Bulekov Reviewed-by: Philippe Mathieu-Daudé Tested-by: Alexander Bulekov Signed-off-by: Stefan Hajnoczi Signed-off-by: Jason Wang (cherry picked from commit 792676c165159c11412346870fd58fd243ab2166) Signed-off-by: Michael Tokarev --- hw/net/rtl8139.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/hw/net/rtl8139.c b/hw/net/rtl8139.c index 700b1b66b6..eb679d7c40 100644 --- a/hw/net/rtl8139.c +++ b/hw/net/rtl8139.c @@ -2154,6 +2154,9 @@ static int rtl8139_cplus_transmit_one(RTL8139State *s) int large_send_mss = (txdw0 >> CP_TC_LGSEN_MSS_SHIFT) & CP_TC_LGSEN_MSS_MASK; + if (large_send_mss == 0) { + goto skip_offload; + } DPRINTF("+++ C+ mode offloaded task TSO IP data %d " "frame data %d specified MSS=%d\n", From 12f0e6175808505f9c458a6c03967a49e6980159 Mon Sep 17 00:00:00 2001 From: Akihiko Odaki Date: Tue, 23 May 2023 11:39:12 +0900 Subject: [PATCH 119/174] util/vfio-helpers: Use g_file_read_link() MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit When _FORTIFY_SOURCE=2, glibc version is 2.35, and GCC version is 12.1.0, the compiler complains as follows: In file included from /usr/include/features.h:490, from /usr/include/bits/libc-header-start.h:33, from /usr/include/stdint.h:26, from /usr/lib/gcc/aarch64-unknown-linux-gnu/12.1.0/include/stdint.h:9, from /home/alarm/q/var/qemu/include/qemu/osdep.h:94, from ../util/vfio-helpers.c:13: In function 'readlink', inlined from 'sysfs_find_group_file' at ../util/vfio-helpers.c:116:9, inlined from 'qemu_vfio_init_pci' at ../util/vfio-helpers.c:326:18, inlined from 'qemu_vfio_open_pci' at ../util/vfio-helpers.c:517:9: /usr/include/bits/unistd.h:119:10: error: argument 2 is null but the corresponding size argument 3 value is 4095 [-Werror=nonnull] 119 | return __glibc_fortify (readlink, __len, sizeof (char), | ^~~~~~~~~~~~~~~ This error implies the allocated buffer can be NULL. Use g_file_read_link(), which allocates buffer automatically to avoid the error. Signed-off-by: Akihiko Odaki Reviewed-by: Philippe Mathieu-Daudé Reviewed-by: Cédric Le Goater Signed-off-by: Cédric Le Goater (cherry picked from commit dbdea0dbfe2cef9ef6c752e9077e4fc98724194c) Signed-off-by: Michael Tokarev --- util/vfio-helpers.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/util/vfio-helpers.c b/util/vfio-helpers.c index 0d1520caac..4670867e1f 100644 --- a/util/vfio-helpers.c +++ b/util/vfio-helpers.c @@ -106,15 +106,17 @@ struct QEMUVFIOState { */ static char *sysfs_find_group_file(const char *device, Error **errp) { + g_autoptr(GError) gerr = NULL; char *sysfs_link; char *sysfs_group; char *p; char *path = NULL; sysfs_link = g_strdup_printf("/sys/bus/pci/devices/%s/iommu_group", device); - sysfs_group = g_malloc0(PATH_MAX); - if (readlink(sysfs_link, sysfs_group, PATH_MAX - 1) == -1) { - error_setg_errno(errp, errno, "Failed to find iommu group sysfs path"); + sysfs_group = g_file_read_link(sysfs_link, &gerr); + if (gerr) { + error_setg(errp, "Failed to find iommu group sysfs path: %s", + gerr->message); goto out; } p = strrchr(sysfs_group, '/'); From 49d5fc4cfc420145aa203d14345bd1da48df1c9b Mon Sep 17 00:00:00 2001 From: Paolo Bonzini Date: Tue, 23 May 2023 17:58:40 +0200 Subject: [PATCH 120/174] usb/ohci: Set pad to 0 after frame update When the OHCI controller's framenumber is incremented, HccaPad1 register should be set to zero (Ref OHCI Spec 4.4) ReactOS uses hccaPad1 to determine if the OHCI hardware is running, consequently it fails this check in current qemu master. Signed-off-by: Ryan Wendland Resolves: https://gitlab.com/qemu-project/qemu/-/issues/1048 Signed-off-by: Paolo Bonzini (cherry picked from commit 6301460ce9f59885e8feb65185bcfb6b128c8eff) Signed-off-by: Michael Tokarev --- hw/usb/hcd-ohci.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/hw/usb/hcd-ohci.c b/hw/usb/hcd-ohci.c index 9d68036d23..c3ab762f54 100644 --- a/hw/usb/hcd-ohci.c +++ b/hw/usb/hcd-ohci.c @@ -1210,6 +1210,8 @@ static void ohci_frame_boundary(void *opaque) /* Increment frame number and take care of endianness. */ ohci->frame_number = (ohci->frame_number + 1) & 0xffff; hcca.frame = cpu_to_le16(ohci->frame_number); + /* When the HC updates frame number, set pad to 0. Ref OHCI Spec 4.4.1*/ + hcca.pad = 0; if (ohci->done_count == 0 && !(ohci->intr_status & OHCI_INTR_WD)) { if (!ohci->done) From 9fe6e8139dc268f9916b8b7ce3ed9586c5354d11 Mon Sep 17 00:00:00 2001 From: Thomas Huth Date: Mon, 22 May 2023 11:10:11 +0200 Subject: [PATCH 121/174] hw/scsi/lsi53c895a: Fix reentrancy issues in the LSI controller (CVE-2023-0330) We cannot use the generic reentrancy guard in the LSI code, so we have to manually prevent endless reentrancy here. The problematic lsi_execute_script() function has already a way to detect whether too many instructions have been executed - we just have to slightly change the logic here that it also takes into account if the function has been called too often in a reentrant way. The code in fuzz-lsi53c895a-test.c has been taken from an earlier patch by Mauro Matteo Cascella. Resolves: https://gitlab.com/qemu-project/qemu/-/issues/1563 Message-Id: <20230522091011.1082574-1-thuth@redhat.com> Reviewed-by: Stefan Hajnoczi Reviewed-by: Alexander Bulekov Signed-off-by: Thomas Huth (cherry picked from commit b987718bbb1d0eabf95499b976212dd5f0120d75) Signed-off-by: Michael Tokarev --- hw/scsi/lsi53c895a.c | 23 +++++++++++++++------ tests/qtest/fuzz-lsi53c895a-test.c | 33 ++++++++++++++++++++++++++++++ 2 files changed, 50 insertions(+), 6 deletions(-) diff --git a/hw/scsi/lsi53c895a.c b/hw/scsi/lsi53c895a.c index 50979640c3..42532c4744 100644 --- a/hw/scsi/lsi53c895a.c +++ b/hw/scsi/lsi53c895a.c @@ -1134,15 +1134,24 @@ static void lsi_execute_script(LSIState *s) uint32_t addr, addr_high; int opcode; int insn_processed = 0; + static int reentrancy_level; + + reentrancy_level++; s->istat1 |= LSI_ISTAT1_SRUN; again: - if (++insn_processed > LSI_MAX_INSN) { - /* Some windows drivers make the device spin waiting for a memory - location to change. If we have been executed a lot of code then - assume this is the case and force an unexpected device disconnect. - This is apparently sufficient to beat the drivers into submission. - */ + /* + * Some windows drivers make the device spin waiting for a memory location + * to change. If we have executed more than LSI_MAX_INSN instructions then + * assume this is the case and force an unexpected device disconnect. This + * is apparently sufficient to beat the drivers into submission. + * + * Another issue (CVE-2023-0330) can occur if the script is programmed to + * trigger itself again and again. Avoid this problem by stopping after + * being called multiple times in a reentrant way (8 is an arbitrary value + * which should be enough for all valid use cases). + */ + if (++insn_processed > LSI_MAX_INSN || reentrancy_level > 8) { if (!(s->sien0 & LSI_SIST0_UDC)) { qemu_log_mask(LOG_GUEST_ERROR, "lsi_scsi: inf. loop with UDC masked"); @@ -1596,6 +1605,8 @@ again: } } trace_lsi_execute_script_stop(); + + reentrancy_level--; } static uint8_t lsi_reg_readb(LSIState *s, int offset) diff --git a/tests/qtest/fuzz-lsi53c895a-test.c b/tests/qtest/fuzz-lsi53c895a-test.c index 392a7ae7ed..9b007def26 100644 --- a/tests/qtest/fuzz-lsi53c895a-test.c +++ b/tests/qtest/fuzz-lsi53c895a-test.c @@ -8,6 +8,36 @@ #include "qemu/osdep.h" #include "libqtest.h" +/* + * This used to trigger a DMA reentrancy issue + * leading to memory corruption bugs like stack + * overflow or use-after-free + * https://gitlab.com/qemu-project/qemu/-/issues/1563 + */ +static void test_lsi_dma_reentrancy(void) +{ + QTestState *s; + + s = qtest_init("-M q35 -m 512M -nodefaults " + "-blockdev driver=null-co,node-name=null0 " + "-device lsi53c810 -device scsi-cd,drive=null0"); + + qtest_outl(s, 0xcf8, 0x80000804); /* PCI Command Register */ + qtest_outw(s, 0xcfc, 0x7); /* Enables accesses */ + qtest_outl(s, 0xcf8, 0x80000814); /* Memory Bar 1 */ + qtest_outl(s, 0xcfc, 0xff100000); /* Set MMIO Address*/ + qtest_outl(s, 0xcf8, 0x80000818); /* Memory Bar 2 */ + qtest_outl(s, 0xcfc, 0xff000000); /* Set RAM Address*/ + qtest_writel(s, 0xff000000, 0xc0000024); + qtest_writel(s, 0xff000114, 0x00000080); + qtest_writel(s, 0xff00012c, 0xff000000); + qtest_writel(s, 0xff000004, 0xff000114); + qtest_writel(s, 0xff000008, 0xff100014); + qtest_writel(s, 0xff10002f, 0x000000ff); + + qtest_quit(s); +} + /* * This used to trigger a UAF in lsi_do_msgout() * https://gitlab.com/qemu-project/qemu/-/issues/972 @@ -120,5 +150,8 @@ int main(int argc, char **argv) qtest_add_func("fuzz/lsi53c895a/lsi_do_msgout_cancel_req", test_lsi_do_msgout_cancel_req); + qtest_add_func("fuzz/lsi53c895a/lsi_dma_reentrancy", + test_lsi_dma_reentrancy); + return g_test_run(); } From 9d52aaa92bd8b301e918dc5055041932ee1e0371 Mon Sep 17 00:00:00 2001 From: Igor Mammedov Date: Mon, 22 May 2023 15:17:17 +0200 Subject: [PATCH 122/174] machine: do not crash if default RAM backend name has been stolen MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit QEMU aborts when default RAM backend should be used (i.e. no explicit '-machine memory-backend=' specified) but user has created an object which 'id' equals to default RAM backend name used by board. $QEMU -machine pc \ -object memory-backend-ram,id=pc.ram,size=4294967296 Actual results: QEMU 7.2.0 monitor - type 'help' for more information (qemu) Unexpected error in object_property_try_add() at ../qom/object.c:1239: qemu-kvm: attempt to add duplicate property 'pc.ram' to object (type 'container') Aborted (core dumped) Instead of abort, check for the conflicting 'id' and exit with an error, suggesting how to remedy the issue. Buglink: https://bugzilla.redhat.com/show_bug.cgi?id=2207886 Signed-off-by: Igor Mammedov Message-Id: <20230522131717.3780533-1-imammedo@redhat.com> Tested-by: Thomas Huth Reviewed-by: Thomas Huth Reviewed-by: Shaoqin Huang Reviewed-by: Philippe Mathieu-Daudé Signed-off-by: Thomas Huth (cherry picked from commit a37531f2381c4e294e48b1417089474128388b44) Signed-off-by: Michael Tokarev --- hw/core/machine.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/hw/core/machine.c b/hw/core/machine.c index 035d078a74..19f42450f5 100644 --- a/hw/core/machine.c +++ b/hw/core/machine.c @@ -1329,6 +1329,14 @@ void machine_run_board_init(MachineState *machine, const char *mem_path, Error * } } else if (machine_class->default_ram_id && machine->ram_size && numa_uses_legacy_mem()) { + if (object_property_find(object_get_objects_root(), + machine_class->default_ram_id)) { + error_setg(errp, "object name '%s' is reserved for the default" + " RAM backend, it can't be used for any other purposes." + " Change the object's 'id' to something else", + machine_class->default_ram_id); + return; + } if (!create_default_memdev(current_machine, mem_path, errp)) { return; } From a8f7a3504dd30f760e3f07577a7e3f0554d538ea Mon Sep 17 00:00:00 2001 From: Michael Tokarev Date: Mon, 29 May 2023 18:17:39 +0300 Subject: [PATCH 123/174] Update version for 7.2.3 release Signed-off-by: Michael Tokarev --- VERSION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/VERSION b/VERSION index 77f5bec5b2..429dc57af3 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -7.2.2 +7.2.3 From 509c444bacd0f3588891f6cd5c9a0b626f026a76 Mon Sep 17 00:00:00 2001 From: Thomas Huth Date: Mon, 24 Apr 2023 10:22:35 +0100 Subject: [PATCH 124/174] gitlab-ci: Avoid to re-run "configure" in the device-crash-test jobs MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit After "make check-venv" had been added to these jobs, they started to re-run "configure" each time since our logic in the makefile thinks that some files are out of date here. Avoid it with the same trick that we are using in buildtest-template.yml already by disabling the up-to-date check via NINJA=":". Fixes: 1d8cf47e5b ("tests: run 'device-crash-test' from tests/venv") Signed-off-by: Thomas Huth Message-Id: <20230414145845.456145-2-thuth@redhat.com> Signed-off-by: Alex Bennée Message-Id: <20230424092249.58552-5-alex.bennee@linaro.org> (cherry picked from commit 4d3bd91b26a69b39a178744d3d6e5f23050afb23) Signed-off-by: Michael Tokarev --- .gitlab-ci.d/buildtest.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitlab-ci.d/buildtest.yml b/.gitlab-ci.d/buildtest.yml index d21b4a1fd4..38d95c8487 100644 --- a/.gitlab-ci.d/buildtest.yml +++ b/.gitlab-ci.d/buildtest.yml @@ -109,7 +109,7 @@ crash-test-debian: IMAGE: debian-amd64 script: - cd build - - make check-venv + - make NINJA=":" check-venv - tests/venv/bin/python3 scripts/device-crash-test -q ./qemu-system-i386 build-system-fedora: @@ -155,7 +155,7 @@ crash-test-fedora: IMAGE: fedora script: - cd build - - make check-venv + - make NINJA=":" check-venv - tests/venv/bin/python3 scripts/device-crash-test -q ./qemu-system-ppc - tests/venv/bin/python3 scripts/device-crash-test -q ./qemu-system-riscv32 From 369e2c4e2d0771c3df598646340bbfbb1a0cb7db Mon Sep 17 00:00:00 2001 From: Thomas Huth Date: Mon, 24 Apr 2023 10:22:36 +0100 Subject: [PATCH 125/174] scripts/device-crash-test: Add a parameter to run with TCG only MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit We're currently facing the problem that the device-crash-test script runs twice as long in the CI when a runner supports KVM - which sometimes results in a timeout of the CI job. To get a more deterministic runtime here, add an option to the script that allows to run it with TCG only. Reported-by: Eldon Stegall Signed-off-by: Thomas Huth Reviewed-by: Philippe Mathieu-Daudé Message-Id: <20230414145845.456145-3-thuth@redhat.com> Signed-off-by: Alex Bennée Message-Id: <20230424092249.58552-6-alex.bennee@linaro.org> (cherry picked from commit 8b869aa59109d238fd684e1ade204b6942202120) Signed-off-by: Michael Tokarev --- .gitlab-ci.d/buildtest.yml | 2 +- scripts/device-crash-test | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/.gitlab-ci.d/buildtest.yml b/.gitlab-ci.d/buildtest.yml index 38d95c8487..10886bb414 100644 --- a/.gitlab-ci.d/buildtest.yml +++ b/.gitlab-ci.d/buildtest.yml @@ -110,7 +110,7 @@ crash-test-debian: script: - cd build - make NINJA=":" check-venv - - tests/venv/bin/python3 scripts/device-crash-test -q ./qemu-system-i386 + - tests/venv/bin/python3 scripts/device-crash-test -q --tcg-only ./qemu-system-i386 build-system-fedora: extends: .native_build_job_template diff --git a/scripts/device-crash-test b/scripts/device-crash-test index 73bcb98693..b74d887331 100755 --- a/scripts/device-crash-test +++ b/scripts/device-crash-test @@ -397,7 +397,7 @@ def binariesToTest(args, testcase): def accelsToTest(args, testcase): - if getBinaryInfo(args, testcase['binary']).kvm_available: + if getBinaryInfo(args, testcase['binary']).kvm_available and not args.tcg_only: yield 'kvm' yield 'tcg' @@ -510,6 +510,8 @@ def main(): help="Full mode: test cases that are expected to fail") parser.add_argument('--strict', action='store_true', dest='strict', help="Treat all warnings as fatal") + parser.add_argument('--tcg-only', action='store_true', dest='tcg_only', + help="Only test with TCG accelerator") parser.add_argument('qemu', nargs='*', metavar='QEMU', help='QEMU binary to run') args = parser.parse_args() From 834fc12721b90c8542304a8be6463974562f8916 Mon Sep 17 00:00:00 2001 From: Bernhard Beschow Date: Sat, 4 Mar 2023 12:40:41 +0100 Subject: [PATCH 126/174] hw/ppc/prep: Fix wiring of PIC -> CPU interrupt Commit cef2e7148e32 ("hw/isa/i82378: Remove intermediate IRQ forwarder") passes s->cpu_intr to i8259_init() in i82378_realize() directly. However, s- >cpu_intr isn't initialized yet since that happens after the south bridge's pci_realize_and_unref() in board code. Fix this by initializing s->cpu_intr before realizing the south bridge. Fixes: cef2e7148e32 ("hw/isa/i82378: Remove intermediate IRQ forwarder") Signed-off-by: Bernhard Beschow Reviewed-by: Daniel Henrique Barboza Message-Id: <20230304114043.121024-4-shentey@gmail.com> Signed-off-by: Daniel Henrique Barboza (cherry picked from commit 2237af5e60ada06d90bf714e85523deafd936b9b) Signed-off-by: Michael Tokarev --- hw/ppc/prep.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/hw/ppc/prep.c b/hw/ppc/prep.c index fcbe4c5837..ec8d9584fb 100644 --- a/hw/ppc/prep.c +++ b/hw/ppc/prep.c @@ -271,9 +271,11 @@ static void ibm_40p_init(MachineState *machine) } /* PCI -> ISA bridge */ - i82378_dev = DEVICE(pci_create_simple(pci_bus, PCI_DEVFN(11, 0), "i82378")); + i82378_dev = DEVICE(pci_new(PCI_DEVFN(11, 0), "i82378")); qdev_connect_gpio_out(i82378_dev, 0, qdev_get_gpio_in(DEVICE(cpu), PPC6xx_INPUT_INT)); + qdev_realize_and_unref(i82378_dev, BUS(pci_bus), &error_fatal); + sysbus_connect_irq(pcihost, 0, qdev_get_gpio_in(i82378_dev, 15)); isa_bus = ISA_BUS(qdev_get_child_bus(i82378_dev, "isa.0")); From b201fb8c5aca78400d4f364632fb1e19827da942 Mon Sep 17 00:00:00 2001 From: Erico Nunes Date: Mon, 20 Feb 2023 18:56:05 +0100 Subject: [PATCH 127/174] ui/gtk: fix passing y0_top parameter to scanout MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The dmabuf->y0_top flag is passed to .dpy_gl_scanout_dmabuf(), however in the gtk ui both implementations dropped it when doing the next scanout_texture call. Fixes flipped linux console using vhost-user-gpu with the gtk ui display. Signed-off-by: Erico Nunes Reviewed-by: Marc-André Lureau Message-Id: <20230220175605.43759-1-ernunes@redhat.com> (cherry picked from commit 94400fa53f81c9f58ad88cf3f3e7ea89ec423d39) Signed-off-by: Michael Tokarev --- ui/gtk-egl.c | 2 +- ui/gtk-gl-area.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/ui/gtk-egl.c b/ui/gtk-egl.c index e84431790c..557668e418 100644 --- a/ui/gtk-egl.c +++ b/ui/gtk-egl.c @@ -256,7 +256,7 @@ void gd_egl_scanout_dmabuf(DisplayChangeListener *dcl, } gd_egl_scanout_texture(dcl, dmabuf->texture, - false, dmabuf->width, dmabuf->height, + dmabuf->y0_top, dmabuf->width, dmabuf->height, 0, 0, dmabuf->width, dmabuf->height); if (dmabuf->allow_fences) { diff --git a/ui/gtk-gl-area.c b/ui/gtk-gl-area.c index 7696df1f6b..c384a1516b 100644 --- a/ui/gtk-gl-area.c +++ b/ui/gtk-gl-area.c @@ -298,7 +298,7 @@ void gd_gl_area_scanout_dmabuf(DisplayChangeListener *dcl, } gd_gl_area_scanout_texture(dcl, dmabuf->texture, - false, dmabuf->width, dmabuf->height, + dmabuf->y0_top, dmabuf->width, dmabuf->height, 0, 0, dmabuf->width, dmabuf->height); if (dmabuf->allow_fences) { From 95c9059e66526bc0f728c45516cb0366ecaeefc7 Mon Sep 17 00:00:00 2001 From: Erico Nunes Date: Mon, 20 Mar 2023 17:08:55 +0100 Subject: [PATCH 128/174] ui/gtk: use widget size for cursor motion event MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The gd_motion_event size has some calculations for the cursor position, which also take into account things like different size of the framebuffer compared to the window size. The use of window size makes things more difficult though, as at least in the case of Wayland includes the size of ui elements like a menu bar at the top of the window. This leads to a wrong position calculation by a few pixels. Fix it by using the size of the widget, which already returns the size of the actual space to render the framebuffer. Signed-off-by: Erico Nunes Reviewed-by: Marc-André Lureau Acked-by: Vivek Kasireddy Message-Id: <20230320160856.364319-1-ernunes@redhat.com> (cherry picked from commit 2f31663ed4b5631b5e1c79f5cdd6463e55410eb8) Signed-off-by: Michael Tokarev --- ui/gtk.c | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/ui/gtk.c b/ui/gtk.c index dfaf6d33c3..e681e8c319 100644 --- a/ui/gtk.c +++ b/ui/gtk.c @@ -868,7 +868,6 @@ static gboolean gd_motion_event(GtkWidget *widget, GdkEventMotion *motion, { VirtualConsole *vc = opaque; GtkDisplayState *s = vc->s; - GdkWindow *window; int x, y; int mx, my; int fbh, fbw; @@ -881,10 +880,9 @@ static gboolean gd_motion_event(GtkWidget *widget, GdkEventMotion *motion, fbw = surface_width(vc->gfx.ds) * vc->gfx.scale_x; fbh = surface_height(vc->gfx.ds) * vc->gfx.scale_y; - window = gtk_widget_get_window(vc->gfx.drawing_area); - ww = gdk_window_get_width(window); - wh = gdk_window_get_height(window); - ws = gdk_window_get_scale_factor(window); + ww = gtk_widget_get_allocated_width(widget); + wh = gtk_widget_get_allocated_height(widget); + ws = gtk_widget_get_scale_factor(widget); mx = my = 0; if (ww > fbw) { From b15e44adebc21d968c7f7f57b55636ee04150ad5 Mon Sep 17 00:00:00 2001 From: Erico Nunes Date: Mon, 20 Mar 2023 17:08:56 +0100 Subject: [PATCH 129/174] ui/gtk-egl: fix scaling for cursor position in scanout mode MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit vc->gfx.w and vc->gfx.h are not updated appropriately in this code path, which leads to a different scaling factor for rendering the cursor on some edge cases (e.g. the focus has left and re-entered the gtk window). This can be reproduced using vhost-user-gpu with the gtk ui on the x11 backend. Use the surface dimensions which are already updated accordingly. Signed-off-by: Erico Nunes Acked-by: Marc-André Lureau Message-Id: <20230320160856.364319-2-ernunes@redhat.com> (cherry picked from commit f8a951bb951140a585341c700ebeec58d83f7bbc) Signed-off-by: Michael Tokarev --- ui/gtk-egl.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ui/gtk-egl.c b/ui/gtk-egl.c index 557668e418..19130041bc 100644 --- a/ui/gtk-egl.c +++ b/ui/gtk-egl.c @@ -88,8 +88,8 @@ void gd_egl_draw(VirtualConsole *vc) #endif gd_egl_scanout_flush(&vc->gfx.dcl, 0, 0, vc->gfx.w, vc->gfx.h); - vc->gfx.scale_x = (double)ww / vc->gfx.w; - vc->gfx.scale_y = (double)wh / vc->gfx.h; + vc->gfx.scale_x = (double)ww / surface_width(vc->gfx.ds); + vc->gfx.scale_y = (double)wh / surface_height(vc->gfx.ds); glFlush(); #ifdef CONFIG_GBM From d4d91ae902199d991572c4cf3f4ede28e82cc0fd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= Date: Thu, 11 May 2023 11:42:17 +0400 Subject: [PATCH 130/174] ui/sdl2: fix surface_gl_update_texture: Assertion 'gls' failed MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Before sdl2_gl_update() is called, sdl2_gl_switch() may decide to destroy the console window and its associated shaders. Resolves: https://gitlab.com/qemu-project/qemu/-/issues/1644 Fixes: c84ab0a500a8 ("ui/console: optionally update after gfx switch") Signed-off-by: Marc-André Lureau Tested-by: Bin Meng Message-Id: <20230511074217.4171842-1-marcandre.lureau@redhat.com> (cherry picked from commit b3a654d82ecf276b59a67b2fd688e11a0d8a0064) Signed-off-by: Michael Tokarev --- ui/sdl2-gl.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/ui/sdl2-gl.c b/ui/sdl2-gl.c index 39cab8cde7..bbfa70eac3 100644 --- a/ui/sdl2-gl.c +++ b/ui/sdl2-gl.c @@ -67,6 +67,10 @@ void sdl2_gl_update(DisplayChangeListener *dcl, assert(scon->opengl); + if (!scon->real_window) { + return; + } + SDL_GL_MakeCurrent(scon->real_window, scon->winctx); surface_gl_update_texture(scon->gls, scon->surface, x, y, w, h); scon->updates++; From 6520bf66f4998b027c9d8f9dfb1ee34a958ade42 Mon Sep 17 00:00:00 2001 From: Bernhard Beschow Date: Mon, 17 Apr 2023 21:21:38 +0200 Subject: [PATCH 131/174] ui/sdl2: Grab Alt+Tab also in fullscreen mode MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit By default, SDL grabs Alt+Tab only in non-fullscreen mode. This causes Alt+Tab to switch tasks on the host rather than in the VM in fullscreen mode while it switches tasks in non-fullscreen mode in the VM. Fix this confusing behavior by grabbing Alt+Tab in fullscreen mode, always causing tasks to be switched in the VM. Signed-off-by: Bernhard Beschow Reviewed-by: Volker Rümelin Message-Id: <20230417192139.43263-2-shentey@gmail.com> (cherry picked from commit efc00a37090eced53bff8b42d26991252aaacc44) Signed-off-by: Michael Tokarev --- ui/sdl2.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/ui/sdl2.c b/ui/sdl2.c index 8cb77416af..34b3f45c49 100644 --- a/ui/sdl2.c +++ b/ui/sdl2.c @@ -850,6 +850,9 @@ static void sdl2_display_init(DisplayState *ds, DisplayOptions *o) SDL_SetHint(SDL_HINT_VIDEO_X11_NET_WM_BYPASS_COMPOSITOR, "0"); #endif SDL_SetHint(SDL_HINT_GRAB_KEYBOARD, "1"); +#ifdef SDL_HINT_ALLOW_ALT_TAB_WHILE_GRABBED + SDL_SetHint(SDL_HINT_ALLOW_ALT_TAB_WHILE_GRABBED, "0"); +#endif memset(&info, 0, sizeof(info)); SDL_VERSION(&info.version); From 70237e21590005e11b1e4508491eb42f7dee5aa8 Mon Sep 17 00:00:00 2001 From: Bernhard Beschow Date: Mon, 17 Apr 2023 21:21:39 +0200 Subject: [PATCH 132/174] ui/sdl2: Grab Alt+F4 also under Windows MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit SDL doesn't grab Alt+F4 under Windows by default. Pressing Alt+F4 thus closes the VM immediately without confirmation, possibly leading to data loss. Fix this by always grabbing Alt+F4 on Windows hosts, too. Signed-off-by: Bernhard Beschow Reviewed-by: Volker Rümelin Message-Id: <20230417192139.43263-3-shentey@gmail.com> (cherry picked from commit 083db9db44c89d7ea7f81844302194d708bcff2b) Signed-off-by: Michael Tokarev --- ui/sdl2.c | 1 + 1 file changed, 1 insertion(+) diff --git a/ui/sdl2.c b/ui/sdl2.c index 34b3f45c49..b483a51fb7 100644 --- a/ui/sdl2.c +++ b/ui/sdl2.c @@ -853,6 +853,7 @@ static void sdl2_display_init(DisplayState *ds, DisplayOptions *o) #ifdef SDL_HINT_ALLOW_ALT_TAB_WHILE_GRABBED SDL_SetHint(SDL_HINT_ALLOW_ALT_TAB_WHILE_GRABBED, "0"); #endif + SDL_SetHint(SDL_HINT_WINDOWS_NO_CLOSE_ON_ALT_F4, "1"); memset(&info, 0, sizeof(info)); SDL_VERSION(&info.version); From 22048b1bff428ceb131754b85da0603c29b3b130 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Volker=20R=C3=BCmelin?= Date: Tue, 18 Apr 2023 08:28:23 +0200 Subject: [PATCH 133/174] ui/sdl2: disable SDL_HINT_GRAB_KEYBOARD on Windows MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Windows sends an extra left control key up/down input event for every right alt key up/down input event for keyboards with international layout. Since commit 830473455f ("ui/sdl2: fix handling of AltGr key on Windows") QEMU uses a Windows low level keyboard hook procedure to reliably filter out the special left control key and to grab the keyboard on Windows. The SDL2 version 2.0.16 introduced its own Windows low level keyboard hook procedure to grab the keyboard. Windows calls this callback before the QEMU keyboard hook procedure. This disables the special left control key filter when the keyboard is grabbed. To fix the problem, disable the SDL2 Windows low level keyboard hook procedure. Reported-by: Bernhard Beschow Signed-off-by: Volker Rümelin Reviewed-by: Thomas Huth Tested-by: Bernhard Beschow Message-Id: <20230418062823.5683-1-vr_qemu@t-online.de> (cherry picked from commit 1dfea3f212e43bfd59d1e1f40b9776db440b211f) Signed-off-by: Michael Tokarev --- ui/sdl2.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/ui/sdl2.c b/ui/sdl2.c index b483a51fb7..d630459b78 100644 --- a/ui/sdl2.c +++ b/ui/sdl2.c @@ -849,7 +849,10 @@ static void sdl2_display_init(DisplayState *ds, DisplayOptions *o) #ifdef SDL_HINT_VIDEO_X11_NET_WM_BYPASS_COMPOSITOR /* only available since SDL 2.0.8 */ SDL_SetHint(SDL_HINT_VIDEO_X11_NET_WM_BYPASS_COMPOSITOR, "0"); #endif +#ifndef CONFIG_WIN32 + /* QEMU uses its own low level keyboard hook procecure on Windows */ SDL_SetHint(SDL_HINT_GRAB_KEYBOARD, "1"); +#endif #ifdef SDL_HINT_ALLOW_ALT_TAB_WHILE_GRABBED SDL_SetHint(SDL_HINT_ALLOW_ALT_TAB_WHILE_GRABBED, "0"); #endif From fee86f6c5ba0096b89463270c0231b6dcc03611a Mon Sep 17 00:00:00 2001 From: Tommy Wu Date: Thu, 25 May 2023 10:37:51 +0100 Subject: [PATCH 134/174] hw/dma/xilinx_axidma: Check DMASR.HALTED to prevent infinite loop. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit When we receive a packet from the xilinx_axienet and then try to s2mem through the xilinx_axidma, if the descriptor ring buffer is full in the xilinx axidma driver, we’ll assert the DMASR.HALTED in the function : stream_process_s2mem and return 0. In the end, we’ll be stuck in an infinite loop in axienet_eth_rx_notify. This patch checks the DMASR.HALTED state when we try to push data from xilinx axi-enet to xilinx axi-dma. When the DMASR.HALTED is asserted, we will not keep pushing the data and then prevent the infinte loop. Signed-off-by: Tommy Wu Reviewed-by: Edgar E. Iglesias Reviewed-by: Frank Chang Message-id: 20230519062137.1251741-1-tommy.wu@sifive.com Signed-off-by: Peter Maydell (cherry picked from commit 31afe04586efeccb80cc36ffafcd0e32a3245ffb) Signed-off-by: Michael Tokarev --- hw/dma/xilinx_axidma.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/hw/dma/xilinx_axidma.c b/hw/dma/xilinx_axidma.c index cbb8f0f169..99e50f65e2 100644 --- a/hw/dma/xilinx_axidma.c +++ b/hw/dma/xilinx_axidma.c @@ -168,6 +168,11 @@ static inline int stream_idle(struct Stream *s) return !!(s->regs[R_DMASR] & DMASR_IDLE); } +static inline int stream_halted(struct Stream *s) +{ + return !!(s->regs[R_DMASR] & DMASR_HALTED); +} + static void stream_reset(struct Stream *s) { s->regs[R_DMASR] = DMASR_HALTED; /* starts up halted. */ @@ -269,7 +274,7 @@ static void stream_process_mem2s(struct Stream *s, StreamSink *tx_data_dev, uint64_t addr; bool eop; - if (!stream_running(s) || stream_idle(s)) { + if (!stream_running(s) || stream_idle(s) || stream_halted(s)) { return; } @@ -326,7 +331,7 @@ static size_t stream_process_s2mem(struct Stream *s, unsigned char *buf, unsigned int rxlen; size_t pos = 0; - if (!stream_running(s) || stream_idle(s)) { + if (!stream_running(s) || stream_idle(s) || stream_halted(s)) { return 0; } @@ -407,7 +412,7 @@ xilinx_axidma_data_stream_can_push(StreamSink *obj, XilinxAXIDMAStreamSink *ds = XILINX_AXI_DMA_DATA_STREAM(obj); struct Stream *s = &ds->dma->streams[1]; - if (!stream_running(s) || stream_idle(s)) { + if (!stream_running(s) || stream_idle(s) || stream_halted(s)) { ds->dma->notify = notify; ds->dma->notify_opaque = notify_opaque; return false; From f82dcd73e85b586bcfe31d99d4bdc8d33727f2ef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Chigot?= Date: Wed, 24 May 2023 16:37:14 +0200 Subject: [PATCH 135/174] hw/arm/xlnx-zynqmp: fix unsigned error when checking the RPUs number MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit When passing --smp with a number lower than XLNX_ZYNQMP_NUM_APU_CPUS, the expression (ms->smp.cpus - XLNX_ZYNQMP_NUM_APU_CPUS) will result in a positive number as ms->smp.cpus is a unsigned int. This will raise the following error afterwards, as Qemu will try to instantiate some additional RPUs. | $ qemu-system-aarch64 --smp 1 -M xlnx-zcu102 | ** | ERROR:../src/tcg/tcg.c:777:tcg_register_thread: | assertion failed: (n < tcg_max_ctxs) Signed-off-by: Clément Chigot Reviewed-by: Francisco Iglesias Tested-by: Francisco Iglesias Message-id: 20230524143714.565792-1-chigot@adacore.com Signed-off-by: Peter Maydell (cherry picked from commit c9ba1c9f02cfede5329f504cdda6fd3a256e0434) Signed-off-by: Michael Tokarev --- hw/arm/xlnx-zynqmp.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hw/arm/xlnx-zynqmp.c b/hw/arm/xlnx-zynqmp.c index 335cfc417d..5905a33015 100644 --- a/hw/arm/xlnx-zynqmp.c +++ b/hw/arm/xlnx-zynqmp.c @@ -213,7 +213,7 @@ static void xlnx_zynqmp_create_rpu(MachineState *ms, XlnxZynqMPState *s, const char *boot_cpu, Error **errp) { int i; - int num_rpus = MIN(ms->smp.cpus - XLNX_ZYNQMP_NUM_APU_CPUS, + int num_rpus = MIN((int)(ms->smp.cpus - XLNX_ZYNQMP_NUM_APU_CPUS), XLNX_ZYNQMP_NUM_RPU_CPUS); if (num_rpus <= 0) { From 7cba3a05b57e7e62b03e57c88a8416fd84635d16 Mon Sep 17 00:00:00 2001 From: Peter Maydell Date: Tue, 23 May 2023 14:17:26 +0100 Subject: [PATCH 136/174] target/arm: Explicitly select short-format FSR for M-profile For M-profile, there is no guest-facing A-profile format FSR, but we still use the env->exception.fsr field to pass fault information from the point where a fault is raised to the code in arm_v7m_cpu_do_interrupt() which interprets it and sets the M-profile specific fault status registers. So it doesn't matter whether we fill in env->exception.fsr in the short format or the LPAE format, as long as both sides agree. As it happens arm_v7m_cpu_do_interrupt() assumes short-form. In compute_fsr_fsc() we weren't explicitly choosing short-form for M-profile, but instead relied on it falling out in the wash because arm_s1_regime_using_lpae_format() would be false. This was broken in commit 452c67a4 when we added v8R support, because we said "PMSAv8 is always LPAE format" (as it is for v8R), forgetting that we were implicitly using this code path on M-profile. At that point we would hit a g_assert_not_reached(): ERROR:../../target/arm/internals.h:549:arm_fi_to_lfsc: code should not be reached #7 0x0000555555e055f7 in arm_fi_to_lfsc (fi=0x7fffecff9a90) at ../../target/arm/internals.h:549 #8 0x0000555555e05a27 in compute_fsr_fsc (env=0x555557356670, fi=0x7fffecff9a90, target_el=1, mmu_idx=1, ret_fsc=0x7fffecff9a1c) at ../../target/arm/tlb_helper.c:95 #9 0x0000555555e05b62 in arm_deliver_fault (cpu=0x555557354800, addr=268961344, access_type=MMU_INST_FETCH, mmu_idx=1, fi=0x7fffecff9a90) at ../../target/arm/tlb_helper.c:132 #10 0x0000555555e06095 in arm_cpu_tlb_fill (cs=0x555557354800, address=268961344, size=1, access_type=MMU_INST_FETCH, mmu_idx=1, probe=false, retaddr=0) at ../../target/arm/tlb_helper.c:260 The specific assertion changed when commit fcc7404eff24b4c added "assert not M-profile" to arm_is_secure_below_el3(), because the conditions being checked in compute_fsr_fsc() include arm_el_is_aa64(), which will end up calling arm_is_secure_below_el3() and asserting before we try to call arm_fi_to_lfsc(): #7 0x0000555555efaf43 in arm_is_secure_below_el3 (env=0x5555574665a0) at ../../target/arm/cpu.h:2396 #8 0x0000555555efb103 in arm_is_el2_enabled (env=0x5555574665a0) at ../../target/arm/cpu.h:2448 #9 0x0000555555efb204 in arm_el_is_aa64 (env=0x5555574665a0, el=1) at ../../target/arm/cpu.h:2509 #10 0x0000555555efbdfd in compute_fsr_fsc (env=0x5555574665a0, fi=0x7fffecff99e0, target_el=1, mmu_idx=1, ret_fsc=0x7fffecff996c) Avoid the assertion and the incorrect FSR format selection by explicitly making M-profile use the short-format in this function. Fixes: 452c67a42704 ("target/arm: Enable TTBCR_EAE for ARMv8-R AArch32")a Resolves: https://gitlab.com/qemu-project/qemu/-/issues/1658 Cc: qemu-stable@nongnu.org Signed-off-by: Peter Maydell Reviewed-by: Richard Henderson Message-id: 20230523131726.866635-1-peter.maydell@linaro.org (cherry picked from commit d7fe699be54b2cbb8e4ee37b63588b3458a49da7) Signed-off-by: Michael Tokarev --- target/arm/tlb_helper.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/target/arm/tlb_helper.c b/target/arm/tlb_helper.c index 0f4f4fc809..1384fe6f98 100644 --- a/target/arm/tlb_helper.c +++ b/target/arm/tlb_helper.c @@ -82,8 +82,17 @@ static uint32_t compute_fsr_fsc(CPUARMState *env, ARMMMUFaultInfo *fi, ARMMMUIdx arm_mmu_idx = core_to_arm_mmu_idx(env, mmu_idx); uint32_t fsr, fsc; - if (target_el == 2 || arm_el_is_aa64(env, target_el) || - arm_s1_regime_using_lpae_format(env, arm_mmu_idx)) { + /* + * For M-profile there is no guest-facing FSR. We compute a + * short-form value for env->exception.fsr which we will then + * examine in arm_v7m_cpu_do_interrupt(). In theory we could + * use the LPAE format instead as long as both bits of code agree + * (and arm_fi_to_lfsc() handled the M-profile specific + * ARMFault_QEMU_NSCExec and ARMFault_QEMU_SFault cases). + */ + if (!arm_feature(env, ARM_FEATURE_M) && + (target_el == 2 || arm_el_is_aa64(env, target_el) || + arm_s1_regime_using_lpae_format(env, arm_mmu_idx))) { /* * LPAE format fault status register : bottom 6 bits are * status code in the same form as needed for syndrome From 347714a28cc5316aab31e2a0f3758ec870cea86f Mon Sep 17 00:00:00 2001 From: Ilya Leoshkevich Date: Fri, 26 May 2023 20:12:37 +0200 Subject: [PATCH 137/174] target/s390x: Fix LCBB overwriting the top 32 bits LCBB is supposed to overwrite only the bottom 32 bits, but QEMU erroneously overwrites the entire register. Fixes: 6d9303322ed9 ("s390x/tcg: Implement LOAD COUNT TO BLOCK BOUNDARY") Cc: qemu-stable@nongnu.org Signed-off-by: Ilya Leoshkevich Message-Id: <20230526181240.1425579-2-iii@linux.ibm.com> Reviewed-by: Richard Henderson Reviewed-by: David Hildenbrand Signed-off-by: Thomas Huth (cherry picked from commit 079181b9bc60389e106009a1530d3cc42256f567) Signed-off-by: Michael Tokarev --- target/s390x/tcg/insn-data.h.inc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/target/s390x/tcg/insn-data.h.inc b/target/s390x/tcg/insn-data.h.inc index 13ffdda4da..9f0d6380be 100644 --- a/target/s390x/tcg/insn-data.h.inc +++ b/target/s390x/tcg/insn-data.h.inc @@ -486,7 +486,7 @@ F(0xb343, LCXBR, RRE, Z, x2h, x2l, new_P, x1, negf128, f128, IF_BFP) F(0xb373, LCDFR, RRE, FPSSH, 0, f2, new, f1, negf64, 0, IF_AFP1 | IF_AFP2) /* LOAD COUNT TO BLOCK BOUNDARY */ - C(0xe727, LCBB, RXE, V, la2, 0, r1, 0, lcbb, 0) + C(0xe727, LCBB, RXE, V, la2, 0, new, r1_32, lcbb, 0) /* LOAD HALFWORD */ C(0xb927, LHR, RRE, EI, 0, r2_16s, 0, r1_32, mov2, 0) C(0xb907, LGHR, RRE, EI, 0, r2_16s, 0, r1, mov2, 0) From 242efaca9e12d2dbc4dbfae6a0718e978dfa15b1 Mon Sep 17 00:00:00 2001 From: Ilya Leoshkevich Date: Fri, 26 May 2023 20:12:38 +0200 Subject: [PATCH 138/174] tests/tcg/s390x: Test LCBB Add a test to prevent regressions. Cc: qemu-stable@nongnu.org Signed-off-by: Ilya Leoshkevich Message-Id: <20230526181240.1425579-3-iii@linux.ibm.com> Reviewed-by: David Hildenbrand Acked-by: Richard Henderson Signed-off-by: Thomas Huth (cherry picked from commit 05d000fb4dcac4bc02ffa08fcf14b51683b878f6) Signed-off-by: Michael Tokarev --- tests/tcg/s390x/Makefile.target | 1 + tests/tcg/s390x/lcbb.c | 51 +++++++++++++++++++++++++++++++++ 2 files changed, 52 insertions(+) create mode 100644 tests/tcg/s390x/lcbb.c diff --git a/tests/tcg/s390x/Makefile.target b/tests/tcg/s390x/Makefile.target index 07fcc6d0ce..24576fda22 100644 --- a/tests/tcg/s390x/Makefile.target +++ b/tests/tcg/s390x/Makefile.target @@ -26,6 +26,7 @@ TESTS+=branch-relative-long TESTS+=noexec Z13_TESTS=vistr +Z13_TESTS+=lcbb $(Z13_TESTS): CFLAGS+=-march=z13 -O2 TESTS+=$(Z13_TESTS) diff --git a/tests/tcg/s390x/lcbb.c b/tests/tcg/s390x/lcbb.c new file mode 100644 index 0000000000..8d368e0998 --- /dev/null +++ b/tests/tcg/s390x/lcbb.c @@ -0,0 +1,51 @@ +/* + * Test the LCBB instruction. + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ +#include +#include + +static inline __attribute__((__always_inline__)) void +lcbb(long *r1, void *dxb2, int m3, int *cc) +{ + asm("lcbb %[r1],%[dxb2],%[m3]\n" + "ipm %[cc]" + : [r1] "+r" (*r1), [cc] "=r" (*cc) + : [dxb2] "R" (*(char *)dxb2), [m3] "i" (m3) + : "cc"); + *cc = (*cc >> 28) & 3; +} + +static char buf[0x1000] __attribute__((aligned(0x1000))); + +static inline __attribute__((__always_inline__)) void +test_lcbb(void *p, int m3, int exp_r1, int exp_cc) +{ + long r1 = 0xfedcba9876543210; + int cc; + + lcbb(&r1, p, m3, &cc); + assert(r1 == (0xfedcba9800000000 | exp_r1)); + assert(cc == exp_cc); +} + +int main(void) +{ + test_lcbb(&buf[0], 0, 16, 0); + test_lcbb(&buf[63], 0, 1, 3); + test_lcbb(&buf[0], 1, 16, 0); + test_lcbb(&buf[127], 1, 1, 3); + test_lcbb(&buf[0], 2, 16, 0); + test_lcbb(&buf[255], 2, 1, 3); + test_lcbb(&buf[0], 3, 16, 0); + test_lcbb(&buf[511], 3, 1, 3); + test_lcbb(&buf[0], 4, 16, 0); + test_lcbb(&buf[1023], 4, 1, 3); + test_lcbb(&buf[0], 5, 16, 0); + test_lcbb(&buf[2047], 5, 1, 3); + test_lcbb(&buf[0], 6, 16, 0); + test_lcbb(&buf[4095], 6, 1, 3); + + return EXIT_SUCCESS; +} From cc271aa410e6179fb2a4db2f3e1e01dc69b8f7c8 Mon Sep 17 00:00:00 2001 From: Ilya Leoshkevich Date: Fri, 26 May 2023 20:12:39 +0200 Subject: [PATCH 139/174] target/s390x: Fix LOCFHR taking the wrong half of R2 LOCFHR should write top-to-top, but QEMU erroneously writes bottom-to-top. Fixes: 45aa9aa3b773 ("target/s390x: Implement load-on-condition-2 insns") Cc: qemu-stable@nongnu.org Reported-by: Mikhail Mitskevich Closes: https://gitlab.com/qemu-project/qemu/-/issues/1668 Signed-off-by: Ilya Leoshkevich Message-Id: <20230526181240.1425579-4-iii@linux.ibm.com> Reviewed-by: Richard Henderson Reviewed-by: David Hildenbrand Signed-off-by: Thomas Huth (cherry picked from commit 3180b173621021c365c256cedf2f5845bd4780d0) Signed-off-by: Michael Tokarev --- target/s390x/tcg/insn-data.h.inc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/target/s390x/tcg/insn-data.h.inc b/target/s390x/tcg/insn-data.h.inc index 9f0d6380be..4249632af3 100644 --- a/target/s390x/tcg/insn-data.h.inc +++ b/target/s390x/tcg/insn-data.h.inc @@ -564,7 +564,7 @@ C(0xec46, LOCGHI, RIE_g, LOC2, r1, i2, r1, 0, loc, 0) C(0xec4e, LOCHHI, RIE_g, LOC2, r1_sr32, i2, new, r1_32h, loc, 0) /* LOAD HIGH ON CONDITION */ - C(0xb9e0, LOCFHR, RRF_c, LOC2, r1_sr32, r2, new, r1_32h, loc, 0) + C(0xb9e0, LOCFHR, RRF_c, LOC2, r1_sr32, r2_sr32, new, r1_32h, loc, 0) C(0xebe0, LOCFH, RSY_b, LOC2, r1_sr32, m2_32u, new, r1_32h, loc, 0) /* LOAD PAIR DISJOINT */ D(0xc804, LPD, SSF, ILA, 0, 0, new_P, r3_P32, lpd, 0, MO_TEUL) From 82fc148344d0862cfdf5364068d6123a2b777de2 Mon Sep 17 00:00:00 2001 From: Ilya Leoshkevich Date: Fri, 26 May 2023 20:12:40 +0200 Subject: [PATCH 140/174] tests/tcg/s390x: Test LOCFHR Add a small test to prevent regressions. Cc: qemu-stable@nongnu.org Signed-off-by: Ilya Leoshkevich Message-Id: <20230526181240.1425579-5-iii@linux.ibm.com> Reviewed-by: Richard Henderson Reviewed-by: David Hildenbrand Signed-off-by: Thomas Huth (cherry picked from commit 230976232f4fcdc205d6ec53ec9f3804b28dc1e7) Signed-off-by: Michael Tokarev --- tests/tcg/s390x/Makefile.target | 1 + tests/tcg/s390x/locfhr.c | 29 +++++++++++++++++++++++++++++ 2 files changed, 30 insertions(+) create mode 100644 tests/tcg/s390x/locfhr.c diff --git a/tests/tcg/s390x/Makefile.target b/tests/tcg/s390x/Makefile.target index 24576fda22..514ecce87d 100644 --- a/tests/tcg/s390x/Makefile.target +++ b/tests/tcg/s390x/Makefile.target @@ -27,6 +27,7 @@ TESTS+=noexec Z13_TESTS=vistr Z13_TESTS+=lcbb +Z13_TESTS+=locfhr $(Z13_TESTS): CFLAGS+=-march=z13 -O2 TESTS+=$(Z13_TESTS) diff --git a/tests/tcg/s390x/locfhr.c b/tests/tcg/s390x/locfhr.c new file mode 100644 index 0000000000..ab9ff6e449 --- /dev/null +++ b/tests/tcg/s390x/locfhr.c @@ -0,0 +1,29 @@ +/* + * Test the LOCFHR instruction. + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ +#include +#include + +static inline __attribute__((__always_inline__)) long +locfhr(long r1, long r2, int m3, int cc) +{ + cc <<= 28; + asm("spm %[cc]\n" + "locfhr %[r1],%[r2],%[m3]\n" + : [r1] "+r" (r1) + : [cc] "r" (cc), [r2] "r" (r2), [m3] "i" (m3) + : "cc"); + return r1; +} + +int main(void) +{ + assert(locfhr(0x1111111122222222, 0x3333333344444444, 8, 0) == + 0x3333333322222222); + assert(locfhr(0x5555555566666666, 0x7777777788888888, 11, 1) == + 0x5555555566666666); + + return EXIT_SUCCESS; +} From 5502e5ca3372a1515ba7ba2aceb855b2344e1762 Mon Sep 17 00:00:00 2001 From: Ilya Leoshkevich Date: Thu, 11 May 2023 01:02:12 +0200 Subject: [PATCH 141/174] linux-user/s390x: Fix single-stepping SVC Currently single-stepping SVC executes two instructions. The reason is that EXCP_DEBUG for the SVC instruction itself is masked by EXCP_SVC. Fix by re-raising EXCP_DEBUG. Signed-off-by: Ilya Leoshkevich Message-Id: <20230510230213.330134-2-iii@linux.ibm.com> Signed-off-by: Thomas Huth (cherry picked from commit 01b9990a3fb84bb9a14017255ab1a4fa86588215) Signed-off-by: Michael Tokarev --- linux-user/s390x/cpu_loop.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/linux-user/s390x/cpu_loop.c b/linux-user/s390x/cpu_loop.c index 285bc60071..8b7ac2879e 100644 --- a/linux-user/s390x/cpu_loop.c +++ b/linux-user/s390x/cpu_loop.c @@ -86,6 +86,15 @@ void cpu_loop(CPUS390XState *env) } else if (ret != -QEMU_ESIGRETURN) { env->regs[2] = ret; } + + if (unlikely(cs->singlestep_enabled)) { + /* + * cpu_tb_exec() did not raise EXCP_DEBUG, because it has seen + * that EXCP_SVC was already pending. + */ + cs->exception_index = EXCP_DEBUG; + } + break; case EXCP_DEBUG: From c06ca3aa33b039c09166334ebc417a89bf2ecfec Mon Sep 17 00:00:00 2001 From: Ilya Leoshkevich Date: Thu, 11 May 2023 01:02:13 +0200 Subject: [PATCH 142/174] tests/tcg/s390x: Test single-stepping SVC MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add a small test to prevent regressions. Signed-off-by: Ilya Leoshkevich Acked-by: Alex Bennée Message-Id: <20230510230213.330134-3-iii@linux.ibm.com> Signed-off-by: Thomas Huth (cherry picked from commit be4a4cb429617a8b6893733b37b6203e4b7bf35b) Signed-off-by: Michael Tokarev --- tests/tcg/s390x/Makefile.target | 11 ++++- tests/tcg/s390x/gdbstub/test-svc.py | 64 +++++++++++++++++++++++++++++ tests/tcg/s390x/hello-s390x-asm.S | 20 +++++++++ 3 files changed, 94 insertions(+), 1 deletion(-) create mode 100644 tests/tcg/s390x/gdbstub/test-svc.py create mode 100644 tests/tcg/s390x/hello-s390x-asm.S diff --git a/tests/tcg/s390x/Makefile.target b/tests/tcg/s390x/Makefile.target index 514ecce87d..cb90d4183d 100644 --- a/tests/tcg/s390x/Makefile.target +++ b/tests/tcg/s390x/Makefile.target @@ -56,7 +56,16 @@ run-gdbstub-signals-s390x: signals-s390x --bin $< --test $(S390X_SRC)/gdbstub/test-signals-s390x.py, \ mixing signals and debugging) -EXTRA_RUNS += run-gdbstub-signals-s390x +hello-s390x-asm: CFLAGS+=-nostdlib + +run-gdbstub-svc: hello-s390x-asm + $(call run-test, $@, $(GDB_SCRIPT) \ + --gdb $(HAVE_GDB_BIN) \ + --qemu $(QEMU) --qargs "$(QEMU_OPTS)" \ + --bin $< --test $(S390X_SRC)/gdbstub/test-svc.py, \ + single-stepping svc) + +EXTRA_RUNS += run-gdbstub-signals-s390x run-gdbstub-svc endif # MVX versions of sha512 diff --git a/tests/tcg/s390x/gdbstub/test-svc.py b/tests/tcg/s390x/gdbstub/test-svc.py new file mode 100644 index 0000000000..7851ca7284 --- /dev/null +++ b/tests/tcg/s390x/gdbstub/test-svc.py @@ -0,0 +1,64 @@ +"""Test single-stepping SVC. + +This runs as a sourced script (via -x, via run-test.py).""" +from __future__ import print_function +import gdb +import sys + + +n_failures = 0 + + +def report(cond, msg): + """Report success/fail of a test""" + if cond: + print("PASS: {}".format(msg)) + else: + print("FAIL: {}".format(msg)) + global n_failures + n_failures += 1 + + +def run_test(): + """Run through the tests one by one""" + report("lghi\t" in gdb.execute("x/i $pc", False, True), "insn #1") + gdb.execute("si") + report("larl\t" in gdb.execute("x/i $pc", False, True), "insn #2") + gdb.execute("si") + report("lghi\t" in gdb.execute("x/i $pc", False, True), "insn #3") + gdb.execute("si") + report("svc\t" in gdb.execute("x/i $pc", False, True), "insn #4") + gdb.execute("si") + report("xgr\t" in gdb.execute("x/i $pc", False, True), "insn #5") + gdb.execute("si") + report("svc\t" in gdb.execute("x/i $pc", False, True), "insn #6") + gdb.execute("si") + + +def main(): + """Prepare the environment and run through the tests""" + try: + inferior = gdb.selected_inferior() + print("ATTACHED: {}".format(inferior.architecture().name())) + except (gdb.error, AttributeError): + print("SKIPPING (not connected)") + exit(0) + + if gdb.parse_and_eval('$pc') == 0: + print("SKIP: PC not set") + exit(0) + + try: + # These are not very useful in scripts + gdb.execute("set pagination off") + gdb.execute("set confirm off") + + # Run the actual tests + run_test() + except gdb.error: + report(False, "GDB Exception: {}".format(sys.exc_info()[0])) + print("All tests complete: %d failures" % n_failures) + exit(n_failures) + + +main() diff --git a/tests/tcg/s390x/hello-s390x-asm.S b/tests/tcg/s390x/hello-s390x-asm.S new file mode 100644 index 0000000000..2e9faa1604 --- /dev/null +++ b/tests/tcg/s390x/hello-s390x-asm.S @@ -0,0 +1,20 @@ +/* + * Hello, World! in assembly. + */ + +.globl _start +_start: + +/* puts("Hello, World!"); */ +lghi %r2,1 +larl %r3,foo +lghi %r4,foo_end-foo +svc 4 + +/* exit(0); */ +xgr %r2,%r2 +svc 1 + +.align 2 +foo: .asciz "Hello, World!\n" +foo_end: From 03727054dce3131529ca5668ffd653470000064d Mon Sep 17 00:00:00 2001 From: Ilya Leoshkevich Date: Mon, 5 Jun 2023 13:39:47 +0200 Subject: [PATCH 143/174] s390x/tcg: Fix CPU address returned by STIDP In qemu-user-s390x, /proc/cpuinfo contains: processor 0: version = 00, identification = 000000, machine = 8561 processor 1: version = 00, identification = 400000, machine = 8561 The highest nibble is supposed to contain the CPU address, but it's off by 2 bits. Fix the shift value and provide a symbolic constant for it. With the fix we get: processor 0: version = 00, identification = 000000, machine = 8561 processor 1: version = 00, identification = 100000, machine = 8561 Fixes: 076d4d39b65f ("s390x/cpumodel: wire up cpu type + id for TCG") Reviewed-by: David Hildenbrand Signed-off-by: Ilya Leoshkevich Message-Id: <20230605113950.1169228-2-iii@linux.ibm.com> Signed-off-by: Thomas Huth (cherry picked from commit 71b11cbe1c34411238703abe24bfaf2e9712c30d) Signed-off-by: Michael Tokarev --- target/s390x/cpu_models.c | 4 ++-- target/s390x/cpu_models.h | 10 +++++++++- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/target/s390x/cpu_models.c b/target/s390x/cpu_models.c index c3a4f80633..a85c56b4ee 100644 --- a/target/s390x/cpu_models.c +++ b/target/s390x/cpu_models.c @@ -604,8 +604,8 @@ void s390_realize_cpu_model(CPUState *cs, Error **errp) #if !defined(CONFIG_USER_ONLY) cpu->env.cpuid = s390_cpuid_from_cpu_model(cpu->model); if (tcg_enabled()) { - /* basic mode, write the cpu address into the first 4 bit of the ID */ - cpu->env.cpuid = deposit64(cpu->env.cpuid, 54, 4, cpu->env.core_id); + cpu->env.cpuid = deposit64(cpu->env.cpuid, CPU_PHYS_ADDR_SHIFT, + CPU_PHYS_ADDR_BITS, cpu->env.core_id); } #endif } diff --git a/target/s390x/cpu_models.h b/target/s390x/cpu_models.h index fb1adc8b21..cc7305ec21 100644 --- a/target/s390x/cpu_models.h +++ b/target/s390x/cpu_models.h @@ -96,10 +96,18 @@ static inline bool s390_known_cpu_type(uint16_t type) { return s390_get_gen_for_cpu_type(type) != 0; } +#define CPU_ID_SHIFT 32 +#define CPU_ID_BITS 24 +/* + * When cpu_id_format is 0 (basic mode), the leftmost 4 bits of cpu_id contain + * the rightmost 4 bits of the physical CPU address. + */ +#define CPU_PHYS_ADDR_BITS 4 +#define CPU_PHYS_ADDR_SHIFT (CPU_ID_SHIFT + CPU_ID_BITS - CPU_PHYS_ADDR_BITS) static inline uint64_t s390_cpuid_from_cpu_model(const S390CPUModel *model) { return ((uint64_t)model->cpu_ver << 56) | - ((uint64_t)model->cpu_id << 32) | + ((uint64_t)model->cpu_id << CPU_ID_SHIFT) | ((uint64_t)model->def->type << 16) | (model->def->gen == 7 ? 0 : (uint64_t)model->cpu_id_format << 15); } From 8e84a20705cae1fc1cd268de06e46eaa17bf6b06 Mon Sep 17 00:00:00 2001 From: Jagannathan Raman Date: Wed, 17 May 2023 11:39:48 -0400 Subject: [PATCH 144/174] docs: fix multi-process QEMU documentation Fix a typo in the system documentation for multi-process QEMU. Signed-off-by: Jagannathan Raman Reviewed-by: Markus Armbruster Reviewed-by: Stefan Hajnoczi (cherry picked from commit 7771e8b86335968ee46538d1afd44246e7a062bc) Signed-off-by: Michael Tokarev --- docs/system/multi-process.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/system/multi-process.rst b/docs/system/multi-process.rst index 210531ee17..1b8852c27c 100644 --- a/docs/system/multi-process.rst +++ b/docs/system/multi-process.rst @@ -2,7 +2,7 @@ Multi-process QEMU ================== This document describes how to configure and use multi-process qemu. -For the design document refer to docs/devel/qemu-multiprocess. +For the design document refer to docs/devel/multi-process.rst. 1) Configuration ---------------- From 07e7102b8eb822d9c035c329382d8a3d9cf9bfd6 Mon Sep 17 00:00:00 2001 From: Mark Somerville Date: Thu, 6 Apr 2023 13:45:31 +0100 Subject: [PATCH 145/174] qga: Fix suspend on Linux guests without systemd Allow the Linux guest agent to attempt each of the suspend methods (systemctl, pm-* and writing to /sys) in turn. Prior to this guests without systemd failed to suspend due to `guest_suspend` returning early regardless of the return value of `systemd_supports_mode`. Signed-off-by: Mark Somerville Reviewed-by: Konstantin Kostiuk Signed-off-by: Konstantin Kostiuk (cherry picked from commit 86dcb6ab9b603450eb6d896cdc95286de2c7d561) Signed-off-by: Michael Tokarev --- qga/commands-posix.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/qga/commands-posix.c b/qga/commands-posix.c index 32493d6383..182eba4a38 100644 --- a/qga/commands-posix.c +++ b/qga/commands-posix.c @@ -1925,10 +1925,10 @@ static void guest_suspend(SuspendMode mode, Error **errp) if (systemd_supports_mode(mode, &local_err)) { mode_supported = true; systemd_suspend(mode, &local_err); - } - if (!local_err) { - return; + if (!local_err) { + return; + } } error_free(local_err); @@ -1937,10 +1937,10 @@ static void guest_suspend(SuspendMode mode, Error **errp) if (pmutils_supports_mode(mode, &local_err)) { mode_supported = true; pmutils_suspend(mode, &local_err); - } - if (!local_err) { - return; + if (!local_err) { + return; + } } error_free(local_err); From 10fad73a2bf1c76c8aa9d6322755e5f877d83ce5 Mon Sep 17 00:00:00 2001 From: Christian Schoenebeck Date: Wed, 7 Jun 2023 18:29:33 +0200 Subject: [PATCH 146/174] 9pfs: prevent opening special files (CVE-2023-2861) The 9p protocol does not specifically define how server shall behave when client tries to open a special file, however from security POV it does make sense for 9p server to prohibit opening any special file on host side in general. A sane Linux 9p client for instance would never attempt to open a special file on host side, it would always handle those exclusively on its guest side. A malicious client however could potentially escape from the exported 9p tree by creating and opening a device file on host side. With QEMU this could only be exploited in the following unsafe setups: - Running QEMU binary as root AND 9p 'local' fs driver AND 'passthrough' security model. or - Using 9p 'proxy' fs driver (which is running its helper daemon as root). These setups were already discouraged for safety reasons before, however for obvious reasons we are now tightening behaviour on this. Fixes: CVE-2023-2861 Reported-by: Yanwu Shen Reported-by: Jietao Xiao Reported-by: Jinku Li Reported-by: Wenbo Shen Signed-off-by: Christian Schoenebeck Reviewed-by: Greg Kurz Reviewed-by: Michael Tokarev Message-Id: (cherry picked from commit f6b0de53fb87ddefed348a39284c8e2f28dc4eda) Signed-off-by: Michael Tokarev (Mjt: drop adding qemu_fstat wrapper for 7.2 where wrappers aren't used) --- fsdev/virtfs-proxy-helper.c | 27 ++++++++++++++++++++++++-- hw/9pfs/9p-util.h | 38 +++++++++++++++++++++++++++++++++++++ 2 files changed, 63 insertions(+), 2 deletions(-) diff --git a/fsdev/virtfs-proxy-helper.c b/fsdev/virtfs-proxy-helper.c index 5cafcd7703..d9511f429c 100644 --- a/fsdev/virtfs-proxy-helper.c +++ b/fsdev/virtfs-proxy-helper.c @@ -26,6 +26,7 @@ #include "qemu/xattr.h" #include "9p-iov-marshal.h" #include "hw/9pfs/9p-proxy.h" +#include "hw/9pfs/9p-util.h" #include "fsdev/9p-iov-marshal.h" #define PROGNAME "virtfs-proxy-helper" @@ -338,6 +339,28 @@ static void resetugid(int suid, int sgid) } } +/* + * Open regular file or directory. Attempts to open any special file are + * rejected. + * + * returns file descriptor or -1 on error + */ +static int open_regular(const char *pathname, int flags, mode_t mode) +{ + int fd; + + fd = open(pathname, flags, mode); + if (fd < 0) { + return fd; + } + + if (close_if_special_file(fd) < 0) { + return -1; + } + + return fd; +} + /* * send response in two parts * 1) ProxyHeader @@ -682,7 +705,7 @@ static int do_create(struct iovec *iovec) if (ret < 0) { goto unmarshal_err_out; } - ret = open(path.data, flags, mode); + ret = open_regular(path.data, flags, mode); if (ret < 0) { ret = -errno; } @@ -707,7 +730,7 @@ static int do_open(struct iovec *iovec) if (ret < 0) { goto err_out; } - ret = open(path.data, flags); + ret = open_regular(path.data, flags, 0); if (ret < 0) { ret = -errno; } diff --git a/hw/9pfs/9p-util.h b/hw/9pfs/9p-util.h index c3526144c9..6b44e5f7a4 100644 --- a/hw/9pfs/9p-util.h +++ b/hw/9pfs/9p-util.h @@ -13,6 +13,8 @@ #ifndef QEMU_9P_UTIL_H #define QEMU_9P_UTIL_H +#include "qemu/error-report.h" + #ifdef O_PATH #define O_PATH_9P_UTIL O_PATH #else @@ -112,6 +114,38 @@ static inline void close_preserve_errno(int fd) errno = serrno; } +/** + * close_if_special_file() - Close @fd if neither regular file nor directory. + * + * @fd: file descriptor of open file + * Return: 0 on regular file or directory, -1 otherwise + * + * CVE-2023-2861: Prohibit opening any special file directly on host + * (especially device files), as a compromised client could potentially gain + * access outside exported tree under certain, unsafe setups. We expect + * client to handle I/O on special files exclusively on guest side. + */ +static inline int close_if_special_file(int fd) +{ + struct stat stbuf; + + if (fstat(fd, &stbuf) < 0) { + close_preserve_errno(fd); + return -1; + } + if (!S_ISREG(stbuf.st_mode) && !S_ISDIR(stbuf.st_mode)) { + error_report_once( + "9p: broken or compromised client detected; attempt to open " + "special file (i.e. neither regular file, nor directory)" + ); + close(fd); + errno = ENXIO; + return -1; + } + + return 0; +} + static inline int openat_dir(int dirfd, const char *name) { return openat(dirfd, name, @@ -146,6 +180,10 @@ again: return -1; } + if (close_if_special_file(fd) < 0) { + return -1; + } + serrno = errno; /* O_NONBLOCK was only needed to open the file. Let's drop it. We don't * do that with O_PATH since fcntl(F_SETFL) isn't supported, and openat() From 8eb73afedc143f5ca4798d055a4cc7de39194c6c Mon Sep 17 00:00:00 2001 From: Mattias Nissler Date: Wed, 26 Apr 2023 09:35:18 +0000 Subject: [PATCH 147/174] hw/remote: Fix vfu_cfg trace offset format MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The printed offset value is prefixed with 0x, but was actually printed in decimal. To spare others the confusion, adjust the format specifier to hexadecimal. Signed-off-by: Mattias Nissler Reviewed-by: Jagannathan Raman Reviewed-by: Philippe Mathieu-Daudé Signed-off-by: Michael Tokarev (cherry picked from commit 5fb9e8295531f957cf7ac20e89736c8963a25e04) Signed-off-by: Michael Tokarev --- hw/remote/trace-events | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/hw/remote/trace-events b/hw/remote/trace-events index c167b3c7a5..0d1b7d56a5 100644 --- a/hw/remote/trace-events +++ b/hw/remote/trace-events @@ -5,8 +5,8 @@ mpqemu_recv_io_error(int cmd, int size, int nfds) "failed to receive %d size %d, # vfio-user-obj.c vfu_prop(const char *prop, const char *val) "vfu: setting %s as %s" -vfu_cfg_read(uint32_t offset, uint32_t val) "vfu: cfg: 0x%u -> 0x%x" -vfu_cfg_write(uint32_t offset, uint32_t val) "vfu: cfg: 0x%u <- 0x%x" +vfu_cfg_read(uint32_t offset, uint32_t val) "vfu: cfg: 0x%x -> 0x%x" +vfu_cfg_write(uint32_t offset, uint32_t val) "vfu: cfg: 0x%x <- 0x%x" vfu_dma_register(uint64_t gpa, size_t len) "vfu: registering GPA 0x%"PRIx64", %zu bytes" vfu_dma_unregister(uint64_t gpa) "vfu: unregistering GPA 0x%"PRIx64"" vfu_bar_register(int i, uint64_t addr, uint64_t size) "vfu: BAR %d: addr 0x%"PRIx64" size 0x%"PRIx64"" From 9b55660e4a4f6bfea0965b2567641492a1feac57 Mon Sep 17 00:00:00 2001 From: Anastasia Belova Date: Fri, 9 Jun 2023 12:23:06 +0300 Subject: [PATCH 148/174] vnc: move assert in vnc_worker_thread_loop job may be NULL if queue->exit is true. Check it before dereference job. Fixes: f31f9c1080 ("vnc: add magic cookie to VncState") Signed-off-by: Anastasia Belova Reviewed-by: Michael Tokarev Signed-off-by: Michael Tokarev (cherry picked from commit bdfca8a22f41e7ad47fd2dac71e4d1387e2c0d4e) Signed-off-by: Michael Tokarev --- ui/vnc-jobs.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ui/vnc-jobs.c b/ui/vnc-jobs.c index 886f9bf611..fcca7ec632 100644 --- a/ui/vnc-jobs.c +++ b/ui/vnc-jobs.c @@ -250,12 +250,13 @@ static int vnc_worker_thread_loop(VncJobQueue *queue) /* Here job can only be NULL if queue->exit is true */ job = QTAILQ_FIRST(&queue->jobs); vnc_unlock_queue(queue); - assert(job->vs->magic == VNC_MAGIC); if (queue->exit) { return -1; } + assert(job->vs->magic == VNC_MAGIC); + vnc_lock_output(job->vs); if (job->vs->ioc == NULL || job->vs->abort == true) { vnc_unlock_output(job->vs); From d31e0a384391c072bb121816ce9b7582a65cad9d Mon Sep 17 00:00:00 2001 From: Nicholas Piggin Date: Mon, 5 Jun 2023 12:54:42 +1000 Subject: [PATCH 149/174] target/ppc: Fix lqarx to set cpu_reserve lqarx does not set cpu_reserve, which causes stqcx. to never succeed. Cc: qemu-stable@nongnu.org Fixes: 94bf2658676 ("target/ppc: Use atomic load for LQ and LQARX") Fixes: 57b38ffd0c6 ("target/ppc: Use tcg_gen_qemu_{ld,st}_i128 for LQARX, LQ, STQ") Signed-off-by: Nicholas Piggin Reviewed-by: Richard Henderson Message-Id: <20230605025445.161932-1-npiggin@gmail.com> Signed-off-by: Daniel Henrique Barboza (cherry picked from commit e025e8f5a8a7e32409bb4c7c509d752486113188) Signed-off-by: Michael Tokarev --- target/ppc/translate.c | 1 + 1 file changed, 1 insertion(+) diff --git a/target/ppc/translate.c b/target/ppc/translate.c index 19c1d17cb0..1de7eca9c4 100644 --- a/target/ppc/translate.c +++ b/target/ppc/translate.c @@ -3972,6 +3972,7 @@ static void gen_lqarx(DisasContext *ctx) } tcg_temp_free(EA); + tcg_gen_mov_tl(cpu_reserve, EA); tcg_gen_st_tl(hi, cpu_env, offsetof(CPUPPCState, reserve_val)); tcg_gen_st_tl(lo, cpu_env, offsetof(CPUPPCState, reserve_val2)); } From 8e57e02ff8f655a0fca6877299e26454cc2d1165 Mon Sep 17 00:00:00 2001 From: Nicholas Piggin Date: Tue, 30 May 2023 23:21:27 +1000 Subject: [PATCH 150/174] target/ppc: Fix nested-hv HEAI delivery ppc hypervisors turn HEAI interrupts into program interrupts injected into the guest that executed the illegal instruction, if the hypervisor doesn't handle it some other way. The nested-hv implementation failed to account for this HEAI->program conversion. The virtual hypervisor wants to see the HEAI when running a nested guest, so that interrupt type can be returned to its KVM caller. Fixes: 7cebc5db2eba6 ("target/ppc: Introduce a vhyp framework for nested HV support") Cc: balaton@eik.bme.hu Reviewed-by: Fabiano Rosas Signed-off-by: Nicholas Piggin Message-Id: <20230530132127.385001-1-npiggin@gmail.com> Signed-off-by: Daniel Henrique Barboza (cherry picked from commit 6c242e79b876b3570b8fd2f10f2a502467758e56) Signed-off-by: Michael Tokarev --- target/ppc/excp_helper.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/target/ppc/excp_helper.c b/target/ppc/excp_helper.c index 30bc2e6adf..6cf88f635a 100644 --- a/target/ppc/excp_helper.c +++ b/target/ppc/excp_helper.c @@ -1358,9 +1358,12 @@ static void powerpc_excp_books(PowerPCCPU *cpu, int excp) /* * We don't want to generate a Hypervisor Emulation Assistance - * Interrupt if we don't have HVB in msr_mask (PAPR mode). + * Interrupt if we don't have HVB in msr_mask (PAPR mode), + * unless running a nested-hv guest, in which case the L1 + * kernel wants the interrupt. */ - if (excp == POWERPC_EXCP_HV_EMU && !(env->msr_mask & MSR_HVB)) { + if (excp == POWERPC_EXCP_HV_EMU && !(env->msr_mask & MSR_HVB) && + !books_vhyp_handles_hv_excp(cpu)) { excp = POWERPC_EXCP_PROGRAM; } From 6e979dba56845f472496a86e290dd56ba7431ccd Mon Sep 17 00:00:00 2001 From: Nicholas Piggin Date: Tue, 30 May 2023 23:04:47 +1000 Subject: [PATCH 151/174] target/ppc: Fix PMU hflags calculation Some of the PMU hflags bits can go out of synch, for example a store to MMCR0 with PMCjCE=1 fails to update hflags correctly and results in hflags mismatch: qemu: fatal: TCG hflags mismatch (current:0x2408003d rebuilt:0x240a003d) This can be reproduced by running perf on a recent machine. Some of the fragility here is the duplication of PMU hflags calculations. This change consolidates that in a single place to update pmu-related hflags, to be called after a well defined state changes. The post-load PMU update is pulled out of the MSR update because it does not depend on the MSR value. Fixes: 8b3d1c49a9f0 ("target/ppc: Add new PMC HFLAGS") Signed-off-by: Nicholas Piggin Reviewed-by: Daniel Henrique Barboza Message-Id: <20230530130447.372617-1-npiggin@gmail.com> Signed-off-by: Daniel Henrique Barboza (cherry picked from commit 6494d2c1fd4ebc37b575130399a97a1fcfff1afc) Signed-off-by: Michael Tokarev --- target/ppc/cpu_init.c | 2 +- target/ppc/helper_regs.c | 73 ++++++++++++++++++++++++++++++---------- target/ppc/helper_regs.h | 1 + target/ppc/machine.c | 8 ++--- target/ppc/power8-pmu.c | 38 ++++++++++++--------- target/ppc/power8-pmu.h | 4 +-- 6 files changed, 85 insertions(+), 41 deletions(-) diff --git a/target/ppc/cpu_init.c b/target/ppc/cpu_init.c index cbf0081374..294a18a5b7 100644 --- a/target/ppc/cpu_init.c +++ b/target/ppc/cpu_init.c @@ -7085,7 +7085,7 @@ static void ppc_cpu_reset(DeviceState *dev) if (env->mmu_model != POWERPC_MMU_REAL) { ppc_tlb_invalidate_all(env); } - pmu_update_summaries(env); + pmu_mmcr01_updated(env); } /* clean any pending stop state */ diff --git a/target/ppc/helper_regs.c b/target/ppc/helper_regs.c index c0aee5855b..e200091a23 100644 --- a/target/ppc/helper_regs.c +++ b/target/ppc/helper_regs.c @@ -46,6 +46,48 @@ void hreg_swap_gpr_tgpr(CPUPPCState *env) env->tgpr[3] = tmp; } +static uint32_t hreg_compute_pmu_hflags_value(CPUPPCState *env) +{ + uint32_t hflags = 0; + +#if defined(TARGET_PPC64) + if (env->spr[SPR_POWER_MMCR0] & MMCR0_PMCC0) { + hflags |= 1 << HFLAGS_PMCC0; + } + if (env->spr[SPR_POWER_MMCR0] & MMCR0_PMCC1) { + hflags |= 1 << HFLAGS_PMCC1; + } + if (env->spr[SPR_POWER_MMCR0] & MMCR0_PMCjCE) { + hflags |= 1 << HFLAGS_PMCJCE; + } + +#ifndef CONFIG_USER_ONLY + if (env->pmc_ins_cnt) { + hflags |= 1 << HFLAGS_INSN_CNT; + } + if (env->pmc_ins_cnt & 0x1e) { + hflags |= 1 << HFLAGS_PMC_OTHER; + } +#endif +#endif + + return hflags; +} + +/* Mask of all PMU hflags */ +static uint32_t hreg_compute_pmu_hflags_mask(CPUPPCState *env) +{ + uint32_t hflags_mask = 0; +#if defined(TARGET_PPC64) + hflags_mask |= 1 << HFLAGS_PMCC0; + hflags_mask |= 1 << HFLAGS_PMCC1; + hflags_mask |= 1 << HFLAGS_PMCJCE; + hflags_mask |= 1 << HFLAGS_INSN_CNT; + hflags_mask |= 1 << HFLAGS_PMC_OTHER; +#endif + return hflags_mask; +} + static uint32_t hreg_compute_hflags_value(CPUPPCState *env) { target_ulong msr = env->msr; @@ -103,30 +145,12 @@ static uint32_t hreg_compute_hflags_value(CPUPPCState *env) if (env->spr[SPR_LPCR] & LPCR_HR) { hflags |= 1 << HFLAGS_HR; } - if (env->spr[SPR_POWER_MMCR0] & MMCR0_PMCC0) { - hflags |= 1 << HFLAGS_PMCC0; - } - if (env->spr[SPR_POWER_MMCR0] & MMCR0_PMCC1) { - hflags |= 1 << HFLAGS_PMCC1; - } - if (env->spr[SPR_POWER_MMCR0] & MMCR0_PMCjCE) { - hflags |= 1 << HFLAGS_PMCJCE; - } #ifndef CONFIG_USER_ONLY if (!env->has_hv_mode || (msr & (1ull << MSR_HV))) { hflags |= 1 << HFLAGS_HV; } -#if defined(TARGET_PPC64) - if (env->pmc_ins_cnt) { - hflags |= 1 << HFLAGS_INSN_CNT; - } - if (env->pmc_ins_cnt & 0x1e) { - hflags |= 1 << HFLAGS_PMC_OTHER; - } -#endif - /* * This is our encoding for server processors. The architecture * specifies that there is no such thing as userspace with @@ -171,6 +195,8 @@ static uint32_t hreg_compute_hflags_value(CPUPPCState *env) hflags |= dmmu_idx << HFLAGS_DMMU_IDX; #endif + hflags |= hreg_compute_pmu_hflags_value(env); + return hflags | (msr & msr_mask); } @@ -179,6 +205,17 @@ void hreg_compute_hflags(CPUPPCState *env) env->hflags = hreg_compute_hflags_value(env); } +/* + * This can be used as a lighter-weight alternative to hreg_compute_hflags + * when PMU MMCR0 or pmc_ins_cnt changes. pmc_ins_cnt is changed by + * pmu_update_summaries. + */ +void hreg_update_pmu_hflags(CPUPPCState *env) +{ + env->hflags &= ~hreg_compute_pmu_hflags_mask(env); + env->hflags |= hreg_compute_pmu_hflags_value(env); +} + #ifdef CONFIG_DEBUG_TCG void cpu_get_tb_cpu_state(CPUPPCState *env, target_ulong *pc, target_ulong *cs_base, uint32_t *flags) diff --git a/target/ppc/helper_regs.h b/target/ppc/helper_regs.h index 42f26870b9..8196c1346d 100644 --- a/target/ppc/helper_regs.h +++ b/target/ppc/helper_regs.h @@ -22,6 +22,7 @@ void hreg_swap_gpr_tgpr(CPUPPCState *env); void hreg_compute_hflags(CPUPPCState *env); +void hreg_update_pmu_hflags(CPUPPCState *env); void cpu_interrupt_exittb(CPUState *cs); int hreg_store_msr(CPUPPCState *env, target_ulong value, int alter_hv); diff --git a/target/ppc/machine.c b/target/ppc/machine.c index be6eb3d968..134b16c625 100644 --- a/target/ppc/machine.c +++ b/target/ppc/machine.c @@ -21,10 +21,6 @@ static void post_load_update_msr(CPUPPCState *env) */ env->msr ^= env->msr_mask & ~((1ULL << MSR_TGPR) | MSR_HVB); ppc_store_msr(env, msr); - - if (tcg_enabled()) { - pmu_update_summaries(env); - } } static int get_avr(QEMUFile *f, void *pv, size_t size, @@ -317,6 +313,10 @@ static int cpu_post_load(void *opaque, int version_id) post_load_update_msr(env); + if (tcg_enabled()) { + pmu_mmcr01_updated(env); + } + return 0; } diff --git a/target/ppc/power8-pmu.c b/target/ppc/power8-pmu.c index 1381072b9e..fccd011088 100644 --- a/target/ppc/power8-pmu.c +++ b/target/ppc/power8-pmu.c @@ -31,7 +31,11 @@ static bool pmc_has_overflow_enabled(CPUPPCState *env, int sprn) return env->spr[SPR_POWER_MMCR0] & MMCR0_PMCjCE; } -void pmu_update_summaries(CPUPPCState *env) +/* + * Called after MMCR0 or MMCR1 changes to update pmc_ins_cnt and pmc_cyc_cnt. + * hflags must subsequently be updated. + */ +static void pmu_update_summaries(CPUPPCState *env) { target_ulong mmcr0 = env->spr[SPR_POWER_MMCR0]; target_ulong mmcr1 = env->spr[SPR_POWER_MMCR1]; @@ -39,7 +43,7 @@ void pmu_update_summaries(CPUPPCState *env) int cyc_cnt = 0; if (mmcr0 & MMCR0_FC) { - goto hflags_calc; + goto out; } if (!(mmcr0 & MMCR0_FC14) && mmcr1 != 0) { @@ -73,10 +77,19 @@ void pmu_update_summaries(CPUPPCState *env) ins_cnt |= !(mmcr0 & MMCR0_FC56) << 5; cyc_cnt |= !(mmcr0 & MMCR0_FC56) << 6; - hflags_calc: + out: env->pmc_ins_cnt = ins_cnt; env->pmc_cyc_cnt = cyc_cnt; - env->hflags = deposit32(env->hflags, HFLAGS_INSN_CNT, 1, ins_cnt != 0); +} + +void pmu_mmcr01_updated(CPUPPCState *env) +{ + pmu_update_summaries(env); + hreg_update_pmu_hflags(env); + /* + * Should this update overflow timers (if mmcr0 is updated) so they + * get set in cpu_post_load? + */ } static bool pmu_increment_insns(CPUPPCState *env, uint32_t num_insns) @@ -234,18 +247,11 @@ static void pmu_delete_timers(CPUPPCState *env) void helper_store_mmcr0(CPUPPCState *env, target_ulong value) { - bool hflags_pmcc0 = (value & MMCR0_PMCC0) != 0; - bool hflags_pmcc1 = (value & MMCR0_PMCC1) != 0; - pmu_update_cycles(env); env->spr[SPR_POWER_MMCR0] = value; - /* MMCR0 writes can change HFLAGS_PMCC[01] and HFLAGS_INSN_CNT */ - env->hflags = deposit32(env->hflags, HFLAGS_PMCC0, 1, hflags_pmcc0); - env->hflags = deposit32(env->hflags, HFLAGS_PMCC1, 1, hflags_pmcc1); - - pmu_update_summaries(env); + pmu_mmcr01_updated(env); /* Update cycle overflow timers with the current MMCR0 state */ pmu_update_overflow_timers(env); @@ -257,8 +263,7 @@ void helper_store_mmcr1(CPUPPCState *env, uint64_t value) env->spr[SPR_POWER_MMCR1] = value; - /* MMCR1 writes can change HFLAGS_INSN_CNT */ - pmu_update_summaries(env); + pmu_mmcr01_updated(env); } target_ulong helper_read_pmc(CPUPPCState *env, uint32_t sprn) @@ -287,8 +292,8 @@ static void fire_PMC_interrupt(PowerPCCPU *cpu) env->spr[SPR_POWER_MMCR0] &= ~MMCR0_FCECE; env->spr[SPR_POWER_MMCR0] |= MMCR0_FC; - /* Changing MMCR0_FC requires a new HFLAGS_INSN_CNT calc */ - pmu_update_summaries(env); + /* Changing MMCR0_FC requires summaries and hflags update */ + pmu_mmcr01_updated(env); /* * Delete all pending timers if we need to freeze @@ -299,6 +304,7 @@ static void fire_PMC_interrupt(PowerPCCPU *cpu) } if (env->spr[SPR_POWER_MMCR0] & MMCR0_PMAE) { + /* These MMCR0 bits do not require summaries or hflags update. */ env->spr[SPR_POWER_MMCR0] &= ~MMCR0_PMAE; env->spr[SPR_POWER_MMCR0] |= MMCR0_PMAO; } diff --git a/target/ppc/power8-pmu.h b/target/ppc/power8-pmu.h index c0093e2219..775e640053 100644 --- a/target/ppc/power8-pmu.h +++ b/target/ppc/power8-pmu.h @@ -18,10 +18,10 @@ #define PMC_COUNTER_NEGATIVE_VAL 0x80000000UL void cpu_ppc_pmu_init(CPUPPCState *env); -void pmu_update_summaries(CPUPPCState *env); +void pmu_mmcr01_updated(CPUPPCState *env); #else static inline void cpu_ppc_pmu_init(CPUPPCState *env) { } -static inline void pmu_update_summaries(CPUPPCState *env) { } +static inline void pmu_mmcr01_updated(CPUPPCState *env) { } #endif #endif From 4fc28bf08a147f24c4817fa740e24d458ed29ec2 Mon Sep 17 00:00:00 2001 From: Yin Wang Date: Fri, 19 May 2023 10:37:58 +0800 Subject: [PATCH 152/174] hw/riscv: qemu crash when NUMA nodes exceed available CPUs Command "qemu-system-riscv64 -machine virt -m 2G -smp 1 -numa node,mem=1G -numa node,mem=1G" would trigger this problem.Backtrace with: #0 0x0000555555b5b1a4 in riscv_numa_get_default_cpu_node_id at ../hw/riscv/numa.c:211 #1 0x00005555558ce510 in machine_numa_finish_cpu_init at ../hw/core/machine.c:1230 #2 0x00005555558ce9d3 in machine_run_board_init at ../hw/core/machine.c:1346 #3 0x0000555555aaedc3 in qemu_init_board at ../softmmu/vl.c:2513 #4 0x0000555555aaf064 in qmp_x_exit_preconfig at ../softmmu/vl.c:2609 #5 0x0000555555ab1916 in qemu_init at ../softmmu/vl.c:3617 #6 0x000055555585463b in main at ../softmmu/main.c:47 This commit fixes the issue by adding parameter checks. Reviewed-by: Alistair Francis Reviewed-by: Daniel Henrique Barboza Reviewed-by: LIU Zhiwei Reviewed-by: Weiwei Li Signed-off-by: Yin Wang Message-Id: <20230519023758.1759434-1-yin.wang@intel.com> Signed-off-by: Alistair Francis (cherry picked from commit b9cedbf19cb4be04908a3a623f0f237875483499) Signed-off-by: Michael Tokarev --- hw/riscv/numa.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/hw/riscv/numa.c b/hw/riscv/numa.c index 7fe92d402f..edf6750f54 100644 --- a/hw/riscv/numa.c +++ b/hw/riscv/numa.c @@ -207,6 +207,12 @@ int64_t riscv_numa_get_default_cpu_node_id(const MachineState *ms, int idx) { int64_t nidx = 0; + if (ms->numa_state->num_nodes > ms->smp.cpus) { + error_report("Number of NUMA nodes (%d)" + " cannot exceed the number of available CPUs (%d).", + ms->numa_state->num_nodes, ms->smp.max_cpus); + exit(EXIT_FAILURE); + } if (ms->numa_state->num_nodes) { nidx = idx / (ms->smp.cpus / ms->numa_state->num_nodes); if (ms->numa_state->num_nodes <= nidx) { From 23315ad0b8c04423fd274e9c571ae2cee9bd50c2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= Date: Wed, 7 Jun 2023 06:39:32 +0200 Subject: [PATCH 153/174] aspeed/hace: Initialize g_autofree pointer MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit As mentioned in docs/devel/style.rst "Automatic memory deallocation": * Variables declared with g_auto* MUST always be initialized, otherwise the cleanup function will use uninitialized stack memory This avoids QEMU to coredump when running the "hash test" command under Zephyr. Cc: Steven Lee Cc: Joel Stanley Cc: qemu-stable@nongnu.org Fixes: c5475b3f9a ("hw: Model ASPEED's Hash and Crypto Engine") Reviewed-by: Philippe Mathieu-Daudé Reviewed-by: Alex Bennée Reviewed-by: Thomas Huth Reviewed-by: Francisco Iglesias Message-Id: <20230421131547.2177449-1-clg@kaod.org> Signed-off-by: Cédric Le Goater Reviewed-by: Joel Stanley Signed-off-by: Cédric Le Goater (cherry picked from commit c8f48b120b31f6bbe33135ef5d478e485c37e3c2) Signed-off-by: Michael Tokarev --- hw/misc/aspeed_hace.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hw/misc/aspeed_hace.c b/hw/misc/aspeed_hace.c index ac21be306c..69175e972d 100644 --- a/hw/misc/aspeed_hace.c +++ b/hw/misc/aspeed_hace.c @@ -189,7 +189,7 @@ static void do_hash_operation(AspeedHACEState *s, int algo, bool sg_mode, bool acc_mode) { struct iovec iov[ASPEED_HACE_MAX_SG]; - g_autofree uint8_t *digest_buf; + g_autofree uint8_t *digest_buf = NULL; size_t digest_len = 0; int niov = 0; int i; From 1bc596d079dba75794560e0b52f1b0cb7d5dd3a4 Mon Sep 17 00:00:00 2001 From: Peter Maydell Date: Mon, 19 Jun 2023 11:20:18 +0100 Subject: [PATCH 154/174] target/arm: Fix return value from LDSMIN/LDSMAX 8/16 bit atomics The atomic memory operations are supposed to return the old memory data value in the destination register. This value is not sign-extended, even if the operation is the signed minimum or maximum. (In the pseudocode for the instructions the returned data value is passed to ZeroExtend() to create the value in the register.) We got this wrong because we were doing a 32-to-64 zero extend on the result for 8 and 16 bit data values, rather than the correct amount of zero extension. Fix the bug by using ext8u and ext16u for the MO_8 and MO_16 data sizes rather than ext32u. Cc: qemu-stable@nongnu.org Signed-off-by: Peter Maydell Reviewed-by: Richard Henderson Message-id: 20230602155223.2040685-2-peter.maydell@linaro.org (cherry picked from commit 243705aa6ea3465b20e9f5a8bfcf36d3153f3c10) Signed-off-by: Michael Tokarev --- target/arm/translate-a64.c | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/target/arm/translate-a64.c b/target/arm/translate-a64.c index 2ee171f249..3c356d238f 100644 --- a/target/arm/translate-a64.c +++ b/target/arm/translate-a64.c @@ -3536,8 +3536,22 @@ static void disas_ldst_atomic(DisasContext *s, uint32_t insn, */ fn(tcg_rt, clean_addr, tcg_rs, get_mem_index(s), mop); - if ((mop & MO_SIGN) && size != MO_64) { - tcg_gen_ext32u_i64(tcg_rt, tcg_rt); + if (mop & MO_SIGN) { + switch (size) { + case MO_8: + tcg_gen_ext8u_i64(tcg_rt, tcg_rt); + break; + case MO_16: + tcg_gen_ext16u_i64(tcg_rt, tcg_rt); + break; + case MO_32: + tcg_gen_ext32u_i64(tcg_rt, tcg_rt); + break; + case MO_64: + break; + default: + g_assert_not_reached(); + } } } From d0040c60f7185477fe0080e6d09f052adf86c572 Mon Sep 17 00:00:00 2001 From: Peter Maydell Date: Mon, 19 Jun 2023 11:20:18 +0100 Subject: [PATCH 155/174] target/arm: Return correct result for LDG when ATA=0 The LDG instruction loads the tag from a memory address (identified by [Xn + offset]), and then merges that tag into the destination register Xt. We implemented this correctly for the case when allocation tags are enabled, but didn't get it right when ATA=0: instead of merging the tag bits into Xt, we merged them into the memory address [Xn + offset] and then set Xt to that. Merge the tag bits into the old Xt value, as they should be. Cc: qemu-stable@nongnu.org Fixes: c15294c1e36a7dd9b25 ("target/arm: Implement LDG, STG, ST2G instructions") Reviewed-by: Richard Henderson Signed-off-by: Peter Maydell (cherry picked from commit 7e2788471f9e079fff696a694721a7d41a451839) Signed-off-by: Michael Tokarev --- target/arm/translate-a64.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/target/arm/translate-a64.c b/target/arm/translate-a64.c index 3c356d238f..f0b8db7ce5 100644 --- a/target/arm/translate-a64.c +++ b/target/arm/translate-a64.c @@ -4190,9 +4190,13 @@ static void disas_ldst_tag(DisasContext *s, uint32_t insn) if (s->ata) { gen_helper_ldg(tcg_rt, cpu_env, addr, tcg_rt); } else { + /* + * Tag access disabled: we must check for aborts on the load + * load from [rn+offset], and then insert a 0 tag into rt. + */ clean_addr = clean_data_tbi(s, addr); gen_probe_access(s, clean_addr, MMU_DATA_LOAD, MO_8); - gen_address_with_allocation_tag0(tcg_rt, addr); + gen_address_with_allocation_tag0(tcg_rt, tcg_rt); } } else { tcg_rt = cpu_reg_sp(s, rt); From 09dd3f2cae7606fb9282eda820ef9324f6d4383f Mon Sep 17 00:00:00 2001 From: Peter Maydell Date: Tue, 6 Jun 2023 11:46:08 +0100 Subject: [PATCH 156/174] hw/intc/allwinner-a10-pic: Handle IRQ levels other than 0 or 1 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit In commit 2c5fa0778c3b430 we fixed an endianness bug in the Allwinner A10 PIC model; however in the process we introduced a regression. This is because the old code was robust against the incoming 'level' argument being something other than 0 or 1, whereas the new code was not. In particular, the allwinner-sdhost code treats its IRQ line as 0-vs-non-0 rather than 0-vs-1, so when the SD controller set its IRQ line for any reason other than transmit the interrupt controller would ignore it. The observed effect was a guest timeout when rebooting the guest kernel. Handle level values other than 0 or 1, to restore the old behaviour. Fixes: 2c5fa0778c3b430 ("hw/intc/allwinner-a10-pic: Don't use set_bit()/clear_bit()") (Mjt: 5eb742fce562dc7 in stable-7.2) Cc: qemu-stable@nongnu.org Signed-off-by: Peter Maydell Reviewed-by: Philippe Mathieu-Daudé Tested-by: Guenter Roeck Message-id: 20230606104609.3692557-2-peter.maydell@linaro.org (cherry picked from commit f837b468cdaa7e736b5385c7dc4f8c5adcad3bf1) Signed-off-by: Michael Tokarev --- hw/intc/allwinner-a10-pic.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hw/intc/allwinner-a10-pic.c b/hw/intc/allwinner-a10-pic.c index 4875e68ba6..d0bf8d545b 100644 --- a/hw/intc/allwinner-a10-pic.c +++ b/hw/intc/allwinner-a10-pic.c @@ -51,7 +51,7 @@ static void aw_a10_pic_set_irq(void *opaque, int irq, int level) AwA10PICState *s = opaque; uint32_t *pending_reg = &s->irq_pending[irq / 32]; - *pending_reg = deposit32(*pending_reg, irq % 32, 1, level); + *pending_reg = deposit32(*pending_reg, irq % 32, 1, !!level); aw_a10_pic_update(s); } From 04de6cb0027c86e628ae0c64ca06b6f05b475c53 Mon Sep 17 00:00:00 2001 From: Peter Maydell Date: Tue, 6 Jun 2023 14:49:17 +0100 Subject: [PATCH 157/174] hw/timer/nrf51_timer: Don't lose time when timer is queried in tight loop The nrf51_timer has a free-running counter which we implement using the pattern of using two fields (update_counter_ns, counter) to track the last point at which we calculated the counter value, and the counter value at that time. Then we can find the current counter value by converting the difference in wall-clock time between then and now to a tick count that we need to add to the counter value. Unfortunately the nrf51_timer's implementation of this has a bug which means it loses time every time update_counter() is called. After updating s->counter it always sets s->update_counter_ns to 'now', even though the actual point when s->counter hit the new value will be some point in the past (half a tick, say). In the worst case (guest code in a tight loop reading the counter, icount mode) the counter is continually queried less than a tick after it was last read, so s->counter never advances but s->update_counter_ns does, and the guest never makes forward progress. The fix for this is to only advance update_counter_ns to the timestamp of the last tick, not all the way to 'now'. (This is the pattern used in hw/misc/mps2-fpgaio.c's counter.) Cc: qemu-stable@nongnu.org Signed-off-by: Peter Maydell Reviewed-by: Joel Stanley Message-id: 20230606134917.3782215-1-peter.maydell@linaro.org (cherry picked from commit d2f9a79a8cf6ab992e1d0f27ad05b3e582d2b18a) Signed-off-by: Michael Tokarev --- hw/timer/nrf51_timer.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/hw/timer/nrf51_timer.c b/hw/timer/nrf51_timer.c index 42be79c736..50c6772383 100644 --- a/hw/timer/nrf51_timer.c +++ b/hw/timer/nrf51_timer.c @@ -45,7 +45,12 @@ static uint32_t update_counter(NRF51TimerState *s, int64_t now) uint32_t ticks = ns_to_ticks(s, now - s->update_counter_ns); s->counter = (s->counter + ticks) % BIT(bitwidths[s->bitmode]); - s->update_counter_ns = now; + /* + * Only advance the sync time to the timestamp of the last tick, + * not all the way to 'now', so we don't lose time if we do + * multiple resyncs in a single tick. + */ + s->update_counter_ns += ticks_to_ns(s, ticks); return ticks; } From 29191ea6a5203d26343d80238d1501cc15ba6b05 Mon Sep 17 00:00:00 2001 From: Peter Maydell Date: Thu, 22 Jun 2023 14:08:23 +0100 Subject: [PATCH 158/174] host-utils: Avoid using __builtin_subcll on buggy versions of Apple Clang MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit We use __builtin_subcll() to do a 64-bit subtract with borrow-in and borrow-out when the host compiler supports it. Unfortunately some versions of Apple Clang have a bug in their implementation of this intrinsic which means it returns the wrong value. The effect is that a QEMU built with the affected compiler will hang when emulating x86 or m68k float80 division. The upstream LLVM issue is: https://github.com/llvm/llvm-project/issues/55253 The commit that introduced the bug apparently never made it into an upstream LLVM release without the subsequent fix https://github.com/llvm/llvm-project/commit/fffb6e6afdbaba563189c1f715058ed401fbc88d but unfortunately it did make it into Apple Clang 14.0, as shipped in Xcode 14.3 (14.2 is reported to be OK). The Apple bug number is FB12210478. Add ifdefs to avoid use of __builtin_subcll() on Apple Clang version 14 or greater. There is not currently a version of Apple Clang which has the bug fix -- when one appears we should be able to add an upper bound to the ifdef condition so we can start using the builtin again. We make the lower bound a conservative "any Apple clang with major version 14 or greater" because the consequences of incorrectly disabling the builtin when it would work are pretty small and the consequences of not disabling it when we should are pretty bad. Many thanks to those users who both reported this bug and also did a lot of work in identifying the root cause; in particular to Daniel Bertalan and osy. Cc: qemu-stable@nongnu.org Resolves: https://gitlab.com/qemu-project/qemu/-/issues/1631 Resolves: https://gitlab.com/qemu-project/qemu/-/issues/1659 Signed-off-by: Peter Maydell Reviewed-by: Richard Henderson Reviewed-by: Daniel P. Berrangé Tested-by: Daniel Bertalan Tested-by: Tested-By: Solra Bizna Message-id: 20230622130823.1631719-1-peter.maydell@linaro.org (cherry picked from commit b0438861efe1dfbdfdd9fa1d9aa05100d37ea8ee) Signed-off-by: Michael Tokarev --- include/qemu/compiler.h | 13 +++++++++++++ include/qemu/host-utils.h | 2 +- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/include/qemu/compiler.h b/include/qemu/compiler.h index f20a76e4a2..c7ffcaba43 100644 --- a/include/qemu/compiler.h +++ b/include/qemu/compiler.h @@ -184,4 +184,17 @@ #define QEMU_DISABLE_CFI #endif +/* + * Apple clang version 14 has a bug in its __builtin_subcll(); define + * BUILTIN_SUBCLL_BROKEN for the offending versions so we can avoid it. + * When a version of Apple clang which has this bug fixed is released + * we can add an upper bound to this check. + * See https://gitlab.com/qemu-project/qemu/-/issues/1631 + * and https://gitlab.com/qemu-project/qemu/-/issues/1659 for details. + * The bug never made it into any upstream LLVM releases, only Apple ones. + */ +#if defined(__apple_build_version__) && __clang_major__ >= 14 +#define BUILTIN_SUBCLL_BROKEN +#endif + #endif /* COMPILER_H */ diff --git a/include/qemu/host-utils.h b/include/qemu/host-utils.h index 88d476161c..b3434ec0bc 100644 --- a/include/qemu/host-utils.h +++ b/include/qemu/host-utils.h @@ -596,7 +596,7 @@ static inline uint64_t uadd64_carry(uint64_t x, uint64_t y, bool *pcarry) */ static inline uint64_t usub64_borrow(uint64_t x, uint64_t y, bool *pborrow) { -#if __has_builtin(__builtin_subcll) +#if __has_builtin(__builtin_subcll) && !defined(BUILTIN_SUBCLL_BROKEN) unsigned long long b = *pborrow; x = __builtin_subcll(x, y, b, &b); *pborrow = b & 1; From 601f084ef7ac467228293e05ddc40217239dc61b Mon Sep 17 00:00:00 2001 From: Peter Maydell Date: Tue, 20 Jun 2023 17:20:24 +0100 Subject: [PATCH 159/174] pc-bios/keymaps: Use the official xkb name for Arabic layout, not the legacy synonym MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The xkb official name for the Arabic keyboard layout is 'ara'. However xkb has for at least the past 15 years also permitted it to be named via the legacy synonym 'ar'. In xkeyboard-config 2.39 this synoynm was removed, which breaks compilation of QEMU: FAILED: pc-bios/keymaps/ar /home/fred/qemu-git/src/qemu/build-full/qemu-keymap -f pc-bios/keymaps/ar -l ar xkbcommon: ERROR: Couldn't find file "symbols/ar" in include paths xkbcommon: ERROR: 1 include paths searched: xkbcommon: ERROR: /usr/share/X11/xkb xkbcommon: ERROR: 3 include paths could not be added: xkbcommon: ERROR: /home/fred/.config/xkb xkbcommon: ERROR: /home/fred/.xkb xkbcommon: ERROR: /etc/xkb xkbcommon: ERROR: Abandoning symbols file "(unnamed)" xkbcommon: ERROR: Failed to compile xkb_symbols xkbcommon: ERROR: Failed to compile keymap The upstream xkeyboard-config change removing the compat mapping is: https://gitlab.freedesktop.org/xkeyboard-config/xkeyboard-config/-/commit/470ad2cd8fea84d7210377161d86b31999bb5ea6 Make QEMU always ask for the 'ara' xkb layout, which should work on both older and newer xkeyboard-config. We leave the QEMU name for this keyboard layout as 'ar'; it is not the only one where our name for it deviates from the xkb standard name. Cc: qemu-stable@nongnu.org Signed-off-by: Peter Maydell Reviewed-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daudé Reviewed-by: Daniel P. Berrangé Message-id: 20230620162024.1132013-1-peter.maydell@linaro.org Resolves: https://gitlab.com/qemu-project/qemu/-/issues/1709 (cherry picked from commit 497fad38979c16b6412388927401e577eba43d26) Signed-off-by: Michael Tokarev --- pc-bios/keymaps/meson.build | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pc-bios/keymaps/meson.build b/pc-bios/keymaps/meson.build index 06c75e646b..452395b962 100644 --- a/pc-bios/keymaps/meson.build +++ b/pc-bios/keymaps/meson.build @@ -1,5 +1,5 @@ keymaps = { - 'ar': '-l ar', + 'ar': '-l ara', 'bepo': '-l fr -v dvorak', 'cz': '-l cz', 'da': '-l dk', From 6331b12d6074b6f0f613226fd33849e684b7d4da Mon Sep 17 00:00:00 2001 From: Helge Deller Date: Fri, 23 Jun 2023 08:24:30 +0200 Subject: [PATCH 160/174] target/hppa: Fix OS reboot issues When the OS triggers a reboot, the reset helper function sends a qemu_system_reset_request(SHUTDOWN_CAUSE_GUEST_RESET) together with an EXCP_HLT exception to halt the CPUs. So, at reboot when initializing the CPUs again, make sure to set all instruction pointers to the firmware entry point, disable any interrupts, disable data and instruction translations, enable PSW_Q bit and tell qemu to unhalt (halted=0) the CPUs again. This fixes the various reboot issues which were seen when rebooting a Linux VM, including the case where even the monarch CPU has been virtually halted from the OS (e.g. via "chcpu -d 0" inside the Linux VM). Signed-off-by: Helge Deller (cherry picked from commit 50ba97e928b44ff5bc731c9ffe68d86acbe44639) Signed-off-by: Michael Tokarev --- hw/hppa/machine.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/hw/hppa/machine.c b/hw/hppa/machine.c index de1cc7ab71..b54148e5fb 100644 --- a/hw/hppa/machine.c +++ b/hw/hppa/machine.c @@ -418,10 +418,16 @@ static void hppa_machine_reset(MachineState *ms, ShutdownCause reason) /* Start all CPUs at the firmware entry point. * Monarch CPU will initialize firmware, secondary CPUs - * will enter a small idle look and wait for rendevouz. */ + * will enter a small idle loop and wait for rendevouz. */ for (i = 0; i < smp_cpus; i++) { - cpu_set_pc(CPU(cpu[i]), firmware_entry); + CPUState *cs = CPU(cpu[i]); + + cpu_set_pc(cs, firmware_entry); + cpu[i]->env.psw = PSW_Q; cpu[i]->env.gr[5] = CPU_HPA + i * 0x1000; + + cs->exception_index = -1; + cs->halted = 0; } /* already initialized by machine_hppa_init()? */ From 51c48a919d364ce49b544bf8567256ce356d6c13 Mon Sep 17 00:00:00 2001 From: Helge Deller Date: Sat, 24 Jun 2023 00:28:44 +0200 Subject: [PATCH 161/174] target/hppa: Provide qemu version via fw_cfg to firmware Give current QEMU version string to SeaBIOS-hppa via fw_cfg interface so that the firmware can show the QEMU version in the boot menu info. Signed-off-by: Helge Deller (cherry picked from commit 069d296669448b9eef72c6332ae84af962d9582c) Signed-off-by: Michael Tokarev --- hw/hppa/machine.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/hw/hppa/machine.c b/hw/hppa/machine.c index b54148e5fb..98a78b84b4 100644 --- a/hw/hppa/machine.c +++ b/hw/hppa/machine.c @@ -123,6 +123,7 @@ static FWCfgState *create_fw_cfg(MachineState *ms) { FWCfgState *fw_cfg; uint64_t val; + const char qemu_version[] = QEMU_VERSION; fw_cfg = fw_cfg_init_mem(FW_CFG_IO_BASE, FW_CFG_IO_BASE + 4); fw_cfg_add_i16(fw_cfg, FW_CFG_NB_CPUS, ms->smp.cpus); @@ -148,6 +149,10 @@ static FWCfgState *create_fw_cfg(MachineState *ms) fw_cfg_add_i16(fw_cfg, FW_CFG_BOOT_DEVICE, ms->boot_config.order[0]); qemu_register_boot_set(fw_cfg_boot_set, fw_cfg); + fw_cfg_add_file(fw_cfg, "/etc/qemu-version", + g_memdup(qemu_version, sizeof(qemu_version)), + sizeof(qemu_version)); + return fw_cfg; } From 7b7474947fcf922a31368f17dfc24f59079342d1 Mon Sep 17 00:00:00 2001 From: Helge Deller Date: Tue, 20 Jun 2023 21:39:47 +0200 Subject: [PATCH 162/174] target/hppa: New SeaBIOS-hppa version 7 Update SeaBIOS-hppa to version 7 which fixes a boot problem with Debian-12 install CD images. The problem with Debian-12 is, that the ramdisc got bigger than what the firmware could load in one call to the LSI scsi driver. Signed-off-by: Helge Deller (cherry picked from commit bb9c998ca9343d445c76b69fa15dea9db692f526) Signed-off-by: Michael Tokarev (Mjt: pick this one before picking next 34ec3aea54368a92b6 "SeaBIOS-hppa version 8") --- pc-bios/hppa-firmware.img | Bin 719368 -> 719376 bytes roms/seabios-hppa | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/pc-bios/hppa-firmware.img b/pc-bios/hppa-firmware.img index b2cbb71ee0f91623d038db04d6900a5ed17472a6..e7660b0458b78b101c7ed2dc17595e94438ffeb8 100644 GIT binary patch delta 225597 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

##5g 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 XnV($hqEi_d7z078d!QJ!N|ylu1j9Lb delta 224920 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

1hYq;uE%k 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çgh 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 WKe^OJdl?uQ13@(m6oZx_GXMa=`DY>k diff --git a/roms/seabios-hppa b/roms/seabios-hppa index 458626c4c6..1cfbe76ff6 160000 --- a/roms/seabios-hppa +++ b/roms/seabios-hppa @@ -1 +1 @@ -Subproject commit 458626c4c6441045c0612f24313c7cf1f95e71c6 +Subproject commit 1cfbe76ff625fce9ed5991f7e13d80ffec900f40 From b3a003c8907630e493e47d27e330059b43538c5a Mon Sep 17 00:00:00 2001 From: Helge Deller Date: Sat, 24 Jun 2023 11:45:52 +0200 Subject: [PATCH 163/174] target/hppa: Update to SeaBIOS-hppa version 8 Update SeaBIOS-hppa to version 8. Fixes: - boot of HP-UX with SMP, and - reboot of Linux and HP-UX with SMP Enhancements: - show qemu version in boot menu - adds exit menu entry in boot menu to quit emulation - allow to trace PCD_CHASSIS codes & machine run status Signed-off-by: Helge Deller (cherry picked from commit 34ec3aea54368a92b62a55c656335885ba8c65ef) Signed-off-by: Michael Tokarev --- pc-bios/hppa-firmware.img | Bin 719376 -> 720216 bytes roms/seabios-hppa | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/pc-bios/hppa-firmware.img b/pc-bios/hppa-firmware.img index e7660b0458b78b101c7ed2dc17595e94438ffeb8..0fa3808f163ea60766272188a634d9296f2b5be4 100644 GIT binary patch delta 356358 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%0A>Ia8Hlq5V1_vuAn-Z%G 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%0D5fXZ!itp^797ag+fhs=Z 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,+KrOgBY7IMYB2iFS47^ny6sKxkjlS{OQIe$Ey! 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

puV~i1HHSO_|RiGlBj_!(9P#xi& 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

Xw5zi3|*NHyIe}K!g7? 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 E058kfJ^%m! diff --git a/roms/seabios-hppa b/roms/seabios-hppa index 1cfbe76ff6..673d2595d4 160000 --- a/roms/seabios-hppa +++ b/roms/seabios-hppa @@ -1 +1 @@ -Subproject commit 1cfbe76ff625fce9ed5991f7e13d80ffec900f40 +Subproject commit 673d2595d4f773cc266cbf8dbaf2f475a6adb949 From f3b7f02c3b85219d3e8fb9b2e8124f35424a4a75 Mon Sep 17 00:00:00 2001 From: Prasad Pandit Date: Mon, 29 May 2023 17:13:32 +0530 Subject: [PATCH 164/174] vhost: release memory_listener object in error path vhost_dev_start function does not release memory_listener object in case of an error. This may crash the guest when vhost is unable to set memory table: stack trace of thread 125653: Program terminated with signal SIGSEGV, Segmentation fault #0 memory_listener_register (qemu-kvm + 0x6cda0f) #1 vhost_dev_start (qemu-kvm + 0x699301) #2 vhost_net_start (qemu-kvm + 0x45b03f) #3 virtio_net_set_status (qemu-kvm + 0x665672) #4 qmp_set_link (qemu-kvm + 0x548fd5) #5 net_vhost_user_event (qemu-kvm + 0x552c45) #6 tcp_chr_connect (qemu-kvm + 0x88d473) #7 tcp_chr_new_client (qemu-kvm + 0x88cf83) #8 tcp_chr_accept (qemu-kvm + 0x88b429) #9 qio_net_listener_channel_func (qemu-kvm + 0x7ac07c) #10 g_main_context_dispatch (libglib-2.0.so.0 + 0x54e2f) Release memory_listener objects in the error path. Signed-off-by: Prasad Pandit Message-Id: <20230529114333.31686-2-ppandit@redhat.com> Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Reviewed-by: Peter Xu Fixes: c471ad0e9b ("vhost_net: device IOTLB support") Cc: qemu-stable@nongnu.org Acked-by: Jason Wang (cherry picked from commit 1e3ffb34f764f8ac4c003b2b2e6a775b2b073a16) Signed-off-by: Michael Tokarev --- hw/virtio/vhost.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/hw/virtio/vhost.c b/hw/virtio/vhost.c index fdcd1a8fdf..f38997b3f6 100644 --- a/hw/virtio/vhost.c +++ b/hw/virtio/vhost.c @@ -1934,6 +1934,9 @@ fail_vq: } fail_mem: + if (vhost_dev_has_iommu(hdev)) { + memory_listener_unregister(&hdev->iommu_listener); + } fail_features: vdev->vhost_started = false; hdev->started = false; From bc1a3a177482fada68c08efcc9580b01fa1c7a45 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eugenio=20P=C3=A9rez?= Date: Fri, 2 Jun 2023 19:34:51 +0200 Subject: [PATCH 165/174] vdpa: fix not using CVQ buffer in case of error MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bug introducing when refactoring. Otherway, the guest never received the used buffer. Fixes: be4278b65fc1 ("vdpa: extract vhost_vdpa_net_cvq_add from vhost_vdpa_net_handle_ctrl_avail") Signed-off-by: Eugenio Pérez Message-Id: <20230602173451.1917999-1-eperezma@redhat.com> Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Acked-by: Jason Wang Tested-by: Lei Yang (cherry picked from commit d45243bcfc61a3c34f96a4fc34bffcb9929daba0) Signed-off-by: Michael Tokarev --- net/vhost-vdpa.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/net/vhost-vdpa.c b/net/vhost-vdpa.c index 2b4b85d8f8..71a7dd1586 100644 --- a/net/vhost-vdpa.c +++ b/net/vhost-vdpa.c @@ -500,7 +500,7 @@ static int vhost_vdpa_net_handle_ctrl_avail(VhostShadowVirtqueue *svq, } if (*s->status != VIRTIO_NET_OK) { - return VIRTIO_NET_ERR; + goto out; } status = VIRTIO_NET_ERR; From 3d12598b74ed4bcc6db8b50818a95c4b770d4487 Mon Sep 17 00:00:00 2001 From: Ani Sinha Date: Mon, 19 Jun 2023 12:22:09 +0530 Subject: [PATCH 166/174] vhost-vdpa: do not cleanup the vdpa/vhost-net structures if peer nic is present When a peer nic is still attached to the vdpa backend, it is too early to free up the vhost-net and vdpa structures. If these structures are freed here, then QEMU crashes when the guest is being shut down. The following call chain would result in an assertion failure since the pointer returned from vhost_vdpa_get_vhost_net() would be NULL: do_vm_stop() -> vm_state_notify() -> virtio_set_status() -> virtio_net_vhost_status() -> get_vhost_net(). Therefore, we defer freeing up the structures until at guest shutdown time when qemu_cleanup() calls net_cleanup() which then calls qemu_del_net_client() which would eventually call vhost_vdpa_cleanup() again to free up the structures. This time, the loop in net_cleanup() ensures that vhost_vdpa_cleanup() will be called one last time when all the peer nics are detached and freed. All unit tests pass with this change. CC: imammedo@redhat.com CC: jusual@redhat.com CC: mst@redhat.com Fixes: CVE-2023-3301 Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=2128929 Signed-off-by: Ani Sinha Message-Id: <20230619065209.442185-1-anisinha@redhat.com> Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin (cherry picked from commit a0d7215e339b61c7d7a7b3fcf754954d80d93eb8) Signed-off-by: Michael Tokarev (Mjt: context change for stable-7.2) --- net/vhost-vdpa.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/net/vhost-vdpa.c b/net/vhost-vdpa.c index 71a7dd1586..acdf3cb96c 100644 --- a/net/vhost-vdpa.c +++ b/net/vhost-vdpa.c @@ -160,6 +160,14 @@ static void vhost_vdpa_cleanup(NetClientState *nc) VhostVDPAState *s = DO_UPCAST(VhostVDPAState, nc, nc); struct vhost_dev *dev = &s->vhost_net->dev; + /* + * If a peer NIC is attached, do not cleanup anything. + * Cleanup will happen as a part of qemu_cleanup() -> net_cleanup() + * when the guest is shutting down. + */ + if (nc->peer && nc->peer->info->type == NET_CLIENT_DRIVER_NIC) { + return; + } qemu_vfree(s->cvq_cmd_out_buffer); qemu_vfree(s->status); if (dev->vq_index + dev->nvqs == dev->vq_index_end) { From 44acbc773659a39ba9aecdaf39441ad369d2f596 Mon Sep 17 00:00:00 2001 From: Vivek Kasireddy Date: Thu, 22 Jun 2023 23:04:54 -0700 Subject: [PATCH 167/174] virtio-gpu: Make non-gl display updates work again when blob=true MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit In the case where the console does not have gl capability, and if blob is set to true, make sure that the display updates still work. Commit e86a93f55463 accidentally broke this by misplacing the return statement (in resource_flush) causing the updates to be silently ignored. Fixes: e86a93f55463 ("virtio-gpu: splitting one extended mode guest fb into n-scanouts") Cc: Gerd Hoffmann Cc: Marc-André Lureau Cc: Dongwon Kim Signed-off-by: Vivek Kasireddy Reviewed-by: Marc-André Lureau Message-ID: <20230623060454.3749910-1-vivek.kasireddy@intel.com> (cherry picked from commit 34e29d85a7734802317c4cac9ad52b10d461c1dc) Signed-off-by: Michael Tokarev --- hw/display/virtio-gpu.c | 27 ++++++++++++++++++++++----- 1 file changed, 22 insertions(+), 5 deletions(-) diff --git a/hw/display/virtio-gpu.c b/hw/display/virtio-gpu.c index 5e15c79b94..4e2e0dd53a 100644 --- a/hw/display/virtio-gpu.c +++ b/hw/display/virtio-gpu.c @@ -498,6 +498,8 @@ static void virtio_gpu_resource_flush(VirtIOGPU *g, struct virtio_gpu_resource_flush rf; struct virtio_gpu_scanout *scanout; pixman_region16_t flush_region; + bool within_bounds = false; + bool update_submitted = false; int i; VIRTIO_GPU_FILL_CMD(rf); @@ -518,13 +520,28 @@ static void virtio_gpu_resource_flush(VirtIOGPU *g, rf.r.x < scanout->x + scanout->width && rf.r.x + rf.r.width >= scanout->x && rf.r.y < scanout->y + scanout->height && - rf.r.y + rf.r.height >= scanout->y && - console_has_gl(scanout->con)) { - dpy_gl_update(scanout->con, 0, 0, scanout->width, - scanout->height); + rf.r.y + rf.r.height >= scanout->y) { + within_bounds = true; + + if (console_has_gl(scanout->con)) { + dpy_gl_update(scanout->con, 0, 0, scanout->width, + scanout->height); + update_submitted = true; + } } } - return; + + if (update_submitted) { + return; + } + if (!within_bounds) { + qemu_log_mask(LOG_GUEST_ERROR, "%s: flush bounds outside scanouts" + " bounds for flush %d: %d %d %d %d\n", + __func__, rf.resource_id, rf.r.x, rf.r.y, + rf.r.width, rf.r.height); + cmd->error = VIRTIO_GPU_RESP_ERR_INVALID_PARAMETER; + return; + } } if (!res->blob && From f8e3b3290c83c20ed873e5d289c8d2c7f6f46fd3 Mon Sep 17 00:00:00 2001 From: Nicholas Piggin Date: Tue, 27 Jun 2023 16:14:06 +1000 Subject: [PATCH 168/174] icount: don't adjust virtual time backwards after warp The icount-based QEMU_CLOCK_VIRTUAL runs ahead of the RT clock at times. When warping, it is possible it is still ahead at the end of the warp, which causes icount adaptive mode to adjust it backward. This can result in the machine observing time going backwards. Prevent this by clamping adaptive adjustment to 0 at minimum. Signed-off-by: Nicholas Piggin Message-ID: <20230627061406.241847-1-npiggin@gmail.com> Cc: qemu-stable@nongnu.org Signed-off-by: Paolo Bonzini (cherry picked from commit 67f85346ca9305d9fb3254ceff735ceaadeb0911) Signed-off-by: Michael Tokarev --- softmmu/icount.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/softmmu/icount.c b/softmmu/icount.c index 4504433e16..a5cef9c60a 100644 --- a/softmmu/icount.c +++ b/softmmu/icount.c @@ -259,11 +259,16 @@ static void icount_warp_rt(void) warp_delta = clock - timers_state.vm_clock_warp_start; if (icount_enabled() == 2) { /* - * In adaptive mode, do not let QEMU_CLOCK_VIRTUAL run too - * far ahead of real time. + * In adaptive mode, do not let QEMU_CLOCK_VIRTUAL run too far + * ahead of real time (it might already be ahead so careful not + * to go backwards). */ int64_t cur_icount = icount_get_locked(); int64_t delta = clock - cur_icount; + + if (delta < 0) { + delta = 0; + } warp_delta = MIN(warp_delta, delta); } qatomic_set_i64(&timers_state.qemu_icount_bias, From 78c4994e94477b2e438cc5b4fef2ea2a0599f7f3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eugenio=20P=C3=A9rez?= Date: Fri, 2 Jun 2023 19:33:28 +0200 Subject: [PATCH 169/174] vdpa: mask _F_CTRL_GUEST_OFFLOADS for vhost vdpa devices MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit QEMU does not emulate it so it must be disabled as long as the backend does not support it. Signed-off-by: Eugenio Pérez Message-Id: <20230602173328.1917385-1-eperezma@redhat.com> Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Acked-by: Jason Wang Tested-by: Lei Yang (cherry picked from commit 51e84244a7799172f4239482199e9b4bdcd23172) Signed-off-by: Michael Tokarev --- net/vhost-vdpa.c | 1 + 1 file changed, 1 insertion(+) diff --git a/net/vhost-vdpa.c b/net/vhost-vdpa.c index acdf3cb96c..e533f8a348 100644 --- a/net/vhost-vdpa.c +++ b/net/vhost-vdpa.c @@ -49,6 +49,7 @@ const int vdpa_feature_bits[] = { VIRTIO_F_VERSION_1, VIRTIO_NET_F_CSUM, VIRTIO_NET_F_GUEST_CSUM, + VIRTIO_NET_F_CTRL_GUEST_OFFLOADS, VIRTIO_NET_F_GSO, VIRTIO_NET_F_GUEST_TSO4, VIRTIO_NET_F_GUEST_TSO6, From 4d8459c36596c881db28319044aef8145ef91819 Mon Sep 17 00:00:00 2001 From: Nicholas Piggin Date: Tue, 30 May 2023 23:12:12 +1000 Subject: [PATCH 170/174] target/ppc: Fix decrementer time underflow and infinite timer loop It is possible to store a very large value to the decrementer that it does not raise the decrementer exception so the timer is scheduled, but the next time value wraps and is treated as in the past. This can occur if (u64)-1 is stored on a zero-triggered exception, or (u64)-1 is stored twice on an underflow-triggered exception, for example. If such a value is set in DECAR, it gets stored to the decrementer by the timer function, which then immediately causes another timer, which hangs QEMU. Clamp the decrementer to the implemented width, and use that as the value for the timer calculation, effectively preventing this overflow. Reported-by: sdicaro@DDCI.com Signed-off-by: Nicholas Piggin Reviewed-by: Daniel Henrique Barboza Message-Id: <20230530131214.373524-1-npiggin@gmail.com> Signed-off-by: Daniel Henrique Barboza (cherry picked from commit 09d2db9f46e38e2da990df8ad914d735d764251a) Signed-off-by: Michael Tokarev --- hw/ppc/ppc.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/hw/ppc/ppc.c b/hw/ppc/ppc.c index dc86c1c7db..fbdc48911e 100644 --- a/hw/ppc/ppc.c +++ b/hw/ppc/ppc.c @@ -806,6 +806,8 @@ static void __cpu_ppc_store_decr(PowerPCCPU *cpu, uint64_t *nextp, int64_t signed_decr; /* Truncate value to decr_width and sign extend for simplicity */ + value = extract64(value, 0, nr_bits); + decr = extract64(decr, 0, nr_bits); signed_value = sextract64(value, 0, nr_bits); signed_decr = sextract64(decr, 0, nr_bits); From c7b6b705efe583964ceacb1fba66a0d06cba8325 Mon Sep 17 00:00:00 2001 From: Zhenzhong Duan Date: Thu, 29 Jun 2023 16:40:38 +0800 Subject: [PATCH 171/174] vfio/pci: Fix a segfault in vfio_realize MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The kvm irqchip notifier is only registered if the device supports INTx, however it's unconditionally removed in vfio realize error path. If the assigned device does not support INTx, this will cause QEMU to crash when vfio realize fails. Change it to conditionally remove the notifier only if the notify hook is setup. Before fix: (qemu) device_add vfio-pci,host=81:11.1,id=vfio1,bus=root1,xres=1 Connection closed by foreign host. After fix: (qemu) device_add vfio-pci,host=81:11.1,id=vfio1,bus=root1,xres=1 Error: vfio 0000:81:11.1: xres and yres properties require display=on (qemu) Fixes: c5478fea27ac ("vfio/pci: Respond to KVM irqchip change notifier") Signed-off-by: Zhenzhong Duan Reviewed-by: Cédric Le Goater Reviewed-by: Joao Martins Signed-off-by: Cédric Le Goater (cherry picked from commit 357bd7932a136613d700ee8bc83e9165f059d1f7) Signed-off-by: Michael Tokarev --- hw/vfio/pci.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/hw/vfio/pci.c b/hw/vfio/pci.c index 939dcc3d4a..63eda94af7 100644 --- a/hw/vfio/pci.c +++ b/hw/vfio/pci.c @@ -3159,7 +3159,9 @@ static void vfio_realize(PCIDevice *pdev, Error **errp) out_deregister: pci_device_set_intx_routing_notifier(&vdev->pdev, NULL); - kvm_irqchip_remove_change_notifier(&vdev->irqchip_change_notifier); + if (vdev->irqchip_change_notifier.notify) { + kvm_irqchip_remove_change_notifier(&vdev->irqchip_change_notifier); + } out_teardown: vfio_teardown_msi(vdev); vfio_bars_exit(vdev); From 3b1b9aa4d53678c9f96067fb60f94ab28bb15d75 Mon Sep 17 00:00:00 2001 From: Shameer Kolothum Date: Tue, 13 Jun 2023 15:09:43 +0100 Subject: [PATCH 172/174] vfio/pci: Call vfio_prepare_kvm_msi_virq_batch() in MSI retry path MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit When vfio_enable_vectors() returns with less than requested nr_vectors we retry with what kernel reported back. But the retry path doesn't call vfio_prepare_kvm_msi_virq_batch() and this results in, qemu-system-aarch64: vfio: Error: Failed to enable 4 MSI vectors, retry with 1 qemu-system-aarch64: ../hw/vfio/pci.c:602: vfio_commit_kvm_msi_virq_batch: Assertion `vdev->defer_kvm_irq_routing' failed Fixes: dc580d51f7dd ("vfio: defer to commit kvm irq routing when enable msi/msix") Reviewed-by: Longpeng Signed-off-by: Shameer Kolothum Reviewed-by: Cédric Le Goater Signed-off-by: Cédric Le Goater (cherry picked from commit c17408892319712c12357e5d1c6b305499c58c2a) Signed-off-by: Michael Tokarev --- hw/vfio/pci.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/hw/vfio/pci.c b/hw/vfio/pci.c index 63eda94af7..92a45de4c3 100644 --- a/hw/vfio/pci.c +++ b/hw/vfio/pci.c @@ -663,6 +663,8 @@ static void vfio_msi_enable(VFIOPCIDevice *vdev) vfio_disable_interrupts(vdev); + vdev->nr_vectors = msi_nr_vectors_allocated(&vdev->pdev); +retry: /* * Setting vector notifiers needs to enable route for each vector. * Deferring to commit the KVM routes once rather than per vector @@ -670,8 +672,6 @@ static void vfio_msi_enable(VFIOPCIDevice *vdev) */ vfio_prepare_kvm_msi_virq_batch(vdev); - vdev->nr_vectors = msi_nr_vectors_allocated(&vdev->pdev); -retry: vdev->msi_vectors = g_new0(VFIOMSIVector, vdev->nr_vectors); for (i = 0; i < vdev->nr_vectors; i++) { From 5cc60b67d32d4353e1fef74ba4f31f687094e24f Mon Sep 17 00:00:00 2001 From: Dongwon Kim Date: Wed, 21 Jun 2023 14:31:50 -0700 Subject: [PATCH 173/174] ui/gtk: set the area of the scanout texture correctly MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit x and y offsets and width and height of the scanout texture is not correctly configured in case guest scanout frame is dmabuf. Cc: Gerd Hoffmann Cc: Marc-André Lureau Cc: Vivek Kasireddy Signed-off-by: Dongwon Kim Message-ID: <20230621213150.29573-1-dongwon.kim@intel.com> (cherry picked from commit 37802a24eb4e535d96d6fe0273505d2b5c6528c2) Signed-off-by: Michael Tokarev --- ui/gtk-egl.c | 3 ++- ui/gtk-gl-area.c | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/ui/gtk-egl.c b/ui/gtk-egl.c index 19130041bc..e99e3b0d8c 100644 --- a/ui/gtk-egl.c +++ b/ui/gtk-egl.c @@ -257,7 +257,8 @@ void gd_egl_scanout_dmabuf(DisplayChangeListener *dcl, gd_egl_scanout_texture(dcl, dmabuf->texture, dmabuf->y0_top, dmabuf->width, dmabuf->height, - 0, 0, dmabuf->width, dmabuf->height); + dmabuf->x, dmabuf->y, dmabuf->scanout_width, + dmabuf->scanout_height); if (dmabuf->allow_fences) { vc->gfx.guest_fb.dmabuf = dmabuf; diff --git a/ui/gtk-gl-area.c b/ui/gtk-gl-area.c index c384a1516b..1605818bd1 100644 --- a/ui/gtk-gl-area.c +++ b/ui/gtk-gl-area.c @@ -299,7 +299,8 @@ void gd_gl_area_scanout_dmabuf(DisplayChangeListener *dcl, gd_gl_area_scanout_texture(dcl, dmabuf->texture, dmabuf->y0_top, dmabuf->width, dmabuf->height, - 0, 0, dmabuf->width, dmabuf->height); + dmabuf->x, dmabuf->y, dmabuf->scanout_width, + dmabuf->scanout_height); if (dmabuf->allow_fences) { vc->gfx.guest_fb.dmabuf = dmabuf; From 681858ea14242d3b509b77e0179f7f63c99032bb Mon Sep 17 00:00:00 2001 From: Michael Tokarev Date: Sun, 9 Jul 2023 00:33:17 +0300 Subject: [PATCH 174/174] Update version for 7.2.4 release Signed-off-by: Michael Tokarev --- VERSION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/VERSION b/VERSION index 429dc57af3..2bbaead448 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -7.2.3 +7.2.4