qemu-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-commits] [qemu/qemu] 9617cd: pc: add parser for OVMF reset block


From: Peter Maydell
Subject: [Qemu-commits] [qemu/qemu] 9617cd: pc: add parser for OVMF reset block
Date: Wed, 17 Feb 2021 06:44:27 -0800

  Branch: refs/heads/master
  Home:   https://github.com/qemu/qemu
  Commit: 9617cddb72649f563eef8114648140b8c5607a71
      
https://github.com/qemu/qemu/commit/9617cddb72649f563eef8114648140b8c5607a71
  Author: James Bottomley <jejb@linux.ibm.com>
  Date:   2021-02-16 (Tue, 16 Feb 2021)

  Changed paths:
    M hw/i386/pc_sysfw.c
    M include/hw/i386/pc.h
    M include/sysemu/sev.h
    M target/i386/sev_i386.h

  Log Message:
  -----------
  pc: add parser for OVMF reset block

OVMF is developing a mechanism for depositing a GUIDed table just
below the known location of the reset vector.  The table goes
backwards in memory so all entries are of the form

<data>|len|<GUID>

Where <data> is arbtrary size and type, <len> is a uint16_t and
describes the entire length of the entry from the beginning of the
data to the end of the guid.

The foot of the table is of this form and <len> for this case
describes the entire size of the table.  The table foot GUID is
defined by OVMF as 96b582de-1fb2-45f7-baea-a366c55a082d and if the
table is present this GUID is just below the reset vector, 48 bytes
before the end of the firmware file.

Add a parser for the ovmf reset block which takes a copy of the block,
if the table foot guid is found, minus the footer and a function for
later traversal to return the data area of any specified GUIDs.

Signed-off-by: James Bottomley <jejb@linux.ibm.com>

Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
Message-Id: <20210204193939.16617-2-jejb@linux.ibm.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>


  Commit: f522cef9b352ac2f9880c5c8b2ea7b2033bdc9f0
      
https://github.com/qemu/qemu/commit/f522cef9b352ac2f9880c5c8b2ea7b2033bdc9f0
  Author: James Bottomley <jejb@linux.ibm.com>
  Date:   2021-02-16 (Tue, 16 Feb 2021)

  Changed paths:
    M qapi/misc-target.json
    M target/i386/monitor.c

  Log Message:
  -----------
  sev: update sev-inject-launch-secret to make gpa optional

If the gpa isn't specified, it's value is extracted from the OVMF
properties table located below the reset vector (and if this doesn't
exist, an error is returned).  OVMF has defined the GUID for the SEV
secret area as 4c2eb361-7d9b-4cc3-8081-127c90d3d294 and the format of
the <data> is: <base>|<size> where both are uint32_t.  We extract
<base> and use it as the gpa for the injection.

Note: it is expected that the injected secret will also be GUID
described but since qemu can't interpret it, the format is left
undefined here.

Signed-off-by: James Bottomley <jejb@linux.ibm.com>

Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
Message-Id: <20210204193939.16617-3-jejb@linux.ibm.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>


  Commit: 6b98e96f1842a54c0bf074f4dad0928808afe287
      
https://github.com/qemu/qemu/commit/6b98e96f1842a54c0bf074f4dad0928808afe287
  Author: Tom Lendacky <thomas.lendacky@amd.com>
  Date:   2021-02-16 (Tue, 16 Feb 2021)

  Changed paths:
    M target/i386/cpu.c
    M target/i386/sev-stub.c
    M target/i386/sev.c
    M target/i386/sev_i386.h

  Log Message:
  -----------
  sev/i386: Add initial support for SEV-ES

Provide initial support for SEV-ES. This includes creating a function to
indicate the guest is an SEV-ES guest (which will return false until all
support is in place), performing the proper SEV initialization and
ensuring that the guest CPU state is measured as part of the launch.

Cc: Paolo Bonzini <pbonzini@redhat.com>
Cc: Richard Henderson <richard.henderson@linaro.org>
Cc: Eduardo Habkost <ehabkost@redhat.com>
Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
Co-developed-by: Jiri Slaby <jslaby@suse.cz>
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
Signed-off-by: Tom Lendacky <thomas.lendacky@amd.com>
Reviewed-by: Venu Busireddy <venu.busireddy@oracle.com>
Message-Id: 
<2e6386cbc1ddeaf701547dd5677adf5ddab2b6bd.1611682609.git.thomas.lendacky@amd.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>


  Commit: 9681f8677f26320fff488e56b500a3d7d5cf1a49
      
https://github.com/qemu/qemu/commit/9681f8677f26320fff488e56b500a3d7d5cf1a49
  Author: Tom Lendacky <thomas.lendacky@amd.com>
  Date:   2021-02-16 (Tue, 16 Feb 2021)

  Changed paths:
    M target/i386/sev.c

  Log Message:
  -----------
  sev/i386: Require in-kernel irqchip support for SEV-ES guests

In prep for AP booting, require the use of in-kernel irqchip support. This
lessens the Qemu support burden required to boot APs.

Cc: Paolo Bonzini <pbonzini@redhat.com>
Cc: Richard Henderson <richard.henderson@linaro.org>
Cc: Eduardo Habkost <ehabkost@redhat.com>
Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
Signed-off-by: Tom Lendacky <thomas.lendacky@amd.com>
Reviewed-by: Venu Busireddy <venu.busireddy@oracle.com>
Message-Id: 
<e9aec5941e613456f0757f5a73869cdc5deea105.1611682609.git.thomas.lendacky@amd.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>


  Commit: b2f73a0784b7a5eae2022ccf3293792bd008cc64
      
https://github.com/qemu/qemu/commit/b2f73a0784b7a5eae2022ccf3293792bd008cc64
  Author: Paolo Bonzini <pbonzini@redhat.com>
  Date:   2021-02-16 (Tue, 16 Feb 2021)

  Changed paths:
    M accel/kvm/kvm-all.c
    M hw/i386/pc_sysfw.c
    M include/sysemu/sev.h
    M target/i386/kvm/kvm.c
    M target/i386/sev-stub.c
    M target/i386/sev.c

  Log Message:
  -----------
  sev/i386: Allow AP booting under SEV-ES

When SEV-ES is enabled, it is not possible modify the guests register
state after it has been initially created, encrypted and measured.

Normally, an INIT-SIPI-SIPI request is used to boot the AP. However, the
hypervisor cannot emulate this because it cannot update the AP register
state. For the very first boot by an AP, the reset vector CS segment
value and the EIP value must be programmed before the register has been
encrypted and measured. Search the guest firmware for the guest for a
specific GUID that tells Qemu the value of the reset vector to use.

Cc: Paolo Bonzini <pbonzini@redhat.com>
Cc: "Michael S. Tsirkin" <mst@redhat.com>
Cc: Marcel Apfelbaum <marcel.apfelbaum@gmail.com>
Cc: Richard Henderson <richard.henderson@linaro.org>
Cc: Eduardo Habkost <ehabkost@redhat.com>
Cc: Marcelo Tosatti <mtosatti@redhat.com>
Signed-off-by: Tom Lendacky <thomas.lendacky@amd.com>
Message-Id: 
<22db2bfb4d6551aed661a9ae95b4fdbef613ca21.1611682609.git.thomas.lendacky@amd.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>


  Commit: 92a5199b29f6519aa5f774f4b96dc41954f641d1
      
