From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jeykumar Sankaran Subject: [PATCH 07/25] drm/msm/dpu: reserve using crtc state Date: Mon, 8 Oct 2018 21:27:24 -0700 Message-ID: <1539059262-8326-8-git-send-email-jsanka@codeaurora.org> References: <1539059262-8326-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: <1539059262-8326-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 , jcrouse-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org, seanpaul-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org, robdclark-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org List-Id: linux-arm-msm@vger.kernel.org RFBVIG1haW50YWluZWQgcmVzZXJ2YXRpb24gbGlzdHMgdG8gY2FjaGUgYXNzaWduZWQKSFcgYmxv Y2tzIGZvciB0aGUgZGlzcGxheSBhbmQgYSByZXRyaWV2YWwgbWVjaGFuaXNtIGZvcgp0aGUgaW5k aXZpZHVhbCBEUk0gY29tcG9uZW50cyB0byBxdWVyeSB0aGVpciByZXNwZWN0aXZlCkhXIGJsb2Nr cy4KClRoaXMgcGF0Y2ggdXNlcyB0aGUgc3ViLWNsYXNzZWQgQ1JUQyBzdGF0ZSB0byBzdG9yZQph bmQgdHJhY2sgSFcgYmxvY2tzIGFzc2lnbmVkIGZvciBkaWZmZXJlbnQgY29tcG9uZW50cwpvZiB0 aGUgZGlzcGxheSBwaXBlbGluZS4gSXQgaGVscHMgdGhlIGRyaXZlcjoKLSB0byBnZXQgcmlkIG9m IHVud2FudGVkIHN0b3JlIGFuZCByZXRyaWV2YWwgUk0gQVBJJ3MKLSB0byBwcmVzZXJ2ZSBIVyBy ZXNvdXJjZXMgYXNzaWduZWQgaW4gYXRvbWljX2NoZWNrCiAgdGhyb3VnaCBhdG9taWMgc3dhcC9k dXBsaWNhdGUuCgpTZXBhcmF0ZSBwYXRjaCBpcyBzdWJtaXR0ZWQgdG8gcmVtb3ZlIHJlc291cmNl CnJlc2VydmF0aW9uIGluIGF0b21pY19jb21taXQgcGF0aC4KClNpZ25lZC1vZmYtYnk6IEpleWt1 bWFyIFNhbmthcmFuIDxqc2Fua2FAY29kZWF1cm9yYS5vcmc+Ci0tLQogZHJpdmVycy9ncHUvZHJt L21zbS9kaXNwL2RwdTEvZHB1X2NydGMuYyAgICAgICAgICAgfCA2NSArKystLS0tLS0tLS0tLS0t LS0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfY3J0Yy5oICAgICAgICAg ICB8IDE0ICsrKysrCiBkcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfZW5jb2Rlci5j ICAgICAgICB8IDI4ICsrKy0tLS0tLS0KIC4uLi9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2Vu Y29kZXJfcGh5c192aWQuYyAgIHwgMjAgKystLS0tLQogZHJpdmVycy9ncHUvZHJtL21zbS9kaXNw L2RwdTEvZHB1X3JtLmMgICAgICAgICAgICAgfCA1OCArKysrKysrKysrKystLS0tLS0tCiA1IGZp bGVzIGNoYW5nZWQsIDcyIGluc2VydGlvbnMoKyksIDExMyBkZWxldGlvbnMoLSkKCmRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfY3J0Yy5jIGIvZHJpdmVycy9n cHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2NydGMuYwppbmRleCA0OTYwNjQxLi4wNjI1ZjU2IDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfY3J0Yy5jCisrKyBi L2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9jcnRjLmMKQEAgLTQyMSw2OSArNDIx LDIwIEBAIHZvaWQgZHB1X2NydGNfY29tcGxldGVfY29tbWl0KHN0cnVjdCBkcm1fY3J0YyAqY3J0 YywKIAl0cmFjZV9kcHVfY3J0Y19jb21wbGV0ZV9jb21taXQoRFJNSUQoY3J0YykpOwogfQogCi1z dGF0aWMgdm9pZCBfZHB1X2NydGNfc2V0dXBfbWl4ZXJfZm9yX2VuY29kZXIoCi0JCXN0cnVjdCBk cm1fY3J0YyAqY3J0YywKLQkJc3RydWN0IGRybV9lbmNvZGVyICplbmMpCitzdGF0aWMgdm9pZCBf ZHB1X2NydGNfc2V0dXBfbWl4ZXJzKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKIHsKIAlzdHJ1Y3Qg ZHB1X2NydGNfc3RhdGUgKmNzdGF0ZSA9IHRvX2RwdV9jcnRjX3N0YXRlKGNydGMtPnN0YXRlKTsK LQlzdHJ1Y3QgZHB1X2ttcyAqZHB1X2ttcyA9IF9kcHVfY3J0Y19nZXRfa21zKGNydGMpOwotCXN0 cnVjdCBkcHVfcm0gKnJtID0gJmRwdV9rbXMtPnJtOwogCXN0cnVjdCBkcHVfY3J0Y19taXhlciAq bWl4ZXI7Ci0Jc3RydWN0IGRwdV9od19jdGwgKmxhc3RfdmFsaWRfY3RsID0gTlVMTDsKLQlpbnQg aTsKLQlzdHJ1Y3QgZHB1X3JtX2h3X2l0ZXIgbG1faXRlciwgY3RsX2l0ZXI7Ci0KLQlkcHVfcm1f aW5pdF9od19pdGVyKCZsbV9pdGVyLCBlbmMtPmJhc2UuaWQsIERQVV9IV19CTEtfTE0pOwotCWRw dV9ybV9pbml0X2h3X2l0ZXIoJmN0bF9pdGVyLCBlbmMtPmJhc2UuaWQsIERQVV9IV19CTEtfQ1RM KTsKKwlpbnQgaSwgY3RsX2luZGV4OwogCiAJLyogU2V0IHVwIGFsbCB0aGUgbWl4ZXJzIGFuZCBj dGxzIHJlc2VydmVkIGJ5IHRoaXMgZW5jb2RlciAqLwotCWZvciAoaSA9IGNzdGF0ZS0+bnVtX21p eGVyczsgaSA8IEFSUkFZX1NJWkUoY3N0YXRlLT5taXhlcnMpOyBpKyspIHsKKwlmb3IgKGkgPSAw OyBpIDwgY3N0YXRlLT5udW1fbWl4ZXJzOyBpKyspIHsKIAkJbWl4ZXIgPSAmY3N0YXRlLT5taXhl cnNbaV07CiAKLQkJaWYgKCFkcHVfcm1fZ2V0X2h3KHJtLCAmbG1faXRlcikpCi0JCQlicmVhazsK LQkJbWl4ZXItPmh3X2xtID0gKHN0cnVjdCBkcHVfaHdfbWl4ZXIgKilsbV9pdGVyLmh3OwotCiAJ CS8qIENUTCBtYXkgYmUgPD0gTE1zLCBpZiA8LCBtdWx0aXBsZSBMTXMgY29udHJvbGxlZCBieSAx IENUTCAqLwotCQlpZiAoIWRwdV9ybV9nZXRfaHcocm0sICZjdGxfaXRlcikpIHsKLQkJCURQVV9E RUJVRygibm8gY3RsIGFzc2lnbmVkIHRvIGxtICVkLCB1c2luZyBwcmV2aW91c1xuIiwKLQkJCQkJ bWl4ZXItPmh3X2xtLT5pZHggLSBMTV8wKTsKLQkJCW1peGVyLT5sbV9jdGwgPSBsYXN0X3ZhbGlk X2N0bDsKLQkJfSBlbHNlIHsKLQkJCW1peGVyLT5sbV9jdGwgPSAoc3RydWN0IGRwdV9od19jdGwg KiljdGxfaXRlci5odzsKLQkJCWxhc3RfdmFsaWRfY3RsID0gbWl4ZXItPmxtX2N0bDsKLQkJfQot Ci0JCS8qIFNob3VsZG4ndCBoYXBwZW4sIG1peGVycyBhcmUgYWx3YXlzID49IGN0bHMgKi8KLQkJ aWYgKCFtaXhlci0+bG1fY3RsKSB7Ci0JCQlEUFVfRVJST1IoIm5vIHZhbGlkIGN0bHMgZm91bmQg Zm9yIGxtICVkXG4iLAotCQkJCQltaXhlci0+aHdfbG0tPmlkeCAtIExNXzApOwotCQkJcmV0dXJu OwotCQl9Ci0KLQkJY3N0YXRlLT5udW1fbWl4ZXJzKys7Ci0JCURQVV9ERUJVRygic2V0dXAgbWl4 ZXIgJWQ6IGxtICVkXG4iLAotCQkJCWksIG1peGVyLT5od19sbS0+aWR4IC0gTE1fMCk7Ci0JCURQ VV9ERUJVRygic2V0dXAgbWl4ZXIgJWQ6IGN0bCAlZFxuIiwKLQkJCQlpLCBtaXhlci0+bG1fY3Rs LT5pZHggLSBDVExfMCk7Ci0JfQotfQotCi1zdGF0aWMgdm9pZCBfZHB1X2NydGNfc2V0dXBfbWl4 ZXJzKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKLXsKLQlzdHJ1Y3QgZHB1X2NydGMgKmRwdV9jcnRj ID0gdG9fZHB1X2NydGMoY3J0Yyk7Ci0Jc3RydWN0IGRybV9lbmNvZGVyICplbmM7Ci0KLQltdXRl eF9sb2NrKCZkcHVfY3J0Yy0+Y3J0Y19sb2NrKTsKLQkvKiBDaGVjayBmb3IgbWl4ZXJzIG9uIGFs bCBlbmNvZGVycyBhdHRhY2hlZCB0byB0aGlzIGNydGMgKi8KLQlsaXN0X2Zvcl9lYWNoX2VudHJ5 KGVuYywgJmNydGMtPmRldi0+bW9kZV9jb25maWcuZW5jb2Rlcl9saXN0LCBoZWFkKSB7Ci0JCWlm IChlbmMtPmNydGMgIT0gY3J0YykKLQkJCWNvbnRpbnVlOwotCi0JCV9kcHVfY3J0Y19zZXR1cF9t aXhlcl9mb3JfZW5jb2RlcihjcnRjLCBlbmMpOworCQljdGxfaW5kZXggPSBtaW4oaSwgY3N0YXRl LT5udW1fY3RscyAtIDEpOworCQltaXhlci0+bG1fY3RsID0gY3N0YXRlLT5od19jdGxzW2N0bF9p bmRleF07CiAJfQotCi0JbXV0ZXhfdW5sb2NrKCZkcHVfY3J0Yy0+Y3J0Y19sb2NrKTsKIH0KIAog c3RhdGljIHZvaWQgX2RwdV9jcnRjX3NldHVwX2xtX2JvdW5kcyhzdHJ1Y3QgZHJtX2NydGMgKmNy dGMsCkBAIC01MzYsMTAgKzQ4Nyw4IEBAIHN0YXRpYyB2b2lkIGRwdV9jcnRjX2F0b21pY19iZWdp bihzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCiAJZGV2ID0gY3J0Yy0+ZGV2OwogCXNtbXVfc3RhdGUg PSAmZHB1X2NydGMtPnNtbXVfc3RhdGU7CiAKLQlpZiAoIWNzdGF0ZS0+bnVtX21peGVycykgewot CQlfZHB1X2NydGNfc2V0dXBfbWl4ZXJzKGNydGMpOwotCQlfZHB1X2NydGNfc2V0dXBfbG1fYm91 bmRzKGNydGMsIGNydGMtPnN0YXRlKTsKLQl9CisJX2RwdV9jcnRjX3NldHVwX21peGVycyhjcnRj KTsKKwlfZHB1X2NydGNfc2V0dXBfbG1fYm91bmRzKGNydGMsIGNydGMtPnN0YXRlKTsKIAogCWlm IChkcHVfY3J0Yy0+ZXZlbnQpIHsKIAkJV0FSTl9PTihkcHVfY3J0Yy0+ZXZlbnQpOwpkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2NydGMuaCBiL2RyaXZlcnMv Z3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9jcnRjLmgKaW5kZXggNzVmZGQzYy4uMTdhYWFkNyAx MDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2NydGMuaAorKysg Yi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfY3J0Yy5oCkBAIC04NCwxMiArODQs MTQgQEAgc3RydWN0IGRwdV9jcnRjX3NtbXVfc3RhdGVfZGF0YSB7CiAgKiBzdHJ1Y3QgZHB1X2Ny dGNfbWl4ZXI6IHN0b3JlcyB0aGUgbWFwIGZvciBlYWNoIHZpcnR1YWwgcGlwZWxpbmUgaW4gdGhl IENSVEMKICAqIEBod19sbToJTE0gSFcgRHJpdmVyIGNvbnRleHQKICAqIEBsbV9jdGw6CUNUTCBQ YXRoIEhXIGRyaXZlciBjb250ZXh0CisgKiBAaHdfcHA6CVBpbmdwb25nIEhXIGRyaXZlciBjb250 ZXh0CiAgKiBAbWl4ZXJfb3BfbW9kZToJbWl4ZXIgYmxlbmRpbmcgb3BlcmF0aW9uIG1vZGUKICAq IEBmbHVzaF9tYXNrOgltaXhlciBmbHVzaCBtYXNrIGZvciBjdGwsIG1peGVyIGFuZCBwaXBlCiAg Ki8KIHN0cnVjdCBkcHVfY3J0Y19taXhlciB7CiAJc3RydWN0IGRwdV9od19taXhlciAqaHdfbG07 CiAJc3RydWN0IGRwdV9od19jdGwgKmxtX2N0bDsKKwlzdHJ1Y3QgZHB1X2h3X3Bpbmdwb25nICpo d19wcDsKIAl1MzIgbWl4ZXJfb3BfbW9kZTsKIAl1MzIgZmx1c2hfbWFzazsKIH07CkBAIC0yMzAs NiArMjMyLDE4IEBAIHN0cnVjdCBkcHVfY3J0Y19zdGF0ZSB7CiAKIAl1MzIgbnVtX2N0bHM7CiAJ c3RydWN0IGRwdV9od19jdGwgKmh3X2N0bHNbQ1JUQ19EVUFMX01JWEVSU107CisKKwkvKioKKwkg KiBhcyBkcm0gZW5jb2RlcnMgZG9lc24ndCBoYXZlIGRlZGljYXRlcyBzdGF0ZSBvYmplY3RzCisJ ICogYW5kIGRybSBjb25uZWN0b3JzIGFyZSBub3Qgb3duZWQgYnkgRFBVLCBtYWludGFpbgorCSAq IEhXIGludGVyZmFjZSBhbmQgb3RoZXIgaW50ZXJmYWNlIHJlbGF0ZWQgYmxvY2tzCisJICogaW4g Y3J0YyBzdGF0ZQorCSAqCisJICogVE9ETzogTm8gc3VwcG9ydCBmb3IgY2xvbmUgbW9kZSB5ZXQg d2hlcmUgYSBjcnRjCisJICogY2FuIGJlIGF0dGFjaGVkIHdpdGggbW9yZSB0aGFuIG9uZSBlbmNv ZGVyL2Nvbm5lY3Rvci4KKwkgKi8KKwl1MzIgbnVtX2ludGZzOworCXN0cnVjdCBkcHVfaHdfaW50 ZiAqaHdfaW50ZnNbQ1JUQ19EVUFMX01JWEVSU107CiB9OwogCiAjZGVmaW5lIHRvX2RwdV9jcnRj X3N0YXRlKHgpIFwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2Rw dV9lbmNvZGVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfZW5jb2Rlci5j CmluZGV4IGQxMmY4OTYuLjE3ZGJiYzMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20v ZGlzcC9kcHUxL2RwdV9lbmNvZGVyLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2Rw dTEvZHB1X2VuY29kZXIuYwpAQCAtMTAwMSw5ICsxMDAxLDggQEAgc3RhdGljIHZvaWQgZHB1X2Vu Y29kZXJfdmlydF9tb2RlX3NldChzdHJ1Y3QgZHJtX2VuY29kZXIgKmRybV9lbmMsCiAJc3RydWN0 IGRwdV9rbXMgKmRwdV9rbXM7CiAJc3RydWN0IGxpc3RfaGVhZCAqY29ubmVjdG9yX2xpc3Q7CiAJ c3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm4gPSBOVUxMLCAqY29ubl9pdGVyOwotCXN0cnVjdCBk cHVfcm1faHdfaXRlciBwcF9pdGVyLCBjdGxfaXRlcjsKKwlzdHJ1Y3QgZHB1X2NydGNfc3RhdGUg KmRwdV9jc3RhdGU7CiAJc3RydWN0IG1zbV9kaXNwbGF5X3RvcG9sb2d5IHRvcG9sb2d5OwotCXN0 cnVjdCBkcHVfaHdfY3RsICpod19jdGxbTUFYX0NIQU5ORUxTX1BFUl9FTkNdID0geyBOVUxMIH07 CiAJaW50IGkgPSAwLCByZXQ7CiAKIAlpZiAoIWRybV9lbmMpIHsKQEAgLTEwNDMsMjcgKzEwNDIs MTQgQEAgc3RhdGljIHZvaWQgZHB1X2VuY29kZXJfdmlydF9tb2RlX3NldChzdHJ1Y3QgZHJtX2Vu Y29kZXIgKmRybV9lbmMsCiAJCXJldHVybjsKIAl9CiAKLQlkcHVfcm1faW5pdF9od19pdGVyKCZw cF9pdGVyLCBkcm1fZW5jLT5iYXNlLmlkLCBEUFVfSFdfQkxLX1BJTkdQT05HKTsKLQlmb3IgKGkg PSAwOyBpIDwgTUFYX0NIQU5ORUxTX1BFUl9FTkM7IGkrKykgewotCQlkcHVfZW5jLT5od19wcFtp XSA9IE5VTEw7Ci0JCWlmICghZHB1X3JtX2dldF9odygmZHB1X2ttcy0+cm0sICZwcF9pdGVyKSkK LQkJCWJyZWFrOwotCQlkcHVfZW5jLT5od19wcFtpXSA9IChzdHJ1Y3QgZHB1X2h3X3Bpbmdwb25n ICopIHBwX2l0ZXIuaHc7Ci0JfQotCi0JZHB1X3JtX2luaXRfaHdfaXRlcigmY3RsX2l0ZXIsIGRy bV9lbmMtPmJhc2UuaWQsIERQVV9IV19CTEtfQ1RMKTsKLQlmb3IgKGkgPSAwOyBpIDwgTUFYX0NI QU5ORUxTX1BFUl9FTkM7IGkrKykgewotCQlpZiAoIWRwdV9ybV9nZXRfaHcoJmRwdV9rbXMtPnJt LCAmY3RsX2l0ZXIpKQotCQkJYnJlYWs7Ci0JCWh3X2N0bFtpXSA9IChzdHJ1Y3QgZHB1X2h3X2N0 bCAqKWN0bF9pdGVyLmh3OwotCX0KKwlkcHVfY3N0YXRlID0gdG9fZHB1X2NydGNfc3RhdGUoZHJt X2VuYy0+Y3J0Yy0+c3RhdGUpOwogCiAJZm9yIChpID0gMDsgaSA8IGRwdV9lbmMtPm51bV9waHlz X2VuY3M7IGkrKykgewogCQlzdHJ1Y3QgZHB1X2VuY29kZXJfcGh5cyAqcGh5cyA9IGRwdV9lbmMt PnBoeXNfZW5jc1tpXTsKIAkJaW50IGN0bF9pbmRleDsKIAogCQlpZiAocGh5cykgewotCQkJaWYg KCFkcHVfZW5jLT5od19wcFtpXSkgeworCQkJaWYgKCFkcHVfY3N0YXRlLT5taXhlcnNbaV0uaHdf cHApIHsKIAkJCQlEUFVfRVJST1JfRU5DKGRwdV9lbmMsICJubyBwcCBibG9jayBhc3NpZ25lZCIK IAkJCQkJICAgICAiYXQgaWR4OiAlZFxuIiwgaSk7CiAJCQkJcmV0dXJuOwpAQCAtMTA3MSwxNCAr MTA1NywxNiBAQCBzdGF0aWMgdm9pZCBkcHVfZW5jb2Rlcl92aXJ0X21vZGVfc2V0KHN0cnVjdCBk cm1fZW5jb2RlciAqZHJtX2VuYywKIAogCQkJY3RsX2luZGV4ID0gcGh5cy0+c3BsaXRfcm9sZSA9 PSBFTkNfUk9MRV9TTEFWRSA/IDEgOiAwOwogCi0JCQlpZiAoIWh3X2N0bFtjdGxfaW5kZXhdKSB7 CisJCQlpZiAoIWRwdV9jc3RhdGUtPmh3X2N0bHNbY3RsX2luZGV4XSkgewogCQkJCURQVV9FUlJP Ul9FTkMoZHB1X2VuYywgIm5vIGN0bCBibG9jayBhc3NpZ25lZCIKIAkJCQkJICAgICAiYXQgaWR4 OiAlZFxuIiwgY3RsX2luZGV4KTsKIAkJCQlyZXR1cm47CiAJCQl9CiAKLQkJCXBoeXMtPmh3X3Bw ID0gZHB1X2VuYy0+aHdfcHBbaV07Ci0JCQlwaHlzLT5od19jdGwgPSBod19jdGxbY3RsX2luZGV4 XTsKKwkJCWRwdV9lbmMtPmh3X3BwW2ldID0gZHB1X2NzdGF0ZS0+bWl4ZXJzW2ldLmh3X3BwOwor CisJCQlwaHlzLT5od19wcCA9IGRwdV9jc3RhdGUtPm1peGVyc1tpXS5od19wcDsKKwkJCXBoeXMt Pmh3X2N0bCA9IGRwdV9jc3RhdGUtPmh3X2N0bHNbY3RsX2luZGV4XTsKIAogCQkJcGh5cy0+Y29u bmVjdG9yID0gY29ubi0+c3RhdGUtPmNvbm5lY3RvcjsKIAkJCWlmIChwaHlzLT5vcHMubW9kZV9z ZXQpCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfZW5jb2Rl cl9waHlzX3ZpZC5jIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2VuY29kZXJf cGh5c192aWQuYwppbmRleCA4NGRlMzg1Li40NTYzZjhkIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dw dS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfZW5jb2Rlcl9waHlzX3ZpZC5jCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9lbmNvZGVyX3BoeXNfdmlkLmMKQEAgLTQ2MSwyOCAr NDYxLDIwIEBAIHN0YXRpYyBpbnQgZHB1X2VuY29kZXJfcGh5c192aWRfY29udHJvbF92Ymxhbmtf aXJxKAogCiBzdGF0aWMgdm9pZCBkcHVfZW5jb2Rlcl9waHlzX3ZpZF9lbmFibGUoc3RydWN0IGRw dV9lbmNvZGVyX3BoeXMgKnBoeXNfZW5jKQogewotCXN0cnVjdCBtc21fZHJtX3ByaXZhdGUgKnBy aXY7CiAJc3RydWN0IGRwdV9lbmNvZGVyX3BoeXNfdmlkICp2aWRfZW5jOwotCXN0cnVjdCBkcHVf cm1faHdfaXRlciBpdGVyOwogCXN0cnVjdCBkcHVfaHdfY3RsICpjdGw7CisJc3RydWN0IGRwdV9j cnRjX3N0YXRlICpkcHVfY3N0YXRlOworCWludCBpOwogCXUzMiBmbHVzaF9tYXNrID0gMDsKIAot CWlmICghcGh5c19lbmMgfHwgIXBoeXNfZW5jLT5wYXJlbnQgfHwgIXBoeXNfZW5jLT5wYXJlbnQt PmRldiB8fAotCQkJIXBoeXNfZW5jLT5wYXJlbnQtPmRldi0+ZGV2X3ByaXZhdGUpIHsKLQkJRFBV X0VSUk9SKCJpbnZhbGlkIGVuY29kZXIvZGV2aWNlXG4iKTsKLQkJcmV0dXJuOwotCX0KLQlwcml2 ID0gcGh5c19lbmMtPnBhcmVudC0+ZGV2LT5kZXZfcHJpdmF0ZTsKKwlkcHVfY3N0YXRlID0gdG9f ZHB1X2NydGNfc3RhdGUocGh5c19lbmMtPnBhcmVudC0+Y3J0Yy0+c3RhdGUpOwogCiAJdmlkX2Vu YyA9IHRvX2RwdV9lbmNvZGVyX3BoeXNfdmlkKHBoeXNfZW5jKTsKIAljdGwgPSBwaHlzX2VuYy0+ aHdfY3RsOwogCi0JZHB1X3JtX2luaXRfaHdfaXRlcigmaXRlciwgcGh5c19lbmMtPnBhcmVudC0+ YmFzZS5pZCwgRFBVX0hXX0JMS19JTlRGKTsKLQl3aGlsZSAoZHB1X3JtX2dldF9odygmcGh5c19l bmMtPmRwdV9rbXMtPnJtLCAmaXRlcikpIHsKLQkJc3RydWN0IGRwdV9od19pbnRmICpod19pbnRm ID0gKHN0cnVjdCBkcHVfaHdfaW50ZiAqKWl0ZXIuaHc7Ci0KLQkJaWYgKGh3X2ludGYtPmlkeCA9 PSBwaHlzX2VuYy0+aW50Zl9pZHgpIHsKLQkJCXZpZF9lbmMtPmh3X2ludGYgPSBod19pbnRmOwor CWZvciAoaSA9IDA7IGkgPCBkcHVfY3N0YXRlLT5udW1faW50ZnM7IGkrKykgeworCQlpZiAoZHB1 X2NzdGF0ZS0+aHdfaW50ZnNbaV0tPmlkeCA9PSBwaHlzX2VuYy0+aW50Zl9pZHgpIHsKKwkJCXZp ZF9lbmMtPmh3X2ludGYgPSBkcHVfY3N0YXRlLT5od19pbnRmc1tpXTsKIAkJCWJyZWFrOwogCQl9 CiAJfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X3JtLmMg Yi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfcm0uYwppbmRleCAzNzdkZWY3Li41 NzAzYjExIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfcm0u YworKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfcm0uYwpAQCAtMzg4LDYg KzM4OCw3IEBAIHN0YXRpYyBib29sIF9kcHVfcm1fY2hlY2tfbG1fYW5kX2dldF9jb25uZWN0ZWRf YmxrcygKIH0KIAogc3RhdGljIGludCBfZHB1X3JtX3Jlc2VydmVfbG1zKHN0cnVjdCBkcHVfcm0g KnJtLCB1aW50MzJfdCBlbmNfaWQsCisJCQkgICAgICAgc3RydWN0IGRwdV9jcnRjX3N0YXRlICpk cHVfY3N0YXRlLAogCQkJICAgICAgIHN0cnVjdCBkcHVfcm1fcmVxdWlyZW1lbnRzICpyZXFzKQog CiB7CkBAIC00NDksMTYgKzQ1MCwyMiBAQCBzdGF0aWMgaW50IF9kcHVfcm1fcmVzZXJ2ZV9sbXMo c3RydWN0IGRwdV9ybSAqcm0sIHVpbnQzMl90IGVuY19pZCwKIAkJbG1baV0tPmVuY19pZCA9IGVu Y19pZDsKIAkJcHBbaV0tPmVuY19pZCA9IGVuY19pZDsKIAorCQlkcHVfY3N0YXRlLT5taXhlcnNb aV0uaHdfbG0gPSB0b19kcHVfaHdfbWl4ZXIobG1baV0tPmh3KTsKKwkJZHB1X2NzdGF0ZS0+bWl4 ZXJzW2ldLmh3X3BwID0gdG9fZHB1X2h3X3Bpbmdwb25nKHBwW2ldLT5odyk7CisKIAkJdHJhY2Vf ZHB1X3JtX3Jlc2VydmVfbG1zKGxtW2ldLT5pZCwgRFBVX0hXX0JMS19MTSwgZW5jX2lkLAogCQkJ CQkgcHBbaV0tPmlkKTsKIAl9CiAKKwlkcHVfY3N0YXRlLT5udW1fbWl4ZXJzID0gbG1fY291bnQ7 CisKIAlyZXR1cm4gcmM7CiB9CiAKIHN0YXRpYyBpbnQgX2RwdV9ybV9yZXNlcnZlX2N0bHMoCiAJ CXN0cnVjdCBkcHVfcm0gKnJtLAogCQl1aW50MzJfdCBlbmNfaWQsCisJCXN0cnVjdCBkcHVfY3J0 Y19zdGF0ZSAqZHB1X2NzdGF0ZSwKIAkJY29uc3Qgc3RydWN0IG1zbV9kaXNwbGF5X3RvcG9sb2d5 ICp0b3ApCiB7CiAJc3RydWN0IGRwdV9ybV9od19ibGsgKmN0bHNbTUFYX0JMT0NLU107CkBAIC01 MDEsMjEgKzUwOCwyNCBAQCBzdGF0aWMgaW50IF9kcHVfcm1fcmVzZXJ2ZV9jdGxzKAogCiAJZm9y IChpID0gMDsgaSA8IEFSUkFZX1NJWkUoY3RscykgJiYgaSA8IG51bV9jdGxzOyBpKyspIHsKIAkJ Y3Rsc1tpXS0+ZW5jX2lkID0gZW5jX2lkOworCQlkcHVfY3N0YXRlLT5od19jdGxzW2ldID0gdG9f ZHB1X2h3X2N0bChjdGxzW2ldLT5odyk7CisKIAkJdHJhY2VfZHB1X3JtX3Jlc2VydmVfY3Rscyhj dGxzW2ldLT5pZCwgRFBVX0hXX0JMS19DVEwsCiAJCQkJCSAgZW5jX2lkKTsKIAl9CiAKKwlkcHVf Y3N0YXRlLT5udW1fY3RscyA9IG51bV9jdGxzOworCiAJcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBp bnQgX2RwdV9ybV9yZXNlcnZlX2ludGYoCitzdGF0aWMgc3RydWN0IGRwdV9ybV9od19ibGsgKl9k cHVfcm1fcmVzZXJ2ZV9pbnRmKAogCQlzdHJ1Y3QgZHB1X3JtICpybSwKIAkJdWludDMyX3QgZW5j X2lkLAogCQl1aW50MzJfdCBpZCwKIAkJZW51bSBkcHVfaHdfYmxrX3R5cGUgdHlwZSkKIHsKIAlz dHJ1Y3QgZHB1X3JtX2h3X2l0ZXIgaXRlcjsKLQlpbnQgcmV0ID0gMDsKIAogCS8qIEZpbmQgdGhl IGJsb2NrIGVudHJ5IGluIHRoZSBybSwgYW5kIG5vdGUgdGhlIHJlc2VydmF0aW9uICovCiAJZHB1 X3JtX2luaXRfaHdfaXRlcigmaXRlciwgMCwgdHlwZSk7CkBAIC01MjUsNyArNTM1LDcgQEAgc3Rh dGljIGludCBfZHB1X3JtX3Jlc2VydmVfaW50ZigKIAogCQlpZiAoUkVTRVJWRURfQllfT1RIRVIo aXRlci5ibGssIGVuY19pZCkpIHsKIAkJCURQVV9FUlJPUigidHlwZSAlZCBpZCAlZCBhbHJlYWR5 IHJlc2VydmVkXG4iLCB0eXBlLCBpZCk7Ci0JCQlyZXR1cm4gLUVOQVZBSUw7CisJCQlyZXR1cm4g TlVMTDsKIAkJfQogCiAJCWl0ZXIuYmxrLT5lbmNfaWQgPSBlbmNfaWQ7CkBAIC01MzUsNTYgKzU0 NSw2MyBAQCBzdGF0aWMgaW50IF9kcHVfcm1fcmVzZXJ2ZV9pbnRmKAogCX0KIAogCS8qIFNob3Vs ZG4ndCBoYXBwZW4gc2luY2UgaW50ZnMgYXJlIGZpeGVkIGF0IHByb2JlICovCi0JaWYgKCFpdGVy Lmh3KSB7CisJaWYgKCFpdGVyLmJsaykgewogCQlEUFVfRVJST1IoImNvdWxkbid0IGZpbmQgdHlw ZSAlZCBpZCAlZFxuIiwgdHlwZSwgaWQpOwotCQlyZXR1cm4gLUVJTlZBTDsKKwkJcmV0dXJuIE5V TEw7CiAJfQogCi0JcmV0dXJuIHJldDsKKwlyZXR1cm4gaXRlci5ibGs7CiB9CiAKIHN0YXRpYyBp bnQgX2RwdV9ybV9yZXNlcnZlX2ludGZfcmVsYXRlZF9odygKIAkJc3RydWN0IGRwdV9ybSAqcm0s CiAJCXVpbnQzMl90IGVuY19pZCwKKwkJc3RydWN0IGRwdV9jcnRjX3N0YXRlICpkcHVfY3N0YXRl LAogCQlzdHJ1Y3QgZHB1X2VuY29kZXJfaHdfcmVzb3VyY2VzICpod19yZXMpCiB7Ci0JaW50IGks IHJldCA9IDA7Ci0JdTMyIGlkOworCXN0cnVjdCBkcHVfcm1faHdfYmxrICpibGs7CisJaW50IGks IG51bV9pbnRmcyA9IDA7CiAKIAlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShod19yZXMtPmlu dGZzKTsgaSsrKSB7CiAJCWlmIChod19yZXMtPmludGZzW2ldID09IElOVEZfTU9ERV9OT05FKQog CQkJY29udGludWU7Ci0JCWlkID0gaSArIElOVEZfMDsKLQkJcmV0ID0gX2RwdV9ybV9yZXNlcnZl X2ludGYocm0sIGVuY19pZCwgaWQsCisKKwkJYmxrID0gX2RwdV9ybV9yZXNlcnZlX2ludGYocm0s IGVuY19pZCwgaSArIElOVEZfMCwKIAkJCQlEUFVfSFdfQkxLX0lOVEYpOwotCQlpZiAocmV0KQot CQkJcmV0dXJuIHJldDsKKwkJaWYgKCFibGspCisJCQlyZXR1cm4gLUVOQVZBSUw7CisKKwkJZHB1 X2NzdGF0ZS0+aHdfaW50ZnNbbnVtX2ludGZzKytdID0gdG9fZHB1X2h3X2ludGYoYmxrLT5odyk7 CiAJfQogCi0JcmV0dXJuIHJldDsKKwlkcHVfY3N0YXRlLT5udW1faW50ZnMgPSBudW1faW50ZnM7 CisKKwlyZXR1cm4gMDsKIH0KIAogc3RhdGljIGludCBfZHB1X3JtX21ha2VfcmVzZXJ2YXRpb24o CiAJCXN0cnVjdCBkcHVfcm0gKnJtLAogCQlzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuYywKLQkJc3Ry dWN0IGRybV9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAorCQlzdHJ1Y3QgZHB1X2NydGNfc3RhdGUg KmRwdV9jc3RhdGUsCiAJCXN0cnVjdCBkcHVfcm1fcmVxdWlyZW1lbnRzICpyZXFzKQogewogCWlu dCByZXQ7CiAKLQlyZXQgPSBfZHB1X3JtX3Jlc2VydmVfbG1zKHJtLCBlbmMtPmJhc2UuaWQsIHJl cXMpOworCXJldCA9IF9kcHVfcm1fcmVzZXJ2ZV9sbXMocm0sIGVuYy0+YmFzZS5pZCwgZHB1X2Nz dGF0ZSwgcmVxcyk7CiAJaWYgKHJldCkgewogCQlEUFVfRVJST1IoInVuYWJsZSB0byBmaW5kIGFw cHJvcHJpYXRlIG1peGVyc1xuIik7CiAJCXJldHVybiByZXQ7CiAJfQogCi0JcmV0ID0gX2RwdV9y bV9yZXNlcnZlX2N0bHMocm0sIGVuYy0+YmFzZS5pZCwgJnJlcXMtPnRvcG9sb2d5KTsKKwlyZXQg PSBfZHB1X3JtX3Jlc2VydmVfY3RscyhybSwgZW5jLT5iYXNlLmlkLCBkcHVfY3N0YXRlLAorCQkJ CSAgICZyZXFzLT50b3BvbG9neSk7CiAJaWYgKHJldCkgewogCQlEUFVfRVJST1IoInVuYWJsZSB0 byBmaW5kIGFwcHJvcHJpYXRlIENUTFxuIik7CiAJCXJldHVybiByZXQ7CiAJfQogCi0JcmV0ID0g X2RwdV9ybV9yZXNlcnZlX2ludGZfcmVsYXRlZF9odyhybSwgZW5jLT5iYXNlLmlkLCAmcmVxcy0+ aHdfcmVzKTsKKwlyZXQgPSBfZHB1X3JtX3Jlc2VydmVfaW50Zl9yZWxhdGVkX2h3KHJtLCBlbmMt PmJhc2UuaWQsIGRwdV9jc3RhdGUsCisJCQkJCSAgICAgICZyZXFzLT5od19yZXMpOwogCWlmIChy ZXQpCiAJCXJldHVybiByZXQ7CiAKQEAgLTU5NCw3ICs2MTEsNiBAQCBzdGF0aWMgaW50IF9kcHVf cm1fbWFrZV9yZXNlcnZhdGlvbigKIHN0YXRpYyBpbnQgX2RwdV9ybV9wb3B1bGF0ZV9yZXF1aXJl bWVudHMoCiAJCXN0cnVjdCBkcHVfcm0gKnJtLAogCQlzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuYywK LQkJc3RydWN0IGRybV9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAogCQlzdHJ1Y3QgZHB1X3JtX3Jl cXVpcmVtZW50cyAqcmVxcywKIAkJc3RydWN0IG1zbV9kaXNwbGF5X3RvcG9sb2d5IHJlcV90b3Bv bG9neSkKIHsKQEAgLTY0Miw2ICs2NTgsNyBAQCBpbnQgZHB1X3JtX3Jlc2VydmUoCiAJCWJvb2wg dGVzdF9vbmx5KQogewogCXN0cnVjdCBkcHVfcm1fcmVxdWlyZW1lbnRzIHJlcXM7CisJc3RydWN0 IGRwdV9jcnRjX3N0YXRlICpkcHVfY3N0YXRlID0gdG9fZHB1X2NydGNfc3RhdGUoY3J0Y19zdGF0 ZSk7CiAJaW50IHJldDsKIAogCS8qIENoZWNrIGlmIHRoaXMgaXMganVzdCBhIHBhZ2UtZmxpcCAq LwpAQCAtNjUzLDE0ICs2NzAsMTMgQEAgaW50IGRwdV9ybV9yZXNlcnZlKAogCiAJbXV0ZXhfbG9j aygmcm0tPnJtX2xvY2spOwogCi0JcmV0ID0gX2RwdV9ybV9wb3B1bGF0ZV9yZXF1aXJlbWVudHMo cm0sIGVuYywgY3J0Y19zdGF0ZSwgJnJlcXMsCi0JCQkJCSAgICB0b3BvbG9neSk7CisJcmV0ID0g X2RwdV9ybV9wb3B1bGF0ZV9yZXF1aXJlbWVudHMocm0sIGVuYywgJnJlcXMsIHRvcG9sb2d5KTsK IAlpZiAocmV0KSB7CiAJCURQVV9FUlJPUigiZmFpbGVkIHRvIHBvcHVsYXRlIGh3IHJlcXVpcmVt ZW50c1xuIik7CiAJCWdvdG8gZW5kOwogCX0KIAotCXJldCA9IF9kcHVfcm1fbWFrZV9yZXNlcnZh dGlvbihybSwgZW5jLCBjcnRjX3N0YXRlLCAmcmVxcyk7CisJcmV0ID0gX2RwdV9ybV9tYWtlX3Jl c2VydmF0aW9uKHJtLCBlbmMsIGRwdV9jc3RhdGUsICZyZXFzKTsKIAlpZiAocmV0KSB7CiAJCURQ VV9FUlJPUigiZmFpbGVkIHRvIHJlc2VydmUgaHcgcmVzb3VyY2VzOiAlZFxuIiwgcmV0KTsKIAkJ X2RwdV9ybV9yZWxlYXNlX3Jlc2VydmF0aW9uKHJtLCBlbmMtPmJhc2UuaWQpOwotLSAKVGhlIFF1 YWxjb21tIElubm92YXRpb24gQ2VudGVyLCBJbmMuIGlzIGEgbWVtYmVyIG9mIHRoZSBDb2RlIEF1 cm9yYSBGb3J1bSwKYSBMaW51eCBGb3VuZGF0aW9uIENvbGxhYm9yYXRpdmUgUHJvamVjdAoKX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KRnJlZWRyZW5vIG1h aWxpbmcgbGlzdApGcmVlZHJlbm9AbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMu ZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZnJlZWRyZW5vCg==