From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mika Kuoppala Subject: Re: [PATCH 021/190] drm/i915: Use HWS for seqno tracking everywhere Date: Tue, 12 Jan 2016 12:05:06 +0200 Message-ID: <87k2nfkt9p.fsf@gaia.fi.intel.com> References: <1452503961-14837-1-git-send-email-chris@chris-wilson.co.uk> <1452503961-14837-21-git-send-email-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTP id 7B06E6E2B8 for ; Tue, 12 Jan 2016 02:07:08 -0800 (PST) In-Reply-To: <1452503961-14837-21-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 Q2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+IHdyaXRlczoKCj4gQnkgdXNp bmcgdGhlIHNhbWUgYWRkcmVzcyBmb3Igc3RvcmluZyB0aGUgSFdTIG9uIGV2ZXJ5IHBsYXRmb3Jt LCB3ZSBjYW4KPiByZW1vdmUgdGhlIHBsYXRmb3JtIHNwZWNpZmljIHZmdW5jcyBhbmQgcmVkdWNl IHRoZSBnZXQtc2Vxbm8gcm91dGluZSB0bwo+IGEgc2luZ2xlIHJlYWQgb2YgYSBjYWNoZWQgbWVt b3J5IGxvY2F0aW9uLgo+Cj4gU2lnbmVkLW9mZi1ieTogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJp cy13aWxzb24uY28udWs+Cj4gLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdm cy5jICAgICAgfCAxMCArKy0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggICAg ICAgICAgfCAgNCArLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dwdV9lcnJvci5jICAg IHwgIDIgKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEuYyAgICAgICAgICB8ICA0 ICstCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdHJhY2UuaCAgICAgICAgfCAgMiArLQo+ ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9icmVhZGNydW1icy5jIHwgIDQgKy0KPiAgZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMgICAgICAgICB8IDQ2ICsrLS0tLS0tLS0tLS0t LS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuYyAgfCA4NiArKysr KysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9yaW5nYnVmZmVyLmggIHwgIDcgKy0tCj4gIDkgZmlsZXMgY2hhbmdlZCwgNDMgaW5zZXJ0aW9u cygrKSwgMTIyIGRlbGV0aW9ucygtKQo+Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZGVidWdmcy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMK PiBpbmRleCBkMDllNDg0NTVkY2IuLjVhNzA2YzcwMDY4NCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZGVidWdmcy5jCj4gQEAgLTYwMCw3ICs2MDAsNyBAQCBzdGF0aWMgaW50IGk5MTVfZ2Vt X3BhZ2VmbGlwX2luZm8oc3RydWN0IHNlcV9maWxlICptLCB2b2lkICpkYXRhKQo+ICAJCQkJCSAg IHJpbmctPm5hbWUsCj4gIAkJCQkJICAgaTkxNV9nZW1fcmVxdWVzdF9nZXRfc2Vxbm8od29yay0+ ZmxpcF9xdWV1ZWRfcmVxKSwKPiAgCQkJCQkgICBkZXZfcHJpdi0+bmV4dF9zZXFubywKPiAtCQkJ CQkgICByaW5nLT5nZXRfc2Vxbm8ocmluZyksCj4gKwkJCQkJICAgaW50ZWxfcmluZ19nZXRfc2Vx bm8ocmluZyksCj4gIAkJCQkJICAgaTkxNV9nZW1fcmVxdWVzdF9jb21wbGV0ZWQod29yay0+Zmxp cF9xdWV1ZWRfcmVxKSk7Cj4gIAkJCX0gZWxzZQo+ICAJCQkJc2VxX3ByaW50ZihtLCAiRmxpcCBu b3QgYXNzb2NpYXRlZCB3aXRoIGFueSByaW5nXG4iKTsKPiBAQCAtNzMyLDEwICs3MzIsOCBAQCBz dGF0aWMgdm9pZCBpOTE1X3Jpbmdfc2Vxbm9faW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sCj4gIHsK PiAgCXN0cnVjdCByYl9ub2RlICpyYjsKPiAgCj4gLQlpZiAocmluZy0+Z2V0X3NlcW5vKSB7Cj4g LQkJc2VxX3ByaW50ZihtLCAiQ3VycmVudCBzZXF1ZW5jZSAoJXMpOiAleFxuIiwKPiAtCQkJICAg cmluZy0+bmFtZSwgcmluZy0+Z2V0X3NlcW5vKHJpbmcpKTsKPiAtCX0KPiArCXNlcV9wcmludGYo bSwgIkN1cnJlbnQgc2VxdWVuY2UgKCVzKTogJXhcbiIsCj4gKwkJICAgcmluZy0+bmFtZSwgaW50 ZWxfcmluZ19nZXRfc2Vxbm8ocmluZykpOwo+ICAKPiAgCXNwaW5fbG9jaygmcmluZy0+YnJlYWRj cnVtYnMubG9jayk7Cj4gIAlmb3IgKHJiID0gcmJfZmlyc3QoJnJpbmctPmJyZWFkY3J1bWJzLndh aXRlcnMpOwo+IEBAIC0xMzU1LDcgKzEzNTMsNyBAQCBzdGF0aWMgaW50IGk5MTVfaGFuZ2NoZWNr X2luZm8oc3RydWN0IHNlcV9maWxlICptLCB2b2lkICp1bnVzZWQpCj4gIAo+ICAJZm9yX2VhY2hf cmluZyhyaW5nLCBkZXZfcHJpdiwgaSkgewo+ICAJCWFjdGhkW2ldID0gaW50ZWxfcmluZ19nZXRf YWN0aXZlX2hlYWQocmluZyk7Cj4gLQkJc2Vxbm9baV0gPSByaW5nLT5nZXRfc2Vxbm8ocmluZyk7 Cj4gKwkJc2Vxbm9baV0gPSBpbnRlbF9yaW5nX2dldF9zZXFubyhyaW5nKTsKPiAgCX0KPiAgCj4g IAlpOTE1X2dldF9leHRyYV9pbnN0ZG9uZShkZXYsIGluc3Rkb25lKTsKPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZHJ2LmgKPiBpbmRleCA0NGQ0NjAxOGVlMTMuLmZjZWRjYmM1MDgzNCAxMDA2NDQKPiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9kcnYuaAo+IEBAIC0yOTcxLDEzICsyOTcxLDEzIEBAIGk5MTVfc2Vxbm9fcGFz c2VkKHVpbnQzMl90IHNlcTEsIHVpbnQzMl90IHNlcTIpCj4gIAo+ICBzdGF0aWMgaW5saW5lIGJv b2wgaTkxNV9nZW1fcmVxdWVzdF9zdGFydGVkKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAq cmVxKQo+ICB7Cj4gLQlyZXR1cm4gaTkxNV9zZXFub19wYXNzZWQocmVxLT5yaW5nLT5nZXRfc2Vx bm8ocmVxLT5yaW5nKSwKPiArCXJldHVybiBpOTE1X3NlcW5vX3Bhc3NlZChpbnRlbF9yaW5nX2dl dF9zZXFubyhyZXEtPnJpbmcpLAo+ICAJCQkJIHJlcS0+cHJldmlvdXNfc2Vxbm8pOwo+ICB9Cj4g IAo+ICBzdGF0aWMgaW5saW5lIGJvb2wgaTkxNV9nZW1fcmVxdWVzdF9jb21wbGV0ZWQoc3RydWN0 IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEpCj4gIHsKPiAtCXJldHVybiBpOTE1X3NlcW5vX3Bh c3NlZChyZXEtPnJpbmctPmdldF9zZXFubyhyZXEtPnJpbmcpLAo+ICsJcmV0dXJuIGk5MTVfc2Vx bm9fcGFzc2VkKGludGVsX3JpbmdfZ2V0X3NlcW5vKHJlcS0+cmluZyksCj4gIAkJCQkgcmVxLT5z ZXFubyk7Cj4gIH0KPiAgCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf Z3B1X2Vycm9yLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dwdV9lcnJvci5jCj4gaW5k ZXggMDFkMDIwNmNhNGRkLi4zZTEzN2ZjNzAxY2YgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9ncHVfZXJyb3IuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZ3B1X2Vycm9yLmMKPiBAQCAtOTAzLDcgKzkwMyw3IEBAIHN0YXRpYyB2b2lkIGk5MTVfcmVj b3JkX3Jpbmdfc3RhdGUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAgCWVyaW5nLT53YWl0aW5n ID0gaW50ZWxfZW5naW5lX2hhc193YWl0ZXIocmluZyk7Cj4gIAllcmluZy0+aW5zdHBtID0gSTkx NV9SRUFEKFJJTkdfSU5TVFBNKHJpbmctPm1taW9fYmFzZSkpOwo+ICAJZXJpbmctPmFjdGhkID0g aW50ZWxfcmluZ19nZXRfYWN0aXZlX2hlYWQocmluZyk7Cj4gLQllcmluZy0+c2Vxbm8gPSByaW5n LT5nZXRfc2Vxbm8ocmluZyk7Cj4gKwllcmluZy0+c2Vxbm8gPSBpbnRlbF9yaW5nX2dldF9zZXFu byhyaW5nKTsKPiAgCWVyaW5nLT5zdGFydCA9IEk5MTVfUkVBRF9TVEFSVChyaW5nKTsKPiAgCWVy aW5nLT5oZWFkID0gSTkxNV9SRUFEX0hFQUQocmluZyk7Cj4gIAllcmluZy0+dGFpbCA9IEk5MTVf UkVBRF9UQUlMKHJpbmcpOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2lycS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEuYwo+IGluZGV4IGQ3MzY2OTc4 MzA0NS4uNjI3YzdmYjZhYTliIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfaXJxLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2lycS5jCj4gQEAgLTI5 MDMsNyArMjkwMyw3IEBAIHN0YXRpYyBpbnQgc2VtYXBob3JlX3Bhc3NlZChzdHJ1Y3QgaW50ZWxf ZW5naW5lX2NzICpyaW5nKQo+ICAJaWYgKHNpZ25hbGxlci0+aGFuZ2NoZWNrLmRlYWRsb2NrID49 IEk5MTVfTlVNX1JJTkdTKQo+ICAJCXJldHVybiAtMTsKPiAgCj4gLQlpZiAoaTkxNV9zZXFub19w YXNzZWQoc2lnbmFsbGVyLT5nZXRfc2Vxbm8oc2lnbmFsbGVyKSwgc2Vxbm8pKQo+ICsJaWYgKGk5 MTVfc2Vxbm9fcGFzc2VkKGludGVsX3JpbmdfZ2V0X3NlcW5vKHNpZ25hbGxlciksIHNlcW5vKSkK PiAgCQlyZXR1cm4gMTsKPiAgCj4gIAkvKiBjdXJzb3J5IGNoZWNrIGZvciBhbiB1bmtpY2thYmxl IGRlYWRsb2NrICovCj4gQEAgLTMwNjgsNyArMzA2OCw3IEBAIHN0YXRpYyB2b2lkIGk5MTVfaGFu Z2NoZWNrX2VsYXBzZWQoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQo+ICAJCXNlbWFwaG9yZV9j bGVhcl9kZWFkbG9ja3MoZGV2X3ByaXYpOwo+ICAKPiAgCQlhY3RoZCA9IGludGVsX3JpbmdfZ2V0 X2FjdGl2ZV9oZWFkKHJpbmcpOwo+IC0JCXNlcW5vID0gcmluZy0+Z2V0X3NlcW5vKHJpbmcpOwo+ ICsJCXNlcW5vID0gaW50ZWxfcmluZ19nZXRfc2Vxbm8ocmluZyk7Cj4gIAo+ICAJCWlmIChyaW5n LT5oYW5nY2hlY2suc2Vxbm8gPT0gc2Vxbm8pIHsKPiAgCQkJaWYgKHJpbmdfaWRsZShyaW5nLCBz ZXFubykpIHsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV90cmFjZS5o IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV90cmFjZS5oCj4gaW5kZXggY2ZiNWY3OGE2ZTg0 Li5lZmNhNzViY2FjZTMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV90 cmFjZS5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV90cmFjZS5oCj4gQEAgLTU3 Myw3ICs1NzMsNyBAQCBUUkFDRV9FVkVOVChpOTE1X2dlbV9yZXF1ZXN0X25vdGlmeSwKPiAgCSAg ICBUUF9mYXN0X2Fzc2lnbigKPiAgCQkJICAgX19lbnRyeS0+ZGV2ID0gcmluZy0+ZGV2LT5wcmlt YXJ5LT5pbmRleDsKPiAgCQkJICAgX19lbnRyeS0+cmluZyA9IHJpbmctPmlkOwo+IC0JCQkgICBf X2VudHJ5LT5zZXFubyA9IHJpbmctPmdldF9zZXFubyhyaW5nKTsKPiArCQkJICAgX19lbnRyeS0+ c2Vxbm8gPSBpbnRlbF9yaW5nX2dldF9zZXFubyhyaW5nKTsKPiAgCQkJICAgKSwKPiAgCj4gIAkg ICAgVFBfcHJpbnRrKCJkZXY9JXUsIHJpbmc9JXUsIHNlcW5vPSV1IiwKPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYnJlYWRjcnVtYnMuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2JyZWFkY3J1bWJzLmMKPiBpbmRleCAxMGIwYWRkNTRhY2YuLmY2NmFjZjgy MGM0MCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9icmVhZGNydW1i cy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYnJlYWRjcnVtYnMuYwo+IEBA IC0xMjcsNyArMTI3LDcgQEAgYm9vbCBpbnRlbF9lbmdpbmVfYWRkX3dhaXQoc3RydWN0IGludGVs X2VuZ2luZV9jcyAqZW5naW5lLAo+ICAJCQkgICBzdHJ1Y3QgaW50ZWxfd2FpdCAqd2FpdCkKPiAg ewo+ICAJc3RydWN0IGludGVsX2JyZWFkY3J1bWJzICpiID0gJmVuZ2luZS0+YnJlYWRjcnVtYnM7 Cj4gLQl1MzIgc2Vxbm8gPSBlbmdpbmUtPmdldF9zZXFubyhlbmdpbmUpOwo+ICsJdTMyIHNlcW5v ID0gaW50ZWxfcmluZ19nZXRfc2Vxbm8oZW5naW5lKTsKPiAgCXN0cnVjdCByYl9ub2RlICoqcCwg KnBhcmVudCwgKmNvbXBsZXRlZDsKPiAgCWJvb2wgZmlyc3Q7Cj4gIAo+IEBAIC0yNjksNyArMjY5 LDcgQEAgdm9pZCBpbnRlbF9lbmdpbmVfcmVtb3ZlX3dhaXQoc3RydWN0IGludGVsX2VuZ2luZV9j cyAqZW5naW5lLAo+ICAJCQkgKiB0aGUgZmlyc3Rfd2FpdGVyLiBUaGlzIGlzIHVuZGVzaXJhYmxl IGlmIHRoYXQKPiAgCQkJICogd2FpdGVyIGlzIGEgaGlnaCBwcmlvcml0eSB0YXNrLgo+ICAJCQkg Ki8KPiAtCQkJdTMyIHNlcW5vID0gZW5naW5lLT5nZXRfc2Vxbm8oZW5naW5lKTsKPiArCQkJdTMy IHNlcW5vID0gaW50ZWxfcmluZ19nZXRfc2Vxbm8oZW5naW5lKTsKPiAgCQkJd2hpbGUgKGk5MTVf c2Vxbm9fcGFzc2VkKHNlcW5vLAo+ICAJCQkJCQkgdG9fd2FpdChuZXh0KS0+c2Vxbm8pKSB7Cj4g IAkJCQlzdHJ1Y3QgcmJfbm9kZSAqbiA9IHJiX25leHQobmV4dCk7Cj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfbHJjLmMKPiBpbmRleCAzMzNlOTViZGE3OGEuLmFkNTFiMWZjMzdjZCAxMDA2NDQKPiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2xyYy5jCj4gQEAgLTE3NzUsMTYgKzE3NzUsNiBAQCBzdGF0aWMgaW50IGdl bjhfZW1pdF9mbHVzaF9yZW5kZXIoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXF1ZXN0 LAo+ICAJcmV0dXJuIDA7Cj4gIH0KPiAgCj4gLXN0YXRpYyB1MzIgZ2VuOF9nZXRfc2Vxbm8oc3Ry dWN0IGludGVsX2VuZ2luZV9jcyAqcmluZykKPiAtewo+IC0JcmV0dXJuIGludGVsX3JlYWRfc3Rh dHVzX3BhZ2UocmluZywgSTkxNV9HRU1fSFdTX0lOREVYKTsKPiAtfQo+IC0KPiAtc3RhdGljIHZv aWQgZ2VuOF9zZXRfc2Vxbm8oc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZywgdTMyIHNlcW5v KQo+IC17Cj4gLQlpbnRlbF93cml0ZV9zdGF0dXNfcGFnZShyaW5nLCBJOTE1X0dFTV9IV1NfSU5E RVgsIHNlcW5vKTsKPiAtfQo+IC0KPiAgc3RhdGljIHZvaWQgYnh0X3NlcW5vX2JhcnJpZXIoc3Ry dWN0IGludGVsX2VuZ2luZV9jcyAqcmluZykKPiAgewo+ICAJLyoKPiBAQCAtMTgwMCwxNCArMTc5 MCw2IEBAIHN0YXRpYyB2b2lkIGJ4dF9zZXFub19iYXJyaWVyKHN0cnVjdCBpbnRlbF9lbmdpbmVf Y3MgKnJpbmcpCj4gIAlpbnRlbF9mbHVzaF9zdGF0dXNfcGFnZShyaW5nLCBJOTE1X0dFTV9IV1Nf SU5ERVgpOwo+ICB9Cj4gIAo+IC1zdGF0aWMgdm9pZCBieHRfYV9zZXRfc2Vxbm8oc3RydWN0IGlu dGVsX2VuZ2luZV9jcyAqcmluZywgdTMyIHNlcW5vKQo+IC17Cj4gLQlpbnRlbF93cml0ZV9zdGF0 dXNfcGFnZShyaW5nLCBJOTE1X0dFTV9IV1NfSU5ERVgsIHNlcW5vKTsKPiAtCj4gLQkvKiBTZWUg Ynh0X2FfZ2V0X3NlcW5vKCkgZXhwbGFpbmluZyB0aGUgcmVhc29uIGZvciB0aGUgY2xmbHVzaC4g Ki8KPiAtCWludGVsX2ZsdXNoX3N0YXR1c19wYWdlKHJpbmcsIEk5MTVfR0VNX0hXU19JTkRFWCk7 Cj4gLX0KPiAtCj4gIHN0YXRpYyBpbnQgZ2VuOF9lbWl0X3JlcXVlc3Qoc3RydWN0IGRybV9pOTE1 X2dlbV9yZXF1ZXN0ICpyZXF1ZXN0KQo+ICB7Cj4gIAlzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAq cmluZ2J1ZiA9IHJlcXVlc3QtPnJpbmdidWY7Cj4gQEAgLTE4MzIsNyArMTgxNCw3IEBAIHN0YXRp YyBpbnQgZ2VuOF9lbWl0X3JlcXVlc3Qoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXF1 ZXN0KQo+ICAJCQkJKHJpbmctPnN0YXR1c19wYWdlLmdmeF9hZGRyICsKPiAgCQkJCShJOTE1X0dF TV9IV1NfSU5ERVggPDwgTUlfU1RPUkVfRFdPUkRfSU5ERVhfU0hJRlQpKSk7Cj4gIAlpbnRlbF9s b2dpY2FsX3JpbmdfZW1pdChyaW5nYnVmLCAwKTsKPiAtCWludGVsX2xvZ2ljYWxfcmluZ19lbWl0 KHJpbmdidWYsIGk5MTVfZ2VtX3JlcXVlc3RfZ2V0X3NlcW5vKHJlcXVlc3QpKTsKPiArCWludGVs X2xvZ2ljYWxfcmluZ19lbWl0KHJpbmdidWYsIHJlcXVlc3QtPnNlcW5vKTsKPiAgCWludGVsX2xv Z2ljYWxfcmluZ19lbWl0KHJpbmdidWYsIE1JX1VTRVJfSU5URVJSVVBUKTsKPiAgCWludGVsX2xv Z2ljYWxfcmluZ19lbWl0KHJpbmdidWYsIE1JX05PT1ApOwo+ICAJaW50ZWxfbG9naWNhbF9yaW5n X2FkdmFuY2VfYW5kX3N1Ym1pdChyZXF1ZXN0KTsKPiBAQCAtMjAwMiwxMiArMTk4NCw4IEBAIHN0 YXRpYyBpbnQgbG9naWNhbF9yZW5kZXJfcmluZ19pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYp Cj4gIAkJcmluZy0+aW5pdF9odyA9IGdlbjhfaW5pdF9yZW5kZXJfcmluZzsKPiAgCXJpbmctPmlu aXRfY29udGV4dCA9IGdlbjhfaW5pdF9yY3NfY29udGV4dDsKPiAgCXJpbmctPmNsZWFudXAgPSBp bnRlbF9maW5pX3BpcGVfY29udHJvbDsKPiAtCXJpbmctPmdldF9zZXFubyA9IGdlbjhfZ2V0X3Nl cW5vOwo+IC0JcmluZy0+c2V0X3NlcW5vID0gZ2VuOF9zZXRfc2Vxbm87Cj4gLQlpZiAoSVNfQlhU X1JFVklEKGRldiwgMCwgQlhUX1JFVklEX0ExKSkgewo+ICsJaWYgKElTX0JYVF9SRVZJRChkZXYs IDAsIEJYVF9SRVZJRF9BMSkpCj4gIAkJcmluZy0+aXJxX3NlcW5vX2JhcnJpZXIgPSBieHRfc2Vx bm9fYmFycmllcjsKPiAtCQlyaW5nLT5zZXRfc2Vxbm8gPSBieHRfYV9zZXRfc2Vxbm87Cj4gLQl9 Cj4gIAlyaW5nLT5lbWl0X3JlcXVlc3QgPSBnZW44X2VtaXRfcmVxdWVzdDsKPiAgCXJpbmctPmVt aXRfZmx1c2ggPSBnZW44X2VtaXRfZmx1c2hfcmVuZGVyOwo+ICAJcmluZy0+aXJxX2dldCA9IGdl bjhfbG9naWNhbF9yaW5nX2dldF9pcnE7Cj4gQEAgLTIwNTMsMTIgKzIwMzEsOCBAQCBzdGF0aWMg aW50IGxvZ2ljYWxfYnNkX3JpbmdfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICAJCUdU X0NPTlRFWFRfU1dJVENIX0lOVEVSUlVQVCA8PCBHRU44X1ZDUzFfSVJRX1NISUZUOwo+ICAKPiAg CXJpbmctPmluaXRfaHcgPSBnZW44X2luaXRfY29tbW9uX3Jpbmc7Cj4gLQlyaW5nLT5nZXRfc2Vx bm8gPSBnZW44X2dldF9zZXFubzsKPiAtCXJpbmctPnNldF9zZXFubyA9IGdlbjhfc2V0X3NlcW5v Owo+IC0JaWYgKElTX0JYVF9SRVZJRChkZXYsIDAsIEJYVF9SRVZJRF9BMSkpIHsKPiArCWlmIChJ U19CWFRfUkVWSUQoZGV2LCAwLCBCWFRfUkVWSURfQTEpKQo+ICAJCXJpbmctPmlycV9zZXFub19i YXJyaWVyID0gYnh0X3NlcW5vX2JhcnJpZXI7Cj4gLQkJcmluZy0+c2V0X3NlcW5vID0gYnh0X2Ff c2V0X3NlcW5vOwo+IC0JfQo+ICAJcmluZy0+ZW1pdF9yZXF1ZXN0ID0gZ2VuOF9lbWl0X3JlcXVl c3Q7Cj4gIAlyaW5nLT5lbWl0X2ZsdXNoID0gZ2VuOF9lbWl0X2ZsdXNoOwo+ICAJcmluZy0+aXJx X2dldCA9IGdlbjhfbG9naWNhbF9yaW5nX2dldF9pcnE7Cj4gQEAgLTIwODIsOCArMjA1Niw2IEBA IHN0YXRpYyBpbnQgbG9naWNhbF9ic2QyX3JpbmdfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 KQo+ICAJCUdUX0NPTlRFWFRfU1dJVENIX0lOVEVSUlVQVCA8PCBHRU44X1ZDUzJfSVJRX1NISUZU Owo+ICAKPiAgCXJpbmctPmluaXRfaHcgPSBnZW44X2luaXRfY29tbW9uX3Jpbmc7Cj4gLQlyaW5n LT5nZXRfc2Vxbm8gPSBnZW44X2dldF9zZXFubzsKPiAtCXJpbmctPnNldF9zZXFubyA9IGdlbjhf c2V0X3NlcW5vOwo+ICAJcmluZy0+ZW1pdF9yZXF1ZXN0ID0gZ2VuOF9lbWl0X3JlcXVlc3Q7Cj4g IAlyaW5nLT5lbWl0X2ZsdXNoID0gZ2VuOF9lbWl0X2ZsdXNoOwo+ICAJcmluZy0+aXJxX2dldCA9 IGdlbjhfbG9naWNhbF9yaW5nX2dldF9pcnE7Cj4gQEAgLTIxMDcsMTIgKzIwNzksOCBAQCBzdGF0 aWMgaW50IGxvZ2ljYWxfYmx0X3JpbmdfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICAJ CUdUX0NPTlRFWFRfU1dJVENIX0lOVEVSUlVQVCA8PCBHRU44X0JDU19JUlFfU0hJRlQ7Cj4gIAo+ ICAJcmluZy0+aW5pdF9odyA9IGdlbjhfaW5pdF9jb21tb25fcmluZzsKPiAtCXJpbmctPmdldF9z ZXFubyA9IGdlbjhfZ2V0X3NlcW5vOwo+IC0JcmluZy0+c2V0X3NlcW5vID0gZ2VuOF9zZXRfc2Vx bm87Cj4gLQlpZiAoSVNfQlhUX1JFVklEKGRldiwgMCwgQlhUX1JFVklEX0ExKSkgewo+ICsJaWYg KElTX0JYVF9SRVZJRChkZXYsIDAsIEJYVF9SRVZJRF9BMSkpCj4gIAkJcmluZy0+aXJxX3NlcW5v X2JhcnJpZXIgPSBieHRfc2Vxbm9fYmFycmllcjsKPiAtCQlyaW5nLT5zZXRfc2Vxbm8gPSBieHRf YV9zZXRfc2Vxbm87Cj4gLQl9Cj4gIAlyaW5nLT5lbWl0X3JlcXVlc3QgPSBnZW44X2VtaXRfcmVx dWVzdDsKPiAgCXJpbmctPmVtaXRfZmx1c2ggPSBnZW44X2VtaXRfZmx1c2g7Cj4gIAlyaW5nLT5p cnFfZ2V0ID0gZ2VuOF9sb2dpY2FsX3JpbmdfZ2V0X2lycTsKPiBAQCAtMjEzNiwxMiArMjEwNCw4 IEBAIHN0YXRpYyBpbnQgbG9naWNhbF92ZWJveF9yaW5nX2luaXQoc3RydWN0IGRybV9kZXZpY2Ug KmRldikKPiAgCQlHVF9DT05URVhUX1NXSVRDSF9JTlRFUlJVUFQgPDwgR0VOOF9WRUNTX0lSUV9T SElGVDsKPiAgCj4gIAlyaW5nLT5pbml0X2h3ID0gZ2VuOF9pbml0X2NvbW1vbl9yaW5nOwo+IC0J cmluZy0+Z2V0X3NlcW5vID0gZ2VuOF9nZXRfc2Vxbm87Cj4gLQlyaW5nLT5zZXRfc2Vxbm8gPSBn ZW44X3NldF9zZXFubzsKPiAtCWlmIChJU19CWFRfUkVWSUQoZGV2LCAwLCBCWFRfUkVWSURfQTEp KSB7Cj4gKwlpZiAoSVNfQlhUX1JFVklEKGRldiwgMCwgQlhUX1JFVklEX0ExKSkKPiAgCQlyaW5n LT5pcnFfc2Vxbm9fYmFycmllciA9IGJ4dF9zZXFub19iYXJyaWVyOwo+IC0JCXJpbmctPnNldF9z ZXFubyA9IGJ4dF9hX3NldF9zZXFubzsKPiAtCX0KPiAgCXJpbmctPmVtaXRfcmVxdWVzdCA9IGdl bjhfZW1pdF9yZXF1ZXN0Owo+ICAJcmluZy0+ZW1pdF9mbHVzaCA9IGdlbjhfZW1pdF9mbHVzaDsK PiAgCXJpbmctPmlycV9nZXQgPSBnZW44X2xvZ2ljYWxfcmluZ19nZXRfaXJxOwo+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMKPiBpbmRleCA1N2VjMjFjNWIxYWIuLmM4NmQw ZTE3ZDc4NSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVm ZmVyLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMKPiBA QCAtMTIxNiwxOSArMTIxNiwxNyBAQCBzdGF0aWMgaW50IGdlbjhfcmNzX3NpZ25hbChzdHJ1Y3Qg ZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnNpZ25hbGxlcl9yZXEsCj4gIAkJcmV0dXJuIHJldDsKPiAg Cj4gIAlmb3JfZWFjaF9yaW5nKHdhaXRlciwgZGV2X3ByaXYsIGkpIHsKPiAtCQl1MzIgc2Vxbm87 Cj4gIAkJdTY0IGd0dF9vZmZzZXQgPSBzaWduYWxsZXItPnNlbWFwaG9yZS5zaWduYWxfZ2d0dFtp XTsKPiAgCQlpZiAoZ3R0X29mZnNldCA9PSBNSV9TRU1BUEhPUkVfU1lOQ19JTlZBTElEKQo+ICAJ CQljb250aW51ZTsKPiAgCj4gLQkJc2Vxbm8gPSBpOTE1X2dlbV9yZXF1ZXN0X2dldF9zZXFubyhz aWduYWxsZXJfcmVxKTsKPiAgCQlpbnRlbF9yaW5nX2VtaXQoc2lnbmFsbGVyLCBHRlhfT1BfUElQ RV9DT05UUk9MKDYpKTsKPiAgCQlpbnRlbF9yaW5nX2VtaXQoc2lnbmFsbGVyLCBQSVBFX0NPTlRS T0xfR0xPQkFMX0dUVF9JVkIgfAo+ICAJCQkJCSAgIFBJUEVfQ09OVFJPTF9RV19XUklURSB8Cj4g IAkJCQkJICAgUElQRV9DT05UUk9MX0ZMVVNIX0VOQUJMRSk7Cj4gIAkJaW50ZWxfcmluZ19lbWl0 KHNpZ25hbGxlciwgbG93ZXJfMzJfYml0cyhndHRfb2Zmc2V0KSk7Cj4gIAkJaW50ZWxfcmluZ19l bWl0KHNpZ25hbGxlciwgdXBwZXJfMzJfYml0cyhndHRfb2Zmc2V0KSk7Cj4gLQkJaW50ZWxfcmlu Z19lbWl0KHNpZ25hbGxlciwgc2Vxbm8pOwo+ICsJCWludGVsX3JpbmdfZW1pdChzaWduYWxsZXIs IHNpZ25hbGxlcl9yZXEtPnNlcW5vKTsKPiAgCQlpbnRlbF9yaW5nX2VtaXQoc2lnbmFsbGVyLCAw KTsKPiAgCQlpbnRlbF9yaW5nX2VtaXQoc2lnbmFsbGVyLCBNSV9TRU1BUEhPUkVfU0lHTkFMIHwK PiAgCQkJCQkgICBNSV9TRU1BUEhPUkVfVEFSR0VUKHdhaXRlci0+aWQpKTsKPiBAQCAtMTI1Nywx OCArMTI1NSwxNiBAQCBzdGF0aWMgaW50IGdlbjhfeGNzX3NpZ25hbChzdHJ1Y3QgZHJtX2k5MTVf Z2VtX3JlcXVlc3QgKnNpZ25hbGxlcl9yZXEsCj4gIAkJcmV0dXJuIHJldDsKPiAgCj4gIAlmb3Jf ZWFjaF9yaW5nKHdhaXRlciwgZGV2X3ByaXYsIGkpIHsKPiAtCQl1MzIgc2Vxbm87Cj4gIAkJdTY0 IGd0dF9vZmZzZXQgPSBzaWduYWxsZXItPnNlbWFwaG9yZS5zaWduYWxfZ2d0dFtpXTsKPiAgCQlp ZiAoZ3R0X29mZnNldCA9PSBNSV9TRU1BUEhPUkVfU1lOQ19JTlZBTElEKQo+ICAJCQljb250aW51 ZTsKPiAgCj4gLQkJc2Vxbm8gPSBpOTE1X2dlbV9yZXF1ZXN0X2dldF9zZXFubyhzaWduYWxsZXJf cmVxKTsKPiAgCQlpbnRlbF9yaW5nX2VtaXQoc2lnbmFsbGVyLCAoTUlfRkxVU0hfRFcgKyAxKSB8 Cj4gIAkJCQkJICAgTUlfRkxVU0hfRFdfT1BfU1RPUkVEVyk7Cj4gIAkJaW50ZWxfcmluZ19lbWl0 KHNpZ25hbGxlciwgbG93ZXJfMzJfYml0cyhndHRfb2Zmc2V0KSB8Cj4gIAkJCQkJICAgTUlfRkxV U0hfRFdfVVNFX0dUVCk7Cj4gIAkJaW50ZWxfcmluZ19lbWl0KHNpZ25hbGxlciwgdXBwZXJfMzJf Yml0cyhndHRfb2Zmc2V0KSk7Cj4gLQkJaW50ZWxfcmluZ19lbWl0KHNpZ25hbGxlciwgc2Vxbm8p Owo+ICsJCWludGVsX3JpbmdfZW1pdChzaWduYWxsZXIsIHNpZ25hbGxlcl9yZXEtPnNlcW5vKTsK PiAgCQlpbnRlbF9yaW5nX2VtaXQoc2lnbmFsbGVyLCBNSV9TRU1BUEhPUkVfU0lHTkFMIHwKPiAg CQkJCQkgICBNSV9TRU1BUEhPUkVfVEFSR0VUKHdhaXRlci0+aWQpKTsKPiAgCQlpbnRlbF9yaW5n X2VtaXQoc2lnbmFsbGVyLCAwKTsKPiBAQCAtMTI5OSwxMSArMTI5NSw5IEBAIHN0YXRpYyBpbnQg Z2VuNl9zaWduYWwoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpzaWduYWxsZXJfcmVxLAo+ ICAJCWk5MTVfcmVnX3QgbWJveF9yZWcgPSBzaWduYWxsZXItPnNlbWFwaG9yZS5tYm94LnNpZ25h bFtpXTsKPiAgCj4gIAkJaWYgKGk5MTVfbW1pb19yZWdfdmFsaWQobWJveF9yZWcpKSB7Cj4gLQkJ CXUzMiBzZXFubyA9IGk5MTVfZ2VtX3JlcXVlc3RfZ2V0X3NlcW5vKHNpZ25hbGxlcl9yZXEpOwo+ IC0KPiAgCQkJaW50ZWxfcmluZ19lbWl0KHNpZ25hbGxlciwgTUlfTE9BRF9SRUdJU1RFUl9JTU0o MSkpOwo+ICAJCQlpbnRlbF9yaW5nX2VtaXRfcmVnKHNpZ25hbGxlciwgbWJveF9yZWcpOwo+IC0J CQlpbnRlbF9yaW5nX2VtaXQoc2lnbmFsbGVyLCBzZXFubyk7Cj4gKwkJCWludGVsX3JpbmdfZW1p dChzaWduYWxsZXIsIHNpZ25hbGxlcl9yZXEtPnNlcW5vKTsKPiAgCQl9Cj4gIAl9Cj4gIAo+IEBA IC0xMzM4LDcgKzEzMzIsNyBAQCBnZW42X2FkZF9yZXF1ZXN0KHN0cnVjdCBkcm1faTkxNV9nZW1f cmVxdWVzdCAqcmVxKQo+ICAKPiAgCWludGVsX3JpbmdfZW1pdChyaW5nLCBNSV9TVE9SRV9EV09S RF9JTkRFWCk7Cj4gIAlpbnRlbF9yaW5nX2VtaXQocmluZywgSTkxNV9HRU1fSFdTX0lOREVYIDw8 IE1JX1NUT1JFX0RXT1JEX0lOREVYX1NISUZUKTsKPiAtCWludGVsX3JpbmdfZW1pdChyaW5nLCBp OTE1X2dlbV9yZXF1ZXN0X2dldF9zZXFubyhyZXEpKTsKPiArCWludGVsX3JpbmdfZW1pdChyaW5n LCByZXEtPnNlcW5vKTsKPiAgCWludGVsX3JpbmdfZW1pdChyaW5nLCBNSV9VU0VSX0lOVEVSUlVQ VCk7Cj4gIAlfX2ludGVsX3JpbmdfYWR2YW5jZShyaW5nKTsKPiAgCj4gQEAgLTE0NDAsNyArMTQz NCw5IEBAIHN0YXRpYyBpbnQKPiAgcGNfcmVuZGVyX2FkZF9yZXF1ZXN0KHN0cnVjdCBkcm1faTkx NV9nZW1fcmVxdWVzdCAqcmVxKQo+ICB7Cj4gIAlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5n ID0gcmVxLT5yaW5nOwo+IC0JdTMyIHNjcmF0Y2hfYWRkciA9IHJpbmctPnNjcmF0Y2guZ3R0X29m ZnNldCArIDIgKiBDQUNIRUxJTkVfQllURVM7Cj4gKwl1MzIgYWRkciA9IHJlcS0+cmluZy0+c3Rh dHVzX3BhZ2UuZ2Z4X2FkZHIgKwo+ICsJCShJOTE1X0dFTV9IV1NfSU5ERVggPDwgTUlfU1RPUkVf RFdPUkRfSU5ERVhfU0hJRlQpOwo+ICsJdTMyIHNjcmF0Y2hfYWRkciA9IGFkZHI7Cj4gIAlpbnQg cmV0Owo+ICAKPiAgCS8qIEZvciBJcm9ubGFrZSwgTUlfVVNFUl9JTlRFUlJVUFQgd2FzIGRlcHJl Y2F0ZWQgYW5kIGFwcGFyZW50bHkKPiBAQCAtMTQ1NSwxMSArMTQ1MSwxMiBAQCBwY19yZW5kZXJf YWRkX3JlcXVlc3Qoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEpCj4gIAlpZiAocmV0 KQo+ICAJCXJldHVybiByZXQ7Cj4gIAo+IC0JaW50ZWxfcmluZ19lbWl0KHJpbmcsIEdGWF9PUF9Q SVBFX0NPTlRST0woNCkgfCBQSVBFX0NPTlRST0xfUVdfV1JJVEUgfAo+IC0JCQlQSVBFX0NPTlRS T0xfV1JJVEVfRkxVU0ggfAo+IC0JCQlQSVBFX0NPTlRST0xfVEVYVFVSRV9DQUNIRV9JTlZBTElE QVRFKTsKPiAtCWludGVsX3JpbmdfZW1pdChyaW5nLCByaW5nLT5zY3JhdGNoLmd0dF9vZmZzZXQg fCBQSVBFX0NPTlRST0xfR0xPQkFMX0dUVCk7Cj4gLQlpbnRlbF9yaW5nX2VtaXQocmluZywgaTkx NV9nZW1fcmVxdWVzdF9nZXRfc2Vxbm8ocmVxKSk7Cj4gKwlpbnRlbF9yaW5nX2VtaXQocmluZywK PiArCQkJR0ZYX09QX1BJUEVfQ09OVFJPTCg0KSB8Cj4gKwkJCVBJUEVfQ09OVFJPTF9RV19XUklU RSB8Cj4gKwkJCVBJUEVfQ09OVFJPTF9XUklURV9GTFVTSCk7CgpXaHkgbm8gbW9yZSBQSVBFX0NP TlRST0xfVEVYVFVSRV9DQUNIRV9JTlZBTElEQVRFPwotTWlrYQoKPiArCWludGVsX3JpbmdfZW1p dChyaW5nLCBhZGRyIHwgUElQRV9DT05UUk9MX0dMT0JBTF9HVFQpOwo+ICsJaW50ZWxfcmluZ19l bWl0KHJpbmcsIHJlcS0+c2Vxbm8pOwo+ICAJaW50ZWxfcmluZ19lbWl0KHJpbmcsIDApOwo+ICAJ UElQRV9DT05UUk9MX0ZMVVNIKHJpbmcsIHNjcmF0Y2hfYWRkcik7Cj4gIAlzY3JhdGNoX2FkZHIg Kz0gMiAqIENBQ0hFTElORV9CWVRFUzsgLyogd3JpdGUgdG8gc2VwYXJhdGUgY2FjaGVsaW5lcyAq Lwo+IEBAIC0xNDczLDEyICsxNDcwLDEyIEBAIHBjX3JlbmRlcl9hZGRfcmVxdWVzdChzdHJ1Y3Qg ZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSkKPiAgCXNjcmF0Y2hfYWRkciArPSAyICogQ0FDSEVM SU5FX0JZVEVTOwo+ICAJUElQRV9DT05UUk9MX0ZMVVNIKHJpbmcsIHNjcmF0Y2hfYWRkcik7Cj4g IAo+IC0JaW50ZWxfcmluZ19lbWl0KHJpbmcsIEdGWF9PUF9QSVBFX0NPTlRST0woNCkgfCBQSVBF X0NPTlRST0xfUVdfV1JJVEUgfAo+ICsJaW50ZWxfcmluZ19lbWl0KHJpbmcsIEdGWF9PUF9QSVBF X0NPTlRST0woNCkgfAo+ICsJCQlQSVBFX0NPTlRST0xfUVdfV1JJVEUgfAo+ICAJCQlQSVBFX0NP TlRST0xfV1JJVEVfRkxVU0ggfAo+IC0JCQlQSVBFX0NPTlRST0xfVEVYVFVSRV9DQUNIRV9JTlZB TElEQVRFIHwKPiAgCQkJUElQRV9DT05UUk9MX05PVElGWSk7Cj4gLQlpbnRlbF9yaW5nX2VtaXQo cmluZywgcmluZy0+c2NyYXRjaC5ndHRfb2Zmc2V0IHwgUElQRV9DT05UUk9MX0dMT0JBTF9HVFQp Owo+IC0JaW50ZWxfcmluZ19lbWl0KHJpbmcsIGk5MTVfZ2VtX3JlcXVlc3RfZ2V0X3NlcW5vKHJl cSkpOwo+ICsJaW50ZWxfcmluZ19lbWl0KHJpbmcsIGFkZHIgfCBQSVBFX0NPTlRST0xfR0xPQkFM X0dUVCk7Cj4gKwlpbnRlbF9yaW5nX2VtaXQocmluZywgcmVxLT5zZXFubyk7Cj4gIAlpbnRlbF9y aW5nX2VtaXQocmluZywgMCk7Cj4gIAlfX2ludGVsX3JpbmdfYWR2YW5jZShyaW5nKTsKPiAgCj4g QEAgLTE1MDYsMzAgKzE1MDMsNiBAQCBnZW42X3NlcW5vX2JhcnJpZXIoc3RydWN0IGludGVsX2Vu Z2luZV9jcyAqcmluZykKPiAgCWludGVsX2ZsdXNoX3N0YXR1c19wYWdlKHJpbmcsIEk5MTVfR0VN X0hXU19JTkRFWCk7Cj4gIH0KPiAgCj4gLXN0YXRpYyB1MzIKPiAtcmluZ19nZXRfc2Vxbm8oc3Ry dWN0IGludGVsX2VuZ2luZV9jcyAqcmluZykKPiAtewo+IC0JcmV0dXJuIGludGVsX3JlYWRfc3Rh dHVzX3BhZ2UocmluZywgSTkxNV9HRU1fSFdTX0lOREVYKTsKPiAtfQo+IC0KPiAtc3RhdGljIHZv aWQKPiAtcmluZ19zZXRfc2Vxbm8oc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZywgdTMyIHNl cW5vKQo+IC17Cj4gLQlpbnRlbF93cml0ZV9zdGF0dXNfcGFnZShyaW5nLCBJOTE1X0dFTV9IV1Nf SU5ERVgsIHNlcW5vKTsKPiAtfQo+IC0KPiAtc3RhdGljIHUzMgo+IC1wY19yZW5kZXJfZ2V0X3Nl cW5vKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcpCj4gLXsKPiAtCXJldHVybiByaW5nLT5z Y3JhdGNoLmNwdV9wYWdlWzBdOwo+IC19Cj4gLQo+IC1zdGF0aWMgdm9pZAo+IC1wY19yZW5kZXJf c2V0X3NlcW5vKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcsIHUzMiBzZXFubykKPiAtewo+ IC0JcmluZy0+c2NyYXRjaC5jcHVfcGFnZVswXSA9IHNlcW5vOwo+IC19Cj4gLQo+ICBzdGF0aWMg Ym9vbAo+ICBnZW41X3JpbmdfZ2V0X2lycShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nKQo+ ICB7Cj4gQEAgLTE2NjUsNyArMTYzOCw3IEBAIGk5eHhfYWRkX3JlcXVlc3Qoc3RydWN0IGRybV9p OTE1X2dlbV9yZXF1ZXN0ICpyZXEpCj4gIAo+ICAJaW50ZWxfcmluZ19lbWl0KHJpbmcsIE1JX1NU T1JFX0RXT1JEX0lOREVYKTsKPiAgCWludGVsX3JpbmdfZW1pdChyaW5nLCBJOTE1X0dFTV9IV1Nf SU5ERVggPDwgTUlfU1RPUkVfRFdPUkRfSU5ERVhfU0hJRlQpOwo+IC0JaW50ZWxfcmluZ19lbWl0 KHJpbmcsIGk5MTVfZ2VtX3JlcXVlc3RfZ2V0X3NlcW5vKHJlcSkpOwo+ICsJaW50ZWxfcmluZ19l bWl0KHJpbmcsIHJlcS0+c2Vxbm8pOwo+ICAJaW50ZWxfcmluZ19lbWl0KHJpbmcsIE1JX1VTRVJf SU5URVJSVVBUKTsKPiAgCV9faW50ZWxfcmluZ19hZHZhbmNlKHJpbmcpOwo+ICAKPiBAQCAtMjQ1 Nyw3ICsyNDMwLDEwIEBAIHZvaWQgaW50ZWxfcmluZ19pbml0X3NlcW5vKHN0cnVjdCBpbnRlbF9l bmdpbmVfY3MgKnJpbmcsIHUzMiBzZXFubykKPiAgCQkJSTkxNV9XUklURShSSU5HX1NZTkNfMihy aW5nLT5tbWlvX2Jhc2UpLCAwKTsKPiAgCX0KPiAgCj4gLQlyaW5nLT5zZXRfc2Vxbm8ocmluZywg c2Vxbm8pOwo+ICsJaW50ZWxfd3JpdGVfc3RhdHVzX3BhZ2UocmluZywgSTkxNV9HRU1fSFdTX0lO REVYLCBzZXFubyk7Cj4gKwlpZiAocmluZy0+aXJxX3NlcW5vX2JhcnJpZXIpCj4gKwkJcmluZy0+ aXJxX3NlcW5vX2JhcnJpZXIocmluZyk7Cj4gKwo+ICAJcmluZy0+aGFuZ2NoZWNrLnNlcW5vID0g c2Vxbm87Cj4gIH0KPiAgCj4gQEAgLTI2OTUsOCArMjY3MSw2IEBAIGludCBpbnRlbF9pbml0X3Jl bmRlcl9yaW5nX2J1ZmZlcihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICAJCXJpbmctPmlycV9w dXQgPSBnZW44X3JpbmdfcHV0X2lycTsKPiAgCQlyaW5nLT5pcnFfZW5hYmxlX21hc2sgPSBHVF9S RU5ERVJfVVNFUl9JTlRFUlJVUFQ7Cj4gIAkJcmluZy0+aXJxX3NlcW5vX2JhcnJpZXIgPSBnZW42 X3NlcW5vX2JhcnJpZXI7Cj4gLQkJcmluZy0+Z2V0X3NlcW5vID0gcmluZ19nZXRfc2Vxbm87Cj4g LQkJcmluZy0+c2V0X3NlcW5vID0gcmluZ19zZXRfc2Vxbm87Cj4gIAkJaWYgKGk5MTVfc2VtYXBo b3JlX2lzX2VuYWJsZWQoZGV2KSkgewo+ICAJCQlXQVJOX09OKCFkZXZfcHJpdi0+c2VtYXBob3Jl X29iaik7Cj4gIAkJCXJpbmctPnNlbWFwaG9yZS5zeW5jX3RvID0gZ2VuOF9yaW5nX3N5bmM7Cj4g QEAgLTI3MTMsOCArMjY4Nyw2IEBAIGludCBpbnRlbF9pbml0X3JlbmRlcl9yaW5nX2J1ZmZlcihz dHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICAJCXJpbmctPmlycV9wdXQgPSBnZW42X3JpbmdfcHV0 X2lycTsKPiAgCQlyaW5nLT5pcnFfZW5hYmxlX21hc2sgPSBHVF9SRU5ERVJfVVNFUl9JTlRFUlJV UFQ7Cj4gIAkJcmluZy0+aXJxX3NlcW5vX2JhcnJpZXIgPSBnZW42X3NlcW5vX2JhcnJpZXI7Cj4g LQkJcmluZy0+Z2V0X3NlcW5vID0gcmluZ19nZXRfc2Vxbm87Cj4gLQkJcmluZy0+c2V0X3NlcW5v ID0gcmluZ19zZXRfc2Vxbm87Cj4gIAkJaWYgKGk5MTVfc2VtYXBob3JlX2lzX2VuYWJsZWQoZGV2 KSkgewo+ICAJCQlyaW5nLT5zZW1hcGhvcmUuc3luY190byA9IGdlbjZfcmluZ19zeW5jOwo+ICAJ CQlyaW5nLT5zZW1hcGhvcmUuc2lnbmFsID0gZ2VuNl9zaWduYWw7Cj4gQEAgLTI3MzksOCArMjcx MSw2IEBAIGludCBpbnRlbF9pbml0X3JlbmRlcl9yaW5nX2J1ZmZlcihzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2KQo+ICAJfSBlbHNlIGlmIChJU19HRU41KGRldikpIHsKPiAgCQlyaW5nLT5hZGRfcmVx dWVzdCA9IHBjX3JlbmRlcl9hZGRfcmVxdWVzdDsKPiAgCQlyaW5nLT5mbHVzaCA9IGdlbjRfcmVu ZGVyX3JpbmdfZmx1c2g7Cj4gLQkJcmluZy0+Z2V0X3NlcW5vID0gcGNfcmVuZGVyX2dldF9zZXFu bzsKPiAtCQlyaW5nLT5zZXRfc2Vxbm8gPSBwY19yZW5kZXJfc2V0X3NlcW5vOwo+ICAJCXJpbmct PmlycV9nZXQgPSBnZW41X3JpbmdfZ2V0X2lycTsKPiAgCQlyaW5nLT5pcnFfcHV0ID0gZ2VuNV9y aW5nX3B1dF9pcnE7Cj4gIAkJcmluZy0+aXJxX2VuYWJsZV9tYXNrID0gR1RfUkVOREVSX1VTRVJf SU5URVJSVVBUIHwKPiBAQCAtMjc1MSw4ICsyNzIxLDYgQEAgaW50IGludGVsX2luaXRfcmVuZGVy X3JpbmdfYnVmZmVyKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gIAkJCXJpbmctPmZsdXNoID0g Z2VuMl9yZW5kZXJfcmluZ19mbHVzaDsKPiAgCQllbHNlCj4gIAkJCXJpbmctPmZsdXNoID0gZ2Vu NF9yZW5kZXJfcmluZ19mbHVzaDsKPiAtCQlyaW5nLT5nZXRfc2Vxbm8gPSByaW5nX2dldF9zZXFu bzsKPiAtCQlyaW5nLT5zZXRfc2Vxbm8gPSByaW5nX3NldF9zZXFubzsKPiAgCQlpZiAoSVNfR0VO MihkZXYpKSB7Cj4gIAkJCXJpbmctPmlycV9nZXQgPSBpOHh4X3JpbmdfZ2V0X2lycTsKPiAgCQkJ cmluZy0+aXJxX3B1dCA9IGk4eHhfcmluZ19wdXRfaXJxOwo+IEBAIC0yODI4LDggKzI3OTYsNiBA QCBpbnQgaW50ZWxfaW5pdF9ic2RfcmluZ19idWZmZXIoc3RydWN0IGRybV9kZXZpY2UgKmRldikK PiAgCQlyaW5nLT5mbHVzaCA9IGdlbjZfYnNkX3JpbmdfZmx1c2g7Cj4gIAkJcmluZy0+YWRkX3Jl cXVlc3QgPSBnZW42X2FkZF9yZXF1ZXN0Owo+ICAJCXJpbmctPmlycV9zZXFub19iYXJyaWVyID0g Z2VuNl9zZXFub19iYXJyaWVyOwo+IC0JCXJpbmctPmdldF9zZXFubyA9IHJpbmdfZ2V0X3NlcW5v Owo+IC0JCXJpbmctPnNldF9zZXFubyA9IHJpbmdfc2V0X3NlcW5vOwo+ICAJCWlmIChJTlRFTF9J TkZPKGRldiktPmdlbiA+PSA4KSB7Cj4gIAkJCXJpbmctPmlycV9lbmFibGVfbWFzayA9Cj4gIAkJ CQlHVF9SRU5ERVJfVVNFUl9JTlRFUlJVUFQgPDwgR0VOOF9WQ1MxX0lSUV9TSElGVDsKPiBAQCAt Mjg2Nyw4ICsyODMzLDYgQEAgaW50IGludGVsX2luaXRfYnNkX3JpbmdfYnVmZmVyKHN0cnVjdCBk cm1fZGV2aWNlICpkZXYpCj4gIAkJcmluZy0+bW1pb19iYXNlID0gQlNEX1JJTkdfQkFTRTsKPiAg CQlyaW5nLT5mbHVzaCA9IGJzZF9yaW5nX2ZsdXNoOwo+ICAJCXJpbmctPmFkZF9yZXF1ZXN0ID0g aTl4eF9hZGRfcmVxdWVzdDsKPiAtCQlyaW5nLT5nZXRfc2Vxbm8gPSByaW5nX2dldF9zZXFubzsK PiAtCQlyaW5nLT5zZXRfc2Vxbm8gPSByaW5nX3NldF9zZXFubzsKPiAgCQlpZiAoSVNfR0VONShk ZXYpKSB7Cj4gIAkJCXJpbmctPmlycV9lbmFibGVfbWFzayA9IElMS19CU0RfVVNFUl9JTlRFUlJV UFQ7Cj4gIAkJCXJpbmctPmlycV9nZXQgPSBnZW41X3JpbmdfZ2V0X2lycTsKPiBAQCAtMjkwMSw4 ICsyODY1LDYgQEAgaW50IGludGVsX2luaXRfYnNkMl9yaW5nX2J1ZmZlcihzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2KQo+ICAJcmluZy0+Zmx1c2ggPSBnZW42X2JzZF9yaW5nX2ZsdXNoOwo+ICAJcmlu Zy0+YWRkX3JlcXVlc3QgPSBnZW42X2FkZF9yZXF1ZXN0Owo+ICAJcmluZy0+aXJxX3NlcW5vX2Jh cnJpZXIgPSBnZW42X3NlcW5vX2JhcnJpZXI7Cj4gLQlyaW5nLT5nZXRfc2Vxbm8gPSByaW5nX2dl dF9zZXFubzsKPiAtCXJpbmctPnNldF9zZXFubyA9IHJpbmdfc2V0X3NlcW5vOwo+ICAJcmluZy0+ aXJxX2VuYWJsZV9tYXNrID0KPiAgCQkJR1RfUkVOREVSX1VTRVJfSU5URVJSVVBUIDw8IEdFTjhf VkNTMl9JUlFfU0hJRlQ7Cj4gIAlyaW5nLT5pcnFfZ2V0ID0gZ2VuOF9yaW5nX2dldF9pcnE7Cj4g QEAgLTI5MzIsOCArMjg5NCw2IEBAIGludCBpbnRlbF9pbml0X2JsdF9yaW5nX2J1ZmZlcihzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2KQo+ICAJcmluZy0+Zmx1c2ggPSBnZW42X3JpbmdfZmx1c2g7Cj4g IAlyaW5nLT5hZGRfcmVxdWVzdCA9IGdlbjZfYWRkX3JlcXVlc3Q7Cj4gIAlyaW5nLT5pcnFfc2Vx bm9fYmFycmllciA9IGdlbjZfc2Vxbm9fYmFycmllcjsKPiAtCXJpbmctPmdldF9zZXFubyA9IHJp bmdfZ2V0X3NlcW5vOwo+IC0JcmluZy0+c2V0X3NlcW5vID0gcmluZ19zZXRfc2Vxbm87Cj4gIAlp ZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gOCkgewo+ICAJCXJpbmctPmlycV9lbmFibGVfbWFz ayA9Cj4gIAkJCUdUX1JFTkRFUl9VU0VSX0lOVEVSUlVQVCA8PCBHRU44X0JDU19JUlFfU0hJRlQ7 Cj4gQEAgLTI5OTAsOCArMjk1MCw2IEBAIGludCBpbnRlbF9pbml0X3ZlYm94X3JpbmdfYnVmZmVy KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gIAlyaW5nLT5mbHVzaCA9IGdlbjZfcmluZ19mbHVz aDsKPiAgCXJpbmctPmFkZF9yZXF1ZXN0ID0gZ2VuNl9hZGRfcmVxdWVzdDsKPiAgCXJpbmctPmly cV9zZXFub19iYXJyaWVyID0gZ2VuNl9zZXFub19iYXJyaWVyOwo+IC0JcmluZy0+Z2V0X3NlcW5v ID0gcmluZ19nZXRfc2Vxbm87Cj4gLQlyaW5nLT5zZXRfc2Vxbm8gPSByaW5nX3NldF9zZXFubzsK PiAgCj4gIAlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gOCkgewo+ICAJCXJpbmctPmlycV9l bmFibGVfbWFzayA9Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Jp bmdidWZmZXIuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaAo+IGlu ZGV4IDNiNDk3MjZiMTczMi4uMjhhYjA3YjM4YzA1IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX3JpbmdidWZmZXIuaAo+IEBAIC0yMjAsOSArMjIwLDYgQEAgc3RydWN0ICBpbnRlbF9l bmdpbmVfY3Mgewo+ICAJICogbW9ub3RvbmljLCBldmVuIGlmIG5vdCBjb2hlcmVudC4KPiAgCSAq Lwo+ICAJdm9pZAkJKCppcnFfc2Vxbm9fYmFycmllcikoc3RydWN0IGludGVsX2VuZ2luZV9jcyAq cmluZyk7Cj4gLQl1MzIJCSgqZ2V0X3NlcW5vKShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5n KTsKPiAtCXZvaWQJCSgqc2V0X3NlcW5vKShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nLAo+ IC0JCQkJICAgICB1MzIgc2Vxbm8pOwo+ICAJaW50CQkoKmRpc3BhdGNoX2V4ZWNidWZmZXIpKHN0 cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLAo+ICAJCQkJCSAgICAgICB1NjQgb2Zmc2V0 LCB1MzIgbGVuZ3RoLAo+ICAJCQkJCSAgICAgICB1bnNpZ25lZCBkaXNwYXRjaF9mbGFncyk7Cj4g QEAgLTUwMiw2ICs0OTksMTAgQEAgaW50IGludGVsX2luaXRfYmx0X3JpbmdfYnVmZmVyKHN0cnVj dCBkcm1fZGV2aWNlICpkZXYpOwo+ICBpbnQgaW50ZWxfaW5pdF92ZWJveF9yaW5nX2J1ZmZlcihz dHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKPiAgCj4gIHU2NCBpbnRlbF9yaW5nX2dldF9hY3RpdmVf aGVhZChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nKTsKPiArc3RhdGljIGlubGluZSB1MzIg aW50ZWxfcmluZ19nZXRfc2Vxbm8oc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZykKPiArewo+ ICsJcmV0dXJuIGludGVsX3JlYWRfc3RhdHVzX3BhZ2UocmluZywgSTkxNV9HRU1fSFdTX0lOREVY KTsKPiArfQo+ICAKPiAgaW50IGluaXRfd29ya2Fyb3VuZHNfcmluZyhzdHJ1Y3QgaW50ZWxfZW5n aW5lX2NzICpyaW5nKTsKPiAgCj4gLS0gCj4gMi43LjAucmMzCj4KPiBfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+IEludGVsLWdmeCBtYWlsaW5nIGxpc3QK PiBJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4gaHR0cDovL2xpc3RzLmZyZWVkZXNr dG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeApfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdm eEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWls bWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=