* [PULL 0/8] target-arm queue
@ 2020-08-03 19:33 Peter Maydell
2020-08-03 21:12 ` Peter Maydell
0 siblings, 1 reply; 18+ messages in thread
From: Peter Maydell @ 2020-08-03 19:33 UTC (permalink / raw)
To: qemu-devel
Handful of bugfixes for rc2. None of these are particularly critical
or exciting.
-- PMM
The following changes since commit 45a150aa2b3492acf6691c7bdbeb25a8545d8345:
Merge remote-tracking branch 'remotes/ericb/tags/pull-bitmaps-2020-08-03' into staging (2020-08-03 15:13:49 +0100)
are available in the Git repository at:
https://git.linaro.org/people/pmaydell/qemu-arm.git tags/pull-target-arm-20200803
for you to fetch changes up to 13557fd392890cbd985bceba7f717e01efd674b8:
hw/timer/imx_epit: Avoid assertion when CR.SWR is written (2020-08-03 17:56:11 +0100)
----------------------------------------------------------------
target-arm queue:
* hw/timer/imx_epit: Avoid assertion when CR.SWR is written
* netduino2, netduinoplus2, microbit: set system_clock_scale so that
SysTick running on the CPU clock works
* target/arm: Avoid maybe-uninitialized warning with gcc 4.9
* target/arm: Fix AddPAC error indication
* Make AIRCR.SYSRESETREQ actually reset the system for the
microbit, mps2-*, musca-*, netduino* boards
----------------------------------------------------------------
Kaige Li (1):
target/arm: Avoid maybe-uninitialized warning with gcc 4.9
Peter Maydell (6):
hw/arm/netduino2, netduinoplus2: Set system_clock_scale
include/hw/irq.h: New function qemu_irq_is_connected()
hw/intc/armv7m_nvic: Provide default "reset the system" behaviour for SYSRESETREQ
msf2-soc, stellaris: Don't wire up SYSRESETREQ
hw/arm/nrf51_soc: Set system_clock_scale
hw/timer/imx_epit: Avoid assertion when CR.SWR is written
Richard Henderson (1):
target/arm: Fix AddPAC error indication
include/hw/arm/armv7m.h | 4 +++-
include/hw/irq.h | 18 ++++++++++++++++++
hw/arm/msf2-soc.c | 11 -----------
hw/arm/netduino2.c | 10 ++++++++++
hw/arm/netduinoplus2.c | 10 ++++++++++
hw/arm/nrf51_soc.c | 5 +++++
hw/arm/stellaris.c | 12 ------------
hw/intc/armv7m_nvic.c | 17 ++++++++++++++++-
hw/timer/imx_epit.c | 13 ++++++++++---
target/arm/pauth_helper.c | 6 +++++-
target/arm/translate-a64.c | 2 +-
tests/tcg/aarch64/pauth-5.c | 33 +++++++++++++++++++++++++++++++++
tests/tcg/aarch64/Makefile.target | 2 +-
13 files changed, 112 insertions(+), 31 deletions(-)
create mode 100644 tests/tcg/aarch64/pauth-5.c
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PULL 0/8] target-arm queue
2020-08-03 19:33 Peter Maydell
@ 2020-08-03 21:12 ` Peter Maydell
0 siblings, 0 replies; 18+ messages in thread
From: Peter Maydell @ 2020-08-03 21:12 UTC (permalink / raw)
To: QEMU Developers
On Mon, 3 Aug 2020 at 20:34, Peter Maydell <peter.maydell@linaro.org> wrote:
>
> Handful of bugfixes for rc2. None of these are particularly critical
> or exciting.
>
> -- PMM
>
> The following changes since commit 45a150aa2b3492acf6691c7bdbeb25a8545d8345:
>
> Merge remote-tracking branch 'remotes/ericb/tags/pull-bitmaps-2020-08-03' into staging (2020-08-03 15:13:49 +0100)
>
> are available in the Git repository at:
>
> https://git.linaro.org/people/pmaydell/qemu-arm.git tags/pull-target-arm-20200803
>
> for you to fetch changes up to 13557fd392890cbd985bceba7f717e01efd674b8:
>
> hw/timer/imx_epit: Avoid assertion when CR.SWR is written (2020-08-03 17:56:11 +0100)
>
> ----------------------------------------------------------------
> target-arm queue:
> * hw/timer/imx_epit: Avoid assertion when CR.SWR is written
> * netduino2, netduinoplus2, microbit: set system_clock_scale so that
> SysTick running on the CPU clock works
> * target/arm: Avoid maybe-uninitialized warning with gcc 4.9
> * target/arm: Fix AddPAC error indication
> * Make AIRCR.SYSRESETREQ actually reset the system for the
> microbit, mps2-*, musca-*, netduino* boards
>
Applied, thanks.
Please update the changelog at https://wiki.qemu.org/ChangeLog/5.1
for any user-visible changes.
-- PMM
^ permalink raw reply [flat|nested] 18+ messages in thread
* [PULL 0/8] target-arm queue
@ 2023-03-21 13:20 Peter Maydell
2023-03-21 17:14 ` Peter Maydell
0 siblings, 1 reply; 18+ messages in thread
From: Peter Maydell @ 2023-03-21 13:20 UTC (permalink / raw)
To: qemu-devel
The following changes since commit aa9e7fa4689d1becb2faf67f65aafcbcf664f1ce:
Merge tag 'edk2-stable202302-20230320-pull-request' of https://gitlab.com/kraxel/qemu into staging (2023-03-20 13:43:35 +0000)
are available in the Git repository at:
https://git.linaro.org/people/pmaydell/qemu-arm.git tags/pull-target-arm-20230321
for you to fetch changes up to 5787d17a42f7af4bd117e5d6bfa54b1fdf93c255:
target/arm: Don't advertise aarch64-pauth.xml to gdb (2023-03-21 13:19:08 +0000)
----------------------------------------------------------------
target-arm queue:
* contrib/elf2dmp: Support Windows Server 2022
* hw/char/cadence_uart: Fix guards on invalid BRGR/BDIV settings
* target/arm: Add Neoverse-N1 IMPDEF registers
* hw/usb/imx: Fix out of bounds access in imx_usbphy_read()
* docs/system/arm/cpu-features.rst: Fix formatting
* target/arm: Don't advertise aarch64-pauth.xml to gdb
----------------------------------------------------------------
Chen Baozi (1):
target/arm: Add Neoverse-N1 registers
Guenter Roeck (1):
hw/usb/imx: Fix out of bounds access in imx_usbphy_read()
Peter Maydell (3):
hw/char/cadence_uart: Fix guards on invalid BRGR/BDIV settings
docs/system/arm/cpu-features.rst: Fix formatting
target/arm: Don't advertise aarch64-pauth.xml to gdb
Viktor Prutyanov (3):
contrib/elf2dmp: fix code style
contrib/elf2dmp: move PE dir search to pe_get_data_dir_entry
contrib/elf2dmp: add PE name check and Windows Server 2022 support
docs/system/arm/cpu-features.rst | 68 ++++++++++-------------
contrib/elf2dmp/pe.h | 115 ++++++++++++++++++++++-----------------
contrib/elf2dmp/addrspace.c | 1 +
contrib/elf2dmp/main.c | 108 ++++++++++++++++++++++++------------
hw/char/cadence_uart.c | 6 +-
hw/usb/imx-usb-phy.c | 19 ++++++-
target/arm/cpu64.c | 69 +++++++++++++++++++++++
target/arm/gdbstub.c | 7 +++
8 files changed, 267 insertions(+), 126 deletions(-)
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PULL 0/8] target-arm queue
2023-03-21 13:20 Peter Maydell
@ 2023-03-21 17:14 ` Peter Maydell
0 siblings, 0 replies; 18+ messages in thread
From: Peter Maydell @ 2023-03-21 17:14 UTC (permalink / raw)
To: qemu-devel
On Tue, 21 Mar 2023 at 13:20, Peter Maydell <peter.maydell@linaro.org> wrote:
>
> The following changes since commit aa9e7fa4689d1becb2faf67f65aafcbcf664f1ce:
>
> Merge tag 'edk2-stable202302-20230320-pull-request' of https://gitlab.com/kraxel/qemu into staging (2023-03-20 13:43:35 +0000)
>
> are available in the Git repository at:
>
> https://git.linaro.org/people/pmaydell/qemu-arm.git tags/pull-target-arm-20230321
>
> for you to fetch changes up to 5787d17a42f7af4bd117e5d6bfa54b1fdf93c255:
>
> target/arm: Don't advertise aarch64-pauth.xml to gdb (2023-03-21 13:19:08 +0000)
>
> ----------------------------------------------------------------
> target-arm queue:
> * contrib/elf2dmp: Support Windows Server 2022
> * hw/char/cadence_uart: Fix guards on invalid BRGR/BDIV settings
> * target/arm: Add Neoverse-N1 IMPDEF registers
> * hw/usb/imx: Fix out of bounds access in imx_usbphy_read()
> * docs/system/arm/cpu-features.rst: Fix formatting
> * target/arm: Don't advertise aarch64-pauth.xml to gdb
>
Applied, thanks.
Please update the changelog at https://wiki.qemu.org/ChangeLog/8.0
for any user-visible changes.
-- PMM
^ permalink raw reply [flat|nested] 18+ messages in thread
* [PULL 0/8] target-arm queue
@ 2023-11-21 10:24 Peter Maydell
2023-11-21 15:14 ` Stefan Hajnoczi
0 siblings, 1 reply; 18+ messages in thread
From: Peter Maydell @ 2023-11-21 10:24 UTC (permalink / raw)
To: qemu-devel
Hi; here are some arm patches for rc1; all small bug fixes and cleanups.
thanks
-- PMM
The following changes since commit af9264da80073435fd78944bc5a46e695897d7e5:
Merge tag '20231119-xtensa-1' of https://github.com/OSLL/qemu-xtensa into staging (2023-11-20 05:25:19 -0500)
are available in the Git repository at:
https://git.linaro.org/people/pmaydell/qemu-arm.git tags/pull-target-arm-20231121
for you to fetch changes up to 0cbb56c236a4a28f5149eed227d74bb737321cfc:
hw/arm/fsl-imx: Do not ignore Error argument (2023-11-20 15:34:19 +0000)
----------------------------------------------------------------
target-arm queue:
* enable FEAT_RNG on Neoverse-N2
* hw/intc/arm_gicv3: ICC_PMR_EL1 high bits should be RAZ
* Fix SME FMOPA (16-bit), BFMOPA
* hw/core/machine: Constify MachineClass::valid_cpu_types[]
* stm32f* machines: Report error when user asks for wrong CPU type
* hw/arm/fsl-imx: Do not ignore Error argument
----------------------------------------------------------------
Ben Dooks (1):
hw/intc/arm_gicv3: ICC_PMR_EL1 high bits should be RAZ
Gavin Shan (1):
hw/core/machine: Constify MachineClass::valid_cpu_types[]
Marcin Juszkiewicz (1):
target/arm: enable FEAT_RNG on Neoverse-N2
Philippe Mathieu-Daudé (4):
hw/arm/stm32f405: Report error when incorrect CPU is used
hw/arm/stm32f205: Report error when incorrect CPU is used
hw/arm/stm32f100: Report error when incorrect CPU is used
hw/arm/fsl-imx: Do not ignore Error argument
Richard Henderson (1):
target/arm: Fix SME FMOPA (16-bit), BFMOPA
include/hw/arm/stm32f100_soc.h | 4 ----
include/hw/arm/stm32f205_soc.h | 4 ----
include/hw/arm/stm32f405_soc.h | 4 ----
include/hw/boards.h | 2 +-
hw/arm/fsl-imx25.c | 3 ++-
hw/arm/fsl-imx6.c | 3 ++-
hw/arm/netduino2.c | 7 ++++++-
hw/arm/netduinoplus2.c | 7 ++++++-
hw/arm/olimex-stm32-h405.c | 8 ++++++--
hw/arm/stm32f100_soc.c | 9 ++-------
hw/arm/stm32f205_soc.c | 9 ++-------
hw/arm/stm32f405_soc.c | 8 +-------
hw/arm/stm32vldiscovery.c | 7 ++++++-
hw/hppa/machine.c | 22 ++++++++++------------
hw/intc/arm_gicv3_cpuif.c | 4 ++--
hw/m68k/q800.c | 11 +++++------
target/arm/tcg/cpu64.c | 2 +-
target/arm/tcg/sme_helper.c | 10 ++++------
18 files changed, 56 insertions(+), 68 deletions(-)
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PULL 0/8] target-arm queue
2023-11-21 10:24 Peter Maydell
@ 2023-11-21 15:14 ` Stefan Hajnoczi
0 siblings, 0 replies; 18+ messages in thread
From: Stefan Hajnoczi @ 2023-11-21 15:14 UTC (permalink / raw)
To: Peter Maydell; +Cc: qemu-devel
[-- Attachment #1: Type: text/plain, Size: 115 bytes --]
Applied, thanks.
Please update the changelog at https://wiki.qemu.org/ChangeLog/8.2 for any user-visible changes.
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]
^ permalink raw reply [flat|nested] 18+ messages in thread
* [PULL 0/8] target-arm queue
@ 2025-07-25 11:41 Peter Maydell
2025-07-25 15:25 ` Stefan Hajnoczi
0 siblings, 1 reply; 18+ messages in thread
From: Peter Maydell @ 2025-07-25 11:41 UTC (permalink / raw)
To: qemu-devel
Hi; here is the arm pullreq for rc1. The diffstate looks a bit big but
most of it is because we had to expand a descriptor value from 32 to
64 bits, which meant updating a lot of function prototypes and definitions
from uint32_t to uint64_t in a fairly mechanical way.
thanks
-- PMM
The following changes since commit 9e601684dc24a521bb1d23215a63e5c6e79ea0bb:
Update version for the v10.1.0-rc0 release (2025-07-22 15:48:48 -0400)
are available in the Git repository at:
https://gitlab.com/pm215/qemu.git tags/pull-target-arm-20250725
for you to fetch changes up to a7aa2af13e287e11cb2d73972353bfec161803a4:
target/arm: hvf: stubbing reads to LORC_EL1 (2025-07-25 10:39:32 +0100)
----------------------------------------------------------------
target-arm queue:
* Fix various bugs in SMEp/SVE2p1 load/store handling
* hw/arm/smmu-common: Avoid using inlined functions with external linkage
* target/arm: hvf: stubbing reads to LORC_EL1
----------------------------------------------------------------
JianChunfu (1):
hw/arm/smmu-common: Avoid using inlined functions with external linkage
Mohamed Mediouni (1):
target/arm: hvf: stubbing reads to LORC_EL1
Peter Maydell (3):
target/arm: LD1Q, ST1Q are vector + scalar, not scalar + vector
target/arm: Pass correct esize to sve_st1_z() for LD1Q, ST1Q
target/arm: Fix LD1W, LD1D to 128-bit elements
Richard Henderson (3):
target/arm: Expand the descriptor for SME/SVE memory ops to i64
target/arm: Pack mtedesc into upper 32 bits of descriptor
decodetree: Infer argument set before inferring format
target/arm/internals.h | 8 +-
target/arm/tcg/helper-sme.h | 144 ++---
target/arm/tcg/helper-sve.h | 1196 +++++++++++++++++++--------------------
target/arm/tcg/translate-a64.h | 2 +-
target/arm/tcg/sve.decode | 12 +-
tests/decode/succ_infer1.decode | 4 +
hw/arm/smmu-common.c | 2 +-
target/arm/hvf/hvf.c | 4 +
target/arm/tcg/sme_helper.c | 30 +-
target/arm/tcg/sve_helper.c | 185 +++---
target/arm/tcg/translate-sme.c | 6 +-
target/arm/tcg/translate-sve.c | 103 ++--
scripts/decodetree.py | 7 +-
tests/decode/meson.build | 1 +
14 files changed, 877 insertions(+), 827 deletions(-)
create mode 100644 tests/decode/succ_infer1.decode
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PULL 0/8] target-arm queue
2025-07-25 11:41 Peter Maydell
@ 2025-07-25 15:25 ` Stefan Hajnoczi
0 siblings, 0 replies; 18+ messages in thread
From: Stefan Hajnoczi @ 2025-07-25 15:25 UTC (permalink / raw)
To: Peter Maydell; +Cc: qemu-devel
[-- Attachment #1: Type: text/plain, Size: 116 bytes --]
Applied, thanks.
Please update the changelog at https://wiki.qemu.org/ChangeLog/10.1 for any user-visible changes.
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]
^ permalink raw reply [flat|nested] 18+ messages in thread
* [PULL 0/8] target-arm queue
@ 2025-08-01 15:51 Peter Maydell
2025-08-01 15:51 ` [PULL 1/8] target/arm: add support for 64-bit PMCCNTR in AArch32 mode Peter Maydell
` (8 more replies)
0 siblings, 9 replies; 18+ messages in thread
From: Peter Maydell @ 2025-08-01 15:51 UTC (permalink / raw)
To: qemu-devel
Hi; here's the target-arm pullreq for rc2; contents are
just some small bug fixes.
thanks
-- PMM
The following changes since commit 4e06566dbd1b1251c2788af26a30bd148d4eb6c1:
Merge tag 'pull-riscv-to-apply-20250730-2' of https://github.com/alistair23/qemu into staging (2025-07-30 09:59:30 -0400)
are available in the Git repository at:
https://gitlab.com/pm215/qemu.git tags/pull-target-arm-20250801
for you to fetch changes up to 676ab6a21117858393a4440e4cdc3d314277cf20:
tests/tcg: Fix run for tests with specific plugin (2025-08-01 16:48:50 +0100)
----------------------------------------------------------------
target-arm queue:
* Add missing 64-bit PMCCNTR in AArch32 mode
* Reinstate bogus AArch32 DBGDTRTX register for migration compat
* fix big-endian handling of AArch64 FPU registers in gdbstub
* fix handling of setting SVE registers from gdbstub
* hw/intc/arm_gicv3_kvm: fix writing of enable/active/pending state to KVM
* hw/display/framebuffer: Add cast to force 64x64 multiply
* tests/tcg: Fix run for tests with specific plugin
----------------------------------------------------------------
Alex Richardson (1):
target/arm: add support for 64-bit PMCCNTR in AArch32 mode
Gustavo Romero (1):
tests/tcg: Fix run for tests with specific plugin
Peter Maydell (2):
hw/display/framebuffer: Add cast to force 64x64 multiply
target/arm: Reinstate bogus AArch32 DBGDTRTX register for migration compat
Vacha Bhavsar (2):
target/arm: Fix big-endian handling of NEON gdb remote debugging
target/arm: Fix handling of setting SVE registers from gdb
Zenghui Yu (2):
hw/intc/arm_gicv3_kvm: Remove writes to ICPENDR registers
hw/intc/arm_gicv3_kvm: Write all 1's to clear enable/active
hw/display/framebuffer.c | 6 ++--
hw/intc/arm_gicv3_kvm.c | 6 ++--
target/arm/cpregs-pmu.c | 29 ++++++++++++++----
target/arm/debug_helper.c | 29 ++++++++++++++++++
target/arm/gdbstub64.c | 35 +++++++++++++++++-----
tests/tcg/Makefile.target | 20 +++++++++++--
tests/tcg/multiarch/Makefile.target | 2 +-
tests/tcg/multiarch/system/Makefile.softmmu-target | 2 +-
tests/tcg/x86_64/Makefile.softmmu-target | 2 +-
9 files changed, 106 insertions(+), 25 deletions(-)
^ permalink raw reply [flat|nested] 18+ messages in thread
* [PULL 1/8] target/arm: add support for 64-bit PMCCNTR in AArch32 mode
2025-08-01 15:51 [PULL 0/8] target-arm queue Peter Maydell
@ 2025-08-01 15:51 ` Peter Maydell
2025-08-01 15:51 ` [PULL 2/8] hw/intc/arm_gicv3_kvm: Remove writes to ICPENDR registers Peter Maydell
` (7 subsequent siblings)
8 siblings, 0 replies; 18+ messages in thread
From: Peter Maydell @ 2025-08-01 15:51 UTC (permalink / raw)
To: qemu-devel
From: Alex Richardson <alexrichardson@google.com>
In the PMUv3, a new AArch32 64-bit (MCRR/MRRC) accessor for the
PMCCNTR was added. In QEMU we forgot to implement this, so only
provide the 32-bit accessor. Since we have a 64-bit PMCCNTR
sysreg for AArch64, adding the 64-bit AArch32 version is easy.
We add the PMCCNTR to the v8_cp_reginfo because PMUv3 was added
in the ARMv8 architecture. This is consistent with how we
handle the existing PMCCNTR support, where we always implement
it for all v7 CPUs. This is arguably something we should
clean up so it is gated on ARM_FEATURE_PMU and/or an ID
register check for the relevant PMU version, but we should
do that as its own tidyup rather than being inconsistent between
this PMCCNTR accessor and the others.
Since the register name is the same as the 32-bit PMCCNTR, we set
ARM_CP_NO_GDB on the 32-bit one to avoid generating an invalid GDB XML.
See https://developer.arm.com/documentation/ddi0601/2024-06/AArch32-Registers/PMCCNTR--Performance-Monitors-Cycle-Count-Register?lang=en
Note for potential backporting:
* this code in cpregs-pmu.c will be in helper.c on stable
branches that don't have commit ae2086426d37
Cc: qemu-stable@nongnu.org
Signed-off-by: Alex Richardson <alexrichardson@google.com>
Message-id: 20250725170136.145116-1-alexrichardson@google.com
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
---
target/arm/cpregs-pmu.c | 29 ++++++++++++++++++++++++-----
1 file changed, 24 insertions(+), 5 deletions(-)
diff --git a/target/arm/cpregs-pmu.c b/target/arm/cpregs-pmu.c
index 0f295b1376c..9c4431c18ba 100644
--- a/target/arm/cpregs-pmu.c
+++ b/target/arm/cpregs-pmu.c
@@ -1067,11 +1067,6 @@ static const ARMCPRegInfo v7_pm_reginfo[] = {
.fgt = FGT_PMSELR_EL0,
.fieldoffset = offsetof(CPUARMState, cp15.c9_pmselr),
.writefn = pmselr_write, .raw_writefn = raw_write, },
- { .name = "PMCCNTR", .cp = 15, .crn = 9, .crm = 13, .opc1 = 0, .opc2 = 0,
- .access = PL0_RW, .resetvalue = 0, .type = ARM_CP_ALIAS | ARM_CP_IO,
- .fgt = FGT_PMCCNTR_EL0,
- .readfn = pmccntr_read, .writefn = pmccntr_write32,
- .accessfn = pmreg_access_ccntr },
{ .name = "PMCCNTR_EL0", .state = ARM_CP_STATE_AA64,
.opc0 = 3, .opc1 = 3, .crn = 9, .crm = 13, .opc2 = 0,
.access = PL0_RW, .accessfn = pmreg_access_ccntr,
@@ -1211,6 +1206,23 @@ void define_pm_cpregs(ARMCPU *cpu)
define_one_arm_cp_reg(cpu, &pmcr);
define_one_arm_cp_reg(cpu, &pmcr64);
define_arm_cp_regs(cpu, v7_pm_reginfo);
+ /*
+ * 32-bit AArch32 PMCCNTR. We don't expose this to GDB if the
+ * new-in-v8 PMUv3 64-bit AArch32 PMCCNTR register is implemented
+ * (as that will provide the GDB user's view of "PMCCNTR").
+ */
+ ARMCPRegInfo pmccntr = {
+ .name = "PMCCNTR",
+ .cp = 15, .crn = 9, .crm = 13, .opc1 = 0, .opc2 = 0,
+ .access = PL0_RW, .accessfn = pmreg_access_ccntr,
+ .resetvalue = 0, .type = ARM_CP_ALIAS | ARM_CP_IO,
+ .fgt = FGT_PMCCNTR_EL0,
+ .readfn = pmccntr_read, .writefn = pmccntr_write32,
+ };
+ if (arm_feature(env, ARM_FEATURE_V8)) {
+ pmccntr.type |= ARM_CP_NO_GDB;
+ }
+ define_one_arm_cp_reg(cpu, &pmccntr);
for (unsigned i = 0, pmcrn = pmu_num_counters(env); i < pmcrn; i++) {
g_autofree char *pmevcntr_name = g_strdup_printf("PMEVCNTR%d", i);
@@ -1276,6 +1288,13 @@ void define_pm_cpregs(ARMCPU *cpu)
.access = PL0_R, .accessfn = pmreg_access, .type = ARM_CP_CONST,
.fgt = FGT_PMCEIDN_EL0,
.resetvalue = cpu->pmceid1 },
+ /* AArch32 64-bit PMCCNTR view: added in PMUv3 with Armv8 */
+ { .name = "PMCCNTR", .state = ARM_CP_STATE_AA32,
+ .cp = 15, .crm = 9, .opc1 = 0,
+ .access = PL0_RW, .accessfn = pmreg_access_ccntr, .resetvalue = 0,
+ .type = ARM_CP_ALIAS | ARM_CP_IO | ARM_CP_64BIT,
+ .fgt = FGT_PMCCNTR_EL0, .readfn = pmccntr_read,
+ .writefn = pmccntr_write, },
};
define_arm_cp_regs(cpu, v8_pm_reginfo);
}
--
2.43.0
^ permalink raw reply related [flat|nested] 18+ messages in thread
* [PULL 2/8] hw/intc/arm_gicv3_kvm: Remove writes to ICPENDR registers
2025-08-01 15:51 [PULL 0/8] target-arm queue Peter Maydell
2025-08-01 15:51 ` [PULL 1/8] target/arm: add support for 64-bit PMCCNTR in AArch32 mode Peter Maydell
@ 2025-08-01 15:51 ` Peter Maydell
2025-08-01 15:51 ` [PULL 3/8] hw/intc/arm_gicv3_kvm: Write all 1's to clear enable/active Peter Maydell
` (6 subsequent siblings)
8 siblings, 0 replies; 18+ messages in thread
From: Peter Maydell @ 2025-08-01 15:51 UTC (permalink / raw)
To: qemu-devel
From: Zenghui Yu <zenghui.yu@linux.dev>
As per the arm-vgic-v3 kernel doc [1]:
Accesses to GICD_ICPENDR register region and GICR_ICPENDR0 registers
have RAZ/WI semantics, meaning that reads always return 0 and writes
are always ignored.
The state behind these registers (both 0 and 1 bits) is written by
writing to the GICD_ISPENDR and GICR_ISPENDR0 registers, unlike
some of the other set/clear register pairs.
Remove the useless writes to ICPENDR registers in kvm_arm_gicv3_put().
[1] https://docs.kernel.org/virt/kvm/devices/arm-vgic-v3.html
Signed-off-by: Zenghui Yu <zenghui.yu@linux.dev>
Message-id: 20250729161650.43758-2-zenghui.yu@linux.dev
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
---
hw/intc/arm_gicv3_kvm.c | 4 +---
1 file changed, 1 insertion(+), 3 deletions(-)
diff --git a/hw/intc/arm_gicv3_kvm.c b/hw/intc/arm_gicv3_kvm.c
index 8ed88e74299..f798a6e28ca 100644
--- a/hw/intc/arm_gicv3_kvm.c
+++ b/hw/intc/arm_gicv3_kvm.c
@@ -387,8 +387,6 @@ static void kvm_arm_gicv3_put(GICv3State *s)
reg = c->level;
kvm_gic_line_level_access(s, 0, ncpu, ®, true);
- reg = ~0;
- kvm_gicr_access(s, GICR_ICPENDR0, ncpu, ®, true);
reg = c->gicr_ipendr0;
kvm_gicr_access(s, GICR_ISPENDR0, ncpu, ®, true);
@@ -445,7 +443,7 @@ static void kvm_arm_gicv3_put(GICv3State *s)
kvm_gic_put_line_level_bmp(s, s->level);
/* s->pending bitmap -> GICD_ISPENDRn */
- kvm_dist_putbmp(s, GICD_ISPENDR, GICD_ICPENDR, s->pending);
+ kvm_dist_putbmp(s, GICD_ISPENDR, 0, s->pending);
/* s->active bitmap -> GICD_ISACTIVERn */
kvm_dist_putbmp(s, GICD_ISACTIVER, GICD_ICACTIVER, s->active);
--
2.43.0
^ permalink raw reply related [flat|nested] 18+ messages in thread
* [PULL 3/8] hw/intc/arm_gicv3_kvm: Write all 1's to clear enable/active
2025-08-01 15:51 [PULL 0/8] target-arm queue Peter Maydell
2025-08-01 15:51 ` [PULL 1/8] target/arm: add support for 64-bit PMCCNTR in AArch32 mode Peter Maydell
2025-08-01 15:51 ` [PULL 2/8] hw/intc/arm_gicv3_kvm: Remove writes to ICPENDR registers Peter Maydell
@ 2025-08-01 15:51 ` Peter Maydell
2025-08-01 15:51 ` [PULL 4/8] hw/display/framebuffer: Add cast to force 64x64 multiply Peter Maydell
` (5 subsequent siblings)
8 siblings, 0 replies; 18+ messages in thread
From: Peter Maydell @ 2025-08-01 15:51 UTC (permalink / raw)
To: qemu-devel
From: Zenghui Yu <zenghui.yu@linux.dev>
KVM's userspace access interface to the GICD enable and active bits
is via set/clear register pairs which implement the hardware's "write
1s to the clear register to clear the 0 bits, and write 1s to the set
register to set the 1 bits" semantics. We didn't get this right,
because we were writing 0 to the clear register.
Writing 0 to GICD_IC{ENABLE,ACTIVE}R architecturally has no effect on
interrupt status (all writes are simply ignored by KVM) and doesn't
comply with the intention of "first write to the clear-reg to clear
all bits".
Write all 1's to actually clear the enable/active status.
This didn't have any adverse effects on migration because there
we start with a clean VM state; it would be guest-visible when
doing a system reset, but since Linux always cleans up the
register state of the GIC during bootup before it enables it
most users won't have run into a problem here.
Cc: qemu-stable@nongnu.org
Fixes: 367b9f527bec ("hw/intc/arm_gicv3_kvm: Implement get/put functions")
Signed-off-by: Zenghui Yu <zenghui.yu@linux.dev>
Message-id: 20250729161650.43758-3-zenghui.yu@linux.dev
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
---
hw/intc/arm_gicv3_kvm.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/hw/intc/arm_gicv3_kvm.c b/hw/intc/arm_gicv3_kvm.c
index f798a6e28ca..6166283cd1a 100644
--- a/hw/intc/arm_gicv3_kvm.c
+++ b/hw/intc/arm_gicv3_kvm.c
@@ -295,7 +295,7 @@ static void kvm_dist_putbmp(GICv3State *s, uint32_t offset,
* the 1 bits.
*/
if (clroffset != 0) {
- reg = 0;
+ reg = ~0;
kvm_gicd_access(s, clroffset, ®, true);
clroffset += 4;
}
--
2.43.0
^ permalink raw reply related [flat|nested] 18+ messages in thread
* [PULL 4/8] hw/display/framebuffer: Add cast to force 64x64 multiply
2025-08-01 15:51 [PULL 0/8] target-arm queue Peter Maydell
` (2 preceding siblings ...)
2025-08-01 15:51 ` [PULL 3/8] hw/intc/arm_gicv3_kvm: Write all 1's to clear enable/active Peter Maydell
@ 2025-08-01 15:51 ` Peter Maydell
2025-08-01 15:51 ` [PULL 5/8] target/arm: Reinstate bogus AArch32 DBGDTRTX register for migration compat Peter Maydell
` (4 subsequent siblings)
8 siblings, 0 replies; 18+ messages in thread
From: Peter Maydell @ 2025-08-01 15:51 UTC (permalink / raw)
To: qemu-devel
In framebuffer_update_display(), Coverity complains because we
multiply two values of type 'int' (which will be done as a 32x32
multiply and so in theory might overflow) and then add the result to
a ram_addr_t, which can be 64 bits.
4GB framebuffers are not plausible anyway, but keep Coverity happy
by adding casts which force these multiplies to be done as 64x64.
Coverity: CID 1487248
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Manos Pitsidianakis <manos.pitsidianakis@linaro.org>
Message-id: 20250710174312.1313177-1-peter.maydell@linaro.org
---
hw/display/framebuffer.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/hw/display/framebuffer.c b/hw/display/framebuffer.c
index 4485aa335bb..b4296e8a33e 100644
--- a/hw/display/framebuffer.c
+++ b/hw/display/framebuffer.c
@@ -95,9 +95,9 @@ void framebuffer_update_display(
}
first = -1;
- addr += i * src_width;
- src += i * src_width;
- dest += i * dest_row_pitch;
+ addr += (uint64_t)i * src_width;
+ src += (uint64_t)i * src_width;
+ dest += (uint64_t)i * dest_row_pitch;
snap = memory_region_snapshot_and_clear_dirty(mem, addr, src_width * rows,
DIRTY_MEMORY_VGA);
--
2.43.0
^ permalink raw reply related [flat|nested] 18+ messages in thread
* [PULL 5/8] target/arm: Reinstate bogus AArch32 DBGDTRTX register for migration compat
2025-08-01 15:51 [PULL 0/8] target-arm queue Peter Maydell
` (3 preceding siblings ...)
2025-08-01 15:51 ` [PULL 4/8] hw/display/framebuffer: Add cast to force 64x64 multiply Peter Maydell
@ 2025-08-01 15:51 ` Peter Maydell
2025-08-01 15:51 ` [PULL 6/8] target/arm: Fix big-endian handling of NEON gdb remote debugging Peter Maydell
` (3 subsequent siblings)
8 siblings, 0 replies; 18+ messages in thread
From: Peter Maydell @ 2025-08-01 15:51 UTC (permalink / raw)
To: qemu-devel
In commit 655659a74a we fixed some bugs in the encoding of the
Debug Communications Channel registers, including that we were
incorrectly exposing an AArch32 register at p14, 3, c0, c5, 0.
Unfortunately removing a register is a break of forwards migration
compatibility for TCG, because we will fail the migration if the
source QEMU passes us a cpreg which the destination QEMU does not
have. We don't have a mechanism for saying "it's OK to ignore this
sysreg in the inbound data", so for the 10.1 release reinstate the
incorrect AArch32 register.
(We probably have had other cases in the past of breaking migration
compatibility like this, but we didn't notice because we didn't test
and in any case not that many people care about TCG migration
compatibility. KVM migration compat is not affected because for KVM
we treat the kernel as the source of truth for what system registers
are present.)
Fixes: 655659a74a36b ("target/arm: Correct encoding of Debug Communications Channel registers")
Reported-by: Fabiano Rosas <farosas@suse.de>
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Fabiano Rosas <farosas@suse.de>
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-id: 20250731134338.250203-1-peter.maydell@linaro.org
---
target/arm/debug_helper.c | 29 +++++++++++++++++++++++++++++
1 file changed, 29 insertions(+)
diff --git a/target/arm/debug_helper.c b/target/arm/debug_helper.c
index aee06d4d426..579516e1541 100644
--- a/target/arm/debug_helper.c
+++ b/target/arm/debug_helper.c
@@ -940,6 +940,13 @@ static void dbgclaimclr_write(CPUARMState *env, const ARMCPRegInfo *ri,
env->cp15.dbgclaim &= ~(value & 0xFF);
}
+static CPAccessResult access_bogus(CPUARMState *env, const ARMCPRegInfo *ri,
+ bool isread)
+{
+ /* Always UNDEF, as if this cpreg didn't exist */
+ return CP_ACCESS_UNDEFINED;
+}
+
static const ARMCPRegInfo debug_cp_reginfo[] = {
/*
* DBGDRAR, DBGDSAR: always RAZ since we don't implement memory mapped
@@ -1002,6 +1009,28 @@ static const ARMCPRegInfo debug_cp_reginfo[] = {
.opc0 = 2, .opc1 = 3, .crn = 0, .crm = 4, .opc2 = 0,
.access = PL0_RW, .accessfn = access_tdcc,
.type = ARM_CP_CONST, .resetvalue = 0 },
+ /*
+ * This is not a real AArch32 register. We used to incorrectly expose
+ * this due to a QEMU bug; to avoid breaking migration compatibility we
+ * need to continue to provide it so that we don't fail the inbound
+ * migration when it tells us about a sysreg that we don't have.
+ * We set an always-fails .accessfn, which means that the guest doesn't
+ * actually see this register (it will always UNDEF, identically to if
+ * there were no cpreg definition for it other than that we won't print
+ * a LOG_UNIMP message about it), and we set the ARM_CP_NO_GDB flag so the
+ * gdbstub won't see it either.
+ * (We can't just set .access = 0, because add_cpreg_to_hashtable()
+ * helpfully ignores cpregs which aren't accessible to the highest
+ * implemented EL.)
+ *
+ * TODO: implement a system for being able to describe "this register
+ * can be ignored if it appears in the inbound stream"; then we can
+ * remove this temporary hack.
+ */
+ { .name = "BOGUS_DBGDTR_EL0", .state = ARM_CP_STATE_AA32,
+ .cp = 14, .opc1 = 3, .crn = 0, .crm = 5, .opc2 = 0,
+ .access = PL0_RW, .accessfn = access_bogus,
+ .type = ARM_CP_CONST | ARM_CP_NO_GDB, .resetvalue = 0 },
/*
* OSECCR_EL1 provides a mechanism for an operating system
* to access the contents of EDECCR. EDECCR is not implemented though,
--
2.43.0
^ permalink raw reply related [flat|nested] 18+ messages in thread
* [PULL 6/8] target/arm: Fix big-endian handling of NEON gdb remote debugging
2025-08-01 15:51 [PULL 0/8] target-arm queue Peter Maydell
` (4 preceding siblings ...)
2025-08-01 15:51 ` [PULL 5/8] target/arm: Reinstate bogus AArch32 DBGDTRTX register for migration compat Peter Maydell
@ 2025-08-01 15:51 ` Peter Maydell
2025-08-01 15:51 ` [PULL 7/8] target/arm: Fix handling of setting SVE registers from gdb Peter Maydell
` (2 subsequent siblings)
8 siblings, 0 replies; 18+ messages in thread
From: Peter Maydell @ 2025-08-01 15:51 UTC (permalink / raw)
To: qemu-devel
From: Vacha Bhavsar <vacha.bhavsar@oss.qualcomm.com>
In the code for allowing the gdbstub to set the value of an AArch64
FP/SIMD register, we weren't accounting for target_big_endian()
being true. This meant that for aarch64_be-linux-user we would
set the two halves of the FP register the wrong way around.
The much more common case of a little-endian guest is not affected;
nor are big-endian hosts.
Correct the handling of this case.
Cc: qemu-stable@nongnu.org
Signed-off-by: Vacha Bhavsar <vacha.bhavsar@oss.qualcomm.com>
Message-id: 20250722173736.2332529-2-vacha.bhavsar@oss.qualcomm.com
[PMM: added comment, expanded commit message, fixed missing space]
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
---
target/arm/gdbstub64.c | 18 ++++++++++++++++--
1 file changed, 16 insertions(+), 2 deletions(-)
diff --git a/target/arm/gdbstub64.c b/target/arm/gdbstub64.c
index 64ee9b3b567..4fce58d895e 100644
--- a/target/arm/gdbstub64.c
+++ b/target/arm/gdbstub64.c
@@ -115,8 +115,22 @@ int aarch64_gdb_set_fpu_reg(CPUState *cs, uint8_t *buf, int reg)
/* 128 bit FP register */
{
uint64_t *q = aa64_vfp_qreg(env, reg);
- q[0] = ldq_le_p(buf);
- q[1] = ldq_le_p(buf + 8);
+
+ /*
+ * On the wire these are target-endian 128 bit values.
+ * In the CPU state these are host-order uint64_t values
+ * with the least-significant one first. This means they're
+ * the other way around for target_big_endian() (which is
+ * only true for us for aarch64_be-linux-user).
+ */
+ if (target_big_endian()) {
+ q[1] = ldq_p(buf);
+ q[0] = ldq_p(buf + 8);
+ } else{
+ q[0] = ldq_p(buf);
+ q[1] = ldq_p(buf + 8);
+ }
+
return 16;
}
case 32:
--
2.43.0
^ permalink raw reply related [flat|nested] 18+ messages in thread
* [PULL 7/8] target/arm: Fix handling of setting SVE registers from gdb
2025-08-01 15:51 [PULL 0/8] target-arm queue Peter Maydell
` (5 preceding siblings ...)
2025-08-01 15:51 ` [PULL 6/8] target/arm: Fix big-endian handling of NEON gdb remote debugging Peter Maydell
@ 2025-08-01 15:51 ` Peter Maydell
2025-08-01 15:51 ` [PULL 8/8] tests/tcg: Fix run for tests with specific plugin Peter Maydell
2025-08-05 1:27 ` [PULL 0/8] target-arm queue Stefan Hajnoczi
8 siblings, 0 replies; 18+ messages in thread
From: Peter Maydell @ 2025-08-01 15:51 UTC (permalink / raw)
To: qemu-devel
From: Vacha Bhavsar <vacha.bhavsar@oss.qualcomm.com>
The code to handle setting SVE registers via the gdbstub is broken:
* it sets each pair of elements in the zregs[].d[] array in the
wrong order for the most common (little endian) case: the least
significant 64-bit value comes first
* it makes no attempt to handle target_endian()
* it does a simple copy out of the (target endian) gdbstub buffer
into the (host endan) zregs data structure, which is wrong on
big endian hosts
Fix all these problems:
* use ldq_p() to read from the gdbstub buffer
* check target_big_endian() to see if we need to handle the
128-bit values the opposite way around
Cc: qemu-stable@nongnu.org
Signed-off-by: Vacha Bhavsar <vacha.bhavsar@oss.qualcomm.com>
Message-id: 20250722173736.2332529-3-vacha.bhavsar@oss.qualcomm.com
[PMM: adjusted commit message, fixed spacing]
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
---
target/arm/gdbstub64.c | 17 ++++++++++++-----
1 file changed, 12 insertions(+), 5 deletions(-)
diff --git a/target/arm/gdbstub64.c b/target/arm/gdbstub64.c
index 4fce58d895e..08e28585396 100644
--- a/target/arm/gdbstub64.c
+++ b/target/arm/gdbstub64.c
@@ -206,10 +206,17 @@ int aarch64_gdb_set_sve_reg(CPUState *cs, uint8_t *buf, int reg)
case 0 ... 31:
{
int vq, len = 0;
- uint64_t *p = (uint64_t *) buf;
for (vq = 0; vq < cpu->sve_max_vq; vq++) {
- env->vfp.zregs[reg].d[vq * 2 + 1] = *p++;
- env->vfp.zregs[reg].d[vq * 2] = *p++;
+ if (target_big_endian()) {
+ env->vfp.zregs[reg].d[vq * 2 + 1] = ldq_p(buf);
+ buf += 8;
+ env->vfp.zregs[reg].d[vq * 2] = ldq_p(buf);
+ } else{
+ env->vfp.zregs[reg].d[vq * 2] = ldq_p(buf);
+ buf += 8;
+ env->vfp.zregs[reg].d[vq * 2 + 1] = ldq_p(buf);
+ }
+ buf += 8;
len += 16;
}
return len;
@@ -224,9 +231,9 @@ int aarch64_gdb_set_sve_reg(CPUState *cs, uint8_t *buf, int reg)
{
int preg = reg - 34;
int vq, len = 0;
- uint64_t *p = (uint64_t *) buf;
for (vq = 0; vq < cpu->sve_max_vq; vq = vq + 4) {
- env->vfp.pregs[preg].p[vq / 4] = *p++;
+ env->vfp.pregs[preg].p[vq / 4] = ldq_p(buf);
+ buf += 8;
len += 8;
}
return len;
--
2.43.0
^ permalink raw reply related [flat|nested] 18+ messages in thread
* [PULL 8/8] tests/tcg: Fix run for tests with specific plugin
2025-08-01 15:51 [PULL 0/8] target-arm queue Peter Maydell
` (6 preceding siblings ...)
2025-08-01 15:51 ` [PULL 7/8] target/arm: Fix handling of setting SVE registers from gdb Peter Maydell
@ 2025-08-01 15:51 ` Peter Maydell
2025-08-05 1:27 ` [PULL 0/8] target-arm queue Stefan Hajnoczi
8 siblings, 0 replies; 18+ messages in thread
From: Peter Maydell @ 2025-08-01 15:51 UTC (permalink / raw)
To: qemu-devel
From: Gustavo Romero <gustavo.romero@linaro.org>
Commit 25aaf0cb7f (“tests/tcg: reduce the number of plugin test
combinations”) added support for running tests with specific plugins
passed via the EXTRA_RUNS variable.
However, due to the optimization, the rules generated as a shuffled
combination of tests and plugins might not cover the rules required to
run the tests with a specific plugin passed via EXTRA_RUNS.
This commit fixes it by correctly generating the rules for the tests
that require a specific plugin to run, which are now passed via the
EXTRA_RUNS_WITH_PLUGIN instead of via the EXTRA_RUNS variable.
The fix essentially excludes the tests passed via EXTRA_RUNS_WITH_PLUGIN
from the rules created by the shuffled combination of tests and plugins,
to avoid running the tests twice, and generates the rules for the
test/plugin combinations listed in the EXTRA_RUNS_WITH_PLUGIN variable.
Signed-off-by: Gustavo Romero <gustavo.romero@linaro.org>
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Tested-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Message-id: 20250801001305.2352554-1-gustavo.romero@linaro.org
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
---
tests/tcg/Makefile.target | 20 ++++++++++++++++---
tests/tcg/multiarch/Makefile.target | 2 +-
.../multiarch/system/Makefile.softmmu-target | 2 +-
tests/tcg/x86_64/Makefile.softmmu-target | 2 +-
4 files changed, 20 insertions(+), 6 deletions(-)
diff --git a/tests/tcg/Makefile.target b/tests/tcg/Makefile.target
index 18afd5be194..af72903f898 100644
--- a/tests/tcg/Makefile.target
+++ b/tests/tcg/Makefile.target
@@ -170,6 +170,10 @@ endif
PLUGINS=$(filter-out $(DISABLE_PLUGINS), \
$(patsubst %.c, lib%.so, $(notdir $(wildcard $(PLUGIN_SRC)/*.c))))
+strip-plugin = $(wordlist 1, 1, $(subst -with-, ,$1))
+extract-plugin = $(wordlist 2, 2, $(subst -with-, ,$1))
+extract-test = $(subst run-plugin-,,$(wordlist 1, 1, $(subst -with-, ,$1)))
+
# We need to ensure expand the run-plugin-TEST-with-PLUGIN
# pre-requistes manually here as we can't use stems to handle it. We
# only expand MULTIARCH_TESTS which are common on most of our targets
@@ -179,6 +183,13 @@ PLUGINS=$(filter-out $(DISABLE_PLUGINS), \
ifneq ($(MULTIARCH_TESTS),)
+# Extract extra tests from the extra test+plugin combination.
+EXTRA_TESTS_WITH_PLUGIN=$(foreach test, \
+ $(EXTRA_RUNS_WITH_PLUGIN),$(call extract-test,$(test)))
+# Exclude tests that were specified to run with specific plugins from the tests
+# which can run with any plugin combination, so we don't run it twice.
+MULTIARCH_TESTS:=$(filter-out $(EXTRA_TESTS_WITH_PLUGIN), $(MULTIARCH_TESTS))
+
NUM_PLUGINS := $(words $(PLUGINS))
NUM_TESTS := $(words $(MULTIARCH_TESTS))
@@ -186,19 +197,22 @@ define mod_plus_one
$(shell $(PYTHON) -c "print( ($(1) % $(2)) + 1 )")
endef
+# Rules for running tests with any plugin combination, i.e., no specific plugin.
$(foreach _idx, $(shell seq 1 $(NUM_TESTS)), \
$(eval _test := $(word $(_idx), $(MULTIARCH_TESTS))) \
$(eval _plugin := $(word $(call mod_plus_one, $(_idx), $(NUM_PLUGINS)), $(PLUGINS))) \
$(eval run-plugin-$(_test)-with-$(_plugin): $(_test) $(_plugin)) \
$(eval RUN_TESTS+=run-plugin-$(_test)-with-$(_plugin)))
+# Rules for running extra tests with specific plugins.
+$(foreach f,$(EXTRA_RUNS_WITH_PLUGIN), \
+ $(eval $(f): $(call extract-test,$(f)) $(call extract-plugin,$(f))))
+
endif # MULTIARCH_TESTS
endif # CONFIG_PLUGIN
-strip-plugin = $(wordlist 1, 1, $(subst -with-, ,$1))
-extract-plugin = $(wordlist 2, 2, $(subst -with-, ,$1))
-
RUN_TESTS+=$(EXTRA_RUNS)
+RUN_TESTS+=$(EXTRA_RUNS_WITH_PLUGIN)
# Some plugins need additional arguments above the default to fully
# exercise things. We can define them on a per-test basis here.
diff --git a/tests/tcg/multiarch/Makefile.target b/tests/tcg/multiarch/Makefile.target
index 38345ff8805..8dc65d7a064 100644
--- a/tests/tcg/multiarch/Makefile.target
+++ b/tests/tcg/multiarch/Makefile.target
@@ -201,7 +201,7 @@ run-plugin-test-plugin-mem-access-with-libmem.so: \
$(SRC_PATH)/tests/tcg/multiarch/check-plugin-output.sh \
$(QEMU) $<
-EXTRA_RUNS += run-plugin-test-plugin-mem-access-with-libmem.so
+EXTRA_RUNS_WITH_PLUGIN += run-plugin-test-plugin-mem-access-with-libmem.so
endif
# Update TESTS
diff --git a/tests/tcg/multiarch/system/Makefile.softmmu-target b/tests/tcg/multiarch/system/Makefile.softmmu-target
index 4171b4e6aa0..98c4eda5e00 100644
--- a/tests/tcg/multiarch/system/Makefile.softmmu-target
+++ b/tests/tcg/multiarch/system/Makefile.softmmu-target
@@ -77,5 +77,5 @@ run-plugin-memory-with-libmem.so: memory libmem.so
run-plugin-memory-with-libmem.so: PLUGIN_ARGS=$(COMMA)region-summary=true
run-plugin-memory-with-libmem.so: CHECK_PLUGIN_OUTPUT_COMMAND=$(MULTIARCH_SYSTEM_SRC)/validate-memory-counts.py $@.out
-EXTRA_RUNS += run-plugin-memory-with-libmem.so
+EXTRA_RUNS_WITH_PLUGIN += run-plugin-memory-with-libmem.so
endif
diff --git a/tests/tcg/x86_64/Makefile.softmmu-target b/tests/tcg/x86_64/Makefile.softmmu-target
index 3e30ca93074..4e65f58b570 100644
--- a/tests/tcg/x86_64/Makefile.softmmu-target
+++ b/tests/tcg/x86_64/Makefile.softmmu-target
@@ -40,5 +40,5 @@ run-plugin-patch-target-with-libpatch.so: \
run-plugin-patch-target-with-libpatch.so: \
CHECK_PLUGIN_OUTPUT_COMMAND=$(X64_SYSTEM_SRC)/validate-patch.py $@.out
run-plugin-patch-target-with-libpatch.so: patch-target libpatch.so
-EXTRA_RUNS+=run-plugin-patch-target-with-libpatch.so
+EXTRA_RUNS_WITH_PLUGIN+=run-plugin-patch-target-with-libpatch.so
endif
--
2.43.0
^ permalink raw reply related [flat|nested] 18+ messages in thread
* Re: [PULL 0/8] target-arm queue
2025-08-01 15:51 [PULL 0/8] target-arm queue Peter Maydell
` (7 preceding siblings ...)
2025-08-01 15:51 ` [PULL 8/8] tests/tcg: Fix run for tests with specific plugin Peter Maydell
@ 2025-08-05 1:27 ` Stefan Hajnoczi
8 siblings, 0 replies; 18+ messages in thread
From: Stefan Hajnoczi @ 2025-08-05 1:27 UTC (permalink / raw)
To: Peter Maydell; +Cc: qemu-devel
[-- Attachment #1: Type: text/plain, Size: 116 bytes --]
Applied, thanks.
Please update the changelog at https://wiki.qemu.org/ChangeLog/10.1 for any user-visible changes.
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]
^ permalink raw reply [flat|nested] 18+ messages in thread
end of thread, other threads:[~2025-08-05 13:04 UTC | newest]
Thread overview: 18+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-08-01 15:51 [PULL 0/8] target-arm queue Peter Maydell
2025-08-01 15:51 ` [PULL 1/8] target/arm: add support for 64-bit PMCCNTR in AArch32 mode Peter Maydell
2025-08-01 15:51 ` [PULL 2/8] hw/intc/arm_gicv3_kvm: Remove writes to ICPENDR registers Peter Maydell
2025-08-01 15:51 ` [PULL 3/8] hw/intc/arm_gicv3_kvm: Write all 1's to clear enable/active Peter Maydell
2025-08-01 15:51 ` [PULL 4/8] hw/display/framebuffer: Add cast to force 64x64 multiply Peter Maydell
2025-08-01 15:51 ` [PULL 5/8] target/arm: Reinstate bogus AArch32 DBGDTRTX register for migration compat Peter Maydell
2025-08-01 15:51 ` [PULL 6/8] target/arm: Fix big-endian handling of NEON gdb remote debugging Peter Maydell
2025-08-01 15:51 ` [PULL 7/8] target/arm: Fix handling of setting SVE registers from gdb Peter Maydell
2025-08-01 15:51 ` [PULL 8/8] tests/tcg: Fix run for tests with specific plugin Peter Maydell
2025-08-05 1:27 ` [PULL 0/8] target-arm queue Stefan Hajnoczi
-- strict thread matches above, loose matches on Subject: below --
2025-07-25 11:41 Peter Maydell
2025-07-25 15:25 ` Stefan Hajnoczi
2023-11-21 10:24 Peter Maydell
2023-11-21 15:14 ` Stefan Hajnoczi
2023-03-21 13:20 Peter Maydell
2023-03-21 17:14 ` Peter Maydell
2020-08-03 19:33 Peter Maydell
2020-08-03 21:12 ` Peter Maydell
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).