]> git.pld-linux.org Git - packages/kernel.git/blobdiff - kernel-rt.patch
- 4.9.107
[packages/kernel.git] / kernel-rt.patch
index f620c48590e6f43d491029f419de47b80f2e1c1a..840aada4c0627bd874bacf5be3004deb9a3b9db8 100644 (file)
@@ -2649,10 +2649,10 @@ index bd7be8efdc4c..b3b0a7f7b1ca 100644
         * Leave lazy mode, flushing any hypercalls made here.
         * This must be done before restoring TLS segments so
 diff --git a/arch/x86/kvm/lapic.c b/arch/x86/kvm/lapic.c
-index 3f05c044720b..fe68afd37162 100644
+index b24b3c6d686e..02a062b0de5d 100644
 --- a/arch/x86/kvm/lapic.c
 +++ b/arch/x86/kvm/lapic.c
-@@ -1939,6 +1939,7 @@ int kvm_create_lapic(struct kvm_vcpu *vcpu)
+@@ -1944,6 +1944,7 @@ int kvm_create_lapic(struct kvm_vcpu *vcpu)
        hrtimer_init(&apic->lapic_timer.timer, CLOCK_MONOTONIC,
                     HRTIMER_MODE_ABS_PINNED);
        apic->lapic_timer.timer.function = apic_timer_fn;
@@ -2661,10 +2661,10 @@ index 3f05c044720b..fe68afd37162 100644
        /*
         * APIC is created enabled. This will prevent kvm_lapic_set_base from
 diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
-index 595f8149c0d9..31b15149f412 100644
+index 02d45296a97c..4963bd51d20b 100644
 --- a/arch/x86/kvm/x86.c
 +++ b/arch/x86/kvm/x86.c
-@@ -5961,6 +5961,13 @@ int kvm_arch_init(void *opaque)
+@@ -5966,6 +5966,13 @@ int kvm_arch_init(void *opaque)
                goto out;
        }
  
@@ -2957,7 +2957,7 @@ index b333fc45f9ec..8b85916e6986 100644
  
  /*
 diff --git a/block/blk-core.c b/block/blk-core.c
-index 95379fc83805..e531da0c9232 100644
+index b1c76aa73492..5808a85a7974 100644
 --- a/block/blk-core.c
 +++ b/block/blk-core.c
 @@ -125,6 +125,9 @@ void blk_rq_init(struct request_queue *q, struct request *rq)
@@ -2979,7 +2979,7 @@ index 95379fc83805..e531da0c9232 100644
  
        queue_flag_clear(QUEUE_FLAG_STOPPED, q);
        __blk_run_queue(q);
-@@ -659,7 +662,7 @@ int blk_queue_enter(struct request_queue *q, bool nowait)
+@@ -660,7 +663,7 @@ int blk_queue_enter(struct request_queue *q, bool nowait)
                if (nowait)
                        return -EBUSY;
  
@@ -2988,7 +2988,7 @@ index 95379fc83805..e531da0c9232 100644
                                !atomic_read(&q->mq_freeze_depth) ||
                                blk_queue_dying(q));
                if (blk_queue_dying(q))
-@@ -679,7 +682,7 @@ static void blk_queue_usage_counter_release(struct percpu_ref *ref)
+@@ -680,7 +683,7 @@ static void blk_queue_usage_counter_release(struct percpu_ref *ref)
        struct request_queue *q =
                container_of(ref, struct request_queue, q_usage_counter);
  
@@ -2997,7 +2997,7 @@ index 95379fc83805..e531da0c9232 100644
  }
  
  static void blk_rq_timed_out_timer(unsigned long data)
-@@ -748,7 +751,7 @@ struct request_queue *blk_alloc_queue_node(gfp_t gfp_mask, int node_id)
+@@ -750,7 +753,7 @@ struct request_queue *blk_alloc_queue_node(gfp_t gfp_mask, int node_id)
        q->bypass_depth = 1;
        __set_bit(QUEUE_FLAG_BYPASS, &q->queue_flags);
  
@@ -3006,7 +3006,7 @@ index 95379fc83805..e531da0c9232 100644
  
        /*
         * Init percpu_ref in atomic mode so that it's faster to shutdown.
-@@ -3200,7 +3203,7 @@ static void queue_unplugged(struct request_queue *q, unsigned int depth,
+@@ -3202,7 +3205,7 @@ static void queue_unplugged(struct request_queue *q, unsigned int depth,
                blk_run_queue_async(q);
        else
                __blk_run_queue(q);
@@ -3015,7 +3015,7 @@ index 95379fc83805..e531da0c9232 100644
  }
  
  static void flush_plug_callbacks(struct blk_plug *plug, bool from_schedule)
-@@ -3248,7 +3251,6 @@ EXPORT_SYMBOL(blk_check_plugged);
+@@ -3250,7 +3253,6 @@ EXPORT_SYMBOL(blk_check_plugged);
  void blk_flush_plug_list(struct blk_plug *plug, bool from_schedule)
  {
        struct request_queue *q;
@@ -3023,7 +3023,7 @@ index 95379fc83805..e531da0c9232 100644
        struct request *rq;
        LIST_HEAD(list);
        unsigned int depth;
-@@ -3268,11 +3270,6 @@ void blk_flush_plug_list(struct blk_plug *plug, bool from_schedule)
+@@ -3270,11 +3272,6 @@ void blk_flush_plug_list(struct blk_plug *plug, bool from_schedule)
        q = NULL;
        depth = 0;
  
@@ -3035,7 +3035,7 @@ index 95379fc83805..e531da0c9232 100644
        while (!list_empty(&list)) {
                rq = list_entry_rq(list.next);
                list_del_init(&rq->queuelist);
-@@ -3285,7 +3282,7 @@ void blk_flush_plug_list(struct blk_plug *plug, bool from_schedule)
+@@ -3287,7 +3284,7 @@ void blk_flush_plug_list(struct blk_plug *plug, bool from_schedule)
                                queue_unplugged(q, depth, from_schedule);
                        q = rq->q;
                        depth = 0;
@@ -3044,7 +3044,7 @@ index 95379fc83805..e531da0c9232 100644
                }
  
                /*
-@@ -3312,8 +3309,6 @@ void blk_flush_plug_list(struct blk_plug *plug, bool from_schedule)
+@@ -3314,8 +3311,6 @@ void blk_flush_plug_list(struct blk_plug *plug, bool from_schedule)
         */
        if (q)
                queue_unplugged(q, depth, from_schedule);
@@ -5465,7 +5465,7 @@ index e8819aa20415..dd7f9bf45d6c 100644
  #include <asm/serial.h>
  /*
 diff --git a/drivers/tty/serial/8250/8250_port.c b/drivers/tty/serial/8250/8250_port.c
-index 1ef31e3ee4a1..ff9f4e50563c 100644
+index f6e4373a8850..4620b51b0e7c 100644
 --- a/drivers/tty/serial/8250/8250_port.c
 +++ b/drivers/tty/serial/8250/8250_port.c
 @@ -35,6 +35,7 @@
@@ -5476,7 +5476,7 @@ index 1ef31e3ee4a1..ff9f4e50563c 100644
  #include <linux/uaccess.h>
  #include <linux/pm_runtime.h>
  #include <linux/timer.h>
-@@ -3140,9 +3141,9 @@ void serial8250_console_write(struct uart_8250_port *up, const char *s,
+@@ -3143,9 +3144,9 @@ void serial8250_console_write(struct uart_8250_port *up, const char *s,
  
        serial8250_rpm_get(up);
  
@@ -5573,7 +5573,7 @@ index fcc7aa248ce7..fb2c38d875f9 100644
        usb_anchor_resume_wakeups(anchor);
        atomic_dec(&urb->use_count);
 diff --git a/drivers/usb/gadget/function/f_fs.c b/drivers/usb/gadget/function/f_fs.c
-index 273320fa30ae..f2a125841653 100644
+index 4fce83266926..5e902a89d8e6 100644
 --- a/drivers/usb/gadget/function/f_fs.c
 +++ b/drivers/usb/gadget/function/f_fs.c
 @@ -1593,7 +1593,7 @@ static void ffs_data_put(struct ffs_data *ffs)
@@ -6031,7 +6031,7 @@ index 920aa0b1c6b0..3d6b5fd1bf06 100644
        inode->dirtied_when = 0;
  
 diff --git a/fs/libfs.c b/fs/libfs.c
-index 48826d4da189..3ea54d1fc431 100644
+index 9588780ad43e..9b37abd354c9 100644
 --- a/fs/libfs.c
 +++ b/fs/libfs.c
 @@ -89,7 +89,7 @@ static struct dentry *next_positive(struct dentry *parent,
@@ -6273,7 +6273,7 @@ index dff600ae0d74..d726d2e09353 100644
                mutex_unlock(&sp->so_delegreturn_mutex);
                put_nfs_open_context(ctx);
 diff --git a/fs/nfs/dir.c b/fs/nfs/dir.c
-index d04ec3814779..ba90d41d3c34 100644
+index 65566d5fcf39..5f08183dddcd 100644
 --- a/fs/nfs/dir.c
 +++ b/fs/nfs/dir.c
 @@ -485,7 +485,7 @@ static
@@ -6285,7 +6285,7 @@ index d04ec3814779..ba90d41d3c34 100644
        struct dentry *dentry;
        struct dentry *alias;
        struct inode *dir = d_inode(parent);
-@@ -1491,7 +1491,7 @@ int nfs_atomic_open(struct inode *dir, struct dentry *dentry,
+@@ -1492,7 +1492,7 @@ int nfs_atomic_open(struct inode *dir, struct dentry *dentry,
                    struct file *file, unsigned open_flags,
                    umode_t mode, int *opened)
  {
@@ -6294,7 +6294,7 @@ index d04ec3814779..ba90d41d3c34 100644
        struct nfs_open_context *ctx;
        struct dentry *res;
        struct iattr attr = { .ia_valid = ATTR_OPEN };
-@@ -1806,7 +1806,11 @@ int nfs_rmdir(struct inode *dir, struct dentry *dentry)
+@@ -1807,7 +1807,11 @@ int nfs_rmdir(struct inode *dir, struct dentry *dentry)
  
        trace_nfs_rmdir_enter(dir, dentry);
        if (d_really_is_positive(dentry)) {
@@ -6306,7 +6306,7 @@ index d04ec3814779..ba90d41d3c34 100644
                error = NFS_PROTO(dir)->rmdir(dir, &dentry->d_name);
                /* Ensure the VFS deletes this inode */
                switch (error) {
-@@ -1816,7 +1820,11 @@ int nfs_rmdir(struct inode *dir, struct dentry *dentry)
+@@ -1817,7 +1821,11 @@ int nfs_rmdir(struct inode *dir, struct dentry *dentry)
                case -ENOENT:
                        nfs_dentry_handle_enoent(dentry);
                }
