From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCHv2 3/4] drm/komeda: use afbc helpers Date: Mon, 18 Nov 2019 10:51:36 +0100 Message-ID: <20191118095136.GC23790@phenom.ffwll.local> References: <2485717.1SzL54aMiy@e123338-lin> <20191104221228.3588-1-andrzej.p@collabora.com> <20191104221228.3588-4-andrzej.p@collabora.com> <20191108160954.GA17321@arm.com> <20191113020146.GB2746@jamwan02-TSP300> <20191113113954.GN23790@phenom.ffwll.local> <20191114015220.GA16456@jamwan02-TSP300> <20191118070949.GA27075@jamwan02-TSP300> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <20191118070949.GA27075@jamwan02-TSP300> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: "james qian wang (Arm Technology China)" Cc: nd , Mihail Atanassov , "kernel@collabora.com" , David Airlie , Liviu Dudau , Andrzej Pietrasiewicz , "linux-rockchip@lists.infradead.org" , "dri-devel@lists.freedesktop.org" , Ayan Halder , Sean Paul List-Id: linux-rockchip.vger.kernel.org T24gTW9uLCBOb3YgMTgsIDIwMTkgYXQgMDc6MDk6NTZBTSArMDAwMCwgamFtZXMgcWlhbiB3YW5n IChBcm0gVGVjaG5vbG9neSBDaGluYSkgd3JvdGU6Cj4gT24gVGh1LCBOb3YgMTQsIDIwMTkgYXQg MTE6MTI6MTNBTSArMDEwMCwgRGFuaWVsIFZldHRlciB3cm90ZToKPiA+IE9uIFRodSwgTm92IDE0 LCAyMDE5IGF0IDI6NTIgQU0gamFtZXMgcWlhbiB3YW5nIChBcm0gVGVjaG5vbG9neSBDaGluYSkK PiA+IDxqYW1lcy5xaWFuLndhbmdAYXJtLmNvbT4gd3JvdGU6Cj4gPiA+IE9uIFdlZCwgTm92IDEz LCAyMDE5IGF0IDEyOjM5OjU0UE0gKzAxMDAsIERhbmllbCBWZXR0ZXIgd3JvdGU6Cj4gPiA+ID4g T24gV2VkLCBOb3YgMTMsIDIwMTkgYXQgMDI6MDE6NTNBTSArMDAwMCwgamFtZXMgcWlhbiB3YW5n IChBcm0gVGVjaG5vbG9neSBDaGluYSkgd3JvdGU6Cj4gPiA+ID4gPiBPbiBGcmksIE5vdiAwOCwg MjAxOSBhdCAwNDowOTo1NFBNICswMDAwLCBBeWFuIEhhbGRlciB3cm90ZToKPiA+ID4gPiA+ID4g T24gTW9uLCBOb3YgMDQsIDIwMTkgYXQgMTE6MTI6MjdQTSArMDEwMCwgQW5kcnplaiBQaWV0cmFz aWV3aWN6IHdyb3RlOgo+ID4gPiA+ID4gPiA+IFRoZXJlIGFyZSBhZmJjIGhlbHBlcnMgYXZhaWxh YmxlLgo+ID4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ID4gU2lnbmVkLW9mZi1ieTogQW5kcnplaiBQ aWV0cmFzaWV3aWN6IDxhbmRyemVqLnBAY29sbGFib3JhLmNvbT4KPiA+ID4gPiA+ID4gPiAtLS0K PiA+ID4gPiA+ID4gPiAgLi4uL2FybS9kaXNwbGF5L2tvbWVkYS9rb21lZGFfZm9ybWF0X2NhcHMu aCAgIHwgIDEgLQo+ID4gPiA+ID4gPiA+ICAuLi4vYXJtL2Rpc3BsYXkva29tZWRhL2tvbWVkYV9m cmFtZWJ1ZmZlci5jICAgfCA0NCArKysrKysrLS0tLS0tLS0tLS0tCj4gPiA+ID4gPiA+ID4gIDIg ZmlsZXMgY2hhbmdlZCwgMTcgaW5zZXJ0aW9ucygrKSwgMjggZGVsZXRpb25zKC0pCj4gPiA+ID4g PiA+ID4KPiA+ID4gPiA+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FybS9kaXNw bGF5L2tvbWVkYS9rb21lZGFfZm9ybWF0X2NhcHMuaCBiL2RyaXZlcnMvZ3B1L2RybS9hcm0vZGlz cGxheS9rb21lZGEva29tZWRhX2Zvcm1hdF9jYXBzLmgKPiA+ID4gPiA+ID4gPiBpbmRleCAzMjI3 M2NmMThmN2MuLjYwN2VlYTgwZTYwYyAxMDA2NDQKPiA+ID4gPiA+ID4gPiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vYXJtL2Rpc3BsYXkva29tZWRhL2tvbWVkYV9mb3JtYXRfY2Fwcy5oCj4gPiA+ID4g PiA+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FybS9kaXNwbGF5L2tvbWVkYS9rb21lZGFfZm9y bWF0X2NhcHMuaAo+ID4gPiA+ID4gPiA+IEBAIC0zMyw3ICszMyw2IEBACj4gPiA+ID4gPiA+ID4K PiA+ID4gPiA+ID4gPiAgI2RlZmluZSBBRkJDX1RIX0xBWU9VVF9BTElHTk1FTlQgICAgICAgOAo+ ID4gPiA+ID4gPiA+ICAjZGVmaW5lIEFGQkNfSEVBREVSX1NJWkUgICAgICAgICAgICAgICAxNgo+ ID4gPiA+ID4gPiA+IC0jZGVmaW5lIEFGQkNfU1VQRVJCTEtfQUxJR05NRU5UICAgICAgICAgICAg ICAgIDEyOAo+ID4gPiA+ID4gPiA+ICAjZGVmaW5lIEFGQkNfU1VQRVJCTEtfUElYRUxTICAgICAg ICAgICAyNTYKPiA+ID4gPiA+ID4gPiAgI2RlZmluZSBBRkJDX0JPRFlfU1RBUlRfQUxJR05NRU5U ICAgICAgMTAyNAo+ID4gPiA+ID4gPiA+ICAjZGVmaW5lIEFGQkNfVEhfQk9EWV9TVEFSVF9BTElH Tk1FTlQgICA0MDk2Cj4gPiA+ID4gPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9h cm0vZGlzcGxheS9rb21lZGEva29tZWRhX2ZyYW1lYnVmZmVyLmMgYi9kcml2ZXJzL2dwdS9kcm0v YXJtL2Rpc3BsYXkva29tZWRhL2tvbWVkYV9mcmFtZWJ1ZmZlci5jCj4gPiA+ID4gPiA+ID4gaW5k ZXggMWIwMWE2MjVmNDBlLi5lOWM4NzU1MWE1YjggMTAwNjQ0Cj4gPiA+ID4gPiA+ID4gLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2FybS9kaXNwbGF5L2tvbWVkYS9rb21lZGFfZnJhbWVidWZmZXIuYwo+ ID4gPiA+ID4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hcm0vZGlzcGxheS9rb21lZGEva29t ZWRhX2ZyYW1lYnVmZmVyLmMKPiA+ID4gPiA+ID4gPiBAQCAtNCw2ICs0LDcgQEAKPiA+ID4gPiA+ ID4gPiAgICogQXV0aG9yOiBKYW1lcy5RaWFuLldhbmcgPGphbWVzLnFpYW4ud2FuZ0Bhcm0uY29t Pgo+ID4gPiA+ID4gPiA+ICAgKgo+ID4gPiA+ID4gPiA+ICAgKi8KPiA+ID4gPiA+ID4gPiArI2lu Y2x1ZGUgPGRybS9kcm1fYWZiYy5oPgo+ID4gPiA+ID4gPiA+ICAjaW5jbHVkZSA8ZHJtL2RybV9k ZXZpY2UuaD4KPiA+ID4gPiA+ID4gPiAgI2luY2x1ZGUgPGRybS9kcm1fZmJfY21hX2hlbHBlci5o Pgo+ID4gPiA+ID4gPiA+ICAjaW5jbHVkZSA8ZHJtL2RybV9nZW0uaD4KPiA+ID4gPiA+ID4gPiBA QCAtNDMsOCArNDQsNyBAQCBrb21lZGFfZmJfYWZiY19zaXplX2NoZWNrKHN0cnVjdCBrb21lZGFf ZmIgKmtmYiwgc3RydWN0IGRybV9maWxlICpmaWxlLAo+ID4gPiA+ID4gPiA+ICAgICAgICAgc3Ry dWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSAma2ZiLT5iYXNlOwo+ID4gPiA+ID4gPiA+ICAgICAg ICAgY29uc3Qgc3RydWN0IGRybV9mb3JtYXRfaW5mbyAqaW5mbyA9IGZiLT5mb3JtYXQ7Cj4gPiA+ ID4gPiA+ID4gICAgICAgICBzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iajsKPiA+ID4gPiA+ID4g PiAtICAgICAgIHUzMiBhbGlnbm1lbnRfdyA9IDAsIGFsaWdubWVudF9oID0gMCwgYWxpZ25tZW50 X2hlYWRlciwgbl9ibG9ja3MsIGJwcDsKPiA+ID4gPiA+ID4gPiAtICAgICAgIHU2NCBtaW5fc2l6 ZTsKPiA+ID4gPiA+ID4gPiArICAgICAgIHUzMiBhbGlnbm1lbnRfdyA9IDAsIGFsaWdubWVudF9o ID0gMCwgYWxpZ25tZW50X2hlYWRlciwgYnBwOwo+ID4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ID4g ICAgICAgICBvYmogPSBkcm1fZ2VtX29iamVjdF9sb29rdXAoZmlsZSwgbW9kZV9jbWQtPmhhbmRs ZXNbMF0pOwo+ID4gPiA+ID4gPiA+ICAgICAgICAgaWYgKCFvYmopIHsKPiA+ID4gPiA+ID4gPiBA QCAtNTIsMTkgKzUyLDE1IEBAIGtvbWVkYV9mYl9hZmJjX3NpemVfY2hlY2soc3RydWN0IGtvbWVk YV9mYiAqa2ZiLCBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGUsCj4gPiA+ID4gPiA+ID4gICAgICAgICAg ICAgICAgIHJldHVybiAtRU5PRU5UOwo+ID4gPiA+ID4gPiA+ICAgICAgICAgfQo+ID4gPiA+ID4g PiA+Cj4gPiA+ID4gPiA+ID4gLSAgICAgICBzd2l0Y2ggKGZiLT5tb2RpZmllciAmIEFGQkNfRk9S TUFUX01PRF9CTE9DS19TSVpFX01BU0spIHsKPiA+ID4gPiA+ID4gPiAtICAgICAgIGNhc2UgQUZC Q19GT1JNQVRfTU9EX0JMT0NLX1NJWkVfMzJ4ODoKPiA+ID4gPiA+ID4gPiAtICAgICAgICAgICAg ICAgYWxpZ25tZW50X3cgPSAzMjsKPiA+ID4gPiA+ID4gPiAtICAgICAgICAgICAgICAgYWxpZ25t ZW50X2ggPSA4Owo+ID4gPiA+ID4gPiA+IC0gICAgICAgICAgICAgICBicmVhazsKPiA+ID4gPiA+ ID4gPiAtICAgICAgIGNhc2UgQUZCQ19GT1JNQVRfTU9EX0JMT0NLX1NJWkVfMTZ4MTY6Cj4gPiA+ ID4gPiA+ID4gLSAgICAgICAgICAgICAgIGFsaWdubWVudF93ID0gMTY7Cj4gPiA+ID4gPiA+ID4g LSAgICAgICAgICAgICAgIGFsaWdubWVudF9oID0gMTY7Cj4gPiA+ID4gPiA+ID4gLSAgICAgICAg ICAgICAgIGJyZWFrOwo+ID4gPiA+ID4gPiA+IC0gICAgICAgZGVmYXVsdDoKPiA+ID4gPiA+ID4g PiAtICAgICAgICAgICAgICAgV0FSTigxLCAiSW52YWxpZCBBRkJDX0ZPUk1BVF9NT0RfQkxPQ0tf U0laRTogJWxsZC5cbiIsCj4gPiA+ID4gPiA+ID4gLSAgICAgICAgICAgICAgICAgICAgZmItPm1v ZGlmaWVyICYgQUZCQ19GT1JNQVRfTU9EX0JMT0NLX1NJWkVfTUFTSyk7Cj4gPiA+ID4gPiA+ID4g LSAgICAgICAgICAgICAgIGJyZWFrOwo+ID4gPiA+ID4gPiA+ICsgICAgICAgaWYgKCFkcm1fYWZi Y19nZXRfc3VwZXJibGtfd2goZmItPm1vZGlmaWVyLCAmYWxpZ25tZW50X3csICZhbGlnbm1lbnRf aCkpCj4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOwo+ID4gPiA+ ID4gPiA+ICsKPiA+ID4gPiA+ID4gPiArICAgICAgIGlmICgoYWxpZ25tZW50X3cgIT0gMTYgfHwg YWxpZ25tZW50X2ggIT0gMTYpICYmCj4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgKGFsaWdubWVu dF93ICE9IDMyIHx8IGFsaWdubWVudF9oICE9IDgpKSB7Cj4gPiA+ID4gPiA+ID4gKyAgICAgICAg ICAgICAgIERSTV9ERUJVR19LTVMoIlVuc3VwcG9ydGVkIGFmYmMgdGlsZSB3L2ggWyVkLyVkXVxu IiwKPiA+ID4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGlnbm1lbnRf dywgYWxpZ25tZW50X2gpOwo+ID4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gPiArICAgICAgICAg ICAgICAgcmV0dXJuIC1FSU5WQUw7Cj4gPiA+ID4gPiA+IFRvIGJlIGhvbmVzdCwgdGhlIHByZXZp b3VzIGNvZGUgbG9va3MgbXVjaCBtb3JlIHJlYWRhYmxlCj4gPiA+ID4gPiA+ID4gICAgICAgICB9 Cj4gPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gPiAgICAgICAgIC8qIHRpbGVkIGhlYWRlciBhZmJj ICovCj4gPiA+ID4gPiA+ID4gQEAgLTg0LDIwICs4MCwxNCBAQCBrb21lZGFfZmJfYWZiY19zaXpl X2NoZWNrKHN0cnVjdCBrb21lZGFfZmIgKmtmYiwgc3RydWN0IGRybV9maWxlICpmaWxlLAo+ID4g PiA+ID4gPiA+ICAgICAgICAgICAgICAgICBnb3RvIGNoZWNrX2ZhaWxlZDsKPiA+ID4gPiA+ID4g PiAgICAgICAgIH0KPiA+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiA+IC0gICAgICAgbl9ibG9ja3Mg PSAoa2ZiLT5hbGlnbmVkX3cgKiBrZmItPmFsaWduZWRfaCkgLyBBRkJDX1NVUEVSQkxLX1BJWEVM UzsKPiA+ID4gPiA+ID4gPiAtICAgICAgIGtmYi0+b2Zmc2V0X3BheWxvYWQgPSBBTElHTihuX2Js b2NrcyAqIEFGQkNfSEVBREVSX1NJWkUsCj4gPiA+ID4gPiA+ID4gLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgYWxpZ25tZW50X2hlYWRlcik7Cj4gPiA+ID4gPiA+ID4gLQo+ID4g PiA+ID4gPiA+ICAgICAgICAgYnBwID0ga29tZWRhX2dldF9hZmJjX2Zvcm1hdF9icHAoaW5mbywg ZmItPm1vZGlmaWVyKTsKPiA+ID4gPiA+ID4gPiAtICAgICAgIGtmYi0+YWZiY19zaXplID0ga2Zi LT5vZmZzZXRfcGF5bG9hZCArIG5fYmxvY2tzICoKPiA+ID4gPiA+ID4gPiAtICAgICAgICAgICAg ICAgICAgICAgICAgQUxJR04oYnBwICogQUZCQ19TVVBFUkJMS19QSVhFTFMgLyA4LAo+ID4gPiA+ ID4gPiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBRkJDX1NVUEVSQkxLX0FMSUdO TUVOVCk7Cj4gPiA+ID4gPiA+ID4gLSAgICAgICBtaW5fc2l6ZSA9IGtmYi0+YWZiY19zaXplICsg ZmItPm9mZnNldHNbMF07Cj4gPiA+ID4gPiA+ID4gLSAgICAgICBpZiAobWluX3NpemUgPiBvYmot PnNpemUpIHsKPiA+ID4gPiA+ID4gPiAtICAgICAgICAgICAgICAgRFJNX0RFQlVHX0tNUygiYWZi YyBzaXplIGNoZWNrIGZhaWxlZCwgb2JqX3NpemU6IDB4JXp4LiBtaW5fc2l6ZSAweCVsbHguXG4i LAo+ID4gPiA+ID4gPiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9iai0+c2l6ZSwg bWluX3NpemUpOwo+ID4gPiA+ID4gPiBXZSBuZWVkIGtmYi0+b2Zmc2V0X3BheWxvYWQgYW5kIGtm Yi0+YWZiY19zaXplIHRvIHNldCBzb21lIHJlZ2lzdGVycwo+ID4gPiA+ID4gPiBpbiBkNzFfbGF5 ZXJfdXBkYXRlKCkuIEF0IHRoaXMgbW9tZW50IEkgZmVlbCBsaWtlIHB1bmNoaW5nIG15c2VsZiBm b3IKPiA+ID4gPiA+ID4gbWFraW5nIHRoZSBzdWdnZXN0aW9uIHRvIGNvbnNpZGVyIGFic3RyYWN0 aW5nIHNvbWUgb2YgdGhlIGtvbWVkYSdzIGFmYmMKPiA+ID4gPiA+ID4gY2hlY2tzLiBUbyBtZSBp dCBkb2VzIG5vdCBsb29rIGxpa2Uga29tZWRhKGluIHRoZSBjdXJyZW50IHNoYXBlKSBjYW4gdGFr ZQo+ID4gPiA+ID4gPiBtdWNoIGFkdmFudGFnZSBvZiB0aGUgZ2VuZXJpYyBfYWZiY19mYl9jaGVj aygpIGZ1bmN0aW9uIChhcyB3YXMgc3VnZ2VzdGVkCj4gPiA+ID4gPiA+IHByZXZpb3VzbHkgYnkg RGFudmV0KS4KPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gSG93ZXZlciwgSSB3aWxsIGxldCBqYW1l cy5xaWFuLndhbmdAYXJtLmNvbSwKPiA+ID4gPiA+ID4gTWloYWlsLkF0YW5hc3NvdkBhcm0uY29t LCBCZW4uRGF2aXNAYXJtLmNvbSBjb21tZW50IGhlcmUgdG8gc2VlIGlmCj4gPiA+ID4gPiA+IHRo ZXJlIGNvdWxkIGJlIGEgd2F5IG9mIGFic3RyYWN0aW5nIHRoZSBhZmJjIGJpdHMgZnJvbSBrb21l ZGEuCj4gPiA+ID4gPiA+Cj4gPiA+ID4gPgo+ID4gPiA+ID4gSGkgYWxsOgo+ID4gPiA+ID4KPiA+ ID4gPiA+IFNpbmNlIHRoZSBjdXJyZW50IGdlbmVyaWMgZHJtX2FmYmMgaGVscGVycyBvbmx5IHN1 cHBvcnQgYWZiY18xLjEsIGJ1dAo+ID4gPiA+ID4ga29tZWRhIG5lZWRzIHN1cHBvcnQgYm90aCBh ZmJjMS4xLzEuMiwgc28gSSB0aGluayB3ZSBjYW46Cj4gPiA+ID4gPiAtIEFkZCBhZmJjMS4yIHN1 cHBvcnQgdG8gZHJtIGFmYmMgaGVscGVycy4KPiA+ID4gPiA+IC0gZm9yIHRoZSBhZmJjX3BheWxv YWRfb2Zmc2V0LCBjYW4gd2UgYWRkIHRoaXMgbWVtYmVyIHRvCj4gPiA+ID4gPiAgIGRybV9mcmFt ZWJ1ZmZlciA/Cj4gPiA+ID4gPiAtIFRoZSBhbGlnbmVkX3cvaCBhcmUgaW1wb3J0YW50IGZvciBh ZmJjLCBzbyBjYW4gd2UgaGF2ZSB0aGVtIGluCj4gPiA+ID4gPiAgIGRybV9mcmFtZWJ1ZmZlciA/ Cj4gPiA+ID4KPiA+ID4gPiBIb3cgZXhwZW5zaXZlIGlzIGl0IHRvIHJlY29tcHV0ZSB0aGVzZSBm cm9tIGEgc3RydWN0IGRybV9mcmFtZWJ1ZmZlcj8KPiA+ID4gPgo+ID4gPiA+IEknZCBqdXN0IGdv IHdpdGggb25lIGZ1bmN0aW9uIHdoaWNoIGNvbXB1dGVzIGFsbCB0aGVzZSBkZXJpdmVkIHZhbHVl cywgYW5kCj4gPiA+ID4gc3R1ZmZzIHRoZW0gaW50byBhIHN0cnVjdCBkcm1fYWZiYy4gVGhlbiBk cml2ZXJzIGNhbGwgdGhhdCBvbmNlIG9yIHNvLgo+ID4gPiA+Cj4gPiA+Cj4gPiA+IEEgc3RydWN0 IGRybV9hZmJjLCBnb29kIGlkZWEsIEkgbGlrZSBpdC4gOi0pCj4gPiA+Cj4gPiA+IGFuZCB3ZSBj YW4gY29tcHV0ZSBpdCB3aGVuIGRvIHRoZSBhZmJjIHNpemUgY2hlY2sgbGlrZQo+ID4gPgo+ID4g PiAgIGRybV9hZmJjX2NoZWNrX2ZiX3NpemUoLi4uLCAma29tZWRhX2ZiLT5kcm1fYWZiYyk7Cj4g PiAKPiA+IERpc2N1c3NlZCB0aGlzIGFsc28gd2l0aCBBbmRyemVqIG9uIGlyYyBvbiB3aGVyZSBl eGFjdGx5IHRvIHBsYWNlCj4gPiBzdHVmZi4gSSB0aGluayBpZGVhbGx5IHdlJ2QgYmUgYWJsZSB0 byBnZXQgcmlkIG9mIHRoZSBjdXN0b20KPiA+IG1hbGlkcF9mYl9jcmVhdGUgY29tcGxldGVseSwg YW5kIGtvbWVkYSBzaG91bGQgYWxzbyBiZSBhYmxlIHRvIGdldCByaWQKPiA+IG9mIG1vc3Qgb2Yg dGhlIG9wZW4tY29kZWQgY2hlY2tzIChpdCdzIGxhcmdlbHkgcmVpbnZldGluZwo+ID4gZHJtX2dl bV9mYl9jcmVhdGVfd2l0aF9mdW5jcywgaW1vIGJldHRlciB0byBqdXN0IGNhbGwgdGhhdCBmaXJz dCwgdGhlbgo+ID4gdGhlbiBkbyBhIGZldyBtb3JlIGNhbGxzIG9mIHRoZSBzcGVjaWZpYyB0aGlu Z3MgeW91IG5lZWQgdG8gaGF2ZQo+ID4gY29tcHV0ZWQgaW4gYWRkaXRpb24pLgo+ID4gLURhbmll bAo+IAo+IFRoZSBhZmJjIHN1cHBvcnQgaXMgdGhlIG9ubHkgcmVhc29uIHdoeSBtYWxpZHAva29t ZWRhIGRlZmluZSBvdXIgb3duCj4gZmJfY3JlYXRlKCksIGl0IGlzIGdvb2QgZm9yIGtvbWVkYSBh bmQgbWFsaWRwIGlmIHdlIHB1dCBhZmJjIHN1cHBvcnQKPiBkaXJlY3RseSBpbnRvIHRoZSBzdGFu ZGFyZCBkcm1fZ2VtX2ZiX2NyZWF0ZV93aXRoX2Z1bmNzLgo+IAo+IEJUVzoKPiAKPiBjYW4gd2Ug YWRkIG9uZSBtb3JlIGFyZ3VtZW50OiBmYl9zdHJ1Y3Rfc2l6ZSB0bwo+IAo+ICAgZHJtX2dlbV9m Yl9jcmVhdGVfd2l0aF9mdW5jcyguLi4sIHNpemVfdCBmYl9zdHJ1Y3Rfc2l6ZSk7Cj4gCj4gdGhl biBkcml2ZXIgY2FuIHVzZSBpdCB0byBleHRlbmQgaXRzIG93biBmYiBzdHJ1Y3QgYW5kIGFkZCBz b21lIHByaXZhdGUKPiBpbmZvcy4KCkhtLCB0aGlzIGlzbid0IGhvdyB3ZSB1c3VhbGx5IGRvIGl0 IGZvciBzdWJjbGFzc2luZyAtIHRoZSB0cm91YmxlIHdpdGgKdGhpcyBpcyB0aGF0IHRoZSBzaXpl IG9mIHRoZSBhbGxvY2F0aW9uIGlzIHZlcnkgZmFyIGF3YXkgZnJvbSB3aGVyZSB3ZQphY3R1YWxs eSBhbGxvY2F0ZSwgYXV0b21hdGVkIGNoZWNrZXJzIGhhdmUgYSBoYXJkZXIgdGltZSB3aXRoIHRo aXMKcGF0dGVybi4KClVzdWFsbHkgd2hhdCB3ZSBkbyBpcyBzcGxpdCB0aGUga3phbGxvYyBvdXQg ZnJvbSB0aGUgX2NyZWF0ZSBmdW5jdGlvbiwKbGVhdmluZyBqdXN0IF9pbml0IGJlaGluZC4gVGhl biB5b3UgaGF2ZSByb3VnaGx5IChwc2V1ZG8tY29kZSk6CgoJZHJtX2dlbV9mYl9jcmVhdGVfd2l0 aF9mdW5jcyhhcmdzKSB7CgkJc3RydWN0IGRybV9nZW1fZmIgKmZiOwoKCQlmYiA9IGt6YWxsb2Mo c2l6ZW9mKCpmYikpOwoJCWlmICghZmIpCgkJCXJldHVybiAtRU5PTUVNOwoKCQlyZXR1cm4gZHJt X2dlbV9mYl9pbml0X3dpdGhfZnVuY3Rpb25zKGZiLCBhcmdzKTsKCX0KCklmIHlvdSB0aGVuIG5l ZWQgYSBiaWdnZXIgZnVuY3Rpb24sIHlvdSBqdXN0IGFsbG9jYXRlIHRoYXQgYmlnZ2VyCmZ1bmN0 aW9uLCBhbmQgcGFzcyAmZmItPmJhc2UgdG8gdGhlIF9pbml0IGZ1bmN0aW9uLiBDb3N0cyAzIGFk ZGl0aW9uYWwKbGluZXMgKGZvciB0aGUga3phbGxvYyBhbmQgZXJyb3IgY2hlY2tpbmcpLCBidXQg ZWFzaWVyIHRvIHJlYWQmdmVyaWZ5IGZvcgpib3RoIGh1bWFucyBhbmQgY29tcGlsZXJzLgoKSSBn dWVzcyB3aGF0IHdlIGNvdWxkIHRoZW4gZG8gaXMgY3JlYXRlIGEgZHJtX2dlbV9hZmJjX2NyZWF0 ZSBmdW5jdGlvbgp3aGljaCBzZXRzIHRoaXMgYWxsIHVwIGZvciBhCgpzdHJ1Y3QgZHJtX2dlbV9h ZmJjX2ZyYW1lYnVmZmVyIHsKCXN0cnVjdCBkcm1fZ2VtX2ZyYW1lYnVmZmVyIGJhc2U7CgkvKiBh ZmJjIHN0dWZmICovCn07CgphbmQgdGhlbiBhbHNvIGZpbGxzIG91dCBhbGwgZGVyaXZlZCBhZmJj IHZhbHVlcywgc28gbW9yZSB0aGFuIGp1c3QKY2FsbGluZyBkcm1fZ2VtX2ZiX2luaXRfd2l0aF9m dW5jdGlvbnMuIEFuZCBkcml2ZXJzIGNvdWxkIHN0aWxsIGhhdmUgdGhlaXIKb3duIHZlcnNpb24g d2l0aCBldmVuIG1vcmUgY2hlY2tzIG9uIHRvcC4KCkFuZCBhbGwgYWZiYyBzdXBwb3J0aW5nIGRy aXZlcnMgY291bGQgdGhlbiB1c2UgdGhhdC4gRmVlbHMgYSBiaXQgbGlrZQpvdmVyZW5naW5lZXJp bmcgdG8gbWUsIGJ1dCBpZiB5b3UgZmVlbCBsaWtlIHRoYXQncyBqdXN0aWZpZWQgdG8gZG8gaXQn cyBhCmdvb2Qgc29sdXRpb24uCgpDaGVlcnMsIERhbmllbAo+IAo+IFRoYW5rcwo+IEphbWVzCj4g PiA+Cj4gPiA+IFRoYW5rcy4KPiA+ID4gSmFtZXMKPiA+ID4KPiA+ID4gPiBGb3IgcmV3b3JraW5n IGRybV9mcmFtZWJ1ZmZlciBpdHNlbGYgSSB0aGluayBpdCdzIHByb2JhYmx5IGEgYml0IHRvbwo+ ID4gPiA+IGVhcmxpZXIuIEFuZCBpZiB3ZSBkbyBpdCwgd2Ugc2hvdWxkIG1heWJlIGdvIGEgYml0 IG1vcmUgYm9sZCwgYWltaW5nIHRvCj4gPiA+ID4gcHJvcGVydHktZnkgYWxsIHRoZSBmcmFtZWJ1 ZmZlciBzZXR0aW5ncywgbWF5YmUgZXZlbiBtYWtpbmcgaXQgZXh0ZW5zaWJsZSwKPiA+ID4gPiBh bmQgaGF2ZSBkcml2ZXJzIGhhbmRsZSBhIGNvcnJlc3BvbmRpbmcgZHJtX2ZyYW1lYnVmZmVyX3N0 YXRlLgo+ID4gPiA+Cj4gPiA+ID4gQSB0aGlyZCBvcHRpb24gd291bGQgYmUgdG8gY3JlYXRlIGEg ZHJtX2FmYmNfZnJhbWVidWZmZXIgd2hpY2ggZW1iZWRzCj4gPiA+ID4gZHJtX2ZyYW1lYnVmZmVy IGFuZCB3aGljaCBkcml2ZXJzIHdvdWxkIG5lZWQgdG8gdXNlLiBCdXQgYWxzbyBmZWVscyBhIGJp dAo+ID4gPiA+IGxpa2UgdG9vIG11Y2ggY2h1cm4uIFJlY29tcHV0aW5nIHNob3VsZCBiZSBxdWlj ayBlbm91Z2ggYW5kIG11Y2ggZWFzaWVyLgo+ID4gPiA+IC1EYW5pZWwKPiA+ID4gPgo+ID4gPiA+ ID4KPiA+ID4gPiA+IFRoYW5rcwo+ID4gPiA+ID4gSmFtZXMKPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ IFRoYW5rcyBhbnl3YXlzIGZvciB0YWtpbmcgYSBzdGFiIGF0IHRoaXMuCj4gPiA+ID4gPiA+IC1B eWFuCj4gPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiA+ICsgICAgICAgaWYgKCFkcm1fYWZiY19j aGVja19mYl9zaXplKG1vZGVfY21kLT5waXRjaGVzWzBdLCBicHAsCj4gPiA+ID4gPiA+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kZV9jbWQtPndpZHRoLCBtb2RlX2Nt ZC0+aGVpZ2h0LAo+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGFsaWdubWVudF93LCBhbGlnbm1lbnRfaCwKPiA+ID4gPiA+ID4gPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBvYmotPnNpemUsIG1vZGVfY21kLT5vZmZzZXRzWzBdLAo+ ID4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFGQkNfU1VQ RVJCTEtfQUxJR05NRU5UKSkKPiA+ID4gPiA+ID4gPiAgICAgICAgICAgICAgICAgZ290byBjaGVj a19mYWlsZWQ7Cj4gPiA+ID4gPiA+ID4gLSAgICAgICB9Cj4gPiA+ID4gPiA+ID4KPiA+ID4gPiA+ ID4gPiAgICAgICAgIGZiLT5vYmpbMF0gPSBvYmo7Cj4gPiA+ID4gPiA+ID4gICAgICAgICByZXR1 cm4gMDsKPiA+ID4gPiA+ID4gPiAtLQo+ID4gPiA+ID4gPiA+IDIuMTcuMQo+ID4gPiA+Cj4gPiA+ ID4gLS0KPiA+ID4gPiBEYW5pZWwgVmV0dGVyCj4gPiA+ID4gU29mdHdhcmUgRW5naW5lZXIsIElu dGVsIENvcnBvcmF0aW9uCj4gPiA+ID4gaHR0cDovL2Jsb2cuZmZ3bGwuY2gKPiA+IAo+ID4gCj4g PiAKPiA+IC0tIAo+ID4gRGFuaWVsIFZldHRlcgo+ID4gU29mdHdhcmUgRW5naW5lZXIsIEludGVs IENvcnBvcmF0aW9uCj4gPiArNDEgKDApIDc5IDM2NSA1NyA0OCAtIGh0dHA6Ly9ibG9nLmZmd2xs LmNoCgotLSAKRGFuaWVsIFZldHRlcgpTb2Z0d2FyZSBFbmdpbmVlciwgSW50ZWwgQ29ycG9yYXRp b24KaHR0cDovL2Jsb2cuZmZ3bGwuY2gKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJl ZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGlu Zm8vZHJpLWRldmVs