From mboxrd@z Thu Jan 1 00:00:00 1970 From: Dave Martin Subject: Re: [PATCH 10/14] prctl.2: Add PR_SPEC_INDIRECT_BRANCH for SPECULATION_CTRL prctls Date: Wed, 13 May 2020 14:53:24 +0100 Message-ID: <20200513135323.GO21779@arm.com> References: <1589301419-24459-1-git-send-email-Dave.Martin@arm.com> <1589301419-24459-11-git-send-email-Dave.Martin@arm.com> <20200513114915.GL21779@arm.com> <604879eb-1c7e-d08b-a6b8-165e4259b60c@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Return-path: Content-Disposition: inline In-Reply-To: <604879eb-1c7e-d08b-a6b8-165e4259b60c-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> Sender: linux-man-owner-u79uwXL29TY76Z2rM5mHXA@public.gmane.org To: "Michael Kerrisk (man-pages)" Cc: linux-man-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linux-arch-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org, Tim Chen , Thomas Gleixner List-Id: linux-arch.vger.kernel.org On Wed, May 13, 2020 at 02:06:38PM +0200, Michael Kerrisk (man-pages) wrote: > On 5/13/20 1:49 PM, Dave Martin wrote: > > On Wed, May 13, 2020 at 01:21:12PM +0200, Michael Kerrisk (man-pages) wrote: > >> Hello Dave, > >> > >> On 5/12/20 6:36 PM, Dave Martin wrote: > >>> Add the PR_SPEC_INDIRECT_BRANCH "misfeature" added in Linux 4.20 > >>> for PR_SET_SPECULATION_CTRL and PR_GET_SPECULATION_CTRL. > >>> > >>> Signed-off-by: Dave Martin > >>> Cc: Tim Chen > >>> Cc: Thomas Gleixner > >> > >> Thanks. Patch applied, but not yet pushed while I wait to see if any > >> Review/Ack arrives. > >> > >> Also, could you please check the tweaks I note below. > >> > >>> --- > >>> man2/prctl.2 | 24 ++++++++++++++++++------ > >>> 1 file changed, 18 insertions(+), 6 deletions(-) > >>> > >>> diff --git a/man2/prctl.2 b/man2/prctl.2 > >>> index e8eaf95..66417cf 100644 > >>> --- a/man2/prctl.2 > >>> +++ b/man2/prctl.2 > >>> @@ -1213,11 +1213,20 @@ arguments must be specified as 0; otherwise the call fails with the error > >>> .\" commit 356e4bfff2c5489e016fdb925adbf12a1e3950ee > >>> Sets the state of the speculation misfeature specified in > >>> .IR arg2 . > >>> -Currently, the only permitted value for this argument is > >>> +Currently, this argument must be one of: > >>> +.RS > >>> +.TP > >>> .B PR_SPEC_STORE_BYPASS > >>> -(otherwise the call fails with the error > >>> +speculative store bypass control, or > >> > >> s/speculative/enable speculative/ > >> > >>> +.\" commit 9137bb27e60e554dab694eafa4cca241fa3a694f > >>> +.TP > >>> +.BR PR_SPEC_INDIRECT_BRANCH " (since Linux 4.20)" > >>> +indirect branch speculation control. > >> > >> s/indirect/enable indirect/ > > > > That doesn't seem quite right. > > My goof, not looking at the bigger context of the patch. > > > > > arg2 just identifies what behaviour to configure. > > It's arg3 that says whether to disable / enable it or whatever. > > > > > > While editing this I did wonder whether the "control" was helpful. > > Maybe just dropping that word from these entries would help. > > Okay I tried to fix things, and made also some other edits. > How does the following look to you? > > PR_SET_SPECULATION_CTRL (since Linux 4.17) > Sets the state of the speculation misfeature specified in > arg2. The speculation-misfeature settings are per-thread > attributes. > > Currently, arg2 must be one of: > > PR_SPEC_STORE_BYPASS > Set the state of the speculative store bypass mis‐ > feature. > > PR_SPEC_INDIRECT_BRANCH (since Linux 4.20) > Set the state of the indirect branch speculation > misfeature. > > If arg2 does not have one of the above values, then the > call fails with the error ENODEV. > > The arg3 argument is used to hand in the control value, > which is one of the following: > > ... Look OK to me. I thought it sounded odd to "set the state" of a silicon bug, but that was a bogus concern. This isn't about bugs, but intentional, often configurable behaviours in the silicon that happen to have harmful side effects. It could be more terse to say "configure" instead of "set the state of", but either way works for me. Cheers ---Dave From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from foss.arm.com ([217.140.110.172]:47144 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727792AbgEMNx1 (ORCPT ); Wed, 13 May 2020 09:53:27 -0400 Date: Wed, 13 May 2020 14:53:24 +0100 From: Dave Martin Subject: Re: [PATCH 10/14] prctl.2: Add PR_SPEC_INDIRECT_BRANCH for SPECULATION_CTRL prctls Message-ID: <20200513135323.GO21779@arm.com> References: <1589301419-24459-1-git-send-email-Dave.Martin@arm.com> <1589301419-24459-11-git-send-email-Dave.Martin@arm.com> <20200513114915.GL21779@arm.com> <604879eb-1c7e-d08b-a6b8-165e4259b60c@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <604879eb-1c7e-d08b-a6b8-165e4259b60c@gmail.com> Sender: linux-arch-owner@vger.kernel.org List-ID: To: "Michael Kerrisk (man-pages)" Cc: linux-man@vger.kernel.org, linux-arch@vger.kernel.org, linux-arm-kernel@lists.infradead.org, Tim Chen , Thomas Gleixner Message-ID: <20200513135324.V9lreSdq8nLbQjRosktFxvZhhbK1_PKQRC5Z-uHcV1I@z> On Wed, May 13, 2020 at 02:06:38PM +0200, Michael Kerrisk (man-pages) wrote: > On 5/13/20 1:49 PM, Dave Martin wrote: > > On Wed, May 13, 2020 at 01:21:12PM +0200, Michael Kerrisk (man-pages) wrote: > >> Hello Dave, > >> > >> On 5/12/20 6:36 PM, Dave Martin wrote: > >>> Add the PR_SPEC_INDIRECT_BRANCH "misfeature" added in Linux 4.20 > >>> for PR_SET_SPECULATION_CTRL and PR_GET_SPECULATION_CTRL. > >>> > >>> Signed-off-by: Dave Martin > >>> Cc: Tim Chen > >>> Cc: Thomas Gleixner > >> > >> Thanks. Patch applied, but not yet pushed while I wait to see if any > >> Review/Ack arrives. > >> > >> Also, could you please check the tweaks I note below. > >> > >>> --- > >>> man2/prctl.2 | 24 ++++++++++++++++++------ > >>> 1 file changed, 18 insertions(+), 6 deletions(-) > >>> > >>> diff --git a/man2/prctl.2 b/man2/prctl.2 > >>> index e8eaf95..66417cf 100644 > >>> --- a/man2/prctl.2 > >>> +++ b/man2/prctl.2 > >>> @@ -1213,11 +1213,20 @@ arguments must be specified as 0; otherwise the call fails with the error > >>> .\" commit 356e4bfff2c5489e016fdb925adbf12a1e3950ee > >>> Sets the state of the speculation misfeature specified in > >>> .IR arg2 . > >>> -Currently, the only permitted value for this argument is > >>> +Currently, this argument must be one of: > >>> +.RS > >>> +.TP > >>> .B PR_SPEC_STORE_BYPASS > >>> -(otherwise the call fails with the error > >>> +speculative store bypass control, or > >> > >> s/speculative/enable speculative/ > >> > >>> +.\" commit 9137bb27e60e554dab694eafa4cca241fa3a694f > >>> +.TP > >>> +.BR PR_SPEC_INDIRECT_BRANCH " (since Linux 4.20)" > >>> +indirect branch speculation control. > >> > >> s/indirect/enable indirect/ > > > > That doesn't seem quite right. > > My goof, not looking at the bigger context of the patch. > > > > > arg2 just identifies what behaviour to configure. > > It's arg3 that says whether to disable / enable it or whatever. > > > > > > While editing this I did wonder whether the "control" was helpful. > > Maybe just dropping that word from these entries would help. > > Okay I tried to fix things, and made also some other edits. > How does the following look to you? > > PR_SET_SPECULATION_CTRL (since Linux 4.17) > Sets the state of the speculation misfeature specified in > arg2. The speculation-misfeature settings are per-thread > attributes. > > Currently, arg2 must be one of: > > PR_SPEC_STORE_BYPASS > Set the state of the speculative store bypass mis‐ > feature. > > PR_SPEC_INDIRECT_BRANCH (since Linux 4.20) > Set the state of the indirect branch speculation > misfeature. > > If arg2 does not have one of the above values, then the > call fails with the error ENODEV. > > The arg3 argument is used to hand in the control value, > which is one of the following: > > ... Look OK to me. I thought it sounded odd to "set the state" of a silicon bug, but that was a bogus concern. This isn't about bugs, but intentional, often configurable behaviours in the silicon that happen to have harmful side effects. It could be more terse to say "configure" instead of "set the state of", but either way works for me. Cheers ---Dave 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=-8.4 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_SANE_1 autolearn=ham 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 57950CA90AF for ; Wed, 13 May 2020 13:53:33 +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 999F72054F for ; Wed, 13 May 2020 13:53:32 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="F56N+sGv" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 999F72054F Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=arm.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:References: Message-ID:Subject:To:From:Date:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=6FsT3Xv3fh2ls35QX268wby/9BXcxTiPJGnwIE5kMJc=; b=F56N+sGvYWbuxS eyB1CwXlbSXVef0DOUM26LSYT2vgB+TNbUBx52ifE0T6EIEuCWLtMDpEa1PTbRn2FbL5mCAmC/167 /C+Y3FZTitMZi0vAruDJlidPQ9dMmlhRH0IYDUMbSTu3HavHYK5mTd4mb5w5kvO+DkRKMvJ4+T+Ea AFLlhWu8zMZA5FwlyaFZO8To1EsuEce5wEBl/kc2tLgzxYqPZoekd2glpOgpAjON63LsFKht0dYCF ZIfLJ8ND5EzBzk0EfME0oQGFBol3/CtdC0Bc0L10dC86fXDn43qp59A0ddKeZhqil6w1IW0bUgwYD UBIr1WPNF2nKyBHBp4VA==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1jYrpE-0000Dn-Br; Wed, 13 May 2020 13:53:32 +0000 Received: from foss.arm.com ([217.140.110.172]) by bombadil.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1jYrp9-0000Ct-PM for linux-arm-kernel@lists.infradead.org; Wed, 13 May 2020 13:53:29 +0000 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 029931FB; Wed, 13 May 2020 06:53:27 -0700 (PDT) Received: from arm.com (usa-sjc-imap-foss1.foss.arm.com [10.121.207.14]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 1CF543F71E; Wed, 13 May 2020 06:53:26 -0700 (PDT) Date: Wed, 13 May 2020 14:53:24 +0100 From: Dave Martin To: "Michael Kerrisk (man-pages)" Subject: Re: [PATCH 10/14] prctl.2: Add PR_SPEC_INDIRECT_BRANCH for SPECULATION_CTRL prctls Message-ID: <20200513135323.GO21779@arm.com> References: <1589301419-24459-1-git-send-email-Dave.Martin@arm.com> <1589301419-24459-11-git-send-email-Dave.Martin@arm.com> <20200513114915.GL21779@arm.com> <604879eb-1c7e-d08b-a6b8-165e4259b60c@gmail.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <604879eb-1c7e-d08b-a6b8-165e4259b60c@gmail.com> User-Agent: Mutt/1.5.23 (2014-03-12) X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20200513_065327_914930_F5CD452B X-CRM114-Status: GOOD ( 25.66 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: linux-arch@vger.kernel.org, linux-man@vger.kernel.org, Thomas Gleixner , Tim Chen , linux-arm-kernel@lists.infradead.org Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org T24gV2VkLCBNYXkgMTMsIDIwMjAgYXQgMDI6MDY6MzhQTSArMDIwMCwgTWljaGFlbCBLZXJyaXNr IChtYW4tcGFnZXMpIHdyb3RlOgo+IE9uIDUvMTMvMjAgMTo0OSBQTSwgRGF2ZSBNYXJ0aW4gd3Jv dGU6Cj4gPiBPbiBXZWQsIE1heSAxMywgMjAyMCBhdCAwMToyMToxMlBNICswMjAwLCBNaWNoYWVs IEtlcnJpc2sgKG1hbi1wYWdlcykgd3JvdGU6Cj4gPj4gSGVsbG8gRGF2ZSwKPiA+Pgo+ID4+IE9u IDUvMTIvMjAgNjozNiBQTSwgRGF2ZSBNYXJ0aW4gd3JvdGU6Cj4gPj4+IEFkZCB0aGUgUFJfU1BF Q19JTkRJUkVDVF9CUkFOQ0ggIm1pc2ZlYXR1cmUiIGFkZGVkIGluIExpbnV4IDQuMjAKPiA+Pj4g Zm9yIFBSX1NFVF9TUEVDVUxBVElPTl9DVFJMIGFuZCBQUl9HRVRfU1BFQ1VMQVRJT05fQ1RSTC4K PiA+Pj4KPiA+Pj4gU2lnbmVkLW9mZi1ieTogRGF2ZSBNYXJ0aW4gPERhdmUuTWFydGluQGFybS5j b20+Cj4gPj4+IENjOiBUaW0gQ2hlbiA8dGltLmMuY2hlbkBsaW51eC5pbnRlbC5jb20+Cj4gPj4+ IENjOiBUaG9tYXMgR2xlaXhuZXIgPHRnbHhAbGludXRyb25peC5kZT4KPiA+Pgo+ID4+IFRoYW5r cy4gUGF0Y2ggYXBwbGllZCwgYnV0IG5vdCB5ZXQgcHVzaGVkIHdoaWxlIEkgd2FpdCB0byBzZWUg aWYgYW55Cj4gPj4gUmV2aWV3L0FjayBhcnJpdmVzLgo+ID4+Cj4gPj4gQWxzbywgY291bGQgeW91 IHBsZWFzZSBjaGVjayB0aGUgdHdlYWtzIEkgbm90ZSBiZWxvdy4KPiA+Pgo+ID4+PiAtLS0KPiA+ Pj4gIG1hbjIvcHJjdGwuMiB8IDI0ICsrKysrKysrKysrKysrKysrKy0tLS0tLQo+ID4+PiAgMSBm aWxlIGNoYW5nZWQsIDE4IGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCj4gPj4+Cj4gPj4+ IGRpZmYgLS1naXQgYS9tYW4yL3ByY3RsLjIgYi9tYW4yL3ByY3RsLjIKPiA+Pj4gaW5kZXggZThl YWY5NS4uNjY0MTdjZiAxMDA2NDQKPiA+Pj4gLS0tIGEvbWFuMi9wcmN0bC4yCj4gPj4+ICsrKyBi L21hbjIvcHJjdGwuMgo+ID4+PiBAQCAtMTIxMywxMSArMTIxMywyMCBAQCBhcmd1bWVudHMgbXVz dCBiZSBzcGVjaWZpZWQgYXMgMDsgb3RoZXJ3aXNlIHRoZSBjYWxsIGZhaWxzIHdpdGggdGhlIGVy cm9yCj4gPj4+ICAuXCIgY29tbWl0IDM1NmU0YmZmZjJjNTQ4OWUwMTZmZGI5MjVhZGJmMTJhMWUz OTUwZWUKPiA+Pj4gIFNldHMgdGhlIHN0YXRlIG9mIHRoZSBzcGVjdWxhdGlvbiBtaXNmZWF0dXJl IHNwZWNpZmllZCBpbgo+ID4+PiAgLklSIGFyZzIgLgo+ID4+PiAtQ3VycmVudGx5LCB0aGUgb25s eSBwZXJtaXR0ZWQgdmFsdWUgZm9yIHRoaXMgYXJndW1lbnQgaXMKPiA+Pj4gK0N1cnJlbnRseSwg dGhpcyBhcmd1bWVudCBtdXN0IGJlIG9uZSBvZjoKPiA+Pj4gKy5SUwo+ID4+PiArLlRQCj4gPj4+ ICAuQiBQUl9TUEVDX1NUT1JFX0JZUEFTUwo+ID4+PiAtKG90aGVyd2lzZSB0aGUgY2FsbCBmYWls cyB3aXRoIHRoZSBlcnJvcgo+ID4+PiArc3BlY3VsYXRpdmUgc3RvcmUgYnlwYXNzIGNvbnRyb2ws IG9yCj4gPj4KPiA+PiBzL3NwZWN1bGF0aXZlL2VuYWJsZSBzcGVjdWxhdGl2ZS8KPiA+Pgo+ID4+ PiArLlwiIGNvbW1pdCA5MTM3YmIyN2U2MGU1NTRkYWI2OTRlYWZhNGNjYTI0MWZhM2E2OTRmCj4g Pj4+ICsuVFAKPiA+Pj4gKy5CUiBQUl9TUEVDX0lORElSRUNUX0JSQU5DSCAiIChzaW5jZSBMaW51 eCA0LjIwKSIKPiA+Pj4gK2luZGlyZWN0IGJyYW5jaCBzcGVjdWxhdGlvbiBjb250cm9sLgo+ID4+ Cj4gPj4gcy9pbmRpcmVjdC9lbmFibGUgaW5kaXJlY3QvCj4gPiAKPiA+IFRoYXQgZG9lc24ndCBz ZWVtIHF1aXRlIHJpZ2h0Lgo+IAo+IE15IGdvb2YsIG5vdCBsb29raW5nIGF0IHRoZSBiaWdnZXIg Y29udGV4dCBvZiB0aGUgcGF0Y2guCj4gCj4gPiAKPiA+IGFyZzIganVzdCBpZGVudGlmaWVzIHdo YXQgYmVoYXZpb3VyIHRvIGNvbmZpZ3VyZS4KPiA+IEl0J3MgYXJnMyB0aGF0IHNheXMgd2hldGhl ciB0byBkaXNhYmxlIC8gZW5hYmxlIGl0IG9yIHdoYXRldmVyLgo+ID4gCj4gPiAKPiA+IFdoaWxl IGVkaXRpbmcgdGhpcyBJIGRpZCB3b25kZXIgd2hldGhlciB0aGUgImNvbnRyb2wiIHdhcyBoZWxw ZnVsLgo+ID4gTWF5YmUganVzdCBkcm9wcGluZyB0aGF0IHdvcmQgZnJvbSB0aGVzZSBlbnRyaWVz IHdvdWxkIGhlbHAuCj4gCj4gT2theSBJIHRyaWVkIHRvIGZpeCB0aGluZ3MsIGFuZCBtYWRlIGFs c28gc29tZSBvdGhlciBlZGl0cy4KPiBIb3cgZG9lcyB0aGUgZm9sbG93aW5nIGxvb2sgdG8geW91 Pwo+IAo+ICAgICAgIFBSX1NFVF9TUEVDVUxBVElPTl9DVFJMIChzaW5jZSBMaW51eCA0LjE3KQo+ ICAgICAgICAgICAgICAgU2V0cyB0aGUgc3RhdGUgb2YgdGhlIHNwZWN1bGF0aW9uIG1pc2ZlYXR1 cmUgIHNwZWNpZmllZCAgaW4KPiAgICAgICAgICAgICAgIGFyZzIuICAgVGhlICBzcGVjdWxhdGlv bi1taXNmZWF0dXJlIHNldHRpbmdzIGFyZSBwZXItdGhyZWFkCj4gICAgICAgICAgICAgICBhdHRy aWJ1dGVzLgo+IAo+ICAgICAgICAgICAgICAgQ3VycmVudGx5LCBhcmcyIG11c3QgYmUgb25lIG9m Ogo+IAo+ICAgICAgICAgICAgICAgUFJfU1BFQ19TVE9SRV9CWVBBU1MKPiAgICAgICAgICAgICAg ICAgICAgICBTZXQgdGhlIHN0YXRlIG9mIHRoZSBzcGVjdWxhdGl2ZSBzdG9yZSAgYnlwYXNzICBt aXPigJAKPiAgICAgICAgICAgICAgICAgICAgICBmZWF0dXJlLgo+IAo+ICAgICAgICAgICAgICAg UFJfU1BFQ19JTkRJUkVDVF9CUkFOQ0ggKHNpbmNlIExpbnV4IDQuMjApCj4gICAgICAgICAgICAg ICAgICAgICAgU2V0ICB0aGUgIHN0YXRlICBvZiAgdGhlIGluZGlyZWN0IGJyYW5jaCBzcGVjdWxh dGlvbgo+ICAgICAgICAgICAgICAgICAgICAgIG1pc2ZlYXR1cmUuCj4gCj4gICAgICAgICAgICAg ICBJZiBhcmcyIGRvZXMgbm90IGhhdmUgb25lIG9mIHRoZSAgYWJvdmUgIHZhbHVlcywgIHRoZW4g IHRoZQo+ICAgICAgICAgICAgICAgY2FsbCBmYWlscyB3aXRoIHRoZSBlcnJvciBFTk9ERVYuCj4g Cj4gICAgICAgICAgICAgICBUaGUgIGFyZzMgIGFyZ3VtZW50ICBpcyAgdXNlZCB0byBoYW5kIGlu IHRoZSBjb250cm9sIHZhbHVlLAo+ICAgICAgICAgICAgICAgd2hpY2ggaXMgb25lIG9mIHRoZSBm b2xsb3dpbmc6Cj4gCj4gICAgICAgICAgICAgICAuLi4KCkxvb2sgT0sgdG8gbWUuCgpJIHRob3Vn aHQgaXQgc291bmRlZCBvZGQgdG8gInNldCB0aGUgc3RhdGUiIG9mIGEgc2lsaWNvbiBidWcsIGJ1 dCB0aGF0CndhcyBhIGJvZ3VzIGNvbmNlcm4uCgpUaGlzIGlzbid0IGFib3V0IGJ1Z3MsIGJ1dCBp bnRlbnRpb25hbCwgb2Z0ZW4gY29uZmlndXJhYmxlIGJlaGF2aW91cnMgaW4KdGhlIHNpbGljb24g dGhhdCBoYXBwZW4gdG8gaGF2ZSBoYXJtZnVsIHNpZGUgZWZmZWN0cy4KCkl0IGNvdWxkIGJlIG1v cmUgdGVyc2UgdG8gc2F5ICJjb25maWd1cmUiIGluc3RlYWQgb2YgInNldCB0aGUgc3RhdGUgb2Yi LApidXQgZWl0aGVyIHdheSB3b3JrcyBmb3IgbWUuCgpDaGVlcnMKLS0tRGF2ZQoKX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KbGludXgtYXJtLWtlcm5lbCBt YWlsaW5nIGxpc3QKbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9s aXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtYXJtLWtlcm5lbAo=