From mboxrd@z Thu Jan 1 00:00:00 1970 From: Rob Clark Subject: [PATCH 1/5] drm/msm/mdp5: introduce mdp5_hw_pipe Date: Sat, 5 Nov 2016 12:25:57 -0400 Message-ID: <1478363161-29293-2-git-send-email-robdclark@gmail.com> References: <1478363161-29293-1-git-send-email-robdclark@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1478363161-29293-1-git-send-email-robdclark@gmail.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: linux-arm-msm@vger.kernel.org, freedreno@lists.freedesktop.org List-Id: linux-arm-msm@vger.kernel.org U3BsaXQgb3V0IHRoZSBoYXJkd2FyZSBwaXBlIHNwZWNpZmljcyBmcm9tIG1kcDVfcGxhbmUuICBU byBzdGFydCwgdGhlIGh3CnBpcGVzIGFyZSBzdGF0aWNhbGx5IGFzc2lnbmVkIHRvIHBsYW5lcywg YnV0IG5leHQgc3RlcCBpcyB0byBhc3NpZ24gdGhlCmh3IHBpcGVzIGR1cmluZyBwbGFuZS0+YXRv bWljX2NoZWNrKCkgYmFzZWQgb24gcmVxdWVzdGVkIGNhcHMgKHNjYWxpbmcsCllVViwgZXRjKS4g IEFuZCB0aGVuIGh3IHBpcGUgcmUtYXNzaWdubWVudCBpZiByZXF1aXJlZCBpZiByZXF1aXJlZCBT TVAKYmxvY2tzIGNoYW5nZXMuCgpTaWduZWQtb2ZmLWJ5OiBSb2IgQ2xhcmsgPHJvYmRjbGFya0Bn bWFpbC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL21zbS9NYWtlZmlsZSAgICAgICAgICAgICAg fCAgIDEgKwogZHJpdmVycy9ncHUvZHJtL21zbS9tZHAvbWRwNS9tZHA1X2ttcy5jICAgfCAxMjYg KysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vbXNtL21kcC9t ZHA1L21kcDVfa21zLmggICB8ICAgNyArLQogZHJpdmVycy9ncHUvZHJtL21zbS9tZHAvbWRwNS9t ZHA1X3BpcGUuYyAgfCAgNDMgKysrKysrKysrKwogZHJpdmVycy9ncHUvZHJtL21zbS9tZHAvbWRw NS9tZHA1X3BpcGUuaCAgfCAgMzkgKysrKysrKysrCiBkcml2ZXJzL2dwdS9kcm0vbXNtL21kcC9t ZHA1L21kcDVfcGxhbmUuYyB8ICA2NiArKysrKysrLS0tLS0tLS0tCiA2IGZpbGVzIGNoYW5nZWQs IDE5NyBpbnNlcnRpb25zKCspLCA4NSBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBk cml2ZXJzL2dwdS9kcm0vbXNtL21kcC9tZHA1L21kcDVfcGlwZS5jCiBjcmVhdGUgbW9kZSAxMDA2 NDQgZHJpdmVycy9ncHUvZHJtL21zbS9tZHAvbWRwNS9tZHA1X3BpcGUuaAoKZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9tc20vTWFrZWZpbGUgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL01ha2Vm aWxlCmluZGV4IGZiNWJlM2UuLjkwZjY2YzQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9t c20vTWFrZWZpbGUKKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9NYWtlZmlsZQpAQCAtMzcsNiAr MzcsNyBAQCBtc20teSA6PSBcCiAJbWRwL21kcDUvbWRwNV9pcnEubyBcCiAJbWRwL21kcDUvbWRw NV9tZHNzLm8gXAogCW1kcC9tZHA1L21kcDVfa21zLm8gXAorCW1kcC9tZHA1L21kcDVfcGlwZS5v IFwKIAltZHAvbWRwNS9tZHA1X3BsYW5lLm8gXAogCW1kcC9tZHA1L21kcDVfc21wLm8gXAogCW1z bV9hdG9taWMubyBcCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL21kcC9tZHA1L21k cDVfa21zLmMgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL21kcC9tZHA1L21kcDVfa21zLmMKaW5kZXgg ZjEyODhjNy4uZDNkNDVlZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9tZHAvbWRw NS9tZHA1X2ttcy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vbWRwL21kcDUvbWRwNV9rbXMu YwpAQCAtMTE5LDYgKzExOSwxMCBAQCBzdGF0aWMgdm9pZCBtZHA1X2ttc19kZXN0cm95KHN0cnVj dCBtc21fa21zICprbXMpCiB7CiAJc3RydWN0IG1kcDVfa21zICptZHA1X2ttcyA9IHRvX21kcDVf a21zKHRvX21kcF9rbXMoa21zKSk7CiAJc3RydWN0IG1zbV9nZW1fYWRkcmVzc19zcGFjZSAqYXNw YWNlID0gbWRwNV9rbXMtPmFzcGFjZTsKKwlpbnQgaTsKKworCWZvciAoaSA9IDA7IGkgPCBtZHA1 X2ttcy0+bnVtX2h3cGlwZXM7IGkrKykKKwkJbWRwNV9waXBlX2Rlc3Ryb3kobWRwNV9rbXMtPmh3 cGlwZXNbaV0pOwogCiAJaWYgKGFzcGFjZSkgewogCQlhc3BhY2UtPm1tdS0+ZnVuY3MtPmRldGFj aChhc3BhY2UtPm1tdSwKQEAgLTMyMywxNSArMzI3LDYgQEAgc3RhdGljIGludCBtb2Rlc2V0X2lu aXRfaW50ZihzdHJ1Y3QgbWRwNV9rbXMgKm1kcDVfa21zLCBpbnQgaW50Zl9udW0pCiAKIHN0YXRp YyBpbnQgbW9kZXNldF9pbml0KHN0cnVjdCBtZHA1X2ttcyAqbWRwNV9rbXMpCiB7Ci0Jc3RhdGlj IGNvbnN0IGVudW0gbWRwNV9waXBlIHJnYl9wbGFuZXNbXSA9IHsKLQkJCVNTUFBfUkdCMCwgU1NQ UF9SR0IxLCBTU1BQX1JHQjIsIFNTUFBfUkdCMywKLQl9OwotCXN0YXRpYyBjb25zdCBlbnVtIG1k cDVfcGlwZSB2aWdfcGxhbmVzW10gPSB7Ci0JCQlTU1BQX1ZJRzAsIFNTUFBfVklHMSwgU1NQUF9W SUcyLCBTU1BQX1ZJRzMsCi0JfTsKLQlzdGF0aWMgY29uc3QgZW51bSBtZHA1X3BpcGUgZG1hX3Bs YW5lc1tdID0gewotCQkJU1NQUF9ETUEwLCBTU1BQX0RNQTEsCi0JfTsKIAlzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2ID0gbWRwNV9rbXMtPmRldjsKIAlzdHJ1Y3QgbXNtX2RybV9wcml2YXRlICpwcml2 ID0gZGV2LT5kZXZfcHJpdmF0ZTsKIAljb25zdCBzdHJ1Y3QgbWRwNV9jZmdfaHcgKmh3X2NmZzsK QEAgLTMzOSw1OCArMzM0LDM0IEBAIHN0YXRpYyBpbnQgbW9kZXNldF9pbml0KHN0cnVjdCBtZHA1 X2ttcyAqbWRwNV9rbXMpCiAKIAlod19jZmcgPSBtZHA1X2NmZ19nZXRfaHdfY29uZmlnKG1kcDVf a21zLT5jZmcpOwogCi0JLyogY29uc3RydWN0IENSVENzIGFuZCB0aGVpciBwcml2YXRlIHBsYW5l czogKi8KLQlmb3IgKGkgPSAwOyBpIDwgaHdfY2ZnLT5waXBlX3JnYi5jb3VudDsgaSsrKSB7CisJ LyogQ29uc3RydWN0IHBsYW5lcyBlcXVhbGluZyB0aGUgbnVtYmVyIG9mIGh3IHBpcGVzLCBhbmQg Q1JUQ3MKKwkgKiBmb3IgdGhlIE4gbGF5ZXItbWl4ZXJzIChMTSkuICBUaGUgZmlyc3QgTiBwbGFu ZXMgYmVjb21lIHByaW1hcnkKKwkgKiBwbGFuZXMgZm9yIHRoZSBDUlRDcywgd2l0aCB0aGUgcmVt YWluZGVyIGFzIG92ZXJsYXkgcGxhbmVzOgorCSAqLworCWZvciAoaSA9IDA7IGkgPCBtZHA1X2tt cy0+bnVtX2h3cGlwZXM7IGkrKykgeworCQlib29sIHByaW1hcnkgPSBpIDwgbWRwNV9jZmctPmxt LmNvdW50OwogCQlzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZTsKIAkJc3RydWN0IGRybV9jcnRjICpj cnRjOwogCi0JCXBsYW5lID0gbWRwNV9wbGFuZV9pbml0KGRldiwgcmdiX3BsYW5lc1tpXSwgdHJ1 ZSwKLQkJCWh3X2NmZy0+cGlwZV9yZ2IuYmFzZVtpXSwgaHdfY2ZnLT5waXBlX3JnYi5jYXBzKTsK KwkJcGxhbmUgPSBtZHA1X3BsYW5lX2luaXQoZGV2LCBtZHA1X2ttcy0+aHdwaXBlc1tpXSwgcHJp bWFyeSk7CiAJCWlmIChJU19FUlIocGxhbmUpKSB7CiAJCQlyZXQgPSBQVFJfRVJSKHBsYW5lKTsK LQkJCWRldl9lcnIoZGV2LT5kZXYsICJmYWlsZWQgdG8gY29uc3RydWN0IHBsYW5lIGZvciAlcyAo JWQpXG4iLAotCQkJCQlwaXBlMm5hbWUocmdiX3BsYW5lc1tpXSksIHJldCk7CisJCQlkZXZfZXJy KGRldi0+ZGV2LCAiZmFpbGVkIHRvIGNvbnN0cnVjdCBwbGFuZSAlZCAoJWQpXG4iLCBpLCByZXQp OwogCQkJZ290byBmYWlsOwogCQl9CiAKKwkJaWYgKCFwcmltYXJ5KQorCQkJY29udGludWU7CisK IAkJY3J0YyAgPSBtZHA1X2NydGNfaW5pdChkZXYsIHBsYW5lLCBpKTsKIAkJaWYgKElTX0VSUihj cnRjKSkgewogCQkJcmV0ID0gUFRSX0VSUihjcnRjKTsKLQkJCWRldl9lcnIoZGV2LT5kZXYsICJm YWlsZWQgdG8gY29uc3RydWN0IGNydGMgZm9yICVzICglZClcbiIsCi0JCQkJCXBpcGUybmFtZShy Z2JfcGxhbmVzW2ldKSwgcmV0KTsKKwkJCWRldl9lcnIoZGV2LT5kZXYsICJmYWlsZWQgdG8gY29u c3RydWN0IGNydGMgJWQgKCVkKVxuIiwgaSwgcmV0KTsKIAkJCWdvdG8gZmFpbDsKIAkJfQogCQlw cml2LT5jcnRjc1twcml2LT5udW1fY3J0Y3MrK10gPSBjcnRjOwogCX0KIAotCS8qIENvbnN0cnVj dCB2aWRlbyBwbGFuZXM6ICovCi0JZm9yIChpID0gMDsgaSA8IGh3X2NmZy0+cGlwZV92aWcuY291 bnQ7IGkrKykgewotCQlzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZTsKLQotCQlwbGFuZSA9IG1kcDVf cGxhbmVfaW5pdChkZXYsIHZpZ19wbGFuZXNbaV0sIGZhbHNlLAotCQkJaHdfY2ZnLT5waXBlX3Zp Zy5iYXNlW2ldLCBod19jZmctPnBpcGVfdmlnLmNhcHMpOwotCQlpZiAoSVNfRVJSKHBsYW5lKSkg ewotCQkJcmV0ID0gUFRSX0VSUihwbGFuZSk7Ci0JCQlkZXZfZXJyKGRldi0+ZGV2LCAiZmFpbGVk IHRvIGNvbnN0cnVjdCAlcyBwbGFuZTogJWRcbiIsCi0JCQkJCXBpcGUybmFtZSh2aWdfcGxhbmVz W2ldKSwgcmV0KTsKLQkJCWdvdG8gZmFpbDsKLQkJfQotCX0KLQotCS8qIERNQSBwbGFuZXMgKi8K LQlmb3IgKGkgPSAwOyBpIDwgaHdfY2ZnLT5waXBlX2RtYS5jb3VudDsgaSsrKSB7Ci0JCXN0cnVj dCBkcm1fcGxhbmUgKnBsYW5lOwotCi0JCXBsYW5lID0gbWRwNV9wbGFuZV9pbml0KGRldiwgZG1h X3BsYW5lc1tpXSwgZmFsc2UsCi0JCQkJaHdfY2ZnLT5waXBlX2RtYS5iYXNlW2ldLCBod19jZmct PnBpcGVfZG1hLmNhcHMpOwotCQlpZiAoSVNfRVJSKHBsYW5lKSkgewotCQkJcmV0ID0gUFRSX0VS UihwbGFuZSk7Ci0JCQlkZXZfZXJyKGRldi0+ZGV2LCAiZmFpbGVkIHRvIGNvbnN0cnVjdCAlcyBw bGFuZTogJWRcbiIsCi0JCQkJCXBpcGUybmFtZShkbWFfcGxhbmVzW2ldKSwgcmV0KTsKLQkJCWdv dG8gZmFpbDsKLQkJfQotCX0KLQogCS8qIENvbnN0cnVjdCBlbmNvZGVycyBhbmQgbW9kZXNldCBp bml0aWFsaXplIGNvbm5lY3RvciBkZXZpY2VzCiAJICogZm9yIGVhY2ggZXh0ZXJuYWwgZGlzcGxh eSBpbnRlcmZhY2UuCiAJICovCkBAIC02NzYsNiArNjQ3LDY3IEBAIHN0YXRpYyB2b2lkIG1kcDVf ZGVzdHJveShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQogCQlwbV9ydW50aW1lX2Rpc2Fi bGUoJnBkZXYtPmRldik7CiB9CiAKK3N0YXRpYyBpbnQgY29uc3RydWN0X3BpcGVzKHN0cnVjdCBt ZHA1X2ttcyAqbWRwNV9rbXMsIGludCBjbnQsCisJCWNvbnN0IGVudW0gbWRwNV9waXBlICpwaXBl cywgY29uc3QgdWludDMyX3QgKm9mZnNldHMsCisJCXVpbnQzMl90IGNhcHMpCit7CisJc3RydWN0 IGRybV9kZXZpY2UgKmRldiA9IG1kcDVfa21zLT5kZXY7CisJaW50IGksIHJldDsKKworCWZvciAo aSA9IDA7IGkgPCBjbnQ7IGkrKykgeworCQlzdHJ1Y3QgbWRwNV9od19waXBlICpod3BpcGU7CisK KwkJaHdwaXBlID0gbWRwNV9waXBlX2luaXQocGlwZXNbaV0sIG9mZnNldHNbaV0sIGNhcHMpOwor CQlpZiAoSVNfRVJSKGh3cGlwZSkpIHsKKwkJCXJldCA9IFBUUl9FUlIoaHdwaXBlKTsKKwkJCWRl dl9lcnIoZGV2LT5kZXYsICJmYWlsZWQgdG8gY29uc3RydWN0IHBpcGUgZm9yICVzICglZClcbiIs CisJCQkJCXBpcGUybmFtZShwaXBlc1tpXSksIHJldCk7CisJCQlyZXR1cm4gcmV0OworCQl9CisJ CWh3cGlwZS0+aWR4ID0gbWRwNV9rbXMtPm51bV9od3BpcGVzOworCQltZHA1X2ttcy0+aHdwaXBl c1ttZHA1X2ttcy0+bnVtX2h3cGlwZXMrK10gPSBod3BpcGU7CisJfQorCisJcmV0dXJuIDA7Cit9 CisKK3N0YXRpYyBpbnQgaHdwaXBlX2luaXQoc3RydWN0IG1kcDVfa21zICptZHA1X2ttcykKK3sK KwlzdGF0aWMgY29uc3QgZW51bSBtZHA1X3BpcGUgcmdiX3BsYW5lc1tdID0geworCQkJU1NQUF9S R0IwLCBTU1BQX1JHQjEsIFNTUFBfUkdCMiwgU1NQUF9SR0IzLAorCX07CisJc3RhdGljIGNvbnN0 IGVudW0gbWRwNV9waXBlIHZpZ19wbGFuZXNbXSA9IHsKKwkJCVNTUFBfVklHMCwgU1NQUF9WSUcx LCBTU1BQX1ZJRzIsIFNTUFBfVklHMywKKwl9OworCXN0YXRpYyBjb25zdCBlbnVtIG1kcDVfcGlw ZSBkbWFfcGxhbmVzW10gPSB7CisJCQlTU1BQX0RNQTAsIFNTUFBfRE1BMSwKKwl9OworCWNvbnN0 IHN0cnVjdCBtZHA1X2NmZ19odyAqaHdfY2ZnOworCWludCByZXQ7CisKKwlod19jZmcgPSBtZHA1 X2NmZ19nZXRfaHdfY29uZmlnKG1kcDVfa21zLT5jZmcpOworCisJLyogQ29uc3RydWN0IFJHQiBw aXBlczogKi8KKwlyZXQgPSBjb25zdHJ1Y3RfcGlwZXMobWRwNV9rbXMsIGh3X2NmZy0+cGlwZV9y Z2IuY291bnQsIHJnYl9wbGFuZXMsCisJCQlod19jZmctPnBpcGVfcmdiLmJhc2UsIGh3X2NmZy0+ cGlwZV9yZ2IuY2Fwcyk7CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsKKworCS8qIENvbnN0cnVj dCB2aWRlbyAoVklHKSBwaXBlczogKi8KKwlyZXQgPSBjb25zdHJ1Y3RfcGlwZXMobWRwNV9rbXMs IGh3X2NmZy0+cGlwZV92aWcuY291bnQsIHZpZ19wbGFuZXMsCisJCQlod19jZmctPnBpcGVfdmln LmJhc2UsIGh3X2NmZy0+cGlwZV92aWcuY2Fwcyk7CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsK KworCS8qIENvbnN0cnVjdCBETUEgcGlwZXM6ICovCisJcmV0ID0gY29uc3RydWN0X3BpcGVzKG1k cDVfa21zLCBod19jZmctPnBpcGVfZG1hLmNvdW50LCBkbWFfcGxhbmVzLAorCQkJaHdfY2ZnLT5w aXBlX2RtYS5iYXNlLCBod19jZmctPnBpcGVfZG1hLmNhcHMpOworCWlmIChyZXQpCisJCXJldHVy biByZXQ7CisKKwlyZXR1cm4gMDsKK30KKwogc3RhdGljIGludCBtZHA1X2luaXQoc3RydWN0IHBs YXRmb3JtX2RldmljZSAqcGRldiwgc3RydWN0IGRybV9kZXZpY2UgKmRldikKIHsKIAlzdHJ1Y3Qg bXNtX2RybV9wcml2YXRlICpwcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKQEAgLTc2NSw2ICs3OTcs MTAgQEAgc3RhdGljIGludCBtZHA1X2luaXQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiwg c3RydWN0IGRybV9kZXZpY2UgKmRldikKIAkJZ290byBmYWlsOwogCX0KIAorCXJldCA9IGh3cGlw ZV9pbml0KG1kcDVfa21zKTsKKwlpZiAocmV0KQorCQlnb3RvIGZhaWw7CisKIAkvKiBzZXQgdW5p bml0LWVkIGttcyAqLwogCXByaXYtPmttcyA9ICZtZHA1X2ttcy0+YmFzZS5iYXNlOwogCmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL21kcC9tZHA1L21kcDVfa21zLmggYi9kcml2ZXJz L2dwdS9kcm0vbXNtL21kcC9tZHA1L21kcDVfa21zLmgKaW5kZXggZDVlNDBhZi4uODgxMjBjNSAx MDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9tZHAvbWRwNS9tZHA1X2ttcy5oCisrKyBi L2RyaXZlcnMvZ3B1L2RybS9tc20vbWRwL21kcDUvbWRwNV9rbXMuaApAQCAtMjQsNiArMjQsNyBA QAogI2luY2x1ZGUgIm1kcDVfY2ZnLmgiCS8qIG11c3QgYmUgaW5jbHVkZWQgYmVmb3JlIG1kcDUu eG1sLmggKi8KICNpbmNsdWRlICJtZHA1LnhtbC5oIgogI2luY2x1ZGUgIm1kcDVfY3RsLmgiCisj aW5jbHVkZSAibWRwNV9waXBlLmgiCiAjaW5jbHVkZSAibWRwNV9zbXAuaCIKIAogc3RydWN0IG1k cDVfa21zIHsKQEAgLTMzLDYgKzM0LDkgQEAgc3RydWN0IG1kcDVfa21zIHsKIAogCXN0cnVjdCBw bGF0Zm9ybV9kZXZpY2UgKnBkZXY7CiAKKwl1bnNpZ25lZCBudW1faHdwaXBlczsKKwlzdHJ1Y3Qg bWRwNV9od19waXBlICpod3BpcGVzWzE2XTsKKwogCXN0cnVjdCBtZHA1X2NmZ19oYW5kbGVyICpj Zmc7CiAJdWludDMyX3QgY2FwczsJLyogTURQIGNhcGFiaWxpdGllcyAoTURQX0NBUF9YWFggYml0 cykgKi8KIApAQCAtMjA3LDggKzIxMSw3IEBAIHZvaWQgbWRwNV9wbGFuZV9jb21wbGV0ZV9jb21t aXQoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCiAJc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqc3Rh dGUpOwogZW51bSBtZHA1X3BpcGUgbWRwNV9wbGFuZV9waXBlKHN0cnVjdCBkcm1fcGxhbmUgKnBs YW5lKTsKIHN0cnVjdCBkcm1fcGxhbmUgKm1kcDVfcGxhbmVfaW5pdChzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2LAotCQllbnVtIG1kcDVfcGlwZSBwaXBlLCBib29sIHByaXZhdGVfcGxhbmUsCi0JCXVp bnQzMl90IHJlZ19vZmZzZXQsIHVpbnQzMl90IGNhcHMpOworCQlzdHJ1Y3QgbWRwNV9od19waXBl ICpod3BpcGUsIGJvb2wgcHJpbWFyeSk7CiAKIHVpbnQzMl90IG1kcDVfY3J0Y192Ymxhbmsoc3Ry dWN0IGRybV9jcnRjICpjcnRjKTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9t ZHAvbWRwNS9tZHA1X3BpcGUuYyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vbWRwL21kcDUvbWRwNV9w aXBlLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2YzZThlNTAKLS0tIC9k ZXYvbnVsbAorKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL21kcC9tZHA1L21kcDVfcGlwZS5jCkBA IC0wLDAgKzEsNDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgUmVkIEhhdAorICogQXV0 aG9yOiBSb2IgQ2xhcmsgPHJvYmRjbGFya0BnbWFpbC5jb20+CisgKgorICogVGhpcyBwcm9ncmFt IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkg aXQKKyAqIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug dmVyc2lvbiAyIGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv bi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp dCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQKKyAqIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvcgorICogRklUTkVT UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGZvcgorICogbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNl aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nIHdpdGgK KyAqIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5z ZXMvPi4KKyAqLworCisjaW5jbHVkZSAibWRwNV9rbXMuaCIKKwordm9pZCBtZHA1X3BpcGVfZGVz dHJveShzdHJ1Y3QgbWRwNV9od19waXBlICpod3BpcGUpCit7CisJa2ZyZWUoaHdwaXBlKTsKK30K Kworc3RydWN0IG1kcDVfaHdfcGlwZSAqbWRwNV9waXBlX2luaXQoZW51bSBtZHA1X3BpcGUgcGlw ZSwKKwkJdWludDMyX3QgcmVnX29mZnNldCwgdWludDMyX3QgY2FwcykKK3sKKwlzdHJ1Y3QgbWRw NV9od19waXBlICpod3BpcGU7CisKKwlod3BpcGUgPSBremFsbG9jKHNpemVvZigqaHdwaXBlKSwg R0ZQX0tFUk5FTCk7CisJaWYgKCFod3BpcGUpCisJCXJldHVybiBFUlJfUFRSKC1FTk9NRU0pOwor CisJaHdwaXBlLT5uYW1lID0gcGlwZTJuYW1lKHBpcGUpOworCWh3cGlwZS0+cGlwZSA9IHBpcGU7 CisJaHdwaXBlLT5yZWdfb2Zmc2V0ID0gcmVnX29mZnNldDsKKwlod3BpcGUtPmNhcHMgPSBjYXBz OworCWh3cGlwZS0+Zmx1c2hfbWFzayA9IG1kcF9jdGxfZmx1c2hfbWFza19waXBlKHBpcGUpOwor CisJc3Bpbl9sb2NrX2luaXQoJmh3cGlwZS0+cGlwZV9sb2NrKTsKKworCXJldHVybiBod3BpcGU7 Cit9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL21kcC9tZHA1L21kcDVfcGlwZS5o IGIvZHJpdmVycy9ncHUvZHJtL21zbS9tZHAvbWRwNS9tZHA1X3BpcGUuaApuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwLi5kY2ZhMGUwCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVy cy9ncHUvZHJtL21zbS9tZHAvbWRwNS9tZHA1X3BpcGUuaApAQCAtMCwwICsxLDM5IEBACisvKgor ICogQ29weXJpZ2h0IChDKSAyMDE2IFJlZCBIYXQKKyAqIEF1dGhvcjogUm9iIENsYXJrIDxyb2Jk Y2xhcmtAZ21haWwuY29tPgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5 b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0CisgKiB1bmRlciB0aGUgdGVy bXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcyBwdWJsaXNo ZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogVGhpcyBwcm9n cmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1 dCBXSVRIT1VUCisgKiBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy YW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IKKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ VVJQT1NFLiAgU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IKKyAqIG1vcmUg ZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZyB3aXRoCisgKiB0aGlzIHByb2dyYW0uICBJ ZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisgKi8KKworI2lmbmRl ZiBfX01EUDVfUElQRV9IX18KKyNkZWZpbmUgX19NRFA1X1BJUEVfSF9fCisKKy8qIHJlcHJlc2Vu dHMgYSBodyBwaXBlLCB3aGljaCBpcyBkeW5hbWljYWxseSBhc3NpZ25lZCB0byBhIHBsYW5lICov CitzdHJ1Y3QgbWRwNV9od19waXBlIHsKKwlpbnQgaWR4OworCisJY29uc3QgY2hhciAqbmFtZTsK KwllbnVtIG1kcDVfcGlwZSBwaXBlOworCisJc3BpbmxvY2tfdCBwaXBlX2xvY2s7ICAgICAvKiBw cm90ZWN0IFJFR19NRFA1X1BJUEVfKiByZWdpc3RlcnMgKi8KKwl1aW50MzJfdCByZWdfb2Zmc2V0 OworCXVpbnQzMl90IGNhcHM7CisKKwl1aW50MzJfdCBmbHVzaF9tYXNrOyAgICAgIC8qIHVzZWQg dG8gY29tbWl0IHBpcGUgcmVnaXN0ZXJzICovCit9OworCitzdHJ1Y3QgbWRwNV9od19waXBlICpt ZHA1X3BpcGVfaW5pdChlbnVtIG1kcDVfcGlwZSBwaXBlLAorCQl1aW50MzJfdCByZWdfb2Zmc2V0 LCB1aW50MzJfdCBjYXBzKTsKK3ZvaWQgbWRwNV9waXBlX2Rlc3Ryb3koc3RydWN0IG1kcDVfaHdf cGlwZSAqaHdwaXBlKTsKKworI2VuZGlmIC8qIF9fTURQNV9QSVBFX0hfXyAqLwpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL21zbS9tZHAvbWRwNS9tZHA1X3BsYW5lLmMgYi9kcml2ZXJzL2dw dS9kcm0vbXNtL21kcC9tZHA1L21kcDVfcGxhbmUuYwppbmRleCA3YjQ2Y2ZiLi5lNGVjZmViIDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL21kcC9tZHA1L21kcDVfcGxhbmUuYworKysg Yi9kcml2ZXJzL2dwdS9kcm0vbXNtL21kcC9tZHA1L21kcDVfcGxhbmUuYwpAQCAtMjIsMTMgKzIy LDcgQEAKIHN0cnVjdCBtZHA1X3BsYW5lIHsKIAlzdHJ1Y3QgZHJtX3BsYW5lIGJhc2U7CiAKLQll bnVtIG1kcDVfcGlwZSBwaXBlOwotCi0Jc3BpbmxvY2tfdCBwaXBlX2xvY2s7CS8qIHByb3RlY3Qg UkVHX01EUDVfUElQRV8qIHJlZ2lzdGVycyAqLwotCXVpbnQzMl90IHJlZ19vZmZzZXQ7Ci0JdWlu dDMyX3QgY2FwczsKLQotCXVpbnQzMl90IGZsdXNoX21hc2s7CS8qIHVzZWQgdG8gY29tbWl0IHBp cGUgcmVnaXN0ZXJzICovCisJc3RydWN0IG1kcDVfaHdfcGlwZSAqaHdwaXBlOwogCiAJdWludDMy X3QgbmZvcm1hdHM7CiAJdWludDMyX3QgZm9ybWF0c1szMl07CkBAIC03MSw4ICs2NSw4IEBAIHN0 YXRpYyB2b2lkIG1kcDVfcGxhbmVfaW5zdGFsbF9yb3RhdGlvbl9wcm9wZXJ0eShzdHJ1Y3QgZHJt X2RldmljZSAqZGV2LAogewogCXN0cnVjdCBtZHA1X3BsYW5lICptZHA1X3BsYW5lID0gdG9fbWRw NV9wbGFuZShwbGFuZSk7CiAKLQlpZiAoIShtZHA1X3BsYW5lLT5jYXBzICYgTURQX1BJUEVfQ0FQ X0hGTElQKSAmJgotCQkhKG1kcDVfcGxhbmUtPmNhcHMgJiBNRFBfUElQRV9DQVBfVkZMSVApKQor CWlmICghKG1kcDVfcGxhbmUtPmh3cGlwZS0+Y2FwcyAmIE1EUF9QSVBFX0NBUF9IRkxJUCkgJiYK KwkJIShtZHA1X3BsYW5lLT5od3BpcGUtPmNhcHMgJiBNRFBfUElQRV9DQVBfVkZMSVApKQogCQly ZXR1cm47CiAKIAlkcm1fcGxhbmVfY3JlYXRlX3JvdGF0aW9uX3Byb3BlcnR5KHBsYW5lLApAQCAt MzA0LDEzICsyOTgsMTMgQEAgc3RhdGljIGludCBtZHA1X3BsYW5lX2F0b21pY19jaGVjayhzdHJ1 Y3QgZHJtX3BsYW5lICpwbGFuZSwKIAogCQlmb3JtYXQgPSB0b19tZHBfZm9ybWF0KG1zbV9mcmFt ZWJ1ZmZlcl9mb3JtYXQoc3RhdGUtPmZiKSk7CiAJCWlmIChNRFBfRk9STUFUX0lTX1lVVihmb3Jt YXQpICYmCi0JCQkhcGlwZV9zdXBwb3J0c195dXYobWRwNV9wbGFuZS0+Y2FwcykpIHsKKwkJCSFw aXBlX3N1cHBvcnRzX3l1dihtZHA1X3BsYW5lLT5od3BpcGUtPmNhcHMpKSB7CiAJCQlEQkcoIlBp cGUgZG9lc24ndCBzdXBwb3J0IFlVVlxuIik7CiAKIAkJCXJldHVybiAtRUlOVkFMOwogCQl9CiAK LQkJaWYgKCEobWRwNV9wbGFuZS0+Y2FwcyAmIE1EUF9QSVBFX0NBUF9TQ0FMRSkgJiYKKwkJaWYg KCEobWRwNV9wbGFuZS0+aHdwaXBlLT5jYXBzICYgTURQX1BJUEVfQ0FQX1NDQUxFKSAmJgogCQkJ KCgoc3RhdGUtPnNyY193ID4+IDE2KSAhPSBzdGF0ZS0+Y3J0Y193KSB8fAogCQkJKChzdGF0ZS0+ c3JjX2ggPj4gMTYpICE9IHN0YXRlLT5jcnRjX2gpKSkgewogCQkJREJHKCJQaXBlIGRvZXNuJ3Qg c3VwcG9ydCBzY2FsaW5nICglZHglZCAtPiAlZHglZClcbiIsCkBAIC0zMjQsMTEgKzMxOCwxMiBA QCBzdGF0aWMgaW50IG1kcDVfcGxhbmVfYXRvbWljX2NoZWNrKHN0cnVjdCBkcm1fcGxhbmUgKnBs YW5lLAogCQkJCQkJIERSTV9ST1RBVEVfMCB8CiAJCQkJCQkgRFJNX1JFRkxFQ1RfWCB8CiAJCQkJ CQkgRFJNX1JFRkxFQ1RfWSk7CisKIAkJaGZsaXAgPSAhIShyb3RhdGlvbiAmIERSTV9SRUZMRUNU X1gpOwogCQl2ZmxpcCA9ICEhKHJvdGF0aW9uICYgRFJNX1JFRkxFQ1RfWSk7CiAKLQkJaWYgKCh2 ZmxpcCAmJiAhKG1kcDVfcGxhbmUtPmNhcHMgJiBNRFBfUElQRV9DQVBfVkZMSVApKSB8fAotCQkJ KGhmbGlwICYmICEobWRwNV9wbGFuZS0+Y2FwcyAmIE1EUF9QSVBFX0NBUF9IRkxJUCkpKSB7CisJ CWlmICgodmZsaXAgJiYgIShtZHA1X3BsYW5lLT5od3BpcGUtPmNhcHMgJiBNRFBfUElQRV9DQVBf VkZMSVApKSB8fAorCQkJKGhmbGlwICYmICEobWRwNV9wbGFuZS0+aHdwaXBlLT5jYXBzICYgTURQ X1BJUEVfQ0FQX0hGTElQKSkpIHsKIAkJCURCRygiUGlwZSBkb2Vzbid0IHN1cHBvcnQgZmxpcFxu Iik7CiAKIAkJCXJldHVybiAtRUlOVkFMOwpAQCAtMzk2LDcgKzM5MSw3IEBAIHN0YXRpYyB2b2lk IHNldF9zY2Fub3V0X2xvY2tlZChzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKIHsKIAlzdHJ1Y3Qg bWRwNV9wbGFuZSAqbWRwNV9wbGFuZSA9IHRvX21kcDVfcGxhbmUocGxhbmUpOwogCXN0cnVjdCBt ZHA1X2ttcyAqbWRwNV9rbXMgPSBnZXRfa21zKHBsYW5lKTsKLQllbnVtIG1kcDVfcGlwZSBwaXBl ID0gbWRwNV9wbGFuZS0+cGlwZTsKKwllbnVtIG1kcDVfcGlwZSBwaXBlID0gbWRwNV9wbGFuZS0+ aHdwaXBlLT5waXBlOwogCiAJbWRwNV93cml0ZShtZHA1X2ttcywgUkVHX01EUDVfUElQRV9TUkNf U1RSSURFX0EocGlwZSksCiAJCQlNRFA1X1BJUEVfU1JDX1NUUklERV9BX1AwKGZiLT5waXRjaGVz WzBdKSB8CkBAIC02NzgsMTIgKzY3MywxMyBAQCBzdGF0aWMgaW50IG1kcDVfcGxhbmVfbW9kZV9z ZXQoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCiB7CiAJc3RydWN0IG1kcDVfcGxhbmUgKm1kcDVf cGxhbmUgPSB0b19tZHA1X3BsYW5lKHBsYW5lKTsKIAlzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpw c3RhdGUgPSBwbGFuZS0+c3RhdGU7CisJc3RydWN0IG1kcDVfaHdfcGlwZSAqaHdwaXBlID0gbWRw NV9wbGFuZS0+aHdwaXBlOwogCXN0cnVjdCBtZHA1X2ttcyAqbWRwNV9rbXMgPSBnZXRfa21zKHBs YW5lKTsKLQllbnVtIG1kcDVfcGlwZSBwaXBlID0gbWRwNV9wbGFuZS0+cGlwZTsKKwllbnVtIG1k cDVfcGlwZSBwaXBlID0gaHdwaXBlLT5waXBlOwogCWNvbnN0IHN0cnVjdCBtZHBfZm9ybWF0ICpm b3JtYXQ7CiAJdWludDMyX3QgbnBsYW5lcywgY29uZmlnID0gMDsKIAl1aW50MzJfdCBwaGFzZXhf c3RlcFtDT01QX01BWF0gPSB7MCx9LCBwaGFzZXlfc3RlcFtDT01QX01BWF0gPSB7MCx9OwotCWJv b2wgcGUgPSBtZHA1X3BsYW5lLT5jYXBzICYgTURQX1BJUEVfQ0FQX1NXX1BJWF9FWFQ7CisJYm9v bCBwZSA9IGh3cGlwZS0+Y2FwcyAmIE1EUF9QSVBFX0NBUF9TV19QSVhfRVhUOwogCWludCBwZV9s ZWZ0W0NPTVBfTUFYXSwgcGVfcmlnaHRbQ09NUF9NQVhdOwogCWludCBwZV90b3BbQ09NUF9NQVhd LCBwZV9ib3R0b21bQ09NUF9NQVhdOwogCXVpbnQzMl90IGhkZWNtID0gMCwgdmRlY20gPSAwOwpA QCAtNzE0LDggKzcxMCw4IEBAIHN0YXRpYyBpbnQgbWRwNV9wbGFuZV9tb2RlX3NldChzdHJ1Y3Qg ZHJtX3BsYW5lICpwbGFuZSwKIAogCS8qIFJlcXVlc3Qgc29tZSBtZW1vcnkgZnJvbSB0aGUgU01Q OiAqLwogCWlmIChtZHA1X2ttcy0+c21wKSB7Ci0JCXJldCA9IG1kcDVfc21wX3JlcXVlc3QobWRw NV9rbXMtPnNtcCwKLQkJCQltZHA1X3BsYW5lLT5waXBlLCBmb3JtYXQsIHNyY193LCBmYWxzZSk7 CisJCXJldCA9IG1kcDVfc21wX3JlcXVlc3QobWRwNV9rbXMtPnNtcCwgcGlwZSwKKwkJCQlmb3Jt YXQsIHNyY193LCBmYWxzZSk7CiAJCWlmIChyZXQpCiAJCQlyZXR1cm4gcmV0OwogCX0KQEAgLTcz Nyw3ICs3MzMsNyBAQCBzdGF0aWMgaW50IG1kcDVfcGxhbmVfbW9kZV9zZXQoc3RydWN0IGRybV9w bGFuZSAqcGxhbmUsCiAJaWYgKHJldCkKIAkJcmV0dXJuIHJldDsKIAotCWlmIChtZHA1X3BsYW5l LT5jYXBzICYgTURQX1BJUEVfQ0FQX1NXX1BJWF9FWFQpIHsKKwlpZiAoaHdwaXBlLT5jYXBzICYg TURQX1BJUEVfQ0FQX1NXX1BJWF9FWFQpIHsKIAkJY2FsY19waXhlbF9leHQoZm9ybWF0LCBzcmNf dywgY3J0Y193LCBwaGFzZXhfc3RlcCwKIAkJCQkJIHBlX2xlZnQsIHBlX3JpZ2h0LCB0cnVlKTsK IAkJY2FsY19waXhlbF9leHQoZm9ybWF0LCBzcmNfaCwgY3J0Y19oLCBwaGFzZXlfc3RlcCwKQEAg LTc1OCw3ICs3NTQsNyBAQCBzdGF0aWMgaW50IG1kcDVfcGxhbmVfbW9kZV9zZXQoc3RydWN0IGRy bV9wbGFuZSAqcGxhbmUsCiAJaGZsaXAgPSAhIShyb3RhdGlvbiAmIERSTV9SRUZMRUNUX1gpOwog CXZmbGlwID0gISEocm90YXRpb24gJiBEUk1fUkVGTEVDVF9ZKTsKIAotCXNwaW5fbG9ja19pcnFz YXZlKCZtZHA1X3BsYW5lLT5waXBlX2xvY2ssIGZsYWdzKTsKKwlzcGluX2xvY2tfaXJxc2F2ZSgm aHdwaXBlLT5waXBlX2xvY2ssIGZsYWdzKTsKIAogCW1kcDVfd3JpdGUobWRwNV9rbXMsIFJFR19N RFA1X1BJUEVfU1JDX0lNR19TSVpFKHBpcGUpLAogCQkJTURQNV9QSVBFX1NSQ19JTUdfU0laRV9X SURUSChtaW4oZmItPndpZHRoLCBzcmNfdykpIHwKQEAgLTgwNywxMiArODAzLDEyIEBAIHN0YXRp YyBpbnQgbWRwNV9wbGFuZV9tb2RlX3NldChzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKIAkvKiBu b3QgdXNpbmcgc2VjdXJlIG1vZGU6ICovCiAJbWRwNV93cml0ZShtZHA1X2ttcywgUkVHX01EUDVf UElQRV9TUkNfQUREUl9TV19TVEFUVVMocGlwZSksIDApOwogCi0JaWYgKG1kcDVfcGxhbmUtPmNh cHMgJiBNRFBfUElQRV9DQVBfU1dfUElYX0VYVCkKKwlpZiAoaHdwaXBlLT5jYXBzICYgTURQX1BJ UEVfQ0FQX1NXX1BJWF9FWFQpCiAJCW1kcDVfd3JpdGVfcGl4ZWxfZXh0KG1kcDVfa21zLCBwaXBl LCBmb3JtYXQsCiAJCQkJc3JjX3csIHBlX2xlZnQsIHBlX3JpZ2h0LAogCQkJCXNyY19oLCBwZV90 b3AsIHBlX2JvdHRvbSk7CiAKLQlpZiAobWRwNV9wbGFuZS0+Y2FwcyAmIE1EUF9QSVBFX0NBUF9T Q0FMRSkgeworCWlmIChod3BpcGUtPmNhcHMgJiBNRFBfUElQRV9DQVBfU0NBTEUpIHsKIAkJbWRw NV93cml0ZShtZHA1X2ttcywgUkVHX01EUDVfUElQRV9TQ0FMRV9QSEFTRV9TVEVQX1gocGlwZSks CiAJCQkJcGhhc2V4X3N0ZXBbQ09NUF8wXSk7CiAJCW1kcDVfd3JpdGUobWRwNV9rbXMsIFJFR19N RFA1X1BJUEVfU0NBTEVfUEhBU0VfU1RFUF9ZKHBpcGUpLApAQCAtODI3LDcgKzgyMyw3IEBAIHN0 YXRpYyBpbnQgbWRwNV9wbGFuZV9tb2RlX3NldChzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKIAkJ bWRwNV93cml0ZShtZHA1X2ttcywgUkVHX01EUDVfUElQRV9TQ0FMRV9DT05GSUcocGlwZSksIGNv bmZpZyk7CiAJfQogCi0JaWYgKG1kcDVfcGxhbmUtPmNhcHMgJiBNRFBfUElQRV9DQVBfQ1NDKSB7 CisJaWYgKGh3cGlwZS0+Y2FwcyAmIE1EUF9QSVBFX0NBUF9DU0MpIHsKIAkJaWYgKE1EUF9GT1JN QVRfSVNfWVVWKGZvcm1hdCkpCiAJCQljc2NfZW5hYmxlKG1kcDVfa21zLCBwaXBlLAogCQkJCQlt ZHBfZ2V0X2RlZmF1bHRfY3NjX2NmZyhDU0NfWVVWMlJHQikpOwpAQCAtODM3LDcgKzgzMyw3IEBA IHN0YXRpYyBpbnQgbWRwNV9wbGFuZV9tb2RlX3NldChzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwK IAogCXNldF9zY2Fub3V0X2xvY2tlZChwbGFuZSwgZmIpOwogCi0Jc3Bpbl91bmxvY2tfaXJxcmVz dG9yZSgmbWRwNV9wbGFuZS0+cGlwZV9sb2NrLCBmbGFncyk7CisJc3Bpbl91bmxvY2tfaXJxcmVz dG9yZSgmaHdwaXBlLT5waXBlX2xvY2ssIGZsYWdzKTsKIAogCXJldHVybiByZXQ7CiB9CkBAIC04 NDUsMTQgKzg0MSwxNCBAQCBzdGF0aWMgaW50IG1kcDVfcGxhbmVfbW9kZV9zZXQoc3RydWN0IGRy bV9wbGFuZSAqcGxhbmUsCiBlbnVtIG1kcDVfcGlwZSBtZHA1X3BsYW5lX3BpcGUoc3RydWN0IGRy bV9wbGFuZSAqcGxhbmUpCiB7CiAJc3RydWN0IG1kcDVfcGxhbmUgKm1kcDVfcGxhbmUgPSB0b19t ZHA1X3BsYW5lKHBsYW5lKTsKLQlyZXR1cm4gbWRwNV9wbGFuZS0+cGlwZTsKKwlyZXR1cm4gbWRw NV9wbGFuZS0+aHdwaXBlLT5waXBlOwogfQogCiB1aW50MzJfdCBtZHA1X3BsYW5lX2dldF9mbHVz aChzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSkKIHsKIAlzdHJ1Y3QgbWRwNV9wbGFuZSAqbWRwNV9w bGFuZSA9IHRvX21kcDVfcGxhbmUocGxhbmUpOwogCi0JcmV0dXJuIG1kcDVfcGxhbmUtPmZsdXNo X21hc2s7CisJcmV0dXJuIG1kcDVfcGxhbmUtPmh3cGlwZS0+Zmx1c2hfbWFzazsKIH0KIAogLyog Y2FsbGVkIGFmdGVyIHZzeW5jIGluIHRocmVhZCBjb250ZXh0ICovCkBAIC04NjEsNyArODU3LDcg QEAgdm9pZCBtZHA1X3BsYW5lX2NvbXBsZXRlX2NvbW1pdChzdHJ1Y3QgZHJtX3BsYW5lICpwbGFu ZSwKIHsKIAlzdHJ1Y3QgbWRwNV9rbXMgKm1kcDVfa21zID0gZ2V0X2ttcyhwbGFuZSk7CiAJc3Ry dWN0IG1kcDVfcGxhbmUgKm1kcDVfcGxhbmUgPSB0b19tZHA1X3BsYW5lKHBsYW5lKTsKLQllbnVt IG1kcDVfcGlwZSBwaXBlID0gbWRwNV9wbGFuZS0+cGlwZTsKKwllbnVtIG1kcDVfcGlwZSBwaXBl ID0gbWRwNV9wbGFuZS0+aHdwaXBlLT5waXBlOwogCiAJaWYgKG1kcDVfa21zLT5zbXApIHsKIAkJ aWYgKHBsYW5lX2VuYWJsZWQocGxhbmUtPnN0YXRlKSkgewpAQCAtODc4LDggKzg3NCw3IEBAIHZv aWQgbWRwNV9wbGFuZV9jb21wbGV0ZV9jb21taXQoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCiAK IC8qIGluaXRpYWxpemUgcGxhbmUgKi8KIHN0cnVjdCBkcm1fcGxhbmUgKm1kcDVfcGxhbmVfaW5p dChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAotCQllbnVtIG1kcDVfcGlwZSBwaXBlLCBib29sIHBy aXZhdGVfcGxhbmUsIHVpbnQzMl90IHJlZ19vZmZzZXQsCi0JCXVpbnQzMl90IGNhcHMpCisJCXN0 cnVjdCBtZHA1X2h3X3BpcGUgKmh3cGlwZSwgYm9vbCBwcmltYXJ5KQogewogCXN0cnVjdCBkcm1f cGxhbmUgKnBsYW5lID0gTlVMTDsKIAlzdHJ1Y3QgbWRwNV9wbGFuZSAqbWRwNV9wbGFuZTsKQEAg LTg5NCwyMSArODg5LDE2IEBAIHN0cnVjdCBkcm1fcGxhbmUgKm1kcDVfcGxhbmVfaW5pdChzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2LAogCiAJcGxhbmUgPSAmbWRwNV9wbGFuZS0+YmFzZTsKIAotCW1k cDVfcGxhbmUtPnBpcGUgPSBwaXBlOwotCW1kcDVfcGxhbmUtPmNhcHMgPSBjYXBzOworCW1kcDVf cGxhbmUtPmh3cGlwZSA9IGh3cGlwZTsKIAogCW1kcDVfcGxhbmUtPm5mb3JtYXRzID0gbWRwX2dl dF9mb3JtYXRzKG1kcDVfcGxhbmUtPmZvcm1hdHMsCiAJCUFSUkFZX1NJWkUobWRwNV9wbGFuZS0+ Zm9ybWF0cyksCi0JCSFwaXBlX3N1cHBvcnRzX3l1dihtZHA1X3BsYW5lLT5jYXBzKSk7Ci0KLQlt ZHA1X3BsYW5lLT5mbHVzaF9tYXNrID0gbWRwX2N0bF9mbHVzaF9tYXNrX3BpcGUocGlwZSk7Ci0J bWRwNV9wbGFuZS0+cmVnX29mZnNldCA9IHJlZ19vZmZzZXQ7Ci0Jc3Bpbl9sb2NrX2luaXQoJm1k cDVfcGxhbmUtPnBpcGVfbG9jayk7CisJCSFwaXBlX3N1cHBvcnRzX3l1dihod3BpcGUtPmNhcHMp KTsKIAotCXR5cGUgPSBwcml2YXRlX3BsYW5lID8gRFJNX1BMQU5FX1RZUEVfUFJJTUFSWSA6IERS TV9QTEFORV9UWVBFX09WRVJMQVk7CisJdHlwZSA9IHByaW1hcnkgPyBEUk1fUExBTkVfVFlQRV9Q UklNQVJZIDogRFJNX1BMQU5FX1RZUEVfT1ZFUkxBWTsKIAlyZXQgPSBkcm1fdW5pdmVyc2FsX3Bs YW5lX2luaXQoZGV2LCBwbGFuZSwgMHhmZiwgJm1kcDVfcGxhbmVfZnVuY3MsCiAJCQkJIG1kcDVf cGxhbmUtPmZvcm1hdHMsIG1kcDVfcGxhbmUtPm5mb3JtYXRzLAotCQkJCSB0eXBlLCAiJXMiLCBw aXBlMm5hbWUocGlwZSkpOworCQkJCSB0eXBlLCAiJXMiLCBod3BpcGUtPm5hbWUpOwogCWlmIChy ZXQpCiAJCWdvdG8gZmFpbDsKIAotLSAKMi43LjQKCl9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxp c3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFu L2xpc3RpbmZvL2RyaS1kZXZlbAo=