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: 5692a39f3294
Choose a base ref
...
head repository: qemu/qemu
compare: e3660cc1e3cb
Choose a head ref
  • 18 commits
  • 25 files changed
  • 5 contributors

Commits on Jun 15, 2023

  1. hw/i386/xen/: move xen-mapcache.c to hw/xen/

    xen-mapcache.c contains common functions which can be used for enabling Xen on
    aarch64 with IOREQ handling. Moving it out from hw/i386/xen to hw/xen to make it
    accessible for both aarch64 and x86.
    
    Signed-off-by: Vikram Garhwal <vikram.garhwal@amd.com>
    Signed-off-by: Stefano Stabellini <stefano.stabellini@amd.com>
    Reviewed-by: Paul Durrant <paul@xen.org>
    Vikram Garhwal authored and Stefano Stabellini committed Jun 15, 2023
    Copy the full SHA
    e7218dd View commit details
    Browse the repository at this point in the history
  2. hw/i386/xen: rearrange xen_hvm_init_pc

    In preparation to moving most of xen-hvm code to an arch-neutral location,
    move non IOREQ references to:
    - xen_get_vmport_regs_pfn
    - xen_suspend_notifier
    - xen_wakeup_notifier
    - xen_ram_init
    
    towards the end of the xen_hvm_init_pc() function.
    
    This is done to keep the common ioreq functions in one place which will be
    moved to new function in next patch in order to make it common to both x86 and
    aarch64 machines.
    
    Signed-off-by: Vikram Garhwal <vikram.garhwal@amd.com>
    Signed-off-by: Stefano Stabellini <stefano.stabellini@amd.com>
    Reviewed-by: Paul Durrant <paul@xen.org>
    Vikram Garhwal authored and Stefano Stabellini committed Jun 15, 2023
    Copy the full SHA
    33087aa View commit details
    Browse the repository at this point in the history
  3. hw/i386/xen/xen-hvm: move x86-specific fields out of XenIOState

    In preparation to moving most of xen-hvm code to an arch-neutral location, move:
    - shared_vmport_page
    - log_for_dirtybit
    - dirty_bitmap
    - suspend
    - wakeup
    
    out of XenIOState struct as these are only used on x86, especially the ones
    related to dirty logging.
    Updated XenIOState can be used for both aarch64 and x86.
    
    Also, remove free_phys_offset as it was unused.
    
    Signed-off-by: Stefano Stabellini <stefano.stabellini@amd.com>
    Signed-off-by: Vikram Garhwal <vikram.garhwal@amd.com>
    Reviewed-by: Paul Durrant <paul@xen.org>
    Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
    Stefano Stabellini committed Jun 15, 2023
    Copy the full SHA
    9269b9d View commit details
    Browse the repository at this point in the history
  4. xen-hvm: reorganize xen-hvm and move common function to xen-hvm-common

    This patch does following:
    1. creates arch_handle_ioreq() and arch_xen_set_memory(). This is done in
        preparation for moving most of xen-hvm code to an arch-neutral location,
        move the x86-specific portion of xen_set_memory to arch_xen_set_memory.
        Also, move handle_vmport_ioreq to arch_handle_ioreq.
    
    2. Pure code movement: move common functions to hw/xen/xen-hvm-common.c
        Extract common functionalities from hw/i386/xen/xen-hvm.c and move them to
        hw/xen/xen-hvm-common.c. These common functions are useful for creating
        an IOREQ server.
    
        xen_hvm_init_pc() contains the architecture independent code for creating
        and mapping a IOREQ server, connecting memory and IO listeners, initializing
        a xen bus and registering backends. Moved this common xen code to a new
        function xen_register_ioreq() which can be used by both x86 and ARM machines.
    
        Following functions are moved to hw/xen/xen-hvm-common.c:
            xen_vcpu_eport(), xen_vcpu_ioreq(), xen_ram_alloc(), xen_set_memory(),
            xen_region_add(), xen_region_del(), xen_io_add(), xen_io_del(),
            xen_device_realize(), xen_device_unrealize(),
            cpu_get_ioreq_from_shared_memory(), cpu_get_ioreq(), do_inp(),
            do_outp(), rw_phys_req_item(), read_phys_req_item(),
            write_phys_req_item(), cpu_ioreq_pio(), cpu_ioreq_move(),
            cpu_ioreq_config(), handle_ioreq(), handle_buffered_iopage(),
            handle_buffered_io(), cpu_handle_ioreq(), xen_main_loop_prepare(),
            xen_hvm_change_state_handler(), xen_exit_notifier(),
            xen_map_ioreq_server(), destroy_hvm_domain() and
            xen_shutdown_fatal_error()
    
    3. Removed static type from below functions:
        1. xen_region_add()
        2. xen_region_del()
        3. xen_io_add()
        4. xen_io_del()
        5. xen_device_realize()
        6. xen_device_unrealize()
        7. xen_hvm_change_state_handler()
        8. cpu_ioreq_pio()
        9. xen_exit_notifier()
    
    4. Replace TARGET_PAGE_SIZE with XC_PAGE_SIZE to match the page side with Xen.
    
    Signed-off-by: Vikram Garhwal <vikram.garhwal@amd.com>
    Signed-off-by: Stefano Stabellini <stefano.stabellini@amd.com>
    Acked-by: Stefano Stabellini <sstabellini@kernel.org>
    Stefano Stabellini committed Jun 15, 2023
    Copy the full SHA
    f17068c View commit details
    Browse the repository at this point in the history
  5. include/hw/xen/xen_common: return error from xen_create_ioreq_server

    This is done to prepare for enabling xenpv support for ARM architecture.
    On ARM it is possible to have a functioning xenpv machine with only the
    PV backends and no IOREQ server. If the IOREQ server creation fails,
    continue to the PV backends initialization.
    
    Signed-off-by: Stefano Stabellini <stefano.stabellini@amd.com>
    Signed-off-by: Vikram Garhwal <vikram.garhwal@amd.com>
    Reviewed-by: Stefano Stabellini <sstabellini@kernel.org>
    Reviewed-by: Paul Durrant <paul@xen.org>
    Stefano Stabellini committed Jun 15, 2023
    Copy the full SHA
    420927c View commit details
    Browse the repository at this point in the history
  6. hw/xen/xen-hvm-common: skip ioreq creation on ioreq registration failure

    On ARM it is possible to have a functioning xenpv machine with only the
    PV backends and no IOREQ server. If the IOREQ server creation fails continue
    to the PV backends initialization.
    
    Also, moved the IOREQ registration and mapping subroutine to new function
    xen_do_ioreq_register().
    
    Signed-off-by: Stefano Stabellini <stefano.stabellini@amd.com>
    Signed-off-by: Vikram Garhwal <vikram.garhwal@amd.com>
    Reviewed-by: Stefano Stabellini <sstabellini@kernel.org>
    Reviewed-by: Paul Durrant <paul@xen.org>
    Stefano Stabellini committed Jun 15, 2023
    Copy the full SHA
    5ff5c8d View commit details
    Browse the repository at this point in the history
  7. hw/xen/xen-hvm-common: Use g_new and error_report

    Replace g_malloc with g_new and perror with error_report.
    
    Signed-off-by: Vikram Garhwal <vikram.garhwal@amd.com>
    Reviewed-by: Stefano Stabellini <sstabellini@kernel.org>
    Reviewed-by: Paul Durrant <paul@xen.org>
    Vikram Garhwal authored and Stefano Stabellini committed Jun 15, 2023
    Copy the full SHA
    6c4193e View commit details
    Browse the repository at this point in the history
  8. meson.build: do not set have_xen_pci_passthrough for aarch64 targets

    have_xen_pci_passthrough is only used for Xen x86 VMs.
    
    Signed-off-by: Stefano Stabellini <stefano.stabellini@amd.com>
    Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
    Stefano Stabellini committed Jun 15, 2023
    Copy the full SHA
    a4b4b40 View commit details
    Browse the repository at this point in the history
  9. hw/arm: introduce xenpvh machine

    Add a new machine xenpvh which creates a IOREQ server to register/connect with
    Xen Hypervisor.
    
    Optional: When CONFIG_TPM is enabled, it also creates a tpm-tis-device, adds a
    TPM emulator and connects to swtpm running on host machine via chardev socket
    and support TPM functionalities for a guest domain.
    
    Extra command line for aarch64 xenpvh QEMU to connect to swtpm:
        -chardev socket,id=chrtpm,path=/tmp/myvtpm2/swtpm-sock \
        -tpmdev emulator,id=tpm0,chardev=chrtpm \
        -machine tpm-base-addr=0x0c000000 \
    
    swtpm implements a TPM software emulator(TPM 1.2 & TPM 2) built on libtpms and
    provides access to TPM functionality over socket, chardev and CUSE interface.
    Github repo: https://github.com/stefanberger/swtpm
    Example for starting swtpm on host machine:
        mkdir /tmp/vtpm2
        swtpm socket --tpmstate dir=/tmp/vtpm2 \
        --ctrl type=unixio,path=/tmp/vtpm2/swtpm-sock &
    
    Signed-off-by: Vikram Garhwal <vikram.garhwal@amd.com>
    Signed-off-by: Stefano Stabellini <stefano.stabellini@amd.com>
    Reviewed-by: Stefano Stabellini <sstabellini@kernel.org>
    Vikram Garhwal authored and Stefano Stabellini committed Jun 15, 2023
    Copy the full SHA
    733766c View commit details
    Browse the repository at this point in the history
  10. meson.build: enable xenpv machine build for ARM

    Add CONFIG_XEN for aarch64 device to support build for ARM targets.
    
    Signed-off-by: Vikram Garhwal <vikram.garhwal@amd.com>
    Signed-off-by: Stefano Stabellini <stefano.stabellini@amd.com>
    Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
    Vikram Garhwal authored and Stefano Stabellini committed Jun 15, 2023
    Copy the full SHA
    aaea616 View commit details
    Browse the repository at this point in the history
  11. test/qtest: add xepvh to skip list for qtest

    Like existing xen machines, xenpvh also cannot be used for qtest.
    
    Signed-off-by: Vikram Garhwal <vikram.garhwal@amd.com>
    Reviewed-by: Stefano Stabellini <sstabellini@kernel.org>
    Vikram Garhwal authored and Stefano Stabellini committed Jun 15, 2023
    Copy the full SHA
    d8a714e View commit details
    Browse the repository at this point in the history

