From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paul Durrant Subject: [PATCH 2/2] iommu / p2m: add a page_order parameter to iommu_map/unmap_page() Date: Mon, 29 Oct 2018 18:02:04 +0000 Message-ID: <20181029180211.2155-4-paul.durrant@citrix.com> References: <20181029180211.2155-1-paul.durrant@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1gHBrm-0000Pa-IW for xen-devel@lists.xenproject.org; Mon, 29 Oct 2018 18:02:18 +0000 In-Reply-To: <20181029180211.2155-1-paul.durrant@citrix.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: Kevin Tian , Stefano Stabellini , Wei Liu , Jun Nakajima , Konrad Rzeszutek Wilk , Andrew Cooper , Ian Jackson , George Dunlap , Tim Deegan , Julien Grall , Paul Durrant , Jan Beulich List-Id: xen-devel@lists.xenproject.org VGhlIFAyTSBjb2RlIGN1cnJlbnRseSBjb250YWlucyBtYW55IGxvb3BzIHRvIGRlYWwgd2l0aCB0 aGUgZmFjdCB0aGF0LAp3aGlsZSBpdCBtYXkgYmUgcmVxdWlyZSB0byBoYW5kbGUgcGFnZSBvcmRl cnMgZ3JlYXRlciB0aGFuIDRrLCB0aGUKSU9NTVUgbWFwIGFuZCB1bm1hcCBmdW5jdGlvbnMgZG8g bm90LgpUaGlzIHBhdGNoIGFkZHMgYSBwYWdlX29yZGVyIHBhcmFtZXRlciB0byB0aG9zZSBmdW5j dGlvbnMgYW5kIGltcGxlbWVudHMKdGhlIG5lY2Vzc2FyeSBsb29wcyB3aXRoaW4uIFRoaXMgYWxs b3dzIHRoZSBQMk0gY29kZSB0byBiZSBzdW5zdGFudGlhbGx5CnNpbXBsaWZpZWQuCgpOT1RFOiBU aGlzIHBhdGNoIGRvZXMgbm90IG1vZGlmeSB0aGUgdW5kZXJseWluZyB2ZW5kb3IgSU9NTVUKICAg ICAgaW1wbGVtZW50YXRpb25zIHRvIGRlYWwgd2l0aCBwYWdlIG9yZGVycyBvZiBtb3JlIHRoYW4g NGsuCgpTaWduZWQtb2ZmLWJ5OiBQYXVsIER1cnJhbnQgPHBhdWwuZHVycmFudEBjaXRyaXguY29t PgotLS0KQ2M6IEphbiBCZXVsaWNoIDxqYmV1bGljaEBzdXNlLmNvbT4KQ2M6IEFuZHJldyBDb29w ZXIgPGFuZHJldy5jb29wZXIzQGNpdHJpeC5jb20+CkNjOiBXZWkgTGl1IDx3ZWkubGl1MkBjaXRy aXguY29tPgpDYzogR2VvcmdlIER1bmxhcCA8R2VvcmdlLkR1bmxhcEBjaXRyaXguY29tPgpDYzog SWFuIEphY2tzb24gPGlhbi5qYWNrc29uQGV1LmNpdHJpeC5jb20+CkNjOiBKdWxpZW4gR3JhbGwg PGp1bGllbi5ncmFsbEBhcm0uY29tPgpDYzogS29ucmFkIFJ6ZXN6dXRlayBXaWxrIDxrb25yYWQu d2lsa0BvcmFjbGUuY29tPgpDYzogU3RlZmFubyBTdGFiZWxsaW5pIDxzc3RhYmVsbGluaUBrZXJu ZWwub3JnPgpDYzogVGltIERlZWdhbiA8dGltQHhlbi5vcmc+CkNjOiBKdW4gTmFrYWppbWEgPGp1 bi5uYWthamltYUBpbnRlbC5jb20+CkNjOiBLZXZpbiBUaWFuIDxrZXZpbi50aWFuQGludGVsLmNv bT4KLS0tCiB4ZW4vYXJjaC94ODYvbW0uYyAgICAgICAgICAgICAgICAgICB8ICA0ICsrLQogeGVu L2FyY2gveDg2L21tL3AybS1lcHQuYyAgICAgICAgICAgfCAzMCArKy0tLS0tLS0tLS0tLS0tLQog eGVuL2FyY2gveDg2L21tL3AybS1wdC5jICAgICAgICAgICAgfCA0NyArKysrKystLS0tLS0tLS0t LS0tLS0tLS0tLS0KIHhlbi9hcmNoL3g4Ni9tbS9wMm0uYyAgICAgICAgICAgICAgIHwgNDkgKysr Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogeGVuL2FyY2gveDg2L3g4Nl82NC9tbS5jICAgICAg ICAgICAgfCAgNCArKy0KIHhlbi9jb21tb24vZ3JhbnRfdGFibGUuYyAgICAgICAgICAgIHwgIDcg KystLQogeGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvaW9tbXUuYyAgICAgfCA2NSArKysrKysrKysr KysrKysrKysrKysrKystLS0tLS0tLS0tLS0tCiB4ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC94ODYv aW9tbXUuYyB8ICAyICstCiB4ZW4vaW5jbHVkZS94ZW4vaW9tbXUuaCAgICAgICAgICAgICB8ICA4 ICsrKy0tCiA5IGZpbGVzIGNoYW5nZWQsIDgwIGluc2VydGlvbnMoKyksIDEzNiBkZWxldGlvbnMo LSkKCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvbW0uYyBiL3hlbi9hcmNoL3g4Ni9tbS5jCmlu ZGV4IGM1M2JjODZhNjguLmYwYWUwMTZlN2EgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9tbS5j CisrKyBiL3hlbi9hcmNoL3g4Ni9tbS5jCkBAIC0yNzk0LDkgKzI3OTQsMTEgQEAgc3RhdGljIGlu dCBfZ2V0X3BhZ2VfdHlwZShzdHJ1Y3QgcGFnZV9pbmZvICpwYWdlLCB1bnNpZ25lZCBsb25nIHR5 cGUsCiAgICAgICAgICAgICBtZm5fdCBtZm4gPSBwYWdlX3RvX21mbihwYWdlKTsKIAogICAgICAg ICAgICAgaWYgKCAoeCAmIFBHVF90eXBlX21hc2spID09IFBHVF93cml0YWJsZV9wYWdlICkKLSAg ICAgICAgICAgICAgICBpb21tdV9yZXQgPSBpb21tdV91bm1hcF9wYWdlKGQsIF9kZm4obWZuX3go bWZuKSkpOworICAgICAgICAgICAgICAgIGlvbW11X3JldCA9IGlvbW11X3VubWFwX3BhZ2UoZCwg X2RmbihtZm5feChtZm4pKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFBBR0VfT1JERVJfNEspOwogICAgICAgICAgICAgZWxzZSBpZiAoIHR5cGUgPT0gUEdU X3dyaXRhYmxlX3BhZ2UgKQogICAgICAgICAgICAgICAgIGlvbW11X3JldCA9IGlvbW11X21hcF9w YWdlKGQsIF9kZm4obWZuX3gobWZuKSksIG1mbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBQQUdFX09SREVSXzRLLAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIElPTU1VRl9yZWFkYWJsZSB8CiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgSU9NTVVGX3dyaXRhYmxlKTsKICAgICAgICAgfQpkaWZm IC0tZ2l0IGEveGVuL2FyY2gveDg2L21tL3AybS1lcHQuYyBiL3hlbi9hcmNoL3g4Ni9tbS9wMm0t ZXB0LmMKaW5kZXggNDA3ZTI5OWU1MC4uNjU2YzhkZDNhYyAxMDA2NDQKLS0tIGEveGVuL2FyY2gv eDg2L21tL3AybS1lcHQuYworKysgYi94ZW4vYXJjaC94ODYvbW0vcDJtLWVwdC5jCkBAIC04ODAs MzMgKzg4MCw5IEBAIG91dDoKICAgICAgICAgaWYgKCBpb21tdV91c2VfaGFwX3B0KGQpICkKICAg ICAgICAgICAgIHJjID0gaW9tbXVfcHRlX2ZsdXNoKGQsIGdmbiwgJmVwdF9lbnRyeS0+ZXB0ZSwg b3JkZXIsIHZ0ZF9wdGVfcHJlc2VudCk7CiAgICAgICAgIGVsc2UgaWYgKCBuZWVkX2lvbW11X3B0 X3N5bmMoZCkgKQotICAgICAgICB7Ci0gICAgICAgICAgICBkZm5fdCBkZm4gPSBfZGZuKGdmbik7 Ci0KLSAgICAgICAgICAgIGlmICggaW9tbXVfZmxhZ3MgKQotICAgICAgICAgICAgICAgIGZvciAo IGkgPSAwOyBpIDwgKDEgPDwgb3JkZXIpOyBpKysgKQotICAgICAgICAgICAgICAgIHsKLSAgICAg ICAgICAgICAgICAgICAgcmMgPSBpb21tdV9tYXBfcGFnZShkLCBkZm5fYWRkKGRmbiwgaSksCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWZuX2FkZChtZm4sIGkpLCBp b21tdV9mbGFncyk7Ci0gICAgICAgICAgICAgICAgICAgIGlmICggdW5saWtlbHkocmMpICkKLSAg ICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKCBpLS0g KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElmIHN0YXRlbWVudCB0byBzYXRpc2Z5 IF9fbXVzdF9jaGVjay4gKi8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIGlvbW11 X3VubWFwX3BhZ2UocDJtLT5kb21haW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGRmbl9hZGQoZGZuLCBpKSkgKQotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7 Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBl bHNlCi0gICAgICAgICAgICAgICAgZm9yICggaSA9IDA7IGkgPCAoMSA8PCBvcmRlcik7IGkrKyAp Ci0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICByZXQgPSBpb21tdV91bm1h cF9wYWdlKGQsIGRmbl9hZGQoZGZuLCBpKSk7Ci0gICAgICAgICAgICAgICAgICAgIGlmICggIXJj ICkKLSAgICAgICAgICAgICAgICAgICAgICAgIHJjID0gcmV0OwotICAgICAgICAgICAgICAgIH0K LSAgICAgICAgfQorICAgICAgICAgICAgcmMgPSBpb21tdV9mbGFncyA/CisgICAgICAgICAgICAg ICAgaW9tbXVfbWFwX3BhZ2UoZCwgX2RmbihnZm4pLCBtZm4sIG9yZGVyLCBpb21tdV9mbGFncykg OgorICAgICAgICAgICAgICAgIGlvbW11X3VubWFwX3BhZ2UoZCwgX2RmbihnZm4pLCBvcmRlcik7 CiAgICAgfQogCiAgICAgdW5tYXBfZG9tYWluX3BhZ2UodGFibGUpOwpkaWZmIC0tZ2l0IGEveGVu L2FyY2gveDg2L21tL3AybS1wdC5jIGIveGVuL2FyY2gveDg2L21tL3AybS1wdC5jCmluZGV4IDU1 ZGYxODUwMWUuLmIyNjRhOTdiZDggMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9tbS9wMm0tcHQu YworKysgYi94ZW4vYXJjaC94ODYvbW0vcDJtLXB0LmMKQEAgLTQ3NywxMCArNDc3LDExIEBAIHAy bV9wdF9zZXRfZW50cnkoc3RydWN0IHAybV9kb21haW4gKnAybSwgZ2ZuX3QgZ2ZuXywgbWZuX3Qg bWZuLAogICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgcGFnZV9vcmRlciwgcDJtX3R5cGVf dCBwMm10LCBwMm1fYWNjZXNzX3QgcDJtYSwKICAgICAgICAgICAgICAgICAgaW50IHN2ZSkKIHsK KyAgICBzdHJ1Y3QgZG9tYWluICpkID0gcDJtLT5kb21haW47CiAgICAgLyogWFhYIC0tIHRoaXMg bWlnaHQgYmUgYWJsZSB0byBiZSBmYXN0ZXIgaWZmIGN1cnJlbnQtPmRvbWFpbiA9PSBkICovCiAg ICAgdm9pZCAqdGFibGU7CiAgICAgdW5zaWduZWQgbG9uZyBnZm4gPSBnZm5feChnZm5fKTsKLSAg ICB1bnNpZ25lZCBsb25nIGksIGdmbl9yZW1haW5kZXIgPSBnZm47CisgICAgdW5zaWduZWQgbG9u ZyBnZm5fcmVtYWluZGVyID0gZ2ZuOwogICAgIGwxX3BnZW50cnlfdCAqcDJtX2VudHJ5LCBlbnRy eV9jb250ZW50OwogICAgIC8qIEludGVybWVkaWF0ZSB0YWJsZSB0byBmcmVlIGlmIHdlJ3JlIHJl cGxhY2luZyBpdCB3aXRoIGEgc3VwZXJwYWdlLiAqLwogICAgIGwxX3BnZW50cnlfdCBpbnRlcm1l ZGlhdGVfZW50cnkgPSBsMWVfZW1wdHkoKTsKQEAgLTUxNSw3ICs1MTYsNyBAQCBwMm1fcHRfc2V0 X2VudHJ5KHN0cnVjdCBwMm1fZG9tYWluICpwMm0sIGdmbl90IGdmbl8sIG1mbl90IG1mbiwKICAg ICAgICAgdC5nZm4gPSBnZm47CiAgICAgICAgIHQubWZuID0gbWZuX3gobWZuKTsKICAgICAgICAg dC5wMm10ID0gcDJtdDsKLSAgICAgICAgdC5kID0gcDJtLT5kb21haW4tPmRvbWFpbl9pZDsKKyAg ICAgICAgdC5kID0gZC0+ZG9tYWluX2lkOwogICAgICAgICB0Lm9yZGVyID0gcGFnZV9vcmRlcjsK IAogICAgICAgICBfX3RyYWNlX3ZhcihUUkNfTUVNX1NFVF9QMk1fRU5UUlksIDAsIHNpemVvZih0 KSwgJnQpOwpAQCAtNjgzLDQxICs2ODQsMTMgQEAgcDJtX3B0X3NldF9lbnRyeShzdHJ1Y3QgcDJt X2RvbWFpbiAqcDJtLCBnZm5fdCBnZm5fLCBtZm5fdCBtZm4sCiAgICAgewogICAgICAgICBBU1NF UlQocmMgPT0gMCk7CiAKLSAgICAgICAgaWYgKCBpb21tdV91c2VfaGFwX3B0KHAybS0+ZG9tYWlu KSApCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICggaW9tbXVfb2xkX2ZsYWdzICkKLSAgICAg ICAgICAgICAgICBhbWRfaW9tbXVfZmx1c2hfcGFnZXMocDJtLT5kb21haW4sIGdmbiwgcGFnZV9v cmRlcik7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAoIG5lZWRfaW9tbXVfcHRfc3luYyhw Mm0tPmRvbWFpbikgKQotICAgICAgICB7Ci0gICAgICAgICAgICBkZm5fdCBkZm4gPSBfZGZuKGdm bik7Ci0KLSAgICAgICAgICAgIGlmICggaW9tbXVfcHRlX2ZsYWdzICkKLSAgICAgICAgICAgICAg ICBmb3IgKCBpID0gMDsgaSA8ICgxVUwgPDwgcGFnZV9vcmRlcik7IGkrKyApCi0gICAgICAgICAg ICAgICAgewotICAgICAgICAgICAgICAgICAgICByYyA9IGlvbW11X21hcF9wYWdlKHAybS0+ZG9t YWluLCBkZm5fYWRkKGRmbiwgaSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgbWZuX2FkZChtZm4sIGkpLCBpb21tdV9wdGVfZmxhZ3MpOwotICAgICAgICAgICAgICAg ICAgICBpZiAoIHVubGlrZWx5KHJjKSApCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAg ICAgICAgICAgICAgICAgIHdoaWxlICggaS0tICkKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAvKiBJZiBzdGF0ZW1lbnQgdG8gc2F0aXNmeSBfX211c3RfY2hlY2suICovCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgaWYgKCBpb21tdV91bm1hcF9wYWdlKHAybS0+ZG9tYWluLAotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZm5fYWRkKGRm biwgaSkpICkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0KLSAg ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAg ICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGZvciAoIGkg PSAwOyBpIDwgKDFVTCA8PCBwYWdlX29yZGVyKTsgaSsrICkKLSAgICAgICAgICAgICAgICB7Ci0g ICAgICAgICAgICAgICAgICAgIGludCByZXQgPSBpb21tdV91bm1hcF9wYWdlKHAybS0+ZG9tYWlu LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZm5fYWRk KGRmbiwgaSkpOwotCi0gICAgICAgICAgICAgICAgICAgIGlmICggIXJjICkKLSAgICAgICAgICAg ICAgICAgICAgICAgIHJjID0gcmV0OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgfQorICAg ICAgICBpZiAoIG5lZWRfaW9tbXVfcHRfc3luYyhwMm0tPmRvbWFpbikgKQorICAgICAgICAgICAg cmMgPSBpb21tdV9wdGVfZmxhZ3MgPworICAgICAgICAgICAgICAgIGlvbW11X21hcF9wYWdlKGQs IF9kZm4oZ2ZuKSwgbWZuLCBwYWdlX29yZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGlvbW11X3B0ZV9mbGFncykgOgorICAgICAgICAgICAgICAgIGlvbW11X3VubWFwX3BhZ2Uo ZCwgX2RmbihnZm4pLCBwYWdlX29yZGVyKTsKKyAgICAgICAgZWxzZSBpZiAoIGlvbW11X3VzZV9o YXBfcHQoZCkgJiYgaW9tbXVfb2xkX2ZsYWdzICkKKyAgICAgICAgICAgIGFtZF9pb21tdV9mbHVz aF9wYWdlcyhwMm0tPmRvbWFpbiwgZ2ZuLCBwYWdlX29yZGVyKTsKICAgICB9CiAKICAgICAvKgpk aWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L21tL3AybS5jIGIveGVuL2FyY2gveDg2L21tL3AybS5j CmluZGV4IGY5NzJiNDgxOWQuLmU1ODgwZDY0NmIgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9t bS9wMm0uYworKysgYi94ZW4vYXJjaC94ODYvbW0vcDJtLmMKQEAgLTcxOCwyNCArNzE4LDggQEAg cDJtX3JlbW92ZV9wYWdlKHN0cnVjdCBwMm1fZG9tYWluICpwMm0sIHVuc2lnbmVkIGxvbmcgZ2Zu X2wsIHVuc2lnbmVkIGxvbmcgbWZuLAogICAgIHAybV9hY2Nlc3NfdCBhOwogCiAgICAgaWYgKCAh cGFnaW5nX21vZGVfdHJhbnNsYXRlKHAybS0+ZG9tYWluKSApCi0gICAgewotICAgICAgICBpbnQg cmMgPSAwOwotCi0gICAgICAgIGlmICggbmVlZF9pb21tdV9wdF9zeW5jKHAybS0+ZG9tYWluKSAp Ci0gICAgICAgIHsKLSAgICAgICAgICAgIGRmbl90IGRmbiA9IF9kZm4obWZuKTsKLQotICAgICAg ICAgICAgZm9yICggaSA9IDA7IGkgPCAoMSA8PCBwYWdlX29yZGVyKTsgaSsrICkKLSAgICAgICAg ICAgIHsKLSAgICAgICAgICAgICAgICBpbnQgcmV0ID0gaW9tbXVfdW5tYXBfcGFnZShwMm0tPmRv bWFpbiwgZGZuX2FkZChkZm4sIGkpKTsKLQotICAgICAgICAgICAgICAgIGlmICggIXJjICkKLSAg ICAgICAgICAgICAgICAgICAgcmMgPSByZXQ7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQot ICAgICAgICByZXR1cm4gcmM7Ci0gICAgfQorICAgICAgICByZXR1cm4gbmVlZF9pb21tdV9wdF9z eW5jKHAybS0+ZG9tYWluKSA/CisgICAgICAgICAgICBpb21tdV91bm1hcF9wYWdlKHAybS0+ZG9t YWluLCBfZGZuKG1mbiksIHBhZ2Vfb3JkZXIpIDogMDsKIAogICAgIEFTU0VSVChnZm5fbG9ja2Vk X2J5X21lKHAybSwgZ2ZuKSk7CiAgICAgUDJNX0RFQlVHKCJyZW1vdmluZyBnZm49JSNseCBtZm49 JSNseFxuIiwgZ2ZuX2wsIG1mbik7CkBAIC03ODEsMjggKzc2NSw5IEBAIGd1ZXN0X3BoeXNtYXBf YWRkX2VudHJ5KHN0cnVjdCBkb21haW4gKmQsIGdmbl90IGdmbiwgbWZuX3QgbWZuLAogICAgIGlu dCByYyA9IDA7CiAKICAgICBpZiAoICFwYWdpbmdfbW9kZV90cmFuc2xhdGUoZCkgKQotICAgIHsK LSAgICAgICAgaWYgKCBuZWVkX2lvbW11X3B0X3N5bmMoZCkgJiYgdCA9PSBwMm1fcmFtX3J3ICkK LSAgICAgICAgewotICAgICAgICAgICAgZGZuX3QgZGZuID0gX2RmbihtZm5feChtZm4pKTsKLQot ICAgICAgICAgICAgZm9yICggaSA9IDA7IGkgPCAoMSA8PCBwYWdlX29yZGVyKTsgaSsrICkKLSAg ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByYyA9IGlvbW11X21hcF9wYWdlKGQsIGRmbl9h ZGQoZGZuLCBpKSwgbWZuX2FkZChtZm4sIGkpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgSU9NTVVGX3JlYWRhYmxlfElPTU1VRl93cml0YWJsZSk7Ci0gICAgICAgICAgICAg ICAgaWYgKCByYyAhPSAwICkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAg IHdoaWxlICggaS0tID4gMCApCi0gICAgICAgICAgICAgICAgICAgICAgICAvKiBJZiBzdGF0ZW1l bnQgdG8gc2F0aXNmeSBfX211c3RfY2hlY2suICovCi0gICAgICAgICAgICAgICAgICAgICAgICBp ZiAoIGlvbW11X3VubWFwX3BhZ2UoZCwgZGZuX2FkZChkZm4sIGkpKSApCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJj OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBy ZXR1cm4gMDsKLSAgICB9CisgICAgICAgIHJldHVybiAobmVlZF9pb21tdV9wdF9zeW5jKGQpICYm IHQgPT0gcDJtX3JhbV9ydykgPworICAgICAgICAgICAgaW9tbXVfbWFwX3BhZ2UoZCwgX2Rmbiht Zm5feChtZm4pKSwgbWZuLCBQQUdFX09SREVSXzRLLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgSU9NTVVGX3JlYWRhYmxlIHwgSU9NTVVGX3dyaXRhYmxlKSA6IDA7CiAKICAgICAvKiBmb3Jl aWduIHBhZ2VzIGFyZSBhZGRlZCB0aHJ1IHAybV9hZGRfZm9yZWlnbiAqLwogICAgIGlmICggcDJt X2lzX2ZvcmVpZ24odCkgKQpAQCAtMTE3Myw3ICsxMTM4LDcgQEAgaW50IHNldF9pZGVudGl0eV9w Mm1fZW50cnkoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9uZyBnZm5fbCwKICAgICB7CiAg ICAgICAgIGlmICggIW5lZWRfaW9tbXVfcHRfc3luYyhkKSApCiAgICAgICAgICAgICByZXR1cm4g MDsKLSAgICAgICAgcmV0dXJuIGlvbW11X21hcF9wYWdlKGQsIF9kZm4oZ2ZuX2wpLCBfbWZuKGdm bl9sKSwKKyAgICAgICAgcmV0dXJuIGlvbW11X21hcF9wYWdlKGQsIF9kZm4oZ2ZuX2wpLCBfbWZu KGdmbl9sKSwgUEFHRV9PUkRFUl80SywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElP TU1VRl9yZWFkYWJsZSB8IElPTU1VRl93cml0YWJsZSk7CiAgICAgfQogCkBAIC0xMjY0LDcgKzEy MjksNyBAQCBpbnQgY2xlYXJfaWRlbnRpdHlfcDJtX2VudHJ5KHN0cnVjdCBkb21haW4gKmQsIHVu c2lnbmVkIGxvbmcgZ2ZuX2wpCiAgICAgewogICAgICAgICBpZiAoICFuZWVkX2lvbW11X3B0X3N5 bmMoZCkgKQogICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIHJldHVybiBpb21tdV91bm1h cF9wYWdlKGQsIF9kZm4oZ2ZuX2wpKTsKKyAgICAgICAgcmV0dXJuIGlvbW11X3VubWFwX3BhZ2Uo ZCwgX2RmbihnZm5fbCksIFBBR0VfT1JERVJfNEspOwogICAgIH0KIAogICAgIGdmbl9sb2NrKHAy bSwgZ2ZuLCAwKTsKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni94ODZfNjQvbW0uYyBiL3hlbi9h cmNoL3g4Ni94ODZfNjQvbW0uYwppbmRleCA1NDNlYTAzMGUzLi5jMGNlNTY3M2JhIDEwMDY0NAot LS0gYS94ZW4vYXJjaC94ODYveDg2XzY0L21tLmMKKysrIGIveGVuL2FyY2gveDg2L3g4Nl82NC9t bS5jCkBAIC0xNDM3LDEzICsxNDM3LDE1IEBAIGludCBtZW1vcnlfYWRkKHVuc2lnbmVkIGxvbmcg c3BmbiwgdW5zaWduZWQgbG9uZyBlcGZuLCB1bnNpZ25lZCBpbnQgcHhtKQogICAgIHsKICAgICAg ICAgZm9yICggaSA9IHNwZm47IGkgPCBlcGZuOyBpKysgKQogICAgICAgICAgICAgaWYgKCBpb21t dV9tYXBfcGFnZShoYXJkd2FyZV9kb21haW4sIF9kZm4oaSksIF9tZm4oaSksCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFBBR0VfT1JERVJfNEssCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIElPTU1VRl9yZWFkYWJsZSB8IElPTU1VRl93cml0YWJsZSkgKQogICAgICAg ICAgICAgICAgIGJyZWFrOwogICAgICAgICBpZiAoIGkgIT0gZXBmbiApCiAgICAgICAgIHsKICAg ICAgICAgICAgIHdoaWxlIChpLS0gPiBvbGRfbWF4KQogICAgICAgICAgICAgICAgIC8qIElmIHN0 YXRlbWVudCB0byBzYXRpc2Z5IF9fbXVzdF9jaGVjay4gKi8KLSAgICAgICAgICAgICAgICBpZiAo IGlvbW11X3VubWFwX3BhZ2UoaGFyZHdhcmVfZG9tYWluLCBfZGZuKGkpKSApCisgICAgICAgICAg ICAgICAgaWYgKCBpb21tdV91bm1hcF9wYWdlKGhhcmR3YXJlX2RvbWFpbiwgX2RmbihpKSwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUEFHRV9PUkRFUl80SykgKQogICAg ICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICAgICAgZ290byBkZXN0cm95X20y cDsKZGlmZiAtLWdpdCBhL3hlbi9jb21tb24vZ3JhbnRfdGFibGUuYyBiL3hlbi9jb21tb24vZ3Jh bnRfdGFibGUuYwppbmRleCA4NzhlNjY4YmY1Li45NzFjNmIxMDBjIDEwMDY0NAotLS0gYS94ZW4v Y29tbW9uL2dyYW50X3RhYmxlLmMKKysrIGIveGVuL2NvbW1vbi9ncmFudF90YWJsZS5jCkBAIC0x MTQyLDEyICsxMTQyLDE0IEBAIG1hcF9ncmFudF9yZWYoCiAgICAgICAgIHsKICAgICAgICAgICAg IGlmICggIShraW5kICYgTUFQS0lORF9XUklURSkgKQogICAgICAgICAgICAgICAgIGVyciA9IGlv bW11X21hcF9wYWdlKGxkLCBfZGZuKG1mbl94KG1mbikpLCBtZm4sCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgUEFHRV9PUkRFUl80SywKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBJT01NVUZfcmVhZGFibGUgfCBJT01NVUZfd3JpdGFibGUpOwogICAg ICAgICB9CiAgICAgICAgIGVsc2UgaWYgKCBhY3RfcGluICYmICFvbGRfcGluICkKICAgICAgICAg ewogICAgICAgICAgICAgaWYgKCAha2luZCApCiAgICAgICAgICAgICAgICAgZXJyID0gaW9tbXVf bWFwX3BhZ2UobGQsIF9kZm4obWZuX3gobWZuKSksIG1mbiwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBQQUdFX09SREVSXzRLLAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIElPTU1VRl9yZWFkYWJsZSk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKCBl cnIgKQpAQCAtMTM5NiwxMCArMTM5OCwxMSBAQCB1bm1hcF9jb21tb24oCiAKICAgICAgICAga2lu ZCA9IG1hcGtpbmQobGd0LCByZCwgb3AtPm1mbik7CiAgICAgICAgIGlmICggIWtpbmQgKQotICAg ICAgICAgICAgZXJyID0gaW9tbXVfdW5tYXBfcGFnZShsZCwgX2RmbihtZm5feChvcC0+bWZuKSkp OworICAgICAgICAgICAgZXJyID0gaW9tbXVfdW5tYXBfcGFnZShsZCwgX2RmbihtZm5feChvcC0+ bWZuKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBBR0VfT1JERVJfNEsp OwogICAgICAgICBlbHNlIGlmICggIShraW5kICYgTUFQS0lORF9XUklURSkgKQogICAgICAgICAg ICAgZXJyID0gaW9tbXVfbWFwX3BhZ2UobGQsIF9kZm4obWZuX3gob3AtPm1mbikpLCBvcC0+bWZu LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSU9NTVVGX3JlYWRhYmxlKTsKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBBR0VfT1JERVJfNEssIElPTU1VRl9yZWFk YWJsZSk7CiAKICAgICAgICAgZG91YmxlX2d0X3VubG9jayhsZ3QsIHJndCk7CiAKZGlmZiAtLWdp dCBhL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2lvbW11LmMgYi94ZW4vZHJpdmVycy9wYXNzdGhy b3VnaC9pb21tdS5jCmluZGV4IDhiNDM4YWU0YmMuLjQwZGI5ZTc4NDkgMTAwNjQ0Ci0tLSBhL3hl bi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2lvbW11LmMKKysrIGIveGVuL2RyaXZlcnMvcGFzc3Rocm91 Z2gvaW9tbXUuYwpAQCAtMzA1LDUwICszMDUsNzEgQEAgdm9pZCBpb21tdV9kb21haW5fZGVzdHJv eShzdHJ1Y3QgZG9tYWluICpkKQogfQogCiBpbnQgaW9tbXVfbWFwX3BhZ2Uoc3RydWN0IGRvbWFp biAqZCwgZGZuX3QgZGZuLCBtZm5fdCBtZm4sCi0gICAgICAgICAgICAgICAgICAgdW5zaWduZWQg aW50IGZsYWdzKQorICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBwYWdlX29yZGVyLCB1 bnNpZ25lZCBpbnQgZmxhZ3MpCiB7CiAgICAgY29uc3Qgc3RydWN0IGRvbWFpbl9pb21tdSAqaGQg PSBkb21faW9tbXUoZCk7Ci0gICAgaW50IHJjOworICAgIHVuc2lnbmVkIGxvbmcgaTsKIAogICAg IGlmICggIWlvbW11X2VuYWJsZWQgfHwgIWhkLT5wbGF0Zm9ybV9vcHMgKQogICAgICAgICByZXR1 cm4gMDsKIAotICAgIHJjID0gaGQtPnBsYXRmb3JtX29wcy0+bWFwX3BhZ2UoZCwgZGZuLCBtZm4s IGZsYWdzKTsKLSAgICBpZiAoIHVubGlrZWx5KHJjKSApCisgICAgZm9yICggaSA9IDA7IGkgPCAo MXVsIDw8IHBhZ2Vfb3JkZXIpOyBpKysgKQogICAgIHsKLSAgICAgICAgaWYgKCAhZC0+aXNfc2h1 dHRpbmdfZG93biAmJiBwcmludGtfcmF0ZWxpbWl0KCkgKQotICAgICAgICAgICAgcHJpbnRrKFhF TkxPR19FUlIKLSAgICAgICAgICAgICAgICAgICAiZCVkOiBJT01NVSBtYXBwaW5nIGRmbiAlIlBS SV9kZm4iIHRvIG1mbiAlIlBSSV9tZm4iIGZhaWxlZDogJWRcbiIsCi0gICAgICAgICAgICAgICAg ICAgZC0+ZG9tYWluX2lkLCBkZm5feChkZm4pLCBtZm5feChtZm4pLCByYyk7CisgICAgICAgIGlu dCBpZ25vcmVkLCByYyA9IGhkLT5wbGF0Zm9ybV9vcHMtPm1hcF9wYWdlKGQsIGRmbl9hZGQoZGZu LCBpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgbWZuX2FkZChtZm4sIGkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBmbGFncyk7CiAKLSAgICAgICAgaWYgKCAhaXNfaGFyZHdhcmVfZG9t YWluKGQpICkKLSAgICAgICAgICAgIGRvbWFpbl9jcmFzaChkKTsKKyAgICAgICAgaWYgKCB1bmxp a2VseShyYykgKQorICAgICAgICB7CisgICAgICAgICAgICB3aGlsZSAoaS0tKQorICAgICAgICAg ICAgeworICAgICAgICAgICAgICAgIC8qIGFzc2lnbiB0byBzb21ldGhpbmcgdG8gYXZvaWQgY29t cGlsZXIgd2FybmluZyAqLworICAgICAgICAgICAgICAgIGlnbm9yZWQgPSBoZC0+cGxhdGZvcm1f b3BzLT51bm1hcF9wYWdlKGQsIGRmbl9hZGQoZGZuLCBpKSk7CisgICAgICAgICAgICB9CisKKyAg ICAgICAgICAgIGlmICggIWQtPmlzX3NodXR0aW5nX2Rvd24gJiYgcHJpbnRrX3JhdGVsaW1pdCgp ICkKKyAgICAgICAgICAgICAgICBwcmludGsoWEVOTE9HX0VSUgorICAgICAgICAgICAgICAgICAg ICAgICAiZCVkOiBJT01NVSBvcmRlciAldSBtYXBwaW5nIGRmbiAlIlBSSV9kZm4iIHRvIG1mbiAl IlBSSV9tZm4iIGZhaWxlZDogJWRcbiIsCisgICAgICAgICAgICAgICAgICAgICAgIGQtPmRvbWFp bl9pZCwgcGFnZV9vcmRlciwgZGZuX3goZGZuKSwgbWZuX3gobWZuKSwKKyAgICAgICAgICAgICAg ICAgICAgICAgcmMpOworCisgICAgICAgICAgICBpZiAoICFpc19oYXJkd2FyZV9kb21haW4oZCkg KQorICAgICAgICAgICAgICAgIGRvbWFpbl9jcmFzaChkKTsKKworICAgICAgICAgICAgcmV0dXJu IHJjOworICAgICAgICB9CiAgICAgfQogCi0gICAgcmV0dXJuIHJjOworICAgIHJldHVybiAwOwog fQogCi1pbnQgaW9tbXVfdW5tYXBfcGFnZShzdHJ1Y3QgZG9tYWluICpkLCBkZm5fdCBkZm4pCitp bnQgaW9tbXVfdW5tYXBfcGFnZShzdHJ1Y3QgZG9tYWluICpkLCBkZm5fdCBkZm4sIHVuc2lnbmVk IGludCBwYWdlX29yZGVyKQogewogICAgIGNvbnN0IHN0cnVjdCBkb21haW5faW9tbXUgKmhkID0g ZG9tX2lvbW11KGQpOwotICAgIGludCByYzsKKyAgICB1bnNpZ25lZCBsb25nIGk7CiAKICAgICBp ZiAoICFpb21tdV9lbmFibGVkIHx8ICFoZC0+cGxhdGZvcm1fb3BzICkKICAgICAgICAgcmV0dXJu IDA7CiAKLSAgICByYyA9IGhkLT5wbGF0Zm9ybV9vcHMtPnVubWFwX3BhZ2UoZCwgZGZuKTsKLSAg ICBpZiAoIHVubGlrZWx5KHJjKSApCisgICAgZm9yICggaSA9IDA7IGkgPCAoMXVsIDw8IHBhZ2Vf b3JkZXIpOyBpKysgKQogICAgIHsKLSAgICAgICAgaWYgKCAhZC0+aXNfc2h1dHRpbmdfZG93biAm JiBwcmludGtfcmF0ZWxpbWl0KCkgKQotICAgICAgICAgICAgcHJpbnRrKFhFTkxPR19FUlIKLSAg ICAgICAgICAgICAgICAgICAiZCVkOiBJT01NVSB1bm1hcHBpbmcgZGZuICUiUFJJX2RmbiIgZmFp bGVkOiAlZFxuIiwKLSAgICAgICAgICAgICAgICAgICBkLT5kb21haW5faWQsIGRmbl94KGRmbiks IHJjKTsKKyAgICAgICAgaW50IHJjID0gaGQtPnBsYXRmb3JtX29wcy0+dW5tYXBfcGFnZShkLCBk Zm5fYWRkKGRmbiwgaSkpOwogCi0gICAgICAgIGlmICggIWlzX2hhcmR3YXJlX2RvbWFpbihkKSAp Ci0gICAgICAgICAgICBkb21haW5fY3Jhc2goZCk7CisgICAgICAgIGlmICggdW5saWtlbHkocmMp ICkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCAhZC0+aXNfc2h1dHRpbmdfZG93biAmJiBw cmludGtfcmF0ZWxpbWl0KCkgKQorICAgICAgICAgICAgICAgIHByaW50ayhYRU5MT0dfRVJSCisg ICAgICAgICAgICAgICAgICAgICAgICJkJWQ6IElPTU1VIHVubWFwcGluZyBkZm4gJSJQUklfZGZu IiBmYWlsZWQ6ICVkXG4iLAorICAgICAgICAgICAgICAgICAgICAgICBkLT5kb21haW5faWQsIGRm bl94KGRmbiksIHJjKTsKKworICAgICAgICAgICAgaWYgKCAhaXNfaGFyZHdhcmVfZG9tYWluKGQp ICkKKyAgICAgICAgICAgICAgICBkb21haW5fY3Jhc2goZCk7CisKKyAgICAgICAgICAgIHJldHVy biByYzsKKyAgICAgICAgfQogICAgIH0KIAotICAgIHJldHVybiByYzsKKyAgICByZXR1cm4gMDsK IH0KIAogaW50IGlvbW11X2xvb2t1cF9wYWdlKHN0cnVjdCBkb21haW4gKmQsIGRmbl90IGRmbiwg bWZuX3QgKm1mbiwKZGlmZiAtLWdpdCBhL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL3g4Ni9pb21t dS5jIGIveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gveDg2L2lvbW11LmMKaW5kZXggYjIwYmFkMTdk ZS4uNGZkM2ViMWRjYSAxMDA2NDQKLS0tIGEveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gveDg2L2lv bW11LmMKKysrIGIveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gveDg2L2lvbW11LmMKQEAgLTIzOSw3 ICsyMzksNyBAQCB2b2lkIF9faHdkb21faW5pdCBhcmNoX2lvbW11X2h3ZG9tX2luaXQoc3RydWN0 IGRvbWFpbiAqZCkKICAgICAgICAgaWYgKCBwYWdpbmdfbW9kZV90cmFuc2xhdGUoZCkgKQogICAg ICAgICAgICAgcmMgPSBzZXRfaWRlbnRpdHlfcDJtX2VudHJ5KGQsIHBmbiwgcDJtX2FjY2Vzc19y dywgMCk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJjID0gaW9tbXVfbWFwX3BhZ2UoZCwg X2RmbihwZm4pLCBfbWZuKHBmbiksCisgICAgICAgICAgICByYyA9IGlvbW11X21hcF9wYWdlKGQs IF9kZm4ocGZuKSwgX21mbihwZm4pLCBQQUdFX09SREVSXzRLLAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBJT01NVUZfcmVhZGFibGUgfCBJT01NVUZfd3JpdGFibGUpOwogICAgICAg ICBpZiAoIHJjICkKICAgICAgICAgICAgIHByaW50ayhYRU5MT0dfV0FSTklORyAiIGQlZDogSU9N TVUgbWFwcGluZyBmYWlsZWQ6ICVkXG4iLApkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUveGVuL2lv bW11LmggYi94ZW4vaW5jbHVkZS94ZW4vaW9tbXUuaAppbmRleCBjNzUzMzNjMDc3Li5hMDAzZDgy MjA0IDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS94ZW4vaW9tbXUuaAorKysgYi94ZW4vaW5jbHVk ZS94ZW4vaW9tbXUuaApAQCAtODksOSArODksMTEgQEAgdm9pZCBpb21tdV90ZWFyZG93bihzdHJ1 Y3QgZG9tYWluICpkKTsKICNkZWZpbmUgSU9NTVVGX3JlYWRhYmxlICAoMXU8PF9JT01NVUZfcmVh ZGFibGUpCiAjZGVmaW5lIF9JT01NVUZfd3JpdGFibGUgMQogI2RlZmluZSBJT01NVUZfd3JpdGFi bGUgICgxdTw8X0lPTU1VRl93cml0YWJsZSkKLWludCBfX211c3RfY2hlY2sgaW9tbXVfbWFwX3Bh Z2Uoc3RydWN0IGRvbWFpbiAqZCwgZGZuX3QgZGZuLAotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBtZm5fdCBtZm4sIHVuc2lnbmVkIGludCBmbGFncyk7Ci1pbnQgX19tdXN0X2NoZWNr IGlvbW11X3VubWFwX3BhZ2Uoc3RydWN0IGRvbWFpbiAqZCwgZGZuX3QgZGZuKTsKK2ludCBfX211 c3RfY2hlY2sgaW9tbXVfbWFwX3BhZ2Uoc3RydWN0IGRvbWFpbiAqZCwgZGZuX3QgZGZuLCBtZm5f dCBtZm4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBwYWdl X29yZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgZmxh Z3MpOworaW50IF9fbXVzdF9jaGVjayBpb21tdV91bm1hcF9wYWdlKHN0cnVjdCBkb21haW4gKmQs IGRmbl90IGRmbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBp bnQgcGFnZV9vcmRlcik7CiBpbnQgX19tdXN0X2NoZWNrIGlvbW11X2xvb2t1cF9wYWdlKHN0cnVj dCBkb21haW4gKmQsIGRmbl90IGRmbiwgbWZuX3QgKm1mbiwKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgdW5zaWduZWQgaW50ICpmbGFncyk7CiAKLS0gCjIuMTEuMAoKCl9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWls aW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVu cHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby94ZW4tZGV2ZWw=