diff mbox

[v3,0/2] Move ...mce/therm_throt.c to drivers/thermal/

Message ID 20210201142704.12495-1-bp@alien8.de (mailing list archive)
State Not Applicable, archived
Headers show

Commit Message

Borislav Petkov Feb. 1, 2021, 2:27 p.m. UTC
From: Borislav Petkov <bp@suse.de>

Hi,

I know I already committed those but

https://lkml.kernel.org/r/20210201032427.GB12524@xsang-OptiPlex-9020

made me look at the IRQ handler registration. And it does happen per CPU
which is particularly daft and unneeded. And it used to do that before
that change too, for some unknown reason.

So I decided to not have a handler registration but simply call the
thermal interrupt handler if all is setup and before that issue the
message about the unexpected IRQ.

I did test it by sending bogus thermal interrupts before and after
registration - see hunk below - and it looks good:

[    0.136608] 0: Sending thermal IRQ
[    0.136760] CPU0: Unexpected LVT thermal interrupt!
[    0.136917] CPU0: Thermal monitoring enabled (TM1)
[    0.137071] 1: Sending thermal IRQ
[    0.043243] 0: Sending thermal IRQ
[    0.043243] 1: Sending thermal IRQ
[    0.043243] 0: Sending thermal IRQ
[    0.043243] 1: Sending thermal IRQ
[    0.043243] 0: Sending thermal IRQ
[    0.043243] 1: Sending thermal IRQ
[    0.043243] 0: Sending thermal IRQ
[    0.043243] 1: Sending thermal IRQ
[    0.043243] 0: Sending thermal IRQ
[    0.043243] 1: Sending thermal IRQ
[    0.149436] thermal_sys: Registered thermal governor 'fair_share'
[    0.149437] thermal_sys: Registered thermal governor 'bang_bang'
[    0.149595] thermal_sys: Registered thermal governor 'step_wise'
[    0.149753] thermal_sys: Registered thermal governor 'user_space'
[    0.445717] ACPI: \_SB_.PR00: _OSC native thermal LVT Acked
[    0.707539] thermal LNXTHERM:00: registered as thermal_zone0

Logic in patch 1 got a bit simplified too.

Thx.

---

Changelog:
==========

here's v2 which addresses peterz's comments to patch 2.

@thermal folks, lemme know if you have any objections otherwise I'll
route this through the tip tree.

v1:

so this has come up a bunch of times in the past and PeterZ is right
- that thing doesn't have anything to do with the MCE glue so move it
where it belongs.

Thx.

Borislav Petkov (2):
  x86/mce: Get rid of mcheck_intel_therm_init()
  thermal: Move therm_throt there from x86/mce

 arch/x86/Kconfig                              |  4 --
 arch/x86/include/asm/mce.h                    | 22 ----------
 arch/x86/include/asm/thermal.h                | 24 +++++++++++
 arch/x86/kernel/cpu/intel.c                   |  3 ++
 arch/x86/kernel/cpu/mce/Makefile              |  2 -
 arch/x86/kernel/cpu/mce/core.c                |  1 -
 arch/x86/kernel/cpu/mce/intel.c               |  1 -
 arch/x86/kernel/irq.c                         | 21 ++++++++++
 drivers/thermal/intel/Kconfig                 |  4 ++
 drivers/thermal/intel/Makefile                |  1 +
 .../thermal/intel}/therm_throt.c              | 41 ++++---------------
 drivers/thermal/intel/x86_pkg_temp_thermal.c  |  3 +-
 12 files changed, 64 insertions(+), 63 deletions(-)
 create mode 100644 arch/x86/include/asm/thermal.h
 rename {arch/x86/kernel/cpu/mce => drivers/thermal/intel}/therm_throt.c (96%)

2nd:rc6-therm_throt

Comments

