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=-2.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=no 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 A1122C432BE for ; Thu, 19 Aug 2021 16:55:38 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 87805610A6 for ; Thu, 19 Aug 2021 16:55:38 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230365AbhHSQ4N (ORCPT ); Thu, 19 Aug 2021 12:56:13 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:49892 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229465AbhHSQ4M (ORCPT ); Thu, 19 Aug 2021 12:56:12 -0400 Received: from mail-vs1-xe2d.google.com (mail-vs1-xe2d.google.com [IPv6:2607:f8b0:4864:20::e2d]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 1A033C061575; Thu, 19 Aug 2021 09:55:36 -0700 (PDT) Received: by mail-vs1-xe2d.google.com with SMTP id j186so4412417vsc.10; Thu, 19 Aug 2021 09:55:36 -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=sH8eWequPHDWgDssOzyKI1BjAJXBRn3U8UTRbb2OxeA=; b=isIMmXKXhlbg9KCfgacH/IeQnaRJHDNTP8PwE7sAxFrwQQiL+x8bcsJQfZpYSwAHCX /iKpfW5xkVPhDJ3cSkSHdTOAKPZDfaYDRvoC4D7kbQM4uplQxBYzWWr4tL2gksFOtHKc nHCyz6wJbc6Ftf88HqQt6ZQqjlqyELHKsDwI1+QHJSvy+BLcaF0YlgjyPZVGYwHPTJqV t16DJstAMrBvpr1CSLvObzAe1thRMcC20HyXAPnP0tATuOKyPfJwp6IeswZKnBAgji52 w28OTwIyGulUIIm68m0l2YVwJpxKfjeTyS7A9rrnejKmt8pr5H6GDcG6FOahzt+Phgco yfVA== 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=sH8eWequPHDWgDssOzyKI1BjAJXBRn3U8UTRbb2OxeA=; b=B/mbSJxpb2cmOIApLiEEW7BzZNZh4nv5wqauKStBREkV+oy9sujrZWTuoGONA4CyoM +OBmuik1xiyOM/ILhxDANxPqb2ldTfeEOaKPVqdEIOye7V4Yy4ywGjb8xMHEbOOwaF7i hO4wW8YPyTjq6z7TVd7UDyXff+5QjwDOKZrtq5pWHs8iXaPNHDUyRjjJg4iZ6nUGG4j6 rTC6+ZEQjmQ0HK9Pu+WP0C5v45VA1tPntU/V2nLfQkrdPmF3qN9tJ0ltj+hvFgjt9S1u SoWRIJ0u26KKW4OSGWEDn3Vb2pskSrNZdo8HZgaf9//J2eKfSygOUT8kh0W3qOqRKQ8r CBFQ== X-Gm-Message-State: AOAM533a5Qc1WtOlLv/GmNFzEauAmgqh49n1O3UKbD4ijT58Ep4bwBXG KOGfnazGZ2mZZVN58V1RX/J3AHoam9Z6kus66Ek= X-Google-Smtp-Source: ABdhPJxbJWiDarEkH1g0STsXWOZfjOOH2SuXX0PhD8lcQpwI3W2zoiPJvcDBXD9KnylYa93O21UL63bSv/uU7Dph0W8= X-Received: by 2002:a05:6102:3181:: with SMTP id c1mr13191231vsh.45.1629392135269; Thu, 19 Aug 2021 09:55:35 -0700 (PDT) MIME-Version: 1.0 References: <20210801160921.233081-1-romain.perier@gmail.com> <20210801160921.233081-3-romain.perier@gmail.com> In-Reply-To: From: Romain Perier Date: Thu, 19 Aug 2021 18:55:22 +0200 Message-ID: Subject: Re: [PATCH v2 2/3] rtc: Add support for the MSTAR MSC313 RTC To: Alexandre Belloni Cc: Alessandro Zummo , Daniel Palmer , Rob Herring , linux-rtc@vger.kernel.org, devicetree , Linux Kernel Mailing List , linux-arm-kernel Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hello, Le ven. 6 ao=C3=BBt 2021 =C3=A0 21:38, Alexandre Belloni a =C3=A9crit : > > Hello, > > On 01/08/2021 18:09:20+0200, Romain Perier wrote: > > +static int msc313_rtc_probe(struct platform_device *pdev) > > +{ > > + struct device *dev =3D &pdev->dev; > > + struct msc313_rtc *priv; > > + int ret; > > + int irq; > > + unsigned long rate; > > + u16 reg; > > + > > + priv =3D devm_kzalloc(&pdev->dev, sizeof(struct msc313_rtc), GFP_= KERNEL); > > + if (!priv) > > + return -ENOMEM; > > + > > + priv->rtc_base =3D devm_platform_ioremap_resource(pdev, 0); > > + if (IS_ERR(priv->rtc_base)) > > + return PTR_ERR(priv->rtc_base); > > + > > + irq =3D platform_get_irq(pdev, 0); > > + if (irq < 0) > > + return -EINVAL; > > + > > + priv->rtc_dev =3D devm_rtc_allocate_device(dev); > > + if (IS_ERR(priv->rtc_dev)) > > + return PTR_ERR(priv->rtc_dev); > > + > > + priv->rtc_dev->ops =3D &msc313_rtc_ops; > > + priv->rtc_dev->range_min =3D RTC_TIMESTAMP_BEGIN_0000; > > I'm pretty sure this doesn't fit in this RTC registers, you should > probably leave range_min to 0 (i.e. not set it at all). ack > > > + priv->rtc_dev->range_max =3D U32_MAX - 1; /* 2106-02-07 06:28:14 = */ > > I guess this one should be U32_MAX ack > > + > > + ret =3D devm_request_irq(dev, irq, msc313_rtc_interrupt, IRQF_SHA= RED, > > + dev_name(&pdev->dev), &pdev->dev); > > + if (ret) { > > + dev_err(dev, "Could not request IRQ\n"); > > + return ret; > > + } > > + > > + priv->clk =3D devm_clk_get(dev, NULL); > > + if (IS_ERR(priv->clk)) { > > + dev_err(dev, "No input reference clock\n"); > > + return PTR_ERR(priv->clk); > > + } > > + > > + ret =3D clk_prepare_enable(priv->clk); > > + if (ret) { > > + dev_err(dev, "Failed to enable the reference clock, %d\n"= , ret); > > + return ret; > > + } > > + > > + ret =3D devm_add_action_or_reset(dev, (void (*) (void *))clk_disa= ble_unprepare, priv->clk); > > + if (ret) > > + return ret; > > + > > + rate =3D clk_get_rate(priv->clk); > > + writew(rate & 0xFFFF, priv->rtc_base + REG_RTC_FREQ_CW_L); > > + writew((rate >> 16) & 0xFFFF, priv->rtc_base + REG_RTC_FREQ_CW_H)= ; > > + > > + reg =3D readw(priv->rtc_base + REG_RTC_CTRL); > > + reg |=3D CNT_EN_BIT; > > + writew(reg, priv->rtc_base + REG_RTC_CTRL); > > + > > If on POR, CNT_EN_BIT is not set, then it would be nice to use that to > know whether the RTC is properly set. You can then check CNT_EN_BIT in > .read_time and return -EINVAL if it is not set. Then you can set the bit > in .set_time. It is anyway useless to let the RTC running if it is not > set. Yeah, this is to be sure that the RTC is alive with a valid value (which makes sense). Ok I will fix everything in v3, then. 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=-0.7 required=3.0 tests=BAYES_00,DKIM_ADSP_CUSTOM_MED, DKIM_SIGNED,DKIM_VALID,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=no 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 C744FC4338F for ; Thu, 19 Aug 2021 16:57:46 +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 8F26560FE6 for ; Thu, 19 Aug 2021 16:57:46 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org 8F26560FE6 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=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=b/gqyxatkRZ0ajERKlx7YLEmxb5P2HqB+fH/UV60X9M=; b=tx/S06WEdXimpM wtN7H9ktUyOpYpXg7e+zNuXwDR/rY5QvOwoz7TgLB3Abgw9DMIC6YkF36vShdOr8yrhlMJFYpG8KU LQq4CzYmHwOjuUvdnTWaP/yl5bEAxDB9VT76InKNqjZMRxQGq0kubVeaal2FTmnTQZAHmW3wiqad3 94XOoE4XO9bOgv29rKpMEdxWjZLNQ0V8+SHez5h8gBJvgxN+a2kIpSTu+61L5QGHkyQukxxPMhU2D eOpRypr+gmePLkMWqycnAhqqbAGNcdNm72oAb+2RYvqci77N7CoP0AxV0c7uuw/QYFK7EdFL6wKpD 9XKfDDzPphvtGRdA78qQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1mGlKR-0090GE-NS; Thu, 19 Aug 2021 16:55:43 +0000 Received: from mail-vs1-xe32.google.com ([2607:f8b0:4864:20::e32]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1mGlKN-0090EM-2J for linux-arm-kernel@lists.infradead.org; Thu, 19 Aug 2021 16:55:40 +0000 Received: by mail-vs1-xe32.google.com with SMTP id e9so4429028vst.6 for ; Thu, 19 Aug 2021 09:55:35 -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=sH8eWequPHDWgDssOzyKI1BjAJXBRn3U8UTRbb2OxeA=; b=isIMmXKXhlbg9KCfgacH/IeQnaRJHDNTP8PwE7sAxFrwQQiL+x8bcsJQfZpYSwAHCX /iKpfW5xkVPhDJ3cSkSHdTOAKPZDfaYDRvoC4D7kbQM4uplQxBYzWWr4tL2gksFOtHKc nHCyz6wJbc6Ftf88HqQt6ZQqjlqyELHKsDwI1+QHJSvy+BLcaF0YlgjyPZVGYwHPTJqV t16DJstAMrBvpr1CSLvObzAe1thRMcC20HyXAPnP0tATuOKyPfJwp6IeswZKnBAgji52 w28OTwIyGulUIIm68m0l2YVwJpxKfjeTyS7A9rrnejKmt8pr5H6GDcG6FOahzt+Phgco yfVA== 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=sH8eWequPHDWgDssOzyKI1BjAJXBRn3U8UTRbb2OxeA=; b=KDQiQJq4GtMtLDMxO0Ng/bWkdmoSScCFI0AccBRkBIM2sVRljShNcA506EqO9B/Q4o xiOEdoaBq2DtDm8c7Bx4b39W6TFCoqkbcMk3IG/+DkXDZJGfaSQLSN5QNxT6NPFATfXu 1tii3StEdzTWhHCH7CJrFnghoklBHrGnB6kX5vzsc1jG9MXSt/SdYzu5S226eYLYmrEc 3yoBIUxh3qtUyMh7yxUqfm6n9SSe+ja6qppM9n+zszZOsjcWOHj0mwHf6hdT+Kw/cidx 2x5FewbBGW0JyL/C8t9x4ERS7xwe3/v4TsvSXlyWYcsbjLrwr3XxomHtZwRo9+yNOcNt JjUQ== X-Gm-Message-State: AOAM532VBZqxmsEfjVZkvopfo+j4qOEVEAtpVZkfmhsmj+GTIBZpfBGQ FriyZQ1IKW1Afnc7TNGfDzzgfpFLwU2cJQLZhB4= X-Google-Smtp-Source: ABdhPJxbJWiDarEkH1g0STsXWOZfjOOH2SuXX0PhD8lcQpwI3W2zoiPJvcDBXD9KnylYa93O21UL63bSv/uU7Dph0W8= X-Received: by 2002:a05:6102:3181:: with SMTP id c1mr13191231vsh.45.1629392135269; Thu, 19 Aug 2021 09:55:35 -0700 (PDT) MIME-Version: 1.0 References: <20210801160921.233081-1-romain.perier@gmail.com> <20210801160921.233081-3-romain.perier@gmail.com> In-Reply-To: From: Romain Perier Date: Thu, 19 Aug 2021 18:55:22 +0200 Message-ID: Subject: Re: [PATCH v2 2/3] rtc: Add support for the MSTAR MSC313 RTC To: Alexandre Belloni Cc: Alessandro Zummo , Daniel Palmer , Rob Herring , linux-rtc@vger.kernel.org, devicetree , Linux Kernel Mailing List , linux-arm-kernel X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210819_095539_162231_D0ABFED7 X-CRM114-Status: GOOD ( 25.11 ) 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 SGVsbG8sCgpMZSB2ZW4uIDYgYW/Du3QgMjAyMSDDoCAyMTozOCwgQWxleGFuZHJlIEJlbGxvbmkK PGFsZXhhbmRyZS5iZWxsb25pQGJvb3RsaW4uY29tPiBhIMOpY3JpdCA6Cj4KPiBIZWxsbywKPgo+ IE9uIDAxLzA4LzIwMjEgMTg6MDk6MjArMDIwMCwgUm9tYWluIFBlcmllciB3cm90ZToKPiA+ICtz dGF0aWMgaW50IG1zYzMxM19ydGNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikK PiA+ICt7Cj4gPiArICAgICBzdHJ1Y3QgZGV2aWNlICpkZXYgPSAmcGRldi0+ZGV2Owo+ID4gKyAg ICAgc3RydWN0IG1zYzMxM19ydGMgKnByaXY7Cj4gPiArICAgICBpbnQgcmV0Owo+ID4gKyAgICAg aW50IGlycTsKPiA+ICsgICAgIHVuc2lnbmVkIGxvbmcgcmF0ZTsKPiA+ICsgICAgIHUxNiByZWc7 Cj4gPiArCj4gPiArICAgICBwcml2ID0gZGV2bV9remFsbG9jKCZwZGV2LT5kZXYsIHNpemVvZihz dHJ1Y3QgbXNjMzEzX3J0YyksIEdGUF9LRVJORUwpOwo+ID4gKyAgICAgaWYgKCFwcml2KQo+ID4g KyAgICAgICAgICAgICByZXR1cm4gLUVOT01FTTsKPiA+ICsKPiA+ICsgICAgIHByaXYtPnJ0Y19i YXNlID0gZGV2bV9wbGF0Zm9ybV9pb3JlbWFwX3Jlc291cmNlKHBkZXYsIDApOwo+ID4gKyAgICAg aWYgKElTX0VSUihwcml2LT5ydGNfYmFzZSkpCj4gPiArICAgICAgICAgICAgIHJldHVybiBQVFJf RVJSKHByaXYtPnJ0Y19iYXNlKTsKPiA+ICsKPiA+ICsgICAgIGlycSA9IHBsYXRmb3JtX2dldF9p cnEocGRldiwgMCk7Cj4gPiArICAgICBpZiAoaXJxIDwgMCkKPiA+ICsgICAgICAgICAgICAgcmV0 dXJuIC1FSU5WQUw7Cj4gPiArCj4gPiArICAgICBwcml2LT5ydGNfZGV2ID0gZGV2bV9ydGNfYWxs b2NhdGVfZGV2aWNlKGRldik7Cj4gPiArICAgICBpZiAoSVNfRVJSKHByaXYtPnJ0Y19kZXYpKQo+ ID4gKyAgICAgICAgICAgICByZXR1cm4gUFRSX0VSUihwcml2LT5ydGNfZGV2KTsKPiA+ICsKPiA+ ICsgICAgIHByaXYtPnJ0Y19kZXYtPm9wcyA9ICZtc2MzMTNfcnRjX29wczsKPiA+ICsgICAgIHBy aXYtPnJ0Y19kZXYtPnJhbmdlX21pbiA9IFJUQ19USU1FU1RBTVBfQkVHSU5fMDAwMDsKPgo+IEkn bSBwcmV0dHkgc3VyZSB0aGlzIGRvZXNuJ3QgZml0IGluIHRoaXMgUlRDIHJlZ2lzdGVycywgeW91 IHNob3VsZAo+IHByb2JhYmx5IGxlYXZlIHJhbmdlX21pbiB0byAwIChpLmUuIG5vdCBzZXQgaXQg YXQgYWxsKS4KCmFjawoKPgo+ID4gKyAgICAgcHJpdi0+cnRjX2Rldi0+cmFuZ2VfbWF4ID0gVTMy X01BWCAtIDE7IC8qIDIxMDYtMDItMDcgMDY6Mjg6MTQgKi8KPgo+IEkgZ3Vlc3MgdGhpcyBvbmUg c2hvdWxkIGJlIFUzMl9NQVgKCmFjawoKPiA+ICsKPiA+ICsgICAgIHJldCA9IGRldm1fcmVxdWVz dF9pcnEoZGV2LCBpcnEsIG1zYzMxM19ydGNfaW50ZXJydXB0LCBJUlFGX1NIQVJFRCwKPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2X25hbWUoJnBkZXYtPmRldiksICZwZGV2LT5k ZXYpOwo+ID4gKyAgICAgaWYgKHJldCkgewo+ID4gKyAgICAgICAgICAgICBkZXZfZXJyKGRldiwg IkNvdWxkIG5vdCByZXF1ZXN0IElSUVxuIik7Cj4gPiArICAgICAgICAgICAgIHJldHVybiByZXQ7 Cj4gPiArICAgICB9Cj4gPiArCj4gPiArICAgICBwcml2LT5jbGsgPSBkZXZtX2Nsa19nZXQoZGV2 LCBOVUxMKTsKPiA+ICsgICAgIGlmIChJU19FUlIocHJpdi0+Y2xrKSkgewo+ID4gKyAgICAgICAg ICAgICBkZXZfZXJyKGRldiwgIk5vIGlucHV0IHJlZmVyZW5jZSBjbG9ja1xuIik7Cj4gPiArICAg ICAgICAgICAgIHJldHVybiBQVFJfRVJSKHByaXYtPmNsayk7Cj4gPiArICAgICB9Cj4gPiArCj4g PiArICAgICByZXQgPSBjbGtfcHJlcGFyZV9lbmFibGUocHJpdi0+Y2xrKTsKPiA+ICsgICAgIGlm IChyZXQpIHsKPiA+ICsgICAgICAgICAgICAgZGV2X2VycihkZXYsICJGYWlsZWQgdG8gZW5hYmxl IHRoZSByZWZlcmVuY2UgY2xvY2ssICVkXG4iLCByZXQpOwo+ID4gKyAgICAgICAgICAgICByZXR1 cm4gcmV0Owo+ID4gKyAgICAgfQo+ID4gKwo+ID4gKyAgICAgcmV0ID0gZGV2bV9hZGRfYWN0aW9u X29yX3Jlc2V0KGRldiwgKHZvaWQgKCopICh2b2lkICopKWNsa19kaXNhYmxlX3VucHJlcGFyZSwg cHJpdi0+Y2xrKTsKPiA+ICsgICAgIGlmIChyZXQpCj4gPiArICAgICAgICAgICAgIHJldHVybiBy ZXQ7Cj4gPiArCj4gPiArICAgICByYXRlID0gY2xrX2dldF9yYXRlKHByaXYtPmNsayk7Cj4gPiAr ICAgICB3cml0ZXcocmF0ZSAmIDB4RkZGRiwgcHJpdi0+cnRjX2Jhc2UgKyBSRUdfUlRDX0ZSRVFf Q1dfTCk7Cj4gPiArICAgICB3cml0ZXcoKHJhdGUgPj4gMTYpICYgMHhGRkZGLCBwcml2LT5ydGNf YmFzZSArIFJFR19SVENfRlJFUV9DV19IKTsKPiA+ICsKPiA+ICsgICAgIHJlZyA9IHJlYWR3KHBy aXYtPnJ0Y19iYXNlICsgUkVHX1JUQ19DVFJMKTsKPiA+ICsgICAgIHJlZyB8PSBDTlRfRU5fQklU Owo+ID4gKyAgICAgd3JpdGV3KHJlZywgcHJpdi0+cnRjX2Jhc2UgKyBSRUdfUlRDX0NUUkwpOwo+ ID4gKwo+Cj4gSWYgb24gUE9SLCBDTlRfRU5fQklUIGlzIG5vdCBzZXQsIHRoZW4gaXQgd291bGQg YmUgbmljZSB0byB1c2UgdGhhdCB0bwo+IGtub3cgd2hldGhlciB0aGUgUlRDIGlzIHByb3Blcmx5 IHNldC4gWW91IGNhbiB0aGVuIGNoZWNrIENOVF9FTl9CSVQgaW4KPiAucmVhZF90aW1lIGFuZCBy ZXR1cm4gLUVJTlZBTCBpZiBpdCBpcyBub3Qgc2V0LiBUaGVuIHlvdSBjYW4gc2V0IHRoZSBiaXQK PiBpbiAuc2V0X3RpbWUuIEl0IGlzIGFueXdheSB1c2VsZXNzIHRvIGxldCB0aGUgUlRDIHJ1bm5p bmcgaWYgaXQgaXMgbm90Cj4gc2V0LgoKWWVhaCwgdGhpcyBpcyB0byBiZSBzdXJlIHRoYXQgdGhl IFJUQyBpcyBhbGl2ZSB3aXRoIGEgdmFsaWQgdmFsdWUKKHdoaWNoIG1ha2VzIHNlbnNlKS4KT2sg SSB3aWxsIGZpeCBldmVyeXRoaW5nIGluIHYzLCB0aGVuLgoKUm9tYWluCgpfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1hcm0ta2VybmVsIG1haWxp bmcgbGlzdApsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3Rz LmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1hcm0ta2VybmVsCg==