[linux-yocto] [PATCH v2 34/39] arch/arm/mach-axxia: changed affinity parameter to cpu
Cristian Bercaru
cristian.bercaru at windriver.com
Thu May 21 02:40:59 PDT 2015
From: Charlie Paul <cpaul.windriver at gmail.com>
Signed-off-by: Charlie Paul <cpaul.windriver at gmail.com>
---
arch/arm/mach-axxia/axxia-gic.c | 27 ++++++++++++++-------------
1 file changed, 14 insertions(+), 13 deletions(-)
diff --git a/arch/arm/mach-axxia/axxia-gic.c b/arch/arm/mach-axxia/axxia-gic.c
index cdfc8fa..ecee2d9 100644
--- a/arch/arm/mach-axxia/axxia-gic.c
+++ b/arch/arm/mach-axxia/axxia-gic.c
@@ -447,13 +447,12 @@ static int gic_retrigger(struct irq_data *d)
}
static int _gic_set_affinity(struct irq_data *d,
- const struct cpumask *mask_val,
- bool do_clear)
+ unsigned int cpu,
+ bool do_clear)
{
void __iomem *reg = gic_dist_base(d) + GIC_DIST_TARGET +
(gic_irq(d) & ~3);
unsigned int shift = (gic_irq(d) % 4) * 8;
- unsigned int cpu = cpumask_any_and(mask_val, cpu_online_mask);
u32 val, mask, bit;
u32 enable_mask, enable_offset;
@@ -495,14 +494,14 @@ static void gic_set_affinity_remote(void *info)
{
struct gic_rpc_data *rpc = (struct gic_rpc_data *)info;
- _gic_set_affinity(rpc->d, rpc->mask_val, false);
+ _gic_set_affinity(rpc->d, rpc->cpu, false);
}
static void gic_clr_affinity_remote(void *info)
{
struct gic_rpc_data *rpc = (struct gic_rpc_data *)info;
- _gic_set_affinity(rpc->d, rpc->mask_val, true);
+ _gic_set_affinity(rpc->d, rpc->oldcpu, true);
}
@@ -570,11 +569,12 @@ static int gic_set_affinity(struct irq_data *d,
* cluster as the cpu we're currently running on, set the IRQ
* affinity directly. Otherwise, use the RPC mechanism.
*/
- if (on_same_cluster(cpu_logical_map(cpu), pcpu))
- _gic_set_affinity(d, mask_val, false);
+ if (on_same_cluster(cpu_logical_map(cpu), pcpu)) {
+ _gic_set_affinity(d, cpu_logical_map(cpu), false);
+ }
else{
- ret = exec_remote_set_affinity(false, cpu, d, mask_val, force);
+ ret = exec_remote_set_affinity(false, cpu_logical_map(cpu), d, mask_val, force);
if (ret != IRQ_SET_MASK_OK)
return ret;
@@ -591,15 +591,17 @@ static int gic_set_affinity(struct irq_data *d,
* the cpu we're currently running on, clear the IRQ affinity
* directly. Otherwise, use RPC mechanism.
*/
- if (on_same_cluster(irq_cpuid[irqid], pcpu))
- _gic_set_affinity(d, mask_val, true);
- else
+ if (on_same_cluster(irq_cpuid[irqid], pcpu)) {
+ _gic_set_affinity(d, irq_cpuid[irqid], true);
+ }
+ else {
ret = exec_remote_set_affinity(true,
get_logical_index(irq_cpuid[irqid]), d, mask_val, force);
+ }
if (ret != IRQ_SET_MASK_OK) {
/* Need to back out the set operation */
if (on_same_cluster(cpu_logical_map(cpu), pcpu))
- _gic_set_affinity(d, mask_val, true);
+ _gic_set_affinity(d, irq_cpuid[irqid], true);
else
exec_remote_set_affinity(true, cpu, d, mask_val, force);
@@ -607,7 +609,6 @@ static int gic_set_affinity(struct irq_data *d,
}
}
-
/* Update Axxia IRQ affinity table with the new physical CPU number. */
irq_cpuid[irqid] = cpu_logical_map(cpu);
--
1.7.9.5
More information about the linux-yocto
mailing list