Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a5a39156 authored by Alexander Gordeev's avatar Alexander Gordeev Committed by Ingo Molnar
Browse files

x86/apic: Eliminate cpu_mask_to_apicid() operation



Since there are only two locations where cpu_mask_to_apicid() is
called from, remove the operation and use only
cpu_mask_to_apicid_and() instead.

Signed-off-by: default avatarAlexander Gordeev <agordeev@redhat.com>
Suggested-and-acked-by: default avatarSuresh Siddha <suresh.b.siddha@intel.com>
Acked-by: default avatarYinghai Lu <yinghai@kernel.org>
Link: http://lkml.kernel.org/r/20120614074935.GE3383@dhcp-26-207.brq.redhat.com


Signed-off-by: default avatarIngo Molnar <mingo@kernel.org>
parent cac4afbc
Loading
Loading
Loading
Loading
+8 −25
Original line number Diff line number Diff line
@@ -331,8 +331,6 @@ struct apic {
	unsigned long (*set_apic_id)(unsigned int id);
	unsigned long apic_id_mask;

	int (*cpu_mask_to_apicid)(const struct cpumask *cpumask,
				  unsigned int *apicid);
	int (*cpu_mask_to_apicid_and)(const struct cpumask *cpumask,
				      const struct cpumask *andmask,
				      unsigned int *apicid);
@@ -594,9 +592,15 @@ static inline int default_phys_pkg_id(int cpuid_apic, int index_msb)
#endif

static inline int
__flat_cpu_mask_to_apicid(unsigned long cpu_mask, unsigned int *apicid)
flat_cpu_mask_to_apicid_and(const struct cpumask *cpumask,
			    const struct cpumask *andmask,
			    unsigned int *apicid)
{
	cpu_mask = cpu_mask & APIC_ALL_CPUS & cpumask_bits(cpu_online_mask)[0];
	unsigned long cpu_mask = cpumask_bits(cpumask)[0] &
				 cpumask_bits(andmask)[0] &
				 cpumask_bits(cpu_online_mask)[0] &
				 APIC_ALL_CPUS;

	if (likely(cpu_mask)) {
		*apicid = (unsigned int)cpu_mask;
		return 0;
@@ -605,27 +609,6 @@ __flat_cpu_mask_to_apicid(unsigned long cpu_mask, unsigned int *apicid)
	}
}

static inline int
flat_cpu_mask_to_apicid(const struct cpumask *cpumask,
			unsigned int *apicid)
{
	return __flat_cpu_mask_to_apicid(cpumask_bits(cpumask)[0], apicid);
}

static inline int
flat_cpu_mask_to_apicid_and(const struct cpumask *cpumask,
			    const struct cpumask *andmask,
			    unsigned int *apicid)
{
	unsigned long mask1 = cpumask_bits(cpumask)[0];
	unsigned long mask2 = cpumask_bits(andmask)[0];
	return __flat_cpu_mask_to_apicid(mask1 & mask2, apicid);
}

extern int
default_cpu_mask_to_apicid(const struct cpumask *cpumask,
			   unsigned int *apicid);

extern int
default_cpu_mask_to_apicid_and(const struct cpumask *cpumask,
			       const struct cpumask *andmask,
+6 −18
Original line number Diff line number Diff line
@@ -2123,23 +2123,6 @@ void default_init_apic_ldr(void)
	apic_write(APIC_LDR, val);
}

static inline int __default_cpu_to_apicid(int cpu, unsigned int *apicid)
{
	if (likely((unsigned int)cpu < nr_cpu_ids)) {
		*apicid = per_cpu(x86_cpu_to_apicid, cpu);
		return 0;
	} else {
		return -EINVAL;
	}
}

int default_cpu_mask_to_apicid(const struct cpumask *cpumask,
			       unsigned int *apicid)
{
	int cpu = cpumask_first_and(cpumask, cpu_online_mask);
	return __default_cpu_to_apicid(cpu, apicid);
}

int default_cpu_mask_to_apicid_and(const struct cpumask *cpumask,
				   const struct cpumask *andmask,
				   unsigned int *apicid)
@@ -2151,7 +2134,12 @@ int default_cpu_mask_to_apicid_and(const struct cpumask *cpumask,
			break;
	}

	return __default_cpu_to_apicid(cpu, apicid);
	if (likely((unsigned int)cpu < nr_cpu_ids)) {
		*apicid = per_cpu(x86_cpu_to_apicid, cpu);
		return 0;
	} else {
		return -EINVAL;
	}
}

/*
+0 −2
Original line number Diff line number Diff line
@@ -191,7 +191,6 @@ static struct apic apic_flat = {
	.set_apic_id			= set_apic_id,
	.apic_id_mask			= 0xFFu << 24,

	.cpu_mask_to_apicid		= flat_cpu_mask_to_apicid,
	.cpu_mask_to_apicid_and		= flat_cpu_mask_to_apicid_and,

	.send_IPI_mask			= flat_send_IPI_mask,
@@ -308,7 +307,6 @@ static struct apic apic_physflat = {
	.set_apic_id			= set_apic_id,
	.apic_id_mask			= 0xFFu << 24,

	.cpu_mask_to_apicid		= default_cpu_mask_to_apicid,
	.cpu_mask_to_apicid_and		= default_cpu_mask_to_apicid_and,

	.send_IPI_mask			= physflat_send_IPI_mask,
+0 −1
Original line number Diff line number Diff line
@@ -159,7 +159,6 @@ struct apic apic_noop = {
	.set_apic_id			= NULL,
	.apic_id_mask			= 0x0F << 24,

	.cpu_mask_to_apicid		= flat_cpu_mask_to_apicid,
	.cpu_mask_to_apicid_and		= flat_cpu_mask_to_apicid_and,

	.send_IPI_mask			= noop_send_IPI_mask,
+0 −1
Original line number Diff line number Diff line
@@ -234,7 +234,6 @@ static struct apic apic_numachip __refconst = {
	.set_apic_id			= set_apic_id,
	.apic_id_mask			= 0xffU << 24,

	.cpu_mask_to_apicid		= default_cpu_mask_to_apicid,
	.cpu_mask_to_apicid_and		= default_cpu_mask_to_apicid_and,

	.send_IPI_mask			= numachip_send_IPI_mask,
Loading