From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sravanthi Kollukuduru Subject: [DPU PATCH v2 09/14] drm/msm/dpu: move hw resource tracking to crtc state Date: Mon, 18 Jun 2018 19:02:47 +0530 Message-ID: <1529328772-5022-10-git-send-email-skolluku@codeaurora.org> References: <1529328772-5022-1-git-send-email-skolluku@codeaurora.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1529328772-5022-1-git-send-email-skolluku-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, linux-arm-msm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, freedreno-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Cc: Sravanthi Kollukuduru , Jeykumar Sankaran , seanpaul-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org, robdclark-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org, hoegsberg-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org List-Id: linux-arm-msm@vger.kernel.org RnJvbTogSmV5a3VtYXIgU2Fua2FyYW4gPGpzYW5rYUBjb2RlYXVyb3JhLm9yZz4KClByZXAgY2hh bmdlcyBmb3Igc3RhdGUgYmFzZWQgcmVzb3VyY2UgbWFuYWdlbWVudC4KCk1vdmVzIGFsbCB0aGUg aHcgYmxvY2sgdHJhY2tpbmcgZm9yIHRoZSBjcnRjIHRvIHRoZSBzdGF0ZQpvYmplY3QuCgpjaGFu Z2VzIGluIHYyOgogICAgIC0gbm9uZQoKU2lnbmVkLW9mZi1ieTogSmV5a3VtYXIgU2Fua2FyYW4g PGpzYW5rYUBjb2RlYXVyb3JhLm9yZz4KU2lnbmVkLW9mZi1ieTogU3JhdmFudGhpIEtvbGx1a3Vk dXJ1IDxza29sbHVrdUBjb2RlYXVyb3JhLm9yZz4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vbXNtL2Rp c3AvZHB1MS9kcHVfY3J0Yy5jIHwgNzYgKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0K IGRyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9jcnRjLmggfCAyNiArKysrKy0tLS0t LQogMiBmaWxlcyBjaGFuZ2VkLCA1MyBpbnNlcnRpb25zKCspLCA0OSBkZWxldGlvbnMoLSkKCmRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfY3J0Yy5jIGIvZHJp dmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2NydGMuYwppbmRleCA0MjZlMmFkLi5iZWQ2 N2NkIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfY3J0Yy5j CisrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9jcnRjLmMKQEAgLTE0Miw5 ICsxNDIsOSBAQCBzdGF0aWMgdm9pZCBfZHB1X2NydGNfcHJvZ3JhbV9sbV9vdXRwdXRfcm9pKHN0 cnVjdCBkcm1fY3J0YyAqY3J0YykKIAljcnRjX3N0YXRlID0gdG9fZHB1X2NydGNfc3RhdGUoY3J0 Yy0+c3RhdGUpOwogCiAJbG1faG9yaXpfcG9zaXRpb24gPSAwOwotCWZvciAobG1faWR4ID0gMDsg bG1faWR4IDwgZHB1X2NydGMtPm51bV9taXhlcnM7IGxtX2lkeCsrKSB7CisJZm9yIChsbV9pZHgg PSAwOyBsbV9pZHggPCBjcnRjX3N0YXRlLT5udW1fbWl4ZXJzOyBsbV9pZHgrKykgewogCQljb25z dCBzdHJ1Y3QgZHB1X3JlY3QgKmxtX3JvaSA9ICZjcnRjX3N0YXRlLT5sbV9ib3VuZHNbbG1faWR4 XTsKLQkJc3RydWN0IGRwdV9od19taXhlciAqaHdfbG0gPSBkcHVfY3J0Yy0+bWl4ZXJzW2xtX2lk eF0uaHdfbG07CisJCXN0cnVjdCBkcHVfaHdfbWl4ZXIgKmh3X2xtID0gY3J0Y19zdGF0ZS0+bWl4 ZXJzW2xtX2lkeF0uaHdfbG07CiAJCXN0cnVjdCBkcHVfaHdfbWl4ZXJfY2ZnIGNmZzsKIAogCQlp ZiAoZHB1X2ttc19yZWN0X2lzX251bGwobG1fcm9pKSkKQEAgLTIzNyw3ICsyMzcsNyBAQCBzdGF0 aWMgdm9pZCBfZHB1X2NydGNfYmxlbmRfc2V0dXBfbWl4ZXIoc3RydWN0IGRybV9jcnRjICpjcnRj LAogCQkJZm9ybWF0LT5iYXNlLnBpeGVsX2Zvcm1hdCwgZmIgPyBmYi0+bW9kaWZpZXIgOiAwKTsK IAogCQkvKiBibGVuZCBjb25maWcgdXBkYXRlICovCi0JCWZvciAobG1faWR4ID0gMDsgbG1faWR4 IDwgZHB1X2NydGMtPm51bV9taXhlcnM7IGxtX2lkeCsrKSB7CisJCWZvciAobG1faWR4ID0gMDsg bG1faWR4IDwgY3N0YXRlLT5udW1fbWl4ZXJzOyBsbV9pZHgrKykgewogCQkJX2RwdV9jcnRjX3Nl dHVwX2JsZW5kX2NmZyhtaXhlciArIGxtX2lkeCwgcHN0YXRlKTsKIAogCQkJbWl4ZXJbbG1faWR4 XS5mbHVzaF9tYXNrIHw9IGZsdXNoX21hc2s7CkBAIC0yNjAsNyArMjYwLDcgQEAgc3RhdGljIHZv aWQgX2RwdV9jcnRjX2JsZW5kX3NldHVwX21peGVyKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKIHN0 YXRpYyB2b2lkIF9kcHVfY3J0Y19ibGVuZF9zZXR1cChzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCiB7 CiAJc3RydWN0IGRwdV9jcnRjICpkcHVfY3J0YzsKLQlzdHJ1Y3QgZHB1X2NydGNfc3RhdGUgKmRw dV9jcnRjX3N0YXRlOworCXN0cnVjdCBkcHVfY3J0Y19zdGF0ZSAqY3N0YXRlOwogCXN0cnVjdCBk cHVfY3J0Y19taXhlciAqbWl4ZXI7CiAJc3RydWN0IGRwdV9od19jdGwgKmN0bDsKIAlzdHJ1Y3Qg ZHB1X2h3X21peGVyICpsbTsKQEAgLTI3MSwxNyArMjcxLDE3IEBAIHN0YXRpYyB2b2lkIF9kcHVf Y3J0Y19ibGVuZF9zZXR1cChzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCiAJCXJldHVybjsKIAogCWRw dV9jcnRjID0gdG9fZHB1X2NydGMoY3J0Yyk7Ci0JZHB1X2NydGNfc3RhdGUgPSB0b19kcHVfY3J0 Y19zdGF0ZShjcnRjLT5zdGF0ZSk7Ci0JbWl4ZXIgPSBkcHVfY3J0Yy0+bWl4ZXJzOworCWNzdGF0 ZSA9IHRvX2RwdV9jcnRjX3N0YXRlKGNydGMtPnN0YXRlKTsKKwltaXhlciA9IGNzdGF0ZS0+bWl4 ZXJzOwogCiAJRFBVX0RFQlVHKCIlc1xuIiwgZHB1X2NydGMtPm5hbWUpOwogCi0JaWYgKGRwdV9j cnRjLT5udW1fbWl4ZXJzID4gQ1JUQ19EVUFMX01JWEVSUykgewotCQlEUFVfRVJST1IoImludmFs aWQgbnVtYmVyIG1peGVyczogJWRcbiIsIGRwdV9jcnRjLT5udW1fbWl4ZXJzKTsKKwlpZiAoY3N0 YXRlLT5udW1fbWl4ZXJzID4gQ1JUQ19EVUFMX01JWEVSUykgeworCQlEUFVfRVJST1IoImludmFs aWQgbnVtYmVyIG1peGVyczogJWRcbiIsIGNzdGF0ZS0+bnVtX21peGVycyk7CiAJCXJldHVybjsK IAl9CiAKLQlmb3IgKGkgPSAwOyBpIDwgZHB1X2NydGMtPm51bV9taXhlcnM7IGkrKykgeworCWZv ciAoaSA9IDA7IGkgPCBjc3RhdGUtPm51bV9taXhlcnM7IGkrKykgewogCQlpZiAoIW1peGVyW2ld Lmh3X2xtIHx8ICFtaXhlcltpXS5od19jdGwpIHsKIAkJCURQVV9FUlJPUigiaW52YWxpZCBsbSBv ciBjdGwgYXNzaWduZWQgdG8gbWl4ZXJcbiIpOwogCQkJcmV0dXJuOwpAQCAtMjk4LDcgKzI5OCw3 IEBAIHN0YXRpYyB2b2lkIF9kcHVfY3J0Y19ibGVuZF9zZXR1cChzdHJ1Y3QgZHJtX2NydGMgKmNy dGMpCiAKIAlfZHB1X2NydGNfYmxlbmRfc2V0dXBfbWl4ZXIoY3J0YywgZHB1X2NydGMsIG1peGVy KTsKIAotCWZvciAoaSA9IDA7IGkgPCBkcHVfY3J0Yy0+bnVtX21peGVyczsgaSsrKSB7CisJZm9y IChpID0gMDsgaSA8IGNzdGF0ZS0+bnVtX21peGVyczsgaSsrKSB7CiAJCWN0bCA9IG1peGVyW2ld Lmh3X2N0bDsKIAkJbG0gPSBtaXhlcltpXS5od19sbTsKIApAQCAtNTgzLDcgKzU4Myw3IEBAIHN0 YXRpYyB2b2lkIF9kcHVfY3J0Y19zZXR1cF9taXhlcl9mb3JfZW5jb2RlcigKIAkJc3RydWN0IGRy bV9jcnRjICpjcnRjLAogCQlzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuYykKIHsKLQlzdHJ1Y3QgZHB1 X2NydGMgKmRwdV9jcnRjID0gdG9fZHB1X2NydGMoY3J0Yyk7CisJc3RydWN0IGRwdV9jcnRjX3N0 YXRlICpjc3RhdGUgPSB0b19kcHVfY3J0Y19zdGF0ZShjcnRjLT5zdGF0ZSk7CiAJc3RydWN0IGRw dV9rbXMgKmRwdV9rbXMgPSBfZHB1X2NydGNfZ2V0X2ttcyhjcnRjKTsKIAlzdHJ1Y3QgZHB1X3Jt ICpybSA9ICZkcHVfa21zLT5ybTsKIAlzdHJ1Y3QgZHB1X2NydGNfbWl4ZXIgKm1peGVyOwpAQCAt NTk1LDggKzU5NSw4IEBAIHN0YXRpYyB2b2lkIF9kcHVfY3J0Y19zZXR1cF9taXhlcl9mb3JfZW5j b2RlcigKIAlkcHVfcm1faW5pdF9od19pdGVyKCZjdGxfaXRlciwgZW5jLT5iYXNlLmlkLCBEUFVf SFdfQkxLX0NUTCk7CiAKIAkvKiBTZXQgdXAgYWxsIHRoZSBtaXhlcnMgYW5kIGN0bHMgcmVzZXJ2 ZWQgYnkgdGhpcyBlbmNvZGVyICovCi0JZm9yIChpID0gZHB1X2NydGMtPm51bV9taXhlcnM7IGkg PCBBUlJBWV9TSVpFKGRwdV9jcnRjLT5taXhlcnMpOyBpKyspIHsKLQkJbWl4ZXIgPSAmZHB1X2Ny dGMtPm1peGVyc1tpXTsKKwlmb3IgKGkgPSBjc3RhdGUtPm51bV9taXhlcnM7IGkgPCBBUlJBWV9T SVpFKGNzdGF0ZS0+bWl4ZXJzKTsgaSsrKSB7CisJCW1peGVyID0gJmNzdGF0ZS0+bWl4ZXJzW2ld OwogCiAJCWlmICghZHB1X3JtX2dldF9odyhybSwgJmxtX2l0ZXIpKQogCQkJYnJlYWs7CkBAIC02 MjEsNyArNjIxLDcgQEAgc3RhdGljIHZvaWQgX2RwdV9jcnRjX3NldHVwX21peGVyX2Zvcl9lbmNv ZGVyKAogCiAJCW1peGVyLT5lbmNvZGVyID0gZW5jOwogCi0JCWRwdV9jcnRjLT5udW1fbWl4ZXJz Kys7CisJCWNzdGF0ZS0+bnVtX21peGVycysrOwogCQlEUFVfREVCVUcoInNldHVwIG1peGVyICVk OiBsbSAlZFxuIiwKIAkJCQlpLCBtaXhlci0+aHdfbG0tPmlkeCAtIExNXzApOwogCQlEUFVfREVC VUcoInNldHVwIG1peGVyICVkOiBjdGwgJWRcbiIsCkBAIC02MzIsMTEgKzYzMiwxMSBAQCBzdGF0 aWMgdm9pZCBfZHB1X2NydGNfc2V0dXBfbWl4ZXJfZm9yX2VuY29kZXIoCiBzdGF0aWMgdm9pZCBf ZHB1X2NydGNfc2V0dXBfbWl4ZXJzKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKIHsKIAlzdHJ1Y3Qg ZHB1X2NydGMgKmRwdV9jcnRjID0gdG9fZHB1X2NydGMoY3J0Yyk7CisJc3RydWN0IGRwdV9jcnRj X3N0YXRlICpjc3RhdGUgPSB0b19kcHVfY3J0Y19zdGF0ZShjcnRjLT5zdGF0ZSk7CiAJc3RydWN0 IGRybV9lbmNvZGVyICplbmM7CiAKLQlkcHVfY3J0Yy0+bnVtX21peGVycyA9IDA7Ci0JZHB1X2Ny dGMtPm1peGVyc19zd2FwcGVkID0gZmFsc2U7Ci0JbWVtc2V0KGRwdV9jcnRjLT5taXhlcnMsIDAs IHNpemVvZihkcHVfY3J0Yy0+bWl4ZXJzKSk7CisJY3N0YXRlLT5udW1fbWl4ZXJzID0gMDsKKwlt ZW1zZXQoY3N0YXRlLT5taXhlcnMsIDAsIHNpemVvZihjc3RhdGUtPm1peGVycykpOwogCiAJbXV0 ZXhfbG9jaygmZHB1X2NydGMtPmNydGNfbG9jayk7CiAJLyogQ2hlY2sgZm9yIG1peGVycyBvbiBh bGwgZW5jb2RlcnMgYXR0YWNoZWQgdG8gdGhpcyBjcnRjICovCkBAIC02NzAsNyArNjcwLDcgQEAg c3RhdGljIHZvaWQgX2RwdV9jcnRjX3NldHVwX2xtX2JvdW5kcyhzdHJ1Y3QgZHJtX2NydGMgKmNy dGMsCiAJYWRqX21vZGUgPSAmc3RhdGUtPmFkanVzdGVkX21vZGU7CiAJY3J0Y19zcGxpdF93aWR0 aCA9IGRwdV9jcnRjX2dldF9taXhlcl93aWR0aChkcHVfY3J0YywgY3N0YXRlLCBhZGpfbW9kZSk7 CiAKLQlmb3IgKGkgPSAwOyBpIDwgZHB1X2NydGMtPm51bV9taXhlcnM7IGkrKykgeworCWZvciAo aSA9IDA7IGkgPCBjc3RhdGUtPm51bV9taXhlcnM7IGkrKykgewogCQljc3RhdGUtPmxtX2JvdW5k c1tpXS54ID0gY3J0Y19zcGxpdF93aWR0aCAqIGk7CiAJCWNzdGF0ZS0+bG1fYm91bmRzW2ldLnkg PSAwOwogCQljc3RhdGUtPmxtX2JvdW5kc1tpXS53ID0gY3J0Y19zcGxpdF93aWR0aDsKQEAgLTY4 OCw2ICs2ODgsNyBAQCBzdGF0aWMgdm9pZCBkcHVfY3J0Y19hdG9taWNfYmVnaW4oc3RydWN0IGRy bV9jcnRjICpjcnRjLAogCQlzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKm9sZF9zdGF0ZSkKIHsKIAlz dHJ1Y3QgZHB1X2NydGMgKmRwdV9jcnRjOworCXN0cnVjdCBkcHVfY3J0Y19zdGF0ZSAqY3N0YXRl OwogCXN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlcjsKIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 OwogCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CkBAIC03MDcsMTAgKzcwOCwxMSBAQCBzdGF0aWMgdm9p ZCBkcHVfY3J0Y19hdG9taWNfYmVnaW4oc3RydWN0IGRybV9jcnRjICpjcnRjLAogCURQVV9ERUJV RygiY3J0YyVkXG4iLCBjcnRjLT5iYXNlLmlkKTsKIAogCWRwdV9jcnRjID0gdG9fZHB1X2NydGMo Y3J0Yyk7CisJY3N0YXRlID0gdG9fZHB1X2NydGNfc3RhdGUoY3J0Yy0+c3RhdGUpOwogCWRldiA9 IGNydGMtPmRldjsKIAlzbW11X3N0YXRlID0gJmRwdV9jcnRjLT5zbW11X3N0YXRlOwogCi0JaWYg KCFkcHVfY3J0Yy0+bnVtX21peGVycykgeworCWlmICghY3N0YXRlLT5udW1fbWl4ZXJzKSB7CiAJ CV9kcHVfY3J0Y19zZXR1cF9taXhlcnMoY3J0Yyk7CiAJCV9kcHVfY3J0Y19zZXR1cF9sbV9ib3Vu ZHMoY3J0YywgY3J0Yy0+c3RhdGUpOwogCX0KQEAgLTczNyw3ICs3MzksNyBAQCBzdGF0aWMgdm9p ZCBkcHVfY3J0Y19hdG9taWNfYmVnaW4oc3RydWN0IGRybV9jcnRjICpjcnRjLAogCSAqIGl0IG1l YW5zIHdlIGFyZSB0cnlpbmcgdG8gZmx1c2ggYSBDUlRDIHdob3NlIHN0YXRlIGlzIGRpc2FibGVk OgogCSAqIG5vdGhpbmcgZWxzZSBuZWVkcyB0byBiZSBkb25lLgogCSAqLwotCWlmICh1bmxpa2Vs eSghZHB1X2NydGMtPm51bV9taXhlcnMpKQorCWlmICh1bmxpa2VseSghY3N0YXRlLT5udW1fbWl4 ZXJzKSkKIAkJcmV0dXJuOwogCiAJX2RwdV9jcnRjX2JsZW5kX3NldHVwKGNydGMpOwpAQCAtODAx LDcgKzgwMyw3IEBAIHN0YXRpYyB2b2lkIGRwdV9jcnRjX2F0b21pY19mbHVzaChzdHJ1Y3QgZHJt X2NydGMgKmNydGMsCiAJICogaXQgbWVhbnMgd2UgYXJlIHRyeWluZyB0byBmbHVzaCBhIENSVEMg d2hvc2Ugc3RhdGUgaXMgZGlzYWJsZWQ6CiAJICogbm90aGluZyBlbHNlIG5lZWRzIHRvIGJlIGRv bmUuCiAJICovCi0JaWYgKHVubGlrZWx5KCFkcHVfY3J0Yy0+bnVtX21peGVycykpCisJaWYgKHVu bGlrZWx5KCFjc3RhdGUtPm51bV9taXhlcnMpKQogCQlyZXR1cm47CiAKIAkvKgpAQCAtOTE4LDcg KzkyMCw3IEBAIHZvaWQgZHB1X2NydGNfY29tbWl0X2tpY2tvZmYoc3RydWN0IGRybV9jcnRjICpj cnRjKQogCSAqIGl0IG1lYW5zIHdlIGFyZSB0cnlpbmcgdG8gc3RhcnQgYSBDUlRDIHdob3NlIHN0 YXRlIGlzIGRpc2FibGVkOgogCSAqIG5vdGhpbmcgZWxzZSBuZWVkcyB0byBiZSBkb25lLgogCSAq LwotCWlmICh1bmxpa2VseSghZHB1X2NydGMtPm51bV9taXhlcnMpKQorCWlmICh1bmxpa2VseSgh Y3N0YXRlLT5udW1fbWl4ZXJzKSkKIAkJcmV0dXJuOwogCiAJRFBVX0FUUkFDRV9CRUdJTigiY3J0 Y19jb21taXQiKTsKQEAgLTExNTcsNiArMTE1OSw3IEBAIHN0YXRpYyB2b2lkIGRwdV9jcnRjX2hh bmRsZV9wb3dlcl9ldmVudCh1MzIgZXZlbnRfdHlwZSwgdm9pZCAqYXJnKQogCXN0cnVjdCBkcHVf Y3J0YyAqZHB1X2NydGM7CiAJc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyOwogCXN0cnVjdCBk cHVfY3J0Y19taXhlciAqbTsKKwlzdHJ1Y3QgZHB1X2NydGNfc3RhdGUgKmNzdGF0ZTsKIAl1MzIg aSwgbWlzcl9zdGF0dXM7CiAKIAlpZiAoIWNydGMpIHsKQEAgLTExNzksOCArMTE4Miw4IEBAIHN0 YXRpYyB2b2lkIGRwdV9jcnRjX2hhbmRsZV9wb3dlcl9ldmVudCh1MzIgZXZlbnRfdHlwZSwgdm9p ZCAqYXJnKQogCQkJZHB1X2VuY29kZXJfdmlydF9yZXN0b3JlKGVuY29kZXIpOwogCQl9CiAKLQkJ Zm9yIChpID0gMDsgaSA8IGRwdV9jcnRjLT5udW1fbWl4ZXJzOyArK2kpIHsKLQkJCW0gPSAmZHB1 X2NydGMtPm1peGVyc1tpXTsKKwkJZm9yIChpID0gMDsgaSA8IGNzdGF0ZS0+bnVtX21peGVyczsg KytpKSB7CisJCQltID0gJmNzdGF0ZS0+bWl4ZXJzW2ldOwogCQkJaWYgKCFtLT5od19sbSB8fCAh bS0+aHdfbG0tPm9wcy5zZXR1cF9taXNyIHx8CiAJCQkJCSFkcHVfY3J0Yy0+bWlzcl9lbmFibGUp CiAJCQkJY29udGludWU7CkBAIC0xMTkwLDggKzExOTMsOCBAQCBzdGF0aWMgdm9pZCBkcHVfY3J0 Y19oYW5kbGVfcG93ZXJfZXZlbnQodTMyIGV2ZW50X3R5cGUsIHZvaWQgKmFyZykKIAkJfQogCQli cmVhazsKIAljYXNlIERQVV9QT1dFUl9FVkVOVF9QUkVfRElTQUJMRToKLQkJZm9yIChpID0gMDsg aSA8IGRwdV9jcnRjLT5udW1fbWl4ZXJzOyArK2kpIHsKLQkJCW0gPSAmZHB1X2NydGMtPm1peGVy c1tpXTsKKwkJZm9yIChpID0gMDsgaSA8IGNzdGF0ZS0+bnVtX21peGVyczsgKytpKSB7CisJCQlt ID0gJmNzdGF0ZS0+bWl4ZXJzW2ldOwogCQkJaWYgKCFtLT5od19sbSB8fCAhbS0+aHdfbG0tPm9w cy5jb2xsZWN0X21pc3IgfHwKIAkJCQkJIWRwdV9jcnRjLT5taXNyX2VuYWJsZSkKIAkJCQljb250 aW51ZTsKQEAgLTEyODcsOSArMTI5MCw4IEBAIHN0YXRpYyB2b2lkIGRwdV9jcnRjX2Rpc2FibGUo c3RydWN0IGRybV9jcnRjICpjcnRjKQogCQkJCWRwdV9jcnRjLT5wb3dlcl9ldmVudCk7CiAKIAot CW1lbXNldChkcHVfY3J0Yy0+bWl4ZXJzLCAwLCBzaXplb2YoZHB1X2NydGMtPm1peGVycykpOwot CWRwdV9jcnRjLT5udW1fbWl4ZXJzID0gMDsKLQlkcHVfY3J0Yy0+bWl4ZXJzX3N3YXBwZWQgPSBm YWxzZTsKKwltZW1zZXQoY3N0YXRlLT5taXhlcnMsIDAsIHNpemVvZihjc3RhdGUtPm1peGVycykp OworCWNzdGF0ZS0+bnVtX21peGVycyA9IDA7CiAKIAkvKiBkaXNhYmxlIGNsayAmIGJ3IGNvbnRy b2wgdW50aWwgY2xrICYgYncgcHJvcGVydGllcyBhcmUgc2V0ICovCiAJY3N0YXRlLT5id19jb250 cm9sID0gZmFsc2U7CkBAIC0xNjU0LDggKzE2NTYsOCBAQCBzdGF0aWMgaW50IF9kcHVfZGVidWdm c19zdGF0dXNfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIHZvaWQgKmRhdGEpCiAKIAlzZXFfcHV0 cyhzLCAiXG4iKTsKIAotCWZvciAoaSA9IDA7IGkgPCBkcHVfY3J0Yy0+bnVtX21peGVyczsgKytp KSB7Ci0JCW0gPSAmZHB1X2NydGMtPm1peGVyc1tpXTsKKwlmb3IgKGkgPSAwOyBpIDwgY3N0YXRl LT5udW1fbWl4ZXJzOyArK2kpIHsKKwkJbSA9ICZjc3RhdGUtPm1peGVyc1tpXTsKIAkJaWYgKCFt LT5od19sbSkKIAkJCXNlcV9wcmludGYocywgIlx0bWl4ZXJbJWRdIGhhcyBubyBsbVxuIiwgaSk7 CiAJCWVsc2UgaWYgKCFtLT5od19jdGwpCkBAIC0xNzQ4LDYgKzE3NTAsNyBAQCBzdGF0aWMgc3Np emVfdCBfZHB1X2NydGNfbWlzcl9zZXR1cChzdHJ1Y3QgZmlsZSAqZmlsZSwKIAkJY29uc3QgY2hh ciBfX3VzZXIgKnVzZXJfYnVmLCBzaXplX3QgY291bnQsIGxvZmZfdCAqcHBvcykKIHsKIAlzdHJ1 Y3QgZHB1X2NydGMgKmRwdV9jcnRjOworCXN0cnVjdCBkcHVfY3J0Y19zdGF0ZSAqY3N0YXRlOwog CXN0cnVjdCBkcHVfY3J0Y19taXhlciAqbTsKIAlpbnQgaSA9IDAsIHJjOwogCWNoYXIgYnVmW01J U1JfQlVGRl9TSVpFICsgMV07CkBAIC0xNzU4LDYgKzE3NjEsNyBAQCBzdGF0aWMgc3NpemVfdCBf ZHB1X2NydGNfbWlzcl9zZXR1cChzdHJ1Y3QgZmlsZSAqZmlsZSwKIAkJcmV0dXJuIC1FSU5WQUw7 CiAKIAlkcHVfY3J0YyA9IGZpbGUtPnByaXZhdGVfZGF0YTsKKwljc3RhdGUgPSB0b19kcHVfY3J0 Y19zdGF0ZShkcHVfY3J0Yy0+YmFzZS5zdGF0ZSk7CiAJYnVmZl9jb3B5ID0gbWluX3Qoc2l6ZV90 LCBjb3VudCwgTUlTUl9CVUZGX1NJWkUpOwogCWlmIChjb3B5X2Zyb21fdXNlcihidWYsIHVzZXJf YnVmLCBidWZmX2NvcHkpKSB7CiAJCURQVV9FUlJPUigiYnVmZmVyIGNvcHkgZmFpbGVkXG4iKTsK QEAgLTE3NzYsOSArMTc4MCw5IEBAIHN0YXRpYyBzc2l6ZV90IF9kcHVfY3J0Y19taXNyX3NldHVw KHN0cnVjdCBmaWxlICpmaWxlLAogCW11dGV4X2xvY2soJmRwdV9jcnRjLT5jcnRjX2xvY2spOwog CWRwdV9jcnRjLT5taXNyX2VuYWJsZSA9IGVuYWJsZTsKIAlkcHVfY3J0Yy0+bWlzcl9mcmFtZV9j b3VudCA9IGZyYW1lX2NvdW50OwotCWZvciAoaSA9IDA7IGkgPCBkcHVfY3J0Yy0+bnVtX21peGVy czsgKytpKSB7CisJZm9yIChpID0gMDsgaSA8IGNzdGF0ZS0+bnVtX21peGVyczsgKytpKSB7CiAJ CWRwdV9jcnRjLT5taXNyX2RhdGFbaV0gPSAwOwotCQltID0gJmRwdV9jcnRjLT5taXhlcnNbaV07 CisJCW0gPSAmY3N0YXRlLT5taXhlcnNbaV07CiAJCWlmICghbS0+aHdfbG0gfHwgIW0tPmh3X2xt LT5vcHMuc2V0dXBfbWlzcikKIAkJCWNvbnRpbnVlOwogCkBAIC0xNzk0LDYgKzE3OTgsNyBAQCBz dGF0aWMgc3NpemVfdCBfZHB1X2NydGNfbWlzcl9yZWFkKHN0cnVjdCBmaWxlICpmaWxlLAogCQlj aGFyIF9fdXNlciAqdXNlcl9idWZmLCBzaXplX3QgY291bnQsIGxvZmZfdCAqcHBvcykKIHsKIAlz dHJ1Y3QgZHB1X2NydGMgKmRwdV9jcnRjOworCXN0cnVjdCBkcHVfY3J0Y19zdGF0ZSAqY3N0YXRl OwogCXN0cnVjdCBkcHVfY3J0Y19taXhlciAqbTsKIAlpbnQgaSA9IDAsIHJjOwogCXUzMiBtaXNy X3N0YXR1czsKQEAgLTE4MDcsNiArMTgxMiw3IEBAIHN0YXRpYyBzc2l6ZV90IF9kcHVfY3J0Y19t aXNyX3JlYWQoc3RydWN0IGZpbGUgKmZpbGUsCiAJCXJldHVybiAtRUlOVkFMOwogCiAJZHB1X2Ny dGMgPSBmaWxlLT5wcml2YXRlX2RhdGE7CisJY3N0YXRlID0gdG9fZHB1X2NydGNfc3RhdGUoZHB1 X2NydGMtPmJhc2Uuc3RhdGUpOwogCXJjID0gX2RwdV9jcnRjX3Bvd2VyX2VuYWJsZShkcHVfY3J0 YywgdHJ1ZSk7CiAJaWYgKHJjKQogCQlyZXR1cm4gcmM7CkBAIC0xODE4LDggKzE4MjQsOCBAQCBz dGF0aWMgc3NpemVfdCBfZHB1X2NydGNfbWlzcl9yZWFkKHN0cnVjdCBmaWxlICpmaWxlLAogCQln b3RvIGJ1ZmZfY2hlY2s7CiAJfQogCi0JZm9yIChpID0gMDsgaSA8IGRwdV9jcnRjLT5udW1fbWl4 ZXJzOyArK2kpIHsKLQkJbSA9ICZkcHVfY3J0Yy0+bWl4ZXJzW2ldOworCWZvciAoaSA9IDA7IGkg PCBjc3RhdGUtPm51bV9taXhlcnM7ICsraSkgeworCQltID0gJmNzdGF0ZS0+bWl4ZXJzW2ldOwog CQlpZiAoIW0tPmh3X2xtIHx8ICFtLT5od19sbS0+b3BzLmNvbGxlY3RfbWlzcikKIAkJCWNvbnRp bnVlOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfY3J0 Yy5oIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2NydGMuaAppbmRleCA5MTY2 MTVkLi5lN2NjMWVmIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9k cHVfY3J0Yy5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9jcnRjLmgK QEAgLTEzOCwxMSArMTM4LDYgQEAgc3RydWN0IGRwdV9jcnRjX2V2ZW50IHsKICAqIHN0cnVjdCBk cHVfY3J0YyAtIHZpcnR1YWxpemVkIENSVEMgZGF0YSBzdHJ1Y3R1cmUKICAqIEBiYXNlICAgICAg ICAgIDogQmFzZSBkcm0gY3J0YyBzdHJ1Y3R1cmUKICAqIEBuYW1lICAgICAgICAgIDogQVNDSUkg ZGVzY3JpcHRpb24gb2YgdGhpcyBjcnRjCi0gKiBAbnVtX2N0bHMgICAgICA6IE51bWJlciBvZiBj dGwgcGF0aHMgaW4gdXNlCi0gKiBAbnVtX21peGVycyAgICA6IE51bWJlciBvZiBtaXhlcnMgaW4g dXNlCi0gKiBAbWl4ZXJzX3N3YXBwZWQ6IFdoZXRoZXIgdGhlIG1peGVycyBoYXZlIGJlZW4gc3dh cHBlZCBmb3IgbGVmdC9yaWdodCB1cGRhdGUKLSAqICAgICAgICAgICAgICAgICAgZXNwZWNpYWxs eSBpbiB0aGUgY2FzZSBvZiBEU0MgTWVyZ2UuCi0gKiBAbWl4ZXJzICAgICAgICA6IExpc3Qgb2Yg YWN0aXZlIG1peGVycwogICogQGV2ZW50ICAgICAgICAgOiBQb2ludGVyIHRvIGxhc3QgcmVjZWl2 ZWQgZHJtIHZibGFuayBldmVudC4gSWYgdGhlcmUgaXMgYQogICogICAgICAgICAgICAgICAgICBw ZW5kaW5nIHZibGFuayBldmVudCwgdGhpcyB3aWxsIGJlIG5vbi1udWxsLgogICogQHZzeW5jX2Nv dW50ICAgOiBSdW5uaW5nIGNvdW50IG9mIHJlY2VpdmVkIHZzeW5jIGV2ZW50cwpAQCAtMTg2LDEy ICsxODEsNiBAQCBzdHJ1Y3QgZHB1X2NydGMgewogCXN0cnVjdCBkcm1fY3J0YyBiYXNlOwogCWNo YXIgbmFtZVtEUFVfQ1JUQ19OQU1FX1NJWkVdOwogCi0JLyogSFcgUmVzb3VyY2VzIHJlc2VydmVk IGZvciB0aGUgY3J0YyAqLwotCXUzMiBudW1fY3RsczsKLQl1MzIgbnVtX21peGVyczsKLQlib29s IG1peGVyc19zd2FwcGVkOwotCXN0cnVjdCBkcHVfY3J0Y19taXhlciBtaXhlcnNbQ1JUQ19EVUFM X01JWEVSU107Ci0KIAlzdHJ1Y3QgZHJtX3BlbmRpbmdfdmJsYW5rX2V2ZW50ICpldmVudDsKIAl1 MzIgdnN5bmNfY291bnQ7CiAKQEAgLTI1MCw2ICsyMzksMTAgQEAgc3RydWN0IGRwdV9jcnRjIHsK ICAqIEBwcm9wZXJ0eV92YWx1ZXM6IEN1cnJlbnQgY3J0YyBwcm9wZXJ0eSB2YWx1ZXMKICAqIEBp bnB1dF9mZW5jZV90aW1lb3V0X25zIDogQ2FjaGVkIGlucHV0IGZlbmNlIHRpbWVvdXQsIGluIG5z CiAgKiBAbmV3X3BlcmY6IG5ldyBwZXJmb3JtYW5jZSBzdGF0ZSBiZWluZyByZXF1ZXN0ZWQKKyAq IEBudW1fbWl4ZXJzICAgIDogTnVtYmVyIG9mIG1peGVycyBpbiB1c2UKKyAqIEBtaXhlcnMgICAg ICAgIDogTGlzdCBvZiBhY3RpdmUgbWl4ZXJzCisgKiBAbnVtX2N0bHMgICAgICA6IE51bWJlciBv ZiBjdGwgcGF0aHMgaW4gdXNlCisgKiBAaHdfY3RscyAgICAgICA6IExpc3Qgb2YgYWN0aXZlbCBj dGwgcGF0aHMKICAqLwogc3RydWN0IGRwdV9jcnRjX3N0YXRlIHsKIAlzdHJ1Y3QgZHJtX2NydGNf c3RhdGUgYmFzZTsKQEAgLTI1OCwxMiArMjUxLDE3IEBAIHN0cnVjdCBkcHVfY3J0Y19zdGF0ZSB7 CiAJaW50IG51bV9jb25uZWN0b3JzOwogCWJvb2wgYndfY29udHJvbDsKIAlib29sIGJ3X3NwbGl0 X3ZvdGU7Ci0KIAlzdHJ1Y3QgZHB1X3JlY3QgbG1fYm91bmRzW0NSVENfRFVBTF9NSVhFUlNdOwog CiAJdWludDY0X3QgaW5wdXRfZmVuY2VfdGltZW91dF9uczsKLQogCXN0cnVjdCBkcHVfY29yZV9w ZXJmX3BhcmFtcyBuZXdfcGVyZjsKKworCS8qIEhXIFJlc291cmNlcyByZXNlcnZlZCBmb3IgdGhl IGNydGMgKi8KKwl1MzIgbnVtX21peGVyczsKKwlzdHJ1Y3QgZHB1X2NydGNfbWl4ZXIgbWl4ZXJz W0NSVENfRFVBTF9NSVhFUlNdOworCisJdTMyIG51bV9jdGxzOworCXN0cnVjdCBkcHVfaHdfY3Rs ICpod19jdGxzW0NSVENfRFVBTF9NSVhFUlNdOwogfTsKIAogI2RlZmluZSB0b19kcHVfY3J0Y19z dGF0ZSh4KSBcCkBAIC0yODEsNyArMjc5LDcgQEAgc3RhdGljIGlubGluZSBpbnQgZHB1X2NydGNf Z2V0X21peGVyX3dpZHRoKHN0cnVjdCBkcHVfY3J0YyAqZHB1X2NydGMsCiAJaWYgKCFkcHVfY3J0 YyB8fCAhY3N0YXRlIHx8ICFtb2RlKQogCQlyZXR1cm4gMDsKIAotCW1peGVyX3dpZHRoID0gKGRw dV9jcnRjLT5udW1fbWl4ZXJzID09IENSVENfRFVBTF9NSVhFUlMgPworCW1peGVyX3dpZHRoID0g KGNzdGF0ZS0+bnVtX21peGVycyA9PSBDUlRDX0RVQUxfTUlYRVJTID8KIAkJCW1vZGUtPmhkaXNw bGF5IC8gQ1JUQ19EVUFMX01JWEVSUyA6IG1vZGUtPmhkaXNwbGF5KTsKIAogCXJldHVybiBtaXhl cl93aWR0aDsKLS0gClRoZSBRdWFsY29tbSBJbm5vdmF0aW9uIENlbnRlciwgSW5jLiBpcyBhIG1l bWJlciBvZiB0aGUgQ29kZSBBdXJvcmEgRm9ydW0sCmEgTGludXggRm91bmRhdGlvbiBDb2xsYWJv cmF0aXZlIFByb2plY3QKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fCkZyZWVkcmVubyBtYWlsaW5nIGxpc3QKRnJlZWRyZW5vQGxpc3RzLmZyZWVkZXNrdG9w Lm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ZyZWVk cmVubwo=