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: 4f7c7b40f512
Choose a base ref
...
head repository: qemu/qemu
compare: 3b08e40b7abf
Choose a head ref
  • 10 commits
  • 10 files changed
  • 6 contributors

Commits on Jul 7, 2023

  1. python: bump minimum requirements so they are compatible with 3.12

    There are many Python 3.12 issues right now, but a particularly
    problematic one when debugging them is that one cannot even use
    minreqs.txt in a Python 3.12 virtual environment to test with
    locked package versions.
    
    Bump the mypy and wrapt versions to fix this, while remaining
    within the realm of versions compatible with Python 3.7.
    
    This requires a workaround for a mypy false positive
    
        qemu/qmp/qmp_tui.py:350: error: Non-overlapping equality check (left operand type: "Literal[Runstate.DISCONNECTING]", right operand type: "Literal[Runstate.IDLE]")  [comparison-overlap]
    
    where mypy does not realize that self.disconnect() could change
    the value of self.runstate.
    
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    bonzini committed Jul 7, 2023
    Copy the full SHA
    3d7b897 View commit details
    Browse the repository at this point in the history
  2. meson.build: Remove the logic to link C code with the C++ linker

    We are not mixing C++ with C code anymore, the only remaining
    C++ code in qga/vss-win32/ is used for a plain C++ executable.
    Thus we can remove the hacks for linking C code with the C++ linker
    now to simplify meson.build a little bit, and also to avoid that
    some C++ code sneaks in by accident again.
    
    Signed-off-by: Thomas Huth <thuth@redhat.com>
    Message-ID: <20230706064736.178962-1-thuth@redhat.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    huth authored and bonzini committed Jul 7, 2023
    Copy the full SHA
    785abf0 View commit details
    Browse the repository at this point in the history
  3. qemu_cleanup: begin drained section after vm_shutdown()

    in order to avoid requests being stuck in a BlockBackend's request
    queue during cleanup. Having such requests can lead to a deadlock [0]
    with a virtio-scsi-pci device using iothread that's busy with IO when
    initiating a shutdown with QMP 'quit'.
    
    There is a race where such a queued request can continue sometime
    (maybe after bdrv_child_free()?) during bdrv_root_unref_child() [1].
    The completion will hold the AioContext lock and wait for the BQL
    during SCSI completion, but the main thread will hold the BQL and
    wait for the AioContext as part of bdrv_root_unref_child(), leading to
    the deadlock [0].
    
    [0]:
    
    > Thread 3 (Thread 0x7f3bbd87b700 (LWP 135952) "qemu-system-x86"):
    > #0  __lll_lock_wait (futex=futex@entry=0x564183365f00 <qemu_global_mutex>, private=0) at lowlevellock.c:52
    > #1  0x00007f3bc1c0d843 in __GI___pthread_mutex_lock (mutex=0x564183365f00 <qemu_global_mutex>) at ../nptl/pthread_mutex_lock.c:80
    > #2  0x0000564182939f2e in qemu_mutex_lock_impl (mutex=0x564183365f00 <qemu_global_mutex>, file=0x564182b7f774 "../softmmu/physmem.c", line=2593) at ../util/qemu-thread-posix.c:94
    > #3  0x000056418247cc2a in qemu_mutex_lock_iothread_impl (file=0x564182b7f774 "../softmmu/physmem.c", line=2593) at ../softmmu/cpus.c:504
    > #4  0x00005641826d5325 in prepare_mmio_access (mr=0x5641856148a0) at ../softmmu/physmem.c:2593
    > #5  0x00005641826d6fe7 in address_space_stl_internal (as=0x56418679b310, addr=4276113408, val=16418, attrs=..., result=0x0, endian=DEVICE_LITTLE_ENDIAN) at /home/febner/repos/qemu/memory_ldst.c.inc:318
    > #6  0x00005641826d7154 in address_space_stl_le (as=0x56418679b310, addr=4276113408, val=16418, attrs=..., result=0x0) at /home/febner/repos/qemu/memory_ldst.c.inc:357
    > #7  0x0000564182374b07 in pci_msi_trigger (dev=0x56418679b0d0, msg=...) at ../hw/pci/pci.c:359
    > #8  0x000056418237118b in msi_send_message (dev=0x56418679b0d0, msg=...) at ../hw/pci/msi.c:379
    > #9  0x0000564182372c10 in msix_notify (dev=0x56418679b0d0, vector=8) at ../hw/pci/msix.c:542
    > #10 0x000056418243719c in virtio_pci_notify (d=0x56418679b0d0, vector=8) at ../hw/virtio/virtio-pci.c:77
    > #11 0x00005641826933b0 in virtio_notify_vector (vdev=0x5641867a34a0, vector=8) at ../hw/virtio/virtio.c:1985
    > #12 0x00005641826948d6 in virtio_irq (vq=0x5641867ac078) at ../hw/virtio/virtio.c:2461
    > #13 0x0000564182694978 in virtio_notify (vdev=0x5641867a34a0, vq=0x5641867ac078) at ../hw/virtio/virtio.c:2473
    > #14 0x0000564182665b83 in virtio_scsi_complete_req (req=0x7f3bb000e5d0) at ../hw/scsi/virtio-scsi.c:115
    > #15 0x00005641826670ce in virtio_scsi_complete_cmd_req (req=0x7f3bb000e5d0) at ../hw/scsi/virtio-scsi.c:641
    > #16 0x000056418266736b in virtio_scsi_command_complete (r=0x7f3bb0010560, resid=0) at ../hw/scsi/virtio-scsi.c:712
    > #17 0x000056418239aac6 in scsi_req_complete (req=0x7f3bb0010560, status=2) at ../hw/scsi/scsi-bus.c:1526
    > #18 0x000056418239e090 in scsi_handle_rw_error (r=0x7f3bb0010560, ret=-123, acct_failed=false) at ../hw/scsi/scsi-disk.c:242
    > #19 0x000056418239e13f in scsi_disk_req_check_error (r=0x7f3bb0010560, ret=-123, acct_failed=false) at ../hw/scsi/scsi-disk.c:265
    > #20 0x000056418239e482 in scsi_dma_complete_noio (r=0x7f3bb0010560, ret=-123) at ../hw/scsi/scsi-disk.c:340
    > #21 0x000056418239e5d9 in scsi_dma_complete (opaque=0x7f3bb0010560, ret=-123) at ../hw/scsi/scsi-disk.c:371
    > #22 0x00005641824809ad in dma_complete (dbs=0x7f3bb000d9d0, ret=-123) at ../softmmu/dma-helpers.c:107
    > #23 0x0000564182480a72 in dma_blk_cb (opaque=0x7f3bb000d9d0, ret=-123) at ../softmmu/dma-helpers.c:127
    > #24 0x00005641827bf78a in blk_aio_complete (acb=0x7f3bb00021a0) at ../block/block-backend.c:1563
    > #25 0x00005641827bfa5e in blk_aio_write_entry (opaque=0x7f3bb00021a0) at ../block/block-backend.c:1630
    > #26 0x000056418295638a in coroutine_trampoline (i0=-1342102448, i1=32571) at ../util/coroutine-ucontext.c:177
    > #27 0x00007f3bc0caed40 in ?? () from /lib/x86_64-linux-gnu/libc.so.6
    > #28 0x00007f3bbd8757f0 in ?? ()
    > #29 0x0000000000000000 in ?? ()
    >
    > Thread 1 (Thread 0x7f3bbe3e9280 (LWP 135944) "qemu-system-x86"):
    > #0  __lll_lock_wait (futex=futex@entry=0x5641856f2a00, private=0) at lowlevellock.c:52
    > #1  0x00007f3bc1c0d8d1 in __GI___pthread_mutex_lock (mutex=0x5641856f2a00) at ../nptl/pthread_mutex_lock.c:115
    > #2  0x0000564182939f2e in qemu_mutex_lock_impl (mutex=0x5641856f2a00, file=0x564182c0e319 "../util/async.c", line=728) at ../util/qemu-thread-posix.c:94
    > #3  0x000056418293a140 in qemu_rec_mutex_lock_impl (mutex=0x5641856f2a00, file=0x564182c0e319 "../util/async.c", line=728) at ../util/qemu-thread-posix.c:149
    > #4  0x00005641829532d5 in aio_context_acquire (ctx=0x5641856f29a0) at ../util/async.c:728
    > #5  0x000056418279d5df in bdrv_set_aio_context_commit (opaque=0x5641856e6e50) at ../block.c:7493
    > #6  0x000056418294e288 in tran_commit (tran=0x56418630bfe0) at ../util/transactions.c:87
    > #7  0x000056418279d880 in bdrv_try_change_aio_context (bs=0x5641856f7130, ctx=0x56418548f810, ignore_child=0x0, errp=0x0) at ../block.c:7626
    > #8  0x0000564182793f39 in bdrv_root_unref_child (child=0x5641856f47d0) at ../block.c:3242
    > #9  0x00005641827be137 in blk_remove_bs (blk=0x564185709880) at ../block/block-backend.c:914
    > #10 0x00005641827bd689 in blk_remove_all_bs () at ../block/block-backend.c:583
    > #11 0x0000564182798699 in bdrv_close_all () at ../block.c:5117
    > #12 0x000056418248a5b2 in qemu_cleanup () at ../softmmu/runstate.c:821
    > #13 0x0000564182738603 in qemu_default_main () at ../softmmu/main.c:38
    > #14 0x0000564182738631 in main (argc=30, argv=0x7ffd675a8a48) at ../softmmu/main.c:48
    >
    > (gdb) p *((QemuMutex*)0x5641856f2a00)
    > $1 = {lock = {__data = {__lock = 2, __count = 2, __owner = 135952, ...
    > (gdb) p *((QemuMutex*)0x564183365f00)
    > $2 = {lock = {__data = {__lock = 2, __count = 0, __owner = 135944, ...
    
    [1]:
    
    > Thread 1 "qemu-system-x86" hit Breakpoint 5, bdrv_drain_all_end () at ../block/io.c:551
    > #0  bdrv_drain_all_end () at ../block/io.c:551
    > #1  0x00005569810f0376 in bdrv_graph_wrlock (bs=0x0) at ../block/graph-lock.c:156
    > #2  0x00005569810bd3e0 in bdrv_replace_child_noperm (child=0x556982e2d7d0, new_bs=0x0) at ../block.c:2897
    > #3  0x00005569810bdef2 in bdrv_root_unref_child (child=0x556982e2d7d0) at ../block.c:3227
    > #4  0x00005569810e8137 in blk_remove_bs (blk=0x556982e42880) at ../block/block-backend.c:914
    > #5  0x00005569810e7689 in blk_remove_all_bs () at ../block/block-backend.c:583
    > #6  0x00005569810c2699 in bdrv_close_all () at ../block.c:5117
    > #7  0x0000556980db45b2 in qemu_cleanup () at ../softmmu/runstate.c:821
    > #8  0x0000556981062603 in qemu_default_main () at ../softmmu/main.c:38
    > #9  0x0000556981062631 in main (argc=30, argv=0x7ffd7a82a418) at ../softmmu/main.c:48
    > [Switching to Thread 0x7fe76dab2700 (LWP 103649)]
    >
    > Thread 3 "qemu-system-x86" hit Breakpoint 4, blk_inc_in_flight (blk=0x556982e42880) at ../block/block-backend.c:1505
    > #0  blk_inc_in_flight (blk=0x556982e42880) at ../block/block-backend.c:1505
    > #1  0x00005569810e8f36 in blk_wait_while_drained (blk=0x556982e42880) at ../block/block-backend.c:1312
    > #2  0x00005569810e9231 in blk_co_do_pwritev_part (blk=0x556982e42880, offset=3422961664, bytes=4096, qiov=0x556983028060, qiov_offset=0, flags=0) at ../block/block-backend.c:1402
    > #3  0x00005569810e9a4b in blk_aio_write_entry (opaque=0x556982e2cfa0) at ../block/block-backend.c:1628
    > #4  0x000055698128038a in coroutine_trampoline (i0=-2090057872, i1=21865) at ../util/coroutine-ucontext.c:177
    > #5  0x00007fe770f50d40 in ?? () from /lib/x86_64-linux-gnu/libc.so.6
    > #6  0x00007ffd7a829570 in ?? ()
    > #7  0x0000000000000000 in ?? ()
    
    Signed-off-by: Fiona Ebner <f.ebner@proxmox.com>
    Message-ID: <20230706131418.423713-1-f.ebner@proxmox.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    foxmox authored and bonzini committed Jul 7, 2023
    Copy the full SHA
    ca2a5e6 View commit details
    Browse the repository at this point in the history
  4. target/i386: Adjust feature level according to FEAT_7_1_EDX

    If FEAT_7_1_EAX is 0 and FEAT_7_1_EDX is non-zero, as is the case
    with a Granite Rapids host and
    '-cpu host,-avx-vnni,-avx512-bf16,-fzrm,-fsrs,-fsrc,-amx-fp16', we can't
    get CPUID_7_1 leaf even though CPUID_7_1_EDX has non-zero value.
    
    Update cpuid_level_func7 according to CPUID_7_1_EDX, otherwise
    guest may report wrong maximum number sub-leaves in leaf 07H.
    
    Fixes: eaaa197 ("target/i386: Add support for AVX-VNNI-INT8 in CPUID enumeration")
    Cc: qemu-stable@nongnu.org
    Signed-off-by: Tao Su <tao1.su@linux.intel.com>
    Reviewed-by: Xiaoyao Li <xiaoyao.li@intel.com>
    Message-ID: <20230706054949.66556-2-tao1.su@linux.intel.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Tao Su authored and bonzini committed Jul 7, 2023
    Copy the full SHA
    8731336 View commit details
    Browse the repository at this point in the history
  5. target/i386: Add support for MCDT_NO in CPUID enumeration

    CPUID.(EAX=7,ECX=2):EDX[bit 5] enumerates MCDT_NO. Processors enumerate
    this bit as 1 do not exhibit MXCSR Configuration Dependent Timing (MCDT)
    behavior and do not need to be mitigated to avoid data-dependent behavior
    for certain instructions.
    
    Since MCDT_NO is in a new sub-leaf, add a new CPUID feature word
    FEAT_7_2_EDX. Also update cpuid_level_func7 by FEAT_7_2_EDX.
    
    Signed-off-by: Tao Su <tao1.su@linux.intel.com>
    Reviewed-by: Xiaoyao Li <xiaoyao.li@intel.com>
    Message-ID: <20230706054949.66556-3-tao1.su@linux.intel.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Tao Su authored and bonzini committed Jul 7, 2023
    Copy the full SHA
    9dd8b71 View commit details
    Browse the repository at this point in the history
  6. target/i386: Allow MCDT_NO if host supports

    MCDT_NO bit indicates HW contains the security fix and doesn't need to
    be mitigated to avoid data-dependent behaviour for certain instructions.
    It needs no hypervisor support. Treat it as supported regardless of what
    KVM reports.
    
    Signed-off-by: Tao Su <tao1.su@linux.intel.com>
    Reviewed-by: Xiaoyao Li <xiaoyao.li@intel.com>
    Message-ID: <20230706054949.66556-4-tao1.su@linux.intel.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Tao Su authored and bonzini committed Jul 7, 2023
    Copy the full SHA
    ba3709f View commit details
    Browse the repository at this point in the history
  7. target/i386: Add new bit definitions of MSR_IA32_ARCH_CAPABILITIES

    Currently, bit 13, 14, 15 and 24 of MSR_IA32_ARCH_CAPABILITIES are
    disclosed for fixing security issues, so add those bit definitions.
    
    Signed-off-by: Tao Su <tao1.su@linux.intel.com>
    Reviewed-by: Igor Mammedov <imammedo@redhat.com>
    Message-ID: <20230706054949.66556-5-tao1.su@linux.intel.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Tao Su authored and bonzini committed Jul 7, 2023
    Copy the full SHA
    6c43ec3 View commit details
    Browse the repository at this point in the history
  8. target/i386: Add few security fix bits in ARCH_CAPABILITIES into Sapp…

    …hireRapids CPU model
    
    SapphireRapids has bit 13, 14 and 15 of MSR_IA32_ARCH_CAPABILITIES
    enabled, which are related to some security fixes.
    
    Add version 2 of SapphireRapids CPU model with those bits enabled also.
    
    Signed-off-by: Lei Wang <lei4.wang@intel.com>
    Signed-off-by: Tao Su <tao1.su@linux.intel.com>
    Message-ID: <20230706054949.66556-6-tao1.su@linux.intel.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    tristone13th authored and bonzini committed Jul 7, 2023
    Copy the full SHA
    3baf7ae View commit details
    Browse the repository at this point in the history
  9. target/i386: Add new CPU model GraniteRapids

    The GraniteRapids CPU model mainly adds the following new features
    based on SapphireRapids:
    - PREFETCHITI CPUID.(EAX=7,ECX=1):EDX[bit 14]
    - AMX-FP16 CPUID.(EAX=7,ECX=1):EAX[bit 21]
    
    And adds the following security fix for corresponding vulnerabilities:
    - MCDT_NO CPUID.(EAX=7,ECX=2):EDX[bit 5]
    - SBDR_SSDP_NO MSR_IA32_ARCH_CAPABILITIES[bit 13]
    - FBSDP_NO MSR_IA32_ARCH_CAPABILITIES[bit 14]
    - PSDP_NO MSR_IA32_ARCH_CAPABILITIES[bit 15]
    - PBRSB_NO MSR_IA32_ARCH_CAPABILITIES[bit 24]
    
    Signed-off-by: Tao Su <tao1.su@linux.intel.com>
    Tested-by: Xuelian Guo <xuelian.guo@intel.com>
    Reviewed-by: Xiaoyao Li <xiaoyao.li@intel.com>
    Message-ID: <20230706054949.66556-7-tao1.su@linux.intel.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Tao Su authored and bonzini committed Jul 7, 2023
    Copy the full SHA
    6d5e969 View commit details
    Browse the repository at this point in the history
  10. Merge tag 'for-upstream' of https://gitlab.com/bonzini/qemu into staging

    * Granite Rapids CPU model
    * Miscellaneous bugfixes
    
    # -----BEGIN PGP SIGNATURE-----
    #
    # iQFIBAABCAAyFiEE8TM4V0tmI4mGbHaCv/vSX3jHroMFAmSn7uYUHHBib256aW5p
    # QHJlZGhhdC5jb20ACgkQv/vSX3jHroPi1gf+MJNyMneyyEZgBwlwgs2NYjz+cKwW
    # KxtCOHDfew5S1qpq+gyvUnq5K0JJBGZKoFMwS6JwOpHASGx1o6mlF06CgLAk7wKh
    # yCf1kzvRA4y3tYbSwvxD5iKV3YSsayIHuJ8q2GslVXBtAZ0xC2cREQLzKLNuEV6M
    # rO4bj6QUV2fRc9u9TlurXijsdalUAEjmkIeZhtghhkD+lJo44yzcF7qAROaE3pFa
    # IYEp8pTgcbJeiI0BUNFTRk0OlE5f7MT3GIQwTC34WWPO+r/uBXL5FXNqN38svugh
    # 7hjOliIMU4I6jpL1t7v2+9Vs38gAEPchJ0Nly4TV+dydh7l1pIn9G7ssoA==
    # =OBRZ
    # -----END PGP SIGNATURE-----
    # gpg: Signature made Fri 07 Jul 2023 11:54:30 AM BST
    # 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:
      target/i386: Add new CPU model GraniteRapids
      target/i386: Add few security fix bits in ARCH_CAPABILITIES into SapphireRapids CPU model
      target/i386: Add new bit definitions of MSR_IA32_ARCH_CAPABILITIES
      target/i386: Allow MCDT_NO if host supports
      target/i386: Add support for MCDT_NO in CPUID enumeration
      target/i386: Adjust feature level according to FEAT_7_1_EDX
      qemu_cleanup: begin drained section after vm_shutdown()
      meson.build: Remove the logic to link C code with the C++ linker
      python: bump minimum requirements so they are compatible with 3.12
    
    Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
    rth7680 committed Jul 7, 2023
    Copy the full SHA
    3b08e40 View commit details
    Browse the repository at this point in the history