From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1757116AbcHXWCj (ORCPT ); Wed, 24 Aug 2016 18:02:39 -0400 Received: from skprod2.natinst.com ([130.164.80.23]:59981 "EHLO ni.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751610AbcHXWCf (ORCPT ); Wed, 24 Aug 2016 18:02:35 -0400 From: Xander Huff To: f.fainelli@gmail.com, sergei.shtylyov@cogentembedded.com Cc: netdev@vger.kernel.org, brad.mouring@ni.com, Xander Huff , linux-kernel@vger.kernel.org, Nathan Sullivan Subject: [PATCH v2] Revert "phy: IRQ cannot be shared" Date: Wed, 24 Aug 2016 16:47:53 -0500 Message-Id: <1472075273-16257-1-git-send-email-xander.huff@ni.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: References: X-MIMETrack: Itemize by SMTP Server on US-AUS-MGWOut2/AUS/H/NIC(Release 8.5.3FP6 HF1218|December 12, 2014) at 08/24/2016 04:49:49 PM, Serialize by Router on US-AUS-MGWOut2/AUS/H/NIC(Release 8.5.3FP6 HF1218|December 12, 2014) at 08/24/2016 05:01:50 PM, Serialize complete at 08/24/2016 05:01:50 PM X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:,, definitions=2016-08-24_12:,, signatures=0 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org This reverts: commit 33c133cc7598 ("phy: IRQ cannot be shared") On hardware with multiple PHY devices hooked up to the same IRQ line, allow them to share it. Sergei Shtylyov says: "I'm not sure now what was the reason I concluded that the IRQ sharing was impossible... most probably I thought that the kernel IRQ handling code exited the loop over the IRQ actions once IRQ_HANDLED was returned -- which is obviously not so in reality..." Signed-off-by: Xander Huff Signed-off-by: Nathan Sullivan --- Note: this reverted code fails "CHECK: Alignment should match open parentesis" --- drivers/net/phy/phy.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/drivers/net/phy/phy.c b/drivers/net/phy/phy.c index c5dc2c36..c6f6683 100644 --- a/drivers/net/phy/phy.c +++ b/drivers/net/phy/phy.c @@ -722,8 +722,10 @@ phy_err: int phy_start_interrupts(struct phy_device *phydev) { atomic_set(&phydev->irq_disable, 0); - if (request_irq(phydev->irq, phy_interrupt, 0, "phy_interrupt", - phydev) < 0) { + if (request_irq(phydev->irq, phy_interrupt, + IRQF_SHARED, + "phy_interrupt", + phydev) < 0) { pr_warn("%s: Can't get IRQ %d (PHY)\n", phydev->mdio.bus->name, phydev->irq); phydev->irq = PHY_POLL; -- 1.9.1