Commits on Jun 16, 2023

  1. hw/loongarch/virt: Add cpu arch_id support

    With acpi madt table, there is cpu physical coreid, which may
    be different with logical id in qemu. This patch adds cpu arch_id
    support, and fill madt table with arch_id. For the present cpu
    arch_id is still equal to logical id.
    
    Reviewed-by: Song Gao <gaosong@loongson.cn>
    Signed-off-by: Tianrui Zhao <zhaotianrui@loongson.cn>
    Signed-off-by: Song Gao <gaosong@loongson.cn>
    Message-Id: <20230613120552.2471420-2-zhaotianrui@loongson.cn>
    zhaotianrui-loongson authored and gaosong-loongson committed Jun 16, 2023
    Copy the full SHA
    8f30771 View commit details
    Browse the repository at this point in the history
  2. hw/intc: Set physical cpuid route for LoongArch ipi device

    LoongArch ipi device uses physical cpuid to route to different
    vcpus rather logical cpuid, and the physical cpuid is the same
    with cpuid in acpi dsdt and srat table.
    
    Reviewed-by: Song Gao <gaosong@loongson.cn>
    Signed-off-by: Tianrui Zhao <zhaotianrui@loongson.cn>
    Signed-off-by: Song Gao <gaosong@loongson.cn>
    Message-Id: <20230613120552.2471420-3-zhaotianrui@loongson.cn>
    zhaotianrui-loongson authored and gaosong-loongson committed Jun 16, 2023
    Copy the full SHA
    758a747 View commit details
    Browse the repository at this point in the history
  3. hw/loongarch: Add numa support

    1. Implement some functions for LoongArch numa support;
    2. Implement fdt_add_memory_node() for fdt;
    3. build_srat() fills node_id and adds build numa memory.
    
    Reviewed-by: Song Gao <gaosong@loongson.cn>
    Signed-off-by: Tianrui Zhao <zhaotianrui@loongson.cn>
    Signed-off-by: Song Gao <gaosong@loongson.cn>
    Message-Id: <20230613122613.2471743-1-zhaotianrui@loongson.cn>
    zhaotianrui-loongson authored and gaosong-loongson committed Jun 16, 2023
    Copy the full SHA
    0cf1478 View commit details
    Browse the repository at this point in the history
  4. hw/loongarch: Supplement cpu topology arguments

    Supplement LoongArch cpu topology arguments, including support socket
    and threads per core.
    
    Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
    Reviewed-by: Song Gao <gaosong@loongson.cn>
    Signed-off-by: Tianrui Zhao <zhaotianrui@loongson.cn>
    Signed-off-by: Song Gao <gaosong@loongson.cn>
    Message-Id: <20230613123251.2471878-1-zhaotianrui@loongson.cn>
    zhaotianrui-loongson authored and gaosong-loongson committed Jun 16, 2023
    Copy the full SHA
    f332388 View commit details
    Browse the repository at this point in the history
  5. target/loongarch: Fix CSR.DMW0-3.VSEG check

    The previous code checks whether the highest 16 bits of virtual address
    equal to that of CSR.DMW0-3. This is incorrect according to the spec,
    and is corrected to compare only the highest four bits instead.
    
    Signed-off-by: Jiajie Chen <c@jia.je>
    Reviewed-by: Song Gao <gaosong@loongson.cn>
    Message-Id: <20230614065556.2397513-1-c@jia.je>
    Signed-off-by: Song Gao <gaosong@loongson.cn>
    jiegec authored and gaosong-loongson committed Jun 16, 2023
    Copy the full SHA
    505aa8d View commit details
    Browse the repository at this point in the history
  6. Merge tag 'xenpvh5-tag' of https://gitlab.com/sstabellini/qemu into s…

    …taging
    
    xenpvh5
    
    # -----BEGIN PGP SIGNATURE-----
    #
    # iQIzBAABCgAdFiEE0E4zq6UfZ7oH0wrqiU+PSHDhrpAFAmSLo0QACgkQiU+PSHDh
    # rpB1Gw/9H5Cx7wQZVyKfFwnyOoP2QTedCISxC0HL5qFmUGcJY21gXaJZ10JaU/HM
    # zHEJj2M17EgVCTkZVqZeKuj+nzyjbRKatT3YmFqKqFNNt5M1yQxC9BfVgso4PND/
    # SY0/8BvqumgJEqD3sf76KbQAILKwahPtA42LTM7S7r2ZsmQpvmOpdOhCVugpnqs/
    # FheP8N6hdlZ7GnRGtXv9QnKxMVThuE3mRCUWCyYsV/Roz6uvPsvskrdSeC3LzzBd
    # Ewq56vB+qQg+WbNTgK2BcVOzV/89k9tjWsUnamfhjD2lUxfHrne1FBclhKMcHhUv
    # T53zjhxjlRfmzUxC4917Krt4Tw/AaDW7v1pn6RokUq5U059Wb8q0IjzL75FOeD3o
    # e9DNp+RR8py44ejfi2WHR7jqayMPVIO86uJ3usshiZ9YgK5efFAtlwN/KNR5JX8k
    # Y1BR9O8BebtRymljtiLWUFXlu3xywGSA23KotT7XtzXKEaTZkIHdI395YKksYPkG
    # pil0C0bh5ZW3ZWd4M/CNcVOb69R53p15O77mjmKtjnkQYJAPD6Kbc9thZ1zdWwPR
    # ivFPdiTJb0FElS0ywZwezKYRKXje6E9ejXgAzgFuZI/rFdeO0HfkifiNoro1NAxK
    # g4V+LE5oPt09GpL2nuHrh/y9g9MnLlXyNBhPV0CRelU6fPKIk1w=
    # =543t
    # -----END PGP SIGNATURE-----
    # gpg: Signature made Fri 16 Jun 2023 01:48:20 AM CEST
    # gpg:                using RSA key D04E33ABA51F67BA07D30AEA894F8F4870E1AE90
    # gpg: Good signature from "Stefano Stabellini <sstabellini@kernel.org>" [unknown]
    # gpg:                 aka "Stefano Stabellini <stefano.stabellini@eu.citrix.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: D04E 33AB A51F 67BA 07D3  0AEA 894F 8F48 70E1 AE90
    
    * tag 'xenpvh5-tag' of https://gitlab.com/sstabellini/qemu:
      test/qtest: add xepvh to skip list for qtest
      meson.build: enable xenpv machine build for ARM
      hw/arm: introduce xenpvh machine
      meson.build: do not set have_xen_pci_passthrough for aarch64 targets
      hw/xen/xen-hvm-common: Use g_new and error_report
      hw/xen/xen-hvm-common: skip ioreq creation on ioreq registration failure
      include/hw/xen/xen_common: return error from xen_create_ioreq_server
      xen-hvm: reorganize xen-hvm and move common function to xen-hvm-common
      hw/i386/xen/xen-hvm: move x86-specific fields out of XenIOState
      hw/i386/xen: rearrange xen_hvm_init_pc
      hw/i386/xen/: move xen-mapcache.c to hw/xen/
    
    Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
    rth7680 committed Jun 16, 2023
    Copy the full SHA
    0d7c8da View commit details
    Browse the repository at this point in the history
  7. Merge tag 'pull-loongarch-20230616' of https://gitlab.com/gaosong/qemu

    …into staging
    
    pull-loongarch-20230616
    
    # -----BEGIN PGP SIGNATURE-----
    #
    # iLMEAAEIAB0WIQS4/x2g0v3LLaCcbCxAov/yOSY+3wUCZIwysgAKCRBAov/yOSY+
    # 39FYA/465KtY2jDt4xG6AdwZDHckfxZQWlrfhyZvtapOkUG4AprOBV2nSS/ukyD4
    # V8bg2/6cLS0GRKfDsqA3DcxSASWCAggIU4fTSj+DlYOZhNUIq14qzwqciZnO5CIH
    # QDczSqu2LKRdP9j6MCtzIaZq/8pPDcOlgm7Dyct/kDo/64E2sg==
    # =rD4j
    # -----END PGP SIGNATURE-----
    # gpg: Signature made Fri 16 Jun 2023 12:00:18 PM CEST
    # gpg:                using RSA key B8FF1DA0D2FDCB2DA09C6C2C40A2FFF239263EDF
    # gpg: Good signature from "Song Gao <m17746591750@163.com>" [unknown]
    # 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: B8FF 1DA0 D2FD CB2D A09C  6C2C 40A2 FFF2 3926 3EDF
    
    * tag 'pull-loongarch-20230616' of https://gitlab.com/gaosong/qemu:
      target/loongarch: Fix CSR.DMW0-3.VSEG check
      hw/loongarch: Supplement cpu topology arguments
      hw/loongarch: Add numa support
      hw/intc: Set physical cpuid route for LoongArch ipi device
      hw/loongarch/virt: Add cpu arch_id support
    
    Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
    rth7680 committed Jun 16, 2023
    Copy the full SHA
    e3660cc View commit details
    Browse the repository at this point in the history