[MODERATED] Re: [PATCH 1/4] V7 more sampling fun 1

Borislav Petkov <[email protected]> Wed, 15 Apr 2020 19:51:45 +0200
Newsgroups org.kernel.lore.historical-speck
Message-ID <[email protected]>
On Mon, Mar 16, 2020 at 05:56:27PM -0700, speck for mark gross wrote:
> From: mark gross <[email protected]>
> Subject: [PATCH 1/4] x86/cpu: Add stepping field to x86_cpu_id structure
>=20
> Intel uses the same family/model for several CPUs. Sometimes the
> stepping must be checked to tell them apart.
>=20
> On X86 there can be at most 16 steppings, add steppings bitmask to
> x86_cpu_id and X86_MATCH_VENDOR_FAMILY_MODEL_STEPPING_FEATURE macro and
> support for matching against family/model/stepping.
>=20
> Signed-off-by: Mark Gross <[email protected]>
> Reviewed-by: Tony Luck <[email protected]>
> ---
>  arch/x86/include/asm/cpu_device_id.h | 27 ++++++++++++++++++++++++---
>  arch/x86/kernel/cpu/match.c          |  7 ++++++-
>  include/linux/mod_devicetable.h      |  2 ++
>  3 files changed, 32 insertions(+), 4 deletions(-)
>=20
> diff --git a/arch/x86/include/asm/cpu_device_id.h b/arch/x86/include/asm/cp=
u_device_id.h
> index cf3d621c6892..4f0df2e46c95 100644
> --- a/arch/x86/include/asm/cpu_device_id.h
> +++ b/arch/x86/include/asm/cpu_device_id.h
> @@ -20,12 +20,14 @@
>  #define X86_CENTAUR_FAM6_C7_D		0xd
>  #define X86_CENTAUR_FAM6_NANO		0xf
> =20
> +#define X86_STEPPINGS(mins, maxs)    GENMASK(maxs, mins)
>  /**
> - * X86_MATCH_VENDOR_FAM_MODEL_FEATURE - Base macro for CPU matching
> + * X86_MATCH_VENDOR_FAM_MODEL_STEPPING_FEATURE - Base macro for CPU matchi=
ng
				 ^^^^^^^^

If the steppings argument is a bitmask of steppings, then the name
should have "STEPPINGS" too to avoid confusion.

>   * @_vendor:	The vendor name, e.g. INTEL, AMD, HYGON, ..., ANY
>   *		The name is expanded to X86_VENDOR_@_vendor
>   * @_family:	The family number or X86_FAMILY_ANY
>   * @_model:	The model number, model constant or X86_MODEL_ANY
> + * @_steppings:	Bitmask for steppings, stepping constant or X86_STEPPING_A=
NY
>   * @_feature:	A X86_FEATURE bit or X86_FEATURE_ANY
>   * @_data:	Driver specific data or NULL. The internal storage
>   *		format is unsigned long. The supplied value, pointer
> @@ -37,15 +39,34 @@
>   * into another macro at the usage site for good reasons, then please
>   * start this local macro with X86_MATCH to allow easy grepping.
>   */
> -#define X86_MATCH_VENDOR_FAM_MODEL_FEATURE(_vendor, _family, _model,	\
> -					   _feature, _data) {		\
> +#define X86_MATCH_VENDOR_FAM_MODEL_STEPPING_FEATURE(_vendor, _family, _mod=
el, \
> +						    _steppings, _feature, _data) { \
>  	.vendor		=3D X86_VENDOR_##_vendor,				\
>  	.family		=3D _family,					\
>  	.model		=3D _model,					\
> +	.steppings	=3D _steppings,					\
>  	.feature	=3D _feature,					\
>  	.driver_data	=3D (unsigned long) _data				\
>  }
> =20
> +/**
> + * X86_MATCH_VENDOR_FAM_MODEL_FEATURE - Base macro for CPU matching

That isn't the base macro anymore.

--=20
Regards/Gruss,
    Boris.

SUSE Software Solutions Germany GmbH, GF: Felix Imend=C3=B6rffer, HRB 36809, =
AG N=C3=BCrnberg
--=20