From b478324c7fb04248f74bcd0076a6af93b23b0ce0 Mon Sep 17 00:00:00 2001 From: Taniya Das Date: Wed, 29 May 2019 10:31:21 +0530 Subject: [PATCH] cpufreq: qcom-cpufreq-hw: Initialize the spinlock before usage Initialization of the spinlock is required to avoid the below trace. cpufreq: driver qcom-cpufreq-hw up and running BUG: spinlock bad magic on CPU#7, swapper/0/1 lock: qcom_cpufreq_counter+0x128/0x140, .magic: 00000000, .owner: /-1, .owner_cpu: 0. Change-Id: I079ebd7c0009c3b634d2d5d41ac880da06cf8f6d Signed-off-by: Taniya Das --- drivers/cpufreq/qcom-cpufreq-hw.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/drivers/cpufreq/qcom-cpufreq-hw.c b/drivers/cpufreq/qcom-cpufreq-hw.c index 5aed4ae5fe5c..f53eddf5a7e3 100644 --- a/drivers/cpufreq/qcom-cpufreq-hw.c +++ b/drivers/cpufreq/qcom-cpufreq-hw.c @@ -438,10 +438,10 @@ static int qcom_resources_init(struct platform_device *pdev) static int qcom_cpufreq_hw_driver_probe(struct platform_device *pdev) { - int rc; struct cpu_cycle_counter_cb cycle_counter_cb = { .get_cpu_cycle_counter = qcom_cpufreq_get_cpu_cycle_counter, }; + int rc, cpu; /* Get the bases of cpufreq for domains */ rc = qcom_resources_init(pdev); @@ -456,6 +456,9 @@ static int qcom_cpufreq_hw_driver_probe(struct platform_device *pdev) return rc; } + for_each_possible_cpu(cpu) + spin_lock_init(&qcom_cpufreq_counter[cpu].lock); + rc = register_cpu_cycle_counter_cb(&cycle_counter_cb); if (rc) { dev_err(&pdev->dev, "cycle counter cb failed to register\n");