From mboxrd@z Thu Jan 1 00:00:00 1970 From: John Harrison Subject: Re: [PATCH 23/42] drm/i915: Move object release to a freelist + worker Date: Tue, 11 Oct 2016 10:52:26 +0100 Message-ID: References: <20161007094635.28319-1-chris@chris-wilson.co.uk> <20161007094635.28319-24-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by gabe.freedesktop.org (Postfix) with ESMTPS id 9BDE76E383 for ; Tue, 11 Oct 2016 09:52:28 +0000 (UTC) In-Reply-To: <20161007094635.28319-24-chris@chris-wilson.co.uk> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gMDcvMTAvMjAxNiAxMDo0NiwgQ2hyaXMgV2lsc29uIHdyb3RlOgo+IFdlIHdhbnQgdG8gaGlk ZSB0aGUgbGF0ZW5jeSBvZiByZWxlYXNpbmcgb2JqZWN0cyBhbmQgdGhlaXIgYmFja2luZwo+IHN0 b3JhZ2UgZnJvbSB0aGUgc3VibWlzc2lvbiwgc28gd2UgbW92ZSB0aGUgYWN0dWFsIGZyZWUgdG8g YSB3b3JrZXIuCj4gVGhpcyBhbGxvd3MgdXMgdG8gc3dpdGNoIHRvIHN0cnVjdF9tdXRleCBmcmVl aW5nIG9mIHRoZSBvYmplY3QgaW4gdGhlCj4gbmV4dCBwYXRjaC4KPgo+IEZ1cnRoZXJtb3JlLCBp ZiB3ZSBrbm93IHRoYXQgdGhlIG9iamVjdCB3ZSBhcmUgZGVyZWZlcmVuY2luZyByZW1haW5zIHZh bGlkCj4gZm9yIHRoZSBkdXJhdGlvbiBvZiBvdXIgYWNjZXNzLCB3ZSBjYW4gZm9yZ28gdGhlIHVz dWFsIHN5bmNocm9uaXNhdGlvbgo+IGJhcnJpZXJzIGFuZCBhdG9taWMgcmVmZXJlbmNlIGNvdW50 aW5nLiBUbyBlbnN1cmUgdGhpcyB3ZSBkZWZlciBmcmVlaW5nCj4gYW4gb2JqZWN0IHRpbCBhZnRl ciBhbiBSQ1UgZ3JhY2UgcGVyaW9kLCBzdWNoIHRoYXQgYW55IGxvb2t1cCBvZiB0aGUKPiBvYmpl Y3Qgd2l0aGluIGFuIFJDVSByZWFkIGNyaXRpY2FsIHNlY3Rpb24gd2lsbCByZW1haW4gdmFsaWQg dW50aWwKPiBhZnRlciB3ZSBleGl0IHRoYXQgY3JpdGljYWwgc2VjdGlvbi4gV2UgYWxzbyBlbXBs b3kgdGhpcyBkZWxheSBmb3IKPiByYXRlLWxpbWl0aW5nIHRoZSBzZXJpYWxpc2F0aW9uIG9uIHJl YWxsb2NhdGlvbiAtIHdlIGhhdmUgdG8gc2xvdyBkb3duCj4gb2JqZWN0IGNyZWF0aW9uIGluIG9y ZGVyIHRvIHByZXZlbnQgcmVzb3VyY2Ugc3RhcnZhdGlvbiAoaW4gcGFydGljdWxhciwKPiBmaWxl cykuCj4KPiBTaWduZWQtb2ZmLWJ5OiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5j by51az4KPiAtLS0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jICAgICAg fCAgMTUgKystCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jICAgICAgICAgIHwg ICAzICsKPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggICAgICAgICAgfCAgNDQg KysrKysrKy0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMgICAgICAgICAgfCAx NjYgKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9nZW1fc2hyaW5rZXIuYyB8ICAxNCArKy0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZ2VtX3RpbGluZy5jICAgfCAgMjEgKystLQo+ICAgNiBmaWxlcyBjaGFuZ2VkLCAxOTMg aW5zZXJ0aW9ucygrKSwgNzAgZGVsZXRpb25zKC0pCj4KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rl YnVnZnMuYwo+IGluZGV4IGI4MDdkZGY2NWUwNC4uMTQ0MDEzODc1NTEzIDEwMDY0NAo+IC0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCj4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKPiBAQCAtNDg3MiwxMCArNDg3MiwxMiBAQCBERUZJTkVf U0lNUExFX0FUVFJJQlVURShpOTE1X3JpbmdfdGVzdF9pcnFfZm9wcywKPiAgICNkZWZpbmUgRFJP UF9CT1VORCAweDIKPiAgICNkZWZpbmUgRFJPUF9SRVRJUkUgMHg0Cj4gICAjZGVmaW5lIERST1Bf QUNUSVZFIDB4OAo+IC0jZGVmaW5lIERST1BfQUxMIChEUk9QX1VOQk9VTkQgfCBcCj4gLQkJICBE Uk9QX0JPVU5EIHwgXAo+IC0JCSAgRFJPUF9SRVRJUkUgfCBcCj4gLQkJICBEUk9QX0FDVElWRSkK PiArI2RlZmluZSBEUk9QX0ZSRUVEIDB4MTAKPiArI2RlZmluZSBEUk9QX0FMTCAoRFJPUF9VTkJP VU5ECXwgXAo+ICsJCSAgRFJPUF9CT1VORAl8IFwKPiArCQkgIERST1BfUkVUSVJFCXwgXAo+ICsJ CSAgRFJPUF9BQ1RJVkUJfCBcCj4gKwkJICBEUk9QX0ZSRUVEKQo+ICAgc3RhdGljIGludAo+ICAg aTkxNV9kcm9wX2NhY2hlc19nZXQodm9pZCAqZGF0YSwgdTY0ICp2YWwpCj4gICB7Cj4gQEAgLTQ5 MTksNiArNDkyMSwxMSBAQCBpOTE1X2Ryb3BfY2FjaGVzX3NldCh2b2lkICpkYXRhLCB1NjQgdmFs KQo+ICAgdW5sb2NrOgo+ICAgCW11dGV4X3VubG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwo+ICAg Cj4gKwlpZiAodmFsICYgRFJPUF9GUkVFRCkgewo+ICsJCXN5bmNocm9uaXplX3JjdSgpOwo+ICsJ CWZsdXNoX3dvcmsoJmRldl9wcml2LT5tbS5mcmVlX3dvcmspOwo+ICsJfQo+ICsKPiAgIAlyZXR1 cm4gcmV0Owo+ICAgfQo+ICAgCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZHJ2LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jCj4gaW5kZXggODlkMzIy MjE1Yzg0Li5mN2Q0OGY5Nzk5M2QgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9kcnYuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMKPiBAQCAt NTYzLDYgKzU2Myw5IEBAIHN0YXRpYyB2b2lkIGk5MTVfZ2VtX2Zpbmkoc3RydWN0IGRybV9kZXZp Y2UgKmRldikKPiAgIAlpOTE1X2dlbV9jb250ZXh0X2ZpbmkoZGV2KTsKPiAgIAltdXRleF91bmxv Y2soJmRldi0+c3RydWN0X211dGV4KTsKPiAgIAo+ICsJc3luY2hyb25pemVfcmN1KCk7Cj4gKwlm bHVzaF93b3JrKCZkZXZfcHJpdi0+bW0uZnJlZV93b3JrKTsKPiArCj4gICAJV0FSTl9PTighbGlz dF9lbXB0eSgmdG9faTkxNShkZXYpLT5jb250ZXh0X2xpc3QpKTsKPiAgIH0KPiAgIAo+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9kcnYuaAo+IGluZGV4IDdlOWRmMTkwYzg5MS4uZTc5YTVjYjc4YjVkIDEwMDY0 NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiArKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gQEAgLTEzNTQsMTEgKzEzNTQsMTcgQEAgc3RydWN0 IGk5MTVfZ2VtX21tIHsKPiAgIAlzdHJ1Y3QgbGlzdF9oZWFkIGJvdW5kX2xpc3Q7Cj4gICAJLyoq Cj4gICAJICogTGlzdCBvZiBvYmplY3RzIHdoaWNoIGFyZSBub3QgYm91bmQgdG8gdGhlIEdUVCAo dGh1cwo+IC0JICogYXJlIGlkbGUgYW5kIG5vdCB1c2VkIGJ5IHRoZSBHUFUpIGJ1dCBzdGlsbCBo YXZlCj4gLQkgKiAocHJlc3VtYWJseSB1bmNhY2hlZCkgcGFnZXMgc3RpbGwgYXR0YWNoZWQuCj4g KwkgKiBhcmUgaWRsZSBhbmQgbm90IHVzZWQgYnkgdGhlIEdQVSkuIFRoZXNlIG9iamVjdHMgbWF5 IG9yIG1heQo+ICsJICogbm90IGFjdHVhbGx5IGhhdmUgYW55IHBhZ2VzIGF0dGFjaGVkLgo+ICAg CSAqLwo+ICAgCXN0cnVjdCBsaXN0X2hlYWQgdW5ib3VuZF9saXN0Owo+ICAgCj4gKwkvKioKPiAr CSAqIExpc3Qgb2Ygb2JqZWN0cyB3aGljaCBhcmUgcGVuZGluZyBkZXN0cnVjdGlvbi4KPiArCSAq Lwo+ICsJc3RydWN0IGxsaXN0X2hlYWQgZnJlZV9saXN0Owo+ICsJc3RydWN0IHdvcmtfc3RydWN0 IGZyZWVfd29yazsKPiArCj4gICAJLyoqIFVzYWJsZSBwb3J0aW9uIG9mIHRoZSBHVFQgZm9yIEdF TSAqLwo+ICAgCXVuc2lnbmVkIGxvbmcgc3RvbGVuX2Jhc2U7IC8qIGxpbWl0ZWQgdG8gbG93IG1l bW9yeSAoMzItYml0KSAqLwo+ICAgCj4gQEAgLTIyMTQsNiArMjIyMCwxMCBAQCBzdHJ1Y3QgZHJt X2k5MTVfZ2VtX29iamVjdCB7Cj4gICAJLyoqIFN0b2xlbiBtZW1vcnkgZm9yIHRoaXMgb2JqZWN0 LCBpbnN0ZWFkIG9mIGJlaW5nIGJhY2tlZCBieSBzaG1lbS4gKi8KPiAgIAlzdHJ1Y3QgZHJtX21t X25vZGUgKnN0b2xlbjsKPiAgIAlzdHJ1Y3QgbGlzdF9oZWFkIGdsb2JhbF9saXN0Owo+ICsJdW5p b24gewo+ICsJCXN0cnVjdCByY3VfaGVhZCByY3U7Cj4gKwkJc3RydWN0IGxsaXN0X25vZGUgZnJl ZWQ7Cj4gKwl9Owo+ICAgCj4gICAJLyoqIFVzZWQgaW4gZXhlY2J1ZiB0byB0ZW1wb3JhcmlseSBo b2xkIGEgcmVmICovCj4gICAJc3RydWN0IGxpc3RfaGVhZCBvYmpfZXhlY19saW5rOwo+IEBAIC0y MzMzLDEwICsyMzQzLDM4IEBAIHRvX2ludGVsX2JvKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqZ2Vt KQo+ICAgCXJldHVybiBjb250YWluZXJfb2YoZ2VtLCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVj dCwgYmFzZSk7Cj4gICB9Cj4gICAKPiArLyoqCj4gKyAqIGk5MTVfZ2VtX29iamVjdF9sb29rdXBf cmN1IC0gbG9vayB1cCBhIHRlbXBvcmFyeSBHRU0gb2JqZWN0IGZyb20gaXRzIGhhbmRsZQo+ICsg KiBAZmlscDogRFJNIGZpbGUgcHJpdmF0ZSBkYXRlCj4gKyAqIEBoYW5kbGU6IHVzZXJzcGFjZSBo YW5kbGUKPiArICoKPiArICogUmV0dXJuczoKPiArICoKPiArICogQSBwb2ludGVyIHRvIHRoZSBv YmplY3QgbmFtZWQgYnkgdGhlIGhhbmRsZSBpZiBzdWNoIGV4aXN0cyBvbiBAZmlscCwgTlVMTAo+ ICsgKiBvdGhlcndpc2UuIFRoaXMgb2JqZWN0IGlzIG9ubHkgdmFsaWQgd2hpbHN0IHVuZGVyIHRo ZSBSQ1UgcmVhZCBsb2NrLCBhbmQKPiArICogbm90ZSBjYXJlZnVsbHkgdGhlIG9iamVjdCBtYXkg YmUgaW4gdGhlIHByb2Nlc3Mgb2YgYmVpbmcgZGVzdHJveWVkLgo+ICsgKi8KPiArc3RhdGljIGlu bGluZSBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqCj4gK2k5MTVfZ2VtX29iamVjdF9sb29r dXBfcmN1KHN0cnVjdCBkcm1fZmlsZSAqZmlsZSwgdTMyIGhhbmRsZSkKPiArewo+ICsjaWZkZWYg Q09ORklHX0xPQ0tERVAKPiArCVdBUk5fT04oIWxvY2tfaXNfaGVsZCgmcmN1X2xvY2tfbWFwKSk7 Cj4gKyNlbmRpZgo+ICsJcmV0dXJuIGlkcl9maW5kKCZmaWxlLT5vYmplY3RfaWRyLCBoYW5kbGUp Owo+ICt9Cj4gKwo+ICAgc3RhdGljIGlubGluZSBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAq Cj4gICBpOTE1X2dlbV9vYmplY3RfbG9va3VwKHN0cnVjdCBkcm1fZmlsZSAqZmlsZSwgdTMyIGhh bmRsZSkKPiAgIHsKPiAtCXJldHVybiB0b19pbnRlbF9ibyhkcm1fZ2VtX29iamVjdF9sb29rdXAo ZmlsZSwgaGFuZGxlKSk7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqOwo+ICsK PiArCXJjdV9yZWFkX2xvY2soKTsKPiArCW9iaiA9IGk5MTVfZ2VtX29iamVjdF9sb29rdXBfcmN1 KGZpbGUsIGhhbmRsZSk7Cj4gKwlpZiAob2JqICYmICFrcmVmX2dldF91bmxlc3NfemVybygmb2Jq LT5iYXNlLnJlZmNvdW50KSkKPiArCQlvYmogPSBOVUxMOwo+ICsJcmN1X3JlYWRfdW5sb2NrKCk7 Cj4gKwo+ICsJcmV0dXJuIG9iajsKPiAgIH0KPiAgIAo+ICAgX19kZXByZWNhdGVkCj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2dlbS5jCj4gaW5kZXggODAwNjlmMGZhOWFjLi43Y2Q0OWRkMWQzZjggMTAwNjQ0 Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYwo+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKPiBAQCAtNDIsNiArNDIsNyBAQAo+ICAgI2luY2x1ZGUg PGxpbnV4L3BjaS5oPgo+ICAgI2luY2x1ZGUgPGxpbnV4L2RtYS1idWYuaD4KPiAgIAo+ICtzdGF0 aWMgdm9pZCBpOTE1X2dlbV9mbHVzaF9mcmVlX29iamVjdHMoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmk5MTUpOwo+ICAgc3RhdGljIHZvaWQgaTkxNV9nZW1fb2JqZWN0X2ZsdXNoX2d0dF93cml0 ZV9kb21haW4oc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaik7Cj4gICBzdGF0aWMgdm9p ZCBpOTE1X2dlbV9vYmplY3RfZmx1c2hfY3B1X3dyaXRlX2RvbWFpbihzdHJ1Y3QgZHJtX2k5MTVf Z2VtX29iamVjdCAqb2JqKTsKPiAgIAo+IEBAIC02NDcsNiArNjQ4LDggQEAgaTkxNV9nZW1fY3Jl YXRlX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCj4gICB7Cj4gICAJ c3RydWN0IGRybV9pOTE1X2dlbV9jcmVhdGUgKmFyZ3MgPSBkYXRhOwo+ICAgCj4gKwlpOTE1X2dl bV9mbHVzaF9mcmVlX29iamVjdHModG9faTkxNShkZXYpKTsKPiArCj4gICAJcmV0dXJuIGk5MTVf Z2VtX2NyZWF0ZShmaWxlLCBkZXYsCj4gICAJCQkgICAgICAgYXJncy0+c2l6ZSwgJmFyZ3MtPmhh bmRsZSk7Cj4gICB9Cj4gQEAgLTM0NjksMTAgKzM0NzIsMTQgQEAgaW50IGk5MTVfZ2VtX2dldF9j YWNoaW5nX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCj4gICB7Cj4g ICAJc3RydWN0IGRybV9pOTE1X2dlbV9jYWNoaW5nICphcmdzID0gZGF0YTsKPiAgIAlzdHJ1Y3Qg ZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqOwo+ICsJaW50IGVyciA9IDA7Cj4gICAKPiAtCW9iaiA9 IGk5MTVfZ2VtX29iamVjdF9sb29rdXAoZmlsZSwgYXJncy0+aGFuZGxlKTsKPiAtCWlmICghb2Jq KQo+IC0JCXJldHVybiAtRU5PRU5UOwo+ICsJcmN1X3JlYWRfbG9jaygpOwo+ICsJb2JqID0gaTkx NV9nZW1fb2JqZWN0X2xvb2t1cF9yY3UoZmlsZSwgYXJncy0+aGFuZGxlKTsKPiArCWlmICghb2Jq KSB7Cj4gKwkJZXJyID0gLUVOT0VOVDsKPiArCQlnb3RvIG91dDsKPiArCX0KPiAgIAo+ICAgCXN3 aXRjaCAob2JqLT5jYWNoZV9sZXZlbCkgewo+ICAgCWNhc2UgSTkxNV9DQUNIRV9MTEM6Cj4gQEAg LTM0ODgsOSArMzQ5NSw5IEBAIGludCBpOTE1X2dlbV9nZXRfY2FjaGluZ19pb2N0bChzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAo+ICAgCQlhcmdzLT5jYWNoaW5nID0gSTkxNV9D QUNISU5HX05PTkU7Cj4gICAJCWJyZWFrOwo+ICAgCX0KPiAtCj4gLQlpOTE1X2dlbV9vYmplY3Rf cHV0X3VubG9ja2VkKG9iaik7Cj4gLQlyZXR1cm4gMDsKPiArb3V0Ogo+ICsJcmN1X3JlYWRfdW5s b2NrKCk7Cj4gKwlyZXR1cm4gZXJyOwo+ICAgfQo+ICAgCj4gICBpbnQgaTkxNV9nZW1fc2V0X2Nh Y2hpbmdfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKPiBAQCAtNDAw MSwxMCArNDAwOCwxNCBAQCBpOTE1X2dlbV9idXN5X2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYsIHZvaWQgKmRhdGEsCj4gICAJc3RydWN0IGRybV9pOTE1X2dlbV9idXN5ICphcmdzID0gZGF0 YTsKPiAgIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqOwo+ICAgCXVuc2lnbmVkIGxv bmcgYWN0aXZlOwo+ICsJaW50IGVycjsKPiAgIAo+IC0Jb2JqID0gaTkxNV9nZW1fb2JqZWN0X2xv b2t1cChmaWxlLCBhcmdzLT5oYW5kbGUpOwo+IC0JaWYgKCFvYmopCj4gLQkJcmV0dXJuIC1FTk9F TlQ7Cj4gKwlyY3VfcmVhZF9sb2NrKCk7Cj4gKwlvYmogPSBpOTE1X2dlbV9vYmplY3RfbG9va3Vw X3JjdShmaWxlLCBhcmdzLT5oYW5kbGUpOwo+ICsJaWYgKCFvYmopIHsKPiArCQllcnIgPSAtRU5P RU5UOwo+ICsJCWdvdG8gb3V0Owo+ICsJfQo+ICAgCj4gICAJYXJncy0+YnVzeSA9IDA7Cj4gICAJ YWN0aXZlID0gX19JOTE1X0JPX0FDVElWRShvYmopOwo+IEBAIC00MDM0LDcgKzQwNDUsNiBAQCBp OTE1X2dlbV9idXN5X2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCj4g ICAJCSAqIGFyZSBidXN5IGlzIG5vdCBjb21wbGV0ZWx5IHJlbGlhYmxlIC0gd2Ugb25seSBndWFy YW50ZWUKPiAgIAkJICogdGhhdCB0aGUgb2JqZWN0IHdhcyBidXN5Lgo+ICAgCQkgKi8KPiAtCQly Y3VfcmVhZF9sb2NrKCk7Cj4gICAKPiAgIAkJZm9yX2VhY2hfYWN0aXZlKGFjdGl2ZSwgaWR4KQo+ ICAgCQkJYXJncy0+YnVzeSB8PSBidXN5X2NoZWNrX3JlYWRlcigmb2JqLT5sYXN0X3JlYWRbaWR4 XSk7Cj4gQEAgLTQwNTIsMTIgKzQwNjIsMTEgQEAgaTkxNV9nZW1fYnVzeV9pb2N0bChzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAo+ICAgCQkgKiB0aGUgcmVzdWx0Lgo+ICAgCQkg Ki8KPiAgIAkJYXJncy0+YnVzeSB8PSBidXN5X2NoZWNrX3dyaXRlcigmb2JqLT5sYXN0X3dyaXRl KTsKPiAtCj4gLQkJcmN1X3JlYWRfdW5sb2NrKCk7Cj4gICAJfQo+ICAgCj4gLQlpOTE1X2dlbV9v YmplY3RfcHV0X3VubG9ja2VkKG9iaik7Cj4gLQlyZXR1cm4gMDsKPiArb3V0Ogo+ICsJcmN1X3Jl YWRfdW5sb2NrKCk7Cj4gKwlyZXR1cm4gZXJyOwo+ICAgfQo+ICAgCj4gICBpbnQKPiBAQCAtNDIw NCw3ICs0MjEzLDYgQEAgc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKmk5MTVfZ2VtX29iamVj dF9jcmVhdGUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAgIAo+ICAgZmFpbDoKPiAgIAlpOTE1 X2dlbV9vYmplY3RfZnJlZShvYmopOwo+IC0KPiAgIAlyZXR1cm4gRVJSX1BUUihyZXQpOwo+ICAg fQo+ICAgCj4gQEAgLTQyMzIsMTYgKzQyNDAsNjkgQEAgc3RhdGljIGJvb2wgZGlzY2FyZF9iYWNr aW5nX3N0b3JhZ2Uoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikKPiAgIAlyZXR1cm4g YXRvbWljX2xvbmdfcmVhZCgmb2JqLT5iYXNlLmZpbHAtPmZfY291bnQpID09IDE7Cj4gICB9Cj4g ICAKPiAtdm9pZCBpOTE1X2dlbV9mcmVlX29iamVjdChzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKmdl bV9vYmopCj4gK3N0YXRpYyB2b2lkIF9faTkxNV9nZW1fZnJlZV9vYmplY3RzKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICppOTE1LAo+ICsJCQkJICAgIHN0cnVjdCBsbGlzdF9ub2RlICpmcmVlZCkK PiAgIHsKPiAtCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmogPSB0b19pbnRlbF9ibyhn ZW1fb2JqKTsKPiAtCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBvYmotPmJhc2UuZGV2Owo+IC0J c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYpOwo+IC0Jc3Ry dWN0IGk5MTVfdm1hICp2bWEsICpuZXh0Owo+ICsJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3Qg Km9iaiwgKm9uOwo+ICAgCj4gLQlpbnRlbF9ydW50aW1lX3BtX2dldChkZXZfcHJpdik7Cj4gKwlt dXRleF9sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiArCWludGVsX3J1bnRpbWVfcG1f Z2V0KGk5MTUpOwo+ICsJbGxpc3RfZm9yX2VhY2hfZW50cnkob2JqLCBmcmVlZCwgZnJlZWQpIHsK PiArCQlzdHJ1Y3QgaTkxNV92bWEgKnZtYSwgKnZuOwo+ICsKPiArCQl0cmFjZV9pOTE1X2dlbV9v YmplY3RfZGVzdHJveShvYmopOwo+ICsKPiArCQlHRU1fQlVHX09OKGk5MTVfZ2VtX29iamVjdF9p c19hY3RpdmUob2JqKSk7Cj4gKwkJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHZtYSwgdm4sCj4g KwkJCQkJICZvYmotPnZtYV9saXN0LCBvYmpfbGluaykgewo+ICsJCQlHRU1fQlVHX09OKCFpOTE1 X3ZtYV9pc19nZ3R0KHZtYSkpOwo+ICsJCQlHRU1fQlVHX09OKGk5MTVfdm1hX2lzX2FjdGl2ZSh2 bWEpKTsKPiArCQkJdm1hLT5mbGFncyAmPSB+STkxNV9WTUFfUElOX01BU0s7Cj4gKwkJCWk5MTVf dm1hX2Nsb3NlKHZtYSk7Cj4gKwkJfQo+ICsKPiArCQlsaXN0X2RlbCgmb2JqLT5nbG9iYWxfbGlz dCk7Cj4gKwl9Cj4gKwlpbnRlbF9ydW50aW1lX3BtX3B1dChpOTE1KTsKPiArCW11dGV4X3VubG9j aygmaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gKwo+ICsJbGxpc3RfZm9yX2VhY2hfZW50cnlf c2FmZShvYmosIG9uLCBmcmVlZCwgZnJlZWQpIHsKPiArCQlHRU1fQlVHX09OKG9iai0+YmluZF9j b3VudCk7Cj4gKwkJR0VNX0JVR19PTihhdG9taWNfcmVhZCgmb2JqLT5mcm9udGJ1ZmZlcl9iaXRz KSk7Cj4gKwo+ICsJCWlmIChvYmotPm9wcy0+cmVsZWFzZSkKPiArCQkJb2JqLT5vcHMtPnJlbGVh c2Uob2JqKTsKPiArCj4gKwkJaWYgKFdBUk5fT04oaTkxNV9nZW1fb2JqZWN0X2hhc19waW5uZWRf cGFnZXMob2JqKSkpCj4gKwkJCWF0b21pY19zZXQoJm9iai0+bW0ucGFnZXNfcGluX2NvdW50LCAw KTsKPiArCQlfX2k5MTVfZ2VtX29iamVjdF9wdXRfcGFnZXMob2JqKTsKPiArCQlHRU1fQlVHX09O KG9iai0+bW0ucGFnZXMpOwo+ICsKPiArCQlpZiAob2JqLT5iYXNlLmltcG9ydF9hdHRhY2gpCj4g KwkJCWRybV9wcmltZV9nZW1fZGVzdHJveSgmb2JqLT5iYXNlLCBOVUxMKTsKPiArCj4gKwkJZHJt X2dlbV9vYmplY3RfcmVsZWFzZSgmb2JqLT5iYXNlKTsKPiArCQlpOTE1X2dlbV9pbmZvX3JlbW92 ZV9vYmooaTkxNSwgb2JqLT5iYXNlLnNpemUpOwo+ICsKPiArCQlrZnJlZShvYmotPmJpdF8xNyk7 Cj4gKwkJaTkxNV9nZW1fb2JqZWN0X2ZyZWUob2JqKTsKPiArCX0KPiArfQo+ICsKPiArc3RhdGlj IHZvaWQgaTkxNV9nZW1fZmx1c2hfZnJlZV9vYmplY3RzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICppOTE1KQo+ICt7Cj4gKwlzdHJ1Y3QgbGxpc3Rfbm9kZSAqZnJlZWQ7Cj4gICAKPiAtCXRyYWNl X2k5MTVfZ2VtX29iamVjdF9kZXN0cm95KG9iaik7Cj4gKwlmcmVlZCA9IGxsaXN0X2RlbF9hbGwo Jmk5MTUtPm1tLmZyZWVfbGlzdCk7Cj4gKwlpZiAodW5saWtlbHkoZnJlZWQpKQo+ICsJCV9faTkx NV9nZW1fZnJlZV9vYmplY3RzKGk5MTUsIGZyZWVkKTsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQg X19pOTE1X2dlbV9mcmVlX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQo+ICt7Cj4gKwlz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9Cj4gKwkJY29udGFpbmVyX29mKHdvcmssIHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlLCBtbS5mcmVlX3dvcmspOwo+ICsJc3RydWN0IGxsaXN0X25v ZGUgKmZyZWVkOwo+ICAgCj4gICAJLyogQWxsIGZpbGUtb3duZWQgVk1BIHNob3VsZCBoYXZlIGJl ZW4gcmVsZWFzZWQgYnkgdGhpcyBwb2ludCB0aHJvdWdoCj4gICAJICogaTkxNV9nZW1fY2xvc2Vf b2JqZWN0KCksIG9yIGVhcmxpZXIgYnkgaTkxNV9nZW1fY29udGV4dF9jbG9zZSgpLgo+IEBAIC00 MjUwLDQyICs0MzExLDQ0IEBAIHZvaWQgaTkxNV9nZW1fZnJlZV9vYmplY3Qoc3RydWN0IGRybV9n ZW1fb2JqZWN0ICpnZW1fb2JqKQo+ICAgCSAqIHRoZSBHVFQgZWl0aGVyIGZvciB0aGUgdXNlciBv ciBmb3Igc2Nhbm91dCkuIFRob3NlIFZNQSBzdGlsbCBuZWVkIHRvCj4gICAJICogdW5ib3VuZCBu b3cuCj4gICAJICovCj4gLQlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUodm1hLCBuZXh0LCAmb2Jq LT52bWFfbGlzdCwgb2JqX2xpbmspIHsKPiAtCQlHRU1fQlVHX09OKCFpOTE1X3ZtYV9pc19nZ3R0 KHZtYSkpOwo+IC0JCUdFTV9CVUdfT04oaTkxNV92bWFfaXNfYWN0aXZlKHZtYSkpOwo+IC0JCXZt YS0+ZmxhZ3MgJj0gfkk5MTVfVk1BX1BJTl9NQVNLOwo+IC0JCWk5MTVfdm1hX2Nsb3NlKHZtYSk7 Cj4gLQl9Cj4gLQlHRU1fQlVHX09OKG9iai0+YmluZF9jb3VudCk7Cj4gICAKPiAtCVdBUk5fT04o YXRvbWljX3JlYWQoJm9iai0+ZnJvbnRidWZmZXJfYml0cykpOwo+ICsJd2hpbGUgKChmcmVlZCA9 IGxsaXN0X2RlbF9hbGwoJmk5MTUtPm1tLmZyZWVfbGlzdCkpKQo+ICsJCV9faTkxNV9nZW1fZnJl ZV9vYmplY3RzKGk5MTUsIGZyZWVkKTsKPiArfQo+ICAgCj4gLQlpZiAob2JqLT5tbS5wYWdlcyAm JiBvYmotPm1tLm1hZHYgPT0gSTkxNV9NQURWX1dJTExORUVEICYmCj4gLQkgICAgZGV2X3ByaXYt PnF1aXJrcyAmIFFVSVJLX1BJTl9TV0laWkxFRF9QQUdFUyAmJgo+IC0JICAgIGk5MTVfZ2VtX29i amVjdF9pc190aWxlZChvYmopKQo+IC0JCV9faTkxNV9nZW1fb2JqZWN0X3VucGluX3BhZ2VzKG9i aik7Cj4gK3N0YXRpYyB2b2lkIF9faTkxNV9nZW1fZnJlZV9vYmplY3RfcmN1KHN0cnVjdCByY3Vf aGVhZCAqaGVhZCkKPiArewo+ICsJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiA9Cj4g KwkJY29udGFpbmVyX29mKGhlYWQsIHR5cGVvZigqb2JqKSwgcmN1KTsKPiArCXN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICppOTE1ID0gdG9faTkxNShvYmotPmJhc2UuZGV2KTsKPiArCj4gKwkvKiBX ZSBjYW4ndCBzaW1wbHkgdXNlIGNhbGxfcmN1KCkgZnJvbSBpOTE1X2dlbV9mcmVlX29iamVjdCgp Cj4gKwkgKiBhcyB3ZSBuZWVkIHRvIGJsb2NrIHdoaWxzdCB1bmJpbmRpbmcsIGFuZCB0aGUgY2Fs bF9yY3UKPiArCSAqIHRhc2sgbWF5IGJlIGNhbGxlZCBmcm9tIHNvZnRpcnEgY29udGV4dC4gU28g d2UgdGFrZSBhCj4gKwkgKiBkZXRvdXIgdGhyb3VnaCBhIHdvcmtlci4KPiArCSAqLwo+ICsJaWYg KGxsaXN0X2FkZCgmb2JqLT5mcmVlZCwgJmk5MTUtPm1tLmZyZWVfbGlzdCkpCj4gKwkJc2NoZWR1 bGVfd29yaygmaTkxNS0+bW0uZnJlZV93b3JrKTsKPiArfQo+ICAgCj4gLQlpZiAob2JqLT5vcHMt PnJlbGVhc2UpCj4gLQkJb2JqLT5vcHMtPnJlbGVhc2Uob2JqKTsKPiArdm9pZCBpOTE1X2dlbV9m cmVlX29iamVjdChzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKmdlbV9vYmopCj4gK3sKPiArCXN0cnVj dCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmogPSB0b19pbnRlbF9ibyhnZW1fb2JqKTsKPiAgIAo+ IC0JaWYgKFdBUk5fT04oaTkxNV9nZW1fb2JqZWN0X2hhc19waW5uZWRfcGFnZXMob2JqKSkpCj4g LQkJYXRvbWljX3NldCgmb2JqLT5tbS5wYWdlc19waW5fY291bnQsIDApOwo+ICAgCWlmIChkaXNj YXJkX2JhY2tpbmdfc3RvcmFnZShvYmopKQo+ICAgCQlvYmotPm1tLm1hZHYgPSBJOTE1X01BRFZf RE9OVE5FRUQ7Cj4gLQlfX2k5MTVfZ2VtX29iamVjdF9wdXRfcGFnZXMob2JqKTsKPiAgIAo+IC0J R0VNX0JVR19PTihvYmotPm1tLnBhZ2VzKTsKPiAtCj4gLQlpZiAob2JqLT5iYXNlLmltcG9ydF9h dHRhY2gpCj4gLQkJZHJtX3ByaW1lX2dlbV9kZXN0cm95KCZvYmotPmJhc2UsIE5VTEwpOwo+IC0K PiAtCWRybV9nZW1fb2JqZWN0X3JlbGVhc2UoJm9iai0+YmFzZSk7Cj4gLQlpOTE1X2dlbV9pbmZv X3JlbW92ZV9vYmooZGV2X3ByaXYsIG9iai0+YmFzZS5zaXplKTsKPiAtCj4gLQlrZnJlZShvYmot PmJpdF8xNyk7Cj4gLQlpOTE1X2dlbV9vYmplY3RfZnJlZShvYmopOwo+ICsJaWYgKG9iai0+bW0u cGFnZXMgJiYgb2JqLT5tbS5tYWR2ID09IEk5MTVfTUFEVl9XSUxMTkVFRCAmJgo+ICsJICAgIHRv X2k5MTUob2JqLT5iYXNlLmRldiktPnF1aXJrcyAmIFFVSVJLX1BJTl9TV0laWkxFRF9QQUdFUyAm Jgo+ICsJICAgIGk5MTVfZ2VtX29iamVjdF9pc190aWxlZChvYmopKQo+ICsJCV9faTkxNV9nZW1f b2JqZWN0X3VucGluX3BhZ2VzKG9iaik7Cj4gICAKPiAtCWludGVsX3J1bnRpbWVfcG1fcHV0KGRl dl9wcml2KTsKPiArCS8qIEJlZm9yZSB3ZSBmcmVlIHRoZSBvYmplY3QsIG1ha2Ugc3VyZSBhbnkg cHVyZSBSQ1Utb25seQo+ICsJICogcmVhZC1zaWRlIGNyaXRpY2FsIHNlY3Rpb25zIGFyZSBjb21w bGV0ZSwgZS5nLgo+ICsJICogaTkxNV9nZW1fYnVzeV9pb2N0bCgpLiBGb3IgdGhlIGNvcnJlc3Bv bmRpbmcgc3luY2hyb25pemVkCj4gKwkgKiBsb29rdXAgc2VlIGk5MTVfZ2VtX29iamVjdF9sb29r dXBfcmN1KCkuCj4gKwkgKi8KPiArCWNhbGxfcmN1KCZvYmotPnJjdSwgX19pOTE1X2dlbV9mcmVl X29iamVjdF9yY3UpOwo+ICAgfQo+ICAgCj4gICB2b2lkIF9faTkxNV9nZW1fb2JqZWN0X3JlbGVh c2VfdW5sZXNzX2FjdGl2ZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQo+IEBAIC00 MzM0LDYgKzQzOTcsNyBAQCBpbnQgaTkxNV9nZW1fc3VzcGVuZChzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2KQo+ICAgCWNhbmNlbF9kZWxheWVkX3dvcmtfc3luYygmZGV2X3ByaXYtPmdwdV9lcnJvci5o YW5nY2hlY2tfd29yayk7Cj4gICAJY2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKCZkZXZfcHJpdi0+ Z3QucmV0aXJlX3dvcmspOwo+ICAgCWZsdXNoX2RlbGF5ZWRfd29yaygmZGV2X3ByaXYtPmd0Lmlk bGVfd29yayk7Cj4gKwlmbHVzaF93b3JrKCZkZXZfcHJpdi0+bW0uZnJlZV93b3JrKTsKPiAgIAo+ ICAgCS8qIEFzc2VydCB0aGF0IHdlIHN1Y2Vzc2Z1bGx5IGZsdXNoZWQgYWxsIHRoZSB3b3JrIGFu ZAo+ICAgCSAqIHJlc2V0IHRoZSBHUFUgYmFjayB0byBpdHMgaWRsZSwgbG93IHBvd2VyIHN0YXRl Lgo+IEBAIC00NjMwLDYgKzQ2OTQsOCBAQCBpOTE1X2dlbV9sb2FkX2luaXQoc3RydWN0IGRybV9k ZXZpY2UgKmRldikKPiAgIAkJCQkgIE5VTEwpOwo+ICAgCj4gICAJSU5JVF9MSVNUX0hFQUQoJmRl dl9wcml2LT5jb250ZXh0X2xpc3QpOwo+ICsJSU5JVF9XT1JLKCZkZXZfcHJpdi0+bW0uZnJlZV93 b3JrLCBfX2k5MTVfZ2VtX2ZyZWVfd29yayk7Cj4gKwlpbml0X2xsaXN0X2hlYWQoJmRldl9wcml2 LT5tbS5mcmVlX2xpc3QpOwo+ICAgCUlOSVRfTElTVF9IRUFEKCZkZXZfcHJpdi0+bW0udW5ib3Vu ZF9saXN0KTsKPiAgIAlJTklUX0xJU1RfSEVBRCgmZGV2X3ByaXYtPm1tLmJvdW5kX2xpc3QpOwo+ ICAgCUlOSVRfTElTVF9IRUFEKCZkZXZfcHJpdi0+bW0uZmVuY2VfbGlzdCk7Cj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3Nocmlua2VyLmMgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2dlbV9zaHJpbmtlci5jCj4gaW5kZXggODY4ZGEwYmFlNzUxLi5mYTcy NDczZGM3ZjUgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fc2hy aW5rZXIuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3Nocmlua2VyLmMK PiBAQCAtMjAxLDYgKzIwMSwxMCBAQCBpOTE1X2dlbV9zaHJpbmsoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2LAo+ICAgCQkJCQkJICAgICAgIHR5cGVvZigqb2JqKSwKPiAgIAkJCQkJ CSAgICAgICBnbG9iYWxfbGlzdCkpKSB7Cj4gICAJCQlsaXN0X21vdmVfdGFpbCgmb2JqLT5nbG9i YWxfbGlzdCwgJnN0aWxsX2luX2xpc3QpOwo+ICsJCQlpZiAoIW9iai0+bW0ucGFnZXMpIHsKPiAr CQkJCWxpc3RfZGVsX2luaXQoJm9iai0+Z2xvYmFsX2xpc3QpOwo+ICsJCQkJY29udGludWU7Cj4g KwkJCX0KPiAgIAo+ICAgCQkJaWYgKGZsYWdzICYgSTkxNV9TSFJJTktfUFVSR0VBQkxFICYmCj4g ICAJCQkgICAgb2JqLT5tbS5tYWR2ICE9IEk5MTVfTUFEVl9ET05UTkVFRCkKPiBAQCAtMjE3LDgg KzIyMSw2IEBAIGk5MTVfZ2VtX3NocmluayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYsCj4gICAJCQlpZiAoIWNhbl9yZWxlYXNlX3BhZ2VzKG9iaikpCj4gICAJCQkJY29udGludWU7 Cj4gICAKPiAtCQkJaTkxNV9nZW1fb2JqZWN0X2dldChvYmopOwo+IC0KPiAgIAkJCWlmICh1bnNh ZmVfZHJvcF9wYWdlcyhvYmopKSB7Cj4gICAJCQkJbXV0ZXhfbG9jaygmb2JqLT5tbS5sb2NrKTsK PiAgIAkJCQlpZiAoIW9iai0+bW0ucGFnZXMpIHsKPiBAQCAtMjI3LDggKzIyOSw2IEBAIGk5MTVf Z2VtX3NocmluayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gICAJCQkJfQo+ ICAgCQkJCW11dGV4X3VubG9jaygmb2JqLT5tbS5sb2NrKTsKPiAgIAkJCX0KPiAtCj4gLQkJCWk5 MTVfZ2VtX29iamVjdF9wdXQob2JqKTsKPiAgIAkJfQo+ICAgCQlsaXN0X3NwbGljZSgmc3RpbGxf aW5fbGlzdCwgcGhhc2UtPmxpc3QpOwo+ICAgCX0KPiBAQCAtMzk1LDEyICszOTUsMTggQEAgaTkx NV9nZW1fc2hyaW5rZXJfb29tKHN0cnVjdCBub3RpZmllcl9ibG9jayAqbmIsIHVuc2lnbmVkIGxv bmcgZXZlbnQsIHZvaWQgKnB0cikKPiAgIAkgKi8KPiAgIAl1bmJvdW5kID0gYm91bmQgPSB1bmV2 aWN0YWJsZSA9IDA7Cj4gICAJbGlzdF9mb3JfZWFjaF9lbnRyeShvYmosICZkZXZfcHJpdi0+bW0u dW5ib3VuZF9saXN0LCBnbG9iYWxfbGlzdCkgewo+ICsJCWlmICghb2JqLT5tbS5wYWdlcykKPiAr CQkJY29udGludWU7Cj4gKwo+ICAgCQlpZiAoIWNhbl9yZWxlYXNlX3BhZ2VzKG9iaikpCj4gICAJ CQl1bmV2aWN0YWJsZSArPSBvYmotPmJhc2Uuc2l6ZSA+PiBQQUdFX1NISUZUOwo+ICAgCQllbHNl Cj4gICAJCQl1bmJvdW5kICs9IG9iai0+YmFzZS5zaXplID4+IFBBR0VfU0hJRlQ7Cj4gICAJfQo+ ICAgCWxpc3RfZm9yX2VhY2hfZW50cnkob2JqLCAmZGV2X3ByaXYtPm1tLmJvdW5kX2xpc3QsIGds b2JhbF9saXN0KSB7Cj4gKwkJaWYgKCFvYmotPm1tLnBhZ2VzKQo+ICsJCQljb250aW51ZTsKPiAr Cj4gICAJCWlmICghY2FuX3JlbGVhc2VfcGFnZXMob2JqKSkKPiAgIAkJCXVuZXZpY3RhYmxlICs9 IG9iai0+YmFzZS5zaXplID4+IFBBR0VfU0hJRlQ7Cj4gICAJCWVsc2UKPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fdGlsaW5nLmMgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2dlbV90aWxpbmcuYwo+IGluZGV4IDExZTJlMGY1N2FjMS4uZWM0OGU0MDNhZGZl IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3RpbGluZy5jCj4g KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fdGlsaW5nLmMKPiBAQCAtMzI4LDEy ICszMjgsMTcgQEAgaTkxNV9nZW1fZ2V0X3RpbGluZyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2 b2lkICpkYXRhLAo+ICAgCXN0cnVjdCBkcm1faTkxNV9nZW1fZ2V0X3RpbGluZyAqYXJncyA9IGRh dGE7Cj4gICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYp Owo+ICAgCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmo7Cj4gKwlpbnQgZXJyID0gLUVO T0VOVDsKPiArCj4gKwlyY3VfcmVhZF9sb2NrKCk7Cj4gKwlvYmogPSBpOTE1X2dlbV9vYmplY3Rf bG9va3VwX3JjdShmaWxlLCBhcmdzLT5oYW5kbGUpOwo+ICsJaWYgKG9iaikgewo+ICsJCWFyZ3Mt PnRpbGluZ19tb2RlID0KPiArCQkJUkVBRF9PTkNFKG9iai0+dGlsaW5nX2FuZF9zdHJpZGUpICYg VElMSU5HX01BU0s7Cj4gKwkJZXJyID0gMDsKPiArCX0KPiArCXJjdV9yZWFkX3VubG9jaygpOwo+ ICAgClNob3VsZCBpdCBub3QganVzdCByZXR1cm4gLUVOT0VOVCBoZXJlIGlmICFvYmogcmF0aGVy IHRoYW4gZ29pbmcgdGhyb3VnaCAKdGhlIHJlc3Qgb2YgdGhlIGZ1bmN0aW9uIGFuZCBoYXZpbmcg dG8gbW9kaWZ5IHRoYXQgdG8gaWdub3JlIHVua25vd24gCnRpbGluZyBtb2RlcyAoYmVjYXVzZSBp dCBpcyBkb2luZyB0aGUgc3dpdGNoIG9uIHVuaW5pdGlhbGlzZWQgZGF0YSk/Cgo+IC0Jb2JqID0g aTkxNV9nZW1fb2JqZWN0X2xvb2t1cChmaWxlLCBhcmdzLT5oYW5kbGUpOwo+IC0JaWYgKCFvYmop Cj4gLQkJcmV0dXJuIC1FTk9FTlQ7Cj4gLQo+IC0JYXJncy0+dGlsaW5nX21vZGUgPSBSRUFEX09O Q0Uob2JqLT50aWxpbmdfYW5kX3N0cmlkZSkgJiBUSUxJTkdfTUFTSzsKPiAgIAlzd2l0Y2ggKGFy Z3MtPnRpbGluZ19tb2RlKSB7Cj4gICAJY2FzZSBJOTE1X1RJTElOR19YOgo+ICAgCQlhcmdzLT5z d2l6emxlX21vZGUgPSBkZXZfcHJpdi0+bW0uYml0XzZfc3dpenpsZV94Owo+IEBAIC0zNDEsMTEg KzM0NiwxMCBAQCBpOTE1X2dlbV9nZXRfdGlsaW5nKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZv aWQgKmRhdGEsCj4gICAJY2FzZSBJOTE1X1RJTElOR19ZOgo+ICAgCQlhcmdzLT5zd2l6emxlX21v ZGUgPSBkZXZfcHJpdi0+bW0uYml0XzZfc3dpenpsZV95Owo+ICAgCQlicmVhazsKPiArCWRlZmF1 bHQ6Cj4gICAJY2FzZSBJOTE1X1RJTElOR19OT05FOgo+ICAgCQlhcmdzLT5zd2l6emxlX21vZGUg PSBJOTE1X0JJVF82X1NXSVpaTEVfTk9ORTsKPiAgIAkJYnJlYWs7Cj4gLQlkZWZhdWx0Ogo+IC0J CURSTV9FUlJPUigidW5rbm93biB0aWxpbmcgbW9kZVxuIik7Cj4gICAJfQo+ICAgCj4gICAJLyog SGlkZSBiaXQgMTcgZnJvbSB0aGUgdXNlciAtLSBzZWUgY29tbWVudCBpbiBpOTE1X2dlbV9zZXRf dGlsaW5nICovCj4gQEAgLTM1OCw2ICszNjIsNSBAQCBpOTE1X2dlbV9nZXRfdGlsaW5nKHN0cnVj dCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCj4gICAJaWYgKGFyZ3MtPnN3aXp6bGVfbW9k ZSA9PSBJOTE1X0JJVF82X1NXSVpaTEVfOV8xMF8xNykKPiAgIAkJYXJncy0+c3dpenpsZV9tb2Rl ID0gSTkxNV9CSVRfNl9TV0laWkxFXzlfMTA7Cj4gICAKPiAtCWk5MTVfZ2VtX29iamVjdF9wdXRf dW5sb2NrZWQob2JqKTsKPiAtCXJldHVybiAwOwo+ICsJcmV0dXJuIGVycjsKPiAgIH0KCl9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWls aW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZy ZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=