qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Richard Henderson <richard.henderson@linaro.org>
To: qemu-devel@nongnu.org
Cc: qemu-arm@nongnu.org
Subject: [PATCH v5 00/76] target/arm: Implement FEAT_GCS
Date: Mon, 22 Sep 2025 11:48:08 -0700	[thread overview]
Message-ID: <20250922184924.2754205-1-richard.henderson@linaro.org> (raw)

Based-on: 20250916142238.664316-1-richard.henderson@linaro.org
("[PATCH v2 00/36] target/arm: Reorg VHE redirection")

Changes from v4:
  - Master now includes FEAT_ATS1A.
  - Rebase on VHE reorg
    - Trivial adjustments to S1PIE and GCS regs for REG12 redirect.
    - Simplifies EXLOCK access test.
  - Migration fixes based on review.

Note that tests/functional/aarch64/test_rme_* will fail.
The TF-A images need updating again for at least FEAT_S1PIE
(EL1 accessing PIRE0_EL1 trapping to EL3 is the fatal fault).

I'm toying with updating the QEMU build to match the FVP build,
so that all features are runtime enabled.


r~


Richard Henderson (76):
  target/arm: Add isar feature test for FEAT_S1PIE, FEAT_S2PIE
  target/arm: Enable TCR2_ELx.PIE
  target/arm: Implement PIR_ELx, PIRE0_ELx, S2PIR_EL2 registers
  target/arm: Force HPD for stage2 translations
  target/arm: Cache NV1 early in get_phys_addr_lpae
  target/arm: Populate PIE in aa64_va_parameters
  target/arm: Implement get_S1prot_indirect
  target/arm: Implement get_S2prot_indirect
  target/arm: Expand CPUARMState.exception.syndrome to 64 bits
  target/arm: Expand syndrome parameter to raise_exception*
  target/arm: Implement dirtybit check for PIE
  target/arm: Enable FEAT_S1PIE and FEAT_S2PIE on -cpu max
  include/hw/core/cpu: Introduce MMUIdxMap
  include/hw/core/cpu: Introduce cpu_tlb_fast
  include/hw/core/cpu: Invert the indexing into CPUTLBDescFast
  target/hppa: Adjust mmu indexes to begin with 0
  include/exec/memopidx: Adjust for 32 mmu indexes
  include/hw/core/cpu: Widen MMUIdxMap
  target/arm: Split out mmuidx.h from cpu.h
  target/arm: Convert arm_mmu_idx_to_el from switch to table
  target/arm: Remove unused env argument from regime_el
  target/arm: Convert regime_el from switch to table
  target/arm: Convert regime_has_2_ranges from switch to table
  target/arm: Remove unused env argument from regime_is_pan
  target/arm: Convert regime_is_pan from switch to table
  target/arm: Remove unused env argument from regime_is_user
  target/arm: Convert regime_is_user from switch to table
  target/arm: Convert arm_mmu_idx_is_stage1_of_2 from switch to table
  target/arm: Convert regime_is_stage2 to table
  target/arm: Introduce mmu indexes for GCS
  target/arm: Introduce regime_to_gcs
  target/arm: Support page protections for GCS mmu indexes
  target/arm: Implement gcs bit for data abort
  target/arm: Add GCS cpregs
  target/arm: Add GCS enable and trap levels to DisasContext
  target/arm: Implement FEAT_CHK
  target/arm: Make helper_exception_return system-only
  target/arm: Export cpsr_{read_for,write_from}_spsr_elx
  target/arm: Expand pstate to 64 bits
  target/arm: Add syndrome data for EC_GCS
  target/arm: Add arm_hcr_el2_nvx_eff
  target/arm: Use arm_hcr_el2_nvx_eff in access_nv1
  target/arm: Split out access_nv1_with_nvx
  target/arm: Implement EXLOCKException for ELR_ELx and SPSR_ELx
  target/arm: Split {full,core}_a64_user_mem_index
  target/arm: Introduce delay_exception{_el}
  target/arm: Emit HSTR trap exception out of line
  target/arm: Emit v7m LTPSIZE exception out of line
  target/arm: Implement GCSSTR, GCSSTTR
  target/arm: Implement GCSB
  target/arm: Implement GCSPUSHM
  target/arm: Implement GCSPOPM
  target/arm: Implement GCSPUSHX
  target/arm: Implement GCSPOPX
  target/arm: Implement GCSPOPCX
  target/arm: Implement GCSSS1
  target/arm: Implement GCSSS2
  target/arm: Add gcs record for BL
  target/arm: Add gcs record for BLR
  target/arm: Add gcs record for BLR with PAuth
  target/arm: Load gcs record for RET
  target/arm: Load gcs record for RET with PAuth
  target/arm: Copy EXLOCKEn to EXLOCK on exception to the same EL
  target/arm: Implement EXLOCK check during exception return
  target/arm: Enable FEAT_GCS with -cpu max
  linux-user/aarch64: Implement prctls for GCS
  linux-user/aarch64: Allocate new gcs stack on clone
  linux-user/aarch64: Release gcs stack on thread exit
  linux-user/aarch64: Implement map_shadow_stack syscall
  target/arm: Enable GCSPR_EL0 for read in user-mode
  linux-user/aarch64: Inject SIGSEGV for GCS faults
  linux-user/aarch64: Generate GCS signal records
  linux-user/aarch64: Enable GCS in HWCAP
  tests/tcg/aarch64: Add gcsstr
  tests/tcg/aarch64: Add gcspushm
  tests/tcg/aarch64: Add gcsss

 include/exec/cputlb.h              |  32 +--
 include/exec/memopidx.h            |   9 +-
 include/hw/core/cpu.h              |  25 +-
 linux-user/aarch64/gcs-internal.h  |  38 +++
 linux-user/aarch64/target_prctl.h  |  96 +++++++
 linux-user/aarch64/target_signal.h |   1 +
 linux-user/qemu.h                  |   5 +
 target/arm/cpregs.h                |  22 ++
 target/arm/cpu-features.h          |  15 +
 target/arm/cpu.h                   | 243 ++--------------
 target/arm/internals.h             | 148 ++--------
 target/arm/mmuidx-internal.h       | 113 ++++++++
 target/arm/mmuidx.h                | 241 ++++++++++++++++
 target/arm/syndrome.h              |  35 +++
 target/arm/tcg/helper-a64.h        |   5 +-
 target/arm/tcg/translate.h         |  46 ++-
 target/hppa/cpu.h                  |  28 +-
 tests/tcg/aarch64/gcs.h            |  80 ++++++
 accel/tcg/cputlb.c                 |  49 ++--
 linux-user/aarch64/cpu_loop.c      |   5 +
 linux-user/aarch64/elfload.c       |   1 +
 linux-user/aarch64/signal.c        | 138 ++++++++-
 linux-user/syscall.c               | 114 ++++++++
 target/arm/cpregs-gcs.c            | 156 ++++++++++
 target/arm/cpu.c                   |  17 +-
 target/arm/gdbstub64.c             |   2 +
 target/arm/helper.c                | 283 +++++++++++++++----
 target/arm/machine.c               | 113 +++++++-
 target/arm/mmuidx.c                |  66 +++++
 target/arm/ptw.c                   | 373 ++++++++++++++++++------
 target/arm/tcg-stubs.c             |   2 +-
 target/arm/tcg/cpu64.c             |   3 +
 target/arm/tcg/helper-a64.c        |  35 +--
 target/arm/tcg/hflags.c            |  38 +++
 target/arm/tcg/mte_helper.c        |   2 +-
 target/arm/tcg/op_helper.c         |  11 +-
 target/arm/tcg/tlb-insns.c         |  47 +++-
 target/arm/tcg/tlb_helper.c        |  18 +-
 target/arm/tcg/translate-a64.c     | 438 ++++++++++++++++++++++++++---
 target/arm/tcg/translate.c         |  78 +++--
 tcg/tcg.c                          |   3 +-
 tests/tcg/aarch64/gcspushm.c       |  71 +++++
 tests/tcg/aarch64/gcsss.c          |  74 +++++
 tests/tcg/aarch64/gcsstr.c         |  48 ++++
 docs/system/arm/emulation.rst      |   4 +
 target/arm/meson.build             |   9 +-
 target/arm/tcg/a64.decode          |   5 +
 tcg/aarch64/tcg-target.c.inc       |   2 +-
 tcg/arm/tcg-target.c.inc           |   2 +-
 tests/tcg/aarch64/Makefile.target  |   5 +
 50 files changed, 2734 insertions(+), 660 deletions(-)
 create mode 100644 linux-user/aarch64/gcs-internal.h
 create mode 100644 target/arm/mmuidx-internal.h
 create mode 100644 target/arm/mmuidx.h
 create mode 100644 tests/tcg/aarch64/gcs.h
 create mode 100644 target/arm/cpregs-gcs.c
 create mode 100644 target/arm/mmuidx.c
 create mode 100644 tests/tcg/aarch64/gcspushm.c
 create mode 100644 tests/tcg/aarch64/gcsss.c
 create mode 100644 tests/tcg/aarch64/gcsstr.c

