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: 271477b59e72
Choose a base ref
...
head repository: qemu/qemu
compare: 577e648bdb52
Choose a head ref
  • 17 commits
  • 10 files changed
  • 5 contributors

Commits on May 8, 2023

  1. rcu: remove qatomic_mb_set, expand comments

    Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    bonzini committed May 8, 2023
    Copy the full SHA
    6e288b0 View commit details
    Browse the repository at this point in the history
  2. test-aio-multithread: do not use mb_read/mb_set for simple flags

    The remaining use of mb_read/mb_set is just to force a thread to exit
    eventually.  It does not order two memory accesses and therefore can be
    just read/set.
    
    Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    bonzini committed May 8, 2023
    Copy the full SHA
    4f7335e View commit details
    Browse the repository at this point in the history
  3. test-aio-multithread: simplify test_multi_co_schedule

    Instead of using qatomic_mb_{read,set} mindlessly, just use a per-coroutine
    flag that requires no synchronization.
    
    Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    bonzini committed May 8, 2023
    Copy the full SHA
    355635c View commit details
    Browse the repository at this point in the history
  4. call_rcu: stop using mb_set/mb_read

    Use a store-release when enqueuing a new call_rcu, and a load-acquire
    when dequeuing; and read the tail after checking that node->next is
    consistent, which is the standard message passing pattern and it is
    clearer than mb_read/mb_set.
    
    Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    bonzini committed May 8, 2023
    Copy the full SHA
    8f593ba View commit details
    Browse the repository at this point in the history
  5. tb-maint: do not use mb_read/mb_set

    The load side can use a relaxed load, which will surely happen before
    the work item is run by async_safe_run_on_cpu() or before double-checking
    under mmap_lock.  The store side can use an atomic RMW operation.
    
    Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    bonzini committed May 8, 2023
    Copy the full SHA
    20f4680 View commit details
    Browse the repository at this point in the history
  6. MAINTAINERS: add stanza for Kconfig files

    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    bonzini committed May 8, 2023
    Copy the full SHA
    2f38ff7 View commit details
    Browse the repository at this point in the history
  7. include/qemu/osdep.h: Bump _WIN32_WINNT to the Windows 8 API

    Commit cf60ccc ("cutils: Introduce bundle mechanism") abandoned
    compatibility with Windows older than 8 - we should reflect this
    in our _WIN32_WINNT and set it to the value that corresponds to
    Windows 8.
    
    Signed-off-by: Thomas Huth <thuth@redhat.com>
    Message-Id: <20230504081351.125140-1-thuth@redhat.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    huth authored and bonzini committed May 8, 2023
    Copy the full SHA
    8cbfc53 View commit details
    Browse the repository at this point in the history
  8. target/i386: allow versioned CPUs to specify new cache_info

    New EPYC CPUs versions require small changes to their cache_info's.
    Because current QEMU x86 CPU definition does not support versioned
    cach_info, we would have to declare a new CPU type for each such case.
    To avoid the dup work, add "cache_info" in X86CPUVersionDefinition",
    to allow new cache_info pointers to be specified for a new CPU version.
    
    Co-developed-by: Wei Huang <wei.huang2@amd.com>
    Signed-off-by: Wei Huang <wei.huang2@amd.com>
    Signed-off-by: Michael Roth <michael.roth@amd.com>
    Signed-off-by: Babu Moger <babu.moger@amd.com>
    Acked-by: Michael S. Tsirkin <mst@redhat.com>
    Message-Id: <20230504205313.225073-2-babu.moger@amd.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    mdroth authored and bonzini committed May 8, 2023
    Copy the full SHA
    cca0a00 View commit details
    Browse the repository at this point in the history
  9. target/i386: Add new EPYC CPU versions with updated cache_info

    Introduce new EPYC cpu versions: EPYC-v4 and EPYC-Rome-v3.
    The only difference vs. older models is an updated cache_info with
    the 'complex_indexing' bit unset, since this bit is not currently
    defined for AMD and may cause problems should it be used for
    something else in the future. Setting this bit will also cause
    CPUID validation failures when running SEV-SNP guests.
    
    Signed-off-by: Michael Roth <michael.roth@amd.com>
    Signed-off-by: Babu Moger <babu.moger@amd.com>
    Acked-by: Michael S. Tsirkin <mst@redhat.com>
    Message-Id: <20230504205313.225073-3-babu.moger@amd.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    mdroth authored and bonzini committed May 8, 2023
    Copy the full SHA
    d7c7273 View commit details
    Browse the repository at this point in the history
  10. target/i386: Add a couple of feature bits in 8000_0008_EBX

    Add the following feature bits.
    
    amd-psfd : Predictive Store Forwarding Disable:
               PSF is a hardware-based micro-architectural optimization
               designed to improve the performance of code execution by
               predicting address dependencies between loads and stores.
               While SSBD (Speculative Store Bypass Disable) disables both
               PSF and speculative store bypass, PSFD only disables PSF.
               PSFD may be desirable for the software which is concerned
               with the speculative behavior of PSF but desires a smaller
               performance impact than setting SSBD.
    	   Depends on the following kernel commit:
               b73a54321ad8 ("KVM: x86: Expose Predictive Store Forwarding Disable")
    
    stibp-always-on :
               Single Thread Indirect Branch Prediction mode has enhanced
               performance and may be left always on.
    
    The documentation for the features are available in the links below.
    a. Processor Programming Reference (PPR) for AMD Family 19h Model 01h,
       Revision B1 Processors
    b. SECURITY ANALYSIS OF AMD PREDICTIVE STORE FORWARDING
    
    Signed-off-by: Babu Moger <babu.moger@amd.com>
    Acked-by: Michael S. Tsirkin <mst@redhat.com>
    Link: https://www.amd.com/system/files/documents/security-analysis-predictive-store-forwarding.pdf
    Link: https://www.amd.com/system/files/TechDocs/55898_B1_pub_0.50.zip
    Message-Id: <20230504205313.225073-4-babu.moger@amd.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    babumoger authored and bonzini committed May 8, 2023
    Copy the full SHA
    bb039a2 View commit details
    Browse the repository at this point in the history
  11. target/i386: Add feature bits for CPUID_Fn80000021_EAX

    Add the following feature bits.
    no-nested-data-bp	  : Processor ignores nested data breakpoints.
    lfence-always-serializing : LFENCE instruction is always serializing.
    null-sel-cls-base	  : Null Selector Clears Base. When this bit is
    			    set, a null segment load clears the segment base.
    
    The documentation for the features are available in the links below.
    a. Processor Programming Reference (PPR) for AMD Family 19h Model 01h,
       Revision B1 Processors
    b. AMD64 Architecture Programmer’s Manual Volumes 1–5 Publication No. Revision
        40332 4.05 Date October 2022
    
    Signed-off-by: Babu Moger <babu.moger@amd.com>
    Acked-by: Michael S. Tsirkin <mst@redhat.com>
    Link: https://www.amd.com/system/files/TechDocs/55898_B1_pub_0.50.zip
    Link: https://www.amd.com/system/files/TechDocs/40332_4.05.pdf
    Message-Id: <20230504205313.225073-5-babu.moger@amd.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    babumoger authored and bonzini committed May 8, 2023
    Copy the full SHA
    b70eec3 View commit details
    Browse the repository at this point in the history
  12. target/i386: Add missing feature bits in EPYC-Milan model

    Add the following feature bits for EPYC-Milan model and bump the version.
    vaes            : Vector VAES(ENC|DEC), VAES(ENC|DEC)LAST instruction support
    vpclmulqdq	: Vector VPCLMULQDQ instruction support
    stibp-always-on : Single Thread Indirect Branch Prediction Mode has enhanced
                      performance and may be left Always on
    amd-psfd	: Predictive Store Forward Disable
    no-nested-data-bp         : Processor ignores nested data breakpoints
    lfence-always-serializing : LFENCE instruction is always serializing
    null-sel-clr-base         : Null Selector Clears Base. When this bit is
                                set, a null segment load clears the segment base
    
    These new features will be added in EPYC-Milan-v2. The "-cpu help" output
    after the change will be.
    
        x86 EPYC-Milan             (alias configured by machine type)
        x86 EPYC-Milan-v1          AMD EPYC-Milan Processor
        x86 EPYC-Milan-v2          AMD EPYC-Milan Processor
    
    The documentation for the features are available in the links below.
    a. Processor Programming Reference (PPR) for AMD Family 19h Model 01h,
       Revision B1 Processors
    b. SECURITY ANALYSIS OF AMD PREDICTIVE STORE FORWARDING
    c. AMD64 Architecture Programmer’s Manual Volumes 1–5 Publication No. Revision
        40332 4.05 Date October 2022
    
    Signed-off-by: Babu Moger <babu.moger@amd.com>
    Acked-by: Michael S. Tsirkin <mst@redhat.com>
    Link: https://www.amd.com/system/files/TechDocs/55898_B1_pub_0.50.zip
    Link: https://www.amd.com/system/files/documents/security-analysis-predictive-store-forwarding.pdf
    Link: https://www.amd.com/system/files/TechDocs/40332_4.05.pdf
    Message-Id: <20230504205313.225073-6-babu.moger@amd.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    babumoger authored and bonzini committed May 8, 2023
    Copy the full SHA
    27f03be View commit details
    Browse the repository at this point in the history
  13. target/i386: Add VNMI and automatic IBRS feature bits

    Add the following featute bits.
    
    vnmi: Virtual NMI (VNMI) allows the hypervisor to inject the NMI into the
          guest without using Event Injection mechanism meaning not required to
          track the guest NMI and intercepting the IRET.
          The presence of this feature is indicated via the CPUID function
          0x8000000A_EDX[25].
    
    automatic-ibrs :
          The AMD Zen4 core supports a new feature called Automatic IBRS.
          It is a "set-and-forget" feature that means that, unlike e.g.,
          s/w-toggled SPEC_CTRL.IBRS, h/w manages its IBRS mitigation
          resources automatically across CPL transitions.
          The presence of this feature is indicated via the CPUID function
          0x80000021_EAX[8].
    
    The documention for the features are available in the links below.
    a. Processor Programming Reference (PPR) for AMD Family 19h Model 01h,
       Revision B1 Processors
    b. AMD64 Architecture Programmer’s Manual Volumes 1–5 Publication No. Revision
       40332 4.05 Date October 2022
    
    Signed-off-by: Santosh Shukla <santosh.shukla@amd.com>
    Signed-off-by: Kim Phillips <kim.phillips@amd.com>
    Signed-off-by: Babu Moger <babu.moger@amd.com>
    Link: https://www.amd.com/system/files/TechDocs/55898_B1_pub_0.50.zip
    Link: https://www.amd.com/system/files/TechDocs/40332_4.05.pdf
    Message-Id: <20230504205313.225073-7-babu.moger@amd.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    babumoger authored and bonzini committed May 8, 2023
    Copy the full SHA
    62a798d View commit details
    Browse the repository at this point in the history
  14. target/i386: Add EPYC-Genoa model to support Zen 4 processor series

    Adds the support for AMD EPYC Genoa generation processors. The model
    display for the new processor will be EPYC-Genoa.
    
    Adds the following new feature bits on top of the feature bits from
    the previous generation EPYC models.
    
    avx512f         : AVX-512 Foundation instruction
    avx512dq        : AVX-512 Doubleword & Quadword Instruction
    avx512ifma      : AVX-512 Integer Fused Multiply Add instruction
    avx512cd        : AVX-512 Conflict Detection instruction
    avx512bw        : AVX-512 Byte and Word Instructions
    avx512vl        : AVX-512 Vector Length Extension Instructions
    avx512vbmi      : AVX-512 Vector Byte Manipulation Instruction
    avx512_vbmi2    : AVX-512 Additional Vector Byte Manipulation Instruction
    gfni            : AVX-512 Galois Field New Instructions
    avx512_vnni     : AVX-512 Vector Neural Network Instructions
    avx512_bitalg   : AVX-512 Bit Algorithms, add bit algorithms Instructions
    avx512_vpopcntdq: AVX-512 AVX-512 Vector Population Count Doubleword and
                      Quadword Instructions
    avx512_bf16	: AVX-512 BFLOAT16 instructions
    la57            : 57-bit virtual address support (5-level Page Tables)
    vnmi            : Virtual NMI (VNMI) allows the hypervisor to inject the NMI
                      into the guest without using Event Injection mechanism
                      meaning not required to track the guest NMI and intercepting
                      the IRET.
    auto-ibrs       : The AMD Zen4 core supports a new feature called Automatic IBRS.
                      It is a "set-and-forget" feature that means that, unlike e.g.,
                      s/w-toggled SPEC_CTRL.IBRS, h/w manages its IBRS mitigation
                      resources automatically across CPL transitions.
    
    Signed-off-by: Babu Moger <babu.moger@amd.com>
    Message-Id: <20230504205313.225073-8-babu.moger@amd.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    babumoger authored and bonzini committed May 8, 2023
    Copy the full SHA
    166b174 View commit details
    Browse the repository at this point in the history
  15. docs: clarify --without-default-devices

    --without-default-devices is a specialized option that should only be used
    when configs/devices/ is changed manually.
    
    Explain the model towards which we should tend, with respect to failures
    to start guests and to run "make check".
    
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    bonzini committed May 8, 2023
    Copy the full SHA
    23b2a3b View commit details
    Browse the repository at this point in the history
  16. meson: leave unnecessary modules out of the build

    meson.build files choose whether to build modules based on foo.found()
    expressions.  If a feature is enabled (e.g. --enable-gtk), these expressions
    are true even if the code is not used by any emulator, and this results
    in an unexpected difference between modular and non-modular builds.
    
    For non-modular builds, the files are not included in any binary, and
    therefore the source files are never processed.  For modular builds,
    however, all .so files are unconditionally built by default, and therefore
    a normal "make" tries to build them.  However, the corresponding trace-*.h
    files are absent due to this conditional:
    
    if have_system
      trace_events_subdirs += [
        ...
        'ui',
        ...
      ]
    endif
    
    which was added to avoid wasting time running tracetool on unused trace-events
    files.  This causes a compilation failure; fix it by skipping module builds
    entirely if (depending on the module directory) have_block or have_system
    are false.
    
    Reported-by: Michael Tokarev <mjt@tls.msk.ru>
    Cc: qemu-stable@nongnu.org
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    bonzini committed May 8, 2023
    Copy the full SHA
    ef70986 View commit details
    Browse the repository at this point in the history

