Received: by 2002:ac0:a5a7:0:0:0:0:0 with SMTP id m36-v6csp1437111imm; Thu, 12 Jul 2018 01:43:13 -0700 (PDT) X-Google-Smtp-Source: AAOMgpdtH2ZtUxJ7jWoNNKQuPOaTDNEJJEVYy+ZaAPQo07ocr1l17oNqI2pavXBDN6jxU4Xt3mLS X-Received: by 2002:a63:5758:: with SMTP id h24-v6mr1252349pgm.432.1531384993096; Thu, 12 Jul 2018 01:43:13 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1531384993; cv=none; d=google.com; s=arc-20160816; b=dsRpYkr5YgpGFCr5sAGIxmmlK5hWdgE9K/Zf+N5Y4u7SOyTtAOoAwmCSO6FAAr8R+n zTARAexE1Z1uz0tqdfkqdRbx078Mado/6bRkjyGlm3h5yMl09QdPgNgbBqWsWv/5InNF zwa/T5/LC0Ndky74S31Fr4r3PyXKBZUoLS3Ah8/m11Rx7Jy/oJ4bFGs5uWBp4Fy9DUub h3bdIbkdB9MGUfYHGJ0v0Al1OZkWTI/o1q2qopbMNmudEBtnYJaSyXxJYN4I4Dsj24RN 7M5XXxS58QC8REEMjgNC78Ob3/jgfC2Gl8iatbYh5V/EyxX/qN5r/IuACAYKg9fORBa+ QQLw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:dkim-signature :arc-authentication-results; bh=R0oLKNLvbtt4M5cmDqij/V3Z0/38n4hnXPd1c76xLDo=; b=DVcChcYO3gLC0yW5QDcmTFEnnhTm4P0MRIHTai3tUc+FiH8ALkFeeCWAwyX2MVaGsL /Bdk9n9M+Hx1/6YtDkvoBpYcLbD/3EkA6FphZj99YQSdA4F1F2QyzqOYtahbNQ/v6SXs 8BeBQxIZRFyf53Szx8JUgh4xukvQv4HydSDtiZJpqeSC0H0ziwKQXLWCngwFLXemvV9U Qn4lOX2hhIR3RCY9/Pz0mT36H44ISjbGzM94qrgbWU5yTf9udnj8CzeIqIYCA2wuVYBP s+5wA/bmm/1meQNOCBu7IZyX6OhNnC8ZbqvxQ6Or7at48wKEevNzar2xuU2UZQ18xDvd Wqbw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=vaHnIFYA; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id e190-v6si21547100pfa.355.2018.07.12.01.42.57; Thu, 12 Jul 2018 01:43:13 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=vaHnIFYA; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727181AbeGLIuP (ORCPT + 99 others); Thu, 12 Jul 2018 04:50:15 -0400 Received: from mail-oi0-f65.google.com ([209.85.218.65]:42218 "EHLO mail-oi0-f65.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726650AbeGLIuP (ORCPT ); Thu, 12 Jul 2018 04:50:15 -0400 Received: by mail-oi0-f65.google.com with SMTP id n84-v6so54347810oib.9 for ; Thu, 12 Jul 2018 01:41:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=R0oLKNLvbtt4M5cmDqij/V3Z0/38n4hnXPd1c76xLDo=; b=vaHnIFYAcMh63nSIdU/9S3MefjNsPxg8cwn4rZGjb4k5HYLm7V3ZDyGV7C2HJsugSH 1oVqCMeTSW5Vry8zJYKewg5U91BT+HXPswsCiB6fEHn45qDUKMgvPjydcvmN8SosdecC dh0Ejr5trZyZ83Eozk0aIp4xVt242luldqx6vR1QD8Esn52EmykveYnp/JrtLBjL44Qe iLR3xdMQYcotvs7ljMcXwsykTePZwE2JHr/swnCImxKDxx+t/SQ+VD/i+su6pGKIJ3Um gBly4wKL0UtPQq/xcpsnKlP272zjosYpFhev/XIRT1Sw9K5euKNiJy3Wsl5p3MKYOMMR /cAg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=R0oLKNLvbtt4M5cmDqij/V3Z0/38n4hnXPd1c76xLDo=; b=SQl5le0t5bGh5UPdx+gVYAi4/lpeKPyGPvcneun47NbhuHI3PWBQevhTsqXdY3jsGi i0NGcmsXiUCtqAQEkgFVwI5KpLPTnZPa2cZyydUCNQJJTt235qCkbKrYCFcI2PlR/i80 dn0gCCFuulPyLSMCdizSyw9Rc053ZHoPaHn4/KVu/JQ1/P0N2f//OLF9M0xuzeBC0Gck gjQgFjKcc6oQ+aeMo68Pg9TNc40e/fwWrEyBguc/zWpfgXxD91k9dbhPjLyb6TfN6F0O ZgxJLovR/LxqZoivayk0sqgu3NeFbgGpvHHcMMHmOnnBP8yzCX7jH1jZ+FaJCnQrxji2 MaFA== X-Gm-Message-State: AOUpUlEzKqMQB4SmcSHFA3fN/YWX3KkTEUzxNloVGtYJBJNiyyop7MRi xO1QXDQkx+Uj9hAtDT0QrV5+C1jvAdxas5kIvh1ayw== X-Received: by 2002:aca:e2d3:: with SMTP id z202-v6mr1364424oig.121.1531384899312; Thu, 12 Jul 2018 01:41:39 -0700 (PDT) MIME-Version: 1.0 References: <20180702214011.16071-1-jae.hyun.yoo@linux.intel.com> In-Reply-To: <20180702214011.16071-1-jae.hyun.yoo@linux.intel.com> From: Brendan Higgins Date: Thu, 12 Jul 2018 01:41:28 -0700 Message-ID: Subject: Re: [PATCH] i2c: aspeed: Adjust spinlock scope in the irq handler To: jae.hyun.yoo@linux.intel.com Cc: Benjamin Herrenschmidt , Joel Stanley , Andrew Jeffery , linux-i2c@vger.kernel.org, OpenBMC Maillist , Linux ARM , linux-aspeed@lists.ozlabs.org, Linux Kernel Mailing List , jarkko.nikula@linux.intel.com, james.feist@linux.intel.com, vernon.mauery@linux.intel.com Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Mon, Jul 2, 2018 at 2:40 PM Jae Hyun Yoo wrote: > > This patch adjusts spinlock scope to make it wrap the whole irq > handler using a single lock/unlock which covers both master and > slave handlers. > > Signed-off-by: Jae Hyun Yoo > --- > drivers/i2c/busses/i2c-aspeed.c | 16 ++++++++++------ > 1 file changed, 10 insertions(+), 6 deletions(-) > > diff --git a/drivers/i2c/busses/i2c-aspeed.c b/drivers/i2c/busses/i2c-aspeed.c > index 60e4d0e939a3..9f02aa959a3e 100644 > --- a/drivers/i2c/busses/i2c-aspeed.c > +++ b/drivers/i2c/busses/i2c-aspeed.c > @@ -234,7 +234,6 @@ static bool aspeed_i2c_slave_irq(struct aspeed_i2c_bus *bus) > bool irq_handled = true; > u8 value; > > - spin_lock(&bus->lock); > if (!slave) { > irq_handled = false; > goto out; > @@ -325,7 +324,6 @@ static bool aspeed_i2c_slave_irq(struct aspeed_i2c_bus *bus) > writel(status_ack, bus->base + ASPEED_I2C_INTR_STS_REG); > > out: > - spin_unlock(&bus->lock); > return irq_handled; > } > #endif /* CONFIG_I2C_SLAVE */ > @@ -389,7 +387,6 @@ static bool aspeed_i2c_master_irq(struct aspeed_i2c_bus *bus) > u8 recv_byte; > int ret; > > - spin_lock(&bus->lock); > irq_status = readl(bus->base + ASPEED_I2C_INTR_STS_REG); > /* Ack all interrupt bits. */ > writel(irq_status, bus->base + ASPEED_I2C_INTR_STS_REG); > @@ -547,22 +544,29 @@ static bool aspeed_i2c_master_irq(struct aspeed_i2c_bus *bus) > dev_err(bus->dev, > "irq handled != irq. expected 0x%08x, but was 0x%08x\n", > irq_status, status_ack); > - spin_unlock(&bus->lock); > return !!irq_status; > } > > static irqreturn_t aspeed_i2c_bus_irq(int irq, void *dev_id) > { > struct aspeed_i2c_bus *bus = dev_id; > + bool ret; > + > + spin_lock(&bus->lock); > > #if IS_ENABLED(CONFIG_I2C_SLAVE) > if (aspeed_i2c_slave_irq(bus)) { > dev_dbg(bus->dev, "irq handled by slave.\n"); > - return IRQ_HANDLED; > + ret = true; > + goto out; > } > #endif /* CONFIG_I2C_SLAVE */ > > - return aspeed_i2c_master_irq(bus) ? IRQ_HANDLED : IRQ_NONE; > + ret = aspeed_i2c_master_irq(bus); > + > +out: > + spin_unlock(&bus->lock); > + return ret ? IRQ_HANDLED : IRQ_NONE; > } > > static int aspeed_i2c_master_xfer(struct i2c_adapter *adap, > -- > 2.17.1 > Reviewed-by: Brendan Higgins Thanks!