mbox series

[V3,0/4] selftests: Remove duplicate CPUID wrappers

Message ID cover.1650918160.git.reinette.chatre@intel.com
Headers show
Series selftests: Remove duplicate CPUID wrappers | expand

Message

Reinette Chatre April 25, 2022, 9:01 p.m. UTC
Changes since V2:
- V2: https://lore.kernel.org/lkml/cover.1647360971.git.reinette.chatre@intel.com/
- Rebased against v5.18-rc4, no functional changes.
- Add text in cover letter and first patch to highlight that
  the __cpuid_count() macro provided is not a new implementation but
  copied from gcc.

Changes since V1:
- V1: https://lore.kernel.org/lkml/cover.1644000145.git.reinette.chatre@intel.com/
- Change solution to not use __cpuid_count() from compiler's
  cpuid.h but instead use a local define of __cpuid_count()
  provided in kselftest.h to ensure tests continue working
  in all supported environments. (Shuah)
- Rewrite cover letter and changelogs to reflect new solution.

A few tests that require running CPUID do so with a private
implementation of a wrapper for CPUID. This duplication of
the CPUID wrapper should be avoided.

Both gcc and clang/LLVM provide wrappers for CPUID but
the wrappers are not available in the minimal required
version of gcc, v3.2, that the selftests need to be used
in. __cpuid_count() was added to gcc in v4.4, which is ok for
kernels after v4.19 when the gcc minimal required version
was changed to v4.6.

Copy gcc's __cpuid_count() to provide a local define of
__cpuid_count() to kselftest.h to ensure that selftests can
still work in environments with older stable kernels (v4.9
and v4.14 that have the minimal required version of gcc of
v3.2). Update tests with private CPUID wrappers to use the
new macro.

Cc: Dave Hansen <dave.hansen@linux.intel.com>
Cc: Sandipan Das <sandipan@linux.ibm.com>
Cc: Florian Weimer <fweimer@redhat.com>
Cc: "Desnes A. Nunes do Rosario" <desnesn@linux.vnet.ibm.com>
Cc: Ingo Molnar <mingo@kernel.org>
Cc: Thiago Jung Bauermann <bauerman@linux.ibm.com>
Cc: Michael Ellerman <mpe@ellerman.id.au>
Cc: Michal Suchanek <msuchanek@suse.de>
Cc: linux-mm@kvack.org
Cc: Chang S. Bae <chang.seok.bae@intel.com>
Cc: Borislav Petkov <bp@suse.de>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: "H. Peter Anvin" <hpa@zytor.com>
Cc: x86@kernel.org
Cc: Andy Lutomirski <luto@kernel.org>

Reinette Chatre (4):
  selftests: Provide local define of __cpuid_count()
  selftests/vm/pkeys: Use provided __cpuid_count() macro
  selftests/x86/amx: Use provided __cpuid_count() macro
  selftests/x86/corrupt_xstate_header: Use provided __cpuid_count()
    macro

 tools/testing/selftests/kselftest.h           | 15 ++++++++++++
 tools/testing/selftests/vm/pkey-x86.h         | 21 ++--------------
 tools/testing/selftests/x86/amx.c             | 24 ++++++-------------
 .../selftests/x86/corrupt_xstate_header.c     | 16 ++-----------
 4 files changed, 26 insertions(+), 50 deletions(-)


base-commit: af2d861d4cd2a4da5137f795ee3509e6f944a25b

Comments

Shuah Khan April 25, 2022, 9:08 p.m. UTC | #1
On 4/25/22 3:01 PM, Reinette Chatre wrote:
> Changes since V2:
> - V2: https://lore.kernel.org/lkml/cover.1647360971.git.reinette.chatre@intel.com/
> - Rebased against v5.18-rc4, no functional changes.
> - Add text in cover letter and first patch to highlight that
>    the __cpuid_count() macro provided is not a new implementation but
>    copied from gcc.
> 
> Changes since V1:
> - V1: https://lore.kernel.org/lkml/cover.1644000145.git.reinette.chatre@intel.com/
> - Change solution to not use __cpuid_count() from compiler's
>    cpuid.h but instead use a local define of __cpuid_count()
>    provided in kselftest.h to ensure tests continue working
>    in all supported environments. (Shuah)
> - Rewrite cover letter and changelogs to reflect new solution.
> 
> A few tests that require running CPUID do so with a private
> implementation of a wrapper for CPUID. This duplication of
> the CPUID wrapper should be avoided.
> 
> Both gcc and clang/LLVM provide wrappers for CPUID but
> the wrappers are not available in the minimal required
> version of gcc, v3.2, that the selftests need to be used
> in. __cpuid_count() was added to gcc in v4.4, which is ok for
> kernels after v4.19 when the gcc minimal required version
> was changed to v4.6.
> 
> Copy gcc's __cpuid_count() to provide a local define of
> __cpuid_count() to kselftest.h to ensure that selftests can
> still work in environments with older stable kernels (v4.9
> and v4.14 that have the minimal required version of gcc of
> v3.2). Update tests with private CPUID wrappers to use the
> new macro.
> 
> Cc: Dave Hansen <dave.hansen@linux.intel.com>
> Cc: Sandipan Das <sandipan@linux.ibm.com>
> Cc: Florian Weimer <fweimer@redhat.com>
> Cc: "Desnes A. Nunes do Rosario" <desnesn@linux.vnet.ibm.com>
> Cc: Ingo Molnar <mingo@kernel.org>
> Cc: Thiago Jung Bauermann <bauerman@linux.ibm.com>
> Cc: Michael Ellerman <mpe@ellerman.id.au>
> Cc: Michal Suchanek <msuchanek@suse.de>
> Cc: linux-mm@kvack.org
> Cc: Chang S. Bae <chang.seok.bae@intel.com>
> Cc: Borislav Petkov <bp@suse.de>
> Cc: Thomas Gleixner <tglx@linutronix.de>
> Cc: Ingo Molnar <mingo@redhat.com>
> Cc: "H. Peter Anvin" <hpa@zytor.com>
> Cc: x86@kernel.org
> Cc: Andy Lutomirski <luto@kernel.org>
> 
> Reinette Chatre (4):
>    selftests: Provide local define of __cpuid_count()
>    selftests/vm/pkeys: Use provided __cpuid_count() macro
>    selftests/x86/amx: Use provided __cpuid_count() macro
>    selftests/x86/corrupt_xstate_header: Use provided __cpuid_count()
>      macro
> 
>   tools/testing/selftests/kselftest.h           | 15 ++++++++++++
>   tools/testing/selftests/vm/pkey-x86.h         | 21 ++--------------
>   tools/testing/selftests/x86/amx.c             | 24 ++++++-------------
>   .../selftests/x86/corrupt_xstate_header.c     | 16 ++-----------
>   4 files changed, 26 insertions(+), 50 deletions(-)
> 
> 
> base-commit: af2d861d4cd2a4da5137f795ee3509e6f944a25b
> 

Thank you. I will queue this up for Linux 5.19-rc1

thanks,
-- Shuah