From: "Nicholas Piggin" <npiggin@gmail.com>
To: "Harsh Prateek Bora" <harshpb@linux.ibm.com>, <qemu-ppc@nongnu.org>
Cc: <clegoate@redhat.com>, <mikey@neuling.org>,
<amachhiw@linux.vnet.ibm.com>, <vaibhav@linux.ibm.com>,
<sbhat@linux.ibm.com>, <danielhb413@gmail.com>,
<qemu-devel@nongnu.org>
Subject: Re: [PATCH v4 01/15] spapr: nested: register nested-hv api hcalls only for cap-nested-hv
Date: Tue, 27 Feb 2024 18:51:48 +1000 [thread overview]
Message-ID: <CZFQEX5BIYZ0.13FK4Y38CPV48@wheely> (raw)
In-Reply-To: <20240220083609.748325-2-harshpb@linux.ibm.com>
On Tue Feb 20, 2024 at 6:35 PM AEST, Harsh Prateek Bora wrote:
> Since cap-nested-hv is an optional capability, it makes sense to register
> api specfic hcalls only when respective capability is enabled. This
> requires to introduce a new API to unregister hypercalls to maintain
> sanity across guest reboot since caps are re-applied across reboots and
> re-registeration of hypercalls would hit assert otherwise.
>
> Signed-off-by: Harsh Prateek Bora <harshpb@linux.ibm.com>
> Reviewed-by: Nicholas Piggin <npiggin@gmail.com>
> ---
> include/hw/ppc/spapr.h | 3 +++
> include/hw/ppc/spapr_nested.h | 1 -
> hw/ppc/spapr_caps.c | 2 ++
> hw/ppc/spapr_hcall.c | 24 ++++++++++++++++++++++--
> hw/ppc/spapr_nested.c | 17 +++++++++++++++--
> 5 files changed, 42 insertions(+), 5 deletions(-)
>
> diff --git a/include/hw/ppc/spapr.h b/include/hw/ppc/spapr.h
> index e91791a1a9..b7ad2a0360 100644
> --- a/include/hw/ppc/spapr.h
> +++ b/include/hw/ppc/spapr.h
> @@ -631,6 +631,7 @@ typedef target_ulong (*spapr_hcall_fn)(PowerPCCPU *cpu, SpaprMachineState *sm,
> target_ulong *args);
>
> void spapr_register_hypercall(target_ulong opcode, spapr_hcall_fn fn);
> +void spapr_unregister_hypercall(target_ulong opcode);
> target_ulong spapr_hypercall(PowerPCCPU *cpu, target_ulong opcode,
> target_ulong *args);
>
> @@ -1025,5 +1026,7 @@ void spapr_vof_client_dt_finalize(SpaprMachineState *spapr, void *fdt);
>
> /* H_WATCHDOG */
> void spapr_watchdog_init(SpaprMachineState *spapr);
> +void spapr_register_nested_hv(void);
> +void spapr_unregister_nested_hv(void);
>
> #endif /* HW_SPAPR_H */
> diff --git a/include/hw/ppc/spapr_nested.h b/include/hw/ppc/spapr_nested.h
> index d312a5d61d..09d95182b2 100644
> --- a/include/hw/ppc/spapr_nested.h
> +++ b/include/hw/ppc/spapr_nested.h
> @@ -95,7 +95,6 @@ struct nested_ppc_state {
> int64_t tb_offset;
> };
>
> -void spapr_register_nested(void);
> void spapr_exit_nested(PowerPCCPU *cpu, int excp);
>
> #endif /* HW_SPAPR_NESTED_H */
> diff --git a/hw/ppc/spapr_caps.c b/hw/ppc/spapr_caps.c
> index e889244e52..f0c2f4de78 100644
> --- a/hw/ppc/spapr_caps.c
> +++ b/hw/ppc/spapr_caps.c
> @@ -487,6 +487,8 @@ static void cap_nested_kvm_hv_apply(SpaprMachineState *spapr,
> error_append_hint(errp, "Try appending -machine cap-nested-hv=off "
> "or use threads=1 with -smp\n");
> }
> + spapr_unregister_nested_hv(); /* reset across reboots */
> + spapr_register_nested_hv();
This looks a bit odd. And actually it also ends up registering them in
the SMT error case (which seems harmelss but a bit inconsistent).
I wonder whether you could make a spapr_nested_reset() function called
by spapr_machine_reset that would take care of
unregistering and reregistering nested hypercalls based on the caps that
were set.
Thanks,
Nick
next prev parent reply other threads:[~2024-02-27 8:52 UTC|newest]
Thread overview: 38+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-02-20 8:35 [PATCH v4 00/15] Nested PAPR API (KVM on PowerVM) Harsh Prateek Bora
2024-02-20 8:35 ` [PATCH v4 01/15] spapr: nested: register nested-hv api hcalls only for cap-nested-hv Harsh Prateek Bora
2024-02-27 8:51 ` Nicholas Piggin [this message]
2024-02-20 8:35 ` [PATCH v4 02/15] spapr: nested: move nested part of spapr_get_pate into spapr_nested.c Harsh Prateek Bora
2024-02-20 8:35 ` [PATCH v4 03/15] spapr: nested: Introduce SpaprMachineStateNested to store related info Harsh Prateek Bora
2024-02-20 8:35 ` [PATCH v4 04/15] spapr: nested: keep nested-hv related code restricted to its API Harsh Prateek Bora
2024-02-27 8:54 ` Nicholas Piggin
2024-02-27 9:45 ` Harsh Prateek Bora
2024-02-27 10:40 ` Nicholas Piggin
2024-02-20 8:35 ` [PATCH v4 05/15] spapr: nested: Document Nested PAPR API Harsh Prateek Bora
2024-02-27 9:29 ` Nicholas Piggin
2024-02-27 9:31 ` Harsh Prateek Bora
2024-02-27 10:39 ` Nicholas Piggin
2024-02-29 5:46 ` Harsh Prateek Bora
2024-02-20 8:36 ` [PATCH v4 06/15] spapr: nested: Introduce H_GUEST_[GET|SET]_CAPABILITIES hcalls Harsh Prateek Bora
2024-02-20 8:36 ` [PATCH v4 07/15] spapr: nested: Introduce H_GUEST_[CREATE|DELETE] hcalls Harsh Prateek Bora
2024-02-20 8:36 ` [PATCH v4 08/15] spapr: nested: Introduce H_GUEST_CREATE_VCPU hcall Harsh Prateek Bora
2024-02-27 9:51 ` Nicholas Piggin
2024-02-29 9:39 ` Harsh Prateek Bora
2024-02-20 8:36 ` [PATCH v4 09/15] spapr: nested: Extend nested_ppc_state for nested PAPR API Harsh Prateek Bora
2024-02-27 9:59 ` Nicholas Piggin
2024-02-29 9:42 ` Harsh Prateek Bora
2024-02-20 8:36 ` [PATCH v4 10/15] spapr: nested: Initialize the GSB elements lookup table Harsh Prateek Bora
2024-02-27 10:02 ` Nicholas Piggin
2024-02-29 10:29 ` Harsh Prateek Bora
2024-02-20 8:36 ` [PATCH v4 11/15] spapr: nested: Introduce H_GUEST_[GET|SET]_STATE hcalls Harsh Prateek Bora
2024-02-27 10:10 ` Nicholas Piggin
2024-03-05 8:19 ` Harsh Prateek Bora
2024-02-20 8:36 ` [PATCH v4 12/15] spapr: nested: Use correct source for parttbl info for nested PAPR API Harsh Prateek Bora
2024-02-27 10:16 ` Nicholas Piggin
2024-03-05 8:21 ` Harsh Prateek Bora
2024-02-20 8:36 ` [PATCH v4 13/15] spapr: nested: Introduce H_GUEST_RUN_VCPU hcall Harsh Prateek Bora
2024-02-20 8:36 ` [PATCH v4 14/15] spapr: nested: Introduce cap-nested-papr for Nested PAPR API Harsh Prateek Bora
2024-02-27 10:22 ` Nicholas Piggin
2024-03-05 8:24 ` Harsh Prateek Bora
2024-02-20 8:36 ` [PATCH v4 15/15] spapr: nested: Set the PCR when logical PVR is set Harsh Prateek Bora
2024-02-27 10:23 ` Nicholas Piggin
2024-03-05 8:26 ` 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=CZFQEX5BIYZ0.13FK4Y38CPV48@wheely \
--to=npiggin@gmail.com \
--cc=amachhiw@linux.vnet.ibm.com \
--cc=clegoate@redhat.com \
--cc=danielhb413@gmail.com \
--cc=harshpb@linux.ibm.com \
--cc=mikey@neuling.org \
--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 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.