Module: xenomai-3 Branch: stable-3.0.x Commit: 9e885dbd83b87640c5b641d8d961777997a093dc URL: http://git.xenomai.org/?p=xenomai-3.git;a=commit;h=9e885dbd83b87640c5b641d8d961777997a093dc
Author: Philippe Gerum <r...@xenomai.org> Date: Thu Mar 24 12:32:33 2016 +0100 cobalt/arm: upgrade I-pipe support --- ...rm-11.patch => ipipe-core-3.10.32-arm-13.patch} | 40 ++++++++----------- ...rm-15.patch => ipipe-core-3.14.44-arm-16.patch} | 39 +++++++------------ ...-arm-8.patch => ipipe-core-3.18.20-arm-9.patch} | 41 ++++++++------------ 3 files changed, 47 insertions(+), 73 deletions(-) diff --git a/kernel/cobalt/arch/arm/patches/ipipe-core-3.10.32-arm-11.patch b/kernel/cobalt/arch/arm/patches/ipipe-core-3.10.32-arm-13.patch similarity index 99% rename from kernel/cobalt/arch/arm/patches/ipipe-core-3.10.32-arm-11.patch rename to kernel/cobalt/arch/arm/patches/ipipe-core-3.10.32-arm-13.patch index 092b67d..99f1933 100644 --- a/kernel/cobalt/arch/arm/patches/ipipe-core-3.10.32-arm-11.patch +++ b/kernel/cobalt/arch/arm/patches/ipipe-core-3.10.32-arm-13.patch @@ -1092,7 +1092,7 @@ index bb28af7..780ca50 100644 static inline void sp804_clockevents_init(void __iomem *base, unsigned int irq, const char *name) diff --git a/arch/arm/include/asm/ipipe.h b/arch/arm/include/asm/ipipe.h new file mode 100644 -index 0000000..c7704e8 +index 0000000..a1737b1 --- /dev/null +++ b/arch/arm/include/asm/ipipe.h @@ -0,0 +1,274 @@ @@ -1140,7 +1140,7 @@ index 0000000..c7704e8 +#include <linux/jump_label.h> +#include <linux/ipipe_trace.h> + -+#define IPIPE_CORE_RELEASE 11 ++#define IPIPE_CORE_RELEASE 13 + +struct ipipe_domain; + @@ -5512,7 +5512,7 @@ index da84188..888372f 100644 + hard_local_irq_enable(); } diff --git a/arch/arm/mach-at91/gpio.c b/arch/arm/mach-at91/gpio.c -index a5afcf7..8ef9c3e 100644 +index a5afcf7..8ef9c3eb 100644 --- a/arch/arm/mach-at91/gpio.c +++ b/arch/arm/mach-at91/gpio.c @@ -24,9 +24,18 @@ @@ -9769,7 +9769,7 @@ index 869254c..69438c1 100644 if (IS_ERR(timer->io_base)) return PTR_ERR(timer->io_base); diff --git a/arch/arm/plat-omap/include/plat/dmtimer.h b/arch/arm/plat-omap/include/plat/dmtimer.h -index fb92abb..e593b85 100644 +index fb92abb9..e593b85 100644 --- a/arch/arm/plat-omap/include/plat/dmtimer.h +++ b/arch/arm/plat-omap/include/plat/dmtimer.h @@ -104,6 +104,7 @@ struct omap_dm_timer { @@ -10181,7 +10181,7 @@ index 5dfbb0b..2f1562c 100644 /* diff --git a/drivers/clocksource/arm_arch_timer.c b/drivers/clocksource/arm_arch_timer.c -index 053d846..316b382 100644 +index 053d846..16a9412 100644 --- a/drivers/clocksource/arm_arch_timer.c +++ b/drivers/clocksource/arm_arch_timer.c @@ -17,6 +17,8 @@ @@ -10193,7 +10193,7 @@ index 053d846..316b382 100644 #include <asm/arch_timer.h> #include <asm/virt.h> -@@ -43,14 +45,54 @@ static bool arch_timer_use_virtual = true; +@@ -43,14 +45,57 @@ static bool arch_timer_use_virtual = true; * Architected system timer support. */ @@ -10246,11 +10246,14 @@ index 053d846..316b382 100644 + itimer->irq = irq; +#endif /* CONFIG_IPIPE */ + stolen: -+ __ipipe_tsc_update(); ++ /* ++ * This is a 64bit clock source, no need for TSC ++ * update. ++ */ evt->event_handler(evt); return IRQ_HANDLED; } -@@ -62,14 +104,14 @@ static irqreturn_t arch_timer_handler_virt(int irq, void *dev_id) +@@ -62,14 +107,14 @@ static irqreturn_t arch_timer_handler_virt(int irq, void *dev_id) { struct clock_event_device *evt = dev_id; @@ -10267,7 +10270,7 @@ index 053d846..316b382 100644 } static inline void timer_set_mode(const int access, int mode) -@@ -142,6 +184,30 @@ static int __cpuinit arch_timer_setup(struct clock_event_device *clk) +@@ -142,6 +187,30 @@ static int __cpuinit arch_timer_setup(struct clock_event_device *clk) clk->set_mode(CLOCK_EVT_MODE_SHUTDOWN, NULL); @@ -10298,7 +10301,7 @@ index 053d846..316b382 100644 clockevents_config_and_register(clk, arch_timer_rate, 0xf, 0x7fffffff); -@@ -275,6 +341,11 @@ static int __init arch_timer_register(void) +@@ -275,6 +344,11 @@ static int __init arch_timer_register(void) goto out; } @@ -17281,10 +17284,10 @@ index 0000000..2746906 +#endif diff --git a/kernel/ipipe/timer.c b/kernel/ipipe/timer.c new file mode 100644 -index 0000000..0c9b908 +index 0000000..f32a7ff --- /dev/null +++ b/kernel/ipipe/timer.c -@@ -0,0 +1,492 @@ +@@ -0,0 +1,493 @@ +/* -*- linux-c -*- + * linux/kernel/ipipe/timer.c + * @@ -17652,6 +17655,7 @@ index 0000000..0c9b908 + timer->real_set_next_event = evtdev->set_next_event; + evtdev->mult = 1; + evtdev->shift = 0; ++ evtdev->max_delta_ns = UINT_MAX; + evtdev->set_mode = emumode; + evtdev->set_next_event = emutick; + evtdev->ipipe_stolen = 1; @@ -21055,18 +21059,6 @@ index 4c0d0e5..886125d 100644 goto out; /* -diff --git a/mm/Kconfig b/mm/Kconfig -index e742d06..32bedf1 100644 ---- a/mm/Kconfig -+++ b/mm/Kconfig -@@ -385,6 +385,7 @@ config NOMMU_INITIAL_TRIM_EXCESS - config TRANSPARENT_HUGEPAGE - bool "Transparent Hugepage Support" - depends on HAVE_ARCH_TRANSPARENT_HUGEPAGE -+ depends on !IPIPE - select COMPACTION - help - Transparent Hugepages allows the kernel to use huge pages and diff --git a/mm/memory.c b/mm/memory.c index 4b60011..b4c639e 100644 --- a/mm/memory.c diff --git a/kernel/cobalt/arch/arm/patches/ipipe-core-3.14.44-arm-15.patch b/kernel/cobalt/arch/arm/patches/ipipe-core-3.14.44-arm-16.patch similarity index 99% rename from kernel/cobalt/arch/arm/patches/ipipe-core-3.14.44-arm-15.patch rename to kernel/cobalt/arch/arm/patches/ipipe-core-3.14.44-arm-16.patch index 2ec0438..d4a970a 100644 --- a/kernel/cobalt/arch/arm/patches/ipipe-core-3.14.44-arm-15.patch +++ b/kernel/cobalt/arch/arm/patches/ipipe-core-3.14.44-arm-16.patch @@ -1592,7 +1592,7 @@ index bb28af7..780ca50 100644 static inline void sp804_clockevents_init(void __iomem *base, unsigned int irq, const char *name) diff --git a/arch/arm/include/asm/ipipe.h b/arch/arm/include/asm/ipipe.h new file mode 100644 -index 0000000..4459611 +index 0000000..03bdbf4 --- /dev/null +++ b/arch/arm/include/asm/ipipe.h @@ -0,0 +1,272 @@ @@ -1640,7 +1640,7 @@ index 0000000..4459611 +#include <linux/jump_label.h> +#include <linux/ipipe_trace.h> + -+#define IPIPE_CORE_RELEASE 15 ++#define IPIPE_CORE_RELEASE 16 + +struct ipipe_domain; + @@ -4232,7 +4232,7 @@ index 0000000..2829e9a +EXPORT_SYMBOL_GPL(cpu_architecture); diff --git a/arch/arm/kernel/ipipe_tsc.c b/arch/arm/kernel/ipipe_tsc.c new file mode 100644 -index 0000000..2e48631 +index 0000000..da8d986 --- /dev/null +++ b/arch/arm/kernel/ipipe_tsc.c @@ -0,0 +1,203 @@ @@ -4360,7 +4360,7 @@ index 0000000..2e48631 + + default: + unimplemented: -+ printk("I-pipel: Unimplemented tsc configuration, " ++ printk("I-pipe: Unimplemented tsc configuration, " + "type: %d, mask: 0x%08Lx\n", info->type, info->u.mask); + BUG(); + } @@ -4397,8 +4397,8 @@ index 0000000..2e48631 + + wrap_ms *= HZ / 2; + do_div(wrap_ms, 1000); -+ if (wrap_ms > 0xffffffff) -+ wrap_ms = 0xffffffff; ++ if (wrap_ms > 0x7fffffff) ++ wrap_ms = 0x7fffffff; + ipipe_tsc_update_timer.data = wrap_ms; + ipipe_tsc_update_timer.function = __ipipe_tsc_update_fn; + mod_timer(&ipipe_tsc_update_timer, @@ -10858,7 +10858,7 @@ index 2f37e1d..7663e75 100644 /* diff --git a/drivers/clocksource/arm_arch_timer.c b/drivers/clocksource/arm_arch_timer.c -index 95fb944..36c1f95 100644 +index 95fb944..575b9ae 100644 --- a/drivers/clocksource/arm_arch_timer.c +++ b/drivers/clocksource/arm_arch_timer.c @@ -21,6 +21,8 @@ @@ -10880,7 +10880,7 @@ index 95fb944..36c1f95 100644 { unsigned long ctrl; -@@ -143,6 +144,49 @@ static __always_inline irqreturn_t timer_handler(const int access, +@@ -143,6 +144,52 @@ static __always_inline irqreturn_t timer_handler(const int access, if (ctrl & ARCH_TIMER_CTRL_IT_STAT) { ctrl |= ARCH_TIMER_CTRL_IT_MASK; arch_timer_reg_write(access, ARCH_TIMER_REG_CTRL, ctrl, evt); @@ -10926,11 +10926,14 @@ index 95fb944..36c1f95 100644 + itimer->irq = irq; +#endif /* CONFIG_IPIPE */ + stolen: -+ __ipipe_tsc_update(); ++ /* ++ * This is a 64bit clock source, no need for TSC ++ * update. ++ */ evt->event_handler(evt); return IRQ_HANDLED; } -@@ -154,28 +198,28 @@ static irqreturn_t arch_timer_handler_virt(int irq, void *dev_id) +@@ -154,28 +201,28 @@ static irqreturn_t arch_timer_handler_virt(int irq, void *dev_id) { struct clock_event_device *evt = dev_id; @@ -10963,7 +10966,7 @@ index 95fb944..36c1f95 100644 } static __always_inline void timer_set_mode(const int access, int mode, -@@ -293,6 +337,18 @@ static void __arch_timer_setup(unsigned type, +@@ -293,6 +340,18 @@ static void __arch_timer_setup(unsigned type, clk->set_mode(CLOCK_EVT_MODE_SHUTDOWN, clk); @@ -10982,7 +10985,7 @@ index 95fb944..36c1f95 100644 clockevents_config_and_register(clk, arch_timer_rate, 0xf, 0x7fffffff); } -@@ -431,6 +487,11 @@ static void __init arch_counter_register(unsigned type) +@@ -431,6 +490,11 @@ static void __init arch_counter_register(unsigned type) else arch_timer_read_counter = arch_counter_get_cntvct_mem; @@ -22200,18 +22203,6 @@ index 04abe53..9b2ff41 100644 goto out; /* -diff --git a/mm/Kconfig b/mm/Kconfig -index 0862816..aacbf2df 100644 ---- a/mm/Kconfig -+++ b/mm/Kconfig -@@ -397,6 +397,7 @@ config NOMMU_INITIAL_TRIM_EXCESS - config TRANSPARENT_HUGEPAGE - bool "Transparent Hugepage Support" - depends on HAVE_ARCH_TRANSPARENT_HUGEPAGE -+ depends on !IPIPE - select COMPACTION - help - Transparent Hugepages allows the kernel to use huge pages and diff --git a/mm/memory.c b/mm/memory.c index 749e1c6..090df7e 100644 --- a/mm/memory.c diff --git a/kernel/cobalt/arch/arm/patches/ipipe-core-3.18.20-arm-8.patch b/kernel/cobalt/arch/arm/patches/ipipe-core-3.18.20-arm-9.patch similarity index 99% rename from kernel/cobalt/arch/arm/patches/ipipe-core-3.18.20-arm-8.patch rename to kernel/cobalt/arch/arm/patches/ipipe-core-3.18.20-arm-9.patch index fd27b39..d594401 100644 --- a/kernel/cobalt/arch/arm/patches/ipipe-core-3.18.20-arm-8.patch +++ b/kernel/cobalt/arch/arm/patches/ipipe-core-3.18.20-arm-9.patch @@ -1653,7 +1653,7 @@ index bb28af7..780ca50 100644 static inline void sp804_clockevents_init(void __iomem *base, unsigned int irq, const char *name) diff --git a/arch/arm/include/asm/ipipe.h b/arch/arm/include/asm/ipipe.h new file mode 100644 -index 0000000..128fc6a +index 0000000..d1c125d --- /dev/null +++ b/arch/arm/include/asm/ipipe.h @@ -0,0 +1,272 @@ @@ -1701,7 +1701,7 @@ index 0000000..128fc6a +#include <linux/jump_label.h> +#include <linux/ipipe_trace.h> + -+#define IPIPE_CORE_RELEASE 8 ++#define IPIPE_CORE_RELEASE 9 + +struct ipipe_domain; + @@ -4301,7 +4301,7 @@ index 0000000..8024a79 +EXPORT_SYMBOL_GPL(cpu_architecture); diff --git a/arch/arm/kernel/ipipe_tsc.c b/arch/arm/kernel/ipipe_tsc.c new file mode 100644 -index 0000000..4a87f0c +index 0000000..414ada5 --- /dev/null +++ b/arch/arm/kernel/ipipe_tsc.c @@ -0,0 +1,203 @@ @@ -4429,7 +4429,7 @@ index 0000000..4a87f0c + + default: + unimplemented: -+ printk("I-pipel: Unimplemented tsc configuration, " ++ printk("I-pipe: Unimplemented tsc configuration, " + "type: %d, mask: 0x%08Lx\n", info->type, info->u.mask); + BUG(); + } @@ -4466,8 +4466,8 @@ index 0000000..4a87f0c + + wrap_ms *= HZ / 2; + do_div(wrap_ms, 1000); -+ if (wrap_ms > 0xffffffff) -+ wrap_ms = 0xffffffff; ++ if (wrap_ms > 0x7fffffff) ++ wrap_ms = 0x7fffffff; + ipipe_tsc_update_timer.data = wrap_ms; + ipipe_tsc_update_timer.function = __ipipe_tsc_update_fn; + mod_timer(&ipipe_tsc_update_timer, @@ -5805,7 +5805,7 @@ index aab1f96..8a50f89 100644 static void __init at91sam9260_init_time(void) diff --git a/arch/arm/mach-at91/at91sam9261.c b/arch/arm/mach-at91/at91sam9261.c -index a8bd359..bceeb39 100644 +index a8bd359..bceeb39b 100644 --- a/arch/arm/mach-at91/at91sam9261.c +++ b/arch/arm/mach-at91/at91sam9261.c @@ -365,6 +365,7 @@ static void __init at91sam9261_register_devices(void) @@ -11684,7 +11684,7 @@ index 2f37e1d..7663e75 100644 /* diff --git a/drivers/clocksource/arm_arch_timer.c b/drivers/clocksource/arm_arch_timer.c -index 84b4c8b..a838b3c 100644 +index 84b4c8b..6d7d319 100644 --- a/drivers/clocksource/arm_arch_timer.c +++ b/drivers/clocksource/arm_arch_timer.c @@ -21,6 +21,8 @@ @@ -11706,7 +11706,7 @@ index 84b4c8b..a838b3c 100644 { unsigned long ctrl; -@@ -144,6 +145,49 @@ static __always_inline irqreturn_t timer_handler(const int access, +@@ -144,6 +145,52 @@ static __always_inline irqreturn_t timer_handler(const int access, if (ctrl & ARCH_TIMER_CTRL_IT_STAT) { ctrl |= ARCH_TIMER_CTRL_IT_MASK; arch_timer_reg_write(access, ARCH_TIMER_REG_CTRL, ctrl, evt); @@ -11752,11 +11752,14 @@ index 84b4c8b..a838b3c 100644 + itimer->irq = irq; +#endif /* CONFIG_IPIPE */ + stolen: -+ __ipipe_tsc_update(); ++ /* ++ * This is a 64bit clock source, no need for TSC ++ * update. ++ */ evt->event_handler(evt); return IRQ_HANDLED; } -@@ -155,28 +199,28 @@ static irqreturn_t arch_timer_handler_virt(int irq, void *dev_id) +@@ -155,28 +202,28 @@ static irqreturn_t arch_timer_handler_virt(int irq, void *dev_id) { struct clock_event_device *evt = dev_id; @@ -11789,7 +11792,7 @@ index 84b4c8b..a838b3c 100644 } static __always_inline void timer_set_mode(const int access, int mode, -@@ -296,6 +340,18 @@ static void __arch_timer_setup(unsigned type, +@@ -296,6 +343,18 @@ static void __arch_timer_setup(unsigned type, clk->set_mode(CLOCK_EVT_MODE_SHUTDOWN, clk); @@ -11808,7 +11811,7 @@ index 84b4c8b..a838b3c 100644 clockevents_config_and_register(clk, arch_timer_rate, 0xf, 0x7fffffff); } -@@ -477,6 +533,11 @@ static void __init arch_counter_register(unsigned type) +@@ -477,6 +536,11 @@ static void __init arch_counter_register(unsigned type) clocksource_counter.name = "arch_mem_counter"; } @@ -23551,18 +23554,6 @@ index 1afec32..5803111 100644 goto out; /* -diff --git a/mm/Kconfig b/mm/Kconfig -index 1d1ae6b..dbe4ef9 100644 ---- a/mm/Kconfig -+++ b/mm/Kconfig -@@ -409,6 +409,7 @@ config NOMMU_INITIAL_TRIM_EXCESS - config TRANSPARENT_HUGEPAGE - bool "Transparent Hugepage Support" - depends on HAVE_ARCH_TRANSPARENT_HUGEPAGE -+ depends on !IPIPE - select COMPACTION - help - Transparent Hugepages allows the kernel to use huge pages and diff --git a/mm/memory.c b/mm/memory.c index 90fb265..8a1fd79 100644 --- a/mm/memory.c _______________________________________________ Xenomai-git mailing list Xenomai-git@xenomai.org https://xenomai.org/mailman/listinfo/xenomai-git