summaryrefslogtreecommitdiff
path: root/drivers/staging/fsl_qbman/bman_driver.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/staging/fsl_qbman/bman_driver.c')
-rw-r--r--drivers/staging/fsl_qbman/bman_driver.c16
1 files changed, 12 insertions, 4 deletions
diff --git a/drivers/staging/fsl_qbman/bman_driver.c b/drivers/staging/fsl_qbman/bman_driver.c
index 513c7f1..d71301c 100644
--- a/drivers/staging/fsl_qbman/bman_driver.c
+++ b/drivers/staging/fsl_qbman/bman_driver.c
@@ -296,18 +296,26 @@ __setup("bportals=", parse_bportals);
static void bman_offline_cpu(unsigned int cpu)
{
struct bman_portal *p;
+ const struct bm_portal_config *pcfg;
p = (struct bman_portal *)affine_bportals[cpu];
- if (p && (!bman_portal_is_sharing_redirect(p)))
- bman_migrate_portal(p);
+ if (p) {
+ pcfg = bman_get_bm_portal_config(p);
+ if (pcfg)
+ irq_set_affinity(pcfg->public_cfg.irq, cpumask_of(0));
+ }
}
#ifdef CONFIG_HOTPLUG_CPU
static void bman_online_cpu(unsigned int cpu)
{
struct bman_portal *p;
+ const struct bm_portal_config *pcfg;
p = (struct bman_portal *)affine_bportals[cpu];
- if (p && (!bman_portal_is_sharing_redirect(p)))
- bman_migrate_portal_back(p, cpu);
+ if (p) {
+ pcfg = bman_get_bm_portal_config(p);
+ if (pcfg)
+ irq_set_affinity(pcfg->public_cfg.irq, cpumask_of(cpu));
+ }
}
static int __cpuinit bman_hotplug_cpu_callback(struct notifier_block *nfb,