@@ -6348,10 +6348,10 @@ index 1452177c822d..f43b01d54c59 100644
  };
  
 diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c
-index a53b8e0c896a..da0a483c5442 100644
+index 4638654e26f3..5dd6fd555c72 100644
 --- a/fs/nfs/nfs4proc.c
 +++ b/fs/nfs/nfs4proc.c
-@@ -2695,7 +2695,7 @@ static int _nfs4_open_and_get_state(struct nfs4_opendata *opendata,
+@@ -2691,7 +2691,7 @@ static int _nfs4_open_and_get_state(struct nfs4_opendata *opendata,
        unsigned int seq;
        int ret;
  
@@ -6360,7 +6360,7 @@ index a53b8e0c896a..da0a483c5442 100644
  
        ret = _nfs4_proc_open(opendata);
        if (ret != 0)
-@@ -2733,7 +2733,7 @@ static int _nfs4_open_and_get_state(struct nfs4_opendata *opendata,
+@@ -2729,7 +2729,7 @@ static int _nfs4_open_and_get_state(struct nfs4_opendata *opendata,
  
        if (d_inode(dentry) == state->inode) {
                nfs_inode_attach_open_context(ctx);
@@ -6370,7 +6370,7 @@ index a53b8e0c896a..da0a483c5442 100644
        }
  out:
 diff --git a/fs/nfs/nfs4state.c b/fs/nfs/nfs4state.c
-index 92671914067f..44038480c88c 100644
+index 71deeae6eefd..4be6999299dc 100644
 --- a/fs/nfs/nfs4state.c
 +++ b/fs/nfs/nfs4state.c
 @@ -488,7 +488,7 @@ nfs4_alloc_state_owner(struct nfs_server *server,
@@ -6781,7 +6781,7 @@ index 8fdcb783197d..d07dbeec7bc1 100644
  
  #endif /* _LINUX_BH_H */
 diff --git a/include/linux/buffer_head.h b/include/linux/buffer_head.h
-index 447a915db25d..e187a3356345 100644
+index 4431ea2c8802..0744157a97ca 100644
 --- a/include/linux/buffer_head.h
 +++ b/include/linux/buffer_head.h
 @@ -75,8 +75,50 @@ struct buffer_head {
@@ -12202,7 +12202,7 @@ index fc1ef736253c..83c666537a7a 100644
        return r;
  }
 diff --git a/kernel/events/core.c b/kernel/events/core.c
-index 36ff2d93f222..554aebf7e88b 100644
+index 13b9784427b0..f74fbfe5465c 100644
 --- a/kernel/events/core.c
 +++ b/kernel/events/core.c
 @@ -1050,6 +1050,7 @@ static void __perf_mux_hrtimer_init(struct perf_cpu_context *cpuctx, int cpu)
@@ -12213,7 +12213,7 @@ index 36ff2d93f222..554aebf7e88b 100644
  }
  
  static int perf_mux_hrtimer_restart(struct perf_cpu_context *cpuctx)
-@@ -8390,6 +8391,7 @@ static void perf_swevent_init_hrtimer(struct perf_event *event)
+@@ -8405,6 +8406,7 @@ static void perf_swevent_init_hrtimer(struct perf_event *event)
  
        hrtimer_init(&hwc->hrtimer, CLOCK_MONOTONIC, HRTIMER_MODE_REL);
        hwc->hrtimer.function = perf_swevent_hrtimer;
@@ -18056,7 +18056,7 @@ index 8d0f35debf35..b62cf6400fe0 100644
  }
  EXPORT_SYMBOL(completion_done);
 diff --git a/kernel/sched/core.c b/kernel/sched/core.c
-index 78181c03d9c7..034a738f1bf7 100644
+index e5066955cc3a..ed1ebcc2ff3d 100644
 --- a/kernel/sched/core.c
 +++ b/kernel/sched/core.c
 @@ -129,7 +129,11 @@ const_debug unsigned int sysctl_sched_features =
@@ -18174,7 +18174,7 @@ index 78181c03d9c7..034a738f1bf7 100644
  void resched_cpu(int cpu)
  {
        struct rq *rq = cpu_rq(cpu);
-@@ -525,11 +577,14 @@ void resched_cpu(int cpu)
+@@ -524,11 +576,14 @@ void resched_cpu(int cpu)
   */
  int get_nohz_timer_target(void)
  {
@@ -18191,7 +18191,7 @@ index 78181c03d9c7..034a738f1bf7 100644
  
        rcu_read_lock();
        for_each_domain(cpu, sd) {
-@@ -548,6 +603,8 @@ int get_nohz_timer_target(void)
+@@ -547,6 +602,8 @@ int get_nohz_timer_target(void)
                cpu = housekeeping_any_cpu();
  unlock:
        rcu_read_unlock();
@@ -18200,7 +18200,7 @@ index 78181c03d9c7..034a738f1bf7 100644
        return cpu;
  }
  /*
-@@ -1093,7 +1150,8 @@ void set_cpus_allowed_common(struct task_struct *p, const struct cpumask *new_ma
+@@ -1092,7 +1149,8 @@ void set_cpus_allowed_common(struct task_struct *p, const struct cpumask *new_ma
        p->nr_cpus_allowed = cpumask_weight(new_mask);
  }
  
@@ -18210,7 +18210,7 @@ index 78181c03d9c7..034a738f1bf7 100644
  {
        struct rq *rq = task_rq(p);
        bool queued, running;
-@@ -1122,6 +1180,98 @@ void do_set_cpus_allowed(struct task_struct *p, const struct cpumask *new_mask)
+@@ -1121,6 +1179,98 @@ void do_set_cpus_allowed(struct task_struct *p, const struct cpumask *new_mask)
                set_curr_task(rq, p);
  }
  
@@ -18309,7 +18309,7 @@ index 78181c03d9c7..034a738f1bf7 100644
  /*
   * Change a given task's CPU affinity. Migrate the thread to a
   * proper CPU and schedule it away if the CPU it's executing on
-@@ -1180,7 +1330,7 @@ static int __set_cpus_allowed_ptr(struct task_struct *p,
+@@ -1179,7 +1329,7 @@ static int __set_cpus_allowed_ptr(struct task_struct *p,
        }
  
        /* Can the task run on the task's current CPU? If so, we're done */
@@ -18318,7 +18318,7 @@ index 78181c03d9c7..034a738f1bf7 100644
                goto out;
  
        dest_cpu = cpumask_any_and(cpu_valid_mask, new_mask);
-@@ -1367,6 +1517,18 @@ int migrate_swap(struct task_struct *cur, struct task_struct *p)
+@@ -1366,6 +1516,18 @@ int migrate_swap(struct task_struct *cur, struct task_struct *p)
        return ret;
  }
  
@@ -18337,7 +18337,7 @@ index 78181c03d9c7..034a738f1bf7 100644
  /*
   * wait_task_inactive - wait for a thread to unschedule.
   *
-@@ -1411,7 +1573,7 @@ unsigned long wait_task_inactive(struct task_struct *p, long match_state)
+@@ -1410,7 +1572,7 @@ unsigned long wait_task_inactive(struct task_struct *p, long match_state)
                 * is actually now running somewhere else!
                 */
                while (task_running(rq, p)) {
@@ -18346,7 +18346,7 @@ index 78181c03d9c7..034a738f1bf7 100644
                                return 0;
                        cpu_relax();
                }
-@@ -1426,7 +1588,8 @@ unsigned long wait_task_inactive(struct task_struct *p, long match_state)
+@@ -1425,7 +1587,8 @@ unsigned long wait_task_inactive(struct task_struct *p, long match_state)
                running = task_running(rq, p);
                queued = task_on_rq_queued(p);
                ncsw = 0;
@@ -18356,7 +18356,7 @@ index 78181c03d9c7..034a738f1bf7 100644
                        ncsw = p->nvcsw | LONG_MIN; /* sets MSB */
                task_rq_unlock(rq, p, &rf);
  
-@@ -1681,10 +1844,6 @@ static inline void ttwu_activate(struct rq *rq, struct task_struct *p, int en_fl
+@@ -1680,10 +1843,6 @@ static inline void ttwu_activate(struct rq *rq, struct task_struct *p, int en_fl
  {
        activate_task(rq, p, en_flags);
        p->on_rq = TASK_ON_RQ_QUEUED;
@@ -18367,7 +18367,7 @@ index 78181c03d9c7..034a738f1bf7 100644
  }
  
  /*
-@@ -2019,8 +2178,27 @@ try_to_wake_up(struct task_struct *p, unsigned int state, int wake_flags)
+@@ -2018,8 +2177,27 @@ try_to_wake_up(struct task_struct *p, unsigned int state, int wake_flags)
         */
        smp_mb__before_spinlock();
        raw_spin_lock_irqsave(&p->pi_lock, flags);
@@ -18396,7 +18396,7 @@ index 78181c03d9c7..034a738f1bf7 100644
  
        trace_sched_waking(p);
  
-@@ -2103,53 +2281,6 @@ try_to_wake_up(struct task_struct *p, unsigned int state, int wake_flags)
+@@ -2102,53 +2280,6 @@ try_to_wake_up(struct task_struct *p, unsigned int state, int wake_flags)
  }
  
  /**
@@ -18450,7 +18450,7 @@ index 78181c03d9c7..034a738f1bf7 100644
   * wake_up_process - Wake up a specific process
   * @p: The process to be woken up.
   *
-@@ -2167,6 +2298,18 @@ int wake_up_process(struct task_struct *p)
+@@ -2166,6 +2297,18 @@ int wake_up_process(struct task_struct *p)
  }
  EXPORT_SYMBOL(wake_up_process);
  
@@ -18469,7 +18469,7 @@ index 78181c03d9c7..034a738f1bf7 100644
  int wake_up_state(struct task_struct *p, unsigned int state)
  {
        return try_to_wake_up(p, state, 0);
-@@ -2443,6 +2586,9 @@ int sched_fork(unsigned long clone_flags, struct task_struct *p)
+@@ -2442,6 +2585,9 @@ int sched_fork(unsigned long clone_flags, struct task_struct *p)
        p->on_cpu = 0;
  #endif
        init_task_preempt_count(p);
@@ -18479,7 +18479,7 @@ index 78181c03d9c7..034a738f1bf7 100644
  #ifdef CONFIG_SMP
        plist_node_init(&p->pushable_tasks, MAX_PRIO);
        RB_CLEAR_NODE(&p->pushable_dl_tasks);
-@@ -2771,21 +2917,16 @@ static struct rq *finish_task_switch(struct task_struct *prev)
+@@ -2770,21 +2916,16 @@ static struct rq *finish_task_switch(struct task_struct *prev)
        finish_arch_post_lock_switch();
  
        fire_sched_in_preempt_notifiers(current);
@@ -18506,7 +18506,7 @@ index 78181c03d9c7..034a738f1bf7 100644
                put_task_struct(prev);
        }
  
-@@ -3253,6 +3394,114 @@ static inline void schedule_debug(struct task_struct *prev)
+@@ -3252,6 +3393,114 @@ static inline void schedule_debug(struct task_struct *prev)
        schedstat_inc(this_rq()->sched_count);
  }
  
@@ -18621,7 +18621,7 @@ index 78181c03d9c7..034a738f1bf7 100644
  /*
   * Pick up the highest-prio task:
   */
-@@ -3369,19 +3618,6 @@ static void __sched notrace __schedule(bool preempt)
+@@ -3368,19 +3617,6 @@ static void __sched notrace __schedule(bool preempt)
                } else {
                        deactivate_task(rq, prev, DEQUEUE_SLEEP);
                        prev->on_rq = 0;
@@ -18641,7 +18641,7 @@ index 78181c03d9c7..034a738f1bf7 100644
                }
                switch_count = &prev->nvcsw;
        }
-@@ -3391,6 +3627,7 @@ static void __sched notrace __schedule(bool preempt)
+@@ -3390,6 +3626,7 @@ static void __sched notrace __schedule(bool preempt)
  
        next = pick_next_task(rq, prev, cookie);
        clear_tsk_need_resched(prev);
@@ -18649,7 +18649,7 @@ index 78181c03d9c7..034a738f1bf7 100644
        clear_preempt_need_resched();
        rq->clock_skip_update = 0;
  
-@@ -3438,9 +3675,20 @@ void __noreturn do_task_dead(void)
+@@ -3437,9 +3674,20 @@ void __noreturn do_task_dead(void)
  
  static inline void sched_submit_work(struct task_struct *tsk)
  {
@@ -18671,7 +18671,7 @@ index 78181c03d9c7..034a738f1bf7 100644
         * If we are going to sleep and we have plugged IO queued,
         * make sure to submit it to avoid deadlocks.
         */
-@@ -3448,6 +3696,12 @@ static inline void sched_submit_work(struct task_struct *tsk)
+@@ -3447,6 +3695,12 @@ static inline void sched_submit_work(struct task_struct *tsk)
                blk_schedule_flush_plug(tsk);
  }
  
@@ -18684,7 +18684,7 @@ index 78181c03d9c7..034a738f1bf7 100644
  asmlinkage __visible void __sched schedule(void)
  {
        struct task_struct *tsk = current;
-@@ -3458,6 +3712,7 @@ asmlinkage __visible void __sched schedule(void)
+@@ -3457,6 +3711,7 @@ asmlinkage __visible void __sched schedule(void)
                __schedule(false);
                sched_preempt_enable_no_resched();
        } while (need_resched());
@@ -18692,7 +18692,7 @@ index 78181c03d9c7..034a738f1bf7 100644
  }
  EXPORT_SYMBOL(schedule);
  
-@@ -3521,6 +3776,30 @@ static void __sched notrace preempt_schedule_common(void)
+@@ -3520,6 +3775,30 @@ static void __sched notrace preempt_schedule_common(void)
        } while (need_resched());
  }
  
