From mboxrd@z Thu Jan 1 00:00:00 1970 From: John Harrison Subject: Re: [PATCH 23/41] drm/i915: Move object release to a freelist + worker Date: Tue, 18 Oct 2016 10:51:53 +0100 Message-ID: <0c35b432-2b9a-52df-74ae-2a5c3127e058@Intel.com> References: <20161014121833.439-1-chris@chris-wilson.co.uk> <20161014121833.439-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 mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTPS id 378D089190 for ; Tue, 18 Oct 2016 09:52:03 +0000 (UTC) In-Reply-To: <20161014121833.439-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 T24gMTQvMTAvMjAxNiAxMzoxOCwgQ2hyaXMgV2lsc29uIHdyb3RlOgo+IFdlIHdhbnQgdG8gaGlk ZSB0aGUgbGF0ZW5jeSBvZiByZWxlYXNpbmcgb2JqZWN0cyBhbmQgdGhlaXIgYmFja2luZwo+IHN0 b3JhZ2UgZnJvbSB0aGUgc3VibWlzc2lvbiwgc28gd2UgbW92ZSB0aGUgYWN0dWFsIGZyZWUgdG8g YSB3b3JrZXIuCj4gVGhpcyBhbGxvd3MgdXMgdG8gc3dpdGNoIHRvIHN0cnVjdF9tdXRleCBmcmVl aW5nIG9mIHRoZSBvYmplY3QgaW4gdGhlCj4gbmV4dCBwYXRjaC4KPgo+IEZ1cnRoZXJtb3JlLCBp ZiB3ZSBrbm93IHRoYXQgdGhlIG9iamVjdCB3ZSBhcmUgZGVyZWZlcmVuY2luZyByZW1haW5zIHZh bGlkCj4gZm9yIHRoZSBkdXJhdGlvbiBvZiBvdXIgYWNjZXNzLCB3ZSBjYW4gZm9yZ28gdGhlIHVz dWFsIHN5bmNocm9uaXNhdGlvbgo+IGJhcnJpZXJzIGFuZCBhdG9taWMgcmVmZXJlbmNlIGNvdW50 aW5nLiBUbyBlbnN1cmUgdGhpcyB3ZSBkZWZlciBmcmVlaW5nCj4gYW4gb2JqZWN0IHRpbCBhZnRl ciBhbiBSQ1UgZ3JhY2UgcGVyaW9kLCBzdWNoIHRoYXQgYW55IGxvb2t1cCBvZiB0aGUKPiBvYmpl Y3Qgd2l0aGluIGFuIFJDVSByZWFkIGNyaXRpY2FsIHNlY3Rpb24gd2lsbCByZW1haW4gdmFsaWQg dW50aWwKPiBhZnRlciB3ZSBleGl0IHRoYXQgY3JpdGljYWwgc2VjdGlvbi4gV2UgYWxzbyBlbXBs b3kgdGhpcyBkZWxheSBmb3IKPiByYXRlLWxpbWl0aW5nIHRoZSBzZXJpYWxpc2F0aW9uIG9uIHJl YWxsb2NhdGlvbiAtIHdlIGhhdmUgdG8gc2xvdyBkb3duCj4gb2JqZWN0IGNyZWF0aW9uIGluIG9y ZGVyIHRvIHByZXZlbnQgcmVzb3VyY2Ugc3RhcnZhdGlvbiAoaW4gcGFydGljdWxhciwKPiBmaWxl cykuCj4KPiB2MjogUmV0dXJuIGVhcmx5IGluIGk5MTVfZ2VtX3RpbGluZygpIGlvY3RsIHRvIHNr aXAgb3ZlciBzdXBlcmZsdW91cwo+IHdvcmsgb24gZXJyb3IuCj4KPiBTaWduZWQtb2ZmLWJ5OiBD aHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4KPiAtLS0KPiAgIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jICAgICAgfCAgMTUgKystCj4gICBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2Rydi5jICAgICAgICAgIHwgIDE5ICsrLS0KPiAgIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZHJ2LmggICAgICAgICAgfCAgNDQgKysrKysrKy0KPiAgIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMgICAgICAgICAgfCAxNjYgKysrKysrKysrKysrKysrKysr KysrLS0tLS0tLS0tLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fc2hyaW5rZXIu YyB8ICAxNCArKy0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3RpbGluZy5jICAg fCAgMjEgKystLQo+ICAgNiBmaWxlcyBjaGFuZ2VkLCAyMDIgaW5zZXJ0aW9ucygrKSwgNzcgZGVs ZXRpb25zKC0pCj4KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1 Z2ZzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwo+IGluZGV4IDExOGJk MzVmNzUwYy4uMjdmZDUzNzBmMGNjIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZGVidWdmcy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2Zz LmMKPiBAQCAtNDg3MywxMCArNDg3MywxMiBAQCBERUZJTkVfU0lNUExFX0FUVFJJQlVURShpOTE1 X3JpbmdfdGVzdF9pcnFfZm9wcywKPiAgICNkZWZpbmUgRFJPUF9CT1VORCAweDIKPiAgICNkZWZp bmUgRFJPUF9SRVRJUkUgMHg0Cj4gICAjZGVmaW5lIERST1BfQUNUSVZFIDB4OAo+IC0jZGVmaW5l IERST1BfQUxMIChEUk9QX1VOQk9VTkQgfCBcCj4gLQkJICBEUk9QX0JPVU5EIHwgXAo+IC0JCSAg RFJPUF9SRVRJUkUgfCBcCj4gLQkJICBEUk9QX0FDVElWRSkKPiArI2RlZmluZSBEUk9QX0ZSRUVE IDB4MTAKPiArI2RlZmluZSBEUk9QX0FMTCAoRFJPUF9VTkJPVU5ECXwgXAo+ICsJCSAgRFJPUF9C T1VORAl8IFwKPiArCQkgIERST1BfUkVUSVJFCXwgXAo+ICsJCSAgRFJPUF9BQ1RJVkUJfCBcCj4g KwkJICBEUk9QX0ZSRUVEKQo+ICAgc3RhdGljIGludAo+ICAgaTkxNV9kcm9wX2NhY2hlc19nZXQo dm9pZCAqZGF0YSwgdTY0ICp2YWwpCj4gICB7Cj4gQEAgLTQ5MjAsNiArNDkyMiwxMSBAQCBpOTE1 X2Ryb3BfY2FjaGVzX3NldCh2b2lkICpkYXRhLCB1NjQgdmFsKQo+ICAgdW5sb2NrOgo+ICAgCW11 dGV4X3VubG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwo+ICAgCj4gKwlpZiAodmFsICYgRFJPUF9G UkVFRCkgewo+ICsJCXN5bmNocm9uaXplX3JjdSgpOwo+ICsJCWZsdXNoX3dvcmsoJmRldl9wcml2 LT5tbS5mcmVlX3dvcmspOwo+ICsJfQo+ICsKPiAgIAlyZXR1cm4gcmV0Owo+ICAgfQo+ICAgCj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2Rydi5jCj4gaW5kZXggNWI3MmRhNmQ0NWEyLi5jNDZmOTZkOGJiMzgg MTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYwo+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMKPiBAQCAtNTM3LDE0ICs1MzcsMTcgQEAgc3Rh dGljIGNvbnN0IHN0cnVjdCB2Z2Ffc3dpdGNoZXJvb19jbGllbnRfb3BzIGk5MTVfc3dpdGNoZXJv b19vcHMgPSB7Cj4gICAJLmNhbl9zd2l0Y2ggPSBpOTE1X3N3aXRjaGVyb29fY2FuX3N3aXRjaCwK PiAgIH07Cj4gICAKPiAtc3RhdGljIHZvaWQgaTkxNV9nZW1fZmluaShzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2KQo+ICtzdGF0aWMgdm9pZCBpOTE1X2dlbV9maW5pKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdikKPiAgIHsKPiAtCW11dGV4X2xvY2soJmRldi0+c3RydWN0X211dGV4KTsK PiAtCWk5MTVfZ2VtX2NsZWFudXBfZW5naW5lcyhkZXYpOwo+IC0JaTkxNV9nZW1fY29udGV4dF9m aW5pKGRldik7Cj4gLQltdXRleF91bmxvY2soJmRldi0+c3RydWN0X211dGV4KTsKPiArCW11dGV4 X2xvY2soJmRldl9wcml2LT5kcm0uc3RydWN0X211dGV4KTsKPiArCWk5MTVfZ2VtX2NsZWFudXBf ZW5naW5lcygmZGV2X3ByaXYtPmRybSk7Cj4gKwlpOTE1X2dlbV9jb250ZXh0X2ZpbmkoJmRldl9w cml2LT5kcm0pOwo+ICsJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+ZHJtLnN0cnVjdF9tdXRleCk7 Cj4gKwo+ICsJc3luY2hyb25pemVfcmN1KCk7Cj4gKwlmbHVzaF93b3JrKCZkZXZfcHJpdi0+bW0u ZnJlZV93b3JrKTsKPiAgIAo+IC0JV0FSTl9PTighbGlzdF9lbXB0eSgmdG9faTkxNShkZXYpLT5j b250ZXh0X2xpc3QpKTsKPiArCVdBUk5fT04oIWxpc3RfZW1wdHkoJmRldl9wcml2LT5jb250ZXh0 X2xpc3QpKTsKPiAgIH0KPiAgIAo+ICAgc3RhdGljIGludCBpOTE1X2xvYWRfbW9kZXNldF9pbml0 KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gQEAgLTYxOSw3ICs2MjIsNyBAQCBzdGF0aWMgaW50 IGk5MTVfbG9hZF9tb2Rlc2V0X2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAgIGNsZWFu dXBfZ2VtOgo+ICAgCWlmIChpOTE1X2dlbV9zdXNwZW5kKGRldikpCj4gICAJCURSTV9FUlJPUigi ZmFpbGVkIHRvIGlkbGUgaGFyZHdhcmU7IGNvbnRpbnVpbmcgdG8gdW5sb2FkIVxuIik7Cj4gLQlp OTE1X2dlbV9maW5pKGRldik7Cj4gKwlpOTE1X2dlbV9maW5pKGRldl9wcml2KTsKPiAgIGNsZWFu dXBfaXJxOgo+ICAgCWludGVsX2d1Y19maW5pKGRldik7Cj4gICAJZHJtX2lycV91bmluc3RhbGwo ZGV2KTsKPiBAQCAtMTI5OSw3ICsxMzAyLDcgQEAgdm9pZCBpOTE1X2RyaXZlcl91bmxvYWQoc3Ry dWN0IGRybV9kZXZpY2UgKmRldikKPiAgIAlkcmFpbl93b3JrcXVldWUoZGV2X3ByaXYtPndxKTsK PiAgIAo+ICAgCWludGVsX2d1Y19maW5pKGRldik7Cj4gLQlpOTE1X2dlbV9maW5pKGRldik7Cj4g KwlpOTE1X2dlbV9maW5pKGRldl9wcml2KTsKPiAgIAlpbnRlbF9mYmNfY2xlYW51cF9jZmIoZGV2 X3ByaXYpOwo+ICAgCj4gICAJaW50ZWxfcG93ZXJfZG9tYWluc19maW5pKGRldl9wcml2KTsKPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiBpbmRleCBlMDY2Mjg0YWFjZTkuLmUyZmU1MGI2YjQ5MyAx MDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+IEBAIC0xMzU1LDggKzEzNTUsOCBAQCBzdHJ1 Y3QgaTkxNV9nZW1fbW0gewo+ICAgCXN0cnVjdCBsaXN0X2hlYWQgYm91bmRfbGlzdDsKPiAgIAkv KioKPiAgIAkgKiBMaXN0IG9mIG9iamVjdHMgd2hpY2ggYXJlIG5vdCBib3VuZCB0byB0aGUgR1RU ICh0aHVzCj4gLQkgKiBhcmUgaWRsZSBhbmQgbm90IHVzZWQgYnkgdGhlIEdQVSkgYnV0IHN0aWxs IGhhdmUKPiAtCSAqIChwcmVzdW1hYmx5IHVuY2FjaGVkKSBwYWdlcyBzdGlsbCBhdHRhY2hlZC4K PiArCSAqIGFyZSBpZGxlIGFuZCBub3QgdXNlZCBieSB0aGUgR1BVKS4gVGhlc2Ugb2JqZWN0cyBt YXkgb3IgbWF5Cj4gKwkgKiBub3QgYWN0dWFsbHkgaGF2ZSBhbnkgcGFnZXMgYXR0YWNoZWQuCj4g ICAJICovCj4gICAJc3RydWN0IGxpc3RfaGVhZCB1bmJvdW5kX2xpc3Q7Cj4gICAKPiBAQCAtMTM2 NSw2ICsxMzY1LDEyIEBAIHN0cnVjdCBpOTE1X2dlbV9tbSB7Cj4gICAJICovCj4gICAJc3RydWN0 IGxpc3RfaGVhZCB1c2VyZmF1bHRfbGlzdDsKPiAgIAo+ICsJLyoqCj4gKwkgKiBMaXN0IG9mIG9i amVjdHMgd2hpY2ggYXJlIHBlbmRpbmcgZGVzdHJ1Y3Rpb24uCj4gKwkgKi8KPiArCXN0cnVjdCBs bGlzdF9oZWFkIGZyZWVfbGlzdDsKPiArCXN0cnVjdCB3b3JrX3N0cnVjdCBmcmVlX3dvcms7Cj4g Kwo+ICAgCS8qKiBVc2FibGUgcG9ydGlvbiBvZiB0aGUgR1RUIGZvciBHRU0gKi8KPiAgIAl1bnNp Z25lZCBsb25nIHN0b2xlbl9iYXNlOyAvKiBsaW1pdGVkIHRvIGxvdyBtZW1vcnkgKDMyLWJpdCkg Ki8KPiAgIAo+IEBAIC0yMjExLDYgKzIyMTcsMTAgQEAgc3RydWN0IGRybV9pOTE1X2dlbV9vYmpl Y3Qgewo+ICAgCS8qKiBTdG9sZW4gbWVtb3J5IGZvciB0aGlzIG9iamVjdCwgaW5zdGVhZCBvZiBi ZWluZyBiYWNrZWQgYnkgc2htZW0uICovCj4gICAJc3RydWN0IGRybV9tbV9ub2RlICpzdG9sZW47 Cj4gICAJc3RydWN0IGxpc3RfaGVhZCBnbG9iYWxfbGlzdDsKPiArCXVuaW9uIHsKPiArCQlzdHJ1 Y3QgcmN1X2hlYWQgcmN1Owo+ICsJCXN0cnVjdCBsbGlzdF9ub2RlIGZyZWVkOwo+ICsJfTsKPiAg IAo+ICAgCS8qKgo+ICAgCSAqIFdoZXRoZXIgdGhlIG9iamVjdCBpcyBjdXJyZW50bHkgaW4gdGhl IEdHVFQgbW1hcC4KPiBAQCAtMjMyOCwxMCArMjMzOCwzOCBAQCB0b19pbnRlbF9ibyhzdHJ1Y3Qg ZHJtX2dlbV9vYmplY3QgKmdlbSkKPiAgIAlyZXR1cm4gY29udGFpbmVyX29mKGdlbSwgc3RydWN0 IGRybV9pOTE1X2dlbV9vYmplY3QsIGJhc2UpOwo+ICAgfQo+ICAgCj4gKy8qKgo+ICsgKiBpOTE1 X2dlbV9vYmplY3RfbG9va3VwX3JjdSAtIGxvb2sgdXAgYSB0ZW1wb3JhcnkgR0VNIG9iamVjdCBm cm9tIGl0cyBoYW5kbGUKPiArICogQGZpbHA6IERSTSBmaWxlIHByaXZhdGUgZGF0ZQo+ICsgKiBA aGFuZGxlOiB1c2Vyc3BhY2UgaGFuZGxlCj4gKyAqCj4gKyAqIFJldHVybnM6Cj4gKyAqCj4gKyAq IEEgcG9pbnRlciB0byB0aGUgb2JqZWN0IG5hbWVkIGJ5IHRoZSBoYW5kbGUgaWYgc3VjaCBleGlz dHMgb24gQGZpbHAsIE5VTEwKPiArICogb3RoZXJ3aXNlLiBUaGlzIG9iamVjdCBpcyBvbmx5IHZh bGlkIHdoaWxzdCB1bmRlciB0aGUgUkNVIHJlYWQgbG9jaywgYW5kCj4gKyAqIG5vdGUgY2FyZWZ1 bGx5IHRoZSBvYmplY3QgbWF5IGJlIGluIHRoZSBwcm9jZXNzIG9mIGJlaW5nIGRlc3Ryb3llZC4K PiArICovCj4gK3N0YXRpYyBpbmxpbmUgc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKgo+ICtp OTE1X2dlbV9vYmplY3RfbG9va3VwX3JjdShzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGUsIHUzMiBoYW5k bGUpCj4gK3sKPiArI2lmZGVmIENPTkZJR19MT0NLREVQCj4gKwlXQVJOX09OKGRlYnVnX2xvY2tz ICYmICFsb2NrX2lzX2hlbGQoJnJjdV9sb2NrX21hcCkpOwo+ICsjZW5kaWYKPiArCXJldHVybiBp ZHJfZmluZCgmZmlsZS0+b2JqZWN0X2lkciwgaGFuZGxlKTsKPiArfQo+ICsKPiAgIHN0YXRpYyBp bmxpbmUgc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKgo+ICAgaTkxNV9nZW1fb2JqZWN0X2xv b2t1cChzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGUsIHUzMiBoYW5kbGUpCj4gICB7Cj4gLQlyZXR1cm4g dG9faW50ZWxfYm8oZHJtX2dlbV9vYmplY3RfbG9va3VwKGZpbGUsIGhhbmRsZSkpOwo+ICsJc3Ry dWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iajsKPiArCj4gKwlyY3VfcmVhZF9sb2NrKCk7Cj4g KwlvYmogPSBpOTE1X2dlbV9vYmplY3RfbG9va3VwX3JjdShmaWxlLCBoYW5kbGUpOwo+ICsJaWYg KG9iaiAmJiAha3JlZl9nZXRfdW5sZXNzX3plcm8oJm9iai0+YmFzZS5yZWZjb3VudCkpCj4gKwkJ b2JqID0gTlVMTDsKPiArCXJjdV9yZWFkX3VubG9jaygpOwo+ICsKPiArCXJldHVybiBvYmo7Cj4g ICB9Cj4gICAKPiAgIF9fZGVwcmVjYXRlZAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2dlbS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYwo+IGluZGV4 IGYyNTBkNWJmMDM0Ni4uYzBjYjFhNDgyYTY3IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZ2VtLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5j Cj4gQEAgLTQyLDYgKzQyLDcgQEAKPiAgICNpbmNsdWRlIDxsaW51eC9wY2kuaD4KPiAgICNpbmNs dWRlIDxsaW51eC9kbWEtYnVmLmg+Cj4gICAKPiArc3RhdGljIHZvaWQgaTkxNV9nZW1fZmx1c2hf ZnJlZV9vYmplY3RzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KTsKPiAgIHN0YXRpYyB2 b2lkIGk5MTVfZ2VtX29iamVjdF9mbHVzaF9ndHRfd3JpdGVfZG9tYWluKHN0cnVjdCBkcm1faTkx NV9nZW1fb2JqZWN0ICpvYmopOwo+ICAgc3RhdGljIHZvaWQgaTkxNV9nZW1fb2JqZWN0X2ZsdXNo X2NwdV93cml0ZV9kb21haW4oc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaik7Cj4gICAK PiBAQCAtNjQ3LDYgKzY0OCw4IEBAIGk5MTVfZ2VtX2NyZWF0ZV9pb2N0bChzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2LCB2b2lkICpkYXRhLAo+ICAgewo+ICAgCXN0cnVjdCBkcm1faTkxNV9nZW1fY3Jl YXRlICphcmdzID0gZGF0YTsKPiAgIAo+ICsJaTkxNV9nZW1fZmx1c2hfZnJlZV9vYmplY3RzKHRv X2k5MTUoZGV2KSk7Cj4gKwo+ICAgCXJldHVybiBpOTE1X2dlbV9jcmVhdGUoZmlsZSwgZGV2LAo+ ICAgCQkJICAgICAgIGFyZ3MtPnNpemUsICZhcmdzLT5oYW5kbGUpOwo+ICAgfQo+IEBAIC0zNTM2 LDEwICszNTM5LDE0IEBAIGludCBpOTE1X2dlbV9nZXRfY2FjaGluZ19pb2N0bChzdHJ1Y3QgZHJt X2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAo+ICAgewo+ICAgCXN0cnVjdCBkcm1faTkxNV9nZW1f Y2FjaGluZyAqYXJncyA9IGRhdGE7Cj4gICAJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9i ajsKPiArCWludCBlcnIgPSAwOwo+ICAgCj4gLQlvYmogPSBpOTE1X2dlbV9vYmplY3RfbG9va3Vw KGZpbGUsIGFyZ3MtPmhhbmRsZSk7Cj4gLQlpZiAoIW9iaikKPiAtCQlyZXR1cm4gLUVOT0VOVDsK PiArCXJjdV9yZWFkX2xvY2soKTsKPiArCW9iaiA9IGk5MTVfZ2VtX29iamVjdF9sb29rdXBfcmN1 KGZpbGUsIGFyZ3MtPmhhbmRsZSk7Cj4gKwlpZiAoIW9iaikgewo+ICsJCWVyciA9IC1FTk9FTlQ7 Cj4gKwkJZ290byBvdXQ7Cj4gKwl9Cj4gICAKPiAgIAlzd2l0Y2ggKG9iai0+Y2FjaGVfbGV2ZWwp IHsKPiAgIAljYXNlIEk5MTVfQ0FDSEVfTExDOgo+IEBAIC0zNTU1LDkgKzM1NjIsOSBAQCBpbnQg aTkxNV9nZW1fZ2V0X2NhY2hpbmdfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAq ZGF0YSwKPiAgIAkJYXJncy0+Y2FjaGluZyA9IEk5MTVfQ0FDSElOR19OT05FOwo+ICAgCQlicmVh azsKPiAgIAl9Cj4gLQo+IC0JaTkxNV9nZW1fb2JqZWN0X3B1dF91bmxvY2tlZChvYmopOwo+IC0J cmV0dXJuIDA7Cj4gK291dDoKPiArCXJjdV9yZWFkX3VubG9jaygpOwo+ICsJcmV0dXJuIGVycjsK PiAgIH0KPiAgIAo+ICAgaW50IGk5MTVfZ2VtX3NldF9jYWNoaW5nX2lvY3RsKHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCj4gQEAgLTQwOTksMTAgKzQxMDYsMTQgQEAgaTkxNV9n ZW1fYnVzeV9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAo+ICAgCXN0 cnVjdCBkcm1faTkxNV9nZW1fYnVzeSAqYXJncyA9IGRhdGE7Cj4gICAJc3RydWN0IGRybV9pOTE1 X2dlbV9vYmplY3QgKm9iajsKPiAgIAl1bnNpZ25lZCBsb25nIGFjdGl2ZTsKPiArCWludCBlcnI7 Cj4gICAKPiAtCW9iaiA9IGk5MTVfZ2VtX29iamVjdF9sb29rdXAoZmlsZSwgYXJncy0+aGFuZGxl KTsKPiAtCWlmICghb2JqKQo+IC0JCXJldHVybiAtRU5PRU5UOwo+ICsJcmN1X3JlYWRfbG9jaygp Owo+ICsJb2JqID0gaTkxNV9nZW1fb2JqZWN0X2xvb2t1cF9yY3UoZmlsZSwgYXJncy0+aGFuZGxl KTsKPiArCWlmICghb2JqKSB7Cj4gKwkJZXJyID0gLUVOT0VOVDsKPiArCQlnb3RvIG91dDsKPiAr CX0KPiAgIAo+ICAgCWFyZ3MtPmJ1c3kgPSAwOwo+ICAgCWFjdGl2ZSA9IF9fSTkxNV9CT19BQ1RJ VkUob2JqKTsKPiBAQCAtNDEzMiw3ICs0MTQzLDYgQEAgaTkxNV9nZW1fYnVzeV9pb2N0bChzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAo+ICAgCQkgKiBhcmUgYnVzeSBpcyBub3Qg Y29tcGxldGVseSByZWxpYWJsZSAtIHdlIG9ubHkgZ3VhcmFudGVlCj4gICAJCSAqIHRoYXQgdGhl IG9iamVjdCB3YXMgYnVzeS4KPiAgIAkJICovCj4gLQkJcmN1X3JlYWRfbG9jaygpOwo+ICAgCj4g ICAJCWZvcl9lYWNoX2FjdGl2ZShhY3RpdmUsIGlkeCkKPiAgIAkJCWFyZ3MtPmJ1c3kgfD0gYnVz eV9jaGVja19yZWFkZXIoJm9iai0+bGFzdF9yZWFkW2lkeF0pOwo+IEBAIC00MTUwLDEyICs0MTYw LDExIEBAIGk5MTVfZ2VtX2J1c3lfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAq ZGF0YSwKPiAgIAkJICogdGhlIHJlc3VsdC4KPiAgIAkJICovCj4gICAJCWFyZ3MtPmJ1c3kgfD0g YnVzeV9jaGVja193cml0ZXIoJm9iai0+bGFzdF93cml0ZSk7Cj4gLQo+IC0JCXJjdV9yZWFkX3Vu bG9jaygpOwo+ICAgCX0KPiAgIAo+IC0JaTkxNV9nZW1fb2JqZWN0X3B1dF91bmxvY2tlZChvYmop Owo+IC0JcmV0dXJuIDA7Cj4gK291dDoKPiArCXJjdV9yZWFkX3VubG9jaygpOwo+ICsJcmV0dXJu IGVycjsKPiAgIH0KPiAgIAo+ICAgaW50Cj4gQEAgLTQzMDMsNyArNDMxMiw2IEBAIHN0cnVjdCBk cm1faTkxNV9nZW1fb2JqZWN0ICppOTE1X2dlbV9vYmplY3RfY3JlYXRlKHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYsCj4gICAKPiAgIGZhaWw6Cj4gICAJaTkxNV9nZW1fb2JqZWN0X2ZyZWUob2JqKTsK PiAtCj4gICAJcmV0dXJuIEVSUl9QVFIocmV0KTsKPiAgIH0KPiAgIAo+IEBAIC00MzMxLDE2ICs0 MzM5LDY5IEBAIHN0YXRpYyBib29sIGRpc2NhcmRfYmFja2luZ19zdG9yYWdlKHN0cnVjdCBkcm1f aTkxNV9nZW1fb2JqZWN0ICpvYmopCj4gICAJcmV0dXJuIGF0b21pY19sb25nX3JlYWQoJm9iai0+ YmFzZS5maWxwLT5mX2NvdW50KSA9PSAxOwo+ICAgfQo+ICAgCj4gLXZvaWQgaTkxNV9nZW1fZnJl ZV9vYmplY3Qoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpnZW1fb2JqKQo+ICtzdGF0aWMgdm9pZCBf X2k5MTVfZ2VtX2ZyZWVfb2JqZWN0cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKPiAr CQkJCSAgICBzdHJ1Y3QgbGxpc3Rfbm9kZSAqZnJlZWQpCj4gICB7Cj4gLQlzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX29iamVjdCAqb2JqID0gdG9faW50ZWxfYm8oZ2VtX29iaik7Cj4gLQlzdHJ1Y3QgZHJt X2RldmljZSAqZGV2ID0gb2JqLT5iYXNlLmRldjsKPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKPiAtCXN0cnVjdCBpOTE1X3ZtYSAqdm1hLCAqbmV4 dDsKPiArCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosICpvbjsKPiAgIAo+IC0JaW50 ZWxfcnVudGltZV9wbV9nZXQoZGV2X3ByaXYpOwo+ICsJbXV0ZXhfbG9jaygmaTkxNS0+ZHJtLnN0 cnVjdF9tdXRleCk7Cj4gKwlpbnRlbF9ydW50aW1lX3BtX2dldChpOTE1KTsKPiArCWxsaXN0X2Zv cl9lYWNoX2VudHJ5KG9iaiwgZnJlZWQsIGZyZWVkKSB7Cj4gKwkJc3RydWN0IGk5MTVfdm1hICp2 bWEsICp2bjsKPiArCj4gKwkJdHJhY2VfaTkxNV9nZW1fb2JqZWN0X2Rlc3Ryb3kob2JqKTsKPiAr Cj4gKwkJR0VNX0JVR19PTihpOTE1X2dlbV9vYmplY3RfaXNfYWN0aXZlKG9iaikpOwo+ICsJCWxp c3RfZm9yX2VhY2hfZW50cnlfc2FmZSh2bWEsIHZuLAo+ICsJCQkJCSAmb2JqLT52bWFfbGlzdCwg b2JqX2xpbmspIHsKPiArCQkJR0VNX0JVR19PTighaTkxNV92bWFfaXNfZ2d0dCh2bWEpKTsKPiAr CQkJR0VNX0JVR19PTihpOTE1X3ZtYV9pc19hY3RpdmUodm1hKSk7Cj4gKwkJCXZtYS0+ZmxhZ3Mg Jj0gfkk5MTVfVk1BX1BJTl9NQVNLOwo+ICsJCQlpOTE1X3ZtYV9jbG9zZSh2bWEpOwo+ICsJCX0K PiArCj4gKwkJbGlzdF9kZWwoJm9iai0+Z2xvYmFsX2xpc3QpOwo+ICsJfQo+ICsJaW50ZWxfcnVu dGltZV9wbV9wdXQoaTkxNSk7Cj4gKwltdXRleF91bmxvY2soJmk5MTUtPmRybS5zdHJ1Y3RfbXV0 ZXgpOwo+ICsKPiArCWxsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUob2JqLCBvbiwgZnJlZWQsIGZy ZWVkKSB7Cj4gKwkJR0VNX0JVR19PTihvYmotPmJpbmRfY291bnQpOwo+ICsJCUdFTV9CVUdfT04o YXRvbWljX3JlYWQoJm9iai0+ZnJvbnRidWZmZXJfYml0cykpOwo+ICsKPiArCQlpZiAob2JqLT5v cHMtPnJlbGVhc2UpCj4gKwkJCW9iai0+b3BzLT5yZWxlYXNlKG9iaik7Cj4gKwo+ICsJCWlmIChX QVJOX09OKGk5MTVfZ2VtX29iamVjdF9oYXNfcGlubmVkX3BhZ2VzKG9iaikpKQo+ICsJCQlhdG9t aWNfc2V0KCZvYmotPm1tLnBhZ2VzX3Bpbl9jb3VudCwgMCk7Cj4gKwkJX19pOTE1X2dlbV9vYmpl Y3RfcHV0X3BhZ2VzKG9iaik7Cj4gKwkJR0VNX0JVR19PTihvYmotPm1tLnBhZ2VzKTsKPiArCj4g KwkJaWYgKG9iai0+YmFzZS5pbXBvcnRfYXR0YWNoKQo+ICsJCQlkcm1fcHJpbWVfZ2VtX2Rlc3Ry b3koJm9iai0+YmFzZSwgTlVMTCk7Cj4gKwo+ICsJCWRybV9nZW1fb2JqZWN0X3JlbGVhc2UoJm9i ai0+YmFzZSk7Cj4gKwkJaTkxNV9nZW1faW5mb19yZW1vdmVfb2JqKGk5MTUsIG9iai0+YmFzZS5z aXplKTsKPiArCj4gKwkJa2ZyZWUob2JqLT5iaXRfMTcpOwo+ICsJCWk5MTVfZ2VtX29iamVjdF9m cmVlKG9iaik7Cj4gKwl9Cj4gK30KPiAgIAo+IC0JdHJhY2VfaTkxNV9nZW1fb2JqZWN0X2Rlc3Ry b3kob2JqKTsKPiArc3RhdGljIHZvaWQgaTkxNV9nZW1fZmx1c2hfZnJlZV9vYmplY3RzKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICppOTE1KQo+ICt7Cj4gKwlzdHJ1Y3QgbGxpc3Rfbm9kZSAqZnJl ZWQ7Cj4gKwo+ICsJZnJlZWQgPSBsbGlzdF9kZWxfYWxsKCZpOTE1LT5tbS5mcmVlX2xpc3QpOwo+ ICsJaWYgKHVubGlrZWx5KGZyZWVkKSkKPiArCQlfX2k5MTVfZ2VtX2ZyZWVfb2JqZWN0cyhpOTE1 LCBmcmVlZCk7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIF9faTkxNV9nZW1fZnJlZV93b3JrKHN0 cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKPiArewo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg Kmk5MTUgPQo+ICsJCWNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSwg bW0uZnJlZV93b3JrKTsKPiArCXN0cnVjdCBsbGlzdF9ub2RlICpmcmVlZDsKPiAgIAo+ICAgCS8q IEFsbCBmaWxlLW93bmVkIFZNQSBzaG91bGQgaGF2ZSBiZWVuIHJlbGVhc2VkIGJ5IHRoaXMgcG9p bnQgdGhyb3VnaAo+ICAgCSAqIGk5MTVfZ2VtX2Nsb3NlX29iamVjdCgpLCBvciBlYXJsaWVyIGJ5 IGk5MTVfZ2VtX2NvbnRleHRfY2xvc2UoKS4KPiBAQCAtNDM0OSw0MiArNDQxMCw0NCBAQCB2b2lk IGk5MTVfZ2VtX2ZyZWVfb2JqZWN0KHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqZ2VtX29iaikKPiAg IAkgKiB0aGUgR1RUIGVpdGhlciBmb3IgdGhlIHVzZXIgb3IgZm9yIHNjYW5vdXQpLiBUaG9zZSBW TUEgc3RpbGwgbmVlZCB0bwo+ICAgCSAqIHVuYm91bmQgbm93Lgo+ICAgCSAqLwo+IC0JbGlzdF9m b3JfZWFjaF9lbnRyeV9zYWZlKHZtYSwgbmV4dCwgJm9iai0+dm1hX2xpc3QsIG9ial9saW5rKSB7 Cj4gLQkJR0VNX0JVR19PTighaTkxNV92bWFfaXNfZ2d0dCh2bWEpKTsKPiAtCQlHRU1fQlVHX09O KGk5MTVfdm1hX2lzX2FjdGl2ZSh2bWEpKTsKPiAtCQl2bWEtPmZsYWdzICY9IH5JOTE1X1ZNQV9Q SU5fTUFTSzsKPiAtCQlpOTE1X3ZtYV9jbG9zZSh2bWEpOwo+IC0JfQo+IC0JR0VNX0JVR19PTihv YmotPmJpbmRfY291bnQpOwo+ICAgCj4gLQlXQVJOX09OKGF0b21pY19yZWFkKCZvYmotPmZyb250 YnVmZmVyX2JpdHMpKTsKPiArCXdoaWxlICgoZnJlZWQgPSBsbGlzdF9kZWxfYWxsKCZpOTE1LT5t bS5mcmVlX2xpc3QpKSkKPiArCQlfX2k5MTVfZ2VtX2ZyZWVfb2JqZWN0cyhpOTE1LCBmcmVlZCk7 Cj4gK30KPiAgIAo+IC0JaWYgKG9iai0+bW0ucGFnZXMgJiYgb2JqLT5tbS5tYWR2ID09IEk5MTVf TUFEVl9XSUxMTkVFRCAmJgo+IC0JICAgIGRldl9wcml2LT5xdWlya3MgJiBRVUlSS19QSU5fU1dJ WlpMRURfUEFHRVMgJiYKPiAtCSAgICBpOTE1X2dlbV9vYmplY3RfaXNfdGlsZWQob2JqKSkKPiAt CQlfX2k5MTVfZ2VtX29iamVjdF91bnBpbl9wYWdlcyhvYmopOwo+ICtzdGF0aWMgdm9pZCBfX2k5 MTVfZ2VtX2ZyZWVfb2JqZWN0X3JjdShzdHJ1Y3QgcmN1X2hlYWQgKmhlYWQpCj4gK3sKPiArCXN0 cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmogPQo+ICsJCWNvbnRhaW5lcl9vZihoZWFkLCB0 eXBlb2YoKm9iaiksIHJjdSk7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IHRv X2k5MTUob2JqLT5iYXNlLmRldik7Cj4gICAKPiAtCWlmIChvYmotPm9wcy0+cmVsZWFzZSkKPiAt CQlvYmotPm9wcy0+cmVsZWFzZShvYmopOwo+ICsJLyogV2UgY2FuJ3Qgc2ltcGx5IHVzZSBjYWxs X3JjdSgpIGZyb20gaTkxNV9nZW1fZnJlZV9vYmplY3QoKQo+ICsJICogYXMgd2UgbmVlZCB0byBi bG9jayB3aGlsc3QgdW5iaW5kaW5nLCBhbmQgdGhlIGNhbGxfcmN1Cj4gKwkgKiB0YXNrIG1heSBi ZSBjYWxsZWQgZnJvbSBzb2Z0aXJxIGNvbnRleHQuIFNvIHdlIHRha2UgYQo+ICsJICogZGV0b3Vy IHRocm91Z2ggYSB3b3JrZXIuCj4gKwkgKi8KPiArCWlmIChsbGlzdF9hZGQoJm9iai0+ZnJlZWQs ICZpOTE1LT5tbS5mcmVlX2xpc3QpKQo+ICsJCXNjaGVkdWxlX3dvcmsoJmk5MTUtPm1tLmZyZWVf d29yayk7Cj4gK30KPiArCj4gK3ZvaWQgaTkxNV9nZW1fZnJlZV9vYmplY3Qoc3RydWN0IGRybV9n ZW1fb2JqZWN0ICpnZW1fb2JqKQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAq b2JqID0gdG9faW50ZWxfYm8oZ2VtX29iaik7Cj4gICAKPiAtCWlmIChXQVJOX09OKGk5MTVfZ2Vt X29iamVjdF9oYXNfcGlubmVkX3BhZ2VzKG9iaikpKQo+IC0JCWF0b21pY19zZXQoJm9iai0+bW0u cGFnZXNfcGluX2NvdW50LCAwKTsKPiAgIAlpZiAoZGlzY2FyZF9iYWNraW5nX3N0b3JhZ2Uob2Jq KSkKPiAgIAkJb2JqLT5tbS5tYWR2ID0gSTkxNV9NQURWX0RPTlRORUVEOwo+IC0JX19pOTE1X2dl bV9vYmplY3RfcHV0X3BhZ2VzKG9iaik7Cj4gICAKPiAtCUdFTV9CVUdfT04ob2JqLT5tbS5wYWdl cyk7Cj4gLQo+IC0JaWYgKG9iai0+YmFzZS5pbXBvcnRfYXR0YWNoKQo+IC0JCWRybV9wcmltZV9n ZW1fZGVzdHJveSgmb2JqLT5iYXNlLCBOVUxMKTsKPiAtCj4gLQlkcm1fZ2VtX29iamVjdF9yZWxl YXNlKCZvYmotPmJhc2UpOwo+IC0JaTkxNV9nZW1faW5mb19yZW1vdmVfb2JqKGRldl9wcml2LCBv YmotPmJhc2Uuc2l6ZSk7Cj4gLQo+IC0Ja2ZyZWUob2JqLT5iaXRfMTcpOwo+IC0JaTkxNV9nZW1f b2JqZWN0X2ZyZWUob2JqKTsKPiArCWlmIChvYmotPm1tLnBhZ2VzICYmIG9iai0+bW0ubWFkdiA9 PSBJOTE1X01BRFZfV0lMTE5FRUQgJiYKPiArCSAgICB0b19pOTE1KG9iai0+YmFzZS5kZXYpLT5x dWlya3MgJiBRVUlSS19QSU5fU1dJWlpMRURfUEFHRVMgJiYKPiArCSAgICBpOTE1X2dlbV9vYmpl Y3RfaXNfdGlsZWQob2JqKSkKPiArCQlfX2k5MTVfZ2VtX29iamVjdF91bnBpbl9wYWdlcyhvYmop Owo+ICAgCj4gLQlpbnRlbF9ydW50aW1lX3BtX3B1dChkZXZfcHJpdik7Cj4gKwkvKiBCZWZvcmUg d2UgZnJlZSB0aGUgb2JqZWN0LCBtYWtlIHN1cmUgYW55IHB1cmUgUkNVLW9ubHkKPiArCSAqIHJl YWQtc2lkZSBjcml0aWNhbCBzZWN0aW9ucyBhcmUgY29tcGxldGUsIGUuZy4KPiArCSAqIGk5MTVf Z2VtX2J1c3lfaW9jdGwoKS4gRm9yIHRoZSBjb3JyZXNwb25kaW5nIHN5bmNocm9uaXplZAo+ICsJ ICogbG9va3VwIHNlZSBpOTE1X2dlbV9vYmplY3RfbG9va3VwX3JjdSgpLgo+ICsJICovCj4gKwlj YWxsX3JjdSgmb2JqLT5yY3UsIF9faTkxNV9nZW1fZnJlZV9vYmplY3RfcmN1KTsKPiAgIH0KPiAg IAo+ICAgdm9pZCBfX2k5MTVfZ2VtX29iamVjdF9yZWxlYXNlX3VubGVzc19hY3RpdmUoc3RydWN0 IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikKPiBAQCAtNDQzMyw2ICs0NDk2LDcgQEAgaW50IGk5 MTVfZ2VtX3N1c3BlbmQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAgIAljYW5jZWxfZGVsYXll ZF93b3JrX3N5bmMoJmRldl9wcml2LT5ncHVfZXJyb3IuaGFuZ2NoZWNrX3dvcmspOwo+ICAgCWNh bmNlbF9kZWxheWVkX3dvcmtfc3luYygmZGV2X3ByaXYtPmd0LnJldGlyZV93b3JrKTsKPiAgIAlm bHVzaF9kZWxheWVkX3dvcmsoJmRldl9wcml2LT5ndC5pZGxlX3dvcmspOwo+ICsJZmx1c2hfd29y aygmZGV2X3ByaXYtPm1tLmZyZWVfd29yayk7Cj4gICAKPiAgIAkvKiBBc3NlcnQgdGhhdCB3ZSBz dWNlc3NmdWxseSBmbHVzaGVkIGFsbCB0aGUgd29yayBhbmQKPiAgIAkgKiByZXNldCB0aGUgR1BV IGJhY2sgdG8gaXRzIGlkbGUsIGxvdyBwb3dlciBzdGF0ZS4KPiBAQCAtNDc0Niw2ICs0ODEwLDgg QEAgaTkxNV9nZW1fbG9hZF9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gICAJCQkJICBO VUxMKTsKPiAgIAo+ICAgCUlOSVRfTElTVF9IRUFEKCZkZXZfcHJpdi0+Y29udGV4dF9saXN0KTsK PiArCUlOSVRfV09SSygmZGV2X3ByaXYtPm1tLmZyZWVfd29yaywgX19pOTE1X2dlbV9mcmVlX3dv cmspOwo+ICsJaW5pdF9sbGlzdF9oZWFkKCZkZXZfcHJpdi0+bW0uZnJlZV9saXN0KTsKPiAgIAlJ TklUX0xJU1RfSEVBRCgmZGV2X3ByaXYtPm1tLnVuYm91bmRfbGlzdCk7Cj4gICAJSU5JVF9MSVNU X0hFQUQoJmRldl9wcml2LT5tbS5ib3VuZF9saXN0KTsKPiAgIAlJTklUX0xJU1RfSEVBRCgmZGV2 X3ByaXYtPm1tLmZlbmNlX2xpc3QpOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2dlbV9zaHJpbmtlci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fc2hy aW5rZXIuYwo+IGluZGV4IGM4YTRjNDBlYzJjMi4uMDI0MTY1OGFmMTZiIDEwMDY0NAo+IC0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3Nocmlua2VyLmMKPiArKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9zaHJpbmtlci5jCj4gQEAgLTIwMSw2ICsyMDEsMTAgQEAg aTkxNV9nZW1fc2hyaW5rKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgIAkJ CQkJCSAgICAgICB0eXBlb2YoKm9iaiksCj4gICAJCQkJCQkgICAgICAgZ2xvYmFsX2xpc3QpKSkg ewo+ICAgCQkJbGlzdF9tb3ZlX3RhaWwoJm9iai0+Z2xvYmFsX2xpc3QsICZzdGlsbF9pbl9saXN0 KTsKPiArCQkJaWYgKCFvYmotPm1tLnBhZ2VzKSB7Cj4gKwkJCQlsaXN0X2RlbF9pbml0KCZvYmot Pmdsb2JhbF9saXN0KTsKPiArCQkJCWNvbnRpbnVlOwo+ICsJCQl9Cj4gICAKPiAgIAkJCWlmIChm bGFncyAmIEk5MTVfU0hSSU5LX1BVUkdFQUJMRSAmJgo+ICAgCQkJICAgIG9iai0+bW0ubWFkdiAh PSBJOTE1X01BRFZfRE9OVE5FRUQpCj4gQEAgLTIxOCw4ICsyMjIsNiBAQCBpOTE1X2dlbV9zaHJp bmsoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAgCQkJaWYgKCFjYW5fcmVs ZWFzZV9wYWdlcyhvYmopKQo+ICAgCQkJCWNvbnRpbnVlOwo+ICAgCj4gLQkJCWk5MTVfZ2VtX29i amVjdF9nZXQob2JqKTsKPiAtCj4gICAJCQlpZiAodW5zYWZlX2Ryb3BfcGFnZXMob2JqKSkgewo+ ICAgCQkJCW11dGV4X2xvY2soJm9iai0+bW0ubG9jayk7Cj4gICAJCQkJaWYgKCFvYmotPm1tLnBh Z2VzKSB7Cj4gQEAgLTIyOCw4ICsyMzAsNiBAQCBpOTE1X2dlbV9zaHJpbmsoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAgCQkJCX0KPiAgIAkJCQltdXRleF91bmxvY2soJm9i ai0+bW0ubG9jayk7Cj4gICAJCQl9Cj4gLQo+IC0JCQlpOTE1X2dlbV9vYmplY3RfcHV0KG9iaik7 Cj4gICAJCX0KPiAgIAkJbGlzdF9zcGxpY2UoJnN0aWxsX2luX2xpc3QsIHBoYXNlLT5saXN0KTsK PiAgIAl9Cj4gQEAgLTM5NiwxMiArMzk2LDE4IEBAIGk5MTVfZ2VtX3Nocmlua2VyX29vbShzdHJ1 Y3Qgbm90aWZpZXJfYmxvY2sgKm5iLCB1bnNpZ25lZCBsb25nIGV2ZW50LCB2b2lkICpwdHIpCj4g ICAJICovCj4gICAJdW5ib3VuZCA9IGJvdW5kID0gdW5ldmljdGFibGUgPSAwOwo+ICAgCWxpc3Rf Zm9yX2VhY2hfZW50cnkob2JqLCAmZGV2X3ByaXYtPm1tLnVuYm91bmRfbGlzdCwgZ2xvYmFsX2xp c3QpIHsKPiArCQlpZiAoIW9iai0+bW0ucGFnZXMpCj4gKwkJCWNvbnRpbnVlOwo+ICsKPiAgIAkJ aWYgKCFjYW5fcmVsZWFzZV9wYWdlcyhvYmopKQo+ICAgCQkJdW5ldmljdGFibGUgKz0gb2JqLT5i YXNlLnNpemUgPj4gUEFHRV9TSElGVDsKPiAgIAkJZWxzZQo+ICAgCQkJdW5ib3VuZCArPSBvYmot PmJhc2Uuc2l6ZSA+PiBQQUdFX1NISUZUOwo+ICAgCX0KPiAgIAlsaXN0X2Zvcl9lYWNoX2VudHJ5 KG9iaiwgJmRldl9wcml2LT5tbS5ib3VuZF9saXN0LCBnbG9iYWxfbGlzdCkgewo+ICsJCWlmICgh b2JqLT5tbS5wYWdlcykKPiArCQkJY29udGludWU7Cj4gKwo+ICAgCQlpZiAoIWNhbl9yZWxlYXNl X3BhZ2VzKG9iaikpCj4gICAJCQl1bmV2aWN0YWJsZSArPSBvYmotPmJhc2Uuc2l6ZSA+PiBQQUdF X1NISUZUOwo+ICAgCQllbHNlCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZ2VtX3RpbGluZy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fdGlsaW5nLmMK PiBpbmRleCA2NjA4Nzk5ZWUxZjkuLmM2M2E5Y2Y0ZGEzMyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2dlbV90aWxpbmcuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZ2VtX3RpbGluZy5jCj4gQEAgLTMyNSwxMiArMzI1LDE5IEBAIGk5MTVfZ2VtX2dl dF90aWxpbmcoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKPiAgIAlzdHJ1Y3Qg ZHJtX2k5MTVfZ2VtX2dldF90aWxpbmcgKmFyZ3MgPSBkYXRhOwo+ICAgCXN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKPiAgIAlzdHJ1Y3QgZHJtX2k5MTVf Z2VtX29iamVjdCAqb2JqOwo+ICsJaW50IGVyciA9IC1FTk9FTlQ7Cj4gKwo+ICsJcmN1X3JlYWRf bG9jaygpOwo+ICsJb2JqID0gaTkxNV9nZW1fb2JqZWN0X2xvb2t1cF9yY3UoZmlsZSwgYXJncy0+ aGFuZGxlKTsKPiArCWlmIChvYmopIHsKPiArCQlhcmdzLT50aWxpbmdfbW9kZSA9Cj4gKwkJCVJF QURfT05DRShvYmotPnRpbGluZ19hbmRfc3RyaWRlKSAmIFRJTElOR19NQVNLOwo+ICsJCWVyciA9 IDA7Cj4gKwl9Cj4gKwlyY3VfcmVhZF91bmxvY2soKTsKPiArCWlmICh1bmxpa2VseShlcnIpKQo+ ICsJCXJldHVybiBlcnI7Cj4gICAKPiAtCW9iaiA9IGk5MTVfZ2VtX29iamVjdF9sb29rdXAoZmls ZSwgYXJncy0+aGFuZGxlKTsKPiAtCWlmICghb2JqKQo+IC0JCXJldHVybiAtRU5PRU5UOwo+IC0K PiAtCWFyZ3MtPnRpbGluZ19tb2RlID0gUkVBRF9PTkNFKG9iai0+dGlsaW5nX2FuZF9zdHJpZGUp ICYgVElMSU5HX01BU0s7Cj4gICAJc3dpdGNoIChhcmdzLT50aWxpbmdfbW9kZSkgewo+ICAgCWNh c2UgSTkxNV9USUxJTkdfWDoKPiAgIAkJYXJncy0+c3dpenpsZV9tb2RlID0gZGV2X3ByaXYtPm1t LmJpdF82X3N3aXp6bGVfeDsKPiBAQCAtMzM4LDExICszNDUsMTAgQEAgaTkxNV9nZW1fZ2V0X3Rp bGluZyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAo+ICAgCWNhc2UgSTkxNV9U SUxJTkdfWToKPiAgIAkJYXJncy0+c3dpenpsZV9tb2RlID0gZGV2X3ByaXYtPm1tLmJpdF82X3N3 aXp6bGVfeTsKPiAgIAkJYnJlYWs7Cj4gKwlkZWZhdWx0Ogo+ICAgCWNhc2UgSTkxNV9USUxJTkdf Tk9ORToKPiAgIAkJYXJncy0+c3dpenpsZV9tb2RlID0gSTkxNV9CSVRfNl9TV0laWkxFX05PTkU7 Cj4gICAJCWJyZWFrOwo+IC0JZGVmYXVsdDoKPiAtCQlEUk1fRVJST1IoInVua25vd24gdGlsaW5n IG1vZGVcbiIpOwpXaHkgaXMgdGhpcyBjaGFuZ2Ugc3RpbGwgbmVlZGVkPyBOb3cgdGhhdCBpdCBy ZXR1cm5zIGVhcmx5IG9uIGxvb2t1cCAKZmFpbHVyZSwgdGhlcmUgc2hvdWxkIGJlIG5vIG5lZWQg dG8gaWdub3JlIGJyb2tlbi91bnN1cHBvcnRlZCB0aWxpbmcgCm1vZGVzLiBTbyB3aHkgc2lsZW5j ZSB0aGUgZXJyb3IgbWVzc2FnZT8KCj4gICAJfQo+ICAgCj4gICAJLyogSGlkZSBiaXQgMTcgZnJv bSB0aGUgdXNlciAtLSBzZWUgY29tbWVudCBpbiBpOTE1X2dlbV9zZXRfdGlsaW5nICovCj4gQEAg LTM1NSw2ICszNjEsNSBAQCBpOTE1X2dlbV9nZXRfdGlsaW5nKHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYsIHZvaWQgKmRhdGEsCj4gICAJaWYgKGFyZ3MtPnN3aXp6bGVfbW9kZSA9PSBJOTE1X0JJVF82 X1NXSVpaTEVfOV8xMF8xNykKPiAgIAkJYXJncy0+c3dpenpsZV9tb2RlID0gSTkxNV9CSVRfNl9T V0laWkxFXzlfMTA7Cj4gICAKPiAtCWk5MTVfZ2VtX29iamVjdF9wdXRfdW5sb2NrZWQob2JqKTsK PiAgIAlyZXR1cm4gMDsKPiAgIH0KCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVk ZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZv L2ludGVsLWdmeAo=