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=-0.8 required=3.0 tests=DKIM_INVALID,DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SPF_PASS autolearn=unavailable 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 BD880C43381 for ; Tue, 12 Mar 2019 20:53:53 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 89AD5213A2 for ; Tue, 12 Mar 2019 20:53:53 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=hansenpartnership.com header.i=@hansenpartnership.com header.b="xlq9MgHs" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726765AbfCLUxp (ORCPT ); Tue, 12 Mar 2019 16:53:45 -0400 Received: from bedivere.hansenpartnership.com ([66.63.167.143]:46982 "EHLO bedivere.hansenpartnership.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726612AbfCLUxk (ORCPT ); Tue, 12 Mar 2019 16:53:40 -0400 Received: from localhost (localhost [127.0.0.1]) by bedivere.hansenpartnership.com (Postfix) with ESMTP id 33B738EE1ED; Tue, 12 Mar 2019 13:53:39 -0700 (PDT) Received: from bedivere.hansenpartnership.com ([127.0.0.1]) by localhost (bedivere.hansenpartnership.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id wLorcc8lOR75; Tue, 12 Mar 2019 13:53:39 -0700 (PDT) Received: from [153.66.254.194] (unknown [50.35.68.20]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by bedivere.hansenpartnership.com (Postfix) with ESMTPSA id 688588EE0F5; Tue, 12 Mar 2019 13:53:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=hansenpartnership.com; s=20151216; t=1552424018; bh=xBXu18RoJWJ5B4KHNewRd2Rk9PRsAei+eBQI4KiIbeY=; h=Subject:From:To:Cc:Date:In-Reply-To:References:From; b=xlq9MgHsTme9IiV3l5DS1bhGe2e2yBGv5xMnFuAUo3FND/cNBSgTYhs2hLcTvBHBt YXaNutNhc7CQMLA18VtnBZRLFNVrMv8VFLcdGmoUhK+Sy6721n6yei9bvNTLp1k2xB VUr8feAFN96BKuJ90nrtw4xh7PaBspbU6h6RJU4k= Message-ID: <1552424017.14432.11.camel@HansenPartnership.com> Subject: Re: [RFC PATCH V2 0/5] vhost: accelerate metadata access through vmap() From: James Bottomley To: Andrea Arcangeli Cc: "Michael S. Tsirkin" , Jason Wang , David Miller , hch@infradead.org, kvm@vger.kernel.org, virtualization@lists.linux-foundation.org, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, peterx@redhat.com, linux-mm@kvack.org, linux-arm-kernel@lists.infradead.org, linux-parisc@vger.kernel.org Date: Tue, 12 Mar 2019 13:53:37 -0700 In-Reply-To: <20190312200450.GA25147@redhat.com> References: <20190308141220.GA21082@infradead.org> <56374231-7ba7-0227-8d6d-4d968d71b4d6@redhat.com> <20190311095405-mutt-send-email-mst@kernel.org> <20190311.111413.1140896328197448401.davem@davemloft.net> <6b6dcc4a-2f08-ba67-0423-35787f3b966c@redhat.com> <20190311235140-mutt-send-email-mst@kernel.org> <76c353ed-d6de-99a9-76f9-f258074c1462@redhat.com> <20190312075033-mutt-send-email-mst@kernel.org> <1552405610.3083.17.camel@HansenPartnership.com> <20190312200450.GA25147@redhat.com> Content-Type: text/plain; charset="UTF-8" X-Mailer: Evolution 3.26.6 Mime-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: linux-parisc-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-parisc@vger.kernel.org On Tue, 2019-03-12 at 16:04 -0400, Andrea Arcangeli wrote: > On Tue, Mar 12, 2019 at 08:46:50AM -0700, James Bottomley wrote: > > On Tue, 2019-03-12 at 07:54 -0400, Michael S. Tsirkin wrote: > > > On Tue, Mar 12, 2019 at 03:17:00PM +0800, Jason Wang wrote: > > > > > > > > On 2019/3/12 上åˆ11:52, Michael S. Tsirkin wrote: > > > > > On Tue, Mar 12, 2019 at 10:59:09AM +0800, Jason Wang wrote: > > > > [...] > > > > At least for -stable, we need the flush? > > > > > > > > > > > > > Three atomic ops per bit is way to expensive. > > > > > > > > > > > > Yes. > > > > > > > > Thanks > > > > > > See James's reply - I stand corrected we do kunmap so no need to > > > flush. > > > > Well, I said that's what we do on Parisc. The cachetlb document > > definitely says if you alter the data between kmap and kunmap you > > are responsible for the flush. It's just that flush_dcache_page() > > is a no-op on x86 so they never remember to add it and since it > > will crash parisc if you get it wrong we finally gave up trying to > > make them. > > > > But that's the point: it is a no-op on your favourite architecture > > so it costs you nothing to add it. > > Yes, the fact Parisc gave up and is doing it on kunmap is reasonable > approach for Parisc, but it doesn't move the needle as far as vhost > common code is concerned, because other archs don't flush any cache > on kunmap. > > So either all other archs give up trying to optimize, or vhost still > has to call flush_dcache_page() after kunmap. I've got to say: optimize what? What code do we ever have in the kernel that kmap's a page and then doesn't do anything with it? You can guarantee that on kunmap the page is either referenced (needs invalidating) or updated (needs flushing). The in-kernel use of kmap is always kmap do something with the mapped page kunmap In a very short interval. It seems just a simplification to make kunmap do the flush if needed rather than try to have the users remember. The thing which makes this really simple is that on most architectures flush and invalidate is the same operation. If you really want to optimize you can use the referenced and dirty bits on the kmapped pte to tell you what operation to do, but if your flush is your invalidate, you simply assume the data needs flushing on kunmap without checking anything. > Which means after we fix vhost to add the flush_dcache_page after > kunmap, Parisc will get a double hit (but it also means Parisc was > the only one of those archs needed explicit cache flushes, where > vhost worked correctly so far.. so it kinds of proofs your point of > giving up being the safe choice). What double hit? If there's no cache to flush then cache flush is a no-op. It's also a highly piplineable no-op because the CPU has the L1 cache within easy reach. The only event when flush takes a large amount time is if we actually have dirty data to write back to main memory. James 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=-1.0 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SPF_PASS 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 993CBC43381 for ; Wed, 13 Mar 2019 10:20:59 +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 68DE32087C for ; Wed, 13 Mar 2019 10:20:59 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="hvizuIB3"; dkim=fail reason="signature verification failed" (2048-bit key) header.d=infradead.org header.i=@infradead.org header.b="Ln/zPd1z"; dkim=fail reason="signature verification failed" (1024-bit key) header.d=hansenpartnership.com header.i=@hansenpartnership.com header.b="xlq9MgHs" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 68DE32087C Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=HansenPartnership.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:Mime-Version:References:In-Reply-To: Date:To:From:Subject:Message-ID:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=arScmbo4Dj7/HnaCZhSImT2ov1cT/jiKf3JPmF6/K4E=; b=hvizuIB3gmt4OG /kOrul6BPZC8T9ruux+HI0QHBG3CEVJWBJmaHS2w+37nRh5aexWOXDrhxWZAD2wuZA6J9fFGFSneq 4t/OEhMFoloKG2syT9hze5oFYOgcWZmdQAY+fr0c8WdG8kHDjY/bcNIouPvsATs0uSBgZ2pSD6iD/ vKFZrBqmN+ZlILsvU5d9C5kE2V9Qy8aXxuYOMZjqM6+aVanC2DC1EA5qInRrEOnJLbegtr7cjG9Aw skIEzFKDMX8Qd91ztowoaRao5NIX7pNBonwyeI0EXFXFkIDBYbfupo10KH4l2pNN3tAZ+DFTd+d8z YYh8t0+JGuiMn5EPtWAQ==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.90_1 #2 (Red Hat Linux)) id 1h410I-0007wM-SW; Wed, 13 Mar 2019 10:20:54 +0000 Received: from casper.infradead.org ([2001:8b0:10b:1236::1]) by bombadil.infradead.org with esmtps (Exim 4.90_1 #2 (Red Hat Linux)) id 1h40t6-0000TD-Qe for linux-arm-kernel@bombadil.infradead.org; Wed, 13 Mar 2019 10:13:28 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=casper.20170209; h=Content-Transfer-Encoding:Mime-Version: Content-Type:References:In-Reply-To:Date:Cc:To:From:Subject:Message-ID:Sender :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=0Ksmlz1hgMCgdNvE/4Heh7hLPR1irc1qLSUkSv1U2PM=; b=Ln/zPd1zrYWhqrlVMned8qbcz5 WY/OOiu8sOUKlEdjGnlbLSDNMuuw5FtZuQrvPafxIHfQRgV7zF/o36an8DwiMAEDUpZborZjz4P8s drkZbgirl2Eg7/3V7l6XTTO61fyyOzTuFqN8B8hADjrMOFhAwru5yAiWeUwV4bR0N4IaToKqj55Q5 dpEMyZPr7nkyQFkL9StrfNAF6VGCbNDNs5qJ/893wL1a2ztfkD6ADeQkwYkDP3FgmEwspYSrOY/Yq MeslLXodWuDkTHWGCNcSE3CNeQw4n0qt5663KEPj1hMPZMiDPQj5C5gGCTIlKg/KapxW09Hs3IGcS QtH2wbPg==; Received: from bedivere.hansenpartnership.com ([66.63.167.143]) by casper.infradead.org with esmtps (Exim 4.90_1 #2 (Red Hat Linux)) id 1h3oQs-0005CU-IL for linux-arm-kernel@lists.infradead.org; Tue, 12 Mar 2019 20:55:32 +0000 Received: from localhost (localhost [127.0.0.1]) by bedivere.hansenpartnership.com (Postfix) with ESMTP id 33B738EE1ED; Tue, 12 Mar 2019 13:53:39 -0700 (PDT) Received: from bedivere.hansenpartnership.com ([127.0.0.1]) by localhost (bedivere.hansenpartnership.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id wLorcc8lOR75; Tue, 12 Mar 2019 13:53:39 -0700 (PDT) Received: from [153.66.254.194] (unknown [50.35.68.20]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by bedivere.hansenpartnership.com (Postfix) with ESMTPSA id 688588EE0F5; Tue, 12 Mar 2019 13:53:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=hansenpartnership.com; s=20151216; t=1552424018; bh=xBXu18RoJWJ5B4KHNewRd2Rk9PRsAei+eBQI4KiIbeY=; h=Subject:From:To:Cc:Date:In-Reply-To:References:From; b=xlq9MgHsTme9IiV3l5DS1bhGe2e2yBGv5xMnFuAUo3FND/cNBSgTYhs2hLcTvBHBt YXaNutNhc7CQMLA18VtnBZRLFNVrMv8VFLcdGmoUhK+Sy6721n6yei9bvNTLp1k2xB VUr8feAFN96BKuJ90nrtw4xh7PaBspbU6h6RJU4k= Message-ID: <1552424017.14432.11.camel@HansenPartnership.com> Subject: Re: [RFC PATCH V2 0/5] vhost: accelerate metadata access through vmap() From: James Bottomley To: Andrea Arcangeli Date: Tue, 12 Mar 2019 13:53:37 -0700 In-Reply-To: <20190312200450.GA25147@redhat.com> References: <20190308141220.GA21082@infradead.org> <56374231-7ba7-0227-8d6d-4d968d71b4d6@redhat.com> <20190311095405-mutt-send-email-mst@kernel.org> <20190311.111413.1140896328197448401.davem@davemloft.net> <6b6dcc4a-2f08-ba67-0423-35787f3b966c@redhat.com> <20190311235140-mutt-send-email-mst@kernel.org> <76c353ed-d6de-99a9-76f9-f258074c1462@redhat.com> <20190312075033-mutt-send-email-mst@kernel.org> <1552405610.3083.17.camel@HansenPartnership.com> <20190312200450.GA25147@redhat.com> X-Mailer: Evolution 3.26.6 Mime-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20190312_205530_795587_D1C3B5D2 X-CRM114-Status: GOOD ( 33.26 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: linux-parisc@vger.kernel.org, kvm@vger.kernel.org, "Michael S. Tsirkin" , netdev@vger.kernel.org, Jason Wang , linux-kernel@vger.kernel.org, peterx@redhat.com, virtualization@lists.linux-foundation.org, hch@infradead.org, linux-mm@kvack.org, David Miller , 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 T24gVHVlLCAyMDE5LTAzLTEyIGF0IDE2OjA0IC0wNDAwLCBBbmRyZWEgQXJjYW5nZWxpIHdyb3Rl Ogo+IE9uIFR1ZSwgTWFyIDEyLCAyMDE5IGF0IDA4OjQ2OjUwQU0gLTA3MDAsIEphbWVzIEJvdHRv bWxleSB3cm90ZToKPiA+IE9uIFR1ZSwgMjAxOS0wMy0xMiBhdCAwNzo1NCAtMDQwMCwgTWljaGFl bCBTLiBUc2lya2luIHdyb3RlOgo+ID4gPiBPbiBUdWUsIE1hciAxMiwgMjAxOSBhdCAwMzoxNzow MFBNICswODAwLCBKYXNvbiBXYW5nIHdyb3RlOgo+ID4gPiA+IAo+ID4gPiA+IE9uIDIwMTkvMy8x MiDDpMK4xaDDpcuGMTE6NTIsIE1pY2hhZWwgUy4gVHNpcmtpbiB3cm90ZToKPiA+ID4gPiA+IE9u IFR1ZSwgTWFyIDEyLCAyMDE5IGF0IDEwOjU5OjA5QU0gKzA4MDAsIEphc29uIFdhbmcgd3JvdGU6 Cj4gPiAKPiA+IFsuLi5dCj4gPiA+ID4gQXQgbGVhc3QgZm9yIC1zdGFibGUsIHdlIG5lZWQgdGhl IGZsdXNoPwo+ID4gPiA+IAo+ID4gPiA+IAo+ID4gPiA+ID4gVGhyZWUgYXRvbWljIG9wcyBwZXIg Yml0IGlzIHdheSB0byBleHBlbnNpdmUuCj4gPiA+ID4gCj4gPiA+ID4gCj4gPiA+ID4gWWVzLgo+ ID4gPiA+IAo+ID4gPiA+IFRoYW5rcwo+ID4gPiAKPiA+ID4gU2VlIEphbWVzJ3MgcmVwbHkgLSBJ IHN0YW5kIGNvcnJlY3RlZCB3ZSBkbyBrdW5tYXAgc28gbm8gbmVlZCB0bwo+ID4gPiBmbHVzaC4K PiA+IAo+ID4gV2VsbCwgSSBzYWlkIHRoYXQncyB3aGF0IHdlIGRvIG9uIFBhcmlzYy4gIFRoZSBj YWNoZXRsYiBkb2N1bWVudAo+ID4gZGVmaW5pdGVseSBzYXlzIGlmIHlvdSBhbHRlciB0aGUgZGF0 YSBiZXR3ZWVuIGttYXAgYW5kIGt1bm1hcCB5b3UKPiA+IGFyZSByZXNwb25zaWJsZSBmb3IgdGhl IGZsdXNoLiAgSXQncyBqdXN0IHRoYXQgZmx1c2hfZGNhY2hlX3BhZ2UoKQo+ID4gaXMgYSBuby1v cCBvbiB4ODYgc28gdGhleSBuZXZlciByZW1lbWJlciB0byBhZGQgaXQgYW5kIHNpbmNlIGl0Cj4g PiB3aWxsIGNyYXNoIHBhcmlzYyBpZiB5b3UgZ2V0IGl0IHdyb25nIHdlIGZpbmFsbHkgZ2F2ZSB1 cCB0cnlpbmcgdG8KPiA+IG1ha2UgdGhlbS4KPiA+IAo+ID4gQnV0IHRoYXQncyB0aGUgcG9pbnQ6 IGl0IGlzIGEgbm8tb3Agb24geW91ciBmYXZvdXJpdGUgYXJjaGl0ZWN0dXJlCj4gPiBzbyBpdCBj b3N0cyB5b3Ugbm90aGluZyB0byBhZGQgaXQuCj4gCj4gWWVzLCB0aGUgZmFjdCBQYXJpc2MgZ2F2 ZSB1cCBhbmQgaXMgZG9pbmcgaXQgb24ga3VubWFwIGlzIHJlYXNvbmFibGUKPiBhcHByb2FjaCBm b3IgUGFyaXNjLCBidXQgaXQgZG9lc24ndCBtb3ZlIHRoZSBuZWVkbGUgYXMgZmFyIGFzIHZob3N0 Cj4gY29tbW9uIGNvZGUgaXMgY29uY2VybmVkLCBiZWNhdXNlIG90aGVyIGFyY2hzIGRvbid0IGZs dXNoIGFueSBjYWNoZQo+IG9uIGt1bm1hcC4KPiAKPiBTbyBlaXRoZXIgYWxsIG90aGVyIGFyY2hz IGdpdmUgdXAgdHJ5aW5nIHRvIG9wdGltaXplLCBvciB2aG9zdCBzdGlsbAo+IGhhcyB0byBjYWxs IGZsdXNoX2RjYWNoZV9wYWdlKCkgYWZ0ZXIga3VubWFwLgoKSSd2ZSBnb3QgdG8gc2F5OiBvcHRp bWl6ZSB3aGF0PyAgV2hhdCBjb2RlIGRvIHdlIGV2ZXIgaGF2ZSBpbiB0aGUKa2VybmVsIHRoYXQg a21hcCdzIGEgcGFnZSBhbmQgdGhlbiBkb2Vzbid0IGRvIGFueXRoaW5nIHdpdGggaXQ/IFlvdSBj YW4KZ3VhcmFudGVlIHRoYXQgb24ga3VubWFwIHRoZSBwYWdlIGlzIGVpdGhlciByZWZlcmVuY2Vk IChuZWVkcwppbnZhbGlkYXRpbmcpIG9yIHVwZGF0ZWQgKG5lZWRzIGZsdXNoaW5nKS4gVGhlIGlu LWtlcm5lbCB1c2Ugb2Yga21hcCBpcwphbHdheXMKCmttYXAKZG8gc29tZXRoaW5nIHdpdGggdGhl IG1hcHBlZCBwYWdlCmt1bm1hcAoKSW4gYSB2ZXJ5IHNob3J0IGludGVydmFsLiAgSXQgc2VlbXMg anVzdCBhIHNpbXBsaWZpY2F0aW9uIHRvIG1ha2UKa3VubWFwIGRvIHRoZSBmbHVzaCBpZiBuZWVk ZWQgcmF0aGVyIHRoYW4gdHJ5IHRvIGhhdmUgdGhlIHVzZXJzCnJlbWVtYmVyLiAgVGhlIHRoaW5n IHdoaWNoIG1ha2VzIHRoaXMgcmVhbGx5IHNpbXBsZSBpcyB0aGF0IG9uIG1vc3QKYXJjaGl0ZWN0 dXJlcyBmbHVzaCBhbmQgaW52YWxpZGF0ZSBpcyB0aGUgc2FtZSBvcGVyYXRpb24uICBJZiB5b3UK cmVhbGx5IHdhbnQgdG8gb3B0aW1pemUgeW91IGNhbiB1c2UgdGhlIHJlZmVyZW5jZWQgYW5kIGRp cnR5IGJpdHMgb24KdGhlIGttYXBwZWQgcHRlIHRvIHRlbGwgeW91IHdoYXQgb3BlcmF0aW9uIHRv IGRvLCBidXQgaWYgeW91ciBmbHVzaCBpcwp5b3VyIGludmFsaWRhdGUsIHlvdSBzaW1wbHkgYXNz dW1lIHRoZSBkYXRhIG5lZWRzIGZsdXNoaW5nIG9uIGt1bm1hcAp3aXRob3V0IGNoZWNraW5nIGFu eXRoaW5nLgoKPiBXaGljaCBtZWFucyBhZnRlciB3ZSBmaXggdmhvc3QgdG8gYWRkIHRoZSBmbHVz aF9kY2FjaGVfcGFnZSBhZnRlcgo+IGt1bm1hcCwgUGFyaXNjIHdpbGwgZ2V0IGEgZG91YmxlIGhp dCAoYnV0IGl0IGFsc28gbWVhbnMgUGFyaXNjIHdhcwo+IHRoZSBvbmx5IG9uZSBvZiB0aG9zZSBh cmNocyBuZWVkZWQgZXhwbGljaXQgY2FjaGUgZmx1c2hlcywgd2hlcmUKPiB2aG9zdCB3b3JrZWQg Y29ycmVjdGx5IHNvIGZhci4uIHNvIGl0IGtpbmRzIG9mIHByb29mcyB5b3VyIHBvaW50IG9mCj4g Z2l2aW5nIHVwIGJlaW5nIHRoZSBzYWZlIGNob2ljZSkuCgpXaGF0IGRvdWJsZSBoaXQ/ICBJZiB0 aGVyZSdzIG5vIGNhY2hlIHRvIGZsdXNoIHRoZW4gY2FjaGUgZmx1c2ggaXMgYQpuby1vcC4gIEl0 J3MgYWxzbyBhIGhpZ2hseSBwaXBsaW5lYWJsZSBuby1vcCBiZWNhdXNlIHRoZSBDUFUgaGFzIHRo ZSBMMQpjYWNoZSB3aXRoaW4gZWFzeSByZWFjaC4gIFRoZSBvbmx5IGV2ZW50IHdoZW4gZmx1c2gg dGFrZXMgYSBsYXJnZQphbW91bnQgdGltZSBpcyBpZiB3ZSBhY3R1YWxseSBoYXZlIGRpcnR5IGRh dGEgdG8gd3JpdGUgYmFjayB0byBtYWluCm1lbW9yeS4KCkphbWVzCgoKX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KbGludXgtYXJtLWtlcm5lbCBtYWlsaW5n IGxpc3QKbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5p bmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtYXJtLWtlcm5lbAo=