]> git.ipfire.org Git - thirdparty/qemu.git/log
thirdparty/qemu.git
3 weeks agotarget/ppc: IBM PPE42 general regs and flags
Glenn Miles [Thu, 25 Sep 2025 20:17:39 +0000 (15:17 -0500)] 
target/ppc: IBM PPE42 general regs and flags

Introduces general IBM PPE42 processor register definitions
and flags.

Signed-off-by: Glenn Miles <milesg@linux.ibm.com>
Reviewed-by: Chinmay Rath <rathc@linux.ibm.com>
Signed-off-by: Harsh Prateek Bora <harshpb@linux.ibm.com>
Link: https://lore.kernel.org/r/20250925201758.652077-2-milesg@linux.ibm.com
Message-ID: <20250925201758.652077-2-milesg@linux.ibm.com>

3 weeks agotests/powernv: Add PowerNV test for Power11
Aditya Gupta [Thu, 25 Sep 2025 17:30:49 +0000 (23:00 +0530)] 
tests/powernv: Add PowerNV test for Power11

With all Power11 support in place, add Power11 PowerNV test.

Reviewed-by: Cédric Le Goater <clg@redhat.com>
Signed-off-by: Aditya Gupta <adityag@linux.ibm.com>
Tested-by: Amit Machhiwal <amachhiw@linux.ibm.com>
Tested-by: Cédric Le Goater <clg@redhat.com>
Signed-off-by: Harsh Prateek Bora <harshpb@linux.ibm.com>
Link: https://lore.kernel.org/r/20250925173049.891406-9-adityag@linux.ibm.com
Message-ID: <20250925173049.891406-9-adityag@linux.ibm.com>

3 weeks agotests/powernv: Switch to buildroot images instead of op-build
Aditya Gupta [Thu, 25 Sep 2025 17:30:48 +0000 (23:00 +0530)] 
tests/powernv: Switch to buildroot images instead of op-build

As op-build images haven't been updated from long time (and may not get
updated in future), use buildroot images provided by cedric [1].

Use existing nvme device being used in the test to mount the initrd.

Also replace the check for "zImage loaded message" to skiboot's message
when it starts the kernel: "Starting kernel at", since we are no longer
using zImage from op-build

This is required for newer processor tests such as Power11, as the
op-build kernel image is old and doesn't support Power11.

Power11 test has been added in a later patch.

[1]: https://github.com/legoater/qemu-ppc-boot/tree/main/buildroot/qemu_ppc64le_powernv8-2025.02

Suggested-by: Cédric Le Goater <clg@kaod.org>
Reviewed-by: Cédric Le Goater <clg@redhat.com>
Signed-off-by: Aditya Gupta <adityag@linux.ibm.com>
Tested-by: Amit Machhiwal <amachhiw@linux.ibm.com>
Tested-by: Cédric Le Goater <clg@redhat.com>
Signed-off-by: Harsh Prateek Bora <harshpb@linux.ibm.com>
Link: https://lore.kernel.org/r/20250925173049.891406-8-adityag@linux.ibm.com
Message-ID: <20250925173049.891406-8-adityag@linux.ibm.com>

3 weeks agoppc/pnv: Add ChipTOD model for Power11
Aditya Gupta [Thu, 25 Sep 2025 17:30:47 +0000 (23:00 +0530)] 
ppc/pnv: Add ChipTOD model for Power11

Introduce Power11 ChipTod. The code has been copied from Power10 ChipTod
code as the Power11 core is same as Power10 core.

Reviewed-by: Cédric Le Goater <clg@redhat.com>
Signed-off-by: Aditya Gupta <adityag@linux.ibm.com>
Tested-by: Amit Machhiwal <amachhiw@linux.ibm.com>
Tested-by: Cédric Le Goater <clg@redhat.com>
Signed-off-by: Harsh Prateek Bora <harshpb@linux.ibm.com>
Link: https://lore.kernel.org/r/20250925173049.891406-7-adityag@linux.ibm.com
Message-ID: <20250925173049.891406-7-adityag@linux.ibm.com>

3 weeks agoppc/pnv: Add PHB5 PCIe Host bridge to Power11
Aditya Gupta [Thu, 25 Sep 2025 17:30:46 +0000 (23:00 +0530)] 
ppc/pnv: Add PHB5 PCIe Host bridge to Power11

Power11 also uses PHB5, same as Power10.

Add Power11 PHBs with similar code as the corresponding Power10 implementation.

Reviewed-by: Cédric Le Goater <clg@redhat.com>
Signed-off-by: Aditya Gupta <adityag@linux.ibm.com>
Tested-by: Amit Machhiwal <amachhiw@linux.ibm.com>
Tested-by: Cédric Le Goater <clg@redhat.com>
Signed-off-by: Harsh Prateek Bora <harshpb@linux.ibm.com>
Link: https://lore.kernel.org/r/20250925173049.891406-6-adityag@linux.ibm.com
Message-ID: <20250925173049.891406-6-adityag@linux.ibm.com>

3 weeks agoppc/pnv: Add XIVE2 controller to Power11
Aditya Gupta [Thu, 25 Sep 2025 17:30:45 +0000 (23:00 +0530)] 
ppc/pnv: Add XIVE2 controller to Power11

Add a XIVE2 controller to Power11 chip and machine.
The controller has the same logic as Power10.

Reviewed-by: Cédric Le Goater <clg@redhat.com>
Signed-off-by: Aditya Gupta <adityag@linux.ibm.com>
Tested-by: Amit Machhiwal <amachhiw@linux.ibm.com>
Tested-by: Cédric Le Goater <clg@redhat.com>
Signed-off-by: Harsh Prateek Bora <harshpb@linux.ibm.com>
Link: https://lore.kernel.org/r/20250925173049.891406-5-adityag@linux.ibm.com
Message-ID: <20250925173049.891406-5-adityag@linux.ibm.com>

3 weeks agoppc/pnv: Add PnvChipClass handler to get reference to interrupt controller
Aditya Gupta [Thu, 25 Sep 2025 17:30:44 +0000 (23:00 +0530)] 
ppc/pnv: Add PnvChipClass handler to get reference to interrupt controller

Existing code in XIVE2 assumes the chip to be a Power10 Chip.
Instead add a handler to get reference to the interrupt controller (XIVE)
for a given Power Chip.

Signed-off-by: Aditya Gupta <adityag@linux.ibm.com>
Reviewed-by: Cédric Le Goater <clg@redhat.com>
Tested-by: Amit Machhiwal <amachhiw@linux.ibm.com>
Tested-by: Cédric Le Goater <clg@redhat.com>
Signed-off-by: Harsh Prateek Bora <harshpb@linux.ibm.com>
Link: https://lore.kernel.org/r/20250925173049.891406-4-adityag@linux.ibm.com
Message-ID: <20250925173049.891406-4-adityag@linux.ibm.com>

3 weeks agoppc/pnv: Introduce Power11 PowerNV machine
Aditya Gupta [Thu, 25 Sep 2025 17:30:43 +0000 (23:00 +0530)] 
ppc/pnv: Introduce Power11 PowerNV machine

The Powernv11 machine doesn't have XIVE & PHBs as of now

XIVE2 interface and PHB5 added in later patches to Powernv11 machine

Also add mention of Power11 to powernv documentation

Note: A difference from P10's and P11's machine_class_init is, in P11
different number of PHBs cannot be used on the command line, ie. the
following line does NOT exist in pnv_machine_power11_class_init, which
existed in case of Power10:

    machine_class_allow_dynamic_sysbus_dev(mc, TYPE_PNV_PHB);

Reviewed-by: Cédric Le Goater <clg@redhat.com>
Signed-off-by: Aditya Gupta <adityag@linux.ibm.com>
Tested-by: Amit Machhiwal <amachhiw@linux.ibm.com>
Tested-by: Cédric Le Goater <clg@redhat.com>
Signed-off-by: Harsh Prateek Bora <harshpb@linux.ibm.com>
Link: https://lore.kernel.org/r/20250925173049.891406-3-adityag@linux.ibm.com
Message-ID: <20250925173049.891406-3-adityag@linux.ibm.com>

3 weeks agoppc/pnv: Introduce Pnv11Chip
Aditya Gupta [Thu, 25 Sep 2025 17:30:42 +0000 (23:00 +0530)] 
ppc/pnv: Introduce Pnv11Chip

Implement Pnv11Chip, currently without chiptod, xive and phb.

Chiptod, XIVE, PHB are implemented in later patches.

Since Power11 core is same as Power10, the implementation of Pnv11Chip
is a duplicate of corresponding Pnv10Chip.

Reviewed-by: Cédric Le Goater <clg@redhat.com>
Signed-off-by: Aditya Gupta <adityag@linux.ibm.com>
Tested-by: Amit Machhiwal <amachhiw@linux.ibm.com>
Tested-by: Cédric Le Goater <clg@redhat.com>
Signed-off-by: Harsh Prateek Bora <harshpb@linux.ibm.com>
Link: https://lore.kernel.org/r/20250925173049.891406-2-adityag@linux.ibm.com
Message-ID: <20250925173049.891406-2-adityag@linux.ibm.com>

3 weeks agoMerge tag 'pull-target-arm-20250926' of https://gitlab.com/pm215/qemu into staging
Richard Henderson [Fri, 26 Sep 2025 20:27:00 +0000 (13:27 -0700)] 
Merge tag 'pull-target-arm-20250926' of https://gitlab.com/pm215/qemu into staging

