All of lore.kernel.org
 help / color / mirror / Atom feed
* [RFC PATCH 00/18] accel/tcg: Change tlb_fill/probe_access to (addr, first, last) tuple
@ 2026-08-15 20:37 Richard Henderson
  2026-08-15 20:37 ` [RFC PATCH 01/18] target/arm: Imply probe from allocation_tag_mem_probe Richard Henderson
                   ` (17 more replies)
  0 siblings, 18 replies; 38+ messages in thread
From: Richard Henderson @ 2026-08-15 20:37 UTC (permalink / raw)
  To: qemu-devel; +Cc: qemu-arm, qemu-riscv

The driver for this RFC is
https://lore.kernel.org/qemu-devel/ce3a48b5-9847-4cc4-a02f-86db497c91ae@linaro.org/

Based-on: 20260815194549.1377505-1-richard.henderson@linaro.org
("[PATCH 00/23] target/riscv: Reorg vector load/store")

But also merged to master, so for avoidance of doubt:
https://gitlab.com/rth7680/qemu/-/commits/tcg-probe

Convert probe_access_full, probe_access_flags, and the backend tlb_fill
hooks, but not (yet) probe_access itself.  I'm less certain about that,
since its uses are (1) less complicated and (2) there's also a path,
which I can't prove isn't used but neither can I find, which avoids
both watchpoints and notdirty pages.

I've tweaked the riscv pmp check to use the new parameters.
The similar Armv8-M code is a bit more complicated to push through,
and I need to study it a bit more.

Thoughts?


r~


Richard Henderson (18):
  target/arm: Imply probe from allocation_tag_mem_probe
  target/arm: Simplify invalid page test in allocation_tag_mem_internal
  target/arm: Return struct from allocation_tag_mem_internal
  target/arm: Generalize probe argument to allocation_tag_mem_internal
  target/arm: Probe second page earlier in allocation_tag_mem_internal
  accel/tcg: Drop fault_size from user-only probe_access_internal
  accel/tcg: Replace size with first/last in probe_access_full
  accel/tcg: Replace size with first/last in probe_access_flags
  accel/tcg: Allow phost to be NULL in probe_access_flags
  accel/tcg: Replace size with first/last in probe_access_internal
  accel/tcg: Replace size with first/last in tlb_fill_align
  accel/tcg: Replace size with first/last in TCGCPUOps.tlb_fill*
  target/riscv: Move PMP_AMATCH_OFF check in pmp_hart_has_privs
  target/riscv: Return bool from pmp_is_in_range
  target/riscv: Use boolean logic in pmp_hart_has_privs
  target/riscv: Recognize watchpoints with first/last
  target/riscv: Pass first/last to get_physical_address_pmp
  target/riscv: Pass first/last to pmp_hart_has_privs

 include/accel/tcg/cpu-ops.h          |  16 +-
 include/accel/tcg/probe.h            |  27 ++-
 target/alpha/cpu.h                   |   2 +-
 target/arm/internals.h               |   5 +-
 target/arm/tcg/mte_helper.h          |  18 +-
 target/avr/cpu.h                     |   2 +-
 target/hppa/cpu.h                    |   5 +-
 target/i386/tcg/helper-tcg.h         |   2 +-
 target/loongarch/tcg/tcg_loongarch.h |   2 +-
 target/m68k/cpu.h                    |   2 +-
 target/microblaze/cpu.h              |   2 +-
 target/mips/tcg/tcg-internal.h       |   2 +-
 target/or1k/cpu.h                    |   2 +-
 target/ppc/internal.h                |   2 +-
 target/riscv/cpu.h                   |   2 +-
 target/riscv/tcg/pmp.h               |   5 +-
 target/s390x/s390x-internal.h        |   2 +-
 target/sh4/cpu.h                     |   2 +-
 target/sparc/cpu.h                   |   2 +-
 target/tricore/cpu.h                 |   2 +-
 target/xtensa/cpu.h                  |   2 +-
 accel/tcg/cputlb.c                   |  91 +++++----
 accel/tcg/user-exec.c                |  20 +-
 semihosting/uaccess.c                |  10 +-
 target/alpha/helper.c                |   2 +-
 target/arm/gdbstub64.c               |  10 +-
 target/arm/tcg/helper-a64.c          |   5 +-
 target/arm/tcg/mte_helper.c          | 273 +++++++++++++++++----------
 target/arm/tcg/sve_helper.c          |  10 +-
 target/arm/tcg/tlb_helper.c          |   5 +-
 target/avr/helper.c                  |   2 +-
 target/hexagon/cpu.c                 |   8 +-
 target/hppa/mem_helper.c             |   6 +-
 target/i386/tcg/system/excp_helper.c |   2 +-
 target/loongarch/tcg/tlb_helper.c    |   3 +-
 target/m68k/helper.c                 |   3 +-
 target/microblaze/helper.c           |   2 +-
 target/mips/tcg/ldst_helper.c        |   4 +-
 target/mips/tcg/system/tlb_helper.c  |   2 +-
 target/or1k/mmu.c                    |   2 +-
 target/ppc/mmu_helper.c              |   2 +-
 target/riscv/tcg/cpu_helper.c        |  53 +++---
 target/riscv/tcg/op_helper.c         |   5 +-
 target/riscv/tcg/pmp.c               |  66 +++----
 target/riscv/tcg/vector_helper.c     |  21 ++-
 target/rx/cpu.c                      |   2 +-
 target/s390x/tcg/excp_helper.c       |   2 +-
 target/s390x/tcg/mem_helper.c        |   4 +-
 target/sh4/helper.c                  |   2 +-
 target/sparc/mmu_helper.c            |   4 +-
 target/tricore/helper.c              |   2 +-
 target/xtensa/helper.c               |   2 +-
 52 files changed, 412 insertions(+), 319 deletions(-)

-- 
2.43.0



^ permalink raw reply	[flat|nested] 38+ messages in thread

end of thread, other threads:[~2026-08-21 21:07 UTC | newest]

Thread overview: 38+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-08-15 20:37 [RFC PATCH 00/18] accel/tcg: Change tlb_fill/probe_access to (addr, first, last) tuple Richard Henderson
2026-08-15 20:37 ` [RFC PATCH 01/18] target/arm: Imply probe from allocation_tag_mem_probe Richard Henderson
2026-08-15 20:37 ` [RFC PATCH 02/18] target/arm: Simplify invalid page test in allocation_tag_mem_internal Richard Henderson
2026-08-15 20:37 ` [RFC PATCH 03/18] target/arm: Return struct from allocation_tag_mem_internal Richard Henderson
2026-08-15 20:37 ` [RFC PATCH 04/18] target/arm: Generalize probe argument to allocation_tag_mem_internal Richard Henderson
2026-08-15 20:37 ` [RFC PATCH 05/18] target/arm: Probe second page earlier in allocation_tag_mem_internal Richard Henderson
2026-08-15 20:37 ` [RFC PATCH 06/18] accel/tcg: Drop fault_size from user-only probe_access_internal Richard Henderson
2026-08-16  9:05   ` Philippe Mathieu-Daudé
2026-08-15 20:37 ` [RFC PATCH 07/18] accel/tcg: Replace size with first/last in probe_access_full Richard Henderson
2026-08-16  9:09   ` Philippe Mathieu-Daudé
2026-08-16  9:11     ` Philippe Mathieu-Daudé
2026-08-15 20:37 ` [RFC PATCH 08/18] accel/tcg: Replace size with first/last in probe_access_flags Richard Henderson
2026-08-16  9:18   ` Philippe Mathieu-Daudé
2026-08-15 20:37 ` [RFC PATCH 09/18] accel/tcg: Allow phost to be NULL " Richard Henderson
2026-08-16  9:18   ` Philippe Mathieu-Daudé
2026-08-15 20:37 ` [RFC PATCH 10/18] accel/tcg: Replace size with first/last in probe_access_internal Richard Henderson
2026-08-16  9:19   ` Philippe Mathieu-Daudé
2026-08-15 20:37 ` [RFC PATCH 11/18] accel/tcg: Replace size with first/last in tlb_fill_align Richard Henderson
2026-08-16  9:20   ` Philippe Mathieu-Daudé
2026-08-15 20:37 ` [RFC PATCH 12/18] accel/tcg: Replace size with first/last in TCGCPUOps.tlb_fill* Richard Henderson
2026-08-16 15:17   ` Philippe Mathieu-Daudé
2026-08-21 21:07     ` Richard Henderson
2026-08-15 20:37 ` [RFC PATCH 13/18] target/riscv: Move PMP_AMATCH_OFF check in pmp_hart_has_privs Richard Henderson
2026-08-16  9:21   ` Philippe Mathieu-Daudé
2026-08-18  3:30   ` Alistair
2026-08-15 20:37 ` [RFC PATCH 14/18] target/riscv: Return bool from pmp_is_in_range Richard Henderson
2026-08-16 15:09   ` Philippe Mathieu-Daudé
2026-08-18  3:31   ` Alistair
2026-08-15 20:37 ` [RFC PATCH 15/18] target/riscv: Use boolean logic in pmp_hart_has_privs Richard Henderson
2026-08-18  3:32   ` Alistair
2026-08-15 20:37 ` [RFC PATCH 16/18] target/riscv: Recognize watchpoints with first/last Richard Henderson
2026-08-18  5:43   ` Philippe Mathieu-Daudé
2026-08-18 23:47     ` Richard Henderson
2026-08-15 20:37 ` [RFC PATCH 17/18] target/riscv: Pass first/last to get_physical_address_pmp Richard Henderson
2026-08-18  3:35   ` Alistair
2026-08-18  5:35   ` Philippe Mathieu-Daudé
2026-08-15 20:37 ` [RFC PATCH 18/18] target/riscv: Pass first/last to pmp_hart_has_privs Richard Henderson
2026-08-18  3:36   ` Alistair

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.