[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH v2 5/9] x86/intel_pstate: relocate the driver register/unregister function
Register/unregister the CPU hotplug notifier when the driver is registered, and move the driver register/unregister function to the cpufreq.c. Signed-off-by: Wei Wang <wei.w.wang@xxxxxxxxx> --- xen/drivers/cpufreq/cpufreq.c | 27 +++++++++++++++++++++++---- xen/include/acpi/cpufreq/cpufreq.h | 28 ++-------------------------- 2 files changed, 25 insertions(+), 30 deletions(-) diff --git a/xen/drivers/cpufreq/cpufreq.c b/xen/drivers/cpufreq/cpufreq.c index ab66884..1a03404 100644 --- a/xen/drivers/cpufreq/cpufreq.c +++ b/xen/drivers/cpufreq/cpufreq.c @@ -630,12 +630,31 @@ 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); +int cpufreq_unregister_driver(struct cpufreq_driver *driver) +{ + if (!cpufreq_driver || (driver != cpufreq_driver)) + return -EINVAL; + + cpufreq_driver = NULL; + + unregister_cpu_notifier(&cpu_nfb); + + return 0; +} diff --git a/xen/include/acpi/cpufreq/cpufreq.h b/xen/include/acpi/cpufreq/cpufreq.h index 67c9be2..85a055f 100644 --- a/xen/include/acpi/cpufreq/cpufreq.h +++ b/xen/include/acpi/cpufreq/cpufreq.h @@ -167,32 +167,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@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |