spapr: Add PEF based confidential guest support
commit6c8ebe30ea8055fce8b24730e970532b3c849fdb
authorDavid Gibson <david@gibson.dropbear.id.au>
Wed, 8 Apr 2020 05:10:03 +0000 (8 15:10 +1000)
committerDavid Gibson <david@gibson.dropbear.id.au>
Mon, 8 Feb 2021 05:57:38 +0000 (8 16:57 +1100)
tree177b5de9193d3ca1632d71a68696b8b11d24c676
parent64d19f333464a877f3ebe538510a10a514db0eb9
spapr: Add PEF based confidential guest support

Some upcoming POWER machines have a system called PEF (Protected
Execution Facility) which uses a small ultravisor to allow guests to
run in a way that they can't be eavesdropped by the hypervisor.  The
effect is roughly similar to AMD SEV, although the mechanisms are
quite different.

Most of the work of this is done between the guest, KVM and the
ultravisor, with little need for involvement by qemu.  However qemu
does need to tell KVM to allow secure VMs.

Because the availability of secure mode is a guest visible difference
which depends on having the right hardware and firmware, we don't
enable this by default.  In order to run a secure guest you need to
create a "pef-guest" object and set the confidential-guest-support
property to point to it.

Note that this just *allows* secure guests, the architecture of PEF is
such that the guest still needs to talk to the ultravisor to enter
secure mode.  Qemu has no direct way of knowing if the guest is in
secure mode, and certainly can't know until well after machine
creation time.

To start a PEF-capable guest, use the command line options:
    -object pef-guest,id=pef0 -machine confidential-guest-support=pef0

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Reviewed-by: Greg Kurz <groug@kaod.org>
docs/confidential-guest-support.txt
docs/papr-pef.txt [new file with mode: 0644]
hw/ppc/meson.build
hw/ppc/pef.c [new file with mode: 0644]
hw/ppc/spapr.c
include/hw/ppc/pef.h [new file with mode: 0644]
target/ppc/kvm.c
target/ppc/kvm_ppc.h