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 Received: from phobos.denx.de (phobos.denx.de [85.214.62.61]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 6A595ECAAD4 for ; Mon, 29 Aug 2022 07:38:50 +0000 (UTC) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id 9122C845F8; Mon, 29 Aug 2022 09:38:47 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=pass (p=reject dis=none) header.from=prevas.dk Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Authentication-Results: phobos.denx.de; dkim=pass (1024-bit key; unprotected) header.d=prevas.dk header.i=@prevas.dk header.b="U0WpUrSN"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id 9D0BC847E6; Mon, 29 Aug 2022 09:38:46 +0200 (CEST) Received: from EUR04-DB3-obe.outbound.protection.outlook.com (mail-eopbgr60128.outbound.protection.outlook.com [40.107.6.128]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id CE94E845F8 for ; Mon, 29 Aug 2022 09:38:43 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=pass (p=reject dis=none) header.from=prevas.dk Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=rasmus.villemoes@prevas.dk ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=NEvaWvoJJ6q+fT/g8u1ulwJh4z9vVfNHuD9TrtyUv0ZYb3GufBER7ZbYRDfKXtQ99tySZgGq7nIqp6ne+yWFheXyD5b70hDPOX1rpbrvdUro+3yCOF8douDEcKHx/FVgt3nPeMyaQ+tPPLxdeHqCFjtD1cyQ2T8wBQPCWsIMOz0HR+Lnlb7s/MDtpsfrX5nNLtslOLoEdSkHTE8g38hunCE6lvGdRZRN4W5b6BUoWDJDD52jfZXfvkifmyXxQaON12uc3n6JVb9DV4HJJdmfK6Vw5oFpjGJaXK6EvFiOR+nW3cyOQvfEFxd1xU+6FNldJy7AhXl+NZCkVp73ycMNmA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=Qgl0dRx9tFxLKwCV9uI75/ZrPILVe61cxCCnEKrZETg=; b=QY2N2ZcaxgeD6/bQcpJGTgSaMl5R1JEEzrCXt5dxk1ASgXwgbRbHtWJs4zPK1prIAwE2QX5T0hOlrrXukBmB99s9Nn1YqbkRM8o3PWoUm+i4ux4dbYdm42WW/fCc/mqZ2kpwbQEqn3AiTcFzBUS5LSjlId8sSdig2cPEgQIbJsZD/xEqkyOLOhM8u62nBxCPSLIp/AElwCLQBxxSh0Mxv/7Xnm6o7UrrwLVDn+D4GI70dOru1prZ7x7GHtU5dvJApWlvGj65JwWA34Y9WN1P+n+DbTNgEfwENZBqpnMRuG8GWq8UJ8oDTq4kj1W7B4O63F3WFiQZepyMiB8LskUQjQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=prevas.dk; dmarc=pass action=none header.from=prevas.dk; dkim=pass header.d=prevas.dk; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=prevas.dk; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Qgl0dRx9tFxLKwCV9uI75/ZrPILVe61cxCCnEKrZETg=; b=U0WpUrSNwUWBKpZf/Z1y7jjSDF3sgxTZM3lQLKmF1qemAR8YvN/k+op5T9x8NnFthhTiUXXF2lXjhLBF7U2IdNeInNzunqbhFjnSEqHXGkP0PhHaNtk1YnJ7T80wVmPUYkq8FEnhRWW7Sldx9yzgKPrkOVS82h53ny2+XCGBANM= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=prevas.dk; Received: from DU0PR10MB5266.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:10:34a::22) by AM8PR10MB4308.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:20b:1e4::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5566.14; Mon, 29 Aug 2022 07:38:42 +0000 Received: from DU0PR10MB5266.EURPRD10.PROD.OUTLOOK.COM ([fe80::84cd:fa2:ffc0:456e]) by DU0PR10MB5266.EURPRD10.PROD.OUTLOOK.COM ([fe80::84cd:fa2:ffc0:456e%8]) with mapi id 15.20.5566.021; Mon, 29 Aug 2022 07:38:42 +0000 Message-ID: <5bcfe2be-8f1b-8e8c-e122-bc0dad517a11@prevas.dk> Date: Mon, 29 Aug 2022 09:38:40 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.11.0 Subject: Re: [RFC PATCH 2/8] watchdog: Integrate watchdog triggering into the cyclic framework Content-Language: en-US To: Stefan Roese , u-boot@lists.denx.de Cc: trini@konsulko.com, sjg@chromium.org References: <20220829062313.32654-1-sr@denx.de> <20220829062313.32654-3-sr@denx.de> From: Rasmus Villemoes In-Reply-To: <20220829062313.32654-3-sr@denx.de> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-ClientProxiedBy: AS4P195CA0024.EURP195.PROD.OUTLOOK.COM (2603:10a6:20b:5d6::11) To DU0PR10MB5266.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:10:34a::22) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 767267c8-9c3d-49b7-79e0-08da89917f48 X-MS-TrafficTypeDiagnostic: AM8PR10MB4308:EE_ X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: ljnHQ6S3RwzrXmJeumXmGoUB748qwXMvGI+Cyrcy/aKYy2AMdRLn6WrFhkShitIBJniRkCCgjg6XWDZjbJGrJuJsrSE1TT/yX1BFNvrl46OzYyoNYz3FHLi9YdTl+XUp+4NIV0Mq/Lh7puzoarslx/idRHSxHH8AsznJZNYdV7m0zXRbf+bafTnL9Un/dipF5kdnjFGLA2+QPmYspbhfhp0RBeXHP6pknVgnL67e1jnKolzcuUmyrcIudtlWvFGcUGgD883bHXxkOv2jFUz0g3I+o9ZqeVtHiiATTM8wiZZzn0zz6b+JHeVrBBmta5JGRFZst+hS04BnOsHddUWZIJWCi+pB5uCmg5qEJcoSwBGf+9vu3w7ZtqeSL+YFnEvKEToN4GKxoI9rD/jGNg6DK4hyrD2EvmAFV/uQuZYQxF/nMp8wgFaa2x7ze6+WwXFEJwDPHV94G8CAdw9iWLhPGh0wMZVOAV1lP8c4QrV8xEIVe82ybYukjdCEEjuzCgiN0UOVunkPfT3IeYijbVOAnHMIC4e1AkxE7EPImix9ysS2pLcv+wqrU7hDZOa3GjnJdEr+rJpN8NByx8aJzTsbZauYH/RWIhj0pKzuzffVFzGIJMb3nMg2B4N5psW5j4u8TNwy16dieZ48fozpjV04Cy71A6fNXvHyI7urFrPe4xNawzhgzgRIJa6u3dG6TFM2RRuhgJmFSJJ7HRhYsCglccsyqxRdMlDuRnXimP+4kmcmBfq4wem1gRqoU58iXCV1yWtW7/3gFuDj+piYZJIeeB7M70L2mVfc+2MDz8xliE408cHwNwhHAkLgDwX5lCiRaKBR0CO2nQ+Ca30yU5WsxQ== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DU0PR10MB5266.EURPRD10.PROD.OUTLOOK.COM; PTR:; CAT:NONE; SFS:(13230016)(346002)(376002)(39840400004)(366004)(396003)(136003)(31696002)(316002)(83380400001)(2906002)(38100700002)(4326008)(38350700002)(66556008)(66476007)(66946007)(5660300002)(6506007)(8976002)(26005)(6512007)(44832011)(8936002)(8676002)(2616005)(478600001)(186003)(41300700001)(6486002)(36756003)(52116002)(86362001)(31686004)(43740500002)(45980500001); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?WjRhQ3h0aWdiV1dhQjhXZlR1UTlCNlBWWWFsaEpiemNQbGdtYU1Xdkd6SHMv?= =?utf-8?B?OEVJQUJ1SXRGYXJ3VU9TbUV5ckZpM2R5WDBVaVk1bEJBb085LzJnaVF3THJH?= =?utf-8?B?WGtRVnJxeWJRaktuQmxhdHBQM2NlRGRJc1I3Y3MvbUhTY2QxNzZlUEpza3kr?= =?utf-8?B?NnJZcHM5NUlxRGxmTHlxUjJJL1BjUG5oZytPNTFaSkVneVNCaERLa0VYQ3Ba?= =?utf-8?B?blF2R2NwN2crMWpQWEpjays1djBvWjZvWkcvbDQrRFpNVnZQSmFjRlhnampN?= =?utf-8?B?c0lhenFiSDRMdEh4eFFKVi9VeUdZRVV0NS96M0pPRzYwZEF3U1pMSU9HOEFU?= =?utf-8?B?aGMzclMzckJHRGtkNm9iYWZRYis3S2hWZTkrNTRkOHdscXhaaGdpSVFIS3c0?= =?utf-8?B?WGFvUk9SbWlHclFXQW9qbXc2V1RVZ0Zhdm9UZmhNYjJOdEdLSlg1MFRqdHhJ?= =?utf-8?B?VTZOWVlnZDA0b2s1Y01STWVjaS9ubEVvS0xvRUxLRFpCdUJxM1AvZE5NQVN3?= =?utf-8?B?eUl4V1dJMW9vQVUzajFKT1BId1JiN0FnaXJESUpiNW5TaVRyMjNZREt0NVds?= =?utf-8?B?MlNRb0FpYzVOajV1cFljL3B5T1dXckVkNVAxaW1ncVg2UG1icmtWR2E0Mm82?= =?utf-8?B?S2t0ZTZOWUVrKy9jTzJZTnBWRXdmOUdvZU94QlFvTkwwMjEyOGlMSHBsV3pK?= =?utf-8?B?OW4zTVIyRG1acklDNzZsWEhhZGhLd2E5UUNlNndZRFJyYXF4YjRrOVlNNWpU?= =?utf-8?B?anN0bmx3czRkbVpLdHZsbVBXcFlrajdaOEIzNENkUXZKUzM5M1h2VUppNkZw?= =?utf-8?B?bUEyWjJFZnBia3RpSHp6TG4xZ3FFZVo1NCt2bkZpdStvMnBUbGREMHlDajB0?= =?utf-8?B?dWtUa3pWcGlQcUxjamFRcnFrZFZjMkZvNG5QaUNORDgrenNQaUFIbUxFb0pB?= =?utf-8?B?MTAwRUtDbWdqZ2xXMStnRUl1NXJzQnFWa2pBUzFZcWdVT1YzTlRublVuWkNH?= =?utf-8?B?bU42RGsxRm1ZK2s0TVdQVVk4U0ErWWhyNjRDaExPVzB2azM1SzdDK2x1aEc4?= =?utf-8?B?M1JoY2xBUVBRMDFxRXdaRjhQTkUxRUZpTm5Ubm9FVW5MK0d2anlPYVhOVHFR?= =?utf-8?B?NTNSbnI4Qm5Pb1gvVmltLy81bFpyalAzVENZSVdmQUlTcjNuNkhWdU50UWxr?= =?utf-8?B?WjlsTEY5OUdLaGxjOU42c3U5VFllUTNCQmIyTlI2TVhQWDErUm5rSDN2YVdn?= =?utf-8?B?TUR3MGpNUDZpaGZhNEJYakxVMGFuL3lIMjl6K0tBL1hxSUhGQ2FiNCtuQ0FG?= =?utf-8?B?OXgxdDFRZG95d05xdTlqZWRvN2pDejZneTBFN1FXZEZxZ3VDOWkrNXpuYWR0?= =?utf-8?B?bUFmYlE3QlBzbGpHTkdOZGV4bTJJMllpaWZLMVVrRjR0RkI1dFQ1UzhESFZw?= =?utf-8?B?THJ2dm1qUnhYSVNFVnBRL1hIdWV6Yzk5UTRRbnVNUG9GVEt0TTNkSDRESVR1?= =?utf-8?B?VTFpa2JaWWswd1hKeE80QVJmVGNKZHR3bU5ERE80RWRZUEJQNTJBdkJCbUhE?= =?utf-8?B?QVVvWVFLWFhONnl4bjBqS1FUdDAxUFREQTVjUHA2OXFqeDBPMzQvZkVsN3dv?= =?utf-8?B?NmhLL244eHFveEVzT0pySjJQcE5FUjZLb1o4MGljRC93Q0xRamtIM3RZZnZi?= =?utf-8?B?b0VZMW9ROExkbmR6SWNubnJ6ZnZGd3QwY1lSNXBDb0dGMlBBcHp3cFQvV1Bh?= =?utf-8?B?NnMxWUpBRks4ekkveHZSbkxtWlJ4M1NuL3pLM1pTYzhtUFB2RTZmbGNsY3da?= =?utf-8?B?ZXQ4ZU50OEN4TUNMU3BVbzM0REExZ2NxalkwWUI2bURMV2ZvZjJVUENFMDNP?= =?utf-8?B?WnArcTl4OXdtelJvVjBBZmRSVE0rMEI1Qkx2blltb0Y5YWVyZ3RmNmlMNVE3?= =?utf-8?B?MVJoTUowcVZaWXhRcE1sSXB5TEUxazBDdnpiWEtnMW1pRkpPTHRWZmwwVmpJ?= =?utf-8?B?eFUvYmpIM1hTSkJsYnBDSjQ1My9WVjJLdysxUFh2TGpVMUhnZ1U3WmltajdM?= =?utf-8?B?d3JoWk1tWkxIdG9OVDNzUmZlL05FQmJuempCcHlPRUlMWDRDb0QzQVdYNE5U?= =?utf-8?B?OWk3RGQyQXd3b0hyTHppd2NnZ0pwSkt6eFpMQUhEMk8rTkJQQXdFbXlJNGJW?= =?utf-8?B?enc9PQ==?= X-OriginatorOrg: prevas.dk X-MS-Exchange-CrossTenant-Network-Message-Id: 767267c8-9c3d-49b7-79e0-08da89917f48 X-MS-Exchange-CrossTenant-AuthSource: DU0PR10MB5266.EURPRD10.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Aug 2022 07:38:42.6003 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: d350cf71-778d-4780-88f5-071a4cb1ed61 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: cSC3bhAi3xVQiy4emiwMF5ot27Y37m0+sERv24yLa3Oc/AG6qm55daTYpjLH+T5uLAJsEREh9tYxQYpRFxBIzuVCX3FTmS+55shlR9qcp00= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM8PR10MB4308 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.39 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" X-Virus-Scanned: clamav-milter 0.103.6 at phobos.denx.de X-Virus-Status: Clean On 29/08/2022 08.23, Stefan Roese wrote: > This patch integrates the watchdog triggering into the recently added > cyclic infrastructure. Each watchdog device that shall be triggered > registers it's own cyclic function. This way, multiple watchdog devices > are still supported, each via a cyclic function with separate trigger > intervals. > > Signed-off-by: Stefan Roese > --- > drivers/watchdog/Kconfig | 2 + > drivers/watchdog/wdt-uclass.c | 80 +++++++++++++++++++++-------------- > 2 files changed, 50 insertions(+), 32 deletions(-) > > diff --git a/drivers/watchdog/Kconfig b/drivers/watchdog/Kconfig > index 50e6a1efba51..e55deaf906b5 100644 > --- a/drivers/watchdog/Kconfig > +++ b/drivers/watchdog/Kconfig > @@ -3,6 +3,7 @@ menu "Watchdog Timer Support" > config WATCHDOG > bool "Enable U-Boot watchdog reset" > depends on !HW_WATCHDOG > + select CYCLIC > help > This option enables U-Boot watchdog support where U-Boot is using > watchdog_reset function to service watchdog device in U-Boot. Enable > @@ -74,6 +75,7 @@ config WDT > bool "Enable driver model for watchdog timer drivers" > depends on DM > imply WATCHDOG > + select CYCLIC > help > Enable driver model for watchdog timer. At the moment the API > is very simple and only supports four operations: > diff --git a/drivers/watchdog/wdt-uclass.c b/drivers/watchdog/wdt-uclass.c > index dbf556467d3c..1bf1298d0ecf 100644 > --- a/drivers/watchdog/wdt-uclass.c > +++ b/drivers/watchdog/wdt-uclass.c > @@ -6,6 +6,7 @@ > #define LOG_CATEGORY UCLASS_WDT > > #include > +#include > #include > #include > #include > @@ -38,8 +39,33 @@ struct wdt_priv { > bool running; > /* No autostart */ > bool noautostart; > + > + struct cyclic_info *cyclic; > }; > > +static void wdt_cyclic(void *ctx) > +{ > + struct udevice *dev = ctx; > + struct wdt_priv *priv; > + struct uclass *uc; > + > + /* Exit if GD is not ready or watchdog is not initialized yet */ > + if (!gd || !(gd->flags & GD_FLG_WDT_READY)) > + return; Hm, by the time this callback can get called, which is certainly not before it has been registered, aren't we sure that these conditions are met? They were clearly needed in the "old" watchdog_reset because that could end up being invoked more or less from _everywhere_. But here I think it's redundant. > int initr_watchdog(void) > @@ -105,8 +128,28 @@ int wdt_start(struct udevice *dev, u64 timeout_ms, ulong flags) > ret = ops->start(dev, timeout_ms, flags); > if (ret == 0) { > struct wdt_priv *priv = dev_get_uclass_priv(dev); > + char str[16]; > > priv->running = true; > + > + memset(str, 0, 16); > + if (IS_ENABLED(CONFIG_WATCHDOG)) { > + /* Register the watchdog driver as a cyclic function */ > + priv->cyclic = cyclic_register(wdt_cyclic, > + priv->reset_period * 1000, > + dev->name, dev); > + if (!priv->cyclic) { > + printf("cyclic_register for %s failed\n", > + dev->name); > + } else { > + snprintf(str, 16, "all %ldms", > + priv->reset_period); > + } > + } > + > + printf("WDT: Started %s with%s servicing %s (%ds timeout)\n", "servicing all 50ms" doesn't sound right to me. "servicing every 50ms" perhaps? Also, even if !priv->cyclic we still seem to end here, which doesn't seem right. Rasmus