From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Michal Wajdeczko" Subject: Re: [PATCH v9 3/7] drm/i915/guc: Implement dynamic GuC WOPCM offset and size Date: Fri, 09 Feb 2018 18:24:58 +0100 Message-ID: References: <1518131035-24108-1-git-send-email-yaodong.li@intel.com> <1518131035-24108-3-git-send-email-yaodong.li@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed"; DelSp="yes" Content-Transfer-Encoding: base64 Return-path: Received: from mga18.intel.com (mga18.intel.com [134.134.136.126]) by gabe.freedesktop.org (Postfix) with ESMTPS id 5D3036E8FA for ; Fri, 9 Feb 2018 17:25:09 +0000 (UTC) In-Reply-To: <1518131035-24108-3-git-send-email-yaodong.li@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: intel-gfx@lists.freedesktop.org, Jackie Li Cc: Sujaritha Sundaresan List-Id: intel-gfx@lists.freedesktop.org T24gRnJpLCAwOSBGZWIgMjAxOCAwMDowMzo1MSArMDEwMCwgSmFja2llIExpIDx5YW9kb25nLmxp QGludGVsLmNvbT4gd3JvdGU6Cgo+IEhhcmR3YXJlIG1heSBoYXZlIHNwZWNpZmljIHJlc3RyaWN0 aW9ucyBvbiBHdUMgV09QQ00gb2Zmc2V0IGFuZCBzaXplLiBPbgo+IEdlbjksIHRoZSB2YWx1ZSBv ZiB0aGUgR3VDIFdPUENNIHNpemUgcmVnaXN0ZXIgbmVlZHMgdG8gYmUgbGFyZ2VyIHRoYW4gIAo+ IHRoZQo+IHZhbHVlIG9mIEd1QyBXT1BDTSBvZmZzZXQgcmVnaXN0ZXIgKyBhIEdlbjkgc3BlY2lm aWMgb2Zmc2V0ICgxNDRLQikgZm9yCj4gcmVzZXJ2ZWQgR3VDIFdPUENNLiBGYWlsIHRvIGVuZm9y Y2Ugc3VjaCBhIHJlc3RyaWN0aW9uIG9uIEd1QyBXT1BDTSBzaXplCj4gd2lsbCBsZWFkIHRvIEd1 QyBmaXJtd2FyZSBleGVjdXRpb24gZmFpbHVyZXMuIFNvIHdlIG5lZWQgYWRkIGNvZGUgdG8gIAo+ IHZlcmlmeQo+IHRoZSBHdUMgV09QQ00gb2Zmc2V0IGFuZCBzaXplIHRvIGF2b2lkIGFueSBHdUMg ZmFpbHVyZXMuIE9uIHRoZSBvdGhlciAgCj4gaGFuZCwKPiB3aXRoIGN1cnJlbnQgc3RhdGljIEd1 QyBXT1BDTSBvZmZzZXQgYW5kIHNpemUgdmFsdWVzICg1MTJLQiBmb3IgYm90aCAgCj4gb2Zmc2V0 Cj4gYW5kIHNpemUpLCB0aGUgR3VDIFdPUENNIHNpemUgdmVyaWZpY2F0aW9uIHdpbGwgZmFpbCBv biBHZW45IGV2ZW4gaWYgaXQgIAo+IGNhbgo+IGJlIGZpeGVkIGJ5IGxvd2VyaW5nIHRoZSBHdUMg V09QQ00gb2Zmc2V0IGJ5IGNhbGN1bGF0aW5nIGl0cyB2YWx1ZSBiYXNlZCAgCj4gb24KPiBIdUMg ZmlybXdhcmUgc2l6ZSAod2hpY2ggaXMgbGlrZWx5IGxlc3MgdGhhbiAyMDBLQiBvbiBHZW45KSwg c28gdGhhdCB3ZSAgCj4gY2FuCj4gaGF2ZSBhIEd1QyBXT1BDTSBzaXplIHZhbHVlIHdoaWNoIGlz IGxhcmdlIGVub3VnaCB0byBwYXNzIHRoZSBHdUMgV09QQ00KPiBzaXplIGNoZWNrLgo+Cj4gVGhp cyBwYXRjaCB1cGRhdGVzIHRoZSByZXNlcnZlZCBHdUMgV09QQ00gc2l6ZSBmb3IgUkM2IGNvbnRl eHQgb24gR2VuOSB0bwo+IDI0S0IgdG8gc3RyaWN0bHkgYWxpZ24gd2l0aCB0aGUgR2VuOSBHdUMg V09QQ00gbGF5b3V0IGFuZCBhZGQgc3VwcG9ydCB0bwo+IHJldHVybiBDTkwgc3BlY2lmaWMgaGFy ZHdhcmUgcmVzZXJ2ZWQgR3VDIFdPUENNIHNpemUuIEl0IGFsc28gYWRkcyAgCj4gc3VwcG9ydAo+ IHRvIHZlcmlmeSB0aGUgR3VDIFdPUENNIHNpemUgYWdhbmlzdCB0aGUgR2VuOSBoYXJkd2FyZSBy ZXN0cmljdGlvbnMuCj4gTWVhbndoaWxlLCBpdCBwcm92aWRlcyBhIGNvbW1vbiB3YXkgdG8gY2Fs Y3VsYXRlIEd1QyBXT1BDTSBvZmZzZXQgYW5kICAKPiBzaXplCj4gYmFzZWQgb24gR3VDIGFuZCBI dUMgZmlybXdhcmUgc2l6ZXMgZm9yIGFsbCBHdUMvSHVDIGVuYWJsZWQgcGxhdGZvcm1zLgo+IEN1 cnJlbnRseSwgR3VDIFdPUENNIG9mZnNldCBpcyBjYWxjdWxhdGVkIGJhc2VkIG9uIEh1QyBmaXJt d2FyZSBzaXplICsKPiByZXNlcnZlZCBXT1BDTSBzaXplIHdoaWxlIEd1QyBXT1BDTSBzaXplIGlz IHNldCB0byB0b3RhbCBXT1BDTSBzaXplIC0gR3VDCj4gV09QQ00gb2Zmc2V0IC0gaGFyZHdhcmUg cmVzZXJ2ZWQgR3VDIFdPUENNIHNpemUuIEluIHRoaXMgY2FzZSwgR3VDIFdPUENNCj4gb2Zmc2V0 IHdpbGwgYmUgdXBkYXRlZCBiYXNlZCBvbiB0aGUgc2l6ZSBvZiBIdUMgZmlybXdhcmUgd2hpbGUg R3VDIFdPUENNCj4gc2l6ZSB3aWxsIGJlIHNldCB0byB1c2UgYWxsIHRoZSByZW1haW5pbmcgV09Q Q00gc3BhY2UuCj4KPiB2MjoKPiAgLSBSZW1vdmVkIGludGVsX3dvcGNtX2luaXQgKFZpbGxlL1Nh Z2FyL0pvb25hcykKPiAgLSBSZW5hbWVkIGFuZCBNb3ZlZCB0aGUgaW50ZWxfd29wY21fcGFydGl0 aW9uIGludG8gaW50ZWxfZ3VjIChTYWdhcikKPiAgLSBSZW1vdmVkIHVubmVjZXNzYXJ5IGZ1bmN0 aW9uIGNhbGxzIChKb29uYXMpCj4gIC0gSW5pdCBHdUMgV09QQ00gcGFydGl0aW9uIGFzIHNvb24g YXMgZmlybXdhcmUgZmV0Y2hpbmcgaXMgY29tcGxldGVkCj4KPiB2MzoKPiAgLSBGaXhlZCBpbmRl bnRhdGlvbiBpc3N1ZXMgKENocmlzKQo+ICAtIFJlbW92ZWQgbGF5ZXJpbmcgdmlvbGF0aW9uIGNv ZGUgKENocmlzL01pY2hhbCkKPiAgLSBDcmVhdGVkIHNlcGFyYXQgZmlsZXMgZm9yIEd1QyB3b3Bj bSBjb2RlICAoTWljaGFsKQo+ICAtIFVzZWQgaW5saW5lIGZ1bmN0aW9uIHRvIGF2b2lkIGNvZGUg ZHVwbGljYXRpb24gKE1pY2hhbCkKPgo+IHY0Ogo+ICAtIFByZXNldCB0aGUgR3VDIFdPUENNIHRv cCBkdXJpbmcgZWFybHkgR3VDIGluaXQgKENocmlzKQo+ICAtIEZhaWwgaW50ZWxfdWNfaW5pdF9o dygpIGFzIHNvb24gYXMgR3VDIFdPUENNIHBhcnRpdGlvbmluZyBmYWlsZWQKPgo+IHY1Ogo+ICAt IE1vdmVkIEd1QyBETUEgV09QQ00gcmVnaXN0ZXIgdXBkYXRpbmcgY29kZSBpbnRvIGludGVsX2d1 Y193b3BjbS5jCj4gIC0gVG9vayBjYXJlIG9mIHRoZSBsb2NraW5nIHN0YXR1cyBiZWZvcmUgd3Jp dGluZyB0byBHdUMgRE1BCj4gICAgV3JpdGUtT25jZSByZWdpc3RlcnMuIChKb29uYXMpCj4KPiB2 NjoKPiAgLSBNYWRlIHN1cmUgdGhlIEd1QyBXT1BDTSBzaXplIHRvIGJlIG11bHRpcGxlIG9mIDRL ICg0SyBhbGlnbmVkKQo+Cj4gdjg6Cj4gIC0gVXBkYXRlZCBjb21tZW50cyBhbmQgZml4ZWQgbmFt aW5nIGlzc3VlcyAoU2FnYXIvSm9vbmFzKQo+ICAtIFVwZGF0ZWQgY29tbWl0IG1lc3NhZ2UgdG8g aW5jbHVkZSBtb3JlIGRlc2NyaXB0aW9uIGFib3V0IHRoZSBoYXJkd2FyZQo+ICAgIHJlc3RyaWN0 aW9uIG9uIEd1QyBXT1BDTSBzaXplIChTYWdhcikKPgo+IHY5Ogo+ICAtIE1pbm9yIGNoYW5nZXMg dmFyaWFibGUgbmFtZXMgYW5kIGNvZGUgY29tbWVudHMgKFNhZ2FyKQo+ICAtIEFkZGVkIGRldGFp bGVkIEd1QyBXT1BDTSBsYXlvdXQgZHJhd2luZyAoU2FnYXIvTWljaGFsKQo+ICAtIFJlZmluZWQg bWFjcm8gZGVmaW5pdGlvbnMgdG8gYmUgcmVhZGVyIGZyaWVuZGx5IChNaWNoYWwpCj4gIC0gUmVt b3ZlZCByZWR1bmRlbnQgY2hlY2sgdG8gdmFsaWQgZmxhZyAoTWljaGFsKQo+ICAtIFVuaWZpZWQg Zmlyc3QgcGFyYW1ldGVyIGZvciBleHBvcnRlZCBHdUMgV09QQ00gZnVuY3Rpb25zIChNaWNoYWwp Cj4gIC0gUmVmaW5lZCB0aGUgbmFtZSBhbmQgcGFyYW1ldGVyIGxpc3Qgb2YgaGFyZHdhcmUgcmVz dHJpY3Rpb24gY2hlY2tpbmcKPiAgICBmdW5jdGlvbnMgKE1pY2hhbCkKPgo+IENjOiBNaWNoYWwg V2FqZGVjemtvIDxtaWNoYWwud2FqZGVjemtvQGludGVsLmNvbT4KPiBDYzogU2FnYXIgQXJ1biBL YW1ibGUgPHNhZ2FyLmEua2FtYmxlQGludGVsLmNvbT4KPiBDYzogU3VqYXJpdGhhIFN1bmRhcmVz YW4gPHN1amFyaXRoYS5zdW5kYXJlc2FuQGludGVsLmNvbT4KPiBDYzogRGFuaWVsZSBDZXJhb2xv IFNwdXJpbyA8ZGFuaWVsZS5jZXJhb2xvc3B1cmlvQGludGVsLmNvbT4KPiBDYzogSm9obiBTcG90 c3dvb2QgPGpvaG4uYS5zcG90c3dvb2RAaW50ZWwuY29tPgo+IENjOiBPc2NhciBNYXRlbyA8b3Nj YXIubWF0ZW9AaW50ZWwuY29tPgo+IENjOiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNv bi5jby51az4KPiBDYzogSm9vbmFzIExhaHRpbmVuIDxqb29uYXMubGFodGluZW5AbGludXguaW50 ZWwuY29tPgo+IFJldmlld2VkLWJ5OiBTYWdhciBBcnVuIEthbWJsZSA8c2FnYXIuYS5rYW1ibGVA aW50ZWwuY29tPiAodjgpCj4gU2lnbmVkLW9mZi1ieTogSmFja2llIExpIDx5YW9kb25nLmxpQGlu dGVsLmNvbT4KPiAtLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5j IHwgICA1ICstCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Yy5jICAgICAgICB8ICAg NSArLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWMuaCAgICAgICAgfCAgMTIgKyst LQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfd29wY20uYyAgfCAxMTUgIAo+ICsr KysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2d1Y193b3BjbS5oICB8ICA4NSArKysrKysrKysrKysrKysrKysrKystLQo+ICBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9odWMuYyAgICAgICAgfCAgIDIgKy0KPiAgZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfdWMuYyAgICAgICAgIHwgIDExICsrLQo+ICBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF91Y19mdy5jICAgICAgfCAgMTEgKystCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX3VjX2Z3LmggICAgICB8ICAxNiArKysrKwo+ICA5IGZpbGVzIGNoYW5nZWQsIDIyOSBp bnNlcnRpb25zKCspLCAzMyBkZWxldGlvbnMoLSkKPgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMgIAo+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9nZW1fY29udGV4dC5jCj4gaW5kZXggM2Q3NWY0OC4uNDE0ZWFiMiAxMDA2NDQKPiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMKPiArKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMKPiBAQCAtMzEyLDEyICszMTIsMTMgQEAg X19jcmVhdGVfaHdfY29udGV4dChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAgCj4gKmRldl9wcml2 LAo+ICAJY3R4LT5kZXNjX3RlbXBsYXRlID0KPiAgCQlkZWZhdWx0X2Rlc2NfdGVtcGxhdGUoZGV2 X3ByaXYsIGRldl9wcml2LT5tbS5hbGlhc2luZ19wcGd0dCk7Cj4gLQkvKiBHdUMgcmVxdWlyZXMg dGhlIHJpbmcgdG8gYmUgcGxhY2VkIGFib3ZlIEdVQ19XT1BDTV9UT1AuIElmIEd1QyBpcyAgCj4g bm90Cj4gKwkvKgo+ICsJICogR3VDIHJlcXVpcmVzIHRoZSByaW5nIHRvIGJlIHBsYWNlZCBhYm92 ZSBHdUMgV09QQ00gdG9wLiBJZiBHdUMgaXMgIAo+IG5vdAo+ICAJICogcHJlc2VudCBvciBub3Qg aW4gdXNlIHdlIHN0aWxsIG5lZWQgYSBzbWFsbCBiaWFzIGFzIHJpbmcgd3JhcGFyb3VuZAo+ICAJ ICogYXQgb2Zmc2V0IDAgc29tZXRpbWVzIGhhbmdzLiBObyBpZGVhIHdoeS4KPiAgCSAqLwo+ICAJ aWYgKFVTRVNfR1VDKGRldl9wcml2KSkKPiAtCQljdHgtPmdndHRfb2Zmc2V0X2JpYXMgPSBHVUNf V09QQ01fVE9QOwo+ICsJCWN0eC0+Z2d0dF9vZmZzZXRfYmlhcyA9IGRldl9wcml2LT5ndWMud29w Y20udG9wOwo+ICAJZWxzZQo+ICAJCWN0eC0+Z2d0dF9vZmZzZXRfYmlhcyA9IEk5MTVfR1RUX1BB R0VfU0laRTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjLmMg IAo+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjLmMKPiBpbmRleCBkOWJjMmE5Li5l Y2Q1ZGEyIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Yy5jCj4g KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjLmMKPiBAQCAtNjUsNiArNjUsNyBA QCB2b2lkIGludGVsX2d1Y19pbml0X2Vhcmx5KHN0cnVjdCBpbnRlbF9ndWMgKmd1YykKPiAgCWlu dGVsX2d1Y19md19pbml0X2Vhcmx5KGd1Yyk7Cj4gIAlpbnRlbF9ndWNfY3RfaW5pdF9lYXJseSgm Z3VjLT5jdCk7Cj4gIAlpbnRlbF9ndWNfbG9nX2luaXRfZWFybHkoZ3VjKTsKPiArCWludGVsX2d1 Y193b3BjbV9pbml0X2Vhcmx5KCZndWMtPndvcGNtKTsKPiAJbXV0ZXhfaW5pdCgmZ3VjLT5zZW5k X211dGV4KTsKPiAgCWd1Yy0+c2VuZCA9IGludGVsX2d1Y19zZW5kX25vcDsKPiBAQCAtNDc4LDcg KzQ3OSw3IEBAIGludCBpbnRlbF9ndWNfcmVzdW1lKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICAK PiAqZGV2X3ByaXYpCj4gICAqIFRoaXMgaXMgYSB3cmFwcGVyIHRvIGNyZWF0ZSBhbiBvYmplY3Qg Zm9yIHVzZSB3aXRoIHRoZSBHdUMuIEluIG9yZGVyICAKPiB0bwo+ICAgKiB1c2UgaXQgaW5zaWRl IHRoZSBHdUMsIGFuIG9iamVjdCBuZWVkcyB0byBiZSBwaW5uZWQgbGlmZXRpbWUsIHNvIHdlICAK PiBhbGxvY2F0ZQo+ICAgKiBib3RoIHNvbWUgYmFja2luZyBzdG9yYWdlIGFuZCBhIHJhbmdlIGlu c2lkZSB0aGUgR2xvYmFsIEdUVC4gV2UgbXVzdCAgCj4gcGluCj4gLSAqIGl0IGluIHRoZSBHR1RU IHNvbWV3aGVyZSBvdGhlciB0aGFuIHRoYW4gWzAsIEdVQ19XT1BDTV9UT1ApIGJlY2F1c2UgIAo+ IHRoYXQKPiArICogaXQgaW4gdGhlIEdHVFQgc29tZXdoZXJlIG90aGVyIHRoYW4gdGhhbiBbMCwg R3VDIFdPUENNIHRvcCkgYmVjYXVzZSAgCj4gdGhhdAo+ICAgKiByYW5nZSBpcyByZXNlcnZlZCBp bnNpZGUgR3VDLgo+ICAgKgo+ICAgKiBSZXR1cm46CUEgaTkxNV92bWEgaWYgc3VjY2Vzc2Z1bCwg b3RoZXJ3aXNlIGFuIEVSUl9QVFIuCj4gQEAgLTQ5OSw3ICs1MDAsNyBAQCBzdHJ1Y3QgaTkxNV92 bWEgKmludGVsX2d1Y19hbGxvY2F0ZV92bWEoc3RydWN0ICAKPiBpbnRlbF9ndWMgKmd1YywgdTMy IHNpemUpCj4gIAkJZ290byBlcnI7Cj4gCXJldCA9IGk5MTVfdm1hX3Bpbih2bWEsIDAsIFBBR0Vf U0laRSwKPiAtCQkJICAgUElOX0dMT0JBTCB8IFBJTl9PRkZTRVRfQklBUyB8IEdVQ19XT1BDTV9U T1ApOwo+ICsJCQkgICBQSU5fR0xPQkFMIHwgUElOX09GRlNFVF9CSUFTIHwgZ3VjLT53b3BjbS50 b3ApOwo+ICAJaWYgKHJldCkgewo+ICAJCXZtYSA9IEVSUl9QVFIocmV0KTsKPiAgCQlnb3RvIGVy cjsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjLmggIAo+IGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjLmgKPiBpbmRleCA1MGJlNmRlLi4wNmYzMTVl IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Yy5oCj4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjLmgKPiBAQCAtNDksNiArNDksNyBAQCBzdHJ1 Y3QgaW50ZWxfZ3VjIHsKPiAgCXN0cnVjdCBpbnRlbF91Y19mdyBmdzsKPiAgCXN0cnVjdCBpbnRl bF9ndWNfbG9nIGxvZzsKPiAgCXN0cnVjdCBpbnRlbF9ndWNfY3QgY3Q7Cj4gKwlzdHJ1Y3QgaW50 ZWxfZ3VjX3dvcGNtIHdvcGNtOwo+IAkvKiBMb2cgc25hcHNob3QgaWYgR3VDIGVycm9ycyBkdXJp bmcgbG9hZCAqLwo+ICAJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKmxvYWRfZXJyX2xvZzsK PiBAQCAtMTA5LDEwICsxMTAsMTAgQEAgc3RhdGljIGlubGluZSB2b2lkIGludGVsX2d1Y19ub3Rp Znkoc3RydWN0ICAKPiBpbnRlbF9ndWMgKmd1YykKPiAgICogQGd1YzogaW50ZWwgZ3VjLgo+ICAg KiBAdm1hOiBpOTE1IGdyYXBoaWNzIHZpcnR1YWwgbWVtb3J5IGFyZWEuCj4gICAqCj4gLSAqIEd1 QyBkb2VzIG5vdCBhbGxvdyBhbnkgZ2Z4IEdHVFQgYWRkcmVzcyB0aGF0IGZhbGxzIGludG8gcmFu Z2UgWzAsICAKPiBXT1BDTV9UT1ApLAo+IC0gKiB3aGljaCBpcyByZXNlcnZlZCBmb3IgQm9vdCBS T00sIFNSQU0gYW5kIFdPUENNLiBDdXJyZW50bHkgdGhpcyB0b3AgIAo+IGFkZHJlc3MgaXMKPiAt ICogNTEySy4gSW4gb3JkZXIgdG8gZXhjbHVkZSAwLTUxMksgYWRkcmVzcyBzcGFjZSBmcm9tIEdH VFQsIGFsbCBnZnggIAo+IG9iamVjdHMKPiAtICogdXNlZCBieSBHdUMgaXMgcGlubmVkIHdpdGgg UElOX09GRlNFVF9CSUFTIGFsb25nIHdpdGggc2l6ZSBvZiBXT1BDTS4KPiArICogR3VDIGRvZXMg bm90IGFsbG93IGFueSBnZnggR0dUVCBhZGRyZXNzIHRoYXQgZmFsbHMgaW50byByYW5nZQo+ICsg KiBbMCwgR3VDIFdPUENNIHRvcCksIHdoaWNoIGlzIHJlc2VydmVkIGZvciBCb290IFJPTSwgU1JB TSBhbmQgV09QQ00uCj4gKyAqIEFsbCBnZnggb2JqZWN0cyB1c2VkIGJ5IEd1QyBpcyBwaW5uZWQg d2l0aCBQSU5fT0ZGU0VUX0JJQVMgYWxvbmcgd2l0aAo+ICsgKiB0b3Agb2YgV09QQ00uCj4gICAq Cj4gICAqIFJldHVybjogR0dUVCBvZmZzZXQgdGhhdCBtZWV0cyB0aGUgR3VDIGdmeCBhZGRyZXNz IHJlcXVpcmVtZW50Lgo+ICAgKi8KPiBAQCAtMTIxLDcgKzEyMiw4IEBAIHN0YXRpYyBpbmxpbmUg dTMyIGludGVsX2d1Y19nZ3R0X29mZnNldChzdHJ1Y3QgIAo+IGludGVsX2d1YyAqZ3VjLAo+ICB7 Cj4gIAl1MzIgb2Zmc2V0ID0gaTkxNV9nZ3R0X29mZnNldCh2bWEpOwo+IC0JR0VNX0JVR19PTihv ZmZzZXQgPCBHVUNfV09QQ01fVE9QKTsKPiArCUdFTV9CVUdfT04oIWd1Yy0+d29wY20udmFsaWQp Owo+ICsJR0VNX0JVR19PTihvZmZzZXQgPCBndWMtPndvcGNtLnRvcCk7Cj4gIAlHRU1fQlVHX09O KHJhbmdlX292ZXJmbG93c190KHU2NCwgb2Zmc2V0LCB2bWEtPnNpemUsIEdVQ19HR1RUX1RPUCkp Owo+IAlyZXR1cm4gb2Zmc2V0Owo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9ndWNfd29wY20uYyAgCj4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfd29w Y20uYwo+IGluZGV4IGMzZDU0ZjguLjhiMmNlNDkgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZ3VjX3dvcGNtLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9ndWNfd29wY20uYwo+IEBAIC0yNywyMiArMjcsMTE1IEBACj4gICNpbmNsdWRlICJpbnRl bF9ndWNfd29wY20uaCIKPiAgI2luY2x1ZGUgImk5MTVfZHJ2LmgiCj4gK3N0YXRpYyBpbmxpbmUg dTMyIGd1Y193b3BjbV9jb250ZXh0X3Jlc2VydmVkX3NpemUoc3RydWN0IGludGVsX2d1YyAqZ3Vj KQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IGd1Y190b19pOTE1KGd1 Yyk7Cj4gKwo+ICsJaWYgKElTX0dFTjlfTFAoaTkxNSkpCj4gKwkJcmV0dXJuIEJYVF9HVUNfV09Q Q01fUkM2X0NUWF9SRVNFUlZFRDsKPiArCj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiArc3RhdGlj IGlubGluZSBpbnQgZ2VuOV9ndWNfd29wY21fc2l6ZV9jaGVjayhzdHJ1Y3QgaW50ZWxfZ3VjX3dv cGNtICAKPiAqZ3VjX3dvcGNtKQo+ICt7Cj4gKwl1MzIgZ3VjX3dvcGNtX3N0YXJ0Owo+ICsJdTMy IGRlbHRhOwo+ICsKPiArCS8qCj4gKwkgKiBHdUMgV09QQ00gc2l6ZSBpcyBhdCBsZWFzdCBhIGR3 b3JkIGxhcmdlciB0aGFuIHRoZSBvZmZzZXQgZnJvbSBXT1BDTQo+ICsJICogYmFzZSAoR3VDIFdP UENNIG9mZnNldCBmcm9tIFdPUENNIGJhc2UgKyBHRU45X0dVQ19XT1BDTV9PRkZTRVQpIGR1ZQo+ ICsJICogdG8gaGFyZHdhcmUgbGltaXRhdGlvbiBvbiBHZW45Lgo+ICsJICovCj4gKwlndWNfd29w Y21fc3RhcnQgPSBndWNfd29wY20tPm9mZnNldCArIEdFTjlfR1VDX1dPUENNX09GRlNFVDsKPiAr CWlmICh1bmxpa2VseShndWNfd29wY21fc3RhcnQgPiBndWNfd29wY20tPnNpemUpKQo+ICsJCXJl dHVybiAtRTJCSUc7Cj4gKwo+ICsJZGVsdGEgPSBndWNfd29wY20tPnNpemUgLSBndWNfd29wY21f c3RhcnQ7Cj4gKwlpZiAodW5saWtlbHkoZGVsdGEgPCBzaXplb2YodTMyKSkpCj4gKwkJcmV0dXJu IC1FMkJJRzsKPiArCj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiArc3RhdGljIGlubGluZSBpbnQg Z3VjX3dvcGNtX3NpemVfY2hlY2soc3RydWN0IGludGVsX2d1YyAqZ3VjKQo+ICt7Cj4gKwlzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IGd1Y190b19pOTE1KGd1Yyk7Cj4gKwlzdHJ1Y3Qg aW50ZWxfZ3VjX3dvcGNtICpndWNfd29wY20gPSAmZ3VjLT53b3BjbTsKPiArCj4gKwlpZiAoSVNf R0VOOShpOTE1KSkKPiArCQlyZXR1cm4gZ2VuOV9ndWNfd29wY21fc2l6ZV9jaGVjayhndWNfd29w Y20pOwo+ICsKPiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ICAvKioKPiAtICogaW50ZWxfZ3VjX3dv cGNtX3NpemUoKSAtIEdldCB0aGUgc2l6ZSBvZiBHdUMgV09QQ00uCj4gLSAqIEBndWM6IGludGVs IGd1Yy4KPiArICogaW50ZWxfZ3VjX3dvcGNtX2luaXQoKSAtIEluaXRpYWxpemUgdGhlIEd1QyBX T1BDTS4KPiArICogQGd1Y193b3BjbTogaW50ZWxfZ3VjX3dvcGNtLi4KClBsZWFzZSB1c2UgYmV0 dGVyIGRlc2NyaXB0aW9uLCBtYXliZSAiW3BvaW50ZXIgdG9dIEd1QyBXT1BDTSIKQW5kIHJlbW92 ZSByZWR1bmRhbnQgdHJhaWxpbmcgZG90LgoKPiArICogQGd1Y19md19zaXplOiBzaXplIG9mIEd1 QyBmaXJtd2FyZS4KPiArICogQGh1Y19md19zaXplOiBzaXplIG9mIEh1QyBmaXJtd2FyZS4KPiAg ICoKPiAtICogR2V0IHRoZSBwbGF0Zm9ybSBzcGVjaWZpYyBHdUMgV09QQ00gc2l6ZS4KPiArICog Q2FsY3VsYXRlIHRoZSBHdUMgV09QQ00gb2Zmc2V0IGFuZCBzaXplIGJhc2VkIG9uIEd1QyBhbmQg SHVDICAKPiBmaXJtd2FyZSBzaXplcy4KPiArICogVGhpcyBmdW5jdGlvbiB3aWxsIHNldCB0aGUg R3VDIFdPUENNIHNpemUgdG8gdGhlIHNpemUgb2YgbWF4aW11bSAgCj4gV09QQ00KPiArICogYXZh aWxhYmxlIGZvciBHdUMuIFRoaXMgZnVuY3Rpb24gd2lsbCBhbHNvIGVuZm9yY2UgcGxhdGZvcm0g ZGVwZW5kZW50Cj4gKyAqIGhhcmR3YXJlIHJlc3RyaWN0aW9ucyBvbiBHdUMgV09QQ00gb2Zmc2V0 IGFuZCBzaXplLiBJdCB3aWxsIGZhaWwgdGhlICAKPiBHdUMKPiArICogV09QQ00gaW5pdCBpZiBh bnkgb2YgdGhlc2UgY2hlY2tzIHdlcmUgZmFpbGVkLCBzbyB0aGF0IHRoZSBmb2xsb3dpbmcgIAo+ IEd1Qwo+ICsgKiBmaXJtd2FyZSB1cGxvYWRpbmcgd291bGQgYmUgYWJvcnRlZC4KPiAgICoKPiAt ICogUmV0dXJuOiBzaXplIG9mIHRoZSBHdUMgV09QQ00uCj4gKyAqIFJldHVybjogMCBvbiBzdWNj ZXNzLCBub24temVybyBlcnJvciBjb2RlIG9uIGZhaWx1cmUuCj4gICAqLwo+IC11MzIgaW50ZWxf Z3VjX3dvcGNtX3NpemUoc3RydWN0IGludGVsX2d1YyAqZ3VjKQo+ICtpbnQgaW50ZWxfZ3VjX3dv cGNtX2luaXQoc3RydWN0IGludGVsX2d1Y193b3BjbSAqZ3VjX3dvcGNtLCB1MzIgIAo+IGd1Y19m d19zaXplLAo+ICsJCQkgdTMyIGh1Y19md19zaXplKQo+ICB7Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqaTkxNSA9IGd1Y190b19pOTE1KGd1Yyk7Cj4gLQl1MzIgc2l6ZSA9IEdVQ19XT1BD TV9UT1A7Cj4gKwlzdHJ1Y3QgaW50ZWxfZ3VjICpndWMgPQo+ICsJCWNvbnRhaW5lcl9vZihndWNf d29wY20sIHN0cnVjdCBpbnRlbF9ndWMsIHdvcGNtKTsKCklmIHlvdSBkZWZpbmUgdGhpcyBhcyAi d29wY21fdG9fZ3VjIiBpbmxpbmUgaGVscGVyLCB0aGVuIG1heWJlCmFsbCB5b3VyIGZ1bmN0aW9u cyBjb3VsZCB0YWtlICJ3b3BjbSIgYXMgZmlyc3QgcGFyYW1ldGVyPwoKPiArCXUzMiByZXNlcnZl ZCA9IGd1Y193b3BjbV9jb250ZXh0X3Jlc2VydmVkX3NpemUoZ3VjKTsKPiArCXUzMiBvZmZzZXQs IHNpemUsIHRvcDsKPiArCWludCBlcnI7Cj4gLQkvKiBPbiBCWFQsIHRoZSB0b3Agb2YgV09QQ00g aXMgcmVzZXJ2ZWQgZm9yIFJDNiBjb250ZXh0ICovCj4gLQlpZiAoSVNfR0VOOV9MUChpOTE1KSkK PiAtCQlzaXplIC09IEJYVF9HVUNfV09QQ01fUkM2X1JFU0VSVkVEOwo+ICsJaWYgKCFndWNfZndf c2l6ZSkKPiArCQlyZXR1cm4gLUVJTlZBTDsKCkFzIHRoZXJlIGFyZSBtYW55IHJlYXNvbnMgdG8g ZmFpbCwgbWF5YmUgaXQgd291bGQgYmUgZ29vZCBpZGVhIHRvCmFkZCBhdCBsZWFzdCBEUk1fREVC VUdfRFJJVkVSIHRvIGVhY2ggZmFpbGluZyBjb25kaXRpb24/Cgo+ICsKPiArCWlmIChyZXNlcnZl ZCA+PSBXT1BDTV9ERUZBVUxUX1NJWkUpCj4gKwkJcmV0dXJuIC1FMkJJRzsKCkRvIHdlIHJlYWxs eSBuZWVkIHRvIGNoZWNrIHRoaXMgZXZlcnkgdGltZSBpbiBydW50aW1lPwpJIHRoaW5rIHdlIGNh biBlbmZvcmNlIHRoaXMgYXMgR0VNX0JVR19PTiBoZXJlIG9yIGluCmd1Y193b3BjbV9jb250ZXh0 X3Jlc2VydmVkX3NpemUoKSBmdW5jdGlvbi4KCj4gKwo+ICsJb2Zmc2V0ID0gaHVjX2Z3X3NpemUg KyBXT1BDTV9SRVNFUlZFRF9TSVpFOwo+ICsJaWYgKG9mZnNldCA+PSBXT1BDTV9ERUZBVUxUX1NJ WkUpCj4gKwkJcmV0dXJuIC1FMkJJRzsKPiArCj4gKwkvKiBIYXJkd2FyZSByZXF1aXJlcyBHdUMg V09QQ00gb2Zmc2V0IHRvIGJlIDE2SyBhbGlnbmVkLiAqLwo+ICsJb2Zmc2V0ID0gQUxJR04ob2Zm c2V0LCBHVUNfV09QQ01fT0ZGU0VUX0FMSUdOTUVOVCk7Cj4gKwlpZiAoKG9mZnNldCArIHJlc2Vy dmVkKSA+PSBXT1BDTV9ERUZBVUxUX1NJWkUpCj4gKwkJcmV0dXJuIC1FMkJJRzsKPiArCj4gKwl0 b3AgPSBXT1BDTV9ERUZBVUxUX1NJWkUgLSBvZmZzZXQ7Cj4gKwlzaXplID0gdG9wIC0gcmVzZXJ2 ZWQ7Cj4gKwo+ICsJLyogR3VDIFdPUENNIHNpemUgbXVzdCBiZSBtdWx0aXBsZSBvZiA0SyBwYWdl cyAqLwo+ICsJc2l6ZSAmPSBQQUdFX01BU0s7CgpIbW0sIHRoaXMgd2lsbCB3b3JrIG9ubHkgaW4g Q09ORklHX0lBNjRfUEFHRV9TSVpFXzRLQiwgaXMgaXQgb2s/Cgo+ICsKPiArCS8qCj4gKwkgKiBH dUMgZmlybXdhcmUgc2l6ZSBuZWVkcyB0byBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gdGhlIHNp emUgb2YgdGhlCj4gKwkgKiBhdmFpbGFibGUgR3VDIFdPUENNICh0b3RhbCBhdmFpbGFibGUgR3VD IFdPUENNIHNpemUgLSByZXNlcnZlZCAgCj4gc2l6ZSkuCj4gKwkgKiBOZWVkIGV4dHJhIDhLIHN0 YWNrIGZvciBHdUMgZmlybXdhcmUuCj4gKwkgKi8KPiArCXJlc2VydmVkID0gR1VDX1dPUENNX1JF U0VSVkVEICsgR1VDX1dPUENNX1NUQUNLX1JFU0VSVkVEOwo+ICsJaWYgKChndWNfZndfc2l6ZSAr IHJlc2VydmVkKSA+IHNpemUpCj4gKwkJcmV0dXJuIC1FMkJJRzsKPiArCj4gKwlndWMtPndvcGNt Lm9mZnNldCA9IG9mZnNldDsKPiArCWd1Yy0+d29wY20uc2l6ZSA9IHNpemU7Cj4gKwlndWMtPndv cGNtLnRvcCA9IHRvcDsKPiArCj4gKwkvKiBDaGVjayBwbGF0Zm9ybSBzcGVjaWZpYyByZXN0cmlj dGlvbnMgKi8KPiArCWVyciA9IGd1Y193b3BjbV9zaXplX2NoZWNrKGd1Yyk7CgptYXliZSAiZ3Vj X3dvcGNtX2NoZWNrX3NpemUoZ3VjX3dvcGNtKSIKCj4gKwlpZiAoZXJyKQo+ICsJCXJldHVybiBl cnI7Cj4gKwo+ICsJZ3VjLT53b3BjbS52YWxpZCA9IDE7Cj4gKwo+ICsJRFJNX0RFQlVHX0RSSVZF UigiR3VDIFdPUENNIG9mZnNldCAlZEtCLCBzaXplICVkS0IsIHRvcCAlZEtCXG4iLAo+ICsJCQkg b2Zmc2V0ID4+IDEwLCBzaXplID4+IDEwLCB0b3AgPj4gMTApOwo+IC0JcmV0dXJuIHNpemU7Cj4g KwlyZXR1cm4gMDsKPiAgfQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9ndWNfd29wY20uaCAgCj4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfd29wY20u aAo+IGluZGV4IDczMjM2MDQuLjNhZjdjYTkgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZ3VjX3dvcGNtLmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9ndWNfd29wY20uaAo+IEBAIC0zMSwxNSArMzEsODYgQEAKPiBzdHJ1Y3QgaW50ZWxfZ3VjOwo+ IC0vKiA1MTJLQiBzdGF0aWMgb2Zmc2V0IGZyb20gV09QQ00gYmFzZS4gKi8KPiAtI2RlZmluZSBH VUNfV09QQ01fT0ZGU0VUX1ZBTFVFCQkoNTEyIDw8IDEwKQo+ICAvKgo+IC0gKiA1MTJLQiBzdGF0 aWMgR3VDIFdPUENNIHNpemUgZnJvbSBHVUNfV09QQ01fT0ZGU0VUX1ZBTFVFIHRvIHRoZSBlbmQg IAo+IG9mIEd1Qwo+IC0gKiBXT1BDTS4gR3VDIGFkZHJlc3NlcyBiZWxvdyBHVUNfV09QQ01fVE9Q IGRvbid0IG1hcCB0aHJvdWdoIHRoZSBHVFQuCj4gKyAqIFRoZSBsYXlvdXQgb2YgdGhlIFdPUENN IHdpbGwgYmUgZGV0ZXJtaW5lZCBieSBHdUMgV09QQ00gc2l6ZSBhbmQgIAo+IG9mZnNldAo+ICsg KiByZWdpc3RlcnMgc2V0dGluZ3MuIEN1cnJlbnRseSwgR3VDIFdPUENNIGNvZGUgY2FsY3VsYXRl cyB0aGUgR3VDICAKPiBXT1BDTSBvZmZzZXQKPiArICogYW5kIHNpemUgdmFsdWVzIGJhc2VkIG9u IGEgbGF5b3V0IGFzIHNob3duIGJlbG93Ogo+ICsgKgo+ICsgKiAgICs9PT09PSs9PT4rPT09PT09 PT09PT09PT09PT09PT0rPD09IEd1QyBXT1BDTSB0b3AKPiArICogICBeICAgICBeICAgfCAgSFcg Y29udGV4dHMgUlNWRCAgfAo+ICsgKiAgIHwgICAgIHwgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0r PD09IEd1QyBXT1BDTSBzaXplCj4gKyAqICAgfCAgICAgfCAgIHwgICAgICAgICAgICAgICAgICAg IHwKPiArICogICB8ICAgIEd1QyAgfCAgICAgICAgICAgICAgICAgICAgfAo+ICsgKiAgIHwgICBX T1BDTSArLS0tLS0tLS0tLS0tLS0tLS0tLS0rPD09IChQbGF0Zm9ybSBzcGVjaWZpYyBzaXplKQo+ ICsgKiAgIHwgICAgIHwgICB8ICAgIEd1QyBGVyBSU1ZEICAgICB8Cj4gKyAqIFdPUENNICAgfCAg ICstLS0tLS0tLS0tLS0tLS0tLS0tICs8PT0gKDE2S0IpCj4gKyAqICAgfCAgICAgdiAgIHwgICBS U1ZEIEdVQyBXT1BDTSAgIHwKClBsZWFzZSBiZSBjb25zaXN0ZW50IGluIG5hbWluZzogR3VjIHZz LiBHVUMKCj4gKyAqICAgfCAgICAgKz09Pis9PT09PT09PT09PT09PT09PT09PSs8PT0gR3VDIFdP UENNIG9mZnNldAo+ICsgKiAgIHwgICAgICAgICB8ICAgICBSU1ZEIFdPUENNICAgICB8Cj4gKyAq ICAgfCAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tICsKPiArICogICB2ICAgICAgICAgfCAg ICAgIEh1QyBGVyAgICAgICAgfAo+ICsgKiAgICs9PT09PT09PT4rPT09PT09PT09PT09PT09PT09 PT0rPD09IFdPUENNIEJhc2UKPiArICoKPiArICogR3VDIGFjY2Vzc2libGUgV09QQ00gc3RhcnRz IGF0IEd1QyBXT1BDTSBvZmZzZXQgYW5kIGVuZHMgYXQgR3VDICAKPiBXT1BDTSBzaXplLgo+ICsg KiBUaGUgdG9wIHBhcnQgb2YgdGhlIEd1QyBXT1BDTSBpcyByZXNlcnZlZCBmb3IgaGFyZHdhcmUg Y29udGV4dHMgIAo+IChlLmcuIFJDNgo+ICsgKiBjb250ZXh0KS4gV2UgbmVlZCB0byBrZWVwIHRy YWNraW5nIHRoZSBHdUMgV09QQ00gdG9wIHNpbmNlIGhhcmR3YXJlICAKPiByZXF1aXJlcwo+ICsg KiB0aGUgR0dUVCBvZmZzZXQgb2YgYSBHdUMgYWNjZXNzaWJsZSBHRU0gYnVmZmVyIHRvIGJlIGxh cmdlciB0aGFuIHRoZSAgCj4gdmFsdWUgb2YKPiArICogR3VDIFdPUENNIHRvcC4gVGhlIHZhbHVl cyBvZiBHdUMgV09QQ00gc2l6ZSBhbmQgdG9wIHNob3VsZCBiZSBzZXQgdG8gIAo+IHRoZQo+ICsg KiBsZW5ndGggZnJvbSBHdUMgV09QQ00gb2Zmc2V0IGluIGJ5dGVzLgo+ICsgKi8KPiArCj4gKy8q IERlZmF1bHQgV09QQ00gc2l6ZSAxTUIuICovCj4gKyNkZWZpbmUgV09QQ01fREVGQVVMVF9TSVpF CQkoMHgxIDw8IDIwKQoKKDEgPDwgMjApIG9yICgxMDI0ICogMTAyNCkKCj4gKy8qIFRoZSBpbml0 aWFsIDE2S0IgV09QQ00gKFJTVkQgV09QQ00pIGlzIHJlc2VydmVkLiAqLwo+ICsjZGVmaW5lIFdP UENNX1JFU0VSVkVEX1NJWkUJCSgxNiA8PCAxMCkKPiArCj4gKy8qIEdVQyBXT1BDTSBvZmZzZXQg bmVlZHMgdG8gYmUgMTZLQiBhbGlnbmVkLiAqLwo+ICsjZGVmaW5lIEdVQ19XT1BDTV9PRkZTRVRf QUxJR05NRU5UCSgxNiA8PCAxMCkKPiArLyogMTZLQiByZXNlcnZlZCBhdCB0aGUgYmVnaW5uaW5n IG9mIEd1QyBXT1BDTS4gKi8KPiArI2RlZmluZSBHVUNfV09QQ01fUkVTRVJWRUQJCSgxNiA8PCAx MCkKPiArLyogOEtCIGZyb20gR1VDX1dPUENNX1JFU0VSVkVEIGlzIHJlc2VydmVkIGZvciBHdUMg c3RhY2suICovCj4gKyNkZWZpbmUgR1VDX1dPUENNX1NUQUNLX1JFU0VSVkVECSg4IDw8IDEwKQo+ ICsvKiAyNEtCIGF0IHRoZSBlbmQgb2YgR3VDIFdPUENNIGlzIHJlc2VydmVkIGZvciBSQzYgQ1RY IG9uIEJYVC4gKi8KPiArI2RlZmluZSBCWFRfR1VDX1dPUENNX1JDNl9DVFhfUkVTRVJWRUQJKDI0 IDw8IDEwKQo+ICsKPiArLyoKPiArICogR3VDIFdPUENNIHN0YXJ0cyBhdCAxNDRLQiAoR1VDX1dP UENNX1JFU0VSVkVEICsgMTI4S0IgcmVzZXJ2ZWQgZm9yICAKPiBHdUMKPiArICogZmlybXdhcmUg bG9hZGluZykgZnJvbSBHdUMgV09QQ00gb2Zmc2V0IG9uIEJYVC4KPiArICovCj4gKyNkZWZpbmUg R0VOOV9HVUNfV09QQ01fT0ZGU0VUCQkoMTQ0IDw8IDEwKQoKT3RoZXIgQlhUIHNwZWNpZmljIG1h Y3JvIChCWFRfR1VDX1dPUENNX1JDNl9DVFhfUkVTRVJWRUQpIHdhcwpkZWZpbmVkIHdpdGggQlhU XyBwcmVmaXggLi4uIGNhbiB3ZSB1c2UgY29tbW9uIHByZWZpeD8KCj4gKwo+ICsvKioKPiArICog aW50ZWxfZ3VjX3dvcGNtIC0gR3VDIFdPUENNIHJlbGF0ZWQgc2V0dGluZ3MuCj4gKyAqIEBvZmZz ZXQ6IEd1QyBXT1BDTSBvZmZzZXQgZnJvbSB0aGUgV09QQ00gYmFzZS4KPiArICogQHNpemU6IHNp emUgb2YgR3VDIFdPUENNIGZvciBHdUMgZmlybXdhcmUuCj4gKyAqIEB0b3A6IHN0YXJ0IG9mIHRo ZSBub24tR3VDIFdPUENNIG1lbW9yeS4KPiArICogQHZhbGlkOiB3aGV0aGVyIHRoaXMgc3RydWN0 dXJlIGNvbnRhaW5zIHZhbGlkICgxLXZhbGlkLCAwLWludmFsaWQpICAKPiBpbmZvLgo+ICsgKgo+ ICsgKiBXZSBzaW1wbHkgdXNlIHRoaXMgc3RydWN0dXJlIHRvIHRyYWNrIHRoZSBHdUMgdXNlIG9m IFdPUENNLiBUaGUgIAo+IGxheW91dCBvZgo+ICsgKiBXT1BDTSB3b3VsZCBiZSBkZWZpbmVkIGJ5 IHdyaXRpbmcgdG8gR3VDIFdPUENNIG9mZnNldCBhbmQgc2l6ZSAgCj4gcmVnaXN0ZXJzLgo+ICsg Ki8KPiArc3RydWN0IGludGVsX2d1Y193b3BjbSB7Cj4gKwl1MzIgb2Zmc2V0Owo+ICsJdTMyIHNp emU7Cj4gKwl1MzIgdG9wOwo+ICsJdTMyIHZhbGlkOwo+ICt9Owo+ICsKPiArLyoqCj4gKyAqIGlu dGVsX2d1Y193b3BjbV9pbml0X2Vhcmx5KCkgLSBFYXJseSBpbml0aWFsaXphdGlvbiBvZiB0aGUg R3VDIFdPUENNLgo+ICsgKiBAZ3VjX3dvcGNtOiBpbnRlbF9ndWNfd29wY20uCj4gKyAqCj4gKyAq IFNldHVwIHRoZSBHdUMgV09QQ00gdG9wIHRvIHRoZSB0b3Agb2YgdGhlIG92ZXJhbGwgV09QQ00u IFRoaXMgd2lsbCAgCj4gZ3VhcmFudGVlCj4gKyAqIHRoYXQgdGhlIGFsbG9jYXRpb24gb2YgdGhl IEd1QyBhY2Nlc3NpYmxlIG9iamVjdHMgd29uJ3QgZmFsbCBpbnRvICAKPiBXT1BDTSB3aGVuCj4g KyAqIEd1QyBwYXJ0aXRpb24gaXNuJ3QgcHJlc2VudC4KPiArICoKPiAgICovCj4gLSNkZWZpbmUg R1VDX1dPUENNX1RPUAkJCSg1MTIgPDwgMTApCj4gLSNkZWZpbmUgQlhUX0dVQ19XT1BDTV9SQzZf UkVTRVJWRUQJKDY0IDw8IDEwKQo+ICtzdGF0aWMgaW5saW5lIHZvaWQgaW50ZWxfZ3VjX3dvcGNt X2luaXRfZWFybHkoc3RydWN0IGludGVsX2d1Y193b3BjbSAgCj4gKmd1Y193b3BjbSkKPiArewo+ ICsJZ3VjX3dvcGNtLT50b3AgPSBXT1BDTV9ERUZBVUxUX1NJWkU7Cj4gK30KPiAtdTMyIGludGVs X2d1Y193b3BjbV9zaXplKHN0cnVjdCBpbnRlbF9ndWMgKmd1Yyk7Cj4gK2ludCBpbnRlbF9ndWNf d29wY21faW5pdChzdHJ1Y3QgaW50ZWxfZ3VjX3dvcGNtICpndWNfd29wY20sIHUzMiAgCj4gZ3Vj X3NpemUsCj4gKwkJCSB1MzIgaHVjX3NpemUpOwo+ICNlbmRpZgo+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9odWMuYyAgCj4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9odWMuYwo+IGluZGV4IGFlZDljMWMuLmRjNmE2YzYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfaHVjLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9odWMuYwo+IEBAIC0yMDYsNyArMjA2LDcgQEAgaW50IGludGVsX2h1Y19hdXRoKHN0cnVj dCBpbnRlbF9odWMgKmh1YykKPiAgCQlyZXR1cm4gLUVOT0VYRUM7Cj4gCXZtYSA9IGk5MTVfZ2Vt X29iamVjdF9nZ3R0X3BpbihodWMtPmZ3Lm9iaiwgTlVMTCwgMCwgMCwKPiAtCQkJCVBJTl9PRkZT RVRfQklBUyB8IEdVQ19XT1BDTV9UT1ApOwo+ICsJCQkJUElOX09GRlNFVF9CSUFTIHwgZ3VjLT53 b3BjbS50b3ApOwo+ICAJaWYgKElTX0VSUih2bWEpKSB7Cj4gIAkJcmV0ID0gUFRSX0VSUih2bWEp Owo+ICAJCURSTV9FUlJPUigiSHVDOiBGYWlsZWQgdG8gcGluIGh1YyBmdyBvYmplY3QgJWRcbiIs IHJldCk7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3VjLmMgIAo+ IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdWMuYwo+IGluZGV4IDFiMjgzMWIuLmM4NDJm MzYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdWMuYwo+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3VjLmMKPiBAQCAtMjgzLDYgKzI4Myw5IEBAIHZv aWQgaW50ZWxfdWNfZmluaV9taXNjKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICAKPiAqZGV2X3By aXYpCj4gIGludCBpbnRlbF91Y19pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp dikKPiAgewo+ICAJc3RydWN0IGludGVsX2d1YyAqZ3VjID0gJmRldl9wcml2LT5ndWM7Cj4gKwlz dHJ1Y3QgaW50ZWxfaHVjICpodWMgPSAmZGV2X3ByaXYtPmh1YzsKPiArCXUzMiBndWNfZndfc2l6 ZSA9IGludGVsX3VjX2Z3X2dldF9zaXplKCZndWMtPmZ3KTsKPiArCXUzMiBodWNfZndfc2l6ZSA9 IGludGVsX3VjX2Z3X2dldF9zaXplKCZodWMtPmZ3KTsKPiAgCWludCByZXQ7Cj4gCWlmICghVVNF U19HVUMoZGV2X3ByaXYpKQo+IEBAIC0yOTEsNiArMjk0LDEwIEBAIGludCBpbnRlbF91Y19pbml0 KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgCWlmICghSEFTX0dVQyhkZXZf cHJpdikpCj4gIAkJcmV0dXJuIC1FTk9ERVY7Cj4gKwlyZXQgPSBpbnRlbF9ndWNfd29wY21faW5p dCgmZ3VjLT53b3BjbSwgZ3VjX2Z3X3NpemUsIGh1Y19md19zaXplKTsKPiArCWlmIChyZXQpCj4g KwkJcmV0dXJuIHJldDsKPiArCj4gIAlyZXQgPSBpbnRlbF9ndWNfaW5pdChndWMpOwo+ICAJaWYg KHJldCkKPiAgCQlyZXR1cm4gcmV0Owo+IEBAIC0zNDAsOSArMzQ3LDkgQEAgaW50IGludGVsX3Vj X2luaXRfaHcoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgIAo+ICpkZXZfcHJpdikKPiAgCWdlbjlf cmVzZXRfZ3VjX2ludGVycnVwdHMoZGV2X3ByaXYpOwo+IAkvKiBpbml0IFdPUENNICovCj4gLQlJ OTE1X1dSSVRFKEdVQ19XT1BDTV9TSVpFLCBpbnRlbF9ndWNfd29wY21fc2l6ZShndWMpKTsKPiAr CUk5MTVfV1JJVEUoR1VDX1dPUENNX1NJWkUsIGd1Yy0+d29wY20uc2l6ZSk7Cj4gIAlJOTE1X1dS SVRFKERNQV9HVUNfV09QQ01fT0ZGU0VULAo+IC0JCSAgIEdVQ19XT1BDTV9PRkZTRVRfVkFMVUUg fCBIVUNfTE9BRElOR19BR0VOVF9HVUMpOwo+ICsJCSAgIGd1Yy0+d29wY20ub2Zmc2V0IHwgSFVD X0xPQURJTkdfQUdFTlRfR1VDKTsKPiAJLyogV2FFbmFibGV1S2VybmVsSGVhZGVyVmFsaWRGaXg6 c2tsICovCj4gIAkvKiBXYUVuYWJsZUd1Q0Jvb3RIYXNoQ2hlY2tOb3RTZXQ6c2tsLGJ4dCxrYmwg Ki8KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdWNfZncuYyAgCj4g Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF91Y19mdy5jCj4gaW5kZXggMjQ5NDVjZi4uNzkx MjYzYSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF91Y19mdy5jCj4g KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdWNfZncuYwo+IEBAIC05NSw5ICs5NSwx MyBAQCB2b2lkIGludGVsX3VjX2Z3X2ZldGNoKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICAKPiAq ZGV2X3ByaXYsCj4gIAl1Y19mdy0+dWNvZGVfb2Zmc2V0ID0gdWNfZnctPmhlYWRlcl9vZmZzZXQg KyB1Y19mdy0+aGVhZGVyX3NpemU7Cj4gIAl1Y19mdy0+dWNvZGVfc2l6ZSA9IChjc3MtPnNpemVf ZHcgLSBjc3MtPmhlYWRlcl9zaXplX2R3KSAqIHNpemVvZih1MzIpOwo+IC0JLyogSGVhZGVyIGFu ZCB1Q29kZSB3aWxsIGJlIGxvYWRlZCB0byBXT1BDTSAqLwo+ICsJLyoKPiArCSAqIEhlYWRlciBh bmQgdUNvZGUgd2lsbCBiZSBsb2FkZWQgdG8gV09QQ00KPiArCSAqIE9ubHkgY2hlY2sgdGhlIHNp emUgYWdhaW5zdCB0aGUgb3ZlcmFsbCBhdmFpbGFibGUgV09QQ00gaGVyZS4gV2lsbAo+ICsJICog Y29udGludWUgdG8gY2hlY2sgdGhlIHNpemUgZHVyaW5nIFdPUENNIHBhcnRpdGlvbiBjYWxjdWxh dGlvbi4KPiArCSAqLwo+ICAJc2l6ZSA9IHVjX2Z3LT5oZWFkZXJfc2l6ZSArIHVjX2Z3LT51Y29k ZV9zaXplOwo+IC0JaWYgKHNpemUgPiBpbnRlbF9ndWNfd29wY21fc2l6ZSgmZGV2X3ByaXYtPmd1 YykpIHsKPiArCWlmIChzaXplID4gV09QQ01fREVGQVVMVF9TSVpFKSB7Cj4gIAkJRFJNX1dBUk4o IiVzOiBGaXJtd2FyZSBpcyB0b28gbGFyZ2UgdG8gZml0IGluIFdPUENNXG4iLAo+ICAJCQkgaW50 ZWxfdWNfZndfdHlwZV9yZXByKHVjX2Z3LT50eXBlKSk7Cj4gIAkJZXJyID0gLUUyQklHOwo+IEBA IC0yMDcsNiArMjExLDcgQEAgaW50IGludGVsX3VjX2Z3X3VwbG9hZChzdHJ1Y3QgaW50ZWxfdWNf ZncgKnVjX2Z3LAo+ICAJCSAgICAgICBpbnQgKCp4ZmVyKShzdHJ1Y3QgaW50ZWxfdWNfZncgKnVj X2Z3LAo+ICAJCQkJICAgc3RydWN0IGk5MTVfdm1hICp2bWEpKQo+ICB7Cj4gKwlzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqaTkxNSA9IHRvX2k5MTUodWNfZnctPm9iai0+YmFzZS5kZXYpOwo+ICAJ c3RydWN0IGk5MTVfdm1hICp2bWE7Cj4gIAlpbnQgZXJyOwo+IEBAIC0yMzAsNyArMjM1LDcgQEAg aW50IGludGVsX3VjX2Z3X3VwbG9hZChzdHJ1Y3QgaW50ZWxfdWNfZncgKnVjX2Z3LAo+ICAJfQo+ IAl2bWEgPSBpOTE1X2dlbV9vYmplY3RfZ2d0dF9waW4odWNfZnctPm9iaiwgTlVMTCwgMCwgMCwK PiAtCQkJCSAgICAgICBQSU5fT0ZGU0VUX0JJQVMgfCBHVUNfV09QQ01fVE9QKTsKPiArCQkJCSAg ICAgICBQSU5fT0ZGU0VUX0JJQVMgfCBpOTE1LT5ndWMud29wY20udG9wKTsKPiAgCWlmIChJU19F UlIodm1hKSkgewo+ICAJCWVyciA9IFBUUl9FUlIodm1hKTsKPiAgCQlEUk1fREVCVUdfRFJJVkVS KCIlcyBmdyBnZ3R0LXBpbiBlcnI9JWRcbiIsCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX3VjX2Z3LmggIAo+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdWNf ZncuaAo+IGluZGV4IGQ1ZmQ0NjAuLjI5OGQ0NzUgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfdWNfZncuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X3VjX2Z3LmgKPiBAQCAtMTE1LDYgKzExNSwyMiBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaW50ZWxf dWNfZndfaXNfc2VsZWN0ZWQoc3RydWN0ICAKPiBpbnRlbF91Y19mdyAqdWNfZncpCj4gIAlyZXR1 cm4gdWNfZnctPnBhdGggIT0gTlVMTDsKPiAgfQo+ICsvKioKPiArICogaW50ZWxfdWNfZndfZ2V0 X3NpemUoKSAtIEdldCB0aGUgc2l6ZSBvZiB0aGUgZmlybXdhcmUuCj4gKyAqIEB1Y19mdzogaW50 ZWxfdWNfZncgc3RydWN0dXJlLgo+ICsgKgo+ICsgKiBHZXQgdGhlIHNpemUgb2YgdGhlIGZpcm13 YXJlIHRoYXQgd2lsbCBiZSBwbGFjZWQgaW4gV09QQ00uCj4gKyAqCj4gKyAqIFJldHVybjogWmVy byBvbiBpbnZhbGlkIGZpcm13YXJlIHN0YXR1cy4gYWN0dWFsIHNpemUgb24gc3VjY2Vzcy4KClJl dHVybjogU2l6ZSBvZiB0aGUgZmlybXdhcmUsIG9yIHplcm8gb24gZmlybXdhcmUgZmV0Y2ggZmFp bHVyZS4KCj4gKyAqLwo+ICtzdGF0aWMgaW5saW5lIHUzMiBpbnRlbF91Y19md19nZXRfc2l6ZShz dHJ1Y3QgaW50ZWxfdWNfZncgKnVjX2Z3KQo+ICt7Cj4gKwlpZiAodWNfZnctPmZldGNoX3N0YXR1 cyAhPSBJTlRFTF9VQ19GSVJNV0FSRV9TVUNDRVNTKQo+ICsJCXJldHVybiAwOwo+ICsKPiArCXJl dHVybiB1Y19mdy0+aGVhZGVyX3NpemUgKyB1Y19mdy0+dWNvZGVfc2l6ZTsKPiArfQo+ICsKPiAg dm9pZCBpbnRlbF91Y19md19mZXRjaChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYs Cj4gIAkJICAgICAgIHN0cnVjdCBpbnRlbF91Y19mdyAqdWNfZncpOwo+ICBpbnQgaW50ZWxfdWNf ZndfdXBsb2FkKHN0cnVjdCBpbnRlbF91Y19mdyAqdWNfZncsCl9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwt Z2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9t YWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=