From 7dead8c7e1e624e1c1d4f7152f77821a22d3c697 Mon Sep 17 00:00:00 2001 From: Roy Pledge Date: Mon, 21 Jul 2014 10:47:03 -0400 Subject: Set affinity for USDPAA IRQs Set the affinity of the USDPAA IRQ to match the affinity of the calling process Signed-off-by: Roy Pledge Change-Id: I077a48ae5a77fe35a77dfae65c298fa6fa2aecda Reviewed-on: http://git.am.freescale.net:8181/23675 Tested-by: Review Code-CDREVIEW Reviewed-by: Geoff Thorpe Reviewed-by: Jeffrey Ladouceur Reviewed-by: Matthew Weigel diff --git a/drivers/staging/fsl_qbman/fsl_usdpaa_irq.c b/drivers/staging/fsl_qbman/fsl_usdpaa_irq.c index ca93593..1f8260b 100644 --- a/drivers/staging/fsl_qbman/fsl_usdpaa_irq.c +++ b/drivers/staging/fsl_qbman/fsl_usdpaa_irq.c @@ -81,6 +81,7 @@ static int usdpaa_irq_release(struct inode *inode, struct file *filp) if (ctx->irq_set) { /* Inhibit the IRQ */ out_be32(ctx->inhibit_addr, 0x1); + irq_set_affinity_hint(ctx->irq_num, NULL); free_irq(ctx->irq_num, ctx); ctx->irq_set = 0; fput(ctx->usdpaa_filp); @@ -139,6 +140,14 @@ static int map_irq(struct file *fp, struct usdpaa_ioctl_irq_map *irq_map) fput(ctx->usdpaa_filp); return ret; } + ret = irq_set_affinity(ctx->irq_num, tsk_cpus_allowed(current)); + if (ret) + pr_err("USDPAA irq_set_affinity() failed, ret= %d\n", ret); + + ret = irq_set_affinity_hint(ctx->irq_num, tsk_cpus_allowed(current)); + if (ret) + pr_err("USDPAA irq_set_affinity_hint() failed, ret= %d\n", ret); + return 0; } -- cgit v0.10.2