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=-12.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS 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 E0B9DC47082 for ; Wed, 26 May 2021 19:24:43 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id C2D2A6108E for ; Wed, 26 May 2021 19:24:43 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234007AbhEZT0I (ORCPT ); Wed, 26 May 2021 15:26:08 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:44480 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231321AbhEZT0C (ORCPT ); Wed, 26 May 2021 15:26:02 -0400 Received: from mail-oi1-x22d.google.com (mail-oi1-x22d.google.com [IPv6:2607:f8b0:4864:20::22d]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id BC927C061574; Wed, 26 May 2021 12:24:29 -0700 (PDT) Received: by mail-oi1-x22d.google.com with SMTP id y76so2624667oia.6; Wed, 26 May 2021 12:24:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc:content-transfer-encoding; bh=mMr84wnW79eJ+bLd6qGzg7fkB7rh5OToBUejvhaMQJI=; b=cUPHV+Io0Nsf4MIPPGV6JPdt5NqOOskBJGEx1I/WkMW0nGYdZU48WuSeJm3GamIidT Sy/0/U+Xmd5+2Nk8E0uTtFoZaHHiJazee6qRwCXnx9pw9tkruqPEB4jYR6kv21aAg7VA 4kIGjBO+P3xnLFsH6EU4TCAU3Hu7ZjQ5jiogcx7gd8aAgw4oymBjOlOetNEvgPW+/U4X 902vgfb8W7OpyXhamNERFfXXbXGehDEUF96W67zxIpCEtRoUf8xW97udmHBQHjv7+VGx +d93zivxGBG+zD5nn9HG7eDpXql1MdFhJdp1XR4/bIW+LAlmRiueJhdOoSFhxeFqKUma qF1A== 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:content-transfer-encoding; bh=mMr84wnW79eJ+bLd6qGzg7fkB7rh5OToBUejvhaMQJI=; b=QbavI4OOdFDZdH+9ZqhgSye2PmmjJvB9J9bdzwVHQl+xmDRjiwYxZAzlSvNcta22kh GCZoBtXBZj89nsGt9GjxsmWUTaItArdHiCJ9tVW755uTfI41gz93i+mm0AIDF1owUm7a iQ3ClkelRJfvXut855m1j9zd6NkQ3GT+R+8MwEY3llD06fFRtpEnoa2+QtNQVWQx8LVB Tqd74v3+erLn7gRyNX+1kksMaXlJb/pwqX2T1WnKZsLXWnEdB9+Awr/5L/Hu7x28pT1u PhG+e/dEtIUJNC7QWbkT5w/qD2i0lodpJrdIHwRK5HxVM16lzjSjFr5cgBu/UuhSapgP LXWw== X-Gm-Message-State: AOAM5306GsR3kSahiGw9mG7wLm6o9cL6qob1ljyaJB+tOJpLgAfS2GmO GFdy+MwSBQYOshXJ3SxJPN4E+V9pdrpKfq3PSpo= X-Google-Smtp-Source: ABdhPJxYd77i/ganESJH9u6Q39LnWFqKNrqRv+AIw77ejduNuBhTpthz6X4nRwHGYXpVAnaqohkCrCgb02MSxBnlhOU= X-Received: by 2002:aca:2b17:: with SMTP id i23mr3063425oik.87.1622057069090; Wed, 26 May 2021 12:24:29 -0700 (PDT) MIME-Version: 1.0 References: <20210525184449.57703-1-romain.perier@gmail.com> <20210525184449.57703-3-romain.perier@gmail.com> <5ce3b5a5-1500-0d95-623e-299e7b1eb43b@roeck-us.net> In-Reply-To: <5ce3b5a5-1500-0d95-623e-299e7b1eb43b@roeck-us.net> From: Romain Perier Date: Wed, 26 May 2021 21:24:16 +0200 Message-ID: Subject: Re: [PATCH 2/3] watchdog: Add Mstar MSC313e WDT driver To: Guenter Roeck Cc: Wim Van Sebroeck , Rob Herring , Daniel Palmer , Mohammed Billoo , linux-watchdog@vger.kernel.org, linux-arm-kernel , devicetree , Linux Kernel Mailing List Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi, Le mar. 25 mai 2021 =C3=A0 21:52, Guenter Roeck a =C3= =A9crit : > > On 5/25/21 11:44 AM, Romain Perier wrote: > > From: Daniel Palmer > > > > It adds a driver for the IP block handling the watchdog timer found for > > Mstar MSC313e SoCs and newer. > > > > Signed-off-by: Daniel Palmer > > Co-developed-by: Romain Perier > > Signed-off-by: Romain Perier > > --- > > MAINTAINERS | 1 + > > drivers/watchdog/Kconfig | 13 +++ > > drivers/watchdog/Makefile | 1 + > > drivers/watchdog/msc313e_wdt.c | 173 ++++++++++++++++++++++++++++++++= + > > 4 files changed, 188 insertions(+) > > create mode 100644 drivers/watchdog/msc313e_wdt.c > > > > diff --git a/MAINTAINERS b/MAINTAINERS > > index a0f37adb9e64..fcc10c57298c 100644 > > --- a/MAINTAINERS > > +++ b/MAINTAINERS > > @@ -2177,6 +2177,7 @@ F: arch/arm/mach-mstar/ > > F: drivers/clk/mstar/ > > F: drivers/gpio/gpio-msc313.c > > F: drivers/pinctrl/pinctrl-msc313.c > > +F: drivers/watchdog/msc313e_wdt.c > > F: include/dt-bindings/clock/mstar-* > > F: include/dt-bindings/gpio/msc313-gpio.h > > F: include/soc/mstar/ > > diff --git a/drivers/watchdog/Kconfig b/drivers/watchdog/Kconfig > > index 355100dad60a..f53634ea0de6 100644 > > --- a/drivers/watchdog/Kconfig > > +++ b/drivers/watchdog/Kconfig > > @@ -980,6 +980,19 @@ config VISCONTI_WATCHDOG > > Say Y here to include support for the watchdog timer in Toshiba > > Visconti SoCs. > > > > +config MSC313E_WATCHDOG > > + tristate "MStar MSC313e watchdog" > > + depends on ARCH_MSTARV7 || COMPILE_TEST > > + depends on OF > > + select WATCHDOG_CORE > > + help > > + Say Y here to include support for the Watchdog timer embedded > > + into MStar MSC313e chips. This will reboot your system when the > > + timeout is reached. > > + > > + To compile this driver as a module, choose M here: the > > + module will be called msc313e_wdt. > > + > > # X86 (i386 + ia64 + x86_64) Architecture > > > > config ACQUIRE_WDT > > diff --git a/drivers/watchdog/Makefile b/drivers/watchdog/Makefile > > index a7eade8b4d45..7fa392ae3000 100644 > > --- a/drivers/watchdog/Makefile > > +++ b/drivers/watchdog/Makefile > > @@ -92,6 +92,7 @@ obj-$(CONFIG_SPRD_WATCHDOG) +=3D sprd_wdt.o > > obj-$(CONFIG_PM8916_WATCHDOG) +=3D pm8916_wdt.o > > obj-$(CONFIG_ARM_SMC_WATCHDOG) +=3D arm_smc_wdt.o > > obj-$(CONFIG_VISCONTI_WATCHDOG) +=3D visconti_wdt.o > > +obj-$(CONFIG_MSC313E_WATCHDOG) +=3D msc313e_wdt.o > > > > # X86 (i386 + ia64 + x86_64) Architecture > > obj-$(CONFIG_ACQUIRE_WDT) +=3D acquirewdt.o > > diff --git a/drivers/watchdog/msc313e_wdt.c b/drivers/watchdog/msc313e_= wdt.c > > new file mode 100644 > > index 000000000000..434259256967 > > --- /dev/null > > +++ b/drivers/watchdog/msc313e_wdt.c > > @@ -0,0 +1,173 @@ > > +// SPDX-License-Identifier: GPL-2.0 > > +/* > > + * MStar WDT driver > > + * > > + * Copyright (C) 2019 - 2021 Daniel Palmer > > + * Copyright (C) 2021 Romain Perier > > + * > > + */ > > + > > +#include > > +#include > > +#include > > +#include > > +#include > > +#include > > +#include > > +#include > > Alphabetic order, please. Ack, I will fix it. > Also, please drop unneeded include files. > The driver doesn't support interrupts, so any interrupt related > include file is unnecessary. I also don't see any devicetree specific > code except for of_device_id, and that is declared in mod_devicetable.h, > not in an of_xxx.h include file. Arf, in fact an interrupt was used previously (it triggers when the wdt reaches a specific value that is not necessarily the value of the initial timeout), but I have decided to remove it because not really useful. And I have kept some headers, sorry for that. I will fix= it. > > > + > > +#define REG_WDT_CLR 0x0 > > +#define REG_WDT_MAX_PRD_L 0x10 > > +#define REG_WDT_MAX_PRD_H 0x14 > > + > > +#define MSC313E_WDT_DEFAULT_TIMEOUT 30 > > +/* Supports 1 - 350 sec */ > > Doesn't that depend on the clock freqneucy ? > More on that see below. > > > +#define MSC313E_WDT_MIN_TIMEOUT 1 > > +#define MSC313E_WDT_MAX_TIMEOUT 350 > > + > > +static unsigned int timeout; > > + > > +module_param(timeout, int, 0); > > +MODULE_PARM_DESC(timeout, "Watchdog timeout in seconds"); > > + > > +struct msc313e_wdt_priv { > > + void __iomem *base; > > + struct device *dev; > > I don't immediately see where 'dev' is used. > > > + struct watchdog_device wdev; > > + struct clk *clk; > > +}; > > + > > +static int msc313e_wdt_start(struct watchdog_device *wdev) > > +{ > > + struct msc313e_wdt_priv *priv =3D watchdog_get_drvdata(wdev); > > + u32 timeout; > > + int err; > > + > > + err =3D clk_prepare_enable(priv->clk); > > + if (err) { > > + dev_err(priv->dev, "failed to enable clock\n"); > > Ah, here. I am not sure if I like that error message - it is going to be > persistent and may create a lot of noise if it is ever seen, and pretty m= uch > useless otherwise. Either case, if you insist on the message, I'd suggest > to use wdev->parent. Honestly ? It is mostly to avoid silent errors, but I can also return an error directly, yep (I mean just return the error code). The userspace app is supposed to check the error code returned by ioctl. No objection for removing the message (and so priv->dev too). > > > + return err; > > + } > > + timeout =3D wdev->timeout * clk_get_rate(priv->clk); > > How is it guaranteed that this won't overflow ? The maximum timeout is no= t > tied to the clock frequency. This will overflow if the clock frequency is > above 0xffffffff / 350 =3D 12271335 Hz and the timeout is sufficiently la= rge. > Ah good catch ! Mhhhhh we could compute max_timeout dynamically from the probe function. So, we allow the maximum possible value just before the overflow. The units are different but there is something similar in meson_wdt.c . Anyway, I will think about it and propose a fix. Thanks, Romain 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=-10.8 required=3.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED,DKIM_SIGNED,DKIM_VALID,FREEMAIL_FORGED_FROMDOMAIN, FREEMAIL_FROM,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS 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 67F0AC47082 for ; Wed, 26 May 2021 20:18:29 +0000 (UTC) Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (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 22E75613BF for ; Wed, 26 May 2021 20:18:29 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 22E75613BF Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.com 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=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:Cc:To:Subject:Message-ID:Date:From: In-Reply-To:References:MIME-Version:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=AcIq9JmO3eDlFu77qRgRLBQMafTFMLo0IZBYNsjB4e8=; b=K3a50n7dXOCRAz kyk7SpPu7cbc586zJmXuQI3c4bTBX9QFVLPIYKRqcrxKJkoO7Pkgk/w4BO2d6finRJQpw2sqIGZcC ZY4ASdJYiTVN5ThXWAvmXnIoDS+UQ6Yksy8KXsFrivEgHtbHzhBrpkJVT+KDHxw03KDThOfWkpn79 sKXaBNUBShLzjgupcvj6r4CKste0FLr8DYUHzcBc3nlFTrVbA9EKgZs5eLDnMH+ckJ9lNPzLhja+G Ahz2NDSgRDBcdnf9WiK524yQuUg+O8qbeb/Xu73QZsvAFyBPMoj7gEO8jll8hNTS2kjpXQO4W2wmM YYzyzgwEjrxi320ST50w==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1llzwq-00HJlg-1W; Wed, 26 May 2021 20:16:13 +0000 Received: from mail-oi1-x230.google.com ([2607:f8b0:4864:20::230]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1llz8p-00GvsH-32 for linux-arm-kernel@lists.infradead.org; Wed, 26 May 2021 19:24:32 +0000 Received: by mail-oi1-x230.google.com with SMTP id w127so2603114oig.12 for ; Wed, 26 May 2021 12:24:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc:content-transfer-encoding; bh=mMr84wnW79eJ+bLd6qGzg7fkB7rh5OToBUejvhaMQJI=; b=cUPHV+Io0Nsf4MIPPGV6JPdt5NqOOskBJGEx1I/WkMW0nGYdZU48WuSeJm3GamIidT Sy/0/U+Xmd5+2Nk8E0uTtFoZaHHiJazee6qRwCXnx9pw9tkruqPEB4jYR6kv21aAg7VA 4kIGjBO+P3xnLFsH6EU4TCAU3Hu7ZjQ5jiogcx7gd8aAgw4oymBjOlOetNEvgPW+/U4X 902vgfb8W7OpyXhamNERFfXXbXGehDEUF96W67zxIpCEtRoUf8xW97udmHBQHjv7+VGx +d93zivxGBG+zD5nn9HG7eDpXql1MdFhJdp1XR4/bIW+LAlmRiueJhdOoSFhxeFqKUma qF1A== 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:content-transfer-encoding; bh=mMr84wnW79eJ+bLd6qGzg7fkB7rh5OToBUejvhaMQJI=; b=Lyop4vIHk7ccsrNH5ltUPx6BwL590iHvQJnP0/9ekqUnglKZjg9T+sptSUb3sLLp+m ctJ8ov49+JmwdFZcO2kdjtjkCUxd36CVIvL3JSYn9cLoOZ+LdDHWO7yi06Oo4XQDTGps 9gog4cITEjcrKgIkFnIWwbaZmS5/XiD1IpxKGzsMO8CXxBuJWeO3g7pxPzFCMaxR6v5G RT2OFn9vx69kW0J2plmkw9TfD2UbxyKWEq5S+xT88a2w+ZV6oNwgpYsD6nXrM/VAIhOJ wCzv9eJsGLbskXgAu3ziIiym2fng3gkwuI3QMWEsKgpgFJTKUXv34LfTlnkZWc6V5Gvs SwfQ== X-Gm-Message-State: AOAM532DF/Yh+AFBZe1wOZcuTa0ESDW+a66tMgXzkFM6m6Bya3cBItqJ lqktdXp//jLKodpZs0naRXBpg9myyCytJahF8so= X-Google-Smtp-Source: ABdhPJxYd77i/ganESJH9u6Q39LnWFqKNrqRv+AIw77ejduNuBhTpthz6X4nRwHGYXpVAnaqohkCrCgb02MSxBnlhOU= X-Received: by 2002:aca:2b17:: with SMTP id i23mr3063425oik.87.1622057069090; Wed, 26 May 2021 12:24:29 -0700 (PDT) MIME-Version: 1.0 References: <20210525184449.57703-1-romain.perier@gmail.com> <20210525184449.57703-3-romain.perier@gmail.com> <5ce3b5a5-1500-0d95-623e-299e7b1eb43b@roeck-us.net> In-Reply-To: <5ce3b5a5-1500-0d95-623e-299e7b1eb43b@roeck-us.net> From: Romain Perier Date: Wed, 26 May 2021 21:24:16 +0200 Message-ID: Subject: Re: [PATCH 2/3] watchdog: Add Mstar MSC313e WDT driver To: Guenter Roeck Cc: Wim Van Sebroeck , Rob Herring , Daniel Palmer , Mohammed Billoo , linux-watchdog@vger.kernel.org, linux-arm-kernel , devicetree , Linux Kernel Mailing List X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210526_122431_208982_F7D280BD X-CRM114-Status: GOOD ( 45.47 ) 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-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org SGksCgoKTGUgbWFyLiAyNSBtYWkgMjAyMSDDoCAyMTo1MiwgR3VlbnRlciBSb2VjayA8bGludXhA cm9lY2stdXMubmV0PiBhIMOpY3JpdCA6Cj4KPiBPbiA1LzI1LzIxIDExOjQ0IEFNLCBSb21haW4g UGVyaWVyIHdyb3RlOgo+ID4gRnJvbTogRGFuaWVsIFBhbG1lciA8ZGFuaWVsQDB4MGYuY29tPgo+ ID4KPiA+IEl0IGFkZHMgYSBkcml2ZXIgZm9yIHRoZSBJUCBibG9jayBoYW5kbGluZyB0aGUgd2F0 Y2hkb2cgdGltZXIgZm91bmQgZm9yCj4gPiBNc3RhciBNU0MzMTNlIFNvQ3MgYW5kIG5ld2VyLgo+ ID4KPiA+IFNpZ25lZC1vZmYtYnk6IERhbmllbCBQYWxtZXIgPGRhbmllbEAweDBmLmNvbT4KPiA+ IENvLWRldmVsb3BlZC1ieTogUm9tYWluIFBlcmllciA8cm9tYWluLnBlcmllckBnbWFpbC5jb20+ Cj4gPiBTaWduZWQtb2ZmLWJ5OiBSb21haW4gUGVyaWVyIDxyb21haW4ucGVyaWVyQGdtYWlsLmNv bT4KPiA+IC0tLQo+ID4gICBNQUlOVEFJTkVSUyAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwo+ ID4gICBkcml2ZXJzL3dhdGNoZG9nL0tjb25maWcgICAgICAgfCAgMTMgKysrCj4gPiAgIGRyaXZl cnMvd2F0Y2hkb2cvTWFrZWZpbGUgICAgICB8ICAgMSArCj4gPiAgIGRyaXZlcnMvd2F0Y2hkb2cv bXNjMzEzZV93ZHQuYyB8IDE3MyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKPiA+ ICAgNCBmaWxlcyBjaGFuZ2VkLCAxODggaW5zZXJ0aW9ucygrKQo+ID4gICBjcmVhdGUgbW9kZSAx MDA2NDQgZHJpdmVycy93YXRjaGRvZy9tc2MzMTNlX3dkdC5jCj4gPgo+ID4gZGlmZiAtLWdpdCBh L01BSU5UQUlORVJTIGIvTUFJTlRBSU5FUlMKPiA+IGluZGV4IGEwZjM3YWRiOWU2NC4uZmNjMTBj NTcyOThjIDEwMDY0NAo+ID4gLS0tIGEvTUFJTlRBSU5FUlMKPiA+ICsrKyBiL01BSU5UQUlORVJT Cj4gPiBAQCAtMjE3Nyw2ICsyMTc3LDcgQEAgRjogICAgICBhcmNoL2FybS9tYWNoLW1zdGFyLwo+ ID4gICBGOiAgZHJpdmVycy9jbGsvbXN0YXIvCj4gPiAgIEY6ICBkcml2ZXJzL2dwaW8vZ3Bpby1t c2MzMTMuYwo+ID4gICBGOiAgZHJpdmVycy9waW5jdHJsL3BpbmN0cmwtbXNjMzEzLmMKPiA+ICtG OiAgIGRyaXZlcnMvd2F0Y2hkb2cvbXNjMzEzZV93ZHQuYwo+ID4gICBGOiAgaW5jbHVkZS9kdC1i aW5kaW5ncy9jbG9jay9tc3Rhci0qCj4gPiAgIEY6ICBpbmNsdWRlL2R0LWJpbmRpbmdzL2dwaW8v bXNjMzEzLWdwaW8uaAo+ID4gICBGOiAgaW5jbHVkZS9zb2MvbXN0YXIvCj4gPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy93YXRjaGRvZy9LY29uZmlnIGIvZHJpdmVycy93YXRjaGRvZy9LY29uZmlnCj4g PiBpbmRleCAzNTUxMDBkYWQ2MGEuLmY1MzYzNGVhMGRlNiAxMDA2NDQKPiA+IC0tLSBhL2RyaXZl cnMvd2F0Y2hkb2cvS2NvbmZpZwo+ID4gKysrIGIvZHJpdmVycy93YXRjaGRvZy9LY29uZmlnCj4g PiBAQCAtOTgwLDYgKzk4MCwxOSBAQCBjb25maWcgVklTQ09OVElfV0FUQ0hET0cKPiA+ICAgICAg ICAgU2F5IFkgaGVyZSB0byBpbmNsdWRlIHN1cHBvcnQgZm9yIHRoZSB3YXRjaGRvZyB0aW1lciBp biBUb3NoaWJhCj4gPiAgICAgICAgIFZpc2NvbnRpIFNvQ3MuCj4gPgo+ID4gK2NvbmZpZyBNU0Mz MTNFX1dBVENIRE9HCj4gPiArICAgICB0cmlzdGF0ZSAiTVN0YXIgTVNDMzEzZSB3YXRjaGRvZyIK PiA+ICsgICAgIGRlcGVuZHMgb24gQVJDSF9NU1RBUlY3IHx8IENPTVBJTEVfVEVTVAo+ID4gKyAg ICAgZGVwZW5kcyBvbiBPRgo+ID4gKyAgICAgc2VsZWN0IFdBVENIRE9HX0NPUkUKPiA+ICsgICAg IGhlbHAKPiA+ICsgICAgICAgU2F5IFkgaGVyZSB0byBpbmNsdWRlIHN1cHBvcnQgZm9yIHRoZSBX YXRjaGRvZyB0aW1lciBlbWJlZGRlZAo+ID4gKyAgICAgICBpbnRvIE1TdGFyIE1TQzMxM2UgY2hp cHMuIFRoaXMgd2lsbCByZWJvb3QgeW91ciBzeXN0ZW0gd2hlbiB0aGUKPiA+ICsgICAgICAgdGlt ZW91dCBpcyByZWFjaGVkLgo+ID4gKwo+ID4gKyAgICAgICBUbyBjb21waWxlIHRoaXMgZHJpdmVy IGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUKPiA+ICsgICAgICAgbW9kdWxlIHdpbGwg YmUgY2FsbGVkIG1zYzMxM2Vfd2R0Lgo+ID4gKwo+ID4gICAjIFg4NiAoaTM4NiArIGlhNjQgKyB4 ODZfNjQpIEFyY2hpdGVjdHVyZQo+ID4KPiA+ICAgY29uZmlnIEFDUVVJUkVfV0RUCj4gPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy93YXRjaGRvZy9NYWtlZmlsZSBiL2RyaXZlcnMvd2F0Y2hkb2cvTWFr ZWZpbGUKPiA+IGluZGV4IGE3ZWFkZThiNGQ0NS4uN2ZhMzkyYWUzMDAwIDEwMDY0NAo+ID4gLS0t IGEvZHJpdmVycy93YXRjaGRvZy9NYWtlZmlsZQo+ID4gKysrIGIvZHJpdmVycy93YXRjaGRvZy9N YWtlZmlsZQo+ID4gQEAgLTkyLDYgKzkyLDcgQEAgb2JqLSQoQ09ORklHX1NQUkRfV0FUQ0hET0cp ICs9IHNwcmRfd2R0Lm8KPiA+ICAgb2JqLSQoQ09ORklHX1BNODkxNl9XQVRDSERPRykgKz0gcG04 OTE2X3dkdC5vCj4gPiAgIG9iai0kKENPTkZJR19BUk1fU01DX1dBVENIRE9HKSArPSBhcm1fc21j X3dkdC5vCj4gPiAgIG9iai0kKENPTkZJR19WSVNDT05USV9XQVRDSERPRykgKz0gdmlzY29udGlf d2R0Lm8KPiA+ICtvYmotJChDT05GSUdfTVNDMzEzRV9XQVRDSERPRykgKz0gbXNjMzEzZV93ZHQu bwo+ID4KPiA+ICAgIyBYODYgKGkzODYgKyBpYTY0ICsgeDg2XzY0KSBBcmNoaXRlY3R1cmUKPiA+ ICAgb2JqLSQoQ09ORklHX0FDUVVJUkVfV0RUKSArPSBhY3F1aXJld2R0Lm8KPiA+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL3dhdGNoZG9nL21zYzMxM2Vfd2R0LmMgYi9kcml2ZXJzL3dhdGNoZG9nL21z YzMxM2Vfd2R0LmMKPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gPiBpbmRleCAwMDAwMDAwMDAw MDAuLjQzNDI1OTI1Njk2Nwo+ID4gLS0tIC9kZXYvbnVsbAo+ID4gKysrIGIvZHJpdmVycy93YXRj aGRvZy9tc2MzMTNlX3dkdC5jCj4gPiBAQCAtMCwwICsxLDE3MyBAQAo+ID4gKy8vIFNQRFgtTGlj ZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wCj4gPiArLyoKPiA+ICsgKiBNU3RhciBXRFQgZHJpdmVy Cj4gPiArICoKPiA+ICsgKiBDb3B5cmlnaHQgKEMpIDIwMTkgLSAyMDIxIERhbmllbCBQYWxtZXIK PiA+ICsgKiBDb3B5cmlnaHQgKEMpIDIwMjEgUm9tYWluIFBlcmllcgo+ID4gKyAqCj4gPiArICov Cj4gPiArCj4gPiArI2luY2x1ZGUgPGxpbnV4L3BsYXRmb3JtX2RldmljZS5oPgo+ID4gKyNpbmNs dWRlIDxsaW51eC9vZi5oPgo+ID4gKyNpbmNsdWRlIDxsaW51eC9vZl9pcnEuaD4KPiA+ICsjaW5j bHVkZSA8bGludXgvbW9kdWxlLmg+Cj4gPiArI2luY2x1ZGUgPGxpbnV4L3dhdGNoZG9nLmg+Cj4g PiArI2luY2x1ZGUgPGxpbnV4L2lvLmg+Cj4gPiArI2luY2x1ZGUgPGxpbnV4L2Nsay5oPgo+ID4g KyNpbmNsdWRlIDxsaW51eC9pbnRlcnJ1cHQuaD4KPgo+IEFscGhhYmV0aWMgb3JkZXIsIHBsZWFz ZS4KCkFjaywgSSB3aWxsIGZpeCBpdC4KCj4gQWxzbywgcGxlYXNlIGRyb3AgdW5uZWVkZWQgaW5j bHVkZSBmaWxlcy4KPiBUaGUgZHJpdmVyIGRvZXNuJ3Qgc3VwcG9ydCBpbnRlcnJ1cHRzLCBzbyBh bnkgaW50ZXJydXB0IHJlbGF0ZWQKPiBpbmNsdWRlIGZpbGUgaXMgdW5uZWNlc3NhcnkuIEkgYWxz byBkb24ndCBzZWUgYW55IGRldmljZXRyZWUgc3BlY2lmaWMKPiBjb2RlIGV4Y2VwdCBmb3Igb2Zf ZGV2aWNlX2lkLCBhbmQgdGhhdCBpcyBkZWNsYXJlZCBpbiBtb2RfZGV2aWNldGFibGUuaCwKPiBu b3QgaW4gYW4gb2ZfeHh4LmggaW5jbHVkZSBmaWxlLgoKQXJmLCBpbiBmYWN0IGFuIGludGVycnVw dCB3YXMgdXNlZCBwcmV2aW91c2x5IChpdCB0cmlnZ2VycyB3aGVuIHRoZQp3ZHQgcmVhY2hlcyBh IHNwZWNpZmljIHZhbHVlCnRoYXQgaXMgbm90IG5lY2Vzc2FyaWx5IHRoZSB2YWx1ZSBvZiB0aGUg aW5pdGlhbCB0aW1lb3V0KSwgYnV0IEkgaGF2ZQpkZWNpZGVkIHRvIHJlbW92ZSBpdCBiZWNhdXNl Cm5vdCByZWFsbHkgdXNlZnVsLiBBbmQgSSBoYXZlIGtlcHQgc29tZSBoZWFkZXJzLCBzb3JyeSBm b3IgdGhhdC4gSSB3aWxsIGZpeCBpdC4KCj4KPiA+ICsKPiA+ICsjZGVmaW5lIFJFR19XRFRfQ0xS ICAgICAgICAgICAgICAgICAgMHgwCj4gPiArI2RlZmluZSBSRUdfV0RUX01BWF9QUkRfTCAgICAg ICAgICAgIDB4MTAKPiA+ICsjZGVmaW5lIFJFR19XRFRfTUFYX1BSRF9IICAgICAgICAgICAgMHgx NAo+ID4gKwo+ID4gKyNkZWZpbmUgTVNDMzEzRV9XRFRfREVGQVVMVF9USU1FT1VUICAzMAo+ID4g Ky8qIFN1cHBvcnRzIDEgLSAzNTAgc2VjICovCj4KPiBEb2Vzbid0IHRoYXQgZGVwZW5kIG9uIHRo ZSBjbG9jayBmcmVxbmV1Y3kgPwo+IE1vcmUgb24gdGhhdCBzZWUgYmVsb3cuCj4KPiA+ICsjZGVm aW5lIE1TQzMxM0VfV0RUX01JTl9USU1FT1VUICAgICAgICAgICAgICAxCj4gPiArI2RlZmluZSBN U0MzMTNFX1dEVF9NQVhfVElNRU9VVCAgICAgICAgICAgICAgMzUwCj4gPiArCj4gPiArc3RhdGlj IHVuc2lnbmVkIGludCB0aW1lb3V0Owo+ID4gKwo+ID4gK21vZHVsZV9wYXJhbSh0aW1lb3V0LCBp bnQsIDApOwo+ID4gK01PRFVMRV9QQVJNX0RFU0ModGltZW91dCwgIldhdGNoZG9nIHRpbWVvdXQg aW4gc2Vjb25kcyIpOwo+ID4gKwo+ID4gK3N0cnVjdCBtc2MzMTNlX3dkdF9wcml2IHsKPiA+ICsg ICAgIHZvaWQgX19pb21lbSAqYmFzZTsKPiA+ICsgICAgIHN0cnVjdCBkZXZpY2UgKmRldjsKPgo+ IEkgZG9uJ3QgaW1tZWRpYXRlbHkgc2VlIHdoZXJlICdkZXYnIGlzIHVzZWQuCj4KPiA+ICsgICAg IHN0cnVjdCB3YXRjaGRvZ19kZXZpY2Ugd2RldjsKPiA+ICsgICAgIHN0cnVjdCBjbGsgKmNsazsK PiA+ICt9Owo+ID4gKwo+ID4gK3N0YXRpYyBpbnQgbXNjMzEzZV93ZHRfc3RhcnQoc3RydWN0IHdh dGNoZG9nX2RldmljZSAqd2RldikKPiA+ICt7Cj4gPiArICAgICBzdHJ1Y3QgbXNjMzEzZV93ZHRf cHJpdiAqcHJpdiA9IHdhdGNoZG9nX2dldF9kcnZkYXRhKHdkZXYpOwo+ID4gKyAgICAgdTMyIHRp bWVvdXQ7Cj4gPiArICAgICBpbnQgZXJyOwo+ID4gKwo+ID4gKyAgICAgZXJyID0gY2xrX3ByZXBh cmVfZW5hYmxlKHByaXYtPmNsayk7Cj4gPiArICAgICBpZiAoZXJyKSB7Cj4gPiArICAgICAgICAg ICAgIGRldl9lcnIocHJpdi0+ZGV2LCAiZmFpbGVkIHRvIGVuYWJsZSBjbG9ja1xuIik7Cj4KPiBB aCwgaGVyZS4gSSBhbSBub3Qgc3VyZSBpZiBJIGxpa2UgdGhhdCBlcnJvciBtZXNzYWdlIC0gaXQg aXMgZ29pbmcgdG8gYmUKPiBwZXJzaXN0ZW50IGFuZCBtYXkgY3JlYXRlIGEgbG90IG9mIG5vaXNl IGlmIGl0IGlzIGV2ZXIgc2VlbiwgYW5kIHByZXR0eSBtdWNoCj4gdXNlbGVzcyBvdGhlcndpc2Uu IEVpdGhlciBjYXNlLCBpZiB5b3UgaW5zaXN0IG9uIHRoZSBtZXNzYWdlLCBJJ2Qgc3VnZ2VzdAo+ IHRvIHVzZSB3ZGV2LT5wYXJlbnQuCgpIb25lc3RseSA/IEl0IGlzIG1vc3RseSB0byBhdm9pZCBz aWxlbnQgZXJyb3JzLCBidXQgSSBjYW4gYWxzbyByZXR1cm4KYW4gZXJyb3IgZGlyZWN0bHksIHll cCAoSSBtZWFuCmp1c3QgcmV0dXJuIHRoZSBlcnJvciBjb2RlKS4gVGhlIHVzZXJzcGFjZSBhcHAg aXMgc3VwcG9zZWQgdG8gY2hlY2sKdGhlIGVycm9yIGNvZGUgcmV0dXJuZWQgYnkgaW9jdGwuIE5v IG9iamVjdGlvbgpmb3IgcmVtb3ZpbmcgdGhlIG1lc3NhZ2UgKGFuZCBzbyBwcml2LT5kZXYgdG9v KS4KCj4KPiA+ICsgICAgICAgICAgICAgcmV0dXJuIGVycjsKPiA+ICsgICAgIH0KPiA+ICsgICAg IHRpbWVvdXQgPSB3ZGV2LT50aW1lb3V0ICogY2xrX2dldF9yYXRlKHByaXYtPmNsayk7Cj4KPiBI b3cgaXMgaXQgZ3VhcmFudGVlZCB0aGF0IHRoaXMgd29uJ3Qgb3ZlcmZsb3cgPyBUaGUgbWF4aW11 bSB0aW1lb3V0IGlzIG5vdAo+IHRpZWQgdG8gdGhlIGNsb2NrIGZyZXF1ZW5jeS4gVGhpcyB3aWxs IG92ZXJmbG93IGlmIHRoZSBjbG9jayBmcmVxdWVuY3kgaXMKPiBhYm92ZSAweGZmZmZmZmZmIC8g MzUwID0gMTIyNzEzMzUgSHogYW5kIHRoZSB0aW1lb3V0IGlzIHN1ZmZpY2llbnRseSBsYXJnZS4K PgoKQWggZ29vZCBjYXRjaCAhIE1oaGhoaCB3ZSBjb3VsZCBjb21wdXRlIG1heF90aW1lb3V0IGR5 bmFtaWNhbGx5CmZyb20gdGhlIHByb2JlIGZ1bmN0aW9uLiBTbywgd2UgYWxsb3cgIHRoZSBtYXhp bXVtIHBvc3NpYmxlIHZhbHVlIGp1c3QKYmVmb3JlIHRoZSBvdmVyZmxvdy4gVGhlIHVuaXRzIGFy ZSBkaWZmZXJlbnQgYnV0IHRoZXJlIGlzIHNvbWV0aGluZwpzaW1pbGFyIGluIG1lc29uX3dkdC5j ICAuCgpBbnl3YXksIEkgd2lsbCB0aGluayBhYm91dCBpdCBhbmQgcHJvcG9zZSBhIGZpeC4KCgpU aGFua3MsClJvbWFpbgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KbGludXgtYXJtLWtlcm5lbCBtYWlsaW5nIGxpc3QKbGludXgtYXJtLWtlcm5lbEBsaXN0 cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGlu Zm8vbGludXgtYXJtLWtlcm5lbAo=