From mboxrd@z Thu Jan 1 00:00:00 1970 From: Peter Zijlstra Subject: Re: [PATCH 1/2] locking: Implement an algorithm choice for Wound-Wait mutexes Date: Wed, 13 Jun 2018 11:50:12 +0200 Message-ID: <20180613095012.GW12198@hirez.programming.kicks-ass.net> References: <20180613074745.14750-1-thellstrom@vmware.com> <20180613074745.14750-2-thellstrom@vmware.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from bombadil.infradead.org (bombadil.infradead.org [IPv6:2607:7c80:54:e::133]) by gabe.freedesktop.org (Postfix) with ESMTPS id 634AC6E032 for ; Wed, 13 Jun 2018 09:50:33 +0000 (UTC) Content-Disposition: inline In-Reply-To: <20180613074745.14750-2-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: Thomas Hellstrom Cc: Kate Stewart , Davidlohr Bueso , Jonathan Corbet , David Airlie , linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, Josh Triplett , linaro-mm-sig@lists.linaro.org, Greg Kroah-Hartman , Ingo Molnar , Philippe Ombredanne , Thomas Gleixner , "Paul E. McKenney" , linux-media@vger.kernel.org List-Id: dri-devel@lists.freedesktop.org Ci9tZSB3b25kZXJzIHdoYXQncyB1cCB3aXRoIHBhcnRpYWwgQ2MncyB0b2RheS4uCgpPbiBXZWQs IEp1biAxMywgMjAxOCBhdCAwOTo0Nzo0NEFNICswMjAwLCBUaG9tYXMgSGVsbHN0cm9tIHdyb3Rl Ogo+IFRoZSBjdXJyZW50IFdvdW5kLVdhaXQgbXV0ZXggYWxnb3JpdGhtIGlzIGFjdHVhbGx5IG5v dCBXb3VuZC1XYWl0IGJ1dAo+IFdhaXQtRGllLiBJbXBsZW1lbnQgYWxzbyBXb3VuZC1XYWl0IGFz IGEgcGVyLXd3LWNsYXNzIGNob2ljZS4gV291bmQtV2FpdAo+IGlzLCBjb250cmFyeSB0byBXYWl0 LURpZSBhIHByZWVtcHRpdmUgYWxnb3JpdGhtIGFuZCBpcyBrbm93biB0byBnZW5lcmF0ZQo+IGZl d2VyIGJhY2tvZmZzLiBUZXN0aW5nIHJldmVhbHMgdGhhdCB0aGlzIGlzIHRydWUgaWYgdGhlCj4g bnVtYmVyIG9mIHNpbXVsdGFuZW91cyBjb250ZW5kaW5nIHRyYW5zYWN0aW9ucyBpcyBzbWFsbC4K PiBBcyB0aGUgbnVtYmVyIG9mIHNpbXVsdGFuZW91cyBjb250ZW5kaW5nIHRocmVhZHMgaW5jcmVh c2VzLCBXYWl0LVdvdW5kCj4gYmVjb21lcyBpbmZlcmlvciB0byBXYWl0LURpZSBpbiB0ZXJtcyBv ZiBlbGFwc2VkIHRpbWUuCj4gUG9zc2libHkgZHVlIHRvIHRoZSBsYXJnZXIgbnVtYmVyIG9mIGhl bGQgbG9ja3Mgb2Ygc2xlZXBpbmcgdHJhbnNhY3Rpb25zLgo+IAo+IFVwZGF0ZSBkb2N1bWVudGF0 aW9uIGFuZCBjYWxsZXJzLgo+IAo+IFRpbWluZ3MgdXNpbmcgZ2l0Oi8vcGVvcGxlLmZyZWVkZXNr dG9wLm9yZy9+dGhvbWFzaC93d19tdXRleF90ZXN0Cj4gdGFnIHBhdGNoLTE4LTA2LTA0Cj4gCj4g RWFjaCB0aHJlYWQgcnVucyAxMDAwMDAgYmF0Y2hlcyBvZiBsb2NrIC8gdW5sb2NrIDgwMCB3dyBt dXRleGVzIHJhbmRvbWx5Cj4gY2hvc2VuIG91dCBvZiAxMDAwMDAuIEZvdXIgY29yZSBJbnRlbCB4 ODZfNjQ6Cj4gCj4gQWxnb3JpdGhtICAgICN0aHJlYWRzICAgICAgIFJvbGxiYWNrcyAgdGltZQo+ IFdvdW5kLVdhaXQgICA0ICAgICAgICAgICAgICB+MTAwICAgICAgIH4xN3MuCj4gV2FpdC1EaWUg ICAgIDQgICAgICAgICAgICAgIH4xNTAwMDAgICAgfjE5cy4KPiBXb3VuZC1XYWl0ICAgMTYgICAg ICAgICAgICAgfjM2MDAwMCAgICB+MTA5cy4KPiBXYWl0LURpZSAgICAgMTYgICAgICAgICAgICAg fjQ1MDAwMCAgICB+ODJzLgoKPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC93d19tdXRleC5o IGIvaW5jbHVkZS9saW51eC93d19tdXRleC5oCj4gaW5kZXggMzlmZGExOTViZjc4Li42Mjc4MDc3 ZjI4OGIgMTAwNjQ0Cj4gLS0tIGEvaW5jbHVkZS9saW51eC93d19tdXRleC5oCj4gKysrIGIvaW5j bHVkZS9saW51eC93d19tdXRleC5oCj4gQEAgLTgsNiArOCw4IEBACj4gICAqCj4gICAqIFdvdW5k L3dhaXQgaW1wbGVtZW50YXRpb246Cj4gICAqICBDb3B5cmlnaHQgKEMpIDIwMTMgQ2Fub25pY2Fs IEx0ZC4KPiArICogQ2hvaWNlIG9mIGFsZ29yaXRobToKPiArICogIENvcHlyaWdodCAoQykgMjAx OCBXTVdhcmUgSW5jLgo+ICAgKgo+ICAgKiBUaGlzIGZpbGUgY29udGFpbnMgdGhlIG1haW4gZGF0 YSBzdHJ1Y3R1cmUgYW5kIEFQSSBkZWZpbml0aW9ucy4KPiAgICovCj4gQEAgLTIzLDE1ICsyNSwx NyBAQCBzdHJ1Y3Qgd3dfY2xhc3Mgewo+ICAJc3RydWN0IGxvY2tfY2xhc3Nfa2V5IG11dGV4X2tl eTsKPiAgCWNvbnN0IGNoYXIgKmFjcXVpcmVfbmFtZTsKPiAgCWNvbnN0IGNoYXIgKm11dGV4X25h bWU7Cj4gKwlib29sIGlzX3dhaXRfZGllOwo+ICB9OwoKTm8gX0Jvb2wgaW4gY29tcG9zaXRlcyBw bGVhc2UuCgo+ICBzdHJ1Y3Qgd3dfYWNxdWlyZV9jdHggewo+ICAJc3RydWN0IHRhc2tfc3RydWN0 ICp0YXNrOwo+ICAJdW5zaWduZWQgbG9uZyBzdGFtcDsKPiAgCXVuc2lnbmVkIGFjcXVpcmVkOwo+ ICsJYm9vbCB3b3VuZGVkOwoKQWdhaW4uCgo+ICsJc3RydWN0IHd3X2NsYXNzICp3d19jbGFzczsK PiAgI2lmZGVmIENPTkZJR19ERUJVR19NVVRFWEVTCj4gIAl1bnNpZ25lZCBkb25lX2FjcXVpcmU7 Cj4gLQlzdHJ1Y3Qgd3dfY2xhc3MgKnd3X2NsYXNzOwo+ICAJc3RydWN0IHd3X211dGV4ICpjb250 ZW5kaW5nX2xvY2s7Cj4gICNlbmRpZgo+ICAjaWZkZWYgQ09ORklHX0RFQlVHX0xPQ0tfQUxMT0MK Cj4gZGlmZiAtLWdpdCBhL2tlcm5lbC9sb2NraW5nL211dGV4LmMgYi9rZXJuZWwvbG9ja2luZy9t dXRleC5jCj4gaW5kZXggMjA0ODM1OWYzM2QyLi5iNDQ5YTAxMmM2ZjkgMTAwNjQ0Cj4gLS0tIGEv a2VybmVsL2xvY2tpbmcvbXV0ZXguYwo+ICsrKyBiL2tlcm5lbC9sb2NraW5nL211dGV4LmMKPiBA QCAtMjkwLDEyICsyOTAsNDcgQEAgX193d19jdHhfc3RhbXBfYWZ0ZXIoc3RydWN0IHd3X2FjcXVp cmVfY3R4ICphLCBzdHJ1Y3Qgd3dfYWNxdWlyZV9jdHggKmIpCj4gIAkgICAgICAgKGEtPnN0YW1w ICE9IGItPnN0YW1wIHx8IGEgPiBiKTsKPiAgfQo+ICAKPiArLyoKPiArICogV291bmQgdGhlIGxv Y2sgaG9sZGVyIHRyYW5zYWN0aW9uIGlmIGl0J3MgeW91bmdlciB0aGFuIHRoZSBjb250ZW5kaW5n Cj4gKyAqIHRyYW5zYWN0aW9uLCBhbmQgdGhlcmUgaXMgYSBwb3NzaWJpbGl0eSBvZiBhIGRlYWRs b2NrLgo+ICsgKiBBbHNvIGlmIHRoZSBsb2NrIGhvbGRlciB0cmFuc2FjdGlvbiBpc24ndCB0aGUg Y3VycmVudCB0cmFuc2FjdGlvbiwKCkNvbW1hIGZvbGxvd2VkIGJ5IGEgY2FwaXRhbD8KCj4gKyAq IE1ha2Ugc3VyZSBpdCdzIHdva2VuIHVwIGluIGNhc2UgaXQncyBzbGVlcGluZyBvbiBhbm90aGVy IHd3IG11dGV4LgoKPiArICovCj4gK3N0YXRpYyBib29sIF9fd3dfbXV0ZXhfd291bmQoc3RydWN0 IG11dGV4ICpsb2NrLAo+ICsJCQkgICAgIHN0cnVjdCB3d19hY3F1aXJlX2N0eCAqd3dfY3R4LAo+ ICsJCQkgICAgIHN0cnVjdCB3d19hY3F1aXJlX2N0eCAqaG9sZF9jdHgpCj4gK3sKPiArCXN0cnVj dCB0YXNrX3N0cnVjdCAqb3duZXIgPQo+ICsJCV9fb3duZXJfdGFzayhhdG9taWNfbG9uZ19yZWFk KCZsb2NrLT5vd25lcikpOwoKRGlkIHlvdSBqdXN0IHNwZWxsIF9fbXV0ZXhfb3duZXIoKSB3cm9u Zz8KCj4gKwo+ICsJbG9ja2RlcF9hc3NlcnRfaGVsZCgmbG9jay0+d2FpdF9sb2NrKTsKPiArCj4g KwlpZiAob3duZXIgJiYgaG9sZF9jdHggJiYgX193d19jdHhfc3RhbXBfYWZ0ZXIoaG9sZF9jdHgs IHd3X2N0eCkgJiYKPiArCSAgICB3d19jdHgtPmFjcXVpcmVkID4gMCkgewo+ICsJCVdSSVRFX09O Q0UoaG9sZF9jdHgtPndvdW5kZWQsIHRydWUpOwo+ICsJCWlmIChvd25lciAhPSBjdXJyZW50KSB7 Cj4gKwkJCS8qCj4gKwkJCSAqIHdha2VfdXBfcHJvY2VzcygpIGluc2VydHMgYSB3cml0ZSBtZW1v cnkgYmFycmllciB0bwoKSXQgZG9lcyBubyBzdWNoIHRoaW5nLiBCdXQgeWVzLCBpdCBkb2VzIGVu c3VyZSB0aGUgd2FrZWUgc2VlcyBhbGwgcHJpb3IKc3RvcmVzIElGRiB0aGUgd2FrZXVwIGhhcHBl bmVkLgoKPiArCQkJICogbWFrZSBzdXJlIG93bmVyIHNlZXMgaXQgaXMgd291bmRlZCBiZWZvcmUK PiArCQkJICogVEFTS19SVU5OSU5HIGluIGNhc2UgaXQncyBzbGVlcGluZyBvbiBhbm90aGVyCj4g KwkJCSAqIHd3X211dGV4LiBOb3RlIHRoYXQgb3duZXIgcG9pbnRzIHRvIGEgdmFsaWQKPiArCQkJ ICogdGFza19zdHJ1Y3QgYXMgbG9uZyBhcyB3ZSBob2xkIHRoZSB3YWl0X2xvY2suCj4gKwkJCSAq LwoKV2hhdCBleGFjdGx5IGFyZSB5b3UgdHJ5aW5nIHRvIHNheSBoZXJlID8KCkknbSB0aGlua2lu ZyB0aGlzIGlzIHRoZSBwYWlyaW5nIGJhcnJpZXIgdG8gdGhlIHNtcF9tYigpIGJlbG93LCB3aXRo CnlvdXIgbGlzdF9lbXB0eSgpIHRoaW5nPyBNaWdodCBtYWtlIHNlbnNlIHRvIHdyaXRlIGEgc2lu Z2xlIGNvaGVyZW50CmNvbW1lbnQgYW5kIHJlZmVyIHRvIHRoZSBvdGhlciBsb2NhdGlvbi4KCj4g KwkJCXdha2VfdXBfcHJvY2Vzcyhvd25lcik7Cj4gKwkJfQo+ICsJCXJldHVybiB0cnVlOwo+ICsJ fQo+ICsKPiArCXJldHVybiBmYWxzZTsKPiArfQo+ICsKPiAgLyoKPiAgICogV2FrZSB1cCBhbnkg d2FpdGVycyB0aGF0IG1heSBoYXZlIHRvIGJhY2sgb2ZmIHdoZW4gdGhlIGxvY2sgaXMgaGVsZCBi eSB0aGUKPiAgICogZ2l2ZW4gY29udGV4dC4KPiAgICoKPiAgICogRHVlIHRvIHRoZSBpbnZhcmlh bnRzIG9uIHRoZSB3YWl0IGxpc3QsIHRoaXMgY2FuIG9ubHkgYWZmZWN0IHRoZSBmaXJzdAo+IC0g KiB3YWl0ZXIgd2l0aCBhIGNvbnRleHQuCj4gKyAqIHdhaXRlciB3aXRoIGEgY29udGV4dCwgdW5s ZXNzIHRoZSBXb3VuZC1XYWl0IGFsZ29yaXRobSBpcyB1c2VkIHdoZXJlCj4gKyAqIGFsc28gc3Vi c2VxdWVudCB3YWl0ZXJzIHdpdGggYSBjb250ZXh0IG1haW4gd291bmQgdGhlIGxvY2sgaG9sZGVy Lgo+ICAgKgo+ICAgKiBUaGUgY3VycmVudCB0YXNrIG11c3Qgbm90IGJlIG9uIHRoZSB3YWl0IGxp c3QuCj4gICAqLwo+IEBAIC0zMDMsNiArMzM4LDcgQEAgc3RhdGljIHZvaWQgX19zY2hlZAo+ICBf X3d3X211dGV4X3dha2V1cF9mb3JfYmFja29mZihzdHJ1Y3QgbXV0ZXggKmxvY2ssIHN0cnVjdCB3 d19hY3F1aXJlX2N0eCAqd3dfY3R4KQo+ICB7Cj4gIAlzdHJ1Y3QgbXV0ZXhfd2FpdGVyICpjdXI7 Cj4gKwlib29sIGlzX3dhaXRfZGllID0gd3dfY3R4LT53d19jbGFzcy0+aXNfd2FpdF9kaWU7Cj4g IAo+ICAJbG9ja2RlcF9hc3NlcnRfaGVsZCgmbG9jay0+d2FpdF9sb2NrKTsKPiAgCj4gQEAgLTMx MCwxMyArMzQ2LDE0IEBAIF9fd3dfbXV0ZXhfd2FrZXVwX2Zvcl9iYWNrb2ZmKHN0cnVjdCBtdXRl eCAqbG9jaywgc3RydWN0IHd3X2FjcXVpcmVfY3R4ICp3d19jdHgpCj4gIAkJaWYgKCFjdXItPnd3 X2N0eCkKPiAgCQkJY29udGludWU7Cj4gIAo+IC0JCWlmIChjdXItPnd3X2N0eC0+YWNxdWlyZWQg PiAwICYmCj4gKwkJaWYgKGlzX3dhaXRfZGllICYmIGN1ci0+d3dfY3R4LT5hY3F1aXJlZCA+IDAg JiYKPiAgCQkgICAgX193d19jdHhfc3RhbXBfYWZ0ZXIoY3VyLT53d19jdHgsIHd3X2N0eCkpIHsK PiAgCQkJZGVidWdfbXV0ZXhfd2FrZV93YWl0ZXIobG9jaywgY3VyKTsKPiAgCQkJd2FrZV91cF9w cm9jZXNzKGN1ci0+dGFzayk7Cj4gIAkJfQo+ICAKPiAtCQlicmVhazsKPiArCQlpZiAoaXNfd2Fp dF9kaWUgfHwgX193d19tdXRleF93b3VuZChsb2NrLCBjdXItPnd3X2N0eCwgd3dfY3R4KSkKPiAr CQkJYnJlYWs7Cj4gIAl9Cj4gIH0KPiAgCj4gQEAgLTMzOCwxMiArMzc1LDE3IEBAIHd3X211dGV4 X3NldF9jb250ZXh0X2Zhc3RwYXRoKHN0cnVjdCB3d19tdXRleCAqbG9jaywgc3RydWN0IHd3X2Fj cXVpcmVfY3R4ICpjdHgpCj4gIAkgKiBhbmQga2VlcCBzcGlubmluZywgb3IgaXQgd2lsbCBhY3F1 aXJlIHdhaXRfbG9jaywgYWRkIGl0c2VsZgo+ICAJICogdG8gd2FpdGVyIGxpc3QgYW5kIHNsZWVw Lgo+ICAJICovCj4gLQlzbXBfbWIoKTsgLyogXl5eICovCj4gKwlzbXBfbWIoKTsgLyogU2VlIGNv bW1lbnRzIGFib3ZlIGFuZCBiZWxvdy4gKi8KPiAgCj4gIAkvKgo+IC0JICogQ2hlY2sgaWYgbG9j ayBpcyBjb250ZW5kZWQsIGlmIG5vdCB0aGVyZSBpcyBub2JvZHkgdG8gd2FrZSB1cAo+ICsJICog Q2hlY2sgaWYgbG9jayBpcyBjb250ZW5kZWQsIGlmIG5vdCB0aGVyZSBpcyBub2JvZHkgdG8gd2Fr ZSB1cC4KPiArCSAqIENoZWNraW5nIE1VVEVYX0ZMQUdfV0FJVEVSUyBpcyBub3QgZW5vdWdoIGhl cmUsIAoKVGhhdCBzZWVtcyBsaWtlIGEgc3VwZXJmbHVvdXMgdGhpbmcgdG8gc2F5LiBJdCBtYWtl cyBzZW5zZSBpbiB0aGUKY29udGV4dCBvZiB0aGlzIHBhdGNoIGJlY2F1c2Ugd2UgY2hhbmdlIHRo ZSBGTEFHIGNoZWNrIGludG8gYSBsaXN0CmNoZWNrLCBidXQgdGhlIHJlc3VsdGluZyBjb21tZW50 L2NvZGUgbG9va3Mgb2RkLgoKPgkJCQkJCQkgICBzaW5jZSB3ZSBuZWVkIHRvCj4gKwkgKiBvcmRl ciBhZ2FpbnN0IHRoZSBsb2NrLT5jdHggY2hlY2sgaW4gX193d19tdXRleF93b3VuZCBjYWxsZWQg ZnJvbQo+ICsJICogX193d19tdXRleF9hZGRfd2FpdGVyLiBXZSBjYW4gdXNlIGxpc3RfZW1wdHkg d2l0aG91dCB0YWtpbmcgdGhlCj4gKwkgKiB3YWl0X2xvY2ssIGdpdmVuIHRoZSBtZW1vcnkgYmFy cmllciBhYm92ZSBhbmQgdGhlIGxpc3RfZW1wdHkKPiArCSAqIGRvY3VtZW50YXRpb24uCgpJIGRv bid0IHRydXN0IGRvY3VtZW50YXRpb24uIFBsZWFzZSByZWFzb24gYWJvdXQgaW1wbGVtZW50YXRp b24uCgo+ICAJICovCj4gLQlpZiAobGlrZWx5KCEoYXRvbWljX2xvbmdfcmVhZCgmbG9jay0+YmFz ZS5vd25lcikgJiBNVVRFWF9GTEFHX1dBSVRFUlMpKSkKPiArCWlmIChsaWtlbHkobGlzdF9lbXB0 eSgmbG9jay0+YmFzZS53YWl0X2xpc3QpKSkKPiAgCQlyZXR1cm47Cj4gIAo+ICAJLyoKPiBAQCAt NjUzLDYgKzY5NSwxNyBAQCBfX3d3X211dGV4X2xvY2tfY2hlY2tfc3RhbXAoc3RydWN0IG11dGV4 ICpsb2NrLCBzdHJ1Y3QgbXV0ZXhfd2FpdGVyICp3YWl0ZXIsCj4gIAlzdHJ1Y3Qgd3dfYWNxdWly ZV9jdHggKmhvbGRfY3R4ID0gUkVBRF9PTkNFKHd3LT5jdHgpOwo+ICAJc3RydWN0IG11dGV4X3dh aXRlciAqY3VyOwo+ICAKPiArCS8qCj4gKwkgKiBJZiB3ZSBtaXNzIGEgd291bmRlZCA9PSB0cnVl IGhlcmUsIHdlIHdpbGwgaGF2ZSBhIHBlbmRpbmcKCkV4cGxhaW4gaG93IHdlIGNhbiBtaXNzIHRo YXQuCgo+ICsJICogVEFTS19SVU5OSU5HIGFuZCBwaWNrIGl0IHVwIG9uIHRoZSBuZXh0IHNjaGVk dWxlIGZhbGwtdGhyb3VnaC4KPiArCSAqLwo+ICsJaWYgKCFjdHgtPnd3X2NsYXNzLT5pc193YWl0 X2RpZSkgewo+ICsJCWlmIChSRUFEX09OQ0UoY3R4LT53b3VuZGVkKSkKPiArCQkJZ290byBkZWFk bG9jazsKPiArCQllbHNlCj4gKwkJCXJldHVybiAwOwo+ICsJfQo+ICsKPiAgCWlmIChob2xkX2N0 eCAmJiBfX3d3X2N0eF9zdGFtcF9hZnRlcihjdHgsIGhvbGRfY3R4KSkKPiAgCQlnb3RvIGRlYWRs b2NrOwo+ICAKPiBAQCAtNjgzLDEyICs3MzYsMTUgQEAgX193d19tdXRleF9hZGRfd2FpdGVyKHN0 cnVjdCBtdXRleF93YWl0ZXIgKndhaXRlciwKPiAgewo+ICAJc3RydWN0IG11dGV4X3dhaXRlciAq Y3VyOwo+ICAJc3RydWN0IGxpc3RfaGVhZCAqcG9zOwo+ICsJYm9vbCBpc193YWl0X2RpZTsKPiAg Cj4gIAlpZiAoIXd3X2N0eCkgewo+ICAJCWxpc3RfYWRkX3RhaWwoJndhaXRlci0+bGlzdCwgJmxv Y2stPndhaXRfbGlzdCk7Cj4gIAkJcmV0dXJuIDA7Cj4gIAl9Cj4gIAo+ICsJaXNfd2FpdF9kaWUg PSB3d19jdHgtPnd3X2NsYXNzLT5pc193YWl0X2RpZTsKPiArCj4gIAkvKgo+ICAJICogQWRkIHRo ZSB3YWl0ZXIgYmVmb3JlIHRoZSBmaXJzdCB3YWl0ZXIgd2l0aCBhIGhpZ2hlciBzdGFtcC4KPiAg CSAqIFdhaXRlcnMgd2l0aG91dCBhIGNvbnRleHQgYXJlIHNraXBwZWQgdG8gYXZvaWQgc3RhcnZp bmcKPiBAQCAtNzAxLDcgKzc1Nyw3IEBAIF9fd3dfbXV0ZXhfYWRkX3dhaXRlcihzdHJ1Y3QgbXV0 ZXhfd2FpdGVyICp3YWl0ZXIsCj4gIAo+ICAJCWlmIChfX3d3X2N0eF9zdGFtcF9hZnRlcih3d19j dHgsIGN1ci0+d3dfY3R4KSkgewo+ICAJCQkvKiBCYWNrIG9mZiBpbW1lZGlhdGVseSBpZiBuZWNl c3NhcnkuICovCj4gLQkJCWlmICh3d19jdHgtPmFjcXVpcmVkID4gMCkgewo+ICsJCQlpZiAoaXNf d2FpdF9kaWUgJiYgd3dfY3R4LT5hY3F1aXJlZCA+IDApIHsKPiAgI2lmZGVmIENPTkZJR19ERUJV R19NVVRFWEVTCj4gIAkJCQlzdHJ1Y3Qgd3dfbXV0ZXggKnd3Owo+ICAKPiBAQCAtNzIxLDEzICs3 NzcsMjYgQEAgX193d19tdXRleF9hZGRfd2FpdGVyKHN0cnVjdCBtdXRleF93YWl0ZXIgKndhaXRl ciwKPiAgCQkgKiBXYWtlIHVwIHRoZSB3YWl0ZXIgc28gdGhhdCBpdCBnZXRzIGEgY2hhbmNlIHRv IGJhY2sKPiAgCQkgKiBvZmYuCj4gIAkJICovCj4gLQkJaWYgKGN1ci0+d3dfY3R4LT5hY3F1aXJl ZCA+IDApIHsKPiArCQlpZiAoaXNfd2FpdF9kaWUgJiYgY3VyLT53d19jdHgtPmFjcXVpcmVkID4g MCkgewo+ICAJCQlkZWJ1Z19tdXRleF93YWtlX3dhaXRlcihsb2NrLCBjdXIpOwo+ICAJCQl3YWtl X3VwX3Byb2Nlc3MoY3VyLT50YXNrKTsKPiAgCQl9Cj4gIAl9Cj4gIAo+ICAJbGlzdF9hZGRfdGFp bCgmd2FpdGVyLT5saXN0LCBwb3MpOwo+ICsJaWYgKCFpc193YWl0X2RpZSkgewo+ICsJCXN0cnVj dCB3d19tdXRleCAqd3cgPSBjb250YWluZXJfb2YobG9jaywgc3RydWN0IHd3X211dGV4LCBiYXNl KTsKPiArCj4gKwkJLyoKPiArCQkgKiBNYWtlIHN1cmUgYSByYWNpbmcgbG9jayB0YWtlciBzZWVz IGEgbm9uLWVtcHR5IHdhaXRpbmcgbGlzdAo+ICsJCSAqIGJlZm9yZSB3ZSByZWFkIHd3LT5jdHgs IHNvIHRoYXQgaWYgd2UgbWlzcyB3dy0+Y3R4LCB0aGUKPiArCQkgKiByYWNpbmcgbG9jayB0YWtl ciB3aWxsIGNhbGwgX193d19tdXRleF93YWtlX3VwX2Zvcl9iYWNrb2ZmKCkKPiArCQkgKiBhbmQg d291bmQgaXRzZWxmLgo+ICsJCSAqLwo+ICsJCXNtcF9tYigpOwo+ICsJCV9fd3dfbXV0ZXhfd291 bmQobG9jaywgd3dfY3R4LCB3dy0+Y3R4KTsKPiArCX0KPiArCj4gIAlyZXR1cm4gMDsKPiAgfQo+ ICAKPiBAQCAtNzUwLDYgKzgxOSwxNCBAQCBfX211dGV4X2xvY2tfY29tbW9uKHN0cnVjdCBtdXRl eCAqbG9jaywgbG9uZyBzdGF0ZSwgdW5zaWduZWQgaW50IHN1YmNsYXNzLAo+ICAJaWYgKHVzZV93 d19jdHggJiYgd3dfY3R4KSB7Cj4gIAkJaWYgKHVubGlrZWx5KHd3X2N0eCA9PSBSRUFEX09OQ0Uo d3ctPmN0eCkpKQo+ICAJCQlyZXR1cm4gLUVBTFJFQURZOwo+ICsKPiArCQkvKgo+ICsJCSAqIFJl c2V0IHRoZSB3b3VuZGVkIGZsYWcgYWZ0ZXIgYSBiYWNrb2ZmLgo+ICsJCSAqIE5vIG90aGVyIHBy b2Nlc3MgY2FuIHJhY2UgYW5kIHdvdW5kIHVzIGhlcmUgc2luY2UgdGhleQo+ICsJCSAqIGNhbid0 IGhhdmUgYSB2YWxpZCBvd25lciBwb2ludGVyIGF0IHRoaXMgdGltZQo+ICsJCSAqLwo+ICsJCWlm ICh3d19jdHgtPmFjcXVpcmVkID09IDApCj4gKwkJCXd3X2N0eC0+d291bmRlZCA9IGZhbHNlOwo+ ICAJfQo+ICAKPiAgCXByZWVtcHRfZGlzYWJsZSgpOwo+IEBAIC04NTgsNiArOTM1LDExIEBAIF9f bXV0ZXhfbG9ja19jb21tb24oc3RydWN0IG11dGV4ICpsb2NrLCBsb25nIHN0YXRlLCB1bnNpZ25l ZCBpbnQgc3ViY2xhc3MsCj4gIGFjcXVpcmVkOgo+ICAJX19zZXRfY3VycmVudF9zdGF0ZShUQVNL X1JVTk5JTkcpOwo+ICAKPiArCS8qIFdlIHN0b2xlIHRoZSBsb2NrLiBOZWVkIHRvIGNoZWNrIHdv dW5kZWQgc3RhdHVzLiAqLwo+ICsJaWYgKHVzZV93d19jdHggJiYgd3dfY3R4ICYmICF3d19jdHgt Pnd3X2NsYXNzLT5pc193YWl0X2RpZSAmJgo+ICsJICAgICFfX211dGV4X3dhaXRlcl9pc19maXJz dChsb2NrLCAmd2FpdGVyKSkKPiArCQlfX3d3X211dGV4X3dha2V1cF9mb3JfYmFja29mZihsb2Nr LCB3d19jdHgpOwo+ICsKPiAgCW11dGV4X3JlbW92ZV93YWl0ZXIobG9jaywgJndhaXRlciwgY3Vy cmVudCk7Cj4gIAlpZiAobGlrZWx5KGxpc3RfZW1wdHkoJmxvY2stPndhaXRfbGlzdCkpKQo+ICAJ CV9fbXV0ZXhfY2xlYXJfZmxhZyhsb2NrLCBNVVRFWF9GTEFHUyk7CgpJIGNhbid0IHNheSBJJ20g YSBmYW4uIEknbSBhbHJlYWR5IGN1cnNpbmcgdGhlIHd3X211dGV4IHN0dWZmIGV2ZXJ5IHRpbWUK SSBoYXZlIHRvIGxvb2sgYXQgaXQsIGFuZCB5b3UganVzdCBtYWRlIGl0IHdvcnNlIHNwYWdldGhp LgoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1k ZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczov L2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=