From: Thomas Hellstrom Subject: [PATCH RFC 1/2] locking: Implement an algorithm choice for Wound-Wait mutexes Date: Fri, 25 May 2018 14:38:54 +0200 Message-ID: <20180525123855.28956-2-thellstrom@vmware.com> References: <20180525123855.28956-1-thellstrom@vmware.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from NAM02-SN1-obe.outbound.protection.outlook.com (mail-sn1nam02on0088.outbound.protection.outlook.com [104.47.36.88]) by gabe.freedesktop.org (Postfix) with ESMTPS id C20166E1C1 for ; Fri, 25 May 2018 12:39:44 +0000 (UTC) In-Reply-To: <20180525123855.28956-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: maarten.lankhosrt@linux.intel.com, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org Cc: Thomas Hellstrom List-Id: dri-devel@lists.freedesktop.org VGhlIGN1cnJlbnQgV291bmQtV2FpdCBtdXRleCBhbGdvcml0aG0gaXMgYWN0dWFsbHkgbm90IFdv dW5kLVdhaXQgYnV0CldhaXQtRGllLiBJbXBsZW1lbnQgYWxzbyBXb3VuZC1XYWl0IGFzIGEgcGVy LXd3LWNsYXNzIGNob2ljZS4gV291bmQtV2FpdAppcywgY29udHJhcnkgdG8gV2FpdC1EaWUgYSBw cmVlbXB0aXZlIGFsZ29yaXRobSBhbmQgaXMga25vd24gdG8gZ2VuZXJhdGUKZmV3ZXIgYmFja29m ZnMgaW4gc29tZSBjYXNlcy4gVGVzdGluZyByZXZlYWxzIHRoYXQgdGhpcyBpcyB0cnVlIGlmIHRo ZQpudW1iZXIgb2Ygc2ltdWx0YW5lb3VzIGNvbnRlbmRpbmcgdHJhbnNhY3Rpb25zIGlzIHNtYWxs LgpBcyB0aGUgbnVtYmVyIG9mIHNpbXVsdGFuZW91cyBjb250ZW5kaW5nIHRocmVhZHMgaW5jcmVh c2VzLCBXYWl0LVdvdW5kCmJlY29tZXMgaW5mZXJpb3IgdG8gV2FpdC1EaWUsIHByb2JhYmx5IGR1 ZSB0byB0aGUgbGFyZ2VyIG51bWJlciBvZiBoZWxkIGxvY2tzCm9mIHNsZWVwaW5nIHRyYW5zYWN0 aW9ucy4KClVwZGF0ZSBkb2N1bWVudGF0aW9uIGFuZCBjYWxsZXJzLgoKU2lnbmVkLW9mZi1ieTog VGhvbWFzIEhlbGxzdHJvbSA8dGhlbGxzdHJvbUB2bXdhcmUuY29tPgotLS0KIERvY3VtZW50YXRp b24vbG9ja2luZy93dy1tdXRleC1kZXNpZ24udHh0IHwgIDU3ICsrKysrKysrKysrKystLS0tCiBk cml2ZXJzL2RtYS1idWYvcmVzZXJ2YXRpb24uYyAgICAgICAgICAgICB8ICAgMiArLQogZHJpdmVy cy9ncHUvZHJtL2RybV9tb2Rlc2V0X2xvY2suYyAgICAgICAgfCAgIDIgKy0KIGluY2x1ZGUvbGlu dXgvd3dfbXV0ZXguaCAgICAgICAgICAgICAgICAgIHwgIDE5ICsrKystLQoga2VybmVsL2xvY2tp bmcvbG9ja3RvcnR1cmUuYyAgICAgICAgICAgICAgfCAgIDIgKy0KIGtlcm5lbC9sb2NraW5nL211 dGV4LmMgICAgICAgICAgICAgICAgICAgIHwgMTAxICsrKysrKysrKysrKysrKysrKysrKysrKysr Ky0tLQoga2VybmVsL2xvY2tpbmcvdGVzdC13d19tdXRleC5jICAgICAgICAgICAgfCAgIDIgKy0K IGxpYi9sb2NraW5nLXNlbGZ0ZXN0LmMgICAgICAgICAgICAgICAgICAgIHwgICAyICstCiA4IGZp bGVzIGNoYW5nZWQsIDE1NCBpbnNlcnRpb25zKCspLCAzMyBkZWxldGlvbnMoLSkKCmRpZmYgLS1n aXQgYS9Eb2N1bWVudGF0aW9uL2xvY2tpbmcvd3ctbXV0ZXgtZGVzaWduLnR4dCBiL0RvY3VtZW50 YXRpb24vbG9ja2luZy93dy1tdXRleC1kZXNpZ24udHh0CmluZGV4IDM0YzNhMWI1MGI5YS4uMjlj ODU2MjNiNTUxIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2xvY2tpbmcvd3ctbXV0ZXgtZGVz aWduLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2xvY2tpbmcvd3ctbXV0ZXgtZGVzaWduLnR4dApA QCAtMSw0ICsxLDQgQEAKLVdhaXQvV291bmQgRGVhZGxvY2stUHJvb2YgTXV0ZXggRGVzaWduCitX b3VuZC9XYWl0IERlYWRsb2NrLVByb29mIE11dGV4IERlc2lnbgogPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KIAogUGxlYXNlIHJlYWQgbXV0ZXgtZGVzaWduLnR4dCBmaXJz dCwgYXMgaXQgYXBwbGllcyB0byB3YWl0L3dvdW5kIG11dGV4ZXMgdG9vLgpAQCAtMzIsMTAgKzMy LDIzIEBAIHRoZSBvbGRlc3QgdGFzaykgd2lucywgYW5kIHRoZSBvbmUgd2l0aCB0aGUgaGlnaGVy IHJlc2VydmF0aW9uIGlkIChpLmUuIHRoZQogeW91bmdlciB0YXNrKSB1bmxvY2tzIGFsbCBvZiB0 aGUgYnVmZmVycyB0aGF0IGl0IGhhcyBhbHJlYWR5IGxvY2tlZCwgYW5kIHRoZW4KIHRyaWVzIGFn YWluLgogCi1JbiB0aGUgUkRCTVMgbGl0ZXJhdHVyZSB0aGlzIGRlYWRsb2NrIGhhbmRsaW5nIGFw cHJvYWNoIGlzIGNhbGxlZCB3YWl0L3dvdW5kOgotVGhlIG9sZGVyIHRhc2tzIHdhaXRzIHVudGls IGl0IGNhbiBhY3F1aXJlIHRoZSBjb250ZW5kZWQgbG9jay4gVGhlIHlvdW5nZXIgdGFza3MKLW5l ZWRzIHRvIGJhY2sgb2ZmIGFuZCBkcm9wIGFsbCB0aGUgbG9ja3MgaXQgaXMgY3VycmVudGx5IGhv bGRpbmcsIGkuZS4gdGhlCi15b3VuZ2VyIHRhc2sgaXMgd291bmRlZC4KK0luIHRoZSBSREJNUyBs aXRlcmF0dXJlLCBhIHJlc2VydmF0aW9uIHRpY2tldCBpcyBhc3NvY2lhdGVkIHdpdGggYSB0cmFu c2FjdGlvbi4KK2FuZCB0aGUgZGVhZGxvY2sgaGFuZGxpbmcgYXBwcm9hY2ggaXMgY2FsbGVkIFdh aXQtRGllLiBUaGUgbmFtZSBpcyBiYXNlZCBvbgordGhlIGFjdGlvbnMgb2YgYSBsb2NraW5nIHRo cmVhZCB3aGVuIGl0IGVuY291bnRlcnMgYW4gYWxyZWFkeSBsb2NrZWQgbXV0ZXguCitJZiB0aGUg dHJhbnNhY3Rpb24gaG9sZGluZyB0aGUgbG9jayBpcyB5b3VuZ2VyLCB0aGUgbG9ja2luZyB0cmFu c2FjdGlvbiB3YWl0cy4KK0lmIHRoZSB0cmFuc2FjdGlvbiBob2xkaW5nIHRoZSBsb2NrIGlzIG9s ZGVyLCB0aGUgbG9ja2luZyB0cmFuc2FjdGlvbiBiYWNrcyBvZmYKK2FuZCBkaWVzLiBIZW5jZSBX YWl0LURpZS4KK1RoZXJlIGlzIGFsc28gYW5vdGhlciBhbGdvcml0aG0gY2FsbGVkIFdvdW5kLVdh aXQ6CitJZiB0aGUgdHJhbnNhY3Rpb24gaG9sZGluZyB0aGUgbG9jayBpcyB5b3VuZ2VyLCB0aGUg bG9ja2luZyB0cmFuc2FjdGlvbgorcHJlZW1wdHMgdGhlIHRyYW5zYWN0aW9uIGhvbGRpbmcgdGhl IGxvY2ssIHJlcXVpcmluZyBpdCB0byBiYWNrIG9mZi4gSXQKK1dvdW5kcyB0aGUgb3RoZXIgdHJh bnNhY3Rpb24uCitJZiB0aGUgdHJhbnNhY3Rpb24gaG9sZGluZyB0aGUgbG9jayBpcyBvbGRlciwg aXQgd2FpdHMgZm9yIHRoZSBvdGhlcgordHJhbnNhY3Rpb24uIEhlbmNlIFdvdW5kLVdhaXQuCitU aGUgdHdvIGFsZ29yaXRobXMgYXJlIGJvdGggZmFpciBpbiB0aGF0IGEgdHJhbnNhY3Rpb24gd2ls bCBldmVudHVhbGx5IHN1Y2NlZWQuCitIb3dldmVyLCB0aGUgV291bmQtV2FpdCBhbGdvcml0aG0g aXMgdHlwaWNhbGx5IHN0YXRlZCB0byBnZW5lcmF0ZSBmZXdlciBiYWNrb2ZmcworY29tcGFyZWQg dG8gV2FpdC1EaWUsIGJ1dCBpcywgb24gdGhlIG90aGVyIGhhbmQsIGFzc29jaWF0ZWQgd2l0aCBt b3JlIHdvcmsgdGhhbgorV2FpdC1EaWUgd2hlbiByZWNvdmVyaW5nIGZyb20gYSBiYWNrb2ZmLiBX b3VuZC1XYWl0IGlzIGFsc28gYSBwcmVlbXB0aXZlCithbGdvcml0aG0gd2hpY2ggcmVxdWlyZXMg YSByZWxpYWJsZSB3YXkgdG8gcHJlZW1wdCBhbm90aGVyIHRyYW5zYWN0aW9uLgogCiBDb25jZXB0 cwogLS0tLS0tLS0KQEAgLTQ3LDEwICs2MCwxMiBAQCBBY3F1aXJlIGNvbnRleHQ6IFRvIGVuc3Vy ZSBldmVudHVhbCBmb3J3YXJkIHByb2dyZXNzIGl0IGlzIGltcG9ydGFudCB0aGUgYSB0YXNrCiB0 cnlpbmcgdG8gYWNxdWlyZSBsb2NrcyBkb2Vzbid0IGdyYWIgYSBuZXcgcmVzZXJ2YXRpb24gaWQs IGJ1dCBrZWVwcyB0aGUgb25lIGl0CiBhY3F1aXJlZCB3aGVuIHN0YXJ0aW5nIHRoZSBsb2NrIGFj cXVpc2l0aW9uLiBUaGlzIHRpY2tldCBpcyBzdG9yZWQgaW4gdGhlCiBhY3F1aXJlIGNvbnRleHQu IEZ1cnRoZXJtb3JlIHRoZSBhY3F1aXJlIGNvbnRleHQga2VlcHMgdHJhY2sgb2YgZGVidWdnaW5n IHN0YXRlCi10byBjYXRjaCB3L3cgbXV0ZXggaW50ZXJmYWNlIGFidXNlLgordG8gY2F0Y2ggdy93 IG11dGV4IGludGVyZmFjZSBhYnVzZS4gQW4gYWNxdWlyZSBjb250ZXh0IGlzIHJlcHJlc2VudGlu ZyBhCit0cmFuc2FjdGlvbi4KIAogVy93IGNsYXNzOiBJbiBjb250cmFzdCB0byBub3JtYWwgbXV0 ZXhlcyB0aGUgbG9jayBjbGFzcyBuZWVkcyB0byBiZSBleHBsaWNpdCBmb3IKLXcvdyBtdXRleGVz LCBzaW5jZSBpdCBpcyByZXF1aXJlZCB0byBpbml0aWFsaXplIHRoZSBhY3F1aXJlIGNvbnRleHQu Cit3L3cgbXV0ZXhlcywgc2luY2UgaXQgaXMgcmVxdWlyZWQgdG8gaW5pdGlhbGl6ZSB0aGUgYWNx dWlyZSBjb250ZXh0LiBUaGUgbG9jaworY2xhc3MgYWxzbyBzcGVjaWZpZXMgd2hhdCBhbGdvcml0 aG0gdG8gdXNlLCBXb3VuZC1XYWl0IG9yIFdhaXQtRGllLgogCiBGdXJ0aGVybW9yZSB0aGVyZSBh cmUgdGhyZWUgZGlmZmVyZW50IGNsYXNzIG9mIHcvdyBsb2NrIGFjcXVpcmUgZnVuY3Rpb25zOgog CkBAIC05MCwxMCArMTA1LDE1IEBAIHByb3ZpZGVkLgogVXNhZ2UKIC0tLS0tCiAKK1RoZSBhbGdv cml0aG0gKFdhaXQtRGllIHZzIFdvdW5kLVdhaXQpIGlzIGNob3NlbiB1c2luZyB0aGUgX2lzX3dh aXRfZGllCithcmd1bWVudCB0byBERUZJTkVfV1dfQ0xBU1MoKS4gQXMgYSByb3VnaCBydWxlIG9m IHRodW1iLCB1c2UgV291bmQtV2FpdCBpZmYgeW91Cit0eXBpY2FsbHkgZXhwZWN0IHRoZSBudW1i ZXIgb2Ygc2ltdWx0YW5lb3VzIGNvbXBldGluZyB0cmFuc2FjdGlvbnMgdG8gYmUgc21hbGwsCith bmQgdGhlIHJvbGxiYWNrIGNvc3QgY2FuIGJlIHN1YnN0YW50aWFsLgorCiBUaHJlZSBkaWZmZXJl bnQgd2F5cyB0byBhY3F1aXJlIGxvY2tzIHdpdGhpbiB0aGUgc2FtZSB3L3cgY2xhc3MuIENvbW1v bgogZGVmaW5pdGlvbnMgZm9yIG1ldGhvZHMgIzEgYW5kICMyOgogCi1zdGF0aWMgREVGSU5FX1dX X0NMQVNTKHd3X2NsYXNzKTsKK3N0YXRpYyBERUZJTkVfV1dfQ0xBU1Mod3dfY2xhc3MsIGZhbHNl KTsKIAogc3RydWN0IG9iaiB7CiAJc3RydWN0IHd3X211dGV4IGxvY2s7CkBAIC0yNDMsNyArMjYz LDcgQEAgc3RydWN0IG9iaiB7CiAJc3RydWN0IGxpc3RfaGVhZCBsb2NrZWRfbGlzdDsKIH07CiAK LXN0YXRpYyBERUZJTkVfV1dfQ0xBU1Mod3dfY2xhc3MpOworc3RhdGljIERFRklORV9XV19DTEFT Uyh3d19jbGFzcywgZmFsc2UpOwogCiB2b2lkIF9fdW5sb2NrX29ianMoc3RydWN0IGxpc3RfaGVh ZCAqbGlzdCkKIHsKQEAgLTMxMiwxMiArMzMyLDIzIEBAIERlc2lnbjoKICAgV2UgbWFpbnRhaW4g dGhlIGZvbGxvd2luZyBpbnZhcmlhbnRzIGZvciB0aGUgd2FpdCBsaXN0OgogICAoMSkgV2FpdGVy cyB3aXRoIGFuIGFjcXVpcmUgY29udGV4dCBhcmUgc29ydGVkIGJ5IHN0YW1wIG9yZGVyOyB3YWl0 ZXJzCiAgICAgICB3aXRob3V0IGFuIGFjcXVpcmUgY29udGV4dCBhcmUgaW50ZXJzcGVyc2VkIGlu IEZJRk8gb3JkZXIuCi0gICgyKSBBbW9uZyB3YWl0ZXJzIHdpdGggY29udGV4dHMsIG9ubHkgdGhl IGZpcnN0IG9uZSBjYW4gaGF2ZSBvdGhlciBsb2NrcwotICAgICAgYWNxdWlyZWQgYWxyZWFkeSAo Y3R4LT5hY3F1aXJlZCA+IDApLiBOb3RlIHRoYXQgdGhpcyB3YWl0ZXIgbWF5IGNvbWUKLSAgICAg IGFmdGVyIG90aGVyIHdhaXRlcnMgd2l0aG91dCBjb250ZXh0cyBpbiB0aGUgbGlzdC4KKyAgKDIp IEZvciBXYWl0LURpZSwgYW1vbmcgd2FpdGVycyB3aXRoIGNvbnRleHRzLCBvbmx5IHRoZSBmaXJz dCBvbmUgY2FuIGhhdmUKKyAgICAgIG90aGVyIGxvY2tzIGFjcXVpcmVkIGFscmVhZHkgKGN0eC0+ YWNxdWlyZWQgPiAwKS4gTm90ZSB0aGF0IHRoaXMgd2FpdGVyCisgICAgICBtYXkgY29tZSBhZnRl ciBvdGhlciB3YWl0ZXJzIHdpdGhvdXQgY29udGV4dHMgaW4gdGhlIGxpc3QuCisKKyAgVGhlIFdv dW5kLVdhaXQgcHJlZW1wdGlvbiBpcyBpbXBsZW1lbnRlZCB3aXRoIGEgbGF6eS1wcmVlbXB0aW9u IHNjaGVtZToKKyAgVGhlIHdvdW5kZWQgc3RhdHVzIG9mIHRoZSB0cmFuc2FjdGlvbiBpcyBjaGVj a2VkIG9ubHkgd2hlbiB0aGVyZSBpcworICBjb250ZW50aW9uIGZvciBhIG5ldyBsb2NrIGFuZCBo ZW5jZSBhIHRydWUgY2hhbmNlIG9mIGRlYWRsb2NrLiBJbiB0aGF0CisgIHNpdHVhdGlvbiwgaWYg dGhlIHRyYW5zYWN0aW9uIGlzIHdvdW5kZWQsIGl0IGJhY2tzIG9mZiwgY2xlYXJzIHRoZQorICB3 b3VuZGVkIHN0YXR1cyBhbmQgcmV0cmllcy4gQSBncmVhdCBiZW5lZml0IG9mIGltcGxlbWVudGlu ZyBwcmVlbXB0aW9uIGluCisgIHRoaXMgd2F5IGlzIHRoYXQgdGhlIHdvdW5kZWQgdHJhbnNhY3Rp b24gY2FuIGlkZW50aWZ5IGEgY29udGVuZGluZyBsb2NrIHRvCisgIHdhaXQgZm9yIGJlZm9yZSBy ZXN0YXJ0aW5nIHRoZSB0cmFuc2FjdGlvbi4gSnVzdCBibGluZGx5IHJlc3RhcnRpbmcgdGhlCisg IHRyYW5zYWN0aW9uIHdvdWxkIGxpa2VseSBtYWtlIHRoZSB0cmFuc2FjdGlvbiBlbmQgdXAgaW4g YSBzaXR1YXRpb24gd2hlcmUKKyAgaXQgd291bGQgaGF2ZSB0byBiYWNrIG9mZiBhZ2Fpbi4KIAog ICBJbiBnZW5lcmFsLCBub3QgbXVjaCBjb250ZW50aW9uIGlzIGV4cGVjdGVkLiBUaGUgbG9ja3Mg YXJlIHR5cGljYWxseSB1c2VkIHRvCi0gIHNlcmlhbGl6ZSBhY2Nlc3MgdG8gcmVzb3VyY2VzIGZv ciBkZXZpY2VzLgorICBzZXJpYWxpemUgYWNjZXNzIHRvIHJlc291cmNlcyBmb3IgZGV2aWNlcywg YW5kIG9wdGltaXphdGlvbiBmb2N1cyBzaG91bGQKKyAgdGhlcmVmb3JlIGJlIGRpcmVjdGVkIHRv d2FyZHMgdGhlIHVuY29udGVuZGVkIGNhc2VzLgogCiBMb2NrZGVwOgogICBTcGVjaWFsIGNhcmUg aGFzIGJlZW4gdGFrZW4gdG8gd2FybiBmb3IgYXMgbWFueSBjYXNlcyBvZiBhcGkgYWJ1c2UKZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZG1hLWJ1Zi9yZXNlcnZhdGlvbi5jIGIvZHJpdmVycy9kbWEtYnVm L3Jlc2VydmF0aW9uLmMKaW5kZXggMzE0ZWIxMDcxY2NlLi4wMzk1NzFiOWZlYTEgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvZG1hLWJ1Zi9yZXNlcnZhdGlvbi5jCisrKyBiL2RyaXZlcnMvZG1hLWJ1Zi9y ZXNlcnZhdGlvbi5jCkBAIC00Niw3ICs0Niw3IEBACiAgKiB3cml0ZS1zaWRlIHVwZGF0ZXMuCiAg Ki8KIAotREVGSU5FX1dXX0NMQVNTKHJlc2VydmF0aW9uX3d3X2NsYXNzKTsKK0RFRklORV9XV19D TEFTUyhyZXNlcnZhdGlvbl93d19jbGFzcywgdHJ1ZSk7CiBFWFBPUlRfU1lNQk9MKHJlc2VydmF0 aW9uX3d3X2NsYXNzKTsKIAogc3RydWN0IGxvY2tfY2xhc3Nfa2V5IHJlc2VydmF0aW9uX3NlcWNv dW50X2NsYXNzOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9tb2Rlc2V0X2xvY2su YyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fbW9kZXNldF9sb2NrLmMKaW5kZXggOGE1MTAwNjg1ODc1 Li5mMjJhN2VmNDFkZTEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fbW9kZXNldF9s b2NrLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9tb2Rlc2V0X2xvY2suYwpAQCAtNzAsNyAr NzAsNyBAQAogICogbGlzdHMgYW5kIGxvb2t1cCBkYXRhIHN0cnVjdHVyZXMuCiAgKi8KIAotc3Rh dGljIERFRklORV9XV19DTEFTUyhjcnRjX3d3X2NsYXNzKTsKK3N0YXRpYyBERUZJTkVfV1dfQ0xB U1MoY3J0Y193d19jbGFzcywgdHJ1ZSk7CiAKIC8qKgogICogZHJtX21vZGVzZXRfbG9ja19hbGwg LSB0YWtlIGFsbCBtb2Rlc2V0IGxvY2tzCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3d3X211 dGV4LmggYi9pbmNsdWRlL2xpbnV4L3d3X211dGV4LmgKaW5kZXggMzlmZGExOTViZjc4Li5hY2Mw ZDkzYWNjOGIgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvd3dfbXV0ZXguaAorKysgYi9pbmNs dWRlL2xpbnV4L3d3X211dGV4LmgKQEAgLTgsNiArOCw4IEBACiAgKgogICogV291bmQvd2FpdCBp bXBsZW1lbnRhdGlvbjoKICAqICBDb3B5cmlnaHQgKEMpIDIwMTMgQ2Fub25pY2FsIEx0ZC4KKyAq IENob2ljZSBvZiBhbGdvcml0aG06CisgKiAgQ29weXJpZ2h0IChDKSAyMDE4IFdNV2FyZSBJbmMu CiAgKgogICogVGhpcyBmaWxlIGNvbnRhaW5zIHRoZSBtYWluIGRhdGEgc3RydWN0dXJlIGFuZCBB UEkgZGVmaW5pdGlvbnMuCiAgKi8KQEAgLTIzLDE1ICsyNSwxNyBAQCBzdHJ1Y3Qgd3dfY2xhc3Mg ewogCXN0cnVjdCBsb2NrX2NsYXNzX2tleSBtdXRleF9rZXk7CiAJY29uc3QgY2hhciAqYWNxdWly ZV9uYW1lOwogCWNvbnN0IGNoYXIgKm11dGV4X25hbWU7CisJYm9vbCBpc193YWl0X2RpZTsKIH07 CiAKIHN0cnVjdCB3d19hY3F1aXJlX2N0eCB7CiAJc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrOwog CXVuc2lnbmVkIGxvbmcgc3RhbXA7CiAJdW5zaWduZWQgYWNxdWlyZWQ7CisJYm9vbCB3b3VuZGVk OworCXN0cnVjdCB3d19jbGFzcyAqd3dfY2xhc3M7CiAjaWZkZWYgQ09ORklHX0RFQlVHX01VVEVY RVMKIAl1bnNpZ25lZCBkb25lX2FjcXVpcmU7Ci0Jc3RydWN0IHd3X2NsYXNzICp3d19jbGFzczsK IAlzdHJ1Y3Qgd3dfbXV0ZXggKmNvbnRlbmRpbmdfbG9jazsKICNlbmRpZgogI2lmZGVmIENPTkZJ R19ERUJVR19MT0NLX0FMTE9DCkBAIC01OCwxNyArNjIsMTkgQEAgc3RydWN0IHd3X211dGV4IHsK ICMgZGVmaW5lIF9fV1dfQ0xBU1NfTVVURVhfSU5JVElBTElaRVIobG9ja25hbWUsIGNsYXNzKQog I2VuZGlmCiAKLSNkZWZpbmUgX19XV19DTEFTU19JTklUSUFMSVpFUih3d19jbGFzcykgXAorI2Rl ZmluZSBfX1dXX0NMQVNTX0lOSVRJQUxJWkVSKHd3X2NsYXNzLCBfaXNfd2FpdF9kaWUpICAgICAg XAogCQl7IC5zdGFtcCA9IEFUT01JQ19MT05HX0lOSVQoMCkgXAogCQksIC5hY3F1aXJlX25hbWUg PSAjd3dfY2xhc3MgIl9hY3F1aXJlIiBcCi0JCSwgLm11dGV4X25hbWUgPSAjd3dfY2xhc3MgIl9t dXRleCIgfQorCQksIC5tdXRleF9uYW1lID0gI3d3X2NsYXNzICJfbXV0ZXgiIFwKKyAgICAgICAg ICAgICAgICAsIC5pc193YWl0X2RpZSA9IF9pc193YWl0X2RpZSB9CiAKICNkZWZpbmUgX19XV19N VVRFWF9JTklUSUFMSVpFUihsb2NrbmFtZSwgY2xhc3MpIFwKIAkJeyAuYmFzZSA9ICBfX01VVEVY X0lOSVRJQUxJWkVSKGxvY2tuYW1lLmJhc2UpIFwKIAkJX19XV19DTEFTU19NVVRFWF9JTklUSUFM SVpFUihsb2NrbmFtZSwgY2xhc3MpIH0KIAotI2RlZmluZSBERUZJTkVfV1dfQ0xBU1MoY2xhc3Nu YW1lKSBcCi0Jc3RydWN0IHd3X2NsYXNzIGNsYXNzbmFtZSA9IF9fV1dfQ0xBU1NfSU5JVElBTEla RVIoY2xhc3NuYW1lKQorI2RlZmluZSBERUZJTkVfV1dfQ0xBU1MoY2xhc3NuYW1lLCBfaXNfd2Fp dF9kaWUpCQkJXAorCXN0cnVjdCB3d19jbGFzcyBjbGFzc25hbWUgPSBfX1dXX0NMQVNTX0lOSVRJ QUxJWkVSKGNsYXNzbmFtZSwgXAorCQkJCQkJCSAgIF9pc193YWl0X2RpZSkKIAogI2RlZmluZSBE RUZJTkVfV1dfTVVURVgobXV0ZXhuYW1lLCB3d19jbGFzcykgXAogCXN0cnVjdCB3d19tdXRleCBt dXRleG5hbWUgPSBfX1dXX01VVEVYX0lOSVRJQUxJWkVSKG11dGV4bmFtZSwgd3dfY2xhc3MpCkBA IC0xMjMsOCArMTI5LDkgQEAgc3RhdGljIGlubGluZSB2b2lkIHd3X2FjcXVpcmVfaW5pdChzdHJ1 Y3Qgd3dfYWNxdWlyZV9jdHggKmN0eCwKIAljdHgtPnRhc2sgPSBjdXJyZW50OwogCWN0eC0+c3Rh bXAgPSBhdG9taWNfbG9uZ19pbmNfcmV0dXJuX3JlbGF4ZWQoJnd3X2NsYXNzLT5zdGFtcCk7CiAJ Y3R4LT5hY3F1aXJlZCA9IDA7Ci0jaWZkZWYgQ09ORklHX0RFQlVHX01VVEVYRVMKIAljdHgtPnd3 X2NsYXNzID0gd3dfY2xhc3M7CisJY3R4LT53b3VuZGVkID0gZmFsc2U7CisjaWZkZWYgQ09ORklH X0RFQlVHX01VVEVYRVMKIAljdHgtPmRvbmVfYWNxdWlyZSA9IDA7CiAJY3R4LT5jb250ZW5kaW5n X2xvY2sgPSBOVUxMOwogI2VuZGlmCmRpZmYgLS1naXQgYS9rZXJuZWwvbG9ja2luZy9sb2NrdG9y dHVyZS5jIGIva2VybmVsL2xvY2tpbmcvbG9ja3RvcnR1cmUuYwppbmRleCA2ODUwZmZkNjkxMjUu Ljc3OGVkMDI2MzgyZiAxMDA2NDQKLS0tIGEva2VybmVsL2xvY2tpbmcvbG9ja3RvcnR1cmUuYwor KysgYi9rZXJuZWwvbG9ja2luZy9sb2NrdG9ydHVyZS5jCkBAIC0zNjUsNyArMzY1LDcgQEAgc3Rh dGljIHN0cnVjdCBsb2NrX3RvcnR1cmVfb3BzIG11dGV4X2xvY2tfb3BzID0gewogfTsKIAogI2lu Y2x1ZGUgPGxpbnV4L3d3X211dGV4Lmg+Ci1zdGF0aWMgREVGSU5FX1dXX0NMQVNTKHRvcnR1cmVf d3dfY2xhc3MpOworc3RhdGljIERFRklORV9XV19DTEFTUyh0b3J0dXJlX3d3X2NsYXNzLCB0cnVl KTsKIHN0YXRpYyBERUZJTkVfV1dfTVVURVgodG9ydHVyZV93d19tdXRleF8wLCAmdG9ydHVyZV93 d19jbGFzcyk7CiBzdGF0aWMgREVGSU5FX1dXX01VVEVYKHRvcnR1cmVfd3dfbXV0ZXhfMSwgJnRv cnR1cmVfd3dfY2xhc3MpOwogc3RhdGljIERFRklORV9XV19NVVRFWCh0b3J0dXJlX3d3X211dGV4 XzIsICZ0b3J0dXJlX3d3X2NsYXNzKTsKZGlmZiAtLWdpdCBhL2tlcm5lbC9sb2NraW5nL211dGV4 LmMgYi9rZXJuZWwvbG9ja2luZy9tdXRleC5jCmluZGV4IDIwNDgzNTlmMzNkMi4uYjZlNzMwYzdk NDJjIDEwMDY0NAotLS0gYS9rZXJuZWwvbG9ja2luZy9tdXRleC5jCisrKyBiL2tlcm5lbC9sb2Nr aW5nL211dGV4LmMKQEAgLTI5MCwxMiArMjkwLDQ2IEBAIF9fd3dfY3R4X3N0YW1wX2FmdGVyKHN0 cnVjdCB3d19hY3F1aXJlX2N0eCAqYSwgc3RydWN0IHd3X2FjcXVpcmVfY3R4ICpiKQogCSAgICAg ICAoYS0+c3RhbXAgIT0gYi0+c3RhbXAgfHwgYSA+IGIpOwogfQogCisvKgorICogV291bmQgdGhl IGxvY2sgaG9sZGVyIHRyYW5zYWN0aW9uIGlmIGl0J3MgeW91bmdlciB0aGFuIHRoZSBjb250ZW5k aW5nCisgKiB0cmFuc2FjdGlvbiwgYW5kIHRoZXJlIGlzIGEgcG9zc2liaWxpdHkgb2YgYSBkZWFk bG9jay4KKyAqIEFsc28gaWYgdGhlIGxvY2sgaG9sZGVyIHRyYW5zYWN0aW9uIGlzbid0IHRoZSBj dXJyZW50IHRyYW5zYWN0aW9uLAorICogTWFrZSBzdXJlIGl0J3Mgd29rZW4gdXAgaW4gY2FzZSBp dCdzIHNsZWVwaW5nIG9uIGFub3RoZXIgd3cgbXV0ZXguCisgKi8KK3N0YXRpYyBib29sIF9fd3df bXV0ZXhfd291bmQoc3RydWN0IG11dGV4ICpsb2NrLAorCQkJICAgICBzdHJ1Y3Qgd3dfYWNxdWly ZV9jdHggKnd3X2N0eCwKKwkJCSAgICAgc3RydWN0IHd3X2FjcXVpcmVfY3R4ICpob2xkX2N0eCkK K3sKKwlzdHJ1Y3QgdGFza19zdHJ1Y3QgKm93bmVyID0gX19vd25lcl90YXNrKGF0b21pY19sb25n X3JlYWQoJmxvY2stPm93bmVyKSk7CisKKwlsb2NrZGVwX2Fzc2VydF9oZWxkKCZsb2NrLT53YWl0 X2xvY2spOworCisJaWYgKG93bmVyICYmIGhvbGRfY3R4ICYmIF9fd3dfY3R4X3N0YW1wX2FmdGVy KGhvbGRfY3R4ICwgd3dfY3R4KSAmJgorCSAgICB3d19jdHgtPmFjcXVpcmVkID4gMCkgeworCQlo b2xkX2N0eC0+d291bmRlZCA9IHRydWU7CisJCWlmIChvd25lciAhPSBjdXJyZW50KSB7CisJCQkv KgorCQkJICogd2FrZV91cF9wcm9jZXNzKCkgaW5zZXJ0cyBhIHdyaXRlIG1lbW9yeSBiYXJyaWVy IHRvCisJCQkgKiBtYWtlIHN1cmUgb3duZXIgc2VlcyBpdCBpcyB3b3VuZGVkIGJlZm9yZQorCQkJ ICogVEFTS19SVU5OSU5HIGluIGNhc2UgaXQncyBzbGVlcGluZyBvbiBhbm90aGVyCisJCQkgKiB3 d19tdXRleC4gTm90ZSB0aGF0IG93bmVyIHBvaW50cyB0byBhIHZhbGlkCisJCQkgKiB0YXNrX3N0 cnVjdCBhcyBsb25nIGFzIHdlIGhvbGQgdGhlIHdhaXRfbG9jay4KKwkJCSAqLworCQkJd2FrZV91 cF9wcm9jZXNzKG93bmVyKTsKKwkJfQorCQlyZXR1cm4gdHJ1ZTsKKwl9CisKKwlyZXR1cm4gZmFs c2U7Cit9CisKIC8qCiAgKiBXYWtlIHVwIGFueSB3YWl0ZXJzIHRoYXQgbWF5IGhhdmUgdG8gYmFj ayBvZmYgd2hlbiB0aGUgbG9jayBpcyBoZWxkIGJ5IHRoZQogICogZ2l2ZW4gY29udGV4dC4KICAq CiAgKiBEdWUgdG8gdGhlIGludmFyaWFudHMgb24gdGhlIHdhaXQgbGlzdCwgdGhpcyBjYW4gb25s eSBhZmZlY3QgdGhlIGZpcnN0Ci0gKiB3YWl0ZXIgd2l0aCBhIGNvbnRleHQuCisgKiB3YWl0ZXIg d2l0aCBhIGNvbnRleHQsIHVubGVzcyB0aGUgV291bmQtV2FpdCBhbGdvcml0aG0gaXMgdXNlZCB3 aGVyZQorICogYWxzbyBzdWJzZXF1ZW50IHdhaXRlcnMgd2l0aCBhIGNvbnRleHQgbWFpbiB3b3Vu ZCB0aGUgbG9jayBob2xkZXIuCiAgKgogICogVGhlIGN1cnJlbnQgdGFzayBtdXN0IG5vdCBiZSBv biB0aGUgd2FpdCBsaXN0LgogICovCkBAIC0zMDMsMjAgKzMzNywyMiBAQCBzdGF0aWMgdm9pZCBf X3NjaGVkCiBfX3d3X211dGV4X3dha2V1cF9mb3JfYmFja29mZihzdHJ1Y3QgbXV0ZXggKmxvY2ss IHN0cnVjdCB3d19hY3F1aXJlX2N0eCAqd3dfY3R4KQogewogCXN0cnVjdCBtdXRleF93YWl0ZXIg KmN1cjsKLQorCWJvb2wgaXNfd2FpdF9kaWUgPSB3d19jdHgtPnd3X2NsYXNzLT5pc193YWl0X2Rp ZTsKKwkKIAlsb2NrZGVwX2Fzc2VydF9oZWxkKCZsb2NrLT53YWl0X2xvY2spOwogCiAJbGlzdF9m b3JfZWFjaF9lbnRyeShjdXIsICZsb2NrLT53YWl0X2xpc3QsIGxpc3QpIHsKIAkJaWYgKCFjdXIt Pnd3X2N0eCkKIAkJCWNvbnRpbnVlOwogCi0JCWlmIChjdXItPnd3X2N0eC0+YWNxdWlyZWQgPiAw ICYmCisJCWlmIChpc193YWl0X2RpZSAmJiBjdXItPnd3X2N0eC0+YWNxdWlyZWQgPiAwICYmCiAJ CSAgICBfX3d3X2N0eF9zdGFtcF9hZnRlcihjdXItPnd3X2N0eCwgd3dfY3R4KSkgewogCQkJZGVi dWdfbXV0ZXhfd2FrZV93YWl0ZXIobG9jaywgY3VyKTsKIAkJCXdha2VfdXBfcHJvY2VzcyhjdXIt PnRhc2spOwogCQl9CiAKLQkJYnJlYWs7CisJCWlmIChpc193YWl0X2RpZSB8fCBfX3d3X211dGV4 X3dvdW5kKGxvY2ssIGN1ci0+d3dfY3R4LCB3d19jdHgpKQorCQkJYnJlYWs7CiAJfQogfQogCkBA IC0zMzgsMTIgKzM3NCwxNyBAQCB3d19tdXRleF9zZXRfY29udGV4dF9mYXN0cGF0aChzdHJ1Y3Qg d3dfbXV0ZXggKmxvY2ssIHN0cnVjdCB3d19hY3F1aXJlX2N0eCAqY3R4KQogCSAqIGFuZCBrZWVw IHNwaW5uaW5nLCBvciBpdCB3aWxsIGFjcXVpcmUgd2FpdF9sb2NrLCBhZGQgaXRzZWxmCiAJICog dG8gd2FpdGVyIGxpc3QgYW5kIHNsZWVwLgogCSAqLwotCXNtcF9tYigpOyAvKiBeXl4gKi8KKwlz bXBfbWIoKTsgLyogU2VlIGNvbW1lbnRzIGFib3ZlIGFuZCBiZWxvdy4gKi8KIAogCS8qCi0JICog Q2hlY2sgaWYgbG9jayBpcyBjb250ZW5kZWQsIGlmIG5vdCB0aGVyZSBpcyBub2JvZHkgdG8gd2Fr ZSB1cAorCSAqIENoZWNrIGlmIGxvY2sgaXMgY29udGVuZGVkLCBpZiBub3QgdGhlcmUgaXMgbm9i b2R5IHRvIHdha2UgdXAuCisJICogQ2hlY2tpbmcgTVVURVhfRkxBR19XQUlURVJTIGlzIG5vdCBl bm91Z2ggaGVyZSwgc2luY2Ugd2UgbmVlZCB0bworCSAqIG9yZGVyIGFnYWluc3QgdGhlIGxvY2st PmN0eCBjaGVjayBpbiBfX3d3X211dGV4X3dvdW5kIGNhbGxlZCBmcm9tCisJICogX193d19tdXRl eF9hZGRfd2FpdGVyLiBXZSBjYW4gdXNlIGxpc3RfZW1wdHkgd2l0aG91dCB0YWtpbmcgdGhlCisJ ICogd2FpdF9sb2NrLCBnaXZlbiB0aGUgbWVtb3J5IGJhcnJpZXIgYWJvdmUgYW5kIHRoZSBsaXN0 X2VtcHR5CisJICogZG9jdW1lbnRhdGlvbi4KIAkgKi8KLQlpZiAobGlrZWx5KCEoYXRvbWljX2xv bmdfcmVhZCgmbG9jay0+YmFzZS5vd25lcikgJiBNVVRFWF9GTEFHX1dBSVRFUlMpKSkKKwlpZiAo bGlrZWx5KGxpc3RfZW1wdHkoJmxvY2stPmJhc2Uud2FpdF9saXN0KSkpCiAJCXJldHVybjsKIAog CS8qCkBAIC02NTMsNiArNjk0LDE5IEBAIF9fd3dfbXV0ZXhfbG9ja19jaGVja19zdGFtcChzdHJ1 Y3QgbXV0ZXggKmxvY2ssIHN0cnVjdCBtdXRleF93YWl0ZXIgKndhaXRlciwKIAlzdHJ1Y3Qgd3df YWNxdWlyZV9jdHggKmhvbGRfY3R4ID0gUkVBRF9PTkNFKHd3LT5jdHgpOwogCXN0cnVjdCBtdXRl eF93YWl0ZXIgKmN1cjsKIAorCS8qCisJICogSWYgd2UgbWlzcyBhIHdvdW5kZWQgPT0gdHJ1ZSBo ZXJlLCB3ZSB3aWxsIGhhdmUgYSBwZW5kaW5nCisJICogVEFTS19SVU5OSU5HIGFuZCBwaWNrIGl0 IHVwIG9uIHRoZSBuZXh0IHNjaGVkdWxlIGZhbGwtdGhyb3VnaCArCisJICogc3BpbmxvY2suCisJ ICovCisJaWYgKCFjdHgtPnd3X2NsYXNzLT5pc193YWl0X2RpZSkgeworCQlpZiAoY3R4LT53b3Vu ZGVkKSB7CisJCQlnb3RvIGRlYWRsb2NrOworCQl9IGVsc2UgeworCQkJcmV0dXJuIDA7CisJCX0K Kwl9CisKIAlpZiAoaG9sZF9jdHggJiYgX193d19jdHhfc3RhbXBfYWZ0ZXIoY3R4LCBob2xkX2N0 eCkpCiAJCWdvdG8gZGVhZGxvY2s7CiAKQEAgLTY4MywxMiArNzM3LDE1IEBAIF9fd3dfbXV0ZXhf YWRkX3dhaXRlcihzdHJ1Y3QgbXV0ZXhfd2FpdGVyICp3YWl0ZXIsCiB7CiAJc3RydWN0IG11dGV4 X3dhaXRlciAqY3VyOwogCXN0cnVjdCBsaXN0X2hlYWQgKnBvczsKKwlib29sIGlzX3dhaXRfZGll OwogCiAJaWYgKCF3d19jdHgpIHsKIAkJbGlzdF9hZGRfdGFpbCgmd2FpdGVyLT5saXN0LCAmbG9j ay0+d2FpdF9saXN0KTsKIAkJcmV0dXJuIDA7CiAJfQogCisJaXNfd2FpdF9kaWUgPSB3d19jdHgt Pnd3X2NsYXNzLT5pc193YWl0X2RpZTsKKwogCS8qCiAJICogQWRkIHRoZSB3YWl0ZXIgYmVmb3Jl IHRoZSBmaXJzdCB3YWl0ZXIgd2l0aCBhIGhpZ2hlciBzdGFtcC4KIAkgKiBXYWl0ZXJzIHdpdGhv dXQgYSBjb250ZXh0IGFyZSBza2lwcGVkIHRvIGF2b2lkIHN0YXJ2aW5nCkBAIC03MDEsNyArNzU4 LDcgQEAgX193d19tdXRleF9hZGRfd2FpdGVyKHN0cnVjdCBtdXRleF93YWl0ZXIgKndhaXRlciwK IAogCQlpZiAoX193d19jdHhfc3RhbXBfYWZ0ZXIod3dfY3R4LCBjdXItPnd3X2N0eCkpIHsKIAkJ CS8qIEJhY2sgb2ZmIGltbWVkaWF0ZWx5IGlmIG5lY2Vzc2FyeS4gKi8KLQkJCWlmICh3d19jdHgt PmFjcXVpcmVkID4gMCkgeworCQkJaWYgKGlzX3dhaXRfZGllICYmIHd3X2N0eC0+YWNxdWlyZWQg PiAwKSB7CiAjaWZkZWYgQ09ORklHX0RFQlVHX01VVEVYRVMKIAkJCQlzdHJ1Y3Qgd3dfbXV0ZXgg Knd3OwogCkBAIC03MjEsMTMgKzc3OCwyNiBAQCBfX3d3X211dGV4X2FkZF93YWl0ZXIoc3RydWN0 IG11dGV4X3dhaXRlciAqd2FpdGVyLAogCQkgKiBXYWtlIHVwIHRoZSB3YWl0ZXIgc28gdGhhdCBp dCBnZXRzIGEgY2hhbmNlIHRvIGJhY2sKIAkJICogb2ZmLgogCQkgKi8KLQkJaWYgKGN1ci0+d3df Y3R4LT5hY3F1aXJlZCA+IDApIHsKKwkJaWYgKGlzX3dhaXRfZGllICYmIGN1ci0+d3dfY3R4LT5h Y3F1aXJlZCA+IDApIHsKIAkJCWRlYnVnX211dGV4X3dha2Vfd2FpdGVyKGxvY2ssIGN1cik7CiAJ CQl3YWtlX3VwX3Byb2Nlc3MoY3VyLT50YXNrKTsKIAkJfQogCX0KIAogCWxpc3RfYWRkX3RhaWwo JndhaXRlci0+bGlzdCwgcG9zKTsKKwlpZiAoIWlzX3dhaXRfZGllKSB7CisJCXN0cnVjdCB3d19t dXRleCAqd3cgPSBjb250YWluZXJfb2YobG9jaywgc3RydWN0IHd3X211dGV4LCBiYXNlKTsKKwor CQkvKgorCQkgKiBNYWtlIHN1cmUgYSByYWNpbmcgbG9jayB0YWtlciBzZWVzIGEgbm9uLWVtcHR5 IHdhaXRpbmcgbGlzdAorCQkgKiBiZWZvcmUgd2UgcmVhZCB3dy0+Y3R4LCBzbyB0aGF0IGlmIHdl IG1pc3Mgd3ctPmN0eCwgdGhlCisJCSAqIHJhY2luZyBsb2NrIHRha2VyIHdpbGwgY2FsbCBfX3d3 X211dGV4X3dha2VfdXBfZm9yX2JhY2tvZmYoKQorCQkgKiBhbmQgd291bmQgaXRzZWxmLgorCQkg Ki8KKwkJc21wX21iKCk7CisJCV9fd3dfbXV0ZXhfd291bmQobG9jaywgd3dfY3R4LCB3dy0+Y3R4 KTsKKwl9CisKIAlyZXR1cm4gMDsKIH0KIApAQCAtNzUwLDYgKzgyMCwxNCBAQCBfX211dGV4X2xv Y2tfY29tbW9uKHN0cnVjdCBtdXRleCAqbG9jaywgbG9uZyBzdGF0ZSwgdW5zaWduZWQgaW50IHN1 YmNsYXNzLAogCWlmICh1c2Vfd3dfY3R4ICYmIHd3X2N0eCkgewogCQlpZiAodW5saWtlbHkod3df Y3R4ID09IFJFQURfT05DRSh3dy0+Y3R4KSkpCiAJCQlyZXR1cm4gLUVBTFJFQURZOworCisJCS8q CisJCSAqIFJlc2V0IHRoZSB3b3VuZGVkIGZsYWcgYWZ0ZXIgYSBiYWNrb2ZmLgorCQkgKiBObyBv dGhlciBwcm9jZXNzIGNhbiByYWNlIGFuZCB3b3VuZCB1cyBoZXJlIHNpbmNlIHRoZXkKKwkJICog Y2FuJ3QgaGF2ZSBhIHZhbGlkIG93bmVyIHBvaW50ZXIgYXQgdGhpcyB0aW1lCisJCSAqLworCQlp ZiAod3dfY3R4LT5hY3F1aXJlZCA9PSAwKQorCQkJd3dfY3R4LT53b3VuZGVkID0gZmFsc2U7CiAJ fQogCiAJcHJlZW1wdF9kaXNhYmxlKCk7CkBAIC04NTgsNiArOTM2LDExIEBAIF9fbXV0ZXhfbG9j a19jb21tb24oc3RydWN0IG11dGV4ICpsb2NrLCBsb25nIHN0YXRlLCB1bnNpZ25lZCBpbnQgc3Vi Y2xhc3MsCiBhY3F1aXJlZDoKIAlfX3NldF9jdXJyZW50X3N0YXRlKFRBU0tfUlVOTklORyk7CiAK KwkvKiBXZSBzdG9sZSB0aGUgbG9jay4gTmVlZCB0byBjaGVjayB3b3VuZGVkIHN0YXR1cy4gKi8K KwlpZiAodXNlX3d3X2N0eCAmJiB3d19jdHggJiYgIXd3X2N0eC0+d3dfY2xhc3MtPmlzX3dhaXRf ZGllICYmCisJICAgICFfX211dGV4X3dhaXRlcl9pc19maXJzdChsb2NrLCAmd2FpdGVyKSkKKwkJ X193d19tdXRleF93YWtldXBfZm9yX2JhY2tvZmYobG9jaywgd3dfY3R4KTsKKwogCW11dGV4X3Jl bW92ZV93YWl0ZXIobG9jaywgJndhaXRlciwgY3VycmVudCk7CiAJaWYgKGxpa2VseShsaXN0X2Vt cHR5KCZsb2NrLT53YWl0X2xpc3QpKSkKIAkJX19tdXRleF9jbGVhcl9mbGFnKGxvY2ssIE1VVEVY X0ZMQUdTKTsKZGlmZiAtLWdpdCBhL2tlcm5lbC9sb2NraW5nL3Rlc3Qtd3dfbXV0ZXguYyBiL2tl cm5lbC9sb2NraW5nL3Rlc3Qtd3dfbXV0ZXguYwppbmRleCAwZTRjZDY0YWQyYzAuLmM3ZmMxMTJk NjkxZCAxMDA2NDQKLS0tIGEva2VybmVsL2xvY2tpbmcvdGVzdC13d19tdXRleC5jCisrKyBiL2tl cm5lbC9sb2NraW5nL3Rlc3Qtd3dfbXV0ZXguYwpAQCAtMjYsNyArMjYsNyBAQAogI2luY2x1ZGUg PGxpbnV4L3NsYWIuaD4KICNpbmNsdWRlIDxsaW51eC93d19tdXRleC5oPgogCi1zdGF0aWMgREVG SU5FX1dXX0NMQVNTKHd3X2NsYXNzKTsKK3N0YXRpYyBERUZJTkVfV1dfQ0xBU1Mod3dfY2xhc3Ms IHRydWUpOwogc3RydWN0IHdvcmtxdWV1ZV9zdHJ1Y3QgKndxOwogCiBzdHJ1Y3QgdGVzdF9tdXRl eCB7CmRpZmYgLS1naXQgYS9saWIvbG9ja2luZy1zZWxmdGVzdC5jIGIvbGliL2xvY2tpbmctc2Vs ZnRlc3QuYwppbmRleCBiNWMxMjkzY2UxNDcuLmU1MjA2NWYyYWNiZiAxMDA2NDQKLS0tIGEvbGli L2xvY2tpbmctc2VsZnRlc3QuYworKysgYi9saWIvbG9ja2luZy1zZWxmdGVzdC5jCkBAIC0yOSw3 ICsyOSw3IEBACiAgKi8KIHN0YXRpYyB1bnNpZ25lZCBpbnQgZGVidWdfbG9ja3NfdmVyYm9zZTsK IAotc3RhdGljIERFRklORV9XV19DTEFTUyh3d19sb2NrZGVwKTsKK3N0YXRpYyBERUZJTkVfV1df Q0xBU1Mod3dfbG9ja2RlcCwgdHJ1ZSk7CiAKIHN0YXRpYyBpbnQgX19pbml0IHNldHVwX2RlYnVn X2xvY2tzX3ZlcmJvc2UoY2hhciAqc3RyKQogewotLSAKMi4xNC4zCgpfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRy aS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5v cmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK