diff options
author | Paul Gortmaker <paul.gortmaker@windriver.com> | 2013-10-08 09:46:46 -0400 |
---|---|---|
committer | Paul Gortmaker <paul.gortmaker@windriver.com> | 2013-10-08 09:46:46 -0400 |
commit | 5dec24f3287376952e29b6657e1ef4bce4847dc2 (patch) | |
tree | 26448ed08a2053543678cf9d08428e66957b34bb | |
parent | 558ad89f715e7f7af0dda692425e7db14b1167fe (diff) | |
download | 3.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>
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 + |