@@ -18723,7 +18723,7 @@ index 78181c03d9c7..034a738f1bf7 100644
  #ifdef CONFIG_PREEMPT
  /*
   * this is the entry point to schedule() from in-kernel preemption
-@@ -3535,7 +3814,8 @@ asmlinkage __visible void __sched notrace preempt_schedule(void)
+@@ -3534,7 +3813,8 @@ asmlinkage __visible void __sched notrace preempt_schedule(void)
         */
        if (likely(!preemptible()))
                return;
@@ -18733,7 +18733,7 @@ index 78181c03d9c7..034a738f1bf7 100644
        preempt_schedule_common();
  }
  NOKPROBE_SYMBOL(preempt_schedule);
-@@ -3562,6 +3842,9 @@ asmlinkage __visible void __sched notrace preempt_schedule_notrace(void)
+@@ -3561,6 +3841,9 @@ asmlinkage __visible void __sched notrace preempt_schedule_notrace(void)
        if (likely(!preemptible()))
                return;
  
@@ -18743,7 +18743,7 @@ index 78181c03d9c7..034a738f1bf7 100644
        do {
                /*
                 * Because the function tracer can trace preempt_count_sub()
-@@ -3584,7 +3867,16 @@ asmlinkage __visible void __sched notrace preempt_schedule_notrace(void)
+@@ -3583,7 +3866,16 @@ asmlinkage __visible void __sched notrace preempt_schedule_notrace(void)
                 * an infinite recursion.
                 */
                prev_ctx = exception_enter();
@@ -18760,7 +18760,7 @@ index 78181c03d9c7..034a738f1bf7 100644
                exception_exit(prev_ctx);
  
                preempt_latency_stop(1);
-@@ -3630,10 +3922,25 @@ EXPORT_SYMBOL(default_wake_function);
+@@ -3629,10 +3921,25 @@ EXPORT_SYMBOL(default_wake_function);
  
  #ifdef CONFIG_RT_MUTEXES
  
@@ -18788,7 +18788,7 @@ index 78181c03d9c7..034a738f1bf7 100644
   *
   * This function changes the 'effective' priority of a task. It does
   * not touch ->normal_prio like __setscheduler().
-@@ -3641,16 +3948,40 @@ EXPORT_SYMBOL(default_wake_function);
+@@ -3640,16 +3947,40 @@ EXPORT_SYMBOL(default_wake_function);
   * Used by the rt_mutex code to implement priority inheritance
   * logic. Call site only calls if the priority of the task changed.
   */
@@ -18832,7 +18832,7 @@ index 78181c03d9c7..034a738f1bf7 100644
  
        /*
         * Idle task boosting is a nono in general. There is one
-@@ -3670,7 +4001,7 @@ void rt_mutex_setprio(struct task_struct *p, int prio)
+@@ -3669,7 +4000,7 @@ void rt_mutex_setprio(struct task_struct *p, int prio)
                goto out_unlock;
        }
  
@@ -18841,7 +18841,7 @@ index 78181c03d9c7..034a738f1bf7 100644
        oldprio = p->prio;
  
        if (oldprio == prio)
-@@ -3694,7 +4025,6 @@ void rt_mutex_setprio(struct task_struct *p, int prio)
+@@ -3693,7 +4024,6 @@ void rt_mutex_setprio(struct task_struct *p, int prio)
         *          running task
         */
        if (dl_prio(prio)) {
@@ -18849,7 +18849,7 @@ index 78181c03d9c7..034a738f1bf7 100644
                if (!dl_prio(p->normal_prio) ||
                    (pi_task && dl_entity_preempt(&pi_task->dl, &p->dl))) {
                        p->dl.dl_boosted = 1;
-@@ -3731,6 +4061,11 @@ void rt_mutex_setprio(struct task_struct *p, int prio)
+@@ -3730,6 +4060,11 @@ void rt_mutex_setprio(struct task_struct *p, int prio)
        balance_callback(rq);
        preempt_enable();
  }
@@ -18861,7 +18861,7 @@ index 78181c03d9c7..034a738f1bf7 100644
  #endif
  
  void set_user_nice(struct task_struct *p, long nice)
-@@ -3975,10 +4310,9 @@ static void __setscheduler(struct rq *rq, struct task_struct *p,
+@@ -3974,10 +4309,9 @@ static void __setscheduler(struct rq *rq, struct task_struct *p,
         * Keep a potential priority boosting if called from
         * sched_setscheduler().
         */
@@ -18874,7 +18874,7 @@ index 78181c03d9c7..034a738f1bf7 100644
  
        if (dl_prio(p->prio))
                p->sched_class = &dl_sched_class;
-@@ -4265,7 +4599,7 @@ static int __sched_setscheduler(struct task_struct *p,
+@@ -4264,7 +4598,7 @@ static int __sched_setscheduler(struct task_struct *p,
                 * the runqueue. This will be done when the task deboost
                 * itself.
                 */
@@ -18883,7 +18883,7 @@ index 78181c03d9c7..034a738f1bf7 100644
                if (new_effective_prio == oldprio)
                        queue_flags &= ~DEQUEUE_MOVE;
        }
-@@ -4940,6 +5274,7 @@ int __cond_resched_lock(spinlock_t *lock)
+@@ -4939,6 +5273,7 @@ int __cond_resched_lock(spinlock_t *lock)
  }
  EXPORT_SYMBOL(__cond_resched_lock);
  
@@ -18891,7 +18891,7 @@ index 78181c03d9c7..034a738f1bf7 100644
  int __sched __cond_resched_softirq(void)
  {
        BUG_ON(!in_softirq());
-@@ -4953,6 +5288,7 @@ int __sched __cond_resched_softirq(void)
+@@ -4952,6 +5287,7 @@ int __sched __cond_resched_softirq(void)
        return 0;
  }
  EXPORT_SYMBOL(__cond_resched_softirq);
@@ -18899,7 +18899,7 @@ index 78181c03d9c7..034a738f1bf7 100644
  
  /**
   * yield - yield the current processor to other threads.
-@@ -5316,7 +5652,9 @@ void init_idle(struct task_struct *idle, int cpu)
+@@ -5315,7 +5651,9 @@ void init_idle(struct task_struct *idle, int cpu)
  
        /* Set the preempt count _outside_ the spinlocks! */
        init_idle_preempt_count(idle, cpu);
@@ -18910,7 +18910,7 @@ index 78181c03d9c7..034a738f1bf7 100644
        /*
         * The idle tasks have their own, simple scheduling class:
         */
-@@ -5459,6 +5797,8 @@ void sched_setnuma(struct task_struct *p, int nid)
+@@ -5458,6 +5796,8 @@ void sched_setnuma(struct task_struct *p, int nid)
  #endif /* CONFIG_NUMA_BALANCING */
  
  #ifdef CONFIG_HOTPLUG_CPU
@@ -18919,7 +18919,7 @@ index 78181c03d9c7..034a738f1bf7 100644
  /*
   * Ensures that the idle task is using init_mm right before its cpu goes
   * offline.
-@@ -5473,7 +5813,12 @@ void idle_task_exit(void)
+@@ -5472,7 +5812,12 @@ void idle_task_exit(void)
                switch_mm(mm, &init_mm, current);
                finish_arch_post_lock_switch();
        }
@@ -18933,7 +18933,15 @@ index 78181c03d9c7..034a738f1bf7 100644
  }
  
  /*
-@@ -7434,6 +7779,10 @@ int sched_cpu_dying(unsigned int cpu)
+@@ -5881,6 +6226,7 @@ static int init_rootdomain(struct root_domain *rd)
+       rd->rto_cpu = -1;
+       raw_spin_lock_init(&rd->rto_lock);
+       init_irq_work(&rd->rto_push_work, rto_push_irq_work_func);
++      rd->rto_push_work.flags |= IRQ_WORK_HARD_IRQ;
+ #endif
+       init_dl_bw(&rd->dl_bw);
+@@ -7439,6 +7785,10 @@ int sched_cpu_dying(unsigned int cpu)
        update_max_interval();
        nohz_balance_exit_idle(cpu);
        hrtick_clear(rq);
@@ -18944,7 +18952,7 @@ index 78181c03d9c7..034a738f1bf7 100644
        return 0;
  }
  #endif
-@@ -7695,7 +8044,7 @@ void __init sched_init(void)
+@@ -7700,7 +8050,7 @@ void __init sched_init(void)
  #ifdef CONFIG_DEBUG_ATOMIC_SLEEP
  static inline int preempt_count_equals(int preempt_offset)
  {
@@ -19091,7 +19099,7 @@ index 69631fa46c2f..6d28fcd08872 100644
  #ifdef HAVE_RT_PUSH_IPI
  /*
 diff --git a/kernel/sched/rt.c b/kernel/sched/rt.c
-index f139f22ce30d..b0691f4e7d49 100644
+index 9c131168d933..340a0a5d435c 100644
 --- a/kernel/sched/rt.c
 +++ b/kernel/sched/rt.c
 @@ -47,6 +47,7 @@ void init_rt_bandwidth(struct rt_bandwidth *rt_b, u64 period, u64 runtime)
@@ -19103,10 +19111,10 @@ index f139f22ce30d..b0691f4e7d49 100644
  }
  
 diff --git a/kernel/sched/sched.h b/kernel/sched/sched.h
-index ad77d666583c..16df04073b57 100644
+index cff985feb6e7..280c7d5a7657 100644
 --- a/kernel/sched/sched.h
 +++ b/kernel/sched/sched.h
-@@ -1152,6 +1152,7 @@ static inline void finish_lock_switch(struct rq *rq, struct task_struct *prev)
+@@ -1162,6 +1162,7 @@ static inline void finish_lock_switch(struct rq *rq, struct task_struct *prev)
  #define WF_SYNC               0x01            /* waker goes to sleep after wakeup */
  #define WF_FORK               0x02            /* child wakeup after fork */
  #define WF_MIGRATED   0x4             /* internal use, task got migrated */
@@ -19114,7 +19122,7 @@ index ad77d666583c..16df04073b57 100644
  
  /*
   * To aid in avoiding the subversion of "niceness" due to uneven distribution
-@@ -1335,6 +1336,15 @@ extern void init_sched_fair_class(void);
+@@ -1345,6 +1346,15 @@ extern void init_sched_fair_class(void);
  extern void resched_curr(struct rq *rq);
  extern void resched_cpu(int cpu);
  
@@ -24873,11 +24881,11 @@ index 1afec32de6f2..11fa431046a8 100644
        dump_stack();
 diff --git a/localversion-rt b/localversion-rt
 new file mode 100644
-index 000000000000..c06cc4356292
+index 000000000000..66fa05e70f29
 --- /dev/null
 +++ b/localversion-rt
 @@ -0,0 +1 @@
-+-rt57
++-rt60
 diff --git a/mm/Kconfig b/mm/Kconfig
 index 86e3e0e74d20..77e5862a1ed2 100644
 --- a/mm/Kconfig
@@ -25129,7 +25137,7 @@ index 6f4d27c5bb32..5cd25c745a8f 100644
  #ifdef finish_arch_post_lock_switch
        finish_arch_post_lock_switch();
 diff --git a/mm/page_alloc.c b/mm/page_alloc.c
-index 4a044134ce84..3f58b5571c8c 100644
+index fbc38888252b..1cb08e1406ea 100644
 --- a/mm/page_alloc.c
 +++ b/mm/page_alloc.c
 @@ -61,6 +61,7 @@
@@ -25397,7 +25405,7 @@ index 4a044134ce84..3f58b5571c8c 100644
  }
  
  /*
-@@ -2636,7 +2696,7 @@ struct page *buffered_rmqueue(struct zone *preferred_zone,
+@@ -2629,7 +2689,7 @@ struct page *buffered_rmqueue(struct zone *preferred_zone,
                struct per_cpu_pages *pcp;
                struct list_head *list;
  
@@ -25406,7 +25414,7 @@ index 4a044134ce84..3f58b5571c8c 100644
                do {
                        pcp = &this_cpu_ptr(zone->pageset)->pcp;
                        list = &pcp->lists[migratetype];
-@@ -2663,7 +2723,7 @@ struct page *buffered_rmqueue(struct zone *preferred_zone,
+@@ -2656,7 +2716,7 @@ struct page *buffered_rmqueue(struct zone *preferred_zone,
                 * allocate greater than order-1 page units with __GFP_NOFAIL.
                 */
                WARN_ON_ONCE((gfp_flags & __GFP_NOFAIL) && (order > 1));
@@ -25415,7 +25423,7 @@ index 4a044134ce84..3f58b5571c8c 100644
  
                do {
                        page = NULL;
-@@ -2675,22 +2735,24 @@ struct page *buffered_rmqueue(struct zone *preferred_zone,
+@@ -2668,22 +2728,24 @@ struct page *buffered_rmqueue(struct zone *preferred_zone,
                        if (!page)
                                page = __rmqueue(zone, order, migratetype);
                } while (page && check_new_pages(page, order));
@@ -25444,7 +25452,7 @@ index 4a044134ce84..3f58b5571c8c 100644
        return NULL;
  }
  
-@@ -6568,7 +6630,9 @@ static int page_alloc_cpu_notify(struct notifier_block *self,
+@@ -6561,7 +6623,9 @@ static int page_alloc_cpu_notify(struct notifier_block *self,
        int cpu = (unsigned long)hcpu;
  
        if (action == CPU_DEAD || action == CPU_DEAD_FROZEN) {
@@ -25454,7 +25462,7 @@ index 4a044134ce84..3f58b5571c8c 100644
                drain_pages(cpu);
  
                /*
-@@ -6594,6 +6658,7 @@ static int page_alloc_cpu_notify(struct notifier_block *self,
+@@ -6587,6 +6651,7 @@ static int page_alloc_cpu_notify(struct notifier_block *self,
  void __init page_alloc_init(void)
  {
        hotcpu_notifier(page_alloc_cpu_notify, 0);
This page took 0.098689 seconds and 4 git commands to generate.