x86/apic: Fix ugly casting and branching in cpu_mask_to_apicid_and()
Signed-off-by: Alexander 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: Ingo Molnar <mingo@kernel.org>
This commit is contained in:
parent
a5a391561b
commit
ea3807ea52
@ -2127,19 +2127,19 @@ int default_cpu_mask_to_apicid_and(const struct cpumask *cpumask,
|
|||||||
const struct cpumask *andmask,
|
const struct cpumask *andmask,
|
||||||
unsigned int *apicid)
|
unsigned int *apicid)
|
||||||
{
|
{
|
||||||
int cpu;
|
unsigned int cpu;
|
||||||
|
|
||||||
for_each_cpu_and(cpu, cpumask, andmask) {
|
for_each_cpu_and(cpu, cpumask, andmask) {
|
||||||
if (cpumask_test_cpu(cpu, cpu_online_mask))
|
if (cpumask_test_cpu(cpu, cpu_online_mask))
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (likely((unsigned int)cpu < nr_cpu_ids)) {
|
if (likely(cpu < nr_cpu_ids)) {
|
||||||
*apicid = per_cpu(x86_cpu_to_apicid, cpu);
|
*apicid = per_cpu(x86_cpu_to_apicid, cpu);
|
||||||
return 0;
|
return 0;
|
||||||
} else {
|
|
||||||
return -EINVAL;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -529,7 +529,7 @@ static inline int
|
|||||||
es7000_cpu_mask_to_apicid(const struct cpumask *cpumask, unsigned int *dest_id)
|
es7000_cpu_mask_to_apicid(const struct cpumask *cpumask, unsigned int *dest_id)
|
||||||
{
|
{
|
||||||
unsigned int round = 0;
|
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.
|
* The cpus in the mask must all be on the apic cluster.
|
||||||
|
@ -267,7 +267,7 @@ static inline int
|
|||||||
summit_cpu_mask_to_apicid(const struct cpumask *cpumask, unsigned int *dest_id)
|
summit_cpu_mask_to_apicid(const struct cpumask *cpumask, unsigned int *dest_id)
|
||||||
{
|
{
|
||||||
unsigned int round = 0;
|
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.
|
* The cpus in the mask must all be on the apic cluster.
|
||||||
|
@ -274,7 +274,7 @@ uv_cpu_mask_to_apicid_and(const struct cpumask *cpumask,
|
|||||||
const struct cpumask *andmask,
|
const struct cpumask *andmask,
|
||||||
unsigned int *apicid)
|
unsigned int *apicid)
|
||||||
{
|
{
|
||||||
int cpu;
|
int unsigned cpu;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* We're using fixed IRQ delivery, can only return one phys APIC ID.
|
* 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;
|
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;
|
*apicid = per_cpu(x86_cpu_to_apicid, cpu) | uv_apicid_hibits;
|
||||||
return 0;
|
return 0;
|
||||||
} else {
|
|
||||||
return -EINVAL;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
static unsigned int x2apic_get_apic_id(unsigned long x)
|
static unsigned int x2apic_get_apic_id(unsigned long x)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user