From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH 3/4] drm/hisilicon/hibmc: Implement hibmc_dumb_create() with generic helpers Date: Tue, 26 Nov 2019 09:38:43 +0100 Message-ID: <20191126083843.GO29965@phenom.ffwll.local> References: <20191122083044.6627-1-tzimmermann@suse.de> <20191122083044.6627-4-tzimmermann@suse.de> <20191125091426.GG29965@phenom.ffwll.local> <732b54b3-85cc-1787-2520-95ee95deae9f@suse.de> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wr1-x441.google.com (mail-wr1-x441.google.com [IPv6:2a00:1450:4864:20::441]) by gabe.freedesktop.org (Postfix) with ESMTPS id 901DC8996E for ; Tue, 26 Nov 2019 08:38:47 +0000 (UTC) Received: by mail-wr1-x441.google.com with SMTP id a15so21344438wrf.9 for ; Tue, 26 Nov 2019 00:38:47 -0800 (PST) Content-Disposition: inline In-Reply-To: <732b54b3-85cc-1787-2520-95ee95deae9f@suse.de> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Thomas Zimmermann Cc: airlied@linux.ie, puck.chen@hisilicon.com, yuehaibing@huawei.com, dri-devel@lists.freedesktop.org, z.liuxinliang@hisilicon.com, kong.kongxinwei@hisilicon.com, hslester96@gmail.com, kraxel@redhat.com, zourongrong@gmail.com, sam@ravnborg.org List-Id: dri-devel@lists.freedesktop.org T24gVHVlLCBOb3YgMjYsIDIwMTkgYXQgMDg6NDA6MjdBTSArMDEwMCwgVGhvbWFzIFppbW1lcm1h bm4gd3JvdGU6Cj4gSGkKPiAKPiBBbSAyNS4xMS4xOSB1bSAxMDoxNCBzY2hyaWViIERhbmllbCBW ZXR0ZXI6Cj4gPiBPbiBGcmksIE5vdiAyMiwgMjAxOSBhdCAwOTozMDo0M0FNICswMTAwLCBUaG9t YXMgWmltbWVybWFubiB3cm90ZToKPiA+PiBUaGUgaGlibWMgZHJpdmVyIGFsaWducyBzY2FubGlu ZXMgdG8gMTYgYnl0ZXMuIEFkZGluZyB0aGUgcGl0Y2ggYWxpZ25tZW50Cj4gPj4gYXMgYW4gYXJn dW1lbnQgdG8gZHJtX2dlbV92cmFtX2ZpbGxfY3JlYXRlX2R1bWIoKSBhbGxvd3MgdG8gdXNlIHRo ZSBnZW5lcmljCj4gPj4gaW1wbGVtZW50YXRpb24gd2l0aCBoaWJtYy4gQSB2YWx1ZSBvZiAwIGRp c2FibGVzIHNjYW5saW5lIHBpdGNoZXMuCj4gPj4KPiA+PiBTaWduZWQtb2ZmLWJ5OiBUaG9tYXMg WmltbWVybWFubiA8dHppbW1lcm1hbm5Ac3VzZS5kZT4KPiA+IAo+ID4gSSBjb25jdXIgd2l0aCBT YW0sIHRoZSB2cmFtIGNoYW5nZSBzaG91bGQgYmUgc3BsaXQgb3V0Lgo+ID4gCj4gPj4gLS0tCj4g Pj4gIGRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3ZyYW1faGVscGVyLmMgICAgICAgICB8IDEwICsr LS0KPiA+PiAgLi4uL2dwdS9kcm0vaGlzaWxpY29uL2hpYm1jL2hpYm1jX2RybV9kcnYuaCAgIHwg IDQgLS0KPiA+PiAgZHJpdmVycy9ncHUvZHJtL2hpc2lsaWNvbi9oaWJtYy9oaWJtY190dG0uYyAg IHwgNDggKy0tLS0tLS0tLS0tLS0tLS0tLQo+ID4+ICBpbmNsdWRlL2RybS9kcm1fZ2VtX3ZyYW1f aGVscGVyLmggICAgICAgICAgICAgfCAgMSArCj4gPj4gIDQgZmlsZXMgY2hhbmdlZCwgMTAgaW5z ZXJ0aW9ucygrKSwgNTMgZGVsZXRpb25zKC0pCj4gPj4KPiA+PiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2RybV9nZW1fdnJhbV9oZWxwZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fZ2Vt X3ZyYW1faGVscGVyLmMKPiA+PiBpbmRleCA2NjZjYjRjMjJiYjkuLmYwOTg3ODRlN2RmZCAxMDA2 NDQKPiA+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV92cmFtX2hlbHBlci5jCj4gPj4g KysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fdnJhbV9oZWxwZXIuYwo+ID4+IEBAIC00ODUs NiArNDg1LDcgQEAgRVhQT1JUX1NZTUJPTChkcm1fZ2VtX3ZyYW1fdnVubWFwKTsKPiA+PiAgICog QGRldjoJCXRoZSBEUk0gZGV2aWNlCj4gPj4gICAqIEBiZGV2OgkJdGhlIFRUTSBCTyBkZXZpY2Ug bWFuYWdpbmcgdGhlIGJ1ZmZlciBvYmplY3QKPiA+PiAgICogQHBnX2FsaWduOgkJdGhlIGJ1ZmZl cidzIGFsaWdubWVudCBpbiBtdWx0aXBsZXMgb2YgdGhlIHBhZ2Ugc2l6ZQo+ID4+ICsgKiBAcGl0 Y2hfYWxpZ246CXRoZSBzY2FubGluZSdzIGFsaWdubWVudCBpbiBwb3dlcnMgb2YgMgo+ID4+ICAg KiBAaW50ZXJydXB0aWJsZToJc2xlZXAgaW50ZXJydXB0aWJsZSBpZiB3YWl0aW5nIGZvciBtZW1v cnkKPiA+IAo+ID4gSSBhbHNvIG5vdGljZWQgdGhhdCBubyBvbmUgc2V0cyB0aGlzIHRvIHRydWUs IG5laXRoZXIgaGVyZSBub3IgaW4KPiA+IGRybV9nZW1fdnJhbV9jcmVhdGUoKS4gTWF5YmUgcmVt b3ZlIHRoYXQgdG9vPyBPdGhlcndpc2UgdGhlIGFyZ3VtZW50IGxpc3QKPiA+IGJlY29tZXMgdmVy eSB1bndpZWxkaW5nLiBBbmQgeW91J3JlIGFscmVhZHkgdG91Y2hpbmcgdGhlIChmZXcpIGNhbGxl cnMuCj4gCj4gT0ssIEknbGwgYWRkIHRoaXMgYXMgYSBzZXBhcmF0ZSBwYXRjaC4KClllYWggbWFr ZXMgc2Vuc2UuCgo+IEJUVyBXaGF0J3MgdGhlIERSTSBpbnRlcmZhY2UncyBiZWhhdmlvciB3cnQg aW50ZXJydXB0aW9uPyBGb3IgZXhhbXBsZSwKPiBjYW4gYSBpb2N0bCBjYWxsIGxpa2UgQ1JFQVRF X0RVTUIgcmV0dXJuIEVJTlRSIHRvIHVzZXJzcGFjZT8KCll1cC4gRXZlcnlvbmUgaXMgcmVxdWly ZWQgdG8gdXNlIGRybUlvY3RsKCkgZm9yIGFsbCBkcm0gaW9jdGxzLCB3aGljaAphdXRvLXJlc3Rh cnRzIGFsbCBzeXNjYWxscyB3aGVuIHVzZXJzcGFjZSBzZWVzIGEgRUlOVFIuIFdlIGFsc28gZ2Vu ZXJhbGx5CnRlc3QgdGhhdCBpbiBpZ3QgKGJ1dCBtYXliZSBub3QgZm9yIGFsbCB0aGUga21zIGlv Y3RscywgYXQgbGVhc3Qgbm90IGZvcgp0aGUgZHVtYiBvbmVzKS4KCmludGVycnVwdGlibGUgKyBp Z3RzIHVzaW5nIGlndF93aGlsZV9pbnRlcnJ1cHRpYmxlIGlzIGEgZmFpcmx5IGVmZmVjdGl2ZQp3 YXkgdG8gZXhlcmNpc2UgZXJyb3IgcGF0aHMgaW4gYWxsIGtpbmRzIG9mIHBsYWNlcy4gT25seSB0 cm91YmxlIGlzIHRoYXQKaWYgd2UgaW50cm9kdWNlIGEgbmV3IGludGVycnVwdGlibGUgcG9pbnQg c29tZXdoZXJlIHdlIG1pZ2h0IHJ1biBpbnRvCnVzZXJzcGFjZSB0aGF0IGdldHMgaXQgd3Jvbmcg KGUuZy4gZHVtYiBpb2N0bHMgSSB0aGluayBhcmVuJ3QKaW50ZXJydXB0aWJsZSBvbiBtb3N0IHg4 NiBkcml2ZXJzIHJpZ2h0IG5vdywgc28gdGhlcmUgbWlnaHQgYmUgYSBzdXJwcmlzZQphbmQgd2Ug bmVlZCB0byBhdWRpdCB1c2Vyc3BhY2VzLCBpbmNsdWRpbmcgcGx5bW91dGggYW5kIGFsbCB0aG9z ZSkuCi1EYW5pZWwKCj4gCj4gQmVzdCByZWdhcmRzCj4gVGhvbWFzCj4gCj4gPiAKPiA+PiAgICog QGFyZ3M6CQl0aGUgYXJndW1lbnRzIGFzIHByb3ZpZGVkIHRvIFwKPiA+PiAgCQkJCSZzdHJ1Y3Qg ZHJtX2RyaXZlci5kdW1iX2NyZWF0ZQo+ID4+IEBAIC01MDIsNiArNTAzLDcgQEAgaW50IGRybV9n ZW1fdnJhbV9maWxsX2NyZWF0ZV9kdW1iKHN0cnVjdCBkcm1fZmlsZSAqZmlsZSwKPiA+PiAgCQkJ CSAgc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiA+PiAgCQkJCSAgc3RydWN0IHR0bV9ib19kZXZp Y2UgKmJkZXYsCj4gPj4gIAkJCQkgIHVuc2lnbmVkIGxvbmcgcGdfYWxpZ24sCj4gPj4gKwkJCQkg IHVuc2lnbmVkIGxvbmcgcGl0Y2hfYWxpZ24sCj4gPj4gIAkJCQkgIGJvb2wgaW50ZXJydXB0aWJs ZSwKPiA+PiAgCQkJCSAgc3RydWN0IGRybV9tb2RlX2NyZWF0ZV9kdW1iICphcmdzKQo+ID4+ICB7 Cj4gPj4gQEAgLTUxMCw3ICs1MTIsOSBAQCBpbnQgZHJtX2dlbV92cmFtX2ZpbGxfY3JlYXRlX2R1 bWIoc3RydWN0IGRybV9maWxlICpmaWxlLAo+ID4+ICAJaW50IHJldDsKPiA+PiAgCXUzMiBoYW5k bGU7Cj4gPj4gIAo+ID4+IC0JcGl0Y2ggPSBhcmdzLT53aWR0aCAqICgoYXJncy0+YnBwICsgNykg LyA4KTsKPiA+PiArCXBpdGNoID0gYXJncy0+d2lkdGggKiBESVZfUk9VTkRfVVAoYXJncy0+YnBw LCA4KTsKPiA+PiArCWlmIChwaXRjaF9hbGlnbikKPiA+PiArCQlwaXRjaCA9IEFMSUdOKHBpdGNo LCBwaXRjaF9hbGlnbik7Cj4gPiAKPiA+IE1heWJlIHRocm93IGEgV0FSTl9JUyhpc19wb3QoYWxp Z24pKSBpbiBoZXJlPwo+ID4gCj4gPiBDaGVlcnMsIERhbmllbAo+ID4gCj4gPj4gIAlzaXplID0g cGl0Y2ggKiBhcmdzLT5oZWlnaHQ7Cj4gPj4gIAo+ID4+ICAJc2l6ZSA9IHJvdW5kdXAoc2l6ZSwg UEFHRV9TSVpFKTsKPiA+PiBAQCAtNjEyLDggKzYxNiw4IEBAIGludCBkcm1fZ2VtX3ZyYW1fZHJp dmVyX2R1bWJfY3JlYXRlKHN0cnVjdCBkcm1fZmlsZSAqZmlsZSwKPiA+PiAgCWlmIChXQVJOX09O Q0UoIWRldi0+dnJhbV9tbSwgIlZSQU0gTU0gbm90IGluaXRpYWxpemVkIikpCj4gPj4gIAkJcmV0 dXJuIC1FSU5WQUw7Cj4gPj4gIAo+ID4+IC0JcmV0dXJuIGRybV9nZW1fdnJhbV9maWxsX2NyZWF0 ZV9kdW1iKGZpbGUsIGRldiwgJmRldi0+dnJhbV9tbS0+YmRldiwgMCwKPiA+PiAtCQkJCQkgICAg IGZhbHNlLCBhcmdzKTsKPiA+PiArCXJldHVybiBkcm1fZ2VtX3ZyYW1fZmlsbF9jcmVhdGVfZHVt YihmaWxlLCBkZXYsICZkZXYtPnZyYW1fbW0tPmJkZXYsCj4gPj4gKwkJCQkJICAgICAwLCAwLCBm YWxzZSwgYXJncyk7Cj4gPj4gIH0KPiA+PiAgRVhQT1JUX1NZTUJPTChkcm1fZ2VtX3ZyYW1fZHJp dmVyX2R1bWJfY3JlYXRlKTsKPiA+PiAgCj4gPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9oaXNpbGljb24vaGlibWMvaGlibWNfZHJtX2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2hpc2ls aWNvbi9oaWJtYy9oaWJtY19kcm1fZHJ2LmgKPiA+PiBpbmRleCA4ZWI3MjU4YjIzNmEuLjUwYTBj MWY5ZDIxMSAxMDA2NDQKPiA+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaGlzaWxpY29uL2hpYm1j L2hpYm1jX2RybV9kcnYuaAo+ID4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9oaXNpbGljb24vaGli bWMvaGlibWNfZHJtX2Rydi5oCj4gPj4gQEAgLTE4LDcgKzE4LDYgQEAKPiA+PiAgI2luY2x1ZGUg PGRybS9kcm1fZnJhbWVidWZmZXIuaD4KPiA+PiAgCj4gPj4gIHN0cnVjdCBkcm1fZGV2aWNlOwo+ ID4+IC1zdHJ1Y3QgZHJtX2dlbV9vYmplY3Q7Cj4gPj4gIAo+ID4+ICBzdHJ1Y3QgaGlibWNfZHJt X3ByaXZhdGUgewo+ID4+ICAJLyogaHcgKi8KPiA+PiBAQCAtNDEsOSArNDAsNiBAQCB2b2lkIGhp Ym1jX3NldF9jdXJyZW50X2dhdGUoc3RydWN0IGhpYm1jX2RybV9wcml2YXRlICpwcml2LAo+ID4+ ICBpbnQgaGlibWNfZGVfaW5pdChzdHJ1Y3QgaGlibWNfZHJtX3ByaXZhdGUgKnByaXYpOwo+ID4+ ICBpbnQgaGlibWNfdmRhY19pbml0KHN0cnVjdCBoaWJtY19kcm1fcHJpdmF0ZSAqcHJpdik7Cj4g Pj4gIAo+ID4+IC1pbnQgaGlibWNfZ2VtX2NyZWF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1 MzIgc2l6ZSwgYm9vbCBpc2tlcm5lbCwKPiA+PiAtCQkgICAgIHN0cnVjdCBkcm1fZ2VtX29iamVj dCAqKm9iaik7Cj4gPj4gLQo+ID4+ICBpbnQgaGlibWNfbW1faW5pdChzdHJ1Y3QgaGlibWNfZHJt X3ByaXZhdGUgKmhpYm1jKTsKPiA+PiAgdm9pZCBoaWJtY19tbV9maW5pKHN0cnVjdCBoaWJtY19k cm1fcHJpdmF0ZSAqaGlibWMpOwo+ID4+ICBpbnQgaGlibWNfZHVtYl9jcmVhdGUoc3RydWN0IGRy bV9maWxlICpmaWxlLCBzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ID4+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaGlzaWxpY29uL2hpYm1jL2hpYm1jX3R0bS5jIGIvZHJpdmVycy9ncHUv ZHJtL2hpc2lsaWNvbi9oaWJtYy9oaWJtY190dG0uYwo+ID4+IGluZGV4IGY2ZDI1Yjg1YzIwOS4u MGFmNWQ5NjZhNDgwIDEwMDY0NAo+ID4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9oaXNpbGljb24v aGlibWMvaGlibWNfdHRtLmMKPiA+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaGlzaWxpY29uL2hp Ym1jL2hpYm1jX3R0bS5jCj4gPj4gQEAgLTQ3LDU1ICs0NywxMSBAQCB2b2lkIGhpYm1jX21tX2Zp bmkoc3RydWN0IGhpYm1jX2RybV9wcml2YXRlICpoaWJtYykKPiA+PiAgCWRybV92cmFtX2hlbHBl cl9yZWxlYXNlX21tKGhpYm1jLT5kZXYpOwo+ID4+ICB9Cj4gPj4gIAo+ID4+IC1pbnQgaGlibWNf Z2VtX2NyZWF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1MzIgc2l6ZSwgYm9vbCBpc2tlcm5l bCwKPiA+PiAtCQkgICAgIHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqKm9iaikKPiA+PiAtewo+ID4+ IC0Jc3RydWN0IGRybV9nZW1fdnJhbV9vYmplY3QgKmdibzsKPiA+PiAtCWludCByZXQ7Cj4gPj4g LQo+ID4+IC0JKm9iaiA9IE5VTEw7Cj4gPj4gLQo+ID4+IC0Jc2l6ZSA9IHJvdW5kdXAoc2l6ZSwg UEFHRV9TSVpFKTsKPiA+PiAtCWlmIChzaXplID09IDApCj4gPj4gLQkJcmV0dXJuIC1FSU5WQUw7 Cj4gPj4gLQo+ID4+IC0JZ2JvID0gZHJtX2dlbV92cmFtX2NyZWF0ZShkZXYsICZkZXYtPnZyYW1f bW0tPmJkZXYsIHNpemUsIDAsIGZhbHNlKTsKPiA+PiAtCWlmIChJU19FUlIoZ2JvKSkgewo+ID4+ IC0JCXJldCA9IFBUUl9FUlIoZ2JvKTsKPiA+PiAtCQlpZiAocmV0ICE9IC1FUkVTVEFSVFNZUykK PiA+PiAtCQkJRFJNX0VSUk9SKCJmYWlsZWQgdG8gYWxsb2NhdGUgR0VNIG9iamVjdDogJWRcbiIs IHJldCk7Cj4gPj4gLQkJcmV0dXJuIHJldDsKPiA+PiAtCX0KPiA+PiAtCSpvYmogPSAmZ2JvLT5i by5iYXNlOwo+ID4+IC0JcmV0dXJuIDA7Cj4gPj4gLX0KPiA+PiAtCj4gPj4gIGludCBoaWJtY19k dW1iX2NyZWF0ZShzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGUsIHN0cnVjdCBkcm1fZGV2aWNlICpkZXYs Cj4gPj4gIAkJICAgICAgc3RydWN0IGRybV9tb2RlX2NyZWF0ZV9kdW1iICphcmdzKQo+ID4+ICB7 Cj4gPj4gLQlzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKmdvYmo7Cj4gPj4gLQl1MzIgaGFuZGxlOwo+ ID4+IC0JaW50IHJldDsKPiA+PiAtCj4gPj4gLQlhcmdzLT5waXRjaCA9IEFMSUdOKGFyZ3MtPndp ZHRoICogRElWX1JPVU5EX1VQKGFyZ3MtPmJwcCwgOCksIDE2KTsKPiA+PiAtCWFyZ3MtPnNpemUg PSBhcmdzLT5waXRjaCAqIGFyZ3MtPmhlaWdodDsKPiA+PiAtCj4gPj4gLQlyZXQgPSBoaWJtY19n ZW1fY3JlYXRlKGRldiwgYXJncy0+c2l6ZSwgZmFsc2UsCj4gPj4gLQkJCSAgICAgICAmZ29iaik7 Cj4gPj4gLQlpZiAocmV0KSB7Cj4gPj4gLQkJRFJNX0VSUk9SKCJmYWlsZWQgdG8gY3JlYXRlIEdF TSBvYmplY3Q6ICVkXG4iLCByZXQpOwo+ID4+IC0JCXJldHVybiByZXQ7Cj4gPj4gLQl9Cj4gPj4g LQo+ID4+IC0JcmV0ID0gZHJtX2dlbV9oYW5kbGVfY3JlYXRlKGZpbGUsIGdvYmosICZoYW5kbGUp Owo+ID4+IC0JZHJtX2dlbV9vYmplY3RfcHV0X3VubG9ja2VkKGdvYmopOwo+ID4+IC0JaWYgKHJl dCkgewo+ID4+IC0JCURSTV9FUlJPUigiZmFpbGVkIHRvIHVucmVmZXJlbmNlIEdFTSBvYmplY3Q6 ICVkXG4iLCByZXQpOwo+ID4+IC0JCXJldHVybiByZXQ7Cj4gPj4gLQl9Cj4gPj4gLQo+ID4+IC0J YXJncy0+aGFuZGxlID0gaGFuZGxlOwo+ID4+IC0JcmV0dXJuIDA7Cj4gPj4gKwlyZXR1cm4gZHJt X2dlbV92cmFtX2ZpbGxfY3JlYXRlX2R1bWIoZmlsZSwgZGV2LCAmZGV2LT52cmFtX21tLT5iZGV2 LAo+ID4+ICsJCQkJCSAgICAgMCwgMTYsIGZhbHNlLCBhcmdzKTsKPiA+PiAgfQo+ID4+ICAKPiA+ PiAgY29uc3Qgc3RydWN0IGRybV9tb2RlX2NvbmZpZ19mdW5jcyBoaWJtY19tb2RlX2Z1bmNzID0g ewo+ID4+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2RybS9kcm1fZ2VtX3ZyYW1faGVscGVyLmggYi9p bmNsdWRlL2RybS9kcm1fZ2VtX3ZyYW1faGVscGVyLmgKPiA+PiBpbmRleCBlMDQwNTQxYTEwNWYu LmM2NDJiNGNiNjYwMCAxMDA2NDQKPiA+PiAtLS0gYS9pbmNsdWRlL2RybS9kcm1fZ2VtX3ZyYW1f aGVscGVyLmgKPiA+PiArKysgYi9pbmNsdWRlL2RybS9kcm1fZ2VtX3ZyYW1faGVscGVyLmgKPiA+ PiBAQCAtMTEzLDYgKzExMyw3IEBAIGludCBkcm1fZ2VtX3ZyYW1fZmlsbF9jcmVhdGVfZHVtYihz dHJ1Y3QgZHJtX2ZpbGUgKmZpbGUsCj4gPj4gIAkJCQkgIHN0cnVjdCBkcm1fZGV2aWNlICpkZXYs Cj4gPj4gIAkJCQkgIHN0cnVjdCB0dG1fYm9fZGV2aWNlICpiZGV2LAo+ID4+ICAJCQkJICB1bnNp Z25lZCBsb25nIHBnX2FsaWduLAo+ID4+ICsJCQkJICB1bnNpZ25lZCBsb25nIHBpdGNoX2FsaWdu LAo+ID4+ICAJCQkJICBib29sIGludGVycnVwdGlibGUsCj4gPj4gIAkJCQkgIHN0cnVjdCBkcm1f bW9kZV9jcmVhdGVfZHVtYiAqYXJncyk7Cj4gPj4gIAo+ID4+IC0tIAo+ID4+IDIuMjMuMAo+ID4+ Cj4gPiAKPiAKPiAtLSAKPiBUaG9tYXMgWmltbWVybWFubgo+IEdyYXBoaWNzIERyaXZlciBEZXZl bG9wZXIKPiBTVVNFIFNvZnR3YXJlIFNvbHV0aW9ucyBHZXJtYW55IEdtYkgKPiBNYXhmZWxkc3Ry LiA1LCA5MDQwOSBOw7xybmJlcmcsIEdlcm1hbnkKPiAoSFJCIDM2ODA5LCBBRyBOw7xybmJlcmcp Cj4gR2VzY2jDpGZ0c2bDvGhyZXI6IEZlbGl4IEltZW5kw7ZyZmZlcgo+IAoKCgoKLS0gCkRhbmll bCBWZXR0ZXIKU29mdHdhcmUgRW5naW5lZXIsIEludGVsIENvcnBvcmF0aW9uCmh0dHA6Ly9ibG9n LmZmd2xsLmNoCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f CmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpo dHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbA==