From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jani Nikula Subject: Re: [PATCH 02/13] drm/i915: Implement command buffer parsing logic Date: Thu, 06 Mar 2014 15:10:50 +0200 Message-ID: <87mwh3321x.fsf@intel.com> References: <1392747357-25703-1-git-send-email-bradley.d.volkin@intel.com> <1392747357-25703-3-git-send-email-bradley.d.volkin@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTP id A1345FA290 for ; Thu, 6 Mar 2014 05:10:57 -0800 (PST) In-Reply-To: <1392747357-25703-3-git-send-email-bradley.d.volkin@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: intel-gfx-bounces@lists.freedesktop.org Errors-To: intel-gfx-bounces@lists.freedesktop.org To: bradley.d.volkin@intel.com, intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gVHVlLCAxOCBGZWIgMjAxNCwgYnJhZGxleS5kLnZvbGtpbkBpbnRlbC5jb20gd3JvdGU6Cj4g RnJvbTogQnJhZCBWb2xraW4gPGJyYWRsZXkuZC52b2xraW5AaW50ZWwuY29tPgo+Cj4gVGhlIGNv bW1hbmQgcGFyc2VyIHNjYW5zIGJhdGNoIGJ1ZmZlcnMgc3VibWl0dGVkIHZpYSBleGVjYnVmZmVy IGlvY3RscyBiZWZvcmUKPiB0aGUgZHJpdmVyIHN1Ym1pdHMgdGhlbSB0byBoYXJkd2FyZS4gQXQg YSBoaWdoIGxldmVsLCBpdCBsb29rcyBmb3Igc2V2ZXJhbAo+IHRoaW5nczoKPgo+IDEpIENvbW1h bmRzIHdoaWNoIGFyZSBleHBsaWNpdGx5IGRlZmluZWQgYXMgcHJpdmlsZWdlZCBvciB3aGljaCBz aG91bGQgb25seSBiZQo+ICAgIHVzZWQgYnkgdGhlIGtlcm5lbCBkcml2ZXIuIFRoZSBwYXJzZXIg Z2VuZXJhbGx5IHJlamVjdHMgc3VjaCBjb21tYW5kcywgd2l0aAo+ICAgIHRoZSBwcm92aXNpb24g dGhhdCBpdCBtYXkgYWxsb3cgc29tZSBmcm9tIHRoZSBkcm0gbWFzdGVyIHByb2Nlc3MuCj4gMikg Q29tbWFuZHMgd2hpY2ggYWNjZXNzIHJlZ2lzdGVycy4gVG8gc3VwcG9ydCBjb3JyZWN0L2VuaGFu Y2VkIHVzZXJzcGFjZQo+ICAgIGZ1bmN0aW9uYWxpdHksIHBhcnRpY3VsYXJseSBjZXJ0YWluIE9w ZW5HTCBleHRlbnNpb25zLCB0aGUgcGFyc2VyIHByb3ZpZGVzIGEKPiAgICB3aGl0ZWxpc3Qgb2Yg cmVnaXN0ZXJzIHdoaWNoIHVzZXJzcGFjZSBtYXkgc2FmZWx5IGFjY2VzcyAoZm9yIGJvdGggbm9y bWFsIGFuZAo+ICAgIGRybSBtYXN0ZXIgcHJvY2Vzc2VzKS4KPiAzKSBDb21tYW5kcyB3aGljaCBh Y2Nlc3MgcHJpdmlsZWdlZCBtZW1vcnkgKGkuZS4gR0dUVCwgSFdTIHBhZ2UsIGV0YykuIFRoZQo+ ICAgIHBhcnNlciBhbHdheXMgcmVqZWN0cyBzdWNoIGNvbW1hbmRzLgo+Cj4gU2VlIHRoZSBvdmVy dmlldyBjb21tZW50IGluIHRoZSBzb3VyY2UgZm9yIG1vcmUgZGV0YWlscy4KPgo+IFRoaXMgcGF0 Y2ggb25seSBpbXBsZW1lbnRzIHRoZSBsb2dpYy4gU3Vic2VxdWVudCBwYXRjaGVzIHdpbGwgYnVp bGQgdGhlIHRhYmxlcwo+IHRoYXQgZHJpdmUgdGhlIHBhcnNlci4KPgo+IHYyOiBEb24ndCBzZXQg dGhlIHNlY3VyZSBiaXQgaWYgdGhlIHBhcnNlciBzdWNjZWVkcwo+IEZhaWwgaGFyZGVyIGR1cmlu ZyBpbml0Cj4gTWFrZWZpbGUgY2xlYW51cAo+IEtlcm5lbGRvYyBjbGVhbnVwCj4gQ2xhcmlmeSBt b2R1bGUgcGFyYW0gZGVzY3JpcHRpb24KPiBDb252ZXJ0IGludHMgdG8gYm9vbHMgaW4gYSBmZXcg cGxhY2VzCj4gTW92ZSBjbGllbnQvc3ViY2xpZW50IGRlZnMgdG8gaTkxNV9yZWcuaAo+IFJlbW92 ZSB0aGUgYml0c19jb3VudCBmaWVsZAo+Cj4gT1RDLVRyYWNrZXI6IEFYSUEtNDYzMQo+IENoYW5n ZS1JZDogSTUwYjk4YzcxYzY2NTU4OTMyOTFjNzhhMmQxYjg5NTQ1NzdiMzdhMzAKPiBTaWduZWQt b2ZmLWJ5OiBCcmFkIFZvbGtpbiA8YnJhZGxleS5kLnZvbGtpbkBpbnRlbC5jb20+Cj4gLS0tCj4g IGRyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlICAgICAgICAgICAgICB8ICAgMSArCj4gIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfY21kX3BhcnNlci5jICAgICB8IDQ4NSArKysrKysrKysr KysrKysrKysrKysrKysrKysrKwo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oICAg ICAgICAgICAgfCAgOTMgKysrKysrCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2V4 ZWNidWZmZXIuYyB8ICAxOCArKwo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BhcmFtcy5j ICAgICAgICAgfCAgIDUgKwo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oICAgICAg ICAgICAgfCAgMTIgKwo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMg ICAgfCAgIDIgKwo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmggICAg fCAgMzIgKysKPiAgOCBmaWxlcyBjaGFuZ2VkLCA2NDggaW5zZXJ0aW9ucygrKQo+ICBjcmVhdGUg bW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9jbWRfcGFyc2VyLmMKPgo+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZSBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L01ha2VmaWxlCj4gaW5kZXggNDg1MDQ5NC4uMzU2OTEyMiAxMDA2NDQKPiAtLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZQo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L01ha2VmaWxlCj4gQEAgLTE0LDYgKzE0LDcgQEAgaTkxNS15IDo9IGk5MTVfZHJ2Lm8gaTkxNV9k bWEubyBpOTE1X2lycS5vIFwKPiAgCSAgaTkxNV9nZW1fZ3R0Lm8gXAo+ICAJICBpOTE1X2dlbV9z dG9sZW4ubyBcCj4gIAkgIGk5MTVfZ2VtX3RpbGluZy5vIFwKPiArCSAgaTkxNV9jbWRfcGFyc2Vy Lm8gXAo+ICAJICBpOTE1X3BhcmFtcy5vIFwKPiAgCSAgaTkxNV9zeXNmcy5vIFwKPiAgCSAgaTkx NV90cmFjZV9wb2ludHMubyBcCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfY21kX3BhcnNlci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9jbWRfcGFyc2VyLmMK PiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAuLjdhNTc1NmUKPiAtLS0gL2Rl di9udWxsCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9jbWRfcGFyc2VyLmMKPiBA QCAtMCwwICsxLDQ4NSBAQAo+ICsvKgo+ICsgKiBDb3B5cmlnaHQgwqkgMjAxMyBJbnRlbCBDb3Jw b3JhdGlvbgo+ICsgKgo+ICsgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9m IGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQo+ICsgKiBjb3B5IG9mIHRoaXMgc29m dHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIp LAo+ICsgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNs dWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCj4gKyAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBt b2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAo+ICsgKiBhbmQv b3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8g d2hvbSB0aGUKPiArICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRv IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKPiArICoKPiArICogVGhlIGFib3ZlIGNvcHlyaWdo dCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZyB0aGUgbmV4dAo+ ICsgKiBwYXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3Rh bnRpYWwgcG9ydGlvbnMgb2YgdGhlCj4gKyAqIFNvZnR3YXJlLgo+ICsgKgo+ICsgKiBUSEUgU09G VFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwg RVhQUkVTUyBPUgo+ICsgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRI RSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKPiArICogRklUTkVTUyBGT1IgQSBQQVJU SUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMCj4g KyAqIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENM QUlNLCBEQU1BR0VTIE9SIE9USEVSCj4gKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJ T04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCj4gKyAqIEZST00sIE9V VCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RI RVIgREVBTElOR1MKPiArICogSU4gVEhFIFNPRlRXQVJFLgo+ICsgKgo+ICsgKiBBdXRob3JzOgo+ ICsgKiAgICBCcmFkIFZvbGtpbiA8YnJhZGxleS5kLnZvbGtpbkBpbnRlbC5jb20+Cj4gKyAqCj4g KyAqLwo+ICsKPiArI2luY2x1ZGUgImk5MTVfZHJ2LmgiCj4gKwo+ICsvKioKPiArICogRE9DOiBp OTE1IGJhdGNoIGJ1ZmZlciBjb21tYW5kIHBhcnNlcgo+ICsgKgo+ICsgKiBNb3RpdmF0aW9uOgo+ ICsgKiBDZXJ0YWluIE9wZW5HTCBmZWF0dXJlcyAoZS5nLiB0cmFuc2Zvcm0gZmVlZGJhY2ssIHBl cmZvcm1hbmNlIG1vbml0b3JpbmcpCj4gKyAqIHJlcXVpcmUgdXNlcnNwYWNlIGNvZGUgdG8gc3Vi bWl0IGJhdGNoZXMgY29udGFpbmluZyBjb21tYW5kcyBzdWNoIGFzCj4gKyAqIE1JX0xPQURfUkVH SVNURVJfSU1NIHRvIGFjY2VzcyB2YXJpb3VzIHJlZ2lzdGVycy4gVW5mb3J0dW5hdGVseSwgc29t ZQo+ICsgKiBnZW5lcmF0aW9ucyBvZiB0aGUgaGFyZHdhcmUgd2lsbCBub29wIHRoZXNlIGNvbW1h bmRzIGluICJ1bnNlY3VyZSIgYmF0Y2hlcwo+ICsgKiAod2hpY2ggaW5jbHVkZXMgYWxsIHVzZXJz cGFjZSBiYXRjaGVzIHN1Ym1pdHRlZCB2aWEgaTkxNSkgZXZlbiB0aG91Z2ggdGhlCj4gKyAqIGNv bW1hbmRzIG1heSBiZSBzYWZlIGFuZCByZXByZXNlbnQgdGhlIGludGVuZGVkIHByb2dyYW1taW5n IG1vZGVsIG9mIHRoZQo+ICsgKiBkZXZpY2UuCj4gKyAqCj4gKyAqIFRoZSBzb2Z0d2FyZSBjb21t YW5kIHBhcnNlciBpcyBzaW1pbGFyIGluIG9wZXJhdGlvbiB0byB0aGUgY29tbWFuZCBwYXJzaW5n Cj4gKyAqIGRvbmUgaW4gaGFyZHdhcmUgZm9yIHVuc2VjdXJlIGJhdGNoZXMuIEhvd2V2ZXIsIHRo ZSBzb2Z0d2FyZSBwYXJzZXIgYWxsb3dzCj4gKyAqIHNvbWUgb3BlcmF0aW9ucyB0aGF0IHdvdWxk IGJlIG5vb3AnZCBieSBoYXJkd2FyZSwgaWYgdGhlIHBhcnNlciBkZXRlcm1pbmVzCj4gKyAqIHRo ZSBvcGVyYXRpb24gaXMgc2FmZSwgYW5kIHN1Ym1pdHMgdGhlIGJhdGNoIGFzICJzZWN1cmUiIHRv IHByZXZlbnQgaGFyZHdhcmUKPiArICogcGFyc2luZy4KPiArICoKPiArICogVGhyZWF0czoKPiAr ICogQXQgYSBoaWdoIGxldmVsLCB0aGUgaGFyZHdhcmUgKGFuZCBzb2Z0d2FyZSkgY2hlY2tzIGF0 dGVtcHQgdG8gcHJldmVudAo+ICsgKiBncmFudGluZyB1c2Vyc3BhY2UgdW5kdWUgcHJpdmlsZWdl cy4gVGhlcmUgYXJlIHRocmVlIGNhdGVnb3JpZXMgb2YgcHJpdmlsZWdlLgo+ICsgKgo+ICsgKiBG aXJzdCwgY29tbWFuZHMgd2hpY2ggYXJlIGV4cGxpY2l0bHkgZGVmaW5lZCBhcyBwcml2aWxlZ2Vk IG9yIHdoaWNoIHNob3VsZAo+ICsgKiBvbmx5IGJlIHVzZWQgYnkgdGhlIGtlcm5lbCBkcml2ZXIu IFRoZSBwYXJzZXIgZ2VuZXJhbGx5IHJlamVjdHMgc3VjaAo+ICsgKiBjb21tYW5kcywgdGhvdWdo IGl0IG1heSBhbGxvdyBzb21lIGZyb20gdGhlIGRybSBtYXN0ZXIgcHJvY2Vzcy4KPiArICoKPiAr ICogU2Vjb25kLCBjb21tYW5kcyB3aGljaCBhY2Nlc3MgcmVnaXN0ZXJzLiBUbyBzdXBwb3J0IGNv cnJlY3QvZW5oYW5jZWQKPiArICogdXNlcnNwYWNlIGZ1bmN0aW9uYWxpdHksIHBhcnRpY3VsYXJs eSBjZXJ0YWluIE9wZW5HTCBleHRlbnNpb25zLCB0aGUgcGFyc2VyCj4gKyAqIHByb3ZpZGVzIGEg d2hpdGVsaXN0IG9mIHJlZ2lzdGVycyB3aGljaCB1c2Vyc3BhY2UgbWF5IHNhZmVseSBhY2Nlc3Mg KGZvciBib3RoCj4gKyAqIG5vcm1hbCBhbmQgZHJtIG1hc3RlciBwcm9jZXNzZXMpLgo+ICsgKgo+ ICsgKiBUaGlyZCwgY29tbWFuZHMgd2hpY2ggYWNjZXNzIHByaXZpbGVnZWQgbWVtb3J5IChpLmUu IEdHVFQsIEhXUyBwYWdlLCBldGMpLgo+ICsgKiBUaGUgcGFyc2VyIGFsd2F5cyByZWplY3RzIHN1 Y2ggY29tbWFuZHMuCj4gKyAqCj4gKyAqIFRoZSBtYWpvcml0eSBvZiB0aGUgcHJvYmxlbWF0aWMg Y29tbWFuZHMgZmFsbCBpbiB0aGUgTUlfKiByYW5nZSwgd2l0aCBvbmx5IGEKPiArICogZmV3IHNw ZWNpZmljIGNvbW1hbmRzIG9uIGVhY2ggcmluZyAoZS5nLiBQSVBFX0NPTlRST0wgYW5kIE1JX0ZM VVNIX0RXKS4KPiArICoKPiArICogSW1wbGVtZW50YXRpb246Cj4gKyAqIEVhY2ggcmluZyBtYWlu dGFpbnMgdGFibGVzIG9mIGNvbW1hbmRzIGFuZCByZWdpc3RlcnMgd2hpY2ggdGhlIHBhcnNlciB1 c2VzIGluCj4gKyAqIHNjYW5uaW5nIGJhdGNoIGJ1ZmZlcnMgc3VibWl0dGVkIHRvIHRoYXQgcmlu Zy4KPiArICoKPiArICogU2luY2UgdGhlIHNldCBvZiBjb21tYW5kcyB0aGF0IHRoZSBwYXJzZXIg bXVzdCBjaGVjayBmb3IgaXMgc2lnbmlmaWNhbnRseQo+ICsgKiBzbWFsbGVyIHRoYW4gdGhlIG51 bWJlciBvZiBjb21tYW5kcyBzdXBwb3J0ZWQsIHRoZSBwYXJzZXIgdGFibGVzIGNvbnRhaW4gb25s eQo+ICsgKiB0aG9zZSBjb21tYW5kcyByZXF1aXJlZCBieSB0aGUgcGFyc2VyLiBUaGlzIGdlbmVy YWxseSB3b3JrcyBiZWNhdXNlIGNvbW1hbmQKPiArICogb3Bjb2RlIHJhbmdlcyBoYXZlIHN0YW5k YXJkIGNvbW1hbmQgbGVuZ3RoIGVuY29kaW5ncy4gU28gZm9yIGNvbW1hbmRzIHRoYXQKPiArICog dGhlIHBhcnNlciBkb2VzIG5vdCBuZWVkIHRvIGNoZWNrLCBpdCBjYW4gZWFzaWx5IHNraXAgdGhl bS4gVGhpcyBpcwo+ICsgKiBpbXBsZW1lbnRhdGVkIHZpYSBhIHBlci1yaW5nIGxlbmd0aCBkZWNv ZGluZyB2ZnVuYy4KPiArICoKPiArICogVW5mb3J0dW5hdGVseSwgdGhlcmUgYXJlIGEgbnVtYmVy IG9mIGNvbW1hbmRzIHRoYXQgZG8gbm90IGZvbGxvdyB0aGUgc3RhbmRhcmQKPiArICogbGVuZ3Ro IGVuY29kaW5nIGZvciB0aGVpciBvcGNvZGUgcmFuZ2UsIHByaW1hcmlseSBhbW9uZ3N0IHRoZSBN SV8qIGNvbW1hbmRzLgo+ICsgKiBUbyBoYW5kbGUgdGhpcywgdGhlIHBhcnNlciBwcm92aWRlcyBh IHdheSB0byBkZWZpbmUgZXhwbGljaXQgInNraXAiIGVudHJpZXMKPiArICogaW4gdGhlIHBlci1y aW5nIGNvbW1hbmQgdGFibGVzLgo+ICsgKgo+ICsgKiBPdGhlciBjb21tYW5kIHRhYmxlIGVudHJp ZXMgbWFwIGZhaXJseSBkaXJlY3RseSB0byBoaWdoIGxldmVsIGNhdGVnb3JpZXMKPiArICogbWVu dGlvbmVkIGFib3ZlOiByZWplY3RlZCwgbWFzdGVyLW9ubHksIHJlZ2lzdGVyIHdoaXRlbGlzdC4g VGhlIHBhcnNlcgo+ICsgKiBpbXBsZW1lbnRzIGEgbnVtYmVyIG9mIGNoZWNrcywgaW5jbHVkaW5n IHRoZSBwcml2aWxlZ2VkIG1lbW9yeSBjaGVja3MsIHZpYSBhCj4gKyAqIGdlbmVyYWwgYml0bWFz a2luZyBtZWNoYW5pc20uCj4gKyAqLwo+ICsKPiArc3RhdGljIHUzMiBnZW43X3JlbmRlcl9nZXRf Y21kX2xlbmd0aF9tYXNrKHUzMiBjbWRfaGVhZGVyKQo+ICt7Cj4gKwl1MzIgY2xpZW50ID0gKGNt ZF9oZWFkZXIgJiBJTlNUUl9DTElFTlRfTUFTSykgPj4gSU5TVFJfQ0xJRU5UX1NISUZUOwo+ICsJ dTMyIHN1YmNsaWVudCA9Cj4gKwkJKGNtZF9oZWFkZXIgJiBJTlNUUl9TVUJDTElFTlRfTUFTSykg Pj4gSU5TVFJfU1VCQ0xJRU5UX1NISUZUOwo+ICsKPiArCWlmIChjbGllbnQgPT0gSU5TVFJfTUlf Q0xJRU5UKQo+ICsJCXJldHVybiAweDNGOwo+ICsJZWxzZSBpZiAoY2xpZW50ID09IElOU1RSX1JD X0NMSUVOVCkgewo+ICsJCWlmIChzdWJjbGllbnQgPT0gSU5TVFJfTUVESUFfU1VCQ0xJRU5UKQo+ ICsJCQlyZXR1cm4gMHhGRkZGOwo+ICsJCWVsc2UKPiArCQkJcmV0dXJuIDB4RkY7Cj4gKwl9Cj4g Kwo+ICsJRFJNX0RFQlVHX0RSSVZFUigiQ01EOiBBYm5vcm1hbCByY3MgY21kIGxlbmd0aCEgMHgl MDhYXG4iLCBjbWRfaGVhZGVyKTsKPiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdTMy IGdlbjdfYnNkX2dldF9jbWRfbGVuZ3RoX21hc2sodTMyIGNtZF9oZWFkZXIpCj4gK3sKPiArCXUz MiBjbGllbnQgPSAoY21kX2hlYWRlciAmIElOU1RSX0NMSUVOVF9NQVNLKSA+PiBJTlNUUl9DTElF TlRfU0hJRlQ7Cj4gKwl1MzIgc3ViY2xpZW50ID0KPiArCQkoY21kX2hlYWRlciAmIElOU1RSX1NV QkNMSUVOVF9NQVNLKSA+PiBJTlNUUl9TVUJDTElFTlRfU0hJRlQ7Cj4gKwo+ICsJaWYgKGNsaWVu dCA9PSBJTlNUUl9NSV9DTElFTlQpCj4gKwkJcmV0dXJuIDB4M0Y7Cj4gKwllbHNlIGlmIChjbGll bnQgPT0gSU5TVFJfUkNfQ0xJRU5UKSB7Cj4gKwkJaWYgKHN1YmNsaWVudCA9PSBJTlNUUl9NRURJ QV9TVUJDTElFTlQpCj4gKwkJCXJldHVybiAweEZGRjsKPiArCQllbHNlCj4gKwkJCXJldHVybiAw eEZGOwo+ICsJfQo+ICsKPiArCURSTV9ERUJVR19EUklWRVIoIkNNRDogQWJub3JtYWwgYnNkIGNt ZCBsZW5ndGghIDB4JTA4WFxuIiwgY21kX2hlYWRlcik7Cj4gKwlyZXR1cm4gMDsKPiArfQo+ICsK PiArc3RhdGljIHUzMiBnZW43X2JsdF9nZXRfY21kX2xlbmd0aF9tYXNrKHUzMiBjbWRfaGVhZGVy KQo+ICt7Cj4gKwl1MzIgY2xpZW50ID0gKGNtZF9oZWFkZXIgJiBJTlNUUl9DTElFTlRfTUFTSykg Pj4gSU5TVFJfQ0xJRU5UX1NISUZUOwo+ICsKPiArCWlmIChjbGllbnQgPT0gSU5TVFJfTUlfQ0xJ RU5UKQo+ICsJCXJldHVybiAweDNGOwo+ICsJZWxzZSBpZiAoY2xpZW50ID09IElOU1RSX0JDX0NM SUVOVCkKPiArCQlyZXR1cm4gMHhGRjsKPiArCj4gKwlEUk1fREVCVUdfRFJJVkVSKCJDTUQ6IEFi bm9ybWFsIGJsdCBjbWQgbGVuZ3RoISAweCUwOFhcbiIsIGNtZF9oZWFkZXIpOwo+ICsJcmV0dXJu IDA7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIHZhbGlkYXRlX2NtZHNfc29ydGVkKHN0cnVjdCBp bnRlbF9yaW5nX2J1ZmZlciAqcmluZykKPiArewo+ICsJaW50IGk7Cj4gKwo+ICsJaWYgKCFyaW5n LT5jbWRfdGFibGVzIHx8IHJpbmctPmNtZF90YWJsZV9jb3VudCA9PSAwKQo+ICsJCXJldHVybjsK PiArCj4gKwlmb3IgKGkgPSAwOyBpIDwgcmluZy0+Y21kX3RhYmxlX2NvdW50OyBpKyspIHsKPiAr CQljb25zdCBzdHJ1Y3QgZHJtX2k5MTVfY21kX3RhYmxlICp0YWJsZSA9ICZyaW5nLT5jbWRfdGFi bGVzW2ldOwo+ICsJCXUzMiBwcmV2aW91cyA9IDA7Cj4gKwkJaW50IGo7Cj4gKwo+ICsJCWZvciAo aiA9IDA7IGogPCB0YWJsZS0+Y291bnQ7IGorKykgewo+ICsJCQljb25zdCBzdHJ1Y3QgZHJtX2k5 MTVfY21kX2Rlc2NyaXB0b3IgKmRlc2MgPQo+ICsJCQkJJnRhYmxlLT50YWJsZVtpXTsKPiArCQkJ dTMyIGN1cnIgPSBkZXNjLT5jbWQudmFsdWUgJiBkZXNjLT5jbWQubWFzazsKPiArCj4gKwkJCWlm IChjdXJyIDwgcHJldmlvdXMpCj4gKwkJCQlEUk1fRVJST1IoIkNNRDogdGFibGUgbm90IHNvcnRl ZCByaW5nPSVkIHRhYmxlPSVkIGVudHJ5PSVkIGNtZD0weCUwOFggcHJldj0weCUwOFhcbiIsCj4g KwkJCQkJICByaW5nLT5pZCwgaSwgaiwgY3VyciwgcHJldmlvdXMpOwo+ICsKPiArCQkJcHJldmlv dXMgPSBjdXJyOwo+ICsJCX0KPiArCX0KPiArfQo+ICsKPiArc3RhdGljIHZvaWQgY2hlY2tfc29y dGVkKGludCByaW5nX2lkLCBjb25zdCB1MzIgKnJlZ190YWJsZSwgaW50IHJlZ19jb3VudCkKPiAr ewo+ICsJaW50IGk7Cj4gKwl1MzIgcHJldmlvdXMgPSAwOwo+ICsKPiArCWZvciAoaSA9IDA7IGkg PCByZWdfY291bnQ7IGkrKykgewo+ICsJCXUzMiBjdXJyID0gcmVnX3RhYmxlW2ldOwo+ICsKPiAr CQlpZiAoY3VyciA8IHByZXZpb3VzKQo+ICsJCQlEUk1fRVJST1IoIkNNRDogdGFibGUgbm90IHNv cnRlZCByaW5nPSVkIGVudHJ5PSVkIHJlZz0weCUwOFggcHJldj0weCUwOFhcbiIsCj4gKwkJCQkg IHJpbmdfaWQsIGksIGN1cnIsIHByZXZpb3VzKTsKPiArCj4gKwkJcHJldmlvdXMgPSBjdXJyOwo+ ICsJfQo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCB2YWxpZGF0ZV9yZWdzX3NvcnRlZChzdHJ1Y3Qg aW50ZWxfcmluZ19idWZmZXIgKnJpbmcpCj4gK3sKPiArCWNoZWNrX3NvcnRlZChyaW5nLT5pZCwg cmluZy0+cmVnX3RhYmxlLCByaW5nLT5yZWdfY291bnQpOwo+ICsJY2hlY2tfc29ydGVkKHJpbmct PmlkLCByaW5nLT5tYXN0ZXJfcmVnX3RhYmxlLCByaW5nLT5tYXN0ZXJfcmVnX2NvdW50KTsKPiAr fQo+ICsKPiArLyoqCj4gKyAqIGk5MTVfY21kX3BhcnNlcl9pbml0X3JpbmcoKSAtIHNldCBjbWQg cGFyc2VyIHJlbGF0ZWQgZmllbGRzIGZvciBhIHJpbmdidWZmZXIKPiArICogQHJpbmc6IHRoZSBy aW5nYnVmZmVyIHRvIGluaXRpYWxpemUKPiArICoKPiArICogT3B0aW9uYWxseSBpbml0aWFsaXpl cyBmaWVsZHMgcmVsYXRlZCB0byBiYXRjaCBidWZmZXIgY29tbWFuZCBwYXJzaW5nIGluIHRoZQo+ ICsgKiBzdHJ1Y3QgaW50ZWxfcmluZ19idWZmZXIgYmFzZWQgb24gd2hldGhlciB0aGUgcGxhdGZv cm0gcmVxdWlyZXMgc29mdHdhcmUKPiArICogY29tbWFuZCBwYXJzaW5nLgo+ICsgKi8KPiArdm9p ZCBpOTE1X2NtZF9wYXJzZXJfaW5pdF9yaW5nKHN0cnVjdCBpbnRlbF9yaW5nX2J1ZmZlciAqcmlu ZykKPiArewo+ICsJaWYgKCFJU19HRU43KHJpbmctPmRldikpCj4gKwkJcmV0dXJuOwo+ICsKPiAr CXN3aXRjaCAocmluZy0+aWQpIHsKPiArCWNhc2UgUkNTOgo+ICsJCXJpbmctPmdldF9jbWRfbGVu Z3RoX21hc2sgPSBnZW43X3JlbmRlcl9nZXRfY21kX2xlbmd0aF9tYXNrOwo+ICsJCWJyZWFrOwo+ ICsJY2FzZSBWQ1M6Cj4gKwkJcmluZy0+Z2V0X2NtZF9sZW5ndGhfbWFzayA9IGdlbjdfYnNkX2dl dF9jbWRfbGVuZ3RoX21hc2s7Cj4gKwkJYnJlYWs7Cj4gKwljYXNlIEJDUzoKPiArCQlyaW5nLT5n ZXRfY21kX2xlbmd0aF9tYXNrID0gZ2VuN19ibHRfZ2V0X2NtZF9sZW5ndGhfbWFzazsKPiArCQli cmVhazsKPiArCWNhc2UgVkVDUzoKPiArCQkvKiBWRUNTIGNhbiB1c2UgdGhlIHNhbWUgbGVuZ3Ro X21hc2sgZnVuY3Rpb24gYXMgVkNTICovCj4gKwkJcmluZy0+Z2V0X2NtZF9sZW5ndGhfbWFzayA9 IGdlbjdfYnNkX2dldF9jbWRfbGVuZ3RoX21hc2s7Cj4gKwkJYnJlYWs7Cj4gKwlkZWZhdWx0Ogo+ ICsJCURSTV9FUlJPUigiQ01EOiBjbWRfcGFyc2VyX2luaXQgd2l0aCB1bmtub3duIHJpbmc6ICVk XG4iLAo+ICsJCQkgIHJpbmctPmlkKTsKPiArCQlCVUcoKTsKPiArCX0KPiArCj4gKwl2YWxpZGF0 ZV9jbWRzX3NvcnRlZChyaW5nKTsKPiArCXZhbGlkYXRlX3JlZ3Nfc29ydGVkKHJpbmcpOwoKU28g aWYgeW91IGNvbWUgdG8gcmVseSBvbiB0aGUgdGFibGVzIGJlaW5nIHNvcnRlZCBsYXRlciBvbiwg SSdkIGxpa2UgdGhlCmFib3ZlIGZ1bmN0aW9ucyB0byByZXR1cm4gd2hldGhlciBldmVyeXRoaW5n IHdhcyBva2F5IG9yIG5vdCwgYW5kIEJVRygpCmhlcmUgaWYgbm90LiBUaGlzIGNhbiBiZSBhIGZv bGxvdy11cCwgYW5kICptdXN0KiBiZSBhZGRlZCBiZWZvcmUgZG9pbmcKYW55dGhpbmcgdGhhdCBy ZWFsbHkgcmVxdWlyZXMgdGhlIHRhYmxlcyB0byBiZSBzb3J0ZWQuCgpSZXZpZXdlZC1ieTogSmFu aSBOaWt1bGEgPGphbmkubmlrdWxhQGludGVsLmNvbT4KCgo+ICt9Cj4gKwo+ICtzdGF0aWMgY29u c3Qgc3RydWN0IGRybV9pOTE1X2NtZF9kZXNjcmlwdG9yKgo+ICtmaW5kX2NtZF9pbl90YWJsZShj b25zdCBzdHJ1Y3QgZHJtX2k5MTVfY21kX3RhYmxlICp0YWJsZSwKPiArCQkgIHUzMiBjbWRfaGVh ZGVyKQo+ICt7Cj4gKwlpbnQgaTsKPiArCj4gKwlmb3IgKGkgPSAwOyBpIDwgdGFibGUtPmNvdW50 OyBpKyspIHsKPiArCQljb25zdCBzdHJ1Y3QgZHJtX2k5MTVfY21kX2Rlc2NyaXB0b3IgKmRlc2Mg PSAmdGFibGUtPnRhYmxlW2ldOwo+ICsJCXUzMiBtYXNrZWRfY21kID0gZGVzYy0+Y21kLm1hc2sg JiBjbWRfaGVhZGVyOwo+ICsJCXUzMiBtYXNrZWRfdmFsdWUgPSBkZXNjLT5jbWQudmFsdWUgJiBk ZXNjLT5jbWQubWFzazsKPiArCj4gKwkJaWYgKG1hc2tlZF9jbWQgPT0gbWFza2VkX3ZhbHVlKQo+ ICsJCQlyZXR1cm4gZGVzYzsKPiArCX0KPiArCj4gKwlyZXR1cm4gTlVMTDsKPiArfQo+ICsKPiAr LyoKPiArICogUmV0dXJucyBhIHBvaW50ZXIgdG8gYSBkZXNjcmlwdG9yIGZvciB0aGUgY29tbWFu ZCBzcGVjaWZpZWQgYnkgY21kX2hlYWRlci4KPiArICoKPiArICogVGhlIGNhbGxlciBtdXN0IHN1 cHBseSBzcGFjZSBmb3IgYSBkZWZhdWx0IGRlc2NyaXB0b3IgdmlhIHRoZSBkZWZhdWx0X2Rlc2MK PiArICogcGFyYW1ldGVyLiBJZiBubyBkZXNjcmlwdG9yIGZvciB0aGUgc3BlY2lmaWVkIGNvbW1h bmQgZXhpc3RzIGluIHRoZSByaW5nJ3MKPiArICogY29tbWFuZCBwYXJzZXIgdGFibGVzLCB0aGlz IGZ1bmN0aW9uIGZpbGxzIGluIGRlZmF1bHRfZGVzYyBiYXNlZCBvbiB0aGUKPiArICogcmluZydz IGRlZmF1bHQgbGVuZ3RoIGVuY29kaW5nIGFuZCByZXR1cm5zIGRlZmF1bHRfZGVzYy4KPiArICov Cj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2k5MTVfY21kX2Rlc2NyaXB0b3IqCj4gK2ZpbmRf Y21kKHN0cnVjdCBpbnRlbF9yaW5nX2J1ZmZlciAqcmluZywKPiArCSB1MzIgY21kX2hlYWRlciwK PiArCSBzdHJ1Y3QgZHJtX2k5MTVfY21kX2Rlc2NyaXB0b3IgKmRlZmF1bHRfZGVzYykKPiArewo+ ICsJdTMyIG1hc2s7Cj4gKwlpbnQgaTsKPiArCj4gKwlmb3IgKGkgPSAwOyBpIDwgcmluZy0+Y21k X3RhYmxlX2NvdW50OyBpKyspIHsKPiArCQljb25zdCBzdHJ1Y3QgZHJtX2k5MTVfY21kX2Rlc2Ny aXB0b3IgKmRlc2M7Cj4gKwo+ICsJCWRlc2MgPSBmaW5kX2NtZF9pbl90YWJsZSgmcmluZy0+Y21k X3RhYmxlc1tpXSwgY21kX2hlYWRlcik7Cj4gKwkJaWYgKGRlc2MpCj4gKwkJCXJldHVybiBkZXNj Owo+ICsJfQo+ICsKPiArCW1hc2sgPSByaW5nLT5nZXRfY21kX2xlbmd0aF9tYXNrKGNtZF9oZWFk ZXIpOwo+ICsJaWYgKCFtYXNrKQo+ICsJCXJldHVybiBOVUxMOwo+ICsKPiArCUJVR19PTighZGVm YXVsdF9kZXNjKTsKPiArCWRlZmF1bHRfZGVzYy0+ZmxhZ3MgPSBDTURfREVTQ19TS0lQOwo+ICsJ ZGVmYXVsdF9kZXNjLT5sZW5ndGgubWFzayA9IG1hc2s7Cj4gKwo+ICsJcmV0dXJuIGRlZmF1bHRf ZGVzYzsKPiArfQo+ICsKPiArc3RhdGljIGJvb2wgdmFsaWRfcmVnKGNvbnN0IHUzMiAqdGFibGUs IGludCBjb3VudCwgdTMyIGFkZHIpCj4gK3sKPiArCWlmICh0YWJsZSAmJiBjb3VudCAhPSAwKSB7 Cj4gKwkJaW50IGk7Cj4gKwo+ICsJCWZvciAoaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7Cj4gKwkJ CWlmICh0YWJsZVtpXSA9PSBhZGRyKQo+ICsJCQkJcmV0dXJuIHRydWU7Cj4gKwkJfQo+ICsJfQo+ ICsKPiArCXJldHVybiBmYWxzZTsKPiArfQo+ICsKPiArc3RhdGljIHUzMiAqdm1hcF9iYXRjaChz dHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQo+ICt7Cj4gKwlpbnQgaTsKPiArCXZvaWQg KmFkZHIgPSBOVUxMOwo+ICsJc3RydWN0IHNnX3BhZ2VfaXRlciBzZ19pdGVyOwo+ICsJc3RydWN0 IHBhZ2UgKipwYWdlczsKPiArCj4gKwlwYWdlcyA9IGRybV9tYWxsb2NfYWIob2JqLT5iYXNlLnNp emUgPj4gUEFHRV9TSElGVCwgc2l6ZW9mKCpwYWdlcykpOwo+ICsJaWYgKHBhZ2VzID09IE5VTEwp IHsKPiArCQlEUk1fREVCVUdfRFJJVkVSKCJGYWlsZWQgdG8gZ2V0IHNwYWNlIGZvciBwYWdlc1xu Iik7Cj4gKwkJZ290byBmaW5pc2g7Cj4gKwl9Cj4gKwo+ICsJaSA9IDA7Cj4gKwlmb3JfZWFjaF9z Z19wYWdlKG9iai0+cGFnZXMtPnNnbCwgJnNnX2l0ZXIsIG9iai0+cGFnZXMtPm5lbnRzLCAwKSB7 Cj4gKwkJcGFnZXNbaV0gPSBzZ19wYWdlX2l0ZXJfcGFnZSgmc2dfaXRlcik7Cj4gKwkJaSsrOwo+ ICsJfQo+ICsKPiArCWFkZHIgPSB2bWFwKHBhZ2VzLCBpLCAwLCBQQUdFX0tFUk5FTCk7Cj4gKwlp ZiAoYWRkciA9PSBOVUxMKSB7Cj4gKwkJRFJNX0RFQlVHX0RSSVZFUigiRmFpbGVkIHRvIHZtYXAg cGFnZXNcbiIpOwo+ICsJCWdvdG8gZmluaXNoOwo+ICsJfQo+ICsKPiArZmluaXNoOgo+ICsJaWYg KHBhZ2VzKQo+ICsJCWRybV9mcmVlX2xhcmdlKHBhZ2VzKTsKPiArCXJldHVybiAodTMyKilhZGRy Owo+ICt9Cj4gKwo+ICsvKioKPiArICogaTkxNV9uZWVkc19jbWRfcGFyc2VyKCkgLSBzaG91bGQg YSBnaXZlbiByaW5nIHVzZSBzb2Z0d2FyZSBjb21tYW5kIHBhcnNpbmc/Cj4gKyAqIEByaW5nOiB0 aGUgcmluZyBpbiBxdWVzdGlvbgo+ICsgKgo+ICsgKiBPbmx5IGNlcnRhaW4gcGxhdGZvcm1zIHJl cXVpcmUgc29mdHdhcmUgYmF0Y2ggYnVmZmVyIGNvbW1hbmQgcGFyc2luZywgYW5kCj4gKyAqIG9u bHkgd2hlbiBlbmFibGVkIHZpYSBtb2R1bGUgcGFyYW10ZXIuCj4gKyAqCj4gKyAqIFJldHVybjog dHJ1ZSBpZiB0aGUgcmluZyByZXF1aXJlcyBzb2Z0d2FyZSBjb21tYW5kIHBhcnNpbmcKPiArICov Cj4gK2Jvb2wgaTkxNV9uZWVkc19jbWRfcGFyc2VyKHN0cnVjdCBpbnRlbF9yaW5nX2J1ZmZlciAq cmluZykKPiArewo+ICsJLyogTm8gY29tbWFuZCB0YWJsZXMgaW5kaWNhdGVzIGEgcGxhdGZvcm0g d2l0aG91dCBwYXJzaW5nICovCj4gKwlpZiAoIXJpbmctPmNtZF90YWJsZXMpCj4gKwkJcmV0dXJu IGZhbHNlOwo+ICsKPiArCXJldHVybiAoaTkxNS5lbmFibGVfY21kX3BhcnNlciA9PSAxKTsKPiAr fQo+ICsKPiArI2RlZmluZSBMRU5HVEhfQklBUyAyCj4gKwo+ICsvKioKPiArICogaTkxNV9wYXJz ZV9jbWRzKCkgLSBwYXJzZSBhIHN1Ym1pdHRlZCBiYXRjaCBidWZmZXIgZm9yIHByaXZpbGVnZSB2 aW9sYXRpb25zCj4gKyAqIEByaW5nOiB0aGUgcmluZyBvbiB3aGljaCB0aGUgYmF0Y2ggaXMgdG8g ZXhlY3V0ZQo+ICsgKiBAYmF0Y2hfb2JqOiB0aGUgYmF0Y2ggYnVmZmVyIGluIHF1ZXN0aW9uCj4g KyAqIEBiYXRjaF9zdGFydF9vZmZzZXQ6IGJ5dGUgb2Zmc2V0IGluIHRoZSBiYXRjaCBhdCB3aGlj aCBleGVjdXRpb24gc3RhcnRzCj4gKyAqIEBpc19tYXN0ZXI6IGlzIHRoZSBzdWJtaXR0aW5nIHBy b2Nlc3MgdGhlIGRybSBtYXN0ZXI/Cj4gKyAqCj4gKyAqIFBhcnNlcyB0aGUgc3BlY2lmaWVkIGJh dGNoIGJ1ZmZlciBsb29raW5nIGZvciBwcml2aWxlZ2UgdmlvbGF0aW9ucyBhcwo+ICsgKiBkZXNj cmliZWQgaW4gdGhlIG92ZXJ2aWV3Lgo+ICsgKgo+ICsgKiBSZXR1cm46IG5vbi16ZXJvIGlmIHRo ZSBwYXJzZXIgZmluZHMgdmlvbGF0aW9ucyBvciBvdGhlcndpc2UgZmFpbHMKPiArICovCj4gK2lu dCBpOTE1X3BhcnNlX2NtZHMoc3RydWN0IGludGVsX3JpbmdfYnVmZmVyICpyaW5nLAo+ICsJCSAg ICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqYmF0Y2hfb2JqLAo+ICsJCSAgICB1MzIgYmF0 Y2hfc3RhcnRfb2Zmc2V0LAo+ICsJCSAgICBib29sIGlzX21hc3RlcikKPiArewo+ICsJaW50IHJl dCA9IDA7Cj4gKwl1MzIgKmNtZCwgKmJhdGNoX2Jhc2UsICpiYXRjaF9lbmQ7Cj4gKwlzdHJ1Y3Qg ZHJtX2k5MTVfY21kX2Rlc2NyaXB0b3IgZGVmYXVsdF9kZXNjID0geyAwIH07Cj4gKwlpbnQgbmVl ZHNfY2xmbHVzaCA9IDA7Cj4gKwo+ICsJcmV0ID0gaTkxNV9nZW1fb2JqX3ByZXBhcmVfc2htZW1f cmVhZChiYXRjaF9vYmosICZuZWVkc19jbGZsdXNoKTsKPiArCWlmIChyZXQpIHsKPiArCQlEUk1f REVCVUdfRFJJVkVSKCJDTUQ6IGZhaWxlZCB0byBwcmVwIHJlYWRcbiIpOwo+ICsJCXJldHVybiBy ZXQ7Cj4gKwl9Cj4gKwo+ICsJYmF0Y2hfYmFzZSA9IHZtYXBfYmF0Y2goYmF0Y2hfb2JqKTsKPiAr CWlmICghYmF0Y2hfYmFzZSkgewo+ICsJCURSTV9ERUJVR19EUklWRVIoIkNNRDogRmFpbGVkIHRv IHZtYXAgYmF0Y2hcbiIpOwo+ICsJCWk5MTVfZ2VtX29iamVjdF91bnBpbl9wYWdlcyhiYXRjaF9v YmopOwo+ICsJCXJldHVybiAtRU5PTUVNOwo+ICsJfQo+ICsKPiArCWlmIChuZWVkc19jbGZsdXNo KQo+ICsJCWRybV9jbGZsdXNoX3ZpcnRfcmFuZ2UoKGNoYXIgKiliYXRjaF9iYXNlLCBiYXRjaF9v YmotPmJhc2Uuc2l6ZSk7Cj4gKwo+ICsJY21kID0gYmF0Y2hfYmFzZSArIChiYXRjaF9zdGFydF9v ZmZzZXQgLyBzaXplb2YoKmNtZCkpOwo+ICsJYmF0Y2hfZW5kID0gY21kICsgKGJhdGNoX29iai0+ YmFzZS5zaXplIC8gc2l6ZW9mKCpiYXRjaF9lbmQpKTsKPiArCj4gKwl3aGlsZSAoY21kIDwgYmF0 Y2hfZW5kKSB7Cj4gKwkJY29uc3Qgc3RydWN0IGRybV9pOTE1X2NtZF9kZXNjcmlwdG9yICpkZXNj Owo+ICsJCXUzMiBsZW5ndGg7Cj4gKwo+ICsJCWlmICgqY21kID09IE1JX0JBVENIX0JVRkZFUl9F TkQpCj4gKwkJCWJyZWFrOwo+ICsKPiArCQlkZXNjID0gZmluZF9jbWQocmluZywgKmNtZCwgJmRl ZmF1bHRfZGVzYyk7Cj4gKwkJaWYgKCFkZXNjKSB7Cj4gKwkJCURSTV9ERUJVR19EUklWRVIoIkNN RDogVW5yZWNvZ25pemVkIGNvbW1hbmQ6IDB4JTA4WFxuIiwKPiArCQkJCQkgKmNtZCk7Cj4gKwkJ CXJldCA9IC1FSU5WQUw7Cj4gKwkJCWJyZWFrOwo+ICsJCX0KPiArCj4gKwkJaWYgKGRlc2MtPmZs YWdzICYgQ01EX0RFU0NfRklYRUQpCj4gKwkJCWxlbmd0aCA9IGRlc2MtPmxlbmd0aC5maXhlZDsK PiArCQllbHNlCj4gKwkJCWxlbmd0aCA9ICgoKmNtZCAmIGRlc2MtPmxlbmd0aC5tYXNrKSArIExF TkdUSF9CSUFTKTsKPiArCj4gKwkJaWYgKChiYXRjaF9lbmQgLSBjbWQpIDwgbGVuZ3RoKSB7Cj4g KwkJCURSTV9ERUJVR19EUklWRVIoIkNNRDogQ29tbWFuZCBsZW5ndGggZXhjZWVkcyBiYXRjaCBs ZW5ndGg6IDB4JTA4WCBsZW5ndGg9JWQgYmF0Y2hsZW49JWxkXG4iLAo+ICsJCQkJCSAqY21kLAo+ ICsJCQkJCSBsZW5ndGgsCj4gKwkJCQkJIGJhdGNoX2VuZCAtIGNtZCk7Cj4gKwkJCXJldCA9IC1F SU5WQUw7Cj4gKwkJCWJyZWFrOwo+ICsJCX0KPiArCj4gKwkJaWYgKGRlc2MtPmZsYWdzICYgQ01E X0RFU0NfUkVKRUNUKSB7Cj4gKwkJCURSTV9ERUJVR19EUklWRVIoIkNNRDogUmVqZWN0ZWQgY29t bWFuZDogMHglMDhYXG4iLCAqY21kKTsKPiArCQkJcmV0ID0gLUVJTlZBTDsKPiArCQkJYnJlYWs7 Cj4gKwkJfQo+ICsKPiArCQlpZiAoKGRlc2MtPmZsYWdzICYgQ01EX0RFU0NfTUFTVEVSKSAmJiAh aXNfbWFzdGVyKSB7Cj4gKwkJCURSTV9ERUJVR19EUklWRVIoIkNNRDogUmVqZWN0ZWQgbWFzdGVy LW9ubHkgY29tbWFuZDogMHglMDhYXG4iLAo+ICsJCQkJCSAqY21kKTsKPiArCQkJcmV0ID0gLUVJ TlZBTDsKPiArCQkJYnJlYWs7Cj4gKwkJfQo+ICsKPiArCQlpZiAoZGVzYy0+ZmxhZ3MgJiBDTURf REVTQ19SRUdJU1RFUikgewo+ICsJCQl1MzIgcmVnX2FkZHIgPSBjbWRbZGVzYy0+cmVnLm9mZnNl dF0gJiBkZXNjLT5yZWcubWFzazsKPiArCj4gKwkJCWlmICghdmFsaWRfcmVnKHJpbmctPnJlZ190 YWJsZSwKPiArCQkJCSAgICAgICByaW5nLT5yZWdfY291bnQsIHJlZ19hZGRyKSkgewo+ICsJCQkJ aWYgKCFpc19tYXN0ZXIgfHwKPiArCQkJCSAgICAhdmFsaWRfcmVnKHJpbmctPm1hc3Rlcl9yZWdf dGFibGUsCj4gKwkJCQkJICAgICAgIHJpbmctPm1hc3Rlcl9yZWdfY291bnQsCj4gKwkJCQkJICAg ICAgIHJlZ19hZGRyKSkgewo+ICsJCQkJCURSTV9ERUJVR19EUklWRVIoIkNNRDogUmVqZWN0ZWQg cmVnaXN0ZXIgMHglMDhYIGluIGNvbW1hbmQ6IDB4JTA4WCAocmluZz0lZClcbiIsCj4gKwkJCQkJ CQkgcmVnX2FkZHIsCj4gKwkJCQkJCQkgKmNtZCwKPiArCQkJCQkJCSByaW5nLT5pZCk7Cj4gKwkJ CQkJcmV0ID0gLUVJTlZBTDsKPiArCQkJCQlicmVhazsKPiArCQkJCX0KPiArCQkJfQo+ICsJCX0K PiArCj4gKwkJaWYgKGRlc2MtPmZsYWdzICYgQ01EX0RFU0NfQklUTUFTSykgewo+ICsJCQlpbnQg aTsKPiArCj4gKwkJCWZvciAoaSA9IDA7IGkgPCBNQVhfQ01EX0RFU0NfQklUTUFTS1M7IGkrKykg ewo+ICsJCQkJdTMyIGR3b3JkOwo+ICsKPiArCQkJCWlmIChkZXNjLT5iaXRzW2ldLm1hc2sgPT0g MCkKPiArCQkJCQlicmVhazsKPiArCj4gKwkJCQlkd29yZCA9IGNtZFtkZXNjLT5iaXRzW2ldLm9m ZnNldF0gJgo+ICsJCQkJCWRlc2MtPmJpdHNbaV0ubWFzazsKPiArCj4gKwkJCQlpZiAoZHdvcmQg IT0gZGVzYy0+Yml0c1tpXS5leHBlY3RlZCkgewo+ICsJCQkJCURSTV9ERUJVR19EUklWRVIoIkNN RDogUmVqZWN0ZWQgY29tbWFuZCAweCUwOFggZm9yIGJpdG1hc2sgMHglMDhYIChleHA9MHglMDhY IGFjdD0weCUwOFgpIChyaW5nPSVkKVxuIiwKPiArCQkJCQkJCSAqY21kLAo+ICsJCQkJCQkJIGRl c2MtPmJpdHNbaV0ubWFzaywKPiArCQkJCQkJCSBkZXNjLT5iaXRzW2ldLmV4cGVjdGVkLAo+ICsJ CQkJCQkJIGR3b3JkLCByaW5nLT5pZCk7Cj4gKwkJCQkJcmV0ID0gLUVJTlZBTDsKPiArCQkJCQli cmVhazsKPiArCQkJCX0KPiArCQkJfQo+ICsKPiArCQkJaWYgKHJldCkKPiArCQkJCWJyZWFrOwo+ ICsJCX0KPiArCj4gKwkJY21kICs9IGxlbmd0aDsKPiArCX0KPiArCj4gKwlpZiAoY21kID49IGJh dGNoX2VuZCkgewo+ICsJCURSTV9ERUJVR19EUklWRVIoIkNNRDogR290IHRvIHRoZSBlbmQgb2Yg dGhlIGJ1ZmZlciB3L28gYSBCQkUgY21kIVxuIik7Cj4gKwkJcmV0ID0gLUVJTlZBTDsKPiArCX0K PiArCj4gKwl2dW5tYXAoYmF0Y2hfYmFzZSk7Cj4gKwo+ICsJaTkxNV9nZW1fb2JqZWN0X3VucGlu X3BhZ2VzKGJhdGNoX29iaik7Cj4gKwo+ICsJcmV0dXJuIHJldDsKPiArfQo+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9kcnYuaAo+IGluZGV4IDU4MjAzNWIuLjM3NjQ3MmYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZHJ2LmgKPiBAQCAtMTgwMyw2ICsxODAzLDkwIEBAIHN0cnVjdCBkcm1faTkxNV9maWxlX3By aXZhdGUgewo+ICAJYXRvbWljX3QgcnBzX3dhaXRfYm9vc3Q7Cj4gIH07Cj4gIAo+ICsvKgo+ICsg KiBBIGNvbW1hbmQgdGhhdCByZXF1aXJlcyBzcGVjaWFsIGhhbmRsaW5nIGJ5IHRoZSBjb21tYW5k IHBhcnNlci4KPiArICovCj4gK3N0cnVjdCBkcm1faTkxNV9jbWRfZGVzY3JpcHRvciB7Cj4gKwkv Kgo+ICsJICogRmxhZ3MgZGVzY3JpYmluZyBob3cgdGhlIGNvbW1hbmQgcGFyc2VyIHByb2Nlc3Nl cyB0aGUgY29tbWFuZC4KPiArCSAqCj4gKwkgKiBDTURfREVTQ19GSVhFRDogVGhlIGNvbW1hbmQg aGFzIGEgZml4ZWQgbGVuZ3RoIGlmIHRoaXMgaXMgc2V0LAo+ICsJICogICAgICAgICAgICAgICAg IGEgbGVuZ3RoIG1hc2sgaWYgbm90IHNldAo+ICsJICogQ01EX0RFU0NfU0tJUDogVGhlIGNvbW1h bmQgaXMgYWxsb3dlZCBidXQgZG9lcyBub3QgZm9sbG93IHRoZQo+ICsJICogICAgICAgICAgICAg ICAgc3RhbmRhcmQgbGVuZ3RoIGVuY29kaW5nIGZvciB0aGUgb3Bjb2RlIHJhbmdlIGluCj4gKwkg KiAgICAgICAgICAgICAgICB3aGljaCBpdCBmYWxscwo+ICsJICogQ01EX0RFU0NfUkVKRUNUOiBU aGUgY29tbWFuZCBpcyBuZXZlciBhbGxvd2VkCj4gKwkgKiBDTURfREVTQ19SRUdJU1RFUjogVGhl IGNvbW1hbmQgc2hvdWxkIGJlIGNoZWNrZWQgYWdhaW5zdCB0aGUKPiArCSAqICAgICAgICAgICAg ICAgICAgICByZWdpc3RlciB3aGl0ZWxpc3QgZm9yIHRoZSBhcHByb3ByaWF0ZSByaW5nCj4gKwkg KiBDTURfREVTQ19NQVNURVI6IFRoZSBjb21tYW5kIGlzIGFsbG93ZWQgaWYgdGhlIHN1Ym1pdHRp bmcgcHJvY2Vzcwo+ICsJICogICAgICAgICAgICAgICAgICBpcyB0aGUgRFJNIG1hc3Rlcgo+ICsJ ICovCj4gKwl1MzIgZmxhZ3M7Cj4gKyNkZWZpbmUgQ01EX0RFU0NfRklYRUQgICAgKDE8PDApCj4g KyNkZWZpbmUgQ01EX0RFU0NfU0tJUCAgICAgKDE8PDEpCj4gKyNkZWZpbmUgQ01EX0RFU0NfUkVK RUNUICAgKDE8PDIpCj4gKyNkZWZpbmUgQ01EX0RFU0NfUkVHSVNURVIgKDE8PDMpCj4gKyNkZWZp bmUgQ01EX0RFU0NfQklUTUFTSyAgKDE8PDQpCj4gKyNkZWZpbmUgQ01EX0RFU0NfTUFTVEVSICAg KDE8PDUpCj4gKwo+ICsJLyoKPiArCSAqIFRoZSBjb21tYW5kJ3MgdW5pcXVlIGlkZW50aWZpY2F0 aW9uIGJpdHMgYW5kIHRoZSBiaXRtYXNrIHRvIGdldCB0aGVtLgo+ICsJICogVGhpcyBpc24ndCBz dHJpY3RseSB0aGUgb3Bjb2RlIGZpZWxkIGFzIGRlZmluZWQgaW4gdGhlIHNwZWMgYW5kIG1heQo+ ICsJICogYWxzbyBpbmNsdWRlIHR5cGUsIHN1YnR5cGUsIGFuZC9vciBzdWJvcCBmaWVsZHMuCj4g KwkgKi8KPiArCXN0cnVjdCB7Cj4gKwkJdTMyIHZhbHVlOwo+ICsJCXUzMiBtYXNrOwo+ICsJfSBj bWQ7Cj4gKwo+ICsJLyoKPiArCSAqIFRoZSBjb21tYW5kJ3MgbGVuZ3RoLiBUaGUgY29tbWFuZCBp cyBlaXRoZXIgZml4ZWQgbGVuZ3RoIChpLmUuIGRvZXMKPiArCSAqIG5vdCBpbmNsdWRlIGEgbGVu Z3RoIGZpZWxkKSBvciBoYXMgYSBsZW5ndGggZmllbGQgbWFzay4gVGhlIGZsYWcKPiArCSAqIENN RF9ERVNDX0ZJWEVEIGluZGljYXRlcyBhIGZpeGVkIGxlbmd0aC4gT3RoZXJ3aXNlLCB0aGUgY29t bWFuZCBoYXMKPiArCSAqIGEgbGVuZ3RoIG1hc2suIEFsbCBjb21tYW5kIGVudHJpZXMgaW4gYSBj b21tYW5kIHRhYmxlIG11c3QgaW5jbHVkZQo+ICsJICogbGVuZ3RoIGluZm9ybWF0aW9uLgo+ICsJ ICovCj4gKwl1bmlvbiB7Cj4gKwkJdTMyIGZpeGVkOwo+ICsJCXUzMiBtYXNrOwo+ICsJfSBsZW5n dGg7Cj4gKwo+ICsJLyoKPiArCSAqIERlc2NyaWJlcyB3aGVyZSB0byBmaW5kIGEgcmVnaXN0ZXIg YWRkcmVzcyBpbiB0aGUgY29tbWFuZCB0byBjaGVjawo+ICsJICogYWdhaW5zdCB0aGUgcmluZydz IHJlZ2lzdGVyIHdoaXRlbGlzdC4gT25seSB2YWxpZCBpZiBmbGFncyBoYXMgdGhlCj4gKwkgKiBD TURfREVTQ19SRUdJU1RFUiBiaXQgc2V0Lgo+ICsJICovCj4gKwlzdHJ1Y3Qgewo+ICsJCXUzMiBv ZmZzZXQ7Cj4gKwkJdTMyIG1hc2s7Cj4gKwl9IHJlZzsKPiArCj4gKyNkZWZpbmUgTUFYX0NNRF9E RVNDX0JJVE1BU0tTIDMKPiArCS8qCj4gKwkgKiBEZXNjcmliZXMgY29tbWFuZCBjaGVja3Mgd2hl cmUgYSBwYXJ0aWN1bGFyIGR3b3JkIGlzIG1hc2tlZCBhbmQKPiArCSAqIGNvbXBhcmVkIGFnYWlu c3QgYW4gZXhwZWN0ZWQgdmFsdWUuIElmIHRoZSBjb21tYW5kIGRvZXMgbm90IG1hdGNoCj4gKwkg KiB0aGUgZXhwZWN0ZWQgdmFsdWUsIHRoZSBwYXJzZXIgcmVqZWN0cyBpdC4gT25seSB2YWxpZCBp ZiBmbGFncyBoYXMKPiArCSAqIHRoZSBDTURfREVTQ19CSVRNQVNLIGJpdCBzZXQuIE9ubHkgZW50 cmllcyB3aGVyZSBtYXNrIGlzIG5vbi16ZXJvCj4gKwkgKiBhcmUgdmFsaWQuCj4gKwkgKi8KPiAr CXN0cnVjdCB7Cj4gKwkJdTMyIG9mZnNldDsKPiArCQl1MzIgbWFzazsKPiArCQl1MzIgZXhwZWN0 ZWQ7Cj4gKwl9IGJpdHNbTUFYX0NNRF9ERVNDX0JJVE1BU0tTXTsKPiArfTsKPiArCj4gKy8qCj4g KyAqIEEgdGFibGUgb2YgY29tbWFuZHMgcmVxdWlyaW5nIHNwZWNpYWwgaGFuZGxpbmcgYnkgdGhl IGNvbW1hbmQgcGFyc2VyLgo+ICsgKgo+ICsgKiBFYWNoIHJpbmcgaGFzIGFuIGFycmF5IG9mIHRh Ymxlcy4gRWFjaCB0YWJsZSBjb25zaXN0cyBvZiBhbiBhcnJheSBvZiBjb21tYW5kCj4gKyAqIGRl c2NyaXB0b3JzLCB3aGljaCBtdXN0IGJlIHNvcnRlZCB3aXRoIGNvbW1hbmQgb3Bjb2RlcyBpbiBh c2NlbmRpbmcgb3JkZXIuCj4gKyAqLwo+ICtzdHJ1Y3QgZHJtX2k5MTVfY21kX3RhYmxlIHsKPiAr CWNvbnN0IHN0cnVjdCBkcm1faTkxNV9jbWRfZGVzY3JpcHRvciAqdGFibGU7Cj4gKwlpbnQgY291 bnQ7Cj4gK307Cj4gKwo+ICAjZGVmaW5lIElOVEVMX0lORk8oZGV2KQkoJnRvX2k5MTUoZGV2KS0+ aW5mbykKPiAgCj4gICNkZWZpbmUgSVNfSTgzMChkZXYpCQkoKGRldiktPnBkZXYtPmRldmljZSA9 PSAweDM1NzcpCj4gQEAgLTE5NjUsNiArMjA0OSw3IEBAIHN0cnVjdCBpOTE1X3BhcmFtcyB7Cj4g IAlpbnQgZW5hYmxlX3BjODsKPiAgCWludCBwYzhfdGltZW91dDsKPiAgCWludCBpbnZlcnRfYnJp Z2h0bmVzczsKPiArCWludCBlbmFibGVfY21kX3BhcnNlcjsKPiAgCS8qIGxlYXZlIGJvb2xzIGF0 IHRoZSBlbmQgdG8gbm90IGNyZWF0ZSBob2xlcyAqLwo+ICAJYm9vbCBlbmFibGVfaGFuZ2NoZWNr Owo+ICAJYm9vbCBmYXN0Ym9vdDsKPiBAQCAtMjQ5MCw2ICsyNTc1LDE0IEBAIHZvaWQgaTkxNV9k ZXN0cm95X2Vycm9yX3N0YXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwo+ICB2b2lkIGk5MTVf Z2V0X2V4dHJhX2luc3Rkb25lKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHVpbnQzMl90ICppbnN0 ZG9uZSk7Cj4gIGNvbnN0IGNoYXIgKmk5MTVfY2FjaGVfbGV2ZWxfc3RyKGludCB0eXBlKTsKPiAg Cj4gKy8qIGk5MTVfY21kX3BhcnNlci5jICovCj4gK3ZvaWQgaTkxNV9jbWRfcGFyc2VyX2luaXRf cmluZyhzdHJ1Y3QgaW50ZWxfcmluZ19idWZmZXIgKnJpbmcpOwo+ICtib29sIGk5MTVfbmVlZHNf Y21kX3BhcnNlcihzdHJ1Y3QgaW50ZWxfcmluZ19idWZmZXIgKnJpbmcpOwo+ICtpbnQgaTkxNV9w YXJzZV9jbWRzKHN0cnVjdCBpbnRlbF9yaW5nX2J1ZmZlciAqcmluZywKPiArCQkgICAgc3RydWN0 IGRybV9pOTE1X2dlbV9vYmplY3QgKmJhdGNoX29iaiwKPiArCQkgICAgdTMyIGJhdGNoX3N0YXJ0 X29mZnNldCwKPiArCQkgICAgYm9vbCBpc19tYXN0ZXIpOwo+ICsKPiAgLyogaTkxNV9zdXNwZW5k LmMgKi8KPiAgZXh0ZXJuIGludCBpOTE1X3NhdmVfc3RhdGUoc3RydWN0IGRybV9kZXZpY2UgKmRl dik7Cj4gIGV4dGVybiBpbnQgaTkxNV9yZXN0b3JlX3N0YXRlKHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYpOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9leGVjYnVm ZmVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9leGVjYnVmZmVyLmMKPiBpbmRl eCBkNzIyOWFkLi4zODUxYTFiIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZ2VtX2V4ZWNidWZmZXIuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2Vt X2V4ZWNidWZmZXIuYwo+IEBAIC0xMTgyLDYgKzExODIsMjQgQEAgaTkxNV9nZW1fZG9fZXhlY2J1 ZmZlcihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAo+ICAJfQo+ICAJYmF0Y2hf b2JqLT5iYXNlLnBlbmRpbmdfcmVhZF9kb21haW5zIHw9IEk5MTVfR0VNX0RPTUFJTl9DT01NQU5E Owo+ICAKPiArCWlmIChpOTE1X25lZWRzX2NtZF9wYXJzZXIocmluZykpIHsKPiArCQlyZXQgPSBp OTE1X3BhcnNlX2NtZHMocmluZywKPiArCQkJCSAgICAgIGJhdGNoX29iaiwKPiArCQkJCSAgICAg IGFyZ3MtPmJhdGNoX3N0YXJ0X29mZnNldCwKPiArCQkJCSAgICAgIGZpbGUtPmlzX21hc3Rlcik7 Cj4gKwkJaWYgKHJldCkKPiArCQkJZ290byBlcnI7Cj4gKwo+ICsJCS8qCj4gKwkJICogWFhYOiBB Y3R1YWxseSBkbyB0aGlzIHdoZW4gZW5hYmxpbmcgYmF0Y2ggY29weS4uLgo+ICsJCSAqCj4gKwkJ ICogU2V0IHRoZSBESVNQQVRDSF9TRUNVUkUgYml0IHRvIHJlbW92ZSB0aGUgTk9OX1NFQ1VSRSBi aXQKPiArCQkgKiBmcm9tIE1JX0JBVENIX0JVRkZFUl9TVEFSVCBjb21tYW5kcyBpc3N1ZWQgaW4g dGhlCj4gKwkJICogZGlzcGF0Y2hfZXhlY2J1ZmZlciBpbXBsZW1lbnRhdGlvbnMuIFdlIHNwZWNp ZmljYWxseSBkb24ndAo+ICsJCSAqIHdhbnQgdGhhdCBzZXQgd2hlbiB0aGUgY29tbWFuZCBwYXJz ZXIgaXMgZW5hYmxlZC4KPiArCQkgKi8KPiArCX0KPiArCj4gIAkvKiBzbmIvaXZiL3ZsdiBjb25m bGF0ZSB0aGUgImJhdGNoIGluIHBwZ3R0IiBiaXQgd2l0aCB0aGUgIm5vbi1zZWN1cmUKPiAgCSAq IGJhdGNoIiBiaXQuIEhlbmNlIHdlIG5lZWQgdG8gcGluIHNlY3VyZSBiYXRjaGVzIGludG8gdGhl IGdsb2JhbCBndHQuCj4gIAkgKiBoc3cgc2hvdWxkIGhhdmUgdGhpcyBmaXhlZCwgYnV0IGJkdyBt dWNrcyBpdCB1cCBhZ2Fpbi4gKi8KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9wYXJhbXMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcGFyYW1zLmMKPiBpbmRl eCAzYjQ4MjU4Li5hYmEwYjliIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfcGFyYW1zLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BhcmFtcy5jCj4g QEAgLTQ4LDYgKzQ4LDcgQEAgc3RydWN0IGk5MTVfcGFyYW1zIGk5MTUgX19yZWFkX21vc3RseSA9 IHsKPiAgCS5yZXNldCA9IHRydWUsCj4gIAkuaW52ZXJ0X2JyaWdodG5lc3MgPSAwLAo+ICAJLmRp c2FibGVfZGlzcGxheSA9IDAsCj4gKwkuZW5hYmxlX2NtZF9wYXJzZXIgPSAwLAo+ICB9Owo+ICAK PiAgbW9kdWxlX3BhcmFtX25hbWVkKG1vZGVzZXQsIGk5MTUubW9kZXNldCwgaW50LCAwNDAwKTsK PiBAQCAtMTU3LDMgKzE1OCw3IEBAIE1PRFVMRV9QQVJNX0RFU0MoaW52ZXJ0X2JyaWdodG5lc3Ms Cj4gIAo+ICBtb2R1bGVfcGFyYW1fbmFtZWQoZGlzYWJsZV9kaXNwbGF5LCBpOTE1LmRpc2FibGVf ZGlzcGxheSwgYm9vbCwgMDYwMCk7Cj4gIE1PRFVMRV9QQVJNX0RFU0MoZGlzYWJsZV9kaXNwbGF5 LCAiRGlzYWJsZSBkaXNwbGF5IChkZWZhdWx0OiBmYWxzZSkiKTsKPiArCj4gK21vZHVsZV9wYXJh bV9uYW1lZChlbmFibGVfY21kX3BhcnNlciwgaTkxNS5lbmFibGVfY21kX3BhcnNlciwgaW50LCAw NjAwKTsKPiArTU9EVUxFX1BBUk1fREVTQyhlbmFibGVfY21kX3BhcnNlciwKPiArCQkiRW5hYmxl IGNvbW1hbmQgcGFyc2luZyAoMT1lbmFibGVkLCAwPWRpc2FibGVkIFtkZWZhdWx0XSkiKTsKPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaCBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfcmVnLmgKPiBpbmRleCAyZjU2NGNlLi5lMTRkZmRhIDEwMDY0NAo+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgKPiArKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X3JlZy5oCj4gQEAgLTE3NSw2ICsxNzUsMTggQEAKPiAgI2RlZmluZSBWR0Ff Q1JfREFUQV9DR0EgMHgzZDUKPiAgCj4gIC8qCj4gKyAqIEluc3RydWN0aW9uIGZpZWxkIGRlZmlu aXRpb25zIHVzZWQgYnkgdGhlIGNvbW1hbmQgcGFyc2VyCj4gKyAqLwo+ICsjZGVmaW5lIElOU1RS X0NMSUVOVF9TSElGVCAgICAgIDI5Cj4gKyNkZWZpbmUgSU5TVFJfQ0xJRU5UX01BU0sgICAgICAg MHhFMDAwMDAwMAo+ICsjZGVmaW5lICAgSU5TVFJfTUlfQ0xJRU5UICAgICAgIDB4MAo+ICsjZGVm aW5lICAgSU5TVFJfQkNfQ0xJRU5UICAgICAgIDB4Mgo+ICsjZGVmaW5lICAgSU5TVFJfUkNfQ0xJ RU5UICAgICAgIDB4Mwo+ICsjZGVmaW5lIElOU1RSX1NVQkNMSUVOVF9TSElGVCAgIDI3Cj4gKyNk ZWZpbmUgSU5TVFJfU1VCQ0xJRU5UX01BU0sgICAgMHgxODAwMDAwMAo+ICsjZGVmaW5lICAgSU5T VFJfTUVESUFfU1VCQ0xJRU5UIDB4Mgo+ICsKPiArLyoKPiAgICogTWVtb3J5IGludGVyZmFjZSBp bnN0cnVjdGlvbnMgdXNlZCBieSB0aGUga2VybmVsCj4gICAqLwo+ICAjZGVmaW5lIE1JX0lOU1RS KG9wY29kZSwgZmxhZ3MpICgoKG9wY29kZSkgPDwgMjMpIHwgKGZsYWdzKSkKPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jCj4gaW5kZXggYjM0MGM3NS4uN2JmZjVlZiAxMDA2 NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMKPiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMKPiBAQCAtMTM4OCw2ICsx Mzg4LDggQEAgc3RhdGljIGludCBpbnRlbF9pbml0X3JpbmdfYnVmZmVyKHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYsCj4gIAlpZiAoSVNfSTgzMChyaW5nLT5kZXYpIHx8IElTXzg0NUcocmluZy0+ZGV2 KSkKPiAgCQlyaW5nLT5lZmZlY3RpdmVfc2l6ZSAtPSAxMjg7Cj4gIAo+ICsJaTkxNV9jbWRfcGFy c2VyX2luaXRfcmluZyhyaW5nKTsKPiArCj4gIAlyZXR1cm4gMDsKPiAgCj4gIGVycl91bm1hcDoK PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5oIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5oCj4gaW5kZXggMDhiOTFjNi4u MDlhZjkyMCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVm ZmVyLmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmgKPiBA QCAtMTY0LDYgKzE2NCwzOCBAQCBzdHJ1Y3QgIGludGVsX3JpbmdfYnVmZmVyIHsKPiAgCQl1MzIg Z3R0X29mZnNldDsKPiAgCQl2b2xhdGlsZSB1MzIgKmNwdV9wYWdlOwo+ICAJfSBzY3JhdGNoOwo+ ICsKPiArCS8qCj4gKwkgKiBUYWJsZXMgb2YgY29tbWFuZHMgdGhlIGNvbW1hbmQgcGFyc2VyIG5l ZWRzIHRvIGtub3cgYWJvdXQKPiArCSAqIGZvciB0aGlzIHJpbmcuCj4gKwkgKi8KPiArCWNvbnN0 IHN0cnVjdCBkcm1faTkxNV9jbWRfdGFibGUgKmNtZF90YWJsZXM7Cj4gKwlpbnQgY21kX3RhYmxl X2NvdW50Owo+ICsKPiArCS8qCj4gKwkgKiBUYWJsZSBvZiByZWdpc3RlcnMgYWxsb3dlZCBpbiBj b21tYW5kcyB0aGF0IHJlYWQvd3JpdGUgcmVnaXN0ZXJzLgo+ICsJICovCj4gKwljb25zdCB1MzIg KnJlZ190YWJsZTsKPiArCWludCByZWdfY291bnQ7Cj4gKwo+ICsJLyoKPiArCSAqIFRhYmxlIG9m IHJlZ2lzdGVycyBhbGxvd2VkIGluIGNvbW1hbmRzIHRoYXQgcmVhZC93cml0ZSByZWdpc3RlcnMs IGJ1dAo+ICsJICogb25seSBmcm9tIHRoZSBEUk0gbWFzdGVyLgo+ICsJICovCj4gKwljb25zdCB1 MzIgKm1hc3Rlcl9yZWdfdGFibGU7Cj4gKwlpbnQgbWFzdGVyX3JlZ19jb3VudDsKPiArCj4gKwkv Kgo+ICsJICogUmV0dXJucyB0aGUgYml0bWFzayBmb3IgdGhlIGxlbmd0aCBmaWVsZCBvZiB0aGUg c3BlY2lmaWVkIGNvbW1hbmQuCj4gKwkgKiBSZXR1cm4gMCBmb3IgYW4gdW5yZWNvZ25pemVkL2lu dmFsaWQgY29tbWFuZC4KPiArCSAqCj4gKwkgKiBJZiB0aGUgY29tbWFuZCBwYXJzZXIgZmluZHMg YW4gZW50cnkgZm9yIGEgY29tbWFuZCBpbiB0aGUgcmluZydzCj4gKwkgKiBjbWRfdGFibGVzLCBp dCBnZXRzIHRoZSBjb21tYW5kJ3MgbGVuZ3RoIGJhc2VkIG9uIHRoZSB0YWJsZSBlbnRyeS4KPiAr CSAqIElmIG5vdCwgaXQgY2FsbHMgdGhpcyBmdW5jdGlvbiB0byBkZXRlcm1pbmUgdGhlIHBlci1y aW5nIGxlbmd0aCBmaWVsZAo+ICsJICogZW5jb2RpbmcgZm9yIHRoZSBjb21tYW5kIChpLmUuIGNl cnRhaW4gb3Bjb2RlIHJhbmdlcyB1c2UgY2VydGFpbiBiaXRzCj4gKwkgKiB0byBlbmNvZGUgdGhl IGNvbW1hbmQgbGVuZ3RoIGluIHRoZSBoZWFkZXIpLgo+ICsJICovCj4gKwl1MzIgKCpnZXRfY21k X2xlbmd0aF9tYXNrKSh1MzIgY21kX2hlYWRlcik7Cj4gIH07Cj4gIAo+ICBzdGF0aWMgaW5saW5l IGJvb2wKPiAtLSAKPiAxLjguMy4yCj4KPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwo+IEludGVsLWdmeCBtYWlsaW5nIGxpc3QKPiBJbnRlbC1nZnhAbGlz dHMuZnJlZWRlc2t0b3Aub3JnCj4gaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFu L2xpc3RpbmZvL2ludGVsLWdmeAoKLS0gCkphbmkgTmlrdWxhLCBJbnRlbCBPcGVuIFNvdXJjZSBU ZWNobm9sb2d5IENlbnRlcgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3Rv cC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVs LWdmeAo=