From mboxrd@z Thu Jan 1 00:00:00 1970 From: Alex Deucher Subject: [PATCH 07/51] drm/amd/powerplay: add basic powerplay framework Date: Thu, 12 Nov 2015 01:17:57 -0500 Message-ID: <1447309121-2480-8-git-send-email-alexander.deucher@amd.com> References: <1447309121-2480-1-git-send-email-alexander.deucher@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-qk0-f171.google.com (mail-qk0-f171.google.com [209.85.220.171]) by gabe.freedesktop.org (Postfix) with ESMTPS id B89487A085 for ; Wed, 11 Nov 2015 22:19:04 -0800 (PST) Received: by qkcl124 with SMTP id l124so20252171qkc.3 for ; Wed, 11 Nov 2015 22:19:04 -0800 (PST) In-Reply-To: <1447309121-2480-1-git-send-email-alexander.deucher@amd.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: dri-devel@lists.freedesktop.org Cc: Rex Zhu List-Id: dri-devel@lists.freedesktop.org RnJvbTogUmV4IFpodSA8UmV4LlpodUBhbWQuY29tPgoKYW1kZ3B1X3BwX2lwX2Z1bmNzIGlzIGlu dHJvZHVjZWQgdG8gaGFuZGxlIHRoZSB0d28gY29kZSBwYXRocywKdGhlIGxlZ2FjeSBvbmUgYW5k IHRoZSBuZXcgcG93ZXJwbGF5IGltcGxlbWVudGF0aW9uLgoKQ09ORklHX0RSTV9BTURfUE9XRVJQ TEFZIGtlcm5lbCBjb25maWd1cmF0aW9uIG9wdGlvbiBpcwppbnRyb2R1Y2VkIGZvciB0aGUgcG93 ZXJwbGF5IGNvbXBvbmVudC4KCnY0OiBzcXVhc2ggaW4gZml4ZXMKdjM6IHJlZ2lzdGVyIGRlYnVn ZnMgZmlsZSB3aGVuIHBvd2VycGxheSBtb2R1bGUgZW5hYmxlCnYyOiBhZGQgYW1kZ3B1X3Vjb2Rl X2luaXRfYm8gaW4gaHcgaW5pdCB3aGVuIGFtZGdwdV9wb3dlcnBsYXkgZW5hYmxlLgoKU2lnbmVk LW9mZi1ieTogUmV4IFpodSA8UmV4LlpodUBhbWQuY29tPgpTaWduZWQtb2ZmLWJ5OiBKYW1teSBa aG91IDxKYW1teS5aaG91QGFtZC5jb20+ClJldmlld2VkLWJ5OiBBbGV4IERldWNoZXIgPGFsZXhh bmRlci5kZXVjaGVyQGFtZC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL0tjb25maWcgICAgICAg ICAgICAgICAgICAgICAgICAgICB8ICAgMSArCiBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9N YWtlZmlsZSAgICAgICAgICAgICAgIHwgIDEyICstCiBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdw dS9hbWRncHUuaCAgICAgICAgICAgICAgIHwgICA1ICsKIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1k Z3B1L2FtZGdwdV9kcnYuYyAgICAgICAgICAgfCAgIDEgKwogZHJpdmVycy9ncHUvZHJtL2FtZC9h bWRncHUvYW1kZ3B1X3Bvd2VycGxheS5jICAgICB8IDI4MCArKysrKysrKysrKysrKysrKysrKysr CiBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfcG93ZXJwbGF5LmggICAgIHwgIDMz ICsrKwogZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvY2lrLmMgICAgICAgICAgICAgICAgICB8 ICAxMSArLQogZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvdmkuYyAgICAgICAgICAgICAgICAg ICB8ICAgNyArLQogZHJpdmVycy9ncHUvZHJtL2FtZC9wb3dlcnBsYXkvS2NvbmZpZyAgICAgICAg ICAgICB8ICAgNiArCiBkcml2ZXJzL2dwdS9kcm0vYW1kL3Bvd2VycGxheS9NYWtlZmlsZSAgICAg ICAgICAgIHwgIDE1ICsrCiBkcml2ZXJzL2dwdS9kcm0vYW1kL3Bvd2VycGxheS9hbWRfcG93ZXJw bGF5LmMgICAgIHwgMTk0ICsrKysrKysrKysrKysrKwogZHJpdmVycy9ncHUvZHJtL2FtZC9wb3dl cnBsYXkvaW5jL2FtZF9wb3dlcnBsYXkuaCB8IDE2MiArKysrKysrKysrKysrCiAxMiBmaWxlcyBj aGFuZ2VkLCA3MTggaW5zZXJ0aW9ucygrKSwgOSBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEw MDY0NCBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfcG93ZXJwbGF5LmMKIGNyZWF0 ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfcG93ZXJwbGF5 LmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vYW1kL3Bvd2VycGxheS9LY29u ZmlnCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2FtZC9wb3dlcnBsYXkvTWFr ZWZpbGUKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vYW1kL3Bvd2VycGxheS9h bWRfcG93ZXJwbGF5LmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vYW1kL3Bv d2VycGxheS9pbmMvYW1kX3Bvd2VycGxheS5oCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L0tjb25maWcgYi9kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZwppbmRleCBjNGJmOWExLi5iNDJjMWJh IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZworKysgYi9kcml2ZXJzL2dwdS9k cm0vS2NvbmZpZwpAQCAtMTYwLDYgKzE2MCw3IEBAIGNvbmZpZyBEUk1fQU1ER1BVCiAJICBJZiBN IGlzIHNlbGVjdGVkLCB0aGUgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIGFtZGdwdS4KIAogc291cmNl ICJkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9LY29uZmlnIgorc291cmNlICJkcml2ZXJzL2dw dS9kcm0vYW1kL3Bvd2VycGxheS9LY29uZmlnIgogCiBzb3VyY2UgImRyaXZlcnMvZ3B1L2RybS9u b3V2ZWF1L0tjb25maWciCiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1 L01ha2VmaWxlIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvTWFrZWZpbGUKaW5kZXggMDRj MjcwNy4uMmI2YWMxNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvTWFr ZWZpbGUKKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvTWFrZWZpbGUKQEAgLTUsNyAr NSw4IEBACiBjY2ZsYWdzLXkgOj0gLUlpbmNsdWRlL2RybSAtSWRyaXZlcnMvZ3B1L2RybS9hbWQv aW5jbHVkZS9hc2ljX3JlZyBcCiAJLUlkcml2ZXJzL2dwdS9kcm0vYW1kL2luY2x1ZGUgXAogCS1J ZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUgXAotCS1JZHJpdmVycy9ncHUvZHJtL2FtZC9zY2hl ZHVsZXIKKwktSWRyaXZlcnMvZ3B1L2RybS9hbWQvc2NoZWR1bGVyIFwKKwktSWRyaXZlcnMvZ3B1 L2RybS9hbWQvcG93ZXJwbGF5L2luYwogCiBhbWRncHUteSA6PSBhbWRncHVfZHJ2Lm8KIApAQCAt NDQsNiArNDUsNyBAQCBhbWRncHUteSArPSBcCiAjIGFkZCBTTUMgYmxvY2sKIGFtZGdwdS15ICs9 IFwKIAlhbWRncHVfZHBtLm8gXAorCWFtZGdwdV9wb3dlcnBsYXkubyBcCiAJY3pfc21jLm8gY3pf ZHBtLm8gXAogCXRvbmdhX3NtYy5vIHRvbmdhX2RwbS5vIFwKIAlmaWppX3NtYy5vIGZpamlfZHBt Lm8gXApAQCAtOTQsNiArOTYsMTQgQEAgYW1kZ3B1LSQoQ09ORklHX1ZHQV9TV0lUQ0hFUk9PKSAr PSBhbWRncHVfYXRweF9oYW5kbGVyLm8KIGFtZGdwdS0kKENPTkZJR19BQ1BJKSArPSBhbWRncHVf YWNwaS5vCiBhbWRncHUtJChDT05GSUdfTU1VX05PVElGSUVSKSArPSBhbWRncHVfbW4ubwogCitp Zm5lcSAoJChDT05GSUdfRFJNX0FNRF9QT1dFUlBMQVkpLCkKKworaW5jbHVkZSBkcml2ZXJzL2dw dS9kcm0vYW1kL3Bvd2VycGxheS9NYWtlZmlsZQorCithbWRncHUteSArPSAkKEFNRF9QT1dFUlBM QVlfRklMRVMpCisKK2VuZGlmCisKIG9iai0kKENPTkZJR19EUk1fQU1ER1BVKSs9IGFtZGdwdS5v CiAKIENGTEFHU19hbWRncHVfdHJhY2VfcG9pbnRzLm8gOj0gLUkkKHNyYykKZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdS5oIGIvZHJpdmVycy9ncHUvZHJtL2Ft ZC9hbWRncHUvYW1kZ3B1LmgKaW5kZXggY2RhZjhlMi4uZjMyMjNjNSAxMDA2NDQKLS0tIGEvZHJp dmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2Ft ZC9hbWRncHUvYW1kZ3B1LmgKQEAgLTUyLDYgKzUyLDcgQEAKICNpbmNsdWRlICJhbWRncHVfaXJx LmgiCiAjaW5jbHVkZSAiYW1kZ3B1X3Vjb2RlLmgiCiAjaW5jbHVkZSAiYW1kZ3B1X2dkcy5oIgor I2luY2x1ZGUgImFtZF9wb3dlcnBsYXkuaCIKIAogI2luY2x1ZGUgImdwdV9zY2hlZHVsZXIuaCIK IApAQCAtODUsNiArODYsNyBAQCBleHRlcm4gaW50IGFtZGdwdV9lbmFibGVfc2NoZWR1bGVyOwog ZXh0ZXJuIGludCBhbWRncHVfc2NoZWRfam9iczsKIGV4dGVybiBpbnQgYW1kZ3B1X3NjaGVkX2h3 X3N1Ym1pc3Npb247CiBleHRlcm4gaW50IGFtZGdwdV9lbmFibGVfc2VtYXBob3JlczsKK2V4dGVy biBpbnQgYW1kZ3B1X3Bvd2VycGxheTsKIAogI2RlZmluZSBBTURHUFVfV0FJVF9JRExFX1RJTUVP VVRfSU5fTVMJICAgICAgICAzMDAwCiAjZGVmaW5lIEFNREdQVV9NQVhfVVNFQ19USU1FT1VUCQkJ MTAwMDAwCS8qIDEwMCBtcyAqLwpAQCAtMTk4OCw2ICsxOTkwLDkgQEAgc3RydWN0IGFtZGdwdV9k ZXZpY2UgewogCS8qIGludGVycnVwdHMgKi8KIAlzdHJ1Y3QgYW1kZ3B1X2lycQkJaXJxOwogCisJ LyogcG93ZXJwbGF5ICovCisJc3RydWN0IGFtZF9wb3dlcnBsYXkJCXBvd2VycGxheTsKKwogCS8q IGRwbSAqLwogCXN0cnVjdCBhbWRncHVfcG0JCXBtOwogCXUzMgkJCQljZ19mbGFnczsKZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kcnYuYyBiL2RyaXZlcnMv Z3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kcnYuYwppbmRleCAwNTA4YzVjLi44ODVkYTBiIDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZHJ2LmMKKysrIGIv ZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2Rydi5jCkBAIC04Miw2ICs4Miw3IEBA IGludCBhbWRncHVfZW5hYmxlX3NjaGVkdWxlciA9IDE7CiBpbnQgYW1kZ3B1X3NjaGVkX2pvYnMg PSAxNjsKIGludCBhbWRncHVfc2NoZWRfaHdfc3VibWlzc2lvbiA9IDI7CiBpbnQgYW1kZ3B1X2Vu YWJsZV9zZW1hcGhvcmVzID0gMDsKK2ludCBhbWRncHVfcG93ZXJwbGF5ID0gMDsKIAogTU9EVUxF X1BBUk1fREVTQyh2cmFtbGltaXQsICJSZXN0cmljdCBWUkFNIGZvciB0ZXN0aW5nLCBpbiBtZWdh Ynl0ZXMiKTsKIG1vZHVsZV9wYXJhbV9uYW1lZCh2cmFtbGltaXQsIGFtZGdwdV92cmFtX2xpbWl0 LCBpbnQsIDA2MDApOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1k Z3B1X3Bvd2VycGxheS5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3Bvd2Vy cGxheS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVkZDJhNGMKLS0tIC9k ZXYvbnVsbAorKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfcG93ZXJwbGF5 LmMKQEAgLTAsMCArMSwyODAgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAxNSBBZHZhbmNlZCBNaWNy byBEZXZpY2VzLCBJbmMuCisgKgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJl ZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKKyAqIGNvcHkgb2YgdGhpcyBz b2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJl IiksCisgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNs dWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCisgKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9k aWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKKyAqIGFuZC9vciBz ZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9t IHRoZQorICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBm b2xsb3dpbmcgY29uZGl0aW9uczoKKyAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBh bmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgorICogYWxsIGNv cGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCisgKgorICogVEhF IFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJ TkQsIEVYUFJFU1MgT1IKKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8g VEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorICogRklUTkVTUyBGT1IgQSBQQVJU SUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMCisg KiBUSEUgQ09QWVJJR0hUIEhPTERFUihTKSBPUiBBVVRIT1IoUykgQkUgTElBQkxFIEZPUiBBTlkg Q0xBSU0sIERBTUFHRVMgT1IKKyAqIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJ T04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLAorICogQVJJU0lORyBGUk9NLCBPVVQg T0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SCisgKiBP VEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCisgKgorICogQXV0aG9yczogQU1ECisgKgor ICovCisjaW5jbHVkZSAiYXRvbS5oIgorI2luY2x1ZGUgImFtZGdwdS5oIgorI2luY2x1ZGUgImFt ZF9zaGFyZWQuaCIKKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KKyNpbmNsdWRlIDxsaW51eC9t b2R1bGVwYXJhbS5oPgorI2luY2x1ZGUgImFtZGdwdV9wbS5oIgorI2luY2x1ZGUgPGRybS9hbWRn cHVfZHJtLmg+CisjaW5jbHVkZSAiYW1kZ3B1X3Bvd2VycGxheS5oIgorI2luY2x1ZGUgImNpa19k cG0uaCIKKyNpbmNsdWRlICJ2aV9kcG0uaCIKKworc3RhdGljIGludCBhbWRncHVfcG93ZXJwbGF5 X2luaXQoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCit7CisJaW50IHJldCA9IDA7CisJc3Ry dWN0IGFtZF9wb3dlcnBsYXkgKmFtZF9wcDsKKworCWFtZF9wcCA9ICYoYWRldi0+cG93ZXJwbGF5 KTsKKworCWlmIChhbWRncHVfcG93ZXJwbGF5KSB7CisjaWZkZWYgQ09ORklHX0RSTV9BTURfUE9X RVJQTEFZCisJCXN0cnVjdCBhbWRfcHBfaW5pdCAqcHBfaW5pdDsKKworCQlwcF9pbml0ID0ga3ph bGxvYyhzaXplb2Yoc3RydWN0IGFtZF9wcF9pbml0KSwgR0ZQX0tFUk5FTCk7CisKKwkJaWYgKHBw X2luaXQgPT0gTlVMTCkKKwkJCXJldHVybiAtRU5PTUVNOworCisJCXBwX2luaXQtPmNoaXBfZmFt aWx5ID0gYWRldi0+ZmFtaWx5OworCQlwcF9pbml0LT5jaGlwX2lkID0gYWRldi0+YXNpY190eXBl OworCQlwcF9pbml0LT5kZXZpY2UgPSBhbWRncHVfY2dzX2NyZWF0ZV9kZXZpY2UoYWRldik7CisK KwkJcmV0ID0gYW1kX3Bvd2VycGxheV9pbml0KHBwX2luaXQsIGFtZF9wcCk7CisJCWtmcmVlKHBw X2luaXQpOworI2VuZGlmCisJfSBlbHNlIHsKKwkJYW1kX3BwLT5wcF9oYW5kbGUgPSAodm9pZCAq KWFkZXY7CisKKwkJc3dpdGNoIChhZGV2LT5hc2ljX3R5cGUpIHsKKyNpZmRlZiBDT05GSUdfRFJN X0FNREdQVV9DSUsKKwkJY2FzZSBDSElQX0JPTkFJUkU6CisJCWNhc2UgQ0hJUF9IQVdBSUk6CisJ CQlhbWRfcHAtPmlwX2Z1bmNzID0gJmNpX2RwbV9pcF9mdW5jczsKKwkJCWJyZWFrOworCQljYXNl IENISVBfS0FCSU5JOgorCQljYXNlIENISVBfTVVMTElOUzoKKwkJY2FzZSBDSElQX0tBVkVSSToK KwkJCWFtZF9wcC0+aXBfZnVuY3MgPSAma3ZfZHBtX2lwX2Z1bmNzOworCQkJYnJlYWs7CisjZW5k aWYKKwkJY2FzZSBDSElQX1RPUEFaOgorCQkJYW1kX3BwLT5pcF9mdW5jcyA9ICZpY2VsYW5kX2Rw bV9pcF9mdW5jczsKKwkJCWJyZWFrOworCQljYXNlIENISVBfVE9OR0E6CisJCQlhbWRfcHAtPmlw X2Z1bmNzID0gJnRvbmdhX2RwbV9pcF9mdW5jczsKKwkJCWJyZWFrOworCQljYXNlIENISVBfQ0FS UklaTzoKKwkJCWFtZF9wcC0+aXBfZnVuY3MgPSAmY3pfZHBtX2lwX2Z1bmNzOworCQkJYnJlYWs7 CisJCWRlZmF1bHQ6CisJCQlyZXQgPSAtRUlOVkFMOworCQkJYnJlYWs7CisJCX0KKwl9CisJcmV0 dXJuIHJldDsKK30KKworc3RhdGljIGludCBhbWRncHVfcHBfZWFybHlfaW5pdCh2b2lkICpoYW5k bGUpCit7CisJc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYgPSAoc3RydWN0IGFtZGdwdV9kZXZp Y2UgKiloYW5kbGU7CisJaW50IHJldCA9IDA7CisKKwlyZXQgPSBhbWRncHVfcG93ZXJwbGF5X2lu aXQoYWRldik7CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsKKworCWlmIChhZGV2LT5wb3dlcnBs YXkuaXBfZnVuY3MtPmVhcmx5X2luaXQpCisJCXJldCA9IGFkZXYtPnBvd2VycGxheS5pcF9mdW5j cy0+ZWFybHlfaW5pdCgKKwkJCQkJYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZSk7CisJcmV0dXJu IHJldDsKK30KKworc3RhdGljIGludCBhbWRncHVfcHBfc3dfaW5pdCh2b2lkICpoYW5kbGUpCit7 CisJaW50IHJldCA9IDA7CisJc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYgPSAoc3RydWN0IGFt ZGdwdV9kZXZpY2UgKiloYW5kbGU7CisKKwlpZiAoYWRldi0+cG93ZXJwbGF5LmlwX2Z1bmNzLT5z d19pbml0KQorCQlyZXQgPSBhZGV2LT5wb3dlcnBsYXkuaXBfZnVuY3MtPnN3X2luaXQoCisJCQkJ CWFkZXYtPnBvd2VycGxheS5wcF9oYW5kbGUpOworCisjaWZkZWYgQ09ORklHX0RSTV9BTURfUE9X RVJQTEFZCisJaWYgKGFtZGdwdV9wb3dlcnBsYXkpIHsKKwkJYWRldi0+cG0uZHBtX2VuYWJsZWQg PSB0cnVlOworCQlhbWRncHVfcG1fc3lzZnNfaW5pdChhZGV2KTsKKwl9CisjZW5kaWYKKworCXJl dHVybiByZXQ7Cit9CisKK3N0YXRpYyBpbnQgYW1kZ3B1X3BwX3N3X2Zpbmkodm9pZCAqaGFuZGxl KQoreworCWludCByZXQgPSAwOworCXN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2ID0gKHN0cnVj dCBhbWRncHVfZGV2aWNlICopaGFuZGxlOworCisJaWYgKGFkZXYtPnBvd2VycGxheS5pcF9mdW5j cy0+c3dfZmluaSkKKwkJcmV0ID0gYWRldi0+cG93ZXJwbGF5LmlwX2Z1bmNzLT5zd19maW5pKAor CQkJCQlhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlKTsKKwlpZiAocmV0KQorCQlyZXR1cm4gcmV0 OworCisjaWZkZWYgQ09ORklHX0RSTV9BTURfUE9XRVJQTEFZCisJaWYgKGFtZGdwdV9wb3dlcnBs YXkpIHsKKwkJYW1kZ3B1X3BtX3N5c2ZzX2ZpbmkoYWRldik7CisJCWFtZF9wb3dlcnBsYXlfZmlu aShhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlKTsKKwl9CisjZW5kaWYKKworCXJldHVybiByZXQ7 Cit9CisKK3N0YXRpYyBpbnQgYW1kZ3B1X3BwX2h3X2luaXQodm9pZCAqaGFuZGxlKQoreworCWlu dCByZXQgPSAwOworCXN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2ID0gKHN0cnVjdCBhbWRncHVf ZGV2aWNlICopaGFuZGxlOworCisJaWYgKGFtZGdwdV9wb3dlcnBsYXkgJiYgYWRldi0+ZmlybXdh cmUuc211X2xvYWQpCisJCWFtZGdwdV91Y29kZV9pbml0X2JvKGFkZXYpOworCisJaWYgKGFkZXYt PnBvd2VycGxheS5pcF9mdW5jcy0+aHdfaW5pdCkKKwkJcmV0ID0gYWRldi0+cG93ZXJwbGF5Lmlw X2Z1bmNzLT5od19pbml0KAorCQkJCQlhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlKTsKKworCXJl dHVybiByZXQ7Cit9CisKK3N0YXRpYyBpbnQgYW1kZ3B1X3BwX2h3X2Zpbmkodm9pZCAqaGFuZGxl KQoreworCWludCByZXQgPSAwOworCXN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2ID0gKHN0cnVj dCBhbWRncHVfZGV2aWNlICopaGFuZGxlOworCisJaWYgKGFkZXYtPnBvd2VycGxheS5pcF9mdW5j cy0+aHdfZmluaSkKKwkJcmV0ID0gYWRldi0+cG93ZXJwbGF5LmlwX2Z1bmNzLT5od19maW5pKAor CQkJCQlhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlKTsKKworCWlmIChhbWRncHVfcG93ZXJwbGF5 ICYmIGFkZXYtPmZpcm13YXJlLnNtdV9sb2FkKQorCQlhbWRncHVfdWNvZGVfZmluaV9ibyhhZGV2 KTsKKworCXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBpbnQgYW1kZ3B1X3BwX3N1c3BlbmQodm9p ZCAqaGFuZGxlKQoreworCWludCByZXQgPSAwOworCXN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2 ID0gKHN0cnVjdCBhbWRncHVfZGV2aWNlICopaGFuZGxlOworCisJaWYgKGFkZXYtPnBvd2VycGxh eS5pcF9mdW5jcy0+c3VzcGVuZCkKKwkJcmV0ID0gYWRldi0+cG93ZXJwbGF5LmlwX2Z1bmNzLT5z dXNwZW5kKAorCQkJCQkgYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZSk7CisJcmV0dXJuIHJldDsK K30KKworc3RhdGljIGludCBhbWRncHVfcHBfcmVzdW1lKHZvaWQgKmhhbmRsZSkKK3sKKwlpbnQg cmV0ID0gMDsKKwlzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiA9IChzdHJ1Y3QgYW1kZ3B1X2Rl dmljZSAqKWhhbmRsZTsKKworCWlmIChhZGV2LT5wb3dlcnBsYXkuaXBfZnVuY3MtPnJlc3VtZSkK KwkJcmV0ID0gYWRldi0+cG93ZXJwbGF5LmlwX2Z1bmNzLT5yZXN1bWUoCisJCQkJCWFkZXYtPnBv d2VycGxheS5wcF9oYW5kbGUpOworCXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBpbnQgYW1kZ3B1 X3BwX3NldF9jbG9ja2dhdGluZ19zdGF0ZSh2b2lkICpoYW5kbGUsCisJCQkJCWVudW0gYW1kX2Ns b2NrZ2F0aW5nX3N0YXRlIHN0YXRlKQoreworCWludCByZXQgPSAwOworCXN0cnVjdCBhbWRncHVf ZGV2aWNlICphZGV2ID0gKHN0cnVjdCBhbWRncHVfZGV2aWNlICopaGFuZGxlOworCisJaWYgKGFk ZXYtPnBvd2VycGxheS5pcF9mdW5jcy0+c2V0X2Nsb2NrZ2F0aW5nX3N0YXRlKQorCQlyZXQgPSBh ZGV2LT5wb3dlcnBsYXkuaXBfZnVuY3MtPnNldF9jbG9ja2dhdGluZ19zdGF0ZSgKKwkJCQlhZGV2 LT5wb3dlcnBsYXkucHBfaGFuZGxlLCBzdGF0ZSk7CisJcmV0dXJuIHJldDsKK30KKworc3RhdGlj IGludCBhbWRncHVfcHBfc2V0X3Bvd2VyZ2F0aW5nX3N0YXRlKHZvaWQgKmhhbmRsZSwKKwkJCQkJ ZW51bSBhbWRfcG93ZXJnYXRpbmdfc3RhdGUgc3RhdGUpCit7CisJaW50IHJldCA9IDA7CisJc3Ry dWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYgPSAoc3RydWN0IGFtZGdwdV9kZXZpY2UgKiloYW5kbGU7 CisKKwlpZiAoYWRldi0+cG93ZXJwbGF5LmlwX2Z1bmNzLT5zZXRfcG93ZXJnYXRpbmdfc3RhdGUp CisJCXJldCA9IGFkZXYtPnBvd2VycGxheS5pcF9mdW5jcy0+c2V0X3Bvd2VyZ2F0aW5nX3N0YXRl KAorCQkJCSBhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlLCBzdGF0ZSk7CisJcmV0dXJuIHJldDsK K30KKworCitzdGF0aWMgYm9vbCBhbWRncHVfcHBfaXNfaWRsZSh2b2lkICpoYW5kbGUpCit7CisJ Ym9vbCByZXQgPSB0cnVlOworCXN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2ID0gKHN0cnVjdCBh bWRncHVfZGV2aWNlICopaGFuZGxlOworCisJaWYgKGFkZXYtPnBvd2VycGxheS5pcF9mdW5jcy0+ aXNfaWRsZSkKKwkJcmV0ID0gYWRldi0+cG93ZXJwbGF5LmlwX2Z1bmNzLT5pc19pZGxlKAorCQkJ CQlhZGV2LT5wb3dlcnBsYXkucHBfaGFuZGxlKTsKKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMg aW50IGFtZGdwdV9wcF93YWl0X2Zvcl9pZGxlKHZvaWQgKmhhbmRsZSkKK3sKKwlpbnQgcmV0ID0g MDsKKwlzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiA9IChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAq KWhhbmRsZTsKKworCWlmIChhZGV2LT5wb3dlcnBsYXkuaXBfZnVuY3MtPndhaXRfZm9yX2lkbGUp CisJCXJldCA9IGFkZXYtPnBvd2VycGxheS5pcF9mdW5jcy0+d2FpdF9mb3JfaWRsZSgKKwkJCQkJ YWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZSk7CisJcmV0dXJuIHJldDsKK30KKworc3RhdGljIGlu dCBhbWRncHVfcHBfc29mdF9yZXNldCh2b2lkICpoYW5kbGUpCit7CisJaW50IHJldCA9IDA7CisJ c3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYgPSAoc3RydWN0IGFtZGdwdV9kZXZpY2UgKiloYW5k bGU7CisKKwlpZiAoYWRldi0+cG93ZXJwbGF5LmlwX2Z1bmNzLT5zb2Z0X3Jlc2V0KQorCQlyZXQg PSBhZGV2LT5wb3dlcnBsYXkuaXBfZnVuY3MtPnNvZnRfcmVzZXQoCisJCQkJCWFkZXYtPnBvd2Vy cGxheS5wcF9oYW5kbGUpOworCXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyB2b2lkIGFtZGdwdV9w cF9wcmludF9zdGF0dXModm9pZCAqaGFuZGxlKQoreworCXN0cnVjdCBhbWRncHVfZGV2aWNlICph ZGV2ID0gKHN0cnVjdCBhbWRncHVfZGV2aWNlICopaGFuZGxlOworCisJaWYgKGFkZXYtPnBvd2Vy cGxheS5pcF9mdW5jcy0+cHJpbnRfc3RhdHVzKQorCQlhZGV2LT5wb3dlcnBsYXkuaXBfZnVuY3Mt PnByaW50X3N0YXR1cygKKwkJCQkJYWRldi0+cG93ZXJwbGF5LnBwX2hhbmRsZSk7Cit9CisKK2Nv bnN0IHN0cnVjdCBhbWRfaXBfZnVuY3MgYW1kZ3B1X3BwX2lwX2Z1bmNzID0geworCS5lYXJseV9p bml0ID0gYW1kZ3B1X3BwX2Vhcmx5X2luaXQsCisJLmxhdGVfaW5pdCA9IE5VTEwsCisJLnN3X2lu aXQgPSBhbWRncHVfcHBfc3dfaW5pdCwKKwkuc3dfZmluaSA9IGFtZGdwdV9wcF9zd19maW5pLAor CS5od19pbml0ID0gYW1kZ3B1X3BwX2h3X2luaXQsCisJLmh3X2ZpbmkgPSBhbWRncHVfcHBfaHdf ZmluaSwKKwkuc3VzcGVuZCA9IGFtZGdwdV9wcF9zdXNwZW5kLAorCS5yZXN1bWUgPSBhbWRncHVf cHBfcmVzdW1lLAorCS5pc19pZGxlID0gYW1kZ3B1X3BwX2lzX2lkbGUsCisJLndhaXRfZm9yX2lk bGUgPSBhbWRncHVfcHBfd2FpdF9mb3JfaWRsZSwKKwkuc29mdF9yZXNldCA9IGFtZGdwdV9wcF9z b2Z0X3Jlc2V0LAorCS5wcmludF9zdGF0dXMgPSBhbWRncHVfcHBfcHJpbnRfc3RhdHVzLAorCS5z ZXRfY2xvY2tnYXRpbmdfc3RhdGUgPSBhbWRncHVfcHBfc2V0X2Nsb2NrZ2F0aW5nX3N0YXRlLAor CS5zZXRfcG93ZXJnYXRpbmdfc3RhdGUgPSBhbWRncHVfcHBfc2V0X3Bvd2VyZ2F0aW5nX3N0YXRl LAorfTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9wb3dl cnBsYXkuaCBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9wb3dlcnBsYXkuaApu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYTVjZjQ3Ci0tLSAvZGV2L251bGwK KysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3Bvd2VycGxheS5oCkBAIC0w LDAgKzEsMzMgQEAKKy8qCisgKiAgQ29weXJpZ2h0IDIwMTUgQWR2YW5jZWQgTWljcm8gRGV2aWNl cywgSW5jLgorICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hh cmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCisgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUg YW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAorICog dG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdp dGhvdXQgbGltaXRhdGlvbgorICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVy Z2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCisgKiBhbmQvb3Igc2VsbCBjb3Bp ZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUKKyAq IFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5n IGNvbmRpdGlvbnM6CisgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMg cGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4KKyAqIGFsbCBjb3BpZXMgb3Ig c3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgorICoKKyAqIFRIRSBTT0ZUV0FS RSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBS RVNTIE9SCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJS QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ VVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTAorICogVEhFIENP UFlSSUdIVCBIT0xERVIoUykgT1IgQVVUSE9SKFMpIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBE QU1BR0VTIE9SCisgKiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENP TlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwKKyAqIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElO IENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUgorICogT1RIRVIgREVB TElOR1MgSU4gVEhFIFNPRlRXQVJFLgorICoKKyAqIEF1dGhvcnM6IEFNRAorICoKKyAqLworCisj aWZuZGVmIF9fQU1ER1BVX1BPUFdFUlBMQVlfSF9fCisjZGVmaW5lIF9fQU1ER1BVX1BPUFdFUlBM QVlfSF9fCisKKyNpbmNsdWRlICJhbWRfc2hhcmVkLmgiCisKK2V4dGVybiBjb25zdCBzdHJ1Y3Qg YW1kX2lwX2Z1bmNzIGFtZGdwdV9wcF9pcF9mdW5jczsKKworI2VuZGlmIC8qIF9fQU1EU09DX0RN X0hfXyAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvY2lrLmMgYi9k cml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9jaWsuYwppbmRleCA0ODQ3MTBjLi5jOGI3YmVmIDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9jaWsuYworKysgYi9kcml2ZXJz L2dwdS9kcm0vYW1kL2FtZGdwdS9jaWsuYwpAQCAtNjUsNiArNjUsNyBAQAogI2luY2x1ZGUgIm9z cy9vc3NfMl8wX3NoX21hc2suaCIKIAogI2luY2x1ZGUgImFtZGdwdV9hbWRrZmQuaCIKKyNpbmNs dWRlICJhbWRncHVfcG93ZXJwbGF5LmgiCiAKIC8qCiAgKiBJbmRpcmVjdCByZWdpc3RlcnMgYWNj ZXNzb3IKQEAgLTE5MjIsNyArMTkyMyw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgYW1kZ3B1X2lw X2Jsb2NrX3ZlcnNpb24gYm9uYWlyZV9pcF9ibG9ja3NbXSA9CiAJCS5tYWpvciA9IDcsCiAJCS5t aW5vciA9IDAsCiAJCS5yZXYgPSAwLAotCQkuZnVuY3MgPSAmY2lfZHBtX2lwX2Z1bmNzLAorCQku ZnVuY3MgPSAmYW1kZ3B1X3BwX2lwX2Z1bmNzLAogCX0sCiAJewogCQkudHlwZSA9IEFNRF9JUF9C TE9DS19UWVBFX0RDRSwKQEAgLTE5OTAsNyArMTk5MSw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qg YW1kZ3B1X2lwX2Jsb2NrX3ZlcnNpb24gaGF3YWlpX2lwX2Jsb2Nrc1tdID0KIAkJLm1ham9yID0g NywKIAkJLm1pbm9yID0gMCwKIAkJLnJldiA9IDAsCi0JCS5mdW5jcyA9ICZjaV9kcG1faXBfZnVu Y3MsCisJCS5mdW5jcyA9ICZhbWRncHVfcHBfaXBfZnVuY3MsCiAJfSwKIAl7CiAJCS50eXBlID0g QU1EX0lQX0JMT0NLX1RZUEVfRENFLApAQCAtMjA1OCw3ICsyMDU5LDcgQEAgc3RhdGljIGNvbnN0 IHN0cnVjdCBhbWRncHVfaXBfYmxvY2tfdmVyc2lvbiBrYWJpbmlfaXBfYmxvY2tzW10gPQogCQku bWFqb3IgPSA3LAogCQkubWlub3IgPSAwLAogCQkucmV2ID0gMCwKLQkJLmZ1bmNzID0gJmt2X2Rw bV9pcF9mdW5jcywKKwkJLmZ1bmNzID0gJmFtZGdwdV9wcF9pcF9mdW5jcywKIAl9LAogCXsKIAkJ LnR5cGUgPSBBTURfSVBfQkxPQ0tfVFlQRV9EQ0UsCkBAIC0yMTI2LDcgKzIxMjcsNyBAQCBzdGF0 aWMgY29uc3Qgc3RydWN0IGFtZGdwdV9pcF9ibG9ja192ZXJzaW9uIG11bGxpbnNfaXBfYmxvY2tz W10gPQogCQkubWFqb3IgPSA3LAogCQkubWlub3IgPSAwLAogCQkucmV2ID0gMCwKLQkJLmZ1bmNz ID0gJmt2X2RwbV9pcF9mdW5jcywKKwkJLmZ1bmNzID0gJmFtZGdwdV9wcF9pcF9mdW5jcywKIAl9 LAogCXsKIAkJLnR5cGUgPSBBTURfSVBfQkxPQ0tfVFlQRV9EQ0UsCkBAIC0yMTk0LDcgKzIxOTUs NyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGFtZGdwdV9pcF9ibG9ja192ZXJzaW9uIGthdmVyaV9p cF9ibG9ja3NbXSA9CiAJCS5tYWpvciA9IDcsCiAJCS5taW5vciA9IDAsCiAJCS5yZXYgPSAwLAot CQkuZnVuY3MgPSAma3ZfZHBtX2lwX2Z1bmNzLAorCQkuZnVuY3MgPSAmYW1kZ3B1X3BwX2lwX2Z1 bmNzLAogCX0sCiAJewogCQkudHlwZSA9IEFNRF9JUF9CTE9DS19UWVBFX0RDRSwKZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3ZpLmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1k L2FtZGdwdS92aS5jCmluZGV4IDJhZGMxYzguLmNhMzU5MGYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv Z3B1L2RybS9hbWQvYW1kZ3B1L3ZpLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUv dmkuYwpAQCAtNzEsNiArNzEsNyBAQAogI2luY2x1ZGUgInV2ZF92NV8wLmgiCiAjaW5jbHVkZSAi dXZkX3Y2XzAuaCIKICNpbmNsdWRlICJ2Y2VfdjNfMC5oIgorI2luY2x1ZGUgImFtZGdwdV9wb3dl cnBsYXkuaCIKIAogLyoKICAqIEluZGlyZWN0IHJlZ2lzdGVycyBhY2Nlc3NvcgpAQCAtMTA5OCw3 ICsxMDk5LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBhbWRncHVfaXBfYmxvY2tfdmVyc2lvbiB0 b3Bhel9pcF9ibG9ja3NbXSA9CiAJCS5tYWpvciA9IDcsCiAJCS5taW5vciA9IDEsCiAJCS5yZXYg PSAwLAotCQkuZnVuY3MgPSAmaWNlbGFuZF9kcG1faXBfZnVuY3MsCisJCS5mdW5jcyA9ICZhbWRn cHVfcHBfaXBfZnVuY3MsCiAJfSwKIAl7CiAJCS50eXBlID0gQU1EX0lQX0JMT0NLX1RZUEVfR0ZY LApAQCAtMTE0NSw3ICsxMTQ2LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBhbWRncHVfaXBfYmxv Y2tfdmVyc2lvbiB0b25nYV9pcF9ibG9ja3NbXSA9CiAJCS5tYWpvciA9IDcsCiAJCS5taW5vciA9 IDEsCiAJCS5yZXYgPSAwLAotCQkuZnVuY3MgPSAmdG9uZ2FfZHBtX2lwX2Z1bmNzLAorCQkuZnVu Y3MgPSAmYW1kZ3B1X3BwX2lwX2Z1bmNzLAogCX0sCiAJewogCQkudHlwZSA9IEFNRF9JUF9CTE9D S19UWVBFX0RDRSwKQEAgLTEyODEsNyArMTI4Miw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgYW1k Z3B1X2lwX2Jsb2NrX3ZlcnNpb24gY3pfaXBfYmxvY2tzW10gPQogCQkubWFqb3IgPSA4LAogCQku bWlub3IgPSAwLAogCQkucmV2ID0gMCwKLQkJLmZ1bmNzID0gJmN6X2RwbV9pcF9mdW5jcywKKwkJ LmZ1bmNzID0gJmFtZGdwdV9wcF9pcF9mdW5jcwogCX0sCiAJewogCQkudHlwZSA9IEFNRF9JUF9C TE9DS19UWVBFX0RDRSwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvcG93ZXJwbGF5 L0tjb25maWcgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL3Bvd2VycGxheS9LY29uZmlnCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFmMzgwMzMKLS0tIC9kZXYvbnVsbAorKysgYi9k cml2ZXJzL2dwdS9kcm0vYW1kL3Bvd2VycGxheS9LY29uZmlnCkBAIC0wLDAgKzEsNiBAQAorY29u ZmlnIERSTV9BTURfUE9XRVJQTEFZCisJYm9vbCAgIkVuYWJsZSBBTUQgcG93ZXJwbGF5IGNvbXBv bmVudCIKKwlkZXBlbmRzIG9uIERSTV9BTURHUFUKKwlkZWZhdWx0IG4KKwloZWxwCisJICBzZWxl Y3QgdGhpcyBvcHRpb24gd2lsbCBlbmFibGUgQU1EIHBvd2VycGxheSBjb21wb25lbnQuCmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL3Bvd2VycGxheS9NYWtlZmlsZSBiL2RyaXZlcnMv Z3B1L2RybS9hbWQvcG93ZXJwbGF5L01ha2VmaWxlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAuLmU3NDI4YTEKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1k L3Bvd2VycGxheS9NYWtlZmlsZQpAQCAtMCwwICsxLDE1IEBACisKK3N1YmRpci1jY2ZsYWdzLXkg Kz0gLUlpbmNsdWRlL2RybSAgXAorCQktSWRyaXZlcnMvZ3B1L2RybS9hbWQvcG93ZXJwbGF5L2lu Yy8gIFwKKwkJLUlkcml2ZXJzL2dwdS9kcm0vYW1kL2luY2x1ZGUvYXNpY19yZWcgIFwKKwkJLUlk cml2ZXJzL2dwdS9kcm0vYW1kL2luY2x1ZGUKKworQU1EX1BQX1BBVEggPSAuLi9wb3dlcnBsYXkK KworaW5jbHVkZSAkKEFNRF9QT1dFUlBMQVkpCisKK1BPV0VSX01HUiA9IGFtZF9wb3dlcnBsYXku bworCitBTURfUFBfUE9XRVIgPSAkKGFkZHByZWZpeCAkKEFNRF9QUF9QQVRIKS8sJChQT1dFUl9N R1IpKQorCitBTURfUE9XRVJQTEFZX0ZJTEVTICs9ICQoQU1EX1BQX1BPV0VSKQpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9wb3dlcnBsYXkvYW1kX3Bvd2VycGxheS5jIGIvZHJpdmVy cy9ncHUvZHJtL2FtZC9wb3dlcnBsYXkvYW1kX3Bvd2VycGxheS5jCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAuLjM5ZmZjNWQKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2dw dS9kcm0vYW1kL3Bvd2VycGxheS9hbWRfcG93ZXJwbGF5LmMKQEAgLTAsMCArMSwxOTQgQEAKKy8q CisgKiBDb3B5cmlnaHQgMjAxNSBBZHZhbmNlZCBNaWNybyBEZXZpY2VzLCBJbmMuCisgKgorICog UGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJz b24gb2J0YWluaW5nIGEKKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBk b2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCisgKiB0byBkZWFsIGluIHRoZSBT b2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9u CisgKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlz dHJpYnV0ZSwgc3VibGljZW5zZSwKKyAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdh cmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQorICogU29mdHdhcmUgaXMgZnVy bmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKyAq CisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGlj ZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgorICogYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0 aW9ucyBvZiB0aGUgU29mdHdhcmUuCisgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJB UyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyAqIElNUExJ RUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hB TlRBQklMSVRZLAorICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklO RlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMCisgKiBUSEUgQ09QWVJJR0hUIEhPTERFUihT KSBPUiBBVVRIT1IoUykgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IKKyAqIE9U SEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1Ig T1RIRVJXSVNFLAorICogQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRI IFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SCisgKiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09G VFdBUkUuCisgKgorICovCisjaW5jbHVkZSA8bGludXgvdHlwZXMuaD4KKyNpbmNsdWRlIDxsaW51 eC9rZXJuZWwuaD4KKyNpbmNsdWRlIDxsaW51eC9nZnAuaD4KKyNpbmNsdWRlICJhbWRfc2hhcmVk LmgiCisjaW5jbHVkZSAiYW1kX3Bvd2VycGxheS5oIgorCitzdGF0aWMgaW50IHBwX2Vhcmx5X2lu aXQodm9pZCAqaGFuZGxlKQoreworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IHBwX3N3X2lu aXQodm9pZCAqaGFuZGxlKQoreworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IHBwX3N3X2Zp bmkodm9pZCAqaGFuZGxlKQoreworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IHBwX2h3X2lu aXQodm9pZCAqaGFuZGxlKQoreworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IHBwX2h3X2Zp bmkodm9pZCAqaGFuZGxlKQoreworCXJldHVybiAwOworfQorCitzdGF0aWMgYm9vbCBwcF9pc19p ZGxlKHZvaWQgKmhhbmRsZSkKK3sKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBwcF93YWl0 X2Zvcl9pZGxlKHZvaWQgKmhhbmRsZSkKK3sKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBw cF9zd19yZXNldCh2b2lkICpoYW5kbGUpCit7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lk IHBwX3ByaW50X3N0YXR1cyh2b2lkICpoYW5kbGUpCit7CisKK30KKworc3RhdGljIGludCBwcF9z ZXRfY2xvY2tnYXRpbmdfc3RhdGUodm9pZCAqaGFuZGxlLAorCQkJCSAgICBlbnVtIGFtZF9jbG9j a2dhdGluZ19zdGF0ZSBzdGF0ZSkKK3sKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBwcF9z ZXRfcG93ZXJnYXRpbmdfc3RhdGUodm9pZCAqaGFuZGxlLAorCQkJCSAgICBlbnVtIGFtZF9wb3dl cmdhdGluZ19zdGF0ZSBzdGF0ZSkKK3sKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBwcF9z dXNwZW5kKHZvaWQgKmhhbmRsZSkKK3sKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBwcF9y ZXN1bWUodm9pZCAqaGFuZGxlKQoreworCXJldHVybiAwOworfQorCitjb25zdCBzdHJ1Y3QgYW1k X2lwX2Z1bmNzIHBwX2lwX2Z1bmNzID0geworCS5lYXJseV9pbml0ID0gcHBfZWFybHlfaW5pdCwK KwkubGF0ZV9pbml0ID0gTlVMTCwKKwkuc3dfaW5pdCA9IHBwX3N3X2luaXQsCisJLnN3X2Zpbmkg PSBwcF9zd19maW5pLAorCS5od19pbml0ID0gcHBfaHdfaW5pdCwKKwkuaHdfZmluaSA9IHBwX2h3 X2ZpbmksCisJLnN1c3BlbmQgPSBwcF9zdXNwZW5kLAorCS5yZXN1bWUgPSBwcF9yZXN1bWUsCisJ LmlzX2lkbGUgPSBwcF9pc19pZGxlLAorCS53YWl0X2Zvcl9pZGxlID0gcHBfd2FpdF9mb3JfaWRs ZSwKKwkuc29mdF9yZXNldCA9IHBwX3N3X3Jlc2V0LAorCS5wcmludF9zdGF0dXMgPSBwcF9wcmlu dF9zdGF0dXMsCisJLnNldF9jbG9ja2dhdGluZ19zdGF0ZSA9IHBwX3NldF9jbG9ja2dhdGluZ19z dGF0ZSwKKwkuc2V0X3Bvd2VyZ2F0aW5nX3N0YXRlID0gcHBfc2V0X3Bvd2VyZ2F0aW5nX3N0YXRl LAorfTsKKworc3RhdGljIGludCBwcF9kcG1fbG9hZF9mdyh2b2lkICpoYW5kbGUpCit7CisJcmV0 dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgcHBfZHBtX2Z3X2xvYWRpbmdfY29tcGxldGUodm9pZCAq aGFuZGxlKQoreworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IHBwX2RwbV9mb3JjZV9wZXJm b3JtYW5jZV9sZXZlbCh2b2lkICpoYW5kbGUsCisJCQkJCWVudW0gYW1kX2RwbV9mb3JjZWRfbGV2 ZWwgbGV2ZWwpCit7CisJcmV0dXJuIDA7Cit9CitzdGF0aWMgZW51bSBhbWRfZHBtX2ZvcmNlZF9s ZXZlbCBwcF9kcG1fZ2V0X3BlcmZvcm1hbmNlX2xldmVsKAorCQkJCQkJCQl2b2lkICpoYW5kbGUp Cit7CisJcmV0dXJuIDA7Cit9CitzdGF0aWMgaW50IHBwX2RwbV9nZXRfc2Nsayh2b2lkICpoYW5k bGUsIGJvb2wgbG93KQoreworCXJldHVybiAwOworfQorc3RhdGljIGludCBwcF9kcG1fZ2V0X21j bGsodm9pZCAqaGFuZGxlLCBib29sIGxvdykKK3sKKwlyZXR1cm4gMDsKK30KK3N0YXRpYyBpbnQg cHBfZHBtX3Bvd2VyZ2F0ZV92Y2Uodm9pZCAqaGFuZGxlLCBib29sIGdhdGUpCit7CisJcmV0dXJu IDA7Cit9CitzdGF0aWMgaW50IHBwX2RwbV9wb3dlcmdhdGVfdXZkKHZvaWQgKmhhbmRsZSwgYm9v bCBnYXRlKQoreworCXJldHVybiAwOworfQorCitpbnQgcHBfZHBtX2Rpc3BhdGNoX3Rhc2tzKHZv aWQgKmhhbmRsZSwgZW51bSBhbWRfcHBfZXZlbnQgZXZlbnRfaWQsIHZvaWQgKmlucHV0LCB2b2lk ICpvdXRwdXQpCit7CisJcmV0dXJuIDA7Cit9CitlbnVtIGFtZF9wbV9zdGF0ZV90eXBlIHBwX2Rw bV9nZXRfY3VycmVudF9wb3dlcl9zdGF0ZSh2b2lkICpoYW5kbGUpCit7CisJcmV0dXJuIDA7Cit9 CitzdGF0aWMgdm9pZAorcHBfZGVidWdmc19wcmludF9jdXJyZW50X3BlcmZvcm1hbmNlX2xldmVs KHZvaWQgKmhhbmRsZSwKKwkJCQkJICAgICAgIHN0cnVjdCBzZXFfZmlsZSAqbSkKK3sKKwlyZXR1 cm47Cit9Citjb25zdCBzdHJ1Y3QgYW1kX3Bvd2VycGxheV9mdW5jcyBwcF9kcG1fZnVuY3MgPSB7 CisJLmdldF90ZW1wZXJhdHVyZSA9IE5VTEwsCisJLmxvYWRfZmlybXdhcmUgPSBwcF9kcG1fbG9h ZF9mdywKKwkud2FpdF9mb3JfZndfbG9hZGluZ19jb21wbGV0ZSA9IHBwX2RwbV9md19sb2FkaW5n X2NvbXBsZXRlLAorCS5mb3JjZV9wZXJmb3JtYW5jZV9sZXZlbCA9IHBwX2RwbV9mb3JjZV9wZXJm b3JtYW5jZV9sZXZlbCwKKwkuZ2V0X3BlcmZvcm1hbmNlX2xldmVsID0gcHBfZHBtX2dldF9wZXJm b3JtYW5jZV9sZXZlbCwKKwkuZ2V0X2N1cnJlbnRfcG93ZXJfc3RhdGUgPSBwcF9kcG1fZ2V0X2N1 cnJlbnRfcG93ZXJfc3RhdGUsCisJLmdldF9zY2xrID0gcHBfZHBtX2dldF9zY2xrLAorCS5nZXRf bWNsayA9IHBwX2RwbV9nZXRfbWNsaywKKwkucG93ZXJnYXRlX3ZjZSA9IHBwX2RwbV9wb3dlcmdh dGVfdmNlLAorCS5wb3dlcmdhdGVfdXZkID0gcHBfZHBtX3Bvd2VyZ2F0ZV91dmQsCisJLmRpc3Bh dGNoX3Rhc2tzID0gcHBfZHBtX2Rpc3BhdGNoX3Rhc2tzLAorCS5wcmludF9jdXJyZW50X3BlcmZv cm1hbmNlX2xldmVsID0gcHBfZGVidWdmc19wcmludF9jdXJyZW50X3BlcmZvcm1hbmNlX2xldmVs LAorfTsKKworaW50IGFtZF9wb3dlcnBsYXlfaW5pdChzdHJ1Y3QgYW1kX3BwX2luaXQgKnBwX2lu aXQsCisJCSAgICAgICBzdHJ1Y3QgYW1kX3Bvd2VycGxheSAqYW1kX3BwKQoreworCWlmIChwcF9p bml0ID09IE5VTEwgfHwgYW1kX3BwID09IE5VTEwpCisJCXJldHVybiAtRUlOVkFMOworCisJYW1k X3BwLT5pcF9mdW5jcyA9ICZwcF9pcF9mdW5jczsKKwlhbWRfcHAtPnBwX2Z1bmNzID0gJnBwX2Rw bV9mdW5jczsKKworCXJldHVybiAwOworfQorCitpbnQgYW1kX3Bvd2VycGxheV9maW5pKHZvaWQg KmhhbmRsZSkKK3sKKwlyZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9h bWQvcG93ZXJwbGF5L2luYy9hbWRfcG93ZXJwbGF5LmggYi9kcml2ZXJzL2dwdS9kcm0vYW1kL3Bv d2VycGxheS9pbmMvYW1kX3Bvd2VycGxheS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAuLjA5ZDlkNWEKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL3Bv d2VycGxheS9pbmMvYW1kX3Bvd2VycGxheS5oCkBAIC0wLDAgKzEsMTYyIEBACisvKgorICogQ29w eXJpZ2h0IDIwMTUgQWR2YW5jZWQgTWljcm8gRGV2aWNlcywgSW5jLgorICoKKyAqIFBlcm1pc3Np b24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFp bmluZyBhCisgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRh dGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAorICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUg d2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgorICogdGhl IHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUs IHN1YmxpY2Vuc2UsCisgKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQg dG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUKKyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0 byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisgKgorICogVGhl IGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwg YmUgaW5jbHVkZWQgaW4KKyAqIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2Yg dGhlIFNvZnR3YXJlLgorICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBX SVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCisgKiBJTVBMSUVELCBJTkNM VURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU WSwKKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1F TlQuICBJTiBOTyBFVkVOVCBTSEFMTAorICogVEhFIENPUFlSSUdIVCBIT0xERVIoUykgT1IgQVVU SE9SKFMpIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SCisgKiBPVEhFUiBMSUFC SUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lT RSwKKyAqIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09G VFdBUkUgT1IgVEhFIFVTRSBPUgorICogT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgor ICoKKyAqLworI2lmbmRlZiBfQU1EX1BPV0VSUExBWV9IXworI2RlZmluZSBfQU1EX1BPV0VSUExB WV9IXworCisjaW5jbHVkZSA8bGludXgvc2VxX2ZpbGUuaD4KKyNpbmNsdWRlIDxsaW51eC90eXBl cy5oPgorI2luY2x1ZGUgImFtZF9zaGFyZWQuaCIKKyNpbmNsdWRlICJjZ3NfY29tbW9uLmgiCisK KworZW51bSBhbWRfcHBfZXZlbnQgeworCUFNRF9QUF9FVkVOVF9JTklUSUFMSVpFID0gMCwKKwlB TURfUFBfRVZFTlRfVU5JTklUSUFMSVpFLAorCUFNRF9QUF9FVkVOVF9QT1dFUl9TT1VSQ0VfQ0hB TkdFLAorCUFNRF9QUF9FVkVOVF9TVVNQRU5ELAorCUFNRF9QUF9FVkVOVF9SRVNVTUUsCisJQU1E X1BQX0VWRU5UX0VOVEVSX1JFU1RfU1RBVEUsCisJQU1EX1BQX0VWRU5UX0VYSVRfUkVTVF9TVEFU RSwKKwlBTURfUFBfRVZFTlRfRElTUExBWV9DT05GSUdfQ0hBTkdFLAorCUFNRF9QUF9FVkVOVF9U SEVSTUFMX05PVElGSUNBVElPTiwKKwlBTURfUFBfRVZFTlRfVkJJT1NfTk9USUZJQ0FUSU9OLAor CUFNRF9QUF9FVkVOVF9FTlRFUl9USEVSTUFMX1NUQVRFLAorCUFNRF9QUF9FVkVOVF9FWElUX1RI RVJNQUxfU1RBVEUsCisJQU1EX1BQX0VWRU5UX0VOVEVSX0ZPUkNFRF9TVEFURSwKKwlBTURfUFBf RVZFTlRfRVhJVF9GT1JDRURfU1RBVEUsCisJQU1EX1BQX0VWRU5UX0VOVEVSX0VYQ0xVU0lWRV9N T0RFLAorCUFNRF9QUF9FVkVOVF9FWElUX0VYQ0xVU0lWRV9NT0RFLAorCUFNRF9QUF9FVkVOVF9F TlRFUl9TQ1JFRU5fU0FWRVIsCisJQU1EX1BQX0VWRU5UX0VYSVRfU0NSRUVOX1NBVkVSLAorCUFN RF9QUF9FVkVOVF9WUFVfUkVDT1ZFUllfQkVHSU4sCisJQU1EX1BQX0VWRU5UX1ZQVV9SRUNPVkVS WV9FTkQsCisJQU1EX1BQX0VWRU5UX0VOQUJMRV9QT1dFUl9QTEFZLAorCUFNRF9QUF9FVkVOVF9E SVNBQkxFX1BPV0VSX1BMQVksCisJQU1EX1BQX0VWRU5UX0NIQU5HRV9QT1dFUl9TT1VSQ0VfVUlf TEFCRUwsCisJQU1EX1BQX0VWRU5UX0VOQUJMRV9VU0VSMkRfUEVSRk9STUFOQ0UsCisJQU1EX1BQ X0VWRU5UX0RJU0FCTEVfVVNFUjJEX1BFUkZPUk1BTkNFLAorCUFNRF9QUF9FVkVOVF9FTkFCTEVf VVNFUjNEX1BFUkZPUk1BTkNFLAorCUFNRF9QUF9FVkVOVF9ESVNBQkxFX1VTRVIzRF9QRVJGT1JN QU5DRSwKKwlBTURfUFBfRVZFTlRfRU5BQkxFX09WRVJfRFJJVkVfVEVTVCwKKwlBTURfUFBfRVZF TlRfRElTQUJMRV9PVkVSX0RSSVZFX1RFU1QsCisJQU1EX1BQX0VWRU5UX0VOQUJMRV9SRURVQ0VE X1JFRlJFU0hfUkFURSwKKwlBTURfUFBfRVZFTlRfRElTQUJMRV9SRURVQ0VEX1JFRlJFU0hfUkFU RSwKKwlBTURfUFBfRVZFTlRfRU5BQkxFX0dGWF9DTE9DS19HQVRJTkcsCisJQU1EX1BQX0VWRU5U X0RJU0FCTEVfR0ZYX0NMT0NLX0dBVElORywKKwlBTURfUFBfRVZFTlRfRU5BQkxFX0NHUEcsCisJ QU1EX1BQX0VWRU5UX0RJU0FCTEVfQ0dQRywKKwlBTURfUFBfRVZFTlRfRU5URVJfVEVYVF9NT0RF LAorCUFNRF9QUF9FVkVOVF9FWElUX1RFWFRfTU9ERSwKKwlBTURfUFBfRVZFTlRfVklERU9fU1RB UlQsCisJQU1EX1BQX0VWRU5UX1ZJREVPX1NUT1AsCisJQU1EX1BQX0VWRU5UX0VOQUJMRV9VU0VS X1NUQVRFLAorCUFNRF9QUF9FVkVOVF9ESVNBQkxFX1VTRVJfU1RBVEUsCisJQU1EX1BQX0VWRU5U X1JFQURKVVNUX1BPV0VSX1NUQVRFLAorCUFNRF9QUF9FVkVOVF9TVEFSVF9JTkFDVElWSVRZLAor CUFNRF9QUF9FVkVOVF9TVE9QX0lOQUNUSVZJVFksCisJQU1EX1BQX0VWRU5UX0xJTktFRF9BREFQ VEVSU19SRUFEWSwKKwlBTURfUFBfRVZFTlRfQURBUFRFUl9TQUZFX1RPX0RJU0FCTEUsCisJQU1E X1BQX0VWRU5UX0NPTVBMRVRFX0lOSVQsCisJQU1EX1BQX0VWRU5UX0NSSVRJQ0FMX1RIRVJNQUxf RkFVTFQsCisJQU1EX1BQX0VWRU5UX0JBQ0tMSUdIVF9DSEFOR0VELAorCUFNRF9QUF9FVkVOVF9F TkFCTEVfVkFSSV9CUklHSFQsCisJQU1EX1BQX0VWRU5UX0RJU0FCTEVfVkFSSV9CUklHSFQsCisJ QU1EX1BQX0VWRU5UX0VOQUJMRV9WQVJJX0JSSUdIVF9PTl9QT1dFUl9YUFJFU1MsCisJQU1EX1BQ X0VWRU5UX0RJU0FCTEVfVkFSSV9CUklHSFRfT05fUE9XRVJfWFBSRVNTLAorCUFNRF9QUF9FVkVO VF9TRVRfVkFSSV9CUklHSFRfTEVWRUwsCisJQU1EX1BQX0VWRU5UX1ZBUklfQlJJR0hUX01PTklU T1JfTUVBU1VSRU1FTlQsCisJQU1EX1BQX0VWRU5UX1NDUkVFTl9PTiwKKwlBTURfUFBfRVZFTlRf U0NSRUVOX09GRiwKKwlBTURfUFBfRVZFTlRfUFJFX0RJU1BMQVlfQ09ORklHX0NIQU5HRSwKKwlB TURfUFBfRVZFTlRfRU5URVJfVUxQX1NUQVRFLAorCUFNRF9QUF9FVkVOVF9FWElUX1VMUF9TVEFU RSwKKwlBTURfUFBfRVZFTlRfUkVHSVNURVJfSVBfU1RBVEUsCisJQU1EX1BQX0VWRU5UX1VOUkVH SVNURVJfSVBfU1RBVEUsCisJQU1EX1BQX0VWRU5UX0VOVEVSX01HUFVfTU9ERSwKKwlBTURfUFBf RVZFTlRfRVhJVF9NR1BVX01PREUsCisJQU1EX1BQX0VWRU5UX0VOVEVSX01VTFRJX0dQVV9NT0RF LAorCUFNRF9QUF9FVkVOVF9QUkVfU1VTUEVORCwKKwlBTURfUFBfRVZFTlRfUFJFX1JFU1VNRSwK KwlBTURfUFBfRVZFTlRfRU5URVJfQkFDT1MsCisJQU1EX1BQX0VWRU5UX0VYSVRfQkFDT1MsCisJ QU1EX1BQX0VWRU5UX1JFU1VNRV9CQUNPLAorCUFNRF9QUF9FVkVOVF9SRVNFVF9CQUNPLAorCUFN RF9QUF9FVkVOVF9QUkVfRElTUExBWV9QSFlfQUNDRVNTLAorCUFNRF9QUF9FVkVOVF9QT1NUX0RJ U1BMQVlfUEhZX0NDRVNTLAorCUFNRF9QUF9FVkVOVF9TVEFSVF9DT01QVVRFX0FQUExJQ0FUSU9O LAorCUFNRF9QUF9FVkVOVF9TVE9QX0NPTVBVVEVfQVBQTElDQVRJT04sCisJQU1EX1BQX0VWRU5U X1JFRFVDRV9QT1dFUl9MSU1JVCwKKwlBTURfUFBfRVZFTlRfRU5URVJfRlJBTUVfTE9DSywKKwlB TURfUFBfRVZFTlRfRVhJVF9GUkFNRV9MT09DSywKKwlBTURfUFBfRVZFTlRfTE9OR19JRExFX1JF UVVFU1RfQkFDTywKKwlBTURfUFBfRVZFTlRfTE9OR19JRExFX0VOVEVSX0JBQ08sCisJQU1EX1BQ X0VWRU5UX0xPTkdfSURMRV9FWElUX0JBQ08sCisJQU1EX1BQX0VWRU5UX0hJQkVSTkFURSwKKwlB TURfUFBfRVZFTlRfQ09OTkVDVEVEX1NUQU5EQlksCisJQU1EX1BQX0VWRU5UX0VOVEVSX1NFTEZf UkVGUkVTSCwKKwlBTURfUFBfRVZFTlRfRVhJVF9TRUxGX1JFRlJFU0gsCisJQU1EX1BQX0VWRU5U X1NUQVJUX0FWRlNfQlRDLAorCUFNRF9QUF9FVkVOVF9NQVgKK307CisKK2VudW0gYW1kX2RwbV9m b3JjZWRfbGV2ZWwgeworCUFNRF9EUE1fRk9SQ0VEX0xFVkVMX0FVVE8gPSAwLAorCUFNRF9EUE1f Rk9SQ0VEX0xFVkVMX0xPVyA9IDEsCisJQU1EX0RQTV9GT1JDRURfTEVWRUxfSElHSCA9IDIsCit9 OworCitzdHJ1Y3QgYW1kX3BwX2luaXQgeworCXN0cnVjdCBjZ3NfZGV2aWNlICpkZXZpY2U7CisJ dWludDMyX3QgY2hpcF9mYW1pbHk7CisJdWludDMyX3QgY2hpcF9pZDsKKwl1aW50MzJfdCByZXZf aWQ7Cit9OworCitzdHJ1Y3QgYW1kX3Bvd2VycGxheV9mdW5jcyB7CisJaW50ICgqZ2V0X3RlbXBl cmF0dXJlKSh2b2lkICpoYW5kbGUpOworCWludCAoKmxvYWRfZmlybXdhcmUpKHZvaWQgKmhhbmRs ZSk7CisJaW50ICgqd2FpdF9mb3JfZndfbG9hZGluZ19jb21wbGV0ZSkodm9pZCAqaGFuZGxlKTsK KwlpbnQgKCpmb3JjZV9wZXJmb3JtYW5jZV9sZXZlbCkodm9pZCAqaGFuZGxlLCBlbnVtIGFtZF9k cG1fZm9yY2VkX2xldmVsIGxldmVsKTsKKwllbnVtIGFtZF9kcG1fZm9yY2VkX2xldmVsICgqZ2V0 X3BlcmZvcm1hbmNlX2xldmVsKSh2b2lkICpoYW5kbGUpOworCWVudW0gYW1kX3BtX3N0YXRlX3R5 cGUgKCpnZXRfY3VycmVudF9wb3dlcl9zdGF0ZSkodm9pZCAqaGFuZGxlKTsKKwlpbnQgKCpnZXRf c2Nsaykodm9pZCAqaGFuZGxlLCBib29sIGxvdyk7CisJaW50ICgqZ2V0X21jbGspKHZvaWQgKmhh bmRsZSwgYm9vbCBsb3cpOworCWludCAoKnBvd2VyZ2F0ZV92Y2UpKHZvaWQgKmhhbmRsZSwgYm9v bCBnYXRlKTsKKwlpbnQgKCpwb3dlcmdhdGVfdXZkKSh2b2lkICpoYW5kbGUsIGJvb2wgZ2F0ZSk7 CisJaW50ICgqZGlzcGF0Y2hfdGFza3MpKHZvaWQgKmhhbmRsZSwgZW51bSBhbWRfcHBfZXZlbnQg ZXZlbnRfaWQsCisJCQkJICAgdm9pZCAqaW5wdXQsIHZvaWQgKm91dHB1dCk7CisJdm9pZCAoKnBy aW50X2N1cnJlbnRfcGVyZm9ybWFuY2VfbGV2ZWwpKHZvaWQgKmhhbmRsZSwKKwkJCQkJCSAgICAg IHN0cnVjdCBzZXFfZmlsZSAqbSk7Cit9OworCitzdHJ1Y3QgYW1kX3Bvd2VycGxheSB7CisJdm9p ZCAqcHBfaGFuZGxlOworCWNvbnN0IHN0cnVjdCBhbWRfaXBfZnVuY3MgKmlwX2Z1bmNzOworCWNv bnN0IHN0cnVjdCBhbWRfcG93ZXJwbGF5X2Z1bmNzICpwcF9mdW5jczsKK307CisKK2ludCBhbWRf cG93ZXJwbGF5X2luaXQoc3RydWN0IGFtZF9wcF9pbml0ICpwcF9pbml0LAorCQkgICAgICAgc3Ry dWN0IGFtZF9wb3dlcnBsYXkgKmFtZF9wcCk7CitpbnQgYW1kX3Bvd2VycGxheV9maW5pKHZvaWQg KmhhbmRsZSk7CisKKyNlbmRpZiAvKiBfQU1EX1BPV0VSUExBWV9IXyAqLwotLSAKMS44LjMuMQoK X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVs IG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0 cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK