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: Thu, 14 Jun 2018 12:51:51 +0200 Message-ID: <20180614105151.GY12198@hirez.programming.kicks-ass.net> References: <20180613074745.14750-1-thellstrom@vmware.com> <20180613074745.14750-2-thellstrom@vmware.com> <20180613095012.GW12198@hirez.programming.kicks-ass.net> <69f3dee9-4782-bc90-3ee2-813ac6835c4a@vmware.com> <20180613131000.GX12198@hirez.programming.kicks-ass.net> <9afd482d-7082-fa17-5e34-179a652376e5@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 2CE256E71A for ; Thu, 14 Jun 2018 10:52:02 +0000 (UTC) Content-Disposition: inline In-Reply-To: <9afd482d-7082-fa17-5e34-179a652376e5@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 T24gV2VkLCBKdW4gMTMsIDIwMTggYXQgMDQ6MDU6NDNQTSArMDIwMCwgVGhvbWFzIEhlbGxzdHJv bSB3cm90ZToKPiBJbiBzaG9ydCwgd2l0aCBXYWl0LURpZSAoYmVmb3JlIHRoZSBwYXRjaCkgaXQn cyB0aGUgcHJvY2VzcyBfdGFraW5nXyB0aGUKPiBjb250ZW5kZWQgbG9jayB0aGF0IGJhY2tzIG9m ZiBpZiBuZWNlc3NhcnkuIE5vIHByZWVtcHRpb24gcmVxdWlyZWQuIFdpdGgKPiBXb3VuZC1XYWl0 LCBpdCdzIHRoZSBwcm9jZXNzIF9ob2xkaW5nXyB0aGUgY29udGVuZGVkIGxvY2sgdGhhdCBnZXRz IHdvdW5kZWQKPiAocHJlZW1wdGVkKSwgYW5kIGl0IG5lZWRzIHRvIGJhY2sgb2ZmIGF0IGl0cyBv d24gZGlzY3JldGlvbiBidXQgbm8gbGF0ZXIKPiB0aGFuIHdoZW4gaXQncyBnb2luZyB0byBzbGVl cCBvbiBhbm90aGVyIHd3IG11dGV4LiBUaGF0IHBvaW50IGlzIHdoZXJlIHdlCj4gaW50ZXJjZXB0 IHRoZSBwcmVlbXB0aW9uIHJlcXVlc3QuIFdlJ3JlIHByZWVtcHRpbmcgdGhlIHRyYW5zYWN0aW9u IHJhdGhlcgo+IHRoYW4gdGhlIHByb2Nlc3MuCgpUaGlzOgoKICBXYWl0LWRpZToKICAgIFRoZSBu ZXdlciB0cmFuc2FjdGlvbnMgYXJlIGtpbGxlZCB3aGVuOgogICAgICBJdCAoPSB0aGUgbmV3ZXIg dHJhbnNhY3Rpb24pIG1ha2VzIGEgcmVxZXVzdCBmb3IgYSBsb2NrIGJlaW5nIGhlbGQKICAgICAg YnkgYW4gb2xkZXIgdHJhbnNhY3Rpb25zCgogIFdvdW5kLXdhaXQ6CiAgICBUaGUgbmV3ZXIgdHJh bnNhY3Rpb25zIGFyZSBraWxsZWQgd2hlbjoKICAgICAgQW4gb2xkZXIgdHJhbnNhY3Rpb24gbWFr ZXMgYSByZXF1ZXN0IGZvciBhIGxvY2sgYmVpbmcgaGVsZCBieSB0aGUKICAgICAgbmV3ZXIgdHJh bnNhY3Rpb25zCgpXb3VsZCBtYWtlIGZvciBhbiBleGNlbGxlbnQgY29tbWVudCBzb21ld2hlcmUu IE5vIHRhbGtpbmcgYWJvdXQKcHJlZW1wdGlvbiwgYWx0aG91Z2ggSSB0aGluayBJIGtub3cgd2hh dCB5b3UgbWVhbiB3aXRoIGl0LCB0aGF0IGlzIG5vdApob3cgcHJlZW1wdGlvbiBpcyBub3JtYWxs eSB1c2VkLgoKSW4gc2NoZWR1bGluZyBzcGVhayBwcmVlbXB0aW9uIGlzIHdoZW4gd2UgcGljayBh IHJ1bm5hYmxlIChidXQgIXJ1bm5pbmcpCnRhc2sgdG8gcnVuIGluc3RlYWQgb2YgdGhlIGN1cnJl bnQgcnVubmluZyB0YXNrLiAgSW4gdGhpcyBjYXNlIGhvd2V2ZXIsCm91ciBUMiBpcyBibG9ja2Vk IG9uIGEgbG9jayBhY3F1aXNpdGlvbiAob25lIG93bmVkIGJ5IG91ciBUMSkgYW5kIFQxIGlzCnRo ZSBvbmx5IHJ1bm5hYmxlIHRhc2suIE9ubHkgd2hlbiBUMSdzIHByb2dyZXNzIGlzIGluaGliaXRl ZCBieSBUMiAoVDEKd2FudHMgYSBsb2NrIGhlbGQgYnkgVDIpIGRvIHdlIHdvdW5kL3dha2UgVDIu CgpJbiBhbnkgY2FzZSwgSSBoYWQgYSBsaXR0bGUgbG9vayBhdCB0aGUgY3VycmVudCB3d19tdXRl eCBjb2RlIGFuZCBlbmRlZAp1cCB3aXRoIHRoZSBiZWxvdyBwYXRjaCB0aGF0IGhvcGVmdWxseSBj bGFyaWZpZXMgdGhpbmdzIGEgbGl0dGxlLgoKLS0tCmRpZmYgLS1naXQgYS9rZXJuZWwvbG9ja2lu Zy9tdXRleC5jIGIva2VybmVsL2xvY2tpbmcvbXV0ZXguYwppbmRleCBmNDRmNjU4YWU2MjkuLmEy MGMwNDYxOWIyYSAxMDA2NDQKLS0tIGEva2VybmVsL2xvY2tpbmcvbXV0ZXguYworKysgYi9rZXJu ZWwvbG9ja2luZy9tdXRleC5jCkBAIC0yNDQsNiArMjQ0LDEwIEBAIHZvaWQgX19zY2hlZCBtdXRl eF9sb2NrKHN0cnVjdCBtdXRleCAqbG9jaykKIEVYUE9SVF9TWU1CT0wobXV0ZXhfbG9jayk7CiAj ZW5kaWYKIAorLyoKKyAqIEFzc29jaWF0ZSB0aGUgd3dfbXV0ZXggQHd3IHdpdGggdGhlIGNvbnRl eHQgQHd3X2N0eCB1bmRlciB3aGljaCB3ZSBhY3F1aXJlZAorICogaXQuCisgKi8KIHN0YXRpYyBf X2Fsd2F5c19pbmxpbmUgdm9pZAogd3dfbXV0ZXhfbG9ja19hY3F1aXJlZChzdHJ1Y3Qgd3dfbXV0 ZXggKnd3LCBzdHJ1Y3Qgd3dfYWNxdWlyZV9jdHggKnd3X2N0eCkKIHsKQEAgLTI4MiwyNiArMjg2 LDM2IEBAIHd3X211dGV4X2xvY2tfYWNxdWlyZWQoc3RydWN0IHd3X211dGV4ICp3dywgc3RydWN0 IHd3X2FjcXVpcmVfY3R4ICp3d19jdHgpCiAJREVCVUdfTE9DS1NfV0FSTl9PTih3d19jdHgtPnd3 X2NsYXNzICE9IHd3LT53d19jbGFzcyk7CiAjZW5kaWYKIAl3d19jdHgtPmFjcXVpcmVkKys7CisJ bG9jay0+Y3R4ID0gY3R4OwogfQogCisvKgorICogRGV0ZXJtaW5lIGlmIGNvbnRleHQgQGEgaXMg J2FmdGVyJyBjb250ZXh0IEBiLiBJT1csIEBhIHNob3VsZCBiZSB3b3VuZGVkIGluCisgKiBmYXZv dXIgb2YgQGIuCisgKi8KIHN0YXRpYyBpbmxpbmUgYm9vbCBfX3NjaGVkCiBfX3d3X2N0eF9zdGFt cF9hZnRlcihzdHJ1Y3Qgd3dfYWNxdWlyZV9jdHggKmEsIHN0cnVjdCB3d19hY3F1aXJlX2N0eCAq YikKIHsKLQlyZXR1cm4gYS0+c3RhbXAgLSBiLT5zdGFtcCA8PSBMT05HX01BWCAmJgotCSAgICAg ICAoYS0+c3RhbXAgIT0gYi0+c3RhbXAgfHwgYSA+IGIpOworCisJcmV0dXJuIChzaWduZWQgbG9u ZykoYS0+c3RhbXAgLSBiLT5zdGFtcCkgPiAwOwogfQogCiAvKgotICogV2FrZSB1cCBhbnkgd2Fp dGVycyB0aGF0IG1heSBoYXZlIHRvIGJhY2sgb2ZmIHdoZW4gdGhlIGxvY2sgaXMgaGVsZCBieSB0 aGUKLSAqIGdpdmVuIGNvbnRleHQuCisgKiBXZSBqdXN0IGFjcXVpcmVkIEBsb2NrIHVuZGVyIEB3 d19jdHgsIGlmIHRoZXJlIGFyZSBsYXRlciBjb250ZXh0cyB3YWl0aW5nCisgKiBiZWhpbmQgdXMg b24gdGhlIHdhaXQtbGlzdCwgd2FrZSB0aGVtIHVwIHNvIHRoZXkgY2FuIHdvdW5kIHRoZW1zZWx2 ZXMuCiAgKgotICogRHVlIHRvIHRoZSBpbnZhcmlhbnRzIG9uIHRoZSB3YWl0IGxpc3QsIHRoaXMg Y2FuIG9ubHkgYWZmZWN0IHRoZSBmaXJzdAotICogd2FpdGVyIHdpdGggYSBjb250ZXh0LgorICog U2VlIF9fd3dfbXV0ZXhfYWRkX3dhaXRlcigpIGZvciB0aGUgbGlzdC1vcmRlciBjb25zdHJ1Y3Rp b247IGJhc2ljYWxseSB0aGUKKyAqIGxpc3QgaXMgb3JkZXJlZCBieSBzdGFtcCBzbWFsbGVzdCAo b2xkZXN0KSBmaXJzdCwgc28gaWYgdGhlcmUgaXMgYSBsYXRlcgorICogKHlvdW5nZXIpIHN0YW1w IG9uIHRoZSBsaXN0IGJlaGluZCB1cywgd2FrZSBpdCBzbyBpdCBjYW4gd291bmQgaXRzZWxmLgor ICoKKyAqIEJlY2F1c2UgX193d19tdXRleF9hZGRfd2FpdGVyKCkgYW5kIF9fd3dfbXV0ZXhfY2hl Y2tfc3RhbXAoKSB3YWtlIGFueQorICogYnV0IHRoZSBlYXJsaWVzdCBjb250ZXh0LCB0aGlzIGNh biBvbmx5IGFmZmVjdCB0aGUgZmlyc3Qgd2FpdGVyICh3aXRoIGEKKyAqIGNvbnRleHQpLgogICoK ICAqIFRoZSBjdXJyZW50IHRhc2sgbXVzdCBub3QgYmUgb24gdGhlIHdhaXQgbGlzdC4KICAqLwog c3RhdGljIHZvaWQgX19zY2hlZAotX193d19tdXRleF93YWtldXBfZm9yX2JhY2tvZmYoc3RydWN0 IG11dGV4ICpsb2NrLCBzdHJ1Y3Qgd3dfYWNxdWlyZV9jdHggKnd3X2N0eCkKK19fd3dfbXV0ZXhf d2FrZXVwX2Zvcl93b3VuZChzdHJ1Y3QgbXV0ZXggKmxvY2ssIHN0cnVjdCB3d19hY3F1aXJlX2N0 eCAqd3dfY3R4KQogewogCXN0cnVjdCBtdXRleF93YWl0ZXIgKmN1cjsKIApAQCAtMzIyLDE2ICsz MzYsMTQgQEAgX193d19tdXRleF93YWtldXBfZm9yX2JhY2tvZmYoc3RydWN0IG11dGV4ICpsb2Nr LCBzdHJ1Y3Qgd3dfYWNxdWlyZV9jdHggKnd3X2N0eCkKIH0KIAogLyoKLSAqIEFmdGVyIGFjcXVp cmluZyBsb2NrIHdpdGggZmFzdHBhdGggb3Igd2hlbiB3ZSBsb3N0IG91dCBpbiBjb250ZXN0ZWQK LSAqIHNsb3dwYXRoLCBzZXQgY3R4IGFuZCB3YWtlIHVwIGFueSB3YWl0ZXJzIHNvIHRoZXkgY2Fu IHJlY2hlY2suCisgKiBBZnRlciBhY3F1aXJpbmcgbG9jayB3aXRoIGZhc3RwYXRoLCB3aGVyZSB3 ZSBkbyBub3QgaG9sZCB3YWl0X2xvY2ssIHNldCBjdHgKKyAqIGFuZCB3YWtlIHVwIGFueSB3YWl0 ZXJzIHNvIHRoZXkgY2FuIHJlY2hlY2suCiAgKi8KIHN0YXRpYyBfX2Fsd2F5c19pbmxpbmUgdm9p ZAogd3dfbXV0ZXhfc2V0X2NvbnRleHRfZmFzdHBhdGgoc3RydWN0IHd3X211dGV4ICpsb2NrLCBz dHJ1Y3Qgd3dfYWNxdWlyZV9jdHggKmN0eCkKIHsKIAl3d19tdXRleF9sb2NrX2FjcXVpcmVkKGxv Y2ssIGN0eCk7CiAKLQlsb2NrLT5jdHggPSBjdHg7Ci0KIAkvKgogCSAqIFRoZSBsb2NrLT5jdHgg dXBkYXRlIHNob3VsZCBiZSB2aXNpYmxlIG9uIGFsbCBjb3JlcyBiZWZvcmUKIAkgKiB0aGUgYXRv bWljIHJlYWQgaXMgZG9uZSwgb3RoZXJ3aXNlIGNvbnRlbmRlZCB3YWl0ZXJzIG1pZ2h0IGJlCkBA IC0zNTIsMjUgKzM2NCwxMCBAQCB3d19tdXRleF9zZXRfY29udGV4dF9mYXN0cGF0aChzdHJ1Y3Qg d3dfbXV0ZXggKmxvY2ssIHN0cnVjdCB3d19hY3F1aXJlX2N0eCAqY3R4KQogCSAqIHNvIHRoZXkg Y2FuIHNlZSB0aGUgbmV3IGxvY2stPmN0eC4KIAkgKi8KIAlzcGluX2xvY2soJmxvY2stPmJhc2Uu d2FpdF9sb2NrKTsKLQlfX3d3X211dGV4X3dha2V1cF9mb3JfYmFja29mZigmbG9jay0+YmFzZSwg Y3R4KTsKKwlfX3d3X211dGV4X3dha2V1cF9mb3Jfd291bmQoJmxvY2stPmJhc2UsIGN0eCk7CiAJ c3Bpbl91bmxvY2soJmxvY2stPmJhc2Uud2FpdF9sb2NrKTsKIH0KIAotLyoKLSAqIEFmdGVyIGFj cXVpcmluZyBsb2NrIGluIHRoZSBzbG93cGF0aCBzZXQgY3R4LgotICoKLSAqIFVubGlrZSBmb3Ig dGhlIGZhc3QgcGF0aCwgdGhlIGNhbGxlciBlbnN1cmVzIHRoYXQgd2FpdGVycyBhcmUgd29rZW4g dXAgd2hlcmUKLSAqIG5lY2Vzc2FyeS4KLSAqCi0gKiBDYWxsZXJzIG11c3QgaG9sZCB0aGUgbXV0 ZXggd2FpdF9sb2NrLgotICovCi1zdGF0aWMgX19hbHdheXNfaW5saW5lIHZvaWQKLXd3X211dGV4 X3NldF9jb250ZXh0X3Nsb3dwYXRoKHN0cnVjdCB3d19tdXRleCAqbG9jaywgc3RydWN0IHd3X2Fj cXVpcmVfY3R4ICpjdHgpCi17Ci0Jd3dfbXV0ZXhfbG9ja19hY3F1aXJlZChsb2NrLCBjdHgpOwot CWxvY2stPmN0eCA9IGN0eDsKLX0KLQogI2lmZGVmIENPTkZJR19NVVRFWF9TUElOX09OX09XTkVS CiAKIHN0YXRpYyBpbmxpbmUKQEAgLTY0NiwyMCArNjQzLDMwIEBAIHZvaWQgX19zY2hlZCB3d19t dXRleF91bmxvY2soc3RydWN0IHd3X211dGV4ICpsb2NrKQogfQogRVhQT1JUX1NZTUJPTCh3d19t dXRleF91bmxvY2spOwogCisvKgorICogQ2hlY2sgdGhlIHdvdW5kIGNvbmRpdGlvbiBmb3IgdGhl IGN1cnJlbnQgbG9jayBhY3F1aXJlLiAgSWYgd2UncmUgdHJ5aW5nIHRvCisgKiBhY3F1aXJlIGEg bG9jayBhbHJlYWR5IGhlbGQgYnkgYW4gb2xkZXIgY29udGV4dCwgd291bmQgb3Vyc2VsdmVzLgor ICoKKyAqIFNpbmNlIF9fd3dfbXV0ZXhfYWRkX3dhaXRlcigpIG9yZGVycyB0aGUgd2FpdC1saXN0 IG9uIHN0YW1wLCB3ZSBvbmx5IGhhdmUgdG8KKyAqIGxvb2sgYXQgd2FpdGVycyBiZWZvcmUgdXMg aW4gdGhlIHdhaXQtbGlzdC4KKyAqLwogc3RhdGljIGlubGluZSBpbnQgX19zY2hlZAotX193d19t dXRleF9sb2NrX2NoZWNrX3N0YW1wKHN0cnVjdCBtdXRleCAqbG9jaywgc3RydWN0IG11dGV4X3dh aXRlciAqd2FpdGVyLAorX193d19tdXRleF9jaGVja19zdGFtcChzdHJ1Y3QgbXV0ZXggKmxvY2ss IHN0cnVjdCBtdXRleF93YWl0ZXIgKndhaXRlciwKIAkJCSAgICBzdHJ1Y3Qgd3dfYWNxdWlyZV9j dHggKmN0eCkKIHsKIAlzdHJ1Y3Qgd3dfbXV0ZXggKnd3ID0gY29udGFpbmVyX29mKGxvY2ssIHN0 cnVjdCB3d19tdXRleCwgYmFzZSk7CiAJc3RydWN0IHd3X2FjcXVpcmVfY3R4ICpob2xkX2N0eCA9 IFJFQURfT05DRSh3dy0+Y3R4KTsKIAlzdHJ1Y3QgbXV0ZXhfd2FpdGVyICpjdXI7CiAKKwlpZiAo Y3R4LT5hY3F1aXJlZCA9PSAwKQorCQlyZXR1cm4gMDsKKwogCWlmIChob2xkX2N0eCAmJiBfX3d3 X2N0eF9zdGFtcF9hZnRlcihjdHgsIGhvbGRfY3R4KSkKIAkJZ290byBkZWFkbG9jazsKIAogCS8q CiAJICogSWYgdGhlcmUgaXMgYSB3YWl0ZXIgaW4gZnJvbnQgb2YgdXMgdGhhdCBoYXMgYSBjb250 ZXh0LCB0aGVuIGl0cwotCSAqIHN0YW1wIGlzIGVhcmxpZXIgdGhhbiBvdXJzIGFuZCB3ZSBtdXN0 IGJhY2sgb2ZmLgorCSAqIHN0YW1wIGlzIGVhcmxpZXIgdGhhbiBvdXJzIGFuZCB3ZSBtdXN0IHdv dW5kIG91cnNlbGYuCiAJICovCiAJY3VyID0gd2FpdGVyOwogCWxpc3RfZm9yX2VhY2hfZW50cnlf Y29udGludWVfcmV2ZXJzZShjdXIsICZsb2NrLT53YWl0X2xpc3QsIGxpc3QpIHsKQEAgLTY3Nyw2 ICs2ODQsMTQgQEAgX193d19tdXRleF9sb2NrX2NoZWNrX3N0YW1wKHN0cnVjdCBtdXRleCAqbG9j aywgc3RydWN0IG11dGV4X3dhaXRlciAqd2FpdGVyLAogCXJldHVybiAtRURFQURMSzsKIH0KIAor LyoKKyAqIEFkZCBAd2FpdGVyIHRvIHRoZSB3YWl0LWxpc3QsIGtlZXAgdGhlIHdhaXQtbGlzdCBv cmRlcmVkIGJ5IHN0YW1wLCBzbWFsbGVzdAorICogZmlyc3QuIFN1Y2ggdGhhdCBvbGRlciBjb250 ZXh0cyBhcmUgcHJlZmVycmVkIHRvIGFjcXVpcmUgdGhlIGxvY2sgb3ZlcgorICogeW91bmdlciBj b250ZXh0cy4KKyAqCisgKiBGdXJ0aGVybW9yZSwgd291bmQgb3Vyc2VsZiBpbW1lZGlhdGVseSB3 aGVuIHBvc3NpYmxlICh0aGVyZSBhcmUgb2xkZXIKKyAqIGNvbnRleHRzIGFscmVhZHkgd2FpdGlu ZykgdG8gYXZvaWQgdW5uZWNlc3Nhcnkgd2FpdGluZy4KKyAqLwogc3RhdGljIGlubGluZSBpbnQg X19zY2hlZAogX193d19tdXRleF9hZGRfd2FpdGVyKHN0cnVjdCBtdXRleF93YWl0ZXIgKndhaXRl ciwKIAkJICAgICAgc3RydWN0IG11dGV4ICpsb2NrLApAQCAtNzAwLDggKzcxNSwxMiBAQCBfX3d3 X211dGV4X2FkZF93YWl0ZXIoc3RydWN0IG11dGV4X3dhaXRlciAqd2FpdGVyLAogCQlpZiAoIWN1 ci0+d3dfY3R4KQogCQkJY29udGludWU7CiAKKwkJLyoKKwkJICogSWYgd2UgZmluZCBhbiBvbGRl ciBjb250ZXh0IHdhaXRpbmcsIHRoZXJlIGlzIG5vIHBvaW50IGluCisJCSAqIHF1ZXVlaW5nIGJl aGluZCBpdCwgYXMgd2UnZCBoYXZlIHRvIHdvdW5kIG91cnNlbHZlcyB0aGUKKwkJICogbW9tZW50 IGl0IHdvdWxkIGFjcXVpcmUgdGhlIGxvY2suCisJCSAqLwogCQlpZiAoX193d19jdHhfc3RhbXBf YWZ0ZXIod3dfY3R4LCBjdXItPnd3X2N0eCkpIHsKLQkJCS8qIEJhY2sgb2ZmIGltbWVkaWF0ZWx5 IGlmIG5lY2Vzc2FyeS4gKi8KIAkJCWlmICh3d19jdHgtPmFjcXVpcmVkID4gMCkgewogI2lmZGVm IENPTkZJR19ERUJVR19NVVRFWEVTCiAJCQkJc3RydWN0IHd3X211dGV4ICp3dzsKQEAgLTcxOSw4 ICs3MzgsOSBAQCBfX3d3X211dGV4X2FkZF93YWl0ZXIoc3RydWN0IG11dGV4X3dhaXRlciAqd2Fp dGVyLAogCQlwb3MgPSAmY3VyLT5saXN0OwogCiAJCS8qCi0JCSAqIFdha2UgdXAgdGhlIHdhaXRl ciBzbyB0aGF0IGl0IGdldHMgYSBjaGFuY2UgdG8gYmFjawotCQkgKiBvZmYuCisJCSAqIFdoZW4g d2UgZW5xdWV1ZWQgYW4gb2xkZXIgY29udGV4dCwgd2FrZSBhbGwgeW91bmdlcgorCQkgKiBjb250 ZXh0cyBzdWNoIHRoYXQgdGhleSBjYW4gd291bmQgdGhlbXNlbHZlcywgc2VlCisJCSAqIF9fd3df bXV0ZXhfY2hlY2tfc3RhbXAoKS4KIAkJICovCiAJCWlmIChjdXItPnd3X2N0eC0+YWNxdWlyZWQg PiAwKSB7CiAJCQlkZWJ1Z19tdXRleF93YWtlX3dhaXRlcihsb2NrLCBjdXIpOwpAQCAtNzcyLDcg Kzc5Miw3IEBAIF9fbXV0ZXhfbG9ja19jb21tb24oc3RydWN0IG11dGV4ICpsb2NrLCBsb25nIHN0 YXRlLCB1bnNpZ25lZCBpbnQgc3ViY2xhc3MsCiAJICovCiAJaWYgKF9fbXV0ZXhfdHJ5bG9jayhs b2NrKSkgewogCQlpZiAodXNlX3d3X2N0eCAmJiB3d19jdHgpCi0JCQlfX3d3X211dGV4X3dha2V1 cF9mb3JfYmFja29mZihsb2NrLCB3d19jdHgpOworCQkJX193d19tdXRleF93YWtldXBfZm9yX3dv dW5kKGxvY2ssIHd3X2N0eCk7CiAKIAkJZ290byBza2lwX3dhaXQ7CiAJfQpAQCAtNzkwLDEwICs4 MTAsMTAgQEAgX19tdXRleF9sb2NrX2NvbW1vbihzdHJ1Y3QgbXV0ZXggKmxvY2ssIGxvbmcgc3Rh dGUsIHVuc2lnbmVkIGludCBzdWJjbGFzcywKIAkJd2FpdGVyLnd3X2N0eCA9IE1VVEVYX1BPSVNP Tl9XV19DVFg7CiAjZW5kaWYKIAl9IGVsc2UgewotCQkvKiBBZGQgaW4gc3RhbXAgb3JkZXIsIHdh a2luZyB1cCB3YWl0ZXJzIHRoYXQgbXVzdCBiYWNrIG9mZi4gKi8KKwkJLyogQWRkIGluIHN0YW1w IG9yZGVyLCB3YWtpbmcgdXAgd2FpdGVycyB0aGF0IG11c3Qgd291bmQgdGhlbXNlbHZlcy4gKi8K IAkJcmV0ID0gX193d19tdXRleF9hZGRfd2FpdGVyKCZ3YWl0ZXIsIGxvY2ssIHd3X2N0eCk7CiAJ CWlmIChyZXQpCi0JCQlnb3RvIGVycl9lYXJseV9iYWNrb2ZmOworCQkJZ290byBlcnJfZWFybHlf d291bmQ7CiAKIAkJd2FpdGVyLnd3X2N0eCA9IHd3X2N0eDsKIAl9CkBAIC04MjQsOCArODQ0LDgg QEAgX19tdXRleF9sb2NrX2NvbW1vbihzdHJ1Y3QgbXV0ZXggKmxvY2ssIGxvbmcgc3RhdGUsIHVu c2lnbmVkIGludCBzdWJjbGFzcywKIAkJCWdvdG8gZXJyOwogCQl9CiAKLQkJaWYgKHVzZV93d19j dHggJiYgd3dfY3R4ICYmIHd3X2N0eC0+YWNxdWlyZWQgPiAwKSB7Ci0JCQlyZXQgPSBfX3d3X211 dGV4X2xvY2tfY2hlY2tfc3RhbXAobG9jaywgJndhaXRlciwgd3dfY3R4KTsKKwkJaWYgKHVzZV93 d19jdHggJiYgd3dfY3R4KSB7CisJCQlyZXQgPSBfX3d3X211dGV4X2NoZWNrX3N0YW1wKGxvY2ss ICZ3YWl0ZXIsIHd3X2N0eCk7CiAJCQlpZiAocmV0KQogCQkJCWdvdG8gZXJyOwogCQl9CkBAIC04 NzAsNyArODkwLDcgQEAgX19tdXRleF9sb2NrX2NvbW1vbihzdHJ1Y3QgbXV0ZXggKmxvY2ssIGxv bmcgc3RhdGUsIHVuc2lnbmVkIGludCBzdWJjbGFzcywKIAlsb2NrX2FjcXVpcmVkKCZsb2NrLT5k ZXBfbWFwLCBpcCk7CiAKIAlpZiAodXNlX3d3X2N0eCAmJiB3d19jdHgpCi0JCXd3X211dGV4X3Nl dF9jb250ZXh0X3Nsb3dwYXRoKHd3LCB3d19jdHgpOworCQl3d19tdXRleF9sb2NrX2FjcXVpcmVk KHd3LCB3d19jdHgpOwogCiAJc3Bpbl91bmxvY2soJmxvY2stPndhaXRfbG9jayk7CiAJcHJlZW1w dF9lbmFibGUoKTsKQEAgLTg3OSw3ICs4OTksNyBAQCBfX211dGV4X2xvY2tfY29tbW9uKHN0cnVj dCBtdXRleCAqbG9jaywgbG9uZyBzdGF0ZSwgdW5zaWduZWQgaW50IHN1YmNsYXNzLAogZXJyOgog CV9fc2V0X2N1cnJlbnRfc3RhdGUoVEFTS19SVU5OSU5HKTsKIAltdXRleF9yZW1vdmVfd2FpdGVy KGxvY2ssICZ3YWl0ZXIsIGN1cnJlbnQpOwotZXJyX2Vhcmx5X2JhY2tvZmY6CitlcnJfZWFybHlf d291bmQ6CiAJc3Bpbl91bmxvY2soJmxvY2stPndhaXRfbG9jayk7CiAJZGVidWdfbXV0ZXhfZnJl ZV93YWl0ZXIoJndhaXRlcik7CiAJbXV0ZXhfcmVsZWFzZSgmbG9jay0+ZGVwX21hcCwgMSwgaXAp OwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2 ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9s aXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK