From mboxrd@z Thu Jan 1 00:00:00 1970 From: Rajesh Yadav Subject: [DPU PATCH 11/11] drm/msm/dpu: move dpu_io_util to dpu folder Date: Wed, 30 May 2018 20:19:48 +0530 Message-ID: <1527691788-9350-12-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: robdclark-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org, seanpaul-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org, Rajesh Yadav , hoegsberg-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org List-Id: linux-arm-msm@vger.kernel.org ZHB1X2lvX3V0aWwgaXMgdXNlZCBvbmx5IGJ5IGRwdSBkcml2ZXIgc28KbW92ZSBpdCB0byBkcHUg Zm9sZGVyLgoKU2lnbmVkLW9mZi1ieTogUmFqZXNoIFlhZGF2IDxyeWFkYXZAY29kZWF1cm9yYS5v cmc+Ci0tLQogZHJpdmVycy9ncHUvZHJtL21zbS9NYWtlZmlsZSAgICAgICAgICAgICAgICB8ICAg MiArLQogZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2lvX3V0aWwuYyB8IDE4NiAr KysrKysrKysrKysrKysrKysrKysrKysrKysrCiBkcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1 MS9kcHVfaW9fdXRpbC5oIHwgIDYxICsrKysrKysrKwogZHJpdmVycy9ncHUvZHJtL21zbS9kcHVf aW9fdXRpbC5jICAgICAgICAgICB8IDE4NiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBk cml2ZXJzL2dwdS9kcm0vbXNtL2RwdV9pb191dGlsLmggICAgICAgICAgIHwgIDYxIC0tLS0tLS0t LQogNSBmaWxlcyBjaGFuZ2VkLCAyNDggaW5zZXJ0aW9ucygrKSwgMjQ4IGRlbGV0aW9ucygtKQog Y3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9pb191 dGlsLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9k cHVfaW9fdXRpbC5oCiBkZWxldGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL21zbS9kcHVf aW9fdXRpbC5jCiBkZWxldGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL21zbS9kcHVfaW9f dXRpbC5oCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9NYWtlZmlsZSBiL2RyaXZl cnMvZ3B1L2RybS9tc20vTWFrZWZpbGUKaW5kZXggZjRjNTk1MS4uOTU2YzZjNCAxMDA2NDQKLS0t IGEvZHJpdmVycy9ncHUvZHJtL21zbS9NYWtlZmlsZQorKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNt L01ha2VmaWxlCkBAIC02OCw2ICs2OCw3IEBAIG1zbS15IDo9IFwKIAlkaXNwL2RwdTEvZHB1X2h3 X3RvcC5vIFwKIAlkaXNwL2RwdTEvZHB1X2h3X3V0aWwubyBcCiAJZGlzcC9kcHUxL2RwdV9od192 YmlmLm8gXAorCWRpc3AvZHB1MS9kcHVfaW9fdXRpbC5vIFwKIAlkaXNwL2RwdTEvZHB1X2lycS5v IFwKIAlkaXNwL2RwdTEvZHB1X2ttcy5vIFwKIAlkaXNwL2RwdTEvZHB1X2ttc191dGlscy5vIFwK QEAgLTc3LDcgKzc4LDYgQEAgbXNtLXkgOj0gXAogCWRpc3AvZHB1MS9kcHVfbWRzcy5vIFwKIAlk aXNwL2RwdTEvZHB1X3Bvd2VyX2hhbmRsZS5vIFwKIAlkcHVfZGJnLm8gXAotCWRwdV9pb191dGls Lm8gXAogCWRwdV9kYmdfZXZ0bG9nLm8gXAogCW1zbV9hdG9taWMubyBcCiAJbXNtX2RlYnVnZnMu byBcCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfaW9fdXRp bC5jIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2lvX3V0aWwuYwpuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mN2NhZWMzCi0tLSAvZGV2L251bGwKKysrIGIv ZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2lvX3V0aWwuYwpAQCAtMCwwICsxLDE4 NiBAQAorLyogQ29weXJpZ2h0IChjKSAyMDEyLTIwMTUsIDIwMTctMjAxOCwgVGhlIExpbnV4IEZv dW5kYXRpb24uCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBp cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Cisg KiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZl cnNpb24gMiBhbmQKKyAqIG9ubHkgdmVyc2lvbiAyIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBp biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdB UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5U QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAq IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKi8KKworI2lu Y2x1ZGUgPGxpbnV4L2Nsay5oPgorI2luY2x1ZGUgPGxpbnV4L2Vyci5oPgorI2luY2x1ZGUgPGxp bnV4L2RlbGF5Lmg+CisKKyNpbmNsdWRlICJkcHVfaW9fdXRpbC5oIgorCit2b2lkIG1zbV9kc3Nf cHV0X2NsayhzdHJ1Y3QgZHNzX2NsayAqY2xrX2FycnksIGludCBudW1fY2xrKQoreworCWludCBp OworCisJZm9yIChpID0gbnVtX2NsayAtIDE7IGkgPj0gMDsgaS0tKSB7CisJCWlmIChjbGtfYXJy eVtpXS5jbGspCisJCQljbGtfcHV0KGNsa19hcnJ5W2ldLmNsayk7CisJCWNsa19hcnJ5W2ldLmNs ayA9IE5VTEw7CisJfQorfQorCitpbnQgbXNtX2Rzc19nZXRfY2xrKHN0cnVjdCBkZXZpY2UgKmRl diwgc3RydWN0IGRzc19jbGsgKmNsa19hcnJ5LCBpbnQgbnVtX2NsaykKK3sKKwlpbnQgaSwgcmMg PSAwOworCisJZm9yIChpID0gMDsgaSA8IG51bV9jbGs7IGkrKykgeworCQljbGtfYXJyeVtpXS5j bGsgPSBjbGtfZ2V0KGRldiwgY2xrX2FycnlbaV0uY2xrX25hbWUpOworCQlyYyA9IFBUUl9SRVQo Y2xrX2FycnlbaV0uY2xrKTsKKwkJaWYgKHJjKSB7CisJCQlERVZfRVJSKCIlcFMtPiVzOiAnJXMn IGdldCBmYWlsZWQuIHJjPSVkXG4iLAorCQkJCV9fYnVpbHRpbl9yZXR1cm5fYWRkcmVzcygwKSwg X19mdW5jX18sCisJCQkJY2xrX2FycnlbaV0uY2xrX25hbWUsIHJjKTsKKwkJCWdvdG8gZXJyb3I7 CisJCX0KKwl9CisKKwlyZXR1cm4gcmM7CisKK2Vycm9yOgorCWZvciAoaS0tOyBpID49IDA7IGkt LSkgeworCQlpZiAoY2xrX2FycnlbaV0uY2xrKQorCQkJY2xrX3B1dChjbGtfYXJyeVtpXS5jbGsp OworCQljbGtfYXJyeVtpXS5jbGsgPSBOVUxMOworCX0KKworCXJldHVybiByYzsKK30KKworaW50 IG1zbV9kc3NfY2xrX3NldF9yYXRlKHN0cnVjdCBkc3NfY2xrICpjbGtfYXJyeSwgaW50IG51bV9j bGspCit7CisJaW50IGksIHJjID0gMDsKKworCWZvciAoaSA9IDA7IGkgPCBudW1fY2xrOyBpKysp IHsKKwkJaWYgKGNsa19hcnJ5W2ldLmNsaykgeworCQkJaWYgKGNsa19hcnJ5W2ldLnR5cGUgIT0g RFNTX0NMS19BSEIpIHsKKwkJCQlERVZfREJHKCIlcFMtPiVzOiAnJXMnIHJhdGUgJWxkXG4iLAor CQkJCQlfX2J1aWx0aW5fcmV0dXJuX2FkZHJlc3MoMCksIF9fZnVuY19fLAorCQkJCQljbGtfYXJy eVtpXS5jbGtfbmFtZSwKKwkJCQkJY2xrX2FycnlbaV0ucmF0ZSk7CisJCQkJcmMgPSBjbGtfc2V0 X3JhdGUoY2xrX2FycnlbaV0uY2xrLAorCQkJCQljbGtfYXJyeVtpXS5yYXRlKTsKKwkJCQlpZiAo cmMpIHsKKwkJCQkJREVWX0VSUigiJXBTLT4lczogJXMgZmFpbGVkLiByYz0lZFxuIiwKKwkJCQkJ CV9fYnVpbHRpbl9yZXR1cm5fYWRkcmVzcygwKSwKKwkJCQkJCV9fZnVuY19fLAorCQkJCQkJY2xr X2FycnlbaV0uY2xrX25hbWUsIHJjKTsKKwkJCQkJYnJlYWs7CisJCQkJfQorCQkJfQorCQl9IGVs c2UgeworCQkJREVWX0VSUigiJXBTLT4lczogJyVzJyBpcyBub3QgYXZhaWxhYmxlXG4iLAorCQkJ CV9fYnVpbHRpbl9yZXR1cm5fYWRkcmVzcygwKSwgX19mdW5jX18sCisJCQkJY2xrX2FycnlbaV0u Y2xrX25hbWUpOworCQkJcmMgPSAtRVBFUk07CisJCQlicmVhazsKKwkJfQorCX0KKworCXJldHVy biByYzsKK30KKworaW50IG1zbV9kc3NfZW5hYmxlX2NsayhzdHJ1Y3QgZHNzX2NsayAqY2xrX2Fy cnksIGludCBudW1fY2xrLCBpbnQgZW5hYmxlKQoreworCWludCBpLCByYyA9IDA7CisKKwlpZiAo ZW5hYmxlKSB7CisJCWZvciAoaSA9IDA7IGkgPCBudW1fY2xrOyBpKyspIHsKKwkJCURFVl9EQkco IiVwUy0+JXM6IGVuYWJsZSAnJXMnXG4iLAorCQkJCV9fYnVpbHRpbl9yZXR1cm5fYWRkcmVzcygw KSwgX19mdW5jX18sCisJCQkJY2xrX2FycnlbaV0uY2xrX25hbWUpOworCQkJaWYgKGNsa19hcnJ5 W2ldLmNsaykgeworCQkJCXJjID0gY2xrX3ByZXBhcmVfZW5hYmxlKGNsa19hcnJ5W2ldLmNsayk7 CisJCQkJaWYgKHJjKQorCQkJCQlERVZfRVJSKCIlcFMtPiVzOiAlcyBlbiBmYWlsLiByYz0lZFxu IiwKKwkJCQkJCV9fYnVpbHRpbl9yZXR1cm5fYWRkcmVzcygwKSwKKwkJCQkJCV9fZnVuY19fLAor CQkJCQkJY2xrX2FycnlbaV0uY2xrX25hbWUsIHJjKTsKKwkJCX0gZWxzZSB7CisJCQkJREVWX0VS UigiJXBTLT4lczogJyVzJyBpcyBub3QgYXZhaWxhYmxlXG4iLAorCQkJCQlfX2J1aWx0aW5fcmV0 dXJuX2FkZHJlc3MoMCksIF9fZnVuY19fLAorCQkJCQljbGtfYXJyeVtpXS5jbGtfbmFtZSk7CisJ CQkJcmMgPSAtRVBFUk07CisJCQl9CisKKwkJCWlmIChyYykgeworCQkJCW1zbV9kc3NfZW5hYmxl X2NsaygmY2xrX2FycnlbaV0sCisJCQkJCWksIGZhbHNlKTsKKwkJCQlicmVhazsKKwkJCX0KKwkJ fQorCX0gZWxzZSB7CisJCWZvciAoaSA9IG51bV9jbGsgLSAxOyBpID49IDA7IGktLSkgeworCQkJ REVWX0RCRygiJXBTLT4lczogZGlzYWJsZSAnJXMnXG4iLAorCQkJCV9fYnVpbHRpbl9yZXR1cm5f YWRkcmVzcygwKSwgX19mdW5jX18sCisJCQkJY2xrX2FycnlbaV0uY2xrX25hbWUpOworCisJCQlp ZiAoY2xrX2FycnlbaV0uY2xrKQorCQkJCWNsa19kaXNhYmxlX3VucHJlcGFyZShjbGtfYXJyeVtp XS5jbGspOworCQkJZWxzZQorCQkJCURFVl9FUlIoIiVwUy0+JXM6ICclcycgaXMgbm90IGF2YWls YWJsZVxuIiwKKwkJCQkJX19idWlsdGluX3JldHVybl9hZGRyZXNzKDApLCBfX2Z1bmNfXywKKwkJ CQkJY2xrX2FycnlbaV0uY2xrX25hbWUpOworCQl9CisJfQorCisJcmV0dXJuIHJjOworfQorCitp bnQgbXNtX2Rzc19wYXJzZV9jbG9jayhzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LAorCQlz dHJ1Y3QgZHNzX21vZHVsZV9wb3dlciAqbXApCit7CisJdTMyIGksIHJjID0gMDsKKwljb25zdCBj aGFyICpjbG9ja19uYW1lOworCXUzMiByYXRlID0gMDsKKwlpbnQgbnVtX2NsayA9IDA7CisKKwlp ZiAoIXBkZXYgfHwgIW1wKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCW1wLT5udW1fY2xrID0gMDsK KwludW1fY2xrID0gb2ZfcHJvcGVydHlfY291bnRfc3RyaW5ncyhwZGV2LT5kZXYub2Zfbm9kZSwg ImNsb2NrLW5hbWVzIik7CisJaWYgKG51bV9jbGsgPD0gMCkgeworCQlwcl9kZWJ1ZygiY2xvY2tz IGFyZSBub3QgZGVmaW5lZFxuIik7CisJCXJldHVybiAwOworCX0KKworCW1wLT5jbGtfY29uZmln ID0gZGV2bV9remFsbG9jKCZwZGV2LT5kZXYsCisJCQkJICAgICAgc2l6ZW9mKHN0cnVjdCBkc3Nf Y2xrKSAqIG51bV9jbGssCisJCQkJICAgICAgR0ZQX0tFUk5FTCk7CisJaWYgKCFtcC0+Y2xrX2Nv bmZpZykKKwkJcmV0dXJuIC1FTk9NRU07CisKKwlmb3IgKGkgPSAwOyBpIDwgbnVtX2NsazsgaSsr KSB7CisJCXJjID0gb2ZfcHJvcGVydHlfcmVhZF9zdHJpbmdfaW5kZXgocGRldi0+ZGV2Lm9mX25v ZGUsCisJCQkJCQkgICAiY2xvY2stbmFtZXMiLCBpLAorCQkJCQkJICAgJmNsb2NrX25hbWUpOwor CQlpZiAocmMpCisJCQlicmVhazsKKwkJc3RybGNweShtcC0+Y2xrX2NvbmZpZ1tpXS5jbGtfbmFt ZSwgY2xvY2tfbmFtZSwKKwkJCXNpemVvZihtcC0+Y2xrX2NvbmZpZ1tpXS5jbGtfbmFtZSkpOwor CisJCW1wLT5jbGtfY29uZmlnW2ldLnR5cGUgPSBEU1NfQ0xLX0FIQjsKKwkJcmMgPSBvZl9wcm9w ZXJ0eV9yZWFkX3UzMl9pbmRleChwZGV2LT5kZXYub2Zfbm9kZSwKKwkJCQkJCSJjbG9jay1mcmVx dWVuY3kiLCBpLAorCQkJCQkJJnJhdGUpOworCQlpZiAocmMpCisJCQljb250aW51ZTsKKwkJbXAt PmNsa19jb25maWdbaV0ucmF0ZSA9IHJhdGU7CisJCWlmIChyYXRlKQorCQkJbXAtPmNsa19jb25m aWdbaV0udHlwZSA9IERTU19DTEtfUENMSzsKKwl9CisKKwlpZiAoIXJjKQorCQltcC0+bnVtX2Ns ayA9IG51bV9jbGs7CisKKwlyZXR1cm4gcmM7Cit9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vbXNtL2Rpc3AvZHB1MS9kcHVfaW9fdXRpbC5oIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNw L2RwdTEvZHB1X2lvX3V0aWwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43 NzNiNTJlCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEv ZHB1X2lvX3V0aWwuaApAQCAtMCwwICsxLDYxIEBACisvKiBDb3B5cmlnaHQgKGMpIDIwMTIsIDIw MTctMjAxOCwgVGhlIExpbnV4IEZvdW5kYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor ICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0 IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFuZAorICogb25seSB2ZXJzaW9uIDIgYXMgcHVibGlz aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogVGhpcyBwcm9ncmFt IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBi dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50 eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ T1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0 YWlscy4KKyAqLworCisjaWZuZGVmIF9fRFBVX0lPX1VUSUxfSF9fCisjZGVmaW5lIF9fRFBVX0lP X1VUSUxfSF9fCisKKyNpbmNsdWRlIDxsaW51eC9ncGlvLmg+CisjaW5jbHVkZSA8bGludXgvcGxh dGZvcm1fZGV2aWNlLmg+CisjaW5jbHVkZSA8bGludXgvdHlwZXMuaD4KKworI2lmZGVmIERFQlVH CisjZGVmaW5lIERFVl9EQkcoZm10LCBhcmdzLi4uKSAgIHByX2VycihmbXQsICMjYXJncykKKyNl bHNlCisjZGVmaW5lIERFVl9EQkcoZm10LCBhcmdzLi4uKSAgIHByX2RlYnVnKGZtdCwgIyNhcmdz KQorI2VuZGlmCisjZGVmaW5lIERFVl9JTkZPKGZtdCwgYXJncy4uLikgIHByX2luZm8oZm10LCAj I2FyZ3MpCisjZGVmaW5lIERFVl9XQVJOKGZtdCwgYXJncy4uLikgIHByX3dhcm4oZm10LCAjI2Fy Z3MpCisjZGVmaW5lIERFVl9FUlIoZm10LCBhcmdzLi4uKSAgIHByX2VycihmbXQsICMjYXJncykK Kworc3RydWN0IGRzc19ncGlvIHsKKwl1bnNpZ25lZCBpbnQgZ3BpbzsKKwl1bnNpZ25lZCBpbnQg dmFsdWU7CisJY2hhciBncGlvX25hbWVbMzJdOworfTsKKworZW51bSBkc3NfY2xrX3R5cGUgewor CURTU19DTEtfQUhCLCAvKiBubyBzZXQgcmF0ZS4gcmF0ZSBjb250cm9sbGVkIHRocm91Z2ggcnBt ICovCisJRFNTX0NMS19QQ0xLLAorfTsKKworc3RydWN0IGRzc19jbGsgeworCXN0cnVjdCBjbGsg KmNsazsgLyogY2xrIGhhbmRsZSAqLworCWNoYXIgY2xrX25hbWVbMzJdOworCWVudW0gZHNzX2Ns a190eXBlIHR5cGU7CisJdW5zaWduZWQgbG9uZyByYXRlOworCXVuc2lnbmVkIGxvbmcgbWF4X3Jh dGU7Cit9OworCitzdHJ1Y3QgZHNzX21vZHVsZV9wb3dlciB7CisJdW5zaWduZWQgaW50IG51bV9n cGlvOworCXN0cnVjdCBkc3NfZ3BpbyAqZ3Bpb19jb25maWc7CisJdW5zaWduZWQgaW50IG51bV9j bGs7CisJc3RydWN0IGRzc19jbGsgKmNsa19jb25maWc7Cit9OworCitpbnQgbXNtX2Rzc19nZXRf Y2xrKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRzc19jbGsgKmNsa19hcnJ5LCBpbnQgbnVt X2Nsayk7Cit2b2lkIG1zbV9kc3NfcHV0X2NsayhzdHJ1Y3QgZHNzX2NsayAqY2xrX2FycnksIGlu dCBudW1fY2xrKTsKK2ludCBtc21fZHNzX2Nsa19zZXRfcmF0ZShzdHJ1Y3QgZHNzX2NsayAqY2xr X2FycnksIGludCBudW1fY2xrKTsKK2ludCBtc21fZHNzX2VuYWJsZV9jbGsoc3RydWN0IGRzc19j bGsgKmNsa19hcnJ5LCBpbnQgbnVtX2NsaywgaW50IGVuYWJsZSk7CitpbnQgbXNtX2Rzc19wYXJz ZV9jbG9jayhzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LAorCQlzdHJ1Y3QgZHNzX21vZHVs ZV9wb3dlciAqbXApOworI2VuZGlmIC8qIF9fRFBVX0lPX1VUSUxfSF9fICovCmRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vbXNtL2RwdV9pb191dGlsLmMgYi9kcml2ZXJzL2dwdS9kcm0vbXNt L2RwdV9pb191dGlsLmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY3Y2FlYzMuLjAw MDAwMDAKLS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9kcHVfaW9fdXRpbC5jCisrKyAvZGV2L251 bGwKQEAgLTEsMTg2ICswLDAgQEAKLS8qIENvcHlyaWdodCAoYykgMjAxMi0yMDE1LCAyMDE3LTIw MTgsIFRoZSBMaW51eCBGb3VuZGF0aW9uLgotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g KiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg YW5kL29yIG1vZGlmeQotICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYW5kCi0gKiBvbmx5IHZlcnNpb24gMiBhcyBwdWJsaXNo ZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KLSAqCi0gKiBUaGlzIHByb2dyYW0g aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1 dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5 IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP U0UuICBTZWUgdGhlCi0gKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh aWxzLgotICovCi0KLSNpbmNsdWRlIDxsaW51eC9jbGsuaD4KLSNpbmNsdWRlIDxsaW51eC9lcnIu aD4KLSNpbmNsdWRlIDxsaW51eC9kZWxheS5oPgotCi0jaW5jbHVkZSAiZHB1X2lvX3V0aWwuaCIK LQotdm9pZCBtc21fZHNzX3B1dF9jbGsoc3RydWN0IGRzc19jbGsgKmNsa19hcnJ5LCBpbnQgbnVt X2NsaykKLXsKLQlpbnQgaTsKLQotCWZvciAoaSA9IG51bV9jbGsgLSAxOyBpID49IDA7IGktLSkg ewotCQlpZiAoY2xrX2FycnlbaV0uY2xrKQotCQkJY2xrX3B1dChjbGtfYXJyeVtpXS5jbGspOwot CQljbGtfYXJyeVtpXS5jbGsgPSBOVUxMOwotCX0KLX0KLQotaW50IG1zbV9kc3NfZ2V0X2Nsayhz dHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkc3NfY2xrICpjbGtfYXJyeSwgaW50IG51bV9jbGsp Ci17Ci0JaW50IGksIHJjID0gMDsKLQotCWZvciAoaSA9IDA7IGkgPCBudW1fY2xrOyBpKyspIHsK LQkJY2xrX2FycnlbaV0uY2xrID0gY2xrX2dldChkZXYsIGNsa19hcnJ5W2ldLmNsa19uYW1lKTsK LQkJcmMgPSBQVFJfUkVUKGNsa19hcnJ5W2ldLmNsayk7Ci0JCWlmIChyYykgewotCQkJREVWX0VS UigiJXBTLT4lczogJyVzJyBnZXQgZmFpbGVkLiByYz0lZFxuIiwKLQkJCQlfX2J1aWx0aW5fcmV0 dXJuX2FkZHJlc3MoMCksIF9fZnVuY19fLAotCQkJCWNsa19hcnJ5W2ldLmNsa19uYW1lLCByYyk7 Ci0JCQlnb3RvIGVycm9yOwotCQl9Ci0JfQotCi0JcmV0dXJuIHJjOwotCi1lcnJvcjoKLQlmb3Ig KGktLTsgaSA+PSAwOyBpLS0pIHsKLQkJaWYgKGNsa19hcnJ5W2ldLmNsaykKLQkJCWNsa19wdXQo Y2xrX2FycnlbaV0uY2xrKTsKLQkJY2xrX2FycnlbaV0uY2xrID0gTlVMTDsKLQl9Ci0KLQlyZXR1 cm4gcmM7Ci19Ci0KLWludCBtc21fZHNzX2Nsa19zZXRfcmF0ZShzdHJ1Y3QgZHNzX2NsayAqY2xr X2FycnksIGludCBudW1fY2xrKQotewotCWludCBpLCByYyA9IDA7Ci0KLQlmb3IgKGkgPSAwOyBp IDwgbnVtX2NsazsgaSsrKSB7Ci0JCWlmIChjbGtfYXJyeVtpXS5jbGspIHsKLQkJCWlmIChjbGtf YXJyeVtpXS50eXBlICE9IERTU19DTEtfQUhCKSB7Ci0JCQkJREVWX0RCRygiJXBTLT4lczogJyVz JyByYXRlICVsZFxuIiwKLQkJCQkJX19idWlsdGluX3JldHVybl9hZGRyZXNzKDApLCBfX2Z1bmNf XywKLQkJCQkJY2xrX2FycnlbaV0uY2xrX25hbWUsCi0JCQkJCWNsa19hcnJ5W2ldLnJhdGUpOwot CQkJCXJjID0gY2xrX3NldF9yYXRlKGNsa19hcnJ5W2ldLmNsaywKLQkJCQkJY2xrX2FycnlbaV0u cmF0ZSk7Ci0JCQkJaWYgKHJjKSB7Ci0JCQkJCURFVl9FUlIoIiVwUy0+JXM6ICVzIGZhaWxlZC4g cmM9JWRcbiIsCi0JCQkJCQlfX2J1aWx0aW5fcmV0dXJuX2FkZHJlc3MoMCksCi0JCQkJCQlfX2Z1 bmNfXywKLQkJCQkJCWNsa19hcnJ5W2ldLmNsa19uYW1lLCByYyk7Ci0JCQkJCWJyZWFrOwotCQkJ CX0KLQkJCX0KLQkJfSBlbHNlIHsKLQkJCURFVl9FUlIoIiVwUy0+JXM6ICclcycgaXMgbm90IGF2 YWlsYWJsZVxuIiwKLQkJCQlfX2J1aWx0aW5fcmV0dXJuX2FkZHJlc3MoMCksIF9fZnVuY19fLAot CQkJCWNsa19hcnJ5W2ldLmNsa19uYW1lKTsKLQkJCXJjID0gLUVQRVJNOwotCQkJYnJlYWs7Ci0J CX0KLQl9Ci0KLQlyZXR1cm4gcmM7Ci19Ci0KLWludCBtc21fZHNzX2VuYWJsZV9jbGsoc3RydWN0 IGRzc19jbGsgKmNsa19hcnJ5LCBpbnQgbnVtX2NsaywgaW50IGVuYWJsZSkKLXsKLQlpbnQgaSwg cmMgPSAwOwotCi0JaWYgKGVuYWJsZSkgewotCQlmb3IgKGkgPSAwOyBpIDwgbnVtX2NsazsgaSsr KSB7Ci0JCQlERVZfREJHKCIlcFMtPiVzOiBlbmFibGUgJyVzJ1xuIiwKLQkJCQlfX2J1aWx0aW5f cmV0dXJuX2FkZHJlc3MoMCksIF9fZnVuY19fLAotCQkJCWNsa19hcnJ5W2ldLmNsa19uYW1lKTsK LQkJCWlmIChjbGtfYXJyeVtpXS5jbGspIHsKLQkJCQlyYyA9IGNsa19wcmVwYXJlX2VuYWJsZShj bGtfYXJyeVtpXS5jbGspOwotCQkJCWlmIChyYykKLQkJCQkJREVWX0VSUigiJXBTLT4lczogJXMg ZW4gZmFpbC4gcmM9JWRcbiIsCi0JCQkJCQlfX2J1aWx0aW5fcmV0dXJuX2FkZHJlc3MoMCksCi0J CQkJCQlfX2Z1bmNfXywKLQkJCQkJCWNsa19hcnJ5W2ldLmNsa19uYW1lLCByYyk7Ci0JCQl9IGVs c2UgewotCQkJCURFVl9FUlIoIiVwUy0+JXM6ICclcycgaXMgbm90IGF2YWlsYWJsZVxuIiwKLQkJ CQkJX19idWlsdGluX3JldHVybl9hZGRyZXNzKDApLCBfX2Z1bmNfXywKLQkJCQkJY2xrX2Fycnlb aV0uY2xrX25hbWUpOwotCQkJCXJjID0gLUVQRVJNOwotCQkJfQotCi0JCQlpZiAocmMpIHsKLQkJ CQltc21fZHNzX2VuYWJsZV9jbGsoJmNsa19hcnJ5W2ldLAotCQkJCQlpLCBmYWxzZSk7Ci0JCQkJ YnJlYWs7Ci0JCQl9Ci0JCX0KLQl9IGVsc2UgewotCQlmb3IgKGkgPSBudW1fY2xrIC0gMTsgaSA+ PSAwOyBpLS0pIHsKLQkJCURFVl9EQkcoIiVwUy0+JXM6IGRpc2FibGUgJyVzJ1xuIiwKLQkJCQlf X2J1aWx0aW5fcmV0dXJuX2FkZHJlc3MoMCksIF9fZnVuY19fLAotCQkJCWNsa19hcnJ5W2ldLmNs a19uYW1lKTsKLQotCQkJaWYgKGNsa19hcnJ5W2ldLmNsaykKLQkJCQljbGtfZGlzYWJsZV91bnBy ZXBhcmUoY2xrX2FycnlbaV0uY2xrKTsKLQkJCWVsc2UKLQkJCQlERVZfRVJSKCIlcFMtPiVzOiAn JXMnIGlzIG5vdCBhdmFpbGFibGVcbiIsCi0JCQkJCV9fYnVpbHRpbl9yZXR1cm5fYWRkcmVzcygw KSwgX19mdW5jX18sCi0JCQkJCWNsa19hcnJ5W2ldLmNsa19uYW1lKTsKLQkJfQotCX0KLQotCXJl dHVybiByYzsKLX0KLQotaW50IG1zbV9kc3NfcGFyc2VfY2xvY2soc3RydWN0IHBsYXRmb3JtX2Rl dmljZSAqcGRldiwKLQkJc3RydWN0IGRzc19tb2R1bGVfcG93ZXIgKm1wKQotewotCXUzMiBpLCBy YyA9IDA7Ci0JY29uc3QgY2hhciAqY2xvY2tfbmFtZTsKLQl1MzIgcmF0ZSA9IDA7Ci0JaW50IG51 bV9jbGsgPSAwOwotCi0JaWYgKCFwZGV2IHx8ICFtcCkKLQkJcmV0dXJuIC1FSU5WQUw7Ci0KLQlt cC0+bnVtX2NsayA9IDA7Ci0JbnVtX2NsayA9IG9mX3Byb3BlcnR5X2NvdW50X3N0cmluZ3MocGRl di0+ZGV2Lm9mX25vZGUsICJjbG9jay1uYW1lcyIpOwotCWlmIChudW1fY2xrIDw9IDApIHsKLQkJ cHJfZGVidWcoImNsb2NrcyBhcmUgbm90IGRlZmluZWRcbiIpOwotCQlyZXR1cm4gMDsKLQl9Ci0K LQltcC0+Y2xrX2NvbmZpZyA9IGRldm1fa3phbGxvYygmcGRldi0+ZGV2LAotCQkJCSAgICAgIHNp emVvZihzdHJ1Y3QgZHNzX2NsaykgKiBudW1fY2xrLAotCQkJCSAgICAgIEdGUF9LRVJORUwpOwot CWlmICghbXAtPmNsa19jb25maWcpCi0JCXJldHVybiAtRU5PTUVNOwotCi0JZm9yIChpID0gMDsg aSA8IG51bV9jbGs7IGkrKykgewotCQlyYyA9IG9mX3Byb3BlcnR5X3JlYWRfc3RyaW5nX2luZGV4 KHBkZXYtPmRldi5vZl9ub2RlLAotCQkJCQkJICAgImNsb2NrLW5hbWVzIiwgaSwKLQkJCQkJCSAg ICZjbG9ja19uYW1lKTsKLQkJaWYgKHJjKQotCQkJYnJlYWs7Ci0JCXN0cmxjcHkobXAtPmNsa19j b25maWdbaV0uY2xrX25hbWUsIGNsb2NrX25hbWUsCi0JCQlzaXplb2YobXAtPmNsa19jb25maWdb aV0uY2xrX25hbWUpKTsKLQotCQltcC0+Y2xrX2NvbmZpZ1tpXS50eXBlID0gRFNTX0NMS19BSEI7 Ci0JCXJjID0gb2ZfcHJvcGVydHlfcmVhZF91MzJfaW5kZXgocGRldi0+ZGV2Lm9mX25vZGUsCi0J CQkJCQkiY2xvY2stZnJlcXVlbmN5IiwgaSwKLQkJCQkJCSZyYXRlKTsKLQkJaWYgKHJjKQotCQkJ Y29udGludWU7Ci0JCW1wLT5jbGtfY29uZmlnW2ldLnJhdGUgPSByYXRlOwotCQlpZiAocmF0ZSkK LQkJCW1wLT5jbGtfY29uZmlnW2ldLnR5cGUgPSBEU1NfQ0xLX1BDTEs7Ci0JfQotCi0JaWYgKCFy YykKLQkJbXAtPm51bV9jbGsgPSBudW1fY2xrOwotCi0JcmV0dXJuIHJjOwotfQpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL21zbS9kcHVfaW9fdXRpbC5oIGIvZHJpdmVycy9ncHUvZHJtL21z bS9kcHVfaW9fdXRpbC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NzNiNTJlLi4w MDAwMDAwCi0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZHB1X2lvX3V0aWwuaAorKysgL2Rldi9u dWxsCkBAIC0xLDYxICswLDAgQEAKLS8qIENvcHlyaWdodCAoYykgMjAxMiwgMjAxNy0yMDE4LCBU aGUgTGludXggRm91bmRhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBUaGlzIHBy b2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1v ZGlmeQotICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSB2ZXJzaW9uIDIgYW5kCi0gKiBvbmx5IHZlcnNpb24gMiBhcyBwdWJsaXNoZWQgYnkgdGhl IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KLSAqCi0gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJp YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VU IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBN RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg dGhlCi0gKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICov Ci0KLSNpZm5kZWYgX19EUFVfSU9fVVRJTF9IX18KLSNkZWZpbmUgX19EUFVfSU9fVVRJTF9IX18K LQotI2luY2x1ZGUgPGxpbnV4L2dwaW8uaD4KLSNpbmNsdWRlIDxsaW51eC9wbGF0Zm9ybV9kZXZp Y2UuaD4KLSNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgotCi0jaWZkZWYgREVCVUcKLSNkZWZpbmUg REVWX0RCRyhmbXQsIGFyZ3MuLi4pICAgcHJfZXJyKGZtdCwgIyNhcmdzKQotI2Vsc2UKLSNkZWZp bmUgREVWX0RCRyhmbXQsIGFyZ3MuLi4pICAgcHJfZGVidWcoZm10LCAjI2FyZ3MpCi0jZW5kaWYK LSNkZWZpbmUgREVWX0lORk8oZm10LCBhcmdzLi4uKSAgcHJfaW5mbyhmbXQsICMjYXJncykKLSNk ZWZpbmUgREVWX1dBUk4oZm10LCBhcmdzLi4uKSAgcHJfd2FybihmbXQsICMjYXJncykKLSNkZWZp bmUgREVWX0VSUihmbXQsIGFyZ3MuLi4pICAgcHJfZXJyKGZtdCwgIyNhcmdzKQotCi1zdHJ1Y3Qg ZHNzX2dwaW8gewotCXVuc2lnbmVkIGludCBncGlvOwotCXVuc2lnbmVkIGludCB2YWx1ZTsKLQlj aGFyIGdwaW9fbmFtZVszMl07Ci19OwotCi1lbnVtIGRzc19jbGtfdHlwZSB7Ci0JRFNTX0NMS19B SEIsIC8qIG5vIHNldCByYXRlLiByYXRlIGNvbnRyb2xsZWQgdGhyb3VnaCBycG0gKi8KLQlEU1Nf Q0xLX1BDTEssCi19OwotCi1zdHJ1Y3QgZHNzX2NsayB7Ci0Jc3RydWN0IGNsayAqY2xrOyAvKiBj bGsgaGFuZGxlICovCi0JY2hhciBjbGtfbmFtZVszMl07Ci0JZW51bSBkc3NfY2xrX3R5cGUgdHlw ZTsKLQl1bnNpZ25lZCBsb25nIHJhdGU7Ci0JdW5zaWduZWQgbG9uZyBtYXhfcmF0ZTsKLX07Ci0K LXN0cnVjdCBkc3NfbW9kdWxlX3Bvd2VyIHsKLQl1bnNpZ25lZCBpbnQgbnVtX2dwaW87Ci0Jc3Ry dWN0IGRzc19ncGlvICpncGlvX2NvbmZpZzsKLQl1bnNpZ25lZCBpbnQgbnVtX2NsazsKLQlzdHJ1 Y3QgZHNzX2NsayAqY2xrX2NvbmZpZzsKLX07Ci0KLWludCBtc21fZHNzX2dldF9jbGsoc3RydWN0 IGRldmljZSAqZGV2LCBzdHJ1Y3QgZHNzX2NsayAqY2xrX2FycnksIGludCBudW1fY2xrKTsKLXZv aWQgbXNtX2Rzc19wdXRfY2xrKHN0cnVjdCBkc3NfY2xrICpjbGtfYXJyeSwgaW50IG51bV9jbGsp OwotaW50IG1zbV9kc3NfY2xrX3NldF9yYXRlKHN0cnVjdCBkc3NfY2xrICpjbGtfYXJyeSwgaW50 IG51bV9jbGspOwotaW50IG1zbV9kc3NfZW5hYmxlX2NsayhzdHJ1Y3QgZHNzX2NsayAqY2xrX2Fy cnksIGludCBudW1fY2xrLCBpbnQgZW5hYmxlKTsKLWludCBtc21fZHNzX3BhcnNlX2Nsb2NrKHN0 cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsCi0JCXN0cnVjdCBkc3NfbW9kdWxlX3Bvd2VyICpt cCk7Ci0jZW5kaWYgLyogX19EUFVfSU9fVVRJTF9IX18gKi8KLS0gClRoZSBRdWFsY29tbSBJbm5v dmF0aW9uIENlbnRlciwgSW5jLiBpcyBhIG1lbWJlciBvZiB0aGUgQ29kZSBBdXJvcmEgRm9ydW0s CmEgTGludXggRm91bmRhdGlvbiBDb2xsYWJvcmF0aXZlIFByb2plY3QKCl9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkZyZWVkcmVubyBtYWlsaW5nIGxpc3QK RnJlZWRyZW5vQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9w Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ZyZWVkcmVubwo=