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 E8469C38A2D for ; Mon, 24 Oct 2022 05:01:39 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230127AbiJXFBh (ORCPT ); Mon, 24 Oct 2022 01:01:37 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:50066 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229929AbiJXFBc (ORCPT ); Mon, 24 Oct 2022 01:01:32 -0400 Received: from wout4-smtp.messagingengine.com (wout4-smtp.messagingengine.com [64.147.123.20]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A242B6CD1A for ; Sun, 23 Oct 2022 22:01:28 -0700 (PDT) Received: from compute5.internal (compute5.nyi.internal [10.202.2.45]) by mailout.west.internal (Postfix) with ESMTP id 529CB320014C; Mon, 24 Oct 2022 01:01:27 -0400 (EDT) Received: from mailfrontend2 ([10.202.2.163]) by compute5.internal (MEProxy); Mon, 24 Oct 2022 01:01:28 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sholland.org; h= cc:cc:content-transfer-encoding:content-type:date:date:from:from :in-reply-to:in-reply-to:message-id:mime-version:references :reply-to:sender:subject:subject:to:to; s=fm1; t=1666587686; x= 1666674086; bh=TU0sobUSG9rRG4rFGAXmoEpaQSjoNpcjcGYY+UeisGA=; b=I KFyVkwiDMnm5fD8JkzhUIRqX0bzc/msj7aQw9cV9dAp+PBlzG7tNE8lLHhOlm28h dfmpFGT9Pudyvw04MoKxD5GT/h4/rqEcuz2kkntrHt7ZHIi+kn+wtMOzGj2RNKWs 1w/5jrU9zh7bQh82o2o9Ur7EjKXfbbq9k5G/z84vzr8iyoHLt1Tw7bvsPR881PLz A6I1C7p3PfMNHI6VEOE1QmdyXUWQZD15Yv5rpNR0FudvsWNQ99q+0tIvto4+aYuR bg55pTT6EXn8/HIwQj9hAJmj2Kee8eTI53rWIGTto9hJfXGwhHE4K1kOTwKeISXr qLOQX8550rPdgUbKSlgaQ== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:date:date:feedback-id:feedback-id:from:from :in-reply-to:in-reply-to:message-id:mime-version:references :reply-to:sender:subject:subject:to:to:x-me-proxy:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm3; t=1666587686; x= 1666674086; bh=TU0sobUSG9rRG4rFGAXmoEpaQSjoNpcjcGYY+UeisGA=; b=G GCErdKlmw9GHSal8vu39rvufnoSjz4u6Sbo27P2Su+UIQI9632Yt2Mfv+oQZT0va I1cHHxpr7vPgUus+boaT6BOpbuvhVhmRcVUdz7zkX7X72M2Bdyq+msBDdZTUKGVM T2xFFklJ6EC8gKPwjIM4GIJCNeRfZ9lkpzgV2Caobyte2c80Q2SkO6LNEyUOCPeW RNzDjJeA3d48N6TcdNne0e7SuMAG92VAopdInqMYA5b8n2FIh9z5zi10gK6KANcd karVf9G+xLlgjDnrGJMgRAtIDaSUntgIc3+Q8NXzVSUWYoI5JtEvObcZT/Aa4vJ9 Io/bcQh0G6bW2m2X4D4IQ== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvfedrgedtfedgledvucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmne cujfgurhepkfffgggfvfevfhfhufgjtgfgsehtkeertddtfeejnecuhfhrohhmpefurghm uhgvlhcujfholhhlrghnugcuoehsrghmuhgvlhesshhhohhllhgrnhgurdhorhhgqeenuc ggtffrrghtthgvrhhnpeeitdetieeiffdthfegkedvtdegtdegffelgeeufeeghfffteel vdeiheeitdetvdenucffohhmrghinhepghhithhhuhgsrdgtohhmpdhfrhgvvgguvghskh htohhprdhorhhgpdhkvghrnhgvlhdrohhrghenucevlhhushhtvghrufhiiigvpedtnecu rfgrrhgrmhepmhgrihhlfhhrohhmpehsrghmuhgvlhesshhhohhllhgrnhgurdhorhhg X-ME-Proxy: Feedback-ID: i0ad843c9:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Mon, 24 Oct 2022 01:01:25 -0400 (EDT) Message-ID: Date: Mon, 24 Oct 2022 00:01:24 -0500 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux ppc64le; rv:102.0) Gecko/20100101 Thunderbird/102.3.3 Content-Language: en-US To: Palmer Dabbelt , Conor Dooley Cc: daniel.lezcano@linaro.org, tglx@linutronix.de, aou@eecs.berkeley.edu, atishp@atishpatra.org, dmitriy@oss-tech.org, Paul Walmsley , linux-kernel@vger.kernel.org, linux-riscv@lists.infradead.org References: From: Samuel Holland Subject: Re: [PATCH] clocksource/drivers/riscv: Events are stopped during CPU suspend In-Reply-To: Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 10/9/22 18:45, Palmer Dabbelt wrote: > On Thu, 29 Sep 2022 14:50:45 PDT (-0700), Conor Dooley wrote: >> On Sun, May 08, 2022 at 08:21:21PM -0500, Samuel Holland wrote: >>> Some implementations of the SBI time extension depend on hart-local >>> state (for example, CSRs) that are lost or hardware that is powered >>> down when a CPU is suspended. To be safe, the clockevents driver >>> cannot assume that timer IRQs will be received during CPU suspend. >>> >>> Fixes: 62b019436814 ("clocksource: new RISC-V SBI timer driver") >>> Signed-off-by: Samuel Holland >>> --- >>> >>>  drivers/clocksource/timer-riscv.c | 2 +- >>>  1 file changed, 1 insertion(+), 1 deletion(-) >>> >>> diff --git a/drivers/clocksource/timer-riscv.c >>> b/drivers/clocksource/timer-riscv.c >>> index 1767f8bf2013..593d5a957b69 100644 >>> --- a/drivers/clocksource/timer-riscv.c >>> +++ b/drivers/clocksource/timer-riscv.c >>> @@ -34,7 +34,7 @@ static int riscv_clock_next_event(unsigned long delta, >>>  static unsigned int riscv_clock_event_irq; >>>  static DEFINE_PER_CPU(struct clock_event_device, riscv_clock_event) = { >>>      .name            = "riscv_timer_clockevent", >>> -    .features        = CLOCK_EVT_FEAT_ONESHOT, >>> +    .features        = CLOCK_EVT_FEAT_ONESHOT | CLOCK_EVT_FEAT_C3STOP, > > This is listed as being x86-specific in the header, but there's a hanful > of other ports that enable it for timers as well.  Looks like arm is > setting this based on DT, which seems reasonable to me: we're working > around a firmware bug, there should be some way to turn off that > workaround for firmware that doesn't have the bug. Looks like Intel already > turns this off when ARAT is supported, which seems to be the case for > anything modern, so maybe we're just tripping up on some untested behavior here?  > I'm not sure exactly how we should probe this, but having it only enabled > when we need the workaround seems like the right way to go. I opened an issue against the SBI spec about what exactly it requires, but I got no responses: https://github.com/riscv-non-isa/riscv-sbi-doc/issues/98 My interpretation of the SBI specification is that it does not require maintaining any hart-local state across a non-retentive hart suspend. Unless the SBI spec says the timer must fire during/after suspend, then there is no firmware bug. > That said, I'm not actually sure this C3STOP feature does what we want > given the commit description.  The timers on RISC-V are sort of in this > odd middle-ground between being per-CPU timers and system timers: the > time they produce is global (or at least close, due to the mtime > synchronization rules) but the actual interrupts are only one-shot and > only local. And if we cannot rely on the interrupt being delivered, we cannot rely on the SBI time extension to work across cpuidle entry. > From poking around the code I think this just tries to > setup a periodic broadcast timer, but since we use software fallbacks to > emulate those we'll still end up losing the interrupts/ticks if the CPU > that was asked for an interrupt has gone to sleep and lost that state. So by extension, non-retentive cpuidle states cannot be used if the SBI timer is the only available timer, since there is no hardware broadcast timer to use as a backup. > I'm not sure if I'm just misunderstanding what's going on here, though.  > Is there something that describes the behavior this fixes in more detail? The motivating scenario for this patch is the C906, where the MTIMER is in the same reset domain as the CPU, so the timer state is lost during non-retentive suspend. Without this patch, if riscv_timer_clockevent is the current clockevent driver, then the CPU fails to wake up from suspend. However, this same problem would occur on any CPU where the timer or interrupt delivery stops working during suspend. >>>      .rating            = 100, >>>      .set_next_event        = riscv_clock_next_event, >>>  }; >> >> After a bit of a painful bisection (with a misdirection into the v5.19 >> printk reverts along the way) I have arrived at this commit for causing >> me some issues. >> >> If an AXI read to the PCIe controller on PolarFire SoC times out, the >> system will stall, with an expected: >>      io scheduler mq-deadline registered >>      io scheduler kyber registered >>      microchip-pcie 2000000000.pcie: host bridge /soc/pcie@2000000000 >> ranges: >>      microchip-pcie 2000000000.pcie:      MEM >> 0x2008000000..0x2087ffffff -> 0x0008000000 >>      microchip-pcie 2000000000.pcie: sec error in pcie2axi buffer >>      microchip-pcie 2000000000.pcie: ded error in pcie2axi buffer >>      microchip-pcie 2000000000.pcie: axi read request error >>      microchip-pcie 2000000000.pcie: axi read timeout >>      microchip-pcie 2000000000.pcie: sec error in pcie2axi buffer >>      microchip-pcie 2000000000.pcie: ded error in pcie2axi buffer >>      microchip-pcie 2000000000.pcie: sec error in pcie2axi buffer >>      microchip-pcie 2000000000.pcie: ded error in pcie2axi buffer >>      microchip-pcie 2000000000.pcie: sec error in pcie2axi buffer >>      microchip-pcie 2000000000.pcie: ded error in pcie2axi buffer >>      Freeing initrd memory: 7336K >>      mc_event_handler: 667402 callbacks suppressed >>      microchip-pcie 2000000000.pcie: sec error in pcie2axi buffer >>      microchip-pcie 2000000000.pcie: ded error in pcie2axi buffer >>      microchip-pcie 2000000000.pcie: sec error in pcie2axi buffer >>      microchip-pcie 2000000000.pcie: ded error in pcie2axi buffer >>      microchip-pcie 2000000000.pcie: sec error in pcie2axi buffer >>      microchip-pcie 2000000000.pcie: ded error in pcie2axi buffer >>      microchip-pcie 2000000000.pcie: sec error in pcie2axi buffer >>      microchip-pcie 2000000000.pcie: ded error in pcie2axi buffer >>      microchip-pcie 2000000000.pcie: sec error in pcie2axi buffer >>      microchip-pcie 2000000000.pcie: ded error in pcie2axi buffer >>      mc_event_handler: 666588 callbacks suppressed >> >>     microchip-pcie 2000000000.pcie: ded error in pcie2axi buffer >>     mc_event_handler: 666748 callbacks suppressed >>     microchip-pcie 2000000000.pcie: sec error in pcie2axi buffer >>     microchip-pcie 2000000000.pcie: ded error in pcie2axi buffer >>     microchip-pcie 2000000000.pcie: sec error in pcie2axi buffer >>     microchip-pcie 2000000000.pcie: ded error in pcie2axi buffer >>     microchip-pcie 2000000000.pcie: sec error in pcie2axi buffer >>     microchip-pcie 2000000000.pcie: ded error in pcie2axi buffer >>     microchip-pcie 2000000000.pcie: sec error in pcie2axi buffer >>     microchip-pcie 2000000000.pcie: ded error in pcie2axi buffer >>     microchip-pcie 2000000000.pcie: sec error in pcie2axi buffer >>     microchip-pcie 2000000000.pcie: ded error in pcie2axi buffer >>     rcu: INFO: rcu_preempt detected stalls on CPUs/tasks: >>     rcu:     0-...0: (1 GPs behind) idle=19f/1/0x4000000000000002 >> softirq=34/36 fqs=2626 >>         (detected by 1, t=5256 jiffies, g=-1151, q=1143 ncpus=4) >>     Task dump for CPU 0: >>     task:swapper/0       state:R  running task     stack:    0 pid:    >> 1 ppid:     0 flags:0x00000008 >>     Call Trace: >>     mc_event_handler: 666648 callbacks suppressed >> >>  With this patch applied, the system just locks up without RCU stalling: >>     io scheduler mq-deadline registered >>     io scheduler kyber registered >>     microchip-pcie 2000000000.pcie: host bridge /soc/pcie@2000000000 >> ranges: >>     microchip-pcie 2000000000.pcie:      MEM >> 0x2008000000..0x2087ffffff -> 0x0008000000 >>     microchip-pcie 2000000000.pcie: sec error in pcie2axi buffer >>     microchip-pcie 2000000000.pcie: ded error in pcie2axi buffer >>     microchip-pcie 2000000000.pcie: axi read request error >>     microchip-pcie 2000000000.pcie: axi read timeout >>     microchip-pcie 2000000000.pcie: sec error in pcie2axi buffer >>     microchip-pcie 2000000000.pcie: ded error in pcie2axi buffer >>     microchip-pcie 2000000000.pcie: sec error in pcie2axi buffer >>     microchip-pcie 2000000000.pcie: ded error in pcie2axi buffer >>     microchip-pcie 2000000000.pcie: sec error in pcie2axi buffer >>     microchip-pcie 2000000000.pcie: ded error in pcie2axi buffer >>     Freeing initrd memory: 7332K >> >> As of yet, I have no idea if RCU stalls for other reasons would also be >> lost. > > Sorry this broke stuff.  I'm not entirely sure why this would mask RCU > stalls, but it seems like we're hitting some pretty odd paths here and > I'm not sure this is expected to work at all for us. I'm confused here. The RCU stall is itself a bug, right? Are you sure this patch is wrongly masking the stall, or is it possibly just avoiding some buggy code and not causing a stall in the first place? Regards, Samuel > If non-x86 architectures are meant to be able to set > CLOCK_EVT_FEAT_C3STOP, maybe we should document what it's supposed to do > in a more platform-agnostic fashion? > >> Thanks, >> Conor. >> >> git bisect start >> # status: waiting for both good and bad commits >> # good: [7699f7aacf3ebfee51c670b6f796b2797f0f7487] RISC-V: Prepare >> dropping week attribute from arch_kexec_apply_relocations[_add] >> git bisect good 7699f7aacf3ebfee51c670b6f796b2797f0f7487 >> # bad: [63d5172e148bcc174398040861d867bbd2770be4] HACK: jogness >> git bisect bad 63d5172e148bcc174398040861d867bbd2770be4 >> # good: [2518f226c60d8e04d18ba4295500a5b0b8ac7659] Merge tag >> 'drm-next-2022-05-25' of git://anongit.freedesktop.org/drm/drm >> git bisect good 2518f226c60d8e04d18ba4295500a5b0b8ac7659 >> # good: [907bb57aa7b471872aab2f2e83e9713a145673f9] Merge tag >> 'pinctrl-v5.19-1' of >> git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrl >> git bisect good 907bb57aa7b471872aab2f2e83e9713a145673f9 >> # good: [4ad680f083ec360e0991c453e18a38ed9ae500d7] Merge tag >> 'staging-5.19-rc1' of >> git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging >> git bisect good 4ad680f083ec360e0991c453e18a38ed9ae500d7 >> # good: [23df9ba64bb9e26cfee6b34f5c3ece49a8a61ee1] Merge tag >> 'for-5.19/parisc-2' of >> git://git.kernel.org/pub/scm/linux/kernel/git/deller/parisc-linux >> git bisect good 23df9ba64bb9e26cfee6b34f5c3ece49a8a61ee1 >> # bad: [7a68065eb9cd194cf03f135c9211eeb2d5c4c0a0] Merge tag >> 'gpio-fixes-for-v5.19-rc2' of >> git://git.kernel.org/pub/scm/linux/kernel/git/brgl/linux >> git bisect bad 7a68065eb9cd194cf03f135c9211eeb2d5c4c0a0 >> # bad: [1f192b9e8d8a5c619b33a868fb1af063af65ce5d] Merge tag >> 'drm-misc-fixes-2022-06-09' of >> git://anongit.freedesktop.org/drm/drm-misc into drm-fixes >> git bisect bad 1f192b9e8d8a5c619b33a868fb1af063af65ce5d >> # good: [b2c9a83d262a8feb022e24e9f9aadb66cb10a7a8] Merge tag >> 'scsi-misc' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi >> git bisect good b2c9a83d262a8feb022e24e9f9aadb66cb10a7a8 >> # bad: [e17fee8976c3d2ccf9add6d6c8912a37b025d840] Merge tag >> 'mm-nonmm-stable-2022-06-05' of >> git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm >> git bisect bad e17fee8976c3d2ccf9add6d6c8912a37b025d840 >> # bad: [c049ecc523171481accd2c83f79ffeecbf53a915] Merge tag >> 'timers-core-2022-06-05' of >> git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip >> git bisect bad c049ecc523171481accd2c83f79ffeecbf53a915 >> # bad: [9c04a8ff03def4df3f81219ffbe1ec9b44ff5348] >> clocksource/drivers/oxnas-rps: Fix irq_of_parse_and_map() return value >> git bisect bad 9c04a8ff03def4df3f81219ffbe1ec9b44ff5348 >> # bad: [7160d9c4cce94612d5f42a5db392cd606a38737a] >> clocksource/drivers/armada-370-xp: Convert to SPDX identifier >> git bisect bad 7160d9c4cce94612d5f42a5db392cd606a38737a >> # bad: [a98399cbc1e05f7b977419f03905501d566cf54e] >> clocksource/drivers/sp804: Avoid error on multiple instances >> git bisect bad a98399cbc1e05f7b977419f03905501d566cf54e >> # good: [41929c9f628b9990d33a200c54bb0c919e089aa8] >> clocksource/drivers/ixp4xx: Drop boardfile probe path >> git bisect good 41929c9f628b9990d33a200c54bb0c919e089aa8 >> # bad: [232ccac1bd9b5bfe73895f527c08623e7fa0752d] >> clocksource/drivers/riscv: Events are stopped during CPU suspend >> git bisect bad 232ccac1bd9b5bfe73895f527c08623e7fa0752d >> # first bad commit: [232ccac1bd9b5bfe73895f527c08623e7fa0752d] >> clocksource/drivers/riscv: Events are stopped during CPU suspend 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 A1B37C3A59D for ; Mon, 24 Oct 2022 05:01: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-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:In-Reply-To:Subject:From:References:Cc: To: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=MByEEETNrK48CSOlG+X0XXrDIFzx/B7sJqSyEGzmrTE=; b=HE46bR9FAAB/Zc y/ED4Srk68dwNk3NWCnCH2XM5nt/6zEnaGmMLFtsTkp75+6e8NSHz9JQmuKZWGv6j6lNziSvG5Mq+ jJXwNQjcfefxhsVi0KYcGmRMoYappMhWmDQ9snrpzDwpXQq02Tav7RVKqtVavjKsYpE/mtdAkeZML vfg623Cb9F3v22wX6mP8OYK51KxkRF9uoi2qkWpSbdEtB27QRvoMmVKqvCkIsUYjNc/Pka1yS8Vbx wsZ06d/z8tWbbYo+DBRsMWOSMMthYVUhcD+o3c6KCuS2pEpvlmBX/gMHWgDhj2TasNjomuhWRNSY/ yDO3EtRGKW4aeDSSRzpg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1ompak-00H91r-7h; Mon, 24 Oct 2022 05:01:38 +0000 Received: from wout4-smtp.messagingengine.com ([64.147.123.20]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1ompag-00H91J-Kk for linux-riscv@lists.infradead.org; Mon, 24 Oct 2022 05:01:37 +0000 Received: from compute5.internal (compute5.nyi.internal [10.202.2.45]) by mailout.west.internal (Postfix) with ESMTP id 529CB320014C; Mon, 24 Oct 2022 01:01:27 -0400 (EDT) Received: from mailfrontend2 ([10.202.2.163]) by compute5.internal (MEProxy); Mon, 24 Oct 2022 01:01:28 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sholland.org; h= cc:cc:content-transfer-encoding:content-type:date:date:from:from :in-reply-to:in-reply-to:message-id:mime-version:references :reply-to:sender:subject:subject:to:to; s=fm1; t=1666587686; x= 1666674086; bh=TU0sobUSG9rRG4rFGAXmoEpaQSjoNpcjcGYY+UeisGA=; b=I KFyVkwiDMnm5fD8JkzhUIRqX0bzc/msj7aQw9cV9dAp+PBlzG7tNE8lLHhOlm28h dfmpFGT9Pudyvw04MoKxD5GT/h4/rqEcuz2kkntrHt7ZHIi+kn+wtMOzGj2RNKWs 1w/5jrU9zh7bQh82o2o9Ur7EjKXfbbq9k5G/z84vzr8iyoHLt1Tw7bvsPR881PLz A6I1C7p3PfMNHI6VEOE1QmdyXUWQZD15Yv5rpNR0FudvsWNQ99q+0tIvto4+aYuR bg55pTT6EXn8/HIwQj9hAJmj2Kee8eTI53rWIGTto9hJfXGwhHE4K1kOTwKeISXr qLOQX8550rPdgUbKSlgaQ== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:date:date:feedback-id:feedback-id:from:from :in-reply-to:in-reply-to:message-id:mime-version:references :reply-to:sender:subject:subject:to:to:x-me-proxy:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm3; t=1666587686; x= 1666674086; bh=TU0sobUSG9rRG4rFGAXmoEpaQSjoNpcjcGYY+UeisGA=; b=G GCErdKlmw9GHSal8vu39rvufnoSjz4u6Sbo27P2Su+UIQI9632Yt2Mfv+oQZT0va I1cHHxpr7vPgUus+boaT6BOpbuvhVhmRcVUdz7zkX7X72M2Bdyq+msBDdZTUKGVM T2xFFklJ6EC8gKPwjIM4GIJCNeRfZ9lkpzgV2Caobyte2c80Q2SkO6LNEyUOCPeW RNzDjJeA3d48N6TcdNne0e7SuMAG92VAopdInqMYA5b8n2FIh9z5zi10gK6KANcd karVf9G+xLlgjDnrGJMgRAtIDaSUntgIc3+Q8NXzVSUWYoI5JtEvObcZT/Aa4vJ9 Io/bcQh0G6bW2m2X4D4IQ== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvfedrgedtfedgledvucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmne cujfgurhepkfffgggfvfevfhfhufgjtgfgsehtkeertddtfeejnecuhfhrohhmpefurghm uhgvlhcujfholhhlrghnugcuoehsrghmuhgvlhesshhhohhllhgrnhgurdhorhhgqeenuc ggtffrrghtthgvrhhnpeeitdetieeiffdthfegkedvtdegtdegffelgeeufeeghfffteel vdeiheeitdetvdenucffohhmrghinhepghhithhhuhgsrdgtohhmpdhfrhgvvgguvghskh htohhprdhorhhgpdhkvghrnhgvlhdrohhrghenucevlhhushhtvghrufhiiigvpedtnecu rfgrrhgrmhepmhgrihhlfhhrohhmpehsrghmuhgvlhesshhhohhllhgrnhgurdhorhhg X-ME-Proxy: Feedback-ID: i0ad843c9:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Mon, 24 Oct 2022 01:01:25 -0400 (EDT) Message-ID: Date: Mon, 24 Oct 2022 00:01:24 -0500 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux ppc64le; rv:102.0) Gecko/20100101 Thunderbird/102.3.3 Content-Language: en-US To: Palmer Dabbelt , Conor Dooley Cc: daniel.lezcano@linaro.org, tglx@linutronix.de, aou@eecs.berkeley.edu, atishp@atishpatra.org, dmitriy@oss-tech.org, Paul Walmsley , linux-kernel@vger.kernel.org, linux-riscv@lists.infradead.org References: From: Samuel Holland Subject: Re: [PATCH] clocksource/drivers/riscv: Events are stopped during CPU suspend In-Reply-To: X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20221023_220135_095066_3ED35E06 X-CRM114-Status: GOOD ( 45.42 ) X-BeenThere: linux-riscv@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-riscv" Errors-To: linux-riscv-bounces+linux-riscv=archiver.kernel.org@lists.infradead.org T24gMTAvOS8yMiAxODo0NSwgUGFsbWVyIERhYmJlbHQgd3JvdGU6Cj4gT24gVGh1LCAyOSBTZXAg MjAyMiAxNDo1MDo0NSBQRFQgKC0wNzAwKSwgQ29ub3IgRG9vbGV5IHdyb3RlOgo+PiBPbiBTdW4s IE1heSAwOCwgMjAyMiBhdCAwODoyMToyMVBNIC0wNTAwLCBTYW11ZWwgSG9sbGFuZCB3cm90ZToK Pj4+IFNvbWUgaW1wbGVtZW50YXRpb25zIG9mIHRoZSBTQkkgdGltZSBleHRlbnNpb24gZGVwZW5k IG9uIGhhcnQtbG9jYWwKPj4+IHN0YXRlIChmb3IgZXhhbXBsZSwgQ1NScykgdGhhdCBhcmUgbG9z dCBvciBoYXJkd2FyZSB0aGF0IGlzIHBvd2VyZWQKPj4+IGRvd24gd2hlbiBhIENQVSBpcyBzdXNw ZW5kZWQuIFRvIGJlIHNhZmUsIHRoZSBjbG9ja2V2ZW50cyBkcml2ZXIKPj4+IGNhbm5vdCBhc3N1 bWUgdGhhdCB0aW1lciBJUlFzIHdpbGwgYmUgcmVjZWl2ZWQgZHVyaW5nIENQVSBzdXNwZW5kLgo+ Pj4KPj4+IEZpeGVzOiA2MmIwMTk0MzY4MTQgKCJjbG9ja3NvdXJjZTogbmV3IFJJU0MtViBTQkkg dGltZXIgZHJpdmVyIikKPj4+IFNpZ25lZC1vZmYtYnk6IFNhbXVlbCBIb2xsYW5kIDxzYW11ZWxA c2hvbGxhbmQub3JnPgo+Pj4gLS0tCj4+Pgo+Pj4gwqBkcml2ZXJzL2Nsb2Nrc291cmNlL3RpbWVy LXJpc2N2LmMgfCAyICstCj4+PiDCoDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBk ZWxldGlvbigtKQo+Pj4KPj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2Nsb2Nrc291cmNlL3RpbWVy LXJpc2N2LmMKPj4+IGIvZHJpdmVycy9jbG9ja3NvdXJjZS90aW1lci1yaXNjdi5jCj4+PiBpbmRl eCAxNzY3ZjhiZjIwMTMuLjU5M2Q1YTk1N2I2OSAxMDA2NDQKPj4+IC0tLSBhL2RyaXZlcnMvY2xv Y2tzb3VyY2UvdGltZXItcmlzY3YuYwo+Pj4gKysrIGIvZHJpdmVycy9jbG9ja3NvdXJjZS90aW1l ci1yaXNjdi5jCj4+PiBAQCAtMzQsNyArMzQsNyBAQCBzdGF0aWMgaW50IHJpc2N2X2Nsb2NrX25l eHRfZXZlbnQodW5zaWduZWQgbG9uZyBkZWx0YSwKPj4+IMKgc3RhdGljIHVuc2lnbmVkIGludCBy aXNjdl9jbG9ja19ldmVudF9pcnE7Cj4+PiDCoHN0YXRpYyBERUZJTkVfUEVSX0NQVShzdHJ1Y3Qg Y2xvY2tfZXZlbnRfZGV2aWNlLCByaXNjdl9jbG9ja19ldmVudCkgPSB7Cj4+PiDCoMKgwqDCoCAu bmFtZcKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgPSAicmlzY3ZfdGltZXJfY2xvY2tldmVudCIsCj4+ PiAtwqDCoMKgIC5mZWF0dXJlc8KgwqDCoMKgwqDCoMKgID0gQ0xPQ0tfRVZUX0ZFQVRfT05FU0hP VCwKPj4+ICvCoMKgwqAgLmZlYXR1cmVzwqDCoMKgwqDCoMKgwqAgPSBDTE9DS19FVlRfRkVBVF9P TkVTSE9UIHwgQ0xPQ0tfRVZUX0ZFQVRfQzNTVE9QLAo+IAo+IFRoaXMgaXMgbGlzdGVkIGFzIGJl aW5nIHg4Ni1zcGVjaWZpYyBpbiB0aGUgaGVhZGVyLCBidXQgdGhlcmUncyBhIGhhbmZ1bAo+IG9m IG90aGVyIHBvcnRzIHRoYXQgZW5hYmxlIGl0IGZvciB0aW1lcnMgYXMgd2VsbC7CoCBMb29rcyBs aWtlIGFybSBpcwo+IHNldHRpbmcgdGhpcyBiYXNlZCBvbiBEVCwgd2hpY2ggc2VlbXMgcmVhc29u YWJsZSB0byBtZTogd2UncmUgd29ya2luZwo+IGFyb3VuZCBhIGZpcm13YXJlIGJ1ZywgdGhlcmUg c2hvdWxkIGJlIHNvbWUgd2F5IHRvIHR1cm4gb2ZmIHRoYXQKPiB3b3JrYXJvdW5kIGZvciBmaXJt d2FyZSB0aGF0IGRvZXNuJ3QgaGF2ZSB0aGUgYnVnLiBMb29rcyBsaWtlIEludGVsIGFscmVhZHkK PiB0dXJucyB0aGlzIG9mZiB3aGVuIEFSQVQgaXMgc3VwcG9ydGVkLCB3aGljaCBzZWVtcyB0byBi ZSB0aGUgY2FzZSBmb3IKPiBhbnl0aGluZyBtb2Rlcm4sIHNvIG1heWJlIHdlJ3JlIGp1c3QgdHJp cHBpbmcgdXAgb24gc29tZSB1bnRlc3RlZCBiZWhhdmlvciBoZXJlP8KgCj4gSSdtIG5vdCBzdXJl IGV4YWN0bHkgaG93IHdlIHNob3VsZCBwcm9iZSB0aGlzLCBidXQgaGF2aW5nIGl0IG9ubHkgZW5h YmxlZAo+IHdoZW4gd2UgbmVlZCB0aGUgd29ya2Fyb3VuZCBzZWVtcyBsaWtlIHRoZSByaWdodCB3 YXkgdG8gZ28uCgpJIG9wZW5lZCBhbiBpc3N1ZSBhZ2FpbnN0IHRoZSBTQkkgc3BlYyBhYm91dCB3 aGF0IGV4YWN0bHkgaXQgcmVxdWlyZXMsCmJ1dCBJIGdvdCBubyByZXNwb25zZXM6CgpodHRwczov L2dpdGh1Yi5jb20vcmlzY3Ytbm9uLWlzYS9yaXNjdi1zYmktZG9jL2lzc3Vlcy85OAoKTXkgaW50 ZXJwcmV0YXRpb24gb2YgdGhlIFNCSSBzcGVjaWZpY2F0aW9uIGlzIHRoYXQgaXQgZG9lcyBub3Qg cmVxdWlyZQptYWludGFpbmluZyBhbnkgaGFydC1sb2NhbCBzdGF0ZSBhY3Jvc3MgYSBub24tcmV0 ZW50aXZlIGhhcnQgc3VzcGVuZC4KVW5sZXNzIHRoZSBTQkkgc3BlYyBzYXlzIHRoZSB0aW1lciBt dXN0IGZpcmUgZHVyaW5nL2FmdGVyIHN1c3BlbmQsIHRoZW4KdGhlcmUgaXMgbm8gZmlybXdhcmUg YnVnLgoKPiBUaGF0IHNhaWQsIEknbSBub3QgYWN0dWFsbHkgc3VyZSB0aGlzIEMzU1RPUCBmZWF0 dXJlIGRvZXMgd2hhdCB3ZSB3YW50Cj4gZ2l2ZW4gdGhlIGNvbW1pdCBkZXNjcmlwdGlvbi7CoCBU aGUgdGltZXJzIG9uIFJJU0MtViBhcmUgc29ydCBvZiBpbiB0aGlzCj4gb2RkIG1pZGRsZS1ncm91 bmQgYmV0d2VlbiBiZWluZyBwZXItQ1BVIHRpbWVycyBhbmQgc3lzdGVtIHRpbWVyczogdGhlCj4g dGltZSB0aGV5IHByb2R1Y2UgaXMgZ2xvYmFsIChvciBhdCBsZWFzdCBjbG9zZSwgZHVlIHRvIHRo ZSBtdGltZQo+IHN5bmNocm9uaXphdGlvbiBydWxlcykgYnV0IHRoZSBhY3R1YWwgaW50ZXJydXB0 cyBhcmUgb25seSBvbmUtc2hvdCBhbmQKPiBvbmx5IGxvY2FsLgoKQW5kIGlmIHdlIGNhbm5vdCBy ZWx5IG9uIHRoZSBpbnRlcnJ1cHQgYmVpbmcgZGVsaXZlcmVkLCB3ZSBjYW5ub3QgcmVseQpvbiB0 aGUgU0JJIHRpbWUgZXh0ZW5zaW9uIHRvIHdvcmsgYWNyb3NzIGNwdWlkbGUgZW50cnkuCgo+IEZy b20gcG9raW5nIGFyb3VuZCB0aGUgY29kZSBJIHRoaW5rIHRoaXMganVzdCB0cmllcyB0bwo+IHNl dHVwIGEgcGVyaW9kaWMgYnJvYWRjYXN0IHRpbWVyLCBidXQgc2luY2Ugd2UgdXNlIHNvZnR3YXJl IGZhbGxiYWNrcyB0bwo+IGVtdWxhdGUgdGhvc2Ugd2UnbGwgc3RpbGwgZW5kIHVwIGxvc2luZyB0 aGUgaW50ZXJydXB0cy90aWNrcyBpZiB0aGUgQ1BVCj4gdGhhdCB3YXMgYXNrZWQgZm9yIGFuIGlu dGVycnVwdCBoYXMgZ29uZSB0byBzbGVlcCBhbmQgbG9zdCB0aGF0IHN0YXRlLgoKU28gYnkgZXh0 ZW5zaW9uLCBub24tcmV0ZW50aXZlIGNwdWlkbGUgc3RhdGVzIGNhbm5vdCBiZSB1c2VkIGlmIHRo ZSBTQkkKdGltZXIgaXMgdGhlIG9ubHkgYXZhaWxhYmxlIHRpbWVyLCBzaW5jZSB0aGVyZSBpcyBu byBoYXJkd2FyZSBicm9hZGNhc3QKdGltZXIgdG8gdXNlIGFzIGEgYmFja3VwLgoKPiBJJ20gbm90 IHN1cmUgaWYgSSdtIGp1c3QgbWlzdW5kZXJzdGFuZGluZyB3aGF0J3MgZ29pbmcgb24gaGVyZSwg dGhvdWdoLsKgCj4gSXMgdGhlcmUgc29tZXRoaW5nIHRoYXQgZGVzY3JpYmVzIHRoZSBiZWhhdmlv ciB0aGlzIGZpeGVzIGluIG1vcmUgZGV0YWlsPwoKVGhlIG1vdGl2YXRpbmcgc2NlbmFyaW8gZm9y IHRoaXMgcGF0Y2ggaXMgdGhlIEM5MDYsIHdoZXJlIHRoZSBNVElNRVIgaXMKaW4gdGhlIHNhbWUg cmVzZXQgZG9tYWluIGFzIHRoZSBDUFUsIHNvIHRoZSB0aW1lciBzdGF0ZSBpcyBsb3N0IGR1cmlu Zwpub24tcmV0ZW50aXZlIHN1c3BlbmQuIFdpdGhvdXQgdGhpcyBwYXRjaCwgaWYgcmlzY3ZfdGlt ZXJfY2xvY2tldmVudCBpcwp0aGUgY3VycmVudCBjbG9ja2V2ZW50IGRyaXZlciwgdGhlbiB0aGUg Q1BVIGZhaWxzIHRvIHdha2UgdXAgZnJvbQpzdXNwZW5kLiBIb3dldmVyLCB0aGlzIHNhbWUgcHJv YmxlbSB3b3VsZCBvY2N1ciBvbiBhbnkgQ1BVIHdoZXJlIHRoZQp0aW1lciBvciBpbnRlcnJ1cHQg ZGVsaXZlcnkgc3RvcHMgd29ya2luZyBkdXJpbmcgc3VzcGVuZC4KCj4+PiDCoMKgwqDCoCAucmF0 aW5nwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCA9IDEwMCwKPj4+IMKgwqDCoMKgIC5zZXRfbmV4dF9l dmVudMKgwqDCoMKgwqDCoMKgID0gcmlzY3ZfY2xvY2tfbmV4dF9ldmVudCwKPj4+IMKgfTsKPj4K Pj4gQWZ0ZXIgYSBiaXQgb2YgYSBwYWluZnVsIGJpc2VjdGlvbiAod2l0aCBhIG1pc2RpcmVjdGlv biBpbnRvIHRoZSB2NS4xOQo+PiBwcmludGsgcmV2ZXJ0cyBhbG9uZyB0aGUgd2F5KSBJIGhhdmUg YXJyaXZlZCBhdCB0aGlzIGNvbW1pdCBmb3IgY2F1c2luZwo+PiBtZSBzb21lIGlzc3Vlcy4KPj4K Pj4gSWYgYW4gQVhJIHJlYWQgdG8gdGhlIFBDSWUgY29udHJvbGxlciBvbiBQb2xhckZpcmUgU29D IHRpbWVzIG91dCwgdGhlCj4+IHN5c3RlbSB3aWxsIHN0YWxsLCB3aXRoIGFuIGV4cGVjdGVkOgo+ PiDCoMKgwqDCoCBpbyBzY2hlZHVsZXIgbXEtZGVhZGxpbmUgcmVnaXN0ZXJlZAo+PiDCoMKgwqDC oCBpbyBzY2hlZHVsZXIga3liZXIgcmVnaXN0ZXJlZAo+PiDCoMKgwqDCoCBtaWNyb2NoaXAtcGNp ZSAyMDAwMDAwMDAwLnBjaWU6IGhvc3QgYnJpZGdlIC9zb2MvcGNpZUAyMDAwMDAwMDAwCj4+IHJh bmdlczoKPj4gwqDCoMKgwqAgbWljcm9jaGlwLXBjaWUgMjAwMDAwMDAwMC5wY2llOsKgwqDCoMKg wqAgTUVNCj4+IDB4MjAwODAwMDAwMC4uMHgyMDg3ZmZmZmZmIC0+IDB4MDAwODAwMDAwMAo+PiDC oMKgwqDCoCBtaWNyb2NoaXAtcGNpZSAyMDAwMDAwMDAwLnBjaWU6IHNlYyBlcnJvciBpbiBwY2ll MmF4aSBidWZmZXIKPj4gwqDCoMKgwqAgbWljcm9jaGlwLXBjaWUgMjAwMDAwMDAwMC5wY2llOiBk ZWQgZXJyb3IgaW4gcGNpZTJheGkgYnVmZmVyCj4+IMKgwqDCoMKgIG1pY3JvY2hpcC1wY2llIDIw MDAwMDAwMDAucGNpZTogYXhpIHJlYWQgcmVxdWVzdCBlcnJvcgo+PiDCoMKgwqDCoCBtaWNyb2No aXAtcGNpZSAyMDAwMDAwMDAwLnBjaWU6IGF4aSByZWFkIHRpbWVvdXQKPj4gwqDCoMKgwqAgbWlj cm9jaGlwLXBjaWUgMjAwMDAwMDAwMC5wY2llOiBzZWMgZXJyb3IgaW4gcGNpZTJheGkgYnVmZmVy Cj4+IMKgwqDCoMKgIG1pY3JvY2hpcC1wY2llIDIwMDAwMDAwMDAucGNpZTogZGVkIGVycm9yIGlu IHBjaWUyYXhpIGJ1ZmZlcgo+PiDCoMKgwqDCoCBtaWNyb2NoaXAtcGNpZSAyMDAwMDAwMDAwLnBj aWU6IHNlYyBlcnJvciBpbiBwY2llMmF4aSBidWZmZXIKPj4gwqDCoMKgwqAgbWljcm9jaGlwLXBj aWUgMjAwMDAwMDAwMC5wY2llOiBkZWQgZXJyb3IgaW4gcGNpZTJheGkgYnVmZmVyCj4+IMKgwqDC oMKgIG1pY3JvY2hpcC1wY2llIDIwMDAwMDAwMDAucGNpZTogc2VjIGVycm9yIGluIHBjaWUyYXhp IGJ1ZmZlcgo+PiDCoMKgwqDCoCBtaWNyb2NoaXAtcGNpZSAyMDAwMDAwMDAwLnBjaWU6IGRlZCBl cnJvciBpbiBwY2llMmF4aSBidWZmZXIKPj4gwqDCoMKgwqAgRnJlZWluZyBpbml0cmQgbWVtb3J5 OiA3MzM2Swo+PiDCoMKgwqDCoCBtY19ldmVudF9oYW5kbGVyOiA2Njc0MDIgY2FsbGJhY2tzIHN1 cHByZXNzZWQKPj4gwqDCoMKgwqAgbWljcm9jaGlwLXBjaWUgMjAwMDAwMDAwMC5wY2llOiBzZWMg ZXJyb3IgaW4gcGNpZTJheGkgYnVmZmVyCj4+IMKgwqDCoMKgIG1pY3JvY2hpcC1wY2llIDIwMDAw MDAwMDAucGNpZTogZGVkIGVycm9yIGluIHBjaWUyYXhpIGJ1ZmZlcgo+PiDCoMKgwqDCoCBtaWNy b2NoaXAtcGNpZSAyMDAwMDAwMDAwLnBjaWU6IHNlYyBlcnJvciBpbiBwY2llMmF4aSBidWZmZXIK Pj4gwqDCoMKgwqAgbWljcm9jaGlwLXBjaWUgMjAwMDAwMDAwMC5wY2llOiBkZWQgZXJyb3IgaW4g cGNpZTJheGkgYnVmZmVyCj4+IMKgwqDCoMKgIG1pY3JvY2hpcC1wY2llIDIwMDAwMDAwMDAucGNp ZTogc2VjIGVycm9yIGluIHBjaWUyYXhpIGJ1ZmZlcgo+PiDCoMKgwqDCoCBtaWNyb2NoaXAtcGNp ZSAyMDAwMDAwMDAwLnBjaWU6IGRlZCBlcnJvciBpbiBwY2llMmF4aSBidWZmZXIKPj4gwqDCoMKg wqAgbWljcm9jaGlwLXBjaWUgMjAwMDAwMDAwMC5wY2llOiBzZWMgZXJyb3IgaW4gcGNpZTJheGkg YnVmZmVyCj4+IMKgwqDCoMKgIG1pY3JvY2hpcC1wY2llIDIwMDAwMDAwMDAucGNpZTogZGVkIGVy cm9yIGluIHBjaWUyYXhpIGJ1ZmZlcgo+PiDCoMKgwqDCoCBtaWNyb2NoaXAtcGNpZSAyMDAwMDAw MDAwLnBjaWU6IHNlYyBlcnJvciBpbiBwY2llMmF4aSBidWZmZXIKPj4gwqDCoMKgwqAgbWljcm9j aGlwLXBjaWUgMjAwMDAwMDAwMC5wY2llOiBkZWQgZXJyb3IgaW4gcGNpZTJheGkgYnVmZmVyCj4+ IMKgwqDCoMKgIG1jX2V2ZW50X2hhbmRsZXI6IDY2NjU4OCBjYWxsYmFja3Mgc3VwcHJlc3NlZAo+ PiA8dHJ1bmNhdGVkPgo+PiDCoMKgwqDCoG1pY3JvY2hpcC1wY2llIDIwMDAwMDAwMDAucGNpZTog ZGVkIGVycm9yIGluIHBjaWUyYXhpIGJ1ZmZlcgo+PiDCoMKgwqDCoG1jX2V2ZW50X2hhbmRsZXI6 IDY2Njc0OCBjYWxsYmFja3Mgc3VwcHJlc3NlZAo+PiDCoMKgwqDCoG1pY3JvY2hpcC1wY2llIDIw MDAwMDAwMDAucGNpZTogc2VjIGVycm9yIGluIHBjaWUyYXhpIGJ1ZmZlcgo+PiDCoMKgwqDCoG1p Y3JvY2hpcC1wY2llIDIwMDAwMDAwMDAucGNpZTogZGVkIGVycm9yIGluIHBjaWUyYXhpIGJ1ZmZl cgo+PiDCoMKgwqDCoG1pY3JvY2hpcC1wY2llIDIwMDAwMDAwMDAucGNpZTogc2VjIGVycm9yIGlu IHBjaWUyYXhpIGJ1ZmZlcgo+PiDCoMKgwqDCoG1pY3JvY2hpcC1wY2llIDIwMDAwMDAwMDAucGNp ZTogZGVkIGVycm9yIGluIHBjaWUyYXhpIGJ1ZmZlcgo+PiDCoMKgwqDCoG1pY3JvY2hpcC1wY2ll IDIwMDAwMDAwMDAucGNpZTogc2VjIGVycm9yIGluIHBjaWUyYXhpIGJ1ZmZlcgo+PiDCoMKgwqDC oG1pY3JvY2hpcC1wY2llIDIwMDAwMDAwMDAucGNpZTogZGVkIGVycm9yIGluIHBjaWUyYXhpIGJ1 ZmZlcgo+PiDCoMKgwqDCoG1pY3JvY2hpcC1wY2llIDIwMDAwMDAwMDAucGNpZTogc2VjIGVycm9y IGluIHBjaWUyYXhpIGJ1ZmZlcgo+PiDCoMKgwqDCoG1pY3JvY2hpcC1wY2llIDIwMDAwMDAwMDAu cGNpZTogZGVkIGVycm9yIGluIHBjaWUyYXhpIGJ1ZmZlcgo+PiDCoMKgwqDCoG1pY3JvY2hpcC1w Y2llIDIwMDAwMDAwMDAucGNpZTogc2VjIGVycm9yIGluIHBjaWUyYXhpIGJ1ZmZlcgo+PiDCoMKg wqDCoG1pY3JvY2hpcC1wY2llIDIwMDAwMDAwMDAucGNpZTogZGVkIGVycm9yIGluIHBjaWUyYXhp IGJ1ZmZlcgo+PiDCoMKgwqDCoHJjdTogSU5GTzogcmN1X3ByZWVtcHQgZGV0ZWN0ZWQgc3RhbGxz IG9uIENQVXMvdGFza3M6Cj4+IMKgwqDCoMKgcmN1OsKgwqDCoMKgIDAtLi4uMDogKDEgR1BzIGJl aGluZCkgaWRsZT0xOWYvMS8weDQwMDAwMDAwMDAwMDAwMDIKPj4gc29mdGlycT0zNC8zNiBmcXM9 MjYyNgo+PiDCoMKgwqDCoMKgwqDCoCAoZGV0ZWN0ZWQgYnkgMSwgdD01MjU2IGppZmZpZXMsIGc9 LTExNTEsIHE9MTE0MyBuY3B1cz00KQo+PiDCoMKgwqDCoFRhc2sgZHVtcCBmb3IgQ1BVIDA6Cj4+ IMKgwqDCoMKgdGFzazpzd2FwcGVyLzDCoMKgwqDCoMKgwqAgc3RhdGU6UsKgIHJ1bm5pbmcgdGFz a8KgwqDCoMKgIHN0YWNrOsKgwqDCoCAwIHBpZDrCoMKgwqAKPj4gMSBwcGlkOsKgwqDCoMKgIDAg ZmxhZ3M6MHgwMDAwMDAwOAo+PiDCoMKgwqDCoENhbGwgVHJhY2U6Cj4+IMKgwqDCoMKgbWNfZXZl bnRfaGFuZGxlcjogNjY2NjQ4IGNhbGxiYWNrcyBzdXBwcmVzc2VkCj4+Cj4+IMKgV2l0aCB0aGlz IHBhdGNoIGFwcGxpZWQsIHRoZSBzeXN0ZW0ganVzdCBsb2NrcyB1cCB3aXRob3V0IFJDVSBzdGFs bGluZzoKPj4gwqDCoMKgwqBpbyBzY2hlZHVsZXIgbXEtZGVhZGxpbmUgcmVnaXN0ZXJlZAo+PiDC oMKgwqDCoGlvIHNjaGVkdWxlciBreWJlciByZWdpc3RlcmVkCj4+IMKgwqDCoMKgbWljcm9jaGlw LXBjaWUgMjAwMDAwMDAwMC5wY2llOiBob3N0IGJyaWRnZSAvc29jL3BjaWVAMjAwMDAwMDAwMAo+ PiByYW5nZXM6Cj4+IMKgwqDCoMKgbWljcm9jaGlwLXBjaWUgMjAwMDAwMDAwMC5wY2llOsKgwqDC oMKgwqAgTUVNCj4+IDB4MjAwODAwMDAwMC4uMHgyMDg3ZmZmZmZmIC0+IDB4MDAwODAwMDAwMAo+ PiDCoMKgwqDCoG1pY3JvY2hpcC1wY2llIDIwMDAwMDAwMDAucGNpZTogc2VjIGVycm9yIGluIHBj aWUyYXhpIGJ1ZmZlcgo+PiDCoMKgwqDCoG1pY3JvY2hpcC1wY2llIDIwMDAwMDAwMDAucGNpZTog ZGVkIGVycm9yIGluIHBjaWUyYXhpIGJ1ZmZlcgo+PiDCoMKgwqDCoG1pY3JvY2hpcC1wY2llIDIw MDAwMDAwMDAucGNpZTogYXhpIHJlYWQgcmVxdWVzdCBlcnJvcgo+PiDCoMKgwqDCoG1pY3JvY2hp cC1wY2llIDIwMDAwMDAwMDAucGNpZTogYXhpIHJlYWQgdGltZW91dAo+PiDCoMKgwqDCoG1pY3Jv Y2hpcC1wY2llIDIwMDAwMDAwMDAucGNpZTogc2VjIGVycm9yIGluIHBjaWUyYXhpIGJ1ZmZlcgo+ PiDCoMKgwqDCoG1pY3JvY2hpcC1wY2llIDIwMDAwMDAwMDAucGNpZTogZGVkIGVycm9yIGluIHBj aWUyYXhpIGJ1ZmZlcgo+PiDCoMKgwqDCoG1pY3JvY2hpcC1wY2llIDIwMDAwMDAwMDAucGNpZTog c2VjIGVycm9yIGluIHBjaWUyYXhpIGJ1ZmZlcgo+PiDCoMKgwqDCoG1pY3JvY2hpcC1wY2llIDIw MDAwMDAwMDAucGNpZTogZGVkIGVycm9yIGluIHBjaWUyYXhpIGJ1ZmZlcgo+PiDCoMKgwqDCoG1p Y3JvY2hpcC1wY2llIDIwMDAwMDAwMDAucGNpZTogc2VjIGVycm9yIGluIHBjaWUyYXhpIGJ1ZmZl cgo+PiDCoMKgwqDCoG1pY3JvY2hpcC1wY2llIDIwMDAwMDAwMDAucGNpZTogZGVkIGVycm9yIGlu IHBjaWUyYXhpIGJ1ZmZlcgo+PiDCoMKgwqDCoEZyZWVpbmcgaW5pdHJkIG1lbW9yeTogNzMzMksK Pj4KPj4gQXMgb2YgeWV0LCBJIGhhdmUgbm8gaWRlYSBpZiBSQ1Ugc3RhbGxzIGZvciBvdGhlciBy ZWFzb25zIHdvdWxkIGFsc28gYmUKPj4gbG9zdC4KPiAKPiBTb3JyeSB0aGlzIGJyb2tlIHN0dWZm LsKgIEknbSBub3QgZW50aXJlbHkgc3VyZSB3aHkgdGhpcyB3b3VsZCBtYXNrIFJDVQo+IHN0YWxs cywgYnV0IGl0IHNlZW1zIGxpa2Ugd2UncmUgaGl0dGluZyBzb21lIHByZXR0eSBvZGQgcGF0aHMg aGVyZSBhbmQKPiBJJ20gbm90IHN1cmUgdGhpcyBpcyBleHBlY3RlZCB0byB3b3JrIGF0IGFsbCBm b3IgdXMuCgpJJ20gY29uZnVzZWQgaGVyZS4gVGhlIFJDVSBzdGFsbCBpcyBpdHNlbGYgYSBidWcs IHJpZ2h0PyBBcmUgeW91IHN1cmUKdGhpcyBwYXRjaCBpcyB3cm9uZ2x5IG1hc2tpbmcgdGhlIHN0 YWxsLCBvciBpcyBpdCBwb3NzaWJseSBqdXN0IGF2b2lkaW5nCnNvbWUgYnVnZ3kgY29kZSBhbmQg bm90IGNhdXNpbmcgYSBzdGFsbCBpbiB0aGUgZmlyc3QgcGxhY2U/CgpSZWdhcmRzLApTYW11ZWwK Cj4gSWYgbm9uLXg4NiBhcmNoaXRlY3R1cmVzIGFyZSBtZWFudCB0byBiZSBhYmxlIHRvIHNldAo+ IENMT0NLX0VWVF9GRUFUX0MzU1RPUCwgbWF5YmUgd2Ugc2hvdWxkIGRvY3VtZW50IHdoYXQgaXQn cyBzdXBwb3NlZCB0byBkbwo+IGluIGEgbW9yZSBwbGF0Zm9ybS1hZ25vc3RpYyBmYXNoaW9uPwo+ IAo+PiBUaGFua3MsCj4+IENvbm9yLgo+Pgo+PiBnaXQgYmlzZWN0IHN0YXJ0Cj4+ICMgc3RhdHVz OiB3YWl0aW5nIGZvciBib3RoIGdvb2QgYW5kIGJhZCBjb21taXRzCj4+ICMgZ29vZDogWzc2OTlm N2FhY2YzZWJmZWU1MWM2NzBiNmY3OTZiMjc5N2YwZjc0ODddIFJJU0MtVjogUHJlcGFyZQo+PiBk cm9wcGluZyB3ZWVrIGF0dHJpYnV0ZSBmcm9tIGFyY2hfa2V4ZWNfYXBwbHlfcmVsb2NhdGlvbnNb X2FkZF0KPj4gZ2l0IGJpc2VjdCBnb29kIDc2OTlmN2FhY2YzZWJmZWU1MWM2NzBiNmY3OTZiMjc5 N2YwZjc0ODcKPj4gIyBiYWQ6IFs2M2Q1MTcyZTE0OGJjYzE3NDM5ODA0MDg2MWQ4NjdiYmQyNzcw YmU0XSBIQUNLOiBqb2duZXNzCj4+IGdpdCBiaXNlY3QgYmFkIDYzZDUxNzJlMTQ4YmNjMTc0Mzk4 MDQwODYxZDg2N2JiZDI3NzBiZTQKPj4gIyBnb29kOiBbMjUxOGYyMjZjNjBkOGUwNGQxOGJhNDI5 NTUwMGE1YjBiOGFjNzY1OV0gTWVyZ2UgdGFnCj4+ICdkcm0tbmV4dC0yMDIyLTA1LTI1JyBvZiBn aXQ6Ly9hbm9uZ2l0LmZyZWVkZXNrdG9wLm9yZy9kcm0vZHJtCj4+IGdpdCBiaXNlY3QgZ29vZCAy NTE4ZjIyNmM2MGQ4ZTA0ZDE4YmE0Mjk1NTAwYTViMGI4YWM3NjU5Cj4+ICMgZ29vZDogWzkwN2Ji NTdhYTdiNDcxODcyYWFiMmYyZTgzZTk3MTNhMTQ1NjczZjldIE1lcmdlIHRhZwo+PiAncGluY3Ry bC12NS4xOS0xJyBvZgo+PiBnaXQ6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5l bC9naXQvbGludXN3L2xpbnV4LXBpbmN0cmwKPj4gZ2l0IGJpc2VjdCBnb29kIDkwN2JiNTdhYTdi NDcxODcyYWFiMmYyZTgzZTk3MTNhMTQ1NjczZjkKPj4gIyBnb29kOiBbNGFkNjgwZjA4M2VjMzYw ZTA5OTFjNDUzZTE4YTM4ZWQ5YWU1MDBkN10gTWVyZ2UgdGFnCj4+ICdzdGFnaW5nLTUuMTktcmMx JyBvZgo+PiBnaXQ6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9naXQvZ3Jl Z2toL3N0YWdpbmcKPj4gZ2l0IGJpc2VjdCBnb29kIDRhZDY4MGYwODNlYzM2MGUwOTkxYzQ1M2Ux OGEzOGVkOWFlNTAwZDcKPj4gIyBnb29kOiBbMjNkZjliYTY0YmI5ZTI2Y2ZlZTZiMzRmNWMzZWNl NDlhOGE2MWVlMV0gTWVyZ2UgdGFnCj4+ICdmb3ItNS4xOS9wYXJpc2MtMicgb2YKPj4gZ2l0Oi8v Z2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9saW51eC9rZXJuZWwvZ2l0L2RlbGxlci9wYXJpc2MtbGlu dXgKPj4gZ2l0IGJpc2VjdCBnb29kIDIzZGY5YmE2NGJiOWUyNmNmZWU2YjM0ZjVjM2VjZTQ5YThh NjFlZTEKPj4gIyBiYWQ6IFs3YTY4MDY1ZWI5Y2QxOTRjZjAzZjEzNWM5MjExZWViMmQ1YzRjMGEw XSBNZXJnZSB0YWcKPj4gJ2dwaW8tZml4ZXMtZm9yLXY1LjE5LXJjMicgb2YKPj4gZ2l0Oi8vZ2l0 Lmtlcm5lbC5vcmcvcHViL3NjbS9saW51eC9rZXJuZWwvZ2l0L2JyZ2wvbGludXgKPj4gZ2l0IGJp c2VjdCBiYWQgN2E2ODA2NWViOWNkMTk0Y2YwM2YxMzVjOTIxMWVlYjJkNWM0YzBhMAo+PiAjIGJh ZDogWzFmMTkyYjllOGQ4YTVjNjE5YjMzYTg2OGZiMWFmMDYzYWY2NWNlNWRdIE1lcmdlIHRhZwo+ PiAnZHJtLW1pc2MtZml4ZXMtMjAyMi0wNi0wOScgb2YKPj4gZ2l0Oi8vYW5vbmdpdC5mcmVlZGVz a3RvcC5vcmcvZHJtL2RybS1taXNjIGludG8gZHJtLWZpeGVzCj4+IGdpdCBiaXNlY3QgYmFkIDFm MTkyYjllOGQ4YTVjNjE5YjMzYTg2OGZiMWFmMDYzYWY2NWNlNWQKPj4gIyBnb29kOiBbYjJjOWE4 M2QyNjJhOGZlYjAyMmUyNGU5ZjlhYWRiNjZjYjEwYTdhOF0gTWVyZ2UgdGFnCj4+ICdzY3NpLW1p c2MnIG9mIGdpdDovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vbGludXgva2VybmVsL2dpdC9qZWpi L3Njc2kKPj4gZ2l0IGJpc2VjdCBnb29kIGIyYzlhODNkMjYyYThmZWIwMjJlMjRlOWY5YWFkYjY2 Y2IxMGE3YTgKPj4gIyBiYWQ6IFtlMTdmZWU4OTc2YzNkMmNjZjlhZGQ2ZDZjODkxMmEzN2IwMjVk ODQwXSBNZXJnZSB0YWcKPj4gJ21tLW5vbm1tLXN0YWJsZS0yMDIyLTA2LTA1JyBvZgo+PiBnaXQ6 Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9naXQvYWtwbS9tbQo+PiBnaXQg YmlzZWN0IGJhZCBlMTdmZWU4OTc2YzNkMmNjZjlhZGQ2ZDZjODkxMmEzN2IwMjVkODQwCj4+ICMg YmFkOiBbYzA0OWVjYzUyMzE3MTQ4MWFjY2QyYzgzZjc5ZmZlZWNiZjUzYTkxNV0gTWVyZ2UgdGFn Cj4+ICd0aW1lcnMtY29yZS0yMDIyLTA2LTA1JyBvZgo+PiBnaXQ6Ly9naXQua2VybmVsLm9yZy9w dWIvc2NtL2xpbnV4L2tlcm5lbC9naXQvdGlwL3RpcAo+PiBnaXQgYmlzZWN0IGJhZCBjMDQ5ZWNj NTIzMTcxNDgxYWNjZDJjODNmNzlmZmVlY2JmNTNhOTE1Cj4+ICMgYmFkOiBbOWMwNGE4ZmYwM2Rl ZjRkZjNmODEyMTlmZmJlMWVjOWI0NGZmNTM0OF0KPj4gY2xvY2tzb3VyY2UvZHJpdmVycy9veG5h cy1ycHM6IEZpeCBpcnFfb2ZfcGFyc2VfYW5kX21hcCgpIHJldHVybiB2YWx1ZQo+PiBnaXQgYmlz ZWN0IGJhZCA5YzA0YThmZjAzZGVmNGRmM2Y4MTIxOWZmYmUxZWM5YjQ0ZmY1MzQ4Cj4+ICMgYmFk OiBbNzE2MGQ5YzRjY2U5NDYxMmQ1ZjQyYTVkYjM5MmNkNjA2YTM4NzM3YV0KPj4gY2xvY2tzb3Vy Y2UvZHJpdmVycy9hcm1hZGEtMzcwLXhwOiBDb252ZXJ0IHRvIFNQRFggaWRlbnRpZmllcgo+PiBn aXQgYmlzZWN0IGJhZCA3MTYwZDljNGNjZTk0NjEyZDVmNDJhNWRiMzkyY2Q2MDZhMzg3MzdhCj4+ ICMgYmFkOiBbYTk4Mzk5Y2JjMWUwNWY3Yjk3NzQxOWYwMzkwNTUwMWQ1NjZjZjU0ZV0KPj4gY2xv Y2tzb3VyY2UvZHJpdmVycy9zcDgwNDogQXZvaWQgZXJyb3Igb24gbXVsdGlwbGUgaW5zdGFuY2Vz Cj4+IGdpdCBiaXNlY3QgYmFkIGE5ODM5OWNiYzFlMDVmN2I5Nzc0MTlmMDM5MDU1MDFkNTY2Y2Y1 NGUKPj4gIyBnb29kOiBbNDE5MjljOWY2MjhiOTk5MGQzM2EyMDBjNTRiYjBjOTE5ZTA4OWFhOF0K Pj4gY2xvY2tzb3VyY2UvZHJpdmVycy9peHA0eHg6IERyb3AgYm9hcmRmaWxlIHByb2JlIHBhdGgK Pj4gZ2l0IGJpc2VjdCBnb29kIDQxOTI5YzlmNjI4Yjk5OTBkMzNhMjAwYzU0YmIwYzkxOWUwODlh YTgKPj4gIyBiYWQ6IFsyMzJjY2FjMWJkOWI1YmZlNzM4OTVmNTI3YzA4NjIzZTdmYTA3NTJkXQo+ PiBjbG9ja3NvdXJjZS9kcml2ZXJzL3Jpc2N2OiBFdmVudHMgYXJlIHN0b3BwZWQgZHVyaW5nIENQ VSBzdXNwZW5kCj4+IGdpdCBiaXNlY3QgYmFkIDIzMmNjYWMxYmQ5YjViZmU3Mzg5NWY1MjdjMDg2 MjNlN2ZhMDc1MmQKPj4gIyBmaXJzdCBiYWQgY29tbWl0OiBbMjMyY2NhYzFiZDliNWJmZTczODk1 ZjUyN2MwODYyM2U3ZmEwNzUyZF0KPj4gY2xvY2tzb3VyY2UvZHJpdmVycy9yaXNjdjogRXZlbnRz IGFyZSBzdG9wcGVkIGR1cmluZyBDUFUgc3VzcGVuZAoKCl9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fCmxpbnV4LXJpc2N2IG1haWxpbmcgbGlzdApsaW51eC1y aXNjdkBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxt YW4vbGlzdGluZm8vbGludXgtcmlzY3YK