From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 34998A0562; Sat, 4 Apr 2020 16:17:19 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 6B66B1BEB1; Sat, 4 Apr 2020 16:17:18 +0200 (CEST) Received: from out0-154.mail.aliyun.com (out0-154.mail.aliyun.com [140.205.0.154]) by dpdk.org (Postfix) with ESMTP id 657C1AAD5 for ; Sat, 4 Apr 2020 16:16:56 +0200 (CEST) X-Alimail-AntiSpam: AC=PASS; BC=-1|-1; BR=01201311R421e4; CH=green; DM=||false|; DS=||; FP=0|-1|-1|-1|0|-1|-1|-1; HT=e02c03305; MF=jielong.zjl@antfin.com; NM=1; PH=DW; RN=4; SR=0; TI=W4_5844326_DEFAULT_0A932313_1585982931984_o7001c2339; Received: from WS-web (jielong.zjl@antfin.com[W4_5844326_DEFAULT_0A932313_1585982931984_o7001c2339]) by e02c03274.eu6 at Sat, 04 Apr 2020 22:16:53 +0800 Date: Sat, 04 Apr 2020 22:16:53 +0800 From: "=?UTF-8?B?5ZGo5LuL6b6Z?=" To: "dev" , "Konstantin Ananyev" Cc: "honnappa.nagarahalli" , "david.marchand" , "Konstantin Ananyev" Message-ID: <149fa735-0cd8-47e4-9c8c-47b066f3c609.jielong.zjl@antfin.com> X-Mailer: [Alimail-Mailagent revision 4][W4_5844326][DEFAULT][Chrome] MIME-Version: 1.0 References: <20200402220959.29885-1-konstantin.ananyev@intel.com> <20200403174235.23308-1-konstantin.ananyev@intel.com>, <20200403174235.23308-10-konstantin.ananyev@intel.com> x-aliyun-mail-creator: W4_5844326_DEFAULT_M3LTW96aWxsYS81LjAgKE1hY2ludG9zaDsgSW50ZWwgTWFjIE9TIFggMTBfMTRfMCkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzgwLjAuMzk4Ny4xNDkgU2FmYXJpLzUzNy4zNg==vN In-Reply-To: <20200403174235.23308-10-konstantin.ananyev@intel.com> Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: base64 X-Content-Filtered-By: Mailman/MimeDel 2.1.15 Subject: [dpdk-dev] =?utf-8?b?5Zue5aSN77yaW1BBVENIIHYzIDkvOV0gcmluZzogYWRk?= =?utf-8?q?_C11_memory_model_for_new_sync_modes?= X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list Reply-To: =?UTF-8?B?5ZGo5LuL6b6Z?= List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" SGksClRoaXMgcGF0Y2hzZXQgcmVhbGx5IGhlbHBzIG15IGNhc2UgYSBsb3QuIApXZSBoYXZlIGEg Y2FzZSB3aGljaCB3b3VsZCBoYXZlIHNldmVyYWwgaHVuZHJlZHMgb2YgdGhyZWFkcyAKZ2V0L3B1 dCBjb25jdXJyZW50bHkgb24gc2luZ2xlIG1lbXBvb2wocmluZy1iYXNlZCkgd2l0aG91dCBjYWNo ZS4gCkV2ZW4gb24gYSBzaW1wbGlmaWVkIHRlc3QgY2FzZSBpbiB3aGljaCAzMiB0aHJlYWRzIHB1 dHRpbmcgaW50byBtZW1wb29sIApjb25jdXJyZW50bHkgZm9yIDEwMjQgdGltZXMgcmVzcGVjdGl2 ZWx5LCBpdCB3b3JrcyBleHRyZW1lbHkgc2xvdyBhbmQgCndvdWxkIGJlIGZpbmlzaGVkIGFmdGVy IHRlbnMgb2Ygc2Vjb25kcy4gV2l0aCBuZXcgc3luYyBtb2RlcyBpbnRyb2R1Y2VkIApieSB0aGlz IHBhdGNoc2V0LCB0aGUgY2FzZSBjb3VsZCBmaW5pc2ggaW4gMjgxNjk3OSBjeWNsZXMoUlRTKSAg YW5kIAoyMjc5NjE1KEhUUykgY3ljbGVzLgpJdCB3b3VsZCBiZSBncmVhdCBpZiB3ZSBjb3VsZCBo YXZlIHNpbXBsZSBBUElzIHRvIGVuYWJsZSB0aGVzZSBzeW5jIG1vZGVzCmZvciBzdHJ1Y3R1cmVz IGJhc2VkIG9uIHJ0ZV9yaW5nIGxpa2UgbWVtcG9vbC4KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCuWPkeS7tuS6uu+8mktv bnN0YW50aW4gQW5hbnlldiA8a29uc3RhbnRpbi5hbmFueWV2QGludGVsLmNvbT4K5Y+R6YCB5pe2 6Ze077yaMjAyMOW5tDTmnIg05pelKOaYn+acn+WFrSkgMDE6NDMK5pS25Lu25Lq677yaZGV2IDxk ZXZAZHBkay5vcmc+CuaKhOOAgOmAge+8mmhvbm5hcHBhLm5hZ2FyYWhhbGxpIDxob25uYXBwYS5u YWdhcmFoYWxsaUBhcm0uY29tPjsgZGF2aWQubWFyY2hhbmQgPGRhdmlkLm1hcmNoYW5kQHJlZGhh dC5jb20+OyDlkajku4vpvpko5Y2T6IW+KSA8amllbG9uZy56amxAYW50ZmluLmNvbT47IEtvbnN0 YW50aW4gQW5hbnlldiA8a29uc3RhbnRpbi5hbmFueWV2QGludGVsLmNvbT4K5Li744CA6aKY77ya W1BBVENIIHYzIDkvOV0gcmluZzogYWRkIEMxMSBtZW1vcnkgbW9kZWwgZm9yIG5ldyBzeW5jIG1v ZGVzCgpBZGQgQzExIGF0b21pY3MgYmFzZWQgaW1wbGVtZW50YXRpb24gZm9yIFJUUyBhbmQgSFRT CmhlYWQvdGFpbCB1cGRhdGUgcHJpbWl0aXZpZXMuCgpTaWduZWQtb2ZmLWJ5OiBLb25zdGFudGlu IEFuYW55ZXYgPGtvbnN0YW50aW4uYW5hbnlldkBpbnRlbC5jb20+Ci0tLQogbGliL2xpYnJ0ZV9y aW5nL01ha2VmaWxlICAgICAgICAgICAgICAgfCAgIDQgKy0KIGxpYi9saWJydGVfcmluZy9tZXNv bi5idWlsZCAgICAgICAgICAgIHwgICAyICsKIGxpYi9saWJydGVfcmluZy9ydGVfcmluZ19odHMu aCAgICAgICAgIHwgICA0ICsKIGxpYi9saWJydGVfcmluZy9ydGVfcmluZ19odHNfYzExX21lbS5o IHwgMjIyICsrKysrKysrKysrKysrKysrKysrKysrKysKIGxpYi9saWJydGVfcmluZy9ydGVfcmlu Z19odHNfZWxlbS5oICAgIHwgICA0ICsKIGxpYi9saWJydGVfcmluZy9ydGVfcmluZ19ydHMuaCAg ICAgICAgIHwgICA0ICsKIGxpYi9saWJydGVfcmluZy9ydGVfcmluZ19ydHNfYzExX21lbS5oIHwg MTk4ICsrKysrKysrKysrKysrKysrKysrKysKIGxpYi9saWJydGVfcmluZy9ydGVfcmluZ19ydHNf ZWxlbS5oICAgIHwgICA0ICsKIDggZmlsZXMgY2hhbmdlZCwgNDQxIGluc2VydGlvbnMoKyksIDEg ZGVsZXRpb24oLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIvbGlicnRlX3JpbmcvcnRlX3Jpbmdf aHRzX2MxMV9tZW0uaAogY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYi9saWJydGVfcmluZy9ydGVfcmlu Z19ydHNfYzExX21lbS5oCgpkaWZmIC0tZ2l0IGEvbGliL2xpYnJ0ZV9yaW5nL01ha2VmaWxlIGIv bGliL2xpYnJ0ZV9yaW5nL01ha2VmaWxlCmluZGV4IDVmODY2MjczNy4uOTI3ZDEwNWJmIDEwMDY0 NAotLS0gYS9saWIvbGlicnRlX3JpbmcvTWFrZWZpbGUKKysrIGIvbGliL2xpYnJ0ZV9yaW5nL01h a2VmaWxlCkBAIC0yMiw5ICsyMiwxMSBAQCBTWU1MSU5LLSQoQ09ORklHX1JURV9MSUJSVEVfUklO RyktaW5jbHVkZSA6PSBydGVfcmluZy5oIFwKICAgICAgcnRlX3JpbmdfaHRzLmggXAogICAgICBy dGVfcmluZ19odHNfZWxlbS5oIFwKICAgICAgcnRlX3JpbmdfaHRzX2dlbmVyaWMuaCBcCisgICAg IHJ0ZV9yaW5nX2h0c19jMTFfbWVtLmggXAogICAgICBydGVfcmluZ19wZWVrLmggXAogICAgICBy dGVfcmluZ19ydHMuaCBcCiAgICAgIHJ0ZV9yaW5nX3J0c19lbGVtLmggXAotICAgICBydGVfcmlu Z19ydHNfZ2VuZXJpYy5oCisgICAgIHJ0ZV9yaW5nX3J0c19nZW5lcmljLmggXAorICAgICBydGVf cmluZ19ydHNfYzExX21lbS5oCgogaW5jbHVkZSAkKFJURV9TREspL21rL3J0ZS5saWIubWsKZGlm ZiAtLWdpdCBhL2xpYi9saWJydGVfcmluZy9tZXNvbi5idWlsZCBiL2xpYi9saWJydGVfcmluZy9t ZXNvbi5idWlsZAppbmRleCBmNWY4NGRjNmUuLmYyZTM3YThlNCAxMDA2NDQKLS0tIGEvbGliL2xp YnJ0ZV9yaW5nL21lc29uLmJ1aWxkCisrKyBiL2xpYi9saWJydGVfcmluZy9tZXNvbi5idWlsZApA QCAtNywxMCArNywxMiBAQCBoZWFkZXJzID0gZmlsZXMoJ3J0ZV9yaW5nLmgnLAogICAncnRlX3Jp bmdfYzExX21lbS5oJywKICAgJ3J0ZV9yaW5nX2dlbmVyaWMuaCcsCiAgICdydGVfcmluZ19odHMu aCcsCisgICdydGVfcmluZ19odHNfYzExX21lbS5oJywKICAgJ3J0ZV9yaW5nX2h0c19lbGVtLmgn LAogICAncnRlX3JpbmdfaHRzX2dlbmVyaWMuaCcsCiAgICdydGVfcmluZ19wZWVrLmgnLAogICAn cnRlX3JpbmdfcnRzLmgnLAorICAncnRlX3JpbmdfcnRzX2MxMV9tZW0uaCcsCiAgICdydGVfcmlu Z19ydHNfZWxlbS5oJywKICAgJ3J0ZV9yaW5nX3J0c19nZW5lcmljLmgnKQoKZGlmZiAtLWdpdCBh L2xpYi9saWJydGVfcmluZy9ydGVfcmluZ19odHMuaCBiL2xpYi9saWJydGVfcmluZy9ydGVfcmlu Z19odHMuaAppbmRleCAwNjJkN2JlNmMuLmRkYWE0N2ZmMSAxMDA2NDQKLS0tIGEvbGliL2xpYnJ0 ZV9yaW5nL3J0ZV9yaW5nX2h0cy5oCisrKyBiL2xpYi9saWJydGVfcmluZy9ydGVfcmluZ19odHMu aApAQCAtMjksNyArMjksMTEgQEAKIGV4dGVybiAiQyIgewogI2VuZGlmCgorI2lmZGVmIFJURV9V U0VfQzExX01FTV9NT0RFTAorI2luY2x1ZGUgPHJ0ZV9yaW5nX2h0c19jMTFfbWVtLmg+CisjZWxz ZQogI2luY2x1ZGUgPHJ0ZV9yaW5nX2h0c19nZW5lcmljLmg+CisjZW5kaWYKCiAvKioKICAqIEBp bnRlcm5hbCBFbnF1ZXVlIHNldmVyYWwgb2JqZWN0cyBvbiB0aGUgSFRTIHJpbmcuCmRpZmYgLS1n aXQgYS9saWIvbGlicnRlX3JpbmcvcnRlX3JpbmdfaHRzX2MxMV9tZW0uaCBiL2xpYi9saWJydGVf cmluZy9ydGVfcmluZ19odHNfYzExX21lbS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAwMC4uMDIxOGQwZTdkCi0tLSAvZGV2L251bGwKKysrIGIvbGliL2xpYnJ0ZV9yaW5nL3J0 ZV9yaW5nX2h0c19jMTFfbWVtLmgKQEAgLTAsMCArMSwyMjIgQEAKKy8qIFNQRFgtTGljZW5zZS1J ZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UKKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMTAtMjAyMCBJ bnRlbCBDb3Jwb3JhdGlvbgorICogQ29weXJpZ2h0IChjKSAyMDA3LTIwMDkgS2lwIE1hY3kga21h Y3lAZnJlZWJzZC5vcmcKKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBEZXJpdmVkIGZyb20g RnJlZUJTRCdzIGJ1ZnJpbmcuaAorICogVXNlZCBhcyBCU0QtMyBMaWNlbnNlZCB3aXRoIHBlcm1p c3Npb24gZnJvbSBLaXAgTWFjeS4KKyAqLworCisjaWZuZGVmIF9SVEVfUklOR19IVFNfQzExX01F TV9IXworI2RlZmluZSBfUlRFX1JJTkdfSFRTX0MxMV9NRU1fSF8KKworLyoqCisgKiBAZmlsZSBy dGVfcmluZ19odHNfYzExX21lbS5oCisgKiBJdCBpcyBub3QgcmVjb21tZW5kZWQgdG8gaW5jbHVk ZSB0aGlzIGZpbGUgZGlyZWN0bHksCisgKiBpbmNsdWRlIDxydGVfcmluZy5oPiBpbnN0ZWFkLgor ICogQ29udGFpbnMgaW50ZXJuYWwgaGVscGVyIGZ1bmN0aW9ucyBmb3IgaGVhZC90YWlsIHN5bmMg KEhUUykgcmluZyBtb2RlLgorICogRm9yIG1vcmUgaW5mb3JtYXRpb24gcGxlYXNlIHJlZmVyIHRv IDxydGVfcmluZ19odHMuaD4uCisgKi8KKworLyoqCisgKiBAaW50ZXJuYWwgZ2V0IGN1cnJlbnQg dGFpbCB2YWx1ZS4KKyAqIENoZWNrIHRoYXQgdXNlciBkaWRuJ3QgcmVxdWVzdCB0byBtb3ZlIHRh aWwgYWJvdmUgdGhlIGhlYWQuCisgKiBJbiB0aGF0IHNpdHVhdGlvbjoKKyAqIC0gcmV0dXJuIHpl cm8sIHRoYXQgd2lsbCBjYXVzZSBhYm9ydCBhbnkgcGVuZGluZyBjaGFuZ2VzIGFuZAorICogICBy ZXR1cm4gaGVhZCB0byBpdHMgcHJldmlvdXMgcG9zaXRpb24uCisgKiAtIHRocm93IGFuIGFzc2Vy dCBpbiBkZWJ1ZyBtb2RlLgorICovCitzdGF0aWMgX19ydGVfYWx3YXlzX2lubGluZSB1aW50MzJf dAorX19ydGVfcmluZ19odHNfZ2V0X3RhaWwoc3RydWN0IHJ0ZV9yaW5nX2h0c19oZWFkdGFpbCAq aHQsIHVpbnQzMl90ICp0YWlsLAorIHVpbnQzMl90IG51bSkKK3sKKyB1aW50MzJfdCBuOworIHVu aW9uIHJ0ZV9yaW5nX2h0X3BvcyBwOworCisgcC5yYXcgPSBfX2F0b21pY19sb2FkX24oJmh0LT5o dC5yYXcsIF9fQVRPTUlDX1JFTEFYRUQpOworIG4gPSBwLnBvcy5oZWFkIC0gcC5wb3MudGFpbDsK KworIFJURV9BU1NFUlQobiA+PSBudW0pOworIG51bSA9IChuID49IG51bSkgPyBudW0gOiAwOwor CisgKnRhaWwgPSBwLnBvcy50YWlsOworIHJldHVybiBudW07Cit9CisKKy8qKgorICogQGludGVy bmFsIHNldCBuZXcgdmFsdWVzIGZvciBoZWFkIGFuZCB0YWlsIGFzIG9uZSBhdG9taWMgNjQgYml0 IG9wZXJhdGlvbi4KKyAqIFNob3VsZCBiZSB1c2VkIG9ubHkgaW4gY29uanVuY3Rpb24gd2l0aCBf X3J0ZV9yaW5nX2h0c19nZXRfdGFpbC4KKyAqLworc3RhdGljIF9fcnRlX2Fsd2F5c19pbmxpbmUg dm9pZAorX19ydGVfcmluZ19odHNfc2V0X2hlYWRfdGFpbChzdHJ1Y3QgcnRlX3JpbmdfaHRzX2hl YWR0YWlsICpodCwgdWludDMyX3QgdGFpbCwKKyB1aW50MzJfdCBudW0sIHVpbnQzMl90IGVucXVl dWUpCit7CisgdW5pb24gcnRlX3JpbmdfaHRfcG9zIHA7CisKKyBSVEVfU0VUX1VTRUQoZW5xdWV1 ZSk7CisKKyBwLnBvcy5oZWFkID0gdGFpbCArIG51bTsKKyBwLnBvcy50YWlsID0gcC5wb3MuaGVh ZDsKKworIF9fYXRvbWljX3N0b3JlX24oJmh0LT5odC5yYXcsIHAucmF3LCBfX0FUT01JQ19SRUxF QVNFKTsKK30KKworc3RhdGljIF9fcnRlX2Fsd2F5c19pbmxpbmUgdm9pZAorX19ydGVfcmluZ19o dHNfdXBkYXRlX3RhaWwoc3RydWN0IHJ0ZV9yaW5nX2h0c19oZWFkdGFpbCAqaHQsIHVpbnQzMl90 IG51bSwKKyB1aW50MzJfdCBlbnF1ZXVlKQoreworIHVpbnQzMl90IHRhaWw7CisKKyBudW0gPSBf X3J0ZV9yaW5nX2h0c19nZXRfdGFpbChodCwgJnRhaWwsIG51bSk7CisgX19ydGVfcmluZ19odHNf c2V0X2hlYWRfdGFpbChodCwgdGFpbCwgbnVtLCBlbnF1ZXVlKTsKK30KKworLyoqCisgKiBAaW50 ZXJuYWwgd2FpdHMgdGlsbCB0YWlsIHdpbGwgYmVjb21lIGVxdWFsIHRvIGhlYWQuCisgKiBNZWFu cyBubyB3cml0ZXIvcmVhZGVyIGlzIGFjdGl2ZSBmb3IgdGhhdCByaW5nLgorICogU3VwcG9zZSB0 byB3b3JrIGFzIHNlcmlhbGl6YXRpb24gcG9pbnQuCisgKi8KK3N0YXRpYyBfX3J0ZV9hbHdheXNf aW5saW5lIHZvaWQKK19fcnRlX3JpbmdfaHRzX2hlYWRfd2FpdChjb25zdCBzdHJ1Y3QgcnRlX3Jp bmdfaHRzX2hlYWR0YWlsICpodCwKKyAgdW5pb24gcnRlX3JpbmdfaHRfcG9zICpwKQoreworIHAt PnJhdyA9IF9fYXRvbWljX2xvYWRfbigmaHQtPmh0LnJhdywgX19BVE9NSUNfQUNRVUlSRSk7CisK KyB3aGlsZSAocC0+cG9zLmhlYWQgIT0gcC0+cG9zLnRhaWwpIHsKKyAgcnRlX3BhdXNlKCk7Cisg IHAtPnJhdyA9IF9fYXRvbWljX2xvYWRfbigmaHQtPmh0LnJhdywgX19BVE9NSUNfQUNRVUlSRSk7 CisgfQorfQorCisvKioKKyAqIEBpbnRlcm5hbCBUaGlzIGZ1bmN0aW9uIHVwZGF0ZXMgdGhlIHBy b2R1Y2VyIGhlYWQgZm9yIGVucXVldWUKKyAqCisgKiBAcGFyYW0gcgorICogICBBIHBvaW50ZXIg dG8gdGhlIHJpbmcgc3RydWN0dXJlCisgKiBAcGFyYW0gaXNfc3AKKyAqICAgSW5kaWNhdGVzIHdo ZXRoZXIgbXVsdGktcHJvZHVjZXIgcGF0aCBpcyBuZWVkZWQgb3Igbm90CisgKiBAcGFyYW0gbgor ICogICBUaGUgbnVtYmVyIG9mIGVsZW1lbnRzIHdlIHdpbGwgd2FudCB0byBlbnF1ZXVlLCBpLmUu IGhvdyBmYXIgc2hvdWxkIHRoZQorICogICBoZWFkIGJlIG1vdmVkCisgKiBAcGFyYW0gYmVoYXZp b3IKKyAqICAgUlRFX1JJTkdfUVVFVUVfRklYRUQ6ICAgIEVucXVldWUgYSBmaXhlZCBudW1iZXIg b2YgaXRlbXMgZnJvbSBhIHJpbmcKKyAqICAgUlRFX1JJTkdfUVVFVUVfVkFSSUFCTEU6IEVucXVl dWUgYXMgbWFueSBpdGVtcyBhcyBwb3NzaWJsZSBmcm9tIHJpbmcKKyAqIEBwYXJhbSBvbGRfaGVh ZAorICogICBSZXR1cm5zIGhlYWQgdmFsdWUgYXMgaXQgd2FzIGJlZm9yZSB0aGUgbW92ZSwgaS5l LiB3aGVyZSBlbnF1ZXVlIHN0YXJ0cworICogQHBhcmFtIG5ld19oZWFkCisgKiAgIFJldHVybnMg dGhlIGN1cnJlbnQvbmV3IGhlYWQgdmFsdWUgaS5lLiB3aGVyZSBlbnF1ZXVlIGZpbmlzaGVzCisg KiBAcGFyYW0gZnJlZV9lbnRyaWVzCisgKiAgIFJldHVybnMgdGhlIGFtb3VudCBvZiBmcmVlIHNw YWNlIGluIHRoZSByaW5nIEJFRk9SRSBoZWFkIHdhcyBtb3ZlZAorICogQHJldHVybgorICogICBB Y3R1YWwgbnVtYmVyIG9mIG9iamVjdHMgZW5xdWV1ZWQuCisgKiAgIElmIGJlaGF2aW9yID09IFJU RV9SSU5HX1FVRVVFX0ZJWEVELCB0aGlzIHdpbGwgYmUgMCBvciBuIG9ubHkuCisgKi8KK3N0YXRp YyBfX3J0ZV9hbHdheXNfaW5saW5lIHVuc2lnbmVkIGludAorX19ydGVfcmluZ19odHNfbW92ZV9w cm9kX2hlYWQoc3RydWN0IHJ0ZV9yaW5nICpyLCB1bnNpZ25lZCBpbnQgbnVtLAorIGVudW0gcnRl X3JpbmdfcXVldWVfYmVoYXZpb3IgYmVoYXZpb3IsIHVpbnQzMl90ICpvbGRfaGVhZCwKKyB1aW50 MzJfdCAqZnJlZV9lbnRyaWVzKQoreworIHVpbnQzMl90IG47CisgdW5pb24gcnRlX3JpbmdfaHRf cG9zIG5wLCBvcDsKKworIGNvbnN0IHVpbnQzMl90IGNhcGFjaXR5ID0gci0+Y2FwYWNpdHk7CisK KyBkbyB7CisgIC8qIFJlc2V0IG4gdG8gdGhlIGluaXRpYWwgYnVyc3QgY291bnQgKi8KKyAgbiA9 IG51bTsKKworICAvKiB3YWl0IGZvciB0YWlsIHRvIGJlIGVxdWFsIHRvIGhlYWQsICwgYWNxdWly ZSBwb2ludCAqLworICBfX3J0ZV9yaW5nX2h0c19oZWFkX3dhaXQoJnItPmh0c19wcm9kLCAmb3Ap OworCisgIC8qCisgICAqICBUaGUgc3VidHJhY3Rpb24gaXMgZG9uZSBiZXR3ZWVuIHR3byB1bnNp Z25lZCAzMmJpdHMgdmFsdWUKKyAgICogKHRoZSByZXN1bHQgaXMgYWx3YXlzIG1vZHVsbyAzMiBi aXRzIGV2ZW4gaWYgd2UgaGF2ZQorICAgKiAqb2xkX2hlYWQgPiBjb25zX3RhaWwpLiBTbyAnZnJl ZV9lbnRyaWVzJyBpcyBhbHdheXMgYmV0d2VlbiAwCisgICAqIGFuZCBjYXBhY2l0eSAod2hpY2gg aXMgPCBzaXplKS4KKyAgICovCisgICpmcmVlX2VudHJpZXMgPSBjYXBhY2l0eSArIHItPmNvbnMu dGFpbCAtIG9wLnBvcy5oZWFkOworCisgIC8qIGNoZWNrIHRoYXQgd2UgaGF2ZSBlbm91Z2ggcm9v bSBpbiByaW5nICovCisgIGlmICh1bmxpa2VseShuID4gKmZyZWVfZW50cmllcykpCisgICBuID0g KGJlaGF2aW9yID09IFJURV9SSU5HX1FVRVVFX0ZJWEVEKSA/CisgICAgIDAgOiAqZnJlZV9lbnRy aWVzOworCisgIGlmIChuID09IDApCisgICBicmVhazsKKworICBucC5wb3MudGFpbCA9IG9wLnBv cy50YWlsOworICBucC5wb3MuaGVhZCA9IG9wLnBvcy5oZWFkICsgbjsKKworIH0gd2hpbGUgKF9f YXRvbWljX2NvbXBhcmVfZXhjaGFuZ2Vfbigmci0+aHRzX3Byb2QuaHQucmF3LAorICAgJm9wLnJh dywgbnAucmF3LAorICAgMCwgX19BVE9NSUNfUkVMRUFTRSwgX19BVE9NSUNfUkVMQVhFRCkgPT0g MCk7CisKKyAqb2xkX2hlYWQgPSBvcC5wb3MuaGVhZDsKKyByZXR1cm4gbjsKK30KKworLyoqCisg KiBAaW50ZXJuYWwgVGhpcyBmdW5jdGlvbiB1cGRhdGVzIHRoZSBjb25zdW1lciBoZWFkIGZvciBk ZXF1ZXVlCisgKgorICogQHBhcmFtIHIKKyAqICAgQSBwb2ludGVyIHRvIHRoZSByaW5nIHN0cnVj dHVyZQorICogQHBhcmFtIGlzX3NjCisgKiAgIEluZGljYXRlcyB3aGV0aGVyIG11bHRpLWNvbnN1 bWVyIHBhdGggaXMgbmVlZGVkIG9yIG5vdAorICogQHBhcmFtIG4KKyAqICAgVGhlIG51bWJlciBv ZiBlbGVtZW50cyB3ZSB3aWxsIHdhbnQgdG8gZW5xdWV1ZSwgaS5lLiBob3cgZmFyIHNob3VsZCB0 aGUKKyAqICAgaGVhZCBiZSBtb3ZlZAorICogQHBhcmFtIGJlaGF2aW9yCisgKiAgIFJURV9SSU5H X1FVRVVFX0ZJWEVEOiAgICBEZXF1ZXVlIGEgZml4ZWQgbnVtYmVyIG9mIGl0ZW1zIGZyb20gYSBy aW5nCisgKiAgIFJURV9SSU5HX1FVRVVFX1ZBUklBQkxFOiBEZXF1ZXVlIGFzIG1hbnkgaXRlbXMg YXMgcG9zc2libGUgZnJvbSByaW5nCisgKiBAcGFyYW0gb2xkX2hlYWQKKyAqICAgUmV0dXJucyBo ZWFkIHZhbHVlIGFzIGl0IHdhcyBiZWZvcmUgdGhlIG1vdmUsIGkuZS4gd2hlcmUgZGVxdWV1ZSBz dGFydHMKKyAqIEBwYXJhbSBuZXdfaGVhZAorICogICBSZXR1cm5zIHRoZSBjdXJyZW50L25ldyBo ZWFkIHZhbHVlIGkuZS4gd2hlcmUgZGVxdWV1ZSBmaW5pc2hlcworICogQHBhcmFtIGVudHJpZXMK KyAqICAgUmV0dXJucyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgaW4gdGhlIHJpbmcgQkVGT1JFIGhl YWQgd2FzIG1vdmVkCisgKiBAcmV0dXJuCisgKiAgIC0gQWN0dWFsIG51bWJlciBvZiBvYmplY3Rz IGRlcXVldWVkLgorICogICAgIElmIGJlaGF2aW9yID09IFJURV9SSU5HX1FVRVVFX0ZJWEVELCB0 aGlzIHdpbGwgYmUgMCBvciBuIG9ubHkuCisgKi8KK3N0YXRpYyBfX3J0ZV9hbHdheXNfaW5saW5l IHVuc2lnbmVkIGludAorX19ydGVfcmluZ19odHNfbW92ZV9jb25zX2hlYWQoc3RydWN0IHJ0ZV9y aW5nICpyLCB1bnNpZ25lZCBpbnQgbnVtLAorIGVudW0gcnRlX3JpbmdfcXVldWVfYmVoYXZpb3Ig YmVoYXZpb3IsIHVpbnQzMl90ICpvbGRfaGVhZCwKKyB1aW50MzJfdCAqZW50cmllcykKK3sKKyB1 aW50MzJfdCBuOworIHVuaW9uIHJ0ZV9yaW5nX2h0X3BvcyBucCwgb3A7CisKKyAvKiBtb3ZlIGNv bnMuaGVhZCBhdG9taWNhbGx5ICovCisgZG8geworICAvKiBSZXN0b3JlIG4gYXMgaXQgbWF5IGNo YW5nZSBldmVyeSBsb29wICovCisgIG4gPSBudW07CisKKyAgLyogd2FpdCBmb3IgdGFpbCB0byBi ZSBlcXVhbCB0byBoZWFkICovCisgIF9fcnRlX3JpbmdfaHRzX2hlYWRfd2FpdCgmci0+aHRzX2Nv bnMsICZvcCk7CisKKyAgLyogVGhlIHN1YnRyYWN0aW9uIGlzIGRvbmUgYmV0d2VlbiB0d28gdW5z aWduZWQgMzJiaXRzIHZhbHVlCisgICAqICh0aGUgcmVzdWx0IGlzIGFsd2F5cyBtb2R1bG8gMzIg Yml0cyBldmVuIGlmIHdlIGhhdmUKKyAgICogY29uc19oZWFkID4gcHJvZF90YWlsKS4gU28gJ2Vu dHJpZXMnIGlzIGFsd2F5cyBiZXR3ZWVuIDAKKyAgICogYW5kIHNpemUocmluZyktMS4KKyAgICov CisgICplbnRyaWVzID0gci0+cHJvZC50YWlsIC0gb3AucG9zLmhlYWQ7CisKKyAgLyogU2V0IHRo ZSBhY3R1YWwgZW50cmllcyBmb3IgZGVxdWV1ZSAqLworICBpZiAobiA+ICplbnRyaWVzKQorICAg biA9IChiZWhhdmlvciA9PSBSVEVfUklOR19RVUVVRV9GSVhFRCkgPyAwIDogKmVudHJpZXM7CisK KyAgaWYgKHVubGlrZWx5KG4gPT0gMCkpCisgICBicmVhazsKKworICBucC5wb3MudGFpbCA9IG9w LnBvcy50YWlsOworICBucC5wb3MuaGVhZCA9IG9wLnBvcy5oZWFkICsgbjsKKworIH0gd2hpbGUg KF9fYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2Vfbigmci0+aHRzX2NvbnMuaHQucmF3LAorICAgJm9w LnJhdywgbnAucmF3LAorICAgMCwgX19BVE9NSUNfUkVMRUFTRSwgX19BVE9NSUNfUkVMQVhFRCkg PT0gMCk7CisKKyAqb2xkX2hlYWQgPSBvcC5wb3MuaGVhZDsKKyByZXR1cm4gbjsKK30KKworI2Vu ZGlmIC8qIF9SVEVfUklOR19IVFNfQzExX01FTV9IXyAqLwpkaWZmIC0tZ2l0IGEvbGliL2xpYnJ0 ZV9yaW5nL3J0ZV9yaW5nX2h0c19lbGVtLmggYi9saWIvbGlicnRlX3JpbmcvcnRlX3JpbmdfaHRz X2VsZW0uaAppbmRleCAzNGYwZDEyMWQuLjFlOWE0OWM3YSAxMDA2NDQKLS0tIGEvbGliL2xpYnJ0 ZV9yaW5nL3J0ZV9yaW5nX2h0c19lbGVtLmgKKysrIGIvbGliL2xpYnJ0ZV9yaW5nL3J0ZV9yaW5n X2h0c19lbGVtLmgKQEAgLTI0LDcgKzI0LDExIEBACiBleHRlcm4gIkMiIHsKICNlbmRpZgoKKyNp ZmRlZiBSVEVfVVNFX0MxMV9NRU1fTU9ERUwKKyNpbmNsdWRlIDxydGVfcmluZ19odHNfYzExX21l bS5oPgorI2Vsc2UKICNpbmNsdWRlIDxydGVfcmluZ19odHNfZ2VuZXJpYy5oPgorI2VuZGlmCgog LyoqCiAgKiBAaW50ZXJuYWwgRW5xdWV1ZSBzZXZlcmFsIG9iamVjdHMgb24gdGhlIEhUUyByaW5n LgpkaWZmIC0tZ2l0IGEvbGliL2xpYnJ0ZV9yaW5nL3J0ZV9yaW5nX3J0cy5oIGIvbGliL2xpYnJ0 ZV9yaW5nL3J0ZV9yaW5nX3J0cy5oCmluZGV4IDE4NDA0ZmU0OC4uMjhiMmQyNWY1IDEwMDY0NAot LS0gYS9saWIvbGlicnRlX3JpbmcvcnRlX3JpbmdfcnRzLmgKKysrIGIvbGliL2xpYnJ0ZV9yaW5n L3J0ZV9yaW5nX3J0cy5oCkBAIC01NSw3ICs1NSwxMSBAQAogZXh0ZXJuICJDIiB7CiAjZW5kaWYK CisjaWZkZWYgUlRFX1VTRV9DMTFfTUVNX01PREVMCisjaW5jbHVkZSA8cnRlX3JpbmdfcnRzX2Mx MV9tZW0uaD4KKyNlbHNlCiAjaW5jbHVkZSA8cnRlX3JpbmdfcnRzX2dlbmVyaWMuaD4KKyNlbmRp ZgoKIC8qKgogICogQGludGVybmFsIEVucXVldWUgc2V2ZXJhbCBvYmplY3RzIG9uIHRoZSBSVFMg cmluZy4KZGlmZiAtLWdpdCBhL2xpYi9saWJydGVfcmluZy9ydGVfcmluZ19ydHNfYzExX21lbS5o IGIvbGliL2xpYnJ0ZV9yaW5nL3J0ZV9yaW5nX3J0c19jMTFfbWVtLmgKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMDAwLi5iNzI5MDE0OTcKLS0tIC9kZXYvbnVsbAorKysgYi9saWIv bGlicnRlX3JpbmcvcnRlX3JpbmdfcnRzX2MxMV9tZW0uaApAQCAtMCwwICsxLDE5OCBAQAorLyog U1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZQorICoKKyAqIENvcHlyaWdodCAo YykgMjAxMC0yMDE3IEludGVsIENvcnBvcmF0aW9uCisgKiBDb3B5cmlnaHQgKGMpIDIwMDctMjAw OSBLaXAgTWFjeSBrbWFjeUBmcmVlYnNkLm9yZworICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq IERlcml2ZWQgZnJvbSBGcmVlQlNEJ3MgYnVmcmluZy5oCisgKiBVc2VkIGFzIEJTRC0zIExpY2Vu c2VkIHdpdGggcGVybWlzc2lvbiBmcm9tIEtpcCBNYWN5LgorICovCisKKyNpZm5kZWYgX1JURV9S SU5HX1JUU19DMTFfTUVNX0hfCisjZGVmaW5lIF9SVEVfUklOR19SVFNfQzExX01FTV9IXworCisv KioKKyAqIEBmaWxlIHJ0ZV9yaW5nX3J0c19jMTFfbWVtLmgKKyAqIEl0IGlzIG5vdCByZWNvbW1l bmRlZCB0byBpbmNsdWRlIHRoaXMgZmlsZSBkaXJlY3RseSwKKyAqIGluY2x1ZGUgPHJ0ZV9yaW5n Lmg+IGluc3RlYWQuCisgKiBDb250YWlucyBpbnRlcm5hbCBoZWxwZXIgZnVuY3Rpb25zIGZvciBS ZWxheGVkIFRhaWwgU3luYyAoUlRTKSByaW5nIG1vZGUuCisgKiBGb3IgbW9yZSBpbmZvcm1hdGlv biBwbGVhc2UgcmVmZXIgdG8gPHJ0ZV9yaW5nX3J0cy5oPi4KKyAqLworCisvKioKKyAqIEBpbnRl cm5hbCBUaGlzIGZ1bmN0aW9uIHVwZGF0ZXMgdGFpbCB2YWx1ZXMuCisgKi8KK3N0YXRpYyBfX3J0 ZV9hbHdheXNfaW5saW5lIHZvaWQKK19fcnRlX3JpbmdfcnRzX3VwZGF0ZV90YWlsKHN0cnVjdCBy dGVfcmluZ19ydHNfaGVhZHRhaWwgKmh0KQoreworIHVuaW9uIHJ0ZV9yaW5nX2h0X3Bvc2NudCBo LCBvdCwgbnQ7CisKKyAvKgorICAqIElmIHRoZXJlIGFyZSBvdGhlciBlbnF1ZXVlcy9kZXF1ZXVl cyBpbiBwcm9ncmVzcyB0aGF0CisgICogbWlnaHQgcHJlY2VkZWQgdXMsIHRoZW4gZG9uJ3QgdXBk YXRlIHRhaWwgd2l0aCBuZXcgdmFsdWUuCisgICovCisKKyBvdC5yYXcgPSBfX2F0b21pY19sb2Fk X24oJmh0LT50YWlsLnJhdywgX19BVE9NSUNfQUNRVUlSRSk7CisKKyBkbyB7CisgIC8qIG9uIDMy LWJpdCBzeXN0ZW1zIHdlIGhhdmUgdG8gZG8gYXRvbWljIHJlYWQgaGVyZSAqLworICBoLnJhdyA9 IF9fYXRvbWljX2xvYWRfbigmaHQtPmhlYWQucmF3LCBfX0FUT01JQ19SRUxBWEVEKTsKKworICBu dC5yYXcgPSBvdC5yYXc7CisgIGlmICgrK250LnZhbC5jbnQgPT0gaC52YWwuY250KQorICAgbnQu dmFsLnBvcyA9IGgudmFsLnBvczsKKworIH0gd2hpbGUgKF9fYXRvbWljX2NvbXBhcmVfZXhjaGFu Z2VfbigmaHQtPnRhaWwucmF3LCAmb3QucmF3LCBudC5yYXcsCisgICAwLCBfX0FUT01JQ19SRUxF QVNFLCBfX0FUT01JQ19BQ1FVSVJFKSA9PSAwKTsKK30KKworLyoqCisgKiBAaW50ZXJuYWwgVGhp cyBmdW5jdGlvbiB3YWl0cyB0aWxsIGhlYWQvdGFpbCBkaXN0YW5jZSB3b3VsZG4ndAorICogZXhj ZWVkIHByZS1kZWZpbmVkIG1heCB2YWx1ZS4KKyAqLworc3RhdGljIF9fcnRlX2Fsd2F5c19pbmxp bmUgdm9pZAorX19ydGVfcmluZ19ydHNfaGVhZF93YWl0KGNvbnN0IHN0cnVjdCBydGVfcmluZ19y dHNfaGVhZHRhaWwgKmh0LAorIHVuaW9uIHJ0ZV9yaW5nX2h0X3Bvc2NudCAqaCkKK3sKKyB1aW50 MzJfdCBtYXg7CisKKyBtYXggPSBodC0+aHRkX21heDsKKyBoLT5yYXcgPSBfX2F0b21pY19sb2Fk X24oJmh0LT5oZWFkLnJhdywgX19BVE9NSUNfQUNRVUlSRSk7CisKKyB3aGlsZSAoaC0+dmFsLnBv cyAtIGh0LT50YWlsLnZhbC5wb3MgPiBtYXgpIHsKKyAgcnRlX3BhdXNlKCk7CisgIGgtPnJhdyA9 IF9fYXRvbWljX2xvYWRfbigmaHQtPmhlYWQucmF3LCBfX0FUT01JQ19BQ1FVSVJFKTsKKyB9Cit9 CisKKy8qKgorICogQGludGVybmFsIFRoaXMgZnVuY3Rpb24gdXBkYXRlcyB0aGUgcHJvZHVjZXIg aGVhZCBmb3IgZW5xdWV1ZS4KKyAqCisgKiBAcGFyYW0gcgorICogICBBIHBvaW50ZXIgdG8gdGhl IHJpbmcgc3RydWN0dXJlCisgKiBAcGFyYW0gaXNfc3AKKyAqICAgSW5kaWNhdGVzIHdoZXRoZXIg bXVsdGktcHJvZHVjZXIgcGF0aCBpcyBuZWVkZWQgb3Igbm90CisgKiBAcGFyYW0gbgorICogICBU aGUgbnVtYmVyIG9mIGVsZW1lbnRzIHdlIHdpbGwgd2FudCB0byBlbnF1ZXVlLCBpLmUuIGhvdyBm YXIgc2hvdWxkIHRoZQorICogICBoZWFkIGJlIG1vdmVkCisgKiBAcGFyYW0gYmVoYXZpb3IKKyAq ICAgUlRFX1JJTkdfUVVFVUVfRklYRUQ6ICAgIEVucXVldWUgYSBmaXhlZCBudW1iZXIgb2YgaXRl bXMgZnJvbSBhIHJpbmcKKyAqICAgUlRFX1JJTkdfUVVFVUVfVkFSSUFCTEU6IEVucXVldWUgYXMg bWFueSBpdGVtcyBhcyBwb3NzaWJsZSBmcm9tIHJpbmcKKyAqIEBwYXJhbSBvbGRfaGVhZAorICog ICBSZXR1cm5zIGhlYWQgdmFsdWUgYXMgaXQgd2FzIGJlZm9yZSB0aGUgbW92ZSwgaS5lLiB3aGVy ZSBlbnF1ZXVlIHN0YXJ0cworICogQHBhcmFtIG5ld19oZWFkCisgKiAgIFJldHVybnMgdGhlIGN1 cnJlbnQvbmV3IGhlYWQgdmFsdWUgaS5lLiB3aGVyZSBlbnF1ZXVlIGZpbmlzaGVzCisgKiBAcGFy YW0gZnJlZV9lbnRyaWVzCisgKiAgIFJldHVybnMgdGhlIGFtb3VudCBvZiBmcmVlIHNwYWNlIGlu IHRoZSByaW5nIEJFRk9SRSBoZWFkIHdhcyBtb3ZlZAorICogQHJldHVybgorICogICBBY3R1YWwg bnVtYmVyIG9mIG9iamVjdHMgZW5xdWV1ZWQuCisgKiAgIElmIGJlaGF2aW9yID09IFJURV9SSU5H X1FVRVVFX0ZJWEVELCB0aGlzIHdpbGwgYmUgMCBvciBuIG9ubHkuCisgKi8KK3N0YXRpYyBfX3J0 ZV9hbHdheXNfaW5saW5lIHVpbnQzMl90CitfX3J0ZV9yaW5nX3J0c19tb3ZlX3Byb2RfaGVhZChz dHJ1Y3QgcnRlX3JpbmcgKnIsIHVpbnQzMl90IG51bSwKKyBlbnVtIHJ0ZV9yaW5nX3F1ZXVlX2Jl aGF2aW9yIGJlaGF2aW9yLCB1aW50MzJfdCAqb2xkX2hlYWQsCisgdWludDMyX3QgKmZyZWVfZW50 cmllcykKK3sKKyB1aW50MzJfdCBuOworIHVuaW9uIHJ0ZV9yaW5nX2h0X3Bvc2NudCBuaCwgb2g7 CisKKyBjb25zdCB1aW50MzJfdCBjYXBhY2l0eSA9IHItPmNhcGFjaXR5OworCisgZG8geworICAv KiBSZXNldCBuIHRvIHRoZSBpbml0aWFsIGJ1cnN0IGNvdW50ICovCisgIG4gPSBudW07CisKKyAg LyogcmVhZCBwcm9kIGhlYWQgKG1heSBzcGluIG9uIHByb2QgdGFpbCwgYWNxdWlyZSBwb2ludCkg Ki8KKyAgX19ydGVfcmluZ19ydHNfaGVhZF93YWl0KCZyLT5ydHNfcHJvZCwgJm9oKTsKKworICAv KgorICAgKiAgVGhlIHN1YnRyYWN0aW9uIGlzIGRvbmUgYmV0d2VlbiB0d28gdW5zaWduZWQgMzJi aXRzIHZhbHVlCisgICAqICh0aGUgcmVzdWx0IGlzIGFsd2F5cyBtb2R1bG8gMzIgYml0cyBldmVu IGlmIHdlIGhhdmUKKyAgICogKm9sZF9oZWFkID4gY29uc190YWlsKS4gU28gJ2ZyZWVfZW50cmll cycgaXMgYWx3YXlzIGJldHdlZW4gMAorICAgKiBhbmQgY2FwYWNpdHkgKHdoaWNoIGlzIDwgc2l6 ZSkuCisgICAqLworICAqZnJlZV9lbnRyaWVzID0gY2FwYWNpdHkgKyByLT5jb25zLnRhaWwgLSBv aC52YWwucG9zOworCisgIC8qIGNoZWNrIHRoYXQgd2UgaGF2ZSBlbm91Z2ggcm9vbSBpbiByaW5n ICovCisgIGlmICh1bmxpa2VseShuID4gKmZyZWVfZW50cmllcykpCisgICBuID0gKGJlaGF2aW9y ID09IFJURV9SSU5HX1FVRVVFX0ZJWEVEKSA/CisgICAgIDAgOiAqZnJlZV9lbnRyaWVzOworCisg IGlmIChuID09IDApCisgICBicmVhazsKKworICBuaC52YWwucG9zID0gb2gudmFsLnBvcyArIG47 CisgIG5oLnZhbC5jbnQgPSBvaC52YWwuY250ICsgMTsKKworIH0gd2hpbGUgKF9fYXRvbWljX2Nv bXBhcmVfZXhjaGFuZ2Vfbigmci0+cnRzX3Byb2QuaGVhZC5yYXcsCisgICAmb2gucmF3LCBuaC5y YXcsCisgICAwLCBfX0FUT01JQ19SRUxFQVNFLCBfX0FUT01JQ19SRUxBWEVEKSA9PSAwKTsKKwor ICpvbGRfaGVhZCA9IG9oLnZhbC5wb3M7CisgcmV0dXJuIG47Cit9CisKKy8qKgorICogQGludGVy bmFsIFRoaXMgZnVuY3Rpb24gdXBkYXRlcyB0aGUgY29uc3VtZXIgaGVhZCBmb3IgZGVxdWV1ZQor ICoKKyAqIEBwYXJhbSByCisgKiAgIEEgcG9pbnRlciB0byB0aGUgcmluZyBzdHJ1Y3R1cmUKKyAq IEBwYXJhbSBpc19zYworICogICBJbmRpY2F0ZXMgd2hldGhlciBtdWx0aS1jb25zdW1lciBwYXRo IGlzIG5lZWRlZCBvciBub3QKKyAqIEBwYXJhbSBuCisgKiAgIFRoZSBudW1iZXIgb2YgZWxlbWVu dHMgd2Ugd2lsbCB3YW50IHRvIGVucXVldWUsIGkuZS4gaG93IGZhciBzaG91bGQgdGhlCisgKiAg IGhlYWQgYmUgbW92ZWQKKyAqIEBwYXJhbSBiZWhhdmlvcgorICogICBSVEVfUklOR19RVUVVRV9G SVhFRDogICAgRGVxdWV1ZSBhIGZpeGVkIG51bWJlciBvZiBpdGVtcyBmcm9tIGEgcmluZworICog ICBSVEVfUklOR19RVUVVRV9WQVJJQUJMRTogRGVxdWV1ZSBhcyBtYW55IGl0ZW1zIGFzIHBvc3Np YmxlIGZyb20gcmluZworICogQHBhcmFtIG9sZF9oZWFkCisgKiAgIFJldHVybnMgaGVhZCB2YWx1 ZSBhcyBpdCB3YXMgYmVmb3JlIHRoZSBtb3ZlLCBpLmUuIHdoZXJlIGRlcXVldWUgc3RhcnRzCisg KiBAcGFyYW0gbmV3X2hlYWQKKyAqICAgUmV0dXJucyB0aGUgY3VycmVudC9uZXcgaGVhZCB2YWx1 ZSBpLmUuIHdoZXJlIGRlcXVldWUgZmluaXNoZXMKKyAqIEBwYXJhbSBlbnRyaWVzCisgKiAgIFJl dHVybnMgdGhlIG51bWJlciBvZiBlbnRyaWVzIGluIHRoZSByaW5nIEJFRk9SRSBoZWFkIHdhcyBt b3ZlZAorICogQHJldHVybgorICogICAtIEFjdHVhbCBudW1iZXIgb2Ygb2JqZWN0cyBkZXF1ZXVl ZC4KKyAqICAgICBJZiBiZWhhdmlvciA9PSBSVEVfUklOR19RVUVVRV9GSVhFRCwgdGhpcyB3aWxs IGJlIDAgb3IgbiBvbmx5LgorICovCitzdGF0aWMgX19ydGVfYWx3YXlzX2lubGluZSB1bnNpZ25l ZCBpbnQKK19fcnRlX3JpbmdfcnRzX21vdmVfY29uc19oZWFkKHN0cnVjdCBydGVfcmluZyAqciwg dWludDMyX3QgbnVtLAorIGVudW0gcnRlX3JpbmdfcXVldWVfYmVoYXZpb3IgYmVoYXZpb3IsIHVp bnQzMl90ICpvbGRfaGVhZCwKKyB1aW50MzJfdCAqZW50cmllcykKK3sKKyB1aW50MzJfdCBuOwor IHVuaW9uIHJ0ZV9yaW5nX2h0X3Bvc2NudCBuaCwgb2g7CisKKyAvKiBtb3ZlIGNvbnMuaGVhZCBh dG9taWNhbGx5ICovCisgZG8geworICAvKiBSZXN0b3JlIG4gYXMgaXQgbWF5IGNoYW5nZSBldmVy eSBsb29wICovCisgIG4gPSBudW07CisKKyAgLyogcmVhZCBjb25zIGhlYWQgKG1heSBzcGluIG9u IGNvbnMgdGFpbCwgYWNxdWlyZSBwb2ludCkgKi8KKyAgX19ydGVfcmluZ19ydHNfaGVhZF93YWl0 KCZyLT5ydHNfY29ucywgJm9oKTsKKworICAvKiBUaGUgc3VidHJhY3Rpb24gaXMgZG9uZSBiZXR3 ZWVuIHR3byB1bnNpZ25lZCAzMmJpdHMgdmFsdWUKKyAgICogKHRoZSByZXN1bHQgaXMgYWx3YXlz IG1vZHVsbyAzMiBiaXRzIGV2ZW4gaWYgd2UgaGF2ZQorICAgKiBjb25zX2hlYWQgPiBwcm9kX3Rh aWwpLiBTbyAnZW50cmllcycgaXMgYWx3YXlzIGJldHdlZW4gMAorICAgKiBhbmQgc2l6ZShyaW5n KS0xLgorICAgKi8KKyAgKmVudHJpZXMgPSByLT5wcm9kLnRhaWwgLSBvaC52YWwucG9zOworCisg IC8qIFNldCB0aGUgYWN0dWFsIGVudHJpZXMgZm9yIGRlcXVldWUgKi8KKyAgaWYgKG4gPiAqZW50 cmllcykKKyAgIG4gPSAoYmVoYXZpb3IgPT0gUlRFX1JJTkdfUVVFVUVfRklYRUQpID8gMCA6ICpl bnRyaWVzOworCisgIGlmICh1bmxpa2VseShuID09IDApKQorICAgYnJlYWs7CisKKyAgbmgudmFs LnBvcyA9IG9oLnZhbC5wb3MgKyBuOworICBuaC52YWwuY250ID0gb2gudmFsLmNudCArIDE7CisK KyB9IHdoaWxlIChfX2F0b21pY19jb21wYXJlX2V4Y2hhbmdlX24oJnItPnJ0c19jb25zLmhlYWQu cmF3LAorICAgJm9oLnJhdywgbmgucmF3LAorICAgMSwgX19BVE9NSUNfUkVMRUFTRSwgX19BVE9N SUNfUkVMQVhFRCkgPT0gMCk7CisKKyAqb2xkX2hlYWQgPSBvaC52YWwucG9zOworIHJldHVybiBu OworfQorCisjZW5kaWYgLyogX1JURV9SSU5HX1JUU19DMTFfTUVNX0hfICovCmRpZmYgLS1naXQg YS9saWIvbGlicnRlX3JpbmcvcnRlX3JpbmdfcnRzX2VsZW0uaCBiL2xpYi9saWJydGVfcmluZy9y dGVfcmluZ19ydHNfZWxlbS5oCmluZGV4IDcxYTMzMWIyMy4uMjNkOGFlZWM3IDEwMDY0NAotLS0g YS9saWIvbGlicnRlX3JpbmcvcnRlX3JpbmdfcnRzX2VsZW0uaAorKysgYi9saWIvbGlicnRlX3Jp bmcvcnRlX3JpbmdfcnRzX2VsZW0uaApAQCAtMjQsNyArMjQsMTEgQEAKIGV4dGVybiAiQyIgewog I2VuZGlmCgorI2lmZGVmIFJURV9VU0VfQzExX01FTV9NT0RFTAorI2luY2x1ZGUgPHJ0ZV9yaW5n X3J0c19jMTFfbWVtLmg+CisjZWxzZQogI2luY2x1ZGUgPHJ0ZV9yaW5nX3J0c19nZW5lcmljLmg+ CisjZW5kaWYKCiAvKioKICAqIEBpbnRlcm5hbCBFbnF1ZXVlIHNldmVyYWwgb2JqZWN0cyBvbiB0 aGUgUlRTIHJpbmcuCi0tIAoyLjE3LjE=