if (val < rps->max_freq_softlimit)
                mask |= GEN6_PM_RP_UP_EI_EXPIRED | GEN6_PM_RP_UP_THRESHOLD;
 
-       mask &= READ_ONCE(rps->pm_events);
+       mask &= rps->pm_events;
 
        return rps_pm_sanitize_mask(rps, ~mask);
 }
 static void rps_enable_interrupts(struct intel_rps *rps)
 {
        struct intel_gt *gt = rps_to_gt(rps);
-       u32 events;
 
        rps_reset_ei(rps);
 
-       if (IS_VALLEYVIEW(gt->i915))
-               /* WaGsvRC0ResidencyMethod:vlv */
-               events = GEN6_PM_RP_UP_EI_EXPIRED;
-       else
-               events = (GEN6_PM_RP_UP_THRESHOLD |
-                         GEN6_PM_RP_DOWN_THRESHOLD |
-                         GEN6_PM_RP_DOWN_TIMEOUT);
-       WRITE_ONCE(rps->pm_events, events);
-
        spin_lock_irq(>->irq_lock);
        gen6_gt_pm_enable_irq(gt, rps->pm_events);
        spin_unlock_irq(>->irq_lock);
 {
        struct intel_gt *gt = rps_to_gt(rps);
 
-       WRITE_ONCE(rps->pm_events, 0);
-
        intel_uncore_write(gt->uncore,
                           GEN6_PMINTRMSK, rps_pm_sanitize_mask(rps, ~0u));
 
                intel_uncore_write_fw(uncore, GEN6_RC_VIDEO_FREQ,
                                      GEN9_FREQUENCY(rps->rp1_freq));
 
-       /* 1 second timeout */
-       intel_uncore_write_fw(uncore, GEN6_RP_DOWN_TIMEOUT,
-                             GT_INTERVAL_FROM_US(i915, 1000000));
-
        intel_uncore_write_fw(uncore, GEN6_RP_IDLE_HYSTERSIS, 0xa);
 
+       rps->pm_events = GEN6_PM_RP_UP_THRESHOLD | GEN6_PM_RP_DOWN_THRESHOLD;
+
        return rps_reset(rps);
 }
 
        intel_uncore_write_fw(uncore, GEN6_RC_VIDEO_FREQ,
                              HSW_FREQUENCY(rps->rp1_freq));
 
-       /* NB: Docs say 1s, and 1000000 - which aren't equivalent */
-       intel_uncore_write_fw(uncore, GEN6_RP_DOWN_TIMEOUT,
-                             100000000 / 128); /* 1 second timeout */
-
        intel_uncore_write_fw(uncore, GEN6_RP_IDLE_HYSTERSIS, 10);
 
+       rps->pm_events = GEN6_PM_RP_UP_THRESHOLD | GEN6_PM_RP_DOWN_THRESHOLD;
+
        return rps_reset(rps);
 }
 
        intel_uncore_write_fw(uncore, GEN6_RP_DOWN_TIMEOUT, 50000);
        intel_uncore_write_fw(uncore, GEN6_RP_IDLE_HYSTERSIS, 10);
 
+       rps->pm_events = (GEN6_PM_RP_UP_THRESHOLD |
+                         GEN6_PM_RP_DOWN_THRESHOLD |
+                         GEN6_PM_RP_DOWN_TIMEOUT);
+
        return rps_reset(rps);
 }
 
                              GEN6_RP_UP_BUSY_AVG |
                              GEN6_RP_DOWN_IDLE_AVG);
 
+       rps->pm_events = (GEN6_PM_RP_UP_THRESHOLD |
+                         GEN6_PM_RP_DOWN_THRESHOLD |
+                         GEN6_PM_RP_DOWN_TIMEOUT);
+
        /* Setting Fixed Bias */
        vlv_punit_get(i915);
 
                              GEN6_RP_UP_BUSY_AVG |
                              GEN6_RP_DOWN_IDLE_CONT);
 
+       /* WaGsvRC0ResidencyMethod:vlv */
+       rps->pm_events = GEN6_PM_RP_UP_EI_EXPIRED;
+
        vlv_punit_get(i915);
 
        /* Setting Fixed Bias */
        u32 pm_iir = 0;
 
        spin_lock_irq(>->irq_lock);
-       pm_iir = fetch_and_zero(&rps->pm_iir) & READ_ONCE(rps->pm_events);
+       pm_iir = fetch_and_zero(&rps->pm_iir) & rps->pm_events;
        client_boost = atomic_read(&rps->num_waiters);
        spin_unlock_irq(>->irq_lock);
 
        struct intel_gt *gt = rps_to_gt(rps);
        u32 events;
 
-       events = pm_iir & READ_ONCE(rps->pm_events);
+       events = pm_iir & rps->pm_events;
        if (events) {
                spin_lock(>->irq_lock);