target-arm queue:
 * reimplement VHE alias register handling
 * replace magic GIC values by proper definitions
 * convert power control DPRINTF() uses to trace events
 * better reset related tracepoints
 * implement ID_AA64PFR2_EL1
 * hw/usb/hcd-uhci: don't assert for SETUP to non-0 endpoint
 * net/passt: Fix build failure due to missing GIO dependency

# -----BEGIN PGP SIGNATURE-----
#
# iQJNBAABCAA3FiEE4aXFk81BneKOgxXPPCUl7RQ2DN4FAmjWnkUZHHBldGVyLm1h
# eWRlbGxAbGluYXJvLm9yZwAKCRA8JSXtFDYM3upeD/4x0k6ciiJ2wRE1PFUA2KHZ
# bS12+j6Um5BNdcZtRV1aT3x3xOrW3X0JTcmhb9/UdpEPki/krQQgQX50tOiLCeU2
# U4lZke5160Gk3ThdkpELlQDnCVDuNR0wxYgy1GBgAInCa/T/qFnyWwaWBIooCCUh
# +UMJ9tP4XWKvKlkzw9ONFYChxerY2enpOewEbnfSU4NPg9pU8OEZ3yeFWaLZ3Tnl
# 0bei/iFFeuN8RtgJEkuqWI6oENEZZbxGtJ+J/+wvggAfOzfy0I6CmW6y9tQMmKe8
# fTnCQ837uHmlRPWQ615M2wWydbJ1ffdEIYDb5U6UsbfG8sMt5+qg38yo0AyDs6RK
# qJkTceuhqFTDIoi92o2+NFnohCTfASeYaCHjODgcdjGUtbZO7LZ31fOKQrdsHc5e
# chAOnzNxCu9Bt4UqpUmb+ED0fXWDahV1tmgazFS2LORYxnr2q+/WJEdwSgHXNzVy
# 2rdyUx7v7U1finhRE1nAdy8XwJTCQ3gDwDbPGBrH9mhR9DnK6eotFCljI2XnDtAE
# f1i0w/47cnyRW6KsBVK6dJObiOfBRrRYqe3Rt4nA4xjeCNmWcr5IcytpnL/2YT1p
# 1vj+RklbcK7Ns+kWH3H2a9b44zKQrtGGXf8fcNyAqT1YrzrrLUqaiKTfesGfjWit
# ekMWOulOe6UePnoC3SJHFw==
# =+Aj+
# -----END PGP SIGNATURE-----
# gpg: Signature made Fri 26 Sep 2025 07:08:05 AM PDT
# gpg:                using RSA key E1A5C593CD419DE28E8315CF3C2525ED14360CDE
# gpg:                issuer "peter.maydell@linaro.org"
# gpg: Good signature from "Peter Maydell <peter.maydell@linaro.org>" [unknown]
# gpg:                 aka "Peter Maydell <pmaydell@gmail.com>" [unknown]
# gpg:                 aka "Peter Maydell <pmaydell@chiark.greenend.org.uk>" [unknown]
# gpg:                 aka "Peter Maydell <peter@archaic.org.uk>" [unknown]
# gpg: WARNING: The key's User ID is not certified with a trusted signature!
# gpg:          There is no indication that the signature belongs to the owner.
# Primary key fingerprint: E1A5 C593 CD41 9DE2 8E83  15CF 3C25 25ED 1436 0CDE

* tag 'pull-target-arm-20250926' of https://gitlab.com/pm215/qemu: (44 commits)
  target/arm: Implement ID_AA64PFR2_EL1
  target/arm: Move ID register field defs to cpu-features.h
  target/arm: Trace vCPU reset call
  target/arm: Trace emulated firmware reset call
  target/arm: Convert power control DPRINTF() uses to trace events
  target/arm: Replace magic GIC values by proper definitions
  target/arm: Remove define_arm_vh_e2h_redirects_aliases
  target/arm: Rename some cpreg to their aarch64 names
  target/arm: Redirect VHE FOO_EL12 to FOO_EL1 during translation
  target/arm: Redirect VHE FOO_EL1 -> FOO_EL2 during translation
  target/arm: Split out redirect_cpreg
  target/arm: Rename TBFLAG_A64_NV2_MEM_E20 with *_E2H
  target/arm: Move endianness fixup for 32-bit registers
  target/arm: Move writeback of CP_ANY fields
  target/arm: Move alias setting for wildcards
  target/arm: Remove name argument to alloc_cpreg
  target/arm: Hoist the allocation of ARMCPRegInfo
  target/arm: Split out alloc_cpreg
  target/arm: Add key parameter to add_cpreg_to_hashtable
  target/arm: Move cpreg elimination to define_one_arm_cp_reg
  ...

Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
3 weeks agoMerge tag 'pull-10.2-maintainer-260925-1' of https://gitlab.com/stsquad/qemu into...
Richard Henderson [Fri, 26 Sep 2025 20:26:30 +0000 (13:26 -0700)] 
Merge tag 'pull-10.2-maintainer-260925-1' of https://gitlab.com/stsquad/qemu into staging

September maintainer updates (scripts, semihosting, plugins)

 - new gitlab-failure-analysis script
 - tweak checkpath to ignore license in removed lines
 - refactor semihosting to build once
 - add explicit assert to execlog for coverity
 - new uftrace plugin

# -----BEGIN PGP SIGNATURE-----
#
# iQEzBAABCgAdFiEEZoWumedRZ7yvyN81+9DbCVqeKkQFAmjWWJYACgkQ+9DbCVqe
# KkS1sgf+LsP0jsc1wKhzBhO4WarXXacWCDxK22riJ3aolm+gJ+b0WI4ds18A0e3R
# z/J8VJVxBZ+6Hid+tOCQwfZ+Hb1p9IofzBdZryGUvwguviNdlpEChhXXnoZkicym
# aGcC/jYRkhTx42dKRdZrSzPd3ccipqop9RvGx57bjCSBAEHYNz679p4z91kNR5a9
# UfcCzIQHbBUPZo0F9gQkNnBrjsJQhvF+gXPmmsmBI1pby6gNRQvFshrTQ1C32VpL
# VgXNc9cZ6vaREWlgb6izNjsMP7cYTMH2Ppxty/FyEMg7GTfWRjI6Ec8fJKjPFtKr
# ZbCNNAeJ9uLK6pJfTk2YxYabxx3JuQ==
# =cR9e
# -----END PGP SIGNATURE-----
# gpg: Signature made Fri 26 Sep 2025 02:10:46 AM PDT
# gpg:                using RSA key 6685AE99E75167BCAFC8DF35FBD0DB095A9E2A44
# gpg: Good signature from "Alex Bennée (Master Work Key) <alex.bennee@linaro.org>" [unknown]
# gpg: WARNING: This key is not certified with a trusted signature!
# gpg:          There is no indication that the signature belongs to the owner.
# Primary key fingerprint: 6685 AE99 E751 67BC AFC8  DF35 FBD0 DB09 5A9E 2A44

* tag 'pull-10.2-maintainer-260925-1' of https://gitlab.com/stsquad/qemu: (24 commits)
  contrib/plugins/uftrace: add documentation
  contrib/plugins/uftrace_symbols.py
  contrib/plugins/uftrace: implement x64 support
  contrib/plugins/uftrace: generate additional files for uftrace
  contrib/plugins/uftrace: implement privilege level tracing
  contrib/plugins/uftrace: implement tracing
  contrib/plugins/uftrace: track callstack
  contrib/plugins/uftrace: define cpu operations and implement aarch64
  contrib/plugins/uftrace: skeleton file
  contrib/plugins/execlog: Explicitly check for qemu_plugin_read_register() failure
  semihosting/arm-compat-semi: compile once in system and per target for user mode
  semihosting/arm-compat-semi: remove dependency on cpu.h
  semihosting/arm-compat-semi: eradicate target_long
  semihosting/arm-compat-semi: replace target_ulong
  semihosting/arm-compat-semi: eradicate sizeof(target_ulong)
  include/semihosting/common-semi: extract common_semi API
  target/{arm, riscv}/common-semi-target: eradicate target_ulong
  target/riscv/common-semi-target: remove sizeof(target_ulong)
  semihosting/arm-compat-semi: change common_semi_sys_exit_extended
  semihosting/guestfd: compile once for system/user
  ...

Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
3 weeks agoMerge tag 'pull-vfio-20250926' of https://github.com/legoater/qemu into staging
Richard Henderson [Fri, 26 Sep 2025 20:26:08 +0000 (13:26 -0700)] 
Merge tag 'pull-vfio-20250926' of https://github.com/legoater/qemu into staging

vfio queue:

* New vfio-user functional test
* Improved naming conventions

