diff options
author | Sebastian Andrzej Siewior <bigeasy@linutronix.de> | 2017-03-27 12:08:14 +0200 |
---|---|---|
committer | Sebastian Andrzej Siewior <bigeasy@linutronix.de> | 2017-03-27 12:08:14 +0200 |
commit | 950728f5efcdc960f3274cb3206418d0178c866c (patch) | |
tree | cba22d6d29920e79a257ac3bbe7ae37e7fb3dc1e | |
parent | 922b8868068757429b5049f972bfcc0c05df72ed (diff) | |
download | linux-rt-950728f5efcdc960f3274cb3206418d0178c866c.tar.gz |
[ANNOUNCE] v4.9.18-rt13v4.9.18-rt13-patches
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
28 files changed, 62 insertions, 68 deletions
diff --git a/patches/NFSv4-replace-seqcount_t-with-a-seqlock_t.patch b/patches/NFSv4-replace-seqcount_t-with-a-seqlock_t.patch index a57bf262c748..d8bdf8b27099 100644 --- a/patches/NFSv4-replace-seqcount_t-with-a-seqlock_t.patch +++ b/patches/NFSv4-replace-seqcount_t-with-a-seqlock_t.patch @@ -67,7 +67,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> ret = _nfs4_proc_open(opendata); if (ret != 0) @@ -2736,7 +2736,7 @@ static int _nfs4_open_and_get_state(stru - ctx->state = state; + if (d_inode(dentry) == state->inode) { nfs_inode_attach_open_context(ctx); - if (read_seqcount_retry(&sp->so_reclaim_seqcount, seq)) diff --git a/patches/arm-kprobe-replace-patch_lock-to-raw-lock.patch b/patches/arm-kprobe-replace-patch_lock-to-raw-lock.patch index fc9a5257bf3d..79706c7faa47 100644 --- a/patches/arm-kprobe-replace-patch_lock-to-raw-lock.patch +++ b/patches/arm-kprobe-replace-patch_lock-to-raw-lock.patch @@ -1,4 +1,3 @@ -From 6e2639b6d72e1ef9e264aa658db3b6171d9ba12f Mon Sep 17 00:00:00 2001 From: Yang Shi <yang.shi@linaro.org> Date: Thu, 10 Nov 2016 16:17:55 -0800 Subject: [PATCH] arm: kprobe: replace patch_lock to raw lock diff --git a/patches/arm64-xen--Make-XEN-depend-on-non-rt.patch b/patches/arm64-xen--Make-XEN-depend-on-non-rt.patch index f156168a8ece..b6b0a56db4c1 100644 --- a/patches/arm64-xen--Make-XEN-depend-on-non-rt.patch +++ b/patches/arm64-xen--Make-XEN-depend-on-non-rt.patch @@ -12,7 +12,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> --- a/arch/arm64/Kconfig +++ b/arch/arm64/Kconfig -@@ -694,7 +694,7 @@ config XEN_DOM0 +@@ -704,7 +704,7 @@ config XEN_DOM0 config XEN bool "Xen guest support on ARM64" diff --git a/patches/fs-dcache-use-swait_queue-instead-of-waitqueue.patch b/patches/fs-dcache-use-swait_queue-instead-of-waitqueue.patch index 81ee6382f774..576f3167d6fb 100644 --- a/patches/fs-dcache-use-swait_queue-instead-of-waitqueue.patch +++ b/patches/fs-dcache-use-swait_queue-instead-of-waitqueue.patch @@ -91,7 +91,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> /* --- a/fs/namei.c +++ b/fs/namei.c -@@ -1629,7 +1629,7 @@ static struct dentry *lookup_slow(const +@@ -1626,7 +1626,7 @@ static struct dentry *lookup_slow(const { struct dentry *dentry = ERR_PTR(-ENOENT), *old; struct inode *inode = dir->d_inode; @@ -100,7 +100,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> inode_lock_shared(inode); /* Don't go there if it's already dead */ -@@ -3086,7 +3086,7 @@ static int lookup_open(struct nameidata +@@ -3083,7 +3083,7 @@ static int lookup_open(struct nameidata struct dentry *dentry; int error, create_error = 0; umode_t mode = op->mode; 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 379fe83f5b31..753d477ac205 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; -@@ -3715,10 +3715,8 @@ static void add_unmap(struct dmar_domain +@@ -3716,10 +3716,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 -@@ -3751,8 +3749,6 @@ static void add_unmap(struct dmar_domain +@@ -3752,8 +3750,6 @@ static void add_unmap(struct dmar_domain } flush_data->size++; spin_unlock_irqrestore(&flush_data->lock, flags); diff --git a/patches/localversion.patch b/patches/localversion.patch index 12bd473a33f5..25e5fadbaae8 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 @@ -+-rt12 ++-rt13 diff --git a/patches/lockdep-Handle-statically-initialized-PER_CPU-locks-.patch b/patches/lockdep-Handle-statically-initialized-PER_CPU-locks-.patch index 7a064885bfdd..51783c6aaa56 100644 --- a/patches/lockdep-Handle-statically-initialized-PER_CPU-locks-.patch +++ b/patches/lockdep-Handle-statically-initialized-PER_CPU-locks-.patch @@ -1,4 +1,3 @@ -From 178617ad4fa9d79f89d2ba3bf437a38fdec3ef5b Mon Sep 17 00:00:00 2001 From: Thomas Gleixner <tglx@linutronix.de> Date: Fri, 17 Feb 2017 19:44:39 +0100 Subject: [PATCH] lockdep: Handle statically initialized PER_CPU locks proper @@ -208,7 +207,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> static inline void __percpu *mod_percpu(struct module *mod) --- a/mm/percpu.c +++ b/mm/percpu.c -@@ -1280,18 +1280,7 @@ void free_percpu(void __percpu *ptr) +@@ -1283,18 +1283,7 @@ void free_percpu(void __percpu *ptr) } EXPORT_SYMBOL_GPL(free_percpu); @@ -228,7 +227,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> { #ifdef CONFIG_SMP const size_t static_size = __per_cpu_end - __per_cpu_start; -@@ -1300,16 +1289,36 @@ bool is_kernel_percpu_address(unsigned l +@@ -1303,16 +1292,36 @@ bool is_kernel_percpu_address(unsigned l for_each_possible_cpu(cpu) { void *start = per_cpu_ptr(base, cpu); diff --git a/patches/mm-enable-slub.patch b/patches/mm-enable-slub.patch index 7148ed90d0b6..f8d47f2f97a6 100644 --- a/patches/mm-enable-slub.patch +++ b/patches/mm-enable-slub.patch @@ -398,7 +398,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> list_for_each_entry_safe(page, h, &discard, lru) discard_slab(s, page); -@@ -3920,7 +3990,7 @@ int __kmem_cache_shrink(struct kmem_cach +@@ -3905,7 +3975,7 @@ int __kmem_cache_shrink(struct kmem_cach for (i = 0; i < SHRINK_PROMOTE_MAX; i++) INIT_LIST_HEAD(promote + i); @@ -407,7 +407,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> /* * Build lists of slabs to discard or promote. -@@ -3951,7 +4021,7 @@ int __kmem_cache_shrink(struct kmem_cach +@@ -3936,7 +4006,7 @@ int __kmem_cache_shrink(struct kmem_cach for (i = SHRINK_PROMOTE_MAX - 1; i >= 0; i--) list_splice(promote + i, &n->partial); @@ -416,7 +416,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> /* Release empty slabs */ list_for_each_entry_safe(page, t, &discard, lru) -@@ -4127,6 +4197,12 @@ void __init kmem_cache_init(void) +@@ -4112,6 +4182,12 @@ void __init kmem_cache_init(void) { static __initdata struct kmem_cache boot_kmem_cache, boot_kmem_cache_node; @@ -429,7 +429,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> if (debug_guardpage_minorder()) slub_max_order = 0; -@@ -4335,7 +4411,7 @@ static int validate_slab_node(struct kme +@@ -4320,7 +4396,7 @@ static int validate_slab_node(struct kme struct page *page; unsigned long flags; @@ -438,7 +438,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> list_for_each_entry(page, &n->partial, lru) { validate_slab_slab(s, page, map); -@@ -4357,7 +4433,7 @@ static int validate_slab_node(struct kme +@@ -4342,7 +4418,7 @@ static int validate_slab_node(struct kme s->name, count, atomic_long_read(&n->nr_slabs)); out: @@ -447,7 +447,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> return count; } -@@ -4545,12 +4621,12 @@ static int list_locations(struct kmem_ca +@@ -4530,12 +4606,12 @@ static int list_locations(struct kmem_ca if (!atomic_long_read(&n->nr_slabs)) continue; diff --git a/patches/mm-memcontrol-do_not_disable_irq.patch b/patches/mm-memcontrol-do_not_disable_irq.patch index ee115250a58c..c92b398945dc 100644 --- a/patches/mm-memcontrol-do_not_disable_irq.patch +++ b/patches/mm-memcontrol-do_not_disable_irq.patch @@ -29,7 +29,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> /* Whether legacy memory+swap accounting is active */ static bool do_memsw_account(void) { -@@ -4548,12 +4551,12 @@ static int mem_cgroup_move_account(struc +@@ -4553,12 +4556,12 @@ static int mem_cgroup_move_account(struc ret = 0; @@ -44,7 +44,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> out_unlock: unlock_page(page); out: -@@ -5428,10 +5431,10 @@ void mem_cgroup_commit_charge(struct pag +@@ -5433,10 +5436,10 @@ void mem_cgroup_commit_charge(struct pag commit_charge(page, memcg, lrucare); @@ -57,7 +57,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> if (do_memsw_account() && PageSwapCache(page)) { swp_entry_t entry = { .val = page_private(page) }; -@@ -5487,14 +5490,14 @@ static void uncharge_batch(struct mem_cg +@@ -5492,14 +5495,14 @@ static void uncharge_batch(struct mem_cg memcg_oom_recover(memcg); } @@ -74,7 +74,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> if (!mem_cgroup_is_root(memcg)) css_put_many(&memcg->css, nr_pages); -@@ -5832,6 +5835,7 @@ void mem_cgroup_swapout(struct page *pag +@@ -5837,6 +5840,7 @@ void mem_cgroup_swapout(struct page *pag { struct mem_cgroup *memcg, *swap_memcg; unsigned short oldid; @@ -82,7 +82,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> VM_BUG_ON_PAGE(PageLRU(page), page); VM_BUG_ON_PAGE(page_count(page), page); -@@ -5872,12 +5876,16 @@ void mem_cgroup_swapout(struct page *pag +@@ -5877,12 +5881,16 @@ void mem_cgroup_swapout(struct page *pag * important here to have the interrupts disabled because it is the * only synchronisation we have for udpating the per-CPU variables. */ diff --git a/patches/mm-memcontrol-mem_cgroup_migrate-replace-another-loc.patch b/patches/mm-memcontrol-mem_cgroup_migrate-replace-another-loc.patch index c730252d654e..dc902e74c660 100644 --- a/patches/mm-memcontrol-mem_cgroup_migrate-replace-another-loc.patch +++ b/patches/mm-memcontrol-mem_cgroup_migrate-replace-another-loc.patch @@ -14,7 +14,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> --- a/mm/memcontrol.c +++ b/mm/memcontrol.c -@@ -5652,10 +5652,10 @@ void mem_cgroup_migrate(struct page *old +@@ -5657,10 +5657,10 @@ void mem_cgroup_migrate(struct page *old commit_charge(newpage, memcg, false); 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 2430990eeb34..0e0cdc3d0646 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 -@@ -4911,6 +4911,7 @@ void __napi_schedule(struct napi_struct +@@ -4938,6 +4938,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 -@@ -4922,6 +4923,7 @@ void __napi_schedule_irqoff(struct napi_ +@@ -4949,6 +4950,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-add-back-the-missing-serialization-in-ip_send_un.patch b/patches/net-add-back-the-missing-serialization-in-ip_send_un.patch index 047d57089ea3..75e5d32538e2 100644 --- a/patches/net-add-back-the-missing-serialization-in-ip_send_un.patch +++ b/patches/net-add-back-the-missing-serialization-in-ip_send_un.patch @@ -50,7 +50,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> #include <net/net_namespace.h> #include <net/icmp.h> -@@ -564,6 +565,7 @@ void tcp_v4_send_check(struct sock *sk, +@@ -568,6 +569,7 @@ void tcp_v4_send_check(struct sock *sk, } EXPORT_SYMBOL(tcp_v4_send_check); @@ -58,7 +58,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> /* * This routine will send an RST to the other tcp. * -@@ -691,6 +693,8 @@ static void tcp_v4_send_reset(const stru +@@ -695,6 +697,8 @@ static void tcp_v4_send_reset(const stru offsetof(struct inet_timewait_sock, tw_bound_dev_if)); arg.tos = ip_hdr(skb)->tos; @@ -67,7 +67,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> local_bh_disable(); ip_send_unicast_reply(*this_cpu_ptr(net->ipv4.tcp_sk), skb, &TCP_SKB_CB(skb)->header.h4.opt, -@@ -700,6 +704,7 @@ static void tcp_v4_send_reset(const stru +@@ -704,6 +708,7 @@ static void tcp_v4_send_reset(const stru __TCP_INC_STATS(net, TCP_MIB_OUTSEGS); __TCP_INC_STATS(net, TCP_MIB_OUTRSTS); local_bh_enable(); @@ -75,7 +75,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> #ifdef CONFIG_TCP_MD5SIG out: -@@ -775,6 +780,7 @@ static void tcp_v4_send_ack(struct net * +@@ -779,6 +784,7 @@ static void tcp_v4_send_ack(struct net * if (oif) arg.bound_dev_if = oif; arg.tos = tos; @@ -83,7 +83,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> local_bh_disable(); ip_send_unicast_reply(*this_cpu_ptr(net->ipv4.tcp_sk), skb, &TCP_SKB_CB(skb)->header.h4.opt, -@@ -783,6 +789,7 @@ static void tcp_v4_send_ack(struct net * +@@ -787,6 +793,7 @@ static void tcp_v4_send_ack(struct net * __TCP_INC_STATS(net, TCP_MIB_OUTSEGS); local_bh_enable(); 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 bfddd24daabf..33dfee0edfc4 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 -@@ -8019,7 +8019,7 @@ static int dev_cpu_callback(struct notif +@@ -8046,7 +8046,7 @@ static int dev_cpu_callback(struct notif netif_rx_ni(skb); input_queue_head_incr(oldsd); } diff --git a/patches/net-dev-always-take-qdisc-s-busylock-in-__dev_xmit_s.patch b/patches/net-dev-always-take-qdisc-s-busylock-in-__dev_xmit_s.patch index 2c7142969598..ff17e1ab50ba 100644 --- a/patches/net-dev-always-take-qdisc-s-busylock-in-__dev_xmit_s.patch +++ b/patches/net-dev-always-take-qdisc-s-busylock-in-__dev_xmit_s.patch @@ -20,7 +20,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> --- a/net/core/dev.c +++ b/net/core/dev.c -@@ -3075,7 +3075,11 @@ static inline int __dev_xmit_skb(struct +@@ -3102,7 +3102,11 @@ static inline int __dev_xmit_skb(struct * This permits qdisc->running owner to get the lock more * often and dequeue packets faster. */ 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 2d1256cfc07c..6172ea942ecf 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 @@ -92,7 +92,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> struct task_struct *oom_reaper_list; --- a/net/core/dev.c +++ b/net/core/dev.c -@@ -3138,8 +3138,10 @@ static void skb_update_prio(struct sk_bu +@@ -3165,8 +3165,10 @@ static void skb_update_prio(struct sk_bu #define skb_update_prio(skb) #endif @@ -103,7 +103,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> /** * dev_loopback_xmit - loop back @skb -@@ -3373,8 +3375,7 @@ static int __dev_queue_xmit(struct sk_bu +@@ -3400,8 +3402,7 @@ static int __dev_queue_xmit(struct sk_bu int cpu = smp_processor_id(); /* ok because BHs are off */ if (txq->xmit_lock_owner != cpu) { @@ -113,7 +113,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> goto recursion_alert; skb = validate_xmit_skb(skb, dev); -@@ -3384,9 +3385,9 @@ static int __dev_queue_xmit(struct sk_bu +@@ -3411,9 +3412,9 @@ static int __dev_queue_xmit(struct sk_bu HARD_TX_LOCK(dev, txq, cpu); if (!netif_xmit_stopped(txq)) { 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 b9071361fe25..3ae0f474db36 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 -@@ -5252,7 +5252,7 @@ static __latent_entropy void net_rx_acti +@@ -5279,7 +5279,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/net-wireless-warn-nort.patch b/patches/net-wireless-warn-nort.patch index d614ab9bcfec..7378bc00ac01 100644 --- a/patches/net-wireless-warn-nort.patch +++ b/patches/net-wireless-warn-nort.patch @@ -12,7 +12,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> --- a/net/mac80211/rx.c +++ b/net/mac80211/rx.c -@@ -4166,7 +4166,7 @@ void ieee80211_rx_napi(struct ieee80211_ +@@ -4180,7 +4180,7 @@ void ieee80211_rx_napi(struct ieee80211_ struct ieee80211_supported_band *sband; struct ieee80211_rx_status *status = IEEE80211_SKB_RXCB(skb); diff --git a/patches/rt-add-rt-locks.patch b/patches/rt-add-rt-locks.patch index 7740aa99109a..274cfb6cc3bb 100644 --- a/patches/rt-add-rt-locks.patch +++ b/patches/rt-add-rt-locks.patch @@ -941,7 +941,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> if (deboost) rt_mutex_adjust_prio(current); -@@ -2851,10 +2854,7 @@ static int futex_wait_requeue_pi(u32 __u +@@ -2850,10 +2853,7 @@ static int futex_wait_requeue_pi(u32 __u * The waiter is allocated on our stack, manipulated by the requeue * code while we sleep on uaddr. */ diff --git a/patches/rtmutex-futex-prepare-rt.patch b/patches/rtmutex-futex-prepare-rt.patch index 6259f82b8fc9..3d966f0febbe 100644 --- a/patches/rtmutex-futex-prepare-rt.patch +++ b/patches/rtmutex-futex-prepare-rt.patch @@ -32,16 +32,16 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> } else if (ret) { /* * rt_mutex_start_proxy_lock() detected a -@@ -2814,7 +2824,7 @@ static int futex_wait_requeue_pi(u32 __u +@@ -2813,7 +2823,7 @@ static int futex_wait_requeue_pi(u32 __u + { struct hrtimer_sleeper timeout, *to = NULL; struct rt_mutex_waiter rt_waiter; - struct rt_mutex *pi_mutex = NULL; - struct futex_hash_bucket *hb; + struct futex_hash_bucket *hb, *hb2; union futex_key key2 = FUTEX_KEY_INIT; struct futex_q q = futex_q_init; int res, ret; -@@ -2873,20 +2883,55 @@ static int futex_wait_requeue_pi(u32 __u +@@ -2872,20 +2882,55 @@ static int futex_wait_requeue_pi(u32 __u /* Queue the futex_q, drop the hb lock, wait for wakeup. */ futex_wait_queue_me(hb, &q, to); @@ -108,7 +108,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> /* Check if the requeue code acquired the second futex for us. */ if (!q.rt_waiter) { -@@ -2895,14 +2940,15 @@ static int futex_wait_requeue_pi(u32 __u +@@ -2894,7 +2939,8 @@ static int futex_wait_requeue_pi(u32 __u * did a lock-steal - fix up the PI-state in that case. */ if (q.pi_state && (q.pi_state->owner != current)) { @@ -116,8 +116,9 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> + spin_lock(&hb2->lock); + BUG_ON(&hb2->lock != q.lock_ptr); ret = fixup_pi_state_owner(uaddr2, &q, current); - /* - * Drop the reference to the pi state which + if (ret && rt_mutex_owner(&q.pi_state->pi_mutex) == current) + rt_mutex_unlock(&q.pi_state->pi_mutex); +@@ -2903,7 +2949,7 @@ static int futex_wait_requeue_pi(u32 __u * the requeue_pi() code acquired for us. */ put_pi_state(q.pi_state); @@ -125,8 +126,8 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> + spin_unlock(&hb2->lock); } } else { - /* -@@ -2915,7 +2961,8 @@ static int futex_wait_requeue_pi(u32 __u + struct rt_mutex *pi_mutex; +@@ -2918,7 +2964,8 @@ static int futex_wait_requeue_pi(u32 __u ret = rt_mutex_finish_proxy_lock(pi_mutex, to, &rt_waiter); debug_rt_mutex_free_waiter(&rt_waiter); diff --git a/patches/rxrpc-remove-unused-static-variables.patch b/patches/rxrpc-remove-unused-static-variables.patch index 4d82f3d99ad4..34b9923b3f01 100644 --- a/patches/rxrpc-remove-unused-static-variables.patch +++ b/patches/rxrpc-remove-unused-static-variables.patch @@ -1,4 +1,3 @@ -From f9cf73e8bad7daa90318edfd933f8676cd1e5cd4 Mon Sep 17 00:00:00 2001 From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Date: Fri, 21 Oct 2016 10:54:50 +0200 Subject: [PATCH] rxrpc: remove unused static variables diff --git a/patches/sched-rt-Add-a-missing-rescheduling-point.patch b/patches/sched-rt-Add-a-missing-rescheduling-point.patch index d38d05ee8012..054810d81af2 100644 --- a/patches/sched-rt-Add-a-missing-rescheduling-point.patch +++ b/patches/sched-rt-Add-a-missing-rescheduling-point.patch @@ -1,4 +1,3 @@ -From 619bd4a71874a8fd78eb6ccf9f272c5e98bcc7b7 Mon Sep 17 00:00:00 2001 From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Date: Tue, 24 Jan 2017 15:40:06 +0100 Subject: [PATCH] sched/rt: Add a missing rescheduling point diff --git a/patches/skbufhead-raw-lock.patch b/patches/skbufhead-raw-lock.patch index a5355c7aaaf5..b5ad49cc34c8 100644 --- a/patches/skbufhead-raw-lock.patch +++ b/patches/skbufhead-raw-lock.patch @@ -65,7 +65,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> #endif } -@@ -4310,7 +4310,7 @@ static void flush_backlog(struct work_st +@@ -4337,7 +4337,7 @@ static void flush_backlog(struct work_st skb_queue_walk_safe(&sd->input_pkt_queue, skb, tmp) { if (skb->dev->reg_state == NETREG_UNREGISTERING) { __skb_unlink(skb, &sd->input_pkt_queue); @@ -74,7 +74,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> input_queue_head_incr(sd); } } -@@ -4320,11 +4320,14 @@ static void flush_backlog(struct work_st +@@ -4347,11 +4347,14 @@ static void flush_backlog(struct work_st skb_queue_walk_safe(&sd->process_queue, skb, tmp) { if (skb->dev->reg_state == NETREG_UNREGISTERING) { __skb_unlink(skb, &sd->process_queue); @@ -90,7 +90,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> } static void flush_all_backlogs(void) -@@ -4849,7 +4852,9 @@ static int process_backlog(struct napi_s +@@ -4876,7 +4879,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(); -@@ -4857,9 +4862,9 @@ static int process_backlog(struct napi_s +@@ -4884,9 +4889,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)) { /* -@@ -5201,13 +5206,21 @@ static __latent_entropy void net_rx_acti +@@ -5228,13 +5233,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; -@@ -8010,6 +8023,9 @@ static int dev_cpu_callback(struct notif +@@ -8037,6 +8050,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; } -@@ -8314,8 +8330,9 @@ static int __init net_dev_init(void) +@@ -8341,8 +8357,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 293305e760b7..0af390d4852c 100644 --- a/patches/softirq-preempt-fix-3-re.patch +++ b/patches/softirq-preempt-fix-3-re.patch @@ -111,7 +111,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> } --- a/net/core/dev.c +++ b/net/core/dev.c -@@ -2258,6 +2258,7 @@ static void __netif_reschedule(struct Qd +@@ -2285,6 +2285,7 @@ static void __netif_reschedule(struct Qd sd->output_queue_tailp = &q->next_sched; raise_softirq_irqoff(NET_TX_SOFTIRQ); local_irq_restore(flags); @@ -119,7 +119,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> } void __netif_schedule(struct Qdisc *q) -@@ -2339,6 +2340,7 @@ void __dev_kfree_skb_irq(struct sk_buff +@@ -2366,6 +2367,7 @@ void __dev_kfree_skb_irq(struct sk_buff __this_cpu_write(softnet_data.completion_queue, skb); raise_softirq_irqoff(NET_TX_SOFTIRQ); local_irq_restore(flags); @@ -127,7 +127,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> } EXPORT_SYMBOL(__dev_kfree_skb_irq); -@@ -3758,6 +3760,7 @@ static int enqueue_to_backlog(struct sk_ +@@ -3785,6 +3787,7 @@ static int enqueue_to_backlog(struct sk_ rps_unlock(sd); local_irq_restore(flags); @@ -135,7 +135,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> atomic_long_inc(&skb->dev->rx_dropped); kfree_skb(skb); -@@ -4804,6 +4807,7 @@ static void net_rps_action_and_irq_enabl +@@ -4831,6 +4834,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) { -@@ -4817,6 +4821,7 @@ static void net_rps_action_and_irq_enabl +@@ -4844,6 +4848,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) -@@ -4894,6 +4899,7 @@ void __napi_schedule(struct napi_struct +@@ -4921,6 +4926,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); -@@ -7995,6 +8001,7 @@ static int dev_cpu_callback(struct notif +@@ -8022,6 +8028,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 4dd1cc4a6ed0..0fae66228af2 100644 --- a/patches/softirq-split-locks.patch +++ b/patches/softirq-split-locks.patch @@ -816,7 +816,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> --- a/net/core/dev.c +++ b/net/core/dev.c -@@ -3829,11 +3829,9 @@ int netif_rx_ni(struct sk_buff *skb) +@@ -3856,11 +3856,9 @@ int netif_rx_ni(struct sk_buff *skb) trace_netif_rx_ni_entry(skb); diff --git a/patches/softirq-wake-the-timer-softirq-if-needed.patch b/patches/softirq-wake-the-timer-softirq-if-needed.patch index 0970defbc129..12e9ba287cd4 100644 --- a/patches/softirq-wake-the-timer-softirq-if-needed.patch +++ b/patches/softirq-wake-the-timer-softirq-if-needed.patch @@ -1,4 +1,3 @@ -From 8f8d71af7dbd27cb36841907b50bd1b6ef181786 Mon Sep 17 00:00:00 2001 From: Mike Galbraith <efault@gmx.de> Date: Fri, 20 Jan 2017 18:10:20 +0100 Subject: [PATCH] softirq: wake the timer softirq if needed diff --git a/patches/upstream-net-rt-remove-preemption-disabling-in-netif_rx.patch b/patches/upstream-net-rt-remove-preemption-disabling-in-netif_rx.patch index d6bc5b2b83ca..c17d9780043f 100644 --- a/patches/upstream-net-rt-remove-preemption-disabling-in-netif_rx.patch +++ b/patches/upstream-net-rt-remove-preemption-disabling-in-netif_rx.patch @@ -37,7 +37,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> --- a/net/core/dev.c +++ b/net/core/dev.c -@@ -3784,7 +3784,7 @@ static int netif_rx_internal(struct sk_b +@@ -3811,7 +3811,7 @@ static int netif_rx_internal(struct sk_b struct rps_dev_flow voidflow, *rflow = &voidflow; int cpu; @@ -46,7 +46,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> rcu_read_lock(); cpu = get_rps_cpu(skb->dev, skb, &rflow); -@@ -3794,13 +3794,13 @@ static int netif_rx_internal(struct sk_b +@@ -3821,13 +3821,13 @@ static int netif_rx_internal(struct sk_b ret = enqueue_to_backlog(skb, cpu, &rflow->last_qtail); rcu_read_unlock(); diff --git a/patches/x86-apic-get-rid-of-warning-acpi_ioapic_lock-defined.patch b/patches/x86-apic-get-rid-of-warning-acpi_ioapic_lock-defined.patch index ebd11b4a83b6..b86f9c939a67 100644 --- a/patches/x86-apic-get-rid-of-warning-acpi_ioapic_lock-defined.patch +++ b/patches/x86-apic-get-rid-of-warning-acpi_ioapic_lock-defined.patch @@ -1,4 +1,3 @@ -From 309789b8125b7eee6fd1c3a4716fcb6ea1ad32ba Mon Sep 17 00:00:00 2001 From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Date: Fri, 21 Oct 2016 10:29:11 +0200 Subject: [PATCH] x86/apic: get rid of "warning: 'acpi_ioapic_lock' defined but diff --git a/patches/x86-mm-cpa-avoid-wbinvd-for-PREEMPT.patch b/patches/x86-mm-cpa-avoid-wbinvd-for-PREEMPT.patch index efc0800cdaef..dd5b734d5373 100644 --- a/patches/x86-mm-cpa-avoid-wbinvd-for-PREEMPT.patch +++ b/patches/x86-mm-cpa-avoid-wbinvd-for-PREEMPT.patch @@ -1,4 +1,3 @@ -From 80f348a39344f8e0695d5b6d00ffb413c248b0ca Mon Sep 17 00:00:00 2001 From: John Ogness <john.ogness@linutronix.de> Date: Mon, 30 Jan 2017 09:41:21 +0100 Subject: [PATCH] x86/mm/cpa: avoid wbinvd() for PREEMPT |