lkml.org 
[lkml]   [2022]   [Jul]   [1]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
SubjectRe: [PATCH 1/2] s390/hwcaps: Add HWCAP_UV
From
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);

\
 
 \ /
  Last update: 2022-07-01 12:11    [W:0.048 / U:0.688 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site