From: Bharata B Rao <bharata@linux.ibm.com>
To: qemu-devel@nongnu.org
Cc: paulus@ozlabs.org, linuxram@us.ibm.com,
Bharata B Rao <bharata@linux.ibm.com>,
qemu-ppc@nongnu.org, david@gibson.dropbear.id.au
Subject: [PATCH v2 ppc-for-5.0 2/2] ppc/spapr: Support reboot of secure pseries guest
Date: Thu, 12 Dec 2019 11:20:59 +0530 [thread overview]
Message-ID: <20191212055059.9399-3-bharata@linux.ibm.com> (raw)
In-Reply-To: <20191212055059.9399-1-bharata@linux.ibm.com>
A pseries guest can be run as a secure guest on Ultravisor-enabled
POWER platforms. When such a secure guest is reset, we need to
release/reset a few resources both on ultravisor and hypervisor side.
This is achieved by invoking this new ioctl KVM_PPC_SVM_OFF from the
machine reset path.
As part of this ioctl, the secure guest is essentially transitioned
back to normal mode so that it can reboot like a regular guest and
become secure again.
This ioctl has no effect when invoked for a normal guest. If this ioctl
fails for a secure guest, the guest is terminated.
Signed-off-by: Bharata B Rao <bharata@linux.ibm.com>
---
hw/ppc/spapr.c | 15 +++++++++++++++
target/ppc/kvm.c | 7 +++++++
target/ppc/kvm_ppc.h | 6 ++++++
3 files changed, 28 insertions(+)
diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
index f11422fc41..25e1a3446e 100644
--- a/hw/ppc/spapr.c
+++ b/hw/ppc/spapr.c
@@ -1597,6 +1597,21 @@ static void spapr_machine_reset(MachineState *machine)
void *fdt;
int rc;
+ /*
+ * KVM_PPC_SVM_OFF ioctl can fail for secure guests, check and
+ * exit in that case. However check for -ENOTTY explicitly
+ * to ensure that we don't terminate normal guests that are
+ * running on kernels which don't support this ioctl.
+ *
+ * Also, this ioctl returns 0 for normal guests on kernels where
+ * this ioctl is supported.
+ */
+ rc = kvmppc_svm_off();
+ if (rc && rc != -ENOTTY) {
+ error_report("Reset of secure guest failed, exiting...");
+ exit(EXIT_FAILURE);
+ }
+
spapr_caps_apply(spapr);
first_ppc_cpu = POWERPC_CPU(first_cpu);
diff --git a/target/ppc/kvm.c b/target/ppc/kvm.c
index 7406d18945..1a86fa4f0c 100644
--- a/target/ppc/kvm.c
+++ b/target/ppc/kvm.c
@@ -2900,3 +2900,10 @@ void kvmppc_set_reg_tb_offset(PowerPCCPU *cpu, int64_t tb_offset)
kvm_set_one_reg(cs, KVM_REG_PPC_TB_OFFSET, &tb_offset);
}
}
+
+int kvmppc_svm_off(void)
+{
+ KVMState *s = KVM_STATE(current_machine->accelerator);
+
+ return kvm_vm_ioctl(s, KVM_PPC_SVM_OFF);
+}
diff --git a/target/ppc/kvm_ppc.h b/target/ppc/kvm_ppc.h
index 47b08a4030..5cc812e486 100644
--- a/target/ppc/kvm_ppc.h
+++ b/target/ppc/kvm_ppc.h
@@ -37,6 +37,7 @@ int kvmppc_booke_watchdog_enable(PowerPCCPU *cpu);
target_ulong kvmppc_configure_v3_mmu(PowerPCCPU *cpu,
bool radix, bool gtse,
uint64_t proc_tbl);
+int kvmppc_svm_off(void);
#ifndef CONFIG_USER_ONLY
bool kvmppc_spapr_use_multitce(void);
int kvmppc_spapr_enable_inkernel_multitce(void);
@@ -201,6 +202,11 @@ static inline target_ulong kvmppc_configure_v3_mmu(PowerPCCPU *cpu,
return 0;
}
+static inline int kvmppc_svm_off(void)
+{
+ return 0;
+}
+
static inline void kvmppc_set_reg_ppc_online(PowerPCCPU *cpu,
unsigned int online)
{
--
2.21.0
next prev parent reply other threads:[~2019-12-12 5:52 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-12-12 5:50 [PATCH v2 ppc-for-5.0 0/2] ppc/spapr: Support reboot of secure pseries guest Bharata B Rao
2019-12-12 5:50 ` [PATCH v2 ppc-for-5.0 1/2] linux-headers: Update Bharata B Rao
2019-12-12 5:50 ` Bharata B Rao [this message]
2019-12-12 7:34 ` [PATCH v2 ppc-for-5.0 2/2] ppc/spapr: Support reboot of secure pseries guest Cédric Le Goater
2019-12-12 8:53 ` Bharata B Rao
2019-12-12 12:32 ` Greg Kurz
2019-12-13 5:52 ` David Gibson
2019-12-12 12:27 ` Greg Kurz
2019-12-13 4:04 ` Bharata B Rao
2019-12-13 5:54 ` David Gibson
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20191212055059.9399-3-bharata@linux.ibm.com \
--to=bharata@linux.ibm.com \
--cc=david@gibson.dropbear.id.au \
--cc=linuxram@us.ibm.com \
--cc=paulus@ozlabs.org \
--cc=qemu-devel@nongnu.org \
--cc=qemu-ppc@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.