From mboxrd@z Thu Jan 1 00:00:00 1970 From: Julien Grall Subject: [PATCH MM-PART3 v2 03/12] xen/arm: mm: Move out of xen_pt_update() the logic to update an entry Date: Tue, 14 May 2019 13:31:16 +0100 Message-ID: <20190514123125.29086-4-julien.grall@arm.com> References: <20190514123125.29086-1-julien.grall@arm.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: 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 1hQWan-0005LK-1a for xen-devel@lists.xenproject.org; Tue, 14 May 2019 12:31:37 +0000 In-Reply-To: <20190514123125.29086-1-julien.grall@arm.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: xen-devel@lists.xenproject.org Cc: Oleksandr_Tyshchenko@epam.com, Julien Grall , Stefano Stabellini , Andrii Anisov List-Id: xen-devel@lists.xenproject.org SW4gcHJlcGFyYXRpb24gb2YgcmV3b3JrIG9mIHRoZSBYZW4gUFQsIHRoZSBsb2dpYyB0byB1cGRh dGUgYW4gZW50cnkKaW4gbW92ZWQgb3V0IGluIGEgc2VwYXJhdGUgZnVuY3Rpb24uCgpTaWduZWQt b2ZmLWJ5OiBKdWxpZW4gR3JhbGwgPGp1bGllbi5ncmFsbEBhcm0uY29tPgpSZXZpZXdlZC1ieTog QW5kcmlpIEFuaXNvdiA8YW5kcmlpX2FuaXNvdkBlcGFtLmNvbT4KCi0tLQogICAgQ2hhbmdlcyBp biB2MjoKICAgICAgICAtIEFkZCBBbmRyaWkncyByZXZpZXdlZC1ieQotLS0KIHhlbi9hcmNoL2Fy bS9tbS5jIHwgMTQwICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDc0IGluc2VydGlvbnMoKyksIDY2IGRlbGV0aW9u cygtKQoKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL2FybS9tbS5jIGIveGVuL2FyY2gvYXJtL21tLmMK aW5kZXggMzZlMjJmYzlhZC4uZjk1NmFhNjM5OSAxMDA2NDQKLS0tIGEveGVuL2FyY2gvYXJtL21t LmMKKysrIGIveGVuL2FyY2gvYXJtL21tLmMKQEAgLTk2OCw2ICs5NjgsNzYgQEAgZW51bSB4ZW5t YXBfb3BlcmF0aW9uIHsKICAgICBSRVNFUlZFCiB9OwogCitzdGF0aWMgaW50IHhlbl9wdF91cGRh dGVfZW50cnkoZW51bSB4ZW5tYXBfb3BlcmF0aW9uIG9wLCB1bnNpZ25lZCBsb25nIGFkZHIsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWZuX3QgbWZuLCB1bnNpZ25lZCBpbnQgZmxh Z3MpCit7CisgICAgbHBhZV90IHB0ZSwgKmVudHJ5OworICAgIGxwYWVfdCAqdGhpcmQgPSBOVUxM OworCisgICAgZW50cnkgPSAmeGVuX3NlY29uZFtzZWNvbmRfbGluZWFyX29mZnNldChhZGRyKV07 CisgICAgaWYgKCAhbHBhZV9pc192YWxpZCgqZW50cnkpIHx8ICFscGFlX2lzX3RhYmxlKCplbnRy eSwgMikgKQorICAgIHsKKyAgICAgICAgaW50IHJjID0gY3JlYXRlX3hlbl90YWJsZShlbnRyeSk7 CisgICAgICAgIGlmICggcmMgPCAwICkgeworICAgICAgICAgICAgcHJpbnRrKCIlczogTDIgZmFp bGVkXG4iLCBfX2Z1bmNfXyk7CisgICAgICAgICAgICByZXR1cm4gcmM7CisgICAgICAgIH0KKyAg ICB9CisKKyAgICBCVUdfT04oIWxwYWVfaXNfdmFsaWQoKmVudHJ5KSk7CisKKyAgICB0aGlyZCA9 IG1mbl90b192aXJ0KGxwYWVfZ2V0X21mbigqZW50cnkpKTsKKyAgICBlbnRyeSA9ICZ0aGlyZFt0 aGlyZF90YWJsZV9vZmZzZXQoYWRkcildOworCisgICAgc3dpdGNoICggb3AgKSB7CisgICAgICAg IGNhc2UgSU5TRVJUOgorICAgICAgICBjYXNlIFJFU0VSVkU6CisgICAgICAgICAgICBpZiAoIGxw YWVfaXNfdmFsaWQoKmVudHJ5KSApCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcHJp bnRrKCIlczogdHJ5aW5nIHRvIHJlcGxhY2UgYW4gZXhpc3RpbmcgbWFwcGluZyBhZGRyPSVseCBt Zm49JSJQUklfbWZuIlxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgX19mdW5jX18sIGFkZHIs IG1mbl94KG1mbikpOworICAgICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOworICAgICAgICAg ICAgfQorICAgICAgICAgICAgaWYgKCBvcCA9PSBSRVNFUlZFICkKKyAgICAgICAgICAgICAgICBi cmVhazsKKyAgICAgICAgICAgIHB0ZSA9IG1mbl90b194ZW5fZW50cnkobWZuLCBQQUdFX0FJX01B U0soZmxhZ3MpKTsKKyAgICAgICAgICAgIHB0ZS5wdC5ybyA9IFBBR0VfUk9fTUFTSyhmbGFncyk7 CisgICAgICAgICAgICBwdGUucHQueG4gPSBQQUdFX1hOX01BU0soZmxhZ3MpOworICAgICAgICAg ICAgQlVHX09OKCFwdGUucHQucm8gJiYgIXB0ZS5wdC54bik7CisgICAgICAgICAgICBwdGUucHQu dGFibGUgPSAxOworICAgICAgICAgICAgd3JpdGVfcHRlKGVudHJ5LCBwdGUpOworICAgICAgICAg ICAgYnJlYWs7CisgICAgICAgIGNhc2UgTU9ESUZZOgorICAgICAgICBjYXNlIFJFTU9WRToKKyAg ICAgICAgICAgIGlmICggIWxwYWVfaXNfdmFsaWQoKmVudHJ5KSApCisgICAgICAgICAgICB7Cisg ICAgICAgICAgICAgICAgcHJpbnRrKCIlczogdHJ5aW5nIHRvICVzIGEgbm9uLWV4aXN0aW5nIG1h cHBpbmcgYWRkcj0lbHhcbiIsCisgICAgICAgICAgICAgICAgICAgICAgIF9fZnVuY19fLCBvcCA9 PSBSRU1PVkUgPyAicmVtb3ZlIiA6ICJtb2RpZnkiLCBhZGRyKTsKKyAgICAgICAgICAgICAgICBy ZXR1cm4gLUVJTlZBTDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICggb3AgPT0gUkVN T1ZFICkKKyAgICAgICAgICAgICAgICBwdGUuYml0cyA9IDA7CisgICAgICAgICAgICBlbHNlCisg ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcHRlID0gKmVudHJ5OworICAgICAgICAgICAg ICAgIHB0ZS5wdC5ybyA9IFBBR0VfUk9fTUFTSyhmbGFncyk7CisgICAgICAgICAgICAgICAgcHRl LnB0LnhuID0gUEFHRV9YTl9NQVNLKGZsYWdzKTsKKyAgICAgICAgICAgICAgICBpZiAoICFwdGUu cHQucm8gJiYgIXB0ZS5wdC54biApCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAg ICAgICBwcmludGsoIiVzOiBJbmNvcnJlY3QgY29tYmluYXRpb24gZm9yIGFkZHI9JWx4XG4iLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgX19mdW5jX18sIGFkZHIpOworICAgICAgICAgICAg ICAgICAgICByZXR1cm4gLUVJTlZBTDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9 CisgICAgICAgICAgICB3cml0ZV9wdGUoZW50cnksIHB0ZSk7CisgICAgICAgICAgICBicmVhazsK KyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIEJVRygpOworICAgIH0KKworICAgIHJldHVy biAwOworfQorCiBzdGF0aWMgREVGSU5FX1NQSU5MT0NLKHhlbl9wdF9sb2NrKTsKIAogc3RhdGlj IGludCB4ZW5fcHRfdXBkYXRlKGVudW0geGVubWFwX29wZXJhdGlvbiBvcCwKQEAgLTk3OCw3OCAr MTA0OCwxNiBAQCBzdGF0aWMgaW50IHhlbl9wdF91cGRhdGUoZW51bSB4ZW5tYXBfb3BlcmF0aW9u IG9wLAogewogICAgIGludCByYyA9IDA7CiAgICAgdW5zaWduZWQgbG9uZyBhZGRyID0gdmlydCwg YWRkcl9lbmQgPSBhZGRyICsgbnJfbWZucyAqIFBBR0VfU0laRTsKLSAgICBscGFlX3QgcHRlLCAq ZW50cnk7Ci0gICAgbHBhZV90ICp0aGlyZCA9IE5VTEw7CiAKICAgICBzcGluX2xvY2soJnhlbl9w dF9sb2NrKTsKIAogICAgIGZvcig7IGFkZHIgPCBhZGRyX2VuZDsgYWRkciArPSBQQUdFX1NJWkUs IG1mbiA9IG1mbl9hZGQobWZuLCAxKSkKICAgICB7Ci0gICAgICAgIGVudHJ5ID0gJnhlbl9zZWNv bmRbc2Vjb25kX2xpbmVhcl9vZmZzZXQoYWRkcildOwotICAgICAgICBpZiAoICFscGFlX2lzX3Zh bGlkKCplbnRyeSkgfHwgIWxwYWVfaXNfdGFibGUoKmVudHJ5LCAyKSApCi0gICAgICAgIHsKLSAg ICAgICAgICAgIHJjID0gY3JlYXRlX3hlbl90YWJsZShlbnRyeSk7Ci0gICAgICAgICAgICBpZiAo IHJjIDwgMCApIHsKLSAgICAgICAgICAgICAgICBwcmludGsoIiVzOiBMMiBmYWlsZWRcbiIsIF9f ZnVuY19fKTsKLSAgICAgICAgICAgICAgICBnb3RvIG91dDsKLSAgICAgICAgICAgIH0KLSAgICAg ICAgfQotCi0gICAgICAgIEJVR19PTighbHBhZV9pc192YWxpZCgqZW50cnkpKTsKLQotICAgICAg ICB0aGlyZCA9IG1mbl90b192aXJ0KGxwYWVfZ2V0X21mbigqZW50cnkpKTsKLSAgICAgICAgZW50 cnkgPSAmdGhpcmRbdGhpcmRfdGFibGVfb2Zmc2V0KGFkZHIpXTsKLQotICAgICAgICBzd2l0Y2gg KCBvcCApIHsKLSAgICAgICAgICAgIGNhc2UgSU5TRVJUOgotICAgICAgICAgICAgY2FzZSBSRVNF UlZFOgotICAgICAgICAgICAgICAgIGlmICggbHBhZV9pc192YWxpZCgqZW50cnkpICkKLSAgICAg ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHByaW50aygiJXM6IHRyeWluZyB0byBy ZXBsYWNlIGFuIGV4aXN0aW5nIG1hcHBpbmcgYWRkcj0lbHggbWZuPSUiUFJJX21mbiJcbiIsCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICBfX2Z1bmNfXywgYWRkciwgbWZuX3gobWZuKSk7Ci0g ICAgICAgICAgICAgICAgICAgIHJjID0gLUVJTlZBTDsKLSAgICAgICAgICAgICAgICAgICAgZ290 byBvdXQ7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmICggb3AgPT0gUkVT RVJWRSApCi0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIHB0ZSA9 IG1mbl90b194ZW5fZW50cnkobWZuLCBQQUdFX0FJX01BU0soZmxhZ3MpKTsKLSAgICAgICAgICAg ICAgICBwdGUucHQucm8gPSBQQUdFX1JPX01BU0soZmxhZ3MpOwotICAgICAgICAgICAgICAgIHB0 ZS5wdC54biA9IFBBR0VfWE5fTUFTSyhmbGFncyk7Ci0gICAgICAgICAgICAgICAgQlVHX09OKCFw dGUucHQucm8gJiYgIXB0ZS5wdC54bik7Ci0gICAgICAgICAgICAgICAgcHRlLnB0LnRhYmxlID0g MTsKLSAgICAgICAgICAgICAgICB3cml0ZV9wdGUoZW50cnksIHB0ZSk7Ci0gICAgICAgICAgICAg ICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIE1PRElGWToKLSAgICAgICAgICAgIGNhc2UgUkVN T1ZFOgotICAgICAgICAgICAgICAgIGlmICggIWxwYWVfaXNfdmFsaWQoKmVudHJ5KSApCi0gICAg ICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBwcmludGsoIiVzOiB0cnlpbmcgdG8g JXMgYSBub24tZXhpc3RpbmcgbWFwcGluZyBhZGRyPSVseFxuIiwKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgIF9fZnVuY19fLCBvcCA9PSBSRU1PVkUgPyAicmVtb3ZlIiA6ICJtb2RpZnkiLCBh ZGRyKTsKLSAgICAgICAgICAgICAgICAgICAgcmMgPSAtRUlOVkFMOwotICAgICAgICAgICAgICAg ICAgICBnb3RvIG91dDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKCBv cCA9PSBSRU1PVkUgKQotICAgICAgICAgICAgICAgICAgICBwdGUuYml0cyA9IDA7Ci0gICAgICAg ICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgcHRl ID0gKmVudHJ5OwotICAgICAgICAgICAgICAgICAgICBwdGUucHQucm8gPSBQQUdFX1JPX01BU0so ZmxhZ3MpOwotICAgICAgICAgICAgICAgICAgICBwdGUucHQueG4gPSBQQUdFX1hOX01BU0soZmxh Z3MpOwotICAgICAgICAgICAgICAgICAgICBpZiAoICFwdGUucHQucm8gJiYgIXB0ZS5wdC54biAp Ci0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHByaW50aygi JXM6IEluY29ycmVjdCBjb21iaW5hdGlvbiBmb3IgYWRkcj0lbHhcbiIsCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgX19mdW5jX18sIGFkZHIpOwotICAgICAgICAgICAgICAgICAgICAg ICAgcmMgPSAtRUlOVkFMOwotICAgICAgICAgICAgICAgICAgICAgICAgZ290byBvdXQ7Ci0gICAg ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgd3Jp dGVfcHRlKGVudHJ5LCBwdGUpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg ZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBCVUcoKTsKLSAgICAgICAgfQorICAgICAgICByYyA9 IHhlbl9wdF91cGRhdGVfZW50cnkob3AsIGFkZHIsIG1mbiwgZmxhZ3MpOworICAgICAgICBpZiAo IHJjICkKKyAgICAgICAgICAgIGJyZWFrOwogICAgIH0KLW91dDoKKwogICAgIC8qCiAgICAgICog Rmx1c2ggdGhlIFRMQnMgZXZlbiBpbiBjYXNlIG9mIGZhaWx1cmUgYmVjYXVzZSB3ZSBtYXkgaGF2 ZQogICAgICAqIHBhcnRpYWxseSBtb2RpZmllZCB0aGUgUFQuIFRoaXMgd2lsbCBwcmV2ZW50IGFu eSB1bmV4cGVjdGVkCi0tIAoyLjExLjAKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54 ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGlu Zm8veGVuLWRldmVs 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=-9.0 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED,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 72C52C46460 for ; Tue, 14 May 2019 12:32:00 +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 4F31B20850 for ; Tue, 14 May 2019 12:32:00 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 4F31B20850 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=arm.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 1hQWan-0005Lb-Q8; Tue, 14 May 2019 12:31:37 +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 1hQWan-0005LK-1a for xen-devel@lists.xenproject.org; Tue, 14 May 2019 12:31:37 +0000 X-Inumbo-ID: 36ade63a-7644-11e9-a640-97876d6490b5 Received: from foss.arm.com (unknown [217.140.101.70]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTP id 36ade63a-7644-11e9-a640-97876d6490b5; Tue, 14 May 2019 12:31:36 +0000 (UTC) Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.72.51.249]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id A2CC4341; Tue, 14 May 2019 05:31:35 -0700 (PDT) Received: from e108454-lin.cambridge.arm.com (e108454-lin.cambridge.arm.com [10.1.196.50]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 6FB0F3F71E; Tue, 14 May 2019 05:31:34 -0700 (PDT) From: Julien Grall To: xen-devel@lists.xenproject.org Date: Tue, 14 May 2019 13:31:16 +0100 Message-Id: <20190514123125.29086-4-julien.grall@arm.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20190514123125.29086-1-julien.grall@arm.com> References: <20190514123125.29086-1-julien.grall@arm.com> Subject: [Xen-devel] [PATCH MM-PART3 v2 03/12] xen/arm: mm: Move out of xen_pt_update() the logic to update an entry X-BeenThere: xen-devel@lists.xenproject.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Cc: Oleksandr_Tyshchenko@epam.com, Julien Grall , Stefano Stabellini , Andrii Anisov MIME-Version: 1.0 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: base64 Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" Message-ID: <20190514123116.paMt-SHNMXMB0HU7GOngOJTjciAHlWtp1sVB43xys4M@z> SW4gcHJlcGFyYXRpb24gb2YgcmV3b3JrIG9mIHRoZSBYZW4gUFQsIHRoZSBsb2dpYyB0byB1cGRh dGUgYW4gZW50cnkKaW4gbW92ZWQgb3V0IGluIGEgc2VwYXJhdGUgZnVuY3Rpb24uCgpTaWduZWQt b2ZmLWJ5OiBKdWxpZW4gR3JhbGwgPGp1bGllbi5ncmFsbEBhcm0uY29tPgpSZXZpZXdlZC1ieTog QW5kcmlpIEFuaXNvdiA8YW5kcmlpX2FuaXNvdkBlcGFtLmNvbT4KCi0tLQogICAgQ2hhbmdlcyBp biB2MjoKICAgICAgICAtIEFkZCBBbmRyaWkncyByZXZpZXdlZC1ieQotLS0KIHhlbi9hcmNoL2Fy bS9tbS5jIHwgMTQwICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDc0IGluc2VydGlvbnMoKyksIDY2IGRlbGV0aW9u cygtKQoKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL2FybS9tbS5jIGIveGVuL2FyY2gvYXJtL21tLmMK aW5kZXggMzZlMjJmYzlhZC4uZjk1NmFhNjM5OSAxMDA2NDQKLS0tIGEveGVuL2FyY2gvYXJtL21t LmMKKysrIGIveGVuL2FyY2gvYXJtL21tLmMKQEAgLTk2OCw2ICs5NjgsNzYgQEAgZW51bSB4ZW5t YXBfb3BlcmF0aW9uIHsKICAgICBSRVNFUlZFCiB9OwogCitzdGF0aWMgaW50IHhlbl9wdF91cGRh dGVfZW50cnkoZW51bSB4ZW5tYXBfb3BlcmF0aW9uIG9wLCB1bnNpZ25lZCBsb25nIGFkZHIsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWZuX3QgbWZuLCB1bnNpZ25lZCBpbnQgZmxh Z3MpCit7CisgICAgbHBhZV90IHB0ZSwgKmVudHJ5OworICAgIGxwYWVfdCAqdGhpcmQgPSBOVUxM OworCisgICAgZW50cnkgPSAmeGVuX3NlY29uZFtzZWNvbmRfbGluZWFyX29mZnNldChhZGRyKV07 CisgICAgaWYgKCAhbHBhZV9pc192YWxpZCgqZW50cnkpIHx8ICFscGFlX2lzX3RhYmxlKCplbnRy eSwgMikgKQorICAgIHsKKyAgICAgICAgaW50IHJjID0gY3JlYXRlX3hlbl90YWJsZShlbnRyeSk7 CisgICAgICAgIGlmICggcmMgPCAwICkgeworICAgICAgICAgICAgcHJpbnRrKCIlczogTDIgZmFp bGVkXG4iLCBfX2Z1bmNfXyk7CisgICAgICAgICAgICByZXR1cm4gcmM7CisgICAgICAgIH0KKyAg ICB9CisKKyAgICBCVUdfT04oIWxwYWVfaXNfdmFsaWQoKmVudHJ5KSk7CisKKyAgICB0aGlyZCA9 IG1mbl90b192aXJ0KGxwYWVfZ2V0X21mbigqZW50cnkpKTsKKyAgICBlbnRyeSA9ICZ0aGlyZFt0 aGlyZF90YWJsZV9vZmZzZXQoYWRkcildOworCisgICAgc3dpdGNoICggb3AgKSB7CisgICAgICAg IGNhc2UgSU5TRVJUOgorICAgICAgICBjYXNlIFJFU0VSVkU6CisgICAgICAgICAgICBpZiAoIGxw YWVfaXNfdmFsaWQoKmVudHJ5KSApCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcHJp bnRrKCIlczogdHJ5aW5nIHRvIHJlcGxhY2UgYW4gZXhpc3RpbmcgbWFwcGluZyBhZGRyPSVseCBt Zm49JSJQUklfbWZuIlxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgX19mdW5jX18sIGFkZHIs IG1mbl94KG1mbikpOworICAgICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOworICAgICAgICAg ICAgfQorICAgICAgICAgICAgaWYgKCBvcCA9PSBSRVNFUlZFICkKKyAgICAgICAgICAgICAgICBi cmVhazsKKyAgICAgICAgICAgIHB0ZSA9IG1mbl90b194ZW5fZW50cnkobWZuLCBQQUdFX0FJX01B U0soZmxhZ3MpKTsKKyAgICAgICAgICAgIHB0ZS5wdC5ybyA9IFBBR0VfUk9fTUFTSyhmbGFncyk7 CisgICAgICAgICAgICBwdGUucHQueG4gPSBQQUdFX1hOX01BU0soZmxhZ3MpOworICAgICAgICAg ICAgQlVHX09OKCFwdGUucHQucm8gJiYgIXB0ZS5wdC54bik7CisgICAgICAgICAgICBwdGUucHQu dGFibGUgPSAxOworICAgICAgICAgICAgd3JpdGVfcHRlKGVudHJ5LCBwdGUpOworICAgICAgICAg ICAgYnJlYWs7CisgICAgICAgIGNhc2UgTU9ESUZZOgorICAgICAgICBjYXNlIFJFTU9WRToKKyAg ICAgICAgICAgIGlmICggIWxwYWVfaXNfdmFsaWQoKmVudHJ5KSApCisgICAgICAgICAgICB7Cisg ICAgICAgICAgICAgICAgcHJpbnRrKCIlczogdHJ5aW5nIHRvICVzIGEgbm9uLWV4aXN0aW5nIG1h cHBpbmcgYWRkcj0lbHhcbiIsCisgICAgICAgICAgICAgICAgICAgICAgIF9fZnVuY19fLCBvcCA9 PSBSRU1PVkUgPyAicmVtb3ZlIiA6ICJtb2RpZnkiLCBhZGRyKTsKKyAgICAgICAgICAgICAgICBy ZXR1cm4gLUVJTlZBTDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICggb3AgPT0gUkVN T1ZFICkKKyAgICAgICAgICAgICAgICBwdGUuYml0cyA9IDA7CisgICAgICAgICAgICBlbHNlCisg ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcHRlID0gKmVudHJ5OworICAgICAgICAgICAg ICAgIHB0ZS5wdC5ybyA9IFBBR0VfUk9fTUFTSyhmbGFncyk7CisgICAgICAgICAgICAgICAgcHRl LnB0LnhuID0gUEFHRV9YTl9NQVNLKGZsYWdzKTsKKyAgICAgICAgICAgICAgICBpZiAoICFwdGUu cHQucm8gJiYgIXB0ZS5wdC54biApCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAg ICAgICBwcmludGsoIiVzOiBJbmNvcnJlY3QgY29tYmluYXRpb24gZm9yIGFkZHI9JWx4XG4iLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgX19mdW5jX18sIGFkZHIpOworICAgICAgICAgICAg ICAgICAgICByZXR1cm4gLUVJTlZBTDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9 CisgICAgICAgICAgICB3cml0ZV9wdGUoZW50cnksIHB0ZSk7CisgICAgICAgICAgICBicmVhazsK KyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIEJVRygpOworICAgIH0KKworICAgIHJldHVy biAwOworfQorCiBzdGF0aWMgREVGSU5FX1NQSU5MT0NLKHhlbl9wdF9sb2NrKTsKIAogc3RhdGlj IGludCB4ZW5fcHRfdXBkYXRlKGVudW0geGVubWFwX29wZXJhdGlvbiBvcCwKQEAgLTk3OCw3OCAr MTA0OCwxNiBAQCBzdGF0aWMgaW50IHhlbl9wdF91cGRhdGUoZW51bSB4ZW5tYXBfb3BlcmF0aW9u IG9wLAogewogICAgIGludCByYyA9IDA7CiAgICAgdW5zaWduZWQgbG9uZyBhZGRyID0gdmlydCwg YWRkcl9lbmQgPSBhZGRyICsgbnJfbWZucyAqIFBBR0VfU0laRTsKLSAgICBscGFlX3QgcHRlLCAq ZW50cnk7Ci0gICAgbHBhZV90ICp0aGlyZCA9IE5VTEw7CiAKICAgICBzcGluX2xvY2soJnhlbl9w dF9sb2NrKTsKIAogICAgIGZvcig7IGFkZHIgPCBhZGRyX2VuZDsgYWRkciArPSBQQUdFX1NJWkUs IG1mbiA9IG1mbl9hZGQobWZuLCAxKSkKICAgICB7Ci0gICAgICAgIGVudHJ5ID0gJnhlbl9zZWNv bmRbc2Vjb25kX2xpbmVhcl9vZmZzZXQoYWRkcildOwotICAgICAgICBpZiAoICFscGFlX2lzX3Zh bGlkKCplbnRyeSkgfHwgIWxwYWVfaXNfdGFibGUoKmVudHJ5LCAyKSApCi0gICAgICAgIHsKLSAg ICAgICAgICAgIHJjID0gY3JlYXRlX3hlbl90YWJsZShlbnRyeSk7Ci0gICAgICAgICAgICBpZiAo IHJjIDwgMCApIHsKLSAgICAgICAgICAgICAgICBwcmludGsoIiVzOiBMMiBmYWlsZWRcbiIsIF9f ZnVuY19fKTsKLSAgICAgICAgICAgICAgICBnb3RvIG91dDsKLSAgICAgICAgICAgIH0KLSAgICAg ICAgfQotCi0gICAgICAgIEJVR19PTighbHBhZV9pc192YWxpZCgqZW50cnkpKTsKLQotICAgICAg ICB0aGlyZCA9IG1mbl90b192aXJ0KGxwYWVfZ2V0X21mbigqZW50cnkpKTsKLSAgICAgICAgZW50 cnkgPSAmdGhpcmRbdGhpcmRfdGFibGVfb2Zmc2V0KGFkZHIpXTsKLQotICAgICAgICBzd2l0Y2gg KCBvcCApIHsKLSAgICAgICAgICAgIGNhc2UgSU5TRVJUOgotICAgICAgICAgICAgY2FzZSBSRVNF UlZFOgotICAgICAgICAgICAgICAgIGlmICggbHBhZV9pc192YWxpZCgqZW50cnkpICkKLSAgICAg ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHByaW50aygiJXM6IHRyeWluZyB0byBy ZXBsYWNlIGFuIGV4aXN0aW5nIG1hcHBpbmcgYWRkcj0lbHggbWZuPSUiUFJJX21mbiJcbiIsCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICBfX2Z1bmNfXywgYWRkciwgbWZuX3gobWZuKSk7Ci0g ICAgICAgICAgICAgICAgICAgIHJjID0gLUVJTlZBTDsKLSAgICAgICAgICAgICAgICAgICAgZ290 byBvdXQ7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmICggb3AgPT0gUkVT RVJWRSApCi0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIHB0ZSA9 IG1mbl90b194ZW5fZW50cnkobWZuLCBQQUdFX0FJX01BU0soZmxhZ3MpKTsKLSAgICAgICAgICAg ICAgICBwdGUucHQucm8gPSBQQUdFX1JPX01BU0soZmxhZ3MpOwotICAgICAgICAgICAgICAgIHB0 ZS5wdC54biA9IFBBR0VfWE5fTUFTSyhmbGFncyk7Ci0gICAgICAgICAgICAgICAgQlVHX09OKCFw dGUucHQucm8gJiYgIXB0ZS5wdC54bik7Ci0gICAgICAgICAgICAgICAgcHRlLnB0LnRhYmxlID0g MTsKLSAgICAgICAgICAgICAgICB3cml0ZV9wdGUoZW50cnksIHB0ZSk7Ci0gICAgICAgICAgICAg ICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIE1PRElGWToKLSAgICAgICAgICAgIGNhc2UgUkVN T1ZFOgotICAgICAgICAgICAgICAgIGlmICggIWxwYWVfaXNfdmFsaWQoKmVudHJ5KSApCi0gICAg ICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBwcmludGsoIiVzOiB0cnlpbmcgdG8g JXMgYSBub24tZXhpc3RpbmcgbWFwcGluZyBhZGRyPSVseFxuIiwKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgIF9fZnVuY19fLCBvcCA9PSBSRU1PVkUgPyAicmVtb3ZlIiA6ICJtb2RpZnkiLCBh ZGRyKTsKLSAgICAgICAgICAgICAgICAgICAgcmMgPSAtRUlOVkFMOwotICAgICAgICAgICAgICAg ICAgICBnb3RvIG91dDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKCBv cCA9PSBSRU1PVkUgKQotICAgICAgICAgICAgICAgICAgICBwdGUuYml0cyA9IDA7Ci0gICAgICAg ICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgcHRl ID0gKmVudHJ5OwotICAgICAgICAgICAgICAgICAgICBwdGUucHQucm8gPSBQQUdFX1JPX01BU0so ZmxhZ3MpOwotICAgICAgICAgICAgICAgICAgICBwdGUucHQueG4gPSBQQUdFX1hOX01BU0soZmxh Z3MpOwotICAgICAgICAgICAgICAgICAgICBpZiAoICFwdGUucHQucm8gJiYgIXB0ZS5wdC54biAp Ci0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHByaW50aygi JXM6IEluY29ycmVjdCBjb21iaW5hdGlvbiBmb3IgYWRkcj0lbHhcbiIsCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgX19mdW5jX18sIGFkZHIpOwotICAgICAgICAgICAgICAgICAgICAg ICAgcmMgPSAtRUlOVkFMOwotICAgICAgICAgICAgICAgICAgICAgICAgZ290byBvdXQ7Ci0gICAg ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgd3Jp dGVfcHRlKGVudHJ5LCBwdGUpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg ZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBCVUcoKTsKLSAgICAgICAgfQorICAgICAgICByYyA9 IHhlbl9wdF91cGRhdGVfZW50cnkob3AsIGFkZHIsIG1mbiwgZmxhZ3MpOworICAgICAgICBpZiAo IHJjICkKKyAgICAgICAgICAgIGJyZWFrOwogICAgIH0KLW91dDoKKwogICAgIC8qCiAgICAgICog Rmx1c2ggdGhlIFRMQnMgZXZlbiBpbiBjYXNlIG9mIGZhaWx1cmUgYmVjYXVzZSB3ZSBtYXkgaGF2 ZQogICAgICAqIHBhcnRpYWxseSBtb2RpZmllZCB0aGUgUFQuIFRoaXMgd2lsbCBwcmV2ZW50IGFu eSB1bmV4cGVjdGVkCi0tIAoyLjExLjAKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54 ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGlu Zm8veGVuLWRldmVs