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 84F31C433EF for ; Tue, 30 Nov 2021 14:39:08 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S242278AbhK3Om0 (ORCPT ); Tue, 30 Nov 2021 09:42:26 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57712 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236345AbhK3OmZ (ORCPT ); Tue, 30 Nov 2021 09:42:25 -0500 Received: from mail-wm1-x333.google.com (mail-wm1-x333.google.com [IPv6:2a00:1450:4864:20::333]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 50A6EC061746 for ; Tue, 30 Nov 2021 06:39:06 -0800 (PST) Received: by mail-wm1-x333.google.com with SMTP id 77-20020a1c0450000000b0033123de3425so19760585wme.0 for ; Tue, 30 Nov 2021 06:39:06 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=subject:to:cc:references:from:message-id:date:user-agent :mime-version:in-reply-to:content-language:content-transfer-encoding; bh=2bmfZ8/yojigYMGWoM6Ilhlpc1qceboy4zfRftSi5oE=; b=LelNjI21+uPTpwJ76SNMdaV3DjtJsBx8dnjf0VwM+0LmcN1y5BCEDw7nCes7XUOh+z yTrad4N4KdCVh/LnluKSRW8e/vcF4dArQZv+RNbruDy1uHiBV4OJKaFUXgVND4uubtB0 8eot2gMSqo2kjJct9du0xxt+A6Aj71b0sjIlQKrt32wHieUro8uqKCvHPqRUk9+qtSOq 2Dljh1tnUsYvjb1Je36fa5D1T/ltcG2WfTi1otHsxmRkOB4p/SKc0fYI1+3fW/WOfwG7 LuH2epm7K+gLsltmVwc5N1MUQYA81PLO5Owp+vVfaZQqhMJargSvH35WC3RRJGtrr2KU Iwiw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:subject:to:cc:references:from:message-id:date :user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=2bmfZ8/yojigYMGWoM6Ilhlpc1qceboy4zfRftSi5oE=; b=W4DxZaOTUhtHKBTEUQEfZp29zuAsV2rkTwpSdI+wr6iUW7GDb98JDOtkDqUCd5nlTS dwOUb02t9MH+a6l7vOgNnAI6tE01Jrr009rxm9rJR7pSk/WEGHUdfV+Kb9if9ZDnN+/j 3x1lPyIbmigbqrfiLjfdVOVvK6GEENuU0vk+07etyo7GxqSUS5L+qIK1hAiwt3ivbQeP C23gW0WYHAVT4M53Ro9A3uO+v2Grrxv3WPuUf+lxbb3368FgJ1oAuQRDmVQJhPyYuuAl MSaVDVYDkq/0rxJGe7J4inXqBLbAJlmZAlfEy1pVw9bL52ZaD7PGp97I6vL6afTd5BFd pkAA== X-Gm-Message-State: AOAM531Isd5BDE9TuXt9Rd33TeJ2rleY5/G5NsLsTMuOjyWsNWvUGwCv BaalABwIt12VSsQnOf9nkLr2rzpJbpEXlg== X-Google-Smtp-Source: ABdhPJxZ5sFmuSWzUiRoOR58P5Y8QszFbL7xBmWKGG3s4ojQayuw4RebmZPdbWjTK045kEQSGPY6bQ== X-Received: by 2002:a05:600c:4f87:: with SMTP id n7mr5508835wmq.63.1638283144644; Tue, 30 Nov 2021 06:39:04 -0800 (PST) Received: from ?IPv6:2a01:e34:ed2f:f020:7880:daae:2d50:bb5e? ([2a01:e34:ed2f:f020:7880:daae:2d50:bb5e]) by smtp.googlemail.com with ESMTPSA id u13sm3008168wmq.14.2021.11.30.06.39.03 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 30 Nov 2021 06:39:04 -0800 (PST) Subject: Re: [PATCH 1/5] clocksource: Add MStar MSC313e timer support To: Romain Perier Cc: Thomas Gleixner , Daniel Palmer , Rob Herring , devicetree , linux-arm-kernel , Linux Kernel Mailing List References: <20211126202144.72936-1-romain.perier@gmail.com> <20211126202144.72936-2-romain.perier@gmail.com> <6cf881ea-1761-b3b2-5d0d-9a83595c1246@linaro.org> From: Daniel Lezcano Message-ID: <4703d6f2-a056-b76b-b313-2695430683be@linaro.org> Date: Tue, 30 Nov 2021 15:39:02 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.13.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 30/11/2021 15:12, Romain Perier wrote: > Hi, > > Le lun. 29 nov. 2021 à 18:02, Daniel Lezcano > a écrit : > > On 26/11/2021 21:21, Romain Perier wrote: > > The MSC313e-compatible SoCs have 3 timer hardware blocks. All of these > > are free running 32-bit increasing counters and can generate > interrupts. > > This commit adds basic support for these timers, the first timer block > > being used as clocksource/sched_clock and delay, while the others will > > be used as clockevents. > > Please you elaborate a bit more the internals of this timer as it is a > initial submission > > > Ok, will try to elaborate. >   > > > > > Signed-off-by: Romain Perier > > > Co-developed-by: Daniel Palmer > > > Signed-off-by: Daniel Palmer > > > --- > >  MAINTAINERS                         |   1 + > >  drivers/clocksource/Kconfig         |  10 ++ > >  drivers/clocksource/Makefile        |   1 + > >  drivers/clocksource/timer-msc313e.c | 228 > ++++++++++++++++++++++++++++ > >  4 files changed, 240 insertions(+) > >  create mode 100644 drivers/clocksource/timer-msc313e.c > > > > diff --git a/MAINTAINERS b/MAINTAINERS > > index 7a2345ce8521..f39a1617bf50 100644 > > --- a/MAINTAINERS > > +++ b/MAINTAINERS > > @@ -2282,6 +2282,7 @@ F:      > Documentation/devicetree/bindings/gpio/mstar,msc313-gpio.yaml > >  F:   arch/arm/boot/dts/mstar-* > >  F:   arch/arm/mach-mstar/ > >  F:   drivers/clk/mstar/ > > +F:   drivers/clocksource/timer-msc313e.c > >  F:   drivers/gpio/gpio-msc313.c > >  F:   drivers/rtc/rtc-msc313.c > >  F:   drivers/watchdog/msc313e_wdt.c > > diff --git a/drivers/clocksource/Kconfig b/drivers/clocksource/Kconfig > > index f65e31bab9ae..822e711da284 100644 > > --- a/drivers/clocksource/Kconfig > > +++ b/drivers/clocksource/Kconfig > > @@ -671,6 +671,16 @@ config MILBEAUT_TIMER > >       help > >         Enables the support for Milbeaut timer driver. > >  > > +config MSC313E_TIMER > > +     bool "MSC313E timer driver" > > Silent option please and platform config option enables it. > > > What do you mean ? no short description at all ? We try to let the platform Kconfig option to select silently the timer in order to prevent selecting it manually. If the timer is mandatory on your platform it should be a silent option, except for COMPILE_TEST That leads to: bool "MSC313E timer driver" if COMPILE_TEST and you should be able to compile it on x86, ... If the timer is optional because there is another one on the platform, it could be unselected manually. That is the configuration you've done here. So if there is no other broadcast timer, this timer should selected for the platform and the option should be silent (except in case of COMPILE_TEST). > > +     depends on ARCH_MSTARV7 || COMPILE_TEST > > +     select TIMER_OF > > +     select CLKSRC_MMIO > > +     help > > +       Enables support for the MStar MSC313E timer driver. > > +       This provides access to multiple interrupt generating > > +       programmable 32-bit free running incrementing counters. > > + > >  config INGENIC_TIMER [ ... ] > > + > > +struct msc313e_delay { > > +     void __iomem *base; > > +     struct delay_timer delay; > > +}; > > + > > +static void __iomem *msc313e_clksrc; > > +static struct msc313e_delay msc313e_delay; > > I'm not sure that compiles on other platform than mstarv7 > > > It is armv7-based, and its size is known at build-time, no ? > Everything builds with WERROR here. I should have say "arch" instead of "platform". The COMPILE_TEST option is set above, that means the driver can be compiled on a x86 (for compilation test coverage, stubs already exists except for delay AFAIR). [ ... ] > > +     msc313e_delay.base = timer_of_base(&to); > > +     msc313e_delay.delay.read_current_timer = > msc313e_read_delay_timer_read; > > +     msc313e_delay.delay.freq = timer_of_rate(&to); > > + > > +     msc313e_clksrc = timer_of_base(&to); > > +     reg = readw(msc313e_clksrc + MSC313E_REG_CTRL); > > +     reg |= MSC313E_REG_CTRL_TIMER_EN; > > +     writew(reg, msc313e_clksrc + MSC313E_REG_CTRL); > > + > > +     register_current_timer_delay(&msc313e_delay.delay); > > + > > +     sched_clock_register(msc313e_timer_sched_clock_read, 32, > timer_of_rate(&to)); > > +     return clocksource_mmio_init(timer_of_base(&to), TIMER_NAME, > timer_of_rate(&to), 300, 32, > > +                                  msc313e_timer_clksrc_read); > > format 80char max please, run checkpatch.pl > before submitting > > > max_line_lenght is set to "100" in checkpatch.pl > since a while now :) . > I have passed it with "--strict" before sending the series, however, if > you prefer 80 chars > max just ask, I can limit to 80 chars. Oh, indeed. Fair enough, limit to 80 chars is now deprecated and suggested length is 100. In this case, at your convenience. Thanks -- Daniel -- Linaro.org │ Open source software for ARM SoCs Follow Linaro: Facebook | Twitter | Blog 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 855E1C433F5 for ; Tue, 30 Nov 2021 14:40:32 +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-Transfer-Encoding:Content-Type: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=B5AbhCazJWVX6ZxHsc2WvGNRtNP/WwkbgSQUhnr4lH0=; b=Cfu9EuTGs4Wr2/TynN5+eToCJ/ zkeYUfYYmSRMTfWmhe7batfLCJsIJbj68Sw15yqwHg6pbw7JTYkB+EMx16v0gKowxPci0VJKnC1Of przjd0q/x+hQrZ25Rp5bRjVqxrkPeYEVV1Aq5JBQ2YkyyXOOmEs1km/OibLAxdd60Lt1UKoicp3V0 DV6sP+X0v8Mon4bhDYjt41ciNO4nfCpI/CDG2qH/FN03fK78e0Yge5Wry0gRlQp21QXto9tUZGCxH puXElC8wtciMTGi7gft4bMS3p++IAiKrU/OrVMALmxFSbBuSafC9oUa6XgjfghPOAahWeQEN3nmFz 5FUjQHqQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1ms4Hm-005eGS-Oi; Tue, 30 Nov 2021 14:39:10 +0000 Received: from mail-wm1-x333.google.com ([2a00:1450:4864:20::333]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1ms4Hi-005eFQ-S6 for linux-arm-kernel@lists.infradead.org; Tue, 30 Nov 2021 14:39:08 +0000 Received: by mail-wm1-x333.google.com with SMTP id o29so17653130wms.2 for ; Tue, 30 Nov 2021 06:39:06 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=subject:to:cc:references:from:message-id:date:user-agent :mime-version:in-reply-to:content-language:content-transfer-encoding; bh=2bmfZ8/yojigYMGWoM6Ilhlpc1qceboy4zfRftSi5oE=; b=LelNjI21+uPTpwJ76SNMdaV3DjtJsBx8dnjf0VwM+0LmcN1y5BCEDw7nCes7XUOh+z yTrad4N4KdCVh/LnluKSRW8e/vcF4dArQZv+RNbruDy1uHiBV4OJKaFUXgVND4uubtB0 8eot2gMSqo2kjJct9du0xxt+A6Aj71b0sjIlQKrt32wHieUro8uqKCvHPqRUk9+qtSOq 2Dljh1tnUsYvjb1Je36fa5D1T/ltcG2WfTi1otHsxmRkOB4p/SKc0fYI1+3fW/WOfwG7 LuH2epm7K+gLsltmVwc5N1MUQYA81PLO5Owp+vVfaZQqhMJargSvH35WC3RRJGtrr2KU Iwiw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:subject:to:cc:references:from:message-id:date :user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=2bmfZ8/yojigYMGWoM6Ilhlpc1qceboy4zfRftSi5oE=; b=LEHpQDptrBLkt3Khlv18us2qswTNTQXcIYkL1999o/W3EgiapDGgPqq71B5J02oJy3 xikr5Bg5I+XWrUWL3TkPhRVr98zgOiEtCZXtSfdo71B1KleR0C8RgO3qlwKs5iFhcmq0 nRqhwjNU5LhhcwM3I0KbdFxSmwu97GodAD8ks6Pf0GMlAhVU4kh2gBgp1iRD9gjYKpEC nTQef3qltUYDPXt+HUgBbFs2XeO5XHOC4hNCqYMW8jz/dVlVEWJYw+vAmHuhBMbEUpOv K6zJsA1Bw1BG+THwUWJOQwFKwqQUWFL8rgWYsIdN4C/bCiISDuVaK5AOuf11sK41EwoK QO6g== X-Gm-Message-State: AOAM5318cyTHLxOMXx/eWSEVeDI/+930RsoMgWmkHe7lOlSnWxKBBzJt d5GVjpzt3fUsEpahbEPSrINBHg== X-Google-Smtp-Source: ABdhPJxZ5sFmuSWzUiRoOR58P5Y8QszFbL7xBmWKGG3s4ojQayuw4RebmZPdbWjTK045kEQSGPY6bQ== X-Received: by 2002:a05:600c:4f87:: with SMTP id n7mr5508835wmq.63.1638283144644; Tue, 30 Nov 2021 06:39:04 -0800 (PST) Received: from ?IPv6:2a01:e34:ed2f:f020:7880:daae:2d50:bb5e? ([2a01:e34:ed2f:f020:7880:daae:2d50:bb5e]) by smtp.googlemail.com with ESMTPSA id u13sm3008168wmq.14.2021.11.30.06.39.03 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 30 Nov 2021 06:39:04 -0800 (PST) Subject: Re: [PATCH 1/5] clocksource: Add MStar MSC313e timer support To: Romain Perier Cc: Thomas Gleixner , Daniel Palmer , Rob Herring , devicetree , linux-arm-kernel , Linux Kernel Mailing List References: <20211126202144.72936-1-romain.perier@gmail.com> <20211126202144.72936-2-romain.perier@gmail.com> <6cf881ea-1761-b3b2-5d0d-9a83595c1246@linaro.org> From: Daniel Lezcano Message-ID: <4703d6f2-a056-b76b-b313-2695430683be@linaro.org> Date: Tue, 30 Nov 2021 15:39:02 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.13.0 MIME-Version: 1.0 In-Reply-To: Content-Language: en-US X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20211130_063906_937911_384E9B0C X-CRM114-Status: GOOD ( 42.33 ) 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 T24gMzAvMTEvMjAyMSAxNToxMiwgUm9tYWluIFBlcmllciB3cm90ZToKPiBIaSwKPiAKPiBMZcKg bHVuLiAyOSBub3YuIDIwMjEgw6DCoDE4OjAyLCBEYW5pZWwgTGV6Y2FubyA8ZGFuaWVsLmxlemNh bm9AbGluYXJvLm9yZwo+IDxtYWlsdG86ZGFuaWVsLmxlemNhbm9AbGluYXJvLm9yZz4+IGEgw6lj cml0wqA6Cj4gCj4gICAgIE9uIDI2LzExLzIwMjEgMjE6MjEsIFJvbWFpbiBQZXJpZXIgd3JvdGU6 Cj4gICAgID4gVGhlIE1TQzMxM2UtY29tcGF0aWJsZSBTb0NzIGhhdmUgMyB0aW1lciBoYXJkd2Fy ZSBibG9ja3MuIEFsbCBvZiB0aGVzZQo+ICAgICA+IGFyZSBmcmVlIHJ1bm5pbmcgMzItYml0IGlu Y3JlYXNpbmcgY291bnRlcnMgYW5kIGNhbiBnZW5lcmF0ZQo+ICAgICBpbnRlcnJ1cHRzLgo+ICAg ICA+IFRoaXMgY29tbWl0IGFkZHMgYmFzaWMgc3VwcG9ydCBmb3IgdGhlc2UgdGltZXJzLCB0aGUg Zmlyc3QgdGltZXIgYmxvY2sKPiAgICAgPiBiZWluZyB1c2VkIGFzIGNsb2Nrc291cmNlL3NjaGVk X2Nsb2NrIGFuZCBkZWxheSwgd2hpbGUgdGhlIG90aGVycyB3aWxsCj4gICAgID4gYmUgdXNlZCBh cyBjbG9ja2V2ZW50cy4KPiAKPiAgICAgUGxlYXNlIHlvdSBlbGFib3JhdGUgYSBiaXQgbW9yZSB0 aGUgaW50ZXJuYWxzIG9mIHRoaXMgdGltZXIgYXMgaXQgaXMgYQo+ICAgICBpbml0aWFsIHN1Ym1p c3Npb24KPiAKPiAKPiBPaywgd2lsbCB0cnkgdG8gZWxhYm9yYXRlLgo+IMKgCj4gCj4gCj4gCj4g ICAgID4gU2lnbmVkLW9mZi1ieTogUm9tYWluIFBlcmllciA8cm9tYWluLnBlcmllckBnbWFpbC5j b20KPiAgICAgPG1haWx0bzpyb21haW4ucGVyaWVyQGdtYWlsLmNvbT4+Cj4gICAgID4gQ28tZGV2 ZWxvcGVkLWJ5OiBEYW5pZWwgUGFsbWVyIDxkYW5pZWxAMHgwZi5jb20KPiAgICAgPG1haWx0bzpk YW5pZWxAMHgwZi5jb20+Pgo+ICAgICA+IFNpZ25lZC1vZmYtYnk6IERhbmllbCBQYWxtZXIgPGRh bmllbEAweDBmLmNvbQo+ICAgICA8bWFpbHRvOmRhbmllbEAweDBmLmNvbT4+Cj4gICAgID4gLS0t Cj4gICAgID7CoCBNQUlOVEFJTkVSU8KgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgfMKgIMKgMSArCj4gICAgID7CoCBkcml2ZXJzL2Nsb2Nrc291cmNlL0tjb25maWfCoCDCoCDC oCDCoCDCoHzCoCAxMCArKwo+ICAgICA+wqAgZHJpdmVycy9jbG9ja3NvdXJjZS9NYWtlZmlsZcKg IMKgIMKgIMKgIHzCoCDCoDEgKwo+ICAgICA+wqAgZHJpdmVycy9jbG9ja3NvdXJjZS90aW1lci1t c2MzMTNlLmMgfCAyMjgKPiAgICAgKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+ICAgICA+ wqAgNCBmaWxlcyBjaGFuZ2VkLCAyNDAgaW5zZXJ0aW9ucygrKQo+ICAgICA+wqAgY3JlYXRlIG1v ZGUgMTAwNjQ0IGRyaXZlcnMvY2xvY2tzb3VyY2UvdGltZXItbXNjMzEzZS5jCj4gICAgID4KPiAg ICAgPiBkaWZmIC0tZ2l0IGEvTUFJTlRBSU5FUlMgYi9NQUlOVEFJTkVSUwo+ICAgICA+IGluZGV4 IDdhMjM0NWNlODUyMS4uZjM5YTE2MTdiZjUwIDEwMDY0NAo+ICAgICA+IC0tLSBhL01BSU5UQUlO RVJTCj4gICAgID4gKysrIGIvTUFJTlRBSU5FUlMKPiAgICAgPiBAQCAtMjI4Miw2ICsyMjgyLDcg QEAgRjrCoCDCoCDCoAo+ICAgICBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZ3Bp by9tc3Rhcixtc2MzMTMtZ3Bpby55YW1sCj4gICAgID7CoCBGOsKgIMKgYXJjaC9hcm0vYm9vdC9k dHMvbXN0YXItKgo+ICAgICA+wqAgRjrCoCDCoGFyY2gvYXJtL21hY2gtbXN0YXIvCj4gICAgID7C oCBGOsKgIMKgZHJpdmVycy9jbGsvbXN0YXIvCj4gICAgID4gK0Y6wqAgwqBkcml2ZXJzL2Nsb2Nr c291cmNlL3RpbWVyLW1zYzMxM2UuYwo+ICAgICA+wqAgRjrCoCDCoGRyaXZlcnMvZ3Bpby9ncGlv LW1zYzMxMy5jCj4gICAgID7CoCBGOsKgIMKgZHJpdmVycy9ydGMvcnRjLW1zYzMxMy5jCj4gICAg ID7CoCBGOsKgIMKgZHJpdmVycy93YXRjaGRvZy9tc2MzMTNlX3dkdC5jCj4gICAgID4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvY2xvY2tzb3VyY2UvS2NvbmZpZyBiL2RyaXZlcnMvY2xvY2tzb3VyY2Uv S2NvbmZpZwo+ICAgICA+IGluZGV4IGY2NWUzMWJhYjlhZS4uODIyZTcxMWRhMjg0IDEwMDY0NAo+ ICAgICA+IC0tLSBhL2RyaXZlcnMvY2xvY2tzb3VyY2UvS2NvbmZpZwo+ICAgICA+ICsrKyBiL2Ry aXZlcnMvY2xvY2tzb3VyY2UvS2NvbmZpZwo+ICAgICA+IEBAIC02NzEsNiArNjcxLDE2IEBAIGNv bmZpZyBNSUxCRUFVVF9USU1FUgo+ICAgICA+wqAgwqAgwqAgwqBoZWxwCj4gICAgID7CoCDCoCDC oCDCoCDCoEVuYWJsZXMgdGhlIHN1cHBvcnQgZm9yIE1pbGJlYXV0IHRpbWVyIGRyaXZlci4KPiAg ICAgPsKgCj4gICAgID4gK2NvbmZpZyBNU0MzMTNFX1RJTUVSCj4gICAgID4gK8KgIMKgIMKgYm9v bCAiTVNDMzEzRSB0aW1lciBkcml2ZXIiCj4gCj4gICAgIFNpbGVudCBvcHRpb24gcGxlYXNlIGFu ZCBwbGF0Zm9ybSBjb25maWcgb3B0aW9uIGVuYWJsZXMgaXQuCj4gCj4gCj4gV2hhdCBkbyB5b3Ug bWVhbiA/IG5vIHNob3J0IGRlc2NyaXB0aW9uIGF0IGFsbCA/CgpXZSB0cnkgdG8gbGV0IHRoZSBw bGF0Zm9ybSBLY29uZmlnIG9wdGlvbiB0byBzZWxlY3Qgc2lsZW50bHkgdGhlIHRpbWVyCmluIG9y ZGVyIHRvIHByZXZlbnQgc2VsZWN0aW5nIGl0IG1hbnVhbGx5LgoKSWYgdGhlIHRpbWVyIGlzIG1h bmRhdG9yeSBvbiB5b3VyIHBsYXRmb3JtIGl0IHNob3VsZCBiZSBhIHNpbGVudCBvcHRpb24sCmV4 Y2VwdCBmb3IgQ09NUElMRV9URVNUCgpUaGF0IGxlYWRzIHRvOgoKCWJvb2wgIk1TQzMxM0UgdGlt ZXIgZHJpdmVyIiBpZiBDT01QSUxFX1RFU1QKCmFuZCB5b3Ugc2hvdWxkIGJlIGFibGUgdG8gY29t cGlsZSBpdCBvbiB4ODYsIC4uLgoKSWYgdGhlIHRpbWVyIGlzIG9wdGlvbmFsIGJlY2F1c2UgdGhl cmUgaXMgYW5vdGhlciBvbmUgb24gdGhlIHBsYXRmb3JtLAppdCBjb3VsZCBiZSB1bnNlbGVjdGVk IG1hbnVhbGx5LiBUaGF0IGlzIHRoZSBjb25maWd1cmF0aW9uIHlvdSd2ZSBkb25lIGhlcmUuCgpT byBpZiB0aGVyZSBpcyBubyBvdGhlciBicm9hZGNhc3QgdGltZXIsIHRoaXMgdGltZXIgc2hvdWxk IHNlbGVjdGVkIGZvcgp0aGUgcGxhdGZvcm0gYW5kIHRoZSBvcHRpb24gc2hvdWxkIGJlIHNpbGVu dCAoZXhjZXB0IGluIGNhc2Ugb2YKQ09NUElMRV9URVNUKS4KCj4gICAgID4gK8KgIMKgIMKgZGVw ZW5kcyBvbiBBUkNIX01TVEFSVjcgfHwgQ09NUElMRV9URVNUCj4gICAgID4gK8KgIMKgIMKgc2Vs ZWN0IFRJTUVSX09GCj4gICAgID4gK8KgIMKgIMKgc2VsZWN0IENMS1NSQ19NTUlPCj4gICAgID4g K8KgIMKgIMKgaGVscAo+ICAgICA+ICvCoCDCoCDCoCDCoEVuYWJsZXMgc3VwcG9ydCBmb3IgdGhl IE1TdGFyIE1TQzMxM0UgdGltZXIgZHJpdmVyLgo+ICAgICA+ICvCoCDCoCDCoCDCoFRoaXMgcHJv dmlkZXMgYWNjZXNzIHRvIG11bHRpcGxlIGludGVycnVwdCBnZW5lcmF0aW5nCj4gICAgID4gK8Kg IMKgIMKgIMKgcHJvZ3JhbW1hYmxlIDMyLWJpdCBmcmVlIHJ1bm5pbmcgaW5jcmVtZW50aW5nIGNv dW50ZXJzLgo+ICAgICA+ICsKPiAgICAgPsKgIGNvbmZpZyBJTkdFTklDX1RJTUVSCgpbIC4uLiBd Cgo+ICAgICA+ICsKPiAgICAgPiArc3RydWN0IG1zYzMxM2VfZGVsYXkgewo+ICAgICA+ICvCoCDC oCDCoHZvaWQgX19pb21lbSAqYmFzZTsKPiAgICAgPiArwqAgwqAgwqBzdHJ1Y3QgZGVsYXlfdGlt ZXIgZGVsYXk7Cj4gICAgID4gK307Cj4gICAgID4gKwo+ICAgICA+ICtzdGF0aWMgdm9pZCBfX2lv bWVtICptc2MzMTNlX2Nsa3NyYzsKPiAgICAgPiArc3RhdGljIHN0cnVjdCBtc2MzMTNlX2RlbGF5 IG1zYzMxM2VfZGVsYXk7Cj4gCj4gICAgIEknbSBub3Qgc3VyZSB0aGF0IGNvbXBpbGVzIG9uIG90 aGVyIHBsYXRmb3JtIHRoYW4gbXN0YXJ2Nwo+IAo+IAo+IEl0IGlzIGFybXY3LWJhc2VkLCBhbmQg aXRzIHNpemUgaXMga25vd24gYXQgYnVpbGQtdGltZSwgbm8gPwo+IEV2ZXJ5dGhpbmcgYnVpbGRz IHdpdGggV0VSUk9SIGhlcmUuCgpJIHNob3VsZCBoYXZlIHNheSAiYXJjaCIgaW5zdGVhZCBvZiAi cGxhdGZvcm0iLgoKVGhlIENPTVBJTEVfVEVTVCBvcHRpb24gaXMgc2V0IGFib3ZlLCB0aGF0IG1l YW5zIHRoZSBkcml2ZXIgY2FuIGJlCmNvbXBpbGVkIG9uIGEgeDg2IChmb3IgY29tcGlsYXRpb24g dGVzdCBjb3ZlcmFnZSwgc3R1YnMgYWxyZWFkeSBleGlzdHMKZXhjZXB0IGZvciBkZWxheSBBRkFJ UikuCgpbIC4uLiBdCgo+ICAgICA+ICvCoCDCoCDCoG1zYzMxM2VfZGVsYXkuYmFzZSA9IHRpbWVy X29mX2Jhc2UoJnRvKTsKPiAgICAgPiArwqAgwqAgwqBtc2MzMTNlX2RlbGF5LmRlbGF5LnJlYWRf Y3VycmVudF90aW1lciA9Cj4gICAgIG1zYzMxM2VfcmVhZF9kZWxheV90aW1lcl9yZWFkOwo+ICAg ICA+ICvCoCDCoCDCoG1zYzMxM2VfZGVsYXkuZGVsYXkuZnJlcSA9IHRpbWVyX29mX3JhdGUoJnRv KTsKPiAgICAgPiArCj4gICAgID4gK8KgIMKgIMKgbXNjMzEzZV9jbGtzcmMgPSB0aW1lcl9vZl9i YXNlKCZ0byk7Cj4gICAgID4gK8KgIMKgIMKgcmVnID0gcmVhZHcobXNjMzEzZV9jbGtzcmMgKyBN U0MzMTNFX1JFR19DVFJMKTsKPiAgICAgPiArwqAgwqAgwqByZWcgfD0gTVNDMzEzRV9SRUdfQ1RS TF9USU1FUl9FTjsKPiAgICAgPiArwqAgwqAgwqB3cml0ZXcocmVnLCBtc2MzMTNlX2Nsa3NyYyAr IE1TQzMxM0VfUkVHX0NUUkwpOwo+ICAgICA+ICsKPiAgICAgPiArwqAgwqAgwqByZWdpc3Rlcl9j dXJyZW50X3RpbWVyX2RlbGF5KCZtc2MzMTNlX2RlbGF5LmRlbGF5KTsKPiAgICAgPiArCj4gICAg ID4gK8KgIMKgIMKgc2NoZWRfY2xvY2tfcmVnaXN0ZXIobXNjMzEzZV90aW1lcl9zY2hlZF9jbG9j a19yZWFkLCAzMiwKPiAgICAgdGltZXJfb2ZfcmF0ZSgmdG8pKTsKPiAgICAgPiArwqAgwqAgwqBy ZXR1cm4gY2xvY2tzb3VyY2VfbW1pb19pbml0KHRpbWVyX29mX2Jhc2UoJnRvKSwgVElNRVJfTkFN RSwKPiAgICAgdGltZXJfb2ZfcmF0ZSgmdG8pLCAzMDAsIDMyLAo+ICAgICA+ICvCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBtc2MzMTNlX3RpbWVyX2Ns a3NyY19yZWFkKTsKPiAKPiAgICAgZm9ybWF0IDgwY2hhciBtYXggcGxlYXNlLCBydW4gY2hlY2tw YXRjaC5wbCA8aHR0cDovL2NoZWNrcGF0Y2gucGw+Cj4gICAgIGJlZm9yZSBzdWJtaXR0aW5nCj4g Cj4gCj4gbWF4X2xpbmVfbGVuZ2h0IGlzIHNldCB0byAiMTAwIiBpbiBjaGVja3BhdGNoLnBsIDxo dHRwOi8vY2hlY2twYXRjaC5wbD4KPiBzaW5jZSBhIHdoaWxlIG5vdyA6KSAuCj4gSSBoYXZlIHBh c3NlZCBpdCB3aXRoICItLXN0cmljdCIgYmVmb3JlIHNlbmRpbmcgdGhlIHNlcmllcywgaG93ZXZl ciwgaWYKPiB5b3UgcHJlZmVyIDgwIGNoYXJzCj4gbWF4IGp1c3QgYXNrLCBJIGNhbiBsaW1pdCB0 byA4MCBjaGFycy4KCk9oLCBpbmRlZWQuIEZhaXIgZW5vdWdoLCBsaW1pdCB0byA4MCBjaGFycyBp cyBub3cgZGVwcmVjYXRlZCBhbmQKc3VnZ2VzdGVkIGxlbmd0aCBpcyAxMDAuCgpJbiB0aGlzIGNh c2UsIGF0IHlvdXIgY29udmVuaWVuY2UuCgpUaGFua3MKICAtLSBEYW5pZWwKCgotLSAKPGh0dHA6 Ly93d3cubGluYXJvLm9yZy8+IExpbmFyby5vcmcg4pSCIE9wZW4gc291cmNlIHNvZnR3YXJlIGZv ciBBUk0gU29DcwoKRm9sbG93IExpbmFybzogIDxodHRwOi8vd3d3LmZhY2Vib29rLmNvbS9wYWdl cy9MaW5hcm8+IEZhY2Vib29rIHwKPGh0dHA6Ly90d2l0dGVyLmNvbS8jIS9saW5hcm9vcmc+IFR3 aXR0ZXIgfAo8aHR0cDovL3d3dy5saW5hcm8ub3JnL2xpbmFyby1ibG9nLz4gQmxvZwoKX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KbGludXgtYXJtLWtlcm5l bCBtYWlsaW5nIGxpc3QKbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6 Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtYXJtLWtlcm5lbAo=