From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jeykumar Sankaran Subject: [PATCH v3 08/13] drm/msm/dpu: move hw resource tracking to crtc state Date: Tue, 7 Aug 2018 20:12:35 -0700 Message-ID: <1533697956-29686-9-git-send-email-jsanka@codeaurora.org> References: <1533697956-29686-1-git-send-email-jsanka@codeaurora.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1533697956-29686-1-git-send-email-jsanka-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 Cc: hoegsberg-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org, Jeykumar Sankaran , seanpaul-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org, robdclark-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org List-Id: linux-arm-msm@vger.kernel.org UHJlcCBjaGFuZ2VzIGZvciBzdGF0ZSBiYXNlZCByZXNvdXJjZSBtYW5hZ2VtZW50LgoKTW92ZXMg YWxsIHRoZSBodyBibG9jayB0cmFja2luZyBmb3IgdGhlIGNydGMgdG8gdGhlIHN0YXRlCm9iamVj dC4KCmNoYW5nZXMgaW4gdjI6CgktIG5vbmUKY2hhbmdlcyBpbiB2MzoKCS0gbm9uZQoKQ2hhbmdl LUlkOiBJMjgxNmU5ZTI4YjI3ZjExMjZiNDc3ZDYyZWIzODU4YTMwYTY1Mjc0NwpTaWduZWQtb2Zm LWJ5OiBKZXlrdW1hciBTYW5rYXJhbiA8anNhbmthQGNvZGVhdXJvcmEub3JnPgotLS0KIGRyaXZl cnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9jcnRjLmMgfCA3NyArKysrKysrKysrKysrKysr Ky0tLS0tLS0tLS0tLS0tLQogZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2NydGMu aCB8IDI1ICsrKysrLS0tLS0tCiAyIGZpbGVzIGNoYW5nZWQsIDU0IGluc2VydGlvbnMoKyksIDQ4 IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUx L2RwdV9jcnRjLmMgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfY3J0Yy5jCmlu ZGV4IDFmMmQyMjMuLjUxNWIwZTYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlz cC9kcHUxL2RwdV9jcnRjLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1 X2NydGMuYwpAQCAtMTM2LDkgKzEzNiw5IEBAIHN0YXRpYyB2b2lkIF9kcHVfY3J0Y19wcm9ncmFt X2xtX291dHB1dF9yb2koc3RydWN0IGRybV9jcnRjICpjcnRjKQogCWNydGNfc3RhdGUgPSB0b19k cHVfY3J0Y19zdGF0ZShjcnRjLT5zdGF0ZSk7CiAKIAlsbV9ob3Jpel9wb3NpdGlvbiA9IDA7Ci0J Zm9yIChsbV9pZHggPSAwOyBsbV9pZHggPCBkcHVfY3J0Yy0+bnVtX21peGVyczsgbG1faWR4Kysp IHsKKwlmb3IgKGxtX2lkeCA9IDA7IGxtX2lkeCA8IGNydGNfc3RhdGUtPm51bV9taXhlcnM7IGxt X2lkeCsrKSB7CiAJCWNvbnN0IHN0cnVjdCBkcm1fcmVjdCAqbG1fcm9pID0gJmNydGNfc3RhdGUt PmxtX2JvdW5kc1tsbV9pZHhdOwotCQlzdHJ1Y3QgZHB1X2h3X21peGVyICpod19sbSA9IGRwdV9j cnRjLT5taXhlcnNbbG1faWR4XS5od19sbTsKKwkJc3RydWN0IGRwdV9od19taXhlciAqaHdfbG0g PSBjcnRjX3N0YXRlLT5taXhlcnNbbG1faWR4XS5od19sbTsKIAkJc3RydWN0IGRwdV9od19taXhl cl9jZmcgY2ZnOwogCiAJCWlmICghbG1fcm9pIHx8ICFkcm1fcmVjdF92aXNpYmxlKGxtX3JvaSkp CkBAIC0yMTksNyArMjE5LDcgQEAgc3RhdGljIHZvaWQgX2RwdV9jcnRjX2JsZW5kX3NldHVwX21p eGVyKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKIAkJCQkJICAgZmIgPyBmYi0+bW9kaWZpZXIgOiAw KTsKIAogCQkvKiBibGVuZCBjb25maWcgdXBkYXRlICovCi0JCWZvciAobG1faWR4ID0gMDsgbG1f aWR4IDwgZHB1X2NydGMtPm51bV9taXhlcnM7IGxtX2lkeCsrKSB7CisJCWZvciAobG1faWR4ID0g MDsgbG1faWR4IDwgY3N0YXRlLT5udW1fbWl4ZXJzOyBsbV9pZHgrKykgewogCQkJX2RwdV9jcnRj X3NldHVwX2JsZW5kX2NmZyhtaXhlciArIGxtX2lkeCwgcHN0YXRlKTsKIAogCQkJbWl4ZXJbbG1f aWR4XS5mbHVzaF9tYXNrIHw9IGZsdXNoX21hc2s7CkBAIC0yNDIsNyArMjQyLDcgQEAgc3RhdGlj IHZvaWQgX2RwdV9jcnRjX2JsZW5kX3NldHVwX21peGVyKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywK IHN0YXRpYyB2b2lkIF9kcHVfY3J0Y19ibGVuZF9zZXR1cChzdHJ1Y3QgZHJtX2NydGMgKmNydGMp CiB7CiAJc3RydWN0IGRwdV9jcnRjICpkcHVfY3J0YzsKLQlzdHJ1Y3QgZHB1X2NydGNfc3RhdGUg KmRwdV9jcnRjX3N0YXRlOworCXN0cnVjdCBkcHVfY3J0Y19zdGF0ZSAqY3N0YXRlOwogCXN0cnVj dCBkcHVfY3J0Y19taXhlciAqbWl4ZXI7CiAJc3RydWN0IGRwdV9od19jdGwgKmN0bDsKIAlzdHJ1 Y3QgZHB1X2h3X21peGVyICpsbTsKQEAgLTI1MywxNyArMjUzLDE3IEBAIHN0YXRpYyB2b2lkIF9k cHVfY3J0Y19ibGVuZF9zZXR1cChzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCiAJCXJldHVybjsKIAog CWRwdV9jcnRjID0gdG9fZHB1X2NydGMoY3J0Yyk7Ci0JZHB1X2NydGNfc3RhdGUgPSB0b19kcHVf Y3J0Y19zdGF0ZShjcnRjLT5zdGF0ZSk7Ci0JbWl4ZXIgPSBkcHVfY3J0Yy0+bWl4ZXJzOworCWNz dGF0ZSA9IHRvX2RwdV9jcnRjX3N0YXRlKGNydGMtPnN0YXRlKTsKKwltaXhlciA9IGNzdGF0ZS0+ bWl4ZXJzOwogCiAJRFBVX0RFQlVHKCIlc1xuIiwgZHB1X2NydGMtPm5hbWUpOwogCi0JaWYgKGRw dV9jcnRjLT5udW1fbWl4ZXJzID4gQ1JUQ19EVUFMX01JWEVSUykgewotCQlEUFVfRVJST1IoImlu dmFsaWQgbnVtYmVyIG1peGVyczogJWRcbiIsIGRwdV9jcnRjLT5udW1fbWl4ZXJzKTsKKwlpZiAo Y3N0YXRlLT5udW1fbWl4ZXJzID4gQ1JUQ19EVUFMX01JWEVSUykgeworCQlEUFVfRVJST1IoImlu dmFsaWQgbnVtYmVyIG1peGVyczogJWRcbiIsIGNzdGF0ZS0+bnVtX21peGVycyk7CiAJCXJldHVy bjsKIAl9CiAKLQlmb3IgKGkgPSAwOyBpIDwgZHB1X2NydGMtPm51bV9taXhlcnM7IGkrKykgewor CWZvciAoaSA9IDA7IGkgPCBjc3RhdGUtPm51bV9taXhlcnM7IGkrKykgewogCQlpZiAoIW1peGVy W2ldLmh3X2xtIHx8ICFtaXhlcltpXS5od19jdGwpIHsKIAkJCURQVV9FUlJPUigiaW52YWxpZCBs bSBvciBjdGwgYXNzaWduZWQgdG8gbWl4ZXJcbiIpOwogCQkJcmV0dXJuOwpAQCAtMjgwLDcgKzI4 MCw3IEBAIHN0YXRpYyB2b2lkIF9kcHVfY3J0Y19ibGVuZF9zZXR1cChzdHJ1Y3QgZHJtX2NydGMg KmNydGMpCiAKIAlfZHB1X2NydGNfYmxlbmRfc2V0dXBfbWl4ZXIoY3J0YywgZHB1X2NydGMsIG1p eGVyKTsKIAotCWZvciAoaSA9IDA7IGkgPCBkcHVfY3J0Yy0+bnVtX21peGVyczsgaSsrKSB7CisJ Zm9yIChpID0gMDsgaSA8IGNzdGF0ZS0+bnVtX21peGVyczsgaSsrKSB7CiAJCWN0bCA9IG1peGVy W2ldLmh3X2N0bDsKIAkJbG0gPSBtaXhlcltpXS5od19sbTsKIApAQCAtNTAyLDcgKzUwMiw3IEBA IHN0YXRpYyB2b2lkIF9kcHVfY3J0Y19zZXR1cF9taXhlcl9mb3JfZW5jb2RlcigKIAkJc3RydWN0 IGRybV9jcnRjICpjcnRjLAogCQlzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuYykKIHsKLQlzdHJ1Y3Qg ZHB1X2NydGMgKmRwdV9jcnRjID0gdG9fZHB1X2NydGMoY3J0Yyk7CisJc3RydWN0IGRwdV9jcnRj X3N0YXRlICpjc3RhdGUgPSB0b19kcHVfY3J0Y19zdGF0ZShjcnRjLT5zdGF0ZSk7CiAJc3RydWN0 IGRwdV9rbXMgKmRwdV9rbXMgPSBfZHB1X2NydGNfZ2V0X2ttcyhjcnRjKTsKIAlzdHJ1Y3QgZHB1 X3JtICpybSA9ICZkcHVfa21zLT5ybTsKIAlzdHJ1Y3QgZHB1X2NydGNfbWl4ZXIgKm1peGVyOwpA QCAtNTE0LDggKzUxNCw4IEBAIHN0YXRpYyB2b2lkIF9kcHVfY3J0Y19zZXR1cF9taXhlcl9mb3Jf ZW5jb2RlcigKIAlkcHVfcm1faW5pdF9od19pdGVyKCZjdGxfaXRlciwgZW5jLT5iYXNlLmlkLCBE UFVfSFdfQkxLX0NUTCk7CiAKIAkvKiBTZXQgdXAgYWxsIHRoZSBtaXhlcnMgYW5kIGN0bHMgcmVz ZXJ2ZWQgYnkgdGhpcyBlbmNvZGVyICovCi0JZm9yIChpID0gZHB1X2NydGMtPm51bV9taXhlcnM7 IGkgPCBBUlJBWV9TSVpFKGRwdV9jcnRjLT5taXhlcnMpOyBpKyspIHsKLQkJbWl4ZXIgPSAmZHB1 X2NydGMtPm1peGVyc1tpXTsKKwlmb3IgKGkgPSBjc3RhdGUtPm51bV9taXhlcnM7IGkgPCBBUlJB WV9TSVpFKGNzdGF0ZS0+bWl4ZXJzKTsgaSsrKSB7CisJCW1peGVyID0gJmNzdGF0ZS0+bWl4ZXJz W2ldOwogCiAJCWlmICghZHB1X3JtX2dldF9odyhybSwgJmxtX2l0ZXIpKQogCQkJYnJlYWs7CkBA IC01NDAsNyArNTQwLDcgQEAgc3RhdGljIHZvaWQgX2RwdV9jcnRjX3NldHVwX21peGVyX2Zvcl9l bmNvZGVyKAogCiAJCW1peGVyLT5lbmNvZGVyID0gZW5jOwogCi0JCWRwdV9jcnRjLT5udW1fbWl4 ZXJzKys7CisJCWNzdGF0ZS0+bnVtX21peGVycysrOwogCQlEUFVfREVCVUcoInNldHVwIG1peGVy ICVkOiBsbSAlZFxuIiwKIAkJCQlpLCBtaXhlci0+aHdfbG0tPmlkeCAtIExNXzApOwogCQlEUFVf REVCVUcoInNldHVwIG1peGVyICVkOiBjdGwgJWRcbiIsCkBAIC01NTEsMTEgKzU1MSwxMSBAQCBz dGF0aWMgdm9pZCBfZHB1X2NydGNfc2V0dXBfbWl4ZXJfZm9yX2VuY29kZXIoCiBzdGF0aWMgdm9p ZCBfZHB1X2NydGNfc2V0dXBfbWl4ZXJzKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKIHsKIAlzdHJ1 Y3QgZHB1X2NydGMgKmRwdV9jcnRjID0gdG9fZHB1X2NydGMoY3J0Yyk7CisJc3RydWN0IGRwdV9j cnRjX3N0YXRlICpjc3RhdGUgPSB0b19kcHVfY3J0Y19zdGF0ZShjcnRjLT5zdGF0ZSk7CiAJc3Ry dWN0IGRybV9lbmNvZGVyICplbmM7CiAKLQlkcHVfY3J0Yy0+bnVtX21peGVycyA9IDA7Ci0JZHB1 X2NydGMtPm1peGVyc19zd2FwcGVkID0gZmFsc2U7Ci0JbWVtc2V0KGRwdV9jcnRjLT5taXhlcnMs IDAsIHNpemVvZihkcHVfY3J0Yy0+bWl4ZXJzKSk7CisJY3N0YXRlLT5udW1fbWl4ZXJzID0gMDsK KwltZW1zZXQoY3N0YXRlLT5taXhlcnMsIDAsIHNpemVvZihjc3RhdGUtPm1peGVycykpOwogCiAJ bXV0ZXhfbG9jaygmZHB1X2NydGMtPmNydGNfbG9jayk7CiAJLyogQ2hlY2sgZm9yIG1peGVycyBv biBhbGwgZW5jb2RlcnMgYXR0YWNoZWQgdG8gdGhpcyBjcnRjICovCkBAIC01ODksNyArNTg5LDcg QEAgc3RhdGljIHZvaWQgX2RwdV9jcnRjX3NldHVwX2xtX2JvdW5kcyhzdHJ1Y3QgZHJtX2NydGMg KmNydGMsCiAJYWRqX21vZGUgPSAmc3RhdGUtPmFkanVzdGVkX21vZGU7CiAJY3J0Y19zcGxpdF93 aWR0aCA9IGRwdV9jcnRjX2dldF9taXhlcl93aWR0aChkcHVfY3J0YywgY3N0YXRlLCBhZGpfbW9k ZSk7CiAKLQlmb3IgKGkgPSAwOyBpIDwgZHB1X2NydGMtPm51bV9taXhlcnM7IGkrKykgeworCWZv ciAoaSA9IDA7IGkgPCBjc3RhdGUtPm51bV9taXhlcnM7IGkrKykgewogCQlzdHJ1Y3QgZHJtX3Jl Y3QgKnIgPSAmY3N0YXRlLT5sbV9ib3VuZHNbaV07CiAJCXItPngxID0gY3J0Y19zcGxpdF93aWR0 aCAqIGk7CiAJCXItPnkxID0gMDsKQEAgLTYwNiw2ICs2MDYsNyBAQCBzdGF0aWMgdm9pZCBkcHVf Y3J0Y19hdG9taWNfYmVnaW4oc3RydWN0IGRybV9jcnRjICpjcnRjLAogCQlzdHJ1Y3QgZHJtX2Ny dGNfc3RhdGUgKm9sZF9zdGF0ZSkKIHsKIAlzdHJ1Y3QgZHB1X2NydGMgKmRwdV9jcnRjOworCXN0 cnVjdCBkcHVfY3J0Y19zdGF0ZSAqY3N0YXRlOwogCXN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2Rl cjsKIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2OwogCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CkBAIC02 MjUsMTAgKzYyNiwxMSBAQCBzdGF0aWMgdm9pZCBkcHVfY3J0Y19hdG9taWNfYmVnaW4oc3RydWN0 IGRybV9jcnRjICpjcnRjLAogCURQVV9ERUJVRygiY3J0YyVkXG4iLCBjcnRjLT5iYXNlLmlkKTsK IAogCWRwdV9jcnRjID0gdG9fZHB1X2NydGMoY3J0Yyk7CisJY3N0YXRlID0gdG9fZHB1X2NydGNf c3RhdGUoY3J0Yy0+c3RhdGUpOwogCWRldiA9IGNydGMtPmRldjsKIAlzbW11X3N0YXRlID0gJmRw dV9jcnRjLT5zbW11X3N0YXRlOwogCi0JaWYgKCFkcHVfY3J0Yy0+bnVtX21peGVycykgeworCWlm ICghY3N0YXRlLT5udW1fbWl4ZXJzKSB7CiAJCV9kcHVfY3J0Y19zZXR1cF9taXhlcnMoY3J0Yyk7 CiAJCV9kcHVfY3J0Y19zZXR1cF9sbV9ib3VuZHMoY3J0YywgY3J0Yy0+c3RhdGUpOwogCX0KQEAg LTY1NSw3ICs2NTcsNyBAQCBzdGF0aWMgdm9pZCBkcHVfY3J0Y19hdG9taWNfYmVnaW4oc3RydWN0 IGRybV9jcnRjICpjcnRjLAogCSAqIGl0IG1lYW5zIHdlIGFyZSB0cnlpbmcgdG8gZmx1c2ggYSBD UlRDIHdob3NlIHN0YXRlIGlzIGRpc2FibGVkOgogCSAqIG5vdGhpbmcgZWxzZSBuZWVkcyB0byBi ZSBkb25lLgogCSAqLwotCWlmICh1bmxpa2VseSghZHB1X2NydGMtPm51bV9taXhlcnMpKQorCWlm ICh1bmxpa2VseSghY3N0YXRlLT5udW1fbWl4ZXJzKSkKIAkJcmV0dXJuOwogCiAJX2RwdV9jcnRj X2JsZW5kX3NldHVwKGNydGMpOwpAQCAtNzE5LDcgKzcyMSw3IEBAIHN0YXRpYyB2b2lkIGRwdV9j cnRjX2F0b21pY19mbHVzaChzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCiAJICogaXQgbWVhbnMgd2Ug YXJlIHRyeWluZyB0byBmbHVzaCBhIENSVEMgd2hvc2Ugc3RhdGUgaXMgZGlzYWJsZWQ6CiAJICog bm90aGluZyBlbHNlIG5lZWRzIHRvIGJlIGRvbmUuCiAJICovCi0JaWYgKHVubGlrZWx5KCFkcHVf Y3J0Yy0+bnVtX21peGVycykpCisJaWYgKHVubGlrZWx5KCFjc3RhdGUtPm51bV9taXhlcnMpKQog CQlyZXR1cm47CiAKIAkvKgpAQCAtODM0LDcgKzgzNiw3IEBAIHZvaWQgZHB1X2NydGNfY29tbWl0 X2tpY2tvZmYoc3RydWN0IGRybV9jcnRjICpjcnRjKQogCSAqIGl0IG1lYW5zIHdlIGFyZSB0cnlp bmcgdG8gc3RhcnQgYSBDUlRDIHdob3NlIHN0YXRlIGlzIGRpc2FibGVkOgogCSAqIG5vdGhpbmcg ZWxzZSBuZWVkcyB0byBiZSBkb25lLgogCSAqLwotCWlmICh1bmxpa2VseSghZHB1X2NydGMtPm51 bV9taXhlcnMpKQorCWlmICh1bmxpa2VseSghY3N0YXRlLT5udW1fbWl4ZXJzKSkKIAkJcmV0dXJu OwogCiAJRFBVX0FUUkFDRV9CRUdJTigiY3J0Y19jb21taXQiKTsKQEAgLTEwNjksNiArMTA3MSw3 IEBAIHN0YXRpYyB2b2lkIGRwdV9jcnRjX2hhbmRsZV9wb3dlcl9ldmVudCh1MzIgZXZlbnRfdHlw ZSwgdm9pZCAqYXJnKQogCXN0cnVjdCBkcHVfY3J0YyAqZHB1X2NydGM7CiAJc3RydWN0IGRybV9l bmNvZGVyICplbmNvZGVyOwogCXN0cnVjdCBkcHVfY3J0Y19taXhlciAqbTsKKwlzdHJ1Y3QgZHB1 X2NydGNfc3RhdGUgKmNzdGF0ZTsKIAl1MzIgaSwgbWlzcl9zdGF0dXM7CiAKIAlpZiAoIWNydGMp IHsKQEAgLTEwNzYsNiArMTA3OSw3IEBAIHN0YXRpYyB2b2lkIGRwdV9jcnRjX2hhbmRsZV9wb3dl cl9ldmVudCh1MzIgZXZlbnRfdHlwZSwgdm9pZCAqYXJnKQogCQlyZXR1cm47CiAJfQogCWRwdV9j cnRjID0gdG9fZHB1X2NydGMoY3J0Yyk7CisJY3N0YXRlID0gdG9fZHB1X2NydGNfc3RhdGUoZHB1 X2NydGMtPmJhc2Uuc3RhdGUpOwogCiAJbXV0ZXhfbG9jaygmZHB1X2NydGMtPmNydGNfbG9jayk7 CiAKQEAgLTEwOTEsOCArMTA5NSw4IEBAIHN0YXRpYyB2b2lkIGRwdV9jcnRjX2hhbmRsZV9wb3dl cl9ldmVudCh1MzIgZXZlbnRfdHlwZSwgdm9pZCAqYXJnKQogCQkJZHB1X2VuY29kZXJfdmlydF9y ZXN0b3JlKGVuY29kZXIpOwogCQl9CiAKLQkJZm9yIChpID0gMDsgaSA8IGRwdV9jcnRjLT5udW1f bWl4ZXJzOyArK2kpIHsKLQkJCW0gPSAmZHB1X2NydGMtPm1peGVyc1tpXTsKKwkJZm9yIChpID0g MDsgaSA8IGNzdGF0ZS0+bnVtX21peGVyczsgKytpKSB7CisJCQltID0gJmNzdGF0ZS0+bWl4ZXJz W2ldOwogCQkJaWYgKCFtLT5od19sbSB8fCAhbS0+aHdfbG0tPm9wcy5zZXR1cF9taXNyIHx8CiAJ CQkJCSFkcHVfY3J0Yy0+bWlzcl9lbmFibGUpCiAJCQkJY29udGludWU7CkBAIC0xMTAyLDggKzEx MDYsOCBAQCBzdGF0aWMgdm9pZCBkcHVfY3J0Y19oYW5kbGVfcG93ZXJfZXZlbnQodTMyIGV2ZW50 X3R5cGUsIHZvaWQgKmFyZykKIAkJfQogCQlicmVhazsKIAljYXNlIERQVV9QT1dFUl9FVkVOVF9Q UkVfRElTQUJMRToKLQkJZm9yIChpID0gMDsgaSA8IGRwdV9jcnRjLT5udW1fbWl4ZXJzOyArK2kp IHsKLQkJCW0gPSAmZHB1X2NydGMtPm1peGVyc1tpXTsKKwkJZm9yIChpID0gMDsgaSA8IGNzdGF0 ZS0+bnVtX21peGVyczsgKytpKSB7CisJCQltID0gJmNzdGF0ZS0+bWl4ZXJzW2ldOwogCQkJaWYg KCFtLT5od19sbSB8fCAhbS0+aHdfbG0tPm9wcy5jb2xsZWN0X21pc3IgfHwKIAkJCQkJIWRwdV9j cnRjLT5taXNyX2VuYWJsZSkKIAkJCQljb250aW51ZTsKQEAgLTExOTEsOSArMTE5NSw4IEBAIHN0 YXRpYyB2b2lkIGRwdV9jcnRjX2Rpc2FibGUoc3RydWN0IGRybV9jcnRjICpjcnRjKQogCQlkcHVf cG93ZXJfaGFuZGxlX3VucmVnaXN0ZXJfZXZlbnQoZHB1X2NydGMtPnBoYW5kbGUsCiAJCQkJZHB1 X2NydGMtPnBvd2VyX2V2ZW50KTsKIAotCW1lbXNldChkcHVfY3J0Yy0+bWl4ZXJzLCAwLCBzaXpl b2YoZHB1X2NydGMtPm1peGVycykpOwotCWRwdV9jcnRjLT5udW1fbWl4ZXJzID0gMDsKLQlkcHVf Y3J0Yy0+bWl4ZXJzX3N3YXBwZWQgPSBmYWxzZTsKKwltZW1zZXQoY3N0YXRlLT5taXhlcnMsIDAs IHNpemVvZihjc3RhdGUtPm1peGVycykpOworCWNzdGF0ZS0+bnVtX21peGVycyA9IDA7CiAKIAkv KiBkaXNhYmxlIGNsayAmIGJ3IGNvbnRyb2wgdW50aWwgY2xrICYgYncgcHJvcGVydGllcyBhcmUg c2V0ICovCiAJY3N0YXRlLT5id19jb250cm9sID0gZmFsc2U7CkBAIC0xNTUyLDggKzE1NTUsOCBA QCBzdGF0aWMgaW50IF9kcHVfZGVidWdmc19zdGF0dXNfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKnMs IHZvaWQgKmRhdGEpCiAKIAlzZXFfcHV0cyhzLCAiXG4iKTsKIAotCWZvciAoaSA9IDA7IGkgPCBk cHVfY3J0Yy0+bnVtX21peGVyczsgKytpKSB7Ci0JCW0gPSAmZHB1X2NydGMtPm1peGVyc1tpXTsK Kwlmb3IgKGkgPSAwOyBpIDwgY3N0YXRlLT5udW1fbWl4ZXJzOyArK2kpIHsKKwkJbSA9ICZjc3Rh dGUtPm1peGVyc1tpXTsKIAkJaWYgKCFtLT5od19sbSkKIAkJCXNlcV9wcmludGYocywgIlx0bWl4 ZXJbJWRdIGhhcyBubyBsbVxuIiwgaSk7CiAJCWVsc2UgaWYgKCFtLT5od19jdGwpCkBAIC0xNjQ2 LDYgKzE2NDksNyBAQCBzdGF0aWMgc3NpemVfdCBfZHB1X2NydGNfbWlzcl9zZXR1cChzdHJ1Y3Qg ZmlsZSAqZmlsZSwKIAkJY29uc3QgY2hhciBfX3VzZXIgKnVzZXJfYnVmLCBzaXplX3QgY291bnQs IGxvZmZfdCAqcHBvcykKIHsKIAlzdHJ1Y3QgZHB1X2NydGMgKmRwdV9jcnRjOworCXN0cnVjdCBk cHVfY3J0Y19zdGF0ZSAqY3N0YXRlOwogCXN0cnVjdCBkcHVfY3J0Y19taXhlciAqbTsKIAlpbnQg aSA9IDAsIHJjOwogCWNoYXIgYnVmW01JU1JfQlVGRl9TSVpFICsgMV07CkBAIC0xNjU2LDYgKzE2 NjAsNyBAQCBzdGF0aWMgc3NpemVfdCBfZHB1X2NydGNfbWlzcl9zZXR1cChzdHJ1Y3QgZmlsZSAq ZmlsZSwKIAkJcmV0dXJuIC1FSU5WQUw7CiAKIAlkcHVfY3J0YyA9IGZpbGUtPnByaXZhdGVfZGF0 YTsKKwljc3RhdGUgPSB0b19kcHVfY3J0Y19zdGF0ZShkcHVfY3J0Yy0+YmFzZS5zdGF0ZSk7CiAJ YnVmZl9jb3B5ID0gbWluX3Qoc2l6ZV90LCBjb3VudCwgTUlTUl9CVUZGX1NJWkUpOwogCWlmIChj b3B5X2Zyb21fdXNlcihidWYsIHVzZXJfYnVmLCBidWZmX2NvcHkpKSB7CiAJCURQVV9FUlJPUigi YnVmZmVyIGNvcHkgZmFpbGVkXG4iKTsKQEAgLTE2NzQsOSArMTY3OSw5IEBAIHN0YXRpYyBzc2l6 ZV90IF9kcHVfY3J0Y19taXNyX3NldHVwKHN0cnVjdCBmaWxlICpmaWxlLAogCW11dGV4X2xvY2so JmRwdV9jcnRjLT5jcnRjX2xvY2spOwogCWRwdV9jcnRjLT5taXNyX2VuYWJsZSA9IGVuYWJsZTsK IAlkcHVfY3J0Yy0+bWlzcl9mcmFtZV9jb3VudCA9IGZyYW1lX2NvdW50OwotCWZvciAoaSA9IDA7 IGkgPCBkcHVfY3J0Yy0+bnVtX21peGVyczsgKytpKSB7CisJZm9yIChpID0gMDsgaSA8IGNzdGF0 ZS0+bnVtX21peGVyczsgKytpKSB7CiAJCWRwdV9jcnRjLT5taXNyX2RhdGFbaV0gPSAwOwotCQlt ID0gJmRwdV9jcnRjLT5taXhlcnNbaV07CisJCW0gPSAmY3N0YXRlLT5taXhlcnNbaV07CiAJCWlm ICghbS0+aHdfbG0gfHwgIW0tPmh3X2xtLT5vcHMuc2V0dXBfbWlzcikKIAkJCWNvbnRpbnVlOwog CkBAIC0xNjkyLDYgKzE2OTcsNyBAQCBzdGF0aWMgc3NpemVfdCBfZHB1X2NydGNfbWlzcl9yZWFk KHN0cnVjdCBmaWxlICpmaWxlLAogCQljaGFyIF9fdXNlciAqdXNlcl9idWZmLCBzaXplX3QgY291 bnQsIGxvZmZfdCAqcHBvcykKIHsKIAlzdHJ1Y3QgZHB1X2NydGMgKmRwdV9jcnRjOworCXN0cnVj dCBkcHVfY3J0Y19zdGF0ZSAqY3N0YXRlOwogCXN0cnVjdCBkcHVfY3J0Y19taXhlciAqbTsKIAlp bnQgaSA9IDAsIHJjOwogCXUzMiBtaXNyX3N0YXR1czsKQEAgLTE3MDUsNiArMTcxMSw3IEBAIHN0 YXRpYyBzc2l6ZV90IF9kcHVfY3J0Y19taXNyX3JlYWQoc3RydWN0IGZpbGUgKmZpbGUsCiAJCXJl dHVybiAtRUlOVkFMOwogCiAJZHB1X2NydGMgPSBmaWxlLT5wcml2YXRlX2RhdGE7CisJY3N0YXRl ID0gdG9fZHB1X2NydGNfc3RhdGUoZHB1X2NydGMtPmJhc2Uuc3RhdGUpOwogCXJjID0gX2RwdV9j cnRjX3Bvd2VyX2VuYWJsZShkcHVfY3J0YywgdHJ1ZSk7CiAJaWYgKHJjKQogCQlyZXR1cm4gcmM7 CkBAIC0xNzE2LDggKzE3MjMsOCBAQCBzdGF0aWMgc3NpemVfdCBfZHB1X2NydGNfbWlzcl9yZWFk KHN0cnVjdCBmaWxlICpmaWxlLAogCQlnb3RvIGJ1ZmZfY2hlY2s7CiAJfQogCi0JZm9yIChpID0g MDsgaSA8IGRwdV9jcnRjLT5udW1fbWl4ZXJzOyArK2kpIHsKLQkJbSA9ICZkcHVfY3J0Yy0+bWl4 ZXJzW2ldOworCWZvciAoaSA9IDA7IGkgPCBjc3RhdGUtPm51bV9taXhlcnM7ICsraSkgeworCQlt ID0gJmNzdGF0ZS0+bWl4ZXJzW2ldOwogCQlpZiAoIW0tPmh3X2xtIHx8ICFtLT5od19sbS0+b3Bz LmNvbGxlY3RfbWlzcikKIAkJCWNvbnRpbnVlOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vbXNtL2Rpc3AvZHB1MS9kcHVfY3J0Yy5oIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2Rw dTEvZHB1X2NydGMuaAppbmRleCBlNjMyNjUxLi45MTc3ZWU2IDEwMDY0NAotLS0gYS9kcml2ZXJz L2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfY3J0Yy5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9t c20vZGlzcC9kcHUxL2RwdV9jcnRjLmgKQEAgLTEyMSwxMSArMTIxLDYgQEAgc3RydWN0IGRwdV9j cnRjX2ZyYW1lX2V2ZW50IHsKICAqIHN0cnVjdCBkcHVfY3J0YyAtIHZpcnR1YWxpemVkIENSVEMg ZGF0YSBzdHJ1Y3R1cmUKICAqIEBiYXNlICAgICAgICAgIDogQmFzZSBkcm0gY3J0YyBzdHJ1Y3R1 cmUKICAqIEBuYW1lICAgICAgICAgIDogQVNDSUkgZGVzY3JpcHRpb24gb2YgdGhpcyBjcnRjCi0g KiBAbnVtX2N0bHMgICAgICA6IE51bWJlciBvZiBjdGwgcGF0aHMgaW4gdXNlCi0gKiBAbnVtX21p eGVycyAgICA6IE51bWJlciBvZiBtaXhlcnMgaW4gdXNlCi0gKiBAbWl4ZXJzX3N3YXBwZWQ6IFdo ZXRoZXIgdGhlIG1peGVycyBoYXZlIGJlZW4gc3dhcHBlZCBmb3IgbGVmdC9yaWdodCB1cGRhdGUK LSAqICAgICAgICAgICAgICAgICAgZXNwZWNpYWxseSBpbiB0aGUgY2FzZSBvZiBEU0MgTWVyZ2Uu Ci0gKiBAbWl4ZXJzICAgICAgICA6IExpc3Qgb2YgYWN0aXZlIG1peGVycwogICogQGV2ZW50ICAg ICAgICAgOiBQb2ludGVyIHRvIGxhc3QgcmVjZWl2ZWQgZHJtIHZibGFuayBldmVudC4gSWYgdGhl cmUgaXMgYQogICogICAgICAgICAgICAgICAgICBwZW5kaW5nIHZibGFuayBldmVudCwgdGhpcyB3 aWxsIGJlIG5vbi1udWxsLgogICogQHZzeW5jX2NvdW50ICAgOiBSdW5uaW5nIGNvdW50IG9mIHJl Y2VpdmVkIHZzeW5jIGV2ZW50cwpAQCAtMTY3LDEyICsxNjIsNiBAQCBzdHJ1Y3QgZHB1X2NydGMg ewogCXN0cnVjdCBkcm1fY3J0YyBiYXNlOwogCWNoYXIgbmFtZVtEUFVfQ1JUQ19OQU1FX1NJWkVd OwogCi0JLyogSFcgUmVzb3VyY2VzIHJlc2VydmVkIGZvciB0aGUgY3J0YyAqLwotCXUzMiBudW1f Y3RsczsKLQl1MzIgbnVtX21peGVyczsKLQlib29sIG1peGVyc19zd2FwcGVkOwotCXN0cnVjdCBk cHVfY3J0Y19taXhlciBtaXhlcnNbQ1JUQ19EVUFMX01JWEVSU107Ci0KIAlzdHJ1Y3QgZHJtX3Bl bmRpbmdfdmJsYW5rX2V2ZW50ICpldmVudDsKIAl1MzIgdnN5bmNfY291bnQ7CiAKQEAgLTIyNyw2 ICsyMTYsMTAgQEAgc3RydWN0IGRwdV9jcnRjIHsKICAqIEBwcm9wZXJ0eV92YWx1ZXM6IEN1cnJl bnQgY3J0YyBwcm9wZXJ0eSB2YWx1ZXMKICAqIEBpbnB1dF9mZW5jZV90aW1lb3V0X25zIDogQ2Fj aGVkIGlucHV0IGZlbmNlIHRpbWVvdXQsIGluIG5zCiAgKiBAbmV3X3BlcmY6IG5ldyBwZXJmb3Jt YW5jZSBzdGF0ZSBiZWluZyByZXF1ZXN0ZWQKKyAqIEBudW1fbWl4ZXJzICAgIDogTnVtYmVyIG9m IG1peGVycyBpbiB1c2UKKyAqIEBtaXhlcnMgICAgICAgIDogTGlzdCBvZiBhY3RpdmUgbWl4ZXJz CisgKiBAbnVtX2N0bHMgICAgICA6IE51bWJlciBvZiBjdGwgcGF0aHMgaW4gdXNlCisgKiBAaHdf Y3RscyAgICAgICA6IExpc3Qgb2YgYWN0aXZlbCBjdGwgcGF0aHMKICAqLwogc3RydWN0IGRwdV9j cnRjX3N0YXRlIHsKIAlzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgYmFzZTsKQEAgLTIzNiw4ICsyMjks MTQgQEAgc3RydWN0IGRwdV9jcnRjX3N0YXRlIHsKIAlzdHJ1Y3QgZHJtX3JlY3QgbG1fYm91bmRz W0NSVENfRFVBTF9NSVhFUlNdOwogCiAJdWludDY0X3QgaW5wdXRfZmVuY2VfdGltZW91dF9uczsK LQogCXN0cnVjdCBkcHVfY29yZV9wZXJmX3BhcmFtcyBuZXdfcGVyZjsKKworCS8qIEhXIFJlc291 cmNlcyByZXNlcnZlZCBmb3IgdGhlIGNydGMgKi8KKwl1MzIgbnVtX21peGVyczsKKwlzdHJ1Y3Qg ZHB1X2NydGNfbWl4ZXIgbWl4ZXJzW0NSVENfRFVBTF9NSVhFUlNdOworCisJdTMyIG51bV9jdGxz OworCXN0cnVjdCBkcHVfaHdfY3RsICpod19jdGxzW0NSVENfRFVBTF9NSVhFUlNdOwogfTsKIAog I2RlZmluZSB0b19kcHVfY3J0Y19zdGF0ZSh4KSBcCkBAIC0yNTUsNyArMjU0LDcgQEAgc3RhdGlj IGlubGluZSBpbnQgZHB1X2NydGNfZ2V0X21peGVyX3dpZHRoKHN0cnVjdCBkcHVfY3J0YyAqZHB1 X2NydGMsCiAJaWYgKCFkcHVfY3J0YyB8fCAhY3N0YXRlIHx8ICFtb2RlKQogCQlyZXR1cm4gMDsK IAotCW1peGVyX3dpZHRoID0gKGRwdV9jcnRjLT5udW1fbWl4ZXJzID09IENSVENfRFVBTF9NSVhF UlMgPworCW1peGVyX3dpZHRoID0gKGNzdGF0ZS0+bnVtX21peGVycyA9PSBDUlRDX0RVQUxfTUlY RVJTID8KIAkJCW1vZGUtPmhkaXNwbGF5IC8gQ1JUQ19EVUFMX01JWEVSUyA6IG1vZGUtPmhkaXNw bGF5KTsKIAogCXJldHVybiBtaXhlcl93aWR0aDsKLS0gClRoZSBRdWFsY29tbSBJbm5vdmF0aW9u IENlbnRlciwgSW5jLiBpcyBhIG1lbWJlciBvZiB0aGUgQ29kZSBBdXJvcmEgRm9ydW0sCmEgTGlu dXggRm91bmRhdGlvbiBDb2xsYWJvcmF0aXZlIFByb2plY3QKCl9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fCkZyZWVkcmVubyBtYWlsaW5nIGxpc3QKRnJlZWRy ZW5vQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9t YWlsbWFuL2xpc3RpbmZvL2ZyZWVkcmVubwo=