Hi,
please apply f24f669d03f8 for 6.12.y. It is already in 6.13.y.
Backports of that patch would be needed for 6.6.y down to 5.4.y as it doesn't apply.
But I don't know how to backport that fix but I can test anything.
Thomas
On Wed, Mar 05, 2025 at 06:39:39PM +0100, Thomas Voegtle wrote:
Hi,
please apply f24f669d03f8 for 6.12.y. It is already in 6.13.y.
Backports of that patch would be needed for 6.6.y down to 5.4.y as it doesn't apply.
But I don't know how to backport that fix but I can test anything.
Could you please test the following patch on 6.6.y?
--- From: Pawan Gupta pawan.kumar.gupta@linux.intel.com Subject: [PATCH 6.6] x86/mm: Don't disable PCID when INVLPG has been fixed by microcode
From: Xi Ruoyao xry111@xry111.site
commit f24f669d03f884a6ef95cca84317d0f329e93961 upstream.
Per the "Processor Specification Update" documentations referred by the intel-microcode-20240312 release note, this microcode release has fixed the issue for all affected models.
So don't disable PCID if the microcode is new enough. The precise minimum microcode revision fixing the issue was provided by Pawan Intel.
[ dhansen: comment and changelog tweaks ] [ pawan: backported to 6.6 ]
Signed-off-by: Xi Ruoyao xry111@xry111.site Signed-off-by: Dave Hansen dave.hansen@linux.intel.com Acked-by: Pawan Gupta pawan.kumar.gupta@linux.intel.com Signed-off-by: Pawan Gupta pawan.kumar.gupta@linux.intel.com Link: https://lore.kernel.org/all/168436059559.404.13934972543631851306.tip-bot2@t... Link: https://github.com/intel/Intel-Linux-Processor-Microcode-Data-Files/releases... Link: https://cdrdv2.intel.com/v1/dl/getContent/740518 # RPL042, rev. 13 Link: https://cdrdv2.intel.com/v1/dl/getContent/682436 # ADL063, rev. 24 Link: https://lore.kernel.org/all/20240325231300.qrltbzf6twm43ftb@desk/ Link: https://lore.kernel.org/all/20240522020625.69418-1-xry111%40xry111.site --- arch/x86/mm/init.c | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-)
diff --git a/arch/x86/mm/init.c b/arch/x86/mm/init.c index 6215dfa23578..71d29dd7ad76 100644 --- a/arch/x86/mm/init.c +++ b/arch/x86/mm/init.c @@ -262,28 +262,33 @@ static void __init probe_page_size_mask(void) }
/* - * INVLPG may not properly flush Global entries - * on these CPUs when PCIDs are enabled. + * INVLPG may not properly flush Global entries on + * these CPUs. New microcode fixes the issue. */ static const struct x86_cpu_id invlpg_miss_ids[] = { - X86_MATCH_INTEL_FAM6_MODEL(ALDERLAKE, 0), - X86_MATCH_INTEL_FAM6_MODEL(ALDERLAKE_L, 0), - X86_MATCH_INTEL_FAM6_MODEL(ATOM_GRACEMONT, 0), - X86_MATCH_INTEL_FAM6_MODEL(RAPTORLAKE, 0), - X86_MATCH_INTEL_FAM6_MODEL(RAPTORLAKE_P, 0), - X86_MATCH_INTEL_FAM6_MODEL(RAPTORLAKE_S, 0), + X86_MATCH_INTEL_FAM6_MODEL(ALDERLAKE, 0x2e), + X86_MATCH_INTEL_FAM6_MODEL(ALDERLAKE_L, 0x42c), + X86_MATCH_INTEL_FAM6_MODEL(ATOM_GRACEMONT, 0x11), + X86_MATCH_INTEL_FAM6_MODEL(RAPTORLAKE, 0x118), + X86_MATCH_INTEL_FAM6_MODEL(RAPTORLAKE_P, 0x4117), + X86_MATCH_INTEL_FAM6_MODEL(RAPTORLAKE_S, 0x2e), {} };
static void setup_pcid(void) { + const struct x86_cpu_id *invlpg_miss_match; + if (!IS_ENABLED(CONFIG_X86_64)) return;
if (!boot_cpu_has(X86_FEATURE_PCID)) return;
- if (x86_match_cpu(invlpg_miss_ids)) { + invlpg_miss_match = x86_match_cpu(invlpg_miss_ids); + + if (invlpg_miss_match && + boot_cpu_data.microcode < invlpg_miss_match->driver_data) { pr_info("Incomplete global flushes, disabling PCID"); setup_clear_cpu_cap(X86_FEATURE_PCID); return;
On Thu, 6 Mar 2025, Pawan Gupta wrote:
On Wed, Mar 05, 2025 at 06:39:39PM +0100, Thomas Voegtle wrote:
Hi,
please apply f24f669d03f8 for 6.12.y. It is already in 6.13.y.
Backports of that patch would be needed for 6.6.y down to 5.4.y as it doesn't apply.
But I don't know how to backport that fix but I can test anything.
Could you please test the following patch on 6.6.y?
Works on 6.6.81-rc1. Found pcid in /proc/cpuinfo No more "Incomplete global flushes, disabling PCID" in dmesg
model name : 12th Gen Intel(R) Core(TM) i3-12100 with microcode : 0x38
From: Pawan Gupta pawan.kumar.gupta@linux.intel.com Subject: [PATCH 6.6] x86/mm: Don't disable PCID when INVLPG has been fixed by microcode
From: Xi Ruoyao xry111@xry111.site
commit f24f669d03f884a6ef95cca84317d0f329e93961 upstream.
Per the "Processor Specification Update" documentations referred by the intel-microcode-20240312 release note, this microcode release has fixed the issue for all affected models.
So don't disable PCID if the microcode is new enough. The precise minimum microcode revision fixing the issue was provided by Pawan Intel.
[ dhansen: comment and changelog tweaks ] [ pawan: backported to 6.6 ]
Signed-off-by: Xi Ruoyao xry111@xry111.site Signed-off-by: Dave Hansen dave.hansen@linux.intel.com Acked-by: Pawan Gupta pawan.kumar.gupta@linux.intel.com Signed-off-by: Pawan Gupta pawan.kumar.gupta@linux.intel.com Link: https://lore.kernel.org/all/168436059559.404.13934972543631851306.tip-bot2@t... Link: https://github.com/intel/Intel-Linux-Processor-Microcode-Data-Files/releases... Link: https://cdrdv2.intel.com/v1/dl/getContent/740518 # RPL042, rev. 13 Link: https://cdrdv2.intel.com/v1/dl/getContent/682436 # ADL063, rev. 24 Link: https://lore.kernel.org/all/20240325231300.qrltbzf6twm43ftb@desk/ Link: https://lore.kernel.org/all/20240522020625.69418-1-xry111%40xry111.site
arch/x86/mm/init.c | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-)
diff --git a/arch/x86/mm/init.c b/arch/x86/mm/init.c index 6215dfa23578..71d29dd7ad76 100644 --- a/arch/x86/mm/init.c +++ b/arch/x86/mm/init.c @@ -262,28 +262,33 @@ static void __init probe_page_size_mask(void) }
/*
- INVLPG may not properly flush Global entries
- on these CPUs when PCIDs are enabled.
- INVLPG may not properly flush Global entries on
- these CPUs. New microcode fixes the issue.
*/ static const struct x86_cpu_id invlpg_miss_ids[] = {
- X86_MATCH_INTEL_FAM6_MODEL(ALDERLAKE, 0),
- X86_MATCH_INTEL_FAM6_MODEL(ALDERLAKE_L, 0),
- X86_MATCH_INTEL_FAM6_MODEL(ATOM_GRACEMONT, 0),
- X86_MATCH_INTEL_FAM6_MODEL(RAPTORLAKE, 0),
- X86_MATCH_INTEL_FAM6_MODEL(RAPTORLAKE_P, 0),
- X86_MATCH_INTEL_FAM6_MODEL(RAPTORLAKE_S, 0),
- X86_MATCH_INTEL_FAM6_MODEL(ALDERLAKE, 0x2e),
- X86_MATCH_INTEL_FAM6_MODEL(ALDERLAKE_L, 0x42c),
- X86_MATCH_INTEL_FAM6_MODEL(ATOM_GRACEMONT, 0x11),
- X86_MATCH_INTEL_FAM6_MODEL(RAPTORLAKE, 0x118),
- X86_MATCH_INTEL_FAM6_MODEL(RAPTORLAKE_P, 0x4117),
- X86_MATCH_INTEL_FAM6_MODEL(RAPTORLAKE_S, 0x2e), {}
};
static void setup_pcid(void) {
const struct x86_cpu_id *invlpg_miss_match;
if (!IS_ENABLED(CONFIG_X86_64)) return;
if (!boot_cpu_has(X86_FEATURE_PCID)) return;
- if (x86_match_cpu(invlpg_miss_ids)) {
- invlpg_miss_match = x86_match_cpu(invlpg_miss_ids);
- if (invlpg_miss_match &&
pr_info("Incomplete global flushes, disabling PCID"); setup_clear_cpu_cap(X86_FEATURE_PCID); return;boot_cpu_data.microcode < invlpg_miss_match->driver_data) {
Thomas
linux-stable-mirror@lists.linaro.org