David Vrabel
2012-Aug-02 13:04 UTC
[PATCH] cpufreq: P state stats aren''t available if there is no cpufreq driver
From: David Vrabel <david.vrabel@citrix.com>
If there is no cpufreq driver (e.g., with an AMD Opteron 8212) then
reading the P state statistics causes a deadlock as an uninitialized
spinlock is locked in do_get_pm_info(). The spinlock is initialized in
cpufreq_statistic_init() which is not called if cpufreq_driver == NULL.
Signed-off-by: David Vrabel <david.vrabel@citrix.com>
---
xen/drivers/acpi/pmstat.c | 2 ++
1 files changed, 2 insertions(+), 0 deletions(-)
diff --git a/xen/drivers/acpi/pmstat.c b/xen/drivers/acpi/pmstat.c
index 8788f01..698711e 100644
--- a/xen/drivers/acpi/pmstat.c
+++ b/xen/drivers/acpi/pmstat.c
@@ -66,6 +66,8 @@ int do_get_pm_info(struct xen_sysctl_get_pmstat *op)
case PMSTAT_PX:
if ( !(xen_processor_pmbits & XEN_PROCESSOR_PM_PX) )
return -ENODEV;
+ if ( !cpufreq_driver )
+ return -ENODEV;
if ( !pmpt || !(pmpt->perf.init & XEN_PX_INIT) )
return -EINVAL;
break;
--
1.7.2.5