Received: by 2002:a05:6a10:8c0a:0:0:0:0 with SMTP id go10csp931097pxb; Wed, 3 Mar 2021 21:30:38 -0800 (PST) X-Google-Smtp-Source: ABdhPJy/j79AxQe3tNiqSBJ2JvRXT3ZY+AfPGuQAGA+sHEnpc2BdQdAA01XIBcFkRP08nedCAA7M X-Received: by 2002:a50:9d4d:: with SMTP id j13mr2423368edk.83.1614835837809; Wed, 03 Mar 2021 21:30:37 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1614835837; cv=none; d=google.com; s=arc-20160816; b=0JiYDnjRwhuu7iwK5GSlfOmcskVAHDzIgWC9bVbQ8DOYby2W35OpOtO2+rWkEechGv aeAnchAv/vwkAkjaNUuLqN6lMN4H3nLnkDNMfCgnl7J7/J6XoqcqFloQdLIaTq7LSZ3T w09gtvfEBrmDMS2mEGaPhUSXAHh7VkNGI6t+zH0WN26cZfNUdtdZQiU5ISHuTlQ8O371 l/911BtBdzB4UfU7GPn9OsKzIxl2xdtPSSBXe8ke1GpWhlkXaSNlq68cJkuo+PjboKC+ LdOPJkCOTheFayY+FpQI/2I8rqrO1TDdstmQN+QFjEnnrcvU/VyyjWdNM1BOHgLu/85z 1e3Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:subject:message-id:date:from:in-reply-to :references:mime-version:dkim-signature; bh=RfrM1Gt/4AxISEmziFRStELMB/V11h0hLEUuUx3nN0Q=; b=UiLE/GZ2vBmbKmm2FL2L0z8m6WjzEhOmMad8ABaClyp2JLBoCh9sMyn78FnLOV0lEE w3HIHyK4gKc4jH8nX0iSyhLd7BgzGrHMRlr58qdGPj69yGkji49cGoo+QB1ZhqZw59Wr Km82OJ+1+kxe3RdVPb8ol67cbitjQeD5jwFZPhKM9resXEEMSM40i0pgG7DG+n02ZXDV w2ljWeQo4eaeWfia6yjoFC9a5nj8FtPSjjOGMkWkqyA0tIUDttQqO3ucBbPWlK723tfM AfE3z9d2dXspyMz8TWjSTz/mYX8qALJ9E25+OCrevEXDRr/kzMUpHAQBVflFM3jSX+c0 1Rdw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@jms.id.au header.s=google header.b=kyGyBzOE; 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 u15si15271658edt.339.2021.03.03.21.30.15; Wed, 03 Mar 2021 21:30:37 -0800 (PST) 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=@jms.id.au header.s=google header.b=kyGyBzOE; 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 S1575490AbhCBD4Z (ORCPT + 99 others); Mon, 1 Mar 2021 22:56:25 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:35086 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236440AbhCAW4M (ORCPT ); Mon, 1 Mar 2021 17:56:12 -0500 Received: from mail-qv1-xf2c.google.com (mail-qv1-xf2c.google.com [IPv6:2607:f8b0:4864:20::f2c]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 0E169C061756; Mon, 1 Mar 2021 14:44:24 -0800 (PST) Received: by mail-qv1-xf2c.google.com with SMTP id x13so3068663qvj.7; Mon, 01 Mar 2021 14:44:24 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=jms.id.au; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=RfrM1Gt/4AxISEmziFRStELMB/V11h0hLEUuUx3nN0Q=; b=kyGyBzOEJ+JH+xpbLxcwWrgFaNYicKV23xa7mUH/8VbWpzyERpy7SbjRkH50nStVfJ 5k0KJVobqGVO8xay8zzA5g1ZBcyHcotVYp7wtJUsluUPZuiRho8Yh0uVb6dCwJt5fUHv H9YKvtsM0QMuI1hsQAwahPtrysxXm2BdXw2MI= 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=RfrM1Gt/4AxISEmziFRStELMB/V11h0hLEUuUx3nN0Q=; b=RK6WtkjvzIaU69fQ/ZHg1D9HPQXSx82pu2s4PzqXt5XGOMwUzOL4K6DcOQfXiIJTqF jZkVIdVVCAcwl9fTRzU7L6ysVaLXFSAZx/EAH1An4pys8WEAiOs1NR5Qg5nxVoF7f6rm e9fsotjoWWUpvuviugpF8OrkThsWox68gOfueQDxHpyYnzWr/uDpAB4S5IOpYwkyWvX5 MIQP7tOGlaeQsjlrkvbLA9L9UHGK1NohnTrFQ6i9nr7r51Fmn+z8K8n3IanK/Cpfgz0z J+xo8OU0S2JN0NM7Cbb6jpDW+q3nL/siooq08lTGybsUii1/sNufclqfPrTBmIFnxTg5 sTOQ== X-Gm-Message-State: AOAM533biW2b8+HX2IpUSeXwtPZK5GpWCOjzkxH0yOu/GbmmTSkztGHI CHOuWm3ASbAktXgP6jyCwAmuu9uaAP/RotqeNeE= X-Received: by 2002:ad4:52e3:: with SMTP id p3mr877369qvu.61.1614638663120; Mon, 01 Mar 2021 14:44:23 -0800 (PST) MIME-Version: 1.0 References: <20210301161031.684018251@linuxfoundation.org> <20210301161034.369309830@linuxfoundation.org> In-Reply-To: <20210301161034.369309830@linuxfoundation.org> From: Joel Stanley Date: Mon, 1 Mar 2021 22:44:11 +0000 Message-ID: Subject: Re: [PATCH 4.19 055/247] soc: aspeed: snoop: Add clock control logic To: Greg Kroah-Hartman , John Wang , Jae Hyun Yoo Cc: Linux Kernel Mailing List , stable@vger.kernel.org, Vernon Mauery , Sasha Levin Content-Type: text/plain; charset="UTF-8" Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Mon, 1 Mar 2021 at 16:37, Greg Kroah-Hartman wrote: > > From: Jae Hyun Yoo > > [ Upstream commit 3f94cf15583be554df7aaa651b8ff8e1b68fbe51 ] > > If LPC SNOOP driver is registered ahead of lpc-ctrl module, LPC > SNOOP block will be enabled without heart beating of LCLK until > lpc-ctrl enables the LCLK. This issue causes improper handling on > host interrupts when the host sends interrupt in that time frame. > Then kernel eventually forcibly disables the interrupt with > dumping stack and printing a 'nobody cared this irq' message out. > > To prevent this issue, all LPC sub-nodes should enable LCLK > individually so this patch adds clock control logic into the LPC > SNOOP driver. Jae, John; with this backported do we need to also provide a corresponding device tree change for the stable tree, otherwise this driver will no longer probe? > > Fixes: 3772e5da4454 ("drivers/misc: Aspeed LPC snoop output using misc chardev") > Signed-off-by: Jae Hyun Yoo > Signed-off-by: Vernon Mauery > Signed-off-by: John Wang > Reviewed-by: Joel Stanley > Link: https://lore.kernel.org/r/20201208091748.1920-1-wangzhiqiang.bj@bytedance.com > Signed-off-by: Joel Stanley > Signed-off-by: Sasha Levin > --- > drivers/misc/aspeed-lpc-snoop.c | 30 +++++++++++++++++++++++++++--- > 1 file changed, 27 insertions(+), 3 deletions(-) > > diff --git a/drivers/misc/aspeed-lpc-snoop.c b/drivers/misc/aspeed-lpc-snoop.c > index c10be21a1663d..b4a776bf44bc5 100644 > --- a/drivers/misc/aspeed-lpc-snoop.c > +++ b/drivers/misc/aspeed-lpc-snoop.c > @@ -15,6 +15,7 @@ > */ > > #include > +#include > #include > #include > #include > @@ -71,6 +72,7 @@ struct aspeed_lpc_snoop_channel { > struct aspeed_lpc_snoop { > struct regmap *regmap; > int irq; > + struct clk *clk; > struct aspeed_lpc_snoop_channel chan[NUM_SNOOP_CHANNELS]; > }; > > @@ -286,22 +288,42 @@ static int aspeed_lpc_snoop_probe(struct platform_device *pdev) > return -ENODEV; > } > > + lpc_snoop->clk = devm_clk_get(dev, NULL); > + if (IS_ERR(lpc_snoop->clk)) { > + rc = PTR_ERR(lpc_snoop->clk); > + if (rc != -EPROBE_DEFER) > + dev_err(dev, "couldn't get clock\n"); > + return rc; > + } > + rc = clk_prepare_enable(lpc_snoop->clk); > + if (rc) { > + dev_err(dev, "couldn't enable clock\n"); > + return rc; > + } > + > rc = aspeed_lpc_snoop_config_irq(lpc_snoop, pdev); > if (rc) > - return rc; > + goto err; > > rc = aspeed_lpc_enable_snoop(lpc_snoop, dev, 0, port); > if (rc) > - return rc; > + goto err; > > /* Configuration of 2nd snoop channel port is optional */ > if (of_property_read_u32_index(dev->of_node, "snoop-ports", > 1, &port) == 0) { > rc = aspeed_lpc_enable_snoop(lpc_snoop, dev, 1, port); > - if (rc) > + if (rc) { > aspeed_lpc_disable_snoop(lpc_snoop, 0); > + goto err; > + } > } > > + return 0; > + > +err: > + clk_disable_unprepare(lpc_snoop->clk); > + > return rc; > } > > @@ -313,6 +335,8 @@ static int aspeed_lpc_snoop_remove(struct platform_device *pdev) > aspeed_lpc_disable_snoop(lpc_snoop, 0); > aspeed_lpc_disable_snoop(lpc_snoop, 1); > > + clk_disable_unprepare(lpc_snoop->clk); > + > return 0; > } > > -- > 2.27.0 > > >