[PULL v3 00/36] (Mostly) x86 changes for 2021-09-06

Paolo Bonzini posted 36 patches 2 years, 7 months ago
Only 1 patches received!
There is a newer version of this series
backends/hostmem-epc.c                   | 118 ++++++++++++++
backends/meson.build                     |   1 +
configs/devices/i386-softmmu/default.mak |   1 +
docs/intel-sgx.txt                       | 167 +++++++++++++++++++
hw/i386/Kconfig                          |   5 +
hw/i386/acpi-build.c                     |  22 +++
hw/i386/fw_cfg.c                         |  10 +-
hw/i386/meson.build                      |   2 +
hw/i386/pc.c                             |  15 +-
hw/i386/pc_piix.c                        |   4 +
hw/i386/pc_q35.c                         |   3 +
hw/i386/sgx-epc.c                        | 265 +++++++++++++++++++++++++++++++
hw/i386/sgx-stub.c                       |  13 ++
hw/i386/sgx.c                            |  84 ++++++++++
hw/i386/x86.c                            |  29 ++++
hw/vfio/common.c                         |   1 +
include/exec/memory.h                    |  15 +-
include/hw/i386/pc.h                     |   8 +
include/hw/i386/sgx-epc.h                |  67 ++++++++
include/hw/i386/x86.h                    |   1 +
monitor/hmp-cmds.c                       |  10 ++
qapi/machine.json                        |  52 +++++-
qapi/qom.json                            |  19 +++
qemu-options.hx                          |  10 +-
softmmu/memory.c                         |   5 +
softmmu/physmem.c                        |   3 +-
target/i386/cpu.c                        | 199 +++++++++++++++++++++--
target/i386/cpu.h                        |  39 +++++
target/i386/kvm/kvm.c                    |  75 +++++++++
target/i386/kvm/kvm_i386.h               |   2 +
target/i386/machine.c                    |  42 ++++-
target/i386/svm.h                        |   8 +
target/i386/tcg/seg_helper.c             |   2 +-
target/i386/tcg/sysemu/excp_helper.c     |   2 +-
target/i386/tcg/sysemu/misc_helper.c     |  11 +-
target/i386/tcg/sysemu/svm_helper.c      | 121 +++++++++-----
36 files changed, 1367 insertions(+), 64 deletions(-)
create mode 100644 backends/hostmem-epc.c
create mode 100644 docs/intel-sgx.txt
create mode 100644 hw/i386/sgx-epc.c
create mode 100644 hw/i386/sgx-stub.c
create mode 100644 hw/i386/sgx.c
create mode 100644 include/hw/i386/sgx-epc.h
[PULL v3 00/36] (Mostly) x86 changes for 2021-09-06
Posted by Paolo Bonzini 2 years, 7 months ago
The following changes since commit 935efca6c246c108253b0e4e51cc87648fc7ca10:

  Merge remote-tracking branch 'remotes/thuth-gitlab/tags/pull-request-2021-09-06' into staging (2021-09-06 12:38:07 +0100)

are available in the Git repository at:

  https://gitlab.com/bonzini/qemu.git tags/for-upstream

for you to fetch changes up to 127c76bd1aa893122a22677b991c0f31ebef7f09:

  doc: Add the SGX doc (2021-09-07 08:54:57 +0200)

----------------------------------------------------------------
* SGX support (Sean, Yang)
* vGIF and vVMLOAD/VMSAVE support (Lara)
* Fix LA57 support in TCG (Daniel)

----------------------------------------------------------------
v1->v2: now entirely x86 - removed gbm patch and added the first one to fix TCG LA57

v2->v3: fix "target/i386: Moved int_ctl into CPUX86State structure" commit

Daniel P. Berrangé (1):
      target/i386: add missing bits to CR4_RESERVED_MASK

Lara Lazier (7):
      target/i386: VMRUN and VMLOAD canonicalizations
      target/i386: Added VGIF feature
      target/i386: Moved int_ctl into CPUX86State structure
      target/i386: Added VGIF V_IRQ masking capability
      target/i386: Added ignore TPR check in ctl_has_irq
      target/i386: Added changed priority check for VIRQ
      target/i386: Added vVMLOAD and vVMSAVE feature

Sean Christopherson (21):
      memory: Add RAM_PROTECTED flag to skip IOMMU mappings
      hostmem: Add hostmem-epc as a backend for SGX EPC
      i386: Add 'sgx-epc' device to expose EPC sections to guest
      vl: Add sgx compound properties to expose SGX EPC sections to guest
      i386: Add primary SGX CPUID and MSR defines
      i386: Add SGX CPUID leaf FEAT_SGX_12_0_EAX
      i386: Add SGX CPUID leaf FEAT_SGX_12_0_EBX
      i386: Add SGX CPUID leaf FEAT_SGX_12_1_EAX
      i386: Add get/set/migrate support for SGX_LEPUBKEYHASH MSRs
      i386: Add feature control MSR dependency when SGX is enabled
      i386: Update SGX CPUID info according to hardware/KVM/user input
      i386: kvm: Add support for exposing PROVISIONKEY to guest
      i386: Propagate SGX CPUID sub-leafs to KVM
      Adjust min CPUID level to 0x12 when SGX is enabled
      hw/i386/fw_cfg: Set SGX bits in feature control fw_cfg accordingly
      hw/i386/pc: Account for SGX EPC sections when calculating device memory
      i386/pc: Add e820 entry for SGX EPC section(s)
      i386: acpi: Add SGX EPC entry to ACPI tables
      q35: Add support for SGX EPC
      i440fx: Add support for SGX EPC
      doc: Add the SGX doc

