From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH 1/4] drm/hisilicon/hibmc: Switch to generic fbdev emulation Date: Mon, 25 Nov 2019 10:08:15 +0100 Message-ID: <20191125090815.GE29965@phenom.ffwll.local> References: <20191122083044.6627-1-tzimmermann@suse.de> <20191122083044.6627-2-tzimmermann@suse.de> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wr1-x444.google.com (mail-wr1-x444.google.com [IPv6:2a00:1450:4864:20::444]) by gabe.freedesktop.org (Postfix) with ESMTPS id BCB3189ECB for ; Mon, 25 Nov 2019 09:08:19 +0000 (UTC) Received: by mail-wr1-x444.google.com with SMTP id z10so16842149wrs.12 for ; Mon, 25 Nov 2019 01:08:19 -0800 (PST) Content-Disposition: inline In-Reply-To: <20191122083044.6627-2-tzimmermann@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: yuehaibing@huawei.com, airlied@linux.ie, puck.chen@hisilicon.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 T24gRnJpLCBOb3YgMjIsIDIwMTkgYXQgMDk6MzA6NDFBTSArMDEwMCwgVGhvbWFzIFppbW1lcm1h bm4gd3JvdGU6Cj4gVGhlcmUncyBub3RoaW5nIHNwZWNpYWwgYWJvdXQgaGlibWMncyBmYmRldiBl bXVsYXRpb24gdGhhdCBpcyBub3QKPiBwcm92aWRlZCBieSB0aGUgZ2VuZXJpYyBpbXBsZW1lbnRh dGlvbi4gU3dpdGNoIG92ZXIgYW5kIHJlbW92ZSB0aGUKPiBkcml2ZXIncyBjb2RlLgo+IAo+IFNp Z25lZC1vZmYtYnk6IFRob21hcyBaaW1tZXJtYW5uIDx0emltbWVybWFubkBzdXNlLmRlPgo+IC0t LQo+ICBkcml2ZXJzL2dwdS9kcm0vaGlzaWxpY29uL2hpYm1jL01ha2VmaWxlICAgICAgfCAgIDIg Ky0KPiAgLi4uL2dwdS9kcm0vaGlzaWxpY29uL2hpYm1jL2hpYm1jX2RybV9kcnYuYyAgIHwgICA1 ICstCj4gIC4uLi9ncHUvZHJtL2hpc2lsaWNvbi9oaWJtYy9oaWJtY19kcm1fZHJ2LmggICB8ICAx MSAtCj4gIC4uLi9ncHUvZHJtL2hpc2lsaWNvbi9oaWJtYy9oaWJtY19kcm1fZmJkZXYuYyB8IDI0 MCAtLS0tLS0tLS0tLS0tLS0tLS0KPiAgNCBmaWxlcyBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyks IDI1NSBkZWxldGlvbnMoLSkKPiAgZGVsZXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9o aXNpbGljb24vaGlibWMvaGlibWNfZHJtX2ZiZGV2LmMKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2hpc2lsaWNvbi9oaWJtYy9NYWtlZmlsZSBiL2RyaXZlcnMvZ3B1L2RybS9oaXNp bGljb24vaGlibWMvTWFrZWZpbGUKPiBpbmRleCAwYzJkNDI5NmJjY2QuLmY5OTEzMjcxNTU5NyAx MDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaGlzaWxpY29uL2hpYm1jL01ha2VmaWxlCj4g KysrIGIvZHJpdmVycy9ncHUvZHJtL2hpc2lsaWNvbi9oaWJtYy9NYWtlZmlsZQo+IEBAIC0xLDQg KzEsNCBAQAo+ICAjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkKPiAtaGli bWMtZHJtLXkgOj0gaGlibWNfZHJtX2Rydi5vIGhpYm1jX2RybV9kZS5vIGhpYm1jX2RybV92ZGFj Lm8gaGlibWNfZHJtX2ZiZGV2Lm8gaGlibWNfdHRtLm8KPiAraGlibWMtZHJtLXkgOj0gaGlibWNf ZHJtX2Rydi5vIGhpYm1jX2RybV9kZS5vIGhpYm1jX2RybV92ZGFjLm8gaGlibWNfdHRtLm8KPiAg Cj4gIG9iai0kKENPTkZJR19EUk1fSElTSV9ISUJNQykgKz0gaGlibWMtZHJtLm8KPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2hpc2lsaWNvbi9oaWJtYy9oaWJtY19kcm1fZHJ2LmMgYi9k cml2ZXJzL2dwdS9kcm0vaGlzaWxpY29uL2hpYm1jL2hpYm1jX2RybV9kcnYuYwo+IGluZGV4IDJm ZDRjYTkxYTYyZC4uMTEzZDI3YjhhOGYxIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9o aXNpbGljb24vaGlibWMvaGlibWNfZHJtX2Rydi5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2hp c2lsaWNvbi9oaWJtYy9oaWJtY19kcm1fZHJ2LmMKPiBAQCAtMTcsNiArMTcsNyBAQAo+ICAKPiAg I2luY2x1ZGUgPGRybS9kcm1fYXRvbWljX2hlbHBlci5oPgo+ICAjaW5jbHVkZSA8ZHJtL2RybV9k cnYuaD4KPiArI2luY2x1ZGUgPGRybS9kcm1fZmJfaGVscGVyLmg+Cj4gICNpbmNsdWRlIDxkcm0v ZHJtX2dlbV92cmFtX2hlbHBlci5oPgo+ICAjaW5jbHVkZSA8ZHJtL2RybV9pcnEuaD4KPiAgI2lu Y2x1ZGUgPGRybS9kcm1fcHJpbnQuaD4KPiBAQCAtMjQ3LDggKzI0OCw2IEBAIHN0YXRpYyBpbnQg aGlibWNfdW5sb2FkKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gIHsKPiAgCXN0cnVjdCBoaWJt Y19kcm1fcHJpdmF0ZSAqcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4gIAo+IC0JaGlibWNfZmJk ZXZfZmluaShwcml2KTsKPiAtCj4gIAlkcm1fYXRvbWljX2hlbHBlcl9zaHV0ZG93bihkZXYpOwo+ ICAKPiAgCWlmIChkZXYtPmlycV9lbmFibGVkKQo+IEBAIC0zMDcsNyArMzA2LDcgQEAgc3RhdGlj IGludCBoaWJtY19sb2FkKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gIAkvKiByZXNldCBhbGwg dGhlIHN0YXRlcyBvZiBjcnRjL3BsYW5lL2VuY29kZXIvY29ubmVjdG9yICovCj4gIAlkcm1fbW9k ZV9jb25maWdfcmVzZXQoZGV2KTsKPiAgCj4gLQlyZXQgPSBoaWJtY19mYmRldl9pbml0KHByaXYp Owo+ICsJcmV0ID0gZHJtX2ZiZGV2X2dlbmVyaWNfc2V0dXAoZGV2LCAxNik7CgpOaWNlLCArMSBs aW5lLCAtbG90cyBvZiBsaW5lcyEKClJldmlld2VkLWJ5OiBEYW5pZWwgVmV0dGVyIDxkYW5pZWwu dmV0dGVyQGZmd2xsLmNoPgoKPiAgCWlmIChyZXQpIHsKPiAgCQlEUk1fRVJST1IoImZhaWxlZCB0 byBpbml0aWFsaXplIGZiZGV2OiAlZFxuIiwgcmV0KTsKPiAgCQlnb3RvIGVycjsKPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2hpc2lsaWNvbi9oaWJtYy9oaWJtY19kcm1fZHJ2LmggYi9k cml2ZXJzL2dwdS9kcm0vaGlzaWxpY29uL2hpYm1jL2hpYm1jX2RybV9kcnYuaAo+IGluZGV4IGU1 OGVjZDdlZGNmOC4uYjM0NDkzZWFkMzBiIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9o aXNpbGljb24vaGlibWMvaGlibWNfZHJtX2Rydi5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2hp c2lsaWNvbi9oaWJtYy9oaWJtY19kcm1fZHJ2LmgKPiBAQCAtMjUsMTIgKzI1LDYgQEAgc3RydWN0 IGhpYm1jX2ZyYW1lYnVmZmVyIHsKPiAgCXN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqOwo+ICB9 Owo+ICAKPiAtc3RydWN0IGhpYm1jX2ZiZGV2IHsKPiAtCXN0cnVjdCBkcm1fZmJfaGVscGVyIGhl bHBlcjsgLyogbXVzdCBiZSBmaXJzdCAqLwo+IC0Jc3RydWN0IGhpYm1jX2ZyYW1lYnVmZmVyICpm YjsKPiAtCWludCBzaXplOwo+IC19Owo+IC0KPiAgc3RydWN0IGhpYm1jX2RybV9wcml2YXRlIHsK PiAgCS8qIGh3ICovCj4gIAl2b2lkIF9faW9tZW0gICAqbW1pbzsKPiBAQCAtNDIsOSArMzYsNiBA QCBzdHJ1Y3QgaGlibWNfZHJtX3ByaXZhdGUgewo+ICAJLyogZHJtICovCj4gIAlzdHJ1Y3QgZHJt X2RldmljZSAgKmRldjsKPiAgCWJvb2wgbW9kZV9jb25maWdfaW5pdGlhbGl6ZWQ7Cj4gLQo+IC0J LyogZmJkZXYgKi8KPiAtCXN0cnVjdCBoaWJtY19mYmRldiAqZmJkZXY7Cj4gIH07Cj4gIAo+ICAj ZGVmaW5lIHRvX2hpYm1jX2ZyYW1lYnVmZmVyKHgpIGNvbnRhaW5lcl9vZih4LCBzdHJ1Y3QgaGli bWNfZnJhbWVidWZmZXIsIGZiKQo+IEBAIC01Niw4ICs0Nyw2IEBAIHZvaWQgaGlibWNfc2V0X2N1 cnJlbnRfZ2F0ZShzdHJ1Y3QgaGlibWNfZHJtX3ByaXZhdGUgKnByaXYsCj4gIAo+ICBpbnQgaGli bWNfZGVfaW5pdChzdHJ1Y3QgaGlibWNfZHJtX3ByaXZhdGUgKnByaXYpOwo+ICBpbnQgaGlibWNf dmRhY19pbml0KHN0cnVjdCBoaWJtY19kcm1fcHJpdmF0ZSAqcHJpdik7Cj4gLWludCBoaWJtY19m YmRldl9pbml0KHN0cnVjdCBoaWJtY19kcm1fcHJpdmF0ZSAqcHJpdik7Cj4gLXZvaWQgaGlibWNf ZmJkZXZfZmluaShzdHJ1Y3QgaGlibWNfZHJtX3ByaXZhdGUgKnByaXYpOwo+ICAKPiAgaW50IGhp Ym1jX2dlbV9jcmVhdGUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdTMyIHNpemUsIGJvb2wgaXNr ZXJuZWwsCj4gIAkJICAgICBzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKipvYmopOwo+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaGlzaWxpY29uL2hpYm1jL2hpYm1jX2RybV9mYmRldi5jIGIv ZHJpdmVycy9ncHUvZHJtL2hpc2lsaWNvbi9oaWJtYy9oaWJtY19kcm1fZmJkZXYuYwo+IGRlbGV0 ZWQgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IGI0YzFjZWEwNTFlOC4uMDAwMDAwMDAwMDAwCj4g LS0tIGEvZHJpdmVycy9ncHUvZHJtL2hpc2lsaWNvbi9oaWJtYy9oaWJtY19kcm1fZmJkZXYuYwo+ ICsrKyAvZGV2L251bGwKPiBAQCAtMSwyNDAgKzAsMCBAQAo+IC0vLyBTUERYLUxpY2Vuc2UtSWRl bnRpZmllcjogR1BMLTIuMC1vci1sYXRlcgo+IC0vKiBIaXNpbGljb24gSGlibWMgU29DIGRybSBk cml2ZXIKPiAtICoKPiAtICogQmFzZWQgb24gdGhlIGJvY2hzIGRybSBkcml2ZXIuCj4gLSAqCj4g LSAqIENvcHlyaWdodCAoYykgMjAxNiBIdWF3ZWkgTGltaXRlZC4KPiAtICoKPiAtICogQXV0aG9y Ogo+IC0gKglSb25ncm9uZyBab3UgPHpvdXJvbmdyb25nQGh1YXdlaS5jb20+Cj4gLSAqCVJvbmdy b25nIFpvdSA8em91cm9uZ3JvbmdAZ21haWwuY29tPgo+IC0gKglKaWFuaHVhIExpIDxsaWppYW5o dWFAaHVhd2VpLmNvbT4KPiAtICovCj4gLQo+IC0jaW5jbHVkZSA8ZHJtL2RybV9jcnRjLmg+Cj4g LSNpbmNsdWRlIDxkcm0vZHJtX2ZiX2hlbHBlci5oPgo+IC0jaW5jbHVkZSA8ZHJtL2RybV9mb3Vy Y2MuaD4KPiAtI2luY2x1ZGUgPGRybS9kcm1fZ2VtX3ZyYW1faGVscGVyLmg+Cj4gLSNpbmNsdWRl IDxkcm0vZHJtX3Byb2JlX2hlbHBlci5oPgo+IC0KPiAtI2luY2x1ZGUgImhpYm1jX2RybV9kcnYu aCIKPiAtCj4gLXN0YXRpYyBpbnQgaGlibWNmYl9jcmVhdGVfb2JqZWN0KAo+IC0JCQkJc3RydWN0 IGhpYm1jX2RybV9wcml2YXRlICpwcml2LAo+IC0JCQkJY29uc3Qgc3RydWN0IGRybV9tb2RlX2Zi X2NtZDIgKm1vZGVfY21kLAo+IC0JCQkJc3RydWN0IGRybV9nZW1fb2JqZWN0ICoqZ29ial9wKQo+ IC17Cj4gLQlzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKmdvYmo7Cj4gLQlzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2ID0gcHJpdi0+ZGV2Owo+IC0JdTMyIHNpemU7Cj4gLQlpbnQgcmV0ID0gMDsKPiAtCj4g LQlzaXplID0gbW9kZV9jbWQtPnBpdGNoZXNbMF0gKiBtb2RlX2NtZC0+aGVpZ2h0Owo+IC0JcmV0 ID0gaGlibWNfZ2VtX2NyZWF0ZShkZXYsIHNpemUsIHRydWUsICZnb2JqKTsKPiAtCWlmIChyZXQp Cj4gLQkJcmV0dXJuIHJldDsKPiAtCj4gLQkqZ29ial9wID0gZ29iajsKPiAtCXJldHVybiByZXQ7 Cj4gLX0KPiAtCj4gLXN0YXRpYyBzdHJ1Y3QgZmJfb3BzIGhpYm1jX2RybV9mYl9vcHMgPSB7Cj4g LQkub3duZXIgPSBUSElTX01PRFVMRSwKPiAtCS5mYl9jaGVja192YXIgPSBkcm1fZmJfaGVscGVy X2NoZWNrX3ZhciwKPiAtCS5mYl9zZXRfcGFyID0gZHJtX2ZiX2hlbHBlcl9zZXRfcGFyLAo+IC0J LmZiX2ZpbGxyZWN0ID0gZHJtX2ZiX2hlbHBlcl9zeXNfZmlsbHJlY3QsCj4gLQkuZmJfY29weWFy ZWEgPSBkcm1fZmJfaGVscGVyX3N5c19jb3B5YXJlYSwKPiAtCS5mYl9pbWFnZWJsaXQgPSBkcm1f ZmJfaGVscGVyX3N5c19pbWFnZWJsaXQsCj4gLQkuZmJfcGFuX2Rpc3BsYXkgPSBkcm1fZmJfaGVs cGVyX3Bhbl9kaXNwbGF5LAo+IC0JLmZiX2JsYW5rID0gZHJtX2ZiX2hlbHBlcl9ibGFuaywKPiAt CS5mYl9zZXRjbWFwID0gZHJtX2ZiX2hlbHBlcl9zZXRjbWFwLAo+IC19Owo+IC0KPiAtc3RhdGlj IGludCBoaWJtY19kcm1fZmJfY3JlYXRlKHN0cnVjdCBkcm1fZmJfaGVscGVyICpoZWxwZXIsCj4g LQkJCSAgICAgICBzdHJ1Y3QgZHJtX2ZiX2hlbHBlcl9zdXJmYWNlX3NpemUgKnNpemVzKQo+IC17 Cj4gLQlzdHJ1Y3QgaGlibWNfZmJkZXYgKmhpX2ZiZGV2ID0KPiAtCQljb250YWluZXJfb2YoaGVs cGVyLCBzdHJ1Y3QgaGlibWNfZmJkZXYsIGhlbHBlcik7Cj4gLQlzdHJ1Y3QgaGlibWNfZHJtX3By aXZhdGUgKnByaXYgPSBoZWxwZXItPmRldi0+ZGV2X3ByaXZhdGU7Cj4gLQlzdHJ1Y3QgZmJfaW5m byAqaW5mbzsKPiAtCXN0cnVjdCBkcm1fbW9kZV9mYl9jbWQyIG1vZGVfY21kOwo+IC0Jc3RydWN0 IGRybV9nZW1fb2JqZWN0ICpnb2JqID0gTlVMTDsKPiAtCWludCByZXQgPSAwOwo+IC0Jc2l6ZV90 IHNpemU7Cj4gLQl1bnNpZ25lZCBpbnQgYnl0ZXNfcGVyX3BpeGVsOwo+IC0Jc3RydWN0IGRybV9n ZW1fdnJhbV9vYmplY3QgKmdibyA9IE5VTEw7Cj4gLQl2b2lkICpiYXNlOwo+IC0KPiAtCURSTV9E RUJVR19EUklWRVIoInN1cmZhY2Ugd2lkdGgoJWQpLCBoZWlnaHQoJWQpIGFuZCBicHAoJWQpXG4i LAo+IC0JCQkgc2l6ZXMtPnN1cmZhY2Vfd2lkdGgsIHNpemVzLT5zdXJmYWNlX2hlaWdodCwKPiAt CQkJIHNpemVzLT5zdXJmYWNlX2JwcCk7Cj4gLQo+IC0JYnl0ZXNfcGVyX3BpeGVsID0gRElWX1JP VU5EX1VQKHNpemVzLT5zdXJmYWNlX2JwcCwgOCk7Cj4gLQo+IC0JbW9kZV9jbWQud2lkdGggPSBz aXplcy0+c3VyZmFjZV93aWR0aDsKPiAtCW1vZGVfY21kLmhlaWdodCA9IHNpemVzLT5zdXJmYWNl X2hlaWdodDsKPiAtCW1vZGVfY21kLnBpdGNoZXNbMF0gPSBtb2RlX2NtZC53aWR0aCAqIGJ5dGVz X3Blcl9waXhlbDsKPiAtCW1vZGVfY21kLnBpeGVsX2Zvcm1hdCA9IGRybV9tb2RlX2xlZ2FjeV9m Yl9mb3JtYXQoc2l6ZXMtPnN1cmZhY2VfYnBwLAo+IC0JCQkJCQkJICBzaXplcy0+c3VyZmFjZV9k ZXB0aCk7Cj4gLQo+IC0Jc2l6ZSA9IFBBR0VfQUxJR04obW9kZV9jbWQucGl0Y2hlc1swXSAqIG1v ZGVfY21kLmhlaWdodCk7Cj4gLQo+IC0JcmV0ID0gaGlibWNmYl9jcmVhdGVfb2JqZWN0KHByaXYs ICZtb2RlX2NtZCwgJmdvYmopOwo+IC0JaWYgKHJldCkgewo+IC0JCURSTV9FUlJPUigiZmFpbGVk IHRvIGNyZWF0ZSBmYmNvbiBiYWNraW5nIG9iamVjdDogJWRcbiIsIHJldCk7Cj4gLQkJcmV0dXJu IC1FTk9NRU07Cj4gLQl9Cj4gLQo+IC0JZ2JvID0gZHJtX2dlbV92cmFtX29mX2dlbShnb2JqKTsK PiAtCj4gLQlyZXQgPSBkcm1fZ2VtX3ZyYW1fcGluKGdibywgRFJNX0dFTV9WUkFNX1BMX0ZMQUdf VlJBTSk7Cj4gLQlpZiAocmV0KSB7Cj4gLQkJRFJNX0VSUk9SKCJmYWlsZWQgdG8gcGluIGZiY29u OiAlZFxuIiwgcmV0KTsKPiAtCQlnb3RvIG91dF91bnJlZl9nZW07Cj4gLQl9Cj4gLQo+IC0JYmFz ZSA9IGRybV9nZW1fdnJhbV9rbWFwKGdibywgdHJ1ZSwgTlVMTCk7Cj4gLQlpZiAoSVNfRVJSKGJh c2UpKSB7Cj4gLQkJcmV0ID0gUFRSX0VSUihiYXNlKTsKPiAtCQlEUk1fRVJST1IoImZhaWxlZCB0 byBrbWFwIGZiY29uOiAlZFxuIiwgcmV0KTsKPiAtCQlnb3RvIG91dF91bnBpbl9ibzsKPiAtCX0K PiAtCj4gLQlpbmZvID0gZHJtX2ZiX2hlbHBlcl9hbGxvY19mYmkoaGVscGVyKTsKPiAtCWlmIChJ U19FUlIoaW5mbykpIHsKPiAtCQlyZXQgPSBQVFJfRVJSKGluZm8pOwo+IC0JCURSTV9FUlJPUigi ZmFpbGVkIHRvIGFsbG9jYXRlIGZiaTogJWRcbiIsIHJldCk7Cj4gLQkJZ290byBvdXRfcmVsZWFz ZV9mYmk7Cj4gLQl9Cj4gLQo+IC0JaGlfZmJkZXYtPmZiID0gaGlibWNfZnJhbWVidWZmZXJfaW5p dChwcml2LT5kZXYsICZtb2RlX2NtZCwgZ29iaik7Cj4gLQlpZiAoSVNfRVJSKGhpX2ZiZGV2LT5m YikpIHsKPiAtCQlyZXQgPSBQVFJfRVJSKGhpX2ZiZGV2LT5mYik7Cj4gLQkJaGlfZmJkZXYtPmZi ID0gTlVMTDsKPiAtCQlEUk1fRVJST1IoImZhaWxlZCB0byBpbml0aWFsaXplIGZyYW1lYnVmZmVy OiAlZFxuIiwgcmV0KTsKPiAtCQlnb3RvIG91dF9yZWxlYXNlX2ZiaTsKPiAtCX0KPiAtCj4gLQlw cml2LT5mYmRldi0+c2l6ZSA9IHNpemU7Cj4gLQloaV9mYmRldi0+aGVscGVyLmZiID0gJmhpX2Zi ZGV2LT5mYi0+ZmI7Cj4gLQo+IC0JaW5mby0+ZmJvcHMgPSAmaGlibWNfZHJtX2ZiX29wczsKPiAt Cj4gLQlkcm1fZmJfaGVscGVyX2ZpbGxfaW5mbyhpbmZvLCAmcHJpdi0+ZmJkZXYtPmhlbHBlciwg c2l6ZXMpOwo+IC0KPiAtCWluZm8tPnNjcmVlbl9iYXNlID0gYmFzZTsKPiAtCWluZm8tPnNjcmVl bl9zaXplID0gc2l6ZTsKPiAtCj4gLQlpbmZvLT5maXguc21lbV9zdGFydCA9IGdiby0+Ym8ubWVt LmJ1cy5vZmZzZXQgKyBnYm8tPmJvLm1lbS5idXMuYmFzZTsKPiAtCWluZm8tPmZpeC5zbWVtX2xl biA9IHNpemU7Cj4gLQlyZXR1cm4gMDsKPiAtCj4gLW91dF9yZWxlYXNlX2ZiaToKPiAtCWRybV9n ZW1fdnJhbV9rdW5tYXAoZ2JvKTsKPiAtb3V0X3VucGluX2JvOgo+IC0JZHJtX2dlbV92cmFtX3Vu cGluKGdibyk7Cj4gLW91dF91bnJlZl9nZW06Cj4gLQlkcm1fZ2VtX29iamVjdF9wdXRfdW5sb2Nr ZWQoZ29iaik7Cj4gLQo+IC0JcmV0dXJuIHJldDsKPiAtfQo+IC0KPiAtc3RhdGljIHZvaWQgaGli bWNfZmJkZXZfZGVzdHJveShzdHJ1Y3QgaGlibWNfZmJkZXYgKmZiZGV2KQo+IC17Cj4gLQlzdHJ1 Y3QgaGlibWNfZnJhbWVidWZmZXIgKmdmYiA9IGZiZGV2LT5mYjsKPiAtCXN0cnVjdCBkcm1fZmJf aGVscGVyICpmYmggPSAmZmJkZXYtPmhlbHBlcjsKPiAtCj4gLQlkcm1fZmJfaGVscGVyX3VucmVn aXN0ZXJfZmJpKGZiaCk7Cj4gLQo+IC0JZHJtX2ZiX2hlbHBlcl9maW5pKGZiaCk7Cj4gLQo+IC0J aWYgKGdmYikKPiAtCQlkcm1fZnJhbWVidWZmZXJfcHV0KCZnZmItPmZiKTsKPiAtfQo+IC0KPiAt c3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fZmJfaGVscGVyX2Z1bmNzIGhpYm1jX2ZiZGV2X2hlbHBl cl9mdW5jcyA9IHsKPiAtCS5mYl9wcm9iZSA9IGhpYm1jX2RybV9mYl9jcmVhdGUsCj4gLX07Cj4g LQo+IC1pbnQgaGlibWNfZmJkZXZfaW5pdChzdHJ1Y3QgaGlibWNfZHJtX3ByaXZhdGUgKnByaXYp Cj4gLXsKPiAtCWludCByZXQ7Cj4gLQlzdHJ1Y3QgZmJfdmFyX3NjcmVlbmluZm8gKnZhcjsKPiAt CXN0cnVjdCBmYl9maXhfc2NyZWVuaW5mbyAqZml4Owo+IC0Jc3RydWN0IGhpYm1jX2ZiZGV2ICpo aWZiZGV2Owo+IC0KPiAtCWhpZmJkZXYgPSBkZXZtX2t6YWxsb2MocHJpdi0+ZGV2LT5kZXYsIHNp emVvZigqaGlmYmRldiksIEdGUF9LRVJORUwpOwo+IC0JaWYgKCFoaWZiZGV2KSB7Cj4gLQkJRFJN X0VSUk9SKCJmYWlsZWQgdG8gYWxsb2NhdGUgaGlibWNfZmJkZXZcbiIpOwo+IC0JCXJldHVybiAt RU5PTUVNOwo+IC0JfQo+IC0KPiAtCXByaXYtPmZiZGV2ID0gaGlmYmRldjsKPiAtCWRybV9mYl9o ZWxwZXJfcHJlcGFyZShwcml2LT5kZXYsICZoaWZiZGV2LT5oZWxwZXIsCj4gLQkJCSAgICAgICZo aWJtY19mYmRldl9oZWxwZXJfZnVuY3MpOwo+IC0KPiAtCS8qIE5vdyBqdXN0IG9uZSBjcnRjIGFu ZCBvbmUgY2hhbm5lbCAqLwo+IC0JcmV0ID0gZHJtX2ZiX2hlbHBlcl9pbml0KHByaXYtPmRldiwg JmhpZmJkZXYtPmhlbHBlciwgMSk7Cj4gLQlpZiAocmV0KSB7Cj4gLQkJRFJNX0VSUk9SKCJmYWls ZWQgdG8gaW5pdGlhbGl6ZSBmYiBoZWxwZXI6ICVkXG4iLCByZXQpOwo+IC0JCXJldHVybiByZXQ7 Cj4gLQl9Cj4gLQo+IC0JcmV0ID0gZHJtX2ZiX2hlbHBlcl9zaW5nbGVfYWRkX2FsbF9jb25uZWN0 b3JzKCZoaWZiZGV2LT5oZWxwZXIpOwo+IC0JaWYgKHJldCkgewo+IC0JCURSTV9FUlJPUigiZmFp bGVkIHRvIGFkZCBhbGwgY29ubmVjdG9yczogJWRcbiIsIHJldCk7Cj4gLQkJZ290byBmaW5pOwo+ IC0JfQo+IC0KPiAtCXJldCA9IGRybV9mYl9oZWxwZXJfaW5pdGlhbF9jb25maWcoJmhpZmJkZXYt PmhlbHBlciwgMTYpOwo+IC0JaWYgKHJldCkgewo+IC0JCURSTV9FUlJPUigiZmFpbGVkIHRvIHNl dHVwIGluaXRpYWwgY29ubiBjb25maWc6ICVkXG4iLCByZXQpOwo+IC0JCWdvdG8gZmluaTsKPiAt CX0KPiAtCj4gLQl2YXIgPSAmaGlmYmRldi0+aGVscGVyLmZiZGV2LT52YXI7Cj4gLQlmaXggPSAm aGlmYmRldi0+aGVscGVyLmZiZGV2LT5maXg7Cj4gLQo+IC0JRFJNX0RFQlVHX0RSSVZFUigiTWVt YmVyIG9mIGluZm8tPnZhciBpcyA6XG4iCj4gLQkJCSAieHJlcz0lZFxuIgo+IC0JCQkgInlyZXM9 JWRcbiIKPiAtCQkJICJ4cmVzX3ZpcnR1YWw9JWRcbiIKPiAtCQkJICJ5cmVzX3ZpcnR1YWw9JWRc biIKPiAtCQkJICJ4b2Zmc2V0PSVkXG4iCj4gLQkJCSAieW9mZnNldD0lZFxuIgo+IC0JCQkgImJp dHNfcGVyX3BpeGVsPSVkXG4iCj4gLQkJCSAiLi4uXG4iLCB2YXItPnhyZXMsIHZhci0+eXJlcywg dmFyLT54cmVzX3ZpcnR1YWwsCj4gLQkJCSB2YXItPnlyZXNfdmlydHVhbCwgdmFyLT54b2Zmc2V0 LCB2YXItPnlvZmZzZXQsCj4gLQkJCSB2YXItPmJpdHNfcGVyX3BpeGVsKTsKPiAtCURSTV9ERUJV R19EUklWRVIoIk1lbWJlciBvZiBpbmZvLT5maXggaXMgOlxuIgo+IC0JCQkgInNtZW1fc3RhcnQ9 JWx4XG4iCj4gLQkJCSAic21lbV9sZW49JWRcbiIKPiAtCQkJICJ0eXBlPSVkXG4iCj4gLQkJCSAi dHlwZV9hdXg9JWRcbiIKPiAtCQkJICJ2aXN1YWw9JWRcbiIKPiAtCQkJICJ4cGFuc3RlcD0lZFxu Igo+IC0JCQkgInlwYW5zdGVwPSVkXG4iCj4gLQkJCSAieXdyYXBzdGVwPSVkXG4iCj4gLQkJCSAi bGluZV9sZW5ndGg9JWRcbiIKPiAtCQkJICJhY2NlbD0lZFxuIgo+IC0JCQkgImNhcGFiaWxpdGll cz0lZFxuIgo+IC0JCQkgIi4uLlxuIiwgZml4LT5zbWVtX3N0YXJ0LCBmaXgtPnNtZW1fbGVuLCBm aXgtPnR5cGUsCj4gLQkJCSBmaXgtPnR5cGVfYXV4LCBmaXgtPnZpc3VhbCwgZml4LT54cGFuc3Rl cCwKPiAtCQkJIGZpeC0+eXBhbnN0ZXAsIGZpeC0+eXdyYXBzdGVwLCBmaXgtPmxpbmVfbGVuZ3Ro LAo+IC0JCQkgZml4LT5hY2NlbCwgZml4LT5jYXBhYmlsaXRpZXMpOwo+IC0KPiAtCXJldHVybiAw Owo+IC0KPiAtZmluaToKPiAtCWRybV9mYl9oZWxwZXJfZmluaSgmaGlmYmRldi0+aGVscGVyKTsK PiAtCXJldHVybiByZXQ7Cj4gLX0KPiAtCj4gLXZvaWQgaGlibWNfZmJkZXZfZmluaShzdHJ1Y3Qg aGlibWNfZHJtX3ByaXZhdGUgKnByaXYpCj4gLXsKPiAtCWlmICghcHJpdi0+ZmJkZXYpCj4gLQkJ cmV0dXJuOwo+IC0KPiAtCWhpYm1jX2ZiZGV2X2Rlc3Ryb3kocHJpdi0+ZmJkZXYpOwo+IC0JcHJp di0+ZmJkZXYgPSBOVUxMOwo+IC19Cj4gLS0gCj4gMi4yMy4wCj4gCgotLSAKRGFuaWVsIFZldHRl cgpTb2Z0d2FyZSBFbmdpbmVlciwgSW50ZWwgQ29ycG9yYXRpb24KaHR0cDovL2Jsb2cuZmZ3bGwu Y2gKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRl dmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8v bGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVs