From mboxrd@z Thu Jan 1 00:00:00 1970 From: Boris Brezillon Subject: Re: [PATCH v2 7/8] drm/vc4: Add support for the transposer block Date: Mon, 2 Jul 2018 12:19:33 +0200 Message-ID: <20180702121933.22fb322b@bbrezillon> References: <20180629111722.20299-1-boris.brezillon@bootlin.com> <20180629111722.20299-8-boris.brezillon@bootlin.com> <87d0w9nxfr.fsf@anholt.net> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail.bootlin.com (mail.bootlin.com [62.4.15.54]) by gabe.freedesktop.org (Postfix) with ESMTP id 66B3E6E393 for ; Mon, 2 Jul 2018 10:19:50 +0000 (UTC) In-Reply-To: <87d0w9nxfr.fsf@anholt.net> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Eric Anholt Cc: David Airlie , Boris Brezillon , Liviu Dudau , dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org SGkgRXJpYywKCk9uIEZyaSwgMjkgSnVuIDIwMTggMTM6MzU6MDQgLTA3MDAKRXJpYyBBbmhvbHQg PGVyaWNAYW5ob2x0Lm5ldD4gd3JvdGU6Cgo+IEJvcmlzIEJyZXppbGxvbiA8Ym9yaXMuYnJlemls bG9uQGJvb3RsaW4uY29tPiB3cml0ZXM6Cj4gCj4gPiBGcm9tOiBCb3JpcyBCcmV6aWxsb24gPGJv cmlzLmJyZXppbGxvbkBmcmVlLWVsZWN0cm9ucy5jb20+Cj4gPgo+ID4gVGhlIHRyYW5zcG9zZXIg YmxvY2sgaXMgcHJvdmlkaW5nIHN1cHBvcnQgZm9yIG1lbS10by1tZW0gY29tcG9zaXRpb24sCj4g PiB3aGljaCBpcyBleHBvc2VkIGFzIGEgZHJtX3dyaXRlYmFjayBjb25uZWN0b3IgaW4gRFJNLgo+ ID4KPiA+IEFkZCBhIGRyaXZlciB0byBzdXBwb3J0IHRoaXMgZmVhdHVyZS4KPiA+Cj4gPiBTaWdu ZWQtb2ZmLWJ5OiBCb3JpcyBCcmV6aWxsb24gPGJvcmlzLmJyZXppbGxvbkBmcmVlLWVsZWN0cm9u cy5jb20+ICAKPiAKPiA+ICtzdGF0aWMgdm9pZCB2YzRfY3J0Y19tb2RlX3NldF9ub2ZiKHN0cnVj dCBkcm1fY3J0YyAqY3J0YykKPiA+ICt7Cj4gPiArCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBj cnRjLT5kZXY7Cj4gPiArCXN0cnVjdCB2YzRfZGV2ICp2YzQgPSB0b192YzRfZGV2KGRldik7Cj4g PiArCXN0cnVjdCB2YzRfY3J0YyAqdmM0X2NydGMgPSB0b192YzRfY3J0YyhjcnRjKTsKPiA+ICsJ c3RydWN0IHZjNF9jcnRjX3N0YXRlICp2YzRfc3RhdGUgPSB0b192YzRfY3J0Y19zdGF0ZShjcnRj LT5zdGF0ZSk7Cj4gPiArCXN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlID0gJmNydGMtPnN0 YXRlLT5hZGp1c3RlZF9tb2RlOwo+ID4gKwlib29sIGludGVybGFjZSA9IG1vZGUtPmZsYWdzICYg RFJNX01PREVfRkxBR19JTlRFUkxBQ0U7Cj4gPiArCWJvb2wgZGVidWdfZHVtcF9yZWdzID0gZmFs c2U7Cj4gPiArCj4gPiArCWlmIChkZWJ1Z19kdW1wX3JlZ3MpIHsKPiA+ICsJCURSTV9JTkZPKCJD UlRDICVkIHJlZ3MgYmVmb3JlOlxuIiwgZHJtX2NydGNfaW5kZXgoY3J0YykpOwo+ID4gKwkJdmM0 X2NydGNfZHVtcF9yZWdzKHZjNF9jcnRjKTsKPiA+ICsJfQo+ID4gKwo+ID4gKwlpZiAodmM0X2Ny dGMtPmNoYW5uZWwgPT0gMikgewo+ID4gKwkJdTMyIGRpc3BjdHJsOwo+ID4gKwkJdTMyIGRzcDNf bXV4Owo+ID4gKwo+ID4gKwkJLyoKPiA+ICsJCSAqIFNDQUxFUl9ESVNQQ1RSTF9EU1AzID0gWCwg d2hlcmUgWCA8IDIgbWVhbnMgJ2Nvbm5lY3QgRFNQMyB0bwo+ID4gKwkJICogRklGTyBYJy4KPiA+ ICsJCSAqIFNDQUxFUl9ESVNQQ1RSTF9EU1AzID0gMyBtZWFucyAnZGlzYWJsZSBEU1AgMycuCj4g PiArCQkgKgo+ID4gKwkJICogRFNQMyBpcyBjb25uZWN0ZWQgdG8gRklGTzIgdW5sZXNzIHRoZSB0 cmFuc3Bvc2VyIGlzCj4gPiArCQkgKiBlbmFibGVkLiBJbiB0aGlzIGNhc2UsIEZJRk8gMiBpcyBk aXJlY3RseSBhY2Nlc3NlZCBieSB0aGUKPiA+ICsJCSAqIFRYUCBJUCwgYW5kIHdlIG5lZWQgdG8g cHJldmVudCBkaXNhYmxlIHRoZSAgCj4gCj4gcy9wcmV2ZW50IC8vCj4gCj4gPiArCQkgKiBGSUZP MiAtPiBwaXhlbHZhbHZlMSByb3V0ZS4KPiA+ICsJCSAqLwo+ID4gKwkJaWYgKHZjNF9zdGF0ZS0+ ZmVlZF90eHApCj4gPiArCQkJZHNwM19tdXggPSBWQzRfU0VUX0ZJRUxEKDMsIFNDQUxFUl9ESVNQ Q1RSTF9EU1AzX01VWCk7Cj4gPiArCQllbHNlCj4gPiArCQkJZHNwM19tdXggPSBWQzRfU0VUX0ZJ RUxEKDIsIFNDQUxFUl9ESVNQQ1RSTF9EU1AzX01VWCk7Cj4gPiArCj4gPiArCQkvKiBSZWNvbmZp Z3VyZSB0aGUgRFNQMyBtdXggaWYgcmVxdWlyZWQuICovCj4gPiArCQlkaXNwY3RybCA9IEhWU19S RUFEKFNDQUxFUl9ESVNQQ1RSTCk7Cj4gPiArCQlpZiAoKGRpc3BjdHJsICYgU0NBTEVSX0RJU1BD VFJMX0RTUDNfTVVYX01BU0spICE9IGRzcDNfbXV4KSB7Cj4gPiArCQkJZGlzcGN0cmwgJj0gflND QUxFUl9ESVNQQ1RSTF9EU1AzX01VWF9NQVNLOwo+ID4gKwkJCUhWU19XUklURShTQ0FMRVJfRElT UENUUkwsIGRpc3BjdHJsIHwgZHNwM19tdXgpOwo+ID4gKwkJfSAgCj4gCj4gVGhpcyBpcyBmaW5l LCBidXQgeW91IGNvdWxkIGFsc28gc2tpcCB0aGUgbWF0Y2hpbmcgbXV4IGNoZWNrIGhlcmUgLS0g dGhlCj4gcmVhZCBpcyB0aGUgZXhwZW5zaXZlIHBhcnQuCj4gCj4gPiArCX0KPiA+ICsKPiA+ICsJ aWYgKCF2YzRfc3RhdGUtPmZlZWRfdHhwKQo+ID4gKwkJdmM0X2NydGNfY29uZmlnX3B2KGNydGMp Owo+ID4gIAo+ID4gIAlIVlNfV1JJVEUoU0NBTEVSX0RJU1BCS0dORFgodmM0X2NydGMtPmNoYW5u ZWwpLAo+ID4gIAkJICBTQ0FMRVJfRElTUEJLR05EX0FVVE9IUyB8Cj4gPiBAQCAtNDk5LDYgKzUz OSwxMyBAQCBzdGF0aWMgdm9pZCB2YzRfY3J0Y19hdG9taWNfZGlzYWJsZShzdHJ1Y3QgZHJtX2Ny dGMgKmNydGMsCj4gPiAgCX0KPiA+ICB9Cj4gPiAgCj4gPiArdm9pZCB2YzRfY3J0Y190eHBfYXJt ZWQoc3RydWN0IGRybV9jcnRjX3N0YXRlICpzdGF0ZSkKPiA+ICt7Cj4gPiArCXN0cnVjdCB2YzRf Y3J0Y19zdGF0ZSAqdmM0X3N0YXRlID0gdG9fdmM0X2NydGNfc3RhdGUoc3RhdGUpOwo+ID4gKwo+ ID4gKwl2YzRfc3RhdGUtPnR4cF9hcm1lZCA9IHRydWU7Cj4gPiArfQo+ID4gKwo+ID4gIHN0YXRp YyB2b2lkIHZjNF9jcnRjX3VwZGF0ZV9kbGlzdChzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCj4gPiAg ewo+ID4gIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY3J0Yy0+ZGV2Owo+ID4gQEAgLTUxNCw4 ICs1NjEsMTEgQEAgc3RhdGljIHZvaWQgdmM0X2NydGNfdXBkYXRlX2RsaXN0KHN0cnVjdCBkcm1f Y3J0YyAqY3J0YykKPiA+ICAJCVdBUk5fT04oZHJtX2NydGNfdmJsYW5rX2dldChjcnRjKSAhPSAw KTsKPiA+ICAKPiA+ICAJCXNwaW5fbG9ja19pcnFzYXZlKCZkZXYtPmV2ZW50X2xvY2ssIGZsYWdz KTsKPiA+IC0JCXZjNF9jcnRjLT5ldmVudCA9IGNydGMtPnN0YXRlLT5ldmVudDsKPiA+IC0JCWNy dGMtPnN0YXRlLT5ldmVudCA9IE5VTEw7Cj4gPiArCj4gPiArCQlpZiAoIXZjNF9zdGF0ZS0+ZmVl ZF90eHAgfHwgdmM0X3N0YXRlLT50eHBfYXJtZWQpIHsKPiA+ICsJCQl2YzRfY3J0Yy0+ZXZlbnQg PSBjcnRjLT5zdGF0ZS0+ZXZlbnQ7Cj4gPiArCQkJY3J0Yy0+c3RhdGUtPmV2ZW50ID0gTlVMTDsK PiA+ICsJCX0KPiA+ICAKPiA+ICAJCUhWU19XUklURShTQ0FMRVJfRElTUExJU1RYKHZjNF9jcnRj LT5jaGFubmVsKSwKPiA+ICAJCQkgIHZjNF9zdGF0ZS0+bW0uc3RhcnQpOwo+ID4gQEAgLTUzMyw4 ICs1ODMsOCBAQCBzdGF0aWMgdm9pZCB2YzRfY3J0Y19hdG9taWNfZW5hYmxlKHN0cnVjdCBkcm1f Y3J0YyAqY3J0YywKPiA+ICAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNydGMtPmRldjsKPiA+ ICAJc3RydWN0IHZjNF9kZXYgKnZjNCA9IHRvX3ZjNF9kZXYoZGV2KTsKPiA+ICAJc3RydWN0IHZj NF9jcnRjICp2YzRfY3J0YyA9IHRvX3ZjNF9jcnRjKGNydGMpOwo+ID4gLQlzdHJ1Y3QgZHJtX2Ny dGNfc3RhdGUgKnN0YXRlID0gY3J0Yy0+c3RhdGU7Cj4gPiAtCXN0cnVjdCBkcm1fZGlzcGxheV9t b2RlICptb2RlID0gJnN0YXRlLT5hZGp1c3RlZF9tb2RlOwo+ID4gKwlzdHJ1Y3QgdmM0X2NydGNf c3RhdGUgKnZjNF9zdGF0ZSA9IHRvX3ZjNF9jcnRjX3N0YXRlKGNydGMtPnN0YXRlKTsKPiA+ICsJ c3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm1vZGUgPSAmY3J0Yy0+c3RhdGUtPmFkanVzdGVkX21v ZGU7Cj4gPiAgCj4gPiAgCXJlcXVpcmVfaHZzX2VuYWJsZWQoZGV2KTsKPiA+ICAKPiA+IEBAIC01 NDYsMTUgKzU5NiwyMSBAQCBzdGF0aWMgdm9pZCB2YzRfY3J0Y19hdG9taWNfZW5hYmxlKHN0cnVj dCBkcm1fY3J0YyAqY3J0YywKPiA+ICAKPiA+ICAJLyogVHVybiBvbiB0aGUgc2NhbGVyLCB3aGlj aCB3aWxsIHdhaXQgZm9yIHZzdGFydCB0byBzdGFydAo+ID4gIAkgKiBjb21wb3NpdGluZy4KPiA+ ICsJICogV2hlbiBmZWVkaW5nIHRoZSB0cmFuc3Bvc2VyLCB3ZSBzaG91bGQgb3BlcmF0ZSBpbiBv bmVzaG90Cj4gPiArCSAqIG1vZGUuCj4gPiAgCSAqLwo+ID4gIAlIVlNfV1JJVEUoU0NBTEVSX0RJ U1BDVFJMWCh2YzRfY3J0Yy0+Y2hhbm5lbCksCj4gPiAgCQkgIFZDNF9TRVRfRklFTEQobW9kZS0+ aGRpc3BsYXksIFNDQUxFUl9ESVNQQ1RSTFhfV0lEVEgpIHwKPiA+ICAJCSAgVkM0X1NFVF9GSUVM RChtb2RlLT52ZGlzcGxheSwgU0NBTEVSX0RJU1BDVFJMWF9IRUlHSFQpIHwKPiA+IC0JCSAgU0NB TEVSX0RJU1BDVFJMWF9FTkFCTEUpOwo+ID4gKwkJICBTQ0FMRVJfRElTUENUUkxYX0VOQUJMRSB8 Cj4gPiArCQkgICh2YzRfc3RhdGUtPmZlZWRfdHhwID8gU0NBTEVSX0RJU1BDVFJMWF9PTkVTSE9U IDogMCkpOwo+ID4gIAo+ID4gLQkvKiBUdXJuIG9uIHRoZSBwaXhlbCB2YWx2ZSwgd2hpY2ggd2ls bCBlbWl0IHRoZSB2c3RhcnQgc2lnbmFsLiAqLwo+ID4gLQlDUlRDX1dSSVRFKFBWX1ZfQ09OVFJP TCwKPiA+IC0JCSAgIENSVENfUkVBRChQVl9WX0NPTlRST0wpIHwgUFZfVkNPTlRST0xfVklERU4p Owo+ID4gKwkvKiBXaGVuIGZlZWRpbmcgdGhlIGNvbXBvc2VyIGJsb2NrIHRoZSBwaXhlbHZhbHZl IGlzIHVubmVlZGVkIGFuZCAgCj4gCj4gInRyYW5zcG9zZXIgYmxvY2siPyBjb21wb3NlciBibG9j ayBtYWRlIG1lIHRoaW5rIEhWUy4KPiAKPiA+ICsJICogc2hvdWxkIG5vdCBiZSBlbmFibGVkLgo+ ID4gKwkgKi8KPiA+ICsJaWYgKCF2YzRfc3RhdGUtPmZlZWRfdHhwKQo+ID4gKwkJQ1JUQ19XUklU RShQVl9WX0NPTlRST0wsCj4gPiArCQkJICAgQ1JUQ19SRUFEKFBWX1ZfQ09OVFJPTCkgfCBQVl9W Q09OVFJPTF9WSURFTik7Cj4gPiAgfQo+ID4gIAo+ID4gIHN0YXRpYyBlbnVtIGRybV9tb2RlX3N0 YXR1cyB2YzRfY3J0Y19tb2RlX3ZhbGlkKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiA+IEBAIC01 NzksOCArNjM1LDEwIEBAIHN0YXRpYyBpbnQgdmM0X2NydGNfYXRvbWljX2NoZWNrKHN0cnVjdCBk cm1fY3J0YyAqY3J0YywKPiA+ICAJc3RydWN0IGRybV9wbGFuZSAqcGxhbmU7Cj4gPiAgCXVuc2ln bmVkIGxvbmcgZmxhZ3M7Cj4gPiAgCWNvbnN0IHN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKnBsYW5l X3N0YXRlOwo+ID4gKwlzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubjsKPiA+ICsJc3RydWN0IGRy bV9jb25uZWN0b3Jfc3RhdGUgKmNvbm5fc3RhdGU7Cj4gPiAgCXUzMiBkbGlzdF9jb3VudCA9IDA7 Cj4gPiAtCWludCByZXQ7Cj4gPiArCWludCByZXQsIGk7Cj4gPiAgCj4gPiAgCS8qIFRoZSBwaXhl bHZhbHZlIGNhbiBvbmx5IGZlZWQgb25lIGVuY29kZXIgKGFuZCBlbmNvZGVycyBhcmUKPiA+ICAJ ICogMToxIHdpdGggY29ubmVjdG9ycy4pCj4gPiBAQCAtNjAwLDYgKzY1OCwyMiBAQCBzdGF0aWMg aW50IHZjNF9jcnRjX2F0b21pY19jaGVjayhzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4gPiAgCWlm IChyZXQpCj4gPiAgCQlyZXR1cm4gcmV0Owo+ID4gIAo+ID4gKwlzdGF0ZS0+bm9fdmJsYW5rID0g ZmFsc2U7Cj4gPiArCWZvcl9lYWNoX25ld19jb25uZWN0b3JfaW5fc3RhdGUoc3RhdGUtPnN0YXRl LCBjb25uLCBjb25uX3N0YXRlLCBpKSB7Cj4gPiArCQlpZiAoY29ubl9zdGF0ZS0+Y3J0YyAhPSBj cnRjKQo+ID4gKwkJCWNvbnRpbnVlOwo+ID4gKwo+ID4gKwkJLyogVGhlIHdyaXRlYmFjayBjb25u ZWN0b3IgaXMgaW1wbGVtZW50ZWQgdXNpbmcgdGhlIHRyYW5zcG9zZXIKPiA+ICsJCSAqIGJsb2Nr IHdoaWNoIGlzIGRpcmVjdGx5IHRha2luZyBpdHMgZGF0YSBmcm9tIHRoZSBIVlMgRklGTy4KPiA+ ICsJCSAqLwo+ID4gKwkJaWYgKGNvbm4tPmNvbm5lY3Rvcl90eXBlID09IERSTV9NT0RFX0NPTk5F Q1RPUl9XUklURUJBQ0spIHsKPiA+ICsJCQlzdGF0ZS0+bm9fdmJsYW5rID0gdHJ1ZTsKPiA+ICsJ CQl2YzRfc3RhdGUtPmZlZWRfdHhwID0gdHJ1ZTsKPiA+ICsJCX0KPiA+ICsKPiA+ICsJCWJyZWFr Owo+ID4gKwl9Cj4gPiArCj4gPiAgCXJldHVybiAwOwo+ID4gIH0KPiA+ICAKPiA+IEBAIC03MTMs NyArNzg3LDggQEAgc3RhdGljIHZvaWQgdmM0X2NydGNfaGFuZGxlX3BhZ2VfZmxpcChzdHJ1Y3Qg dmM0X2NydGMgKnZjNF9jcnRjKQo+ID4gIAo+ID4gIAlzcGluX2xvY2tfaXJxc2F2ZSgmZGV2LT5l dmVudF9sb2NrLCBmbGFncyk7Cj4gPiAgCWlmICh2YzRfY3J0Yy0+ZXZlbnQgJiYKPiA+IC0JICAg ICh2YzRfc3RhdGUtPm1tLnN0YXJ0ID09IEhWU19SRUFEKFNDQUxFUl9ESVNQTEFDVFgoY2hhbikp KSkgewo+ID4gKwkgICAgKHZjNF9zdGF0ZS0+bW0uc3RhcnQgPT0gSFZTX1JFQUQoU0NBTEVSX0RJ U1BMQUNUWChjaGFuKSkgfHwKPiA+ICsJICAgICB2YzRfc3RhdGUtPmZlZWRfdHhwKSkgeyAgCj4g Cj4gQ2FuIHZjNF9jcnRjLT5ldmVudCBldmVuIGJlIHNldCBpZiB2YzRfc3RhdGUtPmZlZWRfdHhw Pwo+IAo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS92YzQvdmM0X3JlZ3MuaCBiL2Ry aXZlcnMvZ3B1L2RybS92YzQvdmM0X3JlZ3MuaAo+ID4gaW5kZXggZDY4NjRmYTRiZDE0Li43NDRh Njg5NzUxZjAgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vdmM0L3ZjNF9yZWdzLmgK PiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS92YzQvdmM0X3JlZ3MuaAo+ID4gQEAgLTMzMCw2ICsz MzAsNyBAQAo+ID4gICNkZWZpbmUgU0NBTEVSX0RJU1BDVFJMMCAgICAgICAgICAgICAgICAgICAg ICAgIDB4MDAwMDAwNDAKPiA+ICAjIGRlZmluZSBTQ0FMRVJfRElTUENUUkxYX0VOQUJMRQkJQklU KDMxKQo+ID4gICMgZGVmaW5lIFNDQUxFUl9ESVNQQ1RSTFhfUkVTRVQJCQlCSVQoMzApCj4gPiAr Cj4gPiAgLyogR2VuZXJhdGVzIGEgc2luZ2xlIGZyYW1lIHdoZW4gVlNUQVJUIGlzIHNlZW4gYW5k IHN0b3BzIGF0IHRoZSBsYXN0Cj4gPiAgICogcGl4ZWwgcmVhZCBmcm9tIHRoZSBGSUZPLgo+ID4g ICAqLyAgCj4gCj4gc3RyYXkgaHVuaz8KPiAKPiA+ICtzdGF0aWMgdm9pZCB2YzRfdHhwX2Nvbm5l Y3Rvcl9hdG9taWNfY29tbWl0KHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uLAo+ID4gKwkJCQkJ c3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKmNvbm5fc3RhdGUpCj4gPiArewo+ID4gKwlzdHJ1 Y3QgdmM0X3R4cCAqdHhwID0gY29ubmVjdG9yX3RvX3ZjNF90eHAoY29ubik7Cj4gPiArCXN0cnVj dCBkcm1fZ2VtX2NtYV9vYmplY3QgKmdlbTsKPiA+ICsJc3RydWN0IGRybV9kaXNwbGF5X21vZGUg Km1vZGU7Cj4gPiArCXN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiOwo+ID4gKwl1MzIgY3RybCA9 IFRYUF9HTyB8IFRYUF9WU1RBUlRfQVRfRU9GIHwgVFhQX0VJOwo+ID4gKwo+ID4gKwlpZiAoV0FS Tl9PTighY29ubl9zdGF0ZS0+d3JpdGViYWNrX2pvYiB8fAo+ID4gKwkJICAgICFjb25uX3N0YXRl LT53cml0ZWJhY2tfam9iLT5mYikpCj4gPiArCQlyZXR1cm47Cj4gPiArCj4gPiArCW1vZGUgPSAm Y29ubl9zdGF0ZS0+Y3J0Yy0+c3RhdGUtPmFkanVzdGVkX21vZGU7Cj4gPiArCWZiID0gY29ubl9z dGF0ZS0+d3JpdGViYWNrX2pvYi0+ZmI7Cj4gPiArCj4gPiArCXN3aXRjaCAoZmItPmZvcm1hdC0+ Zm9ybWF0KSB7Cj4gPiArCWNhc2UgRFJNX0ZPUk1BVF9BUkdCODg4ODoKPiA+ICsJCWN0cmwgfD0g VFhQX0FMUEhBX0VOQUJMRTsgIAo+IAo+IE9wdGlvbmFsIHN1Z2dlc3Rpb246IEhhdmUgdGhlIHR4 cF9mb3JtYXRzW10gdGFibGUgYmUgYSBzdHJ1Y3Qgd2l0aCB0aGVzZQo+IHJlZ2lzdGVyIHZhbHVl cyBpbiBpdC4KPiAKPiBBbGwgbXkgZmVlZGJhY2sgc2VlbXMgcmVhbGx5IG1pbm9yLCBzbyB3aXRo IHdoYXRldmVyIGNvbXBvbmVudHMgeW91IGxpa2UKPiBpbnRlZ3JhdGVkLCBmZWVsIGZyZWUgdG8g YWRkOgoKV2lsbCBmaXggYWxsIHRoZSB0aGluZ3MgeW91IHBvaW50ZWQgaW4geW91ciByZXZpZXcu CgpUaGFua3MsCgpCb3JpcwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3Rv cC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmkt ZGV2ZWwK