From mboxrd@z Thu Jan 1 00:00:00 1970 From: Wei Wang Subject: [PATCH v3 04/11] x86/intel_pstate: relocate the driver register function Date: Thu, 11 Jun 2015 16:27:10 +0800 Message-ID: <1434011230-17052-1-git-send-email-wei.w.wang@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: xen-devel@lists.xen.org, jbeulich@suse.com Cc: andrew.cooper3@citrix.com, Wei Wang List-Id: xen-devel@lists.xenproject.org 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 --- 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