[Xenomai-git] Philippe Gerum : cobalt/arm: upgrade I-pipe support
Module: xenomai-3 Branch: wip/drivers Commit: 2eae1185f359e6da8746333077d38e194352d805 URL: http://git.xenomai.org/?p=xenomai-3.git;a=commit;h=2eae1185f359e6da8746333077d38e194352d805 Author: Philippe GerumDate: Fri Sep 9 18:55:43 2016 +0200 cobalt/arm: upgrade I-pipe support --- ...arm-9.patch => ipipe-core-3.18.20-arm-11.patch} | 342 +- ...8-arm-4.patch => ipipe-core-4.1.18-arm-8.patch} | 487 +++- 2 files changed, 704 insertions(+), 125 deletions(-) diff --git a/kernel/cobalt/arch/arm/patches/ipipe-core-3.18.20-arm-9.patch b/kernel/cobalt/arch/arm/patches/ipipe-core-3.18.20-arm-11.patch similarity index 98% rename from kernel/cobalt/arch/arm/patches/ipipe-core-3.18.20-arm-9.patch rename to kernel/cobalt/arch/arm/patches/ipipe-core-3.18.20-arm-11.patch index d594401..efe7c8f 100644 --- a/kernel/cobalt/arch/arm/patches/ipipe-core-3.18.20-arm-9.patch +++ b/kernel/cobalt/arch/arm/patches/ipipe-core-3.18.20-arm-11.patch @@ -1,5 +1,5 @@ diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig -index 89c4b5c..46ec8f8 100644 +index 89c4b5c..6b13805 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig @@ -33,8 +33,8 @@ config ARM @@ -80,6 +80,14 @@ index 89c4b5c..46ec8f8 100644 source kernel/Kconfig.preempt config HZ_FIXED +@@ -1741,6 +1760,7 @@ config ALIGNMENT_TRAP + config UACCESS_WITH_MEMCPY + bool "Use kernel mem{cpy,set}() for {copy_to,clear}_user()" + depends on MMU ++ depends on !IPIPE + default y if CPU_FEROCEON + help + Implement faster copy_to_user and clear_user methods for CPU diff --git a/arch/arm/boot/compressed/decompress.c b/arch/arm/boot/compressed/decompress.c index bd245d3..65f2238 100644 --- a/arch/arm/boot/compressed/decompress.c @@ -1653,7 +1661,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 000..d1c125d +index 000..5ec5eff --- /dev/null +++ b/arch/arm/include/asm/ipipe.h @@ -0,0 +1,272 @@ @@ -1701,7 +1709,7 @@ index 000..d1c125d +#include +#include + -+#define IPIPE_CORE_RELEASE9 ++#define IPIPE_CORE_RELEASE11 + +struct ipipe_domain; + @@ -4301,10 +4309,10 @@ index 000..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 000..414ada5 +index 000..6bcabb3 --- /dev/null +++ b/arch/arm/kernel/ipipe_tsc.c -@@ -0,0 +1,203 @@ +@@ -0,0 +1,207 @@ +#include +#include +#include @@ -4378,6 +4386,10 @@ index 000..414ada5 + tsc_addr = &__ipipe_tsc_addr; +#endif + registered = ipipe_tsc_value != NULL; ++ ++ if (registered && info->freq < tsc_info.freq) ++ return; ++ + ipipe_tsc_value = (struct ipipe_tsc_value_t *)tsc_area; + vector_tsc_value = (struct ipipe_tsc_value_t *)__ipipe_tsc_area; + @@ -7090,7 +7102,7 @@ index 5211f62..c0a8610 100644 platform_device_register_simple("imx31-audmux", 0, imx25_audmux_res, ARRAY_SIZE(imx25_audmux_res)); diff --git a/arch/arm/mach-imx/mm-imx27.c b/arch/arm/mach-imx/mm-imx27.c -index 7d82a5a..9bbd0f4 100644 +index 7d82a5a5..9bbd0f4 100644 --- a/arch/arm/mach-imx/mm-imx27.c +++ b/arch/arm/mach-imx/mm-imx27.c @@ -81,6 +81,10 @@ static const struct resource imx27_audmux_res[] __initconst = { @@ -12308,6 +12320,85 @@ index 9f06825..1087ed1 100644 irq_find_mapping(d->irq_domain, d->chip.base + bit)); } +diff --git a/drivers/gpio/gpio-mvebu.c b/drivers/gpio/gpio-mvebu.c +index a93ddbc..7c74176 100644 +--- a/drivers/gpio/gpio-mvebu.c b/drivers/gpio/gpio-mvebu.c +@@ -295,10 +295,11 @@ static void mvebu_gpio_irq_ack(struct irq_data *d) + struct irq_chip_generic *gc = irq_data_get_irq_chip_data(d); + struct mvebu_gpio_chip *mvchip = gc->private; + u32 mask = ~(1 << (d->irq - gc->irq_base)); ++ unsigned long flags; + +- irq_gc_lock(gc); ++ flags = irq_gc_lock(gc); + writel_relaxed(mask, mvebu_gpioreg_edge_cause(mvchip)); +- irq_gc_unlock(gc); ++ irq_gc_unlock(gc, flags); + } + + static void mvebu_gpio_edge_irq_mask(struct irq_data *d) +@@ -307,12 +308,13 @@ static void mvebu_gpio_edge_irq_mask(struct irq_data *d) + struct mvebu_gpio_chip *mvchip = gc->private; + struct irq_chip_type *ct = irq_data_get_chip_type(d); + u32 mask = 1 << (d->irq - gc->irq_base); ++ unsigned long flags; + +- irq_gc_lock(gc); ++ flags = irq_gc_lock(gc); + ct->mask_cache_priv &= ~mask; + + writel_relaxed(ct->mask_cache_priv, mvebu_gpioreg_edge_mask(mvchip)); +- irq_gc_unlock(gc); ++ irq_gc_unlock(gc, flags); + } + + static void
[Xenomai-git] Philippe Gerum : cobalt/arm: upgrade I-pipe support
Module: xenomai-3 Branch: stable-3.0.x Commit: 2eae1185f359e6da8746333077d38e194352d805 URL: http://git.xenomai.org/?p=xenomai-3.git;a=commit;h=2eae1185f359e6da8746333077d38e194352d805 Author: Philippe GerumDate: Fri Sep 9 18:55:43 2016 +0200 cobalt/arm: upgrade I-pipe support --- ...arm-9.patch => ipipe-core-3.18.20-arm-11.patch} | 342 +- ...8-arm-4.patch => ipipe-core-4.1.18-arm-8.patch} | 487 +++- 2 files changed, 704 insertions(+), 125 deletions(-) diff --git a/kernel/cobalt/arch/arm/patches/ipipe-core-3.18.20-arm-9.patch b/kernel/cobalt/arch/arm/patches/ipipe-core-3.18.20-arm-11.patch similarity index 98% rename from kernel/cobalt/arch/arm/patches/ipipe-core-3.18.20-arm-9.patch rename to kernel/cobalt/arch/arm/patches/ipipe-core-3.18.20-arm-11.patch index d594401..efe7c8f 100644 --- a/kernel/cobalt/arch/arm/patches/ipipe-core-3.18.20-arm-9.patch +++ b/kernel/cobalt/arch/arm/patches/ipipe-core-3.18.20-arm-11.patch @@ -1,5 +1,5 @@ diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig -index 89c4b5c..46ec8f8 100644 +index 89c4b5c..6b13805 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig @@ -33,8 +33,8 @@ config ARM @@ -80,6 +80,14 @@ index 89c4b5c..46ec8f8 100644 source kernel/Kconfig.preempt config HZ_FIXED +@@ -1741,6 +1760,7 @@ config ALIGNMENT_TRAP + config UACCESS_WITH_MEMCPY + bool "Use kernel mem{cpy,set}() for {copy_to,clear}_user()" + depends on MMU ++ depends on !IPIPE + default y if CPU_FEROCEON + help + Implement faster copy_to_user and clear_user methods for CPU diff --git a/arch/arm/boot/compressed/decompress.c b/arch/arm/boot/compressed/decompress.c index bd245d3..65f2238 100644 --- a/arch/arm/boot/compressed/decompress.c @@ -1653,7 +1661,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 000..d1c125d +index 000..5ec5eff --- /dev/null +++ b/arch/arm/include/asm/ipipe.h @@ -0,0 +1,272 @@ @@ -1701,7 +1709,7 @@ index 000..d1c125d +#include +#include + -+#define IPIPE_CORE_RELEASE9 ++#define IPIPE_CORE_RELEASE11 + +struct ipipe_domain; + @@ -4301,10 +4309,10 @@ index 000..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 000..414ada5 +index 000..6bcabb3 --- /dev/null +++ b/arch/arm/kernel/ipipe_tsc.c -@@ -0,0 +1,203 @@ +@@ -0,0 +1,207 @@ +#include +#include +#include @@ -4378,6 +4386,10 @@ index 000..414ada5 + tsc_addr = &__ipipe_tsc_addr; +#endif + registered = ipipe_tsc_value != NULL; ++ ++ if (registered && info->freq < tsc_info.freq) ++ return; ++ + ipipe_tsc_value = (struct ipipe_tsc_value_t *)tsc_area; + vector_tsc_value = (struct ipipe_tsc_value_t *)__ipipe_tsc_area; + @@ -7090,7 +7102,7 @@ index 5211f62..c0a8610 100644 platform_device_register_simple("imx31-audmux", 0, imx25_audmux_res, ARRAY_SIZE(imx25_audmux_res)); diff --git a/arch/arm/mach-imx/mm-imx27.c b/arch/arm/mach-imx/mm-imx27.c -index 7d82a5a..9bbd0f4 100644 +index 7d82a5a5..9bbd0f4 100644 --- a/arch/arm/mach-imx/mm-imx27.c +++ b/arch/arm/mach-imx/mm-imx27.c @@ -81,6 +81,10 @@ static const struct resource imx27_audmux_res[] __initconst = { @@ -12308,6 +12320,85 @@ index 9f06825..1087ed1 100644 irq_find_mapping(d->irq_domain, d->chip.base + bit)); } +diff --git a/drivers/gpio/gpio-mvebu.c b/drivers/gpio/gpio-mvebu.c +index a93ddbc..7c74176 100644 +--- a/drivers/gpio/gpio-mvebu.c b/drivers/gpio/gpio-mvebu.c +@@ -295,10 +295,11 @@ static void mvebu_gpio_irq_ack(struct irq_data *d) + struct irq_chip_generic *gc = irq_data_get_irq_chip_data(d); + struct mvebu_gpio_chip *mvchip = gc->private; + u32 mask = ~(1 << (d->irq - gc->irq_base)); ++ unsigned long flags; + +- irq_gc_lock(gc); ++ flags = irq_gc_lock(gc); + writel_relaxed(mask, mvebu_gpioreg_edge_cause(mvchip)); +- irq_gc_unlock(gc); ++ irq_gc_unlock(gc, flags); + } + + static void mvebu_gpio_edge_irq_mask(struct irq_data *d) +@@ -307,12 +308,13 @@ static void mvebu_gpio_edge_irq_mask(struct irq_data *d) + struct mvebu_gpio_chip *mvchip = gc->private; + struct irq_chip_type *ct = irq_data_get_chip_type(d); + u32 mask = 1 << (d->irq - gc->irq_base); ++ unsigned long flags; + +- irq_gc_lock(gc); ++ flags = irq_gc_lock(gc); + ct->mask_cache_priv &= ~mask; + + writel_relaxed(ct->mask_cache_priv, mvebu_gpioreg_edge_mask(mvchip)); +- irq_gc_unlock(gc); ++ irq_gc_unlock(gc, flags); + } + + static void
[Xenomai-git] Philippe Gerum : cobalt/arm: upgrade I-pipe support
Module: xenomai-2.6 Branch: refs/tags/v3.0.2 Commit: 5c286f8393ce69db2e3d7ff6d7673f0b65202734 URL: http://git.xenomai.org/?p=xenomai-2.6.git;a=commit;h=5c286f8393ce69db2e3d7ff6d7673f0b65202734 Author: Philippe GerumDate: Mon Mar 28 16:10:55 2016 +0200 cobalt/arm: upgrade I-pipe support --- ...8-arm-3.patch => ipipe-core-4.1.18-arm-4.patch} | 69 +++- 1 file changed, 53 insertions(+), 16 deletions(-) diff --git a/kernel/cobalt/arch/arm/patches/ipipe-core-4.1.18-arm-3.patch b/kernel/cobalt/arch/arm/patches/ipipe-core-4.1.18-arm-4.patch similarity index 99% rename from kernel/cobalt/arch/arm/patches/ipipe-core-4.1.18-arm-3.patch rename to kernel/cobalt/arch/arm/patches/ipipe-core-4.1.18-arm-4.patch index 01d0fce..f8e3c73 100644 --- a/kernel/cobalt/arch/arm/patches/ipipe-core-4.1.18-arm-3.patch +++ b/kernel/cobalt/arch/arm/patches/ipipe-core-4.1.18-arm-4.patch @@ -1635,7 +1635,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 000..eccfbcb +index 000..df05570 --- /dev/null +++ b/arch/arm/include/asm/ipipe.h @@ -0,0 +1,297 @@ @@ -1685,7 +1685,7 @@ index 000..eccfbcb +#include +#include + -+#define IPIPE_CORE_RELEASE3 ++#define IPIPE_CORE_RELEASE4 + +struct ipipe_domain; +struct timekeeper; @@ -6301,7 +6301,7 @@ index 0f04e30..ab12460 100644 int mx21_clocks_init(unsigned long lref, unsigned long fref); int mx27_clocks_init(unsigned long fref); diff --git a/arch/arm/mach-imx/gpc.c b/arch/arm/mach-imx/gpc.c -index 78b6fd0..711177f 100644 +index 78b6fd0..e8dc2f5 100644 --- a/arch/arm/mach-imx/gpc.c +++ b/arch/arm/mach-imx/gpc.c @@ -14,6 +14,7 @@ @@ -6391,30 +6391,29 @@ index 78b6fd0..711177f 100644 } void imx_gpc_hwirq_unmask(unsigned int hwirq) -@@ -159,16 +180,50 @@ void imx_gpc_hwirq_mask(unsigned int hwirq) +@@ -159,16 +180,49 @@ void imx_gpc_hwirq_mask(unsigned int hwirq) static void imx_gpc_irq_unmask(struct irq_data *d) { + unsigned long flags; + -+ raw_spin_lock_irqsave_cond(_lock, flags); ++ raw_spin_lock_irqsave(_lock, flags); imx_gpc_hwirq_unmask(d->hwirq); -+ raw_spin_unlock(_lock); ++ __ipipe_spin_unlock_irqbegin(_lock); irq_chip_unmask_parent(d); -+ /* Parent IC will handle virtual unlocking */ -+ hard_cond_local_irq_restore(flags); ++ __ipipe_spin_unlock_irqcomplete(flags); } static void imx_gpc_irq_mask(struct irq_data *d) { + unsigned long flags; + -+ raw_spin_lock_irqsave_cond(_lock, flags); ++ raw_spin_lock_irqsave(_lock, flags); + /* Parent IC will handle virtual locking */ imx_gpc_hwirq_mask(d->hwirq); -+ raw_spin_unlock(_lock); ++ __ipipe_spin_unlock_irqbegin(_lock); irq_chip_mask_parent(d); -+ hard_cond_local_irq_restore(flags); ++ __ipipe_spin_unlock_irqcomplete(flags); } +#ifdef CONFIG_IPIPE @@ -6442,7 +6441,7 @@ index 78b6fd0..711177f 100644 static struct irq_chip imx_gpc_chip = { .name = "GPC", .irq_eoi= irq_chip_eoi_parent, -@@ -179,6 +234,10 @@ static struct irq_chip imx_gpc_chip = { +@@ -179,6 +233,10 @@ static struct irq_chip imx_gpc_chip = { #ifdef CONFIG_SMP .irq_set_affinity = irq_chip_set_affinity_parent, #endif @@ -8993,15 +8992,30 @@ index 9769f1e..c3a4a6f 100644 set_cr(cr_no_alignment); } diff --git a/arch/arm/mm/cache-l2x0.c b/arch/arm/mm/cache-l2x0.c -index e309c8f..ec1f240 100644 +index e309c8f..7053f1b 100644 --- a/arch/arm/mm/cache-l2x0.c +++ b/arch/arm/mm/cache-l2x0.c -@@ -47,9 +47,15 @@ struct l2c_init_data { +@@ -23,6 +23,7 @@ + #include + #include + #include ++#include + #include + #include + +@@ -47,9 +48,22 @@ struct l2c_init_data { #define CACHE_LINE_SIZE 32 +#ifdef CONFIG_IPIPE +#define CACHE_RANGE_ATOMIC_MAX512UL ++static int l2x0_wa = -1; ++static int __init l2x0_setup_wa(char *str) ++{ ++ l2x0_wa = !!simple_strtol(str, NULL, 0); ++ return 0; ++} ++early_param("l2x0_write_allocate", l2x0_setup_wa); +#else +#define CACHE_RANGE_ATOMIC_MAX4096UL +#endif @@ -9013,7 +9027,7 @@ index e309c8f..ec1f240 100644 static u32 l2x0_way_mask; /* Bitmask of active ways */ static u32 l2x0_size; static unsigned long sync_reg_offset = L2X0_CACHE_SYNC; -@@ -292,10 +298,10 @@ static void l2c220_op_way(void __iomem *base, unsigned reg) +@@ -292,10 +306,10 @@ static void l2c220_op_way(void __iomem *base, unsigned reg) static unsigned long l2c220_op_pa_range(void __iomem *reg, unsigned long start, unsigned long end, unsigned long flags) { @@ -9026,7 +9040,7 @@ index e309c8f..ec1f240 100644 while (start < blk_end) { l2c_wait_mask(reg, 1); -@@
[Xenomai-git] Philippe Gerum : cobalt/arm: upgrade I-pipe support
Module: xenomai-2.6 Branch: refs/tags/v3.0-rc7 Commit: 1f34e06120ccde12cd28a447289f2b5d859979bc URL: http://git.xenomai.org/?p=xenomai-2.6.git;a=commit;h=1f34e06120ccde12cd28a447289f2b5d859979bc Author: Philippe GerumDate: Fri Mar 20 09:25:13 2015 +0100 cobalt/arm: upgrade I-pipe support --- 14.44-arm-11.patch => ipipe-core-3.14.44-arm-12.patch} |8 ...-3.18.12-arm-3.patch => ipipe-core-3.18.12-arm-4.patch} | 12 ++-- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/kernel/cobalt/arch/arm/patches/ipipe-core-3.14.44-arm-11.patch b/kernel/cobalt/arch/arm/patches/ipipe-core-3.14.44-arm-12.patch similarity index 99% rename from kernel/cobalt/arch/arm/patches/ipipe-core-3.14.44-arm-11.patch rename to kernel/cobalt/arch/arm/patches/ipipe-core-3.14.44-arm-12.patch index eab2937..c44d632 100644 --- a/kernel/cobalt/arch/arm/patches/ipipe-core-3.14.44-arm-11.patch +++ b/kernel/cobalt/arch/arm/patches/ipipe-core-3.14.44-arm-12.patch @@ -1590,7 +1590,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 000..5ec5eff +index 000..50e20e3 --- /dev/null +++ b/arch/arm/include/asm/ipipe.h @@ -0,0 +1,272 @@ @@ -1638,7 +1638,7 @@ index 000..5ec5eff +#include +#include + -+#define IPIPE_CORE_RELEASE11 ++#define IPIPE_CORE_RELEASE12 + +struct ipipe_domain; + @@ -2863,7 +2863,7 @@ index 000..6579eec + +#endif diff --git a/arch/arm/include/asm/setup.h b/arch/arm/include/asm/setup.h -index 8d6a089..d78ed9a 100644 +index 8d6a089..60c89d6 100644 --- a/arch/arm/include/asm/setup.h +++ b/arch/arm/include/asm/setup.h @@ -53,4 +53,10 @@ extern int arm_add_memory(u64 start, u64 size); @@ -2871,7 +2871,7 @@ index 8d6a089..d78ed9a 100644 extern void dump_machine_table(void); +#ifdef CONFIG_IPIPE -+void __init smp_build_cpu_revmap(void); ++void smp_build_cpu_revmap(void); +#else +static inline void smp_build_cpu_revmap(void) { } +#endif diff --git a/kernel/cobalt/arch/arm/patches/ipipe-core-3.18.12-arm-3.patch b/kernel/cobalt/arch/arm/patches/ipipe-core-3.18.12-arm-4.patch similarity index 99% rename from kernel/cobalt/arch/arm/patches/ipipe-core-3.18.12-arm-3.patch rename to kernel/cobalt/arch/arm/patches/ipipe-core-3.18.12-arm-4.patch index ea9675d..e6360b7 100644 --- a/kernel/cobalt/arch/arm/patches/ipipe-core-3.18.12-arm-3.patch +++ b/kernel/cobalt/arch/arm/patches/ipipe-core-3.18.12-arm-4.patch @@ -1651,7 +1651,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 000..4701f8d +index 000..3c73753 --- /dev/null +++ b/arch/arm/include/asm/ipipe.h @@ -0,0 +1,272 @@ @@ -1699,7 +1699,7 @@ index 000..4701f8d +#include +#include + -+#define IPIPE_CORE_RELEASE3 ++#define IPIPE_CORE_RELEASE4 + +struct ipipe_domain; + @@ -2923,7 +2923,7 @@ index 000..6579eec + +#endif diff --git a/arch/arm/include/asm/setup.h b/arch/arm/include/asm/setup.h -index e0adb9f..f024d86 100644 +index e0adb9f..5876f4b 100644 --- a/arch/arm/include/asm/setup.h +++ b/arch/arm/include/asm/setup.h @@ -25,4 +25,10 @@ extern int arm_add_memory(u64 start, u64 size); @@ -2931,7 +2931,7 @@ index e0adb9f..f024d86 100644 extern void dump_machine_table(void); +#ifdef CONFIG_IPIPE -+void __init smp_build_cpu_revmap(void); ++void smp_build_cpu_revmap(void); +#else +static inline void smp_build_cpu_revmap(void) { } +#endif @@ -17772,7 +17772,7 @@ index 000..797a849 +} diff --git a/kernel/ipipe/core.c b/kernel/ipipe/core.c new file mode 100644 -index 000..b8eb85c +index 000..fba38fa --- /dev/null +++ b/kernel/ipipe/core.c @@ -0,0 +1,1890 @@ @@ -19030,7 +19030,7 @@ index 000..b8eb85c + * handling interrupts: + * + * a) the root domain is alone, no registered head domain -+ * => all interrupts are delivered via the fast dispatcher. ++ * => all interrupts go through the interrupt log + * b) a head domain is registered + * => head domain IRQs go through the fast dispatcher + * => root domain IRQs go through the interrupt log ___ Xenomai-git mailing list Xenomai-git@xenomai.org https://xenomai.org/mailman/listinfo/xenomai-git
[Xenomai-git] Philippe Gerum : cobalt/arm: upgrade I-pipe support
Module: xenomai-3 Branch: refs/tags/v3.0.2 Commit: 5c286f8393ce69db2e3d7ff6d7673f0b65202734 URL: http://git.xenomai.org/?p=xenomai-3.git;a=commit;h=5c286f8393ce69db2e3d7ff6d7673f0b65202734 Author: Philippe GerumDate: Mon Mar 28 16:10:55 2016 +0200 cobalt/arm: upgrade I-pipe support --- ...8-arm-3.patch => ipipe-core-4.1.18-arm-4.patch} | 69 +++- 1 file changed, 53 insertions(+), 16 deletions(-) diff --git a/kernel/cobalt/arch/arm/patches/ipipe-core-4.1.18-arm-3.patch b/kernel/cobalt/arch/arm/patches/ipipe-core-4.1.18-arm-4.patch similarity index 99% rename from kernel/cobalt/arch/arm/patches/ipipe-core-4.1.18-arm-3.patch rename to kernel/cobalt/arch/arm/patches/ipipe-core-4.1.18-arm-4.patch index 01d0fce..f8e3c73 100644 --- a/kernel/cobalt/arch/arm/patches/ipipe-core-4.1.18-arm-3.patch +++ b/kernel/cobalt/arch/arm/patches/ipipe-core-4.1.18-arm-4.patch @@ -1635,7 +1635,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 000..eccfbcb +index 000..df05570 --- /dev/null +++ b/arch/arm/include/asm/ipipe.h @@ -0,0 +1,297 @@ @@ -1685,7 +1685,7 @@ index 000..eccfbcb +#include +#include + -+#define IPIPE_CORE_RELEASE3 ++#define IPIPE_CORE_RELEASE4 + +struct ipipe_domain; +struct timekeeper; @@ -6301,7 +6301,7 @@ index 0f04e30..ab12460 100644 int mx21_clocks_init(unsigned long lref, unsigned long fref); int mx27_clocks_init(unsigned long fref); diff --git a/arch/arm/mach-imx/gpc.c b/arch/arm/mach-imx/gpc.c -index 78b6fd0..711177f 100644 +index 78b6fd0..e8dc2f5 100644 --- a/arch/arm/mach-imx/gpc.c +++ b/arch/arm/mach-imx/gpc.c @@ -14,6 +14,7 @@ @@ -6391,30 +6391,29 @@ index 78b6fd0..711177f 100644 } void imx_gpc_hwirq_unmask(unsigned int hwirq) -@@ -159,16 +180,50 @@ void imx_gpc_hwirq_mask(unsigned int hwirq) +@@ -159,16 +180,49 @@ void imx_gpc_hwirq_mask(unsigned int hwirq) static void imx_gpc_irq_unmask(struct irq_data *d) { + unsigned long flags; + -+ raw_spin_lock_irqsave_cond(_lock, flags); ++ raw_spin_lock_irqsave(_lock, flags); imx_gpc_hwirq_unmask(d->hwirq); -+ raw_spin_unlock(_lock); ++ __ipipe_spin_unlock_irqbegin(_lock); irq_chip_unmask_parent(d); -+ /* Parent IC will handle virtual unlocking */ -+ hard_cond_local_irq_restore(flags); ++ __ipipe_spin_unlock_irqcomplete(flags); } static void imx_gpc_irq_mask(struct irq_data *d) { + unsigned long flags; + -+ raw_spin_lock_irqsave_cond(_lock, flags); ++ raw_spin_lock_irqsave(_lock, flags); + /* Parent IC will handle virtual locking */ imx_gpc_hwirq_mask(d->hwirq); -+ raw_spin_unlock(_lock); ++ __ipipe_spin_unlock_irqbegin(_lock); irq_chip_mask_parent(d); -+ hard_cond_local_irq_restore(flags); ++ __ipipe_spin_unlock_irqcomplete(flags); } +#ifdef CONFIG_IPIPE @@ -6442,7 +6441,7 @@ index 78b6fd0..711177f 100644 static struct irq_chip imx_gpc_chip = { .name = "GPC", .irq_eoi= irq_chip_eoi_parent, -@@ -179,6 +234,10 @@ static struct irq_chip imx_gpc_chip = { +@@ -179,6 +233,10 @@ static struct irq_chip imx_gpc_chip = { #ifdef CONFIG_SMP .irq_set_affinity = irq_chip_set_affinity_parent, #endif @@ -8993,15 +8992,30 @@ index 9769f1e..c3a4a6f 100644 set_cr(cr_no_alignment); } diff --git a/arch/arm/mm/cache-l2x0.c b/arch/arm/mm/cache-l2x0.c -index e309c8f..ec1f240 100644 +index e309c8f..7053f1b 100644 --- a/arch/arm/mm/cache-l2x0.c +++ b/arch/arm/mm/cache-l2x0.c -@@ -47,9 +47,15 @@ struct l2c_init_data { +@@ -23,6 +23,7 @@ + #include + #include + #include ++#include + #include + #include + +@@ -47,9 +48,22 @@ struct l2c_init_data { #define CACHE_LINE_SIZE 32 +#ifdef CONFIG_IPIPE +#define CACHE_RANGE_ATOMIC_MAX512UL ++static int l2x0_wa = -1; ++static int __init l2x0_setup_wa(char *str) ++{ ++ l2x0_wa = !!simple_strtol(str, NULL, 0); ++ return 0; ++} ++early_param("l2x0_write_allocate", l2x0_setup_wa); +#else +#define CACHE_RANGE_ATOMIC_MAX4096UL +#endif @@ -9013,7 +9027,7 @@ index e309c8f..ec1f240 100644 static u32 l2x0_way_mask; /* Bitmask of active ways */ static u32 l2x0_size; static unsigned long sync_reg_offset = L2X0_CACHE_SYNC; -@@ -292,10 +298,10 @@ static void l2c220_op_way(void __iomem *base, unsigned reg) +@@ -292,10 +306,10 @@ static void l2c220_op_way(void __iomem *base, unsigned reg) static unsigned long l2c220_op_pa_range(void __iomem *reg, unsigned long start, unsigned long end, unsigned long flags) { @@ -9026,7 +9040,7 @@ index e309c8f..ec1f240 100644 while (start < blk_end) { l2c_wait_mask(reg, 1); -@@
[Xenomai-git] Philippe Gerum : cobalt/arm: upgrade I-pipe support
Module: xenomai-3 Branch: stable-3.0.x Commit: 5c286f8393ce69db2e3d7ff6d7673f0b65202734 URL: http://git.xenomai.org/?p=xenomai-3.git;a=commit;h=5c286f8393ce69db2e3d7ff6d7673f0b65202734 Author: Philippe GerumDate: Mon Mar 28 16:10:55 2016 +0200 cobalt/arm: upgrade I-pipe support --- ...8-arm-3.patch => ipipe-core-4.1.18-arm-4.patch} | 69 +++- 1 file changed, 53 insertions(+), 16 deletions(-) diff --git a/kernel/cobalt/arch/arm/patches/ipipe-core-4.1.18-arm-3.patch b/kernel/cobalt/arch/arm/patches/ipipe-core-4.1.18-arm-4.patch similarity index 99% rename from kernel/cobalt/arch/arm/patches/ipipe-core-4.1.18-arm-3.patch rename to kernel/cobalt/arch/arm/patches/ipipe-core-4.1.18-arm-4.patch index 01d0fce..f8e3c73 100644 --- a/kernel/cobalt/arch/arm/patches/ipipe-core-4.1.18-arm-3.patch +++ b/kernel/cobalt/arch/arm/patches/ipipe-core-4.1.18-arm-4.patch @@ -1635,7 +1635,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 000..eccfbcb +index 000..df05570 --- /dev/null +++ b/arch/arm/include/asm/ipipe.h @@ -0,0 +1,297 @@ @@ -1685,7 +1685,7 @@ index 000..eccfbcb +#include +#include + -+#define IPIPE_CORE_RELEASE3 ++#define IPIPE_CORE_RELEASE4 + +struct ipipe_domain; +struct timekeeper; @@ -6301,7 +6301,7 @@ index 0f04e30..ab12460 100644 int mx21_clocks_init(unsigned long lref, unsigned long fref); int mx27_clocks_init(unsigned long fref); diff --git a/arch/arm/mach-imx/gpc.c b/arch/arm/mach-imx/gpc.c -index 78b6fd0..711177f 100644 +index 78b6fd0..e8dc2f5 100644 --- a/arch/arm/mach-imx/gpc.c +++ b/arch/arm/mach-imx/gpc.c @@ -14,6 +14,7 @@ @@ -6391,30 +6391,29 @@ index 78b6fd0..711177f 100644 } void imx_gpc_hwirq_unmask(unsigned int hwirq) -@@ -159,16 +180,50 @@ void imx_gpc_hwirq_mask(unsigned int hwirq) +@@ -159,16 +180,49 @@ void imx_gpc_hwirq_mask(unsigned int hwirq) static void imx_gpc_irq_unmask(struct irq_data *d) { + unsigned long flags; + -+ raw_spin_lock_irqsave_cond(_lock, flags); ++ raw_spin_lock_irqsave(_lock, flags); imx_gpc_hwirq_unmask(d->hwirq); -+ raw_spin_unlock(_lock); ++ __ipipe_spin_unlock_irqbegin(_lock); irq_chip_unmask_parent(d); -+ /* Parent IC will handle virtual unlocking */ -+ hard_cond_local_irq_restore(flags); ++ __ipipe_spin_unlock_irqcomplete(flags); } static void imx_gpc_irq_mask(struct irq_data *d) { + unsigned long flags; + -+ raw_spin_lock_irqsave_cond(_lock, flags); ++ raw_spin_lock_irqsave(_lock, flags); + /* Parent IC will handle virtual locking */ imx_gpc_hwirq_mask(d->hwirq); -+ raw_spin_unlock(_lock); ++ __ipipe_spin_unlock_irqbegin(_lock); irq_chip_mask_parent(d); -+ hard_cond_local_irq_restore(flags); ++ __ipipe_spin_unlock_irqcomplete(flags); } +#ifdef CONFIG_IPIPE @@ -6442,7 +6441,7 @@ index 78b6fd0..711177f 100644 static struct irq_chip imx_gpc_chip = { .name = "GPC", .irq_eoi= irq_chip_eoi_parent, -@@ -179,6 +234,10 @@ static struct irq_chip imx_gpc_chip = { +@@ -179,6 +233,10 @@ static struct irq_chip imx_gpc_chip = { #ifdef CONFIG_SMP .irq_set_affinity = irq_chip_set_affinity_parent, #endif @@ -8993,15 +8992,30 @@ index 9769f1e..c3a4a6f 100644 set_cr(cr_no_alignment); } diff --git a/arch/arm/mm/cache-l2x0.c b/arch/arm/mm/cache-l2x0.c -index e309c8f..ec1f240 100644 +index e309c8f..7053f1b 100644 --- a/arch/arm/mm/cache-l2x0.c +++ b/arch/arm/mm/cache-l2x0.c -@@ -47,9 +47,15 @@ struct l2c_init_data { +@@ -23,6 +23,7 @@ + #include + #include + #include ++#include + #include + #include + +@@ -47,9 +48,22 @@ struct l2c_init_data { #define CACHE_LINE_SIZE 32 +#ifdef CONFIG_IPIPE +#define CACHE_RANGE_ATOMIC_MAX512UL ++static int l2x0_wa = -1; ++static int __init l2x0_setup_wa(char *str) ++{ ++ l2x0_wa = !!simple_strtol(str, NULL, 0); ++ return 0; ++} ++early_param("l2x0_write_allocate", l2x0_setup_wa); +#else +#define CACHE_RANGE_ATOMIC_MAX4096UL +#endif @@ -9013,7 +9027,7 @@ index e309c8f..ec1f240 100644 static u32 l2x0_way_mask; /* Bitmask of active ways */ static u32 l2x0_size; static unsigned long sync_reg_offset = L2X0_CACHE_SYNC; -@@ -292,10 +298,10 @@ static void l2c220_op_way(void __iomem *base, unsigned reg) +@@ -292,10 +306,10 @@ static void l2c220_op_way(void __iomem *base, unsigned reg) static unsigned long l2c220_op_pa_range(void __iomem *reg, unsigned long start, unsigned long end, unsigned long flags) { @@ -9026,7 +9040,7 @@ index e309c8f..ec1f240 100644 while (start < blk_end) { l2c_wait_mask(reg, 1); -@@ -498,13
[Xenomai-git] Philippe Gerum : cobalt/arm: upgrade I-pipe support
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 GerumDate: 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 000..c7704e8 +index 000..a1737b1 --- /dev/null +++ b/arch/arm/include/asm/ipipe.h @@ -0,0 +1,274 @@ @@ -1140,7 +1140,7 @@ index 000..c7704e8 +#include +#include + -+#define IPIPE_CORE_RELEASE11 ++#define IPIPE_CORE_RELEASE13 + +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 #include -@@ -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, 0x7fff); -@@ -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 000..2746906 +#endif diff --git a/kernel/ipipe/timer.c b/kernel/ipipe/timer.c new file mode 100644 -index 000..0c9b908 +index 000..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 000..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;
[Xenomai-git] Philippe Gerum : cobalt/arm: upgrade I-pipe support
Module: xenomai-3 Branch: stable-3.0.x Commit: 5f57eb3f4dc868f064cbe90d0415b55e79f55c96 URL: http://git.xenomai.org/?p=xenomai-3.git;a=commit;h=5f57eb3f4dc868f064cbe90d0415b55e79f55c96 Author: Philippe GerumDate: Thu Mar 24 11:59:35 2016 +0100 cobalt/arm: upgrade I-pipe support --- ...8-arm-2.patch => ipipe-core-4.1.18-arm-3.patch} | 45 +++- 1 file changed, 16 insertions(+), 29 deletions(-) diff --git a/kernel/cobalt/arch/arm/patches/ipipe-core-4.1.18-arm-2.patch b/kernel/cobalt/arch/arm/patches/ipipe-core-4.1.18-arm-3.patch similarity index 99% rename from kernel/cobalt/arch/arm/patches/ipipe-core-4.1.18-arm-2.patch rename to kernel/cobalt/arch/arm/patches/ipipe-core-4.1.18-arm-3.patch index 7c5aaff..01d0fce 100644 --- a/kernel/cobalt/arch/arm/patches/ipipe-core-4.1.18-arm-2.patch +++ b/kernel/cobalt/arch/arm/patches/ipipe-core-4.1.18-arm-3.patch @@ -1635,7 +1635,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 000..77969f4 +index 000..eccfbcb --- /dev/null +++ b/arch/arm/include/asm/ipipe.h @@ -0,0 +1,297 @@ @@ -1685,7 +1685,7 @@ index 000..77969f4 +#include +#include + -+#define IPIPE_CORE_RELEASE2 ++#define IPIPE_CORE_RELEASE3 + +struct ipipe_domain; +struct timekeeper; @@ -4277,7 +4277,7 @@ index 000..ffe02fe +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 000..d122b39 +index 000..aa9571e --- /dev/null +++ b/arch/arm/kernel/ipipe_tsc.c @@ -0,0 +1,214 @@ @@ -4409,7 +4409,7 @@ index 000..d122b39 + + 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(); + } @@ -4446,8 +4446,8 @@ index 000..d122b39 + + wrap_ms *= HZ / 2; + do_div(wrap_ms, 1000); -+ if (wrap_ms > 0x) -+ wrap_ms = 0x; ++ if (wrap_ms > 0x7fff) ++ wrap_ms = 0x7fff; + ipipe_tsc_update_timer.data = wrap_ms; + ipipe_tsc_update_timer.function = __ipipe_tsc_update_fn; + mod_timer(_tsc_update_timer, @@ -10738,7 +10738,7 @@ index f6e4d56..e2904aa 100644 /* diff --git a/drivers/clocksource/arm_arch_timer.c b/drivers/clocksource/arm_arch_timer.c -index 0aa135d..b13608c 100644 +index 0aa135d..c48e8f7 100644 --- a/drivers/clocksource/arm_arch_timer.c +++ b/drivers/clocksource/arm_arch_timer.c @@ -17,6 +17,8 @@ @@ -10760,7 +10760,7 @@ index 0aa135d..b13608c 100644 { unsigned long ctrl; -@@ -146,6 +147,49 @@ static __always_inline irqreturn_t timer_handler(const int access, +@@ -146,6 +147,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); @@ -10806,11 +10806,14 @@ index 0aa135d..b13608c 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; } -@@ -157,28 +201,28 @@ static irqreturn_t arch_timer_handler_virt(int irq, void *dev_id) +@@ -157,28 +204,28 @@ static irqreturn_t arch_timer_handler_virt(int irq, void *dev_id) { struct clock_event_device *evt = dev_id; @@ -10843,7 +10846,7 @@ index 0aa135d..b13608c 100644 } static __always_inline void timer_set_mode(const int access, int mode, -@@ -280,6 +324,18 @@ static void __arch_timer_setup(unsigned type, +@@ -280,6 +327,18 @@ static void __arch_timer_setup(unsigned type, clk->set_mode = arch_timer_set_mode_phys; clk->set_next_event = arch_timer_set_next_event_phys; } @@ -10862,21 +10865,17 @@ index 0aa135d..b13608c 100644 } else { clk->features |= CLOCK_EVT_FEAT_DYNIRQ; clk->name = "arch_mem_timer"; -@@ -342,6 +398,13 @@ static void arch_counter_set_user_access(void) +@@ -342,6 +401,9 @@ static void arch_counter_set_user_access(void) /* Enable user access to the virtual counter */ cntkctl |= ARCH_TIMER_USR_VCT_ACCESS_EN; +#ifdef CONFIG_IPIPE + cntkctl |= ARCH_TIMER_USR_PCT_ACCESS_EN; +#endif -+ -+#ifdef CONFIG_IPIPE -+ cntkctl |= ARCH_TIMER_USR_PCT_ACCESS_EN; -+#endif arch_timer_set_cntkctl(cntkctl); } -@@ -483,6 +546,11 @@ static void
[Xenomai-git] Philippe Gerum : cobalt/arm: upgrade I-pipe support
Module: xenomai-3 Branch: wip/prioceil Commit: 31c62a9ebf6c2e6b6642a4134eaeb56a7db09890 URL: http://git.xenomai.org/?p=xenomai-3.git;a=commit;h=31c62a9ebf6c2e6b6642a4134eaeb56a7db09890 Author: Philippe GerumDate: Sun Mar 13 12:06:51 2016 +0100 cobalt/arm: upgrade I-pipe support --- ...rm-10.patch => ipipe-core-3.10.32-arm-11.patch} | 106 +++ ...rm-12.patch => ipipe-core-3.14.44-arm-15.patch} | 197 +--- ...-arm-6.patch => ipipe-core-3.18.20-arm-8.patch} | 71 --- ...8-arm-1.patch => ipipe-core-4.1.18-arm-2.patch} | 45 ++--- 4 files changed, 262 insertions(+), 157 deletions(-) diff --git a/kernel/cobalt/arch/arm/patches/ipipe-core-3.10.32-arm-10.patch b/kernel/cobalt/arch/arm/patches/ipipe-core-3.10.32-arm-11.patch similarity index 99% rename from kernel/cobalt/arch/arm/patches/ipipe-core-3.10.32-arm-10.patch rename to kernel/cobalt/arch/arm/patches/ipipe-core-3.10.32-arm-11.patch index 5ff3658..092b67d 100644 --- a/kernel/cobalt/arch/arm/patches/ipipe-core-3.10.32-arm-10.patch +++ b/kernel/cobalt/arch/arm/patches/ipipe-core-3.10.32-arm-11.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 000..7599b0d +index 000..c7704e8 --- /dev/null +++ b/arch/arm/include/asm/ipipe.h @@ -0,0 +1,274 @@ @@ -1140,7 +1140,7 @@ index 000..7599b0d +#include +#include + -+#define IPIPE_CORE_RELEASE10 ++#define IPIPE_CORE_RELEASE11 + +struct ipipe_domain; + @@ -3712,10 +3712,10 @@ index 000..5b77cfb +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 000..fa2d382 +index 000..f04e048 --- /dev/null +++ b/arch/arm/kernel/ipipe_tsc.c -@@ -0,0 +1,179 @@ +@@ -0,0 +1,181 @@ +#include +#include +#include @@ -3858,6 +3858,8 @@ index 000..fa2d382 + __clocksource_updatefreq_hz(, tsc_info.freq); + + __ipipe_kuser_tsc_freq = tsc_info.freq; ++ ++ __ipipe_tracer_hrclock_initialized(); +} + +void __ipipe_mach_get_tscinfo(struct __ipipe_tscinfo *info) @@ -11051,7 +11053,7 @@ index 8ea3b33..1079825 100644 } diff --git a/drivers/irqchip/irq-gic.c b/drivers/irqchip/irq-gic.c -index 19ceaa6..d56f20a 100644 +index 19ceaa6..16c312a 100644 --- a/drivers/irqchip/irq-gic.c +++ b/drivers/irqchip/irq-gic.c @@ -41,6 +41,7 @@ @@ -11071,12 +11073,10 @@ index 19ceaa6..d56f20a 100644 /* * The GIC mapping of CPU interfaces does not necessarily match -@@ -153,37 +154,74 @@ static inline unsigned int gic_irq(struct irq_data *d) - */ +@@ -154,36 +155,73 @@ static inline unsigned int gic_irq(struct irq_data *d) static void gic_mask_irq(struct irq_data *d) { -- u32 mask = 1 << (gic_irq(d) % 32); -+ u32 mask = 1 << (d->irq % 32); + u32 mask = 1 << (gic_irq(d) % 32); + unsigned long flags; - raw_spin_lock(_controller_lock); @@ -11091,8 +11091,7 @@ index 19ceaa6..d56f20a 100644 static void gic_unmask_irq(struct irq_data *d) { -- u32 mask = 1 << (gic_irq(d) % 32); -+ u32 mask = 1 << (d->irq % 32); + u32 mask = 1 << (gic_irq(d) % 32); + unsigned long flags; - raw_spin_lock(_controller_lock); @@ -8,14 +7,14 @@ index 19ceaa6..d56f20a 100644 + raw_spin_unlock_irqrestore_cond(_controller_lock, flags); + writel_relaxed(gic_irq(d), gic_cpu_base(d) + GIC_CPU_EOI); +} -+ + +#ifdef CONFIG_IPIPE + +static void gic_hold_irq(struct irq_data *d) +{ -+ u32 mask = 1 << (d->irq % 32); ++ u32 mask = 1 << (gic_irq(d) % 32); + unsigned long flags; - ++ + raw_spin_lock_irqsave_cond(_controller_lock, flags); + writel_relaxed(mask, gic_dist_base(d) + GIC_DIST_ENABLE_CLEAR + (gic_irq(d) / 32) * 4); + if (gic_arch_extn.irq_mask) @@ -11139,7 +11138,7 @@ index 19ceaa6..d56f20a 100644 + +static void gic_release_irq(struct irq_data *d) +{ -+ u32 mask = 1 << (d->irq % 32); ++ u32 mask = 1 << (gic_irq(d) % 32); + unsigned long flags; + + raw_spin_lock_irqsave_cond(_controller_lock, flags); @@ -11984,10 +11983,10 @@ index e6bb36a..898a91a 100644 diff --git a/include/linux/ipipe.h b/include/linux/ipipe.h new file mode 100644 -index 000..525f3cf +index 000..4ef7e3d --- /dev/null +++ b/include/linux/ipipe.h -@@ -0,0 +1,443 @@ +@@ -0,0 +1,449 @@ +/* -*- linux-c -*- + * include/linux/ipipe.h + * @@ -12394,6 +12393,12 @@ index 000..525f3cf +#define __ipipe_uaccess_might_fault() might_fault() +#endif + ++#ifdef CONFIG_IPIPE_TRACE ++void __ipipe_tracer_hrclock_initialized(void); ++#else /* !CONFIG_IPIPE_TRACE */ ++#define __ipipe_tracer_hrclock_initialized() do { } while(0) ++#endif /* !CONFIG_IPIPE_TRACE */ ++ +#include + +#else /* !CONFIG_IPIPE */ @@
[Xenomai-git] Philippe Gerum : cobalt/arm: upgrade I-pipe support
Module: xenomai-3 Branch: stable-3.0.x Commit: 31c62a9ebf6c2e6b6642a4134eaeb56a7db09890 URL: http://git.xenomai.org/?p=xenomai-3.git;a=commit;h=31c62a9ebf6c2e6b6642a4134eaeb56a7db09890 Author: Philippe GerumDate: Sun Mar 13 12:06:51 2016 +0100 cobalt/arm: upgrade I-pipe support --- ...rm-10.patch => ipipe-core-3.10.32-arm-11.patch} | 106 +++ ...rm-12.patch => ipipe-core-3.14.44-arm-15.patch} | 197 +--- ...-arm-6.patch => ipipe-core-3.18.20-arm-8.patch} | 71 --- ...8-arm-1.patch => ipipe-core-4.1.18-arm-2.patch} | 45 ++--- 4 files changed, 262 insertions(+), 157 deletions(-) diff --git a/kernel/cobalt/arch/arm/patches/ipipe-core-3.10.32-arm-10.patch b/kernel/cobalt/arch/arm/patches/ipipe-core-3.10.32-arm-11.patch similarity index 99% rename from kernel/cobalt/arch/arm/patches/ipipe-core-3.10.32-arm-10.patch rename to kernel/cobalt/arch/arm/patches/ipipe-core-3.10.32-arm-11.patch index 5ff3658..092b67d 100644 --- a/kernel/cobalt/arch/arm/patches/ipipe-core-3.10.32-arm-10.patch +++ b/kernel/cobalt/arch/arm/patches/ipipe-core-3.10.32-arm-11.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 000..7599b0d +index 000..c7704e8 --- /dev/null +++ b/arch/arm/include/asm/ipipe.h @@ -0,0 +1,274 @@ @@ -1140,7 +1140,7 @@ index 000..7599b0d +#include +#include + -+#define IPIPE_CORE_RELEASE10 ++#define IPIPE_CORE_RELEASE11 + +struct ipipe_domain; + @@ -3712,10 +3712,10 @@ index 000..5b77cfb +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 000..fa2d382 +index 000..f04e048 --- /dev/null +++ b/arch/arm/kernel/ipipe_tsc.c -@@ -0,0 +1,179 @@ +@@ -0,0 +1,181 @@ +#include +#include +#include @@ -3858,6 +3858,8 @@ index 000..fa2d382 + __clocksource_updatefreq_hz(, tsc_info.freq); + + __ipipe_kuser_tsc_freq = tsc_info.freq; ++ ++ __ipipe_tracer_hrclock_initialized(); +} + +void __ipipe_mach_get_tscinfo(struct __ipipe_tscinfo *info) @@ -11051,7 +11053,7 @@ index 8ea3b33..1079825 100644 } diff --git a/drivers/irqchip/irq-gic.c b/drivers/irqchip/irq-gic.c -index 19ceaa6..d56f20a 100644 +index 19ceaa6..16c312a 100644 --- a/drivers/irqchip/irq-gic.c +++ b/drivers/irqchip/irq-gic.c @@ -41,6 +41,7 @@ @@ -11071,12 +11073,10 @@ index 19ceaa6..d56f20a 100644 /* * The GIC mapping of CPU interfaces does not necessarily match -@@ -153,37 +154,74 @@ static inline unsigned int gic_irq(struct irq_data *d) - */ +@@ -154,36 +155,73 @@ static inline unsigned int gic_irq(struct irq_data *d) static void gic_mask_irq(struct irq_data *d) { -- u32 mask = 1 << (gic_irq(d) % 32); -+ u32 mask = 1 << (d->irq % 32); + u32 mask = 1 << (gic_irq(d) % 32); + unsigned long flags; - raw_spin_lock(_controller_lock); @@ -11091,8 +11091,7 @@ index 19ceaa6..d56f20a 100644 static void gic_unmask_irq(struct irq_data *d) { -- u32 mask = 1 << (gic_irq(d) % 32); -+ u32 mask = 1 << (d->irq % 32); + u32 mask = 1 << (gic_irq(d) % 32); + unsigned long flags; - raw_spin_lock(_controller_lock); @@ -8,14 +7,14 @@ index 19ceaa6..d56f20a 100644 + raw_spin_unlock_irqrestore_cond(_controller_lock, flags); + writel_relaxed(gic_irq(d), gic_cpu_base(d) + GIC_CPU_EOI); +} -+ + +#ifdef CONFIG_IPIPE + +static void gic_hold_irq(struct irq_data *d) +{ -+ u32 mask = 1 << (d->irq % 32); ++ u32 mask = 1 << (gic_irq(d) % 32); + unsigned long flags; - ++ + raw_spin_lock_irqsave_cond(_controller_lock, flags); + writel_relaxed(mask, gic_dist_base(d) + GIC_DIST_ENABLE_CLEAR + (gic_irq(d) / 32) * 4); + if (gic_arch_extn.irq_mask) @@ -11139,7 +11138,7 @@ index 19ceaa6..d56f20a 100644 + +static void gic_release_irq(struct irq_data *d) +{ -+ u32 mask = 1 << (d->irq % 32); ++ u32 mask = 1 << (gic_irq(d) % 32); + unsigned long flags; + + raw_spin_lock_irqsave_cond(_controller_lock, flags); @@ -11984,10 +11983,10 @@ index e6bb36a..898a91a 100644 diff --git a/include/linux/ipipe.h b/include/linux/ipipe.h new file mode 100644 -index 000..525f3cf +index 000..4ef7e3d --- /dev/null +++ b/include/linux/ipipe.h -@@ -0,0 +1,443 @@ +@@ -0,0 +1,449 @@ +/* -*- linux-c -*- + * include/linux/ipipe.h + * @@ -12394,6 +12393,12 @@ index 000..525f3cf +#define __ipipe_uaccess_might_fault() might_fault() +#endif + ++#ifdef CONFIG_IPIPE_TRACE ++void __ipipe_tracer_hrclock_initialized(void); ++#else /* !CONFIG_IPIPE_TRACE */ ++#define __ipipe_tracer_hrclock_initialized() do { } while(0) ++#endif /* !CONFIG_IPIPE_TRACE */ ++ +#include + +#else /* !CONFIG_IPIPE */ @@
[Xenomai-git] Philippe Gerum : cobalt/arm: upgrade I-pipe support
Module: xenomai-3 Branch: wip/dovetail Commit: 6b01589f714663dd645bf3243ea934a767ac0d12 URL: http://git.xenomai.org/?p=xenomai-3.git;a=commit;h=6b01589f714663dd645bf3243ea934a767ac0d12 Author: Philippe GerumDate: Mon Feb 29 10:10:20 2016 +0100 cobalt/arm: upgrade I-pipe support --- .../arch/arm/patches/ipipe-core-4.1.18-arm-1.patch |23942 1 file changed, 23942 insertions(+) Diff: http://git.xenomai.org/?p=xenomai-3.git;a=commitdiff;h=6b01589f714663dd645bf3243ea934a767ac0d12 ___ Xenomai-git mailing list Xenomai-git@xenomai.org https://xenomai.org/mailman/listinfo/xenomai-git
[Xenomai-git] Philippe Gerum : cobalt/arm: upgrade I-pipe support
Module: xenomai-3 Branch: wip/prioceil Commit: d43c70baccf2feac65730d11698083db2d152f80 URL: http://git.xenomai.org/?p=xenomai-3.git;a=commit;h=d43c70baccf2feac65730d11698083db2d152f80 Author: Philippe GerumDate: Mon Feb 29 10:10:20 2016 +0100 cobalt/arm: upgrade I-pipe support --- .../arch/arm/patches/ipipe-core-4.1.18-arm-1.patch |23942 1 file changed, 23942 insertions(+) Diff: http://git.xenomai.org/?p=xenomai-3.git;a=commitdiff;h=d43c70baccf2feac65730d11698083db2d152f80 ___ Xenomai-git mailing list Xenomai-git@xenomai.org https://xenomai.org/mailman/listinfo/xenomai-git
[Xenomai-git] Philippe Gerum : cobalt/arm: upgrade I-pipe support
Module: xenomai-3 Branch: stable-3.0.x Commit: d43c70baccf2feac65730d11698083db2d152f80 URL: http://git.xenomai.org/?p=xenomai-3.git;a=commit;h=d43c70baccf2feac65730d11698083db2d152f80 Author: Philippe GerumDate: Mon Feb 29 10:10:20 2016 +0100 cobalt/arm: upgrade I-pipe support --- .../arch/arm/patches/ipipe-core-4.1.18-arm-1.patch |23942 1 file changed, 23942 insertions(+) Diff: http://git.xenomai.org/?p=xenomai-3.git;a=commitdiff;h=d43c70baccf2feac65730d11698083db2d152f80 ___ Xenomai-git mailing list Xenomai-git@xenomai.org http://xenomai.org/mailman/listinfo/xenomai-git
[Xenomai-git] Philippe Gerum : cobalt/arm: upgrade I-pipe support
Module: xenomai-3 Branch: arm64 Commit: cdd4d58892b456cf18a122329f21a5bd6d40c54e URL: http://git.xenomai.org/?p=xenomai-3.git;a=commit;h=cdd4d58892b456cf18a122329f21a5bd6d40c54e Author: Philippe GerumDate: Tue Oct 6 15:38:27 2015 +0200 cobalt/arm: upgrade I-pipe support --- ...-arm-5.patch => ipipe-core-3.18.20-arm-6.patch} | 134 +--- 1 file changed, 86 insertions(+), 48 deletions(-) diff --git a/kernel/cobalt/arch/arm/patches/ipipe-core-3.18.20-arm-5.patch b/kernel/cobalt/arch/arm/patches/ipipe-core-3.18.20-arm-6.patch similarity index 99% rename from kernel/cobalt/arch/arm/patches/ipipe-core-3.18.20-arm-5.patch rename to kernel/cobalt/arch/arm/patches/ipipe-core-3.18.20-arm-6.patch index 6bded0c..073b2a7 100644 --- a/kernel/cobalt/arch/arm/patches/ipipe-core-3.18.20-arm-5.patch +++ b/kernel/cobalt/arch/arm/patches/ipipe-core-3.18.20-arm-6.patch @@ -159,17 +159,18 @@ index 38c89ca..7c954bc 100644 # Keep at91 dtb files sorted alphabetically for each SoC diff --git a/arch/arm/boot/dts/imx6qdl.dtsi b/arch/arm/boot/dts/imx6qdl.dtsi -index 9596ed5..3e7a4a3 100644 +index 9596ed5..8957633e 100644 --- a/arch/arm/boot/dts/imx6qdl.dtsi +++ b/arch/arm/boot/dts/imx6qdl.dtsi -@@ -125,6 +125,12 @@ +@@ -125,6 +125,13 @@ clocks = < IMX6QDL_CLK_TWD>; }; + timer@00a00200 { + compatible = "arm,cortex-a9-global-timer"; + reg = <0x00a00200 0x20>; -+ clocks = < 15>; ++ interrupts = <1 11 0xf01>; ++ clocks = < IMX6QDL_CLK_TWD>; + }; + L2: l2-cache@00a02000 { @@ -690,10 +691,10 @@ index 000..19b50df + power = <50>; +}; diff --git a/arch/arm/boot/dts/omap4.dtsi b/arch/arm/boot/dts/omap4.dtsi -index 878c979..aae32e6 100644 +index 878c979..dc2450d 100644 --- a/arch/arm/boot/dts/omap4.dtsi +++ b/arch/arm/boot/dts/omap4.dtsi -@@ -72,6 +72,12 @@ +@@ -72,6 +72,13 @@ interrupts = ; }; @@ -701,6 +702,7 @@ index 878c979..aae32e6 100644 + compatible = "arm,cortex-a9-global-timer"; + reg = <0x48240200 0x20>; + clocks = <_periphclk>; ++ interrupts = ; + }; + /* @@ -1651,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 000..5c7e9bd +index 000..76c7b6b --- /dev/null +++ b/arch/arm/include/asm/ipipe.h @@ -0,0 +1,272 @@ @@ -1699,7 +1701,7 @@ index 000..5c7e9bd +#include +#include + -+#define IPIPE_CORE_RELEASE5 ++#define IPIPE_CORE_RELEASE6 + +struct ipipe_domain; + @@ -3717,6 +3719,19 @@ index 4176df7..8451be2 100644 /* * These are the registers used in the syscall handler, and allow us to * have in theory up to 7 arguments to a function - r0 to r6. +diff --git a/arch/arm/kernel/hibernate.c b/arch/arm/kernel/hibernate.c +index cfb354f..d11d476 100644 +--- a/arch/arm/kernel/hibernate.c b/arch/arm/kernel/hibernate.c +@@ -83,7 +83,7 @@ static void notrace arch_restore_image(void *unused) + { + struct pbe *pbe; + +- cpu_switch_mm(idmap_pgd, _mm); ++ cpu_switch_mm(idmap_pgd, _mm, 1); + for (pbe = restore_pblist; pbe; pbe = pbe->next) + copy_page(pbe->orig_address, pbe->address); + diff --git a/arch/arm/kernel/ipipe.c b/arch/arm/kernel/ipipe.c new file mode 100644 index 000..9577fbb @@ -4285,10 +4300,10 @@ index 000..9577fbb +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 000..f0cfd86 +index 000..4a87f0c --- /dev/null +++ b/arch/arm/kernel/ipipe_tsc.c -@@ -0,0 +1,201 @@ +@@ -0,0 +1,203 @@ +#include +#include +#include @@ -4456,6 +4471,8 @@ index 000..f0cfd86 + ipipe_tsc_update_timer.function = __ipipe_tsc_update_fn; + mod_timer(_tsc_update_timer, + jiffies + ipipe_tsc_update_timer.data); ++ ++ __ipipe_tracer_hrclock_initialized(); +} + +void __ipipe_mach_get_tscinfo(struct __ipipe_tscinfo *info) @@ -4969,7 +4986,7 @@ index bd19834..c49e067 100644 } while (thread_flags & _TIF_WORK_MASK); return 0; diff --git a/arch/arm/kernel/smp.c b/arch/arm/kernel/smp.c -index a8e32aa..bd81cc5 100644 +index a8e32aa..4939e05 100644 --- a/arch/arm/kernel/smp.c +++ b/arch/arm/kernel/smp.c @@ -72,8 +72,24 @@ enum ipi_msg_type { @@ -5016,18 +5033,16 @@ index a8e32aa..bd81cc5 100644 /* * All kernel threads share the same mm context; grab a -@@ -514,6 +537,93 @@ void arch_irq_work_raise(void) +@@ -514,6 +537,91 @@ void arch_irq_work_raise(void) #endif #ifdef CONFIG_GENERIC_CLOCKEVENTS_BROADCAST + +static inline void ipi_timer(void) +{
[Xenomai-git] Philippe Gerum : cobalt/arm: upgrade I-pipe support
Module: xenomai-3 Branch: master Commit: cdd4d58892b456cf18a122329f21a5bd6d40c54e URL: http://git.xenomai.org/?p=xenomai-3.git;a=commit;h=cdd4d58892b456cf18a122329f21a5bd6d40c54e Author: Philippe GerumDate: Tue Oct 6 15:38:27 2015 +0200 cobalt/arm: upgrade I-pipe support --- ...-arm-5.patch => ipipe-core-3.18.20-arm-6.patch} | 134 +--- 1 file changed, 86 insertions(+), 48 deletions(-) diff --git a/kernel/cobalt/arch/arm/patches/ipipe-core-3.18.20-arm-5.patch b/kernel/cobalt/arch/arm/patches/ipipe-core-3.18.20-arm-6.patch similarity index 99% rename from kernel/cobalt/arch/arm/patches/ipipe-core-3.18.20-arm-5.patch rename to kernel/cobalt/arch/arm/patches/ipipe-core-3.18.20-arm-6.patch index 6bded0c..073b2a7 100644 --- a/kernel/cobalt/arch/arm/patches/ipipe-core-3.18.20-arm-5.patch +++ b/kernel/cobalt/arch/arm/patches/ipipe-core-3.18.20-arm-6.patch @@ -159,17 +159,18 @@ index 38c89ca..7c954bc 100644 # Keep at91 dtb files sorted alphabetically for each SoC diff --git a/arch/arm/boot/dts/imx6qdl.dtsi b/arch/arm/boot/dts/imx6qdl.dtsi -index 9596ed5..3e7a4a3 100644 +index 9596ed5..8957633e 100644 --- a/arch/arm/boot/dts/imx6qdl.dtsi +++ b/arch/arm/boot/dts/imx6qdl.dtsi -@@ -125,6 +125,12 @@ +@@ -125,6 +125,13 @@ clocks = < IMX6QDL_CLK_TWD>; }; + timer@00a00200 { + compatible = "arm,cortex-a9-global-timer"; + reg = <0x00a00200 0x20>; -+ clocks = < 15>; ++ interrupts = <1 11 0xf01>; ++ clocks = < IMX6QDL_CLK_TWD>; + }; + L2: l2-cache@00a02000 { @@ -690,10 +691,10 @@ index 000..19b50df + power = <50>; +}; diff --git a/arch/arm/boot/dts/omap4.dtsi b/arch/arm/boot/dts/omap4.dtsi -index 878c979..aae32e6 100644 +index 878c979..dc2450d 100644 --- a/arch/arm/boot/dts/omap4.dtsi +++ b/arch/arm/boot/dts/omap4.dtsi -@@ -72,6 +72,12 @@ +@@ -72,6 +72,13 @@ interrupts = ; }; @@ -701,6 +702,7 @@ index 878c979..aae32e6 100644 + compatible = "arm,cortex-a9-global-timer"; + reg = <0x48240200 0x20>; + clocks = <_periphclk>; ++ interrupts = ; + }; + /* @@ -1651,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 000..5c7e9bd +index 000..76c7b6b --- /dev/null +++ b/arch/arm/include/asm/ipipe.h @@ -0,0 +1,272 @@ @@ -1699,7 +1701,7 @@ index 000..5c7e9bd +#include +#include + -+#define IPIPE_CORE_RELEASE5 ++#define IPIPE_CORE_RELEASE6 + +struct ipipe_domain; + @@ -3717,6 +3719,19 @@ index 4176df7..8451be2 100644 /* * These are the registers used in the syscall handler, and allow us to * have in theory up to 7 arguments to a function - r0 to r6. +diff --git a/arch/arm/kernel/hibernate.c b/arch/arm/kernel/hibernate.c +index cfb354f..d11d476 100644 +--- a/arch/arm/kernel/hibernate.c b/arch/arm/kernel/hibernate.c +@@ -83,7 +83,7 @@ static void notrace arch_restore_image(void *unused) + { + struct pbe *pbe; + +- cpu_switch_mm(idmap_pgd, _mm); ++ cpu_switch_mm(idmap_pgd, _mm, 1); + for (pbe = restore_pblist; pbe; pbe = pbe->next) + copy_page(pbe->orig_address, pbe->address); + diff --git a/arch/arm/kernel/ipipe.c b/arch/arm/kernel/ipipe.c new file mode 100644 index 000..9577fbb @@ -4285,10 +4300,10 @@ index 000..9577fbb +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 000..f0cfd86 +index 000..4a87f0c --- /dev/null +++ b/arch/arm/kernel/ipipe_tsc.c -@@ -0,0 +1,201 @@ +@@ -0,0 +1,203 @@ +#include +#include +#include @@ -4456,6 +4471,8 @@ index 000..f0cfd86 + ipipe_tsc_update_timer.function = __ipipe_tsc_update_fn; + mod_timer(_tsc_update_timer, + jiffies + ipipe_tsc_update_timer.data); ++ ++ __ipipe_tracer_hrclock_initialized(); +} + +void __ipipe_mach_get_tscinfo(struct __ipipe_tscinfo *info) @@ -4969,7 +4986,7 @@ index bd19834..c49e067 100644 } while (thread_flags & _TIF_WORK_MASK); return 0; diff --git a/arch/arm/kernel/smp.c b/arch/arm/kernel/smp.c -index a8e32aa..bd81cc5 100644 +index a8e32aa..4939e05 100644 --- a/arch/arm/kernel/smp.c +++ b/arch/arm/kernel/smp.c @@ -72,8 +72,24 @@ enum ipi_msg_type { @@ -5016,18 +5033,16 @@ index a8e32aa..bd81cc5 100644 /* * All kernel threads share the same mm context; grab a -@@ -514,6 +537,93 @@ void arch_irq_work_raise(void) +@@ -514,6 +537,91 @@ void arch_irq_work_raise(void) #endif #ifdef CONFIG_GENERIC_CLOCKEVENTS_BROADCAST + +static inline void ipi_timer(void) +{
[Xenomai-git] Philippe Gerum : cobalt/arm: upgrade I-pipe support
Module: xenomai-3 Branch: master Commit: 83fed7b72313dda3b6b5fd5bb5175fa25a7f9ad3 URL: http://git.xenomai.org/?p=xenomai-3.git;a=commit;h=83fed7b72313dda3b6b5fd5bb5175fa25a7f9ad3 Author: Philippe GerumDate: Tue Sep 15 11:23:16 2015 +0200 cobalt/arm: upgrade I-pipe support --- ...-arm-4.patch => ipipe-core-3.18.20-arm-5.patch} | 2095 ++-- 1 file changed, 167 insertions(+), 1928 deletions(-) diff --git a/kernel/cobalt/arch/arm/patches/ipipe-core-3.18.12-arm-4.patch b/kernel/cobalt/arch/arm/patches/ipipe-core-3.18.20-arm-5.patch similarity index 92% rename from kernel/cobalt/arch/arm/patches/ipipe-core-3.18.12-arm-4.patch rename to kernel/cobalt/arch/arm/patches/ipipe-core-3.18.20-arm-5.patch index e6360b7..6bded0c 100644 --- a/kernel/cobalt/arch/arm/patches/ipipe-core-3.18.12-arm-4.patch +++ b/kernel/cobalt/arch/arm/patches/ipipe-core-3.18.20-arm-5.patch @@ -1651,7 +1651,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 000..3c73753 +index 000..5c7e9bd --- /dev/null +++ b/arch/arm/include/asm/ipipe.h @@ -0,0 +1,272 @@ @@ -1699,7 +1699,7 @@ index 000..3c73753 +#include +#include + -+#define IPIPE_CORE_RELEASE4 ++#define IPIPE_CORE_RELEASE5 + +struct ipipe_domain; + @@ -3143,10 +3143,10 @@ index 705bb76..283d9da 100644 */ #if !defined(__KERNEL__) diff --git a/arch/arm/kernel/Makefile b/arch/arm/kernel/Makefile -index 38ddd9f..ac4e2f8 100644 +index 2ecc7d1..5599d6e 100644 --- a/arch/arm/kernel/Makefile +++ b/arch/arm/kernel/Makefile -@@ -94,6 +94,8 @@ endif +@@ -95,6 +95,8 @@ endif head-y:= head$(MMUEXT).o obj-$(CONFIG_DEBUG_LL)+= debug.o obj-$(CONFIG_EARLY_PRINTK)+= early_printk.o @@ -3414,7 +3414,7 @@ index 2fd..a0cd9ce 100644 .if (. - \sym) & 3 .rept 4 - (. - \sym) & 3 diff --git a/arch/arm/kernel/entry-common.S b/arch/arm/kernel/entry-common.S -index 6bb09d4..91e4b89 100644 +index eb6f1927..7bef831 100644 --- a/arch/arm/kernel/entry-common.S +++ b/arch/arm/kernel/entry-common.S @@ -2,6 +2,7 @@ @@ -3425,7 +3425,7 @@ index 6bb09d4..91e4b89 100644 * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as -@@ -43,6 +44,42 @@ ret_fast_syscall: +@@ -45,6 +46,42 @@ ret_fast_syscall: ct_user_enter restore_user_regs fast = 1, offset = S_OFF @@ -3468,7 +3468,7 @@ index 6bb09d4..91e4b89 100644 UNWIND(.fnend) /* -@@ -72,12 +109,7 @@ ENTRY(ret_to_user_from_irq) +@@ -74,12 +111,7 @@ ENTRY(ret_to_user_from_irq) bne work_pending no_work_pending: asm_trace_hardirqs_on @@ -3482,7 +3482,7 @@ index 6bb09d4..91e4b89 100644 ENDPROC(ret_to_user_from_irq) ENDPROC(ret_to_user) -@@ -85,6 +117,7 @@ ENDPROC(ret_to_user) +@@ -87,6 +119,7 @@ ENDPROC(ret_to_user) * This is how we return from a fork. */ ENTRY(ret_from_fork) @@ -3490,7 +3490,7 @@ index 6bb09d4..91e4b89 100644 bl schedule_tail cmp r5, #0 movne r0, r4 -@@ -366,6 +399,16 @@ ENTRY(vector_swi) +@@ -368,6 +401,16 @@ ENTRY(vector_swi) str r0, [sp, #S_OLD_R0] @ Save OLD_R0 #endif zero_fp @@ -3507,7 +3507,7 @@ index 6bb09d4..91e4b89 100644 alignment_trap r10, ip, __cr_alignment enable_irq ct_user_exit -@@ -424,6 +467,57 @@ ENTRY(vector_swi) +@@ -426,6 +469,57 @@ ENTRY(vector_swi) #endif local_restart: @@ -3565,7 +3565,7 @@ index 6bb09d4..91e4b89 100644 ldr r10, [tsk, #TI_FLAGS] @ check for syscall tracing stmdb sp!, {r4, r5} @ push fifth and sixth args -@@ -619,3 +713,28 @@ ENTRY(sys_oabi_call_table) +@@ -621,3 +715,28 @@ ENTRY(sys_oabi_call_table) #endif @@ -3719,10 +3719,10 @@ index 4176df7..8451be2 100644 * have in theory up to 7 arguments to a function - r0 to r6. diff --git a/arch/arm/kernel/ipipe.c b/arch/arm/kernel/ipipe.c new file mode 100644 -index 000..5187ab7 +index 000..9577fbb --- /dev/null +++ b/arch/arm/kernel/ipipe.c -@@ -0,0 +1,575 @@ +@@ -0,0 +1,560 @@ +/* -*- linux-c -*- + * linux/arch/arm/kernel/ipipe.c + * @@ -3959,21 +3959,6 @@ index 000..5187ab7 +EXPORT_SYMBOL_GPL(smp_on_up); +#endif /* SMP_ON_UP */ + -+/* -+ * ipipe_raise_irq() -- Push the interrupt at front of the pipeline -+ * just like if it has been actually received from a hw source. Also -+ * works for virtual interrupts. -+ */ -+void ipipe_raise_irq(unsigned irq) -+{ -+ unsigned long flags; -+ -+ flags = hard_local_irq_save(); -+ __ipipe_dispatch_irq(irq, IPIPE_IRQF_NOACK); -+ hard_local_irq_restore(flags); -+} -+EXPORT_SYMBOL_GPL(ipipe_raise_irq); -+ +int ipipe_get_sysinfo(struct
[Xenomai-git] Philippe Gerum : cobalt/arm: upgrade I-pipe support
Module: xenomai-3 Branch: next Commit: cdd4d58892b456cf18a122329f21a5bd6d40c54e URL: http://git.xenomai.org/?p=xenomai-3.git;a=commit;h=cdd4d58892b456cf18a122329f21a5bd6d40c54e Author: Philippe GerumDate: Tue Oct 6 15:38:27 2015 +0200 cobalt/arm: upgrade I-pipe support --- ...-arm-5.patch => ipipe-core-3.18.20-arm-6.patch} | 134 +--- 1 file changed, 86 insertions(+), 48 deletions(-) diff --git a/kernel/cobalt/arch/arm/patches/ipipe-core-3.18.20-arm-5.patch b/kernel/cobalt/arch/arm/patches/ipipe-core-3.18.20-arm-6.patch similarity index 99% rename from kernel/cobalt/arch/arm/patches/ipipe-core-3.18.20-arm-5.patch rename to kernel/cobalt/arch/arm/patches/ipipe-core-3.18.20-arm-6.patch index 6bded0c..073b2a7 100644 --- a/kernel/cobalt/arch/arm/patches/ipipe-core-3.18.20-arm-5.patch +++ b/kernel/cobalt/arch/arm/patches/ipipe-core-3.18.20-arm-6.patch @@ -159,17 +159,18 @@ index 38c89ca..7c954bc 100644 # Keep at91 dtb files sorted alphabetically for each SoC diff --git a/arch/arm/boot/dts/imx6qdl.dtsi b/arch/arm/boot/dts/imx6qdl.dtsi -index 9596ed5..3e7a4a3 100644 +index 9596ed5..8957633e 100644 --- a/arch/arm/boot/dts/imx6qdl.dtsi +++ b/arch/arm/boot/dts/imx6qdl.dtsi -@@ -125,6 +125,12 @@ +@@ -125,6 +125,13 @@ clocks = < IMX6QDL_CLK_TWD>; }; + timer@00a00200 { + compatible = "arm,cortex-a9-global-timer"; + reg = <0x00a00200 0x20>; -+ clocks = < 15>; ++ interrupts = <1 11 0xf01>; ++ clocks = < IMX6QDL_CLK_TWD>; + }; + L2: l2-cache@00a02000 { @@ -690,10 +691,10 @@ index 000..19b50df + power = <50>; +}; diff --git a/arch/arm/boot/dts/omap4.dtsi b/arch/arm/boot/dts/omap4.dtsi -index 878c979..aae32e6 100644 +index 878c979..dc2450d 100644 --- a/arch/arm/boot/dts/omap4.dtsi +++ b/arch/arm/boot/dts/omap4.dtsi -@@ -72,6 +72,12 @@ +@@ -72,6 +72,13 @@ interrupts = ; }; @@ -701,6 +702,7 @@ index 878c979..aae32e6 100644 + compatible = "arm,cortex-a9-global-timer"; + reg = <0x48240200 0x20>; + clocks = <_periphclk>; ++ interrupts = ; + }; + /* @@ -1651,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 000..5c7e9bd +index 000..76c7b6b --- /dev/null +++ b/arch/arm/include/asm/ipipe.h @@ -0,0 +1,272 @@ @@ -1699,7 +1701,7 @@ index 000..5c7e9bd +#include +#include + -+#define IPIPE_CORE_RELEASE5 ++#define IPIPE_CORE_RELEASE6 + +struct ipipe_domain; + @@ -3717,6 +3719,19 @@ index 4176df7..8451be2 100644 /* * These are the registers used in the syscall handler, and allow us to * have in theory up to 7 arguments to a function - r0 to r6. +diff --git a/arch/arm/kernel/hibernate.c b/arch/arm/kernel/hibernate.c +index cfb354f..d11d476 100644 +--- a/arch/arm/kernel/hibernate.c b/arch/arm/kernel/hibernate.c +@@ -83,7 +83,7 @@ static void notrace arch_restore_image(void *unused) + { + struct pbe *pbe; + +- cpu_switch_mm(idmap_pgd, _mm); ++ cpu_switch_mm(idmap_pgd, _mm, 1); + for (pbe = restore_pblist; pbe; pbe = pbe->next) + copy_page(pbe->orig_address, pbe->address); + diff --git a/arch/arm/kernel/ipipe.c b/arch/arm/kernel/ipipe.c new file mode 100644 index 000..9577fbb @@ -4285,10 +4300,10 @@ index 000..9577fbb +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 000..f0cfd86 +index 000..4a87f0c --- /dev/null +++ b/arch/arm/kernel/ipipe_tsc.c -@@ -0,0 +1,201 @@ +@@ -0,0 +1,203 @@ +#include +#include +#include @@ -4456,6 +4471,8 @@ index 000..f0cfd86 + ipipe_tsc_update_timer.function = __ipipe_tsc_update_fn; + mod_timer(_tsc_update_timer, + jiffies + ipipe_tsc_update_timer.data); ++ ++ __ipipe_tracer_hrclock_initialized(); +} + +void __ipipe_mach_get_tscinfo(struct __ipipe_tscinfo *info) @@ -4969,7 +4986,7 @@ index bd19834..c49e067 100644 } while (thread_flags & _TIF_WORK_MASK); return 0; diff --git a/arch/arm/kernel/smp.c b/arch/arm/kernel/smp.c -index a8e32aa..bd81cc5 100644 +index a8e32aa..4939e05 100644 --- a/arch/arm/kernel/smp.c +++ b/arch/arm/kernel/smp.c @@ -72,8 +72,24 @@ enum ipi_msg_type { @@ -5016,18 +5033,16 @@ index a8e32aa..bd81cc5 100644 /* * All kernel threads share the same mm context; grab a -@@ -514,6 +537,93 @@ void arch_irq_work_raise(void) +@@ -514,6 +537,91 @@ void arch_irq_work_raise(void) #endif #ifdef CONFIG_GENERIC_CLOCKEVENTS_BROADCAST + +static inline void ipi_timer(void) +{
[Xenomai-git] Philippe Gerum : cobalt/arm: upgrade I-pipe support
Module: xenomai-3 Branch: next Commit: 83fed7b72313dda3b6b5fd5bb5175fa25a7f9ad3 URL: http://git.xenomai.org/?p=xenomai-3.git;a=commit;h=83fed7b72313dda3b6b5fd5bb5175fa25a7f9ad3 Author: Philippe GerumDate: Tue Sep 15 11:23:16 2015 +0200 cobalt/arm: upgrade I-pipe support --- ...-arm-4.patch => ipipe-core-3.18.20-arm-5.patch} | 2095 ++-- 1 file changed, 167 insertions(+), 1928 deletions(-) diff --git a/kernel/cobalt/arch/arm/patches/ipipe-core-3.18.12-arm-4.patch b/kernel/cobalt/arch/arm/patches/ipipe-core-3.18.20-arm-5.patch similarity index 92% rename from kernel/cobalt/arch/arm/patches/ipipe-core-3.18.12-arm-4.patch rename to kernel/cobalt/arch/arm/patches/ipipe-core-3.18.20-arm-5.patch index e6360b7..6bded0c 100644 --- a/kernel/cobalt/arch/arm/patches/ipipe-core-3.18.12-arm-4.patch +++ b/kernel/cobalt/arch/arm/patches/ipipe-core-3.18.20-arm-5.patch @@ -1651,7 +1651,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 000..3c73753 +index 000..5c7e9bd --- /dev/null +++ b/arch/arm/include/asm/ipipe.h @@ -0,0 +1,272 @@ @@ -1699,7 +1699,7 @@ index 000..3c73753 +#include +#include + -+#define IPIPE_CORE_RELEASE4 ++#define IPIPE_CORE_RELEASE5 + +struct ipipe_domain; + @@ -3143,10 +3143,10 @@ index 705bb76..283d9da 100644 */ #if !defined(__KERNEL__) diff --git a/arch/arm/kernel/Makefile b/arch/arm/kernel/Makefile -index 38ddd9f..ac4e2f8 100644 +index 2ecc7d1..5599d6e 100644 --- a/arch/arm/kernel/Makefile +++ b/arch/arm/kernel/Makefile -@@ -94,6 +94,8 @@ endif +@@ -95,6 +95,8 @@ endif head-y:= head$(MMUEXT).o obj-$(CONFIG_DEBUG_LL)+= debug.o obj-$(CONFIG_EARLY_PRINTK)+= early_printk.o @@ -3414,7 +3414,7 @@ index 2fd..a0cd9ce 100644 .if (. - \sym) & 3 .rept 4 - (. - \sym) & 3 diff --git a/arch/arm/kernel/entry-common.S b/arch/arm/kernel/entry-common.S -index 6bb09d4..91e4b89 100644 +index eb6f1927..7bef831 100644 --- a/arch/arm/kernel/entry-common.S +++ b/arch/arm/kernel/entry-common.S @@ -2,6 +2,7 @@ @@ -3425,7 +3425,7 @@ index 6bb09d4..91e4b89 100644 * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as -@@ -43,6 +44,42 @@ ret_fast_syscall: +@@ -45,6 +46,42 @@ ret_fast_syscall: ct_user_enter restore_user_regs fast = 1, offset = S_OFF @@ -3468,7 +3468,7 @@ index 6bb09d4..91e4b89 100644 UNWIND(.fnend) /* -@@ -72,12 +109,7 @@ ENTRY(ret_to_user_from_irq) +@@ -74,12 +111,7 @@ ENTRY(ret_to_user_from_irq) bne work_pending no_work_pending: asm_trace_hardirqs_on @@ -3482,7 +3482,7 @@ index 6bb09d4..91e4b89 100644 ENDPROC(ret_to_user_from_irq) ENDPROC(ret_to_user) -@@ -85,6 +117,7 @@ ENDPROC(ret_to_user) +@@ -87,6 +119,7 @@ ENDPROC(ret_to_user) * This is how we return from a fork. */ ENTRY(ret_from_fork) @@ -3490,7 +3490,7 @@ index 6bb09d4..91e4b89 100644 bl schedule_tail cmp r5, #0 movne r0, r4 -@@ -366,6 +399,16 @@ ENTRY(vector_swi) +@@ -368,6 +401,16 @@ ENTRY(vector_swi) str r0, [sp, #S_OLD_R0] @ Save OLD_R0 #endif zero_fp @@ -3507,7 +3507,7 @@ index 6bb09d4..91e4b89 100644 alignment_trap r10, ip, __cr_alignment enable_irq ct_user_exit -@@ -424,6 +467,57 @@ ENTRY(vector_swi) +@@ -426,6 +469,57 @@ ENTRY(vector_swi) #endif local_restart: @@ -3565,7 +3565,7 @@ index 6bb09d4..91e4b89 100644 ldr r10, [tsk, #TI_FLAGS] @ check for syscall tracing stmdb sp!, {r4, r5} @ push fifth and sixth args -@@ -619,3 +713,28 @@ ENTRY(sys_oabi_call_table) +@@ -621,3 +715,28 @@ ENTRY(sys_oabi_call_table) #endif @@ -3719,10 +3719,10 @@ index 4176df7..8451be2 100644 * have in theory up to 7 arguments to a function - r0 to r6. diff --git a/arch/arm/kernel/ipipe.c b/arch/arm/kernel/ipipe.c new file mode 100644 -index 000..5187ab7 +index 000..9577fbb --- /dev/null +++ b/arch/arm/kernel/ipipe.c -@@ -0,0 +1,575 @@ +@@ -0,0 +1,560 @@ +/* -*- linux-c -*- + * linux/arch/arm/kernel/ipipe.c + * @@ -3959,21 +3959,6 @@ index 000..5187ab7 +EXPORT_SYMBOL_GPL(smp_on_up); +#endif /* SMP_ON_UP */ + -+/* -+ * ipipe_raise_irq() -- Push the interrupt at front of the pipeline -+ * just like if it has been actually received from a hw source. Also -+ * works for virtual interrupts. -+ */ -+void ipipe_raise_irq(unsigned irq) -+{ -+ unsigned long flags; -+ -+ flags = hard_local_irq_save(); -+ __ipipe_dispatch_irq(irq, IPIPE_IRQF_NOACK); -+ hard_local_irq_restore(flags); -+} -+EXPORT_SYMBOL_GPL(ipipe_raise_irq); -+ +int ipipe_get_sysinfo(struct
[Xenomai-git] Philippe Gerum : cobalt/arm: upgrade I-pipe support
Module: xenomai-3 Branch: refs/tags/v3.0-rc7 Commit: 1f34e06120ccde12cd28a447289f2b5d859979bc URL: http://git.xenomai.org/?p=xenomai-3.git;a=commit;h=1f34e06120ccde12cd28a447289f2b5d859979bc Author: Philippe Gerum r...@xenomai.org Date: Fri Mar 20 09:25:13 2015 +0100 cobalt/arm: upgrade I-pipe support --- 14.44-arm-11.patch = ipipe-core-3.14.44-arm-12.patch} |8 ...-3.18.12-arm-3.patch = ipipe-core-3.18.12-arm-4.patch} | 12 ++-- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/kernel/cobalt/arch/arm/patches/ipipe-core-3.14.44-arm-11.patch b/kernel/cobalt/arch/arm/patches/ipipe-core-3.14.44-arm-12.patch similarity index 99% rename from kernel/cobalt/arch/arm/patches/ipipe-core-3.14.44-arm-11.patch rename to kernel/cobalt/arch/arm/patches/ipipe-core-3.14.44-arm-12.patch index eab2937..c44d632 100644 --- a/kernel/cobalt/arch/arm/patches/ipipe-core-3.14.44-arm-11.patch +++ b/kernel/cobalt/arch/arm/patches/ipipe-core-3.14.44-arm-12.patch @@ -1590,7 +1590,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 000..5ec5eff +index 000..50e20e3 --- /dev/null +++ b/arch/arm/include/asm/ipipe.h @@ -0,0 +1,272 @@ @@ -1638,7 +1638,7 @@ index 000..5ec5eff +#include linux/jump_label.h +#include linux/ipipe_trace.h + -+#define IPIPE_CORE_RELEASE11 ++#define IPIPE_CORE_RELEASE12 + +struct ipipe_domain; + @@ -2863,7 +2863,7 @@ index 000..6579eec + +#endif diff --git a/arch/arm/include/asm/setup.h b/arch/arm/include/asm/setup.h -index 8d6a089..d78ed9a 100644 +index 8d6a089..60c89d6 100644 --- a/arch/arm/include/asm/setup.h +++ b/arch/arm/include/asm/setup.h @@ -53,4 +53,10 @@ extern int arm_add_memory(u64 start, u64 size); @@ -2871,7 +2871,7 @@ index 8d6a089..d78ed9a 100644 extern void dump_machine_table(void); +#ifdef CONFIG_IPIPE -+void __init smp_build_cpu_revmap(void); ++void smp_build_cpu_revmap(void); +#else +static inline void smp_build_cpu_revmap(void) { } +#endif diff --git a/kernel/cobalt/arch/arm/patches/ipipe-core-3.18.12-arm-3.patch b/kernel/cobalt/arch/arm/patches/ipipe-core-3.18.12-arm-4.patch similarity index 99% rename from kernel/cobalt/arch/arm/patches/ipipe-core-3.18.12-arm-3.patch rename to kernel/cobalt/arch/arm/patches/ipipe-core-3.18.12-arm-4.patch index ea9675d..e6360b7 100644 --- a/kernel/cobalt/arch/arm/patches/ipipe-core-3.18.12-arm-3.patch +++ b/kernel/cobalt/arch/arm/patches/ipipe-core-3.18.12-arm-4.patch @@ -1651,7 +1651,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 000..4701f8d +index 000..3c73753 --- /dev/null +++ b/arch/arm/include/asm/ipipe.h @@ -0,0 +1,272 @@ @@ -1699,7 +1699,7 @@ index 000..4701f8d +#include linux/jump_label.h +#include linux/ipipe_trace.h + -+#define IPIPE_CORE_RELEASE3 ++#define IPIPE_CORE_RELEASE4 + +struct ipipe_domain; + @@ -2923,7 +2923,7 @@ index 000..6579eec + +#endif diff --git a/arch/arm/include/asm/setup.h b/arch/arm/include/asm/setup.h -index e0adb9f..f024d86 100644 +index e0adb9f..5876f4b 100644 --- a/arch/arm/include/asm/setup.h +++ b/arch/arm/include/asm/setup.h @@ -25,4 +25,10 @@ extern int arm_add_memory(u64 start, u64 size); @@ -2931,7 +2931,7 @@ index e0adb9f..f024d86 100644 extern void dump_machine_table(void); +#ifdef CONFIG_IPIPE -+void __init smp_build_cpu_revmap(void); ++void smp_build_cpu_revmap(void); +#else +static inline void smp_build_cpu_revmap(void) { } +#endif @@ -17772,7 +17772,7 @@ index 000..797a849 +} diff --git a/kernel/ipipe/core.c b/kernel/ipipe/core.c new file mode 100644 -index 000..b8eb85c +index 000..fba38fa --- /dev/null +++ b/kernel/ipipe/core.c @@ -0,0 +1,1890 @@ @@ -19030,7 +19030,7 @@ index 000..b8eb85c + * handling interrupts: + * + * a) the root domain is alone, no registered head domain -+ * = all interrupts are delivered via the fast dispatcher. ++ * = all interrupts go through the interrupt log + * b) a head domain is registered + * = head domain IRQs go through the fast dispatcher + * = root domain IRQs go through the interrupt log ___ Xenomai-git mailing list Xenomai-git@xenomai.org http://xenomai.org/mailman/listinfo/xenomai-git
[Xenomai-git] Philippe Gerum : cobalt/arm: upgrade I-pipe support
Module: xenomai-3 Branch: master Commit: 1f34e06120ccde12cd28a447289f2b5d859979bc URL: http://git.xenomai.org/?p=xenomai-3.git;a=commit;h=1f34e06120ccde12cd28a447289f2b5d859979bc Author: Philippe Gerum r...@xenomai.org Date: Fri Mar 20 09:25:13 2015 +0100 cobalt/arm: upgrade I-pipe support --- 14.44-arm-11.patch = ipipe-core-3.14.44-arm-12.patch} |8 ...-3.18.12-arm-3.patch = ipipe-core-3.18.12-arm-4.patch} | 12 ++-- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/kernel/cobalt/arch/arm/patches/ipipe-core-3.14.44-arm-11.patch b/kernel/cobalt/arch/arm/patches/ipipe-core-3.14.44-arm-12.patch similarity index 99% rename from kernel/cobalt/arch/arm/patches/ipipe-core-3.14.44-arm-11.patch rename to kernel/cobalt/arch/arm/patches/ipipe-core-3.14.44-arm-12.patch index eab2937..c44d632 100644 --- a/kernel/cobalt/arch/arm/patches/ipipe-core-3.14.44-arm-11.patch +++ b/kernel/cobalt/arch/arm/patches/ipipe-core-3.14.44-arm-12.patch @@ -1590,7 +1590,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 000..5ec5eff +index 000..50e20e3 --- /dev/null +++ b/arch/arm/include/asm/ipipe.h @@ -0,0 +1,272 @@ @@ -1638,7 +1638,7 @@ index 000..5ec5eff +#include linux/jump_label.h +#include linux/ipipe_trace.h + -+#define IPIPE_CORE_RELEASE11 ++#define IPIPE_CORE_RELEASE12 + +struct ipipe_domain; + @@ -2863,7 +2863,7 @@ index 000..6579eec + +#endif diff --git a/arch/arm/include/asm/setup.h b/arch/arm/include/asm/setup.h -index 8d6a089..d78ed9a 100644 +index 8d6a089..60c89d6 100644 --- a/arch/arm/include/asm/setup.h +++ b/arch/arm/include/asm/setup.h @@ -53,4 +53,10 @@ extern int arm_add_memory(u64 start, u64 size); @@ -2871,7 +2871,7 @@ index 8d6a089..d78ed9a 100644 extern void dump_machine_table(void); +#ifdef CONFIG_IPIPE -+void __init smp_build_cpu_revmap(void); ++void smp_build_cpu_revmap(void); +#else +static inline void smp_build_cpu_revmap(void) { } +#endif diff --git a/kernel/cobalt/arch/arm/patches/ipipe-core-3.18.12-arm-3.patch b/kernel/cobalt/arch/arm/patches/ipipe-core-3.18.12-arm-4.patch similarity index 99% rename from kernel/cobalt/arch/arm/patches/ipipe-core-3.18.12-arm-3.patch rename to kernel/cobalt/arch/arm/patches/ipipe-core-3.18.12-arm-4.patch index ea9675d..e6360b7 100644 --- a/kernel/cobalt/arch/arm/patches/ipipe-core-3.18.12-arm-3.patch +++ b/kernel/cobalt/arch/arm/patches/ipipe-core-3.18.12-arm-4.patch @@ -1651,7 +1651,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 000..4701f8d +index 000..3c73753 --- /dev/null +++ b/arch/arm/include/asm/ipipe.h @@ -0,0 +1,272 @@ @@ -1699,7 +1699,7 @@ index 000..4701f8d +#include linux/jump_label.h +#include linux/ipipe_trace.h + -+#define IPIPE_CORE_RELEASE3 ++#define IPIPE_CORE_RELEASE4 + +struct ipipe_domain; + @@ -2923,7 +2923,7 @@ index 000..6579eec + +#endif diff --git a/arch/arm/include/asm/setup.h b/arch/arm/include/asm/setup.h -index e0adb9f..f024d86 100644 +index e0adb9f..5876f4b 100644 --- a/arch/arm/include/asm/setup.h +++ b/arch/arm/include/asm/setup.h @@ -25,4 +25,10 @@ extern int arm_add_memory(u64 start, u64 size); @@ -2931,7 +2931,7 @@ index e0adb9f..f024d86 100644 extern void dump_machine_table(void); +#ifdef CONFIG_IPIPE -+void __init smp_build_cpu_revmap(void); ++void smp_build_cpu_revmap(void); +#else +static inline void smp_build_cpu_revmap(void) { } +#endif @@ -17772,7 +17772,7 @@ index 000..797a849 +} diff --git a/kernel/ipipe/core.c b/kernel/ipipe/core.c new file mode 100644 -index 000..b8eb85c +index 000..fba38fa --- /dev/null +++ b/kernel/ipipe/core.c @@ -0,0 +1,1890 @@ @@ -19030,7 +19030,7 @@ index 000..b8eb85c + * handling interrupts: + * + * a) the root domain is alone, no registered head domain -+ * = all interrupts are delivered via the fast dispatcher. ++ * = all interrupts go through the interrupt log + * b) a head domain is registered + * = head domain IRQs go through the fast dispatcher + * = root domain IRQs go through the interrupt log ___ Xenomai-git mailing list Xenomai-git@xenomai.org http://xenomai.org/mailman/listinfo/xenomai-git
[Xenomai-git] Philippe Gerum : cobalt/arm: upgrade I-pipe support
Module: xenomai-3 Branch: master Commit: 807152f5cd659160a0fb39f17e598a18822b483e URL: http://git.xenomai.org/?p=xenomai-3.git;a=commit;h=807152f5cd659160a0fb39f17e598a18822b483e Author: Philippe Gerum r...@xenomai.org Date: Sun Jul 26 20:50:50 2015 +0200 cobalt/arm: upgrade I-pipe support --- ...arm-9.patch = ipipe-core-3.10.32-arm-10.patch} | 122 +- ...rm-10.patch = ipipe-core-3.14.44-arm-11.patch} | 302 +- .../arch/arm/patches/ipipe-core-3.16.7-arm-8.patch |22371 ...-arm-2.patch = ipipe-core-3.18.12-arm-3.patch} | 202 +- 4 files changed, 362 insertions(+), 22635 deletions(-) Diff: http://git.xenomai.org/?p=xenomai-3.git;a=commitdiff;h=807152f5cd659160a0fb39f17e598a18822b483e ___ Xenomai-git mailing list Xenomai-git@xenomai.org http://xenomai.org/mailman/listinfo/xenomai-git
[Xenomai-git] Philippe Gerum : cobalt/arm: upgrade I-pipe support
Module: xenomai-3 Branch: next Commit: 807152f5cd659160a0fb39f17e598a18822b483e URL: http://git.xenomai.org/?p=xenomai-3.git;a=commit;h=807152f5cd659160a0fb39f17e598a18822b483e Author: Philippe Gerum r...@xenomai.org Date: Sun Jul 26 20:50:50 2015 +0200 cobalt/arm: upgrade I-pipe support --- ...arm-9.patch = ipipe-core-3.10.32-arm-10.patch} | 122 +- ...rm-10.patch = ipipe-core-3.14.44-arm-11.patch} | 302 +- .../arch/arm/patches/ipipe-core-3.16.7-arm-8.patch |22371 ...-arm-2.patch = ipipe-core-3.18.12-arm-3.patch} | 202 +- 4 files changed, 362 insertions(+), 22635 deletions(-) Diff: http://git.xenomai.org/?p=xenomai-3.git;a=commitdiff;h=807152f5cd659160a0fb39f17e598a18822b483e ___ Xenomai-git mailing list Xenomai-git@xenomai.org http://xenomai.org/mailman/listinfo/xenomai-git
[Xenomai-git] Philippe Gerum : cobalt/arm: upgrade I-pipe support
Module: xenomai-3 Branch: master Commit: 7cb2c02374b71f199a43e644f4aa256db8be4053 URL: http://git.xenomai.org/?p=xenomai-3.git;a=commit;h=7cb2c02374b71f199a43e644f4aa256db8be4053 Author: Philippe Gerum r...@xenomai.org Date: Wed Jun 17 10:34:00 2015 +0200 cobalt/arm: upgrade I-pipe support --- ...-arm-7.patch = ipipe-core-3.10.32-arm-9.patch} | 62 +- ...arm-8.patch = ipipe-core-3.14.39-arm-10.patch} | 105 +- ...7-arm-5.patch = ipipe-core-3.16.7-arm-8.patch} | 114 +- .../arm/patches/ipipe-core-3.18.12-arm-2.patch |25571 4 files changed, 25763 insertions(+), 89 deletions(-) Diff: http://git.xenomai.org/?p=xenomai-3.git;a=commitdiff;h=7cb2c02374b71f199a43e644f4aa256db8be4053 ___ Xenomai-git mailing list Xenomai-git@xenomai.org http://xenomai.org/mailman/listinfo/xenomai-git
[Xenomai-git] Philippe Gerum : cobalt/arm: upgrade I-pipe support
Module: xenomai-3 Branch: next Commit: 29d31191913de6089a843fcd4edf74fcd15c3978 URL: http://git.xenomai.org/?p=xenomai-3.git;a=commit;h=29d31191913de6089a843fcd4edf74fcd15c3978 Author: Philippe Gerum r...@xenomai.org Date: Wed Jun 17 10:34:00 2015 +0200 cobalt/arm: upgrade I-pipe support --- .../arm/patches/ipipe-core-3.18.12-arm-2.patch |25571 1 file changed, 25571 insertions(+) Diff: http://git.xenomai.org/?p=xenomai-3.git;a=commitdiff;h=29d31191913de6089a843fcd4edf74fcd15c3978 ___ Xenomai-git mailing list Xenomai-git@xenomai.org http://xenomai.org/mailman/listinfo/xenomai-git
[Xenomai-git] Philippe Gerum : cobalt/arm: upgrade I-pipe support
Module: xenomai-3 Branch: next Commit: 2b4bb8668dcc8900831cb6b00e07c5e5af22c62a URL: http://git.xenomai.org/?p=xenomai-3.git;a=commit;h=2b4bb8668dcc8900831cb6b00e07c5e5af22c62a Author: Philippe Gerum r...@xenomai.org Date: Wed Jun 17 10:34:00 2015 +0200 cobalt/arm: upgrade I-pipe support --- ...-arm-7.patch = ipipe-core-3.10.32-arm-9.patch} | 62 +- ...arm-8.patch = ipipe-core-3.14.39-arm-10.patch} | 105 +- ...7-arm-5.patch = ipipe-core-3.16.7-arm-8.patch} | 114 +- .../arm/patches/ipipe-core-3.18.12-arm-2.patch |25571 4 files changed, 25763 insertions(+), 89 deletions(-) Diff: http://git.xenomai.org/?p=xenomai-3.git;a=commitdiff;h=2b4bb8668dcc8900831cb6b00e07c5e5af22c62a ___ Xenomai-git mailing list Xenomai-git@xenomai.org http://xenomai.org/mailman/listinfo/xenomai-git
[Xenomai-git] Philippe Gerum : cobalt/arm: upgrade I-pipe support
Module: xenomai-3 Branch: master Commit: dc89691364d545218bc515fb95646f6c748a5ff6 URL: http://git.xenomai.org/?p=xenomai-3.git;a=commit;h=dc89691364d545218bc515fb95646f6c748a5ff6 Author: Philippe Gerum r...@xenomai.org Date: Fri Mar 20 09:25:13 2015 +0100 cobalt/arm: upgrade I-pipe support --- ...-arm-8.patch = ipipe-core-3.14.33-arm-8.patch} | 63 +++-- ...6-arm-3.patch = ipipe-core-3.16.7-arm-5.patch} | 260 2 files changed, 142 insertions(+), 181 deletions(-) diff --git a/kernel/cobalt/arch/arm/patches/ipipe-core-3.14.28-arm-8.patch b/kernel/cobalt/arch/arm/patches/ipipe-core-3.14.33-arm-8.patch similarity index 99% rename from kernel/cobalt/arch/arm/patches/ipipe-core-3.14.28-arm-8.patch rename to kernel/cobalt/arch/arm/patches/ipipe-core-3.14.33-arm-8.patch index 6ed50be..d415abc 100644 --- a/kernel/cobalt/arch/arm/patches/ipipe-core-3.14.28-arm-8.patch +++ b/kernel/cobalt/arch/arm/patches/ipipe-core-3.14.33-arm-8.patch @@ -3096,7 +3096,7 @@ index ded0417..6ce9baa 100644 DEFINE(TI_VFPSTATE, offsetof(struct thread_info, vfpstate)); #ifdef CONFIG_SMP diff --git a/arch/arm/kernel/entry-armv.S b/arch/arm/kernel/entry-armv.S -index 1879e8d..a608340 100644 +index 1879e8d..f6ef839 100644 --- a/arch/arm/kernel/entry-armv.S +++ b/arch/arm/kernel/entry-armv.S @@ -4,6 +4,7 @@ @@ -3244,8 +3244,8 @@ index 1879e8d..a608340 100644 + get_thread_info tsk + ldr r0, [tsk, #TI_IPIPE] + tst r0, #_TIP_HEAD -+ THUMB( it eq) -+ beq __ipipe_ret_to_user_irqs_disabled @ Fast exit path over non-root domains ++ THUMB( it ne) ++ bne __ipipe_ret_to_user_irqs_disabled @ Fast exit path over non-root domains +#endif /* !CONFIG_IPIPE_LEGACY */ +#else /* !CONFIG_IPIPE */ + get_thread_info tsk @@ -3626,7 +3626,7 @@ index 88c6bab..cf2772a 100644 * have in theory up to 7 arguments to a function - r0 to r6. diff --git a/arch/arm/kernel/ipipe.c b/arch/arm/kernel/ipipe.c new file mode 100644 -index 000..0d3412d +index 000..8a6c9bc --- /dev/null +++ b/arch/arm/kernel/ipipe.c @@ -0,0 +1,575 @@ @@ -3841,7 +3841,7 @@ index 000..0d3412d +#ifdef CONFIG_SMP_ON_UP +struct static_key __ipipe_smp_key = STATIC_KEY_INIT_TRUE; + -+unsigned __ipipe_processor_id(void) ++unsigned notrace __ipipe_processor_id(void) +{ + return raw_smp_processor_id(); +} @@ -4792,7 +4792,7 @@ index 0dd3b79..b56a680 100644 return 0; } diff --git a/arch/arm/kernel/setup.c b/arch/arm/kernel/setup.c -index 1e8b030..c755375 100644 +index aab70f6..465dcb8 100644 --- a/arch/arm/kernel/setup.c +++ b/arch/arm/kernel/setup.c @@ -465,16 +465,27 @@ void notrace cpu_init(void) @@ -4853,7 +4853,7 @@ index 04d6388..f0616de 100644 } while (thread_flags _TIF_WORK_MASK); return 0; diff --git a/arch/arm/kernel/smp.c b/arch/arm/kernel/smp.c -index b7b4c86..64f2adf 100644 +index 8cd3724..f1265b0 100644 --- a/arch/arm/kernel/smp.c +++ b/arch/arm/kernel/smp.c @@ -69,8 +69,24 @@ enum ipi_msg_type { @@ -4900,7 +4900,7 @@ index b7b4c86..64f2adf 100644 /* * All kernel threads share the same mm context; grab a -@@ -500,6 +523,93 @@ u64 smp_irq_stat_cpu(unsigned int cpu) +@@ -509,6 +532,93 @@ u64 smp_irq_stat_cpu(unsigned int cpu) } #ifdef CONFIG_GENERIC_CLOCKEVENTS_BROADCAST @@ -4994,7 +4994,7 @@ index b7b4c86..64f2adf 100644 void tick_broadcast(const struct cpumask *mask) { smp_cross_call(mask, IPI_TIMER); -@@ -565,9 +675,9 @@ void handle_IPI(int ipinr, struct pt_regs *regs) +@@ -574,9 +684,9 @@ void handle_IPI(int ipinr, struct pt_regs *regs) #ifdef CONFIG_GENERIC_CLOCKEVENTS_BROADCAST case IPI_TIMER: @@ -5007,7 +5007,7 @@ index b7b4c86..64f2adf 100644 break; #endif -@@ -576,35 +686,35 @@ void handle_IPI(int ipinr, struct pt_regs *regs) +@@ -585,35 +695,35 @@ void handle_IPI(int ipinr, struct pt_regs *regs) break; case IPI_CALL_FUNC: @@ -6677,7 +6677,7 @@ index 19fca1f..f8d6d6c 100644 } CLK_OF_DECLARE(imx53_ccm, fsl,imx53-ccm, mx53_clocks_init); diff --git a/arch/arm/mach-imx/clk-imx6q.c b/arch/arm/mach-imx/clk-imx6q.c -index 4d677f4..824107c 100644 +index 01a5765..d5f077a 100644 --- a/arch/arm/mach-imx/clk-imx6q.c +++ b/arch/arm/mach-imx/clk-imx6q.c @@ -144,7 +144,7 @@ static void __init imx6q_clocks_init(struct device_node *ccm_node) @@ -7658,7 +7658,7 @@ index 1f3770a..1119417 100644 return; diff --git a/arch/arm/mach-omap2/pm44xx.c b/arch/arm/mach-omap2/pm44xx.c -index eefb30c..a9086b9 100644 +index 2b9cff9..d60cf7c 100644 --- a/arch/arm/mach-omap2/pm44xx.c +++ b/arch/arm/mach-omap2/pm44xx.c @@ -133,7 +133,13 @@ static int __init pwrdms_setup(struct powerdomain *pwrdm, void *unused) @@ -7694,7 +7694,7 @@ index b4c4ab9..795b538 100644 if (chip-irq_ack) chip-irq_ack(desc-irq_data); diff --git a/arch/arm/mach-omap2/timer.c b/arch/arm/mach-omap2/timer.c -index
[Xenomai-git] Philippe Gerum : cobalt/arm: upgrade I-pipe support
Module: xenomai-3 Branch: next Commit: dc89691364d545218bc515fb95646f6c748a5ff6 URL: http://git.xenomai.org/?p=xenomai-3.git;a=commit;h=dc89691364d545218bc515fb95646f6c748a5ff6 Author: Philippe Gerum r...@xenomai.org Date: Fri Mar 20 09:25:13 2015 +0100 cobalt/arm: upgrade I-pipe support --- ...-arm-8.patch = ipipe-core-3.14.33-arm-8.patch} | 63 +++-- ...6-arm-3.patch = ipipe-core-3.16.7-arm-5.patch} | 260 2 files changed, 142 insertions(+), 181 deletions(-) diff --git a/kernel/cobalt/arch/arm/patches/ipipe-core-3.14.28-arm-8.patch b/kernel/cobalt/arch/arm/patches/ipipe-core-3.14.33-arm-8.patch similarity index 99% rename from kernel/cobalt/arch/arm/patches/ipipe-core-3.14.28-arm-8.patch rename to kernel/cobalt/arch/arm/patches/ipipe-core-3.14.33-arm-8.patch index 6ed50be..d415abc 100644 --- a/kernel/cobalt/arch/arm/patches/ipipe-core-3.14.28-arm-8.patch +++ b/kernel/cobalt/arch/arm/patches/ipipe-core-3.14.33-arm-8.patch @@ -3096,7 +3096,7 @@ index ded0417..6ce9baa 100644 DEFINE(TI_VFPSTATE, offsetof(struct thread_info, vfpstate)); #ifdef CONFIG_SMP diff --git a/arch/arm/kernel/entry-armv.S b/arch/arm/kernel/entry-armv.S -index 1879e8d..a608340 100644 +index 1879e8d..f6ef839 100644 --- a/arch/arm/kernel/entry-armv.S +++ b/arch/arm/kernel/entry-armv.S @@ -4,6 +4,7 @@ @@ -3244,8 +3244,8 @@ index 1879e8d..a608340 100644 + get_thread_info tsk + ldr r0, [tsk, #TI_IPIPE] + tst r0, #_TIP_HEAD -+ THUMB( it eq) -+ beq __ipipe_ret_to_user_irqs_disabled @ Fast exit path over non-root domains ++ THUMB( it ne) ++ bne __ipipe_ret_to_user_irqs_disabled @ Fast exit path over non-root domains +#endif /* !CONFIG_IPIPE_LEGACY */ +#else /* !CONFIG_IPIPE */ + get_thread_info tsk @@ -3626,7 +3626,7 @@ index 88c6bab..cf2772a 100644 * have in theory up to 7 arguments to a function - r0 to r6. diff --git a/arch/arm/kernel/ipipe.c b/arch/arm/kernel/ipipe.c new file mode 100644 -index 000..0d3412d +index 000..8a6c9bc --- /dev/null +++ b/arch/arm/kernel/ipipe.c @@ -0,0 +1,575 @@ @@ -3841,7 +3841,7 @@ index 000..0d3412d +#ifdef CONFIG_SMP_ON_UP +struct static_key __ipipe_smp_key = STATIC_KEY_INIT_TRUE; + -+unsigned __ipipe_processor_id(void) ++unsigned notrace __ipipe_processor_id(void) +{ + return raw_smp_processor_id(); +} @@ -4792,7 +4792,7 @@ index 0dd3b79..b56a680 100644 return 0; } diff --git a/arch/arm/kernel/setup.c b/arch/arm/kernel/setup.c -index 1e8b030..c755375 100644 +index aab70f6..465dcb8 100644 --- a/arch/arm/kernel/setup.c +++ b/arch/arm/kernel/setup.c @@ -465,16 +465,27 @@ void notrace cpu_init(void) @@ -4853,7 +4853,7 @@ index 04d6388..f0616de 100644 } while (thread_flags _TIF_WORK_MASK); return 0; diff --git a/arch/arm/kernel/smp.c b/arch/arm/kernel/smp.c -index b7b4c86..64f2adf 100644 +index 8cd3724..f1265b0 100644 --- a/arch/arm/kernel/smp.c +++ b/arch/arm/kernel/smp.c @@ -69,8 +69,24 @@ enum ipi_msg_type { @@ -4900,7 +4900,7 @@ index b7b4c86..64f2adf 100644 /* * All kernel threads share the same mm context; grab a -@@ -500,6 +523,93 @@ u64 smp_irq_stat_cpu(unsigned int cpu) +@@ -509,6 +532,93 @@ u64 smp_irq_stat_cpu(unsigned int cpu) } #ifdef CONFIG_GENERIC_CLOCKEVENTS_BROADCAST @@ -4994,7 +4994,7 @@ index b7b4c86..64f2adf 100644 void tick_broadcast(const struct cpumask *mask) { smp_cross_call(mask, IPI_TIMER); -@@ -565,9 +675,9 @@ void handle_IPI(int ipinr, struct pt_regs *regs) +@@ -574,9 +684,9 @@ void handle_IPI(int ipinr, struct pt_regs *regs) #ifdef CONFIG_GENERIC_CLOCKEVENTS_BROADCAST case IPI_TIMER: @@ -5007,7 +5007,7 @@ index b7b4c86..64f2adf 100644 break; #endif -@@ -576,35 +686,35 @@ void handle_IPI(int ipinr, struct pt_regs *regs) +@@ -585,35 +695,35 @@ void handle_IPI(int ipinr, struct pt_regs *regs) break; case IPI_CALL_FUNC: @@ -6677,7 +6677,7 @@ index 19fca1f..f8d6d6c 100644 } CLK_OF_DECLARE(imx53_ccm, fsl,imx53-ccm, mx53_clocks_init); diff --git a/arch/arm/mach-imx/clk-imx6q.c b/arch/arm/mach-imx/clk-imx6q.c -index 4d677f4..824107c 100644 +index 01a5765..d5f077a 100644 --- a/arch/arm/mach-imx/clk-imx6q.c +++ b/arch/arm/mach-imx/clk-imx6q.c @@ -144,7 +144,7 @@ static void __init imx6q_clocks_init(struct device_node *ccm_node) @@ -7658,7 +7658,7 @@ index 1f3770a..1119417 100644 return; diff --git a/arch/arm/mach-omap2/pm44xx.c b/arch/arm/mach-omap2/pm44xx.c -index eefb30c..a9086b9 100644 +index 2b9cff9..d60cf7c 100644 --- a/arch/arm/mach-omap2/pm44xx.c +++ b/arch/arm/mach-omap2/pm44xx.c @@ -133,7 +133,13 @@ static int __init pwrdms_setup(struct powerdomain *pwrdm, void *unused) @@ -7694,7 +7694,7 @@ index b4c4ab9..795b538 100644 if (chip-irq_ack) chip-irq_ack(desc-irq_data); diff --git a/arch/arm/mach-omap2/timer.c b/arch/arm/mach-omap2/timer.c -index
[Xenomai-git] Philippe Gerum : cobalt/arm: upgrade I-pipe support
Module: xenomai-3 Branch: master Commit: 19f7ec147ef21fc2149a8afd405877d241bf43ac URL: http://git.xenomai.org/?p=xenomai-3.git;a=commit;h=19f7ec147ef21fc2149a8afd405877d241bf43ac Author: Philippe Gerum r...@xenomai.org Date: Tue Jan 6 17:37:35 2015 +0100 cobalt/arm: upgrade I-pipe support --- ...-arm-5.patch = ipipe-core-3.10.32-arm-7.patch} | 1174 +- ...-arm-4.patch = ipipe-core-3.14.17-arm-6.patch} | 1092 +- .../arch/arm/patches/ipipe-core-3.16-arm-1.patch |22403 3 files changed, 23788 insertions(+), 881 deletions(-) Diff: http://git.xenomai.org/?p=xenomai-3.git;a=commitdiff;h=19f7ec147ef21fc2149a8afd405877d241bf43ac ___ Xenomai-git mailing list Xenomai-git@xenomai.org http://www.xenomai.org/mailman/listinfo/xenomai-git
[Xenomai-git] Philippe Gerum : cobalt/arm: upgrade I-pipe support
Module: xenomai-3 Branch: next Commit: 38f49c12a0bf14e71aaea97f2ff04990d64f1d59 URL: http://git.xenomai.org/?p=xenomai-3.git;a=commit;h=38f49c12a0bf14e71aaea97f2ff04990d64f1d59 Author: Philippe Gerum r...@xenomai.org Date: Thu Feb 5 09:04:43 2015 +0100 cobalt/arm: upgrade I-pipe support --- ...-arm-6.patch = ipipe-core-3.14.28-arm-8.patch} | 305 1 file changed, 180 insertions(+), 125 deletions(-) diff --git a/kernel/cobalt/arch/arm/patches/ipipe-core-3.14.17-arm-6.patch b/kernel/cobalt/arch/arm/patches/ipipe-core-3.14.28-arm-8.patch similarity index 98% rename from kernel/cobalt/arch/arm/patches/ipipe-core-3.14.17-arm-6.patch rename to kernel/cobalt/arch/arm/patches/ipipe-core-3.14.28-arm-8.patch index dac5295..6ed50be 100644 --- a/kernel/cobalt/arch/arm/patches/ipipe-core-3.14.17-arm-6.patch +++ b/kernel/cobalt/arch/arm/patches/ipipe-core-3.14.28-arm-8.patch @@ -88,10 +88,10 @@ index bd245d3..65f2238 100644 extern unsigned long free_mem_ptr; extern unsigned long free_mem_end_ptr; diff --git a/arch/arm/boot/compressed/head.S b/arch/arm/boot/compressed/head.S -index 066b034..9558765 100644 +index 8017cde..f6b8d68 100644 --- a/arch/arm/boot/compressed/head.S +++ b/arch/arm/boot/compressed/head.S -@@ -1263,6 +1263,15 @@ memdump:mov r12, r0 +@@ -1275,6 +1275,15 @@ memdump:mov r12, r0 mov pc, r10 #endif @@ -855,7 +855,7 @@ index 0704e0c..862504a 100644 } diff --git a/arch/arm/include/asm/assembler.h b/arch/arm/include/asm/assembler.h -index 5c22851..102adcb 100644 +index 5c22851..e285269 100644 --- a/arch/arm/include/asm/assembler.h +++ b/arch/arm/include/asm/assembler.h @@ -95,6 +95,18 @@ @@ -877,7 +877,7 @@ index 5c22851..102adcb 100644 #else .macro disable_irq_notrace msr cpsr_c, #PSR_I_BIT | SVC_MODE -@@ -103,10 +115,22 @@ +@@ -103,6 +115,18 @@ .macro enable_irq_notrace msr cpsr_c, #SVC_MODE .endm @@ -896,20 +896,6 @@ index 5c22851..102adcb 100644 #endif .macro asm_trace_hardirqs_off --#if defined(CONFIG_TRACE_IRQFLAGS) -+#if defined(CONFIG_TRACE_IRQFLAGS) !defined(CONFIG_IPIPE) - stmdb sp!, {r0-r3, ip, lr} - bl trace_hardirqs_off - ldmia sp!, {r0-r3, ip, lr} -@@ -114,7 +138,7 @@ - .endm - - .macro asm_trace_hardirqs_on_cond, cond --#if defined(CONFIG_TRACE_IRQFLAGS) -+#if defined(CONFIG_TRACE_IRQFLAGS) !defined(CONFIG_IPIPE) - /* -* actually the registers should be pushed and pop'd conditionally, but -* after bl the flags are certainly clobbered diff --git a/arch/arm/include/asm/atomic.h b/arch/arm/include/asm/atomic.h index 62d2cb5..6216af3 100644 --- a/arch/arm/include/asm/atomic.h @@ -1596,7 +1582,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 000..76c7b6b +index 000..128fc6a --- /dev/null +++ b/arch/arm/include/asm/ipipe.h @@ -0,0 +1,272 @@ @@ -1644,7 +1630,7 @@ index 000..76c7b6b +#include linux/jump_label.h +#include linux/ipipe_trace.h + -+#define IPIPE_CORE_RELEASE6 ++#define IPIPE_CORE_RELEASE8 + +struct ipipe_domain; + @@ -2891,7 +2877,7 @@ index c99e259..317b6a4 100644 #endif /* __ASM_ARM_SWITCH_TO_H */ diff --git a/arch/arm/include/asm/thread_info.h b/arch/arm/include/asm/thread_info.h -index 71a06b2..18d584a 100644 +index 3e635ee..b6c7fde 100644 --- a/arch/arm/include/asm/thread_info.h +++ b/arch/arm/include/asm/thread_info.h @@ -26,6 +26,7 @@ struct exec_domain; @@ -2902,7 +2888,7 @@ index 71a06b2..18d584a 100644 typedef unsigned long mm_segment_t; -@@ -77,7 +78,13 @@ struct thread_info { +@@ -67,6 +68,11 @@ struct thread_info { #ifdef CONFIG_ARM_THUMBEE unsigned long thumbee_state; /* ThumbEE Handler Base register */ #endif @@ -2912,11 +2898,9 @@ index 71a06b2..18d584a 100644 + struct ipipe_threadinfo ipipe_data; + struct restart_blockrestart_block; -+ - struct arm_restart_blockarm_restart_block; }; -@@ -161,6 +168,10 @@ extern int vfp_restore_user_hwstate(struct user_vfp __user *, +@@ -150,6 +156,10 @@ extern int vfp_restore_user_hwstate(struct user_vfp __user *, #define TIF_USING_IWMMXT 17 #define TIF_MEMDIE18 /* is terminating due to OOM killer */ #define TIF_RESTORE_SIGMASK 20 @@ -2927,7 +2911,7 @@ index 71a06b2..18d584a 100644 #define _TIF_SIGPENDING (1 TIF_SIGPENDING) #define _TIF_NEED_RESCHED (1 TIF_NEED_RESCHED) -@@ -171,6 +182,9 @@ extern int vfp_restore_user_hwstate(struct user_vfp __user *, +@@ -160,6 +170,9 @@ extern int vfp_restore_user_hwstate(struct user_vfp __user *, #define _TIF_SECCOMP (1 TIF_SECCOMP) #define _TIF_USING_IWMMXT (1 TIF_USING_IWMMXT) @@ -2937,7 +2921,7
[Xenomai-git] Philippe Gerum : cobalt/arm: upgrade I-pipe support
Module: xenomai-3 Branch: next Commit: 2b230cd8f42675cc3794c346e6f9955d18eef44b URL: http://git.xenomai.org/?p=xenomai-3.git;a=commit;h=2b230cd8f42675cc3794c346e6f9955d18eef44b Author: Philippe Gerum r...@xenomai.org Date: Tue Feb 3 18:31:19 2015 +0100 cobalt/arm: upgrade I-pipe support --- 16-arm-1.patch = ipipe-core-3.16-arm-3.patch} | 240 +--- 1 file changed, 109 insertions(+), 131 deletions(-) diff --git a/kernel/cobalt/arch/arm/patches/ipipe-core-3.16-arm-1.patch b/kernel/cobalt/arch/arm/patches/ipipe-core-3.16-arm-3.patch similarity index 99% rename from kernel/cobalt/arch/arm/patches/ipipe-core-3.16-arm-1.patch rename to kernel/cobalt/arch/arm/patches/ipipe-core-3.16-arm-3.patch index c88def1..6d26885 100644 --- a/kernel/cobalt/arch/arm/patches/ipipe-core-3.16-arm-1.patch +++ b/kernel/cobalt/arch/arm/patches/ipipe-core-3.16-arm-3.patch @@ -72,51 +72,6 @@ index 290f02ee..dc51f52 100644 source kernel/Kconfig.preempt config HZ_FIXED -diff --git a/arch/arm/Kconfig.rej b/arch/arm/Kconfig.rej -new file mode 100644 -index 000..0f0d7c1 /dev/null -+++ b/arch/arm/Kconfig.rej -@@ -0,0 +1,39 @@ -+--- arch/arm/Kconfig - arch/arm/Kconfig -+@@ -25,14 +25,15 @@ -+ select GENERIC_STRNCPY_FROM_USER -+ select GENERIC_STRNLEN_USER -+ select HARDIRQS_SW_RESEND -++ select HAVE_ARCH_AUDITSYSCALL if (AEABI !OABI_COMPAT) -+ select HAVE_ARCH_JUMP_LABEL if !XIP_KERNEL -+ select HAVE_ARCH_KGDB -+ select HAVE_ARCH_SECCOMP_FILTER if (AEABI !OABI_COMPAT) -+ select HAVE_ARCH_TRACEHOOK -+ select HAVE_BPF_JIT -++ select HAVE_CC_STACKPROTECTOR -+ select HAVE_CONTEXT_TRACKING -+ select HAVE_C_RECORDMCOUNT -+- select HAVE_CC_STACKPROTECTOR -+ select HAVE_DEBUG_KMEMLEAK -+ select HAVE_DMA_API_DEBUG -+ select HAVE_DMA_ATTRS -+@@ -502,8 +493,8 @@ -+ bool IXP4xx-based -+ depends on MMU -+ select ARCH_HAS_DMA_SET_COHERENT_MASK -+- select ARCH_SUPPORTS_BIG_ENDIAN -+ select ARCH_REQUIRE_GPIOLIB -++ select ARCH_SUPPORTS_BIG_ENDIAN -+ select CLKSRC_MMIO -+ select CPU_XSCALE -+ select DMABOUNCE if PCI -+@@ -714,8 +699,8 @@ -+ -+ config ARCH_S3C24XX -+ bool Samsung S3C24XX SoCs -+- select ARCH_HAS_CPUFREQ -+ select ARCH_REQUIRE_GPIOLIB -++ select ATAGS -+ select CLKDEV_LOOKUP -+ select CLKSRC_SAMSUNG_PWM -+ select GENERIC_CLOCKEVENTS diff --git a/arch/arm/boot/compressed/decompress.c b/arch/arm/boot/compressed/decompress.c index bd245d3..65f2238 100644 --- a/arch/arm/boot/compressed/decompress.c @@ -1680,7 +1635,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 000..0aca4cf +index 000..4701f8d --- /dev/null +++ b/arch/arm/include/asm/ipipe.h @@ -0,0 +1,272 @@ @@ -1728,7 +1683,7 @@ index 000..0aca4cf +#include linux/jump_label.h +#include linux/ipipe_trace.h + -+#define IPIPE_CORE_RELEASE1 ++#define IPIPE_CORE_RELEASE3 + +struct ipipe_domain; + @@ -3196,7 +3151,7 @@ index 85598b5..e91850c 100644 DEFINE(TI_VFPSTATE, offsetof(struct thread_info, vfpstate)); #ifdef CONFIG_SMP diff --git a/arch/arm/kernel/entry-armv.S b/arch/arm/kernel/entry-armv.S -index 52a949a..d7b848b 100644 +index 52a949a..bafe35e 100644 --- a/arch/arm/kernel/entry-armv.S +++ b/arch/arm/kernel/entry-armv.S @@ -4,6 +4,7 @@ @@ -3328,7 +3283,24 @@ index 52a949a..d7b848b 100644 mov r2, r4 mov r3, r5 -@@ -676,7 +728,22 @@ __pabt_usr: +@@ -539,6 +591,7 @@ call_fpe: + adr r6, .LCneon_arm_opcodes + 2:ldr r5, [r6], #4@ mask value + ldr r7, [r6], #4@ opcode bits matching in mask ++ disable_irq_cond + cmp r5, #0 @ end mask? + beq 1f + and r8, r0, r5 +@@ -549,6 +602,8 @@ call_fpe: + strbr7, [r10, #TI_USED_CP + 11] @ mark CP#11 as used + b do_vfp @ let VFP handler handle this + 1: ++#else ++ disable_irq_cond + #endif + tst r0, #0x0800 @ only CDP/CPRT/LDC/STC have bit 27 + tstne r0, #0x0400 @ bit 26 set on both ARM and Thumb-2 +@@ -676,7 +731,22 @@ __pabt_usr: ENTRY(ret_from_exception) UNWIND(.fnstart ) UNWIND(.cantunwind ) @@ -3339,11 +3311,11 @@ index 52a949a..d7b848b 100644 + cmp r0, #1 + THUMB( it ne) + bne __ipipe_ret_to_user_irqs_disabled @ Fast exit path over non-root domains - get_thread_info tsk -+#else /* !CONFIG_IPIPE_LEGACY */ + get_thread_info tsk ++#else /* !CONFIG_IPIPE_LEGACY */ + get_thread_info tsk + ldr r0, [tsk, #TI_IPIPE] -+ tst r0, _TIP_HEAD ++ tst r0, #_TIP_HEAD + THUMB(
[Xenomai-git] Philippe Gerum : cobalt/arm: upgrade I-pipe support
Module: xenomai-3 Branch: next Commit: 19f7ec147ef21fc2149a8afd405877d241bf43ac URL: http://git.xenomai.org/?p=xenomai-3.git;a=commit;h=19f7ec147ef21fc2149a8afd405877d241bf43ac Author: Philippe Gerum r...@xenomai.org Date: Tue Jan 6 17:37:35 2015 +0100 cobalt/arm: upgrade I-pipe support --- ...-arm-5.patch = ipipe-core-3.10.32-arm-7.patch} | 1174 +- ...-arm-4.patch = ipipe-core-3.14.17-arm-6.patch} | 1092 +- .../arch/arm/patches/ipipe-core-3.16-arm-1.patch |22403 3 files changed, 23788 insertions(+), 881 deletions(-) Diff: http://git.xenomai.org/?p=xenomai-3.git;a=commitdiff;h=19f7ec147ef21fc2149a8afd405877d241bf43ac ___ Xenomai-git mailing list Xenomai-git@xenomai.org http://www.xenomai.org/mailman/listinfo/xenomai-git
[Xenomai-git] Philippe Gerum : cobalt/arm: upgrade I-pipe support
Module: xenomai-forge Branch: master Commit: f6cdb18e010bcff369aec9c745b5ef2316933ac9 URL: http://git.xenomai.org/?p=xenomai-forge.git;a=commit;h=f6cdb18e010bcff369aec9c745b5ef2316933ac9 Author: Philippe Gerum r...@xenomai.org Date: Tue Sep 23 09:11:35 2014 +0200 cobalt/arm: upgrade I-pipe support --- ...-arm-4.patch = ipipe-core-3.10.32-arm-5.patch} | 95 +--- 1 file changed, 63 insertions(+), 32 deletions(-) diff --git a/kernel/cobalt/arch/arm/patches/ipipe-core-3.10.32-arm-4.patch b/kernel/cobalt/arch/arm/patches/ipipe-core-3.10.32-arm-5.patch similarity index 99% rename from kernel/cobalt/arch/arm/patches/ipipe-core-3.10.32-arm-4.patch rename to kernel/cobalt/arch/arm/patches/ipipe-core-3.10.32-arm-5.patch index eac0028..d1ec606 100644 --- a/kernel/cobalt/arch/arm/patches/ipipe-core-3.10.32-arm-4.patch +++ b/kernel/cobalt/arch/arm/patches/ipipe-core-3.10.32-arm-5.patch @@ -826,7 +826,7 @@ index 88d6181..b23d57c 100644 diff --git a/arch/arm/include/asm/fcse.h b/arch/arm/include/asm/fcse.h new file mode 100644 -index 000..af67648 +index 000..1d42a30 --- /dev/null +++ b/arch/arm/include/asm/fcse.h @@ -0,0 +1,201 @@ @@ -849,6 +849,12 @@ index 000..af67648 +#ifndef __ASM_ARM_FCSE_H +#define __ASM_ARM_FCSE_H + ++#ifdef CONFIG_ARM_FCSE_DEBUG ++#define FCSE_BUG_ON(expr) BUG_ON(expr) ++#else /* !CONFIG_ARM_FCSE_DEBUG */ ++#define FCSE_BUG_ON(expr) do { } while(0) ++#endif /* !CONFIG_ARM_FCSE_DEBUG */ ++ +#ifdef CONFIG_ARM_FCSE + +#include linux/mm_types.h /* For struct mm_struct */ @@ -871,12 +877,6 @@ index 000..af67648 +#define FCSE_NR_PIDS (TASK_SIZE / FCSE_PID_TASK_SIZE) +#define FCSE_PID_MAX (FCSE_NR_PIDS - 1) + -+#ifdef CONFIG_ARM_FCSE_DEBUG -+#define FCSE_BUG_ON(expr) BUG_ON(expr) -+#else /* !CONFIG_ARM_FCSE_DEBUG */ -+#define FCSE_BUG_ON(expr) do { } while(0) -+#endif /* !CONFIG_ARM_FCSE_DEBUG */ -+ +struct vm_unmapped_area_info; + +extern unsigned long fcse_pids_cache_dirty[]; @@ -1076,7 +1076,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 000..112ab17 +index 000..233fbe1 --- /dev/null +++ b/arch/arm/include/asm/ipipe.h @@ -0,0 +1,274 @@ @@ -1124,13 +1124,13 @@ index 000..112ab17 +#include linux/jump_label.h +#include linux/ipipe_trace.h + -+#define IPIPE_CORE_RELEASE4 ++#define IPIPE_CORE_RELEASE5 + +struct ipipe_domain; + -+#define IPIPE_TSC_TYPE_NONE 0 -+#define IPIPE_TSC_TYPE_FREERUNNING1 -+#define IPIPE_TSC_TYPE_DECREMENTER2 ++#define IPIPE_TSC_TYPE_NONE 0 ++#define IPIPE_TSC_TYPE_FREERUNNING1 ++#define IPIPE_TSC_TYPE_DECREMENTER2 +#define IPIPE_TSC_TYPE_FREERUNNING_COUNTDOWN 3 +#define IPIPE_TSC_TYPE_FREERUNNING_TWICE 4 +#define IPIPE_TSC_TYPE_FREERUNNING_ARCH 5 @@ -3032,10 +3032,10 @@ index 160f337..8d77bff 100644 * have in theory up to 7 arguments to a function - r0 to r6. diff --git a/arch/arm/kernel/ipipe.c b/arch/arm/kernel/ipipe.c new file mode 100644 -index 000..812b8ef +index 000..5b77cfb --- /dev/null +++ b/arch/arm/kernel/ipipe.c -@@ -0,0 +1,627 @@ +@@ -0,0 +1,658 @@ +/* -*- linux-c -*- + * linux/arch/arm/kernel/ipipe.c + * @@ -3259,7 +3259,7 @@ index 000..812b8ef + unsigned long flags; + + printk(I-pipe: disabling SMP code\n); -+ ++ + flags = hard_local_irq_save(); + static_key_slow_dec(__ipipe_smp_key); + hard_local_irq_restore(flags); @@ -3393,19 +3393,40 @@ index 000..812b8ef + return ret; +} + ++#if __LINUX_ARM_ARCH__ = 5 ++#define fast_irq_disable() hard_local_irq_save() ++#define fast_irq_enable(flags) hard_local_irq_restore(flags) ++#else ++#define fast_irq_disable()\ ++ ({ \ ++ hard_local_irq_disable(); \ ++ 0; \ ++ }) ++#define fast_irq_enable(flags)\ ++ ({ \ ++ hard_local_irq_enable();\ ++ (void)(flags); \ ++ }) ++#endif ++ +asmlinkage int __ipipe_syscall_root(unsigned long scno, struct pt_regs *regs) +{ ++#ifdef CONFIG_OABI_COMPAT ++ const bool oabi = scno + __NR_SYSCALL_BASE != regs-ARM_r7; ++#elif defined(CONFIG_AEABI) ++ const bool oabi = false; ++#else /* OABI */ ++ const bool oabi = true; ++#endif ++ struct task_struct *const task = current; + struct ipipe_percpu_domain_data *p; + unsigned long orig_r7; ++ unsigned long flags; + int ret = 0; + ++#ifdef CONFIG_IPIPE_DEBUG_INTERNAL + WARN_ON_ONCE(hard_irqs_disabled()); -+ -+ /* -+ * We use r7 to pass the
[Xenomai-git] Philippe Gerum : cobalt/arm: upgrade I-pipe support
Module: xenomai-forge Branch: next Commit: f6cdb18e010bcff369aec9c745b5ef2316933ac9 URL: http://git.xenomai.org/?p=xenomai-forge.git;a=commit;h=f6cdb18e010bcff369aec9c745b5ef2316933ac9 Author: Philippe Gerum r...@xenomai.org Date: Tue Sep 23 09:11:35 2014 +0200 cobalt/arm: upgrade I-pipe support --- ...-arm-4.patch = ipipe-core-3.10.32-arm-5.patch} | 95 +--- 1 file changed, 63 insertions(+), 32 deletions(-) diff --git a/kernel/cobalt/arch/arm/patches/ipipe-core-3.10.32-arm-4.patch b/kernel/cobalt/arch/arm/patches/ipipe-core-3.10.32-arm-5.patch similarity index 99% rename from kernel/cobalt/arch/arm/patches/ipipe-core-3.10.32-arm-4.patch rename to kernel/cobalt/arch/arm/patches/ipipe-core-3.10.32-arm-5.patch index eac0028..d1ec606 100644 --- a/kernel/cobalt/arch/arm/patches/ipipe-core-3.10.32-arm-4.patch +++ b/kernel/cobalt/arch/arm/patches/ipipe-core-3.10.32-arm-5.patch @@ -826,7 +826,7 @@ index 88d6181..b23d57c 100644 diff --git a/arch/arm/include/asm/fcse.h b/arch/arm/include/asm/fcse.h new file mode 100644 -index 000..af67648 +index 000..1d42a30 --- /dev/null +++ b/arch/arm/include/asm/fcse.h @@ -0,0 +1,201 @@ @@ -849,6 +849,12 @@ index 000..af67648 +#ifndef __ASM_ARM_FCSE_H +#define __ASM_ARM_FCSE_H + ++#ifdef CONFIG_ARM_FCSE_DEBUG ++#define FCSE_BUG_ON(expr) BUG_ON(expr) ++#else /* !CONFIG_ARM_FCSE_DEBUG */ ++#define FCSE_BUG_ON(expr) do { } while(0) ++#endif /* !CONFIG_ARM_FCSE_DEBUG */ ++ +#ifdef CONFIG_ARM_FCSE + +#include linux/mm_types.h /* For struct mm_struct */ @@ -871,12 +877,6 @@ index 000..af67648 +#define FCSE_NR_PIDS (TASK_SIZE / FCSE_PID_TASK_SIZE) +#define FCSE_PID_MAX (FCSE_NR_PIDS - 1) + -+#ifdef CONFIG_ARM_FCSE_DEBUG -+#define FCSE_BUG_ON(expr) BUG_ON(expr) -+#else /* !CONFIG_ARM_FCSE_DEBUG */ -+#define FCSE_BUG_ON(expr) do { } while(0) -+#endif /* !CONFIG_ARM_FCSE_DEBUG */ -+ +struct vm_unmapped_area_info; + +extern unsigned long fcse_pids_cache_dirty[]; @@ -1076,7 +1076,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 000..112ab17 +index 000..233fbe1 --- /dev/null +++ b/arch/arm/include/asm/ipipe.h @@ -0,0 +1,274 @@ @@ -1124,13 +1124,13 @@ index 000..112ab17 +#include linux/jump_label.h +#include linux/ipipe_trace.h + -+#define IPIPE_CORE_RELEASE4 ++#define IPIPE_CORE_RELEASE5 + +struct ipipe_domain; + -+#define IPIPE_TSC_TYPE_NONE 0 -+#define IPIPE_TSC_TYPE_FREERUNNING1 -+#define IPIPE_TSC_TYPE_DECREMENTER2 ++#define IPIPE_TSC_TYPE_NONE 0 ++#define IPIPE_TSC_TYPE_FREERUNNING1 ++#define IPIPE_TSC_TYPE_DECREMENTER2 +#define IPIPE_TSC_TYPE_FREERUNNING_COUNTDOWN 3 +#define IPIPE_TSC_TYPE_FREERUNNING_TWICE 4 +#define IPIPE_TSC_TYPE_FREERUNNING_ARCH 5 @@ -3032,10 +3032,10 @@ index 160f337..8d77bff 100644 * have in theory up to 7 arguments to a function - r0 to r6. diff --git a/arch/arm/kernel/ipipe.c b/arch/arm/kernel/ipipe.c new file mode 100644 -index 000..812b8ef +index 000..5b77cfb --- /dev/null +++ b/arch/arm/kernel/ipipe.c -@@ -0,0 +1,627 @@ +@@ -0,0 +1,658 @@ +/* -*- linux-c -*- + * linux/arch/arm/kernel/ipipe.c + * @@ -3259,7 +3259,7 @@ index 000..812b8ef + unsigned long flags; + + printk(I-pipe: disabling SMP code\n); -+ ++ + flags = hard_local_irq_save(); + static_key_slow_dec(__ipipe_smp_key); + hard_local_irq_restore(flags); @@ -3393,19 +3393,40 @@ index 000..812b8ef + return ret; +} + ++#if __LINUX_ARM_ARCH__ = 5 ++#define fast_irq_disable() hard_local_irq_save() ++#define fast_irq_enable(flags) hard_local_irq_restore(flags) ++#else ++#define fast_irq_disable()\ ++ ({ \ ++ hard_local_irq_disable(); \ ++ 0; \ ++ }) ++#define fast_irq_enable(flags)\ ++ ({ \ ++ hard_local_irq_enable();\ ++ (void)(flags); \ ++ }) ++#endif ++ +asmlinkage int __ipipe_syscall_root(unsigned long scno, struct pt_regs *regs) +{ ++#ifdef CONFIG_OABI_COMPAT ++ const bool oabi = scno + __NR_SYSCALL_BASE != regs-ARM_r7; ++#elif defined(CONFIG_AEABI) ++ const bool oabi = false; ++#else /* OABI */ ++ const bool oabi = true; ++#endif ++ struct task_struct *const task = current; + struct ipipe_percpu_domain_data *p; + unsigned long orig_r7; ++ unsigned long flags; + int ret = 0; + ++#ifdef CONFIG_IPIPE_DEBUG_INTERNAL + WARN_ON_ONCE(hard_irqs_disabled()); -+ -+ /* -+ * We use r7 to pass the
[Xenomai-git] Philippe Gerum : cobalt/arm: upgrade I-pipe support
Module: xenomai-forge Branch: next Commit: 3835ce0856efbc053229b9c24b8db4d981720e3b URL: http://git.xenomai.org/?p=xenomai-forge.git;a=commit;h=3835ce0856efbc053229b9c24b8db4d981720e3b Author: Philippe Gerum r...@xenomai.org Date: Mon Sep 22 16:41:09 2014 +0200 cobalt/arm: upgrade I-pipe support --- ...-arm-1.patch = ipipe-core-3.10.32-arm-3.patch} | 846 +- .../arm/patches/ipipe-core-3.14.17-arm-3.patch |21854 2 files changed, 22481 insertions(+), 219 deletions(-) Diff: http://git.xenomai.org/?p=xenomai-forge.git;a=commitdiff;h=3835ce0856efbc053229b9c24b8db4d981720e3b ___ Xenomai-git mailing list Xenomai-git@xenomai.org http://www.xenomai.org/mailman/listinfo/xenomai-git
[Xenomai-git] Philippe Gerum : cobalt/arm: upgrade I-pipe support
Module: xenomai-forge Branch: next Commit: 0d66cec451e693c3d63f760117a0f50a679992f5 URL: http://git.xenomai.org/?p=xenomai-forge.git;a=commit;h=0d66cec451e693c3d63f760117a0f50a679992f5 Author: Philippe Gerum r...@xenomai.org Date: Mon Sep 22 16:41:09 2014 +0200 cobalt/arm: upgrade I-pipe support --- ...-arm-1.patch = ipipe-core-3.10.32-arm-4.patch} | 844 +- .../arm/patches/ipipe-core-3.14.17-arm-4.patch |21852 2 files changed, 22477 insertions(+), 219 deletions(-) Diff: http://git.xenomai.org/?p=xenomai-forge.git;a=commitdiff;h=0d66cec451e693c3d63f760117a0f50a679992f5 ___ Xenomai-git mailing list Xenomai-git@xenomai.org http://www.xenomai.org/mailman/listinfo/xenomai-git
[Xenomai-git] Philippe Gerum : cobalt/arm: upgrade I-pipe support
Module: xenomai-forge Branch: next Commit: ed6f9bfefce8269a46f94f4febb623571e350cd3 URL: http://git.xenomai.org/?p=xenomai-forge.git;a=commit;h=ed6f9bfefce8269a46f94f4febb623571e350cd3 Author: Philippe Gerum r...@xenomai.org Date: Sun Feb 16 16:53:26 2014 +0100 cobalt/arm: upgrade I-pipe support --- .../arm/patches/ipipe-core-3.10.18-arm-1.patch |20870 1 file changed, 20870 insertions(+) Diff: http://git.xenomai.org/?p=xenomai-forge.git;a=commitdiff;h=ed6f9bfefce8269a46f94f4febb623571e350cd3 ___ Xenomai-git mailing list Xenomai-git@xenomai.org http://www.xenomai.org/mailman/listinfo/xenomai-git
[Xenomai-git] Philippe Gerum : cobalt/arm: upgrade I-pipe support
Module: xenomai-forge Branch: next Commit: 261255d54ef81127d26427f6f54e18f29738c190 URL: http://git.xenomai.org/?p=xenomai-forge.git;a=commit;h=261255d54ef81127d26427f6f54e18f29738c190 Author: Philippe Gerum r...@xenomai.org Date: Sun Feb 16 16:53:26 2014 +0100 cobalt/arm: upgrade I-pipe support --- .../arm/patches/ipipe-core-3.10.18-arm-1.patch |20870 1 file changed, 20870 insertions(+) Diff: http://git.xenomai.org/?p=xenomai-forge.git;a=commitdiff;h=261255d54ef81127d26427f6f54e18f29738c190 ___ Xenomai-git mailing list Xenomai-git@xenomai.org http://www.xenomai.org/mailman/listinfo/xenomai-git