From mboxrd@z Thu Jan 1 00:00:00 1970 From: Stefan Schake Subject: [PATCH v4 1/2] drm/vc4: Add CTM support Date: Fri, 20 Apr 2018 05:25:44 -0700 Message-ID: <20180420122545.40014-1-stschake@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wr0-x243.google.com (mail-wr0-x243.google.com [IPv6:2a00:1450:400c:c0c::243]) by gabe.freedesktop.org (Postfix) with ESMTPS id 575A16E6A9 for ; Fri, 20 Apr 2018 12:25:18 +0000 (UTC) Received: by mail-wr0-x243.google.com with SMTP id w3-v6so22510876wrg.2 for ; Fri, 20 Apr 2018 05:25:18 -0700 (PDT) List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: eric@anholt.net Cc: airlied@linux.ie, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, Stefan Schake List-Id: dri-devel@lists.freedesktop.org VGhlIGhhcmR3YXJlIGhhcyBhIHNpbmdsZSBibG9jayBmb3IgYXBwbHlpbmcgYSBDVE0gcHJpb3Ig dG8gZ2FtbWEgbHV0LgpJdCBjYW4gYmUgZmVkIHdpdGggcGl4ZWxzIGZyb20gb25lIG9mIG91ciBD UlRDIGF0IGEgdGltZSBhbmQgdXNlcyBhCm1hdHJpeCB3aXRoIFMwLjkgc2NhbGFycy4gVXNlIHBy aXZhdGUgYXRvbWljIHN0YXRlIHRvIHJlamVjdCBhdHRlbXB0cwpmcm9tIHVzZXJsYW5kIHRvIGFw cGx5IENUTSBmb3IgbW9yZSB0aGFuIG9uZSBDUlRDIGF0IGEgdGltZSBhbmQgcmVqZWN0Cm1hdHJp Y2VzIHdpdGggc2NhbGFycyB0aGF0IHdlIGNhbid0IGFwcHJveGltYXRlIHdpdGhvdXQgaW50ZWdl ciBiaXRzLgoKU2lnbmVkLW9mZi1ieTogU3RlZmFuIFNjaGFrZSA8c3RzY2hha2VAZ21haWwuY29t PgpTaWduZWQtb2ZmLWJ5OiBFcmljIEFuaG9sdCA8ZXJpY0BhbmhvbHQubmV0PgotLS0KRXJpYywg SSByZW1vdmVkIHlvdXIgci1iIHNpbmNlIHRoZXJlIHdlcmUgYSBidW5jaCBtb3JlIGNoYW5nZXMu Cgp2NDogSGFuZGxlIENUTSBkaXNhYmxpbmcgaW4gY2hlY2sKCURvbid0IHVzZSBkcm1fYXRvbWlj X2dldF9wcml2YXRlX29ial9zdGF0ZSBpbiBjb21taXQKCUZpeCBTMzEuMzIgLT4gUzAuOSBjb252 ZXJzaW9uCglTcXVhc2hlZCBpbiBFcmljcyBmaXh1cCBzZXJpZXM6CglEb24ndCB0YWtlIHRoZSBD VE0gbG9jayB1bmxlc3MgYSBDVE0gY2hhbmdlIGlzIGhhcHBlbmluZyAoRXJpYykKCUxvY2sgYWNy b3NzIGNoYW5nZXMgdG8gdGhlIENUTSAoRXJpYykKCUhhbmRsZSBhbGxvY2F0aW9uIGZhaWx1cmUg aW4gb3V0IENUTSBwcml2IHN0YXRlIChFcmljKQoJTW92ZSBDVE0gb2JqZWN0IGluaXQgYmVmb3Jl IEZCREVWIHNldHVwIChFcmljKQoJQ2xlYW4gdXAgdGhlIENUTSBwcml2YXRlIG9iamVjdCBtYW5h Z2VyIG9uIHVubG9hZCAoRXJpYykKCnYzOiBOZXcgaW4gdGhlIHNlcmllcy4KCiBkcml2ZXJzL2dw dS9kcm0vdmM0L3ZjNF9jcnRjLmMgfCAgIDUgKwogZHJpdmVycy9ncHUvZHJtL3ZjNC92YzRfZHJ2 LmMgIHwgICAzICsKIGRyaXZlcnMvZ3B1L2RybS92YzQvdmM0X2Rydi5oICB8ICAgNCArCiBkcml2 ZXJzL2dwdS9kcm0vdmM0L3ZjNF9rbXMuYyAgfCAyMDQgKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKy0KIDQgZmlsZXMgY2hhbmdlZCwgMjE1IGluc2VydGlvbnMoKyksIDEg ZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdmM0L3ZjNF9jcnRjLmMg Yi9kcml2ZXJzL2dwdS9kcm0vdmM0L3ZjNF9jcnRjLmMKaW5kZXggMDhmZThkZDdkOGRmLi44M2Qz Yjc5MTJmYzIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS92YzQvdmM0X2NydGMuYworKysg Yi9kcml2ZXJzL2dwdS9kcm0vdmM0L3ZjNF9jcnRjLmMKQEAgLTEwMTgsNiArMTAxOCwxMSBAQCBz dGF0aWMgaW50IHZjNF9jcnRjX2JpbmQoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNl ICptYXN0ZXIsIHZvaWQgKmRhdGEpCiAJZHJtX21vZGVfY3J0Y19zZXRfZ2FtbWFfc2l6ZShjcnRj LCBBUlJBWV9TSVpFKHZjNF9jcnRjLT5sdXRfcikpOwogCWRybV9jcnRjX2VuYWJsZV9jb2xvcl9t Z210KGNydGMsIDAsIGZhbHNlLCBjcnRjLT5nYW1tYV9zaXplKTsKIAorCS8qIFdlIHN1cHBvcnQg Q1RNLCBidXQgb25seSBmb3Igb25lIENSVEMgYXQgYSB0aW1lLiBJdCdzIHRoZXJlZm9yZQorCSAq IGltcGxlbWVudGVkIGFzIHByaXZhdGUgZHJpdmVyIHN0YXRlIGluIHZjNF9rbXMsIG5vdCBoZXJl LgorCSAqLworCWRybV9jcnRjX2VuYWJsZV9jb2xvcl9tZ210KGNydGMsIDAsIHRydWUsIGNydGMt PmdhbW1hX3NpemUpOworCiAJLyogU2V0IHVwIHNvbWUgYXJiaXRyYXJ5IG51bWJlciBvZiBwbGFu ZXMuICBXZSdyZSBub3QgbGltaXRlZAogCSAqIGJ5IGEgc2V0IG51bWJlciBvZiBwaHlzaWNhbCBy ZWdpc3RlcnMsIGp1c3QgdGhlIHNwYWNlIGluCiAJICogdGhlIEhWUyAoMTZrKSBhbmQgaG93IHNt YWxsIGFuIHBsYW5lIGNhbiBiZSAoMjggYnl0ZXMpLgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL3ZjNC92YzRfZHJ2LmMgYi9kcml2ZXJzL2dwdS9kcm0vdmM0L3ZjNF9kcnYuYwppbmRleCA5 NGI5OWM5MDQyNWEuLjUyYmZlMGU5ZGRkYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3Zj NC92YzRfZHJ2LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL3ZjNC92YzRfZHJ2LmMKQEAgLTMyMCw2 ICszMjAsNyBAQCBzdGF0aWMgdm9pZCB2YzRfZHJtX3VuYmluZChzdHJ1Y3QgZGV2aWNlICpkZXYp CiB7CiAJc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiA9IHRvX3BsYXRmb3JtX2RldmljZShk ZXYpOwogCXN0cnVjdCBkcm1fZGV2aWNlICpkcm0gPSBwbGF0Zm9ybV9nZXRfZHJ2ZGF0YShwZGV2 KTsKKwlzdHJ1Y3QgdmM0X2RldiAqdmM0ID0gdG9fdmM0X2Rldihkcm0pOwogCiAJZHJtX2Rldl91 bnJlZ2lzdGVyKGRybSk7CiAKQEAgLTMyNyw2ICszMjgsOCBAQCBzdGF0aWMgdm9pZCB2YzRfZHJt X3VuYmluZChzdHJ1Y3QgZGV2aWNlICpkZXYpCiAKIAlkcm1fbW9kZV9jb25maWdfY2xlYW51cChk cm0pOwogCisJZHJtX2F0b21pY19wcml2YXRlX29ial9maW5pKCZ2YzQtPmN0bV9tYW5hZ2VyKTsK KwogCWRybV9kZXZfdW5yZWYoZHJtKTsKIH0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L3ZjNC92YzRfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vdmM0L3ZjNF9kcnYuaAppbmRleCA0Mjg4 NjE1YjY2YTIuLjIyNTg5ZDM5MDgzYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3ZjNC92 YzRfZHJ2LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL3ZjNC92YzRfZHJ2LmgKQEAgLTEwLDYgKzEw LDcgQEAKICNpbmNsdWRlIDxkcm0vZHJtUC5oPgogI2luY2x1ZGUgPGRybS9kcm1fZW5jb2Rlci5o PgogI2luY2x1ZGUgPGRybS9kcm1fZ2VtX2NtYV9oZWxwZXIuaD4KKyNpbmNsdWRlIDxkcm0vZHJt X2F0b21pYy5oPgogCiAjaW5jbHVkZSAidWFwaS9kcm0vdmM0X2RybS5oIgogCkBAIC0xOTMsNiAr MTk0LDkgQEAgc3RydWN0IHZjNF9kZXYgewogCX0gaGFuZ2NoZWNrOwogCiAJc3RydWN0IHNlbWFw aG9yZSBhc3luY19tb2Rlc2V0OworCisJc3RydWN0IGRybV9tb2Rlc2V0X2xvY2sgY3RtX3N0YXRl X2xvY2s7CisJc3RydWN0IGRybV9wcml2YXRlX29iaiBjdG1fbWFuYWdlcjsKIH07CiAKIHN0YXRp YyBpbmxpbmUgc3RydWN0IHZjNF9kZXYgKgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3Zj NC92YzRfa21zLmMgYi9kcml2ZXJzL2dwdS9kcm0vdmM0L3ZjNF9rbXMuYwppbmRleCBlNzkxZTQ5 OGEzZGQuLjhhNDExZTVmODc3NiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3ZjNC92YzRf a21zLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL3ZjNC92YzRfa21zLmMKQEAgLTIzLDYgKzIzLDEx NyBAQAogI2luY2x1ZGUgPGRybS9kcm1fZmJfY21hX2hlbHBlci5oPgogI2luY2x1ZGUgPGRybS9k cm1fZ2VtX2ZyYW1lYnVmZmVyX2hlbHBlci5oPgogI2luY2x1ZGUgInZjNF9kcnYuaCIKKyNpbmNs dWRlICJ2YzRfcmVncy5oIgorCitzdHJ1Y3QgdmM0X2N0bV9zdGF0ZSB7CisJc3RydWN0IGRybV9w cml2YXRlX3N0YXRlIGJhc2U7CisJc3RydWN0IGRybV9jb2xvcl9jdG0gKmN0bTsKKwlpbnQgZmlm bzsKK307CisKK3N0YXRpYyBzdHJ1Y3QgdmM0X2N0bV9zdGF0ZSAqdG9fdmM0X2N0bV9zdGF0ZShz dHJ1Y3QgZHJtX3ByaXZhdGVfc3RhdGUgKnByaXYpCit7CisJcmV0dXJuIGNvbnRhaW5lcl9vZihw cml2LCBzdHJ1Y3QgdmM0X2N0bV9zdGF0ZSwgYmFzZSk7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgdmM0 X2N0bV9zdGF0ZSAqdmM0X2dldF9jdG1fc3RhdGUoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0 YXRlLAorCQkJCQkgICAgICAgc3RydWN0IGRybV9wcml2YXRlX29iaiAqbWFuYWdlcikKK3sKKwlz dHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gc3RhdGUtPmRldjsKKwlzdHJ1Y3QgdmM0X2RldiAqdmM0 ID0gZGV2LT5kZXZfcHJpdmF0ZTsKKwlzdHJ1Y3QgZHJtX3ByaXZhdGVfc3RhdGUgKnByaXZfc3Rh dGU7CisJaW50IHJldDsKKworCXJldCA9IGRybV9tb2Rlc2V0X2xvY2soJnZjNC0+Y3RtX3N0YXRl X2xvY2ssIHN0YXRlLT5hY3F1aXJlX2N0eCk7CisJaWYgKHJldCkKKwkJcmV0dXJuIEVSUl9QVFIo cmV0KTsKKworCXByaXZfc3RhdGUgPSBkcm1fYXRvbWljX2dldF9wcml2YXRlX29ial9zdGF0ZShz dGF0ZSwgbWFuYWdlcik7CisJaWYgKElTX0VSUihwcml2X3N0YXRlKSkKKwkJcmV0dXJuIEVSUl9D QVNUKHByaXZfc3RhdGUpOworCisJcmV0dXJuIHRvX3ZjNF9jdG1fc3RhdGUocHJpdl9zdGF0ZSk7 Cit9CisKK3N0YXRpYyBzdHJ1Y3QgZHJtX3ByaXZhdGVfc3RhdGUgKgordmM0X2N0bV9kdXBsaWNh dGVfc3RhdGUoc3RydWN0IGRybV9wcml2YXRlX29iaiAqb2JqKQoreworCXN0cnVjdCB2YzRfY3Rt X3N0YXRlICpzdGF0ZTsKKworCXN0YXRlID0ga21lbWR1cChvYmotPnN0YXRlLCBzaXplb2YoKnN0 YXRlKSwgR0ZQX0tFUk5FTCk7CisJaWYgKCFzdGF0ZSkKKwkJcmV0dXJuIE5VTEw7CisKKwlfX2Ry bV9hdG9taWNfaGVscGVyX3ByaXZhdGVfb2JqX2R1cGxpY2F0ZV9zdGF0ZShvYmosICZzdGF0ZS0+ YmFzZSk7CisKKwlyZXR1cm4gJnN0YXRlLT5iYXNlOworfQorCitzdGF0aWMgdm9pZCB2YzRfY3Rt X2Rlc3Ryb3lfc3RhdGUoc3RydWN0IGRybV9wcml2YXRlX29iaiAqb2JqLAorCQkJCSAgc3RydWN0 IGRybV9wcml2YXRlX3N0YXRlICpzdGF0ZSkKK3sKKwlzdHJ1Y3QgdmM0X2N0bV9zdGF0ZSAqY3Rt X3N0YXRlID0gdG9fdmM0X2N0bV9zdGF0ZShzdGF0ZSk7CisKKwlrZnJlZShjdG1fc3RhdGUpOwor fQorCitzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9wcml2YXRlX3N0YXRlX2Z1bmNzIHZjNF9jdG1f c3RhdGVfZnVuY3MgPSB7CisJLmF0b21pY19kdXBsaWNhdGVfc3RhdGUgPSB2YzRfY3RtX2R1cGxp Y2F0ZV9zdGF0ZSwKKwkuYXRvbWljX2Rlc3Ryb3lfc3RhdGUgPSB2YzRfY3RtX2Rlc3Ryb3lfc3Rh dGUsCit9OworCisvKiBDb252ZXJ0cyBhIERSTSBTMzEuMzIgdmFsdWUgdG8gdGhlIEhXIFMwLjkg Zm9ybWF0LiAqLworc3RhdGljIHUxNiB2YzRfY3RtX3MzMV8zMl90b19zMF85KHU2NCBpbikKK3sK Kwl1MTYgcjsKKworCS8qIFNpZ24gYml0LiAqLworCXIgPSBpbiAmIEJJVF9VTEwoNjMpID8gQklU KDkpIDogMDsKKworCWlmICgoaW4gJiBHRU5NQVNLX1VMTCg2MiwgMzIpKSA+IDApIHsKKwkJLyog V2UgaGF2ZSB6ZXJvIGludGVnZXIgYml0cyBzbyB3ZSBjYW4gb25seSBzYXR1cmF0ZSBoZXJlLiAq LworCQlyIHw9IEdFTk1BU0soOCwgMCk7CisJfSBlbHNlIHsKKwkJLyogT3RoZXJ3aXNlIHRha2Ug dGhlIDkgbW9zdCBpbXBvcnRhbnQgZnJhY3Rpb25hbCBiaXRzLiAqLworCQlyIHw9IChpbiA+PiAy MykgJiBHRU5NQVNLKDgsIDApOworCX0KKworCXJldHVybiByOworfQorCitzdGF0aWMgdm9pZAor dmM0X2N0bV9jb21taXQoc3RydWN0IHZjNF9kZXYgKnZjNCwgc3RydWN0IGRybV9hdG9taWNfc3Rh dGUgKnN0YXRlKQoreworCXN0cnVjdCB2YzRfY3RtX3N0YXRlICpjdG1fc3RhdGUgPSB0b192YzRf Y3RtX3N0YXRlKHZjNC0+Y3RtX21hbmFnZXIuc3RhdGUpOworCXN0cnVjdCBkcm1fY29sb3JfY3Rt ICpjdG0gPSBjdG1fc3RhdGUtPmN0bTsKKworCWlmIChjdG1fc3RhdGUtPmZpZm8pIHsKKwkJSFZT X1dSSVRFKFNDQUxFUl9PTEVEQ09FRjIsCisJCQkgIFZDNF9TRVRfRklFTEQodmM0X2N0bV9zMzFf MzJfdG9fczBfOShjdG0tPm1hdHJpeFswXSksCisJCQkJCVNDQUxFUl9PTEVEQ09FRjJfUl9UT19S KSB8CisJCQkgIFZDNF9TRVRfRklFTEQodmM0X2N0bV9zMzFfMzJfdG9fczBfOShjdG0tPm1hdHJp eFszXSksCisJCQkJCVNDQUxFUl9PTEVEQ09FRjJfUl9UT19HKSB8CisJCQkgIFZDNF9TRVRfRklF TEQodmM0X2N0bV9zMzFfMzJfdG9fczBfOShjdG0tPm1hdHJpeFs2XSksCisJCQkJCVNDQUxFUl9P TEVEQ09FRjJfUl9UT19CKSk7CisJCUhWU19XUklURShTQ0FMRVJfT0xFRENPRUYxLAorCQkJICBW QzRfU0VUX0ZJRUxEKHZjNF9jdG1fczMxXzMyX3RvX3MwXzkoY3RtLT5tYXRyaXhbMV0pLAorCQkJ CQlTQ0FMRVJfT0xFRENPRUYxX0dfVE9fUikgfAorCQkJICBWQzRfU0VUX0ZJRUxEKHZjNF9jdG1f czMxXzMyX3RvX3MwXzkoY3RtLT5tYXRyaXhbNF0pLAorCQkJCQlTQ0FMRVJfT0xFRENPRUYxX0df VE9fRykgfAorCQkJICBWQzRfU0VUX0ZJRUxEKHZjNF9jdG1fczMxXzMyX3RvX3MwXzkoY3RtLT5t YXRyaXhbN10pLAorCQkJCQlTQ0FMRVJfT0xFRENPRUYxX0dfVE9fQikpOworCQlIVlNfV1JJVEUo U0NBTEVSX09MRURDT0VGMCwKKwkJCSAgVkM0X1NFVF9GSUVMRCh2YzRfY3RtX3MzMV8zMl90b19z MF85KGN0bS0+bWF0cml4WzJdKSwKKwkJCQkJU0NBTEVSX09MRURDT0VGMF9CX1RPX1IpIHwKKwkJ CSAgVkM0X1NFVF9GSUVMRCh2YzRfY3RtX3MzMV8zMl90b19zMF85KGN0bS0+bWF0cml4WzVdKSwK KwkJCQkJU0NBTEVSX09MRURDT0VGMF9CX1RPX0cpIHwKKwkJCSAgVkM0X1NFVF9GSUVMRCh2YzRf Y3RtX3MzMV8zMl90b19zMF85KGN0bS0+bWF0cml4WzhdKSwKKwkJCQkJU0NBTEVSX09MRURDT0VG MF9CX1RPX0IpKTsKKwl9CisKKwlIVlNfV1JJVEUoU0NBTEVSX09MRURPRkZTLAorCQkgIFZDNF9T RVRfRklFTEQoY3RtX3N0YXRlLT5maWZvLCBTQ0FMRVJfT0xFRE9GRlNfRElTUEZJRk8pKTsKK30K IAogc3RhdGljIHZvaWQKIHZjNF9hdG9taWNfY29tcGxldGVfY29tbWl0KHN0cnVjdCBkcm1fYXRv bWljX3N0YXRlICpzdGF0ZSkKQEAgLTM2LDYgKzE0Nyw4IEBAIHZjNF9hdG9taWNfY29tcGxldGVf Y29tbWl0KHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSkKIAogCWRybV9hdG9taWNfaGVs cGVyX2NvbW1pdF9tb2Rlc2V0X2Rpc2FibGVzKGRldiwgc3RhdGUpOwogCisJdmM0X2N0bV9jb21t aXQodmM0LCBzdGF0ZSk7CisKIAlkcm1fYXRvbWljX2hlbHBlcl9jb21taXRfcGxhbmVzKGRldiwg c3RhdGUsIDApOwogCiAJZHJtX2F0b21pY19oZWxwZXJfY29tbWl0X21vZGVzZXRfZW5hYmxlcyhk ZXYsIHN0YXRlKTsKQEAgLTIwNyw5ICszMjAsODkgQEAgc3RhdGljIHN0cnVjdCBkcm1fZnJhbWVi dWZmZXIgKnZjNF9mYl9jcmVhdGUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAlyZXR1cm4gZHJt X2dlbV9mYl9jcmVhdGUoZGV2LCBmaWxlX3ByaXYsIG1vZGVfY21kKTsKIH0KIAorLyogT3VyIENU TSBoYXMgc29tZSBwZWN1bGlhciBsaW1pdGF0aW9uczogd2UgY2FuIG9ubHkgZW5hYmxlIGl0IGZv ciBvbmUgQ1JUQworICogYXQgYSB0aW1lIGFuZCB0aGUgSFcgb25seSBzdXBwb3J0cyBTMC45IHNj YWxhcnMuIFRvIGFjY291bnQgZm9yIHRoZSBsYXR0ZXIsCisgKiB3ZSBkb24ndCBhbGxvdyB1c2Vy bGFuZCB0byBzZXQgYSBDVE0gdGhhdCB3ZSBoYXZlIG5vIGhvcGUgb2YgYXBwcm94aW1hdGluZy4K KyAqLworc3RhdGljIGludAordmM0X2N0bV9hdG9taWNfY2hlY2soc3RydWN0IGRybV9kZXZpY2Ug KmRldiwgc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKQoreworCXN0cnVjdCB2YzRfZGV2 ICp2YzQgPSB0b192YzRfZGV2KGRldik7CisJc3RydWN0IHZjNF9jdG1fc3RhdGUgKmN0bV9zdGF0 ZSA9IE5VTEw7CisJc3RydWN0IGRybV9jcnRjICpjcnRjOworCXN0cnVjdCBkcm1fY3J0Y19zdGF0 ZSAqb2xkX2NydGNfc3RhdGUsICpuZXdfY3J0Y19zdGF0ZTsKKwlzdHJ1Y3QgZHJtX2NvbG9yX2N0 bSAqY3RtOworCWludCBpOworCisJZm9yX2VhY2hfb2xkbmV3X2NydGNfaW5fc3RhdGUoc3RhdGUs IGNydGMsIG9sZF9jcnRjX3N0YXRlLCBuZXdfY3J0Y19zdGF0ZSwgaSkgeworCQkvKiBDVE0gaXMg YmVpbmcgZGlzYWJsZWQuICovCisJCWlmICghbmV3X2NydGNfc3RhdGUtPmN0bSAmJiBvbGRfY3J0 Y19zdGF0ZS0+Y3RtKSB7CisJCQljdG1fc3RhdGUgPSB2YzRfZ2V0X2N0bV9zdGF0ZShzdGF0ZSwg JnZjNC0+Y3RtX21hbmFnZXIpOworCQkJaWYgKElTX0VSUihjdG1fc3RhdGUpKQorCQkJCXJldHVy biBQVFJfRVJSKGN0bV9zdGF0ZSk7CisJCQljdG1fc3RhdGUtPmZpZm8gPSAwOworCQl9CisJfQor CisJZm9yX2VhY2hfb2xkbmV3X2NydGNfaW5fc3RhdGUoc3RhdGUsIGNydGMsIG9sZF9jcnRjX3N0 YXRlLCBuZXdfY3J0Y19zdGF0ZSwgaSkgeworCQlpZiAobmV3X2NydGNfc3RhdGUtPmN0bSA9PSBv bGRfY3J0Y19zdGF0ZS0+Y3RtKQorCQkJY29udGludWU7CisKKwkJaWYgKCFjdG1fc3RhdGUpIHsK KwkJCWN0bV9zdGF0ZSA9IHZjNF9nZXRfY3RtX3N0YXRlKHN0YXRlLCAmdmM0LT5jdG1fbWFuYWdl cik7CisJCQlpZiAoSVNfRVJSKGN0bV9zdGF0ZSkpCisJCQkJcmV0dXJuIFBUUl9FUlIoY3RtX3N0 YXRlKTsKKwkJfQorCisJCS8qIENUTSBpcyBiZWluZyBlbmFibGVkIG9yIHRoZSBtYXRyaXggY2hh bmdlZC4gKi8KKwkJaWYgKG5ld19jcnRjX3N0YXRlLT5jdG0pIHsKKwkJCS8qIGZpZm8gaXMgMS1i YXNlZCBzaW5jZSAwIGRpc2FibGVzIENUTS4gKi8KKwkJCWludCBmaWZvID0gdG9fdmM0X2NydGMo Y3J0YyktPmNoYW5uZWwgKyAxOworCisJCQkvKiBDaGVjayB1c2VybGFuZCBpc24ndCB0cnlpbmcg dG8gdHVybiBvbiBDVE0gZm9yIG1vcmUKKwkJCSAqIHRoYW4gb25lIENSVEMgYXQgYSB0aW1lLgor CQkJICovCisJCQlpZiAoY3RtX3N0YXRlLT5maWZvICYmIGN0bV9zdGF0ZS0+ZmlmbyAhPSBmaWZv KSB7CisJCQkJRFJNX0RFQlVHX0RSSVZFUigiVG9vIG1hbnkgQ1RNIGNvbmZpZ3VyZWRcbiIpOwor CQkJCXJldHVybiAtRUlOVkFMOworCQkJfQorCisJCQkvKiBDaGVjayB3ZSBjYW4gYXBwcm94aW1h dGUgdGhlIHNwZWNpZmllZCBDVE0uCisJCQkgKiBXZSBkaXNhbGxvdyBzY2FsYXJzIHxjfCA+IDEu MCBzaW5jZSB0aGUgSFcgaGFzCisJCQkgKiBubyBpbnRlZ2VyIGJpdHMuCisJCQkgKi8KKwkJCWN0 bSA9IG5ld19jcnRjX3N0YXRlLT5jdG0tPmRhdGE7CisJCQlmb3IgKGkgPSAwOyBpIDwgQVJSQVlf U0laRShjdG0tPm1hdHJpeCk7IGkrKykgeworCQkJCXU2NCB2YWwgPSBjdG0tPm1hdHJpeFtpXTsK KworCQkJCXZhbCAmPSB+QklUX1VMTCg2Myk7CisJCQkJaWYgKHZhbCA+IEJJVF9VTEwoMzIpKQor CQkJCQlyZXR1cm4gLUVJTlZBTDsKKwkJCX0KKworCQkJY3RtX3N0YXRlLT5maWZvID0gZmlmbzsK KwkJCWN0bV9zdGF0ZS0+Y3RtID0gY3RtOworCQl9CisJfQorCisJcmV0dXJuIDA7Cit9CisKK3N0 YXRpYyBpbnQKK3ZjNF9hdG9taWNfY2hlY2soc3RydWN0IGRybV9kZXZpY2UgKmRldiwgc3RydWN0 IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKQoreworCWludCByZXQ7CisKKwlyZXQgPSB2YzRfY3Rt X2F0b21pY19jaGVjayhkZXYsIHN0YXRlKTsKKwlpZiAocmV0IDwgMCkKKwkJcmV0dXJuIHJldDsK KworCXJldHVybiBkcm1fYXRvbWljX2hlbHBlcl9jaGVjayhkZXYsIHN0YXRlKTsKK30KKwogc3Rh dGljIGNvbnN0IHN0cnVjdCBkcm1fbW9kZV9jb25maWdfZnVuY3MgdmM0X21vZGVfZnVuY3MgPSB7 CiAJLm91dHB1dF9wb2xsX2NoYW5nZWQgPSBkcm1fZmJfaGVscGVyX291dHB1dF9wb2xsX2NoYW5n ZWQsCi0JLmF0b21pY19jaGVjayA9IGRybV9hdG9taWNfaGVscGVyX2NoZWNrLAorCS5hdG9taWNf Y2hlY2sgPSB2YzRfYXRvbWljX2NoZWNrLAogCS5hdG9taWNfY29tbWl0ID0gdmM0X2F0b21pY19j b21taXQsCiAJLmZiX2NyZWF0ZSA9IHZjNF9mYl9jcmVhdGUsCiB9OwpAQCAtMjE3LDYgKzQxMCw3 IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX21vZGVfY29uZmlnX2Z1bmNzIHZjNF9tb2RlX2Z1 bmNzID0gewogaW50IHZjNF9rbXNfbG9hZChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogewogCXN0 cnVjdCB2YzRfZGV2ICp2YzQgPSB0b192YzRfZGV2KGRldik7CisJc3RydWN0IHZjNF9jdG1fc3Rh dGUgKmN0bV9zdGF0ZTsKIAlpbnQgcmV0OwogCiAJc2VtYV9pbml0KCZ2YzQtPmFzeW5jX21vZGVz ZXQsIDEpOwpAQCAtMjM3LDYgKzQzMSwxNCBAQCBpbnQgdmM0X2ttc19sb2FkKHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYpCiAJZGV2LT5tb2RlX2NvbmZpZy5hc3luY19wYWdlX2ZsaXAgPSB0cnVlOwog CWRldi0+bW9kZV9jb25maWcuYWxsb3dfZmJfbW9kaWZpZXJzID0gdHJ1ZTsKIAorCWRybV9tb2Rl c2V0X2xvY2tfaW5pdCgmdmM0LT5jdG1fc3RhdGVfbG9jayk7CisKKwljdG1fc3RhdGUgPSBremFs bG9jKHNpemVvZigqY3RtX3N0YXRlKSwgR0ZQX0tFUk5FTCk7CisJaWYgKCFjdG1fc3RhdGUpCisJ CXJldHVybiAtRU5PTUVNOworCWRybV9hdG9taWNfcHJpdmF0ZV9vYmpfaW5pdCgmdmM0LT5jdG1f bWFuYWdlciwgJmN0bV9zdGF0ZS0+YmFzZSwKKwkJCQkgICAgJnZjNF9jdG1fc3RhdGVfZnVuY3Mp OworCiAJZHJtX21vZGVfY29uZmlnX3Jlc2V0KGRldik7CiAKIAlpZiAoZGV2LT5tb2RlX2NvbmZp Zy5udW1fY29ubmVjdG9yKQotLSAKMi4xNC4xCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0 cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9s aXN0aW5mby9kcmktZGV2ZWwK