https://github.com/qemu/qemu/commit/92a5199b29f6519aa5f774f4b96dc41954f641d1
  Author: Tom Lendacky <thomas.lendacky@amd.com>
  Date:   2021-02-16 (Tue, 16 Feb 2021)

  Changed paths:
    M accel/kvm/kvm-all.c
    M include/sysemu/cpus.h
    M include/sysemu/hw_accel.h
    M include/sysemu/kvm.h
    M softmmu/cpus.c
    M softmmu/runstate.c
    M target/arm/kvm.c
    M target/i386/kvm/kvm.c
    M target/mips/kvm.c
    M target/ppc/kvm.c
    M target/s390x/kvm.c

  Log Message:
  -----------
  sev/i386: Don't allow a system reset under an SEV-ES guest

An SEV-ES guest does not allow register state to be altered once it has
been measured. When an SEV-ES guest issues a reboot command, Qemu will
reset the vCPU state and resume the guest. This will cause failures under
SEV-ES. Prevent that from occuring by introducing an arch-specific
callback that returns a boolean indicating whether vCPUs are resettable.

Cc: Peter Maydell <peter.maydell@linaro.org>
Cc: Aurelien Jarno <aurelien@aurel32.net>
Cc: Jiaxun Yang <jiaxun.yang@flygoat.com>
Cc: Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>
Cc: David Gibson <david@gibson.dropbear.id.au>
Cc: David Hildenbrand <david@redhat.com>
Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
Signed-off-by: Tom Lendacky <thomas.lendacky@amd.com>
Reviewed-by: Venu Busireddy <venu.busireddy@oracle.com>
Message-Id: 
<1ac39c441b9a3e970e9556e1cc29d0a0814de6fd.1611682609.git.thomas.lendacky@amd.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>


  Commit: 23edf8b549c7a8a520d42da19403864245f8977f
      
https://github.com/qemu/qemu/commit/23edf8b549c7a8a520d42da19403864245f8977f
  Author: Tom Lendacky <thomas.lendacky@amd.com>
  Date:   2021-02-16 (Tue, 16 Feb 2021)

  Changed paths:
    M target/i386/kvm/kvm.c

  Log Message:
  -----------
  kvm/i386: Use a per-VM check for SMM capability

SMM is not currently supported for an SEV-ES guest by KVM. Change the SMM
capability check from a KVM-wide check to a per-VM check in order to have
a finer-grained SMM capability check.

Cc: Paolo Bonzini <pbonzini@redhat.com>
Cc: Richard Henderson <richard.henderson@linaro.org>
Cc: Eduardo Habkost <ehabkost@redhat.com>
Suggested-by: Sean Christopherson <seanjc@google.com>
Signed-off-by: Tom Lendacky <thomas.lendacky@amd.com>
Reviewed-by: Venu Busireddy <venu.busireddy@oracle.com>
Message-Id: 
<f851903809e9d4e6a22d5dfd738dac8da991e28d.1611682609.git.thomas.lendacky@amd.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>


  Commit: 027b524d6a427d7c89f4e8af44c49d96796adab5
      
https://github.com/qemu/qemu/commit/027b524d6a427d7c89f4e8af44c49d96796adab5
  Author: Tom Lendacky <thomas.lendacky@amd.com>
  Date:   2021-02-16 (Tue, 16 Feb 2021)

  Changed paths:
    M target/i386/sev.c

  Log Message:
  -----------
  sev/i386: Enable an SEV-ES guest based on SEV policy

Update the sev_es_enabled() function return value to be based on the SEV
policy that has been specified. SEV-ES is enabled if SEV is enabled and
the SEV-ES policy bit is set in the policy object.

Cc: Paolo Bonzini <pbonzini@redhat.com>
Cc: Richard Henderson <richard.henderson@linaro.org>
Cc: Eduardo Habkost <ehabkost@redhat.com>
Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
Signed-off-by: Tom Lendacky <thomas.lendacky@amd.com>
Reviewed-by: Venu Busireddy <venu.busireddy@oracle.com>
Message-Id: 
<c69f81c6029f31fc4c52a9f35f1bd704362476a5.1611682609.git.thomas.lendacky@amd.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>


  Commit: f6a2c6eee77458a1f2cf6632b2d9f2fd97bf595e
      
