[PATCH 00/20] accel/tcg: Introduce tlb_fill_align hook

Richard Henderson posted 20 patches 1 month, 2 weeks ago
There is a newer version of this series
include/exec/memop.h           |  47 +++++++++++
include/hw/core/tcg-cpu-ops.h  |  25 ++++++
include/tcg/tcg.h              |  23 ------
target/arm/internals.h         |   6 +-
target/hppa/cpu.h              |   5 +-
accel/tcg/cputlb.c             | 142 +++++++++++++++++----------------
accel/tcg/user-exec.c          |   4 +-
target/alpha/cpu.c             |   1 +
target/arm/cpu.c               |   1 +
target/arm/helper.c            |   4 +-
target/arm/ptw.c               | 139 ++++++++++++++++++--------------
target/arm/tcg/cpu-v7m.c       |   1 +
target/arm/tcg/m_helper.c      |   8 +-
target/arm/tcg/tlb_helper.c    |   2 +-
target/arm/tcg/translate-a64.c |   4 +-
target/avr/cpu.c               |   1 +
target/hppa/cpu.c              |   1 +
target/hppa/int_helper.c       |   2 +-
target/hppa/mem_helper.c       |  50 ++++++++----
target/hppa/op_helper.c        |   2 +-
target/i386/tcg/tcg-cpu.c      |   1 +
target/loongarch/cpu.c         |   1 +
target/m68k/cpu.c              |   1 +
target/microblaze/cpu.c        |   1 +
target/mips/cpu.c              |   1 +
target/openrisc/cpu.c          |   1 +
target/ppc/cpu_init.c          |   1 +
target/riscv/tcg/tcg-cpu.c     |   1 +
target/rx/cpu.c                |   1 +
target/s390x/cpu.c             |   1 +
target/sh4/cpu.c               |   1 +
target/sparc/cpu.c             |   1 +
target/tricore/cpu.c           |   1 +
target/xtensa/cpu.c            |   1 +
target/xtensa/translate.c      |   2 +-
tcg/tcg-op-ldst.c              |   6 +-
tcg/tcg.c                      |   2 +-
tcg/arm/tcg-target.c.inc       |   4 +-
tcg/sparc64/tcg-target.c.inc   |   2 +-
39 files changed, 302 insertions(+), 196 deletions(-)
[PATCH 00/20] accel/tcg: Introduce tlb_fill_align hook
Posted by Richard Henderson 1 month, 2 weeks ago
This new hook will allow targets to recognize an alignment
fault with the correct priority with respect to other faults
that can be raised by paging.

This should fix several hppa fault priority issues, most
importantly that access permissions come before alignment.

This should fix the documented error in the Arm alignment
fault due to memory type.


r~


Richard Henderson (20):
  accel/tcg: Assert noreturn from write-only page for atomics
  accel/tcg: Expand tlb_fill for 3 callers
  include/exec/memop: Move get_alignment_bits from tcg.h
  include/exec/memop: Rename get_alignment_bits
  include/exec/memop: Introduce memop_atomicity_bits
  hw/core/tcg-cpu-ops: Introduce tlb_fill_align hook
  accel/tcg: Use the tlb_fill_align hook
  target/hppa: Add MemOp argument to hppa_get_physical_address
  target/hppa: Perform access rights before protection id check
  target/hppa: Fix priority of T, D, and B page faults
  target/hppa: Handle alignment faults in hppa_get_physical_address
  target/hppa: Add hppa_cpu_tlb_fill_align
  target/arm: Pass MemOp to get_phys_addr
  target/arm: Pass MemOp to get_phys_addr_with_space_nogpc
  target/arm: Pass MemOp to get_phys_addr_gpc
  target/arm: Pass MemOp to get_phys_addr_nogpc
  target/arm: Pass MemOp through get_phys_addr_twostage
  target/arm: Pass MemOp to get_phys_addr_lpae
  target/arm: Move device detection earlier in get_phys_addr_lpae
  target/arm: Fix alignment fault priority in get_phys_addr_lpae

 include/exec/memop.h           |  47 +++++++++++
 include/hw/core/tcg-cpu-ops.h  |  25 ++++++
 include/tcg/tcg.h              |  23 ------
 target/arm/internals.h         |   6 +-
 target/hppa/cpu.h              |   5 +-
 accel/tcg/cputlb.c             | 142 +++++++++++++++++----------------
 accel/tcg/user-exec.c          |   4 +-
 target/alpha/cpu.c             |   1 +
 target/arm/cpu.c               |   1 +
 target/arm/helper.c            |   4 +-
 target/arm/ptw.c               | 139 ++++++++++++++++++--------------
 target/arm/tcg/cpu-v7m.c       |   1 +
 target/arm/tcg/m_helper.c      |   8 +-
 target/arm/tcg/tlb_helper.c    |   2 +-
 target/arm/tcg/translate-a64.c |   4 +-
 target/avr/cpu.c               |   1 +
 target/hppa/cpu.c              |   1 +
 target/hppa/int_helper.c       |   2 +-
 target/hppa/mem_helper.c       |  50 ++++++++----
 target/hppa/op_helper.c        |   2 +-
 target/i386/tcg/tcg-cpu.c      |   1 +
 target/loongarch/cpu.c         |   1 +
 target/m68k/cpu.c              |   1 +
 target/microblaze/cpu.c        |   1 +
 target/mips/cpu.c              |   1 +
 target/openrisc/cpu.c          |   1 +
 target/ppc/cpu_init.c          |   1 +
 target/riscv/tcg/tcg-cpu.c     |   1 +
 target/rx/cpu.c                |   1 +
 target/s390x/cpu.c             |   1 +
 target/sh4/cpu.c               |   1 +
 target/sparc/cpu.c             |   1 +
 target/tricore/cpu.c           |   1 +
 target/xtensa/cpu.c            |   1 +
 target/xtensa/translate.c      |   2 +-
 tcg/tcg-op-ldst.c              |   6 +-
 tcg/tcg.c                      |   2 +-
 tcg/arm/tcg-target.c.inc       |   4 +-
 tcg/sparc64/tcg-target.c.inc   |   2 +-
 39 files changed, 302 insertions(+), 196 deletions(-)

-- 
2.43.0