From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH 2/9] drm/i915: Convert most of atomic commit to take more intel state Date: Mon, 24 Jun 2019 18:50:08 +0300 Message-ID: <20190624155008.GR5942@intel.com> References: <20190620214613.14481-1-maarten.lankhorst@linux.intel.com> <20190620214613.14481-3-maarten.lankhorst@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTPS id 8196489CAD for ; Mon, 24 Jun 2019 15:50:12 +0000 (UTC) Content-Disposition: inline In-Reply-To: <20190620214613.14481-3-maarten.lankhorst@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Maarten Lankhorst Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gVGh1LCBKdW4gMjAsIDIwMTkgYXQgMTE6NDY6MDZQTSArMDIwMCwgTWFhcnRlbiBMYW5raG9y c3Qgd3JvdGU6Cj4gSW5zdGVhZCBvZiBwYXNzaW5nIGFsb25nIGRybV9jcnRjX3N0YXRlIGFuZCBk cm1fYXRvbWljX3N0YXRlLCBwYXNzCj4gYWxvbmcgbW9yZSBpbnRlbF9hdG9taWNfc3RhdGUgYW5k IGludGVsX2NydGNfc3RhdGUuIFRoaXMgd2lsbAo+IG1ha2UgdGhlIGNvZGUgbW9yZSByZWFkYWJs ZSBieSBub3QgY2FzdGluZyBiZXR3ZWVuIGRybSBzdGF0ZQo+IGFuZCBpbnRlbCBzdGF0ZSBhbGwg dGhlIHRpbWUuCj4gCj4gU2lnbmVkLW9mZi1ieTogTWFhcnRlbiBMYW5raG9yc3QgPG1hYXJ0ZW4u bGFua2hvcnN0QGxpbnV4LmludGVsLmNvbT4KPiAtLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUv ZGlzcGxheS9pbnRlbF9kaXNwbGF5LmMgfCA0MDMgKysrKysrKysrLS0tLS0tLS0tLQo+ICBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oICAgICAgICAgICAgICB8ICAgNiArLQo+ICBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jICAgICAgICAgICAgICB8ICAxMSArLQo+ICBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5oICAgICAgICAgICAgICB8ICAgNCArLQo+ICA0IGZp bGVzIGNoYW5nZWQsIDE5NiBpbnNlcnRpb25zKCspLCAyMjggZGVsZXRpb25zKC0pCj4gCj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheS5jIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5LmMKPiBpbmRleCAwMjU2 NWU5Nzk5NWEuLjg1NWY5MGE4MTM5NiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9kaXNwbGF5L2ludGVsX2Rpc3BsYXkuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rp c3BsYXkvaW50ZWxfZGlzcGxheS5jCj4gQEAgLTYwMzYsMTkgKzYwMzYsMTkgQEAgc3RhdGljIHZv aWQgaW50ZWxfY3J0Y19kaXNhYmxlX3BsYW5lcyhzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpz dGF0ZSwKPiAgCWludGVsX2Zyb250YnVmZmVyX2ZsaXAoZGV2X3ByaXYsIGZiX2JpdHMpOwo+ICB9 Cj4gIAo+IC1zdGF0aWMgdm9pZCBpbnRlbF9lbmNvZGVyc19wcmVfcGxsX2VuYWJsZShzdHJ1Y3Qg ZHJtX2NydGMgKmNydGMsCj4gK3N0YXRpYyB2b2lkIGludGVsX2VuY29kZXJzX3ByZV9wbGxfZW5h YmxlKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAo+ICAJCQkJCSAgc3RydWN0IGludGVsX2NydGNf c3RhdGUgKmNydGNfc3RhdGUsCj4gLQkJCQkJICBzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqb2xk X3N0YXRlKQo+ICsJCQkJCSAgc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqb2xkX3N0YXRlKQoK TWF5YmUgcy9vbGRfc3RhdGUvc3RhdGUvIHdoaWxlIGF0IGl0PwoKUmV2aWV3ZWQtYnk6IFZpbGxl IFN5cmrDpGzDpCA8dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb20+Cgo+ICB7Cj4gIAlzdHJ1 Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqY29ubl9zdGF0ZTsKPiAgCXN0cnVjdCBkcm1fY29ubmVj dG9yICpjb25uOwo+ICAJaW50IGk7Cj4gIAo+IC0JZm9yX2VhY2hfbmV3X2Nvbm5lY3Rvcl9pbl9z dGF0ZShvbGRfc3RhdGUsIGNvbm4sIGNvbm5fc3RhdGUsIGkpIHsKPiArCWZvcl9lYWNoX25ld19j b25uZWN0b3JfaW5fc3RhdGUoJm9sZF9zdGF0ZS0+YmFzZSwgY29ubiwgY29ubl9zdGF0ZSwgaSkg ewo+ICAJCXN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyID0KPiAgCQkJdG9faW50ZWxfZW5j b2Rlcihjb25uX3N0YXRlLT5iZXN0X2VuY29kZXIpOwo+ICAKPiAtCQlpZiAoY29ubl9zdGF0ZS0+ Y3J0YyAhPSBjcnRjKQo+ICsJCWlmIChjb25uX3N0YXRlLT5jcnRjICE9ICZjcnRjLT5iYXNlKQo+ ICAJCQljb250aW51ZTsKPiAgCj4gIAkJaWYgKGVuY29kZXItPnByZV9wbGxfZW5hYmxlKQo+IEBA IC02MDU2LDE5ICs2MDU2LDE5IEBAIHN0YXRpYyB2b2lkIGludGVsX2VuY29kZXJzX3ByZV9wbGxf ZW5hYmxlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiAgCX0KPiAgfQo+ICAKPiAtc3RhdGljIHZv aWQgaW50ZWxfZW5jb2RlcnNfcHJlX2VuYWJsZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4gK3N0 YXRpYyB2b2lkIGludGVsX2VuY29kZXJzX3ByZV9lbmFibGUoc3RydWN0IGludGVsX2NydGMgKmNy dGMsCj4gIAkJCQkgICAgICBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiAt CQkJCSAgICAgIHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpvbGRfc3RhdGUpCj4gKwkJCQkgICAg ICBzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpvbGRfc3RhdGUpCj4gIHsKPiAgCXN0cnVjdCBk cm1fY29ubmVjdG9yX3N0YXRlICpjb25uX3N0YXRlOwo+ICAJc3RydWN0IGRybV9jb25uZWN0b3Ig KmNvbm47Cj4gIAlpbnQgaTsKPiAgCj4gLQlmb3JfZWFjaF9uZXdfY29ubmVjdG9yX2luX3N0YXRl KG9sZF9zdGF0ZSwgY29ubiwgY29ubl9zdGF0ZSwgaSkgewo+ICsJZm9yX2VhY2hfbmV3X2Nvbm5l Y3Rvcl9pbl9zdGF0ZSgmb2xkX3N0YXRlLT5iYXNlLCBjb25uLCBjb25uX3N0YXRlLCBpKSB7Cj4g IAkJc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIgPQo+ICAJCQl0b19pbnRlbF9lbmNvZGVy KGNvbm5fc3RhdGUtPmJlc3RfZW5jb2Rlcik7Cj4gIAo+IC0JCWlmIChjb25uX3N0YXRlLT5jcnRj ICE9IGNydGMpCj4gKwkJaWYgKGNvbm5fc3RhdGUtPmNydGMgIT0gJmNydGMtPmJhc2UpCj4gIAkJ CWNvbnRpbnVlOwo+ICAKPiAgCQlpZiAoZW5jb2Rlci0+cHJlX2VuYWJsZSkKPiBAQCAtNjA3Niwx OSArNjA3NiwxOSBAQCBzdGF0aWMgdm9pZCBpbnRlbF9lbmNvZGVyc19wcmVfZW5hYmxlKHN0cnVj dCBkcm1fY3J0YyAqY3J0YywKPiAgCX0KPiAgfQo+ICAKPiAtc3RhdGljIHZvaWQgaW50ZWxfZW5j b2RlcnNfZW5hYmxlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiArc3RhdGljIHZvaWQgaW50ZWxf ZW5jb2RlcnNfZW5hYmxlKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAo+ICAJCQkJICBzdHJ1Y3Qg aW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiAtCQkJCSAgc3RydWN0IGRybV9hdG9taWNf c3RhdGUgKm9sZF9zdGF0ZSkKPiArCQkJCSAgc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqb2xk X3N0YXRlKQo+ICB7Cj4gIAlzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqY29ubl9zdGF0ZTsK PiAgCXN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uOwo+ICAJaW50IGk7Cj4gIAo+IC0JZm9yX2Vh Y2hfbmV3X2Nvbm5lY3Rvcl9pbl9zdGF0ZShvbGRfc3RhdGUsIGNvbm4sIGNvbm5fc3RhdGUsIGkp IHsKPiArCWZvcl9lYWNoX25ld19jb25uZWN0b3JfaW5fc3RhdGUoJm9sZF9zdGF0ZS0+YmFzZSwg Y29ubiwgY29ubl9zdGF0ZSwgaSkgewo+ICAJCXN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVy ID0KPiAgCQkJdG9faW50ZWxfZW5jb2Rlcihjb25uX3N0YXRlLT5iZXN0X2VuY29kZXIpOwo+ICAK PiAtCQlpZiAoY29ubl9zdGF0ZS0+Y3J0YyAhPSBjcnRjKQo+ICsJCWlmIChjb25uX3N0YXRlLT5j cnRjICE9ICZjcnRjLT5iYXNlKQo+ICAJCQljb250aW51ZTsKPiAgCj4gIAkJaWYgKGVuY29kZXIt PmVuYWJsZSkKPiBAQCAtNjA5NywxOSArNjA5NywxOSBAQCBzdGF0aWMgdm9pZCBpbnRlbF9lbmNv ZGVyc19lbmFibGUoc3RydWN0IGRybV9jcnRjICpjcnRjLAo+ICAJfQo+ICB9Cj4gIAo+IC1zdGF0 aWMgdm9pZCBpbnRlbF9lbmNvZGVyc19kaXNhYmxlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiAr c3RhdGljIHZvaWQgaW50ZWxfZW5jb2RlcnNfZGlzYWJsZShzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0 YywKPiAgCQkJCSAgIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpvbGRfY3J0Y19zdGF0ZSwKPiAt CQkJCSAgIHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpvbGRfc3RhdGUpCj4gKwkJCQkgICBzdHJ1 Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpvbGRfc3RhdGUpCj4gIHsKPiAgCXN0cnVjdCBkcm1fY29u bmVjdG9yX3N0YXRlICpvbGRfY29ubl9zdGF0ZTsKPiAgCXN0cnVjdCBkcm1fY29ubmVjdG9yICpj b25uOwo+ICAJaW50IGk7Cj4gIAo+IC0JZm9yX2VhY2hfb2xkX2Nvbm5lY3Rvcl9pbl9zdGF0ZShv bGRfc3RhdGUsIGNvbm4sIG9sZF9jb25uX3N0YXRlLCBpKSB7Cj4gKwlmb3JfZWFjaF9vbGRfY29u bmVjdG9yX2luX3N0YXRlKCZvbGRfc3RhdGUtPmJhc2UsIGNvbm4sIG9sZF9jb25uX3N0YXRlLCBp KSB7Cj4gIAkJc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIgPQo+ICAJCQl0b19pbnRlbF9l bmNvZGVyKG9sZF9jb25uX3N0YXRlLT5iZXN0X2VuY29kZXIpOwo+ICAKPiAtCQlpZiAob2xkX2Nv bm5fc3RhdGUtPmNydGMgIT0gY3J0YykKPiArCQlpZiAob2xkX2Nvbm5fc3RhdGUtPmNydGMgIT0g JmNydGMtPmJhc2UpCj4gIAkJCWNvbnRpbnVlOwo+ICAKPiAgCQlpbnRlbF9vcHJlZ2lvbl9ub3Rp ZnlfZW5jb2RlcihlbmNvZGVyLCBmYWxzZSk7Cj4gQEAgLTYxMTgsMTkgKzYxMTgsMTkgQEAgc3Rh dGljIHZvaWQgaW50ZWxfZW5jb2RlcnNfZGlzYWJsZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4g IAl9Cj4gIH0KPiAgCj4gLXN0YXRpYyB2b2lkIGludGVsX2VuY29kZXJzX3Bvc3RfZGlzYWJsZShz dHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4gK3N0YXRpYyB2b2lkIGludGVsX2VuY29kZXJzX3Bvc3Rf ZGlzYWJsZShzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKPiAgCQkJCQlzdHJ1Y3QgaW50ZWxfY3J0 Y19zdGF0ZSAqb2xkX2NydGNfc3RhdGUsCj4gLQkJCQkJc3RydWN0IGRybV9hdG9taWNfc3RhdGUg Km9sZF9zdGF0ZSkKPiArCQkJCQlzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpvbGRfc3RhdGUp Cj4gIHsKPiAgCXN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpvbGRfY29ubl9zdGF0ZTsKPiAg CXN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uOwo+ICAJaW50IGk7Cj4gIAo+IC0JZm9yX2VhY2hf b2xkX2Nvbm5lY3Rvcl9pbl9zdGF0ZShvbGRfc3RhdGUsIGNvbm4sIG9sZF9jb25uX3N0YXRlLCBp KSB7Cj4gKwlmb3JfZWFjaF9vbGRfY29ubmVjdG9yX2luX3N0YXRlKCZvbGRfc3RhdGUtPmJhc2Us IGNvbm4sIG9sZF9jb25uX3N0YXRlLCBpKSB7Cj4gIAkJc3RydWN0IGludGVsX2VuY29kZXIgKmVu Y29kZXIgPQo+ICAJCQl0b19pbnRlbF9lbmNvZGVyKG9sZF9jb25uX3N0YXRlLT5iZXN0X2VuY29k ZXIpOwo+ICAKPiAtCQlpZiAob2xkX2Nvbm5fc3RhdGUtPmNydGMgIT0gY3J0YykKPiArCQlpZiAo b2xkX2Nvbm5fc3RhdGUtPmNydGMgIT0gJmNydGMtPmJhc2UpCj4gIAkJCWNvbnRpbnVlOwo+ICAK PiAgCQlpZiAoZW5jb2Rlci0+cG9zdF9kaXNhYmxlKQo+IEBAIC02MTM4LDE5ICs2MTM4LDE5IEBA IHN0YXRpYyB2b2lkIGludGVsX2VuY29kZXJzX3Bvc3RfZGlzYWJsZShzdHJ1Y3QgZHJtX2NydGMg KmNydGMsCj4gIAl9Cj4gIH0KPiAgCj4gLXN0YXRpYyB2b2lkIGludGVsX2VuY29kZXJzX3Bvc3Rf cGxsX2Rpc2FibGUoc3RydWN0IGRybV9jcnRjICpjcnRjLAo+ICtzdGF0aWMgdm9pZCBpbnRlbF9l bmNvZGVyc19wb3N0X3BsbF9kaXNhYmxlKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAo+ICAJCQkJ CSAgICBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqb2xkX2NydGNfc3RhdGUsCj4gLQkJCQkJICAg IHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpvbGRfc3RhdGUpCj4gKwkJCQkJICAgIHN0cnVjdCBp bnRlbF9hdG9taWNfc3RhdGUgKm9sZF9zdGF0ZSkKPiAgewo+ICAJc3RydWN0IGRybV9jb25uZWN0 b3Jfc3RhdGUgKm9sZF9jb25uX3N0YXRlOwo+ICAJc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm47 Cj4gIAlpbnQgaTsKPiAgCj4gLQlmb3JfZWFjaF9vbGRfY29ubmVjdG9yX2luX3N0YXRlKG9sZF9z dGF0ZSwgY29ubiwgb2xkX2Nvbm5fc3RhdGUsIGkpIHsKPiArCWZvcl9lYWNoX29sZF9jb25uZWN0 b3JfaW5fc3RhdGUoJm9sZF9zdGF0ZS0+YmFzZSwgY29ubiwgb2xkX2Nvbm5fc3RhdGUsIGkpIHsK PiAgCQlzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciA9Cj4gIAkJCXRvX2ludGVsX2VuY29k ZXIob2xkX2Nvbm5fc3RhdGUtPmJlc3RfZW5jb2Rlcik7Cj4gIAo+IC0JCWlmIChvbGRfY29ubl9z dGF0ZS0+Y3J0YyAhPSBjcnRjKQo+ICsJCWlmIChvbGRfY29ubl9zdGF0ZS0+Y3J0YyAhPSAmY3J0 Yy0+YmFzZSkKPiAgCQkJY29udGludWU7Cj4gIAo+ICAJCWlmIChlbmNvZGVyLT5wb3N0X3BsbF9k aXNhYmxlKQo+IEBAIC02MTU4LDE5ICs2MTU4LDE5IEBAIHN0YXRpYyB2b2lkIGludGVsX2VuY29k ZXJzX3Bvc3RfcGxsX2Rpc2FibGUoc3RydWN0IGRybV9jcnRjICpjcnRjLAo+ICAJfQo+ICB9Cj4g IAo+IC1zdGF0aWMgdm9pZCBpbnRlbF9lbmNvZGVyc191cGRhdGVfcGlwZShzdHJ1Y3QgZHJtX2Ny dGMgKmNydGMsCj4gK3N0YXRpYyB2b2lkIGludGVsX2VuY29kZXJzX3VwZGF0ZV9waXBlKHN0cnVj dCBpbnRlbF9jcnRjICpjcnRjLAo+ICAJCQkJICAgICAgIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRl ICpjcnRjX3N0YXRlLAo+IC0JCQkJICAgICAgIHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpvbGRf c3RhdGUpCj4gKwkJCQkgICAgICAgc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqb2xkX3N0YXRl KQo+ICB7Cj4gIAlzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqY29ubl9zdGF0ZTsKPiAgCXN0 cnVjdCBkcm1fY29ubmVjdG9yICpjb25uOwo+ICAJaW50IGk7Cj4gIAo+IC0JZm9yX2VhY2hfbmV3 X2Nvbm5lY3Rvcl9pbl9zdGF0ZShvbGRfc3RhdGUsIGNvbm4sIGNvbm5fc3RhdGUsIGkpIHsKPiAr CWZvcl9lYWNoX25ld19jb25uZWN0b3JfaW5fc3RhdGUoJm9sZF9zdGF0ZS0+YmFzZSwgY29ubiwg Y29ubl9zdGF0ZSwgaSkgewo+ICAJCXN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyID0KPiAg CQkJdG9faW50ZWxfZW5jb2Rlcihjb25uX3N0YXRlLT5iZXN0X2VuY29kZXIpOwo+ICAKPiAtCQlp ZiAoY29ubl9zdGF0ZS0+Y3J0YyAhPSBjcnRjKQo+ICsJCWlmIChjb25uX3N0YXRlLT5jcnRjICE9 ICZjcnRjLT5iYXNlKQo+ICAJCQljb250aW51ZTsKPiAgCj4gIAkJaWYgKGVuY29kZXItPnVwZGF0 ZV9waXBlKQo+IEBAIC02MTg3LDE1ICs2MTg3LDEzIEBAIHN0YXRpYyB2b2lkIGludGVsX2Rpc2Fi bGVfcHJpbWFyeV9wbGFuZShjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0 Cj4gIH0KPiAgCj4gIHN0YXRpYyB2b2lkIGlyb25sYWtlX2NydGNfZW5hYmxlKHN0cnVjdCBpbnRl bF9jcnRjX3N0YXRlICpwaXBlX2NvbmZpZywKPiAtCQkJCSBzdHJ1Y3QgZHJtX2F0b21pY19zdGF0 ZSAqb2xkX3N0YXRlKQo+ICsJCQkJIHN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKm9sZF9zdGF0 ZSkKPiAgewo+ICAJc3RydWN0IGRybV9jcnRjICpjcnRjID0gcGlwZV9jb25maWctPmJhc2UuY3J0 YzsKPiAgCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLT5kZXY7Cj4gIAlzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRldik7Cj4gIAlzdHJ1Y3QgaW50ZWxf Y3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Yyk7Cj4gIAlpbnQgcGlwZSA9IGlu dGVsX2NydGMtPnBpcGU7Cj4gLQlzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpvbGRfaW50ZWxf c3RhdGUgPQo+IC0JCXRvX2ludGVsX2F0b21pY19zdGF0ZShvbGRfc3RhdGUpOwo+ICAKPiAgCWlm IChXQVJOX09OKGludGVsX2NydGMtPmFjdGl2ZSkpCj4gIAkJcmV0dXJuOwo+IEBAIC02MjMxLDcg KzYyMjksNyBAQCBzdGF0aWMgdm9pZCBpcm9ubGFrZV9jcnRjX2VuYWJsZShzdHJ1Y3QgaW50ZWxf Y3J0Y19zdGF0ZSAqcGlwZV9jb25maWcsCj4gIAo+ICAJaW50ZWxfY3J0Yy0+YWN0aXZlID0gdHJ1 ZTsKPiAgCj4gLQlpbnRlbF9lbmNvZGVyc19wcmVfZW5hYmxlKGNydGMsIHBpcGVfY29uZmlnLCBv bGRfc3RhdGUpOwo+ICsJaW50ZWxfZW5jb2RlcnNfcHJlX2VuYWJsZShpbnRlbF9jcnRjLCBwaXBl X2NvbmZpZywgb2xkX3N0YXRlKTsKPiAgCj4gIAlpZiAocGlwZV9jb25maWctPmhhc19wY2hfZW5j b2Rlcikgewo+ICAJCS8qIE5vdGU6IEZESSBQTEwgZW5hYmxpbmcgX211c3RfIGJlIGRvbmUgYmVm b3JlIHdlIGVuYWJsZSB0aGUKPiBAQCAtNjI1NSwxNiArNjI1MywxNiBAQCBzdGF0aWMgdm9pZCBp cm9ubGFrZV9jcnRjX2VuYWJsZShzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25maWcs Cj4gIAlpbnRlbF9kaXNhYmxlX3ByaW1hcnlfcGxhbmUocGlwZV9jb25maWcpOwo+ICAKPiAgCWlm IChkZXZfcHJpdi0+ZGlzcGxheS5pbml0aWFsX3dhdGVybWFya3MgIT0gTlVMTCkKPiAtCQlkZXZf cHJpdi0+ZGlzcGxheS5pbml0aWFsX3dhdGVybWFya3Mob2xkX2ludGVsX3N0YXRlLCBwaXBlX2Nv bmZpZyk7Cj4gKwkJZGV2X3ByaXYtPmRpc3BsYXkuaW5pdGlhbF93YXRlcm1hcmtzKG9sZF9zdGF0 ZSwgcGlwZV9jb25maWcpOwo+ICAJaW50ZWxfZW5hYmxlX3BpcGUocGlwZV9jb25maWcpOwo+ICAK PiAgCWlmIChwaXBlX2NvbmZpZy0+aGFzX3BjaF9lbmNvZGVyKQo+IC0JCWlyb25sYWtlX3BjaF9l bmFibGUob2xkX2ludGVsX3N0YXRlLCBwaXBlX2NvbmZpZyk7Cj4gKwkJaXJvbmxha2VfcGNoX2Vu YWJsZShvbGRfc3RhdGUsIHBpcGVfY29uZmlnKTsKPiAgCj4gIAlhc3NlcnRfdmJsYW5rX2Rpc2Fi bGVkKGNydGMpOwo+ICAJaW50ZWxfY3J0Y192Ymxhbmtfb24ocGlwZV9jb25maWcpOwo+ICAKPiAt CWludGVsX2VuY29kZXJzX2VuYWJsZShjcnRjLCBwaXBlX2NvbmZpZywgb2xkX3N0YXRlKTsKPiAr CWludGVsX2VuY29kZXJzX2VuYWJsZShpbnRlbF9jcnRjLCBwaXBlX2NvbmZpZywgb2xkX3N0YXRl KTsKPiAgCj4gIAlpZiAoSEFTX1BDSF9DUFQoZGV2X3ByaXYpKQo+ICAJCWNwdF92ZXJpZnlfbW9k ZXNldChkZXYsIGludGVsX2NydGMtPnBpcGUpOwo+IEBAIC02MzE3LDI2ICs2MzE1LDI0IEBAIHN0 YXRpYyB2b2lkIGljbF9waXBlX21idXNfZW5hYmxlKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjKQo+ ICB9Cj4gIAo+ICBzdGF0aWMgdm9pZCBoYXN3ZWxsX2NydGNfZW5hYmxlKHN0cnVjdCBpbnRlbF9j cnRjX3N0YXRlICpwaXBlX2NvbmZpZywKPiAtCQkJCXN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpv bGRfc3RhdGUpCj4gKwkJCQlzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpvbGRfc3RhdGUpCj4g IHsKPiAgCXN0cnVjdCBkcm1fY3J0YyAqY3J0YyA9IHBpcGVfY29uZmlnLT5iYXNlLmNydGM7Cj4g IAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNydGMtPmRldik7 Cj4gIAlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Yyk7 Cj4gIAlpbnQgcGlwZSA9IGludGVsX2NydGMtPnBpcGUsIGhzd193b3JrYXJvdW5kX3BpcGU7Cj4g IAllbnVtIHRyYW5zY29kZXIgY3B1X3RyYW5zY29kZXIgPSBwaXBlX2NvbmZpZy0+Y3B1X3RyYW5z Y29kZXI7Cj4gLQlzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpvbGRfaW50ZWxfc3RhdGUgPQo+ IC0JCXRvX2ludGVsX2F0b21pY19zdGF0ZShvbGRfc3RhdGUpOwo+ICAJYm9vbCBwc2xfY2xrZ2F0 ZV93YTsKPiAgCj4gIAlpZiAoV0FSTl9PTihpbnRlbF9jcnRjLT5hY3RpdmUpKQo+ICAJCXJldHVy bjsKPiAgCj4gLQlpbnRlbF9lbmNvZGVyc19wcmVfcGxsX2VuYWJsZShjcnRjLCBwaXBlX2NvbmZp Zywgb2xkX3N0YXRlKTsKPiArCWludGVsX2VuY29kZXJzX3ByZV9wbGxfZW5hYmxlKGludGVsX2Ny dGMsIHBpcGVfY29uZmlnLCBvbGRfc3RhdGUpOwo+ICAKPiAgCWlmIChwaXBlX2NvbmZpZy0+c2hh cmVkX2RwbGwpCj4gIAkJaW50ZWxfZW5hYmxlX3NoYXJlZF9kcGxsKHBpcGVfY29uZmlnKTsKPiAg Cj4gLQlpbnRlbF9lbmNvZGVyc19wcmVfZW5hYmxlKGNydGMsIHBpcGVfY29uZmlnLCBvbGRfc3Rh dGUpOwo+ICsJaW50ZWxfZW5jb2RlcnNfcHJlX2VuYWJsZShpbnRlbF9jcnRjLCBwaXBlX2NvbmZp Zywgb2xkX3N0YXRlKTsKPiAgCj4gIAlpZiAoaW50ZWxfY3J0Y19oYXNfZHBfZW5jb2RlcihwaXBl X2NvbmZpZykpCj4gIAkJaW50ZWxfZHBfc2V0X21fbihwaXBlX2NvbmZpZywgTTFfTjEpOwo+IEBA IC02Mzk0LDcgKzYzOTAsNyBAQCBzdGF0aWMgdm9pZCBoYXN3ZWxsX2NydGNfZW5hYmxlKHN0cnVj dCBpbnRlbF9jcnRjX3N0YXRlICpwaXBlX2NvbmZpZywKPiAgCQlpbnRlbF9kZGlfZW5hYmxlX3Ry YW5zY29kZXJfZnVuYyhwaXBlX2NvbmZpZyk7Cj4gIAo+ICAJaWYgKGRldl9wcml2LT5kaXNwbGF5 LmluaXRpYWxfd2F0ZXJtYXJrcyAhPSBOVUxMKQo+IC0JCWRldl9wcml2LT5kaXNwbGF5LmluaXRp YWxfd2F0ZXJtYXJrcyhvbGRfaW50ZWxfc3RhdGUsIHBpcGVfY29uZmlnKTsKPiArCQlkZXZfcHJp di0+ZGlzcGxheS5pbml0aWFsX3dhdGVybWFya3Mob2xkX3N0YXRlLCBwaXBlX2NvbmZpZyk7Cj4g IAo+ICAJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gMTEpCj4gIAkJaWNsX3BpcGVfbWJ1c19l bmFibGUoaW50ZWxfY3J0Yyk7Cj4gQEAgLTY0MDQsNyArNjQwMCw3IEBAIHN0YXRpYyB2b2lkIGhh c3dlbGxfY3J0Y19lbmFibGUoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29uZmlnLAo+ ICAJCWludGVsX2VuYWJsZV9waXBlKHBpcGVfY29uZmlnKTsKPiAgCj4gIAlpZiAocGlwZV9jb25m aWctPmhhc19wY2hfZW5jb2RlcikKPiAtCQlscHRfcGNoX2VuYWJsZShvbGRfaW50ZWxfc3RhdGUs IHBpcGVfY29uZmlnKTsKPiArCQlscHRfcGNoX2VuYWJsZShvbGRfc3RhdGUsIHBpcGVfY29uZmln KTsKPiAgCj4gIAlpZiAoaW50ZWxfY3J0Y19oYXNfdHlwZShwaXBlX2NvbmZpZywgSU5URUxfT1VU UFVUX0RQX01TVCkpCj4gIAkJaW50ZWxfZGRpX3NldF92Y19wYXlsb2FkX2FsbG9jKHBpcGVfY29u ZmlnLCB0cnVlKTsKPiBAQCAtNjQxMiw3ICs2NDA4LDcgQEAgc3RhdGljIHZvaWQgaGFzd2VsbF9j cnRjX2VuYWJsZShzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25maWcsCj4gIAlhc3Nl cnRfdmJsYW5rX2Rpc2FibGVkKGNydGMpOwo+ICAJaW50ZWxfY3J0Y192Ymxhbmtfb24ocGlwZV9j b25maWcpOwo+ICAKPiAtCWludGVsX2VuY29kZXJzX2VuYWJsZShjcnRjLCBwaXBlX2NvbmZpZywg b2xkX3N0YXRlKTsKPiArCWludGVsX2VuY29kZXJzX2VuYWJsZShpbnRlbF9jcnRjLCBwaXBlX2Nv bmZpZywgb2xkX3N0YXRlKTsKPiAgCj4gIAlpZiAocHNsX2Nsa2dhdGVfd2EpIHsKPiAgCQlpbnRl bF93YWl0X2Zvcl92YmxhbmsoZGV2X3ByaXYsIHBpcGUpOwo+IEBAIC02NDQ0LDcgKzY0NDAsNyBA QCBzdGF0aWMgdm9pZCBpcm9ubGFrZV9wZml0X2Rpc2FibGUoY29uc3Qgc3RydWN0IGludGVsX2Ny dGNfc3RhdGUgKm9sZF9jcnRjX3N0YXRlKQo+ICB9Cj4gIAo+ICBzdGF0aWMgdm9pZCBpcm9ubGFr ZV9jcnRjX2Rpc2FibGUoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKm9sZF9jcnRjX3N0YXRlLAo+ IC0JCQkJICBzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqb2xkX3N0YXRlKQo+ICsJCQkJICBzdHJ1 Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpvbGRfc3RhdGUpCj4gIHsKPiAgCXN0cnVjdCBkcm1fY3J0 YyAqY3J0YyA9IG9sZF9jcnRjX3N0YXRlLT5iYXNlLmNydGM7Cj4gIAlzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2ID0gY3J0Yy0+ZGV2Owo+IEBAIC02NDYwLDcgKzY0NTYsNyBAQCBzdGF0aWMgdm9pZCBp cm9ubGFrZV9jcnRjX2Rpc2FibGUoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKm9sZF9jcnRjX3N0 YXRlLAo+ICAJaW50ZWxfc2V0X2NwdV9maWZvX3VuZGVycnVuX3JlcG9ydGluZyhkZXZfcHJpdiwg cGlwZSwgZmFsc2UpOwo+ICAJaW50ZWxfc2V0X3BjaF9maWZvX3VuZGVycnVuX3JlcG9ydGluZyhk ZXZfcHJpdiwgcGlwZSwgZmFsc2UpOwo+ICAKPiAtCWludGVsX2VuY29kZXJzX2Rpc2FibGUoY3J0 Yywgb2xkX2NydGNfc3RhdGUsIG9sZF9zdGF0ZSk7Cj4gKwlpbnRlbF9lbmNvZGVyc19kaXNhYmxl KGludGVsX2NydGMsIG9sZF9jcnRjX3N0YXRlLCBvbGRfc3RhdGUpOwo+ICAKPiAgCWRybV9jcnRj X3ZibGFua19vZmYoY3J0Yyk7Cj4gIAlhc3NlcnRfdmJsYW5rX2Rpc2FibGVkKGNydGMpOwo+IEBA IC02NDcyLDcgKzY0NjgsNyBAQCBzdGF0aWMgdm9pZCBpcm9ubGFrZV9jcnRjX2Rpc2FibGUoc3Ry dWN0IGludGVsX2NydGNfc3RhdGUgKm9sZF9jcnRjX3N0YXRlLAo+ICAJaWYgKG9sZF9jcnRjX3N0 YXRlLT5oYXNfcGNoX2VuY29kZXIpCj4gIAkJaXJvbmxha2VfZmRpX2Rpc2FibGUoY3J0Yyk7Cj4g IAo+IC0JaW50ZWxfZW5jb2RlcnNfcG9zdF9kaXNhYmxlKGNydGMsIG9sZF9jcnRjX3N0YXRlLCBv bGRfc3RhdGUpOwo+ICsJaW50ZWxfZW5jb2RlcnNfcG9zdF9kaXNhYmxlKGludGVsX2NydGMsIG9s ZF9jcnRjX3N0YXRlLCBvbGRfc3RhdGUpOwo+ICAKPiAgCWlmIChvbGRfY3J0Y19zdGF0ZS0+aGFz X3BjaF9lbmNvZGVyKSB7Cj4gIAkJaXJvbmxha2VfZGlzYWJsZV9wY2hfdHJhbnNjb2RlcihkZXZf cHJpdiwgcGlwZSk7Cj4gQEAgLTY1MDMsMTQgKzY0OTksMTQgQEAgc3RhdGljIHZvaWQgaXJvbmxh a2VfY3J0Y19kaXNhYmxlKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpvbGRfY3J0Y19zdGF0ZSwK PiAgfQo+ICAKPiAgc3RhdGljIHZvaWQgaGFzd2VsbF9jcnRjX2Rpc2FibGUoc3RydWN0IGludGVs X2NydGNfc3RhdGUgKm9sZF9jcnRjX3N0YXRlLAo+IC0JCQkJIHN0cnVjdCBkcm1fYXRvbWljX3N0 YXRlICpvbGRfc3RhdGUpCj4gKwkJCQkgc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqb2xkX3N0 YXRlKQo+ICB7Cj4gIAlzdHJ1Y3QgZHJtX2NydGMgKmNydGMgPSBvbGRfY3J0Y19zdGF0ZS0+YmFz ZS5jcnRjOwo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShj cnRjLT5kZXYpOwo+ICAJc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMgPSB0b19pbnRlbF9j cnRjKGNydGMpOwo+ICAJZW51bSB0cmFuc2NvZGVyIGNwdV90cmFuc2NvZGVyID0gb2xkX2NydGNf c3RhdGUtPmNwdV90cmFuc2NvZGVyOwo+ICAKPiAtCWludGVsX2VuY29kZXJzX2Rpc2FibGUoY3J0 Yywgb2xkX2NydGNfc3RhdGUsIG9sZF9zdGF0ZSk7Cj4gKwlpbnRlbF9lbmNvZGVyc19kaXNhYmxl KGludGVsX2NydGMsIG9sZF9jcnRjX3N0YXRlLCBvbGRfc3RhdGUpOwo+ICAKPiAgCWRybV9jcnRj X3ZibGFua19vZmYoY3J0Yyk7Cj4gIAlhc3NlcnRfdmJsYW5rX2Rpc2FibGVkKGNydGMpOwo+IEBA IC02NTMyLDkgKzY1MjgsOSBAQCBzdGF0aWMgdm9pZCBoYXN3ZWxsX2NydGNfZGlzYWJsZShzdHJ1 Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqb2xkX2NydGNfc3RhdGUsCj4gIAllbHNlCj4gIAkJaXJvbmxh a2VfcGZpdF9kaXNhYmxlKG9sZF9jcnRjX3N0YXRlKTsKPiAgCj4gLQlpbnRlbF9lbmNvZGVyc19w b3N0X2Rpc2FibGUoY3J0Yywgb2xkX2NydGNfc3RhdGUsIG9sZF9zdGF0ZSk7Cj4gKwlpbnRlbF9l bmNvZGVyc19wb3N0X2Rpc2FibGUoaW50ZWxfY3J0Yywgb2xkX2NydGNfc3RhdGUsIG9sZF9zdGF0 ZSk7Cj4gIAo+IC0JaW50ZWxfZW5jb2RlcnNfcG9zdF9wbGxfZGlzYWJsZShjcnRjLCBvbGRfY3J0 Y19zdGF0ZSwgb2xkX3N0YXRlKTsKPiArCWludGVsX2VuY29kZXJzX3Bvc3RfcGxsX2Rpc2FibGUo aW50ZWxfY3J0Yywgb2xkX2NydGNfc3RhdGUsIG9sZF9zdGF0ZSk7Cj4gIH0KPiAgCj4gIHN0YXRp YyB2b2lkIGk5eHhfcGZpdF9lbmFibGUoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNy dGNfc3RhdGUpCj4gQEAgLTY2MzMsMTQgKzY2MjksMTMgQEAgaW50ZWxfYXV4X3Bvd2VyX2RvbWFp bihzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICpkaWdfcG9ydCkKPiAgCX0KPiAgfQo+ICAKPiAt c3RhdGljIHU2NCBnZXRfY3J0Y19wb3dlcl9kb21haW5zKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywK PiArc3RhdGljIHU2NCBnZXRfY3J0Y19wb3dlcl9kb21haW5zKHN0cnVjdCBpbnRlbF9jcnRjICpj cnRjLAo+ICAJCQkJICBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKPiAgewo+ IC0Jc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNydGMtPmRldjsKPiArCXN0cnVjdCBkcm1fZGV2 aWNlICpkZXYgPSBjcnRjLT5iYXNlLmRldjsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKPiAgCXN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlcjsK PiAtCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjKTsK PiAtCWVudW0gcGlwZSBwaXBlID0gaW50ZWxfY3J0Yy0+cGlwZTsKPiArCWVudW0gcGlwZSBwaXBl ID0gY3J0Yy0+cGlwZTsKPiAgCXU2NCBtYXNrOwo+ICAJZW51bSB0cmFuc2NvZGVyIHRyYW5zY29k ZXIgPSBjcnRjX3N0YXRlLT5jcHVfdHJhbnNjb2RlcjsKPiAgCj4gQEAgLTY2NjksMTYgKzY2NjQs MTUgQEAgc3RhdGljIHU2NCBnZXRfY3J0Y19wb3dlcl9kb21haW5zKHN0cnVjdCBkcm1fY3J0YyAq Y3J0YywKPiAgfQo+ICAKPiAgc3RhdGljIHU2NAo+IC1tb2Rlc2V0X2dldF9jcnRjX3Bvd2VyX2Rv bWFpbnMoc3RydWN0IGRybV9jcnRjICpjcnRjLAo+ICttb2Rlc2V0X2dldF9jcnRjX3Bvd2VyX2Rv bWFpbnMoc3RydWN0IGludGVsX2NydGMgKmNydGMsCj4gIAkJCSAgICAgICBzdHJ1Y3QgaW50ZWxf Y3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKPiAgewo+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2ID0gdG9faTkxNShjcnRjLT5kZXYpOwo+IC0Jc3RydWN0IGludGVsX2NydGMgKmlu dGVsX2NydGMgPSB0b19pbnRlbF9jcnRjKGNydGMpOwo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2ID0gdG9faTkxNShjcnRjLT5iYXNlLmRldik7Cj4gIAllbnVtIGludGVsX2Rp c3BsYXlfcG93ZXJfZG9tYWluIGRvbWFpbjsKPiAgCXU2NCBkb21haW5zLCBuZXdfZG9tYWlucywg b2xkX2RvbWFpbnM7Cj4gIAo+IC0Jb2xkX2RvbWFpbnMgPSBpbnRlbF9jcnRjLT5lbmFibGVkX3Bv d2VyX2RvbWFpbnM7Cj4gLQlpbnRlbF9jcnRjLT5lbmFibGVkX3Bvd2VyX2RvbWFpbnMgPSBuZXdf ZG9tYWlucyA9Cj4gKwlvbGRfZG9tYWlucyA9IGNydGMtPmVuYWJsZWRfcG93ZXJfZG9tYWluczsK PiArCWNydGMtPmVuYWJsZWRfcG93ZXJfZG9tYWlucyA9IG5ld19kb21haW5zID0KPiAgCQlnZXRf Y3J0Y19wb3dlcl9kb21haW5zKGNydGMsIGNydGNfc3RhdGUpOwo+ICAKPiAgCWRvbWFpbnMgPSBu ZXdfZG9tYWlucyAmIH5vbGRfZG9tYWluczsKPiBAQCAtNjY5OSwxMCArNjY5Myw4IEBAIHN0YXRp YyB2b2lkIG1vZGVzZXRfcHV0X3Bvd2VyX2RvbWFpbnMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2LAo+ICB9Cj4gIAo+ICBzdGF0aWMgdm9pZCB2YWxsZXl2aWV3X2NydGNfZW5hYmxl KHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpwaXBlX2NvbmZpZywKPiAtCQkJCSAgIHN0cnVjdCBk cm1fYXRvbWljX3N0YXRlICpvbGRfc3RhdGUpCj4gKwkJCQkgICBzdHJ1Y3QgaW50ZWxfYXRvbWlj X3N0YXRlICpvbGRfc3RhdGUpCj4gIHsKPiAtCXN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKm9s ZF9pbnRlbF9zdGF0ZSA9Cj4gLQkJdG9faW50ZWxfYXRvbWljX3N0YXRlKG9sZF9zdGF0ZSk7Cj4g IAlzdHJ1Y3QgZHJtX2NydGMgKmNydGMgPSBwaXBlX2NvbmZpZy0+YmFzZS5jcnRjOwo+ICAJc3Ry dWN0IGRybV9kZXZpY2UgKmRldiA9IGNydGMtPmRldjsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKPiBAQCAtNjcyOSw3ICs2NzIxLDcgQEAgc3Rh dGljIHZvaWQgdmFsbGV5dmlld19jcnRjX2VuYWJsZShzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAq cGlwZV9jb25maWcsCj4gIAo+ICAJaW50ZWxfc2V0X2NwdV9maWZvX3VuZGVycnVuX3JlcG9ydGlu ZyhkZXZfcHJpdiwgcGlwZSwgdHJ1ZSk7Cj4gIAo+IC0JaW50ZWxfZW5jb2RlcnNfcHJlX3BsbF9l bmFibGUoY3J0YywgcGlwZV9jb25maWcsIG9sZF9zdGF0ZSk7Cj4gKwlpbnRlbF9lbmNvZGVyc19w cmVfcGxsX2VuYWJsZShpbnRlbF9jcnRjLCBwaXBlX2NvbmZpZywgb2xkX3N0YXRlKTsKPiAgCj4g IAlpZiAoSVNfQ0hFUlJZVklFVyhkZXZfcHJpdikpIHsKPiAgCQljaHZfcHJlcGFyZV9wbGwoaW50 ZWxfY3J0YywgcGlwZV9jb25maWcpOwo+IEBAIC02NzM5LDcgKzY3MzEsNyBAQCBzdGF0aWMgdm9p ZCB2YWxsZXl2aWV3X2NydGNfZW5hYmxlKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpwaXBlX2Nv bmZpZywKPiAgCQl2bHZfZW5hYmxlX3BsbChpbnRlbF9jcnRjLCBwaXBlX2NvbmZpZyk7Cj4gIAl9 Cj4gIAo+IC0JaW50ZWxfZW5jb2RlcnNfcHJlX2VuYWJsZShjcnRjLCBwaXBlX2NvbmZpZywgb2xk X3N0YXRlKTsKPiArCWludGVsX2VuY29kZXJzX3ByZV9lbmFibGUoaW50ZWxfY3J0YywgcGlwZV9j b25maWcsIG9sZF9zdGF0ZSk7Cj4gIAo+ICAJaTl4eF9wZml0X2VuYWJsZShwaXBlX2NvbmZpZyk7 Cj4gIAo+IEBAIC02NzQ4LDE0ICs2NzQwLDEzIEBAIHN0YXRpYyB2b2lkIHZhbGxleXZpZXdfY3J0 Y19lbmFibGUoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29uZmlnLAo+ICAJLyogdXBk YXRlIERTUENOVFIgdG8gY29uZmlndXJlIGdhbW1hIGZvciBwaXBlIGJvdHRvbSBjb2xvciAqLwo+ ICAJaW50ZWxfZGlzYWJsZV9wcmltYXJ5X3BsYW5lKHBpcGVfY29uZmlnKTsKPiAgCj4gLQlkZXZf cHJpdi0+ZGlzcGxheS5pbml0aWFsX3dhdGVybWFya3Mob2xkX2ludGVsX3N0YXRlLAo+IC0JCQkJ CSAgICAgcGlwZV9jb25maWcpOwo+ICsJZGV2X3ByaXYtPmRpc3BsYXkuaW5pdGlhbF93YXRlcm1h cmtzKG9sZF9zdGF0ZSwgcGlwZV9jb25maWcpOwo+ICAJaW50ZWxfZW5hYmxlX3BpcGUocGlwZV9j b25maWcpOwo+ICAKPiAgCWFzc2VydF92YmxhbmtfZGlzYWJsZWQoY3J0Yyk7Cj4gIAlpbnRlbF9j cnRjX3ZibGFua19vbihwaXBlX2NvbmZpZyk7Cj4gIAo+IC0JaW50ZWxfZW5jb2RlcnNfZW5hYmxl KGNydGMsIHBpcGVfY29uZmlnLCBvbGRfc3RhdGUpOwo+ICsJaW50ZWxfZW5jb2RlcnNfZW5hYmxl KGludGVsX2NydGMsIHBpcGVfY29uZmlnLCBvbGRfc3RhdGUpOwo+ICB9Cj4gIAo+ICBzdGF0aWMg dm9pZCBpOXh4X3NldF9wbGxfZGl2aWRlcnMoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUg KmNydGNfc3RhdGUpCj4gQEAgLTY3NjgsMTAgKzY3NTksOCBAQCBzdGF0aWMgdm9pZCBpOXh4X3Nl dF9wbGxfZGl2aWRlcnMoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUp Cj4gIH0KPiAgCj4gIHN0YXRpYyB2b2lkIGk5eHhfY3J0Y19lbmFibGUoc3RydWN0IGludGVsX2Ny dGNfc3RhdGUgKnBpcGVfY29uZmlnLAo+IC0JCQkgICAgIHN0cnVjdCBkcm1fYXRvbWljX3N0YXRl ICpvbGRfc3RhdGUpCj4gKwkJCSAgICAgc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqb2xkX3N0 YXRlKQo+ICB7Cj4gLQlzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpvbGRfaW50ZWxfc3RhdGUg PQo+IC0JCXRvX2ludGVsX2F0b21pY19zdGF0ZShvbGRfc3RhdGUpOwo+ICAJc3RydWN0IGRybV9j cnRjICpjcnRjID0gcGlwZV9jb25maWctPmJhc2UuY3J0YzsKPiAgCXN0cnVjdCBkcm1fZGV2aWNl ICpkZXYgPSBjcnRjLT5kZXY7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYg PSB0b19pOTE1KGRldik7Cj4gQEAgLTY3OTYsNyArNjc4NSw3IEBAIHN0YXRpYyB2b2lkIGk5eHhf Y3J0Y19lbmFibGUoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29uZmlnLAo+ICAJaWYg KCFJU19HRU4oZGV2X3ByaXYsIDIpKQo+ICAJCWludGVsX3NldF9jcHVfZmlmb191bmRlcnJ1bl9y ZXBvcnRpbmcoZGV2X3ByaXYsIHBpcGUsIHRydWUpOwo+ICAKPiAtCWludGVsX2VuY29kZXJzX3By ZV9lbmFibGUoY3J0YywgcGlwZV9jb25maWcsIG9sZF9zdGF0ZSk7Cj4gKwlpbnRlbF9lbmNvZGVy c19wcmVfZW5hYmxlKGludGVsX2NydGMsIHBpcGVfY29uZmlnLCBvbGRfc3RhdGUpOwo+ICAKPiAg CWk5eHhfZW5hYmxlX3BsbChpbnRlbF9jcnRjLCBwaXBlX2NvbmZpZyk7Cj4gIAo+IEBAIC02ODA4 LDcgKzY3OTcsNyBAQCBzdGF0aWMgdm9pZCBpOXh4X2NydGNfZW5hYmxlKHN0cnVjdCBpbnRlbF9j cnRjX3N0YXRlICpwaXBlX2NvbmZpZywKPiAgCWludGVsX2Rpc2FibGVfcHJpbWFyeV9wbGFuZShw aXBlX2NvbmZpZyk7Cj4gIAo+ICAJaWYgKGRldl9wcml2LT5kaXNwbGF5LmluaXRpYWxfd2F0ZXJt YXJrcyAhPSBOVUxMKQo+IC0JCWRldl9wcml2LT5kaXNwbGF5LmluaXRpYWxfd2F0ZXJtYXJrcyhv bGRfaW50ZWxfc3RhdGUsCj4gKwkJZGV2X3ByaXYtPmRpc3BsYXkuaW5pdGlhbF93YXRlcm1hcmtz KG9sZF9zdGF0ZSwKPiAgCQkJCQkJICAgICBwaXBlX2NvbmZpZyk7Cj4gIAllbHNlCj4gIAkJaW50 ZWxfdXBkYXRlX3dhdGVybWFya3MoaW50ZWxfY3J0Yyk7Cj4gQEAgLTY4MTcsNyArNjgwNiw3IEBA IHN0YXRpYyB2b2lkIGk5eHhfY3J0Y19lbmFibGUoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBp cGVfY29uZmlnLAo+ICAJYXNzZXJ0X3ZibGFua19kaXNhYmxlZChjcnRjKTsKPiAgCWludGVsX2Ny dGNfdmJsYW5rX29uKHBpcGVfY29uZmlnKTsKPiAgCj4gLQlpbnRlbF9lbmNvZGVyc19lbmFibGUo Y3J0YywgcGlwZV9jb25maWcsIG9sZF9zdGF0ZSk7Cj4gKwlpbnRlbF9lbmNvZGVyc19lbmFibGUo aW50ZWxfY3J0YywgcGlwZV9jb25maWcsIG9sZF9zdGF0ZSk7Cj4gIH0KPiAgCj4gIHN0YXRpYyB2 b2lkIGk5eHhfcGZpdF9kaXNhYmxlKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpvbGRf Y3J0Y19zdGF0ZSkKPiBAQCAtNjgzNiw3ICs2ODI1LDcgQEAgc3RhdGljIHZvaWQgaTl4eF9wZml0 X2Rpc2FibGUoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKm9sZF9jcnRjX3N0YXRlKQo+ ICB9Cj4gIAo+ICBzdGF0aWMgdm9pZCBpOXh4X2NydGNfZGlzYWJsZShzdHJ1Y3QgaW50ZWxfY3J0 Y19zdGF0ZSAqb2xkX2NydGNfc3RhdGUsCj4gLQkJCSAgICAgIHN0cnVjdCBkcm1fYXRvbWljX3N0 YXRlICpvbGRfc3RhdGUpCj4gKwkJCSAgICAgIHN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKm9s ZF9zdGF0ZSkKPiAgewo+ICAJc3RydWN0IGRybV9jcnRjICpjcnRjID0gb2xkX2NydGNfc3RhdGUt PmJhc2UuY3J0YzsKPiAgCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLT5kZXY7Cj4gQEAg LTY4NTEsNyArNjg0MCw3IEBAIHN0YXRpYyB2b2lkIGk5eHhfY3J0Y19kaXNhYmxlKHN0cnVjdCBp bnRlbF9jcnRjX3N0YXRlICpvbGRfY3J0Y19zdGF0ZSwKPiAgCWlmIChJU19HRU4oZGV2X3ByaXYs IDIpKQo+ICAJCWludGVsX3dhaXRfZm9yX3ZibGFuayhkZXZfcHJpdiwgcGlwZSk7Cj4gIAo+IC0J aW50ZWxfZW5jb2RlcnNfZGlzYWJsZShjcnRjLCBvbGRfY3J0Y19zdGF0ZSwgb2xkX3N0YXRlKTsK PiArCWludGVsX2VuY29kZXJzX2Rpc2FibGUoaW50ZWxfY3J0Yywgb2xkX2NydGNfc3RhdGUsIG9s ZF9zdGF0ZSk7Cj4gIAo+ICAJZHJtX2NydGNfdmJsYW5rX29mZihjcnRjKTsKPiAgCWFzc2VydF92 YmxhbmtfZGlzYWJsZWQoY3J0Yyk7Cj4gQEAgLTY4NjAsNyArNjg0OSw3IEBAIHN0YXRpYyB2b2lk IGk5eHhfY3J0Y19kaXNhYmxlKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpvbGRfY3J0Y19zdGF0 ZSwKPiAgCj4gIAlpOXh4X3BmaXRfZGlzYWJsZShvbGRfY3J0Y19zdGF0ZSk7Cj4gIAo+IC0JaW50 ZWxfZW5jb2RlcnNfcG9zdF9kaXNhYmxlKGNydGMsIG9sZF9jcnRjX3N0YXRlLCBvbGRfc3RhdGUp Owo+ICsJaW50ZWxfZW5jb2RlcnNfcG9zdF9kaXNhYmxlKGludGVsX2NydGMsIG9sZF9jcnRjX3N0 YXRlLCBvbGRfc3RhdGUpOwo+ICAKPiAgCWlmICghaW50ZWxfY3J0Y19oYXNfdHlwZShvbGRfY3J0 Y19zdGF0ZSwgSU5URUxfT1VUUFVUX0RTSSkpIHsKPiAgCQlpZiAoSVNfQ0hFUlJZVklFVyhkZXZf cHJpdikpCj4gQEAgLTY4NzEsNyArNjg2MCw3IEBAIHN0YXRpYyB2b2lkIGk5eHhfY3J0Y19kaXNh YmxlKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpvbGRfY3J0Y19zdGF0ZSwKPiAgCQkJaTl4eF9k aXNhYmxlX3BsbChvbGRfY3J0Y19zdGF0ZSk7Cj4gIAl9Cj4gIAo+IC0JaW50ZWxfZW5jb2RlcnNf cG9zdF9wbGxfZGlzYWJsZShjcnRjLCBvbGRfY3J0Y19zdGF0ZSwgb2xkX3N0YXRlKTsKPiArCWlu dGVsX2VuY29kZXJzX3Bvc3RfcGxsX2Rpc2FibGUoaW50ZWxfY3J0Yywgb2xkX2NydGNfc3RhdGUs IG9sZF9zdGF0ZSk7Cj4gIAo+ICAJaWYgKCFJU19HRU4oZGV2X3ByaXYsIDIpKQo+ICAJCWludGVs X3NldF9jcHVfZmlmb191bmRlcnJ1bl9yZXBvcnRpbmcoZGV2X3ByaXYsIHBpcGUsIGZhbHNlKTsK PiBAQCAtNjkyNSw3ICs2OTE0LDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfY3J0Y19kaXNhYmxlX25v YXRvbWljKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiAgCj4gIAlXQVJOX09OKElTX0VSUihjcnRj X3N0YXRlKSB8fCByZXQpOwo+ICAKPiAtCWRldl9wcml2LT5kaXNwbGF5LmNydGNfZGlzYWJsZShj cnRjX3N0YXRlLCBzdGF0ZSk7Cj4gKwlkZXZfcHJpdi0+ZGlzcGxheS5jcnRjX2Rpc2FibGUoY3J0 Y19zdGF0ZSwgdG9faW50ZWxfYXRvbWljX3N0YXRlKHN0YXRlKSk7Cj4gIAo+ICAJZHJtX2F0b21p Y19zdGF0ZV9wdXQoc3RhdGUpOwo+ICAKPiBAQCAtMTMwODMsMTkgKzEzMDcyLDE4IEBAIHZlcmlm eV9zaGFyZWRfZHBsbF9zdGF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3QgZHJtX2Ny dGMgKmNydGMsCj4gIH0KPiAgCj4gIHN0YXRpYyB2b2lkCj4gLWludGVsX21vZGVzZXRfdmVyaWZ5 X2NydGMoc3RydWN0IGRybV9jcnRjICpjcnRjLAo+IC0JCQkgIHN0cnVjdCBkcm1fYXRvbWljX3N0 YXRlICpzdGF0ZSwKPiAtCQkJICBzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKm9sZF9zdGF0ZSwKPiAt CQkJICBzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKm5ld19zdGF0ZSkKPiAraW50ZWxfbW9kZXNldF92 ZXJpZnlfY3J0YyhzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKPiArCQkJICBzdHJ1Y3QgaW50ZWxf YXRvbWljX3N0YXRlICpzdGF0ZSwKPiArCQkJICBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqb2xk X3N0YXRlLAo+ICsJCQkgIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpuZXdfc3RhdGUpCj4gIHsK PiAtCWlmICghbmVlZHNfbW9kZXNldCh0b19pbnRlbF9jcnRjX3N0YXRlKG5ld19zdGF0ZSkpICYm Cj4gLQkgICAgIXRvX2ludGVsX2NydGNfc3RhdGUobmV3X3N0YXRlKS0+dXBkYXRlX3BpcGUpCj4g KwlpZiAoIW5lZWRzX21vZGVzZXQobmV3X3N0YXRlKSAmJiAhbmV3X3N0YXRlLT51cGRhdGVfcGlw ZSkKPiAgCQlyZXR1cm47Cj4gIAo+IC0JdmVyaWZ5X3dtX3N0YXRlKGNydGMsIG5ld19zdGF0ZSk7 Cj4gLQl2ZXJpZnlfY29ubmVjdG9yX3N0YXRlKGNydGMtPmRldiwgc3RhdGUsIGNydGMpOwo+IC0J dmVyaWZ5X2NydGNfc3RhdGUoY3J0Yywgb2xkX3N0YXRlLCBuZXdfc3RhdGUpOwo+IC0JdmVyaWZ5 X3NoYXJlZF9kcGxsX3N0YXRlKGNydGMtPmRldiwgY3J0Yywgb2xkX3N0YXRlLCBuZXdfc3RhdGUp Owo+ICsJdmVyaWZ5X3dtX3N0YXRlKCZjcnRjLT5iYXNlLCAmbmV3X3N0YXRlLT5iYXNlKTsKPiAr CXZlcmlmeV9jb25uZWN0b3Jfc3RhdGUoY3J0Yy0+YmFzZS5kZXYsICZzdGF0ZS0+YmFzZSwgJmNy dGMtPmJhc2UpOwo+ICsJdmVyaWZ5X2NydGNfc3RhdGUoJmNydGMtPmJhc2UsICZvbGRfc3RhdGUt PmJhc2UsICZuZXdfc3RhdGUtPmJhc2UpOwo+ICsJdmVyaWZ5X3NoYXJlZF9kcGxsX3N0YXRlKGNy dGMtPmJhc2UuZGV2LCAmY3J0Yy0+YmFzZSwgJm9sZF9zdGF0ZS0+YmFzZSwgJm5ld19zdGF0ZS0+ YmFzZSk7Cj4gIH0KPiAgCj4gIHN0YXRpYyB2b2lkCj4gQEAgLTEzMTEwLDEwICsxMzA5OCwxMCBA QCB2ZXJpZnlfZGlzYWJsZWRfZHBsbF9zdGF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICAK PiAgc3RhdGljIHZvaWQKPiAgaW50ZWxfbW9kZXNldF92ZXJpZnlfZGlzYWJsZWQoc3RydWN0IGRy bV9kZXZpY2UgKmRldiwKPiAtCQkJICAgICAgc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRl KQo+ICsJCQkgICAgICBzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSkKPiAgewo+IC0J dmVyaWZ5X2VuY29kZXJfc3RhdGUoZGV2LCBzdGF0ZSk7Cj4gLQl2ZXJpZnlfY29ubmVjdG9yX3N0 YXRlKGRldiwgc3RhdGUsIE5VTEwpOwo+ICsJdmVyaWZ5X2VuY29kZXJfc3RhdGUoZGV2LCAmc3Rh dGUtPmJhc2UpOwo+ICsJdmVyaWZ5X2Nvbm5lY3Rvcl9zdGF0ZShkZXYsICZzdGF0ZS0+YmFzZSwg TlVMTCk7Cj4gIAl2ZXJpZnlfZGlzYWJsZWRfZHBsbF9zdGF0ZShkZXYpOwo+ICB9Cj4gIAo+IEBA IC0xMzU3MCw1NyArMTM1NTgsNTQgQEAgdTMyIGludGVsX2NydGNfZ2V0X3ZibGFua19jb3VudGVy KHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjKQo+ICAJcmV0dXJuIGRldi0+ZHJpdmVyLT5nZXRfdmJs YW5rX2NvdW50ZXIoZGV2LCBjcnRjLT5waXBlKTsKPiAgfQo+ICAKPiAtc3RhdGljIHZvaWQgaW50 ZWxfdXBkYXRlX2NydGMoc3RydWN0IGRybV9jcnRjICpjcnRjLAo+IC0JCQkgICAgICBzdHJ1Y3Qg ZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUsCj4gLQkJCSAgICAgIHN0cnVjdCBkcm1fY3J0Y19zdGF0 ZSAqb2xkX2NydGNfc3RhdGUsCj4gLQkJCSAgICAgIHN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqbmV3 X2NydGNfc3RhdGUpCj4gK3N0YXRpYyB2b2lkIGludGVsX3VwZGF0ZV9jcnRjKHN0cnVjdCBpbnRl bF9jcnRjICpjcnRjLAo+ICsJCQkgICAgICBzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0 ZSwKPiArCQkJICAgICAgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKm9sZF9jcnRjX3N0YXRlLAo+ ICsJCQkgICAgICBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqbmV3X2NydGNfc3RhdGUpCj4gIHsK PiAtCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLT5kZXY7Cj4gKwlzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2ID0gc3RhdGUtPmJhc2UuZGV2Owo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2ID0gdG9faTkxNShkZXYpOwo+IC0Jc3RydWN0IGludGVsX2NydGMgKmludGVsX2Ny dGMgPSB0b19pbnRlbF9jcnRjKGNydGMpOwo+IC0Jc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBp cGVfY29uZmlnID0gdG9faW50ZWxfY3J0Y19zdGF0ZShuZXdfY3J0Y19zdGF0ZSk7Cj4gLQlib29s IG1vZGVzZXQgPSBuZWVkc19tb2Rlc2V0KHBpcGVfY29uZmlnKTsKPiArCWJvb2wgbW9kZXNldCA9 IG5lZWRzX21vZGVzZXQobmV3X2NydGNfc3RhdGUpOwo+ICAJc3RydWN0IGludGVsX3BsYW5lX3N0 YXRlICpuZXdfcGxhbmVfc3RhdGUgPQo+IC0JCWludGVsX2F0b21pY19nZXRfbmV3X3BsYW5lX3N0 YXRlKHRvX2ludGVsX2F0b21pY19zdGF0ZShzdGF0ZSksCj4gLQkJCQkJCSB0b19pbnRlbF9wbGFu ZShjcnRjLT5wcmltYXJ5KSk7Cj4gKwkJaW50ZWxfYXRvbWljX2dldF9uZXdfcGxhbmVfc3RhdGUo c3RhdGUsCj4gKwkJCQkJCSB0b19pbnRlbF9wbGFuZShjcnRjLT5iYXNlLnByaW1hcnkpKTsKPiAg Cj4gIAlpZiAobW9kZXNldCkgewo+IC0JCXVwZGF0ZV9zY2FubGluZV9vZmZzZXQocGlwZV9jb25m aWcpOwo+IC0JCWRldl9wcml2LT5kaXNwbGF5LmNydGNfZW5hYmxlKHBpcGVfY29uZmlnLCBzdGF0 ZSk7Cj4gKwkJdXBkYXRlX3NjYW5saW5lX29mZnNldChuZXdfY3J0Y19zdGF0ZSk7Cj4gKwkJZGV2 X3ByaXYtPmRpc3BsYXkuY3J0Y19lbmFibGUobmV3X2NydGNfc3RhdGUsIHN0YXRlKTsKPiAgCj4g IAkJLyogdmJsYW5rcyB3b3JrIGFnYWluLCByZS1lbmFibGUgcGlwZSBDUkMuICovCj4gLQkJaW50 ZWxfY3J0Y19lbmFibGVfcGlwZV9jcmMoaW50ZWxfY3J0Yyk7Cj4gKwkJaW50ZWxfY3J0Y19lbmFi bGVfcGlwZV9jcmMoY3J0Yyk7Cj4gIAl9IGVsc2Ugewo+IC0JCWludGVsX3ByZV9wbGFuZV91cGRh dGUodG9faW50ZWxfY3J0Y19zdGF0ZShvbGRfY3J0Y19zdGF0ZSksCj4gLQkJCQkgICAgICAgcGlw ZV9jb25maWcpOwo+ICsJCWludGVsX3ByZV9wbGFuZV91cGRhdGUob2xkX2NydGNfc3RhdGUsIG5l d19jcnRjX3N0YXRlKTsKPiAgCj4gLQkJaWYgKHBpcGVfY29uZmlnLT51cGRhdGVfcGlwZSkKPiAt CQkJaW50ZWxfZW5jb2RlcnNfdXBkYXRlX3BpcGUoY3J0YywgcGlwZV9jb25maWcsIHN0YXRlKTsK PiArCQlpZiAobmV3X2NydGNfc3RhdGUtPnVwZGF0ZV9waXBlKQo+ICsJCQlpbnRlbF9lbmNvZGVy c191cGRhdGVfcGlwZShjcnRjLCBuZXdfY3J0Y19zdGF0ZSwgc3RhdGUpOwo+ICAJfQo+ICAKPiAt CWlmIChwaXBlX2NvbmZpZy0+dXBkYXRlX3BpcGUgJiYgIXBpcGVfY29uZmlnLT5lbmFibGVfZmJj KQo+IC0JCWludGVsX2ZiY19kaXNhYmxlKGludGVsX2NydGMpOwo+ICsJaWYgKG5ld19jcnRjX3N0 YXRlLT51cGRhdGVfcGlwZSAmJiAhbmV3X2NydGNfc3RhdGUtPmVuYWJsZV9mYmMpCj4gKwkJaW50 ZWxfZmJjX2Rpc2FibGUoY3J0Yyk7Cj4gIAllbHNlIGlmIChuZXdfcGxhbmVfc3RhdGUpCj4gLQkJ aW50ZWxfZmJjX2VuYWJsZShpbnRlbF9jcnRjLCBwaXBlX2NvbmZpZywgbmV3X3BsYW5lX3N0YXRl KTsKPiArCQlpbnRlbF9mYmNfZW5hYmxlKGNydGMsIG5ld19jcnRjX3N0YXRlLCBuZXdfcGxhbmVf c3RhdGUpOwo+ICAKPiAtCWludGVsX2JlZ2luX2NydGNfY29tbWl0KHRvX2ludGVsX2F0b21pY19z dGF0ZShzdGF0ZSksIGludGVsX2NydGMpOwo+ICsJaW50ZWxfYmVnaW5fY3J0Y19jb21taXQoc3Rh dGUsIGNydGMpOwo+ICAKPiAgCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDkpCj4gLQkJc2ts X3VwZGF0ZV9wbGFuZXNfb25fY3J0Yyh0b19pbnRlbF9hdG9taWNfc3RhdGUoc3RhdGUpLCBpbnRl bF9jcnRjKTsKPiArCQlza2xfdXBkYXRlX3BsYW5lc19vbl9jcnRjKHN0YXRlLCBjcnRjKTsKPiAg CWVsc2UKPiAtCQlpOXh4X3VwZGF0ZV9wbGFuZXNfb25fY3J0Yyh0b19pbnRlbF9hdG9taWNfc3Rh dGUoc3RhdGUpLCBpbnRlbF9jcnRjKTsKPiArCQlpOXh4X3VwZGF0ZV9wbGFuZXNfb25fY3J0Yyhz dGF0ZSwgY3J0Yyk7Cj4gIAo+IC0JaW50ZWxfZmluaXNoX2NydGNfY29tbWl0KHRvX2ludGVsX2F0 b21pY19zdGF0ZShzdGF0ZSksIGludGVsX2NydGMpOwo+ICsJaW50ZWxfZmluaXNoX2NydGNfY29t bWl0KHN0YXRlLCBjcnRjKTsKPiAgfQo+ICAKPiAtc3RhdGljIHZvaWQgaW50ZWxfdXBkYXRlX2Ny dGNzKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSkKPiArc3RhdGljIHZvaWQgaW50ZWxf dXBkYXRlX2NydGNzKHN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKnN0YXRlKQo+ICB7Cj4gLQlz dHJ1Y3QgZHJtX2NydGMgKmNydGM7Cj4gLQlzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKm9sZF9jcnRj X3N0YXRlLCAqbmV3X2NydGNfc3RhdGU7Cj4gKwlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YzsKPiAr CXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpvbGRfY3J0Y19zdGF0ZSwgKm5ld19jcnRjX3N0YXRl Owo+ICAJaW50IGk7Cj4gIAo+IC0JZm9yX2VhY2hfb2xkbmV3X2NydGNfaW5fc3RhdGUoc3RhdGUs IGNydGMsIG9sZF9jcnRjX3N0YXRlLCBuZXdfY3J0Y19zdGF0ZSwgaSkgewo+IC0JCWlmICghbmV3 X2NydGNfc3RhdGUtPmFjdGl2ZSkKPiArCWZvcl9lYWNoX29sZG5ld19pbnRlbF9jcnRjX2luX3N0 YXRlKHN0YXRlLCBjcnRjLCBvbGRfY3J0Y19zdGF0ZSwgbmV3X2NydGNfc3RhdGUsIGkpIHsKPiAr CQlpZiAoIW5ld19jcnRjX3N0YXRlLT5iYXNlLmFjdGl2ZSkKPiAgCQkJY29udGludWU7Cj4gIAo+ ICAJCWludGVsX3VwZGF0ZV9jcnRjKGNydGMsIHN0YXRlLCBvbGRfY3J0Y19zdGF0ZSwKPiBAQCAt MTM2MjgsMjYgKzEzNjEzLDIzIEBAIHN0YXRpYyB2b2lkIGludGVsX3VwZGF0ZV9jcnRjcyhzdHJ1 Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpCj4gIAl9Cj4gIH0KPiAgCj4gLXN0YXRpYyB2b2lk IHNrbF91cGRhdGVfY3J0Y3Moc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKQo+ICtzdGF0 aWMgdm9pZCBza2xfdXBkYXRlX2NydGNzKHN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKnN0YXRl KQo+ICB7Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KHN0 YXRlLT5kZXYpOwo+IC0Jc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqaW50ZWxfc3RhdGUgPSB0 b19pbnRlbF9hdG9taWNfc3RhdGUoc3RhdGUpOwo+IC0Jc3RydWN0IGRybV9jcnRjICpjcnRjOwo+ IC0Jc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGM7Cj4gLQlzdHJ1Y3QgZHJtX2NydGNfc3Rh dGUgKm9sZF9jcnRjX3N0YXRlLCAqbmV3X2NydGNfc3RhdGU7Cj4gLQlzdHJ1Y3QgaW50ZWxfY3J0 Y19zdGF0ZSAqY3N0YXRlOwo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0g dG9faTkxNShzdGF0ZS0+YmFzZS5kZXYpOwo+ICsJc3RydWN0IGludGVsX2NydGMgKmNydGM7Cj4g KwlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqb2xkX2NydGNfc3RhdGUsICpuZXdfY3J0Y19zdGF0 ZTsKPiAgCXVuc2lnbmVkIGludCB1cGRhdGVkID0gMDsKPiAgCWJvb2wgcHJvZ3Jlc3M7Cj4gIAll bnVtIHBpcGUgcGlwZTsKPiAgCWludCBpOwo+ICAJdTggaHdfZW5hYmxlZF9zbGljZXMgPSBkZXZf cHJpdi0+d20uc2tsX2h3LmRkYi5lbmFibGVkX3NsaWNlczsKPiAtCXU4IHJlcXVpcmVkX3NsaWNl cyA9IGludGVsX3N0YXRlLT53bV9yZXN1bHRzLmRkYi5lbmFibGVkX3NsaWNlczsKPiArCXU4IHJl cXVpcmVkX3NsaWNlcyA9IHN0YXRlLT53bV9yZXN1bHRzLmRkYi5lbmFibGVkX3NsaWNlczsKPiAg CXN0cnVjdCBza2xfZGRiX2VudHJ5IGVudHJpZXNbSTkxNV9NQVhfUElQRVNdID0ge307Cj4gIAo+ IC0JZm9yX2VhY2hfb2xkbmV3X2NydGNfaW5fc3RhdGUoc3RhdGUsIGNydGMsIG9sZF9jcnRjX3N0 YXRlLCBuZXdfY3J0Y19zdGF0ZSwgaSkKPiArCWZvcl9lYWNoX29sZG5ld19pbnRlbF9jcnRjX2lu X3N0YXRlKHN0YXRlLCBjcnRjLCBvbGRfY3J0Y19zdGF0ZSwgbmV3X2NydGNfc3RhdGUsIGkpCj4g IAkJLyogaWdub3JlIGFsbG9jYXRpb25zIGZvciBjcnRjJ3MgdGhhdCBoYXZlIGJlZW4gdHVybmVk IG9mZi4gKi8KPiAtCQlpZiAobmV3X2NydGNfc3RhdGUtPmFjdGl2ZSkKPiAtCQkJZW50cmllc1tp XSA9IHRvX2ludGVsX2NydGNfc3RhdGUob2xkX2NydGNfc3RhdGUpLT53bS5za2wuZGRiOwo+ICsJ CWlmIChuZXdfY3J0Y19zdGF0ZS0+YmFzZS5hY3RpdmUpCj4gKwkJCWVudHJpZXNbaV0gPSBvbGRf Y3J0Y19zdGF0ZS0+d20uc2tsLmRkYjsKPiAgCj4gIAkvKiBJZiAybmQgREJ1ZiBzbGljZSByZXF1 aXJlZCwgZW5hYmxlIGl0IGhlcmUgKi8KPiAgCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDEx ICYmIHJlcXVpcmVkX3NsaWNlcyA+IGh3X2VuYWJsZWRfc2xpY2VzKQo+IEBAIC0xMzY2MiwyNCAr MTM2NDQsMjIgQEAgc3RhdGljIHZvaWQgc2tsX3VwZGF0ZV9jcnRjcyhzdHJ1Y3QgZHJtX2F0b21p Y19zdGF0ZSAqc3RhdGUpCj4gIAlkbyB7Cj4gIAkJcHJvZ3Jlc3MgPSBmYWxzZTsKPiAgCj4gLQkJ Zm9yX2VhY2hfb2xkbmV3X2NydGNfaW5fc3RhdGUoc3RhdGUsIGNydGMsIG9sZF9jcnRjX3N0YXRl LCBuZXdfY3J0Y19zdGF0ZSwgaSkgewo+ICsJCWZvcl9lYWNoX29sZG5ld19pbnRlbF9jcnRjX2lu X3N0YXRlKHN0YXRlLCBjcnRjLCBvbGRfY3J0Y19zdGF0ZSwgbmV3X2NydGNfc3RhdGUsIGkpIHsK PiAgCQkJYm9vbCB2Ymxfd2FpdCA9IGZhbHNlOwo+IC0JCQl1bnNpZ25lZCBpbnQgY21hc2sgPSBk cm1fY3J0Y19tYXNrKGNydGMpOwo+ICsJCQl1bnNpZ25lZCBpbnQgY21hc2sgPSBkcm1fY3J0Y19t YXNrKCZjcnRjLT5iYXNlKTsKPiAgCj4gLQkJCWludGVsX2NydGMgPSB0b19pbnRlbF9jcnRjKGNy dGMpOwo+IC0JCQljc3RhdGUgPSB0b19pbnRlbF9jcnRjX3N0YXRlKG5ld19jcnRjX3N0YXRlKTsK PiAtCQkJcGlwZSA9IGludGVsX2NydGMtPnBpcGU7Cj4gKwkJCXBpcGUgPSBjcnRjLT5waXBlOwo+ ICAKPiAtCQkJaWYgKHVwZGF0ZWQgJiBjbWFzayB8fCAhY3N0YXRlLT5iYXNlLmFjdGl2ZSkKPiAr CQkJaWYgKHVwZGF0ZWQgJiBjbWFzayB8fCAhbmV3X2NydGNfc3RhdGUtPmJhc2UuYWN0aXZlKQo+ ICAJCQkJY29udGludWU7Cj4gIAo+IC0JCQlpZiAoc2tsX2RkYl9hbGxvY2F0aW9uX292ZXJsYXBz KCZjc3RhdGUtPndtLnNrbC5kZGIsCj4gKwkJCWlmIChza2xfZGRiX2FsbG9jYXRpb25fb3Zlcmxh cHMoJm5ld19jcnRjX3N0YXRlLT53bS5za2wuZGRiLAo+ICAJCQkJCQkJZW50cmllcywKPiAgCQkJ CQkJCUlOVEVMX0lORk8oZGV2X3ByaXYpLT5udW1fcGlwZXMsIGkpKQo+ICAJCQkJY29udGludWU7 Cj4gIAo+ICAJCQl1cGRhdGVkIHw9IGNtYXNrOwo+IC0JCQllbnRyaWVzW2ldID0gY3N0YXRlLT53 bS5za2wuZGRiOwo+ICsJCQllbnRyaWVzW2ldID0gbmV3X2NydGNfc3RhdGUtPndtLnNrbC5kZGI7 Cj4gIAo+ICAJCQkvKgo+ICAJCQkgKiBJZiB0aGlzIGlzIGFuIGFscmVhZHkgYWN0aXZlIHBpcGUs IGl0J3MgRERCIGNoYW5nZWQsCj4gQEAgLTEzNjg3LDEwICsxMzY2NywxMCBAQCBzdGF0aWMgdm9p ZCBza2xfdXBkYXRlX2NydGNzKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSkKPiAgCQkJ ICogdGhlbiB3ZSBuZWVkIHRvIHdhaXQgZm9yIGEgdmJsYW5rIHRvIHBhc3MgZm9yIHRoZQo+ICAJ CQkgKiBuZXcgZGRiIGFsbG9jYXRpb24gdG8gdGFrZSBlZmZlY3QuCj4gIAkJCSAqLwo+IC0JCQlp ZiAoIXNrbF9kZGJfZW50cnlfZXF1YWwoJmNzdGF0ZS0+d20uc2tsLmRkYiwKPiAtCQkJCQkJICZ0 b19pbnRlbF9jcnRjX3N0YXRlKG9sZF9jcnRjX3N0YXRlKS0+d20uc2tsLmRkYikgJiYKPiAtCQkJ ICAgICFuZXdfY3J0Y19zdGF0ZS0+YWN0aXZlX2NoYW5nZWQgJiYKPiAtCQkJICAgIGludGVsX3N0 YXRlLT53bV9yZXN1bHRzLmRpcnR5X3BpcGVzICE9IHVwZGF0ZWQpCj4gKwkJCWlmICghc2tsX2Rk Yl9lbnRyeV9lcXVhbCgmbmV3X2NydGNfc3RhdGUtPndtLnNrbC5kZGIsCj4gKwkJCQkJCSAmb2xk X2NydGNfc3RhdGUtPndtLnNrbC5kZGIpICYmCj4gKwkJCSAgICAhbmV3X2NydGNfc3RhdGUtPmJh c2UuYWN0aXZlX2NoYW5nZWQgJiYKPiArCQkJICAgIHN0YXRlLT53bV9yZXN1bHRzLmRpcnR5X3Bp cGVzICE9IHVwZGF0ZWQpCj4gIAkJCQl2Ymxfd2FpdCA9IHRydWU7Cj4gIAo+ICAJCQlpbnRlbF91 cGRhdGVfY3J0YyhjcnRjLCBzdGF0ZSwgb2xkX2NydGNfc3RhdGUsCj4gQEAgLTEzNzYzLDU3ICsx Mzc0Myw1MCBAQCBzdGF0aWMgdm9pZCBpbnRlbF9hdG9taWNfY2xlYW51cF93b3JrKHN0cnVjdCB3 b3JrX3N0cnVjdCAqd29yaykKPiAgCWludGVsX2F0b21pY19oZWxwZXJfZnJlZV9zdGF0ZShpOTE1 KTsKPiAgfQo+ICAKPiAtc3RhdGljIHZvaWQgaW50ZWxfYXRvbWljX2NvbW1pdF90YWlsKHN0cnVj dCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSkKPiArc3RhdGljIHZvaWQgaW50ZWxfYXRvbWljX2Nv bW1pdF90YWlsKHN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKnN0YXRlKQo+ICB7Cj4gLQlzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2ID0gc3RhdGUtPmRldjsKPiAtCXN0cnVjdCBpbnRlbF9hdG9taWNf c3RhdGUgKmludGVsX3N0YXRlID0gdG9faW50ZWxfYXRvbWljX3N0YXRlKHN0YXRlKTsKPiArCXN0 cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBzdGF0ZS0+YmFzZS5kZXY7Cj4gIAlzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRldik7Cj4gLQlzdHJ1Y3QgZHJtX2NydGNf c3RhdGUgKm9sZF9jcnRjX3N0YXRlLCAqbmV3X2NydGNfc3RhdGU7Cj4gLQlzdHJ1Y3QgaW50ZWxf Y3J0Y19zdGF0ZSAqbmV3X2ludGVsX2NydGNfc3RhdGUsICpvbGRfaW50ZWxfY3J0Y19zdGF0ZTsK PiAtCXN0cnVjdCBkcm1fY3J0YyAqY3J0YzsKPiAtCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9j cnRjOwo+ICsJc3RydWN0IGludGVsX2NydGNfc3RhdGUgKm5ld19jcnRjX3N0YXRlLCAqb2xkX2Ny dGNfc3RhdGU7Cj4gKwlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YzsKPiAgCXU2NCBwdXRfZG9tYWlu c1tJOTE1X01BWF9QSVBFU10gPSB7fTsKPiAgCWludGVsX3dha2VyZWZfdCB3YWtlcmVmID0gMDsK PiAgCWludCBpOwo+ICAKPiAtCWludGVsX2F0b21pY19jb21taXRfZmVuY2Vfd2FpdChpbnRlbF9z dGF0ZSk7Cj4gKwlpbnRlbF9hdG9taWNfY29tbWl0X2ZlbmNlX3dhaXQoc3RhdGUpOwo+ICAKPiAt CWRybV9hdG9taWNfaGVscGVyX3dhaXRfZm9yX2RlcGVuZGVuY2llcyhzdGF0ZSk7Cj4gKwlkcm1f YXRvbWljX2hlbHBlcl93YWl0X2Zvcl9kZXBlbmRlbmNpZXMoJnN0YXRlLT5iYXNlKTsKPiAgCj4g LQlpZiAoaW50ZWxfc3RhdGUtPm1vZGVzZXQpCj4gKwlpZiAoc3RhdGUtPm1vZGVzZXQpCj4gIAkJ d2FrZXJlZiA9IGludGVsX2Rpc3BsYXlfcG93ZXJfZ2V0KGRldl9wcml2LCBQT1dFUl9ET01BSU5f TU9ERVNFVCk7Cj4gIAo+IC0JZm9yX2VhY2hfb2xkbmV3X2NydGNfaW5fc3RhdGUoc3RhdGUsIGNy dGMsIG9sZF9jcnRjX3N0YXRlLCBuZXdfY3J0Y19zdGF0ZSwgaSkgewo+IC0JCW9sZF9pbnRlbF9j cnRjX3N0YXRlID0gdG9faW50ZWxfY3J0Y19zdGF0ZShvbGRfY3J0Y19zdGF0ZSk7Cj4gLQkJbmV3 X2ludGVsX2NydGNfc3RhdGUgPSB0b19pbnRlbF9jcnRjX3N0YXRlKG5ld19jcnRjX3N0YXRlKTsK PiAtCQlpbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjKTsKPiAtCj4gLQkJaWYgKG5lZWRz X21vZGVzZXQobmV3X2ludGVsX2NydGNfc3RhdGUpIHx8Cj4gLQkJICAgIG5ld19pbnRlbF9jcnRj X3N0YXRlLT51cGRhdGVfcGlwZSkgewo+ICsJZm9yX2VhY2hfb2xkbmV3X2ludGVsX2NydGNfaW5f c3RhdGUoc3RhdGUsIGNydGMsIG9sZF9jcnRjX3N0YXRlLCBuZXdfY3J0Y19zdGF0ZSwgaSkgewo+ ICsJCWlmIChuZWVkc19tb2Rlc2V0KG5ld19jcnRjX3N0YXRlKSB8fAo+ICsJCSAgICBuZXdfY3J0 Y19zdGF0ZS0+dXBkYXRlX3BpcGUpIHsKPiAgCj4gLQkJCXB1dF9kb21haW5zW2ludGVsX2NydGMt PnBpcGVdID0KPiArCQkJcHV0X2RvbWFpbnNbY3J0Yy0+cGlwZV0gPQo+ICAJCQkJbW9kZXNldF9n ZXRfY3J0Y19wb3dlcl9kb21haW5zKGNydGMsCj4gLQkJCQkJbmV3X2ludGVsX2NydGNfc3RhdGUp Owo+ICsJCQkJCW5ld19jcnRjX3N0YXRlKTsKPiAgCQl9Cj4gIAo+IC0JCWlmICghbmVlZHNfbW9k ZXNldChuZXdfaW50ZWxfY3J0Y19zdGF0ZSkpCj4gKwkJaWYgKCFuZWVkc19tb2Rlc2V0KG5ld19j cnRjX3N0YXRlKSkKPiAgCQkJY29udGludWU7Cj4gIAo+IC0JCWludGVsX3ByZV9wbGFuZV91cGRh dGUob2xkX2ludGVsX2NydGNfc3RhdGUsIG5ld19pbnRlbF9jcnRjX3N0YXRlKTsKPiArCQlpbnRl bF9wcmVfcGxhbmVfdXBkYXRlKG9sZF9jcnRjX3N0YXRlLCBuZXdfY3J0Y19zdGF0ZSk7Cj4gIAo+ IC0JCWlmIChvbGRfY3J0Y19zdGF0ZS0+YWN0aXZlKSB7Cj4gLQkJCWludGVsX2NydGNfZGlzYWJs ZV9wbGFuZXMoaW50ZWxfc3RhdGUsIGludGVsX2NydGMpOwo+ICsJCWlmIChvbGRfY3J0Y19zdGF0 ZS0+YmFzZS5hY3RpdmUpIHsKPiArCQkJaW50ZWxfY3J0Y19kaXNhYmxlX3BsYW5lcyhzdGF0ZSwg Y3J0Yyk7Cj4gIAo+ICAJCQkvKgo+ICAJCQkgKiBXZSBuZWVkIHRvIGRpc2FibGUgcGlwZSBDUkMg YmVmb3JlIGRpc2FibGluZyB0aGUgcGlwZSwKPiAgCQkJICogb3Igd2UgcmFjZSBhZ2FpbnN0IHZi bGFuayBvZmYuCj4gIAkJCSAqLwo+IC0JCQlpbnRlbF9jcnRjX2Rpc2FibGVfcGlwZV9jcmMoaW50 ZWxfY3J0Yyk7Cj4gKwkJCWludGVsX2NydGNfZGlzYWJsZV9waXBlX2NyYyhjcnRjKTsKPiAgCj4g LQkJCWRldl9wcml2LT5kaXNwbGF5LmNydGNfZGlzYWJsZShvbGRfaW50ZWxfY3J0Y19zdGF0ZSwg c3RhdGUpOwo+IC0JCQlpbnRlbF9jcnRjLT5hY3RpdmUgPSBmYWxzZTsKPiAtCQkJaW50ZWxfZmJj X2Rpc2FibGUoaW50ZWxfY3J0Yyk7Cj4gLQkJCWludGVsX2Rpc2FibGVfc2hhcmVkX2RwbGwob2xk X2ludGVsX2NydGNfc3RhdGUpOwo+ICsJCQlkZXZfcHJpdi0+ZGlzcGxheS5jcnRjX2Rpc2FibGUo b2xkX2NydGNfc3RhdGUsIHN0YXRlKTsKPiArCQkJY3J0Yy0+YWN0aXZlID0gZmFsc2U7Cj4gKwkJ CWludGVsX2ZiY19kaXNhYmxlKGNydGMpOwo+ICsJCQlpbnRlbF9kaXNhYmxlX3NoYXJlZF9kcGxs KG9sZF9jcnRjX3N0YXRlKTsKPiAgCj4gIAkJCS8qCj4gIAkJCSAqIFVuZGVycnVucyBkb24ndCBh bHdheXMgcmFpc2UKPiBAQCAtMTM4MjMsMjUgKzEzNzk2LDI1IEBAIHN0YXRpYyB2b2lkIGludGVs X2F0b21pY19jb21taXRfdGFpbChzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpCj4gIAkJ CWludGVsX2NoZWNrX3BjaF9maWZvX3VuZGVycnVucyhkZXZfcHJpdik7Cj4gIAo+ICAJCQkvKiBG SVhNRSB1bmlmeSB0aGlzIGZvciBhbGwgcGxhdGZvcm1zICovCj4gLQkJCWlmICghbmV3X2NydGNf c3RhdGUtPmFjdGl2ZSAmJgo+ICsJCQlpZiAoIW5ld19jcnRjX3N0YXRlLT5iYXNlLmFjdGl2ZSAm Jgo+ICAJCQkgICAgIUhBU19HTUNIKGRldl9wcml2KSAmJgo+ICAJCQkgICAgZGV2X3ByaXYtPmRp c3BsYXkuaW5pdGlhbF93YXRlcm1hcmtzKQo+IC0JCQkJZGV2X3ByaXYtPmRpc3BsYXkuaW5pdGlh bF93YXRlcm1hcmtzKGludGVsX3N0YXRlLAo+IC0JCQkJCQkJCSAgICAgbmV3X2ludGVsX2NydGNf c3RhdGUpOwo+ICsJCQkJZGV2X3ByaXYtPmRpc3BsYXkuaW5pdGlhbF93YXRlcm1hcmtzKHN0YXRl LAo+ICsJCQkJCQkJCSAgICAgbmV3X2NydGNfc3RhdGUpOwo+ICAJCX0KPiAgCX0KPiAgCj4gLQkv KiBGSVhNRTogRXZlbnR1YWxseSBnZXQgcmlkIG9mIG91ciBpbnRlbF9jcnRjLT5jb25maWcgcG9p bnRlciAqLwo+IC0JZm9yX2VhY2hfbmV3X2NydGNfaW5fc3RhdGUoc3RhdGUsIGNydGMsIG5ld19j cnRjX3N0YXRlLCBpKQo+IC0JCXRvX2ludGVsX2NydGMoY3J0YyktPmNvbmZpZyA9IHRvX2ludGVs X2NydGNfc3RhdGUobmV3X2NydGNfc3RhdGUpOwo+ICsJLyogRklYTUU6IEV2ZW50dWFsbHkgZ2V0 IHJpZCBvZiBvdXIgY3J0Yy0+Y29uZmlnIHBvaW50ZXIgKi8KPiArCWZvcl9lYWNoX25ld19pbnRl bF9jcnRjX2luX3N0YXRlKHN0YXRlLCBjcnRjLCBuZXdfY3J0Y19zdGF0ZSwgaSkKPiArCQljcnRj LT5jb25maWcgPSBuZXdfY3J0Y19zdGF0ZTsKPiAgCj4gLQlpZiAoaW50ZWxfc3RhdGUtPm1vZGVz ZXQpIHsKPiAtCQlkcm1fYXRvbWljX2hlbHBlcl91cGRhdGVfbGVnYWN5X21vZGVzZXRfc3RhdGUo c3RhdGUtPmRldiwgc3RhdGUpOwo+ICsJaWYgKHN0YXRlLT5tb2Rlc2V0KSB7Cj4gKwkJZHJtX2F0 b21pY19oZWxwZXJfdXBkYXRlX2xlZ2FjeV9tb2Rlc2V0X3N0YXRlKGRldiwgJnN0YXRlLT5iYXNl KTsKPiAgCj4gIAkJaW50ZWxfc2V0X2NkY2xrX3ByZV9wbGFuZV91cGRhdGUoZGV2X3ByaXYsCj4g LQkJCQkJCSAmaW50ZWxfc3RhdGUtPmNkY2xrLmFjdHVhbCwKPiArCQkJCQkJICZzdGF0ZS0+Y2Rj bGsuYWN0dWFsLAo+ICAJCQkJCQkgJmRldl9wcml2LT5jZGNsay5hY3R1YWwsCj4gLQkJCQkJCSBp bnRlbF9zdGF0ZS0+Y2RjbGsucGlwZSk7Cj4gKwkJCQkJCSBzdGF0ZS0+Y2RjbGsucGlwZSk7Cj4g IAo+ICAJCS8qCj4gIAkJICogU0tMIHdvcmthcm91bmQ6IGJzcGVjIHJlY29tbWVuZHMgd2UgZGlz YWJsZSB0aGUgU0FHViB3aGVuIHdlCj4gQEAgLTEzODU0LDI3ICsxMzgyNywyNyBAQCBzdGF0aWMg dm9pZCBpbnRlbF9hdG9taWNfY29tbWl0X3RhaWwoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0 YXRlKQo+ICAJfQo+ICAKPiAgCS8qIENvbXBsZXRlIHRoZSBldmVudHMgZm9yIHBpcGVzIHRoYXQg aGF2ZSBub3cgYmVlbiBkaXNhYmxlZCAqLwo+IC0JZm9yX2VhY2hfbmV3X2NydGNfaW5fc3RhdGUo c3RhdGUsIGNydGMsIG5ld19jcnRjX3N0YXRlLCBpKSB7Cj4gLQkJYm9vbCBtb2Rlc2V0ID0gbmVl ZHNfbW9kZXNldCh0b19pbnRlbF9jcnRjX3N0YXRlKG5ld19jcnRjX3N0YXRlKSk7Cj4gKwlmb3Jf ZWFjaF9uZXdfaW50ZWxfY3J0Y19pbl9zdGF0ZShzdGF0ZSwgY3J0YywgbmV3X2NydGNfc3RhdGUs IGkpIHsKPiArCQlib29sIG1vZGVzZXQgPSBuZWVkc19tb2Rlc2V0KG5ld19jcnRjX3N0YXRlKTsK PiAgCj4gIAkJLyogQ29tcGxldGUgZXZlbnRzIGZvciBub3cgZGlzYWJsZSBwaXBlcyBoZXJlLiAq Lwo+IC0JCWlmIChtb2Rlc2V0ICYmICFuZXdfY3J0Y19zdGF0ZS0+YWN0aXZlICYmIG5ld19jcnRj X3N0YXRlLT5ldmVudCkgewo+ICsJCWlmIChtb2Rlc2V0ICYmICFuZXdfY3J0Y19zdGF0ZS0+YmFz ZS5hY3RpdmUgJiYgbmV3X2NydGNfc3RhdGUtPmJhc2UuZXZlbnQpIHsKPiAgCQkJc3Bpbl9sb2Nr X2lycSgmZGV2LT5ldmVudF9sb2NrKTsKPiAtCQkJZHJtX2NydGNfc2VuZF92YmxhbmtfZXZlbnQo Y3J0YywgbmV3X2NydGNfc3RhdGUtPmV2ZW50KTsKPiArCQkJZHJtX2NydGNfc2VuZF92Ymxhbmtf ZXZlbnQoJmNydGMtPmJhc2UsIG5ld19jcnRjX3N0YXRlLT5iYXNlLmV2ZW50KTsKPiAgCQkJc3Bp bl91bmxvY2tfaXJxKCZkZXYtPmV2ZW50X2xvY2spOwo+ICAKPiAtCQkJbmV3X2NydGNfc3RhdGUt PmV2ZW50ID0gTlVMTDsKPiArCQkJbmV3X2NydGNfc3RhdGUtPmJhc2UuZXZlbnQgPSBOVUxMOwo+ ICAJCX0KPiAgCX0KPiAgCj4gIAkvKiBOb3cgZW5hYmxlIHRoZSBjbG9ja3MsIHBsYW5lLCBwaXBl LCBhbmQgY29ubmVjdG9ycyB0aGF0IHdlIHNldCB1cC4gKi8KPiAgCWRldl9wcml2LT5kaXNwbGF5 LnVwZGF0ZV9jcnRjcyhzdGF0ZSk7Cj4gIAo+IC0JaWYgKGludGVsX3N0YXRlLT5tb2Rlc2V0KQo+ ICsJaWYgKHN0YXRlLT5tb2Rlc2V0KQo+ICAJCWludGVsX3NldF9jZGNsa19wb3N0X3BsYW5lX3Vw ZGF0ZShkZXZfcHJpdiwKPiAtCQkJCQkJICAmaW50ZWxfc3RhdGUtPmNkY2xrLmFjdHVhbCwKPiAr CQkJCQkJICAmc3RhdGUtPmNkY2xrLmFjdHVhbCwKPiAgCQkJCQkJICAmZGV2X3ByaXYtPmNkY2xr LmFjdHVhbCwKPiAtCQkJCQkJICBpbnRlbF9zdGF0ZS0+Y2RjbGsucGlwZSk7Cj4gKwkJCQkJCSAg c3RhdGUtPmNkY2xrLnBpcGUpOwo+ICAKPiAgCS8qIEZJWE1FOiBXZSBzaG91bGQgY2FsbCBkcm1f YXRvbWljX2hlbHBlcl9jb21taXRfaHdfZG9uZSgpIGhlcmUKPiAgCSAqIGFscmVhZHksIGJ1dCBz dGlsbCBuZWVkIHRoZSBzdGF0ZSBmb3IgdGhlIGRlbGF5ZWQgb3B0aW1pemF0aW9uLiBUbwo+IEBA IC0xMzg4NSwxNiArMTM4NTgsMTQgQEAgc3RhdGljIHZvaWQgaW50ZWxfYXRvbWljX2NvbW1pdF90 YWlsKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSkKPiAgCSAqIC0gc3dpdGNoIG92ZXIg dG8gdGhlIHZibGFuayB3YWl0IGhlbHBlciBpbiB0aGUgY29yZSBhZnRlciB0aGF0IHNpbmNlCj4g IAkgKiAgIHdlIGRvbid0IG5lZWQgb3V0IHNwZWNpYWwgaGFuZGxpbmcgYW55IG1vcmUuCj4gIAkg Ki8KPiAtCWRybV9hdG9taWNfaGVscGVyX3dhaXRfZm9yX2ZsaXBfZG9uZShkZXYsIHN0YXRlKTsK PiAtCj4gLQlmb3JfZWFjaF9uZXdfY3J0Y19pbl9zdGF0ZShzdGF0ZSwgY3J0YywgbmV3X2NydGNf c3RhdGUsIGkpIHsKPiAtCQluZXdfaW50ZWxfY3J0Y19zdGF0ZSA9IHRvX2ludGVsX2NydGNfc3Rh dGUobmV3X2NydGNfc3RhdGUpOwo+ICsJZHJtX2F0b21pY19oZWxwZXJfd2FpdF9mb3JfZmxpcF9k b25lKGRldiwgJnN0YXRlLT5iYXNlKTsKPiAgCj4gLQkJaWYgKG5ld19jcnRjX3N0YXRlLT5hY3Rp dmUgJiYKPiAtCQkgICAgIW5lZWRzX21vZGVzZXQodG9faW50ZWxfY3J0Y19zdGF0ZShuZXdfY3J0 Y19zdGF0ZSkpICYmCj4gLQkJICAgIChuZXdfaW50ZWxfY3J0Y19zdGF0ZS0+YmFzZS5jb2xvcl9t Z210X2NoYW5nZWQgfHwKPiAtCQkgICAgIG5ld19pbnRlbF9jcnRjX3N0YXRlLT51cGRhdGVfcGlw ZSkpCj4gLQkJCWludGVsX2NvbG9yX2xvYWRfbHV0cyhuZXdfaW50ZWxfY3J0Y19zdGF0ZSk7Cj4g Kwlmb3JfZWFjaF9uZXdfaW50ZWxfY3J0Y19pbl9zdGF0ZShzdGF0ZSwgY3J0YywgbmV3X2NydGNf c3RhdGUsIGkpIHsKPiArCQlpZiAobmV3X2NydGNfc3RhdGUtPmJhc2UuYWN0aXZlICYmCj4gKwkJ ICAgICFuZWVkc19tb2Rlc2V0KG5ld19jcnRjX3N0YXRlKSAmJgo+ICsJCSAgICAobmV3X2NydGNf c3RhdGUtPmJhc2UuY29sb3JfbWdtdF9jaGFuZ2VkIHx8Cj4gKwkJICAgICBuZXdfY3J0Y19zdGF0 ZS0+dXBkYXRlX3BpcGUpKQo+ICsJCQlpbnRlbF9jb2xvcl9sb2FkX2x1dHMobmV3X2NydGNfc3Rh dGUpOwo+ICAJfQo+ICAKPiAgCS8qCj4gQEAgLTEzOTA0LDE2ICsxMzg3NSwxNCBAQCBzdGF0aWMg dm9pZCBpbnRlbF9hdG9taWNfY29tbWl0X3RhaWwoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0 YXRlKQo+ICAJICoKPiAgCSAqIFRPRE86IE1vdmUgdGhpcyAoYW5kIG90aGVyIGNsZWFudXApIHRv IGFuIGFzeW5jIHdvcmtlciBldmVudHVhbGx5Lgo+ICAJICovCj4gLQlmb3JfZWFjaF9uZXdfY3J0 Y19pbl9zdGF0ZShzdGF0ZSwgY3J0YywgbmV3X2NydGNfc3RhdGUsIGkpIHsKPiAtCQluZXdfaW50 ZWxfY3J0Y19zdGF0ZSA9IHRvX2ludGVsX2NydGNfc3RhdGUobmV3X2NydGNfc3RhdGUpOwo+IC0K PiArCWZvcl9lYWNoX25ld19pbnRlbF9jcnRjX2luX3N0YXRlKHN0YXRlLCBjcnRjLCBuZXdfY3J0 Y19zdGF0ZSwgaSkgewo+ICAJCWlmIChkZXZfcHJpdi0+ZGlzcGxheS5vcHRpbWl6ZV93YXRlcm1h cmtzKQo+IC0JCQlkZXZfcHJpdi0+ZGlzcGxheS5vcHRpbWl6ZV93YXRlcm1hcmtzKGludGVsX3N0 YXRlLAo+IC0JCQkJCQkJICAgICAgbmV3X2ludGVsX2NydGNfc3RhdGUpOwo+ICsJCQlkZXZfcHJp di0+ZGlzcGxheS5vcHRpbWl6ZV93YXRlcm1hcmtzKHN0YXRlLAo+ICsJCQkJCQkJICAgICAgbmV3 X2NydGNfc3RhdGUpOwo+ICAJfQo+ICAKPiAtCWZvcl9lYWNoX29sZG5ld19jcnRjX2luX3N0YXRl KHN0YXRlLCBjcnRjLCBvbGRfY3J0Y19zdGF0ZSwgbmV3X2NydGNfc3RhdGUsIGkpIHsKPiAtCQlp bnRlbF9wb3N0X3BsYW5lX3VwZGF0ZSh0b19pbnRlbF9jcnRjX3N0YXRlKG9sZF9jcnRjX3N0YXRl KSk7Cj4gKwlmb3JfZWFjaF9vbGRuZXdfaW50ZWxfY3J0Y19pbl9zdGF0ZShzdGF0ZSwgY3J0Yywg b2xkX2NydGNfc3RhdGUsIG5ld19jcnRjX3N0YXRlLCBpKSB7Cj4gKwkJaW50ZWxfcG9zdF9wbGFu ZV91cGRhdGUob2xkX2NydGNfc3RhdGUpOwo+ICAKPiAgCQlpZiAocHV0X2RvbWFpbnNbaV0pCj4g IAkJCW1vZGVzZXRfcHV0X3Bvd2VyX2RvbWFpbnMoZGV2X3ByaXYsIHB1dF9kb21haW5zW2ldKTsK PiBAQCAtMTM5MjEsMTUgKzEzODkwLDE1IEBAIHN0YXRpYyB2b2lkIGludGVsX2F0b21pY19jb21t aXRfdGFpbChzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpCj4gIAkJaW50ZWxfbW9kZXNl dF92ZXJpZnlfY3J0YyhjcnRjLCBzdGF0ZSwgb2xkX2NydGNfc3RhdGUsIG5ld19jcnRjX3N0YXRl KTsKPiAgCX0KPiAgCj4gLQlpZiAoaW50ZWxfc3RhdGUtPm1vZGVzZXQpCj4gLQkJaW50ZWxfdmVy aWZ5X3BsYW5lcyhpbnRlbF9zdGF0ZSk7Cj4gKwlpZiAoc3RhdGUtPm1vZGVzZXQpCj4gKwkJaW50 ZWxfdmVyaWZ5X3BsYW5lcyhzdGF0ZSk7Cj4gIAo+IC0JaWYgKGludGVsX3N0YXRlLT5tb2Rlc2V0 ICYmIGludGVsX2Nhbl9lbmFibGVfc2FndihzdGF0ZSkpCj4gKwlpZiAoc3RhdGUtPm1vZGVzZXQg JiYgaW50ZWxfY2FuX2VuYWJsZV9zYWd2KHN0YXRlKSkKPiAgCQlpbnRlbF9lbmFibGVfc2Fndihk ZXZfcHJpdik7Cj4gIAo+IC0JZHJtX2F0b21pY19oZWxwZXJfY29tbWl0X2h3X2RvbmUoc3RhdGUp Owo+ICsJZHJtX2F0b21pY19oZWxwZXJfY29tbWl0X2h3X2RvbmUoJnN0YXRlLT5iYXNlKTsKPiAg Cj4gLQlpZiAoaW50ZWxfc3RhdGUtPm1vZGVzZXQpIHsKPiArCWlmIChzdGF0ZS0+bW9kZXNldCkg ewo+ICAJCS8qIEFzIG9uZSBvZiB0aGUgcHJpbWFyeSBtbWlvIGFjY2Vzc29ycywgS01TIGhhcyBh IGhpZ2gKPiAgCQkgKiBsaWtlbGlob29kIG9mIHRyaWdnZXJpbmcgYnVncyBpbiB1bmNsYWltZWQg YWNjZXNzLiBBZnRlciB3ZQo+ICAJCSAqIGZpbmlzaCBtb2Rlc2V0dGluZywgc2VlIGlmIGFuIGVy cm9yIGhhcyBiZWVuIGZsYWdnZWQsIGFuZCBpZgo+IEBAIC0xMzkzOSw3ICsxMzkwOCw3IEBAIHN0 YXRpYyB2b2lkIGludGVsX2F0b21pY19jb21taXRfdGFpbChzdHJ1Y3QgZHJtX2F0b21pY19zdGF0 ZSAqc3RhdGUpCj4gIAkJaW50ZWxfdW5jb3JlX2FybV91bmNsYWltZWRfbW1pb19kZXRlY3Rpb24o JmRldl9wcml2LT51bmNvcmUpOwo+ICAJCWludGVsX2Rpc3BsYXlfcG93ZXJfcHV0KGRldl9wcml2 LCBQT1dFUl9ET01BSU5fTU9ERVNFVCwgd2FrZXJlZik7Cj4gIAl9Cj4gLQlpbnRlbF9ydW50aW1l X3BtX3B1dCgmZGV2X3ByaXYtPnJ1bnRpbWVfcG0sIGludGVsX3N0YXRlLT53YWtlcmVmKTsKPiAr CWludGVsX3J1bnRpbWVfcG1fcHV0KCZkZXZfcHJpdi0+cnVudGltZV9wbSwgc3RhdGUtPndha2Vy ZWYpOwo+ICAKPiAgCS8qCj4gIAkgKiBEZWZlciB0aGUgY2xlYW51cCBvZiB0aGUgb2xkIHN0YXRl IHRvIGEgc2VwYXJhdGUgd29ya2VyIHRvIG5vdAo+IEBAIC0xMzk0OSwxNCArMTM5MTgsMTQgQEAg c3RhdGljIHZvaWQgaW50ZWxfYXRvbWljX2NvbW1pdF90YWlsKHN0cnVjdCBkcm1fYXRvbWljX3N0 YXRlICpzdGF0ZSkKPiAgCSAqIHNjaGVkdWxlIHBvaW50IChjb25kX3Jlc2NoZWQoKSkgaGVyZSBh bnl3YXkgdG8ga2VlcCBsYXRlbmNpZXMKPiAgCSAqIGRvd24uCj4gIAkgKi8KPiAtCUlOSVRfV09S Sygmc3RhdGUtPmNvbW1pdF93b3JrLCBpbnRlbF9hdG9taWNfY2xlYW51cF93b3JrKTsKPiAtCXF1 ZXVlX3dvcmsoc3lzdGVtX2hpZ2hwcmlfd3EsICZzdGF0ZS0+Y29tbWl0X3dvcmspOwo+ICsJSU5J VF9XT1JLKCZzdGF0ZS0+YmFzZS5jb21taXRfd29yaywgaW50ZWxfYXRvbWljX2NsZWFudXBfd29y ayk7Cj4gKwlxdWV1ZV93b3JrKHN5c3RlbV9oaWdocHJpX3dxLCAmc3RhdGUtPmJhc2UuY29tbWl0 X3dvcmspOwo+ICB9Cj4gIAo+ICBzdGF0aWMgdm9pZCBpbnRlbF9hdG9taWNfY29tbWl0X3dvcmso c3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQo+ICB7Cj4gLQlzdHJ1Y3QgZHJtX2F0b21pY19zdGF0 ZSAqc3RhdGUgPQo+IC0JCWNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgZHJtX2F0b21pY19zdGF0 ZSwgY29tbWl0X3dvcmspOwo+ICsJc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqc3RhdGUgPQo+ ICsJCWNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlLCBiYXNlLmNv bW1pdF93b3JrKTsKPiAgCj4gIAlpbnRlbF9hdG9taWNfY29tbWl0X3RhaWwoc3RhdGUpOwo+ICB9 Cj4gQEAgLTE0MDk5LDcgKzE0MDY4LDcgQEAgc3RhdGljIGludCBpbnRlbF9hdG9taWNfY29tbWl0 KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gIAl9IGVsc2Ugewo+ICAJCWlmIChpbnRlbF9zdGF0 ZS0+bW9kZXNldCkKPiAgCQkJZmx1c2hfd29ya3F1ZXVlKGRldl9wcml2LT5tb2Rlc2V0X3dxKTsK PiAtCQlpbnRlbF9hdG9taWNfY29tbWl0X3RhaWwoc3RhdGUpOwo+ICsJCWludGVsX2F0b21pY19j b21taXRfdGFpbChpbnRlbF9zdGF0ZSk7Cj4gIAl9Cj4gIAo+ICAJcmV0dXJuIDA7Cj4gQEAgLTE2 ODA0LDcgKzE2NzczLDcgQEAgaW50ZWxfbW9kZXNldF9zZXR1cF9od19zdGF0ZShzdHJ1Y3QgZHJt X2RldmljZSAqZGV2LAo+ICAJCXU2NCBwdXRfZG9tYWluczsKPiAgCj4gIAkJY3J0Y19zdGF0ZSA9 IHRvX2ludGVsX2NydGNfc3RhdGUoY3J0Yy0+YmFzZS5zdGF0ZSk7Cj4gLQkJcHV0X2RvbWFpbnMg PSBtb2Rlc2V0X2dldF9jcnRjX3Bvd2VyX2RvbWFpbnMoJmNydGMtPmJhc2UsIGNydGNfc3RhdGUp Owo+ICsJCXB1dF9kb21haW5zID0gbW9kZXNldF9nZXRfY3J0Y19wb3dlcl9kb21haW5zKGNydGMs IGNydGNfc3RhdGUpOwo+ICAJCWlmIChXQVJOX09OKHB1dF9kb21haW5zKSkKPiAgCQkJbW9kZXNl dF9wdXRfcG93ZXJfZG9tYWlucyhkZXZfcHJpdiwgcHV0X2RvbWFpbnMpOwo+ICAJfQo+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9kcnYuaAo+IGluZGV4IDI3MzRmNjJhYjE5YS4uNDBjNmRmOTUyZmQyIDEwMDY0 NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiArKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gQEAgLTMwNiwxMCArMzA2LDEwIEBAIHN0cnVjdCBk cm1faTkxNV9kaXNwbGF5X2Z1bmNzIHsKPiAgCWludCAoKmNydGNfY29tcHV0ZV9jbG9jaykoc3Ry dWN0IGludGVsX2NydGMgKmNydGMsCj4gIAkJCQkgIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpj cnRjX3N0YXRlKTsKPiAgCXZvaWQgKCpjcnRjX2VuYWJsZSkoc3RydWN0IGludGVsX2NydGNfc3Rh dGUgKnBpcGVfY29uZmlnLAo+IC0JCQkgICAgc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKm9sZF9z dGF0ZSk7Cj4gKwkJCSAgICBzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpvbGRfc3RhdGUpOwo+ ICAJdm9pZCAoKmNydGNfZGlzYWJsZSkoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKm9sZF9jcnRj X3N0YXRlLAo+IC0JCQkgICAgIHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpvbGRfc3RhdGUpOwo+ IC0Jdm9pZCAoKnVwZGF0ZV9jcnRjcykoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKTsK PiArCQkJICAgICBzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpvbGRfc3RhdGUpOwo+ICsJdm9p ZCAoKnVwZGF0ZV9jcnRjcykoc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqc3RhdGUpOwo+ICAJ dm9pZCAoKmF1ZGlvX2NvZGVjX2VuYWJsZSkoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIs Cj4gIAkJCQkgICBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiAg CQkJCSAgIGNvbnN0IHN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpjb25uX3N0YXRlKTsKPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX3BtLmMKPiBpbmRleCBkOWE3YTEzY2UzMmEuLjQxMTZkZTJhNzdmZCAx MDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYwo+IEBAIC0zNzM2LDExICszNzM2LDEwIEBAIGlu dGVsX2Rpc2FibGVfc2FndihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIAly ZXR1cm4gMDsKPiAgfQo+ICAKPiAtYm9vbCBpbnRlbF9jYW5fZW5hYmxlX3NhZ3Yoc3RydWN0IGRy bV9hdG9taWNfc3RhdGUgKnN0YXRlKQo+ICtib29sIGludGVsX2Nhbl9lbmFibGVfc2FndihzdHJ1 Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSkKPiAgewo+IC0Jc3RydWN0IGRybV9kZXZpY2Ug KmRldiA9IHN0YXRlLT5kZXY7Cj4gKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gc3RhdGUtPmJh c2UuZGV2Owo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShk ZXYpOwo+IC0Jc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqaW50ZWxfc3RhdGUgPSB0b19pbnRl bF9hdG9taWNfc3RhdGUoc3RhdGUpOwo+ICAJc3RydWN0IGludGVsX2NydGMgKmNydGM7Cj4gIAlz dHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lOwo+ICAJc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNz dGF0ZTsKPiBAQCAtMzc2MSwxOCArMzc2MCwxOCBAQCBib29sIGludGVsX2Nhbl9lbmFibGVfc2Fn dihzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpCj4gIAkvKgo+ICAJICogSWYgdGhlcmUg YXJlIG5vIGFjdGl2ZSBDUlRDcywgbm8gYWRkaXRpb25hbCBjaGVja3MgbmVlZCBiZSBwZXJmb3Jt ZWQKPiAgCSAqLwo+IC0JaWYgKGh3ZWlnaHQzMihpbnRlbF9zdGF0ZS0+YWN0aXZlX2NydGNzKSA9 PSAwKQo+ICsJaWYgKGh3ZWlnaHQzMihzdGF0ZS0+YWN0aXZlX2NydGNzKSA9PSAwKQo+ICAJCXJl dHVybiB0cnVlOwo+ICAKPiAgCS8qCj4gIAkgKiBTS0wrIHdvcmthcm91bmQ6IGJzcGVjIHJlY29t bWVuZHMgd2UgZGlzYWJsZSBTQUdWIHdoZW4gd2UgaGF2ZQo+ICAJICogbW9yZSB0aGVuIG9uZSBw aXBlIGVuYWJsZWQKPiAgCSAqLwo+IC0JaWYgKGh3ZWlnaHQzMihpbnRlbF9zdGF0ZS0+YWN0aXZl X2NydGNzKSA+IDEpCj4gKwlpZiAoaHdlaWdodDMyKHN0YXRlLT5hY3RpdmVfY3J0Y3MpID4gMSkK PiAgCQlyZXR1cm4gZmFsc2U7Cj4gIAo+ICAJLyogU2luY2Ugd2UncmUgbm93IGd1YXJhbnRlZWQg dG8gb25seSBoYXZlIG9uZSBhY3RpdmUgQ1JUQy4uLiAqLwo+IC0JcGlwZSA9IGZmcyhpbnRlbF9z dGF0ZS0+YWN0aXZlX2NydGNzKSAtIDE7Cj4gKwlwaXBlID0gZmZzKHN0YXRlLT5hY3RpdmVfY3J0 Y3MpIC0gMTsKPiAgCWNydGMgPSBpbnRlbF9nZXRfY3J0Y19mb3JfcGlwZShkZXZfcHJpdiwgcGlw ZSk7Cj4gIAljc3RhdGUgPSB0b19pbnRlbF9jcnRjX3N0YXRlKGNydGMtPmJhc2Uuc3RhdGUpOwo+ ICAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uaCBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmgKPiBpbmRleCAxYjQ4OWZhMzk5ZTEuLmUzNTczZTFl MTZlMyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5oCj4gKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uaAo+IEBAIC0xMCwxMCArMTAsMTAgQEAK PiAgCj4gICNpbmNsdWRlICJpOTE1X3JlZy5oIgo+ICAKPiAtc3RydWN0IGRybV9hdG9taWNfc3Rh dGU7Cj4gIHN0cnVjdCBkcm1fZGV2aWNlOwo+ICBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZTsKPiAg c3RydWN0IGk5MTVfcmVxdWVzdDsKPiArc3RydWN0IGludGVsX2F0b21pY19zdGF0ZTsKPiAgc3Ry dWN0IGludGVsX2NydGM7Cj4gIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlOwo+ICBzdHJ1Y3QgaW50 ZWxfcGxhbmU7Cj4gQEAgLTUyLDcgKzUyLDcgQEAgdm9pZCBza2xfcGlwZV93bV9nZXRfaHdfc3Rh dGUoc3RydWN0IGludGVsX2NydGMgKmNydGMsCj4gIAkJCSAgICAgIHN0cnVjdCBza2xfcGlwZV93 bSAqb3V0KTsKPiAgdm9pZCBnNHhfd21fc2FuaXRpemUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2KTsKPiAgdm9pZCB2bHZfd21fc2FuaXRpemUoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2KTsKPiAtYm9vbCBpbnRlbF9jYW5fZW5hYmxlX3NhZ3Yoc3RydWN0IGRybV9h dG9taWNfc3RhdGUgKnN0YXRlKTsKPiArYm9vbCBpbnRlbF9jYW5fZW5hYmxlX3NhZ3Yoc3RydWN0 IGludGVsX2F0b21pY19zdGF0ZSAqc3RhdGUpOwo+ICBpbnQgaW50ZWxfZW5hYmxlX3NhZ3Yoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKPiAgaW50IGludGVsX2Rpc2FibGVfc2Fn dihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwo+ICBib29sIHNrbF93bV9sZXZl bF9lcXVhbHMoY29uc3Qgc3RydWN0IHNrbF93bV9sZXZlbCAqbDEsCj4gLS0gCj4gMi4yMC4xCj4g Cj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiBJbnRl bC1nZnggbWFpbGluZyBsaXN0Cj4gSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+IGh0 dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cgot LSAKVmlsbGUgU3lyasOkbMOkCkludGVsCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZy ZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3Rp bmZvL2ludGVsLWdmeA==