Module: xenomai-2.6 Branch: master Commit: ac6eee6003d95895bc95110e98c03cfda96c9f14 URL: http://git.xenomai.org/?p=xenomai-2.6.git;a=commit;h=ac6eee6003d95895bc95110e98c03cfda96c9f14
Author: Philippe Gerum <r...@xenomai.org> Date: Mon Apr 23 17:02:32 2012 +0200 powerpc: upgrade I-pipe support to 3.1.10-powerpc-2.13-07 --- ...ch => adeos-ipipe-3.1.10-powerpc-2.13-07.patch} | 124 +++++++++++++++----- 1 files changed, 92 insertions(+), 32 deletions(-) diff --git a/ksrc/arch/powerpc/patches/adeos-ipipe-3.1.5-powerpc-2.13-06.patch b/ksrc/arch/powerpc/patches/adeos-ipipe-3.1.10-powerpc-2.13-07.patch similarity index 99% rename from ksrc/arch/powerpc/patches/adeos-ipipe-3.1.5-powerpc-2.13-06.patch rename to ksrc/arch/powerpc/patches/adeos-ipipe-3.1.10-powerpc-2.13-07.patch index eb4e27f..31a667f 100644 --- a/ksrc/arch/powerpc/patches/adeos-ipipe-3.1.5-powerpc-2.13-06.patch +++ b/ksrc/arch/powerpc/patches/adeos-ipipe-3.1.10-powerpc-2.13-07.patch @@ -65,6 +65,16 @@ index 6926b61..361330a 100644 config HIGHMEM bool "High memory support" depends on PPC32 +diff --git a/arch/powerpc/Makefile b/arch/powerpc/Makefile +index 57af16e..90e3387 100644 +--- a/arch/powerpc/Makefile ++++ b/arch/powerpc/Makefile +@@ -264,3 +264,5 @@ checkbin: + + CLEAN_FILES += $(TOUT) + ++ ++drivers-$(CONFIG_XENOMAI) += arch/powerpc/xenomai/ diff --git a/arch/powerpc/boot/Makefile b/arch/powerpc/boot/Makefile index c26200b..29e87da 100644 --- a/arch/powerpc/boot/Makefile @@ -296,7 +306,7 @@ index bb712c9..8885e9b 100644 * or should we not care like we do now ? --BenH. diff --git a/arch/powerpc/include/asm/ipipe.h b/arch/powerpc/include/asm/ipipe.h new file mode 100644 -index 0000000..977028d +index 0000000..43d81fd --- /dev/null +++ b/arch/powerpc/include/asm/ipipe.h @@ -0,0 +1,280 @@ @@ -348,10 +358,10 @@ index 0000000..977028d +#include <asm/paca.h> +#endif + -+#define IPIPE_ARCH_STRING "2.13-06" ++#define IPIPE_ARCH_STRING "2.13-07" +#define IPIPE_MAJOR_NUMBER 2 +#define IPIPE_MINOR_NUMBER 13 -+#define IPIPE_PATCH_NUMBER 6 ++#define IPIPE_PATCH_NUMBER 7 + +#ifdef CONFIG_IPIPE_WANT_PREEMPTIBLE_SWITCH + @@ -1395,7 +1405,7 @@ index 836f231..7407173 100644 _TIF_SECCOMP | _TIF_SYSCALL_TRACEPOINT) diff --git a/arch/powerpc/include/asm/time.h b/arch/powerpc/include/asm/time.h -index fe6f7c2..4ec3018 100644 +index bc3c745..7a52ec6 100644 --- a/arch/powerpc/include/asm/time.h +++ b/arch/powerpc/include/asm/time.h @@ -28,6 +28,7 @@ @@ -2232,7 +2242,7 @@ index f8e971b..0757b6f 100644 /* Alignment Interrupt */ ALIGNMENT_EXCEPTION diff --git a/arch/powerpc/kernel/head_64.S b/arch/powerpc/kernel/head_64.S -index 3564c49..d235b88 100644 +index 3564c49..d235b88a 100644 --- a/arch/powerpc/kernel/head_64.S +++ b/arch/powerpc/kernel/head_64.S @@ -611,14 +611,20 @@ __secondary_start: @@ -2448,10 +2458,10 @@ index ba31954..d0a9b16 100644 sync diff --git a/arch/powerpc/kernel/ipipe.c b/arch/powerpc/kernel/ipipe.c new file mode 100644 -index 0000000..7252c78 +index 0000000..8c5710c --- /dev/null +++ b/arch/powerpc/kernel/ipipe.c -@@ -0,0 +1,710 @@ +@@ -0,0 +1,706 @@ +/* -*- linux-c -*- + * linux/arch/powerpc/kernel/ipipe.c + * @@ -2535,10 +2545,6 @@ index 0000000..7252c78 +void __ipipe_register_ipi(unsigned int irq) +{ + __ipipe_ipi_irq = irq; -+ mb(); -+#ifndef CONFIG_DEBUGGER -+ irq_get_chip(irq)->irq_startup(irq_get_irq_data(irq)); -+#endif +} + +static void __ipipe_ipi_demux(int irq, struct pt_regs *regs) @@ -3163,7 +3169,7 @@ index 0000000..7252c78 +EXPORT_SYMBOL_GPL(atomic_clear_mask); +#endif /* !CONFIG_PPC64 */ diff --git a/arch/powerpc/kernel/irq.c b/arch/powerpc/kernel/irq.c -index d281fb6..bc355cb 100644 +index 4b1e82a..a19c336 100644 --- a/arch/powerpc/kernel/irq.c +++ b/arch/powerpc/kernel/irq.c @@ -99,6 +99,8 @@ EXPORT_SYMBOL(irq_desc); @@ -3175,7 +3181,7 @@ index d281fb6..bc355cb 100644 static inline notrace unsigned long get_hard_enabled(void) { unsigned long enabled; -@@ -187,6 +189,9 @@ notrace void arch_local_irq_restore(unsigned long en) +@@ -184,6 +186,9 @@ notrace void arch_local_irq_restore(unsigned long en) __hard_irq_enable(); } EXPORT_SYMBOL(arch_local_irq_restore); @@ -3185,7 +3191,7 @@ index d281fb6..bc355cb 100644 #endif /* CONFIG_PPC64 */ int arch_show_interrupts(struct seq_file *p, int prec) -@@ -283,7 +288,8 @@ void migrate_irqs(void) +@@ -280,7 +285,8 @@ void migrate_irqs(void) } #endif @@ -3195,7 +3201,7 @@ index d281fb6..bc355cb 100644 { struct thread_info *curtp, *irqtp; unsigned long saved_sp_limit; -@@ -326,8 +332,14 @@ static inline void handle_one_irq(unsigned int irq) +@@ -323,8 +329,14 @@ static inline void handle_one_irq(unsigned int irq) if (irqtp->flags) set_bits(irqtp->flags, &curtp->flags); } @@ -3211,7 +3217,7 @@ index d281fb6..bc355cb 100644 { #ifdef CONFIG_DEBUG_STACKOVERFLOW long sp; -@@ -343,6 +355,16 @@ static inline void check_stack_overflow(void) +@@ -340,6 +352,16 @@ static inline void check_stack_overflow(void) #endif } @@ -3228,7 +3234,7 @@ index d281fb6..bc355cb 100644 void do_IRQ(struct pt_regs *regs) { struct pt_regs *old_regs = set_irq_regs(regs); -@@ -383,7 +405,9 @@ void __init init_IRQ(void) +@@ -380,7 +402,9 @@ void __init init_IRQ(void) exc_lvl_ctx_init(); @@ -3238,7 +3244,7 @@ index d281fb6..bc355cb 100644 } #if defined(CONFIG_BOOKE) || defined(CONFIG_40x) -@@ -422,6 +446,7 @@ void exc_lvl_ctx_init(void) +@@ -419,6 +443,7 @@ void exc_lvl_ctx_init(void) } #endif @@ -3246,7 +3252,7 @@ index d281fb6..bc355cb 100644 struct thread_info *softirq_ctx[NR_CPUS] __read_mostly; struct thread_info *hardirq_ctx[NR_CPUS] __read_mostly; -@@ -464,6 +489,9 @@ static inline void do_softirq_onstack(void) +@@ -461,6 +486,9 @@ static inline void do_softirq_onstack(void) if (irqtp->flags) set_bits(irqtp->flags, &curtp->flags); } @@ -3504,7 +3510,7 @@ index 7bf2187..27f1d76 100644 current->active_mm = &init_mm; diff --git a/arch/powerpc/kernel/time.c b/arch/powerpc/kernel/time.c -index 03b29a6..d9a95ed 100644 +index 2de304a..f70b9e6 100644 --- a/arch/powerpc/kernel/time.c +++ b/arch/powerpc/kernel/time.c @@ -127,6 +127,8 @@ struct decrementer_clock { @@ -4584,7 +4590,7 @@ index 1aa478b..b45f80e 100644 /** diff --git a/arch/powerpc/platforms/pseries/lpar.c b/arch/powerpc/platforms/pseries/lpar.c -index c9a29da..fbb039d 100644 +index 2178cc4..d21d070 100644 --- a/arch/powerpc/platforms/pseries/lpar.c +++ b/arch/powerpc/platforms/pseries/lpar.c @@ -166,7 +166,7 @@ static long pSeries_lpar_hpte_insert(unsigned long hpte_group, @@ -5244,6 +5250,16 @@ index 984cd20..1c6b4a3 100644 } static struct uic * __init uic_init_one(struct device_node *node) +diff --git a/drivers/Makefile b/drivers/Makefile +index 7fa433a..51e1d9a 100644 +--- a/drivers/Makefile ++++ b/drivers/Makefile +@@ -127,3 +127,5 @@ obj-$(CONFIG_IOMMU_SUPPORT) += iommu/ + + # Virtualization drivers + obj-$(CONFIG_VIRT_DRIVERS) += virt/ ++ ++obj-$(CONFIG_XENOMAI) += xenomai/ diff --git a/drivers/pci/htirq.c b/drivers/pci/htirq.c index db057b6..7fe364e 100644 --- a/drivers/pci/htirq.c @@ -7121,7 +7137,7 @@ index bc2994e..5e2da8d 100644 #define write_unlock_irq(lock) _raw_write_unlock_irq(lock) diff --git a/include/linux/rwlock_api_smp.h b/include/linux/rwlock_api_smp.h -index 9c9f049..62c8941 100644 +index 9c9f049..62c894150 100644 --- a/include/linux/rwlock_api_smp.h +++ b/include/linux/rwlock_api_smp.h @@ -141,7 +141,9 @@ static inline int __raw_write_trylock(rwlock_t *lock) @@ -7478,7 +7494,7 @@ index a26e2fb..71348f2 100644 #define arch_read_can_lock(lock) (((void)(lock), 1)) diff --git a/init/Kconfig b/init/Kconfig -index d627783..ce4171e 100644 +index d627783..17c6257 100644 --- a/init/Kconfig +++ b/init/Kconfig @@ -87,6 +87,7 @@ config CROSS_COMPILE @@ -7489,6 +7505,44 @@ index d627783..ce4171e 100644 help Append an extra string to the end of your kernel version. This will show up when you type uname, for example. +@@ -1399,3 +1400,37 @@ config PADATA + bool + + source "kernel/Kconfig.locks" ++ ++menu "Real-time sub-system" ++ ++if APM || CPU_FREQ || ACPI_PROCESSOR || INTEL_IDLE ++comment "WARNING! You enabled APM, CPU Frequency scaling, ACPI 'processor'" ++comment "or Intel cpuidle option. These options are known to cause troubles" ++comment "with Xenomai, disable them." ++endif ++ ++comment "NOTE: Xenomai conflicts with PC speaker support." ++ depends on !X86_TSC && X86 && INPUT_PCSPKR ++comment "(menu Device Drivers/Input device support/Miscellaneous devices)" ++ depends on !X86_TSC && X86 && INPUT_PCSPKR ++ ++comment "NOTE: Xenomai needs either X86_LOCAL_APIC enabled or HPET_TIMER disabled." ++ depends on (!X86_LOCAL_APIC || !X86_TSC) && X86 && HPET_TIMER ++comment "(menu Processor type and features)" ++ depends on (!X86_LOCAL_APIC || !X86_TSC) && X86 && HPET_TIMER ++ ++config XENOMAI ++ depends on ((X86_TSC || !X86 || !INPUT_PCSPKR) && (!HPET_TIMER || !X86 || (X86_LOCAL_APIC && X86_TSC))) ++ bool "Xenomai" ++ default y ++ select IPIPE ++ ++ help ++ Xenomai is a real-time extension to the Linux kernel. Note ++ that Xenomai relies on Adeos interrupt pipeline (CONFIG_IPIPE ++ option) to be enabled, so enabling this option selects the ++ CONFIG_IPIPE option. ++ ++source "arch/powerpc/xenomai/Kconfig" ++ ++endmenu diff --git a/init/main.c b/init/main.c index 03b408d..4c31fab 100644 --- a/init/main.c @@ -7531,7 +7585,7 @@ index 03b408d..4c31fab 100644 usermodehelper_enable(); do_initcalls(); diff --git a/kernel/Makefile b/kernel/Makefile -index eca595e..45d0946 100644 +index eca595e..86de49b 100644 --- a/kernel/Makefile +++ b/kernel/Makefile @@ -86,6 +86,7 @@ obj-$(CONFIG_TREE_RCU_TRACE) += rcutree_trace.o @@ -7542,8 +7596,14 @@ index eca595e..45d0946 100644 obj-$(CONFIG_SYSCTL) += utsname_sysctl.o obj-$(CONFIG_TASK_DELAY_ACCT) += delayacct.o obj-$(CONFIG_TASKSTATS) += taskstats.o tsacct.o +@@ -138,3 +139,5 @@ quiet_cmd_timeconst = TIMEC $@ + targets += timeconst.h + $(obj)/timeconst.h: $(src)/timeconst.pl FORCE + $(call if_changed,timeconst) ++ ++obj-$(CONFIG_XENOMAI) += xenomai/ diff --git a/kernel/exit.c b/kernel/exit.c -index 2913b35..087f348 100644 +index 9e316ae..23a0bc8 100644 --- a/kernel/exit.c +++ b/kernel/exit.c @@ -979,6 +979,7 @@ NORET_TYPE void do_exit(long code) @@ -11598,10 +11658,10 @@ index 039b889..309e58e 100644 static void free_desc(unsigned int irq) { diff --git a/kernel/lockdep.c b/kernel/lockdep.c -index 91d67ce..65e15a7 100644 +index 4479606..a68dbde 100644 --- a/kernel/lockdep.c +++ b/kernel/lockdep.c -@@ -2525,7 +2525,7 @@ void trace_hardirqs_on_caller(unsigned long ip) +@@ -2526,7 +2526,7 @@ void trace_hardirqs_on_caller(unsigned long ip) return; } @@ -11610,7 +11670,7 @@ index 91d67ce..65e15a7 100644 return; if (DEBUG_LOCKS_WARN_ON(unlikely(early_boot_irqs_disabled))) -@@ -2558,7 +2558,7 @@ void trace_hardirqs_off_caller(unsigned long ip) +@@ -2559,7 +2559,7 @@ void trace_hardirqs_off_caller(unsigned long ip) if (unlikely(!debug_locks || current->lockdep_recursion)) return; @@ -11619,7 +11679,7 @@ index 91d67ce..65e15a7 100644 return; if (curr->hardirqs_enabled) { -@@ -2590,7 +2590,7 @@ void trace_softirqs_on(unsigned long ip) +@@ -2591,7 +2591,7 @@ void trace_softirqs_on(unsigned long ip) if (unlikely(!debug_locks || current->lockdep_recursion)) return; @@ -11628,7 +11688,7 @@ index 91d67ce..65e15a7 100644 return; if (curr->softirqs_enabled) { -@@ -2626,7 +2626,7 @@ void trace_softirqs_off(unsigned long ip) +@@ -2627,7 +2627,7 @@ void trace_softirqs_off(unsigned long ip) if (unlikely(!debug_locks || current->lockdep_recursion)) return; @@ -12044,7 +12104,7 @@ index b50b0f0..b48bb2f 100644 + +#endif /* CONFIG_IPIPE */ diff --git a/kernel/signal.c b/kernel/signal.c -index 291c970..63e5475 100644 +index 195331c..018541a 100644 --- a/kernel/signal.c +++ b/kernel/signal.c @@ -681,6 +681,7 @@ void signal_wake_up(struct task_struct *t, int resume) @@ -12609,7 +12669,7 @@ index 5a688a2..3f234b3 100644 if (vma_wants_writenotify(vma)) { vma->vm_page_prot = vm_get_page_prot(newflags & ~VM_SHARED); diff --git a/mm/vmalloc.c b/mm/vmalloc.c -index 56faf31..ca07731 100644 +index 3a65d6f7..8376f2a 100644 --- a/mm/vmalloc.c +++ b/mm/vmalloc.c @@ -171,6 +171,8 @@ static int vmap_page_range_noflush(unsigned long start, unsigned long end, _______________________________________________ Xenomai-git mailing list Xenomai-git@gna.org https://mail.gna.org/listinfo/xenomai-git