From mboxrd@z Thu Jan 1 00:00:00 1970 From: Thomas Hellstrom Subject: [PATCH v4 2/3] locking: Implement an algorithm choice for Wound-Wait mutexes Date: Tue, 19 Jun 2018 10:24:44 +0200 Message-ID: <20180619082445.11062-3-thellstrom@vmware.com> References: <20180619082445.11062-1-thellstrom@vmware.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from NAM05-DM3-obe.outbound.protection.outlook.com (mail-dm3nam05on0619.outbound.protection.outlook.com [IPv6:2a01:111:f400:fe51::619]) by gabe.freedesktop.org (Postfix) with ESMTPS id CA2B06E4C0 for ; Tue, 19 Jun 2018 08:26:05 +0000 (UTC) In-Reply-To: <20180619082445.11062-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, peterz@infradead.org Cc: Kate Stewart , Thomas Hellstrom , Davidlohr Bueso , Jonathan Corbet , pv-drivers@vmware.com, linux-doc@vger.kernel.org, Josh Triplett , linaro-mm-sig@lists.linaro.org, David Airlie , Greg Kroah-Hartman , Ingo Molnar , linux-graphics-maintainer@vmware.com, 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 dGVzdAp0YWcgcGF0Y2gtMTgtMDYtMTUKCkVhY2ggdGhyZWFkIHJ1bnMgMTAwMDAwIGJhdGNoZXMg b2YgbG9jayAvIHVubG9jayA4MDAgd3cgbXV0ZXhlcyByYW5kb21seQpjaG9zZW4gb3V0IG9mIDEw MDAwMC4gRm91ciBjb3JlIEludGVsIHg4Nl82NDoKCkFsZ29yaXRobSAgICAjdGhyZWFkcyAgICAg ICBSb2xsYmFja3MgIHRpbWUKV291bmQtV2FpdCAgIDQgICAgICAgICAgICAgIH4xMDAgICAgICAg fjE3cy4KV2FpdC1EaWUgICAgIDQgICAgICAgICAgICAgIH4xNTAwMDAgICAgfjE5cy4KV291bmQt V2FpdCAgIDE2ICAgICAgICAgICAgIH4zNjAwMDAgICAgfjEwOXMuCldhaXQtRGllICAgICAxNiAg ICAgICAgICAgICB+NDUwMDAwICAgIH44MnMuCgpDYzogSW5nbyBNb2xuYXIgPG1pbmdvQHJlZGhh dC5jb20+CkNjOiBKb25hdGhhbiBDb3JiZXQgPGNvcmJldEBsd24ubmV0PgpDYzogR3VzdGF2byBQ YWRvdmFuIDxndXN0YXZvQHBhZG92YW4ub3JnPgpDYzogTWFhcnRlbiBMYW5raG9yc3QgPG1hYXJ0 ZW4ubGFua2hvcnN0QGxpbnV4LmludGVsLmNvbT4KQ2M6IFNlYW4gUGF1bCA8c2VhbnBhdWxAY2hy b21pdW0ub3JnPgpDYzogRGF2aWQgQWlybGllIDxhaXJsaWVkQGxpbnV4LmllPgpDYzogRGF2aWRs b2hyIEJ1ZXNvIDxkYXZlQHN0Z29sYWJzLm5ldD4KQ2M6ICJQYXVsIEUuIE1jS2VubmV5IiA8cGF1 bG1ja0BsaW51eC52bmV0LmlibS5jb20+CkNjOiBKb3NoIFRyaXBsZXR0IDxqb3NoQGpvc2h0cmlw bGV0dC5vcmc+CkNjOiBUaG9tYXMgR2xlaXhuZXIgPHRnbHhAbGludXRyb25peC5kZT4KQ2M6IEth dGUgU3Rld2FydCA8a3N0ZXdhcnRAbGludXhmb3VuZGF0aW9uLm9yZz4KQ2M6IFBoaWxpcHBlIE9t YnJlZGFubmUgPHBvbWJyZWRhbm5lQG5leGIuY29tPgpDYzogR3JlZyBLcm9haC1IYXJ0bWFuIDxn cmVna2hAbGludXhmb3VuZGF0aW9uLm9yZz4KQ2M6IGxpbnV4LWRvY0B2Z2VyLmtlcm5lbC5vcmcK Q2M6IGxpbnV4LW1lZGlhQHZnZXIua2VybmVsLm9yZwpDYzogbGluYXJvLW1tLXNpZ0BsaXN0cy5s aW5hcm8ub3JnCkNvLWF1dGhvcmVkLWJ5OiBQZXRlciBaaWpsc3RyYSA8cGV0ZXJ6QGluZnJhZGVh ZC5vcmc+ClNpZ25lZC1vZmYtYnk6IFRob21hcyBIZWxsc3Ryb20gPHRoZWxsc3Ryb21Adm13YXJl LmNvbT4KCi0tLQp2MjoKKiBVcGRhdGUgQVBJIGFjY29yZGluZyB0byByZXZpZXcgY29tbWVudCBi eSBHcmVnIEtyb2FoLUhhcnRtYW4uCiogQWRkcmVzcyByZXZpZXcgY29tbWVudHMgYnkgUGV0ZXIg WmlqbHN0cmE6CiAgLSBBdm9pZCBfQm9vbCBpbiBjb21wb3NpdGVzCiAgLSBGaXggdHlwbwogIC0g VXNlIF9fbXV0ZXhfb3duZXIoKSB3aGVyZSBhcHBsaWNhYmxlCiAgLSBSZWx5IG9uIGJ1aWx0LWlu IGJhcnJpZXJzIGZvciB0aGUgbWFpbiBsb29wIGV4aXQgY29uZGl0aW9uLAogICAgc3RydWN0IHd3 X2FjcXVpcmVfY3R4Ojp3b3VuZGVkLiBVcGRhdGUgY29kZSBjb21tZW50cy4KICAtIEV4cGxhaW4g dW5sb2NrZWQgdXNlIG9mIGxpc3RfZW1wdHkoKS4KdjM6CiogQWRhcHQgdG8gYW5kIGluY29ycG9y YXRlIGNsZWFudXAgYnkgUGV0ZXIgWmlqbHN0cmEKKiBSZW1vdmUgdW5sb2NrZWQgdXNlIG9mIGxp c3RfZW1wdHkoKS4KdjQ6CiogTW92ZSBjb2RlIHJlbGF0ZWQgdG8gYWRkaW5nIGEgd2FpdGVyIHRv IHRoZSBsb2NrIHdhaXRlciBsaXN0IHRvIGEKICBzZXBhcmF0ZSBmdW5jdGlvbi4KLS0tCiBEb2N1 bWVudGF0aW9uL2xvY2tpbmcvd3ctbXV0ZXgtZGVzaWduLnR4dCB8ICA1NyArKysrKysrKystLQog ZHJpdmVycy9kbWEtYnVmL3Jlc2VydmF0aW9uLmMgICAgICAgICAgICAgfCAgIDIgKy0KIGRyaXZl cnMvZ3B1L2RybS9kcm1fbW9kZXNldF9sb2NrLmMgICAgICAgIHwgICAyICstCiBpbmNsdWRlL2xp bnV4L3d3X211dGV4LmggICAgICAgICAgICAgICAgICB8ICAxNyArKy0KIGtlcm5lbC9sb2NraW5n L2xvY2t0b3J0dXJlLmMgICAgICAgICAgICAgIHwgICAyICstCiBrZXJuZWwvbG9ja2luZy9tdXRl eC5jICAgICAgICAgICAgICAgICAgICB8IDE2NSArKysrKysrKysrKysrKysrKysrKysrKysrKyst LS0KIGtlcm5lbC9sb2NraW5nL3Rlc3Qtd3dfbXV0ZXguYyAgICAgICAgICAgIHwgICAyICstCiBs aWIvbG9ja2luZy1zZWxmdGVzdC5jICAgICAgICAgICAgICAgICAgICB8ICAgMiArLQogOCBmaWxl cyBjaGFuZ2VkLCAyMTMgaW5zZXJ0aW9ucygrKSwgMzYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0 IGEvRG9jdW1lbnRhdGlvbi9sb2NraW5nL3d3LW11dGV4LWRlc2lnbi50eHQgYi9Eb2N1bWVudGF0 aW9uL2xvY2tpbmcvd3ctbXV0ZXgtZGVzaWduLnR4dAppbmRleCAyZmQ3ZjJhMmFmMjEuLmYwZWQ3 YzMwZTY5NSAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9sb2NraW5nL3d3LW11dGV4LWRlc2ln bi50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9sb2NraW5nL3d3LW11dGV4LWRlc2lnbi50eHQKQEAg LTEsNCArMSw0IEBACi1XYWl0L1dvdW5kIERlYWRsb2NrLVByb29mIE11dGV4IERlc2lnbgorV291 bmQvV2FpdCBEZWFkbG9jay1Qcm9vZiBNdXRleCBEZXNpZ24KID09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09CiAKIFBsZWFzZSByZWFkIG11dGV4LWRlc2lnbi50eHQgZmlyc3Qs IGFzIGl0IGFwcGxpZXMgdG8gd2FpdC93b3VuZCBtdXRleGVzIHRvby4KQEAgLTMyLDEwICszMiwy NiBAQCB0aGUgb2xkZXN0IHRhc2spIHdpbnMsIGFuZCB0aGUgb25lIHdpdGggdGhlIGhpZ2hlciBy ZXNlcnZhdGlvbiBpZCAoaS5lLiB0aGUKIHlvdW5nZXIgdGFzaykgdW5sb2NrcyBhbGwgb2YgdGhl IGJ1ZmZlcnMgdGhhdCBpdCBoYXMgYWxyZWFkeSBsb2NrZWQsIGFuZCB0aGVuCiB0cmllcyBhZ2Fp bi4KIAotSW4gdGhlIFJEQk1TIGxpdGVyYXR1cmUgdGhpcyBkZWFkbG9jayBoYW5kbGluZyBhcHBy b2FjaCBpcyBjYWxsZWQgd2FpdC9kaWU6Ci1UaGUgb2xkZXIgdGFza3Mgd2FpdHMgdW50aWwgaXQg Y2FuIGFjcXVpcmUgdGhlIGNvbnRlbmRlZCBsb2NrLiBUaGUgeW91bmdlciB0YXNrcwotbmVlZHMg dG8gYmFjayBvZmYgYW5kIGRyb3AgYWxsIHRoZSBsb2NrcyBpdCBpcyBjdXJyZW50bHkgaG9sZGlu ZywgaS5lLiB0aGUKLXlvdW5nZXIgdGFzayBkaWVzLgorSW4gdGhlIFJEQk1TIGxpdGVyYXR1cmUs IGEgcmVzZXJ2YXRpb24gdGlja2V0IGlzIGFzc29jaWF0ZWQgd2l0aCBhIHRyYW5zYWN0aW9uLgor YW5kIHRoZSBkZWFkbG9jayBoYW5kbGluZyBhcHByb2FjaCBpcyBjYWxsZWQgV2FpdC1EaWUuIFRo ZSBuYW1lIGlzIGJhc2VkIG9uCit0aGUgYWN0aW9ucyBvZiBhIGxvY2tpbmcgdGhyZWFkIHdoZW4g aXQgZW5jb3VudGVycyBhbiBhbHJlYWR5IGxvY2tlZCBtdXRleC4KK0lmIHRoZSB0cmFuc2FjdGlv biBob2xkaW5nIHRoZSBsb2NrIGlzIHlvdW5nZXIsIHRoZSBsb2NraW5nIHRyYW5zYWN0aW9uIHdh aXRzLgorSWYgdGhlIHRyYW5zYWN0aW9uIGhvbGRpbmcgdGhlIGxvY2sgaXMgb2xkZXIsIHRoZSBs b2NraW5nIHRyYW5zYWN0aW9uIGJhY2tzIG9mZgorYW5kIGRpZXMuIEhlbmNlIFdhaXQtRGllLgor VGhlcmUgaXMgYWxzbyBhbm90aGVyIGFsZ29yaXRobSBjYWxsZWQgV291bmQtV2FpdDoKK0lmIHRo ZSB0cmFuc2FjdGlvbiBob2xkaW5nIHRoZSBsb2NrIGlzIHlvdW5nZXIsIHRoZSBsb2NraW5nIHRy YW5zYWN0aW9uCit3b3VuZHMgdGhlIHRyYW5zYWN0aW9uIGhvbGRpbmcgdGhlIGxvY2ssIHJlcXVl c3RpbmcgaXQgdG8gZGllLgorSWYgdGhlIHRyYW5zYWN0aW9uIGhvbGRpbmcgdGhlIGxvY2sgaXMg b2xkZXIsIGl0IHdhaXRzIGZvciB0aGUgb3RoZXIKK3RyYW5zYWN0aW9uLiBIZW5jZSBXb3VuZC1X YWl0LgorVGhlIHR3byBhbGdvcml0aG1zIGFyZSBib3RoIGZhaXIgaW4gdGhhdCBhIHRyYW5zYWN0 aW9uIHdpbGwgZXZlbnR1YWxseSBzdWNjZWVkLgorSG93ZXZlciwgdGhlIFdvdW5kLVdhaXQgYWxn b3JpdGhtIGlzIHR5cGljYWxseSBzdGF0ZWQgdG8gZ2VuZXJhdGUgZmV3ZXIgYmFja29mZnMKK2Nv bXBhcmVkIHRvIFdhaXQtRGllLCBidXQgaXMsIG9uIHRoZSBvdGhlciBoYW5kLCBhc3NvY2lhdGVk IHdpdGggbW9yZSB3b3JrIHRoYW4KK1dhaXQtRGllIHdoZW4gcmVjb3ZlcmluZyBmcm9tIGEgYmFj a29mZi4gV291bmQtV2FpdCBpcyBhbHNvIGEgcHJlZW1wdGl2ZQorYWxnb3JpdGhtIGluIHRoYXQg dHJhbnNhY3Rpb25zIGFyZSB3b3VuZGVkIGJ5IG90aGVyIHRyYW5zYWN0aW9ucywgYW5kIHRoYXQK K3JlcXVpcmVzIGEgcmVsaWFibGUgd2F5IHRvIHBpY2sgdXAgdXAgdGhlIHdvdW5kZWQgY29uZGl0 aW9uIGFuZCBwcmVlbXB0IHRoZQorcnVubmluZyB0cmFuc2FjdGlvbi4gTm90ZSB0aGF0IHRoaXMg aXMgbm90IHRoZSBzYW1lIGFzIHByb2Nlc3MgcHJlZW1wdGlvbi4gQQorV291bmQtV2FpdCB0cmFu c2FjdGlvbiBpcyBjb25zaWRlcmVkIHByZWVtcHRlZCB3aGVuIGl0IGRpZXMgKHJldHVybmluZwor LUVERUFETEspIGZvbGxvd2luZyBhIHdvdW5kLgogCiBDb25jZXB0cwogLS0tLS0tLS0KQEAgLTQ3 LDEwICs2MywxMiBAQCBBY3F1aXJlIGNvbnRleHQ6IFRvIGVuc3VyZSBldmVudHVhbCBmb3J3YXJk IHByb2dyZXNzIGl0IGlzIGltcG9ydGFudCB0aGUgYSB0YXNrCiB0cnlpbmcgdG8gYWNxdWlyZSBs b2NrcyBkb2Vzbid0IGdyYWIgYSBuZXcgcmVzZXJ2YXRpb24gaWQsIGJ1dCBrZWVwcyB0aGUgb25l IGl0CiBhY3F1aXJlZCB3aGVuIHN0YXJ0aW5nIHRoZSBsb2NrIGFjcXVpc2l0aW9uLiBUaGlzIHRp Y2tldCBpcyBzdG9yZWQgaW4gdGhlCiBhY3F1aXJlIGNvbnRleHQuIEZ1cnRoZXJtb3JlIHRoZSBh Y3F1aXJlIGNvbnRleHQga2VlcHMgdHJhY2sgb2YgZGVidWdnaW5nIHN0YXRlCi10byBjYXRjaCB3 L3cgbXV0ZXggaW50ZXJmYWNlIGFidXNlLgordG8gY2F0Y2ggdy93IG11dGV4IGludGVyZmFjZSBh YnVzZS4gQW4gYWNxdWlyZSBjb250ZXh0IGlzIHJlcHJlc2VudGluZyBhCit0cmFuc2FjdGlvbi4K IAogVy93IGNsYXNzOiBJbiBjb250cmFzdCB0byBub3JtYWwgbXV0ZXhlcyB0aGUgbG9jayBjbGFz cyBuZWVkcyB0byBiZSBleHBsaWNpdCBmb3IKLXcvdyBtdXRleGVzLCBzaW5jZSBpdCBpcyByZXF1 aXJlZCB0byBpbml0aWFsaXplIHRoZSBhY3F1aXJlIGNvbnRleHQuCit3L3cgbXV0ZXhlcywgc2lu Y2UgaXQgaXMgcmVxdWlyZWQgdG8gaW5pdGlhbGl6ZSB0aGUgYWNxdWlyZSBjb250ZXh0LiBUaGUg bG9jaworY2xhc3MgYWxzbyBzcGVjaWZpZXMgd2hhdCBhbGdvcml0aG0gdG8gdXNlLCBXb3VuZC1X YWl0IG9yIFdhaXQtRGllLgogCiBGdXJ0aGVybW9yZSB0aGVyZSBhcmUgdGhyZWUgZGlmZmVyZW50 IGNsYXNzIG9mIHcvdyBsb2NrIGFjcXVpcmUgZnVuY3Rpb25zOgogCkBAIC05MCw2ICsxMDgsMTIg QEAgcHJvdmlkZWQuCiBVc2FnZQogLS0tLS0KIAorVGhlIGFsZ29yaXRobSAoV2FpdC1EaWUgdnMg V291bmQtV2FpdCkgaXMgY2hvc2VuIGJ5IHVzaW5nIGVpdGhlcgorREVGSU5FX1dXX0NMQVNTKCkg KFdvdW5kLVdhaXQpIG9yIERFRklORV9XRF9DTEFTUygpIChXYWl0LURpZSkKK0FzIGEgcm91Z2gg cnVsZSBvZiB0aHVtYiwgdXNlIFdvdW5kLVdhaXQgaWZmIHlvdQorZXhwZWN0IHRoZSBudW1iZXIg b2Ygc2ltdWx0YW5lb3VzIGNvbXBldGluZyB0cmFuc2FjdGlvbnMgdG8gYmUgdHlwaWNhbGx5IHNt YWxsLAorYW5kIHlvdSB3YW50IHRvIHJlZHVjZSB0aGUgbnVtYmVyIG9mIHJvbGxiYWNrcy4KKwog VGhyZWUgZGlmZmVyZW50IHdheXMgdG8gYWNxdWlyZSBsb2NrcyB3aXRoaW4gdGhlIHNhbWUgdy93 IGNsYXNzLiBDb21tb24KIGRlZmluaXRpb25zIGZvciBtZXRob2RzICMxIGFuZCAjMjoKIApAQCAt MzEyLDEyICszMzYsMjMgQEAgRGVzaWduOgogICBXZSBtYWludGFpbiB0aGUgZm9sbG93aW5nIGlu dmFyaWFudHMgZm9yIHRoZSB3YWl0IGxpc3Q6CiAgICgxKSBXYWl0ZXJzIHdpdGggYW4gYWNxdWly ZSBjb250ZXh0IGFyZSBzb3J0ZWQgYnkgc3RhbXAgb3JkZXI7IHdhaXRlcnMKICAgICAgIHdpdGhv dXQgYW4gYWNxdWlyZSBjb250ZXh0IGFyZSBpbnRlcnNwZXJzZWQgaW4gRklGTyBvcmRlci4KLSAg KDIpIEFtb25nIHdhaXRlcnMgd2l0aCBjb250ZXh0cywgb25seSB0aGUgZmlyc3Qgb25lIGNhbiBo YXZlIG90aGVyIGxvY2tzCi0gICAgICBhY3F1aXJlZCBhbHJlYWR5IChjdHgtPmFjcXVpcmVkID4g MCkuIE5vdGUgdGhhdCB0aGlzIHdhaXRlciBtYXkgY29tZQotICAgICAgYWZ0ZXIgb3RoZXIgd2Fp dGVycyB3aXRob3V0IGNvbnRleHRzIGluIHRoZSBsaXN0LgorICAoMikgRm9yIFdhaXQtRGllLCBh bW9uZyB3YWl0ZXJzIHdpdGggY29udGV4dHMsIG9ubHkgdGhlIGZpcnN0IG9uZSBjYW4gaGF2ZQor ICAgICAgb3RoZXIgbG9ja3MgYWNxdWlyZWQgYWxyZWFkeSAoY3R4LT5hY3F1aXJlZCA+IDApLiBO b3RlIHRoYXQgdGhpcyB3YWl0ZXIKKyAgICAgIG1heSBjb21lIGFmdGVyIG90aGVyIHdhaXRlcnMg d2l0aG91dCBjb250ZXh0cyBpbiB0aGUgbGlzdC4KKworICBUaGUgV291bmQtV2FpdCBwcmVlbXB0 aW9uIGlzIGltcGxlbWVudGVkIHdpdGggYSBsYXp5LXByZWVtcHRpb24gc2NoZW1lOgorICBUaGUg d291bmRlZCBzdGF0dXMgb2YgdGhlIHRyYW5zYWN0aW9uIGlzIGNoZWNrZWQgb25seSB3aGVuIHRo ZXJlIGlzCisgIGNvbnRlbnRpb24gZm9yIGEgbmV3IGxvY2sgYW5kIGhlbmNlIGEgdHJ1ZSBjaGFu Y2Ugb2YgZGVhZGxvY2suIEluIHRoYXQKKyAgc2l0dWF0aW9uLCBpZiB0aGUgdHJhbnNhY3Rpb24g aXMgd291bmRlZCwgaXQgYmFja3Mgb2ZmLCBjbGVhcnMgdGhlCisgIHdvdW5kZWQgc3RhdHVzIGFu ZCByZXRyaWVzLiBBIGdyZWF0IGJlbmVmaXQgb2YgaW1wbGVtZW50aW5nIHByZWVtcHRpb24gaW4K KyAgdGhpcyB3YXkgaXMgdGhhdCB0aGUgd291bmRlZCB0cmFuc2FjdGlvbiBjYW4gaWRlbnRpZnkg YSBjb250ZW5kaW5nIGxvY2sgdG8KKyAgd2FpdCBmb3IgYmVmb3JlIHJlc3RhcnRpbmcgdGhlIHRy YW5zYWN0aW9uLiBKdXN0IGJsaW5kbHkgcmVzdGFydGluZyB0aGUKKyAgdHJhbnNhY3Rpb24gd291 bGQgbGlrZWx5IG1ha2UgdGhlIHRyYW5zYWN0aW9uIGVuZCB1cCBpbiBhIHNpdHVhdGlvbiB3aGVy ZQorICBpdCB3b3VsZCBoYXZlIHRvIGJhY2sgb2ZmIGFnYWluLgogCiAgIEluIGdlbmVyYWwsIG5v dCBtdWNoIGNvbnRlbnRpb24gaXMgZXhwZWN0ZWQuIFRoZSBsb2NrcyBhcmUgdHlwaWNhbGx5IHVz ZWQgdG8KLSAgc2VyaWFsaXplIGFjY2VzcyB0byByZXNvdXJjZXMgZm9yIGRldmljZXMuCisgIHNl cmlhbGl6ZSBhY2Nlc3MgdG8gcmVzb3VyY2VzIGZvciBkZXZpY2VzLCBhbmQgb3B0aW1pemF0aW9u IGZvY3VzIHNob3VsZAorICB0aGVyZWZvcmUgYmUgZGlyZWN0ZWQgdG93YXJkcyB0aGUgdW5jb250 ZW5kZWQgY2FzZXMuCiAKIExvY2tkZXA6CiAgIFNwZWNpYWwgY2FyZSBoYXMgYmVlbiB0YWtlbiB0 byB3YXJuIGZvciBhcyBtYW55IGNhc2VzIG9mIGFwaSBhYnVzZQpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9kbWEtYnVmL3Jlc2VydmF0aW9uLmMgYi9kcml2ZXJzL2RtYS1idWYvcmVzZXJ2YXRpb24uYwpp bmRleCAzMTRlYjEwNzFjY2UuLjIwYmY5MGY0ZWU2MyAxMDA2NDQKLS0tIGEvZHJpdmVycy9kbWEt YnVmL3Jlc2VydmF0aW9uLmMKKysrIGIvZHJpdmVycy9kbWEtYnVmL3Jlc2VydmF0aW9uLmMKQEAg LTQ2LDcgKzQ2LDcgQEAKICAqIHdyaXRlLXNpZGUgdXBkYXRlcy4KICAqLwogCi1ERUZJTkVfV1df Q0xBU1MocmVzZXJ2YXRpb25fd3dfY2xhc3MpOworREVGSU5FX1dEX0NMQVNTKHJlc2VydmF0aW9u X3d3X2NsYXNzKTsKIEVYUE9SVF9TWU1CT0wocmVzZXJ2YXRpb25fd3dfY2xhc3MpOwogCiBzdHJ1 Y3QgbG9ja19jbGFzc19rZXkgcmVzZXJ2YXRpb25fc2VxY291bnRfY2xhc3M7CmRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vZHJtX21vZGVzZXRfbG9jay5jIGIvZHJpdmVycy9ncHUvZHJtL2Ry bV9tb2Rlc2V0X2xvY2suYwppbmRleCA4YTUxMDA2ODU4NzUuLjYzOGJlMmViNjdiNCAxMDA2NDQK LS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9tb2Rlc2V0X2xvY2suYworKysgYi9kcml2ZXJzL2dw dS9kcm0vZHJtX21vZGVzZXRfbG9jay5jCkBAIC03MCw3ICs3MCw3IEBACiAgKiBsaXN0cyBhbmQg bG9va3VwIGRhdGEgc3RydWN0dXJlcy4KICAqLwogCi1zdGF0aWMgREVGSU5FX1dXX0NMQVNTKGNy dGNfd3dfY2xhc3MpOworc3RhdGljIERFRklORV9XRF9DTEFTUyhjcnRjX3d3X2NsYXNzKTsKIAog LyoqCiAgKiBkcm1fbW9kZXNldF9sb2NrX2FsbCAtIHRha2UgYWxsIG1vZGVzZXQgbG9ja3MKZGlm ZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvd3dfbXV0ZXguaCBiL2luY2x1ZGUvbGludXgvd3dfbXV0 ZXguaAppbmRleCBmODJmY2UyMjI5YzguLjNhZjdjMGUwM2JlNSAxMDA2NDQKLS0tIGEvaW5jbHVk ZS9saW51eC93d19tdXRleC5oCisrKyBiL2luY2x1ZGUvbGludXgvd3dfbXV0ZXguaApAQCAtOCw2 ICs4LDggQEAKICAqCiAgKiBXYWl0L0RpZSBpbXBsZW1lbnRhdGlvbjoKICAqICBDb3B5cmlnaHQg KEMpIDIwMTMgQ2Fub25pY2FsIEx0ZC4KKyAqIENob2ljZSBvZiBhbGdvcml0aG06CisgKiAgQ29w eXJpZ2h0IChDKSAyMDE4IFdNV2FyZSBJbmMuCiAgKgogICogVGhpcyBmaWxlIGNvbnRhaW5zIHRo ZSBtYWluIGRhdGEgc3RydWN0dXJlIGFuZCBBUEkgZGVmaW5pdGlvbnMuCiAgKi8KQEAgLTIzLDEy ICsyNSwxNSBAQCBzdHJ1Y3Qgd3dfY2xhc3MgewogCXN0cnVjdCBsb2NrX2NsYXNzX2tleSBtdXRl eF9rZXk7CiAJY29uc3QgY2hhciAqYWNxdWlyZV9uYW1lOwogCWNvbnN0IGNoYXIgKm11dGV4X25h bWU7CisJdW5zaWduZWQgaW50IGlzX3dhaXRfZGllOwogfTsKIAogc3RydWN0IHd3X2FjcXVpcmVf Y3R4IHsKIAlzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2s7CiAJdW5zaWduZWQgbG9uZyBzdGFtcDsK IAl1bnNpZ25lZCBpbnQgYWNxdWlyZWQ7CisJdW5zaWduZWQgc2hvcnQgd291bmRlZDsKKwl1bnNp Z25lZCBzaG9ydCBpc193YWl0X2RpZTsKICNpZmRlZiBDT05GSUdfREVCVUdfTVVURVhFUwogCXVu c2lnbmVkIGludCBkb25lX2FjcXVpcmU7CiAJc3RydWN0IHd3X2NsYXNzICp3d19jbGFzczsKQEAg LTU4LDE3ICs2MywyMSBAQCBzdHJ1Y3Qgd3dfbXV0ZXggewogIyBkZWZpbmUgX19XV19DTEFTU19N VVRFWF9JTklUSUFMSVpFUihsb2NrbmFtZSwgY2xhc3MpCiAjZW5kaWYKIAotI2RlZmluZSBfX1dX X0NMQVNTX0lOSVRJQUxJWkVSKHd3X2NsYXNzKSBcCisjZGVmaW5lIF9fV1dfQ0xBU1NfSU5JVElB TElaRVIod3dfY2xhc3MsIF9pc193YWl0X2RpZSkJICAgIFwKIAkJeyAuc3RhbXAgPSBBVE9NSUNf TE9OR19JTklUKDApIFwKIAkJLCAuYWNxdWlyZV9uYW1lID0gI3d3X2NsYXNzICJfYWNxdWlyZSIg XAotCQksIC5tdXRleF9uYW1lID0gI3d3X2NsYXNzICJfbXV0ZXgiIH0KKwkJLCAubXV0ZXhfbmFt ZSA9ICN3d19jbGFzcyAiX211dGV4IiBcCisJCSwgLmlzX3dhaXRfZGllID0gX2lzX3dhaXRfZGll IH0KIAogI2RlZmluZSBfX1dXX01VVEVYX0lOSVRJQUxJWkVSKGxvY2tuYW1lLCBjbGFzcykgXAog CQl7IC5iYXNlID0gIF9fTVVURVhfSU5JVElBTElaRVIobG9ja25hbWUuYmFzZSkgXAogCQlfX1dX X0NMQVNTX01VVEVYX0lOSVRJQUxJWkVSKGxvY2tuYW1lLCBjbGFzcykgfQogCisjZGVmaW5lIERF RklORV9XRF9DTEFTUyhjbGFzc25hbWUpIFwKKwlzdHJ1Y3Qgd3dfY2xhc3MgY2xhc3NuYW1lID0g X19XV19DTEFTU19JTklUSUFMSVpFUihjbGFzc25hbWUsIDEpCisKICNkZWZpbmUgREVGSU5FX1dX X0NMQVNTKGNsYXNzbmFtZSkgXAotCXN0cnVjdCB3d19jbGFzcyBjbGFzc25hbWUgPSBfX1dXX0NM QVNTX0lOSVRJQUxJWkVSKGNsYXNzbmFtZSkKKwlzdHJ1Y3Qgd3dfY2xhc3MgY2xhc3NuYW1lID0g X19XV19DTEFTU19JTklUSUFMSVpFUihjbGFzc25hbWUsIDApCiAKICNkZWZpbmUgREVGSU5FX1dX X01VVEVYKG11dGV4bmFtZSwgd3dfY2xhc3MpIFwKIAlzdHJ1Y3Qgd3dfbXV0ZXggbXV0ZXhuYW1l ID0gX19XV19NVVRFWF9JTklUSUFMSVpFUihtdXRleG5hbWUsIHd3X2NsYXNzKQpAQCAtMTIzLDYg KzEzMiw4IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCB3d19hY3F1aXJlX2luaXQoc3RydWN0IHd3X2Fj cXVpcmVfY3R4ICpjdHgsCiAJY3R4LT50YXNrID0gY3VycmVudDsKIAljdHgtPnN0YW1wID0gYXRv bWljX2xvbmdfaW5jX3JldHVybl9yZWxheGVkKCZ3d19jbGFzcy0+c3RhbXApOwogCWN0eC0+YWNx dWlyZWQgPSAwOworCWN0eC0+d291bmRlZCA9IGZhbHNlOworCWN0eC0+aXNfd2FpdF9kaWUgPSB3 d19jbGFzcy0+aXNfd2FpdF9kaWU7CiAjaWZkZWYgQ09ORklHX0RFQlVHX01VVEVYRVMKIAljdHgt Pnd3X2NsYXNzID0gd3dfY2xhc3M7CiAJY3R4LT5kb25lX2FjcXVpcmUgPSAwOwpkaWZmIC0tZ2l0 IGEva2VybmVsL2xvY2tpbmcvbG9ja3RvcnR1cmUuYyBiL2tlcm5lbC9sb2NraW5nL2xvY2t0b3J0 dXJlLmMKaW5kZXggNjg1MGZmZDY5MTI1Li45MDdlMDMyNTg5MmMgMTAwNjQ0Ci0tLSBhL2tlcm5l bC9sb2NraW5nL2xvY2t0b3J0dXJlLmMKKysrIGIva2VybmVsL2xvY2tpbmcvbG9ja3RvcnR1cmUu YwpAQCAtMzY1LDcgKzM2NSw3IEBAIHN0YXRpYyBzdHJ1Y3QgbG9ja190b3J0dXJlX29wcyBtdXRl eF9sb2NrX29wcyA9IHsKIH07CiAKICNpbmNsdWRlIDxsaW51eC93d19tdXRleC5oPgotc3RhdGlj IERFRklORV9XV19DTEFTUyh0b3J0dXJlX3d3X2NsYXNzKTsKK3N0YXRpYyBERUZJTkVfV0RfQ0xB U1ModG9ydHVyZV93d19jbGFzcyk7CiBzdGF0aWMgREVGSU5FX1dXX01VVEVYKHRvcnR1cmVfd3df bXV0ZXhfMCwgJnRvcnR1cmVfd3dfY2xhc3MpOwogc3RhdGljIERFRklORV9XV19NVVRFWCh0b3J0 dXJlX3d3X211dGV4XzEsICZ0b3J0dXJlX3d3X2NsYXNzKTsKIHN0YXRpYyBERUZJTkVfV1dfTVVU RVgodG9ydHVyZV93d19tdXRleF8yLCAmdG9ydHVyZV93d19jbGFzcyk7CmRpZmYgLS1naXQgYS9r ZXJuZWwvbG9ja2luZy9tdXRleC5jIGIva2VybmVsL2xvY2tpbmcvbXV0ZXguYwppbmRleCA0MTJi NGZjMDgyMzUuLjhjYTgzYTVlM2QyNCAxMDA2NDQKLS0tIGEva2VybmVsL2xvY2tpbmcvbXV0ZXgu YworKysgYi9rZXJuZWwvbG9ja2luZy9tdXRleC5jCkBAIC0xNzIsNiArMTcyLDIxIEBAIHN0YXRp YyBpbmxpbmUgYm9vbCBfX211dGV4X3dhaXRlcl9pc19maXJzdChzdHJ1Y3QgbXV0ZXggKmxvY2ss IHN0cnVjdCBtdXRleF93YWl0CiAJcmV0dXJuIGxpc3RfZmlyc3RfZW50cnkoJmxvY2stPndhaXRf bGlzdCwgc3RydWN0IG11dGV4X3dhaXRlciwgbGlzdCkgPT0gd2FpdGVyOwogfQogCisvKgorICog QWRkIEB3YWl0ZXIgdG8gYSBnaXZlbiBsb2NhdGlvbiBpbiB0aGUgbG9jayB3YWl0X2xpc3QgYW5k IHNldCB0aGUKKyAqIEZMQUdfV0FJVEVSUyBmbGFnIGlmIGl0J3MgdGhlIGZpcnN0IHdhaXRlci4K KyAqLworc3RhdGljIHZvaWQgX19zY2hlZAorX19tdXRleF9hZGRfd2FpdGVyKHN0cnVjdCBtdXRl eCAqbG9jaywgc3RydWN0IG11dGV4X3dhaXRlciAqd2FpdGVyLAorCQkgICBzdHJ1Y3QgbGlzdF9o ZWFkICpsaXN0KQoreworCWRlYnVnX211dGV4X2FkZF93YWl0ZXIobG9jaywgd2FpdGVyLCBjdXJy ZW50KTsKKworCWxpc3RfYWRkX3RhaWwoJndhaXRlci0+bGlzdCwgbGlzdCk7CisJaWYgKF9fbXV0 ZXhfd2FpdGVyX2lzX2ZpcnN0KGxvY2ssIHdhaXRlcikpCisJCV9fbXV0ZXhfc2V0X2ZsYWcobG9j aywgTVVURVhfRkxBR19XQUlURVJTKTsKK30KKwogLyoKICAqIEdpdmUgdXAgb3duZXJzaGlwIHRv IGEgc3BlY2lmaWMgdGFzaywgd2hlbiBAdGFzayA9IE5VTEwsIHRoaXMgaXMgZXF1aXZhbGVudAog ICogdG8gYSByZWd1bGFyIHVubG9jay4gU2V0cyBQSUNLVVAgb24gYSBoYW5kb2ZmLCBjbGVhcnMg SEFORE9GLCBwcmVzZXJ2ZXMKQEAgLTI0OCw2ICsyNjMsMTEgQEAgRVhQT1JUX1NZTUJPTChtdXRl eF9sb2NrKTsKICAqICAgVGhlIG5ld2VyIHRyYW5zYWN0aW9ucyBhcmUga2lsbGVkIHdoZW46CiAg KiAgICAgSXQgKHRoZSBuZXcgdHJhbnNhY3Rpb24pIG1ha2VzIGEgcmVxdWVzdCBmb3IgYSBsb2Nr IGJlaW5nIGhlbGQKICAqICAgICBieSBhbiBvbGRlciB0cmFuc2FjdGlvbi4KKyAqCisgKiBXb3Vu ZC1XYWl0OgorICogICBUaGUgbmV3ZXIgdHJhbnNhY3Rpb25zIGFyZSB3b3VuZGVkIHdoZW46Cisg KiAgICAgQW4gb2xkZXIgdHJhbnNhY3Rpb24gbWFrZXMgYSByZXF1ZXN0IGZvciBhIGxvY2sgYmVp bmcgaGVsZCBieQorICogICAgIHRoZSBuZXdlciB0cmFuc2FjdGlvbi4KICAqLwogCiAvKgpAQCAt MzE5LDYgKzMzOSw5IEBAIHN0YXRpYyBib29sIF9fc2NoZWQKIF9fd3dfbXV0ZXhfZGllKHN0cnVj dCBtdXRleCAqbG9jaywgc3RydWN0IG11dGV4X3dhaXRlciAqd2FpdGVyLAogCSAgICAgICBzdHJ1 Y3Qgd3dfYWNxdWlyZV9jdHggKnd3X2N0eCkKIHsKKwlpZiAoIXd3X2N0eC0+aXNfd2FpdF9kaWUp CisJCXJldHVybiBmYWxzZTsKKwogCWlmICh3YWl0ZXItPnd3X2N0eC0+YWNxdWlyZWQgPiAwICYm CiAJCQlfX3d3X2N0eF9zdGFtcF9hZnRlcih3YWl0ZXItPnd3X2N0eCwgd3dfY3R4KSkgewogCQlk ZWJ1Z19tdXRleF93YWtlX3dhaXRlcihsb2NrLCB3YWl0ZXIpOwpAQCAtMzI4LDEzICszNTEsNjUg QEAgX193d19tdXRleF9kaWUoc3RydWN0IG11dGV4ICpsb2NrLCBzdHJ1Y3QgbXV0ZXhfd2FpdGVy ICp3YWl0ZXIsCiAJcmV0dXJuIHRydWU7CiB9CiAKKy8qCisgKiBXb3VuZC1XYWl0OyB3b3VuZCBh IHlvdW5nZXIgQGhvbGRfY3R4IGlmIGl0IGhvbGRzIHRoZSBsb2NrLgorICoKKyAqIFdvdW5kIHRo ZSBsb2NrIGhvbGRlciBpZiB0aGVyZSBhcmUgd2FpdGVycyB3aXRoIG9sZGVyIHRyYW5zYWN0aW9u cyB0aGFuCisgKiB0aGUgbG9jayBob2xkZXJzLiBFdmVuIGlmIG11bHRpcGxlIHdhaXRlcnMgbWF5 IHdvdW5kIHRoZSBsb2NrIGhvbGRlciwKKyAqIGl0J3Mgc3VmZmljaWVudCB0aGF0IG9ubHkgb25l IGRvZXMuCisgKi8KK3N0YXRpYyBib29sIF9fd3dfbXV0ZXhfd291bmQoc3RydWN0IG11dGV4ICps b2NrLAorCQkJICAgICBzdHJ1Y3Qgd3dfYWNxdWlyZV9jdHggKnd3X2N0eCwKKwkJCSAgICAgc3Ry dWN0IHd3X2FjcXVpcmVfY3R4ICpob2xkX2N0eCkKK3sKKwlzdHJ1Y3QgdGFza19zdHJ1Y3QgKm93 bmVyID0gX19tdXRleF9vd25lcihsb2NrKTsKKworCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJmxvY2st PndhaXRfbG9jayk7CisKKwkvKgorCSAqIFBvc3NpYmxlIHRocm91Z2ggX193d19tdXRleF9hZGRf d2FpdGVyKCkgd2hlbiB3ZSByYWNlIHdpdGgKKwkgKiB3d19tdXRleF9zZXRfY29udGV4dF9mYXN0 cGF0aCgpLiBJbiB0aGF0IGNhc2Ugd2UnbGwgZ2V0IGhlcmUgYWdhaW4KKwkgKiB0aHJvdWdoIF9f d3dfbXV0ZXhfY2hlY2tfd2FpdGVycygpLgorCSAqLworCWlmICghaG9sZF9jdHgpCisJCXJldHVy biBmYWxzZTsKKworCS8qCisJICogQ2FuIGhhdmUgIW93bmVyIGJlY2F1c2Ugb2YgX19tdXRleF91 bmxvY2tfc2xvd3BhdGgoKSwgYnV0IGlmIG93bmVyLAorCSAqIGl0IGNhbm5vdCBnbyBhd2F5IGJl Y2F1c2Ugd2UnbGwgaGF2ZSBGTEFHX1dBSVRFUlMgc2V0IGFuZCBob2xkCisJICogd2FpdF9sb2Nr LgorCSAqLworCWlmICghb3duZXIpCisJCXJldHVybiBmYWxzZTsKKworCWlmICh3d19jdHgtPmFj cXVpcmVkID4gMCAmJiBfX3d3X2N0eF9zdGFtcF9hZnRlcihob2xkX2N0eCwgd3dfY3R4KSkgewor CQlob2xkX2N0eC0+d291bmRlZCA9IDE7CisKKwkJLyoKKwkJICogd2FrZV91cF9wcm9jZXNzKCkg cGFpcmVkIHdpdGggc2V0X2N1cnJlbnRfc3RhdGUoKQorCQkgKiBpbnNlcnRzIHN1ZmZpY2llbnQg YmFycmllcnMgdG8gbWFrZSBzdXJlIEBvd25lciBlaXRoZXIgc2VlcworCQkgKiBpdCdzIHdvdW5k ZWQgaW4gX193d19tdXRleF9sb2NrX2NoZWNrX3N0YW1wKCkgb3IgaGFzIGEKKwkJICogd2FrZXVw IHBlbmRpbmcgdG8gcmUtcmVhZCB0aGUgd291bmRlZCBzdGF0ZS4KKwkJICovCisJCWlmIChvd25l ciAhPSBjdXJyZW50KQorCQkJd2FrZV91cF9wcm9jZXNzKG93bmVyKTsKKworCQlyZXR1cm4gdHJ1 ZTsKKwl9CisKKwlyZXR1cm4gZmFsc2U7Cit9CisKIC8qCiAgKiBXZSBqdXN0IGFjcXVpcmVkIEBs b2NrIHVuZGVyIEB3d19jdHgsIGlmIHRoZXJlIGFyZSBsYXRlciBjb250ZXh0cyB3YWl0aW5nCi0g KiBiZWhpbmQgdXMgb24gdGhlIHdhaXQtbGlzdCwgY2hlY2sgaWYgdGhleSBuZWVkIHRvIGRpZS4K KyAqIGJlaGluZCB1cyBvbiB0aGUgd2FpdC1saXN0LCBjaGVjayBpZiB0aGV5IG5lZWQgdG8gZGll LCBvciB3b3VuZCB1cy4KICAqCiAgKiBTZWUgX193d19tdXRleF9hZGRfd2FpdGVyKCkgZm9yIHRo ZSBsaXN0LW9yZGVyIGNvbnN0cnVjdGlvbjsgYmFzaWNhbGx5IHRoZQogICogbGlzdCBpcyBvcmRl cmVkIGJ5IHN0YW1wLCBzbWFsbGVzdCAob2xkZXN0KSBmaXJzdC4KICAqCisgKiBUaGlzIHJlbGll cyBvbiBuZXZlciBtaXhpbmcgd2FpdC1kaWUvd291bmQtd2FpdCBvbiB0aGUgc2FtZSB3YWl0LWxp c3Q7CisgKiB3aGljaCBpcyBjdXJyZW50bHkgZW5zdXJlZCBieSB0aGF0IGJlaW5nIGEgd3dfY2xh c3MgcHJvcGVydHkuCisgKgogICogVGhlIGN1cnJlbnQgdGFzayBtdXN0IG5vdCBiZSBvbiB0aGUg d2FpdCBsaXN0LgogICovCiBzdGF0aWMgdm9pZCBfX3NjaGVkCkBAIC0zNDgsNyArNDIzLDggQEAg X193d19tdXRleF9jaGVja193YWl0ZXJzKHN0cnVjdCBtdXRleCAqbG9jaywgc3RydWN0IHd3X2Fj cXVpcmVfY3R4ICp3d19jdHgpCiAJCWlmICghY3VyLT53d19jdHgpCiAJCQljb250aW51ZTsKIAot CQlpZiAoX193d19tdXRleF9kaWUobG9jaywgY3VyLCB3d19jdHgpKQorCQlpZiAoX193d19tdXRl eF9kaWUobG9jaywgY3VyLCB3d19jdHgpIHx8CisJCSAgICBfX3d3X211dGV4X3dvdW5kKGxvY2ss IGN1ci0+d3dfY3R4LCB3d19jdHgpKQogCQkJYnJlYWs7CiAJfQogfQpAQCAtMzY5LDE3ICs0NDUs MjMgQEAgd3dfbXV0ZXhfc2V0X2NvbnRleHRfZmFzdHBhdGgoc3RydWN0IHd3X211dGV4ICpsb2Nr LCBzdHJ1Y3Qgd3dfYWNxdWlyZV9jdHggKmN0eCkKIAkgKiBhbmQga2VlcCBzcGlubmluZywgb3Ig aXQgd2lsbCBhY3F1aXJlIHdhaXRfbG9jaywgYWRkIGl0c2VsZgogCSAqIHRvIHdhaXRlciBsaXN0 IGFuZCBzbGVlcC4KIAkgKi8KLQlzbXBfbWIoKTsgLyogXl5eICovCisJc21wX21iKCk7IC8qIFNl ZSBjb21tZW50cyBhYm92ZSBhbmQgYmVsb3cuICovCiAKIAkvKgotCSAqIENoZWNrIGlmIGxvY2sg aXMgY29udGVuZGVkLCBpZiBub3QgdGhlcmUgaXMgbm9ib2R5IHRvIHdha2UgdXAKKwkgKiBbV10g d3ctPmN0eCA9IGN0eAkgICAgW1ddIE1VVEVYX0ZMQUdfV0FJVEVSUworCSAqICAgICBNQgkJICAg ICAgICBNQgorCSAqIFtSXSBNVVRFWF9GTEFHX1dBSVRFUlMgICBbUl0gd3ctPmN0eAorCSAqCisJ ICogVGhlIG1lbW9yeSBiYXJyaWVyIGFib3ZlIHBhaXJzIHdpdGggdGhlIG1lbW9yeSBiYXJyaWVy IGluCisJICogX193d19tdXRleF9hZGRfd2FpdGVyKCkgYW5kIG1ha2VzIHN1cmUgd2UgZWl0aGVy IG9ic2VydmUgd3ctPmN0eAorCSAqIGFuZC9vciAhZW1wdHkgbGlzdC4KIAkgKi8KIAlpZiAobGlr ZWx5KCEoYXRvbWljX2xvbmdfcmVhZCgmbG9jay0+YmFzZS5vd25lcikgJiBNVVRFWF9GTEFHX1dB SVRFUlMpKSkKIAkJcmV0dXJuOwogCiAJLyoKIAkgKiBVaCBvaCwgd2UgcmFjZWQgaW4gZmFzdHBh dGgsIGNoZWNrIGlmIGFueSBvZiB0aGUgd2FpdGVycyBuZWVkIHRvCi0JICogZGllLgorCSAqIGRp ZSBvciB3b3VuZCB1cy4KIAkgKi8KIAlzcGluX2xvY2soJmxvY2stPmJhc2Uud2FpdF9sb2NrKTsK IAlfX3d3X211dGV4X2NoZWNrX3dhaXRlcnMoJmxvY2stPmJhc2UsIGN0eCk7CkBAIC02ODEsNyAr NzYzLDkgQEAgX193d19tdXRleF9raWxsKHN0cnVjdCBtdXRleCAqbG9jaywgc3RydWN0IHd3X2Fj cXVpcmVfY3R4ICp3d19jdHgpCiAKIAogLyoKLSAqIENoZWNrIHdoZXRoZXIgd2UgbmVlZCB0byBr aWxsIHRoZSB0cmFuc2FjdGlvbiBmb3IgdGhlIGN1cnJlbnQgbG9jayBhY3F1aXJlLgorICogQ2hl Y2sgdGhlIHdvdW5kIGNvbmRpdGlvbiBmb3IgdGhlIGN1cnJlbnQgbG9jayBhY3F1aXJlLgorICoK KyAqIFdvdW5kLVdhaXQ6IElmIHdlJ3JlIHdvdW5kZWQsIGtpbGwgb3Vyc2VsZi4KICAqCiAgKiBX YWl0LURpZTogSWYgd2UncmUgdHJ5aW5nIHRvIGFjcXVpcmUgYSBsb2NrIGFscmVhZHkgaGVsZCBi eSBhbiBvbGRlcgogICogICAgICAgICAgIGNvbnRleHQsIGtpbGwgb3Vyc2VsdmVzLgpAQCAtNzAw LDYgKzc4NCwxMyBAQCBfX3d3X211dGV4X2NoZWNrX2tpbGwoc3RydWN0IG11dGV4ICpsb2NrLCBz dHJ1Y3QgbXV0ZXhfd2FpdGVyICp3YWl0ZXIsCiAJaWYgKGN0eC0+YWNxdWlyZWQgPT0gMCkKIAkJ cmV0dXJuIDA7CiAKKwlpZiAoIWN0eC0+aXNfd2FpdF9kaWUpIHsKKwkJaWYgKGN0eC0+d291bmRl ZCkKKwkJCXJldHVybiBfX3d3X211dGV4X2tpbGwobG9jaywgY3R4KTsKKworCQlyZXR1cm4gMDsK Kwl9CisKIAlpZiAoaG9sZF9jdHggJiYgX193d19jdHhfc3RhbXBfYWZ0ZXIoY3R4LCBob2xkX2N0 eCkpCiAJCXJldHVybiBfX3d3X211dGV4X2tpbGwobG9jaywgY3R4KTsKIApAQCAtNzI2LDcgKzgx Nyw4IEBAIF9fd3dfbXV0ZXhfY2hlY2tfa2lsbChzdHJ1Y3QgbXV0ZXggKmxvY2ssIHN0cnVjdCBt dXRleF93YWl0ZXIgKndhaXRlciwKICAqIFdhaXRlcnMgd2l0aG91dCBjb250ZXh0IGFyZSBpbnRl cnNwZXJzZWQgaW4gRklGTyBvcmRlci4KICAqCiAgKiBGdXJ0aGVybW9yZSwgZm9yIFdhaXQtRGll IGtpbGwgb3Vyc2VsZiBpbW1lZGlhdGVseSB3aGVuIHBvc3NpYmxlICh0aGVyZSBhcmUKLSAqIG9s ZGVyIGNvbnRleHRzIGFscmVhZHkgd2FpdGluZykgdG8gYXZvaWQgdW5uZWNlc3Nhcnkgd2FpdGlu Zy4KKyAqIG9sZGVyIGNvbnRleHRzIGFscmVhZHkgd2FpdGluZykgdG8gYXZvaWQgdW5uZWNlc3Nh cnkgd2FpdGluZyBhbmQgZm9yCisgKiBXb3VuZC1XYWl0IGVuc3VyZSB3ZSB3b3VuZCB0aGUgb3du aW5nIGNvbnRleHQgd2hlbiBpdCBpcyB5b3VuZ2VyLgogICovCiBzdGF0aWMgaW5saW5lIGludCBf X3NjaGVkCiBfX3d3X211dGV4X2FkZF93YWl0ZXIoc3RydWN0IG11dGV4X3dhaXRlciAqd2FpdGVy LApAQCAtNzM1LDE2ICs4MjcsMjEgQEAgX193d19tdXRleF9hZGRfd2FpdGVyKHN0cnVjdCBtdXRl eF93YWl0ZXIgKndhaXRlciwKIHsKIAlzdHJ1Y3QgbXV0ZXhfd2FpdGVyICpjdXI7CiAJc3RydWN0 IGxpc3RfaGVhZCAqcG9zOworCWJvb2wgaXNfd2FpdF9kaWU7CiAKIAlpZiAoIXd3X2N0eCkgewot CQlsaXN0X2FkZF90YWlsKCZ3YWl0ZXItPmxpc3QsICZsb2NrLT53YWl0X2xpc3QpOworCQlfX211 dGV4X2FkZF93YWl0ZXIobG9jaywgd2FpdGVyLCAmbG9jay0+d2FpdF9saXN0KTsKIAkJcmV0dXJu IDA7CiAJfQogCisJaXNfd2FpdF9kaWUgPSB3d19jdHgtPmlzX3dhaXRfZGllOworCiAJLyoKIAkg KiBBZGQgdGhlIHdhaXRlciBiZWZvcmUgdGhlIGZpcnN0IHdhaXRlciB3aXRoIGEgaGlnaGVyIHN0 YW1wLgogCSAqIFdhaXRlcnMgd2l0aG91dCBhIGNvbnRleHQgYXJlIHNraXBwZWQgdG8gYXZvaWQg c3RhcnZpbmcKLQkgKiB0aGVtLiBXYWl0LURpZSB3YWl0ZXJzIG1heSBkaWUgaGVyZS4KKwkgKiB0 aGVtLiBXYWl0LURpZSB3YWl0ZXJzIG1heSBkaWUgaGVyZS4gV291bmQtV2FpdCB3YWl0ZXJzCisJ ICogbmV2ZXIgZGllIGhlcmUsIGJ1dCB0aGV5IGFyZSBzb3J0ZWQgaW4gc3RhbXAgb3JkZXIgYW5k CisJICogbWF5IHdvdW5kIHRoZSBsb2NrIGhvbGRlci4KIAkgKi8KIAlwb3MgPSAmbG9jay0+d2Fp dF9saXN0OwogCWxpc3RfZm9yX2VhY2hfZW50cnlfcmV2ZXJzZShjdXIsICZsb2NrLT53YWl0X2xp c3QsIGxpc3QpIHsKQEAgLTc1NywxMCArODU0LDEyIEBAIF9fd3dfbXV0ZXhfYWRkX3dhaXRlcihz dHJ1Y3QgbXV0ZXhfd2FpdGVyICp3YWl0ZXIsCiAJCQkgKiBpcyBubyBwb2ludCBpbiBxdWV1ZWlu ZyBiZWhpbmQgaXQsIGFzIHdlJ2QgaGF2ZSB0bwogCQkJICogZGllIHRoZSBtb21lbnQgaXQgd291 bGQgYWNxdWlyZSB0aGUgbG9jay4KIAkJCSAqLwotCQkJaW50IHJldCA9IF9fd3dfbXV0ZXhfa2ls bChsb2NrLCB3d19jdHgpOworCQkJaWYgKGlzX3dhaXRfZGllKSB7CisJCQkJaW50IHJldCA9IF9f d3dfbXV0ZXhfa2lsbChsb2NrLCB3d19jdHgpOwogCi0JCQlpZiAocmV0KQotCQkJCXJldHVybiBy ZXQ7CisJCQkJaWYgKHJldCkKKwkJCQkJcmV0dXJuIHJldDsKKwkJCX0KIAogCQkJYnJlYWs7CiAJ CX0KQEAgLTc3MSw3ICs4NzAsMjMgQEAgX193d19tdXRleF9hZGRfd2FpdGVyKHN0cnVjdCBtdXRl eF93YWl0ZXIgKndhaXRlciwKIAkJX193d19tdXRleF9kaWUobG9jaywgY3VyLCB3d19jdHgpOwog CX0KIAotCWxpc3RfYWRkX3RhaWwoJndhaXRlci0+bGlzdCwgcG9zKTsKKwlfX211dGV4X2FkZF93 YWl0ZXIobG9jaywgd2FpdGVyLCBwb3MpOworCisJLyoKKwkgKiBXb3VuZC1XYWl0OiBpZiB3ZSdy ZSBibG9ja2luZyBvbiBhIG11dGV4IG93bmVkIGJ5IGEgeW91bmdlciBjb250ZXh0LAorCSAqIHdv dW5kIHRoYXQgc3VjaCB0aGF0IHdlIG1pZ2h0IHByb2NlZWQuCisJICovCisJaWYgKCFpc193YWl0 X2RpZSkgeworCQlzdHJ1Y3Qgd3dfbXV0ZXggKnd3ID0gY29udGFpbmVyX29mKGxvY2ssIHN0cnVj dCB3d19tdXRleCwgYmFzZSk7CisKKwkJLyoKKwkJICogU2VlIHd3X211dGV4X3NldF9jb250ZXh0 X2Zhc3RwYXRoKCkuIE9yZGVycyBzZXR0aW5nCisJCSAqIE1VVEVYX0ZMQUdfV0FJVEVSUyB2cyB0 aGUgd3ctPmN0eCBsb2FkLAorCQkgKiBzdWNoIHRoYXQgZWl0aGVyIHdlIG9yIHRoZSBmYXN0cGF0 aCB3aWxsIHdvdW5kIEB3dy0+Y3R4LgorCQkgKi8KKwkJc21wX21iKCk7CisJCV9fd3dfbXV0ZXhf d291bmQobG9jaywgd3dfY3R4LCB3dy0+Y3R4KTsKKwl9CiAKIAlyZXR1cm4gMDsKIH0KQEAgLTc5 NSw2ICs5MTAsMTQgQEAgX19tdXRleF9sb2NrX2NvbW1vbihzdHJ1Y3QgbXV0ZXggKmxvY2ssIGxv bmcgc3RhdGUsIHVuc2lnbmVkIGludCBzdWJjbGFzcywKIAlpZiAodXNlX3d3X2N0eCAmJiB3d19j dHgpIHsKIAkJaWYgKHVubGlrZWx5KHd3X2N0eCA9PSBSRUFEX09OQ0Uod3ctPmN0eCkpKQogCQkJ cmV0dXJuIC1FQUxSRUFEWTsKKworCQkvKgorCQkgKiBSZXNldCB0aGUgd291bmRlZCBmbGFnIGFm dGVyIGEga2lsbC4gTm8gb3RoZXIgcHJvY2VzcyBjYW4KKwkJICogcmFjZSBhbmQgd291bmQgdXMg aGVyZSBzaW5jZSB0aGV5IGNhbid0IGhhdmUgYSB2YWxpZCBvd25lcgorCQkgKiBwb2ludGVyIGlm IHdlIGRvbid0IGhhdmUgYW55IGxvY2tzIGhlbGQuCisJCSAqLworCQlpZiAod3dfY3R4LT5hY3F1 aXJlZCA9PSAwKQorCQkJd3dfY3R4LT53b3VuZGVkID0gMDsKIAl9CiAKIAlwcmVlbXB0X2Rpc2Fi bGUoKTsKQEAgLTgyOCw3ICs5NTEsOCBAQCBfX211dGV4X2xvY2tfY29tbW9uKHN0cnVjdCBtdXRl eCAqbG9jaywgbG9uZyBzdGF0ZSwgdW5zaWduZWQgaW50IHN1YmNsYXNzLAogCiAJaWYgKCF1c2Vf d3dfY3R4KSB7CiAJCS8qIGFkZCB3YWl0aW5nIHRhc2tzIHRvIHRoZSBlbmQgb2YgdGhlIHdhaXRx dWV1ZSAoRklGTyk6ICovCi0JCWxpc3RfYWRkX3RhaWwoJndhaXRlci5saXN0LCAmbG9jay0+d2Fp dF9saXN0KTsKKwkJX19tdXRleF9hZGRfd2FpdGVyKGxvY2ssICZ3YWl0ZXIsICZsb2NrLT53YWl0 X2xpc3QpOworCiAKICNpZmRlZiBDT05GSUdfREVCVUdfTVVURVhFUwogCQl3YWl0ZXIud3dfY3R4 ID0gTVVURVhfUE9JU09OX1dXX0NUWDsKQEAgLTg0Nyw5ICs5NzEsNiBAQCBfX211dGV4X2xvY2tf Y29tbW9uKHN0cnVjdCBtdXRleCAqbG9jaywgbG9uZyBzdGF0ZSwgdW5zaWduZWQgaW50IHN1YmNs YXNzLAogCiAJd2FpdGVyLnRhc2sgPSBjdXJyZW50OwogCi0JaWYgKF9fbXV0ZXhfd2FpdGVyX2lz X2ZpcnN0KGxvY2ssICZ3YWl0ZXIpKQotCQlfX211dGV4X3NldF9mbGFnKGxvY2ssIE1VVEVYX0ZM QUdfV0FJVEVSUyk7Ci0KIAlzZXRfY3VycmVudF9zdGF0ZShzdGF0ZSk7CiAJZm9yICg7Oykgewog CQkvKgpAQCAtOTA2LDYgKzEwMjcsMTYgQEAgX19tdXRleF9sb2NrX2NvbW1vbihzdHJ1Y3QgbXV0 ZXggKmxvY2ssIGxvbmcgc3RhdGUsIHVuc2lnbmVkIGludCBzdWJjbGFzcywKIGFjcXVpcmVkOgog CV9fc2V0X2N1cnJlbnRfc3RhdGUoVEFTS19SVU5OSU5HKTsKIAorCWlmICh1c2Vfd3dfY3R4ICYm IHd3X2N0eCkgeworCQkvKgorCQkgKiBXb3VuZC1XYWl0OyB3ZSBzdG9sZSB0aGUgbG9jayAoIWZp cnN0X3dhaXRlciksIGNoZWNrIHRoZQorCQkgKiB3YWl0ZXJzIGFzIGFueW9uZSBtaWdodCB3YW50 IHRvIHdvdW5kIHVzLgorCQkgKi8KKwkJaWYgKCF3d19jdHgtPmlzX3dhaXRfZGllICYmCisJCSAg ICAhX19tdXRleF93YWl0ZXJfaXNfZmlyc3QobG9jaywgJndhaXRlcikpCisJCQlfX3d3X211dGV4 X2NoZWNrX3dhaXRlcnMobG9jaywgd3dfY3R4KTsKKwl9CisKIAltdXRleF9yZW1vdmVfd2FpdGVy KGxvY2ssICZ3YWl0ZXIsIGN1cnJlbnQpOwogCWlmIChsaWtlbHkobGlzdF9lbXB0eSgmbG9jay0+ d2FpdF9saXN0KSkpCiAJCV9fbXV0ZXhfY2xlYXJfZmxhZyhsb2NrLCBNVVRFWF9GTEFHUyk7CmRp ZmYgLS1naXQgYS9rZXJuZWwvbG9ja2luZy90ZXN0LXd3X211dGV4LmMgYi9rZXJuZWwvbG9ja2lu Zy90ZXN0LXd3X211dGV4LmMKaW5kZXggMGU0Y2Q2NGFkMmMwLi41YjkxNWIzNzBkNWEgMTAwNjQ0 Ci0tLSBhL2tlcm5lbC9sb2NraW5nL3Rlc3Qtd3dfbXV0ZXguYworKysgYi9rZXJuZWwvbG9ja2lu Zy90ZXN0LXd3X211dGV4LmMKQEAgLTI2LDcgKzI2LDcgQEAKICNpbmNsdWRlIDxsaW51eC9zbGFi Lmg+CiAjaW5jbHVkZSA8bGludXgvd3dfbXV0ZXguaD4KIAotc3RhdGljIERFRklORV9XV19DTEFT Uyh3d19jbGFzcyk7CitzdGF0aWMgREVGSU5FX1dEX0NMQVNTKHd3X2NsYXNzKTsKIHN0cnVjdCB3 b3JrcXVldWVfc3RydWN0ICp3cTsKIAogc3RydWN0IHRlc3RfbXV0ZXggewpkaWZmIC0tZ2l0IGEv bGliL2xvY2tpbmctc2VsZnRlc3QuYyBiL2xpYi9sb2NraW5nLXNlbGZ0ZXN0LmMKaW5kZXggYjVj MTI5M2NlMTQ3Li4xZTFiYmYxNzFlY2EgMTAwNjQ0Ci0tLSBhL2xpYi9sb2NraW5nLXNlbGZ0ZXN0 LmMKKysrIGIvbGliL2xvY2tpbmctc2VsZnRlc3QuYwpAQCAtMjksNyArMjksNyBAQAogICovCiBz dGF0aWMgdW5zaWduZWQgaW50IGRlYnVnX2xvY2tzX3ZlcmJvc2U7CiAKLXN0YXRpYyBERUZJTkVf V1dfQ0xBU1Mod3dfbG9ja2RlcCk7CitzdGF0aWMgREVGSU5FX1dEX0NMQVNTKHd3X2xvY2tkZXAp OwogCiBzdGF0aWMgaW50IF9faW5pdCBzZXR1cF9kZWJ1Z19sb2Nrc192ZXJib3NlKGNoYXIgKnN0 cikKIHsKLS0gCjIuMTQuMwoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0 b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJp LWRldmVsCg==