From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sravanthi Kollukuduru Subject: [DPU PATCH 4/5] drm/msm/dpu: introduce state based plane resource management Date: Wed, 20 Jun 2018 18:20:19 +0530 Message-ID: <1529499020-8499-5-git-send-email-skolluku@codeaurora.org> References: <1529499020-8499-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: <1529499020-8499-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: robdclark-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org, seanpaul-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org, hoegsberg-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org, Sravanthi Kollukuduru List-Id: linux-arm-msm@vger.kernel.org QSBwbGFuZSBjYW4gYmUgYXR0YWNoZWQgdG8gYSBtYXhpbXVtIG9mIHR3byBodyBwaXBlcwppbiBj YXNlIG9mIHdpZGUgcmVzb2x1dGlvbiBncmVhdGVyIHRoYW4gcGlwZSdzIG1heCB3aWR0aCBsaW1p dC4KVGhpcyBtYXBwaW5nIG9mIGh3IHBpcGUocykgdG8gcGxhbmUgYW5kIG51bWJlciBvZiBwaXBl cyB3aWxsIGJlCm1haW50YWluZWQgaW4gdGhlIHBsYW5lIHN0YXRlLgpSZXNvdXJjZSBtYW5hZ2Vy IChSTSkgd2lsbCBoYW5kbGUgdGhlIFNTUFAgYmxvY2tzIHJlc2VydmF0aW9uCmZvciBhIGdpdmVu IHBsYW5lLgoKU2lnbmVkLW9mZi1ieTogU3JhdmFudGhpIEtvbGx1a3VkdXJ1IDxza29sbHVrdUBj b2RlYXVyb3JhLm9yZz4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfcGxh bmUuaCB8ICAxMSArKysKIGRyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9ybS5jICAg IHwgMTU2ICsrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLQogZHJpdmVycy9ncHUvZHJtL21z bS9kaXNwL2RwdTEvZHB1X3JtLmggICAgfCAgMjAgKysrKwogMyBmaWxlcyBjaGFuZ2VkLCAxNzIg aW5zZXJ0aW9ucygrKSwgMTUgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL21zbS9kaXNwL2RwdTEvZHB1X3BsYW5lLmggYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3Av ZHB1MS9kcHVfcGxhbmUuaAppbmRleCBlMDY4ODg5NS4uNGViOTI5YiAxMDA2NDQKLS0tIGEvZHJp dmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X3BsYW5lLmgKKysrIGIvZHJpdmVycy9ncHUv ZHJtL21zbS9kaXNwL2RwdTEvZHB1X3BsYW5lLmgKQEAgLTI1LDYgKzI1LDggQEAKICNpbmNsdWRl ICJkcHVfaHdfbWRzcy5oIgogI2luY2x1ZGUgImRwdV9od19zc3BwLmgiCiAKKyNkZWZpbmUgUExB TkVfRFVBTF9QSVBFUyAyCisKIC8qKgogICogc3RydWN0IGRwdV9wbGFuZV9zdGF0ZTogRGVmaW5l IGRwdSBleHRlbnNpb24gb2YgZHJtIHBsYW5lIHN0YXRlIG9iamVjdAogICogQGJhc2U6CWJhc2Ug ZHJtIHBsYW5lIHN0YXRlIG9iamVjdApAQCAtMzYsNiArMzgsOCBAQAogICogQG11bHRpcmVjdF9p bmRleDogaW5kZXggb2YgdGhlIHJlY3RhbmdsZSBvZiBTU1BQCiAgKiBAbXVsdGlyZWN0X21vZGU6 IHBhcmFsbGVsIG9yIHRpbWUgbXVsdGlwbGV4IG11bHRpcmVjdCBtb2RlCiAgKiBAcGVuZGluZzoJ d2hldGhlciB0aGUgY3VycmVudCB1cGRhdGUgaXMgc3RpbGwgcGVuZGluZworICogQG51bV9waXBl czogbnVtYmVyIG9mIHBpcGVzIGF0dGFjaGVkIHRvIHBsYW5lCisgKiBAcGlwZV9odzogYXJyYXkg b2YgcG9pbnRlcnMgdG8gaGFyZHdhcmUgcGlwZXMgcmVzZXJ2ZWQgZm9yIHBsYW5lCiAgKiBAc2Nh bGVyM19jZmc6IGNvbmZpZ3VyYXRpb24gZGF0YSBmb3Igc2NhbGVyMwogICogQHBpeGVsX2V4dDog Y29uZmlndXJhdGlvbiBkYXRhIGZvciBwaXhlbCBleHRlbnNpb25zCiAgKiBAc2NhbGVyX2NoZWNr X3N0YXRlOiBpbmRpY2F0ZXMgc3RhdHVzIG9mIHVzZXIgcHJvdmlkZWQgcGl4ZWwgZXh0ZW5zaW9u IGRhdGEKQEAgLTQ4LDYgKzUyLDEwIEBAIHN0cnVjdCBkcHVfcGxhbmVfc3RhdGUgewogCWVudW0g ZHB1X3N0YWdlIHN0YWdlOwogCWJvb2wgcGVuZGluZzsKIAorCS8qIEhXIHBpcGUgY29uZmlnICov CisJdTMyIG51bV9waXBlczsKKwlzdHJ1Y3QgZHB1X2h3X3BpcGUgKnBpcGVfaHdbUExBTkVfRFVB TF9QSVBFU107CisKIAkvKiBzY2FsZXIgY29uZmlndXJhdGlvbiAqLwogCXN0cnVjdCBkcHVfaHdf c2NhbGVyM19jZmcgc2NhbGVyM19jZmc7CiAJc3RydWN0IGRwdV9od19waXhlbF9leHQgcGl4ZWxf ZXh0OwpAQCAtNTgsNiArNjYsOSBAQCBzdHJ1Y3QgZHB1X3BsYW5lX3N0YXRlIHsKICNkZWZpbmUg dG9fZHB1X3BsYW5lX3N0YXRlKHgpIFwKIAljb250YWluZXJfb2YoeCwgc3RydWN0IGRwdV9wbGFu ZV9zdGF0ZSwgYmFzZSkKIAorLyogZ2V0IHBsYW5lIGlkIGZyb20gZHB1IHBsYW5lIHN0YXRlICov CisjZGVmaW5lIGdldF9wbGFuZV9pZCh4KSAoKHgtPmJhc2UucGxhbmUpLT5iYXNlLmlkKQorCiAv KioKICAqIGRwdV9wbGFuZV9waXBlIC0gcmV0dXJuIHNzcHAgaWRlbnRpZmllciBmb3IgdGhlIGdp dmVuIHBsYW5lCiAgKiBAcGxhbmU6ICAgUG9pbnRlciB0byBEUk0gcGxhbmUgb2JqZWN0CmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfcm0uYyBiL2RyaXZlcnMv Z3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9ybS5jCmluZGV4IDAxOGQwMWEuLjUzODc2MDAgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9ybS5jCisrKyBiL2Ry aXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9ybS5jCkBAIC0xNCw2ICsxNCw3IEBACiAK ICNkZWZpbmUgcHJfZm10KGZtdCkJIltkcm06JXNdICIgZm10LCBfX2Z1bmNfXwogI2luY2x1ZGUg ImRwdV9rbXMuaCIKKyNpbmNsdWRlICJkcHVfaHdfc3NwcC5oIgogI2luY2x1ZGUgImRwdV9od19s bS5oIgogI2luY2x1ZGUgImRwdV9od19jdGwuaCIKICNpbmNsdWRlICJkcHVfaHdfY2RtLmgiCkBA IC0yMiwxMCArMjMsMTMgQEAKICNpbmNsdWRlICJkcHVfZW5jb2Rlci5oIgogI2luY2x1ZGUgImRw dV9ybS5oIgogCisjZGVmaW5lIFJFU0VSVkVEX0JZX09USEVSKGRybV9tYXBfaWQsIGRybV9pZCkg XAorCQkoZHJtX21hcF9pZCAmJiAoZHJtX21hcF9pZCAhPSBkcm1faWQpKQorCiAvKioKICAqIHN0 cnVjdCBkcHVfcm1faHdfYmxrIC0gaGFyZHdhcmUgYmxvY2sgdHJhY2tpbmcgbGlzdCBtZW1iZXIK ICAqIEB0eXBlOglUeXBlIG9mIGhhcmR3YXJlIGJsb2NrIHRoaXMgc3RydWN0dXJlIHRyYWNrcwot ICogQGRybV9pZDoJRFJNIGNvbXBvbmVudCBJRCBhc3NvY2lhdGVkIHdpdGggdGhlIEhXIGJsb2Nr CisgKiBAcm1faWQ6CURSTSBjb21wb25lbnQgSUQgYXNzb2NpYXRlZCB3aXRoIHRoZSBIVyBibG9j awogICogQGlkOgkJSGFyZHdhcmUgSUQgbnVtYmVyLCB3aXRoaW4gaXQncyBvd24gc3BhY2UsIGll LiBMTV9YCiAgKiBAaHc6CQlQb2ludGVyIHRvIHRoZSBoYXJkd2FyZSByZWdpc3RlciBhY2Nlc3Mg b2JqZWN0IGZvciB0aGlzIGJsb2NrCiAgKi8KQEAgLTE1Nyw3ICsxNjEsOCBAQCBzdGF0aWMgdm9p ZCBfZHB1X3JtX2h3X2Rlc3Ryb3koZW51bSBkcHVfaHdfYmxrX3R5cGUgdHlwZSwgdm9pZCAqaHcp CiAJCWRwdV9od19pbnRmX2Rlc3Ryb3koaHcpOwogCQlicmVhazsKIAljYXNlIERQVV9IV19CTEtf U1NQUDoKLQkJLyogU1NQUHMgYXJlIG5vdCBtYW5hZ2VkIGJ5IHRoZSByZXNvdXJjZSBtYW5hZ2Vy ICovCisJCWRwdV9od19zc3BwX2Rlc3Ryb3koaHcpOworCQlicmVhazsKIAljYXNlIERQVV9IV19C TEtfVE9QOgogCQkvKiBUb3AgaXMgYSBzaW5nbGV0b24sIG5vdCBtYW5hZ2VkIGluIGh3X2Jsa3Mg bGlzdCAqLwogCWNhc2UgRFBVX0hXX0JMS19NQVg6CkBAIC0yMjksNyArMjM0LDggQEAgc3RhdGlj IGludCBfZHB1X3JtX2h3X2Jsa19jcmVhdGUoCiAJCWh3ID0gZHB1X2h3X2ludGZfaW5pdChpZCwg bW1pbywgY2F0KTsKIAkJYnJlYWs7CiAJY2FzZSBEUFVfSFdfQkxLX1NTUFA6Ci0JCS8qIFNTUFBz IGFyZSBub3QgbWFuYWdlZCBieSB0aGUgcmVzb3VyY2UgbWFuYWdlciAqLworCQlodyA9IGRwdV9o d19zc3BwX2luaXQoaWQsIG1taW8sIGNhdCk7CisJCWJyZWFrOwogCWNhc2UgRFBVX0hXX0JMS19U T1A6CiAJCS8qIFRvcCBpcyBhIHNpbmdsZXRvbiwgbm90IG1hbmFnZWQgaW4gaHdfYmxrcyBsaXN0 ICovCiAJY2FzZSBEUFVfSFdfQkxLX01BWDoKQEAgLTI4MSw2ICsyODcsMTUgQEAgaW50IGRwdV9y bV9pbml0KHN0cnVjdCBkcHVfcm0gKnJtLAogCX0KIAogCS8qIEludGVycm9nYXRlIEhXIGNhdGFs b2cgYW5kIGNyZWF0ZSB0cmFja2luZyBpdGVtcyBmb3IgaHcgYmxvY2tzICovCisJZm9yIChpID0g MDsgaSA8IGNhdC0+c3NwcF9jb3VudDsgaSsrKSB7CisJCXJjID0gX2RwdV9ybV9od19ibGtfY3Jl YXRlKHJtLCBjYXQsIG1taW8sIERQVV9IV19CTEtfU1NQUCwKKwkJCQljYXQtPnNzcHBbaV0uaWQs ICZjYXQtPnNzcHBbaV0pOworCQlpZiAocmMpIHsKKwkJCURQVV9FUlJPUigiZmFpbGVkOiBzc3Bw IGh3IG5vdCBhdmFpbGFibGVcbiIpOworCQkJZ290byBmYWlsOworCQl9CisJfQorCiAJZm9yIChp ID0gMDsgaSA8IGNhdC0+bWl4ZXJfY291bnQ7IGkrKykgewogCQlzdHJ1Y3QgZHB1X2xtX2NmZyAq bG0gPSAmY2F0LT5taXhlcltpXTsKIApAQCAtNTcwLDEyICs1ODUsMTAgQEAgc3RhdGljIGludCBf ZHB1X3JtX3Jlc2VydmVfaW50Zl9yZWxhdGVkX2h3KAogfQogCiBzdGF0aWMgaW50IF9kcHVfcm1f cmVsZWFzZV9od19ibGsoCi0JCXN0cnVjdCBkcHVfcm0gKnJtLAotCQlzdHJ1Y3QgZHB1X2NydGNf c3RhdGUgKnN0YXRlLAorCQlzdHJ1Y3QgZHB1X3JtICpybSwgaW50IGRybV9pZCwKIAkJZW51bSBk cHVfaHdfYmxrX3R5cGUgdHlwZSkKIHsKIAlzdHJ1Y3QgZHB1X3JtX2h3X2l0ZXIgaXRlcjsKLQlp bnQgZHJtX2lkID0gZ2V0X2NydGNfaWQoc3RhdGUpOwogCWludCBudW1fcmVsZWFzZWQgPSAwOwog CWludCAqZHJtX21hcCA9IHJtLT5od19kcm1fbWFwW3R5cGVdOwogCkBAIC01OTAsMTUgKzYwMywx NSBAQCBzdGF0aWMgaW50IF9kcHVfcm1fcmVsZWFzZV9od19ibGsoCiAJcmV0dXJuIG51bV9yZWxl YXNlZDsKIH0KIAotc3RhdGljIGludCBfZHB1X3JtX3JlbGVhc2VfbG1zKHN0cnVjdCBkcHVfcm0g KnJtLCBzdHJ1Y3QgZHB1X2NydGNfc3RhdGUgKnN0YXRlKQorc3RhdGljIGludCBfZHB1X3JtX3Jl bGVhc2VfbG1zKHN0cnVjdCBkcHVfcm0gKnJtLCBpbnQgZHJtX2lkKQogewogCWludCBudW1fbG0s IG51bV9wcDsKIAogCS8qIFJlbGVhc2UgTE0gYmxvY2tzICovCi0JbnVtX2xtID0gX2RwdV9ybV9y ZWxlYXNlX2h3X2JsayhybSwgc3RhdGUsIERQVV9IV19CTEtfTE0pOworCW51bV9sbSA9IF9kcHVf cm1fcmVsZWFzZV9od19ibGsocm0sIGRybV9pZCwgRFBVX0hXX0JMS19MTSk7CiAKIAkvKiBSbGVh c2UgcGluZyBwb25nIGJsb2NrcyAqLwotCW51bV9wcCA9IF9kcHVfcm1fcmVsZWFzZV9od19ibGso cm0sIHN0YXRlLCBEUFVfSFdfQkxLX1BJTkdQT05HKTsKKwludW1fcHAgPSBfZHB1X3JtX3JlbGVh c2VfaHdfYmxrKHJtLCBkcm1faWQsIERQVV9IV19CTEtfUElOR1BPTkcpOwogCWlmIChudW1fcHAg IT0gbnVtX2xtKSB7CiAJCURQVV9FUlJPUigibG0gY2hhaW4gY291bnQgbWlzbWF0Y2ggbG06ICVk IHBwOiVkXG4iLAogCQkJCW51bV9sbSwgbnVtX3BwKTsKQEAgLTYzOSwyNiArNjUyLDI4IEBAIGlu dCBkcHVfcm1fcmVzZXJ2ZV9jcnRjX3JlcyhzdHJ1Y3QgZHB1X3JtICpybSwgc3RydWN0IGRwdV9j cnRjX3N0YXRlICpzdGF0ZSwKIGludCBkcHVfcm1fcmVsZWFzZV9jcnRjX3JlcyhzdHJ1Y3QgZHB1 X3JtICpybSwgc3RydWN0IGRwdV9jcnRjX3N0YXRlICpzdGF0ZSkKIHsKIAlpbnQgcmMgPSAwLCBu dW1fcmVsZWFzZWQ7CisJaW50IGRybV9pZCA9IGdldF9jcnRjX2lkKHN0YXRlKTsKIAogCW11dGV4 X2xvY2soJnJtLT5ybV9sb2NrKTsKIAotCW51bV9yZWxlYXNlZCA9IF9kcHVfcm1fcmVsZWFzZV9s bXMocm0sIHN0YXRlKTsKKwludW1fcmVsZWFzZWQgPSBfZHB1X3JtX3JlbGVhc2VfbG1zKHJtLCBk cm1faWQpOwogCWlmIChudW1fcmVsZWFzZWQgIT0gc3RhdGUtPm51bV9taXhlcnMpIHsKIAkJRFBV X0VSUk9SKAogCQkibG0gcmVsZWFzZSBjb3VudCBkb2Vzbid0IG1hdGNoIGZvciBjcnRjOiAlZCAo JWQgIT0gJWQpXG4iLAotCQkJZ2V0X2NydGNfaWQoc3RhdGUpLCBudW1fcmVsZWFzZWQsIHN0YXRl LT5udW1fbWl4ZXJzKTsKKwkJCWRybV9pZCwgbnVtX3JlbGVhc2VkLCBzdGF0ZS0+bnVtX21peGVy cyk7CiAJCXJjID0gLUVJTlZBTDsKIAkJZ290byByZWxlYXNlX2RvbmU7CiAJfQogCi0JbnVtX3Jl bGVhc2VkID0gX2RwdV9ybV9yZWxlYXNlX2h3X2JsayhybSwgc3RhdGUsIERQVV9IV19CTEtfQ1RM KTsKKwludW1fcmVsZWFzZWQgPSBfZHB1X3JtX3JlbGVhc2VfaHdfYmxrKHJtLCBkcm1faWQsIERQ VV9IV19CTEtfQ1RMKTsKIAlpZiAobnVtX3JlbGVhc2VkICE9IHN0YXRlLT5udW1fY3Rscykgewog CQlEUFVfRVJST1IoCiAJCSJsbSByZWxlYXNlIGNvdW50IGRvZXNuJ3QgbWF0Y2ggZm9yIGNydGM6 ICVkICglZCAhPSAlZClcbiIsCi0JCQlnZXRfY3J0Y19pZChzdGF0ZSksIG51bV9yZWxlYXNlZCwg c3RhdGUtPm51bV9jdGxzKTsKKwkJCWRybV9pZCwgbnVtX3JlbGVhc2VkLCBzdGF0ZS0+bnVtX2N0 bHMpOwogCQlyYyA9IC1FSU5WQUw7CiAJCWdvdG8gcmVsZWFzZV9kb25lOwogCX0KKwogIHJlbGVh c2VfZG9uZToKIAltdXRleF91bmxvY2soJnJtLT5ybV9sb2NrKTsKIApAQCAtNjkyLDE0ICs3MDcs MTUgQEAgaW50IGRwdV9ybV9yZWxlYXNlX2VuY29kZXJfcmVzKHN0cnVjdCBkcHVfcm0gKnJtLCBz dHJ1Y3QgZHB1X2NydGNfc3RhdGUgKnN0YXRlKQogewogCWludCBudW1fcmVsZWFzZWQ7CiAJaW50 IHJjID0gMDsKKwlpbnQgZHJtX2lkID0gZ2V0X2NydGNfaWQoc3RhdGUpOwogCiAJbXV0ZXhfbG9j aygmcm0tPnJtX2xvY2spOwogCi0JbnVtX3JlbGVhc2VkID0gX2RwdV9ybV9yZWxlYXNlX2h3X2Js ayhybSwgc3RhdGUsIERQVV9IV19CTEtfSU5URik7CisJbnVtX3JlbGVhc2VkID0gX2RwdV9ybV9y ZWxlYXNlX2h3X2JsayhybSwgZHJtX2lkLCBEUFVfSFdfQkxLX0lOVEYpOwogCWlmIChudW1fcmVs ZWFzZWQgIT0gc3RhdGUtPm51bV9pbnRmcykgewogCQlEUFVfRVJST1IoCiAJCSJpbnRmIHJlbGVh c2UgY291bnQgZG9lc24ndCBtYXRjaCBmb3IgY3J0YzogJWQgKCVkICE9ICVkKVxuIiwKLQkJCWdl dF9jcnRjX2lkKHN0YXRlKSwgbnVtX3JlbGVhc2VkLCBzdGF0ZS0+bnVtX2ludGZzKTsKKwkJCWRy bV9pZCwgbnVtX3JlbGVhc2VkLCBzdGF0ZS0+bnVtX2ludGZzKTsKIAkJcmMgPSAtRUlOVkFMOwog CX0KIApAQCAtNzExLDMgKzcyNywxMTMgQEAgaW50IGRwdV9ybV9yZWxlYXNlX2VuY29kZXJfcmVz KHN0cnVjdCBkcHVfcm0gKnJtLCBzdHJ1Y3QgZHB1X2NydGNfc3RhdGUgKnN0YXRlKQogCXJldHVy biByYzsKIH0KIAorc3RhdGljIGludCBfZHB1X3JtX3Jlc2VydmVfc3NwcChzdHJ1Y3QgZHB1X3Jt ICpybSwKKwkJc3RydWN0IGRwdV9wbGFuZV9zdGF0ZSAqc3RhdGUsIHUzMiBudW1fcGlwZXMsIHUz MiBjYXBzKQoreworCXN0cnVjdCBkcHVfcm1faHdfYmxrICpzc3BwW01BWF9CTE9DS1NdOworCXN0 cnVjdCBkcHVfcm1faHdfaXRlciBpdGVyX2ksIGl0ZXJfajsKKwljb25zdCBzdHJ1Y3QgZHB1X3Nz cHBfY2ZnICpscGlwZV9jZmcsICpycGlwZV9jZmc7CisJaW50IHNzcHBfY291bnQgPSAwLCBpOwor CWludCBkcm1faWQgPSBnZXRfcGxhbmVfaWQoc3RhdGUpOworCWludCAqc3NwcF9kcm1fbWFwID0g cm0tPmh3X2RybV9tYXBbRFBVX0hXX0JMS19TU1BQXTsKKworCWRwdV9ybV9pbml0X2h3X2l0ZXIo Jml0ZXJfaSwgMCwgRFBVX0hXX0JMS19TU1BQKTsKKworCXdoaWxlICgoc3NwcF9jb3VudCAhPSBu dW1fcGlwZXMpICYmCisJCQlfZHB1X3JtX2dldF9od19sb2NrZWQocm0sICZpdGVyX2kpKSB7CisJ CXNzcHBfY291bnQgPSAwOworCisJCS8qIHNraXAgaWYgcGlwZSBoYXMgYmVlbiByZXNlcnZlZCBi eSBkaWZmZXJlbnQgcGxhbmUgKi8KKwkJaWYgKFJFU0VSVkVEX0JZX09USEVSKHNzcHBfZHJtX21h cFtpdGVyX2kuYmxrLT5ybV9pZF0sIGRybV9pZCkpCisJCQljb250aW51ZTsKKworCQkvKiBza2lw IGlmIHBpcGUgZG9lc24ndCBzdXBwb3J0IHRoZSByZXF1aXJlZCBjYXBzICovCisJCWxwaXBlX2Nm ZyA9IHRvX2RwdV9od19waXBlKGl0ZXJfaS5ibGstPmh3KS0+Y2FwOworCQlpZiAoY2FwcyAmIH5s cGlwZV9jZmctPmZlYXR1cmVzKQorCQkJY29udGludWU7CisKKwkJLyogc2tpcCBjdXJzb3IgcGlw ZSBhc3NpZ25tZW50IHRvIG5vbiBjdXJzb3IgcGxhbmUgdHlwZSAqLworCQlpZiAoKGNhcHMgJiBE UFVfU1NQUF9DVVJTT1IpICYmCisJCQkoc3RhdGUtPmJhc2UucGxhbmUpLT50eXBlICE9IERSTV9Q TEFORV9UWVBFX0NVUlNPUikKKwkJCWNvbnRpbnVlOworCisJCXNzcHBbc3NwcF9jb3VudCsrXSA9 IGl0ZXJfaS5ibGs7CisKKwkJLyoqCisJCSAqIEZpbmQgYW5vdGhlciBzc3BwIG9mIHNhbWUgdHlw ZSBhbmQgaG9ub3JpbmcKKwkJICogcHJpb3JpdHkgLSBWSUcwID4gVklHMQorCQkgKi8KKwkJZHB1 X3JtX2luaXRfaHdfaXRlcigmaXRlcl9qLCAwLCBEUFVfSFdfQkxLX1NTUFApOworCisJCXdoaWxl IChzc3BwX2NvdW50ICE9IG51bV9waXBlcyAmJgorCQkJCV9kcHVfcm1fZ2V0X2h3X2xvY2tlZChy bSwgJml0ZXJfaikpIHsKKwkJCWlmICgoaXRlcl9pLmJsayA9PSBpdGVyX2ouYmxrKSB8fCBSRVNF UlZFRF9CWV9PVEhFUigKKwkJCQlzc3BwX2RybV9tYXBbaXRlcl9qLmJsay0+cm1faWRdLCBkcm1f aWQpKQorCQkJCWNvbnRpbnVlOworCisJCQlycGlwZV9jZmcgPSB0b19kcHVfaHdfcGlwZShpdGVy X2ouYmxrLT5odyktPmNhcDsKKwkJCWlmICgocnBpcGVfY2ZnLT5mZWF0dXJlcyAhPSBscGlwZV9j ZmctPmZlYXR1cmVzKQorCQkJCXx8IChscGlwZV9jZmctPmlkID4gcnBpcGVfY2ZnLT5pZCkpCisJ CQkJY29udGludWU7CisKKwkJCXNzcHBbc3NwcF9jb3VudCsrXSA9IGl0ZXJfai5ibGs7CisJCQli cmVhazsKKwkJfQorCX0KKworCWlmIChzc3BwX2NvdW50ICE9IG51bV9waXBlcykgeworCQlEUFVf REVCVUcoInVuYWJsZSB0byBmaW5kIGFwcHJvcHJpYXRlIGh3IHBpcGVzXG4iKTsKKwkJcmV0dXJu IC1FTkFWQUlMOworCX0KKworCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKHNzcHApICYmIGkg PCBudW1fcGlwZXM7IGkrKykgeworCQlzc3BwX2RybV9tYXBbc3NwcFtpXS0+cm1faWRdID0gZHJt X2lkOworCisJCXN0YXRlLT5waXBlX2h3W2ldID0gdG9fZHB1X2h3X3BpcGUoc3NwcFtpXS0+aHcp OworCQlEUFVfREVCVUcoIiVkIDogc3NwcCAlZCByZXNlcnZlZCBmb3IgcGxhbmUgaWQgJWRcbiIs CisJCQkJaSwgc3NwcFtpXS0+aWQsIGRybV9pZCk7CisJfQorCisJc3RhdGUtPm51bV9waXBlcyA9 IG51bV9waXBlczsKKwlyZXR1cm4gMDsKK30KKworaW50IGRwdV9ybV9yZXNlcnZlX3BsYW5lX3Jl cyhzdHJ1Y3QgZHB1X3JtICpybSwKKwlzdHJ1Y3QgZHB1X3BsYW5lX3N0YXRlICpzdGF0ZSwgdTMy IG51bV9waXBlcywgdTMyIGNhcHMpCit7CisJaW50IHJjID0gMDsKKworCW11dGV4X2xvY2soJnJt LT5ybV9sb2NrKTsKKworCXJjID0gX2RwdV9ybV9yZXNlcnZlX3NzcHAocm0sIHN0YXRlLCBudW1f cGlwZXMsIGNhcHMpOworCWlmIChyYykKKwkJRFBVX0VSUk9SKCJ1bmFibGUgdG8gYWxsb2NhdGUg JWQgc3NwcCBmb3IgcGxhbmU6ICVkXG4iLAorCQkJCW51bV9waXBlcywgZ2V0X3BsYW5lX2lkKHN0 YXRlKSk7CisKKwltdXRleF91bmxvY2soJnJtLT5ybV9sb2NrKTsKKwlyZXR1cm4gcmM7Cit9CisK K2ludCBkcHVfcm1fcmVsZWFzZV9wbGFuZV9yZXMoc3RydWN0IGRwdV9ybSAqcm0sIHN0cnVjdCBk cHVfcGxhbmVfc3RhdGUgKnN0YXRlKQoreworCWludCBudW1fcmVsZWFzZWQ7CisJaW50IHJjID0g MDsKKwlpbnQgZHJtX2lkID0gZ2V0X3BsYW5lX2lkKHN0YXRlKTsKKworCW11dGV4X2xvY2soJnJt LT5ybV9sb2NrKTsKKworCW51bV9yZWxlYXNlZCA9IF9kcHVfcm1fcmVsZWFzZV9od19ibGsocm0s IGRybV9pZCwgRFBVX0hXX0JMS19TU1BQKTsKKwlpZiAobnVtX3JlbGVhc2VkICE9IHN0YXRlLT5u dW1fcGlwZXMpIHsKKwkJRFBVX0VSUk9SKAorCQkJInNzcHAgcmVsZWFzZSBjb3VudCBkb2Vzbid0 IG1hdGNoIGZvciBwbGFuZTogJWQgKCVkICE9ICVkKVxuIiwKKwkJCQlkcm1faWQsIG51bV9yZWxl YXNlZCwgc3RhdGUtPm51bV9waXBlcyk7CisJCXJjID0gLUVJTlZBTDsKKwl9CisKKwltdXRleF91 bmxvY2soJnJtLT5ybV9sb2NrKTsKKworCXN0YXRlLT5udW1fcGlwZXMgPSAwOworCW1lbXNldCgm c3RhdGUtPnBpcGVfaHcsIDAsIHNpemVvZihzdGF0ZS0+cGlwZV9odykpOworCisJcmV0dXJuIHJj OworfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X3JtLmgg Yi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfcm0uaAppbmRleCBmYTJjZDcwLi5i NDNlMTlhIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfcm0u aAorKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfcm0uaApAQCAtMjAsNiAr MjAsNyBAQAogI2luY2x1ZGUgImRwdV9od190b3AuaCIKICNpbmNsdWRlICJkcHVfY3J0Yy5oIgog I2luY2x1ZGUgImRwdV9lbmNvZGVyLmgiCisjaW5jbHVkZSAiZHB1X3BsYW5lLmgiCiAKIC8qKgog ICogc3RydWN0IGRwdV9ybSAtIERQVSBkeW5hbWljIGhhcmR3YXJlIHJlc291cmNlIG1hbmFnZXIK QEAgLTg2LDYgKzg3LDI1IEBAIGludCBkcHVfcm1faW5pdChzdHJ1Y3QgZHB1X3JtICpybSwKIGlu dCBkcHVfcm1fZGVzdHJveShzdHJ1Y3QgZHB1X3JtICpybSk7CiAKIC8qKgorICogZHB1X3JtX3Jl c2VydmVfcGxhbmVfcmVzIC0gUmVzZXJ2ZSBIVyBibG9ja3MgZm9yIFBMQU5FCisgKiBAcm06IERQ VSBSZXNvdXJjZSBNYW5hZ2VyIGhhbmRsZQorICogQHN0YXRlOiBEUFUgUExBTkUgc3RhdGUgdG8g Y2FjaGUgSFcgYmxvY2sgaGFuZGxlcworICogQG51bV9waXBlczogTnVtYmVyIG9mIHBpcGVzIHRv IGJlIHJlc2VydmVkIGZvciB0aGUgcGxhbmUKKyAqIEBjYXBzOiBSZXNlcnZlIGh3IGJsb2NrcyB3 aXRoIG1hdGNoaW5nIGNhcGFiaWxpdGllcworICogQFJldHVybjogMCBvbiBTdWNjZXNzIG90aGVy d2lzZSAtRVJST1IKKyAqLworaW50IGRwdV9ybV9yZXNlcnZlX3BsYW5lX3JlcyhzdHJ1Y3QgZHB1 X3JtICpybSwgc3RydWN0IGRwdV9wbGFuZV9zdGF0ZSAqc3RhdGUsCisJCQkJdTMyIG51bV9waXBl cywgdTMyIGNhcHMpOworCisvKioKKyAqIGRwdV9ybV9yZWxlYXNlX3BsYW5lX3JlcyAtIFJlbGVh c2UgSFcgYmxvY2tzIG9mIFBMQU5FCisgKiBAcm06IERQVSBSZXNvdXJjZSBNYW5hZ2VyIGhhbmRs ZQorICogQHN0YXRlOiBEUFUgUExBTkUgc3RhdGUgdG8gY2FjaGUgSFcgYmxvY2sgaGFuZGxlcwor ICogQHBsYW5lX2lkOiBSZWxlYXNlIHJlc2VydmF0aW9uIGZvciBnaXZlbiBwbGFuZSBpZAorICov CitpbnQgZHB1X3JtX3JlbGVhc2VfcGxhbmVfcmVzKHN0cnVjdCBkcHVfcm0gKnJtLCBzdHJ1Y3Qg ZHB1X3BsYW5lX3N0YXRlICpzdGF0ZSk7CisKKy8qKgogICogZHB1X3JtX3Jlc2VydmVfY3J0Y19y ZXMgLSBSZXNlcnZlIEhXIGJsb2NrcyBmb3IgQ1JUQwogICogQHJtOiBEUFUgUmVzb3VyY2UgTWFu YWdlciBoYW5kbGUKICAqIEBzdGF0ZTogRFBVIENSVEMgc3RhdGUgdG8gY2FjaGUgSFcgYmxvY2sg aGFuZGxlcwotLSAKVGhlIFF1YWxjb21tIElubm92YXRpb24gQ2VudGVyLCBJbmMuIGlzIGEgbWVt YmVyIG9mIHRoZSBDb2RlIEF1cm9yYSBGb3J1bSwKYSBMaW51eCBGb3VuZGF0aW9uIENvbGxhYm9y YXRpdmUgUHJvamVjdAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KRnJlZWRyZW5vIG1haWxpbmcgbGlzdApGcmVlZHJlbm9AbGlzdHMuZnJlZWRlc2t0b3Au b3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZnJlZWRy ZW5vCg==