sched/core: Remove ifdeffery for saved_state
authorElliot Berman <quic_eberman@quicinc.com>
Fri, 8 Sep 2023 22:49:15 +0000 (15:49 -0700)
committerIngo Molnar <mingo@kernel.org>
Mon, 18 Sep 2023 06:13:57 +0000 (08:13 +0200)
In preparation for freezer to also use saved_state, remove the
CONFIG_PREEMPT_RT compilation guard around saved_state.

On the arm64 platform I tested which did not have CONFIG_PREEMPT_RT,
there was no statistically significant deviation by applying this patch.

Test methodology:

perf bench sched message -g 40 -l 40

Signed-off-by: Elliot Berman <quic_eberman@quicinc.com>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Signed-off-by: Ingo Molnar <mingo@kernel.org>
include/linux/sched.h
kernel/sched/core.c

index 77f01ac385f7a57695c2e9af5b826cb4f9b39f6a..dc37ae787e336d4d52d552ca26dcc834f98711f6 100644 (file)
@@ -750,10 +750,8 @@ struct task_struct {
 #endif
        unsigned int                    __state;
 
-#ifdef CONFIG_PREEMPT_RT
        /* saved state for "spinlock sleepers" */
        unsigned int                    saved_state;
-#endif
 
        /*
         * This begins the randomizable portion of task_struct. Only
index f39482d6a6e69b7f0a4792d9470225adbe4c4509..49541e3c1295eeb051f8f4da4c6fd95be1009223 100644 (file)
@@ -2232,23 +2232,20 @@ int __task_state_match(struct task_struct *p, unsigned int state)
        if (READ_ONCE(p->__state) & state)
                return 1;
 
-#ifdef CONFIG_PREEMPT_RT
        if (READ_ONCE(p->saved_state) & state)
                return -1;
-#endif
+
        return 0;
 }
 
 static __always_inline
 int task_state_match(struct task_struct *p, unsigned int state)
 {
-#ifdef CONFIG_PREEMPT_RT
        /*
         * Serialize against current_save_and_set_rtlock_wait_state() and
         * current_restore_rtlock_saved_state().
         */
        guard(raw_spinlock_irq)(&p->pi_lock);
-#endif
        return __task_state_match(p, state);
 }
 
@@ -4038,7 +4035,6 @@ bool ttwu_state_match(struct task_struct *p, unsigned int state, int *success)
 
        *success = !!(match = __task_state_match(p, state));
 
-#ifdef CONFIG_PREEMPT_RT
        /*
         * Saved state preserves the task state across blocking on
         * an RT lock.  If the state matches, set p::saved_state to
@@ -4054,7 +4050,7 @@ bool ttwu_state_match(struct task_struct *p, unsigned int state, int *success)
         */
        if (match < 0)
                p->saved_state = TASK_RUNNING;
-#endif
+
        return match > 0;
 }