From mboxrd@z Thu Jan 1 00:00:00 1970 From: Wei Liu Subject: [PATCH RFC v1 55/74] xen/pvshim: forward evtchn ops between L0 Xen and L2 DomU Date: Thu, 4 Jan 2018 13:06:06 +0000 Message-ID: <20180104130625.28605-56-wei.liu2@citrix.com> References: <20180104130625.28605-1-wei.liu2@citrix.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]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1eX5a3-0004ko-RG for xen-devel@lists.xenproject.org; Thu, 04 Jan 2018 13:29:11 +0000 In-Reply-To: <20180104130625.28605-1-wei.liu2@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: Xen-devel Cc: wei.liu2@citrix.com List-Id: xen-devel@lists.xenproject.org RnJvbTogUm9nZXIgUGF1IE1vbm5lIDxyb2dlci5wYXVAY2l0cml4LmNvbT4KCk5vdGUgdGhhdCB0 aGUgdW5tYXNrIGFuZCB0aGUgdmlycSBvcGVyYXRpb25zIGFyZSBoYW5kbGVkIGJ5IHRoZSBzaGlt Cml0c2VsZiwgYW5kIHRoYXQgRklGTyBldmVudCBjaGFubmVscyBhcmUgbm90IGV4cG9zZWQgdG8g dGhlIGd1ZXN0LgoKU2lnbmVkLW9mZi1ieTogQW50aG9ueSBMaWd1b3JpIDxhbGlndW9yaUBhbWF6 b24uY29tPgpTaWduZWQtb2ZmLWJ5OiBSb2dlciBQYXUgTW9ubsOpIDxyb2dlci5wYXVAY2l0cml4 LmNvbT4KU2lnbmVkLW9mZi1ieTogU2VyZ2V5IER5YXNsaSA8c2VyZ2V5LmR5YXNsaUBjaXRyaXgu Y29tPgotLS0KIHhlbi9hcmNoL3g4Ni9ndWVzdC94ZW4uYyAgICAgICAgICB8ICAyNSArKystCiB4 ZW4vYXJjaC94ODYvcHYvc2hpbS5jICAgICAgICAgICAgfCAyNTkgKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysKIHhlbi9jb21tb24vZG9tYWluLmMgICAgICAgICAgICAgICB8 ICAgNyArKwogeGVuL2NvbW1vbi9ldmVudF9jaGFubmVsLmMgICAgICAgIHwgMTAwICsrKysrKysr Ky0tLS0tLQogeGVuL2RyaXZlcnMvY2hhci94ZW5fcHZfY29uc29sZS5jIHwgIDExICstCiB4ZW4v aW5jbHVkZS9hc20teDg2L3B2L3NoaW0uaCAgICAgfCAgMTIgKysKIHhlbi9pbmNsdWRlL3hlbi9l dmVudC5oICAgICAgICAgICB8ICAxNSArKysKIHhlbi9pbmNsdWRlL3hlbi9wdl9jb25zb2xlLmgg ICAgICB8ICAgNiArCiB4ZW4vaW5jbHVkZS94ZW4vc2NoZWQuaCAgICAgICAgICAgfCAgIDIgKwog OSBmaWxlcyBjaGFuZ2VkLCAzOTQgaW5zZXJ0aW9ucygrKSwgNDMgZGVsZXRpb25zKC0pCgpkaWZm IC0tZ2l0IGEveGVuL2FyY2gveDg2L2d1ZXN0L3hlbi5jIGIveGVuL2FyY2gveDg2L2d1ZXN0L3hl bi5jCmluZGV4IGE5ZGUyMDcwOGMuLjY1M2E3MzY2YWIgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4 Ni9ndWVzdC94ZW4uYworKysgYi94ZW4vYXJjaC94ODYvZ3Vlc3QveGVuLmMKQEAgLTE4LDYgKzE4 LDcgQEAKICAqCiAgKiBDb3B5cmlnaHQgKGMpIDIwMTcgQ2l0cml4IFN5c3RlbXMgTHRkLgogICov CisjaW5jbHVkZSA8eGVuL2V2ZW50Lmg+CiAjaW5jbHVkZSA8eGVuL2luaXQuaD4KICNpbmNsdWRl IDx4ZW4vdHlwZXMuaD4KICNpbmNsdWRlIDx4ZW4vcHZfY29uc29sZS5oPgpAQCAtMTU1LDExICsx NTYsMzEgQEAgc3RhdGljIHZvaWQgc2V0X3ZjcHVfaWQodm9pZCkKIHN0YXRpYyB2b2lkIHhlbl9l dnRjaG5fdXBjYWxsKHN0cnVjdCBjcHVfdXNlcl9yZWdzICpyZWdzKQogewogICAgIHN0cnVjdCB2 Y3B1X2luZm8gKnZjcHVfaW5mbyA9IHRoaXNfY3B1KHZjcHVfaW5mbyk7CisgICAgdW5zaWduZWQg bG9uZyBwZW5kaW5nOwogCiAgICAgdmNwdV9pbmZvLT5ldnRjaG5fdXBjYWxsX3BlbmRpbmcgPSAw OwotICAgIHhjaGcoJnZjcHVfaW5mby0+ZXZ0Y2huX3BlbmRpbmdfc2VsLCAwKTsKKyAgICBwZW5k aW5nID0geGNoZygmdmNwdV9pbmZvLT5ldnRjaG5fcGVuZGluZ19zZWwsIDApOwogCi0gICAgcHZf Y29uc29sZV9yeChyZWdzKTsKKyAgICB3aGlsZSAoIHBlbmRpbmcgKQorICAgIHsKKyAgICAgICAg dW5zaWduZWQgaW50IGwxID0gZmZzbChwZW5kaW5nKSAtIDE7CisgICAgICAgIHVuc2lnbmVkIGxv bmcgZXZ0Y2huID0geGNoZygmWEVOX3NoYXJlZF9pbmZvLT5ldnRjaG5fcGVuZGluZ1tsMV0sIDAp OworCisgICAgICAgIF9fY2xlYXJfYml0KGwxLCAmcGVuZGluZyk7CisgICAgICAgIGV2dGNobiAm PSB+WEVOX3NoYXJlZF9pbmZvLT5ldnRjaG5fbWFza1tsMV07CisgICAgICAgIHdoaWxlICggZXZ0 Y2huICkKKyAgICAgICAgeworICAgICAgICAgICAgdW5zaWduZWQgaW50IHBvcnQgPSBmZnNsKGV2 dGNobikgLSAxOworCisgICAgICAgICAgICBfX2NsZWFyX2JpdChwb3J0LCAmZXZ0Y2huKTsKKyAg ICAgICAgICAgIHBvcnQgKz0gbDEgKiBCSVRTX1BFUl9MT05HOworCisgICAgICAgICAgICBpZiAo IHB2X2NvbnNvbGUgJiYgcG9ydCA9PSBwdl9jb25zb2xlX2V2dGNobigpICkKKyAgICAgICAgICAg ICAgICBwdl9jb25zb2xlX3J4KHJlZ3MpOworICAgICAgICAgICAgZWxzZSBpZiAoIHB2X3NoaW0g KQorICAgICAgICAgICAgICAgIHB2X3NoaW1faW5qZWN0X2V2dGNobihwb3J0KTsKKyAgICAgICAg fQorICAgIH0KIAogICAgIGFja19BUElDX2lycSgpOwogfQpkaWZmIC0tZ2l0IGEveGVuL2FyY2gv eDg2L3B2L3NoaW0uYyBiL3hlbi9hcmNoL3g4Ni9wdi9zaGltLmMKaW5kZXggZDMxOGYwN2QwOC4u Njk0ODI5OTNmOSAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L3B2L3NoaW0uYworKysgYi94ZW4v YXJjaC94ODYvcHYvc2hpbS5jCkBAIC0xOCw2ICsxOCw4IEBACiAgKgogICogQ29weXJpZ2h0IChj KSAyMDE3IENpdHJpeCBTeXN0ZW1zIEx0ZC4KICAqLworI2luY2x1ZGUgPHhlbi9ldmVudC5oPgor I2luY2x1ZGUgPHhlbi9ndWVzdF9hY2Nlc3MuaD4KICNpbmNsdWRlIDx4ZW4vaHlwZXJjYWxsLmg+ CiAjaW5jbHVkZSA8eGVuL2luaXQuaD4KICNpbmNsdWRlIDx4ZW4vc2h1dGRvd24uaD4KQEAgLTYz LDYgKzY1LDMxIEBAIHN0YXRpYyB2b2lkIF9faW5pdCByZXBsYWNlX3ZhKHN0cnVjdCBkb21haW4g KmQsIGw0X3BnZW50cnlfdCAqbDRzdGFydCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIDogQ09NUEFUX0wxX1BST1QpKTsKIH0KIAorc3RhdGlj IHZvaWQgZXZ0Y2huX3Jlc2VydmUoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgaW50IHBvcnQp Cit7CisgICAgc3RydWN0IGV2dGNobl91bm1hc2sgdW5tYXNrID0geworICAgICAgICAucG9ydCA9 IHBvcnQsCisgICAgfTsKKworICAgIEFTU0VSVChwb3J0X2lzX3ZhbGlkKGQsIHBvcnQpKTsKKyAg ICBldnRjaG5fZnJvbV9wb3J0KGQsIHBvcnQpLT5zdGF0ZSA9IEVDU19SRVNFUlZFRDsKKyAgICBC VUdfT04oeGVuX2h5cGVyY2FsbF9ldmVudF9jaGFubmVsX29wKEVWVENITk9QX3VubWFzaywgJnVu bWFzaykpOworfQorCitzdGF0aWMgYm9vbCBldnRjaG5faGFuZGxlZChzdHJ1Y3QgZG9tYWluICpk LCB1bnNpZ25lZCBpbnQgcG9ydCkKK3sKKyAgICBBU1NFUlQocG9ydF9pc192YWxpZChkLCBwb3J0 KSk7CisgICAgLyogVGhlIHNoaW0gbWFuYWdlcyBWSVJRcywgdGhlIHJlc3QgaXMgZm9yd2FyZGVk IHRvIEwwLiAqLworICAgIHJldHVybiBldnRjaG5fZnJvbV9wb3J0KGQsIHBvcnQpLT5zdGF0ZSA9 PSBFQ1NfVklSUTsKK30KKworc3RhdGljIHZvaWQgZXZ0Y2huX2Fzc2lnbl92Y3B1KHN0cnVjdCBk b21haW4gKmQsIHVuc2lnbmVkIGludCBwb3J0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHVuc2lnbmVkIGludCB2Y3B1KQoreworICAgIEFTU0VSVChwb3J0X2lzX3ZhbGlkKGQsIHBv cnQpKTsKKyAgICBldnRjaG5fZnJvbV9wb3J0KGQsIHBvcnQpLT5ub3RpZnlfdmNwdV9pZCA9IHZj cHU7Cit9CisKIHZvaWQgX19pbml0IHB2X3NoaW1fc2V0dXBfZG9tKHN0cnVjdCBkb21haW4gKmQs IGw0X3BnZW50cnlfdCAqbDRzdGFydCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVu c2lnbmVkIGxvbmcgdmFfc3RhcnQsIHVuc2lnbmVkIGxvbmcgc3RvcmVfdmEsCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGNvbnNvbGVfdmEsIHVuc2lnbmVkIGxv bmcgdnBoeXNtYXAsCkBAIC04Myw2ICsxMTAsMTEgQEAgdm9pZCBfX2luaXQgcHZfc2hpbV9zZXR1 cF9kb20oc3RydWN0IGRvbWFpbiAqZCwgbDRfcGdlbnRyeV90ICpsNHN0YXJ0LAogICAgICAgICBy ZXBsYWNlX3ZhKGQsIGw0c3RhcnQsIHZhLCBwYXJhbSk7ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFwKICAgICAgICAgZG9tMF91cGRhdGVfcGh5c21hcChkLCAodmEgLSB2YV9z dGFydCkgPj4gUEFHRV9TSElGVCwgcGFyYW0sIHZwaHlzbWFwKTtcCiAgICAgfSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXAorICAgIGVsc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB7ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc CisgICAgICAgIEJVR19PTihldnRjaG5fYWxsb2NhdGVfcG9ydChkLCBwYXJhbSkpOyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBldnRjaG5fcmVzZXJ2ZShkLCBwYXJh bSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBcCiB9KQogICAgIFNFVF9BTkRfTUFQX1BBUkFNKEhWTV9QQVJBTV9T VE9SRV9QRk4sIHNpLT5zdG9yZV9tZm4sIHN0b3JlX3ZhKTsKICAgICBTRVRfQU5EX01BUF9QQVJB TShIVk1fUEFSQU1fU1RPUkVfRVZUQ0hOLCBzaS0+c3RvcmVfZXZ0Y2huLCAwKTsKQEAgLTEwMSw2 ICsxMzMsMjMzIEBAIHZvaWQgcHZfc2hpbV9zaHV0ZG93bih1aW50OF90IHJlYXNvbikKICAgICB4 ZW5faHlwZXJjYWxsX3NodXRkb3duKHJlYXNvbik7CiB9CiAKK2xvbmcgcHZfc2hpbV9ldmVudF9j aGFubmVsX29wKGludCBjbWQsIFhFTl9HVUVTVF9IQU5ETEVfUEFSQU0odm9pZCkgYXJnKQorewor ICAgIHN0cnVjdCBkb21haW4gKmQgPSBjdXJyZW50LT5kb21haW47CisgICAgbG9uZyByYzsKKwor ICAgIHN3aXRjaCAoIGNtZCApCisgICAgeworI2RlZmluZSBFVlRDSE5fRk9SV0FSRChjbWQsIHBv cnRfZmllbGQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorY2FzZSBFVlRDSE5P UF8jI2NtZDogeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgXAorICAgIHN0cnVjdCBldnRjaG5fIyNjbWQgb3A7ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGlmICggY29weV9m cm9tX2d1ZXN0KCZvcCwgYXJnLCAxKSAhPSAwICkgICAgICAgICAgICAgICAgICAgICAgICAgICAg XAorICAgICAgICByZXR1cm4gLUVGQVVMVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHJjID0geGVuX2h5cGVy Y2FsbF9ldmVudF9jaGFubmVsX29wKEVWVENITk9QXyMjY21kLCAmb3ApOyAgICAgICAgICAgXAor ICAgIGlmICggcmMgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgXAorICAgICAgICBicmVhazsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAg IHNwaW5fbG9jaygmZC0+ZXZlbnRfbG9jayk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgXAorICAgIHJjID0gZXZ0Y2huX2FsbG9jYXRlX3BvcnQoZCwgb3AucG9ydF9m aWVsZCk7ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGlmICggcmMgKSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgXAorICAgICAgICBzdHJ1Y3QgZXZ0Y2huX2Nsb3NlIGNsb3NlID0geyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgLnBvcnQgPSBvcC5wb3J0 X2ZpZWxkLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICB9 OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBCVUdfT04oeGVuX2h5cGVyY2FsbF9l dmVudF9jaGFubmVsX29wKEVWVENITk9QX2Nsb3NlLCAmY2xvc2UpKTsgXAorICAgIH0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgXAorICAgIGVsc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBldnRjaG5fcmVzZXJ2ZShkLCBvcC5wb3J0 X2ZpZWxkKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHNwaW5fdW5sb2Nr KCZkLT5ldmVudF9sb2NrKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg XAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgXAorICAgIGlmICggIXJjICYmIF9fY29weV90b19ndWVzdChhcmcs ICZvcCwgMSkgKSAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICByYyA9IC1FRkFV TFQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgXAorICAgIGJyZWFrOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0KKyAgICBFVlRDSE5fRk9S V0FSRChhbGxvY191bmJvdW5kLCBwb3J0KQorICAgIEVWVENITl9GT1JXQVJEKGJpbmRfaW50ZXJk b21haW4sIGxvY2FsX3BvcnQpCisjdW5kZWYgRVZUQ0hOX0ZPUldBUkQKKworICAgIGNhc2UgRVZU Q0hOT1BfYmluZF92aXJxOiB7CisgICAgICAgIHN0cnVjdCBldnRjaG5fYmluZF92aXJxIHZpcnE7 CisgICAgICAgIHN0cnVjdCBldnRjaG5fYWxsb2NfdW5ib3VuZCBhbGxvYyA9IHsKKyAgICAgICAg ICAgIC5kb20gPSBET01JRF9TRUxGLAorICAgICAgICAgICAgLnJlbW90ZV9kb20gPSBET01JRF9T RUxGLAorICAgICAgICB9OworCisgICAgICAgIGlmICggY29weV9mcm9tX2d1ZXN0KCZ2aXJxLCBh cmcsIDEpICE9IDAgKQorICAgICAgICAgICAgcmV0dXJuIC1FRkFVTFQ7CisgICAgICAgIC8qCisg ICAgICAgICAqIFRoZSBldmVudCBjaGFubmVsIHNwYWNlIGlzIGFjdHVhbGx5IGNvbnRyb2xsZWQg YnkgTDAgWGVuLCBzbworICAgICAgICAgKiBhbGxvY2F0ZSBhIHBvcnQgZnJvbSBMMCBhbmQgdGhl biBmb3JjZSB0aGUgVklSUSB0byBiZSBib3VuZCB0byB0aGF0CisgICAgICAgICAqIHNwZWNpZmlj IHBvcnQuCisgICAgICAgICAqCisgICAgICAgICAqIFRoaXMgaXMgb25seSByZXF1aXJlZCBmb3Ig VklSUSBiZWNhdXNlIHRoZSByZXN0IG9mIHRoZSBldmVudCBjaGFubmVsCisgICAgICAgICAqIG9w ZXJhdGlvbnMgYXJlIGhhbmRsZWQgZGlyZWN0bHkgYnkgTDAuCisgICAgICAgICAqLworICAgICAg ICByYyA9IHhlbl9oeXBlcmNhbGxfZXZlbnRfY2hhbm5lbF9vcChFVlRDSE5PUF9hbGxvY191bmJv dW5kLCAmYWxsb2MpOworICAgICAgICBpZiAoIHJjICkKKyAgICAgICAgICAgYnJlYWs7CisKKyAg ICAgICAgLyogRm9yY2UgTDEgdG8gdXNlIHRoZSBldmVudCBjaGFubmVsIHBvcnQgYWxsb2NhdGVk IG9uIEwwLiAqLworICAgICAgICByYyA9IGV2dGNobl9iaW5kX3ZpcnEoJnZpcnEsIGFsbG9jLnBv cnQpOworICAgICAgICBpZiAoIHJjICkKKyAgICAgICAgeworICAgICAgICAgICAgIHN0cnVjdCBl dnRjaG5fY2xvc2UgZnJlZSA9IHsKKyAgICAgICAgICAgICAgICAucG9ydCA9IGFsbG9jLnBvcnQs CisgICAgICAgICAgICAgfTsKKworICAgICAgICAgICAgICB4ZW5faHlwZXJjYWxsX2V2ZW50X2No YW5uZWxfb3AoRVZUQ0hOT1BfY2xvc2UsICZmcmVlKTsKKyAgICAgICAgfQorCisgICAgICAgIGlm ICggIXJjICYmIF9fY29weV90b19ndWVzdChhcmcsICZ2aXJxLCAxKSApCisgICAgICAgICAgICBy YyA9IC1FRkFVTFQ7CisKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgRVZUQ0hOT1Bf c3RhdHVzOiB7CisgICAgICAgIHN0cnVjdCBldnRjaG5fc3RhdHVzIHN0YXR1czsKKworICAgICAg ICBpZiAoIGNvcHlfZnJvbV9ndWVzdCgmc3RhdHVzLCBhcmcsIDEpICE9IDAgKQorICAgICAgICAg ICAgcmV0dXJuIC1FRkFVTFQ7CisKKyAgICAgICAgaWYgKCBwb3J0X2lzX3ZhbGlkKGQsIHN0YXR1 cy5wb3J0KSAmJiBldnRjaG5faGFuZGxlZChkLCBzdGF0dXMucG9ydCkgKQorICAgICAgICAgICAg cmMgPSBldnRjaG5fc3RhdHVzKCZzdGF0dXMpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBy YyA9IHhlbl9oeXBlcmNhbGxfZXZlbnRfY2hhbm5lbF9vcChFVlRDSE5PUF9zdGF0dXMsICZzdGF0 dXMpOworCisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIEVWVENITk9QX2JpbmRfdmNw dTogeworICAgICAgICBzdHJ1Y3QgZXZ0Y2huX2JpbmRfdmNwdSB2Y3B1OworCisgICAgICAgIGlm ICggY29weV9mcm9tX2d1ZXN0KCZ2Y3B1LCBhcmcsIDEpICE9IDAgKQorICAgICAgICAgICAgcmV0 dXJuIC1FRkFVTFQ7CisKKyAgICAgICAgaWYgKCAhcG9ydF9pc192YWxpZChkLCB2Y3B1LnBvcnQp ICkKKyAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOworCisgICAgICAgIGlmICggZXZ0Y2huX2hh bmRsZWQoZCwgdmNwdS5wb3J0KSApCisgICAgICAgICAgICByYyA9IGV2dGNobl9iaW5kX3ZjcHUo dmNwdS5wb3J0LCB2Y3B1LnZjcHUpOworICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAg ICAgIHJjID0geGVuX2h5cGVyY2FsbF9ldmVudF9jaGFubmVsX29wKEVWVENITk9QX2JpbmRfdmNw dSwgJnZjcHUpOworICAgICAgICAgICAgaWYgKCAhcmMgKQorICAgICAgICAgICAgICAgICBldnRj aG5fYXNzaWduX3ZjcHUoZCwgdmNwdS5wb3J0LCB2Y3B1LnZjcHUpOworICAgICAgICB9CisKKyAg ICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgRVZUQ0hOT1BfY2xvc2U6IHsKKyAgICAgICAg c3RydWN0IGV2dGNobl9jbG9zZSBjbG9zZTsKKworICAgICAgICBpZiAoIGNvcHlfZnJvbV9ndWVz dCgmY2xvc2UsIGFyZywgMSkgIT0gMCApCisgICAgICAgICAgICByZXR1cm4gLUVGQVVMVDsKKwor ICAgICAgICBpZiAoICFwb3J0X2lzX3ZhbGlkKGQsIGNsb3NlLnBvcnQpICkKKyAgICAgICAgICAg IHJldHVybiAtRUlOVkFMOworCisgICAgICAgIGlmICggZXZ0Y2huX2hhbmRsZWQoZCwgY2xvc2Uu cG9ydCkgKQorICAgICAgICB7CisgICAgICAgICAgICByYyA9IGV2dGNobl9jbG9zZShkLCBjbG9z ZS5wb3J0LCB0cnVlKTsKKyAgICAgICAgICAgIGlmICggcmMgKQorICAgICAgICAgICAgICAgIGJy ZWFrOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGV2dGNobl9mcmVlKGQs IGV2dGNobl9mcm9tX3BvcnQoZCwgY2xvc2UucG9ydCkpOworCisgICAgICAgIHJjID0geGVuX2h5 cGVyY2FsbF9ldmVudF9jaGFubmVsX29wKEVWVENITk9QX2Nsb3NlLCAmY2xvc2UpOworICAgICAg ICBpZiAoIHJjICkKKyAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgKiBJZiB0aGUgcG9ydCBj YW5ub3QgYmUgY2xvc2VkIG9uIHRoZSBMMCBtYXJrIGl0IGFzIHJlc2VydmVkCisgICAgICAgICAg ICAgKiBpbiB0aGUgc2hpbSB0byBhdm9pZCByZS11c2luZyBpdC4KKyAgICAgICAgICAgICAqLwor ICAgICAgICAgICAgZXZ0Y2huX3Jlc2VydmUoZCwgY2xvc2UucG9ydCk7CisKKyAgICAgICAgc2V0 X2JpdChjbG9zZS5wb3J0LCBYRU5fc2hhcmVkX2luZm8tPmV2dGNobl9tYXNrKTsKKworICAgICAg ICBicmVhazsKKyAgICB9CisgICAgY2FzZSBFVlRDSE5PUF9iaW5kX2lwaTogeworICAgICAgICBz dHJ1Y3QgZXZ0Y2huX2JpbmRfaXBpIGlwaTsKKworICAgICAgICBpZiAoIGNvcHlfZnJvbV9ndWVz dCgmaXBpLCBhcmcsIDEpICE9IDAgKQorICAgICAgICAgICAgcmV0dXJuIC1FRkFVTFQ7CisKKyAg ICAgICAgcmMgPSB4ZW5faHlwZXJjYWxsX2V2ZW50X2NoYW5uZWxfb3AoRVZUQ0hOT1BfYmluZF9p cGksICZpcGkpOworICAgICAgICBpZiAoIHJjICkKKyAgICAgICAgICAgIGJyZWFrOworCisgICAg ICAgIHNwaW5fbG9jaygmZC0+ZXZlbnRfbG9jayk7CisgICAgICAgIHJjID0gZXZ0Y2huX2FsbG9j YXRlX3BvcnQoZCwgaXBpLnBvcnQpOworICAgICAgICBpZiAoIHJjICkKKyAgICAgICAgeworICAg ICAgICAgICAgc3RydWN0IGV2dGNobl9jbG9zZSBjbG9zZSA9IHsKKyAgICAgICAgICAgICAgICAu cG9ydCA9IGlwaS5wb3J0LAorICAgICAgICAgICAgfTsKKworICAgICAgICAgICAgLyoKKyAgICAg ICAgICAgICAqIElmIGNsb3NpbmcgdGhlIGV2ZW50IGNoYW5uZWwgcG9ydCBhbHNvIGZhaWxzIHRo ZXJlJ3Mgbm90CisgICAgICAgICAgICAgKiBtdWNoIHRoZSBzaGltIGNhbiBkbywgc2luY2UgaXQg aGFzIGJlZW4gdW5hYmxlIHRvIHJlc2VydmUKKyAgICAgICAgICAgICAqIHRoZSBwb3J0IGluIGl0 J3MgZXZlbnQgY2hhbm5lbCBzcGFjZS4KKyAgICAgICAgICAgICAqLworICAgICAgICAgICAgQlVH X09OKHhlbl9oeXBlcmNhbGxfZXZlbnRfY2hhbm5lbF9vcChFVlRDSE5PUF9jbG9zZSwgJmNsb3Nl KSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGV2dGNobl9hc3Np Z25fdmNwdShkLCBpcGkucG9ydCwgaXBpLnZjcHUpOworICAgICAgICBldnRjaG5fcmVzZXJ2ZShk LCBpcGkucG9ydCk7CisgICAgICAgIHNwaW5fdW5sb2NrKCZkLT5ldmVudF9sb2NrKTsKKworICAg ICAgICBpZiAoIF9fY29weV90b19ndWVzdChhcmcsICZpcGksIDEpICkKKyAgICAgICAgICAgIHJj ID0gLUVGQVVMVDsKKworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBFVlRDSE5PUF91 bm1hc2s6IHsKKyAgICAgICAgc3RydWN0IGV2dGNobl91bm1hc2sgdW5tYXNrOworCisgICAgICAg IGlmICggY29weV9mcm9tX2d1ZXN0KCZ1bm1hc2ssIGFyZywgMSkgIT0gMCApCisgICAgICAgICAg ICByZXR1cm4gLUVGQVVMVDsKKworICAgICAgICAvKiBVbm1hc2sgaXMgaGFuZGxlZCBpbiBMMSAq LworICAgICAgICByYyA9IGV2dGNobl91bm1hc2sodW5tYXNrLnBvcnQpOworCisgICAgICAgIGJy ZWFrOworICAgIH0KKyAgICBjYXNlIEVWVENITk9QX3NlbmQ6IHsKKyAgICAgICAgc3RydWN0IGV2 dGNobl9zZW5kIHNlbmQ7CisKKyAgICAgICAgaWYgKCBjb3B5X2Zyb21fZ3Vlc3QoJnNlbmQsIGFy ZywgMSkgIT0gMCApCisgICAgICAgICAgICByZXR1cm4gLUVGQVVMVDsKKworICAgICAgICByYyA9 IHhlbl9oeXBlcmNhbGxfZXZlbnRfY2hhbm5lbF9vcChFVlRDSE5PUF9zZW5kLCAmc2VuZCk7CisK KyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgRVZUQ0hOT1BfcmVzZXQ6IHsKKyAgICAg ICAgc3RydWN0IGV2dGNobl9yZXNldCByZXNldDsKKworICAgICAgICBpZiAoIGNvcHlfZnJvbV9n dWVzdCgmcmVzZXQsIGFyZywgMSkgIT0gMCApCisgICAgICAgICAgICByZXR1cm4gLUVGQVVMVDsK KworICAgICAgICByYyA9IHhlbl9oeXBlcmNhbGxfZXZlbnRfY2hhbm5lbF9vcChFVlRDSE5PUF9y ZXNldCwgJnJlc2V0KTsKKworICAgICAgICBicmVhazsKKyAgICB9CisgICAgZGVmYXVsdDoKKyAg ICAgICAgLyogTm8gRklGTyBvciBQSVJRIHN1cHBvcnQgZm9yIG5vdyAqLworICAgICAgICByYyA9 IC1FTk9TWVM7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIHJldHVybiByYzsKK30KKwor dm9pZCBwdl9zaGltX2luamVjdF9ldnRjaG4odW5zaWduZWQgaW50IHBvcnQpCit7CisgICAgaWYg KCBwb3J0X2lzX3ZhbGlkKHB2X2RvbWFpbiwgcG9ydCkgKQorICAgIHsKKyAgICAgICAgIHN0cnVj dCBldnRjaG4gKmNobiA9IGV2dGNobl9mcm9tX3BvcnQocHZfZG9tYWluLCBwb3J0KTsKKworICAg ICAgICAgZXZ0Y2huX3BvcnRfc2V0X3BlbmRpbmcocHZfZG9tYWluLCBjaG4tPm5vdGlmeV92Y3B1 X2lkLCBjaG4pOworICAgIH0KK30KKwogZG9taWRfdCBnZXRfZG9tMF9kb21pZCh2b2lkKQogewog ICAgIHVpbnQzMl90IGVheCwgZWJ4LCBlY3gsIGVkeDsKZGlmZiAtLWdpdCBhL3hlbi9jb21tb24v ZG9tYWluLmMgYi94ZW4vY29tbW9uL2RvbWFpbi5jCmluZGV4IGVkYmYxYTJiYTkuLmQ2NTNhMGIw YmIgMTAwNjQ0Ci0tLSBhL3hlbi9jb21tb24vZG9tYWluLmMKKysrIGIveGVuL2NvbW1vbi9kb21h aW4uYwpAQCAtNjMsNiArNjMsOCBAQCBzdHJ1Y3QgZG9tYWluICpkb21haW5fbGlzdDsKIAogc3Ry dWN0IGRvbWFpbiAqaGFyZHdhcmVfZG9tYWluIF9fcmVhZF9tb3N0bHk7CiAKK3N0cnVjdCBkb21h aW4gKnB2X2RvbWFpbiBfX3JlYWRfbW9zdGx5OworCiAjaWZkZWYgQ09ORklHX0xBVEVfSFdET00K IGRvbWlkX3QgaGFyZHdhcmVfZG9taWQgX19yZWFkX21vc3RseTsKIGludGVnZXJfcGFyYW0oImhh cmR3YXJlX2RvbSIsIGhhcmR3YXJlX2RvbWlkKTsKQEAgLTM5NSw2ICszOTcsMTEgQEAgc3RydWN0 IGRvbWFpbiAqZG9tYWluX2NyZWF0ZShkb21pZF90IGRvbWlkLCB1bnNpZ25lZCBpbnQgZG9tY3Jf ZmxhZ3MsCiAgICAgICAgIHJjdV9hc3NpZ25fcG9pbnRlcigqcGQsIGQpOwogICAgICAgICByY3Vf YXNzaWduX3BvaW50ZXIoZG9tYWluX2hhc2hbRE9NQUlOX0hBU0goZG9taWQpXSwgZCk7CiAgICAg ICAgIHNwaW5fdW5sb2NrKCZkb21saXN0X3VwZGF0ZV9sb2NrKTsKKworI2lmZGVmIENPTkZJR19Y ODYKKyAgICAgICAgaWYgKCBwdl9zaGltICkKKyAgICAgICAgICAgIHB2X2RvbWFpbiA9IGQ7Cisj ZW5kaWYKICAgICB9CiAKICAgICByZXR1cm4gZDsKZGlmZiAtLWdpdCBhL3hlbi9jb21tb24vZXZl bnRfY2hhbm5lbC5jIGIveGVuL2NvbW1vbi9ldmVudF9jaGFubmVsLmMKaW5kZXggYzY5ZjlkYjZk Yi4uOTc3YTg3Njc1MSAxMDA2NDQKLS0tIGEveGVuL2NvbW1vbi9ldmVudF9jaGFubmVsLmMKKysr IGIveGVuL2NvbW1vbi9ldmVudF9jaGFubmVsLmMKQEAgLTMxLDYgKzMxLDEwIEBACiAjaW5jbHVk ZSA8cHVibGljL2V2ZW50X2NoYW5uZWwuaD4KICNpbmNsdWRlIDx4c20veHNtLmg+CiAKKyNpZmRl ZiBDT05GSUdfWDg2CisjaW5jbHVkZSA8YXNtL3B2L3NoaW0uaD4KKyNlbmRpZgorCiAjZGVmaW5l IEVSUk9SX0VYSVQoX2Vycm5vKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFwKICAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgXAogICAgICAgICBnZHByaW50ayhYRU5MT0dfV0FSTklORywgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCkBAIC0xNTYsNDYgKzE2MCw2MiBAQCBz dGF0aWMgdm9pZCBmcmVlX2V2dGNobl9idWNrZXQoc3RydWN0IGRvbWFpbiAqZCwgc3RydWN0IGV2 dGNobiAqYnVja2V0KQogICAgIHhmcmVlKGJ1Y2tldCk7CiB9CiAKK2ludCBldnRjaG5fYWxsb2Nh dGVfcG9ydChzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBpbnQgcG9ydCkKK3sKKyAgICBpZiAo IHBvcnQgPiBkLT5tYXhfZXZ0Y2huX3BvcnQgfHwgcG9ydCA+PSBkLT5tYXhfZXZ0Y2hucyApCisg ICAgICAgIHJldHVybiAtRU5PU1BDOworCisgICAgaWYgKCBwb3J0X2lzX3ZhbGlkKGQsIHBvcnQp ICkKKyAgICB7CisgICAgICAgIGlmICggZXZ0Y2huX2Zyb21fcG9ydChkLCBwb3J0KS0+c3RhdGUg IT0gRUNTX0ZSRUUgfHwKKyAgICAgICAgICAgICBldnRjaG5fcG9ydF9pc19idXN5KGQsIHBvcnQp ICkKKyAgICAgICAgICAgIHJldHVybiAtRUJVU1k7CisgICAgfQorICAgIGVsc2UKKyAgICB7Cisg ICAgICAgIHN0cnVjdCBldnRjaG4gKmNobjsKKyAgICAgICAgc3RydWN0IGV2dGNobiAqKmdycDsK KworICAgICAgICBpZiAoICFncm91cF9mcm9tX3BvcnQoZCwgcG9ydCkgKQorICAgICAgICB7Cisg ICAgICAgICAgICBncnAgPSB4emFsbG9jX2FycmF5KHN0cnVjdCBldnRjaG4gKiwgQlVDS0VUU19Q RVJfR1JPVVApOworICAgICAgICAgICAgaWYgKCAhZ3JwICkKKyAgICAgICAgICAgICAgICByZXR1 cm4gLUVOT01FTTsKKyAgICAgICAgICAgIGdyb3VwX2Zyb21fcG9ydChkLCBwb3J0KSA9IGdycDsK KyAgICAgICAgfQorCisgICAgICAgIGNobiA9IGFsbG9jX2V2dGNobl9idWNrZXQoZCwgcG9ydCk7 CisgICAgICAgIGlmICggIWNobiApCisgICAgICAgICAgICByZXR1cm4gLUVOT01FTTsKKyAgICAg ICAgYnVja2V0X2Zyb21fcG9ydChkLCBwb3J0KSA9IGNobjsKKworICAgICAgICB3cml0ZV9hdG9t aWMoJmQtPnZhbGlkX2V2dGNobnMsIGQtPnZhbGlkX2V2dGNobnMgKyBFVlRDSE5TX1BFUl9CVUNL RVQpOworICAgIH0KKworICAgIHJldHVybiAwOworfQorCiBzdGF0aWMgaW50IGdldF9mcmVlX3Bv cnQoc3RydWN0IGRvbWFpbiAqZCkKIHsKLSAgICBzdHJ1Y3QgZXZ0Y2huICpjaG47Ci0gICAgc3Ry dWN0IGV2dGNobiAqKmdycDsKICAgICBpbnQgICAgICAgICAgICBwb3J0OwogCiAgICAgaWYgKCBk LT5pc19keWluZyApCiAgICAgICAgIHJldHVybiAtRUlOVkFMOwogCi0gICAgZm9yICggcG9ydCA9 IDA7IHBvcnRfaXNfdmFsaWQoZCwgcG9ydCk7IHBvcnQrKyApCisgICAgZm9yICggcG9ydCA9IDA7 IHBvcnQgPD0gZC0+bWF4X2V2dGNobl9wb3J0OyBwb3J0KysgKQogICAgIHsKLSAgICAgICAgaWYg KCBwb3J0ID4gZC0+bWF4X2V2dGNobl9wb3J0ICkKLSAgICAgICAgICAgIHJldHVybiAtRU5PU1BD OwotICAgICAgICBpZiAoIGV2dGNobl9mcm9tX3BvcnQoZCwgcG9ydCktPnN0YXRlID09IEVDU19G UkVFCi0gICAgICAgICAgICAgJiYgIWV2dGNobl9wb3J0X2lzX2J1c3koZCwgcG9ydCkgKQotICAg ICAgICAgICAgcmV0dXJuIHBvcnQ7Ci0gICAgfQorICAgICAgICBpbnQgcmMgPSBldnRjaG5fYWxs b2NhdGVfcG9ydChkLCBwb3J0KTsKIAotICAgIGlmICggcG9ydCA9PSBkLT5tYXhfZXZ0Y2hucyB8 fCBwb3J0ID4gZC0+bWF4X2V2dGNobl9wb3J0ICkKLSAgICAgICAgcmV0dXJuIC1FTk9TUEM7Cisg ICAgICAgIGlmICggcmMgPT0gLUVCVVNZICkKKyAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAg aWYgKCAhZ3JvdXBfZnJvbV9wb3J0KGQsIHBvcnQpICkKLSAgICB7Ci0gICAgICAgIGdycCA9IHh6 YWxsb2NfYXJyYXkoc3RydWN0IGV2dGNobiAqLCBCVUNLRVRTX1BFUl9HUk9VUCk7Ci0gICAgICAg IGlmICggIWdycCApCi0gICAgICAgICAgICByZXR1cm4gLUVOT01FTTsKLSAgICAgICAgZ3JvdXBf ZnJvbV9wb3J0KGQsIHBvcnQpID0gZ3JwOworICAgICAgICByZXR1cm4gcG9ydDsKICAgICB9CiAK LSAgICBjaG4gPSBhbGxvY19ldnRjaG5fYnVja2V0KGQsIHBvcnQpOwotICAgIGlmICggIWNobiAp Ci0gICAgICAgIHJldHVybiAtRU5PTUVNOwotICAgIGJ1Y2tldF9mcm9tX3BvcnQoZCwgcG9ydCkg PSBjaG47Ci0KLSAgICB3cml0ZV9hdG9taWMoJmQtPnZhbGlkX2V2dGNobnMsIGQtPnZhbGlkX2V2 dGNobnMgKyBFVlRDSE5TX1BFUl9CVUNLRVQpOwotCi0gICAgcmV0dXJuIHBvcnQ7CisgICAgcmV0 dXJuIC1FTk9TUEM7CiB9CiAKLXN0YXRpYyB2b2lkIGZyZWVfZXZ0Y2huKHN0cnVjdCBkb21haW4g KmQsIHN0cnVjdCBldnRjaG4gKmNobikKK3ZvaWQgZXZ0Y2huX2ZyZWUoc3RydWN0IGRvbWFpbiAq ZCwgc3RydWN0IGV2dGNobiAqY2huKQogewogICAgIC8qIENsZWFyIHBlbmRpbmcgZXZlbnQgdG8g YXZvaWQgdW5leHBlY3RlZCBiZWhhdmlvciBvbiByZS1iaW5kLiAqLwogICAgIGV2dGNobl9wb3J0 X2NsZWFyX3BlbmRpbmcoZCwgY2huKTsKQEAgLTM0NSwxMyArMzY1LDEzIEBAIHN0YXRpYyBsb25n IGV2dGNobl9iaW5kX2ludGVyZG9tYWluKGV2dGNobl9iaW5kX2ludGVyZG9tYWluX3QgKmJpbmQp CiB9CiAKIAotc3RhdGljIGxvbmcgZXZ0Y2huX2JpbmRfdmlycShldnRjaG5fYmluZF92aXJxX3Qg KmJpbmQpCitpbnQgZXZ0Y2huX2JpbmRfdmlycShldnRjaG5fYmluZF92aXJxX3QgKmJpbmQsIGlu dCBwb3J0KQogewogICAgIHN0cnVjdCBldnRjaG4gKmNobjsKICAgICBzdHJ1Y3QgdmNwdSAgICp2 OwogICAgIHN0cnVjdCBkb21haW4gKmQgPSBjdXJyZW50LT5kb21haW47Ci0gICAgaW50ICAgICAg ICAgICAgcG9ydCwgdmlycSA9IGJpbmQtPnZpcnEsIHZjcHUgPSBiaW5kLT52Y3B1OwotICAgIGxv bmcgICAgICAgICAgIHJjID0gMDsKKyAgICBpbnQgICAgICAgICAgICB2aXJxID0gYmluZC0+dmly cSwgdmNwdSA9IGJpbmQtPnZjcHU7CisgICAgaW50ICAgICAgICAgICAgcmMgPSAwOwogCiAgICAg aWYgKCAodmlycSA8IDApIHx8ICh2aXJxID49IEFSUkFZX1NJWkUodi0+dmlycV90b19ldnRjaG4p KSApCiAgICAgICAgIHJldHVybiAtRUlOVkFMOwpAQCAtMzY4LDcgKzM4OCwxMiBAQCBzdGF0aWMg bG9uZyBldnRjaG5fYmluZF92aXJxKGV2dGNobl9iaW5kX3ZpcnFfdCAqYmluZCkKICAgICBpZiAo IHYtPnZpcnFfdG9fZXZ0Y2huW3ZpcnFdICE9IDAgKQogICAgICAgICBFUlJPUl9FWElUKC1FRVhJ U1QpOwogCi0gICAgaWYgKCAocG9ydCA9IGdldF9mcmVlX3BvcnQoZCkpIDwgMCApCisgICAgaWYg KCBwb3J0ID49IDAgKQorICAgIHsKKyAgICAgICAgaWYgKCAocmMgPSBldnRjaG5fYWxsb2NhdGVf cG9ydChkLCBwb3J0KSkgPCAwICkKKyAgICAgICAgICAgIEVSUk9SX0VYSVQocmMpOworICAgIH0K KyAgICBlbHNlIGlmICggKHBvcnQgPSBnZXRfZnJlZV9wb3J0KGQpKSA8IDAgKQogICAgICAgICBF UlJPUl9FWElUKHBvcnQpOwogCiAgICAgY2huID0gZXZ0Y2huX2Zyb21fcG9ydChkLCBwb3J0KTsK QEAgLTUxMSw3ICs1MzYsNyBAQCBzdGF0aWMgbG9uZyBldnRjaG5fYmluZF9waXJxKGV2dGNobl9i aW5kX3BpcnFfdCAqYmluZCkKIH0KIAogCi1zdGF0aWMgbG9uZyBldnRjaG5fY2xvc2Uoc3RydWN0 IGRvbWFpbiAqZDEsIGludCBwb3J0MSwgYm9vbF90IGd1ZXN0KQorbG9uZyBldnRjaG5fY2xvc2Uo c3RydWN0IGRvbWFpbiAqZDEsIGludCBwb3J0MSwgYm9vbCBndWVzdCkKIHsKICAgICBzdHJ1Y3Qg ZG9tYWluICpkMiA9IE5VTEw7CiAgICAgc3RydWN0IHZjcHUgICAqdjsKQEAgLTYxOSw3ICs2NDQs NyBAQCBzdGF0aWMgbG9uZyBldnRjaG5fY2xvc2Uoc3RydWN0IGRvbWFpbiAqZDEsIGludCBwb3J0 MSwgYm9vbF90IGd1ZXN0KQogCiAgICAgICAgIGRvdWJsZV9ldnRjaG5fbG9jayhjaG4xLCBjaG4y KTsKIAotICAgICAgICBmcmVlX2V2dGNobihkMSwgY2huMSk7CisgICAgICAgIGV2dGNobl9mcmVl KGQxLCBjaG4xKTsKIAogICAgICAgICBjaG4yLT5zdGF0ZSA9IEVDU19VTkJPVU5EOwogICAgICAg ICBjaG4yLT51LnVuYm91bmQucmVtb3RlX2RvbWlkID0gZDEtPmRvbWFpbl9pZDsKQEAgLTYzMyw3 ICs2NTgsNyBAQCBzdGF0aWMgbG9uZyBldnRjaG5fY2xvc2Uoc3RydWN0IGRvbWFpbiAqZDEsIGlu dCBwb3J0MSwgYm9vbF90IGd1ZXN0KQogICAgIH0KIAogICAgIHNwaW5fbG9jaygmY2huMS0+bG9j ayk7Ci0gICAgZnJlZV9ldnRjaG4oZDEsIGNobjEpOworICAgIGV2dGNobl9mcmVlKGQxLCBjaG4x KTsKICAgICBzcGluX3VubG9jaygmY2huMS0+bG9jayk7CiAKICBvdXQ6CkBAIC04MzksNyArODY0 LDcgQEAgc3RhdGljIHZvaWQgY2xlYXJfZ2xvYmFsX3ZpcnFfaGFuZGxlcnMoc3RydWN0IGRvbWFp biAqZCkKICAgICB9CiB9CiAKLXN0YXRpYyBsb25nIGV2dGNobl9zdGF0dXMoZXZ0Y2huX3N0YXR1 c190ICpzdGF0dXMpCitsb25nIGV2dGNobl9zdGF0dXMoZXZ0Y2huX3N0YXR1c190ICpzdGF0dXMp CiB7CiAgICAgc3RydWN0IGRvbWFpbiAgICpkOwogICAgIGRvbWlkX3QgICAgICAgICAgZG9tID0g c3RhdHVzLT5kb207CkBAIC0xMDMwLDYgKzEwNTUsMTEgQEAgbG9uZyBkb19ldmVudF9jaGFubmVs X29wKGludCBjbWQsIFhFTl9HVUVTVF9IQU5ETEVfUEFSQU0odm9pZCkgYXJnKQogewogICAgIGxv bmcgcmM7CiAKKyNpZmRlZiBDT05GSUdfWDg2CisgICAgaWYgKCBwdl9zaGltICkKKyAgICAgICAg cmV0dXJuIHB2X3NoaW1fZXZlbnRfY2hhbm5lbF9vcChjbWQsIGFyZyk7CisjZW5kaWYKKwogICAg IHN3aXRjaCAoIGNtZCApCiAgICAgewogICAgIGNhc2UgRVZUQ0hOT1BfYWxsb2NfdW5ib3VuZDog ewpAQCAtMTA1Niw3ICsxMDg2LDcgQEAgbG9uZyBkb19ldmVudF9jaGFubmVsX29wKGludCBjbWQs IFhFTl9HVUVTVF9IQU5ETEVfUEFSQU0odm9pZCkgYXJnKQogICAgICAgICBzdHJ1Y3QgZXZ0Y2hu X2JpbmRfdmlycSBiaW5kX3ZpcnE7CiAgICAgICAgIGlmICggY29weV9mcm9tX2d1ZXN0KCZiaW5k X3ZpcnEsIGFyZywgMSkgIT0gMCApCiAgICAgICAgICAgICByZXR1cm4gLUVGQVVMVDsKLSAgICAg ICAgcmMgPSBldnRjaG5fYmluZF92aXJxKCZiaW5kX3ZpcnEpOworICAgICAgICByYyA9IGV2dGNo bl9iaW5kX3ZpcnEoJmJpbmRfdmlycSwgLTEpOwogICAgICAgICBpZiAoICFyYyAmJiBfX2NvcHlf dG9fZ3Vlc3QoYXJnLCAmYmluZF92aXJxLCAxKSApCiAgICAgICAgICAgICByYyA9IC1FRkFVTFQ7 IC8qIENsZWFuaW5nIHVwIGhlcmUgd291bGQgYmUgYSBtZXNzISAqLwogICAgICAgICBicmVhazsK ZGlmZiAtLWdpdCBhL3hlbi9kcml2ZXJzL2NoYXIveGVuX3B2X2NvbnNvbGUuYyBiL3hlbi9kcml2 ZXJzL2NoYXIveGVuX3B2X2NvbnNvbGUuYwppbmRleCA2YWE2OTRlMzk1Li5mYjVhNzg5M2JlIDEw MDY0NAotLS0gYS94ZW4vZHJpdmVycy9jaGFyL3hlbl9wdl9jb25zb2xlLmMKKysrIGIveGVuL2Ry aXZlcnMvY2hhci94ZW5fcHZfY29uc29sZS5jCkBAIC05Miw2ICs5MiwxMSBAQCBzdGF0aWMgdm9p ZCBub3RpZnlfZGFlbW9uKHZvaWQpCiAgICAgeGVuX2h5cGVyY2FsbF9ldnRjaG5fc2VuZChjb25z X2V2dGNobik7CiB9CiAKK2V2dGNobl9wb3J0X3QgcHZfY29uc29sZV9ldnRjaG4odm9pZCkKK3sK KyAgICByZXR1cm4gY29uc19ldnRjaG47Cit9CisKIHNpemVfdCBwdl9jb25zb2xlX3J4KHN0cnVj dCBjcHVfdXNlcl9yZWdzICpyZWdzKQogewogICAgIGNoYXIgYzsKQEAgLTEwMSwxMCArMTA2LDYg QEAgc2l6ZV90IHB2X2NvbnNvbGVfcngoc3RydWN0IGNwdV91c2VyX3JlZ3MgKnJlZ3MpCiAgICAg aWYgKCAhY29uc19yaW5nICkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICAvKiBUT0RPOiBtb3Zl IHRoaXMgc29tZXdoZXJlICovCi0gICAgaWYgKCAhdGVzdF9iaXQoY29uc19ldnRjaG4sIFhFTl9z aGFyZWRfaW5mby0+ZXZ0Y2huX3BlbmRpbmcpICkKLSAgICAgICAgcmV0dXJuIDA7Ci0KICAgICBw cm9kID0gQUNDRVNTX09OQ0UoY29uc19yaW5nLT5pbl9wcm9kKTsKICAgICBjb25zID0gY29uc19y aW5nLT5pbl9jb25zOwogICAgIC8qIEdldCBwb2ludGVycyBiZWZvcmUgcmVhZGluZyB0aGUgcmlu ZyAqLwpAQCAtMTI1LDggKzEyNiw2IEBAIHNpemVfdCBwdl9jb25zb2xlX3J4KHN0cnVjdCBjcHVf dXNlcl9yZWdzICpyZWdzKQogICAgIEFDQ0VTU19PTkNFKGNvbnNfcmluZy0+aW5fY29ucykgPSBj b25zOwogICAgIG5vdGlmeV9kYWVtb24oKTsKIAotICAgIGNsZWFyX2JpdChjb25zX2V2dGNobiwg WEVOX3NoYXJlZF9pbmZvLT5ldnRjaG5fcGVuZGluZyk7Ci0KICAgICByZXR1cm4gcmVjdjsKIH0K IApkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9wdi9zaGltLmggYi94ZW4vaW5jbHVk ZS9hc20teDg2L3B2L3NoaW0uaAppbmRleCA4ZDRlOGQyYWUxLi42ZjdiMzljM2UwIDEwMDY0NAot LS0gYS94ZW4vaW5jbHVkZS9hc20teDg2L3B2L3NoaW0uaAorKysgYi94ZW4vaW5jbHVkZS9hc20t eDg2L3B2L3NoaW0uaApAQCAtMzYsNiArMzYsOCBAQCB2b2lkIHB2X3NoaW1fc2V0dXBfZG9tKHN0 cnVjdCBkb21haW4gKmQsIGw0X3BnZW50cnlfdCAqbDRzdGFydCwKICAgICAgICAgICAgICAgICAg ICAgICAgdW5zaWduZWQgbG9uZyBjb25zb2xlX3ZhLCB1bnNpZ25lZCBsb25nIHZwaHlzbWFwLAog ICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9pbmZvX3QgKnNpKTsKIHZvaWQgcHZfc2hpbV9z aHV0ZG93bih1aW50OF90IHJlYXNvbik7Citsb25nIHB2X3NoaW1fZXZlbnRfY2hhbm5lbF9vcChp bnQgY21kLCBYRU5fR1VFU1RfSEFORExFX1BBUkFNKHZvaWQpIGFyZyk7Cit2b2lkIHB2X3NoaW1f aW5qZWN0X2V2dGNobih1bnNpZ25lZCBpbnQgcG9ydCk7CiBkb21pZF90IGdldF9kb20wX2RvbWlk KHZvaWQpOwogCiAjZWxzZQpAQCAtNTMsNiArNTUsMTYgQEAgc3RhdGljIGlubGluZSB2b2lkIHB2 X3NoaW1fc2h1dGRvd24odWludDhfdCByZWFzb24pCiB7CiAgICAgQVNTRVJUX1VOUkVBQ0hBQkxF KCk7CiB9CitzdGF0aWMgaW5saW5lIGxvbmcgcHZfc2hpbV9ldmVudF9jaGFubmVsX29wKGludCBj bWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFhFTl9HVUVT VF9IQU5ETEVfUEFSQU0odm9pZCkgYXJnKQoreworICAgIEFTU0VSVF9VTlJFQUNIQUJMRSgpOwor ICAgIHJldHVybiAwOworfQorc3RhdGljIGlubGluZSB2b2lkIHB2X3NoaW1faW5qZWN0X2V2dGNo bih1bnNpZ25lZCBpbnQgcG9ydCkKK3sKKyAgICBBU1NFUlRfVU5SRUFDSEFCTEUoKTsKK30KIHN0 YXRpYyBpbmxpbmUgZG9taWRfdCBnZXRfZG9tMF9kb21pZCh2b2lkKQogewogICAgIHJldHVybiAw OwpkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUveGVuL2V2ZW50LmggYi94ZW4vaW5jbHVkZS94ZW4v ZXZlbnQuaAppbmRleCA4NzkxNWVhZDY5Li4zZDIwMmQ4MTcyIDEwMDY0NAotLS0gYS94ZW4vaW5j bHVkZS94ZW4vZXZlbnQuaAorKysgYi94ZW4vaW5jbHVkZS94ZW4vZXZlbnQuaApAQCAtNDgsNiAr NDgsMjEgQEAgaW50IGV2dGNobl9zZW5kKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGludCBs cG9ydCk7CiAvKiBCaW5kIGEgbG9jYWwgZXZlbnQtY2hhbm5lbCBwb3J0IHRvIHRoZSBzcGVjaWZp ZWQgVkNQVS4gKi8KIGxvbmcgZXZ0Y2huX2JpbmRfdmNwdSh1bnNpZ25lZCBpbnQgcG9ydCwgdW5z aWduZWQgaW50IHZjcHVfaWQpOwogCisvKiBCaW5kIGEgVklSUS4gKi8KK2ludCBldnRjaG5fYmlu ZF92aXJxKGV2dGNobl9iaW5kX3ZpcnFfdCAqYmluZCwgaW50IHBvcnQpOworCisvKiBHZXQgdGhl IHN0YXR1cyBvZiBhbiBldmVudCBjaGFubmVsIHBvcnQuICovCitsb25nIGV2dGNobl9zdGF0dXMo ZXZ0Y2huX3N0YXR1c190ICpzdGF0dXMpOworCisvKiBDbG9zZSBhbiBldmVudCBjaGFubmVsLiAq LworbG9uZyBldnRjaG5fY2xvc2Uoc3RydWN0IGRvbWFpbiAqZDEsIGludCBwb3J0MSwgYm9vbCBn dWVzdCk7CisKKy8qIEZyZWUgYW4gZXZlbnQgY2hhbm5lbC4gKi8KK3ZvaWQgZXZ0Y2huX2ZyZWUo c3RydWN0IGRvbWFpbiAqZCwgc3RydWN0IGV2dGNobiAqY2huKTsKKworLyogQWxsb2NhdGUgYSBz cGVjaWZpYyBldmVudCBjaGFubmVsIHBvcnQuICovCitpbnQgZXZ0Y2huX2FsbG9jYXRlX3BvcnQo c3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgaW50IHBvcnQpOworCiAvKiBVbm1hc2sgYSBsb2Nh bCBldmVudC1jaGFubmVsIHBvcnQuICovCiBpbnQgZXZ0Y2huX3VubWFzayh1bnNpZ25lZCBpbnQg cG9ydCk7CiAKZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL3hlbi9wdl9jb25zb2xlLmggYi94ZW4v aW5jbHVkZS94ZW4vcHZfY29uc29sZS5oCmluZGV4IGU1NzhiNTY2MjAuLmNiOTI1Mzk2NjYgMTAw NjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL3hlbi9wdl9jb25zb2xlLmgKKysrIGIveGVuL2luY2x1ZGUv eGVuL3B2X2NvbnNvbGUuaApAQCAtMTAsNiArMTAsNyBAQCB2b2lkIHB2X2NvbnNvbGVfc2V0X3J4 X2hhbmRsZXIoc2VyaWFsX3J4X2ZuIGZuKTsKIHZvaWQgcHZfY29uc29sZV9pbml0X3Bvc3RpcnEo dm9pZCk7CiB2b2lkIHB2X2NvbnNvbGVfcHV0cyhjb25zdCBjaGFyICpidWYpOwogc2l6ZV90IHB2 X2NvbnNvbGVfcngoc3RydWN0IGNwdV91c2VyX3JlZ3MgKnJlZ3MpOworZXZ0Y2huX3BvcnRfdCBw dl9jb25zb2xlX2V2dGNobih2b2lkKTsKIAogI2Vsc2UKIApAQCAtMTgsNiArMTksMTEgQEAgc3Rh dGljIGlubGluZSB2b2lkIHB2X2NvbnNvbGVfc2V0X3J4X2hhbmRsZXIoc2VyaWFsX3J4X2ZuIGZu KSB7IH0KIHN0YXRpYyBpbmxpbmUgdm9pZCBwdl9jb25zb2xlX2luaXRfcG9zdGlycSh2b2lkKSB7 IH0KIHN0YXRpYyBpbmxpbmUgdm9pZCBwdl9jb25zb2xlX3B1dHMoY29uc3QgY2hhciAqYnVmKSB7 IH0KIHN0YXRpYyBpbmxpbmUgc2l6ZV90IHB2X2NvbnNvbGVfcngoc3RydWN0IGNwdV91c2VyX3Jl Z3MgKnJlZ3MpIHsgcmV0dXJuIDA7IH0KK2V2dGNobl9wb3J0X3QgcHZfY29uc29sZV9ldnRjaG4o dm9pZCkKK3sKKyAgICBBU1NFUlRfVU5SRUFDSEFCTEUoKTsKKyAgICByZXR1cm4gMDsKK30KIAog I2VuZGlmIC8qICFDT05GSUdfWEVOX0dVRVNUICovCiAjZW5kaWYgLyogX19YRU5fUFZfQ09OU09M RV9IX18gKi8KZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL3hlbi9zY2hlZC5oIGIveGVuL2luY2x1 ZGUveGVuL3NjaGVkLmgKaW5kZXggNjRhYmMxZGY2Yy4uYWM2NWQwYzBkZiAxMDA2NDQKLS0tIGEv eGVuL2luY2x1ZGUveGVuL3NjaGVkLmgKKysrIGIveGVuL2luY2x1ZGUveGVuL3NjaGVkLmgKQEAg LTQ4LDYgKzQ4LDggQEAgREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUodmNwdV9ydW5zdGF0ZV9pbmZv X2NvbXBhdF90KTsKIC8qIEEgZ2xvYmFsIHBvaW50ZXIgdG8gdGhlIGhhcmR3YXJlIGRvbWFpbiAo dXN1YWxseSBET00wKS4gKi8KIGV4dGVybiBzdHJ1Y3QgZG9tYWluICpoYXJkd2FyZV9kb21haW47 CiAKK2V4dGVybiBzdHJ1Y3QgZG9tYWluICpwdl9kb21haW47CisKICNpZmRlZiBDT05GSUdfTEFU RV9IV0RPTQogZXh0ZXJuIGRvbWlkX3QgaGFyZHdhcmVfZG9taWQ7CiAjZWxzZQotLSAKMi4xMS4w CgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRl dmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9s aXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3hlbi1kZXZlbA==