diff options
author | Sebastian Andrzej Siewior <bigeasy@linutronix.de> | 2017-01-20 11:02:45 +0100 |
---|---|---|
committer | Sebastian Andrzej Siewior <bigeasy@linutronix.de> | 2017-01-20 11:02:45 +0100 |
commit | 6252f307c9bba52cf4c2ff0a10607807b7a6b483 (patch) | |
tree | 39f0f546e81f88b8cfb8466e55a78d1b8f9fc233 | |
parent | 343386da95cbf5546691a85769d643a1c1b78dab (diff) | |
download | 4.12-rt-patches-6252f307c9bba52cf4c2ff0a10607807b7a6b483.tar.gz |
[ANNOUNCE] v4.9.4-rt2
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
36 files changed, 73 insertions, 128 deletions
diff --git a/patches/btrfs-drop-trace_btrfs_all_work_done-from-normal_wor.patch b/patches/btrfs-drop-trace_btrfs_all_work_done-from-normal_wor.patch index ca7952d7b49375..852d913e82aa5f 100644 --- a/patches/btrfs-drop-trace_btrfs_all_work_done-from-normal_wor.patch +++ b/patches/btrfs-drop-trace_btrfs_all_work_done-from-normal_wor.patch @@ -27,7 +27,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> --- a/fs/btrfs/async-thread.c +++ b/fs/btrfs/async-thread.c -@@ -318,8 +318,6 @@ static void normal_work_helper(struct bt +@@ -332,8 +332,6 @@ static void normal_work_helper(struct bt set_bit(WORK_DONE_BIT, &work->flags); run_ordered_work(wq); } diff --git a/patches/btrfs-swap-free-and-trace-point-in-run_ordered_work.patch b/patches/btrfs-swap-free-and-trace-point-in-run_ordered_work.patch index 41d0070ef22339..4bd02b5779d6b6 100644 --- a/patches/btrfs-swap-free-and-trace-point-in-run_ordered_work.patch +++ b/patches/btrfs-swap-free-and-trace-point-in-run_ordered_work.patch @@ -21,7 +21,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> --- a/fs/btrfs/async-thread.c +++ b/fs/btrfs/async-thread.c -@@ -288,8 +288,8 @@ static void run_ordered_work(struct __bt +@@ -302,8 +302,8 @@ static void run_ordered_work(struct __bt * we don't want to call the ordered free functions * with the lock held though */ diff --git a/patches/cond-resched-softirq-rt.patch b/patches/cond-resched-softirq-rt.patch index 89532ca7e9dbe4..d53bdadfad63ff 100644 --- a/patches/cond-resched-softirq-rt.patch +++ b/patches/cond-resched-softirq-rt.patch @@ -15,7 +15,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> --- a/include/linux/sched.h +++ b/include/linux/sched.h -@@ -3366,12 +3366,16 @@ extern int __cond_resched_lock(spinlock_ +@@ -3367,12 +3367,16 @@ extern int __cond_resched_lock(spinlock_ __cond_resched_lock(lock); \ }) diff --git a/patches/cpu-rt-rework-cpu-down.patch b/patches/cpu-rt-rework-cpu-down.patch index 8a91b7f8206716..495b2da2d2b451 100644 --- a/patches/cpu-rt-rework-cpu-down.patch +++ b/patches/cpu-rt-rework-cpu-down.patch @@ -56,7 +56,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> --- a/include/linux/sched.h +++ b/include/linux/sched.h -@@ -2473,6 +2473,10 @@ extern void do_set_cpus_allowed(struct t +@@ -2474,6 +2474,10 @@ extern void do_set_cpus_allowed(struct t extern int set_cpus_allowed_ptr(struct task_struct *p, const struct cpumask *new_mask); @@ -67,7 +67,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> #else static inline void do_set_cpus_allowed(struct task_struct *p, const struct cpumask *new_mask) -@@ -2485,6 +2489,9 @@ static inline int set_cpus_allowed_ptr(s +@@ -2486,6 +2490,9 @@ static inline int set_cpus_allowed_ptr(s return -EINVAL; return 0; } diff --git a/patches/dm-make-rt-aware.patch b/patches/dm-make-rt-aware.patch index 08238ec4c9abc3..5d4b4f5aae9390 100644 --- a/patches/dm-make-rt-aware.patch +++ b/patches/dm-make-rt-aware.patch @@ -15,7 +15,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> --- a/drivers/md/dm-rq.c +++ b/drivers/md/dm-rq.c -@@ -832,7 +832,7 @@ static void dm_old_request_fn(struct req +@@ -838,7 +838,7 @@ static void dm_old_request_fn(struct req /* Establish tio->ti before queuing work (map_tio_request) */ tio->ti = ti; kthread_queue_work(&md->kworker, &tio->work); diff --git a/patches/hotplug-light-get-online-cpus.patch b/patches/hotplug-light-get-online-cpus.patch index 998480b06402d1..4ac72d0a4a887d 100644 --- a/patches/hotplug-light-get-online-cpus.patch +++ b/patches/hotplug-light-get-online-cpus.patch @@ -18,7 +18,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> --- a/include/linux/cpu.h +++ b/include/linux/cpu.h -@@ -180,9 +180,6 @@ static inline void cpu_notifier_register +@@ -173,9 +173,6 @@ static inline void cpu_notifier_register #endif /* CONFIG_SMP */ extern struct bus_type cpu_subsys; @@ -28,7 +28,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> #ifdef CONFIG_HOTPLUG_CPU /* Stop CPUs going up and down. */ -@@ -192,6 +189,8 @@ extern void get_online_cpus(void); +@@ -185,6 +182,8 @@ extern void get_online_cpus(void); extern void put_online_cpus(void); extern void cpu_hotplug_disable(void); extern void cpu_hotplug_enable(void); @@ -37,7 +37,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> #define hotcpu_notifier(fn, pri) cpu_notifier(fn, pri) #define __hotcpu_notifier(fn, pri) __cpu_notifier(fn, pri) #define register_hotcpu_notifier(nb) register_cpu_notifier(nb) -@@ -209,6 +208,8 @@ static inline void cpu_hotplug_done(void +@@ -202,6 +201,8 @@ static inline void cpu_hotplug_done(void #define put_online_cpus() do { } while (0) #define cpu_hotplug_disable() do { } while (0) #define cpu_hotplug_enable() do { } while (0) diff --git a/patches/hrtimer-fixup-hrtimer-callback-changes-for-preempt-r.patch b/patches/hrtimer-fixup-hrtimer-callback-changes-for-preempt-r.patch index 081a6b79b263d6..56d7c4fd20586b 100644 --- a/patches/hrtimer-fixup-hrtimer-callback-changes-for-preempt-r.patch +++ b/patches/hrtimer-fixup-hrtimer-callback-changes-for-preempt-r.patch @@ -330,7 +330,7 @@ Signed-off-by: Ingo Molnar <mingo@elte.hu> /* Get the next period (per-CPU) */ --- a/kernel/watchdog.c +++ b/kernel/watchdog.c -@@ -523,6 +523,7 @@ static void watchdog_enable(unsigned int +@@ -522,6 +522,7 @@ static void watchdog_enable(unsigned int /* kick off the timer for the hardlockup detector */ hrtimer_init(hrtimer, CLOCK_MONOTONIC, HRTIMER_MODE_REL); hrtimer->function = watchdog_timer_fn; diff --git a/patches/i915-bogus-warning-from-i915-when-running-on-PREEMPT.patch b/patches/i915-bogus-warning-from-i915-when-running-on-PREEMPT.patch index 0c7e8ebfdfc421..898a270e27f061 100644 --- a/patches/i915-bogus-warning-from-i915-when-running-on-PREEMPT.patch +++ b/patches/i915-bogus-warning-from-i915-when-running-on-PREEMPT.patch @@ -18,7 +18,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> --- a/drivers/gpu/drm/i915/intel_display.c +++ b/drivers/gpu/drm/i915/intel_display.c -@@ -12142,7 +12142,7 @@ void intel_check_page_flip(struct drm_i9 +@@ -12131,7 +12131,7 @@ void intel_check_page_flip(struct drm_i9 struct intel_crtc *intel_crtc = to_intel_crtc(crtc); struct intel_flip_work *work; diff --git a/patches/infiniband-mellanox-ib-use-nort-irq.patch b/patches/infiniband-mellanox-ib-use-nort-irq.patch index db9e31d3dea33f..f7456ed0b8dc43 100644 --- a/patches/infiniband-mellanox-ib-use-nort-irq.patch +++ b/patches/infiniband-mellanox-ib-use-nort-irq.patch @@ -20,7 +20,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> --- a/drivers/infiniband/ulp/ipoib/ipoib_multicast.c +++ b/drivers/infiniband/ulp/ipoib/ipoib_multicast.c -@@ -899,7 +899,7 @@ void ipoib_mcast_restart_task(struct wor +@@ -902,7 +902,7 @@ void ipoib_mcast_restart_task(struct wor ipoib_dbg_mcast(priv, "restarting multicast task\n"); @@ -29,7 +29,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> netif_addr_lock(dev); spin_lock(&priv->lock); -@@ -981,7 +981,7 @@ void ipoib_mcast_restart_task(struct wor +@@ -984,7 +984,7 @@ void ipoib_mcast_restart_task(struct wor spin_unlock(&priv->lock); netif_addr_unlock(dev); diff --git a/patches/introduce_migrate_disable_cpu_light.patch b/patches/introduce_migrate_disable_cpu_light.patch index 94a266d99b0415..a4dd649cf76e18 100644 --- a/patches/introduce_migrate_disable_cpu_light.patch +++ b/patches/introduce_migrate_disable_cpu_light.patch @@ -41,7 +41,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> --- a/include/linux/cpu.h +++ b/include/linux/cpu.h -@@ -180,6 +180,9 @@ static inline void cpu_notifier_register +@@ -173,6 +173,9 @@ static inline void cpu_notifier_register #endif /* CONFIG_SMP */ extern struct bus_type cpu_subsys; @@ -89,7 +89,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> int nr_cpus_allowed; cpumask_t cpus_allowed; -@@ -1990,14 +1996,6 @@ static inline struct vm_struct *task_sta +@@ -1991,14 +1997,6 @@ static inline struct vm_struct *task_sta } #endif @@ -104,7 +104,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> #define TNF_MIGRATED 0x01 #define TNF_NO_GROUP 0x02 #define TNF_SHARED 0x04 -@@ -3515,6 +3513,31 @@ static inline void set_task_cpu(struct t +@@ -3516,6 +3514,31 @@ static inline void set_task_cpu(struct t #endif /* CONFIG_SMP */ diff --git a/patches/iommu-vt-d-don-t-disable-preemption-while-accessing-.patch b/patches/iommu-vt-d-don-t-disable-preemption-while-accessing-.patch index bd84f97cbf9dae..379fe83f5b31e3 100644 --- a/patches/iommu-vt-d-don-t-disable-preemption-while-accessing-.patch +++ b/patches/iommu-vt-d-don-t-disable-preemption-while-accessing-.patch @@ -35,7 +35,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> /* bitmap for indexing intel_iommus */ static int g_num_of_iommus; -@@ -3696,10 +3696,8 @@ static void add_unmap(struct dmar_domain +@@ -3715,10 +3715,8 @@ static void add_unmap(struct dmar_domain struct intel_iommu *iommu; struct deferred_flush_entry *entry; struct deferred_flush_data *flush_data; @@ -47,7 +47,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> /* Flush all CPUs' entries to avoid deferring too much. If * this becomes a bottleneck, can just flush us, and rely on -@@ -3732,8 +3730,6 @@ static void add_unmap(struct dmar_domain +@@ -3751,8 +3749,6 @@ static void add_unmap(struct dmar_domain } flush_data->size++; spin_unlock_irqrestore(&flush_data->lock, flags); diff --git a/patches/latency-hist.patch b/patches/latency-hist.patch index 7469413e997426..af1c60ef6a3fcd 100644 --- a/patches/latency-hist.patch +++ b/patches/latency-hist.patch @@ -236,7 +236,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> int start_pid; --- a/include/linux/sched.h +++ b/include/linux/sched.h -@@ -1917,6 +1917,12 @@ struct task_struct { +@@ -1918,6 +1918,12 @@ struct task_struct { /* bitmask and counter of trace recursion */ unsigned long trace_recursion; #endif /* CONFIG_TRACING */ diff --git a/patches/localversion.patch b/patches/localversion.patch index a02382e6df7098..279489a1d1455d 100644 --- a/patches/localversion.patch +++ b/patches/localversion.patch @@ -10,4 +10,4 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> --- /dev/null +++ b/localversion-rt @@ -0,0 +1 @@ -+-rt1 ++-rt2 diff --git a/patches/mm-convert-swap-to-percpu-locked.patch b/patches/mm-convert-swap-to-percpu-locked.patch index 980ef9c9fa9f34..e638baa0a10224 100644 --- a/patches/mm-convert-swap-to-percpu-locked.patch +++ b/patches/mm-convert-swap-to-percpu-locked.patch @@ -27,7 +27,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> extern void lru_cache_add_file(struct page *page); --- a/mm/compaction.c +++ b/mm/compaction.c -@@ -1612,10 +1612,12 @@ static enum compact_result compact_zone( +@@ -1593,10 +1593,12 @@ static enum compact_result compact_zone( block_start_pfn(cc->migrate_pfn, cc->order); if (cc->last_migrated_pfn < current_block_start) { @@ -44,7 +44,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> } --- a/mm/page_alloc.c +++ b/mm/page_alloc.c -@@ -6559,7 +6559,9 @@ static int page_alloc_cpu_notify(struct +@@ -6567,7 +6567,9 @@ static int page_alloc_cpu_notify(struct int cpu = (unsigned long)hcpu; if (action == CPU_DEAD || action == CPU_DEAD_FROZEN) { diff --git a/patches/mm-page_alloc-reduce-lock-sections-further.patch b/patches/mm-page_alloc-reduce-lock-sections-further.patch index 63a3a83b6c1844..ec723b03314a0f 100644 --- a/patches/mm-page_alloc-reduce-lock-sections-further.patch +++ b/patches/mm-page_alloc-reduce-lock-sections-further.patch @@ -143,7 +143,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> } static void __meminit __init_single_page(struct page *page, unsigned long pfn, -@@ -2251,16 +2277,18 @@ static int rmqueue_bulk(struct zone *zon +@@ -2259,16 +2285,18 @@ static int rmqueue_bulk(struct zone *zon void drain_zone_pages(struct zone *zone, struct per_cpu_pages *pcp) { unsigned long flags; @@ -163,7 +163,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> } #endif -@@ -2276,16 +2304,21 @@ static void drain_pages_zone(unsigned in +@@ -2284,16 +2312,21 @@ static void drain_pages_zone(unsigned in unsigned long flags; struct per_cpu_pageset *pset; struct per_cpu_pages *pcp; @@ -187,7 +187,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> } /* -@@ -2467,8 +2500,13 @@ void free_hot_cold_page(struct page *pag +@@ -2475,8 +2508,13 @@ void free_hot_cold_page(struct page *pag pcp->count++; if (pcp->count >= pcp->high) { unsigned long batch = READ_ONCE(pcp->batch); diff --git a/patches/mm-page_alloc-rt-friendly-per-cpu-pages.patch b/patches/mm-page_alloc-rt-friendly-per-cpu-pages.patch index 7066fcb16f33e8..53435ed7c3c0c4 100644 --- a/patches/mm-page_alloc-rt-friendly-per-cpu-pages.patch +++ b/patches/mm-page_alloc-rt-friendly-per-cpu-pages.patch @@ -57,7 +57,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> } static void __init __free_pages_boot_core(struct page *page, unsigned int order) -@@ -2240,14 +2253,14 @@ void drain_zone_pages(struct zone *zone, +@@ -2248,14 +2261,14 @@ void drain_zone_pages(struct zone *zone, unsigned long flags; int to_drain, batch; @@ -74,7 +74,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> } #endif -@@ -2264,7 +2277,7 @@ static void drain_pages_zone(unsigned in +@@ -2272,7 +2285,7 @@ static void drain_pages_zone(unsigned in struct per_cpu_pageset *pset; struct per_cpu_pages *pcp; @@ -83,7 +83,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> pset = per_cpu_ptr(zone->pageset, cpu); pcp = &pset->pcp; -@@ -2272,7 +2285,7 @@ static void drain_pages_zone(unsigned in +@@ -2280,7 +2293,7 @@ static void drain_pages_zone(unsigned in free_pcppages_bulk(zone, pcp->count, pcp); pcp->count = 0; } @@ -92,7 +92,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> } /* -@@ -2358,8 +2371,17 @@ void drain_all_pages(struct zone *zone) +@@ -2366,8 +2379,17 @@ void drain_all_pages(struct zone *zone) else cpumask_clear_cpu(cpu, &cpus_with_pcps); } @@ -110,7 +110,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> } #ifdef CONFIG_HIBERNATION -@@ -2419,7 +2441,7 @@ void free_hot_cold_page(struct page *pag +@@ -2427,7 +2449,7 @@ void free_hot_cold_page(struct page *pag migratetype = get_pfnblock_migratetype(page, pfn); set_pcppage_migratetype(page, migratetype); @@ -119,7 +119,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> __count_vm_event(PGFREE); /* -@@ -2450,7 +2472,7 @@ void free_hot_cold_page(struct page *pag +@@ -2458,7 +2480,7 @@ void free_hot_cold_page(struct page *pag } out: @@ -128,7 +128,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> } /* -@@ -2592,7 +2614,7 @@ struct page *buffered_rmqueue(struct zon +@@ -2600,7 +2622,7 @@ struct page *buffered_rmqueue(struct zon struct per_cpu_pages *pcp; struct list_head *list; @@ -137,7 +137,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> do { pcp = &this_cpu_ptr(zone->pageset)->pcp; list = &pcp->lists[migratetype]; -@@ -2619,7 +2641,7 @@ struct page *buffered_rmqueue(struct zon +@@ -2627,7 +2649,7 @@ struct page *buffered_rmqueue(struct zon * allocate greater than order-1 page units with __GFP_NOFAIL. */ WARN_ON_ONCE((gfp_flags & __GFP_NOFAIL) && (order > 1)); @@ -146,7 +146,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> do { page = NULL; -@@ -2631,22 +2653,24 @@ struct page *buffered_rmqueue(struct zon +@@ -2639,22 +2661,24 @@ struct page *buffered_rmqueue(struct zon if (!page) page = __rmqueue(zone, order, migratetype); } while (page && check_new_pages(page, order)); @@ -175,7 +175,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> return NULL; } -@@ -6523,6 +6547,7 @@ static int page_alloc_cpu_notify(struct +@@ -6531,6 +6555,7 @@ static int page_alloc_cpu_notify(struct void __init page_alloc_init(void) { hotcpu_notifier(page_alloc_cpu_notify, 0); @@ -183,7 +183,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> } /* -@@ -7351,7 +7376,7 @@ void zone_pcp_reset(struct zone *zone) +@@ -7359,7 +7384,7 @@ void zone_pcp_reset(struct zone *zone) struct per_cpu_pageset *pset; /* avoid races with drain_pages() */ @@ -192,7 +192,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> if (zone->pageset != &boot_pageset) { for_each_online_cpu(cpu) { pset = per_cpu_ptr(zone->pageset, cpu); -@@ -7360,7 +7385,7 @@ void zone_pcp_reset(struct zone *zone) +@@ -7368,7 +7393,7 @@ void zone_pcp_reset(struct zone *zone) free_percpu(zone->pageset); zone->pageset = &boot_pageset; } diff --git a/patches/mm-rt-kmap-atomic-scheduling.patch b/patches/mm-rt-kmap-atomic-scheduling.patch index fd1b49f43f4a8f..72fe1464d1e0ad 100644 --- a/patches/mm-rt-kmap-atomic-scheduling.patch +++ b/patches/mm-rt-kmap-atomic-scheduling.patch @@ -229,7 +229,7 @@ Link: http://lkml.kernel.org/r/1311842631.5890.208.camel@twins #include <asm/page.h> #include <asm/ptrace.h> -@@ -1979,6 +1980,12 @@ struct task_struct { +@@ -1980,6 +1981,12 @@ struct task_struct { int softirq_nestcnt; unsigned int softirqs_raised; #endif diff --git a/patches/net-Have-__napi_schedule_irqoff-disable-interrupts-o.patch b/patches/net-Have-__napi_schedule_irqoff-disable-interrupts-o.patch index 57552f286f3ef5..f75f2ad747da21 100644 --- a/patches/net-Have-__napi_schedule_irqoff-disable-interrupts-o.patch +++ b/patches/net-Have-__napi_schedule_irqoff-disable-interrupts-o.patch @@ -50,7 +50,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> { --- a/net/core/dev.c +++ b/net/core/dev.c -@@ -4914,6 +4914,7 @@ void __napi_schedule(struct napi_struct +@@ -4916,6 +4916,7 @@ void __napi_schedule(struct napi_struct } EXPORT_SYMBOL(__napi_schedule); @@ -58,7 +58,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> /** * __napi_schedule_irqoff - schedule for receive * @n: entry to schedule -@@ -4925,6 +4926,7 @@ void __napi_schedule_irqoff(struct napi_ +@@ -4927,6 +4928,7 @@ void __napi_schedule_irqoff(struct napi_ ____napi_schedule(this_cpu_ptr(&softnet_data), n); } EXPORT_SYMBOL(__napi_schedule_irqoff); diff --git a/patches/net-core-cpuhotplug-drain-input_pkt_queue-lockless.patch b/patches/net-core-cpuhotplug-drain-input_pkt_queue-lockless.patch index c5e393e1266972..9bc59696fdfac3 100644 --- a/patches/net-core-cpuhotplug-drain-input_pkt_queue-lockless.patch +++ b/patches/net-core-cpuhotplug-drain-input_pkt_queue-lockless.patch @@ -35,7 +35,7 @@ Cc: stable-rt@vger.kernel.org --- a/net/core/dev.c +++ b/net/core/dev.c -@@ -8022,7 +8022,7 @@ static int dev_cpu_callback(struct notif +@@ -8024,7 +8024,7 @@ static int dev_cpu_callback(struct notif netif_rx_ni(skb); input_queue_head_incr(oldsd); } diff --git a/patches/net-move-xmit_recursion-to-per-task-variable-on-RT.patch b/patches/net-move-xmit_recursion-to-per-task-variable-on-RT.patch index 300688f42c30a7..5845849626c5bc 100644 --- a/patches/net-move-xmit_recursion-to-per-task-variable-on-RT.patch +++ b/patches/net-move-xmit_recursion-to-per-task-variable-on-RT.patch @@ -80,7 +80,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> struct net_device *dev_get_by_index_rcu(struct net *net, int ifindex); --- a/include/linux/sched.h +++ b/include/linux/sched.h -@@ -1982,6 +1982,9 @@ struct task_struct { +@@ -1983,6 +1983,9 @@ struct task_struct { #ifdef CONFIG_DEBUG_ATOMIC_SLEEP unsigned long task_state_change; #endif diff --git a/patches/net-provide-a-way-to-delegate-processing-a-softirq-t.patch b/patches/net-provide-a-way-to-delegate-processing-a-softirq-t.patch index 0913999e2a1055..8f070899cf8301 100644 --- a/patches/net-provide-a-way-to-delegate-processing-a-softirq-t.patch +++ b/patches/net-provide-a-way-to-delegate-processing-a-softirq-t.patch @@ -67,7 +67,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> void raise_softirq_irqoff(unsigned int nr) --- a/net/core/dev.c +++ b/net/core/dev.c -@@ -5255,7 +5255,7 @@ static __latent_entropy void net_rx_acti +@@ -5257,7 +5257,7 @@ static __latent_entropy void net_rx_acti list_splice_tail(&repoll, &list); list_splice(&list, &sd->poll_list); if (!list_empty(&sd->poll_list)) diff --git a/patches/oleg-signal-rt-fix.patch b/patches/oleg-signal-rt-fix.patch index e32175017034ae..bb037c793c873d 100644 --- a/patches/oleg-signal-rt-fix.patch +++ b/patches/oleg-signal-rt-fix.patch @@ -76,7 +76,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> #endif --- a/include/linux/sched.h +++ b/include/linux/sched.h -@@ -1695,6 +1695,10 @@ struct task_struct { +@@ -1696,6 +1696,10 @@ struct task_struct { sigset_t blocked, real_blocked; sigset_t saved_sigmask; /* restored if set_restore_sigmask() was used */ struct sigpending pending; diff --git a/patches/posix-timers-thread-posix-cpu-timers-on-rt.patch b/patches/posix-timers-thread-posix-cpu-timers-on-rt.patch index 9aa01ce03b5f2c..039620766952f0 100644 --- a/patches/posix-timers-thread-posix-cpu-timers-on-rt.patch +++ b/patches/posix-timers-thread-posix-cpu-timers-on-rt.patch @@ -51,10 +51,10 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> +#endif /* process credentials */ - const struct cred __rcu *real_cred; /* objective and real subjective task + const struct cred __rcu *ptracer_cred; /* Tracer's credentials at attach */ --- a/kernel/fork.c +++ b/kernel/fork.c -@@ -1423,6 +1423,9 @@ static void rt_mutex_init_task(struct ta +@@ -1426,6 +1426,9 @@ static void rt_mutex_init_task(struct ta */ static void posix_cpu_timers_init(struct task_struct *tsk) { diff --git a/patches/preempt-lazy-support.patch b/patches/preempt-lazy-support.patch index 4a968d4796287f..b161863aa8922a 100644 --- a/patches/preempt-lazy-support.patch +++ b/patches/preempt-lazy-support.patch @@ -127,7 +127,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> --- a/include/linux/sched.h +++ b/include/linux/sched.h -@@ -3342,6 +3342,43 @@ static inline int test_tsk_need_resched( +@@ -3343,6 +3343,43 @@ static inline int test_tsk_need_resched( return unlikely(test_tsk_thread_flag(tsk,TIF_NEED_RESCHED)); } diff --git a/patches/printk-kill.patch b/patches/printk-kill.patch index 4d47410f2d0b6e..d5d24ac9416263 100644 --- a/patches/printk-kill.patch +++ b/patches/printk-kill.patch @@ -139,7 +139,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> static struct perf_event_attr wd_hw_attr = { .type = PERF_TYPE_HARDWARE, .config = PERF_COUNT_HW_CPU_CYCLES, -@@ -349,6 +351,13 @@ static void watchdog_overflow_callback(s +@@ -348,6 +350,13 @@ static void watchdog_overflow_callback(s /* only print hardlockups once */ if (__this_cpu_read(hard_watchdog_warn) == true) return; @@ -153,7 +153,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> pr_emerg("Watchdog detected hard LOCKUP on cpu %d", this_cpu); print_modules(); -@@ -366,6 +375,7 @@ static void watchdog_overflow_callback(s +@@ -365,6 +374,7 @@ static void watchdog_overflow_callback(s !test_and_set_bit(0, &hardlockup_allcpu_dumped)) trigger_allbutself_cpu_backtrace(); diff --git a/patches/ptrace-fix-ptrace-vs-tasklist_lock-race.patch b/patches/ptrace-fix-ptrace-vs-tasklist_lock-race.patch index 4bfc71e0e44564..b88b2ee3484c5a 100644 --- a/patches/ptrace-fix-ptrace-vs-tasklist_lock-race.patch +++ b/patches/ptrace-fix-ptrace-vs-tasklist_lock-race.patch @@ -41,7 +41,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> #define task_contributes_to_load(task) \ ((task->state & TASK_UNINTERRUPTIBLE) != 0 && \ (task->flags & PF_FROZEN) == 0 && \ -@@ -3359,6 +3356,51 @@ static inline int signal_pending_state(l +@@ -3360,6 +3357,51 @@ static inline int signal_pending_state(l return (state & TASK_INTERRUPTIBLE) || __fatal_signal_pending(p); } @@ -95,7 +95,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> * explicit rescheduling in places that are safe. The return --- a/kernel/ptrace.c +++ b/kernel/ptrace.c -@@ -130,7 +130,14 @@ static bool ptrace_freeze_traced(struct +@@ -166,7 +166,14 @@ static bool ptrace_freeze_traced(struct spin_lock_irq(&task->sighand->siglock); if (task_is_traced(task) && !__fatal_signal_pending(task)) { diff --git a/patches/sc16is7xx_Drop_bogus_use_of_IRQF_ONESHOT.patch b/patches/sc16is7xx_Drop_bogus_use_of_IRQF_ONESHOT.patch deleted file mode 100644 index eecfc3a2289909..00000000000000 --- a/patches/sc16is7xx_Drop_bogus_use_of_IRQF_ONESHOT.patch +++ /dev/null @@ -1,54 +0,0 @@ -Subject: sc16is7xx: Drop bogus use of IRQF_ONESHOT -From: Josh Cartwright <joshc@ni.com> -Date: Thu, 18 Feb 2016 11:26:12 -0600 - -The use of IRQF_ONESHOT when registering an interrupt handler with -request_irq() is non-sensical. - -Not only that, it also prevents the handler from being threaded when it -otherwise should be w/ IRQ_FORCED_THREADING is enabled. This causes the -following deadlock observed by Sean Nyekjaer on -rt: - -Internal error: Oops - BUG: 0 [#1] PREEMPT SMP ARM -[..] - rt_spin_lock_slowlock from (queue_kthread_work+0x18/0x74) - queue_kthread_work) from (sc16is7xx_irq+0x10/0x18 [sc16is7xx]) - sc16is7xx_irq [sc16is7xx]) from (handle_irq_event_percpu+0x70/0x158) - handle_irq_event_percpu) from (handle_irq_event+0x68/0xa8) - handle_irq_event) from (handle_level_irq+0x10c/0x184) - handle_level_irq) from (generic_handle_irq+0x2c/0x3c) - generic_handle_irq) from (mxc_gpio_irq_handler+0x3c/0x108) - mxc_gpio_irq_handler) from (mx3_gpio_irq_handler+0x80/0xcc) - mx3_gpio_irq_handler) from (generic_handle_irq+0x2c/0x3c) - generic_handle_irq) from (__handle_domain_irq+0x7c/0xe8) - __handle_domain_irq) from (gic_handle_irq+0x24/0x5c) - gic_handle_irq) from (__irq_svc+0x40/0x88) - (__irq_svc) from (rt_spin_unlock+0x1c/0x68) - (rt_spin_unlock) from (kthread_worker_fn+0x104/0x17c) - (kthread_worker_fn) from (kthread+0xd0/0xe8) - (kthread) from (ret_from_fork+0x14/0x2c) - -Fixes: 9e6f4ca3e567 ("sc16is7xx: use kthread_worker for tx_work and irq") -Reported-by: Sean Nyekjaer <sean.nyekjaer@prevas.dk> -Signed-off-by: Josh Cartwright <joshc@ni.com> -Cc: linux-rt-users@vger.kernel.org -Cc: Jakub Kicinski <moorray3@wp.pl> -Cc: stable@vger.kernel.org -Cc: linux-serial@vger.kernel.org -Link: http://lkml.kernel.org/r/1455816372-13989-1-git-send-email-joshc@ni.com -Signed-off-by: Thomas Gleixner <tglx@linutronix.de> ---- - drivers/tty/serial/sc16is7xx.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - ---- a/drivers/tty/serial/sc16is7xx.c -+++ b/drivers/tty/serial/sc16is7xx.c -@@ -1264,7 +1264,7 @@ static int sc16is7xx_probe(struct device - - /* Setup interrupt */ - ret = devm_request_irq(dev, irq, sc16is7xx_irq, -- IRQF_ONESHOT | flags, dev_name(dev), s); -+ flags, dev_name(dev), s); - if (!ret) - return 0; - diff --git a/patches/sched-delay-put-task.patch b/patches/sched-delay-put-task.patch index d5466d24eff1a6..f1150e7201897f 100644 --- a/patches/sched-delay-put-task.patch +++ b/patches/sched-delay-put-task.patch @@ -13,7 +13,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> --- a/include/linux/sched.h +++ b/include/linux/sched.h -@@ -1961,6 +1961,9 @@ struct task_struct { +@@ -1962,6 +1962,9 @@ struct task_struct { unsigned int sequential_io; unsigned int sequential_io_avg; #endif @@ -23,7 +23,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> #ifdef CONFIG_DEBUG_ATOMIC_SLEEP unsigned long task_state_change; #endif -@@ -2218,6 +2221,15 @@ extern struct pid *cad_pid; +@@ -2219,6 +2222,15 @@ extern struct pid *cad_pid; extern void free_task(struct task_struct *tsk); #define get_task_struct(tsk) do { atomic_inc(&(tsk)->usage); } while(0) @@ -39,7 +39,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> extern void __put_task_struct(struct task_struct *t); static inline void put_task_struct(struct task_struct *t) -@@ -2225,6 +2237,7 @@ static inline void put_task_struct(struc +@@ -2226,6 +2238,7 @@ static inline void put_task_struct(struc if (atomic_dec_and_test(&t->usage)) __put_task_struct(t); } diff --git a/patches/sched-mmdrop-delayed.patch b/patches/sched-mmdrop-delayed.patch index f2a93dedf3040f..994d5ae9f8431e 100644 --- a/patches/sched-mmdrop-delayed.patch +++ b/patches/sched-mmdrop-delayed.patch @@ -23,7 +23,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> #include <linux/page-flags-layout.h> #include <linux/workqueue.h> #include <asm/page.h> -@@ -508,6 +509,9 @@ struct mm_struct { +@@ -509,6 +510,9 @@ struct mm_struct { bool tlb_flush_pending; #endif struct uprobes_state uprobes_state; @@ -35,7 +35,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> void __user *bd_addr; --- a/include/linux/sched.h +++ b/include/linux/sched.h -@@ -2905,6 +2905,17 @@ static inline void mmdrop(struct mm_stru +@@ -2906,6 +2906,17 @@ static inline void mmdrop(struct mm_stru __mmdrop(mm); } @@ -55,7 +55,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> struct mm_struct *mm = container_of(work, struct mm_struct, async_put_work); --- a/kernel/fork.c +++ b/kernel/fork.c -@@ -862,6 +862,19 @@ void __mmdrop(struct mm_struct *mm) +@@ -865,6 +865,19 @@ void __mmdrop(struct mm_struct *mm) } EXPORT_SYMBOL_GPL(__mmdrop); diff --git a/patches/sched-rt-mutex-wakeup.patch b/patches/sched-rt-mutex-wakeup.patch index 12f200d2297f91..150aa270dc4a64 100644 --- a/patches/sched-rt-mutex-wakeup.patch +++ b/patches/sched-rt-mutex-wakeup.patch @@ -25,7 +25,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> void *stack; atomic_t usage; unsigned int flags; /* per process flags, defined below */ -@@ -2697,6 +2698,7 @@ extern void xtime_update(unsigned long t +@@ -2698,6 +2699,7 @@ extern void xtime_update(unsigned long t extern int wake_up_state(struct task_struct *tsk, unsigned int state); extern int wake_up_process(struct task_struct *tsk); diff --git a/patches/series b/patches/series index dea119b46e38f9..d068551d70da57 100644 --- a/patches/series +++ b/patches/series @@ -14,7 +14,6 @@ timer-make-the-base-lock-raw.patch ############################################################ # Stuff broken upstream, patches submitted ############################################################ -sc16is7xx_Drop_bogus_use_of_IRQF_ONESHOT.patch # Those two should vanish soon (not use PIT during bootup) at91_dont_enable_disable_clock.patch diff --git a/patches/signals-allow-rt-tasks-to-cache-one-sigqueue-struct.patch b/patches/signals-allow-rt-tasks-to-cache-one-sigqueue-struct.patch index bdbe97b649b255..da30f95a815de4 100644 --- a/patches/signals-allow-rt-tasks-to-cache-one-sigqueue-struct.patch +++ b/patches/signals-allow-rt-tasks-to-cache-one-sigqueue-struct.patch @@ -17,7 +17,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> --- a/include/linux/sched.h +++ b/include/linux/sched.h -@@ -1684,6 +1684,7 @@ struct task_struct { +@@ -1685,6 +1685,7 @@ struct task_struct { /* signal handlers */ struct signal_struct *signal; struct sighand_struct *sighand; @@ -48,7 +48,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> --- a/kernel/fork.c +++ b/kernel/fork.c -@@ -1549,6 +1549,7 @@ static __latent_entropy struct task_stru +@@ -1552,6 +1552,7 @@ static __latent_entropy struct task_stru spin_lock_init(&p->alloc_lock); init_sigpending(&p->pending); diff --git a/patches/skbufhead-raw-lock.patch b/patches/skbufhead-raw-lock.patch index 4bb689f258eac6..72456d99e2c72d 100644 --- a/patches/skbufhead-raw-lock.patch +++ b/patches/skbufhead-raw-lock.patch @@ -15,7 +15,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> --- a/include/linux/netdevice.h +++ b/include/linux/netdevice.h -@@ -2846,6 +2846,7 @@ struct softnet_data { +@@ -2851,6 +2851,7 @@ struct softnet_data { unsigned int dropped; struct sk_buff_head input_pkt_queue; struct napi_struct backlog; @@ -90,7 +90,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> } static void flush_all_backlogs(void) -@@ -4852,7 +4855,9 @@ static int process_backlog(struct napi_s +@@ -4854,7 +4857,9 @@ static int process_backlog(struct napi_s while (again) { struct sk_buff *skb; @@ -100,7 +100,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> rcu_read_lock(); __netif_receive_skb(skb); rcu_read_unlock(); -@@ -4860,9 +4865,9 @@ static int process_backlog(struct napi_s +@@ -4862,9 +4867,9 @@ static int process_backlog(struct napi_s if (++work >= quota) return work; @@ -111,7 +111,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> rps_lock(sd); if (skb_queue_empty(&sd->input_pkt_queue)) { /* -@@ -5204,13 +5209,21 @@ static __latent_entropy void net_rx_acti +@@ -5206,13 +5211,21 @@ static __latent_entropy void net_rx_acti struct softnet_data *sd = this_cpu_ptr(&softnet_data); unsigned long time_limit = jiffies + 2; int budget = netdev_budget; @@ -133,7 +133,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> for (;;) { struct napi_struct *n; -@@ -8013,6 +8026,9 @@ static int dev_cpu_callback(struct notif +@@ -8015,6 +8028,9 @@ static int dev_cpu_callback(struct notif netif_rx_ni(skb); input_queue_head_incr(oldsd); } @@ -143,7 +143,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> return NOTIFY_OK; } -@@ -8317,8 +8333,9 @@ static int __init net_dev_init(void) +@@ -8319,8 +8335,9 @@ static int __init net_dev_init(void) INIT_WORK(flush, flush_backlog); diff --git a/patches/softirq-preempt-fix-3-re.patch b/patches/softirq-preempt-fix-3-re.patch index 4c7a11b8329538..54ceb2b0dd8919 100644 --- a/patches/softirq-preempt-fix-3-re.patch +++ b/patches/softirq-preempt-fix-3-re.patch @@ -135,7 +135,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> atomic_long_inc(&skb->dev->rx_dropped); kfree_skb(skb); -@@ -4807,6 +4810,7 @@ static void net_rps_action_and_irq_enabl +@@ -4809,6 +4812,7 @@ static void net_rps_action_and_irq_enabl sd->rps_ipi_list = NULL; local_irq_enable(); @@ -143,7 +143,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> /* Send pending IPI's to kick RPS processing on remote cpus. */ while (remsd) { -@@ -4820,6 +4824,7 @@ static void net_rps_action_and_irq_enabl +@@ -4822,6 +4826,7 @@ static void net_rps_action_and_irq_enabl } else #endif local_irq_enable(); @@ -151,7 +151,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> } static bool sd_has_rps_ipi_waiting(struct softnet_data *sd) -@@ -4897,6 +4902,7 @@ void __napi_schedule(struct napi_struct +@@ -4899,6 +4904,7 @@ void __napi_schedule(struct napi_struct local_irq_save(flags); ____napi_schedule(this_cpu_ptr(&softnet_data), n); local_irq_restore(flags); @@ -159,7 +159,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> } EXPORT_SYMBOL(__napi_schedule); -@@ -7998,6 +8004,7 @@ static int dev_cpu_callback(struct notif +@@ -8000,6 +8006,7 @@ static int dev_cpu_callback(struct notif raise_softirq_irqoff(NET_TX_SOFTIRQ); local_irq_enable(); diff --git a/patches/softirq-split-locks.patch b/patches/softirq-split-locks.patch index ab2c5bf793c9d9..9f832e50a66c5f 100644 --- a/patches/softirq-split-locks.patch +++ b/patches/softirq-split-locks.patch @@ -172,7 +172,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> * Are we in NMI context? --- a/include/linux/sched.h +++ b/include/linux/sched.h -@@ -1964,6 +1964,8 @@ struct task_struct { +@@ -1965,6 +1965,8 @@ struct task_struct { #endif #ifdef CONFIG_PREEMPT_RT_BASE struct rcu_head put_rcu; @@ -181,7 +181,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> #endif #ifdef CONFIG_DEBUG_ATOMIC_SLEEP unsigned long task_state_change; -@@ -2280,6 +2282,7 @@ extern void thread_group_cputime_adjuste +@@ -2281,6 +2283,7 @@ extern void thread_group_cputime_adjuste /* * Per process flags */ diff --git a/patches/x86-kvm-require-const-tsc-for-rt.patch b/patches/x86-kvm-require-const-tsc-for-rt.patch index 0aabd962ee860d..5c1e7e19e8fe22 100644 --- a/patches/x86-kvm-require-const-tsc-for-rt.patch +++ b/patches/x86-kvm-require-const-tsc-for-rt.patch @@ -14,7 +14,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> --- a/arch/x86/kvm/x86.c +++ b/arch/x86/kvm/x86.c -@@ -5925,6 +5925,13 @@ int kvm_arch_init(void *opaque) +@@ -5930,6 +5930,13 @@ int kvm_arch_init(void *opaque) goto out; } |