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 16024C433EF for ; Thu, 14 Apr 2022 01:21:41 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S239416AbiDNBX7 (ORCPT ); Wed, 13 Apr 2022 21:23:59 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:55614 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236605AbiDNBX6 (ORCPT ); Wed, 13 Apr 2022 21:23:58 -0400 Received: from desiato.infradead.org (desiato.infradead.org [IPv6:2001:8b0:10b:1:d65d:64ff:fe57:4e05]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D5427522E7; Wed, 13 Apr 2022 18:21:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=desiato.20200630; h=Content-Transfer-Encoding:Content-Type :In-Reply-To:From:References:Cc:To:Subject:MIME-Version:Date:Message-ID: Sender:Reply-To:Content-ID:Content-Description; bh=eO6g3QJQoh9UepWfm4OKwawAGep6aOU9+cq2xVm+3vg=; b=SPONtgEmQitAtBRkT6U+Opulqj iGTs+IXxV3jha+HGHodDBTF5C0FhWNzu1gQEUJY5+lXdzP5N1NtCLVcHoPFuKSNkNUzfrSDq7izzC cyzgpN7QQF3ko097QhpvB1w4/+gvllHQB5I+aE2AGsaH9CpHwBz46YNz0/LB2jEX6JUIAbGe2lfaz xhP6a69Hwp0cshjsIl/9+38GLlyNnpyJ7TSRZeUGN0NifBRy4sX/E9KOMX+h5s4DSTH2wEA1ebjao P/QRREnPL5sPzYfFIUt82ZeiapFgtj1wHTj9/Hr6wQ3MtW3L+ucURLW9v+c+jvE+qqghLr+gJQm7f PHmjToXg==; Received: from [2601:1c0:6280:3f0::aa0b] by desiato.infradead.org with esmtpsa (Exim 4.94.2 #2 (Red Hat Linux)) id 1neoAW-004qcD-1n; Thu, 14 Apr 2022 01:21:09 +0000 Message-ID: <98d190a3-b3f3-0fa5-be0f-8d602ffe7aea@infradead.org> Date: Wed, 13 Apr 2022 18:20:58 -0700 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.8.0 Subject: Re: [PATCH RESEND 1/1] lib/Kconfig: remove DEBUG_PER_CPU_MAPS dependency for CPUMASK_OFFSTACK Content-Language: en-US To: Libo Chen , Arnd Bergmann Cc: gregkh , Masahiro Yamada , Thomas Gleixner , Peter Zijlstra , Ingo Molnar , Vlastimil Babka , Andrew Morton , Linux Kernel Mailing List , Linux Kbuild mailing list , Linux ARM , linux-arch References: <20220412231508.32629-1-libo.chen@oracle.com> <20220412231508.32629-2-libo.chen@oracle.com> <157cb46a-d134-2e72-4a65-14e378dd2b8e@oracle.com> <26855467-107d-4ba1-4f32-2afd5918d5b7@infradead.org> <4c6b3445-78b2-090f-c7c9-291d49c45019@infradead.org> <506db9a9-47ff-658a-a821-27315949e8c3@oracle.com> <8eb6f58a-2621-0977-1b67-b2c58e4d5fba@infradead.org> From: Randy Dunlap 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 Hi, On 4/13/22 14:50, Libo Chen wrote: > > > On 4/13/22 13:52, Arnd Bergmann wrote: >> On Wed, Apr 13, 2022 at 9:28 PM Libo Chen wrote: >>> On 4/13/22 08:41, Randy Dunlap wrote: >>>> On 4/12/22 23:56, Libo Chen wrote: >>>>>> --- a/lib/Kconfig >>>>>> +++ b/lib/Kconfig >>>>>> @@ -511,7 +511,8 @@ config CHECK_SIGNATURE >>>>>>         bool >>>>>>       config CPUMASK_OFFSTACK >>>>>> -    bool "Force CPU masks off stack" if DEBUG_PER_CPU_MAPS >>>>>> +    bool "Force CPU masks off stack" >>>>>> +    depends on DEBUG_PER_CPU_MAPS >>>>> This forces every arch to enable DEBUG_PER_CPU_MAPS if they want to enable CPUMASK_OFFSTACK, it's even stronger than "if". My whole argument is CPUMASK_OFFSTACK should be enable/disabled independent of DEBUG_PER_CPU_MASK >>>>>>         help >>>>>>           Use dynamic allocation for cpumask_var_t, instead of putting >>>>>>           them on the stack.  This is a bit more expensive, but avoids >>>>>> >>>>>> >>>>>> As I said earlier, the "if" on the "bool" line just controls the prompt message. >>>>>> This patch make CPUMASK_OFFSTACK require DEBUG_PER_CPU_MAPS -- which might be overkill. >>>>>> >>>>> Okay I understand now "if" on the "boot" is not a dependency and it only controls the prompt message, then the question is why we cannot enable CPUMASK_OFFSTACK without DEBUG_PER_CPU_MAPS if it only controls prompt message? Is it not the behavior we expect? >>>> Yes, it is. I don't know that the problem is... >>> Masahiro explained that CPUMASK_OFFSTACK can only be configured by >>> options not users if DEBUG_PER_CPU_MASK is not enabled. This doesn't >>> seem to be what we want. >> I think the correct way to do it is to follow x86 and powerpc, and tying >> CPUMASK_OFFSTACK to "large" values of CONFIG_NR_CPUS. Sure. Just FTR, I was just trying to see if an arch (arm64) would build OK or not when CPUMASK_OFFSTACK was enabled. and it does. My patch wasn't meant to have a very long life. >> For smaller values of NR_CPUS, the onstack masks are obviously >> cheaper, we just need to decide what the cut-off point is. > I agree. It appears enabling CPUMASK_OFFSTACK breaks kernel builds on some architectures such as parisc and nios2 as reported by kernel test robot. Maybe it makes sense to use DEBUG_PER_CPU_MAPS as some kind of guard on CPUMASK_OFFSTACK. >> In x86, the onstack masks can be selected for normal SMP builds with >> up to 512 CPUs, while CONFIG_MAXSMP=y raises the limit to 8192 >> CPUs while selecting CPUMASK_OFFSTACK. >> PowerPC does it the other way round, selecting CPUMASK_OFFSTACK >> implicitly whenever NR_CPUS is set to 8192 or more. >> >> I think we can easily do the same as powerpc on arm64. With the > I am leaning more towards x86's way because even NR_CPUS=160 is too expensive for 4-core arm64 VMs according to apachebench. I highly doubt that there is a good cut-off point to make everybody happy (or not unhappy). >> ApacheBench test you cite in the patch description, what is the >> value of NR_CPUS at which you start seeing a noticeable >> benefit for offstack masks? Can you do the same test for >> NR_CPUS=1024 or 2048? > As mentioned above, a good cut-off point moves depends on the actual number of CPUs. But yeah I can do the same test for 1024 or even smaller NR_CPUs values on the same 64-core arm64 VM setup. -- ~Randy 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 4D163C433EF for ; Thu, 14 Apr 2022 01:23:17 +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: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=r0i5HT9LtChdCB+3Ur4DgsAik8sYLy976HNlyhmUSZU=; b=WUZTwlitCZ6AD+ WisZn5cftO9TfI2Yy4/p1AlfJtmI2CQKDYMhJJkhALBoNGkzoYEo2vUijIF8OH3Gr4/Qqklms6i/R QSD7Ze4L6cbbq1zC8jFJ4yFMDOl+WuxoC+DGErNx5FGEmlSlqV8r+5OSJ2/F7X5XFVClZAcaGdDQx KKDy618pKPMAmgtZCpcQKHjUhBOtnq7LnaIhfn1/1eHjY7MCdc5EHebTuiQEkDkveL8oLVq/cCcFR 35FSVaqWBiOtYPR99s/L83Q2xaaWn4utgrU1UBYa/X6AUPovodj5LtbsPEzHcgRH7rwnAdzFbMnng gU0CGtMmKc7cG9VDlQAA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1neoAh-003Gbc-EY; Thu, 14 Apr 2022 01:21:19 +0000 Received: from desiato.infradead.org ([2001:8b0:10b:1:d65d:64ff:fe57:4e05]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1neoAg-003GbI-G2 for linux-arm-kernel@bombadil.infradead.org; Thu, 14 Apr 2022 01:21:18 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=desiato.20200630; h=Content-Transfer-Encoding:Content-Type :In-Reply-To:From:References:Cc:To:Subject:MIME-Version:Date:Message-ID: Sender:Reply-To:Content-ID:Content-Description; bh=eO6g3QJQoh9UepWfm4OKwawAGep6aOU9+cq2xVm+3vg=; b=SPONtgEmQitAtBRkT6U+Opulqj iGTs+IXxV3jha+HGHodDBTF5C0FhWNzu1gQEUJY5+lXdzP5N1NtCLVcHoPFuKSNkNUzfrSDq7izzC cyzgpN7QQF3ko097QhpvB1w4/+gvllHQB5I+aE2AGsaH9CpHwBz46YNz0/LB2jEX6JUIAbGe2lfaz xhP6a69Hwp0cshjsIl/9+38GLlyNnpyJ7TSRZeUGN0NifBRy4sX/E9KOMX+h5s4DSTH2wEA1ebjao P/QRREnPL5sPzYfFIUt82ZeiapFgtj1wHTj9/Hr6wQ3MtW3L+ucURLW9v+c+jvE+qqghLr+gJQm7f PHmjToXg==; Received: from [2601:1c0:6280:3f0::aa0b] by desiato.infradead.org with esmtpsa (Exim 4.94.2 #2 (Red Hat Linux)) id 1neoAW-004qcD-1n; Thu, 14 Apr 2022 01:21:09 +0000 Message-ID: <98d190a3-b3f3-0fa5-be0f-8d602ffe7aea@infradead.org> Date: Wed, 13 Apr 2022 18:20:58 -0700 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.8.0 Subject: Re: [PATCH RESEND 1/1] lib/Kconfig: remove DEBUG_PER_CPU_MAPS dependency for CPUMASK_OFFSTACK Content-Language: en-US To: Libo Chen , Arnd Bergmann Cc: gregkh , Masahiro Yamada , Thomas Gleixner , Peter Zijlstra , Ingo Molnar , Vlastimil Babka , Andrew Morton , Linux Kernel Mailing List , Linux Kbuild mailing list , Linux ARM , linux-arch References: <20220412231508.32629-1-libo.chen@oracle.com> <20220412231508.32629-2-libo.chen@oracle.com> <157cb46a-d134-2e72-4a65-14e378dd2b8e@oracle.com> <26855467-107d-4ba1-4f32-2afd5918d5b7@infradead.org> <4c6b3445-78b2-090f-c7c9-291d49c45019@infradead.org> <506db9a9-47ff-658a-a821-27315949e8c3@oracle.com> <8eb6f58a-2621-0977-1b67-b2c58e4d5fba@infradead.org> From: Randy Dunlap In-Reply-To: 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 SGksCgpPbiA0LzEzLzIyIDE0OjUwLCBMaWJvIENoZW4gd3JvdGU6Cj4gCj4gCj4gT24gNC8xMy8y MiAxMzo1MiwgQXJuZCBCZXJnbWFubiB3cm90ZToKPj4gT24gV2VkLCBBcHIgMTMsIDIwMjIgYXQg OToyOCBQTSBMaWJvIENoZW4gPGxpYm8uY2hlbkBvcmFjbGUuY29tPiB3cm90ZToKPj4+IE9uIDQv MTMvMjIgMDg6NDEsIFJhbmR5IER1bmxhcCB3cm90ZToKPj4+PiBPbiA0LzEyLzIyIDIzOjU2LCBM aWJvIENoZW4gd3JvdGU6Cj4+Pj4+PiAtLS0gYS9saWIvS2NvbmZpZwo+Pj4+Pj4gKysrIGIvbGli L0tjb25maWcKPj4+Pj4+IEBAIC01MTEsNyArNTExLDggQEAgY29uZmlnIENIRUNLX1NJR05BVFVS RQo+Pj4+Pj4gwqDCoMKgwqDCoMKgwqAgYm9vbAo+Pj4+Pj4gwqDCoMKgwqDCoCBjb25maWcgQ1BV TUFTS19PRkZTVEFDSwo+Pj4+Pj4gLcKgwqDCoCBib29sICJGb3JjZSBDUFUgbWFza3Mgb2ZmIHN0 YWNrIiBpZiBERUJVR19QRVJfQ1BVX01BUFMKPj4+Pj4+ICvCoMKgwqAgYm9vbCAiRm9yY2UgQ1BV IG1hc2tzIG9mZiBzdGFjayIKPj4+Pj4+ICvCoMKgwqAgZGVwZW5kcyBvbiBERUJVR19QRVJfQ1BV X01BUFMKPj4+Pj4gVGhpcyBmb3JjZXMgZXZlcnkgYXJjaCB0byBlbmFibGUgREVCVUdfUEVSX0NQ VV9NQVBTIGlmIHRoZXkgd2FudCB0byBlbmFibGUgQ1BVTUFTS19PRkZTVEFDSywgaXQncyBldmVu IHN0cm9uZ2VyIHRoYW4gImlmIi4gTXkgd2hvbGUgYXJndW1lbnQgaXMgQ1BVTUFTS19PRkZTVEFD SyBzaG91bGQgYmUgZW5hYmxlL2Rpc2FibGVkIGluZGVwZW5kZW50IG9mIERFQlVHX1BFUl9DUFVf TUFTSwo+Pj4+Pj4gwqDCoMKgwqDCoMKgwqAgaGVscAo+Pj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKg IFVzZSBkeW5hbWljIGFsbG9jYXRpb24gZm9yIGNwdW1hc2tfdmFyX3QsIGluc3RlYWQgb2YgcHV0 dGluZwo+Pj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgIHRoZW0gb24gdGhlIHN0YWNrLsKgIFRoaXMg aXMgYSBiaXQgbW9yZSBleHBlbnNpdmUsIGJ1dCBhdm9pZHMKPj4+Pj4+Cj4+Pj4+Pgo+Pj4+Pj4g QXMgSSBzYWlkIGVhcmxpZXIsIHRoZSAiaWYiIG9uIHRoZSAiYm9vbCIgbGluZSBqdXN0IGNvbnRy b2xzIHRoZSBwcm9tcHQgbWVzc2FnZS4KPj4+Pj4+IFRoaXMgcGF0Y2ggbWFrZSBDUFVNQVNLX09G RlNUQUNLIHJlcXVpcmUgREVCVUdfUEVSX0NQVV9NQVBTIC0tIHdoaWNoIG1pZ2h0IGJlIG92ZXJr aWxsLgo+Pj4+Pj4KPj4+Pj4gT2theSBJIHVuZGVyc3RhbmQgbm93ICJpZiIgb24gdGhlICJib290 IiBpcyBub3QgYSBkZXBlbmRlbmN5IGFuZCBpdCBvbmx5IGNvbnRyb2xzIHRoZSBwcm9tcHQgbWVz c2FnZSwgdGhlbiB0aGUgcXVlc3Rpb24gaXMgd2h5IHdlIGNhbm5vdCBlbmFibGUgQ1BVTUFTS19P RkZTVEFDSyB3aXRob3V0IERFQlVHX1BFUl9DUFVfTUFQUyBpZiBpdCBvbmx5IGNvbnRyb2xzIHBy b21wdCBtZXNzYWdlPyBJcyBpdCBub3QgdGhlIGJlaGF2aW9yIHdlIGV4cGVjdD8KPj4+PiBZZXMs IGl0IGlzLiBJIGRvbid0IGtub3cgdGhhdCB0aGUgcHJvYmxlbSBpcy4uLgo+Pj4gTWFzYWhpcm8g ZXhwbGFpbmVkIHRoYXQgQ1BVTUFTS19PRkZTVEFDSyBjYW4gb25seSBiZSBjb25maWd1cmVkIGJ5 Cj4+PiBvcHRpb25zIG5vdCB1c2VycyBpZiBERUJVR19QRVJfQ1BVX01BU0sgaXMgbm90IGVuYWJs ZWQuIFRoaXMgZG9lc24ndAo+Pj4gc2VlbSB0byBiZSB3aGF0IHdlIHdhbnQuCj4+IEkgdGhpbmsg dGhlIGNvcnJlY3Qgd2F5IHRvIGRvIGl0IGlzIHRvIGZvbGxvdyB4ODYgYW5kIHBvd2VycGMsIGFu ZCB0eWluZwo+PiBDUFVNQVNLX09GRlNUQUNLIHRvICJsYXJnZSIgdmFsdWVzIG9mIENPTkZJR19O Ul9DUFVTLgoKU3VyZS4gSnVzdCBGVFIsIEkgd2FzIGp1c3QgdHJ5aW5nIHRvIHNlZSBpZiBhbiBh cmNoIChhcm02NCkgd291bGQgYnVpbGQgT0sgb3Igbm90CndoZW4gQ1BVTUFTS19PRkZTVEFDSyB3 YXMgZW5hYmxlZC4gYW5kIGl0IGRvZXMuCk15IHBhdGNoIHdhc24ndCBtZWFudCB0byBoYXZlIGEg dmVyeSBsb25nIGxpZmUuCgo+PiBGb3Igc21hbGxlciB2YWx1ZXMgb2YgTlJfQ1BVUywgdGhlIG9u c3RhY2sgbWFza3MgYXJlIG9idmlvdXNseQo+PiBjaGVhcGVyLCB3ZSBqdXN0IG5lZWQgdG8gZGVj aWRlIHdoYXQgdGhlIGN1dC1vZmYgcG9pbnQgaXMuCj4gSSBhZ3JlZS4gSXQgYXBwZWFycyBlbmFi bGluZyBDUFVNQVNLX09GRlNUQUNLIGJyZWFrcyBrZXJuZWwgYnVpbGRzIG9uIHNvbWUgYXJjaGl0 ZWN0dXJlcyBzdWNoIGFzIHBhcmlzYyBhbmQgbmlvczIgYXMgcmVwb3J0ZWQgYnkga2VybmVsIHRl c3Qgcm9ib3QuIE1heWJlIGl0IG1ha2VzIHNlbnNlIHRvIHVzZSBERUJVR19QRVJfQ1BVX01BUFMg YXMgc29tZSBraW5kIG9mIGd1YXJkIG9uIENQVU1BU0tfT0ZGU1RBQ0suCj4+IEluIHg4NiwgdGhl IG9uc3RhY2sgbWFza3MgY2FuIGJlIHNlbGVjdGVkIGZvciBub3JtYWwgU01QIGJ1aWxkcyB3aXRo Cj4+IHVwIHRvIDUxMiBDUFVzLCB3aGlsZSBDT05GSUdfTUFYU01QPXkgcmFpc2VzIHRoZSBsaW1p dCB0byA4MTkyCj4+IENQVXMgd2hpbGUgc2VsZWN0aW5nIENQVU1BU0tfT0ZGU1RBQ0suCj4+IFBv d2VyUEMgZG9lcyBpdCB0aGUgb3RoZXIgd2F5IHJvdW5kLCBzZWxlY3RpbmcgQ1BVTUFTS19PRkZT VEFDSwo+PiBpbXBsaWNpdGx5IHdoZW5ldmVyIE5SX0NQVVMgaXMgc2V0IHRvIDgxOTIgb3IgbW9y ZS4KPj4KPj4gSSB0aGluayB3ZSBjYW4gZWFzaWx5IGRvIHRoZSBzYW1lIGFzIHBvd2VycGMgb24g YXJtNjQuIFdpdGggdGhlCj4gSSBhbSBsZWFuaW5nIG1vcmUgdG93YXJkcyB4ODYncyB3YXkgYmVj YXVzZSBldmVuIE5SX0NQVVM9MTYwIGlzIHRvbyBleHBlbnNpdmUgZm9yIDQtY29yZSBhcm02NCBW TXMgYWNjb3JkaW5nIHRvIGFwYWNoZWJlbmNoLiBJIGhpZ2hseSBkb3VidCB0aGF0IHRoZXJlIGlz IGEgZ29vZCBjdXQtb2ZmIHBvaW50IHRvIG1ha2UgZXZlcnlib2R5IGhhcHB5IChvciBub3QgdW5o YXBweSkuCj4+IEFwYWNoZUJlbmNoIHRlc3QgeW91IGNpdGUgaW4gdGhlIHBhdGNoIGRlc2NyaXB0 aW9uLCB3aGF0IGlzIHRoZQo+PiB2YWx1ZSBvZiBOUl9DUFVTIGF0IHdoaWNoIHlvdSBzdGFydCBz ZWVpbmcgYSBub3RpY2VhYmxlCj4+IGJlbmVmaXQgZm9yIG9mZnN0YWNrIG1hc2tzPyBDYW4geW91 IGRvIHRoZSBzYW1lIHRlc3QgZm9yCj4+IE5SX0NQVVM9MTAyNCBvciAyMDQ4Pwo+IEFzIG1lbnRp b25lZCBhYm92ZSwgYSBnb29kIGN1dC1vZmYgcG9pbnQgbW92ZXMgZGVwZW5kcyBvbiB0aGUgYWN0 dWFsIG51bWJlciBvZiBDUFVzLiBCdXQgeWVhaCBJIGNhbiBkbyB0aGUgc2FtZSB0ZXN0IGZvciAx MDI0IG9yIGV2ZW4gc21hbGxlciBOUl9DUFVzIHZhbHVlcyBvbiB0aGUgc2FtZSA2NC1jb3JlIGFy bTY0IFZNIHNldHVwLgoKCi0tIAp+UmFuZHkKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fCmxpbnV4LWFybS1rZXJuZWwgbWFpbGluZyBsaXN0CmxpbnV4LWFy bS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9t YWlsbWFuL2xpc3RpbmZvL2xpbnV4LWFybS1rZXJuZWwK