# -----BEGIN PGP SIGNATURE-----
#
# iQIzBAABCAAdFiEEoPZlSPBIlev+awtgUaNDx8/77KEFAmjWJaEACgkQUaNDx8/7
# 7KE9Kw/+Ne/AJBxJ0EceK6oCX/1d/56l8dlY7/PHa/LuX8LDzZq42c6+CC2bQ5Ze
# +C5RvM1aavUkvlW73jjmXs1/sdvqq5etGpxbf+hjlLh7uXFaceszWw0+ljH11Pk3
# INZj4iVrPTX7A2d9Gip0ouTFc02DYYllKpUnpbN9MYk0WRgoMBvZISc9T6A28oj1
# Zm24XWOW5ySux9IDIm+zSpvtRp+5r5PgwwwPZvNKBa5jqfJiw6+ZmejLUNEvwfgr
# vkBCGuCywzf+l5wX5z+ofl5GDd6YyRa5W+nDQE7viDwo0XTtZC3WxRKDpqdAruld
# fPjuflqHUpqnyabFuVVc5VV9iyBLGs0cFt2BHPn0vHRZTaCNAGZKZZDzVOP9EYuK
# Jmx5B2vCTnVbg2ZfG+ErEYAVVX97Tgks0xtUxGOpJwbImlRCKdwbrDKSFWT5NYCN
# BlfZX4iFrWLo2fntWP4c3DtM7w6Vn/x5hevyy9pD3i5D8zqDx3FaYJCuM4+5KFAO
# WenxUIkjOcJ829NBfQvF2HtJDEeuLv3eMxszU4pyRnH1vsk38ofOfvZVl2uQd7XT
# NrW207wAAOO+QxrelUGIuuMwhYuh16KnHkjjVe0yEh6htBF5ceIImqZH8SU97qWU
# vQjbcmx/fNQKlKCLc+JOCQz+KJyKahPDGcHi1vxEKXObHFI0rfw=
# =Jl4i
# -----END PGP SIGNATURE-----
# gpg: Signature made Thu 25 Sep 2025 10:33:21 PM PDT
# gpg:                using RSA key A0F66548F04895EBFE6B0B6051A343C7CFFBECA1
# gpg: Good signature from "Cédric Le Goater <clg@redhat.com>" [full]
# gpg:                 aka "Cédric Le Goater <clg@kaod.org>" [full]

* tag 'pull-vfio-20250926' of https://github.com/legoater/qemu: (29 commits)
  include/hw/vfio/vfio-device.h: fix include header guard name
  vfio-user/pci.c: rename vfio_user_pci_dev_info to vfio_user_pci_info
  vfio-user/pci.c: rename vfio_user_instance_finalize() to vfio_user_pci_finalize()
  vfio-user/pci.c: rename vfio_user_instance_init() to vfio_user_pci_init()
  vfio-user/pci.c: rename vfio_user_pci_dev_properties[] to vfio_user_pci_properties[]
  vfio-user/pci.c: rename vfio_user_pci_dev_class_init() to vfio_user_pci_class_init()
  vfio/pci.c: rename vfio_pci_nohotplug_dev_info to vfio_pci_nohotplug_info
  vfio/pci.c: rename vfio_pci_nohotplug_dev_class_init() to vfio_pci_nohotplug_class_init()
  vfio/pci.c: rename vfio_pci_dev_nohotplug_properties[] to vfio_pci_nohotplug_properties[]
  vfio/pci.c: rename vfio_pci_dev_properties[] to vfio_pci_properties[]
  vfio/pci.c: rename vfio_pci_base_dev_info to vfio_pci_device_info
  vfio/pci.c: rename vfio_pci_base_dev_class_init() to vfio_pci_device_class_init()
  hw/vfio/types.h: rename TYPE_VFIO_PCI_BASE to TYPE_VFIO_PCI_DEVICE
  vfio/pci.c: rename vfio_pci_dev_info to vfio_pci_info
  vfio/pci.c: rename vfio_pci_dev_class_init() to vfio_pci_class_init()
  vfio/pci.c: rename vfio_instance_finalize() to vfio_pci_finalize()
  vfio/pci.c: rename vfio_instance_init() to vfio_pci_init()
  vfio/spapr.c: rename VFIOContainer bcontainer field to parent_obj
  vfio/spapr.c: use QOM casts where appropriate
  vfio/vfio-iommufd.h: rename VFIOContainer bcontainer field to parent_obj
  ...

Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
3 weeks agotarget/arm: Implement ID_AA64PFR2_EL1
Peter Maydell [Tue, 23 Sep 2025 17:57:51 +0000 (18:57 +0100)] 
target/arm: Implement ID_AA64PFR2_EL1

Currently we define the ID_AA64PFR2_EL1 encoding as reserved (with
the required RAZ behaviour for unassigned system registers in the ID
register encoding space).  Newer architecture versions start to
define fields in this ID register, so define the appropriate
constants and implement it as an ID register backed by a field in
cpu->isar.  Since none of our CPUs set that isar field to non-zero,
there is no behavioural change here (other than the name exposed to
the user via the gdbstub), but this paves the way for implementing
the new features that use fields in this register.

The fields here are the ones documented in rev L.b of the Arm ARM.

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>
3 weeks agotarget/arm: Move ID register field defs to cpu-features.h
Peter Maydell [Tue, 23 Sep 2025 17:57:50 +0000 (18:57 +0100)] 
target/arm: Move ID register field defs to cpu-features.h

Currently we define constants for the ID register fields in cpu.h.
This means they're defined for a lot more code in QEMU than actually
needs them.  Move them to cpu-features.h, which is where we define
the feature functions that test fields in these registers.

There's only one place where we need to use some of these macro
definitions that we weren't already including cpu-features.h:
linux-user/arm/target_proc.h.  Otherwise this patch is a pure
movement of code from one file to the other.

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>
3 weeks agotarget/arm: Trace vCPU reset call
Philippe Mathieu-Daudé [Wed, 24 Sep 2025 16:32:54 +0000 (18:32 +0200)] 
target/arm: Trace vCPU reset call

Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
3 weeks agotarget/arm: Trace emulated firmware reset call
Philippe Mathieu-Daudé [Wed, 24 Sep 2025 16:32:53 +0000 (18:32 +0200)] 
target/arm: Trace emulated firmware reset call

Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
3 weeks agotarget/arm: Convert power control DPRINTF() uses to trace events
Philippe Mathieu-Daudé [Wed, 24 Sep 2025 16:32:52 +0000 (18:32 +0200)] 
target/arm: Convert power control DPRINTF() uses to trace events

Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
3 weeks agotarget/arm: Replace magic GIC values by proper definitions
Philippe Mathieu-Daudé [Thu, 25 Sep 2025 03:21:51 +0000 (05:21 +0200)] 
target/arm: Replace magic GIC values by proper definitions

Prefer the FIELD_DP64() macro and self-describing GIC
definitions over magic values.

Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
3 weeks agocontrib/plugins/uftrace: add documentation
Pierrick Bouvier [Mon, 22 Sep 2025 09:37:10 +0000 (10:37 +0100)] 
contrib/plugins/uftrace: add documentation

This documentation summarizes how to use the plugin, and present two
examples of the possibilities offered by it, in system and user mode.

As well, it explains how to rebuild and reproduce those examples.

Reviewed-by: Manos Pitsidianakis <manos.pitsidianakis@linaro.org>
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Message-ID: <20250902075042.223990-10-pierrick.bouvier@linaro.org>
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Message-ID: <20250922093711.2768983-26-alex.bennee@linaro.org>

3 weeks agocontrib/plugins/uftrace_symbols.py
Pierrick Bouvier [Mon, 22 Sep 2025 09:37:09 +0000 (10:37 +0100)] 
contrib/plugins/uftrace_symbols.py

usage:  contrib/plugins/uftrace_symbols.py \
        --prefix-symbols \
        arm-trusted-firmware/build/qemu/debug/bl1/bl1.elf \
        arm-trusted-firmware/build/qemu/debug/bl2/bl2.elf \
        arm-trusted-firmware/build/qemu/debug/bl31/bl31.elf \
        u-boot/u-boot:0x60000000 \
        u-boot/u-boot.relocated:0x000000023f6b6000 \
        linux/vmlinux

Will generate symbols and memory mapping files for uftrace, allowing to
have an enhanced trace, instead of raw addresses.

It takes a collection of elf files, and automatically find all their
symbols, and generate an ordered memory map based on that.

This script uses the python (native) pyelftools module.

Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Acked-by: Alex Bennée <alex.bennee@linaro.org>
Message-ID: <20250902075042.223990-9-pierrick.bouvier@linaro.org>
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Message-ID: <20250922093711.2768983-25-alex.bennee@linaro.org>

3 weeks agocontrib/plugins/uftrace: implement x64 support
Pierrick Bouvier [Mon, 22 Sep 2025 09:37:08 +0000 (10:37 +0100)] 
contrib/plugins/uftrace: implement x64 support

It's trivial to implement x64 support, as it's the same stack layout
as aarch64.

Reviewed-by: Manos Pitsidianakis <manos.pitsidianakis@linaro.org>
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Message-ID: <20250902075042.223990-8-pierrick.bouvier@linaro.org>
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Message-ID: <20250922093711.2768983-24-alex.bennee@linaro.org>

3 weeks agocontrib/plugins/uftrace: generate additional files for uftrace
Pierrick Bouvier [Mon, 22 Sep 2025 09:37:07 +0000 (10:37 +0100)] 
contrib/plugins/uftrace: generate additional files for uftrace

Beyond traces per cpu, uftrace expect to find some specific files.
- info: contains information about machine/program run
  those values are not impacting uftrace behaviour (only reported by
  uftrace info), and we simply added empty strings.
- memory mapping: how every binary is mapped in memory. For system mode,
  we generate an empty mapping (uftrace_symbols.py, coming in future
  commit, will take care of that). For user mode, we copy current
  /proc/self/maps. We don't need to do any special filtering, as
  reported addresses will necessarily concern guest program, and not
  QEMU and its libraries.
- task: list of tasks. We present every vcpu/privilege level as a
  separate process, as it's the best view we can have when generating a
  (visual) chrome trace. Using threads is less convenient in terms of
  UI.

Reviewed-by: Manos Pitsidianakis <manos.pitsidianakis@linaro.org>
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Message-ID: <20250902075042.223990-7-pierrick.bouvier@linaro.org>
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Message-ID: <20250922093711.2768983-23-alex.bennee@linaro.org>

