Received: by 2002:a25:1985:0:0:0:0:0 with SMTP id 127csp3901243ybz; Mon, 4 May 2020 11:48:11 -0700 (PDT) X-Google-Smtp-Source: APiQypIHG3ezqNcnuBMA1s9mJc1nDAEK2UQ4nWYF2qSu2uK05WeApzPZGToGi0qW9VZ5Iyn4oG15 X-Received: by 2002:a05:6402:22a6:: with SMTP id cx6mr15304356edb.277.1588618091796; Mon, 04 May 2020 11:48:11 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1588618091; cv=none; d=google.com; s=arc-20160816; b=ItcEbd8U0GMtd5GzTpd/PxNPnVRBs4vBzhJSVam+PmlDTHUsRPGaIQTob6hPT6Zzug iANmtz86Sqdy0WlfVqpYftKFemnu6TYcFPkJAkpQuXQjEvuZ402tDqeMqmRpcKVQAblD pOVLH8m/SjiN2p9f2BwJAHFFqAuNx213S02rNRo7Sb5UtD1awT25xmg+9wN2p3ZTbAc4 rpXlRKDNi+GTsgOplX9M+jQagtaG1gnQjwMx7OfZinbGO1WfaYUByrdSwMVSyWpNZF/j LJ308kzgN4B8YRSBvkl/ve0dc/chvu+K/56js1IUKTYzFkiwF5WB90GMxPJKm92+g95i 0ipw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=uyI6HkaQBf81VfVOUjOKWiiZhjZIqYqT2AFNxOxsSHs=; b=YL/7aCptAh77N1Sf6v3RiGTTnGJnJgJOxQRnOxQ2GJBnuOkKPtFdNhmD/y1qDtPQ8+ leZodt9Zxs+4cCe1iG4q0XBf0SfP/9nmNpEpaHeoWJ4/GagjD4chXyUmNAopaN/QNfWm Car0tpRi0P+TF0JrF2QtHIuNHfnWKaC+sEOuEHQKCmKZatHi3GkkCP73fAgUiJiflxZx zcGCQmNH8o6IdAanl6E5MMkmJLKWkgQeWSRi5lt7NLe39OXm4NZgS8uDR1qTodI6OjVP Ai10nTh9BeRN5WP7XIPUV9Zc6iJ1BLZIXcW5bxrajXypxpt1Ue+9vIJNdaiXVLU4sS6w Vz3Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=ERJFvegp; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id v28si6849248edx.335.2020.05.04.11.47.47; Mon, 04 May 2020 11:48:11 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=ERJFvegp; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731032AbgEDSE1 (ORCPT + 99 others); Mon, 4 May 2020 14:04:27 -0400 Received: from mail.kernel.org ([198.145.29.99]:33782 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731670AbgEDSEY (ORCPT ); Mon, 4 May 2020 14:04:24 -0400 Received: from localhost (83-86-89-107.cable.dynamic.v4.ziggo.nl [83.86.89.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id BE680205ED; Mon, 4 May 2020 18:04:23 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1588615464; bh=YkAKodN6UufF5X2rzXlFeZr6xUI5WiB5/Lb6gaqDR/c=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=ERJFvegprR+5K+vwLN71VhJ3lL0MFNSEYI5DGpu/pIRIkDStmEE0Zr+nzrzSjT5hP 4sk6fLdGYtIYeghBES3jTCaK9XtrcoaDDp5ReZwDsWUBH5ch79VuEC0v7GvnYeK7gV 0BB0Xx6vB3rn8hw2vuTTDjdjDsLIY8eB7tGXuSjg= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, ryan_chen , Benjamin Herrenschmidt , Wolfram Sang Subject: [PATCH 5.4 49/57] i2c: aspeed: Avoid i2c interrupt status clear race condition. Date: Mon, 4 May 2020 19:57:53 +0200 Message-Id: <20200504165500.835261420@linuxfoundation.org> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20200504165456.783676004@linuxfoundation.org> References: <20200504165456.783676004@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: ryan_chen commit c926c87b8e36dcc0ea5c2a0a0227ed4f32d0516a upstream. In AST2600 there have a slow peripheral bus between CPU and i2c controller. Therefore GIC i2c interrupt status clear have delay timing, when CPU issue write clear i2c controller interrupt status. To avoid this issue, the driver need have read after write clear at i2c ISR. Fixes: f327c686d3ba ("i2c: aspeed: added driver for Aspeed I2C") Signed-off-by: ryan_chen Acked-by: Benjamin Herrenschmidt [wsa: added Fixes tag] Signed-off-by: Wolfram Sang Signed-off-by: Greg Kroah-Hartman --- drivers/i2c/busses/i2c-aspeed.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) --- a/drivers/i2c/busses/i2c-aspeed.c +++ b/drivers/i2c/busses/i2c-aspeed.c @@ -603,6 +603,7 @@ static irqreturn_t aspeed_i2c_bus_irq(in /* Ack all interrupts except for Rx done */ writel(irq_received & ~ASPEED_I2CD_INTR_RX_DONE, bus->base + ASPEED_I2C_INTR_STS_REG); + readl(bus->base + ASPEED_I2C_INTR_STS_REG); irq_remaining = irq_received; #if IS_ENABLED(CONFIG_I2C_SLAVE) @@ -645,9 +646,11 @@ static irqreturn_t aspeed_i2c_bus_irq(in irq_received, irq_handled); /* Ack Rx done */ - if (irq_received & ASPEED_I2CD_INTR_RX_DONE) + if (irq_received & ASPEED_I2CD_INTR_RX_DONE) { writel(ASPEED_I2CD_INTR_RX_DONE, bus->base + ASPEED_I2C_INTR_STS_REG); + readl(bus->base + ASPEED_I2C_INTR_STS_REG); + } spin_unlock(&bus->lock); return irq_remaining ? IRQ_NONE : IRQ_HANDLED; }