https://github.com/qemu/qemu/commit/f6a2c6eee77458a1f2cf6632b2d9f2fd97bf595e
  Author: Christian Schoenebeck <qemu_oss@crudebyte.com>
  Date:   2021-02-16 (Tue, 16 Feb 2021)

  Changed paths:
    M tests/qtest/libqos/qgraph.c
    M tests/qtest/libqos/qgraph.h
    M tests/qtest/libqos/qgraph_internal.h

  Log Message:
  -----------
  libqos/qgraph: add qos_node_create_driver_named()

So far the qos subsystem of the qtest framework had the limitation
that only one instance of the same official QEMU (QMP) driver name
could be created for qtests. That's because a) the created qos
node names must always be unique, b) the node name must match the
official QEMU driver name being instantiated and c) all nodes are
in a global space shared by all tests.

This patch removes this limitation by introducing a new function
qos_node_create_driver_named() which allows test case authors to
specify a node name being different from the actual associated
QEMU driver name. It fills the new 'qemu_name' field of
QOSGraphNode for that purpose.

Adjust build_driver_cmd_line() and qos_graph_node_set_availability()
to correctly deal with either accessing node name vs. node's
qemu_name correctly.

Signed-off-by: Christian Schoenebeck <qemu_oss@crudebyte.com>
Message-Id: 
<3be962ff38f3396f8040deaa5ffdab525c4e0b16.1611704181.git.qemu_oss@crudebyte.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>


  Commit: 23820025af6b356cd4061a8b029c1126e1ee915e
      
https://github.com/qemu/qemu/commit/23820025af6b356cd4061a8b029c1126e1ee915e
  Author: Christian Schoenebeck <qemu_oss@crudebyte.com>
  Date:   2021-02-16 (Tue, 16 Feb 2021)

  Changed paths:
    M tests/qtest/libqos/qgraph_internal.h

  Log Message:
  -----------
  libqos/qgraph_internal: add qos_printf() and qos_printf_literal()

These two are macros wrapping regular printf() call. They are intended
to be used instead of calling printf() directly in order to avoid
breaking TAP output format.

TAP output format is enabled by using --tap command line argument.
Starting with glib 2.62 it is enabled by default.

Unfortunately there is currently no public glib API available to check
whether TAP output format is enabled. For that reason qos_printf()
simply always prepends a '#' character for now.

Signed-off-by: Christian Schoenebeck <qemu_oss@crudebyte.com>
Reviewed-by: Thomas Huth <thuth@redhat.com>
Message-Id: 
<653a5ef61c5e7d160e4d6294e542c57ea324cee4.1611704181.git.qemu_oss@crudebyte.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>


  Commit: 83ff78e5674ccf01a2092c230c893cb2ef41a1a6
      
https://github.com/qemu/qemu/commit/83ff78e5674ccf01a2092c230c893cb2ef41a1a6
  Author: Christian Schoenebeck <qemu_oss@crudebyte.com>
  Date:   2021-02-16 (Tue, 16 Feb 2021)

  Changed paths:
    M tests/qtest/libqos/qgraph.c
    M tests/qtest/libqos/qgraph.h
    M tests/qtest/qos-test.c

  Log Message:
  -----------
  tests/qtest/qos-test: dump qos graph if verbose

If qtests were run in verbose mode (i.e. if --verbose CL argument was
provided) then dump the generated qos graph (all nodes and edges,
along with their current individual availability status) to stdout,
which allows to identify problems in the created qos graph e.g. when
writing new qos tests.

See API doc comment on function qos_dump_graph() for details.

Signed-off-by: Christian Schoenebeck <qemu_oss@crudebyte.com>
Message-Id: 
<6bffb6e38589fb2c06a2c1b5deed33f3e710fed1.1611704181.git.qemu_oss@crudebyte.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>


  Commit: 093360dc32cf70d3651496b58dc16b22f4971dcc
      