3 weeks agocontrib/plugins/uftrace: implement privilege level tracing
Pierrick Bouvier [Mon, 22 Sep 2025 09:37:06 +0000 (10:37 +0100)] 
contrib/plugins/uftrace: implement privilege level tracing

We add new option trace-privilege-level=bool, which will create a
separate trace for each privilege level.
This allows to follow changes of privilege during execution.

We implement aarch64 operations to track current privilege level
accordingly.

Reviewed-by: Manos Pitsidianakis <manos.pitsidianakis@linaro.org>
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Message-ID: <20250902075042.223990-6-pierrick.bouvier@linaro.org>
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Message-ID: <20250922093711.2768983-22-alex.bennee@linaro.org>

3 weeks agocontrib/plugins/uftrace: implement tracing
Pierrick Bouvier [Mon, 22 Sep 2025 09:37:05 +0000 (10:37 +0100)] 
contrib/plugins/uftrace: implement tracing

We implement tracing, following uftrace format.
Trace is flushed every 32 MB, so file operations don't impact
performance at runtime.

A different trace is generated per cpu, and we ensure they have a unique
name, based on vcpu_index, while keeping room for privilege level coming
in next commit.

Uftrace format is not officially documented, but it can be found here:
https://github.com/namhyung/uftrace/blob/v0.18/libmcount/record.c#L909

Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Message-ID: <20250902075042.223990-5-pierrick.bouvier@linaro.org>
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Message-ID: <20250922093711.2768983-21-alex.bennee@linaro.org>

3 weeks agocontrib/plugins/uftrace: track callstack
Pierrick Bouvier [Mon, 22 Sep 2025 09:37:04 +0000 (10:37 +0100)] 
contrib/plugins/uftrace: track callstack

We now track callstack, based on frame pointer analysis. We can detect
function calls, returns, and discontinuities.
We implement a frame pointer based unwinding that is used for
discontinuities.

Reviewed-by: Manos Pitsidianakis <manos.pitsidianakis@linaro.org>
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Message-ID: <20250902075042.223990-4-pierrick.bouvier@linaro.org>
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Message-ID: <20250922093711.2768983-20-alex.bennee@linaro.org>

3 weeks agocontrib/plugins/uftrace: define cpu operations and implement aarch64
Pierrick Bouvier [Mon, 22 Sep 2025 09:37:03 +0000 (10:37 +0100)] 
contrib/plugins/uftrace: define cpu operations and implement aarch64

We define a new CpuOps structure that will be used to implement tracking
independently of guest architecture.

As well, we now instrument only instructions following ones that might
have touched the frame pointer.

Reviewed-by: Manos Pitsidianakis <manos.pitsidianakis@linaro.org>
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Message-ID: <20250902075042.223990-3-pierrick.bouvier@linaro.org>
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Message-ID: <20250922093711.2768983-19-alex.bennee@linaro.org>

3 weeks agocontrib/plugins/uftrace: skeleton file
Pierrick Bouvier [Mon, 22 Sep 2025 09:37:02 +0000 (10:37 +0100)] 
contrib/plugins/uftrace: skeleton file

We define a scoreboard that will hold our data per cpu. As well, we
define a buffer per cpu that will be used to read registers and memories
in a thread-safe way.

For now, we just instrument all instructions with an empty callback.

Reviewed-by: Manos Pitsidianakis <manos.pitsidianakis@linaro.org>
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Message-ID: <20250902075042.223990-2-pierrick.bouvier@linaro.org>
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Message-ID: <20250922093711.2768983-18-alex.bennee@linaro.org>

3 weeks agocontrib/plugins/execlog: Explicitly check for qemu_plugin_read_register() failure
Peter Maydell [Mon, 22 Sep 2025 09:37:01 +0000 (10:37 +0100)] 
contrib/plugins/execlog: Explicitly check for qemu_plugin_read_register() failure

In insn_check_regs() we don't explicitly check whether
qemu_plugin_read_register() failed, which confuses Coverity into
thinking that sz can be -1 in the memcmp().  In fact the assertion
that sz == reg->last->len means this can't happen, but it's clearer
to both humans and Coverity if we explicitly assert that sz > 0, as
we already do in init_vcpu_register().

Coverity: CID 16119011611902
Fixes: af6e4e0a22c1 ("contrib/plugins: extend execlog to track register changes")
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Message-ID: <20250710144543.1187715-1-peter.maydell@linaro.org>
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Message-ID: <20250922093711.2768983-17-alex.bennee@linaro.org>

3 weeks agosemihosting/arm-compat-semi: compile once in system and per target for user mode
Pierrick Bouvier [Mon, 22 Sep 2025 09:37:00 +0000 (10:37 +0100)] 
semihosting/arm-compat-semi: compile once in system and per target for user mode

We don't have any target dependency left in system mode, so we can
compile once.

User mode depends on qemu.h, which is duplicated between linux and bsd,
so we can't easily compile it once.

Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Message-ID: <20250822150058.18692-13-pierrick.bouvier@linaro.org>
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Message-ID: <20250922093711.2768983-16-alex.bennee@linaro.org>

3 weeks agosemihosting/arm-compat-semi: remove dependency on cpu.h
Pierrick Bouvier [Mon, 22 Sep 2025 09:36:59 +0000 (10:36 +0100)] 
semihosting/arm-compat-semi: remove dependency on cpu.h

Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Message-ID: <20250822150058.18692-12-pierrick.bouvier@linaro.org>
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Message-ID: <20250922093711.2768983-15-alex.bennee@linaro.org>

3 weeks agosemihosting/arm-compat-semi: eradicate target_long
Pierrick Bouvier [Mon, 22 Sep 2025 09:36:58 +0000 (10:36 +0100)] 
semihosting/arm-compat-semi: eradicate target_long

We use int64_t or int32_t depending on ret size.

Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Message-ID: <20250822150058.18692-11-pierrick.bouvier@linaro.org>
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Message-ID: <20250922093711.2768983-14-alex.bennee@linaro.org>

3 weeks agosemihosting/arm-compat-semi: replace target_ulong
Pierrick Bouvier [Mon, 22 Sep 2025 09:36:57 +0000 (10:36 +0100)] 
semihosting/arm-compat-semi: replace target_ulong

Replace with vaddr or uint64_t where appropriate.

Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Message-ID: <20250822150058.18692-10-pierrick.bouvier@linaro.org>
[AJB: tweak commit message]
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Message-ID: <20250922093711.2768983-13-alex.bennee@linaro.org>

3 weeks agosemihosting/arm-compat-semi: eradicate sizeof(target_ulong)
Pierrick Bouvier [Mon, 22 Sep 2025 09:36:56 +0000 (10:36 +0100)] 
semihosting/arm-compat-semi: eradicate sizeof(target_ulong)

No semantic change.

Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Message-ID: <20250822150058.18692-9-pierrick.bouvier@linaro.org>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Message-ID: <20250922093711.2768983-12-alex.bennee@linaro.org>

3 weeks agoinclude/semihosting/common-semi: extract common_semi API
Pierrick Bouvier [Mon, 22 Sep 2025 09:36:55 +0000 (10:36 +0100)] 
include/semihosting/common-semi: extract common_semi API

We transform target/{arm,riscv}/common-semi-target.h headers to proper
compilation units, and use them in arm-compat-semi.c.

This way, we can include only the declaration header (which is target
agnostic), and selectively link the appropriate implementation based on
current target.

Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Message-ID: <20250822150058.18692-8-pierrick.bouvier@linaro.org>
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Message-ID: <20250922093711.2768983-11-alex.bennee@linaro.org>

3 weeks agotarget/{arm, riscv}/common-semi-target: eradicate target_ulong
Pierrick Bouvier [Mon, 22 Sep 2025 09:36:54 +0000 (10:36 +0100)] 
target/{arm, riscv}/common-semi-target: eradicate target_ulong

We replace mechanically with uint64_t.
There is no semantic change, and allows us to extract a proper API from
this set of functions.

Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Message-ID: <20250822150058.18692-7-pierrick.bouvier@linaro.org>
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Message-ID: <20250922093711.2768983-10-alex.bennee@linaro.org>

3 weeks agotarget/riscv/common-semi-target: remove sizeof(target_ulong)
Pierrick Bouvier [Mon, 22 Sep 2025 09:36:53 +0000 (10:36 +0100)] 
target/riscv/common-semi-target: remove sizeof(target_ulong)

Only riscv64 extends SYS_EXIT, similar to aarch64.

Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Message-ID: <20250822150058.18692-6-pierrick.bouvier@linaro.org>
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Message-ID: <20250922093711.2768983-9-alex.bennee@linaro.org>

3 weeks agosemihosting/arm-compat-semi: change common_semi_sys_exit_extended
Pierrick Bouvier [Mon, 22 Sep 2025 09:36:52 +0000 (10:36 +0100)] 
semihosting/arm-compat-semi: change common_semi_sys_exit_extended

We now check only is sys_exit is extended.
This allows to break dependency to TARGET_SYS_EXIT_EXTENDED which will
not be available anymore from this code.

Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Message-ID: <20250822150058.18692-5-pierrick.bouvier@linaro.org>
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Message-ID: <20250922093711.2768983-8-alex.bennee@linaro.org>

3 weeks agosemihosting/guestfd: compile once for system/user
Pierrick Bouvier [Mon, 22 Sep 2025 09:36:51 +0000 (10:36 +0100)] 
semihosting/guestfd: compile once for system/user

We move relevant code to semihosting/arm-compat-semi.c, and add
functions to query CONFIG_ARM_COMPATIBLE_SEMIHOSTING at runtime.

Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Message-ID: <20250822150058.18692-4-pierrick.bouvier@linaro.org>
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Message-ID: <20250922093711.2768983-7-alex.bennee@linaro.org>

