diff options
Diffstat (limited to 'arch/s390/oprofile/init.c')
-rw-r--r-- | arch/s390/oprofile/init.c | 23 |
1 files changed, 20 insertions, 3 deletions
diff --git a/arch/s390/oprofile/init.c b/arch/s390/oprofile/init.c index 04e1b6a85362..9ffe645d5989 100644 --- a/arch/s390/oprofile/init.c +++ b/arch/s390/oprofile/init.c | |||
@@ -10,6 +10,7 @@ | |||
10 | */ | 10 | */ |
11 | 11 | ||
12 | #include <linux/oprofile.h> | 12 | #include <linux/oprofile.h> |
13 | #include <linux/perf_event.h> | ||
13 | #include <linux/init.h> | 14 | #include <linux/init.h> |
14 | #include <linux/errno.h> | 15 | #include <linux/errno.h> |
15 | #include <linux/fs.h> | 16 | #include <linux/fs.h> |
@@ -67,6 +68,21 @@ module_param_call(cpu_type, set_cpu_type, NULL, NULL, 0); | |||
67 | MODULE_PARM_DESC(cpu_type, "Force legacy basic mode sampling" | 68 | MODULE_PARM_DESC(cpu_type, "Force legacy basic mode sampling" |
68 | "(report cpu_type \"timer\""); | 69 | "(report cpu_type \"timer\""); |
69 | 70 | ||
71 | static int __oprofile_hwsampler_start(void) | ||
72 | { | ||
73 | int retval; | ||
74 | |||
75 | retval = hwsampler_allocate(oprofile_sdbt_blocks, oprofile_sdb_blocks); | ||
76 | if (retval) | ||
77 | return retval; | ||
78 | |||
79 | retval = hwsampler_start_all(oprofile_hw_interval); | ||
80 | if (retval) | ||
81 | hwsampler_deallocate(); | ||
82 | |||
83 | return retval; | ||
84 | } | ||
85 | |||
70 | static int oprofile_hwsampler_start(void) | 86 | static int oprofile_hwsampler_start(void) |
71 | { | 87 | { |
72 | int retval; | 88 | int retval; |
@@ -76,13 +92,13 @@ static int oprofile_hwsampler_start(void) | |||
76 | if (!hwsampler_running) | 92 | if (!hwsampler_running) |
77 | return timer_ops.start(); | 93 | return timer_ops.start(); |
78 | 94 | ||
79 | retval = hwsampler_allocate(oprofile_sdbt_blocks, oprofile_sdb_blocks); | 95 | retval = perf_reserve_sampling(); |
80 | if (retval) | 96 | if (retval) |
81 | return retval; | 97 | return retval; |
82 | 98 | ||
83 | retval = hwsampler_start_all(oprofile_hw_interval); | 99 | retval = __oprofile_hwsampler_start(); |
84 | if (retval) | 100 | if (retval) |
85 | hwsampler_deallocate(); | 101 | perf_release_sampling(); |
86 | 102 | ||
87 | return retval; | 103 | return retval; |
88 | } | 104 | } |
@@ -96,6 +112,7 @@ static void oprofile_hwsampler_stop(void) | |||
96 | 112 | ||
97 | hwsampler_stop_all(); | 113 | hwsampler_stop_all(); |
98 | hwsampler_deallocate(); | 114 | hwsampler_deallocate(); |
115 | perf_release_sampling(); | ||
99 | return; | 116 | return; |
100 | } | 117 | } |
101 | 118 | ||