mce_notify_irq() really depends on the legacy mcelog being enabled as
otherwise mce_work_trigger() will never schedule the trigger work as
mce_helper can't be set unless CONFIG_X86_MCELOG_LEGACY is defined.
Signed-off-by: Nikolay Borisov <nik.borisov@suse.com>
---
arch/x86/kernel/cpu/mce/core.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/arch/x86/kernel/cpu/mce/core.c b/arch/x86/kernel/cpu/mce/core.c
index d55b1903fde6..8b8553e144ce 100644
--- a/arch/x86/kernel/cpu/mce/core.c
+++ b/arch/x86/kernel/cpu/mce/core.c
@@ -591,11 +591,13 @@ EXPORT_SYMBOL_GPL(mce_is_correctable);
*/
static int mce_notify_irq(void)
{
+#ifdef CONFIG_X86_MCELOG_LEGACY
+
if (test_and_clear_bit(0, &mce_need_notify)) {
mce_work_trigger();
return 1;
}
-
+#endif
return 0;
}
--
2.43.0
On Mon, Feb 10, 2025 at 05:47:06PM +0200, Nikolay Borisov wrote:
> mce_notify_irq() really depends on the legacy mcelog being enabled as
> otherwise mce_work_trigger() will never schedule the trigger work as
> mce_helper can't be set unless CONFIG_X86_MCELOG_LEGACY is defined.
>
> Signed-off-by: Nikolay Borisov <nik.borisov@suse.com>
> ---
> arch/x86/kernel/cpu/mce/core.c | 4 +++-
> 1 file changed, 3 insertions(+), 1 deletion(-)
>
> diff --git a/arch/x86/kernel/cpu/mce/core.c b/arch/x86/kernel/cpu/mce/core.c
> index d55b1903fde6..8b8553e144ce 100644
> --- a/arch/x86/kernel/cpu/mce/core.c
> +++ b/arch/x86/kernel/cpu/mce/core.c
> @@ -591,11 +591,13 @@ EXPORT_SYMBOL_GPL(mce_is_correctable);
> */
> static int mce_notify_irq(void)
> {
> +#ifdef CONFIG_X86_MCELOG_LEGACY
You can't do that - I see mce_notify_irq() in mce_timer_fn().
--
Regards/Gruss,
Boris.
https://people.kernel.org/tglx/notes-about-netiquette
> From: Nikolay Borisov <nik.borisov@suse.com>
> [...]
> Subject: [PATCH v2 3/3] x86/mce: Make mce_notify_irq() depend on
> CONFIG_X86_MCELOG_LEGACY
>
> mce_notify_irq() really depends on the legacy mcelog being enabled as
> otherwise mce_work_trigger() will never schedule the trigger work as
> mce_helper can't be set unless CONFIG_X86_MCELOG_LEGACY is defined.
>
> Signed-off-by: Nikolay Borisov <nik.borisov@suse.com>
> ---
> arch/x86/kernel/cpu/mce/core.c | 4 +++-
> 1 file changed, 3 insertions(+), 1 deletion(-)
>
> diff --git a/arch/x86/kernel/cpu/mce/core.c b/arch/x86/kernel/cpu/mce/core.c
> index d55b1903fde6..8b8553e144ce 100644
> --- a/arch/x86/kernel/cpu/mce/core.c
> +++ b/arch/x86/kernel/cpu/mce/core.c
> @@ -591,11 +591,13 @@ EXPORT_SYMBOL_GPL(mce_is_correctable);
> */
> static int mce_notify_irq(void)
> {
> +#ifdef CONFIG_X86_MCELOG_LEGACY
> +
> if (test_and_clear_bit(0, &mce_need_notify)) {
> mce_work_trigger();
> return 1;
> }
> -
> +#endif
> return 0;
> }
The empty stub function below can also be removed from the file: arch/x86/kernel/cpu/mce/internal.h
static inline void mce_work_trigger(void) { }
On 11.02.25 г. 9:20 ч., Zhuo, Qiuxu wrote:
>> From: Nikolay Borisov <nik.borisov@suse.com>
>> [...]
>> Subject: [PATCH v2 3/3] x86/mce: Make mce_notify_irq() depend on
>> CONFIG_X86_MCELOG_LEGACY
>>
>> mce_notify_irq() really depends on the legacy mcelog being enabled as
>> otherwise mce_work_trigger() will never schedule the trigger work as
>> mce_helper can't be set unless CONFIG_X86_MCELOG_LEGACY is defined.
>>
>> Signed-off-by: Nikolay Borisov <nik.borisov@suse.com>
>> ---
>> arch/x86/kernel/cpu/mce/core.c | 4 +++-
>> 1 file changed, 3 insertions(+), 1 deletion(-)
>>
>> diff --git a/arch/x86/kernel/cpu/mce/core.c b/arch/x86/kernel/cpu/mce/core.c
>> index d55b1903fde6..8b8553e144ce 100644
>> --- a/arch/x86/kernel/cpu/mce/core.c
>> +++ b/arch/x86/kernel/cpu/mce/core.c
>> @@ -591,11 +591,13 @@ EXPORT_SYMBOL_GPL(mce_is_correctable);
>> */
>> static int mce_notify_irq(void)
>> {
>> +#ifdef CONFIG_X86_MCELOG_LEGACY
>> +
>> if (test_and_clear_bit(0, &mce_need_notify)) {
>> mce_work_trigger();
>> return 1;
>> }
>> -
>> +#endif
>> return 0;
>> }
>
> The empty stub function below can also be removed from the file: arch/x86/kernel/cpu/mce/internal.h
>
> static inline void mce_work_trigger(void) { }
Actually I think this patch is better off being dropped. With it
mce_notify_irq will always return false, causing mce_timer_fn() to
always increase the polling interval until it stabilizes at around
check_interval.
I will wait a bit for some more feedback and will repost v3 which will
consist of only patches 1 and 2.
© 2016 - 2025 Red Hat, Inc.