srinivas pandruvada Feb. 1, 2021, 7:10 p.m. UTC | #1
On Mon, 2021-02-01 at 15:27 +0100, Borislav Petkov wrote:
> From: Borislav Petkov <bp@suse.de>
> 
> Hi,
> 
> I know I already committed those but
> 
> https://lkml.kernel.org/r/20210201032427.GB12524@xsang-OptiPlex-9020
> 
> made me look at the IRQ handler registration. And it does happen per
> CPU
> which is particularly daft and unneeded. And it used to do that
> before
> that change too, for some unknown reason.
> 
> So I decided to not have a handler registration but simply call the
> thermal interrupt handler if all is setup and before that issue the
> message about the unexpected IRQ.
> 
> I did test it by sending bogus thermal interrupts before and after
> registration - see hunk below - and it looks good:
> 
> [    0.136608] 0: Sending thermal IRQ
> [    0.136760] CPU0: Unexpected LVT thermal interrupt!
> [    0.136917] CPU0: Thermal monitoring enabled (TM1)
> [    0.137071] 1: Sending thermal IRQ
> [    0.043243] 0: Sending thermal IRQ
> [    0.043243] 1: Sending thermal IRQ
> [    0.043243] 0: Sending thermal IRQ
> [    0.043243] 1: Sending thermal IRQ
> [    0.043243] 0: Sending thermal IRQ
> [    0.043243] 1: Sending thermal IRQ
> [    0.043243] 0: Sending thermal IRQ
> [    0.043243] 1: Sending thermal IRQ
> [    0.043243] 0: Sending thermal IRQ
> [    0.043243] 1: Sending thermal IRQ
> [    0.149436] thermal_sys: Registered thermal governor 'fair_share'
> [    0.149437] thermal_sys: Registered thermal governor 'bang_bang'
> [    0.149595] thermal_sys: Registered thermal governor 'step_wise'
> [    0.149753] thermal_sys: Registered thermal governor 'user_space'
> [    0.445717] ACPI: \_SB_.PR00: _OSC native thermal LVT Acked
> [    0.707539] thermal LNXTHERM:00: registered as thermal_zone0
> 
> Logic in patch 1 got a bit simplified too.
> 
[...]

> 
> Borislav Petkov (2):
>   x86/mce: Get rid of mcheck_intel_therm_init()
>   thermal: Move therm_throt there from x86/mce
> 

I have applied this series and tested. Didn't find any functional
issues. But I have one comment on patch 2/2.

Tested-by: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>

Thanks,
Srinivas

>  arch/x86/Kconfig                              |  4 --
>  arch/x86/include/asm/mce.h                    | 22 ----------
>  arch/x86/include/asm/thermal.h                | 24 +++++++++++
>  arch/x86/kernel/cpu/intel.c                   |  3 ++
>  arch/x86/kernel/cpu/mce/Makefile              |  2 -
>  arch/x86/kernel/cpu/mce/core.c                |  1 -
>  arch/x86/kernel/cpu/mce/intel.c               |  1 -
>  arch/x86/kernel/irq.c                         | 21 ++++++++++
>  drivers/thermal/intel/Kconfig                 |  4 ++
>  drivers/thermal/intel/Makefile                |  1 +
>  .../thermal/intel}/therm_throt.c              | 41 ++++-------------
> --
>  drivers/thermal/intel/x86_pkg_temp_thermal.c  |  3 +-
>  12 files changed, 64 insertions(+), 63 deletions(-)
>  create mode 100644 arch/x86/include/asm/thermal.h
>  rename {arch/x86/kernel/cpu/mce =>
> drivers/thermal/intel}/therm_throt.c (96%)
> 
> 2nd:rc6-therm_throt
>
diff mbox

Patch

diff --git a/drivers/thermal/intel/therm_throt.c b/drivers/thermal/intel/therm_throt.c
index 6221f0f418f7..e544f04eac8c 100644
--- a/drivers/thermal/intel/therm_throt.c
+++ b/drivers/thermal/intel/therm_throt.c
@@ -705,6 +705,11 @@  void intel_init_thermal(struct cpuinfo_x86 *c)
                                | PACKAGE_THERM_INT_HIGH_ENABLE), h);
        }
 
+       pr_info("0: Sending thermal IRQ\n");
+
+       apic->send_IPI(0, THERMAL_APIC_VECTOR);
+       apic->send_IPI(3, THERMAL_APIC_VECTOR);
+
        rdmsr(MSR_IA32_MISC_ENABLE, l, h);
        wrmsr(MSR_IA32_MISC_ENABLE, l | MSR_IA32_MISC_ENABLE_TM1, h);
 
@@ -713,4 +718,8 @@  void intel_init_thermal(struct cpuinfo_x86 *c)
 
        /* enable thermal throttle processing */
        atomic_set(&therm_throt_en, 1);
+
+       pr_info("1: Sending thermal IRQ\n");
+       apic->send_IPI(0, THERMAL_APIC_VECTOR);
+       apic->send_IPI(3, THERMAL_APIC_VECTOR);
 }