diff options
author | Heiko Carstens <heiko.carstens@de.ibm.com> | 2016-06-11 05:08:10 -0400 |
---|---|---|
committer | Martin Schwidefsky <schwidefsky@de.ibm.com> | 2016-06-28 03:32:25 -0400 |
commit | 2764196f45be5efe1c9e71bf766ef6291ee86339 (patch) | |
tree | 951c71b7bebac978a2efd5f0f22826f560321888 | |
parent | 93dd49d0028c66be9f0404d23dd6817b876cc6dc (diff) |
s390/perf: remove perf_release/reserver_sampling functions
Now that the oprofile sampling code is gone there is only one user of
the sampling facility left. Therefore the reserve and release
functions can be removed.
Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Reviewed-by: Hendrik Brueckner <brueckner@linux.vnet.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
-rw-r--r-- | arch/s390/include/asm/perf_event.h | 12 | ||||
-rw-r--r-- | arch/s390/kernel/perf_cpum_sf.c | 5 | ||||
-rw-r--r-- | arch/s390/kernel/perf_event.c | 30 |
3 files changed, 0 insertions, 47 deletions
diff --git a/arch/s390/include/asm/perf_event.h b/arch/s390/include/asm/perf_event.h index 1f7ff85c5e4c..c64c0befd3f3 100644 --- a/arch/s390/include/asm/perf_event.h +++ b/arch/s390/include/asm/perf_event.h | |||
@@ -86,16 +86,4 @@ struct sf_raw_sample { | |||
86 | u8 padding[]; /* Padding to next multiple of 8 */ | 86 | u8 padding[]; /* Padding to next multiple of 8 */ |
87 | } __packed; | 87 | } __packed; |
88 | 88 | ||
89 | /* Perf hardware reserve and release functions */ | ||
90 | #ifdef CONFIG_PERF_EVENTS | ||
91 | int perf_reserve_sampling(void); | ||
92 | void perf_release_sampling(void); | ||
93 | #else /* CONFIG_PERF_EVENTS */ | ||
94 | static inline int perf_reserve_sampling(void) | ||
95 | { | ||
96 | return 0; | ||
97 | } | ||
98 | static inline void perf_release_sampling(void) {} | ||
99 | #endif /* CONFIG_PERF_EVENTS */ | ||
100 | |||
101 | #endif /* _ASM_S390_PERF_EVENT_H */ | 89 | #endif /* _ASM_S390_PERF_EVENT_H */ |
diff --git a/arch/s390/kernel/perf_cpum_sf.c b/arch/s390/kernel/perf_cpum_sf.c index a8e832166417..9ea26dface38 100644 --- a/arch/s390/kernel/perf_cpum_sf.c +++ b/arch/s390/kernel/perf_cpum_sf.c | |||
@@ -601,17 +601,12 @@ static void release_pmc_hardware(void) | |||
601 | 601 | ||
602 | irq_subclass_unregister(IRQ_SUBCLASS_MEASUREMENT_ALERT); | 602 | irq_subclass_unregister(IRQ_SUBCLASS_MEASUREMENT_ALERT); |
603 | on_each_cpu(setup_pmc_cpu, &flags, 1); | 603 | on_each_cpu(setup_pmc_cpu, &flags, 1); |
604 | perf_release_sampling(); | ||
605 | } | 604 | } |
606 | 605 | ||
607 | static int reserve_pmc_hardware(void) | 606 | static int reserve_pmc_hardware(void) |
608 | { | 607 | { |
609 | int flags = PMC_INIT; | 608 | int flags = PMC_INIT; |
610 | int err; | ||
611 | 609 | ||
612 | err = perf_reserve_sampling(); | ||
613 | if (err) | ||
614 | return err; | ||
615 | on_each_cpu(setup_pmc_cpu, &flags, 1); | 610 | on_each_cpu(setup_pmc_cpu, &flags, 1); |
616 | if (flags & PMC_FAILURE) { | 611 | if (flags & PMC_FAILURE) { |
617 | release_pmc_hardware(); | 612 | release_pmc_hardware(); |
diff --git a/arch/s390/kernel/perf_event.c b/arch/s390/kernel/perf_event.c index 87035fa58bbe..17431f63de00 100644 --- a/arch/s390/kernel/perf_event.c +++ b/arch/s390/kernel/perf_event.c | |||
@@ -248,33 +248,3 @@ ssize_t cpumf_events_sysfs_show(struct device *dev, | |||
248 | return sprintf(page, "event=0x%04llx,name=%s\n", | 248 | return sprintf(page, "event=0x%04llx,name=%s\n", |
249 | pmu_attr->id, attr->attr.name); | 249 | pmu_attr->id, attr->attr.name); |
250 | } | 250 | } |
251 | |||
252 | /* Reserve/release functions for sharing perf hardware */ | ||
253 | static DEFINE_SPINLOCK(perf_hw_owner_lock); | ||
254 | static void *perf_sampling_owner; | ||
255 | |||
256 | int perf_reserve_sampling(void) | ||
257 | { | ||
258 | int err; | ||
259 | |||
260 | err = 0; | ||
261 | spin_lock(&perf_hw_owner_lock); | ||
262 | if (perf_sampling_owner) { | ||
263 | pr_warn("The sampling facility is already reserved by %p\n", | ||
264 | perf_sampling_owner); | ||
265 | err = -EBUSY; | ||
266 | } else | ||
267 | perf_sampling_owner = __builtin_return_address(0); | ||
268 | spin_unlock(&perf_hw_owner_lock); | ||
269 | return err; | ||
270 | } | ||
271 | EXPORT_SYMBOL(perf_reserve_sampling); | ||
272 | |||
273 | void perf_release_sampling(void) | ||
274 | { | ||
275 | spin_lock(&perf_hw_owner_lock); | ||
276 | WARN_ON(!perf_sampling_owner); | ||
277 | perf_sampling_owner = NULL; | ||
278 | spin_unlock(&perf_hw_owner_lock); | ||
279 | } | ||
280 | EXPORT_SYMBOL(perf_release_sampling); | ||