https://github.com/qemu/qemu/commit/093360dc32cf70d3651496b58dc16b22f4971dcc
  Author: Christian Schoenebeck <qemu_oss@crudebyte.com>
  Date:   2021-02-16 (Tue, 16 Feb 2021)

  Changed paths:
    M tests/qtest/qos-test.c

  Log Message:
  -----------
  tests/qtest/qos-test: dump environment variables if verbose

If qtests are run in verbose mode (i.e. if --verbose CL argument
was provided) then print all environment variables to stdout
before running the individual tests.

It is common nowadays, at least being able to output all config
vectors in a build chain, especially if it is required to
investigate build- and test-issues on foreign/remote machines,
which includes environment variables. In the context of writing
new test cases this is also useful for finding out whether there
are already some existing options for common questions like is
there a preferred location for writing test files to? Is there
a maximum size for test data? Is there a deadline for running
tests?

Use qos_printf() instead of g_test_message() to avoid the latter
cluttering the output.

Signed-off-by: Christian Schoenebeck <qemu_oss@crudebyte.com>
Message-Id: 
<21d77b33c578d80b5bba1068e61fd3562958b3c2.1611704181.git.qemu_oss@crudebyte.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>


  Commit: b0019c995e0397092d5db5caa8262b67036c2a89
      
https://github.com/qemu/qemu/commit/b0019c995e0397092d5db5caa8262b67036c2a89
  Author: Christian Schoenebeck <qemu_oss@crudebyte.com>
  Date:   2021-02-16 (Tue, 16 Feb 2021)

  Changed paths:
    M tests/qtest/qos-test.c

  Log Message:
  -----------
  tests/qtest/qos-test: dump QEMU command if verbose

If qtests are run in verbose mode (i.e. if --verbose CL argument
was provided) then print the assembled qemu command line for each
test.

Use qos_printf() instead of g_test_message() to avoid the latter
cluttering the output.

Signed-off-by: Christian Schoenebeck <qemu_oss@crudebyte.com>
Message-Id: 
<110bef3595cb841dfa1b86733c174ac9774eb37e.1611704181.git.qemu_oss@crudebyte.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>


  Commit: 342e3a4f20653c2d419cc0e8fdc0b99dfea32fed
      
https://github.com/qemu/qemu/commit/342e3a4f20653c2d419cc0e8fdc0b99dfea32fed
  Author: Stefan Weil <sw@weilnetz.de>
  Date:   2021-02-16 (Tue, 16 Feb 2021)

  Changed paths:
    M util/cutils.c

  Log Message:
  -----------
  util/cutils: Skip "." when looking for next directory component

When looking for the next directory component, a "." component is now skipped.

This fixes the path(s) used for firmware lookup for the prefix == bindir case
which is standard for QEMU on Windows and where the internally
used bindir value ends with "/.".

Signed-off-by: Stefan Weil <sw@weilnetz.de>
Message-Id: <20210208205752.2488774-1-sw@weilnetz.de>
Cc: qemu-stable@nongnu.org
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>


  Commit: 118f2aadbc66aaae4e8d52259288e18f2aa4544a
      
https://github.com/qemu/qemu/commit/118f2aadbc66aaae4e8d52259288e18f2aa4544a
  Author: Hill Ma <maahiuzeon@gmail.com>
  Date:   2021-02-16 (Tue, 16 Feb 2021)

  Changed paths:
    M target/i386/hvf/x86_cpuid.c

  Log Message:
  -----------
  hvf: Guard xgetbv call

This prevents illegal instruction on cpus that do not support xgetbv.

Buglink: https://bugs.launchpad.net/qemu/+bug/1758819
Reviewed-by: Cameron Esfahani <dirty@apple.com>
Signed-off-by: Hill Ma <maahiuzeon@gmail.com>
Message-Id: <X/6OJ7qk0W6bHkHQ@Hills-Mac-Pro.local>
Signed-off-by: Roman Bolshakov <r.bolshakov@yadro.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>


  Commit: 3b502b0e470867369ba6e0a94e9ba6d91bb176c2
      
https://github.com/qemu/qemu/commit/3b502b0e470867369ba6e0a94e9ba6d91bb176c2
  Author: Vladislav Yaroshchuk <yaroshchuk2000@gmail.com>
  Date:   2021-02-16 (Tue, 16 Feb 2021)

  Changed paths:
    M target/i386/hvf/hvf.c

  Log Message:
  -----------
  target/i386/hvf: add vmware-cpuid-freq cpu feature

For `-accel hvf` cpu_x86_cpuid() is wrapped with hvf_cpu_x86_cpuid() to
add paravirtualization cpuid leaf 0x40000010
https://lkml.org/lkml/2008/10/1/246

Leaf 0x40000010, Timing Information:
EAX: (Virtual) TSC frequency in kHz.
EBX: (Virtual) Bus (local apic timer) frequency in kHz.
ECX, EDX: RESERVED (Per above, reserved fields are set to zero).

On macOS TSC and APIC Bus frequencies can be readed by sysctl call with
names `machdep.tsc.frequency` and `hw.busfrequency`

This options is required for Darwin-XNU guest to be synchronized with
host

Leaf 0x40000000 not exposes HVF leaving hypervisor signature empty

Signed-off-by: Vladislav Yaroshchuk <yaroshchuk2000@gmail.com>
Message-Id: <20210122150518.3551-1-yaroshchuk2000@gmail.com>
Signed-off-by: Roman Bolshakov <r.bolshakov@yadro.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>


  Commit: 45f918ccf6c35ee1912a8847873b7ba5b6927b46
      
https://github.com/qemu/qemu/commit/45f918ccf6c35ee1912a8847873b7ba5b6927b46
  Author: Alexander Graf <agraf@csgraf.de>
  Date:   2021-02-16 (Tue, 16 Feb 2021)

  Changed paths:
    M target/i386/hvf/hvf-i386.h

  Log Message:
  -----------
  hvf: x86: Remove unused definitions

The hvf i386 has a few struct and cpp definitions that are never
used. Remove them.

Suggested-by: Roman Bolshakov <r.bolshakov@yadro.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Signed-off-by: Alexander Graf <agraf@csgraf.de>
Message-Id: <20210120224444.71840-3-agraf@csgraf.de>
Signed-off-by: Roman Bolshakov <r.bolshakov@yadro.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>


  Commit: 027ac0cb516cca4ce8a88dcca2f759c77e0e374b
      
https://github.com/qemu/qemu/commit/027ac0cb516cca4ce8a88dcca2f759c77e0e374b
  Author: Vladislav Yaroshchuk <yaroshchuk2000@gmail.com>
  Date:   2021-02-16 (Tue, 16 Feb 2021)

  Changed paths:
    M target/i386/cpu.h
    M target/i386/hvf/x86_emu.c

  Log Message:
  -----------
  target/i386/hvf: add rdmsr 35H MSR_CORE_THREAD_COUNT

Some guests (ex. Darwin-XNU) can attemp to read this MSR to retrieve and
validate CPU topology comparing it to ACPI MADT content

MSR description from Intel Manual:
35H: MSR_CORE_THREAD_COUNT: Configured State of Enabled Processor Core
  Count and Logical Processor Count

Bits 15:0 THREAD_COUNT The number of logical processors that are
  currently enabled in the physical package

Bits 31:16 Core_COUNT The number of processor cores that are currently
  enabled in the physical package

Bits 63:32 Reserved

Signed-off-by: Vladislav Yaroshchuk <yaroshchuk2000@gmail.com>
Message-Id: <20210113205323.33310-1-yaroshchuk2000@gmail.com>
[RB: reordered MSR definition and dropped u suffix from shift offset]
Signed-off-by: Roman Bolshakov <r.bolshakov@yadro.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>


  Commit: 106f91d59c373b63f227b8827ff18ac9c9068d2f
      
