[PATCH v5 00/22] system/memory: Clean ups around address_space_ldst() endian variants

Philippe Mathieu-Daudé posted 22 patches 4 weeks ago
Failed in applying to current master (apply log)
There is a newer version of this series
MAINTAINERS                                  |   4 +
include/accel/tcg/cpu-ldst.h                 |   2 +
include/exec/memop.h                         |   4 +
include/exec/translator.h                    |   5 +-
include/exec/tswap.h                         |   3 +
include/hw/virtio/virtio-access.h            |   1 +
include/qemu/bswap.h                         |  11 -
include/qemu/ldst_unaligned.h                |  25 ++
include/system/memory.h                      | 193 +-------
include/system/memory_cached.h               | 212 +++++++++
system/memory-internal.h                     |   2 +
include/system/memory_ldst.h.inc             |  52 +--
include/system/memory_ldst_endian.h.inc      |  33 ++
include/system/memory_ldst_phys.h.inc        | 113 +----
include/system/memory_ldst_phys_endian.h.inc |  57 +++
system/ioport.c                              |  34 +-
system/physmem.c                             |  35 +-
tests/qtest/endianness-test.c                |  10 +-
tests/qtest/libqtest.c                       |  13 +-
util/ldst.c                                  |  69 +++
system/memory_ldst.c.inc                     | 449 ++-----------------
system/memory_ldst_endian.c.inc              |  70 +++
scripts/make-config-poison.sh                |   1 +
system/trace-events                          |   6 +
util/meson.build                             |   1 +
25 files changed, 599 insertions(+), 806 deletions(-)
create mode 100644 include/system/memory_cached.h
create mode 100644 include/system/memory_ldst_endian.h.inc
create mode 100644 include/system/memory_ldst_phys_endian.h.inc
create mode 100644 util/ldst.c
create mode 100644 system/memory_ldst_endian.c.inc
[PATCH v5 00/22] system/memory: Clean ups around address_space_ldst() endian variants
Posted by Philippe Mathieu-Daudé 4 weeks ago
Missing review: 2, 12, 20

Since v4:
- No change (RESEND)

Since v3:
- Assign device_endian enums (Richard)
- Add/use ldm_p() and stm_p() helpers (Paolo)

Since v2:
- Changed opt-out to opt-in approach (Pierrick)
- Split big patches in smaller ones
- Mark ioport little-endian

Philippe Mathieu-Daudé (22):
  MAINTAINERS: Cover 'system/memory_ldst*.h.inc' files
  util: Introduce ldm_p() and stm_p() load/store helpers
  system/physmem: Inline and remove leul_to_cpu()
  system/physmem: Convert DEBUG_SUBPAGE printf() to trace events
  system/memory: Split MemoryRegionCache API to 'memory_cached.h'
  system/memory: Inline address_space_stq_internal()
  system/memory: Define address_space_ldst[W] endian variants via
    template
  system/memory: Define address_space_ldst[L] endian variants via
    template
  system/memory: Define address_space_ldst[Q] endian variants via
    template
  system/memory: Factor address_space_ldst[M]_internal() helper out
  system/memory: Pass device_endian argument as MemOp bit
  system/memory: Use ldm_p() and stm_p() helpers
  system/memory: Directly call address_space_ldst[M]_internal() helper
  system: Allow restricting the legacy ld/st_phys() 'native-endian' API
  system: Allow restricting legacy address_space_ldst() native-endian
    API
  system: Allow restricting the legacy cpu_ld/st() 'native-endian' API
  system: Allow restricting the legacy translator_ld() 'native-endian'
    API
  system: Allow restricting the legacy tswap() 'native-endian' API
  system: Allow restricting the legacy MO_TE* 'native-endian'
    definitions
  system: Allow restricting the legacy DEVICE_NATIVE_ENDIAN definition
  system/ioport: Declare x86-specific I/O port in little-endian order
  system/ioport: Do not open-code address_space_ld/st_le() methods

 MAINTAINERS                                  |   4 +
 include/accel/tcg/cpu-ldst.h                 |   2 +
 include/exec/memop.h                         |   4 +
 include/exec/translator.h                    |   5 +-
 include/exec/tswap.h                         |   3 +
 include/hw/virtio/virtio-access.h            |   1 +
 include/qemu/bswap.h                         |  11 -
 include/qemu/ldst_unaligned.h                |  25 ++
 include/system/memory.h                      | 193 +-------
 include/system/memory_cached.h               | 212 +++++++++
 system/memory-internal.h                     |   2 +
 include/system/memory_ldst.h.inc             |  52 +--
 include/system/memory_ldst_endian.h.inc      |  33 ++
 include/system/memory_ldst_phys.h.inc        | 113 +----
 include/system/memory_ldst_phys_endian.h.inc |  57 +++
 system/ioport.c                              |  34 +-
 system/physmem.c                             |  35 +-
 tests/qtest/endianness-test.c                |  10 +-
 tests/qtest/libqtest.c                       |  13 +-
 util/ldst.c                                  |  69 +++
 system/memory_ldst.c.inc                     | 449 ++-----------------
 system/memory_ldst_endian.c.inc              |  70 +++
 scripts/make-config-poison.sh                |   1 +
 system/trace-events                          |   6 +
 util/meson.build                             |   1 +
 25 files changed, 599 insertions(+), 806 deletions(-)
 create mode 100644 include/system/memory_cached.h
 create mode 100644 include/system/memory_ldst_endian.h.inc
 create mode 100644 include/system/memory_ldst_phys_endian.h.inc
 create mode 100644 util/ldst.c
 create mode 100644 system/memory_ldst_endian.c.inc

