summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPaul Gortmaker <paul.gortmaker@windriver.com>2013-10-08 09:46:46 -0400
committerPaul Gortmaker <paul.gortmaker@windriver.com>2013-10-08 09:46:46 -0400
commit5dec24f3287376952e29b6657e1ef4bce4847dc2 (patch)
tree26448ed08a2053543678cf9d08428e66957b34bb
parent558ad89f715e7f7af0dda692425e7db14b1167fe (diff)
download3.10-rt-patches-5dec24f3287376952e29b6657e1ef4bce4847dc2.tar.gz
patches-3.10.14-rt9.tar.xzv3.10.14-rt9
md5sum: 1749f8112eca1d4f4a4ade3de535ee84 patches-3.10.14-rt9.tar.xz Announce: -------------- Dear RT folks! I'm pleased to announce the v3.10.14-rt9 patch set. Changes since v3.10.14-rt8 - the threshold module option of hwlat is no longer ignored. Path sent by Mike Galbraith - two patches from Kirill Tkhai to get basic RT compiled on Sparc. - the ppc patch for the 5200 has been altered slightly. Patch sent by Wolfram Sang - A patch for SLAB to get it working on !RT (Thanks Corey Minyard). - a fix for "sleeping from invalid context" in clock_was_set_delayed(). Patch by Yang Shi. - another fix for "sleeping from invalid context" in drain_all_stock. Patch also by Yang Shi. Known issues: - SLAB support not working - The cpsw network driver shows some issues. - bcache is disabled. - an ancient race (since we got sleeping spinlocks) where the TASK_TRACED state is temporary replaced while waiting on a rw lock and the task can't be traced. The delta patch against v3.10.10-rt6 is appended below and can be found here: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/incr/patch-3.10.14-rt8-rt9.patch.xz The RT patch against 3.10.14 can be found here: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patch-3.10.14-rt9.patch.xz The split quilt queue is available at: https://www.kernel.org/pub/linux/kernel/projects/rt/3.10/patches-3.10.14-rt9.tar.xz Sebastian [delta diff snipped] -------------- http://marc.info/?l=linux-rt-users&m=138098783430191&w=2 Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
-rw-r--r--patches/Kind-of-revert-powerpc-52xx-provide-a-default-in-mpc.patch47
-rw-r--r--patches/hrtimer-Move-schedule_work-call-to-helper-thread.patch123
-rw-r--r--patches/hwlat-detector-Don-t-ignore-threshold-module-paramet.patch31
-rw-r--r--patches/localversion.patch2
-rw-r--r--patches/mm-memcontrol-Don-t-call-schedule_work_on-in-preempt.patch86
-rw-r--r--patches/mm-slab-Don-t-free-locks-twice-in-cpuup_canceled.patch34
-rw-r--r--patches/net-iwlwifi-request-only-a-threaded-handler-for-inte.patch60
-rw-r--r--patches/series8
-rw-r--r--patches/sparc-provide-EARLY_PRINTK-for-SPARC.patch40
-rw-r--r--patches/sparc64-Remove-RWSEM-export-leftovers.patch49
10 files changed, 479 insertions, 1 deletions
diff --git a/patches/Kind-of-revert-powerpc-52xx-provide-a-default-in-mpc.patch b/patches/Kind-of-revert-powerpc-52xx-provide-a-default-in-mpc.patch
new file mode 100644
index 0000000..b255e56
--- /dev/null
+++ b/patches/Kind-of-revert-powerpc-52xx-provide-a-default-in-mpc.patch
@@ -0,0 +1,47 @@
+From 0939f949f9c72833e5b1a718bd5b4546873b0b38 Mon Sep 17 00:00:00 2001
+From: Wolfram Sang <wsa@the-dreams.de>
+Date: Fri, 4 Oct 2013 17:37:09 +0200
+Subject: [PATCH] Kind of revert "powerpc: 52xx: provide a default in
+ mpc52xx_irqhost_map()"
+
+This more or less reverts commit 6391f697d4892a6f233501beea553e13f7745a23.
+Instead of adding an unneeded 'default', mark the variable to prevent
+the false positive 'uninitialized var'. The other change (fixing the
+printout) needs revert, too. We want to know WHICH critical irq failed,
+not which level it had.
+
+Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
+Cc: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
+Cc: Anatolij Gustschin <agust@denx.de>
+Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
+---
+ arch/powerpc/platforms/52xx/mpc52xx_pic.c | 5 ++---
+ 1 file changed, 2 insertions(+), 3 deletions(-)
+
+diff --git a/arch/powerpc/platforms/52xx/mpc52xx_pic.c b/arch/powerpc/platforms/52xx/mpc52xx_pic.c
+index b69221b..2898b73 100644
+--- a/arch/powerpc/platforms/52xx/mpc52xx_pic.c
++++ b/arch/powerpc/platforms/52xx/mpc52xx_pic.c
+@@ -340,7 +340,7 @@ static int mpc52xx_irqhost_map(struct irq_domain *h, unsigned int virq,
+ {
+ int l1irq;
+ int l2irq;
+- struct irq_chip *irqchip;
++ struct irq_chip *uninitialized_var(irqchip);
+ void *hndlr;
+ int type;
+ u32 reg;
+@@ -373,9 +373,8 @@ static int mpc52xx_irqhost_map(struct irq_domain *h, unsigned int virq,
+ case MPC52xx_IRQ_L1_PERP: irqchip = &mpc52xx_periph_irqchip; break;
+ case MPC52xx_IRQ_L1_SDMA: irqchip = &mpc52xx_sdma_irqchip; break;
+ case MPC52xx_IRQ_L1_CRIT:
+- default:
+ pr_warn("%s: Critical IRQ #%d is unsupported! Nopping it.\n",
+- __func__, l1irq);
++ __func__, l2irq);
+ irq_set_chip(virq, &no_irq_chip);
+ return 0;
+ }
+--
+1.8.4.rc3
+
diff --git a/patches/hrtimer-Move-schedule_work-call-to-helper-thread.patch b/patches/hrtimer-Move-schedule_work-call-to-helper-thread.patch
new file mode 100644
index 0000000..0626048
--- /dev/null
+++ b/patches/hrtimer-Move-schedule_work-call-to-helper-thread.patch
@@ -0,0 +1,123 @@
+From 180cdb93d796bf52c919f5e3df30af83aa6d46ca Mon Sep 17 00:00:00 2001
+From: Yang Shi <yang.shi@windriver.com>
+Date: Mon, 16 Sep 2013 14:09:19 -0700
+Subject: [PATCH] hrtimer: Move schedule_work call to helper thread
+
+When run ltp leapsec_timer test, the following call trace is caught:
+
+BUG: sleeping function called from invalid context at kernel/rtmutex.c:659
+in_atomic(): 1, irqs_disabled(): 1, pid: 0, name: swapper/1
+Preemption disabled at:[<ffffffff810857f3>] cpu_startup_entry+0x133/0x310
+
+CPU: 1 PID: 0 Comm: swapper/1 Not tainted 3.10.10-rt3 #2
+Hardware name: Intel Corporation Calpella platform/MATXM-CORE-411-B, BIOS 4.6.3 08/18/2010
+ffffffff81c2f800 ffff880076843e40 ffffffff8169918d ffff880076843e58
+ffffffff8106db31 ffff88007684b4a0 ffff880076843e70 ffffffff8169d9c0
+ffff88007684b4a0 ffff880076843eb0 ffffffff81059da1 0000001876851200
+Call Trace:
+<IRQ> [<ffffffff8169918d>] dump_stack+0x19/0x1b
+[<ffffffff8106db31>] __might_sleep+0xf1/0x170
+[<ffffffff8169d9c0>] rt_spin_lock+0x20/0x50
+[<ffffffff81059da1>] queue_work_on+0x61/0x100
+[<ffffffff81065aa1>] clock_was_set_delayed+0x21/0x30
+[<ffffffff810883be>] do_timer+0x40e/0x660
+[<ffffffff8108f487>] tick_do_update_jiffies64+0xf7/0x140
+[<ffffffff8108fe42>] tick_check_idle+0x92/0xc0
+[<ffffffff81044327>] irq_enter+0x57/0x70
+[<ffffffff816a040e>] smp_apic_timer_interrupt+0x3e/0x9b
+[<ffffffff8169f80a>] apic_timer_interrupt+0x6a/0x70
+<EOI> [<ffffffff8155ea1c>] ? cpuidle_enter_state+0x4c/0xc0
+[<ffffffff8155eb68>] cpuidle_idle_call+0xd8/0x2d0
+[<ffffffff8100b59e>] arch_cpu_idle+0xe/0x30
+[<ffffffff8108585e>] cpu_startup_entry+0x19e/0x310
+[<ffffffff8168efa2>] start_secondary+0x1ad/0x1b0
+
+The clock_was_set_delayed is called in hard IRQ handler (timer interrupt), which
+calls schedule_work.
+
+Under PREEMPT_RT_FULL, schedule_work calls spinlocks which could sleep, so it's
+not safe to call schedule_work in interrupt context.
+
+Reference upstream commit b68d61c705ef02384c0538b8d9374545097899ca
+(rt,ntp: Move call to schedule_delayed_work() to helper thread)
+from git://git.kernel.org/pub/scm/linux/kernel/git/rt/linux-stable-rt.git, which
+makes a similar change.
+
+add a helper thread which does the call to schedule_work and wake up that
+thread instead of calling schedule_work directly.
+
+Cc: stable-rt@vger.kernel.org
+Signed-off-by: Yang Shi <yang.shi@windriver.com>
+Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
+---
+ kernel/hrtimer.c | 40 ++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 40 insertions(+)
+
+diff --git a/kernel/hrtimer.c b/kernel/hrtimer.c
+index bd61c40..a63cfaf 100644
+--- a/kernel/hrtimer.c
++++ b/kernel/hrtimer.c
+@@ -47,6 +47,7 @@
+ #include <linux/sched/sysctl.h>
+ #include <linux/sched/rt.h>
+ #include <linux/timer.h>
++#include <linux/kthread.h>
+
+ #include <asm/uaccess.h>
+
+@@ -740,6 +741,44 @@ static void clock_was_set_work(struct work_struct *work)
+
+ static DECLARE_WORK(hrtimer_work, clock_was_set_work);
+
++#ifdef CONFIG_PREEMPT_RT_FULL
++/*
++ * RT can not call schedule_work from real interrupt context.
++ * Need to make a thread to do the real work.
++ */
++static struct task_struct *clock_set_delay_thread;
++static bool do_clock_set_delay;
++
++static int run_clock_set_delay(void *ignore)
++{
++ while (!kthread_should_stop()) {
++ set_current_state(TASK_INTERRUPTIBLE);
++ if (do_clock_set_delay) {
++ do_clock_set_delay = false;
++ schedule_work(&hrtimer_work);
++ }
++ schedule();
++ }
++ __set_current_state(TASK_RUNNING);
++ return 0;
++}
++
++void clock_was_set_delayed(void)
++{
++ do_clock_set_delay = true;
++ /* Make visible before waking up process */
++ smp_wmb();
++ wake_up_process(clock_set_delay_thread);
++}
++
++static __init int create_clock_set_delay_thread(void)
++{
++ clock_set_delay_thread = kthread_run(run_clock_set_delay, NULL, "kclksetdelayd");
++ BUG_ON(!clock_set_delay_thread);
++ return 0;
++}
++early_initcall(create_clock_set_delay_thread);
++#else /* PREEMPT_RT_FULL */
+ /*
+ * Called from timekeeping and resume code to reprogramm the hrtimer
+ * interrupt device on all cpus.
+@@ -748,6 +787,7 @@ void clock_was_set_delayed(void)
+ {
+ schedule_work(&hrtimer_work);
+ }
++#endif
+
+ #else
+
+--
+1.8.4.rc3
+
diff --git a/patches/hwlat-detector-Don-t-ignore-threshold-module-paramet.patch b/patches/hwlat-detector-Don-t-ignore-threshold-module-paramet.patch
new file mode 100644
index 0000000..4babc36
--- /dev/null
+++ b/patches/hwlat-detector-Don-t-ignore-threshold-module-paramet.patch
@@ -0,0 +1,31 @@
+From c19bf3baaa55918486b868ab17aae0c0c220e51f Mon Sep 17 00:00:00 2001
+From: Mike Galbraith <bitbucket@online.de>
+Date: Fri, 30 Aug 2013 07:57:25 +0200
+Subject: [PATCH] hwlat-detector: Don't ignore threshold module parameter
+
+If the user specified a threshold at module load time, use it.
+
+Cc: stable-rt@vger.kernel.org
+Acked-by: Steven Rostedt <rostedt@goodmis.org>
+Signed-off-by: Mike Galbraith <bitbucket@online.de>
+Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
+---
+ drivers/misc/hwlat_detector.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/drivers/misc/hwlat_detector.c b/drivers/misc/hwlat_detector.c
+index 6f61d5f..d2676b8 100644
+--- a/drivers/misc/hwlat_detector.c
++++ b/drivers/misc/hwlat_detector.c
+@@ -413,7 +413,7 @@ static int init_stats(void)
+ goto out;
+
+ __reset_stats();
+- data.threshold = DEFAULT_LAT_THRESHOLD; /* threshold us */
++ data.threshold = threshold ?: DEFAULT_LAT_THRESHOLD; /* threshold us */
+ data.sample_window = DEFAULT_SAMPLE_WINDOW; /* window us */
+ data.sample_width = DEFAULT_SAMPLE_WIDTH; /* width us */
+
+--
+1.8.4.rc3
+
diff --git a/patches/localversion.patch b/patches/localversion.patch
index f2f4c46..e8753c7 100644
--- a/patches/localversion.patch
+++ b/patches/localversion.patch
@@ -12,4 +12,4 @@ Link: http://lkml.kernel.org/n/tip-8vdw4bfcsds27cvox6rpb334@git.kernel.org
--- /dev/null
+++ b/localversion-rt
@@ -0,0 +1 @@
-+-rt8
++-rt9
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
new file mode 100644
index 0000000..9c38dc0
--- /dev/null
+++ b/patches/mm-memcontrol-Don-t-call-schedule_work_on-in-preempt.patch
@@ -0,0 +1,86 @@
+From b786e160853afe3c20b765e848b6ebcce434f090 Mon Sep 17 00:00:00 2001
+From: Yang Shi <yang.shi@windriver.com>
+Date: Fri, 4 Oct 2013 14:58:57 -0700
+Subject: [PATCH] mm/memcontrol: Don't call schedule_work_on in preemption
+ disabled context
+
+The following trace is triggered when running ltp oom test cases:
+
+BUG: sleeping function called from invalid context at kernel/rtmutex.c:659
+in_atomic(): 1, irqs_disabled(): 0, pid: 17188, name: oom03
+Preemption disabled at:[<ffffffff8112ba70>] mem_cgroup_reclaim+0x90/0xe0
+
+CPU: 2 PID: 17188 Comm: oom03 Not tainted 3.10.10-rt3 #2
+Hardware name: Intel Corporation Calpella platform/MATXM-CORE-411-B, BIOS 4.6.3 08/18/2010
+ffff88007684d730 ffff880070df9b58 ffffffff8169918d ffff880070df9b70
+ffffffff8106db31 ffff88007688b4a0 ffff880070df9b88 ffffffff8169d9c0
+ffff88007688b4a0 ffff880070df9bc8 ffffffff81059da1 0000000170df9bb0
+Call Trace:
+[<ffffffff8169918d>] dump_stack+0x19/0x1b
+[<ffffffff8106db31>] __might_sleep+0xf1/0x170
+[<ffffffff8169d9c0>] rt_spin_lock+0x20/0x50
+[<ffffffff81059da1>] queue_work_on+0x61/0x100
+[<ffffffff8112b361>] drain_all_stock+0xe1/0x1c0
+[<ffffffff8112ba70>] mem_cgroup_reclaim+0x90/0xe0
+[<ffffffff8112beda>] __mem_cgroup_try_charge+0x41a/0xc40
+[<ffffffff810f1c91>] ? release_pages+0x1b1/0x1f0
+[<ffffffff8106f200>] ? sched_exec+0x40/0xb0
+[<ffffffff8112cc87>] mem_cgroup_charge_common+0x37/0x70
+[<ffffffff8112e2c6>] mem_cgroup_newpage_charge+0x26/0x30
+[<ffffffff8110af68>] handle_pte_fault+0x618/0x840
+[<ffffffff8103ecf6>] ? unpin_current_cpu+0x16/0x70
+[<ffffffff81070f94>] ? migrate_enable+0xd4/0x200
+[<ffffffff8110cde5>] handle_mm_fault+0x145/0x1e0
+[<ffffffff810301e1>] __do_page_fault+0x1a1/0x4c0
+[<ffffffff8169c9eb>] ? preempt_schedule_irq+0x4b/0x70
+[<ffffffff8169e3b7>] ? retint_kernel+0x37/0x40
+[<ffffffff8103053e>] do_page_fault+0xe/0x10
+[<ffffffff8169e4c2>] page_fault+0x22/0x30
+
+So, to prevent schedule_work_on from being called in preempt disabled context,
+remove the pair of get_cpu/put_cpu and drain_local_stock shortcut.
+
+Cc: stable-rt@vger.kernel.org
+Signed-off-by: Yang Shi <yang.shi@windriver.com>
+Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
+---
+ mm/memcontrol.c | 12 +++---------
+ 1 file changed, 3 insertions(+), 9 deletions(-)
+
+diff --git a/mm/memcontrol.c b/mm/memcontrol.c
+index 905ce72..f113cb7 100644
+--- a/mm/memcontrol.c
++++ b/mm/memcontrol.c
+@@ -2436,11 +2436,10 @@ static void refill_stock(struct mem_cgroup *memcg, unsigned int nr_pages)
+ */
+ static void drain_all_stock(struct mem_cgroup *root_memcg, bool sync)
+ {
+- int cpu, curcpu;
++ int cpu;
+
+ /* Notify other cpus that system-wide "drain" is running */
+ get_online_cpus();
+- curcpu = get_cpu();
+ for_each_online_cpu(cpu) {
+ struct memcg_stock_pcp *stock = &per_cpu(memcg_stock, cpu);
+ struct mem_cgroup *memcg;
+@@ -2450,14 +2449,9 @@ static void drain_all_stock(struct mem_cgroup *root_memcg, bool sync)
+ continue;
+ if (!mem_cgroup_same_or_subtree(root_memcg, memcg))
+ continue;
+- if (!test_and_set_bit(FLUSHING_CACHED_CHARGE, &stock->flags)) {
+- if (cpu == curcpu)
+- drain_local_stock(&stock->work);
+- else
+- schedule_work_on(cpu, &stock->work);
+- }
++ if (!test_and_set_bit(FLUSHING_CACHED_CHARGE, &stock->flags))
++ schedule_work_on(cpu, &stock->work);
+ }
+- put_cpu();
+
+ if (!sync)
+ goto out;
+--
+1.8.4.rc3
+
diff --git a/patches/mm-slab-Don-t-free-locks-twice-in-cpuup_canceled.patch b/patches/mm-slab-Don-t-free-locks-twice-in-cpuup_canceled.patch
new file mode 100644
index 0000000..e104491
--- /dev/null
+++ b/patches/mm-slab-Don-t-free-locks-twice-in-cpuup_canceled.patch
@@ -0,0 +1,34 @@
+From ff272680e8412d6ba7d34abebce3a25f02f56a7d Mon Sep 17 00:00:00 2001
+From: Corey Minyard <cminyard@mvista.com>
+Date: Fri, 20 Sep 2013 13:02:29 -0500
+Subject: [PATCH] mm/slab: Don't free locks twice in cpuup_canceled
+
+Signed-off-by: Corey Minyard <cminyard@cavium.com>
+Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
+---
+ mm/slab.c | 2 --
+ 1 file changed, 2 deletions(-)
+
+diff --git a/mm/slab.c b/mm/slab.c
+index 494274e..0a3d6d3 100644
+--- a/mm/slab.c
++++ b/mm/slab.c
+@@ -1270,7 +1270,6 @@ static void __cpuinit cpuup_canceled(long cpu)
+ free_block(cachep, nc->entry, nc->avail, node);
+
+ if (!cpumask_empty(mask)) {
+- local_spin_unlock_irq(slab_lock, &n->list_lock);
+ unlock_l3_and_free_delayed(&n->list_lock);
+ goto free_array_cache;
+ }
+@@ -1285,7 +1284,6 @@ static void __cpuinit cpuup_canceled(long cpu)
+ alien = n->alien;
+ n->alien = NULL;
+
+- local_spin_unlock_irq(slab_lock, &n->list_lock);
+ unlock_l3_and_free_delayed(&n->list_lock);
+
+ kfree(shared);
+--
+1.8.4.rc3
+
diff --git a/patches/net-iwlwifi-request-only-a-threaded-handler-for-inte.patch b/patches/net-iwlwifi-request-only-a-threaded-handler-for-inte.patch
new file mode 100644
index 0000000..3211a1c
--- /dev/null
+++ b/patches/net-iwlwifi-request-only-a-threaded-handler-for-inte.patch
@@ -0,0 +1,60 @@
+From 71a040bb37b815d4d4a2be8ab2a14b9c41e3fc19 Mon Sep 17 00:00:00 2001
+From: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
+Date: Fri, 4 Oct 2013 11:42:34 +0200
+Subject: [PATCH] net: iwlwifi: request only a threaded handler for
+ interrupts
+
+On RT the trans_pcie->irq_lock lock is converted into a sleeping lock
+and can't be used in primary irq handler. The lock is used in mutliple
+places which means turning it into a raw lock could increase the
+latency of the system.
+For now both handlers are moved into the thread.
+
+Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
+---
+ drivers/net/wireless/iwlwifi/pcie/trans.c | 19 +++++++++++++++++++
+ 1 file changed, 19 insertions(+)
+
+diff --git a/drivers/net/wireless/iwlwifi/pcie/trans.c b/drivers/net/wireless/iwlwifi/pcie/trans.c
+index aeb70e1..42567fc 100644
+--- a/drivers/net/wireless/iwlwifi/pcie/trans.c
++++ b/drivers/net/wireless/iwlwifi/pcie/trans.c
+@@ -1456,6 +1456,20 @@ static const struct iwl_trans_ops trans_ops_pcie = {
+ .set_bits_mask = iwl_trans_pcie_set_bits_mask,
+ };
+
++#ifdef CONFIG_PREEMPT_RT_BASE
++static irqreturn_t iwl_rt_irq_handler(int irq, void *dev_id)
++{
++ irqreturn_t ret;
++
++ local_bh_disable();
++ ret = iwl_pcie_isr_ict(irq, dev_id);
++ local_bh_enable();
++ if (ret == IRQ_WAKE_THREAD)
++ ret = iwl_pcie_irq_handler(irq, dev_id);
++ return ret;
++}
++#endif
++
+ struct iwl_trans *iwl_trans_pcie_alloc(struct pci_dev *pdev,
+ const struct pci_device_id *ent,
+ const struct iwl_cfg *cfg)
+@@ -1566,9 +1580,14 @@ struct iwl_trans *iwl_trans_pcie_alloc(struct pci_dev *pdev,
+ if (iwl_pcie_alloc_ict(trans))
+ goto out_free_cmd_pool;
+
++#ifdef CONFIG_PREEMPT_RT_BASE
++ if (request_threaded_irq(pdev->irq, NULL, iwl_rt_irq_handler,
++ IRQF_SHARED | IRQF_ONESHOT, DRV_NAME, trans)) {
++#else
+ if (request_threaded_irq(pdev->irq, iwl_pcie_isr_ict,
+ iwl_pcie_irq_handler,
+ IRQF_SHARED, DRV_NAME, trans)) {
++#endif
+ IWL_ERR(trans, "Error allocating IRQ %d\n", pdev->irq);
+ goto out_free_ict;
+ }
+--
+1.8.4.rc3
+
diff --git a/patches/series b/patches/series
index 317eeea..b480970 100644
--- a/patches/series
+++ b/patches/series
@@ -6,6 +6,7 @@
# UPSTREAM changes queued
############################################################
hpsa-fix-warning-with-smp_processor_id-in-preemptibl.patch
+sparc64-Remove-RWSEM-export-leftovers.patch
############################################################
# UPSTREAM FIXES, patches pending
@@ -31,6 +32,7 @@ hpsa-fix-warning-with-smp_processor_id-in-preemptibl.patch
# SPARC part of erly printk consolidation
early-printk-consolidate.patch
+sparc-provide-EARLY_PRINTK-for-SPARC.patch
# SRCU
0002-kernel-SRCU-provide-a-static-initializer.patch
@@ -50,6 +52,7 @@ arm-allow-irq-threading.patch
############################################################
ppc-mark-low-level-handlers-no-thread.patch
powerpc-52xx-provide-a-default-in-mpc52xx_irqhost_ma.patch
+Kind-of-revert-powerpc-52xx-provide-a-default-in-mpc.patch
############################################################
# Submitted on LKML
@@ -183,6 +186,7 @@ hwlatdetect.patch
hwlat-detector-Update-hwlat_detector-to-add-outer-lo.patch
hwlat-detector-Use-trace_clock_local-if-available.patch
hwlat-detector-Use-thread-instead-of-stop-machine.patch
+hwlat-detector-Don-t-ignore-threshold-module-paramet.patch
##################################################
# REAL RT STUFF starts here
@@ -253,6 +257,7 @@ cpu-rt-variants.patch
# MM SLAB
mm-slab-wrap-functions.patch
mm-slab-more-lock-breaks.patch
+mm-slab-Don-t-free-locks-twice-in-cpuup_canceled.patch
# MM PAGE_ALLOC
mm-page_alloc-rt-friendly-per-cpu-pages.patch
@@ -289,6 +294,7 @@ mm-disable-slab-on-rt.patch
# MM
mm-page-alloc-use-local-lock-on-target-cpu.patch
+mm-memcontrol-Don-t-call-schedule_work_on-in-preempt.patch
# RADIX TREE
radix-tree-rt-aware.patch
@@ -323,6 +329,7 @@ hrtimers-prepare-full-preemption.patch
hrtimer-fixup-hrtimer-callback-changes-for-preempt-r.patch
timer-fd-avoid-live-lock.patch
hrtimer-raise-softirq-if-hrtimer-irq-stalled.patch
+hrtimer-Move-schedule_work-call-to-helper-thread.patch
# POSIX-CPU-TIMERS
posix-timers-thread-posix-cpu-timers-on-rt.patch
@@ -604,6 +611,7 @@ powerpc-preempt-lazy-support.patch
# DRIVERS
i2c-omap-drop-the-lock-hard-irq-context.patch
mmci-remove-bogus-irq-save.patch
+#net-iwlwifi-request-only-a-threaded-handler-for-inte.patch
# I915
i915_compile_fix.patch
diff --git a/patches/sparc-provide-EARLY_PRINTK-for-SPARC.patch b/patches/sparc-provide-EARLY_PRINTK-for-SPARC.patch
new file mode 100644
index 0000000..afb457f
--- /dev/null
+++ b/patches/sparc-provide-EARLY_PRINTK-for-SPARC.patch
@@ -0,0 +1,40 @@
+From 11fab744e7819cb63788ceb271074524c214a2c4 Mon Sep 17 00:00:00 2001
+From: Kirill Tkhai <tkhai@yandex.ru>
+Date: Fri, 30 Aug 2013 21:16:08 +0400
+Subject: [PATCH] sparc: provide EARLY_PRINTK for SPARC
+
+sparc does not have CONFIG_EARLY_PRINTK option.
+
+So early-printk-consolidate.patch breaks compilation:
+
+arch/sparc/built-in.o: In function `setup_arch':
+(.init.text+0x15e4): undefined reference to `early_console'
+arch/sparc/built-in.o: In function `setup_arch':
+(.init.text+0x15ec): undefined reference to `early_console'
+
+The below addition fixes that.
+
+Signed-off-by: Kirill Tkhai <tkhai@yandex.ru>
+Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
+---
+ arch/sparc/Kconfig | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/arch/sparc/Kconfig b/arch/sparc/Kconfig
+index 9ac9f16..6787bd3 100644
+--- a/arch/sparc/Kconfig
++++ b/arch/sparc/Kconfig
+@@ -521,6 +521,10 @@ menu "Executable file formats"
+
+ source "fs/Kconfig.binfmt"
+
++config EARLY_PRINTK
++ bool
++ default y
++
+ config COMPAT
+ bool
+ depends on SPARC64
+--
+1.8.4.rc3
+
diff --git a/patches/sparc64-Remove-RWSEM-export-leftovers.patch b/patches/sparc64-Remove-RWSEM-export-leftovers.patch
new file mode 100644
index 0000000..dfdb8d9
--- /dev/null
+++ b/patches/sparc64-Remove-RWSEM-export-leftovers.patch
@@ -0,0 +1,49 @@
+From 94b963b06296865c2293bf98336b9982c0db4edb Mon Sep 17 00:00:00 2001
+From: Kirill Tkhai <tkhai@yandex.ru>
+Date: Mon, 12 Aug 2013 16:02:24 +0400
+Subject: [PATCH] sparc64: Remove RWSEM export leftovers
+
+The functions
+
+ __down_read
+ __down_read_trylock
+ __down_write
+ __down_write_trylock
+ __up_read
+ __up_write
+ __downgrade_write
+
+are implemented inline, so remove corresponding EXPORT_SYMBOLs
+(They lead to compile errors on RT kernel).
+
+Signed-off-by: Kirill Tkhai <tkhai@yandex.ru>
+CC: David Miller <davem@davemloft.net>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
+---
+ arch/sparc/lib/ksyms.c | 9 ---------
+ 1 file changed, 9 deletions(-)
+
+diff --git a/arch/sparc/lib/ksyms.c b/arch/sparc/lib/ksyms.c
+index 0c4e35e..323335b 100644
+--- a/arch/sparc/lib/ksyms.c
++++ b/arch/sparc/lib/ksyms.c
+@@ -98,15 +98,6 @@ EXPORT_SYMBOL(___copy_from_user);
+ EXPORT_SYMBOL(___copy_in_user);
+ EXPORT_SYMBOL(__clear_user);
+
+-/* RW semaphores */
+-EXPORT_SYMBOL(__down_read);
+-EXPORT_SYMBOL(__down_read_trylock);
+-EXPORT_SYMBOL(__down_write);
+-EXPORT_SYMBOL(__down_write_trylock);
+-EXPORT_SYMBOL(__up_read);
+-EXPORT_SYMBOL(__up_write);
+-EXPORT_SYMBOL(__downgrade_write);
+-
+ /* Atomic counter implementation. */
+ EXPORT_SYMBOL(atomic_add);
+ EXPORT_SYMBOL(atomic_add_ret);
+--
+1.8.4.rc3
+