Messages in this thread | | | Date | Fri, 1 Jul 2022 12:10:18 +0200 | Subject | Re: [PATCH 1/2] s390/hwcaps: Add HWCAP_UV | From | Christian Borntraeger <> |
| |
Am 01.07.22 um 12:02 schrieb Steffen Eiden: > This patch adds a hardware capability for the Ultravisor. > This capability will be present if facility 158 is enabled. > > Signed-off-by: Steffen Eiden <seiden@linux.ibm.com> > --- > arch/s390/include/asm/elf.h | 2 ++ > arch/s390/kernel/processor.c | 5 +++++ > 2 files changed, 7 insertions(+) > > diff --git a/arch/s390/include/asm/elf.h b/arch/s390/include/asm/elf.h > index 70a30ae258b7..3a5e89ce4fd0 100644 > --- a/arch/s390/include/asm/elf.h > +++ b/arch/s390/include/asm/elf.h > @@ -115,6 +115,7 @@ enum { > HWCAP_NR_NNPA = 20, > HWCAP_NR_PCI_MIO = 21, > HWCAP_NR_SIE = 22, > + HWCAP_NR_UV = 23, > HWCAP_NR_MAX > };
question for Heiko, Vasily, Alexander. This certainly works. An alternative implementation would be to separate module_cpu_feature_match from HWCAP. (so uv would not be shown in /proc/cpuinfo and it would be seen in the aux vector). I would imagine that we might have more drivers in the future that depend on a facility but this facility is not really useful for userspace to know.
See arch/s390/include/asm/cpufeature.h * Restrict the set of exposed CPU features to ELF hardware capabilities for * now. Additional machine flags can be indicated by values larger than * MAX_ELF_HWCAP_FEATURES.
Any preference from your side?
> > @@ -142,6 +143,7 @@ enum { > #define HWCAP_NNPA BIT(HWCAP_NR_NNPA) > #define HWCAP_PCI_MIO BIT(HWCAP_NR_PCI_MIO) > #define HWCAP_SIE BIT(HWCAP_NR_SIE) > +#define HWCAP_UV BIT(HWCAP_NR_UV) > > /* > * These are used to set parameters in the core dumps. > diff --git a/arch/s390/kernel/processor.c b/arch/s390/kernel/processor.c > index aa0e0e7fc773..80ccd57a2b00 100644 > --- a/arch/s390/kernel/processor.c > +++ b/arch/s390/kernel/processor.c > @@ -141,6 +141,7 @@ static void show_cpu_summary(struct seq_file *m, void *v) > [HWCAP_NR_NNPA] = "nnpa", > [HWCAP_NR_PCI_MIO] = "pcimio", > [HWCAP_NR_SIE] = "sie", > + [HWCAP_NR_UV] = "uv", > }; > int i, cpu; > > @@ -249,6 +250,10 @@ static int __init setup_hwcaps(void) > if (sclp.has_sief2) > elf_hwcap |= HWCAP_SIE; > > + /* ultravisor-call (secure execution) */ > + if (test_facility(158)) > + elf_hwcap |= HWCAP_UV; > + > return 0; > } > arch_initcall(setup_hwcaps);
| |