diff --git a/patches/arm64-replace-read_lock-to-rcu-lock-in-call_step_hoo.patch b/patches/arm64-replace-read_lock-to-rcu-lock-in-call_step_hoo.patch
deleted file mode 100644
index 835fcae..0000000
--- a/patches/arm64-replace-read_lock-to-rcu-lock-in-call_step_hoo.patch
+++ /dev/null
@@ -1,93 +0,0 @@
-From: Yang Shi <yang.shi@linaro.org>
-Date: Mon, 8 Feb 2016 14:49:24 -0800
-Subject: arm64: replace read_lock to rcu lock in call_step_hook
-
-BUG: sleeping function called from invalid context at kernel/locking/rtmutex.c:917
-in_atomic(): 1, irqs_disabled(): 128, pid: 383, name: sh
-Preemption disabled at:[<ffff800000124c18>] kgdb_cpu_enter+0x158/0x6b8
-
-CPU: 3 PID: 383 Comm: sh Tainted: G        W       4.1.13-rt13 #2
-Hardware name: Freescale Layerscape 2085a RDB Board (DT)
-Call trace:
-[<ffff8000000885e8>] dump_backtrace+0x0/0x128
-[<ffff800000088734>] show_stack+0x24/0x30
-[<ffff80000079a7c4>] dump_stack+0x80/0xa0
-[<ffff8000000bd324>] ___might_sleep+0x18c/0x1a0
-[<ffff8000007a20ac>] __rt_spin_lock+0x2c/0x40
-[<ffff8000007a2268>] rt_read_lock+0x40/0x58
-[<ffff800000085328>] single_step_handler+0x38/0xd8
-[<ffff800000082368>] do_debug_exception+0x58/0xb8
-Exception stack(0xffff80834a1e7c80 to 0xffff80834a1e7da0)
-7c80: ffffff9c ffffffff 92c23ba0 0000ffff 4a1e7e40 ffff8083 001bfcc4 ffff8000
-7ca0: f2000400 00000000 00000000 00000000 4a1e7d80 ffff8083 0049501c ffff8000
-7cc0: 00005402 00000000 00aaa210 ffff8000 4a1e7ea0 ffff8083 000833f4 ffff8000
-7ce0: ffffff9c ffffffff 92c23ba0 0000ffff 4a1e7ea0 ffff8083 001bfcc0 ffff8000
-7d00: 4a0fc400 ffff8083 00005402 00000000 4a1e7d40 ffff8083 00490324 ffff8000
-7d20: ffffff9c 00000000 92c23ba0 0000ffff 000a0000 00000000 00000000 00000000
-7d40: 00000008 00000000 00080000 00000000 92c23b8b 0000ffff 92c23b8e 0000ffff
-7d60: 00000038 00000000 00001cb2 00000000 00000005 00000000 92d7b498 0000ffff
-7d80: 01010101 01010101 92be9000 0000ffff 00000000 00000000 00000030 00000000
-[<ffff8000000833f4>] el1_dbg+0x18/0x6c
-
-This issue is similar with 62c6c61("arm64: replace read_lock to rcu lock in
-call_break_hook"), but comes to single_step_handler.
-
-This also solves kgdbts boot test silent hang issue on 4.4 -rt kernel.
-
-Cc: stable-rt@vger.kernel.org
-Signed-off-by: Yang Shi <yang.shi@linaro.org>
-Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
----
- arch/arm64/kernel/debug-monitors.c |   21 +++++++++++----------
- 1 file changed, 11 insertions(+), 10 deletions(-)
-
---- a/arch/arm64/kernel/debug-monitors.c
-+++ b/arch/arm64/kernel/debug-monitors.c
-@@ -186,20 +186,21 @@ static void clear_regs_spsr_ss(struct pt
- 
- /* EL1 Single Step Handler hooks */
- static LIST_HEAD(step_hook);
--static DEFINE_RWLOCK(step_hook_lock);
-+static DEFINE_SPINLOCK(step_hook_lock);
- 
- void register_step_hook(struct step_hook *hook)
- {
--	write_lock(&step_hook_lock);
--	list_add(&hook->node, &step_hook);
--	write_unlock(&step_hook_lock);
-+	spin_lock(&step_hook_lock);
-+	list_add_rcu(&hook->node, &step_hook);
-+	spin_unlock(&step_hook_lock);
- }
- 
- void unregister_step_hook(struct step_hook *hook)
- {
--	write_lock(&step_hook_lock);
--	list_del(&hook->node);
--	write_unlock(&step_hook_lock);
-+	spin_lock(&step_hook_lock);
-+	list_del_rcu(&hook->node);
-+	spin_unlock(&step_hook_lock);
-+	synchronize_rcu();
- }
- 
- /*
-@@ -213,15 +214,15 @@ static int call_step_hook(struct pt_regs
- 	struct step_hook *hook;
- 	int retval = DBG_HOOK_ERROR;
- 
--	read_lock(&step_hook_lock);
-+	rcu_read_lock();
- 
--	list_for_each_entry(hook, &step_hook, node)	{
-+	list_for_each_entry_rcu(hook, &step_hook, node)	{
- 		retval = hook->fn(regs, esr);
- 		if (retval == DBG_HOOK_HANDLED)
- 			break;
- 	}
- 
--	read_unlock(&step_hook_lock);
-+	rcu_read_unlock();
- 
- 	return retval;
- }
diff --git a/patches/cgroups-scheduling-while-atomic-in-cgroup-code.patch b/patches/cgroups-scheduling-while-atomic-in-cgroup-code.patch
index d1e4403..c571446 100644
--- a/patches/cgroups-scheduling-while-atomic-in-cgroup-code.patch
+++ b/patches/cgroups-scheduling-while-atomic-in-cgroup-code.patch
@@ -42,7 +42,7 @@
 
 --- a/mm/memcontrol.c
 +++ b/mm/memcontrol.c
-@@ -1938,14 +1938,17 @@ static void drain_local_stock(struct wor
+@@ -1939,14 +1939,17 @@ static void drain_local_stock(struct wor
   */
  static void refill_stock(struct mem_cgroup *memcg, unsigned int nr_pages)
  {
diff --git a/patches/cgroups-use-simple-wait-in-css_release.patch b/patches/cgroups-use-simple-wait-in-css_release.patch
index 9e9708d..6982596 100644
--- a/patches/cgroups-use-simple-wait-in-css_release.patch
+++ b/patches/cgroups-use-simple-wait-in-css_release.patch
@@ -52,7 +52,7 @@
  /*
 --- a/kernel/cgroup.c
 +++ b/kernel/cgroup.c
-@@ -4733,10 +4733,10 @@ static void css_free_rcu_fn(struct rcu_h
+@@ -4737,10 +4737,10 @@ static void css_free_rcu_fn(struct rcu_h
  	queue_work(cgroup_destroy_wq, &css->destroy_work);
  }
  
@@ -65,7 +65,7 @@
  	struct cgroup_subsys *ss = css->ss;
  	struct cgroup *cgrp = css->cgroup;
  
-@@ -4775,8 +4775,8 @@ static void css_release(struct percpu_re
+@@ -4779,8 +4779,8 @@ static void css_release(struct percpu_re
  	struct cgroup_subsys_state *css =
  		container_of(ref, struct cgroup_subsys_state, refcnt);
  
@@ -76,7 +76,7 @@
  }
  
  static void init_and_link_css(struct cgroup_subsys_state *css,
-@@ -5392,6 +5392,7 @@ static int __init cgroup_wq_init(void)
+@@ -5396,6 +5396,7 @@ static int __init cgroup_wq_init(void)
  	 */
  	cgroup_destroy_wq = alloc_workqueue("cgroup_destroy", 0, 1);
  	BUG_ON(!cgroup_destroy_wq);
diff --git a/patches/completion-use-simple-wait-queues.patch b/patches/completion-use-simple-wait-queues.patch
index 10c178e..2346eb9 100644
--- a/patches/completion-use-simple-wait-queues.patch
+++ b/patches/completion-use-simple-wait-queues.patch
@@ -35,7 +35,7 @@
  		break;
 --- a/drivers/usb/gadget/function/f_fs.c
 +++ b/drivers/usb/gadget/function/f_fs.c
-@@ -1405,7 +1405,7 @@ static void ffs_data_put(struct ffs_data
+@@ -1404,7 +1404,7 @@ static void ffs_data_put(struct ffs_data
  		pr_info("%s(): freeing\n", __func__);
  		ffs_data_clear(ffs);
  		BUG_ON(waitqueue_active(&ffs->ev.waitq) ||
diff --git a/patches/fs-dcache-use-cpu-chill-in-trylock-loops.patch b/patches/fs-dcache-use-cpu-chill-in-trylock-loops.patch
index 5fa0de7..ead334b 100644
--- a/patches/fs-dcache-use-cpu-chill-in-trylock-loops.patch
+++ b/patches/fs-dcache-use-cpu-chill-in-trylock-loops.patch
@@ -55,7 +55,7 @@
  	return dentry; /* try again with same dentry */
  }
  
-@@ -2388,7 +2389,7 @@ void d_delete(struct dentry * dentry)
+@@ -2391,7 +2392,7 @@ void d_delete(struct dentry * dentry)
  	if (dentry->d_lockref.count == 1) {
  		if (!spin_trylock(&inode->i_lock)) {
  			spin_unlock(&dentry->d_lock);
diff --git a/patches/iommu-amd--Use-WARN_ON_NORT.patch b/patches/iommu-amd--Use-WARN_ON_NORT.patch
index 32dcbd0..3bde9d0 100644
--- a/patches/iommu-amd--Use-WARN_ON_NORT.patch
+++ b/patches/iommu-amd--Use-WARN_ON_NORT.patch
@@ -16,7 +16,7 @@
 
 --- a/drivers/iommu/amd_iommu.c
 +++ b/drivers/iommu/amd_iommu.c
-@@ -1952,10 +1952,10 @@ static int __attach_device(struct iommu_
+@@ -2017,10 +2017,10 @@ static int __attach_device(struct iommu_
  	int ret;
  
  	/*
@@ -30,7 +30,7 @@
  
  	/* lock domain */
  	spin_lock(&domain->lock);
-@@ -2118,10 +2118,10 @@ static void __detach_device(struct iommu
+@@ -2183,10 +2183,10 @@ static void __detach_device(struct iommu
  	struct protection_domain *domain;
  
  	/*
diff --git a/patches/localversion.patch b/patches/localversion.patch
index 35c628e..d061f44 100644
--- a/patches/localversion.patch
+++ b/patches/localversion.patch
@@ -1,4 +1,4 @@
-Subject: v4.4.7-rt16
+Subject: v4.4.9-rt17
 From: Thomas Gleixner <tglx@linutronix.de>
 Date: Fri, 08 Jul 2011 20:25:16 +0200
 
@@ -10,4 +10,4 @@
 --- /dev/null
 +++ b/localversion-rt
 @@ -0,0 +1 @@
-+-rt16
++-rt17
diff --git a/patches/mm-memcontrol-Don-t-call-schedule_work_on-in-preempt.patch b/patches/mm-memcontrol-Don-t-call-schedule_work_on-in-preempt.patch
index 822cda3..ee1066f 100644
--- a/patches/mm-memcontrol-Don-t-call-schedule_work_on-in-preempt.patch
+++ b/patches/mm-memcontrol-Don-t-call-schedule_work_on-in-preempt.patch
@@ -48,7 +48,7 @@
 
 --- a/mm/memcontrol.c
 +++ b/mm/memcontrol.c
-@@ -1958,7 +1958,7 @@ static void drain_all_stock(struct mem_c
+@@ -1959,7 +1959,7 @@ static void drain_all_stock(struct mem_c
  		return;
  	/* Notify other cpus that system-wide "drain" is running */
  	get_online_cpus();
@@ -57,7 +57,7 @@
  	for_each_online_cpu(cpu) {
  		struct memcg_stock_pcp *stock = &per_cpu(memcg_stock, cpu);
  		struct mem_cgroup *memcg;
-@@ -1975,7 +1975,7 @@ static void drain_all_stock(struct mem_c
+@@ -1976,7 +1976,7 @@ static void drain_all_stock(struct mem_c
  				schedule_work_on(cpu, &stock->work);
  		}
  	}
diff --git a/patches/mm-memcontrol-do_not_disable_irq.patch b/patches/mm-memcontrol-do_not_disable_irq.patch
index ffc5072..9d7f3cc 100644
--- a/patches/mm-memcontrol-do_not_disable_irq.patch
+++ b/patches/mm-memcontrol-do_not_disable_irq.patch
@@ -59,7 +59,7 @@
  static const char * const mem_cgroup_stat_names[] = {
  	"cache",
  	"rss",
-@@ -4617,12 +4620,12 @@ static int mem_cgroup_move_account(struc
+@@ -4618,12 +4621,12 @@ static int mem_cgroup_move_account(struc
  
  	ret = 0;
  
@@ -74,7 +74,7 @@
  out_unlock:
  	unlock_page(page);
  out:
-@@ -5410,10 +5413,10 @@ void mem_cgroup_commit_charge(struct pag
+@@ -5411,10 +5414,10 @@ void mem_cgroup_commit_charge(struct pag
  		VM_BUG_ON_PAGE(!PageTransHuge(page), page);
  	}
  
@@ -87,7 +87,7 @@
  
  	if (do_swap_account && PageSwapCache(page)) {
  		swp_entry_t entry = { .val = page_private(page) };
-@@ -5469,14 +5472,14 @@ static void uncharge_batch(struct mem_cg
+@@ -5470,14 +5473,14 @@ static void uncharge_batch(struct mem_cg
  		memcg_oom_recover(memcg);
  	}
  
@@ -104,7 +104,7 @@
  
  	if (!mem_cgroup_is_root(memcg))
  		css_put_many(&memcg->css, nr_pages);
-@@ -5668,6 +5671,7 @@ void mem_cgroup_swapout(struct page *pag
+@@ -5669,6 +5672,7 @@ void mem_cgroup_swapout(struct page *pag
  {
  	struct mem_cgroup *memcg;
  	unsigned short oldid;
@@ -112,7 +112,7 @@
  
  	VM_BUG_ON_PAGE(PageLRU(page), page);
  	VM_BUG_ON_PAGE(page_count(page), page);
-@@ -5696,9 +5700,13 @@ void mem_cgroup_swapout(struct page *pag
+@@ -5697,9 +5701,13 @@ 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/net-wireless-warn-nort.patch b/patches/net-wireless-warn-nort.patch
index 688a8e0..e3b49fc 100644
--- a/patches/net-wireless-warn-nort.patch
+++ b/patches/net-wireless-warn-nort.patch
@@ -12,7 +12,7 @@
 
 --- a/net/mac80211/rx.c
 +++ b/net/mac80211/rx.c
-@@ -3573,7 +3573,7 @@ void ieee80211_rx_napi(struct ieee80211_
+@@ -3574,7 +3574,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 6d76a23..94ae7bc 100644
--- a/patches/rt-add-rt-locks.patch
+++ b/patches/rt-add-rt-locks.patch
@@ -922,7 +922,7 @@
  	bool deboost;
  	int ret = 0;
  
-@@ -1268,7 +1269,8 @@ static int wake_futex_pi(u32 __user *uad
+@@ -1278,7 +1279,8 @@ static int wake_futex_pi(u32 __user *uad
  
  	raw_spin_unlock_irq(&pi_state->pi_mutex.wait_lock);
  
@@ -932,7 +932,7 @@
  
  	/*
  	 * First unlock HB so the waiter does not spin on it once he got woken
-@@ -1278,6 +1280,7 @@ static int wake_futex_pi(u32 __user *uad
+@@ -1288,6 +1290,7 @@ static int wake_futex_pi(u32 __user *uad
  	 */
  	spin_unlock(&hb->lock);
  	wake_up_q(&wake_q);
@@ -940,7 +940,7 @@
  	if (deboost)
  		rt_mutex_adjust_prio(current);
  
-@@ -2709,10 +2712,7 @@ static int futex_wait_requeue_pi(u32 __u
+@@ -2728,10 +2731,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-Make-wait_lock-irq-safe.patch b/patches/rtmutex-Make-wait_lock-irq-safe.patch
index 7befb3b..d36807b 100644
--- a/patches/rtmutex-Make-wait_lock-irq-safe.patch
+++ b/patches/rtmutex-Make-wait_lock-irq-safe.patch
@@ -51,9 +51,9 @@
  	new_owner = rt_mutex_next_owner(&pi_state->pi_mutex);
  
  	/*
-@@ -1249,22 +1249,22 @@ static int wake_futex_pi(u32 __user *uad
- 	else if (curval != uval)
- 		ret = -EINVAL;
+@@ -1259,22 +1259,22 @@ static int wake_futex_pi(u32 __user *uad
+ 			ret = -EINVAL;
+ 	}
  	if (ret) {
 -		raw_spin_unlock(&pi_state->pi_mutex.wait_lock);
 +		raw_spin_unlock_irq(&pi_state->pi_mutex.wait_lock);
@@ -80,7 +80,7 @@
  
  	deboost = rt_mutex_futex_unlock(&pi_state->pi_mutex, &wake_q);
  
-@@ -2129,11 +2129,11 @@ static int fixup_owner(u32 __user *uaddr
+@@ -2139,11 +2139,11 @@ static int fixup_owner(u32 __user *uaddr
  		 * we returned due to timeout or signal without taking the
  		 * rt_mutex. Too late.
  		 */
diff --git a/patches/rtmutex-futex-prepare-rt.patch b/patches/rtmutex-futex-prepare-rt.patch
index 236ba87..80f6ada 100644
--- a/patches/rtmutex-futex-prepare-rt.patch
+++ b/patches/rtmutex-futex-prepare-rt.patch
@@ -15,7 +15,7 @@
 
 --- a/kernel/futex.c
 +++ b/kernel/futex.c
-@@ -1812,6 +1812,16 @@ static int futex_requeue(u32 __user *uad
+@@ -1822,6 +1822,16 @@ static int futex_requeue(u32 __user *uad
  				requeue_pi_wake_futex(this, &key2, hb2);
  				drop_count++;
  				continue;
@@ -32,7 +32,7 @@
  			} else if (ret) {
  				/* -EDEADLK */
  				this->pi_state = NULL;
-@@ -2672,7 +2682,7 @@ static int futex_wait_requeue_pi(u32 __u
+@@ -2691,7 +2701,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;
@@ -41,7 +41,7 @@
  	union futex_key key2 = FUTEX_KEY_INIT;
  	struct futex_q q = futex_q_init;
  	int res, ret;
-@@ -2731,20 +2741,55 @@ static int futex_wait_requeue_pi(u32 __u
+@@ -2750,20 +2760,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 @@
  
  	/* Check if the requeue code acquired the second futex for us. */
  	if (!q.rt_waiter) {
-@@ -2753,14 +2798,15 @@ static int futex_wait_requeue_pi(u32 __u
+@@ -2772,14 +2817,15 @@ 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)) {
@@ -126,7 +126,7 @@
  		}
  	} else {
  		/*
-@@ -2773,7 +2819,8 @@ static int futex_wait_requeue_pi(u32 __u
+@@ -2792,7 +2838,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/series b/patches/series
index 6bce9da..d754ddd 100644
--- a/patches/series
+++ b/patches/series
@@ -6,7 +6,6 @@
 # UPSTREAM changes queued
 ############################################################
 rtmutex-Make-wait_lock-irq-safe.patch
-arm64-replace-read_lock-to-rcu-lock-in-call_step_hoo.patch
 tracing-writeback-Replace-cgroup-path-to-cgroup-ino.patch
 kvm-rt-change-async-pagefault-code-locking-for-PREEM.patch
 panic-x86-Fix-re-entrance-problem-due-to-panic-on-NM.patch
diff --git a/patches/skbufhead-raw-lock.patch b/patches/skbufhead-raw-lock.patch
index 983b721..fc2f5dc 100644
--- a/patches/skbufhead-raw-lock.patch
+++ b/patches/skbufhead-raw-lock.patch
@@ -15,7 +15,7 @@
 
 --- a/include/linux/netdevice.h
 +++ b/include/linux/netdevice.h
-@@ -2546,6 +2546,7 @@ struct softnet_data {
+@@ -2564,6 +2564,7 @@ struct softnet_data {
  	unsigned int		dropped;
  	struct sk_buff_head	input_pkt_queue;
  	struct napi_struct	backlog;
diff --git a/patches/work-queue-work-around-irqsafe-timer-optimization.patch b/patches/work-queue-work-around-irqsafe-timer-optimization.patch
index 1a2df12..9d123ad 100644
--- a/patches/work-queue-work-around-irqsafe-timer-optimization.patch
+++ b/patches/work-queue-work-around-irqsafe-timer-optimization.patch
@@ -121,7 +121,7 @@
  
  #include "workqueue_internal.h"
  
-@@ -1256,7 +1257,7 @@ static int try_to_grab_pending(struct wo
+@@ -1285,7 +1286,7 @@ static int try_to_grab_pending(struct wo
  	local_unlock_irqrestore(pendingb_lock, *flags);
  	if (work_is_canceling(work))
  		return -ENOENT;
diff --git a/patches/workqueue-distangle-from-rq-lock.patch b/patches/workqueue-distangle-from-rq-lock.patch
index b243acb..30d1fd1 100644
--- a/patches/workqueue-distangle-from-rq-lock.patch
+++ b/patches/workqueue-distangle-from-rq-lock.patch
@@ -155,7 +155,7 @@
  
 --- a/kernel/workqueue.c
 +++ b/kernel/workqueue.c
-@@ -821,44 +821,31 @@ static void wake_up_worker(struct worker
+@@ -850,44 +850,31 @@ static void wake_up_worker(struct worker
  }
  
  /**
@@ -212,7 +212,7 @@
  	struct worker_pool *pool;
  
  	/*
-@@ -867,14 +854,15 @@ struct task_struct *wq_worker_sleeping(s
+@@ -896,14 +883,15 @@ struct task_struct *wq_worker_sleeping(s
  	 * checking NOT_RUNNING.
  	 */
  	if (worker->flags & WORKER_NOT_RUNNING)
@@ -232,7 +232,7 @@
  	/*
  	 * The counterpart of the following dec_and_test, implied mb,
  	 * worklist not empty test sequence is in insert_work().
-@@ -887,9 +875,12 @@ struct task_struct *wq_worker_sleeping(s
+@@ -916,9 +904,12 @@ struct task_struct *wq_worker_sleeping(s
  	 * lock is safe.
  	 */
  	if (atomic_dec_and_test(&pool->nr_running) &&
diff --git a/patches/workqueue-prevent-deadlock-stall.patch b/patches/workqueue-prevent-deadlock-stall.patch
index 4254cf6..765da8c 100644
--- a/patches/workqueue-prevent-deadlock-stall.patch
+++ b/patches/workqueue-prevent-deadlock-stall.patch
@@ -111,7 +111,7 @@
  #ifdef CONFIG_DEBUG_OBJECTS_WORK
  
  static struct debug_obj_descr work_debug_descr;
-@@ -814,10 +844,16 @@ static struct worker *first_idle_worker(
+@@ -843,10 +873,16 @@ static struct worker *first_idle_worker(
   */
  static void wake_up_worker(struct worker_pool *pool)
  {
@@ -129,7 +129,7 @@
  }
  
  /**
-@@ -845,7 +881,7 @@ void wq_worker_running(struct task_struc
+@@ -874,7 +910,7 @@ void wq_worker_running(struct task_struc
   */
  void wq_worker_sleeping(struct task_struct *task)
  {
@@ -138,7 +138,7 @@
  	struct worker_pool *pool;
  
  	/*
-@@ -862,25 +898,18 @@ void wq_worker_sleeping(struct task_stru
+@@ -891,25 +927,18 @@ void wq_worker_sleeping(struct task_stru
  		return;
  
  	worker->sleeping = 1;
@@ -168,7 +168,7 @@
  }
  
  /**
-@@ -1571,7 +1600,9 @@ static void worker_enter_idle(struct wor
+@@ -1600,7 +1629,9 @@ static void worker_enter_idle(struct wor
  	worker->last_active = jiffies;
  
  	/* idle_list is LIFO */
@@ -178,7 +178,7 @@
  
  	if (too_many_workers(pool) && !timer_pending(&pool->idle_timer))
  		mod_timer(&pool->idle_timer, jiffies + IDLE_WORKER_TIMEOUT);
-@@ -1604,7 +1635,9 @@ static void worker_leave_idle(struct wor
+@@ -1633,7 +1664,9 @@ static void worker_leave_idle(struct wor
  		return;
  	worker_clr_flags(worker, WORKER_IDLE);
  	pool->nr_idle--;
@@ -188,7 +188,7 @@
  }
  
  static struct worker *alloc_worker(int node)
-@@ -1770,7 +1803,9 @@ static void destroy_worker(struct worker
+@@ -1799,7 +1832,9 @@ static void destroy_worker(struct worker
  	pool->nr_workers--;
  	pool->nr_idle--;
  
diff --git a/patches/workqueue-use-locallock.patch b/patches/workqueue-use-locallock.patch
index 44df5c5..34761ce 100644
--- a/patches/workqueue-use-locallock.patch
+++ b/patches/workqueue-use-locallock.patch
@@ -29,7 +29,7 @@
  static int worker_thread(void *__worker);
  static void workqueue_sysfs_unregister(struct workqueue_struct *wq);
  
-@@ -1082,9 +1085,9 @@ static void put_pwq_unlocked(struct pool
+@@ -1111,9 +1114,9 @@ static void put_pwq_unlocked(struct pool
  		 * As both pwqs and pools are RCU protected, the
  		 * following lock operations are safe.
  		 */
@@ -41,7 +41,7 @@
  	}
  }
  
-@@ -1186,7 +1189,7 @@ static int try_to_grab_pending(struct wo
+@@ -1215,7 +1218,7 @@ static int try_to_grab_pending(struct wo
  	struct worker_pool *pool;
  	struct pool_workqueue *pwq;
  
@@ -50,7 +50,7 @@
  
  	/* try to steal the timer if it exists */
  	if (is_dwork) {
-@@ -1250,7 +1253,7 @@ static int try_to_grab_pending(struct wo
+@@ -1279,7 +1282,7 @@ static int try_to_grab_pending(struct wo
  	spin_unlock(&pool->lock);
  fail:
  	rcu_read_unlock();
@@ -59,7 +59,7 @@
  	if (work_is_canceling(work))
  		return -ENOENT;
  	cpu_relax();
-@@ -1322,7 +1325,7 @@ static void __queue_work(int cpu, struct
+@@ -1351,7 +1354,7 @@ static void __queue_work(int cpu, struct
  	 * queued or lose PENDING.  Grabbing PENDING and queueing should
  	 * happen with IRQ disabled.
  	 */
@@ -68,7 +68,7 @@
  
  	debug_work_activate(work);
  
-@@ -1427,14 +1430,14 @@ bool queue_work_on(int cpu, struct workq
+@@ -1456,14 +1459,14 @@ bool queue_work_on(int cpu, struct workq
  	bool ret = false;
  	unsigned long flags;
  
@@ -85,7 +85,7 @@
  	return ret;
  }
  EXPORT_SYMBOL(queue_work_on);
-@@ -1501,14 +1504,14 @@ bool queue_delayed_work_on(int cpu, stru
+@@ -1530,14 +1533,14 @@ bool queue_delayed_work_on(int cpu, stru
  	unsigned long flags;
  
  	/* read the comment in __queue_work() */
@@ -102,7 +102,7 @@
  	return ret;
  }
  EXPORT_SYMBOL(queue_delayed_work_on);
-@@ -1543,7 +1546,7 @@ bool mod_delayed_work_on(int cpu, struct
+@@ -1572,7 +1575,7 @@ bool mod_delayed_work_on(int cpu, struct
  
  	if (likely(ret >= 0)) {
  		__queue_delayed_work(cpu, wq, dwork, delay);
@@ -111,7 +111,7 @@
  	}
  
  	/* -ENOENT from try_to_grab_pending() becomes %true */
-@@ -2817,7 +2820,7 @@ static bool __cancel_work_timer(struct w
+@@ -2846,7 +2849,7 @@ static bool __cancel_work_timer(struct w
  
  	/* tell other tasks trying to grab @work to back off */
  	mark_work_canceling(work);
@@ -120,7 +120,7 @@
  
  	flush_work(work);
  	clear_work_data(work);
-@@ -2872,10 +2875,10 @@ EXPORT_SYMBOL_GPL(cancel_work_sync);
+@@ -2901,10 +2904,10 @@ EXPORT_SYMBOL_GPL(cancel_work_sync);
   */
  bool flush_delayed_work(struct delayed_work *dwork)
  {
@@ -133,7 +133,7 @@
  	return flush_work(&dwork->work);
  }
  EXPORT_SYMBOL(flush_delayed_work);
-@@ -2910,7 +2913,7 @@ bool cancel_delayed_work(struct delayed_
+@@ -2939,7 +2942,7 @@ bool cancel_delayed_work(struct delayed_
  
  	set_work_pool_and_clear_pending(&dwork->work,
  					get_work_pool_id(&dwork->work));
diff --git a/patches/workqueue-use-rcu.patch b/patches/workqueue-use-rcu.patch
index 3a156db..8a70b6c 100644
--- a/patches/workqueue-use-rcu.patch
+++ b/patches/workqueue-use-rcu.patch
@@ -104,7 +104,7 @@
   * read locked.
   * If the pwq needs to be used beyond the locking in effect, the caller is
   * responsible for guaranteeing that the pwq stays online.
-@@ -672,8 +672,8 @@ static struct pool_workqueue *get_work_p
+@@ -701,8 +701,8 @@ static struct pool_workqueue *get_work_p
   * @work: the work item of interest
   *
   * Pools are created and destroyed under wq_pool_mutex, and allows read
@@ -115,7 +115,7 @@
   *
   * All fields of the returned pool are accessible as long as the above
   * mentioned locking is in effect.  If the returned pool needs to be used
-@@ -1079,7 +1079,7 @@ static void put_pwq_unlocked(struct pool
+@@ -1108,7 +1108,7 @@ static void put_pwq_unlocked(struct pool
  {
  	if (pwq) {
  		/*
@@ -124,7 +124,7 @@
  		 * following lock operations are safe.
  		 */
  		spin_lock_irq(&pwq->pool->lock);
-@@ -1205,6 +1205,7 @@ static int try_to_grab_pending(struct wo
+@@ -1234,6 +1234,7 @@ static int try_to_grab_pending(struct wo
  	if (!test_and_set_bit(WORK_STRUCT_PENDING_BIT, work_data_bits(work)))
  		return 0;
  
@@ -132,7 +132,7 @@
  	/*
  	 * The queueing is in progress, or it is already queued. Try to
  	 * steal it from ->worklist without clearing WORK_STRUCT_PENDING.
-@@ -1243,10 +1244,12 @@ static int try_to_grab_pending(struct wo
+@@ -1272,10 +1273,12 @@ static int try_to_grab_pending(struct wo
  		set_work_pool_and_keep_pending(work, pool->id);
  
  		spin_unlock(&pool->lock);
@@ -145,7 +145,7 @@
  	local_irq_restore(*flags);
  	if (work_is_canceling(work))
  		return -ENOENT;
-@@ -1327,6 +1330,8 @@ static void __queue_work(int cpu, struct
+@@ -1356,6 +1359,8 @@ static void __queue_work(int cpu, struct
  	if (unlikely(wq->flags & __WQ_DRAINING) &&
  	    WARN_ON_ONCE(!is_chained_work(wq)))
  		return;
@@ -154,7 +154,7 @@
  retry:
  	if (req_cpu == WORK_CPU_UNBOUND)
  		cpu = raw_smp_processor_id();
-@@ -1383,10 +1388,8 @@ static void __queue_work(int cpu, struct
+@@ -1412,10 +1417,8 @@ static void __queue_work(int cpu, struct
  	/* pwq determined, queue */
  	trace_workqueue_queue_work(req_cpu, pwq, work);
  
@@ -167,7 +167,7 @@
  
  	pwq->nr_in_flight[pwq->work_color]++;
  	work_flags = work_color_to_flags(pwq->work_color);
-@@ -1402,7 +1405,9 @@ static void __queue_work(int cpu, struct
+@@ -1431,7 +1434,9 @@ static void __queue_work(int cpu, struct
  
  	insert_work(pwq, work, worklist, work_flags);
  
@@ -177,7 +177,7 @@
  }
  
  /**
-@@ -2687,14 +2692,14 @@ static bool start_flush_work(struct work
+@@ -2716,14 +2721,14 @@ static bool start_flush_work(struct work
  
  	might_sleep();
  
@@ -195,7 +195,7 @@
  	/* see the comment in try_to_grab_pending() with the same code */
  	pwq = get_work_pwq(work);
  	if (pwq) {
-@@ -2721,10 +2726,11 @@ static bool start_flush_work(struct work
+@@ -2750,10 +2755,11 @@ static bool start_flush_work(struct work
  	else
  		lock_map_acquire_read(&pwq->wq->lockdep_map);
  	lock_map_release(&pwq->wq->lockdep_map);
@@ -208,7 +208,7 @@
  	return false;
  }
  
-@@ -3132,7 +3138,7 @@ static void rcu_free_pool(struct rcu_hea
+@@ -3161,7 +3167,7 @@ static void rcu_free_pool(struct rcu_hea
   * put_unbound_pool - put a worker_pool
   * @pool: worker_pool to put
   *
@@ -217,7 +217,7 @@
   * safe manner.  get_unbound_pool() calls this function on its failure path
   * and this function should be able to release pools which went through,
   * successfully or not, init_worker_pool().
-@@ -3186,8 +3192,8 @@ static void put_unbound_pool(struct work
+@@ -3215,8 +3221,8 @@ static void put_unbound_pool(struct work
  	del_timer_sync(&pool->idle_timer);
  	del_timer_sync(&pool->mayday_timer);
  
@@ -228,7 +228,7 @@
  }
  
  /**
-@@ -3294,14 +3300,14 @@ static void pwq_unbound_release_workfn(s
+@@ -3323,14 +3329,14 @@ static void pwq_unbound_release_workfn(s
  	put_unbound_pool(pool);
  	mutex_unlock(&wq_pool_mutex);
  
@@ -245,7 +245,7 @@
  }
  
  /**
-@@ -3954,7 +3960,7 @@ void destroy_workqueue(struct workqueue_
+@@ -3983,7 +3989,7 @@ void destroy_workqueue(struct workqueue_
  		 * The base ref is never dropped on per-cpu pwqs.  Directly
  		 * schedule RCU free.
  		 */
@@ -254,7 +254,7 @@
  	} else {
  		/*
  		 * We're the sole accessor of @wq at this point.  Directly
-@@ -4047,7 +4053,8 @@ bool workqueue_congested(int cpu, struct
+@@ -4076,7 +4082,8 @@ bool workqueue_congested(int cpu, struct
  	struct pool_workqueue *pwq;
  	bool ret;
  
@@ -264,7 +264,7 @@
  
  	if (cpu == WORK_CPU_UNBOUND)
  		cpu = smp_processor_id();
-@@ -4058,7 +4065,8 @@ bool workqueue_congested(int cpu, struct
+@@ -4087,7 +4094,8 @@ bool workqueue_congested(int cpu, struct
  		pwq = unbound_pwq_by_node(wq, cpu_to_node(cpu));
  
  	ret = !list_empty(&pwq->delayed_works);
@@ -274,7 +274,7 @@
  
  	return ret;
  }
-@@ -4084,15 +4092,15 @@ unsigned int work_busy(struct work_struc
+@@ -4113,15 +4121,15 @@ unsigned int work_busy(struct work_struc
  	if (work_pending(work))
  		ret |= WORK_BUSY_PENDING;
  
@@ -294,7 +294,7 @@
  
  	return ret;
  }
-@@ -4281,7 +4289,7 @@ void show_workqueue_state(void)
+@@ -4310,7 +4318,7 @@ void show_workqueue_state(void)
  	unsigned long flags;
  	int pi;
  
@@ -303,7 +303,7 @@
  
  	pr_info("Showing busy workqueues and worker pools:\n");
  
-@@ -4332,7 +4340,7 @@ void show_workqueue_state(void)
+@@ -4361,7 +4369,7 @@ void show_workqueue_state(void)
  		spin_unlock_irqrestore(&pool->lock, flags);
  	}
  
@@ -312,7 +312,7 @@
  }
  
  /*
-@@ -4682,16 +4690,16 @@ bool freeze_workqueues_busy(void)
+@@ -4711,16 +4719,16 @@ bool freeze_workqueues_busy(void)
  		 * nr_active is monotonically decreasing.  It's safe
  		 * to peek without lock.
  		 */
@@ -332,7 +332,7 @@
  	}
  out_unlock:
  	mutex_unlock(&wq_pool_mutex);
-@@ -4881,7 +4889,8 @@ static ssize_t wq_pool_ids_show(struct d
+@@ -4910,7 +4918,8 @@ static ssize_t wq_pool_ids_show(struct d
  	const char *delim = "";
  	int node, written = 0;
  
@@ -342,7 +342,7 @@
  	for_each_node(node) {
  		written += scnprintf(buf + written, PAGE_SIZE - written,
  				     "%s%d:%d", delim, node,
-@@ -4889,7 +4898,8 @@ static ssize_t wq_pool_ids_show(struct d
+@@ -4918,7 +4927,8 @@ static ssize_t wq_pool_ids_show(struct d
  		delim = " ";
  	}
  	written += scnprintf(buf + written, PAGE_SIZE - written, "\n");
diff --git a/patches/x86-kvm-require-const-tsc-for-rt.patch b/patches/x86-kvm-require-const-tsc-for-rt.patch
index 0df27e3..5fa84b0 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 @@
 
 --- a/arch/x86/kvm/x86.c
 +++ b/arch/x86/kvm/x86.c
-@@ -5789,6 +5789,13 @@ int kvm_arch_init(void *opaque)
+@@ -5788,6 +5788,13 @@ int kvm_arch_init(void *opaque)
  		goto out;
  	}
  
