From mboxrd@z Thu Jan 1 00:00:00 1970 From: janani Date: Mon, 08 Jul 2019 17:40:06 +0000 Subject: Re: [PATCH v4 2/8] powerpc: Introduce FW_FEATURE_ULTRAVISOR Message-Id: List-Id: References: <20190628200825.31049-1-cclaudio@linux.ibm.com> <20190628200825.31049-3-cclaudio@linux.ibm.com> In-Reply-To: <20190628200825.31049-3-cclaudio@linux.ibm.com> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: Claudio Carvalho Cc: Madhavan Srinivasan , Michael Anderson , Ram Pai , kvm-ppc@vger.kernel.org, Bharata B Rao , linuxppc-dev@ozlabs.org, Ryan Grimm , Sukadev Bhattiprolu , Thiago Bauermann , Anshuman Khandual On 2019-06-28 15:08, Claudio Carvalho wrote: > This feature tells if the ultravisor firmware is available to handle > ucalls. > > Signed-off-by: Claudio Carvalho > [ Device node name to "ibm,ultravisor" ] > Signed-off-by: Michael Anderson Reviewed-by: Janani Janakiraman > --- > arch/powerpc/include/asm/firmware.h | 5 +++-- > arch/powerpc/include/asm/ultravisor.h | 15 +++++++++++++++ > arch/powerpc/kernel/Makefile | 1 + > arch/powerpc/kernel/prom.c | 4 ++++ > arch/powerpc/kernel/ultravisor.c | 24 ++++++++++++++++++++++++ > 5 files changed, 47 insertions(+), 2 deletions(-) > create mode 100644 arch/powerpc/include/asm/ultravisor.h > create mode 100644 arch/powerpc/kernel/ultravisor.c > > diff --git a/arch/powerpc/include/asm/firmware.h > b/arch/powerpc/include/asm/firmware.h > index 00bc42d95679..43b48c4d3ca9 100644 > --- a/arch/powerpc/include/asm/firmware.h > +++ b/arch/powerpc/include/asm/firmware.h > @@ -54,6 +54,7 @@ > #define FW_FEATURE_DRC_INFO ASM_CONST(0x0000000800000000) > #define FW_FEATURE_BLOCK_REMOVE ASM_CONST(0x0000001000000000) > #define FW_FEATURE_PAPR_SCM ASM_CONST(0x0000002000000000) > +#define FW_FEATURE_ULTRAVISOR ASM_CONST(0x0000004000000000) > > #ifndef __ASSEMBLY__ > > @@ -72,9 +73,9 @@ enum { > FW_FEATURE_TYPE1_AFFINITY | FW_FEATURE_PRRN | > FW_FEATURE_HPT_RESIZE | FW_FEATURE_DRMEM_V2 | > FW_FEATURE_DRC_INFO | FW_FEATURE_BLOCK_REMOVE | > - FW_FEATURE_PAPR_SCM, > + FW_FEATURE_PAPR_SCM | FW_FEATURE_ULTRAVISOR, > FW_FEATURE_PSERIES_ALWAYS = 0, > - FW_FEATURE_POWERNV_POSSIBLE = FW_FEATURE_OPAL, > + FW_FEATURE_POWERNV_POSSIBLE = FW_FEATURE_OPAL | > FW_FEATURE_ULTRAVISOR, > FW_FEATURE_POWERNV_ALWAYS = 0, > FW_FEATURE_PS3_POSSIBLE = FW_FEATURE_LPAR | FW_FEATURE_PS3_LV1, > FW_FEATURE_PS3_ALWAYS = FW_FEATURE_LPAR | FW_FEATURE_PS3_LV1, > diff --git a/arch/powerpc/include/asm/ultravisor.h > b/arch/powerpc/include/asm/ultravisor.h > new file mode 100644 > index 000000000000..e5009b0d84ea > --- /dev/null > +++ b/arch/powerpc/include/asm/ultravisor.h > @@ -0,0 +1,15 @@ > +/* SPDX-License-Identifier: GPL-2.0 */ > +/* > + * Ultravisor definitions > + * > + * Copyright 2019, IBM Corporation. > + * > + */ > +#ifndef _ASM_POWERPC_ULTRAVISOR_H > +#define _ASM_POWERPC_ULTRAVISOR_H > + > +/* Internal functions */ > +extern int early_init_dt_scan_ultravisor(unsigned long node, const > char *uname, > + int depth, void *data); > + > +#endif /* _ASM_POWERPC_ULTRAVISOR_H */ > diff --git a/arch/powerpc/kernel/Makefile > b/arch/powerpc/kernel/Makefile > index 0ea6c4aa3a20..f0caa302c8c0 100644 > --- a/arch/powerpc/kernel/Makefile > +++ b/arch/powerpc/kernel/Makefile > @@ -154,6 +154,7 @@ endif > > obj-$(CONFIG_EPAPR_PARAVIRT) += epapr_paravirt.o epapr_hcalls.o > obj-$(CONFIG_KVM_GUEST) += kvm.o kvm_emul.o > +obj-$(CONFIG_PPC_POWERNV) += ultravisor.o > > # Disable GCOV, KCOV & sanitizers in odd or sensitive code > GCOV_PROFILE_prom_init.o := n > diff --git a/arch/powerpc/kernel/prom.c b/arch/powerpc/kernel/prom.c > index 4221527b082f..67a2c1b39252 100644 > --- a/arch/powerpc/kernel/prom.c > +++ b/arch/powerpc/kernel/prom.c > @@ -59,6 +59,7 @@ > #include > #include > #include > +#include > > #include > > @@ -706,6 +707,9 @@ void __init early_init_devtree(void *params) > #ifdef CONFIG_PPC_POWERNV > /* Some machines might need OPAL info for debugging, grab it now. */ > of_scan_flat_dt(early_init_dt_scan_opal, NULL); > + > + /* Scan tree for ultravisor feature */ > + of_scan_flat_dt(early_init_dt_scan_ultravisor, NULL); > #endif > > #ifdef CONFIG_FA_DUMP > diff --git a/arch/powerpc/kernel/ultravisor.c > b/arch/powerpc/kernel/ultravisor.c > new file mode 100644 > index 000000000000..dc6021f63c97 > --- /dev/null > +++ b/arch/powerpc/kernel/ultravisor.c > @@ -0,0 +1,24 @@ > +// SPDX-License-Identifier: GPL-2.0 > +/* > + * Ultravisor high level interfaces > + * > + * Copyright 2019, IBM Corporation. > + * > + */ > +#include > +#include > +#include > + > +#include > +#include > + > +int __init early_init_dt_scan_ultravisor(unsigned long node, const > char *uname, > + int depth, void *data) > +{ > + if (depth != 1 || strcmp(uname, "ibm,ultravisor") != 0) > + return 0; > + > + powerpc_firmware_features |= FW_FEATURE_ULTRAVISOR; > + pr_debug("Ultravisor detected!\n"); > + return 1; > +}