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

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

x86/apic: Fix ugly casting and branching in cpu_mask_to_apicid_and()



Signed-off-by: default avatarAlexander Gordeev <agordeev@redhat.com>
Cc: Suresh Siddha <suresh.b.siddha@intel.com>
Cc: Yinghai Lu <yinghai@kernel.org>
Link: http://lkml.kernel.org/r/20120614074954.GF3383@dhcp-26-207.brq.redhat.com


Signed-off-by: default avatarIngo Molnar <mingo@kernel.org>
parent a5a39156
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -2127,19 +2127,19 @@ int default_cpu_mask_to_apicid_and(const struct cpumask *cpumask,
				   const struct cpumask *andmask,
				   unsigned int *apicid)
{
	int cpu;
	unsigned int cpu;

	for_each_cpu_and(cpu, cpumask, andmask) {
		if (cpumask_test_cpu(cpu, cpu_online_mask))
			break;
	}

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

	return -EINVAL;
}

/*
+1 −1
Original line number Diff line number Diff line
@@ -529,7 +529,7 @@ static inline int
es7000_cpu_mask_to_apicid(const struct cpumask *cpumask, unsigned int *dest_id)
{
	unsigned int round = 0;
	int cpu, uninitialized_var(apicid);
	unsigned int cpu, uninitialized_var(apicid);

	/*
	 * The cpus in the mask must all be on the apic cluster.
+1 −1
Original line number Diff line number Diff line
@@ -267,7 +267,7 @@ static inline int
summit_cpu_mask_to_apicid(const struct cpumask *cpumask, unsigned int *dest_id)
{
	unsigned int round = 0;
	int cpu, apicid = 0;
	unsigned int cpu, apicid = 0;

	/*
	 * The cpus in the mask must all be on the apic cluster.
+4 −4
Original line number Diff line number Diff line
@@ -274,7 +274,7 @@ uv_cpu_mask_to_apicid_and(const struct cpumask *cpumask,
			  const struct cpumask *andmask,
			  unsigned int *apicid)
{
	int cpu;
	int unsigned cpu;

	/*
	 * We're using fixed IRQ delivery, can only return one phys APIC ID.
@@ -285,12 +285,12 @@ uv_cpu_mask_to_apicid_and(const struct cpumask *cpumask,
			break;
	}

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

	return -EINVAL;
}

static unsigned int x2apic_get_apic_id(unsigned long x)