3 weeks agosemihosting/syscalls: replace uint64_t with vaddr where appropriate
Pierrick Bouvier [Mon, 22 Sep 2025 09:36:50 +0000 (10:36 +0100)] 
semihosting/syscalls: replace uint64_t with vaddr where appropriate

Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Message-ID: <20250822150058.18692-3-pierrick.bouvier@linaro.org>
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Message-ID: <20250922093711.2768983-6-alex.bennee@linaro.org>

3 weeks agosemihosting/syscalls: compile once in system and per target for user mode
Pierrick Bouvier [Mon, 22 Sep 2025 09:36:49 +0000 (10:36 +0100)] 
semihosting/syscalls: compile once in system and per target for user mode

We replace target_ulong mechanically by uint64_t.
We can't compile (easily) this code once for user, as it relies on
various target/function types, so leave it in specific_ss for user mode.

Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Message-ID: <20250822150058.18692-2-pierrick.bouvier@linaro.org>
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Message-ID: <20250922093711.2768983-5-alex.bennee@linaro.org>

3 weeks agocheckpatch: Ignore removed lines in license check
Nabih Estefan [Mon, 22 Sep 2025 09:36:48 +0000 (10:36 +0100)] 
checkpatch: Ignore removed lines in license check

When running the license check, if we are updating a license it is
possible for the checkpatch script to test against old license lines
instead of newer ones, since the removal lines appear before the
addition lines in a .patch file.

Fix this by skipping over lines that start with "-" in the checkpatch
script.

Signed-off-by: Nabih Estefan <nabihestefan@google.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
Message-ID: <20250916165928.10048-1-nabihestefan@google.com>
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Message-ID: <20250922093711.2768983-4-alex.bennee@linaro.org>

3 weeks agoscripts/ci: add gitlab-failure-analysis script
Alex Bennée [Mon, 22 Sep 2025 09:36:47 +0000 (10:36 +0100)] 
scripts/ci: add gitlab-failure-analysis script

This is a script designed to collect data from multiple pipelines and
analyse the failure modes they have. By default it will probe the last
3 failed jobs on the staging branch. However this can all be
controlled by the CLI:

  ./scripts/ci/gitlab-failure-analysis --count 2 --branch=testing/next --id 39915562 --status=
  running pipeline 2028486060, total jobs 125, skipped 5, failed 0,  39742 tests, 0 failed tests
  success pipeline 2015018135, total jobs 125, skipped 5, failed 0,  49219 tests, 0 failed tests

You can also skip failing jobs and just dump the tests:

  ./scripts/ci/gitlab-failure-analysis --branch= --id 39915562 --status= --skip-jobs --pipeline 1946202491 1919542960
  failed pipeline 1946202491, total jobs 127, skipped 5, failed 26,  38742 tests, 278 skipped tests, 2 failed tests
    Failed test qemu.qemu:qtest+qtest-s390x / qtest-s390x/boot-serial-test, check-system-opensuse, 1 /s390x/boot-serial/s390-ccw-virtio - FATAL-ERROR: Failed to find expected string. Please check '/tmp/qtest-boot-serial-sW77EA3'
    Failed test qemu.qemu:qtest+qtest-aarch64 / qtest-aarch64/arm-cpu-features, check-system-opensuse, 1 /aarch64/arm/query-cpu-model-expansion - ERROR:../tests/qtest/arm-cpu-features.c:459:test_query_cpu_model_expansion: assertion failed (_error == "The CPU type 'host' requires KVM"): ("The CPU type 'host' requires hardware accelerator" == "The CPU type 'host' requires KVM")
  failed pipeline 1919542960, total jobs 127, skipped 5, failed 2,  48753 tests, 441 skipped tests, 1 failed tests
    Failed test qemu.qemu:unit / test-aio, msys2-64bit, 12 /aio/timer/schedule - ERROR:../tests/unit/test-aio.c:413:test_timer_schedule: assertion failed: (aio_poll(ctx, true))

Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Message-ID: <20250922093711.2768983-3-alex.bennee@linaro.org>

3 weeks agoinclude/hw/vfio/vfio-device.h: fix include header guard name
Mark Cave-Ayland [Thu, 25 Sep 2025 11:31:36 +0000 (12:31 +0100)] 
include/hw/vfio/vfio-device.h: fix include header guard name

The header guard was incorrectly called HW_VFIO_VFIO_COMMON_H instead of
HW_VFIO_VFIO_DEVICE_H.

Signed-off-by: Mark Cave-Ayland <mark.caveayland@nutanix.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Link: https://lore.kernel.org/qemu-devel/20250925113159.1760317-29-mark.caveayland@nutanix.com
Signed-off-by: Cédric Le Goater <clg@redhat.com>
3 weeks agovfio-user/pci.c: rename vfio_user_pci_dev_info to vfio_user_pci_info
Mark Cave-Ayland [Thu, 25 Sep 2025 11:31:35 +0000 (12:31 +0100)] 
vfio-user/pci.c: rename vfio_user_pci_dev_info to vfio_user_pci_info

This changes the prefix to match the name of the QOM type.

Signed-off-by: Mark Cave-Ayland <mark.caveayland@nutanix.com>
Reviewed-by: Cédric Le Goater <clg@redhat.com>
Link: https://lore.kernel.org/qemu-devel/20250925113159.1760317-28-mark.caveayland@nutanix.com
Signed-off-by: Cédric Le Goater <clg@redhat.com>
3 weeks agovfio-user/pci.c: rename vfio_user_instance_finalize() to vfio_user_pci_finalize()
Mark Cave-Ayland [Thu, 25 Sep 2025 11:31:34 +0000 (12:31 +0100)] 
vfio-user/pci.c: rename vfio_user_instance_finalize() to vfio_user_pci_finalize()

This is the more typical naming convention for QOM finalize() functions, in
particular it changes the prefix to match the name of the QOM type.

Signed-off-by: Mark Cave-Ayland <mark.caveayland@nutanix.com>
Reviewed-by: Cédric Le Goater <clg@redhat.com>
Link: https://lore.kernel.org/qemu-devel/20250925113159.1760317-27-mark.caveayland@nutanix.com
Signed-off-by: Cédric Le Goater <clg@redhat.com>
3 weeks agovfio-user/pci.c: rename vfio_user_instance_init() to vfio_user_pci_init()
Mark Cave-Ayland [Thu, 25 Sep 2025 11:31:33 +0000 (12:31 +0100)] 
vfio-user/pci.c: rename vfio_user_instance_init() to vfio_user_pci_init()

This is the more typical naming convention for QOM init() functions, in
particular it changes the prefix to match the name of the QOM type.

Signed-off-by: Mark Cave-Ayland <mark.caveayland@nutanix.com>
Reviewed-by: Cédric Le Goater <clg@redhat.com>
Link: https://lore.kernel.org/qemu-devel/20250925113159.1760317-26-mark.caveayland@nutanix.com
Signed-off-by: Cédric Le Goater <clg@redhat.com>
3 weeks agovfio-user/pci.c: rename vfio_user_pci_dev_properties[] to vfio_user_pci_properties[]
Mark Cave-Ayland [Thu, 25 Sep 2025 11:31:32 +0000 (12:31 +0100)] 
vfio-user/pci.c: rename vfio_user_pci_dev_properties[] to vfio_user_pci_properties[]

This changes the prefix to match the name of the QOM type.

Signed-off-by: Mark Cave-Ayland <mark.caveayland@nutanix.com>
Reviewed-by: Cédric Le Goater <clg@redhat.com>
Link: https://lore.kernel.org/qemu-devel/20250925113159.1760317-25-mark.caveayland@nutanix.com
Signed-off-by: Cédric Le Goater <clg@redhat.com>
3 weeks agovfio-user/pci.c: rename vfio_user_pci_dev_class_init() to vfio_user_pci_class_init()
Mark Cave-Ayland [Thu, 25 Sep 2025 11:31:31 +0000 (12:31 +0100)] 
vfio-user/pci.c: rename vfio_user_pci_dev_class_init() to vfio_user_pci_class_init()

This changes the function prefix to match the name of the QOM type.

Signed-off-by: Mark Cave-Ayland <mark.caveayland@nutanix.com>
Reviewed-by: Cédric Le Goater <clg@redhat.com>
Link: https://lore.kernel.org/qemu-devel/20250925113159.1760317-24-mark.caveayland@nutanix.com
Signed-off-by: Cédric Le Goater <clg@redhat.com>
3 weeks agovfio/pci.c: rename vfio_pci_nohotplug_dev_info to vfio_pci_nohotplug_info
Mark Cave-Ayland [Thu, 25 Sep 2025 11:31:30 +0000 (12:31 +0100)] 
vfio/pci.c: rename vfio_pci_nohotplug_dev_info to vfio_pci_nohotplug_info

This changes the prefix to match the name of the QOM type.

Signed-off-by: Mark Cave-Ayland <mark.caveayland@nutanix.com>
Reviewed-by: Cédric Le Goater <clg@redhat.com>
Link: https://lore.kernel.org/qemu-devel/20250925113159.1760317-23-mark.caveayland@nutanix.com
Signed-off-by: Cédric Le Goater <clg@redhat.com>
3 weeks agovfio/pci.c: rename vfio_pci_nohotplug_dev_class_init() to vfio_pci_nohotplug_class_init()
Mark Cave-Ayland [Thu, 25 Sep 2025 11:31:29 +0000 (12:31 +0100)] 
vfio/pci.c: rename vfio_pci_nohotplug_dev_class_init() to vfio_pci_nohotplug_class_init()