Yang Zhong (7):
      qom: Add memory-backend-epc ObjectOptions support
      hostmem-epc: Add the reset interface for EPC backend reset
      sgx-epc: Add the reset interface for sgx-epc virt device
      sgx-epc: Avoid bios reset during sgx epc initialization
      hostmem-epc: Make prealloc consistent with qemu cmdline during reset
      Kconfig: Add CONFIG_SGX support
      sgx-epc: Add the fill_device_info() callback support

 backends/hostmem-epc.c                   | 118 ++++++++++++++
 backends/meson.build                     |   1 +
 configs/devices/i386-softmmu/default.mak |   1 +
 docs/intel-sgx.txt                       | 167 +++++++++++++++++++
 hw/i386/Kconfig                          |   5 +
 hw/i386/acpi-build.c                     |  22 +++
 hw/i386/fw_cfg.c                         |  10 +-
 hw/i386/meson.build                      |   2 +
 hw/i386/pc.c                             |  15 +-
 hw/i386/pc_piix.c                        |   4 +
 hw/i386/pc_q35.c                         |   3 +
 hw/i386/sgx-epc.c                        | 265 +++++++++++++++++++++++++++++++
 hw/i386/sgx-stub.c                       |  13 ++
 hw/i386/sgx.c                            |  84 ++++++++++
 hw/i386/x86.c                            |  29 ++++
 hw/vfio/common.c                         |   1 +
 include/exec/memory.h                    |  15 +-
 include/hw/i386/pc.h                     |   8 +
 include/hw/i386/sgx-epc.h                |  67 ++++++++
 include/hw/i386/x86.h                    |   1 +
 monitor/hmp-cmds.c                       |  10 ++
 qapi/machine.json                        |  52 +++++-
 qapi/qom.json                            |  19 +++
 qemu-options.hx                          |  10 +-
 softmmu/memory.c                         |   5 +
 softmmu/physmem.c                        |   3 +-
 target/i386/cpu.c                        | 199 +++++++++++++++++++++--
 target/i386/cpu.h                        |  39 +++++
 target/i386/kvm/kvm.c                    |  75 +++++++++
 target/i386/kvm/kvm_i386.h               |   2 +
 target/i386/machine.c                    |  42 ++++-
 target/i386/svm.h                        |   8 +
 target/i386/tcg/seg_helper.c             |   2 +-
 target/i386/tcg/sysemu/excp_helper.c     |   2 +-
 target/i386/tcg/sysemu/misc_helper.c     |  11 +-
 target/i386/tcg/sysemu/svm_helper.c      | 121 +++++++++-----
 36 files changed, 1367 insertions(+), 64 deletions(-)
 create mode 100644 backends/hostmem-epc.c
 create mode 100644 docs/intel-sgx.txt
 create mode 100644 hw/i386/sgx-epc.c
 create mode 100644 hw/i386/sgx-stub.c
 create mode 100644 hw/i386/sgx.c
 create mode 100644 include/hw/i386/sgx-epc.h
-- 
2.31.1


Re: [PULL v3 00/36] (Mostly) x86 changes for 2021-09-06
Posted by Peter Maydell 2 years, 7 months ago
On Tue, 7 Sept 2021 at 08:16, Paolo Bonzini <pbonzini@redhat.com> wrote:
>
> The following changes since commit 935efca6c246c108253b0e4e51cc87648fc7ca10:
>
>   Merge remote-tracking branch 'remotes/thuth-gitlab/tags/pull-request-2021-09-06' into staging (2021-09-06 12:38:07 +0100)
>
> are available in the Git repository at:
>
>   https://gitlab.com/bonzini/qemu.git tags/for-upstream
>
> for you to fetch changes up to 127c76bd1aa893122a22677b991c0f31ebef7f09:
>
>   doc: Add the SGX doc (2021-09-07 08:54:57 +0200)
>
> ----------------------------------------------------------------

Sorry to bounce this for a third time, but I only just noticed
this in the diffstat:

>  docs/intel-sgx.txt                       | 167 +++++++++++++++++++

No new .txt files in docs, please. All documentation from now
on needs to be in rst format and correctly integrated into
the right place in the manual structure.

thanks
-- PMM

