* [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: Russell King Cc: linux-arm-kernel, linux-kernel, Arnd Bergmann, Jon Medhurst, Leif Lindholm, Linus Walleij, Magnus Damm, Nicolas Pitre, Rafael J. Wysocki, Shinya Kuribayashi, Stephen Boyd, Thomas Gleixner, Will Deacon 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: Russell King Cc: linux-arm-kernel, linux-kernel, Arnd Bergmann, Shinya Kuribayashi, Stephen Boyd, Will Deacon 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
* Re: [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: Arnd Bergmann Cc: Russell King, linux-arm-kernel, linux-kernel, Shinya Kuribayashi, Will Deacon 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
* Re: [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: Stephen Boyd Cc: Arnd Bergmann, Russell King, linux-arm-kernel, linux-kernel, Shinya Kuribayashi 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
* Re: [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: Will Deacon Cc: Arnd Bergmann, Russell King, linux-arm-kernel, linux-kernel, Shinya Kuribayashi 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
* Re: [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: Stephen Boyd Cc: Arnd Bergmann, Russell King, linux-arm-kernel, linux-kernel, Shinya Kuribayashi 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
* Re: [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: will.deacon; +Cc: sboyd, arnd, rmk+kernel, linux-arm-kernel, linux-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
* Re: [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: will.deacon; +Cc: sboyd, arnd, rmk+kernel, linux-arm-kernel, linux-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: Russell King; +Cc: linux-arm-kernel, linux-kernel, Arnd Bergmann, Will Deacon 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
* Re: [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: Arnd Bergmann; +Cc: Russell King, linux-arm-kernel, linux-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
* Re: [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; +Cc: Will Deacon, Russell King, linux-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: Russell King Cc: linux-arm-kernel, linux-kernel, Arnd Bergmann, Magnus Damm, Linus Walleij, Rafael J. Wysocki, Thomas Gleixner 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: Russell King Cc: linux-arm-kernel, linux-kernel, Arnd Bergmann, Jon Medhurst, Nicolas Pitre, Leif Lindholm 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
* Re: [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: Arnd Bergmann Cc: Russell King, linux-arm-kernel, linux-kernel, Jon Medhurst, Leif Lindholm 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
* Re: [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: Nicolas Pitre Cc: Russell King, linux-arm-kernel, linux-kernel, Jon Medhurst, Leif Lindholm 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
* Re: [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: Arnd Bergmann Cc: Russell King, linux-arm-kernel, linux-kernel, Jon Medhurst, Leif Lindholm 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 Cc: Nicolas Pitre, Russell King, Leif Lindholm, linux-kernel, Jon Medhurst 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
* Re: [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: Arnd Bergmann Cc: linux-arm-kernel, Russell King, Leif Lindholm, linux-kernel, Jon Medhurst 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
* Re: [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: Arnd Bergmann Cc: linux-arm-kernel, Nicolas Pitre, Russell King, Leif Lindholm, linux-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
* Re: [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: Tixy Cc: linux-arm-kernel, Nicolas Pitre, Russell King, Leif Lindholm, linux-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
* Re: [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: Arnd Bergmann Cc: linux-arm-kernel, Nicolas Pitre, Russell King, Leif Lindholm, linux-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
* Re: [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: Arnd Bergmann Cc: Tixy, linux-arm-kernel, Russell King, Leif Lindholm, linux-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
* Re: [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: Tixy Cc: Arnd Bergmann, Nicolas Pitre, Russell King, Leif Lindholm, linux-arm-kernel, linux-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).