From mboxrd@z Thu Jan 1 00:00:00 1970 From: Laurent Pinchart Subject: Re: [PATCH v1 14/16] drm/panel: call prepare/enable only once Date: Mon, 2 Dec 2019 17:22:11 +0200 Message-ID: <20191202152211.GB18532@pendragon.ideasonboard.com> References: <20190804201637.1240-1-sam@ravnborg.org> <20190804201637.1240-15-sam@ravnborg.org> <20190805105928.GI29747@pendragon.ideasonboard.com> <20190805165117.GA23301@ravnborg.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <20190805165117.GA23301@ravnborg.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Sam Ravnborg Cc: Neil Armstrong , David Airlie , dri-devel@lists.freedesktop.org, Thierry Reding , Marek Vasut , Laurent Pinchart , Vincent Abriou , Krzysztof Kozlowski , Jonathan Hunter , Maxime Ripard , Kukjin Kim , linux-arm-kernel@lists.infradead.org, NXP Linux Team , Pengutronix Kernel Team , Jonas Karlman , Sascha Hauer , Alison Wang , Gwan-gyeong Mun , Alexios Zavras , linux-samsung-soc@vger.kernel.org, linux-tegra@vger.kernel.org, Thomas Gleixner , Sean Paul List-Id: linux-tegra@vger.kernel.org SGkgU2FtLAoKT24gTW9uLCBBdWcgMDUsIDIwMTkgYXQgMDY6NTE6MTdQTSArMDIwMCwgU2FtIFJh dm5ib3JnIHdyb3RlOgo+ID4gT24gU3VuLCBBdWcgMDQsIDIwMTkgYXQgMTA6MTY6MzVQTSArMDIw MCwgU2FtIFJhdm5ib3JnIHdyb3RlOgo+ID4gPiBNYW55IHBhbmVsIGRyaXZlcnMgZHVwbGljYXRl IGxvZ2ljIHRvIHByZXZlbnQgcHJlcGFyZSB0byBiZSBjYWxsZWQKPiA+ID4gZm9yIGEgcGFuZWwg dGhhdCBpcyBhbHJlYWR5IHByZXBhcmVkLgo+ID4gPiBMaWtld2lzZSBmb3IgZW5hYmxlLgo+ID4g PiAKPiA+ID4gSW1wbGVtZW50IHRoaXMgbG9naWMgaW4gZHJtX3BhbmVsIHNvIHRoZSBpbmRpdmlk dWFsIGRyaXZlcnMKPiA+ID4gbm8gbG9uZ2VyIG5lZWRzIHRoaXMuCj4gPiA+IEEgcGFuZWwgaXMg Y29uc2lkZXJlZCBwcmVwYXJlZC9lbmFibGVkIG9ubHkgaWYgdGhlIHByZXBhcmUvZW5hYmxlIGNh bGwKPiA+ID4gc3VjY2VlZHMuCj4gPiA+IEZvciBkaXNhYmxlL3VucHJlcGFyZSBpdCBpcyB1bmNv bmRpdGlvbmFsbHkgY29uc2lkZXJlZAo+ID4gPiBkaXNhYmxlZC91bnByZXBhcmVkLgo+ID4gPiAK PiA+ID4gVGhpcyBhbGxvd3MgY2FsbHMgdG8gcHJlcGFyZS9lbmFibGUgYWdhaW4sIGV2ZW4gaWYg dGhlcmUgd2VyZQo+ID4gPiBzb21lIGlzc3VlIGRpc2FibGluZyBhIHJlZ3VsYXRvciBvciBzaW1p bGFyIGR1cmluZyBkaXNhYmxlL3VucHJlcGFyZS4KPiA+IAo+ID4gSXMgdGhpcyB0aGUgcmlnaHQg cGxhY2UgdG8gaGFuZGxlIHRoaXMgPyBTaG91bGRuJ3QgdGhlIHVwcGVyIGxheWVycwo+ID4gZW5z dXJlIHRoYW4gZW5hYmxlL2Rpc2FibGUgYW5kIHByZXBhcmUvdW5wcmVwYXJlIGFyZSBjb3JyZWN0 eSBiYWxhbmNlZCwKPiA+IGFuZCBub3QgY2FsbGVkIG11bHRpcGxlIHRpbWVzID8gQWRkaW5nIGVu YWJsZWQgYW5kIHByZXBhcmVkIHN0YXRlIHRvCj4gPiBkcm1fcGFuZWwgbm90IG9ubHkgZG9lc24n dCBhbGlnbiB3ZWxsIHdpdGggYXRvbWljIHN0YXRlIGhhbmRsaW5nLCBidXQKPiA+IGFsc28gd291 bGQgaGlkZSBpc3N1ZXMgaW4gdXBwZXIgbGF5ZXJzIHRoYXQgc2hvdWxkIHJlYWxseSBiZSBmaXhl ZAo+ID4gdGhlcmUuCj4gCj4gVGhlIG1haW4gcmF0aW9uYWxlIGJlaGluZCBzdGFydGluZyBvbiB0 aGlzIHdhcyB0aGF0IH4xNSBwYW5lbCBkcml2ZXJzCj4gYWxyZWFkeSBpbXBsZW1lbnRzIGxvZ2lj IHRvIHByZXZlbnQgdGhlIHByZXBhcmUvZW5hYmxlL2Rpc2FibGUvdW5wcmVwYXJlCj4gZnVuY3Rp b25zIHRvIGJlIGNhbGxlZCBvdXQgb2Ygb3JkZXIuCj4gJCBjZCBkcml2ZXJzL2dwdS9kcm0vcGFu ZWwvOyBnaXQgZ3JlcCBlbmFibGVkIHwgZ3JlcCBib29sIHwgd2MgLWwKPiAKPiBTZXZlcmFsIG9m IHRoZSBwYW5lbCBkcml2ZXJzIGFsc28gaW1wbGVtZW50cyBhCj4gbWlwaV9kc2lfZHJpdmVyLnNo dXRkb3duKCkgb3IgcGxhdGZvcm1fZHJpdmVyLnNodXRkb3duKCkuCj4gVG8gdGhlIGJlc3Qgb2Yg bXkga25vd2xlZGdlIHdlIGNhbm5vdCBndWFyYW50ZWUgdGhhdCB0aGUgdXBwZXIgbGF5ZXJzCj4g aGF2ZSBkb25lIHRoZSBwcm9wZXIgZGlzYWJsZSgpL3VucHJlcGFyZSgpIGRhbmNlIGJlZm9yZSBh IHNodXRkb3duLgoKSWYgdGhlIGRpc3BsYXkgY29udHJvbGxlciBkcml2ZXJzIGFsbCBiZWhhdmVk IGNvcnJlY3RseSwgdGhlaXIKLnNodXRkb3duKCkgaW1wbGVtZW50YXRpb24gd291bGQgZGlzYWJs ZSBhbGwgdGhlIG91dHB1dCwgYW5kIHRodXMKZGlzYWJsZSB0aGUgcGFuZWxzLiBJIHRoaW5rIHRo YXQncyB0aGUgYmVzdCB3YXkgZm9yd2FyZCwgYW5kIHdlIHNob3VsZAppZGVhbGx5IHJlbW92ZSAu c2h1dGRvd24oKSBmcm9tIHRoZSBwYW5lbCBkcml2ZXJzLCBhcyBvdGhlcndpc2UgdGhlCnBhbmVs IG1heSBiZSBkaXNhYmxlZCBiZWZvcmUgdGhlIGRpc3BsYXkgZHJpdmVyIC5zaHV0ZG93bigpIG9w ZXJhdGlvbiBpcwpjYWxsZWQsIGFuZCB3ZWlyZCB0aGluZ3MgY2FuIHRoZW4gaGFwcGVuLgoKVGhp cyBiZWluZyBzYWlkLCBndWFyYW50ZWVpbmcgcHJvcGVyIG9wZXJhdGlvbiBvZiB0aGUgZGlzcGxh eSBjb250cm9sbGVyCmRyaXZlcnMgaXNuJ3QgZWFzeSwgc28gSSdtIG5vdCBjYWxsaW5nIGZvciBy ZW1vdmluZyAuc2h1dGRvd24oKSBmcm9tCnBhbmVsIGRyaXZlcnMgcmlnaHQgbm93LCBidXQgSSB0 aGluayB3ZSBzaG91bGRuJ3QgYWNjZXB0IHRoYXQgb3BlcmF0aW9uCmluIG5ldyBwYW5lbCBkcml2 ZXJzIGdvaW5nIGZvcndhcmQuCgo+IFNvIHRoZSBmbGFncyBleGlzdHMgdG8gYWxsb3cgdGhlIGRy aXZlciB0byB1bmNvbmRpdGlvbmFsbHkgY2FsbAo+IGRpc2FibGUoKSAvIHVucHJlcGFyZSgpIGlu IHRoZSBzaHV0ZG93biBtZXRob2RzLgo+IFNhbWUgZ29lcyBmb3IgKl9kcml2ZXIucmVtb3ZlKCkK CkknZCByYXRoZXIgZ2V0IHJpZCBvZiB0aGUgaGFja3MgaW5zdGVhZCBvZiB0cnlpbmcgdG8gcmVm YWN0b3IgdGhlbSBpbgpnZW5lcmljIGhhY2stc3VwcG9ydCBoZWxwZXJzIDstKSBCdXQgSSBnZXQg eW91ciBwb2ludCwgYXMgYW4gaW50ZXJpbQptZWFzdXJlIHRoaXMgaXMgcHJvYmFibHkgb3VyIGJl c3Qgb3B0aW9uLgoKPiBPbmUgaW1wcm92ZW1lbnQgY291bGQgYmUgdG8gZGV0ZWN0IGlmIHRoZSBw YW5lbCBpcyBwcmVwYXJlKCkgd2hlbgo+IHVwcGVyIGxheWVycyBjYWxsIGVuYWJsZSgpIGFuZCB3 YXJuL2Vycm9yIGluIHRoaXMgc2l0dWF0aW9uLgo+IFdpdGggdGhlIGN1cnJlbnQgaW1wbGVtZW50 YXRpb24gdGhpcyBpcyBub3QgY2hlY2tlZCBhdCBhbGwuCj4gTGlrZXdpc2UgZm9yIHVucHJlcGFy ZSgpIChyZXF1aXJlIGl0IHdhcyBuZXZlciBlbmFibGVkIG9yIGRpc2FibGUoKSB3YXMKPiBjYWxl ZCBmaXJzdCkKPiAKPiBJIGNsYWltIHRoZSBjaGVjayBleGlzdHMgZm9yIHRoZSBiZW5lZml0IG9m IC5yZW1vdmUgYW5kIC5zaHV0ZG93biwKPiBzbyB3ZSBjb3VsZCBhbHNvIGNoZWNrIGlmIHByZXBh cmUoKSBvciBlbmFibGUoKSBpcyBjYWxsZWQgdHdpY2UuCj4gCj4gQWRkaW5nIGxvZ2ljIHRvIGNh bGwgcHJlcGFyZSgpIGF1dG9tYWdpY2FsbHkgd291bGQgaGlkZSBwcm9iZW1zIGluIHVwcGVyCj4g bGF5ZXJzIGFuZCB0aGlzIHdhcyBvbmx5IGJyaWVmbHkgY29uc2lkZXJlZCAtIGFuZCBkaXNjYXJk ZWQgYXMgaGlkaW5nCj4gYnVncy4KCkkgYWdyZWUgd2l0aCB5b3UuCgo+IFNvIHRvIHN1bSB1cDoK PiAtIE1vdmluZyB0aGUgY2hlY2tzIGZyb20gZHJpdmVycyB0byB0aGUgY29yZSBpcyBhIGdvb2Qg dGhpbmcKPiAtIFRoZSBjb3JlIHNoYWxsIGNoZWNrIHRoYXQgYSBwYW5lbCBpcyBwcmVwYXJlZCB3 aGVuIGVuYWJsZSBpcyBjYWxsZWQKPiAgIGFuZCBlcnJvciBvdXQgaWYgbm90IChvciB3YXJuKS4K PiAtIFRoZSBjb3JlIHNoYWxsIGNoZWNrIHRoYXQgYSBwYW5lbCBpcyBkaXNhYmxlZCB3aGVuIHVu cHJlcGFyZSBpcyBjYWxsZWQKPiAgIGFuZCBlcnJvciBvdXQgaWYgbm90IChvciB3YXJuKS4KPiAg IFRoZSBjb3JlIHNoYWxsIGNoZWNrIGlmIHByZXBhcmUoKSBhbmQgZW5hYmxlKCkgaXMgY2FsbGVk IG91dCBvZiBvcmRlci4KPiAKPiBUaGUgcGF0Y2ggbmVlZHMgdG8gYmUgZXh0ZW5kZWQgdG8gY292 ZXIgdGhlIGxhc3QgdGhyZWUgcG9pbnRzLgo+IAo+IExhdXJlbnQgLyBFbWlsIC8gVGhpZXJyeSAt IGFncmVlL2NvbW1lbnRzPwoKQWNrZWQtYnk6IExhdXJlbnQgUGluY2hhcnQgPGxhdXJlbnQucGlu Y2hhcnRAaWRlYXNvbmJvYXJkLmNvbT4KCk1heWJlIHdpdGggYSBub3RlIGluIHRoZSBEb2N1bWVu dGF0aW9uL2dwdS90b2RvLnJzdCB0byByZW1vdmUKLnNodXRkb3duKCkgaW4gcGFuZWwgZHJpdmVy cyBhcyBhIGxvbmcgdGVybSBnb2FsID8KCj4gTm90ZTogRGlkIGEgcXVpY2sgcm91bmQgdG8gc2Vl IGlmIGNvdWxkIHNwb3QgYW55IHdyb25nIHVzZSBvZgo+IGRybV9wYW5lbF8qIGZ1bmN0aW9ucy4K PiBNb3N0IGxvb2tlZCBnb29kLCBidXQgdGhlbiBJIGRpZCBub3QgZG8gYSB0aHJvdWdobHkgY2hl Y2suCj4gCj4gYnJpZGdlL2FuYWxvZ2l4L2FuYWxvZ2l4X2RwX2NvcmUuYyBsb29rcyBmaXNoeS4K PiBMb29rcyBsaWtlIGFuYWxvZ2l4X2RwX3ByZXBhcmVfcGFuZWwoKSBpcyBhIG5vcCB0aGUgd2F5 IGl0IGlzIGNhbGxlZC4KPiBJIGRpZCBub3QgbG9vayB0b28gbXVjaCBvbiB0aGlzLCBtYXliZSBJ IGFtIHdyb25nLgo+IAo+ID4gPiBTaWduZWQtb2ZmLWJ5OiBTYW0gUmF2bmJvcmcgPHNhbUByYXZu Ym9yZy5vcmc+Cj4gPiA+IENjOiBNYWFydGVuIExhbmtob3JzdCA8bWFhcnRlbi5sYW5raG9yc3RA bGludXguaW50ZWwuY29tPgo+ID4gPiBDYzogTWF4aW1lIFJpcGFyZCA8bWF4aW1lLnJpcGFyZEBi b290bGluLmNvbT4KPiA+ID4gQ2M6IFNlYW4gUGF1bCA8c2VhbkBwb29ybHkucnVuPgo+ID4gPiBD YzogVGhpZXJyeSBSZWRpbmcgPHRoaWVycnkucmVkaW5nQGdtYWlsLmNvbT4KPiA+ID4gQ2M6IFNh bSBSYXZuYm9yZyA8c2FtQHJhdm5ib3JnLm9yZz4KPiA+ID4gQ2M6IERhdmlkIEFpcmxpZSA8YWly bGllZEBsaW51eC5pZT4KPiA+ID4gQ2M6IERhbmllbCBWZXR0ZXIgPGRhbmllbEBmZndsbC5jaD4K PiA+ID4gLS0tCj4gPiA+ICBkcml2ZXJzL2dwdS9kcm0vZHJtX3BhbmVsLmMgfCA2NiArKysrKysr KysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tCj4gPiA+ICBpbmNsdWRlL2RybS9kcm1fcGFu ZWwuaCAgICAgfCAyMSArKysrKysrKysrKysKPiA+ID4gIDIgZmlsZXMgY2hhbmdlZCwgNzUgaW5z ZXJ0aW9ucygrKSwgMTIgZGVsZXRpb25zKC0pCj4gPiA+IAo+ID4gPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2RybV9wYW5lbC5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9wYW5lbC5jCj4g PiA+IGluZGV4IGRhMTlkNWI0YTJmNC4uMDg1Mzc2NDA0MGRlIDEwMDY0NAo+ID4gPiAtLS0gYS9k cml2ZXJzL2dwdS9kcm0vZHJtX3BhbmVsLmMKPiA+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2Ry bV9wYW5lbC5jCj4gPiA+IEBAIC02NiwxMCArNjYsMjEgQEAgRVhQT1JUX1NZTUJPTChkcm1fcGFu ZWxfaW5pdCk7Cj4gPiA+ICAgKi8KPiA+ID4gIGludCBkcm1fcGFuZWxfcHJlcGFyZShzdHJ1Y3Qg ZHJtX3BhbmVsICpwYW5lbCkKPiA+ID4gIHsKPiA+ID4gLQlpZiAocGFuZWwgJiYgcGFuZWwtPmZ1 bmNzICYmIHBhbmVsLT5mdW5jcy0+cHJlcGFyZSkKPiA+ID4gLQkJcmV0dXJuIHBhbmVsLT5mdW5j cy0+cHJlcGFyZShwYW5lbCk7Cj4gPiA+ICsJaW50IHJldCA9IC1FTk9TWVM7Cj4gPiA+ICAKPiA+ ID4gLQlyZXR1cm4gcGFuZWwgPyAtRU5PU1lTIDogLUVJTlZBTDsKPiA+ID4gKwlpZiAoIXBhbmVs KQo+ID4gPiArCQlyZXR1cm4gLUVJTlZBTDsKPiA+ID4gKwo+ID4gPiArCWlmIChwYW5lbC0+cHJl cGFyZWQpCj4gPiA+ICsJCXJldHVybiAwOwo+ID4gPiArCj4gPiA+ICsJaWYgKHBhbmVsLT5mdW5j cyAmJiBwYW5lbC0+ZnVuY3MtPnByZXBhcmUpCj4gPiA+ICsJCXJldCA9IHBhbmVsLT5mdW5jcy0+ cHJlcGFyZShwYW5lbCk7Cj4gPiA+ICsKPiA+ID4gKwlpZiAocmV0ID49IDApCj4gPiA+ICsJCXBh bmVsLT5wcmVwYXJlZCA9IHRydWU7Cj4gPiA+ICsKPiA+ID4gKwlyZXR1cm4gcmV0Owo+ID4gPiAg fQo+ID4gPiAgRVhQT1JUX1NZTUJPTChkcm1fcGFuZWxfcHJlcGFyZSk7Cj4gPiA+ICAKPiA+ID4g QEAgLTg1LDEwICs5NiwyMSBAQCBFWFBPUlRfU1lNQk9MKGRybV9wYW5lbF9wcmVwYXJlKTsKPiA+ ID4gICAqLwo+ID4gPiAgaW50IGRybV9wYW5lbF9lbmFibGUoc3RydWN0IGRybV9wYW5lbCAqcGFu ZWwpCj4gPiA+ICB7Cj4gPiA+IC0JaWYgKHBhbmVsICYmIHBhbmVsLT5mdW5jcyAmJiBwYW5lbC0+ ZnVuY3MtPmVuYWJsZSkKPiA+ID4gLQkJcmV0dXJuIHBhbmVsLT5mdW5jcy0+ZW5hYmxlKHBhbmVs KTsKPiA+ID4gKwlpbnQgcmV0ID0gLUVOT1NZUzsKPiA+ID4gIAo+ID4gPiAtCXJldHVybiBwYW5l bCA/IC1FTk9TWVMgOiAtRUlOVkFMOwo+ID4gPiArCWlmICghcGFuZWwpCj4gPiA+ICsJCXJldHVy biAtRUlOVkFMOwo+ID4gPiArCj4gPiA+ICsJaWYgKHBhbmVsLT5lbmFibGVkKQo+ID4gPiArCQly ZXR1cm4gMDsKPiA+ID4gKwo+ID4gPiArCWlmIChwYW5lbC0+ZnVuY3MgJiYgcGFuZWwtPmZ1bmNz LT5lbmFibGUpCj4gPiA+ICsJCXJldCA9IHBhbmVsLT5mdW5jcy0+ZW5hYmxlKHBhbmVsKTsKPiA+ ID4gKwo+ID4gPiArCWlmIChyZXQgPj0gMCkKPiA+ID4gKwkJcGFuZWwtPmVuYWJsZWQgPSB0cnVl Owo+ID4gPiArCj4gPiA+ICsJcmV0dXJuIHJldDsKPiA+ID4gIH0KPiA+ID4gIEVYUE9SVF9TWU1C T0woZHJtX3BhbmVsX2VuYWJsZSk7Cj4gPiA+ICAKPiA+ID4gQEAgLTEwNCwxMCArMTI2LDIwIEBA IEVYUE9SVF9TWU1CT0woZHJtX3BhbmVsX2VuYWJsZSk7Cj4gPiA+ICAgKi8KPiA+ID4gIGludCBk cm1fcGFuZWxfZGlzYWJsZShzdHJ1Y3QgZHJtX3BhbmVsICpwYW5lbCkKPiA+ID4gIHsKPiA+ID4g LQlpZiAocGFuZWwgJiYgcGFuZWwtPmZ1bmNzICYmIHBhbmVsLT5mdW5jcy0+ZGlzYWJsZSkKPiA+ ID4gLQkJcmV0dXJuIHBhbmVsLT5mdW5jcy0+ZGlzYWJsZShwYW5lbCk7Cj4gPiA+ICsJaW50IHJl dCA9IC1FTk9TWVM7Cj4gPiA+ICAKPiA+ID4gLQlyZXR1cm4gcGFuZWwgPyAtRU5PU1lTIDogLUVJ TlZBTDsKPiA+ID4gKwlpZiAoIXBhbmVsKQo+ID4gPiArCQlyZXR1cm4gLUVJTlZBTDsKPiA+ID4g Kwo+ID4gPiArCWlmICghcGFuZWwtPmVuYWJsZWQpCj4gPiA+ICsJCXJldHVybiAwOwo+ID4gPiAr Cj4gPiA+ICsJaWYgKHBhbmVsLT5mdW5jcyAmJiBwYW5lbC0+ZnVuY3MtPmRpc2FibGUpCj4gPiA+ ICsJCXJldCA9IHBhbmVsLT5mdW5jcy0+ZGlzYWJsZShwYW5lbCk7Cj4gPiA+ICsKPiA+ID4gKwlw YW5lbC0+ZW5hYmxlZCA9IGZhbHNlOwo+ID4gPiArCj4gPiA+ICsJcmV0dXJuIHJldDsKPiA+ID4g IH0KPiA+ID4gIEVYUE9SVF9TWU1CT0woZHJtX3BhbmVsX2Rpc2FibGUpOwo+ID4gPiAgCj4gPiA+ IEBAIC0xMjQsMTAgKzE1NiwyMCBAQCBFWFBPUlRfU1lNQk9MKGRybV9wYW5lbF9kaXNhYmxlKTsK PiA+ID4gICAqLwo+ID4gPiAgaW50IGRybV9wYW5lbF91bnByZXBhcmUoc3RydWN0IGRybV9wYW5l bCAqcGFuZWwpCj4gPiA+ICB7Cj4gPiA+IC0JaWYgKHBhbmVsICYmIHBhbmVsLT5mdW5jcyAmJiBw YW5lbC0+ZnVuY3MtPnVucHJlcGFyZSkKPiA+ID4gLQkJcmV0dXJuIHBhbmVsLT5mdW5jcy0+dW5w cmVwYXJlKHBhbmVsKTsKPiA+ID4gKwlpbnQgcmV0ID0gLUVOT1NZUzsKPiA+ID4gIAo+ID4gPiAt CXJldHVybiBwYW5lbCA/IC1FTk9TWVMgOiAtRUlOVkFMOwo+ID4gPiArCWlmICghcGFuZWwpCj4g PiA+ICsJCXJldHVybiAtRUlOVkFMOwo+ID4gPiArCj4gPiA+ICsJaWYgKCFwYW5lbC0+cHJlcGFy ZWQpCj4gPiA+ICsJCXJldHVybiAwOwo+ID4gPiArCj4gPiA+ICsJaWYgKHBhbmVsLT5mdW5jcyAm JiBwYW5lbC0+ZnVuY3MtPnVucHJlcGFyZSkKPiA+ID4gKwkJcmV0ID0gcGFuZWwtPmZ1bmNzLT51 bnByZXBhcmUocGFuZWwpOwo+ID4gPiArCj4gPiA+ICsJcGFuZWwtPnByZXBhcmVkID0gZmFsc2U7 Cj4gPiA+ICsKPiA+ID4gKwlyZXR1cm4gcmV0Owo+ID4gPiAgfQo+ID4gPiAgRVhQT1JUX1NZTUJP TChkcm1fcGFuZWxfdW5wcmVwYXJlKTsKPiA+ID4gIAo+ID4gPiBkaWZmIC0tZ2l0IGEvaW5jbHVk ZS9kcm0vZHJtX3BhbmVsLmggYi9pbmNsdWRlL2RybS9kcm1fcGFuZWwuaAo+ID4gPiBpbmRleCA2 MjRiZDE1ZWNmYWIuLjc0OTM1MDBmYzliZCAxMDA2NDQKPiA+ID4gLS0tIGEvaW5jbHVkZS9kcm0v ZHJtX3BhbmVsLmgKPiA+ID4gKysrIGIvaW5jbHVkZS9kcm0vZHJtX3BhbmVsLmgKPiA+ID4gQEAg LTY1LDYgKzY1LDkgQEAgc3RydWN0IGRybV9wYW5lbF9mdW5jcyB7Cj4gPiA+ICAJICogQHByZXBh cmU6Cj4gPiA+ICAJICoKPiA+ID4gIAkgKiBUdXJuIG9uIHBhbmVsIGFuZCBwZXJmb3JtIHNldCB1 cC4KPiA+ID4gKwkgKiBXaGVuIHRoZSBwYW5lbCBpcyBzdWNjZXNzZnVsbHkgcHJlcGFyZWQgdGhl IHByZXBhcmUoKSBmdW5jdGlvbgo+ID4gPiArCSAqIHdpbGwgbm90IGJlIGNhbGxlZCBhZ2FpbiB1 bnRpbCB0aGUgcGFuZWwgaGFzIGJlZW4gdW5wcmVwYXJlZC4KPiA+ID4gKwkgKgo+ID4gPiAgCSAq Lwo+ID4gPiAgCWludCAoKnByZXBhcmUpKHN0cnVjdCBkcm1fcGFuZWwgKnBhbmVsKTsKPiA+ID4g IAo+ID4gPiBAQCAtNzIsNiArNzUsOCBAQCBzdHJ1Y3QgZHJtX3BhbmVsX2Z1bmNzIHsKPiA+ID4g IAkgKiBAZW5hYmxlOgo+ID4gPiAgCSAqCj4gPiA+ICAJICogRW5hYmxlIHBhbmVsICh0dXJuIG9u IGJhY2sgbGlnaHQsIGV0Yy4pLgo+ID4gPiArCSAqIFdoZW4gdGhlIHBhbmVsIGlzIHN1Y2Nlc3Nm dWxseSBlbmFibGVkIHRoZSBlbmFibGUoKSBmdW5jdGlvbgo+ID4gPiArCSAqIHdpbGwgbm90IGJl IGNhbGxlZCBhZ2FpbiB1bnRpbCB0aGUgcGFuZWwgaGFzIGJlZW4gZGlzYWJsZWQuCj4gPiA+ICAJ ICovCj4gPiA+ICAJaW50ICgqZW5hYmxlKShzdHJ1Y3QgZHJtX3BhbmVsICpwYW5lbCk7Cj4gPiA+ ICAKPiA+ID4gQEAgLTc5LDYgKzg0LDcgQEAgc3RydWN0IGRybV9wYW5lbF9mdW5jcyB7Cj4gPiA+ ICAJICogQGRpc2FibGU6Cj4gPiA+ICAJICoKPiA+ID4gIAkgKiBEaXNhYmxlIHBhbmVsICh0dXJu IG9mZiBiYWNrIGxpZ2h0LCBldGMuKS4KPiA+ID4gKwkgKiBJZiB0aGUgcGFuZWwgaXMgYWxyZWFk eSBkaXNhYmxlZCB0aGUgZGlzYWJsZSgpIGZ1bmN0aW9uIGlzIG5vdCBjYWxsZWQuCj4gPiA+ICAJ ICovCj4gPiA+ICAJaW50ICgqZGlzYWJsZSkoc3RydWN0IGRybV9wYW5lbCAqcGFuZWwpOwo+ID4g PiAgCj4gPiA+IEBAIC04Niw2ICs5Miw3IEBAIHN0cnVjdCBkcm1fcGFuZWxfZnVuY3Mgewo+ID4g PiAgCSAqIEB1bnByZXBhcmU6Cj4gPiA+ICAJICoKPiA+ID4gIAkgKiBUdXJuIG9mZiBwYW5lbC4K PiA+ID4gKwkgKiBJZiB0aGUgcGFuZWwgaXMgYWxyZWFkeSB1bnByZXBhcmVkIHRoZSB1bnByZXBh cmUoKSBmdW5jdGlvbiBpcyBub3QgY2FsbGVkLgo+ID4gPiAgCSAqLwo+ID4gPiAgCWludCAoKnVu cHJlcGFyZSkoc3RydWN0IGRybV9wYW5lbCAqcGFuZWwpOwo+ID4gPiAgCj4gPiA+IEBAIC0xNDUs NiArMTUyLDIwIEBAIHN0cnVjdCBkcm1fcGFuZWwgewo+ID4gPiAgCSAqIFBhbmVsIGVudHJ5IGlu IHJlZ2lzdHJ5Lgo+ID4gPiAgCSAqLwo+ID4gPiAgCXN0cnVjdCBsaXN0X2hlYWQgbGlzdDsKPiA+ ID4gKwo+ID4gPiArCS8qKgo+ID4gPiArCSAqIEBwcmVwYXJlZDoKPiA+ID4gKwkgKgo+ID4gPiAr CSAqIFNldCB0byB0cnVlIHdoZW4gdGhlIHBhbmVsIGlzIHN1Y2Nlc3NmdWxseSBwcmVwYXJlZC4K PiA+ID4gKwkgKi8KPiA+ID4gKwlib29sIHByZXBhcmVkOwo+ID4gPiArCj4gPiA+ICsJLyoqCj4g PiA+ICsJICogQGVuYWJsZWQ6Cj4gPiA+ICsJICoKPiA+ID4gKwkgKiBTZXQgdG8gdHJ1ZSB3aGVu IHRoZSBwYW5lbCBpcyBzdWNjZXNzZnVsbHkgZW5hYmxlZC4KPiA+ID4gKwkgKi8KPiA+ID4gKwli b29sIGVuYWJsZWQ7Cj4gPiA+ICB9Owo+ID4gPiAgCj4gPiA+ICB2b2lkIGRybV9wYW5lbF9pbml0 KHN0cnVjdCBkcm1fcGFuZWwgKnBhbmVsKTsKCi0tIApSZWdhcmRzLAoKTGF1cmVudCBQaW5jaGFy dApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2 ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9s aXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWw=