From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jeykumar Sankaran Subject: [PATCH v2 1/6] drm/msm/dpu: avoid tracking reservations in RM Date: Fri, 7 Dec 2018 18:38:33 -0800 Message-ID: <1544236718-26900-2-git-send-email-jsanka@codeaurora.org> References: <1544236718-26900-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: <1544236718-26900-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 Uk0gd2FzIGVxdWlwcGVkIHdpdGggcmVzZXJ2YXRpb24gdHJhY2tpbmcgc3RydWN0dXJlIFJTVlAK dG8gY2FjaGUgSFcgcmVzZXJ2YXRpb24gb2YgZGlzcGxheXMgZm9yIGNlcnRhaW4gY2xpZW50cwp3 aGVyZSBhdG9taWNfY2hlY2tzIChhdG9taWMgY29tbWl0IHdpdGggVEVTVF9PTkxZKSBmb3IgYWxs CnRoZSBkaXNwbGF5cyBhcmUgY2FsbGVkIGJlZm9yZSB0aGVpciByZXNwZWN0aXZlIGF0b21pY19j b21taXRzLgpTaW5jZSBEUFUgZG9lc24ndCBzdXBwb3J0IHRoZSBzZXF1ZW5jZSBhbnltb3JlLCBj bGVhbiB1cAp0aGUgc3VwcG9ydCBmcm9tIFJNLiBSZXBsYWNlIHJzdnAgd2l0aCB0aGUgY29ycmVz cG9uZGluZwplbmNvZGVyIGlkIHRvIHRhZyB0aGUgSFcgYmxvY2tzIHJlc2VydmVkLiBJdCBwcmVw YXJlcyBEUFUKdG8gZ2V0IHJpZCBvZiBSTSBhbHRvZ2V0aGVyIGFuZCB0cmFjayByZXNlcnZhdGlv bnMgdXNpbmcKcHJpdmF0ZSBzdGF0ZXMuCgpjaGFuZ2VzIGluIHYyOgoJLSBub25lCgpTaWduZWQt b2ZmLWJ5OiBKZXlrdW1hciBTYW5rYXJhbiA8anNhbmthQGNvZGVhdXJvcmEub3JnPgpSZXZpZXdl ZC1ieTogU2VhbiBQYXVsIDxzZWFucGF1bEBjaHJvbWl1bS5vcmc+Ci0tLQogZHJpdmVycy9ncHUv ZHJtL21zbS9kaXNwL2RwdTEvZHB1X3JtLmMgfCAyODQgKysrKystLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfcm0uaCB8ICAgNCAt CiAyIGZpbGVzIGNoYW5nZWQsIDQzIGluc2VydGlvbnMoKyksIDI0NSBkZWxldGlvbnMoLSkKCmRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfcm0uYyBiL2RyaXZl cnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9ybS5jCmluZGV4IGJkYjExNzcuLjM2YTkyOWIg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9ybS5jCisrKyBi L2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9ybS5jCkBAIC0yMSw4ICsyMSw4IEBA CiAjaW5jbHVkZSAiZHB1X2VuY29kZXIuaCIKICNpbmNsdWRlICJkcHVfdHJhY2UuaCIKIAotI2Rl ZmluZSBSRVNFUlZFRF9CWV9PVEhFUihoLCByKSBcCi0JKChoKS0+cnN2cCAmJiAoKGgpLT5yc3Zw LT5lbmNfaWQgIT0gKHIpLT5lbmNfaWQpKQorI2RlZmluZSBSRVNFUlZFRF9CWV9PVEhFUihoLCBy KSAgXAorCQkoKGgpLT5lbmNfaWQgJiYgKGgpLT5lbmNfaWQgIT0gcikKIAogLyoqCiAgKiBzdHJ1 Y3QgZHB1X3JtX3JlcXVpcmVtZW50cyAtIFJlc2VydmF0aW9uIHJlcXVpcmVtZW50cyBwYXJhbWV0 ZXIgYnVuZGxlCkBAIC0zNCw4NSArMzQsMjMgQEAgc3RydWN0IGRwdV9ybV9yZXF1aXJlbWVudHMg ewogCXN0cnVjdCBkcHVfZW5jb2Rlcl9od19yZXNvdXJjZXMgaHdfcmVzOwogfTsKIAotLyoqCi0g KiBzdHJ1Y3QgZHB1X3JtX3JzdnAgLSBVc2UgQ2FzZSBSZXNlcnZhdGlvbiB0YWdnaW5nIHN0cnVj dHVyZQotICoJVXNlZCB0byB0YWcgSFcgYmxvY2tzIGFzIHJlc2VydmVkIGJ5IGEgQ1JUQy0+RW5j b2Rlci0+Q29ubmVjdG9yIGNoYWluCi0gKglCeSB1c2luZyBhcyBhIHRhZywgcmF0aGVyIHRoYW4g bGlzdHMgb2YgcG9pbnRlcnMgdG8gSFcgYmxvY2tzIHVzZWQKLSAqCXdlIGNhbiBhdm9pZCBzb21l IGxpc3QgbWFuYWdlbWVudCBzaW5jZSB3ZSBkb24ndCBrbm93IGhvdyBtYW55IGJsb2NrcwotICoJ b2YgZWFjaCB0eXBlIGEgZ2l2ZW4gdXNlIGNhc2UgbWF5IHJlcXVpcmUuCi0gKiBAbGlzdDoJTGlz dCBoZWFkIGZvciBsaXN0IG9mIGFsbCByZXNlcnZhdGlvbnMKLSAqIEBzZXE6CUdsb2JhbCBSU1ZQ IHNlcXVlbmNlIG51bWJlciBmb3IgZGVidWdnaW5nLCBlc3BlY2lhbGx5IGZvcgotICoJCWRpZmZl cmVudGlhdGluZyBkaWZmZXJlbmN0IGFsbG9jYXRpb25zIGZvciBzYW1lIGVuY29kZXIuCi0gKiBA ZW5jX2lkOglSZXNlcnZhdGlvbnMgYXJlIHRyYWNrZWQgYnkgRW5jb2RlciBEUk0gb2JqZWN0IElE LgotICoJCUNSVENzIG1heSBiZSBjb25uZWN0ZWQgdG8gbXVsdGlwbGUgRW5jb2RlcnMuCi0gKgkJ QW4gZW5jb2RlciBvciBjb25uZWN0b3IgaWQgaWRlbnRpZmllcyB0aGUgZGlzcGxheSBwYXRoLgot ICovCi1zdHJ1Y3QgZHB1X3JtX3JzdnAgewotCXN0cnVjdCBsaXN0X2hlYWQgbGlzdDsKLQl1aW50 MzJfdCBzZXE7Ci0JdWludDMyX3QgZW5jX2lkOwotfTsKIAogLyoqCiAgKiBzdHJ1Y3QgZHB1X3Jt X2h3X2JsayAtIGhhcmR3YXJlIGJsb2NrIHRyYWNraW5nIGxpc3QgbWVtYmVyCiAgKiBAbGlzdDoJ TGlzdCBoZWFkIGZvciBsaXN0IG9mIGFsbCBoYXJkd2FyZSBibG9ja3MgdHJhY2tpbmcgaXRlbXMK LSAqIEByc3ZwOglQb2ludGVyIHRvIHVzZSBjYXNlIHJlc2VydmF0aW9uIGlmIHJlc2VydmVkIGJ5 IGEgY2xpZW50Ci0gKiBAcnN2cF9ueHQ6CVRlbXBvcmFyeSBwb2ludGVyIHVzZWQgZHVyaW5nIHJl c2VydmF0aW9uIHRvIHRoZSBpbmNvbWluZwotICoJCXJlcXVlc3QuIFdpbGwgYmUgc3dhcHBlZCBp bnRvIHJzdnAgaWYgcHJvcG9zYWwgaXMgYWNjZXB0ZWQKICAqIEB0eXBlOglUeXBlIG9mIGhhcmR3 YXJlIGJsb2NrIHRoaXMgc3RydWN0dXJlIHRyYWNrcwogICogQGlkOgkJSGFyZHdhcmUgSUQgbnVt YmVyLCB3aXRoaW4gaXQncyBvd24gc3BhY2UsIGllLiBMTV9YCi0gKiBAY2F0YWxvZzoJUG9pbnRl ciB0byB0aGUgaGFyZHdhcmUgY2F0YWxvZyBlbnRyeSBmb3IgdGhpcyBibG9jaworICogQGVuY19p ZDoJRW5jb2RlciBpZCB0byB3aGljaCB0aGlzIGJsayBpcyBiaW5kZWQKICAqIEBodzoJCVBvaW50 ZXIgdG8gdGhlIGhhcmR3YXJlIHJlZ2lzdGVyIGFjY2VzcyBvYmplY3QgZm9yIHRoaXMgYmxvY2sK ICAqLwogc3RydWN0IGRwdV9ybV9od19ibGsgewogCXN0cnVjdCBsaXN0X2hlYWQgbGlzdDsKLQlz dHJ1Y3QgZHB1X3JtX3JzdnAgKnJzdnA7Ci0Jc3RydWN0IGRwdV9ybV9yc3ZwICpyc3ZwX254dDsK IAllbnVtIGRwdV9od19ibGtfdHlwZSB0eXBlOwogCXVpbnQzMl90IGlkOworCXVpbnQzMl90IGVu Y19pZDsKIAlzdHJ1Y3QgZHB1X2h3X2JsayAqaHc7CiB9OwogCi0vKioKLSAqIGRwdV9ybV9kYmdf cnN2cF9zdGFnZSAtIGVudW0gb2Ygc3RlcHMgaW4gbWFraW5nIHJlc2VydmF0aW9uIGZvciBldmVu dCBsb2dnaW5nCi0gKi8KLWVudW0gZHB1X3JtX2RiZ19yc3ZwX3N0YWdlIHsKLQlEUFVfUk1fU1RB R0VfQkVHSU4sCi0JRFBVX1JNX1NUQUdFX0FGVEVSX0NMRUFSLAotCURQVV9STV9TVEFHRV9BRlRF Ul9SU1ZQTkVYVCwKLQlEUFVfUk1fU1RBR0VfRklOQUwKLX07Ci0KLXN0YXRpYyB2b2lkIF9kcHVf cm1fcHJpbnRfcnN2cHMoCi0JCXN0cnVjdCBkcHVfcm0gKnJtLAotCQllbnVtIGRwdV9ybV9kYmdf cnN2cF9zdGFnZSBzdGFnZSkKLXsKLQlzdHJ1Y3QgZHB1X3JtX3JzdnAgKnJzdnA7Ci0Jc3RydWN0 IGRwdV9ybV9od19ibGsgKmJsazsKLQllbnVtIGRwdV9od19ibGtfdHlwZSB0eXBlOwotCi0JRFBV X0RFQlVHKCIlZFxuIiwgc3RhZ2UpOwotCi0JbGlzdF9mb3JfZWFjaF9lbnRyeShyc3ZwLCAmcm0t PnJzdnBzLCBsaXN0KSB7Ci0JCURSTV9ERUJVR19LTVMoIiVkIHJzdnBbcyV1ZSV1XVxuIiwgc3Rh Z2UsIHJzdnAtPnNlcSwKLQkJCSAgICAgIHJzdnAtPmVuY19pZCk7Ci0JfQotCi0JZm9yICh0eXBl ID0gMDsgdHlwZSA8IERQVV9IV19CTEtfTUFYOyB0eXBlKyspIHsKLQkJbGlzdF9mb3JfZWFjaF9l bnRyeShibGssICZybS0+aHdfYmxrc1t0eXBlXSwgbGlzdCkgewotCQkJaWYgKCFibGstPnJzdnAg JiYgIWJsay0+cnN2cF9ueHQpCi0JCQkJY29udGludWU7Ci0KLQkJCURSTV9ERUJVR19LTVMoIiVk IHJzdnBbcyV1ZSV1LT5zJXVlJXVdICVkICVkXG4iLCBzdGFnZSwKLQkJCQkoYmxrLT5yc3ZwKSA/ IGJsay0+cnN2cC0+c2VxIDogMCwKLQkJCQkoYmxrLT5yc3ZwKSA/IGJsay0+cnN2cC0+ZW5jX2lk IDogMCwKLQkJCQkoYmxrLT5yc3ZwX254dCkgPyBibGstPnJzdnBfbnh0LT5zZXEgOiAwLAotCQkJ CShibGstPnJzdnBfbnh0KSA/IGJsay0+cnN2cF9ueHQtPmVuY19pZCA6IDAsCi0JCQkJYmxrLT50 eXBlLCBibGstPmlkKTsKLQkJfQotCX0KLX0KLQogc3RydWN0IGRwdV9od19tZHAgKmRwdV9ybV9n ZXRfbWRwKHN0cnVjdCBkcHVfcm0gKnJtKQogewogCXJldHVybiBybS0+aHdfbWRwOwpAQCAtMTQ4 LDE1ICs4NiwxMyBAQCBzdGF0aWMgYm9vbCBfZHB1X3JtX2dldF9od19sb2NrZWQoc3RydWN0IGRw dV9ybSAqcm0sIHN0cnVjdCBkcHVfcm1faHdfaXRlciAqaSkKIAlpLT5ibGsgPSBsaXN0X3ByZXBh cmVfZW50cnkoaS0+YmxrLCBibGtfbGlzdCwgbGlzdCk7CiAKIAlsaXN0X2Zvcl9lYWNoX2VudHJ5 X2NvbnRpbnVlKGktPmJsaywgYmxrX2xpc3QsIGxpc3QpIHsKLQkJc3RydWN0IGRwdV9ybV9yc3Zw ICpyc3ZwID0gaS0+YmxrLT5yc3ZwOwotCiAJCWlmIChpLT5ibGstPnR5cGUgIT0gaS0+dHlwZSkg ewogCQkJRFBVX0VSUk9SKCJmb3VuZCBpbmNvcnJlY3QgYmxvY2sgdHlwZSAlZCBvbiAlZCBsaXN0 XG4iLAogCQkJCQlpLT5ibGstPnR5cGUsIGktPnR5cGUpOwogCQkJcmV0dXJuIGZhbHNlOwogCQl9 CiAKLQkJaWYgKChpLT5lbmNfaWQgPT0gMCkgfHwgKHJzdnAgJiYgcnN2cC0+ZW5jX2lkID09IGkt PmVuY19pZCkpIHsKKwkJaWYgKGktPmVuY19pZCA9PSBpLT5ibGstPmVuY19pZCkgewogCQkJaS0+ aHcgPSBpLT5ibGstPmh3OwogCQkJRFBVX0RFQlVHKCJmb3VuZCB0eXBlICVkIGlkICVkIGZvciBl bmMgJWRcbiIsCiAJCQkJCWktPnR5cGUsIGktPmJsay0+aWQsIGktPmVuY19pZCk7CkBAIC0yMDgs MjIgKzE0NCw5IEBAIHN0YXRpYyB2b2lkIF9kcHVfcm1faHdfZGVzdHJveShlbnVtIGRwdV9od19i bGtfdHlwZSB0eXBlLCB2b2lkICpodykKIAogaW50IGRwdV9ybV9kZXN0cm95KHN0cnVjdCBkcHVf cm0gKnJtKQogewotCi0Jc3RydWN0IGRwdV9ybV9yc3ZwICpyc3ZwX2N1ciwgKnJzdnBfbnh0Owog CXN0cnVjdCBkcHVfcm1faHdfYmxrICpod19jdXIsICpod19ueHQ7CiAJZW51bSBkcHVfaHdfYmxr X3R5cGUgdHlwZTsKIAotCWlmICghcm0pIHsKLQkJRFBVX0VSUk9SKCJpbnZhbGlkIHJtXG4iKTsK LQkJcmV0dXJuIC1FSU5WQUw7Ci0JfQotCi0JbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHJzdnBf Y3VyLCByc3ZwX254dCwgJnJtLT5yc3ZwcywgbGlzdCkgewotCQlsaXN0X2RlbCgmcnN2cF9jdXIt Pmxpc3QpOwotCQlrZnJlZShyc3ZwX2N1cik7Ci0JfQotCi0KIAlmb3IgKHR5cGUgPSAwOyB0eXBl IDwgRFBVX0hXX0JMS19NQVg7IHR5cGUrKykgewogCQlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUo aHdfY3VyLCBod19ueHQsICZybS0+aHdfYmxrc1t0eXBlXSwKIAkJCQlsaXN0KSB7CkBAIC0yOTMs NiArMjE2LDcgQEAgc3RhdGljIGludCBfZHB1X3JtX2h3X2Jsa19jcmVhdGUoCiAJYmxrLT50eXBl ID0gdHlwZTsKIAlibGstPmlkID0gaWQ7CiAJYmxrLT5odyA9IGh3OworCWJsay0+ZW5jX2lkID0g MDsKIAlsaXN0X2FkZF90YWlsKCZibGstPmxpc3QsICZybS0+aHdfYmxrc1t0eXBlXSk7CiAKIAly ZXR1cm4gMDsKQEAgLTMxNiw3ICsyNDAsNiBAQCBpbnQgZHB1X3JtX2luaXQoc3RydWN0IGRwdV9y bSAqcm0sCiAKIAltdXRleF9pbml0KCZybS0+cm1fbG9jayk7CiAKLQlJTklUX0xJU1RfSEVBRCgm cm0tPnJzdnBzKTsKIAlmb3IgKHR5cGUgPSAwOyB0eXBlIDwgRFBVX0hXX0JMS19NQVg7IHR5cGUr KykKIAkJSU5JVF9MSVNUX0hFQUQoJnJtLT5od19ibGtzW3R5cGVdKTsKIApAQCAtNDEwLDcgKzMz Myw3IEBAIHN0YXRpYyBib29sIF9kcHVfcm1fbmVlZHNfc3BsaXRfZGlzcGxheShjb25zdCBzdHJ1 Y3QgbXNtX2Rpc3BsYXlfdG9wb2xvZ3kgKnRvcCkKICAqCXByb3Bvc2VkIHVzZSBjYXNlIHJlcXVp cmVtZW50cywgaW5jbC4gaGFyZHdpcmVkIGRlcGVuZGVudCBibG9ja3MgbGlrZQogICoJcGluZ3Bv bmcKICAqIEBybTogZHB1IHJlc291cmNlIG1hbmFnZXIgaGFuZGxlCi0gKiBAcnN2cDogcmVzZXJ2 YXRpb24gY3VycmVudGx5IGJlaW5nIGNyZWF0ZWQKKyAqIEBlbmNfaWQ6IGVuY29kZXIgaWQgcmVx dWVzdGluZyBmb3IgYWxsb2NhdGlvbgogICogQHJlcXM6IHByb3Bvc2VkIHVzZSBjYXNlIHJlcXVp cmVtZW50cwogICogQGxtOiBwcm9wb3NlZCBsYXllciBtaXhlciwgZnVuY3Rpb24gY2hlY2tzIGlm IGxtLCBhbmQgYWxsIG90aGVyIGhhcmR3aXJlZAogICogICAgICBibG9ja3MgY29ubmVjdGVkIHRv IHRoZSBsbSAocHApIGlzIGF2YWlsYWJsZSBhbmQgYXBwcm9wcmlhdGUKQEAgLTQyMiw3ICszNDUs NyBAQCBzdGF0aWMgYm9vbCBfZHB1X3JtX25lZWRzX3NwbGl0X2Rpc3BsYXkoY29uc3Qgc3RydWN0 IG1zbV9kaXNwbGF5X3RvcG9sb2d5ICp0b3ApCiAgKi8KIHN0YXRpYyBib29sIF9kcHVfcm1fY2hl Y2tfbG1fYW5kX2dldF9jb25uZWN0ZWRfYmxrcygKIAkJc3RydWN0IGRwdV9ybSAqcm0sCi0JCXN0 cnVjdCBkcHVfcm1fcnN2cCAqcnN2cCwKKwkJdWludDMyX3QgZW5jX2lkLAogCQlzdHJ1Y3QgZHB1 X3JtX3JlcXVpcmVtZW50cyAqcmVxcywKIAkJc3RydWN0IGRwdV9ybV9od19ibGsgKmxtLAogCQlz dHJ1Y3QgZHB1X3JtX2h3X2JsayAqKnBwLApAQCAtNDQ5LDcgKzM3Miw3IEBAIHN0YXRpYyBib29s IF9kcHVfcm1fY2hlY2tfbG1fYW5kX2dldF9jb25uZWN0ZWRfYmxrcygKIAl9CiAKIAkvKiBBbHJl YWR5IHJlc2VydmVkPyAqLwotCWlmIChSRVNFUlZFRF9CWV9PVEhFUihsbSwgcnN2cCkpIHsKKwlp ZiAoUkVTRVJWRURfQllfT1RIRVIobG0sIGVuY19pZCkpIHsKIAkJRFBVX0RFQlVHKCJsbSAlZCBh bHJlYWR5IHJlc2VydmVkXG4iLCBsbV9jZmctPmlkKTsKIAkJcmV0dXJuIGZhbHNlOwogCX0KQEAg LTQ2Nyw3ICszOTAsNyBAQCBzdGF0aWMgYm9vbCBfZHB1X3JtX2NoZWNrX2xtX2FuZF9nZXRfY29u bmVjdGVkX2Jsa3MoCiAJCXJldHVybiBmYWxzZTsKIAl9CiAKLQlpZiAoUkVTRVJWRURfQllfT1RI RVIoKnBwLCByc3ZwKSkgeworCWlmIChSRVNFUlZFRF9CWV9PVEhFUigqcHAsIGVuY19pZCkpIHsK IAkJRFBVX0RFQlVHKCJsbSAlZCBwcCAlZCBhbHJlYWR5IHJlc2VydmVkXG4iLCBsbS0+aWQsCiAJ CQkJKCpwcCktPmlkKTsKIAkJcmV0dXJuIGZhbHNlOwpAQCAtNDc2LDEwICszOTksOCBAQCBzdGF0 aWMgYm9vbCBfZHB1X3JtX2NoZWNrX2xtX2FuZF9nZXRfY29ubmVjdGVkX2Jsa3MoCiAJcmV0dXJu IHRydWU7CiB9CiAKLXN0YXRpYyBpbnQgX2RwdV9ybV9yZXNlcnZlX2xtcygKLQkJc3RydWN0IGRw dV9ybSAqcm0sCi0JCXN0cnVjdCBkcHVfcm1fcnN2cCAqcnN2cCwKLQkJc3RydWN0IGRwdV9ybV9y ZXF1aXJlbWVudHMgKnJlcXMpCitzdGF0aWMgaW50IF9kcHVfcm1fcmVzZXJ2ZV9sbXMoc3RydWN0 IGRwdV9ybSAqcm0sIHVpbnQzMl90IGVuY19pZCwKKwkJCSAgICAgICBzdHJ1Y3QgZHB1X3JtX3Jl cXVpcmVtZW50cyAqcmVxcykKIAogewogCXN0cnVjdCBkcHVfcm1faHdfYmxrICpsbVtNQVhfQkxP Q0tTXTsKQEAgLTUwNCw3ICs0MjUsNyBAQCBzdGF0aWMgaW50IF9kcHVfcm1fcmVzZXJ2ZV9sbXMo CiAJCWxtW2xtX2NvdW50XSA9IGl0ZXJfaS5ibGs7CiAKIAkJaWYgKCFfZHB1X3JtX2NoZWNrX2xt X2FuZF9nZXRfY29ubmVjdGVkX2Jsa3MoCi0JCQkJcm0sIHJzdnAsIHJlcXMsIGxtW2xtX2NvdW50 XSwKKwkJCQlybSwgZW5jX2lkLCByZXFzLCBsbVtsbV9jb3VudF0sCiAJCQkJJnBwW2xtX2NvdW50 XSwgTlVMTCkpCiAJCQljb250aW51ZTsKIApAQCAtNTE5LDcgKzQ0MCw3IEBAIHN0YXRpYyBpbnQg X2RwdV9ybV9yZXNlcnZlX2xtcygKIAkJCQljb250aW51ZTsKIAogCQkJaWYgKCFfZHB1X3JtX2No ZWNrX2xtX2FuZF9nZXRfY29ubmVjdGVkX2Jsa3MoCi0JCQkJCXJtLCByc3ZwLCByZXFzLCBpdGVy X2ouYmxrLAorCQkJCQlybSwgZW5jX2lkLCByZXFzLCBpdGVyX2ouYmxrLAogCQkJCQkmcHBbbG1f Y291bnRdLCBpdGVyX2kuYmxrKSkKIAkJCQljb250aW51ZTsKIApAQCAtNTM3LDEwICs0NTgsMTAg QEAgc3RhdGljIGludCBfZHB1X3JtX3Jlc2VydmVfbG1zKAogCQlpZiAoIWxtW2ldKQogCQkJYnJl YWs7CiAKLQkJbG1baV0tPnJzdnBfbnh0ID0gcnN2cDsKLQkJcHBbaV0tPnJzdnBfbnh0ID0gcnN2 cDsKKwkJbG1baV0tPmVuY19pZCA9IGVuY19pZDsKKwkJcHBbaV0tPmVuY19pZCA9IGVuY19pZDsK IAotCQl0cmFjZV9kcHVfcm1fcmVzZXJ2ZV9sbXMobG1baV0tPmlkLCBsbVtpXS0+dHlwZSwgcnN2 cC0+ZW5jX2lkLAorCQl0cmFjZV9kcHVfcm1fcmVzZXJ2ZV9sbXMobG1baV0tPmlkLCBsbVtpXS0+ dHlwZSwgZW5jX2lkLAogCQkJCQkgcHBbaV0tPmlkKTsKIAl9CiAKQEAgLTU0OSw3ICs0NzAsNyBA QCBzdGF0aWMgaW50IF9kcHVfcm1fcmVzZXJ2ZV9sbXMoCiAKIHN0YXRpYyBpbnQgX2RwdV9ybV9y ZXNlcnZlX2N0bHMoCiAJCXN0cnVjdCBkcHVfcm0gKnJtLAotCQlzdHJ1Y3QgZHB1X3JtX3JzdnAg KnJzdnAsCisJCXVpbnQzMl90IGVuY19pZCwKIAkJY29uc3Qgc3RydWN0IG1zbV9kaXNwbGF5X3Rv cG9sb2d5ICp0b3ApCiB7CiAJc3RydWN0IGRwdV9ybV9od19ibGsgKmN0bHNbTUFYX0JMT0NLU107 CkBAIC01NzAsNyArNDkxLDcgQEAgc3RhdGljIGludCBfZHB1X3JtX3Jlc2VydmVfY3RscygKIAkJ dW5zaWduZWQgbG9uZyBmZWF0dXJlcyA9IGN0bC0+Y2Fwcy0+ZmVhdHVyZXM7CiAJCWJvb2wgaGFz X3NwbGl0X2Rpc3BsYXk7CiAKLQkJaWYgKFJFU0VSVkVEX0JZX09USEVSKGl0ZXIuYmxrLCByc3Zw KSkKKwkJaWYgKFJFU0VSVkVEX0JZX09USEVSKGl0ZXIuYmxrLCBlbmNfaWQpKQogCQkJY29udGlu dWU7CiAKIAkJaGFzX3NwbGl0X2Rpc3BsYXkgPSBCSVQoRFBVX0NUTF9TUExJVF9ESVNQTEFZKSAm IGZlYXR1cmVzOwpAQCAtNTkxLDkgKzUxMiw5IEBAIHN0YXRpYyBpbnQgX2RwdV9ybV9yZXNlcnZl X2N0bHMoCiAJCXJldHVybiAtRU5BVkFJTDsKIAogCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpF KGN0bHMpICYmIGkgPCBudW1fY3RsczsgaSsrKSB7Ci0JCWN0bHNbaV0tPnJzdnBfbnh0ID0gcnN2 cDsKKwkJY3Rsc1tpXS0+ZW5jX2lkID0gZW5jX2lkOwogCQl0cmFjZV9kcHVfcm1fcmVzZXJ2ZV9j dGxzKGN0bHNbaV0tPmlkLCBjdGxzW2ldLT50eXBlLAotCQkJCQkgIHJzdnAtPmVuY19pZCk7CisJ CQkJCSAgZW5jX2lkKTsKIAl9CiAKIAlyZXR1cm4gMDsKQEAgLTYwMSw3ICs1MjIsNyBAQCBzdGF0 aWMgaW50IF9kcHVfcm1fcmVzZXJ2ZV9jdGxzKAogCiBzdGF0aWMgaW50IF9kcHVfcm1fcmVzZXJ2 ZV9pbnRmKAogCQlzdHJ1Y3QgZHB1X3JtICpybSwKLQkJc3RydWN0IGRwdV9ybV9yc3ZwICpyc3Zw LAorCQl1aW50MzJfdCBlbmNfaWQsCiAJCXVpbnQzMl90IGlkLAogCQllbnVtIGRwdV9od19ibGtf dHlwZSB0eXBlKQogewpAQCAtNjE0LDE0ICs1MzUsMTQgQEAgc3RhdGljIGludCBfZHB1X3JtX3Jl c2VydmVfaW50ZigKIAkJaWYgKGl0ZXIuYmxrLT5pZCAhPSBpZCkKIAkJCWNvbnRpbnVlOwogCi0J CWlmIChSRVNFUlZFRF9CWV9PVEhFUihpdGVyLmJsaywgcnN2cCkpIHsKKwkJaWYgKFJFU0VSVkVE X0JZX09USEVSKGl0ZXIuYmxrLCBlbmNfaWQpKSB7CiAJCQlEUFVfRVJST1IoInR5cGUgJWQgaWQg JWQgYWxyZWFkeSByZXNlcnZlZFxuIiwgdHlwZSwgaWQpOwogCQkJcmV0dXJuIC1FTkFWQUlMOwog CQl9CiAKLQkJaXRlci5ibGstPnJzdnBfbnh0ID0gcnN2cDsKKwkJaXRlci5ibGstPmVuY19pZCA9 IGVuY19pZDsKIAkJdHJhY2VfZHB1X3JtX3Jlc2VydmVfaW50ZihpdGVyLmJsay0+aWQsIGl0ZXIu YmxrLT50eXBlLAotCQkJCQkgIHJzdnAtPmVuY19pZCk7CisJCQkJCSAgZW5jX2lkKTsKIAkJYnJl YWs7CiAJfQogCkBAIC02MzYsNyArNTU3LDcgQEAgc3RhdGljIGludCBfZHB1X3JtX3Jlc2VydmVf aW50ZigKIAogc3RhdGljIGludCBfZHB1X3JtX3Jlc2VydmVfaW50Zl9yZWxhdGVkX2h3KAogCQlz dHJ1Y3QgZHB1X3JtICpybSwKLQkJc3RydWN0IGRwdV9ybV9yc3ZwICpyc3ZwLAorCQl1aW50MzJf dCBlbmNfaWQsCiAJCXN0cnVjdCBkcHVfZW5jb2Rlcl9od19yZXNvdXJjZXMgKmh3X3JlcykKIHsK IAlpbnQgaSwgcmV0ID0gMDsKQEAgLTY0Niw3ICs1NjcsNyBAQCBzdGF0aWMgaW50IF9kcHVfcm1f cmVzZXJ2ZV9pbnRmX3JlbGF0ZWRfaHcoCiAJCWlmIChod19yZXMtPmludGZzW2ldID09IElOVEZf TU9ERV9OT05FKQogCQkJY29udGludWU7CiAJCWlkID0gaSArIElOVEZfMDsKLQkJcmV0ID0gX2Rw dV9ybV9yZXNlcnZlX2ludGYocm0sIHJzdnAsIGlkLAorCQlyZXQgPSBfZHB1X3JtX3Jlc2VydmVf aW50ZihybSwgZW5jX2lkLCBpZCwKIAkJCQlEUFVfSFdfQkxLX0lOVEYpOwogCQlpZiAocmV0KQog CQkJcmV0dXJuIHJldDsKQEAgLTY1NSwzMyArNTc2LDI3IEBAIHN0YXRpYyBpbnQgX2RwdV9ybV9y ZXNlcnZlX2ludGZfcmVsYXRlZF9odygKIAlyZXR1cm4gcmV0OwogfQogCi1zdGF0aWMgaW50IF9k cHVfcm1fbWFrZV9uZXh0X3JzdnAoCitzdGF0aWMgaW50IF9kcHVfcm1fbWFrZV9yZXNlcnZhdGlv bigKIAkJc3RydWN0IGRwdV9ybSAqcm0sCiAJCXN0cnVjdCBkcm1fZW5jb2RlciAqZW5jLAogCQlz dHJ1Y3QgZHJtX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCi0JCXN0cnVjdCBkcHVfcm1fcnN2cCAq cnN2cCwKIAkJc3RydWN0IGRwdV9ybV9yZXF1aXJlbWVudHMgKnJlcXMpCiB7CiAJaW50IHJldDsK IAotCS8qIENyZWF0ZSByZXNlcnZhdGlvbiBpbmZvLCB0YWcgcmVzZXJ2ZWQgYmxvY2tzIHdpdGgg aXQgYXMgd2UgZ28gKi8KLQlyc3ZwLT5zZXEgPSArK3JtLT5yc3ZwX25leHRfc2VxOwotCXJzdnAt PmVuY19pZCA9IGVuYy0+YmFzZS5pZDsKLQlsaXN0X2FkZF90YWlsKCZyc3ZwLT5saXN0LCAmcm0t PnJzdnBzKTsKLQotCXJldCA9IF9kcHVfcm1fcmVzZXJ2ZV9sbXMocm0sIHJzdnAsIHJlcXMpOwor CXJldCA9IF9kcHVfcm1fcmVzZXJ2ZV9sbXMocm0sIGVuYy0+YmFzZS5pZCwgcmVxcyk7CiAJaWYg KHJldCkgewogCQlEUFVfRVJST1IoInVuYWJsZSB0byBmaW5kIGFwcHJvcHJpYXRlIG1peGVyc1xu Iik7CiAJCXJldHVybiByZXQ7CiAJfQogCi0JcmV0ID0gX2RwdV9ybV9yZXNlcnZlX2N0bHMocm0s IHJzdnAsICZyZXFzLT50b3BvbG9neSk7CisJcmV0ID0gX2RwdV9ybV9yZXNlcnZlX2N0bHMocm0s IGVuYy0+YmFzZS5pZCwgJnJlcXMtPnRvcG9sb2d5KTsKIAlpZiAocmV0KSB7CiAJCURQVV9FUlJP UigidW5hYmxlIHRvIGZpbmQgYXBwcm9wcmlhdGUgQ1RMXG4iKTsKIAkJcmV0dXJuIHJldDsKIAl9 CiAKLQlyZXQgPSBfZHB1X3JtX3Jlc2VydmVfaW50Zl9yZWxhdGVkX2h3KHJtLCByc3ZwLCAmcmVx cy0+aHdfcmVzKTsKKwlyZXQgPSBfZHB1X3JtX3Jlc2VydmVfaW50Zl9yZWxhdGVkX2h3KHJtLCBl bmMtPmJhc2UuaWQsICZyZXFzLT5od19yZXMpOwogCWlmIChyZXQpCiAJCXJldHVybiByZXQ7CiAK QEAgLTcwNiwxMDggKzYyMSwzMSBAQCBzdGF0aWMgaW50IF9kcHVfcm1fcG9wdWxhdGVfcmVxdWly ZW1lbnRzKAogCXJldHVybiAwOwogfQogCi1zdGF0aWMgc3RydWN0IGRwdV9ybV9yc3ZwICpfZHB1 X3JtX2dldF9yc3ZwKAotCQlzdHJ1Y3QgZHB1X3JtICpybSwKLQkJc3RydWN0IGRybV9lbmNvZGVy ICplbmMpCitzdGF0aWMgdm9pZCBfZHB1X3JtX3JlbGVhc2VfcmVzZXJ2YXRpb24oc3RydWN0IGRw dV9ybSAqcm0sIHVpbnQzMl90IGVuY19pZCkKIHsKLQlzdHJ1Y3QgZHB1X3JtX3JzdnAgKmk7Ci0K LQlpZiAoIXJtIHx8ICFlbmMpIHsKLQkJRFBVX0VSUk9SKCJpbnZhbGlkIHBhcmFtc1xuIik7Ci0J CXJldHVybiBOVUxMOwotCX0KLQotCWlmIChsaXN0X2VtcHR5KCZybS0+cnN2cHMpKQotCQlyZXR1 cm4gTlVMTDsKLQotCWxpc3RfZm9yX2VhY2hfZW50cnkoaSwgJnJtLT5yc3ZwcywgbGlzdCkKLQkJ aWYgKGktPmVuY19pZCA9PSBlbmMtPmJhc2UuaWQpCi0JCQlyZXR1cm4gaTsKLQotCXJldHVybiBO VUxMOwotfQotCi0vKioKLSAqIF9kcHVfcm1fcmVsZWFzZV9yc3ZwIC0gcmVsZWFzZSByZXNvdXJj ZXMgYW5kIHJlbGVhc2UgYSByZXNlcnZhdGlvbgotICogQHJtOglLTVMgaGFuZGxlCi0gKiBAcnN2 cDoJUlNWUCBwb2ludGVyIHRvIHJlbGVhc2UgYW5kIHJlbGVhc2UgcmVzb3VyY2VzIGZvcgotICov Ci1zdGF0aWMgdm9pZCBfZHB1X3JtX3JlbGVhc2VfcnN2cChzdHJ1Y3QgZHB1X3JtICpybSwgc3Ry dWN0IGRwdV9ybV9yc3ZwICpyc3ZwKQotewotCXN0cnVjdCBkcHVfcm1fcnN2cCAqcnN2cF9jLCAq cnN2cF9uOwogCXN0cnVjdCBkcHVfcm1faHdfYmxrICpibGs7CiAJZW51bSBkcHVfaHdfYmxrX3R5 cGUgdHlwZTsKIAotCWlmICghcnN2cCkKLQkJcmV0dXJuOwotCi0JRFBVX0RFQlVHKCJyZWwgcnN2 cCAlZCBlbmMgJWRcbiIsIHJzdnAtPnNlcSwgcnN2cC0+ZW5jX2lkKTsKLQotCWxpc3RfZm9yX2Vh Y2hfZW50cnlfc2FmZShyc3ZwX2MsIHJzdnBfbiwgJnJtLT5yc3ZwcywgbGlzdCkgewotCQlpZiAo cnN2cCA9PSByc3ZwX2MpIHsKLQkJCWxpc3RfZGVsKCZyc3ZwX2MtPmxpc3QpOwotCQkJYnJlYWs7 Ci0JCX0KLQl9Ci0KIAlmb3IgKHR5cGUgPSAwOyB0eXBlIDwgRFBVX0hXX0JMS19NQVg7IHR5cGUr KykgewogCQlsaXN0X2Zvcl9lYWNoX2VudHJ5KGJsaywgJnJtLT5od19ibGtzW3R5cGVdLCBsaXN0 KSB7Ci0JCQlpZiAoYmxrLT5yc3ZwID09IHJzdnApIHsKLQkJCQlibGstPnJzdnAgPSBOVUxMOwot CQkJCURQVV9ERUJVRygicmVsIHJzdnAgJWQgZW5jICVkICVkICVkXG4iLAotCQkJCQkJcnN2cC0+ c2VxLCByc3ZwLT5lbmNfaWQsCi0JCQkJCQlibGstPnR5cGUsIGJsay0+aWQpOwotCQkJfQotCQkJ aWYgKGJsay0+cnN2cF9ueHQgPT0gcnN2cCkgewotCQkJCWJsay0+cnN2cF9ueHQgPSBOVUxMOwot CQkJCURQVV9ERUJVRygicmVsIHJzdnBfbnh0ICVkIGVuYyAlZCAlZCAlZFxuIiwKLQkJCQkJCXJz dnAtPnNlcSwgcnN2cC0+ZW5jX2lkLAotCQkJCQkJYmxrLT50eXBlLCBibGstPmlkKTsKKwkJCWlm IChibGstPmVuY19pZCA9PSBlbmNfaWQpIHsKKwkJCQlibGstPmVuY19pZCA9IDA7CisJCQkJRFBV X0RFQlVHKCJyZWwgZW5jICVkICVkICVkXG4iLCBlbmNfaWQsCisJCQkJCSAgYmxrLT50eXBlLCBi bGstPmlkKTsKIAkJCX0KIAkJfQogCX0KLQotCWtmcmVlKHJzdnApOwogfQogCiB2b2lkIGRwdV9y bV9yZWxlYXNlKHN0cnVjdCBkcHVfcm0gKnJtLCBzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuYykKIHsK LQlzdHJ1Y3QgZHB1X3JtX3JzdnAgKnJzdnA7Ci0KLQlpZiAoIXJtIHx8ICFlbmMpIHsKLQkJRFBV X0VSUk9SKCJpbnZhbGlkIHBhcmFtc1xuIik7Ci0JCXJldHVybjsKLQl9Ci0KIAltdXRleF9sb2Nr KCZybS0+cm1fbG9jayk7CiAKLQlyc3ZwID0gX2RwdV9ybV9nZXRfcnN2cChybSwgZW5jKTsKLQlp ZiAoIXJzdnApIHsKLQkJRFBVX0VSUk9SKCJmYWlsZWQgdG8gZmluZCByc3ZwIGZvciBlbmMgJWRc biIsIGVuYy0+YmFzZS5pZCk7Ci0JCWdvdG8gZW5kOwotCX0KKwlfZHB1X3JtX3JlbGVhc2VfcmVz ZXJ2YXRpb24ocm0sIGVuYy0+YmFzZS5pZCk7CiAKLQlfZHB1X3JtX3JlbGVhc2VfcnN2cChybSwg cnN2cCk7Ci1lbmQ6CiAJbXV0ZXhfdW5sb2NrKCZybS0+cm1fbG9jayk7CiB9CiAKLXN0YXRpYyB2 b2lkIF9kcHVfcm1fY29tbWl0X3JzdnAoc3RydWN0IGRwdV9ybSAqcm0sIHN0cnVjdCBkcHVfcm1f cnN2cCAqcnN2cCkKLXsKLQlzdHJ1Y3QgZHB1X3JtX2h3X2JsayAqYmxrOwotCWVudW0gZHB1X2h3 X2Jsa190eXBlIHR5cGU7Ci0KLQkvKiBTd2FwIG5leHQgcnN2cCB0byBiZSB0aGUgYWN0aXZlICov Ci0JZm9yICh0eXBlID0gMDsgdHlwZSA8IERQVV9IV19CTEtfTUFYOyB0eXBlKyspIHsKLQkJbGlz dF9mb3JfZWFjaF9lbnRyeShibGssICZybS0+aHdfYmxrc1t0eXBlXSwgbGlzdCkgewotCQkJaWYg KGJsay0+cnN2cF9ueHQpIHsKLQkJCQlibGstPnJzdnAgPSBibGstPnJzdnBfbnh0OwotCQkJCWJs ay0+cnN2cF9ueHQgPSBOVUxMOwotCQkJfQotCQl9Ci0JfQotfQotCiBpbnQgZHB1X3JtX3Jlc2Vy dmUoCiAJCXN0cnVjdCBkcHVfcm0gKnJtLAogCQlzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuYywKQEAg LTgxNSw3ICs2NTMsNiBAQCBpbnQgZHB1X3JtX3Jlc2VydmUoCiAJCXN0cnVjdCBtc21fZGlzcGxh eV90b3BvbG9neSB0b3BvbG9neSwKIAkJYm9vbCB0ZXN0X29ubHkpCiB7Ci0Jc3RydWN0IGRwdV9y bV9yc3ZwICpyc3ZwX2N1ciwgKnJzdnBfbnh0OwogCXN0cnVjdCBkcHVfcm1fcmVxdWlyZW1lbnRz IHJlcXM7CiAJaW50IHJldDsKIApAQCAtODI4LDggKzY2NSw2IEBAIGludCBkcHVfcm1fcmVzZXJ2 ZSgKIAogCW11dGV4X2xvY2soJnJtLT5ybV9sb2NrKTsKIAotCV9kcHVfcm1fcHJpbnRfcnN2cHMo cm0sIERQVV9STV9TVEFHRV9CRUdJTik7Ci0KIAlyZXQgPSBfZHB1X3JtX3BvcHVsYXRlX3JlcXVp cmVtZW50cyhybSwgZW5jLCBjcnRjX3N0YXRlLCAmcmVxcywKIAkJCQkJICAgIHRvcG9sb2d5KTsK IAlpZiAocmV0KSB7CkBAIC04MzcsNTAgKzY3MiwxNyBAQCBpbnQgZHB1X3JtX3Jlc2VydmUoCiAJ CWdvdG8gZW5kOwogCX0KIAotCS8qCi0JICogV2Ugb25seSBzdXBwb3J0IG9uZSBhY3RpdmUgcmVz ZXJ2YXRpb24gcGVyLWh3LWJsb2NrLiBCdXQgdG8gaW1wbGVtZW50Ci0JICogdHJhbnNhY3Rpb25h bCBzZW1hbnRpY3MgZm9yIHRlc3Qtb25seSwgYW5kIGZvciBhbGxvd2luZyBmYWlsdXJlIHdoaWxl Ci0JICogbW9kaWZ5aW5nIHlvdXIgZXhpc3RpbmcgcmVzZXJ2YXRpb24sIG92ZXIgdGhlIGNvdXJz ZSBvZiB0aGlzCi0JICogZnVuY3Rpb24gd2UgY2FuIGhhdmUgdHdvIHJlc2VydmF0aW9uczoKLQkg KiBDdXJyZW50OiBFeGlzdGluZyByZXNlcnZhdGlvbgotCSAqIE5leHQ6IFByb3Bvc2VkIHJlc2Vy dmF0aW9uLiBUaGUgcHJvcG9zZWQgcmVzZXJ2YXRpb24gbWF5IGZhaWwsIG9yIG1heQotCSAqICAg ICAgIGJlIGRpc2NhcmRlZCBpZiBpbiB0ZXN0LW9ubHkgbW9kZS4KLQkgKiBJZiByZXNlcnZhdGlv biBpcyBzdWNjZXNzZnVsLCBhbmQgd2UncmUgbm90IGluIHRlc3Qtb25seSwgdGhlbiB3ZQotCSAq IHJlcGxhY2UgdGhlIGN1cnJlbnQgd2l0aCB0aGUgbmV4dC4KLQkgKi8KLQlyc3ZwX254dCA9IGt6 YWxsb2Moc2l6ZW9mKCpyc3ZwX254dCksIEdGUF9LRVJORUwpOwotCWlmICghcnN2cF9ueHQpIHsK LQkJcmV0ID0gLUVOT01FTTsKLQkJZ290byBlbmQ7Ci0JfQotCi0JcnN2cF9jdXIgPSBfZHB1X3Jt X2dldF9yc3ZwKHJtLCBlbmMpOwotCi0JLyogQ2hlY2sgdGhlIHByb3Bvc2VkIHJlc2VydmF0aW9u LCBzdG9yZSBpdCBpbiBodydzICJuZXh0IiBmaWVsZCAqLwotCXJldCA9IF9kcHVfcm1fbWFrZV9u ZXh0X3JzdnAocm0sIGVuYywgY3J0Y19zdGF0ZSwgcnN2cF9ueHQsICZyZXFzKTsKLQotCV9kcHVf cm1fcHJpbnRfcnN2cHMocm0sIERQVV9STV9TVEFHRV9BRlRFUl9SU1ZQTkVYVCk7Ci0KKwlyZXQg PSBfZHB1X3JtX21ha2VfcmVzZXJ2YXRpb24ocm0sIGVuYywgY3J0Y19zdGF0ZSwgJnJlcXMpOwog CWlmIChyZXQpIHsKIAkJRFBVX0VSUk9SKCJmYWlsZWQgdG8gcmVzZXJ2ZSBodyByZXNvdXJjZXM6 ICVkXG4iLCByZXQpOwotCQlfZHB1X3JtX3JlbGVhc2VfcnN2cChybSwgcnN2cF9ueHQpOworCQlf ZHB1X3JtX3JlbGVhc2VfcmVzZXJ2YXRpb24ocm0sIGVuYy0+YmFzZS5pZCk7CiAJfSBlbHNlIGlm ICh0ZXN0X29ubHkpIHsKLQkJLyoKLQkJICogTm9ybWFsbHksIGlmIHRlc3Rfb25seSwgdGVzdCB0 aGUgcmVzZXJ2YXRpb24gYW5kIHRoZW4gdW5kbwotCQkgKiBIb3dldmVyLCBpZiB0aGUgdXNlciBy ZXF1ZXN0cyBMT0NLLCB0aGVuIGtlZXAgdGhlIHJlc2VydmF0aW9uCi0JCSAqIG1hZGUgZHVyaW5n IHRoZSBhdG9taWNfY2hlY2sgcGhhc2UuCi0JCSAqLwotCQlEUFVfREVCVUcoInRlc3Rfb25seTog ZGlzY2FyZCB0ZXN0IHJzdnBbcyVkZSVkXVxuIiwKLQkJCQlyc3ZwX254dC0+c2VxLCByc3ZwX254 dC0+ZW5jX2lkKTsKLQkJX2RwdV9ybV9yZWxlYXNlX3JzdnAocm0sIHJzdnBfbnh0KTsKLQl9IGVs c2UgewotCQlfZHB1X3JtX3JlbGVhc2VfcnN2cChybSwgcnN2cF9jdXIpOwotCi0JCV9kcHVfcm1f Y29tbWl0X3JzdnAocm0sIHJzdnBfbnh0KTsKKwkJIC8qIHRlc3Rfb25seTogdGVzdCB0aGUgcmVz ZXJ2YXRpb24gYW5kIHRoZW4gdW5kbyAqLworCQlEUFVfREVCVUcoInRlc3Rfb25seTogZGlzY2Fy ZCB0ZXN0IFtlbmM6ICVkXVxuIiwKKwkJCQllbmMtPmJhc2UuaWQpOworCQlfZHB1X3JtX3JlbGVh c2VfcmVzZXJ2YXRpb24ocm0sIGVuYy0+YmFzZS5pZCk7CiAJfQogCi0JX2RwdV9ybV9wcmludF9y c3ZwcyhybSwgRFBVX1JNX1NUQUdFX0ZJTkFMKTsKLQogZW5kOgogCW11dGV4X3VubG9jaygmcm0t PnJtX2xvY2spOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9k cHVfcm0uaCBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9ybS5oCmluZGV4IGI4 MjczYmQuLjBkZDNjMjEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUx L2RwdV9ybS5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9ybS5oCkBA IC0yMywyMSArMjMsMTcgQEAKIC8qKgogICogc3RydWN0IGRwdV9ybSAtIERQVSBkeW5hbWljIGhh cmR3YXJlIHJlc291cmNlIG1hbmFnZXIKICAqIEBkZXY6IGRldmljZSBoYW5kbGUgZm9yIGV2ZW50 IGxvZ2dpbmcgcHVycG9zZXMKLSAqIEByc3ZwczogbGlzdCBvZiBoYXJkd2FyZSByZXNlcnZhdGlv bnMgYnkgZWFjaCBjcnRjLT5lbmNvZGVyLT5jb25uZWN0b3IKICAqIEBod19ibGtzOiBhcnJheSBv ZiBsaXN0cyBvZiBoYXJkd2FyZSByZXNvdXJjZXMgcHJlc2VudCBpbiB0aGUgc3lzdGVtLCBvbmUK ICAqCWxpc3QgcGVyIHR5cGUgb2YgaGFyZHdhcmUgYmxvY2sKICAqIEBod19tZHA6IGhhcmR3YXJl IG9iamVjdCBmb3IgbWRwX3RvcAogICogQGxtX21heF93aWR0aDogY2FjaGVkIGxheWVyIG1peGVy IG1heGltdW0gd2lkdGgKLSAqIEByc3ZwX25leHRfc2VxOiBzZXF1ZW5jZSBudW1iZXIgZm9yIG5l eHQgcmVzZXJ2YXRpb24gZm9yIGRlYnVnZ2luZyBwdXJwb3NlcwogICogQHJtX2xvY2s6IHJlc291 cmNlIG1hbmFnZXIgbXV0ZXgKICAqLwogc3RydWN0IGRwdV9ybSB7CiAJc3RydWN0IGRybV9kZXZp Y2UgKmRldjsKLQlzdHJ1Y3QgbGlzdF9oZWFkIHJzdnBzOwogCXN0cnVjdCBsaXN0X2hlYWQgaHdf Ymxrc1tEUFVfSFdfQkxLX01BWF07CiAJc3RydWN0IGRwdV9od19tZHAgKmh3X21kcDsKIAl1aW50 MzJfdCBsbV9tYXhfd2lkdGg7Ci0JdWludDMyX3QgcnN2cF9uZXh0X3NlcTsKIAlzdHJ1Y3QgbXV0 ZXggcm1fbG9jazsKIH07CiAKLS0gClRoZSBRdWFsY29tbSBJbm5vdmF0aW9uIENlbnRlciwgSW5j LiBpcyBhIG1lbWJlciBvZiB0aGUgQ29kZSBBdXJvcmEgRm9ydW0sCmEgTGludXggRm91bmRhdGlv biBDb2xsYWJvcmF0aXZlIFByb2plY3QKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fCkZyZWVkcmVubyBtYWlsaW5nIGxpc3QKRnJlZWRyZW5vQGxpc3RzLmZy ZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3Rp bmZvL2ZyZWVkcmVubwo=