https://github.com/qemu/qemu/commit/106f91d59c373b63f227b8827ff18ac9c9068d2f
  Author: Alexander Graf <agraf@csgraf.de>
  Date:   2021-02-16 (Tue, 16 Feb 2021)

  Changed paths:
    M target/i386/hvf/hvf.c

  Log Message:
  -----------
  hvf: Fetch cr4 before evaluating CPUID(1)

The CPUID function 1 has a bit called OSXSAVE which tells user space the
status of the CR4.OSXSAVE bit. Our generic CPUID function injects that bit
based on the status of CR4.

With Hypervisor.framework, we do not synchronize full CPU state often enough
for this function to see the CR4 update before guest user space asks for it.

To be on the save side, let's just always synchronize it when we receive a
CPUID(1) request. That way we can set the bit with real confidence.

Reported-by: Asad Ali <asad@osaro.com>
Signed-off-by: Alexander Graf <agraf@csgraf.de>
Message-Id: <20210123004129.6364-1-agraf@csgraf.de>
[RB: resolved conflict with another CPUID change]
Signed-off-by: Roman Bolshakov <r.bolshakov@yadro.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>


  Commit: 82e2756897810b6e17e0c352101878b97b1e2688
      
https://github.com/qemu/qemu/commit/82e2756897810b6e17e0c352101878b97b1e2688
  Author: Greg Kurz <groug@kaod.org>
  Date:   2021-02-16 (Tue, 16 Feb 2021)

  Changed paths:
    M util/event_notifier-posix.c

  Log Message:
  -----------
  event_notifier: Set ->initialized earlier in event_notifier_init()

Otherwise the call to event_notifier_set() is a nop, which causes
the SLOF firmware on POWER to hang when booting from a virtio-scsi
device:

virtio_scsi_dataplane_start()
 virtio_scsi_vring_init()
  virtio_bus_set_host_notifier() <- assign == true
   event_notifier_init() <- active == 1
    event_notifier_set() <- fails right away if !e->initialized

Fixes: e34e47eb28c0 ("event_notifier: handle initialization failure better")
Cc: mlevitsk@redhat.com
Signed-off-by: Greg Kurz <groug@kaod.org>
Message-Id: <20210216120247.1293569-1-groug@kaod.org>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>


  Commit: 366a85e4bb748794b1ae0ca0ccc2d95f316679a0
      
https://github.com/qemu/qemu/commit/366a85e4bb748794b1ae0ca0ccc2d95f316679a0
  Author: Pavel Dovgalyuk <pavel.dovgalyuk@ispras.ru>
  Date:   2021-02-16 (Tue, 16 Feb 2021)

  Changed paths:
    M include/sysemu/replay.h
    M replay/replay-internal.c
    M replay/replay-time.c
    M replay/replay.c
    M stubs/replay-tools.c

  Log Message:
  -----------
  replay: fix icount request when replaying clock access

Record/replay provides REPLAY_CLOCK_LOCKED macro to access
the clock when vm_clock_seqlock is locked. This macro is
needed because replay internals operate icount. In locked case
replay use icount_get_raw_locked for icount request, which prevents
excess locking which leads to deadlock. But previously only
record code used *_locked function and replay did not.
Therefore sometimes clock access lead to deadlocks.
This patch fixes clock access for replay too and uses *_locked
icount access function.

Signed-off-by: Pavel Dovgalyuk <Pavel.Dovgalyuk@ispras.ru>
Message-Id: <161347990483.1313189.8371838968343494161.stgit@pasha-ThinkPad-X280>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>


  Commit: f0f75dc174b6c79eb78a161d1c0921f82d7f1bf0
      
