You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
141 lines
4.3 KiB
141 lines
4.3 KiB
2 months ago
|
From cfb109b393e019398a52f66a5ff0e9581c841335 Mon Sep 17 00:00:00 2001
|
||
|
From: Xiaoyao Li <xiaoyao.li@intel.com>
|
||
|
Date: Thu, 29 Feb 2024 01:00:37 -0500
|
||
|
Subject: [PATCH 013/100] ppc/pef: switch to use
|
||
|
confidential_guest_kvm_init/reset()
|
||
|
|
||
|
RH-Author: Paolo Bonzini <pbonzini@redhat.com>
|
||
|
RH-MergeRequest: 245: SEV-SNP support
|
||
|
RH-Jira: RHEL-39544
|
||
|
RH-Acked-by: Thomas Huth <thuth@redhat.com>
|
||
|
RH-Acked-by: Bandan Das <bdas@redhat.com>
|
||
|
RH-Acked-by: Vitaly Kuznetsov <vkuznets@redhat.com>
|
||
|
RH-Commit: [13/91] e25c498fc79a4c8e22ca41d9cbd06e40b4cf1f11 (bonzini/rhel-qemu-kvm)
|
||
|
|
||
|
Use the unified interface to call confidential guest related kvm_init()
|
||
|
and kvm_reset(), to avoid exposing pef specific functions.
|
||
|
|
||
|
As a bonus, pef.h goes away since there is no direct call from sPAPR
|
||
|
board code to PEF code anymore.
|
||
|
|
||
|
Signed-off-by: Xiaoyao Li <xiaoyao.li@intel.com>
|
||
|
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
|
||
|
(cherry picked from commit 00a238b1a845fd5f0acd771664c5e184a63ed9b6)
|
||
|
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
|
||
|
---
|
||
|
hw/ppc/pef.c | 9 ++++++---
|
||
|
hw/ppc/spapr.c | 10 +++++++---
|
||
|
include/hw/ppc/pef.h | 17 -----------------
|
||
|
3 files changed, 13 insertions(+), 23 deletions(-)
|
||
|
delete mode 100644 include/hw/ppc/pef.h
|
||
|
|
||
|
diff --git a/hw/ppc/pef.c b/hw/ppc/pef.c
|
||
|
index d28ed3ba73..47553348b1 100644
|
||
|
--- a/hw/ppc/pef.c
|
||
|
+++ b/hw/ppc/pef.c
|
||
|
@@ -15,7 +15,6 @@
|
||
|
#include "sysemu/kvm.h"
|
||
|
#include "migration/blocker.h"
|
||
|
#include "exec/confidential-guest-support.h"
|
||
|
-#include "hw/ppc/pef.h"
|
||
|
|
||
|
#define TYPE_PEF_GUEST "pef-guest"
|
||
|
OBJECT_DECLARE_SIMPLE_TYPE(PefGuest, PEF_GUEST)
|
||
|
@@ -93,7 +92,7 @@ static int kvmppc_svm_off(Error **errp)
|
||
|
#endif
|
||
|
}
|
||
|
|
||
|
-int pef_kvm_init(ConfidentialGuestSupport *cgs, Error **errp)
|
||
|
+static int pef_kvm_init(ConfidentialGuestSupport *cgs, Error **errp)
|
||
|
{
|
||
|
if (!object_dynamic_cast(OBJECT(cgs), TYPE_PEF_GUEST)) {
|
||
|
return 0;
|
||
|
@@ -107,7 +106,7 @@ int pef_kvm_init(ConfidentialGuestSupport *cgs, Error **errp)
|
||
|
return kvmppc_svm_init(cgs, errp);
|
||
|
}
|
||
|
|
||
|
-int pef_kvm_reset(ConfidentialGuestSupport *cgs, Error **errp)
|
||
|
+static int pef_kvm_reset(ConfidentialGuestSupport *cgs, Error **errp)
|
||
|
{
|
||
|
if (!object_dynamic_cast(OBJECT(cgs), TYPE_PEF_GUEST)) {
|
||
|
return 0;
|
||
|
@@ -131,6 +130,10 @@ OBJECT_DEFINE_TYPE_WITH_INTERFACES(PefGuest,
|
||
|
|
||
|
static void pef_guest_class_init(ObjectClass *oc, void *data)
|
||
|
{
|
||
|
+ ConfidentialGuestSupportClass *klass = CONFIDENTIAL_GUEST_SUPPORT_CLASS(oc);
|
||
|
+
|
||
|
+ klass->kvm_init = pef_kvm_init;
|
||
|
+ klass->kvm_reset = pef_kvm_reset;
|
||
|
}
|
||
|
|
||
|
static void pef_guest_init(Object *obj)
|
||
|
diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
|
||
|
index a258d81846..6f6f0fd790 100644
|
||
|
--- a/hw/ppc/spapr.c
|
||
|
+++ b/hw/ppc/spapr.c
|
||
|
@@ -75,6 +75,7 @@
|
||
|
#include "hw/virtio/vhost-scsi-common.h"
|
||
|
|
||
|
#include "exec/ram_addr.h"
|
||
|
+#include "exec/confidential-guest-support.h"
|
||
|
#include "hw/usb.h"
|
||
|
#include "qemu/config-file.h"
|
||
|
#include "qemu/error-report.h"
|
||
|
@@ -87,7 +88,6 @@
|
||
|
#include "hw/ppc/spapr_tpm_proxy.h"
|
||
|
#include "hw/ppc/spapr_nvdimm.h"
|
||
|
#include "hw/ppc/spapr_numa.h"
|
||
|
-#include "hw/ppc/pef.h"
|
||
|
|
||
|
#include "monitor/monitor.h"
|
||
|
|
||
|
@@ -1715,7 +1715,9 @@ static void spapr_machine_reset(MachineState *machine, ShutdownCause reason)
|
||
|
qemu_guest_getrandom_nofail(spapr->fdt_rng_seed, 32);
|
||
|
}
|
||
|
|
||
|
- pef_kvm_reset(machine->cgs, &error_fatal);
|
||
|
+ if (machine->cgs) {
|
||
|
+ confidential_guest_kvm_reset(machine->cgs, &error_fatal);
|
||
|
+ }
|
||
|
spapr_caps_apply(spapr);
|
||
|
spapr_nested_reset(spapr);
|
||
|
if (spapr->svm_allowed) {
|
||
|
@@ -2844,7 +2846,9 @@ static void spapr_machine_init(MachineState *machine)
|
||
|
/*
|
||
|
* if Secure VM (PEF) support is configured, then initialize it
|
||
|
*/
|
||
|
- pef_kvm_init(machine->cgs, &error_fatal);
|
||
|
+ if (machine->cgs) {
|
||
|
+ confidential_guest_kvm_init(machine->cgs, &error_fatal);
|
||
|
+ }
|
||
|
|
||
|
msi_nonbroken = true;
|
||
|
|
||
|
diff --git a/include/hw/ppc/pef.h b/include/hw/ppc/pef.h
|
||
|
deleted file mode 100644
|
||
|
index 707dbe524c..0000000000
|
||
|
--- a/include/hw/ppc/pef.h
|
||
|
+++ /dev/null
|
||
|
@@ -1,17 +0,0 @@
|
||
|
-/*
|
||
|
- * PEF (Protected Execution Facility) for POWER support
|
||
|
- *
|
||
|
- * Copyright Red Hat.
|
||
|
- *
|
||
|
- * This work is licensed under the terms of the GNU GPL, version 2 or later.
|
||
|
- * See the COPYING file in the top-level directory.
|
||
|
- *
|
||
|
- */
|
||
|
-
|
||
|
-#ifndef HW_PPC_PEF_H
|
||
|
-#define HW_PPC_PEF_H
|
||
|
-
|
||
|
-int pef_kvm_init(ConfidentialGuestSupport *cgs, Error **errp);
|
||
|
-int pef_kvm_reset(ConfidentialGuestSupport *cgs, Error **errp);
|
||
|
-
|
||
|
-#endif /* HW_PPC_PEF_H */
|
||
|
--
|
||
|
2.39.3
|
||
|
|