diff --git a/debian/patches/features/all/rt/patch-3.0.4-rt14.patch b/debian/patches/features/all/rt/patch-3.0.4-rt14.patch index bd627c47a..9180b29eb 100644 --- a/debian/patches/features/all/rt/patch-3.0.4-rt14.patch +++ b/debian/patches/features/all/rt/patch-3.0.4-rt14.patch @@ -1,23 +1,7 @@ -Index: linux-2.6/arch/arm/plat-mxc/include/mach/iomux-v3.h -=================================================================== ---- linux-2.6.orig/arch/arm/plat-mxc/include/mach/iomux-v3.h -+++ linux-2.6/arch/arm/plat-mxc/include/mach/iomux-v3.h -@@ -66,7 +66,6 @@ typedef u64 iomux_v3_cfg_t; - #define MUX_MODE_MASK ((iomux_v3_cfg_t)0x1f << MUX_MODE_SHIFT) - #define MUX_PAD_CTRL_SHIFT 41 - #define MUX_PAD_CTRL_MASK ((iomux_v3_cfg_t)0x1ffff << MUX_PAD_CTRL_SHIFT) --#define NO_PAD_CTRL ((iomux_v3_cfg_t)1 << (MUX_PAD_CTRL_SHIFT + 16)) - #define MUX_SEL_INPUT_SHIFT 58 - #define MUX_SEL_INPUT_MASK ((iomux_v3_cfg_t)0xf << MUX_SEL_INPUT_SHIFT) - -@@ -85,6 +84,7 @@ typedef u64 iomux_v3_cfg_t; - * Use to set PAD control - */ - -+#define NO_PAD_CTRL (1 << 16) - #define PAD_CTL_DVS (1 << 13) - #define PAD_CTL_HYS (1 << 8) - +[bwh: Dropped fixes to arch/arm/plat-mxc/include/mach/iomux-v3.h, +drivers/pci/dmar.c, drivers/block/floppy.c, kernel/sched.c that were +also included in 3.0.5.] + Index: linux-2.6/mm/memory.c =================================================================== --- linux-2.6.orig/mm/memory.c @@ -1168,15 +1152,6 @@ Index: linux-2.6/drivers/pci/dmar.c return IRQ_HANDLED; } -@@ -1388,7 +1388,7 @@ int dmar_set_interrupt(struct intel_iomm - return ret; - } - -- ret = request_irq(irq, dmar_fault, 0, iommu->name, iommu); -+ ret = request_irq(irq, dmar_fault, IRQF_NO_THREAD, iommu->name, iommu); - if (ret) - printk(KERN_ERR "IOMMU: can't request irq\n"); - return ret; Index: linux-2.6/kernel/trace/ftrace.c =================================================================== --- linux-2.6.orig/kernel/trace/ftrace.c @@ -1278,46 +1253,6 @@ Index: linux-2.6/kernel/trace/ftrace.c mutex_unlock(&ftrace_lock); } free_ftrace_hash(iter->hash); -Index: linux-2.6/drivers/block/floppy.c -=================================================================== ---- linux-2.6.orig/drivers/block/floppy.c -+++ linux-2.6/drivers/block/floppy.c -@@ -4250,7 +4250,7 @@ static int __init floppy_init(void) - use_virtual_dma = can_use_virtual_dma & 1; - fdc_state[0].address = FDC1; - if (fdc_state[0].address == -1) { -- del_timer(&fd_timeout); -+ del_timer_sync(&fd_timeout); - err = -ENODEV; - goto out_unreg_region; - } -@@ -4261,7 +4261,7 @@ static int __init floppy_init(void) - fdc = 0; /* reset fdc in case of unexpected interrupt */ - err = floppy_grab_irq_and_dma(); - if (err) { -- del_timer(&fd_timeout); -+ del_timer_sync(&fd_timeout); - err = -EBUSY; - goto out_unreg_region; - } -@@ -4318,7 +4318,7 @@ static int __init floppy_init(void) - user_reset_fdc(-1, FD_RESET_ALWAYS, false); - } - fdc = 0; -- del_timer(&fd_timeout); -+ del_timer_sync(&fd_timeout); - current_drive = 0; - initialized = true; - if (have_no_fdc) { -@@ -4368,7 +4368,7 @@ out_unreg_blkdev: - unregister_blkdev(FLOPPY_MAJOR, "fd"); - out_put_disk: - while (dr--) { -- del_timer(&motor_off_timer[dr]); -+ del_timer_sync(&motor_off_timer[dr]); - if (disks[dr]->queue) - blk_cleanup_queue(disks[dr]->queue); - put_disk(disks[dr]); Index: linux-2.6/drivers/gpu/drm/drm_irq.c =================================================================== --- linux-2.6.orig/drivers/gpu/drm/drm_irq.c @@ -1589,19 +1524,7 @@ Index: linux-2.6/kernel/sched.c if (unlikely(prev_state == TASK_DEAD)) { /* * Remove function-return probe instances associated with this -@@ -4242,9 +4243,9 @@ pick_next_task(struct rq *rq) - } - - /* -- * schedule() is the main scheduler function. -+ * __schedule() is the main scheduler function. - */ --asmlinkage void __sched schedule(void) -+static void __sched __schedule(void) - { - struct task_struct *prev, *next; - unsigned long *switch_count; -@@ -4272,29 +4273,6 @@ need_resched: +@@ -4272,19 +4273,6 @@ need_resched: } else { deactivate_task(rq, prev, DEQUEUE_SLEEP); prev->on_rq = 0; @@ -1617,21 +1540,11 @@ Index: linux-2.6/kernel/sched.c - to_wakeup = wq_worker_sleeping(prev, cpu); - if (to_wakeup) - try_to_wake_up_local(to_wakeup); -- } -- -- /* -- * If we are going to sleep and we have plugged IO -- * queued, make sure to submit it to avoid deadlocks. -- */ -- if (blk_needs_flush_plug(prev)) { -- raw_spin_unlock(&rq->lock); -- blk_schedule_flush_plug(prev); -- raw_spin_lock(&rq->lock); - } } switch_count = &prev->nvcsw; } -@@ -4328,12 +4306,62 @@ need_resched: +@@ -4328,32 +4306,62 @@ need_resched: post_schedule(rq); @@ -1640,11 +1553,12 @@ Index: linux-2.6/kernel/sched.c if (need_resched()) goto need_resched; } -+ -+static inline void sched_submit_work(struct task_struct *tsk) -+{ + + static inline void sched_submit_work(struct task_struct *tsk) + { +- if (!tsk->state) + if (!tsk->state || tsk_is_pi_blocked(tsk)) -+ return; + return; + + /* + * If a worker went to sleep, notify and ask workqueue whether @@ -1653,14 +1567,14 @@ Index: linux-2.6/kernel/sched.c + if (tsk->flags & PF_WQ_WORKER) + wq_worker_sleeping(tsk); + -+ /* -+ * If we are going to sleep and we have plugged IO queued, -+ * make sure to submit it to avoid deadlocks. -+ */ -+ if (blk_needs_flush_plug(tsk)) -+ blk_schedule_flush_plug(tsk); -+} -+ + /* + * If we are going to sleep and we have plugged IO queued, + * make sure to submit it to avoid deadlocks. + */ + if (blk_needs_flush_plug(tsk)) + blk_schedule_flush_plug(tsk); + } + +static inline void sched_update_worker(struct task_struct *tsk) +{ + if (tsk_is_pi_blocked(tsk)) @@ -1670,14 +1584,14 @@ Index: linux-2.6/kernel/sched.c + wq_worker_running(tsk); +} + -+asmlinkage void schedule(void) -+{ -+ struct task_struct *tsk = current; -+ -+ sched_submit_work(tsk); -+ __schedule(); + asmlinkage void schedule(void) + { + struct task_struct *tsk = current; + + sched_submit_work(tsk); + __schedule(); + sched_update_worker(tsk); -+} + } EXPORT_SYMBOL(schedule); +/** @@ -1695,24 +1609,6 @@ Index: linux-2.6/kernel/sched.c #ifdef CONFIG_MUTEX_SPIN_ON_OWNER static inline bool owner_running(struct mutex *lock, struct task_struct *owner) -@@ -4405,7 +4433,7 @@ asmlinkage void __sched notrace preempt_ - - do { - add_preempt_count_notrace(PREEMPT_ACTIVE); -- schedule(); -+ __schedule(); - sub_preempt_count_notrace(PREEMPT_ACTIVE); - - /* -@@ -4433,7 +4461,7 @@ asmlinkage void __sched preempt_schedule - do { - add_preempt_count(PREEMPT_ACTIVE); - local_irq_enable(); -- schedule(); -+ __schedule(); - local_irq_disable(); - sub_preempt_count(PREEMPT_ACTIVE); - @@ -4828,9 +4856,8 @@ long __sched sleep_on_timeout(wait_queue EXPORT_SYMBOL(sleep_on_timeout); @@ -1798,7 +1694,7 @@ Index: linux-2.6/kernel/sched.c static void __cond_resched(void) { - add_preempt_count(PREEMPT_ACTIVE); -- schedule(); +- __schedule(); - sub_preempt_count(PREEMPT_ACTIVE); + do { + add_preempt_count(PREEMPT_ACTIVE);