From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH v3 13/13] drm/tegra: Move drm_dp_link helpers to Tegra DRM Date: Tue, 22 Oct 2019 16:03:21 +0200 Message-ID: <20191022140321.GO11828@phenom.ffwll.local> References: <20191021143437.1477719-1-thierry.reding@gmail.com> <20191021143437.1477719-14-thierry.reding@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wm1-x341.google.com (mail-wm1-x341.google.com [IPv6:2a00:1450:4864:20::341]) by gabe.freedesktop.org (Postfix) with ESMTPS id D265D6E7FA for ; Tue, 22 Oct 2019 14:03:27 +0000 (UTC) Received: by mail-wm1-x341.google.com with SMTP id f22so16307714wmc.2 for ; Tue, 22 Oct 2019 07:03:27 -0700 (PDT) Content-Disposition: inline In-Reply-To: <20191021143437.1477719-14-thierry.reding@gmail.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Thierry Reding Cc: dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org T24gTW9uLCBPY3QgMjEsIDIwMTkgYXQgMDQ6MzQ6MzdQTSArMDIwMCwgVGhpZXJyeSBSZWRpbmcg d3JvdGU6Cj4gRnJvbTogVGhpZXJyeSBSZWRpbmcgPHRyZWRpbmdAbnZpZGlhLmNvbT4KPiAKPiBE dXJpbmcgdGhlIGRpc2N1c3Npb24gb2YgcGF0Y2hlcyB0aGF0IGVuaGFuY2UgdGhlIGRybV9kcF9s aW5rIGhlbHBlcnMgaXQKPiB3YXMgY29uY2x1ZGVkIHRoYXQgdGhlc2UgaGVscGVycyBhcmVuJ3Qg dmVyeSB1c2VmdWwgdG8gYmVnaW4gd2l0aC4gQWZ0ZXIKPiBhbGwgb3RoZXIgZHJpdmVycyBoYXZl IGJlZW4gY29udmVydGVkIG5vdCB0byB1c2UgdGhlc2UgaGVscGVycyBhbnltb3JlLAo+IG1vdmUg dGhlc2UgaGVscGVycyBpbnRvIHRoZSBsYXN0IHJlbWFpbmluZyB1c2VyOiBUZWdyYSBEUk0uCj4g Cj4gSWYgYXQgc29tZSBwb2ludCB0aGVzZSBoZWxwZXJzIGFyZSBkZWVtZWQgbW9yZSB3aWRlbHkg dXNlZnVsLCB0aGV5IGNhbgo+IGJlIG1vdmVkIG91dCBpbnRvIHRoZSBEUk0gRFAgaGVscGVycyBh Z2Fpbi4KPiAKPiBTaWduZWQtb2ZmLWJ5OiBUaGllcnJ5IFJlZGluZyA8dHJlZGluZ0BudmlkaWEu Y29tPgoKSSBkaWRuJ3QgY2hlY2sgaW4gZGV0YWlsIHdoZXRoZXIgeW91IG1vdmVkIGl0IGFsbCB3 aXRob3V0IGNoYW5nZXMgOi0pCgpSZXZpZXdlZC1ieTogRGFuaWVsIFZldHRlciA8ZGFuaWVsLnZl dHRlckBmZndsbC5jaD4KCj4gLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9kcm1fZHBfaGVscGVyLmMg fCAxMjggLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS90 ZWdyYS9NYWtlZmlsZSAgfCAgIDEgKwo+ICBkcml2ZXJzL2dwdS9kcm0vdGVncmEvZHAuYyAgICAg IHwgMTMzICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4gIGRyaXZlcnMvZ3B1L2Ry bS90ZWdyYS9kcC5oICAgICAgfCAgMjYgKysrKysrKwo+ICBkcml2ZXJzL2dwdS9kcm0vdGVncmEv ZHBhdXguYyAgIHwgICAxICsKPiAgZHJpdmVycy9ncHUvZHJtL3RlZ3JhL3Nvci5jICAgICB8ICAg MSArCj4gIGluY2x1ZGUvZHJtL2RybV9kcF9oZWxwZXIuaCAgICAgfCAgMTYgLS0tLQo+ICA3IGZp bGVzIGNoYW5nZWQsIDE2MiBpbnNlcnRpb25zKCspLCAxNDQgZGVsZXRpb25zKC0pCj4gIGNyZWF0 ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vdGVncmEvZHAuYwo+ICBjcmVhdGUgbW9kZSAx MDA2NDQgZHJpdmVycy9ncHUvZHJtL3RlZ3JhL2RwLmgKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2RybV9kcF9oZWxwZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fZHBfaGVscGVy LmMKPiBpbmRleCBmNTY3MTQxYWZmNTQuLjJjNzg3MGFlZjQ2OSAxMDA2NDQKPiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vZHJtX2RwX2hlbHBlci5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9k cF9oZWxwZXIuYwo+IEBAIC0zNTEsMTM0ICszNTEsNiBAQCBpbnQgZHJtX2RwX2RwY2RfcmVhZF9s aW5rX3N0YXR1cyhzdHJ1Y3QgZHJtX2RwX2F1eCAqYXV4LAo+ICB9Cj4gIEVYUE9SVF9TWU1CT0wo ZHJtX2RwX2RwY2RfcmVhZF9saW5rX3N0YXR1cyk7Cj4gIAo+IC0vKioKPiAtICogZHJtX2RwX2xp bmtfcHJvYmUoKSAtIHByb2JlIGEgRGlzcGxheVBvcnQgbGluayBmb3IgY2FwYWJpbGl0aWVzCj4g LSAqIEBhdXg6IERpc3BsYXlQb3J0IEFVWCBjaGFubmVsCj4gLSAqIEBsaW5rOiBwb2ludGVyIHRv IHN0cnVjdHVyZSBpbiB3aGljaCB0byByZXR1cm4gbGluayBjYXBhYmlsaXRpZXMKPiAtICoKPiAt ICogVGhlIHN0cnVjdHVyZSBmaWxsZWQgaW4gYnkgdGhpcyBmdW5jdGlvbiBjYW4gdXN1YWxseSBi ZSBwYXNzZWQgZGlyZWN0bHkKPiAtICogaW50byBkcm1fZHBfbGlua19wb3dlcl91cCgpIGFuZCBk cm1fZHBfbGlua19jb25maWd1cmUoKSB0byBwb3dlciB1cCBhbmQKPiAtICogY29uZmlndXJlIHRo ZSBsaW5rIGJhc2VkIG9uIHRoZSBsaW5rJ3MgY2FwYWJpbGl0aWVzLgo+IC0gKgo+IC0gKiBSZXR1 cm5zIDAgb24gc3VjY2VzcyBvciBhIG5lZ2F0aXZlIGVycm9yIGNvZGUgb24gZmFpbHVyZS4KPiAt ICovCj4gLWludCBkcm1fZHBfbGlua19wcm9iZShzdHJ1Y3QgZHJtX2RwX2F1eCAqYXV4LCBzdHJ1 Y3QgZHJtX2RwX2xpbmsgKmxpbmspCj4gLXsKPiAtCXU4IHZhbHVlc1szXTsKPiAtCWludCBlcnI7 Cj4gLQo+IC0JbWVtc2V0KGxpbmssIDAsIHNpemVvZigqbGluaykpOwo+IC0KPiAtCWVyciA9IGRy bV9kcF9kcGNkX3JlYWQoYXV4LCBEUF9EUENEX1JFViwgdmFsdWVzLCBzaXplb2YodmFsdWVzKSk7 Cj4gLQlpZiAoZXJyIDwgMCkKPiAtCQlyZXR1cm4gZXJyOwo+IC0KPiAtCWxpbmstPnJldmlzaW9u ID0gdmFsdWVzWzBdOwo+IC0JbGluay0+cmF0ZSA9IGRybV9kcF9id19jb2RlX3RvX2xpbmtfcmF0 ZSh2YWx1ZXNbMV0pOwo+IC0JbGluay0+bnVtX2xhbmVzID0gdmFsdWVzWzJdICYgRFBfTUFYX0xB TkVfQ09VTlRfTUFTSzsKPiAtCj4gLQlpZiAodmFsdWVzWzJdICYgRFBfRU5IQU5DRURfRlJBTUVf Q0FQKQo+IC0JCWxpbmstPmNhcGFiaWxpdGllcyB8PSBEUF9MSU5LX0NBUF9FTkhBTkNFRF9GUkFN SU5HOwo+IC0KPiAtCXJldHVybiAwOwo+IC19Cj4gLUVYUE9SVF9TWU1CT0woZHJtX2RwX2xpbmtf cHJvYmUpOwo+IC0KPiAtLyoqCj4gLSAqIGRybV9kcF9saW5rX3Bvd2VyX3VwKCkgLSBwb3dlciB1 cCBhIERpc3BsYXlQb3J0IGxpbmsKPiAtICogQGF1eDogRGlzcGxheVBvcnQgQVVYIGNoYW5uZWwK PiAtICogQGxpbms6IHBvaW50ZXIgdG8gYSBzdHJ1Y3R1cmUgY29udGFpbmluZyB0aGUgbGluayBj b25maWd1cmF0aW9uCj4gLSAqCj4gLSAqIFJldHVybnMgMCBvbiBzdWNjZXNzIG9yIGEgbmVnYXRp dmUgZXJyb3IgY29kZSBvbiBmYWlsdXJlLgo+IC0gKi8KPiAtaW50IGRybV9kcF9saW5rX3Bvd2Vy X3VwKHN0cnVjdCBkcm1fZHBfYXV4ICphdXgsIHN0cnVjdCBkcm1fZHBfbGluayAqbGluaykKPiAt ewo+IC0JdTggdmFsdWU7Cj4gLQlpbnQgZXJyOwo+IC0KPiAtCS8qIERQX1NFVF9QT1dFUiByZWdp c3RlciBpcyBvbmx5IGF2YWlsYWJsZSBvbiBEUENEIHYxLjEgYW5kIGxhdGVyICovCj4gLQlpZiAo bGluay0+cmV2aXNpb24gPCAweDExKQo+IC0JCXJldHVybiAwOwo+IC0KPiAtCWVyciA9IGRybV9k cF9kcGNkX3JlYWRiKGF1eCwgRFBfU0VUX1BPV0VSLCAmdmFsdWUpOwo+IC0JaWYgKGVyciA8IDAp Cj4gLQkJcmV0dXJuIGVycjsKPiAtCj4gLQl2YWx1ZSAmPSB+RFBfU0VUX1BPV0VSX01BU0s7Cj4g LQl2YWx1ZSB8PSBEUF9TRVRfUE9XRVJfRDA7Cj4gLQo+IC0JZXJyID0gZHJtX2RwX2RwY2Rfd3Jp dGViKGF1eCwgRFBfU0VUX1BPV0VSLCB2YWx1ZSk7Cj4gLQlpZiAoZXJyIDwgMCkKPiAtCQlyZXR1 cm4gZXJyOwo+IC0KPiAtCS8qCj4gLQkgKiBBY2NvcmRpbmcgdG8gdGhlIERQIDEuMSBzcGVjaWZp Y2F0aW9uLCBhICJTaW5rIERldmljZSBtdXN0IGV4aXQgdGhlCj4gLQkgKiBwb3dlciBzYXZpbmcg c3RhdGUgd2l0aGluIDEgbXMiIChTZWN0aW9uIDIuNS4zLjEsIFRhYmxlIDUtNTIsICJTaW5rCj4g LQkgKiBDb250cm9sIEZpZWxkIiAocmVnaXN0ZXIgMHg2MDApLgo+IC0JICovCj4gLQl1c2xlZXBf cmFuZ2UoMTAwMCwgMjAwMCk7Cj4gLQo+IC0JcmV0dXJuIDA7Cj4gLX0KPiAtRVhQT1JUX1NZTUJP TChkcm1fZHBfbGlua19wb3dlcl91cCk7Cj4gLQo+IC0vKioKPiAtICogZHJtX2RwX2xpbmtfcG93 ZXJfZG93bigpIC0gcG93ZXIgZG93biBhIERpc3BsYXlQb3J0IGxpbmsKPiAtICogQGF1eDogRGlz cGxheVBvcnQgQVVYIGNoYW5uZWwKPiAtICogQGxpbms6IHBvaW50ZXIgdG8gYSBzdHJ1Y3R1cmUg Y29udGFpbmluZyB0aGUgbGluayBjb25maWd1cmF0aW9uCj4gLSAqCj4gLSAqIFJldHVybnMgMCBv biBzdWNjZXNzIG9yIGEgbmVnYXRpdmUgZXJyb3IgY29kZSBvbiBmYWlsdXJlLgo+IC0gKi8KPiAt aW50IGRybV9kcF9saW5rX3Bvd2VyX2Rvd24oc3RydWN0IGRybV9kcF9hdXggKmF1eCwgc3RydWN0 IGRybV9kcF9saW5rICpsaW5rKQo+IC17Cj4gLQl1OCB2YWx1ZTsKPiAtCWludCBlcnI7Cj4gLQo+ IC0JLyogRFBfU0VUX1BPV0VSIHJlZ2lzdGVyIGlzIG9ubHkgYXZhaWxhYmxlIG9uIERQQ0QgdjEu MSBhbmQgbGF0ZXIgKi8KPiAtCWlmIChsaW5rLT5yZXZpc2lvbiA8IDB4MTEpCj4gLQkJcmV0dXJu IDA7Cj4gLQo+IC0JZXJyID0gZHJtX2RwX2RwY2RfcmVhZGIoYXV4LCBEUF9TRVRfUE9XRVIsICZ2 YWx1ZSk7Cj4gLQlpZiAoZXJyIDwgMCkKPiAtCQlyZXR1cm4gZXJyOwo+IC0KPiAtCXZhbHVlICY9 IH5EUF9TRVRfUE9XRVJfTUFTSzsKPiAtCXZhbHVlIHw9IERQX1NFVF9QT1dFUl9EMzsKPiAtCj4g LQllcnIgPSBkcm1fZHBfZHBjZF93cml0ZWIoYXV4LCBEUF9TRVRfUE9XRVIsIHZhbHVlKTsKPiAt CWlmIChlcnIgPCAwKQo+IC0JCXJldHVybiBlcnI7Cj4gLQo+IC0JcmV0dXJuIDA7Cj4gLX0KPiAt RVhQT1JUX1NZTUJPTChkcm1fZHBfbGlua19wb3dlcl9kb3duKTsKPiAtCj4gLS8qKgo+IC0gKiBk cm1fZHBfbGlua19jb25maWd1cmUoKSAtIGNvbmZpZ3VyZSBhIERpc3BsYXlQb3J0IGxpbmsKPiAt ICogQGF1eDogRGlzcGxheVBvcnQgQVVYIGNoYW5uZWwKPiAtICogQGxpbms6IHBvaW50ZXIgdG8g YSBzdHJ1Y3R1cmUgY29udGFpbmluZyB0aGUgbGluayBjb25maWd1cmF0aW9uCj4gLSAqCj4gLSAq IFJldHVybnMgMCBvbiBzdWNjZXNzIG9yIGEgbmVnYXRpdmUgZXJyb3IgY29kZSBvbiBmYWlsdXJl Lgo+IC0gKi8KPiAtaW50IGRybV9kcF9saW5rX2NvbmZpZ3VyZShzdHJ1Y3QgZHJtX2RwX2F1eCAq YXV4LCBzdHJ1Y3QgZHJtX2RwX2xpbmsgKmxpbmspCj4gLXsKPiAtCXU4IHZhbHVlc1syXTsKPiAt CWludCBlcnI7Cj4gLQo+IC0JdmFsdWVzWzBdID0gZHJtX2RwX2xpbmtfcmF0ZV90b19id19jb2Rl KGxpbmstPnJhdGUpOwo+IC0JdmFsdWVzWzFdID0gbGluay0+bnVtX2xhbmVzOwo+IC0KPiAtCWlm IChsaW5rLT5jYXBhYmlsaXRpZXMgJiBEUF9MSU5LX0NBUF9FTkhBTkNFRF9GUkFNSU5HKQo+IC0J CXZhbHVlc1sxXSB8PSBEUF9MQU5FX0NPVU5UX0VOSEFOQ0VEX0ZSQU1FX0VOOwo+IC0KPiAtCWVy ciA9IGRybV9kcF9kcGNkX3dyaXRlKGF1eCwgRFBfTElOS19CV19TRVQsIHZhbHVlcywgc2l6ZW9m KHZhbHVlcykpOwo+IC0JaWYgKGVyciA8IDApCj4gLQkJcmV0dXJuIGVycjsKPiAtCj4gLQlyZXR1 cm4gMDsKPiAtfQo+IC1FWFBPUlRfU1lNQk9MKGRybV9kcF9saW5rX2NvbmZpZ3VyZSk7Cj4gLQo+ ICAvKioKPiAgICogZHJtX2RwX2Rvd25zdHJlYW1fbWF4X2Nsb2NrKCkgLSBleHRyYWN0IGJyYW5j aCBkZXZpY2UgbWF4Cj4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGl4ZWwg cmF0ZSBmb3IgbGVnYWN5IFZHQQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdGVncmEv TWFrZWZpbGUgYi9kcml2ZXJzL2dwdS9kcm0vdGVncmEvTWFrZWZpbGUKPiBpbmRleCAzM2M0NjNl OGQ0OWYuLmQ2Y2YyMDI0MTRmMCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vdGVncmEv TWFrZWZpbGUKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vdGVncmEvTWFrZWZpbGUKPiBAQCAtNSw2 ICs1LDcgQEAgdGVncmEtZHJtLXkgOj0gXAo+ICAJZHJtLm8gXAo+ICAJZ2VtLm8gXAo+ICAJZmIu byBcCj4gKwlkcC5vIFwKPiAgCWh1Yi5vIFwKPiAgCXBsYW5lLm8gXAo+ICAJZGMubyBcCj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS90ZWdyYS9kcC5jIGIvZHJpdmVycy9ncHUvZHJtL3Rl Z3JhL2RwLmMKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAwMDAwMC4uNTBi YTk2N2ViY2JkCj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS90ZWdyYS9k cC5jCj4gQEAgLTAsMCArMSwxMzMgQEAKPiArLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1J VAo+ICsvKgo+ICsgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxOSBOVklESUEgQ29ycG9yYXRpb24K PiArICogQ29weXJpZ2h0IChDKSAyMDE1IFJvYiBDbGFyawo+ICsgKi8KPiArCj4gKyNpbmNsdWRl IDxkcm0vZHJtX2RwX2hlbHBlci5oPgo+ICsKPiArI2luY2x1ZGUgImRwLmgiCj4gKwo+ICsvKioK PiArICogZHJtX2RwX2xpbmtfcHJvYmUoKSAtIHByb2JlIGEgRGlzcGxheVBvcnQgbGluayBmb3Ig Y2FwYWJpbGl0aWVzCj4gKyAqIEBhdXg6IERpc3BsYXlQb3J0IEFVWCBjaGFubmVsCj4gKyAqIEBs aW5rOiBwb2ludGVyIHRvIHN0cnVjdHVyZSBpbiB3aGljaCB0byByZXR1cm4gbGluayBjYXBhYmls aXRpZXMKPiArICoKPiArICogVGhlIHN0cnVjdHVyZSBmaWxsZWQgaW4gYnkgdGhpcyBmdW5jdGlv biBjYW4gdXN1YWxseSBiZSBwYXNzZWQgZGlyZWN0bHkKPiArICogaW50byBkcm1fZHBfbGlua19w b3dlcl91cCgpIGFuZCBkcm1fZHBfbGlua19jb25maWd1cmUoKSB0byBwb3dlciB1cCBhbmQKPiAr ICogY29uZmlndXJlIHRoZSBsaW5rIGJhc2VkIG9uIHRoZSBsaW5rJ3MgY2FwYWJpbGl0aWVzLgo+ ICsgKgo+ICsgKiBSZXR1cm5zIDAgb24gc3VjY2VzcyBvciBhIG5lZ2F0aXZlIGVycm9yIGNvZGUg b24gZmFpbHVyZS4KPiArICovCj4gK2ludCBkcm1fZHBfbGlua19wcm9iZShzdHJ1Y3QgZHJtX2Rw X2F1eCAqYXV4LCBzdHJ1Y3QgZHJtX2RwX2xpbmsgKmxpbmspCj4gK3sKPiArCXU4IHZhbHVlc1sz XTsKPiArCWludCBlcnI7Cj4gKwo+ICsJbWVtc2V0KGxpbmssIDAsIHNpemVvZigqbGluaykpOwo+ ICsKPiArCWVyciA9IGRybV9kcF9kcGNkX3JlYWQoYXV4LCBEUF9EUENEX1JFViwgdmFsdWVzLCBz aXplb2YodmFsdWVzKSk7Cj4gKwlpZiAoZXJyIDwgMCkKPiArCQlyZXR1cm4gZXJyOwo+ICsKPiAr CWxpbmstPnJldmlzaW9uID0gdmFsdWVzWzBdOwo+ICsJbGluay0+cmF0ZSA9IGRybV9kcF9id19j b2RlX3RvX2xpbmtfcmF0ZSh2YWx1ZXNbMV0pOwo+ICsJbGluay0+bnVtX2xhbmVzID0gdmFsdWVz WzJdICYgRFBfTUFYX0xBTkVfQ09VTlRfTUFTSzsKPiArCj4gKwlpZiAodmFsdWVzWzJdICYgRFBf RU5IQU5DRURfRlJBTUVfQ0FQKQo+ICsJCWxpbmstPmNhcGFiaWxpdGllcyB8PSBEUF9MSU5LX0NB UF9FTkhBTkNFRF9GUkFNSU5HOwo+ICsKPiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ICsvKioKPiAr ICogZHJtX2RwX2xpbmtfcG93ZXJfdXAoKSAtIHBvd2VyIHVwIGEgRGlzcGxheVBvcnQgbGluawo+ ICsgKiBAYXV4OiBEaXNwbGF5UG9ydCBBVVggY2hhbm5lbAo+ICsgKiBAbGluazogcG9pbnRlciB0 byBhIHN0cnVjdHVyZSBjb250YWluaW5nIHRoZSBsaW5rIGNvbmZpZ3VyYXRpb24KPiArICoKPiAr ICogUmV0dXJucyAwIG9uIHN1Y2Nlc3Mgb3IgYSBuZWdhdGl2ZSBlcnJvciBjb2RlIG9uIGZhaWx1 cmUuCj4gKyAqLwo+ICtpbnQgZHJtX2RwX2xpbmtfcG93ZXJfdXAoc3RydWN0IGRybV9kcF9hdXgg KmF1eCwgc3RydWN0IGRybV9kcF9saW5rICpsaW5rKQo+ICt7Cj4gKwl1OCB2YWx1ZTsKPiArCWlu dCBlcnI7Cj4gKwo+ICsJLyogRFBfU0VUX1BPV0VSIHJlZ2lzdGVyIGlzIG9ubHkgYXZhaWxhYmxl IG9uIERQQ0QgdjEuMSBhbmQgbGF0ZXIgKi8KPiArCWlmIChsaW5rLT5yZXZpc2lvbiA8IDB4MTEp Cj4gKwkJcmV0dXJuIDA7Cj4gKwo+ICsJZXJyID0gZHJtX2RwX2RwY2RfcmVhZGIoYXV4LCBEUF9T RVRfUE9XRVIsICZ2YWx1ZSk7Cj4gKwlpZiAoZXJyIDwgMCkKPiArCQlyZXR1cm4gZXJyOwo+ICsK PiArCXZhbHVlICY9IH5EUF9TRVRfUE9XRVJfTUFTSzsKPiArCXZhbHVlIHw9IERQX1NFVF9QT1dF Ul9EMDsKPiArCj4gKwllcnIgPSBkcm1fZHBfZHBjZF93cml0ZWIoYXV4LCBEUF9TRVRfUE9XRVIs IHZhbHVlKTsKPiArCWlmIChlcnIgPCAwKQo+ICsJCXJldHVybiBlcnI7Cj4gKwo+ICsJLyoKPiAr CSAqIEFjY29yZGluZyB0byB0aGUgRFAgMS4xIHNwZWNpZmljYXRpb24sIGEgIlNpbmsgRGV2aWNl IG11c3QgZXhpdCB0aGUKPiArCSAqIHBvd2VyIHNhdmluZyBzdGF0ZSB3aXRoaW4gMSBtcyIgKFNl Y3Rpb24gMi41LjMuMSwgVGFibGUgNS01MiwgIlNpbmsKPiArCSAqIENvbnRyb2wgRmllbGQiIChy ZWdpc3RlciAweDYwMCkuCj4gKwkgKi8KPiArCXVzbGVlcF9yYW5nZSgxMDAwLCAyMDAwKTsKPiAr Cj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiArLyoqCj4gKyAqIGRybV9kcF9saW5rX3Bvd2VyX2Rv d24oKSAtIHBvd2VyIGRvd24gYSBEaXNwbGF5UG9ydCBsaW5rCj4gKyAqIEBhdXg6IERpc3BsYXlQ b3J0IEFVWCBjaGFubmVsCj4gKyAqIEBsaW5rOiBwb2ludGVyIHRvIGEgc3RydWN0dXJlIGNvbnRh aW5pbmcgdGhlIGxpbmsgY29uZmlndXJhdGlvbgo+ICsgKgo+ICsgKiBSZXR1cm5zIDAgb24gc3Vj Y2VzcyBvciBhIG5lZ2F0aXZlIGVycm9yIGNvZGUgb24gZmFpbHVyZS4KPiArICovCj4gK2ludCBk cm1fZHBfbGlua19wb3dlcl9kb3duKHN0cnVjdCBkcm1fZHBfYXV4ICphdXgsIHN0cnVjdCBkcm1f ZHBfbGluayAqbGluaykKPiArewo+ICsJdTggdmFsdWU7Cj4gKwlpbnQgZXJyOwo+ICsKPiArCS8q IERQX1NFVF9QT1dFUiByZWdpc3RlciBpcyBvbmx5IGF2YWlsYWJsZSBvbiBEUENEIHYxLjEgYW5k IGxhdGVyICovCj4gKwlpZiAobGluay0+cmV2aXNpb24gPCAweDExKQo+ICsJCXJldHVybiAwOwo+ ICsKPiArCWVyciA9IGRybV9kcF9kcGNkX3JlYWRiKGF1eCwgRFBfU0VUX1BPV0VSLCAmdmFsdWUp Owo+ICsJaWYgKGVyciA8IDApCj4gKwkJcmV0dXJuIGVycjsKPiArCj4gKwl2YWx1ZSAmPSB+RFBf U0VUX1BPV0VSX01BU0s7Cj4gKwl2YWx1ZSB8PSBEUF9TRVRfUE9XRVJfRDM7Cj4gKwo+ICsJZXJy ID0gZHJtX2RwX2RwY2Rfd3JpdGViKGF1eCwgRFBfU0VUX1BPV0VSLCB2YWx1ZSk7Cj4gKwlpZiAo ZXJyIDwgMCkKPiArCQlyZXR1cm4gZXJyOwo+ICsKPiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ICsv KioKPiArICogZHJtX2RwX2xpbmtfY29uZmlndXJlKCkgLSBjb25maWd1cmUgYSBEaXNwbGF5UG9y dCBsaW5rCj4gKyAqIEBhdXg6IERpc3BsYXlQb3J0IEFVWCBjaGFubmVsCj4gKyAqIEBsaW5rOiBw b2ludGVyIHRvIGEgc3RydWN0dXJlIGNvbnRhaW5pbmcgdGhlIGxpbmsgY29uZmlndXJhdGlvbgo+ ICsgKgo+ICsgKiBSZXR1cm5zIDAgb24gc3VjY2VzcyBvciBhIG5lZ2F0aXZlIGVycm9yIGNvZGUg b24gZmFpbHVyZS4KPiArICovCj4gK2ludCBkcm1fZHBfbGlua19jb25maWd1cmUoc3RydWN0IGRy bV9kcF9hdXggKmF1eCwgc3RydWN0IGRybV9kcF9saW5rICpsaW5rKQo+ICt7Cj4gKwl1OCB2YWx1 ZXNbMl07Cj4gKwlpbnQgZXJyOwo+ICsKPiArCXZhbHVlc1swXSA9IGRybV9kcF9saW5rX3JhdGVf dG9fYndfY29kZShsaW5rLT5yYXRlKTsKPiArCXZhbHVlc1sxXSA9IGxpbmstPm51bV9sYW5lczsK PiArCj4gKwlpZiAobGluay0+Y2FwYWJpbGl0aWVzICYgRFBfTElOS19DQVBfRU5IQU5DRURfRlJB TUlORykKPiArCQl2YWx1ZXNbMV0gfD0gRFBfTEFORV9DT1VOVF9FTkhBTkNFRF9GUkFNRV9FTjsK PiArCj4gKwllcnIgPSBkcm1fZHBfZHBjZF93cml0ZShhdXgsIERQX0xJTktfQldfU0VULCB2YWx1 ZXMsIHNpemVvZih2YWx1ZXMpKTsKPiArCWlmIChlcnIgPCAwKQo+ICsJCXJldHVybiBlcnI7Cj4g Kwo+ICsJcmV0dXJuIDA7Cj4gK30KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3RlZ3Jh L2RwLmggYi9kcml2ZXJzL2dwdS9kcm0vdGVncmEvZHAuaAo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0 Cj4gaW5kZXggMDAwMDAwMDAwMDAwLi5jYTk5YTIxZDk2ODYKPiAtLS0gL2Rldi9udWxsCj4gKysr IGIvZHJpdmVycy9ncHUvZHJtL3RlZ3JhL2RwLmgKPiBAQCAtMCwwICsxLDI2IEBACj4gKy8vIFNQ RFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVQKPiArLyoKPiArICogQ29weXJpZ2h0IChDKSAyMDEz LTIwMTkgTlZJRElBIENvcnBvcmF0aW9uLgo+ICsgKiBDb3B5cmlnaHQgKEMpIDIwMTUgUm9iIENs YXJrCj4gKyAqLwo+ICsKPiArI2lmbmRlZiBEUk1fVEVHUkFfRFBfSAo+ICsjZGVmaW5lIERSTV9U RUdSQV9EUF9IIDEKPiArCj4gK3N0cnVjdCBkcm1fZHBfYXV4Owo+ICsKPiArI2RlZmluZSBEUF9M SU5LX0NBUF9FTkhBTkNFRF9GUkFNSU5HICgxIDw8IDApCj4gKwo+ICtzdHJ1Y3QgZHJtX2RwX2xp bmsgewo+ICsJdW5zaWduZWQgY2hhciByZXZpc2lvbjsKPiArCXVuc2lnbmVkIGludCByYXRlOwo+ ICsJdW5zaWduZWQgaW50IG51bV9sYW5lczsKPiArCXVuc2lnbmVkIGxvbmcgY2FwYWJpbGl0aWVz Owo+ICt9Owo+ICsKPiAraW50IGRybV9kcF9saW5rX3Byb2JlKHN0cnVjdCBkcm1fZHBfYXV4ICph dXgsIHN0cnVjdCBkcm1fZHBfbGluayAqbGluayk7Cj4gK2ludCBkcm1fZHBfbGlua19wb3dlcl91 cChzdHJ1Y3QgZHJtX2RwX2F1eCAqYXV4LCBzdHJ1Y3QgZHJtX2RwX2xpbmsgKmxpbmspOwo+ICtp bnQgZHJtX2RwX2xpbmtfcG93ZXJfZG93bihzdHJ1Y3QgZHJtX2RwX2F1eCAqYXV4LCBzdHJ1Y3Qg ZHJtX2RwX2xpbmsgKmxpbmspOwo+ICtpbnQgZHJtX2RwX2xpbmtfY29uZmlndXJlKHN0cnVjdCBk cm1fZHBfYXV4ICphdXgsIHN0cnVjdCBkcm1fZHBfbGluayAqbGluayk7Cj4gKwo+ICsjZW5kaWYK PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3RlZ3JhL2RwYXV4LmMgYi9kcml2ZXJzL2dw dS9kcm0vdGVncmEvZHBhdXguYwo+IGluZGV4IGEwZjZmOWIwZDI1OC4uMTE0NDYwNWM5NzM3IDEw MDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS90ZWdyYS9kcGF1eC5jCj4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL3RlZ3JhL2RwYXV4LmMKPiBAQCAtMjIsNiArMjIsNyBAQAo+ICAjaW5jbHVkZSA8 ZHJtL2RybV9kcF9oZWxwZXIuaD4KPiAgI2luY2x1ZGUgPGRybS9kcm1fcGFuZWwuaD4KPiAgCj4g KyNpbmNsdWRlICJkcC5oIgo+ICAjaW5jbHVkZSAiZHBhdXguaCIKPiAgI2luY2x1ZGUgImRybS5o Igo+ICAjaW5jbHVkZSAidHJhY2UuaCIKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3Rl Z3JhL3Nvci5jIGIvZHJpdmVycy9ncHUvZHJtL3RlZ3JhL3Nvci5jCj4gaW5kZXggNTc2OTMyNjAy NDVlLi45MWQ1YzUwNDFkMmMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL3RlZ3JhL3Nv ci5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL3RlZ3JhL3Nvci5jCj4gQEAgLTI1LDYgKzI1LDcg QEAKPiAgI2luY2x1ZGUgPGRybS9kcm1fc2NkY19oZWxwZXIuaD4KPiAgCj4gICNpbmNsdWRlICJk Yy5oIgo+ICsjaW5jbHVkZSAiZHAuaCIKPiAgI2luY2x1ZGUgImRybS5oIgo+ICAjaW5jbHVkZSAi aGRhLmgiCj4gICNpbmNsdWRlICJzb3IuaCIKPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0vZHJt X2RwX2hlbHBlci5oIGIvaW5jbHVkZS9kcm0vZHJtX2RwX2hlbHBlci5oCj4gaW5kZXggMDRmNmMw YmIwMjc0Li41MWVjYjUxMTJlZjggMTAwNjQ0Cj4gLS0tIGEvaW5jbHVkZS9kcm0vZHJtX2RwX2hl bHBlci5oCj4gKysrIGIvaW5jbHVkZS9kcm0vZHJtX2RwX2hlbHBlci5oCj4gQEAgLTE0NTUsMjIg KzE0NTUsNiBAQCBzdGF0aWMgaW5saW5lIHNzaXplX3QgZHJtX2RwX2RwY2Rfd3JpdGViKHN0cnVj dCBkcm1fZHBfYXV4ICphdXgsCj4gIGludCBkcm1fZHBfZHBjZF9yZWFkX2xpbmtfc3RhdHVzKHN0 cnVjdCBkcm1fZHBfYXV4ICphdXgsCj4gIAkJCQkgdTggc3RhdHVzW0RQX0xJTktfU1RBVFVTX1NJ WkVdKTsKPiAgCj4gLS8qCj4gLSAqIERpc3BsYXlQb3J0IGxpbmsKPiAtICovCj4gLSNkZWZpbmUg RFBfTElOS19DQVBfRU5IQU5DRURfRlJBTUlORyAoMSA8PCAwKQo+IC0KPiAtc3RydWN0IGRybV9k cF9saW5rIHsKPiAtCXVuc2lnbmVkIGNoYXIgcmV2aXNpb247Cj4gLQl1bnNpZ25lZCBpbnQgcmF0 ZTsKPiAtCXVuc2lnbmVkIGludCBudW1fbGFuZXM7Cj4gLQl1bnNpZ25lZCBsb25nIGNhcGFiaWxp dGllczsKPiAtfTsKPiAtCj4gLWludCBkcm1fZHBfbGlua19wcm9iZShzdHJ1Y3QgZHJtX2RwX2F1 eCAqYXV4LCBzdHJ1Y3QgZHJtX2RwX2xpbmsgKmxpbmspOwo+IC1pbnQgZHJtX2RwX2xpbmtfcG93 ZXJfdXAoc3RydWN0IGRybV9kcF9hdXggKmF1eCwgc3RydWN0IGRybV9kcF9saW5rICpsaW5rKTsK PiAtaW50IGRybV9kcF9saW5rX3Bvd2VyX2Rvd24oc3RydWN0IGRybV9kcF9hdXggKmF1eCwgc3Ry dWN0IGRybV9kcF9saW5rICpsaW5rKTsKPiAtaW50IGRybV9kcF9saW5rX2NvbmZpZ3VyZShzdHJ1 Y3QgZHJtX2RwX2F1eCAqYXV4LCBzdHJ1Y3QgZHJtX2RwX2xpbmsgKmxpbmspOwo+ICBpbnQgZHJt X2RwX2Rvd25zdHJlYW1fbWF4X2Nsb2NrKGNvbnN0IHU4IGRwY2RbRFBfUkVDRUlWRVJfQ0FQX1NJ WkVdLAo+ICAJCQkJY29uc3QgdTggcG9ydF9jYXBbNF0pOwo+ICBpbnQgZHJtX2RwX2Rvd25zdHJl YW1fbWF4X2JwYyhjb25zdCB1OCBkcGNkW0RQX1JFQ0VJVkVSX0NBUF9TSVpFXSwKPiAtLSAKPiAy LjIzLjAKPiAKCi0tIApEYW5pZWwgVmV0dGVyClNvZnR3YXJlIEVuZ2luZWVyLCBJbnRlbCBDb3Jw b3JhdGlvbgpodHRwOi8vYmxvZy5mZndsbC5jaApfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0 cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9s aXN0aW5mby9kcmktZGV2ZWw=