History log of /openbmc/qemu/target/arm/tcg/ (Results 1 – 25 of 357)
Revision Date Author Comments
(<<< Hide modified files)
(Show modified files >>>)
a820a85a12-Nov-2024 Richard Henderson <richard.henderson@linaro.org>

target/arm: Drop user-only special case in sve_stN_r

This path is reachable with plugins enabled, and provoked
with run-plugin-catch-syscalls-with-libinline.so.

Cc: qemu-stable@nongnu.org
Reviewed-

target/arm: Drop user-only special case in sve_stN_r

This path is reachable with plugins enabled, and provoked
with run-plugin-catch-syscalls-with-libinline.so.

Cc: qemu-stable@nongnu.org
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Message-ID: <20241112141232.321354-1-richard.henderson@linaro.org>
(cherry picked from commit f27550804688da43c6e0d87b2f9e143adbf76271)
Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>

show more ...

5e29203b05-Nov-2024 Peter Maydell <peter.maydell@linaro.org>

target/arm: Fix SVE SDOT/UDOT/USDOT (4-way, indexed)

Our implementation of the indexed version of SVE SDOT/UDOT/USDOT got
the calculation of the inner loop terminator wrong. Although we
correctly a

target/arm: Fix SVE SDOT/UDOT/USDOT (4-way, indexed)

Our implementation of the indexed version of SVE SDOT/UDOT/USDOT got
the calculation of the inner loop terminator wrong. Although we
correctly account for the element size when we calculate the
terminator for the first iteration:
intptr_t segend = MIN(16 / sizeof(TYPED), opr_sz_n);
we don't do that when we move it forward after the first inner loop
completes. The intention is that we process the vector in 128-bit
segments, which for a 64-bit element size should mean (1, 2), (3, 4),
(5, 6), etc. This bug meant that we would iterate (1, 2), (3, 4, 5,
6), (7, 8, 9, 10) etc and apply the wrong indexed element to some of
the operations, and also index off the end of the vector.

You don't see this bug if the vector length is small enough that we
don't need to iterate the outer loop, i.e. if it is only 128 bits,
or if it is the 64-bit special case from AA32/AA64 AdvSIMD. If the
vector length is 256 bits then we calculate the right results for the
elements in the vector but do index off the end of the vector. Vector
lengths greater than 256 bits see wrong answers. The instructions
that produce 32-bit results behave correctly.

Fix the recalculation of 'segend' for subsequent iterations, and
restore a version of the comment that was lost in the refactor of
commit 7020ffd656a5 that explains why we only need to clamp segend to
opr_sz_n for the first iteration, not the later ones.

Cc: qemu-stable@nongnu.org
Resolves: https://gitlab.com/qemu-project/qemu/-/issues/2595
Fixes: 7020ffd656a5 ("target/arm: Macroize helper_gvec_{s,u}dot_idx_{b,h}")
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-id: 20241101185544.2130972-1-peter.maydell@linaro.org
(cherry picked from commit e6b2fa1b81ac6b05c4397237c846a295a9857920)
Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>

show more ...

6d62f30905-Nov-2024 Peter Maydell <peter.maydell@linaro.org>

target/arm: Add new MMU indexes for AArch32 Secure PL1&0

Our current usage of MMU indexes when EL3 is AArch32 is confused.
Architecturally, when EL3 is AArch32, all Secure code runs under the
Secure

target/arm: Add new MMU indexes for AArch32 Secure PL1&0

Our current usage of MMU indexes when EL3 is AArch32 is confused.
Architecturally, when EL3 is AArch32, all Secure code runs under the
Secure PL1&0 translation regime:
* code at EL3, which might be Mon, or SVC, or any of the
other privileged modes (PL1)
* code at EL0 (Secure PL0)

This is different from when EL3 is AArch64, in which case EL3 is its
own translation regime, and EL1 and EL0 (whether AArch32 or AArch64)
have their own regime.

We claimed to be mapping Secure PL1 to our ARMMMUIdx_EL3, but didn't
do anything special about Secure PL0, which meant it used the same
ARMMMUIdx_EL10_0 that NonSecure PL0 does. This resulted in a bug
where arm_sctlr() incorrectly picked the NonSecure SCTLR as the
controlling register when in Secure PL0, which meant we were
spuriously generating alignment faults because we were looking at the
wrong SCTLR control bits.

The use of ARMMMUIdx_EL3 for Secure PL1 also resulted in the bug that
we wouldn't honour the PAN bit for Secure PL1, because there's no
equivalent _PAN mmu index for it.

Fix this by adding two new MMU indexes:
* ARMMMUIdx_E30_0 is for Secure PL0
* ARMMMUIdx_E30_3_PAN is for Secure PL1 when PAN is enabled
The existing ARMMMUIdx_E3 is used to mean "Secure PL1 without PAN"
(and would be named ARMMMUIdx_E30_3 in an AArch32-centric scheme).

These extra two indexes bring us up to the maximum of 16 that the
core code can currently support.

This commit:
* adds the new MMU index handling to the various places
where we deal in MMU index values
* adds assertions that we aren't AArch32 EL3 in a couple of
places that currently use the E10 indexes, to document why
they don't also need to handle the E30 indexes
* documents in a comment why regime_has_2_ranges() doesn't need
updating

Notes for backporting: this commit depends on the preceding revert of
4c2c04746932; that revert and this commit should probably be
backported to everywhere that we originally backported 4c2c04746932.

Cc: qemu-stable@nongnu.org
Resolves: https://gitlab.com/qemu-project/qemu/-/issues/2326
Resolves: https://gitlab.com/qemu-project/qemu/-/issues/2588
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Tested-by: Thomas Huth <thuth@redhat.com>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-id: 20241101142845.1712482-3-peter.maydell@linaro.org
(cherry picked from commit efbe180ad2ed75d4cc64dfc6fb46a015eef713d1)
Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>

show more ...

f147ed3705-Nov-2024 Peter Maydell <peter.maydell@linaro.org>

Revert "target/arm: Fix usage of MMU indexes when EL3 is AArch32"

This reverts commit 4c2c0474693229c1f533239bb983495c5427784d.

This commit tried to fix a problem with our usage of MMU indexes when

Revert "target/arm: Fix usage of MMU indexes when EL3 is AArch32"

This reverts commit 4c2c0474693229c1f533239bb983495c5427784d.

This commit tried to fix a problem with our usage of MMU indexes when
EL3 is AArch32, using what it described as a "more complicated
approach" where we share the same MMU index values for Secure PL1&0
and NonSecure PL1&0. In theory this should work, but the change
didn't account for (at least) two things:

(1) The design change means we need to flush the TLBs at any point
where the CPU state flips from one to the other. We already flush
the TLB when SCR.NS is changed, but we don't flush the TLB when we
take an exception from NS PL1&0 into Mon or when we return from Mon
to NS PL1&0, and the commit didn't add any code to do that.

(2) The ATS12NS* address translate instructions allow Mon code (which
is Secure) to do a stage 1+2 page table walk for NS. I thought this
was OK because do_ats_write() does a page table walk which doesn't
use the TLBs, so because it can pass both the MMU index and also an
ARMSecuritySpace argument we can tell the table walk that we want NS
stage1+2, not S. But that means that all the code within the ptw
that needs to find e.g. the regime EL cannot do so only with an
mmu_idx -- all these functions like regime_sctlr(), regime_el(), etc
would need to pass both an mmu_idx and the security_space, so they
can tell whether this is a translation regime controlled by EL1 or
EL3 (and so whether to look at SCTLR.S or SCTLR.NS, etc).

In particular, because regime_el() wasn't updated to look at the
ARMSecuritySpace it would return 1 even when the CPU was in Monitor
mode (and the controlling EL is 3). This meant that page table walks
in Monitor mode would look at the wrong SCTLR, TCR, etc and would
generally fault when they should not.

Rather than trying to make the complicated changes needed to rescue
the design of 4c2c04746932, we revert it in order to instead take the
route that that commit describes as "the most straightforward" fix,
where we add new MMU indexes EL30_0, EL30_3, EL30_3_PAN to correspond
to "Secure PL1&0 at PL0", "Secure PL1&0 at PL1", and "Secure PL1&0 at
PL1 with PAN".

This revert will re-expose the "spurious alignment faults in
Secure PL0" issue #2326; we'll fix it again in the next commit.

Cc: qemu-stable@nongnu.org
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Tested-by: Thomas Huth <thuth@redhat.com>
Message-id: 20241101142845.1712482-2-peter.maydell@linaro.org
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
(cherry picked from commit 056c5c90c171c4895b407af0cf3d198e1d44b40f)
Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>

show more ...

10eb372129-Oct-2024 Ido Plat <ido.plat1@ibm.com>

target/arm: Fix arithmetic underflow in SETM instruction

Pass the stage size to step function callback, otherwise do_setm
would hang when size is larger then page size because stage size
would under

target/arm: Fix arithmetic underflow in SETM instruction

Pass the stage size to step function callback, otherwise do_setm
would hang when size is larger then page size because stage size
would underflow. This fix changes do_setm to be more inline with
do_setp.

Cc: qemu-stable@nongnu.org
Fixes: 0e92818887dee ("target/arm: Implement the SET* instructions")
Signed-off-by: Ido Plat <ido.plat1@ibm.com>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-id: 20241025024909.799989-1-ido.plat1@ibm.com
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
(cherry picked from commit bab209af35037b33f7eb1b8a3737085935bec3a3)
Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>

show more ...


/openbmc/qemu/.gitlab-ci.d/check-dco.py
/openbmc/qemu/.gitlab-ci.d/check-patch.py
/openbmc/qemu/VERSION
/openbmc/qemu/accel/kvm/kvm-all.c
/openbmc/qemu/accel/kvm/trace-events
/openbmc/qemu/accel/tcg/plugin-gen.c
/openbmc/qemu/block/copy-before-write.c
/openbmc/qemu/block/raw-format.c
/openbmc/qemu/block/reqlist.c
/openbmc/qemu/hw/audio/hda-codec.c
/openbmc/qemu/hw/char/pl011.c
/openbmc/qemu/hw/display/virtio-gpu.c
/openbmc/qemu/hw/intc/arm_gicv3_cpuif.c
/openbmc/qemu/hw/loongarch/virt.c
/openbmc/qemu/hw/mips/jazz.c
/openbmc/qemu/hw/sd/omap_mmc.c
/openbmc/qemu/hw/sd/sd.c
/openbmc/qemu/hw/sh4/r2d.c
/openbmc/qemu/hw/vfio/migration.c
/openbmc/qemu/include/hw/sd/sd.h
/openbmc/qemu/include/sysemu/kvm_int.h
/openbmc/qemu/include/ui/qemu-pixman.h
/openbmc/qemu/linux-user/elfload.c
/openbmc/qemu/linux-user/flatload.c
/openbmc/qemu/linux-user/ppc/signal.c
/openbmc/qemu/linux-user/syscall.c
/openbmc/qemu/meson.build
/openbmc/qemu/migration/multifd-uadk.c
/openbmc/qemu/net/colo-compare.c
/openbmc/qemu/net/meson.build
/openbmc/qemu/net/net.c
/openbmc/qemu/net/tap-win32.c
/openbmc/qemu/target/arm/internals.h
/openbmc/qemu/target/arm/ptw.c
helper-a64.c
/openbmc/qemu/target/hppa/cpu.h
/openbmc/qemu/target/i386/tcg/decode-new.c.inc
/openbmc/qemu/target/i386/tcg/seg_helper.c
/openbmc/qemu/target/i386/tcg/sysemu/excp_helper.c
/openbmc/qemu/target/m68k/translate.c
/openbmc/qemu/target/ppc/machine.c
/openbmc/qemu/target/ppc/translate/vsx-impl.c.inc
/openbmc/qemu/tcg/ppc/tcg-target.c.inc
/openbmc/qemu/tcg/s390x/tcg-target.c.inc
/openbmc/qemu/tcg/tcg-op-gvec.c
/openbmc/qemu/tcg/tcg.c
/openbmc/qemu/tests/docker/dockerfiles/debian-loongarch-cross.docker
/openbmc/qemu/tests/docker/dockerfiles/debian-mips64el-cross.docker
/openbmc/qemu/tests/lcitool/mappings.yml
/openbmc/qemu/tests/lcitool/refresh
/openbmc/qemu/tests/qemu-iotests/211.out
/openbmc/qemu/tests/qtest/tpm-tests.c
/openbmc/qemu/ui/console.c
/openbmc/qemu/ui/dbus-listener.c
/openbmc/qemu/ui/qemu-pixman.c
/openbmc/qemu/ui/vnc.c
/openbmc/qemu/util/qemu-timer.c
03ee5e0c17-Sep-2024 Peter Maydell <peter.maydell@linaro.org>

target/arm: Correct ID_AA64ISAR1_EL1 value for neoverse-v1

The Neoverse-V1 TRM is a bit confused about the layout of the
ID_AA64ISAR1_EL1 register, and so its table 3-6 has the wrong value
for this

target/arm: Correct ID_AA64ISAR1_EL1 value for neoverse-v1

The Neoverse-V1 TRM is a bit confused about the layout of the
ID_AA64ISAR1_EL1 register, and so its table 3-6 has the wrong value
for this ID register. Trust instead section 3.2.74's list of which
fields are set.

This means that we stop incorrectly reporting FEAT_XS as present, and
now report the presence of FEAT_BF16.

Cc: qemu-stable@nongnu.org
Reported-by: Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-id: 20240917161337.3012188-1-peter.maydell@linaro.org
(cherry picked from commit 8676007eff04bb4e454bcdf92fab3f855bcc59b3)
Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>

show more ...


/openbmc/qemu/.gitlab-ci.d/base.yml
/openbmc/qemu/.gitlab-ci.d/buildtest.yml
/openbmc/qemu/.gitlab-ci.d/cirrus/build.yml
/openbmc/qemu/.gitlab-ci.d/cirrus/freebsd-13.vars
/openbmc/qemu/.gitlab-ci.d/cirrus/macos-13.vars
/openbmc/qemu/.gitlab-ci.d/cirrus/macos-14.vars
/openbmc/qemu/.gitlab-ci.d/container-cross.yml
/openbmc/qemu/.gitlab-ci.d/crossbuilds.yml
/openbmc/qemu/.gitlab-ci.d/windows.yml
/openbmc/qemu/Makefile
/openbmc/qemu/VERSION
/openbmc/qemu/accel/tcg/tcg-accel-ops-rr.c
/openbmc/qemu/blockdev-nbd.c
/openbmc/qemu/bsd-user/mmap.c
/openbmc/qemu/chardev/char.c
/openbmc/qemu/configure
/openbmc/qemu/contrib/plugins/Makefile
/openbmc/qemu/contrib/plugins/execlog.c
/openbmc/qemu/crypto/cipher-nettle.c.inc
/openbmc/qemu/crypto/pbkdf-gcrypt.c
/openbmc/qemu/crypto/pbkdf-gnutls.c
/openbmc/qemu/crypto/pbkdf.c
/openbmc/qemu/crypto/tlscredspsk.c
/openbmc/qemu/docs/about/emulation.rst
/openbmc/qemu/docs/devel/migration/uadk-compression.rst
/openbmc/qemu/docs/devel/tcg-plugins.rst
/openbmc/qemu/docs/interop/qemu-ga.rst
/openbmc/qemu/docs/sphinx/qapidoc.py
/openbmc/qemu/docs/tools/qemu-vmsr-helper.rst
/openbmc/qemu/hw/arm/smmu-common.c
/openbmc/qemu/hw/audio/trace-events
/openbmc/qemu/hw/audio/virtio-snd.c
/openbmc/qemu/hw/char/stm32l4x5_usart.c
/openbmc/qemu/hw/display/vhost-user-gpu.c
/openbmc/qemu/hw/dma/xilinx_axidma.c
/openbmc/qemu/hw/i386/pc.c
/openbmc/qemu/hw/i386/pc_piix.c
/openbmc/qemu/hw/i386/pc_q35.c
/openbmc/qemu/hw/i386/x86-common.c
/openbmc/qemu/hw/ide/macio.c
/openbmc/qemu/hw/intc/arm_gic.c
/openbmc/qemu/hw/loongarch/acpi-build.c
/openbmc/qemu/hw/mips/loongson3_virt.c
/openbmc/qemu/hw/net/vhost_net.c
/openbmc/qemu/hw/net/virtio-net.c
/openbmc/qemu/hw/nvme/ctrl.c
/openbmc/qemu/hw/pci/pci.c
/openbmc/qemu/hw/ppc/Kconfig
/openbmc/qemu/hw/remote/message.c
/openbmc/qemu/hw/riscv/virt.c
/openbmc/qemu/hw/virtio/virtio-pci.c
/openbmc/qemu/include/exec/memory.h
/openbmc/qemu/include/exec/ramlist.h
/openbmc/qemu/include/hw/pci/pci_device.h
/openbmc/qemu/include/hw/ppc/mac_dbdma.h
/openbmc/qemu/include/sysemu/replay.h
/openbmc/qemu/include/sysemu/runstate.h
/openbmc/qemu/linux-user/mips/target_elf.h
/openbmc/qemu/linux-user/mips64/target_elf.h
/openbmc/qemu/linux-user/mmap.c
/openbmc/qemu/meson.build
/openbmc/qemu/migration/migration.c
/openbmc/qemu/migration/multifd.c
/openbmc/qemu/migration/savevm.c
/openbmc/qemu/net/vhost-vdpa.c
/openbmc/qemu/plugins/core.c
/openbmc/qemu/plugins/meson.build
/openbmc/qemu/po/it.po
/openbmc/qemu/qapi/rocker.json
/openbmc/qemu/qemu-options.hx
/openbmc/qemu/qga/main.c
/openbmc/qemu/replay/replay.c
/openbmc/qemu/scripts/checkpatch.pl
/openbmc/qemu/scripts/ci/setup/ubuntu/ubuntu-2204-aarch64.yaml
/openbmc/qemu/scripts/ci/setup/ubuntu/ubuntu-2204-s390x.yaml
/openbmc/qemu/scripts/replay-dump.py
/openbmc/qemu/system/memory.c
/openbmc/qemu/system/physmem.c
/openbmc/qemu/system/runstate.c
/openbmc/qemu/system/vl.c
cpu64.c
/openbmc/qemu/target/hexagon/meson.build
/openbmc/qemu/target/hppa/cpu.h
/openbmc/qemu/target/hppa/helper.c
/openbmc/qemu/target/i386/cpu.h
/openbmc/qemu/target/i386/kvm/kvm.c
/openbmc/qemu/target/i386/tcg/access.c
/openbmc/qemu/target/i386/tcg/cc_helper.c
/openbmc/qemu/target/i386/tcg/cc_helper_template.h.inc
/openbmc/qemu/target/i386/tcg/decode-new.c.inc
/openbmc/qemu/target/i386/tcg/emit.c.inc
/openbmc/qemu/target/i386/tcg/seg_helper.c
/openbmc/qemu/target/i386/tcg/translate.c
/openbmc/qemu/target/mips/tcg/sysemu/tlb_helper.c
/openbmc/qemu/target/s390x/tcg/translate.c
/openbmc/qemu/target/sparc/insns.decode
/openbmc/qemu/target/sparc/translate.c
/openbmc/qemu/tests/avocado/avocado_qemu/__init__.py
/openbmc/qemu/tests/avocado/boot_linux_console.py
/openbmc/qemu/tests/avocado/intel_iommu.py
/openbmc/qemu/tests/avocado/linux_initrd.py
/openbmc/qemu/tests/avocado/machine_aspeed.py
/openbmc/qemu/tests/avocado/machine_mips_malta.py
/openbmc/qemu/tests/avocado/machine_rx_gdbsim.py
/openbmc/qemu/tests/avocado/ppc_hv_tests.py
/openbmc/qemu/tests/avocado/replay_kernel.py
/openbmc/qemu/tests/avocado/replay_linux.py
/openbmc/qemu/tests/avocado/reverse_debugging.py
/openbmc/qemu/tests/avocado/smmu.py
/openbmc/qemu/tests/docker/dockerfiles/alpine.docker
/openbmc/qemu/tests/docker/dockerfiles/debian-amd64-cross.docker
/openbmc/qemu/tests/docker/dockerfiles/debian-arm64-cross.docker
/openbmc/qemu/tests/docker/dockerfiles/debian-armhf-cross.docker
/openbmc/qemu/tests/docker/dockerfiles/debian-i686-cross.docker
/openbmc/qemu/tests/docker/dockerfiles/debian-mips64el-cross.docker
/openbmc/qemu/tests/docker/dockerfiles/debian-mipsel-cross.docker
/openbmc/qemu/tests/docker/dockerfiles/debian-ppc64el-cross.docker
/openbmc/qemu/tests/docker/dockerfiles/debian-s390x-cross.docker
/openbmc/qemu/tests/docker/dockerfiles/debian.docker
/openbmc/qemu/tests/docker/dockerfiles/fedora-win64-cross.docker
/openbmc/qemu/tests/docker/dockerfiles/fedora.docker
/openbmc/qemu/tests/docker/dockerfiles/opensuse-leap.docker
/openbmc/qemu/tests/docker/dockerfiles/ubuntu2204.docker
/openbmc/qemu/tests/lcitool/projects/qemu.yml
/openbmc/qemu/tests/lcitool/refresh
/openbmc/qemu/tests/qemu-iotests/233.out
/openbmc/qemu/tests/qtest/migration-test.c
/openbmc/qemu/tests/qtest/stm32l4x5_usart-test.c
/openbmc/qemu/tests/tcg/x86_64/Makefile.target
/openbmc/qemu/tests/tcg/x86_64/test-2175.c
/openbmc/qemu/tests/vm/generated/freebsd.json
/openbmc/qemu/ui/sdl2.c
/openbmc/qemu/util/module.c
4c2c047409-Aug-2024 Peter Maydell <peter.maydell@linaro.org>

target/arm: Fix usage of MMU indexes when EL3 is AArch32

Our current usage of MMU indexes when EL3 is AArch32 is confused.
Architecturally, when EL3 is AArch32, all Secure code runs under the
Secure

target/arm: Fix usage of MMU indexes when EL3 is AArch32

Our current usage of MMU indexes when EL3 is AArch32 is confused.
Architecturally, when EL3 is AArch32, all Secure code runs under the
Secure PL1&0 translation regime:
* code at EL3, which might be Mon, or SVC, or any of the
other privileged modes (PL1)
* code at EL0 (Secure PL0)

This is different from when EL3 is AArch64, in which case EL3 is its
own translation regime, and EL1 and EL0 (whether AArch32 or AArch64)
have their own regime.

We claimed to be mapping Secure PL1 to our ARMMMUIdx_EL3, but didn't
do anything special about Secure PL0, which meant it used the same
ARMMMUIdx_EL10_0 that NonSecure PL0 does. This resulted in a bug
where arm_sctlr() incorrectly picked the NonSecure SCTLR as the
controlling register when in Secure PL0, which meant we were
spuriously generating alignment faults because we were looking at the
wrong SCTLR control bits.

The use of ARMMMUIdx_EL3 for Secure PL1 also resulted in the bug that
we wouldn't honour the PAN bit for Secure PL1, because there's no
equivalent _PAN mmu index for it.

We could fix this in one of two ways:
* The most straightforward is to add new MMU indexes EL30_0,
EL30_3, EL30_3_PAN to correspond to "Secure PL1&0 at PL0",
"Secure PL1&0 at PL1", and "Secure PL1&0 at PL1 with PAN".
This matches how we use indexes for the AArch64 regimes, and
preserves propirties like being able to determine the privilege
level from an MMU index without any other information. However
it would add two MMU indexes (we can share one with ARMMMUIdx_EL3),
and we are already using 14 of the 16 the core TLB code permits.

* The more complicated approach is the one we take here. We use
the same MMU indexes (E10_0, E10_1, E10_1_PAN) for Secure PL1&0
than we do for NonSecure PL1&0. This saves on MMU indexes, but
means we need to check in some places whether we're in the
Secure PL1&0 regime or not before we interpret an MMU index.

The changes in this commit were created by auditing all the places
where we use specific ARMMMUIdx_ values, and checking whether they
needed to be changed to handle the new index value usage.

Note for potential stable backports: taking also the previous
(comment-change-only) commit might make the backport easier.

Cc: qemu-stable@nongnu.org
Resolves: https://gitlab.com/qemu-project/qemu/-/issues/2326
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Tested-by: Bernhard Beschow <shentey@gmail.com>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-id: 20240809160430.1144805-3-peter.maydell@linaro.org

show more ...

8e0c9a9e13-Aug-2024 Richard Henderson <richard.henderson@linaro.org>

target/arm: Clear high SVE elements in handle_vec_simd_wshli

AdvSIMD instructions are supposed to zero bits beyond 128.
Affects SSHLL, USHLL, SSHLL2, USHLL2.

Cc: qemu-stable@nongnu.org
Signed-off-b

target/arm: Clear high SVE elements in handle_vec_simd_wshli

AdvSIMD instructions are supposed to zero bits beyond 128.
Affects SSHLL, USHLL, SSHLL2, USHLL2.

Cc: qemu-stable@nongnu.org
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Message-id: 20240717060903.205098-15-richard.henderson@linaro.org
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>

show more ...

64678fc409-Aug-2024 Richard Henderson <richard.henderson@linaro.org>

target/arm: Fix BTI versus CF_PCREL

With pcrel, we cannot check the guarded page bit at translation
time, as different mappings of the same physical page may or may
not have the GP bit set.

Instead

target/arm: Fix BTI versus CF_PCREL

With pcrel, we cannot check the guarded page bit at translation
time, as different mappings of the same physical page may or may
not have the GP bit set.

Instead, add a couple of helpers to check the page at runtime,
after all other filters that might obviate the need for the check.

The set_btype_for_br call must be moved after the gen_a64_set_pc
call to ensure the current pc can still be computed.

Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Message-id: 20240802003028.795476-1-richard.henderson@linaro.org
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>

show more ...


/openbmc/qemu/MAINTAINERS
/openbmc/qemu/VERSION
/openbmc/qemu/block/block-copy.c
/openbmc/qemu/block/monitor/block-hmp-cmds.c
/openbmc/qemu/block/vvfat.c
/openbmc/qemu/blockdev-nbd.c
/openbmc/qemu/docs/pcie_sriov.txt
/openbmc/qemu/docs/specs/pci-ids.rst
/openbmc/qemu/docs/system/index.rst
/openbmc/qemu/gdb-xml/hexagon-core.xml
/openbmc/qemu/hw/block/fdc-isa.c
/openbmc/qemu/hw/block/pflash_cfi01.c
/openbmc/qemu/hw/display/virtio-gpu-gl.c
/openbmc/qemu/hw/i386/amd_iommu.c
/openbmc/qemu/hw/i386/intel_iommu.c
/openbmc/qemu/hw/ide/atapi.c
/openbmc/qemu/hw/ide/pci.c
/openbmc/qemu/hw/intc/Kconfig
/openbmc/qemu/hw/intc/loongarch_ipi.c
/openbmc/qemu/hw/intc/loongson_ipi.c
/openbmc/qemu/hw/intc/loongson_ipi_common.c
/openbmc/qemu/hw/intc/meson.build
/openbmc/qemu/hw/loongarch/Kconfig
/openbmc/qemu/hw/loongarch/virt.c
/openbmc/qemu/hw/net/igb.c
/openbmc/qemu/hw/net/rtl8139.c
/openbmc/qemu/hw/net/virtio-net.c
/openbmc/qemu/hw/nvme/ctrl.c
/openbmc/qemu/hw/pci-host/gt64120.c
/openbmc/qemu/hw/pci/pci.c
/openbmc/qemu/hw/pci/pci_host.c
/openbmc/qemu/hw/pci/pcie_sriov.c
/openbmc/qemu/hw/pci/trace-events
/openbmc/qemu/hw/ppc/spapr_pci.c
/openbmc/qemu/hw/scsi/scsi-disk.c
/openbmc/qemu/hw/sd/sd.c
/openbmc/qemu/hw/sd/sdhci.c
/openbmc/qemu/hw/virtio/virtio-net-pci.c
/openbmc/qemu/hw/virtio/virtio-pci.c
/openbmc/qemu/hw/virtio/virtio-rng.c
/openbmc/qemu/hw/virtio/virtio.c
/openbmc/qemu/include/block/graph-lock.h
/openbmc/qemu/include/block/nbd.h
/openbmc/qemu/include/hw/intc/loongarch_ipi.h
/openbmc/qemu/include/hw/intc/loongson_ipi.h
/openbmc/qemu/include/hw/intc/loongson_ipi_common.h
/openbmc/qemu/include/hw/loongarch/virt.h
/openbmc/qemu/include/hw/pci/pci.h
/openbmc/qemu/include/hw/pci/pci_device.h
/openbmc/qemu/include/hw/pci/pcie_sriov.h
/openbmc/qemu/include/hw/virtio/virtio-pci.h
/openbmc/qemu/include/hw/virtio/virtio.h
/openbmc/qemu/include/qemu/osdep.h
/openbmc/qemu/linux-user/elfload.c
/openbmc/qemu/meson.build
/openbmc/qemu/migration/file.c
/openbmc/qemu/migration/multifd.c
/openbmc/qemu/migration/savevm.c
/openbmc/qemu/nbd/server.c
/openbmc/qemu/nbd/trace-events
/openbmc/qemu/net/net.c
/openbmc/qemu/net/tap.c
/openbmc/qemu/pc-bios/opensbi-riscv32-generic-fw_dynamic.bin
/openbmc/qemu/pc-bios/opensbi-riscv64-generic-fw_dynamic.bin
/openbmc/qemu/qapi/block-core.json
/openbmc/qemu/qapi/block-export.json
/openbmc/qemu/qapi/block.json
/openbmc/qemu/qapi/char.json
/openbmc/qemu/qapi/control.json
/openbmc/qemu/qapi/crypto.json
/openbmc/qemu/qapi/cxl.json
/openbmc/qemu/qapi/dump.json
/openbmc/qemu/qapi/ebpf.json
/openbmc/qemu/qapi/introspect.json
/openbmc/qemu/qapi/job.json
/openbmc/qemu/qapi/machine-target.json
/openbmc/qemu/qapi/machine.json
/openbmc/qemu/qapi/migration.json
/openbmc/qemu/qapi/misc.json
/openbmc/qemu/qapi/net.json
/openbmc/qemu/qapi/pci.json
/openbmc/qemu/qapi/qdev.json
/openbmc/qemu/qapi/qom.json
/openbmc/qemu/qapi/rocker.json
/openbmc/qemu/qapi/run-state.json
/openbmc/qemu/qapi/sockets.json
/openbmc/qemu/qapi/stats.json
/openbmc/qemu/qapi/transaction.json
/openbmc/qemu/qapi/ui.json
/openbmc/qemu/qapi/vfio.json
/openbmc/qemu/qapi/virtio.json
/openbmc/qemu/qemu-nbd.c
/openbmc/qemu/qemu-options.hx
/openbmc/qemu/roms/opensbi
/openbmc/qemu/system/async-teardown.c
/openbmc/qemu/system/cpus.c
/openbmc/qemu/system/vl.c
/openbmc/qemu/target/arm/hvf/hvf.c
helper-a64.c
helper-a64.h
translate-a64.c
translate.h
/openbmc/qemu/target/hexagon/cpu-qom.h
/openbmc/qemu/target/hexagon/cpu.c
/openbmc/qemu/target/hexagon/gdbstub.c
/openbmc/qemu/target/hexagon/idef-parser/idef-parser.y
/openbmc/qemu/target/hexagon/op_helper.c
/openbmc/qemu/target/i386/sev.c
/openbmc/qemu/target/i386/tcg/decode-new.c.inc
/openbmc/qemu/target/i386/tcg/translate.c
/openbmc/qemu/target/riscv/insn_trans/trans_rvd.c.inc
/openbmc/qemu/target/riscv/insn_trans/trans_rvf.c.inc
/openbmc/qemu/target/riscv/insn_trans/trans_rvi.c.inc
/openbmc/qemu/target/riscv/pmu.c
/openbmc/qemu/target/xtensa/exc_helper.c
/openbmc/qemu/tcg/ppc/tcg-target.c.inc
/openbmc/qemu/tests/qemu-iotests/024
/openbmc/qemu/tests/qemu-iotests/024.out
/openbmc/qemu/tests/qemu-iotests/check
/openbmc/qemu/tests/qemu-iotests/fat16.py
/openbmc/qemu/tests/qemu-iotests/testenv.py
/openbmc/qemu/tests/qemu-iotests/tests/vvfat
/openbmc/qemu/tests/qemu-iotests/tests/vvfat.out
/openbmc/qemu/tests/tcg/hexagon/usr.c
/openbmc/qemu/ui/console.c
/openbmc/qemu/util/oslib-posix.c
55f9f4ee01-Aug-2024 Peter Maydell <peter.maydell@linaro.org>

target/arm: Handle denormals correctly for FMOPA (widening)

The FMOPA (widening) SME instruction takes pairs of half-precision
floating point values, widens them to single-precision, does a
two-way

target/arm: Handle denormals correctly for FMOPA (widening)

The FMOPA (widening) SME instruction takes pairs of half-precision
floating point values, widens them to single-precision, does a
two-way dot product and accumulates the results into a
single-precision destination. We don't quite correctly handle the
FPCR bits FZ and FZ16 which control flushing of denormal inputs and
outputs. This is because at the moment we pass a single float_status
value to the helper function, which then uses that configuration for
all the fp operations it does. However, because the inputs to this
operation are float16 and the outputs are float32 we need to use the
fp_status_f16 for the float16 input widening but the normal fp_status
for everything else. Otherwise we will apply the flushing control
FPCR.FZ16 to the 32-bit output rather than the FPCR.FZ control, and
incorrectly flush a denormal output to zero when we should not (or
vice-versa).

(In commit 207d30b5fdb5b we tried to fix the FZ handling but
didn't get it right, switching from "use FPCR.FZ for everything" to
"use FPCR.FZ16 for everything".)

Pass the CPU env to the sme_fmopa_h helper instead of an fp_status
pointer, and have the helper pass an extra fp_status into the
f16_dotadd() function so that we can use the right status for the
right parts of this operation.

Cc: qemu-stable@nongnu.org
Fixes: 207d30b5fdb5 ("target/arm: Use FPST_F16 for SME FMOPA (widening)")
Resolves: https://gitlab.com/qemu-project/qemu/-/issues/2373
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>

show more ...


/openbmc/qemu/.gitlab-ci.d/buildtest-template.yml
/openbmc/qemu/.gitlab-ci.d/crossbuild-template.yml
/openbmc/qemu/MAINTAINERS
/openbmc/qemu/VERSION
/openbmc/qemu/accel/kvm/kvm-all.c
/openbmc/qemu/contrib/plugins/Makefile
/openbmc/qemu/contrib/plugins/cache.c
/openbmc/qemu/contrib/plugins/lockstep.c
/openbmc/qemu/docs/about/emulation.rst
/openbmc/qemu/docs/devel/tcg-plugins.rst
/openbmc/qemu/docs/devel/testing.rst
/openbmc/qemu/docs/meson.build
/openbmc/qemu/docs/sphinx/depfile.py
/openbmc/qemu/hw/arm/mps2-tz.c
/openbmc/qemu/hw/i386/sgx-stub.c
/openbmc/qemu/hw/i386/sgx.c
/openbmc/qemu/include/hw/i386/sgx-epc.h
/openbmc/qemu/include/qemu/osdep.h
/openbmc/qemu/linux-user/main.c
/openbmc/qemu/linux-user/syscall.c
/openbmc/qemu/meson.build
/openbmc/qemu/plugins/loader.c
/openbmc/qemu/qapi/crypto.json
/openbmc/qemu/qapi/machine-target.json
/openbmc/qemu/qapi/machine.json
/openbmc/qemu/qapi/qom.json
/openbmc/qemu/system/physmem.c
/openbmc/qemu/target/arm/helper.c
helper-sme.h
sme_helper.c
translate-sme.c
/openbmc/qemu/target/i386/cpu.c
/openbmc/qemu/target/i386/kvm/kvm.c
/openbmc/qemu/target/i386/kvm/vmsr_energy.c
/openbmc/qemu/target/i386/tcg/seg_helper.c
/openbmc/qemu/target/m68k/helper.c
/openbmc/qemu/target/rx/translate.c
/openbmc/qemu/target/s390x/cpu_models_sysemu.c
/openbmc/qemu/target/sh4/helper.c
/openbmc/qemu/target/tricore/op_helper.c
/openbmc/qemu/target/xtensa/mmu_helper.c
/openbmc/qemu/tests/avocado/boot_linux_console.py
/openbmc/qemu/tests/avocado/tcg_plugins.py
/openbmc/qemu/tests/docker/dockerfiles/debian-all-test-cross.docker
/openbmc/qemu/tests/docker/dockerfiles/debian-hexagon-cross.docker
/openbmc/qemu/tests/docker/dockerfiles/debian-legacy-test-cross.docker
/openbmc/qemu/tests/docker/dockerfiles/debian-loongarch-cross.docker
/openbmc/qemu/tests/docker/dockerfiles/debian-tricore-cross.docker
/openbmc/qemu/tests/docker/dockerfiles/debian-xtensa-cross.docker
/openbmc/qemu/tests/meson.build
/openbmc/qemu/tests/tcg/Makefile.target
/openbmc/qemu/tests/tcg/README
/openbmc/qemu/tests/tcg/aarch64/Makefile.softmmu-target
/openbmc/qemu/tests/tcg/alpha/Makefile.softmmu-target
/openbmc/qemu/tests/tcg/arm/Makefile.softmmu-target
/openbmc/qemu/tests/tcg/arm/Makefile.target
/openbmc/qemu/tests/tcg/i386/Makefile.softmmu-target
/openbmc/qemu/tests/tcg/loongarch64/Makefile.softmmu-target
/openbmc/qemu/tests/tcg/plugins/bb.c
/openbmc/qemu/tests/tcg/plugins/empty.c
/openbmc/qemu/tests/tcg/plugins/inline.c
/openbmc/qemu/tests/tcg/plugins/insn.c
/openbmc/qemu/tests/tcg/plugins/mem.c
/openbmc/qemu/tests/tcg/plugins/meson.build
/openbmc/qemu/tests/tcg/plugins/syscall.c
/openbmc/qemu/tests/tcg/riscv64/Makefile.softmmu-target
/openbmc/qemu/tests/tcg/s390x/Makefile.softmmu-target
/openbmc/qemu/tests/tcg/x86_64/Makefile.softmmu-target
/openbmc/qemu/tests/vm/openbsd
/openbmc/qemu/tools/i386/qemu-vmsr-helper.c
/openbmc/qemu/util/cpuinfo-aarch64.c
/openbmc/qemu/util/cpuinfo-ppc.c
/openbmc/qemu/util/getauxval.c
76916dfa22-Jul-2024 Peter Maydell <peter.maydell@linaro.org>

target/arm: Avoid shifts by -1 in tszimm_shr() and tszimm_shl()

The function tszimm_esz() returns a shift amount, or possibly -1 in
certain cases that correspond to unallocated encodings in the
inst

target/arm: Avoid shifts by -1 in tszimm_shr() and tszimm_shl()

The function tszimm_esz() returns a shift amount, or possibly -1 in
certain cases that correspond to unallocated encodings in the
instruction set. We catch these later in the trans_ functions
(generally with an "a-esz < 0" check), but before we do the
decodetree-generated code will also call tszimm_shr() or tszimm_sl(),
which will use the tszimm_esz() return value as a shift count without
checking that it is not negative, which is undefined behaviour.

Avoid the UB by checking the return value in tszimm_shr() and
tszimm_shl().

Cc: qemu-stable@nongnu.org
Resolves: Coverity CID 1547617, 1547694
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-id: 20240722172957.1041231-4-peter.maydell@linaro.org

show more ...

ea3f5a9022-Jul-2024 Peter Maydell <peter.maydell@linaro.org>

target/arm: Fix UMOPA/UMOPS of 16-bit values

The UMOPA/UMOPS instructions are supposed to multiply unsigned 8 or
16 bit elements and accumulate the products into a 64-bit element.
In the Arm ARM pse

target/arm: Fix UMOPA/UMOPS of 16-bit values

The UMOPA/UMOPS instructions are supposed to multiply unsigned 8 or
16 bit elements and accumulate the products into a 64-bit element.
In the Arm ARM pseudocode, this is done with the usual
infinite-precision signed arithmetic. However our implementation
doesn't quite get it right, because in the DEF_IMOP_64() macro we do:
sum += (NTYPE)(n >> 0) * (MTYPE)(m >> 0);

where NTYPE and MTYPE are uint16_t or int16_t. In the uint16_t case,
the C usual arithmetic conversions mean the values are converted to
"int" type and the multiply is done as a 32-bit multiply. This means
that if the inputs are, for example, 0xffff and 0xffff then the
result is 0xFFFE0001 as an int, which is then promoted to uint64_t
for the accumulation into sum; this promotion incorrectly sign
extends the multiply.

Avoid the incorrect sign extension by casting to int64_t before
the multiply, so we do the multiply as 64-bit signed arithmetic,
which is a type large enough that the multiply can never
overflow into the sign bit.

(The equivalent 8-bit operations in DEF_IMOP_32() are fine, because
the 8-bit multiplies can never overflow into the sign bit of a
32-bit integer.)

Cc: qemu-stable@nongnu.org
Resolves: https://gitlab.com/qemu-project/qemu/-/issues/2372
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-id: 20240722172957.1041231-3-peter.maydell@linaro.org

show more ...

56f1c0db22-Jul-2024 Peter Maydell <peter.maydell@linaro.org>

target/arm: Don't assert for 128-bit tile accesses when SVL is 128

For an instruction which accesses a 128-bit element tile when
the SVL is also 128 (for example MOV z0.Q, p0/M, ZA0H.Q[w0,0]),
we wi

target/arm: Don't assert for 128-bit tile accesses when SVL is 128

For an instruction which accesses a 128-bit element tile when
the SVL is also 128 (for example MOV z0.Q, p0/M, ZA0H.Q[w0,0]),
we will assert in get_tile_rowcol():

qemu-system-aarch64: ../../tcg/tcg-op.c:926: tcg_gen_deposit_z_i32: Assertion `len > 0' failed.

This happens because we calculate
len = ctz32(streaming_vec_reg_size(s)) - esz;$
but if the SVL and the element size are the same len is 0, and
the deposit operation asserts.

In this case the ZA storage contains exactly one 128 bit
element ZA tile, and the horizontal or vertical slice is just
that tile. This means that regardless of the index value in
the Ws register, we always access that tile. (In pseudocode terms,
we calculate (index + offset) MOD 1, which is 0.)

Special case the len == 0 case to avoid hitting the assertion
in tcg_gen_deposit_z_i32().

Cc: qemu-stable@nongnu.org
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-id: 20240722172957.1041231-2-peter.maydell@linaro.org

show more ...


/openbmc/qemu/.gitlab-ci.d/buildtest.yml
/openbmc/qemu/.gitlab-ci.d/cirrus/freebsd-13.vars
/openbmc/qemu/MAINTAINERS
/openbmc/qemu/accel/kvm/kvm-all.c
/openbmc/qemu/accel/kvm/kvm-cpus.h
/openbmc/qemu/accel/kvm/trace-events
/openbmc/qemu/accel/stubs/tcg-stub.c
/openbmc/qemu/accel/tcg/plugin-gen.c
/openbmc/qemu/audio/dbusaudio.c
/openbmc/qemu/audio/trace-events
/openbmc/qemu/backends/Kconfig
/openbmc/qemu/backends/iommufd.c
/openbmc/qemu/backends/meson.build
/openbmc/qemu/backends/spdm-socket.c
/openbmc/qemu/backends/trace-events
/openbmc/qemu/bsd-user/aarch64/signal.c
/openbmc/qemu/bsd-user/aarch64/target.h
/openbmc/qemu/bsd-user/aarch64/target_arch.h
/openbmc/qemu/bsd-user/aarch64/target_arch_cpu.c
/openbmc/qemu/bsd-user/aarch64/target_arch_cpu.h
/openbmc/qemu/bsd-user/aarch64/target_arch_elf.h
/openbmc/qemu/bsd-user/aarch64/target_arch_reg.h
/openbmc/qemu/bsd-user/aarch64/target_arch_signal.h
/openbmc/qemu/bsd-user/aarch64/target_arch_sigtramp.h
/openbmc/qemu/bsd-user/aarch64/target_arch_sysarch.h
/openbmc/qemu/bsd-user/aarch64/target_arch_thread.h
/openbmc/qemu/bsd-user/aarch64/target_arch_vmparam.h
/openbmc/qemu/bsd-user/aarch64/target_syscall.h
/openbmc/qemu/bsd-user/arm/target_arch_signal.h
/openbmc/qemu/bsd-user/freebsd/os-proc.c
/openbmc/qemu/bsd-user/i386/target_arch_signal.h
/openbmc/qemu/bsd-user/main.c
/openbmc/qemu/bsd-user/qemu.h
/openbmc/qemu/bsd-user/signal.c
/openbmc/qemu/bsd-user/x86_64/target_arch_signal.h
/openbmc/qemu/chardev/char-socket.c
/openbmc/qemu/chardev/char-win-stdio.c
/openbmc/qemu/chardev/msmouse.c
/openbmc/qemu/chardev/trace-events
/openbmc/qemu/configs/targets/aarch64-bsd-user.mak
/openbmc/qemu/contrib/plugins/Makefile
/openbmc/qemu/contrib/plugins/execlog.c
/openbmc/qemu/contrib/plugins/stoptrigger.c
/openbmc/qemu/contrib/systemd/qemu-vmsr-helper.service
/openbmc/qemu/contrib/systemd/qemu-vmsr-helper.socket
/openbmc/qemu/contrib/vhost-user-blk/vhost-user-blk.c
/openbmc/qemu/cpu-common.c
/openbmc/qemu/crypto/block-luks.c
/openbmc/qemu/crypto/init.c
/openbmc/qemu/crypto/tlssession.c
/openbmc/qemu/docs/about/emulation.rst
/openbmc/qemu/docs/devel/crypto.rst
/openbmc/qemu/docs/devel/index-internals.rst
/openbmc/qemu/docs/devel/luks-detached-header.rst
/openbmc/qemu/docs/devel/tcg-plugins.rst
/openbmc/qemu/docs/interop/firmware.json
/openbmc/qemu/docs/interop/qemu-ga.rst
/openbmc/qemu/docs/specs/acpi_hw_reduced_hotplug.rst
/openbmc/qemu/docs/specs/index.rst
/openbmc/qemu/docs/specs/rapl-msr.rst
/openbmc/qemu/docs/specs/spdm.rst
/openbmc/qemu/docs/system/index.rst
/openbmc/qemu/docs/system/sriov.rst
/openbmc/qemu/docs/tools/index.rst
/openbmc/qemu/docs/tools/qemu-vmsr-helper.rst
/openbmc/qemu/dump/dump.c
/openbmc/qemu/gdbstub/gdbstub.c
/openbmc/qemu/hw/acpi/acpi-cpu-hotplug-stub.c
/openbmc/qemu/hw/acpi/cpu.c
/openbmc/qemu/hw/acpi/generic_event_device.c
/openbmc/qemu/hw/arm/smmuv3-internal.h
/openbmc/qemu/hw/arm/virt.c
/openbmc/qemu/hw/audio/virtio-snd.c
/openbmc/qemu/hw/block/m25p80.c
/openbmc/qemu/hw/block/vhost-user-blk.c
/openbmc/qemu/hw/char/bcm2835_aux.c
/openbmc/qemu/hw/char/goldfish_tty.c
/openbmc/qemu/hw/core/cpu-common.c
/openbmc/qemu/hw/core/machine.c
/openbmc/qemu/hw/cxl/cxl-events.c
/openbmc/qemu/hw/cxl/cxl-host.c
/openbmc/qemu/hw/cxl/cxl-mailbox-utils.c
/openbmc/qemu/hw/display/virtio-gpu-gl.c
/openbmc/qemu/hw/i2c/mpc_i2c.c
/openbmc/qemu/hw/i386/acpi-build.c
/openbmc/qemu/hw/i386/intel_iommu.c
/openbmc/qemu/hw/i386/intel_iommu_internal.h
/openbmc/qemu/hw/i386/pc_piix.c
/openbmc/qemu/hw/i386/pc_q35.c
/openbmc/qemu/hw/i386/sgx.c
/openbmc/qemu/hw/intc/loongson_ipi.c
/openbmc/qemu/hw/intc/pnv_xive2.c
/openbmc/qemu/hw/intc/pnv_xive2_regs.h
/openbmc/qemu/hw/intc/xive.c
/openbmc/qemu/hw/intc/xive2.c
/openbmc/qemu/hw/mem/cxl_type3.c
/openbmc/qemu/hw/mips/loongson3_virt.c
/openbmc/qemu/hw/misc/bcm2835_property.c
/openbmc/qemu/hw/net/allwinner_emac.c
/openbmc/qemu/hw/net/vhost_net.c
/openbmc/qemu/hw/nubus/nubus-virtio-mmio.c
/openbmc/qemu/hw/nvme/ctrl.c
/openbmc/qemu/hw/pci-host/gpex-acpi.c
/openbmc/qemu/hw/pci/pci.c
/openbmc/qemu/hw/pci/pcie_sriov.c
/openbmc/qemu/hw/ppc/Kconfig
/openbmc/qemu/hw/ppc/meson.build
/openbmc/qemu/hw/ppc/pnv.c
/openbmc/qemu/hw/ppc/pnv_adu.c
/openbmc/qemu/hw/ppc/pnv_chiptod.c
/openbmc/qemu/hw/ppc/pnv_core.c
/openbmc/qemu/hw/ppc/pnv_lpc.c
/openbmc/qemu/hw/ppc/pnv_xscom.c
/openbmc/qemu/hw/ppc/spapr.c
/openbmc/qemu/hw/ppc/spapr_caps.c
/openbmc/qemu/hw/ppc/spapr_cpu_core.c
/openbmc/qemu/hw/ppc/spapr_vhyp_mmu.c
/openbmc/qemu/hw/ppc/spapr_vof.c
/openbmc/qemu/hw/ppc/trace-events
/openbmc/qemu/hw/ppc/vof.c
/openbmc/qemu/hw/riscv/virt-acpi-build.c
/openbmc/qemu/hw/rtc/ls7a_rtc.c
/openbmc/qemu/hw/scsi/esp.c
/openbmc/qemu/hw/scsi/vhost-scsi.c
/openbmc/qemu/hw/scsi/vhost-user-scsi.c
/openbmc/qemu/hw/smbios/smbios.c
/openbmc/qemu/hw/ssi/Kconfig
/openbmc/qemu/hw/ssi/meson.build
/openbmc/qemu/hw/ssi/pnv_spi.c
/openbmc/qemu/hw/ssi/trace-events
/openbmc/qemu/hw/timer/hpet.c
/openbmc/qemu/hw/timer/trace-events
/openbmc/qemu/hw/vfio/ap.c
/openbmc/qemu/hw/vfio/ccw.c
/openbmc/qemu/hw/vfio/common.c
/openbmc/qemu/hw/vfio/container.c
/openbmc/qemu/hw/vfio/helpers.c
/openbmc/qemu/hw/vfio/iommufd.c
/openbmc/qemu/hw/vfio/migration.c
/openbmc/qemu/hw/vfio/pci.c
/openbmc/qemu/hw/vfio/trace-events
/openbmc/qemu/hw/virtio/trace-events
/openbmc/qemu/hw/virtio/vhost-user-fs.c
/openbmc/qemu/hw/virtio/vhost-user-vsock.c
/openbmc/qemu/hw/virtio/virtio-crypto.c
/openbmc/qemu/hw/virtio/virtio-iommu.c
/openbmc/qemu/hw/virtio/virtio-net-pci.c
/openbmc/qemu/hw/virtio/virtio-pci.c
/openbmc/qemu/hw/virtio/virtio.c
/openbmc/qemu/include/block/nvme.h
/openbmc/qemu/include/chardev/char-fe.h
/openbmc/qemu/include/crypto/tlssession.h
/openbmc/qemu/include/exec/cpu-common.h
/openbmc/qemu/include/exec/exec-all.h
/openbmc/qemu/include/exec/gdbstub.h
/openbmc/qemu/include/gdbstub/commands.h
/openbmc/qemu/include/hw/acpi/cpu.h
/openbmc/qemu/include/hw/acpi/generic_event_device.h
/openbmc/qemu/include/hw/boards.h
/openbmc/qemu/include/hw/core/cpu.h
/openbmc/qemu/include/hw/cxl/cxl_device.h
/openbmc/qemu/include/hw/cxl/cxl_mailbox.h
/openbmc/qemu/include/hw/pci/pci_device.h
/openbmc/qemu/include/hw/pci/pcie_doe.h
/openbmc/qemu/include/hw/pci/pcie_sriov.h
/openbmc/qemu/include/hw/ppc/pnv.h
/openbmc/qemu/include/hw/ppc/pnv_adu.h
/openbmc/qemu/include/hw/ppc/pnv_chip.h
/openbmc/qemu/include/hw/ppc/pnv_core.h
/openbmc/qemu/include/hw/ppc/pnv_lpc.h
/openbmc/qemu/include/hw/ppc/pnv_xscom.h
/openbmc/qemu/include/hw/ppc/spapr.h
/openbmc/qemu/include/hw/ppc/xive2_regs.h
/openbmc/qemu/include/hw/ssi/pnv_spi.h
/openbmc/qemu/include/hw/ssi/pnv_spi_regs.h
/openbmc/qemu/include/hw/vfio/vfio-common.h
/openbmc/qemu/include/hw/virtio/virtio-iommu.h
/openbmc/qemu/include/hw/virtio/virtio-pci.h
/openbmc/qemu/include/hw/virtio/virtio.h
/openbmc/qemu/include/io/channel.h
/openbmc/qemu/include/qemu/fifo8.h
/openbmc/qemu/include/qemu/range.h
/openbmc/qemu/include/semihosting/syscalls.h
/openbmc/qemu/include/sysemu/host_iommu_device.h
/openbmc/qemu/include/sysemu/iommufd.h
/openbmc/qemu/include/sysemu/kvm.h
/openbmc/qemu/include/sysemu/kvm_int.h
/openbmc/qemu/include/sysemu/spdm-socket.h
/openbmc/qemu/io/channel-socket.c
/openbmc/qemu/io/channel-tls.c
/openbmc/qemu/io/channel.c
/openbmc/qemu/linux-headers/asm-powerpc/kvm.h
/openbmc/qemu/meson.build
/openbmc/qemu/net/vhost-vdpa.c
/openbmc/qemu/qapi/crypto.json
/openbmc/qemu/qapi/machine-target.json
/openbmc/qemu/qga/commands-bsd.c
/openbmc/qemu/qga/commands-common.h
/openbmc/qemu/qga/commands-linux.c
/openbmc/qemu/qga/commands-posix.c
/openbmc/qemu/qga/commands-win32.c
/openbmc/qemu/qga/main.c
/openbmc/qemu/qga/qapi-schema.json
/openbmc/qemu/semihosting/Kconfig
/openbmc/qemu/system/memory_mapping.c
/openbmc/qemu/system/physmem.c
/openbmc/qemu/target/arm/cpu-param.h
/openbmc/qemu/target/arm/gdbstub.c
/openbmc/qemu/target/arm/gdbstub64.c
/openbmc/qemu/target/arm/hvf/hvf.c
/openbmc/qemu/target/arm/internals.h
/openbmc/qemu/target/arm/kvm.c
translate-sme.c
/openbmc/qemu/target/i386/cpu.h
/openbmc/qemu/target/i386/kvm/kvm.c
/openbmc/qemu/target/i386/kvm/meson.build
/openbmc/qemu/target/i386/kvm/vmsr_energy.c
/openbmc/qemu/target/i386/kvm/vmsr_energy.h
/openbmc/qemu/target/loongarch/tcg/tlb_helper.c
/openbmc/qemu/target/m68k/Kconfig
/openbmc/qemu/target/m68k/meson.build
/openbmc/qemu/target/m68k/semihosting-stub.c
/openbmc/qemu/target/mips/Kconfig
/openbmc/qemu/target/mips/tcg/sysemu/meson.build
/openbmc/qemu/target/mips/tcg/sysemu/semihosting-stub.c
/openbmc/qemu/target/ppc/arch_dump.c
/openbmc/qemu/target/ppc/cpu.h
/openbmc/qemu/target/ppc/cpu_init.c
/openbmc/qemu/target/ppc/excp_helper.c
/openbmc/qemu/target/ppc/fpu_helper.c
/openbmc/qemu/target/ppc/helper.h
/openbmc/qemu/target/ppc/insn32.decode
/openbmc/qemu/target/ppc/int_helper.c
/openbmc/qemu/target/ppc/kvm.c
/openbmc/qemu/target/ppc/mem_helper.c
/openbmc/qemu/target/ppc/misc_helper.c
/openbmc/qemu/target/ppc/mmu-book3s-v3.c
/openbmc/qemu/target/ppc/mmu-book3s-v3.h
/openbmc/qemu/target/ppc/mmu-hash32.c
/openbmc/qemu/target/ppc/mmu-hash32.h
/openbmc/qemu/target/ppc/mmu-hash64.c
/openbmc/qemu/target/ppc/mmu-hash64.h
/openbmc/qemu/target/ppc/mmu-radix64.c
/openbmc/qemu/target/ppc/mmu-radix64.h
/openbmc/qemu/target/ppc/mmu_common.c
/openbmc/qemu/target/ppc/timebase_helper.c
/openbmc/qemu/target/ppc/translate.c
/openbmc/qemu/target/ppc/translate/vmx-impl.c.inc
/openbmc/qemu/target/ppc/translate/vmx-ops.c.inc
/openbmc/qemu/target/ppc/translate/vsx-impl.c.inc
/openbmc/qemu/target/ppc/translate/vsx-ops.c.inc
/openbmc/qemu/target/riscv/Kconfig
/openbmc/qemu/target/riscv/vector_helper.c
/openbmc/qemu/target/s390x/cpu_models_sysemu.c
/openbmc/qemu/target/s390x/tcg/mem_helper.c
/openbmc/qemu/target/sparc/ldst_helper.c
/openbmc/qemu/target/xtensa/Kconfig
/openbmc/qemu/tests/Makefile.include
/openbmc/qemu/tests/avocado/avocado_qemu/__init__.py
/openbmc/qemu/tests/avocado/avocado_qemu/linuxtest.py
/openbmc/qemu/tests/avocado/boot_linux.py
/openbmc/qemu/tests/avocado/boot_xen.py
/openbmc/qemu/tests/avocado/hotplug_blk.py
/openbmc/qemu/tests/avocado/hotplug_cpu.py
/openbmc/qemu/tests/avocado/intel_iommu.py
/openbmc/qemu/tests/avocado/machine_aspeed.py
/openbmc/qemu/tests/avocado/mem-addr-space-check.py
/openbmc/qemu/tests/avocado/replay_linux.py
/openbmc/qemu/tests/avocado/smmu.py
/openbmc/qemu/tests/data/acpi/aarch64/virt/DSDT
/openbmc/qemu/tests/data/acpi/aarch64/virt/DSDT.acpihmatvirt
/openbmc/qemu/tests/data/acpi/aarch64/virt/DSDT.memhp
/openbmc/qemu/tests/data/acpi/aarch64/virt/DSDT.pxb
/openbmc/qemu/tests/data/acpi/aarch64/virt/DSDT.topology
/openbmc/qemu/tests/data/acpi/riscv64/virt/APIC
/openbmc/qemu/tests/data/acpi/riscv64/virt/DSDT
/openbmc/qemu/tests/data/acpi/riscv64/virt/FACP
/openbmc/qemu/tests/data/acpi/riscv64/virt/MCFG
/openbmc/qemu/tests/data/acpi/riscv64/virt/RHCT
/openbmc/qemu/tests/data/acpi/riscv64/virt/SPCR
/openbmc/qemu/tests/data/acpi/x86/microvm/DSDT.pcie
/openbmc/qemu/tests/lcitool/libvirt-ci
/openbmc/qemu/tests/plugin/inline.c
/openbmc/qemu/tests/qtest/bios-tables-test.c
/openbmc/qemu/tests/qtest/fuzz/generic_fuzz.c
/openbmc/qemu/tests/qtest/meson.build
/openbmc/qemu/tests/qtest/pnv-spi-seeprom-test.c
/openbmc/qemu/tests/qtest/pnv-xscom.h
/openbmc/qemu/tests/tcg/aarch64/gdbstub/test-mte.py
/openbmc/qemu/tests/tcg/ppc64/Makefile.target
/openbmc/qemu/tests/unit/crypto-tls-psk-helpers.c
/openbmc/qemu/tests/unit/crypto-tls-x509-helpers.c
/openbmc/qemu/tests/unit/crypto-tls-x509-helpers.h
/openbmc/qemu/tests/unit/meson.build
/openbmc/qemu/tests/unit/pkix_asn1_tab.c.inc
/openbmc/qemu/tests/unit/test-crypto-tlssession.c
/openbmc/qemu/tests/vm/generated/freebsd.json
/openbmc/qemu/tools/i386/qemu-vmsr-helper.c
/openbmc/qemu/tools/i386/rapl-msr-index.h
/openbmc/qemu/ui/clipboard.c
/openbmc/qemu/ui/console-vc.c
/openbmc/qemu/ui/cursor.c
/openbmc/qemu/ui/dbus-clipboard.c
/openbmc/qemu/ui/gtk.c
/openbmc/qemu/ui/trace-events
/openbmc/qemu/ui/vdagent.c
/openbmc/qemu/ui/vnc.h
/openbmc/qemu/util/async.c
/openbmc/qemu/util/fifo8.c
3b9991e309-Jul-2024 Richard Henderson <richard.henderson@linaro.org>

target/arm: Use set/clear_helper_retaddr in SVE and SME helpers

Avoid a race condition with munmap in another thread.
Use around blocks that exclusively use "host_fn".
Keep the blocks as small as po

target/arm: Use set/clear_helper_retaddr in SVE and SME helpers

Avoid a race condition with munmap in another thread.
Use around blocks that exclusively use "host_fn".
Keep the blocks as small as possible, but without setting
and clearing for every operation on one page.

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>

show more ...

8009519b09-Jul-2024 Richard Henderson <richard.henderson@linaro.org>

target/arm: Use set/clear_helper_retaddr in helper-a64.c

Use these in helper_dc_dva and the FEAT_MOPS routines to
avoid a race condition with munmap in another thread.

Reviewed-by: Peter Maydell <p

target/arm: Use set/clear_helper_retaddr in helper-a64.c

Use these in helper_dc_dva and the FEAT_MOPS routines to
avoid a race condition with munmap in another thread.

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>

show more ...


/openbmc/qemu/accel/tcg/cpu-exec.c
/openbmc/qemu/accel/tcg/user-exec.c
/openbmc/qemu/configs/targets/loongarch64-linux-user.mak
/openbmc/qemu/configs/targets/loongarch64-softmmu.mak
/openbmc/qemu/disas/riscv.c
/openbmc/qemu/docs/about/deprecated.rst
/openbmc/qemu/docs/system/arm/aspeed.rst
/openbmc/qemu/gdb-xml/loongarch-lasx.xml
/openbmc/qemu/gdb-xml/loongarch-lsx.xml
/openbmc/qemu/hw/adc/aspeed_adc.c
/openbmc/qemu/hw/arm/aspeed.c
/openbmc/qemu/hw/arm/aspeed_ast2600.c
/openbmc/qemu/hw/arm/aspeed_ast27x0.c
/openbmc/qemu/hw/arm/aspeed_soc_common.c
/openbmc/qemu/hw/i2c/aspeed_i2c.c
/openbmc/qemu/hw/riscv/virt.c
/openbmc/qemu/hw/ssi/aspeed_smc.c
/openbmc/qemu/include/exec/cpu_ldst.h
/openbmc/qemu/include/hw/adc/aspeed_adc.h
/openbmc/qemu/include/hw/arm/aspeed_soc.h
/openbmc/qemu/include/hw/i2c/aspeed_i2c.h
/openbmc/qemu/include/hw/intc/loongarch_extioi.h
/openbmc/qemu/include/hw/loongarch/virt.h
/openbmc/qemu/include/hw/misc/aspeed_scu.h
/openbmc/qemu/pc-bios/opensbi-riscv32-generic-fw_dynamic.bin
/openbmc/qemu/pc-bios/opensbi-riscv64-generic-fw_dynamic.bin
/openbmc/qemu/roms/opensbi
/openbmc/qemu/target/arm/hvf/hvf.c
helper-a64.c
/openbmc/qemu/target/loongarch/gdbstub.c
/openbmc/qemu/target/riscv/cpu.c
/openbmc/qemu/target/riscv/cpu.h
/openbmc/qemu/target/riscv/cpu_bits.h
/openbmc/qemu/target/riscv/cpu_cfg.h
/openbmc/qemu/target/riscv/cpu_helper.c
/openbmc/qemu/target/riscv/csr.c
/openbmc/qemu/target/riscv/insn16.decode
/openbmc/qemu/target/riscv/insn32.decode
/openbmc/qemu/target/riscv/insn_trans/trans_rva.c.inc
/openbmc/qemu/target/riscv/insn_trans/trans_rvd.c.inc
/openbmc/qemu/target/riscv/insn_trans/trans_rvf.c.inc
/openbmc/qemu/target/riscv/insn_trans/trans_rvi.c.inc
/openbmc/qemu/target/riscv/insn_trans/trans_rvzabha.c.inc
/openbmc/qemu/target/riscv/insn_trans/trans_rvzacas.c.inc
/openbmc/qemu/target/riscv/insn_trans/trans_rvzcmop.c.inc
/openbmc/qemu/target/riscv/insn_trans/trans_rvzimop.c.inc
/openbmc/qemu/target/riscv/kvm/kvm-cpu.c
/openbmc/qemu/target/riscv/machine.c
/openbmc/qemu/target/riscv/op_helper.c
/openbmc/qemu/target/riscv/pmu.c
/openbmc/qemu/target/riscv/pmu.h
/openbmc/qemu/target/riscv/tcg/tcg-cpu.c
/openbmc/qemu/target/riscv/translate.c
/openbmc/qemu/tests/avocado/machine_aspeed.py
/openbmc/qemu/tests/qtest/arm-cpu-features.c
/openbmc/qemu/tests/tcg/aarch64/Makefile.target
/openbmc/qemu/tests/tcg/aarch64/sme-fmopa-1.c
/openbmc/qemu/tests/tcg/aarch64/sme-fmopa-2.c
/openbmc/qemu/tests/tcg/aarch64/sme-fmopa-3.c
207d30b517-Jul-2024 Richard Henderson <richard.henderson@linaro.org>

target/arm: Use FPST_F16 for SME FMOPA (widening)

This operation has float16 inputs and thus must use
the FZ16 control not the FZ control.

Cc: qemu-stable@nongnu.org
Fixes: 3916841ac75 ("target/arm

target/arm: Use FPST_F16 for SME FMOPA (widening)

This operation has float16 inputs and thus must use
the FZ16 control not the FZ control.

Cc: qemu-stable@nongnu.org
Fixes: 3916841ac75 ("target/arm: Implement FMOPA, FMOPS (widening)")
Reported-by: Daniyal Khan <danikhan632@gmail.com>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
Message-id: 20240717060149.204788-3-richard.henderson@linaro.org
Resolves: https://gitlab.com/qemu-project/qemu/-/issues/2374
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>

show more ...

31d93fed17-Jul-2024 Daniyal Khan <danikhan632@gmail.com>

target/arm: Use float_status copy in sme_fmopa_s

We made a copy above because the fp exception flags
are not propagated back to the FPST register, but
then failed to use the copy.

Cc: qemu-stable@n

target/arm: Use float_status copy in sme_fmopa_s

We made a copy above because the fp exception flags
are not propagated back to the FPST register, but
then failed to use the copy.

Cc: qemu-stable@nongnu.org
Fixes: 558e956c719 ("target/arm: Implement FMOPA, FMOPS (non-widening)")
Signed-off-by: Daniyal Khan <danikhan632@gmail.com>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
Message-id: 20240717060149.204788-2-richard.henderson@linaro.org
[rth: Split from a larger patch]
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>

show more ...

25489b5216-Jul-2024 Peter Maydell <peter.maydell@linaro.org>

target/arm: LDAPR should honour SCTLR_ELx.nAA

In commit c1a1f80518d360b when we added the FEAT_LSE2 relaxations to
the alignment requirements for atomic and ordered loads and stores,
we didn't quite

target/arm: LDAPR should honour SCTLR_ELx.nAA

In commit c1a1f80518d360b when we added the FEAT_LSE2 relaxations to
the alignment requirements for atomic and ordered loads and stores,
we didn't quite get it right for LDAPR/LDAPRH/LDAPRB with no
immediate offset. These instructions were handled in the old decoder
as part of disas_ldst_atomic(), but unlike all the other insns that
function decoded (LDADD, LDCLR, etc) these insns are "ordered", not
"atomic", so they should be using check_ordered_align() rather than
check_atomic_align(). Commit c1a1f80518d360b used
check_atomic_align() regardless for everything in
disas_ldst_atomic(). We then carried that incorrect check over in
the decodetree conversion, where LDAPR/LDAPRH/LDAPRB are now handled
by trans_LDAPR().

The effect is that when FEAT_LSE2 is implemented, these instructions
don't honour the SCTLR_ELx.nAA bit and will generate alignment
faults when they should not.

(The LDAPR insns with an immediate offset were in disas_ldst_ldapr_stlr()
and then in trans_LDAPR_i() and trans_STLR_i(), and have always used
the correct check_ordered_align().)

Use check_ordered_align() in trans_LDAPR().

Cc: qemu-stable@nongnu.org
Fixes: c1a1f80518d360b ("target/arm: Relax ordered/atomic alignment checks for LSE2")
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-id: 20240709134504.3500007-3-peter.maydell@linaro.org

show more ...

5669d26e16-Jul-2024 Peter Maydell <peter.maydell@linaro.org>

target/arm: Fix handling of LDAPR/STLR with negative offset

When we converted the LDAPR/STLR instructions to decodetree we
accidentally introduced a regression where the offset is negative.
The 9-bi

target/arm: Fix handling of LDAPR/STLR with negative offset

When we converted the LDAPR/STLR instructions to decodetree we
accidentally introduced a regression where the offset is negative.
The 9-bit immediate field is signed, and the old hand decoder
correctly used sextract32() to get it out of the insn word,
but the ldapr_stlr_i pattern in the decode file used "imm:9"
instead of "imm:s9", so it treated the field as unsigned.

Fix the pattern to treat the field as a signed immediate.

Cc: qemu-stable@nongnu.org
Fixes: 2521b6073b7 ("target/arm: Convert LDAPR/STLR (imm) to decodetree")
Resolves: https://gitlab.com/qemu-project/qemu/-/issues/2419
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-id: 20240709134504.3500007-2-peter.maydell@linaro.org

show more ...


/openbmc/qemu/MAINTAINERS
/openbmc/qemu/README.rst
/openbmc/qemu/accel/kvm/kvm-all.c
/openbmc/qemu/accel/tcg/cpu-exec.c
/openbmc/qemu/backends/hostmem-epc.c
/openbmc/qemu/backends/iommufd.c
/openbmc/qemu/backends/rng-random.c
/openbmc/qemu/block/curl.c
/openbmc/qemu/block/io.c
/openbmc/qemu/chardev/char-io.c
/openbmc/qemu/configs/targets/loongarch64-softmmu.mak
/openbmc/qemu/cpu-common.c
/openbmc/qemu/docs/conf.py
/openbmc/qemu/docs/devel/qapi-code-gen.rst
/openbmc/qemu/docs/sphinx-static/theme_overrides.css
/openbmc/qemu/docs/sphinx/hxtool.py
/openbmc/qemu/docs/sphinx/kerneldoc.py
/openbmc/qemu/docs/sphinx/qapidoc.py
/openbmc/qemu/hw/core/cpu-common.c
/openbmc/qemu/hw/core/loader.c
/openbmc/qemu/hw/display/ati.c
/openbmc/qemu/hw/display/qxl-render.c
/openbmc/qemu/hw/display/virtio-gpu.c
/openbmc/qemu/hw/display/vmware_vga.c
/openbmc/qemu/hw/i386/pc.c
/openbmc/qemu/hw/i386/sgx.c
/openbmc/qemu/hw/i386/x86.c
/openbmc/qemu/hw/isa/vt82c686.c
/openbmc/qemu/hw/loongarch/Kconfig
/openbmc/qemu/hw/loongarch/acpi-build.c
/openbmc/qemu/hw/loongarch/boot.c
/openbmc/qemu/hw/loongarch/virt.c
/openbmc/qemu/hw/mips/fuloong2e.c
/openbmc/qemu/hw/nvme/ctrl.c
/openbmc/qemu/hw/nvme/nvme.h
/openbmc/qemu/hw/nvme/subsys.c
/openbmc/qemu/hw/ppc/amigaone.c
/openbmc/qemu/hw/ppc/pegasos2.c
/openbmc/qemu/hw/scsi/esp.c
/openbmc/qemu/hw/scsi/lsi53c895a.c
/openbmc/qemu/hw/scsi/scsi-bus.c
/openbmc/qemu/hw/sd/sd.c
/openbmc/qemu/hw/sd/trace-events
/openbmc/qemu/hw/timer/hpet.c
/openbmc/qemu/hw/ufs/ufs.c
/openbmc/qemu/hw/usb/host-libusb.c
/openbmc/qemu/hw/usb/u2f-passthru.c
/openbmc/qemu/hw/vfio/container.c
/openbmc/qemu/hw/virtio/virtio-mem.c
/openbmc/qemu/hw/xen/xen-mapcache.c
/openbmc/qemu/include/block/nvme.h
/openbmc/qemu/include/disas/capstone.h
/openbmc/qemu/include/hw/core/cpu.h
/openbmc/qemu/include/hw/loader.h
/openbmc/qemu/include/hw/qdev-core.h
/openbmc/qemu/include/hw/sd/sd.h
/openbmc/qemu/include/qemu/timer.h
/openbmc/qemu/include/ui/console.h
/openbmc/qemu/meson.build
/openbmc/qemu/python/qemu/machine/machine.py
/openbmc/qemu/python/qemu/utils/qemu_ga_client.py
/openbmc/qemu/python/setup.cfg
/openbmc/qemu/pythondeps.toml
/openbmc/qemu/qapi/acpi.json
/openbmc/qemu/qapi/block-core.json
/openbmc/qemu/qapi/block.json
/openbmc/qemu/qapi/char.json
/openbmc/qemu/qapi/control.json
/openbmc/qemu/qapi/dump.json
/openbmc/qemu/qapi/machine-target.json
/openbmc/qemu/qapi/machine.json
/openbmc/qemu/qapi/migration.json
/openbmc/qemu/qapi/misc-target.json
/openbmc/qemu/qapi/misc.json
/openbmc/qemu/qapi/net.json
/openbmc/qemu/qapi/pci.json
/openbmc/qemu/qapi/qdev.json
/openbmc/qemu/qapi/qom.json
/openbmc/qemu/qapi/replay.json
/openbmc/qemu/qapi/rocker.json
/openbmc/qemu/qapi/run-state.json
/openbmc/qemu/qapi/sockets.json
/openbmc/qemu/qapi/tpm.json
/openbmc/qemu/qapi/trace.json
/openbmc/qemu/qapi/transaction.json
/openbmc/qemu/qapi/ui.json
/openbmc/qemu/qapi/vfio.json
/openbmc/qemu/qapi/virtio.json
/openbmc/qemu/qapi/yank.json
/openbmc/qemu/qemu-options.hx
/openbmc/qemu/scripts/meson-buildoptions.sh
/openbmc/qemu/scripts/qapi/parser.py
/openbmc/qemu/system/cpus.c
/openbmc/qemu/system/physmem.c
/openbmc/qemu/system/vl.c
a64.decode
/openbmc/qemu/target/hexagon/imported/mmvec/ext.idef
/openbmc/qemu/target/i386/cpu.c
/openbmc/qemu/target/i386/cpu.h
/openbmc/qemu/target/i386/sev.c
/openbmc/qemu/target/i386/tcg/decode-new.c.inc
/openbmc/qemu/target/i386/tcg/emit.c.inc
/openbmc/qemu/target/i386/tcg/seg_helper.c
/openbmc/qemu/target/loongarch/cpu.c
/openbmc/qemu/target/loongarch/kvm/kvm.c
/openbmc/qemu/target/loongarch/tcg/insn_trans/trans_shift.c.inc
/openbmc/qemu/target/tricore/cpu.c
/openbmc/qemu/tests/docker/dockerfiles/python.docker
/openbmc/qemu/tests/qapi-schema/doc-good.json
/openbmc/qemu/tests/qapi-schema/doc-good.out
/openbmc/qemu/tests/qapi-schema/doc-good.txt
/openbmc/qemu/tests/qemu-iotests/245
/openbmc/qemu/tests/qemu-iotests/testenv.py
/openbmc/qemu/tests/qemu-iotests/testrunner.py
/openbmc/qemu/tests/qemu-iotests/tests/write-zeroes-unmap
/openbmc/qemu/tests/qemu-iotests/tests/write-zeroes-unmap.out
/openbmc/qemu/ui/cocoa.m
/openbmc/qemu/ui/console.c
/openbmc/qemu/ui/dbus-listener.c
/openbmc/qemu/ui/gtk.c
/openbmc/qemu/ui/sdl2.c
/openbmc/qemu/ui/spice-display.c
/openbmc/qemu/ui/vnc.c
/openbmc/qemu/util/oslib-posix.c
7f49089108-Jul-2024 Richard Henderson <richard.henderson@linaro.org>

target/arm: Convert PMULL to decodetree

Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Peter Maydell <peter.mayd

target/arm: Convert PMULL to decodetree

Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Message-id: 20240709000610.382391-7-richard.henderson@linaro.org
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>

show more ...

f7a8456508-Jul-2024 Richard Henderson <richard.henderson@linaro.org>

target/arm: Convert ADDHN, SUBHN, RADDHN, RSUBHN to decodetree

Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Message-id: 20240

target/arm: Convert ADDHN, SUBHN, RADDHN, RSUBHN to decodetree

Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Message-id: 20240709000610.382391-6-richard.henderson@linaro.org
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>

show more ...

26cb9dbe08-Jul-2024 Richard Henderson <richard.henderson@linaro.org>

target/arm: Convert SADDW, SSUBW, UADDW, USUBW to decodetree

Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Message-id: 2024070

target/arm: Convert SADDW, SSUBW, UADDW, USUBW to decodetree

Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Message-id: 20240709000610.382391-5-richard.henderson@linaro.org
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>

show more ...

7575c57108-Jul-2024 Richard Henderson <richard.henderson@linaro.org>

target/arm: Convert SQDMULL, SQDMLAL, SQDMLSL to decodetree

Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Message-id: 20240709

target/arm: Convert SQDMULL, SQDMLAL, SQDMLSL to decodetree

Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Message-id: 20240709000610.382391-4-richard.henderson@linaro.org
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>

show more ...

eb19118708-Jul-2024 Richard Henderson <richard.henderson@linaro.org>

target/arm: Convert SADDL, SSUBL, SABDL, SABAL, and unsigned to decodetree

Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Messa

target/arm: Convert SADDL, SSUBL, SABDL, SABAL, and unsigned to decodetree

Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Message-id: 20240709000610.382391-3-richard.henderson@linaro.org
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>

show more ...

97b06ab708-Jul-2024 Richard Henderson <richard.henderson@linaro.org>

target/arm: Convert SMULL, UMULL, SMLAL, UMLAL, SMLSL, UMLSL to decodetree

Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Messa

target/arm: Convert SMULL, UMULL, SMLAL, UMLAL, SMLSL, UMLSL to decodetree

Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Message-id: 20240709000610.382391-2-richard.henderson@linaro.org
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>

show more ...

12345678910>>...15