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.8 required=3.0 tests=DKIM_INVALID,DKIM_SIGNED, 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 2001DC04AAC for ; Mon, 20 May 2019 12:55:37 +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 DCAF620645 for ; Mon, 20 May 2019 12:55:36 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=bitdefender.onmicrosoft.com header.i=@bitdefender.onmicrosoft.com header.b="IFIzwOqb" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org DCAF620645 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=bitdefender.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 1hShoz-0006ge-Md; Mon, 20 May 2019 12:55:17 +0000 Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1hShoy-0006gY-1I for xen-devel@lists.xenproject.org; Mon, 20 May 2019 12:55:16 +0000 X-Inumbo-ID: 821f3f17-7afe-11e9-8980-bc764e045a96 Received: from EUR01-VE1-obe.outbound.protection.outlook.com (unknown [40.107.14.108]) by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS id 821f3f17-7afe-11e9-8980-bc764e045a96; Mon, 20 May 2019 12:55:14 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bitdefender.onmicrosoft.com; s=selector1-bitdefender-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=SuUQL9kwXn3FXXCbT4tbnX+gSMarRXx+PfuoCom0wKw=; b=IFIzwOqb/NEYJn6v31pcyZSZP4tp4SwVDi/l0PvjE3hWIB5o0mt9+Xs8wlLgp/d6wjZLlQoRRoYMv51/kOkU/E9Sn9Pl7527ZMSgqJvD5E2/JbjwmPG7KukQgeqjGotcfyQC6BWd5cECBKjJ0x4aPWJjE1fJqeaMetKAz4SyCOw= Received: from VI1PR0202MB2928.eurprd02.prod.outlook.com (10.171.106.11) by VI1PR0202MB2863.eurprd02.prod.outlook.com (10.171.102.139) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1900.16; Mon, 20 May 2019 12:55:10 +0000 Received: from VI1PR0202MB2928.eurprd02.prod.outlook.com ([fe80::fdcf:4771:37b7:9830]) by VI1PR0202MB2928.eurprd02.prod.outlook.com ([fe80::fdcf:4771:37b7:9830%9]) with mapi id 15.20.1900.020; Mon, 20 May 2019 12:55:10 +0000 From: Alexandru Stefan ISAILA To: "xen-devel@lists.xenproject.org" Thread-Topic: [PATCH v4 1/2] x86/emulate: Move hvmemul_linear_to_phys Thread-Index: AQHVDwtCd30Zw9xzVEyqgGU2/KVoUQ== Date: Mon, 20 May 2019 12:55:10 +0000 Message-ID: <20190520125454.14805-1-aisaila@bitdefender.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: AM0PR05CA0078.eurprd05.prod.outlook.com (2603:10a6:208:136::18) To VI1PR0202MB2928.eurprd02.prod.outlook.com (2603:10a6:800:e3::11) authentication-results: spf=none (sender IP is ) smtp.mailfrom=aisaila@bitdefender.com; x-ms-exchange-messagesentrepresentingtype: 1 x-mailer: git-send-email 2.17.1 x-originating-ip: [91.199.104.6] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: aab4f67a-916e-487a-f5d7-08d6dd226473 x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600141)(711020)(4605104)(2017052603328)(7193020); SRVR:VI1PR0202MB2863; x-ms-traffictypediagnostic: VI1PR0202MB2863:|VI1PR0202MB2863: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:2803; x-forefront-prvs: 004395A01C x-forefront-antispam-report: SFV:NSPM; SFS:(10019020)(346002)(136003)(396003)(376002)(39860400002)(366004)(199004)(189003)(71190400001)(4326008)(1076003)(66066001)(71200400001)(305945005)(7736002)(53936002)(107886003)(256004)(3846002)(6116002)(86362001)(14444005)(36756003)(8676002)(81156014)(81166006)(2351001)(25786009)(316002)(6916009)(54906003)(14454004)(5660300002)(8936002)(478600001)(68736007)(486006)(50226002)(476003)(2501003)(6512007)(66446008)(2616005)(66556008)(66476007)(66946007)(73956011)(64756008)(2906002)(6506007)(102836004)(52116002)(26005)(6436002)(386003)(5640700003)(99286004)(186003)(6486002); DIR:OUT; SFP:1102; SCL:1; SRVR:VI1PR0202MB2863; H:VI1PR0202MB2928.eurprd02.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; received-spf: None (protection.outlook.com: bitdefender.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: yvZSwWCqGs0tV6HVUIjGNoU+SDBzdT8N7KjZjMVBbctf7CikKZDnyKgftKwpveHsCB6MKeN1oZIXy6BcPV3ZN2ORCxewfGhXe0BeK6UeezY4Vg3BqJYXDN2qgKmz+SXSr7gm7pWsPsQjdeCt2CscgGcZnv59IPvVbZsEqnXswDMEVJ5QouTvRpUjhfvtSYMkALB3rJdrC60wNi/nGnxGlSGenTeULQ55o+K0Ppc8TPgyQjkweAmqvUNnBuELMJ1Ep6pBgUxUbYtf/Ap4sFOBqSlMHV9JKpntUkhoNMgICghhP+SpK30E6qGUm2MhGq6FZs9eJI8qW7DedGf+43ne8+EtJHHN2rP5zo6ltlEu9aar8qGtGoUeK+hnwu6xNc9oAHHQzVB99814PKDTdfKSCctpAeebE+cZLZhd50JUw88= MIME-Version: 1.0 X-OriginatorOrg: bitdefender.com X-MS-Exchange-CrossTenant-Network-Message-Id: aab4f67a-916e-487a-f5d7-08d6dd226473 X-MS-Exchange-CrossTenant-originalarrivaltime: 20 May 2019 12:55:10.8045 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 487baf29-f1da-469a-9221-243f830c36f3 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR0202MB2863 Subject: [Xen-devel] [PATCH v4 1/2] x86/emulate: Move hvmemul_linear_to_phys 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: "tamas@tklengyel.com" , "wei.liu2@citrix.com" , "rcojocaru@bitdefender.com" , "george.dunlap@eu.citrix.com" , "andrew.cooper3@citrix.com" , "paul.durrant@citrix.com" , "jbeulich@suse.com" , Alexandru Stefan ISAILA , "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" Message-ID: <20190520125510.LYPm1XX3LEEP_SB8YaS-AIpMQ_g3MzDSMYhZ_o7_MUY@z> VGhpaXMgaXMgZG9uZSBzbyBodm1lbXVsX2xpbmVhcl90b19waHlzKCkgY2FuIGJlIGNhbGxlZCBm cm9tDQpodm1lbXVsX3NlbmRfdm1fZXZlbnQoKS4NCg0KU2lnbmVkLW9mZi1ieTogQWxleGFuZHJ1 IElzYWlsYSA8YWlzYWlsYUBiaXRkZWZlbmRlci5jb20+DQotLS0NCiB4ZW4vYXJjaC94ODYvaHZt L2VtdWxhdGUuYyB8IDE4MSArKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tDQog MSBmaWxlIGNoYW5nZWQsIDkwIGluc2VydGlvbnMoKyksIDkxIGRlbGV0aW9ucygtKQ0KDQpkaWZm IC0tZ2l0IGEveGVuL2FyY2gveDg2L2h2bS9lbXVsYXRlLmMgYi94ZW4vYXJjaC94ODYvaHZtL2Vt dWxhdGUuYw0KaW5kZXggODY1OWM4OTg2Mi4uMjU0ZmY2NTE1ZCAxMDA2NDQNCi0tLSBhL3hlbi9h cmNoL3g4Ni9odm0vZW11bGF0ZS5jDQorKysgYi94ZW4vYXJjaC94ODYvaHZtL2VtdWxhdGUuYw0K QEAgLTUzMCw2ICs1MzAsOTUgQEAgc3RhdGljIGludCBodm1lbXVsX2RvX21taW9fYWRkcihwYWRk cl90IG1taW9fZ3BhLA0KICAgICByZXR1cm4gaHZtZW11bF9kb19pb19hZGRyKDEsIG1taW9fZ3Bh LCByZXBzLCBzaXplLCBkaXIsIGRmLCByYW1fZ3BhKTsNCiB9DQogDQorLyoNCisgKiBDb252ZXJ0 IGFkZHIgZnJvbSBsaW5lYXIgdG8gcGh5c2ljYWwgZm9ybSwgdmFsaWQgb3ZlciB0aGUgcmFuZ2UN CisgKiBbYWRkciwgYWRkciArICpyZXBzICogYnl0ZXNfcGVyX3JlcF0uICpyZXBzIGlzIGFkanVz dGVkIGFjY29yZGluZyB0bw0KKyAqIHRoZSB2YWxpZCBjb21wdXRlZCByYW5nZS4gSXQgaXMgYWx3 YXlzID4wIHdoZW4gWDg2RU1VTF9PS0FZIGlzIHJldHVybmVkLg0KKyAqIEBwZmVjIGluZGljYXRl cyB0aGUgYWNjZXNzIGNoZWNrcyB0byBiZSBwZXJmb3JtZWQgZHVyaW5nIHBhZ2UtdGFibGUgd2Fs a3MuDQorICovDQorc3RhdGljIGludCBodm1lbXVsX2xpbmVhcl90b19waHlzKA0KKyAgICB1bnNp Z25lZCBsb25nIGFkZHIsDQorICAgIHBhZGRyX3QgKnBhZGRyLA0KKyAgICB1bnNpZ25lZCBpbnQg Ynl0ZXNfcGVyX3JlcCwNCisgICAgdW5zaWduZWQgbG9uZyAqcmVwcywNCisgICAgdWludDMyX3Qg cGZlYywNCisgICAgc3RydWN0IGh2bV9lbXVsYXRlX2N0eHQgKmh2bWVtdWxfY3R4dCkNCit7DQor ICAgIHN0cnVjdCB2Y3B1ICpjdXJyID0gY3VycmVudDsNCisgICAgdW5zaWduZWQgbG9uZyBwZm4s IG5wZm4sIGRvbmUsIHRvZG8sIGksIG9mZnNldCA9IGFkZHIgJiB+UEFHRV9NQVNLOw0KKyAgICBp bnQgcmV2ZXJzZTsNCisNCisgICAgLyoNCisgICAgICogQ2xpcCByZXBldGl0aW9ucyB0byBhIHNl bnNpYmxlIG1heGltdW0uIFRoaXMgYXZvaWRzIGV4dGVuc2l2ZSBsb29waW5nIGluDQorICAgICAq IHRoaXMgZnVuY3Rpb24gd2hpbGUgc3RpbGwgYW1vcnRpc2luZyB0aGUgY29zdCBvZiBJL08gdHJh cC1hbmQtZW11bGF0ZS4NCisgICAgICovDQorICAgICpyZXBzID0gbWluX3QodW5zaWduZWQgbG9u ZywgKnJlcHMsIDQwOTYpOw0KKw0KKyAgICAvKiBXaXRoIG5vIHBhZ2luZyBpdCdzIGVhc3k6IGxp bmVhciA9PSBwaHlzaWNhbC4gKi8NCisgICAgaWYgKCAhKGN1cnItPmFyY2guaHZtLmd1ZXN0X2Ny WzBdICYgWDg2X0NSMF9QRykgKQ0KKyAgICB7DQorICAgICAgICAqcGFkZHIgPSBhZGRyOw0KKyAg ICAgICAgcmV0dXJuIFg4NkVNVUxfT0tBWTsNCisgICAgfQ0KKw0KKyAgICAvKiBSZXZlcnNlIG1v ZGUgaWYgdGhpcyBpcyBhIGJhY2t3YXJkcyBtdWx0aS1pdGVyYXRpb24gc3RyaW5nIG9wZXJhdGlv bi4gKi8NCisgICAgcmV2ZXJzZSA9IChodm1lbXVsX2N0eHQtPmN0eHQucmVncy0+ZWZsYWdzICYg WDg2X0VGTEFHU19ERikgJiYgKCpyZXBzID4gMSk7DQorDQorICAgIGlmICggcmV2ZXJzZSAmJiAo KFBBR0VfU0laRSAtIG9mZnNldCkgPCBieXRlc19wZXJfcmVwKSApDQorICAgIHsNCisgICAgICAg IC8qIERvIHBhZ2Utc3RyYWRkbGluZyBmaXJzdCBpdGVyYXRpb24gZm9yd2FyZHMgdmlhIHJlY3Vy c2lvbi4gKi8NCisgICAgICAgIHBhZGRyX3QgX3BhZGRyOw0KKyAgICAgICAgdW5zaWduZWQgbG9u ZyBvbmVfcmVwID0gMTsNCisgICAgICAgIGludCByYyA9IGh2bWVtdWxfbGluZWFyX3RvX3BoeXMo DQorICAgICAgICAgICAgYWRkciwgJl9wYWRkciwgYnl0ZXNfcGVyX3JlcCwgJm9uZV9yZXAsIHBm ZWMsIGh2bWVtdWxfY3R4dCk7DQorICAgICAgICBpZiAoIHJjICE9IFg4NkVNVUxfT0tBWSApDQor ICAgICAgICAgICAgcmV0dXJuIHJjOw0KKyAgICAgICAgcGZuID0gX3BhZGRyID4+IFBBR0VfU0hJ RlQ7DQorICAgIH0NCisgICAgZWxzZSBpZiAoIChwZm4gPSBwYWdpbmdfZ3ZhX3RvX2dmbihjdXJy LCBhZGRyLCAmcGZlYykpID09IGdmbl94KElOVkFMSURfR0ZOKSApDQorICAgIHsNCisgICAgICAg IGlmICggcGZlYyAmIChQRkVDX3BhZ2VfcGFnZWQgfCBQRkVDX3BhZ2Vfc2hhcmVkKSApDQorICAg ICAgICAgICAgcmV0dXJuIFg4NkVNVUxfUkVUUlk7DQorICAgICAgICAqcmVwcyA9IDA7DQorICAg ICAgICB4ODZfZW11bF9wYWdlZmF1bHQocGZlYywgYWRkciwgJmh2bWVtdWxfY3R4dC0+Y3R4dCk7 DQorICAgICAgICByZXR1cm4gWDg2RU1VTF9FWENFUFRJT047DQorICAgIH0NCisNCisgICAgZG9u ZSA9IHJldmVyc2UgPyBieXRlc19wZXJfcmVwICsgb2Zmc2V0IDogUEFHRV9TSVpFIC0gb2Zmc2V0 Ow0KKyAgICB0b2RvID0gKnJlcHMgKiBieXRlc19wZXJfcmVwOw0KKyAgICBmb3IgKCBpID0gMTsg ZG9uZSA8IHRvZG87IGkrKyApDQorICAgIHsNCisgICAgICAgIC8qIEdldCB0aGUgbmV4dCBQRk4g aW4gdGhlIHJhbmdlLiAqLw0KKyAgICAgICAgYWRkciArPSByZXZlcnNlID8gLVBBR0VfU0laRSA6 IFBBR0VfU0laRTsNCisgICAgICAgIG5wZm4gPSBwYWdpbmdfZ3ZhX3RvX2dmbihjdXJyLCBhZGRy LCAmcGZlYyk7DQorDQorICAgICAgICAvKiBJcyBpdCBjb250aWd1b3VzIHdpdGggdGhlIHByZWNl ZGluZyBQRk5zPyBJZiBub3QgdGhlbiB3ZSdyZSBkb25lLiAqLw0KKyAgICAgICAgaWYgKCAobnBm biA9PSBnZm5feChJTlZBTElEX0dGTikpIHx8DQorICAgICAgICAgICAgIChucGZuICE9IChwZm4g KyAocmV2ZXJzZSA/IC1pIDogaSkpKSApDQorICAgICAgICB7DQorICAgICAgICAgICAgaWYgKCBw ZmVjICYgKFBGRUNfcGFnZV9wYWdlZCB8IFBGRUNfcGFnZV9zaGFyZWQpICkNCisgICAgICAgICAg ICAgICAgcmV0dXJuIFg4NkVNVUxfUkVUUlk7DQorICAgICAgICAgICAgZG9uZSAvPSBieXRlc19w ZXJfcmVwOw0KKyAgICAgICAgICAgIGlmICggZG9uZSA9PSAwICkNCisgICAgICAgICAgICB7DQor ICAgICAgICAgICAgICAgIEFTU0VSVCghcmV2ZXJzZSk7DQorICAgICAgICAgICAgICAgIGlmICgg bnBmbiAhPSBnZm5feChJTlZBTElEX0dGTikgKQ0KKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu IFg4NkVNVUxfVU5IQU5ETEVBQkxFOw0KKyAgICAgICAgICAgICAgICAqcmVwcyA9IDA7DQorICAg ICAgICAgICAgICAgIHg4Nl9lbXVsX3BhZ2VmYXVsdChwZmVjLCBhZGRyICYgUEFHRV9NQVNLLCAm aHZtZW11bF9jdHh0LT5jdHh0KTsNCisgICAgICAgICAgICAgICAgcmV0dXJuIFg4NkVNVUxfRVhD RVBUSU9OOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICAqcmVwcyA9IGRvbmU7DQorICAg ICAgICAgICAgYnJlYWs7DQorICAgICAgICB9DQorDQorICAgICAgICBkb25lICs9IFBBR0VfU0la RTsNCisgICAgfQ0KKw0KKyAgICAqcGFkZHIgPSAoKHBhZGRyX3QpcGZuIDw8IFBBR0VfU0hJRlQp IHwgb2Zmc2V0Ow0KKyAgICByZXR1cm4gWDg2RU1VTF9PS0FZOw0KK30NCisNCiAvKg0KICAqIE1h cCB0aGUgZnJhbWUocykgY292ZXJpbmcgYW4gaW5kaXZpZHVhbCBsaW5lYXIgYWNjZXNzLCBmb3Ig d3JpdGVhYmxlDQogICogYWNjZXNzLiAgTWF5IHJldHVybiBOVUxMIGZvciBNTUlPLCBvciBFUlJf UFRSKH5YODZFTVVMXyopIGZvciBvdGhlciBlcnJvcnMNCkBAIC02OTIsOTcgKzc4MSw3IEBAIHN0 YXRpYyB2b2lkIGh2bWVtdWxfdW5tYXBfbGluZWFyX2FkZHIoDQogICAgICAgICAqbWZuKysgPSBf bWZuKDApOw0KICAgICB9DQogI2VuZGlmDQotfQ0KLQ0KLS8qDQotICogQ29udmVydCBhZGRyIGZy b20gbGluZWFyIHRvIHBoeXNpY2FsIGZvcm0sIHZhbGlkIG92ZXIgdGhlIHJhbmdlDQotICogW2Fk ZHIsIGFkZHIgKyAqcmVwcyAqIGJ5dGVzX3Blcl9yZXBdLiAqcmVwcyBpcyBhZGp1c3RlZCBhY2Nv cmRpbmcgdG8NCi0gKiB0aGUgdmFsaWQgY29tcHV0ZWQgcmFuZ2UuIEl0IGlzIGFsd2F5cyA+MCB3 aGVuIFg4NkVNVUxfT0tBWSBpcyByZXR1cm5lZC4NCi0gKiBAcGZlYyBpbmRpY2F0ZXMgdGhlIGFj Y2VzcyBjaGVja3MgdG8gYmUgcGVyZm9ybWVkIGR1cmluZyBwYWdlLXRhYmxlIHdhbGtzLg0KLSAq Lw0KLXN0YXRpYyBpbnQgaHZtZW11bF9saW5lYXJfdG9fcGh5cygNCi0gICAgdW5zaWduZWQgbG9u ZyBhZGRyLA0KLSAgICBwYWRkcl90ICpwYWRkciwNCi0gICAgdW5zaWduZWQgaW50IGJ5dGVzX3Bl cl9yZXAsDQotICAgIHVuc2lnbmVkIGxvbmcgKnJlcHMsDQotICAgIHVpbnQzMl90IHBmZWMsDQot ICAgIHN0cnVjdCBodm1fZW11bGF0ZV9jdHh0ICpodm1lbXVsX2N0eHQpDQotew0KLSAgICBzdHJ1 Y3QgdmNwdSAqY3VyciA9IGN1cnJlbnQ7DQotICAgIHVuc2lnbmVkIGxvbmcgcGZuLCBucGZuLCBk b25lLCB0b2RvLCBpLCBvZmZzZXQgPSBhZGRyICYgflBBR0VfTUFTSzsNCi0gICAgaW50IHJldmVy c2U7DQotDQotICAgIC8qDQotICAgICAqIENsaXAgcmVwZXRpdGlvbnMgdG8gYSBzZW5zaWJsZSBt YXhpbXVtLiBUaGlzIGF2b2lkcyBleHRlbnNpdmUgbG9vcGluZyBpbg0KLSAgICAgKiB0aGlzIGZ1 bmN0aW9uIHdoaWxlIHN0aWxsIGFtb3J0aXNpbmcgdGhlIGNvc3Qgb2YgSS9PIHRyYXAtYW5kLWVt dWxhdGUuDQotICAgICAqLw0KLSAgICAqcmVwcyA9IG1pbl90KHVuc2lnbmVkIGxvbmcsICpyZXBz LCA0MDk2KTsNCi0NCi0gICAgLyogV2l0aCBubyBwYWdpbmcgaXQncyBlYXN5OiBsaW5lYXIgPT0g cGh5c2ljYWwuICovDQotICAgIGlmICggIShjdXJyLT5hcmNoLmh2bS5ndWVzdF9jclswXSAmIFg4 Nl9DUjBfUEcpICkNCi0gICAgew0KLSAgICAgICAgKnBhZGRyID0gYWRkcjsNCi0gICAgICAgIHJl dHVybiBYODZFTVVMX09LQVk7DQotICAgIH0NCi0NCi0gICAgLyogUmV2ZXJzZSBtb2RlIGlmIHRo aXMgaXMgYSBiYWNrd2FyZHMgbXVsdGktaXRlcmF0aW9uIHN0cmluZyBvcGVyYXRpb24uICovDQot ICAgIHJldmVyc2UgPSAoaHZtZW11bF9jdHh0LT5jdHh0LnJlZ3MtPmVmbGFncyAmIFg4Nl9FRkxB R1NfREYpICYmICgqcmVwcyA+IDEpOw0KLQ0KLSAgICBpZiAoIHJldmVyc2UgJiYgKChQQUdFX1NJ WkUgLSBvZmZzZXQpIDwgYnl0ZXNfcGVyX3JlcCkgKQ0KLSAgICB7DQotICAgICAgICAvKiBEbyBw YWdlLXN0cmFkZGxpbmcgZmlyc3QgaXRlcmF0aW9uIGZvcndhcmRzIHZpYSByZWN1cnNpb24uICov DQotICAgICAgICBwYWRkcl90IF9wYWRkcjsNCi0gICAgICAgIHVuc2lnbmVkIGxvbmcgb25lX3Jl cCA9IDE7DQotICAgICAgICBpbnQgcmMgPSBodm1lbXVsX2xpbmVhcl90b19waHlzKA0KLSAgICAg ICAgICAgIGFkZHIsICZfcGFkZHIsIGJ5dGVzX3Blcl9yZXAsICZvbmVfcmVwLCBwZmVjLCBodm1l bXVsX2N0eHQpOw0KLSAgICAgICAgaWYgKCByYyAhPSBYODZFTVVMX09LQVkgKQ0KLSAgICAgICAg ICAgIHJldHVybiByYzsNCi0gICAgICAgIHBmbiA9IF9wYWRkciA+PiBQQUdFX1NISUZUOw0KLSAg ICB9DQotICAgIGVsc2UgaWYgKCAocGZuID0gcGFnaW5nX2d2YV90b19nZm4oY3VyciwgYWRkciwg JnBmZWMpKSA9PSBnZm5feChJTlZBTElEX0dGTikgKQ0KLSAgICB7DQotICAgICAgICBpZiAoIHBm ZWMgJiAoUEZFQ19wYWdlX3BhZ2VkIHwgUEZFQ19wYWdlX3NoYXJlZCkgKQ0KLSAgICAgICAgICAg IHJldHVybiBYODZFTVVMX1JFVFJZOw0KLSAgICAgICAgKnJlcHMgPSAwOw0KLSAgICAgICAgeDg2 X2VtdWxfcGFnZWZhdWx0KHBmZWMsIGFkZHIsICZodm1lbXVsX2N0eHQtPmN0eHQpOw0KLSAgICAg ICAgcmV0dXJuIFg4NkVNVUxfRVhDRVBUSU9OOw0KLSAgICB9DQotDQotICAgIGRvbmUgPSByZXZl cnNlID8gYnl0ZXNfcGVyX3JlcCArIG9mZnNldCA6IFBBR0VfU0laRSAtIG9mZnNldDsNCi0gICAg dG9kbyA9ICpyZXBzICogYnl0ZXNfcGVyX3JlcDsNCi0gICAgZm9yICggaSA9IDE7IGRvbmUgPCB0 b2RvOyBpKysgKQ0KLSAgICB7DQotICAgICAgICAvKiBHZXQgdGhlIG5leHQgUEZOIGluIHRoZSBy YW5nZS4gKi8NCi0gICAgICAgIGFkZHIgKz0gcmV2ZXJzZSA/IC1QQUdFX1NJWkUgOiBQQUdFX1NJ WkU7DQotICAgICAgICBucGZuID0gcGFnaW5nX2d2YV90b19nZm4oY3VyciwgYWRkciwgJnBmZWMp Ow0KLQ0KLSAgICAgICAgLyogSXMgaXQgY29udGlndW91cyB3aXRoIHRoZSBwcmVjZWRpbmcgUEZO cz8gSWYgbm90IHRoZW4gd2UncmUgZG9uZS4gKi8NCi0gICAgICAgIGlmICggKG5wZm4gPT0gZ2Zu X3goSU5WQUxJRF9HRk4pKSB8fA0KLSAgICAgICAgICAgICAobnBmbiAhPSAocGZuICsgKHJldmVy c2UgPyAtaSA6IGkpKSkgKQ0KLSAgICAgICAgew0KLSAgICAgICAgICAgIGlmICggcGZlYyAmIChQ RkVDX3BhZ2VfcGFnZWQgfCBQRkVDX3BhZ2Vfc2hhcmVkKSApDQotICAgICAgICAgICAgICAgIHJl dHVybiBYODZFTVVMX1JFVFJZOw0KLSAgICAgICAgICAgIGRvbmUgLz0gYnl0ZXNfcGVyX3JlcDsN Ci0gICAgICAgICAgICBpZiAoIGRvbmUgPT0gMCApDQotICAgICAgICAgICAgew0KLSAgICAgICAg ICAgICAgICBBU1NFUlQoIXJldmVyc2UpOw0KLSAgICAgICAgICAgICAgICBpZiAoIG5wZm4gIT0g Z2ZuX3goSU5WQUxJRF9HRk4pICkNCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBYODZFTVVM X1VOSEFORExFQUJMRTsNCi0gICAgICAgICAgICAgICAgKnJlcHMgPSAwOw0KLSAgICAgICAgICAg ICAgICB4ODZfZW11bF9wYWdlZmF1bHQocGZlYywgYWRkciAmIFBBR0VfTUFTSywgJmh2bWVtdWxf Y3R4dC0+Y3R4dCk7DQotICAgICAgICAgICAgICAgIHJldHVybiBYODZFTVVMX0VYQ0VQVElPTjsN Ci0gICAgICAgICAgICB9DQotICAgICAgICAgICAgKnJlcHMgPSBkb25lOw0KLSAgICAgICAgICAg IGJyZWFrOw0KLSAgICAgICAgfQ0KLQ0KLSAgICAgICAgZG9uZSArPSBQQUdFX1NJWkU7DQotICAg IH0NCi0NCi0gICAgKnBhZGRyID0gKChwYWRkcl90KXBmbiA8PCBQQUdFX1NISUZUKSB8IG9mZnNl dDsNCi0gICAgcmV0dXJuIFg4NkVNVUxfT0tBWTsNCi19DQotICAgIA0KK30gIA0KIA0KIHN0YXRp YyBpbnQgaHZtZW11bF92aXJ0dWFsX3RvX2xpbmVhcigNCiAgICAgZW51bSB4ODZfc2VnbWVudCBz ZWcsDQotLSANCjIuMTcuMQ0KDQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW5wcm9q ZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8veGVu LWRldmVs