From mboxrd@z Thu Jan 1 00:00:00 1970 From: Rob Clark Subject: [PATCH 5/5] drm/msm/mdp5: handle SMP block allocations "atomically" Date: Sat, 5 Nov 2016 12:26:01 -0400 Message-ID: <1478363161-29293-6-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 UHJldmlvdXNseSwgU01QIGJsb2NrIGFsbG9jYXRpb24gd2FzIG5vdCBjaGVja2VkIGluIHRoZSBw bGFuZSdzCmF0b21pY19jaGVjaygpIGZ4biwgc28gd2UgY291bGQgZmFpbCBhbGxvY2F0aW9uIFNN UCBibG9jayBhbGxvY2F0aW9uIGF0CmF0b21pY191cGRhdGUoKSB0aW1lLiAgUmUtd29yayB0aGUg YmxvY2sgYWxsb2NhdGlvbiB0byByZXF1ZXN0IGJsb2NrcwpkdXJpbmcgYXRvbWljX2NoZWNrKCks IGJ1dCBub3QgdXBkYXRlIHRoZSBodyB1bnRpbCBjb21taXR0aW5nIHRoZSBhdG9taWMKdXBkYXRl LgoKU2luY2UgU01QIGJsb2NrcyBhbGxvY2F0ZWQgYXQgYXRvbWljX2NoZWNrKCkgdGltZSwgd2Ug bmVlZCB0byBtYW5hZ2UgdGhlClNNUCBzdGF0ZSBhcyBwYXJ0IG9mIG1kcDVfc3RhdGUgKGdsb2Jh bCBhdG9taWMgc3RhdGUpLiAgVGhpcyBhY3R1YWxseQplbmRzIHVwIHNpZ25pZmljYW50bHkgc2lt cGxpZnlpbmcgdGhlIFNNUCBtYW5hZ2VtZW50LCBhcyB0aGUgU01QIG1vZHVsZQpkb2VzIG5vdCBu ZWVkIHRvIG1hbmFnZSB0aGUgaW50ZXJtZWRpYXRlIHN0YXRlIGJldHdlZW4gYXNzaWduaW5nIG5l dwpibG9ja3MgYmVmb3JlIHNldHRpbmcgZmx1c2ggYml0cyBhbmQgcmVsZWFzaW5nIG9sZCBibG9j a3MgYWZ0ZXIgdmJsYW5rLgooVGhlIFNNUCByZWdpc3RlcnMgYW5kIFNNUCBhbGxvY2F0aW9uIGlz IG5vdCBkb3VibGUtYnVmZmVyZWQsIHNvIG5ld2x5CmFsbG9jYXRlZCBibG9ja3MgbmVlZCB0byBi ZSB1cGRhdGVkIGluIGttcy0+cHJlcGFyZV9jb21taXQoKSByZWxlYXNlZApibG9ja3MgaW4ga21z LT5jb21wbGV0ZV9jb21taXQoKS4pCgpTaWduZWQtb2ZmLWJ5OiBSb2IgQ2xhcmsgPHJvYmRjbGFy a0BnbWFpbC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL21zbS9tZHAvbWRwNS9tZHA1X2ttcy5j ICAgfCAgMTEgKy0KIGRyaXZlcnMvZ3B1L2RybS9tc20vbWRwL21kcDUvbWRwNV9rbXMuaCAgIHwg ICAxICsKIGRyaXZlcnMvZ3B1L2RybS9tc20vbWRwL21kcDUvbWRwNV9waXBlLmMgIHwgIDIxICsr LQogZHJpdmVycy9ncHUvZHJtL21zbS9tZHAvbWRwNS9tZHA1X3BpcGUuaCAgfCAgIDcgKy0KIGRy aXZlcnMvZ3B1L2RybS9tc20vbWRwL21kcDUvbWRwNV9wbGFuZS5jIHwgIDYyICsrLS0tLS0KIGRy aXZlcnMvZ3B1L2RybS9tc20vbWRwL21kcDUvbWRwNV9zbXAuYyAgIHwgMjcwICsrKysrKysrKyst LS0tLS0tLS0tLS0tLS0tLS0tLQogZHJpdmVycy9ncHUvZHJtL21zbS9tZHAvbWRwNS9tZHA1X3Nt cC5oICAgfCAgNjYgKysrKysrLS0KIDcgZmlsZXMgY2hhbmdlZCwgMTkzIGluc2VydGlvbnMoKyks IDI0NSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL21kcC9t ZHA1L21kcDVfa21zLmMgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL21kcC9tZHA1L21kcDVfa21zLmMK aW5kZXggMzU0MmFkZi4uNWY5NTk0NyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9t ZHAvbWRwNS9tZHA1X2ttcy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vbWRwL21kcDUvbWRw NV9rbXMuYwpAQCAtOTMsNiArOTMsOCBAQCBzdHJ1Y3QgbWRwNV9zdGF0ZSAqbWRwNV9nZXRfc3Rh dGUoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnMpCiAKIAkvKiBDb3B5IHN0YXRlOiAqLwogCW5l d19zdGF0ZS0+aHdwaXBlID0gbWRwNV9rbXMtPnN0YXRlLT5od3BpcGU7CisJaWYgKG1kcDVfa21z LT5zbXApCisJCW5ld19zdGF0ZS0+c21wID0gbWRwNV9rbXMtPnN0YXRlLT5zbXA7CiAKIAlzdGF0 ZS0+c3RhdGUgPSBuZXdfc3RhdGU7CiAKQEAgLTEwOCw3ICsxMTAsMTEgQEAgc3RhdGljIHZvaWQg bWRwNV9zd2FwX3N0YXRlKHN0cnVjdCBtc21fa21zICprbXMsIHN0cnVjdCBkcm1fYXRvbWljX3N0 YXRlICpzdGF0ZSkKIHN0YXRpYyB2b2lkIG1kcDVfcHJlcGFyZV9jb21taXQoc3RydWN0IG1zbV9r bXMgKmttcywgc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKQogewogCXN0cnVjdCBtZHA1 X2ttcyAqbWRwNV9rbXMgPSB0b19tZHA1X2ttcyh0b19tZHBfa21zKGttcykpOworCiAJbWRwNV9l bmFibGUobWRwNV9rbXMpOworCisJaWYgKG1kcDVfa21zLT5zbXApCisJCW1kcDVfc21wX3ByZXBh cmVfY29tbWl0KG1kcDVfa21zLT5zbXAsICZtZHA1X2ttcy0+c3RhdGUtPnNtcCk7CiB9CiAKIHN0 YXRpYyB2b2lkIG1kcDVfY29tcGxldGVfY29tbWl0KHN0cnVjdCBtc21fa21zICprbXMsIHN0cnVj dCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSkKQEAgLTEyMSw2ICsxMjcsOSBAQCBzdGF0aWMgdm9p ZCBtZHA1X2NvbXBsZXRlX2NvbW1pdChzdHJ1Y3QgbXNtX2ttcyAqa21zLCBzdHJ1Y3QgZHJtX2F0 b21pY19zdGF0ZSAqcwogCWZvcl9lYWNoX3BsYW5lX2luX3N0YXRlKHN0YXRlLCBwbGFuZSwgcGxh bmVfc3RhdGUsIGkpCiAJCW1kcDVfcGxhbmVfY29tcGxldGVfY29tbWl0KHBsYW5lLCBwbGFuZV9z dGF0ZSk7CiAKKwlpZiAobWRwNV9rbXMtPnNtcCkKKwkJbWRwNV9zbXBfY29tcGxldGVfY29tbWl0 KG1kcDVfa21zLT5zbXAsICZtZHA1X2ttcy0+c3RhdGUtPnNtcCk7CisKIAltZHA1X2Rpc2FibGUo bWRwNV9rbXMpOwogfQogCkBAIC04MjUsNyArODM0LDcgQEAgc3RhdGljIGludCBtZHA1X2luaXQo c3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiwgc3RydWN0IGRybV9kZXZpY2UgKmRldikKIAkg KiB0aGlzIHNlY3Rpb24gaW5pdGlhbGl6ZXMgdGhlIFNNUDoKIAkgKi8KIAlpZiAobWRwNV9rbXMt PmNhcHMgJiBNRFBfQ0FQX1NNUCkgewotCQltZHA1X2ttcy0+c21wID0gbWRwNV9zbXBfaW5pdCht ZHA1X2ttcy0+ZGV2LCAmY29uZmlnLT5ody0+c21wKTsKKwkJbWRwNV9rbXMtPnNtcCA9IG1kcDVf c21wX2luaXQobWRwNV9rbXMsICZjb25maWctPmh3LT5zbXApOwogCQlpZiAoSVNfRVJSKG1kcDVf a21zLT5zbXApKSB7CiAJCQlyZXQgPSBQVFJfRVJSKG1kcDVfa21zLT5zbXApOwogCQkJbWRwNV9r bXMtPnNtcCA9IE5VTEw7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL21kcC9tZHA1 L21kcDVfa21zLmggYi9kcml2ZXJzL2dwdS9kcm0vbXNtL21kcC9tZHA1L21kcDVfa21zLmgKaW5k ZXggNDQ3NTA5MC4uYmM5MmY5ZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9tZHAv bWRwNS9tZHA1X2ttcy5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vbWRwL21kcDUvbWRwNV9r bXMuaApAQCAtODMsNiArODMsNyBAQCBzdHJ1Y3QgbWRwNV9rbXMgewogICovCiBzdHJ1Y3QgbWRw NV9zdGF0ZSB7CiAJc3RydWN0IG1kcDVfaHdfcGlwZV9zdGF0ZSBod3BpcGU7CisJc3RydWN0IG1k cDVfc21wX3N0YXRlIHNtcDsKIH07CiAKIHN0cnVjdCBtZHA1X3N0YXRlICpfX211c3RfY2hlY2sK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vbWRwL21kcDUvbWRwNV9waXBlLmMgYi9k cml2ZXJzL2dwdS9kcm0vbXNtL21kcC9tZHA1L21kcDVfcGlwZS5jCmluZGV4IDExNWRlN2QuLjcy MGY1ZjIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vbWRwL21kcDUvbWRwNV9waXBl LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9tZHAvbWRwNS9tZHA1X3BpcGUuYwpAQCAtMTgs NyArMTgsNyBAQAogI2luY2x1ZGUgIm1kcDVfa21zLmgiCiAKIHN0cnVjdCBtZHA1X2h3X3BpcGUg Km1kcDVfcGlwZV9hc3NpZ24oc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnMsCi0JCXN0cnVjdCBk cm1fcGxhbmUgKnBsYW5lLCB1aW50MzJfdCBjYXBzKQorCQlzdHJ1Y3QgZHJtX3BsYW5lICpwbGFu ZSwgdWludDMyX3QgY2FwcywgdWludDMyX3QgYmxrY2ZnKQogewogCXN0cnVjdCBtc21fZHJtX3By aXZhdGUgKnByaXYgPSBzLT5kZXYtPmRldl9wcml2YXRlOwogCXN0cnVjdCBtZHA1X2ttcyAqbWRw NV9rbXMgPSB0b19tZHA1X2ttcyh0b19tZHBfa21zKHByaXYtPmttcykpOwpAQCAtNjMsNiArNjMs MTggQEAgc3RydWN0IG1kcDVfaHdfcGlwZSAqbWRwNV9waXBlX2Fzc2lnbihzdHJ1Y3QgZHJtX2F0 b21pY19zdGF0ZSAqcywKIAlpZiAoIWh3cGlwZSkKIAkJcmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7 CiAKKwlpZiAobWRwNV9rbXMtPnNtcCkgeworCQlpbnQgcmV0OworCisJCURCRygiJXM6IGFsbG9j IFNNUCBibG9ja3MiLCBod3BpcGUtPm5hbWUpOworCQlyZXQgPSBtZHA1X3NtcF9hc3NpZ24obWRw NV9rbXMtPnNtcCwgJnN0YXRlLT5zbXAsCisJCQkJaHdwaXBlLT5waXBlLCBibGtjZmcpOworCQlp ZiAocmV0KQorCQkJcmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7CisKKwkJaHdwaXBlLT5ibGtjZmcg PSBibGtjZmc7CisJfQorCiAJREJHKCIlczogYXNzaWduIHRvIHBsYW5lICVzIGZvciBjYXBzICV4 IiwKIAkJCWh3cGlwZS0+bmFtZSwgcGxhbmUtPm5hbWUsIGNhcHMpOwogCW5ld19zdGF0ZS0+aHdw aXBlX3RvX3BsYW5lW2h3cGlwZS0+aWR4XSA9IHBsYW5lOwpAQCAtNzIsNiArODQsOCBAQCBzdHJ1 Y3QgbWRwNV9od19waXBlICptZHA1X3BpcGVfYXNzaWduKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRl ICpzLAogCiB2b2lkIG1kcDVfcGlwZV9yZWxlYXNlKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpz LCBzdHJ1Y3QgbWRwNV9od19waXBlICpod3BpcGUpCiB7CisJc3RydWN0IG1zbV9kcm1fcHJpdmF0 ZSAqcHJpdiA9IHMtPmRldi0+ZGV2X3ByaXZhdGU7CisJc3RydWN0IG1kcDVfa21zICptZHA1X2tt cyA9IHRvX21kcDVfa21zKHRvX21kcF9rbXMocHJpdi0+a21zKSk7CiAJc3RydWN0IG1kcDVfc3Rh dGUgKnN0YXRlID0gbWRwNV9nZXRfc3RhdGUocyk7CiAJc3RydWN0IG1kcDVfaHdfcGlwZV9zdGF0 ZSAqbmV3X3N0YXRlID0gJnN0YXRlLT5od3BpcGU7CiAKQEAgLTg0LDYgKzk4LDExIEBAIHZvaWQg bWRwNV9waXBlX3JlbGVhc2Uoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnMsIHN0cnVjdCBtZHA1 X2h3X3BpcGUgKmh3cGlwZSkKIAlEQkcoIiVzOiByZWxlYXNlIGZyb20gcGxhbmUgJXMiLCBod3Bp cGUtPm5hbWUsCiAJCW5ld19zdGF0ZS0+aHdwaXBlX3RvX3BsYW5lW2h3cGlwZS0+aWR4XS0+bmFt ZSk7CiAKKwlpZiAobWRwNV9rbXMtPnNtcCkgeworCQlEQkcoIiVzOiBmcmVlIFNNUCBibG9ja3Mi LCBod3BpcGUtPm5hbWUpOworCQltZHA1X3NtcF9yZWxlYXNlKG1kcDVfa21zLT5zbXAsICZzdGF0 ZS0+c21wLCBod3BpcGUtPnBpcGUpOworCX0KKwogCW5ld19zdGF0ZS0+aHdwaXBlX3RvX3BsYW5l W2h3cGlwZS0+aWR4XSA9IE5VTEw7CiB9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9t c20vbWRwL21kcDUvbWRwNV9waXBlLmggYi9kcml2ZXJzL2dwdS9kcm0vbXNtL21kcC9tZHA1L21k cDVfcGlwZS5oCmluZGV4IGJhYzU5MDAuLjI2NjQzYWMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9tc20vbWRwL21kcDUvbWRwNV9waXBlLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9t ZHAvbWRwNS9tZHA1X3BpcGUuaApAQCAtMzAsNiArMzAsMTEgQEAgc3RydWN0IG1kcDVfaHdfcGlw ZSB7CiAJdWludDMyX3QgY2FwczsKIAogCXVpbnQzMl90IGZsdXNoX21hc2s7ICAgICAgLyogdXNl ZCB0byBjb21taXQgcGlwZSByZWdpc3RlcnMgKi8KKworCS8qIG51bWJlciBvZiBzbXAgYmxvY2tz IHBlciBwbGFuZSwgaWU6CisJICogICBuYmxrc195IHwgKG5ibGtzX3UgPDwgOCkgfCAobmJsa3Nf diA8PCAxNikKKwkgKi8KKwl1aW50MzJfdCBibGtjZmc7CiB9OwogCiAvKiBnbG9iYWwgYXRvbWlj IHN0YXRlIG9mIGFzc2lnbm1lbnQgYmV0d2VlbiBwaXBlcyBhbmQgcGxhbmVzOiAqLwpAQCAtMzks NyArNDQsNyBAQCBzdHJ1Y3QgbWRwNV9od19waXBlX3N0YXRlIHsKIAogc3RydWN0IG1kcDVfaHdf cGlwZSAqX19tdXN0X2NoZWNrCiBtZHA1X3BpcGVfYXNzaWduKHN0cnVjdCBkcm1fYXRvbWljX3N0 YXRlICpzLCBzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKLQkJdWludDMyX3QgY2Fwcyk7CisJCXVp bnQzMl90IGNhcHMsIHVpbnQzMl90IGJsa2NmZyk7CiB2b2lkIG1kcDVfcGlwZV9yZWxlYXNlKHN0 cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzLCBzdHJ1Y3QgbWRwNV9od19waXBlICpod3BpcGUpOwog CiBzdHJ1Y3QgbWRwNV9od19waXBlICptZHA1X3BpcGVfaW5pdChlbnVtIG1kcDVfcGlwZSBwaXBl LApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9tZHAvbWRwNS9tZHA1X3BsYW5lLmMg Yi9kcml2ZXJzL2dwdS9kcm0vbXNtL21kcC9tZHA1L21kcDVfcGxhbmUuYwppbmRleCA2NGU5N2Vm Li40OWNiOWY5IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL21kcC9tZHA1L21kcDVf cGxhbmUuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL21kcC9tZHA1L21kcDVfcGxhbmUuYwpA QCAtMjk5LDYgKzI5OSw4IEBAIHN0YXRpYyBpbnQgbWRwNV9wbGFuZV9hdG9taWNfY2hlY2soc3Ry dWN0IGRybV9wbGFuZSAqcGxhbmUsCiAJaWYgKHBsYW5lX2VuYWJsZWQoc3RhdGUpKSB7CiAJCXVu c2lnbmVkIGludCByb3RhdGlvbjsKIAkJY29uc3Qgc3RydWN0IG1kcF9mb3JtYXQgKmZvcm1hdDsK KwkJc3RydWN0IG1kcDVfa21zICptZHA1X2ttcyA9IGdldF9rbXMocGxhbmUpOworCQl1aW50MzJf dCBibGtjZmcgPSAwOwogCiAJCWZvcm1hdCA9IHRvX21kcF9mb3JtYXQobXNtX2ZyYW1lYnVmZmVy X2Zvcm1hdChzdGF0ZS0+ZmIpKTsKIAkJaWYgKE1EUF9GT1JNQVRfSVNfWVVWKGZvcm1hdCkpCkBA IC0zMjMsMjMgKzMyNSwxNSBAQCBzdGF0aWMgaW50IG1kcDVfcGxhbmVfYXRvbWljX2NoZWNrKHN0 cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAogCQlpZiAoIW1kcDVfc3RhdGUtPmh3cGlwZSB8fCAoY2Fw cyAmIH5tZHA1X3N0YXRlLT5od3BpcGUtPmNhcHMpKQogCQkJbmV3X2h3cGlwZSA9IHRydWU7CiAK LQkJaWYgKHBsYW5lX2VuYWJsZWQob2xkX3N0YXRlKSkgewotCQkJYm9vbCBmdWxsX21vZGVzZXQg PSBmYWxzZTsKLQkJCWlmIChzdGF0ZS0+ZmItPnBpeGVsX2Zvcm1hdCAhPSBvbGRfc3RhdGUtPmZi LT5waXhlbF9mb3JtYXQpIHsKLQkJCQlEQkcoIiVzOiBwaXhlbF9mb3JtYXQgY2hhbmdlISIsIHBs YW5lLT5uYW1lKTsKLQkJCQlmdWxsX21vZGVzZXQgPSB0cnVlOwotCQkJfQotCQkJaWYgKHN0YXRl LT5zcmNfdyAhPSBvbGRfc3RhdGUtPnNyY193KSB7Ci0JCQkJREJHKCIlczogc3JjX3cgY2hhbmdl ISIsIHBsYW5lLT5uYW1lKTsKLQkJCQlmdWxsX21vZGVzZXQgPSB0cnVlOwotCQkJfQotCQkJaWYg KGZ1bGxfbW9kZXNldCkgewotCQkJCS8qIGNhbm5vdCBjaGFuZ2UgU01QIGJsb2NrIGFsbG9jYXRp b24gZHVyaW5nCi0JCQkJICogc2Nhbm91dDoKLQkJCQkgKi8KLQkJCQlpZiAoZ2V0X2ttcyhwbGFu ZSktPnNtcCkKLQkJCQkJbmV3X2h3cGlwZSA9IHRydWU7Ci0JCQl9CisJCWlmIChtZHA1X2ttcy0+ c21wKSB7CisJCQljb25zdCBzdHJ1Y3QgbWRwX2Zvcm1hdCAqZm9ybWF0ID0KKwkJCQl0b19tZHBf Zm9ybWF0KG1zbV9mcmFtZWJ1ZmZlcl9mb3JtYXQoc3RhdGUtPmZiKSk7CisKKwkJCWJsa2NmZyA9 IG1kcDVfc21wX2NhbGN1bGF0ZShtZHA1X2ttcy0+c21wLCBmb3JtYXQsCisJCQkJCXN0YXRlLT5z cmNfdyA+PiAxNiwgZmFsc2UpOworCisJCQlpZiAobWRwNV9zdGF0ZS0+aHdwaXBlICYmIChtZHA1 X3N0YXRlLT5od3BpcGUtPmJsa2NmZyAhPSBibGtjZmcpKQorCQkJCW5ld19od3BpcGUgPSB0cnVl OwogCQl9CiAKIAkJLyogKHJlKWFzc2lnbiBod3BpcGUgaWYgbmVlZGVkLCBvdGhlcndpc2Uga2Vl cCBvbGQgb25lOiAqLwpAQCAtMzQ5LDggKzM0Myw4IEBAIHN0YXRpYyBpbnQgbWRwNV9wbGFuZV9h dG9taWNfY2hlY2soc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCiAJCQkgKiBpdCBhdmFpbGFibGUg Zm9yIG90aGVyIHBsYW5lcz8KIAkJCSAqLwogCQkJc3RydWN0IG1kcDVfaHdfcGlwZSAqaHdwaXBl ID0gbWRwNV9zdGF0ZS0+aHdwaXBlOwotCQkJbWRwNV9zdGF0ZS0+aHdwaXBlID0KLQkJCQltZHA1 X3BpcGVfYXNzaWduKHN0YXRlLT5zdGF0ZSwgcGxhbmUsIGNhcHMpOworCQkJbWRwNV9zdGF0ZS0+ aHdwaXBlID0gbWRwNV9waXBlX2Fzc2lnbihzdGF0ZS0+c3RhdGUsCisJCQkJCXBsYW5lLCBjYXBz LCBibGtjZmcpOwogCQkJaWYgKElTX0VSUihtZHA1X3N0YXRlLT5od3BpcGUpKSB7CiAJCQkJREJH KCIlczogZmFpbGVkIHRvIGFzc2lnbiBod3BpcGUhIiwgcGxhbmUtPm5hbWUpOwogCQkJCXJldHVy biBQVFJfRVJSKG1kcDVfc3RhdGUtPmh3cGlwZSk7CkBAIC03MTQsMjMgKzcwOCw2IEBAIHN0YXRp YyBpbnQgbWRwNV9wbGFuZV9tb2RlX3NldChzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKIAkJCWZi LT5iYXNlLmlkLCBzcmNfeCwgc3JjX3ksIHNyY193LCBzcmNfaCwKIAkJCWNydGMtPmJhc2UuaWQs IGNydGNfeCwgY3J0Y195LCBjcnRjX3csIGNydGNfaCk7CiAKLQkvKiBSZXF1ZXN0IHNvbWUgbWVt b3J5IGZyb20gdGhlIFNNUDogKi8KLQlpZiAobWRwNV9rbXMtPnNtcCkgewotCQlyZXQgPSBtZHA1 X3NtcF9yZXF1ZXN0KG1kcDVfa21zLT5zbXAsIHBpcGUsCi0JCQkJZm9ybWF0LCBzcmNfdywgZmFs c2UpOwotCQlpZiAocmV0KQotCQkJcmV0dXJuIHJldDsKLQl9Ci0KLQkvKgotCSAqIEN1cnJlbnRs eSB3ZSB1cGRhdGUgdGhlIGh3IGZvciBhbGxvY2F0aW9ucy9yZXF1ZXN0cyBpbW1lZGlhdGVseSwK LQkgKiBidXQgb25jZSBhdG9taWMgbW9kZXNldC9wYWdlZmxpcCBpcyBpbiBwbGFjZSwgdGhlIGFs bG9jYXRpb24KLQkgKiB3b3VsZCBtb3ZlIGludG8gYXRvbWljLT5jaGVja19wbGFuZV9zdGF0ZSgp LCB3aGlsZSB1cGRhdGluZyB0aGUKLQkgKiBodyB3b3VsZCByZW1haW4gaGVyZToKLQkgKi8KLQlp ZiAobWRwNV9rbXMtPnNtcCkKLQkJbWRwNV9zbXBfY29uZmlndXJlKG1kcDVfa21zLT5zbXAsIHBp cGUpOwotCiAJcmV0ID0gY2FsY19zY2FsZXhfc3RlcHMocGxhbmUsIHBpeF9mb3JtYXQsIHNyY193 LCBjcnRjX3csIHBoYXNleF9zdGVwKTsKIAlpZiAocmV0KQogCQlyZXR1cm4gcmV0OwpAQCAtODY4 LDIxICs4NDUsOCBAQCB1aW50MzJfdCBtZHA1X3BsYW5lX2dldF9mbHVzaChzdHJ1Y3QgZHJtX3Bs YW5lICpwbGFuZSkKIHZvaWQgbWRwNV9wbGFuZV9jb21wbGV0ZV9jb21taXQoc3RydWN0IGRybV9w bGFuZSAqcGxhbmUsCiAJc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqc3RhdGUpCiB7Ci0Jc3RydWN0 IG1kcDVfa21zICptZHA1X2ttcyA9IGdldF9rbXMocGxhbmUpOwogCXN0cnVjdCBtZHA1X3BsYW5l X3N0YXRlICpwc3RhdGUgPSB0b19tZHA1X3BsYW5lX3N0YXRlKHBsYW5lLT5zdGF0ZSk7CiAKLQlp ZiAobWRwNV9rbXMtPnNtcCAmJiBwc3RhdGUtPmh3cGlwZSkgewotCQllbnVtIG1kcDVfcGlwZSBw aXBlID0gcHN0YXRlLT5od3BpcGUtPnBpcGU7Ci0KLQkJaWYgKHBsYW5lX2VuYWJsZWQocGxhbmUt PnN0YXRlKSkgewotCQkJREJHKCIlczogY29tcGxldGUgZmxpcCIsIHBsYW5lLT5uYW1lKTsKLQkJ CW1kcDVfc21wX2NvbW1pdChtZHA1X2ttcy0+c21wLCBwaXBlKTsKLQkJfSBlbHNlIHsKLQkJCURC RygiJXM6IGZyZWUgU01QIiwgcGxhbmUtPm5hbWUpOwotCQkJbWRwNV9zbXBfcmVsZWFzZShtZHA1 X2ttcy0+c21wLCBwaXBlKTsKLQkJfQotCX0KLQogCXBzdGF0ZS0+cGVuZGluZyA9IGZhbHNlOwog fQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL21kcC9tZHA1L21kcDVfc21wLmMg Yi9kcml2ZXJzL2dwdS9kcm0vbXNtL21kcC9tZHA1L21kcDVfc21wLmMKaW5kZXggMjdkN2I1NS4u ZWYxMTIwYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9tZHAvbWRwNS9tZHA1X3Nt cC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vbWRwL21kcDUvbWRwNV9zbXAuYwpAQCAtMjEs NzIgKzIxLDYgQEAKICNpbmNsdWRlICJtZHA1X3NtcC5oIgogCiAKLS8qIFNNUCAtIFNoYXJlZCBN ZW1vcnkgUG9vbAotICoKLSAqIFRoZXNlIGFyZSBzaGFyZWQgYmV0d2VlbiBhbGwgdGhlIGNsaWVu dHMsIHdoZXJlIGVhY2ggcGxhbmUgaW4gYQotICogc2Nhbm91dCBidWZmZXIgaXMgYSBTTVAgY2xp ZW50LiAgSWUuIHNjYW5vdXQgb2YgMyBwbGFuZSBJNDIwIG9uCi0gKiBwaXBlIFZJRzAgPT4gMyBj bGllbnRzOiBWSUcwX1ksIFZJRzBfQ0IsIFZJRzBfQ1IuCi0gKgotICogQmFzZWQgb24gdGhlIHNp emUgb2YgdGhlIGF0dGFjaGVkIHNjYW5vdXQgYnVmZmVyLCBhIGNlcnRhaW4gIyBvZgotICogYmxv Y2tzIG11c3QgYmUgYWxsb2NhdGVkIHRvIHRoYXQgY2xpZW50IG91dCBvZiB0aGUgc2hhcmVkIHBv b2wuCi0gKgotICogSW4gc29tZSBodywgc29tZSBibG9ja3MgYXJlIHN0YXRpY2FsbHkgYWxsb2Nh dGVkIGZvciBjZXJ0YWluIHBpcGVzCi0gKiBhbmQgQ0FOTk9UIGJlIHJlLWFsbG9jYXRlZCAoZWc6 IE1NQjAgYW5kIE1NQjEgYm90aCB0aWVkIHRvIFJHQjApLgotICoKLSAqIEZvciBlYWNoIGJsb2Nr IHRoYXQgY2FuIGJlIGR5bmFtaWNhbGx5IGFsbG9jYXRlZCwgaXQgY2FuIGJlIGVpdGhlcgotICog ICAgIGZyZWU6Ci0gKiAgICAgVGhlIGJsb2NrIGlzIGZyZWUuCi0gKgotICogICAgIHBlbmRpbmc6 Ci0gKiAgICAgVGhlIGJsb2NrIGlzIGFsbG9jYXRlZCB0byBzb21lIGNsaWVudCBhbmQgbm90IGZy ZWUuCi0gKgotICogICAgIGNvbmZpZ3VyZWQ6Ci0gKiAgICAgVGhlIGJsb2NrIGlzIGFsbG9jYXRl ZCB0byBzb21lIGNsaWVudCwgYW5kIGFzc2lnbmVkIHRvIHRoYXQKLSAqICAgICBjbGllbnQgaW4g TURQNV9TTVBfQUxMT0MgcmVnaXN0ZXJzLgotICoKLSAqICAgICBpbnVzZToKLSAqICAgICBUaGUg YmxvY2sgaXMgYmVpbmcgYWN0aXZlbHkgdXNlZCBieSBhIGNsaWVudC4KLSAqCi0gKiBUaGUgdXBk YXRlcyBoYXBwZW4gaW4gdGhlIGZvbGxvd2luZyBzdGVwczoKLSAqCi0gKiAgMSkgbWRwNV9zbXBf cmVxdWVzdCgpOgotICogICAgIFdoZW4gcGxhbmUgc2Nhbm91dCBpcyBzZXR1cCwgY2FsY3VsYXRl IHJlcXVpcmVkIG51bWJlciBvZgotICogICAgIGJsb2NrcyBuZWVkZWQgcGVyIGNsaWVudCwgYW5k IHJlcXVlc3QuIEJsb2NrcyBuZWl0aGVyIGludXNlIG5vcgotICogICAgIGNvbmZpZ3VyZWQgbm9y IHBlbmRpbmcgYnkgYW55IG90aGVyIGNsaWVudCBhcmUgYWRkZWQgdG8gY2xpZW50J3MKLSAqICAg ICBwZW5kaW5nIHNldC4KLSAqICAgICBGb3Igc2hyaW5raW5nLCBibG9ja3MgaW4gcGVuZGluZyBi dXQgbm90IGluIGNvbmZpZ3VyZWQgY2FuIGJlIGZyZWVkCi0gKiAgICAgZGlyZWN0bHksIGJ1dCB0 aG9zZSBhbHJlYWR5IGluIGNvbmZpZ3VyZWQgd2lsbCBiZSBmcmVlZCBsYXRlciBieQotICogICAg IG1kcDVfc21wX2NvbW1pdC4KLSAqCi0gKiAgMikgbWRwNV9zbXBfY29uZmlndXJlKCk6Ci0gKiAg ICAgQXMgaHcgaXMgcHJvZ3JhbW1lZCwgYmVmb3JlIEZMVVNILCBNRFA1X1NNUF9BTExPQyByZWdp c3RlcnMKLSAqICAgICBhcmUgY29uZmlndXJlZCBmb3IgdGhlIHVuaW9uKHBlbmRpbmcsIGludXNl KQotICogICAgIEN1cnJlbnQgcGVuZGluZyBpcyBjb3BpZWQgdG8gY29uZmlndXJlZC4KLSAqICAg ICBJdCBpcyBhc3N1bWVkIHRoYXQgbWRwNV9zbXBfcmVxdWVzdCBhbmQgbWRwNV9zbXBfY29uZmln dXJlIG5vdCBydW4KLSAqICAgICBjb25jdXJyZW50bHkgZm9yIHRoZSBzYW1lIHBpcGUuCi0gKgot ICogIDMpIG1kcDVfc21wX2NvbW1pdCgpOgotICogICAgIEFmdGVyIG5leHQgdmJsYW5rLCBjb3B5 IGNvbmZpZ3VyZWQgLT4gaW51c2UuICBPcHRpb25hbGx5IHVwZGF0ZQotICogICAgIE1EUDVfU01Q X0FMTE9DIHJlZ2lzdGVycyBpZiB0aGVyZSBhcmUgbmV3bHkgdW51c2VkIGJsb2NrcwotICoKLSAq ICA0KSBtZHA1X3NtcF9yZWxlYXNlKCk6Ci0gKiAgICAgTXVzdCBiZSBjYWxsZWQgYWZ0ZXIgdGhl IHBpcGUgaXMgZGlzYWJsZWQgYW5kIG5vIGxvbmdlciB1c2VzIGFueSBTTUIKLSAqCi0gKiBPbiB0 aGUgbmV4dCB2YmxhbmsgYWZ0ZXIgY2hhbmdlcyBoYXZlIGJlZW4gY29tbWl0dGVkIHRvIGh3LCB0 aGUKLSAqIGNsaWVudCdzIHBlbmRpbmcgYmxvY2tzIGJlY29tZSBpdCdzIGluLXVzZSBibG9ja3Mg KGFuZCBuby1sb25nZXIKLSAqIGluLXVzZSBibG9ja3MgYmVjb21lIGF2YWlsYWJsZSB0byBvdGhl ciBjbGllbnRzKS4KLSAqCi0gKiBidHcsIGh1cnJheSBmb3IgY29uZnVzaW5nIG92ZXJsb2FkZWQg YWNyb255bXMhICA6LS8KLSAqCi0gKiBOT1RFOiBmb3IgYXRvbWljIG1vZGVzZXQvcGFnZWZsaXAg Tk9OQkxPQ0sgb3BlcmF0aW9ucywgc3RlcCAjMQotICogc2hvdWxkIGhhcHBlbiBhdCAob3IgYmVm b3JlKT8gYXRvbWljLT5jaGVjaygpLiAgQW5kIHdlJ2QgbmVlZAotICogYW4gQVBJIHRvIGRpc2Nh cmQgcHJldmlvdXMgcmVxdWVzdHMgaWYgdXBkYXRlIGlzIGFib3J0ZWQgb3IKLSAqICh0ZXN0LW9u bHkpLgotICoKLSAqIFRPRE8gd291bGQgcGVyaGFwcyBiZSBuaWNlIHRvIGhhdmUgZGVidWdmcyB0 byBkdW1wIG91dCBrZXJuZWwKLSAqIGludXNlIGFuZCBwZW5kaW5nIHN0YXRlIG9mIGFsbCBjbGll bnRzLi4KLSAqLwotCiBzdHJ1Y3QgbWRwNV9zbXAgewogCXN0cnVjdCBkcm1fZGV2aWNlICpkZXY7 CiAKQEAgLTk0LDE2ICsyOCw4IEBAIHN0cnVjdCBtZHA1X3NtcCB7CiAKIAlpbnQgYmxrX2NudDsK IAlpbnQgYmxrX3NpemU7Ci0KLQlzcGlubG9ja190IHN0YXRlX2xvY2s7Ci0JbWRwNV9zbXBfc3Rh dGVfdCBzdGF0ZTsgLyogdG8gdHJhY2sgc21wIGFsbG9jYXRpb24gYW1vbmdzdCBwaXBlczogKi8K LQotCXN0cnVjdCBtZHA1X2NsaWVudF9zbXBfc3RhdGUgY2xpZW50X3N0YXRlW01BWF9DTElFTlRT XTsKIH07CiAKLXN0YXRpYyB2b2lkIHVwZGF0ZV9zbXBfc3RhdGUoc3RydWN0IG1kcDVfc21wICpz bXAsCi0JCXUzMiBjaWQsIG1kcDVfc21wX3N0YXRlX3QgKmFzc2lnbmVkKTsKLQogc3RhdGljIGlu bGluZQogc3RydWN0IG1kcDVfa21zICpnZXRfa21zKHN0cnVjdCBtZHA1X3NtcCAqc21wKQogewpA QCAtMTM0LDU3ICs2MCwzOCBAQCBzdGF0aWMgaW5saW5lIHUzMiBwaXBlMmNsaWVudChlbnVtIG1k cDVfcGlwZSBwaXBlLCBpbnQgcGxhbmUpCiAJcmV0dXJuIG1kcDVfY2ZnLT5zbXAuY2xpZW50c1tw aXBlXSArIHBsYW5lOwogfQogCi0vKiBzdGVwICMxOiB1cGRhdGUgIyBvZiBibG9ja3MgcGVuZGlu ZyBmb3IgdGhlIGNsaWVudDogKi8KKy8qIGFsbG9jYXRlIGJsb2NrcyBmb3IgdGhlIHNwZWNpZmll ZCByZXF1ZXN0OiAqLwogc3RhdGljIGludCBzbXBfcmVxdWVzdF9ibG9jayhzdHJ1Y3QgbWRwNV9z bXAgKnNtcCwKKwkJc3RydWN0IG1kcDVfc21wX3N0YXRlICpzdGF0ZSwKIAkJdTMyIGNpZCwgaW50 IG5ibGtzKQogewotCXN0cnVjdCBtZHA1X2ttcyAqbWRwNV9rbXMgPSBnZXRfa21zKHNtcCk7Ci0J c3RydWN0IG1kcDVfY2xpZW50X3NtcF9zdGF0ZSAqcHMgPSAmc21wLT5jbGllbnRfc3RhdGVbY2lk XTsKLQlpbnQgaSwgcmV0LCBhdmFpbCwgY3VyX25ibGtzLCBjbnQgPSBzbXAtPmJsa19jbnQ7CisJ dm9pZCAqY3MgPSBzdGF0ZS0+Y2xpZW50X3N0YXRlW2NpZF07CisJaW50IGksIGF2YWlsLCBjbnQg PSBzbXAtPmJsa19jbnQ7CiAJdWludDhfdCByZXNlcnZlZDsKLQl1bnNpZ25lZCBsb25nIGZsYWdz OwogCi0JcmVzZXJ2ZWQgPSBzbXAtPnJlc2VydmVkW2NpZF07CisJLyogd2Ugc2hvdWxkbid0IGJl IHJlcXVlc3RpbmcgYmxvY2tzIGZvciBhbiBpbi11c2UgY2xpZW50OiAqLworCVdBUk5fT04oYml0 bWFwX3dlaWdodChjcywgY250KSA+IDApOwogCi0Jc3Bpbl9sb2NrX2lycXNhdmUoJnNtcC0+c3Rh dGVfbG9jaywgZmxhZ3MpOworCXJlc2VydmVkID0gc21wLT5yZXNlcnZlZFtjaWRdOwogCiAJaWYg KHJlc2VydmVkKSB7CiAJCW5ibGtzID0gbWF4KDAsIG5ibGtzIC0gcmVzZXJ2ZWQpOwogCQlEQkco IiVkIE1NQnMgYWxsb2NhdGVkICglZCByZXNlcnZlZCkiLCBuYmxrcywgcmVzZXJ2ZWQpOwogCX0K IAotCWF2YWlsID0gY250IC0gYml0bWFwX3dlaWdodChzbXAtPnN0YXRlLCBjbnQpOworCWF2YWls ID0gY250IC0gYml0bWFwX3dlaWdodChzdGF0ZS0+c3RhdGUsIGNudCk7CiAJaWYgKG5ibGtzID4g YXZhaWwpIHsKLQkJZGV2X2VycihtZHA1X2ttcy0+ZGV2LT5kZXYsICJvdXQgb2YgYmxrcyAocmVx PSVkID4gYXZhaWw9JWQpXG4iLAorCQlkZXZfZXJyKHNtcC0+ZGV2LT5kZXYsICJvdXQgb2YgYmxr cyAocmVxPSVkID4gYXZhaWw9JWQpXG4iLAogCQkJCW5ibGtzLCBhdmFpbCk7Ci0JCXJldCA9IC1F Tk9TUEM7Ci0JCWdvdG8gZmFpbDsKKwkJcmV0dXJuIC1FTk9TUEM7CiAJfQogCi0JY3VyX25ibGtz ID0gYml0bWFwX3dlaWdodChwcy0+cGVuZGluZywgY250KTsKLQlpZiAobmJsa3MgPiBjdXJfbmJs a3MpIHsKLQkJLyogZ3JvdyB0aGUgZXhpc3RpbmcgcGVuZGluZyByZXNlcnZhdGlvbjogKi8KLQkJ Zm9yIChpID0gY3VyX25ibGtzOyBpIDwgbmJsa3M7IGkrKykgewotCQkJaW50IGJsayA9IGZpbmRf Zmlyc3RfemVyb19iaXQoc21wLT5zdGF0ZSwgY250KTsKLQkJCXNldF9iaXQoYmxrLCBwcy0+cGVu ZGluZyk7Ci0JCQlzZXRfYml0KGJsaywgc21wLT5zdGF0ZSk7Ci0JCX0KLQl9IGVsc2UgewotCQkv KiBzaHJpbmsgdGhlIGV4aXN0aW5nIHBlbmRpbmcgcmVzZXJ2YXRpb246ICovCi0JCWZvciAoaSA9 IGN1cl9uYmxrczsgaSA+IG5ibGtzOyBpLS0pIHsKLQkJCWludCBibGsgPSBmaW5kX2ZpcnN0X2Jp dChwcy0+cGVuZGluZywgY250KTsKLQkJCWNsZWFyX2JpdChibGssIHBzLT5wZW5kaW5nKTsKLQot CQkJLyogY2xlYXIgaW4gZ2xvYmFsIHNtcF9zdGF0ZSBpZiBub3QgaW4gY29uZmlndXJlZAotCQkJ ICogb3RoZXJ3aXNlIHVudGlsIF9jb21taXQoKQotCQkJICovCi0JCQlpZiAoIXRlc3RfYml0KGJs aywgcHMtPmNvbmZpZ3VyZWQpKQotCQkJCWNsZWFyX2JpdChibGssIHNtcC0+c3RhdGUpOwotCQl9 CisJZm9yIChpID0gMDsgaSA8IG5ibGtzOyBpKyspIHsKKwkJaW50IGJsayA9IGZpbmRfZmlyc3Rf emVyb19iaXQoc3RhdGUtPnN0YXRlLCBjbnQpOworCQlzZXRfYml0KGJsaywgY3MpOworCQlzZXRf Yml0KGJsaywgc3RhdGUtPnN0YXRlKTsKIAl9CiAKLWZhaWw6Ci0Jc3Bpbl91bmxvY2tfaXJxcmVz dG9yZSgmc21wLT5zdGF0ZV9sb2NrLCBmbGFncyk7CiAJcmV0dXJuIDA7CiB9CiAKQEAgLTIwOSwx NCArMTE2LDE1IEBAIHN0YXRpYyB2b2lkIHNldF9maWZvX3RocmVzaG9sZHMoc3RydWN0IG1kcDVf c21wICpzbXAsCiAgKiBkZWNpbWF0ZWQgd2lkdGguICBJZS4gU01QIGJ1ZmZlcmluZyBzaXRzIGRv d25zdHJlYW0gb2YgZGVjaW1hdGlvbiAod2hpY2gKICAqIHByZXN1bWFibHkgaGFwcGVucyBkdXJp bmcgdGhlIGRtYSBmcm9tIHNjYW5vdXQgYnVmZmVyKS4KICAqLwotaW50IG1kcDVfc21wX3JlcXVl c3Qoc3RydWN0IG1kcDVfc21wICpzbXAsIGVudW0gbWRwNV9waXBlIHBpcGUsCi0JCWNvbnN0IHN0 cnVjdCBtZHBfZm9ybWF0ICpmb3JtYXQsIHUzMiB3aWR0aCwgYm9vbCBoZGVjaW0pCit1aW50MzJf dCBtZHA1X3NtcF9jYWxjdWxhdGUoc3RydWN0IG1kcDVfc21wICpzbXAsCisJCWNvbnN0IHN0cnVj dCBtZHBfZm9ybWF0ICpmb3JtYXQsCisJCXUzMiB3aWR0aCwgYm9vbCBoZGVjaW0pCiB7CiAJc3Ry dWN0IG1kcDVfa21zICptZHA1X2ttcyA9IGdldF9rbXMoc21wKTsKLQlzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2ID0gbWRwNV9rbXMtPmRldjsKIAlpbnQgcmV2ID0gbWRwNV9jZmdfZ2V0X2h3X3Jldiht ZHA1X2ttcy0+Y2ZnKTsKLQlpbnQgaSwgaHN1YiwgbnBsYW5lcywgbmxpbmVzLCBuYmxrcywgcmV0 OworCWludCBpLCBoc3ViLCBucGxhbmVzLCBubGluZXM7CiAJdTMyIGZtdCA9IGZvcm1hdC0+YmFz ZS5waXhlbF9mb3JtYXQ7CisJdWludDMyX3QgYmxrY2ZnID0gMDsKIAogCW5wbGFuZXMgPSBkcm1f Zm9ybWF0X251bV9wbGFuZXMoZm10KTsKIAloc3ViID0gZHJtX2Zvcm1hdF9ob3J6X2Nocm9tYV9z dWJzYW1wbGluZyhmbXQpOwpAQCAtMjM5LDcgKzE0Nyw3IEBAIGludCBtZHA1X3NtcF9yZXF1ZXN0 KHN0cnVjdCBtZHA1X3NtcCAqc21wLCBlbnVtIG1kcDVfcGlwZSBwaXBlLAogCQkJaHN1YiA9IDE7 CiAJfQogCi0JZm9yIChpID0gMCwgbmJsa3MgPSAwOyBpIDwgbnBsYW5lczsgaSsrKSB7CisJZm9y IChpID0gMDsgaSA8IG5wbGFuZXM7IGkrKykgewogCQlpbnQgbiwgZmV0Y2hfc3RyaWRlLCBjcHA7 CiAKIAkJY3BwID0gZHJtX2Zvcm1hdF9wbGFuZV9jcHAoZm10LCBpKTsKQEAgLTI1MSw2MCArMTU5 LDcyIEBAIGludCBtZHA1X3NtcF9yZXF1ZXN0KHN0cnVjdCBtZHA1X3NtcCAqc21wLCBlbnVtIG1k cDVfcGlwZSBwaXBlLAogCQlpZiAocmV2ID09IDApCiAJCQluID0gcm91bmR1cF9wb3dfb2ZfdHdv KG4pOwogCisJCWJsa2NmZyB8PSAobiA8PCAoOCAqIGkpKTsKKwl9CisKKwlyZXR1cm4gYmxrY2Zn OworfQorCitpbnQgbWRwNV9zbXBfYXNzaWduKHN0cnVjdCBtZHA1X3NtcCAqc21wLCBzdHJ1Y3Qg bWRwNV9zbXBfc3RhdGUgKnN0YXRlLAorCQllbnVtIG1kcDVfcGlwZSBwaXBlLCB1aW50MzJfdCBi bGtjZmcpCit7CisJc3RydWN0IG1kcDVfa21zICptZHA1X2ttcyA9IGdldF9rbXMoc21wKTsKKwlz dHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gbWRwNV9rbXMtPmRldjsKKwlpbnQgaSwgcmV0OworCisJ Zm9yIChpID0gMDsgaSA8IHBpcGUybmNsaWVudHMocGlwZSk7IGkrKykgeworCQl1MzIgY2lkID0g cGlwZTJjbGllbnQocGlwZSwgaSk7CisJCWludCBuID0gYmxrY2ZnICYgMHhmZjsKKworCQlpZiAo IW4pCisJCQljb250aW51ZTsKKwogCQlEQkcoIiVzWyVkXTogcmVxdWVzdCAlZCBTTVAgYmxvY2tz IiwgcGlwZTJuYW1lKHBpcGUpLCBpLCBuKTsKLQkJcmV0ID0gc21wX3JlcXVlc3RfYmxvY2soc21w LCBwaXBlMmNsaWVudChwaXBlLCBpKSwgbik7CisJCXJldCA9IHNtcF9yZXF1ZXN0X2Jsb2NrKHNt cCwgc3RhdGUsIGNpZCwgbik7CiAJCWlmIChyZXQpIHsKIAkJCWRldl9lcnIoZGV2LT5kZXYsICJD YW5ub3QgYWxsb2NhdGUgJWQgU01QIGJsb2NrczogJWRcbiIsCiAJCQkJCW4sIHJldCk7CiAJCQly ZXR1cm4gcmV0OwogCQl9CiAKLQkJbmJsa3MgKz0gbjsKKwkJYmxrY2ZnID4+PSA4OwogCX0KIAot CXNldF9maWZvX3RocmVzaG9sZHMoc21wLCBwaXBlLCBuYmxrcyk7CisJc3RhdGUtPmFzc2lnbmVk IHw9ICgxIDw8IHBpcGUpOwogCiAJcmV0dXJuIDA7CiB9CiAKIC8qIFJlbGVhc2UgU01QIGJsb2Nr cyBmb3IgYWxsIGNsaWVudHMgb2YgdGhlIHBpcGUgKi8KLXZvaWQgbWRwNV9zbXBfcmVsZWFzZShz dHJ1Y3QgbWRwNV9zbXAgKnNtcCwgZW51bSBtZHA1X3BpcGUgcGlwZSkKK3ZvaWQgbWRwNV9zbXBf cmVsZWFzZShzdHJ1Y3QgbWRwNV9zbXAgKnNtcCwgc3RydWN0IG1kcDVfc21wX3N0YXRlICpzdGF0 ZSwKKwkJZW51bSBtZHA1X3BpcGUgcGlwZSkKIHsKIAlpbnQgaTsKLQl1bnNpZ25lZCBsb25nIGZs YWdzOwogCWludCBjbnQgPSBzbXAtPmJsa19jbnQ7CiAKIAlmb3IgKGkgPSAwOyBpIDwgcGlwZTJu Y2xpZW50cyhwaXBlKTsgaSsrKSB7Ci0JCW1kcDVfc21wX3N0YXRlX3QgYXNzaWduZWQ7CiAJCXUz MiBjaWQgPSBwaXBlMmNsaWVudChwaXBlLCBpKTsKLQkJc3RydWN0IG1kcDVfY2xpZW50X3NtcF9z dGF0ZSAqcHMgPSAmc21wLT5jbGllbnRfc3RhdGVbY2lkXTsKLQotCQlzcGluX2xvY2tfaXJxc2F2 ZSgmc21wLT5zdGF0ZV9sb2NrLCBmbGFncyk7Ci0KLQkJLyogY2xlYXIgaHcgYXNzaWdubWVudCAq LwotCQliaXRtYXBfb3IoYXNzaWduZWQsIHBzLT5pbnVzZSwgcHMtPmNvbmZpZ3VyZWQsIGNudCk7 Ci0JCXVwZGF0ZV9zbXBfc3RhdGUoc21wLCBDSURfVU5VU0VELCAmYXNzaWduZWQpOworCQl2b2lk ICpjcyA9IHN0YXRlLT5jbGllbnRfc3RhdGVbY2lkXTsKIAotCQkvKiBmcmVlIHRvIGdsb2JhbCBw b29sICovCi0JCWJpdG1hcF9hbmRub3Qoc21wLT5zdGF0ZSwgc21wLT5zdGF0ZSwgcHMtPnBlbmRp bmcsIGNudCk7Ci0JCWJpdG1hcF9hbmRub3Qoc21wLT5zdGF0ZSwgc21wLT5zdGF0ZSwgYXNzaWdu ZWQsIGNudCk7CisJCS8qIHVwZGF0ZSBnbG9iYWwgc3RhdGU6ICovCisJCWJpdG1hcF9hbmRub3Qo c3RhdGUtPnN0YXRlLCBzdGF0ZS0+c3RhdGUsIGNzLCBjbnQpOwogCi0JCS8qIGNsZWFyIGNsaWVu dCdzIGluZm9yICovCi0JCWJpdG1hcF96ZXJvKHBzLT5wZW5kaW5nLCBjbnQpOwotCQliaXRtYXBf emVybyhwcy0+Y29uZmlndXJlZCwgY250KTsKLQkJYml0bWFwX3plcm8ocHMtPmludXNlLCBjbnQp OwotCi0JCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnNtcC0+c3RhdGVfbG9jaywgZmxhZ3MpOwor CQkvKiBjbGVhciBjbGllbnQncyBzdGF0ZSAqLworCQliaXRtYXBfemVybyhjcywgY250KTsKIAl9 CiAKLQlzZXRfZmlmb190aHJlc2hvbGRzKHNtcCwgcGlwZSwgMCk7CisJc3RhdGUtPnJlbGVhc2Vk IHw9ICgxIDw8IHBpcGUpOwogfQogCi1zdGF0aWMgdm9pZCB1cGRhdGVfc21wX3N0YXRlKHN0cnVj dCBtZHA1X3NtcCAqc21wLAorLyogTk9URTogU01QX0FMTE9DXyogcmVncyBhcmUgKm5vdCogZG91 YmxlIGJ1ZmZlcmVkLCBzbyByZWxlYXNlIGhhcyB0bworICogaGFwcGVuIGFmdGVyIHNjYW5vdXQg Y29tcGxldGVzLgorICovCitzdGF0aWMgdW5zaWduZWQgdXBkYXRlX3NtcF9zdGF0ZShzdHJ1Y3Qg bWRwNV9zbXAgKnNtcCwKIAkJdTMyIGNpZCwgbWRwNV9zbXBfc3RhdGVfdCAqYXNzaWduZWQpCiB7 CiAJc3RydWN0IG1kcDVfa21zICptZHA1X2ttcyA9IGdldF9rbXMoc21wKTsKIAlpbnQgY250ID0g c21wLT5ibGtfY250OworCXVuc2lnbmVkIG5ibGtzID0gMDsKIAl1MzIgYmxrLCB2YWw7CiAKIAlm b3JfZWFjaF9zZXRfYml0KGJsaywgKmFzc2lnbmVkLCBjbnQpIHsKQEAgLTMzMCw2MiArMjUwLDQ2 IEBAIHN0YXRpYyB2b2lkIHVwZGF0ZV9zbXBfc3RhdGUoc3RydWN0IG1kcDVfc21wICpzbXAsCiAK IAkJbWRwNV93cml0ZShtZHA1X2ttcywgUkVHX01EUDVfU01QX0FMTE9DX1dfUkVHKGlkeCksIHZh bCk7CiAJCW1kcDVfd3JpdGUobWRwNV9rbXMsIFJFR19NRFA1X1NNUF9BTExPQ19SX1JFRyhpZHgp LCB2YWwpOworCisJCW5ibGtzKys7CiAJfQorCisJcmV0dXJuIG5ibGtzOwogfQogCi0vKiBzdGVw ICMyOiBjb25maWd1cmUgaHcgZm9yIHVuaW9uKHBlbmRpbmcsIGludXNlKTogKi8KLXZvaWQgbWRw NV9zbXBfY29uZmlndXJlKHN0cnVjdCBtZHA1X3NtcCAqc21wLCBlbnVtIG1kcDVfcGlwZSBwaXBl KQordm9pZCBtZHA1X3NtcF9wcmVwYXJlX2NvbW1pdChzdHJ1Y3QgbWRwNV9zbXAgKnNtcCwgc3Ry dWN0IG1kcDVfc21wX3N0YXRlICpzdGF0ZSkKIHsKLQlpbnQgY250ID0gc21wLT5ibGtfY250Owot CW1kcDVfc21wX3N0YXRlX3QgYXNzaWduZWQ7Ci0JaW50IGk7Ci0KLQlmb3IgKGkgPSAwOyBpIDwg cGlwZTJuY2xpZW50cyhwaXBlKTsgaSsrKSB7Ci0JCXUzMiBjaWQgPSBwaXBlMmNsaWVudChwaXBl LCBpKTsKLQkJc3RydWN0IG1kcDVfY2xpZW50X3NtcF9zdGF0ZSAqcHMgPSAmc21wLT5jbGllbnRf c3RhdGVbY2lkXTsKKwllbnVtIG1kcDVfcGlwZSBwaXBlOwogCi0JCS8qCi0JCSAqIGlmIHZibGFu ayBoYXMgbm90IGhhcHBlbmVkIHNpbmNlIGxhc3Qgc21wX2NvbmZpZ3VyZQotCQkgKiBza2lwIHRo ZSBjb25maWd1cmUgZm9yIG5vdwotCQkgKi8KLQkJaWYgKCFiaXRtYXBfZXF1YWwocHMtPmludXNl LCBwcy0+Y29uZmlndXJlZCwgY250KSkKLQkJCWNvbnRpbnVlOworCWZvcl9lYWNoX3NldF9iaXQo cGlwZSwgJnN0YXRlLT5hc3NpZ25lZCwgc2l6ZW9mKHN0YXRlLT5hc3NpZ25lZCkgKiA4KSB7CisJ CXVuc2lnbmVkIGksIG5ibGtzID0gMDsKIAotCQliaXRtYXBfY29weShwcy0+Y29uZmlndXJlZCwg cHMtPnBlbmRpbmcsIGNudCk7Ci0JCWJpdG1hcF9vcihhc3NpZ25lZCwgcHMtPmludXNlLCBwcy0+ Y29uZmlndXJlZCwgY250KTsKLQkJdXBkYXRlX3NtcF9zdGF0ZShzbXAsIGNpZCwgJmFzc2lnbmVk KTsKLQl9Ci19CisJCWZvciAoaSA9IDA7IGkgPCBwaXBlMm5jbGllbnRzKHBpcGUpOyBpKyspIHsK KwkJCXUzMiBjaWQgPSBwaXBlMmNsaWVudChwaXBlLCBpKTsKKwkJCXZvaWQgKmNzID0gc3RhdGUt PmNsaWVudF9zdGF0ZVtjaWRdOwogCi0vKiBzdGVwICMzOiBhZnRlciB2YmxhbmssIGNvcHkgY29u ZmlndXJlZCAtPiBpbnVzZTogKi8KLXZvaWQgbWRwNV9zbXBfY29tbWl0KHN0cnVjdCBtZHA1X3Nt cCAqc21wLCBlbnVtIG1kcDVfcGlwZSBwaXBlKQotewotCWludCBjbnQgPSBzbXAtPmJsa19jbnQ7 Ci0JbWRwNV9zbXBfc3RhdGVfdCByZWxlYXNlZDsKLQlpbnQgaTsKKwkJCW5ibGtzICs9IHVwZGF0 ZV9zbXBfc3RhdGUoc21wLCBjaWQsIGNzKTsKIAotCWZvciAoaSA9IDA7IGkgPCBwaXBlMm5jbGll bnRzKHBpcGUpOyBpKyspIHsKLQkJdTMyIGNpZCA9IHBpcGUyY2xpZW50KHBpcGUsIGkpOwotCQlz dHJ1Y3QgbWRwNV9jbGllbnRfc21wX3N0YXRlICpwcyA9ICZzbXAtPmNsaWVudF9zdGF0ZVtjaWRd OworCQkJREJHKCJhc3NpZ24gJXM6JXUsICV1IGJsa3MiLAorCQkJCXBpcGUybmFtZShwaXBlKSwg aSwgbmJsa3MpOworCQl9CiAKLQkJLyoKLQkJICogRmlndXJlIG91dCBpZiB0aGVyZSBhcmUgYW55 IGJsb2NrcyB3ZSB3aGVyZSBwcmV2aW91c2x5Ci0JCSAqIHVzaW5nLCB3aGljaCBjYW4gYmUgcmVs ZWFzZWQgYW5kIG1hZGUgYXZhaWxhYmxlIHRvIG90aGVyCi0JCSAqIGNsaWVudHM6Ci0JCSAqLwot CQlpZiAoYml0bWFwX2FuZG5vdChyZWxlYXNlZCwgcHMtPmludXNlLCBwcy0+Y29uZmlndXJlZCwg Y250KSkgewotCQkJdW5zaWduZWQgbG9uZyBmbGFnczsKKwkJc2V0X2ZpZm9fdGhyZXNob2xkcyhz bXAsIHBpcGUsIG5ibGtzKTsKKwl9CiAKLQkJCXNwaW5fbG9ja19pcnFzYXZlKCZzbXAtPnN0YXRl X2xvY2ssIGZsYWdzKTsKLQkJCS8qIGNsZWFyIHJlbGVhc2VkIGJsb2NrczogKi8KLQkJCWJpdG1h cF9hbmRub3Qoc21wLT5zdGF0ZSwgc21wLT5zdGF0ZSwgcmVsZWFzZWQsIGNudCk7Ci0JCQlzcGlu X3VubG9ja19pcnFyZXN0b3JlKCZzbXAtPnN0YXRlX2xvY2ssIGZsYWdzKTsKKwlzdGF0ZS0+YXNz aWduZWQgPSAwOworfQogCi0JCQl1cGRhdGVfc21wX3N0YXRlKHNtcCwgQ0lEX1VOVVNFRCwgJnJl bGVhc2VkKTsKLQkJfQordm9pZCBtZHA1X3NtcF9jb21wbGV0ZV9jb21taXQoc3RydWN0IG1kcDVf c21wICpzbXAsIHN0cnVjdCBtZHA1X3NtcF9zdGF0ZSAqc3RhdGUpCit7CisJZW51bSBtZHA1X3Bp cGUgcGlwZTsKIAotCQliaXRtYXBfY29weShwcy0+aW51c2UsIHBzLT5jb25maWd1cmVkLCBjbnQp OworCWZvcl9lYWNoX3NldF9iaXQocGlwZSwgJnN0YXRlLT5yZWxlYXNlZCwgc2l6ZW9mKHN0YXRl LT5yZWxlYXNlZCkgKiA4KSB7CisJCURCRygicmVsZWFzZSAlcyIsIHBpcGUybmFtZShwaXBlKSk7 CisJCXNldF9maWZvX3RocmVzaG9sZHMoc21wLCBwaXBlLCAwKTsKIAl9CisKKwlzdGF0ZS0+cmVs ZWFzZWQgPSAwOwogfQogCiB2b2lkIG1kcDVfc21wX2Rlc3Ryb3koc3RydWN0IG1kcDVfc21wICpz bXApCkBAIC0zOTMsOCArMjk3LDkgQEAgdm9pZCBtZHA1X3NtcF9kZXN0cm95KHN0cnVjdCBtZHA1 X3NtcCAqc21wKQogCWtmcmVlKHNtcCk7CiB9CiAKLXN0cnVjdCBtZHA1X3NtcCAqbWRwNV9zbXBf aW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBjb25zdCBzdHJ1Y3QgbWRwNV9zbXBfYmxvY2sg KmNmZykKK3N0cnVjdCBtZHA1X3NtcCAqbWRwNV9zbXBfaW5pdChzdHJ1Y3QgbWRwNV9rbXMgKm1k cDVfa21zLCBjb25zdCBzdHJ1Y3QgbWRwNV9zbXBfYmxvY2sgKmNmZykKIHsKKwlzdHJ1Y3QgbWRw NV9zbXBfc3RhdGUgKnN0YXRlID0gJm1kcDVfa21zLT5zdGF0ZS0+c21wOwogCXN0cnVjdCBtZHA1 X3NtcCAqc21wID0gTlVMTDsKIAlpbnQgcmV0OwogCkBAIC00MDQsMTQgKzMwOSwxMyBAQCBzdHJ1 Y3QgbWRwNV9zbXAgKm1kcDVfc21wX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgY29uc3Qg c3RydWN0IG1kcDVfc21wX2JsbwogCQlnb3RvIGZhaWw7CiAJfQogCi0Jc21wLT5kZXYgPSBkZXY7 CisJc21wLT5kZXYgPSBtZHA1X2ttcy0+ZGV2OwogCXNtcC0+YmxrX2NudCA9IGNmZy0+bW1iX2Nv dW50OwogCXNtcC0+YmxrX3NpemUgPSBjZmctPm1tYl9zaXplOwogCiAJLyogc3RhdGljYWxseSB0 aWVkIE1NQnMgY2Fubm90IGJlIHJlLWFsbG9jYXRlZDogKi8KLQliaXRtYXBfY29weShzbXAtPnN0 YXRlLCBjZmctPnJlc2VydmVkX3N0YXRlLCBzbXAtPmJsa19jbnQpOworCWJpdG1hcF9jb3B5KHN0 YXRlLT5zdGF0ZSwgY2ZnLT5yZXNlcnZlZF9zdGF0ZSwgc21wLT5ibGtfY250KTsKIAltZW1jcHko c21wLT5yZXNlcnZlZCwgY2ZnLT5yZXNlcnZlZCwgc2l6ZW9mKHNtcC0+cmVzZXJ2ZWQpKTsKLQlz cGluX2xvY2tfaW5pdCgmc21wLT5zdGF0ZV9sb2NrKTsKIAogCXJldHVybiBzbXA7CiBmYWlsOgpk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9tZHAvbWRwNS9tZHA1X3NtcC5oIGIvZHJp dmVycy9ncHUvZHJtL21zbS9tZHAvbWRwNS9tZHA1X3NtcC5oCmluZGV4IDIwYjg3ZTguLjEwYmRk OWYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vbWRwL21kcDUvbWRwNV9zbXAuaAor KysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL21kcC9tZHA1L21kcDVfc21wLmgKQEAgLTIxLDEwICsy MSw0OSBAQAogCiAjaW5jbHVkZSAibXNtX2Rydi5oIgogCi1zdHJ1Y3QgbWRwNV9jbGllbnRfc21w X3N0YXRlIHsKLQltZHA1X3NtcF9zdGF0ZV90IGludXNlOwotCW1kcDVfc21wX3N0YXRlX3QgY29u ZmlndXJlZDsKLQltZHA1X3NtcF9zdGF0ZV90IHBlbmRpbmc7CisvKgorICogU01QIC0gU2hhcmVk IE1lbW9yeSBQb29sOgorICoKKyAqIFNNUCBibG9ja3MgYXJlIHNoYXJlZCBiZXR3ZWVuIGFsbCB0 aGUgY2xpZW50cywgd2hlcmUgZWFjaCBwbGFuZSBpbgorICogYSBzY2Fub3V0IGJ1ZmZlciBpcyBh IFNNUCBjbGllbnQuICBJZS4gc2Nhbm91dCBvZiAzIHBsYW5lIEk0MjAgb24KKyAqIHBpcGUgVklH MCA9PiAzIGNsaWVudHM6IFZJRzBfWSwgVklHMF9DQiwgVklHMF9DUi4KKyAqCisgKiBCYXNlZCBv biB0aGUgc2l6ZSBvZiB0aGUgYXR0YWNoZWQgc2Nhbm91dCBidWZmZXIsIGEgY2VydGFpbiAjIG9m CisgKiBibG9ja3MgbXVzdCBiZSBhbGxvY2F0ZWQgdG8gdGhhdCBjbGllbnQgb3V0IG9mIHRoZSBz aGFyZWQgcG9vbC4KKyAqCisgKiBJbiBzb21lIGh3LCBzb21lIGJsb2NrcyBhcmUgc3RhdGljYWxs eSBhbGxvY2F0ZWQgZm9yIGNlcnRhaW4gcGlwZXMKKyAqIGFuZCBDQU5OT1QgYmUgcmUtYWxsb2Nh dGVkIChlZzogTU1CMCBhbmQgTU1CMSBib3RoIHRpZWQgdG8gUkdCMCkuCisgKgorICoKKyAqIEF0 b21pYyBTTVAgU3RhdGU6CisgKgorICogT24gYXRvbWljIHVwZGF0ZXMgdGhhdCBtb2RpZnkgU01Q IGNvbmZpZ3VyYXRpb24sIHRoZSBzdGF0ZSBpcyBjbG9uZWQKKyAqIChjb3BpZWQpIGFuZCBtb2Rp ZmllZC4gIEZvciB0ZXN0LW9ubHksIG9yIGluIGNhc2VzIHdoZXJlIGF0b21pYworICogdXBkYXRl IGZhaWxzIChvciBpZiB3ZSBoaXQgd3dfbXV0ZXggZGVhZGxvY2svYmFja29mZiBjb25kaXRpb24p IHRoZQorICogbmV3IHN0YXRlIGlzIHNpbXBseSB0aHJvd24gYXdheS4KKyAqCisgKiBCZWNhdXNl IHRoZSBTTVAgcmVnaXN0ZXJzIGFyZSBub3QgZG91YmxlIGJ1ZmZlcmVkLCB1cGRhdGVzIGFyZSBh CisgKiB0d28gc3RlcCBwcm9jZXNzOgorICoKKyAqIDEpIGluIF9wcmVwYXJlX2NvbW1pdCgpIHdl IGNvbmZpZ3VyZSB0aGluZ3MgKHZpYSByZWFkLW1vZGlmeS13cml0ZSkKKyAqICAgIGZvciB0aGUg bmV3bHkgYXNzaWduZWQgcGlwZXMsIHNvIHdlIGRvbid0IHRha2UgYXdheSBibG9ja3MKKyAqICAg IGFzc2lnbmVkIHRvIHBpcGVzIHRoYXQgYXJlIHN0aWxsIHNjYW5uaW5nIG91dAorICogMikgaW4g X2NvbXBsZXRlX2NvbW1pdCgpLCBhZnRlciB2YmxhbmsvZXRjLCB3ZSBjbGVhciB0aGluZ3MgZm9y IHRoZQorICogICAgcmVsZWFzZWQgY2xpZW50cywgc2luY2UgYXQgdGhhdCBwb2ludCBvbGQgcGlw ZXMgYXJlIG5vIGxvbmdlcgorICogICAgc2Nhbm5pbmcgb3V0LgorICovCitzdHJ1Y3QgbWRwNV9z bXBfc3RhdGUgeworCS8qIGdsb2JhbCBzdGF0ZSBvZiB3aGF0IGJsb2NrcyBhcmUgaW4gdXNlOiAq LworCW1kcDVfc21wX3N0YXRlX3Qgc3RhdGU7CisKKwkvKiBwZXIgY2xpZW50IHN0YXRlIG9mIHdo YXQgYmxvY2tzIHRoZXkgYXJlIHVzaW5nOiAqLworCW1kcDVfc21wX3N0YXRlX3QgY2xpZW50X3N0 YXRlW01BWF9DTElFTlRTXTsKKworCS8qIGFzc2lnbmVkIHBpcGVzIChodyB1cGRhdGVkIGF0IF9w cmVwYXJlX2NvbW1pdCgpKTogKi8KKwl1bnNpZ25lZCBsb25nIGFzc2lnbmVkOworCisJLyogcmVs ZWFzZWQgcGlwZXMgKGh3IHVwZGF0ZWQgYXQgX2NvbXBsZXRlX2NvbW1pdCgpKTogKi8KKwl1bnNp Z25lZCBsb25nIHJlbGVhc2VkOwogfTsKIAogc3RydWN0IG1kcDVfa21zOwpAQCAtMzYsMTMgKzc1 LDIwIEBAIHN0cnVjdCBtZHA1X3NtcDsKICAqIHdoaWNoIGlzIHRoZW4gdXNlZCB0byBjYWxsIHRo ZSBvdGhlciBtZHA1X3NtcF8qKGhhbmRsZXIsIC4uLikgZnVuY3Rpb25zLgogICovCiAKLXN0cnVj dCBtZHA1X3NtcCAqbWRwNV9zbXBfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBjb25zdCBz dHJ1Y3QgbWRwNV9zbXBfYmxvY2sgKmNmZyk7CitzdHJ1Y3QgbWRwNV9zbXAgKm1kcDVfc21wX2lu aXQoc3RydWN0IG1kcDVfa21zICptZHA1X2ttcywKKwkJY29uc3Qgc3RydWN0IG1kcDVfc21wX2Js b2NrICpjZmcpOwogdm9pZCAgbWRwNV9zbXBfZGVzdHJveShzdHJ1Y3QgbWRwNV9zbXAgKnNtcCk7 CiAKLWludCAgbWRwNV9zbXBfcmVxdWVzdChzdHJ1Y3QgbWRwNV9zbXAgKnNtcCwgZW51bSBtZHA1 X3BpcGUgcGlwZSwKLQkJY29uc3Qgc3RydWN0IG1kcF9mb3JtYXQgKmZvcm1hdCwgdTMyIHdpZHRo LCBib29sIGhkZWNpbSk7Ci12b2lkIG1kcDVfc21wX2NvbmZpZ3VyZShzdHJ1Y3QgbWRwNV9zbXAg KnNtcCwgZW51bSBtZHA1X3BpcGUgcGlwZSk7Ci12b2lkIG1kcDVfc21wX2NvbW1pdChzdHJ1Y3Qg bWRwNV9zbXAgKnNtcCwgZW51bSBtZHA1X3BpcGUgcGlwZSk7Ci12b2lkIG1kcDVfc21wX3JlbGVh c2Uoc3RydWN0IG1kcDVfc21wICpzbXAsIGVudW0gbWRwNV9waXBlIHBpcGUpOwordWludDMyX3Qg bWRwNV9zbXBfY2FsY3VsYXRlKHN0cnVjdCBtZHA1X3NtcCAqc21wLAorCQljb25zdCBzdHJ1Y3Qg bWRwX2Zvcm1hdCAqZm9ybWF0LAorCQl1MzIgd2lkdGgsIGJvb2wgaGRlY2ltKTsKKworaW50IG1k cDVfc21wX2Fzc2lnbihzdHJ1Y3QgbWRwNV9zbXAgKnNtcCwgc3RydWN0IG1kcDVfc21wX3N0YXRl ICpzdGF0ZSwKKwkJZW51bSBtZHA1X3BpcGUgcGlwZSwgdWludDMyX3QgYmxrY2ZnKTsKK3ZvaWQg bWRwNV9zbXBfcmVsZWFzZShzdHJ1Y3QgbWRwNV9zbXAgKnNtcCwgc3RydWN0IG1kcDVfc21wX3N0 YXRlICpzdGF0ZSwKKwkJZW51bSBtZHA1X3BpcGUgcGlwZSk7CisKK3ZvaWQgbWRwNV9zbXBfcHJl cGFyZV9jb21taXQoc3RydWN0IG1kcDVfc21wICpzbXAsIHN0cnVjdCBtZHA1X3NtcF9zdGF0ZSAq c3RhdGUpOwordm9pZCBtZHA1X3NtcF9jb21wbGV0ZV9jb21taXQoc3RydWN0IG1kcDVfc21wICpz bXAsIHN0cnVjdCBtZHA1X3NtcF9zdGF0ZSAqc3RhdGUpOwogCiAjZW5kaWYgLyogX19NRFA1X1NN UF9IX18gKi8KLS0gCjIuNy40CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVz a3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9k cmktZGV2ZWwK