{
        lockdep_assert_held(&p->pi_lock);
 
-       if (p->nr_cpus_allowed > 1 && !is_migration_disabled(p))
+       if (p->nr_cpus_allowed > 1 && !is_migration_disabled(p)) {
                cpu = p->sched_class->select_task_rq(p, cpu, *wake_flags);
-       else
+               *wake_flags |= WF_RQ_SELECTED;
+       } else {
                cpu = cpumask_any(p->cpus_ptr);
+       }
 
        /*
         * In order not to call set_task_cpu() on a blocking task we need
                rq->nr_uninterruptible--;
 
 #ifdef CONFIG_SMP
+       if (wake_flags & WF_RQ_SELECTED)
+               en_flags |= ENQUEUE_RQ_SELECTED;
        if (wake_flags & WF_MIGRATED)
                en_flags |= ENQUEUE_MIGRATED;
        else
 
 #define WF_SYNC                        0x10 /* Waker goes to sleep after wakeup */
 #define WF_MIGRATED            0x20 /* Internal use, task got migrated */
 #define WF_CURRENT_CPU         0x40 /* Prefer to move the wakee to the current CPU. */
+#define WF_RQ_SELECTED         0x80 /* ->select_task_rq() was called */
 
 #ifdef CONFIG_SMP
 static_assert(WF_EXEC == SD_BALANCE_EXEC);
  * ENQUEUE_HEAD      - place at front of runqueue (tail if not specified)
  * ENQUEUE_REPLENISH - CBS (replenish runtime and postpone deadline)
  * ENQUEUE_MIGRATED  - the task was migrated during wakeup
+ * ENQUEUE_RQ_SELECTED - ->select_task_rq() was called
  *
  */
 
 #define ENQUEUE_INITIAL                0x80
 #define ENQUEUE_MIGRATING      0x100
 #define ENQUEUE_DELAYED                0x200
+#define ENQUEUE_RQ_SELECTED    0x400
 
 #define RETRY_TASK             ((void *)-1UL)