From mboxrd@z Thu Jan 1 00:00:00 1970 From: Thomas Hellstrom Subject: [PATCH 1/2] locking: Implement an algorithm choice for Wound-Wait mutexes Date: Wed, 13 Jun 2018 09:47:44 +0200 Message-ID: <20180613074745.14750-2-thellstrom@vmware.com> References: <20180613074745.14750-1-thellstrom@vmware.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from NAM05-CO1-obe.outbound.protection.outlook.com (mail-eopbgr720070.outbound.protection.outlook.com [40.107.72.70]) by gabe.freedesktop.org (Postfix) with ESMTPS id CA6ED6E600 for ; Wed, 13 Jun 2018 07:48:39 +0000 (UTC) In-Reply-To: <20180613074745.14750-1-thellstrom@vmware.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org Cc: Kate Stewart , Thomas Hellstrom , Davidlohr Bueso , Jonathan Corbet , Peter Zijlstra , linux-doc@vger.kernel.org, Josh Triplett , linaro-mm-sig@lists.linaro.org, David Airlie , Greg Kroah-Hartman , Ingo Molnar , Philippe Ombredanne , Thomas Gleixner , "Paul E. McKenney" , linux-media@vger.kernel.org List-Id: dri-devel@lists.freedesktop.org VGhlIGN1cnJlbnQgV291bmQtV2FpdCBtdXRleCBhbGdvcml0aG0gaXMgYWN0dWFsbHkgbm90IFdv dW5kLVdhaXQgYnV0CldhaXQtRGllLiBJbXBsZW1lbnQgYWxzbyBXb3VuZC1XYWl0IGFzIGEgcGVy LXd3LWNsYXNzIGNob2ljZS4gV291bmQtV2FpdAppcywgY29udHJhcnkgdG8gV2FpdC1EaWUgYSBw cmVlbXB0aXZlIGFsZ29yaXRobSBhbmQgaXMga25vd24gdG8gZ2VuZXJhdGUKZmV3ZXIgYmFja29m ZnMuIFRlc3RpbmcgcmV2ZWFscyB0aGF0IHRoaXMgaXMgdHJ1ZSBpZiB0aGUKbnVtYmVyIG9mIHNp bXVsdGFuZW91cyBjb250ZW5kaW5nIHRyYW5zYWN0aW9ucyBpcyBzbWFsbC4KQXMgdGhlIG51bWJl ciBvZiBzaW11bHRhbmVvdXMgY29udGVuZGluZyB0aHJlYWRzIGluY3JlYXNlcywgV2FpdC1Xb3Vu ZApiZWNvbWVzIGluZmVyaW9yIHRvIFdhaXQtRGllIGluIHRlcm1zIG9mIGVsYXBzZWQgdGltZS4K UG9zc2libHkgZHVlIHRvIHRoZSBsYXJnZXIgbnVtYmVyIG9mIGhlbGQgbG9ja3Mgb2Ygc2xlZXBp bmcgdHJhbnNhY3Rpb25zLgoKVXBkYXRlIGRvY3VtZW50YXRpb24gYW5kIGNhbGxlcnMuCgpUaW1p bmdzIHVzaW5nIGdpdDovL3Blb3BsZS5mcmVlZGVza3RvcC5vcmcvfnRob21hc2gvd3dfbXV0ZXhf dGVzdAp0YWcgcGF0Y2gtMTgtMDYtMDQKCkVhY2ggdGhyZWFkIHJ1bnMgMTAwMDAwIGJhdGNoZXMg b2YgbG9jayAvIHVubG9jayA4MDAgd3cgbXV0ZXhlcyByYW5kb21seQpjaG9zZW4gb3V0IG9mIDEw MDAwMC4gRm91ciBjb3JlIEludGVsIHg4Nl82NDoKCkFsZ29yaXRobSAgICAjdGhyZWFkcyAgICAg ICBSb2xsYmFja3MgIHRpbWUKV291bmQtV2FpdCAgIDQgICAgICAgICAgICAgIH4xMDAgICAgICAg fjE3cy4KV2FpdC1EaWUgICAgIDQgICAgICAgICAgICAgIH4xNTAwMDAgICAgfjE5cy4KV291bmQt V2FpdCAgIDE2ICAgICAgICAgICAgIH4zNjAwMDAgICAgfjEwOXMuCldhaXQtRGllICAgICAxNiAg ICAgICAgICAgICB+NDUwMDAwICAgIH44MnMuCgpDYzogUGV0ZXIgWmlqbHN0cmEgPHBldGVyekBp bmZyYWRlYWQub3JnPgpDYzogSW5nbyBNb2xuYXIgPG1pbmdvQHJlZGhhdC5jb20+CkNjOiBKb25h dGhhbiBDb3JiZXQgPGNvcmJldEBsd24ubmV0PgpDYzogR3VzdGF2byBQYWRvdmFuIDxndXN0YXZv QHBhZG92YW4ub3JnPgpDYzogTWFhcnRlbiBMYW5raG9yc3QgPG1hYXJ0ZW4ubGFua2hvcnN0QGxp bnV4LmludGVsLmNvbT4KQ2M6IFNlYW4gUGF1bCA8c2VhbnBhdWxAY2hyb21pdW0ub3JnPgpDYzog RGF2aWQgQWlybGllIDxhaXJsaWVkQGxpbnV4LmllPgpDYzogRGF2aWRsb2hyIEJ1ZXNvIDxkYXZl QHN0Z29sYWJzLm5ldD4KQ2M6ICJQYXVsIEUuIE1jS2VubmV5IiA8cGF1bG1ja0BsaW51eC52bmV0 LmlibS5jb20+CkNjOiBKb3NoIFRyaXBsZXR0IDxqb3NoQGpvc2h0cmlwbGV0dC5vcmc+CkNjOiBU aG9tYXMgR2xlaXhuZXIgPHRnbHhAbGludXRyb25peC5kZT4KQ2M6IEthdGUgU3Rld2FydCA8a3N0 ZXdhcnRAbGludXhmb3VuZGF0aW9uLm9yZz4KQ2M6IFBoaWxpcHBlIE9tYnJlZGFubmUgPHBvbWJy ZWRhbm5lQG5leGIuY29tPgpDYzogR3JlZyBLcm9haC1IYXJ0bWFuIDxncmVna2hAbGludXhmb3Vu ZGF0aW9uLm9yZz4KQ2M6IGxpbnV4LWRvY0B2Z2VyLmtlcm5lbC5vcmcKQ2M6IGxpbnV4LW1lZGlh QHZnZXIua2VybmVsLm9yZwpDYzogbGluYXJvLW1tLXNpZ0BsaXN0cy5saW5hcm8ub3JnClNpZ25l ZC1vZmYtYnk6IFRob21hcyBIZWxsc3Ryb20gPHRoZWxsc3Ryb21Adm13YXJlLmNvbT4KLS0tCiBE b2N1bWVudGF0aW9uL2xvY2tpbmcvd3ctbXV0ZXgtZGVzaWduLnR4dCB8IDU3ICsrKysrKysrKysr KysrLS0tLQogZHJpdmVycy9kbWEtYnVmL3Jlc2VydmF0aW9uLmMgICAgICAgICAgICAgfCAgMiAr LQogZHJpdmVycy9ncHUvZHJtL2RybV9tb2Rlc2V0X2xvY2suYyAgICAgICAgfCAgMiArLQogaW5j bHVkZS9saW51eC93d19tdXRleC5oICAgICAgICAgICAgICAgICAgfCAxOSArKysrLS0KIGtlcm5l bC9sb2NraW5nL2xvY2t0b3J0dXJlLmMgICAgICAgICAgICAgIHwgIDIgKy0KIGtlcm5lbC9sb2Nr aW5nL211dGV4LmMgICAgICAgICAgICAgICAgICAgIHwgOTggKysrKysrKysrKysrKysrKysrKysr KysrKysrKy0tLQoga2VybmVsL2xvY2tpbmcvdGVzdC13d19tdXRleC5jICAgICAgICAgICAgfCAg MiArLQogbGliL2xvY2tpbmctc2VsZnRlc3QuYyAgICAgICAgICAgICAgICAgICAgfCAgMiArLQog OCBmaWxlcyBjaGFuZ2VkLCAxNTIgaW5zZXJ0aW9ucygrKSwgMzIgZGVsZXRpb25zKC0pCgpkaWZm IC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9sb2NraW5nL3d3LW11dGV4LWRlc2lnbi50eHQgYi9Eb2N1 bWVudGF0aW9uL2xvY2tpbmcvd3ctbXV0ZXgtZGVzaWduLnR4dAppbmRleCAzNGMzYTFiNTBiOWEu LjI5Yzg1NjIzYjU1MSAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9sb2NraW5nL3d3LW11dGV4 LWRlc2lnbi50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9sb2NraW5nL3d3LW11dGV4LWRlc2lnbi50 eHQKQEAgLTEsNCArMSw0IEBACi1XYWl0L1dvdW5kIERlYWRsb2NrLVByb29mIE11dGV4IERlc2ln bgorV291bmQvV2FpdCBEZWFkbG9jay1Qcm9vZiBNdXRleCBEZXNpZ24KID09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09CiAKIFBsZWFzZSByZWFkIG11dGV4LWRlc2lnbi50eHQg Zmlyc3QsIGFzIGl0IGFwcGxpZXMgdG8gd2FpdC93b3VuZCBtdXRleGVzIHRvby4KQEAgLTMyLDEw ICszMiwyMyBAQCB0aGUgb2xkZXN0IHRhc2spIHdpbnMsIGFuZCB0aGUgb25lIHdpdGggdGhlIGhp Z2hlciByZXNlcnZhdGlvbiBpZCAoaS5lLiB0aGUKIHlvdW5nZXIgdGFzaykgdW5sb2NrcyBhbGwg b2YgdGhlIGJ1ZmZlcnMgdGhhdCBpdCBoYXMgYWxyZWFkeSBsb2NrZWQsIGFuZCB0aGVuCiB0cmll cyBhZ2Fpbi4KIAotSW4gdGhlIFJEQk1TIGxpdGVyYXR1cmUgdGhpcyBkZWFkbG9jayBoYW5kbGlu ZyBhcHByb2FjaCBpcyBjYWxsZWQgd2FpdC93b3VuZDoKLVRoZSBvbGRlciB0YXNrcyB3YWl0cyB1 bnRpbCBpdCBjYW4gYWNxdWlyZSB0aGUgY29udGVuZGVkIGxvY2suIFRoZSB5b3VuZ2VyIHRhc2tz Ci1uZWVkcyB0byBiYWNrIG9mZiBhbmQgZHJvcCBhbGwgdGhlIGxvY2tzIGl0IGlzIGN1cnJlbnRs eSBob2xkaW5nLCBpLmUuIHRoZQoteW91bmdlciB0YXNrIGlzIHdvdW5kZWQuCitJbiB0aGUgUkRC TVMgbGl0ZXJhdHVyZSwgYSByZXNlcnZhdGlvbiB0aWNrZXQgaXMgYXNzb2NpYXRlZCB3aXRoIGEg dHJhbnNhY3Rpb24uCithbmQgdGhlIGRlYWRsb2NrIGhhbmRsaW5nIGFwcHJvYWNoIGlzIGNhbGxl ZCBXYWl0LURpZS4gVGhlIG5hbWUgaXMgYmFzZWQgb24KK3RoZSBhY3Rpb25zIG9mIGEgbG9ja2lu ZyB0aHJlYWQgd2hlbiBpdCBlbmNvdW50ZXJzIGFuIGFscmVhZHkgbG9ja2VkIG11dGV4LgorSWYg dGhlIHRyYW5zYWN0aW9uIGhvbGRpbmcgdGhlIGxvY2sgaXMgeW91bmdlciwgdGhlIGxvY2tpbmcg dHJhbnNhY3Rpb24gd2FpdHMuCitJZiB0aGUgdHJhbnNhY3Rpb24gaG9sZGluZyB0aGUgbG9jayBp cyBvbGRlciwgdGhlIGxvY2tpbmcgdHJhbnNhY3Rpb24gYmFja3Mgb2ZmCithbmQgZGllcy4gSGVu Y2UgV2FpdC1EaWUuCitUaGVyZSBpcyBhbHNvIGFub3RoZXIgYWxnb3JpdGhtIGNhbGxlZCBXb3Vu ZC1XYWl0OgorSWYgdGhlIHRyYW5zYWN0aW9uIGhvbGRpbmcgdGhlIGxvY2sgaXMgeW91bmdlciwg dGhlIGxvY2tpbmcgdHJhbnNhY3Rpb24KK3ByZWVtcHRzIHRoZSB0cmFuc2FjdGlvbiBob2xkaW5n IHRoZSBsb2NrLCByZXF1aXJpbmcgaXQgdG8gYmFjayBvZmYuIEl0CitXb3VuZHMgdGhlIG90aGVy IHRyYW5zYWN0aW9uLgorSWYgdGhlIHRyYW5zYWN0aW9uIGhvbGRpbmcgdGhlIGxvY2sgaXMgb2xk ZXIsIGl0IHdhaXRzIGZvciB0aGUgb3RoZXIKK3RyYW5zYWN0aW9uLiBIZW5jZSBXb3VuZC1XYWl0 LgorVGhlIHR3byBhbGdvcml0aG1zIGFyZSBib3RoIGZhaXIgaW4gdGhhdCBhIHRyYW5zYWN0aW9u IHdpbGwgZXZlbnR1YWxseSBzdWNjZWVkLgorSG93ZXZlciwgdGhlIFdvdW5kLVdhaXQgYWxnb3Jp dGhtIGlzIHR5cGljYWxseSBzdGF0ZWQgdG8gZ2VuZXJhdGUgZmV3ZXIgYmFja29mZnMKK2NvbXBh cmVkIHRvIFdhaXQtRGllLCBidXQgaXMsIG9uIHRoZSBvdGhlciBoYW5kLCBhc3NvY2lhdGVkIHdp dGggbW9yZSB3b3JrIHRoYW4KK1dhaXQtRGllIHdoZW4gcmVjb3ZlcmluZyBmcm9tIGEgYmFja29m Zi4gV291bmQtV2FpdCBpcyBhbHNvIGEgcHJlZW1wdGl2ZQorYWxnb3JpdGhtIHdoaWNoIHJlcXVp cmVzIGEgcmVsaWFibGUgd2F5IHRvIHByZWVtcHQgYW5vdGhlciB0cmFuc2FjdGlvbi4KIAogQ29u Y2VwdHMKIC0tLS0tLS0tCkBAIC00NywxMCArNjAsMTIgQEAgQWNxdWlyZSBjb250ZXh0OiBUbyBl bnN1cmUgZXZlbnR1YWwgZm9yd2FyZCBwcm9ncmVzcyBpdCBpcyBpbXBvcnRhbnQgdGhlIGEgdGFz awogdHJ5aW5nIHRvIGFjcXVpcmUgbG9ja3MgZG9lc24ndCBncmFiIGEgbmV3IHJlc2VydmF0aW9u IGlkLCBidXQga2VlcHMgdGhlIG9uZSBpdAogYWNxdWlyZWQgd2hlbiBzdGFydGluZyB0aGUgbG9j ayBhY3F1aXNpdGlvbi4gVGhpcyB0aWNrZXQgaXMgc3RvcmVkIGluIHRoZQogYWNxdWlyZSBjb250 ZXh0LiBGdXJ0aGVybW9yZSB0aGUgYWNxdWlyZSBjb250ZXh0IGtlZXBzIHRyYWNrIG9mIGRlYnVn Z2luZyBzdGF0ZQotdG8gY2F0Y2ggdy93IG11dGV4IGludGVyZmFjZSBhYnVzZS4KK3RvIGNhdGNo IHcvdyBtdXRleCBpbnRlcmZhY2UgYWJ1c2UuIEFuIGFjcXVpcmUgY29udGV4dCBpcyByZXByZXNl bnRpbmcgYQordHJhbnNhY3Rpb24uCiAKIFcvdyBjbGFzczogSW4gY29udHJhc3QgdG8gbm9ybWFs IG11dGV4ZXMgdGhlIGxvY2sgY2xhc3MgbmVlZHMgdG8gYmUgZXhwbGljaXQgZm9yCi13L3cgbXV0 ZXhlcywgc2luY2UgaXQgaXMgcmVxdWlyZWQgdG8gaW5pdGlhbGl6ZSB0aGUgYWNxdWlyZSBjb250 ZXh0Lgordy93IG11dGV4ZXMsIHNpbmNlIGl0IGlzIHJlcXVpcmVkIHRvIGluaXRpYWxpemUgdGhl IGFjcXVpcmUgY29udGV4dC4gVGhlIGxvY2sKK2NsYXNzIGFsc28gc3BlY2lmaWVzIHdoYXQgYWxn b3JpdGhtIHRvIHVzZSwgV291bmQtV2FpdCBvciBXYWl0LURpZS4KIAogRnVydGhlcm1vcmUgdGhl cmUgYXJlIHRocmVlIGRpZmZlcmVudCBjbGFzcyBvZiB3L3cgbG9jayBhY3F1aXJlIGZ1bmN0aW9u czoKIApAQCAtOTAsMTAgKzEwNSwxNSBAQCBwcm92aWRlZC4KIFVzYWdlCiAtLS0tLQogCitUaGUg YWxnb3JpdGhtIChXYWl0LURpZSB2cyBXb3VuZC1XYWl0KSBpcyBjaG9zZW4gdXNpbmcgdGhlIF9p c193YWl0X2RpZQorYXJndW1lbnQgdG8gREVGSU5FX1dXX0NMQVNTKCkuIEFzIGEgcm91Z2ggcnVs ZSBvZiB0aHVtYiwgdXNlIFdvdW5kLVdhaXQgaWZmIHlvdQordHlwaWNhbGx5IGV4cGVjdCB0aGUg bnVtYmVyIG9mIHNpbXVsdGFuZW91cyBjb21wZXRpbmcgdHJhbnNhY3Rpb25zIHRvIGJlIHNtYWxs LAorYW5kIHRoZSByb2xsYmFjayBjb3N0IGNhbiBiZSBzdWJzdGFudGlhbC4KKwogVGhyZWUgZGlm ZmVyZW50IHdheXMgdG8gYWNxdWlyZSBsb2NrcyB3aXRoaW4gdGhlIHNhbWUgdy93IGNsYXNzLiBD b21tb24KIGRlZmluaXRpb25zIGZvciBtZXRob2RzICMxIGFuZCAjMjoKIAotc3RhdGljIERFRklO RV9XV19DTEFTUyh3d19jbGFzcyk7CitzdGF0aWMgREVGSU5FX1dXX0NMQVNTKHd3X2NsYXNzLCBm YWxzZSk7CiAKIHN0cnVjdCBvYmogewogCXN0cnVjdCB3d19tdXRleCBsb2NrOwpAQCAtMjQzLDcg KzI2Myw3IEBAIHN0cnVjdCBvYmogewogCXN0cnVjdCBsaXN0X2hlYWQgbG9ja2VkX2xpc3Q7CiB9 OwogCi1zdGF0aWMgREVGSU5FX1dXX0NMQVNTKHd3X2NsYXNzKTsKK3N0YXRpYyBERUZJTkVfV1df Q0xBU1Mod3dfY2xhc3MsIGZhbHNlKTsKIAogdm9pZCBfX3VubG9ja19vYmpzKHN0cnVjdCBsaXN0 X2hlYWQgKmxpc3QpCiB7CkBAIC0zMTIsMTIgKzMzMiwyMyBAQCBEZXNpZ246CiAgIFdlIG1haW50 YWluIHRoZSBmb2xsb3dpbmcgaW52YXJpYW50cyBmb3IgdGhlIHdhaXQgbGlzdDoKICAgKDEpIFdh aXRlcnMgd2l0aCBhbiBhY3F1aXJlIGNvbnRleHQgYXJlIHNvcnRlZCBieSBzdGFtcCBvcmRlcjsg d2FpdGVycwogICAgICAgd2l0aG91dCBhbiBhY3F1aXJlIGNvbnRleHQgYXJlIGludGVyc3BlcnNl ZCBpbiBGSUZPIG9yZGVyLgotICAoMikgQW1vbmcgd2FpdGVycyB3aXRoIGNvbnRleHRzLCBvbmx5 IHRoZSBmaXJzdCBvbmUgY2FuIGhhdmUgb3RoZXIgbG9ja3MKLSAgICAgIGFjcXVpcmVkIGFscmVh ZHkgKGN0eC0+YWNxdWlyZWQgPiAwKS4gTm90ZSB0aGF0IHRoaXMgd2FpdGVyIG1heSBjb21lCi0g ICAgICBhZnRlciBvdGhlciB3YWl0ZXJzIHdpdGhvdXQgY29udGV4dHMgaW4gdGhlIGxpc3QuCisg ICgyKSBGb3IgV2FpdC1EaWUsIGFtb25nIHdhaXRlcnMgd2l0aCBjb250ZXh0cywgb25seSB0aGUg Zmlyc3Qgb25lIGNhbiBoYXZlCisgICAgICBvdGhlciBsb2NrcyBhY3F1aXJlZCBhbHJlYWR5IChj dHgtPmFjcXVpcmVkID4gMCkuIE5vdGUgdGhhdCB0aGlzIHdhaXRlcgorICAgICAgbWF5IGNvbWUg YWZ0ZXIgb3RoZXIgd2FpdGVycyB3aXRob3V0IGNvbnRleHRzIGluIHRoZSBsaXN0LgorCisgIFRo ZSBXb3VuZC1XYWl0IHByZWVtcHRpb24gaXMgaW1wbGVtZW50ZWQgd2l0aCBhIGxhenktcHJlZW1w dGlvbiBzY2hlbWU6CisgIFRoZSB3b3VuZGVkIHN0YXR1cyBvZiB0aGUgdHJhbnNhY3Rpb24gaXMg Y2hlY2tlZCBvbmx5IHdoZW4gdGhlcmUgaXMKKyAgY29udGVudGlvbiBmb3IgYSBuZXcgbG9jayBh bmQgaGVuY2UgYSB0cnVlIGNoYW5jZSBvZiBkZWFkbG9jay4gSW4gdGhhdAorICBzaXR1YXRpb24s IGlmIHRoZSB0cmFuc2FjdGlvbiBpcyB3b3VuZGVkLCBpdCBiYWNrcyBvZmYsIGNsZWFycyB0aGUK KyAgd291bmRlZCBzdGF0dXMgYW5kIHJldHJpZXMuIEEgZ3JlYXQgYmVuZWZpdCBvZiBpbXBsZW1l bnRpbmcgcHJlZW1wdGlvbiBpbgorICB0aGlzIHdheSBpcyB0aGF0IHRoZSB3b3VuZGVkIHRyYW5z YWN0aW9uIGNhbiBpZGVudGlmeSBhIGNvbnRlbmRpbmcgbG9jayB0bworICB3YWl0IGZvciBiZWZv cmUgcmVzdGFydGluZyB0aGUgdHJhbnNhY3Rpb24uIEp1c3QgYmxpbmRseSByZXN0YXJ0aW5nIHRo ZQorICB0cmFuc2FjdGlvbiB3b3VsZCBsaWtlbHkgbWFrZSB0aGUgdHJhbnNhY3Rpb24gZW5kIHVw IGluIGEgc2l0dWF0aW9uIHdoZXJlCisgIGl0IHdvdWxkIGhhdmUgdG8gYmFjayBvZmYgYWdhaW4u CiAKICAgSW4gZ2VuZXJhbCwgbm90IG11Y2ggY29udGVudGlvbiBpcyBleHBlY3RlZC4gVGhlIGxv Y2tzIGFyZSB0eXBpY2FsbHkgdXNlZCB0bwotICBzZXJpYWxpemUgYWNjZXNzIHRvIHJlc291cmNl cyBmb3IgZGV2aWNlcy4KKyAgc2VyaWFsaXplIGFjY2VzcyB0byByZXNvdXJjZXMgZm9yIGRldmlj ZXMsIGFuZCBvcHRpbWl6YXRpb24gZm9jdXMgc2hvdWxkCisgIHRoZXJlZm9yZSBiZSBkaXJlY3Rl ZCB0b3dhcmRzIHRoZSB1bmNvbnRlbmRlZCBjYXNlcy4KIAogTG9ja2RlcDoKICAgU3BlY2lhbCBj YXJlIGhhcyBiZWVuIHRha2VuIHRvIHdhcm4gZm9yIGFzIG1hbnkgY2FzZXMgb2YgYXBpIGFidXNl CmRpZmYgLS1naXQgYS9kcml2ZXJzL2RtYS1idWYvcmVzZXJ2YXRpb24uYyBiL2RyaXZlcnMvZG1h LWJ1Zi9yZXNlcnZhdGlvbi5jCmluZGV4IDMxNGViMTA3MWNjZS4uMDM5NTcxYjlmZWExIDEwMDY0 NAotLS0gYS9kcml2ZXJzL2RtYS1idWYvcmVzZXJ2YXRpb24uYworKysgYi9kcml2ZXJzL2RtYS1i dWYvcmVzZXJ2YXRpb24uYwpAQCAtNDYsNyArNDYsNyBAQAogICogd3JpdGUtc2lkZSB1cGRhdGVz LgogICovCiAKLURFRklORV9XV19DTEFTUyhyZXNlcnZhdGlvbl93d19jbGFzcyk7CitERUZJTkVf V1dfQ0xBU1MocmVzZXJ2YXRpb25fd3dfY2xhc3MsIHRydWUpOwogRVhQT1JUX1NZTUJPTChyZXNl cnZhdGlvbl93d19jbGFzcyk7CiAKIHN0cnVjdCBsb2NrX2NsYXNzX2tleSByZXNlcnZhdGlvbl9z ZXFjb3VudF9jbGFzczsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fbW9kZXNldF9s b2NrLmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX21vZGVzZXRfbG9jay5jCmluZGV4IDhhNTEwMDY4 NTg3NS4uZjIyYTdlZjQxZGUxIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX21vZGVz ZXRfbG9jay5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fbW9kZXNldF9sb2NrLmMKQEAgLTcw LDcgKzcwLDcgQEAKICAqIGxpc3RzIGFuZCBsb29rdXAgZGF0YSBzdHJ1Y3R1cmVzLgogICovCiAK LXN0YXRpYyBERUZJTkVfV1dfQ0xBU1MoY3J0Y193d19jbGFzcyk7CitzdGF0aWMgREVGSU5FX1dX X0NMQVNTKGNydGNfd3dfY2xhc3MsIHRydWUpOwogCiAvKioKICAqIGRybV9tb2Rlc2V0X2xvY2tf YWxsIC0gdGFrZSBhbGwgbW9kZXNldCBsb2NrcwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC93 d19tdXRleC5oIGIvaW5jbHVkZS9saW51eC93d19tdXRleC5oCmluZGV4IDM5ZmRhMTk1YmY3OC4u NjI3ODA3N2YyODhiIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L3d3X211dGV4LmgKKysrIGIv aW5jbHVkZS9saW51eC93d19tdXRleC5oCkBAIC04LDYgKzgsOCBAQAogICoKICAqIFdvdW5kL3dh aXQgaW1wbGVtZW50YXRpb246CiAgKiAgQ29weXJpZ2h0IChDKSAyMDEzIENhbm9uaWNhbCBMdGQu CisgKiBDaG9pY2Ugb2YgYWxnb3JpdGhtOgorICogIENvcHlyaWdodCAoQykgMjAxOCBXTVdhcmUg SW5jLgogICoKICAqIFRoaXMgZmlsZSBjb250YWlucyB0aGUgbWFpbiBkYXRhIHN0cnVjdHVyZSBh bmQgQVBJIGRlZmluaXRpb25zLgogICovCkBAIC0yMywxNSArMjUsMTcgQEAgc3RydWN0IHd3X2Ns YXNzIHsKIAlzdHJ1Y3QgbG9ja19jbGFzc19rZXkgbXV0ZXhfa2V5OwogCWNvbnN0IGNoYXIgKmFj cXVpcmVfbmFtZTsKIAljb25zdCBjaGFyICptdXRleF9uYW1lOworCWJvb2wgaXNfd2FpdF9kaWU7 CiB9OwogCiBzdHJ1Y3Qgd3dfYWNxdWlyZV9jdHggewogCXN0cnVjdCB0YXNrX3N0cnVjdCAqdGFz azsKIAl1bnNpZ25lZCBsb25nIHN0YW1wOwogCXVuc2lnbmVkIGFjcXVpcmVkOworCWJvb2wgd291 bmRlZDsKKwlzdHJ1Y3Qgd3dfY2xhc3MgKnd3X2NsYXNzOwogI2lmZGVmIENPTkZJR19ERUJVR19N VVRFWEVTCiAJdW5zaWduZWQgZG9uZV9hY3F1aXJlOwotCXN0cnVjdCB3d19jbGFzcyAqd3dfY2xh c3M7CiAJc3RydWN0IHd3X211dGV4ICpjb250ZW5kaW5nX2xvY2s7CiAjZW5kaWYKICNpZmRlZiBD T05GSUdfREVCVUdfTE9DS19BTExPQwpAQCAtNTgsMTcgKzYyLDE5IEBAIHN0cnVjdCB3d19tdXRl eCB7CiAjIGRlZmluZSBfX1dXX0NMQVNTX01VVEVYX0lOSVRJQUxJWkVSKGxvY2tuYW1lLCBjbGFz cykKICNlbmRpZgogCi0jZGVmaW5lIF9fV1dfQ0xBU1NfSU5JVElBTElaRVIod3dfY2xhc3MpIFwK KyNkZWZpbmUgX19XV19DTEFTU19JTklUSUFMSVpFUih3d19jbGFzcywgX2lzX3dhaXRfZGllKQkg ICAgXAogCQl7IC5zdGFtcCA9IEFUT01JQ19MT05HX0lOSVQoMCkgXAogCQksIC5hY3F1aXJlX25h bWUgPSAjd3dfY2xhc3MgIl9hY3F1aXJlIiBcCi0JCSwgLm11dGV4X25hbWUgPSAjd3dfY2xhc3Mg Il9tdXRleCIgfQorCQksIC5tdXRleF9uYW1lID0gI3d3X2NsYXNzICJfbXV0ZXgiIFwKKwkJLCAu aXNfd2FpdF9kaWUgPSBfaXNfd2FpdF9kaWUgfQogCiAjZGVmaW5lIF9fV1dfTVVURVhfSU5JVElB TElaRVIobG9ja25hbWUsIGNsYXNzKSBcCiAJCXsgLmJhc2UgPSAgX19NVVRFWF9JTklUSUFMSVpF Uihsb2NrbmFtZS5iYXNlKSBcCiAJCV9fV1dfQ0xBU1NfTVVURVhfSU5JVElBTElaRVIobG9ja25h bWUsIGNsYXNzKSB9CiAKLSNkZWZpbmUgREVGSU5FX1dXX0NMQVNTKGNsYXNzbmFtZSkgXAotCXN0 cnVjdCB3d19jbGFzcyBjbGFzc25hbWUgPSBfX1dXX0NMQVNTX0lOSVRJQUxJWkVSKGNsYXNzbmFt ZSkKKyNkZWZpbmUgREVGSU5FX1dXX0NMQVNTKGNsYXNzbmFtZSwgX2lzX3dhaXRfZGllKQkJCVwK KwlzdHJ1Y3Qgd3dfY2xhc3MgY2xhc3NuYW1lID0gX19XV19DTEFTU19JTklUSUFMSVpFUihjbGFz c25hbWUsIFwKKwkJCQkJCQkgICBfaXNfd2FpdF9kaWUpCiAKICNkZWZpbmUgREVGSU5FX1dXX01V VEVYKG11dGV4bmFtZSwgd3dfY2xhc3MpIFwKIAlzdHJ1Y3Qgd3dfbXV0ZXggbXV0ZXhuYW1lID0g X19XV19NVVRFWF9JTklUSUFMSVpFUihtdXRleG5hbWUsIHd3X2NsYXNzKQpAQCAtMTIzLDggKzEy OSw5IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCB3d19hY3F1aXJlX2luaXQoc3RydWN0IHd3X2FjcXVp cmVfY3R4ICpjdHgsCiAJY3R4LT50YXNrID0gY3VycmVudDsKIAljdHgtPnN0YW1wID0gYXRvbWlj X2xvbmdfaW5jX3JldHVybl9yZWxheGVkKCZ3d19jbGFzcy0+c3RhbXApOwogCWN0eC0+YWNxdWly ZWQgPSAwOwotI2lmZGVmIENPTkZJR19ERUJVR19NVVRFWEVTCiAJY3R4LT53d19jbGFzcyA9IHd3 X2NsYXNzOworCWN0eC0+d291bmRlZCA9IGZhbHNlOworI2lmZGVmIENPTkZJR19ERUJVR19NVVRF WEVTCiAJY3R4LT5kb25lX2FjcXVpcmUgPSAwOwogCWN0eC0+Y29udGVuZGluZ19sb2NrID0gTlVM TDsKICNlbmRpZgpkaWZmIC0tZ2l0IGEva2VybmVsL2xvY2tpbmcvbG9ja3RvcnR1cmUuYyBiL2tl cm5lbC9sb2NraW5nL2xvY2t0b3J0dXJlLmMKaW5kZXggNjg1MGZmZDY5MTI1Li43NzhlZDAyNjM4 MmYgMTAwNjQ0Ci0tLSBhL2tlcm5lbC9sb2NraW5nL2xvY2t0b3J0dXJlLmMKKysrIGIva2VybmVs L2xvY2tpbmcvbG9ja3RvcnR1cmUuYwpAQCAtMzY1LDcgKzM2NSw3IEBAIHN0YXRpYyBzdHJ1Y3Qg bG9ja190b3J0dXJlX29wcyBtdXRleF9sb2NrX29wcyA9IHsKIH07CiAKICNpbmNsdWRlIDxsaW51 eC93d19tdXRleC5oPgotc3RhdGljIERFRklORV9XV19DTEFTUyh0b3J0dXJlX3d3X2NsYXNzKTsK K3N0YXRpYyBERUZJTkVfV1dfQ0xBU1ModG9ydHVyZV93d19jbGFzcywgdHJ1ZSk7CiBzdGF0aWMg REVGSU5FX1dXX01VVEVYKHRvcnR1cmVfd3dfbXV0ZXhfMCwgJnRvcnR1cmVfd3dfY2xhc3MpOwog c3RhdGljIERFRklORV9XV19NVVRFWCh0b3J0dXJlX3d3X211dGV4XzEsICZ0b3J0dXJlX3d3X2Ns YXNzKTsKIHN0YXRpYyBERUZJTkVfV1dfTVVURVgodG9ydHVyZV93d19tdXRleF8yLCAmdG9ydHVy ZV93d19jbGFzcyk7CmRpZmYgLS1naXQgYS9rZXJuZWwvbG9ja2luZy9tdXRleC5jIGIva2VybmVs L2xvY2tpbmcvbXV0ZXguYwppbmRleCAyMDQ4MzU5ZjMzZDIuLmI0NDlhMDEyYzZmOSAxMDA2NDQK LS0tIGEva2VybmVsL2xvY2tpbmcvbXV0ZXguYworKysgYi9rZXJuZWwvbG9ja2luZy9tdXRleC5j CkBAIC0yOTAsMTIgKzI5MCw0NyBAQCBfX3d3X2N0eF9zdGFtcF9hZnRlcihzdHJ1Y3Qgd3dfYWNx dWlyZV9jdHggKmEsIHN0cnVjdCB3d19hY3F1aXJlX2N0eCAqYikKIAkgICAgICAgKGEtPnN0YW1w ICE9IGItPnN0YW1wIHx8IGEgPiBiKTsKIH0KIAorLyoKKyAqIFdvdW5kIHRoZSBsb2NrIGhvbGRl ciB0cmFuc2FjdGlvbiBpZiBpdCdzIHlvdW5nZXIgdGhhbiB0aGUgY29udGVuZGluZworICogdHJh bnNhY3Rpb24sIGFuZCB0aGVyZSBpcyBhIHBvc3NpYmlsaXR5IG9mIGEgZGVhZGxvY2suCisgKiBB bHNvIGlmIHRoZSBsb2NrIGhvbGRlciB0cmFuc2FjdGlvbiBpc24ndCB0aGUgY3VycmVudCB0cmFu c2FjdGlvbiwKKyAqIE1ha2Ugc3VyZSBpdCdzIHdva2VuIHVwIGluIGNhc2UgaXQncyBzbGVlcGlu ZyBvbiBhbm90aGVyIHd3IG11dGV4LgorICovCitzdGF0aWMgYm9vbCBfX3d3X211dGV4X3dvdW5k KHN0cnVjdCBtdXRleCAqbG9jaywKKwkJCSAgICAgc3RydWN0IHd3X2FjcXVpcmVfY3R4ICp3d19j dHgsCisJCQkgICAgIHN0cnVjdCB3d19hY3F1aXJlX2N0eCAqaG9sZF9jdHgpCit7CisJc3RydWN0 IHRhc2tfc3RydWN0ICpvd25lciA9CisJCV9fb3duZXJfdGFzayhhdG9taWNfbG9uZ19yZWFkKCZs b2NrLT5vd25lcikpOworCisJbG9ja2RlcF9hc3NlcnRfaGVsZCgmbG9jay0+d2FpdF9sb2NrKTsK KworCWlmIChvd25lciAmJiBob2xkX2N0eCAmJiBfX3d3X2N0eF9zdGFtcF9hZnRlcihob2xkX2N0 eCwgd3dfY3R4KSAmJgorCSAgICB3d19jdHgtPmFjcXVpcmVkID4gMCkgeworCQlXUklURV9PTkNF KGhvbGRfY3R4LT53b3VuZGVkLCB0cnVlKTsKKwkJaWYgKG93bmVyICE9IGN1cnJlbnQpIHsKKwkJ CS8qCisJCQkgKiB3YWtlX3VwX3Byb2Nlc3MoKSBpbnNlcnRzIGEgd3JpdGUgbWVtb3J5IGJhcnJp ZXIgdG8KKwkJCSAqIG1ha2Ugc3VyZSBvd25lciBzZWVzIGl0IGlzIHdvdW5kZWQgYmVmb3JlCisJ CQkgKiBUQVNLX1JVTk5JTkcgaW4gY2FzZSBpdCdzIHNsZWVwaW5nIG9uIGFub3RoZXIKKwkJCSAq IHd3X211dGV4LiBOb3RlIHRoYXQgb3duZXIgcG9pbnRzIHRvIGEgdmFsaWQKKwkJCSAqIHRhc2tf c3RydWN0IGFzIGxvbmcgYXMgd2UgaG9sZCB0aGUgd2FpdF9sb2NrLgorCQkJICovCisJCQl3YWtl X3VwX3Byb2Nlc3Mob3duZXIpOworCQl9CisJCXJldHVybiB0cnVlOworCX0KKworCXJldHVybiBm YWxzZTsKK30KKwogLyoKICAqIFdha2UgdXAgYW55IHdhaXRlcnMgdGhhdCBtYXkgaGF2ZSB0byBi YWNrIG9mZiB3aGVuIHRoZSBsb2NrIGlzIGhlbGQgYnkgdGhlCiAgKiBnaXZlbiBjb250ZXh0Lgog ICoKICAqIER1ZSB0byB0aGUgaW52YXJpYW50cyBvbiB0aGUgd2FpdCBsaXN0LCB0aGlzIGNhbiBv bmx5IGFmZmVjdCB0aGUgZmlyc3QKLSAqIHdhaXRlciB3aXRoIGEgY29udGV4dC4KKyAqIHdhaXRl ciB3aXRoIGEgY29udGV4dCwgdW5sZXNzIHRoZSBXb3VuZC1XYWl0IGFsZ29yaXRobSBpcyB1c2Vk IHdoZXJlCisgKiBhbHNvIHN1YnNlcXVlbnQgd2FpdGVycyB3aXRoIGEgY29udGV4dCBtYWluIHdv dW5kIHRoZSBsb2NrIGhvbGRlci4KICAqCiAgKiBUaGUgY3VycmVudCB0YXNrIG11c3Qgbm90IGJl IG9uIHRoZSB3YWl0IGxpc3QuCiAgKi8KQEAgLTMwMyw2ICszMzgsNyBAQCBzdGF0aWMgdm9pZCBf X3NjaGVkCiBfX3d3X211dGV4X3dha2V1cF9mb3JfYmFja29mZihzdHJ1Y3QgbXV0ZXggKmxvY2ss IHN0cnVjdCB3d19hY3F1aXJlX2N0eCAqd3dfY3R4KQogewogCXN0cnVjdCBtdXRleF93YWl0ZXIg KmN1cjsKKwlib29sIGlzX3dhaXRfZGllID0gd3dfY3R4LT53d19jbGFzcy0+aXNfd2FpdF9kaWU7 CiAKIAlsb2NrZGVwX2Fzc2VydF9oZWxkKCZsb2NrLT53YWl0X2xvY2spOwogCkBAIC0zMTAsMTMg KzM0NiwxNCBAQCBfX3d3X211dGV4X3dha2V1cF9mb3JfYmFja29mZihzdHJ1Y3QgbXV0ZXggKmxv Y2ssIHN0cnVjdCB3d19hY3F1aXJlX2N0eCAqd3dfY3R4KQogCQlpZiAoIWN1ci0+d3dfY3R4KQog CQkJY29udGludWU7CiAKLQkJaWYgKGN1ci0+d3dfY3R4LT5hY3F1aXJlZCA+IDAgJiYKKwkJaWYg KGlzX3dhaXRfZGllICYmIGN1ci0+d3dfY3R4LT5hY3F1aXJlZCA+IDAgJiYKIAkJICAgIF9fd3df Y3R4X3N0YW1wX2FmdGVyKGN1ci0+d3dfY3R4LCB3d19jdHgpKSB7CiAJCQlkZWJ1Z19tdXRleF93 YWtlX3dhaXRlcihsb2NrLCBjdXIpOwogCQkJd2FrZV91cF9wcm9jZXNzKGN1ci0+dGFzayk7CiAJ CX0KIAotCQlicmVhazsKKwkJaWYgKGlzX3dhaXRfZGllIHx8IF9fd3dfbXV0ZXhfd291bmQobG9j aywgY3VyLT53d19jdHgsIHd3X2N0eCkpCisJCQlicmVhazsKIAl9CiB9CiAKQEAgLTMzOCwxMiAr Mzc1LDE3IEBAIHd3X211dGV4X3NldF9jb250ZXh0X2Zhc3RwYXRoKHN0cnVjdCB3d19tdXRleCAq bG9jaywgc3RydWN0IHd3X2FjcXVpcmVfY3R4ICpjdHgpCiAJICogYW5kIGtlZXAgc3Bpbm5pbmcs IG9yIGl0IHdpbGwgYWNxdWlyZSB3YWl0X2xvY2ssIGFkZCBpdHNlbGYKIAkgKiB0byB3YWl0ZXIg bGlzdCBhbmQgc2xlZXAuCiAJICovCi0Jc21wX21iKCk7IC8qIF5eXiAqLworCXNtcF9tYigpOyAv KiBTZWUgY29tbWVudHMgYWJvdmUgYW5kIGJlbG93LiAqLwogCiAJLyoKLQkgKiBDaGVjayBpZiBs b2NrIGlzIGNvbnRlbmRlZCwgaWYgbm90IHRoZXJlIGlzIG5vYm9keSB0byB3YWtlIHVwCisJICog Q2hlY2sgaWYgbG9jayBpcyBjb250ZW5kZWQsIGlmIG5vdCB0aGVyZSBpcyBub2JvZHkgdG8gd2Fr ZSB1cC4KKwkgKiBDaGVja2luZyBNVVRFWF9GTEFHX1dBSVRFUlMgaXMgbm90IGVub3VnaCBoZXJl LCBzaW5jZSB3ZSBuZWVkIHRvCisJICogb3JkZXIgYWdhaW5zdCB0aGUgbG9jay0+Y3R4IGNoZWNr IGluIF9fd3dfbXV0ZXhfd291bmQgY2FsbGVkIGZyb20KKwkgKiBfX3d3X211dGV4X2FkZF93YWl0 ZXIuIFdlIGNhbiB1c2UgbGlzdF9lbXB0eSB3aXRob3V0IHRha2luZyB0aGUKKwkgKiB3YWl0X2xv Y2ssIGdpdmVuIHRoZSBtZW1vcnkgYmFycmllciBhYm92ZSBhbmQgdGhlIGxpc3RfZW1wdHkKKwkg KiBkb2N1bWVudGF0aW9uLgogCSAqLwotCWlmIChsaWtlbHkoIShhdG9taWNfbG9uZ19yZWFkKCZs b2NrLT5iYXNlLm93bmVyKSAmIE1VVEVYX0ZMQUdfV0FJVEVSUykpKQorCWlmIChsaWtlbHkobGlz dF9lbXB0eSgmbG9jay0+YmFzZS53YWl0X2xpc3QpKSkKIAkJcmV0dXJuOwogCiAJLyoKQEAgLTY1 Myw2ICs2OTUsMTcgQEAgX193d19tdXRleF9sb2NrX2NoZWNrX3N0YW1wKHN0cnVjdCBtdXRleCAq bG9jaywgc3RydWN0IG11dGV4X3dhaXRlciAqd2FpdGVyLAogCXN0cnVjdCB3d19hY3F1aXJlX2N0 eCAqaG9sZF9jdHggPSBSRUFEX09OQ0Uod3ctPmN0eCk7CiAJc3RydWN0IG11dGV4X3dhaXRlciAq Y3VyOwogCisJLyoKKwkgKiBJZiB3ZSBtaXNzIGEgd291bmRlZCA9PSB0cnVlIGhlcmUsIHdlIHdp bGwgaGF2ZSBhIHBlbmRpbmcKKwkgKiBUQVNLX1JVTk5JTkcgYW5kIHBpY2sgaXQgdXAgb24gdGhl IG5leHQgc2NoZWR1bGUgZmFsbC10aHJvdWdoLgorCSAqLworCWlmICghY3R4LT53d19jbGFzcy0+ aXNfd2FpdF9kaWUpIHsKKwkJaWYgKFJFQURfT05DRShjdHgtPndvdW5kZWQpKQorCQkJZ290byBk ZWFkbG9jazsKKwkJZWxzZQorCQkJcmV0dXJuIDA7CisJfQorCiAJaWYgKGhvbGRfY3R4ICYmIF9f d3dfY3R4X3N0YW1wX2FmdGVyKGN0eCwgaG9sZF9jdHgpKQogCQlnb3RvIGRlYWRsb2NrOwogCkBA IC02ODMsMTIgKzczNiwxNSBAQCBfX3d3X211dGV4X2FkZF93YWl0ZXIoc3RydWN0IG11dGV4X3dh aXRlciAqd2FpdGVyLAogewogCXN0cnVjdCBtdXRleF93YWl0ZXIgKmN1cjsKIAlzdHJ1Y3QgbGlz dF9oZWFkICpwb3M7CisJYm9vbCBpc193YWl0X2RpZTsKIAogCWlmICghd3dfY3R4KSB7CiAJCWxp c3RfYWRkX3RhaWwoJndhaXRlci0+bGlzdCwgJmxvY2stPndhaXRfbGlzdCk7CiAJCXJldHVybiAw OwogCX0KIAorCWlzX3dhaXRfZGllID0gd3dfY3R4LT53d19jbGFzcy0+aXNfd2FpdF9kaWU7CisK IAkvKgogCSAqIEFkZCB0aGUgd2FpdGVyIGJlZm9yZSB0aGUgZmlyc3Qgd2FpdGVyIHdpdGggYSBo aWdoZXIgc3RhbXAuCiAJICogV2FpdGVycyB3aXRob3V0IGEgY29udGV4dCBhcmUgc2tpcHBlZCB0 byBhdm9pZCBzdGFydmluZwpAQCAtNzAxLDcgKzc1Nyw3IEBAIF9fd3dfbXV0ZXhfYWRkX3dhaXRl cihzdHJ1Y3QgbXV0ZXhfd2FpdGVyICp3YWl0ZXIsCiAKIAkJaWYgKF9fd3dfY3R4X3N0YW1wX2Fm dGVyKHd3X2N0eCwgY3VyLT53d19jdHgpKSB7CiAJCQkvKiBCYWNrIG9mZiBpbW1lZGlhdGVseSBp ZiBuZWNlc3NhcnkuICovCi0JCQlpZiAod3dfY3R4LT5hY3F1aXJlZCA+IDApIHsKKwkJCWlmIChp c193YWl0X2RpZSAmJiB3d19jdHgtPmFjcXVpcmVkID4gMCkgewogI2lmZGVmIENPTkZJR19ERUJV R19NVVRFWEVTCiAJCQkJc3RydWN0IHd3X211dGV4ICp3dzsKIApAQCAtNzIxLDEzICs3NzcsMjYg QEAgX193d19tdXRleF9hZGRfd2FpdGVyKHN0cnVjdCBtdXRleF93YWl0ZXIgKndhaXRlciwKIAkJ ICogV2FrZSB1cCB0aGUgd2FpdGVyIHNvIHRoYXQgaXQgZ2V0cyBhIGNoYW5jZSB0byBiYWNrCiAJ CSAqIG9mZi4KIAkJICovCi0JCWlmIChjdXItPnd3X2N0eC0+YWNxdWlyZWQgPiAwKSB7CisJCWlm IChpc193YWl0X2RpZSAmJiBjdXItPnd3X2N0eC0+YWNxdWlyZWQgPiAwKSB7CiAJCQlkZWJ1Z19t dXRleF93YWtlX3dhaXRlcihsb2NrLCBjdXIpOwogCQkJd2FrZV91cF9wcm9jZXNzKGN1ci0+dGFz ayk7CiAJCX0KIAl9CiAKIAlsaXN0X2FkZF90YWlsKCZ3YWl0ZXItPmxpc3QsIHBvcyk7CisJaWYg KCFpc193YWl0X2RpZSkgeworCQlzdHJ1Y3Qgd3dfbXV0ZXggKnd3ID0gY29udGFpbmVyX29mKGxv Y2ssIHN0cnVjdCB3d19tdXRleCwgYmFzZSk7CisKKwkJLyoKKwkJICogTWFrZSBzdXJlIGEgcmFj aW5nIGxvY2sgdGFrZXIgc2VlcyBhIG5vbi1lbXB0eSB3YWl0aW5nIGxpc3QKKwkJICogYmVmb3Jl IHdlIHJlYWQgd3ctPmN0eCwgc28gdGhhdCBpZiB3ZSBtaXNzIHd3LT5jdHgsIHRoZQorCQkgKiBy YWNpbmcgbG9jayB0YWtlciB3aWxsIGNhbGwgX193d19tdXRleF93YWtlX3VwX2Zvcl9iYWNrb2Zm KCkKKwkJICogYW5kIHdvdW5kIGl0c2VsZi4KKwkJICovCisJCXNtcF9tYigpOworCQlfX3d3X211 dGV4X3dvdW5kKGxvY2ssIHd3X2N0eCwgd3ctPmN0eCk7CisJfQorCiAJcmV0dXJuIDA7CiB9CiAK QEAgLTc1MCw2ICs4MTksMTQgQEAgX19tdXRleF9sb2NrX2NvbW1vbihzdHJ1Y3QgbXV0ZXggKmxv Y2ssIGxvbmcgc3RhdGUsIHVuc2lnbmVkIGludCBzdWJjbGFzcywKIAlpZiAodXNlX3d3X2N0eCAm JiB3d19jdHgpIHsKIAkJaWYgKHVubGlrZWx5KHd3X2N0eCA9PSBSRUFEX09OQ0Uod3ctPmN0eCkp KQogCQkJcmV0dXJuIC1FQUxSRUFEWTsKKworCQkvKgorCQkgKiBSZXNldCB0aGUgd291bmRlZCBm bGFnIGFmdGVyIGEgYmFja29mZi4KKwkJICogTm8gb3RoZXIgcHJvY2VzcyBjYW4gcmFjZSBhbmQg d291bmQgdXMgaGVyZSBzaW5jZSB0aGV5CisJCSAqIGNhbid0IGhhdmUgYSB2YWxpZCBvd25lciBw b2ludGVyIGF0IHRoaXMgdGltZQorCQkgKi8KKwkJaWYgKHd3X2N0eC0+YWNxdWlyZWQgPT0gMCkK KwkJCXd3X2N0eC0+d291bmRlZCA9IGZhbHNlOwogCX0KIAogCXByZWVtcHRfZGlzYWJsZSgpOwpA QCAtODU4LDYgKzkzNSwxMSBAQCBfX211dGV4X2xvY2tfY29tbW9uKHN0cnVjdCBtdXRleCAqbG9j aywgbG9uZyBzdGF0ZSwgdW5zaWduZWQgaW50IHN1YmNsYXNzLAogYWNxdWlyZWQ6CiAJX19zZXRf Y3VycmVudF9zdGF0ZShUQVNLX1JVTk5JTkcpOwogCisJLyogV2Ugc3RvbGUgdGhlIGxvY2suIE5l ZWQgdG8gY2hlY2sgd291bmRlZCBzdGF0dXMuICovCisJaWYgKHVzZV93d19jdHggJiYgd3dfY3R4 ICYmICF3d19jdHgtPnd3X2NsYXNzLT5pc193YWl0X2RpZSAmJgorCSAgICAhX19tdXRleF93YWl0 ZXJfaXNfZmlyc3QobG9jaywgJndhaXRlcikpCisJCV9fd3dfbXV0ZXhfd2FrZXVwX2Zvcl9iYWNr b2ZmKGxvY2ssIHd3X2N0eCk7CisKIAltdXRleF9yZW1vdmVfd2FpdGVyKGxvY2ssICZ3YWl0ZXIs IGN1cnJlbnQpOwogCWlmIChsaWtlbHkobGlzdF9lbXB0eSgmbG9jay0+d2FpdF9saXN0KSkpCiAJ CV9fbXV0ZXhfY2xlYXJfZmxhZyhsb2NrLCBNVVRFWF9GTEFHUyk7CmRpZmYgLS1naXQgYS9rZXJu ZWwvbG9ja2luZy90ZXN0LXd3X211dGV4LmMgYi9rZXJuZWwvbG9ja2luZy90ZXN0LXd3X211dGV4 LmMKaW5kZXggMGU0Y2Q2NGFkMmMwLi5jN2ZjMTEyZDY5MWQgMTAwNjQ0Ci0tLSBhL2tlcm5lbC9s b2NraW5nL3Rlc3Qtd3dfbXV0ZXguYworKysgYi9rZXJuZWwvbG9ja2luZy90ZXN0LXd3X211dGV4 LmMKQEAgLTI2LDcgKzI2LDcgQEAKICNpbmNsdWRlIDxsaW51eC9zbGFiLmg+CiAjaW5jbHVkZSA8 bGludXgvd3dfbXV0ZXguaD4KIAotc3RhdGljIERFRklORV9XV19DTEFTUyh3d19jbGFzcyk7Citz dGF0aWMgREVGSU5FX1dXX0NMQVNTKHd3X2NsYXNzLCB0cnVlKTsKIHN0cnVjdCB3b3JrcXVldWVf c3RydWN0ICp3cTsKIAogc3RydWN0IHRlc3RfbXV0ZXggewpkaWZmIC0tZ2l0IGEvbGliL2xvY2tp bmctc2VsZnRlc3QuYyBiL2xpYi9sb2NraW5nLXNlbGZ0ZXN0LmMKaW5kZXggYjVjMTI5M2NlMTQ3 Li5lNTIwNjVmMmFjYmYgMTAwNjQ0Ci0tLSBhL2xpYi9sb2NraW5nLXNlbGZ0ZXN0LmMKKysrIGIv bGliL2xvY2tpbmctc2VsZnRlc3QuYwpAQCAtMjksNyArMjksNyBAQAogICovCiBzdGF0aWMgdW5z aWduZWQgaW50IGRlYnVnX2xvY2tzX3ZlcmJvc2U7CiAKLXN0YXRpYyBERUZJTkVfV1dfQ0xBU1Mo d3dfbG9ja2RlcCk7CitzdGF0aWMgREVGSU5FX1dXX0NMQVNTKHd3X2xvY2tkZXAsIHRydWUpOwog CiBzdGF0aWMgaW50IF9faW5pdCBzZXR1cF9kZWJ1Z19sb2Nrc192ZXJib3NlKGNoYXIgKnN0cikK IHsKLS0gCjIuMTQuMwoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Au b3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRl dmVsCg==