[PATCH 0/5] x86/cpu: Remove duplicate microcode version matching infrastructure

Dave Hansen posted 5 patches 1 year ago
There is a newer version of this series
arch/x86/events/intel/core.c         |   63 +++++++++++--------------
arch/x86/include/asm/cpu_device_id.h |   51 +++-----------------
arch/x86/kernel/apic/apic.c          |   18 +++----
arch/x86/kernel/cpu/amd.c            |    9 +--
arch/x86/kernel/cpu/common.c         |   78 ++++++++++++++++----------------
arch/x86/kernel/cpu/match.c          |   28 +----------
drivers/edac/i10nm_base.c            |   20 ++++----
drivers/edac/skx_base.c              |    2
include/linux/mod_devicetable.h      |    2
9 files changed, 105 insertions(+), 166 deletions(-)
[PATCH 0/5] x86/cpu: Remove duplicate microcode version matching infrastructure
Posted by Dave Hansen 1 year ago
Changes from RFC:
 * Convert stepping match helpers to always take a range and never
   take a raw stepping bitmap. - Ingo

--

x86 has generic CPU matching infrastructure. This lets you build
tables of CPUs with some property.  It's mostly used for enumerating
model-specific features, but it is quite a bit more flexible than
that. In includes a facility to match steppings and microcode
versions. This generic infrastructure is built around 'struct
x86_cpu_id'.

There is a less generic, parallel CPU matching facility built around
'struct x86_cpu_desc'. It is used only for matching specific microcode
revisions.  All of the 'struct x86_cpu_desc' users can be converted to
'struct x86_cpu_id'.

Do that conversion then remove the 'struct x86_cpu_desc'
infrastructure.

Testing or acks would be much appreciated!

--

 arch/x86/events/intel/core.c         |   63 +++++++++++--------------
 arch/x86/include/asm/cpu_device_id.h |   51 +++-----------------
 arch/x86/kernel/apic/apic.c          |   18 +++----
 arch/x86/kernel/cpu/amd.c            |    9 +--
 arch/x86/kernel/cpu/common.c         |   78 ++++++++++++++++----------------
 arch/x86/kernel/cpu/match.c          |   28 +----------
 drivers/edac/i10nm_base.c            |   20 ++++----
 drivers/edac/skx_base.c              |    2
 include/linux/mod_devicetable.h      |    2
 9 files changed, 105 insertions(+), 166 deletions(-)
Re: [PATCH 0/5] x86/cpu: Remove duplicate microcode version matching infrastructure
Posted by Qiuxu Zhuo 1 year ago
Hi Dave,

> From: Dave Hansen <dave.hansen@linux.intel.com>
> [...]
> Changes from RFC:
>  * Convert stepping match helpers to always take a range and never
>    take a raw stepping bitmap. - Ingo
> 
> --
> 
> x86 has generic CPU matching infrastructure. This lets you build
> tables of CPUs with some property.  It's mostly used for enumerating
> model-specific features, but it is quite a bit more flexible than
> that. In includes a facility to match steppings and microcode
> versions. This generic infrastructure is built around 'struct
> x86_cpu_id'.
> 
> There is a less generic, parallel CPU matching facility built around
> 'struct x86_cpu_desc'. It is used only for matching specific microcode
> revisions.  All of the 'struct x86_cpu_desc' users can be converted to
> 'struct x86_cpu_id'.
> 
> Do that conversion then remove the 'struct x86_cpu_desc'
> infrastructure.
> 
> Testing or acks would be much appreciated!

I tested this series + v6.13-rc2 on both Intel Cascade Lake server and Sapphire Rapids server.

- Both systems booted successfully.
- Both {skx,i10nm}_edac drivers[1][2] worked well.

  [1] Covered patch2's drivers/edac/skx_base.c file.
  [2] Covered patch2's drivers/edac/i10nm_base.c file.

Feel free to add:

  Tested-by: Qiuxu Zhuo <qiuxu.zhuo@intel.com>