Module: xenomai-3 Branch: next Commit: f22437df109039a45f86f2b3b08ea51b4b75c915 URL: http://git.xenomai.org/?p=xenomai-3.git;a=commit;h=f22437df109039a45f86f2b3b08ea51b4b75c915
Author: Philippe Gerum <r...@xenomai.org> Date: Fri Mar 20 09:26:55 2015 +0100 cobalt/blackfin: upgrade I-pipe support --- ...6.patch => ipipe-core-3.14.33-blackfin-6.patch} | 29 ++++--- ...-2.patch => ipipe-core-3.16.7-blackfin-3.patch} | 87 +++++++++++++------- 2 files changed, 75 insertions(+), 41 deletions(-) diff --git a/kernel/cobalt/arch/blackfin/patches/ipipe-core-3.14.28-blackfin-6.patch b/kernel/cobalt/arch/blackfin/patches/ipipe-core-3.14.33-blackfin-6.patch similarity index 99% rename from kernel/cobalt/arch/blackfin/patches/ipipe-core-3.14.28-blackfin-6.patch rename to kernel/cobalt/arch/blackfin/patches/ipipe-core-3.14.33-blackfin-6.patch index 3595c19..e54fb5b 100644 --- a/kernel/cobalt/arch/blackfin/patches/ipipe-core-3.14.28-blackfin-6.patch +++ b/kernel/cobalt/arch/blackfin/patches/ipipe-core-3.14.33-blackfin-6.patch @@ -10080,7 +10080,7 @@ index 452d6f2..7f20d7c 100644 } diff --git a/kernel/irq/internals.h b/kernel/irq/internals.h -index 001fa5b..4dad5c7 100644 +index 8a160e8..8a62f8b 100644 --- a/kernel/irq/internals.h +++ b/kernel/irq/internals.h @@ -53,6 +53,9 @@ enum { @@ -10094,7 +10094,7 @@ index 001fa5b..4dad5c7 100644 #include "debug.h" diff --git a/kernel/irq/irqdesc.c b/kernel/irq/irqdesc.c -index 8ab8e93..5261b2a 100644 +index 07d4551..dc0af3d 100644 --- a/kernel/irq/irqdesc.c +++ b/kernel/irq/irqdesc.c @@ -91,6 +91,9 @@ static void desc_set_defaults(unsigned int irq, struct irq_desc *desc, int node, @@ -10107,7 +10107,7 @@ index 8ab8e93..5261b2a 100644 } int nr_irqs = NR_IRQS; -@@ -270,11 +273,13 @@ int __init early_irq_init(void) +@@ -286,11 +289,13 @@ int __init early_irq_init(void) return arch_early_irq_init(); } @@ -10947,7 +10947,7 @@ index 0de9d7f..7615cff 100644 } diff --git a/kernel/time/tick-sched.c b/kernel/time/tick-sched.c -index 6558b7a..f0ddb74 100644 +index 8c08a6f..a21ec0f 100644 --- a/kernel/time/tick-sched.c +++ b/kernel/time/tick-sched.c @@ -148,7 +148,7 @@ static void tick_sched_handle(struct tick_sched *ts, struct pt_regs *regs) @@ -11291,7 +11291,7 @@ index 2aefbee..c3ec43f 100644 } EXPORT_SYMBOL(trace_hardirqs_off_caller); diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug -index a48abea..50cc0312 100644 +index a48abea..0e8ae4a 100644 --- a/lib/Kconfig.debug +++ b/lib/Kconfig.debug @@ -312,6 +312,7 @@ config MAGIC_SYSRQ @@ -11320,6 +11320,15 @@ index a48abea..50cc0312 100644 ---help--- Say Y here if you want to check for overflows of kernel, IRQ and exception stacks (if your archicture uses them). This +@@ -1088,7 +1091,7 @@ menu "RCU Debugging" + + config PROVE_RCU + bool "RCU debugging: prove RCU correctness" +- depends on PROVE_LOCKING ++ depends on PROVE_LOCKING && !IPIPE + default n + help + This feature enables lockdep extensions that check for correct diff --git a/lib/atomic64.c b/lib/atomic64.c index 08a4f06..15810f4 100644 --- a/lib/atomic64.c @@ -11511,7 +11520,7 @@ index 0862816..aacbf2df 100644 help Transparent Hugepages allows the kernel to use huge pages and diff --git a/mm/memory.c b/mm/memory.c -index 48d7365..e23fa86 100644 +index 7f30bea..100a209 100644 --- a/mm/memory.c +++ b/mm/memory.c @@ -788,6 +788,34 @@ out: @@ -11582,7 +11591,7 @@ index 48d7365..e23fa86 100644 ptep_set_wrprotect(src_mm, addr, src_pte); pte = pte_wrprotect(pte); } -@@ -888,13 +931,27 @@ int copy_pte_range(struct mm_struct *dst_mm, struct mm_struct *src_mm, +@@ -888,13 +931,27 @@ static int copy_pte_range(struct mm_struct *dst_mm, struct mm_struct *src_mm, int progress = 0; int rss[NR_MM_COUNTERS]; swp_entry_t entry = (swp_entry_t){0}; @@ -11750,7 +11759,7 @@ index b1eb536..ca23f83 100644 +} +#endif diff --git a/mm/mmap.c b/mm/mmap.c -index b91ac80..47ee8c0 100644 +index 085bcd8..ef56280 100644 --- a/mm/mmap.c +++ b/mm/mmap.c @@ -45,6 +45,10 @@ @@ -11764,7 +11773,7 @@ index b91ac80..47ee8c0 100644 #ifndef arch_mmap_check #define arch_mmap_check(addr, len, flags) (0) #endif -@@ -2613,7 +2617,7 @@ static unsigned long do_brk(unsigned long addr, unsigned long len) +@@ -2616,7 +2620,7 @@ static unsigned long do_brk(unsigned long addr, unsigned long len) flags = VM_DATA_DEFAULT_FLAGS | VM_ACCOUNT | mm->def_flags; @@ -11815,7 +11824,7 @@ index 769a67a..8c40894 100644 return pages; diff --git a/mm/vmalloc.c b/mm/vmalloc.c -index 0fdf968..4a96f40 100644 +index aa3891e..5c756384 100644 --- a/mm/vmalloc.c +++ b/mm/vmalloc.c @@ -191,6 +191,8 @@ static int vmap_page_range_noflush(unsigned long start, unsigned long end, diff --git a/kernel/cobalt/arch/blackfin/patches/ipipe-core-3.16-blackfin-2.patch b/kernel/cobalt/arch/blackfin/patches/ipipe-core-3.16.7-blackfin-3.patch similarity index 99% rename from kernel/cobalt/arch/blackfin/patches/ipipe-core-3.16-blackfin-2.patch rename to kernel/cobalt/arch/blackfin/patches/ipipe-core-3.16.7-blackfin-3.patch index c502f05..7dfb87e 100644 --- a/kernel/cobalt/arch/blackfin/patches/ipipe-core-3.16-blackfin-2.patch +++ b/kernel/cobalt/arch/blackfin/patches/ipipe-core-3.16.7-blackfin-3.patch @@ -12,7 +12,7 @@ index f81e7b9..8af0949 100644 comment "Processor and Board Settings" diff --git a/arch/blackfin/include/asm/ipipe.h b/arch/blackfin/include/asm/ipipe.h -index 17b5e92..7e99af8 100644 +index 17b5e92..cb14698 100644 --- a/arch/blackfin/include/asm/ipipe.h +++ b/arch/blackfin/include/asm/ipipe.h @@ -28,7 +28,7 @@ @@ -32,7 +32,7 @@ index 17b5e92..7e99af8 100644 -#define IPIPE_MAJOR_NUMBER 1 -#define IPIPE_MINOR_NUMBER 16 -#define IPIPE_PATCH_NUMBER 1 -+#define IPIPE_CORE_RELEASE 2 ++#define IPIPE_CORE_RELEASE 3 #ifdef CONFIG_SMP #error "I-pipe/blackfin: SMP not implemented" @@ -2147,7 +2147,7 @@ index a16b497..fa578e8 100644 /* diff --git a/include/linux/ftrace.h b/include/linux/ftrace.h -index 404a686..605479f 100644 +index 721de25..c4a10c8 100644 --- a/include/linux/ftrace.h +++ b/include/linux/ftrace.h @@ -101,6 +101,7 @@ enum { @@ -2157,7 +2157,7 @@ index 404a686..605479f 100644 + FTRACE_OPS_FL_IPIPE_EXCLUSIVE = 1 << 9, }; - /* + #ifdef CONFIG_DYNAMIC_FTRACE diff --git a/include/linux/hardirq.h b/include/linux/hardirq.h index cba442e..b513a46 100644 --- a/include/linux/hardirq.h @@ -4604,7 +4604,7 @@ index 5b9b84b..6c8bb4d 100644 static inline void __raw_read_lock(rwlock_t *lock) { diff --git a/include/linux/sched.h b/include/linux/sched.h -index 0376b05..82b6b3e 100644 +index c5cc872..6cdf1f7 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h @@ -26,6 +26,7 @@ struct sched_param { @@ -5014,7 +5014,7 @@ index 36fb3b5..3b5e2dc6 100644 * and other sensitive information are never written to disk. */ diff --git a/init/Kconfig b/init/Kconfig -index 9d76b99..0393673 100644 +index 35685a4..b533ab1 100644 --- a/init/Kconfig +++ b/init/Kconfig @@ -69,6 +69,7 @@ config COMPILE_TEST @@ -5245,7 +5245,7 @@ index e5c4668..5e6e8bd 100644 if (unlikely(in_atomic())) printk(KERN_INFO "note: %s[%d] exited with preempt_count %d\n", diff --git a/kernel/fork.c b/kernel/fork.c -index 6a13c46..7959178 100644 +index b41958b..46d23fe 100644 --- a/kernel/fork.c +++ b/kernel/fork.c @@ -317,6 +317,8 @@ static struct task_struct *dup_task_struct(struct task_struct *orig) @@ -10224,7 +10224,7 @@ index 4b082b5..67447fc 100644 * The __lock_function inlines are taken from * include/linux/spinlock_api_smp.h diff --git a/kernel/module.c b/kernel/module.c -index 81e727c..49ef05f 100644 +index 673aeb0..a607c5d 100644 --- a/kernel/module.c +++ b/kernel/module.c @@ -879,7 +879,7 @@ static inline void print_unload_info(struct seq_file *m, struct module *mod) @@ -10364,7 +10364,7 @@ index fcc2611..92c110f 100644 if (pm_wakeup_pending()) { error = -EAGAIN; diff --git a/kernel/printk/printk.c b/kernel/printk/printk.c -index 13e839d..4b678cd 100644 +index 971285d..39e1ddb 100644 --- a/kernel/printk/printk.c +++ b/kernel/printk/printk.c @@ -1756,6 +1756,43 @@ asmlinkage int printk_emit(int facility, int level, @@ -10481,7 +10481,7 @@ index 13e839d..4b678cd 100644 #else /* CONFIG_PRINTK */ diff --git a/kernel/sched/core.c b/kernel/sched/core.c -index bc1638b..c44802b 100644 +index 0acf96b..1e5c105 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -1586,7 +1586,9 @@ void scheduler_ipi(void) @@ -10649,7 +10649,7 @@ index bc1638b..c44802b 100644 if (running) p->sched_class->set_curr_task(rq); -@@ -4622,10 +4649,13 @@ int set_cpus_allowed_ptr(struct task_struct *p, const struct cpumask *new_mask) +@@ -4623,10 +4650,13 @@ int set_cpus_allowed_ptr(struct task_struct *p, const struct cpumask *new_mask) do_set_cpus_allowed(p, new_mask); /* Can the task run on the task's current CPU? If so, we're done */ @@ -10664,7 +10664,7 @@ index bc1638b..c44802b 100644 if (p->on_rq) { struct migration_arg arg = { p, dest_cpu }; /* Need help from migration thread: drop lock and wait. */ -@@ -8094,3 +8124,42 @@ void dump_cpu_task(int cpu) +@@ -8095,3 +8125,42 @@ void dump_cpu_task(int cpu) pr_info("Task dump for CPU %d:\n", cpu); sched_show_task(cpu_curr(cpu)); } @@ -10991,7 +10991,7 @@ index d440935..7958b28 100644 help This option will modify all the calls to function tracing diff --git a/kernel/trace/ftrace.c b/kernel/trace/ftrace.c -index ac9d1da..d0b0bce 100644 +index ca167e6..ca49007 100644 --- a/kernel/trace/ftrace.c +++ b/kernel/trace/ftrace.c @@ -32,6 +32,7 @@ @@ -11002,7 +11002,7 @@ index ac9d1da..d0b0bce 100644 #include <trace/events/sched.h> -@@ -244,8 +245,17 @@ static inline void update_function_graph_func(void) { } +@@ -252,8 +253,17 @@ static inline void update_function_graph_func(void) { } static void update_ftrace_function(void) { @@ -11020,7 +11020,7 @@ index ac9d1da..d0b0bce 100644 /* * If we are at the end of the list and this ops is * recursion safe and not dynamic and the arch supports passing ops, -@@ -2025,6 +2035,9 @@ void __weak arch_ftrace_update_code(int command) +@@ -2069,6 +2079,9 @@ void __weak arch_ftrace_update_code(int command) static void ftrace_run_update_code(int command) { @@ -11030,7 +11030,7 @@ index ac9d1da..d0b0bce 100644 int ret; ret = ftrace_arch_code_modify_prepare(); -@@ -2043,7 +2056,13 @@ static void ftrace_run_update_code(int command) +@@ -2087,7 +2100,13 @@ static void ftrace_run_update_code(int command) * is safe. The stop_machine() is the safest, but also * produces the most overhead. */ @@ -11044,7 +11044,7 @@ index ac9d1da..d0b0bce 100644 function_trace_stop--; -@@ -4196,10 +4215,10 @@ static int ftrace_process_locs(struct module *mod, +@@ -4240,10 +4259,10 @@ static int ftrace_process_locs(struct module *mod, * reason to cause large interrupt latencies while we do it. */ if (!mod) @@ -11057,7 +11057,7 @@ index ac9d1da..d0b0bce 100644 ret = 0; out: mutex_unlock(&ftrace_lock); -@@ -4298,9 +4317,11 @@ void __init ftrace_init(void) +@@ -4342,9 +4361,11 @@ void __init ftrace_init(void) unsigned long count, flags; int ret; @@ -11072,10 +11072,10 @@ index ac9d1da..d0b0bce 100644 goto failed; diff --git a/kernel/trace/ring_buffer.c b/kernel/trace/ring_buffer.c -index ff70271..c7ded52 100644 +index 5186298..bc3c286 100644 --- a/kernel/trace/ring_buffer.c +++ b/kernel/trace/ring_buffer.c -@@ -2640,7 +2640,8 @@ static DEFINE_PER_CPU(unsigned int, current_context); +@@ -2654,7 +2654,8 @@ static DEFINE_PER_CPU(unsigned int, current_context); static __always_inline int trace_recursive_lock(void) { @@ -11085,7 +11085,7 @@ index ff70271..c7ded52 100644 int bit; if (in_interrupt()) { -@@ -2653,22 +2654,35 @@ static __always_inline int trace_recursive_lock(void) +@@ -2667,22 +2668,35 @@ static __always_inline int trace_recursive_lock(void) } else bit = 3; @@ -11463,10 +11463,10 @@ index 3e9977a..be95cbe 100644 help Transparent Hugepages allows the kernel to use huge pages and diff --git a/mm/memory.c b/mm/memory.c -index 8b44f76..a2880d1 100644 +index 533023d..5b2c5d4 100644 --- a/mm/memory.c +++ b/mm/memory.c -@@ -794,6 +794,34 @@ out: +@@ -793,6 +793,34 @@ out: return pfn_to_page(pfn); } @@ -11501,7 +11501,7 @@ index 8b44f76..a2880d1 100644 /* * copy one vm_area from one task to the other. Assumes the page tables * already present in the new task to be cleared in the whole range -@@ -802,8 +830,8 @@ out: +@@ -801,8 +829,8 @@ out: static inline unsigned long copy_one_pte(struct mm_struct *dst_mm, struct mm_struct *src_mm, @@ -11512,7 +11512,7 @@ index 8b44f76..a2880d1 100644 { unsigned long vm_flags = vma->vm_flags; pte_t pte = *src_pte; -@@ -857,6 +885,21 @@ copy_one_pte(struct mm_struct *dst_mm, struct mm_struct *src_mm, +@@ -856,6 +884,21 @@ copy_one_pte(struct mm_struct *dst_mm, struct mm_struct *src_mm, * in the parent and the child */ if (is_cow_mapping(vm_flags)) { @@ -11534,7 +11534,7 @@ index 8b44f76..a2880d1 100644 ptep_set_wrprotect(src_mm, addr, src_pte); pte = pte_wrprotect(pte); } -@@ -894,13 +937,27 @@ int copy_pte_range(struct mm_struct *dst_mm, struct mm_struct *src_mm, +@@ -893,13 +936,27 @@ int copy_pte_range(struct mm_struct *dst_mm, struct mm_struct *src_mm, int progress = 0; int rss[NR_MM_COUNTERS]; swp_entry_t entry = (swp_entry_t){0}; @@ -11564,7 +11564,7 @@ index 8b44f76..a2880d1 100644 src_pte = pte_offset_map(src_pmd, addr); src_ptl = pte_lockptr(src_mm, src_pmd); spin_lock_nested(src_ptl, SINGLE_DEPTH_NESTING); -@@ -923,8 +980,25 @@ again: +@@ -922,8 +979,25 @@ again: progress++; continue; } @@ -11591,7 +11591,7 @@ index 8b44f76..a2880d1 100644 if (entry.val) break; progress += 8; -@@ -1959,34 +2033,6 @@ static inline int pte_unmap_same(struct mm_struct *mm, pmd_t *pmd, +@@ -1958,34 +2032,6 @@ static inline int pte_unmap_same(struct mm_struct *mm, pmd_t *pmd, return same; } @@ -11626,7 +11626,7 @@ index 8b44f76..a2880d1 100644 /* * Notify the address space that the page is about to become writable so that * it can prohibit this or wait for the page to get into an appropriate state. -@@ -3804,6 +3850,41 @@ void copy_user_huge_page(struct page *dst, struct page *src, +@@ -3803,6 +3849,41 @@ void copy_user_huge_page(struct page *dst, struct page *src, } #endif /* CONFIG_TRANSPARENT_HUGEPAGE || CONFIG_HUGETLBFS */ @@ -11750,10 +11750,35 @@ index f802c2d..b320432 100644 #ifdef finish_arch_post_lock_switch finish_arch_post_lock_switch(); diff --git a/mm/mprotect.c b/mm/mprotect.c -index c43d557..a9bb4c2 100644 +index c43d557..54e21a6 100644 --- a/mm/mprotect.c +++ b/mm/mprotect.c -@@ -252,6 +252,12 @@ unsigned long change_protection(struct vm_area_struct *vma, unsigned long start, +@@ -71,7 +71,7 @@ static unsigned long change_pte_range(struct vm_area_struct *vma, pmd_t *pmd, + struct mm_struct *mm = vma->vm_mm; + pte_t *pte, oldpte; + spinlock_t *ptl; +- unsigned long pages = 0; ++ unsigned long pages = 0, flags; + + pte = lock_pte_protection(vma, pmd, addr, prot_numa, &ptl); + if (!pte) +@@ -85,6 +85,7 @@ static unsigned long change_pte_range(struct vm_area_struct *vma, pmd_t *pmd, + bool updated = false; + + if (!prot_numa) { ++ flags = hard_local_irq_save(); + ptent = ptep_modify_prot_start(mm, addr, pte); + if (pte_numa(ptent)) + ptent = pte_mknonnuma(ptent); +@@ -96,6 +97,7 @@ static unsigned long change_pte_range(struct vm_area_struct *vma, pmd_t *pmd, + if (dirty_accountable && pte_dirty(ptent)) + ptent = pte_mkwrite(ptent); + ptep_modify_prot_commit(mm, addr, pte, ptent); ++ hard_local_irq_restore(flags); + updated = true; + } else { + struct page *page; +@@ -252,6 +254,12 @@ unsigned long change_protection(struct vm_area_struct *vma, unsigned long start, pages = hugetlb_change_protection(vma, start, end, newprot); else pages = change_protection_range(vma, start, end, newprot, dirty_accountable, prot_numa); _______________________________________________ Xenomai-git mailing list Xenomai-git@xenomai.org http://www.xenomai.org/mailman/listinfo/xenomai-git