From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: References: <20190703153036.14549-1-chris@chris-wilson.co.uk> From: Antonio Argenziano Message-ID: <0bc87241-99e4-882b-7548-893c542d2f77@intel.com> Date: Wed, 3 Jul 2019 08:40:48 -0700 MIME-Version: 1.0 In-Reply-To: <20190703153036.14549-1-chris@chris-wilson.co.uk> Content-Language: en-US Subject: Re: [igt-dev] [PATCH i-g-t] overlay: Drop legacy mmio access List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" To: Chris Wilson , intel-gfx@lists.freedesktop.org Cc: igt-dev@lists.freedesktop.org List-ID: CgpPbiAwMy8wNy8xOSAwODozMCwgQ2hyaXMgV2lsc29uIHdyb3RlOgo+IEJlZm9yZSB0aGUgaTkx NV9wbXUga2VybmVsIGludGVyZmFjZSB3YXMgYXZhaWxhYmxlLCB3ZSBoYWQgdG8gcmVseSBvbgo+ IGRvaW5nIHNvbWUgZGVjaWRlZGx5IGRvZGd5IG1taW8gYWNjZXNzIHRvIHJlZ2lzdGVycy4gSG93 ZXZlciwgbm93IHRoYXQKPiB3ZSBoYXZlIGEgc3RhYmxlIGludGVyZmFjZSB2aWEgcGVyZiBmb3Ig Z3JhYmJpbmcgYWxsIHRoZSBkZXRhaWxzIHdlCj4gbmVlZCwgdGhhdCBhbmQgaXRzIHN1cHBvcnRp bmcgaW5mcmFzdHJ1Y3R1cmUgY2FuIGJlIGRpc2NhcmRlZC4KPiAKPiBTaWduZWQtb2ZmLWJ5OiBD aHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4KPiBDYzogQW50b25pbyBBcmdl bnppYW5vIDxhbnRvbmlvLmFyZ2Vuemlhbm9AaW50ZWwuY29tPgo+IENjOiBUdnJ0a28gVXJzdWxp biA8dHZydGtvLnVyc3VsaW5AbGludXguaW50ZWwuY29tPgoKTEdUTS4KCkFja2VkLWJ5OiBBbnRv bmlvIEFyZ2Vuemlhbm8gPGFudG9uaW8uYXJnZW56aWFub0BpbnRlbC5jb20+Cgo+IC0tLQo+ICAg b3ZlcmxheS9NYWtlZmlsZS5hbSB8ICAgMiAtCj4gICBvdmVybGF5L2dwdS10b3AuYyAgIHwgMTY3 ICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPiAgIG92ZXJsYXkvaWdmeC5jICAgICAgfCAy NjQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPiAgIG92ZXJs YXkvaWdmeC5oICAgICAgfCAgNDQgLS0tLS0tLS0KPiAgIG92ZXJsYXkvbWVzb24uYnVpbGQgfCAg IDEgLQo+ICAgNSBmaWxlcyBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgNDc3IGRlbGV0aW9ucygt KQo+ICAgZGVsZXRlIG1vZGUgMTAwNjQ0IG92ZXJsYXkvaWdmeC5jCj4gICBkZWxldGUgbW9kZSAx MDA2NDQgb3ZlcmxheS9pZ2Z4LmgKPiAKPiBkaWZmIC0tZ2l0IGEvb3ZlcmxheS9NYWtlZmlsZS5h bSBiL292ZXJsYXkvTWFrZWZpbGUuYW0KPiBpbmRleCA1MTY0M2U0OTguLmVlZWRkYmJhNCAxMDA2 NDQKPiAtLS0gYS9vdmVybGF5L01ha2VmaWxlLmFtCj4gKysrIGIvb3ZlcmxheS9NYWtlZmlsZS5h bQo+IEBAIC0zMSw4ICszMSw2IEBAIGludGVsX2dwdV9vdmVybGF5X1NPVVJDRVMgPSBcCj4gICAJ Z3B1LXBlcmYuYyBcCj4gICAJZ3B1LWZyZXEuaCBcCj4gICAJZ3B1LWZyZXEuYyBcCj4gLQlpZ2Z4 LmggXAo+IC0JaWdmeC5jIFwKPiAgIAlvdmVybGF5LmggXAo+ICAgCW92ZXJsYXkuYyBcCj4gICAJ cG93ZXIuaCBcCj4gZGlmZiAtLWdpdCBhL292ZXJsYXkvZ3B1LXRvcC5jIGIvb3ZlcmxheS9ncHUt dG9wLmMKPiBpbmRleCA2MWI4ZjYyZmQuLjZjZWMyZTk0MyAxMDA2NDQKPiAtLS0gYS9vdmVybGF5 L2dwdS10b3AuYwo+ICsrKyBiL292ZXJsYXkvZ3B1LXRvcC5jCj4gQEAgLTMzLDcgKzMzLDYgQEAK PiAgIAo+ICAgI2luY2x1ZGUgImlndF9wZXJmLmgiCj4gICAKPiAtI2luY2x1ZGUgImlnZnguaCIK PiAgICNpbmNsdWRlICJncHUtdG9wLmgiCj4gICAKPiAgICNkZWZpbmUgUklOR19UQUlMICAgICAg MHgwMAo+IEBAIC05OSwxNzYgKzk4LDEyIEBAIHN0YXRpYyBpbnQgcGVyZl9pbml0KHN0cnVjdCBn cHVfdG9wICpndCkKPiAgIAlyZXR1cm4gMDsKPiAgIH0KPiAgIAo+IC1zdHJ1Y3QgbW1pb19yaW5n IHsKPiAtCWludCBpZDsKPiAtCXVpbnQzMl90IGJhc2U7Cj4gLQl2b2lkICptbWlvOwo+IC0JaW50 IGlkbGUsIHdhaXQsIHNlbWE7Cj4gLX07Cj4gLQo+IC1zdGF0aWMgdWludDMyX3QgbW1pb19yaW5n X3JlYWQoc3RydWN0IG1taW9fcmluZyAqcmluZywgdWludDMyX3QgcmVnKQo+IC17Cj4gLQlyZXR1 cm4gaWdmeF9yZWFkKHJpbmctPm1taW8sIHJpbmctPmJhc2UgKyByZWcpOwo+IC19Cj4gLQo+IC1z dGF0aWMgaW50IGhhc19leGVjbGlzdHModm9pZCkKPiAtewo+IC0JaW50IGRldGVjdGVkID0gMDsK PiAtCUZJTEUgKmZpbGU7Cj4gLQo+IC0JZmlsZSA9IGZvcGVuKCIvc3lzL21vZHVsZS9pOTE1L3Bh cmFtZXRlcnMvZW5hYmxlX2V4ZWNsaXN0cyIsICJyIik7Cj4gLQlpZiAoZmlsZSkgewo+IC0JCWlu dCB2YWx1ZTsKPiAtCQlpZiAoZnNjYW5mKGZpbGUsICIlZCIsICZ2YWx1ZSkgPT0gMSkKPiAtCQkJ ZGV0ZWN0ZWQgPSB2YWx1ZSAhPSAwOwo+IC0JCWZjbG9zZShmaWxlKTsKPiAtCX0KPiAtCj4gLQly ZXR1cm4gZGV0ZWN0ZWQ7Cj4gLQo+IC19Cj4gLQo+IC1zdGF0aWMgdm9pZCBtbWlvX3JpbmdfaW5p dChzdHJ1Y3QgbW1pb19yaW5nICpyaW5nLCB2b2lkICptbWlvKQo+IC17Cj4gLQl1aW50MzJfdCBj dGw7Cj4gLQo+IC0JcmluZy0+bW1pbyA9IG1taW87Cj4gLQo+IC0JY3RsID0gbW1pb19yaW5nX3Jl YWQocmluZywgUklOR19DVEwpOwo+IC0JaWYgKChjdGwgJiAxKSA9PSAwICYmICFoYXNfZXhlY2xp c3RzKCkpCj4gLQkJcmluZy0+aWQgPSAtMTsKPiAtfQo+IC0KPiAtc3RhdGljIHZvaWQgbW1pb19y aW5nX3Jlc2V0KHN0cnVjdCBtbWlvX3JpbmcgKnJpbmcpCj4gLXsKPiAtCXJpbmctPmlkbGUgPSAw Owo+IC0JcmluZy0+d2FpdCA9IDA7Cj4gLQlyaW5nLT5zZW1hID0gMDsKPiAtfQo+IC0KPiAtc3Rh dGljIHZvaWQgbW1pb19yaW5nX3NhbXBsZShzdHJ1Y3QgbW1pb19yaW5nICpyaW5nKQo+IC17Cj4g LQl1aW50MzJfdCBoZWFkLCB0YWlsLCBjdGw7Cj4gLQo+IC0JaWYgKHJpbmctPmlkID09IC0xKQo+ IC0JCXJldHVybjsKPiAtCj4gLQloZWFkID0gbW1pb19yaW5nX3JlYWQocmluZywgUklOR19IRUFE KSAmIEFERFJfTUFTSzsKPiAtCXRhaWwgPSBtbWlvX3JpbmdfcmVhZChyaW5nLCBSSU5HX1RBSUwp ICYgQUREUl9NQVNLOwo+IC0JcmluZy0+aWRsZSArPSBoZWFkID09IHRhaWw7Cj4gLQo+IC0JY3Rs ID0gbW1pb19yaW5nX3JlYWQocmluZywgUklOR19DVEwpOwo+IC0JcmluZy0+d2FpdCArPSAhIShj dGwgJiBSSU5HX1dBSVQpOwo+IC0JcmluZy0+c2VtYSArPSAhIShjdGwgJiBSSU5HX1dBSVRfU0VN QVBIT1JFKTsKPiAtfQo+IC0KPiAtc3RhdGljIHZvaWQgbW1pb19yaW5nX2VtaXQoc3RydWN0IG1t aW9fcmluZyAqcmluZywgaW50IHNhbXBsZXMsIHVuaW9uIGdwdV90b3BfcGF5bG9hZCAqcGF5bG9h ZCkKPiAtewo+IC0JaWYgKHJpbmctPmlkID09IC0xKQo+IC0JCXJldHVybjsKPiAtCj4gLQlwYXls b2FkW3JpbmctPmlkXS51LmJ1c3kgPSAxMDAgLSAxMDAgKiByaW5nLT5pZGxlIC8gc2FtcGxlczsK PiAtCXBheWxvYWRbcmluZy0+aWRdLnUud2FpdCA9IDEwMCAqIHJpbmctPndhaXQgLyBzYW1wbGVz Owo+IC0JcGF5bG9hZFtyaW5nLT5pZF0udS5zZW1hID0gMTAwICogcmluZy0+c2VtYSAvIHNhbXBs ZXM7Cj4gLX0KPiAtCj4gLXN0YXRpYyB2b2lkIG1taW9faW5pdChzdHJ1Y3QgZ3B1X3RvcCAqZ3Qp Cj4gLXsKPiAtCXN0cnVjdCBtbWlvX3JpbmcgcmVuZGVyX3JpbmcgPSB7Cj4gLQkJLmJhc2UgPSAw eDIwMzAsCj4gLQkJLmlkID0gMCwKPiAtCX0sIGJzZF9yaW5nID0gewo+IC0JCS5iYXNlID0gMHg0 MDMwLAo+IC0JCS5pZCA9IDEsCj4gLQl9LCBic2Q2X3JpbmcgPSB7Cj4gLQkJLmJhc2UgPSAweDEy MDMwLAo+IC0JCS5pZCA9IDEsCj4gLQl9LCBibHRfcmluZyA9IHsKPiAtCQkuYmFzZSA9IDB4MjIw MzAsCj4gLQkJLmlkID0gMiwKPiAtCX07Cj4gLQljb25zdCBzdHJ1Y3QgaWdmeF9pbmZvICppbmZv Owo+IC0Jc3RydWN0IHBjaV9kZXZpY2UgKmlnZng7Cj4gLQl2b2lkICptbWlvOwo+IC0JaW50IGZk WzJdLCBpOwo+IC0KPiAtCWlnZnggPSBpZ2Z4X2dldCgpOwo+IC0JaWYgKCFpZ2Z4KQo+IC0JCXJl dHVybjsKPiAtCj4gLQlpZiAocGlwZShmZCkgPCAwKQo+IC0JCXJldHVybjsKPiAtCj4gLQlpbmZv ID0gaWdmeF9nZXRfaW5mbyhpZ2Z4KTsKPiAtCj4gLQlzd2l0Y2ggKGZvcmsoKSkgewo+IC0JY2Fz ZSAtMTogcmV0dXJuOwo+IC0JZGVmYXVsdDoKPiAtCQkgZmNudGwoZmRbMF0sIEZfU0VURkwsIGZj bnRsKGZkWzBdLCBGX0dFVEZMKSB8IE9fTk9OQkxPQ0spOwo+IC0JCSBndC0+ZmQgPSBmZFswXTsK PiAtCQkgZ3QtPnR5cGUgPSBNTUlPOwo+IC0JCSBndC0+cmluZ1swXS5uYW1lID0gInJlbmRlciI7 Cj4gLQkJIGd0LT5udW1fcmluZ3MgPSAxOwo+IC0JCSBpZiAoaW5mby0+Z2VuID49IDA0MCkgewo+ IC0JCQkgZ3QtPnJpbmdbMV0ubmFtZSA9ICJiaXRzdHJlYW0iOwo+IC0JCQkgZ3QtPm51bV9yaW5n cysrOwo+IC0JCSB9Cj4gLQkJIGlmIChpbmZvLT5nZW4gPj0gMDYwKSB7Cj4gLQkJCSBndC0+cmlu Z1syXS5uYW1lID0gImJsdCI7Cj4gLQkJCSBndC0+bnVtX3JpbmdzKys7Cj4gLQkJIH0KPiAtCQkg Y2xvc2UoZmRbMV0pOwo+IC0JCSByZXR1cm47Cj4gLQljYXNlIDA6Cj4gLQkJIGNsb3NlKGZkWzBd KTsKPiAtCQkgYnJlYWs7Cj4gLQl9Cj4gLQo+IC0JbW1pbyA9IGlnZnhfZ2V0X21taW8oaWdmeCk7 Cj4gLQlpZiAobW1pbyA9PSBOVUxMKQo+IC0JCWV4aXQoMTI3KTsKPiAtCj4gLQltbWlvX3Jpbmdf aW5pdCgmcmVuZGVyX3JpbmcsIG1taW8pOwo+IC0JaWYgKGluZm8tPmdlbiA+PSAwNjApIHsKPiAt CQlic2RfcmluZyA9IGJzZDZfcmluZzsKPiAtCQltbWlvX3JpbmdfaW5pdCgmYmx0X3JpbmcsIG1t aW8pOwo+IC0JfQo+IC0JaWYgKGluZm8tPmdlbiA+PSAwNDApIHsKPiAtCQltbWlvX3JpbmdfaW5p dCgmYnNkX3JpbmcsIG1taW8pOwo+IC0JfQo+IC0KPiAtCWZvciAoOzspIHsKPiAtCQl1bmlvbiBn cHVfdG9wX3BheWxvYWQgcGF5bG9hZFtNQVhfUklOR1NdOwo+IC0KPiAtCQltbWlvX3JpbmdfcmVz ZXQoJnJlbmRlcl9yaW5nKTsKPiAtCQltbWlvX3JpbmdfcmVzZXQoJmJzZF9yaW5nKTsKPiAtCQlt bWlvX3JpbmdfcmVzZXQoJmJsdF9yaW5nKTsKPiAtCj4gLQkJZm9yIChpID0gMDsgaSA8IDEwMDA7 IGkrKykgewo+IC0JCQltbWlvX3Jpbmdfc2FtcGxlKCZyZW5kZXJfcmluZyk7Cj4gLQkJCW1taW9f cmluZ19zYW1wbGUoJmJzZF9yaW5nKTsKPiAtCQkJbW1pb19yaW5nX3NhbXBsZSgmYmx0X3Jpbmcp Owo+IC0JCQl1c2xlZXAoMTAwMCk7Cj4gLQkJfQo+IC0KPiAtCQltZW1zZXQocGF5bG9hZCwgMCwg c2l6ZW9mKHBheWxvYWQpKTsKPiAtCQltbWlvX3JpbmdfZW1pdCgmcmVuZGVyX3JpbmcsIDEwMDAs IHBheWxvYWQpOwo+IC0JCW1taW9fcmluZ19lbWl0KCZic2RfcmluZywgMTAwMCwgcGF5bG9hZCk7 Cj4gLQkJbW1pb19yaW5nX2VtaXQoJmJsdF9yaW5nLCAxMDAwLCBwYXlsb2FkKTsKPiAtCQlhc3Nl cnQod3JpdGUoZmRbMV0sIHBheWxvYWQsIHNpemVvZihwYXlsb2FkKSkKPiAtCQkgICAgICAgPT0g c2l6ZW9mKHBheWxvYWQpKTsKPiAtCX0KPiAtfQo+IC0KPiAgIHZvaWQgZ3B1X3RvcF9pbml0KHN0 cnVjdCBncHVfdG9wICpndCkKPiAgIHsKPiAgIAltZW1zZXQoZ3QsIDAsIHNpemVvZigqZ3QpKTsK PiAgIAlndC0+ZmQgPSAtMTsKPiAgIAo+IC0JaWYgKHBlcmZfaW5pdChndCkgPT0gMCkKPiAtCQly ZXR1cm47Cj4gLQo+IC0JbW1pb19pbml0KGd0KTsKPiArCXBlcmZfaW5pdChndCk7Cj4gICB9Cj4g ICAKPiAgIGludCBncHVfdG9wX3VwZGF0ZShzdHJ1Y3QgZ3B1X3RvcCAqZ3QpCj4gZGlmZiAtLWdp dCBhL292ZXJsYXkvaWdmeC5jIGIvb3ZlcmxheS9pZ2Z4LmMKPiBkZWxldGVkIGZpbGUgbW9kZSAx MDA2NDQKPiBpbmRleCA2ZDgyYmM4ZDMuLjAwMDAwMDAwMAo+IC0tLSBhL292ZXJsYXkvaWdmeC5j Cj4gKysrIC9kZXYvbnVsbAo+IEBAIC0xLDI2NCArMCwwIEBACj4gLS8qCj4gLSAqIENvcHlyaWdo dCDCqSAyMDEzIEludGVsIENvcnBvcmF0aW9uCj4gLSAqCj4gLSAqIFBlcm1pc3Npb24gaXMgaGVy ZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCj4g LSAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZp bGVzICh0aGUgIlNvZnR3YXJlIiksCj4gLSAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhv dXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KPiAtICogdGhlIHJp Z2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1 YmxpY2Vuc2UsCj4gLSAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0 byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQo+IC0gKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQg dG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgo+IC0gKgo+IC0g KiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSAo aW5jbHVkaW5nIHRoZSBuZXh0Cj4gLSAqIHBhcmFncmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4g YWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUKPiAtICogU29mdHdhcmUu Cj4gLSAqCj4gLSAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdB UlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCj4gLSAqIElNUExJRUQsIElOQ0xVRElORyBC VVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAo+IC0g KiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAg SU4gTk8gRVZFTlQgU0hBTEwKPiAtICogVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMg QkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKPiAtICogTElBQklMSVRZ LCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFS SVNJTkcKPiAtICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdB UkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUwo+IC0gKiBJTiBUSEUgU09GVFdBUkUuCj4g LSAqCj4gLSAqLwo+IC0KPiAtI2luY2x1ZGUgPHBjaWFjY2Vzcy5oPgo+IC0jaW5jbHVkZSA8c3lz L3N0YXQuaD4KPiAtI2luY2x1ZGUgPHVuaXN0ZC5oPgo+IC0jaW5jbHVkZSA8ZmNudGwuaD4KPiAt I2luY2x1ZGUgPHN0ZGlvLmg+Cj4gLQo+IC0jaW5jbHVkZSAiaWdmeC5oIgo+IC0jaW5jbHVkZSAi Li4vbGliL2k5MTVfcGNpaWRzLmgiCj4gLQo+IC1zdGF0aWMgY29uc3Qgc3RydWN0IGlnZnhfaW5m byBnZW5lcmljX2luZm8gPSB7Cj4gLQkuZ2VuID0gLTEsCj4gLX07Cj4gLQo+IC0jaWYgMAo+IC1z dGF0aWMgY29uc3Qgc3RydWN0IGlnZnhfaW5mbyBpODF4X2luZm8gPSB7Cj4gLQkuZ2VuID0gMDEw LAo+IC19Owo+IC0jZW5kaWYKPiAtCj4gLXN0YXRpYyBjb25zdCBzdHJ1Y3QgaWdmeF9pbmZvIGk4 MzBfaW5mbyA9IHsKPiAtCS5nZW4gPSAwMjAsCj4gLX07Cj4gLXN0YXRpYyBjb25zdCBzdHJ1Y3Qg aWdmeF9pbmZvIGk4NDVfaW5mbyA9IHsKPiAtCS5nZW4gPSAwMjAsCj4gLX07Cj4gLXN0YXRpYyBj b25zdCBzdHJ1Y3QgaWdmeF9pbmZvIGk4NTVfaW5mbyA9IHsKPiAtCS5nZW4gPSAwMjEsCj4gLX07 Cj4gLXN0YXRpYyBjb25zdCBzdHJ1Y3QgaWdmeF9pbmZvIGk4NjVfaW5mbyA9IHsKPiAtCS5nZW4g PSAwMjIsCj4gLX07Cj4gLQo+IC1zdGF0aWMgY29uc3Qgc3RydWN0IGlnZnhfaW5mbyBpOTE1X2lu Zm8gPSB7Cj4gLQkuZ2VuID0gMDMwLAo+IC19Owo+IC1zdGF0aWMgY29uc3Qgc3RydWN0IGlnZnhf aW5mbyBpOTQ1X2luZm8gPSB7Cj4gLQkuZ2VuID0gMDMxLAo+IC19Owo+IC0KPiAtc3RhdGljIGNv bnN0IHN0cnVjdCBpZ2Z4X2luZm8gZzMzX2luZm8gPSB7Cj4gLQkuZ2VuID0gMDMzLAo+IC19Owo+ IC0KPiAtc3RhdGljIGNvbnN0IHN0cnVjdCBpZ2Z4X2luZm8gaTk2NV9pbmZvID0gewo+IC0JLmdl biA9IDA0MCwKPiAtfTsKPiAtCj4gLXN0YXRpYyBjb25zdCBzdHJ1Y3QgaWdmeF9pbmZvIGc0eF9p bmZvID0gewo+IC0JLmdlbiA9IDA0NSwKPiAtfTsKPiAtCj4gLXN0YXRpYyBjb25zdCBzdHJ1Y3Qg aWdmeF9pbmZvIGlyb25sYWtlX2luZm8gPSB7Cj4gLQkuZ2VuID0gMDUwLAo+IC19Owo+IC0KPiAt c3RhdGljIGNvbnN0IHN0cnVjdCBpZ2Z4X2luZm8gc2FuZHlicmlkZ2VfaW5mbyA9IHsKPiAtCS5n ZW4gPSAwNjAsCj4gLX07Cj4gLQo+IC1zdGF0aWMgY29uc3Qgc3RydWN0IGlnZnhfaW5mbyBpdnli cmlkZ2VfaW5mbyA9IHsKPiAtCS5nZW4gPSAwNzAsCj4gLX07Cj4gLQo+IC1zdGF0aWMgY29uc3Qg c3RydWN0IGlnZnhfaW5mbyB2YWxsZXl2aWV3X2luZm8gPSB7Cj4gLQkuZ2VuID0gMDcxLAo+IC19 Owo+IC0KPiAtc3RhdGljIGNvbnN0IHN0cnVjdCBpZ2Z4X2luZm8gaGFzd2VsbF9pbmZvID0gewo+ IC0JLmdlbiA9IDA3NSwKPiAtfTsKPiAtCj4gLXN0YXRpYyBjb25zdCBzdHJ1Y3QgaWdmeF9pbmZv IGJyb2Fkd2VsbF9pbmZvID0gewo+IC0JLmdlbiA9IDAxMDAsCj4gLX07Cj4gLQo+IC1zdGF0aWMg Y29uc3Qgc3RydWN0IGlnZnhfaW5mbyBjaGVycnl2aWV3X2luZm8gPSB7Cj4gLQkuZ2VuID0gMDEw MSwKPiAtfTsKPiAtCj4gLXN0YXRpYyBjb25zdCBzdHJ1Y3QgaWdmeF9pbmZvIHNreWxha2VfaW5m byA9IHsKPiAtCS5nZW4gPSAwMTEwLAo+IC19Owo+IC0KPiAtc3RhdGljIGNvbnN0IHN0cnVjdCBp Z2Z4X2luZm8gYnJveHRvbl9pbmZvID0gewo+IC0JLmdlbiA9IDAxMTEsCj4gLX07Cj4gLQo+IC1z dGF0aWMgY29uc3Qgc3RydWN0IHBjaV9pZF9tYXRjaCBtYXRjaFtdID0gewo+IC0jaWYgMAo+IC0J SU5URUxfVkdBX0RFVklDRShQQ0lfQ0hJUF9JODEwLCAmaTgxeF9pbmZvKSwKPiAtCUlOVEVMX1ZH QV9ERVZJQ0UoUENJX0NISVBfSTgxMF9EQzEwMCwgJmk4MXhfaW5mbyksCj4gLQlJTlRFTF9WR0Ff REVWSUNFKFBDSV9DSElQX0k4MTBfRSwgJmk4MXhfaW5mbyksCj4gLQlJTlRFTF9WR0FfREVWSUNF KFBDSV9DSElQX0k4MTUsICZpODF4X2luZm8pLAo+IC0jZW5kaWYKPiAtCj4gLQlJTlRFTF9JODMw X0lEUygmaTgzMF9pbmZvKSwKPiAtCUlOVEVMX0k4NDVHX0lEUygmaTg0NV9pbmZvKSwKPiAtCUlO VEVMX0k4NVhfSURTKCZpODU1X2luZm8pLAo+IC0JSU5URUxfSTg2NUdfSURTKCZpODY1X2luZm8p LAo+IC0KPiAtCUlOVEVMX0k5MTVHX0lEUygmaTkxNV9pbmZvKSwKPiAtCUlOVEVMX0k5MTVHTV9J RFMoJmk5MTVfaW5mbyksCj4gLQlJTlRFTF9JOTQ1R19JRFMoJmk5NDVfaW5mbyksCj4gLQlJTlRF TF9JOTQ1R01fSURTKCZpOTQ1X2luZm8pLAo+IC0KPiAtCUlOVEVMX0czM19JRFMoJmczM19pbmZv KSwKPiAtCUlOVEVMX1BJTkVWSUVXX0lEUygmZzMzX2luZm8pLAo+IC0KPiAtCUlOVEVMX0k5NjVH X0lEUygmaTk2NV9pbmZvKSwKPiAtCUlOVEVMX0k5NjVHTV9JRFMoJmk5NjVfaW5mbyksCj4gLQo+ IC0JSU5URUxfRzQ1X0lEUygmZzR4X2luZm8pLAo+IC0JSU5URUxfR000NV9JRFMoJmc0eF9pbmZv KSwKPiAtCj4gLQlJTlRFTF9JUk9OTEFLRV9EX0lEUygmaXJvbmxha2VfaW5mbyksCj4gLQlJTlRF TF9JUk9OTEFLRV9NX0lEUygmaXJvbmxha2VfaW5mbyksCj4gLQo+IC0JSU5URUxfU05CX0RfSURT KCZzYW5keWJyaWRnZV9pbmZvKSwKPiAtCUlOVEVMX1NOQl9NX0lEUygmc2FuZHlicmlkZ2VfaW5m byksCj4gLQo+IC0JSU5URUxfSVZCX0RfSURTKCZpdnlicmlkZ2VfaW5mbyksCj4gLQlJTlRFTF9J VkJfTV9JRFMoJml2eWJyaWRnZV9pbmZvKSwKPiAtCj4gLQlJTlRFTF9IU1dfSURTKCZoYXN3ZWxs X2luZm8pLAo+IC0KPiAtCUlOVEVMX1ZMVl9JRFMoJnZhbGxleXZpZXdfaW5mbyksCj4gLQo+IC0J SU5URUxfQkRXX0lEUygmYnJvYWR3ZWxsX2luZm8pLAo+IC0KPiAtCUlOVEVMX0NIVl9JRFMoJmNo ZXJyeXZpZXdfaW5mbyksCj4gLQo+IC0JSU5URUxfU0tMX0lEUygmc2t5bGFrZV9pbmZvKSwKPiAt CUlOVEVMX0JYVF9JRFMoJmJyb3h0b25faW5mbyksCj4gLQo+IC0JSU5URUxfVkdBX0RFVklDRShQ Q0lfTUFUQ0hfQU5ZLCAmZ2VuZXJpY19pbmZvKSwKPiAtCj4gLQl7IDAsIDAsIDAgfSwKPiAtfTsK PiAtCj4gLXN0cnVjdCBwY2lfZGV2aWNlICppZ2Z4X2dldCh2b2lkKQo+IC17Cj4gLQlzdHJ1Y3Qg cGNpX2RldmljZSAqZGV2Owo+IC0KPiAtCWlmIChwY2lfc3lzdGVtX2luaXQoKSkKPiAtCQlyZXR1 cm4gMDsKPiAtCj4gLQlkZXYgPSBwY2lfZGV2aWNlX2ZpbmRfYnlfc2xvdCgwLCAwLCAyLCAwKTsK PiAtCWlmIChkZXYgPT0gTlVMTCB8fCBkZXYtPnZlbmRvcl9pZCAhPSAweDgwODYpIHsKPiAtCQlz dHJ1Y3QgcGNpX2RldmljZV9pdGVyYXRvciAqaXRlcjsKPiAtCj4gLQkJaXRlciA9IHBjaV9pZF9t YXRjaF9pdGVyYXRvcl9jcmVhdGUobWF0Y2gpOwo+IC0JCWlmICghaXRlcikKPiAtCQkJcmV0dXJu IDA7Cj4gLQo+IC0JCWRldiA9IHBjaV9kZXZpY2VfbmV4dChpdGVyKTsKPiAtCQlwY2lfaXRlcmF0 b3JfZGVzdHJveShpdGVyKTsKPiAtCX0KPiAtCj4gLQlyZXR1cm4gZGV2Owo+IC19Cj4gLQo+IC1j b25zdCBzdHJ1Y3QgaWdmeF9pbmZvICppZ2Z4X2dldF9pbmZvKHN0cnVjdCBwY2lfZGV2aWNlICpk ZXYpCj4gLXsKPiAtCWludCBpOwo+IC0KPiAtCWlmICghZGV2KQo+IC0JCXJldHVybiAwOwo+IC0K PiAtCWZvciAoaSA9IDA7IG1hdGNoW2ldLmRldmljZV9pZCAhPSBQQ0lfTUFUQ0hfQU5ZOyBpKysp Cj4gLQkJaWYgKGRldi0+ZGV2aWNlX2lkID09IG1hdGNoW2ldLmRldmljZV9pZCkKPiAtCQkJcmV0 dXJuIChjb25zdCBzdHJ1Y3QgaWdmeF9pbmZvICopbWF0Y2hbaV0ubWF0Y2hfZGF0YTsKPiAtCj4g LQlyZXR1cm4gJmdlbmVyaWNfaW5mbzsKPiAtfQo+IC0KPiAtc3RhdGljIGludCBmb3JjZXdha2Ug PSAtMTsKPiAtCj4gLXN0YXRpYyB2b2lkCj4gLWlnZnhfZm9yY2V3YWtlKHZvaWQpCj4gLXsKPiAt CWNoYXIgYnVmWzEwMjRdOwo+IC0JY29uc3QgY2hhciAqcGF0aFtdID0gewo+IC0JCSIvc3lzL2tl cm5lbC9kZWJ1Zy9kcmkvIiwKPiAtCQkiL2RlYnVnL2RyaS8iLAo+IC0JCTAsCj4gLQl9Owo+IC0J aW50IGksIGo7Cj4gLQo+IC0JZm9yIChqID0gMDsgcGF0aFtqXTsgaisrKSB7Cj4gLQkJc3RydWN0 IHN0YXQgc3Q7Cj4gLQo+IC0JCWlmIChzdGF0KHBhdGhbal0sICZzdCkpCj4gLQkJCWNvbnRpbnVl Owo+IC0KPiAtCQlmb3IgKGkgPSAwOyBpIDwgMTY7IGkrKykgewo+IC0JCQlzbnByaW50ZihidWYs IHNpemVvZihidWYpLAo+IC0JCQkJICIlcy8laS9pOTE1X2ZvcmNld2FrZV91c2VyIiwKPiAtCQkJ CSBwYXRoW2pdLCBpKTsKPiAtCQkJZm9yY2V3YWtlID0gb3BlbihidWYsIDApOwo+IC0JCQlpZiAo Zm9yY2V3YWtlICE9IC0xKQo+IC0JCQkJcmV0dXJuOwo+IC0JCX0KPiAtCX0KPiAtfQo+IC0KPiAt dm9pZCAqaWdmeF9nZXRfbW1pbyhzdHJ1Y3QgcGNpX2RldmljZSAqZGV2KQo+IC17Cj4gLQljb25z dCBzdHJ1Y3QgaWdmeF9pbmZvICppbmZvOwo+IC0JaW50IG1taW9fYmFyLCBtbWlvX3NpemU7Cj4g LQl2b2lkICptbWlvOwo+IC0KPiAtCWluZm8gPSBpZ2Z4X2dldF9pbmZvKGRldik7Cj4gLQlpZiAo aW5mby0+Z2VuID4+IDMgPT0gMikKPiAtCQltbWlvX2JhciA9IDE7Cj4gLQllbHNlCj4gLQkJbW1p b19iYXIgPSAwOwo+IC0KPiAtCWlmIChpbmZvLT5nZW4gPCAwMzApCj4gLQkJbW1pb19zaXplID0g NTEyKjEwMjQ7Cj4gLQllbHNlIGlmIChpbmZvLT5nZW4gPCAwNTApCj4gLQkJbW1pb19zaXplID0g NTEyKjEwMjQ7Cj4gLQllbHNlCj4gLQkJbW1pb19zaXplID0gMioxMDI0KjEwMjQ7Cj4gLQo+IC0J aWYgKHBjaV9kZXZpY2VfcHJvYmUoZGV2KSkKPiAtCQlyZXR1cm4gMDsKPiAtCj4gLQlpZiAocGNp X2RldmljZV9tYXBfcmFuZ2UoZGV2LAo+IC0JCQkJIGRldi0+cmVnaW9uc1ttbWlvX2Jhcl0uYmFz ZV9hZGRyLAo+IC0JCQkJIG1taW9fc2l6ZSwKPiAtCQkJCSBQQ0lfREVWX01BUF9GTEFHX1dSSVRB QkxFLAo+IC0JCQkJICZtbWlvKSkKPiAtCQlyZXR1cm4gMDsKPiAtCj4gLQlpZiAoaW5mby0+Z2Vu ID49IDA2MCkKPiAtCQlpZ2Z4X2ZvcmNld2FrZSgpOwo+IC0KPiAtCXJldHVybiBtbWlvOwo+IC19 Cj4gLQo+IGRpZmYgLS1naXQgYS9vdmVybGF5L2lnZnguaCBiL292ZXJsYXkvaWdmeC5oCj4gZGVs ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggYzk5YWYxODZjLi4wMDAwMDAwMDAKPiAtLS0g YS9vdmVybGF5L2lnZnguaAo+ICsrKyAvZGV2L251bGwKPiBAQCAtMSw0NCArMCwwIEBACj4gLS8q Cj4gLSAqIENvcHlyaWdodCDCqSAyMDEzIEludGVsIENvcnBvcmF0aW9uCj4gLSAqCj4gLSAqIFBl cm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29u IG9idGFpbmluZyBhCj4gLSAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBk b2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCj4gLSAqIHRvIGRlYWwgaW4gdGhl IFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRp b24KPiAtICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gs IGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCj4gLSAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUg U29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQo+IC0gKiBTb2Z0d2Fy ZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRp b25zOgo+IC0gKgo+IC0gKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJt aXNzaW9uIG5vdGljZSAoaW5jbHVkaW5nIHRoZSBuZXh0Cj4gLSAqIHBhcmFncmFwaCkgc2hhbGwg YmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUK PiAtICogU29mdHdhcmUuCj4gLSAqCj4gLSAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMg SVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCj4gLSAqIElNUExJ RUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hB TlRBQklMSVRZLAo+IC0gKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9O SU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwKPiAtICogVEhFIEFVVEhPUlMgT1IgQ09Q WVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIK PiAtICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBP UiBPVEhFUldJU0UsIEFSSVNJTkcKPiAtICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04g V0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUwo+IC0gKiBJTiBU SEUgU09GVFdBUkUuCj4gLSAqCj4gLSAqLwo+IC0KPiAtI2lmbmRlZiBJR0ZYX0gKPiAtI2RlZmlu ZSBJR0ZYX0gKPiAtCj4gLXN0cnVjdCBpZ2Z4X2luZm8gewo+IC0JaW50IGdlbjsKPiAtfTsKPiAt Cj4gLXN0cnVjdCBwY2lfZGV2aWNlOwo+IC0KPiAtc3RydWN0IHBjaV9kZXZpY2UgKmlnZnhfZ2V0 KHZvaWQpOwo+IC1jb25zdCBzdHJ1Y3QgaWdmeF9pbmZvICppZ2Z4X2dldF9pbmZvKHN0cnVjdCBw Y2lfZGV2aWNlICpwY2lfZGV2KTsKPiAtdm9pZCAqaWdmeF9nZXRfbW1pbyhzdHJ1Y3QgcGNpX2Rl dmljZSAqcGNpX2Rldik7Cj4gLQo+IC1zdGF0aWMgaW5saW5lIHVpbnQzMl90Cj4gLWlnZnhfcmVh ZCh2b2lkICptbWlvLCB1aW50MzJfdCByZWcpCj4gLXsKPiAtCXJldHVybiAqKHZvbGF0aWxlIHVp bnQzMl90ICopKCh2b2xhdGlsZSBjaGFyICopbW1pbyArIHJlZyk7Cj4gLX0KPiAtCj4gLSNlbmRp ZiAvKiBJR0ZYX0ggKi8KPiBkaWZmIC0tZ2l0IGEvb3ZlcmxheS9tZXNvbi5idWlsZCBiL292ZXJs YXkvbWVzb24uYnVpbGQKPiBpbmRleCBkMTMzYjZiZWQuLmQyZDJiMTZhOCAxMDA2NDQKPiAtLS0g YS9vdmVybGF5L21lc29uLmJ1aWxkCj4gKysrIGIvb3ZlcmxheS9tZXNvbi5idWlsZAo+IEBAIC0x MSw3ICsxMSw2IEBAIGdwdV9vdmVybGF5X3NyYyA9IFsKPiAgIAknZ3B1LXRvcC5jJywKPiAgIAkn Z3B1LXBlcmYuYycsCj4gICAJJ2dwdS1mcmVxLmMnLAo+IC0JJ2lnZnguYycsCj4gICAJJ292ZXJs YXkuYycsCj4gICAJJ3Bvd2VyLmMnLAo+ICAgCSdyYzYuYycsCj4gCl9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmlndC1kZXYgbWFpbGluZyBsaXN0CmlndC1k ZXZAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21h aWxtYW4vbGlzdGluZm8vaWd0LWRldg==