From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756603AbdELEAs (ORCPT ); Fri, 12 May 2017 00:00:48 -0400 Received: from szxga01-in.huawei.com ([45.249.212.187]:6282 "EHLO szxga01-in.huawei.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1756083AbdELEAq (ORCPT ); Fri, 12 May 2017 00:00:46 -0400 From: Hanjun Guo To: Marc Zyngier , Thomas Gleixner CC: Kefeng Wang , Wei Yongjun , MaJun , , , Hanjun Guo Subject: [PATCH v2 3/3] irqchip/mbigen: Fix the clear register offset Date: Fri, 12 May 2017 11:55:28 +0800 Message-ID: <1494561328-39514-4-git-send-email-guohanjun@huawei.com> X-Mailer: git-send-email 1.7.12.4 In-Reply-To: <1494561328-39514-1-git-send-email-guohanjun@huawei.com> References: <1494561328-39514-1-git-send-email-guohanjun@huawei.com> MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [10.175.102.37] X-CFilter-Loop: Reflected X-Mirapoint-Virus-RAPID-Raw: score=unknown(0), refid=str=0001.0A020203.5915336B.0175,ss=1,re=0.000,recu=0.000,reip=0.000,cl=1,cld=1,fgs=0, ip=0.0.0.0, so=2014-11-16 11:51:01, dmn=2013-03-21 17:37:32 X-Mirapoint-Loop-Id: 07f2dd8c92c7f8eb16ada815497c7a1f Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: MaJun Don't minus reserved interrupts (64) when get the clear register offset, because the clear register space includes the space of these 64 interrupts. This bug wasn't discovered until we running the driver on a new platform with an updated firmware. It turns out that there is a timeout mechanism to clear the register in the mbigen which is for debug purpose and should be turned off, but because of configuration mistake in firmware, this function was turned on and covered up the bug in clear offset calculate, it's time to fix it now. Fixes: a6c2f87b8820 ("irqchip/mbigen: Implement the mbigen irq chip operation functions") Signed-off-by: MaJun Signed-off-by: Hanjun Guo --- drivers/irqchip/irq-mbigen.c | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/drivers/irqchip/irq-mbigen.c b/drivers/irqchip/irq-mbigen.c index 2fa1e45..57a860c 100644 --- a/drivers/irqchip/irq-mbigen.c +++ b/drivers/irqchip/irq-mbigen.c @@ -106,10 +106,7 @@ static inline void get_mbigen_type_reg(irq_hw_number_t hwirq, static inline void get_mbigen_clear_reg(irq_hw_number_t hwirq, u32 *mask, u32 *addr) { - unsigned int ofst; - - hwirq -= RESERVED_IRQ_PER_MBIGEN_CHIP; - ofst = hwirq / 32 * 4; + unsigned int ofst = hwirq / 32 * 4; *mask = 1 << (hwirq % 32); *addr = ofst + REG_MBIGEN_CLEAR_OFFSET; -- 1.7.12.4