Hey Mark, On Thu, Nov 26, 2020 at 05:24:50PM +0000, Mark Rutland wrote: > On Thu, Nov 26, 2020 at 03:54:00PM +0000, David Brazdil wrote: > > Function IDs used by PSCI are configurable for v0.1 via DT/APCI. If the > > host is using PSCI v0.1, KVM's host PSCI proxy needs to use the same IDs. > > Expose the array holding the information with a read-only accessor. > > > > Signed-off-by: David Brazdil <dbrazdil@xxxxxxxxxx> > > --- > > drivers/firmware/psci/psci.c | 16 ++++++++-------- > > include/linux/psci.h | 10 ++++++++++ > > 2 files changed, 18 insertions(+), 8 deletions(-) > > > > diff --git a/drivers/firmware/psci/psci.c b/drivers/firmware/psci/psci.c > > index 213c68418a65..40609564595e 100644 > > --- a/drivers/firmware/psci/psci.c > > +++ b/drivers/firmware/psci/psci.c > > @@ -58,16 +58,16 @@ typedef unsigned long (psci_fn)(unsigned long, unsigned long, > > unsigned long, unsigned long); > > static psci_fn *invoke_psci_fn; > > > > -enum psci_function { > > - PSCI_FN_CPU_SUSPEND, > > - PSCI_FN_CPU_ON, > > - PSCI_FN_CPU_OFF, > > - PSCI_FN_MIGRATE, > > - PSCI_FN_MAX, > > -}; > > - > > static u32 psci_function_id[PSCI_FN_MAX]; > > > > +u32 psci_get_function_id(enum psci_function fn) > > +{ > > + if (WARN_ON_ONCE(fn < 0 || fn >= PSCI_FN_MAX)) > > + return 0; > > + > > + return psci_function_id[fn]; > > +} > > I'd really like if we could namespace this with a psci_0_1_* prefix > before we expose it outside of the PSCI code. I appreciate that's a > larger change, but I reckon we only need a couple of new patches: > > 1) Split the ops which consume the FN ids into separate psci_0_1_*() and > psci_0_2_*() variants, with a common __psci_*() helper that takes the > function ID as an argument. The 0_1 variants would read the function > ID from a variable, and the 0_2 variants would hard-code the id. > > 2) Replace the psci_function_id array with: > > struct psci_0_1_function_ids { > u32 suspend; > u32 cpu_on; > u32 cpu_off; > u32 migrate; > }; > > ... and remove enum psci_function entirely. > > 3) Add a helper which returns the entire psci_0_1_function_ids struct in > one go. No warnings necessary. > > Does that sound OK to you? Sure, sounds easy enough and 2) is in line with how I structured the handlers in KVM. Thanks, David