x86_32: apic/es7000_32, cpu_mask_to_apicid cleanup
authorJiri Slaby <jirislaby@gmail.com>
Mon, 2 Mar 2009 09:53:56 +0000 (10:53 +0100)
committerIngo Molnar <mingo@elte.hu>
Mon, 2 Mar 2009 10:20:33 +0000 (11:20 +0100)
Remove es7000_cpu_mask_to_apicid_cluster completely, because it's
almost the same as es7000_cpu_mask_to_apicid except 2 code paths.
One of them is about to be removed soon, the another should be
BAD_APICID (it's a fail path).

The _cluster one was not invoked on apic->cpu_mask_to_apicid_and
anyway, since there was no _cluster_and variant.

Also use newer cpumask functions.

Signed-off-by: Jiri Slaby <jirislaby@gmail.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
arch/x86/kernel/apic/es7000_32.c

index da37e2c..9b9e86f 100644 (file)
@@ -575,25 +575,21 @@ static int es7000_check_phys_apicid_present(int cpu_physical_apicid)
        return 1;
 }
 
-static unsigned int
-es7000_cpu_mask_to_apicid_cluster(const struct cpumask *cpumask)
+static unsigned int es7000_cpu_mask_to_apicid(const cpumask_t *cpumask)
 {
-       int cpus_found = 0;
-       int num_bits_set;
+       unsigned int cpu, num_bits_set, cpus_found = 0;
        int apicid;
-       int cpu;
 
        num_bits_set = cpumask_weight(cpumask);
        /* Return id to all */
        if (num_bits_set == nr_cpu_ids)
-               return 0xFF;
+               return es7000_cpu_to_logical_apicid(0);
        /*
         * The cpus in the mask must all be on the apic cluster.  If are not
         * on the same apicid cluster return default value of target_cpus():
         */
        cpu = cpumask_first(cpumask);
        apicid = es7000_cpu_to_logical_apicid(cpu);
-
        while (cpus_found < num_bits_set) {
                if (cpumask_test_cpu(cpu, cpumask)) {
                        int new_apicid = es7000_cpu_to_logical_apicid(cpu);
@@ -601,40 +597,6 @@ es7000_cpu_mask_to_apicid_cluster(const struct cpumask *cpumask)
                        if (APIC_CLUSTER(apicid) != APIC_CLUSTER(new_apicid)) {
                                WARN(1, "Not a valid mask!");
 
-                               return 0xFF;
-                       }
-                       apicid = new_apicid;
-                       cpus_found++;
-               }
-               cpu++;
-       }
-       return apicid;
-}
-
-static unsigned int es7000_cpu_mask_to_apicid(const cpumask_t *cpumask)
-{
-       int cpus_found = 0;
-       int num_bits_set;
-       int apicid;
-       int cpu;
-
-       num_bits_set = cpus_weight(*cpumask);
-       /* Return id to all */
-       if (num_bits_set == nr_cpu_ids)
-               return es7000_cpu_to_logical_apicid(0);
-       /*
-        * The cpus in the mask must all be on the apic cluster.  If are not
-        * on the same apicid cluster return default value of target_cpus():
-        */
-       cpu = first_cpu(*cpumask);
-       apicid = es7000_cpu_to_logical_apicid(cpu);
-       while (cpus_found < num_bits_set) {
-               if (cpu_isset(cpu, *cpumask)) {
-                       int new_apicid = es7000_cpu_to_logical_apicid(cpu);
-
-                       if (APIC_CLUSTER(apicid) != APIC_CLUSTER(new_apicid)) {
-                               printk("%s: Not a valid mask!\n", __func__);
-
                                return es7000_cpu_to_logical_apicid(0);
                        }
                        apicid = new_apicid;
@@ -739,7 +701,7 @@ struct apic apic_es7000_cluster = {
        .set_apic_id                    = NULL,
        .apic_id_mask                   = 0xFF << 24,
 
-       .cpu_mask_to_apicid             = es7000_cpu_mask_to_apicid_cluster,
+       .cpu_mask_to_apicid             = es7000_cpu_mask_to_apicid,
        .cpu_mask_to_apicid_and         = es7000_cpu_mask_to_apicid_and,
 
        .send_IPI_mask                  = es7000_send_IPI_mask,