From mboxrd@z Thu Jan 1 00:00:00 1970 From: Rajesh Yadav Subject: [DPU PATCH 09/11] drm/msm/dpu: Remove unused code and move the header Date: Wed, 30 May 2018 20:19:46 +0530 Message-ID: <1527691788-9350-10-git-send-email-ryadav@codeaurora.org> References: <1527691788-9350-1-git-send-email-ryadav@codeaurora.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1527691788-9350-1-git-send-email-ryadav-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: freedreno-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "Freedreno" To: dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, freedreno-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, linux-arm-msm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org Cc: Jordan Crouse , seanpaul-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org, robdclark-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org, hoegsberg-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org, Rajesh Yadav List-Id: devicetree@vger.kernel.org RnJvbTogSm9yZGFuIENyb3VzZSA8amNyb3VzZUBjb2RlYXVyb3JhLm9yZz4KClJlbW92ZSB1bnVz ZWQgY29kZSBmcm9tIGRwdV9pb191dGlsLmMuICBUaGUgZnVuY3Rpb25zIGFyZSBvbmx5CnVzZWQg aW5zaWRlIG9mIHRoZSBtc20gZHJpdmVyIHNvIHJlbW92ZSB0aGUgRVhQT1JUX1NZTUJPTAp0YWdz IGFuZCBtb3ZlIHRoZSBoZWFkZXIgZHB1X2lvX3V0aWwuaCBmcm9tIGluY2x1ZGUvbGludXguCgpT aWduZWQtb2ZmLWJ5OiBKb3JkYW4gQ3JvdXNlIDxqY3JvdXNlQGNvZGVhdXJvcmEub3JnPgpbcnlh ZGF2QGNvZGVhdXJvcmEub3JnOiByZWJhc2VkIGFuZCByZW1vdmVkIHNvbWUgZXh0cmEgdW51c2Vk IGNvZGVdClNpZ25lZC1vZmYtYnk6IFJhamVzaCBZYWRhdiA8cnlhZGF2QGNvZGVhdXJvcmEub3Jn PgotLS0KIGRyaXZlcnMvZ3B1L2RybS9tc20vZHB1X2lvX3V0aWwuYyB8IDM4MCArLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogZHJpdmVycy9ncHUvZHJtL21zbS9kcHVfaW9f dXRpbC5oIHwgIDYxICsrKysrKwogZHJpdmVycy9ncHUvZHJtL21zbS9tc21fZHJ2LmggICAgIHwg ICAxIC0KIGluY2x1ZGUvbGludXgvZHB1X2lvX3V0aWwuaCAgICAgICB8IDExNSAtLS0tLS0tLS0t LS0KIDQgZmlsZXMgY2hhbmdlZCwgNjYgaW5zZXJ0aW9ucygrKSwgNDkxIGRlbGV0aW9ucygtKQog Y3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9tc20vZHB1X2lvX3V0aWwuaAogZGVs ZXRlIG1vZGUgMTAwNjQ0IGluY2x1ZGUvbGludXgvZHB1X2lvX3V0aWwuaAoKZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9tc20vZHB1X2lvX3V0aWwuYyBiL2RyaXZlcnMvZ3B1L2RybS9tc20v ZHB1X2lvX3V0aWwuYwppbmRleCBlY2MyOTdjLi5mN2NhZWMzIDEwMDY0NAotLS0gYS9kcml2ZXJz L2dwdS9kcm0vbXNtL2RwdV9pb191dGlsLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kcHVf aW9fdXRpbC5jCkBAIC0xMywzMTggKzEzLDkgQEAKIAogI2luY2x1ZGUgPGxpbnV4L2Nsay5oPgog I2luY2x1ZGUgPGxpbnV4L2Vyci5oPgotI2luY2x1ZGUgPGxpbnV4L2lvLmg+Ci0jaW5jbHVkZSA8 bGludXgvcmVndWxhdG9yL2NvbnN1bWVyLmg+CiAjaW5jbHVkZSA8bGludXgvZGVsYXkuaD4KLSNp bmNsdWRlIDxsaW51eC9kcHVfaW9fdXRpbC5oPgogCi0jZGVmaW5lIE1BWF9JMkNfQ01EUyAgMTYK LXZvaWQgZHNzX3JlZ193KHN0cnVjdCBkc3NfaW9fZGF0YSAqaW8sIHUzMiBvZmZzZXQsIHUzMiB2 YWx1ZSwgdTMyIGRlYnVnKQotewotCXUzMiBpbl92YWw7Ci0KLQlpZiAoIWlvIHx8ICFpby0+YmFz ZSkgewotCQlERVZfRVJSKCIlcFMtPiVzOiBpbnZhbGlkIGlucHV0XG4iLAotCQkJX19idWlsdGlu X3JldHVybl9hZGRyZXNzKDApLCBfX2Z1bmNfXyk7Ci0JCXJldHVybjsKLQl9Ci0KLQlpZiAob2Zm c2V0ID4gaW8tPmxlbikgewotCQlERVZfRVJSKCIlcFMtPiVzOiBvZmZzZXQgb3V0IG9mIHJhbmdl XG4iLAotCQkJX19idWlsdGluX3JldHVybl9hZGRyZXNzKDApLCBfX2Z1bmNfXyk7Ci0JCXJldHVy bjsKLQl9Ci0KLQl3cml0ZWxfcmVsYXhlZCh2YWx1ZSwgaW8tPmJhc2UgKyBvZmZzZXQpOwotCWlm IChkZWJ1ZykgewotCQlpbl92YWwgPSByZWFkbF9yZWxheGVkKGlvLT5iYXNlICsgb2Zmc2V0KTsK LQkJREVWX0RCRygiWyUwOHhdID0+ICUwOHggWyUwOHhdXG4iLAotCQkJKHUzMikodW5zaWduZWQg bG9uZykoaW8tPmJhc2UgKyBvZmZzZXQpLAotCQkJdmFsdWUsIGluX3ZhbCk7Ci0JfQotfSAvKiBk c3NfcmVnX3cgKi8KLUVYUE9SVF9TWU1CT0woZHNzX3JlZ193KTsKLQotdTMyIGRzc19yZWdfcihz dHJ1Y3QgZHNzX2lvX2RhdGEgKmlvLCB1MzIgb2Zmc2V0LCB1MzIgZGVidWcpCi17Ci0JdTMyIHZh bHVlOwotCi0JaWYgKCFpbyB8fCAhaW8tPmJhc2UpIHsKLQkJREVWX0VSUigiJXBTLT4lczogaW52 YWxpZCBpbnB1dFxuIiwKLQkJCV9fYnVpbHRpbl9yZXR1cm5fYWRkcmVzcygwKSwgX19mdW5jX18p OwotCQlyZXR1cm4gLUVJTlZBTDsKLQl9Ci0KLQlpZiAob2Zmc2V0ID4gaW8tPmxlbikgewotCQlE RVZfRVJSKCIlcFMtPiVzOiBvZmZzZXQgb3V0IG9mIHJhbmdlXG4iLAotCQkJX19idWlsdGluX3Jl dHVybl9hZGRyZXNzKDApLCBfX2Z1bmNfXyk7Ci0JCXJldHVybiAtRUlOVkFMOwotCX0KLQotCXZh bHVlID0gcmVhZGxfcmVsYXhlZChpby0+YmFzZSArIG9mZnNldCk7Ci0JaWYgKGRlYnVnKQotCQlE RVZfREJHKCJbJTA4eF0gPD0gJTA4eFxuIiwKLQkJCSh1MzIpKHVuc2lnbmVkIGxvbmcpKGlvLT5i YXNlICsgb2Zmc2V0KSwgdmFsdWUpOwotCi0JcmV0dXJuIHZhbHVlOwotfSAvKiBkc3NfcmVnX3Ig Ki8KLUVYUE9SVF9TWU1CT0woZHNzX3JlZ19yKTsKLQotdm9pZCBkc3NfcmVnX2R1bXAodm9pZCBf X2lvbWVtICpiYXNlLCB1MzIgbGVuZ3RoLCBjb25zdCBjaGFyICpwcmVmaXgsCi0JdTMyIGRlYnVn KQotewotCWlmIChkZWJ1ZykKLQkJcHJpbnRfaGV4X2R1bXAoS0VSTl9JTkZPLCBwcmVmaXgsIERV TVBfUFJFRklYX09GRlNFVCwgMzIsIDQsCi0JCQkodm9pZCAqKWJhc2UsIGxlbmd0aCwgZmFsc2Up OwotfSAvKiBkc3NfcmVnX2R1bXAgKi8KLUVYUE9SVF9TWU1CT0woZHNzX3JlZ19kdW1wKTsKLQot c3RhdGljIHN0cnVjdCByZXNvdXJjZSAqbXNtX2Rzc19nZXRfcmVzX2J5bmFtZShzdHJ1Y3QgcGxh dGZvcm1fZGV2aWNlICpwZGV2LAotCXVuc2lnbmVkIGludCB0eXBlLCBjb25zdCBjaGFyICpuYW1l KQotewotCXN0cnVjdCByZXNvdXJjZSAqcmVzID0gTlVMTDsKLQotCXJlcyA9IHBsYXRmb3JtX2dl dF9yZXNvdXJjZV9ieW5hbWUocGRldiwgdHlwZSwgbmFtZSk7Ci0JaWYgKCFyZXMpCi0JCURFVl9F UlIoIiVzOiAnJXMnIHJlc291cmNlIG5vdCBmb3VuZFxuIiwgX19mdW5jX18sIG5hbWUpOwotCi0J cmV0dXJuIHJlczsKLX0gLyogbXNtX2Rzc19nZXRfcmVzX2J5bmFtZSAqLwotRVhQT1JUX1NZTUJP TChtc21fZHNzX2dldF9yZXNfYnluYW1lKTsKLQotaW50IG1zbV9kc3NfaW9yZW1hcF9ieW5hbWUo c3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiwKLQlzdHJ1Y3QgZHNzX2lvX2RhdGEgKmlvX2Rh dGEsIGNvbnN0IGNoYXIgKm5hbWUpCi17Ci0Jc3RydWN0IHJlc291cmNlICpyZXMgPSBOVUxMOwot Ci0JaWYgKCFwZGV2IHx8ICFpb19kYXRhKSB7Ci0JCURFVl9FUlIoIiVwUy0+JXM6IGludmFsaWQg aW5wdXRcbiIsCi0JCQlfX2J1aWx0aW5fcmV0dXJuX2FkZHJlc3MoMCksIF9fZnVuY19fKTsKLQkJ cmV0dXJuIC1FSU5WQUw7Ci0JfQotCi0JcmVzID0gbXNtX2Rzc19nZXRfcmVzX2J5bmFtZShwZGV2 LCBJT1JFU09VUkNFX01FTSwgbmFtZSk7Ci0JaWYgKCFyZXMpIHsKLQkJREVWX0VSUigiJXBTLT4l czogJyVzJyBtc21fZHNzX2dldF9yZXNfYnluYW1lIGZhaWxlZFxuIiwKLQkJCV9fYnVpbHRpbl9y ZXR1cm5fYWRkcmVzcygwKSwgX19mdW5jX18sIG5hbWUpOwotCQlyZXR1cm4gLUVOT0RFVjsKLQl9 Ci0KLQlpb19kYXRhLT5sZW4gPSAodTMyKXJlc291cmNlX3NpemUocmVzKTsKLQlpb19kYXRhLT5i YXNlID0gaW9yZW1hcChyZXMtPnN0YXJ0LCBpb19kYXRhLT5sZW4pOwotCWlmICghaW9fZGF0YS0+ YmFzZSkgewotCQlERVZfRVJSKCIlcFMtPiVzOiAnJXMnIGlvcmVtYXAgZmFpbGVkXG4iLAotCQkJ X19idWlsdGluX3JldHVybl9hZGRyZXNzKDApLCBfX2Z1bmNfXywgbmFtZSk7Ci0JCXJldHVybiAt RUlPOwotCX0KLQotCXJldHVybiAwOwotfSAvKiBtc21fZHNzX2lvcmVtYXBfYnluYW1lICovCi1F WFBPUlRfU1lNQk9MKG1zbV9kc3NfaW9yZW1hcF9ieW5hbWUpOwotCi12b2lkIG1zbV9kc3NfaW91 bm1hcChzdHJ1Y3QgZHNzX2lvX2RhdGEgKmlvX2RhdGEpCi17Ci0JaWYgKCFpb19kYXRhKSB7Ci0J CURFVl9FUlIoIiVwUy0+JXM6IGludmFsaWQgaW5wdXRcbiIsCi0JCQlfX2J1aWx0aW5fcmV0dXJu X2FkZHJlc3MoMCksIF9fZnVuY19fKTsKLQkJcmV0dXJuOwotCX0KLQotCWlmIChpb19kYXRhLT5i YXNlKSB7Ci0JCWlvdW5tYXAoaW9fZGF0YS0+YmFzZSk7Ci0JCWlvX2RhdGEtPmJhc2UgPSBOVUxM OwotCX0KLQlpb19kYXRhLT5sZW4gPSAwOwotfSAvKiBtc21fZHNzX2lvdW5tYXAgKi8KLUVYUE9S VF9TWU1CT0wobXNtX2Rzc19pb3VubWFwKTsKLQotaW50IG1zbV9kc3NfY29uZmlnX3ZyZWcoc3Ry dWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZHNzX3ZyZWcgKmluX3ZyZWcsCi0JaW50IG51bV92cmVn LCBpbnQgY29uZmlnKQotewotCWludCBpID0gMCwgcmMgPSAwOwotCXN0cnVjdCBkc3NfdnJlZyAq Y3Vycl92cmVnID0gTlVMTDsKLQllbnVtIGRzc192cmVnX3R5cGUgdHlwZTsKLQotCWlmICghaW5f dnJlZyB8fCAhbnVtX3ZyZWcpCi0JCXJldHVybiByYzsKLQotCWlmIChjb25maWcpIHsKLQkJZm9y IChpID0gMDsgaSA8IG51bV92cmVnOyBpKyspIHsKLQkJCWN1cnJfdnJlZyA9ICZpbl92cmVnW2ld OwotCQkJY3Vycl92cmVnLT52cmVnID0gcmVndWxhdG9yX2dldChkZXYsCi0JCQkJY3Vycl92cmVn LT52cmVnX25hbWUpOwotCQkJcmMgPSBQVFJfUkVUKGN1cnJfdnJlZy0+dnJlZyk7Ci0JCQlpZiAo cmMpIHsKLQkJCQlERVZfRVJSKCIlcFMtPiVzOiAlcyBnZXQgZmFpbGVkLiByYz0lZFxuIiwKLQkJ CQkJIF9fYnVpbHRpbl9yZXR1cm5fYWRkcmVzcygwKSwgX19mdW5jX18sCi0JCQkJCSBjdXJyX3Zy ZWctPnZyZWdfbmFtZSwgcmMpOwotCQkJCWN1cnJfdnJlZy0+dnJlZyA9IE5VTEw7Ci0JCQkJZ290 byB2cmVnX2dldF9mYWlsOwotCQkJfQotCQkJdHlwZSA9IChyZWd1bGF0b3JfY291bnRfdm9sdGFn ZXMoY3Vycl92cmVnLT52cmVnKSA+IDApCi0JCQkJCT8gRFNTX1JFR19MRE8gOiBEU1NfUkVHX1ZT OwotCQkJaWYgKHR5cGUgPT0gRFNTX1JFR19MRE8pIHsKLQkJCQlyYyA9IHJlZ3VsYXRvcl9zZXRf dm9sdGFnZSgKLQkJCQkJY3Vycl92cmVnLT52cmVnLAotCQkJCQljdXJyX3ZyZWctPm1pbl92b2x0 YWdlLAotCQkJCQljdXJyX3ZyZWctPm1heF92b2x0YWdlKTsKLQkJCQlpZiAocmMgPCAwKSB7Ci0J CQkJCURFVl9FUlIoIiVwUy0+JXM6ICVzIHNldCB2bHRnIGZhaWxcbiIsCi0JCQkJCQlfX2J1aWx0 aW5fcmV0dXJuX2FkZHJlc3MoMCksCi0JCQkJCQlfX2Z1bmNfXywKLQkJCQkJCWN1cnJfdnJlZy0+ dnJlZ19uYW1lKTsKLQkJCQkJZ290byB2cmVnX3NldF92b2x0YWdlX2ZhaWw7Ci0JCQkJfQotCQkJ fQotCQl9Ci0JfSBlbHNlIHsKLQkJZm9yIChpID0gbnVtX3ZyZWctMTsgaSA+PSAwOyBpLS0pIHsK LQkJCWN1cnJfdnJlZyA9ICZpbl92cmVnW2ldOwotCQkJaWYgKGN1cnJfdnJlZy0+dnJlZykgewot CQkJCXR5cGUgPSAocmVndWxhdG9yX2NvdW50X3ZvbHRhZ2VzKAotCQkJCQljdXJyX3ZyZWctPnZy ZWcpID4gMCkKLQkJCQkJPyBEU1NfUkVHX0xETyA6IERTU19SRUdfVlM7Ci0JCQkJaWYgKHR5cGUg PT0gRFNTX1JFR19MRE8pIHsKLQkJCQkJcmVndWxhdG9yX3NldF92b2x0YWdlKGN1cnJfdnJlZy0+ dnJlZywKLQkJCQkJCTAsIGN1cnJfdnJlZy0+bWF4X3ZvbHRhZ2UpOwotCQkJCX0KLQkJCQlyZWd1 bGF0b3JfcHV0KGN1cnJfdnJlZy0+dnJlZyk7Ci0JCQkJY3Vycl92cmVnLT52cmVnID0gTlVMTDsK LQkJCX0KLQkJfQotCX0KLQlyZXR1cm4gMDsKLQotdnJlZ191bmNvbmZpZzoKLWlmICh0eXBlID09 IERTU19SRUdfTERPKQotCXJlZ3VsYXRvcl9zZXRfbG9hZChjdXJyX3ZyZWctPnZyZWcsIDApOwot Ci12cmVnX3NldF92b2x0YWdlX2ZhaWw6Ci0JcmVndWxhdG9yX3B1dChjdXJyX3ZyZWctPnZyZWcp OwotCWN1cnJfdnJlZy0+dnJlZyA9IE5VTEw7Ci0KLXZyZWdfZ2V0X2ZhaWw6Ci0JZm9yIChpLS07 IGkgPj0gMDsgaS0tKSB7Ci0JCWN1cnJfdnJlZyA9ICZpbl92cmVnW2ldOwotCQl0eXBlID0gKHJl Z3VsYXRvcl9jb3VudF92b2x0YWdlcyhjdXJyX3ZyZWctPnZyZWcpID4gMCkKLQkJCT8gRFNTX1JF R19MRE8gOiBEU1NfUkVHX1ZTOwotCQlnb3RvIHZyZWdfdW5jb25maWc7Ci0JfQotCXJldHVybiBy YzsKLX0gLyogbXNtX2Rzc19jb25maWdfdnJlZyAqLwotRVhQT1JUX1NZTUJPTChtc21fZHNzX2Nv bmZpZ192cmVnKTsKLQotaW50IG1zbV9kc3NfZW5hYmxlX3ZyZWcoc3RydWN0IGRzc192cmVnICpp bl92cmVnLCBpbnQgbnVtX3ZyZWcsIGludCBlbmFibGUpCi17Ci0JaW50IGkgPSAwLCByYyA9IDA7 Ci0JYm9vbCBuZWVkX3NsZWVwOwotCi0JaWYgKGVuYWJsZSkgewotCQlmb3IgKGkgPSAwOyBpIDwg bnVtX3ZyZWc7IGkrKykgewotCQkJcmMgPSBQVFJfUkVUKGluX3ZyZWdbaV0udnJlZyk7Ci0JCQlp ZiAocmMpIHsKLQkJCQlERVZfRVJSKCIlcFMtPiVzOiAlcyByZWd1bGF0b3IgZXJyb3IuIHJjPSVk XG4iLAotCQkJCQlfX2J1aWx0aW5fcmV0dXJuX2FkZHJlc3MoMCksIF9fZnVuY19fLAotCQkJCQlp bl92cmVnW2ldLnZyZWdfbmFtZSwgcmMpOwotCQkJCWdvdG8gdnJlZ19zZXRfb3B0X21vZGVfZmFp bDsKLQkJCX0KLQkJCW5lZWRfc2xlZXAgPSAhcmVndWxhdG9yX2lzX2VuYWJsZWQoaW5fdnJlZ1tp XS52cmVnKTsKLQkJCWlmIChpbl92cmVnW2ldLnByZV9vbl9zbGVlcCAmJiBuZWVkX3NsZWVwKQot CQkJCXVzbGVlcF9yYW5nZShpbl92cmVnW2ldLnByZV9vbl9zbGVlcCAqIDEwMDAsCi0JCQkJCWlu X3ZyZWdbaV0ucHJlX29uX3NsZWVwICogMTAwMCk7Ci0JCQlyYyA9IHJlZ3VsYXRvcl9zZXRfbG9h ZChpbl92cmVnW2ldLnZyZWcsCi0JCQkJaW5fdnJlZ1tpXS5lbmFibGVfbG9hZCk7Ci0JCQlpZiAo cmMgPCAwKSB7Ci0JCQkJREVWX0VSUigiJXBTLT4lczogJXMgc2V0IG9wdCBtIGZhaWxcbiIsCi0J CQkJCV9fYnVpbHRpbl9yZXR1cm5fYWRkcmVzcygwKSwgX19mdW5jX18sCi0JCQkJCWluX3ZyZWdb aV0udnJlZ19uYW1lKTsKLQkJCQlnb3RvIHZyZWdfc2V0X29wdF9tb2RlX2ZhaWw7Ci0JCQl9Ci0J CQlyYyA9IHJlZ3VsYXRvcl9lbmFibGUoaW5fdnJlZ1tpXS52cmVnKTsKLQkJCWlmIChpbl92cmVn W2ldLnBvc3Rfb25fc2xlZXAgJiYgbmVlZF9zbGVlcCkKLQkJCQl1c2xlZXBfcmFuZ2UoaW5fdnJl Z1tpXS5wb3N0X29uX3NsZWVwICogMTAwMCwKLQkJCQkJaW5fdnJlZ1tpXS5wb3N0X29uX3NsZWVw ICogMTAwMCk7Ci0JCQlpZiAocmMgPCAwKSB7Ci0JCQkJREVWX0VSUigiJXBTLT4lczogJXMgZW5h YmxlIGZhaWxlZFxuIiwKLQkJCQkJX19idWlsdGluX3JldHVybl9hZGRyZXNzKDApLCBfX2Z1bmNf XywKLQkJCQkJaW5fdnJlZ1tpXS52cmVnX25hbWUpOwotCQkJCWdvdG8gZGlzYWJsZV92cmVnOwot CQkJfQotCQl9Ci0JfSBlbHNlIHsKLQkJZm9yIChpID0gbnVtX3ZyZWctMTsgaSA+PSAwOyBpLS0p IHsKLQkJCWlmIChpbl92cmVnW2ldLnByZV9vZmZfc2xlZXApCi0JCQkJdXNsZWVwX3JhbmdlKGlu X3ZyZWdbaV0ucHJlX29mZl9zbGVlcCAqIDEwMDAsCi0JCQkJCWluX3ZyZWdbaV0ucHJlX29mZl9z bGVlcCAqIDEwMDApOwotCQkJcmVndWxhdG9yX3NldF9sb2FkKGluX3ZyZWdbaV0udnJlZywKLQkJ CQlpbl92cmVnW2ldLmRpc2FibGVfbG9hZCk7Ci0JCQlyZWd1bGF0b3JfZGlzYWJsZShpbl92cmVn W2ldLnZyZWcpOwotCQkJaWYgKGluX3ZyZWdbaV0ucG9zdF9vZmZfc2xlZXApCi0JCQkJdXNsZWVw X3JhbmdlKGluX3ZyZWdbaV0ucG9zdF9vZmZfc2xlZXAgKiAxMDAwLAotCQkJCQlpbl92cmVnW2ld LnBvc3Rfb2ZmX3NsZWVwICogMTAwMCk7Ci0JCX0KLQl9Ci0JcmV0dXJuIHJjOwotCi1kaXNhYmxl X3ZyZWc6Ci0JcmVndWxhdG9yX3NldF9sb2FkKGluX3ZyZWdbaV0udnJlZywgaW5fdnJlZ1tpXS5k aXNhYmxlX2xvYWQpOwotCi12cmVnX3NldF9vcHRfbW9kZV9mYWlsOgotCWZvciAoaS0tOyBpID49 IDA7IGktLSkgewotCQlpZiAoaW5fdnJlZ1tpXS5wcmVfb2ZmX3NsZWVwKQotCQkJdXNsZWVwX3Jh bmdlKGluX3ZyZWdbaV0ucHJlX29mZl9zbGVlcCAqIDEwMDAsCi0JCQkJaW5fdnJlZ1tpXS5wcmVf b2ZmX3NsZWVwICogMTAwMCk7Ci0JCXJlZ3VsYXRvcl9zZXRfbG9hZChpbl92cmVnW2ldLnZyZWcs Ci0JCQlpbl92cmVnW2ldLmRpc2FibGVfbG9hZCk7Ci0JCXJlZ3VsYXRvcl9kaXNhYmxlKGluX3Zy ZWdbaV0udnJlZyk7Ci0JCWlmIChpbl92cmVnW2ldLnBvc3Rfb2ZmX3NsZWVwKQotCQkJdXNsZWVw X3JhbmdlKGluX3ZyZWdbaV0ucG9zdF9vZmZfc2xlZXAgKiAxMDAwLAotCQkJCWluX3ZyZWdbaV0u cG9zdF9vZmZfc2xlZXAgKiAxMDAwKTsKLQl9Ci0KLQlyZXR1cm4gcmM7Ci19IC8qIG1zbV9kc3Nf ZW5hYmxlX3ZyZWcgKi8KLUVYUE9SVF9TWU1CT0wobXNtX2Rzc19lbmFibGVfdnJlZyk7Ci0KLWlu dCBtc21fZHNzX2VuYWJsZV9ncGlvKHN0cnVjdCBkc3NfZ3BpbyAqaW5fZ3BpbywgaW50IG51bV9n cGlvLCBpbnQgZW5hYmxlKQotewotCWludCBpID0gMCwgcmMgPSAwOwotCi0JaWYgKGVuYWJsZSkg ewotCQlmb3IgKGkgPSAwOyBpIDwgbnVtX2dwaW87IGkrKykgewotCQkJREVWX0RCRygiJXBTLT4l czogJXMgZW5hYmxlXG4iLAotCQkJCV9fYnVpbHRpbl9yZXR1cm5fYWRkcmVzcygwKSwgX19mdW5j X18sCi0JCQkJaW5fZ3Bpb1tpXS5ncGlvX25hbWUpOwotCi0JCQlyYyA9IGdwaW9fcmVxdWVzdChp bl9ncGlvW2ldLmdwaW8sCi0JCQkJaW5fZ3Bpb1tpXS5ncGlvX25hbWUpOwotCQkJaWYgKHJjIDwg MCkgewotCQkJCURFVl9FUlIoIiVwUy0+JXM6ICVzIGVuYWJsZSBmYWlsZWRcbiIsCi0JCQkJCV9f YnVpbHRpbl9yZXR1cm5fYWRkcmVzcygwKSwgX19mdW5jX18sCi0JCQkJCWluX2dwaW9baV0uZ3Bp b19uYW1lKTsKLQkJCQlnb3RvIGRpc2FibGVfZ3BpbzsKLQkJCX0KLQkJCWdwaW9fc2V0X3ZhbHVl KGluX2dwaW9baV0uZ3BpbywgaW5fZ3Bpb1tpXS52YWx1ZSk7Ci0JCX0KLQl9IGVsc2UgewotCQlm b3IgKGkgPSBudW1fZ3Bpby0xOyBpID49IDA7IGktLSkgewotCQkJREVWX0RCRygiJXBTLT4lczog JXMgZGlzYWJsZVxuIiwKLQkJCQlfX2J1aWx0aW5fcmV0dXJuX2FkZHJlc3MoMCksIF9fZnVuY19f LAotCQkJCWluX2dwaW9baV0uZ3Bpb19uYW1lKTsKLQkJCWlmIChpbl9ncGlvW2ldLmdwaW8pCi0J CQkJZ3Bpb19mcmVlKGluX2dwaW9baV0uZ3Bpbyk7Ci0JCX0KLQl9Ci0JcmV0dXJuIHJjOwotCi1k aXNhYmxlX2dwaW86Ci0JZm9yIChpLS07IGkgPj0gMDsgaS0tKQotCQlpZiAoaW5fZ3Bpb1tpXS5n cGlvKQotCQkJZ3Bpb19mcmVlKGluX2dwaW9baV0uZ3Bpbyk7Ci0KLQlyZXR1cm4gcmM7Ci19IC8q IG1zbV9kc3NfZW5hYmxlX2dwaW8gKi8KLUVYUE9SVF9TWU1CT0wobXNtX2Rzc19lbmFibGVfZ3Bp byk7CisjaW5jbHVkZSAiZHB1X2lvX3V0aWwuaCIKIAogdm9pZCBtc21fZHNzX3B1dF9jbGsoc3Ry dWN0IGRzc19jbGsgKmNsa19hcnJ5LCBpbnQgbnVtX2NsaykKIHsKQEAgLTMzNSw4ICsyNiw3IEBA IHZvaWQgbXNtX2Rzc19wdXRfY2xrKHN0cnVjdCBkc3NfY2xrICpjbGtfYXJyeSwgaW50IG51bV9j bGspCiAJCQljbGtfcHV0KGNsa19hcnJ5W2ldLmNsayk7CiAJCWNsa19hcnJ5W2ldLmNsayA9IE5V TEw7CiAJfQotfSAvKiBtc21fZHNzX3B1dF9jbGsgKi8KLUVYUE9SVF9TWU1CT0wobXNtX2Rzc19w dXRfY2xrKTsKK30KIAogaW50IG1zbV9kc3NfZ2V0X2NsayhzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0 cnVjdCBkc3NfY2xrICpjbGtfYXJyeSwgaW50IG51bV9jbGspCiB7CkBAIC0zNjMsOCArNTMsNyBA QCBpbnQgbXNtX2Rzc19nZXRfY2xrKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRzc19jbGsg KmNsa19hcnJ5LCBpbnQgbnVtX2NsaykKIAl9CiAKIAlyZXR1cm4gcmM7Ci19IC8qIG1zbV9kc3Nf Z2V0X2NsayAqLwotRVhQT1JUX1NZTUJPTChtc21fZHNzX2dldF9jbGspOworfQogCiBpbnQgbXNt X2Rzc19jbGtfc2V0X3JhdGUoc3RydWN0IGRzc19jbGsgKmNsa19hcnJ5LCBpbnQgbnVtX2NsaykK IHsKQEAgLTM5Nyw4ICs4Niw3IEBAIGludCBtc21fZHNzX2Nsa19zZXRfcmF0ZShzdHJ1Y3QgZHNz X2NsayAqY2xrX2FycnksIGludCBudW1fY2xrKQogCX0KIAogCXJldHVybiByYzsKLX0gLyogbXNt X2Rzc19jbGtfc2V0X3JhdGUgKi8KLUVYUE9SVF9TWU1CT0wobXNtX2Rzc19jbGtfc2V0X3JhdGUp OworfQogCiBpbnQgbXNtX2Rzc19lbmFibGVfY2xrKHN0cnVjdCBkc3NfY2xrICpjbGtfYXJyeSwg aW50IG51bV9jbGssIGludCBlbmFibGUpCiB7CkBAIC00NDUsOCArMTMzLDcgQEAgaW50IG1zbV9k c3NfZW5hYmxlX2NsayhzdHJ1Y3QgZHNzX2NsayAqY2xrX2FycnksIGludCBudW1fY2xrLCBpbnQg ZW5hYmxlKQogCX0KIAogCXJldHVybiByYzsKLX0gLyogbXNtX2Rzc19lbmFibGVfY2xrICovCi1F WFBPUlRfU1lNQk9MKG1zbV9kc3NfZW5hYmxlX2Nsayk7Cit9CiAKIGludCBtc21fZHNzX3BhcnNl X2Nsb2NrKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsCiAJCXN0cnVjdCBkc3NfbW9kdWxl X3Bvd2VyICptcCkKQEAgLTQ5Nyw2MCArMTg0LDMgQEAgaW50IG1zbV9kc3NfcGFyc2VfY2xvY2so c3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiwKIAogCXJldHVybiByYzsKIH0KLQotaW50IGRw dV9pMmNfYnl0ZV9yZWFkKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQsIHVpbnQ4X3Qgc2xhdmVf YWRkciwKLQkJCXVpbnQ4X3QgcmVnX29mZnNldCwgdWludDhfdCAqcmVhZF9idWYpCi17Ci0Jc3Ry dWN0IGkyY19tc2cgbXNnc1syXTsKLQlpbnQgcmV0ID0gLTE7Ci0KLQlwcl9kZWJ1ZygiJXM6IHJl YWRpbmcgZnJvbSBzbGF2ZV9hZGRyPVsleF0gYW5kIG9mZnNldD1bJXhdXG4iLAotCQkgX19mdW5j X18sIHNsYXZlX2FkZHIsIHJlZ19vZmZzZXQpOwotCi0JbXNnc1swXS5hZGRyID0gc2xhdmVfYWRk ciA+PiAxOwotCW1zZ3NbMF0uZmxhZ3MgPSAwOwotCW1zZ3NbMF0uYnVmID0gJnJlZ19vZmZzZXQ7 Ci0JbXNnc1swXS5sZW4gPSAxOwotCi0JbXNnc1sxXS5hZGRyID0gc2xhdmVfYWRkciA+PiAxOwot CW1zZ3NbMV0uZmxhZ3MgPSBJMkNfTV9SRDsKLQltc2dzWzFdLmJ1ZiA9IHJlYWRfYnVmOwotCW1z Z3NbMV0ubGVuID0gMTsKLQotCXJldCA9IGkyY190cmFuc2ZlcihjbGllbnQtPmFkYXB0ZXIsIG1z Z3MsIDIpOwotCWlmIChyZXQgPCAxKSB7Ci0JCXByX2VycigiJXM6IEkyQyBSRUFEIEZBSUxFRD1b JWRdXG4iLCBfX2Z1bmNfXywgcmV0KTsKLQkJcmV0dXJuIC1FQUNDRVM7Ci0JfQotCXByX2RlYnVn KCIlczogaTJjIGJ1ZiBpcyBbJXhdXG4iLCBfX2Z1bmNfXywgKnJlYWRfYnVmKTsKLQlyZXR1cm4g MDsKLX0KLUVYUE9SVF9TWU1CT0woZHB1X2kyY19ieXRlX3JlYWQpOwotCi1pbnQgZHB1X2kyY19i eXRlX3dyaXRlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQsIHVpbnQ4X3Qgc2xhdmVfYWRkciwK LQkJCXVpbnQ4X3QgcmVnX29mZnNldCwgdWludDhfdCAqdmFsdWUpCi17Ci0Jc3RydWN0IGkyY19t c2cgbXNnc1sxXTsKLQl1aW50OF90IGRhdGFbMl07Ci0JaW50IHN0YXR1cyA9IC1FQUNDRVM7Ci0K LQlwcl9kZWJ1ZygiJXM6IHdyaXRpbmcgZnJvbSBzbGF2ZV9hZGRyPVsleF0gYW5kIG9mZnNldD1b JXhdXG4iLAotCQkgX19mdW5jX18sIHNsYXZlX2FkZHIsIHJlZ19vZmZzZXQpOwotCi0JZGF0YVsw XSA9IHJlZ19vZmZzZXQ7Ci0JZGF0YVsxXSA9ICp2YWx1ZTsKLQotCW1zZ3NbMF0uYWRkciA9IHNs YXZlX2FkZHIgPj4gMTsKLQltc2dzWzBdLmZsYWdzID0gMDsKLQltc2dzWzBdLmxlbiA9IDI7Ci0J bXNnc1swXS5idWYgPSBkYXRhOwotCi0Jc3RhdHVzID0gaTJjX3RyYW5zZmVyKGNsaWVudC0+YWRh cHRlciwgbXNncywgMSk7Ci0JaWYgKHN0YXR1cyA8IDEpIHsKLQkJcHJfZXJyKCJJMkMgV1JJVEUg RkFJTEVEPVslZF1cbiIsIHN0YXR1cyk7Ci0JCXJldHVybiAtRUFDQ0VTOwotCX0KLQlwcl9kZWJ1 ZygiJXM6IEkyQyB3cml0ZSBzdGF0dXM9JXhcbiIsIF9fZnVuY19fLCBzdGF0dXMpOwotCXJldHVy biBzdGF0dXM7Ci19Ci1FWFBPUlRfU1lNQk9MKGRwdV9pMmNfYnl0ZV93cml0ZSk7CmRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2RwdV9pb191dGlsLmggYi9kcml2ZXJzL2dwdS9kcm0v bXNtL2RwdV9pb191dGlsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzcz YjUyZQotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZHB1X2lvX3V0aWwu aApAQCAtMCwwICsxLDYxIEBACisvKiBDb3B5cmlnaHQgKGMpIDIwMTIsIDIwMTctMjAxOCwgVGhl IExpbnV4IEZvdW5kYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBwcm9n cmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2Rp ZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgdmVyc2lvbiAyIGFuZAorICogb25seSB2ZXJzaW9uIDIgYXMgcHVibGlzaGVkIGJ5IHRoZSBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1 dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBB TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVS Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo ZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqLwor CisjaWZuZGVmIF9fRFBVX0lPX1VUSUxfSF9fCisjZGVmaW5lIF9fRFBVX0lPX1VUSUxfSF9fCisK KyNpbmNsdWRlIDxsaW51eC9ncGlvLmg+CisjaW5jbHVkZSA8bGludXgvcGxhdGZvcm1fZGV2aWNl Lmg+CisjaW5jbHVkZSA8bGludXgvdHlwZXMuaD4KKworI2lmZGVmIERFQlVHCisjZGVmaW5lIERF Vl9EQkcoZm10LCBhcmdzLi4uKSAgIHByX2VycihmbXQsICMjYXJncykKKyNlbHNlCisjZGVmaW5l IERFVl9EQkcoZm10LCBhcmdzLi4uKSAgIHByX2RlYnVnKGZtdCwgIyNhcmdzKQorI2VuZGlmCisj ZGVmaW5lIERFVl9JTkZPKGZtdCwgYXJncy4uLikgIHByX2luZm8oZm10LCAjI2FyZ3MpCisjZGVm aW5lIERFVl9XQVJOKGZtdCwgYXJncy4uLikgIHByX3dhcm4oZm10LCAjI2FyZ3MpCisjZGVmaW5l IERFVl9FUlIoZm10LCBhcmdzLi4uKSAgIHByX2VycihmbXQsICMjYXJncykKKworc3RydWN0IGRz c19ncGlvIHsKKwl1bnNpZ25lZCBpbnQgZ3BpbzsKKwl1bnNpZ25lZCBpbnQgdmFsdWU7CisJY2hh ciBncGlvX25hbWVbMzJdOworfTsKKworZW51bSBkc3NfY2xrX3R5cGUgeworCURTU19DTEtfQUhC LCAvKiBubyBzZXQgcmF0ZS4gcmF0ZSBjb250cm9sbGVkIHRocm91Z2ggcnBtICovCisJRFNTX0NM S19QQ0xLLAorfTsKKworc3RydWN0IGRzc19jbGsgeworCXN0cnVjdCBjbGsgKmNsazsgLyogY2xr IGhhbmRsZSAqLworCWNoYXIgY2xrX25hbWVbMzJdOworCWVudW0gZHNzX2Nsa190eXBlIHR5cGU7 CisJdW5zaWduZWQgbG9uZyByYXRlOworCXVuc2lnbmVkIGxvbmcgbWF4X3JhdGU7Cit9OworCitz dHJ1Y3QgZHNzX21vZHVsZV9wb3dlciB7CisJdW5zaWduZWQgaW50IG51bV9ncGlvOworCXN0cnVj dCBkc3NfZ3BpbyAqZ3Bpb19jb25maWc7CisJdW5zaWduZWQgaW50IG51bV9jbGs7CisJc3RydWN0 IGRzc19jbGsgKmNsa19jb25maWc7Cit9OworCitpbnQgbXNtX2Rzc19nZXRfY2xrKHN0cnVjdCBk ZXZpY2UgKmRldiwgc3RydWN0IGRzc19jbGsgKmNsa19hcnJ5LCBpbnQgbnVtX2Nsayk7Cit2b2lk IG1zbV9kc3NfcHV0X2NsayhzdHJ1Y3QgZHNzX2NsayAqY2xrX2FycnksIGludCBudW1fY2xrKTsK K2ludCBtc21fZHNzX2Nsa19zZXRfcmF0ZShzdHJ1Y3QgZHNzX2NsayAqY2xrX2FycnksIGludCBu dW1fY2xrKTsKK2ludCBtc21fZHNzX2VuYWJsZV9jbGsoc3RydWN0IGRzc19jbGsgKmNsa19hcnJ5 LCBpbnQgbnVtX2NsaywgaW50IGVuYWJsZSk7CitpbnQgbXNtX2Rzc19wYXJzZV9jbG9jayhzdHJ1 Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LAorCQlzdHJ1Y3QgZHNzX21vZHVsZV9wb3dlciAqbXAp OworI2VuZGlmIC8qIF9fRFBVX0lPX1VUSUxfSF9fICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vbXNtL21zbV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2Rydi5oCmluZGV4 IGQ1OTM3YmEuLjgxMWY3ZDQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2Ry di5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2Rydi5oCkBAIC0zMyw3ICszMyw2IEBA CiAjaW5jbHVkZSA8bGludXgvdHlwZXMuaD4KICNpbmNsdWRlIDxsaW51eC9vZl9ncmFwaC5oPgog I2luY2x1ZGUgPGxpbnV4L29mX2RldmljZS5oPgotI2luY2x1ZGUgPGxpbnV4L2RwdV9pb191dGls Lmg+CiAjaW5jbHVkZSA8YXNtL3NpemVzLmg+CiAjaW5jbHVkZSA8bGludXgva3RocmVhZC5oPgog CmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2RwdV9pb191dGlsLmggYi9pbmNsdWRlL2xpbnV4 L2RwdV9pb191dGlsLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ1ZTYwNmYuLjAw MDAwMDAKLS0tIGEvaW5jbHVkZS9saW51eC9kcHVfaW9fdXRpbC5oCisrKyAvZGV2L251bGwKQEAg LTEsMTE1ICswLDAgQEAKLS8qIENvcHlyaWdodCAoYykgMjAxMiwgMjAxNy0yMDE4LCBUaGUgTGlu dXggRm91bmRhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBUaGlzIHByb2dyYW0g aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQot ICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2 ZXJzaW9uIDIgYW5kCi0gKiBvbmx5IHZlcnNpb24gMiBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbi4KLSAqCi0gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQg aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBX QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFO VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0g KiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICovCi0KLSNp Zm5kZWYgX19EUFVfSU9fVVRJTF9IX18KLSNkZWZpbmUgX19EUFVfSU9fVVRJTF9IX18KLQotI2lu Y2x1ZGUgPGxpbnV4L2dwaW8uaD4KLSNpbmNsdWRlIDxsaW51eC9wbGF0Zm9ybV9kZXZpY2UuaD4K LSNpbmNsdWRlIDxsaW51eC9yZWd1bGF0b3IvY29uc3VtZXIuaD4KLSNpbmNsdWRlIDxsaW51eC9p MmMuaD4KLSNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgotCi0jaWZkZWYgREVCVUcKLSNkZWZpbmUg REVWX0RCRyhmbXQsIGFyZ3MuLi4pICAgcHJfZXJyKGZtdCwgIyNhcmdzKQotI2Vsc2UKLSNkZWZp bmUgREVWX0RCRyhmbXQsIGFyZ3MuLi4pICAgcHJfZGVidWcoZm10LCAjI2FyZ3MpCi0jZW5kaWYK LSNkZWZpbmUgREVWX0lORk8oZm10LCBhcmdzLi4uKSAgcHJfaW5mbyhmbXQsICMjYXJncykKLSNk ZWZpbmUgREVWX1dBUk4oZm10LCBhcmdzLi4uKSAgcHJfd2FybihmbXQsICMjYXJncykKLSNkZWZp bmUgREVWX0VSUihmbXQsIGFyZ3MuLi4pICAgcHJfZXJyKGZtdCwgIyNhcmdzKQotCi1zdHJ1Y3Qg ZHNzX2lvX2RhdGEgewotCXUzMiBsZW47Ci0Jdm9pZCBfX2lvbWVtICpiYXNlOwotfTsKLQotdm9p ZCBkc3NfcmVnX3coc3RydWN0IGRzc19pb19kYXRhICppbywgdTMyIG9mZnNldCwgdTMyIHZhbHVl LCB1MzIgZGVidWcpOwotdTMyIGRzc19yZWdfcihzdHJ1Y3QgZHNzX2lvX2RhdGEgKmlvLCB1MzIg b2Zmc2V0LCB1MzIgZGVidWcpOwotdm9pZCBkc3NfcmVnX2R1bXAodm9pZCBfX2lvbWVtICpiYXNl LCB1MzIgbGVuLCBjb25zdCBjaGFyICpwcmVmaXgsIHUzMiBkZWJ1Zyk7Ci0KLSNkZWZpbmUgRFNT X1JFR19XX05EKGlvLCBvZmZzZXQsIHZhbCkgIGRzc19yZWdfdyhpbywgb2Zmc2V0LCB2YWwsIGZh bHNlKQotI2RlZmluZSBEU1NfUkVHX1coaW8sIG9mZnNldCwgdmFsKSAgICAgZHNzX3JlZ193KGlv LCBvZmZzZXQsIHZhbCwgdHJ1ZSkKLSNkZWZpbmUgRFNTX1JFR19SX05EKGlvLCBvZmZzZXQpICAg ICAgIGRzc19yZWdfcihpbywgb2Zmc2V0LCBmYWxzZSkKLSNkZWZpbmUgRFNTX1JFR19SKGlvLCBv ZmZzZXQpICAgICAgICAgIGRzc19yZWdfcihpbywgb2Zmc2V0LCB0cnVlKQotCi1lbnVtIGRzc192 cmVnX3R5cGUgewotCURTU19SRUdfTERPLAotCURTU19SRUdfVlMsCi19OwotCi1zdHJ1Y3QgZHNz X3ZyZWcgewotCXN0cnVjdCByZWd1bGF0b3IgKnZyZWc7IC8qIHZyZWcgaGFuZGxlICovCi0JY2hh ciB2cmVnX25hbWVbMzJdOwotCWludCBtaW5fdm9sdGFnZTsKLQlpbnQgbWF4X3ZvbHRhZ2U7Ci0J aW50IGVuYWJsZV9sb2FkOwotCWludCBkaXNhYmxlX2xvYWQ7Ci0JaW50IHByZV9vbl9zbGVlcDsK LQlpbnQgcG9zdF9vbl9zbGVlcDsKLQlpbnQgcHJlX29mZl9zbGVlcDsKLQlpbnQgcG9zdF9vZmZf c2xlZXA7Ci19OwotCi1zdHJ1Y3QgZHNzX2dwaW8gewotCXVuc2lnbmVkIGludCBncGlvOwotCXVu c2lnbmVkIGludCB2YWx1ZTsKLQljaGFyIGdwaW9fbmFtZVszMl07Ci19OwotCi1lbnVtIGRzc19j bGtfdHlwZSB7Ci0JRFNTX0NMS19BSEIsIC8qIG5vIHNldCByYXRlLiByYXRlIGNvbnRyb2xsZWQg dGhyb3VnaCBycG0gKi8KLQlEU1NfQ0xLX1BDTEssCi0JRFNTX0NMS19PVEhFUiwKLX07Ci0KLXN0 cnVjdCBkc3NfY2xrIHsKLQlzdHJ1Y3QgY2xrICpjbGs7IC8qIGNsayBoYW5kbGUgKi8KLQljaGFy IGNsa19uYW1lWzMyXTsKLQllbnVtIGRzc19jbGtfdHlwZSB0eXBlOwotCXVuc2lnbmVkIGxvbmcg cmF0ZTsKLQl1bnNpZ25lZCBsb25nIG1heF9yYXRlOwotfTsKLQotc3RydWN0IGRzc19tb2R1bGVf cG93ZXIgewotCXVuc2lnbmVkIGludCBudW1fdnJlZzsKLQlzdHJ1Y3QgZHNzX3ZyZWcgKnZyZWdf Y29uZmlnOwotCXVuc2lnbmVkIGludCBudW1fZ3BpbzsKLQlzdHJ1Y3QgZHNzX2dwaW8gKmdwaW9f Y29uZmlnOwotCXVuc2lnbmVkIGludCBudW1fY2xrOwotCXN0cnVjdCBkc3NfY2xrICpjbGtfY29u ZmlnOwotfTsKLQotaW50IG1zbV9kc3NfaW9yZW1hcF9ieW5hbWUoc3RydWN0IHBsYXRmb3JtX2Rl dmljZSAqcGRldiwKLQlzdHJ1Y3QgZHNzX2lvX2RhdGEgKmlvX2RhdGEsIGNvbnN0IGNoYXIgKm5h bWUpOwotdm9pZCBtc21fZHNzX2lvdW5tYXAoc3RydWN0IGRzc19pb19kYXRhICppb19kYXRhKTsK LQotaW50IG1zbV9kc3NfZW5hYmxlX2dwaW8oc3RydWN0IGRzc19ncGlvICppbl9ncGlvLCBpbnQg bnVtX2dwaW8sIGludCBlbmFibGUpOwotaW50IG1zbV9kc3NfZ3Bpb19lbmFibGUoc3RydWN0IGRz c19ncGlvICppbl9ncGlvLCBpbnQgbnVtX2dwaW8sIGludCBlbmFibGUpOwotCi1pbnQgbXNtX2Rz c19jb25maWdfdnJlZyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkc3NfdnJlZyAqaW5fdnJl ZywKLQlpbnQgbnVtX3ZyZWcsIGludCBjb25maWcpOwotaW50IG1zbV9kc3NfZW5hYmxlX3ZyZWco c3RydWN0IGRzc192cmVnICppbl92cmVnLCBpbnQgbnVtX3ZyZWcsCWludCBlbmFibGUpOwotCi1p bnQgbXNtX2Rzc19nZXRfY2xrKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRzc19jbGsgKmNs a19hcnJ5LCBpbnQgbnVtX2Nsayk7Ci12b2lkIG1zbV9kc3NfcHV0X2NsayhzdHJ1Y3QgZHNzX2Ns ayAqY2xrX2FycnksIGludCBudW1fY2xrKTsKLWludCBtc21fZHNzX2Nsa19zZXRfcmF0ZShzdHJ1 Y3QgZHNzX2NsayAqY2xrX2FycnksIGludCBudW1fY2xrKTsKLWludCBtc21fZHNzX2VuYWJsZV9j bGsoc3RydWN0IGRzc19jbGsgKmNsa19hcnJ5LCBpbnQgbnVtX2NsaywgaW50IGVuYWJsZSk7Ci1p bnQgbXNtX2Rzc19wYXJzZV9jbG9jayhzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LAotCQlz dHJ1Y3QgZHNzX21vZHVsZV9wb3dlciAqbXApOwotCi1pbnQgZHB1X2kyY19ieXRlX3JlYWQoc3Ry dWN0IGkyY19jbGllbnQgKmNsaWVudCwgdWludDhfdCBzbGF2ZV9hZGRyLAotCQkgICAgICAgdWlu dDhfdCByZWdfb2Zmc2V0LCB1aW50OF90ICpyZWFkX2J1Zik7Ci1pbnQgZHB1X2kyY19ieXRlX3dy aXRlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQsIHVpbnQ4X3Qgc2xhdmVfYWRkciwKLQkJCXVp bnQ4X3QgcmVnX29mZnNldCwgdWludDhfdCAqdmFsdWUpOwotCi0jZW5kaWYgLyogX19EUFVfSU9f VVRJTF9IX18gKi8KLS0gClRoZSBRdWFsY29tbSBJbm5vdmF0aW9uIENlbnRlciwgSW5jLiBpcyBh IG1lbWJlciBvZiB0aGUgQ29kZSBBdXJvcmEgRm9ydW0sCmEgTGludXggRm91bmRhdGlvbiBDb2xs YWJvcmF0aXZlIFByb2plY3QKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fCkZyZWVkcmVubyBtYWlsaW5nIGxpc3QKRnJlZWRyZW5vQGxpc3RzLmZyZWVkZXNr dG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2Zy ZWVkcmVubwo=