From mboxrd@z Thu Jan 1 00:00:00 1970 From: Shannon Zhao Subject: [PATCH v11 14/17] XEN: EFI: Move x86 specific codes to architecture directory Date: Thu, 7 Apr 2016 20:03:31 +0800 Message-ID: <1460030614-16112-15-git-send-email-zhaoshenglong__47810.3409092457$1460030994$gmane$org@huawei.com> References: <1460030614-16112-1-git-send-email-zhaoshenglong@huawei.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1460030614-16112-1-git-send-email-zhaoshenglong@huawei.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: linux-arm-kernel@lists.infradead.org, sstabellini@kernel.org Cc: devicetree@vger.kernel.org, linux-efi@vger.kernel.org, catalin.marinas@arm.com, will.deacon@arm.com, linux-kernel@vger.kernel.org, xen-devel@lists.xen.org, julien.grall@arm.com, david.vrabel@citrix.com, peter.huangpeng@huawei.com, shannon.zhao@linaro.org List-Id: xen-devel@lists.xenproject.org RnJvbTogU2hhbm5vbiBaaGFvIDxzaGFubm9uLnpoYW9AbGluYXJvLm9yZz4KCk1vdmUgeDg2IHNw ZWNpZmljIGNvZGVzIHRvIGFyY2hpdGVjdHVyZSBkaXJlY3RvcnkgYW5kIGV4cG9ydCB0aG9zZSBF RkkKcnVudGltZSBzZXJ2aWNlIGZ1bmN0aW9ucy4gVGhpcyB3aWxsIGJlIHVzZWZ1bCBmb3IgaW5p dGlhbGl6aW5nIHJ1bnRpbWUKc2VydmljZSBvbiBBUk0gbGF0ZXIuCgpTaWduZWQtb2ZmLWJ5OiBT aGFubm9uIFpoYW8gPHNoYW5ub24uemhhb0BsaW5hcm8ub3JnPgpSZXZpZXdlZC1ieTogU3RlZmFu byBTdGFiZWxsaW5pIDxzdGVmYW5vLnN0YWJlbGxpbmlAZXUuY2l0cml4LmNvbT4KLS0tCiBhcmNo L3g4Ni94ZW4vZWZpLmMgICAgfCAxMTIgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysK IGRyaXZlcnMveGVuL2VmaS5jICAgICB8IDE3NCArKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogaW5jbHVkZS94ZW4veGVuLW9wcy5oIHwgIDMwICsrKysr Ky0tLQogMyBmaWxlcyBjaGFuZ2VkLCAxNjggaW5zZXJ0aW9ucygrKSwgMTQ4IGRlbGV0aW9ucygt KQoKZGlmZiAtLWdpdCBhL2FyY2gveDg2L3hlbi9lZmkuYyBiL2FyY2gveDg2L3hlbi9lZmkuYwpp bmRleCBiZTE0Y2MzLi44NjUyN2YxIDEwMDY0NAotLS0gYS9hcmNoL3g4Ni94ZW4vZWZpLmMKKysr IGIvYXJjaC94ODYveGVuL2VmaS5jCkBAIC0yMCwxMCArMjAsMTIyIEBACiAjaW5jbHVkZSA8bGlu dXgvaW5pdC5oPgogI2luY2x1ZGUgPGxpbnV4L3N0cmluZy5oPgogCisjaW5jbHVkZSA8eGVuL3hl bi5oPgogI2luY2x1ZGUgPHhlbi94ZW4tb3BzLmg+CisjaW5jbHVkZSA8eGVuL2ludGVyZmFjZS9w bGF0Zm9ybS5oPgogCiAjaW5jbHVkZSA8YXNtL3BhZ2UuaD4KICNpbmNsdWRlIDxhc20vc2V0dXAu aD4KKyNpbmNsdWRlIDxhc20veGVuL2h5cGVyY2FsbC5oPgorCitzdGF0aWMgZWZpX2NoYXIxNl90 IHZlbmRvclsxMDBdIF9faW5pdGRhdGE7CisKK3N0YXRpYyBlZmlfc3lzdGVtX3RhYmxlX3QgZWZp X3N5c3RhYl94ZW4gX19pbml0ZGF0YSA9IHsKKwkuaGRyID0geworCQkuc2lnbmF0dXJlCT0gRUZJ X1NZU1RFTV9UQUJMRV9TSUdOQVRVUkUsCisJCS5yZXZpc2lvbgk9IDAsIC8qIEluaXRpYWxpemVk IGxhdGVyLiAqLworCQkuaGVhZGVyc2l6ZQk9IDAsIC8qIElnbm9yZWQgYnkgTGludXggS2VybmVs LiAqLworCQkuY3JjMzIJCT0gMCwgLyogSWdub3JlZCBieSBMaW51eCBLZXJuZWwuICovCisJCS5y ZXNlcnZlZAk9IDAKKwl9LAorCS5md192ZW5kb3IJPSBFRklfSU5WQUxJRF9UQUJMRV9BRERSLCAv KiBJbml0aWFsaXplZCBsYXRlci4gKi8KKwkuZndfcmV2aXNpb24JPSAwLAkJCSAgLyogSW5pdGlh bGl6ZWQgbGF0ZXIuICovCisJLmNvbl9pbl9oYW5kbGUJPSBFRklfSU5WQUxJRF9UQUJMRV9BRERS LCAvKiBOb3QgdXNlZCB1bmRlciBYZW4uICovCisJLmNvbl9pbgkJPSBFRklfSU5WQUxJRF9UQUJM RV9BRERSLCAvKiBOb3QgdXNlZCB1bmRlciBYZW4uICovCisJLmNvbl9vdXRfaGFuZGxlCT0gRUZJ X0lOVkFMSURfVEFCTEVfQUREUiwgLyogTm90IHVzZWQgdW5kZXIgWGVuLiAqLworCS5jb25fb3V0 CT0gRUZJX0lOVkFMSURfVEFCTEVfQUREUiwgLyogTm90IHVzZWQgdW5kZXIgWGVuLiAqLworCS5z dGRlcnJfaGFuZGxlCT0gRUZJX0lOVkFMSURfVEFCTEVfQUREUiwgLyogTm90IHVzZWQgdW5kZXIg WGVuLiAqLworCS5zdGRlcnIJCT0gRUZJX0lOVkFMSURfVEFCTEVfQUREUiwgLyogTm90IHVzZWQg dW5kZXIgWGVuLiAqLworCS5ydW50aW1lCT0gKGVmaV9ydW50aW1lX3NlcnZpY2VzX3QgKilFRklf SU5WQUxJRF9UQUJMRV9BRERSLAorCQkJCQkJICAvKiBOb3QgdXNlZCB1bmRlciBYZW4uICovCisJ LmJvb3R0aW1lCT0gKGVmaV9ib290X3NlcnZpY2VzX3QgKilFRklfSU5WQUxJRF9UQUJMRV9BRERS LAorCQkJCQkJICAvKiBOb3QgdXNlZCB1bmRlciBYZW4uICovCisJLm5yX3RhYmxlcwk9IDAsCQkJ ICAvKiBJbml0aWFsaXplZCBsYXRlci4gKi8KKwkudGFibGVzCQk9IEVGSV9JTlZBTElEX1RBQkxF X0FERFIgIC8qIEluaXRpYWxpemVkIGxhdGVyLiAqLworfTsKKworc3RhdGljIGNvbnN0IHN0cnVj dCBlZmkgZWZpX3hlbiBfX2luaXRjb25zdCA9IHsKKwkuc3lzdGFiICAgICAgICAgICAgICAgICAg ID0gTlVMTCwgLyogSW5pdGlhbGl6ZWQgbGF0ZXIuICovCisJLnJ1bnRpbWVfdmVyc2lvbgkgID0g MCwgICAgLyogSW5pdGlhbGl6ZWQgbGF0ZXIuICovCisJLm1wcyAgICAgICAgICAgICAgICAgICAg ICA9IEVGSV9JTlZBTElEX1RBQkxFX0FERFIsCisJLmFjcGkgICAgICAgICAgICAgICAgICAgICA9 IEVGSV9JTlZBTElEX1RBQkxFX0FERFIsCisJLmFjcGkyMCAgICAgICAgICAgICAgICAgICA9IEVG SV9JTlZBTElEX1RBQkxFX0FERFIsCisJLnNtYmlvcyAgICAgICAgICAgICAgICAgICA9IEVGSV9J TlZBTElEX1RBQkxFX0FERFIsCisJLnNtYmlvczMgICAgICAgICAgICAgICAgICA9IEVGSV9JTlZB TElEX1RBQkxFX0FERFIsCisJLnNhbF9zeXN0YWIgICAgICAgICAgICAgICA9IEVGSV9JTlZBTElE X1RBQkxFX0FERFIsCisJLmJvb3RfaW5mbyAgICAgICAgICAgICAgICA9IEVGSV9JTlZBTElEX1RB QkxFX0FERFIsCisJLmhjZHAgICAgICAgICAgICAgICAgICAgICA9IEVGSV9JTlZBTElEX1RBQkxF X0FERFIsCisJLnVnYSAgICAgICAgICAgICAgICAgICAgICA9IEVGSV9JTlZBTElEX1RBQkxFX0FE RFIsCisJLnV2X3N5c3RhYiAgICAgICAgICAgICAgICA9IEVGSV9JTlZBTElEX1RBQkxFX0FERFIs CisJLmZ3X3ZlbmRvciAgICAgICAgICAgICAgICA9IEVGSV9JTlZBTElEX1RBQkxFX0FERFIsCisJ LnJ1bnRpbWUgICAgICAgICAgICAgICAgICA9IEVGSV9JTlZBTElEX1RBQkxFX0FERFIsCisJLmNv bmZpZ190YWJsZSAgICAgICAgICAgICA9IEVGSV9JTlZBTElEX1RBQkxFX0FERFIsCisJLmdldF90 aW1lICAgICAgICAgICAgICAgICA9IHhlbl9lZmlfZ2V0X3RpbWUsCisJLnNldF90aW1lICAgICAg ICAgICAgICAgICA9IHhlbl9lZmlfc2V0X3RpbWUsCisJLmdldF93YWtldXBfdGltZSAgICAgICAg ICA9IHhlbl9lZmlfZ2V0X3dha2V1cF90aW1lLAorCS5zZXRfd2FrZXVwX3RpbWUgICAgICAgICAg PSB4ZW5fZWZpX3NldF93YWtldXBfdGltZSwKKwkuZ2V0X3ZhcmlhYmxlICAgICAgICAgICAgID0g eGVuX2VmaV9nZXRfdmFyaWFibGUsCisJLmdldF9uZXh0X3ZhcmlhYmxlICAgICAgICA9IHhlbl9l ZmlfZ2V0X25leHRfdmFyaWFibGUsCisJLnNldF92YXJpYWJsZSAgICAgICAgICAgICA9IHhlbl9l Zmlfc2V0X3ZhcmlhYmxlLAorCS5xdWVyeV92YXJpYWJsZV9pbmZvICAgICAgPSB4ZW5fZWZpX3F1 ZXJ5X3ZhcmlhYmxlX2luZm8sCisJLnVwZGF0ZV9jYXBzdWxlICAgICAgICAgICA9IHhlbl9lZmlf dXBkYXRlX2NhcHN1bGUsCisJLnF1ZXJ5X2NhcHN1bGVfY2FwcyAgICAgICA9IHhlbl9lZmlfcXVl cnlfY2Fwc3VsZV9jYXBzLAorCS5nZXRfbmV4dF9oaWdoX21vbm9fY291bnQgPSB4ZW5fZWZpX2dl dF9uZXh0X2hpZ2hfbW9ub19jb3VudCwKKwkucmVzZXRfc3lzdGVtICAgICAgICAgICAgID0gTlVM TCwgLyogRnVuY3Rpb25hbGl0eSBwcm92aWRlZCBieSBYZW4uICovCisJLnNldF92aXJ0dWFsX2Fk ZHJlc3NfbWFwICA9IE5VTEwsIC8qIE5vdCB1c2VkIHVuZGVyIFhlbi4gKi8KKwkubWVtbWFwICAg ICAgICAgICAgICAgICAgID0gTlVMTCwgLyogTm90IHVzZWQgdW5kZXIgWGVuLiAqLworCS5mbGFn cwkJCSAgPSAwICAgICAvKiBJbml0aWFsaXplZCBsYXRlci4gKi8KK307CisKK3N0YXRpYyBlZmlf c3lzdGVtX3RhYmxlX3QgX19pbml0ICp4ZW5fZWZpX3Byb2JlKHZvaWQpCit7CisJc3RydWN0IHhl bl9wbGF0Zm9ybV9vcCBvcCA9IHsKKwkJLmNtZCA9IFhFTlBGX2Zpcm13YXJlX2luZm8sCisJCS51 LmZpcm13YXJlX2luZm8gPSB7CisJCQkudHlwZSA9IFhFTl9GV19FRklfSU5GTywKKwkJCS5pbmRl eCA9IFhFTl9GV19FRklfQ09ORklHX1RBQkxFCisJCX0KKwl9OworCXVuaW9uIHhlbnBmX2VmaV9p bmZvICppbmZvID0gJm9wLnUuZmlybXdhcmVfaW5mby51LmVmaV9pbmZvOworCisJaWYgKCF4ZW5f aW5pdGlhbF9kb21haW4oKSB8fCBIWVBFUlZJU09SX3BsYXRmb3JtX29wKCZvcCkgPCAwKQorCQly ZXR1cm4gTlVMTDsKKworCS8qIEhlcmUgd2Uga25vdyB0aGF0IFhlbiBydW5zIG9uIEVGSSBwbGF0 Zm9ybS4gKi8KKworCWVmaSA9IGVmaV94ZW47CisKKwllZmlfc3lzdGFiX3hlbi50YWJsZXMgPSBp bmZvLT5jZmcuYWRkcjsKKwllZmlfc3lzdGFiX3hlbi5ucl90YWJsZXMgPSBpbmZvLT5jZmcubmVu dDsKKworCW9wLmNtZCA9IFhFTlBGX2Zpcm13YXJlX2luZm87CisJb3AudS5maXJtd2FyZV9pbmZv LnR5cGUgPSBYRU5fRldfRUZJX0lORk87CisJb3AudS5maXJtd2FyZV9pbmZvLmluZGV4ID0gWEVO X0ZXX0VGSV9WRU5ET1I7CisJaW5mby0+dmVuZG9yLmJ1ZnN6ID0gc2l6ZW9mKHZlbmRvcik7CisJ c2V0X3hlbl9ndWVzdF9oYW5kbGUoaW5mby0+dmVuZG9yLm5hbWUsIHZlbmRvcik7CisKKwlpZiAo SFlQRVJWSVNPUl9wbGF0Zm9ybV9vcCgmb3ApID09IDApIHsKKwkJZWZpX3N5c3RhYl94ZW4uZndf dmVuZG9yID0gX19wYV9zeW1ib2wodmVuZG9yKTsKKwkJZWZpX3N5c3RhYl94ZW4uZndfcmV2aXNp b24gPSBpbmZvLT52ZW5kb3IucmV2aXNpb247CisJfSBlbHNlCisJCWVmaV9zeXN0YWJfeGVuLmZ3 X3ZlbmRvciA9IF9fcGFfc3ltYm9sKEwiVU5LTk9XTiIpOworCisJb3AuY21kID0gWEVOUEZfZmly bXdhcmVfaW5mbzsKKwlvcC51LmZpcm13YXJlX2luZm8udHlwZSA9IFhFTl9GV19FRklfSU5GTzsK KwlvcC51LmZpcm13YXJlX2luZm8uaW5kZXggPSBYRU5fRldfRUZJX1ZFUlNJT047CisKKwlpZiAo SFlQRVJWSVNPUl9wbGF0Zm9ybV9vcCgmb3ApID09IDApCisJCWVmaV9zeXN0YWJfeGVuLmhkci5y ZXZpc2lvbiA9IGluZm8tPnZlcnNpb247CisKKwlvcC5jbWQgPSBYRU5QRl9maXJtd2FyZV9pbmZv OworCW9wLnUuZmlybXdhcmVfaW5mby50eXBlID0gWEVOX0ZXX0VGSV9JTkZPOworCW9wLnUuZmly bXdhcmVfaW5mby5pbmRleCA9IFhFTl9GV19FRklfUlRfVkVSU0lPTjsKKworCWlmIChIWVBFUlZJ U09SX3BsYXRmb3JtX29wKCZvcCkgPT0gMCkKKwkJZWZpLnJ1bnRpbWVfdmVyc2lvbiA9IGluZm8t PnZlcnNpb247CisKKwlyZXR1cm4gJmVmaV9zeXN0YWJfeGVuOworfQogCiB2b2lkIF9faW5pdCB4 ZW5fZWZpX2luaXQodm9pZCkKIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMveGVuL2VmaS5jIGIvZHJp dmVycy94ZW4vZWZpLmMKaW5kZXggYmU3ZTU2YS4uMjJmNzFmZiAxMDA2NDQKLS0tIGEvZHJpdmVy cy94ZW4vZWZpLmMKKysrIGIvZHJpdmVycy94ZW4vZWZpLmMKQEAgLTM4LDcgKzM4LDcgQEAKIAog I2RlZmluZSBlZmlfZGF0YShvcCkJKG9wLnUuZWZpX3J1bnRpbWVfY2FsbCkKIAotc3RhdGljIGVm aV9zdGF0dXNfdCB4ZW5fZWZpX2dldF90aW1lKGVmaV90aW1lX3QgKnRtLCBlZmlfdGltZV9jYXBf dCAqdGMpCitlZmlfc3RhdHVzX3QgeGVuX2VmaV9nZXRfdGltZShlZmlfdGltZV90ICp0bSwgZWZp X3RpbWVfY2FwX3QgKnRjKQogewogCXN0cnVjdCB4ZW5fcGxhdGZvcm1fb3Agb3AgPSBJTklUX0VG SV9PUChnZXRfdGltZSk7CiAKQEAgLTU5LDggKzU5LDkgQEAgc3RhdGljIGVmaV9zdGF0dXNfdCB4 ZW5fZWZpX2dldF90aW1lKGVmaV90aW1lX3QgKnRtLCBlZmlfdGltZV9jYXBfdCAqdGMpCiAKIAly ZXR1cm4gZWZpX2RhdGEob3ApLnN0YXR1czsKIH0KK0VYUE9SVF9TWU1CT0xfR1BMKHhlbl9lZmlf Z2V0X3RpbWUpOwogCi1zdGF0aWMgZWZpX3N0YXR1c190IHhlbl9lZmlfc2V0X3RpbWUoZWZpX3Rp bWVfdCAqdG0pCitlZmlfc3RhdHVzX3QgeGVuX2VmaV9zZXRfdGltZShlZmlfdGltZV90ICp0bSkK IHsKIAlzdHJ1Y3QgeGVuX3BsYXRmb3JtX29wIG9wID0gSU5JVF9FRklfT1Aoc2V0X3RpbWUpOwog CkBAIC03MiwxMCArNzMsMTAgQEAgc3RhdGljIGVmaV9zdGF0dXNfdCB4ZW5fZWZpX3NldF90aW1l KGVmaV90aW1lX3QgKnRtKQogCiAJcmV0dXJuIGVmaV9kYXRhKG9wKS5zdGF0dXM7CiB9CitFWFBP UlRfU1lNQk9MX0dQTCh4ZW5fZWZpX3NldF90aW1lKTsKIAotc3RhdGljIGVmaV9zdGF0dXNfdCB4 ZW5fZWZpX2dldF93YWtldXBfdGltZShlZmlfYm9vbF90ICplbmFibGVkLAotCQkJCQkgICAgZWZp X2Jvb2xfdCAqcGVuZGluZywKLQkJCQkJICAgIGVmaV90aW1lX3QgKnRtKQorZWZpX3N0YXR1c190 IHhlbl9lZmlfZ2V0X3dha2V1cF90aW1lKGVmaV9ib29sX3QgKmVuYWJsZWQsIGVmaV9ib29sX3Qg KnBlbmRpbmcsCisJCQkJICAgICBlZmlfdGltZV90ICp0bSkKIHsKIAlzdHJ1Y3QgeGVuX3BsYXRm b3JtX29wIG9wID0gSU5JVF9FRklfT1AoZ2V0X3dha2V1cF90aW1lKTsKIApAQCAtOTUsOCArOTYs OSBAQCBzdGF0aWMgZWZpX3N0YXR1c190IHhlbl9lZmlfZ2V0X3dha2V1cF90aW1lKGVmaV9ib29s X3QgKmVuYWJsZWQsCiAKIAlyZXR1cm4gZWZpX2RhdGEob3ApLnN0YXR1czsKIH0KK0VYUE9SVF9T WU1CT0xfR1BMKHhlbl9lZmlfZ2V0X3dha2V1cF90aW1lKTsKIAotc3RhdGljIGVmaV9zdGF0dXNf dCB4ZW5fZWZpX3NldF93YWtldXBfdGltZShlZmlfYm9vbF90IGVuYWJsZWQsIGVmaV90aW1lX3Qg KnRtKQorZWZpX3N0YXR1c190IHhlbl9lZmlfc2V0X3dha2V1cF90aW1lKGVmaV9ib29sX3QgZW5h YmxlZCwgZWZpX3RpbWVfdCAqdG0pCiB7CiAJc3RydWN0IHhlbl9wbGF0Zm9ybV9vcCBvcCA9IElO SVRfRUZJX09QKHNldF93YWtldXBfdGltZSk7CiAKQEAgLTExMywxMiArMTE1LDExIEBAIHN0YXRp YyBlZmlfc3RhdHVzX3QgeGVuX2VmaV9zZXRfd2FrZXVwX3RpbWUoZWZpX2Jvb2xfdCBlbmFibGVk LCBlZmlfdGltZV90ICp0bSkKIAogCXJldHVybiBlZmlfZGF0YShvcCkuc3RhdHVzOwogfQorRVhQ T1JUX1NZTUJPTF9HUEwoeGVuX2VmaV9zZXRfd2FrZXVwX3RpbWUpOwogCi1zdGF0aWMgZWZpX3N0 YXR1c190IHhlbl9lZmlfZ2V0X3ZhcmlhYmxlKGVmaV9jaGFyMTZfdCAqbmFtZSwKLQkJCQkJIGVm aV9ndWlkX3QgKnZlbmRvciwKLQkJCQkJIHUzMiAqYXR0ciwKLQkJCQkJIHVuc2lnbmVkIGxvbmcg KmRhdGFfc2l6ZSwKLQkJCQkJIHZvaWQgKmRhdGEpCitlZmlfc3RhdHVzX3QgeGVuX2VmaV9nZXRf dmFyaWFibGUoZWZpX2NoYXIxNl90ICpuYW1lLCBlZmlfZ3VpZF90ICp2ZW5kb3IsCisJCQkJICB1 MzIgKmF0dHIsIHVuc2lnbmVkIGxvbmcgKmRhdGFfc2l6ZSwKKwkJCQkgIHZvaWQgKmRhdGEpCiB7 CiAJc3RydWN0IHhlbl9wbGF0Zm9ybV9vcCBvcCA9IElOSVRfRUZJX09QKGdldF92YXJpYWJsZSk7 CiAKQEAgLTEzOCwxMCArMTM5LDExIEBAIHN0YXRpYyBlZmlfc3RhdHVzX3QgeGVuX2VmaV9nZXRf dmFyaWFibGUoZWZpX2NoYXIxNl90ICpuYW1lLAogCiAJcmV0dXJuIGVmaV9kYXRhKG9wKS5zdGF0 dXM7CiB9CitFWFBPUlRfU1lNQk9MX0dQTCh4ZW5fZWZpX2dldF92YXJpYWJsZSk7CiAKLXN0YXRp YyBlZmlfc3RhdHVzX3QgeGVuX2VmaV9nZXRfbmV4dF92YXJpYWJsZSh1bnNpZ25lZCBsb25nICpu YW1lX3NpemUsCi0JCQkJCSAgICAgIGVmaV9jaGFyMTZfdCAqbmFtZSwKLQkJCQkJICAgICAgZWZp X2d1aWRfdCAqdmVuZG9yKQorZWZpX3N0YXR1c190IHhlbl9lZmlfZ2V0X25leHRfdmFyaWFibGUo dW5zaWduZWQgbG9uZyAqbmFtZV9zaXplLAorCQkJCSAgICAgICBlZmlfY2hhcjE2X3QgKm5hbWUs CisJCQkJICAgICAgIGVmaV9ndWlkX3QgKnZlbmRvcikKIHsKIAlzdHJ1Y3QgeGVuX3BsYXRmb3Jt X29wIG9wID0gSU5JVF9FRklfT1AoZ2V0X25leHRfdmFyaWFibGVfbmFtZSk7CiAKQEAgLTE2MSwx MiArMTYzLDExIEBAIHN0YXRpYyBlZmlfc3RhdHVzX3QgeGVuX2VmaV9nZXRfbmV4dF92YXJpYWJs ZSh1bnNpZ25lZCBsb25nICpuYW1lX3NpemUsCiAKIAlyZXR1cm4gZWZpX2RhdGEob3ApLnN0YXR1 czsKIH0KK0VYUE9SVF9TWU1CT0xfR1BMKHhlbl9lZmlfZ2V0X25leHRfdmFyaWFibGUpOwogCi1z dGF0aWMgZWZpX3N0YXR1c190IHhlbl9lZmlfc2V0X3ZhcmlhYmxlKGVmaV9jaGFyMTZfdCAqbmFt ZSwKLQkJCQkJIGVmaV9ndWlkX3QgKnZlbmRvciwKLQkJCQkJIHUzMiBhdHRyLAotCQkJCQkgdW5z aWduZWQgbG9uZyBkYXRhX3NpemUsCi0JCQkJCSB2b2lkICpkYXRhKQorZWZpX3N0YXR1c190IHhl bl9lZmlfc2V0X3ZhcmlhYmxlKGVmaV9jaGFyMTZfdCAqbmFtZSwgZWZpX2d1aWRfdCAqdmVuZG9y LAorCQkJCSB1MzIgYXR0ciwgdW5zaWduZWQgbG9uZyBkYXRhX3NpemUsCisJCQkJIHZvaWQgKmRh dGEpCiB7CiAJc3RydWN0IHhlbl9wbGF0Zm9ybV9vcCBvcCA9IElOSVRfRUZJX09QKHNldF92YXJp YWJsZSk7CiAKQEAgLTE4MywxMSArMTg0LDExIEBAIHN0YXRpYyBlZmlfc3RhdHVzX3QgeGVuX2Vm aV9zZXRfdmFyaWFibGUoZWZpX2NoYXIxNl90ICpuYW1lLAogCiAJcmV0dXJuIGVmaV9kYXRhKG9w KS5zdGF0dXM7CiB9CitFWFBPUlRfU1lNQk9MX0dQTCh4ZW5fZWZpX3NldF92YXJpYWJsZSk7CiAK LXN0YXRpYyBlZmlfc3RhdHVzX3QgeGVuX2VmaV9xdWVyeV92YXJpYWJsZV9pbmZvKHUzMiBhdHRy LAotCQkJCQkJdTY0ICpzdG9yYWdlX3NwYWNlLAotCQkJCQkJdTY0ICpyZW1haW5pbmdfc3BhY2Us Ci0JCQkJCQl1NjQgKm1heF92YXJpYWJsZV9zaXplKQorZWZpX3N0YXR1c190IHhlbl9lZmlfcXVl cnlfdmFyaWFibGVfaW5mbyh1MzIgYXR0ciwgdTY0ICpzdG9yYWdlX3NwYWNlLAorCQkJCQkgdTY0 ICpyZW1haW5pbmdfc3BhY2UsCisJCQkJCSB1NjQgKm1heF92YXJpYWJsZV9zaXplKQogewogCXN0 cnVjdCB4ZW5fcGxhdGZvcm1fb3Agb3AgPSBJTklUX0VGSV9PUChxdWVyeV92YXJpYWJsZV9pbmZv KTsKIApAQCAtMjA1LDggKzIwNiw5IEBAIHN0YXRpYyBlZmlfc3RhdHVzX3QgeGVuX2VmaV9xdWVy eV92YXJpYWJsZV9pbmZvKHUzMiBhdHRyLAogCiAJcmV0dXJuIGVmaV9kYXRhKG9wKS5zdGF0dXM7 CiB9CitFWFBPUlRfU1lNQk9MX0dQTCh4ZW5fZWZpX3F1ZXJ5X3ZhcmlhYmxlX2luZm8pOwogCi1z dGF0aWMgZWZpX3N0YXR1c190IHhlbl9lZmlfZ2V0X25leHRfaGlnaF9tb25vX2NvdW50KHUzMiAq Y291bnQpCitlZmlfc3RhdHVzX3QgeGVuX2VmaV9nZXRfbmV4dF9oaWdoX21vbm9fY291bnQodTMy ICpjb3VudCkKIHsKIAlzdHJ1Y3QgeGVuX3BsYXRmb3JtX29wIG9wID0gSU5JVF9FRklfT1AoZ2V0 X25leHRfaGlnaF9tb25vdG9uaWNfY291bnQpOwogCkBAIC0yMTcsMTAgKzIxOSwxMCBAQCBzdGF0 aWMgZWZpX3N0YXR1c190IHhlbl9lZmlfZ2V0X25leHRfaGlnaF9tb25vX2NvdW50KHUzMiAqY291 bnQpCiAKIAlyZXR1cm4gZWZpX2RhdGEob3ApLnN0YXR1czsKIH0KK0VYUE9SVF9TWU1CT0xfR1BM KHhlbl9lZmlfZ2V0X25leHRfaGlnaF9tb25vX2NvdW50KTsKIAotc3RhdGljIGVmaV9zdGF0dXNf dCB4ZW5fZWZpX3VwZGF0ZV9jYXBzdWxlKGVmaV9jYXBzdWxlX2hlYWRlcl90ICoqY2Fwc3VsZXMs Ci0JCQkJCSAgIHVuc2lnbmVkIGxvbmcgY291bnQsCi0JCQkJCSAgIHVuc2lnbmVkIGxvbmcgc2df bGlzdCkKK2VmaV9zdGF0dXNfdCB4ZW5fZWZpX3VwZGF0ZV9jYXBzdWxlKGVmaV9jYXBzdWxlX2hl YWRlcl90ICoqY2Fwc3VsZXMsCisJCQkJICAgIHVuc2lnbmVkIGxvbmcgY291bnQsIHVuc2lnbmVk IGxvbmcgc2dfbGlzdCkKIHsKIAlzdHJ1Y3QgeGVuX3BsYXRmb3JtX29wIG9wID0gSU5JVF9FRklf T1AodXBkYXRlX2NhcHN1bGUpOwogCkBAIC0yMzcsMTEgKzIzOSwxMSBAQCBzdGF0aWMgZWZpX3N0 YXR1c190IHhlbl9lZmlfdXBkYXRlX2NhcHN1bGUoZWZpX2NhcHN1bGVfaGVhZGVyX3QgKipjYXBz dWxlcywKIAogCXJldHVybiBlZmlfZGF0YShvcCkuc3RhdHVzOwogfQorRVhQT1JUX1NZTUJPTF9H UEwoeGVuX2VmaV91cGRhdGVfY2Fwc3VsZSk7CiAKLXN0YXRpYyBlZmlfc3RhdHVzX3QgeGVuX2Vm aV9xdWVyeV9jYXBzdWxlX2NhcHMoZWZpX2NhcHN1bGVfaGVhZGVyX3QgKipjYXBzdWxlcywKLQkJ CQkJICAgICAgIHVuc2lnbmVkIGxvbmcgY291bnQsCi0JCQkJCSAgICAgICB1NjQgKm1heF9zaXpl LAotCQkJCQkgICAgICAgaW50ICpyZXNldF90eXBlKQorZWZpX3N0YXR1c190IHhlbl9lZmlfcXVl cnlfY2Fwc3VsZV9jYXBzKGVmaV9jYXBzdWxlX2hlYWRlcl90ICoqY2Fwc3VsZXMsCisJCQkJCXVu c2lnbmVkIGxvbmcgY291bnQsIHU2NCAqbWF4X3NpemUsCisJCQkJCWludCAqcmVzZXRfdHlwZSkK IHsKIAlzdHJ1Y3QgeGVuX3BsYXRmb3JtX29wIG9wID0gSU5JVF9FRklfT1AocXVlcnlfY2Fwc3Vs ZV9jYXBhYmlsaXRpZXMpOwogCkBAIC0yNjAsMTEyICsyNjIsNCBAQCBzdGF0aWMgZWZpX3N0YXR1 c190IHhlbl9lZmlfcXVlcnlfY2Fwc3VsZV9jYXBzKGVmaV9jYXBzdWxlX2hlYWRlcl90ICoqY2Fw c3VsZXMsCiAKIAlyZXR1cm4gZWZpX2RhdGEob3ApLnN0YXR1czsKIH0KLQotc3RhdGljIGVmaV9j aGFyMTZfdCB2ZW5kb3JbMTAwXSBfX2luaXRkYXRhOwotCi1zdGF0aWMgZWZpX3N5c3RlbV90YWJs ZV90IGVmaV9zeXN0YWJfeGVuIF9faW5pdGRhdGEgPSB7Ci0JLmhkciA9IHsKLQkJLnNpZ25hdHVy ZQk9IEVGSV9TWVNURU1fVEFCTEVfU0lHTkFUVVJFLAotCQkucmV2aXNpb24JPSAwLCAvKiBJbml0 aWFsaXplZCBsYXRlci4gKi8KLQkJLmhlYWRlcnNpemUJPSAwLCAvKiBJZ25vcmVkIGJ5IExpbnV4 IEtlcm5lbC4gKi8KLQkJLmNyYzMyCQk9IDAsIC8qIElnbm9yZWQgYnkgTGludXggS2VybmVsLiAq LwotCQkucmVzZXJ2ZWQJPSAwCi0JfSwKLQkuZndfdmVuZG9yCT0gRUZJX0lOVkFMSURfVEFCTEVf QUREUiwgLyogSW5pdGlhbGl6ZWQgbGF0ZXIuICovCi0JLmZ3X3JldmlzaW9uCT0gMCwJCQkgIC8q IEluaXRpYWxpemVkIGxhdGVyLiAqLwotCS5jb25faW5faGFuZGxlCT0gRUZJX0lOVkFMSURfVEFC TEVfQUREUiwgLyogTm90IHVzZWQgdW5kZXIgWGVuLiAqLwotCS5jb25faW4JCT0gRUZJX0lOVkFM SURfVEFCTEVfQUREUiwgLyogTm90IHVzZWQgdW5kZXIgWGVuLiAqLwotCS5jb25fb3V0X2hhbmRs ZQk9IEVGSV9JTlZBTElEX1RBQkxFX0FERFIsIC8qIE5vdCB1c2VkIHVuZGVyIFhlbi4gKi8KLQku Y29uX291dAk9IEVGSV9JTlZBTElEX1RBQkxFX0FERFIsIC8qIE5vdCB1c2VkIHVuZGVyIFhlbi4g Ki8KLQkuc3RkZXJyX2hhbmRsZQk9IEVGSV9JTlZBTElEX1RBQkxFX0FERFIsIC8qIE5vdCB1c2Vk IHVuZGVyIFhlbi4gKi8KLQkuc3RkZXJyCQk9IEVGSV9JTlZBTElEX1RBQkxFX0FERFIsIC8qIE5v dCB1c2VkIHVuZGVyIFhlbi4gKi8KLQkucnVudGltZQk9IChlZmlfcnVudGltZV9zZXJ2aWNlc190 ICopRUZJX0lOVkFMSURfVEFCTEVfQUREUiwKLQkJCQkJCSAgLyogTm90IHVzZWQgdW5kZXIgWGVu LiAqLwotCS5ib290dGltZQk9IChlZmlfYm9vdF9zZXJ2aWNlc190ICopRUZJX0lOVkFMSURfVEFC TEVfQUREUiwKLQkJCQkJCSAgLyogTm90IHVzZWQgdW5kZXIgWGVuLiAqLwotCS5ucl90YWJsZXMJ PSAwLAkJCSAgLyogSW5pdGlhbGl6ZWQgbGF0ZXIuICovCi0JLnRhYmxlcwkJPSBFRklfSU5WQUxJ RF9UQUJMRV9BRERSICAvKiBJbml0aWFsaXplZCBsYXRlci4gKi8KLX07Ci0KLXN0YXRpYyBjb25z dCBzdHJ1Y3QgZWZpIGVmaV94ZW4gX19pbml0Y29uc3QgPSB7Ci0JLnN5c3RhYiAgICAgICAgICAg ICAgICAgICA9IE5VTEwsIC8qIEluaXRpYWxpemVkIGxhdGVyLiAqLwotCS5ydW50aW1lX3ZlcnNp b24JICA9IDAsICAgIC8qIEluaXRpYWxpemVkIGxhdGVyLiAqLwotCS5tcHMgICAgICAgICAgICAg ICAgICAgICAgPSBFRklfSU5WQUxJRF9UQUJMRV9BRERSLAotCS5hY3BpICAgICAgICAgICAgICAg ICAgICAgPSBFRklfSU5WQUxJRF9UQUJMRV9BRERSLAotCS5hY3BpMjAgICAgICAgICAgICAgICAg ICAgPSBFRklfSU5WQUxJRF9UQUJMRV9BRERSLAotCS5zbWJpb3MgICAgICAgICAgICAgICAgICAg PSBFRklfSU5WQUxJRF9UQUJMRV9BRERSLAotCS5zbWJpb3MzICAgICAgICAgICAgICAgICAgPSBF RklfSU5WQUxJRF9UQUJMRV9BRERSLAotCS5zYWxfc3lzdGFiICAgICAgICAgICAgICAgPSBFRklf SU5WQUxJRF9UQUJMRV9BRERSLAotCS5ib290X2luZm8gICAgICAgICAgICAgICAgPSBFRklfSU5W QUxJRF9UQUJMRV9BRERSLAotCS5oY2RwICAgICAgICAgICAgICAgICAgICAgPSBFRklfSU5WQUxJ RF9UQUJMRV9BRERSLAotCS51Z2EgICAgICAgICAgICAgICAgICAgICAgPSBFRklfSU5WQUxJRF9U QUJMRV9BRERSLAotCS51dl9zeXN0YWIgICAgICAgICAgICAgICAgPSBFRklfSU5WQUxJRF9UQUJM RV9BRERSLAotCS5md192ZW5kb3IgICAgICAgICAgICAgICAgPSBFRklfSU5WQUxJRF9UQUJMRV9B RERSLAotCS5ydW50aW1lICAgICAgICAgICAgICAgICAgPSBFRklfSU5WQUxJRF9UQUJMRV9BRERS LAotCS5jb25maWdfdGFibGUgICAgICAgICAgICAgPSBFRklfSU5WQUxJRF9UQUJMRV9BRERSLAot CS5nZXRfdGltZSAgICAgICAgICAgICAgICAgPSB4ZW5fZWZpX2dldF90aW1lLAotCS5zZXRfdGlt ZSAgICAgICAgICAgICAgICAgPSB4ZW5fZWZpX3NldF90aW1lLAotCS5nZXRfd2FrZXVwX3RpbWUg ICAgICAgICAgPSB4ZW5fZWZpX2dldF93YWtldXBfdGltZSwKLQkuc2V0X3dha2V1cF90aW1lICAg ICAgICAgID0geGVuX2VmaV9zZXRfd2FrZXVwX3RpbWUsCi0JLmdldF92YXJpYWJsZSAgICAgICAg ICAgICA9IHhlbl9lZmlfZ2V0X3ZhcmlhYmxlLAotCS5nZXRfbmV4dF92YXJpYWJsZSAgICAgICAg PSB4ZW5fZWZpX2dldF9uZXh0X3ZhcmlhYmxlLAotCS5zZXRfdmFyaWFibGUgICAgICAgICAgICAg PSB4ZW5fZWZpX3NldF92YXJpYWJsZSwKLQkucXVlcnlfdmFyaWFibGVfaW5mbyAgICAgID0geGVu X2VmaV9xdWVyeV92YXJpYWJsZV9pbmZvLAotCS51cGRhdGVfY2Fwc3VsZSAgICAgICAgICAgPSB4 ZW5fZWZpX3VwZGF0ZV9jYXBzdWxlLAotCS5xdWVyeV9jYXBzdWxlX2NhcHMgICAgICAgPSB4ZW5f ZWZpX3F1ZXJ5X2NhcHN1bGVfY2FwcywKLQkuZ2V0X25leHRfaGlnaF9tb25vX2NvdW50ID0geGVu X2VmaV9nZXRfbmV4dF9oaWdoX21vbm9fY291bnQsCi0JLnJlc2V0X3N5c3RlbSAgICAgICAgICAg ICA9IE5VTEwsIC8qIEZ1bmN0aW9uYWxpdHkgcHJvdmlkZWQgYnkgWGVuLiAqLwotCS5zZXRfdmly dHVhbF9hZGRyZXNzX21hcCAgPSBOVUxMLCAvKiBOb3QgdXNlZCB1bmRlciBYZW4uICovCi0JLm1l bW1hcCAgICAgICAgICAgICAgICAgICA9IE5VTEwsIC8qIE5vdCB1c2VkIHVuZGVyIFhlbi4gKi8K LQkuZmxhZ3MJCQkgID0gMCAgICAgLyogSW5pdGlhbGl6ZWQgbGF0ZXIuICovCi19OwotCi1lZmlf c3lzdGVtX3RhYmxlX3QgX19pbml0ICp4ZW5fZWZpX3Byb2JlKHZvaWQpCi17Ci0Jc3RydWN0IHhl bl9wbGF0Zm9ybV9vcCBvcCA9IHsKLQkJLmNtZCA9IFhFTlBGX2Zpcm13YXJlX2luZm8sCi0JCS51 LmZpcm13YXJlX2luZm8gPSB7Ci0JCQkudHlwZSA9IFhFTl9GV19FRklfSU5GTywKLQkJCS5pbmRl eCA9IFhFTl9GV19FRklfQ09ORklHX1RBQkxFCi0JCX0KLQl9OwotCXVuaW9uIHhlbnBmX2VmaV9p bmZvICppbmZvID0gJm9wLnUuZmlybXdhcmVfaW5mby51LmVmaV9pbmZvOwotCi0JaWYgKCF4ZW5f aW5pdGlhbF9kb21haW4oKSB8fCBIWVBFUlZJU09SX3BsYXRmb3JtX29wKCZvcCkgPCAwKQotCQly ZXR1cm4gTlVMTDsKLQotCS8qIEhlcmUgd2Uga25vdyB0aGF0IFhlbiBydW5zIG9uIEVGSSBwbGF0 Zm9ybS4gKi8KLQotCWVmaSA9IGVmaV94ZW47Ci0KLQllZmlfc3lzdGFiX3hlbi50YWJsZXMgPSBp bmZvLT5jZmcuYWRkcjsKLQllZmlfc3lzdGFiX3hlbi5ucl90YWJsZXMgPSBpbmZvLT5jZmcubmVu dDsKLQotCW9wLmNtZCA9IFhFTlBGX2Zpcm13YXJlX2luZm87Ci0Jb3AudS5maXJtd2FyZV9pbmZv LnR5cGUgPSBYRU5fRldfRUZJX0lORk87Ci0Jb3AudS5maXJtd2FyZV9pbmZvLmluZGV4ID0gWEVO X0ZXX0VGSV9WRU5ET1I7Ci0JaW5mby0+dmVuZG9yLmJ1ZnN6ID0gc2l6ZW9mKHZlbmRvcik7Ci0J c2V0X3hlbl9ndWVzdF9oYW5kbGUoaW5mby0+dmVuZG9yLm5hbWUsIHZlbmRvcik7Ci0KLQlpZiAo SFlQRVJWSVNPUl9wbGF0Zm9ybV9vcCgmb3ApID09IDApIHsKLQkJZWZpX3N5c3RhYl94ZW4uZndf dmVuZG9yID0gX19wYV9zeW1ib2wodmVuZG9yKTsKLQkJZWZpX3N5c3RhYl94ZW4uZndfcmV2aXNp b24gPSBpbmZvLT52ZW5kb3IucmV2aXNpb247Ci0JfSBlbHNlCi0JCWVmaV9zeXN0YWJfeGVuLmZ3 X3ZlbmRvciA9IF9fcGFfc3ltYm9sKEwiVU5LTk9XTiIpOwotCi0Jb3AuY21kID0gWEVOUEZfZmly bXdhcmVfaW5mbzsKLQlvcC51LmZpcm13YXJlX2luZm8udHlwZSA9IFhFTl9GV19FRklfSU5GTzsK LQlvcC51LmZpcm13YXJlX2luZm8uaW5kZXggPSBYRU5fRldfRUZJX1ZFUlNJT047Ci0KLQlpZiAo SFlQRVJWSVNPUl9wbGF0Zm9ybV9vcCgmb3ApID09IDApCi0JCWVmaV9zeXN0YWJfeGVuLmhkci5y ZXZpc2lvbiA9IGluZm8tPnZlcnNpb247Ci0KLQlvcC5jbWQgPSBYRU5QRl9maXJtd2FyZV9pbmZv OwotCW9wLnUuZmlybXdhcmVfaW5mby50eXBlID0gWEVOX0ZXX0VGSV9JTkZPOwotCW9wLnUuZmly bXdhcmVfaW5mby5pbmRleCA9IFhFTl9GV19FRklfUlRfVkVSU0lPTjsKLQotCWlmIChIWVBFUlZJ U09SX3BsYXRmb3JtX29wKCZvcCkgPT0gMCkKLQkJZWZpLnJ1bnRpbWVfdmVyc2lvbiA9IGluZm8t PnZlcnNpb247Ci0KLQlyZXR1cm4gJmVmaV9zeXN0YWJfeGVuOwotfQorRVhQT1JUX1NZTUJPTF9H UEwoeGVuX2VmaV9xdWVyeV9jYXBzdWxlX2NhcHMpOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS94ZW4v eGVuLW9wcy5oIGIvaW5jbHVkZS94ZW4veGVuLW9wcy5oCmluZGV4IDA3MmJlMWMuLjM0OTE1ODIg MTAwNjQ0Ci0tLSBhL2luY2x1ZGUveGVuL3hlbi1vcHMuaAorKysgYi9pbmNsdWRlL3hlbi94ZW4t b3BzLmgKQEAgLTkwLDE0ICs5MCwyOCBAQCBpbnQgeGVuX3hsYXRlX21hcF9iYWxsb29uZWRfcGFn ZXMoeGVuX3Bmbl90ICoqcGZucywgdm9pZCAqKnZhZGRyLAogCiBib29sIHhlbl9ydW5uaW5nX29u X3ZlcnNpb25fb3JfbGF0ZXIodW5zaWduZWQgaW50IG1ham9yLCB1bnNpZ25lZCBpbnQgbWlub3Ip OwogCi0jaWZkZWYgQ09ORklHX1hFTl9FRkkKLWV4dGVybiBlZmlfc3lzdGVtX3RhYmxlX3QgKnhl bl9lZmlfcHJvYmUodm9pZCk7Ci0jZWxzZQotc3RhdGljIGlubGluZSBlZmlfc3lzdGVtX3RhYmxl X3QgX19pbml0ICp4ZW5fZWZpX3Byb2JlKHZvaWQpCi17Ci0JcmV0dXJuIE5VTEw7Ci19Ci0jZW5k aWYKK2VmaV9zdGF0dXNfdCB4ZW5fZWZpX2dldF90aW1lKGVmaV90aW1lX3QgKnRtLCBlZmlfdGlt ZV9jYXBfdCAqdGMpOworZWZpX3N0YXR1c190IHhlbl9lZmlfc2V0X3RpbWUoZWZpX3RpbWVfdCAq dG0pOworZWZpX3N0YXR1c190IHhlbl9lZmlfZ2V0X3dha2V1cF90aW1lKGVmaV9ib29sX3QgKmVu YWJsZWQsIGVmaV9ib29sX3QgKnBlbmRpbmcsCisJCQkJICAgICBlZmlfdGltZV90ICp0bSk7Citl Zmlfc3RhdHVzX3QgeGVuX2VmaV9zZXRfd2FrZXVwX3RpbWUoZWZpX2Jvb2xfdCBlbmFibGVkLCBl ZmlfdGltZV90ICp0bSk7CitlZmlfc3RhdHVzX3QgeGVuX2VmaV9nZXRfdmFyaWFibGUoZWZpX2No YXIxNl90ICpuYW1lLCBlZmlfZ3VpZF90ICp2ZW5kb3IsCisJCQkJICB1MzIgKmF0dHIsIHVuc2ln bmVkIGxvbmcgKmRhdGFfc2l6ZSwKKwkJCQkgIHZvaWQgKmRhdGEpOworZWZpX3N0YXR1c190IHhl bl9lZmlfZ2V0X25leHRfdmFyaWFibGUodW5zaWduZWQgbG9uZyAqbmFtZV9zaXplLAorCQkJCSAg ICAgICBlZmlfY2hhcjE2X3QgKm5hbWUsIGVmaV9ndWlkX3QgKnZlbmRvcik7CitlZmlfc3RhdHVz X3QgeGVuX2VmaV9zZXRfdmFyaWFibGUoZWZpX2NoYXIxNl90ICpuYW1lLCBlZmlfZ3VpZF90ICp2 ZW5kb3IsCisJCQkJICB1MzIgYXR0ciwgdW5zaWduZWQgbG9uZyBkYXRhX3NpemUsCisJCQkJICB2 b2lkICpkYXRhKTsKK2VmaV9zdGF0dXNfdCB4ZW5fZWZpX3F1ZXJ5X3ZhcmlhYmxlX2luZm8odTMy IGF0dHIsIHU2NCAqc3RvcmFnZV9zcGFjZSwKKwkJCQkJIHU2NCAqcmVtYWluaW5nX3NwYWNlLAor CQkJCQkgdTY0ICptYXhfdmFyaWFibGVfc2l6ZSk7CitlZmlfc3RhdHVzX3QgeGVuX2VmaV9nZXRf bmV4dF9oaWdoX21vbm9fY291bnQodTMyICpjb3VudCk7CitlZmlfc3RhdHVzX3QgeGVuX2VmaV91 cGRhdGVfY2Fwc3VsZShlZmlfY2Fwc3VsZV9oZWFkZXJfdCAqKmNhcHN1bGVzLAorCQkJCSAgICB1 bnNpZ25lZCBsb25nIGNvdW50LCB1bnNpZ25lZCBsb25nIHNnX2xpc3QpOworZWZpX3N0YXR1c190 IHhlbl9lZmlfcXVlcnlfY2Fwc3VsZV9jYXBzKGVmaV9jYXBzdWxlX2hlYWRlcl90ICoqY2Fwc3Vs ZXMsCisJCQkJCXVuc2lnbmVkIGxvbmcgY291bnQsIHU2NCAqbWF4X3NpemUsCisJCQkJCWludCAq cmVzZXRfdHlwZSk7CiAKICNpZmRlZiBDT05GSUdfUFJFRU1QVAogCi0tIAoyLjAuNAoKCgpfX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFp bGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHA6Ly9saXN0cy54ZW4ub3JnL3hl bi1kZXZlbAo=