Commits on May 9, 2023

  1. Merge tag 'for-upstream' of https://gitlab.com/bonzini/qemu into staging

    * target/i386: improved EPYC models
    * more removal of mb_read/mb_set
    * bump _WIN32_WINNT to the Windows 8 API
    * fix for modular builds with --disable-system
    
    # -----BEGIN PGP SIGNATURE-----
    #
    # iQFIBAABCAAyFiEE8TM4V0tmI4mGbHaCv/vSX3jHroMFAmRZK7wUHHBib256aW5p
    # QHJlZGhhdC5jb20ACgkQv/vSX3jHroObngf8D6A5l1QQAnImRrZAny6HZV/9xseD
    # 9QhkUW3fxXlUhb8tXomv2BlT8h9GzLIN6aWvcCotT+xK3kAX7mRcYKgPMr9CYL7y
    # vev/hh+B6RY1CJ/xPT09/BMVjkj50AL0O/OuWMhcQ5nCO7F2sdMjMrsYqqeZcjYf
    # zx9RTX7gVGt+wWFHxgCgdfL0kfgzexK55YuZU0vLzcA+pYsZWoEfW+fKBIf4rzDV
    # r9M6mDBUkHBQ0rIVC3QFloAXnYb1JrpeqqL2i2qwhAkLz8LyGqk3lZF20hE/04im
    # XZcZjWO5pxAxIEPeTken+2x1n8tn2BLkMtvwJdV5TpvICCFRtPZlbH79qw==
    # =rXLN
    # -----END PGP SIGNATURE-----
    # gpg: Signature made Mon 08 May 2023 06:05:00 PM 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:
      meson: leave unnecessary modules out of the build
      docs: clarify --without-default-devices
      target/i386: Add EPYC-Genoa model to support Zen 4 processor series
      target/i386: Add VNMI and automatic IBRS feature bits
      target/i386: Add missing feature bits in EPYC-Milan model
      target/i386: Add feature bits for CPUID_Fn80000021_EAX
      target/i386: Add a couple of feature bits in 8000_0008_EBX
      target/i386: Add new EPYC CPU versions with updated cache_info
      target/i386: allow versioned CPUs to specify new cache_info
      include/qemu/osdep.h: Bump _WIN32_WINNT to the Windows 8 API
      MAINTAINERS: add stanza for Kconfig files
      tb-maint: do not use mb_read/mb_set
      call_rcu: stop using mb_set/mb_read
      test-aio-multithread: simplify test_multi_co_schedule
      test-aio-multithread: do not use mb_read/mb_set for simple flags
      rcu: remove qatomic_mb_set, expand comments
    
    Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
    rth7680 committed May 9, 2023
    Copy the full SHA
    577e648 View commit details
    Browse the repository at this point in the history