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.9 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI, MENTIONS_GIT_HOSTING,SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT 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 3B07BC33CA8 for ; Mon, 13 Jan 2020 09:50:22 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 01D222075B for ; Mon, 13 Jan 2020 09:50:22 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=amazon.com header.i=@amazon.com header.b="Jkmp4Ubf" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726109AbgAMJuV (ORCPT ); Mon, 13 Jan 2020 04:50:21 -0500 Received: from smtp-fw-4101.amazon.com ([72.21.198.25]:7301 "EHLO smtp-fw-4101.amazon.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725992AbgAMJuV (ORCPT ); Mon, 13 Jan 2020 04:50:21 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazon201209; t=1578909020; x=1610445020; h=from:to:cc:subject:date:message-id:mime-version: in-reply-to:content-transfer-encoding; bh=PX1ZrZhA4CFfySGOi+tectq1AtVISPobj3q9mu2po2A=; b=Jkmp4Ubfn4RWKqT1+45vPVd296IKOSShWLxagHEoflHm9yXpRVwkdzQP 0pWu0WonTsnlJOmOHWvSGdDwUUHy+Lrj4e75lI5o/0TOFH5cP+/hUImxZ FwhdTtAGCrhodnLVVaTB7AdbVPMXctAEZVjZP7YuGUjkiP6l960d8k/tY k=; IronPort-SDR: SVAJwSqTvIC1cetRulnIw53zATgp+qtYMK4EOT5etiQow4u9t9ZNP8jyw4WBe0jb4aiDkBN7PC R+Cf6N16IMRA== X-IronPort-AV: E=Sophos;i="5.69,428,1571702400"; d="scan'208";a="12077553" Received: from iad12-co-svc-p1-lb1-vlan3.amazon.com (HELO email-inbound-relay-1a-67b371d8.us-east-1.amazon.com) ([10.43.8.6]) by smtp-border-fw-out-4101.iad4.amazon.com with ESMTP; 13 Jan 2020 09:50:19 +0000 Received: from EX13MTAUEA002.ant.amazon.com (iad55-ws-svc-p15-lb9-vlan3.iad.amazon.com [10.40.159.166]) by email-inbound-relay-1a-67b371d8.us-east-1.amazon.com (Postfix) with ESMTPS id DFF64A2B27; Mon, 13 Jan 2020 09:50:16 +0000 (UTC) Received: from EX13D31EUA001.ant.amazon.com (10.43.165.15) by EX13MTAUEA002.ant.amazon.com (10.43.61.77) with Microsoft SMTP Server (TLS) id 15.0.1236.3; Mon, 13 Jan 2020 09:50:16 +0000 Received: from u886c93fd17d25d.ant.amazon.com (10.43.160.92) by EX13D31EUA001.ant.amazon.com (10.43.165.15) with Microsoft SMTP Server (TLS) id 15.0.1367.3; Mon, 13 Jan 2020 09:50:11 +0000 From: SeongJae Park To: SeongJae Park CC: , , , , , , , , Subject: Re: [Xen-devel] [PATCH v13 0/5] xenbus/backend: Add memory pressure handler callback Date: Mon, 13 Jan 2020 10:49:52 +0100 Message-ID: <20200113094952.30727-1-sjpark@amazon.com> X-Mailer: git-send-email 2.17.1 MIME-Version: 1.0 In-Reply-To: <20191218183718.31719-1-sjpark@amazon.com> (raw) Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 8bit X-Originating-IP: [10.43.160.92] X-ClientProxiedBy: EX13D27UWA001.ant.amazon.com (10.43.160.19) To EX13D31EUA001.ant.amazon.com (10.43.165.15) Sender: linux-block-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-block@vger.kernel.org Every patch of this patchset got at least one 'Reviewed-by' or 'Acked-by' from appropriate maintainers by last Wednesday, and after that, got no comment yet. May I ask some more comments? Thanks, SeongJae Park On Wed, 18 Dec 2019 19:37:13 +0100 SeongJae Park wrote: > Granting pages consumes backend system memory. In systems configured > with insufficient spare memory for those pages, it can cause a memory > pressure situation. However, finding the optimal amount of the spare > memory is challenging for large systems having dynamic resource > utilization patterns. Also, such a static configuration might lack > flexibility. > > To mitigate such problems, this patchset adds a memory reclaim callback > to 'xenbus_driver' (patch 1) and then introduce a lock for race > condition avoidance (patch 2). After that, patch 3 applies the callback > mechanism to mitigate the problem in 'xen-blkback'. The fourth and > fifth patches are trivial cleanups; those fix nits we found during the > development of this patchset. > > Note that patches 1, 4, and 5 are not changed since v9. > > > Base Version > ------------ > > This patch is based on v5.4. A complete tree is also available at my > public git repo: > https://github.com/sjp38/linux/tree/patches/blkback/buffer_squeeze/v13 > > > Patch History > ------------- > > Changes from v12 > (https://lore.kernel.org/xen-devel/20191218104232.9606-1-sjpark@amazon.com/) > - Do not unnecessarily disable interrupts (suggested by Juergen) > - Hold lock from xenbus side (suggested by Juergen) > > Changes from v11 > (https://lore.kernel.org/xen-devel/20191217160748.693-2-sjpark@amazon.com/) > - Fix wrong trylock use (reported by Juergen) > - Merge patch 3 and 4 (suggested by Juergen) > - Update test result > > Changes from v10 > (https://lore.kernel.org/xen-devel/20191216124527.30306-1-sjpark@amazon.com/) > - Fix race condition (reported by SeongJae, suggested by Juergen) > > Changes from v9 > (https://lore.kernel.org/xen-devel/20191213153546.17425-1-sjpark@amazon.de/) > - Add 'Reviewed-by' and 'Acked-by' from Roger Pau Monné > - Update the commit message for overhead test of the 2nd path > > Changes from v8 > (https://lore.kernel.org/xen-devel/20191213130211.24011-1-sjpark@amazon.de/) > - Drop 'Reviewed-by: Juergen' from the second patch > (suggested by Roger Pau Monné) > - Update contact of the new module param to SeongJae Park > > (suggested by Roger Pau Monné) > - Wordsmith the description of the parameter > (suggested by Roger Pau Monné) > - Fix dumb bugs > (suggested by Roger Pau Monné) > - Move module param definition to xenbus.c and reduce the number of > lines for this change > (suggested by Roger Pau Monné) > - Add a comment for the new callback, reclaim_memory, as other > callbacks also have > - Add another trivial cleanup of xenbus.c file (4th patch) > > Changes from v7 > (https://lore.kernel.org/xen-devel/20191211181016.14366-1-sjpark@amazon.de/) > - Update sysfs-driver-xen-blkback for new parameter > (suggested by Roger Pau Monné) > - Use per-xen_blkif buffer_squeeze_end instead of global variable > (suggested by Roger Pau Monné) > > Changes from v6 > (https://lore.kernel.org/linux-block/20191211042428.5961-1-sjpark@amazon.de/) > - Remove more unnecessary prefixes (suggested by Roger Pau Monné) > - Constify a variable (suggested by Roger Pau Monné) > - Rename 'reclaim' into 'reclaim_memory' (suggested by Roger Pau Monné) > - More wordsmith of the commit message (suggested by Roger Pau Monné) > > Changes from v5 > (https://lore.kernel.org/linux-block/20191210080628.5264-1-sjpark@amazon.de/) > - Wordsmith the commit messages (suggested by Roger Pau Monné) > - Change the reclaim callback return type (suggested by Roger Pau > Monné) > - Change the type of the blkback squeeze duration variable > (suggested by Roger Pau Monné) > - Add a patch for removal of unnecessary static variable name prefixes > (suggested by Roger Pau Monné) > - Fix checkpatch.pl warnings > > Changes from v4 > (https://lore.kernel.org/xen-devel/20191209194305.20828-1-sjpark@amazon.com/) > - Remove domain id parameter from the callback (suggested by Juergen > Gross) > - Rename xen-blkback module parameter (suggested by Stefan Nuernburger) > > Changes from v3 > (https://lore.kernel.org/xen-devel/20191209085839.21215-1-sjpark@amazon.com/) > - Add general callback in xen_driver and use it (suggested by Juergen > Gross) > > Changes from v2 > (https://lore.kernel.org/linux-block/af195033-23d5-38ed-b73b-f6e2e3b34541@amazon.com) > - Rename the module parameter and variables for brevity > (aggressive shrinking -> squeezing) > > Changes from v1 > (https://lore.kernel.org/xen-devel/20191204113419.2298-1-sjpark@amazon.com/) > - Adjust the description to not use the term, `arbitrarily` > (suggested by Paul Durrant) > - Specify time unit of the duration in the parameter description, > (suggested by Maximilian Heyne) > - Change default aggressive shrinking duration from 1ms to 10ms > - Merge two patches into one single patch > > > SeongJae Park (5): > xenbus/backend: Add memory pressure handler callback > xenbus/backend: Protect xenbus callback with lock > xen/blkback: Squeeze page pools if a memory pressure is detected > xen/blkback: Remove unnecessary static variable name prefixes > xen/blkback: Consistently insert one empty line between functions > > .../ABI/testing/sysfs-driver-xen-blkback | 10 +++++ > drivers/block/xen-blkback/blkback.c | 42 +++++++++---------- > drivers/block/xen-blkback/common.h | 1 + > drivers/block/xen-blkback/xenbus.c | 28 ++++++++++--- > drivers/xen/xenbus/xenbus_probe.c | 8 +++- > drivers/xen/xenbus/xenbus_probe_backend.c | 38 +++++++++++++++++ > include/xen/xenbus.h | 3 ++ > 7 files changed, 103 insertions(+), 27 deletions(-) > > -- > 2.17.1 > 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=-7.5 required=3.0 tests=DKIM_ADSP_ALL,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI, MENTIONS_GIT_HOSTING,SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT 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 07332C33CA8 for ; Mon, 13 Jan 2020 09:50:43 +0000 (UTC) Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (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 C43222075B for ; Mon, 13 Jan 2020 09:50:42 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=amazon.com header.i=@amazon.com header.b="Jkmp4Ubf" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org C43222075B Authentication-Results: mail.kernel.org; dmarc=fail (p=quarantine dis=none) header.from=amazon.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=xen-devel-bounces@lists.xenproject.org Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1iqwMX-0003ff-Gr; Mon, 13 Jan 2020 09:50:21 +0000 Received: from all-amaz-eas1.inumbo.com ([34.197.232.57] helo=us1-amaz-eas2.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1iqwMW-0003fa-IY for xen-devel@lists.xenproject.org; Mon, 13 Jan 2020 09:50:20 +0000 X-Inumbo-ID: 1c31847c-35ea-11ea-8241-12813bfff9fa Received: from smtp-fw-4101.amazon.com (unknown [72.21.198.25]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS id 1c31847c-35ea-11ea-8241-12813bfff9fa; Mon, 13 Jan 2020 09:50:19 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazon201209; t=1578909020; x=1610445020; h=from:to:cc:subject:date:message-id:mime-version: in-reply-to:content-transfer-encoding; bh=PX1ZrZhA4CFfySGOi+tectq1AtVISPobj3q9mu2po2A=; b=Jkmp4Ubfn4RWKqT1+45vPVd296IKOSShWLxagHEoflHm9yXpRVwkdzQP 0pWu0WonTsnlJOmOHWvSGdDwUUHy+Lrj4e75lI5o/0TOFH5cP+/hUImxZ FwhdTtAGCrhodnLVVaTB7AdbVPMXctAEZVjZP7YuGUjkiP6l960d8k/tY k=; IronPort-SDR: SVAJwSqTvIC1cetRulnIw53zATgp+qtYMK4EOT5etiQow4u9t9ZNP8jyw4WBe0jb4aiDkBN7PC R+Cf6N16IMRA== X-IronPort-AV: E=Sophos;i="5.69,428,1571702400"; d="scan'208";a="12077553" Received: from iad12-co-svc-p1-lb1-vlan3.amazon.com (HELO email-inbound-relay-1a-67b371d8.us-east-1.amazon.com) ([10.43.8.6]) by smtp-border-fw-out-4101.iad4.amazon.com with ESMTP; 13 Jan 2020 09:50:19 +0000 Received: from EX13MTAUEA002.ant.amazon.com (iad55-ws-svc-p15-lb9-vlan3.iad.amazon.com [10.40.159.166]) by email-inbound-relay-1a-67b371d8.us-east-1.amazon.com (Postfix) with ESMTPS id DFF64A2B27; Mon, 13 Jan 2020 09:50:16 +0000 (UTC) Received: from EX13D31EUA001.ant.amazon.com (10.43.165.15) by EX13MTAUEA002.ant.amazon.com (10.43.61.77) with Microsoft SMTP Server (TLS) id 15.0.1236.3; Mon, 13 Jan 2020 09:50:16 +0000 Received: from u886c93fd17d25d.ant.amazon.com (10.43.160.92) by EX13D31EUA001.ant.amazon.com (10.43.165.15) with Microsoft SMTP Server (TLS) id 15.0.1367.3; Mon, 13 Jan 2020 09:50:11 +0000 From: SeongJae Park To: SeongJae Park Date: Mon, 13 Jan 2020 10:49:52 +0100 Message-ID: <20200113094952.30727-1-sjpark@amazon.com> X-Mailer: git-send-email 2.17.1 MIME-Version: 1.0 In-Reply-To: <20191218183718.31719-1-sjpark@amazon.com> (raw) X-Originating-IP: [10.43.160.92] X-ClientProxiedBy: EX13D27UWA001.ant.amazon.com (10.43.160.19) To EX13D31EUA001.ant.amazon.com (10.43.165.15) Precedence: Bulk Subject: Re: [Xen-devel] [PATCH v13 0/5] xenbus/backend: Add memory pressure handler callback X-BeenThere: xen-devel@lists.xenproject.org X-Mailman-Version: 2.1.23 List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Cc: jgross@suse.com, axboe@kernel.dk, konrad.wilk@oracle.com, pdurrant@amazon.com, sj38.park@gmail.com, linux-kernel@vger.kernel.org, linux-block@vger.kernel.org, xen-devel@lists.xenproject.org, roger.pau@citrix.com Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" RXZlcnkgcGF0Y2ggb2YgdGhpcyBwYXRjaHNldCBnb3QgYXQgbGVhc3Qgb25lICdSZXZpZXdlZC1i eScgb3IgJ0Fja2VkLWJ5JyBmcm9tCmFwcHJvcHJpYXRlIG1haW50YWluZXJzIGJ5IGxhc3QgV2Vk bmVzZGF5LCBhbmQgYWZ0ZXIgdGhhdCwgZ290IG5vIGNvbW1lbnQgeWV0LgpNYXkgSSBhc2sgc29t ZSBtb3JlIGNvbW1lbnRzPwoKClRoYW5rcywKU2VvbmdKYWUgUGFyawoKT24gV2VkLCAxOCBEZWMg MjAxOSAxOTozNzoxMyArMDEwMCBTZW9uZ0phZSBQYXJrIDxzanBhcmtAYW1hem9uLmNvbT4gd3Jv dGU6Cgo+IEdyYW50aW5nIHBhZ2VzIGNvbnN1bWVzIGJhY2tlbmQgc3lzdGVtIG1lbW9yeS4gIElu IHN5c3RlbXMgY29uZmlndXJlZAo+IHdpdGggaW5zdWZmaWNpZW50IHNwYXJlIG1lbW9yeSBmb3Ig dGhvc2UgcGFnZXMsIGl0IGNhbiBjYXVzZSBhIG1lbW9yeQo+IHByZXNzdXJlIHNpdHVhdGlvbi4g IEhvd2V2ZXIsIGZpbmRpbmcgdGhlIG9wdGltYWwgYW1vdW50IG9mIHRoZSBzcGFyZQo+IG1lbW9y eSBpcyBjaGFsbGVuZ2luZyBmb3IgbGFyZ2Ugc3lzdGVtcyBoYXZpbmcgZHluYW1pYyByZXNvdXJj ZQo+IHV0aWxpemF0aW9uIHBhdHRlcm5zLiAgQWxzbywgc3VjaCBhIHN0YXRpYyBjb25maWd1cmF0 aW9uIG1pZ2h0IGxhY2sKPiBmbGV4aWJpbGl0eS4KPiAKPiBUbyBtaXRpZ2F0ZSBzdWNoIHByb2Js ZW1zLCB0aGlzIHBhdGNoc2V0IGFkZHMgYSBtZW1vcnkgcmVjbGFpbSBjYWxsYmFjawo+IHRvICd4 ZW5idXNfZHJpdmVyJyAocGF0Y2ggMSkgYW5kIHRoZW4gaW50cm9kdWNlIGEgbG9jayBmb3IgcmFj ZQo+IGNvbmRpdGlvbiBhdm9pZGFuY2UgKHBhdGNoIDIpLiAgQWZ0ZXIgdGhhdCwgcGF0Y2ggMyBh cHBsaWVzIHRoZSBjYWxsYmFjawo+IG1lY2hhbmlzbSB0byBtaXRpZ2F0ZSB0aGUgcHJvYmxlbSBp biAneGVuLWJsa2JhY2snLiAgVGhlIGZvdXJ0aCBhbmQKPiBmaWZ0aCBwYXRjaGVzIGFyZSB0cml2 aWFsIGNsZWFudXBzOyB0aG9zZSBmaXggbml0cyB3ZSBmb3VuZCBkdXJpbmcgdGhlCj4gZGV2ZWxv cG1lbnQgb2YgdGhpcyBwYXRjaHNldC4KPiAKPiBOb3RlIHRoYXQgcGF0Y2hlcyAxLCA0LCBhbmQg NSBhcmUgbm90IGNoYW5nZWQgc2luY2UgdjkuCj4gCj4gCj4gQmFzZSBWZXJzaW9uCj4gLS0tLS0t LS0tLS0tCj4gCj4gVGhpcyBwYXRjaCBpcyBiYXNlZCBvbiB2NS40LiAgQSBjb21wbGV0ZSB0cmVl IGlzIGFsc28gYXZhaWxhYmxlIGF0IG15Cj4gcHVibGljIGdpdCByZXBvOgo+IGh0dHBzOi8vZ2l0 aHViLmNvbS9zanAzOC9saW51eC90cmVlL3BhdGNoZXMvYmxrYmFjay9idWZmZXJfc3F1ZWV6ZS92 MTMKPiAKPiAKPiBQYXRjaCBIaXN0b3J5Cj4gLS0tLS0tLS0tLS0tLQo+IAo+IENoYW5nZXMgZnJv bSB2MTIKPiAoaHR0cHM6Ly9sb3JlLmtlcm5lbC5vcmcveGVuLWRldmVsLzIwMTkxMjE4MTA0MjMy Ljk2MDYtMS1zanBhcmtAYW1hem9uLmNvbS8pCj4gIC0gRG8gbm90IHVubmVjZXNzYXJpbHkgZGlz YWJsZSBpbnRlcnJ1cHRzIChzdWdnZXN0ZWQgYnkgSnVlcmdlbikKPiAgLSBIb2xkIGxvY2sgZnJv bSB4ZW5idXMgc2lkZSAoc3VnZ2VzdGVkIGJ5IEp1ZXJnZW4pCj4gCj4gQ2hhbmdlcyBmcm9tIHYx MQo+IChodHRwczovL2xvcmUua2VybmVsLm9yZy94ZW4tZGV2ZWwvMjAxOTEyMTcxNjA3NDguNjkz LTItc2pwYXJrQGFtYXpvbi5jb20vKQo+ICAtIEZpeCB3cm9uZyB0cnlsb2NrIHVzZSAocmVwb3J0 ZWQgYnkgSnVlcmdlbikKPiAgLSBNZXJnZSBwYXRjaCAzIGFuZCA0IChzdWdnZXN0ZWQgYnkgSnVl cmdlbikKPiAgLSBVcGRhdGUgdGVzdCByZXN1bHQKPiAKPiBDaGFuZ2VzIGZyb20gdjEwCj4gKGh0 dHBzOi8vbG9yZS5rZXJuZWwub3JnL3hlbi1kZXZlbC8yMDE5MTIxNjEyNDUyNy4zMDMwNi0xLXNq cGFya0BhbWF6b24uY29tLykKPiAgLSBGaXggcmFjZSBjb25kaXRpb24gKHJlcG9ydGVkIGJ5IFNl b25nSmFlLCBzdWdnZXN0ZWQgYnkgSnVlcmdlbikKPiAKPiBDaGFuZ2VzIGZyb20gdjkKPiAoaHR0 cHM6Ly9sb3JlLmtlcm5lbC5vcmcveGVuLWRldmVsLzIwMTkxMjEzMTUzNTQ2LjE3NDI1LTEtc2pw YXJrQGFtYXpvbi5kZS8pCj4gIC0gQWRkICdSZXZpZXdlZC1ieScgYW5kICdBY2tlZC1ieScgZnJv bSBSb2dlciBQYXUgTW9ubsOpCj4gIC0gVXBkYXRlIHRoZSBjb21taXQgbWVzc2FnZSBmb3Igb3Zl cmhlYWQgdGVzdCBvZiB0aGUgMm5kIHBhdGgKPiAKPiBDaGFuZ2VzIGZyb20gdjgKPiAoaHR0cHM6 Ly9sb3JlLmtlcm5lbC5vcmcveGVuLWRldmVsLzIwMTkxMjEzMTMwMjExLjI0MDExLTEtc2pwYXJr QGFtYXpvbi5kZS8pCj4gIC0gRHJvcCAnUmV2aWV3ZWQtYnk6IEp1ZXJnZW4nIGZyb20gdGhlIHNl Y29uZCBwYXRjaAo+ICAgIChzdWdnZXN0ZWQgYnkgUm9nZXIgUGF1IE1vbm7DqSkKPiAgLSBVcGRh dGUgY29udGFjdCBvZiB0aGUgbmV3IG1vZHVsZSBwYXJhbSB0byBTZW9uZ0phZSBQYXJrCj4gICAg PHNqcGFya0BhbWF6b24uZGU+Cj4gICAgKHN1Z2dlc3RlZCBieSBSb2dlciBQYXUgTW9ubsOpKQo+ ICAtIFdvcmRzbWl0aCB0aGUgZGVzY3JpcHRpb24gb2YgdGhlIHBhcmFtZXRlcgo+ICAgIChzdWdn ZXN0ZWQgYnkgUm9nZXIgUGF1IE1vbm7DqSkKPiAgLSBGaXggZHVtYiBidWdzCj4gICAgKHN1Z2dl c3RlZCBieSBSb2dlciBQYXUgTW9ubsOpKQo+ICAtIE1vdmUgbW9kdWxlIHBhcmFtIGRlZmluaXRp b24gdG8geGVuYnVzLmMgYW5kIHJlZHVjZSB0aGUgbnVtYmVyIG9mCj4gICAgbGluZXMgZm9yIHRo aXMgY2hhbmdlCj4gICAgKHN1Z2dlc3RlZCBieSBSb2dlciBQYXUgTW9ubsOpKQo+ICAtIEFkZCBh IGNvbW1lbnQgZm9yIHRoZSBuZXcgY2FsbGJhY2ssIHJlY2xhaW1fbWVtb3J5LCBhcyBvdGhlcgo+ ICAgIGNhbGxiYWNrcyBhbHNvIGhhdmUKPiAgLSBBZGQgYW5vdGhlciB0cml2aWFsIGNsZWFudXAg b2YgeGVuYnVzLmMgZmlsZSAoNHRoIHBhdGNoKQo+IAo+IENoYW5nZXMgZnJvbSB2Nwo+IChodHRw czovL2xvcmUua2VybmVsLm9yZy94ZW4tZGV2ZWwvMjAxOTEyMTExODEwMTYuMTQzNjYtMS1zanBh cmtAYW1hem9uLmRlLykKPiAgLSBVcGRhdGUgc3lzZnMtZHJpdmVyLXhlbi1ibGtiYWNrIGZvciBu ZXcgcGFyYW1ldGVyCj4gICAgKHN1Z2dlc3RlZCBieSBSb2dlciBQYXUgTW9ubsOpKQo+ICAtIFVz ZSBwZXIteGVuX2Jsa2lmIGJ1ZmZlcl9zcXVlZXplX2VuZCBpbnN0ZWFkIG9mIGdsb2JhbCB2YXJp YWJsZQo+ICAgIChzdWdnZXN0ZWQgYnkgUm9nZXIgUGF1IE1vbm7DqSkKPiAKPiBDaGFuZ2VzIGZy b20gdjYKPiAoaHR0cHM6Ly9sb3JlLmtlcm5lbC5vcmcvbGludXgtYmxvY2svMjAxOTEyMTEwNDI0 MjguNTk2MS0xLXNqcGFya0BhbWF6b24uZGUvKQo+ICAtIFJlbW92ZSBtb3JlIHVubmVjZXNzYXJ5 IHByZWZpeGVzIChzdWdnZXN0ZWQgYnkgUm9nZXIgUGF1IE1vbm7DqSkKPiAgLSBDb25zdGlmeSBh IHZhcmlhYmxlIChzdWdnZXN0ZWQgYnkgUm9nZXIgUGF1IE1vbm7DqSkKPiAgLSBSZW5hbWUgJ3Jl Y2xhaW0nIGludG8gJ3JlY2xhaW1fbWVtb3J5JyAoc3VnZ2VzdGVkIGJ5IFJvZ2VyIFBhdSBNb25u w6kpCj4gIC0gTW9yZSB3b3Jkc21pdGggb2YgdGhlIGNvbW1pdCBtZXNzYWdlIChzdWdnZXN0ZWQg YnkgUm9nZXIgUGF1IE1vbm7DqSkKPiAKPiBDaGFuZ2VzIGZyb20gdjUKPiAoaHR0cHM6Ly9sb3Jl Lmtlcm5lbC5vcmcvbGludXgtYmxvY2svMjAxOTEyMTAwODA2MjguNTI2NC0xLXNqcGFya0BhbWF6 b24uZGUvKQo+ICAtIFdvcmRzbWl0aCB0aGUgY29tbWl0IG1lc3NhZ2VzIChzdWdnZXN0ZWQgYnkg Um9nZXIgUGF1IE1vbm7DqSkKPiAgLSBDaGFuZ2UgdGhlIHJlY2xhaW0gY2FsbGJhY2sgcmV0dXJu IHR5cGUgKHN1Z2dlc3RlZCBieSBSb2dlciBQYXUKPiAgICBNb25uw6kpCj4gIC0gQ2hhbmdlIHRo ZSB0eXBlIG9mIHRoZSBibGtiYWNrIHNxdWVlemUgZHVyYXRpb24gdmFyaWFibGUKPiAgICAoc3Vn Z2VzdGVkIGJ5IFJvZ2VyIFBhdSBNb25uw6kpCj4gIC0gQWRkIGEgcGF0Y2ggZm9yIHJlbW92YWwg b2YgdW5uZWNlc3Nhcnkgc3RhdGljIHZhcmlhYmxlIG5hbWUgcHJlZml4ZXMKPiAgICAoc3VnZ2Vz dGVkIGJ5IFJvZ2VyIFBhdSBNb25uw6kpCj4gIC0gRml4IGNoZWNrcGF0Y2gucGwgd2FybmluZ3MK PiAKPiBDaGFuZ2VzIGZyb20gdjQKPiAoaHR0cHM6Ly9sb3JlLmtlcm5lbC5vcmcveGVuLWRldmVs LzIwMTkxMjA5MTk0MzA1LjIwODI4LTEtc2pwYXJrQGFtYXpvbi5jb20vKQo+ICAtIFJlbW92ZSBk b21haW4gaWQgcGFyYW1ldGVyIGZyb20gdGhlIGNhbGxiYWNrIChzdWdnZXN0ZWQgYnkgSnVlcmdl bgo+ICAgIEdyb3NzKQo+ICAtIFJlbmFtZSB4ZW4tYmxrYmFjayBtb2R1bGUgcGFyYW1ldGVyIChz dWdnZXN0ZWQgYnkgU3RlZmFuIE51ZXJuYnVyZ2VyKQo+IAo+IENoYW5nZXMgZnJvbSB2Mwo+ICho dHRwczovL2xvcmUua2VybmVsLm9yZy94ZW4tZGV2ZWwvMjAxOTEyMDkwODU4MzkuMjEyMTUtMS1z anBhcmtAYW1hem9uLmNvbS8pCj4gIC0gQWRkIGdlbmVyYWwgY2FsbGJhY2sgaW4geGVuX2RyaXZl ciBhbmQgdXNlIGl0IChzdWdnZXN0ZWQgYnkgSnVlcmdlbgo+ICAgIEdyb3NzKQo+IAo+IENoYW5n ZXMgZnJvbSB2Mgo+IChodHRwczovL2xvcmUua2VybmVsLm9yZy9saW51eC1ibG9jay9hZjE5NTAz My0yM2Q1LTM4ZWQtYjczYi1mNmUyZTNiMzQ1NDFAYW1hem9uLmNvbSkKPiAgLSBSZW5hbWUgdGhl IG1vZHVsZSBwYXJhbWV0ZXIgYW5kIHZhcmlhYmxlcyBmb3IgYnJldml0eQo+ICAgIChhZ2dyZXNz aXZlIHNocmlua2luZyAtPiBzcXVlZXppbmcpCj4gCj4gQ2hhbmdlcyBmcm9tIHYxCj4gKGh0dHBz Oi8vbG9yZS5rZXJuZWwub3JnL3hlbi1kZXZlbC8yMDE5MTIwNDExMzQxOS4yMjk4LTEtc2pwYXJr QGFtYXpvbi5jb20vKQo+ICAtIEFkanVzdCB0aGUgZGVzY3JpcHRpb24gdG8gbm90IHVzZSB0aGUg dGVybSwgYGFyYml0cmFyaWx5YAo+ICAgIChzdWdnZXN0ZWQgYnkgUGF1bCBEdXJyYW50KQo+ICAt IFNwZWNpZnkgdGltZSB1bml0IG9mIHRoZSBkdXJhdGlvbiBpbiB0aGUgcGFyYW1ldGVyIGRlc2Ny aXB0aW9uLAo+ICAgIChzdWdnZXN0ZWQgYnkgTWF4aW1pbGlhbiBIZXluZSkKPiAgLSBDaGFuZ2Ug ZGVmYXVsdCBhZ2dyZXNzaXZlIHNocmlua2luZyBkdXJhdGlvbiBmcm9tIDFtcyB0byAxMG1zCj4g IC0gTWVyZ2UgdHdvIHBhdGNoZXMgaW50byBvbmUgc2luZ2xlIHBhdGNoCj4gCj4gCj4gU2VvbmdK YWUgUGFyayAoNSk6Cj4gICB4ZW5idXMvYmFja2VuZDogQWRkIG1lbW9yeSBwcmVzc3VyZSBoYW5k bGVyIGNhbGxiYWNrCj4gICB4ZW5idXMvYmFja2VuZDogUHJvdGVjdCB4ZW5idXMgY2FsbGJhY2sg d2l0aCBsb2NrCj4gICB4ZW4vYmxrYmFjazogU3F1ZWV6ZSBwYWdlIHBvb2xzIGlmIGEgbWVtb3J5 IHByZXNzdXJlIGlzIGRldGVjdGVkCj4gICB4ZW4vYmxrYmFjazogUmVtb3ZlIHVubmVjZXNzYXJ5 IHN0YXRpYyB2YXJpYWJsZSBuYW1lIHByZWZpeGVzCj4gICB4ZW4vYmxrYmFjazogQ29uc2lzdGVu dGx5IGluc2VydCBvbmUgZW1wdHkgbGluZSBiZXR3ZWVuIGZ1bmN0aW9ucwo+IAo+ICAuLi4vQUJJ L3Rlc3Rpbmcvc3lzZnMtZHJpdmVyLXhlbi1ibGtiYWNrICAgICAgfCAxMCArKysrKwo+ICBkcml2 ZXJzL2Jsb2NrL3hlbi1ibGtiYWNrL2Jsa2JhY2suYyAgICAgICAgICAgfCA0MiArKysrKysrKyst LS0tLS0tLS0tCj4gIGRyaXZlcnMvYmxvY2sveGVuLWJsa2JhY2svY29tbW9uLmggICAgICAgICAg ICB8ICAxICsKPiAgZHJpdmVycy9ibG9jay94ZW4tYmxrYmFjay94ZW5idXMuYyAgICAgICAgICAg IHwgMjggKysrKysrKysrKy0tLQo+ICBkcml2ZXJzL3hlbi94ZW5idXMveGVuYnVzX3Byb2JlLmMg ICAgICAgICAgICAgfCAgOCArKystCj4gIGRyaXZlcnMveGVuL3hlbmJ1cy94ZW5idXNfcHJvYmVf YmFja2VuZC5jICAgICB8IDM4ICsrKysrKysrKysrKysrKysrCj4gIGluY2x1ZGUveGVuL3hlbmJ1 cy5oICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAzICsrCj4gIDcgZmlsZXMgY2hhbmdlZCwg MTAzIGluc2VydGlvbnMoKyksIDI3IGRlbGV0aW9ucygtKQo+IAo+IC0tIAo+IDIuMTcuMQo+IAoK X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVs IG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0 cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3hlbi1kZXZlbA==