qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v4 0/4] Add support for PowerPC e500 little-endian pages
@ 2025-10-27 12:30 Danila Zhebryakov
  2025-10-27 12:30 ` [PATCH v4 1/4] accel/tcg: Unify big- and little- endian atomic ops Danila Zhebryakov
                   ` (4 more replies)
  0 siblings, 5 replies; 6+ messages in thread
From: Danila Zhebryakov @ 2025-10-27 12:30 UTC (permalink / raw)
  To: qemu-devel
  Cc: Paolo Bonzini, Laurent Vivier, Nicholas Piggin, Ilya Leoshkevich,
	David Hildenbrand, qemu-ppc, Riku Voipio, Chinmay Rath,
	Thomas Huth, Richard Henderson, qemu-s390x, Danila Zhebryakov

These changes make powerpc booke206 mmu pass TLB_BSWAP flag for pages marked as LE, and also fixes all the issues this causes.
 - added TLB_BSWAP to non-MMIO flags
 - inserted additional check for LE page when bswap-ing instructions
 - removed assert for cross-page TLB_BSWAP accesses
 - added gdbstub fix to account for TLB_BSWAP of the currently running code

BE- and LE- atomic operations (used by load-and-reserve and store-conditional instructions) were unified to support TLB_BSWAP

Some of the fixes are based on what is done in https://github.com/YetAnotherMod/qemu

V2:
 - Removed usage of PAGE_USER bit for LE (comment on previous version)
 - Refactored MMU code so directly setting TLB_BSWAP is possible
 - moved translation LE page detect to occur 1 time per translation (comment on previous version)
 - Removed redundant assert in atomic_mmu_lookup (comment on previous version)
 - Added assert on cross-endian accesses (ideally, there should be an exception)
 - Changed atomic need_bswap handling (comment on previous version)
 - Rebased and fixed atomics

V3
 - unfix assumed typo (if vs iff). Everything else unchanged

V4
 - fix leftovers from BE/LE atomic op tables
 - fix uninitialized CPUTLBEntryFull full in mmu_common

According to RM, unaligned accesses between LE and BE pages should cause an exception on e500.
However, (as I understand it) supporting this would require adding a new callback to TCGCPUOps, likely just for E500 or maybe a couple other CPUs doing this.
Such accesses are clearly not normal and usually don't occur in real applications, so I think just placing assert is OK here.

Danila Zhebryakov (4):
  accel/tcg: Unify big- and little- endian atomic ops
  target/ppc: refactor MMU helpers
  target/ppc: Add support for LE pages on PowerPC booke206 mmu
  target/ppc: fix GDB stub to work correctly with LE pages

 accel/tcg/atomic_common.c.inc       |  36 +--
 accel/tcg/atomic_template.h         | 326 ++++++++++------------------
 accel/tcg/cputlb.c                  |  29 ++-
 accel/tcg/tcg-runtime.h             |  48 +---
 accel/tcg/user-exec.c               |   2 +-
 include/accel/tcg/cpu-ldst-common.h |  51 ++---
 target/m68k/op_helper.c             |   4 +-
 target/ppc/gdbstub.c                |  17 +-
 target/ppc/internal.h               |   3 +-
 target/ppc/mmu-booke.c              |  67 +++---
 target/ppc/mmu-booke.h              |   2 +-
 target/ppc/mmu-hash32.c             |  30 +--
 target/ppc/mmu-hash32.h             |   3 +-
 target/ppc/mmu-hash64.c             |  14 +-
 target/ppc/mmu-hash64.h             |   2 +-
 target/ppc/mmu-radix64.c            |  20 +-
 target/ppc/mmu-radix64.h            |   2 +-
 target/ppc/mmu_common.c             |  75 ++++---
 target/ppc/mmu_helper.c             |  15 +-
 target/ppc/translate.c              |  42 +++-
 target/s390x/tcg/mem_helper.c       |   6 +-
 tcg/tcg-op-ldst.c                   |  51 ++---
 22 files changed, 374 insertions(+), 471 deletions(-)

-- 
2.47.3



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

end of thread, other threads:[~2025-11-02 16:20 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-10-27 12:30 [PATCH v4 0/4] Add support for PowerPC e500 little-endian pages Danila Zhebryakov
2025-10-27 12:30 ` [PATCH v4 1/4] accel/tcg: Unify big- and little- endian atomic ops Danila Zhebryakov
2025-10-27 12:30 ` [PATCH v4 2/4] target/ppc: refactor MMU helpers Danila Zhebryakov
2025-10-27 12:30 ` [PATCH v4 3/4] target/ppc: Add support for LE pages on PowerPC booke206 mmu Danila Zhebryakov
2025-10-27 12:30 ` [PATCH v4 4/4] target/ppc: fix GDB stub to work correctly with LE pages Danila Zhebryakov
     [not found] ` <d52da8d1-3d9c-46c4-99db-b22bd597db27@linux.ibm.com>
2025-11-02 16:20   ` [PATCH v4 0/4] Add support for PowerPC e500 little-endian pages Yogesh Vyas

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).