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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 2C075C001DE for ; Thu, 10 Aug 2023 08:26:38 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231794AbjHJI0h (ORCPT ); Thu, 10 Aug 2023 04:26:37 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:53342 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229780AbjHJI0W (ORCPT ); Thu, 10 Aug 2023 04:26:22 -0400 Received: from mail-pl1-x62f.google.com (mail-pl1-x62f.google.com [IPv6:2607:f8b0:4864:20::62f]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 84DE4DC; Thu, 10 Aug 2023 01:26:21 -0700 (PDT) Received: by mail-pl1-x62f.google.com with SMTP id d9443c01a7336-1bc73a2b0easo5355955ad.0; Thu, 10 Aug 2023 01:26:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1691655981; x=1692260781; h=content-transfer-encoding:in-reply-to:from:references:cc:to :content-language:subject:user-agent:mime-version:date:message-id :from:to:cc:subject:date:message-id:reply-to; bh=YyYLtAiSPm/jR0Yq/J8XmIODN3EVvM9jc+bkni7Ghjg=; b=NcpclQmFc674BU9xqAEWd/Z9vv/QSngKSmt48UMEkeI+EUgaRrDHiYr3+PN7NFxmMI C1Z9B4OiWQL43DpFVoOEufXz5IgGx3avNFjyi7uOiQTOhhrpeNfCP1yVYX0QMLaBh/Bv gwu6T9KjIqFuolYw4GGP7ZINz3flI6rG3fFmdn/yU0IUh/ri98FDyVf1RCVaS9s7KDHe L7AIP2NwQvpG/ZIe2CUVsacr39zul3HOTo87EPFLyjenf+waoPsZo9UZ/zicR4/MrUjy R+d2H6U9NugqUvHbsQF2E1xvq10QmG7bjF/dpTaaSZ9gJcn2uWByMz0K29FxyU19Ub3A Po1g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1691655981; x=1692260781; h=content-transfer-encoding:in-reply-to:from:references:cc:to :content-language:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=YyYLtAiSPm/jR0Yq/J8XmIODN3EVvM9jc+bkni7Ghjg=; b=LIhyTSckaeN9okGuJkmpuVqlWgoXltGP/SOcX9SFHkGeZFyPs9wAAT968Z+d5DgZ+E IAZdKi6R0Yi7f/n3arvI29UNAmQ215rwVevODCszFoyD2Z6ADxP6JTm4DvrqsNadCgbD 3qdbSuiBs5YsTPENXGXJhhhnUghT9WxjIFmAErfmYnr7Nr8PatcVG7rtK6Ry2bkZyroh IlT2bFrVXglZEsb04xMms2NS2j7p4DqEkei90TDPkul03PvF0Cs4dvUm2ZBmocO6jOg2 ro8Vw2gKgcHmAf821egvXBErWUAGAlFe+6fT9wvB4Twlx55Et6uZCJBiAdeuUC8akqhr OvCg== X-Gm-Message-State: AOJu0YwSsnfiORgk5YJuDQaaKEjoBDnLzjHrizNh70NXwoGM7cnYblLs tiZQEMQ4wqoBNIDL/TVA1z8= X-Google-Smtp-Source: AGHT+IFEOBb7J2YylGCtStfggHdcYQr2dmrb4aRn5BcqslpwODeGItvSG6+rqAUioEWA5RCqAKGXVw== X-Received: by 2002:a17:902:ecc1:b0:1bb:a367:a77 with SMTP id a1-20020a170902ecc100b001bba3670a77mr1735345plh.31.1691655980854; Thu, 10 Aug 2023 01:26:20 -0700 (PDT) Received: from [172.19.1.47] (60-250-192-107.hinet-ip.hinet.net. [60.250.192.107]) by smtp.gmail.com with ESMTPSA id jc3-20020a17090325c300b001b86492d724sm1053650plb.223.2023.08.10.01.26.18 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 10 Aug 2023 01:26:20 -0700 (PDT) Message-ID: Date: Thu, 10 Aug 2023 16:26:16 +0800 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.14.0 Subject: Re: [RESEND PATCH v2 3/3] rtc: Add driver for Nuvoton ma35d1 rtc controller Content-Language: en-US To: Alexandre Belloni Cc: a.zummo@towertech.it, robh+dt@kernel.org, krzysztof.kozlowski+dt@linaro.org, conor+dt@kernel.org, linux-rtc@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, soc@kernel.org, mjchen@nuvoton.com, schung@nuvoton.com, Jacky Huang References: <20230809011542.429945-1-ychuang570808@gmail.com> <20230809011542.429945-4-ychuang570808@gmail.com> <20230809021025a7c0daec@mail.local> <426130f6-7b8a-91f9-559b-afc5afdc656e@gmail.com> <2023080922515326db190e@mail.local> <347cf148-bda8-852b-768c-fa2b57ce5bcb@gmail.com> <20230810073015d5545903@mail.local> From: Jacky Huang In-Reply-To: <20230810073015d5545903@mail.local> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-rtc@vger.kernel.org On 2023/8/10 下午 03:30, Alexandre Belloni wrote: > On 10/08/2023 15:21:47+0800, Jacky Huang wrote: >>>>>> + return 0; >>>>>> +} >>>>>> + >>>>>> +static int ma35d1_rtc_suspend(struct platform_device *pdev, pm_message_t state) >>>>>> +{ >>>>>> + struct ma35_rtc *rtc = platform_get_drvdata(pdev); >>>>>> + u32 regval; >>>>>> + >>>>>> + if (device_may_wakeup(&pdev->dev)) >>>>>> + enable_irq_wake(rtc->irq_num); >>>>>> + >>>>>> + regval = rtc_reg_read(rtc, MA35_REG_RTC_INTEN); >>>>>> + regval &= ~RTC_INTEN_TICKIEN; >>>>>> + rtc_reg_write(rtc, MA35_REG_RTC_INTEN, regval); >>>>> This is not what the user is asking, don't do this. Also, how was this >>>>> tested? >>>> Sure, I will remove these three lines of code. >>>> >>>> We test it with "echo mem > /sys/power/state". >>>> >>> Yes, my point is that if UIE is enabled, then the user wants to be woken >>> up every second. If this is not what is wanted, then UIE has to be >>> disabled before going to suspend. >>> >>> My question is why are you enabling RTC_INTEN_TICKIEN in probe? I don't >>> expect anyone to use an actual hardware tick interrupt, unless the alarm >>> is broken and can't be set every second. This is why I questioned the >>> RTC_UF path because I don't expect it to be taken at all. >> Yes, we will remove TICKIEN from probe and modify ma35d1_alarm_irq_enable(). >> TICKIEN will be enabled only if UIE is enabled. >> >> static int ma35d1_alarm_irq_enable(struct device *dev, unsigned int enabled) >> { >>     struct ma35d1_rtc *rtc = dev_get_drvdata(dev); >> >>     if (enabled) { >>         if (rtc->rtc->uie_rtctimer.enabled) >>             rtc_reg_write(rtc, NVT_RTC_INTEN, >>                       (rtc_reg_read(rtc, >> NVT_RTC_INTEN)|(RTC_INTEN_TICKIEN))); > > Don't do that unless the regular alarm can't be set every second. Simply > always use ALMIEN, then check rtctest is passing properly. OK, I got it. I will drop the TICKINT and use ALMIEN only. MA35D1 RTC has an alarm mask register which supports alarm mask for seconds, minutes, and hours. We will use the alarm mask to have RTC generate an alarm interrupt per second, and make sure the driver can pass rtctest. >>         if (rtc->rtc->aie_timer.enabled) >>             rtc_reg_write(rtc, NVT_RTC_INTEN, >>                       (rtc_reg_read(rtc, >> NVT_RTC_INTEN)|(RTC_INTEN_ALMIEN))); >>     } else { >>         if (rtc->rtc->uie_rtctimer.enabled) >>             rtc_reg_write(rtc, NVT_RTC_INTEN, >>                       (rtc_reg_read(rtc, NVT_RTC_INTEN) & >> (~RTC_INTEN_TICKIEN))); >>         if (rtc->rtc->aie_timer.enabled) >>             rtc_reg_write(rtc, NVT_RTC_INTEN, >>                       (rtc_reg_read(rtc, NVT_RTC_INTEN) & >> (~RTC_INTEN_ALMIEN))); >>     } >>     return 0; >> } >> Best Regards, Jacky Huang 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 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 smtp.lore.kernel.org (Postfix) with ESMTPS id 348C7C001DB for ; Thu, 10 Aug 2023 08:26:52 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:Content-Type: Content-Transfer-Encoding:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:In-Reply-To:From:References:Cc:To:Subject: MIME-Version:Date:Message-ID:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=3FiYBn+cU5SQW94CoVdNiKEx/cjf/d3vc3fhB3Qc3QM=; b=UBYAR3Vf+OfTqz xonBIerYAVrSOpmKxu8+Km+Vne8F840ti6xFWjMMmvm5RyW7dUQ4yABa9Miz2VxJgpL/zDjvn8n9s sA7RNorMdZVXSMafiMrQcyT3p2Y2oPJgyqcPNcu8WoijwI9QpugFZRvKxF+WZHNmRqaGqFOjYT49x 8rbVovCsew1MsuB0NNMj+UyAb67imbpFgUU1nmW30gvJVq2peV5Ab71y+HTWOcAG36iEMaCf8oq5t JDYwqV1rJQIzZ4Ng1NFDApiWc2awJwlcVIgasRHScs/4LCTZdRGShuGwpOYQFKOoN2cKdzXoTmM7q /IbYKPC0sTwr6ZlZe7HA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1qU0zy-006sFR-02; Thu, 10 Aug 2023 08:26:26 +0000 Received: from mail-pl1-x631.google.com ([2607:f8b0:4864:20::631]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1qU0zv-006sEw-09 for linux-arm-kernel@lists.infradead.org; Thu, 10 Aug 2023 08:26:24 +0000 Received: by mail-pl1-x631.google.com with SMTP id d9443c01a7336-1bb7b8390e8so5186515ad.2 for ; Thu, 10 Aug 2023 01:26:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1691655981; x=1692260781; h=content-transfer-encoding:in-reply-to:from:references:cc:to :content-language:subject:user-agent:mime-version:date:message-id :from:to:cc:subject:date:message-id:reply-to; bh=YyYLtAiSPm/jR0Yq/J8XmIODN3EVvM9jc+bkni7Ghjg=; b=NcpclQmFc674BU9xqAEWd/Z9vv/QSngKSmt48UMEkeI+EUgaRrDHiYr3+PN7NFxmMI C1Z9B4OiWQL43DpFVoOEufXz5IgGx3avNFjyi7uOiQTOhhrpeNfCP1yVYX0QMLaBh/Bv gwu6T9KjIqFuolYw4GGP7ZINz3flI6rG3fFmdn/yU0IUh/ri98FDyVf1RCVaS9s7KDHe L7AIP2NwQvpG/ZIe2CUVsacr39zul3HOTo87EPFLyjenf+waoPsZo9UZ/zicR4/MrUjy R+d2H6U9NugqUvHbsQF2E1xvq10QmG7bjF/dpTaaSZ9gJcn2uWByMz0K29FxyU19Ub3A Po1g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1691655981; x=1692260781; h=content-transfer-encoding:in-reply-to:from:references:cc:to :content-language:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=YyYLtAiSPm/jR0Yq/J8XmIODN3EVvM9jc+bkni7Ghjg=; b=Ucf+WBidiw/JP7M6aWPH2NvhBzBRTJyZUj0QIailji+NLjlfFnHmHUYYBxXkGegbBs gzLcii0MnDSByziPw3gKv1G1nKr95v1nfDwKaYqWY1ipKGnq4pz/3qUeaQ2lnkpnL7oi yhb0UQCQw6IC58Tzbxj/di6dogETRziMOc0hVL58Kk/SQADa0CjJ4T8LJxTuPg8S/4P8 YGz8NVc0A59KK0ejRY893iHn96nsdIe1hM65I3Gi3azv8JVthUzZ1Cy8pdkkNWXhbw7J DNe4GOxE98t35orXL3LIEtNSZ6CTWuLS58sdlN+QscUwAv2KHOIrcrP8gNUBN6Yu7p82 Iu+A== X-Gm-Message-State: AOJu0YxiK3tVtMSp0FRcHm2nOeuVWDFN+kdQCWgSz16l+hCexoq6EgjL R7fSHB1kLn34xqSp+2CqqO8= X-Google-Smtp-Source: AGHT+IFEOBb7J2YylGCtStfggHdcYQr2dmrb4aRn5BcqslpwODeGItvSG6+rqAUioEWA5RCqAKGXVw== X-Received: by 2002:a17:902:ecc1:b0:1bb:a367:a77 with SMTP id a1-20020a170902ecc100b001bba3670a77mr1735345plh.31.1691655980854; Thu, 10 Aug 2023 01:26:20 -0700 (PDT) Received: from [172.19.1.47] (60-250-192-107.hinet-ip.hinet.net. [60.250.192.107]) by smtp.gmail.com with ESMTPSA id jc3-20020a17090325c300b001b86492d724sm1053650plb.223.2023.08.10.01.26.18 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 10 Aug 2023 01:26:20 -0700 (PDT) Message-ID: Date: Thu, 10 Aug 2023 16:26:16 +0800 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.14.0 Subject: Re: [RESEND PATCH v2 3/3] rtc: Add driver for Nuvoton ma35d1 rtc controller Content-Language: en-US To: Alexandre Belloni Cc: a.zummo@towertech.it, robh+dt@kernel.org, krzysztof.kozlowski+dt@linaro.org, conor+dt@kernel.org, linux-rtc@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, soc@kernel.org, mjchen@nuvoton.com, schung@nuvoton.com, Jacky Huang References: <20230809011542.429945-1-ychuang570808@gmail.com> <20230809011542.429945-4-ychuang570808@gmail.com> <20230809021025a7c0daec@mail.local> <426130f6-7b8a-91f9-559b-afc5afdc656e@gmail.com> <2023080922515326db190e@mail.local> <347cf148-bda8-852b-768c-fa2b57ce5bcb@gmail.com> <20230810073015d5545903@mail.local> From: Jacky Huang In-Reply-To: <20230810073015d5545903@mail.local> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230810_012623_109569_A16CC855 X-CRM114-Status: GOOD ( 14.91 ) 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: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org CgpPbiAyMDIzLzgvMTAg5LiL5Y2IIDAzOjMwLCBBbGV4YW5kcmUgQmVsbG9uaSB3cm90ZToKPiBP biAxMC8wOC8yMDIzIDE1OjIxOjQ3KzA4MDAsIEphY2t5IEh1YW5nIHdyb3RlOgo+Pj4+Pj4gKwly ZXR1cm4gMDsKPj4+Pj4+ICt9Cj4+Pj4+PiArCj4+Pj4+PiArc3RhdGljIGludCBtYTM1ZDFfcnRj X3N1c3BlbmQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiwgcG1fbWVzc2FnZV90IHN0YXRl KQo+Pj4+Pj4gK3sKPj4+Pj4+ICsJc3RydWN0IG1hMzVfcnRjICpydGMgPSBwbGF0Zm9ybV9nZXRf ZHJ2ZGF0YShwZGV2KTsKPj4+Pj4+ICsJdTMyIHJlZ3ZhbDsKPj4+Pj4+ICsKPj4+Pj4+ICsJaWYg KGRldmljZV9tYXlfd2FrZXVwKCZwZGV2LT5kZXYpKQo+Pj4+Pj4gKwkJZW5hYmxlX2lycV93YWtl KHJ0Yy0+aXJxX251bSk7Cj4+Pj4+PiArCj4+Pj4+PiArCXJlZ3ZhbCA9IHJ0Y19yZWdfcmVhZChy dGMsIE1BMzVfUkVHX1JUQ19JTlRFTik7Cj4+Pj4+PiArCXJlZ3ZhbCAmPSB+UlRDX0lOVEVOX1RJ Q0tJRU47Cj4+Pj4+PiArCXJ0Y19yZWdfd3JpdGUocnRjLCBNQTM1X1JFR19SVENfSU5URU4sIHJl Z3ZhbCk7Cj4+Pj4+IFRoaXMgaXMgbm90IHdoYXQgdGhlIHVzZXIgaXMgYXNraW5nLCBkb24ndCBk byB0aGlzLiBBbHNvLCBob3cgd2FzIHRoaXMKPj4+Pj4gdGVzdGVkPwo+Pj4+IFN1cmUsIEkgd2ls bCByZW1vdmUgdGhlc2UgdGhyZWUgbGluZXMgb2YgY29kZS4KPj4+Pgo+Pj4+IFdlIHRlc3QgaXQg d2l0aCAiZWNobyBtZW0gPiAvc3lzL3Bvd2VyL3N0YXRlIi4KPj4+Pgo+Pj4gWWVzLCBteSBwb2lu dCBpcyB0aGF0IGlmIFVJRSBpcyBlbmFibGVkLCB0aGVuIHRoZSB1c2VyIHdhbnRzIHRvIGJlIHdv a2VuCj4+PiB1cCBldmVyeSBzZWNvbmQuIElmIHRoaXMgaXMgbm90IHdoYXQgaXMgd2FudGVkLCB0 aGVuIFVJRSBoYXMgdG8gYmUKPj4+IGRpc2FibGVkIGJlZm9yZSBnb2luZyB0byBzdXNwZW5kLgo+ Pj4KPj4+IE15IHF1ZXN0aW9uIGlzIHdoeSBhcmUgeW91IGVuYWJsaW5nIFJUQ19JTlRFTl9USUNL SUVOIGluIHByb2JlPyBJIGRvbid0Cj4+PiBleHBlY3QgYW55b25lIHRvIHVzZSBhbiBhY3R1YWwg aGFyZHdhcmUgdGljayBpbnRlcnJ1cHQsIHVubGVzcyB0aGUgYWxhcm0KPj4+IGlzIGJyb2tlbiBh bmQgY2FuJ3QgYmUgc2V0IGV2ZXJ5IHNlY29uZC4gVGhpcyBpcyB3aHkgSSBxdWVzdGlvbmVkIHRo ZQo+Pj4gUlRDX1VGIHBhdGggYmVjYXVzZSBJIGRvbid0IGV4cGVjdCBpdCB0byBiZSB0YWtlbiBh dCBhbGwuCj4+IFllcywgd2Ugd2lsbCByZW1vdmUgVElDS0lFTiBmcm9tIHByb2JlIGFuZCBtb2Rp ZnkgbWEzNWQxX2FsYXJtX2lycV9lbmFibGUoKS4KPj4gVElDS0lFTiB3aWxsIGJlIGVuYWJsZWQg b25seSBpZiBVSUUgaXMgZW5hYmxlZC4KPj4KPj4gc3RhdGljIGludCBtYTM1ZDFfYWxhcm1faXJx X2VuYWJsZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCBlbmFibGVkKQo+PiB7Cj4+ ICDCoMKgIMKgc3RydWN0IG1hMzVkMV9ydGMgKnJ0YyA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOwo+ Pgo+PiAgwqDCoCDCoGlmIChlbmFibGVkKSB7Cj4+ICDCoMKgIMKgwqDCoMKgIGlmIChydGMtPnJ0 Yy0+dWllX3J0Y3RpbWVyLmVuYWJsZWQpCj4+ICDCoMKgIMKgwqDCoMKgIMKgwqDCoCBydGNfcmVn X3dyaXRlKHJ0YywgTlZUX1JUQ19JTlRFTiwKPj4gIMKgwqAgwqDCoMKgwqAgwqDCoMKgIMKgwqDC oCDCoMKgwqDCoMKgIChydGNfcmVnX3JlYWQocnRjLAo+PiBOVlRfUlRDX0lOVEVOKXwoUlRDX0lO VEVOX1RJQ0tJRU4pKSk7Cj4KPiBEb24ndCBkbyB0aGF0IHVubGVzcyB0aGUgcmVndWxhciBhbGFy bSBjYW4ndCBiZSBzZXQgZXZlcnkgc2Vjb25kLiBTaW1wbHkKPiBhbHdheXMgdXNlIEFMTUlFTiwg dGhlbiBjaGVjayBydGN0ZXN0IGlzIHBhc3NpbmcgcHJvcGVybHkuCgpPSywgSSBnb3QgaXQuIEkg d2lsbCBkcm9wIHRoZSBUSUNLSU5UIGFuZCB1c2UgQUxNSUVOIG9ubHkuCgpNQTM1RDEgUlRDIGhh cyBhbiBhbGFybSBtYXNrIHJlZ2lzdGVyIHdoaWNoIHN1cHBvcnRzIGFsYXJtIG1hc2sgZm9yIApz ZWNvbmRzLCBtaW51dGVzLCBhbmQgaG91cnMuCldlIHdpbGwgdXNlIHRoZSBhbGFybSBtYXNrIHRv IGhhdmUgUlRDIGdlbmVyYXRlIGFuIGFsYXJtIGludGVycnVwdCBwZXIgCnNlY29uZCwgYW5kIG1h a2Ugc3VyZQp0aGUgZHJpdmVyIGNhbiBwYXNzIHJ0Y3Rlc3QuCgo+PiAgwqDCoCDCoMKgwqDCoCBp ZiAocnRjLT5ydGMtPmFpZV90aW1lci5lbmFibGVkKQo+PiAgwqDCoCDCoMKgwqDCoCDCoMKgwqAg cnRjX3JlZ193cml0ZShydGMsIE5WVF9SVENfSU5URU4sCj4+ICDCoMKgIMKgwqDCoMKgIMKgwqDC oCDCoMKgwqAgwqDCoMKgwqDCoCAocnRjX3JlZ19yZWFkKHJ0YywKPj4gTlZUX1JUQ19JTlRFTil8 KFJUQ19JTlRFTl9BTE1JRU4pKSk7Cj4+ICDCoMKgIMKgfSBlbHNlIHsKPj4gIMKgwqAgwqDCoMKg wqAgaWYgKHJ0Yy0+cnRjLT51aWVfcnRjdGltZXIuZW5hYmxlZCkKPj4gIMKgwqAgwqDCoMKgwqAg wqDCoMKgIHJ0Y19yZWdfd3JpdGUocnRjLCBOVlRfUlRDX0lOVEVOLAo+PiAgwqDCoCDCoMKgwqDC oCDCoMKgwqAgwqDCoMKgIMKgwqDCoMKgwqAgKHJ0Y19yZWdfcmVhZChydGMsIE5WVF9SVENfSU5U RU4pICYKPj4gKH5SVENfSU5URU5fVElDS0lFTikpKTsKPj4gIMKgwqAgwqDCoMKgwqAgaWYgKHJ0 Yy0+cnRjLT5haWVfdGltZXIuZW5hYmxlZCkKPj4gIMKgwqAgwqDCoMKgwqAgwqDCoMKgIHJ0Y19y ZWdfd3JpdGUocnRjLCBOVlRfUlRDX0lOVEVOLAo+PiAgwqDCoCDCoMKgwqDCoCDCoMKgwqAgwqDC oMKgIMKgwqDCoMKgwqAgKHJ0Y19yZWdfcmVhZChydGMsIE5WVF9SVENfSU5URU4pICYKPj4gKH5S VENfSU5URU5fQUxNSUVOKSkpOwo+PiAgwqDCoCDCoH0KPj4gIMKgwqAgwqByZXR1cm4gMDsKPj4g fQo+PgoKCkJlc3QgUmVnYXJkcywKSmFja3kgSHVhbmcKCgpfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1hcm0ta2VybmVsIG1haWxpbmcgbGlzdAps aW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVh ZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1hcm0ta2VybmVsCg==