https://github.com/qemu/qemu/commit/f0f75dc174b6c79eb78a161d1c0921f82d7f1bf0
  Author: Peter Maydell <peter.maydell@linaro.org>
  Date:   2021-02-17 (Wed, 17 Feb 2021)

  Changed paths:
    M accel/kvm/kvm-all.c
    M hw/i386/pc_sysfw.c
    M include/hw/i386/pc.h
    M include/sysemu/cpus.h
    M include/sysemu/hw_accel.h
    M include/sysemu/kvm.h
    M include/sysemu/replay.h
    M include/sysemu/sev.h
    M qapi/misc-target.json
    M replay/replay-internal.c
    M replay/replay-time.c
    M replay/replay.c
    M softmmu/cpus.c
    M softmmu/runstate.c
    M stubs/replay-tools.c
    M target/arm/kvm.c
    M target/i386/cpu.c
    M target/i386/cpu.h
    M target/i386/hvf/hvf-i386.h
    M target/i386/hvf/hvf.c
    M target/i386/hvf/x86_cpuid.c
    M target/i386/hvf/x86_emu.c
    M target/i386/kvm/kvm.c
    M target/i386/monitor.c
    M target/i386/sev-stub.c
    M target/i386/sev.c
    M target/i386/sev_i386.h
    M target/mips/kvm.c
    M target/ppc/kvm.c
    M target/s390x/kvm.c
    M tests/qtest/libqos/qgraph.c
    M tests/qtest/libqos/qgraph.h
    M tests/qtest/libqos/qgraph_internal.h
    M tests/qtest/qos-test.c
    M util/cutils.c
    M util/event_notifier-posix.c

  Log Message:
  -----------
  Merge remote-tracking branch 'remotes/bonzini-gitlab/tags/for-upstream' into 
staging

* HVF fixes
* Extra qos-test debugging output (Christian)
* SEV secret address autodetection (James)
* SEV-ES support (Thomas)
* Relocatable paths bugfix (Stefan)
* RR fix (Pavel)
* EventNotifier fix (Greg)

# gpg: Signature made Tue 16 Feb 2021 16:15:59 GMT
# gpg:                using RSA key F13338574B662389866C7682BFFBD25F78C7AE83
# gpg:                issuer "pbonzini@redhat.com"
# gpg: Good signature from "Paolo Bonzini <bonzini@gnu.org>" [full]
# gpg:                 aka "Paolo Bonzini <pbonzini@redhat.com>" [full]
# 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

* remotes/bonzini-gitlab/tags/for-upstream: (21 commits)
  replay: fix icount request when replaying clock access
  event_notifier: Set ->initialized earlier in event_notifier_init()
  hvf: Fetch cr4 before evaluating CPUID(1)
  target/i386/hvf: add rdmsr 35H MSR_CORE_THREAD_COUNT
  hvf: x86: Remove unused definitions
  target/i386/hvf: add vmware-cpuid-freq cpu feature
  hvf: Guard xgetbv call
  util/cutils: Skip "." when looking for next directory component
  tests/qtest/qos-test: dump QEMU command if verbose
  tests/qtest/qos-test: dump environment variables if verbose
  tests/qtest/qos-test: dump qos graph if verbose
  libqos/qgraph_internal: add qos_printf() and qos_printf_literal()
  libqos/qgraph: add qos_node_create_driver_named()
  sev/i386: Enable an SEV-ES guest based on SEV policy
  kvm/i386: Use a per-VM check for SMM capability
  sev/i386: Don't allow a system reset under an SEV-ES guest
  sev/i386: Allow AP booting under SEV-ES
  sev/i386: Require in-kernel irqchip support for SEV-ES guests
  sev/i386: Add initial support for SEV-ES
  sev: update sev-inject-launch-secret to make gpa optional
  ...

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>


Compare: https://github.com/qemu/qemu/compare/65d6ae4927d2...f0f75dc174b6



reply via email to

[Prev in Thread] Current Thread [Next in Thread]