From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jeykumar Sankaran Subject: [PATCH v2 2/4] drm/msm/dpu: track HW resources using private object state Date: Wed, 13 Feb 2019 17:52:20 -0800 Message-ID: <1550109142-28303-3-git-send-email-jsanka@codeaurora.org> References: <1550109142-28303-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: <1550109142-28303-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 RFBVIG1haW50YWluZWQgcmVzZXJ2YXRpb24gbGlzdHMgdG8gY2FjaGUgYXNzaWduZWQKSFcgYmxv Y2tzIGZvciB0aGUgZGlzcGxheSBhbmQgYSByZXRyaWV2YWwgbWVjaGFuaXNtIGZvcgp0aGUgaW5k aXZpZHVhbCBEUk0gY29tcG9uZW50cyB0byBxdWVyeSB0aGVpciByZXNwZWN0aXZlCkhXIGJsb2Nr cy4KClRoaXMgcGF0Y2ggdXNlcyB0aGUgc3ViLWNsYXNzZWQgcHJpdmF0ZSBvYmplY3Qgc3RhdGUg dG8gc3RvcmUKYW5kIHRyYWNrIEhXIGJsb2NrcyBhc3NpZ25lZCBmb3IgZGlmZmVyZW50IGNvbXBv bmVudHMKb2YgdGhlIGRpc3BsYXkgcGlwZWxpbmUuIEl0IGhlbHBzIHRoZSBkcml2ZXI6Ci0gdG8g Z2V0IHJpZCBvZiB1bndhbnRlZCBzdG9yZSBhbmQgcmV0cmlldmFsIFJNIEFQSSdzCi0gdG8gcHJl c2VydmUgSFcgcmVzb3VyY2VzIGFzc2lnbmVkIGluIGF0b21pY19jaGVjawogIHRocm91Z2ggYXRv bWljIHN3YXAvZHVwbGljYXRlLgoKUmVzb3VyY2VzIGFyZSByZXNlcnZlZCBvbmx5IHdoZW4gZHJt X2F0b21pY19jcnRjX25lZWRzX21vZGVzZXQKaXMgc2V0IHRvIFRSVUUgYW5kIGFyZSByZWxlYXNl ZCBpbiBhdG9taWMgZGlzYWJsZSBwYXRoLgoKV2l0aCBURVNUX09OTFkgYXRvbWljIGNvbW1pdCBw YXRoLCByZXNlcnZlZCByZXNvdXJjZXMKYXJlIHJlbGVhc2VkIGJhY2sgdG8gUk0gcG9vbCBpbiBw cml2YXRlX29ial9kZXN0cm95X3N0YXRlCmNhbGwuCgpjaGFuZ2VzIGluIHYyIChjb21tZW50cyBm cm9tIFNlYW4gUGF1bCk6CgktIFRyYWNrIHJlc291cmNlcyBpbiBwcml2YXRlIG9iamVjdCBzdGF0 ZSBpbnN0ZWFkCgkgIG9mIGNydGMgc3RhdGUuCgktIEF2b2lkIGR1cGxpY2F0ZSB0cmFja2luZyBv ZiBod19jdGxzIGluIGNydGMKCS0gTm8gZXhwbGljaXQgY291bnQgZm9yIGh3X2N0bCBhcyB0aGV5 IG1hdGNoCgkgIHdpdGggaHdfaW50ZiBjb3VudAoKU2lnbmVkLW9mZi1ieTogSmV5a3VtYXIgU2Fu a2FyYW4gPGpzYW5rYUBjb2RlYXVyb3JhLm9yZz4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vbXNtL2Rp c3AvZHB1MS9kcHVfY3J0Yy5oICAgIHwgICA3ICstCiBkcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3Av ZHB1MS9kcHVfZW5jb2Rlci5jIHwgMTU3ICsrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0KIGRy aXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9rbXMuYyAgICAgfCAgIDkgKysKIGRyaXZl cnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9rbXMuaCAgICAgfCAgMTcgKysrCiBkcml2ZXJz L2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfcm0uYyAgICAgIHwgMTMxICsrKysrKysrKysrKysr Ky0tLS0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfcm0uaCAgICAgIHwg ICA4ICstCiA2IGZpbGVzIGNoYW5nZWQsIDE4NSBpbnNlcnRpb25zKCspLCAxNDQgZGVsZXRpb25z KC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2NydGMu aCBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9jcnRjLmgKaW5kZXggYmUwNzU1 NC4uY2VjMDY3NCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1 X2NydGMuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfY3J0Yy5oCkBA IC0yMDIsOCArMjAyLDYgQEAgc3RydWN0IGRwdV9jcnRjIHsKICAqIEBuZXdfcGVyZjogbmV3IHBl cmZvcm1hbmNlIHN0YXRlIGJlaW5nIHJlcXVlc3RlZAogICogQG51bV9taXhlcnMgICAgOiBOdW1i ZXIgb2YgbWl4ZXJzIGluIHVzZQogICogQG1peGVycyAgICAgICAgOiBMaXN0IG9mIGFjdGl2ZSBt aXhlcnMKLSAqIEBudW1fY3RscyAgICAgIDogTnVtYmVyIG9mIGN0bCBwYXRocyBpbiB1c2UKLSAq IEBod19jdGxzICAgICAgIDogTGlzdCBvZiBhY3RpdmUgY3RsIHBhdGhzCiAgKi8KIHN0cnVjdCBk cHVfY3J0Y19zdGF0ZSB7CiAJc3RydWN0IGRybV9jcnRjX3N0YXRlIGJhc2U7CkBAIC0yMTcsMTEg KzIxNSw4IEBAIHN0cnVjdCBkcHVfY3J0Y19zdGF0ZSB7CiAJc3RydWN0IGRwdV9jb3JlX3BlcmZf cGFyYW1zIG5ld19wZXJmOwogCiAJLyogSFcgUmVzb3VyY2VzIHJlc2VydmVkIGZvciB0aGUgY3J0 YyAqLwotCXUzMiBudW1fbWl4ZXJzOworCWludCBudW1fbWl4ZXJzOwogCXN0cnVjdCBkcHVfY3J0 Y19taXhlciBtaXhlcnNbQ1JUQ19EVUFMX01JWEVSU107Ci0KLQl1MzIgbnVtX2N0bHM7Ci0Jc3Ry dWN0IGRwdV9od19jdGwgKmh3X2N0bHNbQ1JUQ19EVUFMX01JWEVSU107CiB9OwogCiAjZGVmaW5l IHRvX2RwdV9jcnRjX3N0YXRlKHgpIFwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20v ZGlzcC9kcHUxL2RwdV9lbmNvZGVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9k cHVfZW5jb2Rlci5jCmluZGV4IDk4ZWE0NzguLmJkNjQ2YzUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv Z3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9lbmNvZGVyLmMKKysrIGIvZHJpdmVycy9ncHUvZHJt L21zbS9kaXNwL2RwdTEvZHB1X2VuY29kZXIuYwpAQCAtNTU5LDcgKzU1OSw2IEBAIHN0YXRpYyBp bnQgZHB1X2VuY29kZXJfdmlydF9hdG9taWNfY2hlY2soCiAJc3RydWN0IGRwdV9rbXMgKmRwdV9r bXM7CiAJY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm1vZGU7CiAJc3RydWN0IGRybV9k aXNwbGF5X21vZGUgKmFkal9tb2RlOwotCXN0cnVjdCBtc21fZGlzcGxheV90b3BvbG9neSB0b3Bv bG9neTsKIAlpbnQgaSA9IDA7CiAJaW50IHJldCA9IDA7CiAKQEAgLTYwNSwyMCArNjA0LDI0IEBA IHN0YXRpYyBpbnQgZHB1X2VuY29kZXJfdmlydF9hdG9taWNfY2hlY2soCiAJCX0KIAl9CiAKLQl0 b3BvbG9neSA9IGRwdV9lbmNvZGVyX2dldF90b3BvbG9neShkcHVfZW5jLCBkcHVfa21zLCBhZGpf bW9kZSk7CisJLyoKKwkgKiBSZXNlcnZlIGR5bmFtaWMgcmVzb3VyY2VzIG5vdy4gSW5kaWNhdGlu ZyBBdG9taWNUZXN0IHBoYXNlCisJICoKKwkgKiBBdm9pZCByZXNlcnZpbmcgcmVzb3VyY2VzIHdo ZW4gbW9kZSBzZXQgaXMgcGVuZGluZy4gVG9wb2xvZ3kKKwkgKiBpbmZvIG1heSBub3QgYmUgYXZh aWxhYmxlIHRvIGNvbXBsZXRlIHJlc2VydmF0aW9uLgorCSAqLworCWlmICghcmV0ICYmIGRybV9h dG9taWNfY3J0Y19uZWVkc19tb2Rlc2V0KGNydGNfc3RhdGUpCisJCQkmJiBkcHVfZW5jLT5tb2Rl X3NldF9jb21wbGV0ZSkgeworCQlzdHJ1Y3QgbXNtX2Rpc3BsYXlfdG9wb2xvZ3kgdG9wb2xvZ3k7 CisJCXN0cnVjdCBkcHVfcHJpdmF0ZV9zdGF0ZSAqZHB1X3ByaXZfc3RhdGU7CiAKLQkvKiBSZXNl cnZlIGR5bmFtaWMgcmVzb3VyY2VzIG5vdy4gSW5kaWNhdGluZyBBdG9taWNUZXN0IHBoYXNlICov Ci0JaWYgKCFyZXQpIHsKLQkJLyoKLQkJICogQXZvaWQgcmVzZXJ2aW5nIHJlc291cmNlcyB3aGVu IG1vZGUgc2V0IGlzIHBlbmRpbmcuIFRvcG9sb2d5Ci0JCSAqIGluZm8gbWF5IG5vdCBiZSBhdmFp bGFibGUgdG8gY29tcGxldGUgcmVzZXJ2YXRpb24uCi0JCSAqLwotCQlpZiAoZHJtX2F0b21pY19j cnRjX25lZWRzX21vZGVzZXQoY3J0Y19zdGF0ZSkKLQkJCQkmJiBkcHVfZW5jLT5tb2RlX3NldF9j b21wbGV0ZSkgewotCQkJcmV0ID0gZHB1X3JtX3Jlc2VydmUoJmRwdV9rbXMtPnJtLCBkcm1fZW5j LCBjcnRjX3N0YXRlLAotCQkJCQkgICAgIHRvcG9sb2d5LCB0cnVlKTsKLQkJCWRwdV9lbmMtPm1v ZGVfc2V0X2NvbXBsZXRlID0gZmFsc2U7Ci0JCX0KKwkJdG9wb2xvZ3kgPSBkcHVfZW5jb2Rlcl9n ZXRfdG9wb2xvZ3koZHB1X2VuYywgZHB1X2ttcywgYWRqX21vZGUpOworCQlkcHVfcHJpdl9zdGF0 ZSA9IGRwdV9nZXRfcHJpdmF0ZV9zdGF0ZShjcnRjX3N0YXRlLT5zdGF0ZSwKKwkJCQkJICAgICAg IHRvX2RwdV9jcnRjKGNydGNfc3RhdGUtPmNydGMpKTsKKworCQlyZXQgPSBkcHVfcm1fcmVzZXJ2 ZSgmZHB1X2ttcy0+cm0sIGRybV9lbmMsCisJCQkJICAgICAmZHB1X3ByaXZfc3RhdGUtPmJhc2Us IHRvcG9sb2d5LCB0cnVlKTsKKwkJZHB1X2VuYy0+bW9kZV9zZXRfY29tcGxldGUgPSBmYWxzZTsK IAl9CiAKIAlpZiAoIXJldCkKQEAgLTk2MiwxMiArOTY1LDEwIEBAIHN0YXRpYyB2b2lkIGRwdV9l bmNvZGVyX3ZpcnRfbW9kZV9zZXQoc3RydWN0IGRybV9lbmNvZGVyICpkcm1fZW5jLAogCXN0cnVj dCBsaXN0X2hlYWQgKmNvbm5lY3Rvcl9saXN0OwogCXN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25u ID0gTlVMTCwgKmNvbm5faXRlcjsKIAlzdHJ1Y3QgZHJtX2NydGMgKmRybV9jcnRjOwotCXN0cnVj dCBkcHVfY3J0Y19zdGF0ZSAqY3N0YXRlOwotCXN0cnVjdCBkcHVfcm1faHdfaXRlciBod19pdGVy OworCXN0cnVjdCBkcHVfY3J0Y19zdGF0ZSAqZHB1X2NzdGF0ZTsKIAlzdHJ1Y3QgbXNtX2Rpc3Bs YXlfdG9wb2xvZ3kgdG9wb2xvZ3k7Ci0Jc3RydWN0IGRwdV9od19jdGwgKmh3X2N0bFtNQVhfQ0hB Tk5FTFNfUEVSX0VOQ10gPSB7IE5VTEwgfTsKLQlzdHJ1Y3QgZHB1X2h3X21peGVyICpod19sbVtN QVhfQ0hBTk5FTFNfUEVSX0VOQ10gPSB7IE5VTEwgfTsKLQlpbnQgbnVtX2xtID0gMCwgbnVtX2N0 bCA9IDA7CisJc3RydWN0IGRwdV9jcnRjICpkcHVfY3J0YzsKKwlzdHJ1Y3QgZHB1X3ByaXZhdGVf c3RhdGUgKmRwdV9wcml2YXRlX3N0YXRlOwogCWludCBpLCBqLCByZXQ7CiAKIAlpZiAoIWRybV9l bmMpIHsKQEAgLTEwMDEsMTAwICsxMDAyLDU5IEBAIHN0YXRpYyB2b2lkIGRwdV9lbmNvZGVyX3Zp cnRfbW9kZV9zZXQoc3RydWN0IGRybV9lbmNvZGVyICpkcm1fZW5jLAogCQkJYnJlYWs7CiAKIAl0 b3BvbG9neSA9IGRwdV9lbmNvZGVyX2dldF90b3BvbG9neShkcHVfZW5jLCBkcHVfa21zLCBhZGpf bW9kZSk7CisJZHB1X2NydGMgPSB0b19kcHVfY3J0Yyhkcm1fY3J0Yyk7CiAKIAkvKiBSZXNlcnZl IGR5bmFtaWMgcmVzb3VyY2VzIG5vdy4gSW5kaWNhdGluZyBub24tQXRvbWljVGVzdCBwaGFzZSAq LwotCXJldCA9IGRwdV9ybV9yZXNlcnZlKCZkcHVfa21zLT5ybSwgZHJtX2VuYywgZHJtX2NydGMt PnN0YXRlLAorCXJldCA9IGRwdV9ybV9yZXNlcnZlKCZkcHVfa21zLT5ybSwgZHJtX2VuYywgZHB1 X2NydGMtPnByaXZfb2JqLnN0YXRlLAogCQkJICAgICB0b3BvbG9neSwgZmFsc2UpOwogCWlmIChy ZXQpIHsKIAkJRFBVX0VSUk9SX0VOQyhkcHVfZW5jLAotCQkJCSJmYWlsZWQgdG8gcmVzZXJ2ZSBo dyByZXNvdXJjZXMsICVkXG4iLCByZXQpOworCQkJICAgICAiZmFpbGVkIHRvIHJlc2VydmUgaHcg cmVzb3VyY2VzLCAlZFxuIiwgcmV0KTsKIAkJcmV0dXJuOwogCX0KIAotCWRwdV9ybV9pbml0X2h3 X2l0ZXIoJmh3X2l0ZXIsIGRybV9lbmMtPmJhc2UuaWQsIERQVV9IV19CTEtfUElOR1BPTkcpOwot CWZvciAoaSA9IDA7IGkgPCBNQVhfQ0hBTk5FTFNfUEVSX0VOQzsgaSsrKSB7Ci0JCWRwdV9lbmMt Pmh3X3BwW2ldID0gTlVMTDsKLQkJaWYgKCFkcHVfcm1fZ2V0X2h3KCZkcHVfa21zLT5ybSwgJmh3 X2l0ZXIpKQotCQkJYnJlYWs7Ci0JCWRwdV9lbmMtPmh3X3BwW2ldID0gKHN0cnVjdCBkcHVfaHdf cGluZ3BvbmcgKikgaHdfaXRlci5odzsKLQl9Ci0KLQlkcHVfcm1faW5pdF9od19pdGVyKCZod19p dGVyLCBkcm1fZW5jLT5iYXNlLmlkLCBEUFVfSFdfQkxLX0NUTCk7Ci0JZm9yIChpID0gMDsgaSA8 IE1BWF9DSEFOTkVMU19QRVJfRU5DOyBpKyspIHsKLQkJaWYgKCFkcHVfcm1fZ2V0X2h3KCZkcHVf a21zLT5ybSwgJmh3X2l0ZXIpKQotCQkJYnJlYWs7Ci0JCWh3X2N0bFtpXSA9IChzdHJ1Y3QgZHB1 X2h3X2N0bCAqKWh3X2l0ZXIuaHc7Ci0JCW51bV9jdGwrKzsKLQl9Ci0KLQlkcHVfcm1faW5pdF9o d19pdGVyKCZod19pdGVyLCBkcm1fZW5jLT5iYXNlLmlkLCBEUFVfSFdfQkxLX0xNKTsKLQlmb3Ig KGkgPSAwOyBpIDwgTUFYX0NIQU5ORUxTX1BFUl9FTkM7IGkrKykgewotCQlpZiAoIWRwdV9ybV9n ZXRfaHcoJmRwdV9rbXMtPnJtLCAmaHdfaXRlcikpCi0JCQlicmVhazsKLQkJaHdfbG1baV0gPSAo c3RydWN0IGRwdV9od19taXhlciAqKWh3X2l0ZXIuaHc7Ci0JCW51bV9sbSsrOwotCX0KKwlkcHVf Y3N0YXRlID0gdG9fZHB1X2NydGNfc3RhdGUoZHJtX2NydGMtPnN0YXRlKTsKKwlkcHVfcHJpdmF0 ZV9zdGF0ZSA9IGNvbnRhaW5lcl9vZihkcHVfY3J0Yy0+cHJpdl9vYmouc3RhdGUsCisJCQkJCSBz dHJ1Y3QgZHB1X3ByaXZhdGVfc3RhdGUsIGJhc2UpOwogCi0JY3N0YXRlID0gdG9fZHB1X2NydGNf c3RhdGUoZHJtX2NydGMtPnN0YXRlKTsKKwlmb3IgKGkgPSAwOyBpIDwgZHB1X3ByaXZhdGVfc3Rh dGUtPm51bV9taXhlcnM7IGkrKykgeworCQlpbnQgY3RsX2lkeDsKIAotCWZvciAoaSA9IDA7IGkg PCBudW1fbG07IGkrKykgewotCQlpbnQgY3RsX2lkeCA9IChpIDwgbnVtX2N0bCkgPyBpIDogKG51 bV9jdGwtMSk7CisJCWRwdV9jc3RhdGUtPm1peGVyc1tpXS5od19sbSA9IGRwdV9wcml2YXRlX3N0 YXRlLT5od19sbXNbaV07CiAKLQkJY3N0YXRlLT5taXhlcnNbaV0uaHdfbG0gPSBod19sbVtpXTsK LQkJY3N0YXRlLT5taXhlcnNbaV0ubG1fY3RsID0gaHdfY3RsW2N0bF9pZHhdOworCQkvKgorCQkg KiBod19jdGwgY291bnQgbWF5IGJlIDw9IGh3X2xtIGNvdW50LCBpZiBsZXNzLCBtdWx0aXBsZSBM TXMgYXJlCisJCSAqIGNvbnRyb2xsZWQgYnkgMSBDVEwKKwkJICovCisJCWN0bF9pZHggPSBtaW4o aSwgZHB1X3ByaXZhdGVfc3RhdGUtPm51bV9pbnRmcyAtIDEpOworCQlkcHVfY3N0YXRlLT5taXhl cnNbaV0ubG1fY3RsID0KKwkJCWRwdV9wcml2YXRlX3N0YXRlLT5od19jdGxzW2N0bF9pZHhdOwog CX0KLQotCWNzdGF0ZS0+bnVtX21peGVycyA9IG51bV9sbTsKKwlkcHVfY3N0YXRlLT5udW1fbWl4 ZXJzID0gZHB1X3ByaXZhdGVfc3RhdGUtPm51bV9taXhlcnM7CiAKIAlmb3IgKGkgPSAwOyBpIDwg ZHB1X2VuYy0+bnVtX3BoeXNfZW5jczsgaSsrKSB7CiAJCXN0cnVjdCBkcHVfZW5jb2Rlcl9waHlz ICpwaHlzID0gZHB1X2VuYy0+cGh5c19lbmNzW2ldOwogCi0JCWlmIChwaHlzKSB7Ci0JCQlpZiAo IWRwdV9lbmMtPmh3X3BwW2ldKSB7Ci0JCQkJRFBVX0VSUk9SX0VOQyhkcHVfZW5jLCAibm8gcHAg YmxvY2sgYXNzaWduZWQiCi0JCQkJCSAgICAgImF0IGlkeDogJWRcbiIsIGkpOwotCQkJCWdvdG8g ZXJyb3I7Ci0JCQl9Ci0KLQkJCWlmICghaHdfY3RsW2ldKSB7Ci0JCQkJRFBVX0VSUk9SX0VOQyhk cHVfZW5jLCAibm8gY3RsIGJsb2NrIGFzc2lnbmVkIgotCQkJCQkgICAgICJhdCBpZHg6ICVkXG4i LCBpKTsKLQkJCQlnb3RvIGVycm9yOwotCQkJfQotCi0JCQlwaHlzLT5od19wcCA9IGRwdV9lbmMt Pmh3X3BwW2ldOwotCQkJcGh5cy0+aHdfY3RsID0gaHdfY3RsW2ldOwotCi0JCQlkcHVfcm1faW5p dF9od19pdGVyKCZod19pdGVyLCBkcm1fZW5jLT5iYXNlLmlkLAotCQkJCQkgICAgRFBVX0hXX0JM S19JTlRGKTsKLQkJCWZvciAoaiA9IDA7IGogPCBNQVhfQ0hBTk5FTFNfUEVSX0VOQzsgaisrKSB7 Ci0JCQkJc3RydWN0IGRwdV9od19pbnRmICpod19pbnRmOworCQlwaHlzLT5od19wcCA9IGRwdV9w cml2YXRlX3N0YXRlLT5od19wcHNbaV07CisJCWRwdV9lbmMtPmh3X3BwW2ldID0gZHB1X3ByaXZh dGVfc3RhdGUtPmh3X3Bwc1tpXTsKIAotCQkJCWlmICghZHB1X3JtX2dldF9odygmZHB1X2ttcy0+ cm0sICZod19pdGVyKSkKLQkJCQkJYnJlYWs7CisJCXBoeXMtPmh3X2N0bCA9IGRwdV9jc3RhdGUt Pm1peGVyc1tpXS5sbV9jdGw7CiAKLQkJCQlod19pbnRmID0gKHN0cnVjdCBkcHVfaHdfaW50ZiAq KWh3X2l0ZXIuaHc7Ci0JCQkJaWYgKGh3X2ludGYtPmlkeCA9PSBwaHlzLT5pbnRmX2lkeCkKLQkJ CQkJcGh5cy0+aHdfaW50ZiA9IGh3X2ludGY7CisJCWZvciAoaiA9IDA7IGogPCBkcHVfcHJpdmF0 ZV9zdGF0ZS0+bnVtX2ludGZzOyBqKyspIHsKKwkJCXN0cnVjdCBkcHVfaHdfaW50ZiAqaHdfaW50 ZiA9CisJCQkJZHB1X3ByaXZhdGVfc3RhdGUtPmh3X2ludGZzW2pdOworCQkJaWYgKGh3X2ludGYt PmlkeCA9PSBwaHlzLT5pbnRmX2lkeCkgeworCQkJCXBoeXMtPmh3X2ludGYgPSBod19pbnRmOwor CQkJCWJyZWFrOwogCQkJfQotCi0JCQlpZiAoIXBoeXMtPmh3X2ludGYpIHsKLQkJCQlEUFVfRVJS T1JfRU5DKGRwdV9lbmMsCi0JCQkJCSAgICAgICJubyBpbnRmIGJsb2NrIGFzc2lnbmVkIGF0IGlk eDogJWRcbiIsCi0JCQkJCSAgICAgIGkpOwotCQkJCWdvdG8gZXJyb3I7Ci0JCQl9Ci0KLQkJCXBo eXMtPmNvbm5lY3RvciA9IGNvbm4tPnN0YXRlLT5jb25uZWN0b3I7Ci0JCQlpZiAocGh5cy0+b3Bz Lm1vZGVfc2V0KQotCQkJCXBoeXMtPm9wcy5tb2RlX3NldChwaHlzLCBtb2RlLCBhZGpfbW9kZSk7 CiAJCX0KKworCQlwaHlzLT5jb25uZWN0b3IgPSBjb25uLT5zdGF0ZS0+Y29ubmVjdG9yOworCQlp ZiAocGh5cy0+b3BzLm1vZGVfc2V0KQorCQkJcGh5cy0+b3BzLm1vZGVfc2V0KHBoeXMsIG1vZGUs IGFkal9tb2RlKTsKIAl9CiAKIAlkcHVfZW5jLT5tb2RlX3NldF9jb21wbGV0ZSA9IHRydWU7Ci0K LWVycm9yOgotCWRwdV9ybV9yZWxlYXNlKCZkcHVfa21zLT5ybSwgZHJtX2VuYyk7CiB9CiAKIHN0 YXRpYyB2b2lkIF9kcHVfZW5jb2Rlcl92aXJ0X2VuYWJsZV9oZWxwZXIoc3RydWN0IGRybV9lbmNv ZGVyICpkcm1fZW5jKQpAQCAtMTE5Niw2ICsxMTU2LDkgQEAgc3RhdGljIHZvaWQgZHB1X2VuY29k ZXJfdmlydF9kaXNhYmxlKHN0cnVjdCBkcm1fZW5jb2RlciAqZHJtX2VuYykKIAlzdHJ1Y3QgbXNt X2RybV9wcml2YXRlICpwcml2OwogCXN0cnVjdCBkcHVfa21zICpkcHVfa21zOwogCXN0cnVjdCBk cm1fZGlzcGxheV9tb2RlICptb2RlOworCXN0cnVjdCBkcm1fY3J0YyAqZHJtX2NydGM7CisJc3Ry dWN0IGRwdV9jcnRjICpkcHVfY3J0YzsKKwl1bnNpZ25lZCBsb25nIGxvY2tfZmxhZ3M7CiAJaW50 IGkgPSAwOwogCiAJaWYgKCFkcm1fZW5jKSB7CkBAIC0xMjEyLDEwICsxMTc1LDIwIEBAIHN0YXRp YyB2b2lkIGRwdV9lbmNvZGVyX3ZpcnRfZGlzYWJsZShzdHJ1Y3QgZHJtX2VuY29kZXIgKmRybV9l bmMpCiAJZHB1X2VuYyA9IHRvX2RwdV9lbmNvZGVyX3ZpcnQoZHJtX2VuYyk7CiAJRFBVX0RFQlVH X0VOQyhkcHVfZW5jLCAiXG4iKTsKIAorCS8qCisJICogY2xpZW50IG1heSBoYXZlIHJlc2V0IHRo ZSBjcnRjIGVuY29kZXJfbWFzayBiZWZvcmUgZW5jb2Rlci0+ZGlzYWJsZS4KKwkgKiBSZWx5IG9u IHRoZSBkcHVfZW5jLT5jcnRjIHdoaWNoIHdpbGwgYmUgcmVzZXQgb25seSBvbiBjcnRjLT5kaXNh YmxlLgorCSAqLworCXNwaW5fbG9ja19pcnFzYXZlKCZkcHVfZW5jLT5lbmNfc3BpbmxvY2ssIGxv Y2tfZmxhZ3MpOworCWRybV9jcnRjID0gZHB1X2VuYy0+Y3J0YzsKKwlzcGluX3VubG9ja19pcnFy ZXN0b3JlKCZkcHVfZW5jLT5lbmNfc3BpbmxvY2ssIGxvY2tfZmxhZ3MpOworCisJZHB1X2NydGMg PSB0b19kcHVfY3J0Yyhkcm1fY3J0Yyk7CisKIAltdXRleF9sb2NrKCZkcHVfZW5jLT5lbmNfbG9j ayk7CiAJZHB1X2VuYy0+ZW5hYmxlZCA9IGZhbHNlOwogCi0JbW9kZSA9ICZkcm1fZW5jLT5jcnRj LT5zdGF0ZS0+YWRqdXN0ZWRfbW9kZTsKKwltb2RlID0gJmRybV9jcnRjLT5zdGF0ZS0+YWRqdXN0 ZWRfbW9kZTsKIAogCXByaXYgPSBkcm1fZW5jLT5kZXYtPmRldl9wcml2YXRlOwogCWRwdV9rbXMg PSB0b19kcHVfa21zKHByaXYtPmttcyk7CkBAIC0xMjQ5LDcgKzEyMjIsNyBAQCBzdGF0aWMgdm9p ZCBkcHVfZW5jb2Rlcl92aXJ0X2Rpc2FibGUoc3RydWN0IGRybV9lbmNvZGVyICpkcm1fZW5jKQog CiAJRFBVX0RFQlVHX0VOQyhkcHVfZW5jLCAiZW5jb2RlciBkaXNhYmxlZFxuIik7CiAKLQlkcHVf cm1fcmVsZWFzZSgmZHB1X2ttcy0+cm0sIGRybV9lbmMpOworCWRwdV9ybV9yZWxlYXNlKCZkcHVf a21zLT5ybSwgZHB1X2NydGMtPnByaXZfb2JqLnN0YXRlKTsKIAogCW11dGV4X3VubG9jaygmZHB1 X2VuYy0+ZW5jX2xvY2spOwogfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNw L2RwdTEvZHB1X2ttcy5jIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2ttcy5j CmluZGV4IDE2Nzc4NjIuLjQzZTMyMTEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20v ZGlzcC9kcHUxL2RwdV9rbXMuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9k cHVfa21zLmMKQEAgLTQ5MCwxMCArNDkwLDE5IEBAIHN0cnVjdCBkcHVfcHJpdmF0ZV9zdGF0ZSAq ZHB1X2dldF9wcml2YXRlX3N0YXRlKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSwKIHN0 YXRpYyB2b2lkIGRwdV9wcml2YXRlX29ial9kZXN0cm95X3N0YXRlKHN0cnVjdCBkcm1fcHJpdmF0 ZV9vYmogKm9iaiwKIAkJCQkgICAgICBzdHJ1Y3QgZHJtX3ByaXZhdGVfc3RhdGUgKnN0YXRlKQog eworCXN0cnVjdCBtc21fZHJtX3ByaXZhdGUgKnByaXYgPSBzdGF0ZS0+c3RhdGUtPmRldi0+ZGV2 X3ByaXZhdGU7CisJc3RydWN0IGRwdV9rbXMgKmRwdV9rbXMgPSB0b19kcHVfa21zKHByaXYtPmtt cyk7CiAJc3RydWN0IGRwdV9wcml2YXRlX3N0YXRlICpkcHVfcHJpdl9zdGF0ZSA9IGNvbnRhaW5l cl9vZihzdGF0ZSwKIAkJCQkJCSAgICAgIHN0cnVjdCBkcHVfcHJpdmF0ZV9zdGF0ZSwKIAkJCQkJ CSAgICAgIGJhc2UpOwogCisJLyoKKwkgKiBEZXN0cm95IHN0YXRlIHdpbGwgYmUgdHJpZ2dlcmlu ZyBSTSByZWxlYXNlIG9ubHkgd2hlbiByZXNvdXJjZXMKKwkgKiBhcmUgYWxsb2NhdGVkIGR1cmlu ZyBURVNUX09OTFkgY29tbWl0cyB3aGVyZSByZXNvdXJjZXMgbmVlZAorCSAqIHRvIGJlIGZyZWVk IGJhY2sgdG8gdGhlIFJNIHBvb2wKKwkgKi8KKwlkcHVfcm1fcmVsZWFzZSgmZHB1X2ttcy0+cm0s IHN0YXRlKTsKKwogCWtmcmVlKGRwdV9wcml2X3N0YXRlKTsKIH0KIApkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2ttcy5oIGIvZHJpdmVycy9ncHUvZHJtL21z bS9kaXNwL2RwdTEvZHB1X2ttcy5oCmluZGV4IDNkZWVkZmIuLjc5MGM0ZDcgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9rbXMuaAorKysgYi9kcml2ZXJzL2dw dS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfa21zLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRl ICJkcHVfaHdfY2F0YWxvZy5oIgogI2luY2x1ZGUgImRwdV9od19jdGwuaCIKICNpbmNsdWRlICJk cHVfaHdfbG0uaCIKKyNpbmNsdWRlICJkcHVfaHdfaW50Zi5oIgogI2luY2x1ZGUgImRwdV9od19p bnRlcnJ1cHRzLmgiCiAjaW5jbHVkZSAiZHB1X2h3X3RvcC5oIgogI2luY2x1ZGUgImRwdV9pb191 dGlsLmgiCkBAIC0xNDAsNiArMTQxLDIyIEBAIHN0cnVjdCBkcHVfa21zIHsKIAogc3RydWN0IGRw dV9wcml2YXRlX3N0YXRlIHsKIAlzdHJ1Y3QgZHJtX3ByaXZhdGVfc3RhdGUgYmFzZTsKKworCS8q CisJICogbGF5ZXIgbWl4ZXJzIGFuZCBwaW5nIHBvbmcgYmxvY2tzCisJICogYXJlIGhhcmQgY2hh aW5lZAorCSAqLworCWludCBudW1fbWl4ZXJzOworCXN0cnVjdCBkcHVfaHdfbWl4ZXIgKmh3X2xt c1tDUlRDX0RVQUxfTUlYRVJTXTsKKwlzdHJ1Y3QgZHB1X2h3X3Bpbmdwb25nICpod19wcHNbQ1JU Q19EVUFMX01JWEVSU107CisKKwkvKgorCSAqIHVudGlsIFNETTg0NSBlYWNoIGludGVyZmFjZSBp cyBjb250cm9sbGVkCisJICogYnkgaXRzIG93biBod19jdGwKKwkgKi8KKwlpbnQgbnVtX2ludGZz OworCXN0cnVjdCBkcHVfaHdfY3RsICpod19jdGxzW0NSVENfRFVBTF9NSVhFUlNdOworCXN0cnVj dCBkcHVfaHdfaW50ZiAqaHdfaW50ZnNbQ1JUQ19EVUFMX01JWEVSU107CiB9OwogCiBzdHJ1Y3Qg dnN5bmNfaW5mbyB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9k cHVfcm0uYyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9ybS5jCmluZGV4IDAz N2Q5ZjQuLjQ4ODQ2ODMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUx L2RwdV9ybS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9ybS5jCkBA IC0zNjgsNiArMzY4LDcgQEAgc3RhdGljIGJvb2wgX2RwdV9ybV9jaGVja19sbV9hbmRfZ2V0X2Nv bm5lY3RlZF9ibGtzKAogfQogCiBzdGF0aWMgaW50IF9kcHVfcm1fcmVzZXJ2ZV9sbXMoc3RydWN0 IGRwdV9ybSAqcm0sIHVpbnQzMl90IGVuY19pZCwKKwkJCSAgICAgICBzdHJ1Y3QgZHB1X3ByaXZh dGVfc3RhdGUgKmRwdV9wcml2X3N0YXRlLAogCQkJICAgICAgIHN0cnVjdCBkcHVfcm1fcmVxdWly ZW1lbnRzICpyZXFzKQogCiB7CkBAIC00MjksOCArNDMwLDEzIEBAIHN0YXRpYyBpbnQgX2RwdV9y bV9yZXNlcnZlX2xtcyhzdHJ1Y3QgZHB1X3JtICpybSwgdWludDMyX3QgZW5jX2lkLAogCQlsbVtp XS0+ZW5jX2lkID0gZW5jX2lkOwogCQlwcFtpXS0+ZW5jX2lkID0gZW5jX2lkOwogCisJCWRwdV9w cml2X3N0YXRlLT5od19sbXNbaV0gPSB0b19kcHVfaHdfbWl4ZXIobG1baV0tPmh3KTsKKwkJZHB1 X3ByaXZfc3RhdGUtPmh3X3Bwc1tpXSA9IGNvbnRhaW5lcl9vZihwcFtpXS0+aHcsCisJCQkJCQkJ IHN0cnVjdCBkcHVfaHdfcGluZ3BvbmcsCisJCQkJCQkJIGJhc2UpOwogCQl0cmFjZV9kcHVfcm1f cmVzZXJ2ZV9sbXMobG1baV0tPmlkLCBlbmNfaWQsIHBwW2ldLT5pZCk7CiAJfQorCWRwdV9wcml2 X3N0YXRlLT5udW1fbWl4ZXJzID0gbG1fY291bnQ7CiAKIAlyZXR1cm4gcmM7CiB9CkBAIC00Mzgs NiArNDQ0LDcgQEAgc3RhdGljIGludCBfZHB1X3JtX3Jlc2VydmVfbG1zKHN0cnVjdCBkcHVfcm0g KnJtLCB1aW50MzJfdCBlbmNfaWQsCiBzdGF0aWMgaW50IF9kcHVfcm1fcmVzZXJ2ZV9jdGxzKAog CQlzdHJ1Y3QgZHB1X3JtICpybSwKIAkJdWludDMyX3QgZW5jX2lkLAorCQlzdHJ1Y3QgZHB1X3By aXZhdGVfc3RhdGUgKmRwdV9wcml2X3N0YXRlLAogCQljb25zdCBzdHJ1Y3QgbXNtX2Rpc3BsYXlf dG9wb2xvZ3kgKnRvcCkKIHsKIAlzdHJ1Y3QgZHB1X3JtX2h3X2JsayAqY3Rsc1tNQVhfQkxPQ0tT XTsKQEAgLTQ4MCwyMCArNDg3LDIwIEBAIHN0YXRpYyBpbnQgX2RwdV9ybV9yZXNlcnZlX2N0bHMo CiAKIAlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShjdGxzKSAmJiBpIDwgbnVtX2N0bHM7IGkr KykgewogCQljdGxzW2ldLT5lbmNfaWQgPSBlbmNfaWQ7CisJCWRwdV9wcml2X3N0YXRlLT5od19j dGxzW2ldID0gdG9fZHB1X2h3X2N0bChjdGxzW2ldLT5odyk7CiAJCXRyYWNlX2RwdV9ybV9yZXNl cnZlX2N0bHMoY3Rsc1tpXS0+aWQsIGVuY19pZCk7CiAJfQogCiAJcmV0dXJuIDA7CiB9CiAKLXN0 YXRpYyBpbnQgX2RwdV9ybV9yZXNlcnZlX2ludGYoCitzdGF0aWMgc3RydWN0IGRwdV9ybV9od19i bGsgKl9kcHVfcm1fcmVzZXJ2ZV9pbnRmKAogCQlzdHJ1Y3QgZHB1X3JtICpybSwKIAkJdWludDMy X3QgZW5jX2lkLAogCQl1aW50MzJfdCBpZCwKIAkJZW51bSBkcHVfaHdfYmxrX3R5cGUgdHlwZSkK IHsKIAlzdHJ1Y3QgZHB1X3JtX2h3X2l0ZXIgaXRlcjsKLQlpbnQgcmV0ID0gMDsKIAogCS8qIEZp bmQgdGhlIGJsb2NrIGVudHJ5IGluIHRoZSBybSwgYW5kIG5vdGUgdGhlIHJlc2VydmF0aW9uICov CiAJZHB1X3JtX2luaXRfaHdfaXRlcigmaXRlciwgMCwgdHlwZSk7CkBAIC01MDMsNyArNTEwLDcg QEAgc3RhdGljIGludCBfZHB1X3JtX3Jlc2VydmVfaW50ZigKIAogCQlpZiAoUkVTRVJWRURfQllf T1RIRVIoaXRlci5ibGssIGVuY19pZCkpIHsKIAkJCURQVV9FUlJPUigidHlwZSAlZCBpZCAlZCBh bHJlYWR5IHJlc2VydmVkXG4iLCB0eXBlLCBpZCk7Ci0JCQlyZXR1cm4gLUVOQVZBSUw7CisJCQly ZXR1cm4gTlVMTDsKIAkJfQogCiAJCWl0ZXIuYmxrLT5lbmNfaWQgPSBlbmNfaWQ7CkBAIC01MTIs NTYgKzUxOSw2MyBAQCBzdGF0aWMgaW50IF9kcHVfcm1fcmVzZXJ2ZV9pbnRmKAogCX0KIAogCS8q IFNob3VsZG4ndCBoYXBwZW4gc2luY2UgaW50ZnMgYXJlIGZpeGVkIGF0IHByb2JlICovCi0JaWYg KCFpdGVyLmh3KSB7CisJaWYgKCFpdGVyLmJsaykgewogCQlEUFVfRVJST1IoImNvdWxkbid0IGZp bmQgdHlwZSAlZCBpZCAlZFxuIiwgdHlwZSwgaWQpOwotCQlyZXR1cm4gLUVJTlZBTDsKKwkJcmV0 dXJuIE5VTEw7CiAJfQogCi0JcmV0dXJuIHJldDsKKwlyZXR1cm4gaXRlci5ibGs7CiB9CiAKIHN0 YXRpYyBpbnQgX2RwdV9ybV9yZXNlcnZlX2ludGZfcmVsYXRlZF9odygKIAkJc3RydWN0IGRwdV9y bSAqcm0sCiAJCXVpbnQzMl90IGVuY19pZCwKKwkJc3RydWN0IGRwdV9wcml2YXRlX3N0YXRlICpk cHVfcHJpdl9zdGF0ZSwKIAkJc3RydWN0IGRwdV9lbmNvZGVyX2h3X3Jlc291cmNlcyAqaHdfcmVz KQogewotCWludCBpLCByZXQgPSAwOwotCXUzMiBpZDsKKwlzdHJ1Y3QgZHB1X3JtX2h3X2JsayAq YmxrOworCWludCBpLCBudW1faW50ZnMgPSAwOwogCiAJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJ WkUoaHdfcmVzLT5pbnRmcyk7IGkrKykgewogCQlpZiAoaHdfcmVzLT5pbnRmc1tpXSA9PSBJTlRG X01PREVfTk9ORSkKIAkJCWNvbnRpbnVlOwotCQlpZCA9IGkgKyBJTlRGXzA7Ci0JCXJldCA9IF9k cHVfcm1fcmVzZXJ2ZV9pbnRmKHJtLCBlbmNfaWQsIGlkLAorCisJCWJsayA9IF9kcHVfcm1fcmVz ZXJ2ZV9pbnRmKHJtLCBlbmNfaWQsIGkgKyBJTlRGXzAsCiAJCQkJRFBVX0hXX0JMS19JTlRGKTsK LQkJaWYgKHJldCkKLQkJCXJldHVybiByZXQ7CisJCWlmICghYmxrKQorCQkJcmV0dXJuIC1FTkFW QUlMOworCisJCWRwdV9wcml2X3N0YXRlLT5od19pbnRmc1tudW1faW50ZnMrK10gPQorCQkJY29u dGFpbmVyX29mKGJsay0+aHcsIHN0cnVjdCBkcHVfaHdfaW50ZiwgYmFzZSk7CiAJfQorCWRwdV9w cml2X3N0YXRlLT5udW1faW50ZnMgPSBudW1faW50ZnM7CiAKLQlyZXR1cm4gcmV0OworCXJldHVy biAwOwogfQogCiBzdGF0aWMgaW50IF9kcHVfcm1fbWFrZV9yZXNlcnZhdGlvbigKIAkJc3RydWN0 IGRwdV9ybSAqcm0sCiAJCXN0cnVjdCBkcm1fZW5jb2RlciAqZW5jLAotCQlzdHJ1Y3QgZHJtX2Ny dGNfc3RhdGUgKmNydGNfc3RhdGUsCisJCXN0cnVjdCBkcHVfcHJpdmF0ZV9zdGF0ZSAqZHB1X3By aXZfc3RhdGUsCiAJCXN0cnVjdCBkcHVfcm1fcmVxdWlyZW1lbnRzICpyZXFzKQogewogCWludCBy ZXQ7CiAKLQlyZXQgPSBfZHB1X3JtX3Jlc2VydmVfbG1zKHJtLCBlbmMtPmJhc2UuaWQsIHJlcXMp OworCXJldCA9IF9kcHVfcm1fcmVzZXJ2ZV9sbXMocm0sIGVuYy0+YmFzZS5pZCwgZHB1X3ByaXZf c3RhdGUsIHJlcXMpOwogCWlmIChyZXQpIHsKIAkJRFBVX0VSUk9SKCJ1bmFibGUgdG8gZmluZCBh cHByb3ByaWF0ZSBtaXhlcnNcbiIpOwogCQlyZXR1cm4gcmV0OwogCX0KIAotCXJldCA9IF9kcHVf cm1fcmVzZXJ2ZV9jdGxzKHJtLCBlbmMtPmJhc2UuaWQsICZyZXFzLT50b3BvbG9neSk7CisJcmV0 ID0gX2RwdV9ybV9yZXNlcnZlX2N0bHMocm0sIGVuYy0+YmFzZS5pZCwgZHB1X3ByaXZfc3RhdGUs CisJCQkJICAgJnJlcXMtPnRvcG9sb2d5KTsKIAlpZiAocmV0KSB7CiAJCURQVV9FUlJPUigidW5h YmxlIHRvIGZpbmQgYXBwcm9wcmlhdGUgQ1RMXG4iKTsKIAkJcmV0dXJuIHJldDsKIAl9CiAKLQly ZXQgPSBfZHB1X3JtX3Jlc2VydmVfaW50Zl9yZWxhdGVkX2h3KHJtLCBlbmMtPmJhc2UuaWQsICZy ZXFzLT5od19yZXMpOworCXJldCA9IF9kcHVfcm1fcmVzZXJ2ZV9pbnRmX3JlbGF0ZWRfaHcocm0s IGVuYy0+YmFzZS5pZCwgZHB1X3ByaXZfc3RhdGUsCisJCQkJCSAgICAgICZyZXFzLT5od19yZXMp OwogCWlmIChyZXQpCiAJCXJldHVybiByZXQ7CiAKQEAgLTU3MSw3ICs1ODUsNiBAQCBzdGF0aWMg aW50IF9kcHVfcm1fbWFrZV9yZXNlcnZhdGlvbigKIHN0YXRpYyBpbnQgX2RwdV9ybV9wb3B1bGF0 ZV9yZXF1aXJlbWVudHMoCiAJCXN0cnVjdCBkcHVfcm0gKnJtLAogCQlzdHJ1Y3QgZHJtX2VuY29k ZXIgKmVuYywKLQkJc3RydWN0IGRybV9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAogCQlzdHJ1Y3Qg ZHB1X3JtX3JlcXVpcmVtZW50cyAqcmVxcywKIAkJc3RydWN0IG1zbV9kaXNwbGF5X3RvcG9sb2d5 IHJlcV90b3BvbG9neSkKIHsKQEAgLTU4NiwyNyArNTk5LDY0IEBAIHN0YXRpYyBpbnQgX2RwdV9y bV9wb3B1bGF0ZV9yZXF1aXJlbWVudHMoCiAJcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyB2b2lkIF9k cHVfcm1fcmVsZWFzZV9yZXNlcnZhdGlvbihzdHJ1Y3QgZHB1X3JtICpybSwgdWludDMyX3QgZW5j X2lkKQorc3RhdGljIGludCBfZHB1X3JtX3JlbGVhc2VfaHcoc3RydWN0IGRwdV9ybSAqcm0sIGVu dW0gZHB1X2h3X2Jsa190eXBlIHR5cGUsCisJCQkgICAgICBpbnQgaWQpCiB7CiAJc3RydWN0IGRw dV9ybV9od19ibGsgKmJsazsKLQllbnVtIGRwdV9od19ibGtfdHlwZSB0eXBlOwotCi0JZm9yICh0 eXBlID0gMDsgdHlwZSA8IERQVV9IV19CTEtfTUFYOyB0eXBlKyspIHsKLQkJbGlzdF9mb3JfZWFj aF9lbnRyeShibGssICZybS0+aHdfYmxrc1t0eXBlXSwgbGlzdCkgewotCQkJaWYgKGJsay0+ZW5j X2lkID09IGVuY19pZCkgewotCQkJCWJsay0+ZW5jX2lkID0gMDsKLQkJCQlEUFVfREVCVUcoInJl bCBlbmMgJWQgJWQgJWRcbiIsIGVuY19pZCwKLQkJCQkJICB0eXBlLCBibGstPmlkKTsKLQkJCX0K KwlsaXN0X2Zvcl9lYWNoX2VudHJ5KGJsaywgJnJtLT5od19ibGtzW3R5cGVdLCBsaXN0KSB7CisJ CWlmIChibGstPmh3LT5pZCA9PSBpZCkgeworCQkJYmxrLT5lbmNfaWQgPSAwOworCQkJcmV0dXJu IDA7CiAJCX0KIAl9CisKKwlEUk1fREVCVUdfS01TKCJmYWlsZWQgdG8gZmluZCBodyBpZCglZCkg b2YgdHlwZSglZCkgZm9yIHJlbGVhc2luZ1xuIiwKKwkJICAgICAgaWQsIHR5cGUpOworCisJcmV0 dXJuIC1FSU5WQUw7Cit9CisKK3N0YXRpYyB2b2lkIF9kcHVfcm1fcmVsZWFzZV9yZXNlcnZhdGlv bihzdHJ1Y3QgZHB1X3JtICpybSwKKwkJCQkJc3RydWN0IGRybV9wcml2YXRlX3N0YXRlICpwcml2 X3N0YXRlKQoreworCXN0cnVjdCBkcHVfcHJpdmF0ZV9zdGF0ZSAqZHB1X3ByaXZfc3RhdGUgPQor CQljb250YWluZXJfb2YocHJpdl9zdGF0ZSwgc3RydWN0IGRwdV9wcml2YXRlX3N0YXRlLCBiYXNl KTsKKwlpbnQgaTsKKworCWZvciAoaSA9IDA7IGkgPCBkcHVfcHJpdl9zdGF0ZS0+bnVtX21peGVy czsgaSsrKSB7CisJCWlmICghZHB1X3ByaXZfc3RhdGUtPmh3X2xtc1tpXSkKKwkJCWNvbnRpbnVl OworCisJCWlmICghX2RwdV9ybV9yZWxlYXNlX2h3KHJtLCBEUFVfSFdfQkxLX0xNLAorCQkJCQlk cHVfcHJpdl9zdGF0ZS0+aHdfbG1zW2ldLT5iYXNlLmlkKSkKKwkJCWRwdV9wcml2X3N0YXRlLT5o d19sbXNbaV0gPSBOVUxMOworCisJCWlmICghX2RwdV9ybV9yZWxlYXNlX2h3KHJtLCBEUFVfSFdf QkxLX1BJTkdQT05HLAorCQkJCQlkcHVfcHJpdl9zdGF0ZS0+aHdfcHBzW2ldLT5iYXNlLmlkKSkK KwkJCWRwdV9wcml2X3N0YXRlLT5od19wcHNbaV0gPSBOVUxMOworCX0KKwlkcHVfcHJpdl9zdGF0 ZS0+bnVtX21peGVycyA9IDA7CisKKwlmb3IgKGkgPSAwOyBpIDwgZHB1X3ByaXZfc3RhdGUtPm51 bV9pbnRmczsgaSsrKSB7CisJCWlmICghZHB1X3ByaXZfc3RhdGUtPmh3X2N0bHNbaV0pCisJCQlj b250aW51ZTsKKworCQlpZiAoIV9kcHVfcm1fcmVsZWFzZV9odyhybSwgRFBVX0hXX0JMS19DVEws CisJCQkJCWRwdV9wcml2X3N0YXRlLT5od19jdGxzW2ldLT5iYXNlLmlkKSkKKwkJCWRwdV9wcml2 X3N0YXRlLT5od19jdGxzW2ldID0gTlVMTDsKKworCQlpZiAoIV9kcHVfcm1fcmVsZWFzZV9odyhy bSwgRFBVX0hXX0JMS19JTlRGLAorCQkJCQlkcHVfcHJpdl9zdGF0ZS0+aHdfaW50ZnNbaV0tPmJh c2UuaWQpKQorCQkJZHB1X3ByaXZfc3RhdGUtPmh3X2ludGZzW2ldID0gTlVMTDsKKwl9CisJZHB1 X3ByaXZfc3RhdGUtPm51bV9pbnRmcyA9IDA7CiB9CiAKLXZvaWQgZHB1X3JtX3JlbGVhc2Uoc3Ry dWN0IGRwdV9ybSAqcm0sIHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jKQordm9pZCBkcHVfcm1fcmVs ZWFzZShzdHJ1Y3QgZHB1X3JtICpybSwgc3RydWN0IGRybV9wcml2YXRlX3N0YXRlICpwcml2X3N0 YXRlKQogewogCW11dGV4X2xvY2soJnJtLT5ybV9sb2NrKTsKIAotCV9kcHVfcm1fcmVsZWFzZV9y ZXNlcnZhdGlvbihybSwgZW5jLT5iYXNlLmlkKTsKKwlfZHB1X3JtX3JlbGVhc2VfcmVzZXJ2YXRp b24ocm0sIHByaXZfc3RhdGUpOwogCiAJbXV0ZXhfdW5sb2NrKCZybS0+cm1fbG9jayk7CiB9CkBA IC02MTQsMzggKzY2NCwzNSBAQCB2b2lkIGRwdV9ybV9yZWxlYXNlKHN0cnVjdCBkcHVfcm0gKnJt LCBzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuYykKIGludCBkcHVfcm1fcmVzZXJ2ZSgKIAkJc3RydWN0 IGRwdV9ybSAqcm0sCiAJCXN0cnVjdCBkcm1fZW5jb2RlciAqZW5jLAotCQlzdHJ1Y3QgZHJtX2Ny dGNfc3RhdGUgKmNydGNfc3RhdGUsCisJCXN0cnVjdCBkcm1fcHJpdmF0ZV9zdGF0ZSAqcHJpdl9z dGF0ZSwKIAkJc3RydWN0IG1zbV9kaXNwbGF5X3RvcG9sb2d5IHRvcG9sb2d5LAogCQlib29sIHRl c3Rfb25seSkKIHsKIAlzdHJ1Y3QgZHB1X3JtX3JlcXVpcmVtZW50cyByZXFzOworCXN0cnVjdCBk cHVfcHJpdmF0ZV9zdGF0ZSAqZHB1X3ByaXZfc3RhdGUgPQorCQljb250YWluZXJfb2YocHJpdl9z dGF0ZSwgc3RydWN0IGRwdV9wcml2YXRlX3N0YXRlLCBiYXNlKTsKIAlpbnQgcmV0OwogCi0JLyog Q2hlY2sgaWYgdGhpcyBpcyBqdXN0IGEgcGFnZS1mbGlwICovCi0JaWYgKCFkcm1fYXRvbWljX2Ny dGNfbmVlZHNfbW9kZXNldChjcnRjX3N0YXRlKSkKLQkJcmV0dXJuIDA7Ci0KLQlEUk1fREVCVUdf S01TKCJyZXNlcnZpbmcgaHcgZm9yIGVuYyAlZCBjcnRjICVkIHRlc3Rfb25seSAlZFxuIiwKLQkJ ICAgICAgZW5jLT5iYXNlLmlkLCBjcnRjX3N0YXRlLT5jcnRjLT5iYXNlLmlkLCB0ZXN0X29ubHkp OworCURSTV9ERUJVR19LTVMoInJlc2VydmluZyBodyBmb3IgZW5jICVkIHRlc3Rfb25seSAlZFxu IiwKKwkJICAgICAgZW5jLT5iYXNlLmlkLCB0ZXN0X29ubHkpOwogCiAJbXV0ZXhfbG9jaygmcm0t PnJtX2xvY2spOwogCi0JcmV0ID0gX2RwdV9ybV9wb3B1bGF0ZV9yZXF1aXJlbWVudHMocm0sIGVu YywgY3J0Y19zdGF0ZSwgJnJlcXMsCi0JCQkJCSAgICB0b3BvbG9neSk7CisJcmV0ID0gX2RwdV9y bV9wb3B1bGF0ZV9yZXF1aXJlbWVudHMocm0sIGVuYywgJnJlcXMsIHRvcG9sb2d5KTsKIAlpZiAo cmV0KSB7CiAJCURQVV9FUlJPUigiZmFpbGVkIHRvIHBvcHVsYXRlIGh3IHJlcXVpcmVtZW50c1xu Iik7CiAJCWdvdG8gZW5kOwogCX0KIAotCXJldCA9IF9kcHVfcm1fbWFrZV9yZXNlcnZhdGlvbihy bSwgZW5jLCBjcnRjX3N0YXRlLCAmcmVxcyk7CisJcmV0ID0gX2RwdV9ybV9tYWtlX3Jlc2VydmF0 aW9uKHJtLCBlbmMsIGRwdV9wcml2X3N0YXRlLCAmcmVxcyk7CiAJaWYgKHJldCkgewogCQlEUFVf RVJST1IoImZhaWxlZCB0byByZXNlcnZlIGh3IHJlc291cmNlczogJWRcbiIsIHJldCk7Ci0JCV9k cHVfcm1fcmVsZWFzZV9yZXNlcnZhdGlvbihybSwgZW5jLT5iYXNlLmlkKTsKKwkJX2RwdV9ybV9y ZWxlYXNlX3Jlc2VydmF0aW9uKHJtLCBwcml2X3N0YXRlKTsKIAl9IGVsc2UgaWYgKHRlc3Rfb25s eSkgewogCQkgLyogdGVzdF9vbmx5OiB0ZXN0IHRoZSByZXNlcnZhdGlvbiBhbmQgdGhlbiB1bmRv ICovCiAJCURQVV9ERUJVRygidGVzdF9vbmx5OiBkaXNjYXJkIHRlc3QgW2VuYzogJWRdXG4iLAog CQkJCWVuYy0+YmFzZS5pZCk7Ci0JCV9kcHVfcm1fcmVsZWFzZV9yZXNlcnZhdGlvbihybSwgZW5j LT5iYXNlLmlkKTsKKwkJX2RwdV9ybV9yZWxlYXNlX3Jlc2VydmF0aW9uKHJtLCBwcml2X3N0YXRl KTsKIAl9CiAKIGVuZDoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUx L2RwdV9ybS5oIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X3JtLmgKaW5kZXgg MzgxNjExZi4uMjUyZTE3MyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2Rw dTEvZHB1X3JtLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X3JtLmgK QEAgLTgxLDE0ICs4MSwxNCBAQCBpbnQgZHB1X3JtX2luaXQoc3RydWN0IGRwdV9ybSAqcm0sCiAg KglIVyBSZXNlcnZhdGlvbnMgc2hvdWxkIGJlIHJlbGVhc2VkIHZpYSBkcHVfcm1fcmVsZWFzZV9o dy4KICAqIEBybTogRFBVIFJlc291cmNlIE1hbmFnZXIgaGFuZGxlCiAgKiBAZHJtX2VuYzogRFJN IEVuY29kZXIgaGFuZGxlCi0gKiBAY3J0Y19zdGF0ZTogUHJvcG9zZWQgQXRvbWljIERSTSBDUlRD IFN0YXRlIGhhbmRsZQorICogQHByaXZfc3RhdGU6IFBvaW50ZXIgdG8gZHJtIHByaXZhdGUgb2Jq IHN0YXRlCiAgKiBAdG9wb2xvZ3k6IFBvaW50ZXIgdG8gdG9wb2xvZ3kgaW5mbyBmb3IgdGhlIGRp c3BsYXkKICAqIEB0ZXN0X29ubHk6IEF0b21pYy1UZXN0IHBoYXNlLCBkaXNjYXJkIHJlc3VsdHMg KHVubGVzcyBwcm9wZXJ0eSBvdmVycmlkZXMpCiAgKiBAUmV0dXJuOiAwIG9uIFN1Y2Nlc3Mgb3Ro ZXJ3aXNlIC1FUlJPUgogICovCiBpbnQgZHB1X3JtX3Jlc2VydmUoc3RydWN0IGRwdV9ybSAqcm0s CiAJCXN0cnVjdCBkcm1fZW5jb2RlciAqZHJtX2VuYywKLQkJc3RydWN0IGRybV9jcnRjX3N0YXRl ICpjcnRjX3N0YXRlLAorCQlzdHJ1Y3QgZHJtX3ByaXZhdGVfc3RhdGUgKnByaXZfc3RhdGUsCiAJ CXN0cnVjdCBtc21fZGlzcGxheV90b3BvbG9neSB0b3BvbG9neSwKIAkJYm9vbCB0ZXN0X29ubHkp OwogCkBAIC05NiwxMCArOTYsMTAgQEAgaW50IGRwdV9ybV9yZXNlcnZlKHN0cnVjdCBkcHVfcm0g KnJtLAogICogZHB1X3JtX3Jlc2VydmUgLSBHaXZlbiB0aGUgZW5jb2RlciBmb3IgdGhlIGRpc3Bs YXkgY2hhaW4sIHJlbGVhc2UgYW55CiAgKglIVyBibG9ja3MgcHJldmlvdXNseSByZXNlcnZlZCBm b3IgdGhhdCB1c2UgY2FzZS4KICAqIEBybTogRFBVIFJlc291cmNlIE1hbmFnZXIgaGFuZGxlCi0g KiBAZW5jOiBEUk0gRW5jb2RlciBoYW5kbGUKKyAqIEBwcml2X3N0YXRlOiBQb2ludGVyIHRvIGRy bSBwcml2YXRlIG9iaiBzdGF0ZQogICogQFJldHVybjogMCBvbiBTdWNjZXNzIG90aGVyd2lzZSAt RVJST1IKICAqLwotdm9pZCBkcHVfcm1fcmVsZWFzZShzdHJ1Y3QgZHB1X3JtICpybSwgc3RydWN0 IGRybV9lbmNvZGVyICplbmMpOwordm9pZCBkcHVfcm1fcmVsZWFzZShzdHJ1Y3QgZHB1X3JtICpy bSwgc3RydWN0IGRybV9wcml2YXRlX3N0YXRlICpwcml2X3N0YXRlKTsKIAogLyoqCiAgKiBkcHVf cm1faW5pdF9od19pdGVyIC0gc2V0dXAgZ2l2ZW4gaXRlcmF0b3IgZm9yIG5ldyBpdGVyYXRpb24g b3ZlciBodyBsaXN0Ci0tIApUaGUgUXVhbGNvbW0gSW5ub3ZhdGlvbiBDZW50ZXIsIEluYy4gaXMg YSBtZW1iZXIgb2YgdGhlIENvZGUgQXVyb3JhIEZvcnVtLAphIExpbnV4IEZvdW5kYXRpb24gQ29s bGFib3JhdGl2ZSBQcm9qZWN0CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwpGcmVlZHJlbm8gbWFpbGluZyBsaXN0CkZyZWVkcmVub0BsaXN0cy5mcmVlZGVz a3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9m cmVlZHJlbm8=