[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <1ebe845b-322b-4929-9093-b41074e9e939@mixaill.net>
Date: Sun, 6 Jul 2025 19:42:39 +0300
From: Mikhail Paulyshka <me@...aill.net>
To: Borislav Petkov <bp@...en8.de>
Cc: Mario Limonciello <mario.limonciello@....com>,
Thomas Gleixner <tglx@...utronix.de>, Ingo Molnar <mingo@...hat.com>,
Dave Hansen <dave.hansen@...ux.intel.com>, x86@...nel.org,
linux-kernel@...r.kernel.org, Rik van Riel <riel@...riel.com>
Subject: Re: [PATCH v2 1/1] x86/rdrand: disable RDSEED on AMD Cyan Skillfish
On 6/17/25 11:05 PM, Borislav Petkov wrote:
> Does this one work too?
It works, however, there is another issue with the BC250 that appeared
since Linux 6.15.
Commit 4afeb0ed1753ebcad93ee3b45427ce85e9c8ec40 ( x86/mm: Enable
broadcast TLB invalidation for multi-threaded processes)[1], merged in
Linux 6.15-rc1, breaks the device — it starts to oops and panic under
any load [2].
[1]
https://docs.google.com/spreadsheets/d/1kJleOY5k-YREGak1pQhVWIGckA9YA3OWJyCbybZbk00/edit?gid=0#gid=0
[2] https://mixaill.net/linux-kernel-lists/bc250_log_invlpgb-1.txt
Clearing the X86_FEATURE_INVLPGB cap helps and the device works normally
again.
It would be great to have this change backported to 6.15 and 6.16 as the
device is currently unstable with these kernels.
---
From 064c91c5f3fc02a6eecd6b0b7cf074e2d0eb75aa Mon Sep 17 00:00:00 2001
From: Mikhail Paulyshka <me@...aill.net>
Date: Sun, 6 Jul 2025 01:46:46 +0300
Subject: [PATCH 2/2] x86/cpu/amd: disable INVLPGB on AMD Cyan Skillfish
AMD Cyan Skillfish (Family 17h, Model 47h, Stepping 0h) has an issue that
causes system oopses and panics when performing TLB flush using INVLPGB.
Clearing the X86_FEATURE_INVLPGB flag restoring system stability.
Signed-off-by: Mikhail Paulyshka <me@...aill.net>
---
arch/x86/kernel/cpu/amd.c | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/arch/x86/kernel/cpu/amd.c b/arch/x86/kernel/cpu/amd.c
index 21072f84071a..89b74203396e 100644
--- a/arch/x86/kernel/cpu/amd.c
+++ b/arch/x86/kernel/cpu/amd.c
@@ -935,6 +935,12 @@ static void init_amd_zen2(struct cpuinfo_x86 *c)
msr_clear_bit(MSR_AMD64_CPUID_FN_7, 18);
pr_emerg("RDSEED is not reliable on this platform; disabling.\n");
}
+
+ /* Disable INVLPGB on AMD Cyan Skillfish because of an error */
+ if (c->x86_model == 0x47 && c->x86_stepping == 0x0) {
+ clear_cpu_cap(c, X86_FEATURE_INVLPGB);
+ pr_emerg("INVLPGB is not reliable on this platform; disabling.\n");
+ }
}
static void init_amd_zen3(struct cpuinfo_x86 *c)
--
2.50.0
Powered by blists - more mailing lists