Register the CPU hotplug notifier when the driver is registered, and move the driver register function to the cpufreq.c.
Signed-off-by: Wei Wang <wei.w.w...@intel.com> --- xen/drivers/cpufreq/cpufreq.c | 15 ++++++++++++--- xen/include/acpi/cpufreq/cpufreq.h | 28 ++-------------------------- 2 files changed, 14 insertions(+), 29 deletions(-) diff --git a/xen/drivers/cpufreq/cpufreq.c b/xen/drivers/cpufreq/cpufreq.c index ab66884..7d186db 100644 --- a/xen/drivers/cpufreq/cpufreq.c +++ b/xen/drivers/cpufreq/cpufreq.c @@ -630,12 +630,21 @@ static struct notifier_block cpu_nfb = { .notifier_call = cpu_callback }; -static int __init cpufreq_presmp_init(void) +int cpufreq_register_driver(struct cpufreq_driver *driver_data) { void *cpu = (void *)(long)smp_processor_id(); cpu_callback(&cpu_nfb, CPU_ONLINE, cpu); + if (!driver_data || !driver_data->init + || !driver_data->verify || !driver_data->exit + || (!driver_data->target == !driver_data->setpolicy)) + return -EINVAL; + + if (cpufreq_driver) + return -EBUSY; + + cpufreq_driver = driver_data; + register_cpu_notifier(&cpu_nfb); + return 0; } -presmp_initcall(cpufreq_presmp_init); - diff --git a/xen/include/acpi/cpufreq/cpufreq.h b/xen/include/acpi/cpufreq/cpufreq.h index 60caf59..d10e4c7 100644 --- a/xen/include/acpi/cpufreq/cpufreq.h +++ b/xen/include/acpi/cpufreq/cpufreq.h @@ -171,32 +171,8 @@ struct cpufreq_driver { extern struct cpufreq_driver *cpufreq_driver; -static __inline__ -int cpufreq_register_driver(struct cpufreq_driver *driver_data) -{ - if (!driver_data || - !driver_data->init || - !driver_data->exit || - !driver_data->verify || - !driver_data->target) - return -EINVAL; - - if (cpufreq_driver) - return -EBUSY; - - cpufreq_driver = driver_data; - return 0; -} - -static __inline__ -int cpufreq_unregister_driver(struct cpufreq_driver *driver) -{ - if (!cpufreq_driver || (driver != cpufreq_driver)) - return -EINVAL; - - cpufreq_driver = NULL; - return 0; -} +extern int cpufreq_register_driver(struct cpufreq_driver *driver_data); +extern int cpufreq_unregister_driver(struct cpufreq_driver *driver); static __inline__ void cpufreq_verify_within_limits(struct cpufreq_policy *policy, -- 1.9.1 _______________________________________________ Xen-devel mailing list Xen-devel@lists.xen.org http://lists.xen.org/xen-devel