This changes the function prefix to match the name of the QOM type.

Signed-off-by: Mark Cave-Ayland <mark.caveayland@nutanix.com>
Reviewed-by: Cédric Le Goater <clg@redhat.com>
Link: https://lore.kernel.org/qemu-devel/20250925113159.1760317-22-mark.caveayland@nutanix.com
Signed-off-by: Cédric Le Goater <clg@redhat.com>
3 weeks agovfio/pci.c: rename vfio_pci_dev_nohotplug_properties[] to vfio_pci_nohotplug_properties[]
Mark Cave-Ayland [Thu, 25 Sep 2025 11:31:28 +0000 (12:31 +0100)] 
vfio/pci.c: rename vfio_pci_dev_nohotplug_properties[] to vfio_pci_nohotplug_properties[]

This changes the prefix to match the name of the QOM type.

Signed-off-by: Mark Cave-Ayland <mark.caveayland@nutanix.com>
Reviewed-by: Cédric Le Goater <clg@redhat.com>
Link: https://lore.kernel.org/qemu-devel/20250925113159.1760317-21-mark.caveayland@nutanix.com
Signed-off-by: Cédric Le Goater <clg@redhat.com>
3 weeks agovfio/pci.c: rename vfio_pci_dev_properties[] to vfio_pci_properties[]
Mark Cave-Ayland [Thu, 25 Sep 2025 11:31:27 +0000 (12:31 +0100)] 
vfio/pci.c: rename vfio_pci_dev_properties[] to vfio_pci_properties[]

This changes the prefix to match the name of the QOM type.

Signed-off-by: Mark Cave-Ayland <mark.caveayland@nutanix.com>
Reviewed-by: Cédric Le Goater <clg@redhat.com>
Link: https://lore.kernel.org/qemu-devel/20250925113159.1760317-20-mark.caveayland@nutanix.com
Signed-off-by: Cédric Le Goater <clg@redhat.com>
3 weeks agovfio/pci.c: rename vfio_pci_base_dev_info to vfio_pci_device_info
Mark Cave-Ayland [Thu, 25 Sep 2025 11:31:26 +0000 (12:31 +0100)] 
vfio/pci.c: rename vfio_pci_base_dev_info to vfio_pci_device_info

This changes the prefix to match the name of the QOM type.

Signed-off-by: Mark Cave-Ayland <mark.caveayland@nutanix.com>
Reviewed-by: Cédric Le Goater <clg@redhat.com>
Link: https://lore.kernel.org/qemu-devel/20250925113159.1760317-19-mark.caveayland@nutanix.com
Signed-off-by: Cédric Le Goater <clg@redhat.com>
3 weeks agovfio/pci.c: rename vfio_pci_base_dev_class_init() to vfio_pci_device_class_init()
Mark Cave-Ayland [Thu, 25 Sep 2025 11:31:25 +0000 (12:31 +0100)] 
vfio/pci.c: rename vfio_pci_base_dev_class_init() to vfio_pci_device_class_init()

This changes the function prefix to match the name of the QOM type.

Signed-off-by: Mark Cave-Ayland <mark.caveayland@nutanix.com>
Reviewed-by: Cédric Le Goater <clg@redhat.com>
Link: https://lore.kernel.org/qemu-devel/20250925113159.1760317-18-mark.caveayland@nutanix.com
Signed-off-by: Cédric Le Goater <clg@redhat.com>
3 weeks agohw/vfio/types.h: rename TYPE_VFIO_PCI_BASE to TYPE_VFIO_PCI_DEVICE
Mark Cave-Ayland [Thu, 25 Sep 2025 11:31:24 +0000 (12:31 +0100)] 
hw/vfio/types.h: rename TYPE_VFIO_PCI_BASE to TYPE_VFIO_PCI_DEVICE

This brings the QOM type name in line with the underlying VFIOPCIDevice structure.

Signed-off-by: Mark Cave-Ayland <mark.caveayland@nutanix.com>
Reviewed-by: Cédric Le Goater <clg@redhat.com>
Link: https://lore.kernel.org/qemu-devel/20250925113159.1760317-17-mark.caveayland@nutanix.com
Signed-off-by: Cédric Le Goater <clg@redhat.com>
3 weeks agovfio/pci.c: rename vfio_pci_dev_info to vfio_pci_info
Mark Cave-Ayland [Thu, 25 Sep 2025 11:31:23 +0000 (12:31 +0100)] 
vfio/pci.c: rename vfio_pci_dev_info to vfio_pci_info

This changes the prefix to match the name of the QOM type.

Signed-off-by: Mark Cave-Ayland <mark.caveayland@nutanix.com>
Reviewed-by: Cédric Le Goater <clg@redhat.com>
Link: https://lore.kernel.org/qemu-devel/20250925113159.1760317-16-mark.caveayland@nutanix.com
Signed-off-by: Cédric Le Goater <clg@redhat.com>
3 weeks agovfio/pci.c: rename vfio_pci_dev_class_init() to vfio_pci_class_init()
Mark Cave-Ayland [Thu, 25 Sep 2025 11:31:22 +0000 (12:31 +0100)] 
vfio/pci.c: rename vfio_pci_dev_class_init() to vfio_pci_class_init()

This changes the function prefix to match the name of the QOM type.

Signed-off-by: Mark Cave-Ayland <mark.caveayland@nutanix.com>
Reviewed-by: Cédric Le Goater <clg@redhat.com>
Link: https://lore.kernel.org/qemu-devel/20250925113159.1760317-15-mark.caveayland@nutanix.com
Signed-off-by: Cédric Le Goater <clg@redhat.com>
3 weeks agovfio/pci.c: rename vfio_instance_finalize() to vfio_pci_finalize()
Mark Cave-Ayland [Thu, 25 Sep 2025 11:31:21 +0000 (12:31 +0100)] 
vfio/pci.c: rename vfio_instance_finalize() to vfio_pci_finalize()

This is the more typical naming convention for QOM finalize() functions, in
particular it changes the prefix to match the name of the QOM type.

Signed-off-by: Mark Cave-Ayland <mark.caveayland@nutanix.com>
Reviewed-by: Cédric Le Goater <clg@redhat.com>
Link: https://lore.kernel.org/qemu-devel/20250925113159.1760317-14-mark.caveayland@nutanix.com
Signed-off-by: Cédric Le Goater <clg@redhat.com>
3 weeks agovfio/pci.c: rename vfio_instance_init() to vfio_pci_init()
Mark Cave-Ayland [Thu, 25 Sep 2025 11:31:20 +0000 (12:31 +0100)] 
vfio/pci.c: rename vfio_instance_init() to vfio_pci_init()

This is the more typical naming convention for QOM init() functions, in
particular it changes the prefix to match the name of the QOM type.

Signed-off-by: Mark Cave-Ayland <mark.caveayland@nutanix.com>
Reviewed-by: Cédric Le Goater <clg@redhat.com>
Link: https://lore.kernel.org/qemu-devel/20250925113159.1760317-13-mark.caveayland@nutanix.com
Signed-off-by: Cédric Le Goater <clg@redhat.com>
3 weeks agovfio/spapr.c: rename VFIOContainer bcontainer field to parent_obj
Mark Cave-Ayland [Thu, 25 Sep 2025 11:31:19 +0000 (12:31 +0100)] 
vfio/spapr.c: rename VFIOContainer bcontainer field to parent_obj

Now that nothing accesses the bcontainer field directly, rename bcontainer to
parent_obj as per our current coding guidelines.

Signed-off-by: Mark Cave-Ayland <mark.caveayland@nutanix.com>
Reviewed-by: Cédric Le Goater <clg@redhat.com>
Link: https://lore.kernel.org/qemu-devel/20250925113159.1760317-12-mark.caveayland@nutanix.com
Signed-off-by: Cédric Le Goater <clg@redhat.com>
3 weeks agovfio/spapr.c: use QOM casts where appropriate
Mark Cave-Ayland [Thu, 25 Sep 2025 11:31:18 +0000 (12:31 +0100)] 
vfio/spapr.c: use QOM casts where appropriate

Use QOM casts to convert between VFIOSpaprContainer and VFIOLegacyContainer
instead of accessing bcontainer directly.

Signed-off-by: Mark Cave-Ayland <mark.caveayland@nutanix.com>
Reviewed-by: Cédric Le Goater <clg@redhat.com>
Link: https://lore.kernel.org/qemu-devel/20250925113159.1760317-11-mark.caveayland@nutanix.com
Signed-off-by: Cédric Le Goater <clg@redhat.com>
3 weeks agovfio/vfio-iommufd.h: rename VFIOContainer bcontainer field to parent_obj
Mark Cave-Ayland [Thu, 25 Sep 2025 11:31:17 +0000 (12:31 +0100)] 
vfio/vfio-iommufd.h: rename VFIOContainer bcontainer field to parent_obj

Now that nothing accesses the bcontainer field directly, rename bcontainer to
parent_obj as per our current coding guidelines.

Signed-off-by: Mark Cave-Ayland <mark.caveayland@nutanix.com>
Reviewed-by: Cédric Le Goater <clg@redhat.com>
Link: https://lore.kernel.org/qemu-devel/20250925113159.1760317-10-mark.caveayland@nutanix.com
Signed-off-by: Cédric Le Goater <clg@redhat.com>
3 weeks agovfio/cpr-iommufd.c: use QOM casts where appropriate
Mark Cave-Ayland [Thu, 25 Sep 2025 11:31:16 +0000 (12:31 +0100)] 
vfio/cpr-iommufd.c: use QOM casts where appropriate

