mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-11-24 16:30:52 +07:00
Two RAS related fixes:
- Shut down the per CPU thermal throttling poll work properly when a CPU goes offline. The missing shutdown caused the poll work to be migrated to a unbound worker which triggered warnings about the usage of smp_processor_id() in preemptible context - Fix the PPIN feature initialization which missed to enable the functionality when PPIN_CTL was enabled but the MSR locked against updates. -----BEGIN PGP SIGNATURE----- iQJHBAABCgAxFiEEQp8+kY+LLUocC4bMphj1TA10mKEFAl5uRHUTHHRnbHhAbGlu dXRyb25peC5kZQAKCRCmGPVMDXSYoVVGD/0WEjZoB8yhwez6u0YNFhUkjfP8JFC1 mGdWMoevyH3Tb+DQNX3cW95t2O7IxP0N6OUNnYYQ9Tlqwt6r0ptJpNnXO7CV2+Jh 5lxpw/Uv2kQv69BNDK9qPDhiIBPzZQCg/utDTVdIyG0y+XU0q/IZqXh+XedAJsVr P3U7KC//NwTYnlpPWjDsG26GHSguV4kj+Lwi88nfh1DJ7eawb8AF4k965pLmOoF9 g13EFxv2FW1/uq+QJq5ophQIH/pPI/T67rhIyLWxFsCByBzVKjm4BBgXH4gb+QIn OofVQcaWCpZCOq2ZTNfHWdPvJK2ziig9w+twbArb7Cb9aOgp3Oe1zbp2VD4nKu4+ 0G5E2Vdv6qRrEIk5LUTqlyOIogd5xPSufaCGF/HC/qXqBxqwWD0tUvjtYyRwwy+Y u90bo90zlMjUoDirgtZrjYe0bXuy3xJ+FxZ5OxovGRxLn4qqBqEJGrXYvB0LIlpd 3x+YeHB4T2pwC6Ya5Odi6RKhwMKpro24dDMJ9jIR1u/NwIgJ2elSO9bsw6SZ823e /Mwns7CC/7xtjOCJXPlyj4Uw0TzwTbp1W9Kb0OqJo6q+ntvxbAhoMf32FDxg0OKC h4trc3FZt+e2a0l8R8e3nNeAvnS0fM1P4vtg18EcX8SqlSoALJkS3XUO4WeCFLBh F9jOt/LSf+4okQ== =9W7B -----END PGP SIGNATURE----- Merge tag 'ras-urgent-2020-03-15' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip Pull RAS fixes from Thomas Gleixner: "Two RAS related fixes: - Shut down the per CPU thermal throttling poll work properly when a CPU goes offline. The missing shutdown caused the poll work to be migrated to a unbound worker which triggered warnings about the usage of smp_processor_id() in preemptible context - Fix the PPIN feature initialization which missed to enable the functionality when PPIN_CTL was enabled but the MSR locked against updates" * tag 'ras-urgent-2020-03-15' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: x86/mce: Fix logic and comments around MSR_PPIN_CTL x86/mce/therm_throt: Undo thermal polling properly on CPU offline
This commit is contained in:
commit
52ac3777fc
@ -493,17 +493,18 @@ static void intel_ppin_init(struct cpuinfo_x86 *c)
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
if ((val & 3UL) == 1UL) {
|
if ((val & 3UL) == 1UL) {
|
||||||
/* PPIN available but disabled: */
|
/* PPIN locked in disabled mode */
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* If PPIN is disabled, but not locked, try to enable: */
|
/* If PPIN is disabled, try to enable */
|
||||||
if (!(val & 3UL)) {
|
if (!(val & 2UL)) {
|
||||||
wrmsrl_safe(MSR_PPIN_CTL, val | 2UL);
|
wrmsrl_safe(MSR_PPIN_CTL, val | 2UL);
|
||||||
rdmsrl_safe(MSR_PPIN_CTL, &val);
|
rdmsrl_safe(MSR_PPIN_CTL, &val);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((val & 3UL) == 2UL)
|
/* Is the enable bit set? */
|
||||||
|
if (val & 2UL)
|
||||||
set_cpu_cap(c, X86_FEATURE_INTEL_PPIN);
|
set_cpu_cap(c, X86_FEATURE_INTEL_PPIN);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -486,9 +486,14 @@ static int thermal_throttle_offline(unsigned int cpu)
|
|||||||
{
|
{
|
||||||
struct thermal_state *state = &per_cpu(thermal_state, cpu);
|
struct thermal_state *state = &per_cpu(thermal_state, cpu);
|
||||||
struct device *dev = get_cpu_device(cpu);
|
struct device *dev = get_cpu_device(cpu);
|
||||||
|
u32 l;
|
||||||
|
|
||||||
cancel_delayed_work(&state->package_throttle.therm_work);
|
/* Mask the thermal vector before draining evtl. pending work */
|
||||||
cancel_delayed_work(&state->core_throttle.therm_work);
|
l = apic_read(APIC_LVTTHMR);
|
||||||
|
apic_write(APIC_LVTTHMR, l | APIC_LVT_MASKED);
|
||||||
|
|
||||||
|
cancel_delayed_work_sync(&state->package_throttle.therm_work);
|
||||||
|
cancel_delayed_work_sync(&state->core_throttle.therm_work);
|
||||||
|
|
||||||
state->package_throttle.rate_control_active = false;
|
state->package_throttle.rate_control_active = false;
|
||||||
state->core_throttle.rate_control_active = false;
|
state->core_throttle.rate_control_active = false;
|
||||||
|
Loading…
Reference in New Issue
Block a user