diff options
author | Russell King <rmk+kernel@arm.linux.org.uk> | 2010-12-15 14:19:25 -0500 |
---|---|---|
committer | Russell King <rmk+kernel@arm.linux.org.uk> | 2010-12-22 17:44:42 -0500 |
commit | 5e06b6492e53ab2a4e467763a9ee9f70b032c301 (patch) | |
tree | 6259d673f427d7194c6825bb1868ccf8b0ee21fe /arch | |
parent | 684e94cbcb5add60356d124166e40feb2174f0f1 (diff) |
ARM: ensure all sched_clock() implementations are notrace marked
ftrace requires sched_clock() to be notrace. Ensure that all
implementations are so marked. Also make sure that they include
linux/sched.h
Also ensure OMAP clocksource read functions are marked notrace as
they're used for sched_clock() too.
Tested-by: Santosh Shilimkar <santosh.shilimkar@ti.com>
Tested-by: Will Deacon <will.deacon@arm.com>
Tested-by: Mikael Pettersson <mikpe@it.uu.se>
Tested-by: Eric Miao <eric.y.miao@gmail.com>
Tested-by: Olof Johansson <olof@lixom.net>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Diffstat (limited to 'arch')
-rw-r--r-- | arch/arm/mach-ixp4xx/common.c | 2 | ||||
-rw-r--r-- | arch/arm/mach-mmp/time.c | 2 | ||||
-rw-r--r-- | arch/arm/mach-pxa/time.c | 2 | ||||
-rw-r--r-- | arch/arm/mach-sa1100/generic.c | 2 | ||||
-rw-r--r-- | arch/arm/mach-tegra/timer.c | 3 | ||||
-rw-r--r-- | arch/arm/mach-u300/timer.c | 1 | ||||
-rw-r--r-- | arch/arm/plat-iop/time.c | 3 | ||||
-rw-r--r-- | arch/arm/plat-nomadik/timer.c | 1 | ||||
-rw-r--r-- | arch/arm/plat-omap/counter_32k.c | 15 | ||||
-rw-r--r-- | arch/arm/plat-orion/time.c | 2 | ||||
-rw-r--r-- | arch/arm/plat-versatile/sched-clock.c | 2 |
11 files changed, 20 insertions, 15 deletions
diff --git a/arch/arm/mach-ixp4xx/common.c b/arch/arm/mach-ixp4xx/common.c index 82fc003aae8b..e0b91d8ef644 100644 --- a/arch/arm/mach-ixp4xx/common.c +++ b/arch/arm/mach-ixp4xx/common.c | |||
@@ -424,7 +424,7 @@ static void __init ixp4xx_clocksource_init(void) | |||
424 | /* | 424 | /* |
425 | * sched_clock() | 425 | * sched_clock() |
426 | */ | 426 | */ |
427 | unsigned long long sched_clock(void) | 427 | unsigned long long notrace sched_clock(void) |
428 | { | 428 | { |
429 | cycle_t cyc = ixp4xx_get_cycles(NULL); | 429 | cycle_t cyc = ixp4xx_get_cycles(NULL); |
430 | struct clocksource *cs = &clocksource_ixp4xx; | 430 | struct clocksource *cs = &clocksource_ixp4xx; |
diff --git a/arch/arm/mach-mmp/time.c b/arch/arm/mach-mmp/time.c index 0c0ab0931735..a2ea33d04e63 100644 --- a/arch/arm/mach-mmp/time.c +++ b/arch/arm/mach-mmp/time.c | |||
@@ -75,7 +75,7 @@ static inline uint32_t timer_read(void) | |||
75 | return __raw_readl(TIMERS_VIRT_BASE + TMR_CVWR(0)); | 75 | return __raw_readl(TIMERS_VIRT_BASE + TMR_CVWR(0)); |
76 | } | 76 | } |
77 | 77 | ||
78 | unsigned long long sched_clock(void) | 78 | unsigned long long notrace sched_clock(void) |
79 | { | 79 | { |
80 | unsigned long long v = cnt32_to_63(timer_read()); | 80 | unsigned long long v = cnt32_to_63(timer_read()); |
81 | return (v * tcr2ns_scale) >> TCR2NS_SCALE_FACTOR; | 81 | return (v * tcr2ns_scale) >> TCR2NS_SCALE_FACTOR; |
diff --git a/arch/arm/mach-pxa/time.c b/arch/arm/mach-pxa/time.c index caf92c0bfba5..b8d9dff00ad1 100644 --- a/arch/arm/mach-pxa/time.c +++ b/arch/arm/mach-pxa/time.c | |||
@@ -51,7 +51,7 @@ static void __init set_oscr2ns_scale(unsigned long oscr_rate) | |||
51 | oscr2ns_scale++; | 51 | oscr2ns_scale++; |
52 | } | 52 | } |
53 | 53 | ||
54 | unsigned long long sched_clock(void) | 54 | unsigned long long notrace sched_clock(void) |
55 | { | 55 | { |
56 | unsigned long long v = cnt32_to_63(OSCR); | 56 | unsigned long long v = cnt32_to_63(OSCR); |
57 | return (v * oscr2ns_scale) >> OSCR2NS_SCALE_FACTOR; | 57 | return (v * oscr2ns_scale) >> OSCR2NS_SCALE_FACTOR; |
diff --git a/arch/arm/mach-sa1100/generic.c b/arch/arm/mach-sa1100/generic.c index 3c1fcd696714..33b4969e9d51 100644 --- a/arch/arm/mach-sa1100/generic.c +++ b/arch/arm/mach-sa1100/generic.c | |||
@@ -119,7 +119,7 @@ unsigned int sa11x0_getspeed(unsigned int cpu) | |||
119 | * | 119 | * |
120 | * ( * 1E9 / 3686400 => * 78125 / 288) | 120 | * ( * 1E9 / 3686400 => * 78125 / 288) |
121 | */ | 121 | */ |
122 | unsigned long long sched_clock(void) | 122 | unsigned long long notrace sched_clock(void) |
123 | { | 123 | { |
124 | unsigned long long v = cnt32_to_63(OSCR); | 124 | unsigned long long v = cnt32_to_63(OSCR); |
125 | 125 | ||
diff --git a/arch/arm/mach-tegra/timer.c b/arch/arm/mach-tegra/timer.c index b49f2f5025f2..c52bd84652e5 100644 --- a/arch/arm/mach-tegra/timer.c +++ b/arch/arm/mach-tegra/timer.c | |||
@@ -18,6 +18,7 @@ | |||
18 | */ | 18 | */ |
19 | 19 | ||
20 | #include <linux/init.h> | 20 | #include <linux/init.h> |
21 | #include <linux/sched.h> | ||
21 | #include <linux/time.h> | 22 | #include <linux/time.h> |
22 | #include <linux/interrupt.h> | 23 | #include <linux/interrupt.h> |
23 | #include <linux/irq.h> | 24 | #include <linux/irq.h> |
@@ -110,7 +111,7 @@ static struct clocksource tegra_clocksource = { | |||
110 | .flags = CLOCK_SOURCE_IS_CONTINUOUS, | 111 | .flags = CLOCK_SOURCE_IS_CONTINUOUS, |
111 | }; | 112 | }; |
112 | 113 | ||
113 | unsigned long long sched_clock(void) | 114 | unsigned long long notrace sched_clock(void) |
114 | { | 115 | { |
115 | return cnt32_to_63(timer_readl(TIMERUS_CNTR_1US)) * 1000; | 116 | return cnt32_to_63(timer_readl(TIMERUS_CNTR_1US)) * 1000; |
116 | } | 117 | } |
diff --git a/arch/arm/mach-u300/timer.c b/arch/arm/mach-u300/timer.c index 377ff7ff9182..6c68fe797903 100644 --- a/arch/arm/mach-u300/timer.c +++ b/arch/arm/mach-u300/timer.c | |||
@@ -9,6 +9,7 @@ | |||
9 | * Author: Linus Walleij <linus.walleij@stericsson.com> | 9 | * Author: Linus Walleij <linus.walleij@stericsson.com> |
10 | */ | 10 | */ |
11 | #include <linux/interrupt.h> | 11 | #include <linux/interrupt.h> |
12 | #include <linux/sched.h> | ||
12 | #include <linux/time.h> | 13 | #include <linux/time.h> |
13 | #include <linux/timex.h> | 14 | #include <linux/timex.h> |
14 | #include <linux/clockchips.h> | 15 | #include <linux/clockchips.h> |
diff --git a/arch/arm/plat-iop/time.c b/arch/arm/plat-iop/time.c index 4332dc458ff9..d03a93295e60 100644 --- a/arch/arm/plat-iop/time.c +++ b/arch/arm/plat-iop/time.c | |||
@@ -17,6 +17,7 @@ | |||
17 | #include <linux/interrupt.h> | 17 | #include <linux/interrupt.h> |
18 | #include <linux/time.h> | 18 | #include <linux/time.h> |
19 | #include <linux/init.h> | 19 | #include <linux/init.h> |
20 | #include <linux/sched.h> | ||
20 | #include <linux/timex.h> | 21 | #include <linux/timex.h> |
21 | #include <linux/io.h> | 22 | #include <linux/io.h> |
22 | #include <linux/clocksource.h> | 23 | #include <linux/clocksource.h> |
@@ -52,7 +53,7 @@ static struct clocksource iop_clocksource = { | |||
52 | /* | 53 | /* |
53 | * IOP sched_clock() implementation via its clocksource. | 54 | * IOP sched_clock() implementation via its clocksource. |
54 | */ | 55 | */ |
55 | unsigned long long sched_clock(void) | 56 | unsigned long long notrace sched_clock(void) |
56 | { | 57 | { |
57 | cycle_t cyc = iop_clocksource_read(NULL); | 58 | cycle_t cyc = iop_clocksource_read(NULL); |
58 | struct clocksource *cs = &iop_clocksource; | 59 | struct clocksource *cs = &iop_clocksource; |
diff --git a/arch/arm/plat-nomadik/timer.c b/arch/arm/plat-nomadik/timer.c index b0bd6dfea52b..c3b8a2246b99 100644 --- a/arch/arm/plat-nomadik/timer.c +++ b/arch/arm/plat-nomadik/timer.c | |||
@@ -19,6 +19,7 @@ | |||
19 | #include <linux/err.h> | 19 | #include <linux/err.h> |
20 | #include <linux/cnt32_to_63.h> | 20 | #include <linux/cnt32_to_63.h> |
21 | #include <linux/timer.h> | 21 | #include <linux/timer.h> |
22 | #include <linux/sched.h> | ||
22 | #include <asm/mach/time.h> | 23 | #include <asm/mach/time.h> |
23 | 24 | ||
24 | #include <plat/mtu.h> | 25 | #include <plat/mtu.h> |
diff --git a/arch/arm/plat-omap/counter_32k.c b/arch/arm/plat-omap/counter_32k.c index 8f149f51cb46..aed301bfa2f9 100644 --- a/arch/arm/plat-omap/counter_32k.c +++ b/arch/arm/plat-omap/counter_32k.c | |||
@@ -16,6 +16,7 @@ | |||
16 | #include <linux/init.h> | 16 | #include <linux/init.h> |
17 | #include <linux/clk.h> | 17 | #include <linux/clk.h> |
18 | #include <linux/io.h> | 18 | #include <linux/io.h> |
19 | #include <linux/sched.h> | ||
19 | 20 | ||
20 | #include <plat/common.h> | 21 | #include <plat/common.h> |
21 | #include <plat/board.h> | 22 | #include <plat/board.h> |
@@ -44,7 +45,7 @@ | |||
44 | static u32 offset_32k __read_mostly; | 45 | static u32 offset_32k __read_mostly; |
45 | 46 | ||
46 | #ifdef CONFIG_ARCH_OMAP16XX | 47 | #ifdef CONFIG_ARCH_OMAP16XX |
47 | static cycle_t omap16xx_32k_read(struct clocksource *cs) | 48 | static cycle_t notrace omap16xx_32k_read(struct clocksource *cs) |
48 | { | 49 | { |
49 | return omap_readl(OMAP16XX_TIMER_32K_SYNCHRONIZED) - offset_32k; | 50 | return omap_readl(OMAP16XX_TIMER_32K_SYNCHRONIZED) - offset_32k; |
50 | } | 51 | } |
@@ -53,7 +54,7 @@ static cycle_t omap16xx_32k_read(struct clocksource *cs) | |||
53 | #endif | 54 | #endif |
54 | 55 | ||
55 | #ifdef CONFIG_ARCH_OMAP2420 | 56 | #ifdef CONFIG_ARCH_OMAP2420 |
56 | static cycle_t omap2420_32k_read(struct clocksource *cs) | 57 | static cycle_t notrace omap2420_32k_read(struct clocksource *cs) |
57 | { | 58 | { |
58 | return omap_readl(OMAP2420_32KSYNCT_BASE + 0x10) - offset_32k; | 59 | return omap_readl(OMAP2420_32KSYNCT_BASE + 0x10) - offset_32k; |
59 | } | 60 | } |
@@ -62,7 +63,7 @@ static cycle_t omap2420_32k_read(struct clocksource *cs) | |||
62 | #endif | 63 | #endif |
63 | 64 | ||
64 | #ifdef CONFIG_ARCH_OMAP2430 | 65 | #ifdef CONFIG_ARCH_OMAP2430 |
65 | static cycle_t omap2430_32k_read(struct clocksource *cs) | 66 | static cycle_t notrace omap2430_32k_read(struct clocksource *cs) |
66 | { | 67 | { |
67 | return omap_readl(OMAP2430_32KSYNCT_BASE + 0x10) - offset_32k; | 68 | return omap_readl(OMAP2430_32KSYNCT_BASE + 0x10) - offset_32k; |
68 | } | 69 | } |
@@ -71,7 +72,7 @@ static cycle_t omap2430_32k_read(struct clocksource *cs) | |||
71 | #endif | 72 | #endif |
72 | 73 | ||
73 | #ifdef CONFIG_ARCH_OMAP3 | 74 | #ifdef CONFIG_ARCH_OMAP3 |
74 | static cycle_t omap34xx_32k_read(struct clocksource *cs) | 75 | static cycle_t notrace omap34xx_32k_read(struct clocksource *cs) |
75 | { | 76 | { |
76 | return omap_readl(OMAP3430_32KSYNCT_BASE + 0x10) - offset_32k; | 77 | return omap_readl(OMAP3430_32KSYNCT_BASE + 0x10) - offset_32k; |
77 | } | 78 | } |
@@ -80,7 +81,7 @@ static cycle_t omap34xx_32k_read(struct clocksource *cs) | |||
80 | #endif | 81 | #endif |
81 | 82 | ||
82 | #ifdef CONFIG_ARCH_OMAP4 | 83 | #ifdef CONFIG_ARCH_OMAP4 |
83 | static cycle_t omap44xx_32k_read(struct clocksource *cs) | 84 | static cycle_t notrace omap44xx_32k_read(struct clocksource *cs) |
84 | { | 85 | { |
85 | return omap_readl(OMAP4430_32KSYNCT_BASE + 0x10) - offset_32k; | 86 | return omap_readl(OMAP4430_32KSYNCT_BASE + 0x10) - offset_32k; |
86 | } | 87 | } |
@@ -92,7 +93,7 @@ static cycle_t omap44xx_32k_read(struct clocksource *cs) | |||
92 | * Kernel assumes that sched_clock can be called early but may not have | 93 | * Kernel assumes that sched_clock can be called early but may not have |
93 | * things ready yet. | 94 | * things ready yet. |
94 | */ | 95 | */ |
95 | static cycle_t omap_32k_read_dummy(struct clocksource *cs) | 96 | static cycle_t notrace omap_32k_read_dummy(struct clocksource *cs) |
96 | { | 97 | { |
97 | return 0; | 98 | return 0; |
98 | } | 99 | } |
@@ -109,7 +110,7 @@ static struct clocksource clocksource_32k = { | |||
109 | * Returns current time from boot in nsecs. It's OK for this to wrap | 110 | * Returns current time from boot in nsecs. It's OK for this to wrap |
110 | * around for now, as it's just a relative time stamp. | 111 | * around for now, as it's just a relative time stamp. |
111 | */ | 112 | */ |
112 | unsigned long long sched_clock(void) | 113 | unsigned long long notrace sched_clock(void) |
113 | { | 114 | { |
114 | return clocksource_cyc2ns(clocksource_32k.read(&clocksource_32k), | 115 | return clocksource_cyc2ns(clocksource_32k.read(&clocksource_32k), |
115 | clocksource_32k.mult, clocksource_32k.shift); | 116 | clocksource_32k.mult, clocksource_32k.shift); |
diff --git a/arch/arm/plat-orion/time.c b/arch/arm/plat-orion/time.c index 11e2583e85e4..123f96f4194f 100644 --- a/arch/arm/plat-orion/time.c +++ b/arch/arm/plat-orion/time.c | |||
@@ -55,7 +55,7 @@ static u32 ticks_per_jiffy; | |||
55 | 55 | ||
56 | static unsigned long tclk2ns_scale; | 56 | static unsigned long tclk2ns_scale; |
57 | 57 | ||
58 | unsigned long long sched_clock(void) | 58 | unsigned long long notrace sched_clock(void) |
59 | { | 59 | { |
60 | unsigned long long v = cnt32_to_63(0xffffffff - readl(TIMER0_VAL)); | 60 | unsigned long long v = cnt32_to_63(0xffffffff - readl(TIMER0_VAL)); |
61 | return (v * tclk2ns_scale) >> TCLK2NS_SCALE_FACTOR; | 61 | return (v * tclk2ns_scale) >> TCLK2NS_SCALE_FACTOR; |
diff --git a/arch/arm/plat-versatile/sched-clock.c b/arch/arm/plat-versatile/sched-clock.c index 9696ddc238c9..42efd14ed4b3 100644 --- a/arch/arm/plat-versatile/sched-clock.c +++ b/arch/arm/plat-versatile/sched-clock.c | |||
@@ -42,7 +42,7 @@ | |||
42 | * long as there is always less than 89 seconds between successive | 42 | * long as there is always less than 89 seconds between successive |
43 | * calls to this function. | 43 | * calls to this function. |
44 | */ | 44 | */ |
45 | unsigned long long sched_clock(void) | 45 | unsigned long long notrace sched_clock(void) |
46 | { | 46 | { |
47 | unsigned long long v = cnt32_to_63(readl(REFCOUNTER)); | 47 | unsigned long long v = cnt32_to_63(readl(REFCOUNTER)); |
48 | 48 | ||