-- 
2.52.0


Re: [PATCH v5 00/22] system/memory: Clean ups around address_space_ldst() endian variants
Posted by Paolo Bonzini 4 weeks ago
Il ven 9 gen 2026, 17:51 Philippe Mathieu-Daudé <philmd@linaro.org> ha
scritto:

> Missing review: 2, 12, 20
>
> Since v4:
> - No change (RESEND)
>

For subpages, are you leaving for later the switch away from
DEVICE_NATIVE_ENDIAN?

Paolo

Since v3:
> - Assign device_endian enums (Richard)
> - Add/use ldm_p() and stm_p() helpers (Paolo)
>
> Since v2:
> - Changed opt-out to opt-in approach (Pierrick)
> - Split big patches in smaller ones
> - Mark ioport little-endian
>
> Philippe Mathieu-Daudé (22):
>   MAINTAINERS: Cover 'system/memory_ldst*.h.inc' files
>   util: Introduce ldm_p() and stm_p() load/store helpers
>   system/physmem: Inline and remove leul_to_cpu()
>   system/physmem: Convert DEBUG_SUBPAGE printf() to trace events
>   system/memory: Split MemoryRegionCache API to 'memory_cached.h'
>   system/memory: Inline address_space_stq_internal()
>   system/memory: Define address_space_ldst[W] endian variants via
>     template
>   system/memory: Define address_space_ldst[L] endian variants via
>     template
>   system/memory: Define address_space_ldst[Q] endian variants via
>     template
>   system/memory: Factor address_space_ldst[M]_internal() helper out
>   system/memory: Pass device_endian argument as MemOp bit
>   system/memory: Use ldm_p() and stm_p() helpers
>   system/memory: Directly call address_space_ldst[M]_internal() helper
>   system: Allow restricting the legacy ld/st_phys() 'native-endian' API
>   system: Allow restricting legacy address_space_ldst() native-endian
>     API
>   system: Allow restricting the legacy cpu_ld/st() 'native-endian' API
>   system: Allow restricting the legacy translator_ld() 'native-endian'
>     API
>   system: Allow restricting the legacy tswap() 'native-endian' API
>   system: Allow restricting the legacy MO_TE* 'native-endian'
>     definitions
>   system: Allow restricting the legacy DEVICE_NATIVE_ENDIAN definition
>   system/ioport: Declare x86-specific I/O port in little-endian order
>   system/ioport: Do not open-code address_space_ld/st_le() methods
>
>  MAINTAINERS                                  |   4 +
>  include/accel/tcg/cpu-ldst.h                 |   2 +
>  include/exec/memop.h                         |   4 +
>  include/exec/translator.h                    |   5 +-
>  include/exec/tswap.h                         |   3 +
>  include/hw/virtio/virtio-access.h            |   1 +
>  include/qemu/bswap.h                         |  11 -
>  include/qemu/ldst_unaligned.h                |  25 ++
>  include/system/memory.h                      | 193 +-------
>  include/system/memory_cached.h               | 212 +++++++++
>  system/memory-internal.h                     |   2 +
>  include/system/memory_ldst.h.inc             |  52 +--
>  include/system/memory_ldst_endian.h.inc      |  33 ++
>  include/system/memory_ldst_phys.h.inc        | 113 +----
>  include/system/memory_ldst_phys_endian.h.inc |  57 +++
>  system/ioport.c                              |  34 +-
>  system/physmem.c                             |  35 +-
>  tests/qtest/endianness-test.c                |  10 +-
>  tests/qtest/libqtest.c                       |  13 +-
>  util/ldst.c                                  |  69 +++
>  system/memory_ldst.c.inc                     | 449 ++-----------------
>  system/memory_ldst_endian.c.inc              |  70 +++
>  scripts/make-config-poison.sh                |   1 +
>  system/trace-events                          |   6 +
>  util/meson.build                             |   1 +
>  25 files changed, 599 insertions(+), 806 deletions(-)
>  create mode 100644 include/system/memory_cached.h
>  create mode 100644 include/system/memory_ldst_endian.h.inc
>  create mode 100644 include/system/memory_ldst_phys_endian.h.inc
>  create mode 100644 util/ldst.c
>  create mode 100644 system/memory_ldst_endian.c.inc
>
> --
> 2.52.0
>
>
Re: [PATCH v5 00/22] system/memory: Clean ups around address_space_ldst() endian variants
Posted by Philippe Mathieu-Daudé 2 weeks, 5 days ago
On 9/1/26 18:26, Paolo Bonzini wrote:
> 
> 
> Il ven 9 gen 2026, 17:51 Philippe Mathieu-Daudé <philmd@linaro.org 
> <mailto:philmd@linaro.org>> ha scritto:
> 
>     Missing review: 2, 12, 20
> 
>     Since v4:
>     - No change (RESEND)
> 
> 
> For subpages, are you leaving for later the switch away from 
> DEVICE_NATIVE_ENDIAN?

Yes, this can be done later (I rather not delay the rest).

> 
> Paolo