From mboxrd@z Thu Jan 1 00:00:00 1970 From: Laurent Pinchart Subject: Re: [PATCH/RFC 11/15] drm: rcar-du: lvds: Add support for dual-link mode Date: Fri, 8 Mar 2019 20:12:39 +0200 Message-ID: <20190308181239.GD11318@pendragon.ideasonboard.com> References: <20190306232345.23052-1-laurent.pinchart+renesas@ideasonboard.com> <20190306232345.23052-12-laurent.pinchart+renesas@ideasonboard.com> <20190308172023.vtsvouwo4ltxzgx2@uno.localdomain> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [IPv6:2001:4b98:dc2:55:216:3eff:fef7:d647]) by gabe.freedesktop.org (Postfix) with ESMTPS id 2AE4F6E409 for ; Fri, 8 Mar 2019 18:12:48 +0000 (UTC) Content-Disposition: inline In-Reply-To: <20190308172023.vtsvouwo4ltxzgx2@uno.localdomain> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Jacopo Mondi Cc: linux-renesas-soc@vger.kernel.org, Laurent Pinchart , Kieran Bingham , dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org SGkgSmFjb3BvLAoKT24gRnJpLCBNYXIgMDgsIDIwMTkgYXQgMDY6MjA6MjNQTSArMDEwMCwgSmFj b3BvIE1vbmRpIHdyb3RlOgo+IE9uIFRodSwgTWFyIDA3LCAyMDE5IGF0IDAxOjIzOjQxQU0gKzAy MDAsIExhdXJlbnQgUGluY2hhcnQgd3JvdGU6Cj4gPiBJbiBkdWFsLWxpbmsgbW9kZSB0aGUgTFZE UzAgZW5jb2RlciB0cmFuc21pdHMgZXZlbi1udW1iZXJlZCBwaXhlbHMsIGFuZAo+ID4gc2VuZHMg b2RkLW51bWJlcmVkIHBpeGVscyB0byB0aGUgTFZEUzEgZW5jb2RlciBmb3IgdHJhbnNtaXNzaW9u IG9uIGEKPiA+IHNlcGFyYXRlIGxpbmsuCj4gPgo+ID4gVG8gaW1wbGVtZW50IHN1cHBvcnQgZm9y IHRoaXMgbW9kZSBvZiBvcGVyYXRpb24sIGRldGVybWluZSBpZiB0aGUgTFZEUwo+ID4gY29ubmVj dGlvbiBvcGVyYXRlcyBpbiBkdWFsLWxpbmsgbW9kZSBieSBxdWVyeWluZyB0aGUgbmV4dCBkZXZp Y2UgaW4gdGhlCj4gPiBwaXBlbGluZSwgbG9jYXRlIHRoZSBjb21wYW5pb24gZW5jb2RlciwgYW5k IGNvbnRyb2wgaXQgZGlyZWN0bHkgdGhyb3VnaAo+ID4gaXRzIGJyaWRnZSBvcGVyYXRpb25zLgo+ ID4KPiA+IFNpZ25lZC1vZmYtYnk6IExhdXJlbnQgUGluY2hhcnQgPGxhdXJlbnQucGluY2hhcnQr cmVuZXNhc0BpZGVhc29uYm9hcmQuY29tPgo+ID4gLS0tCj4gPiAgZHJpdmVycy9ncHUvZHJtL3Jj YXItZHUvcmNhcl9sdmRzLmMgfCAxMDQgKysrKysrKysrKysrKysrKysrKysrKysrLS0tLQo+ID4g IGRyaXZlcnMvZ3B1L2RybS9yY2FyLWR1L3JjYXJfbHZkcy5oIHwgICA1ICsrCj4gPiAgMiBmaWxl cyBjaGFuZ2VkLCA5NiBpbnNlcnRpb25zKCspLCAxMyBkZWxldGlvbnMoLSkKPiA+Cj4gPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3JjYXItZHUvcmNhcl9sdmRzLmMgYi9kcml2ZXJzL2dw dS9kcm0vcmNhci1kdS9yY2FyX2x2ZHMuYwo+ID4gaW5kZXggNWFjOTJlZTE1YmUwLi45MGQzMzUx NGJiM2UgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vcmNhci1kdS9yY2FyX2x2ZHMu Ywo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL3JjYXItZHUvcmNhcl9sdmRzLmMKPiA+IEBAIC02 Niw2ICs2Niw5IEBAIHN0cnVjdCByY2FyX2x2ZHMgewo+ID4KPiA+ICAJc3RydWN0IGRybV9kaXNw bGF5X21vZGUgZGlzcGxheV9tb2RlOwo+ID4gIAllbnVtIHJjYXJfbHZkc19tb2RlIG1vZGU7Cj4g PiArCj4gPiArCXN0cnVjdCBkcm1fYnJpZGdlICpjb21wYW5pb247Cj4gPiArCWJvb2wgZHVhbF9s aW5rOwo+ID4gIH07Cj4gPgo+ID4gICNkZWZpbmUgYnJpZGdlX3RvX3JjYXJfbHZkcyhicmlkZ2Up IFwKPiA+IEBAIC00MDAsMTEgKzQwMyw2IEBAIHN0YXRpYyB2b2lkIHJjYXJfbHZkc19lbmFibGUo c3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZSkKPiA+ICB7Cj4gPiAgCXN0cnVjdCByY2FyX2x2ZHMg Kmx2ZHMgPSBicmlkZ2VfdG9fcmNhcl9sdmRzKGJyaWRnZSk7Cj4gPiAgCWNvbnN0IHN0cnVjdCBk cm1fZGlzcGxheV9tb2RlICptb2RlID0gJmx2ZHMtPmRpc3BsYXlfbW9kZTsKPiA+IC0JLyoKPiA+ IC0JICogRklYTUU6IFdlIHNob3VsZCByZWFsbHkgcmV0cmlldmUgdGhlIENSVEMgdGhyb3VnaCB0 aGUgc3RhdGUsIGJ1dCBob3cKPiA+IC0JICogZG8gd2UgZ2V0IGEgc3RhdGUgcG9pbnRlcj8KPiA+ IC0JICovCj4gPiAtCXN0cnVjdCBkcm1fY3J0YyAqY3J0YyA9IGx2ZHMtPmJyaWRnZS5lbmNvZGVy LT5jcnRjOwo+ID4gIAl1MzIgbHZkaGNyOwo+ID4gIAl1MzIgbHZkY3IwOwo+ID4gIAlpbnQgcmV0 Owo+ID4gQEAgLTQxMyw2ICs0MTEsMTAgQEAgc3RhdGljIHZvaWQgcmNhcl9sdmRzX2VuYWJsZShz dHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdlKQo+ID4gIAlpZiAocmV0IDwgMCkKPiA+ICAJCXJldHVy bjsKPiA+Cj4gPiArCS8qIEVuYWJsZSB0aGUgY29tcGFuaW9uIExWRFMgZW5jb2RlciBpbiBkdWFs LWxpbmsgbW9kZS4gKi8KPiA+ICsJaWYgKGx2ZHMtPmR1YWxfbGluayAmJiBsdmRzLT5jb21wYW5p b24pCj4gPiArCQlsdmRzLT5jb21wYW5pb24tPmZ1bmNzLT5lbmFibGUobHZkcy0+Y29tcGFuaW9u KTsKPiA+ICsKPiA+ICAJLyoKPiA+ICAJICogSGFyZGNvZGUgdGhlIGNoYW5uZWxzIGFuZCBjb250 cm9sIHNpZ25hbHMgcm91dGluZyBmb3Igbm93Lgo+ID4gIAkgKgo+ID4gQEAgLTQzNSwxNyArNDM3 LDMzIEBAIHN0YXRpYyB2b2lkIHJjYXJfbHZkc19lbmFibGUoc3RydWN0IGRybV9icmlkZ2UgKmJy aWRnZSkKPiA+ICAJcmNhcl9sdmRzX3dyaXRlKGx2ZHMsIExWRENIQ1IsIGx2ZGhjcik7Cj4gPgo+ ID4gIAlpZiAobHZkcy0+aW5mby0+cXVpcmtzICYgUkNBUl9MVkRTX1FVSVJLX0RVQUxfTElOSykg ewo+ID4gLQkJLyogRGlzYWJsZSBkdWFsLWxpbmsgbW9kZS4gKi8KPiA+IC0JCXJjYXJfbHZkc193 cml0ZShsdmRzLCBMVkRTVFJJUEUsIDApOwo+ID4gKwkJLyoKPiA+ICsJCSAqIENvbmZpZ3VyZSB2 ZXJ0aWNhbCBzdHJpcGUgYmFzZWQgb24gdGhlIG1vZGUgb2Ygb3BlcmF0aW9uIG9mCj4gPiArCQkg KiB0aGUgY29ubmVjdGVkIGRldmljZS4KPiA+ICsJCSAqLwo+ID4gKwkJcmNhcl9sdmRzX3dyaXRl KGx2ZHMsIExWRFNUUklQRSwKPiA+ICsJCQkJbHZkcy0+ZHVhbF9saW5rID8gTFZEU1RSSVBFX1NU X09OIDogMCk7Cj4gPiAgCX0KPiA+Cj4gPiAtCS8qIFBMTCBjbG9jayBjb25maWd1cmF0aW9uLiAq Lwo+ID4gLQlsdmRzLT5pbmZvLT5wbGxfc2V0dXAobHZkcywgbW9kZS0+Y2xvY2sgKiAxMDAwKTsK PiA+ICsJLyoKPiA+ICsJICogUExMIGNsb2NrIGNvbmZpZ3VyYXRpb24gb24gYWxsIGluc3RhbmNl cyBidXQgdGhlIGNvbXBhbmlvbiBpbgo+ID4gKwkgKiBkdWFsLWxpbmsgbW9kZS4KPiA+ICsJICov Cj4gPiArCWlmICghbHZkcy0+ZHVhbF9saW5rIHx8IGx2ZHMtPmNvbXBhbmlvbikKPiA+ICsJCWx2 ZHMtPmluZm8tPnBsbF9zZXR1cChsdmRzLCBtb2RlLT5jbG9jayAqIDEwMDApOwo+ID4KPiA+ICAJ LyogU2V0IHRoZSBMVkRTIG1vZGUgYW5kIHNlbGVjdCB0aGUgaW5wdXQuICovCj4gPiAgCWx2ZGNy MCA9IGx2ZHMtPm1vZGUgPDwgTFZEQ1IwX0xWTURfU0hJRlQ7Cj4gPiAtCWlmIChkcm1fY3J0Y19p bmRleChjcnRjKSA9PSAyKQo+ID4gLQkJbHZkY3IwIHw9IExWRENSMF9EVVNFTDsKPiA+ICsKPiA+ ICsJaWYgKGx2ZHMtPmJyaWRnZS5lbmNvZGVyKSB7Cj4gPiArCQkvKgo+ID4gKwkJICogRklYTUU6 IFdlIHNob3VsZCByZWFsbHkgcmV0cmlldmUgdGhlIENSVEMgdGhyb3VnaCB0aGUgc3RhdGUsCj4g PiArCQkgKiBidXQgaG93IGRvIHdlIGdldCBhIHN0YXRlIHBvaW50ZXI/Cj4gPiArCQkgKi8KPiA+ ICsJCWlmIChkcm1fY3J0Y19pbmRleChsdmRzLT5icmlkZ2UuZW5jb2Rlci0+Y3J0YykgPT0gMikK PiA+ICsJCQlsdmRjcjAgfD0gTFZEQ1IwX0RVU0VMOwo+ID4gKwl9Cj4gPiArCj4gPiAgCXJjYXJf bHZkc193cml0ZShsdmRzLCBMVkRDUjAsIGx2ZGNyMCk7Cj4gPgo+ID4gIAkvKiBUdXJuIGFsbCB0 aGUgY2hhbm5lbHMgb24uICovCj4gPiBAQCAtNTEyLDYgKzUzMCwxMCBAQCBzdGF0aWMgdm9pZCBy Y2FyX2x2ZHNfZGlzYWJsZShzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdlKQo+ID4gIAlyY2FyX2x2 ZHNfd3JpdGUobHZkcywgTFZEQ1IxLCAwKTsKPiA+ICAJcmNhcl9sdmRzX3dyaXRlKGx2ZHMsIExW RFBMTENSLCAwKTsKPiA+Cj4gPiArCS8qIERpc2FibGUgdGhlIGNvbXBhbmlvbiBMVkRTIGVuY29k ZXIgaW4gZHVhbC1saW5rIG1vZGUuICovCj4gPiArCWlmIChsdmRzLT5kdWFsX2xpbmsgJiYgbHZk cy0+Y29tcGFuaW9uKQo+ID4gKwkJbHZkcy0+Y29tcGFuaW9uLT5mdW5jcy0+ZGlzYWJsZShsdmRz LT5jb21wYW5pb24pOwo+ID4gKwo+ID4gIAljbGtfZGlzYWJsZV91bnByZXBhcmUobHZkcy0+Y2xv Y2tzLm1vZCk7Cj4gPiAgfQo+ID4KPiA+IEBAIC02MjgsMTAgKzY1MCw1NCBAQCBzdGF0aWMgY29u c3Qgc3RydWN0IGRybV9icmlkZ2VfZnVuY3MgcmNhcl9sdmRzX2JyaWRnZV9vcHMgPSB7Cj4gPiAg CS5tb2RlX3NldCA9IHJjYXJfbHZkc19tb2RlX3NldCwKPiA+ICB9Owo+ID4KPiA+ICtib29sIHJj YXJfbHZkc19kdWFsX2xpbmsoc3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZSkKPiA+ICt7Cj4gPiAr CXN0cnVjdCByY2FyX2x2ZHMgKmx2ZHMgPSBicmlkZ2VfdG9fcmNhcl9sdmRzKGJyaWRnZSk7Cj4g PiArCj4gPiArCXJldHVybiBsdmRzLT5kdWFsX2xpbms7Cj4gPiArfQo+ID4gK0VYUE9SVF9TWU1C T0xfR1BMKHJjYXJfbHZkc19kdWFsX2xpbmspOwo+ID4gKwo+ID4gIC8qIC0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCj4gPiAgICogUHJvYmUgJiBSZW1vdmUKPiA+ICAgKi8KPiA+Cj4gPiArc3RhdGljIGlu dCByY2FyX2x2ZHNfcGFyc2VfZHRfY29tcGFuaW9uKHN0cnVjdCByY2FyX2x2ZHMgKmx2ZHMpCj4g PiArewo+ID4gKwljb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkICptYXRjaDsKPiA+ICsJc3RydWN0 IGRldmljZV9ub2RlICpjb21wYW5pb247Cj4gPiArCXN0cnVjdCBkZXZpY2UgKmRldiA9IGx2ZHMt PmRldjsKPiA+ICsJaW50IHJldCA9IDA7Cj4gPiArCj4gPiArCS8qIExvY2F0ZSB0aGUgY29tcGFu aW9uIExWRFMgZW5jb2RlciBmb3IgZHVhbC1saW5rIG9wZXJhdGlvbiwgaWYgYW55LiAqLwo+ID4g Kwljb21wYW5pb24gPSBvZl9wYXJzZV9waGFuZGxlKGRldi0+b2Zfbm9kZSwgInJlbmVzYXMsY29t cGFuaW9uIiwgMCk7Cj4gPiArCWlmICghY29tcGFuaW9uKQo+ID4gKwkJcmV0dXJuIC1FTk9ERVY7 Cj4gPiArCj4gPiArCS8qCj4gPiArCSAqIFNhbml0eSBjaGVjazogdGhlIGNvbXBhbmlvbiBlbmNv ZGVyIG11c3QgaGF2ZSB0aGUgc2FtZSBjb21wYXRpYmxlCj4gPiArCSAqIHN0cmluZy4KPiA+ICsJ ICovCj4gPiArCW1hdGNoID0gb2ZfbWF0Y2hfZGV2aWNlKGRldi0+ZHJpdmVyLT5vZl9tYXRjaF90 YWJsZSwgZGV2KTsKPiA+ICsJaWYgKCFvZl9kZXZpY2VfaXNfY29tcGF0aWJsZShjb21wYW5pb24s IG1hdGNoLT5jb21wYXRpYmxlKSkgewo+ID4gKwkJcmV0ID0gLUVOT0RFVjsKPiA+ICsJCWdvdG8g ZG9uZTsKPiA+ICsJfQo+ID4gKwo+ID4gKwlsdmRzLT5jb21wYW5pb24gPSBvZl9kcm1fZmluZF9i cmlkZ2UoY29tcGFuaW9uKTsKPiA+ICsJaWYgKCFsdmRzLT5jb21wYW5pb24pIHsKPiA+ICsJCXJl dCA9IC1FUFJPQkVfREVGRVI7Cj4gPiArCQlnb3RvIGRvbmU7Cj4gPiArCX0KPiA+ICsKPiA+ICsJ ZGV2X2RiZyhkZXYsICJGb3VuZCBjb21wYW5pb24gZW5jb2RlciAlcE9GXG4iLCBjb21wYW5pb24p Owo+ID4gKwo+ID4gK2RvbmU6Cj4gPiArCW9mX25vZGVfcHV0KGNvbXBhbmlvbik7Cj4gPiArCj4g PiArCXJldHVybiByZXQ7Cj4gPiArfQo+ID4gKwo+ID4gIHN0YXRpYyBpbnQgcmNhcl9sdmRzX3Bh cnNlX2R0KHN0cnVjdCByY2FyX2x2ZHMgKmx2ZHMpCj4gPiAgewo+ID4gIAlzdHJ1Y3QgZGV2aWNl X25vZGUgKmxvY2FsX291dHB1dCA9IE5VTEw7Cj4gPiBAQCAtNjgyLDE0ICs3NDgsMjYgQEAgc3Rh dGljIGludCByY2FyX2x2ZHNfcGFyc2VfZHQoc3RydWN0IHJjYXJfbHZkcyAqbHZkcykKPiA+Cj4g PiAgCWlmIChpc19icmlkZ2UpIHsKPiA+ICAJCWx2ZHMtPm5leHRfYnJpZGdlID0gb2ZfZHJtX2Zp bmRfYnJpZGdlKHJlbW90ZSk7Cj4gPiAtCQlpZiAoIWx2ZHMtPm5leHRfYnJpZGdlKQo+ID4gKwkJ aWYgKCFsdmRzLT5uZXh0X2JyaWRnZSkgewo+ID4gIAkJCXJldCA9IC1FUFJPQkVfREVGRVI7Cj4g PiArCQkJZ290byBkb25lOwo+ID4gKwkJfQo+ID4gKwo+ID4gKwkJaWYgKGx2ZHMtPmluZm8tPnF1 aXJrcyAmIFJDQVJfTFZEU19RVUlSS19EVUFMX0xJTkspCj4gPiArCQkJbHZkcy0+ZHVhbF9saW5r ID0gbHZkcy0+bmV4dF9icmlkZ2UtPnRpbWluZ3MKPiA+ICsJCQkJCT8gbHZkcy0+bmV4dF9icmlk Z2UtPnRpbWluZ3MtPmR1YWxfbGluawo+ID4gKwkJCQkJOiBmYWxzZTsKPiAKPiBJIHdvbmRlciBp ZiwgaW4gYWxsIHRoaXMgcGF0Y2gsIHlvdSBjb3VsZCBub3QgdXNlICJsdmRzLT5jb21wYW5pb24i IGluCj4gcGxhY2Ugb2YgImx2ZHMtPmR1YWxfbGluayIsIGFuZCB0aHVzIGRyb3AgdGhhdCBmcm9t IHRpbWluZ3MuIFRoaXMgbWVhbgo+ICJyZW5lc2FzLGNvbXBhbmlvbiIgd291bGQgb25seSBiZSB1 c2VkIHdoZW4gb3BlcmF0aW5nIGluIGR1YWwgbGluawo+IG1vZGUsIHdoaWNoIG1pZ2h0IGJlIGxl c3MgbmljZSAoYW5kIGNvdWxkIGFjdHVhbGx5IGNhbGxlZCBkaWZmZXJlbnRseQo+IGluIHRoYXQg Y2FzZSkuCj4gCj4gQm90aCB0aGUgVEhDNjMxMDI0IGFuZCB0aGUgcmNhcl9kdS1sdmRzIGRyaXZl ciB3b3VsZCBkZWNpZGUKPiBpbmRlcGVuZGVudGx5IGlmIHRoZXkgb3BlcmF0ZSBpbiBkdWFsIGxp bmsgbW9kZSBvciBub3QgKG9uZSBjb3VudGluZwo+IGl0cyBlbmRwb2ludHMsIHRoZSBvdGhlciBp bnNwZWN0aW5nIHRoZSAicmVuZXNhcyxjb21wYW5pb24iIHByb3BlcnR5KS4KCkkgZGVjaWRlZCB0 byBzcGVjaWZ5IHRoZSBjb21wYW5pb24gaW4gRFQgcmVnYXJkbGVzcyBvZiB3aGljaCBvcGVyYXRp bmcKbW9kZSBpcyB1c2VkLCBhcyBpdCdzIGEgcHJvcGVydHkgb2YgdGhlIExWRFMgZW5jb2Rlciwg bm90IG9mIHRoZQpvcGVyYXRpbmcgbW9kZS4gRnVydGhlcm1vcmUsIEkgY2FuIGZvcmVzZWUgc2V0 dXBzIHdoZXJlIHRoZSBtb2RlIHdvdWxkCmJlIHNlbGVjdGVkIGR5bmFtaWNhbGx5IGF0IHJ1bnRp bWUuIE91ciBkZXZlbG9wbWVudCBib2FyZHMgZG9uJ3QgYWxsb3cKdGhhdCBhcyB0aGV5IGhhcmRj b2RlIHRoZSBtb2RlIHVzaW5nIERJUCBzd2l0Y2hlcywgYnV0IG5vdGhpbmcgd291bGQKcHJldmVu dCB0aGUgbW9kZSBzZWxlY3Rpb24gc2lnbmFscyB0byBiZSBjb25uZWN0ZWQgdG8gR1BJT3MuIEkg dGh1cwp0aGluayBsdmRzLT5jb21wYW5pb24gc2hvdWxkIHBvaW50IHRvIHRoZSBjb21wYW5pb24g dW5jb25kaXRpb25hbGx5LCBhbmQKbHZkcy0+ZHVhbF9saW5rIHNob3VsZCBzZWxlY3QgdGhlIG9w ZXJhdGluZyBtb2RlLiBUaGUgZHVhbF9saW5rIGZpZWxkIGlzCmN1cnJlbnRseSBzZXQgYXQgcHJv YmUgdGltZSBhcyBJIGhhdmUgbm8gbmVlZCBmb3IgZHluYW1pYyBjb25maWd1cmF0aW9uCm9mIHRo ZSBtb2RlIGFuZCBubyBtZWFuIG9mIHRlc3RpbmcgaXQsIHNvIEkgZGVjaWRlZCBub3QgdG8gaW1w bGVtZW50CmR5bmFtaWMgc3dpdGNoaW5nIHlldC4KCj4gVGhlIG9ubHkgcGxhY2Ugd2hlcmUgdGhp cyBtaWdodCBiZSB0cmlja3kgaXMgdGhlIGhlcmUgYWJvdmUKPiAKPiAgKwkvKgo+ICArCSAqIFBM TCBjbG9jayBjb25maWd1cmF0aW9uIG9uIGFsbCBpbnN0YW5jZXMgYnV0IHRoZSBjb21wYW5pb24g aW4KPiAgKwkgKiBkdWFsLWxpbmsgbW9kZS4KPiAgKwkgKi8KPiAgKwlpZiAoIWx2ZHMtPmR1YWxf bGluayB8fCBsdmRzLT5jb21wYW5pb24pCj4gICsJCWx2ZHMtPmluZm8tPnBsbF9zZXR1cChsdmRz LCBtb2RlLT5jbG9jayAqIDEwMDApOwo+IAo+IGJ1dCB0aGF0IHdvdWxkIHJlbW92ZSB0aGUgbmVl ZCBmb3IgdGhlIHRoYzYzIGJyaWRnZSB0byByZXBvcnQgaXRzCj4gb3BlcmF0aW5nIG1vZGUgaW4g dGltaW5ncy4uLgo+IAo+ID4gIAl9IGVsc2Ugewo+ID4gIAkJbHZkcy0+cGFuZWwgPSBvZl9kcm1f ZmluZF9wYW5lbChyZW1vdGUpOwo+ID4gLQkJaWYgKElTX0VSUihsdmRzLT5wYW5lbCkpCj4gPiAr CQlpZiAoSVNfRVJSKGx2ZHMtPnBhbmVsKSkgewo+ID4gIAkJCXJldCA9IFBUUl9FUlIobHZkcy0+ cGFuZWwpOwo+ID4gKwkJCWdvdG8gZG9uZTsKPiA+ICsJCX0KPiA+ICAJfQo+ID4KPiA+ICsJaWYg KGx2ZHMtPmR1YWxfbGluaykKPiAKPiBOb3RlOiBpZiAoIWlzX2JyaWRnZSkgeW91IHdvdWxkIG5l dmVyIHNldCBsdmRzLT5kdWFsX2xpbmssIHNvIHRoaXMKPiBzaG91bGQgYmUgbW92ZWQgaW5zaWRl IHRoZSBoZXJlIGFib3ZlICJpZiAoaXNfYnJpZGdlKSIKCkkgZG9uJ3QgeWV0LCBidXQgbm90aGlu ZyBwcmV2ZW50cyBhIHBhbmVsIGZyb20gb3BlcmF0aW5nIGluIGR1YWwgbW9kZSwKZXZlbiBpZiBu b3QgaW1wbGVtZW50ZWQgeWV0LiBUaGF0J3Mgd2h5IEkndmUgbW92ZSB0aGlzIGNoZWNrIG91dCBv ZiB0aGUKYnJpZGdlL3BhbmVsIGNvbmRpdGlvbmFsIGNvZGUuCgo+ID4gKwkJcmV0ID0gcmNhcl9s dmRzX3BhcnNlX2R0X2NvbXBhbmlvbihsdmRzKTsKPiA+ICsKPiA+ICBkb25lOgo+ID4gIAlvZl9u b2RlX3B1dChsb2NhbF9vdXRwdXQpOwo+ID4gIAlvZl9ub2RlX3B1dChyZW1vdGVfaW5wdXQpOwo+ ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9yY2FyLWR1L3JjYXJfbHZkcy5oIGIvZHJp dmVycy9ncHUvZHJtL3JjYXItZHUvcmNhcl9sdmRzLmgKPiA+IGluZGV4IGE3MDljYWUxYmMzMi4u MjIyZWMwZTYwNzg1IDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL3JjYXItZHUvcmNh cl9sdmRzLmgKPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9yY2FyLWR1L3JjYXJfbHZkcy5oCj4g PiBAQCAtMTUsNiArMTUsNyBAQCBzdHJ1Y3QgZHJtX2JyaWRnZTsKPiA+ICAjaWYgSVNfRU5BQkxF RChDT05GSUdfRFJNX1JDQVJfTFZEUykKPiA+ICBpbnQgcmNhcl9sdmRzX2Nsa19lbmFibGUoc3Ry dWN0IGRybV9icmlkZ2UgKmJyaWRnZSwgdW5zaWduZWQgbG9uZyBmcmVxKTsKPiA+ICB2b2lkIHJj YXJfbHZkc19jbGtfZGlzYWJsZShzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdlKTsKPiA+ICtib29s IHJjYXJfbHZkc19kdWFsX2xpbmsoc3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZSk7Cj4gPiAgI2Vs c2UKPiA+ICBzdGF0aWMgaW5saW5lIGludCByY2FyX2x2ZHNfY2xrX2VuYWJsZShzdHJ1Y3QgZHJt X2JyaWRnZSAqYnJpZGdlLAo+ID4gIAkJCQkgICAgICAgdW5zaWduZWQgbG9uZyBmcmVxKQo+ID4g QEAgLTIyLDYgKzIzLDEwIEBAIHN0YXRpYyBpbmxpbmUgaW50IHJjYXJfbHZkc19jbGtfZW5hYmxl KHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UsCj4gPiAgCXJldHVybiAtRU5PU1lTOwo+ID4gIH0K PiA+ICBzdGF0aWMgaW5saW5lIHZvaWQgcmNhcl9sdmRzX2Nsa19kaXNhYmxlKHN0cnVjdCBkcm1f YnJpZGdlICpicmlkZ2UpIHsgfQo+ID4gK3N0YXRpYyBpbmxpbmUgYm9vbCByY2FyX2x2ZHNfZHVh bF9saW5rKHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UpCj4gPiArewo+ID4gKwlyZXR1cm4gZmFs c2U7Cj4gPiArfQo+ID4gICNlbmRpZiAvKiBDT05GSUdfRFJNX1JDQVJfTFZEUyAqLwo+ID4KPiA+ ICAjZW5kaWYgLyogX19SQ0FSX0xWRFNfSF9fICovCgotLSAKUmVnYXJkcywKCkxhdXJlbnQgUGlu Y2hhcnQKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJp LWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBz Oi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVs