From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH 09/13] drm/irq: Make pipe unsigned and name consistent Date: Wed, 12 Aug 2015 17:32:14 +0200 Message-ID: <20150812153214.GL17734@phenom.ffwll.local> References: <1439391635-29166-1-git-send-email-thierry.reding@gmail.com> <1439391635-29166-9-git-send-email-thierry.reding@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wi0-f174.google.com (mail-wi0-f174.google.com [209.85.212.174]) by gabe.freedesktop.org (Postfix) with ESMTPS id 9C8356E1FA for ; Wed, 12 Aug 2015 08:32:18 -0700 (PDT) Received: by wibhh20 with SMTP id hh20so34965529wib.0 for ; Wed, 12 Aug 2015 08:32:17 -0700 (PDT) Content-Disposition: inline In-Reply-To: <1439391635-29166-9-git-send-email-thierry.reding@gmail.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Thierry Reding Cc: Daniel Vetter , dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org T24gV2VkLCBBdWcgMTIsIDIwMTUgYXQgMDU6MDA6MzFQTSArMDIwMCwgVGhpZXJyeSBSZWRpbmcg d3JvdGU6Cj4gRnJvbTogVGhpZXJyeSBSZWRpbmcgPHRyZWRpbmdAbnZpZGlhLmNvbT4KPiAKPiBO YW1lIGFsbCByZWZlcmVuY2VzIHRvIHRoZSBwaXBlIG51bWJlciAoQ1JUQyBpbmRleCkgY29uc2lz dGVudGx5IHRvIG1ha2UKPiBpdCBlYXNpZXIgdG8gZGlzdGluZ3Vpc2ggd2hpY2ggaXMgYSBwaXBl IG51bWJlciBhbmQgd2hpY2ggaXMgYSBwb2ludGVyCj4gdG8gc3RydWN0IGRybV9jcnRjLgo+IAo+ IFdoaWxlIGF0IGl0IGFsc28gbWFrZSBhbGwgcmVmZXJlbmNlcyB0byB0aGUgcGlwZSBudW1iZXIg dW5zaWduZWQgYmVjYXVzZQo+IHRoZXJlIGlzIG5vIGxvbmdlciBhbnkgcmVhc29uIHdoeSBpdCBz aG91bGQgZXZlciBiZSBuZWdhdGl2ZS4KPiAKPiBTaWduZWQtb2ZmLWJ5OiBUaGllcnJ5IFJlZGlu ZyA8dHJlZGluZ0BudmlkaWEuY29tPgoKVGhlcmUncyAyICJpbnQgY3J0YyIgYW5kIG9uZSAiaW50 IHBpcGUiICh3aXRob3V0IHRoZSB1bnNpZ25lZCkgbGVmdCBhZnRlcgp0aGlzIHBhdGNoLiBDYW4g eW91IHBsZWFzZSBkbyBhIGZvbGxvdy11cD8gQXBwbGllZCB0aGlzIG1lYW53aGlsZS4KLURhbmll bAoKPiAtLS0KPiAgZHJpdmVycy9ncHUvZHJtL2RybV9pcnEuYyB8IDMxNiArKysrKysrKysrKysr KysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4gIGluY2x1ZGUvZHJtL2RybVAuaCAg ICAgICAgfCAgMzIgKystLS0KPiAgMiBmaWxlcyBjaGFuZ2VkLCAxNzUgaW5zZXJ0aW9ucygrKSwg MTczIGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2ly cS5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9pcnEuYwo+IGluZGV4IGE5NTdiOTYxOGU4NS4uZjQy NDU5YjI4NjJkIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1faXJxLmMKPiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vZHJtX2lycS5jCj4gQEAgLTQzLDggKzQzLDggQEAKPiAgI2luY2x1 ZGUgPGxpbnV4L2V4cG9ydC5oPgo+ICAKPiAgLyogQWNjZXNzIG1hY3JvIGZvciBzbG90cyBpbiB2 YmxhbmsgdGltZXN0YW1wIHJpbmdidWZmZXIuICovCj4gLSNkZWZpbmUgdmJsYW5rdGltZXN0YW1w KGRldiwgY3J0YywgY291bnQpIFwKPiAtCSgoZGV2KS0+dmJsYW5rW2NydGNdLnRpbWVbKGNvdW50 KSAlIERSTV9WQkxBTktUSU1FX1JCU0laRV0pCj4gKyNkZWZpbmUgdmJsYW5rdGltZXN0YW1wKGRl diwgcGlwZSwgY291bnQpIFwKPiArCSgoZGV2KS0+dmJsYW5rW3BpcGVdLnRpbWVbKGNvdW50KSAl IERSTV9WQkxBTktUSU1FX1JCU0laRV0pCj4gIAo+ICAvKiBSZXRyeSB0aW1lc3RhbXAgY2FsY3Vs YXRpb24gdXAgdG8gMyB0aW1lcyB0byBzYXRpc2Z5Cj4gICAqIGRybV90aW1lc3RhbXBfcHJlY2lz aW9uIGJlZm9yZSBnaXZpbmcgdXAuCj4gQEAgLTU3LDcgKzU3LDcgQEAKPiAgI2RlZmluZSBEUk1f UkVEVU5EQU5UX1ZCTElSUV9USFJFU0hfTlMgMTAwMDAwMAo+ICAKPiAgc3RhdGljIGJvb2wKPiAt ZHJtX2dldF9sYXN0X3ZibHRpbWVzdGFtcChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBpbnQgY3J0 YywKPiArZHJtX2dldF9sYXN0X3ZibHRpbWVzdGFtcChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1 bnNpZ25lZCBpbnQgcGlwZSwKPiAgCQkJICBzdHJ1Y3QgdGltZXZhbCAqdHZibGFuaywgdW5zaWdu ZWQgZmxhZ3MpOwo+ICAKPiAgc3RhdGljIHVuc2lnbmVkIGludCBkcm1fdGltZXN0YW1wX3ByZWNp c2lvbiA9IDIwOyAgLyogRGVmYXVsdCB0byAyMCB1c2Vjcy4gKi8KPiBAQCAtMTA3LDcgKzEwNyw3 IEBAIHN0YXRpYyB2b2lkIHN0b3JlX3ZibGFuayhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBpbnQg Y3J0YywKPiAgLyoqCj4gICAqIGRybV91cGRhdGVfdmJsYW5rX2NvdW50IC0gdXBkYXRlIHRoZSBt YXN0ZXIgdmJsYW5rIGNvdW50ZXIKPiAgICogQGRldjogRFJNIGRldmljZQo+IC0gKiBAY3J0Yzog Y291bnRlciB0byB1cGRhdGUKPiArICogQHBpcGU6IGNvdW50ZXIgdG8gdXBkYXRlCj4gICAqCj4g ICAqIENhbGwgYmFjayBpbnRvIHRoZSBkcml2ZXIgdG8gdXBkYXRlIHRoZSBhcHByb3ByaWF0ZSB2 YmxhbmsgY291bnRlcgo+ICAgKiAoc3BlY2lmaWVkIGJ5IEBjcnRjKS4gIERlYWwgd2l0aCB3cmFw YXJvdW5kLCBpZiBpdCBvY2N1cnJlZCwgYW5kCj4gQEAgLTEyMCw5ICsxMjAsOSBAQCBzdGF0aWMg dm9pZCBzdG9yZV92Ymxhbmsoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgaW50IGNydGMsCj4gICAq IE5vdGU6IGNhbGxlciBtdXN0IGhvbGQgZGV2LT52YmxfbG9jayBzaW5jZSB0aGlzIHJlYWRzICYg d3JpdGVzCj4gICAqIGRldmljZSB2YmxhbmsgZmllbGRzLgo+ICAgKi8KPiAtc3RhdGljIHZvaWQg ZHJtX3VwZGF0ZV92YmxhbmtfY291bnQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgaW50IGNydGMp Cj4gK3N0YXRpYyB2b2lkIGRybV91cGRhdGVfdmJsYW5rX2NvdW50KHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYsIHVuc2lnbmVkIGludCBwaXBlKQo+ICB7Cj4gLQlzdHJ1Y3QgZHJtX3ZibGFua19jcnRj ICp2YmxhbmsgPSAmZGV2LT52YmxhbmtbY3J0Y107Cj4gKwlzdHJ1Y3QgZHJtX3ZibGFua19jcnRj ICp2YmxhbmsgPSAmZGV2LT52YmxhbmtbcGlwZV07Cj4gIAl1MzIgY3VyX3ZibGFuaywgZGlmZjsK PiAgCWJvb2wgcmM7Cj4gIAlzdHJ1Y3QgdGltZXZhbCB0X3ZibGFuazsKPiBAQCAtMTQwLDIxICsx NDAsMjEgQEAgc3RhdGljIHZvaWQgZHJtX3VwZGF0ZV92YmxhbmtfY291bnQoc3RydWN0IGRybV9k ZXZpY2UgKmRldiwgaW50IGNydGMpCj4gIAkgKiBjb3JyZXNwb25kaW5nIHZibGFuayB0aW1lc3Rh bXAuCj4gIAkgKi8KPiAgCWRvIHsKPiAtCQljdXJfdmJsYW5rID0gZGV2LT5kcml2ZXItPmdldF92 YmxhbmtfY291bnRlcihkZXYsIGNydGMpOwo+IC0JCXJjID0gZHJtX2dldF9sYXN0X3ZibHRpbWVz dGFtcChkZXYsIGNydGMsICZ0X3ZibGFuaywgMCk7Cj4gLQl9IHdoaWxlIChjdXJfdmJsYW5rICE9 IGRldi0+ZHJpdmVyLT5nZXRfdmJsYW5rX2NvdW50ZXIoZGV2LCBjcnRjKSk7Cj4gKwkJY3VyX3Zi bGFuayA9IGRldi0+ZHJpdmVyLT5nZXRfdmJsYW5rX2NvdW50ZXIoZGV2LCBwaXBlKTsKPiArCQly YyA9IGRybV9nZXRfbGFzdF92Ymx0aW1lc3RhbXAoZGV2LCBwaXBlLCAmdF92YmxhbmssIDApOwo+ ICsJfSB3aGlsZSAoY3VyX3ZibGFuayAhPSBkZXYtPmRyaXZlci0+Z2V0X3ZibGFua19jb3VudGVy KGRldiwgcGlwZSkpOwo+ICAKPiAgCS8qIERlYWwgd2l0aCBjb3VudGVyIHdyYXAgKi8KPiAgCWRp ZmYgPSBjdXJfdmJsYW5rIC0gdmJsYW5rLT5sYXN0Owo+ICAJaWYgKGN1cl92YmxhbmsgPCB2Ymxh bmstPmxhc3QpIHsKPiAgCQlkaWZmICs9IGRldi0+bWF4X3ZibGFua19jb3VudCArIDE7Cj4gIAo+ IC0JCURSTV9ERUJVRygibGFzdF92YmxhbmtbJWRdPTB4JXgsIGN1cl92Ymxhbms9MHgleCA9PiBk aWZmPTB4JXhcbiIsCj4gLQkJCSAgY3J0YywgdmJsYW5rLT5sYXN0LCBjdXJfdmJsYW5rLCBkaWZm KTsKPiArCQlEUk1fREVCVUcoImxhc3RfdmJsYW5rWyV1XT0weCV4LCBjdXJfdmJsYW5rPTB4JXgg PT4gZGlmZj0weCV4XG4iLAo+ICsJCQkgIHBpcGUsIHZibGFuay0+bGFzdCwgY3VyX3ZibGFuaywg ZGlmZik7Cj4gIAl9Cj4gIAo+IC0JRFJNX0RFQlVHKCJ1cGRhdGluZyB2YmxhbmsgY291bnQgb24g Y3J0YyAlZCwgbWlzc2VkICVkXG4iLAo+IC0JCSAgY3J0YywgZGlmZik7Cj4gKwlEUk1fREVCVUco InVwZGF0aW5nIHZibGFuayBjb3VudCBvbiBjcnRjICV1LCBtaXNzZWQgJWRcbiIsCj4gKwkJICBw aXBlLCBkaWZmKTsKPiAgCj4gIAlpZiAoZGlmZiA9PSAwKQo+ICAJCXJldHVybjsKPiBAQCAtMTY3 LDcgKzE2Nyw3IEBAIHN0YXRpYyB2b2lkIGRybV91cGRhdGVfdmJsYW5rX2NvdW50KHN0cnVjdCBk cm1fZGV2aWNlICpkZXYsIGludCBjcnRjKQo+ICAJaWYgKCFyYykKPiAgCQl0X3ZibGFuayA9IChz dHJ1Y3QgdGltZXZhbCkgezAsIDB9Owo+ICAKPiAtCXN0b3JlX3ZibGFuayhkZXYsIGNydGMsIGRp ZmYsICZ0X3ZibGFuayk7Cj4gKwlzdG9yZV92YmxhbmsoZGV2LCBwaXBlLCBkaWZmLCAmdF92Ymxh bmspOwo+ICB9Cj4gIAo+ICAvKgo+IEBAIC0xNzYsOSArMTc2LDkgQEAgc3RhdGljIHZvaWQgZHJt X3VwZGF0ZV92YmxhbmtfY291bnQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgaW50IGNydGMpCj4g ICAqIGFyZSBwcmVzZXJ2ZWQsIGV2ZW4gaWYgdGhlcmUgYXJlIGFueSBzcHVyaW91cyB2Ymxhbmsg aXJxJ3MgYWZ0ZXIKPiAgICogZGlzYWJsZS4KPiAgICovCj4gLXN0YXRpYyB2b2lkIHZibGFua19k aXNhYmxlX2FuZF9zYXZlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGludCBjcnRjKQo+ICtzdGF0 aWMgdm9pZCB2YmxhbmtfZGlzYWJsZV9hbmRfc2F2ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1 bnNpZ25lZCBpbnQgcGlwZSkKPiAgewo+IC0Jc3RydWN0IGRybV92YmxhbmtfY3J0YyAqdmJsYW5r ID0gJmRldi0+dmJsYW5rW2NydGNdOwo+ICsJc3RydWN0IGRybV92YmxhbmtfY3J0YyAqdmJsYW5r ID0gJmRldi0+dmJsYW5rW3BpcGVdOwo+ICAJdW5zaWduZWQgbG9uZyBpcnFmbGFnczsKPiAgCXUz MiB2Ymxjb3VudDsKPiAgCXM2NCBkaWZmX25zOwo+IEBAIC0yMDYsOCArMjA2LDggQEAgc3RhdGlj IHZvaWQgdmJsYW5rX2Rpc2FibGVfYW5kX3NhdmUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgaW50 IGNydGMpCj4gIAkgKiB2YmxhbmsgaW50ZXJydXB0IGlzIGRpc2FibGVkLgo+ICAJICovCj4gIAlp ZiAoIXZibGFuay0+ZW5hYmxlZCAmJgo+IC0JICAgIGRybV9nZXRfbGFzdF92Ymx0aW1lc3RhbXAo ZGV2LCBjcnRjLCAmdHZibGFuaywgMCkpIHsKPiAtCQlkcm1fdXBkYXRlX3ZibGFua19jb3VudChk ZXYsIGNydGMpOwo+ICsJICAgIGRybV9nZXRfbGFzdF92Ymx0aW1lc3RhbXAoZGV2LCBwaXBlLCAm dHZibGFuaywgMCkpIHsKPiArCQlkcm1fdXBkYXRlX3ZibGFua19jb3VudChkZXYsIHBpcGUpOwo+ ICAJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmRldi0+dmJsYW5rX3RpbWVfbG9jaywgaXJxZmxh Z3MpOwo+ICAJCXJldHVybjsKPiAgCX0KPiBAQCAtMjE4LDcgKzIxOCw3IEBAIHN0YXRpYyB2b2lk IHZibGFua19kaXNhYmxlX2FuZF9zYXZlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGludCBjcnRj KQo+ICAJICogaGFyZHdhcmUgcG90ZW50aWFsbHkgcnVudGltZSBzdXNwZW5kZWQuCj4gIAkgKi8K PiAgCWlmICh2YmxhbmstPmVuYWJsZWQpIHsKPiAtCQlkZXYtPmRyaXZlci0+ZGlzYWJsZV92Ymxh bmsoZGV2LCBjcnRjKTsKPiArCQlkZXYtPmRyaXZlci0+ZGlzYWJsZV92YmxhbmsoZGV2LCBwaXBl KTsKPiAgCQl2YmxhbmstPmVuYWJsZWQgPSBmYWxzZTsKPiAgCX0KPiAgCj4gQEAgLTIzNSw5ICsy MzUsOSBAQCBzdGF0aWMgdm9pZCB2YmxhbmtfZGlzYWJsZV9hbmRfc2F2ZShzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2LCBpbnQgY3J0YykKPiAgCSAqIGRlbGF5ZWQgZ3B1IGNvdW50ZXIgaW5jcmVtZW50 Lgo+ICAJICovCj4gIAlkbyB7Cj4gLQkJdmJsYW5rLT5sYXN0ID0gZGV2LT5kcml2ZXItPmdldF92 YmxhbmtfY291bnRlcihkZXYsIGNydGMpOwo+IC0JCXZibHJjID0gZHJtX2dldF9sYXN0X3ZibHRp bWVzdGFtcChkZXYsIGNydGMsICZ0dmJsYW5rLCAwKTsKPiAtCX0gd2hpbGUgKHZibGFuay0+bGFz dCAhPSBkZXYtPmRyaXZlci0+Z2V0X3ZibGFua19jb3VudGVyKGRldiwgY3J0YykgJiYgKC0tY291 bnQpICYmIHZibHJjKTsKPiArCQl2YmxhbmstPmxhc3QgPSBkZXYtPmRyaXZlci0+Z2V0X3ZibGFu a19jb3VudGVyKGRldiwgcGlwZSk7Cj4gKwkJdmJscmMgPSBkcm1fZ2V0X2xhc3RfdmJsdGltZXN0 YW1wKGRldiwgcGlwZSwgJnR2YmxhbmssIDApOwo+ICsJfSB3aGlsZSAodmJsYW5rLT5sYXN0ICE9 IGRldi0+ZHJpdmVyLT5nZXRfdmJsYW5rX2NvdW50ZXIoZGV2LCBwaXBlKSAmJiAoLS1jb3VudCkg JiYgdmJscmMpOwo+ICAKPiAgCWlmICghY291bnQpCj4gIAkJdmJscmMgPSAwOwo+IEBAIC0yNDcs NyArMjQ3LDcgQEAgc3RhdGljIHZvaWQgdmJsYW5rX2Rpc2FibGVfYW5kX3NhdmUoc3RydWN0IGRy bV9kZXZpY2UgKmRldiwgaW50IGNydGMpCj4gIAkgKi8KPiAgCXZibGNvdW50ID0gdmJsYW5rLT5j b3VudDsKPiAgCWRpZmZfbnMgPSB0aW1ldmFsX3RvX25zKCZ0dmJsYW5rKSAtCj4gLQkJICB0aW1l dmFsX3RvX25zKCZ2Ymxhbmt0aW1lc3RhbXAoZGV2LCBjcnRjLCB2Ymxjb3VudCkpOwo+ICsJCSAg dGltZXZhbF90b19ucygmdmJsYW5rdGltZXN0YW1wKGRldiwgcGlwZSwgdmJsY291bnQpKTsKPiAg Cj4gIAkvKiBJZiB0aGVyZSBpcyBhdCBsZWFzdCAxIG1zZWMgZGlmZmVyZW5jZSBiZXR3ZWVuIHRo ZSBsYXN0IHN0b3JlZAo+ICAJICogdGltZXN0YW1wIGFuZCB0dmJsYW5rLCB0aGVuIHdlIGFyZSBj dXJyZW50bHkgZXhlY3V0aW5nIG91cgo+IEBAIC0yNjIsNyArMjYyLDcgQEAgc3RhdGljIHZvaWQg dmJsYW5rX2Rpc2FibGVfYW5kX3NhdmUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgaW50IGNydGMp Cj4gIAkgKiBob3BlIGZvciB0aGUgYmVzdC4KPiAgCSAqLwo+ICAJaWYgKHZibHJjICYmIChhYnM2 NChkaWZmX25zKSA+IDEwMDAwMDApKQo+IC0JCXN0b3JlX3ZibGFuayhkZXYsIGNydGMsIDEsICZ0 dmJsYW5rKTsKPiArCQlzdG9yZV92YmxhbmsoZGV2LCBwaXBlLCAxLCAmdHZibGFuayk7Cj4gIAo+ ICAJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZGV2LT52YmxhbmtfdGltZV9sb2NrLCBpcnFmbGFn cyk7Cj4gIH0KPiBAQCAtMjcxLDE2ICsyNzEsMTYgQEAgc3RhdGljIHZvaWQgdmJsYW5rX2Rpc2Fi bGVfZm4odW5zaWduZWQgbG9uZyBhcmcpCj4gIHsKPiAgCXN0cnVjdCBkcm1fdmJsYW5rX2NydGMg KnZibGFuayA9ICh2b2lkICopYXJnOwo+ICAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IHZibGFu ay0+ZGV2Owo+ICsJdW5zaWduZWQgaW50IHBpcGUgPSB2YmxhbmstPnBpcGU7Cj4gIAl1bnNpZ25l ZCBsb25nIGlycWZsYWdzOwo+IC0JaW50IGNydGMgPSB2YmxhbmstPmNydGM7Cj4gIAo+ICAJaWYg KCFkZXYtPnZibGFua19kaXNhYmxlX2FsbG93ZWQpCj4gIAkJcmV0dXJuOwo+ICAKPiAgCXNwaW5f bG9ja19pcnFzYXZlKCZkZXYtPnZibF9sb2NrLCBpcnFmbGFncyk7Cj4gIAlpZiAoYXRvbWljX3Jl YWQoJnZibGFuay0+cmVmY291bnQpID09IDAgJiYgdmJsYW5rLT5lbmFibGVkKSB7Cj4gLQkJRFJN X0RFQlVHKCJkaXNhYmxpbmcgdmJsYW5rIG9uIGNydGMgJWRcbiIsIGNydGMpOwo+IC0JCXZibGFu a19kaXNhYmxlX2FuZF9zYXZlKGRldiwgY3J0Yyk7Cj4gKwkJRFJNX0RFQlVHKCJkaXNhYmxpbmcg dmJsYW5rIG9uIGNydGMgJXVcbiIsIHBpcGUpOwo+ICsJCXZibGFua19kaXNhYmxlX2FuZF9zYXZl KGRldiwgcGlwZSk7Cj4gIAl9Cj4gIAlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZkZXYtPnZibF9s b2NrLCBpcnFmbGFncyk7Cj4gIH0KPiBAQCAtMjkzLDE0ICsyOTMsMTQgQEAgc3RhdGljIHZvaWQg dmJsYW5rX2Rpc2FibGVfZm4odW5zaWduZWQgbG9uZyBhcmcpCj4gICAqLwo+ICB2b2lkIGRybV92 YmxhbmtfY2xlYW51cChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICB7Cj4gLQlpbnQgY3J0YzsK PiArCXVuc2lnbmVkIGludCBwaXBlOwo+ICAKPiAgCS8qIEJhaWwgaWYgdGhlIGRyaXZlciBkaWRu J3QgY2FsbCBkcm1fdmJsYW5rX2luaXQoKSAqLwo+ICAJaWYgKGRldi0+bnVtX2NydGNzID09IDAp Cj4gIAkJcmV0dXJuOwo+ICAKPiAtCWZvciAoY3J0YyA9IDA7IGNydGMgPCBkZXYtPm51bV9jcnRj czsgY3J0YysrKSB7Cj4gLQkJc3RydWN0IGRybV92YmxhbmtfY3J0YyAqdmJsYW5rID0gJmRldi0+ dmJsYW5rW2NydGNdOwo+ICsJZm9yIChwaXBlID0gMDsgcGlwZSA8IGRldi0+bnVtX2NydGNzOyBw aXBlKyspIHsKPiArCQlzdHJ1Y3QgZHJtX3ZibGFua19jcnRjICp2YmxhbmsgPSAmZGV2LT52Ymxh bmtbcGlwZV07Cj4gIAo+ICAJCVdBUk5fT04odmJsYW5rLT5lbmFibGVkICYmCj4gIAkJCWRybV9j b3JlX2NoZWNrX2ZlYXR1cmUoZGV2LCBEUklWRVJfTU9ERVNFVCkpOwo+IEBAIC0zMTYsMTcgKzMx NiwxOCBAQCBFWFBPUlRfU1lNQk9MKGRybV92YmxhbmtfY2xlYW51cCk7Cj4gIAo+ICAvKioKPiAg ICogZHJtX3ZibGFua19pbml0IC0gaW5pdGlhbGl6ZSB2Ymxhbmsgc3VwcG9ydAo+IC0gKiBAZGV2 OiBkcm1fZGV2aWNlCj4gLSAqIEBudW1fY3J0Y3M6IG51bWJlciBvZiBjcnRjcyBzdXBwb3J0ZWQg YnkgQGRldgo+ICsgKiBAZGV2OiBEUk0gZGV2aWNlCj4gKyAqIEBudW1fY3J0Y3M6IG51bWJlciBv ZiBDUlRDcyBzdXBwb3J0ZWQgYnkgQGRldgo+ICAgKgo+ICAgKiBUaGlzIGZ1bmN0aW9uIGluaXRp YWxpemVzIHZibGFuayBzdXBwb3J0IGZvciBAbnVtX2NydGNzIGRpc3BsYXkgcGlwZWxpbmVzLgo+ ICAgKgo+ICAgKiBSZXR1cm5zOgo+ICAgKiBaZXJvIG9uIHN1Y2Nlc3Mgb3IgYSBuZWdhdGl2ZSBl cnJvciBjb2RlIG9uIGZhaWx1cmUuCj4gICAqLwo+IC1pbnQgZHJtX3ZibGFua19pbml0KHN0cnVj dCBkcm1fZGV2aWNlICpkZXYsIGludCBudW1fY3J0Y3MpCj4gK2ludCBkcm1fdmJsYW5rX2luaXQo c3RydWN0IGRybV9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IG51bV9jcnRjcykKPiAgewo+IC0J aW50IGksIHJldCA9IC1FTk9NRU07Cj4gKwlpbnQgcmV0ID0gLUVOT01FTTsKPiArCXVuc2lnbmVk IGludCBpOwo+ICAKPiAgCXNwaW5fbG9ja19pbml0KCZkZXYtPnZibF9sb2NrKTsKPiAgCXNwaW5f bG9ja19pbml0KCZkZXYtPnZibGFua190aW1lX2xvY2spOwo+IEBAIC0zNDEsNyArMzQyLDcgQEAg aW50IGRybV92YmxhbmtfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBpbnQgbnVtX2NydGNz KQo+ICAJCXN0cnVjdCBkcm1fdmJsYW5rX2NydGMgKnZibGFuayA9ICZkZXYtPnZibGFua1tpXTsK PiAgCj4gIAkJdmJsYW5rLT5kZXYgPSBkZXY7Cj4gLQkJdmJsYW5rLT5jcnRjID0gaTsKPiArCQl2 YmxhbmstPnBpcGUgPSBpOwo+ICAJCWluaXRfd2FpdHF1ZXVlX2hlYWQoJnZibGFuay0+cXVldWUp Owo+ICAJCXNldHVwX3RpbWVyKCZ2YmxhbmstPmRpc2FibGVfdGltZXIsIHZibGFua19kaXNhYmxl X2ZuLAo+ICAJCQkgICAgKHVuc2lnbmVkIGxvbmcpdmJsYW5rKTsKPiBAQCAtNjI0LDE3ICs2MjUs MTcgQEAgdm9pZCBkcm1fY2FsY190aW1lc3RhbXBpbmdfY29uc3RhbnRzKHN0cnVjdCBkcm1fY3J0 YyAqY3J0YywKPiAgCQlpZiAobW9kZS0+ZmxhZ3MgJiBEUk1fTU9ERV9GTEFHX0lOVEVSTEFDRSkK PiAgCQkJZnJhbWVkdXJfbnMgLz0gMjsKPiAgCX0gZWxzZQo+IC0JCURSTV9FUlJPUigiY3J0YyAl ZDogQ2FuJ3QgY2FsY3VsYXRlIGNvbnN0YW50cywgZG90Y2xvY2sgPSAwIVxuIiwKPiArCQlEUk1f RVJST1IoImNydGMgJXU6IENhbid0IGNhbGN1bGF0ZSBjb25zdGFudHMsIGRvdGNsb2NrID0gMCFc biIsCj4gIAkJCSAgY3J0Yy0+YmFzZS5pZCk7Cj4gIAo+ICAJY3J0Yy0+cGl4ZWxkdXJfbnMgPSBw aXhlbGR1cl9uczsKPiAgCWNydGMtPmxpbmVkdXJfbnMgID0gbGluZWR1cl9uczsKPiAgCWNydGMt PmZyYW1lZHVyX25zID0gZnJhbWVkdXJfbnM7Cj4gIAo+IC0JRFJNX0RFQlVHKCJjcnRjICVkOiBo d21vZGU6IGh0b3RhbCAlZCwgdnRvdGFsICVkLCB2ZGlzcGxheSAlZFxuIiwKPiArCURSTV9ERUJV RygiY3J0YyAldTogaHdtb2RlOiBodG90YWwgJWQsIHZ0b3RhbCAlZCwgdmRpc3BsYXkgJWRcbiIs Cj4gIAkJICBjcnRjLT5iYXNlLmlkLCBtb2RlLT5jcnRjX2h0b3RhbCwKPiAgCQkgIG1vZGUtPmNy dGNfdnRvdGFsLCBtb2RlLT5jcnRjX3ZkaXNwbGF5KTsKPiAtCURSTV9ERUJVRygiY3J0YyAlZDog Y2xvY2sgJWQga0h6IGZyYW1lZHVyICVkIGxpbmVkdXIgJWQsIHBpeGVsZHVyICVkXG4iLAo+ICsJ RFJNX0RFQlVHKCJjcnRjICV1OiBjbG9jayAlZCBrSHogZnJhbWVkdXIgJWQgbGluZWR1ciAlZCwg cGl4ZWxkdXIgJWRcbiIsCj4gIAkJICBjcnRjLT5iYXNlLmlkLCBkb3RjbG9jaywgZnJhbWVkdXJf bnMsCj4gIAkJICBsaW5lZHVyX25zLCBwaXhlbGR1cl9ucyk7Cj4gIH0KPiBAQCAtNjQzLDcgKzY0 NCw3IEBAIEVYUE9SVF9TWU1CT0woZHJtX2NhbGNfdGltZXN0YW1waW5nX2NvbnN0YW50cyk7Cj4g IC8qKgo+ICAgKiBkcm1fY2FsY192Ymx0aW1lc3RhbXBfZnJvbV9zY2Fub3V0cG9zIC0gcHJlY2lz ZSB2YmxhbmsgdGltZXN0YW1wIGhlbHBlcgo+ICAgKiBAZGV2OiBEUk0gZGV2aWNlCj4gLSAqIEBj cnRjOiBXaGljaCBDUlRDJ3MgdmJsYW5rIHRpbWVzdGFtcCB0byByZXRyaWV2ZQo+ICsgKiBAcGlw ZTogaW5kZXggb2YgQ1JUQyB3aG9zZSB2YmxhbmsgdGltZXN0YW1wIHRvIHJldHJpZXZlCj4gICAq IEBtYXhfZXJyb3I6IERlc2lyZWQgbWF4aW11bSBhbGxvd2FibGUgZXJyb3IgaW4gdGltZXN0YW1w cyAobmFub3NlY3MpCj4gICAqICAgICAgICAgICAgIE9uIHJldHVybiBjb250YWlucyB0cnVlIG1h eGltdW0gZXJyb3Igb2YgdGltZXN0YW1wCj4gICAqIEB2YmxhbmtfdGltZTogUG9pbnRlciB0byBz dHJ1Y3QgdGltZXZhbCB3aGljaCBzaG91bGQgcmVjZWl2ZSB0aGUgdGltZXN0YW1wCj4gQEAgLTY4 Niw3ICs2ODcsOCBAQCBFWFBPUlRfU1lNQk9MKGRybV9jYWxjX3RpbWVzdGFtcGluZ19jb25zdGFu dHMpOwo+ICAgKiBEUk1fVkJMQU5LVElNRV9JTlZCTCAtIFRpbWVzdGFtcCB0YWtlbiB3aGlsZSBz Y2Fub3V0IHdhcyBpbiB2YmxhbmsgaW50ZXJ2YWwuCj4gICAqCj4gICAqLwo+IC1pbnQgZHJtX2Nh bGNfdmJsdGltZXN0YW1wX2Zyb21fc2Nhbm91dHBvcyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBp bnQgY3J0YywKPiAraW50IGRybV9jYWxjX3ZibHRpbWVzdGFtcF9mcm9tX3NjYW5vdXRwb3Moc3Ry dWN0IGRybV9kZXZpY2UgKmRldiwKPiArCQkJCQkgIHVuc2lnbmVkIGludCBwaXBlLAo+ICAJCQkJ CSAgaW50ICptYXhfZXJyb3IsCj4gIAkJCQkJICBzdHJ1Y3QgdGltZXZhbCAqdmJsYW5rX3RpbWUs Cj4gIAkJCQkJICB1bnNpZ25lZCBmbGFncywKPiBAQCAtNzAwLDggKzcwMiw4IEBAIGludCBkcm1f Y2FsY192Ymx0aW1lc3RhbXBfZnJvbV9zY2Fub3V0cG9zKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYs IGludCBjcnRjLAo+ICAJaW50IGZyYW1lZHVyX25zLCBsaW5lZHVyX25zLCBwaXhlbGR1cl9ucywg ZGVsdGFfbnMsIGR1cmF0aW9uX25zOwo+ICAJYm9vbCBpbnZibDsKPiAgCj4gLQlpZiAoY3J0YyA8 IDAgfHwgY3J0YyA+PSBkZXYtPm51bV9jcnRjcykgewo+IC0JCURSTV9FUlJPUigiSW52YWxpZCBj cnRjICVkXG4iLCBjcnRjKTsKPiArCWlmIChwaXBlID49IGRldi0+bnVtX2NydGNzKSB7Cj4gKwkJ RFJNX0VSUk9SKCJJbnZhbGlkIGNydGMgJXVcbiIsIHBpcGUpOwo+ICAJCXJldHVybiAtRUlOVkFM Owo+ICAJfQo+ICAKPiBAQCAtNzIwLDcgKzcyMiw3IEBAIGludCBkcm1fY2FsY192Ymx0aW1lc3Rh bXBfZnJvbV9zY2Fub3V0cG9zKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGludCBjcnRjLAo+ICAJ ICogSGFwcGVucyBkdXJpbmcgaW5pdGlhbCBtb2Rlc2V0dGluZyBvZiBhIGNydGMuCj4gIAkgKi8K PiAgCWlmIChmcmFtZWR1cl9ucyA9PSAwKSB7Cj4gLQkJRFJNX0RFQlVHKCJjcnRjICVkOiBOb29w IGR1ZSB0byB1bmluaXRpYWxpemVkIG1vZGUuXG4iLCBjcnRjKTsKPiArCQlEUk1fREVCVUcoImNy dGMgJXU6IE5vb3AgZHVlIHRvIHVuaW5pdGlhbGl6ZWQgbW9kZS5cbiIsIHBpcGUpOwo+ICAJCXJl dHVybiAtRUFHQUlOOwo+ICAJfQo+ICAKPiBAQCAtNzM2LDEzICs3MzgsMTMgQEAgaW50IGRybV9j YWxjX3ZibHRpbWVzdGFtcF9mcm9tX3NjYW5vdXRwb3Moc3RydWN0IGRybV9kZXZpY2UgKmRldiwg aW50IGNydGMsCj4gIAkJICogR2V0IHZlcnRpY2FsIGFuZCBob3Jpem9udGFsIHNjYW5vdXQgcG9z aXRpb24gdnBvcywgaHBvcywKPiAgCQkgKiBhbmQgYm91bmRpbmcgdGltZXN0YW1wcyBzdGltZSwg ZXRpbWUsIHByZS9wb3N0IHF1ZXJ5Lgo+ICAJCSAqLwo+IC0JCXZibF9zdGF0dXMgPSBkZXYtPmRy aXZlci0+Z2V0X3NjYW5vdXRfcG9zaXRpb24oZGV2LCBjcnRjLCBmbGFncywgJnZwb3MsCj4gKwkJ dmJsX3N0YXR1cyA9IGRldi0+ZHJpdmVyLT5nZXRfc2Nhbm91dF9wb3NpdGlvbihkZXYsIHBpcGUs IGZsYWdzLCAmdnBvcywKPiAgCQkJCQkJCSAgICAgICAmaHBvcywgJnN0aW1lLCAmZXRpbWUpOwo+ ICAKPiAgCQkvKiBSZXR1cm4gYXMgbm8tb3AgaWYgc2Nhbm91dCBxdWVyeSB1bnN1cHBvcnRlZCBv ciBmYWlsZWQuICovCj4gIAkJaWYgKCEodmJsX3N0YXR1cyAmIERSTV9TQ0FOT1VUUE9TX1ZBTElE KSkgewo+IC0JCQlEUk1fREVCVUcoImNydGMgJWQgOiBzY2Fub3V0cG9zIHF1ZXJ5IGZhaWxlZCBb JWRdLlxuIiwKPiAtCQkJCSAgY3J0YywgdmJsX3N0YXR1cyk7Cj4gKwkJCURSTV9ERUJVRygiY3J0 YyAldSA6IHNjYW5vdXRwb3MgcXVlcnkgZmFpbGVkIFslZF0uXG4iLAo+ICsJCQkJICBwaXBlLCB2 Ymxfc3RhdHVzKTsKPiAgCQkJcmV0dXJuIC1FSU87Cj4gIAkJfQo+ICAKPiBAQCAtNzU2LDggKzc1 OCw4IEBAIGludCBkcm1fY2FsY192Ymx0aW1lc3RhbXBfZnJvbV9zY2Fub3V0cG9zKHN0cnVjdCBk cm1fZGV2aWNlICpkZXYsIGludCBjcnRjLAo+ICAKPiAgCS8qIE5vaXN5IHN5c3RlbSB0aW1pbmc/ ICovCj4gIAlpZiAoaSA9PSBEUk1fVElNRVNUQU1QX01BWFJFVFJJRVMpIHsKPiAtCQlEUk1fREVC VUcoImNydGMgJWQ6IE5vaXN5IHRpbWVzdGFtcCAlZCB1cyA+ICVkIHVzIFslZCByZXBzXS5cbiIs Cj4gLQkJCSAgY3J0YywgZHVyYXRpb25fbnMvMTAwMCwgKm1heF9lcnJvci8xMDAwLCBpKTsKPiAr CQlEUk1fREVCVUcoImNydGMgJXU6IE5vaXN5IHRpbWVzdGFtcCAlZCB1cyA+ICVkIHVzIFslZCBy ZXBzXS5cbiIsCj4gKwkJCSAgcGlwZSwgZHVyYXRpb25fbnMvMTAwMCwgKm1heF9lcnJvci8xMDAw LCBpKTsKPiAgCX0KPiAgCj4gIAkvKiBSZXR1cm4gdXBwZXIgYm91bmQgb2YgdGltZXN0YW1wIHBy ZWNpc2lvbiBlcnJvci4gKi8KPiBAQCAtNzkwLDggKzc5Miw4IEBAIGludCBkcm1fY2FsY192Ymx0 aW1lc3RhbXBfZnJvbV9zY2Fub3V0cG9zKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGludCBjcnRj LAo+ICAJCWV0aW1lID0ga3RpbWVfc3ViX25zKGV0aW1lLCBkZWx0YV9ucyk7Cj4gIAkqdmJsYW5r X3RpbWUgPSBrdGltZV90b190aW1ldmFsKGV0aW1lKTsKPiAgCj4gLQlEUk1fREVCVUcoImNydGMg JWQgOiB2ICVkIHAoJWQsJWQpQCAlbGQuJWxkIC0+ICVsZC4lbGQgW2UgJWQgdXMsICVkIHJlcF1c biIsCj4gLQkJICBjcnRjLCAoaW50KXZibF9zdGF0dXMsIGhwb3MsIHZwb3MsCj4gKwlEUk1fREVC VUcoImNydGMgJXUgOiB2ICVkIHAoJWQsJWQpQCAlbGQuJWxkIC0+ICVsZC4lbGQgW2UgJWQgdXMs ICVkIHJlcF1cbiIsCj4gKwkJICBwaXBlLCAoaW50KXZibF9zdGF0dXMsIGhwb3MsIHZwb3MsCj4g IAkJICAobG9uZyl0dl9ldGltZS50dl9zZWMsIChsb25nKXR2X2V0aW1lLnR2X3VzZWMsCj4gIAkJ ICAobG9uZyl2YmxhbmtfdGltZS0+dHZfc2VjLCAobG9uZyl2YmxhbmtfdGltZS0+dHZfdXNlYywK PiAgCQkgIGR1cmF0aW9uX25zLzEwMDAsIGkpOwo+IEBAIC04MTYsNyArODE4LDcgQEAgc3RhdGlj IHN0cnVjdCB0aW1ldmFsIGdldF9kcm1fdGltZXN0YW1wKHZvaWQpCj4gICAqIGRybV9nZXRfbGFz dF92Ymx0aW1lc3RhbXAgLSByZXRyaWV2ZSByYXcgdGltZXN0YW1wIGZvciB0aGUgbW9zdCByZWNl bnQKPiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZibGFuayBpbnRlcnZhbAo+ICAg KiBAZGV2OiBEUk0gZGV2aWNlCj4gLSAqIEBjcnRjOiB3aGljaCBDUlRDJ3MgdmJsYW5rIHRpbWVz dGFtcCB0byByZXRyaWV2ZQo+ICsgKiBAcGlwZTogaW5kZXggb2YgQ1JUQyB3aG9zZSB2Ymxhbmsg dGltZXN0YW1wIHRvIHJldHJpZXZlCj4gICAqIEB0dmJsYW5rOiBQb2ludGVyIHRvIHRhcmdldCBz dHJ1Y3QgdGltZXZhbCB3aGljaCBzaG91bGQgcmVjZWl2ZSB0aGUgdGltZXN0YW1wCj4gICAqIEBm bGFnczogRmxhZ3MgdG8gcGFzcyB0byBkcml2ZXI6Cj4gICAqICAgICAgICAgMCA9IERlZmF1bHQs Cj4gQEAgLTgzMyw3ICs4MzUsNyBAQCBzdGF0aWMgc3RydWN0IHRpbWV2YWwgZ2V0X2RybV90aW1l c3RhbXAodm9pZCkKPiAgICogVHJ1ZSBpZiB0aW1lc3RhbXAgaXMgY29uc2lkZXJlZCB0byBiZSB2 ZXJ5IHByZWNpc2UsIGZhbHNlIG90aGVyd2lzZS4KPiAgICovCj4gIHN0YXRpYyBib29sCj4gLWRy bV9nZXRfbGFzdF92Ymx0aW1lc3RhbXAoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgaW50IGNydGMs Cj4gK2RybV9nZXRfbGFzdF92Ymx0aW1lc3RhbXAoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdW5z aWduZWQgaW50IHBpcGUsCj4gIAkJCSAgc3RydWN0IHRpbWV2YWwgKnR2YmxhbmssIHVuc2lnbmVk IGZsYWdzKQo+ICB7Cj4gIAlpbnQgcmV0Owo+IEBAIC04NDMsNyArODQ1LDcgQEAgZHJtX2dldF9s YXN0X3ZibHRpbWVzdGFtcChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBpbnQgY3J0YywKPiAgCj4g IAkvKiBRdWVyeSBkcml2ZXIgaWYgcG9zc2libGUgYW5kIHByZWNpc2lvbiB0aW1lc3RhbXBpbmcg ZW5hYmxlZC4gKi8KPiAgCWlmIChkZXYtPmRyaXZlci0+Z2V0X3ZibGFua190aW1lc3RhbXAgJiYg KG1heF9lcnJvciA+IDApKSB7Cj4gLQkJcmV0ID0gZGV2LT5kcml2ZXItPmdldF92YmxhbmtfdGlt ZXN0YW1wKGRldiwgY3J0YywgJm1heF9lcnJvciwKPiArCQlyZXQgPSBkZXYtPmRyaXZlci0+Z2V0 X3ZibGFua190aW1lc3RhbXAoZGV2LCBwaXBlLCAmbWF4X2Vycm9yLAo+ICAJCQkJCQkJdHZibGFu aywgZmxhZ3MpOwo+ICAJCWlmIChyZXQgPiAwKQo+ICAJCQlyZXR1cm4gdHJ1ZTsKPiBAQCAtODYw LDcgKzg2Miw3IEBAIGRybV9nZXRfbGFzdF92Ymx0aW1lc3RhbXAoc3RydWN0IGRybV9kZXZpY2Ug KmRldiwgaW50IGNydGMsCj4gIC8qKgo+ICAgKiBkcm1fdmJsYW5rX2NvdW50IC0gcmV0cmlldmUg ImNvb2tlZCIgdmJsYW5rIGNvdW50ZXIgdmFsdWUKPiAgICogQGRldjogRFJNIGRldmljZQo+IC0g KiBAY3J0Yzogd2hpY2ggY291bnRlciB0byByZXRyaWV2ZQo+ICsgKiBAcGlwZTogaW5kZXggb2Yg Q1JUQyBmb3Igd2hpY2ggdG8gcmV0cmlldmUgdGhlIGNvdW50ZXIKPiAgICoKPiAgICogRmV0Y2hl cyB0aGUgImNvb2tlZCIgdmJsYW5rIGNvdW50IHZhbHVlIHRoYXQgcmVwcmVzZW50cyB0aGUgbnVt YmVyIG9mCj4gICAqIHZibGFuayBldmVudHMgc2luY2UgdGhlIHN5c3RlbSB3YXMgYm9vdGVkLCBp bmNsdWRpbmcgbG9zdCBldmVudHMgZHVlIHRvCj4gQEAgLTg3MSwxMSArODczLDExIEBAIGRybV9n ZXRfbGFzdF92Ymx0aW1lc3RhbXAoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgaW50IGNydGMsCj4g ICAqIFJldHVybnM6Cj4gICAqIFRoZSBzb2Z0d2FyZSB2YmxhbmsgY291bnRlci4KPiAgICovCj4g LXUzMiBkcm1fdmJsYW5rX2NvdW50KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGludCBjcnRjKQo+ ICt1MzIgZHJtX3ZibGFua19jb3VudChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBpbnQgcGlwZSkK PiAgewo+IC0Jc3RydWN0IGRybV92YmxhbmtfY3J0YyAqdmJsYW5rID0gJmRldi0+dmJsYW5rW2Ny dGNdOwo+ICsJc3RydWN0IGRybV92YmxhbmtfY3J0YyAqdmJsYW5rID0gJmRldi0+dmJsYW5rW3Bp cGVdOwo+ICAKPiAtCWlmIChXQVJOX09OKGNydGMgPj0gZGV2LT5udW1fY3J0Y3MpKQo+ICsJaWYg KFdBUk5fT04ocGlwZSA+PSBkZXYtPm51bV9jcnRjcykpCj4gIAkJcmV0dXJuIDA7Cj4gIAlyZXR1 cm4gdmJsYW5rLT5jb3VudDsKPiAgfQo+IEBAIC05MDEsMTEgKzkwMywxMCBAQCB1MzIgZHJtX2Ny dGNfdmJsYW5rX2NvdW50KHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKPiAgRVhQT1JUX1NZTUJPTChk cm1fY3J0Y192YmxhbmtfY291bnQpOwo+ICAKPiAgLyoqCj4gLSAqIGRybV92YmxhbmtfY291bnRf YW5kX3RpbWUgLSByZXRyaWV2ZSAiY29va2VkIiB2YmxhbmsgY291bnRlciB2YWx1ZQo+IC0gKiBh bmQgdGhlIHN5c3RlbSB0aW1lc3RhbXAgY29ycmVzcG9uZGluZyB0byB0aGF0IHZibGFuayBjb3Vu dGVyIHZhbHVlLgo+IC0gKgo+ICsgKiBkcm1fdmJsYW5rX2NvdW50X2FuZF90aW1lIC0gcmV0cmll dmUgImNvb2tlZCIgdmJsYW5rIGNvdW50ZXIgdmFsdWUgYW5kIHRoZQo+ICsgKiAgICAgc3lzdGVt IHRpbWVzdGFtcCBjb3JyZXNwb25kaW5nIHRvIHRoYXQgdmJsYW5rIGNvdW50ZXIgdmFsdWUuCj4g ICAqIEBkZXY6IERSTSBkZXZpY2UKPiAtICogQGNydGM6IHdoaWNoIGNvdW50ZXIgdG8gcmV0cmll dmUKPiArICogQHBpcGU6IGluZGV4IG9mIENSVEMgd2hvc2UgY291bnRlciB0byByZXRyaWV2ZQo+ ICAgKiBAdmJsYW5rdGltZTogUG9pbnRlciB0byBzdHJ1Y3QgdGltZXZhbCB0byByZWNlaXZlIHRo ZSB2YmxhbmsgdGltZXN0YW1wLgo+ICAgKgo+ICAgKiBGZXRjaGVzIHRoZSAiY29va2VkIiB2Ymxh bmsgY291bnQgdmFsdWUgdGhhdCByZXByZXNlbnRzIHRoZSBudW1iZXIgb2YKPiBAQCAtOTEzLDEz ICs5MTQsMTMgQEAgRVhQT1JUX1NZTUJPTChkcm1fY3J0Y192YmxhbmtfY291bnQpOwo+ICAgKiBt b2Rlc2V0dGluZyBhY3Rpdml0eS4gUmV0dXJucyBjb3JyZXNwb25kaW5nIHN5c3RlbSB0aW1lc3Rh bXAgb2YgdGhlIHRpbWUKPiAgICogb2YgdGhlIHZibGFuayBpbnRlcnZhbCB0aGF0IGNvcnJlc3Bv bmRzIHRvIHRoZSBjdXJyZW50IHZibGFuayBjb3VudGVyIHZhbHVlLgo+ICAgKi8KPiAtdTMyIGRy bV92YmxhbmtfY291bnRfYW5kX3RpbWUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgaW50IGNydGMs Cj4gK3UzMiBkcm1fdmJsYW5rX2NvdW50X2FuZF90aW1lKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYs IHVuc2lnbmVkIGludCBwaXBlLAo+ICAJCQkgICAgICBzdHJ1Y3QgdGltZXZhbCAqdmJsYW5rdGlt ZSkKPiAgewo+IC0Jc3RydWN0IGRybV92YmxhbmtfY3J0YyAqdmJsYW5rID0gJmRldi0+dmJsYW5r W2NydGNdOwo+ICsJc3RydWN0IGRybV92YmxhbmtfY3J0YyAqdmJsYW5rID0gJmRldi0+dmJsYW5r W3BpcGVdOwo+ICAJdTMyIGN1cl92Ymxhbms7Cj4gIAo+IC0JaWYgKFdBUk5fT04oY3J0YyA+PSBk ZXYtPm51bV9jcnRjcykpCj4gKwlpZiAoV0FSTl9PTihwaXBlID49IGRldi0+bnVtX2NydGNzKSkK PiAgCQlyZXR1cm4gMDsKPiAgCj4gIAkvKgo+IEBAIC05MzAsNyArOTMxLDcgQEAgdTMyIGRybV92 YmxhbmtfY291bnRfYW5kX3RpbWUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgaW50IGNydGMsCj4g IAlkbyB7Cj4gIAkJY3VyX3ZibGFuayA9IHZibGFuay0+Y291bnQ7Cj4gIAkJc21wX3JtYigpOwo+ IC0JCSp2Ymxhbmt0aW1lID0gdmJsYW5rdGltZXN0YW1wKGRldiwgY3J0YywgY3VyX3ZibGFuayk7 Cj4gKwkJKnZibGFua3RpbWUgPSB2Ymxhbmt0aW1lc3RhbXAoZGV2LCBwaXBlLCBjdXJfdmJsYW5r KTsKPiAgCQlzbXBfcm1iKCk7Cj4gIAl9IHdoaWxlIChjdXJfdmJsYW5rICE9IHZibGFuay0+Y291 bnQpOwo+ICAKPiBAQCAtOTU3LDcgKzk1OCw3IEBAIHN0YXRpYyB2b2lkIHNlbmRfdmJsYW5rX2V2 ZW50KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gIC8qKgo+ICAgKiBkcm1fc2VuZF92Ymxhbmtf ZXZlbnQgLSBoZWxwZXIgdG8gc2VuZCB2YmxhbmsgZXZlbnQgYWZ0ZXIgcGFnZWZsaXAKPiAgICog QGRldjogRFJNIGRldmljZQo+IC0gKiBAY3J0YzogQ1JUQyBpbiBxdWVzdGlvbgo+ICsgKiBAcGlw ZTogQ1JUQyBpbmRleAo+ICAgKiBAZTogdGhlIGV2ZW50IHRvIHNlbmQKPiAgICoKPiAgICogVXBk YXRlcyBzZXF1ZW5jZSAjIGFuZCB0aW1lc3RhbXAgb24gZXZlbnQsIGFuZCBzZW5kcyBpdCB0byB1 c2Vyc3BhY2UuCj4gQEAgLTk2NSwyMCArOTY2LDIwIEBAIHN0YXRpYyB2b2lkIHNlbmRfdmJsYW5r X2V2ZW50KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gICAqCj4gICAqIFRoaXMgaXMgdGhlIGxl Z2FjeSB2ZXJzaW9uIG9mIGRybV9jcnRjX3NlbmRfdmJsYW5rX2V2ZW50KCkuCj4gICAqLwo+IC12 b2lkIGRybV9zZW5kX3ZibGFua19ldmVudChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBpbnQgY3J0 YywKPiAtCQlzdHJ1Y3QgZHJtX3BlbmRpbmdfdmJsYW5rX2V2ZW50ICplKQo+ICt2b2lkIGRybV9z ZW5kX3ZibGFua19ldmVudChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgcGlw ZSwKPiArCQkJICAgc3RydWN0IGRybV9wZW5kaW5nX3ZibGFua19ldmVudCAqZSkKPiAgewo+ICAJ c3RydWN0IHRpbWV2YWwgbm93Owo+ICAJdW5zaWduZWQgaW50IHNlcTsKPiAgCj4gIAlpZiAoZGV2 LT5udW1fY3J0Y3MgPiAwKSB7Cj4gLQkJc2VxID0gZHJtX3ZibGFua19jb3VudF9hbmRfdGltZShk ZXYsIGNydGMsICZub3cpOwo+ICsJCXNlcSA9IGRybV92YmxhbmtfY291bnRfYW5kX3RpbWUoZGV2 LCBwaXBlLCAmbm93KTsKPiAgCX0gZWxzZSB7Cj4gIAkJc2VxID0gMDsKPiAgCj4gIAkJbm93ID0g Z2V0X2RybV90aW1lc3RhbXAoKTsKPiAgCX0KPiAtCWUtPnBpcGUgPSBjcnRjOwo+ICsJZS0+cGlw ZSA9IHBpcGU7Cj4gIAlzZW5kX3ZibGFua19ldmVudChkZXYsIGUsIHNlcSwgJm5vdyk7Cj4gIH0K PiAgRVhQT1JUX1NZTUJPTChkcm1fc2VuZF92YmxhbmtfZXZlbnQpOwo+IEBAIC0xMDAzLDExICsx MDA0LDExIEBAIEVYUE9SVF9TWU1CT0woZHJtX2NydGNfc2VuZF92YmxhbmtfZXZlbnQpOwo+ICAv KioKPiAgICogZHJtX3ZibGFua19lbmFibGUgLSBlbmFibGUgdGhlIHZibGFuayBpbnRlcnJ1cHQg b24gYSBDUlRDCj4gICAqIEBkZXY6IERSTSBkZXZpY2UKPiAtICogQGNydGM6IENSVEMgaW4gcXVl c3Rpb24KPiArICogQHBpcGU6IENSVEMgaW5kZXgKPiAgICovCj4gLXN0YXRpYyBpbnQgZHJtX3Zi bGFua19lbmFibGUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgaW50IGNydGMpCj4gK3N0YXRpYyBp bnQgZHJtX3ZibGFua19lbmFibGUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50 IHBpcGUpCj4gIHsKPiAtCXN0cnVjdCBkcm1fdmJsYW5rX2NydGMgKnZibGFuayA9ICZkZXYtPnZi bGFua1tjcnRjXTsKPiArCXN0cnVjdCBkcm1fdmJsYW5rX2NydGMgKnZibGFuayA9ICZkZXYtPnZi bGFua1twaXBlXTsKPiAgCWludCByZXQgPSAwOwo+ICAKPiAgCWFzc2VydF9zcGluX2xvY2tlZCgm ZGV2LT52YmxfbG9jayk7Cj4gQEAgLTEwMjIsMTMgKzEwMjMsMTMgQEAgc3RhdGljIGludCBkcm1f dmJsYW5rX2VuYWJsZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBpbnQgY3J0YykKPiAgCQkgKiB0 aW1lc3RhbXBzLiBGaWx0ZXJjb2RlIGluIGRybV9oYW5kbGVfdmJsYW5rKCkgd2lsbAo+ICAJCSAq IHByZXZlbnQgZG91YmxlLWFjY291bnRpbmcgb2Ygc2FtZSB2YmxhbmsgaW50ZXJ2YWwuCj4gIAkJ ICovCj4gLQkJcmV0ID0gZGV2LT5kcml2ZXItPmVuYWJsZV92YmxhbmsoZGV2LCBjcnRjKTsKPiAt CQlEUk1fREVCVUcoImVuYWJsaW5nIHZibGFuayBvbiBjcnRjICVkLCByZXQ6ICVkXG4iLCBjcnRj LCByZXQpOwo+ICsJCXJldCA9IGRldi0+ZHJpdmVyLT5lbmFibGVfdmJsYW5rKGRldiwgcGlwZSk7 Cj4gKwkJRFJNX0RFQlVHKCJlbmFibGluZyB2Ymxhbmsgb24gY3J0YyAldSwgcmV0OiAlZFxuIiwg cGlwZSwgcmV0KTsKPiAgCQlpZiAocmV0KQo+ICAJCQlhdG9taWNfZGVjKCZ2YmxhbmstPnJlZmNv dW50KTsKPiAgCQllbHNlIHsKPiAgCQkJdmJsYW5rLT5lbmFibGVkID0gdHJ1ZTsKPiAtCQkJZHJt X3VwZGF0ZV92YmxhbmtfY291bnQoZGV2LCBjcnRjKTsKPiArCQkJZHJtX3VwZGF0ZV92Ymxhbmtf Y291bnQoZGV2LCBwaXBlKTsKPiAgCQl9Cj4gIAl9Cj4gIAo+IEBAIC0xMDQwLDcgKzEwNDEsNyBA QCBzdGF0aWMgaW50IGRybV92YmxhbmtfZW5hYmxlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGlu dCBjcnRjKQo+ICAvKioKPiAgICogZHJtX3ZibGFua19nZXQgLSBnZXQgYSByZWZlcmVuY2UgY291 bnQgb24gdmJsYW5rIGV2ZW50cwo+ICAgKiBAZGV2OiBEUk0gZGV2aWNlCj4gLSAqIEBjcnRjOiB3 aGljaCBDUlRDIHRvIG93bgo+ICsgKiBAcGlwZTogaW5kZXggb2YgQ1JUQyB0byBvd24KPiAgICoK PiAgICogQWNxdWlyZSBhIHJlZmVyZW5jZSBjb3VudCBvbiB2YmxhbmsgZXZlbnRzIHRvIGF2b2lk IGhhdmluZyB0aGVtIGRpc2FibGVkCj4gICAqIHdoaWxlIGluIHVzZS4KPiBAQCAtMTA1MCwyMiAr MTA1MSwyMiBAQCBzdGF0aWMgaW50IGRybV92YmxhbmtfZW5hYmxlKHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYsIGludCBjcnRjKQo+ICAgKiBSZXR1cm5zOgo+ICAgKiBaZXJvIG9uIHN1Y2Nlc3MsIG5v bnplcm8gb24gZmFpbHVyZS4KPiAgICovCj4gLWludCBkcm1fdmJsYW5rX2dldChzdHJ1Y3QgZHJt X2RldmljZSAqZGV2LCBpbnQgY3J0YykKPiAraW50IGRybV92YmxhbmtfZ2V0KHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCBwaXBlKQo+ICB7Cj4gLQlzdHJ1Y3QgZHJtX3ZibGFu a19jcnRjICp2YmxhbmsgPSAmZGV2LT52YmxhbmtbY3J0Y107Cj4gKwlzdHJ1Y3QgZHJtX3ZibGFu a19jcnRjICp2YmxhbmsgPSAmZGV2LT52YmxhbmtbcGlwZV07Cj4gIAl1bnNpZ25lZCBsb25nIGly cWZsYWdzOwo+ICAJaW50IHJldCA9IDA7Cj4gIAo+ICAJaWYgKCFkZXYtPm51bV9jcnRjcykKPiAg CQlyZXR1cm4gLUVJTlZBTDsKPiAgCj4gLQlpZiAoV0FSTl9PTihjcnRjID49IGRldi0+bnVtX2Ny dGNzKSkKPiArCWlmIChXQVJOX09OKHBpcGUgPj0gZGV2LT5udW1fY3J0Y3MpKQo+ICAJCXJldHVy biAtRUlOVkFMOwo+ICAKPiAgCXNwaW5fbG9ja19pcnFzYXZlKCZkZXYtPnZibF9sb2NrLCBpcnFm bGFncyk7Cj4gIAkvKiBHb2luZyBmcm9tIDAtPjEgbWVhbnMgd2UgaGF2ZSB0byBlbmFibGUgaW50 ZXJydXB0cyBhZ2FpbiAqLwo+ICAJaWYgKGF0b21pY19hZGRfcmV0dXJuKDEsICZ2YmxhbmstPnJl ZmNvdW50KSA9PSAxKSB7Cj4gLQkJcmV0ID0gZHJtX3ZibGFua19lbmFibGUoZGV2LCBjcnRjKTsK PiArCQlyZXQgPSBkcm1fdmJsYW5rX2VuYWJsZShkZXYsIHBpcGUpOwo+ICAJfSBlbHNlIHsKPiAg CQlpZiAoIXZibGFuay0+ZW5hYmxlZCkgewo+ICAJCQlhdG9taWNfZGVjKCZ2YmxhbmstPnJlZmNv dW50KTsKPiBAQCAtMTA5NywyMCArMTA5OCwyMCBAQCBpbnQgZHJtX2NydGNfdmJsYW5rX2dldChz dHJ1Y3QgZHJtX2NydGMgKmNydGMpCj4gIEVYUE9SVF9TWU1CT0woZHJtX2NydGNfdmJsYW5rX2dl dCk7Cj4gIAo+ICAvKioKPiAtICogZHJtX3ZibGFua19wdXQgLSBnaXZlIHVwIG93bmVyc2hpcCBv ZiB2YmxhbmsgZXZlbnRzCj4gKyAqIGRybV92YmxhbmtfcHV0IC0gcmVsZWFzZSBvd25lcnNoaXAg b2YgdmJsYW5rIGV2ZW50cwo+ICAgKiBAZGV2OiBEUk0gZGV2aWNlCj4gLSAqIEBjcnRjOiB3aGlj aCBjb3VudGVyIHRvIGdpdmUgdXAKPiArICogQHBpcGU6IGluZGV4IG9mIENSVEMgdG8gcmVsZWFz ZQo+ICAgKgo+ICAgKiBSZWxlYXNlIG93bmVyc2hpcCBvZiBhIGdpdmVuIHZibGFuayBjb3VudGVy LCB0dXJuaW5nIG9mZiBpbnRlcnJ1cHRzCj4gICAqIGlmIHBvc3NpYmxlLiBEaXNhYmxlIGludGVy cnVwdHMgYWZ0ZXIgZHJtX3ZibGFua19vZmZkZWxheSBtaWxsaXNlY29uZHMuCj4gICAqCj4gICAq IFRoaXMgaXMgdGhlIGxlZ2FjeSB2ZXJzaW9uIG9mIGRybV9jcnRjX3ZibGFua19wdXQoKS4KPiAg ICovCj4gLXZvaWQgZHJtX3ZibGFua19wdXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgaW50IGNy dGMpCj4gK3ZvaWQgZHJtX3ZibGFua19wdXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdW5zaWdu ZWQgaW50IHBpcGUpCj4gIHsKPiAtCXN0cnVjdCBkcm1fdmJsYW5rX2NydGMgKnZibGFuayA9ICZk ZXYtPnZibGFua1tjcnRjXTsKPiArCXN0cnVjdCBkcm1fdmJsYW5rX2NydGMgKnZibGFuayA9ICZk ZXYtPnZibGFua1twaXBlXTsKPiAgCj4gLQlpZiAoV0FSTl9PTihjcnRjID49IGRldi0+bnVtX2Ny dGNzKSkKPiArCWlmIChXQVJOX09OKHBpcGUgPj0gZGV2LT5udW1fY3J0Y3MpKQo+ICAJCXJldHVy bjsKPiAgCj4gIAlpZiAoV0FSTl9PTihhdG9taWNfcmVhZCgmdmJsYW5rLT5yZWZjb3VudCkgPT0g MCkpCj4gQEAgLTExNDcsMzMgKzExNDgsMzQgQEAgRVhQT1JUX1NZTUJPTChkcm1fY3J0Y192Ymxh bmtfcHV0KTsKPiAgLyoqCj4gICAqIGRybV93YWl0X29uZV92YmxhbmsgLSB3YWl0IGZvciBvbmUg dmJsYW5rCj4gICAqIEBkZXY6IERSTSBkZXZpY2UKPiAtICogQGNydGM6IGNydGMgaW5kZXgKPiAr ICogQHBpcGU6IENSVEMgaW5kZXgKPiAgICoKPiAgICogVGhpcyB3YWl0cyBmb3Igb25lIHZibGFu ayB0byBwYXNzIG9uIEBjcnRjLCB1c2luZyB0aGUgaXJxIGRyaXZlciBpbnRlcmZhY2VzLgo+ICAg KiBJdCBpcyBhIGZhaWx1cmUgdG8gY2FsbCB0aGlzIHdoZW4gdGhlIHZibGFuayBpcnEgZm9yIEBj cnRjIGlzIGRpc2FibGVkLCBlLmcuCj4gICAqIGR1ZSB0byBsYWNrIG9mIGRyaXZlciBzdXBwb3J0 IG9yIGJlY2F1c2UgdGhlIGNydGMgaXMgb2ZmLgo+ICAgKi8KPiAtdm9pZCBkcm1fd2FpdF9vbmVf dmJsYW5rKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGludCBjcnRjKQo+ICt2b2lkIGRybV93YWl0 X29uZV92Ymxhbmsoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHBpcGUpCj4g IHsKPiArCXN0cnVjdCBkcm1fdmJsYW5rX2NydGMgKnZibGFuayA9ICZkZXYtPnZibGFua1twaXBl XTsKPiAgCWludCByZXQ7Cj4gIAl1MzIgbGFzdDsKPiAgCj4gLQlpZiAoV0FSTl9PTihjcnRjID49 IGRldi0+bnVtX2NydGNzKSkKPiArCWlmIChXQVJOX09OKHBpcGUgPj0gZGV2LT5udW1fY3J0Y3Mp KQo+ICAJCXJldHVybjsKPiAgCj4gLQlyZXQgPSBkcm1fdmJsYW5rX2dldChkZXYsIGNydGMpOwo+ IC0JaWYgKFdBUk4ocmV0LCAidmJsYW5rIG5vdCBhdmFpbGFibGUgb24gY3J0YyAlaSwgcmV0PSVp XG4iLCBjcnRjLCByZXQpKQo+ICsJcmV0ID0gZHJtX3ZibGFua19nZXQoZGV2LCBwaXBlKTsKPiAr CWlmIChXQVJOKHJldCwgInZibGFuayBub3QgYXZhaWxhYmxlIG9uIGNydGMgJWksIHJldD0laVxu IiwgcGlwZSwgcmV0KSkKPiAgCQlyZXR1cm47Cj4gIAo+IC0JbGFzdCA9IGRybV92YmxhbmtfY291 bnQoZGV2LCBjcnRjKTsKPiArCWxhc3QgPSBkcm1fdmJsYW5rX2NvdW50KGRldiwgcGlwZSk7Cj4g IAo+IC0JcmV0ID0gd2FpdF9ldmVudF90aW1lb3V0KGRldi0+dmJsYW5rW2NydGNdLnF1ZXVlLAo+ IC0JCQkJIGxhc3QgIT0gZHJtX3ZibGFua19jb3VudChkZXYsIGNydGMpLAo+ICsJcmV0ID0gd2Fp dF9ldmVudF90aW1lb3V0KHZibGFuay0+cXVldWUsCj4gKwkJCQkgbGFzdCAhPSBkcm1fdmJsYW5r X2NvdW50KGRldiwgcGlwZSksCj4gIAkJCQkgbXNlY3NfdG9famlmZmllcygxMDApKTsKPiAgCj4g LQlXQVJOKHJldCA9PSAwLCAidmJsYW5rIHdhaXQgdGltZWQgb3V0IG9uIGNydGMgJWlcbiIsIGNy dGMpOwo+ICsJV0FSTihyZXQgPT0gMCwgInZibGFuayB3YWl0IHRpbWVkIG91dCBvbiBjcnRjICVp XG4iLCBwaXBlKTsKPiAgCj4gLQlkcm1fdmJsYW5rX3B1dChkZXYsIGNydGMpOwo+ICsJZHJtX3Zi bGFua19wdXQoZGV2LCBwaXBlKTsKPiAgfQo+ICBFWFBPUlRfU1lNQk9MKGRybV93YWl0X29uZV92 YmxhbmspOwo+ICAKPiBAQCAtMTE5NCw3ICsxMTk2LDcgQEAgRVhQT1JUX1NZTUJPTChkcm1fY3J0 Y193YWl0X29uZV92YmxhbmspOwo+ICAvKioKPiAgICogZHJtX3ZibGFua19vZmYgLSBkaXNhYmxl IHZibGFuayBldmVudHMgb24gYSBDUlRDCj4gICAqIEBkZXY6IERSTSBkZXZpY2UKPiAtICogQGNy dGM6IENSVEMgaW4gcXVlc3Rpb24KPiArICogQHBpcGU6IENSVEMgaW5kZXgKPiAgICoKPiAgICog RHJpdmVycyBjYW4gdXNlIHRoaXMgZnVuY3Rpb24gdG8gc2h1dCBkb3duIHRoZSB2YmxhbmsgaW50 ZXJydXB0IGhhbmRsaW5nIHdoZW4KPiAgICogZGlzYWJsaW5nIGEgY3J0Yy4gVGhpcyBmdW5jdGlv biBlbnN1cmVzIHRoYXQgdGhlIGxhdGVzdCB2YmxhbmsgZnJhbWUgY291bnQgaXMKPiBAQCAtMTIw NSwyMSArMTIwNywyMSBAQCBFWFBPUlRfU1lNQk9MKGRybV9jcnRjX3dhaXRfb25lX3ZibGFuayk7 Cj4gICAqCj4gICAqIFRoaXMgaXMgdGhlIGxlZ2FjeSB2ZXJzaW9uIG9mIGRybV9jcnRjX3ZibGFu a19vZmYoKS4KPiAgICovCj4gLXZvaWQgZHJtX3ZibGFua19vZmYoc3RydWN0IGRybV9kZXZpY2Ug KmRldiwgaW50IGNydGMpCj4gK3ZvaWQgZHJtX3ZibGFua19vZmYoc3RydWN0IGRybV9kZXZpY2Ug KmRldiwgdW5zaWduZWQgaW50IHBpcGUpCj4gIHsKPiAtCXN0cnVjdCBkcm1fdmJsYW5rX2NydGMg KnZibGFuayA9ICZkZXYtPnZibGFua1tjcnRjXTsKPiArCXN0cnVjdCBkcm1fdmJsYW5rX2NydGMg KnZibGFuayA9ICZkZXYtPnZibGFua1twaXBlXTsKPiAgCXN0cnVjdCBkcm1fcGVuZGluZ192Ymxh bmtfZXZlbnQgKmUsICp0Owo+ICAJc3RydWN0IHRpbWV2YWwgbm93Owo+ICAJdW5zaWduZWQgbG9u ZyBpcnFmbGFnczsKPiAgCXVuc2lnbmVkIGludCBzZXE7Cj4gIAo+IC0JaWYgKFdBUk5fT04oY3J0 YyA+PSBkZXYtPm51bV9jcnRjcykpCj4gKwlpZiAoV0FSTl9PTihwaXBlID49IGRldi0+bnVtX2Ny dGNzKSkKPiAgCQlyZXR1cm47Cj4gIAo+ICAJc3Bpbl9sb2NrX2lycXNhdmUoJmRldi0+ZXZlbnRf bG9jaywgaXJxZmxhZ3MpOwo+ICAKPiAgCXNwaW5fbG9jaygmZGV2LT52YmxfbG9jayk7Cj4gLQl2 YmxhbmtfZGlzYWJsZV9hbmRfc2F2ZShkZXYsIGNydGMpOwo+ICsJdmJsYW5rX2Rpc2FibGVfYW5k X3NhdmUoZGV2LCBwaXBlKTsKPiAgCXdha2VfdXAoJnZibGFuay0+cXVldWUpOwo+ICAKPiAgCS8q Cj4gQEAgLTEyMzMsMTYgKzEyMzUsMTYgQEAgdm9pZCBkcm1fdmJsYW5rX29mZihzdHJ1Y3QgZHJt X2RldmljZSAqZGV2LCBpbnQgY3J0YykKPiAgCXNwaW5fdW5sb2NrKCZkZXYtPnZibF9sb2NrKTsK PiAgCj4gIAkvKiBTZW5kIGFueSBxdWV1ZWQgdmJsYW5rIGV2ZW50cywgbGVzdCB0aGUgbmF0aXZl cyBncm93IGRpc3F1aWV0ICovCj4gLQlzZXEgPSBkcm1fdmJsYW5rX2NvdW50X2FuZF90aW1lKGRl diwgY3J0YywgJm5vdyk7Cj4gKwlzZXEgPSBkcm1fdmJsYW5rX2NvdW50X2FuZF90aW1lKGRldiwg cGlwZSwgJm5vdyk7Cj4gIAo+ICAJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKGUsIHQsICZkZXYt PnZibGFua19ldmVudF9saXN0LCBiYXNlLmxpbmspIHsKPiAtCQlpZiAoZS0+cGlwZSAhPSBjcnRj KQo+ICsJCWlmIChlLT5waXBlICE9IHBpcGUpCj4gIAkJCWNvbnRpbnVlOwo+ICAJCURSTV9ERUJV RygiU2VuZGluZyBwcmVtYXR1cmUgdmJsYW5rIGV2ZW50IG9uIGRpc2FibGU6IFwKPiAgCQkJICB3 YW50ZWQgJWQsIGN1cnJlbnQgJWRcbiIsCj4gIAkJCSAgZS0+ZXZlbnQuc2VxdWVuY2UsIHNlcSk7 Cj4gIAkJbGlzdF9kZWwoJmUtPmJhc2UubGluayk7Cj4gLQkJZHJtX3ZibGFua19wdXQoZGV2LCBl LT5waXBlKTsKPiArCQlkcm1fdmJsYW5rX3B1dChkZXYsIHBpcGUpOwo+ICAJCXNlbmRfdmJsYW5r X2V2ZW50KGRldiwgZSwgc2VxLCAmbm93KTsKPiAgCX0KPiAgCXNwaW5fdW5sb2NrX2lycXJlc3Rv cmUoJmRldi0+ZXZlbnRfbG9jaywgaXJxZmxhZ3MpOwo+IEBAIC0xMzAzLDcgKzEzMDUsNyBAQCBF WFBPUlRfU1lNQk9MKGRybV9jcnRjX3ZibGFua19yZXNldCk7Cj4gIC8qKgo+ICAgKiBkcm1fdmJs YW5rX29uIC0gZW5hYmxlIHZibGFuayBldmVudHMgb24gYSBDUlRDCj4gICAqIEBkZXY6IERSTSBk ZXZpY2UKPiAtICogQGNydGM6IENSVEMgaW4gcXVlc3Rpb24KPiArICogQHBpcGU6IENSVEMgaW5k ZXgKPiAgICoKPiAgICogVGhpcyBmdW5jdGlvbnMgcmVzdG9yZXMgdGhlIHZibGFuayBpbnRlcnJ1 cHQgc3RhdGUgY2FwdHVyZWQgd2l0aAo+ICAgKiBkcm1fdmJsYW5rX29mZigpIGFnYWluLiBOb3Rl IHRoYXQgY2FsbHMgdG8gZHJtX3ZibGFua19vbigpIGFuZAo+IEBAIC0xMzEyLDEyICsxMzE0LDEy IEBAIEVYUE9SVF9TWU1CT0woZHJtX2NydGNfdmJsYW5rX3Jlc2V0KTsKPiAgICoKPiAgICogVGhp cyBpcyB0aGUgbGVnYWN5IHZlcnNpb24gb2YgZHJtX2NydGNfdmJsYW5rX29uKCkuCj4gICAqLwo+ IC12b2lkIGRybV92Ymxhbmtfb24oc3RydWN0IGRybV9kZXZpY2UgKmRldiwgaW50IGNydGMpCj4g K3ZvaWQgZHJtX3ZibGFua19vbihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQg cGlwZSkKPiAgewo+IC0Jc3RydWN0IGRybV92YmxhbmtfY3J0YyAqdmJsYW5rID0gJmRldi0+dmJs YW5rW2NydGNdOwo+ICsJc3RydWN0IGRybV92YmxhbmtfY3J0YyAqdmJsYW5rID0gJmRldi0+dmJs YW5rW3BpcGVdOwo+ICAJdW5zaWduZWQgbG9uZyBpcnFmbGFnczsKPiAgCj4gLQlpZiAoV0FSTl9P TihjcnRjID49IGRldi0+bnVtX2NydGNzKSkKPiArCWlmIChXQVJOX09OKHBpcGUgPj0gZGV2LT5u dW1fY3J0Y3MpKQo+ICAJCXJldHVybjsKPiAgCj4gIAlzcGluX2xvY2tfaXJxc2F2ZSgmZGV2LT52 YmxfbG9jaywgaXJxZmxhZ3MpOwo+IEBAIC0xMzM1LDcgKzEzMzcsNyBAQCB2b2lkIGRybV92Ymxh bmtfb24oc3RydWN0IGRybV9kZXZpY2UgKmRldiwgaW50IGNydGMpCj4gIAkgKiB2YmxhbmsgY291 bnRlciB2YWx1ZSBiZWZvcmUgYW5kIGFmdGVyIGEgbW9kZXNldAo+ICAJICovCj4gIAl2Ymxhbmst Pmxhc3QgPQo+IC0JCShkZXYtPmRyaXZlci0+Z2V0X3ZibGFua19jb3VudGVyKGRldiwgY3J0Yykg LSAxKSAmCj4gKwkJKGRldi0+ZHJpdmVyLT5nZXRfdmJsYW5rX2NvdW50ZXIoZGV2LCBwaXBlKSAt IDEpICYKPiAgCQlkZXYtPm1heF92YmxhbmtfY291bnQ7Cj4gIAkvKgo+ICAJICogcmUtZW5hYmxl IGludGVycnVwdHMgaWYgdGhlcmUgYXJlIHVzZXJzIGxlZnQsIG9yIHRoZQo+IEBAIC0xMzQzLDcg KzEzNDUsNyBAQCB2b2lkIGRybV92Ymxhbmtfb24oc3RydWN0IGRybV9kZXZpY2UgKmRldiwgaW50 IGNydGMpCj4gIAkgKi8KPiAgCWlmIChhdG9taWNfcmVhZCgmdmJsYW5rLT5yZWZjb3VudCkgIT0g MCB8fAo+ICAJICAgICghZGV2LT52YmxhbmtfZGlzYWJsZV9pbW1lZGlhdGUgJiYgZHJtX3ZibGFu a19vZmZkZWxheSA9PSAwKSkKPiAtCQlXQVJOX09OKGRybV92YmxhbmtfZW5hYmxlKGRldiwgY3J0 YykpOwo+ICsJCVdBUk5fT04oZHJtX3ZibGFua19lbmFibGUoZGV2LCBwaXBlKSk7Cj4gIAlzcGlu X3VubG9ja19pcnFyZXN0b3JlKCZkZXYtPnZibF9sb2NrLCBpcnFmbGFncyk7Cj4gIH0KPiAgRVhQ T1JUX1NZTUJPTChkcm1fdmJsYW5rX29uKTsKPiBAQCAtMTM2OCw3ICsxMzcwLDcgQEAgRVhQT1JU X1NZTUJPTChkcm1fY3J0Y192Ymxhbmtfb24pOwo+ICAvKioKPiAgICogZHJtX3ZibGFua19wcmVf bW9kZXNldCAtIGFjY291bnQgZm9yIHZibGFua3MgYWNyb3NzIG1vZGUgc2V0cwo+ICAgKiBAZGV2 OiBEUk0gZGV2aWNlCj4gLSAqIEBjcnRjOiBDUlRDIGluIHF1ZXN0aW9uCj4gKyAqIEBwaXBlOiBD UlRDIGluZGV4Cj4gICAqCj4gICAqIEFjY291bnQgZm9yIHZibGFuayBldmVudHMgYWNyb3NzIG1v ZGUgc2V0dGluZyBldmVudHMsIHdoaWNoIHdpbGwgbGlrZWx5Cj4gICAqIHJlc2V0IHRoZSBoYXJk d2FyZSBmcmFtZSBjb3VudGVyLgo+IEBAIC0xMzg4LDE1ICsxMzkwLDE1IEBAIEVYUE9SVF9TWU1C T0woZHJtX2NydGNfdmJsYW5rX29uKTsKPiAgICogRHJpdmVycyBtdXN0IGNhbGwgZHJtX3ZibGFu a19wb3N0X21vZGVzZXQoKSB3aGVuIHJlLWVuYWJsaW5nIHRoZSBzYW1lIGNydGMKPiAgICogYWdh aW4uCj4gICAqLwo+IC12b2lkIGRybV92YmxhbmtfcHJlX21vZGVzZXQoc3RydWN0IGRybV9kZXZp Y2UgKmRldiwgaW50IGNydGMpCj4gK3ZvaWQgZHJtX3ZibGFua19wcmVfbW9kZXNldChzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgcGlwZSkKPiAgewo+IC0Jc3RydWN0IGRybV92 YmxhbmtfY3J0YyAqdmJsYW5rID0gJmRldi0+dmJsYW5rW2NydGNdOwo+ICsJc3RydWN0IGRybV92 YmxhbmtfY3J0YyAqdmJsYW5rID0gJmRldi0+dmJsYW5rW3BpcGVdOwo+ICAKPiAgCS8qIHZibGFu ayBpcyBub3QgaW5pdGlhbGl6ZWQgKElSUSBub3QgaW5zdGFsbGVkID8pLCBvciBoYXMgYmVlbiBm cmVlZCAqLwo+ICAJaWYgKCFkZXYtPm51bV9jcnRjcykKPiAgCQlyZXR1cm47Cj4gIAo+IC0JaWYg KFdBUk5fT04oY3J0YyA+PSBkZXYtPm51bV9jcnRjcykpCj4gKwlpZiAoV0FSTl9PTihwaXBlID49 IGRldi0+bnVtX2NydGNzKSkKPiAgCQlyZXR1cm47Cj4gIAo+ICAJLyoKPiBAQCAtMTQwOCw3ICsx NDEwLDcgQEAgdm9pZCBkcm1fdmJsYW5rX3ByZV9tb2Rlc2V0KHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYsIGludCBjcnRjKQo+ICAJICovCj4gIAlpZiAoIXZibGFuay0+aW5tb2Rlc2V0KSB7Cj4gIAkJ dmJsYW5rLT5pbm1vZGVzZXQgPSAweDE7Cj4gLQkJaWYgKGRybV92YmxhbmtfZ2V0KGRldiwgY3J0 YykgPT0gMCkKPiArCQlpZiAoZHJtX3ZibGFua19nZXQoZGV2LCBwaXBlKSA9PSAwKQo+ICAJCQl2 YmxhbmstPmlubW9kZXNldCB8PSAweDI7Cj4gIAl9Cj4gIH0KPiBAQCAtMTQxNywyMSArMTQxOSwy MSBAQCBFWFBPUlRfU1lNQk9MKGRybV92YmxhbmtfcHJlX21vZGVzZXQpOwo+ICAvKioKPiAgICog ZHJtX3ZibGFua19wb3N0X21vZGVzZXQgLSB1bmRvIGRybV92YmxhbmtfcHJlX21vZGVzZXQgY2hh bmdlcwo+ICAgKiBAZGV2OiBEUk0gZGV2aWNlCj4gLSAqIEBjcnRjOiBDUlRDIGluIHF1ZXN0aW9u Cj4gKyAqIEBwaXBlOiBDUlRDIGluZGV4Cj4gICAqCj4gICAqIFRoaXMgZnVuY3Rpb24gYWdhaW4g ZHJvcHMgdGhlIHRlbXBvcmFyeSB2YmxhbmsgcmVmZXJlbmNlIGFjcXVpcmVkIGluCj4gICAqIGRy bV92YmxhbmtfcHJlX21vZGVzZXQuCj4gICAqLwo+IC12b2lkIGRybV92YmxhbmtfcG9zdF9tb2Rl c2V0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGludCBjcnRjKQo+ICt2b2lkIGRybV92Ymxhbmtf cG9zdF9tb2Rlc2V0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCBwaXBlKQo+ ICB7Cj4gLQlzdHJ1Y3QgZHJtX3ZibGFua19jcnRjICp2YmxhbmsgPSAmZGV2LT52YmxhbmtbY3J0 Y107Cj4gKwlzdHJ1Y3QgZHJtX3ZibGFua19jcnRjICp2YmxhbmsgPSAmZGV2LT52YmxhbmtbcGlw ZV07Cj4gIAl1bnNpZ25lZCBsb25nIGlycWZsYWdzOwo+ICAKPiAgCS8qIHZibGFuayBpcyBub3Qg aW5pdGlhbGl6ZWQgKElSUSBub3QgaW5zdGFsbGVkID8pLCBvciBoYXMgYmVlbiBmcmVlZCAqLwo+ ICAJaWYgKCFkZXYtPm51bV9jcnRjcykKPiAgCQlyZXR1cm47Cj4gIAo+IC0JaWYgKFdBUk5fT04o Y3J0YyA+PSBkZXYtPm51bV9jcnRjcykpCj4gKwlpZiAoV0FSTl9PTihwaXBlID49IGRldi0+bnVt X2NydGNzKSkKPiAgCQlyZXR1cm47Cj4gIAo+ICAJaWYgKHZibGFuay0+aW5tb2Rlc2V0KSB7Cj4g QEAgLTE0NDAsNyArMTQ0Miw3IEBAIHZvaWQgZHJtX3ZibGFua19wb3N0X21vZGVzZXQoc3RydWN0 IGRybV9kZXZpY2UgKmRldiwgaW50IGNydGMpCj4gIAkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgm ZGV2LT52YmxfbG9jaywgaXJxZmxhZ3MpOwo+ICAKPiAgCQlpZiAodmJsYW5rLT5pbm1vZGVzZXQg JiAweDIpCj4gLQkJCWRybV92YmxhbmtfcHV0KGRldiwgY3J0Yyk7Cj4gKwkJCWRybV92Ymxhbmtf cHV0KGRldiwgcGlwZSk7Cj4gIAo+ICAJCXZibGFuay0+aW5tb2Rlc2V0ID0gMDsKPiAgCX0KPiBA QCAtMTQ2Miw3ICsxNDY0LDcgQEAgaW50IGRybV9tb2Rlc2V0X2N0bChzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2LCB2b2lkICpkYXRhLAo+ICAJCSAgICBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdikK PiAgewo+ICAJc3RydWN0IGRybV9tb2Rlc2V0X2N0bCAqbW9kZXNldCA9IGRhdGE7Cj4gLQl1bnNp Z25lZCBpbnQgY3J0YzsKPiArCXVuc2lnbmVkIGludCBwaXBlOwo+ICAKPiAgCS8qIElmIGRybV92 YmxhbmtfaW5pdCgpIGhhc24ndCBiZWVuIGNhbGxlZCB5ZXQsIGp1c3Qgbm8tb3AgKi8KPiAgCWlm ICghZGV2LT5udW1fY3J0Y3MpCj4gQEAgLTE0NzIsMTYgKzE0NzQsMTYgQEAgaW50IGRybV9tb2Rl c2V0X2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAo+ICAJaWYgKGRybV9j b3JlX2NoZWNrX2ZlYXR1cmUoZGV2LCBEUklWRVJfTU9ERVNFVCkpCj4gIAkJcmV0dXJuIDA7Cj4g IAo+IC0JY3J0YyA9IG1vZGVzZXQtPmNydGM7Cj4gLQlpZiAoY3J0YyA+PSBkZXYtPm51bV9jcnRj cykKPiArCXBpcGUgPSBtb2Rlc2V0LT5jcnRjOwo+ICsJaWYgKHBpcGUgPj0gZGV2LT5udW1fY3J0 Y3MpCj4gIAkJcmV0dXJuIC1FSU5WQUw7Cj4gIAo+ICAJc3dpdGNoIChtb2Rlc2V0LT5jbWQpIHsK PiAgCWNhc2UgX0RSTV9QUkVfTU9ERVNFVDoKPiAtCQlkcm1fdmJsYW5rX3ByZV9tb2Rlc2V0KGRl diwgY3J0Yyk7Cj4gKwkJZHJtX3ZibGFua19wcmVfbW9kZXNldChkZXYsIHBpcGUpOwo+ICAJCWJy ZWFrOwo+ICAJY2FzZSBfRFJNX1BPU1RfTU9ERVNFVDoKPiAtCQlkcm1fdmJsYW5rX3Bvc3RfbW9k ZXNldChkZXYsIGNydGMpOwo+ICsJCWRybV92YmxhbmtfcG9zdF9tb2Rlc2V0KGRldiwgcGlwZSk7 Cj4gIAkJYnJlYWs7Cj4gIAlkZWZhdWx0Ogo+ICAJCXJldHVybiAtRUlOVkFMOwo+IEBAIC0xNDkw LDcgKzE0OTIsNyBAQCBpbnQgZHJtX21vZGVzZXRfY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYs IHZvaWQgKmRhdGEsCj4gIAlyZXR1cm4gMDsKPiAgfQo+ICAKPiAtc3RhdGljIGludCBkcm1fcXVl dWVfdmJsYW5rX2V2ZW50KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGludCBwaXBlLAo+ICtzdGF0 aWMgaW50IGRybV9xdWV1ZV92YmxhbmtfZXZlbnQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdW5z aWduZWQgaW50IHBpcGUsCj4gIAkJCQkgIHVuaW9uIGRybV93YWl0X3ZibGFuayAqdmJsd2FpdCwK PiAgCQkJCSAgc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXYpCj4gIHsKPiBAQCAtMTU0NCw3ICsx NTQ2LDcgQEAgc3RhdGljIGludCBkcm1fcXVldWVfdmJsYW5rX2V2ZW50KHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYsIGludCBwaXBlLAo+ICAJCXZibHdhaXQtPnJlcGx5LnNlcXVlbmNlID0gdmJsd2Fp dC0+cmVxdWVzdC5zZXF1ZW5jZTsKPiAgCX0KPiAgCj4gLQlEUk1fREVCVUcoImV2ZW50IG9uIHZi bGFuayBjb3VudCAlZCwgY3VycmVudCAlZCwgY3J0YyAlZFxuIiwKPiArCURSTV9ERUJVRygiZXZl bnQgb24gdmJsYW5rIGNvdW50ICVkLCBjdXJyZW50ICVkLCBjcnRjICV1XG4iLAo+ICAJCSAgdmJs d2FpdC0+cmVxdWVzdC5zZXF1ZW5jZSwgc2VxLCBwaXBlKTsKPiAgCj4gIAl0cmFjZV9kcm1fdmJs YW5rX2V2ZW50X3F1ZXVlZChjdXJyZW50LT5waWQsIHBpcGUsCj4gQEAgLTE1OTMsNyArMTU5NSw3 IEBAIGludCBkcm1fd2FpdF92Ymxhbmsoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0 YSwKPiAgCXN0cnVjdCBkcm1fdmJsYW5rX2NydGMgKnZibGFuazsKPiAgCXVuaW9uIGRybV93YWl0 X3ZibGFuayAqdmJsd2FpdCA9IGRhdGE7Cj4gIAlpbnQgcmV0Owo+IC0JdW5zaWduZWQgaW50IGZs YWdzLCBzZXEsIGNydGMsIGhpZ2hfY3J0YzsKPiArCXVuc2lnbmVkIGludCBmbGFncywgc2VxLCBw aXBlLCBoaWdoX3BpcGU7Cj4gIAo+ICAJaWYgKCFkZXYtPmlycV9lbmFibGVkKQo+ICAJCXJldHVy biAtRUlOVkFMOwo+IEBAIC0xNjEyLDIyICsxNjE0LDIyIEBAIGludCBkcm1fd2FpdF92Ymxhbmso c3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKPiAgCX0KPiAgCj4gIAlmbGFncyA9 IHZibHdhaXQtPnJlcXVlc3QudHlwZSAmIF9EUk1fVkJMQU5LX0ZMQUdTX01BU0s7Cj4gLQloaWdo X2NydGMgPSAodmJsd2FpdC0+cmVxdWVzdC50eXBlICYgX0RSTV9WQkxBTktfSElHSF9DUlRDX01B U0spOwo+IC0JaWYgKGhpZ2hfY3J0YykKPiAtCQljcnRjID0gaGlnaF9jcnRjID4+IF9EUk1fVkJM QU5LX0hJR0hfQ1JUQ19TSElGVDsKPiArCWhpZ2hfcGlwZSA9ICh2Ymx3YWl0LT5yZXF1ZXN0LnR5 cGUgJiBfRFJNX1ZCTEFOS19ISUdIX0NSVENfTUFTSyk7Cj4gKwlpZiAoaGlnaF9waXBlKQo+ICsJ CXBpcGUgPSBoaWdoX3BpcGUgPj4gX0RSTV9WQkxBTktfSElHSF9DUlRDX1NISUZUOwo+ICAJZWxz ZQo+IC0JCWNydGMgPSBmbGFncyAmIF9EUk1fVkJMQU5LX1NFQ09OREFSWSA/IDEgOiAwOwo+IC0J aWYgKGNydGMgPj0gZGV2LT5udW1fY3J0Y3MpCj4gKwkJcGlwZSA9IGZsYWdzICYgX0RSTV9WQkxB TktfU0VDT05EQVJZID8gMSA6IDA7Cj4gKwlpZiAocGlwZSA+PSBkZXYtPm51bV9jcnRjcykKPiAg CQlyZXR1cm4gLUVJTlZBTDsKPiAgCj4gLQl2YmxhbmsgPSAmZGV2LT52YmxhbmtbY3J0Y107Cj4g Kwl2YmxhbmsgPSAmZGV2LT52YmxhbmtbcGlwZV07Cj4gIAo+IC0JcmV0ID0gZHJtX3ZibGFua19n ZXQoZGV2LCBjcnRjKTsKPiArCXJldCA9IGRybV92YmxhbmtfZ2V0KGRldiwgcGlwZSk7Cj4gIAlp ZiAocmV0KSB7Cj4gIAkJRFJNX0RFQlVHKCJmYWlsZWQgdG8gYWNxdWlyZSB2YmxhbmsgY291bnRl ciwgJWRcbiIsIHJldCk7Cj4gIAkJcmV0dXJuIHJldDsKPiAgCX0KPiAtCXNlcSA9IGRybV92Ymxh bmtfY291bnQoZGV2LCBjcnRjKTsKPiArCXNlcSA9IGRybV92YmxhbmtfY291bnQoZGV2LCBwaXBl KTsKPiAgCj4gIAlzd2l0Y2ggKHZibHdhaXQtPnJlcXVlc3QudHlwZSAmIF9EUk1fVkJMQU5LX1RZ UEVTX01BU0spIHsKPiAgCWNhc2UgX0RSTV9WQkxBTktfUkVMQVRJVkU6Cj4gQEAgLTE2NDQsNyAr MTY0Niw3IEBAIGludCBkcm1fd2FpdF92Ymxhbmsoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9p ZCAqZGF0YSwKPiAgCQkvKiBtdXN0IGhvbGQgb24gdG8gdGhlIHZibGFuayByZWYgdW50aWwgdGhl IGV2ZW50IGZpcmVzCj4gIAkJICogZHJtX3ZibGFua19wdXQgd2lsbCBiZSBjYWxsZWQgYXN5bmNo cm9ub3VzbHkKPiAgCQkgKi8KPiAtCQlyZXR1cm4gZHJtX3F1ZXVlX3ZibGFua19ldmVudChkZXYs IGNydGMsIHZibHdhaXQsIGZpbGVfcHJpdik7Cj4gKwkJcmV0dXJuIGRybV9xdWV1ZV92Ymxhbmtf ZXZlbnQoZGV2LCBwaXBlLCB2Ymx3YWl0LCBmaWxlX3ByaXYpOwo+ICAJfQo+ICAKPiAgCWlmICgo ZmxhZ3MgJiBfRFJNX1ZCTEFOS19ORVhUT05NSVNTKSAmJgo+IEBAIC0xNjUyLDExICsxNjU0LDEx IEBAIGludCBkcm1fd2FpdF92Ymxhbmsoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0 YSwKPiAgCQl2Ymx3YWl0LT5yZXF1ZXN0LnNlcXVlbmNlID0gc2VxICsgMTsKPiAgCX0KPiAgCj4g LQlEUk1fREVCVUcoIndhaXRpbmcgb24gdmJsYW5rIGNvdW50ICVkLCBjcnRjICVkXG4iLAo+IC0J CSAgdmJsd2FpdC0+cmVxdWVzdC5zZXF1ZW5jZSwgY3J0Yyk7Cj4gKwlEUk1fREVCVUcoIndhaXRp bmcgb24gdmJsYW5rIGNvdW50ICVkLCBjcnRjICV1XG4iLAo+ICsJCSAgdmJsd2FpdC0+cmVxdWVz dC5zZXF1ZW5jZSwgcGlwZSk7Cj4gIAl2YmxhbmstPmxhc3Rfd2FpdCA9IHZibHdhaXQtPnJlcXVl c3Quc2VxdWVuY2U7Cj4gIAlEUk1fV0FJVF9PTihyZXQsIHZibGFuay0+cXVldWUsIDMgKiBIWiwK PiAtCQkgICAgKCgoZHJtX3ZibGFua19jb3VudChkZXYsIGNydGMpIC0KPiArCQkgICAgKCgoZHJt X3ZibGFua19jb3VudChkZXYsIHBpcGUpIC0KPiAgCQkgICAgICAgdmJsd2FpdC0+cmVxdWVzdC5z ZXF1ZW5jZSkgPD0gKDEgPDwgMjMpKSB8fAo+ICAJCSAgICAgIXZibGFuay0+ZW5hYmxlZCB8fAo+ ICAJCSAgICAgIWRldi0+aXJxX2VuYWJsZWQpKTsKPiBAQCAtMTY2NCw3ICsxNjY2LDcgQEAgaW50 IGRybV93YWl0X3ZibGFuayhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAo+ICAJ aWYgKHJldCAhPSAtRUlOVFIpIHsKPiAgCQlzdHJ1Y3QgdGltZXZhbCBub3c7Cj4gIAo+IC0JCXZi bHdhaXQtPnJlcGx5LnNlcXVlbmNlID0gZHJtX3ZibGFua19jb3VudF9hbmRfdGltZShkZXYsIGNy dGMsICZub3cpOwo+ICsJCXZibHdhaXQtPnJlcGx5LnNlcXVlbmNlID0gZHJtX3ZibGFua19jb3Vu dF9hbmRfdGltZShkZXYsIHBpcGUsICZub3cpOwo+ICAJCXZibHdhaXQtPnJlcGx5LnR2YWxfc2Vj ID0gbm93LnR2X3NlYzsKPiAgCQl2Ymx3YWl0LT5yZXBseS50dmFsX3VzZWMgPSBub3cudHZfdXNl YzsKPiAgCj4gQEAgLTE2NzUsMTEgKzE2NzcsMTEgQEAgaW50IGRybV93YWl0X3ZibGFuayhzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAo+ICAJfQo+ICAKPiAgZG9uZToKPiAtCWRy bV92YmxhbmtfcHV0KGRldiwgY3J0Yyk7Cj4gKwlkcm1fdmJsYW5rX3B1dChkZXYsIHBpcGUpOwo+ ICAJcmV0dXJuIHJldDsKPiAgfQo+ICAKPiAtc3RhdGljIHZvaWQgZHJtX2hhbmRsZV92Ymxhbmtf ZXZlbnRzKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGludCBjcnRjKQo+ICtzdGF0aWMgdm9pZCBk cm1faGFuZGxlX3ZibGFua19ldmVudHMoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdW5zaWduZWQg aW50IHBpcGUpCj4gIHsKPiAgCXN0cnVjdCBkcm1fcGVuZGluZ192YmxhbmtfZXZlbnQgKmUsICp0 Owo+ICAJc3RydWN0IHRpbWV2YWwgbm93Owo+IEBAIC0xNjg3LDEwICsxNjg5LDEwIEBAIHN0YXRp YyB2b2lkIGRybV9oYW5kbGVfdmJsYW5rX2V2ZW50cyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBp bnQgY3J0YykKPiAgCj4gIAlhc3NlcnRfc3Bpbl9sb2NrZWQoJmRldi0+ZXZlbnRfbG9jayk7Cj4g IAo+IC0Jc2VxID0gZHJtX3ZibGFua19jb3VudF9hbmRfdGltZShkZXYsIGNydGMsICZub3cpOwo+ ICsJc2VxID0gZHJtX3ZibGFua19jb3VudF9hbmRfdGltZShkZXYsIHBpcGUsICZub3cpOwo+ICAK PiAgCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShlLCB0LCAmZGV2LT52YmxhbmtfZXZlbnRfbGlz dCwgYmFzZS5saW5rKSB7Cj4gLQkJaWYgKGUtPnBpcGUgIT0gY3J0YykKPiArCQlpZiAoZS0+cGlw ZSAhPSBwaXBlKQo+ICAJCQljb250aW51ZTsKPiAgCQlpZiAoKHNlcSAtIGUtPmV2ZW50LnNlcXVl bmNlKSA+ICgxPDwyMykpCj4gIAkJCWNvbnRpbnVlOwo+IEBAIC0xNjk5LDI2ICsxNzAxLDI2IEBA IHN0YXRpYyB2b2lkIGRybV9oYW5kbGVfdmJsYW5rX2V2ZW50cyhzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2LCBpbnQgY3J0YykKPiAgCQkJICBlLT5ldmVudC5zZXF1ZW5jZSwgc2VxKTsKPiAgCj4gIAkJ bGlzdF9kZWwoJmUtPmJhc2UubGluayk7Cj4gLQkJZHJtX3ZibGFua19wdXQoZGV2LCBlLT5waXBl KTsKPiArCQlkcm1fdmJsYW5rX3B1dChkZXYsIHBpcGUpOwo+ICAJCXNlbmRfdmJsYW5rX2V2ZW50 KGRldiwgZSwgc2VxLCAmbm93KTsKPiAgCX0KPiAgCj4gLQl0cmFjZV9kcm1fdmJsYW5rX2V2ZW50 KGNydGMsIHNlcSk7Cj4gKwl0cmFjZV9kcm1fdmJsYW5rX2V2ZW50KHBpcGUsIHNlcSk7Cj4gIH0K PiAgCj4gIC8qKgo+ICAgKiBkcm1faGFuZGxlX3ZibGFuayAtIGhhbmRsZSBhIHZibGFuayBldmVu dAo+ICAgKiBAZGV2OiBEUk0gZGV2aWNlCj4gLSAqIEBjcnRjOiB3aGVyZSB0aGlzIGV2ZW50IG9j Y3VycmVkCj4gKyAqIEBwaXBlOiBpbmRleCBvZiBDUlRDIHdoZXJlIHRoaXMgZXZlbnQgb2NjdXJy ZWQKPiAgICoKPiAgICogRHJpdmVycyBzaG91bGQgY2FsbCB0aGlzIHJvdXRpbmUgaW4gdGhlaXIg dmJsYW5rIGludGVycnVwdCBoYW5kbGVycyB0bwo+ICAgKiB1cGRhdGUgdGhlIHZibGFuayBjb3Vu dGVyIGFuZCBzZW5kIGFueSBzaWduYWxzIHRoYXQgbWF5IGJlIHBlbmRpbmcuCj4gICAqCj4gICAq IFRoaXMgaXMgdGhlIGxlZ2FjeSB2ZXJzaW9uIG9mIGRybV9jcnRjX2hhbmRsZV92YmxhbmsoKS4K PiAgICovCj4gLWJvb2wgZHJtX2hhbmRsZV92Ymxhbmsoc3RydWN0IGRybV9kZXZpY2UgKmRldiwg aW50IGNydGMpCj4gK2Jvb2wgZHJtX2hhbmRsZV92Ymxhbmsoc3RydWN0IGRybV9kZXZpY2UgKmRl diwgdW5zaWduZWQgaW50IHBpcGUpCj4gIHsKPiAtCXN0cnVjdCBkcm1fdmJsYW5rX2NydGMgKnZi bGFuayA9ICZkZXYtPnZibGFua1tjcnRjXTsKPiArCXN0cnVjdCBkcm1fdmJsYW5rX2NydGMgKnZi bGFuayA9ICZkZXYtPnZibGFua1twaXBlXTsKPiAgCXUzMiB2Ymxjb3VudDsKPiAgCXM2NCBkaWZm X25zOwo+ICAJc3RydWN0IHRpbWV2YWwgdHZibGFuazsKPiBAQCAtMTcyNyw3ICsxNzI5LDcgQEAg Ym9vbCBkcm1faGFuZGxlX3ZibGFuayhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBpbnQgY3J0YykK PiAgCWlmIChXQVJOX09OX09OQ0UoIWRldi0+bnVtX2NydGNzKSkKPiAgCQlyZXR1cm4gZmFsc2U7 Cj4gIAo+IC0JaWYgKFdBUk5fT04oY3J0YyA+PSBkZXYtPm51bV9jcnRjcykpCj4gKwlpZiAoV0FS Tl9PTihwaXBlID49IGRldi0+bnVtX2NydGNzKSkKPiAgCQlyZXR1cm4gZmFsc2U7Cj4gIAo+ICAJ c3Bpbl9sb2NrX2lycXNhdmUoJmRldi0+ZXZlbnRfbG9jaywgaXJxZmxhZ3MpOwo+IEBAIC0xNzUx LDExICsxNzUzLDExIEBAIGJvb2wgZHJtX2hhbmRsZV92Ymxhbmsoc3RydWN0IGRybV9kZXZpY2Ug KmRldiwgaW50IGNydGMpCj4gIAo+ICAJLyogR2V0IGN1cnJlbnQgdGltZXN0YW1wIGFuZCBjb3Vu dC4gKi8KPiAgCXZibGNvdW50ID0gdmJsYW5rLT5jb3VudDsKPiAtCWRybV9nZXRfbGFzdF92Ymx0 aW1lc3RhbXAoZGV2LCBjcnRjLCAmdHZibGFuaywgRFJNX0NBTExFRF9GUk9NX1ZCTElSUSk7Cj4g Kwlkcm1fZ2V0X2xhc3RfdmJsdGltZXN0YW1wKGRldiwgcGlwZSwgJnR2YmxhbmssIERSTV9DQUxM RURfRlJPTV9WQkxJUlEpOwo+ICAKPiAgCS8qIENvbXB1dGUgdGltZSBkaWZmZXJlbmNlIHRvIHRp bWVzdGFtcCBvZiBsYXN0IHZibGFuayAqLwo+ICAJZGlmZl9ucyA9IHRpbWV2YWxfdG9fbnMoJnR2 YmxhbmspIC0KPiAtCQkgIHRpbWV2YWxfdG9fbnMoJnZibGFua3RpbWVzdGFtcChkZXYsIGNydGMs IHZibGNvdW50KSk7Cj4gKwkJICB0aW1ldmFsX3RvX25zKCZ2Ymxhbmt0aW1lc3RhbXAoZGV2LCBw aXBlLCB2Ymxjb3VudCkpOwo+ICAKPiAgCS8qIFVwZGF0ZSB2YmxhbmsgdGltZXN0YW1wIGFuZCBj b3VudCBpZiBhdCBsZWFzdAo+ICAJICogRFJNX1JFRFVOREFOVF9WQkxJUlFfVEhSRVNIX05TIG5h bm9zZWNvbmRzCj4gQEAgLTE3NjcsMTUgKzE3NjksMTUgQEAgYm9vbCBkcm1faGFuZGxlX3ZibGFu ayhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBpbnQgY3J0YykKPiAgCSAqIGlnbm9yZSB0aG9zZSBm b3IgYWNjb3VudGluZy4KPiAgCSAqLwo+ICAJaWYgKGFiczY0KGRpZmZfbnMpID4gRFJNX1JFRFVO REFOVF9WQkxJUlFfVEhSRVNIX05TKQo+IC0JCXN0b3JlX3ZibGFuayhkZXYsIGNydGMsIDEsICZ0 dmJsYW5rKTsKPiArCQlzdG9yZV92YmxhbmsoZGV2LCBwaXBlLCAxLCAmdHZibGFuayk7Cj4gIAll bHNlCj4gLQkJRFJNX0RFQlVHKCJjcnRjICVkOiBSZWR1bmRhbnQgdmJsaXJxIGlnbm9yZWQuIGRp ZmZfbnMgPSAlZFxuIiwKPiAtCQkJICBjcnRjLCAoaW50KSBkaWZmX25zKTsKPiArCQlEUk1fREVC VUcoImNydGMgJXU6IFJlZHVuZGFudCB2YmxpcnEgaWdub3JlZC4gZGlmZl9ucyA9ICVkXG4iLAo+ ICsJCQkgIHBpcGUsIChpbnQpIGRpZmZfbnMpOwo+ICAKPiAgCXNwaW5fdW5sb2NrKCZkZXYtPnZi bGFua190aW1lX2xvY2spOwo+ICAKPiAgCXdha2VfdXAoJnZibGFuay0+cXVldWUpOwo+IC0JZHJt X2hhbmRsZV92YmxhbmtfZXZlbnRzKGRldiwgY3J0Yyk7Cj4gKwlkcm1faGFuZGxlX3ZibGFua19l dmVudHMoZGV2LCBwaXBlKTsKPiAgCj4gIAlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZkZXYtPmV2 ZW50X2xvY2ssIGlycWZsYWdzKTsKPiAgCj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHJtL2RybVAu aCBiL2luY2x1ZGUvZHJtL2RybVAuaAo+IGluZGV4IDU5MDg4NDhkODZiMy4uMDIwYWZhMzQzZGZm IDEwMDY0NAo+IC0tLSBhL2luY2x1ZGUvZHJtL2RybVAuaAo+ICsrKyBiL2luY2x1ZGUvZHJtL2Ry bVAuaAo+IEBAIC02ODEsNyArNjgxLDcgQEAgc3RydWN0IGRybV9taW5vciB7Cj4gIAo+ICBzdHJ1 Y3QgZHJtX3BlbmRpbmdfdmJsYW5rX2V2ZW50IHsKPiAgCXN0cnVjdCBkcm1fcGVuZGluZ19ldmVu dCBiYXNlOwo+IC0JaW50IHBpcGU7Cj4gKwl1bnNpZ25lZCBpbnQgcGlwZTsKPiAgCXN0cnVjdCBk cm1fZXZlbnRfdmJsYW5rIGV2ZW50Owo+ICB9Owo+ICAKPiBAQCAtNzAwLDcgKzcwMCw3IEBAIHN0 cnVjdCBkcm1fdmJsYW5rX2NydGMgewo+ICAJCQkJCS8qIGZvciB3cmFwYXJvdW5kIGhhbmRsaW5n ICovCj4gIAl1MzIgbGFzdF93YWl0OwkJCS8qIExhc3QgdmJsYW5rIHNlcW5vIHdhaXRlZCBwZXIg Q1JUQyAqLwo+ICAJdW5zaWduZWQgaW50IGlubW9kZXNldDsJCS8qIERpc3BsYXkgZHJpdmVyIGlz IHNldHRpbmcgbW9kZSAqLwo+IC0JaW50IGNydGM7CQkJLyogY3J0YyBpbmRleCAqLwo+ICsJdW5z aWduZWQgaW50IHBpcGU7CQkvKiBjcnRjIGluZGV4ICovCj4gIAlib29sIGVuYWJsZWQ7CQkJLyog c28gd2UgZG9uJ3QgY2FsbCBlbmFibGUgbW9yZSB0aGFuCj4gIAkJCQkJICAgb25jZSBwZXIgZGlz YWJsZSAqLwo+ICB9Owo+IEBAIC05MjAsMzQgKzkyMCwzNCBAQCB2b2lkIGRybV9jbGZsdXNoX3Zp cnRfcmFuZ2Uodm9pZCAqYWRkciwgdW5zaWduZWQgbG9uZyBsZW5ndGgpOwo+ICBleHRlcm4gaW50 IGRybV9pcnFfaW5zdGFsbChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBpbnQgaXJxKTsKPiAgZXh0 ZXJuIGludCBkcm1faXJxX3VuaW5zdGFsbChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKPiAgCj4g LWV4dGVybiBpbnQgZHJtX3ZibGFua19pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGludCBu dW1fY3J0Y3MpOwo+ICtleHRlcm4gaW50IGRybV92YmxhbmtfaW5pdChzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2LCB1bnNpZ25lZCBpbnQgbnVtX2NydGNzKTsKPiAgZXh0ZXJuIGludCBkcm1fd2FpdF92 Ymxhbmsoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKPiAgCQkJICAgc3RydWN0 IGRybV9maWxlICpmaWxwKTsKPiAtZXh0ZXJuIHUzMiBkcm1fdmJsYW5rX2NvdW50KHN0cnVjdCBk cm1fZGV2aWNlICpkZXYsIGludCBjcnRjKTsKPiArZXh0ZXJuIHUzMiBkcm1fdmJsYW5rX2NvdW50 KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGludCBwaXBlKTsKPiAgZXh0ZXJuIHUzMiBkcm1fY3J0 Y192YmxhbmtfY291bnQoc3RydWN0IGRybV9jcnRjICpjcnRjKTsKPiAtZXh0ZXJuIHUzMiBkcm1f dmJsYW5rX2NvdW50X2FuZF90aW1lKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGludCBjcnRjLAo+ ICtleHRlcm4gdTMyIGRybV92YmxhbmtfY291bnRfYW5kX3RpbWUoc3RydWN0IGRybV9kZXZpY2Ug KmRldiwgdW5zaWduZWQgaW50IHBpcGUsCj4gIAkJCQkgICAgIHN0cnVjdCB0aW1ldmFsICp2Ymxh bmt0aW1lKTsKPiAtZXh0ZXJuIHZvaWQgZHJtX3NlbmRfdmJsYW5rX2V2ZW50KHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYsIGludCBjcnRjLAo+IC0JCQkJICAgICBzdHJ1Y3QgZHJtX3BlbmRpbmdfdmJs YW5rX2V2ZW50ICplKTsKPiArZXh0ZXJuIHZvaWQgZHJtX3NlbmRfdmJsYW5rX2V2ZW50KHN0cnVj dCBkcm1fZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCBwaXBlLAo+ICsJCQkJICBzdHJ1Y3QgZHJt X3BlbmRpbmdfdmJsYW5rX2V2ZW50ICplKTsKPiAgZXh0ZXJuIHZvaWQgZHJtX2NydGNfc2VuZF92 YmxhbmtfZXZlbnQoc3RydWN0IGRybV9jcnRjICpjcnRjLAo+ICAJCQkJICAgICAgIHN0cnVjdCBk cm1fcGVuZGluZ192YmxhbmtfZXZlbnQgKmUpOwo+IC1leHRlcm4gYm9vbCBkcm1faGFuZGxlX3Zi bGFuayhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBpbnQgY3J0Yyk7Cj4gK2V4dGVybiBib29sIGRy bV9oYW5kbGVfdmJsYW5rKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCBwaXBl KTsKPiAgZXh0ZXJuIGJvb2wgZHJtX2NydGNfaGFuZGxlX3ZibGFuayhzdHJ1Y3QgZHJtX2NydGMg KmNydGMpOwo+IC1leHRlcm4gaW50IGRybV92YmxhbmtfZ2V0KHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYsIGludCBjcnRjKTsKPiAtZXh0ZXJuIHZvaWQgZHJtX3ZibGFua19wdXQoc3RydWN0IGRybV9k ZXZpY2UgKmRldiwgaW50IGNydGMpOwo+ICtleHRlcm4gaW50IGRybV92YmxhbmtfZ2V0KHN0cnVj dCBkcm1fZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCBwaXBlKTsKPiArZXh0ZXJuIHZvaWQgZHJt X3ZibGFua19wdXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHBpcGUpOwo+ ICBleHRlcm4gaW50IGRybV9jcnRjX3ZibGFua19nZXQoc3RydWN0IGRybV9jcnRjICpjcnRjKTsK PiAgZXh0ZXJuIHZvaWQgZHJtX2NydGNfdmJsYW5rX3B1dChzdHJ1Y3QgZHJtX2NydGMgKmNydGMp Owo+IC1leHRlcm4gdm9pZCBkcm1fd2FpdF9vbmVfdmJsYW5rKHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYsIGludCBjcnRjKTsKPiArZXh0ZXJuIHZvaWQgZHJtX3dhaXRfb25lX3ZibGFuayhzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgcGlwZSk7Cj4gIGV4dGVybiB2b2lkIGRybV9j cnRjX3dhaXRfb25lX3ZibGFuayhzdHJ1Y3QgZHJtX2NydGMgKmNydGMpOwo+IC1leHRlcm4gdm9p ZCBkcm1fdmJsYW5rX29mZihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBpbnQgY3J0Yyk7Cj4gLWV4 dGVybiB2b2lkIGRybV92Ymxhbmtfb24oc3RydWN0IGRybV9kZXZpY2UgKmRldiwgaW50IGNydGMp Owo+ICtleHRlcm4gdm9pZCBkcm1fdmJsYW5rX29mZihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1 bnNpZ25lZCBpbnQgcGlwZSk7Cj4gK2V4dGVybiB2b2lkIGRybV92Ymxhbmtfb24oc3RydWN0IGRy bV9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHBpcGUpOwo+ICBleHRlcm4gdm9pZCBkcm1fY3J0 Y192Ymxhbmtfb2ZmKHN0cnVjdCBkcm1fY3J0YyAqY3J0Yyk7Cj4gIGV4dGVybiB2b2lkIGRybV9j cnRjX3ZibGFua19yZXNldChzdHJ1Y3QgZHJtX2NydGMgKmNydGMpOwo+ICBleHRlcm4gdm9pZCBk cm1fY3J0Y192Ymxhbmtfb24oc3RydWN0IGRybV9jcnRjICpjcnRjKTsKPiAgZXh0ZXJuIHZvaWQg ZHJtX3ZibGFua19jbGVhbnVwKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwo+ICAKPiAgZXh0ZXJu IGludCBkcm1fY2FsY192Ymx0aW1lc3RhbXBfZnJvbV9zY2Fub3V0cG9zKHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYsCj4gLQkJCQkJCSBpbnQgY3J0YywgaW50ICptYXhfZXJyb3IsCj4gKwkJCQkJCSB1 bnNpZ25lZCBpbnQgcGlwZSwgaW50ICptYXhfZXJyb3IsCj4gIAkJCQkJCSBzdHJ1Y3QgdGltZXZh bCAqdmJsYW5rX3RpbWUsCj4gIAkJCQkJCSB1bnNpZ25lZCBmbGFncywKPiAgCQkJCQkJIGNvbnN0 IHN0cnVjdCBkcm1fY3J0YyAqcmVmY3J0YywKPiBAQCAtOTY4LDggKzk2OCw4IEBAIHN0YXRpYyBp bmxpbmUgd2FpdF9xdWV1ZV9oZWFkX3QgKmRybV9jcnRjX3ZibGFua193YWl0cXVldWUoc3RydWN0 IGRybV9jcnRjICpjcnRjCj4gIH0KPiAgCj4gIC8qIE1vZGVzZXR0aW5nIHN1cHBvcnQgKi8KPiAt ZXh0ZXJuIHZvaWQgZHJtX3ZibGFua19wcmVfbW9kZXNldChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 LCBpbnQgY3J0Yyk7Cj4gLWV4dGVybiB2b2lkIGRybV92YmxhbmtfcG9zdF9tb2Rlc2V0KHN0cnVj dCBkcm1fZGV2aWNlICpkZXYsIGludCBjcnRjKTsKPiArZXh0ZXJuIHZvaWQgZHJtX3ZibGFua19w cmVfbW9kZXNldChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgcGlwZSk7Cj4g K2V4dGVybiB2b2lkIGRybV92YmxhbmtfcG9zdF9tb2Rlc2V0KHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYsIHVuc2lnbmVkIGludCBwaXBlKTsKPiAgCj4gIAkJCQkvKiBTdHViIHN1cHBvcnQgKGRybV9z dHViLmgpICovCj4gIGV4dGVybiBzdHJ1Y3QgZHJtX21hc3RlciAqZHJtX21hc3Rlcl9nZXQoc3Ry dWN0IGRybV9tYXN0ZXIgKm1hc3Rlcik7Cj4gLS0gCj4gMi40LjUKPiAKCi0tIApEYW5pZWwgVmV0 dGVyClNvZnR3YXJlIEVuZ2luZWVyLCBJbnRlbCBDb3Jwb3JhdGlvbgpodHRwOi8vYmxvZy5mZnds bC5jaApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmkt ZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDov L2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=