Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: qemu/qemu
base: 0450cf08976f
Choose a base ref
...
head repository: qemu/qemu
compare: 32e07fddc6d9
Choose a head ref
  • 19 commits
  • 33 files changed
  • 3 contributors

Commits on Aug 8, 2023

  1. configure: fix detection for x32 linux-user

    x32 uses the same signal handling fragments as x86_64, since host_arch
    is set to x86_64 when Meson runs.  Remove the unnecessary forwarder and
    set the host_arch variable properly in configure.
    
    Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
    Acked-by: Ilya Leoshkevich <iii@linux.ibm.com>
    Reviewed-by: Michael Tokarev <mjt@tls.msk.ru>
    Tested-by: Ilya Leoshkevich <iii@linux.ibm.com>
    Tested-by: Michael Tokarev <mjt@tls.msk.ru>
    Message-ID: <20230808120303.585509-2-pbonzini@redhat.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    bonzini committed Aug 8, 2023
    Copy the full SHA
    f140823 View commit details
    Browse the repository at this point in the history
  2. linux-user: cleanup unused linux-user/include/host directories

    Alpha and 31-bit s390 lack the assembly fragment to handle signals
    occurring at the same time as system calls, so they cannot run
    linux-user emulation anymore.  Drop the host-signal.h files for
    them.
    
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Acked-by: Ilya Leoshkevich <iii@linux.ibm.com>
    Reviewed-by: Michael Tokarev <mjt@tls.msk.ru>
    Tested-by: Ilya Leoshkevich <iii@linux.ibm.com>
    Tested-by: Michael Tokarev <mjt@tls.msk.ru>
    Message-ID: <20230808120303.585509-3-pbonzini@redhat.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    bonzini committed Aug 8, 2023
    Copy the full SHA
    50a0012 View commit details
    Browse the repository at this point in the history
  3. configure: unify case statements for CPU canonicalization

    The CPU model has to be canonicalized to what Meson wants in the cross
    file, to what Linux uses for its asm-$ARCH directories, and to what
    QEMU uses for its user-mode emulation host/$ARCH directories.  Do
    all three in a single case statement, and check that the Linux and
    QEMU directories actually exist.
    
    At a small cost in repeated lines, this ensures that there are no hidden
    ordering requirements between the case statements.  In particular, commit
    89e5b79 ("configure: Fix linux-user host detection for riscv64",
    2023-08-06) broke ppc64le because it assigned host_arch based on a
    non-canonicalized version of $cpu.
    
    Reported-by: Joel Stanley <joel@jms.id.au>
    Fixes: 89e5b79 ("configure: Fix linux-user host detection for riscv64", 2023-08-06)
    Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
    Acked-by: Ilya Leoshkevich <iii@linux.ibm.com>
    Reviewed-by: Michael Tokarev <mjt@tls.msk.ru>
    Tested-by: Ilya Leoshkevich <iii@linux.ibm.com>
    Tested-by: Michael Tokarev <mjt@tls.msk.ru>
    Message-ID: <20230808120303.585509-4-pbonzini@redhat.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    bonzini committed Aug 8, 2023
    Copy the full SHA
    971fac2 View commit details
    Browse the repository at this point in the history
  4. linux-user: Adjust task_unmapped_base for reserved_va

    Ensure that the chosen values for mmap_next_start and
    task_unmapped_base are within the guest address space.
    
    Tested-by: Helge Deller <deller@gmx.de>
    Reviewed-by: Akihiko Odaki <akihiko.odaki@daynix.com>
    Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
    rth7680 committed Aug 8, 2023
    Copy the full SHA
    c8fb5cf View commit details
    Browse the repository at this point in the history
  5. linux-user: Define TASK_UNMAPPED_BASE in $guest/target_mman.h

    Provide default values that are as close as possible to the
    values used by the guest's kernel.
    
    Tested-by: Helge Deller <deller@gmx.de>
    Reviewed-by: Helge Deller <deller@gmx.de>
    Reviewed-by: Akihiko Odaki <akihiko.odaki@daynix.com>
    Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
    Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
    rth7680 committed Aug 8, 2023
    Copy the full SHA
    2d70816 View commit details
    Browse the repository at this point in the history
  6. linux-user: Define ELF_ET_DYN_BASE in $guest/target_mman.h

    Copy each guest kernel's default value, then bound it
    against reserved_va or the host address space.
    
    Tested-by: Helge Deller <deller@gmx.de>
    Reviewed-by: Helge Deller <deller@gmx.de>
    Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
    rth7680 committed Aug 8, 2023
    Copy the full SHA
    da2b71f View commit details
    Browse the repository at this point in the history
  7. linux-user: Use MAP_FIXED_NOREPLACE for initial image mmap

    Use this as extra protection for the guest mapping over
    any qemu host mappings.
    
    Tested-by: Helge Deller <deller@gmx.de>
    Reviewed-by: Helge Deller <deller@gmx.de>
    Reviewed-by: Akihiko Odaki <akihiko.odaki@daynix.com>
    Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
    rth7680 committed Aug 8, 2023
    Copy the full SHA
    ad25051 View commit details
    Browse the repository at this point in the history
  8. linux-user: Use elf_et_dyn_base for ET_DYN with interpreter

    Follow the lead of the linux kernel in fs/binfmt_elf.c,
    in which an ET_DYN executable which uses an interpreter
    (usually a PIE executable) is loaded away from where the
    interpreter itself will be loaded.
    
    Tested-by: Helge Deller <deller@gmx.de>
    Reviewed-by: Helge Deller <deller@gmx.de>
    Reviewed-by: Akihiko Odaki <akihiko.odaki@daynix.com>
    Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
    rth7680 committed Aug 8, 2023
    Copy the full SHA
    1ea06de View commit details
    Browse the repository at this point in the history
  9. linux-user: Adjust initial brk when interpreter is close to executable

    While we attempt to load a ET_DYN executable far away from
    TASK_UNMAPPED_BASE, we are not completely in control of the
    address space layout.  If the interpreter lands close to
    the executable, leaving insufficient heap space, move brk.
    
    Tested-by: Helge Deller <deller@gmx.de>
    Signed-off-by: Helge Deller <deller@gmx.de>
    [rth: Re-order after ELF_ET_DYN_BASE patch so that we do not
     "temporarily break" tsan, and also to minimize the changes required.
     Remove image_info.reserve_brk as unused.]
    Reviewed-by: Akihiko Odaki <akihiko.odaki@daynix.com>
    Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
    Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
    hdeller authored and rth7680 committed Aug 8, 2023
    Copy the full SHA
    1f356e8 View commit details
    Browse the repository at this point in the history
  10. linux-user: Do not adjust image mapping for host page size

    Remove TARGET_ELF_EXEC_PAGESIZE, and 3 other TARGET_ELF_PAGE* macros
    based off of that.  Rely on target_mmap to handle guest vs host page
    size mismatch.
    
    Tested-by: Helge Deller <deller@gmx.de>
    Reviewed-by: Helge Deller <deller@gmx.de>
    Reviewed-by: Akihiko Odaki <akihiko.odaki@daynix.com>
    Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
    Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
    rth7680 committed Aug 8, 2023
    Copy the full SHA
    e3d97d5 View commit details
    Browse the repository at this point in the history
  11. linux-user: Do not adjust zero_bss for host page size

    Rely on target_mmap to handle guest vs host page size mismatch.
    
    Tested-by: Helge Deller <deller@gmx.de>
    Reviewed-by: Helge Deller <deller@gmx.de>
    Reviewed-by: Akihiko Odaki <akihiko.odaki@daynix.com>
    Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
    rth7680 committed Aug 8, 2023
    Copy the full SHA
    2d385be View commit details
    Browse the repository at this point in the history
  12. linux-user: Use zero_bss for PT_LOAD with no file contents too

    If p_filesz == 0, then vaddr_ef == vaddr.  We can reuse the
    code in zero_bss rather than incompletely duplicating it in
    load_elf_image.
    
    Tested-by: Helge Deller <deller@gmx.de>
    Reviewed-by: Helge Deller <deller@gmx.de>
    Reviewed-by: Akihiko Odaki <akihiko.odaki@daynix.com>
    Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
    Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
    rth7680 committed Aug 8, 2023
    Copy the full SHA
    5f4e5b3 View commit details
    Browse the repository at this point in the history
  13. util/selfmap: Rewrite using qemu/interval-tree.h

    We will want to be able to search the set of mappings.
    For this patch, the two users iterate the tree in order.
    
    Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
    rth7680 committed Aug 8, 2023
    Copy the full SHA
    3ce3dd8 View commit details
    Browse the repository at this point in the history
  14. linux-user: Remove duplicate CPU_LOG_PAGE from probe_guest_base

    The proper logging for probe_guest_base is in the main function.
    There is no need to duplicate that in the subroutines.
    
    Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
    Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
    rth7680 committed Aug 8, 2023
    Copy the full SHA
    435c042 View commit details
    Browse the repository at this point in the history
  15. linux-user: Consolidate guest bounds check in probe_guest_base

    The three sets of checks are identical, logically.
    
    Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
    Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
    rth7680 committed Aug 8, 2023
    Copy the full SHA
    0c441ae View commit details
    Browse the repository at this point in the history
  16. linux-user: Rewrite fixed probe_guest_base

    Create a set of subroutines to collect a set of guest addresses,
    all of which must be mappable on the host.  Use this within the
    renamed pgb_fixed subroutine to validate the user's choice of
    guest_base specified by the -B command-line option.
    
    Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
    Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
    rth7680 committed Aug 8, 2023
    Copy the full SHA
    06f38c6 View commit details
    Browse the repository at this point in the history
  17. linux-user: Rewrite non-fixed probe_guest_base

    Use pgb_addr_set to probe for all of the guest addresses,
    not just the main executable.  Handle the identity map
    specially and separately from the search.
    
    If /proc/self/maps is available, utilize the full power
    of the interval tree search, rather than a linear search
    through the address list.
    
    If /proc/self/maps is not available, increase the skip
    between probes so that we do not probe every single page
    of the host address space.  Choose 1 MiB for 32-bit hosts
    (max 4k probes) and 1 GiB for 64-bit hosts (possibly a
    large number of probes, but the large step makes it more
    likely to find empty space quicker).
    
    Tested-by: Alex Bennée <alex.bennee@linaro.org>
    Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
    Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
    rth7680 committed Aug 8, 2023
    Copy the full SHA
    dd55885 View commit details
    Browse the repository at this point in the history
  18. Merge tag 'for-upstream' of https://gitlab.com/bonzini/qemu into staging

    * cleanup architecture canonicalization once and for all
    
    # -----BEGIN PGP SIGNATURE-----
    #
    # iQFIBAABCAAyFiEE8TM4V0tmI4mGbHaCv/vSX3jHroMFAmTSjQAUHHBib256aW5p
    # QHJlZGhhdC5jb20ACgkQv/vSX3jHroPc8Qf/XjwCmHzRm6VSengi5OywjeanKpO6
    # yJ8mbA0tqx7DxH+ke3y0kH7QGbScnV7mh/s5SnjHDR38K0z604E773UVEk5JwtMb
    # b64jsaCiq0XhiPKHA0xtYo2F4W17LxIIcyG2d1Fgmngvnat3LpswXGEXJbKCnIV9
    # KzgKNpCf6o+o1f/U6LaxInHbYRaDW03HSFfCHgNyYOBxgbPC/UYRuslqC8pIdp/5
    # mGLhloJh/WKi8iL0Xsjl1GN/0d9UHC6bUAW+f1JjET5IjeOtdxh6hgDr9hAc3ZC+
    # stTTri7pM6VeCv+lT5tSN+o7IdzpGjMXb0kozjkinoafhDfp8EvJyOdfrg==
    # =5Z/e
    # -----END PGP SIGNATURE-----
    # gpg: Signature made Tue 08 Aug 2023 11:44:16 AM PDT
    # gpg:                using RSA key F13338574B662389866C7682BFFBD25F78C7AE83
    # gpg:                issuer "pbonzini@redhat.com"
    # gpg: Good signature from "Paolo Bonzini <bonzini@gnu.org>" [undefined]
    # gpg:                 aka "Paolo Bonzini <pbonzini@redhat.com>" [undefined]
    # gpg: WARNING: This key is not certified with a trusted signature!
    # gpg:          There is no indication that the signature belongs to the owner.
    # Primary key fingerprint: 46F5 9FBD 57D6 12E7 BFD4  E2F7 7E15 100C CD36 69B1
    #      Subkey fingerprint: F133 3857 4B66 2389 866C  7682 BFFB D25F 78C7 AE83
    
    * tag 'for-upstream' of https://gitlab.com/bonzini/qemu:
      configure: unify case statements for CPU canonicalization
      linux-user: cleanup unused linux-user/include/host directories
      configure: fix detection for x32 linux-user
    
    Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
    rth7680 committed Aug 8, 2023
    Copy the full SHA
    cef297a View commit details
    Browse the repository at this point in the history
  19. Merge tag 'pull-lu-20230808' of https://gitlab.com/rth7680/qemu into …

    …staging
    
    linux-user: Adjust guest image layout vs reserved_va
    linux-user: Do not adjust image mapping for host page size
    linux-user: Adjust initial brk when interpreter is close to executable
    util/selfmap: Rewrite using qemu/interval-tree.h
    linux-user: Rewrite probe_guest_base
    
    # -----BEGIN PGP SIGNATURE-----
    #
    # iQFRBAABCgA7FiEEekgeeIaLTbaoWgXAZN846K9+IV8FAmTSrp4dHHJpY2hhcmQu
    # aGVuZGVyc29uQGxpbmFyby5vcmcACgkQZN846K9+IV9lTQf/W/Tbd6CFnZpVE8Sb
    # BPrhdmo+x6Jftt1Ha66b/4xnasX7DuVaI1ECDh4CQQKIOh9A4LETx6ue9/UGi4vT
    # Fe4UrrJcAjt/CPaZhwXniJM9CvEnw1gkl3AgKAtZOBEConuPnkTiSWjySmCt3T4r
    # EGQxDe0HLpWYavNtvyywak/sEbwOD4hNAunFpJB6PLZ+KEoCDZwtcQdl55kg5bIt
    # WBMgUSXnWhC45t+26OcSDeHovqxHoA647H10T0y0U6bNVkW0tRW51xCTvHt+iDyR
    # s8UOCe1Q+w8F18fN68HIWBJ6NCzUts/AmQrWwc/MWiK1z91/ht5mlKAuNYnoZ6jH
    # htCSEA==
    # =ERAI
    # -----END PGP SIGNATURE-----
    # gpg: Signature made Tue 08 Aug 2023 02:07:42 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-lu-20230808' of https://gitlab.com/rth7680/qemu:
      linux-user: Rewrite non-fixed probe_guest_base
      linux-user: Rewrite fixed probe_guest_base
      linux-user: Consolidate guest bounds check in probe_guest_base
      linux-user: Remove duplicate CPU_LOG_PAGE from probe_guest_base
      util/selfmap: Rewrite using qemu/interval-tree.h
      linux-user: Use zero_bss for PT_LOAD with no file contents too
      linux-user: Do not adjust zero_bss for host page size
      linux-user: Do not adjust image mapping for host page size
      linux-user: Adjust initial brk when interpreter is close to executable
      linux-user: Use elf_et_dyn_base for ET_DYN with interpreter
      linux-user: Use MAP_FIXED_NOREPLACE for initial image mmap
      linux-user: Define ELF_ET_DYN_BASE in $guest/target_mman.h
      linux-user: Define TASK_UNMAPPED_BASE in $guest/target_mman.h
      linux-user: Adjust task_unmapped_base for reserved_va
    
    Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
    rth7680 committed Aug 8, 2023
    Copy the full SHA
    32e07fd View commit details
    Browse the repository at this point in the history