Hi,
This is the implementation of ppc64 secure guest execution, known
as PAPR-PEF. This implementation is based on the new
confidential-guest-support machine option that is available in
QEMU 6.0.0.
The patches were done on top of Boris s390-pv patches that were
sent by review [1] given that Boris provided a common base for
new security launches there.
The series is also available in gitlab:
https://gitlab.com/danielhb/libvirt/-/tree/papr_pef_v1
Note: If someone wishes to give this series a try, considering that you
have a host with proper PowerPC PEF hardware, be aware that there is
a QEMU bug in which launching a PAPR-PEF guest will trigger an early
assert [2]. The fix is not merged upstream at the moment of this
posting, so you'll need to apply the patch yourself or build
QEMU using David Gibson's ppc-for-6.1 tree [3].
[1]
https://listman.redhat.com/archives/libvir-list/2021-May/msg00570.html
[2]
https://lists.gnu.org/archive/html/qemu-devel/2021-05/msg08491.html
[3]
https://gitlab.com/dgibson/qemu/-/tree/ppc-for-6.1
Daniel Henrique Barboza (5):
tests: Add QEMU and domain ppc64 capapbilities for qemu 6.1
qemu: add 'pef-guest' capability
conf, qemu: add 'papr-pef' launch security type
tests: add tests for 'papr-pef' support
docs/formatdomain.rst: add 'papr-pef' launchSecurity docs
docs/formatdomain.rst | 4 +
docs/schemas/domaincommon.rng | 1 +
src/conf/domain_conf.c | 3 +
src/conf/domain_conf.h | 1 +
src/qemu/qemu_capabilities.c | 2 +
src/qemu/qemu_capabilities.h | 1 +
src/qemu/qemu_command.c | 26 +
src/qemu/qemu_namespace.c | 1 +
src/qemu/qemu_process.c | 1 +
src/qemu/qemu_validate.c | 8 +
tests/domaincapsdata/qemu_6.1.0.ppc64.xml | 133 +
.../launch-security-papr-pef.xml | 22 +
tests/genericxml2xmltest.c | 1 +
.../caps_6.1.0.ppc64.replies | 30368 ++++++++++++++++
.../qemucapabilitiesdata/caps_6.1.0.ppc64.xml | 1175 +
...default-video-type-ppc64.ppc64-latest.args | 5 +-
...y-papr-pef-ignore-policy.ppc64-latest.args | 30 +
...launch-security-papr-pef-ignore-policy.xml | 19 +
...launch-security-papr-pef.ppc64-latest.args | 30 +
.../launch-security-papr-pef.xml | 16 +
...ault-cpu-kvm-pseries-2.7.ppc64-latest.args | 5 +-
...ault-cpu-kvm-pseries-3.1.ppc64-latest.args | 5 +-
...ault-cpu-kvm-pseries-4.2.ppc64-latest.args | 5 +-
...ault-cpu-tcg-pseries-2.7.ppc64-latest.args | 5 +-
...ault-cpu-tcg-pseries-3.1.ppc64-latest.args | 5 +-
...ault-cpu-tcg-pseries-4.2.ppc64-latest.args | 5 +-
.../ppc64-pseries-graphics.ppc64-latest.args | 7 +-
.../ppc64-pseries-headless.ppc64-latest.args | 7 +-
.../ppc64-tpmproxy-single.ppc64-latest.args | 5 +-
.../ppc64-tpmproxy-with-tpm.ppc64-latest.args | 5 +-
.../tpm-emulator-spapr.ppc64-latest.args | 5 +-
tests/qemuxml2argvtest.c | 3 +
32 files changed, 31871 insertions(+), 38 deletions(-)
create mode 100644 tests/domaincapsdata/qemu_6.1.0.ppc64.xml
create mode 100644 tests/genericxml2xmlindata/launch-security-papr-pef.xml
create mode 100644 tests/qemucapabilitiesdata/caps_6.1.0.ppc64.replies
create mode 100644 tests/qemucapabilitiesdata/caps_6.1.0.ppc64.xml
create mode 100644
tests/qemuxml2argvdata/launch-security-papr-pef-ignore-policy.ppc64-latest.args
create mode 100644 tests/qemuxml2argvdata/launch-security-papr-pef-ignore-policy.xml
create mode 100644 tests/qemuxml2argvdata/launch-security-papr-pef.ppc64-latest.args
create mode 100644 tests/qemuxml2argvdata/launch-security-papr-pef.xml
--
2.31.1