ACPI: CPPC: clean up acpi_get_psd_map()
authorLiguang Zhang <zhangliguang@linux.alibaba.com>
Thu, 26 Mar 2020 14:29:10 +0000 (22:29 +0800)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Sat, 28 Mar 2020 12:25:41 +0000 (13:25 +0100)
In acpi_get_psd_map() variable all_cpu_data[] can't be NULL and variable
match_cpc_ptr has been checked before, no need check again at the end of
the funchtion.

Some additional optimizations can be made on top of that.

Signed-off-by: Liguang Zhang <zhangliguang@linux.alibaba.com>
[ rjw: Subject & changelog ]
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
drivers/acpi/cppc_acpi.c

index a1a858a..8b2e89c 100644 (file)
@@ -438,13 +438,10 @@ int acpi_get_psd_map(struct cppc_cpudata **all_cpu_data)
         * domain info.
         */
        for_each_possible_cpu(i) {
-               pr = all_cpu_data[i];
-               if (!pr)
-                       continue;
-
                if (cpumask_test_cpu(i, covered_cpus))
                        continue;
 
+               pr = all_cpu_data[i];
                cpc_ptr = per_cpu(cpc_desc_ptr, i);
                if (!cpc_ptr) {
                        retval = -EFAULT;
@@ -495,44 +492,28 @@ int acpi_get_psd_map(struct cppc_cpudata **all_cpu_data)
                        cpumask_set_cpu(j, pr->shared_cpu_map);
                }
 
-               for_each_possible_cpu(j) {
+               for_each_cpu(j, pr->shared_cpu_map) {
                        if (i == j)
                                continue;
 
                        match_pr = all_cpu_data[j];
-                       if (!match_pr)
-                               continue;
-
-                       match_cpc_ptr = per_cpu(cpc_desc_ptr, j);
-                       if (!match_cpc_ptr) {
-                               retval = -EFAULT;
-                               goto err_ret;
-                       }
-
-                       match_pdomain = &(match_cpc_ptr->domain_info);
-                       if (match_pdomain->domain != pdomain->domain)
-                               continue;
-
                        match_pr->shared_type = pr->shared_type;
                        cpumask_copy(match_pr->shared_cpu_map,
                                     pr->shared_cpu_map);
                }
        }
+       goto out;
 
 err_ret:
        for_each_possible_cpu(i) {
                pr = all_cpu_data[i];
-               if (!pr)
-                       continue;
 
                /* Assume no coordination on any error parsing domain info */
-               if (retval) {
-                       cpumask_clear(pr->shared_cpu_map);
-                       cpumask_set_cpu(i, pr->shared_cpu_map);
-                       pr->shared_type = CPUFREQ_SHARED_TYPE_ALL;
-               }
+               cpumask_clear(pr->shared_cpu_map);
+               cpumask_set_cpu(i, pr->shared_cpu_map);
+               pr->shared_type = CPUFREQ_SHARED_TYPE_ALL;
        }
-
+out:
        free_cpumask_var(covered_cpus);
        return retval;
 }