Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752911AbbDCAuZ (ORCPT ); Thu, 2 Apr 2015 20:50:25 -0400 Received: from mga11.intel.com ([192.55.52.93]:15404 "EHLO mga11.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751437AbbDCAuX (ORCPT ); Thu, 2 Apr 2015 20:50:23 -0400 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.11,514,1422950400"; d="scan'208";a="550441108" Subject: [PATCH] irq: revert non-working patch to affinity defaults To: torvalds@linux-foundation.org From: Jesse Brandeburg Cc: Thomas Gleixner , linux-kernel@vger.kernel.org, John , Ingo Molnar Date: Thu, 02 Apr 2015 17:50:22 -0700 Message-ID: <20150403005022.3143.73693.stgit@jbrandeb-cp2.jf.intel.com> User-Agent: StGit/0.16-44-gd947d-dirty MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2389 Lines: 58 I've seen a couple of reports of issues since commit e2e64a932556 ("genirq: Set initial affinity in irq_set_affinity_hint()") where the affinity for the interrupt when programmed via /proc/irq//smp_affinity will not be able to stick. It changes back to some previous value at the next interrupt on that IRQ. The original intent was to fix the broken default behavior of all IRQs for a device starting up on CPU0. With a network card with 64 or more queues, all 64 queue's interrupt vectors end up on CPU0 which can have bad side effects, and has to be fixed by the irqbalance daemon, or by the user at every boot with some kind of affinity script. The symptom is that after a driver calls set_irq_affinity_hint, the affinity will be set for that interrupt (and readable via /proc/...), but on the first irq for that vector, the affinity for CPU0 or CPU1 resets to the default. The rest of the irq affinites seem to work and everything is fine. Impact if we don't fix this for 4.0.0: Some users won't be able to set irq affinity as expected, on some cpus. I've spent a chunk of time trying to debug this with no luck and suggest that we revert the change if no-one else can help me debug what is going wrong, we can pick up the change later. This commit would also revert commit 4fe7ffb7e17ca ("genirq: Fix null pointer reference in irq_set_affinity_hint()") which was a bug fix to the original patch. Signed-off-by: Jesse Brandeburg CC: Ingo Molnar CC: Thomas Gleixner CC: John --- kernel/irq/manage.c | 3 --- 1 file changed, 3 deletions(-) diff --git a/kernel/irq/manage.c b/kernel/irq/manage.c index 886d09e..c166a16 100644 --- a/kernel/irq/manage.c +++ b/kernel/irq/manage.c @@ -243,9 +243,6 @@ int irq_set_affinity_hint(unsigned int irq, const struct cpumask *m) return -EINVAL; desc->affinity_hint = m; irq_put_desc_unlock(desc, flags); - /* set the initial affinity to prevent every interrupt being on CPU0 */ - if (m) - __irq_set_affinity(irq, m, false); return 0; } EXPORT_SYMBOL_GPL(irq_set_affinity_hint); -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/