aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/oprofile
diff options
context:
space:
mode:
authorRussell King <rmk@dyn-67.arm.linux.org.uk>2005-10-28 09:52:30 -0400
committerRussell King <rmk+kernel@arm.linux.org.uk>2005-10-28 09:52:30 -0400
commit7c5b3fc20807279d8f8e78f1e2ef275128668796 (patch)
tree393e609ef9e6cd32c9fbce258686a462b33b4ce8 /arch/arm/oprofile
parentb5893c56ca7e664aef010a71c2638db768d4e996 (diff)
[ARM] 2/4 Fix oprofile suspend/resume
The oprofile suspend/resume was missing locking. If we failed to start oprofile on resume, we still reported that it was enabled. Instead, disable oprofile on error. Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Diffstat (limited to 'arch/arm/oprofile')
-rw-r--r--arch/arm/oprofile/common.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/arch/arm/oprofile/common.c b/arch/arm/oprofile/common.c
index 5b1d752edbc..02e5d6f4516 100644
--- a/arch/arm/oprofile/common.c
+++ b/arch/arm/oprofile/common.c
@@ -78,15 +78,19 @@ static void pmu_stop(void)
78#ifdef CONFIG_PM 78#ifdef CONFIG_PM
79static int pmu_suspend(struct sys_device *dev, pm_message_t state) 79static int pmu_suspend(struct sys_device *dev, pm_message_t state)
80{ 80{
81 down(&pmu_sem);
81 if (pmu_enabled) 82 if (pmu_enabled)
82 pmu_stop(); 83 pmu_model->stop();
84 up(&pmu_sem);
83 return 0; 85 return 0;
84} 86}
85 87
86static int pmu_resume(struct sys_device *dev) 88static int pmu_resume(struct sys_device *dev)
87{ 89{
88 if (pmu_enabled) 90 down(&pmu_sem);
89 pmu_start(); 91 if (pmu_enabled && pmu_model->start())
92 pmu_enabled = 0;
93 up(&pmu_sem);
90 return 0; 94 return 0;
91} 95}
92 96