#endif
 };
 
+struct sched_rt_entity {
+       struct list_head run_list;
+       unsigned int time_slice;
+};
+
 struct task_struct {
        volatile long state;    /* -1 unrunnable, 0 runnable, >0 stopped */
        void *stack;
 #endif
 
        int prio, static_prio, normal_prio;
-       struct list_head run_list;
        const struct sched_class *sched_class;
        struct sched_entity se;
+       struct sched_rt_entity rt;
 
 #ifdef CONFIG_PREEMPT_NOTIFIERS
        /* list of struct preempt_notifier: */
        unsigned int policy;
        cpumask_t cpus_allowed;
        int nr_cpus_allowed;
-       unsigned int time_slice;
 
 #ifdef CONFIG_PREEMPT_RCU
        int rcu_read_lock_nesting;
 
 {
        struct rt_prio_array *array = &rq->rt.active;
 
-       list_add_tail(&p->run_list, array->queue + p->prio);
+       list_add_tail(&p->rt.run_list, array->queue + p->prio);
        __set_bit(p->prio, array->bitmap);
        inc_cpu_load(rq, p->se.load.weight);
 
 
        update_curr_rt(rq);
 
-       list_del(&p->run_list);
+       list_del(&p->rt.run_list);
        if (list_empty(array->queue + p->prio))
                __clear_bit(p->prio, array->bitmap);
        dec_cpu_load(rq, p->se.load.weight);
 {
        struct rt_prio_array *array = &rq->rt.active;
 
-       list_move_tail(&p->run_list, array->queue + p->prio);
+       list_move_tail(&p->rt.run_list, array->queue + p->prio);
 }
 
 static void
                return NULL;
 
        queue = array->queue + idx;
-       next = list_entry(queue->next, struct task_struct, run_list);
+       next = list_entry(queue->next, struct task_struct, rt.run_list);
 
        next->se.exec_start = rq->clock;
 
        queue = array->queue + idx;
        BUG_ON(list_empty(queue));
 
-       next = list_entry(queue->next, struct task_struct, run_list);
+       next = list_entry(queue->next, struct task_struct, rt.run_list);
        if (unlikely(pick_rt_task(rq, next, cpu)))
                goto out;
 
        if (queue->next->next != queue) {
                /* same prio task */
                next = list_entry(queue->next->next, struct task_struct,
-                                 run_list);
+                                 rt.run_list);
                if (pick_rt_task(rq, next, cpu))
                        goto out;
        }
        queue = array->queue + idx;
        BUG_ON(list_empty(queue));
 
-       list_for_each_entry(next, queue, run_list) {
+       list_for_each_entry(next, queue, rt.run_list) {
                if (pick_rt_task(rq, next, cpu))
                        goto out;
        }
        if (p->policy != SCHED_RR)
                return;
 
-       if (--p->time_slice)
+       if (--p->rt.time_slice)
                return;
 
-       p->time_slice = DEF_TIMESLICE;
+       p->rt.time_slice = DEF_TIMESLICE;
 
        /*
         * Requeue to the end of queue if we are not the only element
         * on the queue:
         */
-       if (p->run_list.prev != p->run_list.next) {
+       if (p->rt.run_list.prev != p->rt.run_list.next) {
                requeue_task_rt(rq, p);
                set_tsk_need_resched(p);
        }