aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHeiko Carstens <heiko.carstens@de.ibm.com>2016-06-11 05:08:10 -0400
committerMartin Schwidefsky <schwidefsky@de.ibm.com>2016-06-28 03:32:25 -0400
commit2764196f45be5efe1c9e71bf766ef6291ee86339 (patch)
tree951c71b7bebac978a2efd5f0f22826f560321888
parent93dd49d0028c66be9f0404d23dd6817b876cc6dc (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.h12
-rw-r--r--arch/s390/kernel/perf_cpum_sf.c5
-rw-r--r--arch/s390/kernel/perf_event.c30
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
91int perf_reserve_sampling(void);
92void perf_release_sampling(void);
93#else /* CONFIG_PERF_EVENTS */
94static inline int perf_reserve_sampling(void)
95{
96 return 0;
97}
98static 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
607static int reserve_pmc_hardware(void) 606static 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 */
253static DEFINE_SPINLOCK(perf_hw_owner_lock);
254static void *perf_sampling_owner;
255
256int 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}
271EXPORT_SYMBOL(perf_reserve_sampling);
272
273void 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}
280EXPORT_SYMBOL(perf_release_sampling);