-- 
2.43.0



             reply	other threads:[~2025-09-22 18:50 UTC|newest]

Thread overview: 78+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-09-22 18:48 Richard Henderson [this message]
2025-09-22 18:48 ` [PATCH v5 01/76] target/arm: Add isar feature test for FEAT_S1PIE, FEAT_S2PIE Richard Henderson
2025-09-22 18:48 ` [PATCH v5 02/76] target/arm: Enable TCR2_ELx.PIE Richard Henderson
2025-09-22 18:48 ` [PATCH v5 03/76] target/arm: Implement PIR_ELx, PIRE0_ELx, S2PIR_EL2 registers Richard Henderson
2025-09-22 18:48 ` [PATCH v5 04/76] target/arm: Force HPD for stage2 translations Richard Henderson
2025-09-22 18:48 ` [PATCH v5 05/76] target/arm: Cache NV1 early in get_phys_addr_lpae Richard Henderson
2025-09-22 18:48 ` [PATCH v5 06/76] target/arm: Populate PIE in aa64_va_parameters Richard Henderson
2025-09-22 18:48 ` [PATCH v5 07/76] target/arm: Implement get_S1prot_indirect Richard Henderson
2025-09-22 18:48 ` [PATCH v5 08/76] target/arm: Implement get_S2prot_indirect Richard Henderson
2025-09-22 18:48 ` [PATCH v5 09/76] target/arm: Expand CPUARMState.exception.syndrome to 64 bits Richard Henderson
2025-09-22 18:48 ` [PATCH v5 10/76] target/arm: Expand syndrome parameter to raise_exception* Richard Henderson
2025-09-22 18:48 ` [PATCH v5 11/76] target/arm: Implement dirtybit check for PIE Richard Henderson
2025-09-22 18:48 ` [PATCH v5 12/76] target/arm: Enable FEAT_S1PIE and FEAT_S2PIE on -cpu max Richard Henderson
2025-09-22 18:48 ` [PATCH v5 13/76] include/hw/core/cpu: Introduce MMUIdxMap Richard Henderson
2025-09-22 18:48 ` [PATCH v5 14/76] include/hw/core/cpu: Introduce cpu_tlb_fast Richard Henderson
2025-09-22 18:48 ` [PATCH v5 15/76] include/hw/core/cpu: Invert the indexing into CPUTLBDescFast Richard Henderson
2025-09-22 18:48 ` [PATCH v5 16/76] target/hppa: Adjust mmu indexes to begin with 0 Richard Henderson
2025-09-22 18:48 ` [PATCH v5 17/76] include/exec/memopidx: Adjust for 32 mmu indexes Richard Henderson
2025-09-22 18:48 ` [PATCH v5 18/76] include/hw/core/cpu: Widen MMUIdxMap Richard Henderson
2025-09-22 18:48 ` [PATCH v5 19/76] target/arm: Split out mmuidx.h from cpu.h Richard Henderson
2025-09-22 18:48 ` [PATCH v5 20/76] target/arm: Convert arm_mmu_idx_to_el from switch to table Richard Henderson
2025-09-22 18:48 ` [PATCH v5 21/76] target/arm: Remove unused env argument from regime_el Richard Henderson
2025-09-22 18:48 ` [PATCH v5 22/76] target/arm: Convert regime_el from switch to table Richard Henderson
2025-09-22 18:48 ` [PATCH v5 23/76] target/arm: Convert regime_has_2_ranges " Richard Henderson
2025-09-22 18:48 ` [PATCH v5 24/76] target/arm: Remove unused env argument from regime_is_pan Richard Henderson
2025-09-22 18:48 ` [PATCH v5 25/76] target/arm: Convert regime_is_pan from switch to table Richard Henderson
2025-09-22 18:48 ` [PATCH v5 26/76] target/arm: Remove unused env argument from regime_is_user Richard Henderson
2025-09-22 18:48 ` [PATCH v5 27/76] target/arm: Convert regime_is_user from switch to table Richard Henderson
2025-09-22 18:48 ` [PATCH v5 28/76] target/arm: Convert arm_mmu_idx_is_stage1_of_2 " Richard Henderson
2025-09-22 18:48 ` [PATCH v5 29/76] target/arm: Convert regime_is_stage2 " Richard Henderson
2025-09-22 18:48 ` [PATCH v5 30/76] target/arm: Introduce mmu indexes for GCS Richard Henderson
2025-09-22 18:48 ` [PATCH v5 31/76] target/arm: Introduce regime_to_gcs Richard Henderson
2025-09-22 18:48 ` [PATCH v5 32/76] target/arm: Support page protections for GCS mmu indexes Richard Henderson
2025-09-22 18:48 ` [PATCH v5 33/76] target/arm: Implement gcs bit for data abort Richard Henderson
2025-09-22 18:48 ` [PATCH v5 34/76] target/arm: Add GCS cpregs Richard Henderson
2025-09-22 18:48 ` [PATCH v5 35/76] target/arm: Add GCS enable and trap levels to DisasContext Richard Henderson
2025-09-22 18:48 ` [PATCH v5 36/76] target/arm: Implement FEAT_CHK Richard Henderson
2025-09-22 18:48 ` [PATCH v5 37/76] target/arm: Make helper_exception_return system-only Richard Henderson
2025-09-22 18:48 ` [PATCH v5 38/76] target/arm: Export cpsr_{read_for, write_from}_spsr_elx Richard Henderson
2025-09-22 18:48 ` [PATCH v5 39/76] target/arm: Expand pstate to 64 bits Richard Henderson
2025-09-22 18:48 ` [PATCH v5 40/76] target/arm: Add syndrome data for EC_GCS Richard Henderson
2025-09-22 18:48 ` [PATCH v5 41/76] target/arm: Add arm_hcr_el2_nvx_eff Richard Henderson
2025-09-22 18:48 ` [PATCH v5 42/76] target/arm: Use arm_hcr_el2_nvx_eff in access_nv1 Richard Henderson
2025-09-22 18:48 ` [PATCH v5 43/76] target/arm: Split out access_nv1_with_nvx Richard Henderson
2025-09-22 18:48 ` [PATCH v5 44/76] target/arm: Implement EXLOCKException for ELR_ELx and SPSR_ELx Richard Henderson
2025-09-22 18:48 ` [PATCH v5 45/76] target/arm: Split {full,core}_a64_user_mem_index Richard Henderson
2025-09-22 18:48 ` [PATCH v5 46/76] target/arm: Introduce delay_exception{_el} Richard Henderson
2025-09-22 18:48 ` [PATCH v5 47/76] target/arm: Emit HSTR trap exception out of line Richard Henderson
2025-09-22 18:48 ` [PATCH v5 48/76] target/arm: Emit v7m LTPSIZE " Richard Henderson
2025-09-22 18:48 ` [PATCH v5 49/76] target/arm: Implement GCSSTR, GCSSTTR Richard Henderson
2025-09-22 18:48 ` [PATCH v5 50/76] target/arm: Implement GCSB Richard Henderson
2025-09-22 18:48 ` [PATCH v5 51/76] target/arm: Implement GCSPUSHM Richard Henderson
2025-09-22 18:49 ` [PATCH v5 52/76] target/arm: Implement GCSPOPM Richard Henderson
2025-09-22 18:49 ` [PATCH v5 53/76] target/arm: Implement GCSPUSHX Richard Henderson
2025-09-22 18:49 ` [PATCH v5 54/76] target/arm: Implement GCSPOPX Richard Henderson
2025-09-22 18:49 ` [PATCH v5 55/76] target/arm: Implement GCSPOPCX Richard Henderson
2025-09-22 18:49 ` [PATCH v5 56/76] target/arm: Implement GCSSS1 Richard Henderson
2025-09-22 18:49 ` [PATCH v5 57/76] target/arm: Implement GCSSS2 Richard Henderson
2025-09-22 18:49 ` [PATCH v5 58/76] target/arm: Add gcs record for BL Richard Henderson
2025-09-22 18:49 ` [PATCH v5 59/76] target/arm: Add gcs record for BLR Richard Henderson
2025-09-22 18:49 ` [PATCH v5 60/76] target/arm: Add gcs record for BLR with PAuth Richard Henderson
2025-09-22 18:49 ` [PATCH v5 61/76] target/arm: Load gcs record for RET Richard Henderson
2025-09-22 18:49 ` [PATCH v5 62/76] target/arm: Load gcs record for RET with PAuth Richard Henderson
2025-09-22 18:49 ` [PATCH v5 63/76] target/arm: Copy EXLOCKEn to EXLOCK on exception to the same EL Richard Henderson
2025-09-22 18:49 ` [PATCH v5 64/76] target/arm: Implement EXLOCK check during exception return Richard Henderson
2025-09-22 18:49 ` [PATCH v5 65/76] target/arm: Enable FEAT_GCS with -cpu max Richard Henderson
2025-09-22 18:49 ` [PATCH v5 66/76] linux-user/aarch64: Implement prctls for GCS Richard Henderson
2025-09-22 18:49 ` [PATCH v5 67/76] linux-user/aarch64: Allocate new gcs stack on clone Richard Henderson
2025-09-22 18:49 ` [PATCH v5 68/76] linux-user/aarch64: Release gcs stack on thread exit Richard Henderson
2025-09-22 18:49 ` [PATCH v5 69/76] linux-user/aarch64: Implement map_shadow_stack syscall Richard Henderson
2025-09-22 18:49 ` [PATCH v5 70/76] target/arm: Enable GCSPR_EL0 for read in user-mode Richard Henderson
2025-09-22 18:49 ` [PATCH v5 71/76] linux-user/aarch64: Inject SIGSEGV for GCS faults Richard Henderson
2025-09-22 18:49 ` [PATCH v5 72/76] linux-user/aarch64: Generate GCS signal records Richard Henderson
2025-09-22 18:49 ` [PATCH v5 73/76] linux-user/aarch64: Enable GCS in HWCAP Richard Henderson
2025-09-22 18:49 ` [PATCH v5 74/76] tests/tcg/aarch64: Add gcsstr Richard Henderson
2025-09-22 18:49 ` [PATCH v5 75/76] tests/tcg/aarch64: Add gcspushm Richard Henderson
2025-09-22 18:49 ` [PATCH v5 76/76] tests/tcg/aarch64: Add gcsss Richard Henderson
2025-09-23 23:58 ` [PATCH v5 00/76] target/arm: Implement FEAT_GCS Richard Henderson

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20250922184924.2754205-1-richard.henderson@linaro.org \
    --to=richard.henderson@linaro.org \
    --cc=qemu-arm@nongnu.org \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).