From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH V2 1/5] drm/vkms: Add dumb operations Date: Wed, 11 Jul 2018 09:26:31 +0200 Message-ID: <20180711072631.GO3008@phenom.ffwll.local> References: <20180705202119.GA1678@haneen-vb> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-ed1-x544.google.com (mail-ed1-x544.google.com [IPv6:2a00:1450:4864:20::544]) by gabe.freedesktop.org (Postfix) with ESMTPS id B8EC36EBA9 for ; Wed, 11 Jul 2018 07:26:35 +0000 (UTC) Received: by mail-ed1-x544.google.com with SMTP id t2-v6so3815537edr.5 for ; Wed, 11 Jul 2018 00:26:35 -0700 (PDT) Content-Disposition: inline In-Reply-To: <20180705202119.GA1678@haneen-vb> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Haneen Mohammed Cc: dri-devel@lists.freedesktop.org, Rodrigo Siqueira List-Id: dri-devel@lists.freedesktop.org T24gVGh1LCBKdWwgMDUsIDIwMTggYXQgMTE6MjE6MTlQTSArMDMwMCwgSGFuZWVuIE1vaGFtbWVk IHdyb3RlOgo+IE9uIFRodSwgSnVuIDIxLCAyMDE4IGF0IDA5OjE2OjEzQU0gLTAzMDAsIFJvZHJp Z28gU2lxdWVpcmEgd3JvdGU6Cj4gPiBWS01TIGN1cnJlbnRseSBkb2VzIG5vdCBoYW5kbGUgZHVt YiBkYXRhLCBhbmQgYXMgYSBjb25zZXF1ZW5jZSwgaXQgZG9lcwo+ID4gbm90IHByb3ZpZGUgbWVj aGFuaXNtcyBmb3IgaGFuZGxpbmcgZ2VtLiBUaGlzIGNvbW1pdCBhZGRzIHRoZSBuZWNlc3NhcnkK PiA+IHN1cHBvcnQgZm9yIGdlbSBvYmplY3QvaGFuZGxlciBhbmQgdGhlIGR1bWIgZnVuY3Rpb25z Lgo+ID4gCj4gPiBTaWduZWQtb2ZmLWJ5OiBSb2RyaWdvIFNpcXVlaXJhIDxyb2RyaWdvc2lxdWVp cmFtZWxvQGdtYWlsLmNvbT4KPiA+IC0tLQo+IAo+IFRoaXMgbG9va3MgZ29vZCB0byBtZSBleGNl cHQgd2l0aCBtaXNzaW5nIGdlbV9mcmVlX29iamVjdF91bmxvY2tlZCBjYWxsYmFjaywKPiB3aGlj aCBjYXVzZXMgd2FybmluZzogTWVtb3J5IG1hbmFnZXIgbm90IGNsZWFuIGR1cmluZyB0YWtlZG93 bi4gCj4gCj4gTWF5YmUgaXQgd2lsbCBiZSBlYXNpZXIgaWYgd2UgYWRkIHRoaXMgaW4gYW5vdGhl ciBwYXRjaCBpbnN0ZWFkIG9mIGNyZWF0aW5nIHYzIG9mCj4gdGhpcyBwYXRjaHNldD8KCkFoIHRo aXMgaXMgdGhlIHBhdGNoIHNlcmllcyB0aGF0IGRpZG4ndCBsYW5kIHlldCAuLi4KClJvZHJpZ28s IGNhbiB5b3UgcGxzIHJlc3BpbiB3aXRoIHRoZSBpc3N1ZSBmaXhlZCB0aGF0IEhhbmVlbiBzcG90 dGVkPwoKSGFuZWVuLCBjYW4geW91IHBscyByZXZpZXcgdGhlIG90aGVyIHBhdGNoZXMgaW4gdGhp cyBzZXJpZXMgdG9vPwoKQWxzbywgZG8gd2UgaGF2ZSBhbnkgb3RoZXIgcGF0Y2ggc2VyaWVzIHRo YXQncyBub3QgeWV0IGFwcGxpZWQ/IFdpdGggdHdvCmludGVybnMgd29ya2luZyBvbiB0aGUgc2Ft ZSB0aGluZyBpdCdzIGEgYml0IGhhcmRlciB0byBrZWVwIHRyYWNrIG9mIHN0dWZmCi4uLgoKVGhh bmtzLCBEYW5pZWwKCj4gCj4gPiAgZHJpdmVycy9ncHUvZHJtL3ZrbXMvTWFrZWZpbGUgICB8ICAg MiArLQo+ID4gIGRyaXZlcnMvZ3B1L2RybS92a21zL3ZrbXNfZHJ2LmMgfCAgIDkgKysKPiA+ICBk cml2ZXJzL2dwdS9kcm0vdmttcy92a21zX2Rydi5oIHwgIDIxICsrKysKPiA+ICBkcml2ZXJzL2dw dS9kcm0vdmttcy92a21zX2dlbS5jIHwgMTY4ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrCj4gPiAgNCBmaWxlcyBjaGFuZ2VkLCAxOTkgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigt KQo+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vdmttcy92a21zX2dlbS5j Cj4gPiAKPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdmttcy9NYWtlZmlsZSBiL2Ry aXZlcnMvZ3B1L2RybS92a21zL01ha2VmaWxlCj4gPiBpbmRleCAzZjc3NGE2YTljNTguLjk4NjI5 N2RhNTFiZiAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS92a21zL01ha2VmaWxlCj4g PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vdmttcy9NYWtlZmlsZQo+ID4gQEAgLTEsMyArMSwzIEBA Cj4gPiAtdmttcy15IDo9IHZrbXNfZHJ2Lm8gdmttc19wbGFuZS5vIHZrbXNfb3V0cHV0Lm8gdmtt c19jcnRjLm8KPiA+ICt2a21zLXkgOj0gdmttc19kcnYubyB2a21zX3BsYW5lLm8gdmttc19vdXRw dXQubyB2a21zX2NydGMubyB2a21zX2dlbS5vCj4gPiAgCj4gPiAgb2JqLSQoQ09ORklHX0RSTV9W S01TKSArPSB2a21zLm8KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdmttcy92a21z X2Rydi5jIGIvZHJpdmVycy9ncHUvZHJtL3ZrbXMvdmttc19kcnYuYwo+ID4gaW5kZXggNzQwYTRj YmZlZDkxLi42MzhiYWI5MDgzYjUgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vdmtt cy92a21zX2Rydi5jCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vdmttcy92a21zX2Rydi5jCj4g PiBAQCAtMzcsNiArMzcsMTIgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMg dmttc19kcml2ZXJfZm9wcyA9IHsKPiA+ICAJLnJlbGVhc2UJPSBkcm1fcmVsZWFzZSwKPiA+ICB9 Owo+ID4gIAo+ID4gK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgdm1fb3BlcmF0aW9uc19zdHJ1Y3Qgdmtt c19nZW1fdm1fb3BzID0gewo+ID4gKwkuZmF1bHQgPSB2a21zX2dlbV9mYXVsdCwKPiA+ICsJLm9w ZW4gPSBkcm1fZ2VtX3ZtX29wZW4sCj4gPiArCS5jbG9zZSA9IGRybV9nZW1fdm1fY2xvc2UsCj4g PiArfTsKPiA+ICsKPiA+ICBzdGF0aWMgdm9pZCB2a21zX3JlbGVhc2Uoc3RydWN0IGRybV9kZXZp Y2UgKmRldikKPiA+ICB7Cj4gPiAgCXN0cnVjdCB2a21zX2RldmljZSAqdmttcyA9IGNvbnRhaW5l cl9vZihkZXYsIHN0cnVjdCB2a21zX2RldmljZSwgZHJtKTsKPiA+IEBAIC01MCw2ICs1Niw5IEBA IHN0YXRpYyBzdHJ1Y3QgZHJtX2RyaXZlciB2a21zX2RyaXZlciA9IHsKPiA+ICAJLmRyaXZlcl9m ZWF0dXJlcwk9IERSSVZFUl9NT0RFU0VUIHwgRFJJVkVSX0FUT01JQyB8IERSSVZFUl9HRU0sCj4g PiAgCS5yZWxlYXNlCQk9IHZrbXNfcmVsZWFzZSwKPiA+ICAJLmZvcHMJCQk9ICZ2a21zX2RyaXZl cl9mb3BzLAo+ID4gKwkuZHVtYl9jcmVhdGUJCT0gdmttc19kdW1iX2NyZWF0ZSwKPiA+ICsJLmR1 bWJfbWFwX29mZnNldAk9IHZrbXNfZHVtYl9tYXAsCj4gPiArCS5nZW1fdm1fb3BzCQk9ICZ2a21z X2dlbV92bV9vcHMsCj4gPiAgCj4gPiAgCS5uYW1lCQkJPSBEUklWRVJfTkFNRSwKPiA+ICAJLmRl c2MJCQk9IERSSVZFUl9ERVNDLAo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS92a21z L3ZrbXNfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vdmttcy92a21zX2Rydi5oCj4gPiBpbmRleCBi MGY5ZDJlNjFhNDIuLjU0YmIzZGQyYjJjMSAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS92a21zL3ZrbXNfZHJ2LmgKPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS92a21zL3ZrbXNfZHJ2 LmgKPiA+IEBAIC0zLDYgKzMsNyBAQAo+ID4gIAo+ID4gICNpbmNsdWRlIDxkcm0vZHJtUC5oPgo+ ID4gICNpbmNsdWRlIDxkcm0vZHJtLmg+Cj4gPiArI2luY2x1ZGUgPGRybS9kcm1fZ2VtLmg+Cj4g PiAgI2luY2x1ZGUgPGRybS9kcm1fZW5jb2Rlci5oPgo+ID4gIAo+ID4gIHN0YXRpYyBjb25zdCB1 MzIgdmttc19mb3JtYXRzW10gPSB7Cj4gPiBAQCAtMjEsNiArMjIsMTIgQEAgc3RydWN0IHZrbXNf ZGV2aWNlIHsKPiA+ICAJc3RydWN0IHZrbXNfb3V0cHV0IG91dHB1dDsKPiA+ICB9Owo+ID4gIAo+ ID4gK3N0cnVjdCB2a21zX2dlbV9vYmplY3Qgewo+ID4gKwlzdHJ1Y3QgZHJtX2dlbV9vYmplY3Qg Z2VtOwo+ID4gKwlzdHJ1Y3QgbXV0ZXggcGFnZXNfbG9jazsgLyogUGFnZSBsb2NrIHVzZWQgaW4g cGFnZSBmYXVsdCBoYW5kbGVyICovCj4gPiArCXN0cnVjdCBwYWdlICoqcGFnZXM7Cj4gPiArfTsK PiA+ICsKPiA+ICBpbnQgdmttc19jcnRjX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgc3Ry dWN0IGRybV9jcnRjICpjcnRjLAo+ID4gIAkJICAgc3RydWN0IGRybV9wbGFuZSAqcHJpbWFyeSwg c3RydWN0IGRybV9wbGFuZSAqY3Vyc29yKTsKPiA+ICAKPiA+IEBAIC0yOCw0ICszNSwxOCBAQCBp bnQgdmttc19vdXRwdXRfaW5pdChzdHJ1Y3Qgdmttc19kZXZpY2UgKnZrbXNkZXYpOwo+ID4gIAo+ ID4gIHN0cnVjdCBkcm1fcGxhbmUgKnZrbXNfcGxhbmVfaW5pdChzdHJ1Y3Qgdmttc19kZXZpY2Ug KnZrbXNkZXYpOwo+ID4gIAo+ID4gKy8qIEdlbSBzdHVmZiAqLwo+ID4gK3N0cnVjdCBkcm1fZ2Vt X29iamVjdCAqdmttc19nZW1fY3JlYXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gPiArCQkJ CSAgICAgICBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGUsCj4gPiArCQkJCSAgICAgICB1MzIgKmhhbmRs ZSwKPiA+ICsJCQkJICAgICAgIHU2NCBzaXplKTsKPiA+ICsKPiA+ICtpbnQgdmttc19nZW1fZmF1 bHQoc3RydWN0IHZtX2ZhdWx0ICp2bWYpOwo+ID4gKwo+ID4gK2ludCB2a21zX2R1bWJfY3JlYXRl KHN0cnVjdCBkcm1fZmlsZSAqZmlsZSwgc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiA+ICsJCSAg ICAgc3RydWN0IGRybV9tb2RlX2NyZWF0ZV9kdW1iICphcmdzKTsKPiA+ICsKPiA+ICtpbnQgdmtt c19kdW1iX21hcChzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGUsIHN0cnVjdCBkcm1fZGV2aWNlICpkZXYs Cj4gPiArCQkgIHUzMiBoYW5kbGUsIHU2NCAqb2Zmc2V0KTsKPiA+ICsKPiA+ICAjZW5kaWYgLyog X1ZLTVNfRFJWX0hfICovCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3ZrbXMvdmtt c19nZW0uYyBiL2RyaXZlcnMvZ3B1L2RybS92a21zL3ZrbXNfZ2VtLmMKPiA+IG5ldyBmaWxlIG1v ZGUgMTAwNjQ0Cj4gPiBpbmRleCAwMDAwMDAwMDAwMDAuLjlmODIwZjU2YjllMAo+ID4gLS0tIC9k ZXYvbnVsbAo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL3ZrbXMvdmttc19nZW0uYwo+ID4gQEAg LTAsMCArMSwxNjggQEAKPiA+ICsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMAo+ ID4gKy8qCj4gPiArICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk aXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKPiA+ICsgKiBpdCB1bmRlciB0aGUgdGVybXMgb2Yg dGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQo+ID4gKyAqIHRo ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vu c2UsIG9yCj4gPiArICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KPiA+ICsg Ki8KPiA+ICsKPiA+ICsjaW5jbHVkZSA8bGludXgvc2htZW1fZnMuaD4KPiA+ICsKPiA+ICsjaW5j bHVkZSAidmttc19kcnYuaCIKPiA+ICsKPiA+ICtzdGF0aWMgc3RydWN0IHZrbXNfZ2VtX29iamVj dCAqX192a21zX2dlbV9jcmVhdGUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiA+ICsJCQkJCQkg dTY0IHNpemUpCj4gPiArewo+ID4gKwlzdHJ1Y3Qgdmttc19nZW1fb2JqZWN0ICpvYmo7Cj4gPiAr CWludCByZXQ7Cj4gPiArCj4gPiArCW9iaiA9IGt6YWxsb2Moc2l6ZW9mKCpvYmopLCBHRlBfS0VS TkVMKTsKPiA+ICsJaWYgKCFvYmopCj4gPiArCQlyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTsKPiA+ ICsKPiA+ICsJc2l6ZSA9IHJvdW5kdXAoc2l6ZSwgUEFHRV9TSVpFKTsKPiA+ICsJcmV0ID0gZHJt X2dlbV9vYmplY3RfaW5pdChkZXYsICZvYmotPmdlbSwgc2l6ZSk7Cj4gPiArCWlmIChyZXQpIHsK PiA+ICsJCWtmcmVlKG9iaik7Cj4gPiArCQlyZXR1cm4gRVJSX1BUUihyZXQpOwo+ID4gKwl9Cj4g PiArCj4gPiArCW11dGV4X2luaXQoJm9iai0+cGFnZXNfbG9jayk7Cj4gPiArCj4gPiArCXJldHVy biBvYmo7Cj4gPiArfQo+ID4gKwo+ID4gK2ludCB2a21zX2dlbV9mYXVsdChzdHJ1Y3Qgdm1fZmF1 bHQgKnZtZikKPiA+ICt7Cj4gPiArCXN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hID0gdm1mLT52 bWE7Cj4gPiArCXN0cnVjdCB2a21zX2dlbV9vYmplY3QgKm9iaiA9IHZtYS0+dm1fcHJpdmF0ZV9k YXRhOwo+ID4gKwl1bnNpZ25lZCBsb25nIHZhZGRyID0gdm1mLT5hZGRyZXNzOwo+ID4gKwlwZ29m Zl90IHBhZ2Vfb2Zmc2V0Owo+ID4gKwlsb2ZmX3QgbnVtX3BhZ2VzOwo+ID4gKwlpbnQgcmV0Owo+ ID4gKwo+ID4gKwlwYWdlX29mZnNldCA9ICh2YWRkciAtIHZtYS0+dm1fc3RhcnQpID4+IFBBR0Vf U0hJRlQ7Cj4gPiArCW51bV9wYWdlcyA9IERJVl9ST1VORF9VUChvYmotPmdlbS5zaXplLCBQQUdF X1NJWkUpOwo+ID4gKwo+ID4gKwlpZiAocGFnZV9vZmZzZXQgPiBudW1fcGFnZXMpCj4gPiArCQly ZXR1cm4gVk1fRkFVTFRfU0lHQlVTOwo+ID4gKwo+ID4gKwlyZXQgPSAtRU5PRU5UOwo+ID4gKwlt dXRleF9sb2NrKCZvYmotPnBhZ2VzX2xvY2spOwo+ID4gKwlpZiAob2JqLT5wYWdlcykgewo+ID4g KwkJZ2V0X3BhZ2Uob2JqLT5wYWdlc1twYWdlX29mZnNldF0pOwo+ID4gKwkJdm1mLT5wYWdlID0g b2JqLT5wYWdlc1twYWdlX29mZnNldF07Cj4gPiArCQlyZXQgPSAwOwo+ID4gKwl9Cj4gPiArCW11 dGV4X3VubG9jaygmb2JqLT5wYWdlc19sb2NrKTsKPiA+ICsJaWYgKHJldCkgewo+ID4gKwkJc3Ry dWN0IHBhZ2UgKnBhZ2U7Cj4gPiArCQlzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZzsKPiA+ ICsKPiA+ICsJCW1hcHBpbmcgPSBmaWxlX2lub2RlKG9iai0+Z2VtLmZpbHApLT5pX21hcHBpbmc7 Cj4gPiArCQlwYWdlID0gc2htZW1fcmVhZF9tYXBwaW5nX3BhZ2UobWFwcGluZywgcGFnZV9vZmZz ZXQpOwo+ID4gKwo+ID4gKwkJaWYgKCFJU19FUlIocGFnZSkpIHsKPiA+ICsJCQl2bWYtPnBhZ2Ug PSBwYWdlOwo+ID4gKwkJCXJldCA9IDA7Cj4gPiArCQl9IGVsc2Ugewo+ID4gKwkJCXN3aXRjaCAo UFRSX0VSUihwYWdlKSkgewo+ID4gKwkJCWNhc2UgLUVOT1NQQzoKPiA+ICsJCQljYXNlIC1FTk9N RU06Cj4gPiArCQkJCXJldCA9IFZNX0ZBVUxUX09PTTsKPiA+ICsJCQkJYnJlYWs7Cj4gPiArCQkJ Y2FzZSAtRUJVU1k6Cj4gPiArCQkJCXJldCA9IFZNX0ZBVUxUX1JFVFJZOwo+ID4gKwkJCQlicmVh azsKPiA+ICsJCQljYXNlIC1FRkFVTFQ6Cj4gPiArCQkJY2FzZSAtRUlOVkFMOgo+ID4gKwkJCQly ZXQgPSBWTV9GQVVMVF9TSUdCVVM7Cj4gPiArCQkJCWJyZWFrOwo+ID4gKwkJCWRlZmF1bHQ6Cj4g PiArCQkJCVdBUk5fT04oUFRSX0VSUihwYWdlKSk7Cj4gPiArCQkJCXJldCA9IFZNX0ZBVUxUX1NJ R0JVUzsKPiA+ICsJCQkJYnJlYWs7Cj4gPiArCQkJfQo+ID4gKwkJfQo+ID4gKwl9Cj4gPiArCXJl dHVybiByZXQ7Cj4gPiArfQo+ID4gKwo+ID4gK3N0cnVjdCBkcm1fZ2VtX29iamVjdCAqdmttc19n ZW1fY3JlYXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gPiArCQkJCSAgICAgICBzdHJ1Y3Qg ZHJtX2ZpbGUgKmZpbGUsCj4gPiArCQkJCSAgICAgICB1MzIgKmhhbmRsZSwKPiA+ICsJCQkJICAg ICAgIHU2NCBzaXplKQo+ID4gK3sKPiA+ICsJc3RydWN0IHZrbXNfZ2VtX29iamVjdCAqb2JqOwo+ ID4gKwlpbnQgcmV0Owo+ID4gKwo+ID4gKwlpZiAoIWZpbGUgfHwgIWRldiB8fCAhaGFuZGxlKQo+ ID4gKwkJcmV0dXJuIEVSUl9QVFIoLUVJTlZBTCk7Cj4gPiArCj4gPiArCW9iaiA9IF9fdmttc19n ZW1fY3JlYXRlKGRldiwgc2l6ZSk7Cj4gPiArCWlmIChJU19FUlIob2JqKSkKPiA+ICsJCXJldHVy biBFUlJfQ0FTVChvYmopOwo+ID4gKwo+ID4gKwlyZXQgPSBkcm1fZ2VtX2hhbmRsZV9jcmVhdGUo ZmlsZSwgJm9iai0+Z2VtLCBoYW5kbGUpOwo+ID4gKwlkcm1fZ2VtX29iamVjdF9wdXRfdW5sb2Nr ZWQoJm9iai0+Z2VtKTsKPiA+ICsJaWYgKHJldCkgewo+ID4gKwkJZHJtX2dlbV9vYmplY3RfcmVs ZWFzZSgmb2JqLT5nZW0pOwo+ID4gKwkJa2ZyZWUob2JqKTsKPiA+ICsJCXJldHVybiBFUlJfUFRS KHJldCk7Cj4gPiArCX0KPiA+ICsKPiA+ICsJcmV0dXJuICZvYmotPmdlbTsKPiA+ICt9Cj4gPiAr Cj4gPiAraW50IHZrbXNfZHVtYl9jcmVhdGUoc3RydWN0IGRybV9maWxlICpmaWxlLCBzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2LAo+ID4gKwkJICAgICBzdHJ1Y3QgZHJtX21vZGVfY3JlYXRlX2R1bWIg KmFyZ3MpCj4gPiArewo+ID4gKwlzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKmdlbV9vYmo7Cj4gPiAr CXU2NCBwaXRjaCwgc2l6ZTsKPiA+ICsKPiA+ICsJaWYgKCFhcmdzIHx8ICFkZXYgfHwgIWZpbGUp Cj4gPiArCQlyZXR1cm4gLUVJTlZBTDsKPiA+ICsKPiA+ICsJcGl0Y2ggPSBhcmdzLT53aWR0aCAq IERJVl9ST1VORF9VUChhcmdzLT5icHAsIDgpOwo+ID4gKwlzaXplID0gcGl0Y2ggKiBhcmdzLT5o ZWlnaHQ7Cj4gPiArCj4gPiArCWlmICghc2l6ZSkKPiA+ICsJCXJldHVybiAtRUlOVkFMOwo+ID4g Kwo+ID4gKwlnZW1fb2JqID0gdmttc19nZW1fY3JlYXRlKGRldiwgZmlsZSwgJmFyZ3MtPmhhbmRs ZSwgc2l6ZSk7Cj4gPiArCWlmIChJU19FUlIoZ2VtX29iaikpCj4gPiArCQlyZXR1cm4gUFRSX0VS UihnZW1fb2JqKTsKPiA+ICsKPiA+ICsJYXJncy0+c2l6ZSA9IGdlbV9vYmotPnNpemU7Cj4gPiAr CWFyZ3MtPnBpdGNoID0gcGl0Y2g7Cj4gPiArCj4gPiArCURSTV9ERUJVR19EUklWRVIoIkNyZWF0 ZWQgb2JqZWN0IG9mIHNpemUgJWxsZFxuIiwgc2l6ZSk7Cj4gPiArCj4gPiArCXJldHVybiAwOwo+ ID4gK30KPiA+ICsKPiA+ICtpbnQgdmttc19kdW1iX21hcChzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGUs IHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gPiArCQkgIHUzMiBoYW5kbGUsIHU2NCAqb2Zmc2V0 KQo+ID4gK3sKPiA+ICsJc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmo7Cj4gPiArCWludCByZXQ7 Cj4gPiArCj4gPiArCW9iaiA9IGRybV9nZW1fb2JqZWN0X2xvb2t1cChmaWxlLCBoYW5kbGUpOwo+ ID4gKwlpZiAoIW9iaikKPiA+ICsJCXJldHVybiAtRU5PRU5UOwo+ID4gKwo+ID4gKwlpZiAoIW9i ai0+ZmlscCkgewo+ID4gKwkJcmV0ID0gLUVJTlZBTDsKPiA+ICsJCWdvdG8gdW5yZWY7Cj4gPiAr CX0KPiA+ICsKPiA+ICsJcmV0ID0gZHJtX2dlbV9jcmVhdGVfbW1hcF9vZmZzZXQob2JqKTsKPiA+ ICsJaWYgKHJldCkKPiA+ICsJCWdvdG8gdW5yZWY7Cj4gPiArCj4gPiArCSpvZmZzZXQgPSBkcm1f dm1hX25vZGVfb2Zmc2V0X2FkZHIoJm9iai0+dm1hX25vZGUpOwo+ID4gK3VucmVmOgo+ID4gKwlk cm1fZ2VtX29iamVjdF9wdXRfdW5sb2NrZWQob2JqKTsKPiA+ICsKPiA+ICsJcmV0dXJuIHJldDsK PiA+ICt9Cj4gPiAtLSAKPiA+IDIuMTcuMQo+ID4gCgotLSAKRGFuaWVsIFZldHRlcgpTb2Z0d2Fy ZSBFbmdpbmVlciwgSW50ZWwgQ29ycG9yYXRpb24KaHR0cDovL2Jsb2cuZmZ3bGwuY2gKX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxp bmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJl ZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==