]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
cpufreq: intel_pstate: Simplify spinlock locking
authorRafael J. Wysocki <rafael.j.wysocki@intel.com>
Thu, 21 Mar 2024 19:30:42 +0000 (20:30 +0100)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Tue, 2 Apr 2024 10:56:33 +0000 (12:56 +0200)
Because intel_pstate_enable/disable_hwp_interrupt() are only called from
thread context, they need not save the IRQ flags when using a spinlock
as interrupts are guaranteed to be enabled when they run, so make them
use spin_lock/unlock_irq().

Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
drivers/cpufreq/intel_pstate.c

index bcbeed92458d427b1c80447eecbaf8948d1632bf..c0abf77c56ba0fa2f897882e6a10c56c484cbeae 100644 (file)
@@ -1682,30 +1682,26 @@ ack_intr:
 
 static void intel_pstate_disable_hwp_interrupt(struct cpudata *cpudata)
 {
-       unsigned long flags;
-
        if (!boot_cpu_has(X86_FEATURE_HWP_NOTIFY))
                return;
 
        /* wrmsrl_on_cpu has to be outside spinlock as this can result in IPC */
        wrmsrl_on_cpu(cpudata->cpu, MSR_HWP_INTERRUPT, 0x00);
 
-       spin_lock_irqsave(&hwp_notify_lock, flags);
+       spin_lock_irq(&hwp_notify_lock);
        if (cpumask_test_and_clear_cpu(cpudata->cpu, &hwp_intr_enable_mask))
                cancel_delayed_work(&cpudata->hwp_notify_work);
-       spin_unlock_irqrestore(&hwp_notify_lock, flags);
+       spin_unlock_irq(&hwp_notify_lock);
 }
 
 static void intel_pstate_enable_hwp_interrupt(struct cpudata *cpudata)
 {
        /* Enable HWP notification interrupt for guaranteed performance change */
        if (boot_cpu_has(X86_FEATURE_HWP_NOTIFY)) {
-               unsigned long flags;
-
-               spin_lock_irqsave(&hwp_notify_lock, flags);
+               spin_lock_irq(&hwp_notify_lock);
                INIT_DELAYED_WORK(&cpudata->hwp_notify_work, intel_pstate_notify_work);
                cpumask_set_cpu(cpudata->cpu, &hwp_intr_enable_mask);
-               spin_unlock_irqrestore(&hwp_notify_lock, flags);
+               spin_unlock_irq(&hwp_notify_lock);
 
                /* wrmsrl_on_cpu has to be outside spinlock as this can result in IPC */
                wrmsrl_on_cpu(cpudata->cpu, MSR_HWP_INTERRUPT, 0x01);