From mboxrd@z Thu Jan 1 00:00:00 1970 From: Laurent Pinchart Subject: [PATCH v5 19/19] drm: rcar-du: Add writeback support for R-Car Gen3 Date: Thu, 21 Feb 2019 12:32:12 +0200 Message-ID: <20190221103212.28764-20-laurent.pinchart+renesas@ideasonboard.com> References: <20190221103212.28764-1-laurent.pinchart+renesas@ideasonboard.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) by gabe.freedesktop.org (Postfix) with ESMTPS id C23268952F for ; Thu, 21 Feb 2019 10:32:38 +0000 (UTC) In-Reply-To: <20190221103212.28764-1-laurent.pinchart+renesas@ideasonboard.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: dri-devel@lists.freedesktop.org Cc: Liviu Dudau , James Qian Wang , Kieran Bingham List-Id: dri-devel@lists.freedesktop.org SW1wbGVtZW50IHdyaXRlYmFjayBzdXBwb3J0IGZvciBSLUNhciBHZW4zIGJ5IGV4cG9zaW5nIHdy aXRlYmFjawpjb25uZWN0b3JzLiBCZWhpbmQgdGhlIHNjZW5lIHRoZSBjYWxscyBhcmUgZm9yd2Fy ZGVkIHRvIHRoZSBWU1AKYmFja2VuZC4KClVzaW5nIHdyaXRlYmFjayBjb25uZWN0b3JzIHdpbGwg YWxsb3cgaW1wbGVtZW50ZWQgd3JpdGViYWNrIHN1cHBvcnQgZm9yClItQ2FyIEdlbjIgd2l0aCBh IGNvbnNpc3RlbnQgQVBJIGlmIGRlc2lyZWQuCgpTaWduZWQtb2ZmLWJ5OiBMYXVyZW50IFBpbmNo YXJ0IDxsYXVyZW50LnBpbmNoYXJ0K3JlbmVzYXNAaWRlYXNvbmJvYXJkLmNvbT4KLS0tCiBkcml2 ZXJzL2dwdS9kcm0vcmNhci1kdS9LY29uZmlnICAgICAgICAgICAgIHwgICA0ICsKIGRyaXZlcnMv Z3B1L2RybS9yY2FyLWR1L01ha2VmaWxlICAgICAgICAgICAgfCAgIDMgKy0KIGRyaXZlcnMvZ3B1 L2RybS9yY2FyLWR1L3JjYXJfZHVfY3J0Yy5oICAgICAgfCAgIDcgKy0KIGRyaXZlcnMvZ3B1L2Ry bS9yY2FyLWR1L3JjYXJfZHVfa21zLmMgICAgICAgfCAgMTIgKysKIGRyaXZlcnMvZ3B1L2RybS9y Y2FyLWR1L3JjYXJfZHVfdnNwLmMgICAgICAgfCAgIDUgKwogZHJpdmVycy9ncHUvZHJtL3JjYXIt ZHUvcmNhcl9kdV93cml0ZWJhY2suYyB8IDIwMyArKysrKysrKysrKysrKysrKysrKwogZHJpdmVy cy9ncHUvZHJtL3JjYXItZHUvcmNhcl9kdV93cml0ZWJhY2suaCB8ICAzOSArKysrCiA3IGZpbGVz IGNoYW5nZWQsIDI3MSBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUg MTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9yY2FyLWR1L3JjYXJfZHVfd3JpdGViYWNrLmMKIGNyZWF0 ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vcmNhci1kdS9yY2FyX2R1X3dyaXRlYmFjay5o CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3JjYXItZHUvS2NvbmZpZyBiL2RyaXZlcnMv Z3B1L2RybS9yY2FyLWR1L0tjb25maWcKaW5kZXggN2MzNmUyNzc3YTE1Li4xNTI5ODQ5ZTIxN2Ug MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9yY2FyLWR1L0tjb25maWcKKysrIGIvZHJpdmVy cy9ncHUvZHJtL3JjYXItZHUvS2NvbmZpZwpAQCAtMzYsMyArMzYsNyBAQCBjb25maWcgRFJNX1JD QVJfVlNQCiAJZGVwZW5kcyBvbiBWSURFT19SRU5FU0FTX1ZTUDE9eSB8fCAoVklERU9fUkVORVNB U19WU1AxICYmIERSTV9SQ0FSX0RVPW0pCiAJaGVscAogCSAgRW5hYmxlIHN1cHBvcnQgdG8gZXhw b3NlIHRoZSBSLUNhciBWU1AgQ29tcG9zaXRvciBhcyBLTVMgcGxhbmVzLgorCitjb25maWcgRFJN X1JDQVJfV1JJVEVCQUNLCisJYm9vbAorCWRlZmF1bHQgeSBpZiBBUk02NApkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL3JjYXItZHUvTWFrZWZpbGUgYi9kcml2ZXJzL2dwdS9kcm0vcmNhci1k dS9NYWtlZmlsZQppbmRleCAyYTNiOGQ3OTcyYjUuLjZjMmVkOWM0NjQ2NyAxMDA2NDQKLS0tIGEv ZHJpdmVycy9ncHUvZHJtL3JjYXItZHUvTWFrZWZpbGUKKysrIGIvZHJpdmVycy9ncHUvZHJtL3Jj YXItZHUvTWFrZWZpbGUKQEAgLTQsNyArNCw3IEBAIHJjYXItZHUtZHJtLXkgOj0gcmNhcl9kdV9j cnRjLm8gXAogCQkgcmNhcl9kdV9lbmNvZGVyLm8gXAogCQkgcmNhcl9kdV9ncm91cC5vIFwKIAkJ IHJjYXJfZHVfa21zLm8gXAotCQkgcmNhcl9kdV9wbGFuZS5vCisJCSByY2FyX2R1X3BsYW5lLm8g XAogCiByY2FyLWR1LWRybS0kKENPTkZJR19EUk1fUkNBUl9MVkRTKQkrPSByY2FyX2R1X29mLm8g XAogCQkJCQkgICByY2FyX2R1X29mX2x2ZHNfcjhhNzc5MC5kdGIubyBcCkBAIC0xMyw2ICsxMyw3 IEBAIHJjYXItZHUtZHJtLSQoQ09ORklHX0RSTV9SQ0FSX0xWRFMpCSs9IHJjYXJfZHVfb2YubyBc CiAJCQkJCSAgIHJjYXJfZHVfb2ZfbHZkc19yOGE3Nzk1LmR0Yi5vIFwKIAkJCQkJICAgcmNhcl9k dV9vZl9sdmRzX3I4YTc3OTYuZHRiLm8KIHJjYXItZHUtZHJtLSQoQ09ORklHX0RSTV9SQ0FSX1ZT UCkJKz0gcmNhcl9kdV92c3AubworcmNhci1kdS1kcm0tJChDT05GSUdfRFJNX1JDQVJfV1JJVEVC QUNLKSArPSByY2FyX2R1X3dyaXRlYmFjay5vCiAKIG9iai0kKENPTkZJR19EUk1fUkNBUl9EVSkJ CSs9IHJjYXItZHUtZHJtLm8KIG9iai0kKENPTkZJR19EUk1fUkNBUl9EV19IRE1JKQkJKz0gcmNh cl9kd19oZG1pLm8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9yY2FyLWR1L3JjYXJfZHVf Y3J0Yy5oIGIvZHJpdmVycy9ncHUvZHJtL3JjYXItZHUvcmNhcl9kdV9jcnRjLmgKaW5kZXggYzQ3 ODk1M2JlMDkyLi45MmY3ZDVmM2ZmODAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9yY2Fy LWR1L3JjYXJfZHVfY3J0Yy5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9yY2FyLWR1L3JjYXJfZHVf Y3J0Yy5oCkBAIC0xNSw2ICsxNSw3IEBACiAjaW5jbHVkZSA8bGludXgvd2FpdC5oPgogCiAjaW5j bHVkZSA8ZHJtL2RybV9jcnRjLmg+CisjaW5jbHVkZSA8ZHJtL2RybV93cml0ZWJhY2suaD4KIAog I2luY2x1ZGUgPG1lZGlhL3ZzcDEuaD4KIApAQCAtMzksNiArNDAsNyBAQCBzdHJ1Y3QgcmNhcl9k dV92c3A7CiAgKiBAZ3JvdXA6IENSVEMgZ3JvdXAgdGhpcyBDUlRDIGJlbG9uZ3MgdG8KICAqIEB2 c3A6IFZTUCBmZWVkaW5nIHZpZGVvIHRvIHRoaXMgQ1JUQwogICogQHZzcF9waXBlOiBpbmRleCBv ZiB0aGUgVlNQIHBpcGVsaW5lIGZlZWRpbmcgdmlkZW8gdG8gdGhpcyBDUlRDCisgKiBAd3JpdGVi YWNrOiB0aGUgd3JpdGViYWNrIGNvbm5lY3RvcgogICovCiBzdHJ1Y3QgcmNhcl9kdV9jcnRjIHsK IAlzdHJ1Y3QgZHJtX2NydGMgY3J0YzsKQEAgLTY1LDkgKzY3LDEyIEBAIHN0cnVjdCByY2FyX2R1 X2NydGMgewogCiAJY29uc3QgY2hhciAqY29uc3QgKnNvdXJjZXM7CiAJdW5zaWduZWQgaW50IHNv dXJjZXNfY291bnQ7CisKKwlzdHJ1Y3QgZHJtX3dyaXRlYmFja19jb25uZWN0b3Igd3JpdGViYWNr OwogfTsKIAotI2RlZmluZSB0b19yY2FyX2NydGMoYykJY29udGFpbmVyX29mKGMsIHN0cnVjdCBy Y2FyX2R1X2NydGMsIGNydGMpCisjZGVmaW5lIHRvX3JjYXJfY3J0YyhjKQkJY29udGFpbmVyX29m KGMsIHN0cnVjdCByY2FyX2R1X2NydGMsIGNydGMpCisjZGVmaW5lIHdiX3RvX3JjYXJfY3J0Yyhj KQljb250YWluZXJfb2YoYywgc3RydWN0IHJjYXJfZHVfY3J0Yywgd3JpdGViYWNrKQogCiAvKioK ICAqIHN0cnVjdCByY2FyX2R1X2NydGNfc3RhdGUgLSBEcml2ZXItc3BlY2lmaWMgQ1JUQyBzdGF0 ZQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3JjYXItZHUvcmNhcl9kdV9rbXMuYyBiL2Ry aXZlcnMvZ3B1L2RybS9yY2FyLWR1L3JjYXJfZHVfa21zLmMKaW5kZXggOTk5NDQwYzdiMjU4Li5j NzI5ZjA0ODYyNmUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9yY2FyLWR1L3JjYXJfZHVf a21zLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL3JjYXItZHUvcmNhcl9kdV9rbXMuYwpAQCAtMjQs NiArMjQsNyBAQAogI2luY2x1ZGUgInJjYXJfZHVfa21zLmgiCiAjaW5jbHVkZSAicmNhcl9kdV9y ZWdzLmgiCiAjaW5jbHVkZSAicmNhcl9kdV92c3AuaCIKKyNpbmNsdWRlICJyY2FyX2R1X3dyaXRl YmFjay5oIgogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICogRm9ybWF0IGhlbHBlcnMKQEAg LTY2Miw2ICs2NjMsMTcgQEAgaW50IHJjYXJfZHVfbW9kZXNldF9pbml0KHN0cnVjdCByY2FyX2R1 X2RldmljZSAqcmNkdSkKIAkJZW5jb2Rlci0+cG9zc2libGVfY2xvbmVzID0gKDEgPDwgbnVtX2Vu Y29kZXJzKSAtIDE7CiAJfQogCisJLyogQ3JlYXRlIHRoZSB3cml0ZWJhY2sgY29ubmVjdG9ycy4g Ki8KKwlpZiAocmNkdS0+aW5mby0+Z2VuID49IDMpIHsKKwkJZm9yIChpID0gMDsgaSA8IHJjZHUt Pm51bV9jcnRjczsgKytpKSB7CisJCQlzdHJ1Y3QgcmNhcl9kdV9jcnRjICpyY3J0YyA9ICZyY2R1 LT5jcnRjc1tpXTsKKworCQkJcmV0ID0gcmNhcl9kdV93cml0ZWJhY2tfaW5pdChyY2R1LCByY3J0 Yyk7CisJCQlpZiAocmV0IDwgMCkKKwkJCQlyZXR1cm4gcmV0OworCQl9CisJfQorCiAJLyoKIAkg KiBJbml0aWFsaXplIHRoZSBkZWZhdWx0IERQQUQwIHNvdXJjZSB0byB0aGUgaW5kZXggb2YgdGhl IGZpcnN0IERVCiAJICogY2hhbm5lbCB0aGF0IGNhbiBiZSBjb25uZWN0ZWQgdG8gRFBBRDAuIFRo ZSBleGFjdCB2YWx1ZSBkb2Vzbid0CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vcmNhci1k dS9yY2FyX2R1X3ZzcC5jIGIvZHJpdmVycy9ncHUvZHJtL3JjYXItZHUvcmNhcl9kdV92c3AuYwpp bmRleCAwODA2YTY5YzQ2NzkuLjk5YWUwM2ExNzEzYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUv ZHJtL3JjYXItZHUvcmNhcl9kdV92c3AuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vcmNhci1kdS9y Y2FyX2R1X3ZzcC5jCkBAIC0yNSw2ICsyNSw3IEBACiAjaW5jbHVkZSAicmNhcl9kdV9kcnYuaCIK ICNpbmNsdWRlICJyY2FyX2R1X2ttcy5oIgogI2luY2x1ZGUgInJjYXJfZHVfdnNwLmgiCisjaW5j bHVkZSAicmNhcl9kdV93cml0ZWJhY2suaCIKIAogc3RhdGljIHZvaWQgcmNhcl9kdV92c3BfY29t cGxldGUodm9pZCAqcHJpdmF0ZSwgdW5zaWduZWQgaW50IHN0YXR1cywgdTMyIGNyYykKIHsKQEAg LTM1LDYgKzM2LDggQEAgc3RhdGljIHZvaWQgcmNhcl9kdV92c3BfY29tcGxldGUodm9pZCAqcHJp dmF0ZSwgdW5zaWduZWQgaW50IHN0YXR1cywgdTMyIGNyYykKIAogCWlmIChzdGF0dXMgJiBWU1Ax X0RVX1NUQVRVU19DT01QTEVURSkKIAkJcmNhcl9kdV9jcnRjX2ZpbmlzaF9wYWdlX2ZsaXAoY3J0 Yyk7CisJaWYgKHN0YXR1cyAmIFZTUDFfRFVfU1RBVFVTX1dSSVRFQkFDSykKKwkJcmNhcl9kdV93 cml0ZWJhY2tfY29tcGxldGUoY3J0Yyk7CiAKIAlkcm1fY3J0Y19hZGRfY3JjX2VudHJ5KCZjcnRj LT5jcnRjLCBmYWxzZSwgMCwgJmNyYyk7CiB9CkBAIC0xMDYsNiArMTA5LDggQEAgdm9pZCByY2Fy X2R1X3ZzcF9hdG9taWNfZmx1c2goc3RydWN0IHJjYXJfZHVfY3J0YyAqY3J0YykKIAlzdGF0ZSA9 IHRvX3JjYXJfY3J0Y19zdGF0ZShjcnRjLT5jcnRjLnN0YXRlKTsKIAljZmcuY3JjID0gc3RhdGUt PmNyYzsKIAorCXJjYXJfZHVfd3JpdGViYWNrX2F0b21pY19mbHVzaChjcnRjLCAmY2ZnLndyaXRl YmFjayk7CisKIAl2c3AxX2R1X2F0b21pY19mbHVzaChjcnRjLT52c3AtPnZzcCwgY3J0Yy0+dnNw X3BpcGUsICZjZmcpOwogfQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vcmNhci1kdS9y Y2FyX2R1X3dyaXRlYmFjay5jIGIvZHJpdmVycy9ncHUvZHJtL3JjYXItZHUvcmNhcl9kdV93cml0 ZWJhY2suYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmI1ZWVhMzI1 YTA4MgotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9yY2FyLWR1L3JjYXJfZHVf d3JpdGViYWNrLmMKQEAgLTAsMCArMSwyMDMgQEAKKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVy OiBHUEwtMi4wCisvKgorICogcmNhcl9kdV93cml0ZWJhY2suYyAgLS0gIFItQ2FyIERpc3BsYXkg VW5pdCBXcml0ZWJhY2sgU3VwcG9ydAorICoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBMYXVyZW50 IFBpbmNoYXJ0IDxsYXVyZW50LnBpbmNoYXJ0QGlkZWFzb25ib2FyZC5jb20+CisgKi8KKworI2lu Y2x1ZGUgPGRybS9kcm1fYXRvbWljX2hlbHBlci5oPgorI2luY2x1ZGUgPGRybS9kcm1fZGV2aWNl Lmg+CisjaW5jbHVkZSA8ZHJtL2RybV9wcm9iZV9oZWxwZXIuaD4KKyNpbmNsdWRlIDxkcm0vZHJt X3dyaXRlYmFjay5oPgorCisjaW5jbHVkZSAicmNhcl9kdV9jcnRjLmgiCisjaW5jbHVkZSAicmNh cl9kdV9kcnYuaCIKKyNpbmNsdWRlICJyY2FyX2R1X2ttcy5oIgorCisvKioKKyAqIHN0cnVjdCBy Y2FyX2R1X3diX2Nvbm5fc3RhdGUgLSBEcml2ZXItc3BlY2lmaWMgd3JpdGViYWNrIGNvbm5lY3Rv ciBzdGF0ZQorICogQHN0YXRlOiBiYXNlIERSTSBjb25uZWN0b3Igc3RhdGUKKyAqIEBmb3JtYXQ6 IGZvcm1hdCBvZiB0aGUgd3JpdGViYWNrIGZyYW1lYnVmZmVyCisgKi8KK3N0cnVjdCByY2FyX2R1 X3diX2Nvbm5fc3RhdGUgeworCXN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlIHN0YXRlOworCWNv bnN0IHN0cnVjdCByY2FyX2R1X2Zvcm1hdF9pbmZvICpmb3JtYXQ7Cit9OworCisKKyNkZWZpbmUg dG9fcmNhcl93Yl9jb25uX3N0YXRlKHMpIFwKKwljb250YWluZXJfb2Yocywgc3RydWN0IHJjYXJf ZHVfd2JfY29ubl9zdGF0ZSwgc3RhdGUpCisKKy8qKgorICogc3RydWN0IHJjYXJfZHVfd2Jfam9i IC0gRHJpdmVyLXByaXZhdGUgZGF0YSBmb3Igd3JpdGViYWNrIGpvYnMKKyAqIEBzZ190YWJsZXM6 IHNjYXR0ZXItZ2F0aGVyIHRhYmxlcyBmb3IgdGhlIGZyYW1lYnVmZmVyIG1lbW9yeQorICovCitz dHJ1Y3QgcmNhcl9kdV93Yl9qb2IgeworCXN0cnVjdCBzZ190YWJsZSBzZ190YWJsZXNbM107Cit9 OworCitzdGF0aWMgaW50IHJjYXJfZHVfd2JfY29ubl9nZXRfbW9kZXMoc3RydWN0IGRybV9jb25u ZWN0b3IgKmNvbm5lY3RvcikKK3sKKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY29ubmVjdG9y LT5kZXY7CisKKwlyZXR1cm4gZHJtX2FkZF9tb2Rlc19ub2VkaWQoY29ubmVjdG9yLCBkZXYtPm1v ZGVfY29uZmlnLm1heF93aWR0aCwKKwkJCQkgICAgZGV2LT5tb2RlX2NvbmZpZy5tYXhfaGVpZ2h0 KTsKK30KKworc3RhdGljIGludCByY2FyX2R1X3diX3ByZXBhcmVfam9iKHN0cnVjdCBkcm1fd3Jp dGViYWNrX2Nvbm5lY3RvciAqY29ubmVjdG9yLAorCQkJCSAgc3RydWN0IGRybV93cml0ZWJhY2tf am9iICpqb2IpCit7CisJc3RydWN0IHJjYXJfZHVfY3J0YyAqcmNydGMgPSB3Yl90b19yY2FyX2Ny dGMoY29ubmVjdG9yKTsKKwlzdHJ1Y3QgcmNhcl9kdV93Yl9qb2IgKnJqb2I7CisJaW50IHJldDsK KworCWlmICgham9iLT5mYikKKwkJcmV0dXJuIDA7CisKKwlyam9iID0ga3phbGxvYyhzaXplb2Yo KnJqb2IpLCBHRlBfS0VSTkVMKTsKKwlpZiAoIXJqb2IpCisJCXJldHVybiAtRU5PTUVNOworCisJ LyogTWFwIHRoZSBmcmFtZWJ1ZmZlciB0byB0aGUgVlNQLiAqLworCXJldCA9IHJjYXJfZHVfdnNw X21hcF9mYihyY3J0Yy0+dnNwLCBqb2ItPmZiLCByam9iLT5zZ190YWJsZXMpOworCWlmIChyZXQg PCAwKSB7CisJCWtmcmVlKHJqb2IpOworCQlyZXR1cm4gcmV0OworCX0KKworCWpvYi0+cHJpdiA9 IHJqb2I7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkIHJjYXJfZHVfd2JfY2xlYW51cF9q b2Ioc3RydWN0IGRybV93cml0ZWJhY2tfY29ubmVjdG9yICpjb25uZWN0b3IsCisJCQkJICAgc3Ry dWN0IGRybV93cml0ZWJhY2tfam9iICpqb2IpCit7CisJc3RydWN0IHJjYXJfZHVfY3J0YyAqcmNy dGMgPSB3Yl90b19yY2FyX2NydGMoY29ubmVjdG9yKTsKKwlzdHJ1Y3QgcmNhcl9kdV93Yl9qb2Ig KnJqb2IgPSBqb2ItPnByaXY7CisKKwlpZiAoIWpvYi0+ZmIpCisJCXJldHVybjsKKworCXJjYXJf ZHVfdnNwX3VubWFwX2ZiKHJjcnRjLT52c3AsIGpvYi0+ZmIsIHJqb2ItPnNnX3RhYmxlcyk7CisJ a2ZyZWUocmpvYik7Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9oZWxw ZXJfZnVuY3MgcmNhcl9kdV93Yl9jb25uX2hlbHBlcl9mdW5jcyA9IHsKKwkuZ2V0X21vZGVzID0g cmNhcl9kdV93Yl9jb25uX2dldF9tb2RlcywKKwkucHJlcGFyZV93cml0ZWJhY2tfam9iID0gcmNh cl9kdV93Yl9wcmVwYXJlX2pvYiwKKwkuY2xlYW51cF93cml0ZWJhY2tfam9iID0gcmNhcl9kdV93 Yl9jbGVhbnVwX2pvYiwKK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9m dW5jcyByY2FyX2R1X3diX2Nvbm5fZnVuY3MgPSB7CisJLnJlc2V0ID0gZHJtX2F0b21pY19oZWxw ZXJfY29ubmVjdG9yX3Jlc2V0LAorCS5maWxsX21vZGVzID0gZHJtX2hlbHBlcl9wcm9iZV9zaW5n bGVfY29ubmVjdG9yX21vZGVzLAorCS5kZXN0cm95ID0gZHJtX2Nvbm5lY3Rvcl9jbGVhbnVwLAor CS5hdG9taWNfZHVwbGljYXRlX3N0YXRlID0gZHJtX2F0b21pY19oZWxwZXJfY29ubmVjdG9yX2R1 cGxpY2F0ZV9zdGF0ZSwKKwkuYXRvbWljX2Rlc3Ryb3lfc3RhdGUgPSBkcm1fYXRvbWljX2hlbHBl cl9jb25uZWN0b3JfZGVzdHJveV9zdGF0ZSwKK307CisKK3N0YXRpYyBpbnQgcmNhcl9kdV93Yl9l bmNfYXRvbWljX2NoZWNrKHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlciwKKwkJCQkgICAgICAg c3RydWN0IGRybV9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAorCQkJCSAgICAgICBzdHJ1Y3QgZHJt X2Nvbm5lY3Rvcl9zdGF0ZSAqY29ubl9zdGF0ZSkKK3sKKwlzdHJ1Y3QgcmNhcl9kdV93Yl9jb25u X3N0YXRlICp3Yl9zdGF0ZSA9CisJCXRvX3JjYXJfd2JfY29ubl9zdGF0ZShjb25uX3N0YXRlKTsK Kwljb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSA9ICZjcnRjX3N0YXRlLT5tb2Rl OworCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBlbmNvZGVyLT5kZXY7CisJc3RydWN0IGRybV9m cmFtZWJ1ZmZlciAqZmI7CisKKwlpZiAoIWNvbm5fc3RhdGUtPndyaXRlYmFja19qb2IgfHwgIWNv bm5fc3RhdGUtPndyaXRlYmFja19qb2ItPmZiKQorCQlyZXR1cm4gMDsKKworCWZiID0gY29ubl9z dGF0ZS0+d3JpdGViYWNrX2pvYi0+ZmI7CisKKwkvKgorCSAqIFZlcmlmeSB0aGF0IHRoZSBmcmFt ZWJ1ZmZlciBmb3JtYXQgaXMgc3VwcG9ydGVkIGFuZCB0aGF0IGl0cyBzaXplCisJICogbWF0Y2hl cyB0aGUgY3VycmVudCBtb2RlLgorCSAqLworCWlmIChmYi0+d2lkdGggIT0gbW9kZS0+aGRpc3Bs YXkgfHwgZmItPmhlaWdodCAhPSBtb2RlLT52ZGlzcGxheSkgeworCQlkZXZfZGJnKGRldi0+ZGV2 LCAiJXM6IGludmFsaWQgZnJhbWVidWZmZXIgc2l6ZSAldXgldVxuIiwKKwkJCV9fZnVuY19fLCBm Yi0+d2lkdGgsIGZiLT5oZWlnaHQpOworCQlyZXR1cm4gLUVJTlZBTDsKKwl9CisKKwl3Yl9zdGF0 ZS0+Zm9ybWF0ID0gcmNhcl9kdV9mb3JtYXRfaW5mbyhmYi0+Zm9ybWF0LT5mb3JtYXQpOworCWlm ICh3Yl9zdGF0ZS0+Zm9ybWF0ID09IE5VTEwpIHsKKwkJZGV2X2RiZyhkZXYtPmRldiwgIiVzOiB1 bnN1cHBvcnRlZCBmb3JtYXQgJTA4eFxuIiwgX19mdW5jX18sCisJCQlmYi0+Zm9ybWF0LT5mb3Jt YXQpOworCQlyZXR1cm4gLUVJTlZBTDsKKwl9CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGNv bnN0IHN0cnVjdCBkcm1fZW5jb2Rlcl9oZWxwZXJfZnVuY3MgcmNhcl9kdV93Yl9lbmNfaGVscGVy X2Z1bmNzID0geworCS5hdG9taWNfY2hlY2sgPSByY2FyX2R1X3diX2VuY19hdG9taWNfY2hlY2ss Cit9OworCisvKgorICogT25seSBSR0IgZm9ybWF0cyBhcmUgY3VycmVudGx5IHN1cHBvcnRlZCBh cyB0aGUgVlNQIG91dHB1dHMgUkdCIHRvIHRoZSBEVQorICogYW5kIGNhbid0IGNvbnZlcnQgdG8g WVVWIHNlcGFyYXRlbHkgZm9yIHdyaXRlYmFjay4KKyAqLworc3RhdGljIGNvbnN0IHUzMiB3cml0 ZWJhY2tfZm9ybWF0c1tdID0geworCURSTV9GT1JNQVRfUkdCMzMyLAorCURSTV9GT1JNQVRfQVJH QjQ0NDQsCisJRFJNX0ZPUk1BVF9YUkdCNDQ0NCwKKwlEUk1fRk9STUFUX0FSR0IxNTU1LAorCURS TV9GT1JNQVRfWFJHQjE1NTUsCisJRFJNX0ZPUk1BVF9SR0I1NjUsCisJRFJNX0ZPUk1BVF9CR1I4 ODgsCisJRFJNX0ZPUk1BVF9SR0I4ODgsCisJRFJNX0ZPUk1BVF9CR1JBODg4OCwKKwlEUk1fRk9S TUFUX0JHUlg4ODg4LAorCURSTV9GT1JNQVRfQVJHQjg4ODgsCisJRFJNX0ZPUk1BVF9YUkdCODg4 OCwKK307CisKK2ludCByY2FyX2R1X3dyaXRlYmFja19pbml0KHN0cnVjdCByY2FyX2R1X2Rldmlj ZSAqcmNkdSwKKwkJCSAgIHN0cnVjdCByY2FyX2R1X2NydGMgKnJjcnRjKQoreworCXN0cnVjdCBk cm1fd3JpdGViYWNrX2Nvbm5lY3RvciAqd2JfY29ubiA9ICZyY3J0Yy0+d3JpdGViYWNrOworCisJ d2JfY29ubi0+ZW5jb2Rlci5wb3NzaWJsZV9jcnRjcyA9IDEgPDwgZHJtX2NydGNfaW5kZXgoJnJj cnRjLT5jcnRjKTsKKwlkcm1fY29ubmVjdG9yX2hlbHBlcl9hZGQoJndiX2Nvbm4tPmJhc2UsCisJ CQkJICZyY2FyX2R1X3diX2Nvbm5faGVscGVyX2Z1bmNzKTsKKworCXJldHVybiBkcm1fd3JpdGVi YWNrX2Nvbm5lY3Rvcl9pbml0KHJjZHUtPmRkZXYsIHdiX2Nvbm4sCisJCQkJCSAgICAmcmNhcl9k dV93Yl9jb25uX2Z1bmNzLAorCQkJCQkgICAgJnJjYXJfZHVfd2JfZW5jX2hlbHBlcl9mdW5jcywK KwkJCQkJICAgIHdyaXRlYmFja19mb3JtYXRzLAorCQkJCQkgICAgQVJSQVlfU0laRSh3cml0ZWJh Y2tfZm9ybWF0cykpOworfQorCit2b2lkIHJjYXJfZHVfd3JpdGViYWNrX2F0b21pY19mbHVzaChz dHJ1Y3QgcmNhcl9kdV9jcnRjICpyY3J0YywKKwkJCQkgICAgc3RydWN0IHZzcDFfZHVfd3JpdGVi YWNrX2NvbmZpZyAqY2ZnKQoreworCXN0cnVjdCByY2FyX2R1X3diX2Nvbm5fc3RhdGUgKndiX3N0 YXRlOworCXN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpzdGF0ZTsKKwlzdHJ1Y3QgcmNhcl9k dV93Yl9qb2IgKnJqb2I7CisJc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmI7CisJdW5zaWduZWQg aW50IGk7CisKKwlzdGF0ZSA9IHJjcnRjLT53cml0ZWJhY2suYmFzZS5zdGF0ZTsKKwlpZiAoIXN0 YXRlIHx8ICFzdGF0ZS0+d3JpdGViYWNrX2pvYiB8fCAhc3RhdGUtPndyaXRlYmFja19qb2ItPmZi KQorCQlyZXR1cm47CisKKwlmYiA9IHN0YXRlLT53cml0ZWJhY2tfam9iLT5mYjsKKwlyam9iID0g c3RhdGUtPndyaXRlYmFja19qb2ItPnByaXY7CisJd2Jfc3RhdGUgPSB0b19yY2FyX3diX2Nvbm5f c3RhdGUoc3RhdGUpOworCisJY2ZnLT5waXhlbGZvcm1hdCA9IHdiX3N0YXRlLT5mb3JtYXQtPnY0 bDI7CisJY2ZnLT5waXRjaCA9IGZiLT5waXRjaGVzWzBdOworCisJZm9yIChpID0gMDsgaSA8IHdi X3N0YXRlLT5mb3JtYXQtPnBsYW5lczsgKytpKQorCQljZmctPm1lbVtpXSA9IHNnX2RtYV9hZGRy ZXNzKHJqb2ItPnNnX3RhYmxlc1tpXS5zZ2wpCisJCQkgICAgKyBmYi0+b2Zmc2V0c1tpXTsKKwor CWRybV93cml0ZWJhY2tfcXVldWVfam9iKCZyY3J0Yy0+d3JpdGViYWNrLCBzdGF0ZSk7Cit9CisK K3ZvaWQgcmNhcl9kdV93cml0ZWJhY2tfY29tcGxldGUoc3RydWN0IHJjYXJfZHVfY3J0YyAqcmNy dGMpCit7CisJZHJtX3dyaXRlYmFja19zaWduYWxfY29tcGxldGlvbigmcmNydGMtPndyaXRlYmFj aywgMCk7Cit9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vcmNhci1kdS9yY2FyX2R1X3dy aXRlYmFjay5oIGIvZHJpdmVycy9ncHUvZHJtL3JjYXItZHUvcmNhcl9kdV93cml0ZWJhY2suaApu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmQ1N2M1YTBiZmZlMwotLS0g L2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9yY2FyLWR1L3JjYXJfZHVfd3JpdGViYWNr LmgKQEAgLTAsMCArMSwzOSBAQAorLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAr ICovCisvKgorICogcmNhcl9kdV93cml0ZWJhY2suaCAgLS0gIFItQ2FyIERpc3BsYXkgVW5pdCBX cml0ZWJhY2sgU3VwcG9ydAorICoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBMYXVyZW50IFBpbmNo YXJ0IDxsYXVyZW50LnBpbmNoYXJ0QGlkZWFzb25ib2FyZC5jb20+CisgKi8KKworI2lmbmRlZiBf X1JDQVJfRFVfV1JJVEVCQUNLX0hfXworI2RlZmluZSBfX1JDQVJfRFVfV1JJVEVCQUNLX0hfXwor CisjaW5jbHVkZSA8ZHJtL2RybV9wbGFuZS5oPgorCitzdHJ1Y3QgcmNhcl9kdV9jcnRjOworc3Ry dWN0IHJjYXJfZHVfZGV2aWNlOworc3RydWN0IHZzcDFfZHVfYXRvbWljX3BpcGVfY29uZmlnOwor CisjaWZkZWYgQ09ORklHX0RSTV9SQ0FSX1dSSVRFQkFDSworaW50IHJjYXJfZHVfd3JpdGViYWNr X2luaXQoc3RydWN0IHJjYXJfZHVfZGV2aWNlICpyY2R1LAorCQkJICAgc3RydWN0IHJjYXJfZHVf Y3J0YyAqcmNydGMpOwordm9pZCByY2FyX2R1X3dyaXRlYmFja19hdG9taWNfZmx1c2goc3RydWN0 IHJjYXJfZHVfY3J0YyAqcmNydGMsCisJCQkJICAgIHN0cnVjdCB2c3AxX2R1X3dyaXRlYmFja19j b25maWcgKmNmZyk7Cit2b2lkIHJjYXJfZHVfd3JpdGViYWNrX2NvbXBsZXRlKHN0cnVjdCByY2Fy X2R1X2NydGMgKnJjcnRjKTsKKyNlbHNlCitzdGF0aWMgaW5saW5lIGludCByY2FyX2R1X3dyaXRl YmFja19pbml0KHN0cnVjdCByY2FyX2R1X2RldmljZSAqcmNkdSwKKwkJCQkJIHN0cnVjdCByY2Fy X2R1X2NydGMgKnJjcnRjKQoreworCXJldHVybiAtRU5YSU87Cit9CitzdGF0aWMgaW5saW5lIHZv aWQKK3JjYXJfZHVfd3JpdGViYWNrX2F0b21pY19mbHVzaChzdHJ1Y3QgcmNhcl9kdV9jcnRjICpy Y3J0YywKKwkJCSAgICAgICBzdHJ1Y3QgdnNwMV9kdV93cml0ZWJhY2tfY29uZmlnICpjZmcpCit7 Cit9CitzdGF0aWMgaW5saW5lIHZvaWQgcmNhcl9kdV93cml0ZWJhY2tfY29tcGxldGUoc3RydWN0 IHJjYXJfZHVfY3J0YyAqcmNydGMpCit7Cit9CisjZW5kaWYKKworI2VuZGlmIC8qIF9fUkNBUl9E VV9XUklURUJBQ0tfSF9fICovCi0tIApSZWdhcmRzLAoKTGF1cmVudCBQaW5jaGFydAoKX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxp bmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJl ZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVs