Re: [PATCH 1/2] s390/hwcaps: Add HWCAP_UV

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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@xxxxxxxxxxxxx>
---
  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);




[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Bugtraq]     [Linux OMAP]     [Linux MIPS]     [eCos]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux