From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jackie Li Subject: [PATCH v5 3/6] drm/i915/guc: Implement dynamic GuC WOPCM offset and size Date: Mon, 8 Jan 2018 10:29:13 -0800 Message-ID: <1515436156-17954-3-git-send-email-yaodong.li@intel.com> References: <1515436156-17954-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 mga06.intel.com (mga06.intel.com [134.134.136.31]) by gabe.freedesktop.org (Postfix) with ESMTPS id AB9E66E026 for ; Mon, 8 Jan 2018 18:30:41 +0000 (UTC) In-Reply-To: <1515436156-17954-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 SGFyZHdhcmUgbWF5IGhhdmUgc3BlY2lmaWMgcmVzdHJpY3Rpb25zIG9uIEd1QyBXT1BDTSBzaXpl CnZlcnN1cyBIdUMgZmlybXdhcmUgc2l6ZS4gV2l0aCBzdGF0aWMgR3VDIFdPUENNIHNpemUsCnRo ZXJlJ3Mgbm8gd2F5IHRvIGFkanVzdCB0aGUgR3VDIFdPUENNIHBhcnRpdGlvbiBzaXplIGJhc2Vk IG9uCnRoZSBhY3R1YWwgSHVDIGZpcm13YXJlIHNpemUsIHNvIHRoYXQgR3VDL0h1QyBsb2FkaW5n IGZhaWx1cmUKd291bGQgb2NjdXIgZXZlbiBpZiB0aGVyZSB3YXMgZW5vdWdoIFdPUENNIHNwYWNl IGZvciBib3RoCkd1QyBhbmQgSHVDIGZpcm13YXJlLgoKVGhpcyBwYXRjaCBlbmFibGVzIHRoZSBk eW5hbWljIGNhbGN1bGF0aW9uIG9mIHRoZSBHdUMgV09QQ00KYXBlcnR1cmUgc2l6ZSB1c2VkIGJ5 IEd1QyBhbmQgSHVDIGZpcm13YXJlLiBHdUMgV09QQ00gb2Zmc2V0IGlzCnNldCB0byBIdUMgc2l6 ZSArIHJlc2VydmVkIFdPUENNIHNpemUuIEd1QyBXT1BDTSBzaXplIGlzIHNldCB0bwp0b3RhbCBX T1BDTSBzaXplIC0gR3VDIFdPUENNIG9mZnNldCAtIFJDNkNUWCBzaXplLiBJbiB0aGlzIGNhc2Us Ckd1QyBXT1BDTSBvZmZzZXQgd2lsbCBiZSB1cGRhdGVkIGJhc2VkIG9uIHRoZSBzaXplIG9mIEh1 QyBmaXJtd2FyZQp3aGlsZSBHdUMgV09QQ00gc2l6ZSB3aWxsIGJlIHNldCB0byB1c2UgYWxsIHRo ZSByZW1haW5pbmcgV09QQ00gc3BhY2UuCgp2MjoKIC0gUmVtb3ZlZCBpbnRlbF93b3BjbV9pbml0 IChWaWxsZS9TYWdhci9Kb29uYXMpCiAtIFJlbmFtZWQgYW5kIE1vdmVkIHRoZSBpbnRlbF93b3Bj bV9wYXJ0aXRpb24gaW50byBpbnRlbF9ndWMgKFNhZ2FyKQogLSBSZW1vdmVkIHVubmVjZXNzYXJ5 IGZ1bmN0aW9uIGNhbGxzIChKb29uYXMpCiAtIEluaXQgR3VDIFdPUENNIHBhcnRpdGlvbiBhcyBz b29uIGFzIGZpcm13YXJlIGZldGNoaW5nIGlzIGNvbXBsZXRlZAoKdjM6CiAtIEZpeGVkIGluZGVu dGF0aW9uIGlzc3VlcyAoQ2hyaXMpCiAtIFJlbW92ZWQgbGF5ZXJpbmcgdmlvbGF0aW9uIGNvZGUg KENocmlzL01pY2hhbCkKIC0gQ3JlYXRlZCBzZXBhcmF0IGZpbGVzIGZvciBHdUMgd29wY20gY29k ZSAgKE1pY2hhbCkKIC0gVXNlZCBpbmxpbmUgZnVuY3Rpb24gdG8gYXZvaWQgY29kZSBkdXBsaWNh dGlvbiAoTWljaGFsKQoKdjQ6CiAtIFByZXNldCB0aGUgR3VDIFdPUENNIHRvcCBkdXJpbmcgZWFy bHkgR3VDIGluaXQgKENocmlzKQogLSBGYWlsIGludGVsX3VjX2luaXRfaHcoKSBhcyBzb29uIGFz IEd1QyBXT1BDTSBwYXJ0aXRpb25pbmcgZmFpbGVkCgp2NToKIC0gTW92ZWQgR3VDIERNQSBXT1BD TSByZWdpc3RlciB1cGRhdGluZyBjb2RlIGludG8gaW50ZWxfZ3VjX3dvcGNtLmMKIC0gVG9vayBj YXJlIG9mIHRoZSBsb2NraW5nIHN0YXR1cyBiZWZvcmUgd3JpdGluZyB0byBHdUMgRE1BCiAgIFdy aXRlLU9uY2UgcmVnaXN0ZXJzLiAoSm9vbmFzKQoKQ2M6IE1pY2hhbCBXYWpkZWN6a28gPG1pY2hh bC53YWpkZWN6a29AaW50ZWwuY29tPgpDYzogU2FnYXIgQXJ1biBLYW1ibGUgPHNhZ2FyLmEua2Ft YmxlQGludGVsLmNvbT4KQ2M6IFN1amFyaXRoYSBTdW5kYXJlc2FuIDxzdWphcml0aGEuc3VuZGFy ZXNhbkBpbnRlbC5jb20+CkNjOiBEYW5pZWxlIENlcmFvbG8gU3B1cmlvIDxkYW5pZWxlLmNlcmFv bG9zcHVyaW9AaW50ZWwuY29tPgpDYzogSm9obiBTcG90c3dvb2QgPGpvaG4uYS5zcG90c3dvb2RA aW50ZWwuY29tPgpDYzogT3NjYXIgTWF0ZW8gPG9zY2FyLm1hdGVvQGludGVsLmNvbT4KQ2M6IENo cmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPgpDYzogSm9vbmFzIExhaHRpbmVu IDxqb29uYXMubGFodGluZW5AbGludXguaW50ZWwuY29tPgpTaWduZWQtb2ZmLWJ5OiBKYWNraWUg TGkgPHlhb2RvbmcubGlAaW50ZWwuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf Z2VtX2NvbnRleHQuYyB8ICAgOSArLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Yy5j ICAgICAgICB8ICAgNSArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjLmggICAgICAg IHwgIDEyICsrLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Y193b3BjbS5jICB8IDEw NSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZ3VjX3dvcGNtLmggIHwgIDQwICsrKysrKysrKystLQogZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfaHVjLmMgICAgICAgIHwgICAyICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF91Yy5jICAgICAgICAgfCAgMTEgKysrLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdWNf ZncuYyAgICAgIHwgIDExICsrKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3VjX2Z3Lmgg ICAgICB8ICAxNiArKysrKwogOSBmaWxlcyBjaGFuZ2VkLCAxNzkgaW5zZXJ0aW9ucygrKSwgMzIg ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1f Y29udGV4dC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5jCmluZGV4 IDY0OGU3NTMuLmI0ODU3OTQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf Z2VtX2NvbnRleHQuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0 LmMKQEAgLTMxMiwxMiArMzEyLDEzIEBAIF9fY3JlYXRlX2h3X2NvbnRleHQoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2LAogCWN0eC0+ZGVzY190ZW1wbGF0ZSA9CiAJCWRlZmF1bHRf ZGVzY190ZW1wbGF0ZShkZXZfcHJpdiwgZGV2X3ByaXYtPm1tLmFsaWFzaW5nX3BwZ3R0KTsKIAot CS8qIEd1QyByZXF1aXJlcyB0aGUgcmluZyB0byBiZSBwbGFjZWQgYWJvdmUgR1VDX1dPUENNX1RP UC4gSWYgR3VDIGlzIG5vdAotCSAqIHByZXNlbnQgb3Igbm90IGluIHVzZSB3ZSBzdGlsbCBuZWVk IGEgc21hbGwgYmlhcyBhcyByaW5nIHdyYXBhcm91bmQKLQkgKiBhdCBvZmZzZXQgMCBzb21ldGlt ZXMgaGFuZ3MuIE5vIGlkZWEgd2h5LgorCS8qCisJICogR3VDIHJlcXVpcmVzIHRoZSByaW5nIHRv IGJlIHBsYWNlZCBhYm92ZSBHdUMgV09QQ00gdG9wLiBJZiBHdUMgaXMgbm90CistCSAqIHByZXNl bnQgb3Igbm90IGluIHVzZSB3ZSBzdGlsbCBuZWVkIGEgc21hbGwgYmlhcyBhcyByaW5nIHdyYXBh cm91bmQKKy0JICogYXQgb2Zmc2V0IDAgc29tZXRpbWVzIGhhbmdzLiBObyBpZGVhIHdoeS4KIAkg Ki8KIAlpZiAoVVNFU19HVUMoZGV2X3ByaXYpKQotCQljdHgtPmdndHRfb2Zmc2V0X2JpYXMgPSBH VUNfV09QQ01fVE9QOworCQljdHgtPmdndHRfb2Zmc2V0X2JpYXMgPSBkZXZfcHJpdi0+Z3VjLndv cGNtLnRvcDsKIAllbHNlCiAJCWN0eC0+Z2d0dF9vZmZzZXRfYmlhcyA9IEk5MTVfR1RUX1BBR0Vf U0laRTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjLmMgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWMuYwppbmRleCA1MDdkZjllLi4yM2IyM2RkIDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWMuYworKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9ndWMuYwpAQCAtNjQsNiArNjQsNyBAQCB2b2lkIGludGVsX2d1 Y19pbml0X2Vhcmx5KHN0cnVjdCBpbnRlbF9ndWMgKmd1YykKIHsKIAlpbnRlbF9ndWNfZndfaW5p dF9lYXJseShndWMpOwogCWludGVsX2d1Y19jdF9pbml0X2Vhcmx5KCZndWMtPmN0KTsKKwlpbnRl bF9ndWNfd29wY21faW5pdF9lYXJseSgmZ3VjLT53b3BjbSk7CiAKIAltdXRleF9pbml0KCZndWMt PnNlbmRfbXV0ZXgpOwogCWd1Yy0+c2VuZCA9IGludGVsX2d1Y19zZW5kX25vcDsKQEAgLTQ2NSw3 ICs0NjYsNyBAQCBpbnQgaW50ZWxfZ3VjX3Jlc3VtZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYpCiAgKiBUaGlzIGlzIGEgd3JhcHBlciB0byBjcmVhdGUgYW4gb2JqZWN0IGZvciB1 c2Ugd2l0aCB0aGUgR3VDLiBJbiBvcmRlciB0bwogICogdXNlIGl0IGluc2lkZSB0aGUgR3VDLCBh biBvYmplY3QgbmVlZHMgdG8gYmUgcGlubmVkIGxpZmV0aW1lLCBzbyB3ZSBhbGxvY2F0ZQogICog Ym90aCBzb21lIGJhY2tpbmcgc3RvcmFnZSBhbmQgYSByYW5nZSBpbnNpZGUgdGhlIEdsb2JhbCBH VFQuIFdlIG11c3QgcGluCi0gKiBpdCBpbiB0aGUgR0dUVCBzb21ld2hlcmUgb3RoZXIgdGhhbiB0 aGFuIFswLCBHVUNfV09QQ01fVE9QKSBiZWNhdXNlIHRoYXQKKyAqIGl0IGluIHRoZSBHR1RUIHNv bWV3aGVyZSBvdGhlciB0aGFuIHRoYW4gWzAsIEd1QyBXT1BDTSB0b3ApIGJlY2F1c2UgdGhhdAog ICogcmFuZ2UgaXMgcmVzZXJ2ZWQgaW5zaWRlIEd1Qy4KICAqCiAgKiBSZXR1cm46CUEgaTkxNV92 bWEgaWYgc3VjY2Vzc2Z1bCwgb3RoZXJ3aXNlIGFuIEVSUl9QVFIuCkBAIC00ODYsNyArNDg3LDcg QEAgc3RydWN0IGk5MTVfdm1hICppbnRlbF9ndWNfYWxsb2NhdGVfdm1hKHN0cnVjdCBpbnRlbF9n dWMgKmd1YywgdTMyIHNpemUpCiAJCWdvdG8gZXJyOwogCiAJcmV0ID0gaTkxNV92bWFfcGluKHZt YSwgMCwgUEFHRV9TSVpFLAotCQkJICAgUElOX0dMT0JBTCB8IFBJTl9PRkZTRVRfQklBUyB8IEdV Q19XT1BDTV9UT1ApOworCQkJICAgUElOX0dMT0JBTCB8IFBJTl9PRkZTRVRfQklBUyB8IGd1Yy0+ d29wY20udG9wKTsKIAlpZiAocmV0KSB7CiAJCXZtYSA9IEVSUl9QVFIocmV0KTsKIAkJZ290byBl cnI7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWMuaCBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Yy5oCmluZGV4IGI3ZTJhMTguLmVhMzU5MTEgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Yy5oCisrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2d1Yy5oCkBAIC00OSw2ICs0OSw3IEBAIHN0cnVjdCBpbnRlbF9ndWMg ewogCXN0cnVjdCBpbnRlbF91Y19mdyBmdzsKIAlzdHJ1Y3QgaW50ZWxfZ3VjX2xvZyBsb2c7CiAJ c3RydWN0IGludGVsX2d1Y19jdCBjdDsKKwlzdHJ1Y3QgaW50ZWxfZ3VjX3dvcGNtIHdvcGNtOwog CiAJLyogTG9nIHNuYXBzaG90IGlmIEd1QyBlcnJvcnMgZHVyaW5nIGxvYWQgKi8KIAlzdHJ1Y3Qg ZHJtX2k5MTVfZ2VtX29iamVjdCAqbG9hZF9lcnJfbG9nOwpAQCAtMTA1LDEwICsxMDYsMTAgQEAg c3RhdGljIGlubGluZSB2b2lkIGludGVsX2d1Y19ub3RpZnkoc3RydWN0IGludGVsX2d1YyAqZ3Vj KQogICogQGd1YzogaW50ZWwgZ3VjLgogICogQHZtYTogaTkxNSBncmFwaGljcyB2aXJ0dWFsIG1l bW9yeSBhcmVhLgogICoKLSAqIEd1QyBkb2VzIG5vdCBhbGxvdyBhbnkgZ2Z4IEdHVFQgYWRkcmVz cyB0aGF0IGZhbGxzIGludG8gcmFuZ2UgWzAsIFdPUENNX1RPUCksCi0gKiB3aGljaCBpcyByZXNl cnZlZCBmb3IgQm9vdCBST00sIFNSQU0gYW5kIFdPUENNLiBDdXJyZW50bHkgdGhpcyB0b3AgYWRk cmVzcyBpcwotICogNTEySy4gSW4gb3JkZXIgdG8gZXhjbHVkZSAwLTUxMksgYWRkcmVzcyBzcGFj ZSBmcm9tIEdHVFQsIGFsbCBnZnggb2JqZWN0cwotICogdXNlZCBieSBHdUMgaXMgcGlubmVkIHdp dGggUElOX09GRlNFVF9CSUFTIGFsb25nIHdpdGggc2l6ZSBvZiBXT1BDTS4KKyAqIEd1QyBkb2Vz IG5vdCBhbGxvdyBhbnkgZ2Z4IEdHVFQgYWRkcmVzcyB0aGF0IGZhbGxzIGludG8gcmFuZ2UKKyAq IFswLCBHdUMgV09QQ00gdG9wKSwgd2hpY2ggaXMgcmVzZXJ2ZWQgZm9yIEJvb3QgUk9NLCBTUkFN IGFuZCBXT1BDTS4KKyAqIEFsbCBnZnggb2JqZWN0cyB1c2VkIGJ5IEd1QyBpcyBwaW5uZWQgd2l0 aCBQSU5fT0ZGU0VUX0JJQVMgYWxvbmcgd2l0aAorICogdG9wIG9mIFdPUENNLgogICoKICAqIFJl dHVybjogR0dUVCBvZmZzZXQgdGhhdCBtZWV0cyB0aGUgR3VDIGdmeCBhZGRyZXNzIHJlcXVpcmVt ZW50LgogICovCkBAIC0xMTcsNyArMTE4LDggQEAgc3RhdGljIGlubGluZSB1MzIgaW50ZWxfZ3Vj X2dndHRfb2Zmc2V0KHN0cnVjdCBpbnRlbF9ndWMgKmd1YywKIHsKIAl1MzIgb2Zmc2V0ID0gaTkx NV9nZ3R0X29mZnNldCh2bWEpOwogCi0JR0VNX0JVR19PTihvZmZzZXQgPCBHVUNfV09QQ01fVE9Q KTsKKwlHRU1fQlVHX09OKCFndWMtPndvcGNtLnZhbGlkKTsKKwlHRU1fQlVHX09OKG9mZnNldCA8 IGd1Yy0+d29wY20udG9wKTsKIAlHRU1fQlVHX09OKHJhbmdlX292ZXJmbG93c190KHU2NCwgb2Zm c2V0LCB2bWEtPnNpemUsIEdVQ19HR1RUX1RPUCkpOwogCiAJcmV0dXJuIG9mZnNldDsKZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Y193b3BjbS5jIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZ3VjX3dvcGNtLmMKaW5kZXggODc2NDNhMC4uZmQyYWMxMiAxMDA2 NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX3dvcGNtLmMKKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX3dvcGNtLmMKQEAgLTI1LDIzICsyNSwxMDggQEAK ICNpbmNsdWRlICJpbnRlbF9ndWNfd29wY20uaCIKICNpbmNsdWRlICJpOTE1X2Rydi5oIgogCitz dGF0aWMgaW5saW5lIHUzMiBndWNfcmVzZXJ2ZWRfd29wY21fc2l6ZShzdHJ1Y3QgaW50ZWxfZ3Vj ICpndWMpCit7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSBndWNfdG9faTkxNShn dWMpOworCisJLyogT24gQlhULCB0aGUgdG9wIG9mIFdPUENNIGlzIHJlc2VydmVkIGZvciBSQzYg Y29udGV4dCAqLworCWlmIChJU19HRU45X0xQKGk5MTUpKQorCQlyZXR1cm4gQlhUX1dPUENNX1JD Nl9SRVNFUlZFRDsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW5saW5lIGludCBnZW45X3dv Y3BtX3NpemVfY2hlY2soc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCit7CisJc3RydWN0 IGludGVsX2d1Y193b3BjbSAqd29wY20gPSAmaTkxNS0+Z3VjLndvcGNtOworCXUzMiB3b3BjbV9i YXNlOworCXUzMiBkZWx0YTsKKworCS8qCisJICogQ2hlY2sgaGFyZHdhcmUgcmVzdHJpY3Rpb24g b24gR2VuOQorCSAqIEd1QyBXT1BDTSBzaXplIGlzIGF0IGxlYXN0IDQgYnl0ZXMgbGFyZ2VyIHRo YW4gR3VDIFdPUENNIGJhc2UgZHVlCisJICogdG8gaGFyZHdhcmUgbGltaXRhdGlvbiBvbiBHZW45 LgorCSAqLworCXdvcGNtX2Jhc2UgPSB3b3BjbS0+b2Zmc2V0ICsgR0VOOV9HVUNfV09QQ01fT0ZG U0VUOworCWlmICh1bmxpa2VseSh3b3BjbV9iYXNlID4gd29wY20tPnNpemUpKQorCQlyZXR1cm4g LUUyQklHOworCisJZGVsdGEgPSB3b3BjbS0+c2l6ZSAtIHdvcGNtX2Jhc2U7CisJaWYgKHVubGlr ZWx5KGRlbHRhIDwgR0VOOV9HVUNfV09QQ01fREVMVEEpKQorCQlyZXR1cm4gLUUyQklHOworCisJ cmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbmxpbmUgaW50IGd1Y193b3BjbV9zaXplX2NoZWNrKHN0 cnVjdCBpbnRlbF9ndWMgKmd1YykKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9 IGd1Y190b19pOTE1KGd1Yyk7CisKKwlpZiAoSVNfR0VOOShpOTE1KSkKKwkJcmV0dXJuIGdlbjlf d29jcG1fc2l6ZV9jaGVjayhpOTE1KTsKKworCXJldHVybiAwOworfQorCiAvKgotICogaW50ZWxf Z3VjX3dvcGNtX3NpemUoKSAtIEdldCB0aGUgc2l6ZSBvZiBHdUMgV09QQ00uCisgKiBpbnRlbF9n dWNfd29wY21faW5pdCgpIC0gSW5pdGlhbGl6ZSB0aGUgR3VDIFdPUENNIHBhcnRpdGlvbi4KICAq IEBndWM6IGludGVsIGd1Yy4KKyAqIEBndWNfZndfc2l6ZTogc2l6ZSBvZiBHdUMgZmlybXdhcmUu CisgKiBAaHVjX2Z3X3NpemU6IHNpemUgb2YgSHVDIGZpcm13YXJlLgogICoKLSAqIEdldCB0aGUg cGxhdGZvcm0gc3BlY2lmaWMgR3VDIFdPUENNIHNpemUuCisgKiBUaGlzIGZ1bmN0aW9uIHRyaWVz IHRvIGluaXRpYWxpemUgdGhlIFdPUENNIHBhcnRpdGlvbiBiYXNlZCBvbiBIdUMgZmlybXdhcmUK KyAqIHNpemUgYW5kIHRoZSByZXNlcnZlZCBXT1BDTSBtZW1vcnkgc2l6ZS4KICAqCi0gKiBSZXR1 cm46IHNpemUgb2YgdGhlIEd1QyBXT1BDTS4KKyAqIFJldHVybjogMCBvbiBzdWNjZXNzLCBub24t emVybyBlcnJvciBjb2RlIG9uIGZhaWx1cmUuCiAgKi8KLXUzMiBpbnRlbF9ndWNfd29wY21fc2l6 ZShzdHJ1Y3QgaW50ZWxfZ3VjICpndWMpCitpbnQgaW50ZWxfZ3VjX3dvcGNtX2luaXQoc3RydWN0 IGludGVsX2d1YyAqZ3VjLCB1MzIgZ3VjX2Z3X3NpemUsCisJCQkgdTMyIGh1Y19md19zaXplKQog ewotCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0gZ3VjX3RvX2k5MTUoZ3VjKTsKKwl1 MzIgcmVzZXJ2ZWQgPSBndWNfcmVzZXJ2ZWRfd29wY21fc2l6ZShndWMpOworCXUzMiBvZmZzZXQs IHNpemUsIHRvcDsKKwlpbnQgZXJyOwogCi0JdTMyIHdvcGNtX3NpemUgPSBHVUNfV09QQ01fVE9Q OworCWlmIChndWMtPndvcGNtLnZhbGlkKQorCQlyZXR1cm4gMDsKIAotCS8qIE9uIEJYVCwgdGhl IHRvcCBvZiBXT1BDTSBpcyByZXNlcnZlZCBmb3IgUkM2IGNvbnRleHQgKi8KLQlpZiAoSVNfR0VO OV9MUChpOTE1KSkKLQkJd29wY21fc2l6ZSAtPSBCWFRfR1VDX1dPUENNX1JDNl9SRVNFUlZFRDsK KwlpZiAoIWd1Y19md19zaXplKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCWlmIChyZXNlcnZlZCA+ PSBXT1BDTV9ERUZBVUxUX1NJWkUpCisJCXJldHVybiAtRTJCSUc7CisKKwlvZmZzZXQgPSBodWNf Zndfc2l6ZSArIFdPUENNX1JFU0VSVkVEX1NJWkU7CisJaWYgKG9mZnNldCA+PSBXT1BDTV9ERUZB VUxUX1NJWkUpCisJCXJldHVybiAtRTJCSUc7CisKKwkvKiBIYXJkd2FyZSByZXF1aXJlcyBHdUMg V09QQ00gb2Zmc2V0IG5lZWRzIHRvIGJlIDE2SyBhbGlnbmVkLiAqLworCW9mZnNldCA9IEFMSUdO KG9mZnNldCwgV09QQ01fT0ZGU0VUX0FMSUdOTUVOVCk7CisJaWYgKChvZmZzZXQgKyByZXNlcnZl ZCkgPj0gV09QQ01fREVGQVVMVF9TSVpFKQorCQlyZXR1cm4gLUUyQklHOworCisJdG9wID0gV09Q Q01fREVGQVVMVF9TSVpFIC0gb2Zmc2V0OworCXNpemUgPSB0b3AgLSByZXNlcnZlZDsKKworCS8q CisJICogR3VDIHNpemUgbmVlZHMgdG8gYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIEd1QyBXT1BD TSBzaXplLgorCSAqIE5lZWQgZXh0cmEgOEsgc3RhY2sgZm9yIEd1Qy4KKwkgKi8KKwlpZiAoKGd1 Y19md19zaXplICsgR1VDX1dPUENNX1NUQUNLX1JFU0VSVkVEKSA+IHNpemUpCisJCXJldHVybiAt RTJCSUc7CisKKwlndWMtPndvcGNtLm9mZnNldCA9IG9mZnNldDsKKwlndWMtPndvcGNtLnNpemUg PSBzaXplOworCWd1Yy0+d29wY20udG9wID0gdG9wOworCisJLyogQ2hlY2sgcGxhdGZvcm0gc3Bl Y2lmaWMgcmVzdHJpY3Rpb25zICovCisJZXJyID0gZ3VjX3dvcGNtX3NpemVfY2hlY2soZ3VjKTsK KwlpZiAoZXJyKQorCQlyZXR1cm4gZXJyOworCisJZ3VjLT53b3BjbS52YWxpZCA9IHRydWU7CisK KwlEUk1fREVCVUdfRFJJVkVSKCJHdUMgV09QQ00gb2Zmc2V0ICVkS0IsIHNpemUgJWRLQiwgdG9w ICVkS0JcbiIsCisJCQkgb2Zmc2V0ID4+IDEwLCBzaXplID4+IDEwLCB0b3AgPj4gMTApOwogCi0J cmV0dXJuIHdvcGNtX3NpemU7CisJcmV0dXJuIDA7CiB9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9ndWNfd29wY20uaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2d1Y193b3BjbS5oCmluZGV4IDU5NWZiMWMuLjM1MmNmM2QgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2d1Y193b3BjbS5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2d1Y193b3BjbS5oCkBAIC0yOSwxMSArMjksNDEgQEAKIAogc3RydWN0IGludGVsX2d1 YzsKIAotI2RlZmluZSAgIEdVQ19XT1BDTV9PRkZTRVRfVkFMVUUJMHg4MDAwMAkvKiA1MTJLQiAq LwotLyogR3VDIGFkZHJlc3NlcyBiZWxvdyBHVUNfV09QQ01fVE9QIGRvbid0IG1hcCB0aHJvdWdo IHRoZSBHVFQgKi8KLSNkZWZpbmUgR1VDX1dPUENNX1RPUAkJCSgweDgwIDw8IDEyKQkvKiA1MTJL QiAqLwotI2RlZmluZSBCWFRfR1VDX1dPUENNX1JDNl9SRVNFUlZFRAkoMHgxMCA8PCAxMikJLyog NjRLQiAgKi8KKy8qIERlZmF1bHQgV09QQ00gc2l6ZSAxTUIgKi8KKyNkZWZpbmUgV09QQ01fREVG QVVMVF9TSVpFCQkoMHgxIDw8IDIwKQorLyogUmVzZXJ2ZWQgV09QQ00gc2l6ZSAxNktCICovCisj ZGVmaW5lIFdPUENNX1JFU0VSVkVEX1NJWkUJCSgweDQwMDApCisvKiBHVUMgV09QQ00gT2Zmc2V0 IG5lZWQgdG8gYmUgMTZLQiBhbGlnbmVkICovCisjZGVmaW5lIFdPUENNX09GRlNFVF9BTElHTk1F TlQJCSgweDQwMDApCisvKiA4S0Igc3RhY2sgcmVzZXJ2ZWQgZm9yIEd1QyBGVyovCisjZGVmaW5l IEdVQ19XT1BDTV9TVEFDS19SRVNFUlZFRAkoMHgyMDAwKQorLyogMjRLQiBXT1BDTSByZXNlcnZl ZCBmb3IgUkM2IENUWCBvbiBCWFQgKi8KKyNkZWZpbmUgQlhUX1dPUENNX1JDNl9SRVNFUlZFRAkJ KDB4NjAwMCkKIAotdTMyIGludGVsX2d1Y193b3BjbV9zaXplKHN0cnVjdCBpbnRlbF9ndWMgKmd1 Yyk7CisjZGVmaW5lIEdFTjlfR1VDX1dPUENNX0RFTFRBCQk0CisjZGVmaW5lIEdFTjlfR1VDX1dP UENNX09GRlNFVAkJKDB4MjQwMDApCisKK3N0cnVjdCBpbnRlbF9ndWNfd29wY20geworCXUzMiBv ZmZzZXQ7CisJdTMyIHNpemU7CisJdTMyIHRvcDsKKwlib29sIHZhbGlkOworfTsKKworLyoKKyAq IGludGVsX2d1Y193b3BjbV9pbml0X2Vhcmx5KCkgLSBFYXJseSBpbml0aWFsaXphdGlvbiBvZiB0 aGUgR3VDIFdPUENNLgorICogQHdvcGNtOiBHdUMgV09QQ00uCisgKgorICogU2V0dXAgdGhlIEd1 QyBXT1BDTSB0b3AgdG8gdGhlIHRvcCBvZiB0aGUgb3ZlcmFsbCBXT1BDTS4gVGhpcyB3aWxsIGd1 YXJhbnRlZQorICogdGhhdCB0aGUgYWxsb2NhdGlvbiBvZiB0aGUgR3VDIGFjY2Vzc2libGUgb2Jq ZWN0cyB3b24ndCBmYWxsIGludG8gV09QQ00gd2hlbgorICogR3VDIHBhcnRpdGlvbiBpc24ndCBw cmVzZW50LgorICoKKyAqLworc3RhdGljIGlubGluZSB2b2lkIGludGVsX2d1Y193b3BjbV9pbml0 X2Vhcmx5KHN0cnVjdCBpbnRlbF9ndWNfd29wY20gKndvcGNtKQoreworCXdvcGNtLT50b3AgPSBX T1BDTV9ERUZBVUxUX1NJWkU7Cit9CisKK2ludCBpbnRlbF9ndWNfd29wY21faW5pdChzdHJ1Y3Qg aW50ZWxfZ3VjICpndWMsIHUzMiBndWNfc2l6ZSwgdTMyIGh1Y19zaXplKTsKIAogI2VuZGlmCmRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9odWMuYyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2h1Yy5jCmluZGV4IGFlZDljMWMuLmRjNmE2YzYgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2h1Yy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2h1Yy5jCkBAIC0yMDYsNyArMjA2LDcgQEAgaW50IGludGVsX2h1Y19hdXRoKHN0 cnVjdCBpbnRlbF9odWMgKmh1YykKIAkJcmV0dXJuIC1FTk9FWEVDOwogCiAJdm1hID0gaTkxNV9n ZW1fb2JqZWN0X2dndHRfcGluKGh1Yy0+Zncub2JqLCBOVUxMLCAwLCAwLAotCQkJCVBJTl9PRkZT RVRfQklBUyB8IEdVQ19XT1BDTV9UT1ApOworCQkJCVBJTl9PRkZTRVRfQklBUyB8IGd1Yy0+d29w Y20udG9wKTsKIAlpZiAoSVNfRVJSKHZtYSkpIHsKIAkJcmV0ID0gUFRSX0VSUih2bWEpOwogCQlE Uk1fRVJST1IoIkh1QzogRmFpbGVkIHRvIHBpbiBodWMgZncgb2JqZWN0ICVkXG4iLCByZXQpOwpk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdWMuYyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX3VjLmMKaW5kZXggMjNlMGM4Yy4uNzBlZDI5NyAxMDA2NDQKLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdWMuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF91Yy5jCkBAIC0yMTcsNiArMjE3LDkgQEAgdm9pZCBpbnRlbF91Y19maW5pX3dxKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIGludCBpbnRlbF91Y19pbml0KHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIHsKIAlzdHJ1Y3QgaW50ZWxfZ3VjICpndWMg PSAmZGV2X3ByaXYtPmd1YzsKKwlzdHJ1Y3QgaW50ZWxfaHVjICpodWMgPSAmZGV2X3ByaXYtPmh1 YzsKKwl1MzIgZ3VjX2Z3X3NpemUgPSBpbnRlbF91Y19md19nZXRfc2l6ZSgmZ3VjLT5mdyk7CisJ dTMyIGh1Y19md19zaXplID0gaW50ZWxfdWNfZndfZ2V0X3NpemUoJmh1Yy0+ZncpOwogCWludCBy ZXQ7CiAKIAlpZiAoIVVTRVNfR1VDKGRldl9wcml2KSkKQEAgLTIyNSw2ICsyMjgsMTAgQEAgaW50 IGludGVsX3VjX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCWlmICgh SEFTX0dVQyhkZXZfcHJpdikpCiAJCXJldHVybiAtRU5PREVWOwogCisJcmV0ID0gaW50ZWxfZ3Vj X3dvcGNtX2luaXQoZ3VjLCBndWNfZndfc2l6ZSwgaHVjX2Z3X3NpemUpOworCWlmIChyZXQpCisJ CXJldHVybiByZXQ7CisKIAlyZXQgPSBpbnRlbF9ndWNfaW5pdChndWMpOwogCWlmIChyZXQpCiAJ CXJldHVybiByZXQ7CkBAIC0yNzQsOSArMjgxLDkgQEAgaW50IGludGVsX3VjX2luaXRfaHcoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCWdlbjlfcmVzZXRfZ3VjX2ludGVycnVw dHMoZGV2X3ByaXYpOwogCiAJLyogaW5pdCBXT1BDTSAqLwotCUk5MTVfV1JJVEUoR1VDX1dPUENN X1NJWkUsIGludGVsX2d1Y193b3BjbV9zaXplKGd1YykpOworCUk5MTVfV1JJVEUoR1VDX1dPUENN X1NJWkUsIGd1Yy0+d29wY20uc2l6ZSk7CiAJSTkxNV9XUklURShETUFfR1VDX1dPUENNX09GRlNF VCwKLQkJICAgR1VDX1dPUENNX09GRlNFVF9WQUxVRSB8IEhVQ19MT0FESU5HX0FHRU5UX0dVQyk7 CisJCSAgIGd1Yy0+d29wY20ub2Zmc2V0IHwgSFVDX0xPQURJTkdfQUdFTlRfR1VDKTsKIAogCS8q IFdhRW5hYmxldUtlcm5lbEhlYWRlclZhbGlkRml4OnNrbCAqLwogCS8qIFdhRW5hYmxlR3VDQm9v dEhhc2hDaGVja05vdFNldDpza2wsYnh0LGtibCAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfdWNfZncuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3VjX2Z3 LmMKaW5kZXggMjQ5NDVjZi4uNzkxMjYzYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfdWNfZncuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF91Y19mdy5j CkBAIC05NSw5ICs5NSwxMyBAQCB2b2lkIGludGVsX3VjX2Z3X2ZldGNoKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiwKIAl1Y19mdy0+dWNvZGVfb2Zmc2V0ID0gdWNfZnctPmhlYWRl cl9vZmZzZXQgKyB1Y19mdy0+aGVhZGVyX3NpemU7CiAJdWNfZnctPnVjb2RlX3NpemUgPSAoY3Nz LT5zaXplX2R3IC0gY3NzLT5oZWFkZXJfc2l6ZV9kdykgKiBzaXplb2YodTMyKTsKIAotCS8qIEhl YWRlciBhbmQgdUNvZGUgd2lsbCBiZSBsb2FkZWQgdG8gV09QQ00gKi8KKwkvKgorCSAqIEhlYWRl ciBhbmQgdUNvZGUgd2lsbCBiZSBsb2FkZWQgdG8gV09QQ00KKwkgKiBPbmx5IGNoZWNrIHRoZSBz aXplIGFnYWluc3QgdGhlIG92ZXJhbGwgYXZhaWxhYmxlIFdPUENNIGhlcmUuIFdpbGwKKwkgKiBj b250aW51ZSB0byBjaGVjayB0aGUgc2l6ZSBkdXJpbmcgV09QQ00gcGFydGl0aW9uIGNhbGN1bGF0 aW9uLgorCSAqLwogCXNpemUgPSB1Y19mdy0+aGVhZGVyX3NpemUgKyB1Y19mdy0+dWNvZGVfc2l6 ZTsKLQlpZiAoc2l6ZSA+IGludGVsX2d1Y193b3BjbV9zaXplKCZkZXZfcHJpdi0+Z3VjKSkgewor CWlmIChzaXplID4gV09QQ01fREVGQVVMVF9TSVpFKSB7CiAJCURSTV9XQVJOKCIlczogRmlybXdh cmUgaXMgdG9vIGxhcmdlIHRvIGZpdCBpbiBXT1BDTVxuIiwKIAkJCSBpbnRlbF91Y19md190eXBl X3JlcHIodWNfZnctPnR5cGUpKTsKIAkJZXJyID0gLUUyQklHOwpAQCAtMjA3LDYgKzIxMSw3IEBA IGludCBpbnRlbF91Y19md191cGxvYWQoc3RydWN0IGludGVsX3VjX2Z3ICp1Y19mdywKIAkJICAg ICAgIGludCAoKnhmZXIpKHN0cnVjdCBpbnRlbF91Y19mdyAqdWNfZncsCiAJCQkJICAgc3RydWN0 IGk5MTVfdm1hICp2bWEpKQogeworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0gdG9f aTkxNSh1Y19mdy0+b2JqLT5iYXNlLmRldik7CiAJc3RydWN0IGk5MTVfdm1hICp2bWE7CiAJaW50 IGVycjsKIApAQCAtMjMwLDcgKzIzNSw3IEBAIGludCBpbnRlbF91Y19md191cGxvYWQoc3RydWN0 IGludGVsX3VjX2Z3ICp1Y19mdywKIAl9CiAKIAl2bWEgPSBpOTE1X2dlbV9vYmplY3RfZ2d0dF9w aW4odWNfZnctPm9iaiwgTlVMTCwgMCwgMCwKLQkJCQkgICAgICAgUElOX09GRlNFVF9CSUFTIHwg R1VDX1dPUENNX1RPUCk7CisJCQkJICAgICAgIFBJTl9PRkZTRVRfQklBUyB8IGk5MTUtPmd1Yy53 b3BjbS50b3ApOwogCWlmIChJU19FUlIodm1hKSkgewogCQllcnIgPSBQVFJfRVJSKHZtYSk7CiAJ CURSTV9ERUJVR19EUklWRVIoIiVzIGZ3IGdndHQtcGluIGVycj0lZFxuIiwKZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3VjX2Z3LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF91Y19mdy5oCmluZGV4IGQ1ZmQ0NjAuLmQwMGQ4ODggMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX3VjX2Z3LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfdWNfZncuaApAQCAtMTE1LDYgKzExNSwyMiBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaW50 ZWxfdWNfZndfaXNfc2VsZWN0ZWQoc3RydWN0IGludGVsX3VjX2Z3ICp1Y19mdykKIAlyZXR1cm4g dWNfZnctPnBhdGggIT0gTlVMTDsKIH0KIAorLyoKKyAqIGludGVsX3VjX2Z3X2dldF9zaXplKCkg LSBHZXQgdGhlIHNpemUgb2YgdGhlIGZpcm13YXJlLgorICogQHVjX2Z3OiBpbnRlbF91Y19mdyBz dHJ1Y3R1cmUuCisgKgorICogR2V0IHRoZSBzaXplIG9mIHRoZSBmaXJtd2FyZSB0aGF0IHdpbGwg YmUgcGxhY2VkIGluIFdPUENNLgorICoKKyAqIFJldHVybjogWmVybyBvbiBpbnZhbGlkIGZpcm13 YXJlIHN0YXR1cy4gYWN0dWFsIHNpemUgb24gc3VjY2Vzcy4KKyAqLworc3RhdGljIGlubGluZSB1 MzIgaW50ZWxfdWNfZndfZ2V0X3NpemUoc3RydWN0IGludGVsX3VjX2Z3ICp1Y19mdykKK3sKKwlp ZiAodWNfZnctPmZldGNoX3N0YXR1cyAhPSBJTlRFTF9VQ19GSVJNV0FSRV9TVUNDRVNTKQorCQly ZXR1cm4gMDsKKworCXJldHVybiB1Y19mdy0+aGVhZGVyX3NpemUgKyB1Y19mdy0+dWNvZGVfc2l6 ZTsKK30KKwogdm9pZCBpbnRlbF91Y19md19mZXRjaChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYsCiAJCSAgICAgICBzdHJ1Y3QgaW50ZWxfdWNfZncgKnVjX2Z3KTsKIGludCBpbnRl bF91Y19md191cGxvYWQoc3RydWN0IGludGVsX3VjX2Z3ICp1Y19mdywKLS0gCjIuNy40CgpfX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFp bGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5m cmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK