From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-15.3 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,NICE_REPLY_A,SPF_HELO_NONE,SPF_PASS,USER_AGENT_SANE_1 autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 230F4C433B4 for ; Fri, 14 May 2021 13:42:23 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id ED9B661355 for ; Fri, 14 May 2021 13:42:22 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233995AbhENNnd (ORCPT ); Fri, 14 May 2021 09:43:33 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:41794 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229888AbhENNn1 (ORCPT ); Fri, 14 May 2021 09:43:27 -0400 Received: from mail-qv1-xf32.google.com (mail-qv1-xf32.google.com [IPv6:2607:f8b0:4864:20::f32]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 038D2C061574; Fri, 14 May 2021 06:42:15 -0700 (PDT) Received: by mail-qv1-xf32.google.com with SMTP id q6so15453527qvb.2; Fri, 14 May 2021 06:42:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:subject:to:cc:references:from:message-id:date:user-agent :mime-version:in-reply-to:content-language:content-transfer-encoding; bh=FB0NSmh4fqQIsNAlL8pm2Yaj9257aMVxgrbCCbLsJno=; b=bSYGolIp2eZPKT2PgcNtJAqtAQOBuTXS6U5vqCjFx1TvzXLoqHVMaeMiurrchYeelo rYGqo5DS5IKEiAzb7jfVjjstWOUg7NhvxEMQh22g5VmbGdaJE68pZypRae3ZT6dR4bPX JDrV3b8wIOPjYJJyDD4pf2+RA9gcqbD43tbLdrMAJesJ5E15fblOoGIxwaSWPWVU4GJ/ ZNcBD17zoVnsUNwUZvii5YtaVkt564vVvMUTGuye0KhxD16RJk2VH9RhfvzvtBSpmmcV GWxZ0Z7fBFBhILdZ/D4CWj/eIbJq7dOGKkqsFS9gfd1HNAXFisgsXqHirifpUtYdw42E lQ7A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:subject:to:cc:references:from:message-id :date:user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=FB0NSmh4fqQIsNAlL8pm2Yaj9257aMVxgrbCCbLsJno=; b=R8aoQstGEdi/GdLq4eJx+BJildfPoc3NR7nuibyloPIW/YKCchAa9eXChBOICWjiEw ZvyJc4ko/gv4eTsDgnq/gPXiQ8JdJl4BY04p8POWEoqE+MbDP04hYHFrhGcqYQoqKNJK udLgho8U/o+5jNIEaxtSgXn5P9xtIuDG54U7s5caOTogz8S4qm9nawzE9F8KTZMWsK7I unWwGlRbTdZzIXESGs82VmMpPJ4KqlAIgyRTdRIspoV7SGwcam4GPpJi1GgCC03Qmi6f HAXV4ywhT5jbF31RuilYnJhxDuYj/jX9NfrMm5b1V71vL8uPcizIVVOTxQGBRYFJnPjP TG7Q== X-Gm-Message-State: AOAM5338ZeDY7RVrxAr5/rnfILRGh/AioNjkbbd3H757EA8xVQBX/fXU k/hgGy5M7NWk45Yv35pbji4uCBhusDs= X-Google-Smtp-Source: ABdhPJwSrQJEe/sqwlwIsziF0BnLoqwRecfwVX678Q3kxauWeyd7MC/VyT6Z218hFBcA+fON3YeJJA== X-Received: by 2002:a05:6214:1705:: with SMTP id db5mr5828915qvb.13.1620999734934; Fri, 14 May 2021 06:42:14 -0700 (PDT) Received: from server.roeck-us.net ([2600:1700:e321:62f0:329c:23ff:fee3:9d7c]) by smtp.gmail.com with ESMTPSA id c185sm4825808qkg.96.2021.05.14.06.42.13 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 14 May 2021 06:42:14 -0700 (PDT) Sender: Guenter Roeck Subject: Re: [PATCH v2] watchdog: imx2_wdt: avoid to ping before resume back To: Robin Gong , wim@linux-watchdog.org, shawnguo@kernel.org, s.hauer@pengutronix.de, festevam@gmail.com Cc: linux-imx@nxp.com, kernel@pengutronix.de, linux-watchdog@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org References: <1621012875-22667-1-git-send-email-yibin.gong@nxp.com> From: Guenter Roeck Message-ID: Date: Fri, 14 May 2021 06:42:12 -0700 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.8.1 MIME-Version: 1.0 In-Reply-To: <1621012875-22667-1-git-send-email-yibin.gong@nxp.com> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 7bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 5/14/21 10:21 AM, Robin Gong wrote: > Since watchdog_ping_work is not freezable so that it maybe scheduled before > imx2_wdt_resume where watchdog clock enabled, hence, kernel will hang in > imx2_wdt_ping without clock, and then watchdog reset happen. Add clk_is_on > to prevent the above case by ignoring ping until watchdog driver resume > back indeed. > > Signed-off-by: Robin Gong Reviewed-by: Guenter Roeck > --- > drivers/watchdog/imx2_wdt.c | 10 ++++++++++ > 1 file changed, 10 insertions(+) > > diff --git a/drivers/watchdog/imx2_wdt.c b/drivers/watchdog/imx2_wdt.c > index b84f80f..cc86018 100644 > --- a/drivers/watchdog/imx2_wdt.c > +++ b/drivers/watchdog/imx2_wdt.c > @@ -65,6 +65,7 @@ struct imx2_wdt_device { > struct regmap *regmap; > struct watchdog_device wdog; > bool ext_reset; > + bool clk_is_on; > }; > > static bool nowayout = WATCHDOG_NOWAYOUT; > @@ -160,6 +161,9 @@ static int imx2_wdt_ping(struct watchdog_device *wdog) > { > struct imx2_wdt_device *wdev = watchdog_get_drvdata(wdog); > > + if (!wdev->clk_is_on) > + return 0; > + > regmap_write(wdev->regmap, IMX2_WDT_WSR, IMX2_WDT_SEQ1); > regmap_write(wdev->regmap, IMX2_WDT_WSR, IMX2_WDT_SEQ2); > return 0; > @@ -301,6 +305,8 @@ static int __init imx2_wdt_probe(struct platform_device *pdev) > if (ret) > return ret; > > + wdev->clk_is_on = true; > + > regmap_read(wdev->regmap, IMX2_WDT_WRSR, &val); > wdog->bootstatus = val & IMX2_WDT_WRSR_TOUT ? WDIOF_CARDRESET : 0; > > @@ -361,6 +367,8 @@ static int __maybe_unused imx2_wdt_suspend(struct device *dev) > > clk_disable_unprepare(wdev->clk); > > + wdev->clk_is_on = false; > + > return 0; > } > > @@ -375,6 +383,8 @@ static int __maybe_unused imx2_wdt_resume(struct device *dev) > if (ret) > return ret; > > + wdev->clk_is_on = true; > + > if (watchdog_active(wdog) && !imx2_wdt_is_running(wdev)) { > /* > * If the watchdog is still active and resumes > From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-16.0 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,NICE_REPLY_A,SPF_HELO_NONE,SPF_PASS, USER_AGENT_SANE_1 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 871A8C433B4 for ; Fri, 14 May 2021 13:44:03 +0000 (UTC) Received: from desiato.infradead.org (desiato.infradead.org [90.155.92.199]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 0467C61355 for ; Fri, 14 May 2021 13:44:02 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 0467C61355 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=roeck-us.net Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=desiato.20200630; h=Sender:Content-Type: Content-Transfer-Encoding:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:Date:Message-ID:From: References:Cc:To:Subject:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=myXgi3MMARbUc+wifh8eSdCHTwKB9/7tjjdBbgm1IoY=; b=M04uR5UBqItf+HjTFLwRmURZm 8AZxCoa+g6LchPgSZW4E/goO5O95sguJNw0pFQZYEXSNQIYXfs3gkPDFoJnzwKA4VED7iv44dhNcG uCKXTxaDyF5E5gfhHJfbuegtW9ogGMRSCLvYpqHcjlnz10MvHaX20XRoS+XCbmHo2kWRzwRfUVxKR HzLgADhdCmRMsT+Fa/OwHvRMexAwCgyupmBW+/+uHN8S0aqcRXcPuYjG5nOi2UQ+N+u17N7N3REES Isq6Blhw7KrVsbjJrx4/qJ6Jb1HIuIhBPou8ZCbKwt01WKHQUA79rHasLsbkjawgWNP6b167pJJWc oskvOaDEA==; Received: from localhost ([::1] helo=desiato.infradead.org) by desiato.infradead.org with esmtp (Exim 4.94 #2 (Red Hat Linux)) id 1lhY58-008ADr-7O; Fri, 14 May 2021 13:42:22 +0000 Received: from bombadil.infradead.org ([2607:7c80:54:e::133]) by desiato.infradead.org with esmtps (Exim 4.94 #2 (Red Hat Linux)) id 1lhY54-008ADa-SU for linux-arm-kernel@desiato.infradead.org; Fri, 14 May 2021 13:42:19 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=bombadil.20210309; h=Content-Transfer-Encoding: Content-Type:In-Reply-To:MIME-Version:Date:Message-ID:From:References:Cc:To: Subject:Sender:Reply-To:Content-ID:Content-Description; bh=FB0NSmh4fqQIsNAlL8pm2Yaj9257aMVxgrbCCbLsJno=; b=y4VGauXopRLntAEfEtjWuMDHXa uyzmImaT6WMeZAykZCXs4CQvMPDjtu3idtuwnlKcVO4m8YJ/O9ZSDQxd77t4zsVJz/LMhKx7WvE2g qoGX6yba+PVJnopHRaSMuAbyQ2Hagi/wcz2MCHF8YuYxvMXdLvi6gxr0NAdhEM94slcMRFRVd5zlC USi5AuEDVTPoQLWVj7UMA1IyA+z/FJgNCd6MX5wuyTILisvOUZuKp32uEf8JQp4DsKCJA+eyhmBjr 9/6iAhkyBSJwdaTCgrysp1HqA5mzp/Cif1yDIOgAxOjSkhEI37OkeJpFul4zFsgMsTuBv5xOZBdA+ FhrEZ1KQ==; Received: from mail-qv1-xf33.google.com ([2607:f8b0:4864:20::f33]) by bombadil.infradead.org with esmtps (Exim 4.94 #2 (Red Hat Linux)) id 1lhY52-00C0Yj-95 for linux-arm-kernel@lists.infradead.org; Fri, 14 May 2021 13:42:17 +0000 Received: by mail-qv1-xf33.google.com with SMTP id r13so15425679qvm.7 for ; Fri, 14 May 2021 06:42:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:subject:to:cc:references:from:message-id:date:user-agent :mime-version:in-reply-to:content-language:content-transfer-encoding; bh=FB0NSmh4fqQIsNAlL8pm2Yaj9257aMVxgrbCCbLsJno=; b=bSYGolIp2eZPKT2PgcNtJAqtAQOBuTXS6U5vqCjFx1TvzXLoqHVMaeMiurrchYeelo rYGqo5DS5IKEiAzb7jfVjjstWOUg7NhvxEMQh22g5VmbGdaJE68pZypRae3ZT6dR4bPX JDrV3b8wIOPjYJJyDD4pf2+RA9gcqbD43tbLdrMAJesJ5E15fblOoGIxwaSWPWVU4GJ/ ZNcBD17zoVnsUNwUZvii5YtaVkt564vVvMUTGuye0KhxD16RJk2VH9RhfvzvtBSpmmcV GWxZ0Z7fBFBhILdZ/D4CWj/eIbJq7dOGKkqsFS9gfd1HNAXFisgsXqHirifpUtYdw42E lQ7A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:subject:to:cc:references:from:message-id :date:user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=FB0NSmh4fqQIsNAlL8pm2Yaj9257aMVxgrbCCbLsJno=; b=uEJ+rE09EPOQ2Dtc7830Jsoq6z8BnDOBRDfiScj0U91s6sym+AcDgNw458mt6Q4JPa tWY4wYvvBc2h7GxvDKt/ke8cVeeZiEbe3mBpYgmYhJpBkHfdXQtKC4TaHlQCPgH7N6IK mGb1k1v9UerqxpL19lB4GCT3NvdpOrrX5hEY5jgCl4zflVZ68GKpqzUaLXZBBu/Nz0g6 Pbwa29Ldc5o7IxP5XCPDHehzhf2PHQFoBF31NN2NoFBmOfEJtxkAvAunucY3swL3PMw9 Vcwa7AT7CV/hDypBtZuERE7wMVNCiMLN6QFenGQbynad+3aFBZ3YBUYhg3KBPOwUcE85 QVGA== X-Gm-Message-State: AOAM5332eld5UzS0zNuToRTeWq+fC61VJ+9PksJUBUUUld3qXdB2dvtP JGWsYUEYaGBd9q8We2NzI70= X-Google-Smtp-Source: ABdhPJwSrQJEe/sqwlwIsziF0BnLoqwRecfwVX678Q3kxauWeyd7MC/VyT6Z218hFBcA+fON3YeJJA== X-Received: by 2002:a05:6214:1705:: with SMTP id db5mr5828915qvb.13.1620999734934; Fri, 14 May 2021 06:42:14 -0700 (PDT) Received: from server.roeck-us.net ([2600:1700:e321:62f0:329c:23ff:fee3:9d7c]) by smtp.gmail.com with ESMTPSA id c185sm4825808qkg.96.2021.05.14.06.42.13 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 14 May 2021 06:42:14 -0700 (PDT) Subject: Re: [PATCH v2] watchdog: imx2_wdt: avoid to ping before resume back To: Robin Gong , wim@linux-watchdog.org, shawnguo@kernel.org, s.hauer@pengutronix.de, festevam@gmail.com Cc: linux-imx@nxp.com, kernel@pengutronix.de, linux-watchdog@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org References: <1621012875-22667-1-git-send-email-yibin.gong@nxp.com> From: Guenter Roeck Message-ID: Date: Fri, 14 May 2021 06:42:12 -0700 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.8.1 MIME-Version: 1.0 In-Reply-To: <1621012875-22667-1-git-send-email-yibin.gong@nxp.com> Content-Language: en-US X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210514_064216_371862_0FEFC4C5 X-CRM114-Status: GOOD ( 21.89 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset="us-ascii"; Format="flowed" Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org On 5/14/21 10:21 AM, Robin Gong wrote: > Since watchdog_ping_work is not freezable so that it maybe scheduled before > imx2_wdt_resume where watchdog clock enabled, hence, kernel will hang in > imx2_wdt_ping without clock, and then watchdog reset happen. Add clk_is_on > to prevent the above case by ignoring ping until watchdog driver resume > back indeed. > > Signed-off-by: Robin Gong Reviewed-by: Guenter Roeck > --- > drivers/watchdog/imx2_wdt.c | 10 ++++++++++ > 1 file changed, 10 insertions(+) > > diff --git a/drivers/watchdog/imx2_wdt.c b/drivers/watchdog/imx2_wdt.c > index b84f80f..cc86018 100644 > --- a/drivers/watchdog/imx2_wdt.c > +++ b/drivers/watchdog/imx2_wdt.c > @@ -65,6 +65,7 @@ struct imx2_wdt_device { > struct regmap *regmap; > struct watchdog_device wdog; > bool ext_reset; > + bool clk_is_on; > }; > > static bool nowayout = WATCHDOG_NOWAYOUT; > @@ -160,6 +161,9 @@ static int imx2_wdt_ping(struct watchdog_device *wdog) > { > struct imx2_wdt_device *wdev = watchdog_get_drvdata(wdog); > > + if (!wdev->clk_is_on) > + return 0; > + > regmap_write(wdev->regmap, IMX2_WDT_WSR, IMX2_WDT_SEQ1); > regmap_write(wdev->regmap, IMX2_WDT_WSR, IMX2_WDT_SEQ2); > return 0; > @@ -301,6 +305,8 @@ static int __init imx2_wdt_probe(struct platform_device *pdev) > if (ret) > return ret; > > + wdev->clk_is_on = true; > + > regmap_read(wdev->regmap, IMX2_WDT_WRSR, &val); > wdog->bootstatus = val & IMX2_WDT_WRSR_TOUT ? WDIOF_CARDRESET : 0; > > @@ -361,6 +367,8 @@ static int __maybe_unused imx2_wdt_suspend(struct device *dev) > > clk_disable_unprepare(wdev->clk); > > + wdev->clk_is_on = false; > + > return 0; > } > > @@ -375,6 +383,8 @@ static int __maybe_unused imx2_wdt_resume(struct device *dev) > if (ret) > return ret; > > + wdev->clk_is_on = true; > + > if (watchdog_active(wdog) && !imx2_wdt_is_running(wdev)) { > /* > * If the watchdog is still active and resumes > _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel