From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH 08/21] drm/i915: Use HWS for seqno tracking everywhere Date: Mon, 6 Jun 2016 15:55:18 +0100 Message-ID: <57558ED6.5030304@linux.intel.com> References: <1464970133-29859-1-git-send-email-chris@chris-wilson.co.uk> <1464970133-29859-9-git-send-email-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTP id 7A3BA6E5C3 for ; Mon, 6 Jun 2016 14:55:20 +0000 (UTC) In-Reply-To: <1464970133-29859-9-git-send-email-chris@chris-wilson.co.uk> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Chris Wilson , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org Ck9uIDAzLzA2LzE2IDE3OjA4LCBDaHJpcyBXaWxzb24gd3JvdGU6Cj4gQnkgdXNpbmcgdGhlIHNh bWUgYWRkcmVzcyBmb3Igc3RvcmluZyB0aGUgSFdTIG9uIGV2ZXJ5IHBsYXRmb3JtLCB3ZSBjYW4K PiByZW1vdmUgdGhlIHBsYXRmb3JtIHNwZWNpZmljIHZmdW5jcyBhbmQgcmVkdWNlIHRoZSBnZXQt c2Vxbm8gcm91dGluZSB0bwo+IGEgc2luZ2xlIHJlYWQgb2YgYSBjYWNoZWQgbWVtb3J5IGxvY2F0 aW9uLgo+Cj4gU2lnbmVkLW9mZi1ieTogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24u Y28udWs+Cj4gLS0tCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYyAgICAg IHwgIDYgKy0tCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oICAgICAgICAgIHwg IDQgKy0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3B1X2Vycm9yLmMgICAgfCAgMiAr LQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEuYyAgICAgICAgICB8ICA0ICstCj4g ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3RyYWNlLmggICAgICAgIHwgIDIgKy0KPiAgIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2JyZWFkY3J1bWJzLmMgfCAgNCArLQo+ICAgZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMgICAgICAgICB8IDI2ICstLS0tLS0tLS0KPiAgIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuYyAgfCA4MyArKysrKysrKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1 ZmZlci5oICB8ICA3ICstLQo+ICAgOSBmaWxlcyBjaGFuZ2VkLCAzNiBpbnNlcnRpb25zKCspLCAx MDIgZGVsZXRpb25zKC0pCj4KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9kZWJ1Z2ZzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwo+IGluZGV4 IDBjMjg3YmYwZDIzMC4uNzJkYWU2ZmIwYWEyIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZGVidWdmcy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9k ZWJ1Z2ZzLmMKPiBAQCAtNjYyLDcgKzY2Miw3IEBAIHN0YXRpYyBpbnQgaTkxNV9nZW1fcGFnZWZs aXBfaW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKmRhdGEpCj4gICAJCQkJCSAgIGVuZ2lu ZS0+bmFtZSwKPiAgIAkJCQkJICAgaTkxNV9nZW1fcmVxdWVzdF9nZXRfc2Vxbm8od29yay0+Zmxp cF9xdWV1ZWRfcmVxKSwKPiAgIAkJCQkJICAgZGV2X3ByaXYtPm5leHRfc2Vxbm8sCj4gLQkJCQkJ ICAgZW5naW5lLT5nZXRfc2Vxbm8oZW5naW5lKSwKPiArCQkJCQkgICBpbnRlbF9lbmdpbmVfZ2V0 X3NlcW5vKGVuZ2luZSksCj4gICAJCQkJCSAgIGk5MTVfZ2VtX3JlcXVlc3RfY29tcGxldGVkKHdv cmstPmZsaXBfcXVldWVkX3JlcSkpOwo+ICAgCQkJfSBlbHNlCj4gICAJCQkJc2VxX3ByaW50Ziht LCAiRmxpcCBub3QgYXNzb2NpYXRlZCB3aXRoIGFueSByaW5nXG4iKTsKPiBAQCAtNzkyLDcgKzc5 Miw3IEBAIHN0YXRpYyB2b2lkIGk5MTVfcmluZ19zZXFub19pbmZvKHN0cnVjdCBzZXFfZmlsZSAq bSwKPiAgIAlzdHJ1Y3QgcmJfbm9kZSAqcmI7Cj4KPiAgIAlzZXFfcHJpbnRmKG0sICJDdXJyZW50 IHNlcXVlbmNlICglcyk6ICV4XG4iLAo+IC0JCSAgIGVuZ2luZS0+bmFtZSwgZW5naW5lLT5nZXRf c2Vxbm8oZW5naW5lKSk7Cj4gKwkJICAgZW5naW5lLT5uYW1lLCBpbnRlbF9lbmdpbmVfZ2V0X3Nl cW5vKGVuZ2luZSkpOwo+ICAgCXNlcV9wcmludGYobSwgIkN1cnJlbnQgdXNlciBpbnRlcnJ1cHRz ICglcyk6ICV4XG4iLAo+ICAgCQkgICBlbmdpbmUtPm5hbWUsIFJFQURfT05DRShlbmdpbmUtPnVz ZXJfaW50ZXJydXB0cykpOwo+Cj4gQEAgLTE0MTcsNyArMTQxNyw3IEBAIHN0YXRpYyBpbnQgaTkx NV9oYW5nY2hlY2tfaW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnVudXNlZCkKPgo+ICAg CWZvcl9lYWNoX2VuZ2luZV9pZChlbmdpbmUsIGRldl9wcml2LCBpZCkgewo+ICAgCQlhY3RoZFtp ZF0gPSBpbnRlbF9yaW5nX2dldF9hY3RpdmVfaGVhZChlbmdpbmUpOwo+IC0JCXNlcW5vW2lkXSA9 IGVuZ2luZS0+Z2V0X3NlcW5vKGVuZ2luZSk7Cj4gKwkJc2Vxbm9baWRdID0gaW50ZWxfZW5naW5l X2dldF9zZXFubyhlbmdpbmUpOwo+ICAgCX0KPgo+ICAgCWk5MTVfZ2V0X2V4dHJhX2luc3Rkb25l KGRldl9wcml2LCBpbnN0ZG9uZSk7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gaW5kZXggYjA0 NjBlZGEyMTEzLi40YTcxZjRlOWE5N2EgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9kcnYuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiBA QCAtMzIyMSwxMyArMzIyMSwxMyBAQCBpOTE1X3NlcW5vX3Bhc3NlZCh1aW50MzJfdCBzZXExLCB1 aW50MzJfdCBzZXEyKQo+Cj4gICBzdGF0aWMgaW5saW5lIGJvb2wgaTkxNV9nZW1fcmVxdWVzdF9z dGFydGVkKGNvbnN0IHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxKQo+ICAgewo+IC0J cmV0dXJuIGk5MTVfc2Vxbm9fcGFzc2VkKHJlcS0+ZW5naW5lLT5nZXRfc2Vxbm8ocmVxLT5lbmdp bmUpLAo+ICsJcmV0dXJuIGk5MTVfc2Vxbm9fcGFzc2VkKGludGVsX2VuZ2luZV9nZXRfc2Vxbm8o cmVxLT5lbmdpbmUpLAo+ICAgCQkJCSByZXEtPnByZXZpb3VzX3NlcW5vKTsKPiAgIH0KPgo+ICAg c3RhdGljIGlubGluZSBib29sIGk5MTVfZ2VtX3JlcXVlc3RfY29tcGxldGVkKGNvbnN0IHN0cnVj dCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxKQo+ICAgewo+IC0JcmV0dXJuIGk5MTVfc2Vxbm9f cGFzc2VkKHJlcS0+ZW5naW5lLT5nZXRfc2Vxbm8ocmVxLT5lbmdpbmUpLAo+ICsJcmV0dXJuIGk5 MTVfc2Vxbm9fcGFzc2VkKGludGVsX2VuZ2luZV9nZXRfc2Vxbm8ocmVxLT5lbmdpbmUpLAo+ICAg CQkJCSByZXEtPnNlcW5vKTsKPiAgIH0KPgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2dwdV9lcnJvci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ncHVfZXJy b3IuYwo+IGluZGV4IDg5MjQxZmZjYzY3Ni4uODEzNDFmYzRlNjFhIDEwMDY0NAo+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3B1X2Vycm9yLmMKPiArKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2dwdV9lcnJvci5jCj4gQEAgLTk4Myw3ICs5ODMsNyBAQCBzdGF0aWMgdm9p ZCBpOTE1X3JlY29yZF9yaW5nX3N0YXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diwKPiAgIAllcmluZy0+d2FpdGluZyA9IGludGVsX2VuZ2luZV9oYXNfd2FpdGVyKGVuZ2luZSk7 Cj4gICAJZXJpbmctPmluc3RwbSA9IEk5MTVfUkVBRChSSU5HX0lOU1RQTShlbmdpbmUtPm1taW9f YmFzZSkpOwo+ICAgCWVyaW5nLT5hY3RoZCA9IGludGVsX3JpbmdfZ2V0X2FjdGl2ZV9oZWFkKGVu Z2luZSk7Cj4gLQllcmluZy0+c2Vxbm8gPSBlbmdpbmUtPmdldF9zZXFubyhlbmdpbmUpOwo+ICsJ ZXJpbmctPnNlcW5vID0gaW50ZWxfZW5naW5lX2dldF9zZXFubyhlbmdpbmUpOwo+ICAgCWVyaW5n LT5sYXN0X3NlcW5vID0gZW5naW5lLT5sYXN0X3N1Ym1pdHRlZF9zZXFubzsKPiAgIAllcmluZy0+ c3RhcnQgPSBJOTE1X1JFQURfU1RBUlQoZW5naW5lKTsKPiAgIAllcmluZy0+aGVhZCA9IEk5MTVf UkVBRF9IRUFEKGVuZ2luZSk7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfaXJxLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2lycS5jCj4gaW5kZXggMmE3MzZm NGEwZmU1Li40MDEzYWQ5MmNkYzYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9pcnEuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfaXJxLmMKPiBAQCAt Mjk1MSw3ICsyOTUxLDcgQEAgc3RhdGljIGludCBzZW1hcGhvcmVfcGFzc2VkKHN0cnVjdCBpbnRl bF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgIAlpZiAoc2lnbmFsbGVyLT5oYW5nY2hlY2suZGVhZGxv Y2sgPj0gSTkxNV9OVU1fRU5HSU5FUykKPiAgIAkJcmV0dXJuIC0xOwo+Cj4gLQlpZiAoaTkxNV9z ZXFub19wYXNzZWQoc2lnbmFsbGVyLT5nZXRfc2Vxbm8oc2lnbmFsbGVyKSwgc2Vxbm8pKQo+ICsJ aWYgKGk5MTVfc2Vxbm9fcGFzc2VkKGludGVsX2VuZ2luZV9nZXRfc2Vxbm8oZW5naW5lKSwgc2Vx bm8pKQoKU2hvdWxkIGJlIHNpZ25hbGxlciwgbm90IGVuZ2luZSwgYnkgdGhlIGxvb2sgb2YgaXQu Cgo+ICAgCQlyZXR1cm4gMTsKPgo+ICAgCS8qIGN1cnNvcnkgY2hlY2sgZm9yIGFuIHVua2lja2Fi bGUgZGVhZGxvY2sgKi8KPiBAQCAtMzEzOSw3ICszMTM5LDcgQEAgc3RhdGljIHZvaWQgaTkxNV9o YW5nY2hlY2tfZWxhcHNlZChzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCj4gICAJCQllbmdpbmUt PmlycV9zZXFub19iYXJyaWVyKGVuZ2luZSk7Cj4KPiAgIAkJYWN0aGQgPSBpbnRlbF9yaW5nX2dl dF9hY3RpdmVfaGVhZChlbmdpbmUpOwo+IC0JCXNlcW5vID0gZW5naW5lLT5nZXRfc2Vxbm8oZW5n aW5lKTsKPiArCQlzZXFubyA9IGludGVsX2VuZ2luZV9nZXRfc2Vxbm8oZW5naW5lKTsKPgo+ICAg CQkvKiBSZXNldCBzdHVjayBpbnRlcnJ1cHRzIGJldHdlZW4gYmF0Y2ggYWR2YW5jZXMgKi8KPiAg IAkJdXNlcl9pbnRlcnJ1cHRzID0gMDsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV90cmFjZS5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV90cmFjZS5oCj4gaW5k ZXggNjc2OGRiMDMyZjg0Li4zZDEzZmRlOTVmZGYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV90cmFjZS5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV90 cmFjZS5oCj4gQEAgLTU1OCw3ICs1NTgsNyBAQCBUUkFDRV9FVkVOVChpOTE1X2dlbV9yZXF1ZXN0 X25vdGlmeSwKPiAgIAkgICAgVFBfZmFzdF9hc3NpZ24oCj4gICAJCQkgICBfX2VudHJ5LT5kZXYg PSBlbmdpbmUtPmk5MTUtPmRldi0+cHJpbWFyeS0+aW5kZXg7Cj4gICAJCQkgICBfX2VudHJ5LT5y aW5nID0gZW5naW5lLT5pZDsKPiAtCQkJICAgX19lbnRyeS0+c2Vxbm8gPSBlbmdpbmUtPmdldF9z ZXFubyhlbmdpbmUpOwo+ICsJCQkgICBfX2VudHJ5LT5zZXFubyA9IGludGVsX2VuZ2luZV9nZXRf c2Vxbm8oZW5naW5lKTsKPiAgIAkJCSAgICksCj4KPiAgIAkgICAgVFBfcHJpbnRrKCJkZXY9JXUs IHJpbmc9JXUsIHNlcW5vPSV1IiwKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfYnJlYWRjcnVtYnMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2JyZWFkY3J1 bWJzLmMKPiBpbmRleCBlMDEyMWY3Mjc5MzguLjQ0MzQ2ZGUzOTc5NCAxMDA2NDQKPiAtLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9icmVhZGNydW1icy5jCj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfYnJlYWRjcnVtYnMuYwo+IEBAIC0xNDgsNyArMTQ4LDcgQEAgYm9v bCBpbnRlbF9lbmdpbmVfYWRkX3dhaXQoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAo+ ICAgCWZpcnN0ID0gdHJ1ZTsKPiAgIAlwYXJlbnQgPSBOVUxMOwo+ICAgCWNvbXBsZXRlZCA9IE5V TEw7Cj4gLQlzZXFubyA9IGVuZ2luZS0+Z2V0X3NlcW5vKGVuZ2luZSk7Cj4gKwlzZXFubyA9IGlu dGVsX2VuZ2luZV9nZXRfc2Vxbm8oZW5naW5lKTsKPgo+ICAgCXAgPSAmYi0+d2FpdGVycy5yYl9u b2RlOwo+ICAgCXdoaWxlICgqcCkgewo+IEBAIC0yNzUsNyArMjc1LDcgQEAgdm9pZCBpbnRlbF9l bmdpbmVfcmVtb3ZlX3dhaXQoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAo+ICAgCQkJ ICogdGhlIGZpcnN0X3dhaXRlci4gVGhpcyBpcyB1bmRlc2lyYWJsZSBpZiB0aGF0Cj4gICAJCQkg KiB3YWl0ZXIgaXMgYSBoaWdoIHByaW9yaXR5IHRhc2suCj4gICAJCQkgKi8KPiAtCQkJdTMyIHNl cW5vID0gZW5naW5lLT5nZXRfc2Vxbm8oZW5naW5lKTsKPiArCQkJdTMyIHNlcW5vID0gaW50ZWxf ZW5naW5lX2dldF9zZXFubyhlbmdpbmUpOwo+ICAgCQkJd2hpbGUgKGk5MTVfc2Vxbm9fcGFzc2Vk KHNlcW5vLCB0b193YWl0KG5leHQpLT5zZXFubykpIHsKPiAgIAkJCQlzdHJ1Y3QgcmJfbm9kZSAq biA9IHJiX25leHQobmV4dCk7Cj4gICAJCQkJX19pbnRlbF9icmVhZGNydW1ic19maW5pc2goYiwg dG9fd2FpdChuZXh0KSk7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2xyYy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKPiBpbmRleCAyNzA0MDll OWFjN2EuLmU0ODY4NzgzN2E5NSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9scmMuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jCj4gQEAg LTE3MTIsMTYgKzE3MTIsNiBAQCBzdGF0aWMgaW50IGdlbjhfZW1pdF9mbHVzaF9yZW5kZXIoc3Ry dWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXF1ZXN0LAo+ICAgCXJldHVybiAwOwo+ICAgfQo+ Cj4gLXN0YXRpYyB1MzIgZ2VuOF9nZXRfc2Vxbm8oc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5n aW5lKQo+IC17Cj4gLQlyZXR1cm4gaW50ZWxfcmVhZF9zdGF0dXNfcGFnZShlbmdpbmUsIEk5MTVf R0VNX0hXU19JTkRFWCk7Cj4gLX0KPiAtCj4gLXN0YXRpYyB2b2lkIGdlbjhfc2V0X3NlcW5vKHN0 cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwgdTMyIHNlcW5vKQo+IC17Cj4gLQlpbnRlbF93 cml0ZV9zdGF0dXNfcGFnZShlbmdpbmUsIEk5MTVfR0VNX0hXU19JTkRFWCwgc2Vxbm8pOwo+IC19 Cj4gLQo+ICAgc3RhdGljIHZvaWQgYnh0X2Ffc2Vxbm9fYmFycmllcihzdHJ1Y3QgaW50ZWxfZW5n aW5lX2NzICplbmdpbmUpCj4gICB7Cj4gICAJLyoKPiBAQCAtMTczNywxNCArMTcyNyw2IEBAIHN0 YXRpYyB2b2lkIGJ4dF9hX3NlcW5vX2JhcnJpZXIoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5n aW5lKQo+ICAgCWludGVsX2ZsdXNoX3N0YXR1c19wYWdlKGVuZ2luZSwgSTkxNV9HRU1fSFdTX0lO REVYKTsKPiAgIH0KPgo+IC1zdGF0aWMgdm9pZCBieHRfYV9zZXRfc2Vxbm8oc3RydWN0IGludGVs X2VuZ2luZV9jcyAqZW5naW5lLCB1MzIgc2Vxbm8pCj4gLXsKPiAtCWludGVsX3dyaXRlX3N0YXR1 c19wYWdlKGVuZ2luZSwgSTkxNV9HRU1fSFdTX0lOREVYLCBzZXFubyk7Cj4gLQo+IC0JLyogU2Vl IGJ4dF9hX2dldF9zZXFubygpIGV4cGxhaW5pbmcgdGhlIHJlYXNvbiBmb3IgdGhlIGNsZmx1c2gu ICovCj4gLQlpbnRlbF9mbHVzaF9zdGF0dXNfcGFnZShlbmdpbmUsIEk5MTVfR0VNX0hXU19JTkRF WCk7Cj4gLX0KPiAtCj4gICAvKgo+ICAgICogUmVzZXJ2ZSBzcGFjZSBmb3IgMiBOT09QcyBhdCB0 aGUgZW5kIG9mIGVhY2ggcmVxdWVzdCB0byBiZQo+ICAgICogdXNlZCBhcyBhIHdvcmthcm91bmQg Zm9yIG5vdCBiZWluZyBhbGxvd2VkIHRvIGRvIGxpdGUKPiBAQCAtMTc3MCw3ICsxNzUyLDcgQEAg c3RhdGljIGludCBnZW44X2VtaXRfcmVxdWVzdChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3Qg KnJlcXVlc3QpCj4gICAJCQkJaW50ZWxfaHdzX3NlcW5vX2FkZHJlc3MocmVxdWVzdC0+ZW5naW5l KSB8Cj4gICAJCQkJTUlfRkxVU0hfRFdfVVNFX0dUVCk7Cj4gICAJaW50ZWxfbG9naWNhbF9yaW5n X2VtaXQocmluZ2J1ZiwgMCk7Cj4gLQlpbnRlbF9sb2dpY2FsX3JpbmdfZW1pdChyaW5nYnVmLCBp OTE1X2dlbV9yZXF1ZXN0X2dldF9zZXFubyhyZXF1ZXN0KSk7Cj4gKwlpbnRlbF9sb2dpY2FsX3Jp bmdfZW1pdChyaW5nYnVmLCByZXF1ZXN0LT5zZXFubyk7Cj4gICAJaW50ZWxfbG9naWNhbF9yaW5n X2VtaXQocmluZ2J1ZiwgTUlfVVNFUl9JTlRFUlJVUFQpOwo+ICAgCWludGVsX2xvZ2ljYWxfcmlu Z19lbWl0KHJpbmdidWYsIE1JX05PT1ApOwo+ICAgCXJldHVybiBpbnRlbF9sb2dpY2FsX3Jpbmdf YWR2YW5jZV9hbmRfc3VibWl0KHJlcXVlc3QpOwo+IEBAIC0xOTE2LDEyICsxODk4LDggQEAgbG9n aWNhbF9yaW5nX2RlZmF1bHRfdmZ1bmNzKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkK PiAgIAllbmdpbmUtPmlycV9nZXQgPSBnZW44X2xvZ2ljYWxfcmluZ19nZXRfaXJxOwo+ICAgCWVu Z2luZS0+aXJxX3B1dCA9IGdlbjhfbG9naWNhbF9yaW5nX3B1dF9pcnE7Cj4gICAJZW5naW5lLT5l bWl0X2JiX3N0YXJ0ID0gZ2VuOF9lbWl0X2JiX3N0YXJ0Owo+IC0JZW5naW5lLT5nZXRfc2Vxbm8g PSBnZW44X2dldF9zZXFubzsKPiAtCWVuZ2luZS0+c2V0X3NlcW5vID0gZ2VuOF9zZXRfc2Vxbm87 Cj4gLQlpZiAoSVNfQlhUX1JFVklEKGVuZ2luZS0+aTkxNSwgMCwgQlhUX1JFVklEX0ExKSkgewo+ ICsJaWYgKElTX0JYVF9SRVZJRChlbmdpbmUtPmk5MTUsIDAsIEJYVF9SRVZJRF9BMSkpCj4gICAJ CWVuZ2luZS0+aXJxX3NlcW5vX2JhcnJpZXIgPSBieHRfYV9zZXFub19iYXJyaWVyOwo+IC0JCWVu Z2luZS0+c2V0X3NlcW5vID0gYnh0X2Ffc2V0X3NlcW5vOwo+IC0JfQo+ICAgfQo+Cj4gICBzdGF0 aWMgaW5saW5lIHZvaWQKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf cmluZ2J1ZmZlci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jCj4g aW5kZXggOTVmMDQzNDVkM2VjLi5iYWM0OTY5MDJjNmQgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfcmluZ2J1ZmZlci5jCj4gQEAgLTEyODEsMTkgKzEyODEsMTcgQEAgc3RhdGljIGlu dCBnZW44X3Jjc19zaWduYWwoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpzaWduYWxsZXJf cmVxLAo+ICAgCQlyZXR1cm4gcmV0Owo+Cj4gICAJZm9yX2VhY2hfZW5naW5lX2lkKHdhaXRlciwg ZGV2X3ByaXYsIGlkKSB7Cj4gLQkJdTMyIHNlcW5vOwo+ICAgCQl1NjQgZ3R0X29mZnNldCA9IHNp Z25hbGxlci0+c2VtYXBob3JlLnNpZ25hbF9nZ3R0W2lkXTsKPiAgIAkJaWYgKGd0dF9vZmZzZXQg PT0gTUlfU0VNQVBIT1JFX1NZTkNfSU5WQUxJRCkKPiAgIAkJCWNvbnRpbnVlOwo+Cj4gLQkJc2Vx bm8gPSBpOTE1X2dlbV9yZXF1ZXN0X2dldF9zZXFubyhzaWduYWxsZXJfcmVxKTsKPiAgIAkJaW50 ZWxfcmluZ19lbWl0KHNpZ25hbGxlciwgR0ZYX09QX1BJUEVfQ09OVFJPTCg2KSk7Cj4gICAJCWlu dGVsX3JpbmdfZW1pdChzaWduYWxsZXIsIFBJUEVfQ09OVFJPTF9HTE9CQUxfR1RUX0lWQiB8Cj4g ICAJCQkJCSAgIFBJUEVfQ09OVFJPTF9RV19XUklURSB8Cj4gICAJCQkJCSAgIFBJUEVfQ09OVFJP TF9DU19TVEFMTCk7Cj4gICAJCWludGVsX3JpbmdfZW1pdChzaWduYWxsZXIsIGxvd2VyXzMyX2Jp dHMoZ3R0X29mZnNldCkpOwo+ICAgCQlpbnRlbF9yaW5nX2VtaXQoc2lnbmFsbGVyLCB1cHBlcl8z Ml9iaXRzKGd0dF9vZmZzZXQpKTsKPiAtCQlpbnRlbF9yaW5nX2VtaXQoc2lnbmFsbGVyLCBzZXFu byk7Cj4gKwkJaW50ZWxfcmluZ19lbWl0KHNpZ25hbGxlciwgc2lnbmFsbGVyX3JlcS0+c2Vxbm8p Owo+ICAgCQlpbnRlbF9yaW5nX2VtaXQoc2lnbmFsbGVyLCAwKTsKPiAgIAkJaW50ZWxfcmluZ19l bWl0KHNpZ25hbGxlciwgTUlfU0VNQVBIT1JFX1NJR05BTCB8Cj4gICAJCQkJCSAgIE1JX1NFTUFQ SE9SRV9UQVJHRVQod2FpdGVyLT5od19pZCkpOwo+IEBAIC0xMzIyLDE4ICsxMzIwLDE2IEBAIHN0 YXRpYyBpbnQgZ2VuOF94Y3Nfc2lnbmFsKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqc2ln bmFsbGVyX3JlcSwKPiAgIAkJcmV0dXJuIHJldDsKPgo+ICAgCWZvcl9lYWNoX2VuZ2luZV9pZCh3 YWl0ZXIsIGRldl9wcml2LCBpZCkgewo+IC0JCXUzMiBzZXFubzsKPiAgIAkJdTY0IGd0dF9vZmZz ZXQgPSBzaWduYWxsZXItPnNlbWFwaG9yZS5zaWduYWxfZ2d0dFtpZF07Cj4gICAJCWlmIChndHRf b2Zmc2V0ID09IE1JX1NFTUFQSE9SRV9TWU5DX0lOVkFMSUQpCj4gICAJCQljb250aW51ZTsKPgo+ IC0JCXNlcW5vID0gaTkxNV9nZW1fcmVxdWVzdF9nZXRfc2Vxbm8oc2lnbmFsbGVyX3JlcSk7Cj4g ICAJCWludGVsX3JpbmdfZW1pdChzaWduYWxsZXIsIChNSV9GTFVTSF9EVyArIDEpIHwKPiAgIAkJ CQkJICAgTUlfRkxVU0hfRFdfT1BfU1RPUkVEVyk7Cj4gICAJCWludGVsX3JpbmdfZW1pdChzaWdu YWxsZXIsIGxvd2VyXzMyX2JpdHMoZ3R0X29mZnNldCkgfAo+ICAgCQkJCQkgICBNSV9GTFVTSF9E V19VU0VfR1RUKTsKPiAgIAkJaW50ZWxfcmluZ19lbWl0KHNpZ25hbGxlciwgdXBwZXJfMzJfYml0 cyhndHRfb2Zmc2V0KSk7Cj4gLQkJaW50ZWxfcmluZ19lbWl0KHNpZ25hbGxlciwgc2Vxbm8pOwo+ ICsJCWludGVsX3JpbmdfZW1pdChzaWduYWxsZXIsIHNpZ25hbGxlcl9yZXEtPnNlcW5vKTsKPiAg IAkJaW50ZWxfcmluZ19lbWl0KHNpZ25hbGxlciwgTUlfU0VNQVBIT1JFX1NJR05BTCB8Cj4gICAJ CQkJCSAgIE1JX1NFTUFQSE9SRV9UQVJHRVQod2FpdGVyLT5od19pZCkpOwo+ICAgCQlpbnRlbF9y aW5nX2VtaXQoc2lnbmFsbGVyLCAwKTsKPiBAQCAtMTM2NCwxMSArMTM2MCw5IEBAIHN0YXRpYyBp bnQgZ2VuNl9zaWduYWwoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpzaWduYWxsZXJfcmVx LAo+ICAgCQlpOTE1X3JlZ190IG1ib3hfcmVnID0gc2lnbmFsbGVyLT5zZW1hcGhvcmUubWJveC5z aWduYWxbaWRdOwo+Cj4gICAJCWlmIChpOTE1X21taW9fcmVnX3ZhbGlkKG1ib3hfcmVnKSkgewo+ IC0JCQl1MzIgc2Vxbm8gPSBpOTE1X2dlbV9yZXF1ZXN0X2dldF9zZXFubyhzaWduYWxsZXJfcmVx KTsKPiAtCj4gICAJCQlpbnRlbF9yaW5nX2VtaXQoc2lnbmFsbGVyLCBNSV9MT0FEX1JFR0lTVEVS X0lNTSgxKSk7Cj4gICAJCQlpbnRlbF9yaW5nX2VtaXRfcmVnKHNpZ25hbGxlciwgbWJveF9yZWcp Owo+IC0JCQlpbnRlbF9yaW5nX2VtaXQoc2lnbmFsbGVyLCBzZXFubyk7Cj4gKwkJCWludGVsX3Jp bmdfZW1pdChzaWduYWxsZXIsIHNpZ25hbGxlcl9yZXEtPnNlcW5vKTsKPiAgIAkJfQo+ICAgCX0K Pgo+IEBAIC0xNDA0LDcgKzEzOTgsNyBAQCBnZW42X2FkZF9yZXF1ZXN0KHN0cnVjdCBkcm1faTkx NV9nZW1fcmVxdWVzdCAqcmVxKQo+ICAgCWludGVsX3JpbmdfZW1pdChlbmdpbmUsIE1JX1NUT1JF X0RXT1JEX0lOREVYKTsKPiAgIAlpbnRlbF9yaW5nX2VtaXQoZW5naW5lLAo+ICAgCQkJSTkxNV9H RU1fSFdTX0lOREVYIDw8IE1JX1NUT1JFX0RXT1JEX0lOREVYX1NISUZUKTsKPiAtCWludGVsX3Jp bmdfZW1pdChlbmdpbmUsIGk5MTVfZ2VtX3JlcXVlc3RfZ2V0X3NlcW5vKHJlcSkpOwo+ICsJaW50 ZWxfcmluZ19lbWl0KGVuZ2luZSwgcmVxLT5zZXFubyk7Cj4gICAJaW50ZWxfcmluZ19lbWl0KGVu Z2luZSwgTUlfVVNFUl9JTlRFUlJVUFQpOwo+ICAgCV9faW50ZWxfcmluZ19hZHZhbmNlKGVuZ2lu ZSk7Cj4KPiBAQCAtMTU0Myw3ICsxNTM3LDkgQEAgc3RhdGljIGludAo+ICAgcGNfcmVuZGVyX2Fk ZF9yZXF1ZXN0KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxKQo+ICAgewo+ICAgCXN0 cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSA9IHJlcS0+ZW5naW5lOwo+IC0JdTMyIHNjcmF0 Y2hfYWRkciA9IGVuZ2luZS0+c2NyYXRjaC5ndHRfb2Zmc2V0ICsgMiAqIENBQ0hFTElORV9CWVRF UzsKPiArCXUzMiBhZGRyID0gZW5naW5lLT5zdGF0dXNfcGFnZS5nZnhfYWRkciArCj4gKwkJKEk5 MTVfR0VNX0hXU19JTkRFWCA8PCBNSV9TVE9SRV9EV09SRF9JTkRFWF9TSElGVCk7Cj4gKwl1MzIg c2NyYXRjaF9hZGRyID0gYWRkcjsKPiAgIAlpbnQgcmV0OwoKQmVmb3JlIG15IHRpbWUuIDopCgpX aHkgd2FzIHRoaXMgY29kZSBmbHVzaGluZyBhbGwgdGhhdCBzcGFjZSBidXQgYWJvdmUgd2hlcmUg aXQgd2FzIAp3cml0dGluZyB0aGUgc2Vxbm8/CgpXaXRoIHRoaXMgY2hhbmdlIGl0IGlzIGZsdXNo aW5nIHRoZSBzZXFubyBhcmVhIGFzIHdlbGwuCgo+Cj4gICAJLyogRm9yIElyb25sYWtlLCBNSV9V U0VSX0lOVEVSUlVQVCB3YXMgZGVwcmVjYXRlZCBhbmQgYXBwYXJlbnRseQo+IEBAIC0xNTU5LDEy ICsxNTU1LDEyIEBAIHBjX3JlbmRlcl9hZGRfcmVxdWVzdChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3Jl cXVlc3QgKnJlcSkKPiAgIAkJcmV0dXJuIHJldDsKPgo+ICAgCWludGVsX3JpbmdfZW1pdChlbmdp bmUsCj4gLQkJCUdGWF9PUF9QSVBFX0NPTlRST0woNCkgfCBQSVBFX0NPTlRST0xfUVdfV1JJVEUg fAo+ICsJCQlHRlhfT1BfUElQRV9DT05UUk9MKDQpIHwKPiArCQkJUElQRV9DT05UUk9MX1FXX1dS SVRFIHwKPiAgIAkJCVBJUEVfQ09OVFJPTF9XUklURV9GTFVTSCB8Cj4gICAJCQlQSVBFX0NPTlRS T0xfVEVYVFVSRV9DQUNIRV9JTlZBTElEQVRFKTsKPiAtCWludGVsX3JpbmdfZW1pdChlbmdpbmUs Cj4gLQkJCWVuZ2luZS0+c2NyYXRjaC5ndHRfb2Zmc2V0IHwgUElQRV9DT05UUk9MX0dMT0JBTF9H VFQpOwo+IC0JaW50ZWxfcmluZ19lbWl0KGVuZ2luZSwgaTkxNV9nZW1fcmVxdWVzdF9nZXRfc2Vx bm8ocmVxKSk7Cj4gKwlpbnRlbF9yaW5nX2VtaXQoZW5naW5lLCBhZGRyIHwgUElQRV9DT05UUk9M X0dMT0JBTF9HVFQpOwo+ICsJaW50ZWxfcmluZ19lbWl0KGVuZ2luZSwgcmVxLT5zZXFubyk7Cj4g ICAJaW50ZWxfcmluZ19lbWl0KGVuZ2luZSwgMCk7Cj4gICAJUElQRV9DT05UUk9MX0ZMVVNIKGVu Z2luZSwgc2NyYXRjaF9hZGRyKTsKPiAgIAlzY3JhdGNoX2FkZHIgKz0gMiAqIENBQ0hFTElORV9C WVRFUzsgLyogd3JpdGUgdG8gc2VwYXJhdGUgY2FjaGVsaW5lcyAqLwo+IEBAIC0xNTc5LDEzICsx NTc1LDEyIEBAIHBjX3JlbmRlcl9hZGRfcmVxdWVzdChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVl c3QgKnJlcSkKPiAgIAlQSVBFX0NPTlRST0xfRkxVU0goZW5naW5lLCBzY3JhdGNoX2FkZHIpOwo+ Cj4gICAJaW50ZWxfcmluZ19lbWl0KGVuZ2luZSwKPiAtCQkJR0ZYX09QX1BJUEVfQ09OVFJPTCg0 KSB8IFBJUEVfQ09OVFJPTF9RV19XUklURSB8Cj4gKwkJICAgICAgIAlHRlhfT1BfUElQRV9DT05U Uk9MKDQpIHwgUElQRV9DT05UUk9MX1FXX1dSSVRFIHwKPiAgIAkJCVBJUEVfQ09OVFJPTF9XUklU RV9GTFVTSCB8Cj4gICAJCQlQSVBFX0NPTlRST0xfVEVYVFVSRV9DQUNIRV9JTlZBTElEQVRFIHwK PiAgIAkJCVBJUEVfQ09OVFJPTF9OT1RJRlkpOwo+IC0JaW50ZWxfcmluZ19lbWl0KGVuZ2luZSwK PiAtCQkJZW5naW5lLT5zY3JhdGNoLmd0dF9vZmZzZXQgfCBQSVBFX0NPTlRST0xfR0xPQkFMX0dU VCk7Cj4gLQlpbnRlbF9yaW5nX2VtaXQoZW5naW5lLCBpOTE1X2dlbV9yZXF1ZXN0X2dldF9zZXFu byhyZXEpKTsKPiArCWludGVsX3JpbmdfZW1pdChlbmdpbmUsIGFkZHIgfCBQSVBFX0NPTlRST0xf R0xPQkFMX0dUVCk7Cj4gKwlpbnRlbF9yaW5nX2VtaXQoZW5naW5lLCByZXEtPnNlcW5vKTsKPiAg IAlpbnRlbF9yaW5nX2VtaXQoZW5naW5lLCAwKTsKPiAgIAlfX2ludGVsX3JpbmdfYWR2YW5jZShl bmdpbmUpOwo+Cj4gQEAgLTE2MTcsMzAgKzE2MTIsNiBAQCBnZW42X3NlcW5vX2JhcnJpZXIoc3Ry dWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICAgCXNwaW5fdW5sb2NrX2lycSgmZGV2X3By aXYtPnVuY29yZS5sb2NrKTsKPiAgIH0KPgo+IC1zdGF0aWMgdTMyCj4gLXJpbmdfZ2V0X3NlcW5v KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAtewo+IC0JcmV0dXJuIGludGVsX3Jl YWRfc3RhdHVzX3BhZ2UoZW5naW5lLCBJOTE1X0dFTV9IV1NfSU5ERVgpOwo+IC19Cj4gLQo+IC1z dGF0aWMgdm9pZAo+IC1yaW5nX3NldF9zZXFubyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdp bmUsIHUzMiBzZXFubykKPiAtewo+IC0JaW50ZWxfd3JpdGVfc3RhdHVzX3BhZ2UoZW5naW5lLCBJ OTE1X0dFTV9IV1NfSU5ERVgsIHNlcW5vKTsKPiAtfQo+IC0KPiAtc3RhdGljIHUzMgo+IC1wY19y ZW5kZXJfZ2V0X3NlcW5vKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAtewo+IC0J cmV0dXJuIGVuZ2luZS0+c2NyYXRjaC5jcHVfcGFnZVswXTsKPiAtfQo+IC0KPiAtc3RhdGljIHZv aWQKPiAtcGNfcmVuZGVyX3NldF9zZXFubyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUs IHUzMiBzZXFubykKPiAtewo+IC0JZW5naW5lLT5zY3JhdGNoLmNwdV9wYWdlWzBdID0gc2Vxbm87 Cj4gLX0KPiAtCj4gICBzdGF0aWMgYm9vbAo+ICAgZ2VuNV9yaW5nX2dldF9pcnEoc3RydWN0IGlu dGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICAgewo+IEBAIC0xNzcwLDggKzE3NDEsOCBAQCBpOXh4 X2FkZF9yZXF1ZXN0KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxKQo+Cj4gICAJaW50 ZWxfcmluZ19lbWl0KGVuZ2luZSwgTUlfU1RPUkVfRFdPUkRfSU5ERVgpOwo+ICAgCWludGVsX3Jp bmdfZW1pdChlbmdpbmUsCj4gLQkJCUk5MTVfR0VNX0hXU19JTkRFWCA8PCBNSV9TVE9SRV9EV09S RF9JTkRFWF9TSElGVCk7Cj4gLQlpbnRlbF9yaW5nX2VtaXQoZW5naW5lLCBpOTE1X2dlbV9yZXF1 ZXN0X2dldF9zZXFubyhyZXEpKTsKPiArCQkgICAgICAgCUk5MTVfR0VNX0hXU19JTkRFWCA8PCBN SV9TVE9SRV9EV09SRF9JTkRFWF9TSElGVCk7Cj4gKwlpbnRlbF9yaW5nX2VtaXQoZW5naW5lLCBy ZXEtPnNlcW5vKTsKPiAgIAlpbnRlbF9yaW5nX2VtaXQoZW5naW5lLCBNSV9VU0VSX0lOVEVSUlVQ VCk7Cj4gICAJX19pbnRlbF9yaW5nX2FkdmFuY2UoZW5naW5lKTsKPgo+IEBAIC0yNTg4LDcgKzI1 NTksOSBAQCB2b2lkIGludGVsX3JpbmdfaW5pdF9zZXFubyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2Nz ICplbmdpbmUsIHUzMiBzZXFubykKPiAgIAltZW1zZXQoZW5naW5lLT5zZW1hcGhvcmUuc3luY19z ZXFubywgMCwKPiAgIAkgICAgICAgc2l6ZW9mKGVuZ2luZS0+c2VtYXBob3JlLnN5bmNfc2Vxbm8p KTsKPgo+IC0JZW5naW5lLT5zZXRfc2Vxbm8oZW5naW5lLCBzZXFubyk7Cj4gKwlpbnRlbF93cml0 ZV9zdGF0dXNfcGFnZShlbmdpbmUsIEk5MTVfR0VNX0hXU19JTkRFWCwgc2Vxbm8pOwo+ICsJaWYg KGVuZ2luZS0+aXJxX3NlcW5vX2JhcnJpZXIpCj4gKwkJZW5naW5lLT5pcnFfc2Vxbm9fYmFycmll cihlbmdpbmUpOwo+ICAgCWVuZ2luZS0+bGFzdF9zdWJtaXR0ZWRfc2Vxbm8gPSBzZXFubzsKPgo+ ICAgCWVuZ2luZS0+aGFuZ2NoZWNrLnNlcW5vID0gc2Vxbm87Cj4gQEAgLTI4MzAsOCArMjgwMyw2 IEBAIGludCBpbnRlbF9pbml0X3JlbmRlcl9yaW5nX2J1ZmZlcihzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2KQo+ICAgCQllbmdpbmUtPmlycV9nZXQgPSBnZW44X3JpbmdfZ2V0X2lycTsKPiAgIAkJZW5n aW5lLT5pcnFfcHV0ID0gZ2VuOF9yaW5nX3B1dF9pcnE7Cj4gICAJCWVuZ2luZS0+aXJxX2VuYWJs ZV9tYXNrID0gR1RfUkVOREVSX1VTRVJfSU5URVJSVVBUOwo+IC0JCWVuZ2luZS0+Z2V0X3NlcW5v ID0gcmluZ19nZXRfc2Vxbm87Cj4gLQkJZW5naW5lLT5zZXRfc2Vxbm8gPSByaW5nX3NldF9zZXFu bzsKPiAgIAkJaWYgKGk5MTVfc2VtYXBob3JlX2lzX2VuYWJsZWQoZGV2X3ByaXYpKSB7Cj4gICAJ CQlXQVJOX09OKCFkZXZfcHJpdi0+c2VtYXBob3JlX29iaik7Cj4gICAJCQllbmdpbmUtPnNlbWFw aG9yZS5zeW5jX3RvID0gZ2VuOF9yaW5nX3N5bmM7Cj4gQEAgLTI4NDgsOCArMjgxOSw2IEBAIGlu dCBpbnRlbF9pbml0X3JlbmRlcl9yaW5nX2J1ZmZlcihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ ICAgCQllbmdpbmUtPmlycV9wdXQgPSBnZW42X3JpbmdfcHV0X2lycTsKPiAgIAkJZW5naW5lLT5p cnFfZW5hYmxlX21hc2sgPSBHVF9SRU5ERVJfVVNFUl9JTlRFUlJVUFQ7Cj4gICAJCWVuZ2luZS0+ aXJxX3NlcW5vX2JhcnJpZXIgPSBnZW42X3NlcW5vX2JhcnJpZXI7Cj4gLQkJZW5naW5lLT5nZXRf c2Vxbm8gPSByaW5nX2dldF9zZXFubzsKPiAtCQllbmdpbmUtPnNldF9zZXFubyA9IHJpbmdfc2V0 X3NlcW5vOwo+ICAgCQlpZiAoaTkxNV9zZW1hcGhvcmVfaXNfZW5hYmxlZChkZXZfcHJpdikpIHsK PiAgIAkJCWVuZ2luZS0+c2VtYXBob3JlLnN5bmNfdG8gPSBnZW42X3Jpbmdfc3luYzsKPiAgIAkJ CWVuZ2luZS0+c2VtYXBob3JlLnNpZ25hbCA9IGdlbjZfc2lnbmFsOwo+IEBAIC0yODc0LDggKzI4 NDMsNiBAQCBpbnQgaW50ZWxfaW5pdF9yZW5kZXJfcmluZ19idWZmZXIoc3RydWN0IGRybV9kZXZp Y2UgKmRldikKPiAgIAl9IGVsc2UgaWYgKElTX0dFTjUoZGV2X3ByaXYpKSB7Cj4gICAJCWVuZ2lu ZS0+YWRkX3JlcXVlc3QgPSBwY19yZW5kZXJfYWRkX3JlcXVlc3Q7Cj4gICAJCWVuZ2luZS0+Zmx1 c2ggPSBnZW40X3JlbmRlcl9yaW5nX2ZsdXNoOwo+IC0JCWVuZ2luZS0+Z2V0X3NlcW5vID0gcGNf cmVuZGVyX2dldF9zZXFubzsKPiAtCQllbmdpbmUtPnNldF9zZXFubyA9IHBjX3JlbmRlcl9zZXRf c2Vxbm87Cj4gICAJCWVuZ2luZS0+aXJxX2dldCA9IGdlbjVfcmluZ19nZXRfaXJxOwo+ICAgCQll bmdpbmUtPmlycV9wdXQgPSBnZW41X3JpbmdfcHV0X2lycTsKPiAgIAkJZW5naW5lLT5pcnFfZW5h YmxlX21hc2sgPSBHVF9SRU5ERVJfVVNFUl9JTlRFUlJVUFQgfAo+IEBAIC0yODg2LDggKzI4NTMs NiBAQCBpbnQgaW50ZWxfaW5pdF9yZW5kZXJfcmluZ19idWZmZXIoc3RydWN0IGRybV9kZXZpY2Ug KmRldikKPiAgIAkJCWVuZ2luZS0+Zmx1c2ggPSBnZW4yX3JlbmRlcl9yaW5nX2ZsdXNoOwo+ICAg CQllbHNlCj4gICAJCQllbmdpbmUtPmZsdXNoID0gZ2VuNF9yZW5kZXJfcmluZ19mbHVzaDsKPiAt CQllbmdpbmUtPmdldF9zZXFubyA9IHJpbmdfZ2V0X3NlcW5vOwo+IC0JCWVuZ2luZS0+c2V0X3Nl cW5vID0gcmluZ19zZXRfc2Vxbm87Cj4gICAJCWlmIChJU19HRU4yKGRldl9wcml2KSkgewo+ICAg CQkJZW5naW5lLT5pcnFfZ2V0ID0gaTh4eF9yaW5nX2dldF9pcnE7Cj4gICAJCQllbmdpbmUtPmly cV9wdXQgPSBpOHh4X3JpbmdfcHV0X2lycTsKPiBAQCAtMjk2NSw4ICsyOTMwLDYgQEAgaW50IGlu dGVsX2luaXRfYnNkX3JpbmdfYnVmZmVyKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gICAJCWVu Z2luZS0+Zmx1c2ggPSBnZW42X2JzZF9yaW5nX2ZsdXNoOwo+ICAgCQllbmdpbmUtPmFkZF9yZXF1 ZXN0ID0gZ2VuNl9hZGRfcmVxdWVzdDsKPiAgIAkJZW5naW5lLT5pcnFfc2Vxbm9fYmFycmllciA9 IGdlbjZfc2Vxbm9fYmFycmllcjsKPiAtCQllbmdpbmUtPmdldF9zZXFubyA9IHJpbmdfZ2V0X3Nl cW5vOwo+IC0JCWVuZ2luZS0+c2V0X3NlcW5vID0gcmluZ19zZXRfc2Vxbm87Cj4gICAJCWlmIChJ TlRFTF9HRU4oZGV2X3ByaXYpID49IDgpIHsKPiAgIAkJCWVuZ2luZS0+aXJxX2VuYWJsZV9tYXNr ID0KPiAgIAkJCQlHVF9SRU5ERVJfVVNFUl9JTlRFUlJVUFQgPDwgR0VOOF9WQ1MxX0lSUV9TSElG VDsKPiBAQCAtMzAwNCw4ICsyOTY3LDYgQEAgaW50IGludGVsX2luaXRfYnNkX3JpbmdfYnVmZmVy KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gICAJCWVuZ2luZS0+bW1pb19iYXNlID0gQlNEX1JJ TkdfQkFTRTsKPiAgIAkJZW5naW5lLT5mbHVzaCA9IGJzZF9yaW5nX2ZsdXNoOwo+ICAgCQllbmdp bmUtPmFkZF9yZXF1ZXN0ID0gaTl4eF9hZGRfcmVxdWVzdDsKPiAtCQllbmdpbmUtPmdldF9zZXFu byA9IHJpbmdfZ2V0X3NlcW5vOwo+IC0JCWVuZ2luZS0+c2V0X3NlcW5vID0gcmluZ19zZXRfc2Vx bm87Cj4gICAJCWlmIChJU19HRU41KGRldl9wcml2KSkgewo+ICAgCQkJZW5naW5lLT5pcnFfZW5h YmxlX21hc2sgPSBJTEtfQlNEX1VTRVJfSU5URVJSVVBUOwo+ICAgCQkJZW5naW5lLT5pcnFfZ2V0 ID0gZ2VuNV9yaW5nX2dldF9pcnE7Cj4gQEAgLTMwNDAsOCArMzAwMSw2IEBAIGludCBpbnRlbF9p bml0X2JzZDJfcmluZ19idWZmZXIoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAgIAllbmdpbmUt PmZsdXNoID0gZ2VuNl9ic2RfcmluZ19mbHVzaDsKPiAgIAllbmdpbmUtPmFkZF9yZXF1ZXN0ID0g Z2VuNl9hZGRfcmVxdWVzdDsKPiAgIAllbmdpbmUtPmlycV9zZXFub19iYXJyaWVyID0gZ2VuNl9z ZXFub19iYXJyaWVyOwo+IC0JZW5naW5lLT5nZXRfc2Vxbm8gPSByaW5nX2dldF9zZXFubzsKPiAt CWVuZ2luZS0+c2V0X3NlcW5vID0gcmluZ19zZXRfc2Vxbm87Cj4gICAJZW5naW5lLT5pcnFfZW5h YmxlX21hc2sgPQo+ICAgCQkJR1RfUkVOREVSX1VTRVJfSU5URVJSVVBUIDw8IEdFTjhfVkNTMl9J UlFfU0hJRlQ7Cj4gICAJZW5naW5lLT5pcnFfZ2V0ID0gZ2VuOF9yaW5nX2dldF9pcnE7Cj4gQEAg LTMwNzMsOCArMzAzMiw2IEBAIGludCBpbnRlbF9pbml0X2JsdF9yaW5nX2J1ZmZlcihzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2KQo+ICAgCWVuZ2luZS0+Zmx1c2ggPSBnZW42X3JpbmdfZmx1c2g7Cj4g ICAJZW5naW5lLT5hZGRfcmVxdWVzdCA9IGdlbjZfYWRkX3JlcXVlc3Q7Cj4gICAJZW5naW5lLT5p cnFfc2Vxbm9fYmFycmllciA9IGdlbjZfc2Vxbm9fYmFycmllcjsKPiAtCWVuZ2luZS0+Z2V0X3Nl cW5vID0gcmluZ19nZXRfc2Vxbm87Cj4gLQllbmdpbmUtPnNldF9zZXFubyA9IHJpbmdfc2V0X3Nl cW5vOwo+ICAgCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDgpIHsKPiAgIAkJZW5naW5lLT5p cnFfZW5hYmxlX21hc2sgPQo+ICAgCQkJR1RfUkVOREVSX1VTRVJfSU5URVJSVVBUIDw8IEdFTjhf QkNTX0lSUV9TSElGVDsKPiBAQCAtMzEzMyw4ICszMDkwLDYgQEAgaW50IGludGVsX2luaXRfdmVi b3hfcmluZ19idWZmZXIoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAgIAllbmdpbmUtPmZsdXNo ID0gZ2VuNl9yaW5nX2ZsdXNoOwo+ICAgCWVuZ2luZS0+YWRkX3JlcXVlc3QgPSBnZW42X2FkZF9y ZXF1ZXN0Owo+ICAgCWVuZ2luZS0+aXJxX3NlcW5vX2JhcnJpZXIgPSBnZW42X3NlcW5vX2JhcnJp ZXI7Cj4gLQllbmdpbmUtPmdldF9zZXFubyA9IHJpbmdfZ2V0X3NlcW5vOwo+IC0JZW5naW5lLT5z ZXRfc2Vxbm8gPSByaW5nX3NldF9zZXFubzsKPgo+ICAgCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYp ID49IDgpIHsKPiAgIAkJZW5naW5lLT5pcnFfZW5hYmxlX21hc2sgPQo+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmggYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9yaW5nYnVmZmVyLmgKPiBpbmRleCAwNjEwODgzNjBiODAuLjc4NWM5ZTUzMTJm ZiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmgK PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmgKPiBAQCAtMjE5 LDkgKzIxOSw2IEBAIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mgewo+ICAgCSAqIG1vbm90b25pYywg ZXZlbiBpZiBub3QgY29oZXJlbnQuCj4gICAJICovCj4gICAJdm9pZAkJKCppcnFfc2Vxbm9fYmFy cmllcikoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZyk7Cj4gLQl1MzIJCSgqZ2V0X3NlcW5v KShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nKTsKPiAtCXZvaWQJCSgqc2V0X3NlcW5vKShz dHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nLAo+IC0JCQkJICAgICB1MzIgc2Vxbm8pOwo+ICAg CWludAkJKCpkaXNwYXRjaF9leGVjYnVmZmVyKShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3Qg KnJlcSwKPiAgIAkJCQkJICAgICAgIHU2NCBvZmZzZXQsIHUzMiBsZW5ndGgsCj4gICAJCQkJCSAg ICAgICB1bnNpZ25lZCBkaXNwYXRjaF9mbGFncyk7Cj4gQEAgLTQ5Nyw2ICs0OTQsMTAgQEAgaW50 IGludGVsX2luaXRfYmx0X3JpbmdfYnVmZmVyKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwo+ICAg aW50IGludGVsX2luaXRfdmVib3hfcmluZ19idWZmZXIoc3RydWN0IGRybV9kZXZpY2UgKmRldik7 Cj4KPiAgIHU2NCBpbnRlbF9yaW5nX2dldF9hY3RpdmVfaGVhZChzdHJ1Y3QgaW50ZWxfZW5naW5l X2NzICplbmdpbmUpOwo+ICtzdGF0aWMgaW5saW5lIHUzMiBpbnRlbF9lbmdpbmVfZ2V0X3NlcW5v KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiArewo+ICsJcmV0dXJuIGludGVsX3Jl YWRfc3RhdHVzX3BhZ2UoZW5naW5lLCBJOTE1X0dFTV9IV1NfSU5ERVgpOwo+ICt9Cj4KPiAgIGlu dCBpbml0X3dvcmthcm91bmRzX3Jpbmcoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKTsK Pgo+CgpSZWdhcmRzLAoKVHZydGtvCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJl ZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGlu Zm8vaW50ZWwtZ2Z4Cg==