Commits on May 23, 2023

  1. util: Introduce host-specific cpuinfo.h

    The entire contents of the header is host-specific, but the
    existence of such a header is not, which could prevent some
    host specific ifdefs at the top of the file for the include.
    
    Add host/include/{arch,generic} to the project arguments.
    
    Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
    Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
    Reviewed-by: Juan Quintela <quintela@redhat.com>
    Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
    rth7680 committed May 23, 2023
    Copy the full SHA
    44fc716 View commit details
    Browse the repository at this point in the history
  2. util: Add cpuinfo-i386.c

    Add cpuinfo.h for i386 and x86_64, and the initialization
    for that in util/.  Populate that with a slightly altered
    copy of the tcg host probing code.  Other uses of cpuid.h
    will be adjusted one patch at a time.
    
    Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
    Reviewed-by: Juan Quintela <quintela@redhat.com>
    Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
    rth7680 committed May 23, 2023
    Copy the full SHA
    6bc12fd View commit details
    Browse the repository at this point in the history
  3. util: Add i386 CPUINFO_ATOMIC_VMOVDQU

    Add a bit to indicate when VMOVDQU is also atomic if aligned.
    
    Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
    Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
    Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
    rth7680 committed May 23, 2023
    Copy the full SHA
    a48b6af View commit details
    Browse the repository at this point in the history
  4. tcg/i386: Use host/cpuinfo.h

    Use the CPUINFO_* bits instead of the individual boolean
    variables that we had been using.  Remove all of the init
    code that was moved over to cpuinfo-i386.c.
    
    Note that have_avx512* check both AVX512{F,VL}, as we had
    previously done during tcg_target_init.
    
    Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
    Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
    Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
    rth7680 committed May 23, 2023
    Copy the full SHA
    dbedadb View commit details
    Browse the repository at this point in the history
  5. util/bufferiszero: Use i386 host/cpuinfo.h

    Use cpuinfo_init() during init_accel(), and the variable cpuinfo
    during test_buffer_is_zero_next_accel().  Adjust the logic that
    cycles through the set of accelerators for testing.
    
    Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
    Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
    rth7680 committed May 23, 2023
    Copy the full SHA
    51f4d91 View commit details
    Browse the repository at this point in the history
  6. migration/xbzrle: Shuffle function order

    Place the CONFIG_AVX512BW_OPT block at the top,
    which will aid function selection in the next patch.
    
    Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
    Reviewed-by: Juan Quintela <quintela@redhat.com>
    Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
    rth7680 committed May 23, 2023
    Copy the full SHA
    1b48d0a View commit details
    Browse the repository at this point in the history
  7. migration/xbzrle: Use i386 host/cpuinfo.h

    Perform the function selection once, and only if CONFIG_AVX512_OPT
    is enabled.  Centralize the selection to xbzrle.c, instead of
    spreading the init across 3 files.
    
    Remove xbzrle-bench.c.  The benefit of being able to benchmark
    the different implementations is less important than not peeking
    into the internals of the implementation.
    
    Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
    Reviewed-by: Juan Quintela <quintela@redhat.com>
    Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
    rth7680 committed May 23, 2023
    Copy the full SHA
    7ba7db9 View commit details
    Browse the repository at this point in the history
  8. migration: Build migration_files once

    The items in migration_files are built for libmigration and included
    info softmmu_ss from there; no need to also include them directly.
    
    Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
    Reviewed-by: Juan Quintela <quintela@redhat.com>
    Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
    rth7680 committed May 23, 2023
    Copy the full SHA
    b5c0d84 View commit details
    Browse the repository at this point in the history
  9. util: Add cpuinfo-aarch64.c

    Move the code from tcg/.  The only use of these bits so far
    is with respect to the atomicity of tcg operations.
    
    Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
    Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
    Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
    rth7680 committed May 23, 2023
    Copy the full SHA
    0dd0c7f View commit details
    Browse the repository at this point in the history
  10. include/host: Split out atomic128-cas.h

    Separates the aarch64-specific portion into its own file.
    
    Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
    Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
    rth7680 committed May 23, 2023
    Copy the full SHA
    412db3d View commit details
    Browse the repository at this point in the history
  11. include/host: Split out atomic128-ldst.h

    Separates the aarch64-specific portion into its own file.
    
    Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
    Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
    rth7680 committed May 23, 2023
    Copy the full SHA
    1546913 View commit details
    Browse the repository at this point in the history
  12. meson: Fix detect atomic128 support with optimization

    Silly typo: sizeof(16) != 16.
    
    Fixes: e61f1ef ("meson: Detect atomic128 support with optimization")
    Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
    Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
    Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
    rth7680 committed May 23, 2023
    Copy the full SHA
    87a8d12 View commit details
    Browse the repository at this point in the history
  13. include/qemu: Move CONFIG_ATOMIC128_OPT handling to atomic128.h

    Not only the routines in ldst_atomicity.c.inc need markup,
    but also the ones in the headers.
    
    Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
    Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
    rth7680 committed May 23, 2023
    Copy the full SHA
    333c813 View commit details
    Browse the repository at this point in the history
  14. target/ppc: Use tcg_gen_qemu_{ld,st}_i128 for LQARX, LQ, STQ

    No need to roll our own, as this is now provided by tcg.
    This was the last use of retxl, so remove that too.
    
    Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
    Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
    rth7680 committed May 23, 2023
    Copy the full SHA
    57b38ff View commit details
    Browse the repository at this point in the history
  15. target/s390x: Use tcg_gen_qemu_{ld,st}_i128 for LPQ, STPQ

    No need to roll our own, as this is now provided by tcg.
    This was the last use of retxl, so remove that too.
    
    Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
    Reviewed-by: David Hildenbrand <david@redhat.com>
    Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
    rth7680 committed May 23, 2023
    Copy the full SHA
    d54a20b View commit details
    Browse the repository at this point in the history

Commits on May 24, 2023

  1. accel/tcg: Unify cpu_{ld,st}*_{be,le}_mmu

    With the current structure of cputlb.c, there is no difference
    between the little-endian and big-endian entry points, aside
    from the assert.  Unify the pairs of functions.
    
    The only use of the functions with explicit endianness was in
    target/sparc64, and that was only to satisfy the assert: the
    correct endianness is already built into memop.
    
    Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
    Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
    Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
    rth7680 committed May 24, 2023
    Copy the full SHA
    fbea7a4 View commit details
    Browse the repository at this point in the history
  2. target/s390x: Use cpu_{ld,st}*_mmu in do_csst

    Use cpu_ld16_mmu and cpu_st16_mmu to eliminate the special case,
    and change all of the *_data_ra functions to match.
    
    Note that we check the alignment of both compare and store
    pointers at the top of the function, so MO_ALIGN* may be
    safely removed from the individual memory operations.
    
    Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
    Reviewed-by: David Hildenbrand <david@redhat.com>
    Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
    rth7680 committed May 24, 2023
    Copy the full SHA
    ddc0ab5 View commit details
    Browse the repository at this point in the history
  3. target/s390x: Always use cpu_atomic_cmpxchgl_be_mmu in do_csst

    Eliminate the CONFIG_USER_ONLY specialization.
    
    Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
    Reviewed-by: David Hildenbrand <david@redhat.com>
    Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
    rth7680 committed May 24, 2023
    Copy the full SHA
    47ae3e4 View commit details
    Browse the repository at this point in the history
  4. accel/tcg: Remove cpu_atomic_{ld,st}o_*_mmu

    Atomic load/store of 128-byte quantities is now handled
    by cpu_{ld,st}16_mmu.
    
    Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
    Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
    rth7680 committed May 24, 2023
    Copy the full SHA
    ec4a962 View commit details
    Browse the repository at this point in the history
  5. accel/tcg: Remove prot argument to atomic_mmu_lookup

    Now that load/store are gone, we're always passing
    PAGE_READ | PAGE_WRITE for RMW atomic operations.
    
    Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
    Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
    rth7680 committed May 24, 2023
    Copy the full SHA
    7bedee3 View commit details
    Browse the repository at this point in the history
  6. accel/tcg: Eliminate #if on HAVE_ATOMIC128 and HAVE_CMPXCHG128

    These symbols will shortly become dynamic runtime tests and
    therefore not appropriate for the preprocessor.  Use the
    matching CONFIG_* symbols for that purpose.
    
    Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
    Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
    rth7680 committed May 24, 2023
    Copy the full SHA
    4deb39e View commit details
    Browse the repository at this point in the history
  7. qemu/atomic128: Split atomic16_read

    Create both atomic16_read_ro and atomic16_read_rw.
    Previously we pretended that we had atomic16_read in system mode,
    because we "know" that all ram is always writable to the host.
    Now, expose read-only and read-write versions all of the time.
    
    For aarch64, do not fall back to __atomic_read_16 even if
    supported by the compiler, to work around a clang bug.
    
    Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
    Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
    rth7680 committed May 24, 2023
    Copy the full SHA
    21c38f3 View commit details
    Browse the repository at this point in the history
  8. accel/tcg: Correctly use atomic128.h in ldst_atomicity.c.inc

    Remove the locally defined load_atomic16 and store_atomic16,
    along with HAVE_al16 and HAVE_al16_fast in favor of the
    routines defined in atomic128.h.
    
    Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
    Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
    rth7680 committed May 24, 2023
    Copy the full SHA
    8dc24ff View commit details
    Browse the repository at this point in the history
  9. tcg: Split out tcg/debug-assert.h

    Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
    Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
    Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
    rth7680 committed May 24, 2023
    Copy the full SHA
    427fbf3 View commit details
    Browse the repository at this point in the history
  10. qemu/atomic128: Improve cmpxchg fallback for atomic16_set

    Use __sync_bool_compare_and_swap_16 to control the loop,
    rather than a separate comparison.
    
    Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
    Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
    rth7680 committed May 24, 2023
    Copy the full SHA
    b35b812 View commit details
    Browse the repository at this point in the history
  11. qemu/atomic128: Add runtime test for FEAT_LSE2

    With FEAT_LSE2, load and store of int128 is directly supported.
    
    Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
    Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
    rth7680 committed May 24, 2023
    Copy the full SHA
    e45fb74 View commit details
    Browse the repository at this point in the history
  12. tcg: Remove DEBUG_DISAS

    This had been set since the beginning, is never undefined,
    and it would seem to be harmful to debugging to do so.
    
    Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
    Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
    rth7680 committed May 24, 2023
    Copy the full SHA
    645e3a8 View commit details
    Browse the repository at this point in the history
  13. tcg: Remove USE_TCG_OPTIMIZATIONS

    This is always defined, and the optimization pass is
    essential to producing reasonable code.
    
    Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
    Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
    rth7680 committed May 24, 2023
    Copy the full SHA
    16ffa1e View commit details
    Browse the repository at this point in the history
  14. Merge tag 'pull-tcg-20230523-3' of https://gitlab.com/rth7680/qemu in…

    …to staging
    
    util: Host cpu detection for x86 and aa64
    util: Use cpu detection for bufferiszero
    migration: Use cpu detection for xbzrle
    tcg: Replace and remove cpu_atomic_{ld,st}o*
    host/include: Split qemu/atomic128.h
    tcg: Remove DEBUG_DISAS
    tcg: Remove USE_TCG_OPTIMIZATIONS
    
    # -----BEGIN PGP SIGNATURE-----
    #
    # iQFRBAABCgA7FiEEekgeeIaLTbaoWgXAZN846K9+IV8FAmRtbwAdHHJpY2hhcmQu
    # aGVuZGVyc29uQGxpbmFyby5vcmcACgkQZN846K9+IV8xlgf7B/RnVG7u7Hjndr6h
    # fH07ujjElAivs+H05S0GGbQYpSNlqVv8PzXT2olJTAe15ryb537dCkqxyKW53vgb
    # pUWzZf9Zy8XfN48W5V91dSKQE3gm5wBlOM6LI85F8XrIQyjZqkHti+rw3GxsamNL
    # 8n2euOR0vx/jculBRxvZUAJDzb/0shN583mC5+wX/KInCHiNmMC6sCggyd5bpFJZ
    # 1wqWwrUCqJ0KAAYKd9WrIKt6QwAX3kUDiBQPa1g+psBjZ1CYQ4lqZZn9uYQ4hEtG
    # yBnT0ER2LOBQaKXJ0BrdG5c/mUNX7WkLBDTb+QjGGkfPc/bHIirXqeFzuyrXahg8
    # kY155w==
    # =XH8Z
    # -----END PGP SIGNATURE-----
    # gpg: Signature made Tue 23 May 2023 06:57:20 PM PDT
    # gpg:                using RSA key 7A481E78868B4DB6A85A05C064DF38E8AF7E215F
    # gpg:                issuer "richard.henderson@linaro.org"
    # gpg: Good signature from "Richard Henderson <richard.henderson@linaro.org>" [ultimate]
    
    * tag 'pull-tcg-20230523-3' of https://gitlab.com/rth7680/qemu: (28 commits)
      tcg: Remove USE_TCG_OPTIMIZATIONS
      tcg: Remove DEBUG_DISAS
      qemu/atomic128: Add runtime test for FEAT_LSE2
      qemu/atomic128: Improve cmpxchg fallback for atomic16_set
      tcg: Split out tcg/debug-assert.h
      accel/tcg: Correctly use atomic128.h in ldst_atomicity.c.inc
      qemu/atomic128: Split atomic16_read
      accel/tcg: Eliminate #if on HAVE_ATOMIC128 and HAVE_CMPXCHG128
      accel/tcg: Remove prot argument to atomic_mmu_lookup
      accel/tcg: Remove cpu_atomic_{ld,st}o_*_mmu
      target/s390x: Always use cpu_atomic_cmpxchgl_be_mmu in do_csst
      target/s390x: Use cpu_{ld,st}*_mmu in do_csst
      accel/tcg: Unify cpu_{ld,st}*_{be,le}_mmu
      target/s390x: Use tcg_gen_qemu_{ld,st}_i128 for LPQ, STPQ
      target/ppc: Use tcg_gen_qemu_{ld,st}_i128 for LQARX, LQ, STQ
      include/qemu: Move CONFIG_ATOMIC128_OPT handling to atomic128.h
      meson: Fix detect atomic128 support with optimization
      include/host: Split out atomic128-ldst.h
      include/host: Split out atomic128-cas.h
      util: Add cpuinfo-aarch64.c
      ...
    
    Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
    rth7680 committed May 24, 2023
    Copy the full SHA
    1c12355 View commit details
    Browse the repository at this point in the history