From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH 09/37] drm/i915: Mock infrastructure for request emission Date: Thu, 12 Jan 2017 13:11:50 +0000 Message-ID: <43d7f4e7-e6ed-52b3-1956-a81954f28e61@linux.intel.com> References: <20170111210937.29252-1-chris@chris-wilson.co.uk> <20170111210937.29252-10-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 mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTPS id 80ED06EA71 for ; Thu, 12 Jan 2017 13:11:53 +0000 (UTC) In-Reply-To: <20170111210937.29252-10-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 Ck9uIDExLzAxLzIwMTcgMjE6MDksIENocmlzIFdpbHNvbiB3cm90ZToKPiBDcmVhdGUgYSBmYWtl IGVuZ2luZSB0aGF0IHJ1bnMgcmVxdWVzdHMgdXNpbmcgYSB0aW1lciB0byBzaW11bGF0ZSBody4K Pgo+IFNpZ25lZC1vZmYtYnk6IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVr Pgo+IC0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMgICAgICAg ICAgICB8ICAgNCArCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pbnRlbF9icmVh ZGNydW1icy5jIHwgIDExICstCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9tb2Nr X2NvbnRleHQuYyAgICAgIHwgIDcwICsrKysrKysrKwo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9z ZWxmdGVzdHMvbW9ja19jb250ZXh0LmggICAgICB8ICAzNCArKysrCj4gIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L3NlbGZ0ZXN0cy9tb2NrX2VuZ2luZS5jICAgICAgIHwgMTcyICsrKysrKysrKysrKysr KysrKystLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvbW9ja19lbmdpbmUuaCAg ICAgICB8ICAxOCArKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL21vY2tfZ2Vt X2RldmljZS5jICAgfCAgOTUgKysrKysrKysrKystCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L3Nl bGZ0ZXN0cy9tb2NrX2dlbV9kZXZpY2UuaCAgIHwgICAxICsKPiAgZHJpdmVycy9ncHUvZHJtL2k5 MTUvc2VsZnRlc3RzL21vY2tfcmVxdWVzdC5jICAgICAgfCAgNDQgKysrKysrCj4gIGRyaXZlcnMv Z3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9tb2NrX3JlcXVlc3QuaCAgICAgIHwgIDQ0ICsrKysrKwo+ ICAxMCBmaWxlcyBjaGFuZ2VkLCA0NzUgaW5zZXJ0aW9ucygrKSwgMTggZGVsZXRpb25zKC0pCj4g IGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvbW9ja19j b250ZXh0LmMKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0 ZXN0cy9tb2NrX2NvbnRleHQuaAo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJt L2k5MTUvc2VsZnRlc3RzL21vY2tfcmVxdWVzdC5jCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvbW9ja19yZXF1ZXN0LmgKPgo+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMKPiBpbmRleCBmYmQzYjhlY2JlMjAuLjkxNTUxYjAx YTYyYyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0 LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMKPiBAQCAt MTE4NSwzICsxMTg1LDcgQEAgaW50IGk5MTVfZ2VtX2NvbnRleHRfcmVzZXRfc3RhdHNfaW9jdGwo c3RydWN0IGRybV9kZXZpY2UgKmRldiwKPgo+ICAJcmV0dXJuIDA7Cj4gIH0KPiArCj4gKyNpZiBJ U19FTkFCTEVEKENPTkZJR19EUk1fSTkxNV9TRUxGVEVTVCkKPiArI2luY2x1ZGUgInNlbGZ0ZXN0 cy9tb2NrX2NvbnRleHQuYyIKPiArI2VuZGlmCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L3NlbGZ0ZXN0cy9pbnRlbF9icmVhZGNydW1icy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvc2VsZnRlc3RzL2ludGVsX2JyZWFkY3J1bWJzLmMKPiBpbmRleCBiZWU4NjQ3MGE5MWQuLjI3 NDIxMDMyNDdjMCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMv aW50ZWxfYnJlYWRjcnVtYnMuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0 cy9pbnRlbF9icmVhZGNydW1icy5jCj4gQEAgLTI1LDYgKzI1LDcgQEAKPiAgI2luY2x1ZGUgImk5 MTVfcmFuZG9tLmgiCj4gICNpbmNsdWRlICJpOTE1X3NlbGZ0ZXN0LmgiCj4KPiArI2luY2x1ZGUg Im1vY2tfZ2VtX2RldmljZS5oIgo+ICAjaW5jbHVkZSAibW9ja19lbmdpbmUuaCIKPgo+ICBzdGF0 aWMgaW50IGNoZWNrX3JidHJlZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCj4gQEAg LTQ0MCwxNSArNDQxLDE1IEBAIGludCBpbnRlbF9icmVhZGNydW1ic19tb2NrX3NlbGZ0ZXN0cyh2 b2lkKQo+ICAJCVNVQlRFU1QoaWd0X2luc2VydF9jb21wbGV0ZSksCj4gIAkJU1VCVEVTVChpZ3Rf d2FrZXVwKSwKPiAgCX07Cj4gLQlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmU7Cj4gKwlz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNTsKPiAgCWludCBlcnI7Cj4KPiAtCWVuZ2luZSA9 IG1vY2tfZW5naW5lKCJtb2NrIik7Cj4gLQlpZiAoIWVuZ2luZSkKPiArCWk5MTUgPSBtb2NrX2dl bV9kZXZpY2UoKTsKPiArCWlmICghaTkxNSkKPiAgCQlyZXR1cm4gLUVOT01FTTsKPgo+IC0JZXJy ID0gaTkxNV9zdWJ0ZXN0cyh0ZXN0cywgZW5naW5lKTsKPiAtCWtmcmVlKGVuZ2luZSk7Cj4gKwll cnIgPSBpOTE1X3N1YnRlc3RzKHRlc3RzLCBpOTE1LT5lbmdpbmVbUkNTXSk7Cj4gKwlkcm1fZGV2 X3VucmVmKCZpOTE1LT5kcm0pOwo+Cj4gIAlyZXR1cm4gZXJyOwo+ICB9Cj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9tb2NrX2NvbnRleHQuYyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9tb2NrX2NvbnRleHQuYwo+IG5ldyBmaWxlIG1vZGUgMTAw NjQ0Cj4gaW5kZXggMDAwMDAwMDAwMDAwLi41MDk4ZGJiYzgxZDUKPiAtLS0gL2Rldi9udWxsCj4g KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL21vY2tfY29udGV4dC5jCj4gQEAg LTAsMCArMSw3MCBAQAo+ICsvKgo+ICsgKiBDb3B5cmlnaHQgwqkgMjAxNiBJbnRlbCBDb3Jwb3Jh dGlvbgo+ICsgKgo+ICsgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNo YXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQo+ICsgKiBjb3B5IG9mIHRoaXMgc29mdHdh cmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAo+ ICsgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRp bmcgd2l0aG91dCBsaW1pdGF0aW9uCj4gKyAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2Rp ZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAo+ICsgKiBhbmQvb3Ig c2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hv bSB0aGUKPiArICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRo ZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKPiArICoKPiArICogVGhlIGFib3ZlIGNvcHlyaWdodCBu b3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZyB0aGUgbmV4dAo+ICsg KiBwYXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRp YWwgcG9ydGlvbnMgb2YgdGhlCj4gKyAqIFNvZnR3YXJlLgo+ICsgKgo+ICsgKiBUSEUgU09GVFdB UkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQ UkVTUyBPUgo+ICsgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBX QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKPiArICogRklUTkVTUyBGT1IgQSBQQVJUSUNV TEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMCj4gKyAq IFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlN LCBEQU1BR0VTIE9SIE9USEVSCj4gKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04g T0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCj4gKyAqIEZST00sIE9VVCBP RiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIg REVBTElOR1MKPiArICogSU4gVEhFIFNPRlRXQVJFLgo+ICsgKgo+ICsgKi8KPiArCj4gKyNpbmNs dWRlICJtb2NrX2NvbnRleHQuaCIKPiArI2luY2x1ZGUgIm1vY2tfZ3R0LmgiCj4gKwo+ICtzdHJ1 Y3QgaTkxNV9nZW1fY29udGV4dCAqCj4gK21vY2tfY29udGV4dChzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqaTkxNSwKPiArCSAgICAgY29uc3QgY2hhciAqbmFtZSkKPiArewo+ICsJc3RydWN0IGk5 MTVfZ2VtX2NvbnRleHQgKmN0eDsKPiArCWludCByZXQ7Cj4gKwo+ICsJY3R4ID0ga3phbGxvYyhz aXplb2YoKmN0eCksIEdGUF9LRVJORUwpOwo+ICsJaWYgKCFjdHgpCj4gKwkJcmV0dXJuIE5VTEw7 Cj4gKwo+ICsJa3JlZl9pbml0KCZjdHgtPnJlZik7Cj4gKwlJTklUX0xJU1RfSEVBRCgmY3R4LT5s aW5rKTsKPiArCWN0eC0+bmFtZSA9IG5hbWUgPyBrc3RyZHVwKG5hbWUsIEdGUF9LRVJORUwpIDog TlVMTDsKCkNhcmUgb3Igbm90IHdoZXRoZXIgYWxsb2NhdGlvbiB3b3JrZWQ/Cgo+ICsJY3R4LT5p OTE1ID0gaTkxNTsKPiArCj4gKwlyZXQgPSBpZGFfc2ltcGxlX2dldCgmaTkxNS0+Y29udGV4dF9o d19pZGEsCj4gKwkJCSAgICAgMCwgTUFYX0NPTlRFWFRfSFdfSUQsIEdGUF9LRVJORUwpOwo+ICsJ aWYgKHJldCA8IDApIHsKCmlmIChuYW1lICYmIG5hbWUgIT0gY3R4LT5uYW1lKQoJa2ZyZWUoY3R4 LT5uYW1lKTsKCj4gKwkJa2ZyZWUoY3R4KTsKPiArCQlyZXR1cm4gTlVMTDsKPiArCX0KPiArCWN0 eC0+aHdfaWQgPSByZXQ7Cj4gKwo+ICsJaWYgKG5hbWUpIHsKPiArCQljdHgtPnBwZ3R0ID0gbW9j a19wcGd0dChpOTE1LCBuYW1lKTsKPiArCQlpZiAoIWN0eC0+cHBndHQpIHsKCkRpdHRvLgoKPiAr CQkJa2ZyZWUoY3R4KTsKPiArCQkJcmV0dXJuIE5VTEw7Cj4gKwkJfQo+ICsJfQo+ICsKPiArCXJl dHVybiBjdHg7Cj4gK30KPiArCj4gK3ZvaWQgbW9ja19jb250ZXh0X2Nsb3NlKHN0cnVjdCBpOTE1 X2dlbV9jb250ZXh0ICpjdHgpCj4gK3sKPiArCWk5MTVfZ2VtX2NvbnRleHRfc2V0X2Nsb3NlZChj dHgpOwo+ICsKPiArCWk5MTVfcHBndHRfY2xvc2UoJmN0eC0+cHBndHQtPmJhc2UpOwo+ICsKPiAr CWk5MTVfZ2VtX2NvbnRleHRfcHV0KGN0eCk7Cj4gK30KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvc2VsZnRlc3RzL21vY2tfY29udGV4dC5oIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvc2VsZnRlc3RzL21vY2tfY29udGV4dC5oCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRl eCAwMDAwMDAwMDAwMDAuLjI0MjdlNWMwOTE2YQo+IC0tLSAvZGV2L251bGwKPiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvbW9ja19jb250ZXh0LmgKPiBAQCAtMCwwICsxLDM0 IEBACj4gKy8qCj4gKyAqIENvcHlyaWdodCDCqSAyMDE2IEludGVsIENvcnBvcmF0aW9uCj4gKyAq Cj4gKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBh bnkgcGVyc29uIG9idGFpbmluZyBhCj4gKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNz b2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCj4gKyAqIHRvIGRl YWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0 IGxpbWl0YXRpb24KPiArICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2Us IHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCj4gKyAqIGFuZC9vciBzZWxsIGNvcGll cyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQo+ICsg KiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2lu ZyBjb25kaXRpb25zOgo+ICsgKgo+ICsgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQg dGhpcyBwZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVkaW5nIHRoZSBuZXh0Cj4gKyAqIHBhcmFncmFw aCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9u cyBvZiB0aGUKPiArICogU29mdHdhcmUuCj4gKyAqCj4gKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9W SURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCj4g KyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMg T0YgTUVSQ0hBTlRBQklMSVRZLAo+ICsgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T RSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwKPiArICogVEhFIEFVVEhP UlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMg T1IgT1RIRVIKPiArICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFD VCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKPiArICogRlJPTSwgT1VUIE9GIE9SIElOIENP Tk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUwo+ ICsgKiBJTiBUSEUgU09GVFdBUkUuCj4gKyAqCj4gKyAqLwo+ICsKPiArI2lmbmRlZiBfX01PQ0tf Q09OVEVYVF9ICj4gKyNkZWZpbmUgX19NT0NLX0NPTlRFWFRfSAo+ICsKPiArc3RydWN0IGk5MTVf Z2VtX2NvbnRleHQgKgo+ICttb2NrX2NvbnRleHQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5 MTUsCj4gKwkgICAgIGNvbnN0IGNoYXIgKm5hbWUpOwo+ICsKPiArdm9pZCBtb2NrX2NvbnRleHRf Y2xvc2Uoc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCk7Cj4gKwo+ICsjZW5kaWYgLyogIV9f TU9DS19DT05URVhUX0ggKi8KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2Vs ZnRlc3RzL21vY2tfZW5naW5lLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvbW9j a19lbmdpbmUuYwo+IGluZGV4IDA4NWQ2MTFlZDU2Yi4uYjRiOTZkMjQ3YTY3IDEwMDY0NAo+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9tb2NrX2VuZ2luZS5jCj4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL21vY2tfZW5naW5lLmMKPiBAQCAtMjMsMzMg KzIzLDE4NSBAQAo+ICAgKi8KPgo+ICAjaW5jbHVkZSAibW9ja19lbmdpbmUuaCIKPiArI2luY2x1 ZGUgIm1vY2tfcmVxdWVzdC5oIgo+Cj4gLXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKm1vY2tfZW5n aW5lKGNvbnN0IGNoYXIgKm5hbWUpCj4gK3N0YXRpYyBzdHJ1Y3QgbW9ja19yZXF1ZXN0ICpmaXJz dF9yZXF1ZXN0KHN0cnVjdCBtb2NrX2VuZ2luZSAqZW5naW5lKQo+ICB7Cj4gLQlzdHJ1Y3QgaW50 ZWxfZW5naW5lX2NzICplbmdpbmU7Cj4gKwlyZXR1cm4gbGlzdF9maXJzdF9lbnRyeV9vcl9udWxs KCZlbmdpbmUtPmh3X3F1ZXVlLAo+ICsJCQkJCXN0cnVjdCBtb2NrX3JlcXVlc3QsCj4gKwkJCQkJ bGluayk7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIGh3X2RlbGF5X2NvbXBsZXRlKHVuc2lnbmVk IGxvbmcgZGF0YSkKPiArewo+ICsJc3RydWN0IG1vY2tfZW5naW5lICplbmdpbmUgPSAodHlwZW9m KGVuZ2luZSkpZGF0YTsKPiArCXN0cnVjdCBtb2NrX3JlcXVlc3QgKnJlcXVlc3Q7Cj4gKwo+ICsJ c3Bpbl9sb2NrKCZlbmdpbmUtPmh3X2xvY2spOwo+ICsKPiArCXJlcXVlc3QgPSBmaXJzdF9yZXF1 ZXN0KGVuZ2luZSk7Cj4gKwlpZiAocmVxdWVzdCkgewo+ICsJCWxpc3RfZGVsX2luaXQoJnJlcXVl c3QtPmxpbmspOwo+ICsJCW1vY2tfc2Vxbm9fYWR2YW5jZSgmZW5naW5lLT5iYXNlLCByZXF1ZXN0 LT5iYXNlLmdsb2JhbF9zZXFubyk7Cj4gKwl9Cj4gKwo+ICsJcmVxdWVzdCA9IGZpcnN0X3JlcXVl c3QoZW5naW5lKTsKPiArCWlmIChyZXF1ZXN0KQo+ICsJCW1vZF90aW1lcigmZW5naW5lLT5od19k ZWxheSwgamlmZmllcyArIHJlcXVlc3QtPmRlbGF5KTsKPiArCj4gKwlzcGluX3VubG9jaygmZW5n aW5lLT5od19sb2NrKTsKPiArfQo+ICsKPiArc3RhdGljIGludCBtb2NrX2NvbnRleHRfcGluKHN0 cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKPiArCQkJICAgIHN0cnVjdCBpOTE1X2dlbV9j b250ZXh0ICpjdHgpCj4gK3sKPiArCWk5MTVfZ2VtX2NvbnRleHRfZ2V0KGN0eCk7Cj4gKwlyZXR1 cm4gMDsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgbW9ja19jb250ZXh0X3VucGluKHN0cnVjdCBp bnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKPiArCQkJICAgICAgIHN0cnVjdCBpOTE1X2dlbV9jb250 ZXh0ICpjdHgpCj4gK3sKPiArCWk5MTVfZ2VtX2NvbnRleHRfcHV0KGN0eCk7Cj4gK30KPiArCj4g K3N0YXRpYyBpbnQgbW9ja19yZXF1ZXN0X2FsbG9jKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVz dCAqcmVxdWVzdCkKPiArewo+ICsJc3RydWN0IG1vY2tfcmVxdWVzdCAqbW9jayA9IGNvbnRhaW5l cl9vZihyZXF1ZXN0LCB0eXBlb2YoKm1vY2spLCBiYXNlKTsKPiArCj4gKwlJTklUX0xJU1RfSEVB RCgmbW9jay0+bGluayk7Cj4gKwltb2NrLT5kZWxheSA9IDA7Cj4gKwo+ICsJcmVxdWVzdC0+cmlu ZyA9IHJlcXVlc3QtPmVuZ2luZS0+YnVmZmVyOwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gK3N0 YXRpYyBpbnQgbW9ja19lbWl0X2ZsdXNoKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVx dWVzdCwKPiArCQkJICAgdW5zaWduZWQgaW50IGZsYWdzKQo+ICt7Cj4gKwlyZXR1cm4gMDsKPiAr fQo+ICsKPiArc3RhdGljIHZvaWQgbW9ja19lbWl0X2JyZWFkY3J1bWIoc3RydWN0IGRybV9pOTE1 X2dlbV9yZXF1ZXN0ICpyZXF1ZXN0LAo+ICsJCQkJIHUzMiAqZmxhZ3MpCj4gK3sKPiArfQo+ICsK PiArc3RhdGljIHZvaWQgbW9ja19zdWJtaXRfcmVxdWVzdChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3Jl cXVlc3QgKnJlcXVlc3QpCj4gK3sKPiArCXN0cnVjdCBtb2NrX3JlcXVlc3QgKm1vY2sgPSBjb250 YWluZXJfb2YocmVxdWVzdCwgdHlwZW9mKCptb2NrKSwgYmFzZSk7Cj4gKwlzdHJ1Y3QgbW9ja19l bmdpbmUgKmVuZ2luZSA9Cj4gKwkJY29udGFpbmVyX29mKHJlcXVlc3QtPmVuZ2luZSwgdHlwZW9m KCplbmdpbmUpLCBiYXNlKTsKPiArCj4gKwlpOTE1X2dlbV9yZXF1ZXN0X3N1Ym1pdChyZXF1ZXN0 KTsKPiArCUdFTV9CVUdfT04oIXJlcXVlc3QtPmdsb2JhbF9zZXFubyk7Cj4gKwo+ICsJc3Bpbl9s b2NrX2lycSgmZW5naW5lLT5od19sb2NrKTsKPiArCWxpc3RfYWRkX3RhaWwoJm1vY2stPmxpbmss ICZlbmdpbmUtPmh3X3F1ZXVlKTsKPiArCWlmIChtb2NrLT5saW5rLnByZXYgPT0gJmVuZ2luZS0+ aHdfcXVldWUpCj4gKwkJbW9kX3RpbWVyKCZlbmdpbmUtPmh3X2RlbGF5LCBqaWZmaWVzICsgbW9j ay0+ZGVsYXkpOwo+ICsJc3Bpbl91bmxvY2tfaXJxKCZlbmdpbmUtPmh3X2xvY2spOwo+ICt9Cj4g Kwo+ICtzdGF0aWMgc3RydWN0IGludGVsX3JpbmcgKm1vY2tfcmluZyhzdHJ1Y3QgaW50ZWxfZW5n aW5lX2NzICplbmdpbmUpCj4gK3sKPiArCWNvbnN0IHVuc2lnbmVkIGxvbmcgc3ogPSByb3VuZHVw X3Bvd19vZl90d28oc2l6ZW9mKHN0cnVjdCBpbnRlbF9yaW5nKSk7CgpZb3UgY2VydGFpbmx5IGxp a2UgeW91ciBsb25ncy4gTmV2ZXIgbWluZC4gOikKCj4gKwlzdHJ1Y3QgaW50ZWxfcmluZyAqcmlu ZzsKPiArCj4gKwlyaW5nID0ga3phbGxvYyhzaXplb2YoKnJpbmcpICsgc3osIEdGUF9URU1QT1JB UlkpOwoKV2h5IEdGUF9URU1QT1JBUlksIHRoZSBtb2NrZWQgY29udGV4dCAmIGNvIGFyZSBub3Q/ Cgo+ICsJaWYgKCFyaW5nKQo+ICsJCXJldHVybiBOVUxMOwo+ICsKPiArCXJpbmctPmVuZ2luZSA9 IGVuZ2luZTsKPiArCXJpbmctPnNpemUgPSBzejsKPiArCXJpbmctPmVmZmVjdGl2ZV9zaXplID0g c3o7Cj4gKwlyaW5nLT52YWRkciA9ICh2b2lkICopKHJpbmcgKyAxKTsKPiArCj4gKwlJTklUX0xJ U1RfSEVBRCgmcmluZy0+cmVxdWVzdF9saXN0KTsKPiArCXJpbmctPmxhc3RfcmV0aXJlZF9oZWFk ID0gLTE7Cj4gKwlpbnRlbF9yaW5nX3VwZGF0ZV9zcGFjZShyaW5nKTsKPiArCj4gKwlyZXR1cm4g cmluZzsKPiArfQo+ICsKPiArc3RydWN0IGludGVsX2VuZ2luZV9jcyAqbW9ja19lbmdpbmUoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCj4gKwkJCQkgICAgY29uc3QgY2hhciAqbmFtZSkK PiArewo+ICsJc3RydWN0IG1vY2tfZW5naW5lICplbmdpbmU7Cj4gIAlzdGF0aWMgaW50IGlkOwo+ Cj4gIAllbmdpbmUgPSBremFsbG9jKHNpemVvZigqZW5naW5lKSArIFBBR0VfU0laRSwgR0ZQX1RF TVBPUkFSWSk7Cj4gIAlpZiAoIWVuZ2luZSkKPiAgCQlyZXR1cm4gTlVMTDsKPgo+IC0JLyogbWlu aW1hbCBlbmdpbmUgc2V0dXAgZm9yIHNlcW5vICovCj4gLQllbmdpbmUtPm5hbWUgPSBuYW1lOwo+ IC0JZW5naW5lLT5pZCA9IGlkKys7Cj4gLQllbmdpbmUtPnN0YXR1c19wYWdlLnBhZ2VfYWRkciA9 ICh2b2lkICopKGVuZ2luZSArIDEpOwo+ICsJZW5naW5lLT5iYXNlLmJ1ZmZlciA9IG1vY2tfcmlu ZygmZW5naW5lLT5iYXNlKTsKPiArCWlmICghZW5naW5lLT5iYXNlLmJ1ZmZlcikgewo+ICsJCWtm cmVlKGVuZ2luZSk7Cj4gKwkJcmV0dXJuIE5VTEw7Cj4gKwl9Cj4KPiAtCS8qIG1pbmltYWwgYnJl YWRjcnVtYnMgaW5pdCAqLwo+IC0Jc3Bpbl9sb2NrX2luaXQoJmVuZ2luZS0+YnJlYWRjcnVtYnMu bG9jayk7Cj4gLQllbmdpbmUtPmJyZWFkY3J1bWJzLm1vY2sgPSB0cnVlOwo+ICsJLyogbWluaW1h bCBlbmdpbmUgc2V0dXAgZm9yIHJlcXVlc3RzICovCj4gKwllbmdpbmUtPmJhc2UuaTkxNSA9IGk5 MTU7Cj4gKwllbmdpbmUtPmJhc2UubmFtZSA9IG5hbWU7Cj4gKwllbmdpbmUtPmJhc2UuaWQgPSBp ZCsrOwo+ICsJZW5naW5lLT5iYXNlLnN0YXR1c19wYWdlLnBhZ2VfYWRkciA9ICh2b2lkICopKGVu Z2luZSArIDEpOwo+Cj4gLQlyZXR1cm4gZW5naW5lOwo+ICsJZW5naW5lLT5iYXNlLmNvbnRleHRf cGluID0gbW9ja19jb250ZXh0X3BpbjsKPiArCWVuZ2luZS0+YmFzZS5jb250ZXh0X3VucGluID0g bW9ja19jb250ZXh0X3VucGluOwo+ICsJZW5naW5lLT5iYXNlLnJlcXVlc3RfYWxsb2MgPSBtb2Nr X3JlcXVlc3RfYWxsb2M7Cj4gKwllbmdpbmUtPmJhc2UuZW1pdF9mbHVzaCA9IG1vY2tfZW1pdF9m bHVzaDsKPiArCWVuZ2luZS0+YmFzZS5lbWl0X2JyZWFkY3J1bWIgPSBtb2NrX2VtaXRfYnJlYWRj cnVtYjsKPiArCWVuZ2luZS0+YmFzZS5zdWJtaXRfcmVxdWVzdCA9IG1vY2tfc3VibWl0X3JlcXVl c3Q7Cj4gKwo+ICsJZW5naW5lLT5iYXNlLnRpbWVsaW5lID0KPiArCQkmaTkxNS0+Z3QuZ2xvYmFs X3RpbWVsaW5lLmVuZ2luZVtlbmdpbmUtPmJhc2UuaWRdOwo+ICsKPiArCWludGVsX2VuZ2luZV9p bml0X2JyZWFkY3J1bWJzKCZlbmdpbmUtPmJhc2UpOwo+ICsJZW5naW5lLT5iYXNlLmJyZWFkY3J1 bWJzLm1vY2sgPSB0cnVlOyAvKiBwcmV2ZW50IHRvdWNoaW5nIEhXIGZvciBpcnFzICovCj4gKwo+ ICsJLyogZmFrZSBodyBxdWV1ZSAqLwo+ICsJc3Bpbl9sb2NrX2luaXQoJmVuZ2luZS0+aHdfbG9j ayk7Cj4gKwlzZXR1cF90aW1lcigmZW5naW5lLT5od19kZWxheSwKPiArCQkgICAgaHdfZGVsYXlf Y29tcGxldGUsCj4gKwkJICAgICh1bnNpZ25lZCBsb25nKWVuZ2luZSk7Cj4gKwlJTklUX0xJU1Rf SEVBRCgmZW5naW5lLT5od19xdWV1ZSk7Cj4gKwo+ICsJcmV0dXJuICZlbmdpbmUtPmJhc2U7Cj4g IH0KPgo+ICB2b2lkIG1vY2tfZW5naW5lX2ZsdXNoKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVu Z2luZSkKPiAgewo+ICsJc3RydWN0IG1vY2tfZW5naW5lICptb2NrID0KPiArCQljb250YWluZXJf b2YoZW5naW5lLCB0eXBlb2YoKm1vY2spLCBiYXNlKTsKPiArCXN0cnVjdCBtb2NrX3JlcXVlc3Qg KnJlcXVlc3QsICpybjsKPiArCj4gKwlkZWxfdGltZXJfc3luYygmbW9jay0+aHdfZGVsYXkpOwo+ ICsKPiArCXNwaW5fbG9ja19pcnEoJm1vY2stPmh3X2xvY2spOwo+ICsJbGlzdF9mb3JfZWFjaF9l bnRyeV9zYWZlKHJlcXVlc3QsIHJuLCAmbW9jay0+aHdfcXVldWUsIGxpbmspIHsKPiArCQlsaXN0 X2RlbF9pbml0KCZyZXF1ZXN0LT5saW5rKTsKPiArCQltb2NrX3NlcW5vX2FkdmFuY2UoJm1vY2st PmJhc2UsIHJlcXVlc3QtPmJhc2UuZ2xvYmFsX3NlcW5vKTsKPiArCX0KPiArCXNwaW5fdW5sb2Nr X2lycSgmbW9jay0+aHdfbG9jayk7Cj4gIH0KPgo+ICB2b2lkIG1vY2tfZW5naW5lX3Jlc2V0KHN0 cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgewo+ICAJaW50ZWxfd3JpdGVfc3RhdHVz X3BhZ2UoZW5naW5lLCBJOTE1X0dFTV9IV1NfSU5ERVgsIDApOwo+ICB9Cj4gKwo+ICt2b2lkIG1v Y2tfZW5naW5lX2ZyZWUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICt7Cj4gKwlz dHJ1Y3QgbW9ja19lbmdpbmUgKm1vY2sgPQo+ICsJCWNvbnRhaW5lcl9vZihlbmdpbmUsIHR5cGVv ZigqbW9jayksIGJhc2UpOwo+ICsKPiArCUdFTV9CVUdfT04odGltZXJfcGVuZGluZygmbW9jay0+ aHdfZGVsYXkpKTsKPiArCj4gKwlpZiAoZW5naW5lLT5sYXN0X3JldGlyZWRfY29udGV4dCkKPiAr CQllbmdpbmUtPmNvbnRleHRfdW5waW4oZW5naW5lLCBlbmdpbmUtPmxhc3RfcmV0aXJlZF9jb250 ZXh0KTsKPiArCj4gKwlpbnRlbF9lbmdpbmVfZmluaV9icmVhZGNydW1icyhlbmdpbmUpOwo+ICsK PiArCWtmcmVlKGVuZ2luZS0+YnVmZmVyKTsKPiArCWtmcmVlKGVuZ2luZSk7Cj4gK30KPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL21vY2tfZW5naW5lLmggYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvbW9ja19lbmdpbmUuaAo+IGluZGV4IDljZmU5 NjcxZjg2MC4uZDA4MGQwYTEwYTRmIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L3NlbGZ0ZXN0cy9tb2NrX2VuZ2luZS5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2Vs ZnRlc3RzL21vY2tfZW5naW5lLmgKPiBAQCAtMjUsOSArMjUsMjUgQEAKPiAgI2lmbmRlZiBfX01P Q0tfRU5HSU5FX0hfXwo+ICAjZGVmaW5lIF9fTU9DS19FTkdJTkVfSF9fCj4KPiAtc3RydWN0IGlu dGVsX2VuZ2luZV9jcyAqbW9ja19lbmdpbmUoY29uc3QgY2hhciAqbmFtZSk7Cj4gKyNpbmNsdWRl IDxsaW51eC9saXN0Lmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9zcGlubG9jay5oPgo+ICsjaW5jbHVk ZSA8bGludXgvdGltZXIuaD4KPiArCj4gKyNpbmNsdWRlICJpbnRlbF9yaW5nYnVmZmVyLmgiCj4g Kwo+ICtzdHJ1Y3QgbW9ja19lbmdpbmUgewo+ICsJc3RydWN0IGludGVsX2VuZ2luZV9jcyBiYXNl Owo+ICsKPiArCXNwaW5sb2NrX3QgaHdfbG9jazsKPiArCXN0cnVjdCBsaXN0X2hlYWQgaHdfcXVl dWU7Cj4gKwlzdHJ1Y3QgdGltZXJfbGlzdCBod19kZWxheTsKPiArfTsKPiArCj4gK3N0cnVjdCBp bnRlbF9lbmdpbmVfY3MgKm1vY2tfZW5naW5lKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1 LAo+ICsJCQkJICAgIGNvbnN0IGNoYXIgKm5hbWUpOwo+ICB2b2lkIG1vY2tfZW5naW5lX2ZsdXNo KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSk7Cj4gIHZvaWQgbW9ja19lbmdpbmVfcmVz ZXQoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKTsKPiArdm9pZCBtb2NrX2VuZ2luZV9m cmVlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSk7Cj4KPiAgc3RhdGljIGlubGluZSB2 b2lkIG1vY2tfc2Vxbm9fYWR2YW5jZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsIHUz MiBzZXFubykKPiAgewo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVz dHMvbW9ja19nZW1fZGV2aWNlLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvbW9j a19nZW1fZGV2aWNlLmMKPiBpbmRleCA4ZjVmYmMxOGE2MDcuLjdjZTg2ZWQ3MTc2NCAxMDA2NDQK PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvbW9ja19nZW1fZGV2aWNlLmMK PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvbW9ja19nZW1fZGV2aWNlLmMK PiBAQCAtMjQsMjEgKzI0LDU3IEBACj4KPiAgI2luY2x1ZGUgPGxpbnV4L3BtX3J1bnRpbWUuaD4K Pgo+ICsjaW5jbHVkZSAibW9ja19lbmdpbmUuaCIKPiArI2luY2x1ZGUgIm1vY2tfY29udGV4dC5o Igo+ICsjaW5jbHVkZSAibW9ja19yZXF1ZXN0LmgiCj4gICNpbmNsdWRlICJtb2NrX2dlbV9kZXZp Y2UuaCIKPiAgI2luY2x1ZGUgIm1vY2tfZ2VtX29iamVjdC5oIgo+ICAjaW5jbHVkZSAibW9ja19n dHQuaCIKPgo+ICt2b2lkIG1vY2tfZGV2aWNlX2ZsdXNoKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICppOTE1KQo+ICt7Cj4gKwlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmU7Cj4gKwllbnVt IGludGVsX2VuZ2luZV9pZCBpZDsKPiArCj4gKwlsb2NrZGVwX2Fzc2VydF9oZWxkKCZpOTE1LT5k cm0uc3RydWN0X211dGV4KTsKPiArCj4gKwlmb3JfZWFjaF9lbmdpbmUoZW5naW5lLCBpOTE1LCBp ZCkKPiArCQltb2NrX2VuZ2luZV9mbHVzaChlbmdpbmUpOwo+ICsKPiArCWk5MTVfZ2VtX3JldGly ZV9yZXF1ZXN0cyhpOTE1KTsKPiArfQo+ICsKPiAgc3RhdGljIHZvaWQgbW9ja19kZXZpY2VfcmVs ZWFzZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICB7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqaTkxNSA9IHRvX2k5MTUoZGV2KTsKPiArCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVu Z2luZTsKPiArCWVudW0gaW50ZWxfZW5naW5lX2lkIGlkOwo+Cj4gIAltdXRleF9sb2NrKCZpOTE1 LT5kcm0uc3RydWN0X211dGV4KTsKPiArCW1vY2tfZGV2aWNlX2ZsdXNoKGk5MTUpOwo+ICsJbXV0 ZXhfdW5sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiArCj4gKwljYW5jZWxfZGVsYXll ZF93b3JrX3N5bmMoJmk5MTUtPmd0LnJldGlyZV93b3JrKTsKPiArCWNhbmNlbF9kZWxheWVkX3dv cmtfc3luYygmaTkxNS0+Z3QuaWRsZV93b3JrKTsKPiArCj4gKwltdXRleF9sb2NrKCZpOTE1LT5k cm0uc3RydWN0X211dGV4KTsKPiArCWZvcl9lYWNoX2VuZ2luZShlbmdpbmUsIGk5MTUsIGlkKQo+ ICsJCW1vY2tfZW5naW5lX2ZyZWUoZW5naW5lKTsKPiArCj4gKwlpOTE1X2dlbV9jb250ZXh0X2Zp bmkoaTkxNSk7Cj4gKwo+ICAJbW9ja19maW5pX2dndHQoaTkxNSk7Cj4gIAlpOTE1X2dlbV90aW1l bGluZV9maW5pKCZpOTE1LT5ndC5nbG9iYWxfdGltZWxpbmUpOwo+ICAJbXV0ZXhfdW5sb2NrKCZp OTE1LT5kcm0uc3RydWN0X211dGV4KTsKPgo+ICsJZHJhaW5fd29ya3F1ZXVlKGk5MTUtPndxKTsK PiArCj4gIAlpOTE1X2dlbV9kcmFpbl9mcmVlZF9vYmplY3RzKGk5MTUpOwo+Cj4gKwlkZXN0cm95 X3dvcmtxdWV1ZShpOTE1LT53cSk7Cj4gKwo+ICsJa21lbV9jYWNoZV9kZXN0cm95KGk5MTUtPmRl cGVuZGVuY2llcyk7Cj4gKwlrbWVtX2NhY2hlX2Rlc3Ryb3koaTkxNS0+cmVxdWVzdHMpOwo+ICAJ a21lbV9jYWNoZV9kZXN0cm95KGk5MTUtPnZtYXMpOwo+ICAJa21lbV9jYWNoZV9kZXN0cm95KGk5 MTUtPm9iamVjdHMpOwo+ICAJcHV0X2RldmljZSgmaTkxNS0+ZHJtLnBkZXYtPmRldik7Cj4gQEAg LTYwLDkgKzk2LDE5IEBAIHN0YXRpYyB2b2lkIHJlbGVhc2VfZGV2KHN0cnVjdCBkZXZpY2UgKmRl dikKPiAgCWtmcmVlKHBkZXYpOwo+ICB9Cj4KPiArc3RhdGljIHZvaWQgbW9ja19yZXRpcmVfd29y a19oYW5kbGVyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKPiArewo+ICt9Cj4gKwo+ICtzdGF0 aWMgdm9pZCBtb2NrX2lkbGVfd29ya19oYW5kbGVyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykK PiArewo+ICt9Cj4gKwo+ICBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqbW9ja19nZW1fZGV2aWNl KHZvaWQpCj4gIHsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1Owo+ICsJc3RydWN0 IGludGVsX2VuZ2luZV9jcyAqZW5naW5lOwo+ICsJZW51bSBpbnRlbF9lbmdpbmVfaWQgaWQ7Cj4g IAlzdHJ1Y3QgcGNpX2RldiAqcGRldjsKPiAgCWludCBlcnI7Cj4KPiBAQCAtOTgsMzYgKzE0NCw4 MSBAQCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqbW9ja19nZW1fZGV2aWNlKHZvaWQpCj4KPiAg CXNwaW5fbG9ja19pbml0KCZpOTE1LT5tbS5vYmplY3Rfc3RhdF9sb2NrKTsKPgo+ICsJaW5pdF93 YWl0cXVldWVfaGVhZCgmaTkxNS0+Z3B1X2Vycm9yLndhaXRfcXVldWUpOwo+ICsJaW5pdF93YWl0 cXVldWVfaGVhZCgmaTkxNS0+Z3B1X2Vycm9yLnJlc2V0X3F1ZXVlKTsKPiArCj4gKwlpOTE1LT53 cSA9IGFsbG9jX29yZGVyZWRfd29ya3F1ZXVlKCJtb2NrIiwgMCk7Cj4gKwlpZiAoIWk5MTUtPndx KQo+ICsJCWdvdG8gcHV0X2RldmljZTsKPiArCj4gIAlJTklUX1dPUksoJmk5MTUtPm1tLmZyZWVf d29yaywgX19pOTE1X2dlbV9mcmVlX3dvcmspOwo+ICAJaW5pdF9sbGlzdF9oZWFkKCZpOTE1LT5t bS5mcmVlX2xpc3QpOwo+ICAJSU5JVF9MSVNUX0hFQUQoJmk5MTUtPm1tLnVuYm91bmRfbGlzdCk7 Cj4gIAlJTklUX0xJU1RfSEVBRCgmaTkxNS0+bW0uYm91bmRfbGlzdCk7Cj4KPiArCWlkYV9pbml0 KCZpOTE1LT5jb250ZXh0X2h3X2lkYSk7Cj4gKwo+ICsJSU5JVF9ERUxBWUVEX1dPUksoJmk5MTUt Pmd0LnJldGlyZV93b3JrLCBtb2NrX3JldGlyZV93b3JrX2hhbmRsZXIpOwo+ICsJSU5JVF9ERUxB WUVEX1dPUksoJmk5MTUtPmd0LmlkbGVfd29yaywgbW9ja19pZGxlX3dvcmtfaGFuZGxlcik7Cj4g Kwo+ICsJaTkxNS0+Z3QuYXdha2UgPSB0cnVlOwo+ICsKPiAgCWk5MTUtPm9iamVjdHMgPSBLTUVN X0NBQ0hFKG1vY2tfb2JqZWN0LCBTTEFCX0hXQ0FDSEVfQUxJR04pOwo+ICAJaWYgKCFpOTE1LT5v YmplY3RzKQo+IC0JCWdvdG8gcHV0X2RldmljZTsKPiArCQlnb3RvIGVycl93cTsKPgo+ICAJaTkx NS0+dm1hcyA9IEtNRU1fQ0FDSEUoaTkxNV92bWEsIFNMQUJfSFdDQUNIRV9BTElHTik7Cj4gIAlp ZiAoIWk5MTUtPnZtYXMpCj4gIAkJZ290byBlcnJfb2JqZWN0czsKPgo+ICsJaTkxNS0+cmVxdWVz dHMgPSBLTUVNX0NBQ0hFKG1vY2tfcmVxdWVzdCwKPiArCQkJCSAgICBTTEFCX0hXQ0FDSEVfQUxJ R04gfAo+ICsJCQkJICAgIFNMQUJfUkVDTEFJTV9BQ0NPVU5UIHwKPiArCQkJCSAgICBTTEFCX0RF U1RST1lfQllfUkNVKTsKPiArCWlmICghaTkxNS0+cmVxdWVzdHMpCj4gKwkJZ290byBlcnJfdm1h czsKPiArCj4gKwlpOTE1LT5kZXBlbmRlbmNpZXMgPSBLTUVNX0NBQ0hFKGk5MTVfZGVwZW5kZW5j eSwKPiArCQkJCQlTTEFCX0hXQ0FDSEVfQUxJR04gfAo+ICsJCQkJCVNMQUJfUkVDTEFJTV9BQ0NP VU5UKTsKPiArCWlmICghaTkxNS0+ZGVwZW5kZW5jaWVzKQo+ICsJCWdvdG8gZXJyX3JlcXVlc3Rz Owo+ICsKPiAgCW11dGV4X2xvY2soJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+ICAJSU5JVF9M SVNUX0hFQUQoJmk5MTUtPmd0LnRpbWVsaW5lcyk7Cj4gIAllcnIgPSBpOTE1X2dlbV90aW1lbGlu ZV9pbml0X19nbG9iYWwoaTkxNSk7Cj4gIAlpZiAoZXJyKSB7Cj4gIAkJbXV0ZXhfdW5sb2NrKCZp OTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiAtCQlnb3RvIGVycl92bWFzOwo+ICsJCWdvdG8gZXJy X2RlcGVuZGVuY2llczsKPiAgCX0KPgo+ICAJbW9ja19pbml0X2dndHQoaTkxNSk7Cj4gIAltdXRl eF91bmxvY2soJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+Cj4gKwlta3dyaXRlX2RldmljZV9p bmZvKGk5MTUpLT5yaW5nX21hc2sgPSBCSVQoMCk7Cj4gKwlpOTE1LT5lbmdpbmVbUkNTXSA9IG1v Y2tfZW5naW5lKGk5MTUsICJtb2NrIik7Cj4gKwlpZiAoIWk5MTUtPmVuZ2luZVtSQ1NdKQo+ICsJ CWdvdG8gZXJyX2RlcGVuZGVuY2llczsKPiArCj4gKwlpOTE1LT5rZXJuZWxfY29udGV4dCA9IG1v Y2tfY29udGV4dChpOTE1LCBOVUxMKTsKPiArCWlmICghaTkxNS0+a2VybmVsX2NvbnRleHQpCj4g KwkJZ290byBlcnJfZW5naW5lOwo+ICsKPiAgCXJldHVybiBpOTE1Owo+Cj4gK2Vycl9lbmdpbmU6 Cj4gKwlmb3JfZWFjaF9lbmdpbmUoZW5naW5lLCBpOTE1LCBpZCkKPiArCQltb2NrX2VuZ2luZV9m cmVlKGVuZ2luZSk7Cj4gK2Vycl9kZXBlbmRlbmNpZXM6Cj4gKwlrbWVtX2NhY2hlX2Rlc3Ryb3ko aTkxNS0+ZGVwZW5kZW5jaWVzKTsKPiArZXJyX3JlcXVlc3RzOgo+ICsJa21lbV9jYWNoZV9kZXN0 cm95KGk5MTUtPnJlcXVlc3RzKTsKPiAgZXJyX3ZtYXM6Cj4gIAlrbWVtX2NhY2hlX2Rlc3Ryb3ko aTkxNS0+dm1hcyk7Cj4gIGVycl9vYmplY3RzOgo+ICAJa21lbV9jYWNoZV9kZXN0cm95KGk5MTUt Pm9iamVjdHMpOwo+ICtlcnJfd3E6Cj4gKwlkZXN0cm95X3dvcmtxdWV1ZShpOTE1LT53cSk7Cj4g IHB1dF9kZXZpY2U6Cj4gIAlwdXRfZGV2aWNlKCZwZGV2LT5kZXYpOwo+ICBmcmVlX2RldmljZToK PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL21vY2tfZ2VtX2Rl dmljZS5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL21vY2tfZ2VtX2RldmljZS5o Cj4gaW5kZXggN2ZmN2M4NDhmNzMxLi43ZWNlZmY3NjY5NTcgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL21vY2tfZ2VtX2RldmljZS5oCj4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL21vY2tfZ2VtX2RldmljZS5oCj4gQEAgLTQsNSArNCw2 IEBACj4gICNpbmNsdWRlICJpOTE1X2Rydi5oIgo+Cj4gIHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICptb2NrX2dlbV9kZXZpY2Uodm9pZCk7Cj4gK3ZvaWQgbW9ja19kZXZpY2VfZmx1c2goc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpOwo+Cj4gICNlbmRpZiAvKiAhX19NT0NLX0dFTV9ERVZJ Q0VfSF9fICovCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9t b2NrX3JlcXVlc3QuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9tb2NrX3JlcXVl c3QuYwo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMDAwMDAwLi5lMjMyNDJk MWI4OGEKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRl c3RzL21vY2tfcmVxdWVzdC5jCj4gQEAgLTAsMCArMSw0NCBAQAo+ICsvKgo+ICsgKiBDb3B5cmln aHQgwqkgMjAxNiBJbnRlbCBDb3Jwb3JhdGlvbgo+ICsgKgo+ICsgKiBQZXJtaXNzaW9uIGlzIGhl cmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQo+ ICsgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBm aWxlcyAodGhlICJTb2Z0d2FyZSIpLAo+ICsgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRo b3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCj4gKyAqIHRoZSBy aWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBz dWJsaWNlbnNlLAo+ICsgKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQg dG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUKPiArICogU29mdHdhcmUgaXMgZnVybmlzaGVk IHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKPiArICoKPiAr ICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ug KGluY2x1ZGluZyB0aGUgbmV4dAo+ICsgKiBwYXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVkIGlu IGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlCj4gKyAqIFNvZnR3YXJl Lgo+ICsgKgo+ICsgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBX QVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgo+ICsgKiBJTVBMSUVELCBJTkNMVURJTkcg QlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKPiAr ICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4g IElOIE5PIEVWRU5UIFNIQUxMCj4gKyAqIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJT IEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCj4gKyAqIExJQUJJTElU WSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBB UklTSU5HCj4gKyAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRX QVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MKPiArICogSU4gVEhFIFNPRlRXQVJFLgo+ ICsgKgo+ICsgKi8KPiArCj4gKyNpbmNsdWRlICJtb2NrX3JlcXVlc3QuaCIKPiArCj4gK3N0cnVj dCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqCj4gK21vY2tfcmVxdWVzdChzdHJ1Y3QgaW50ZWxfZW5n aW5lX2NzICplbmdpbmUsCj4gKwkgICAgIHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjb250ZXh0 LAo+ICsJICAgICB1bnNpZ25lZCBsb25nIGRlbGF5KQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVf Z2VtX3JlcXVlc3QgKnJlcXVlc3Q7Cj4gKwlzdHJ1Y3QgbW9ja19yZXF1ZXN0ICptb2NrOwo+ICsK PiArCS8qIE5CIHRoZSBpOTE1LT5yZXF1ZXN0cyBzbGFiIGNhY2hlIGlzIGVubGFyZ2VkIHRvIGZp dCBtb2NrX3JlcXVlc3QgKi8KPiArCXJlcXVlc3QgPSBpOTE1X2dlbV9yZXF1ZXN0X2FsbG9jKGVu Z2luZSwgY29udGV4dCk7Cj4gKwlpZiAoIXJlcXVlc3QpCj4gKwkJcmV0dXJuIE5VTEw7Cj4gKwo+ ICsJbW9jayA9IGNvbnRhaW5lcl9vZihyZXF1ZXN0LCB0eXBlb2YoKm1vY2spLCBiYXNlKTsKPiAr CW1vY2stPmRlbGF5ID0gZGVsYXk7Cj4gKwo+ICsJcmV0dXJuICZtb2NrLT5iYXNlOwo+ICt9Cj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9tb2NrX3JlcXVlc3Qu aCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9tb2NrX3JlcXVlc3QuaAo+IG5ldyBm aWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMDAwMDAwLi45YzczOTEyNWNhYjUKPiAtLS0g L2Rldi9udWxsCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL21vY2tfcmVx dWVzdC5oCj4gQEAgLTAsMCArMSw0NCBAQAo+ICsvKgo+ICsgKiBDb3B5cmlnaHQgwqkgMjAxNiBJ bnRlbCBDb3Jwb3JhdGlvbgo+ICsgKgo+ICsgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVk LCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQo+ICsgKiBjb3B5IG9m IHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJT b2Z0d2FyZSIpLAo+ICsgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0 aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCj4gKyAqIHRoZSByaWdodHMgdG8gdXNl LCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAo+ ICsgKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBl cnNvbnMgdG8gd2hvbSB0aGUKPiArICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBz dWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKPiArICoKPiArICogVGhlIGFib3Zl IGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZyB0 aGUgbmV4dAo+ICsgKiBwYXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMg b3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlCj4gKyAqIFNvZnR3YXJlLgo+ICsgKgo+ICsg KiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBB TlkgS0lORCwgRVhQUkVTUyBPUgo+ICsgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1J VEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKPiArICogRklUTkVTUyBG T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5U IFNIQUxMCj4gKyAqIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBG T1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCj4gKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJ TiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCj4gKyAq IEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBV U0UgT1IgT1RIRVIgREVBTElOR1MKPiArICogSU4gVEhFIFNPRlRXQVJFLgo+ICsgKgo+ICsgKi8K PiArCj4gKyNpZm5kZWYgX19NT0NLX1JFUVVFU1RfXwo+ICsjZGVmaW5lIF9fTU9DS19SRVFVRVNU X18KPiArCj4gKyNpbmNsdWRlIDxsaW51eC9saXN0Lmg+Cj4gKwo+ICsjaW5jbHVkZSAiaTkxNV9n ZW1fcmVxdWVzdC5oIgo+ICsKPiArc3RydWN0IG1vY2tfcmVxdWVzdCB7Cj4gKwlzdHJ1Y3QgZHJt X2k5MTVfZ2VtX3JlcXVlc3QgYmFzZTsKPiArCj4gKwlzdHJ1Y3QgbGlzdF9oZWFkIGxpbms7Cj4g Kwl1bnNpZ25lZCBsb25nIGRlbGF5Owo+ICt9Owo+ICsKPiArc3RydWN0IGRybV9pOTE1X2dlbV9y ZXF1ZXN0ICoKPiArbW9ja19yZXF1ZXN0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwK PiArCSAgICAgc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmNvbnRleHQsCj4gKwkgICAgIHVuc2ln bmVkIGxvbmcgZGVsYXkpOwo+ICsKPiArI2VuZGlmIC8qICFfX01PQ0tfUkVRVUVTVF9fICovCj4K Ckxvb2tzIHJlYXNvbmFibGUuIEkgc2F5IHdlIHJ1biB3aXRoIGFuZCBpZiBJIG1pc3NlZCBzb21l dGhpbmcgZml4IGl0IGluIAp0aGUgZmx5LiBXaXRoIHRoZSBuYW1lIGxlYWsgYW5kIEdGUCBmbGFn cyB0aWR5OgoKUmV2aWV3ZWQtYnk6IFR2cnRrbyBVcnN1bGluIDx0dnJ0a28udXJzdWxpbkBpbnRl bC5jb20+CgpSZWdhcmRzLAoKVHZydGtvCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZy ZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3Rp bmZvL2ludGVsLWdmeAo=