Use QOM casts to convert between VFIOIOMMUFDContainer and VFIOContainer instead
of accessing bcontainer directly.

Signed-off-by: Mark Cave-Ayland <mark.caveayland@nutanix.com>
Reviewed-by: Cédric Le Goater <clg@redhat.com>
Link: https://lore.kernel.org/qemu-devel/20250925113159.1760317-9-mark.caveayland@nutanix.com
Signed-off-by: Cédric Le Goater <clg@redhat.com>
3 weeks agovfio/iommufd.c: use QOM casts where appropriate
Mark Cave-Ayland [Thu, 25 Sep 2025 11:31:15 +0000 (12:31 +0100)] 
vfio/iommufd.c: use QOM casts where appropriate

Use QOM casts to convert between VFIOIOMMUFDContainer and VFIOContainer instead
of accessing bcontainer directly.

Signed-off-by: Mark Cave-Ayland <mark.caveayland@nutanix.com>
Reviewed-by: Cédric Le Goater <clg@redhat.com>
Link: https://lore.kernel.org/qemu-devel/20250925113159.1760317-8-mark.caveayland@nutanix.com
Signed-off-by: Cédric Le Goater <clg@redhat.com>
3 weeks agohw/vfio/container-base.c: rename file to container.c
Mark Cave-Ayland [Thu, 25 Sep 2025 11:31:14 +0000 (12:31 +0100)] 
hw/vfio/container-base.c: rename file to container.c

Rename the file to reflect the previous rename of VFIOContainerBase to
VFIOContainer.

Signed-off-by: Mark Cave-Ayland <mark.caveayland@nutanix.com>
Reviewed-by: Cédric Le Goater <clg@redhat.com>
Link: https://lore.kernel.org/qemu-devel/20250925113159.1760317-7-mark.caveayland@nutanix.com
Signed-off-by: Cédric Le Goater <clg@redhat.com>
3 weeks agohw/vfio/container.c: rename file to container-legacy.c
Mark Cave-Ayland [Thu, 25 Sep 2025 11:31:13 +0000 (12:31 +0100)] 
hw/vfio/container.c: rename file to container-legacy.c

This file is mostly concerned with the VFIOLegacyContainer implementation so
rename it to reflect the previous rename of VFIOContainer to
VFIOLegacyContainer.

Signed-off-by: Mark Cave-Ayland <mark.caveayland@nutanix.com>
Reviewed-by: Cédric Le Goater <clg@redhat.com>
Link: https://lore.kernel.org/qemu-devel/20250925113159.1760317-6-mark.caveayland@nutanix.com
Signed-off-by: Cédric Le Goater <clg@redhat.com>
3 weeks agoinclude/hw/vfio/vfio-container-base.h: rename file to vfio-container.h
Mark Cave-Ayland [Thu, 25 Sep 2025 11:31:12 +0000 (12:31 +0100)] 
include/hw/vfio/vfio-container-base.h: rename file to vfio-container.h

With the rename of VFIOContainerBase to VFIOContainer, the vfio-container-base.h
header file containing the struct definition is misleading. Rename it from
vfio-container-base.h to vfio-container.h accordingly, fixing up the name
of the include guard at the same time.

Signed-off-by: Mark Cave-Ayland <mark.caveayland@nutanix.com>
Reviewed-by: Cédric Le Goater <clg@redhat.com>
Link: https://lore.kernel.org/qemu-devel/20250925113159.1760317-5-mark.caveayland@nutanix.com
Signed-off-by: Cédric Le Goater <clg@redhat.com>
3 weeks agoinclude/hw/vfio/vfio-container.h: rename file to vfio-container-legacy.h
Mark Cave-Ayland [Thu, 25 Sep 2025 11:31:11 +0000 (12:31 +0100)] 
include/hw/vfio/vfio-container.h: rename file to vfio-container-legacy.h

With the rename of VFIOContainer to VFIOLegacyContainer, the vfio-container.h
header file containing the struct definition is misleading. Rename it from
vfio-container.h to vfio-container-legacy.h accordingly, fixing up the name
of the include guard at the same time.

Signed-off-by: Mark Cave-Ayland <mark.caveayland@nutanix.com>
Reviewed-by: Cédric Le Goater <clg@redhat.com>
Link: https://lore.kernel.org/qemu-devel/20250925113159.1760317-4-mark.caveayland@nutanix.com
Signed-off-by: Cédric Le Goater <clg@redhat.com>
3 weeks agoinclude/hw/vfio/vfio-container-base.h: rename VFIOContainerBase to VFIOContainer
Mark Cave-Ayland [Thu, 25 Sep 2025 11:31:10 +0000 (12:31 +0100)] 
include/hw/vfio/vfio-container-base.h: rename VFIOContainerBase to VFIOContainer

Now that the VFIOContainer struct name is available, rename VFIOContainerBase
to VFIOContainer to better indicate that it is the superclass of other
VFIOFooContainer structs.

Signed-off-by: Mark Cave-Ayland <mark.caveayland@nutanix.com>
Reviewed-by: Cédric Le Goater <clg@redhat.com>
Link: https://lore.kernel.org/qemu-devel/20250925113159.1760317-3-mark.caveayland@nutanix.com
Signed-off-by: Cédric Le Goater <clg@redhat.com>
3 weeks agoinclude/hw/vfio/vfio-container.h: rename VFIOContainer to VFIOLegacyContainer
Mark Cave-Ayland [Thu, 25 Sep 2025 11:31:09 +0000 (12:31 +0100)] 
include/hw/vfio/vfio-container.h: rename VFIOContainer to VFIOLegacyContainer

The VFIOContainer struct represents the legacy VFIO container even though the
name suggests it may be the common superclass of all VFIO containers. Rename it
to VFIOLegacyContainer to make this clearer, which is also a better match for
its VFIO_IOMMU_LEGACY QOM type name.

Signed-off-by: Mark Cave-Ayland <mark.caveayland@nutanix.com>
Reviewed-by: Cédric Le Goater <clg@redhat.com>
Link: https://lore.kernel.org/qemu-devel/20250925113159.1760317-2-mark.caveayland@nutanix.com
Signed-off-by: Cédric Le Goater <clg@redhat.com>
3 weeks agotests/functional: add a vfio-user smoke test
Mark Cave-Ayland [Thu, 11 Sep 2025 21:09:05 +0000 (23:09 +0200)] 
tests/functional: add a vfio-user smoke test

Add a basic test of the vfio-user PCI client implementation.

Co-authored-by: John Levon <john.levon@nutanix.com>
Signed-off-by: Mark Cave-Ayland <mark.caveayland@nutanix.com>
Signed-off-by: John Levon <john.levon@nutanix.com>
Reviewed-by: Thomas Huth <thuth@redhat.com>
Link: https://lore.kernel.org/qemu-devel/20250911210905.2070474-1-john.levon@nutanix.com
Signed-off-by: Cédric Le Goater <clg@redhat.com>
3 weeks agotarget/arm: Remove define_arm_vh_e2h_redirects_aliases
Richard Henderson [Tue, 16 Sep 2025 14:22:37 +0000 (07:22 -0700)] 
target/arm: Remove define_arm_vh_e2h_redirects_aliases

Populate vhe_redir_to_{el2,el01} on each ARMCPRegInfo.
Clear the fields within add_cpreg_to_hashtable_aa32.
Create the FOO_EL12 cpreg within add_cpreg_to_hashtable_aa64;
add ARM_CP_NO_RAW.

Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Tested-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
3 weeks agotarget/arm: Rename some cpreg to their aarch64 names
Richard Henderson [Tue, 16 Sep 2025 14:22:36 +0000 (07:22 -0700)] 
target/arm: Rename some cpreg to their aarch64 names

Rename those registers which will have FOO_EL12 aliases.

Reviewed-by: Manos Pitsidianakis <manos.pitsidianakis@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Tested-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
3 weeks agotarget/arm: Redirect VHE FOO_EL12 to FOO_EL1 during translation
Richard Henderson [Tue, 16 Sep 2025 14:22:35 +0000 (07:22 -0700)] 
target/arm: Redirect VHE FOO_EL12 to FOO_EL1 during translation

Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Tested-by: Philippe Mathieu-Daudé <philmd@linaro.org>
[PMM: expanded a comment slightly]
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
3 weeks agotarget/arm: Redirect VHE FOO_EL1 -> FOO_EL2 during translation
Richard Henderson [Tue, 16 Sep 2025 14:22:34 +0000 (07:22 -0700)] 
target/arm: Redirect VHE FOO_EL1 -> FOO_EL2 during translation

Reviewed-by: Manos Pitsidianakis <manos.pitsidianakis@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Tested-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
3 weeks agotarget/arm: Split out redirect_cpreg
Richard Henderson [Tue, 16 Sep 2025 14:22:33 +0000 (07:22 -0700)] 
target/arm: Split out redirect_cpreg

Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Tested-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
3 weeks agotarget/arm: Rename TBFLAG_A64_NV2_MEM_E20 with *_E2H
Richard Henderson [Tue, 16 Sep 2025 14:22:32 +0000 (07:22 -0700)] 
target/arm: Rename TBFLAG_A64_NV2_MEM_E20 with *_E2H

Install e2h in tbflags and compute nv2_mem_e20 from
that in aarch64_tr_init_disas_context.

Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Tested-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
3 weeks agotarget/arm: Move endianness fixup for 32-bit registers
Richard Henderson [Tue, 16 Sep 2025 14:22:31 +0000 (07:22 -0700)] 
target/arm: Move endianness fixup for 32-bit registers

Move the test outside of the banked register block,
and repeat the AA32 test.

Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Tested-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
3 weeks agotarget/arm: Move writeback of CP_ANY fields
Richard Henderson [Tue, 16 Sep 2025 14:22:30 +0000 (07:22 -0700)] 
target/arm: Move writeback of CP_ANY fields

Move the writeback of cp, crm, opc1, opc2 to define_one_arm_cp_reg,
which means we don't have to pass all those parameters down
to subroutines.

Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Tested-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
3 weeks agotarget/arm: Move alias setting for wildcards
Richard Henderson [Tue, 16 Sep 2025 14:22:29 +0000 (07:22 -0700)] 
target/arm: Move alias setting for wildcards

Move this test from add_cpreg_to_hashtable to
define_one_arm_cp_reg_with_opaque, where we can also
simplify it based on the loop variables.

Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Tested-by: Philippe Mathieu-Daudé <philmd@linaro.org>
[PMM: adjusted placement of comma in a comment]
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
3 weeks agotarget/arm: Remove name argument to alloc_cpreg
Richard Henderson [Tue, 16 Sep 2025 14:22:28 +0000 (07:22 -0700)] 
target/arm: Remove name argument to alloc_cpreg

All callers now pass in->name, so take the value from there.

Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Tested-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
3 weeks agotarget/arm: Hoist the allocation of ARMCPRegInfo
Richard Henderson [Tue, 16 Sep 2025 14:22:27 +0000 (07:22 -0700)] 
target/arm: Hoist the allocation of ARMCPRegInfo

Pass in a newly allocated structure, rather than having to
dance around allocation of the name and the structure.

Since we no longer have two copies of the structure handy
within add_cpreg_to_hashtable, delay the writeback of concrete
values over wildcards until we're done querying the wildcards.

Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Tested-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
3 weeks agotarget/arm: Split out alloc_cpreg
Richard Henderson [Tue, 16 Sep 2025 14:22:26 +0000 (07:22 -0700)] 
target/arm: Split out alloc_cpreg

Include provision for a name suffix.

Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Tested-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
3 weeks agotarget/arm: Add key parameter to add_cpreg_to_hashtable
Richard Henderson [Tue, 16 Sep 2025 14:22:25 +0000 (07:22 -0700)] 
target/arm: Add key parameter to add_cpreg_to_hashtable

Hoist the computation of key into the caller, where
state is a known constant.

Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Tested-by: Philippe Mathieu-Daudé <philmd@linaro.org>
[PMM: added comment about CRN key field increment]
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
3 weeks agotarget/arm: Move cpreg elimination to define_one_arm_cp_reg
Richard Henderson [Tue, 16 Sep 2025 14:22:24 +0000 (07:22 -0700)] 
target/arm: Move cpreg elimination to define_one_arm_cp_reg

Eliminate unused registers earlier, so that by the time we
arrive in add_cpreg_to_hashtable we never skip.

Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Tested-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
3 weeks agotarget/arm: Move cp processing to define_one_arm_cp_reg
Richard Henderson [Tue, 16 Sep 2025 14:22:23 +0000 (07:22 -0700)] 
target/arm: Move cp processing to define_one_arm_cp_reg

Processing of cp was split between add_cpreg_to_hashtable and
define_one_arm_cp_reg.  Unify it all to the top-level function.

Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Tested-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
3 weeks agotarget/arm: Improve asserts in define_one_arm_cp_reg
Richard Henderson [Tue, 16 Sep 2025 14:22:22 +0000 (07:22 -0700)] 
target/arm: Improve asserts in define_one_arm_cp_reg

Reject ARM_CP_64BIT with ARM_CP_STATE_BOTH, because encoding
constrains prevent it from working.  Remove some extra parens;
distribute ! across && to simplify.

Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Tested-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
3 weeks agotarget/arm: Split out add_cpreg_to_hashtable_aa{32, 64}
Richard Henderson [Tue, 16 Sep 2025 14:22:21 +0000 (07:22 -0700)] 
target/arm: Split out add_cpreg_to_hashtable_aa{32, 64}

The nesting level for the inner loop of define_one_arm_cp_reg
was overly deep.  Split out that code into two functions, for
the AArch32 and AArch64 paths separately.  Simplify the innermost
loop to a switch statement over r->state.

Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Tested-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
3 weeks agotarget/arm: Reorder ENCODE_AA64_CP_REG arguments
Richard Henderson [Tue, 16 Sep 2025 14:22:20 +0000 (07:22 -0700)] 
target/arm: Reorder ENCODE_AA64_CP_REG arguments

The order of the parameters in the Arm ARM is

  op0, op1, crn, crm, op2

Reorder the arguments of ENCODE_AA64_CP_REG to match.

Reviewed-by: Manos Pitsidianakis <manos.pitsidianakis@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Tested-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
3 weeks agotarget/arm: Remove cp argument to ENCODE_AA64_CP_REG
Richard Henderson [Tue, 16 Sep 2025 14:22:19 +0000 (07:22 -0700)] 
target/arm: Remove cp argument to ENCODE_AA64_CP_REG

All invocations were required to pass the same value,
CP_REG_ARM64_SYSREG_CP.  Bake that in to the result directly.
Remove CP_REG_ARM64_SYSREG_CP as unused.

Reviewed-by: Manos Pitsidianakis <manos.pitsidianakis@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Tested-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
3 weeks agotarget/arm: Convert init_cpreg_list to g_hash_table_foreach
Richard Henderson [Tue, 16 Sep 2025 14:22:18 +0000 (07:22 -0700)] 
target/arm: Convert init_cpreg_list to g_hash_table_foreach

Adjust count_cpreg and add_cpreg_to_list to be used with
g_hash_table_foreach instead of g_list_foreach.  In this way we have
the ARMCPRegInfo pointer directly rather than having to look it up
from the key.

Delay the sorting of the cpreg_indexes until after add_cpreg_to_list.
This allows us to sort the data that we actually care about,
the kvm id, as computed within add_cpreg_to_list, instead of
having to repeatedly compute the kvm id within cpreg_key_compare.

Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Tested-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
3 weeks agotarget/arm: Rename CP_REG_AA32_NS_{SHIFT,MASK}
Richard Henderson [Tue, 16 Sep 2025 14:22:17 +0000 (07:22 -0700)] 
target/arm: Rename CP_REG_AA32_NS_{SHIFT,MASK}

Rename from CP_REG_NS_* to emphasize this is specific to AArch32.

Reviewed-by: Manos Pitsidianakis <manos.pitsidianakis@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Tested-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
3 weeks agotarget/arm: Add CP_REG_AA32_64BIT_{SHIFT,MASK}
Richard Henderson [Tue, 16 Sep 2025 14:22:16 +0000 (07:22 -0700)] 
target/arm: Add CP_REG_AA32_64BIT_{SHIFT,MASK}

Give a name to the bit we're already using.

Reviewed-by: Manos Pitsidianakis <manos.pitsidianakis@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Tested-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
3 weeks agotarget/arm: Replace cpreg_field_is_64bit with cpreg_field_type
Richard Henderson [Tue, 16 Sep 2025 14:22:15 +0000 (07:22 -0700)] 
target/arm: Replace cpreg_field_is_64bit with cpreg_field_type

Prepare for 128-bit fields by using a better query api.

Reviewed-by: Manos Pitsidianakis <manos.pitsidianakis@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Tested-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
3 weeks agotarget/arm: Restrict the scope of CPREG_FIELD32, CPREG_FIELD64
Richard Henderson [Tue, 16 Sep 2025 14:22:14 +0000 (07:22 -0700)] 
target/arm: Restrict the scope of CPREG_FIELD32, CPREG_FIELD64

Reviewed-by: Manos Pitsidianakis <manos.pitsidianakis@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Tested-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
3 weeks agotarget/arm: Drop define_one_arm_cp_reg_with_opaque
Richard Henderson [Tue, 16 Sep 2025 14:22:13 +0000 (07:22 -0700)] 
target/arm: Drop define_one_arm_cp_reg_with_opaque

The last use of this interface was removed in 603bc048a27f
("hw/arm: Remove pxa2xx_pic").  As the comment in gicv3
stated, keeping pointer references to cpregs has SMP issues,
so avoid future temptation by removing the interface.

Reviewed-by: Manos Pitsidianakis <manos.pitsidianakis@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Tested-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
3 weeks agotarget/arm: Rename all ARMCPRegInfo from opaque to ri
Richard Henderson [Tue, 16 Sep 2025 14:22:12 +0000 (07:22 -0700)] 
target/arm: Rename all ARMCPRegInfo from opaque to ri

These pointers are no opaque, they have a specific type.

Reviewed-by: Manos Pitsidianakis <manos.pitsidianakis@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Tested-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
3 weeks agotarget/arm: Use raw_write in cp_reg_reset
Richard Henderson [Tue, 16 Sep 2025 14:22:11 +0000 (07:22 -0700)] 
target/arm: Use raw_write in cp_reg_reset

Reduce the places that know about field types by 1.

Reviewed-by: Manos Pitsidianakis <manos.pitsidianakis@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Tested-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
3 weeks agotarget/arm/hvf: Use raw_read, raw_write to access
Richard Henderson [Tue, 16 Sep 2025 14:22:10 +0000 (07:22 -0700)] 
target/arm/hvf: Use raw_read, raw_write to access

Reduce the places that know about field types by 2.

Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Tested-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
3 weeks agotarget/arm/hvf: Sort the cpreg_indexes array
Richard Henderson [Tue, 16 Sep 2025 14:22:09 +0000 (07:22 -0700)] 
target/arm/hvf: Sort the cpreg_indexes array

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