From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jackie Li Subject: [PATCH v10 3/7] drm/i915/guc: Implement dynamic GuC WOPCM offset and size Date: Mon, 12 Feb 2018 15:45:49 -0800 Message-ID: <1518479153-28429-3-git-send-email-yaodong.li@intel.com> References: <1518479153-28429-1-git-send-email-yaodong.li@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by gabe.freedesktop.org (Postfix) with ESMTPS id 8977289DBC for ; Mon, 12 Feb 2018 23:47:33 +0000 (UTC) In-Reply-To: <1518479153-28429-1-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 Cc: Sujaritha Sundaresan List-Id: intel-gfx@lists.freedesktop.org SGFyZHdhcmUgbWF5IGhhdmUgc3BlY2lmaWMgcmVzdHJpY3Rpb25zIG9uIEd1QyBXT1BDTSBvZmZz ZXQgYW5kIHNpemUuIE9uCkdlbjksIHRoZSB2YWx1ZSBvZiB0aGUgR3VDIFdPUENNIHNpemUgcmVn aXN0ZXIgbmVlZHMgdG8gYmUgbGFyZ2VyIHRoYW4gdGhlCnZhbHVlIG9mIEd1QyBXT1BDTSBvZmZz ZXQgcmVnaXN0ZXIgKyBhIEdlbjkgc3BlY2lmaWMgb2Zmc2V0ICgxNDRLQikgZm9yCnJlc2VydmVk IEd1QyBXT1BDTS4gRmFpbCB0byBlbmZvcmNlIHN1Y2ggYSByZXN0cmljdGlvbiBvbiBHdUMgV09Q Q00gc2l6ZQp3aWxsIGxlYWQgdG8gR3VDIGZpcm13YXJlIGV4ZWN1dGlvbiBmYWlsdXJlcy4gU28g d2UgbmVlZCBhZGQgY29kZSB0byB2ZXJpZnkKdGhlIEd1QyBXT1BDTSBvZmZzZXQgYW5kIHNpemUg dG8gYXZvaWQgYW55IEd1QyBmYWlsdXJlcy4gT24gdGhlIG90aGVyIGhhbmQsCndpdGggY3VycmVu dCBzdGF0aWMgR3VDIFdPUENNIG9mZnNldCBhbmQgc2l6ZSB2YWx1ZXMgKDUxMktCIGZvciBib3Ro IG9mZnNldAphbmQgc2l6ZSksIHRoZSBHdUMgV09QQ00gc2l6ZSB2ZXJpZmljYXRpb24gd2lsbCBm YWlsIG9uIEdlbjkgZXZlbiBpZiBpdCBjYW4KYmUgZml4ZWQgYnkgbG93ZXJpbmcgdGhlIEd1QyBX T1BDTSBvZmZzZXQgYnkgY2FsY3VsYXRpbmcgaXRzIHZhbHVlIGJhc2VkIG9uCkh1QyBmaXJtd2Fy ZSBzaXplICh3aGljaCBpcyBsaWtlbHkgbGVzcyB0aGFuIDIwMEtCIG9uIEdlbjkpLCBzbyB0aGF0 IHdlIGNhbgpoYXZlIGEgR3VDIFdPUENNIHNpemUgdmFsdWUgd2hpY2ggaXMgbGFyZ2UgZW5vdWdo IHRvIHBhc3MgdGhlIEd1QyBXT1BDTQpzaXplIGNoZWNrLgoKVGhpcyBwYXRjaCB1cGRhdGVzIHRo ZSByZXNlcnZlZCBHdUMgV09QQ00gc2l6ZSBmb3IgUkM2IGNvbnRleHQgb24gR2VuOSB0bwoyNEtC IHRvIHN0cmljdGx5IGFsaWduIHdpdGggdGhlIEdlbjkgR3VDIFdPUENNIGxheW91dCBhbmQgYWRk IHN1cHBvcnQgdG8KcmV0dXJuIENOTCBzcGVjaWZpYyBoYXJkd2FyZSByZXNlcnZlZCBHdUMgV09Q Q00gc2l6ZS4gSXQgYWxzbyBhZGRzIHN1cHBvcnQKdG8gdmVyaWZ5IHRoZSBHdUMgV09QQ00gc2l6 ZSBhZ2FuaXN0IHRoZSBHZW45IGhhcmR3YXJlIHJlc3RyaWN0aW9ucy4KTWVhbndoaWxlLCBpdCBw cm92aWRlcyBhIGNvbW1vbiB3YXkgdG8gY2FsY3VsYXRlIEd1QyBXT1BDTSBvZmZzZXQgYW5kIHNp emUKYmFzZWQgb24gR3VDIGFuZCBIdUMgZmlybXdhcmUgc2l6ZXMgZm9yIGFsbCBHdUMvSHVDIGVu YWJsZWQgcGxhdGZvcm1zLgpDdXJyZW50bHksIEd1QyBXT1BDTSBvZmZzZXQgaXMgY2FsY3VsYXRl ZCBiYXNlZCBvbiBIdUMgZmlybXdhcmUgc2l6ZSArCnJlc2VydmVkIFdPUENNIHNpemUgd2hpbGUg R3VDIFdPUENNIHNpemUgaXMgc2V0IHRvIHRvdGFsIFdPUENNIHNpemUgLSBHdUMKV09QQ00gb2Zm c2V0IC0gaGFyZHdhcmUgcmVzZXJ2ZWQgR3VDIFdPUENNIHNpemUuIEluIHRoaXMgY2FzZSwgR3VD IFdPUENNCm9mZnNldCB3aWxsIGJlIHVwZGF0ZWQgYmFzZWQgb24gdGhlIHNpemUgb2YgSHVDIGZp cm13YXJlIHdoaWxlIEd1QyBXT1BDTQpzaXplIHdpbGwgYmUgc2V0IHRvIHVzZSBhbGwgdGhlIHJl bWFpbmluZyBXT1BDTSBzcGFjZS4KCnYyOgogLSBSZW1vdmVkIGludGVsX3dvcGNtX2luaXQgKFZp bGxlL1NhZ2FyL0pvb25hcykKIC0gUmVuYW1lZCBhbmQgTW92ZWQgdGhlIGludGVsX3dvcGNtX3Bh cnRpdGlvbiBpbnRvIGludGVsX2d1YyAoU2FnYXIpCiAtIFJlbW92ZWQgdW5uZWNlc3NhcnkgZnVu Y3Rpb24gY2FsbHMgKEpvb25hcykKIC0gSW5pdCBHdUMgV09QQ00gcGFydGl0aW9uIGFzIHNvb24g YXMgZmlybXdhcmUgZmV0Y2hpbmcgaXMgY29tcGxldGVkCgp2MzoKIC0gRml4ZWQgaW5kZW50YXRp b24gaXNzdWVzIChDaHJpcykKIC0gUmVtb3ZlZCBsYXllcmluZyB2aW9sYXRpb24gY29kZSAoQ2hy aXMvTWljaGFsKQogLSBDcmVhdGVkIHNlcGFyYXQgZmlsZXMgZm9yIEd1QyB3b3BjbSBjb2RlICAo TWljaGFsKQogLSBVc2VkIGlubGluZSBmdW5jdGlvbiB0byBhdm9pZCBjb2RlIGR1cGxpY2F0aW9u IChNaWNoYWwpCgp2NDoKIC0gUHJlc2V0IHRoZSBHdUMgV09QQ00gdG9wIGR1cmluZyBlYXJseSBH dUMgaW5pdCAoQ2hyaXMpCiAtIEZhaWwgaW50ZWxfdWNfaW5pdF9odygpIGFzIHNvb24gYXMgR3VD IFdPUENNIHBhcnRpdGlvbmluZyBmYWlsZWQKCnY1OgogLSBNb3ZlZCBHdUMgRE1BIFdPUENNIHJl Z2lzdGVyIHVwZGF0aW5nIGNvZGUgaW50byBpbnRlbF9ndWNfd29wY20uYwogLSBUb29rIGNhcmUg b2YgdGhlIGxvY2tpbmcgc3RhdHVzIGJlZm9yZSB3cml0aW5nIHRvIEd1QyBETUEKICAgV3JpdGUt T25jZSByZWdpc3RlcnMuIChKb29uYXMpCgp2NjoKIC0gTWFkZSBzdXJlIHRoZSBHdUMgV09QQ00g c2l6ZSB0byBiZSBtdWx0aXBsZSBvZiA0SyAoNEsgYWxpZ25lZCkKCnY4OgogLSBVcGRhdGVkIGNv bW1lbnRzIGFuZCBmaXhlZCBuYW1pbmcgaXNzdWVzIChTYWdhci9Kb29uYXMpCiAtIFVwZGF0ZWQg Y29tbWl0IG1lc3NhZ2UgdG8gaW5jbHVkZSBtb3JlIGRlc2NyaXB0aW9uIGFib3V0IHRoZSBoYXJk d2FyZQogICByZXN0cmljdGlvbiBvbiBHdUMgV09QQ00gc2l6ZSAoU2FnYXIpCgp2OToKIC0gTWlu b3IgY2hhbmdlcyB2YXJpYWJsZSBuYW1lcyBhbmQgY29kZSBjb21tZW50cyAoU2FnYXIpCiAtIEFk ZGVkIGRldGFpbGVkIEd1QyBXT1BDTSBsYXlvdXQgZHJhd2luZyAoU2FnYXIvTWljaGFsKQogLSBS ZWZpbmVkIG1hY3JvIGRlZmluaXRpb25zIHRvIGJlIHJlYWRlciBmcmllbmRseSAoTWljaGFsKQog LSBSZW1vdmVkIHJlZHVuZGVudCBjaGVjayB0byB2YWxpZCBmbGFnIChNaWNoYWwpCiAtIFVuaWZp ZWQgZmlyc3QgcGFyYW1ldGVyIGZvciBleHBvcnRlZCBHdUMgV09QQ00gZnVuY3Rpb25zIChNaWNo YWwpCiAtIFJlZmluZWQgdGhlIG5hbWUgYW5kIHBhcmFtZXRlciBsaXN0IG9mIGhhcmR3YXJlIHJl c3RyaWN0aW9uIGNoZWNraW5nCiAgIGZ1bmN0aW9ucyAoTWljaGFsKQoKdjEwOgogLSBVc2VkIHNo b3J0ZXIgZnVuY3Rpb24gbmFtZSBmb3IgaW50ZXJuYWwgZnVuY3Rpb25zIChKb29uYXMpCiAtIE1v dmVkIGluaXQtZWFscnkgZnVuY3Rpb24gaW50byBjIGZpbGUgKEpvb25hcykKIC0gQ29uc29saWRh dGVkIGFuZCByZW1vdmVkIHJlZHVuZGFudCBzaXplIGNoZWNrcyAoSm9vbmFzL01pY2hhbCkKIC0g UmVtb3ZlZCB1bm5lY2Vzc2FyeSB1bmxpa2VseSgpIGZyb20gY29kZSB3aGljaCBpcyBvbmx5IGNh bGxlZCBvbmNlCiAgIGR1cmluZyBib290IChKb29uYXMpCiAtIE1vcmUgZml4ZXMgdG8ga2VybmVs LWRvYyBmb3JtYXQgYW5kIGNvbnRlbnQgKE1pY2hhbCkKIC0gQXZvaWRlZCB0aGUgdXNlIG9mIFBB R0VfTUFTSyBmb3IgNEsgcGFnZXMgKE1pY2hhbCkKIC0gQWRkZWQgZXJyb3IgbG9nIG1lc3NhZ2Vz IHRvIGVycm9yIHBhdGhzIChNaWNoYWwpCgpDYzogTWljaGFsIFdhamRlY3prbyA8bWljaGFsLndh amRlY3prb0BpbnRlbC5jb20+CkNjOiBTYWdhciBBcnVuIEthbWJsZSA8c2FnYXIuYS5rYW1ibGVA aW50ZWwuY29tPgpDYzogU3VqYXJpdGhhIFN1bmRhcmVzYW4gPHN1amFyaXRoYS5zdW5kYXJlc2Fu QGludGVsLmNvbT4KQ2M6IERhbmllbGUgQ2VyYW9sbyBTcHVyaW8gPGRhbmllbGUuY2VyYW9sb3Nw dXJpb0BpbnRlbC5jb20+CkNjOiBKb2huIFNwb3Rzd29vZCA8am9obi5hLnNwb3Rzd29vZEBpbnRl bC5jb20+CkNjOiBPc2NhciBNYXRlbyA8b3NjYXIubWF0ZW9AaW50ZWwuY29tPgpDYzogQ2hyaXMg V2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+CkNjOiBKb29uYXMgTGFodGluZW4gPGpv b25hcy5sYWh0aW5lbkBsaW51eC5pbnRlbC5jb20+ClJldmlld2VkLWJ5OiBTYWdhciBBcnVuIEth bWJsZSA8c2FnYXIuYS5rYW1ibGVAaW50ZWwuY29tPiAodjgpClJldmlld2VkLWJ5OiBKb29uYXMg TGFodGluZW4gPGpvb25hcy5sYWh0aW5lbkBsaW51eC5pbnRlbC5jb20+ICh2OSkKU2lnbmVkLW9m Zi1ieTogSmFja2llIExpIDx5YW9kb25nLmxpQGludGVsLmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMgfCAgIDUgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2d1Yy5jICAgICAgICB8ICAgNSArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf Z3VjLmggICAgICAgIHwgIDEyICstLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX3Jl Zy5oICAgIHwgICAyICsKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Y193b3BjbS5jICB8 IDEyOCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLQogZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZ3VjX3dvcGNtLmggIHwgIDcyICsrKysrKysrKysrKysrKystLQogZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfaHVjLmMgICAgICAgIHwgICAyICstCiBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF91Yy5jICAgICAgICAgfCAgMTEgKystCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF91Y19mdy5jICAgICAgfCAgMTEgKystCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF91 Y19mdy5oICAgICAgfCAgMTYgKysrKwogMTAgZmlsZXMgY2hhbmdlZCwgMjMxIGluc2VydGlvbnMo KyksIDMzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZ2VtX2NvbnRleHQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQu YwppbmRleCAzZDc1ZjQ4Li40MTRlYWIyIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2dlbV9jb250ZXh0LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1f Y29udGV4dC5jCkBAIC0zMTIsMTIgKzMxMiwxMyBAQCBfX2NyZWF0ZV9od19jb250ZXh0KHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAljdHgtPmRlc2NfdGVtcGxhdGUgPQogCQlk ZWZhdWx0X2Rlc2NfdGVtcGxhdGUoZGV2X3ByaXYsIGRldl9wcml2LT5tbS5hbGlhc2luZ19wcGd0 dCk7CiAKLQkvKiBHdUMgcmVxdWlyZXMgdGhlIHJpbmcgdG8gYmUgcGxhY2VkIGFib3ZlIEdVQ19X T1BDTV9UT1AuIElmIEd1QyBpcyBub3QKKwkvKgorCSAqIEd1QyByZXF1aXJlcyB0aGUgcmluZyB0 byBiZSBwbGFjZWQgYWJvdmUgR3VDIFdPUENNIHRvcC4gSWYgR3VDIGlzIG5vdAogCSAqIHByZXNl bnQgb3Igbm90IGluIHVzZSB3ZSBzdGlsbCBuZWVkIGEgc21hbGwgYmlhcyBhcyByaW5nIHdyYXBh cm91bmQKIAkgKiBhdCBvZmZzZXQgMCBzb21ldGltZXMgaGFuZ3MuIE5vIGlkZWEgd2h5LgogCSAq LwogCWlmIChVU0VTX0dVQyhkZXZfcHJpdikpCi0JCWN0eC0+Z2d0dF9vZmZzZXRfYmlhcyA9IEdV Q19XT1BDTV9UT1A7CisJCWN0eC0+Z2d0dF9vZmZzZXRfYmlhcyA9IGRldl9wcml2LT5ndWMud29w Y20udG9wOwogCWVsc2UKIAkJY3R4LT5nZ3R0X29mZnNldF9iaWFzID0gSTkxNV9HVFRfUEFHRV9T SVpFOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWMuYyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Yy5jCmluZGV4IGZkZjhjYjMuLjU3OGU5ZjQgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Yy5jCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2d1Yy5jCkBAIC02NSw2ICs2NSw3IEBAIHZvaWQgaW50ZWxfZ3Vj X2luaXRfZWFybHkoc3RydWN0IGludGVsX2d1YyAqZ3VjKQogCWludGVsX2d1Y19md19pbml0X2Vh cmx5KGd1Yyk7CiAJaW50ZWxfZ3VjX2N0X2luaXRfZWFybHkoJmd1Yy0+Y3QpOwogCWludGVsX2d1 Y19sb2dfaW5pdF9lYXJseShndWMpOworCWludGVsX2d1Y193b3BjbV9pbml0X2Vhcmx5KCZndWMt PndvcGNtKTsKIAogCW11dGV4X2luaXQoJmd1Yy0+c2VuZF9tdXRleCk7CiAJZ3VjLT5zZW5kID0g aW50ZWxfZ3VjX3NlbmRfbm9wOwpAQCAtNDc3LDcgKzQ3OCw3IEBAIGludCBpbnRlbF9ndWNfcmVz dW1lKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKICAqIFRoaXMgaXMgYSB3cmFw cGVyIHRvIGNyZWF0ZSBhbiBvYmplY3QgZm9yIHVzZSB3aXRoIHRoZSBHdUMuIEluIG9yZGVyIHRv CiAgKiB1c2UgaXQgaW5zaWRlIHRoZSBHdUMsIGFuIG9iamVjdCBuZWVkcyB0byBiZSBwaW5uZWQg bGlmZXRpbWUsIHNvIHdlIGFsbG9jYXRlCiAgKiBib3RoIHNvbWUgYmFja2luZyBzdG9yYWdlIGFu ZCBhIHJhbmdlIGluc2lkZSB0aGUgR2xvYmFsIEdUVC4gV2UgbXVzdCBwaW4KLSAqIGl0IGluIHRo ZSBHR1RUIHNvbWV3aGVyZSBvdGhlciB0aGFuIHRoYW4gWzAsIEdVQ19XT1BDTV9UT1ApIGJlY2F1 c2UgdGhhdAorICogaXQgaW4gdGhlIEdHVFQgc29tZXdoZXJlIG90aGVyIHRoYW4gdGhhbiBbMCwg R3VDIFdPUENNIHRvcCkgYmVjYXVzZSB0aGF0CiAgKiByYW5nZSBpcyByZXNlcnZlZCBpbnNpZGUg R3VDLgogICoKICAqIFJldHVybjoJQSBpOTE1X3ZtYSBpZiBzdWNjZXNzZnVsLCBvdGhlcndpc2Ug YW4gRVJSX1BUUi4KQEAgLTQ5OCw3ICs0OTksNyBAQCBzdHJ1Y3QgaTkxNV92bWEgKmludGVsX2d1 Y19hbGxvY2F0ZV92bWEoc3RydWN0IGludGVsX2d1YyAqZ3VjLCB1MzIgc2l6ZSkKIAkJZ290byBl cnI7CiAKIAlyZXQgPSBpOTE1X3ZtYV9waW4odm1hLCAwLCBQQUdFX1NJWkUsCi0JCQkgICBQSU5f R0xPQkFMIHwgUElOX09GRlNFVF9CSUFTIHwgR1VDX1dPUENNX1RPUCk7CisJCQkgICBQSU5fR0xP QkFMIHwgUElOX09GRlNFVF9CSUFTIHwgZ3VjLT53b3BjbS50b3ApOwogCWlmIChyZXQpIHsKIAkJ dm1hID0gRVJSX1BUUihyZXQpOwogCQlnb3RvIGVycjsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2d1Yy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjLmgK aW5kZXggNTBiZTZkZS4uMDZmMzE1ZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZ3VjLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjLmgKQEAgLTQ5 LDYgKzQ5LDcgQEAgc3RydWN0IGludGVsX2d1YyB7CiAJc3RydWN0IGludGVsX3VjX2Z3IGZ3Owog CXN0cnVjdCBpbnRlbF9ndWNfbG9nIGxvZzsKIAlzdHJ1Y3QgaW50ZWxfZ3VjX2N0IGN0OworCXN0 cnVjdCBpbnRlbF9ndWNfd29wY20gd29wY207CiAKIAkvKiBMb2cgc25hcHNob3QgaWYgR3VDIGVy cm9ycyBkdXJpbmcgbG9hZCAqLwogCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpsb2FkX2Vy cl9sb2c7CkBAIC0xMDksMTAgKzExMCwxMCBAQCBzdGF0aWMgaW5saW5lIHZvaWQgaW50ZWxfZ3Vj X25vdGlmeShzdHJ1Y3QgaW50ZWxfZ3VjICpndWMpCiAgKiBAZ3VjOiBpbnRlbCBndWMuCiAgKiBA dm1hOiBpOTE1IGdyYXBoaWNzIHZpcnR1YWwgbWVtb3J5IGFyZWEuCiAgKgotICogR3VDIGRvZXMg bm90IGFsbG93IGFueSBnZnggR0dUVCBhZGRyZXNzIHRoYXQgZmFsbHMgaW50byByYW5nZSBbMCwg V09QQ01fVE9QKSwKLSAqIHdoaWNoIGlzIHJlc2VydmVkIGZvciBCb290IFJPTSwgU1JBTSBhbmQg V09QQ00uIEN1cnJlbnRseSB0aGlzIHRvcCBhZGRyZXNzIGlzCi0gKiA1MTJLLiBJbiBvcmRlciB0 byBleGNsdWRlIDAtNTEySyBhZGRyZXNzIHNwYWNlIGZyb20gR0dUVCwgYWxsIGdmeCBvYmplY3Rz Ci0gKiB1c2VkIGJ5IEd1QyBpcyBwaW5uZWQgd2l0aCBQSU5fT0ZGU0VUX0JJQVMgYWxvbmcgd2l0 aCBzaXplIG9mIFdPUENNLgorICogR3VDIGRvZXMgbm90IGFsbG93IGFueSBnZnggR0dUVCBhZGRy ZXNzIHRoYXQgZmFsbHMgaW50byByYW5nZQorICogWzAsIEd1QyBXT1BDTSB0b3ApLCB3aGljaCBp cyByZXNlcnZlZCBmb3IgQm9vdCBST00sIFNSQU0gYW5kIFdPUENNLgorICogQWxsIGdmeCBvYmpl Y3RzIHVzZWQgYnkgR3VDIGlzIHBpbm5lZCB3aXRoIFBJTl9PRkZTRVRfQklBUyBhbG9uZyB3aXRo CisgKiB0b3Agb2YgV09QQ00uCiAgKgogICogUmV0dXJuOiBHR1RUIG9mZnNldCB0aGF0IG1lZXRz IHRoZSBHdUMgZ2Z4IGFkZHJlc3MgcmVxdWlyZW1lbnQuCiAgKi8KQEAgLTEyMSw3ICsxMjIsOCBA QCBzdGF0aWMgaW5saW5lIHUzMiBpbnRlbF9ndWNfZ2d0dF9vZmZzZXQoc3RydWN0IGludGVsX2d1 YyAqZ3VjLAogewogCXUzMiBvZmZzZXQgPSBpOTE1X2dndHRfb2Zmc2V0KHZtYSk7CiAKLQlHRU1f QlVHX09OKG9mZnNldCA8IEdVQ19XT1BDTV9UT1ApOworCUdFTV9CVUdfT04oIWd1Yy0+d29wY20u dmFsaWQpOworCUdFTV9CVUdfT04ob2Zmc2V0IDwgZ3VjLT53b3BjbS50b3ApOwogCUdFTV9CVUdf T04ocmFuZ2Vfb3ZlcmZsb3dzX3QodTY0LCBvZmZzZXQsIHZtYS0+c2l6ZSwgR1VDX0dHVFRfVE9Q KSk7CiAKIAlyZXR1cm4gb2Zmc2V0OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZ3VjX3JlZy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX3JlZy5oCmlu ZGV4IGRlNGY3OGIuLmM0ODJkZjUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2d1Y19yZWcuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfcmVnLmgK QEAgLTc1LDYgKzc1LDggQEAKIAogLyogRGVmaW5lcyBXT1BDTSBzcGFjZSBhdmFpbGFibGUgdG8g R3VDIGZpcm13YXJlICovCiAjZGVmaW5lIEdVQ19XT1BDTV9TSVpFCQkJX01NSU8oMHhjMDUwKQor I2RlZmluZSAgIEdVQ19XT1BDTV9TSVpFX1NISUZUCQkxMgorI2RlZmluZSAgIEdVQ19XT1BDTV9T SVpFX01BU0sJCSAgKDB4ZmZmZmYgPDwgR1VDX1dPUENNX1NJWkVfU0hJRlQpCiAKICNkZWZpbmUg R0VOOF9HVF9QTV9DT05GSUcJCV9NTUlPKDB4MTM4MTQwKQogI2RlZmluZSBHRU45TFBfR1RfUE1f Q09ORklHCQlfTU1JTygweDEzODE0MCkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2d1Y193b3BjbS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX3dvcGNt LmMKaW5kZXggMzk3MjkwMS4uY2Y4MzJiOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZ3VjX3dvcGNtLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3Vj X3dvcGNtLmMKQEAgLTcsMjIgKzcsMTI4IEBACiAjaW5jbHVkZSAiaW50ZWxfZ3VjX3dvcGNtLmgi CiAjaW5jbHVkZSAiaTkxNV9kcnYuaCIKIAorc3RhdGljIGlubGluZSB1MzIgY29udGV4dF9yZXNl cnZlZF9zaXplKHN0cnVjdCBpbnRlbF9ndWMgKmd1YykKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqaTkxNSA9IGd1Y190b19pOTE1KGd1Yyk7CisKKwlpZiAoSVNfR0VOOV9MUChpOTE1KSkK KwkJcmV0dXJuIEJYVF9HVUNfV09QQ01fUkM2X0NUWF9SRVNFUlZFRDsKKworCXJldHVybiAwOwor fQorCitzdGF0aWMgaW5saW5lIGludCBnZW45X2NoZWNrX2R3b3JkX2dhcChzdHJ1Y3QgaW50ZWxf Z3VjX3dvcGNtICpndWNfd29wY20pCit7CisJdTMyIGd1Y193b3BjbV9zdGFydDsKKwl1MzIgZGVs dGE7CisKKwkvKgorCSAqIEd1QyBXT1BDTSBzaXplIGlzIGF0IGxlYXN0IGEgZHdvcmQgbGFyZ2Vy IHRoYW4gdGhlIG9mZnNldCBmcm9tIFdPUENNCisJICogYmFzZSAoR3VDIFdPUENNIG9mZnNldCBm cm9tIFdPUENNIGJhc2UgKyBHRU45X0dVQ19XT1BDTV9PRkZTRVQpIGR1ZQorCSAqIHRvIGhhcmR3 YXJlIGxpbWl0YXRpb24gb24gR2VuOS4KKwkgKi8KKwlndWNfd29wY21fc3RhcnQgPSBndWNfd29w Y20tPm9mZnNldCArIEdFTjlfR1VDX1dPUENNX09GRlNFVDsKKwlpZiAoZ3VjX3dvcGNtX3N0YXJ0 ID4gZ3VjX3dvcGNtLT5zaXplKQorCQlyZXR1cm4gLUUyQklHOworCisJZGVsdGEgPSBndWNfd29w Y20tPnNpemUgLSBndWNfd29wY21fc3RhcnQ7CisJaWYgKGRlbHRhIDwgc2l6ZW9mKHUzMikpCisJ CXJldHVybiAtRTJCSUc7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGlubGluZSBpbnQgZ3Vj X3dvcGNtX3NpemVfY2hlY2soc3RydWN0IGludGVsX2d1YyAqZ3VjKQoreworCXN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICppOTE1ID0gZ3VjX3RvX2k5MTUoZ3VjKTsKKwlzdHJ1Y3QgaW50ZWxfZ3Vj X3dvcGNtICpndWNfd29wY20gPSAmZ3VjLT53b3BjbTsKKworCWlmIChJU19HRU45KGk5MTUpKQor CQlyZXR1cm4gZ2VuOV9jaGVja19kd29yZF9nYXAoZ3VjX3dvcGNtKTsKKworCXJldHVybiAwOwor fQorCiAvKioKLSAqIGludGVsX2d1Y193b3BjbV9zaXplKCkgLSBHZXQgdGhlIHNpemUgb2YgR3VD IFdPUENNLgotICogQGd1YzogaW50ZWwgZ3VjLgorICogaW50ZWxfZ3VjX3dvcGNtX2luaXRfZWFy bHkoKSAtIEVhcmx5IGluaXRpYWxpemF0aW9uIG9mIHRoZSBHdUMgV09QQ00uCisgKiBAZ3VjX3dv cGNtOiBwb2ludGVyIHRvIGludGVsX2d1Y193b3BjbS4KICAqCi0gKiBHZXQgdGhlIHBsYXRmb3Jt IHNwZWNpZmljIEd1QyBXT1BDTSBzaXplLgorICogU2V0dXAgdGhlIEd1QyBXT1BDTSB0b3AgdG8g dGhlIHRvcCBvZiB0aGUgb3ZlcmFsbCBXT1BDTS4gVGhpcyB3aWxsIGd1YXJhbnRlZQorICogdGhh dCB0aGUgYWxsb2NhdGlvbiBvZiB0aGUgR3VDIGFjY2Vzc2libGUgb2JqZWN0cyB3b24ndCBmYWxs IGludG8gV09QQ00gd2hlbgorICogR3VDIHBhcnRpdGlvbiBpc24ndCBwcmVzZW50LgogICoKLSAq IFJldHVybjogc2l6ZSBvZiB0aGUgR3VDIFdPUENNLgogICovCi11MzIgaW50ZWxfZ3VjX3dvcGNt X3NpemUoc3RydWN0IGludGVsX2d1YyAqZ3VjKQordm9pZCBpbnRlbF9ndWNfd29wY21faW5pdF9l YXJseShzdHJ1Y3QgaW50ZWxfZ3VjX3dvcGNtICpndWNfd29wY20pCiB7Ci0Jc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmk5MTUgPSBndWNfdG9faTkxNShndWMpOwotCXUzMiBzaXplID0gR1VDX1dP UENNX1RPUDsKKwlndWNfd29wY20tPnRvcCA9IFdPUENNX0RFRkFVTFRfU0laRTsKK30KIAotCS8q IE9uIEJYVCwgdGhlIHRvcCBvZiBXT1BDTSBpcyByZXNlcnZlZCBmb3IgUkM2IGNvbnRleHQgKi8K LQlpZiAoSVNfR0VOOV9MUChpOTE1KSkKLQkJc2l6ZSAtPSBCWFRfR1VDX1dPUENNX1JDNl9SRVNF UlZFRDsKKy8qKgorICogaW50ZWxfZ3VjX3dvcGNtX2luaXQoKSAtIEluaXRpYWxpemUgdGhlIEd1 QyBXT1BDTS4KKyAqIEBndWNfd29wY206IHBvaW50ZXIgdG8gaW50ZWxfZ3VjX3dvcGNtLgorICog QGd1Y19md19zaXplOiBzaXplIG9mIEd1QyBmaXJtd2FyZS4KKyAqIEBodWNfZndfc2l6ZTogc2l6 ZSBvZiBIdUMgZmlybXdhcmUuCisgKgorICogQ2FsY3VsYXRlIHRoZSBHdUMgV09QQ00gb2Zmc2V0 IGFuZCBzaXplIGJhc2VkIG9uIEd1QyBhbmQgSHVDIGZpcm13YXJlIHNpemVzLgorICogVGhpcyBm dW5jdGlvbiB3aWxsIHNldCB0aGUgR3VDIFdPUENNIHNpemUgdG8gdGhlIHNpemUgb2YgbWF4aW11 bSBXT1BDTQorICogYXZhaWxhYmxlIGZvciBHdUMuIFRoaXMgZnVuY3Rpb24gd2lsbCBhbHNvIGVu Zm9yY2UgcGxhdGZvcm0gZGVwZW5kZW50CisgKiBoYXJkd2FyZSByZXN0cmljdGlvbnMgb24gR3VD IFdPUENNIG9mZnNldCBhbmQgc2l6ZS4gSXQgd2lsbCBmYWlsIHRoZSBHdUMKKyAqIFdPUENNIGlu aXQgaWYgYW55IG9mIHRoZXNlIGNoZWNrcyB3ZXJlIGZhaWxlZCwgc28gdGhhdCB0aGUgZm9sbG93 aW5nIEd1QworICogZmlybXdhcmUgdXBsb2FkaW5nIHdvdWxkIGJlIGFib3J0ZWQuCisgKgorICog UmV0dXJuOiAwIG9uIHN1Y2Nlc3MsIG5vbi16ZXJvIGVycm9yIGNvZGUgb24gZmFpbHVyZS4KKyAq LworaW50IGludGVsX2d1Y193b3BjbV9pbml0KHN0cnVjdCBpbnRlbF9ndWNfd29wY20gKmd1Y193 b3BjbSwgdTMyIGd1Y19md19zaXplLAorCQkJIHUzMiBodWNfZndfc2l6ZSkKK3sKKwlzdHJ1Y3Qg aW50ZWxfZ3VjICpndWMgPQorCQljb250YWluZXJfb2YoZ3VjX3dvcGNtLCBzdHJ1Y3QgaW50ZWxf Z3VjLCB3b3BjbSk7CisJdTMyIHJlc2VydmVkID0gY29udGV4dF9yZXNlcnZlZF9zaXplKGd1Yyk7 CisJdTMyIG9mZnNldCwgc2l6ZSwgdG9wOworCWludCBlcnI7CisKKwlHRU1fQlVHX09OKCFndWNf Zndfc2l6ZSk7CisKKwlvZmZzZXQgPSBodWNfZndfc2l6ZSArIFdPUENNX1JFU0VSVkVEX1NJWkU7 CisKKwkvKiBIYXJkd2FyZSByZXF1aXJlcyBHdUMgV09QQ00gb2Zmc2V0IHRvIGJlIDE2SyBhbGln bmVkLiAqLworCW9mZnNldCA9IEFMSUdOKG9mZnNldCwgR1VDX1dPUENNX09GRlNFVF9BTElHTk1F TlQpOworCWlmICgob2Zmc2V0ICsgcmVzZXJ2ZWQpID49IFdPUENNX0RFRkFVTFRfU0laRSkgewor CQlEUk1fREVCVUdfRFJJVkVSKCJHdUMgV09QQ00gb2Zmc2V0IGV4Y2VlZHMgbWF4IFdPUENNIHNp emUuXG4iKTsKKwkJcmV0dXJuIC1FMkJJRzsKKwl9CisKKwl0b3AgPSBXT1BDTV9ERUZBVUxUX1NJ WkUgLSBvZmZzZXQ7CisJc2l6ZSA9IHRvcCAtIHJlc2VydmVkOworCisJLyogR3VDIFdPUENNIHNp emUgbXVzdCBiZSBtdWx0aXBsZSBvZiA0SyBwYWdlcyAqLworCXNpemUgJj0gR1VDX1dPUENNX1NJ WkVfTUFTSzsKKworCS8qCisJICogR3VDIGZpcm13YXJlIHNpemUgbmVlZHMgdG8gYmUgbGVzcyB0 aGFuIG9yIGVxdWFsIHRvIHRoZSBzaXplIG9mIHRoZQorCSAqIGF2YWlsYWJsZSBHdUMgV09QQ00g KHRvdGFsIGF2YWlsYWJsZSBHdUMgV09QQ00gc2l6ZSAtIHJlc2VydmVkIHNpemUpLgorCSAqIE5l ZWQgZXh0cmEgOEsgc3RhY2sgZm9yIEd1QyBmaXJtd2FyZS4KKwkgKi8KKwlyZXNlcnZlZCA9IEdV Q19XT1BDTV9SRVNFUlZFRCArIEdVQ19XT1BDTV9TVEFDS19SRVNFUlZFRDsKKwlpZiAoKGd1Y19m d19zaXplICsgcmVzZXJ2ZWQpID4gc2l6ZSkgeworCQlEUk1fREVCVUdfRFJJVkVSKCJObyBlbm91 Z2ggR3VDIFdPUENNIGZvciBHdUMgZmlybXdhcmUuXG4iKTsKKwkJcmV0dXJuIC1FMkJJRzsKKwl9 CisKKwlndWMtPndvcGNtLm9mZnNldCA9IG9mZnNldDsKKwlndWMtPndvcGNtLnNpemUgPSBzaXpl OworCWd1Yy0+d29wY20udG9wID0gdG9wOworCisJZXJyID0gZ3VjX3dvcGNtX3NpemVfY2hlY2so Z3VjKTsKKwlpZiAoZXJyKSB7CisJCURSTV9ERUJVR19EUklWRVIoIkd1QyBXT1BDTSBzaXplIGNo ZWNrIGZhaWxlZC5cbiIpOworCQlyZXR1cm4gZXJyOworCX0KKworCWd1Yy0+d29wY20udmFsaWQg PSAxOworCisJRFJNX0RFQlVHX0RSSVZFUigiR3VDIFdPUENNIG9mZnNldCAlZEtCLCBzaXplICVk S0IsIHRvcCAlZEtCXG4iLAorCQkJIG9mZnNldCA+PiAxMCwgc2l6ZSA+PiAxMCwgdG9wID4+IDEw KTsKIAotCXJldHVybiBzaXplOworCXJldHVybiAwOwogfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZ3VjX3dvcGNtLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9ndWNfd29wY20uaAppbmRleCA4YzRmNjkzLi5hNjMyY2FhIDEwMDY0NAotLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfd29wY20uaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9ndWNfd29wY20uaApAQCAtMTEsMTUgKzExLDczIEBACiAKIHN0cnVjdCBpbnRlbF9n dWM7CiAKLS8qIDUxMktCIHN0YXRpYyBvZmZzZXQgZnJvbSBXT1BDTSBiYXNlLiAqLwotI2RlZmlu ZSBHVUNfV09QQ01fT0ZGU0VUX1ZBTFVFCQkoNTEyIDw8IDEwKQogLyoKLSAqIDUxMktCIHN0YXRp YyBHdUMgV09QQ00gc2l6ZSBmcm9tIEdVQ19XT1BDTV9PRkZTRVRfVkFMVUUgdG8gdGhlIGVuZCBv ZiBHdUMKLSAqIFdPUENNLiBHdUMgYWRkcmVzc2VzIGJlbG93IEdVQ19XT1BDTV9UT1AgZG9uJ3Qg bWFwIHRocm91Z2ggdGhlIEdUVC4KKyAqIFRoZSBsYXlvdXQgb2YgdGhlIFdPUENNIHdpbGwgYmUg ZGV0ZXJtaW5lZCBieSBHdUMgV09QQ00gc2l6ZSBhbmQgb2Zmc2V0CisgKiByZWdpc3RlcnMgc2V0 dGluZ3MuIEN1cnJlbnRseSwgR3VDIFdPUENNIGNvZGUgY2FsY3VsYXRlcyB0aGUgR3VDIFdPUENN IG9mZnNldAorICogYW5kIHNpemUgdmFsdWVzIGJhc2VkIG9uIGEgbGF5b3V0IGFzIHNob3duIGJl bG93OgorICoKKyAqICAgKz09PT09Kz09Pis9PT09PT09PT09PT09PT09PT09PSs8PT0gR3VDIFdP UENNIHRvcAorICogICBeICAgICBeICAgfCAgSFcgY29udGV4dHMgUlNWRCAgfAorICogICB8ICAg ICB8ICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tKzw9PSBHdUMgV09QQ00gc2l6ZQorICogICB8ICAg ICB8ICAgfCAgICAgICAgICAgICAgICAgICAgfAorICogICB8ICAgIEd1QyAgfCAgICAgICAgICAg ICAgICAgICAgfAorICogICB8ICAgV09QQ00gKy0tLS0tLS0tLS0tLS0tLS0tLS0tKzw9PSAoUGxh dGZvcm0gc3BlY2lmaWMgc2l6ZSkKKyAqICAgfCAgICAgfCAgIHwgICAgR3VDIEZXIFJTVkQgICAg IHwKKyAqIFdPUENNICAgfCAgICstLS0tLS0tLS0tLS0tLS0tLS0tICs8PT0gKDE2S0IpCisgKiAg IHwgICAgIHYgICB8ICAgUlNWRCBHdUMgV09QQ00gICB8CisgKiAgIHwgICAgICs9PT4rPT09PT09 PT09PT09PT09PT09PT0rPD09IEd1QyBXT1BDTSBvZmZzZXQKKyAqICAgfCAgICAgICAgIHwgICAg IFJTVkQgV09QQ00gICAgIHwKKyAqICAgfCAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tICsK KyAqICAgdiAgICAgICAgIHwgICAgICBIdUMgRlcgICAgICAgIHwKKyAqICAgKz09PT09PT09Pis9 PT09PT09PT09PT09PT09PT09PSs8PT0gV09QQ00gQmFzZQorICoKKyAqIEd1QyBhY2Nlc3NpYmxl IFdPUENNIHN0YXJ0cyBhdCBHdUMgV09QQ00gb2Zmc2V0IGFuZCBlbmRzIGF0IEd1QyBXT1BDTSBz aXplLgorICogVGhlIHRvcCBwYXJ0IG9mIHRoZSBHdUMgV09QQ00gaXMgcmVzZXJ2ZWQgZm9yIGhh cmR3YXJlIGNvbnRleHRzIChlLmcuIFJDNgorICogY29udGV4dCkuIFdlIG5lZWQgdG8ga2VlcCB0 cmFja2luZyB0aGUgR3VDIFdPUENNIHRvcCBzaW5jZSBoYXJkd2FyZSByZXF1aXJlcworICogdGhl IEdHVFQgb2Zmc2V0IG9mIGEgR3VDIGFjY2Vzc2libGUgR0VNIGJ1ZmZlciB0byBiZSBsYXJnZXIg dGhhbiB0aGUgdmFsdWUgb2YKKyAqIEd1QyBXT1BDTSB0b3AuIFRoZSB2YWx1ZXMgb2YgR3VDIFdP UENNIHNpemUgYW5kIHRvcCBzaG91bGQgYmUgc2V0IHRvIHRoZQorICogbGVuZ3RoIGZyb20gR3VD IFdPUENNIG9mZnNldCBpbiBieXRlcy4KKyAqLworCisvKiBEZWZhdWx0IFdPUENNIHNpemUgMU1C LiAqLworI2RlZmluZSBXT1BDTV9ERUZBVUxUX1NJWkUJCSgxIDw8IDIwKQorLyogVGhlIGluaXRp YWwgMTZLQiBXT1BDTSAoUlNWRCBXT1BDTSkgaXMgcmVzZXJ2ZWQuICovCisjZGVmaW5lIFdPUENN X1JFU0VSVkVEX1NJWkUJCSgxNiA8PCAxMCkKKworLyogR1VDIFdPUENNIG9mZnNldCBuZWVkcyB0 byBiZSAxNktCIGFsaWduZWQuICovCisjZGVmaW5lIEdVQ19XT1BDTV9PRkZTRVRfQUxJR05NRU5U CSgxNiA8PCAxMCkKKy8qIDE2S0IgcmVzZXJ2ZWQgYXQgdGhlIGJlZ2lubmluZyBvZiBHdUMgV09Q Q00uICovCisjZGVmaW5lIEdVQ19XT1BDTV9SRVNFUlZFRAkJKDE2IDw8IDEwKQorLyogOEtCIGZy b20gR1VDX1dPUENNX1JFU0VSVkVEIGlzIHJlc2VydmVkIGZvciBHdUMgc3RhY2suICovCisjZGVm aW5lIEdVQ19XT1BDTV9TVEFDS19SRVNFUlZFRAkoOCA8PCAxMCkKKy8qIDI0S0IgYXQgdGhlIGVu ZCBvZiBHdUMgV09QQ00gaXMgcmVzZXJ2ZWQgZm9yIFJDNiBDVFggb24gQlhULiAqLworI2RlZmlu ZSBCWFRfR1VDX1dPUENNX1JDNl9DVFhfUkVTRVJWRUQJKDI0IDw8IDEwKQorCisvKgorICogR3VD IFdPUENNIHN0YXJ0cyBhdCAxNDRLQiAoR1VDX1dPUENNX1JFU0VSVkVEICsgMTI4S0IgcmVzZXJ2 ZWQgZm9yIEd1QworICogZmlybXdhcmUgbG9hZGluZykgZnJvbSBHdUMgV09QQ00gb2Zmc2V0IG9u IEJYVC4KKyAqLworI2RlZmluZSBHRU45X0dVQ19XT1BDTV9PRkZTRVQJCSgxNDQgPDwgMTApCisK Ky8qKgorICogaW50ZWxfZ3VjX3dvcGNtIC0gR3VDIFdPUENNIHJlbGF0ZWQgc2V0dGluZ3MuCisg KiBAb2Zmc2V0OiBHdUMgV09QQ00gb2Zmc2V0IGZyb20gdGhlIFdPUENNIGJhc2UuCisgKiBAc2l6 ZTogc2l6ZSBvZiBHdUMgV09QQ00gZm9yIEd1QyBmaXJtd2FyZS4KKyAqIEB0b3A6IHN0YXJ0IG9m IHRoZSBub24tR3VDIFdPUENNIG1lbW9yeS4KKyAqIEB2YWxpZDogd2hldGhlciB0aGlzIHN0cnVj dHVyZSBjb250YWlucyB2YWxpZCAoMS12YWxpZCwgMC1pbnZhbGlkKSBpbmZvLgorICoKKyAqIFdl IHNpbXBseSB1c2UgdGhpcyBzdHJ1Y3R1cmUgdG8gdHJhY2sgdGhlIEd1QyB1c2Ugb2YgV09QQ00u IFRoZSBsYXlvdXQgb2YKKyAqIFdPUENNIHdvdWxkIGJlIGRlZmluZWQgYnkgd3JpdGluZyB0byBH dUMgV09QQ00gb2Zmc2V0IGFuZCBzaXplIHJlZ2lzdGVycy4KICAqLwotI2RlZmluZSBHVUNfV09Q Q01fVE9QCQkJKDUxMiA8PCAxMCkKLSNkZWZpbmUgQlhUX0dVQ19XT1BDTV9SQzZfUkVTRVJWRUQJ KDY0IDw8IDEwKQorc3RydWN0IGludGVsX2d1Y193b3BjbSB7CisJdTMyIG9mZnNldDsKKwl1MzIg c2l6ZTsKKwl1MzIgdG9wOworCXUzMiB2YWxpZDsKK307CiAKLXUzMiBpbnRlbF9ndWNfd29wY21f c2l6ZShzdHJ1Y3QgaW50ZWxfZ3VjICpndWMpOwordm9pZCBpbnRlbF9ndWNfd29wY21faW5pdF9l YXJseShzdHJ1Y3QgaW50ZWxfZ3VjX3dvcGNtICpndWNfd29wY20pOworaW50IGludGVsX2d1Y193 b3BjbV9pbml0KHN0cnVjdCBpbnRlbF9ndWNfd29wY20gKmd1Y193b3BjbSwgdTMyIGd1Y19zaXpl LAorCQkJIHUzMiBodWNfc2l6ZSk7CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfaHVjLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9odWMuYwpp bmRleCBhZWQ5YzFjLi5kYzZhNmM2IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9odWMuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9odWMuYwpAQCAtMjA2 LDcgKzIwNiw3IEBAIGludCBpbnRlbF9odWNfYXV0aChzdHJ1Y3QgaW50ZWxfaHVjICpodWMpCiAJ CXJldHVybiAtRU5PRVhFQzsKIAogCXZtYSA9IGk5MTVfZ2VtX29iamVjdF9nZ3R0X3BpbihodWMt PmZ3Lm9iaiwgTlVMTCwgMCwgMCwKLQkJCQlQSU5fT0ZGU0VUX0JJQVMgfCBHVUNfV09QQ01fVE9Q KTsKKwkJCQlQSU5fT0ZGU0VUX0JJQVMgfCBndWMtPndvcGNtLnRvcCk7CiAJaWYgKElTX0VSUih2 bWEpKSB7CiAJCXJldCA9IFBUUl9FUlIodm1hKTsKIAkJRFJNX0VSUk9SKCJIdUM6IEZhaWxlZCB0 byBwaW4gaHVjIGZ3IG9iamVjdCAlZFxuIiwgcmV0KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX3VjLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF91Yy5jCmlu ZGV4IDFiMjgzMWIuLmM4NDJmMzYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX3VjLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdWMuYwpAQCAtMjgzLDYg KzI4Myw5IEBAIHZvaWQgaW50ZWxfdWNfZmluaV9taXNjKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdikKIGludCBpbnRlbF91Y19pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdikKIHsKIAlzdHJ1Y3QgaW50ZWxfZ3VjICpndWMgPSAmZGV2X3ByaXYtPmd1YzsKKwlz dHJ1Y3QgaW50ZWxfaHVjICpodWMgPSAmZGV2X3ByaXYtPmh1YzsKKwl1MzIgZ3VjX2Z3X3NpemUg PSBpbnRlbF91Y19md19nZXRfc2l6ZSgmZ3VjLT5mdyk7CisJdTMyIGh1Y19md19zaXplID0gaW50 ZWxfdWNfZndfZ2V0X3NpemUoJmh1Yy0+ZncpOwogCWludCByZXQ7CiAKIAlpZiAoIVVTRVNfR1VD KGRldl9wcml2KSkKQEAgLTI5MSw2ICsyOTQsMTAgQEAgaW50IGludGVsX3VjX2luaXQoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCWlmICghSEFTX0dVQyhkZXZfcHJpdikpCiAJ CXJldHVybiAtRU5PREVWOwogCisJcmV0ID0gaW50ZWxfZ3VjX3dvcGNtX2luaXQoJmd1Yy0+d29w Y20sIGd1Y19md19zaXplLCBodWNfZndfc2l6ZSk7CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsK KwogCXJldCA9IGludGVsX2d1Y19pbml0KGd1Yyk7CiAJaWYgKHJldCkKIAkJcmV0dXJuIHJldDsK QEAgLTM0MCw5ICszNDcsOSBAQCBpbnQgaW50ZWxfdWNfaW5pdF9odyhzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYpCiAJZ2VuOV9yZXNldF9ndWNfaW50ZXJydXB0cyhkZXZfcHJpdik7 CiAKIAkvKiBpbml0IFdPUENNICovCi0JSTkxNV9XUklURShHVUNfV09QQ01fU0laRSwgaW50ZWxf Z3VjX3dvcGNtX3NpemUoZ3VjKSk7CisJSTkxNV9XUklURShHVUNfV09QQ01fU0laRSwgZ3VjLT53 b3BjbS5zaXplKTsKIAlJOTE1X1dSSVRFKERNQV9HVUNfV09QQ01fT0ZGU0VULAotCQkgICBHVUNf V09QQ01fT0ZGU0VUX1ZBTFVFIHwgSFVDX0xPQURJTkdfQUdFTlRfR1VDKTsKKwkJICAgZ3VjLT53 b3BjbS5vZmZzZXQgfCBIVUNfTE9BRElOR19BR0VOVF9HVUMpOwogCiAJLyogV2FFbmFibGV1S2Vy bmVsSGVhZGVyVmFsaWRGaXg6c2tsICovCiAJLyogV2FFbmFibGVHdUNCb290SGFzaENoZWNrTm90 U2V0OnNrbCxieHQsa2JsICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF91Y19mdy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdWNfZncuYwppbmRleCAyNDk0 NWNmLi43OTEyNjNhIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF91Y19m dy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3VjX2Z3LmMKQEAgLTk1LDkgKzk1 LDEzIEBAIHZvaWQgaW50ZWxfdWNfZndfZmV0Y2goc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2LAogCXVjX2Z3LT51Y29kZV9vZmZzZXQgPSB1Y19mdy0+aGVhZGVyX29mZnNldCArIHVj X2Z3LT5oZWFkZXJfc2l6ZTsKIAl1Y19mdy0+dWNvZGVfc2l6ZSA9IChjc3MtPnNpemVfZHcgLSBj c3MtPmhlYWRlcl9zaXplX2R3KSAqIHNpemVvZih1MzIpOwogCi0JLyogSGVhZGVyIGFuZCB1Q29k ZSB3aWxsIGJlIGxvYWRlZCB0byBXT1BDTSAqLworCS8qCisJICogSGVhZGVyIGFuZCB1Q29kZSB3 aWxsIGJlIGxvYWRlZCB0byBXT1BDTQorCSAqIE9ubHkgY2hlY2sgdGhlIHNpemUgYWdhaW5zdCB0 aGUgb3ZlcmFsbCBhdmFpbGFibGUgV09QQ00gaGVyZS4gV2lsbAorCSAqIGNvbnRpbnVlIHRvIGNo ZWNrIHRoZSBzaXplIGR1cmluZyBXT1BDTSBwYXJ0aXRpb24gY2FsY3VsYXRpb24uCisJICovCiAJ c2l6ZSA9IHVjX2Z3LT5oZWFkZXJfc2l6ZSArIHVjX2Z3LT51Y29kZV9zaXplOwotCWlmIChzaXpl ID4gaW50ZWxfZ3VjX3dvcGNtX3NpemUoJmRldl9wcml2LT5ndWMpKSB7CisJaWYgKHNpemUgPiBX T1BDTV9ERUZBVUxUX1NJWkUpIHsKIAkJRFJNX1dBUk4oIiVzOiBGaXJtd2FyZSBpcyB0b28gbGFy Z2UgdG8gZml0IGluIFdPUENNXG4iLAogCQkJIGludGVsX3VjX2Z3X3R5cGVfcmVwcih1Y19mdy0+ dHlwZSkpOwogCQllcnIgPSAtRTJCSUc7CkBAIC0yMDcsNiArMjExLDcgQEAgaW50IGludGVsX3Vj X2Z3X3VwbG9hZChzdHJ1Y3QgaW50ZWxfdWNfZncgKnVjX2Z3LAogCQkgICAgICAgaW50ICgqeGZl cikoc3RydWN0IGludGVsX3VjX2Z3ICp1Y19mdywKIAkJCQkgICBzdHJ1Y3QgaTkxNV92bWEgKnZt YSkpCiB7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSB0b19pOTE1KHVjX2Z3LT5v YmotPmJhc2UuZGV2KTsKIAlzdHJ1Y3QgaTkxNV92bWEgKnZtYTsKIAlpbnQgZXJyOwogCkBAIC0y MzAsNyArMjM1LDcgQEAgaW50IGludGVsX3VjX2Z3X3VwbG9hZChzdHJ1Y3QgaW50ZWxfdWNfZncg KnVjX2Z3LAogCX0KIAogCXZtYSA9IGk5MTVfZ2VtX29iamVjdF9nZ3R0X3Bpbih1Y19mdy0+b2Jq LCBOVUxMLCAwLCAwLAotCQkJCSAgICAgICBQSU5fT0ZGU0VUX0JJQVMgfCBHVUNfV09QQ01fVE9Q KTsKKwkJCQkgICAgICAgUElOX09GRlNFVF9CSUFTIHwgaTkxNS0+Z3VjLndvcGNtLnRvcCk7CiAJ aWYgKElTX0VSUih2bWEpKSB7CiAJCWVyciA9IFBUUl9FUlIodm1hKTsKIAkJRFJNX0RFQlVHX0RS SVZFUigiJXMgZncgZ2d0dC1waW4gZXJyPSVkXG4iLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfdWNfZncuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3VjX2Z3 LmgKaW5kZXggZDVmZDQ2MC4uZWQzMDQzZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfdWNfZncuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF91Y19mdy5o CkBAIC0xMTUsNiArMTE1LDIyIEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpbnRlbF91Y19md19pc19z ZWxlY3RlZChzdHJ1Y3QgaW50ZWxfdWNfZncgKnVjX2Z3KQogCXJldHVybiB1Y19mdy0+cGF0aCAh PSBOVUxMOwogfQogCisvKioKKyAqIGludGVsX3VjX2Z3X2dldF9zaXplKCkgLSBHZXQgdGhlIHNp emUgb2YgdGhlIGZpcm13YXJlLgorICogQHVjX2Z3OiBpbnRlbF91Y19mdyBzdHJ1Y3R1cmUuCisg KgorICogR2V0IHRoZSBzaXplIG9mIHRoZSBmaXJtd2FyZSB0aGF0IHdpbGwgYmUgcGxhY2VkIGlu IFdPUENNLgorICoKKyAqIFJldHVybjogU2l6ZSBvZiB0aGUgZmlybXdhcmUsIG9yIHplcm8gb24g ZmlybXdhcmUgZmV0Y2ggZmFpbHVyZS4KKyAqLworc3RhdGljIGlubGluZSB1MzIgaW50ZWxfdWNf ZndfZ2V0X3NpemUoc3RydWN0IGludGVsX3VjX2Z3ICp1Y19mdykKK3sKKwlpZiAodWNfZnctPmZl dGNoX3N0YXR1cyAhPSBJTlRFTF9VQ19GSVJNV0FSRV9TVUNDRVNTKQorCQlyZXR1cm4gMDsKKwor CXJldHVybiB1Y19mdy0+aGVhZGVyX3NpemUgKyB1Y19mdy0+dWNvZGVfc2l6ZTsKK30KKwogdm9p ZCBpbnRlbF91Y19md19mZXRjaChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJ CSAgICAgICBzdHJ1Y3QgaW50ZWxfdWNfZncgKnVjX2Z3KTsKIGludCBpbnRlbF91Y19md191cGxv YWQoc3RydWN0IGludGVsX3VjX2Z3ICp1Y19mdywKLS0gCjIuNy40CgpfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0Cklu dGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5v cmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK