* [PATCH 0/4] ARM: patches for randconfig build errors @ 2012-08-22 14:29 Arnd Bergmann 2012-08-22 14:29 ` [PATCH 1/4] ARM: export read_current_timer Arnd Bergmann ` (3 more replies) 0 siblings, 4 replies; 23+ messages in thread From: Arnd Bergmann @ 2012-08-22 14:29 UTC (permalink / raw) To: linux-arm-kernel Hi Russell, I've done some testing with the experimental multiplatform tree and that uncovered a few preexisting bugs. Here are the ones that should go through your tree. Please have a look to see if the fixes make sense. I can put the patches in the patch tracker or send you a pull request then. Arnd --- Cc: Jon Medhurst <tixy@yxit.co.uk> Cc: Leif Lindholm <leif.lindholm@arm.com> Cc: Linus Walleij <linus.walleij@linaro.org> Cc: Magnus Damm <damm@opensource.se> Cc: Nicolas Pitre <nicolas.pitre@linaro.org> Cc: Rafael J. Wysocki <rjw@sisk.pl> Cc: Russell King <rmk+kernel@arm.linux.org.uk> Cc: Shinya Kuribayashi <shinya.kuribayashi.px@renesas.com> Cc: Stephen Boyd <sboyd@codeaurora.org> Cc: Thomas Gleixner <tglx@linutronix.de> Cc: Will Deacon <will.deacon@arm.com> Arnd Bergmann (4): ARM: export read_current_timer ARM: allow PID_IN_CONTEXTIDR only for ARMv7 ARM: export set_irq_flags/irq_set_chip_and_handler ARM: kprobes: make more tests conditional arch/arm/Kconfig.debug | 1 + arch/arm/kernel/arch_timer.c | 2 ++ arch/arm/kernel/irq.c | 2 ++ arch/arm/kernel/kprobes-test-arm.c | 4 +++- kernel/irq/chip.c | 2 ++ 5 files changed, 10 insertions(+), 1 deletion(-) -- 1.7.10 ^ permalink raw reply [flat|nested] 23+ messages in thread
* [PATCH 1/4] ARM: export read_current_timer 2012-08-22 14:29 [PATCH 0/4] ARM: patches for randconfig build errors Arnd Bergmann @ 2012-08-22 14:29 ` Arnd Bergmann 2012-08-22 17:15 ` Stephen Boyd 2012-08-22 14:29 ` [PATCH 2/4] ARM: allow PID_IN_CONTEXTIDR only for ARMv7 Arnd Bergmann ` (2 subsequent siblings) 3 siblings, 1 reply; 23+ messages in thread From: Arnd Bergmann @ 2012-08-22 14:29 UTC (permalink / raw) To: linux-arm-kernel read_current_timer is used in the get_cycles() function when ARM_ARCH_TIMER is set, and that function can be inlined into driver modules, so we should export the function to avoid errors like ERROR: "read_current_timer" [drivers/video/udlfb.ko] undefined! ERROR: "read_current_timer" [crypto/tcrypt.ko] undefined! Signed-off-by: Arnd Bergmann <arnd@arndb.de> Cc: Shinya Kuribayashi <shinya.kuribayashi.px@renesas.com> Cc: Stephen Boyd <sboyd@codeaurora.org> Cc: Will Deacon <will.deacon@arm.com> Cc: Russell King <rmk+kernel@arm.linux.org.uk> --- arch/arm/kernel/arch_timer.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/arch/arm/kernel/arch_timer.c b/arch/arm/kernel/arch_timer.c index cf25880..6327d1f 100644 --- a/arch/arm/kernel/arch_timer.c +++ b/arch/arm/kernel/arch_timer.c @@ -14,6 +14,7 @@ #include <linux/device.h> #include <linux/smp.h> #include <linux/cpu.h> +#include <linux/export.h> #include <linux/jiffies.h> #include <linux/clockchips.h> #include <linux/interrupt.h> @@ -232,6 +233,7 @@ int read_current_timer(unsigned long *timer_val) *timer_val = arch_counter_get_cntpct(); return 0; } +EXPORT_SYMBOL_GPL(read_current_timer); static struct clocksource clocksource_counter = { .name = "arch_sys_counter", -- 1.7.10 ^ permalink raw reply related [flat|nested] 23+ messages in thread
* [PATCH 1/4] ARM: export read_current_timer 2012-08-22 14:29 ` [PATCH 1/4] ARM: export read_current_timer Arnd Bergmann @ 2012-08-22 17:15 ` Stephen Boyd 2012-08-22 17:49 ` Will Deacon 0 siblings, 1 reply; 23+ messages in thread From: Stephen Boyd @ 2012-08-22 17:15 UTC (permalink / raw) To: linux-arm-kernel On 08/22/12 07:29, Arnd Bergmann wrote: > read_current_timer is used in the get_cycles() function when > ARM_ARCH_TIMER is set, and that function can be inlined into > driver modules, so we should export the function to avoid > errors like > > ERROR: "read_current_timer" [drivers/video/udlfb.ko] undefined! > ERROR: "read_current_timer" [crypto/tcrypt.ko] undefined! > > Signed-off-by: Arnd Bergmann <arnd@arndb.de> > Cc: Shinya Kuribayashi <shinya.kuribayashi.px@renesas.com> Acked-by: Stephen Boyd <sboyd@codeaurora.org> I ran into this last week but forgot to send the patch. Thanks. -- Sent by an employee of the Qualcomm Innovation Center, Inc. The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum. ^ permalink raw reply [flat|nested] 23+ messages in thread
* [PATCH 1/4] ARM: export read_current_timer 2012-08-22 17:15 ` Stephen Boyd @ 2012-08-22 17:49 ` Will Deacon 2012-08-22 17:57 ` Stephen Boyd 2012-08-23 3:56 ` Shinya Kuribayashi 0 siblings, 2 replies; 23+ messages in thread From: Will Deacon @ 2012-08-22 17:49 UTC (permalink / raw) To: linux-arm-kernel On Wed, Aug 22, 2012 at 06:15:14PM +0100, Stephen Boyd wrote: > On 08/22/12 07:29, Arnd Bergmann wrote: > > read_current_timer is used in the get_cycles() function when > > ARM_ARCH_TIMER is set, and that function can be inlined into > > driver modules, so we should export the function to avoid > > errors like > > > > ERROR: "read_current_timer" [drivers/video/udlfb.ko] undefined! > > ERROR: "read_current_timer" [crypto/tcrypt.ko] undefined! > > > > Signed-off-by: Arnd Bergmann <arnd@arndb.de> > > Cc: Shinya Kuribayashi <shinya.kuribayashi.px@renesas.com> > > Acked-by: Stephen Boyd <sboyd@codeaurora.org> > > I ran into this last week but forgot to send the patch. Thanks. Looks good to me, thanks Arnd: Acked-by: Will Deacon <will.deacon@arm.com> On the topic of the timer stuff: Shinya/Stephen, did you have a chance to look at the registration stuff that was proposed? I'm happy to push it if people will actually use it. Cheers, Will ^ permalink raw reply [flat|nested] 23+ messages in thread
* [PATCH 1/4] ARM: export read_current_timer 2012-08-22 17:49 ` Will Deacon @ 2012-08-22 17:57 ` Stephen Boyd 2012-08-22 17:58 ` Will Deacon 2012-08-23 3:56 ` Shinya Kuribayashi 1 sibling, 1 reply; 23+ messages in thread From: Stephen Boyd @ 2012-08-22 17:57 UTC (permalink / raw) To: linux-arm-kernel On 08/22/12 10:49, Will Deacon wrote: > On the topic of the timer stuff: Shinya/Stephen, did you have a chance to > look at the registration stuff that was proposed? I'm happy to push it if > people will actually use it. Yes I have tested it on our internal trees and it looks good. I plan to send a patch to move MSM's timers over to it later this week so that we have at least two users upstream. -- Sent by an employee of the Qualcomm Innovation Center, Inc. The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum. ^ permalink raw reply [flat|nested] 23+ messages in thread
* [PATCH 1/4] ARM: export read_current_timer 2012-08-22 17:57 ` Stephen Boyd @ 2012-08-22 17:58 ` Will Deacon 2012-08-23 4:23 ` Shinya Kuribayashi 0 siblings, 1 reply; 23+ messages in thread From: Will Deacon @ 2012-08-22 17:58 UTC (permalink / raw) To: linux-arm-kernel On Wed, Aug 22, 2012 at 06:57:20PM +0100, Stephen Boyd wrote: > On 08/22/12 10:49, Will Deacon wrote: > > On the topic of the timer stuff: Shinya/Stephen, did you have a chance to > > look at the registration stuff that was proposed? I'm happy to push it if > > people will actually use it. > > Yes I have tested it on our internal trees and it looks good. I plan to > send a patch to move MSM's timers over to it later this week so that we > have at least two users upstream. Awesome, I'll dust that series off at -rc3 then. Will ^ permalink raw reply [flat|nested] 23+ messages in thread
* [PATCH 1/4] ARM: export read_current_timer 2012-08-22 17:58 ` Will Deacon @ 2012-08-23 4:23 ` Shinya Kuribayashi 0 siblings, 0 replies; 23+ messages in thread From: Shinya Kuribayashi @ 2012-08-23 4:23 UTC (permalink / raw) To: linux-arm-kernel On 8/23/2012 2:58 AM, Will Deacon wrote: > On Wed, Aug 22, 2012 at 06:57:20PM +0100, Stephen Boyd wrote: >> On 08/22/12 10:49, Will Deacon wrote: >>> On the topic of the timer stuff: Shinya/Stephen, did you have a chance to >>> look at the registration stuff that was proposed? I'm happy to push it if >>> people will actually use it. >> >> Yes I have tested it on our internal trees and it looks good. I plan to >> send a patch to move MSM's timers over to it later this week so that we >> have at least two users upstream. And I think other A9 MPcore platforms, namely OMAP and EXYNOS, would also be candidates, who tried to skip calibrate_delay() in the past (OMAP) or currently provide non-smp_twd timers as localtimers (EXYNOS). I may miss the latest status of those BSPs, but believe that we would have more users (>2) in the future. > Awesome, I'll dust that series off at -rc3 then. It works for me for weeks without troubles, looking forward to it. -- Shinya Kuribayashi Renesas Electronics ^ permalink raw reply [flat|nested] 23+ messages in thread
* [PATCH 1/4] ARM: export read_current_timer 2012-08-22 17:49 ` Will Deacon 2012-08-22 17:57 ` Stephen Boyd @ 2012-08-23 3:56 ` Shinya Kuribayashi 1 sibling, 0 replies; 23+ messages in thread From: Shinya Kuribayashi @ 2012-08-23 3:56 UTC (permalink / raw) To: linux-arm-kernel On 8/23/2012 2:49 AM, Will Deacon wrote: > On Wed, Aug 22, 2012 at 06:15:14PM +0100, Stephen Boyd wrote: >> On 08/22/12 07:29, Arnd Bergmann wrote: >>> read_current_timer is used in the get_cycles() function when >>> ARM_ARCH_TIMER is set, and that function can be inlined into >>> driver modules, so we should export the function to avoid >>> errors like >>> >>> ERROR: "read_current_timer" [drivers/video/udlfb.ko] undefined! >>> ERROR: "read_current_timer" [crypto/tcrypt.ko] undefined! >>> >>> Signed-off-by: Arnd Bergmann <arnd@arndb.de> >>> Cc: Shinya Kuribayashi <shinya.kuribayashi.px@renesas.com> >> >> Acked-by: Stephen Boyd <sboyd@codeaurora.org> >> >> I ran into this last week but forgot to send the patch. Thanks. > > Looks good to me, thanks Arnd: > > Acked-by: Will Deacon <will.deacon@arm.com> I haven't hit with this so far with our configs though, but why not? Acked-by: Shinya Kuribayashi <shinya.kuribayashi.px@renesas.com> ^ permalink raw reply [flat|nested] 23+ messages in thread
* [PATCH 2/4] ARM: allow PID_IN_CONTEXTIDR only for ARMv7 2012-08-22 14:29 [PATCH 0/4] ARM: patches for randconfig build errors Arnd Bergmann 2012-08-22 14:29 ` [PATCH 1/4] ARM: export read_current_timer Arnd Bergmann @ 2012-08-22 14:29 ` Arnd Bergmann 2012-08-22 14:39 ` Will Deacon 2012-08-22 14:29 ` [PATCH 3/4] ARM: export set_irq_flags/irq_set_chip_and_handler Arnd Bergmann 2012-08-22 14:29 ` [PATCH 4/4] ARM: kprobes: make more tests conditional Arnd Bergmann 3 siblings, 1 reply; 23+ messages in thread From: Arnd Bergmann @ 2012-08-22 14:29 UTC (permalink / raw) To: linux-arm-kernel When ARMv6 is enabled, we build the kernel with -march=armv6 or -march=armv6k, which means the bfi instruction is not available. Instead, it only works with -march=armv6t2 or -march=armv7-a. Without this patch, building rand-enIHAOL results in: /tmp/ccwCsCXC.s: Assembler messages: /tmp/ccwCsCXC.s:49: Error: selected processor does not support ARM mode `bfi r3,r2,#0,#8' Signed-off-by: Arnd Bergmann <arnd@arndb.de> Cc: Will Deacon <will.deacon@arm.com> Cc: Russell King <rmk+kernel@arm.linux.org.uk> --- arch/arm/Kconfig.debug | 1 + 1 file changed, 1 insertion(+) diff --git a/arch/arm/Kconfig.debug b/arch/arm/Kconfig.debug index f15f82b..11b9ff4 100644 --- a/arch/arm/Kconfig.debug +++ b/arch/arm/Kconfig.debug @@ -398,6 +398,7 @@ config ARM_KPROBES_TEST config PID_IN_CONTEXTIDR bool "Write the current PID to the CONTEXTIDR register" depends on CPU_COPY_V6 + depends on CPU_V7 && !CPU_V6 help Enabling this option causes the kernel to write the current PID to the PROCID field of the CONTEXTIDR register, at the expense of some -- 1.7.10 ^ permalink raw reply related [flat|nested] 23+ messages in thread
* [PATCH 2/4] ARM: allow PID_IN_CONTEXTIDR only for ARMv7 2012-08-22 14:29 ` [PATCH 2/4] ARM: allow PID_IN_CONTEXTIDR only for ARMv7 Arnd Bergmann @ 2012-08-22 14:39 ` Will Deacon 2012-08-22 14:44 ` Arnd Bergmann 0 siblings, 1 reply; 23+ messages in thread From: Will Deacon @ 2012-08-22 14:39 UTC (permalink / raw) To: linux-arm-kernel Hi Arnd, On Wed, Aug 22, 2012 at 03:29:38PM +0100, Arnd Bergmann wrote: > When ARMv6 is enabled, we build the kernel with -march=armv6 or > -march=armv6k, which means the bfi instruction is not available. > Instead, it only works with -march=armv6t2 or -march=armv7-a. > > Without this patch, building rand-enIHAOL results in: > > /tmp/ccwCsCXC.s: Assembler messages: > /tmp/ccwCsCXC.s:49: Error: selected processor does not support ARM mode `bfi r3,r2,#0,#8' > > Signed-off-by: Arnd Bergmann <arnd@arndb.de> > Cc: Will Deacon <will.deacon@arm.com> > Cc: Russell King <rmk+kernel@arm.linux.org.uk> > --- > arch/arm/Kconfig.debug | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/arch/arm/Kconfig.debug b/arch/arm/Kconfig.debug > index f15f82b..11b9ff4 100644 > --- a/arch/arm/Kconfig.debug > +++ b/arch/arm/Kconfig.debug > @@ -398,6 +398,7 @@ config ARM_KPROBES_TEST > config PID_IN_CONTEXTIDR > bool "Write the current PID to the CONTEXTIDR register" > depends on CPU_COPY_V6 > + depends on CPU_V7 && !CPU_V6 > help > Enabling this option causes the kernel to write the current PID to > the PROCID field of the CONTEXTIDR register, at the expense of some Nah, I'll fix the contextidr_notifier instead. I forgot that this stuff gets used on non-SMP v6 platforms. Cheers, Will ^ permalink raw reply [flat|nested] 23+ messages in thread
* [PATCH 2/4] ARM: allow PID_IN_CONTEXTIDR only for ARMv7 2012-08-22 14:39 ` Will Deacon @ 2012-08-22 14:44 ` Arnd Bergmann 0 siblings, 0 replies; 23+ messages in thread From: Arnd Bergmann @ 2012-08-22 14:44 UTC (permalink / raw) To: linux-arm-kernel On Wednesday 22 August 2012, Will Deacon wrote: > > @@ -398,6 +398,7 @@ config ARM_KPROBES_TEST > > config PID_IN_CONTEXTIDR > > bool "Write the current PID to the CONTEXTIDR register" > > depends on CPU_COPY_V6 > > + depends on CPU_V7 && !CPU_V6 > > help > > Enabling this option causes the kernel to write the current PID to > > the PROCID field of the CONTEXTIDR register, at the expense of some > > Nah, I'll fix the contextidr_notifier instead. I forgot that this stuff gets > used on non-SMP v6 platforms. > Ok, thanks! Arnd ^ permalink raw reply [flat|nested] 23+ messages in thread
* [PATCH 3/4] ARM: export set_irq_flags/irq_set_chip_and_handler 2012-08-22 14:29 [PATCH 0/4] ARM: patches for randconfig build errors Arnd Bergmann 2012-08-22 14:29 ` [PATCH 1/4] ARM: export read_current_timer Arnd Bergmann 2012-08-22 14:29 ` [PATCH 2/4] ARM: allow PID_IN_CONTEXTIDR only for ARMv7 Arnd Bergmann @ 2012-08-22 14:29 ` Arnd Bergmann 2012-08-22 14:29 ` [PATCH 4/4] ARM: kprobes: make more tests conditional Arnd Bergmann 3 siblings, 0 replies; 23+ messages in thread From: Arnd Bergmann @ 2012-08-22 14:29 UTC (permalink / raw) To: linux-arm-kernel The recently added Emma Mobile GPIO driver calls set_irq_flags and irq_set_chip_and_handler for the interrupts it exports and it can be built as a module, which currently fails with ERROR: "set_irq_flags" [drivers/gpio/gpio-em.ko] undefined! ERROR: "irq_set_chip_and_handler_name" [drivers/gpio/gpio-em.ko] undefined! We either need to replace the call to set_irq_flags with something else or export that function. This patch does the latter. Signed-off-by: Arnd Bergmann <arnd@arndb.de> Cc: Magnus Damm <damm@opensource.se> Cc: Linus Walleij <linus.walleij@linaro.org> Cc: Rafael J. Wysocki <rjw@sisk.pl> Cc: Thomas Gleixner <tglx@linutronix.de> Cc: Russell King <rmk+kernel@arm.linux.org.uk> --- arch/arm/kernel/irq.c | 2 ++ kernel/irq/chip.c | 2 ++ 2 files changed, 4 insertions(+) diff --git a/arch/arm/kernel/irq.c b/arch/arm/kernel/irq.c index 16cedb4..8961650 100644 --- a/arch/arm/kernel/irq.c +++ b/arch/arm/kernel/irq.c @@ -34,6 +34,7 @@ #include <linux/list.h> #include <linux/kallsyms.h> #include <linux/proc_fs.h> +#include <linux/export.h> #include <asm/exception.h> #include <asm/mach/arch.h> @@ -109,6 +110,7 @@ void set_irq_flags(unsigned int irq, unsigned int iflags) /* Order is clear bits in "clr" then set bits in "set" */ irq_modify_status(irq, clr, set & ~clr); } +EXPORT_SYMBOL_GPL(set_irq_flags); void __init init_IRQ(void) { diff --git a/kernel/irq/chip.c b/kernel/irq/chip.c index eebd6d5..3c3cea3 100644 --- a/kernel/irq/chip.c +++ b/kernel/irq/chip.c @@ -13,6 +13,7 @@ #include <linux/irq.h> #include <linux/msi.h> #include <linux/module.h> +#include <linux/export.h> #include <linux/interrupt.h> #include <linux/kernel_stat.h> @@ -671,6 +672,7 @@ irq_set_chip_and_handler_name(unsigned int irq, struct irq_chip *chip, irq_set_chip(irq, chip); __irq_set_handler(irq, handle, 0, name); } +EXPORT_SYMBOL_GPL(irq_set_chip_and_handler_name); void irq_modify_status(unsigned int irq, unsigned long clr, unsigned long set) { -- 1.7.10 ^ permalink raw reply related [flat|nested] 23+ messages in thread
* [PATCH 4/4] ARM: kprobes: make more tests conditional 2012-08-22 14:29 [PATCH 0/4] ARM: patches for randconfig build errors Arnd Bergmann ` (2 preceding siblings ...) 2012-08-22 14:29 ` [PATCH 3/4] ARM: export set_irq_flags/irq_set_chip_and_handler Arnd Bergmann @ 2012-08-22 14:29 ` Arnd Bergmann 2012-08-22 14:42 ` Nicolas Pitre 3 siblings, 1 reply; 23+ messages in thread From: Arnd Bergmann @ 2012-08-22 14:29 UTC (permalink / raw) To: linux-arm-kernel The mls instruction is not available in ARMv6K or below, so we should make the test conditional on at least ARMv7. ldrex/strex are available in ARMv6K or ARMv7, which we can test by checking the CONFIG_CPU_32v6K symbol. Just testing for ARMv6 is not enough. /tmp/ccuMTZ8D.s: Assembler messages: /tmp/ccuMTZ8D.s:22188: Error: selected processor does not support ARM mode `mls r0,r1,r2,r3' /tmp/ccuMTZ8D.s:22222: Error: selected processor does not support ARM mode `mlshi r7,r8,r9,r10' /tmp/ccuMTZ8D.s:22252: Error: selected processor does not support ARM mode `mls lr,r1,r2,r13' Signed-off-by: Arnd Bergmann <arnd@arndb.de> Cc: Jon Medhurst <tixy@yxit.co.uk> Cc: Russell King <rmk+kernel@arm.linux.org.uk> Cc: Nicolas Pitre <nicolas.pitre@linaro.org> Cc: Leif Lindholm <leif.lindholm@arm.com> --- arch/arm/kernel/kprobes-test-arm.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/arch/arm/kernel/kprobes-test-arm.c b/arch/arm/kernel/kprobes-test-arm.c index 38c1a3b..3e87ff7 100644 --- a/arch/arm/kernel/kprobes-test-arm.c +++ b/arch/arm/kernel/kprobes-test-arm.c @@ -367,9 +367,11 @@ void kprobe_arm_test_cases(void) TEST_UNSUPPORTED(".word 0xe0500090 @ undef") TEST_UNSUPPORTED(".word 0xe05fff9f @ undef") +#if __LINUX_ARM_ARCH__ >= 7 TEST_RRR( "mls r0, r",1, VAL1,", r",2, VAL2,", r",3, VAL3,"") TEST_RRR( "mlshi r7, r",8, VAL3,", r",9, VAL1,", r",10, VAL2,"") TEST_RR( "mls lr, r",1, VAL2,", r",2, VAL3,", r13") +#endif TEST_UNSUPPORTED(".word 0xe06f3291 @ mls pc, r1, r2, r3") TEST_UNSUPPORTED(".word 0xe060329f @ mls r0, pc, r2, r3") TEST_UNSUPPORTED(".word 0xe0603f91 @ mls r0, r1, pc, r3") @@ -454,7 +456,7 @@ void kprobe_arm_test_cases(void) TEST_UNSUPPORTED(".word 0xe1500090") /* Unallocated space */ TEST_UNSUPPORTED(".word 0xe1600090") /* Unallocated space */ TEST_UNSUPPORTED(".word 0xe1700090") /* Unallocated space */ -#if __LINUX_ARM_ARCH__ >= 6 +#ifdef CONFIG_CPU_32v6K TEST_UNSUPPORTED("ldrex r2, [sp]") TEST_UNSUPPORTED("strexd r0, r2, r3, [sp]") TEST_UNSUPPORTED("ldrexd r2, r3, [sp]") -- 1.7.10 ^ permalink raw reply related [flat|nested] 23+ messages in thread
* [PATCH 4/4] ARM: kprobes: make more tests conditional 2012-08-22 14:29 ` [PATCH 4/4] ARM: kprobes: make more tests conditional Arnd Bergmann @ 2012-08-22 14:42 ` Nicolas Pitre 2012-08-22 15:19 ` Arnd Bergmann 0 siblings, 1 reply; 23+ messages in thread From: Nicolas Pitre @ 2012-08-22 14:42 UTC (permalink / raw) To: linux-arm-kernel On Wed, 22 Aug 2012, Arnd Bergmann wrote: > The mls instruction is not available in ARMv6K or below, so we > should make the test conditional on at least ARMv7. ldrex/strex > are available in ARMv6K or ARMv7, which we can test by checking > the CONFIG_CPU_32v6K symbol. Just testing for ARMv6 is not enough. The ldrex/strex instructions are available on ARMv6. It's only the d variants (strexd/ldrexd) which are only available from ARMv6k. Nicolas ^ permalink raw reply [flat|nested] 23+ messages in thread
* [PATCH 4/4] ARM: kprobes: make more tests conditional 2012-08-22 14:42 ` Nicolas Pitre @ 2012-08-22 15:19 ` Arnd Bergmann 2012-08-22 15:38 ` Nicolas Pitre 0 siblings, 1 reply; 23+ messages in thread From: Arnd Bergmann @ 2012-08-22 15:19 UTC (permalink / raw) To: linux-arm-kernel On Wednesday 22 August 2012, Nicolas Pitre wrote: > On Wed, 22 Aug 2012, Arnd Bergmann wrote: > > > The mls instruction is not available in ARMv6K or below, so we > > should make the test conditional on at least ARMv7. ldrex/strex > > are available in ARMv6K or ARMv7, which we can test by checking > > the CONFIG_CPU_32v6K symbol. Just testing for ARMv6 is not enough. > > The ldrex/strex instructions are available on ARMv6. It's only the d > variants (strexd/ldrexd) which are only available from ARMv6k. Ok. How is the version below then? I haven't tested this one yet. Arnd 8<--- >From d878ab212cf0ac1957be83ad80dc734ace2b476c Mon Sep 17 00:00:00 2001 From: Arnd Bergmann <arnd@arndb.de> Date: Thu, 16 Aug 2012 07:49:31 +0000 Subject: [PATCH] ARM: kprobes: make more tests conditional The mls instruction is not available in ARMv6K or below, so we should make the test conditional on at least ARMv7. ldrexd/strexd are available in ARMv6K or ARMv7, which we can test by checking the CONFIG_CPU_32v6K symbol. Just testing for ARMv6 is not enough. /tmp/ccuMTZ8D.s: Assembler messages: /tmp/ccuMTZ8D.s:22188: Error: selected processor does not support ARM mode `mls r0,r1,r2,r3' /tmp/ccuMTZ8D.s:22222: Error: selected processor does not support ARM mode `mlshi r7,r8,r9,r10' /tmp/ccuMTZ8D.s:22252: Error: selected processor does not support ARM mode `mls lr,r1,r2,r13' Signed-off-by: Arnd Bergmann <arnd@arndb.de> Cc: Jon Medhurst <tixy@yxit.co.uk> Cc: Russell King <rmk+kernel@arm.linux.org.uk> Cc: Nicolas Pitre <nicolas.pitre@linaro.org> Cc: Leif Lindholm <leif.lindholm@arm.com> --- arch/arm/kernel/kprobes-test-arm.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/arch/arm/kernel/kprobes-test-arm.c b/arch/arm/kernel/kprobes-test-arm.c index 38c1a3b..fc9f6e0 100644 --- a/arch/arm/kernel/kprobes-test-arm.c +++ b/arch/arm/kernel/kprobes-test-arm.c @@ -367,9 +367,11 @@ void kprobe_arm_test_cases(void) TEST_UNSUPPORTED(".word 0xe0500090 @ undef") TEST_UNSUPPORTED(".word 0xe05fff9f @ undef") +#if __LINUX_ARM_ARCH__ >= 7 TEST_RRR( "mls r0, r",1, VAL1,", r",2, VAL2,", r",3, VAL3,"") TEST_RRR( "mlshi r7, r",8, VAL3,", r",9, VAL1,", r",10, VAL2,"") TEST_RR( "mls lr, r",1, VAL2,", r",2, VAL3,", r13") +#endif TEST_UNSUPPORTED(".word 0xe06f3291 @ mls pc, r1, r2, r3") TEST_UNSUPPORTED(".word 0xe060329f @ mls r0, pc, r2, r3") TEST_UNSUPPORTED(".word 0xe0603f91 @ mls r0, r1, pc, r3") @@ -456,8 +458,10 @@ void kprobe_arm_test_cases(void) TEST_UNSUPPORTED(".word 0xe1700090") /* Unallocated space */ #if __LINUX_ARM_ARCH__ >= 6 TEST_UNSUPPORTED("ldrex r2, [sp]") +#ifdef CONFIG_CPU_32v6K TEST_UNSUPPORTED("strexd r0, r2, r3, [sp]") TEST_UNSUPPORTED("ldrexd r2, r3, [sp]") +#endif TEST_UNSUPPORTED("strexb r0, r2, [sp]") TEST_UNSUPPORTED("ldrexb r2, [sp]") TEST_UNSUPPORTED("strexh r0, r2, [sp]") -- 1.7.10 ^ permalink raw reply related [flat|nested] 23+ messages in thread
* [PATCH 4/4] ARM: kprobes: make more tests conditional 2012-08-22 15:19 ` Arnd Bergmann @ 2012-08-22 15:38 ` Nicolas Pitre 2012-08-22 18:41 ` [PATCHv3 " Arnd Bergmann 0 siblings, 1 reply; 23+ messages in thread From: Nicolas Pitre @ 2012-08-22 15:38 UTC (permalink / raw) To: linux-arm-kernel On Wed, 22 Aug 2012, Arnd Bergmann wrote: > On Wednesday 22 August 2012, Nicolas Pitre wrote: > > On Wed, 22 Aug 2012, Arnd Bergmann wrote: > > > > > The mls instruction is not available in ARMv6K or below, so we > > > should make the test conditional on at least ARMv7. ldrex/strex > > > are available in ARMv6K or ARMv7, which we can test by checking > > > the CONFIG_CPU_32v6K symbol. Just testing for ARMv6 is not enough. > > > > The ldrex/strex instructions are available on ARMv6. It's only the d > > variants (strexd/ldrexd) which are only available from ARMv6k. > > Ok. How is the version below then? I haven't tested this one yet. In fact, I think the b variants are ARMv6k+ as well. Only the plain (non b non d) variants are available on ARMv6. > > Arnd > > 8<--- > From d878ab212cf0ac1957be83ad80dc734ace2b476c Mon Sep 17 00:00:00 2001 > From: Arnd Bergmann <arnd@arndb.de> > Date: Thu, 16 Aug 2012 07:49:31 +0000 > Subject: [PATCH] ARM: kprobes: make more tests conditional > > The mls instruction is not available in ARMv6K or below, so we > should make the test conditional on at least ARMv7. ldrexd/strexd > are available in ARMv6K or ARMv7, which we can test by checking > the CONFIG_CPU_32v6K symbol. Just testing for ARMv6 is not enough. > > /tmp/ccuMTZ8D.s: Assembler messages: > /tmp/ccuMTZ8D.s:22188: Error: selected processor does not support ARM mode `mls r0,r1,r2,r3' > /tmp/ccuMTZ8D.s:22222: Error: selected processor does not support ARM mode `mlshi r7,r8,r9,r10' > /tmp/ccuMTZ8D.s:22252: Error: selected processor does not support ARM mode `mls lr,r1,r2,r13' > > Signed-off-by: Arnd Bergmann <arnd@arndb.de> > Cc: Jon Medhurst <tixy@yxit.co.uk> > Cc: Russell King <rmk+kernel@arm.linux.org.uk> > Cc: Nicolas Pitre <nicolas.pitre@linaro.org> > Cc: Leif Lindholm <leif.lindholm@arm.com> > --- > arch/arm/kernel/kprobes-test-arm.c | 4 ++++ > 1 file changed, 4 insertions(+) > > diff --git a/arch/arm/kernel/kprobes-test-arm.c b/arch/arm/kernel/kprobes-test-arm.c > index 38c1a3b..fc9f6e0 100644 > --- a/arch/arm/kernel/kprobes-test-arm.c > +++ b/arch/arm/kernel/kprobes-test-arm.c > @@ -367,9 +367,11 @@ void kprobe_arm_test_cases(void) > TEST_UNSUPPORTED(".word 0xe0500090 @ undef") > TEST_UNSUPPORTED(".word 0xe05fff9f @ undef") > > +#if __LINUX_ARM_ARCH__ >= 7 > TEST_RRR( "mls r0, r",1, VAL1,", r",2, VAL2,", r",3, VAL3,"") > TEST_RRR( "mlshi r7, r",8, VAL3,", r",9, VAL1,", r",10, VAL2,"") > TEST_RR( "mls lr, r",1, VAL2,", r",2, VAL3,", r13") > +#endif > TEST_UNSUPPORTED(".word 0xe06f3291 @ mls pc, r1, r2, r3") > TEST_UNSUPPORTED(".word 0xe060329f @ mls r0, pc, r2, r3") > TEST_UNSUPPORTED(".word 0xe0603f91 @ mls r0, r1, pc, r3") > @@ -456,8 +458,10 @@ void kprobe_arm_test_cases(void) > TEST_UNSUPPORTED(".word 0xe1700090") /* Unallocated space */ > #if __LINUX_ARM_ARCH__ >= 6 > TEST_UNSUPPORTED("ldrex r2, [sp]") > +#ifdef CONFIG_CPU_32v6K > TEST_UNSUPPORTED("strexd r0, r2, r3, [sp]") > TEST_UNSUPPORTED("ldrexd r2, r3, [sp]") > +#endif > TEST_UNSUPPORTED("strexb r0, r2, [sp]") > TEST_UNSUPPORTED("ldrexb r2, [sp]") > TEST_UNSUPPORTED("strexh r0, r2, [sp]") > -- > 1.7.10 > ^ permalink raw reply [flat|nested] 23+ messages in thread
* [PATCHv3 4/4] ARM: kprobes: make more tests conditional 2012-08-22 15:38 ` Nicolas Pitre @ 2012-08-22 18:41 ` Arnd Bergmann 2012-08-22 19:43 ` Nicolas Pitre 2012-08-22 23:51 ` Tixy 0 siblings, 2 replies; 23+ messages in thread From: Arnd Bergmann @ 2012-08-22 18:41 UTC (permalink / raw) To: linux-arm-kernel On Wednesday 22 August 2012, Nicolas Pitre wrote: > On Wed, 22 Aug 2012, Arnd Bergmann wrote: > > > > > > The ldrex/strex instructions are available on ARMv6. It's only the d > > > variants (strexd/ldrexd) which are only available from ARMv6k. > > > > Ok. How is the version below then? I haven't tested this one yet. > > In fact, I think the b variants are ARMv6k+ as well. Only the plain > (non b non d) variants are available on ARMv6. Ok, third attempt then. This leaves ldrex for ARMv6 but marks {st,ld}rex{b,h,d} as V6K specific (which includes ARMv7). Arnd 8<----- >From 6eab418c61c18393006f30d189e2f28d6e403040 Mon Sep 17 00:00:00 2001 From: Arnd Bergmann <arnd@arndb.de> Date: Thu, 16 Aug 2012 07:49:31 +0000 Subject: [PATCH] ARM: kprobes: make more tests conditional The mls instruction is not available in ARMv6K or below, so we should make the test conditional on at least ARMv7. ldrexd/strexd are available in ARMv6K or ARMv7, which we can test by checking the CONFIG_CPU_32v6K symbol. Just testing for ARMv6 is not enough. /tmp/ccuMTZ8D.s: Assembler messages: /tmp/ccuMTZ8D.s:22188: Error: selected processor does not support ARM mode `mls r0,r1,r2,r3' /tmp/ccuMTZ8D.s:22222: Error: selected processor does not support ARM mode `mlshi r7,r8,r9,r10' /tmp/ccuMTZ8D.s:22252: Error: selected processor does not support ARM mode `mls lr,r1,r2,r13' Signed-off-by: Arnd Bergmann <arnd@arndb.de> Cc: Jon Medhurst <tixy@yxit.co.uk> Cc: Russell King <rmk+kernel@arm.linux.org.uk> Cc: Nicolas Pitre <nicolas.pitre@linaro.org> Cc: Leif Lindholm <leif.lindholm@arm.com> --- arch/arm/kernel/kprobes-test-arm.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/arch/arm/kernel/kprobes-test-arm.c b/arch/arm/kernel/kprobes-test-arm.c index 38c1a3b..58dd6c3 100644 --- a/arch/arm/kernel/kprobes-test-arm.c +++ b/arch/arm/kernel/kprobes-test-arm.c @@ -367,9 +367,11 @@ void kprobe_arm_test_cases(void) TEST_UNSUPPORTED(".word 0xe0500090 @ undef") TEST_UNSUPPORTED(".word 0xe05fff9f @ undef") +#if __LINUX_ARM_ARCH__ >= 7 TEST_RRR( "mls r0, r",1, VAL1,", r",2, VAL2,", r",3, VAL3,"") TEST_RRR( "mlshi r7, r",8, VAL3,", r",9, VAL1,", r",10, VAL2,"") TEST_RR( "mls lr, r",1, VAL2,", r",2, VAL3,", r13") +#endif TEST_UNSUPPORTED(".word 0xe06f3291 @ mls pc, r1, r2, r3") TEST_UNSUPPORTED(".word 0xe060329f @ mls r0, pc, r2, r3") TEST_UNSUPPORTED(".word 0xe0603f91 @ mls r0, r1, pc, r3") @@ -456,6 +458,7 @@ void kprobe_arm_test_cases(void) TEST_UNSUPPORTED(".word 0xe1700090") /* Unallocated space */ #if __LINUX_ARM_ARCH__ >= 6 TEST_UNSUPPORTED("ldrex r2, [sp]") +#ifdef CONFIG_CPU_32v6K TEST_UNSUPPORTED("strexd r0, r2, r3, [sp]") TEST_UNSUPPORTED("ldrexd r2, r3, [sp]") TEST_UNSUPPORTED("strexb r0, r2, [sp]") @@ -463,6 +466,7 @@ void kprobe_arm_test_cases(void) TEST_UNSUPPORTED("strexh r0, r2, [sp]") TEST_UNSUPPORTED("ldrexh r2, [sp]") #endif +#endif TEST_GROUP("Extra load/store instructions") TEST_RPR( "strh r",0, VAL1,", [r",1, 48,", -r",2, 24,"]") -- 1.7.10 ^ permalink raw reply related [flat|nested] 23+ messages in thread
* [PATCHv3 4/4] ARM: kprobes: make more tests conditional 2012-08-22 18:41 ` [PATCHv3 " Arnd Bergmann @ 2012-08-22 19:43 ` Nicolas Pitre 2012-08-22 23:51 ` Tixy 1 sibling, 0 replies; 23+ messages in thread From: Nicolas Pitre @ 2012-08-22 19:43 UTC (permalink / raw) To: linux-arm-kernel On Wed, 22 Aug 2012, Arnd Bergmann wrote: > On Wednesday 22 August 2012, Nicolas Pitre wrote: > > On Wed, 22 Aug 2012, Arnd Bergmann wrote: > > > > > > > > The ldrex/strex instructions are available on ARMv6. It's only the d > > > > variants (strexd/ldrexd) which are only available from ARMv6k. > > > > > > Ok. How is the version below then? I haven't tested this one yet. > > > > In fact, I think the b variants are ARMv6k+ as well. Only the plain > > (non b non d) variants are available on ARMv6. > > Ok, third attempt then. This leaves ldrex for ARMv6 but marks > {st,ld}rex{b,h,d} as V6K specific (which includes ARMv7). > > Arnd > > 8<----- > From 6eab418c61c18393006f30d189e2f28d6e403040 Mon Sep 17 00:00:00 2001 > From: Arnd Bergmann <arnd@arndb.de> > Date: Thu, 16 Aug 2012 07:49:31 +0000 > Subject: [PATCH] ARM: kprobes: make more tests conditional > > The mls instruction is not available in ARMv6K or below, so we > should make the test conditional on at least ARMv7. ldrexd/strexd > are available in ARMv6K or ARMv7, which we can test by checking > the CONFIG_CPU_32v6K symbol. Just testing for ARMv6 is not enough. > > /tmp/ccuMTZ8D.s: Assembler messages: > /tmp/ccuMTZ8D.s:22188: Error: selected processor does not support ARM mode `mls r0,r1,r2,r3' > /tmp/ccuMTZ8D.s:22222: Error: selected processor does not support ARM mode `mlshi r7,r8,r9,r10' > /tmp/ccuMTZ8D.s:22252: Error: selected processor does not support ARM mode `mls lr,r1,r2,r13' > > Signed-off-by: Arnd Bergmann <arnd@arndb.de> > Cc: Jon Medhurst <tixy@yxit.co.uk> > Cc: Russell King <rmk+kernel@arm.linux.org.uk> > Cc: Nicolas Pitre <nicolas.pitre@linaro.org> > Cc: Leif Lindholm <leif.lindholm@arm.com> Acked-by: Nicolas Pitre <nico@linaro.org> > --- > arch/arm/kernel/kprobes-test-arm.c | 4 ++++ > 1 file changed, 4 insertions(+) > > diff --git a/arch/arm/kernel/kprobes-test-arm.c b/arch/arm/kernel/kprobes-test-arm.c > index 38c1a3b..58dd6c3 100644 > --- a/arch/arm/kernel/kprobes-test-arm.c > +++ b/arch/arm/kernel/kprobes-test-arm.c > @@ -367,9 +367,11 @@ void kprobe_arm_test_cases(void) > TEST_UNSUPPORTED(".word 0xe0500090 @ undef") > TEST_UNSUPPORTED(".word 0xe05fff9f @ undef") > > +#if __LINUX_ARM_ARCH__ >= 7 > TEST_RRR( "mls r0, r",1, VAL1,", r",2, VAL2,", r",3, VAL3,"") > TEST_RRR( "mlshi r7, r",8, VAL3,", r",9, VAL1,", r",10, VAL2,"") > TEST_RR( "mls lr, r",1, VAL2,", r",2, VAL3,", r13") > +#endif > TEST_UNSUPPORTED(".word 0xe06f3291 @ mls pc, r1, r2, r3") > TEST_UNSUPPORTED(".word 0xe060329f @ mls r0, pc, r2, r3") > TEST_UNSUPPORTED(".word 0xe0603f91 @ mls r0, r1, pc, r3") > @@ -456,6 +458,7 @@ void kprobe_arm_test_cases(void) > TEST_UNSUPPORTED(".word 0xe1700090") /* Unallocated space */ > #if __LINUX_ARM_ARCH__ >= 6 > TEST_UNSUPPORTED("ldrex r2, [sp]") > +#ifdef CONFIG_CPU_32v6K > TEST_UNSUPPORTED("strexd r0, r2, r3, [sp]") > TEST_UNSUPPORTED("ldrexd r2, r3, [sp]") > TEST_UNSUPPORTED("strexb r0, r2, [sp]") > @@ -463,6 +466,7 @@ void kprobe_arm_test_cases(void) > TEST_UNSUPPORTED("strexh r0, r2, [sp]") > TEST_UNSUPPORTED("ldrexh r2, [sp]") > #endif > +#endif > TEST_GROUP("Extra load/store instructions") > > TEST_RPR( "strh r",0, VAL1,", [r",1, 48,", -r",2, 24,"]") > -- > 1.7.10 > > > ^ permalink raw reply [flat|nested] 23+ messages in thread
* [PATCHv3 4/4] ARM: kprobes: make more tests conditional 2012-08-22 18:41 ` [PATCHv3 " Arnd Bergmann 2012-08-22 19:43 ` Nicolas Pitre @ 2012-08-22 23:51 ` Tixy 2012-08-23 12:09 ` [PATCHv4 " Arnd Bergmann 2012-08-23 12:25 ` [PATCHv3 " Will Deacon 1 sibling, 2 replies; 23+ messages in thread From: Tixy @ 2012-08-22 23:51 UTC (permalink / raw) To: linux-arm-kernel On Wed, 2012-08-22 at 18:41 +0000, Arnd Bergmann wrote: > On Wednesday 22 August 2012, Nicolas Pitre wrote: > > On Wed, 22 Aug 2012, Arnd Bergmann wrote: > > > > > > > > The ldrex/strex instructions are available on ARMv6. It's only the d > > > > variants (strexd/ldrexd) which are only available from ARMv6k. > > > > > > Ok. How is the version below then? I haven't tested this one yet. > > > > In fact, I think the b variants are ARMv6k+ as well. Only the plain > > (non b non d) variants are available on ARMv6. > > Ok, third attempt then. This leaves ldrex for ARMv6 but marks > {st,ld}rex{b,h,d} as V6K specific (which includes ARMv7). ARMv7 does set CPU_32v6K, because arch/arm/mm/Kconfig has config CPU_V7 bool "Support ARM V7 processor" if ARCH_INTEGRATOR || MACH_REALVIEW_EB || MACH_REALVIEW_PBX select CPU_32v6K select CPU_32v7 but this seems more for peripheral reasons not because all the various CPU configs systematically select the earlier architecture variants, e.g. CPU_V7 doesn't select CPU_32v6. So I would have been inclined to test for #if defined(CONFIG_CPU_32v6K) || (__LINUX_ARM_ARCH__ >= 7) but as the current patch is functionally correct I'm not going to suggest a v4 patch :-) If you do feel so inclined for a v4 however ;-) you could also make the mls part of the patch tidier by moving the added #endif to instead terminate the preceding "#if __LINUX_ARM_ARCH__ >= 6", i.e. @@ -367,8 +367,10 @@ void kprobe_arm_test_cases(void) TEST_UNSUPPORTED(".word 0xe0500090 @ undef") TEST_UNSUPPORTED(".word 0xe05fff9f @ undef") +#endif +#if __LINUX_ARM_ARCH__ >= 7 TEST_RRR( "mls r0, r",1, VAL1,", r",2, VAL2,", r",3, VAL3,"") TEST_RRR( "mlshi r7, r",8, VAL3,", r",9, VAL1,", r",10, VAL2,"") TEST_RR( "mls lr, r",1, VAL2,", r",2, VAL3,", r13") this looks funny in patch form, but the resulting source file is more consistent with other conditional tests. > Arnd > > 8<----- > From 6eab418c61c18393006f30d189e2f28d6e403040 Mon Sep 17 00:00:00 2001 > From: Arnd Bergmann <arnd@arndb.de> > Date: Thu, 16 Aug 2012 07:49:31 +0000 > Subject: [PATCH] ARM: kprobes: make more tests conditional > > The mls instruction is not available in ARMv6K or below, so we > should make the test conditional on at least ARMv7. ldrexd/strexd > are available in ARMv6K or ARMv7, which we can test by checking > the CONFIG_CPU_32v6K symbol. Just testing for ARMv6 is not enough. > > /tmp/ccuMTZ8D.s: Assembler messages: > /tmp/ccuMTZ8D.s:22188: Error: selected processor does not support ARM mode `mls r0,r1,r2,r3' > /tmp/ccuMTZ8D.s:22222: Error: selected processor does not support ARM mode `mlshi r7,r8,r9,r10' > /tmp/ccuMTZ8D.s:22252: Error: selected processor does not support ARM mode `mls lr,r1,r2,r13' > > Signed-off-by: Arnd Bergmann <arnd@arndb.de> > Cc: Jon Medhurst <tixy@yxit.co.uk> > Cc: Russell King <rmk+kernel@arm.linux.org.uk> > Cc: Nicolas Pitre <nicolas.pitre@linaro.org> > Cc: Leif Lindholm <leif.lindholm@arm.com> > --- > arch/arm/kernel/kprobes-test-arm.c | 4 ++++ > 1 file changed, 4 insertions(+) > > diff --git a/arch/arm/kernel/kprobes-test-arm.c b/arch/arm/kernel/kprobes-test-arm.c > index 38c1a3b..58dd6c3 100644 > --- a/arch/arm/kernel/kprobes-test-arm.c > +++ b/arch/arm/kernel/kprobes-test-arm.c > @@ -367,9 +367,11 @@ void kprobe_arm_test_cases(void) > TEST_UNSUPPORTED(".word 0xe0500090 @ undef") > TEST_UNSUPPORTED(".word 0xe05fff9f @ undef") > > +#if __LINUX_ARM_ARCH__ >= 7 > TEST_RRR( "mls r0, r",1, VAL1,", r",2, VAL2,", r",3, VAL3,"") > TEST_RRR( "mlshi r7, r",8, VAL3,", r",9, VAL1,", r",10, VAL2,"") > TEST_RR( "mls lr, r",1, VAL2,", r",2, VAL3,", r13") > +#endif > TEST_UNSUPPORTED(".word 0xe06f3291 @ mls pc, r1, r2, r3") > TEST_UNSUPPORTED(".word 0xe060329f @ mls r0, pc, r2, r3") > TEST_UNSUPPORTED(".word 0xe0603f91 @ mls r0, r1, pc, r3") > @@ -456,6 +458,7 @@ void kprobe_arm_test_cases(void) > TEST_UNSUPPORTED(".word 0xe1700090") /* Unallocated space */ > #if __LINUX_ARM_ARCH__ >= 6 > TEST_UNSUPPORTED("ldrex r2, [sp]") > +#ifdef CONFIG_CPU_32v6K > TEST_UNSUPPORTED("strexd r0, r2, r3, [sp]") > TEST_UNSUPPORTED("ldrexd r2, r3, [sp]") > TEST_UNSUPPORTED("strexb r0, r2, [sp]") > @@ -463,6 +466,7 @@ void kprobe_arm_test_cases(void) > TEST_UNSUPPORTED("strexh r0, r2, [sp]") > TEST_UNSUPPORTED("ldrexh r2, [sp]") > #endif > +#endif > TEST_GROUP("Extra load/store instructions") > > TEST_RPR( "strh r",0, VAL1,", [r",1, 48,", -r",2, 24,"]") ^ permalink raw reply [flat|nested] 23+ messages in thread
* [PATCHv4 4/4] ARM: kprobes: make more tests conditional 2012-08-22 23:51 ` Tixy @ 2012-08-23 12:09 ` Arnd Bergmann 2012-08-23 17:28 ` Tixy 2012-08-23 18:04 ` Nicolas Pitre 2012-08-23 12:25 ` [PATCHv3 " Will Deacon 1 sibling, 2 replies; 23+ messages in thread From: Arnd Bergmann @ 2012-08-23 12:09 UTC (permalink / raw) To: linux-arm-kernel On Wednesday 22 August 2012, Tixy wrote: > If you do feel so inclined for a v4 however ;-) you could also make the > mls part of the patch tidier by moving the added #endif to instead > terminate the preceding "#if __LINUX_ARM_ARCH__ >= 6", i.e. > > @@ -367,8 +367,10 @@ void kprobe_arm_test_cases(void) > TEST_UNSUPPORTED(".word 0xe0500090 @ undef") > TEST_UNSUPPORTED(".word 0xe05fff9f @ undef") > +#endif > > +#if __LINUX_ARM_ARCH__ >= 7 > TEST_RRR( "mls r0, r",1, VAL1,", r",2, VAL2,", r",3, VAL3,"") > TEST_RRR( "mlshi r7, r",8, VAL3,", r",9, VAL1,", r",10, VAL2,"") > TEST_RR( "mls lr, r",1, VAL2,", r",2, VAL3,", r13") > > > this looks funny in patch form, but the resulting source file is more > consistent with other conditional tests. Ok, here we go. Arnd commit abfef4db8731591fbb721262bd4712662aaa6d14 Author: Arnd Bergmann <arnd@arndb.de> Date: Thu Aug 16 07:49:31 2012 +0000 ARM: kprobes: make more tests conditional The mls instruction is not available in ARMv6K or below, so we should make the test conditional on at least ARMv7. ldrexd/strexd are available in ARMv6K or ARMv7, which we can test by checking the CONFIG_CPU_32v6K symbol. /tmp/ccuMTZ8D.s: Assembler messages: /tmp/ccuMTZ8D.s:22188: Error: selected processor does not support ARM mode `mls r0,r1,r2,r3' /tmp/ccuMTZ8D.s:22222: Error: selected processor does not support ARM mode `mlshi r7,r8,r9,r10' /tmp/ccuMTZ8D.s:22252: Error: selected processor does not support ARM mode `mls lr,r1,r2,r13' Signed-off-by: Arnd Bergmann <arnd@arndb.de> Cc: Jon Medhurst <tixy@yxit.co.uk> Cc: Russell King <rmk+kernel@arm.linux.org.uk> Cc: Nicolas Pitre <nicolas.pitre@linaro.org> Cc: Leif Lindholm <leif.lindholm@arm.com> diff --git a/arch/arm/kernel/kprobes-test-arm.c b/arch/arm/kernel/kprobes-test-arm.c index 38c1a3b..8393129 100644 --- a/arch/arm/kernel/kprobes-test-arm.c +++ b/arch/arm/kernel/kprobes-test-arm.c @@ -366,7 +366,9 @@ void kprobe_arm_test_cases(void) TEST_UNSUPPORTED(".word 0xe04f0392 @ umaal r0, pc, r2, r3") TEST_UNSUPPORTED(".word 0xe0500090 @ undef") TEST_UNSUPPORTED(".word 0xe05fff9f @ undef") +#endif +#if __LINUX_ARM_ARCH__ >= 7 TEST_RRR( "mls r0, r",1, VAL1,", r",2, VAL2,", r",3, VAL3,"") TEST_RRR( "mlshi r7, r",8, VAL3,", r",9, VAL1,", r",10, VAL2,"") TEST_RR( "mls lr, r",1, VAL2,", r",2, VAL3,", r13") @@ -456,6 +458,8 @@ void kprobe_arm_test_cases(void) TEST_UNSUPPORTED(".word 0xe1700090") /* Unallocated space */ #if __LINUX_ARM_ARCH__ >= 6 TEST_UNSUPPORTED("ldrex r2, [sp]") +#endif +#if (__LINUX_ARM_ARCH__ >= 7) || defined(CONFIG_CPU_32v6K) TEST_UNSUPPORTED("strexd r0, r2, r3, [sp]") TEST_UNSUPPORTED("ldrexd r2, r3, [sp]") TEST_UNSUPPORTED("strexb r0, r2, [sp]") ^ permalink raw reply related [flat|nested] 23+ messages in thread
* [PATCHv4 4/4] ARM: kprobes: make more tests conditional 2012-08-23 12:09 ` [PATCHv4 " Arnd Bergmann @ 2012-08-23 17:28 ` Tixy 2012-08-23 18:04 ` Nicolas Pitre 1 sibling, 0 replies; 23+ messages in thread From: Tixy @ 2012-08-23 17:28 UTC (permalink / raw) To: linux-arm-kernel On Thu, 2012-08-23 at 12:09 +0000, Arnd Bergmann wrote: > commit abfef4db8731591fbb721262bd4712662aaa6d14 > Author: Arnd Bergmann <arnd@arndb.de> > Date: Thu Aug 16 07:49:31 2012 +0000 > > ARM: kprobes: make more tests conditional > > The mls instruction is not available in ARMv6K or below, so we > should make the test conditional on at least ARMv7. ldrexd/strexd > are available in ARMv6K or ARMv7, which we can test by checking > the CONFIG_CPU_32v6K symbol. > > /tmp/ccuMTZ8D.s: Assembler messages: > /tmp/ccuMTZ8D.s:22188: Error: selected processor does not support ARM mode `mls r0,r1,r2,r3' > /tmp/ccuMTZ8D.s:22222: Error: selected processor does not support ARM mode `mlshi r7,r8,r9,r10' > /tmp/ccuMTZ8D.s:22252: Error: selected processor does not support ARM mode `mls lr,r1,r2,r13' > > Signed-off-by: Arnd Bergmann <arnd@arndb.de> > Cc: Jon Medhurst <tixy@yxit.co.uk> > Cc: Russell King <rmk+kernel@arm.linux.org.uk> > Cc: Nicolas Pitre <nicolas.pitre@linaro.org> > Cc: Leif Lindholm <leif.lindholm@arm.com> Thanks for your indulgence :-) With the white-space damage fixed... Acked-by: Jon Medhurst <tixy@yxit.co.uk> I test built this for v6, v6k and v7 before and after applying the patch to verify if behaves as expected, so you can add my Tested-by if you want. I also tried a v4 platform (forgot we supported those) and there will be a patch coming to fix that... > diff --git a/arch/arm/kernel/kprobes-test-arm.c b/arch/arm/kernel/kprobes-test-arm.c > index 38c1a3b..8393129 100644 > --- a/arch/arm/kernel/kprobes-test-arm.c > +++ b/arch/arm/kernel/kprobes-test-arm.c > @@ -366,7 +366,9 @@ void kprobe_arm_test_cases(void) > TEST_UNSUPPORTED(".word 0xe04f0392 @ umaal r0, pc, r2, r3") > TEST_UNSUPPORTED(".word 0xe0500090 @ undef") > TEST_UNSUPPORTED(".word 0xe05fff9f @ undef") > +#endif > > +#if __LINUX_ARM_ARCH__ >= 7 > TEST_RRR( "mls r0, r",1, VAL1,", r",2, VAL2,", r",3, VAL3,"") > TEST_RRR( "mlshi r7, r",8, VAL3,", r",9, VAL1,", r",10, VAL2,"") > TEST_RR( "mls lr, r",1, VAL2,", r",2, VAL3,", r13") > @@ -456,6 +458,8 @@ void kprobe_arm_test_cases(void) > TEST_UNSUPPORTED(".word 0xe1700090") /* Unallocated space */ > #if __LINUX_ARM_ARCH__ >= 6 > TEST_UNSUPPORTED("ldrex r2, [sp]") > +#endif > +#if (__LINUX_ARM_ARCH__ >= 7) || defined(CONFIG_CPU_32v6K) > TEST_UNSUPPORTED("strexd r0, r2, r3, [sp]") > TEST_UNSUPPORTED("ldrexd r2, r3, [sp]") > TEST_UNSUPPORTED("strexb r0, r2, [sp]") ^ permalink raw reply [flat|nested] 23+ messages in thread
* [PATCHv4 4/4] ARM: kprobes: make more tests conditional 2012-08-23 12:09 ` [PATCHv4 " Arnd Bergmann 2012-08-23 17:28 ` Tixy @ 2012-08-23 18:04 ` Nicolas Pitre 1 sibling, 0 replies; 23+ messages in thread From: Nicolas Pitre @ 2012-08-23 18:04 UTC (permalink / raw) To: linux-arm-kernel On Thu, 23 Aug 2012, Arnd Bergmann wrote: > On Wednesday 22 August 2012, Tixy wrote: > > > If you do feel so inclined for a v4 however ;-) you could also make the > > mls part of the patch tidier by moving the added #endif to instead > > terminate the preceding "#if __LINUX_ARM_ARCH__ >= 6", i.e. > > > > @@ -367,8 +367,10 @@ void kprobe_arm_test_cases(void) > > TEST_UNSUPPORTED(".word 0xe0500090 @ undef") > > TEST_UNSUPPORTED(".word 0xe05fff9f @ undef") > > +#endif > > > > +#if __LINUX_ARM_ARCH__ >= 7 > > TEST_RRR( "mls r0, r",1, VAL1,", r",2, VAL2,", r",3, VAL3,"") > > TEST_RRR( "mlshi r7, r",8, VAL3,", r",9, VAL1,", r",10, VAL2,"") > > TEST_RR( "mls lr, r",1, VAL2,", r",2, VAL3,", r13") > > > > > > this looks funny in patch form, but the resulting source file is more > > consistent with other conditional tests. > > Ok, here we go. > > Arnd > > > commit abfef4db8731591fbb721262bd4712662aaa6d14 > Author: Arnd Bergmann <arnd@arndb.de> > Date: Thu Aug 16 07:49:31 2012 +0000 > > ARM: kprobes: make more tests conditional > > The mls instruction is not available in ARMv6K or below, so we > should make the test conditional on at least ARMv7. ldrexd/strexd > are available in ARMv6K or ARMv7, which we can test by checking > the CONFIG_CPU_32v6K symbol. > > /tmp/ccuMTZ8D.s: Assembler messages: > /tmp/ccuMTZ8D.s:22188: Error: selected processor does not support ARM mode `mls r0,r1,r2,r3' > /tmp/ccuMTZ8D.s:22222: Error: selected processor does not support ARM mode `mlshi r7,r8,r9,r10' > /tmp/ccuMTZ8D.s:22252: Error: selected processor does not support ARM mode `mls lr,r1,r2,r13' > > Signed-off-by: Arnd Bergmann <arnd@arndb.de> > Cc: Jon Medhurst <tixy@yxit.co.uk> > Cc: Russell King <rmk+kernel@arm.linux.org.uk> > Cc: Nicolas Pitre <nicolas.pitre@linaro.org> > Cc: Leif Lindholm <leif.lindholm@arm.com> Acked-by: Nicolas Pitre <nico@linaro.org> > > diff --git a/arch/arm/kernel/kprobes-test-arm.c b/arch/arm/kernel/kprobes-test-arm.c > index 38c1a3b..8393129 100644 > --- a/arch/arm/kernel/kprobes-test-arm.c > +++ b/arch/arm/kernel/kprobes-test-arm.c > @@ -366,7 +366,9 @@ void kprobe_arm_test_cases(void) > TEST_UNSUPPORTED(".word 0xe04f0392 @ umaal r0, pc, r2, r3") > TEST_UNSUPPORTED(".word 0xe0500090 @ undef") > TEST_UNSUPPORTED(".word 0xe05fff9f @ undef") > +#endif > > +#if __LINUX_ARM_ARCH__ >= 7 > TEST_RRR( "mls r0, r",1, VAL1,", r",2, VAL2,", r",3, VAL3,"") > TEST_RRR( "mlshi r7, r",8, VAL3,", r",9, VAL1,", r",10, VAL2,"") > TEST_RR( "mls lr, r",1, VAL2,", r",2, VAL3,", r13") > @@ -456,6 +458,8 @@ void kprobe_arm_test_cases(void) > TEST_UNSUPPORTED(".word 0xe1700090") /* Unallocated space */ > #if __LINUX_ARM_ARCH__ >= 6 > TEST_UNSUPPORTED("ldrex r2, [sp]") > +#endif > +#if (__LINUX_ARM_ARCH__ >= 7) || defined(CONFIG_CPU_32v6K) > TEST_UNSUPPORTED("strexd r0, r2, r3, [sp]") > TEST_UNSUPPORTED("ldrexd r2, r3, [sp]") > TEST_UNSUPPORTED("strexb r0, r2, [sp]") > ^ permalink raw reply [flat|nested] 23+ messages in thread
* [PATCHv3 4/4] ARM: kprobes: make more tests conditional 2012-08-22 23:51 ` Tixy 2012-08-23 12:09 ` [PATCHv4 " Arnd Bergmann @ 2012-08-23 12:25 ` Will Deacon 1 sibling, 0 replies; 23+ messages in thread From: Will Deacon @ 2012-08-23 12:25 UTC (permalink / raw) To: linux-arm-kernel On Thu, Aug 23, 2012 at 12:51:01AM +0100, Tixy wrote: > On Wed, 2012-08-22 at 18:41 +0000, Arnd Bergmann wrote: > > On Wednesday 22 August 2012, Nicolas Pitre wrote: > > > On Wed, 22 Aug 2012, Arnd Bergmann wrote: > > > > > > > > > > The ldrex/strex instructions are available on ARMv6. It's only the d > > > > > variants (strexd/ldrexd) which are only available from ARMv6k. > > > > > > > > Ok. How is the version below then? I haven't tested this one yet. > > > > > > In fact, I think the b variants are ARMv6k+ as well. Only the plain > > > (non b non d) variants are available on ARMv6. > > > > Ok, third attempt then. This leaves ldrex for ARMv6 but marks > > {st,ld}rex{b,h,d} as V6K specific (which includes ARMv7). > > ARMv7 does set CPU_32v6K, because arch/arm/mm/Kconfig has > > config CPU_V7 > bool "Support ARM V7 processor" if ARCH_INTEGRATOR || MACH_REALVIEW_EB || MACH_REALVIEW_PBX > select CPU_32v6K > select CPU_32v7 > > but this seems more for peripheral reasons not because all the various > CPU configs systematically select the earlier architecture variants, > e.g. CPU_V7 doesn't select CPU_32v6. > > So I would have been inclined to test for > > #if defined(CONFIG_CPU_32v6K) || (__LINUX_ARM_ARCH__ >= 7) FWIW, the selection of the optimised atomic64 implementation for ARM (which uses the double-word exclusive instructions) boils down to CONFIG_CPU_32v6K, so I think the additional __LINUX_ARM_ARCH__ check is probably overkill. Will ^ permalink raw reply [flat|nested] 23+ messages in thread
end of thread, other threads:[~2012-08-23 18:04 UTC | newest] Thread overview: 23+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2012-08-22 14:29 [PATCH 0/4] ARM: patches for randconfig build errors Arnd Bergmann 2012-08-22 14:29 ` [PATCH 1/4] ARM: export read_current_timer Arnd Bergmann 2012-08-22 17:15 ` Stephen Boyd 2012-08-22 17:49 ` Will Deacon 2012-08-22 17:57 ` Stephen Boyd 2012-08-22 17:58 ` Will Deacon 2012-08-23 4:23 ` Shinya Kuribayashi 2012-08-23 3:56 ` Shinya Kuribayashi 2012-08-22 14:29 ` [PATCH 2/4] ARM: allow PID_IN_CONTEXTIDR only for ARMv7 Arnd Bergmann 2012-08-22 14:39 ` Will Deacon 2012-08-22 14:44 ` Arnd Bergmann 2012-08-22 14:29 ` [PATCH 3/4] ARM: export set_irq_flags/irq_set_chip_and_handler Arnd Bergmann 2012-08-22 14:29 ` [PATCH 4/4] ARM: kprobes: make more tests conditional Arnd Bergmann 2012-08-22 14:42 ` Nicolas Pitre 2012-08-22 15:19 ` Arnd Bergmann 2012-08-22 15:38 ` Nicolas Pitre 2012-08-22 18:41 ` [PATCHv3 " Arnd Bergmann 2012-08-22 19:43 ` Nicolas Pitre 2012-08-22 23:51 ` Tixy 2012-08-23 12:09 ` [PATCHv4 " Arnd Bergmann 2012-08-23 17:28 ` Tixy 2012-08-23 18:04 ` Nicolas Pitre 2012-08-23 12:25 ` [PATCHv3 " Will Deacon
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).