From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sagar Arun Kamble Subject: [PATCH 1/8] drm/i915: Separate GuC/HuC specific functionality from intel_uc Date: Wed, 9 Aug 2017 15:53:45 +0530 Message-ID: <1502274231-30714-1-git-send-email-sagar.a.kamble@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by gabe.freedesktop.org (Postfix) with ESMTPS id 4E3DB89C83 for ; Wed, 9 Aug 2017 10:20:29 +0000 (UTC) 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 List-Id: intel-gfx@lists.freedesktop.org UmVtb3ZlZCB1bm5lY2Vzc2FyeSBpbnRlbF91Yy5oIGluY2x1ZGVzIGFzIGl0IGlzIHByZXNlbnQg aW4gaTkxNV9kcnYuaC4KQ3JlYXRlZCBpbnRlbF9ndWMuYyBhbmQgaW50ZWxfZ3VjLmggZm9yIHBs YWNpbmcgR3VDIHNwZWNpZmljIGNvZGUuCkNyZWF0ZWQgaW50ZWxfaHVjLmggdG8gcmVmZXIgdG8g SHVDIHNwZWNpZmljIGZ1bmN0aW9ucy4KCkNjOiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdp bHNvbi5jby51az4KQ2M6IE1pY2hhbCBXYWpkZWN6a28gPG1pY2hhbC53YWpkZWN6a29AaW50ZWwu Y29tPgpDYzogRGFuaWVsZSBDZXJhb2xvIFNwdXJpbyA8ZGFuaWVsZS5jZXJhb2xvc3B1cmlvQGlu dGVsLmNvbT4KU2lnbmVkLW9mZi1ieTogU2FnYXIgQXJ1biBLYW1ibGUgPHNhZ2FyLmEua2FtYmxl QGludGVsLmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZSAgICAgICAgICAg ICAgfCAgIDIgKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYyAgICAgICAgICAgIHwg ICAxIC0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggICAgICAgICAgICB8ICAgMiAr CiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2d1Y19zdWJtaXNzaW9uLmMgfCAgIDEgLQogZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjLmMgICAgICAgICAgIHwgMTg0ICsrKysrKysrKysr KysrKysrKysrKysrKysrCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWMuaCAgICAgICAg ICAgfCAyMDMgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2d1Y19sb2FkZXIuYyAgICB8ICAgMSAtCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9odWMuYyAgICAgICAgICAgfCAgIDIgLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf aHVjLmggICAgICAgICAgIHwgIDM4ICsrKysrKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf dWMuYyAgICAgICAgICAgIHwgMTU5ICstLS0tLS0tLS0tLS0tLS0tLS0tLS0KIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX3VjLmggICAgICAgICAgICB8IDE3OCAtLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCiAxMSBmaWxlcyBjaGFuZ2VkLCA0MzAgaW5zZXJ0aW9ucygrKSwgMzQxIGRlbGV0aW9u cygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Yy5j CiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjLmgKIGNy ZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9odWMuaAoKZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvTWFrZWZpbGUKaW5kZXggZjgyMjczMS4uZWZhNzYwNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvTWFrZWZpbGUKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUK QEAgLTU4LDYgKzU4LDggQEAgaTkxNS15ICs9IGk5MTVfY21kX3BhcnNlci5vIFwKIAogIyBnZW5l cmFsLXB1cnBvc2UgbWljcm9jb250cm9sbGVyIChHdUMpIHN1cHBvcnQKIGk5MTUteSArPSBpbnRl bF91Yy5vIFwKKwkgIGludGVsX2d1Yy5vIFwKKwkgIGludGVsX2h1Yy5vIFwKIAkgIGludGVsX2d1 Y19jdC5vIFwKIAkgIGludGVsX2d1Y19sb2cubyBcCiAJICBpbnRlbF9ndWNfbG9hZGVyLm8gXApk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZHJ2LmMKaW5kZXggMjE0NTU1ZS4uNTUxMmNjZSAxMDA2NDQKLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2Rydi5jCkBAIC01MCw3ICs1MCw2IEBACiAjaW5jbHVkZSAiaTkxNV90cmFjZS5oIgog I2luY2x1ZGUgImk5MTVfdmdwdS5oIgogI2luY2x1ZGUgImludGVsX2Rydi5oIgotI2luY2x1ZGUg ImludGVsX3VjLmgiCiAKIHN0YXRpYyBzdHJ1Y3QgZHJtX2RyaXZlciBkcml2ZXI7CiAKZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2Rydi5oCmluZGV4IDJjNzQ1NmYuLjA4NTY0N2EgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9kcnYuaApAQCAtNTksNiArNTksOCBAQAogI2luY2x1ZGUgImludGVsX2Jpb3MuaCIKICNpbmNs dWRlICJpbnRlbF9kcGxsX21nci5oIgogI2luY2x1ZGUgImludGVsX3VjLmgiCisjaW5jbHVkZSAi aW50ZWxfZ3VjLmgiCisjaW5jbHVkZSAiaW50ZWxfaHVjLmgiCiAjaW5jbHVkZSAiaW50ZWxfbHJj LmgiCiAjaW5jbHVkZSAiaW50ZWxfcmluZ2J1ZmZlci5oIgogCmRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2d1Y19zdWJtaXNzaW9uLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2d1Y19zdWJtaXNzaW9uLmMKaW5kZXggNDhhMWU5My4uNjAyYWU4YSAxMDA2NDQKLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ndWNfc3VibWlzc2lvbi5jCisrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3VjX3N1Ym1pc3Npb24uYwpAQCAtMjMsNyArMjMsNiBAQAog ICovCiAjaW5jbHVkZSA8bGludXgvY2lyY19idWYuaD4KICNpbmNsdWRlICJpOTE1X2Rydi5oIgot I2luY2x1ZGUgImludGVsX3VjLmgiCiAKICNpbmNsdWRlIDx0cmFjZS9ldmVudHMvZG1hX2ZlbmNl Lmg+CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Yy5jIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMC4uYTgxMmQzZAotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2d1Yy5jCkBAIC0wLDAgKzEsMTg0IEBACisvKgorICogQ29weXJpZ2h0IMKpIDIwMTcg SW50ZWwgQ29ycG9yYXRpb24KKyAqCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBm cmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQorICogY29weSBvZiB0aGlz IHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdh cmUiKSwKKyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGlu Y2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KKyAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBt b2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAorICogYW5kL29y IHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdo b20gdGhlCisgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhl IGZvbGxvd2luZyBjb25kaXRpb25zOgorICoKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNl IGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIChpbmNsdWRpbmcgdGhlIG5leHQKKyAqIHBhcmFn cmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0 aW9ucyBvZiB0aGUKKyAqIFNvZnR3YXJlLgorICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURF RCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCisgKiBJ TVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1F UkNIQU5UQUJJTElUWSwKKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBO T05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTAorICogVEhFIEFVVEhPUlMgT1IgQ09Q WVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIK KyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1Ig T1RIRVJXSVNFLCBBUklTSU5HCisgKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRI IFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTCisgKiBJTiBUSEUgU09G VFdBUkUuCisgKgorICovCisKKyNpbmNsdWRlICJpOTE1X2Rydi5oIgorCitpbmxpbmUgaTkxNV9y ZWdfdCBndWNfc2VuZF9yZWcoc3RydWN0IGludGVsX2d1YyAqZ3VjLCB1MzIgaSkKK3sKKwlHRU1f QlVHX09OKCFndWMtPnNlbmRfcmVncy5iYXNlKTsKKwlHRU1fQlVHX09OKCFndWMtPnNlbmRfcmVn cy5jb3VudCk7CisJR0VNX0JVR19PTihpID49IGd1Yy0+c2VuZF9yZWdzLmNvdW50KTsKKworCXJl dHVybiBfTU1JTyhndWMtPnNlbmRfcmVncy5iYXNlICsgNCAqIGkpOworfQorCit2b2lkIGd1Y19j YXB0dXJlX2xvYWRfZXJyX2xvZyhzdHJ1Y3QgaW50ZWxfZ3VjICpndWMpCit7CisJaWYgKCFndWMt PmxvZy52bWEgfHwgaTkxNS5ndWNfbG9nX2xldmVsIDwgMCkKKwkJcmV0dXJuOworCisJaWYgKCFn dWMtPmxvYWRfZXJyX2xvZykKKwkJZ3VjLT5sb2FkX2Vycl9sb2cgPSBpOTE1X2dlbV9vYmplY3Rf Z2V0KGd1Yy0+bG9nLnZtYS0+b2JqKTsKK30KKwordm9pZCBndWNfZnJlZV9sb2FkX2Vycl9sb2co c3RydWN0IGludGVsX2d1YyAqZ3VjKQoreworCWlmIChndWMtPmxvYWRfZXJyX2xvZykKKwkJaTkx NV9nZW1fb2JqZWN0X3B1dChndWMtPmxvYWRfZXJyX2xvZyk7Cit9CisKK3N0YXRpYyB2b2lkIGd1 Y19pbml0X3NlbmRfcmVncyhzdHJ1Y3QgaW50ZWxfZ3VjICpndWMpCit7CisJc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZ3VjX3RvX2k5MTUoZ3VjKTsKKwllbnVtIGZvcmNld2Fr ZV9kb21haW5zIGZ3X2RvbWFpbnMgPSAwOworCXVuc2lnbmVkIGludCBpOworCisJZ3VjLT5zZW5k X3JlZ3MuYmFzZSA9IGk5MTVfbW1pb19yZWdfb2Zmc2V0KFNPRlRfU0NSQVRDSCgwKSk7CisJZ3Vj LT5zZW5kX3JlZ3MuY291bnQgPSBTT0ZUX1NDUkFUQ0hfQ09VTlQgLSAxOworCisJZm9yIChpID0g MDsgaSA8IGd1Yy0+c2VuZF9yZWdzLmNvdW50OyBpKyspIHsKKwkJZndfZG9tYWlucyB8PSBpbnRl bF91bmNvcmVfZm9yY2V3YWtlX2Zvcl9yZWcoZGV2X3ByaXYsCisJCQkJCWd1Y19zZW5kX3JlZyhn dWMsIGkpLAorCQkJCQlGV19SRUdfUkVBRCB8IEZXX1JFR19XUklURSk7CisJfQorCWd1Yy0+c2Vu ZF9yZWdzLmZ3X2RvbWFpbnMgPSBmd19kb21haW5zOworfQorCitpbnQgZ3VjX2VuYWJsZV9jb21t dW5pY2F0aW9uKHN0cnVjdCBpbnRlbF9ndWMgKmd1YykKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYgPSBndWNfdG9faTkxNShndWMpOworCisJZ3VjX2luaXRfc2VuZF9yZWdz KGd1Yyk7CisKKwlpZiAoSEFTX0dVQ19DVChkZXZfcHJpdikpCisJCXJldHVybiBpbnRlbF9ndWNf ZW5hYmxlX2N0KGd1Yyk7CisKKwlndWMtPnNlbmQgPSBpbnRlbF9ndWNfc2VuZF9tbWlvOworCXJl dHVybiAwOworfQorCit2b2lkIGd1Y19kaXNhYmxlX2NvbW11bmljYXRpb24oc3RydWN0IGludGVs X2d1YyAqZ3VjKQoreworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGd1Y190 b19pOTE1KGd1Yyk7CisKKwlpZiAoSEFTX0dVQ19DVChkZXZfcHJpdikpCisJCWludGVsX2d1Y19k aXNhYmxlX2N0KGd1Yyk7CisKKwlndWMtPnNlbmQgPSBpbnRlbF9ndWNfc2VuZF9ub3A7Cit9CisK K2ludCBpbnRlbF9ndWNfc2VuZF9ub3Aoc3RydWN0IGludGVsX2d1YyAqZ3VjLCBjb25zdCB1MzIg KmFjdGlvbiwgdTMyIGxlbikKK3sKKwlXQVJOKDEsICJVbmV4cGVjdGVkIHNlbmQ6IGFjdGlvbj0l I3hcbiIsICphY3Rpb24pOworCXJldHVybiAtRU5PREVWOworfQorCisvKgorICogVGhpcyBmdW5j dGlvbiBpbXBsZW1lbnRzIHRoZSBNTUlPIGJhc2VkIGhvc3QgdG8gR3VDIGludGVyZmFjZS4KKyAq LworaW50IGludGVsX2d1Y19zZW5kX21taW8oc3RydWN0IGludGVsX2d1YyAqZ3VjLCBjb25zdCB1 MzIgKmFjdGlvbiwgdTMyIGxlbikKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYgPSBndWNfdG9faTkxNShndWMpOworCXUzMiBzdGF0dXM7CisJaW50IGk7CisJaW50IHJldDsK KworCUdFTV9CVUdfT04oIWxlbik7CisJR0VNX0JVR19PTihsZW4gPiBndWMtPnNlbmRfcmVncy5j b3VudCk7CisKKwkvKiBJZiBDVCBpcyBhdmFpbGFibGUsIHdlIGV4cGVjdCB0byB1c2UgTU1JTyBv bmx5IGR1cmluZyBpbml0L2ZpbmkgKi8KKwlHRU1fQlVHX09OKEhBU19HVUNfQ1QoZGV2X3ByaXYp ICYmCisJCSphY3Rpb24gIT0gSU5URUxfR1VDX0FDVElPTl9SRUdJU1RFUl9DT01NQU5EX1RSQU5T UE9SVF9CVUZGRVIgJiYKKwkJKmFjdGlvbiAhPSBJTlRFTF9HVUNfQUNUSU9OX0RFUkVHSVNURVJf Q09NTUFORF9UUkFOU1BPUlRfQlVGRkVSKTsKKworCW11dGV4X2xvY2soJmd1Yy0+c2VuZF9tdXRl eCk7CisJaW50ZWxfdW5jb3JlX2ZvcmNld2FrZV9nZXQoZGV2X3ByaXYsIGd1Yy0+c2VuZF9yZWdz LmZ3X2RvbWFpbnMpOworCisJZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKQorCQlJOTE1X1dSSVRF KGd1Y19zZW5kX3JlZyhndWMsIGkpLCBhY3Rpb25baV0pOworCisJUE9TVElOR19SRUFEKGd1Y19z ZW5kX3JlZyhndWMsIGkgLSAxKSk7CisKKwlpbnRlbF9ndWNfbm90aWZ5KGd1Yyk7CisKKwkvKgor CSAqIE5vIEd1QyBjb21tYW5kIHNob3VsZCBldmVyIHRha2UgbG9uZ2VyIHRoYW4gMTBtcy4KKwkg KiBGYXN0IGNvbW1hbmRzIHNob3VsZCBzdGlsbCBjb21wbGV0ZSBpbiAxMHVzLgorCSAqLworCXJl dCA9IF9faW50ZWxfd2FpdF9mb3JfcmVnaXN0ZXJfZncoZGV2X3ByaXYsCisJCQkJCSAgIGd1Y19z ZW5kX3JlZyhndWMsIDApLAorCQkJCQkgICBJTlRFTF9HVUNfUkVDVl9NQVNLLAorCQkJCQkgICBJ TlRFTF9HVUNfUkVDVl9NQVNLLAorCQkJCQkgICAxMCwgMTAsICZzdGF0dXMpOworCWlmIChzdGF0 dXMgIT0gSU5URUxfR1VDX1NUQVRVU19TVUNDRVNTKSB7CisJCS8qCisJCSAqIEVpdGhlciB0aGUg R3VDIGV4cGxpY2l0bHkgcmV0dXJuZWQgYW4gZXJyb3IgKHdoaWNoCisJCSAqIHdlIGNvbnZlcnQg dG8gLUVJTyBoZXJlKSBvciBubyByZXNwb25zZSBhdCBhbGwgd2FzCisJCSAqIHJlY2VpdmVkIHdp dGhpbiB0aGUgdGltZW91dCBsaW1pdCAoLUVUSU1FRE9VVCkKKwkJICovCisJCWlmIChyZXQgIT0g LUVUSU1FRE9VVCkKKwkJCXJldCA9IC1FSU87CisKKwkJRFJNX1dBUk4oIklOVEVMX0dVQ19TRU5E OiBBY3Rpb24gMHglWCBmYWlsZWQ7IgorCQkJICIgcmV0PSVkIHN0YXR1cz0weCUwOFggcmVzcG9u c2U9MHglMDhYXG4iLAorCQkJIGFjdGlvblswXSwgcmV0LCBzdGF0dXMsIEk5MTVfUkVBRChTT0ZU X1NDUkFUQ0goMTUpKSk7CisJfQorCisJaW50ZWxfdW5jb3JlX2ZvcmNld2FrZV9wdXQoZGV2X3By aXYsIGd1Yy0+c2VuZF9yZWdzLmZ3X2RvbWFpbnMpOworCW11dGV4X3VubG9jaygmZ3VjLT5zZW5k X211dGV4KTsKKworCXJldHVybiByZXQ7Cit9CisKK2ludCBpbnRlbF9ndWNfc2FtcGxlX2ZvcmNl d2FrZShzdHJ1Y3QgaW50ZWxfZ3VjICpndWMpCit7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2ID0gZ3VjX3RvX2k5MTUoZ3VjKTsKKwl1MzIgYWN0aW9uWzJdOworCisJYWN0aW9u WzBdID0gSU5URUxfR1VDX0FDVElPTl9TQU1QTEVfRk9SQ0VXQUtFOworCS8qIFdhUnNEaXNhYmxl Q29hcnNlUG93ZXJHYXRpbmc6c2tsLGJ4dCAqLworCWlmICghaW50ZWxfZW5hYmxlX3JjNigpIHx8 IE5FRURTX1dhUnNEaXNhYmxlQ29hcnNlUG93ZXJHYXRpbmcoZGV2X3ByaXYpKQorCQlhY3Rpb25b MV0gPSAwOworCWVsc2UKKwkJLyogYml0IDAgYW5kIDEgYXJlIGZvciBSZW5kZXIgYW5kIE1lZGlh IGRvbWFpbiBzZXBhcmF0ZWx5ICovCisJCWFjdGlvblsxXSA9IEdVQ19GT1JDRVdBS0VfUkVOREVS IHwgR1VDX0ZPUkNFV0FLRV9NRURJQTsKKworCXJldHVybiBpbnRlbF9ndWNfc2VuZChndWMsIGFj dGlvbiwgQVJSQVlfU0laRShhY3Rpb24pKTsKK30KKworc3RhdGljIHZvaWQgZ3VjX3dyaXRlX2ly cV90cmlnZ2VyKHN0cnVjdCBpbnRlbF9ndWMgKmd1YykKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYgPSBndWNfdG9faTkxNShndWMpOworCisJSTkxNV9XUklURShHVUNfU0VO RF9JTlRFUlJVUFQsIEdVQ19TRU5EX1RSSUdHRVIpOworfQorCit2b2lkIGludGVsX2d1Y19pbml0 X2Vhcmx5KHN0cnVjdCBpbnRlbF9ndWMgKmd1YykKK3sKKwlpbnRlbF9ndWNfY3RfaW5pdF9lYXJs eSgmZ3VjLT5jdCk7CisKKwltdXRleF9pbml0KCZndWMtPnNlbmRfbXV0ZXgpOworCWd1Yy0+c2Vu ZCA9IGludGVsX2d1Y19zZW5kX25vcDsKKwlndWMtPm5vdGlmeSA9IGd1Y193cml0ZV9pcnFfdHJp Z2dlcjsKK30KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Yy5oIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMC4uZjI5ZjhjZQotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2d1Yy5oCkBAIC0wLDAgKzEsMjAzIEBACisvKgorICogQ29weXJpZ2h0IMKpIDIw MTcgSW50ZWwgQ29ycG9yYXRpb24KKyAqCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVk LCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQorICogY29weSBvZiB0 aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29m dHdhcmUiKSwKKyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24s IGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KKyAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5 LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAorICogYW5k L29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRv IHdob20gdGhlCisgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8g dGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorICoKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90 aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIChpbmNsdWRpbmcgdGhlIG5leHQKKyAqIHBh cmFncmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBw b3J0aW9ucyBvZiB0aGUKKyAqIFNvZnR3YXJlLgorICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9W SURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCisg KiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9G IE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFO RCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTAorICogVEhFIEFVVEhPUlMgT1Ig Q09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RI RVIKKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQg T1IgT1RIRVJXSVNFLCBBUklTSU5HCisgKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBX SVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTCisgKiBJTiBUSEUg U09GVFdBUkUuCisgKgorICovCisjaWZuZGVmIF9JTlRFTF9HVUNfSF8KKyNkZWZpbmUgX0lOVEVM X0dVQ19IXworCisjaW5jbHVkZSAiaW50ZWxfZ3VjX2Z3aWYuaCIKKyNpbmNsdWRlICJpOTE1X2d1 Y19yZWcuaCIKKyNpbmNsdWRlICJpbnRlbF9yaW5nYnVmZmVyLmgiCisjaW5jbHVkZSAiaW50ZWxf Z3VjX2N0LmgiCisjaW5jbHVkZSAiaTkxNV92bWEuaCIKKworc3RydWN0IGRybV9pOTE1X2dlbV9y ZXF1ZXN0OworCisvKgorICogVGhpcyBzdHJ1Y3R1cmUgcHJpbWFyaWx5IGRlc2NyaWJlcyB0aGUg R0VNIG9iamVjdCBzaGFyZWQgd2l0aCB0aGUgR3VDLgorICogVGhlIHNwZWNzIHNvbWV0aW1lcyBy ZWZlciB0byB0aGlzIG9iamVjdCBhcyBhICJHdUMgY29udGV4dCIsIGJ1dCB3ZSB1c2UKKyAqIHRo ZSB0ZXJtICJjbGllbnQiIHRvIGF2b2lkIGNvbmZ1c2lvbiB3aXRoIGhhcmR3YXJlIGNvbnRleHRz LiBUaGlzCisgKiBHRU0gb2JqZWN0IGlzIGhlbGQgZm9yIHRoZSBlbnRpcmUgbGlmZXRpbWUgb2Yg b3VyIGludGVyYWN0aW9uIHdpdGgKKyAqIHRoZSBHdUMsIGJlaW5nIGFsbG9jYXRlZCBiZWZvcmUg dGhlIEd1QyBpcyBsb2FkZWQgd2l0aCBpdHMgZmlybXdhcmUuCisgKiBCZWNhdXNlIHRoZXJlJ3Mg bm8gd2F5IHRvIHVwZGF0ZSB0aGUgYWRkcmVzcyB1c2VkIGJ5IHRoZSBHdUMgYWZ0ZXIKKyAqIGlu aXRpYWxpc2F0aW9uLCB0aGUgc2hhcmVkIG9iamVjdCBtdXN0IHN0YXkgcGlubmVkIGludG8gdGhl IEdHVFQgYXMKKyAqIGxvbmcgYXMgdGhlIEd1QyBpcyBpbiB1c2UuIFdlIGFsc28ga2VlcCB0aGUg Zmlyc3QgcGFnZSAob25seSkgbWFwcGVkCisgKiBpbnRvIGtlcm5lbCBhZGRyZXNzIHNwYWNlLCBh cyBpdCBpbmNsdWRlcyBzaGFyZWQgZGF0YSB0aGF0IG11c3QgYmUKKyAqIHVwZGF0ZWQgb24gZXZl cnkgcmVxdWVzdCBzdWJtaXNzaW9uLgorICoKKyAqIFRoZSBzaW5nbGUgR0VNIG9iamVjdCBkZXNj cmliZWQgaGVyZSBpcyBhY3R1YWxseSBtYWRlIHVwIG9mIHNldmVyYWwKKyAqIHNlcGFyYXRlIGFy ZWFzLCBhcyBmYXIgYXMgdGhlIEd1QyBpcyBjb25jZXJuZWQuIFRoZSBmaXJzdCBwYWdlIChrZXB0 CisgKiBrbWFwJ2QpIGluY2x1ZGVzIHRoZSAicHJvY2VzcyBkZXNjcmlwdG9yIiB3aGljaCBob2xk cyBzZXF1ZW5jZSBkYXRhIGZvcgorICogdGhlIGRvb3JiZWxsLCBhbmQgb25lIGNhY2hlbGluZSB3 aGljaCBhY3R1YWxseSAqaXMqIHRoZSBkb29yYmVsbDsgYQorICogd3JpdGUgdG8gdGhpcyB3aWxs ICJyaW5nIHRoZSBkb29yYmVsbCIgKGkuZS4gc2VuZCBhbiBpbnRlcnJ1cHQgdG8gdGhlCisgKiBH dUMpLiBUaGUgc3Vic2VxdWVudCAgcGFnZXMgb2YgdGhlIGNsaWVudCBvYmplY3QgY29uc3RpdHV0 ZSB0aGUgd29yaworICogcXVldWUgKGEgY2lyY3VsYXIgYXJyYXkgb2Ygd29yayBpdGVtcyksIGFn YWluIGRlc2NyaWJlZCBpbiB0aGUgcHJvY2VzcworICogZGVzY3JpcHRvci4gV29yayBxdWV1ZSBw YWdlcyBhcmUgbWFwcGVkIG1vbWVudGFyaWx5IGFzIHJlcXVpcmVkLgorICoKKyAqIFdlIGFsc28g a2VlcCBhIGZldyBzdGF0aXN0aWNzIG9uIGZhaWx1cmVzLiBJZGVhbGx5LCB0aGVzZSBzaG91bGQg YWxsCisgKiBiZSB6ZXJvIQorICogICBub193cV9zcGFjZTogdGltZXMgdGhhdCB0aGUgc3VibWlz c2lvbiBwcmUtY2hlY2sgZm91bmQgbm8gc3BhY2Ugd2FzCisgKiAgICAgICAgICAgICAgICBhdmFp bGFibGUgaW4gdGhlIHdvcmsgcXVldWUgKG5vdGUsIHRoZSBxdWV1ZSBpcyBzaGFyZWQsCisgKiAg ICAgICAgICAgICAgICBub3QgcGVyLWVuZ2luZSkuIEl0IGlzIE9LIGZvciB0aGlzIHRvIGJlIG5v bnplcm8sIGJ1dAorICogICAgICAgICAgICAgICAgaXQgc2hvdWxkIG5vdCBiZSBodWdlIQorICog ICBiX2ZhaWw6IGZhaWxlZCB0byByaW5nIHRoZSBkb29yYmVsbC4gVGhpcyBzaG91bGQgbmV2ZXIg aGFwcGVuLCB1bmxlc3MKKyAqICAgICAgICAgICBzb21laG93IHRoZSBoYXJkd2FyZSBtaXNiZWhh dmVzLCBvciBtYXliZSBpZiB0aGUgR3VDIGZpcm13YXJlCisgKiAgICAgICAgICAgY3Jhc2hlcz8g V2UgcHJvYmFibHkgbmVlZCB0byByZXNldCB0aGUgR1BVIHRvIHJlY292ZXIuCisgKiAgIHJldGNv ZGU6IGVycm5vIGZyb20gbGFzdCBndWNfc3VibWl0KCkKKyAqLworc3RydWN0IGk5MTVfZ3VjX2Ns aWVudCB7CisJc3RydWN0IGk5MTVfdm1hICp2bWE7CisJdm9pZCAqdmFkZHI7CisJc3RydWN0IGk5 MTVfZ2VtX2NvbnRleHQgKm93bmVyOworCXN0cnVjdCBpbnRlbF9ndWMgKmd1YzsKKworCXVpbnQz Ml90IGVuZ2luZXM7CQkvKiBiaXRtYXAgb2YgKGhvc3QpIGVuZ2luZSBpZHMJKi8KKwl1aW50MzJf dCBwcmlvcml0eTsKKwl1MzIgc3RhZ2VfaWQ7CisJdWludDMyX3QgcHJvY19kZXNjX29mZnNldDsK KworCXUxNiBkb29yYmVsbF9pZDsKKwl1bnNpZ25lZCBsb25nIGRvb3JiZWxsX29mZnNldDsKKwl1 MzIgZG9vcmJlbGxfY29va2llOworCisJc3BpbmxvY2tfdCB3cV9sb2NrOworCXVpbnQzMl90IHdx X29mZnNldDsKKwl1aW50MzJfdCB3cV9zaXplOworCXVpbnQzMl90IHdxX3RhaWw7CisJdWludDMy X3Qgd3FfcnN2ZDsKKwl1aW50MzJfdCBub193cV9zcGFjZTsKKworCS8qIFBlci1lbmdpbmUgY291 bnRzIG9mIEd1QyBzdWJtaXNzaW9ucyAqLworCXVpbnQ2NF90IHN1Ym1pc3Npb25zW0k5MTVfTlVN X0VOR0lORVNdOworfTsKKworc3RydWN0IGludGVsX2d1Y19sb2cgeworCXVpbnQzMl90IGZsYWdz OworCXN0cnVjdCBpOTE1X3ZtYSAqdm1hOworCS8qIFRoZSBydW50aW1lIHN0dWZmIGdldHMgY3Jl YXRlZCBvbmx5IHdoZW4gR3VDIGxvZ2dpbmcgZ2V0cyBlbmFibGVkICovCisJc3RydWN0IHsKKwkJ dm9pZCAqYnVmX2FkZHI7CisJCXN0cnVjdCB3b3JrcXVldWVfc3RydWN0ICpmbHVzaF93cTsKKwkJ c3RydWN0IHdvcmtfc3RydWN0IGZsdXNoX3dvcms7CisJCXN0cnVjdCByY2hhbiAqcmVsYXlfY2hh bjsKKwl9IHJ1bnRpbWU7CisJLyogbG9nZ2luZyByZWxhdGVkIHN0YXRzICovCisJdTMyIGNhcHR1 cmVfbWlzc19jb3VudDsKKwl1MzIgZmx1c2hfaW50ZXJydXB0X2NvdW50OworCXUzMiBwcmV2X292 ZXJmbG93X2NvdW50W0dVQ19NQVhfTE9HX0JVRkZFUl07CisJdTMyIHRvdGFsX292ZXJmbG93X2Nv dW50W0dVQ19NQVhfTE9HX0JVRkZFUl07CisJdTMyIGZsdXNoX2NvdW50W0dVQ19NQVhfTE9HX0JV RkZFUl07Cit9OworCitzdHJ1Y3QgaW50ZWxfZ3VjIHsKKwlzdHJ1Y3QgaW50ZWxfdWNfZncgZnc7 CisJc3RydWN0IGludGVsX2d1Y19sb2cgbG9nOworCXN0cnVjdCBpbnRlbF9ndWNfY3QgY3Q7CisK KwkvKiBMb2cgc25hcHNob3QgaWYgR3VDIGVycm9ycyBkdXJpbmcgbG9hZCAqLworCXN0cnVjdCBk cm1faTkxNV9nZW1fb2JqZWN0ICpsb2FkX2Vycl9sb2c7CisKKwkvKiBpbnRlbF9ndWNfcmVjdiBp bnRlcnJ1cHQgcmVsYXRlZCBzdGF0ZSAqLworCWJvb2wgaW50ZXJydXB0c19lbmFibGVkOworCisJ c3RydWN0IGk5MTVfdm1hICphZHNfdm1hOworCXN0cnVjdCBpOTE1X3ZtYSAqc3RhZ2VfZGVzY19w b29sOworCXZvaWQgKnN0YWdlX2Rlc2NfcG9vbF92YWRkcjsKKwlzdHJ1Y3QgaWRhIHN0YWdlX2lk czsKKworCXN0cnVjdCBpOTE1X2d1Y19jbGllbnQgKmV4ZWNidWZfY2xpZW50OworCisJREVDTEFS RV9CSVRNQVAoZG9vcmJlbGxfYml0bWFwLCBHVUNfTlVNX0RPT1JCRUxMUyk7CisJdWludDMyX3Qg ZGJfY2FjaGVsaW5lOwkJLyogQ3ljbGljIGNvdW50ZXIgbW9kIHBhZ2VzaXplCSovCisKKwkvKiBH dUMncyBGVyBzcGVjaWZpYyByZWdpc3RlcnMgdXNlZCBpbiBNTUlPIHNlbmQgKi8KKwlzdHJ1Y3Qg eworCQl1MzIgYmFzZTsKKwkJdW5zaWduZWQgaW50IGNvdW50OworCQllbnVtIGZvcmNld2FrZV9k b21haW5zIGZ3X2RvbWFpbnM7CisJfSBzZW5kX3JlZ3M7CisKKwkvKiBUbyBzZXJpYWxpemUgdGhl IGludGVsX2d1Y19zZW5kIGFjdGlvbnMgKi8KKwlzdHJ1Y3QgbXV0ZXggc2VuZF9tdXRleDsKKwor CS8qIEd1QydzIEZXIHNwZWNpZmljIHNlbmQgZnVuY3Rpb24gKi8KKwlpbnQgKCpzZW5kKShzdHJ1 Y3QgaW50ZWxfZ3VjICpndWMsIGNvbnN0IHUzMiAqZGF0YSwgdTMyIGxlbik7CisKKwkvKiBHdUMn cyBGVyBzcGVjaWZpYyBub3RpZnkgZnVuY3Rpb24gKi8KKwl2b2lkICgqbm90aWZ5KShzdHJ1Y3Qg aW50ZWxfZ3VjICpndWMpOworfTsKKworLyogaW50ZWxfZ3VjLmMgKi8KK2lubGluZSBpOTE1X3Jl Z190IGd1Y19zZW5kX3JlZyhzdHJ1Y3QgaW50ZWxfZ3VjICpndWMsIHUzMiBpKTsKK3ZvaWQgZ3Vj X2NhcHR1cmVfbG9hZF9lcnJfbG9nKHN0cnVjdCBpbnRlbF9ndWMgKmd1Yyk7Cit2b2lkIGd1Y19m cmVlX2xvYWRfZXJyX2xvZyhzdHJ1Y3QgaW50ZWxfZ3VjICpndWMpOworaW50IGd1Y19lbmFibGVf Y29tbXVuaWNhdGlvbihzdHJ1Y3QgaW50ZWxfZ3VjICpndWMpOwordm9pZCBndWNfZGlzYWJsZV9j b21tdW5pY2F0aW9uKHN0cnVjdCBpbnRlbF9ndWMgKmd1Yyk7Cit2b2lkIGludGVsX2d1Y19pbml0 X2Vhcmx5KHN0cnVjdCBpbnRlbF9ndWMgKmd1Yyk7CitpbnQgaW50ZWxfZ3VjX3NhbXBsZV9mb3Jj ZXdha2Uoc3RydWN0IGludGVsX2d1YyAqZ3VjKTsKK2ludCBpbnRlbF9ndWNfc2VuZF9ub3Aoc3Ry dWN0IGludGVsX2d1YyAqZ3VjLCBjb25zdCB1MzIgKmFjdGlvbiwgdTMyIGxlbik7CitpbnQgaW50 ZWxfZ3VjX3NlbmRfbW1pbyhzdHJ1Y3QgaW50ZWxfZ3VjICpndWMsIGNvbnN0IHUzMiAqYWN0aW9u LCB1MzIgbGVuKTsKKworc3RhdGljIGlubGluZSBpbnQgaW50ZWxfZ3VjX3NlbmQoc3RydWN0IGlu dGVsX2d1YyAqZ3VjLCBjb25zdCB1MzIgKmFjdGlvbiwKKwkJCQkgdTMyIGxlbikKK3sKKwlyZXR1 cm4gZ3VjLT5zZW5kKGd1YywgYWN0aW9uLCBsZW4pOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQg aW50ZWxfZ3VjX25vdGlmeShzdHJ1Y3QgaW50ZWxfZ3VjICpndWMpCit7CisJZ3VjLT5ub3RpZnko Z3VjKTsKK30KKworLyogaW50ZWxfZ3VjX2xvYWRlci5jICovCitpbnQgaW50ZWxfZ3VjX3NlbGVj dF9mdyhzdHJ1Y3QgaW50ZWxfZ3VjICpndWMpOworaW50IGludGVsX2d1Y19pbml0X2h3KHN0cnVj dCBpbnRlbF9ndWMgKmd1Yyk7CitpbnQgaW50ZWxfZ3VjX3N1c3BlbmQoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2KTsKK2ludCBpbnRlbF9ndWNfcmVzdW1lKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdik7Cit1MzIgaW50ZWxfZ3VjX3dvcGNtX3NpemUoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKKworLyogaTkxNV9ndWNfc3VibWlzc2lvbi5jICov CitpbnQgaTkxNV9ndWNfc3VibWlzc2lvbl9pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdik7CitpbnQgaTkxNV9ndWNfc3VibWlzc2lvbl9lbmFibGUoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2KTsKK2ludCBpOTE1X2d1Y193cV9yZXNlcnZlKHN0cnVjdCBkcm1f aTkxNV9nZW1fcmVxdWVzdCAqcnEpOwordm9pZCBpOTE1X2d1Y193cV91bnJlc2VydmUoc3RydWN0 IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXF1ZXN0KTsKK3ZvaWQgaTkxNV9ndWNfc3VibWlzc2lv bl9kaXNhYmxlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7Cit2b2lkIGk5MTVf Z3VjX3N1Ym1pc3Npb25fZmluaShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwor c3RydWN0IGk5MTVfdm1hICppbnRlbF9ndWNfYWxsb2NhdGVfdm1hKHN0cnVjdCBpbnRlbF9ndWMg Kmd1YywgdTMyIHNpemUpOworCisvKiBpbnRlbF9ndWNfbG9nLmMgKi8KK2ludCBpbnRlbF9ndWNf bG9nX2NyZWF0ZShzdHJ1Y3QgaW50ZWxfZ3VjICpndWMpOwordm9pZCBpbnRlbF9ndWNfbG9nX2Rl c3Ryb3koc3RydWN0IGludGVsX2d1YyAqZ3VjKTsKK2ludCBpOTE1X2d1Y19sb2dfY29udHJvbChz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHU2NCBjb250cm9sX3ZhbCk7Cit2b2lk IGk5MTVfZ3VjX2xvZ19yZWdpc3RlcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYp Owordm9pZCBpOTE1X2d1Y19sb2dfdW5yZWdpc3RlcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYpOworCitzdGF0aWMgaW5saW5lIHUzMiBndWNfZ2d0dF9vZmZzZXQoc3RydWN0IGk5 MTVfdm1hICp2bWEpCit7CisJdTMyIG9mZnNldCA9IGk5MTVfZ2d0dF9vZmZzZXQodm1hKTsKKwor CUdFTV9CVUdfT04ob2Zmc2V0IDwgR1VDX1dPUENNX1RPUCk7CisJR0VNX0JVR19PTihyYW5nZV9v dmVyZmxvd3NfdCh1NjQsIG9mZnNldCwgdm1hLT5zaXplLCBHVUNfR0dUVF9UT1ApKTsKKwlyZXR1 cm4gb2Zmc2V0OworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2d1Y19sb2FkZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Y19sb2Fk ZXIuYwppbmRleCA4YjBhZTdmLi44MWUwM2E2IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9ndWNfbG9hZGVyLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf Z3VjX2xvYWRlci5jCkBAIC0yNyw3ICsyNyw2IEBACiAgKiAgICBBbGV4IERhaSA8eXUuZGFpQGlu dGVsLmNvbT4KICAqLwogI2luY2x1ZGUgImk5MTVfZHJ2LmgiCi0jaW5jbHVkZSAiaW50ZWxfdWMu aCIKIAogLyoqCiAgKiBET0M6IEd1Qy1zcGVjaWZpYyBmaXJtd2FyZSBsb2FkZXIKZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2h1Yy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfaHVjLmMKaW5kZXggNjE0NWZhMC4uOGRiM2Q1YSAxMDA2NDQKLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfaHVjLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfaHVjLmMKQEAgLTIxLDkgKzIxLDcgQEAKICAqIElOIFRIRSBTT0ZUV0FSRS4KICAqCiAgKi8K LSNpbmNsdWRlIDxsaW51eC9maXJtd2FyZS5oPgogI2luY2x1ZGUgImk5MTVfZHJ2LmgiCi0jaW5j bHVkZSAiaW50ZWxfdWMuaCIKIAogLyoqCiAgKiBET0M6IEh1QyBGaXJtd2FyZQpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaHVjLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9odWMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YzQ2ODU3 Ci0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaHVjLmgKQEAg LTAsMCArMSwzOCBAQAorLyoKKyAqIENvcHlyaWdodCDCqSAyMDE3IEludGVsIENvcnBvcmF0aW9u CisgKgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRv IGFueSBwZXJzb24gb2J0YWluaW5nIGEKKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNz b2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCisgKiB0byBkZWFs IGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBs aW1pdGF0aW9uCisgKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVi bGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKKyAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0 aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQorICogU29mdHdh cmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0 aW9uczoKKyAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNz aW9uIG5vdGljZSAoaW5jbHVkaW5nIHRoZSBuZXh0CisgKiBwYXJhZ3JhcGgpIHNoYWxsIGJlIGlu Y2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlCisgKiBT b2Z0d2FyZS4KKyAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9V VCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgorICogSU1QTElFRCwgSU5DTFVESU5H IEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCisg KiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAg SU4gTk8gRVZFTlQgU0hBTEwKKyAqIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJF IExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCisgKiBMSUFCSUxJVFksIFdI RVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lO RworICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1Ig VEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUworICogSU4gVEhFIFNPRlRXQVJFLgorICoKKyAqLwor I2lmbmRlZiBfSU5URUxfSFVDX0hfCisjZGVmaW5lIF9JTlRFTF9IVUNfSF8KKworc3RydWN0IGlu dGVsX2h1YyB7CisJLyogR2VuZXJpYyB1QyBmaXJtd2FyZSBtYW5hZ2VtZW50ICovCisJc3RydWN0 IGludGVsX3VjX2Z3IGZ3OworCisJLyogSHVDLXNwZWNpZmljIGFkZGl0aW9ucyAqLworfTsKKwor LyogaW50ZWxfaHVjLmMgKi8KK3ZvaWQgaW50ZWxfaHVjX3NlbGVjdF9mdyhzdHJ1Y3QgaW50ZWxf aHVjICpodWMpOwordm9pZCBpbnRlbF9odWNfaW5pdF9odyhzdHJ1Y3QgaW50ZWxfaHVjICpodWMp Owordm9pZCBpbnRlbF9ndWNfYXV0aF9odWMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2KTsKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdWMu YyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3VjLmMKaW5kZXggMjdlMDcyYy4uOTVhZjQ1 ZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdWMuYworKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF91Yy5jCkBAIC0yMyw3ICsyMyw2IEBACiAgKi8KIAogI2lu Y2x1ZGUgImk5MTVfZHJ2LmgiCi0jaW5jbHVkZSAiaW50ZWxfdWMuaCIKICNpbmNsdWRlIDxsaW51 eC9maXJtd2FyZS5oPgogCiAvKiBDbGVhbnMgdXAgdUMgZmlybXdhcmUgYnkgcmVsZWFzaW5nIHRo ZSBmaXJtd2FyZSBHRU0gb2JqLgpAQCAtOTQsMjIgKzkzLDExIEBAIHZvaWQgaW50ZWxfdWNfc2Fu aXRpemVfb3B0aW9ucyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJCWk5MTUu ZW5hYmxlX2d1Y19zdWJtaXNzaW9uID0gSEFTX0dVQ19TQ0hFRChkZXZfcHJpdik7CiB9CiAKLXN0 YXRpYyB2b2lkIGd1Y193cml0ZV9pcnFfdHJpZ2dlcihzdHJ1Y3QgaW50ZWxfZ3VjICpndWMpCi17 Ci0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZ3VjX3RvX2k5MTUoZ3VjKTsK LQotCUk5MTVfV1JJVEUoR1VDX1NFTkRfSU5URVJSVVBULCBHVUNfU0VORF9UUklHR0VSKTsKLX0K LQogdm9pZCBpbnRlbF91Y19pbml0X2Vhcmx5KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdikKIHsKIAlzdHJ1Y3QgaW50ZWxfZ3VjICpndWMgPSAmZGV2X3ByaXYtPmd1YzsKIAotCWlu dGVsX2d1Y19jdF9pbml0X2Vhcmx5KCZndWMtPmN0KTsKLQotCW11dGV4X2luaXQoJmd1Yy0+c2Vu ZF9tdXRleCk7Ci0JZ3VjLT5zZW5kID0gaW50ZWxfZ3VjX3NlbmRfbm9wOwotCWd1Yy0+bm90aWZ5 ID0gZ3VjX3dyaXRlX2lycV90cmlnZ2VyOworCWludGVsX2d1Y19pbml0X2Vhcmx5KGd1Yyk7CiB9 CiAKIHN0YXRpYyB2b2lkIGZldGNoX3VjX2Z3KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiwKQEAgLTI2Miw3MiArMjUwLDYgQEAgdm9pZCBpbnRlbF91Y19maW5pX2Z3KHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAlfX2ludGVsX3VjX2Z3X2ZpbmkoJmRldl9wcml2 LT5odWMuZncpOwogfQogCi1zdGF0aWMgaW5saW5lIGk5MTVfcmVnX3QgZ3VjX3NlbmRfcmVnKHN0 cnVjdCBpbnRlbF9ndWMgKmd1YywgdTMyIGkpCi17Ci0JR0VNX0JVR19PTighZ3VjLT5zZW5kX3Jl Z3MuYmFzZSk7Ci0JR0VNX0JVR19PTighZ3VjLT5zZW5kX3JlZ3MuY291bnQpOwotCUdFTV9CVUdf T04oaSA+PSBndWMtPnNlbmRfcmVncy5jb3VudCk7Ci0KLQlyZXR1cm4gX01NSU8oZ3VjLT5zZW5k X3JlZ3MuYmFzZSArIDQgKiBpKTsKLX0KLQotc3RhdGljIHZvaWQgZ3VjX2luaXRfc2VuZF9yZWdz KHN0cnVjdCBpbnRlbF9ndWMgKmd1YykKLXsKLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYgPSBndWNfdG9faTkxNShndWMpOwotCWVudW0gZm9yY2V3YWtlX2RvbWFpbnMgZndfZG9t YWlucyA9IDA7Ci0JdW5zaWduZWQgaW50IGk7Ci0KLQlndWMtPnNlbmRfcmVncy5iYXNlID0gaTkx NV9tbWlvX3JlZ19vZmZzZXQoU09GVF9TQ1JBVENIKDApKTsKLQlndWMtPnNlbmRfcmVncy5jb3Vu dCA9IFNPRlRfU0NSQVRDSF9DT1VOVCAtIDE7Ci0KLQlmb3IgKGkgPSAwOyBpIDwgZ3VjLT5zZW5k X3JlZ3MuY291bnQ7IGkrKykgewotCQlmd19kb21haW5zIHw9IGludGVsX3VuY29yZV9mb3JjZXdh a2VfZm9yX3JlZyhkZXZfcHJpdiwKLQkJCQkJZ3VjX3NlbmRfcmVnKGd1YywgaSksCi0JCQkJCUZX X1JFR19SRUFEIHwgRldfUkVHX1dSSVRFKTsKLQl9Ci0JZ3VjLT5zZW5kX3JlZ3MuZndfZG9tYWlu cyA9IGZ3X2RvbWFpbnM7Ci19Ci0KLXN0YXRpYyB2b2lkIGd1Y19jYXB0dXJlX2xvYWRfZXJyX2xv ZyhzdHJ1Y3QgaW50ZWxfZ3VjICpndWMpCi17Ci0JaWYgKCFndWMtPmxvZy52bWEgfHwgaTkxNS5n dWNfbG9nX2xldmVsIDwgMCkKLQkJcmV0dXJuOwotCi0JaWYgKCFndWMtPmxvYWRfZXJyX2xvZykK LQkJZ3VjLT5sb2FkX2Vycl9sb2cgPSBpOTE1X2dlbV9vYmplY3RfZ2V0KGd1Yy0+bG9nLnZtYS0+ b2JqKTsKLQotCXJldHVybjsKLX0KLQotc3RhdGljIHZvaWQgZ3VjX2ZyZWVfbG9hZF9lcnJfbG9n KHN0cnVjdCBpbnRlbF9ndWMgKmd1YykKLXsKLQlpZiAoZ3VjLT5sb2FkX2Vycl9sb2cpCi0JCWk5 MTVfZ2VtX29iamVjdF9wdXQoZ3VjLT5sb2FkX2Vycl9sb2cpOwotfQotCi1zdGF0aWMgaW50IGd1 Y19lbmFibGVfY29tbXVuaWNhdGlvbihzdHJ1Y3QgaW50ZWxfZ3VjICpndWMpCi17Ci0Jc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZ3VjX3RvX2k5MTUoZ3VjKTsKLQotCWd1Y19p bml0X3NlbmRfcmVncyhndWMpOwotCi0JaWYgKEhBU19HVUNfQ1QoZGV2X3ByaXYpKQotCQlyZXR1 cm4gaW50ZWxfZ3VjX2VuYWJsZV9jdChndWMpOwotCi0JZ3VjLT5zZW5kID0gaW50ZWxfZ3VjX3Nl bmRfbW1pbzsKLQlyZXR1cm4gMDsKLX0KLQotc3RhdGljIHZvaWQgZ3VjX2Rpc2FibGVfY29tbXVu aWNhdGlvbihzdHJ1Y3QgaW50ZWxfZ3VjICpndWMpCi17Ci0Jc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2ID0gZ3VjX3RvX2k5MTUoZ3VjKTsKLQotCWlmIChIQVNfR1VDX0NUKGRldl9w cml2KSkKLQkJaW50ZWxfZ3VjX2Rpc2FibGVfY3QoZ3VjKTsKLQotCWd1Yy0+c2VuZCA9IGludGVs X2d1Y19zZW5kX25vcDsKLX0KLQogaW50IGludGVsX3VjX2luaXRfaHcoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2KQogewogCXN0cnVjdCBpbnRlbF9ndWMgKmd1YyA9ICZkZXZfcHJp di0+Z3VjOwpAQCAtNDU4LDgyICszODAsMyBAQCB2b2lkIGludGVsX3VjX2ZpbmlfaHcoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCiAJaTkxNV9nZ3R0X2Rpc2FibGVfZ3VjKGRl dl9wcml2KTsKIH0KLQotaW50IGludGVsX2d1Y19zZW5kX25vcChzdHJ1Y3QgaW50ZWxfZ3VjICpn dWMsIGNvbnN0IHUzMiAqYWN0aW9uLCB1MzIgbGVuKQotewotCVdBUk4oMSwgIlVuZXhwZWN0ZWQg c2VuZDogYWN0aW9uPSUjeFxuIiwgKmFjdGlvbik7Ci0JcmV0dXJuIC1FTk9ERVY7Ci19Ci0KLS8q Ci0gKiBUaGlzIGZ1bmN0aW9uIGltcGxlbWVudHMgdGhlIE1NSU8gYmFzZWQgaG9zdCB0byBHdUMg aW50ZXJmYWNlLgotICovCi1pbnQgaW50ZWxfZ3VjX3NlbmRfbW1pbyhzdHJ1Y3QgaW50ZWxfZ3Vj ICpndWMsIGNvbnN0IHUzMiAqYWN0aW9uLCB1MzIgbGVuKQotewotCXN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiA9IGd1Y190b19pOTE1KGd1Yyk7Ci0JdTMyIHN0YXR1czsKLQlpbnQg aTsKLQlpbnQgcmV0OwotCi0JR0VNX0JVR19PTighbGVuKTsKLQlHRU1fQlVHX09OKGxlbiA+IGd1 Yy0+c2VuZF9yZWdzLmNvdW50KTsKLQotCS8qIElmIENUIGlzIGF2YWlsYWJsZSwgd2UgZXhwZWN0 IHRvIHVzZSBNTUlPIG9ubHkgZHVyaW5nIGluaXQvZmluaSAqLwotCUdFTV9CVUdfT04oSEFTX0dV Q19DVChkZXZfcHJpdikgJiYKLQkJKmFjdGlvbiAhPSBJTlRFTF9HVUNfQUNUSU9OX1JFR0lTVEVS X0NPTU1BTkRfVFJBTlNQT1JUX0JVRkZFUiAmJgotCQkqYWN0aW9uICE9IElOVEVMX0dVQ19BQ1RJ T05fREVSRUdJU1RFUl9DT01NQU5EX1RSQU5TUE9SVF9CVUZGRVIpOwotCi0JbXV0ZXhfbG9jaygm Z3VjLT5zZW5kX211dGV4KTsKLQlpbnRlbF91bmNvcmVfZm9yY2V3YWtlX2dldChkZXZfcHJpdiwg Z3VjLT5zZW5kX3JlZ3MuZndfZG9tYWlucyk7Ci0KLQlmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKysp Ci0JCUk5MTVfV1JJVEUoZ3VjX3NlbmRfcmVnKGd1YywgaSksIGFjdGlvbltpXSk7Ci0KLQlQT1NU SU5HX1JFQUQoZ3VjX3NlbmRfcmVnKGd1YywgaSAtIDEpKTsKLQotCWludGVsX2d1Y19ub3RpZnko Z3VjKTsKLQotCS8qCi0JICogTm8gR3VDIGNvbW1hbmQgc2hvdWxkIGV2ZXIgdGFrZSBsb25nZXIg dGhhbiAxMG1zLgotCSAqIEZhc3QgY29tbWFuZHMgc2hvdWxkIHN0aWxsIGNvbXBsZXRlIGluIDEw dXMuCi0JICovCi0JcmV0ID0gX19pbnRlbF93YWl0X2Zvcl9yZWdpc3Rlcl9mdyhkZXZfcHJpdiwK LQkJCQkJICAgZ3VjX3NlbmRfcmVnKGd1YywgMCksCi0JCQkJCSAgIElOVEVMX0dVQ19SRUNWX01B U0ssCi0JCQkJCSAgIElOVEVMX0dVQ19SRUNWX01BU0ssCi0JCQkJCSAgIDEwLCAxMCwgJnN0YXR1 cyk7Ci0JaWYgKHN0YXR1cyAhPSBJTlRFTF9HVUNfU1RBVFVTX1NVQ0NFU1MpIHsKLQkJLyoKLQkJ ICogRWl0aGVyIHRoZSBHdUMgZXhwbGljaXRseSByZXR1cm5lZCBhbiBlcnJvciAod2hpY2gKLQkJ ICogd2UgY29udmVydCB0byAtRUlPIGhlcmUpIG9yIG5vIHJlc3BvbnNlIGF0IGFsbCB3YXMKLQkJ ICogcmVjZWl2ZWQgd2l0aGluIHRoZSB0aW1lb3V0IGxpbWl0ICgtRVRJTUVET1VUKQotCQkgKi8K LQkJaWYgKHJldCAhPSAtRVRJTUVET1VUKQotCQkJcmV0ID0gLUVJTzsKLQotCQlEUk1fV0FSTigi SU5URUxfR1VDX1NFTkQ6IEFjdGlvbiAweCVYIGZhaWxlZDsiCi0JCQkgIiByZXQ9JWQgc3RhdHVz PTB4JTA4WCByZXNwb25zZT0weCUwOFhcbiIsCi0JCQkgYWN0aW9uWzBdLCByZXQsIHN0YXR1cywg STkxNV9SRUFEKFNPRlRfU0NSQVRDSCgxNSkpKTsKLQl9Ci0KLQlpbnRlbF91bmNvcmVfZm9yY2V3 YWtlX3B1dChkZXZfcHJpdiwgZ3VjLT5zZW5kX3JlZ3MuZndfZG9tYWlucyk7Ci0JbXV0ZXhfdW5s b2NrKCZndWMtPnNlbmRfbXV0ZXgpOwotCi0JcmV0dXJuIHJldDsKLX0KLQotaW50IGludGVsX2d1 Y19zYW1wbGVfZm9yY2V3YWtlKHN0cnVjdCBpbnRlbF9ndWMgKmd1YykKLXsKLQlzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBndWNfdG9faTkxNShndWMpOwotCXUzMiBhY3Rpb25b Ml07Ci0KLQlhY3Rpb25bMF0gPSBJTlRFTF9HVUNfQUNUSU9OX1NBTVBMRV9GT1JDRVdBS0U7Ci0J LyogV2FSc0Rpc2FibGVDb2Fyc2VQb3dlckdhdGluZzpza2wsYnh0ICovCi0JaWYgKCFpbnRlbF9l bmFibGVfcmM2KCkgfHwgTkVFRFNfV2FSc0Rpc2FibGVDb2Fyc2VQb3dlckdhdGluZyhkZXZfcHJp dikpCi0JCWFjdGlvblsxXSA9IDA7Ci0JZWxzZQotCQkvKiBiaXQgMCBhbmQgMSBhcmUgZm9yIFJl bmRlciBhbmQgTWVkaWEgZG9tYWluIHNlcGFyYXRlbHkgKi8KLQkJYWN0aW9uWzFdID0gR1VDX0ZP UkNFV0FLRV9SRU5ERVIgfCBHVUNfRk9SQ0VXQUtFX01FRElBOwotCi0JcmV0dXJuIGludGVsX2d1 Y19zZW5kKGd1YywgYWN0aW9uLCBBUlJBWV9TSVpFKGFjdGlvbikpOwotfQpkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdWMuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX3VjLmgKaW5kZXggMjJhZTUyYi4uMTM0NjBmOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfdWMuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF91Yy5o CkBAIC0yNCw3MiArMjQsNiBAQAogI2lmbmRlZiBfSU5URUxfVUNfSF8KICNkZWZpbmUgX0lOVEVM X1VDX0hfCiAKLSNpbmNsdWRlICJpbnRlbF9ndWNfZndpZi5oIgotI2luY2x1ZGUgImk5MTVfZ3Vj X3JlZy5oIgotI2luY2x1ZGUgImludGVsX3JpbmdidWZmZXIuaCIKLSNpbmNsdWRlICJpbnRlbF9n dWNfY3QuaCIKLSNpbmNsdWRlICJpOTE1X3ZtYS5oIgotCi1zdHJ1Y3QgZHJtX2k5MTVfZ2VtX3Jl cXVlc3Q7Ci0KLS8qCi0gKiBUaGlzIHN0cnVjdHVyZSBwcmltYXJpbHkgZGVzY3JpYmVzIHRoZSBH RU0gb2JqZWN0IHNoYXJlZCB3aXRoIHRoZSBHdUMuCi0gKiBUaGUgc3BlY3Mgc29tZXRpbWVzIHJl ZmVyIHRvIHRoaXMgb2JqZWN0IGFzIGEgIkd1QyBjb250ZXh0IiwgYnV0IHdlIHVzZQotICogdGhl IHRlcm0gImNsaWVudCIgdG8gYXZvaWQgY29uZnVzaW9uIHdpdGggaGFyZHdhcmUgY29udGV4dHMu IFRoaXMKLSAqIEdFTSBvYmplY3QgaXMgaGVsZCBmb3IgdGhlIGVudGlyZSBsaWZldGltZSBvZiBv dXIgaW50ZXJhY3Rpb24gd2l0aAotICogdGhlIEd1QywgYmVpbmcgYWxsb2NhdGVkIGJlZm9yZSB0 aGUgR3VDIGlzIGxvYWRlZCB3aXRoIGl0cyBmaXJtd2FyZS4KLSAqIEJlY2F1c2UgdGhlcmUncyBu byB3YXkgdG8gdXBkYXRlIHRoZSBhZGRyZXNzIHVzZWQgYnkgdGhlIEd1QyBhZnRlcgotICogaW5p dGlhbGlzYXRpb24sIHRoZSBzaGFyZWQgb2JqZWN0IG11c3Qgc3RheSBwaW5uZWQgaW50byB0aGUg R0dUVCBhcwotICogbG9uZyBhcyB0aGUgR3VDIGlzIGluIHVzZS4gV2UgYWxzbyBrZWVwIHRoZSBm aXJzdCBwYWdlIChvbmx5KSBtYXBwZWQKLSAqIGludG8ga2VybmVsIGFkZHJlc3Mgc3BhY2UsIGFz IGl0IGluY2x1ZGVzIHNoYXJlZCBkYXRhIHRoYXQgbXVzdCBiZQotICogdXBkYXRlZCBvbiBldmVy eSByZXF1ZXN0IHN1Ym1pc3Npb24uCi0gKgotICogVGhlIHNpbmdsZSBHRU0gb2JqZWN0IGRlc2Ny aWJlZCBoZXJlIGlzIGFjdHVhbGx5IG1hZGUgdXAgb2Ygc2V2ZXJhbAotICogc2VwYXJhdGUgYXJl YXMsIGFzIGZhciBhcyB0aGUgR3VDIGlzIGNvbmNlcm5lZC4gVGhlIGZpcnN0IHBhZ2UgKGtlcHQK LSAqIGttYXAnZCkgaW5jbHVkZXMgdGhlICJwcm9jZXNzIGRlc2NyaXB0b3IiIHdoaWNoIGhvbGRz IHNlcXVlbmNlIGRhdGEgZm9yCi0gKiB0aGUgZG9vcmJlbGwsIGFuZCBvbmUgY2FjaGVsaW5lIHdo aWNoIGFjdHVhbGx5ICppcyogdGhlIGRvb3JiZWxsOyBhCi0gKiB3cml0ZSB0byB0aGlzIHdpbGwg InJpbmcgdGhlIGRvb3JiZWxsIiAoaS5lLiBzZW5kIGFuIGludGVycnVwdCB0byB0aGUKLSAqIEd1 QykuIFRoZSBzdWJzZXF1ZW50ICBwYWdlcyBvZiB0aGUgY2xpZW50IG9iamVjdCBjb25zdGl0dXRl IHRoZSB3b3JrCi0gKiBxdWV1ZSAoYSBjaXJjdWxhciBhcnJheSBvZiB3b3JrIGl0ZW1zKSwgYWdh aW4gZGVzY3JpYmVkIGluIHRoZSBwcm9jZXNzCi0gKiBkZXNjcmlwdG9yLiBXb3JrIHF1ZXVlIHBh Z2VzIGFyZSBtYXBwZWQgbW9tZW50YXJpbHkgYXMgcmVxdWlyZWQuCi0gKgotICogV2UgYWxzbyBr ZWVwIGEgZmV3IHN0YXRpc3RpY3Mgb24gZmFpbHVyZXMuIElkZWFsbHksIHRoZXNlIHNob3VsZCBh bGwKLSAqIGJlIHplcm8hCi0gKiAgIG5vX3dxX3NwYWNlOiB0aW1lcyB0aGF0IHRoZSBzdWJtaXNz aW9uIHByZS1jaGVjayBmb3VuZCBubyBzcGFjZSB3YXMKLSAqICAgICAgICAgICAgICAgIGF2YWls YWJsZSBpbiB0aGUgd29yayBxdWV1ZSAobm90ZSwgdGhlIHF1ZXVlIGlzIHNoYXJlZCwKLSAqICAg ICAgICAgICAgICAgIG5vdCBwZXItZW5naW5lKS4gSXQgaXMgT0sgZm9yIHRoaXMgdG8gYmUgbm9u emVybywgYnV0Ci0gKiAgICAgICAgICAgICAgICBpdCBzaG91bGQgbm90IGJlIGh1Z2UhCi0gKiAg IGJfZmFpbDogZmFpbGVkIHRvIHJpbmcgdGhlIGRvb3JiZWxsLiBUaGlzIHNob3VsZCBuZXZlciBo YXBwZW4sIHVubGVzcwotICogICAgICAgICAgIHNvbWVob3cgdGhlIGhhcmR3YXJlIG1pc2JlaGF2 ZXMsIG9yIG1heWJlIGlmIHRoZSBHdUMgZmlybXdhcmUKLSAqICAgICAgICAgICBjcmFzaGVzPyBX ZSBwcm9iYWJseSBuZWVkIHRvIHJlc2V0IHRoZSBHUFUgdG8gcmVjb3Zlci4KLSAqICAgcmV0Y29k ZTogZXJybm8gZnJvbSBsYXN0IGd1Y19zdWJtaXQoKQotICovCi1zdHJ1Y3QgaTkxNV9ndWNfY2xp ZW50IHsKLQlzdHJ1Y3QgaTkxNV92bWEgKnZtYTsKLQl2b2lkICp2YWRkcjsKLQlzdHJ1Y3QgaTkx NV9nZW1fY29udGV4dCAqb3duZXI7Ci0Jc3RydWN0IGludGVsX2d1YyAqZ3VjOwotCi0JdWludDMy X3QgZW5naW5lczsJCS8qIGJpdG1hcCBvZiAoaG9zdCkgZW5naW5lIGlkcwkqLwotCXVpbnQzMl90 IHByaW9yaXR5OwotCXUzMiBzdGFnZV9pZDsKLQl1aW50MzJfdCBwcm9jX2Rlc2Nfb2Zmc2V0Owot Ci0JdTE2IGRvb3JiZWxsX2lkOwotCXVuc2lnbmVkIGxvbmcgZG9vcmJlbGxfb2Zmc2V0OwotCXUz MiBkb29yYmVsbF9jb29raWU7Ci0KLQlzcGlubG9ja190IHdxX2xvY2s7Ci0JdWludDMyX3Qgd3Ff b2Zmc2V0OwotCXVpbnQzMl90IHdxX3NpemU7Ci0JdWludDMyX3Qgd3FfdGFpbDsKLQl1aW50MzJf dCB3cV9yc3ZkOwotCXVpbnQzMl90IG5vX3dxX3NwYWNlOwotCi0JLyogUGVyLWVuZ2luZSBjb3Vu dHMgb2YgR3VDIHN1Ym1pc3Npb25zICovCi0JdWludDY0X3Qgc3VibWlzc2lvbnNbSTkxNV9OVU1f RU5HSU5FU107Ci19OwotCiBlbnVtIGludGVsX3VjX2Z3X3N0YXR1cyB7CiAJSU5URUxfVUNfRklS TVdBUkVfRkFJTCA9IC0xLAogCUlOVEVMX1VDX0ZJUk1XQVJFX05PTkUgPSAwLApAQCAtMTU2LDY5 ICs5MCw2IEBAIHN0cnVjdCBpbnRlbF91Y19mdyB7CiAJdWludDMyX3QgdWNvZGVfb2Zmc2V0Owog fTsKIAotc3RydWN0IGludGVsX2d1Y19sb2cgewotCXVpbnQzMl90IGZsYWdzOwotCXN0cnVjdCBp OTE1X3ZtYSAqdm1hOwotCS8qIFRoZSBydW50aW1lIHN0dWZmIGdldHMgY3JlYXRlZCBvbmx5IHdo ZW4gR3VDIGxvZ2dpbmcgZ2V0cyBlbmFibGVkICovCi0Jc3RydWN0IHsKLQkJdm9pZCAqYnVmX2Fk ZHI7Ci0JCXN0cnVjdCB3b3JrcXVldWVfc3RydWN0ICpmbHVzaF93cTsKLQkJc3RydWN0IHdvcmtf c3RydWN0IGZsdXNoX3dvcms7Ci0JCXN0cnVjdCByY2hhbiAqcmVsYXlfY2hhbjsKLQl9IHJ1bnRp bWU7Ci0JLyogbG9nZ2luZyByZWxhdGVkIHN0YXRzICovCi0JdTMyIGNhcHR1cmVfbWlzc19jb3Vu dDsKLQl1MzIgZmx1c2hfaW50ZXJydXB0X2NvdW50OwotCXUzMiBwcmV2X292ZXJmbG93X2NvdW50 W0dVQ19NQVhfTE9HX0JVRkZFUl07Ci0JdTMyIHRvdGFsX292ZXJmbG93X2NvdW50W0dVQ19NQVhf TE9HX0JVRkZFUl07Ci0JdTMyIGZsdXNoX2NvdW50W0dVQ19NQVhfTE9HX0JVRkZFUl07Ci19Owot Ci1zdHJ1Y3QgaW50ZWxfZ3VjIHsKLQlzdHJ1Y3QgaW50ZWxfdWNfZncgZnc7Ci0Jc3RydWN0IGlu dGVsX2d1Y19sb2cgbG9nOwotCXN0cnVjdCBpbnRlbF9ndWNfY3QgY3Q7Ci0KLQkvKiBMb2cgc25h cHNob3QgaWYgR3VDIGVycm9ycyBkdXJpbmcgbG9hZCAqLwotCXN0cnVjdCBkcm1faTkxNV9nZW1f b2JqZWN0ICpsb2FkX2Vycl9sb2c7Ci0KLQkvKiBpbnRlbF9ndWNfcmVjdiBpbnRlcnJ1cHQgcmVs YXRlZCBzdGF0ZSAqLwotCWJvb2wgaW50ZXJydXB0c19lbmFibGVkOwotCi0Jc3RydWN0IGk5MTVf dm1hICphZHNfdm1hOwotCXN0cnVjdCBpOTE1X3ZtYSAqc3RhZ2VfZGVzY19wb29sOwotCXZvaWQg KnN0YWdlX2Rlc2NfcG9vbF92YWRkcjsKLQlzdHJ1Y3QgaWRhIHN0YWdlX2lkczsKLQotCXN0cnVj dCBpOTE1X2d1Y19jbGllbnQgKmV4ZWNidWZfY2xpZW50OwotCi0JREVDTEFSRV9CSVRNQVAoZG9v cmJlbGxfYml0bWFwLCBHVUNfTlVNX0RPT1JCRUxMUyk7Ci0JdWludDMyX3QgZGJfY2FjaGVsaW5l OwkJLyogQ3ljbGljIGNvdW50ZXIgbW9kIHBhZ2VzaXplCSovCi0KLQkvKiBHdUMncyBGVyBzcGVj aWZpYyByZWdpc3RlcnMgdXNlZCBpbiBNTUlPIHNlbmQgKi8KLQlzdHJ1Y3QgewotCQl1MzIgYmFz ZTsKLQkJdW5zaWduZWQgaW50IGNvdW50OwotCQllbnVtIGZvcmNld2FrZV9kb21haW5zIGZ3X2Rv bWFpbnM7Ci0JfSBzZW5kX3JlZ3M7Ci0KLQkvKiBUbyBzZXJpYWxpemUgdGhlIGludGVsX2d1Y19z ZW5kIGFjdGlvbnMgKi8KLQlzdHJ1Y3QgbXV0ZXggc2VuZF9tdXRleDsKLQotCS8qIEd1QydzIEZX IHNwZWNpZmljIHNlbmQgZnVuY3Rpb24gKi8KLQlpbnQgKCpzZW5kKShzdHJ1Y3QgaW50ZWxfZ3Vj ICpndWMsIGNvbnN0IHUzMiAqZGF0YSwgdTMyIGxlbik7Ci0KLQkvKiBHdUMncyBGVyBzcGVjaWZp YyBub3RpZnkgZnVuY3Rpb24gKi8KLQl2b2lkICgqbm90aWZ5KShzdHJ1Y3QgaW50ZWxfZ3VjICpn dWMpOwotfTsKLQotc3RydWN0IGludGVsX2h1YyB7Ci0JLyogR2VuZXJpYyB1QyBmaXJtd2FyZSBt YW5hZ2VtZW50ICovCi0Jc3RydWN0IGludGVsX3VjX2Z3IGZ3OwotCi0JLyogSHVDLXNwZWNpZmlj IGFkZGl0aW9ucyAqLwotfTsKLQogLyogaW50ZWxfdWMuYyAqLwogdm9pZCBpbnRlbF91Y19zYW5p dGl6ZV9vcHRpb25zKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7CiB2b2lkIGlu dGVsX3VjX2luaXRfZWFybHkoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKQEAg LTIyNiw1NCArOTcsNSBAQCBzdHJ1Y3QgaW50ZWxfaHVjIHsKIHZvaWQgaW50ZWxfdWNfZmluaV9m dyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwogaW50IGludGVsX3VjX2luaXRf aHcoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKIHZvaWQgaW50ZWxfdWNfZmlu aV9odyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwotaW50IGludGVsX2d1Y19z YW1wbGVfZm9yY2V3YWtlKHN0cnVjdCBpbnRlbF9ndWMgKmd1Yyk7Ci1pbnQgaW50ZWxfZ3VjX3Nl bmRfbm9wKHN0cnVjdCBpbnRlbF9ndWMgKmd1YywgY29uc3QgdTMyICphY3Rpb24sIHUzMiBsZW4p OwotaW50IGludGVsX2d1Y19zZW5kX21taW8oc3RydWN0IGludGVsX2d1YyAqZ3VjLCBjb25zdCB1 MzIgKmFjdGlvbiwgdTMyIGxlbik7Ci0KLXN0YXRpYyBpbmxpbmUgaW50IGludGVsX2d1Y19zZW5k KHN0cnVjdCBpbnRlbF9ndWMgKmd1YywgY29uc3QgdTMyICphY3Rpb24sIHUzMiBsZW4pCi17Ci0J cmV0dXJuIGd1Yy0+c2VuZChndWMsIGFjdGlvbiwgbGVuKTsKLX0KLQotc3RhdGljIGlubGluZSB2 b2lkIGludGVsX2d1Y19ub3RpZnkoc3RydWN0IGludGVsX2d1YyAqZ3VjKQotewotCWd1Yy0+bm90 aWZ5KGd1Yyk7Ci19Ci0KLS8qIGludGVsX2d1Y19sb2FkZXIuYyAqLwotaW50IGludGVsX2d1Y19z ZWxlY3RfZncoc3RydWN0IGludGVsX2d1YyAqZ3VjKTsKLWludCBpbnRlbF9ndWNfaW5pdF9odyhz dHJ1Y3QgaW50ZWxfZ3VjICpndWMpOwotaW50IGludGVsX2d1Y19zdXNwZW5kKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdik7Ci1pbnQgaW50ZWxfZ3VjX3Jlc3VtZShzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwotdTMyIGludGVsX2d1Y193b3BjbV9zaXplKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7Ci0KLS8qIGk5MTVfZ3VjX3N1Ym1pc3Npb24u YyAqLwotaW50IGk5MTVfZ3VjX3N1Ym1pc3Npb25faW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYpOwotaW50IGk5MTVfZ3VjX3N1Ym1pc3Npb25fZW5hYmxlKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdik7Ci1pbnQgaTkxNV9ndWNfd3FfcmVzZXJ2ZShzdHJ1Y3Qg ZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJxKTsKLXZvaWQgaTkxNV9ndWNfd3FfdW5yZXNlcnZlKHN0 cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxdWVzdCk7Ci12b2lkIGk5MTVfZ3VjX3N1Ym1p c3Npb25fZGlzYWJsZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwotdm9pZCBp OTE1X2d1Y19zdWJtaXNzaW9uX2Zpbmkoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 KTsKLXN0cnVjdCBpOTE1X3ZtYSAqaW50ZWxfZ3VjX2FsbG9jYXRlX3ZtYShzdHJ1Y3QgaW50ZWxf Z3VjICpndWMsIHUzMiBzaXplKTsKLQotLyogaW50ZWxfZ3VjX2xvZy5jICovCi1pbnQgaW50ZWxf Z3VjX2xvZ19jcmVhdGUoc3RydWN0IGludGVsX2d1YyAqZ3VjKTsKLXZvaWQgaW50ZWxfZ3VjX2xv Z19kZXN0cm95KHN0cnVjdCBpbnRlbF9ndWMgKmd1Yyk7Ci1pbnQgaTkxNV9ndWNfbG9nX2NvbnRy b2woc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1NjQgY29udHJvbF92YWwpOwot dm9pZCBpOTE1X2d1Y19sb2dfcmVnaXN0ZXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2KTsKLXZvaWQgaTkxNV9ndWNfbG9nX3VucmVnaXN0ZXIoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2KTsKLQotc3RhdGljIGlubGluZSB1MzIgZ3VjX2dndHRfb2Zmc2V0KHN0cnVj dCBpOTE1X3ZtYSAqdm1hKQotewotCXUzMiBvZmZzZXQgPSBpOTE1X2dndHRfb2Zmc2V0KHZtYSk7 Ci0JR0VNX0JVR19PTihvZmZzZXQgPCBHVUNfV09QQ01fVE9QKTsKLQlHRU1fQlVHX09OKHJhbmdl X292ZXJmbG93c190KHU2NCwgb2Zmc2V0LCB2bWEtPnNpemUsIEdVQ19HR1RUX1RPUCkpOwotCXJl dHVybiBvZmZzZXQ7Ci19Ci0KLS8qIGludGVsX2h1Yy5jICovCi12b2lkIGludGVsX2h1Y19zZWxl Y3RfZncoc3RydWN0IGludGVsX2h1YyAqaHVjKTsKLXZvaWQgaW50ZWxfaHVjX2luaXRfaHcoc3Ry dWN0IGludGVsX2h1YyAqaHVjKTsKLXZvaWQgaW50ZWxfZ3VjX2F1dGhfaHVjKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdik7CiAKICNlbmRpZgotLSAKMS45LjEKCl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxp c3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNr dG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=