x86/apic: Move cpumask and to core code
authorThomas Gleixner <tglx@linutronix.de>
Mon, 19 Jun 2017 23:37:43 +0000 (01:37 +0200)
committerThomas Gleixner <tglx@linutronix.de>
Thu, 22 Jun 2017 16:21:22 +0000 (18:21 +0200)
All implementations of apic->cpu_mask_to_apicid_and() and the two incoming
cpumasks to search for the target.

Move that operation to the call site and rename it to cpu_mask_to_apicid()

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Cc: Jens Axboe <axboe@kernel.dk>
Cc: Marc Zyngier <marc.zyngier@arm.com>
Cc: Michael Ellerman <mpe@ellerman.id.au>
Cc: Keith Busch <keith.busch@intel.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Christoph Hellwig <hch@lst.de>
Link: http://lkml.kernel.org/r/20170619235446.641575516@linutronix.de
12 files changed:
arch/x86/include/asm/apic.h
arch/x86/kernel/apic/apic.c
arch/x86/kernel/apic/apic_flat_64.c
arch/x86/kernel/apic/apic_noop.c
arch/x86/kernel/apic/apic_numachip.c
arch/x86/kernel/apic/bigsmp_32.c
arch/x86/kernel/apic/probe_32.c
arch/x86/kernel/apic/vector.c
arch/x86/kernel/apic/x2apic_cluster.c
arch/x86/kernel/apic/x2apic_phys.c
arch/x86/kernel/apic/x2apic_uv_x.c
arch/x86/xen/apic.c

index a86be0a082d0697b0609ff5239860875f6b3b274..3e64e99edc362adc9d8b58666e3053a09498a358 100644 (file)
@@ -296,9 +296,8 @@ struct apic {
        /* Can't be NULL on 64-bit */
        unsigned long (*set_apic_id)(unsigned int id);
 
-       int (*cpu_mask_to_apicid_and)(const struct cpumask *cpumask,
-                                     const struct cpumask *andmask,
-                                     unsigned int *apicid);
+       int (*cpu_mask_to_apicid)(const struct cpumask *cpumask,
+                                 unsigned int *apicid);
 
        /* ipi */
        void (*send_IPI)(int cpu, int vector);
@@ -540,12 +539,10 @@ static inline int default_phys_pkg_id(int cpuid_apic, int index_msb)
 
 #endif
 
-extern int flat_cpu_mask_to_apicid_and(const struct cpumask *cpumask,
-                                      const struct cpumask *andmask,
-                                      unsigned int *apicid);
-extern int default_cpu_mask_to_apicid_and(const struct cpumask *cpumask,
-                                         const struct cpumask *andmask,
-                                         unsigned int *apicid);
+extern int flat_cpu_mask_to_apicid(const struct cpumask *cpumask,
+                                  unsigned int *apicid);
+extern int default_cpu_mask_to_apicid(const struct cpumask *cpumask,
+                                     unsigned int *apicid);
 
 static inline void
 flat_vector_allocation_domain(int cpu, struct cpumask *retmask,
index 8a0bde3fc488d0c3e8020facb3a5bedaed8398e6..169dd422dc30c83f125304100038b08bc7266eab 100644 (file)
@@ -2201,11 +2201,9 @@ void default_init_apic_ldr(void)
        apic_write(APIC_LDR, val);
 }
 
-int default_cpu_mask_to_apicid_and(const struct cpumask *cpumask,
-                                  const struct cpumask *andmask,
-                                  unsigned int *apicid)
+int default_cpu_mask_to_apicid(const struct cpumask *mask, unsigned int *apicid)
 {
-       unsigned int cpu = cpumask_first_and(cpumask, andmask);
+       unsigned int cpu = cpumask_first(mask);
 
        if (cpu >= nr_cpu_ids)
                return -EINVAL;
@@ -2213,13 +2211,9 @@ int default_cpu_mask_to_apicid_and(const struct cpumask *cpumask,
        return 0;
 }
 
-int flat_cpu_mask_to_apicid_and(const struct cpumask *cpumask,
-                               const struct cpumask *andmask,
-                               unsigned int *apicid)
+int flat_cpu_mask_to_apicid(const struct cpumask *mask, unsigned int *apicid)
 {
-       unsigned long cpu_mask = cpumask_bits(cpumask)[0] &
-                                cpumask_bits(andmask)[0] &
-                                APIC_ALL_CPUS;
+       unsigned long cpu_mask = cpumask_bits(mask)[0] & APIC_ALL_CPUS;
 
        if (!cpu_mask)
                return -EINVAL;
index a4d7ff20ed222c05cb51c322c4b3669a486577eb..dedd5a41ba48c8d72b513c033bcf1fffd03deb71 100644 (file)
@@ -172,7 +172,7 @@ static struct apic apic_flat __ro_after_init = {
        .get_apic_id                    = flat_get_apic_id,
        .set_apic_id                    = set_apic_id,
 
-       .cpu_mask_to_apicid_and         = flat_cpu_mask_to_apicid_and,
+       .cpu_mask_to_apicid             = flat_cpu_mask_to_apicid,
 
        .send_IPI                       = default_send_IPI_single,
        .send_IPI_mask                  = flat_send_IPI_mask,
@@ -268,7 +268,7 @@ static struct apic apic_physflat __ro_after_init = {
        .get_apic_id                    = flat_get_apic_id,
        .set_apic_id                    = set_apic_id,
 
-       .cpu_mask_to_apicid_and         = default_cpu_mask_to_apicid_and,
+       .cpu_mask_to_apicid             = default_cpu_mask_to_apicid,
 
        .send_IPI                       = default_send_IPI_single_phys,
        .send_IPI_mask                  = default_send_IPI_mask_sequence_phys,
index 2262eb6df796df01aaa4c5c2cf932c0c01547555..6599f437b4ab76b463d0abfa6507cf44719977ca 100644 (file)
@@ -141,7 +141,7 @@ struct apic apic_noop __ro_after_init = {
        .get_apic_id                    = noop_get_apic_id,
        .set_apic_id                    = NULL,
 
-       .cpu_mask_to_apicid_and         = flat_cpu_mask_to_apicid_and,
+       .cpu_mask_to_apicid             = flat_cpu_mask_to_apicid,
 
        .send_IPI                       = noop_send_IPI,
        .send_IPI_mask                  = noop_send_IPI_mask,
index e08fe2c8dd8cb3ab9dd2dd957691513ac5556bca..2fda912219a6e97144c9f8c89bb191b8f5323d53 100644 (file)
@@ -267,7 +267,7 @@ static const struct apic apic_numachip1 __refconst = {
        .get_apic_id                    = numachip1_get_apic_id,
        .set_apic_id                    = numachip1_set_apic_id,
 
-       .cpu_mask_to_apicid_and         = default_cpu_mask_to_apicid_and,
+       .cpu_mask_to_apicid             = default_cpu_mask_to_apicid,
 
        .send_IPI                       = numachip_send_IPI_one,
        .send_IPI_mask                  = numachip_send_IPI_mask,
@@ -318,7 +318,7 @@ static const struct apic apic_numachip2 __refconst = {
        .get_apic_id                    = numachip2_get_apic_id,
        .set_apic_id                    = numachip2_set_apic_id,
 
-       .cpu_mask_to_apicid_and         = default_cpu_mask_to_apicid_and,
+       .cpu_mask_to_apicid             = default_cpu_mask_to_apicid,
 
        .send_IPI                       = numachip_send_IPI_one,
        .send_IPI_mask                  = numachip_send_IPI_mask,
index 56012010332c84d1c5d6276aa20734661b020ad0..456e45e8bf8448e0438ad2512ac3df3ce98cb371 100644 (file)
@@ -172,7 +172,7 @@ static struct apic apic_bigsmp __ro_after_init = {
        .get_apic_id                    = bigsmp_get_apic_id,
        .set_apic_id                    = NULL,
 
-       .cpu_mask_to_apicid_and         = default_cpu_mask_to_apicid_and,
+       .cpu_mask_to_apicid             = default_cpu_mask_to_apicid,
 
        .send_IPI                       = default_send_IPI_single_phys,
        .send_IPI_mask                  = default_send_IPI_mask_sequence_phys,
index 2e8f7f048f4f38fbb4134192cb4cd28aef269281..63287659adb61acacdc127d4441f64e4fc45a4bb 100644 (file)
@@ -102,7 +102,7 @@ static struct apic apic_default __ro_after_init = {
        .get_apic_id                    = default_get_apic_id,
        .set_apic_id                    = NULL,
 
-       .cpu_mask_to_apicid_and         = flat_cpu_mask_to_apicid_and,
+       .cpu_mask_to_apicid             = flat_cpu_mask_to_apicid,
 
        .send_IPI                       = default_send_IPI_single,
        .send_IPI_mask                  = default_send_IPI_mask_logical,
index 0f94ddbb6beb0364d6f630c2a5e81813753400c0..1f57f5a08c44d66228b1876ae02adc624f963657 100644 (file)
@@ -141,7 +141,7 @@ static int __assign_irq_vector(int irq, struct apic_chip_data *d,
                /*
                 * Clear the offline cpus from @vector_cpumask for searching
                 * and verify whether the result overlaps with @mask. If true,
-                * then the call to apic->cpu_mask_to_apicid_and() will
+                * then the call to apic->cpu_mask_to_apicid() will
                 * succeed as well. If not, no point in trying to find a
                 * vector in this mask.
                 */
@@ -225,8 +225,8 @@ success:
         * vector_searchmask is a subset of d->domain and has the offline
         * cpus masked out.
         */
-       BUG_ON(apic->cpu_mask_to_apicid_and(mask, vector_searchmask,
-                                           &d->cfg.dest_apicid));
+       cpumask_and(vector_searchmask, vector_searchmask, mask);
+       BUG_ON(apic->cpu_mask_to_apicid(vector_searchmask, &d->cfg.dest_apicid));
        return 0;
 }
 
index d73baa8c1a1718e411dcf6646cea8c386d015b26..61474259bf3f9ac25694044f9ded643ab781716e 100644 (file)
@@ -104,22 +104,20 @@ static void x2apic_send_IPI_all(int vector)
 }
 
 static int
-x2apic_cpu_mask_to_apicid_and(const struct cpumask *cpumask,
-                             const struct cpumask *andmask,
-                             unsigned int *apicid)
+x2apic_cpu_mask_to_apicid(const struct cpumask *mask, unsigned int *apicid)
 {
        unsigned int cpu;
        u32 dest = 0;
        u16 cluster;
 
-       cpu = cpumask_first_and(cpumask, andmask);
+       cpu = cpumask_first(mask);
        if (cpu >= nr_cpu_ids)
                return -EINVAL;
 
        dest = per_cpu(x86_cpu_to_logical_apicid, cpu);
        cluster = x2apic_cluster(cpu);
 
-       for_each_cpu_and(cpu, cpumask, andmask) {
+       for_each_cpu(cpu, mask) {
                if (cluster != x2apic_cluster(cpu))
                        continue;
                dest |= per_cpu(x86_cpu_to_logical_apicid, cpu);
@@ -249,7 +247,7 @@ static struct apic apic_x2apic_cluster __ro_after_init = {
        .get_apic_id                    = x2apic_get_apic_id,
        .set_apic_id                    = x2apic_set_apic_id,
 
-       .cpu_mask_to_apicid_and         = x2apic_cpu_mask_to_apicid_and,
+       .cpu_mask_to_apicid             = x2apic_cpu_mask_to_apicid,
 
        .send_IPI                       = x2apic_send_IPI,
        .send_IPI_mask                  = x2apic_send_IPI_mask,
index ff111f05a3145242e7bd89cb1404e00d5825abff..3baf0c3dc875011790143c016f7f54f04e37936d 100644 (file)
@@ -127,7 +127,7 @@ static struct apic apic_x2apic_phys __ro_after_init = {
        .get_apic_id                    = x2apic_get_apic_id,
        .set_apic_id                    = x2apic_set_apic_id,
 
-       .cpu_mask_to_apicid_and         = default_cpu_mask_to_apicid_and,
+       .cpu_mask_to_apicid             = default_cpu_mask_to_apicid,
 
        .send_IPI                       = x2apic_send_IPI,
        .send_IPI_mask                  = x2apic_send_IPI_mask,
index fd5bb20c8430ac7023aef6e3a9e02647025f3187..ad0223f013f6bb2b346077221bbf9f8f5a46b1b4 100644 (file)
@@ -526,11 +526,9 @@ static void uv_init_apic_ldr(void)
 }
 
 static int
-uv_cpu_mask_to_apicid_and(const struct cpumask *cpumask,
-                         const struct cpumask *andmask,
-                         unsigned int *apicid)
+uv_cpu_mask_to_apicid(const struct cpumask *mask, unsigned int *apicid)
 {
-       int ret = default_cpu_mask_to_apicid_and(cpumask, andmask, apicid);
+       int ret = default_cpu_mask_to_apicid(mask, apicid);
 
        if (!ret)
                *apicid |= uv_apicid_hibits;
@@ -603,7 +601,7 @@ static struct apic apic_x2apic_uv_x __ro_after_init = {
        .get_apic_id                    = x2apic_get_apic_id,
        .set_apic_id                    = set_apic_id,
 
-       .cpu_mask_to_apicid_and         = uv_cpu_mask_to_apicid_and,
+       .cpu_mask_to_apicid             = uv_cpu_mask_to_apicid,
 
        .send_IPI                       = uv_send_IPI_one,
        .send_IPI_mask                  = uv_send_IPI_mask,
index bcea81f36fc5fdb7e0abae26be7e1d90f57af594..b5e48da7fbff408e3beb144219d17e95b86cfcb4 100644 (file)
@@ -178,7 +178,7 @@ static struct apic xen_pv_apic = {
        .get_apic_id                    = xen_get_apic_id,
        .set_apic_id                    = xen_set_apic_id, /* Can be NULL on 32-bit. */
 
-       .cpu_mask_to_apicid_and         = flat_cpu_mask_to_apicid_and,
+       .cpu_mask_to_apicid             = flat_cpu_mask_to_apicid,
 
 #ifdef CONFIG_SMP
        .send_IPI_mask                  = xen_send_IPI_mask,