From: Harsh Prateek Bora <harshpb@linux.ibm.com>
To: npiggin@gmail.com, danielhb413@gmail.com, qemu-ppc@nongnu.org
Cc: qemu-devel@nongnu.org, mikey@neuling.org, vaibhav@linux.ibm.com,
jniethe5@gmail.com, sbhat@linux.ibm.com,
kconsul@linux.vnet.ibm.com
Subject: [PATCH RESEND 06/15] ppc: spapr: Implement nested PAPR hcall - H_GUEST_GET_CAPABILITIES
Date: Wed, 6 Sep 2023 10:03:24 +0530 [thread overview]
Message-ID: <20230906043333.448244-7-harshpb@linux.ibm.com> (raw)
In-Reply-To: <20230906043333.448244-1-harshpb@linux.ibm.com>
This patch implements nested PAPR hcall H_GUEST_GET_CAPABILITIES and
also enables registration of nested PAPR hcalls whenever an L0 is
launched with cap-nested-papr=true. The common registration routine
shall be used by future patches for registration of related hcall
support
being added. This hcall is used by L1 kernel to get the set of guest
capabilities that are supported by L0 (Qemu TCG).
Signed-off-by: Michael Neuling <mikey@neuling.org>
Signed-off-by: Harsh Prateek Bora <harshpb@linux.ibm.com>
---
hw/ppc/spapr_caps.c | 1 +
hw/ppc/spapr_nested.c | 35 +++++++++++++++++++++++++++++++++++
include/hw/ppc/spapr_nested.h | 6 ++++++
3 files changed, 42 insertions(+)
diff --git a/hw/ppc/spapr_caps.c b/hw/ppc/spapr_caps.c
index d3b9f107aa..cbe53a79ec 100644
--- a/hw/ppc/spapr_caps.c
+++ b/hw/ppc/spapr_caps.c
@@ -511,6 +511,7 @@ static void cap_nested_papr_apply(SpaprMachineState *spapr,
return;
}
spapr->nested.api = NESTED_API_PAPR;
+ spapr_register_nested_phyp();
} else if (kvm_enabled()) {
/*
* this gets executed in L1 qemu when L2 is launched,
diff --git a/hw/ppc/spapr_nested.c b/hw/ppc/spapr_nested.c
index a669470f1a..37f3a49be2 100644
--- a/hw/ppc/spapr_nested.c
+++ b/hw/ppc/spapr_nested.c
@@ -6,6 +6,7 @@
#include "hw/ppc/spapr.h"
#include "hw/ppc/spapr_cpu_core.h"
#include "hw/ppc/spapr_nested.h"
+#include "cpu-models.h"
#ifdef CONFIG_TCG
#define PRTS_MASK 0x1f
@@ -375,6 +376,29 @@ void spapr_exit_nested(PowerPCCPU *cpu, int excp)
address_space_unmap(CPU(cpu)->as, regs, len, len, true);
}
+static target_ulong h_guest_get_capabilities(PowerPCCPU *cpu,
+ SpaprMachineState *spapr,
+ target_ulong opcode,
+ target_ulong *args)
+{
+ CPUPPCState *env = &cpu->env;
+ target_ulong flags = args[0];
+
+ if (flags) { /* don't handle any flags capabilities for now */
+ return H_PARAMETER;
+ }
+
+ if ((env->spr[SPR_PVR] & CPU_POWERPC_POWER_SERVER_MASK) ==
+ (CPU_POWERPC_POWER9_BASE))
+ env->gpr[4] = H_GUEST_CAPABILITIES_P9_MODE;
+
+ if ((env->spr[SPR_PVR] & CPU_POWERPC_POWER_SERVER_MASK) ==
+ (CPU_POWERPC_POWER10_BASE))
+ env->gpr[4] = H_GUEST_CAPABILITIES_P10_MODE;
+
+ return H_SUCCESS;
+}
+
void spapr_register_nested(void)
{
spapr_register_hypercall(KVMPPC_H_SET_PARTITION_TABLE, h_set_ptbl);
@@ -382,6 +406,12 @@ void spapr_register_nested(void)
spapr_register_hypercall(KVMPPC_H_TLB_INVALIDATE, h_tlb_invalidate);
spapr_register_hypercall(KVMPPC_H_COPY_TOFROM_GUEST, h_copy_tofrom_guest);
}
+
+void spapr_register_nested_phyp(void)
+{
+ spapr_register_hypercall(H_GUEST_GET_CAPABILITIES, h_guest_get_capabilities);
+}
+
#else
void spapr_exit_nested(PowerPCCPU *cpu, int excp)
{
@@ -392,4 +422,9 @@ void spapr_register_nested(void)
{
/* DO NOTHING */
}
+
+void spapr_register_nested_phyp(void)
+{
+ /* DO NOTHING */
+}
#endif
diff --git a/include/hw/ppc/spapr_nested.h b/include/hw/ppc/spapr_nested.h
index f8db31075b..ce198e9f70 100644
--- a/include/hw/ppc/spapr_nested.h
+++ b/include/hw/ppc/spapr_nested.h
@@ -189,6 +189,11 @@
/* End of list of Guest State Buffer Element IDs */
#define GSB_LAST GSB_VCPU_SPR_ASDR
+/* Bit masks to be used in nested PAPR API */
+#define H_GUEST_CAPABILITIES_COPY_MEM 0x8000000000000000
+#define H_GUEST_CAPABILITIES_P9_MODE 0x4000000000000000
+#define H_GUEST_CAPABILITIES_P10_MODE 0x2000000000000000
+
typedef struct SpaprMachineStateNestedGuest {
unsigned long vcpus;
struct SpaprMachineStateNestedGuestVcpu *vcpu;
@@ -331,6 +336,7 @@ struct nested_ppc_state {
};
void spapr_register_nested(void);
+void spapr_register_nested_phyp(void);
void spapr_exit_nested(PowerPCCPU *cpu, int excp);
#endif /* HW_SPAPR_NESTED_H */
--
2.39.3
next prev parent reply other threads:[~2023-09-06 5:02 UTC|newest]
Thread overview: 47+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-09-06 4:33 [PATCH 00/15] Nested PAPR API (KVM on PowerVM) Harsh Prateek Bora
2023-09-06 4:33 ` [PATCH RESEND 01/15] ppc: spapr: Introduce Nested PAPR API related macros Harsh Prateek Bora
2023-09-06 23:48 ` Nicholas Piggin
2023-09-11 6:21 ` Harsh Prateek Bora
2023-09-06 4:33 ` [PATCH RESEND 02/15] ppc: spapr: Add new/extend structs to support Nested PAPR API Harsh Prateek Bora
2023-09-07 1:06 ` Nicholas Piggin
2023-09-11 6:47 ` Harsh Prateek Bora
2023-09-06 4:33 ` [PATCH RESEND 03/15] ppc: spapr: Use SpaprMachineStateNested's ptcr instead of nested_ptcr Harsh Prateek Bora
2023-09-07 1:13 ` Nicholas Piggin
2023-09-11 7:24 ` Harsh Prateek Bora
2023-09-06 4:33 ` [PATCH RESEND 04/15] ppc: spapr: Start using nested.api for nested kvm-hv api Harsh Prateek Bora
2023-09-07 1:35 ` Nicholas Piggin
2023-09-11 8:18 ` Harsh Prateek Bora
2023-09-06 4:33 ` [PATCH RESEND 05/15] ppc: spapr: Introduce cap-nested-papr for nested PAPR API Harsh Prateek Bora
2023-09-07 1:49 ` Nicholas Piggin
2023-09-19 9:49 ` Harsh Prateek Bora
2023-09-07 1:52 ` Nicholas Piggin
2023-09-06 4:33 ` Harsh Prateek Bora [this message]
2023-09-07 2:02 ` [PATCH RESEND 06/15] ppc: spapr: Implement nested PAPR hcall - H_GUEST_GET_CAPABILITIES Nicholas Piggin
2023-09-19 10:48 ` Harsh Prateek Bora
2023-10-03 8:10 ` Cédric Le Goater
2023-09-06 4:33 ` [PATCH RESEND 07/15] ppc: spapr: Implement nested PAPR hcall - H_GUEST_SET_CAPABILITIES Harsh Prateek Bora
2023-09-07 2:09 ` Nicholas Piggin
2023-10-03 4:59 ` Harsh Prateek Bora
2023-09-06 4:33 ` [PATCH RESEND 08/15] ppc: spapr: Implement nested PAPR hcall - H_GUEST_CREATE Harsh Prateek Bora
2023-09-07 2:28 ` Nicholas Piggin
2023-10-03 7:57 ` Harsh Prateek Bora
2023-09-06 4:33 ` [PATCH RESEND 09/15] ppc: spapr: Implement nested PAPR hcall - H_GUEST_CREATE_VCPU Harsh Prateek Bora
2023-09-07 2:49 ` Nicholas Piggin
2023-10-04 4:49 ` Harsh Prateek Bora
2023-09-06 4:33 ` [PATCH RESEND 10/15] ppc: spapr: Initialize the GSB Elements lookup table Harsh Prateek Bora
2023-09-07 3:01 ` Nicholas Piggin
2023-10-04 9:27 ` Harsh Prateek Bora
2023-10-04 9:42 ` Harsh Prateek Bora
2023-09-06 4:33 ` [PATCH RESEND 11/15] ppc: spapr: Implement nested PAPR hcall - H_GUEST_[GET|SET]_STATE Harsh Prateek Bora
2023-09-07 3:30 ` Nicholas Piggin
2023-10-09 8:23 ` Harsh Prateek Bora
2023-09-06 4:33 ` [PATCH RESEND 12/15] ppc: spapr: Use correct source for parttbl info for nested PAPR API Harsh Prateek Bora
2023-09-06 4:33 ` [PATCH RESEND 13/15] ppc: spapr: Implement nested PAPR hcall - H_GUEST_RUN_VCPU Harsh Prateek Bora
2023-09-07 3:55 ` Nicholas Piggin
2023-10-12 10:23 ` Harsh Prateek Bora
2023-09-06 4:33 ` [PATCH RESEND 14/15] ppc: spapr: Implement nested PAPR hcall - H_GUEST_DELETE Harsh Prateek Bora
2023-09-07 2:31 ` Nicholas Piggin
2023-10-03 8:01 ` Harsh Prateek Bora
2023-09-06 4:33 ` [PATCH RESEND 15/15] ppc: spapr: Document Nested PAPR API Harsh Prateek Bora
2023-09-07 3:56 ` Nicholas Piggin
2023-10-12 10:25 ` Harsh Prateek Bora
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=20230906043333.448244-7-harshpb@linux.ibm.com \
--to=harshpb@linux.ibm.com \
--cc=danielhb413@gmail.com \
--cc=jniethe5@gmail.com \
--cc=kconsul@linux.vnet.ibm.com \
--cc=mikey@neuling.org \
--cc=npiggin@gmail.com \
--cc=qemu-devel@nongnu.org \
--cc=qemu-ppc@nongnu.org \
--cc=sbhat@linux.ibm.com \
--cc=vaibhav@linux.ibm.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).