Re: [PULL v3 00/36] (Mostly) x86 changes for 2021-09-06
Posted by Paolo Bonzini 2 years, 7 months ago
On 07/09/21 14:23, Peter Maydell wrote:
> On Tue, 7 Sept 2021 at 08:16, Paolo Bonzini <pbonzini@redhat.com> wrote:
>>
>> The following changes since commit 935efca6c246c108253b0e4e51cc87648fc7ca10:
>>
>>    Merge remote-tracking branch 'remotes/thuth-gitlab/tags/pull-request-2021-09-06' into staging (2021-09-06 12:38:07 +0100)
>>
>> are available in the Git repository at:
>>
>>    https://gitlab.com/bonzini/qemu.git tags/for-upstream
>>
>> for you to fetch changes up to 127c76bd1aa893122a22677b991c0f31ebef7f09:
>>
>>    doc: Add the SGX doc (2021-09-07 08:54:57 +0200)
>>
>> ----------------------------------------------------------------
> 
> Sorry to bounce this for a third time, but I only just noticed
> this in the diffstat:
> 
>>   docs/intel-sgx.txt                       | 167 +++++++++++++++++++
> 
> No new .txt files in docs, please. All documentation from now
> on needs to be in rst format and correctly integrated into
> the right place in the manual structure.

As discussed on IRC, I didn't want this series to be held by discussion 
on how to improve target-i386.rst and make room for more files, but I 
have now finished and posted a proposal for that.

Since I see that this pull request is already in the staging branch, I 
assume that I'll include the SGX conversion to reStructuredText as soon 
as that proposal is reviewed.

Paolo


Re: [PULL v3 00/36] (Mostly) x86 changes for 2021-09-06
Posted by Peter Maydell 2 years, 7 months ago
On Tue, 7 Sept 2021 at 08:16, Paolo Bonzini <pbonzini@redhat.com> wrote:
>
> The following changes since commit 935efca6c246c108253b0e4e51cc87648fc7ca10:
>
>   Merge remote-tracking branch 'remotes/thuth-gitlab/tags/pull-request-2021-09-06' into staging (2021-09-06 12:38:07 +0100)
>
> are available in the Git repository at:
>
>   https://gitlab.com/bonzini/qemu.git tags/for-upstream
>
> for you to fetch changes up to 127c76bd1aa893122a22677b991c0f31ebef7f09:
>
>   doc: Add the SGX doc (2021-09-07 08:54:57 +0200)
>
> ----------------------------------------------------------------
> * SGX support (Sean, Yang)
> * vGIF and vVMLOAD/VMSAVE support (Lara)
> * Fix LA57 support in TCG (Daniel)
>
> ----------------------------------------------------------------

New warnings during 'make check':

qemu-system-i386: warning: Unknown firmware file in legacy mode:
etc/msr_feature_control
qemu-system-x86_64: warning: Unknown firmware file in legacy mode:
etc/msr_feature_control

(not sure which qtest produced these).


ppc produced a new meson warning:

Program cp found: YES (/bin/cp)
Program cp found: YES (/bin/cp)
Program cp found: YES (/bin/cp)
Program cp found: YES (/bin/cp)
Program sphinx-build-3 sphinx-build skipped: feature docs disabled
Program python3 found: YES (/usr/bin/python3)
WARNING: Project targeting '>=0.55.0' but tried to use feature
introduced in '0.57.0': test() timeout <= 0.
Program diff found: YES (/usr/bin/diff)
Program dbus-daemon found: YES (/usr/bin/dbus-daemon)
Program /usr/bin/gdbus-codegen found: YES (/usr/bin/gdbus-codegen)
Program initrd-stress.sh found: YES
(/home/pm215/qemu/tests/migration/initrd-stress.sh)
Program xgettext found: YES (/usr/bin/xgettext)
Build targets in project: 650
WARNING: Project specifies a minimum meson_version '>=0.55.0' but uses
features which were added in newer versions:
 * 0.57.0: {'test() timeout <= 0'}



(PS: why does meson report "Program /usr/bin/python3 found: YES
(/usr/bin/python3)" and
"Program cp found: YES (/bin/cp)" so many times ??)

-- PMM

Re: [PULL v3 00/36] (Mostly) x86 changes for 2021-09-06
Posted by Paolo Bonzini 2 years, 7 months ago
On 07/09/21 18:00, Peter Maydell wrote:
> New warnings during 'make check':
> 
> qemu-system-i386: warning: Unknown firmware file in legacy mode:
> etc/msr_feature_control
> qemu-system-x86_64: warning: Unknown firmware file in legacy mode:
> etc/msr_feature_control
> 
> (not sure which qtest produced these).

Hmm, the bug is preexisting but now it's exposed on machines that have SGX.

> ppc produced a new meson warning:

This isn't me, but rather the same system update that caused that .so 
issue.  I was planning to update QEMU to a newer version of meson, so 
that will go away soon.

> (PS: why does meson report "Program /usr/bin/python3 found: YES
> (/usr/bin/python3)" and
> "Program cp found: YES (/bin/cp)" so many times ??)

It seems to report it once per custom_target.  I'll take a look tomorrow.

Paolo