Message ID | 20201202184122.26046-7-dbrazdil@google.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Opt-in always-on nVHE hypervisor | expand |
On Wed, Dec 02, 2020 at 06:41:02PM +0000, David Brazdil wrote: > Make it possible to retrieve a copy of the psci_0_1_function_ids struct. > This is useful for KVM if it is configured to intercept host's PSCI SMCs. > > Signed-off-by: David Brazdil <dbrazdil@google.com> Acked-by: Mark Rutland <mark.rutland@arm.com> ... just to check, does KVM snapshot which function IDs are valid, or do we want to add that state here too? That can be a follow-up if necessary. Thanks, Mark. > --- > drivers/firmware/psci/psci.c | 12 +++++------- > include/linux/psci.h | 9 +++++++++ > 2 files changed, 14 insertions(+), 7 deletions(-) > > diff --git a/drivers/firmware/psci/psci.c b/drivers/firmware/psci/psci.c > index 593fdd0e09a2..f5fc429cae3f 100644 > --- a/drivers/firmware/psci/psci.c > +++ b/drivers/firmware/psci/psci.c > @@ -58,15 +58,13 @@ typedef unsigned long (psci_fn)(unsigned long, unsigned long, > unsigned long, unsigned long); > static psci_fn *invoke_psci_fn; > > -struct psci_0_1_function_ids { > - u32 cpu_suspend; > - u32 cpu_on; > - u32 cpu_off; > - u32 migrate; > -}; > - > static struct psci_0_1_function_ids psci_0_1_function_ids; > > +struct psci_0_1_function_ids get_psci_0_1_function_ids(void) > +{ > + return psci_0_1_function_ids; > +} > + > #define PSCI_0_2_POWER_STATE_MASK \ > (PSCI_0_2_POWER_STATE_ID_MASK | \ > PSCI_0_2_POWER_STATE_TYPE_MASK | \ > diff --git a/include/linux/psci.h b/include/linux/psci.h > index 2a1bfb890e58..4ca0060a3fc4 100644 > --- a/include/linux/psci.h > +++ b/include/linux/psci.h > @@ -34,6 +34,15 @@ struct psci_operations { > > extern struct psci_operations psci_ops; > > +struct psci_0_1_function_ids { > + u32 cpu_suspend; > + u32 cpu_on; > + u32 cpu_off; > + u32 migrate; > +}; > + > +struct psci_0_1_function_ids get_psci_0_1_function_ids(void); > + > #if defined(CONFIG_ARM_PSCI_FW) > int __init psci_dt_init(void); > #else > -- > 2.29.2.454.gaff20da3a2-goog >
On Thu, Dec 03, 2020 at 10:47:12AM +0000, Mark Rutland wrote: > On Wed, Dec 02, 2020 at 06:41:02PM +0000, David Brazdil wrote: > > Make it possible to retrieve a copy of the psci_0_1_function_ids struct. > > This is useful for KVM if it is configured to intercept host's PSCI SMCs. > > > > Signed-off-by: David Brazdil <dbrazdil@google.com> > > Acked-by: Mark Rutland <mark.rutland@arm.com> > > ... just to check, does KVM snapshot which function IDs are valid, or do > we want to add that state here too? That can be a follow-up if > necessary. Ah, that's a good point. It doesn't, but can infer that from psci_ops.
diff --git a/drivers/firmware/psci/psci.c b/drivers/firmware/psci/psci.c index 593fdd0e09a2..f5fc429cae3f 100644 --- a/drivers/firmware/psci/psci.c +++ b/drivers/firmware/psci/psci.c @@ -58,15 +58,13 @@ typedef unsigned long (psci_fn)(unsigned long, unsigned long, unsigned long, unsigned long); static psci_fn *invoke_psci_fn; -struct psci_0_1_function_ids { - u32 cpu_suspend; - u32 cpu_on; - u32 cpu_off; - u32 migrate; -}; - static struct psci_0_1_function_ids psci_0_1_function_ids; +struct psci_0_1_function_ids get_psci_0_1_function_ids(void) +{ + return psci_0_1_function_ids; +} + #define PSCI_0_2_POWER_STATE_MASK \ (PSCI_0_2_POWER_STATE_ID_MASK | \ PSCI_0_2_POWER_STATE_TYPE_MASK | \ diff --git a/include/linux/psci.h b/include/linux/psci.h index 2a1bfb890e58..4ca0060a3fc4 100644 --- a/include/linux/psci.h +++ b/include/linux/psci.h @@ -34,6 +34,15 @@ struct psci_operations { extern struct psci_operations psci_ops; +struct psci_0_1_function_ids { + u32 cpu_suspend; + u32 cpu_on; + u32 cpu_off; + u32 migrate; +}; + +struct psci_0_1_function_ids get_psci_0_1_function_ids(void); + #if defined(CONFIG_ARM_PSCI_FW) int __init psci_dt_init(void); #else
Make it possible to retrieve a copy of the psci_0_1_function_ids struct. This is useful for KVM if it is configured to intercept host's PSCI SMCs. Signed-off-by: David Brazdil <dbrazdil@google.com> --- drivers/firmware/psci/psci.c | 12 +++++------- include/linux/psci.h | 9 +++++++++ 2 files changed, 14 insertions(+), 7 deletions(-)