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=-5.1 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SPF_HELO_NONE, SPF_PASS,USER_AGENT_SANE_1 autolearn=no 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 9E0E0C433E6 for ; Wed, 30 Dec 2020 10:01:51 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 61A4221D1B for ; Wed, 30 Dec 2020 10:01:51 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726289AbgL3KBf (ORCPT ); Wed, 30 Dec 2020 05:01:35 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:40368 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725814AbgL3KBf (ORCPT ); Wed, 30 Dec 2020 05:01:35 -0500 Received: from pandora.armlinux.org.uk (pandora.armlinux.org.uk [IPv6:2001:4d48:ad52:32c8:5054:ff:fe00:142]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E9DEBC061799; Wed, 30 Dec 2020 02:00:39 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=armlinux.org.uk; s=pandora-2019; h=Sender:In-Reply-To: Content-Transfer-Encoding:Content-Type:MIME-Version:References:Message-ID: Subject:Cc:To:From:Date:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Id: List-Help:List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive; bh=RLGcTHha1iBi5RnrUOHhCpmRRdZbNNy9N9/LhkhCawU=; b=p2p0MbfKm1c8qLl/oYqAdf1c5 NSwPA81w4cjPSXGUfrJlixIAMI1qiuQ7JBKa9c5vBh4YgHdF0Jl+25BUYsCjR0frTf+ZCFe2U4LXA dPkGzPHZHMTMAbMr0rdcSUFc44dMCYe763lJr/QUsH4+0HztLsn3Mjq68nAJQMyuTict5YCIztQzI n6s+eLub2njYRmf+cXWAP4agnwvAjzJYz0xYFSrMDd/o9ZbURf5A95R8hC7HTrd+iP5UnwJDv+b98 3djV2uepw2kuTFjy5+kUg2ogjoiIwI7jdLtlQ7Vt2c5/VPzEVR1Z68PxpY1/p4sFkU2xtuRUu/Sz5 1tzF0cYVg==; Received: from shell.armlinux.org.uk ([fd8f:7570:feb6:1:5054:ff:fe00:4ec]:44902) by pandora.armlinux.org.uk with esmtpsa (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1kuYHP-0005bt-HE; Wed, 30 Dec 2020 10:00:31 +0000 Received: from linux by shell.armlinux.org.uk with local (Exim 4.92) (envelope-from ) id 1kuYHM-00026D-M2; Wed, 30 Dec 2020 10:00:28 +0000 Date: Wed, 30 Dec 2020 10:00:28 +0000 From: Russell King - ARM Linux admin To: Nicholas Piggin Cc: paulmck , Arnd Bergmann , Jann Horn , Peter Zijlstra , Benjamin Herrenschmidt , x86 , linux-kernel , stable , Will Deacon , Mathieu Desnoyers , Michael Ellerman , Andy Lutomirski , Catalin Marinas , Paul Mackerras , linuxppc-dev , linux-arm-kernel Subject: Re: [RFC please help] membarrier: Rewrite sync_core_before_usermode() Message-ID: <20201230100028.GP1551@shell.armlinux.org.uk> References: <20201228190852.GI1551@shell.armlinux.org.uk> <1086654515.3607.1609187556216.JavaMail.zimbra@efficios.com> <1609200902.me5niwm2t6.astroid@bobo.none> <1609210162.4d8dqilke6.astroid@bobo.none> <20201229104456.GK1551@shell.armlinux.org.uk> <1609290821.wrfh89v23a.astroid@bobo.none> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <1609290821.wrfh89v23a.astroid@bobo.none> User-Agent: Mutt/1.10.1 (2018-07-13) Sender: Russell King - ARM Linux admin Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, Dec 30, 2020 at 12:33:02PM +1000, Nicholas Piggin wrote: > Excerpts from Russell King - ARM Linux admin's message of December 29, 2020 8:44 pm: > > On Tue, Dec 29, 2020 at 01:09:12PM +1000, Nicholas Piggin wrote: > >> I think it should certainly be documented in terms of what guarantees > >> it provides to application, _not_ the kinds of instructions it may or > >> may not induce the core to execute. And if existing API can't be > >> re-documented sanely, then deprecatd and new ones added that DTRT. > >> Possibly under a new system call, if arch's like ARM want a range > >> flush and we don't want to expand the multiplexing behaviour of > >> membarrier even more (sigh). > > > > The 32-bit ARM sys_cacheflush() is there only to support self-modifying > > code, and takes whatever actions are necessary to support that. > > Exactly what actions it takes are cache implementation specific, and > > should be of no concern to the caller, but the underlying thing is... > > it's to support self-modifying code. > > Caveat > cacheflush() should not be used in programs intended to be portable. > On Linux, this call first appeared on the MIPS architecture, but nowa‐ > days, Linux provides a cacheflush() system call on some other architec‐ > tures, but with different arguments. > > What a disaster. Another badly designed interface, although it didn't > originate in Linux it sounds like we weren't to be outdone so > we messed it up even worse. > > flushing caches is neither necessary nor sufficient for code modification > on many processors. Maybe some old MIPS specific private thing was fine, > but certainly before it grew to other architectures, somebody should > have thought for more than 2 minutes about it. Sigh. WARNING: You are bordering on being objectionable and offensive with that comment. The ARM interface was designed by me back in the very early days of Linux, probably while you were still in dypers, based on what was known at the time. Back in the early 2000s, ideas such as relaxed memory ordering were not known. All there was was one level of harvard cache. So, juts shut up with your insults. -- RMK's Patch system: https://www.armlinux.org.uk/developer/patches/ FTTP is here! 40Mbps down 10Mbps up. Decent connectivity at last! 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=-5.1 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SPF_HELO_NONE, SPF_PASS,USER_AGENT_SANE_1 autolearn=no 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 64BA1C433E0 for ; Wed, 30 Dec 2020 10:02:48 +0000 (UTC) Received: from lists.ozlabs.org (lists.ozlabs.org [203.11.71.2]) (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 553B321973 for ; Wed, 30 Dec 2020 10:02:47 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 553B321973 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=armlinux.org.uk Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=linuxppc-dev-bounces+linuxppc-dev=archiver.kernel.org@lists.ozlabs.org Received: from bilbo.ozlabs.org (lists.ozlabs.org [IPv6:2401:3900:2:1::3]) by lists.ozlabs.org (Postfix) with ESMTP id 4D5Rfq40WMzDqL0 for ; Wed, 30 Dec 2020 21:02:43 +1100 (AEDT) Authentication-Results: lists.ozlabs.org; spf=none (no SPF record) smtp.mailfrom=armlinux.org.uk (client-ip=2001:4d48:ad52:32c8:5054:ff:fe00:142; helo=pandora.armlinux.org.uk; envelope-from=linux+linuxppc-dev=lists.ozlabs.org@armlinux.org.uk; receiver=) Authentication-Results: lists.ozlabs.org; dmarc=pass (p=none dis=none) header.from=armlinux.org.uk Authentication-Results: lists.ozlabs.org; dkim=pass (2048-bit key; secure) header.d=armlinux.org.uk header.i=@armlinux.org.uk header.a=rsa-sha256 header.s=pandora-2019 header.b=p2p0MbfK; dkim-atps=neutral Received: from pandora.armlinux.org.uk (pandora.armlinux.org.uk [IPv6:2001:4d48:ad52:32c8:5054:ff:fe00:142]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (P-256) server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by lists.ozlabs.org (Postfix) with ESMTPS id 4D5Rcl2XywzDqGn for ; Wed, 30 Dec 2020 21:00:52 +1100 (AEDT) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=armlinux.org.uk; s=pandora-2019; h=Sender:In-Reply-To: Content-Transfer-Encoding:Content-Type:MIME-Version:References:Message-ID: Subject:Cc:To:From:Date:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Id: List-Help:List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive; bh=RLGcTHha1iBi5RnrUOHhCpmRRdZbNNy9N9/LhkhCawU=; b=p2p0MbfKm1c8qLl/oYqAdf1c5 NSwPA81w4cjPSXGUfrJlixIAMI1qiuQ7JBKa9c5vBh4YgHdF0Jl+25BUYsCjR0frTf+ZCFe2U4LXA dPkGzPHZHMTMAbMr0rdcSUFc44dMCYe763lJr/QUsH4+0HztLsn3Mjq68nAJQMyuTict5YCIztQzI n6s+eLub2njYRmf+cXWAP4agnwvAjzJYz0xYFSrMDd/o9ZbURf5A95R8hC7HTrd+iP5UnwJDv+b98 3djV2uepw2kuTFjy5+kUg2ogjoiIwI7jdLtlQ7Vt2c5/VPzEVR1Z68PxpY1/p4sFkU2xtuRUu/Sz5 1tzF0cYVg==; Received: from shell.armlinux.org.uk ([fd8f:7570:feb6:1:5054:ff:fe00:4ec]:44902) by pandora.armlinux.org.uk with esmtpsa (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1kuYHP-0005bt-HE; Wed, 30 Dec 2020 10:00:31 +0000 Received: from linux by shell.armlinux.org.uk with local (Exim 4.92) (envelope-from ) id 1kuYHM-00026D-M2; Wed, 30 Dec 2020 10:00:28 +0000 Date: Wed, 30 Dec 2020 10:00:28 +0000 From: Russell King - ARM Linux admin To: Nicholas Piggin Subject: Re: [RFC please help] membarrier: Rewrite sync_core_before_usermode() Message-ID: <20201230100028.GP1551@shell.armlinux.org.uk> References: <20201228190852.GI1551@shell.armlinux.org.uk> <1086654515.3607.1609187556216.JavaMail.zimbra@efficios.com> <1609200902.me5niwm2t6.astroid@bobo.none> <1609210162.4d8dqilke6.astroid@bobo.none> <20201229104456.GK1551@shell.armlinux.org.uk> <1609290821.wrfh89v23a.astroid@bobo.none> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <1609290821.wrfh89v23a.astroid@bobo.none> User-Agent: Mutt/1.10.1 (2018-07-13) X-BeenThere: linuxppc-dev@lists.ozlabs.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Linux on PowerPC Developers Mail List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: linuxppc-dev , Catalin Marinas , paulmck , Arnd Bergmann , Jann Horn , Peter Zijlstra , x86 , linux-kernel , stable , Mathieu Desnoyers , Andy Lutomirski , Paul Mackerras , Will Deacon , linux-arm-kernel Errors-To: linuxppc-dev-bounces+linuxppc-dev=archiver.kernel.org@lists.ozlabs.org Sender: "Linuxppc-dev" On Wed, Dec 30, 2020 at 12:33:02PM +1000, Nicholas Piggin wrote: > Excerpts from Russell King - ARM Linux admin's message of December 29, 2020 8:44 pm: > > On Tue, Dec 29, 2020 at 01:09:12PM +1000, Nicholas Piggin wrote: > >> I think it should certainly be documented in terms of what guarantees > >> it provides to application, _not_ the kinds of instructions it may or > >> may not induce the core to execute. And if existing API can't be > >> re-documented sanely, then deprecatd and new ones added that DTRT. > >> Possibly under a new system call, if arch's like ARM want a range > >> flush and we don't want to expand the multiplexing behaviour of > >> membarrier even more (sigh). > > > > The 32-bit ARM sys_cacheflush() is there only to support self-modifying > > code, and takes whatever actions are necessary to support that. > > Exactly what actions it takes are cache implementation specific, and > > should be of no concern to the caller, but the underlying thing is... > > it's to support self-modifying code. > > Caveat > cacheflush() should not be used in programs intended to be portable. > On Linux, this call first appeared on the MIPS architecture, but nowa‐ > days, Linux provides a cacheflush() system call on some other architec‐ > tures, but with different arguments. > > What a disaster. Another badly designed interface, although it didn't > originate in Linux it sounds like we weren't to be outdone so > we messed it up even worse. > > flushing caches is neither necessary nor sufficient for code modification > on many processors. Maybe some old MIPS specific private thing was fine, > but certainly before it grew to other architectures, somebody should > have thought for more than 2 minutes about it. Sigh. WARNING: You are bordering on being objectionable and offensive with that comment. The ARM interface was designed by me back in the very early days of Linux, probably while you were still in dypers, based on what was known at the time. Back in the early 2000s, ideas such as relaxed memory ordering were not known. All there was was one level of harvard cache. So, juts shut up with your insults. -- RMK's Patch system: https://www.armlinux.org.uk/developer/patches/ FTTP is here! 40Mbps down 10Mbps up. Decent connectivity at last! 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=-5.3 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS,USER_AGENT_SANE_1 autolearn=no 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 9CC53C433E0 for ; Wed, 30 Dec 2020 10:02:11 +0000 (UTC) Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) (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 4D58F21973 for ; Wed, 30 Dec 2020 10:02:11 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 4D58F21973 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=armlinux.org.uk Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+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=merlin.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=F8TVDKLWvwJ8OVGlJN/EXY6xiKIG12jHoshIRqqLy5E=; b=w9saw8rGQTsfzE8/Aah9HHqY0 HEY/PT+/bIx9rBd9Ug0kRzk7cY3eGD5h8XoUKR1dqWEfUA11BNsuxbyAkZYQmM+4JJ/SYuOiyJ7vf WiiMsln3fVCF/wLWwdYFEuKFnnC0juXgZZvhVH88HH2doWwduDvZy/CLRO3MVNEMihBswTwVglDho bAu0YD1dQwnDIpUiwSAUX6/H7fy98/2HaOAouvCmGqwh2TJvoiCS8ceKlSNHXdc2PJMou5QummVHm 70OM7gnzaRqg6atxPC/GrAjWH/UKD8yXiv7YAInS5Qu29XRu7pzucEabSBWolPRG7rxWtIflJfhNF ecvN7pAbA==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1kuYHm-0004zy-Ba; Wed, 30 Dec 2020 10:00:54 +0000 Received: from pandora.armlinux.org.uk ([2001:4d48:ad52:32c8:5054:ff:fe00:142]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1kuYHj-0004zW-L1 for linux-arm-kernel@lists.infradead.org; Wed, 30 Dec 2020 10:00:52 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=armlinux.org.uk; s=pandora-2019; h=Sender:In-Reply-To: Content-Transfer-Encoding:Content-Type:MIME-Version:References:Message-ID: Subject:Cc:To:From:Date:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Id: List-Help:List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive; bh=RLGcTHha1iBi5RnrUOHhCpmRRdZbNNy9N9/LhkhCawU=; b=p2p0MbfKm1c8qLl/oYqAdf1c5 NSwPA81w4cjPSXGUfrJlixIAMI1qiuQ7JBKa9c5vBh4YgHdF0Jl+25BUYsCjR0frTf+ZCFe2U4LXA dPkGzPHZHMTMAbMr0rdcSUFc44dMCYe763lJr/QUsH4+0HztLsn3Mjq68nAJQMyuTict5YCIztQzI n6s+eLub2njYRmf+cXWAP4agnwvAjzJYz0xYFSrMDd/o9ZbURf5A95R8hC7HTrd+iP5UnwJDv+b98 3djV2uepw2kuTFjy5+kUg2ogjoiIwI7jdLtlQ7Vt2c5/VPzEVR1Z68PxpY1/p4sFkU2xtuRUu/Sz5 1tzF0cYVg==; Received: from shell.armlinux.org.uk ([fd8f:7570:feb6:1:5054:ff:fe00:4ec]:44902) by pandora.armlinux.org.uk with esmtpsa (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1kuYHP-0005bt-HE; Wed, 30 Dec 2020 10:00:31 +0000 Received: from linux by shell.armlinux.org.uk with local (Exim 4.92) (envelope-from ) id 1kuYHM-00026D-M2; Wed, 30 Dec 2020 10:00:28 +0000 Date: Wed, 30 Dec 2020 10:00:28 +0000 From: Russell King - ARM Linux admin To: Nicholas Piggin Subject: Re: [RFC please help] membarrier: Rewrite sync_core_before_usermode() Message-ID: <20201230100028.GP1551@shell.armlinux.org.uk> References: <20201228190852.GI1551@shell.armlinux.org.uk> <1086654515.3607.1609187556216.JavaMail.zimbra@efficios.com> <1609200902.me5niwm2t6.astroid@bobo.none> <1609210162.4d8dqilke6.astroid@bobo.none> <20201229104456.GK1551@shell.armlinux.org.uk> <1609290821.wrfh89v23a.astroid@bobo.none> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <1609290821.wrfh89v23a.astroid@bobo.none> User-Agent: Mutt/1.10.1 (2018-07-13) X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20201230_050051_716585_4466260C X-CRM114-Status: GOOD ( 22.17 ) 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: linuxppc-dev , Catalin Marinas , paulmck , Arnd Bergmann , Jann Horn , Peter Zijlstra , Benjamin Herrenschmidt , x86 , linux-kernel , stable , Mathieu Desnoyers , Andy Lutomirski , Michael Ellerman , Paul Mackerras , Will Deacon , linux-arm-kernel 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 T24gV2VkLCBEZWMgMzAsIDIwMjAgYXQgMTI6MzM6MDJQTSArMTAwMCwgTmljaG9sYXMgUGlnZ2lu IHdyb3RlOgo+IEV4Y2VycHRzIGZyb20gUnVzc2VsbCBLaW5nIC0gQVJNIExpbnV4IGFkbWluJ3Mg bWVzc2FnZSBvZiBEZWNlbWJlciAyOSwgMjAyMCA4OjQ0IHBtOgo+ID4gT24gVHVlLCBEZWMgMjks IDIwMjAgYXQgMDE6MDk6MTJQTSArMTAwMCwgTmljaG9sYXMgUGlnZ2luIHdyb3RlOgo+ID4+IEkg dGhpbmsgaXQgc2hvdWxkIGNlcnRhaW5seSBiZSBkb2N1bWVudGVkIGluIHRlcm1zIG9mIHdoYXQg Z3VhcmFudGVlcwo+ID4+IGl0IHByb3ZpZGVzIHRvIGFwcGxpY2F0aW9uLCBfbm90XyB0aGUga2lu ZHMgb2YgaW5zdHJ1Y3Rpb25zIGl0IG1heSBvcgo+ID4+IG1heSBub3QgaW5kdWNlIHRoZSBjb3Jl IHRvIGV4ZWN1dGUuIEFuZCBpZiBleGlzdGluZyBBUEkgY2FuJ3QgYmUKPiA+PiByZS1kb2N1bWVu dGVkIHNhbmVseSwgdGhlbiBkZXByZWNhdGQgYW5kIG5ldyBvbmVzIGFkZGVkIHRoYXQgRFRSVC4K PiA+PiBQb3NzaWJseSB1bmRlciBhIG5ldyBzeXN0ZW0gY2FsbCwgaWYgYXJjaCdzIGxpa2UgQVJN IHdhbnQgYSByYW5nZQo+ID4+IGZsdXNoIGFuZCB3ZSBkb24ndCB3YW50IHRvIGV4cGFuZCB0aGUg bXVsdGlwbGV4aW5nIGJlaGF2aW91ciBvZgo+ID4+IG1lbWJhcnJpZXIgZXZlbiBtb3JlIChzaWdo KS4KPiA+IAo+ID4gVGhlIDMyLWJpdCBBUk0gc3lzX2NhY2hlZmx1c2goKSBpcyB0aGVyZSBvbmx5 IHRvIHN1cHBvcnQgc2VsZi1tb2RpZnlpbmcKPiA+IGNvZGUsIGFuZCB0YWtlcyB3aGF0ZXZlciBh Y3Rpb25zIGFyZSBuZWNlc3NhcnkgdG8gc3VwcG9ydCB0aGF0Lgo+ID4gRXhhY3RseSB3aGF0IGFj dGlvbnMgaXQgdGFrZXMgYXJlIGNhY2hlIGltcGxlbWVudGF0aW9uIHNwZWNpZmljLCBhbmQKPiA+ IHNob3VsZCBiZSBvZiBubyBjb25jZXJuIHRvIHRoZSBjYWxsZXIsIGJ1dCB0aGUgdW5kZXJseWlu ZyB0aGluZyBpcy4uLgo+ID4gaXQncyB0byBzdXBwb3J0IHNlbGYtbW9kaWZ5aW5nIGNvZGUuCj4g Cj4gICAgQ2F2ZWF0Cj4gICAgICAgIGNhY2hlZmx1c2goKSAgc2hvdWxkICBub3QgIGJlIHVzZWQg aW4gcHJvZ3JhbXMgaW50ZW5kZWQgdG8gYmUgcG9ydGFibGUuCj4gICAgICAgIE9uIExpbnV4LCB0 aGlzIGNhbGwgZmlyc3QgYXBwZWFyZWQgb24gdGhlIE1JUFMgYXJjaGl0ZWN0dXJlLCBidXQgIG5v d2HigJAKPiAgICAgICAgZGF5cywgTGludXggcHJvdmlkZXMgYSBjYWNoZWZsdXNoKCkgc3lzdGVt IGNhbGwgb24gc29tZSBvdGhlciBhcmNoaXRlY+KAkAo+ICAgICAgICB0dXJlcywgYnV0IHdpdGgg ZGlmZmVyZW50IGFyZ3VtZW50cy4KPiAKPiBXaGF0IGEgZGlzYXN0ZXIuIEFub3RoZXIgYmFkbHkg ZGVzaWduZWQgaW50ZXJmYWNlLCBhbHRob3VnaCBpdCBkaWRuJ3QgCj4gb3JpZ2luYXRlIGluIExp bnV4IGl0IHNvdW5kcyBsaWtlIHdlIHdlcmVuJ3QgdG8gYmUgb3V0ZG9uZSBzbwo+IHdlIG1lc3Nl ZCBpdCB1cCBldmVuIHdvcnNlLgo+IAo+IGZsdXNoaW5nIGNhY2hlcyBpcyBuZWl0aGVyIG5lY2Vz c2FyeSBub3Igc3VmZmljaWVudCBmb3IgY29kZSBtb2RpZmljYXRpb24KPiBvbiBtYW55IHByb2Nl c3NvcnMuIE1heWJlIHNvbWUgb2xkIE1JUFMgc3BlY2lmaWMgcHJpdmF0ZSB0aGluZyB3YXMgZmlu ZSwKPiBidXQgY2VydGFpbmx5IGJlZm9yZSBpdCBncmV3IHRvIG90aGVyIGFyY2hpdGVjdHVyZXMs IHNvbWVib2R5IHNob3VsZCAKPiBoYXZlIHRob3VnaHQgZm9yIG1vcmUgdGhhbiAyIG1pbnV0ZXMg YWJvdXQgaXQuIFNpZ2guCgpXQVJOSU5HOiBZb3UgYXJlIGJvcmRlcmluZyBvbiBiZWluZyBvYmpl Y3Rpb25hYmxlIGFuZCBvZmZlbnNpdmUgd2l0aAp0aGF0IGNvbW1lbnQuCgpUaGUgQVJNIGludGVy ZmFjZSB3YXMgZGVzaWduZWQgYnkgbWUgYmFjayBpbiB0aGUgdmVyeSBlYXJseSBkYXlzIG9mCkxp bnV4LCBwcm9iYWJseSB3aGlsZSB5b3Ugd2VyZSBzdGlsbCBpbiBkeXBlcnMsIGJhc2VkIG9uIHdo YXQgd2FzCmtub3duIGF0IHRoZSB0aW1lLiAgQmFjayBpbiB0aGUgZWFybHkgMjAwMHMsIGlkZWFz IHN1Y2ggYXMgcmVsYXhlZAptZW1vcnkgb3JkZXJpbmcgd2VyZSBub3Qga25vd24uICBBbGwgdGhl cmUgd2FzIHdhcyBvbmUgbGV2ZWwgb2YKaGFydmFyZCBjYWNoZS4KClNvLCBqdXRzIHNodXQgdXAg d2l0aCB5b3VyIGluc3VsdHMuCgotLSAKUk1LJ3MgUGF0Y2ggc3lzdGVtOiBodHRwczovL3d3dy5h cm1saW51eC5vcmcudWsvZGV2ZWxvcGVyL3BhdGNoZXMvCkZUVFAgaXMgaGVyZSEgNDBNYnBzIGRv d24gMTBNYnBzIHVwLiBEZWNlbnQgY29ubmVjdGl2aXR5IGF0IGxhc3QhCgpfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1hcm0ta2VybmVsIG1haWxp bmcgbGlzdApsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3Rz LmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1hcm0ta2VybmVsCg==