All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v3] selftests: x86: skip the tests if prerequisites aren't fulfilled
@ 2024-03-27 11:17 Muhammad Usama Anjum
  2024-03-28 18:42 ` Shuah Khan
  2024-03-29  7:51 ` [tip: x86/cpu] x86/selftests: Skip " tip-bot2 for Muhammad Usama Anjum
  0 siblings, 2 replies; 6+ messages in thread
From: Muhammad Usama Anjum @ 2024-03-27 11:17 UTC (permalink / raw)
  To: Shuah Khan, Muhammad Usama Anjum, Chang S. Bae,
	Kirill A. Shutemov, Binbin Wu, angquan yu, Ingo Molnar
  Cc: kernel, linux-kselftest, linux-kernel

Skip instead of failing when prerequisite conditions aren't fulfilled,
such as invalid xstate values etc. This patch would make the tests show
as skip when run by:
  make -C tools/testing/selftests/ TARGETS=x86 run_tests

  ...
  # timeout set to 45
  # selftests: x86: amx_64
  # # xstate cpuid: invalid tile data size/offset: 0/0
  ok 42 selftests: x86: amx_64 # SKIP
  # timeout set to 45
  # selftests: x86: lam_64
  # # Unsupported LAM feature!
  ok 43 selftests: x86: lam_64 # SKIP
  ...

In amx test, Move away from check_cpuid_xsave() and start using
arch_prctl() to find out if amx support is present or not. In the
kernels where amx isn't present, arch_prctl returns -EINVAL. Hence it is
backward compatible.

Reviewed-by: Chang S. Bae <chang.seok.bae@intel.com>
Acked-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Reviewed-by: Binbin Wu <binbin.wu@linux.intel.com>
Signed-off-by: Muhammad Usama Anjum <usama.anjum@collabora.com>
---
Changes since v2:
- Update the changelog

Changes since v1:
- Use arch_prctl to check if amx is supported
---
 tools/testing/selftests/x86/amx.c | 27 ++++++++++-----------------
 tools/testing/selftests/x86/lam.c |  2 +-
 2 files changed, 11 insertions(+), 18 deletions(-)

diff --git a/tools/testing/selftests/x86/amx.c b/tools/testing/selftests/x86/amx.c
index d884fd69dd510..95aad6d8849be 100644
--- a/tools/testing/selftests/x86/amx.c
+++ b/tools/testing/selftests/x86/amx.c
@@ -103,21 +103,6 @@ static void clearhandler(int sig)
 
 #define CPUID_LEAF1_ECX_XSAVE_MASK	(1 << 26)
 #define CPUID_LEAF1_ECX_OSXSAVE_MASK	(1 << 27)
-static inline void check_cpuid_xsave(void)
-{
-	uint32_t eax, ebx, ecx, edx;
-
-	/*
-	 * CPUID.1:ECX.XSAVE[bit 26] enumerates general
-	 * support for the XSAVE feature set, including
-	 * XGETBV.
-	 */
-	__cpuid_count(1, 0, eax, ebx, ecx, edx);
-	if (!(ecx & CPUID_LEAF1_ECX_XSAVE_MASK))
-		fatal_error("cpuid: no CPU xsave support");
-	if (!(ecx & CPUID_LEAF1_ECX_OSXSAVE_MASK))
-		fatal_error("cpuid: no OS xsave support");
-}
 
 static uint32_t xbuf_size;
 
@@ -350,6 +335,7 @@ enum expected_result { FAIL_EXPECTED, SUCCESS_EXPECTED };
 
 /* arch_prctl() and sigaltstack() test */
 
+#define ARCH_GET_XCOMP_SUPP	0x1021
 #define ARCH_GET_XCOMP_PERM	0x1022
 #define ARCH_REQ_XCOMP_PERM	0x1023
 
@@ -928,8 +914,15 @@ static void test_ptrace(void)
 
 int main(void)
 {
-	/* Check hardware availability at first */
-	check_cpuid_xsave();
+	unsigned long features;
+	long rc;
+
+	rc = syscall(SYS_arch_prctl, ARCH_GET_XCOMP_SUPP, &features);
+	if (rc || (features & XFEATURE_MASK_XTILE) != XFEATURE_MASK_XTILE) {
+		ksft_print_msg("no AMX support\n");
+		return KSFT_SKIP;
+	}
+
 	check_cpuid_xtiledata();
 
 	init_stashed_xsave();
diff --git a/tools/testing/selftests/x86/lam.c b/tools/testing/selftests/x86/lam.c
index 215b8150b7cca..c0f016f45ee17 100644
--- a/tools/testing/selftests/x86/lam.c
+++ b/tools/testing/selftests/x86/lam.c
@@ -1183,7 +1183,7 @@ int main(int argc, char **argv)
 
 	if (!cpu_has_lam()) {
 		ksft_print_msg("Unsupported LAM feature!\n");
-		return -1;
+		return KSFT_SKIP;
 	}
 
 	while ((c = getopt(argc, argv, "ht:")) != -1) {
-- 
2.39.2


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [PATCH v3] selftests: x86: skip the tests if prerequisites aren't fulfilled
  2024-03-27 11:17 [PATCH v3] selftests: x86: skip the tests if prerequisites aren't fulfilled Muhammad Usama Anjum
@ 2024-03-28 18:42 ` Shuah Khan
  2024-03-29  7:36   ` Ingo Molnar
  2024-03-29  7:51 ` [tip: x86/cpu] x86/selftests: Skip " tip-bot2 for Muhammad Usama Anjum
  1 sibling, 1 reply; 6+ messages in thread
From: Shuah Khan @ 2024-03-28 18:42 UTC (permalink / raw)
  To: Muhammad Usama Anjum, Shuah Khan, Chang S. Bae,
	Kirill A. Shutemov, Binbin Wu, angquan yu, Ingo Molnar
  Cc: kernel, linux-kselftest, linux-kernel, Shuah Khan

On 3/27/24 05:17, Muhammad Usama Anjum wrote:
> Skip instead of failing when prerequisite conditions aren't fulfilled,
> such as invalid xstate values etc. This patch would make the tests show
> as skip when run by:
>    make -C tools/testing/selftests/ TARGETS=x86 run_tests
> 
>    ...
>    # timeout set to 45
>    # selftests: x86: amx_64
>    # # xstate cpuid: invalid tile data size/offset: 0/0
>    ok 42 selftests: x86: amx_64 # SKIP
>    # timeout set to 45
>    # selftests: x86: lam_64
>    # # Unsupported LAM feature!
>    ok 43 selftests: x86: lam_64 # SKIP
>    ...
> 
> In amx test, Move away from check_cpuid_xsave() and start using
> arch_prctl() to find out if amx support is present or not. In the
> kernels where amx isn't present, arch_prctl returns -EINVAL. Hence it is
> backward compatible.
> 
> Reviewed-by: Chang S. Bae <chang.seok.bae@intel.com>
> Acked-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
> Reviewed-by: Binbin Wu <binbin.wu@linux.intel.com>
> Signed-off-by: Muhammad Usama Anjum <usama.anjum@collabora.com>
> ---
> Changes since v2:
> - Update the changelog
> 

Thank you - applied to linux-kselftest next for 6.10-rc1

thanks,
-- Shuah


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH v3] selftests: x86: skip the tests if prerequisites aren't fulfilled
  2024-03-28 18:42 ` Shuah Khan
@ 2024-03-29  7:36   ` Ingo Molnar
  2024-03-29 15:01     ` Shuah Khan
  0 siblings, 1 reply; 6+ messages in thread
From: Ingo Molnar @ 2024-03-29  7:36 UTC (permalink / raw)
  To: Shuah Khan
  Cc: Muhammad Usama Anjum, Shuah Khan, Chang S. Bae,
	Kirill A. Shutemov, Binbin Wu, angquan yu, kernel,
	linux-kselftest, linux-kernel


* Shuah Khan <skhan@linuxfoundation.org> wrote:

> On 3/27/24 05:17, Muhammad Usama Anjum wrote:
> > Skip instead of failing when prerequisite conditions aren't fulfilled,
> > such as invalid xstate values etc. This patch would make the tests show
> > as skip when run by:
> >    make -C tools/testing/selftests/ TARGETS=x86 run_tests
> > 
> >    ...
> >    # timeout set to 45
> >    # selftests: x86: amx_64
> >    # # xstate cpuid: invalid tile data size/offset: 0/0
> >    ok 42 selftests: x86: amx_64 # SKIP
> >    # timeout set to 45
> >    # selftests: x86: lam_64
> >    # # Unsupported LAM feature!
> >    ok 43 selftests: x86: lam_64 # SKIP
> >    ...
> > 
> > In amx test, Move away from check_cpuid_xsave() and start using
> > arch_prctl() to find out if amx support is present or not. In the
> > kernels where amx isn't present, arch_prctl returns -EINVAL. Hence it is
> > backward compatible.
> > 
> > Reviewed-by: Chang S. Bae <chang.seok.bae@intel.com>
> > Acked-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
> > Reviewed-by: Binbin Wu <binbin.wu@linux.intel.com>
> > Signed-off-by: Muhammad Usama Anjum <usama.anjum@collabora.com>
> > ---
> > Changes since v2:
> > - Update the changelog
> > 
> 
> Thank you - applied to linux-kselftest next for 6.10-rc1

Please don't, I've applied the patch to tip:x86/cpu with a tidied up 
changelog.

Thanks,

	Ingo

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [tip: x86/cpu] x86/selftests: Skip the tests if prerequisites aren't fulfilled
  2024-03-27 11:17 [PATCH v3] selftests: x86: skip the tests if prerequisites aren't fulfilled Muhammad Usama Anjum
  2024-03-28 18:42 ` Shuah Khan
@ 2024-03-29  7:51 ` tip-bot2 for Muhammad Usama Anjum
  1 sibling, 0 replies; 6+ messages in thread
From: tip-bot2 for Muhammad Usama Anjum @ 2024-03-29  7:51 UTC (permalink / raw)
  To: linux-tip-commits
  Cc: Muhammad Usama Anjum, Ingo Molnar, Chang S. Bae, Binbin Wu,
	Kirill A. Shutemov, x86, linux-kernel

The following commit has been merged into the x86/cpu branch of tip:

Commit-ID:     99c84311e35f9399bdce666f6306a048e2a5b404
Gitweb:        https://git.kernel.org/tip/99c84311e35f9399bdce666f6306a048e2a5b404
Author:        Muhammad Usama Anjum <usama.anjum@collabora.com>
AuthorDate:    Wed, 27 Mar 2024 16:17:17 +05:00
Committer:     Ingo Molnar <mingo@kernel.org>
CommitterDate: Fri, 29 Mar 2024 08:33:40 +01:00

x86/selftests: Skip the tests if prerequisites aren't fulfilled

Skip instead of failing when prerequisite conditions aren't fulfilled,
such as invalid xstate values etc.

Make the tests show as 'SKIP' when run:

  make -C tools/testing/selftests/ TARGETS=x86 run_tests

  ...
  # timeout set to 45
  # selftests: x86: amx_64
  # # xstate cpuid: invalid tile data size/offset: 0/0
  ok 42 selftests: x86: amx_64 # SKIP
  # timeout set to 45
  # selftests: x86: lam_64
  # # Unsupported LAM feature!
  ok 43 selftests: x86: lam_64 # SKIP
  ...

In the AMX test, Move away from check_cpuid_xsave() and start using
arch_prctl() to find out if AMX support is present or not. In the
kernels where AMX isn't present, arch_prctl() returns -EINVAL, hence it is
backward compatible.

Signed-off-by: Muhammad Usama Anjum <usama.anjum@collabora.com>
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Reviewed-by: Chang S. Bae <chang.seok.bae@intel.com>
Reviewed-by: Binbin Wu <binbin.wu@linux.intel.com>
Acked-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Link: https://lore.kernel.org/r/20240327111720.3509180-1-usama.anjum@collabora.com
---
 tools/testing/selftests/x86/amx.c | 27 ++++++++++-----------------
 tools/testing/selftests/x86/lam.c |  2 +-
 2 files changed, 11 insertions(+), 18 deletions(-)

diff --git a/tools/testing/selftests/x86/amx.c b/tools/testing/selftests/x86/amx.c
index d884fd6..95aad6d 100644
--- a/tools/testing/selftests/x86/amx.c
+++ b/tools/testing/selftests/x86/amx.c
@@ -103,21 +103,6 @@ static void clearhandler(int sig)
 
 #define CPUID_LEAF1_ECX_XSAVE_MASK	(1 << 26)
 #define CPUID_LEAF1_ECX_OSXSAVE_MASK	(1 << 27)
-static inline void check_cpuid_xsave(void)
-{
-	uint32_t eax, ebx, ecx, edx;
-
-	/*
-	 * CPUID.1:ECX.XSAVE[bit 26] enumerates general
-	 * support for the XSAVE feature set, including
-	 * XGETBV.
-	 */
-	__cpuid_count(1, 0, eax, ebx, ecx, edx);
-	if (!(ecx & CPUID_LEAF1_ECX_XSAVE_MASK))
-		fatal_error("cpuid: no CPU xsave support");
-	if (!(ecx & CPUID_LEAF1_ECX_OSXSAVE_MASK))
-		fatal_error("cpuid: no OS xsave support");
-}
 
 static uint32_t xbuf_size;
 
@@ -350,6 +335,7 @@ enum expected_result { FAIL_EXPECTED, SUCCESS_EXPECTED };
 
 /* arch_prctl() and sigaltstack() test */
 
+#define ARCH_GET_XCOMP_SUPP	0x1021
 #define ARCH_GET_XCOMP_PERM	0x1022
 #define ARCH_REQ_XCOMP_PERM	0x1023
 
@@ -928,8 +914,15 @@ static void test_ptrace(void)
 
 int main(void)
 {
-	/* Check hardware availability at first */
-	check_cpuid_xsave();
+	unsigned long features;
+	long rc;
+
+	rc = syscall(SYS_arch_prctl, ARCH_GET_XCOMP_SUPP, &features);
+	if (rc || (features & XFEATURE_MASK_XTILE) != XFEATURE_MASK_XTILE) {
+		ksft_print_msg("no AMX support\n");
+		return KSFT_SKIP;
+	}
+
 	check_cpuid_xtiledata();
 
 	init_stashed_xsave();
diff --git a/tools/testing/selftests/x86/lam.c b/tools/testing/selftests/x86/lam.c
index 215b815..c0f016f 100644
--- a/tools/testing/selftests/x86/lam.c
+++ b/tools/testing/selftests/x86/lam.c
@@ -1183,7 +1183,7 @@ int main(int argc, char **argv)
 
 	if (!cpu_has_lam()) {
 		ksft_print_msg("Unsupported LAM feature!\n");
-		return -1;
+		return KSFT_SKIP;
 	}
 
 	while ((c = getopt(argc, argv, "ht:")) != -1) {

^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [PATCH v3] selftests: x86: skip the tests if prerequisites aren't fulfilled
  2024-03-29  7:36   ` Ingo Molnar
@ 2024-03-29 15:01     ` Shuah Khan
  2024-03-30 11:08       ` Ingo Molnar
  0 siblings, 1 reply; 6+ messages in thread
From: Shuah Khan @ 2024-03-29 15:01 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: Muhammad Usama Anjum, Shuah Khan, Chang S. Bae,
	Kirill A. Shutemov, Binbin Wu, angquan yu, kernel,
	linux-kselftest, linux-kernel, Shuah Khan

On 3/29/24 01:36, Ingo Molnar wrote:
> 
> * Shuah Khan <skhan@linuxfoundation.org> wrote:
> 
>> On 3/27/24 05:17, Muhammad Usama Anjum wrote:
>>> Skip instead of failing when prerequisite conditions aren't fulfilled,
>>> such as invalid xstate values etc. This patch would make the tests show
>>> as skip when run by:
>>>     make -C tools/testing/selftests/ TARGETS=x86 run_tests
>>>
>>>     ...
>>>     # timeout set to 45
>>>     # selftests: x86: amx_64
>>>     # # xstate cpuid: invalid tile data size/offset: 0/0
>>>     ok 42 selftests: x86: amx_64 # SKIP
>>>     # timeout set to 45
>>>     # selftests: x86: lam_64
>>>     # # Unsupported LAM feature!
>>>     ok 43 selftests: x86: lam_64 # SKIP
>>>     ...
>>>
>>> In amx test, Move away from check_cpuid_xsave() and start using
>>> arch_prctl() to find out if amx support is present or not. In the
>>> kernels where amx isn't present, arch_prctl returns -EINVAL. Hence it is
>>> backward compatible.
>>>
>>> Reviewed-by: Chang S. Bae <chang.seok.bae@intel.com>
>>> Acked-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
>>> Reviewed-by: Binbin Wu <binbin.wu@linux.intel.com>
>>> Signed-off-by: Muhammad Usama Anjum <usama.anjum@collabora.com>
>>> ---
>>> Changes since v2:
>>> - Update the changelog
>>>
>>
>> Thank you - applied to linux-kselftest next for 6.10-rc1
> 
> Please don't, I've applied the patch to tip:x86/cpu with a tidied up
> changelog.
> 

Thanks. I will drop it.

thanks,
-- Shuah


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH v3] selftests: x86: skip the tests if prerequisites aren't fulfilled
  2024-03-29 15:01     ` Shuah Khan
@ 2024-03-30 11:08       ` Ingo Molnar
  0 siblings, 0 replies; 6+ messages in thread
From: Ingo Molnar @ 2024-03-30 11:08 UTC (permalink / raw)
  To: Shuah Khan
  Cc: Muhammad Usama Anjum, Shuah Khan, Chang S. Bae,
	Kirill A. Shutemov, Binbin Wu, angquan yu, kernel,
	linux-kselftest, linux-kernel


* Shuah Khan <skhan@linuxfoundation.org> wrote:

> On 3/29/24 01:36, Ingo Molnar wrote:
> > 
> > * Shuah Khan <skhan@linuxfoundation.org> wrote:
> > 
> > > On 3/27/24 05:17, Muhammad Usama Anjum wrote:
> > > > Skip instead of failing when prerequisite conditions aren't fulfilled,
> > > > such as invalid xstate values etc. This patch would make the tests show
> > > > as skip when run by:
> > > >     make -C tools/testing/selftests/ TARGETS=x86 run_tests
> > > > 
> > > >     ...
> > > >     # timeout set to 45
> > > >     # selftests: x86: amx_64
> > > >     # # xstate cpuid: invalid tile data size/offset: 0/0
> > > >     ok 42 selftests: x86: amx_64 # SKIP
> > > >     # timeout set to 45
> > > >     # selftests: x86: lam_64
> > > >     # # Unsupported LAM feature!
> > > >     ok 43 selftests: x86: lam_64 # SKIP
> > > >     ...
> > > > 
> > > > In amx test, Move away from check_cpuid_xsave() and start using
> > > > arch_prctl() to find out if amx support is present or not. In the
> > > > kernels where amx isn't present, arch_prctl returns -EINVAL. Hence it is
> > > > backward compatible.
> > > > 
> > > > Reviewed-by: Chang S. Bae <chang.seok.bae@intel.com>
> > > > Acked-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
> > > > Reviewed-by: Binbin Wu <binbin.wu@linux.intel.com>
> > > > Signed-off-by: Muhammad Usama Anjum <usama.anjum@collabora.com>
> > > > ---
> > > > Changes since v2:
> > > > - Update the changelog
> > > > 
> > > 
> > > Thank you - applied to linux-kselftest next for 6.10-rc1
> > 
> > Please don't, I've applied the patch to tip:x86/cpu with a tidied up
> > changelog.
> > 
> 
> Thanks. I will drop it.

Thank you!

	Ingo

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2024-03-30 11:08 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-03-27 11:17 [PATCH v3] selftests: x86: skip the tests if prerequisites aren't fulfilled Muhammad Usama Anjum
2024-03-28 18:42 ` Shuah Khan
2024-03-29  7:36   ` Ingo Molnar
2024-03-29 15:01     ` Shuah Khan
2024-03-30 11:08       ` Ingo Molnar
2024-03-29  7:51 ` [tip: x86/cpu] x86/selftests: Skip " tip-bot2 for Muhammad Usama Anjum

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.