From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sean Paul Subject: [PATCH v4] drm/msm: Use drm_private_obj/state instead of subclassing Date: Tue, 27 Mar 2018 10:59:00 -0400 Message-ID: <20180327145900.223743-1-seanpaul@chromium.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: freedreno-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "Freedreno" To: freedreno-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, linux-arm-msm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Cc: Archit Taneja , abhinavk-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org, robdclark-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org, Sean Paul , jsanka-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org, hoegsberg-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org List-Id: linux-arm-msm@vger.kernel.org Tm93IHRoYXQgd2UgaGF2ZSBwcml2YXRlIHN0YXRlIGhhbmRsZWQgYnkgdGhlIGNvcmUsIHdlIGNh biB1c2UgdGhvc2UKaW5zdGVhZCBvZiByb2xsaW5nIG91ciBvd24gc3dhcF9zdGF0ZSBmb3IgcHJp dmF0ZSBkYXRhLgoKT3JpZ2luYWxseSBwb3N0ZWQgaGVyZTogaHR0cHM6Ly9wYXRjaHdvcmsuZnJl ZWRlc2t0b3Aub3JnL3BhdGNoLzIxMTM2MS8KCkNoYW5nZXMgaW4gdjI6CiAtIFVzZSBzdGF0ZS0+ c3RhdGUgaW4gZGlzcCBkdXBsaWNhdGVfc3RhdGUgY2FsbGJhY2sgKEpleWt1bWFyKQpDaGFuZ2Vz IGluIHYzOgogLSBVcGRhdGUgY29tbWVudCBkZXNjcmliaW5nIG1zbV9rbXNfc3RhdGUgKEpleWt1 bWFyKQpDaGFuZ2VzIGluIHY0OgogLSBSZWJhc2VkIG9uIG1zbS1uZXh0CiAtIERvbid0IGFsd2F5 cyB1c2UgcHJpdmF0ZSBzdGF0ZSBmcm9tIGF0b21pYyBzdGF0ZSAoQXJjaGl0KQogLSBSZW5hbWVk IHNvbWUgb2YgdGhlIHN0YXRlIGFjY2Vzc29ycyAKIC0gVGVzdGVkIG9uIG1kcDUgZGI0MTBjCgpD YzogSmV5a3VtYXIgU2Fua2FyYW4gPGpzYW5rYUBjb2RlYXVyb3JhLm9yZz4KQ2M6IEFyY2hpdCBU YW5lamEgPGFyY2hpdHRAY29kZWF1cm9yYS5vcmc+ClNpZ25lZC1vZmYtYnk6IFNlYW4gUGF1bCA8 c2VhbnBhdWxAY2hyb21pdW0ub3JnPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9tZHA1 L21kcDVfa21zLmMgICB8IDc3ICsrKysrKysrKystLS0tLS0tLS0KIGRyaXZlcnMvZ3B1L2RybS9t c20vZGlzcC9tZHA1L21kcDVfa21zLmggICB8IDExICstLQogZHJpdmVycy9ncHUvZHJtL21zbS9k aXNwL21kcDUvbWRwNV9taXhlci5jIHwgMTIgKystCiBkcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3Av bWRwNS9tZHA1X3BpcGUuYyAgfCAyOCArKysrLS0tCiBkcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3Av bWRwNS9tZHA1X3NtcC5jICAgfCAxOSArKystLQogZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL21k cDUvbWRwNV9zbXAuaCAgIHwgIDQgKy0KIGRyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2F0b21pYy5j ICAgICAgICAgICB8IDM3IC0tLS0tLS0tLQogZHJpdmVycy9ncHUvZHJtL21zbS9tc21fZHJ2LmMg ICAgICAgICAgICAgIHwgODcgKysrKysrKysrKysrKysrKysrKysrLQogZHJpdmVycy9ncHUvZHJt L21zbS9tc21fZHJ2LmggICAgICAgICAgICAgIHwgIDMgLQogZHJpdmVycy9ncHUvZHJtL21zbS9t c21fa21zLmggICAgICAgICAgICAgIHwgMjEgKysrKy0tCiAxMCBmaWxlcyBjaGFuZ2VkLCAxODMg aW5zZXJ0aW9ucygrKSwgMTE2IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9tc20vZGlzcC9tZHA1L21kcDVfa21zLmMgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3Av bWRwNS9tZHA1X2ttcy5jCmluZGV4IDZkOGUzYTlhNmZjMC4uMzY2NjcwMDQzMTkwIDEwMDY0NAot LS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvbWRwNS9tZHA1X2ttcy5jCisrKyBiL2RyaXZl cnMvZ3B1L2RybS9tc20vZGlzcC9tZHA1L21kcDVfa21zLmMKQEAgLTcwLDYwICs3MCw2MiBAQCBz dGF0aWMgaW50IG1kcDVfaHdfaW5pdChzdHJ1Y3QgbXNtX2ttcyAqa21zKQogCXJldHVybiAwOwog fQogCi1zdHJ1Y3QgbWRwNV9zdGF0ZSAqbWRwNV9nZXRfc3RhdGUoc3RydWN0IGRybV9hdG9taWNf c3RhdGUgKnMpCitzdHJ1Y3QgbWRwNV9zdGF0ZSAqbWRwNV9zdGF0ZV9mcm9tX2F0b21pYyhzdHJ1 Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpCiB7Ci0Jc3RydWN0IG1zbV9kcm1fcHJpdmF0ZSAq cHJpdiA9IHMtPmRldi0+ZGV2X3ByaXZhdGU7Ci0Jc3RydWN0IG1kcDVfa21zICptZHA1X2ttcyA9 IHRvX21kcDVfa21zKHRvX21kcF9rbXMocHJpdi0+a21zKSk7Ci0Jc3RydWN0IG1zbV9rbXNfc3Rh dGUgKnN0YXRlID0gdG9fa21zX3N0YXRlKHMpOwotCXN0cnVjdCBtZHA1X3N0YXRlICpuZXdfc3Rh dGU7Ci0JaW50IHJldDsKKwlzdHJ1Y3QgbXNtX2ttc19zdGF0ZSAqa21zX3N0YXRlID0gbXNtX2tt c19zdGF0ZV9mcm9tX2F0b21pYyhzdGF0ZSk7CiAKLQlpZiAoc3RhdGUtPnN0YXRlKQotCQlyZXR1 cm4gc3RhdGUtPnN0YXRlOworCWlmIChJU19FUlJfT1JfTlVMTChrbXNfc3RhdGUpKQorCQlyZXR1 cm4gKHN0cnVjdCBtZHA1X3N0YXRlICopa21zX3N0YXRlOyAvKiBjYXN0aW5nIEVSUl9QVFIgKi8K IAotCXJldCA9IGRybV9tb2Rlc2V0X2xvY2soJm1kcDVfa21zLT5zdGF0ZV9sb2NrLCBzLT5hY3F1 aXJlX2N0eCk7Ci0JaWYgKHJldCkKLQkJcmV0dXJuIEVSUl9QVFIocmV0KTsKKwlyZXR1cm4ga21z X3N0YXRlLT5zdGF0ZTsKK30KIAotCW5ld19zdGF0ZSA9IGttYWxsb2Moc2l6ZW9mKCptZHA1X2tt cy0+c3RhdGUpLCBHRlBfS0VSTkVMKTsKLQlpZiAoIW5ld19zdGF0ZSkKLQkJcmV0dXJuIEVSUl9Q VFIoLUVOT01FTSk7CitzdHJ1Y3QgbWRwNV9zdGF0ZSAqbWRwNV9zdGF0ZV9mcm9tX2RldihzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2KQoreworCXN0cnVjdCBtc21fa21zX3N0YXRlICprbXNfc3RhdGUg PSBtc21fa21zX3N0YXRlX2Zyb21fZGV2KGRldik7CiAKLQkvKiBDb3B5IHN0YXRlOiAqLwotCW5l d19zdGF0ZS0+aHdwaXBlID0gbWRwNV9rbXMtPnN0YXRlLT5od3BpcGU7Ci0JbmV3X3N0YXRlLT5o d21peGVyID0gbWRwNV9rbXMtPnN0YXRlLT5od21peGVyOwotCWlmIChtZHA1X2ttcy0+c21wKQot CQluZXdfc3RhdGUtPnNtcCA9IG1kcDVfa21zLT5zdGF0ZS0+c21wOworCWlmIChJU19FUlJfT1Jf TlVMTChrbXNfc3RhdGUpKQorCQlyZXR1cm4gKHN0cnVjdCBtZHA1X3N0YXRlICopa21zX3N0YXRl OyAvKiBjYXN0aW5nIEVSUl9QVFIgKi8KIAotCXN0YXRlLT5zdGF0ZSA9IG5ld19zdGF0ZTsKKwly ZXR1cm4ga21zX3N0YXRlLT5zdGF0ZTsKK30KKworc3RhdGljIHZvaWQgKm1kcDVfZHVwbGljYXRl X3N0YXRlKHZvaWQgKnN0YXRlKQoreworCWlmICghc3RhdGUpCisJCXJldHVybiBremFsbG9jKHNp emVvZihzdHJ1Y3QgbWRwNV9zdGF0ZSksIEdGUF9LRVJORUwpOwogCi0JcmV0dXJuIG5ld19zdGF0 ZTsKKwlyZXR1cm4ga21lbWR1cChzdGF0ZSwgc2l6ZW9mKHN0cnVjdCBtZHA1X3N0YXRlKSwgR0ZQ X0tFUk5FTCk7CiB9CiAKLXN0YXRpYyB2b2lkIG1kcDVfc3dhcF9zdGF0ZShzdHJ1Y3QgbXNtX2tt cyAqa21zLCBzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpCitzdGF0aWMgdm9pZCBtZHA1 X2Rlc3Ryb3lfc3RhdGUodm9pZCAqc3RhdGUpCiB7Ci0Jc3RydWN0IG1kcDVfa21zICptZHA1X2tt cyA9IHRvX21kcDVfa21zKHRvX21kcF9rbXMoa21zKSk7Ci0Jc3dhcCh0b19rbXNfc3RhdGUoc3Rh dGUpLT5zdGF0ZSwgbWRwNV9rbXMtPnN0YXRlKTsKKwlzdHJ1Y3QgbWRwNV9zdGF0ZSAqbWRwX3N0 YXRlID0gKHN0cnVjdCBtZHA1X3N0YXRlICopc3RhdGU7CisJa2ZyZWUobWRwX3N0YXRlKTsKIH0K IAotc3RhdGljIHZvaWQgbWRwNV9wcmVwYXJlX2NvbW1pdChzdHJ1Y3QgbXNtX2ttcyAqa21zLCBz dHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpCitzdGF0aWMgdm9pZCBtZHA1X3ByZXBhcmVf Y29tbWl0KHN0cnVjdCBtc21fa21zICprbXMsCisJCQkJc3RydWN0IGRybV9hdG9taWNfc3RhdGUg Km9sZF9zdGF0ZSkKIHsKIAlzdHJ1Y3QgbWRwNV9rbXMgKm1kcDVfa21zID0gdG9fbWRwNV9rbXMo dG9fbWRwX2ttcyhrbXMpKTsKKwlzdHJ1Y3QgbWRwNV9zdGF0ZSAqbWRwNV9zdGF0ZSA9IG1kcDVf c3RhdGVfZnJvbV9kZXYobWRwNV9rbXMtPmRldik7CiAJc3RydWN0IGRldmljZSAqZGV2ID0gJm1k cDVfa21zLT5wZGV2LT5kZXY7CiAKIAlwbV9ydW50aW1lX2dldF9zeW5jKGRldik7CiAKIAlpZiAo bWRwNV9rbXMtPnNtcCkKLQkJbWRwNV9zbXBfcHJlcGFyZV9jb21taXQobWRwNV9rbXMtPnNtcCwg Jm1kcDVfa21zLT5zdGF0ZS0+c21wKTsKKwkJbWRwNV9zbXBfcHJlcGFyZV9jb21taXQobWRwNV9r bXMtPnNtcCwgJm1kcDVfc3RhdGUtPnNtcCk7CiB9CiAKLXN0YXRpYyB2b2lkIG1kcDVfY29tcGxl dGVfY29tbWl0KHN0cnVjdCBtc21fa21zICprbXMsIHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpz dGF0ZSkKK3N0YXRpYyB2b2lkIG1kcDVfY29tcGxldGVfY29tbWl0KHN0cnVjdCBtc21fa21zICpr bXMsCisJCQkJIHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpvbGRfc3RhdGUpCiB7CiAJc3RydWN0 IG1kcDVfa21zICptZHA1X2ttcyA9IHRvX21kcDVfa21zKHRvX21kcF9rbXMoa21zKSk7CisJc3Ry dWN0IG1kcDVfc3RhdGUgKm1kcDVfc3RhdGUgPSBtZHA1X3N0YXRlX2Zyb21fZGV2KG1kcDVfa21z LT5kZXYpOwogCXN0cnVjdCBkZXZpY2UgKmRldiA9ICZtZHA1X2ttcy0+cGRldi0+ZGV2OwogCiAJ aWYgKG1kcDVfa21zLT5zbXApCi0JCW1kcDVfc21wX2NvbXBsZXRlX2NvbW1pdChtZHA1X2ttcy0+ c21wLCAmbWRwNV9rbXMtPnN0YXRlLT5zbXApOworCQltZHA1X3NtcF9jb21wbGV0ZV9jb21taXQo bWRwNV9rbXMtPnNtcCwgJm1kcDVfc3RhdGUtPnNtcCk7CiAKIAlwbV9ydW50aW1lX3B1dF9zeW5j KGRldik7CiB9CkBAIC0yMjksNyArMjMxLDggQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBtZHBfa21z X2Z1bmNzIGttc19mdW5jcyA9IHsKIAkJLmlycSAgICAgICAgICAgICA9IG1kcDVfaXJxLAogCQku ZW5hYmxlX3ZibGFuayAgID0gbWRwNV9lbmFibGVfdmJsYW5rLAogCQkuZGlzYWJsZV92Ymxhbmsg ID0gbWRwNV9kaXNhYmxlX3ZibGFuaywKLQkJLnN3YXBfc3RhdGUgICAgICA9IG1kcDVfc3dhcF9z dGF0ZSwKKwkJLmR1cGxpY2F0ZV9zdGF0ZSA9IG1kcDVfZHVwbGljYXRlX3N0YXRlLAorCQkuZGVz dHJveV9zdGF0ZQkgPSBtZHA1X2Rlc3Ryb3lfc3RhdGUsCiAJCS5wcmVwYXJlX2NvbW1pdCAgPSBt ZHA1X3ByZXBhcmVfY29tbWl0LAogCQkuY29tcGxldGVfY29tbWl0ID0gbWRwNV9jb21wbGV0ZV9j b21taXQsCiAJCS53YWl0X2Zvcl9jcnRjX2NvbW1pdF9kb25lID0gbWRwNV93YWl0X2Zvcl9jcnRj X2NvbW1pdF9kb25lLApAQCAtNzI2LDggKzcyOSw2IEBAIHN0YXRpYyB2b2lkIG1kcDVfZGVzdHJv eShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQogCiAJaWYgKG1kcDVfa21zLT5ycG1fZW5h YmxlZCkKIAkJcG1fcnVudGltZV9kaXNhYmxlKCZwZGV2LT5kZXYpOwotCi0Ja2ZyZWUobWRwNV9r bXMtPnN0YXRlKTsKIH0KIAogc3RhdGljIGludCBjb25zdHJ1Y3RfcGlwZXMoc3RydWN0IG1kcDVf a21zICptZHA1X2ttcywgaW50IGNudCwKQEAgLTg1OSw3ICs4NjAsOCBAQCBzdGF0aWMgaW50IGlu dGVyZmFjZV9pbml0KHN0cnVjdCBtZHA1X2ttcyAqbWRwNV9rbXMpCiAJcmV0dXJuIDA7CiB9CiAK LXN0YXRpYyBpbnQgbWRwNV9pbml0KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsIHN0cnVj dCBkcm1fZGV2aWNlICpkZXYpCitzdGF0aWMgaW50IG1kcDVfaW5pdChzdHJ1Y3QgcGxhdGZvcm1f ZGV2aWNlICpwZGV2LCBzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAorCQkgICAgIHN0cnVjdCBtc21f a21zX3N0YXRlICppbml0aWFsX3N0YXRlKQogewogCXN0cnVjdCBtc21fZHJtX3ByaXZhdGUgKnBy aXYgPSBkZXYtPmRldl9wcml2YXRlOwogCXN0cnVjdCBtZHA1X2ttcyAqbWRwNV9rbXM7CkBAIC04 ODAsOSArODgyLDggQEAgc3RhdGljIGludCBtZHA1X2luaXQoc3RydWN0IHBsYXRmb3JtX2Rldmlj ZSAqcGRldiwgc3RydWN0IGRybV9kZXZpY2UgKmRldikKIAltZHA1X2ttcy0+ZGV2ID0gZGV2Owog CW1kcDVfa21zLT5wZGV2ID0gcGRldjsKIAotCWRybV9tb2Rlc2V0X2xvY2tfaW5pdCgmbWRwNV9r bXMtPnN0YXRlX2xvY2spOwotCW1kcDVfa21zLT5zdGF0ZSA9IGt6YWxsb2Moc2l6ZW9mKCptZHA1 X2ttcy0+c3RhdGUpLCBHRlBfS0VSTkVMKTsKLQlpZiAoIW1kcDVfa21zLT5zdGF0ZSkgeworCWlu aXRpYWxfc3RhdGUtPnN0YXRlID0gbWRwNV9kdXBsaWNhdGVfc3RhdGUoTlVMTCk7CisJaWYgKCFp bml0aWFsX3N0YXRlLT5zdGF0ZSkgewogCQlyZXQgPSAtRU5PTUVNOwogCQlnb3RvIGZhaWw7CiAJ fQpAQCAtOTQwLDcgKzk0MSw4IEBAIHN0YXRpYyBpbnQgbWRwNV9pbml0KHN0cnVjdCBwbGF0Zm9y bV9kZXZpY2UgKnBkZXYsIHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiAJICogdGhpcyBzZWN0aW9u IGluaXRpYWxpemVzIHRoZSBTTVA6CiAJICovCiAJaWYgKG1kcDVfa21zLT5jYXBzICYgTURQX0NB UF9TTVApIHsKLQkJbWRwNV9rbXMtPnNtcCA9IG1kcDVfc21wX2luaXQobWRwNV9rbXMsICZjb25m aWctPmh3LT5zbXApOworCQltZHA1X2ttcy0+c21wID0gbWRwNV9zbXBfaW5pdChtZHA1X2ttcywg JmNvbmZpZy0+aHctPnNtcCwKKwkJCQkJICAgICAgaW5pdGlhbF9zdGF0ZS0+c3RhdGUpOwogCQlp ZiAoSVNfRVJSKG1kcDVfa21zLT5zbXApKSB7CiAJCQlyZXQgPSBQVFJfRVJSKG1kcDVfa21zLT5z bXApOwogCQkJbWRwNV9rbXMtPnNtcCA9IE5VTEw7CkBAIC05ODAsMTAgKzk4MiwxMSBAQCBzdGF0 aWMgaW50IG1kcDVfYmluZChzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2UgKm1hc3Rl ciwgdm9pZCAqZGF0YSkKIHsKIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGRldiA9IGRldl9nZXRfZHJ2 ZGF0YShtYXN0ZXIpOwogCXN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYgPSB0b19wbGF0Zm9y bV9kZXZpY2UoZGV2KTsKKwlzdHJ1Y3QgbXNtX2ttc19zdGF0ZSAqaW5pdGlhbF9zdGF0ZSA9IChz dHJ1Y3QgbXNtX2ttc19zdGF0ZSAqKWRhdGE7CiAKIAlEQkcoIiIpOwogCi0JcmV0dXJuIG1kcDVf aW5pdChwZGV2LCBkZGV2KTsKKwlyZXR1cm4gbWRwNV9pbml0KHBkZXYsIGRkZXYsIGluaXRpYWxf c3RhdGUpOwogfQogCiBzdGF0aWMgdm9pZCBtZHA1X3VuYmluZChzdHJ1Y3QgZGV2aWNlICpkZXYs IHN0cnVjdCBkZXZpY2UgKm1hc3RlciwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20v ZGlzcC9tZHA1L21kcDVfa21zLmggYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvbWRwNS9tZHA1 X2ttcy5oCmluZGV4IDQyNWEwM2QyMTNlNS4uZTIzMTE3YjgyYWFkIDEwMDY0NAotLS0gYS9kcml2 ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvbWRwNS9tZHA1X2ttcy5oCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9tc20vZGlzcC9tZHA1L21kcDVfa21zLmgKQEAgLTI4LDggKzI4LDYgQEAKICNpbmNsdWRlICJt ZHA1X2N0bC5oIgogI2luY2x1ZGUgIm1kcDVfc21wLmgiCiAKLXN0cnVjdCBtZHA1X3N0YXRlOwot CiBzdHJ1Y3QgbWRwNV9rbXMgewogCXN0cnVjdCBtZHBfa21zIGJhc2U7CiAKQEAgLTQ5LDEyICs0 Nyw2IEBAIHN0cnVjdCBtZHA1X2ttcyB7CiAJc3RydWN0IG1kcDVfY2ZnX2hhbmRsZXIgKmNmZzsK IAl1aW50MzJfdCBjYXBzOwkvKiBNRFAgY2FwYWJpbGl0aWVzIChNRFBfQ0FQX1hYWCBiaXRzKSAq LwogCi0JLyoqCi0JICogR2xvYmFsIGF0b21pYyBzdGF0ZS4gIERvIG5vdCBhY2Nlc3MgZGlyZWN0 bHksIHVzZSBtZHA1X2dldF9zdGF0ZSgpCi0JICovCi0Jc3RydWN0IG1kcDVfc3RhdGUgKnN0YXRl OwotCXN0cnVjdCBkcm1fbW9kZXNldF9sb2NrIHN0YXRlX2xvY2s7Ci0KIAlzdHJ1Y3QgbWRwNV9z bXAgKnNtcDsKIAlzdHJ1Y3QgbWRwNV9jdGxfbWFuYWdlciAqY3RsbTsKIApAQCAtOTMsNyArODUs OCBAQCBzdHJ1Y3QgbWRwNV9zdGF0ZSB7CiB9OwogCiBzdHJ1Y3QgbWRwNV9zdGF0ZSAqX19tdXN0 X2NoZWNrCi1tZHA1X2dldF9zdGF0ZShzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqcyk7CittZHA1 X3N0YXRlX2Zyb21fYXRvbWljKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzKTsKK3N0cnVjdCBt ZHA1X3N0YXRlICpfX211c3RfY2hlY2sgbWRwNV9zdGF0ZV9mcm9tX2RldihzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2KTsKIAogLyogQXRvbWljIHBsYW5lIHN0YXRlLiAgU3ViY2xhc3NlcyB0aGUgYmFz ZSBkcm1fcGxhbmVfc3RhdGUgaW4gb3JkZXIgdG8KICAqIHRyYWNrIGFzc2lnbmVkIGh3cGlwZSBh bmQgaHcgc3BlY2lmaWMgc3RhdGUuCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rp c3AvbWRwNS9tZHA1X21peGVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvbWRwNS9tZHA1 X21peGVyLmMKaW5kZXggOGEwMDk5MWYwM2M3Li5mZGQ1ZTEyYTlkNTYgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9tc20vZGlzcC9tZHA1L21kcDVfbWl4ZXIuYworKysgYi9kcml2ZXJzL2dw dS9kcm0vbXNtL2Rpc3AvbWRwNS9tZHA1X21peGVyLmMKQEAgLTUyLDEwICs1MiwxMSBAQCBpbnQg bWRwNV9taXhlcl9hc3NpZ24oc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnMsIHN0cnVjdCBkcm1f Y3J0YyAqY3J0YywKIHsKIAlzdHJ1Y3QgbXNtX2RybV9wcml2YXRlICpwcml2ID0gcy0+ZGV2LT5k ZXZfcHJpdmF0ZTsKIAlzdHJ1Y3QgbWRwNV9rbXMgKm1kcDVfa21zID0gdG9fbWRwNV9rbXModG9f bWRwX2ttcyhwcml2LT5rbXMpKTsKLQlzdHJ1Y3QgbWRwNV9zdGF0ZSAqc3RhdGUgPSBtZHA1X2dl dF9zdGF0ZShzKTsKKwlzdHJ1Y3QgbWRwNV9zdGF0ZSAqc3RhdGU7CiAJc3RydWN0IG1kcDVfaHdf bWl4ZXJfc3RhdGUgKm5ld19zdGF0ZTsKIAlpbnQgaTsKIAorCXN0YXRlID0gbWRwNV9zdGF0ZV9m cm9tX2F0b21pYyhzKTsKIAlpZiAoSVNfRVJSKHN0YXRlKSkKIAkJcmV0dXJuIFBUUl9FUlIoc3Rh dGUpOwogCkBAIC0xMjksMTIgKzEzMCwxNyBAQCBpbnQgbWRwNV9taXhlcl9hc3NpZ24oc3RydWN0 IGRybV9hdG9taWNfc3RhdGUgKnMsIHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKIAogdm9pZCBtZHA1 X21peGVyX3JlbGVhc2Uoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnMsIHN0cnVjdCBtZHA1X2h3 X21peGVyICptaXhlcikKIHsKLQlzdHJ1Y3QgbWRwNV9zdGF0ZSAqc3RhdGUgPSBtZHA1X2dldF9z dGF0ZShzKTsKLQlzdHJ1Y3QgbWRwNV9od19taXhlcl9zdGF0ZSAqbmV3X3N0YXRlID0gJnN0YXRl LT5od21peGVyOworCXN0cnVjdCBtZHA1X3N0YXRlICpzdGF0ZTsKKwlzdHJ1Y3QgbWRwNV9od19t aXhlcl9zdGF0ZSAqbmV3X3N0YXRlOwogCiAJaWYgKCFtaXhlcikKIAkJcmV0dXJuOwogCisJc3Rh dGUgPSBtZHA1X3N0YXRlX2Zyb21fYXRvbWljKHMpOworCWlmIChJU19FUlIoc3RhdGUpKQorCQly ZXR1cm47CisKKwluZXdfc3RhdGUgPSAmc3RhdGUtPmh3bWl4ZXI7CiAJaWYgKFdBUk5fT04oIW5l d19zdGF0ZS0+aHdtaXhlcl90b19jcnRjW21peGVyLT5pZHhdKSkKIAkJcmV0dXJuOwogCmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvbWRwNS9tZHA1X3BpcGUuYyBiL2RyaXZl cnMvZ3B1L2RybS9tc20vZGlzcC9tZHA1L21kcDVfcGlwZS5jCmluZGV4IGZmNTJjNDkwOTVmOS4u ZGM2NmFiOWZkZDUwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvbWRwNS9t ZHA1X3BpcGUuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvbWRwNS9tZHA1X3BpcGUu YwpAQCAtMjQsMTcgKzI0LDIwIEBAIGludCBtZHA1X3BpcGVfYXNzaWduKHN0cnVjdCBkcm1fYXRv bWljX3N0YXRlICpzLCBzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKIHsKIAlzdHJ1Y3QgbXNtX2Ry bV9wcml2YXRlICpwcml2ID0gcy0+ZGV2LT5kZXZfcHJpdmF0ZTsKIAlzdHJ1Y3QgbWRwNV9rbXMg Km1kcDVfa21zID0gdG9fbWRwNV9rbXModG9fbWRwX2ttcyhwcml2LT5rbXMpKTsKLQlzdHJ1Y3Qg bWRwNV9zdGF0ZSAqc3RhdGU7CisJc3RydWN0IG1kcDVfc3RhdGUgKm9sZF9tZHA1X3N0YXRlLCAq bmV3X21kcDVfc3RhdGU7CiAJc3RydWN0IG1kcDVfaHdfcGlwZV9zdGF0ZSAqb2xkX3N0YXRlLCAq bmV3X3N0YXRlOwogCWludCBpLCBqOwogCi0Jc3RhdGUgPSBtZHA1X2dldF9zdGF0ZShzKTsKLQlp ZiAoSVNfRVJSKHN0YXRlKSkKLQkJcmV0dXJuIFBUUl9FUlIoc3RhdGUpOworCW5ld19tZHA1X3N0 YXRlID0gbWRwNV9zdGF0ZV9mcm9tX2F0b21pYyhzKTsKKwlpZiAoSVNfRVJSKG5ld19tZHA1X3N0 YXRlKSkKKwkJcmV0dXJuIFBUUl9FUlIobmV3X21kcDVfc3RhdGUpOwogCi0JLyogZ3JhYiBvbGRf c3RhdGUgYWZ0ZXIgbWRwNV9nZXRfc3RhdGUoKSwgc2luY2Ugbm93IHdlIGhvbGQgbG9jazogKi8K LQlvbGRfc3RhdGUgPSAmbWRwNV9rbXMtPnN0YXRlLT5od3BpcGU7Ci0JbmV3X3N0YXRlID0gJnN0 YXRlLT5od3BpcGU7CisJb2xkX21kcDVfc3RhdGUgPSBtZHA1X3N0YXRlX2Zyb21fZGV2KHMtPmRl dik7CisJaWYgKElTX0VSUihvbGRfbWRwNV9zdGF0ZSkpCisJCXJldHVybiBQVFJfRVJSKG9sZF9t ZHA1X3N0YXRlKTsKKworCW9sZF9zdGF0ZSA9ICZvbGRfbWRwNV9zdGF0ZS0+aHdwaXBlOworCW5l d19zdGF0ZSA9ICZuZXdfbWRwNV9zdGF0ZS0+aHdwaXBlOwogCiAJZm9yIChpID0gMDsgaSA8IG1k cDVfa21zLT5udW1faHdwaXBlczsgaSsrKSB7CiAJCXN0cnVjdCBtZHA1X2h3X3BpcGUgKmN1ciA9 IG1kcDVfa21zLT5od3BpcGVzW2ldOwpAQCAtMTA3LDcgKzExMCw3IEBAIGludCBtZHA1X3BpcGVf YXNzaWduKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzLCBzdHJ1Y3QgZHJtX3BsYW5lICpwbGFu ZSwKIAkJV0FSTl9PTihyX2h3cGlwZSk7CiAKIAkJREJHKCIlczogYWxsb2MgU01QIGJsb2NrcyIs ICgqaHdwaXBlKS0+bmFtZSk7Ci0JCXJldCA9IG1kcDVfc21wX2Fzc2lnbihtZHA1X2ttcy0+c21w LCAmc3RhdGUtPnNtcCwKKwkJcmV0ID0gbWRwNV9zbXBfYXNzaWduKG1kcDVfa21zLT5zbXAsICZu ZXdfbWRwNV9zdGF0ZS0+c21wLAogCQkJCSgqaHdwaXBlKS0+cGlwZSwgYmxrY2ZnKTsKIAkJaWYg KHJldCkKIAkJCXJldHVybiAtRU5PTUVNOwpAQCAtMTMyLDEyICsxMzUsMTcgQEAgdm9pZCBtZHA1 X3BpcGVfcmVsZWFzZShzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqcywgc3RydWN0IG1kcDVfaHdf cGlwZSAqaHdwaXBlKQogewogCXN0cnVjdCBtc21fZHJtX3ByaXZhdGUgKnByaXYgPSBzLT5kZXYt PmRldl9wcml2YXRlOwogCXN0cnVjdCBtZHA1X2ttcyAqbWRwNV9rbXMgPSB0b19tZHA1X2ttcyh0 b19tZHBfa21zKHByaXYtPmttcykpOwotCXN0cnVjdCBtZHA1X3N0YXRlICpzdGF0ZSA9IG1kcDVf Z2V0X3N0YXRlKHMpOwotCXN0cnVjdCBtZHA1X2h3X3BpcGVfc3RhdGUgKm5ld19zdGF0ZSA9ICZz dGF0ZS0+aHdwaXBlOworCXN0cnVjdCBtZHA1X3N0YXRlICpzdGF0ZTsKKwlzdHJ1Y3QgbWRwNV9o d19waXBlX3N0YXRlICpuZXdfc3RhdGU7CiAKIAlpZiAoIWh3cGlwZSkKIAkJcmV0dXJuOwogCisJ c3RhdGUgPSBtZHA1X3N0YXRlX2Zyb21fYXRvbWljKHMpOworCWlmIChJU19FUlIoc3RhdGUpKQor CQlyZXR1cm47CisKKwluZXdfc3RhdGUgPSAmc3RhdGUtPmh3cGlwZTsKIAlpZiAoV0FSTl9PTigh bmV3X3N0YXRlLT5od3BpcGVfdG9fcGxhbmVbaHdwaXBlLT5pZHhdKSkKIAkJcmV0dXJuOwogCmRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvbWRwNS9tZHA1X3NtcC5jIGIvZHJp dmVycy9ncHUvZHJtL21zbS9kaXNwL21kcDUvbWRwNV9zbXAuYwppbmRleCBhZTQ5ODNkOWQwYTUu LjkxOGU0MTIzZTc4MSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL21kcDUv bWRwNV9zbXAuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvbWRwNS9tZHA1X3NtcC5j CkBAIC0zMzgsNiArMzM4LDcgQEAgdm9pZCBtZHA1X3NtcF9jb21wbGV0ZV9jb21taXQoc3RydWN0 IG1kcDVfc21wICpzbXAsIHN0cnVjdCBtZHA1X3NtcF9zdGF0ZSAqc3RhdGUKIHZvaWQgbWRwNV9z bXBfZHVtcChzdHJ1Y3QgbWRwNV9zbXAgKnNtcCwgc3RydWN0IGRybV9wcmludGVyICpwKQogewog CXN0cnVjdCBtZHA1X2ttcyAqbWRwNV9rbXMgPSBnZXRfa21zKHNtcCk7CisJc3RydWN0IG1kcDVf c3RhdGUgKm1kcDVfc3RhdGU7CiAJc3RydWN0IG1kcDVfaHdfcGlwZV9zdGF0ZSAqaHdwc3RhdGU7 CiAJc3RydWN0IG1kcDVfc21wX3N0YXRlICpzdGF0ZTsKIAlpbnQgdG90YWwgPSAwLCBpLCBqOwpA QCAtMzQ2LDExICszNDcsMTIgQEAgdm9pZCBtZHA1X3NtcF9kdW1wKHN0cnVjdCBtZHA1X3NtcCAq c21wLCBzdHJ1Y3QgZHJtX3ByaW50ZXIgKnApCiAJZHJtX3ByaW50ZihwLCAiLS0tLVx0LS0tLS1c dC0tLS0tXG4iKTsKIAogCWlmIChkcm1fY2FuX3NsZWVwKCkpCi0JCWRybV9tb2Rlc2V0X2xvY2so Jm1kcDVfa21zLT5zdGF0ZV9sb2NrLCBOVUxMKTsKKwkJZHJtX21vZGVzZXRfbG9ja19hbGwobWRw NV9rbXMtPmRldik7CiAKLQkvKiBncmFiIHRoZXNlICphZnRlciogd2UgaG9sZCB0aGUgc3RhdGVf bG9jayAqLwotCWh3cHN0YXRlID0gJm1kcDVfa21zLT5zdGF0ZS0+aHdwaXBlOwotCXN0YXRlID0g Jm1kcDVfa21zLT5zdGF0ZS0+c21wOworCS8qIGdyYWIgdGhlc2UgKmFmdGVyKiB3ZSBob2xkIHRo ZSBtb2Rlc2V0X2xvY2sgKi8KKwltZHA1X3N0YXRlID0gbWRwNV9zdGF0ZV9mcm9tX2RldihtZHA1 X2ttcy0+ZGV2KTsKKwlod3BzdGF0ZSA9ICZtZHA1X3N0YXRlLT5od3BpcGU7CisJc3RhdGUgPSAm bWRwNV9zdGF0ZS0+c21wOwogCiAJZm9yIChpID0gMDsgaSA8IG1kcDVfa21zLT5udW1faHdwaXBl czsgaSsrKSB7CiAJCXN0cnVjdCBtZHA1X2h3X3BpcGUgKmh3cGlwZSA9IG1kcDVfa21zLT5od3Bp cGVzW2ldOwpAQCAtMzc0LDcgKzM3Niw3IEBAIHZvaWQgbWRwNV9zbXBfZHVtcChzdHJ1Y3QgbWRw NV9zbXAgKnNtcCwgc3RydWN0IGRybV9wcmludGVyICpwKQogCQkJYml0bWFwX3dlaWdodChzdGF0 ZS0+c3RhdGUsIHNtcC0+YmxrX2NudCkpOwogCiAJaWYgKGRybV9jYW5fc2xlZXAoKSkKLQkJZHJt X21vZGVzZXRfdW5sb2NrKCZtZHA1X2ttcy0+c3RhdGVfbG9jayk7CisJCWRybV9tb2Rlc2V0X3Vu bG9ja19hbGwobWRwNV9rbXMtPmRldik7CiB9CiAKIHZvaWQgbWRwNV9zbXBfZGVzdHJveShzdHJ1 Y3QgbWRwNV9zbXAgKnNtcCkKQEAgLTM4MiwxMiArMzg0LDE1IEBAIHZvaWQgbWRwNV9zbXBfZGVz dHJveShzdHJ1Y3QgbWRwNV9zbXAgKnNtcCkKIAlrZnJlZShzbXApOwogfQogCi1zdHJ1Y3QgbWRw NV9zbXAgKm1kcDVfc21wX2luaXQoc3RydWN0IG1kcDVfa21zICptZHA1X2ttcywgY29uc3Qgc3Ry dWN0IG1kcDVfc21wX2Jsb2NrICpjZmcpCitzdHJ1Y3QgbWRwNV9zbXAgKm1kcDVfc21wX2luaXQo c3RydWN0IG1kcDVfa21zICptZHA1X2ttcywKKwkJCSAgICAgICBjb25zdCBzdHJ1Y3QgbWRwNV9z bXBfYmxvY2sgKmNmZywKKwkJCSAgICAgICBzdHJ1Y3QgbWRwNV9zdGF0ZSAqbWRwNV9zdGF0ZSkK IHsKLQlzdHJ1Y3QgbWRwNV9zbXBfc3RhdGUgKnN0YXRlID0gJm1kcDVfa21zLT5zdGF0ZS0+c21w OworCXN0cnVjdCBtZHA1X3NtcF9zdGF0ZSAqc3RhdGU7CiAJc3RydWN0IG1kcDVfc21wICpzbXAg PSBOVUxMOwogCWludCByZXQ7CiAKKwlzdGF0ZSA9ICZtZHA1X3N0YXRlLT5zbXA7CiAJc21wID0g a3phbGxvYyhzaXplb2YoKnNtcCksIEdGUF9LRVJORUwpOwogCWlmICh1bmxpa2VseSghc21wKSkg ewogCQlyZXQgPSAtRU5PTUVNOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNw L21kcDUvbWRwNV9zbXAuaCBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9tZHA1L21kcDVfc21w LmgKaW5kZXggYjQxZDA0NDhmYmU4Li4xYmZhMjJiNjNhMmQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv Z3B1L2RybS9tc20vZGlzcC9tZHA1L21kcDVfc21wLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL21z bS9kaXNwL21kcDUvbWRwNV9zbXAuaApAQCAtNjksNiArNjksNyBAQCBzdHJ1Y3QgbWRwNV9zbXBf c3RhdGUgewogfTsKIAogc3RydWN0IG1kcDVfa21zOworc3RydWN0IG1kcDVfc3RhdGU7CiBzdHJ1 Y3QgbWRwNV9zbXA7CiAKIC8qCkBAIC03OCw3ICs3OSw4IEBAIHN0cnVjdCBtZHA1X3NtcDsKICAq LwogCiBzdHJ1Y3QgbWRwNV9zbXAgKm1kcDVfc21wX2luaXQoc3RydWN0IG1kcDVfa21zICptZHA1 X2ttcywKLQkJY29uc3Qgc3RydWN0IG1kcDVfc21wX2Jsb2NrICpjZmcpOworCQljb25zdCBzdHJ1 Y3QgbWRwNV9zbXBfYmxvY2sgKmNmZywKKwkJc3RydWN0IG1kcDVfc3RhdGUgKm1kcDVfc3RhdGUp Owogdm9pZCAgbWRwNV9zbXBfZGVzdHJveShzdHJ1Y3QgbWRwNV9zbXAgKnNtcCk7CiAKIHZvaWQg bWRwNV9zbXBfZHVtcChzdHJ1Y3QgbWRwNV9zbXAgKnNtcCwgc3RydWN0IGRybV9wcmludGVyICpw KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2F0b21pYy5jIGIvZHJpdmVy cy9ncHUvZHJtL21zbS9tc21fYXRvbWljLmMKaW5kZXggYmY1ZjhjMzlmMzRkLi5lNzkyMTU4Njc2 YWEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2F0b21pYy5jCisrKyBiL2Ry aXZlcnMvZ3B1L2RybS9tc20vbXNtX2F0b21pYy5jCkBAIC0yMjAsMTYgKzIyMCw2IEBAIGludCBt c21fYXRvbWljX2NvbW1pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCiAJQlVHX09OKGRybV9h dG9taWNfaGVscGVyX3N3YXBfc3RhdGUoc3RhdGUsIGZhbHNlKSA8IDApOwogCi0JLyoKLQkgKiBU aGlzIGlzIHRoZSBwb2ludCBvZiBubyByZXR1cm4gLSBldmVyeXRoaW5nIGJlbG93IG5ldmVyIGZh aWxzIGV4Y2VwdAotCSAqIHdoZW4gdGhlIGh3IGdvZXMgYm9uZ2hpdHMuIFdoaWNoIG1lYW5zIHdl IGNhbiBjb21taXQgdGhlIG5ldyBzdGF0ZSBvbgotCSAqIHRoZSBzb2Z0d2FyZSBzaWRlIG5vdy4K LQkgKgotCSAqIHN3YXAgZHJpdmVyIHByaXZhdGUgc3RhdGUgd2hpbGUgc3RpbGwgaG9sZGluZyBz dGF0ZV9sb2NrCi0JICovCi0JaWYgKHRvX2ttc19zdGF0ZShzdGF0ZSktPnN0YXRlKQotCQlwcml2 LT5rbXMtPmZ1bmNzLT5zd2FwX3N0YXRlKHByaXYtPmttcywgc3RhdGUpOwotCiAJLyoKIAkgKiBF dmVyeXRoaW5nIGJlbG93IGNhbiBiZSBydW4gYXN5bmNocm9ub3VzbHkgd2l0aG91dCB0aGUgbmVl ZCB0byBncmFiCiAJICogYW55IG1vZGVzZXQgbG9ja3MgYXQgYWxsIHVuZGVyIG9uZSBjb25kaXRp b25zOiBJdCBtdXN0IGJlIGd1YXJhbnRlZWQKQEAgLTI2MiwzMCArMjUyLDMgQEAgaW50IG1zbV9h dG9taWNfY29tbWl0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJZHJtX2F0b21pY19oZWxwZXJf Y2xlYW51cF9wbGFuZXMoZGV2LCBzdGF0ZSk7CiAJcmV0dXJuIHJldDsKIH0KLQotc3RydWN0IGRy bV9hdG9taWNfc3RhdGUgKm1zbV9hdG9taWNfc3RhdGVfYWxsb2Moc3RydWN0IGRybV9kZXZpY2Ug KmRldikKLXsKLQlzdHJ1Y3QgbXNtX2ttc19zdGF0ZSAqc3RhdGUgPSBremFsbG9jKHNpemVvZigq c3RhdGUpLCBHRlBfS0VSTkVMKTsKLQotCWlmICghc3RhdGUgfHwgZHJtX2F0b21pY19zdGF0ZV9p bml0KGRldiwgJnN0YXRlLT5iYXNlKSA8IDApIHsKLQkJa2ZyZWUoc3RhdGUpOwotCQlyZXR1cm4g TlVMTDsKLQl9Ci0KLQlyZXR1cm4gJnN0YXRlLT5iYXNlOwotfQotCi12b2lkIG1zbV9hdG9taWNf c3RhdGVfY2xlYXIoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnMpCi17Ci0Jc3RydWN0IG1zbV9r bXNfc3RhdGUgKnN0YXRlID0gdG9fa21zX3N0YXRlKHMpOwotCWRybV9hdG9taWNfc3RhdGVfZGVm YXVsdF9jbGVhcigmc3RhdGUtPmJhc2UpOwotCWtmcmVlKHN0YXRlLT5zdGF0ZSk7Ci0Jc3RhdGUt PnN0YXRlID0gTlVMTDsKLX0KLQotdm9pZCBtc21fYXRvbWljX3N0YXRlX2ZyZWUoc3RydWN0IGRy bV9hdG9taWNfc3RhdGUgKnN0YXRlKQotewotCWtmcmVlKHRvX2ttc19zdGF0ZShzdGF0ZSktPnN0 YXRlKTsKLQlkcm1fYXRvbWljX3N0YXRlX2RlZmF1bHRfcmVsZWFzZShzdGF0ZSk7Ci0Ja2ZyZWUo c3RhdGUpOwotfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9tc21fZHJ2LmMgYi9k cml2ZXJzL2dwdS9kcm0vbXNtL21zbV9kcnYuYwppbmRleCAzMGNkNTE0ZDhmN2MuLjdlOGY2NDAw NjJlZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9tc21fZHJ2LmMKKysrIGIvZHJp dmVycy9ncHUvZHJtL21zbS9tc21fZHJ2LmMKQEAgLTQyLDExICs0Miw3OSBAQCBzdGF0aWMgY29u c3Qgc3RydWN0IGRybV9tb2RlX2NvbmZpZ19mdW5jcyBtb2RlX2NvbmZpZ19mdW5jcyA9IHsKIAku b3V0cHV0X3BvbGxfY2hhbmdlZCA9IGRybV9mYl9oZWxwZXJfb3V0cHV0X3BvbGxfY2hhbmdlZCwK IAkuYXRvbWljX2NoZWNrID0gZHJtX2F0b21pY19oZWxwZXJfY2hlY2ssCiAJLmF0b21pY19jb21t aXQgPSBtc21fYXRvbWljX2NvbW1pdCwKLQkuYXRvbWljX3N0YXRlX2FsbG9jID0gbXNtX2F0b21p Y19zdGF0ZV9hbGxvYywKLQkuYXRvbWljX3N0YXRlX2NsZWFyID0gbXNtX2F0b21pY19zdGF0ZV9j bGVhciwKLQkuYXRvbWljX3N0YXRlX2ZyZWUgPSBtc21fYXRvbWljX3N0YXRlX2ZyZWUsCiB9Owog CitzdGF0aWMgaW5saW5lCitzdHJ1Y3QgbXNtX2ttcyAqbXNtX2ttc19mcm9tX29iaihzdHJ1Y3Qg ZHJtX3ByaXZhdGVfb2JqICpvYmopCit7CisJcmV0dXJuIGNvbnRhaW5lcl9vZihvYmosIHN0cnVj dCBtc21fa21zLCBiYXNlKTsKK30KKworc3RhdGljIGlubGluZQorc3RydWN0IG1zbV9rbXNfc3Rh dGUgKm1zbV9rbXNfc3RhdGVfZnJvbV9wcml2KHN0cnVjdCBkcm1fcHJpdmF0ZV9zdGF0ZSAqcHJp dikKK3sKKwlyZXR1cm4gY29udGFpbmVyX29mKHByaXYsIHN0cnVjdCBtc21fa21zX3N0YXRlLCBi YXNlKTsKK30KKworCitzdHJ1Y3QgbXNtX2ttc19zdGF0ZSAqbXNtX2ttc19zdGF0ZV9mcm9tX2F0 b21pYyhzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpCit7CisJc3RydWN0IG1zbV9kcm1f cHJpdmF0ZSAqcHJpdiA9IHN0YXRlLT5kZXYtPmRldl9wcml2YXRlOworCXN0cnVjdCBkcm1fcHJp dmF0ZV9vYmogKm9iaiA9ICZwcml2LT5rbXMtPmJhc2U7CisJc3RydWN0IGRybV9wcml2YXRlX3N0 YXRlICpwcml2X3N0YXRlOworCisJcHJpdl9zdGF0ZSA9IGRybV9hdG9taWNfZ2V0X3ByaXZhdGVf b2JqX3N0YXRlKHN0YXRlLCBvYmopOworCWlmIChJU19FUlJfT1JfTlVMTChwcml2X3N0YXRlKSkK KwkJcmV0dXJuIChzdHJ1Y3QgbXNtX2ttc19zdGF0ZSAqKXN0YXRlOyAvKiBjYXN0aW5nIEVSUl9Q VFIgKi8KKworCXJldHVybiBtc21fa21zX3N0YXRlX2Zyb21fcHJpdihwcml2X3N0YXRlKTsKK30K Kworc3RydWN0IG1zbV9rbXNfc3RhdGUgKm1zbV9rbXNfc3RhdGVfZnJvbV9kZXYoc3RydWN0IGRy bV9kZXZpY2UgKmRldikKK3sKKwlzdHJ1Y3QgbXNtX2RybV9wcml2YXRlICpwcml2ID0gZGV2LT5k ZXZfcHJpdmF0ZTsKKwlzdHJ1Y3QgZHJtX3ByaXZhdGVfb2JqICpvYmogPSAmcHJpdi0+a21zLT5i YXNlOworCXN0cnVjdCBkcm1fcHJpdmF0ZV9zdGF0ZSAqcHJpdl9zdGF0ZSA9IG9iai0+c3RhdGU7 CisKKwlyZXR1cm4gbXNtX2ttc19zdGF0ZV9mcm9tX3ByaXYocHJpdl9zdGF0ZSk7Cit9CisKK3N0 YXRpYyBzdHJ1Y3QgZHJtX3ByaXZhdGVfc3RhdGUgKgorbXNtX2ttc19kdXBsaWNhdGVfc3RhdGUo c3RydWN0IGRybV9wcml2YXRlX29iaiAqb2JqKQoreworCXN0cnVjdCBtc21fa21zICprbXMgPSBt c21fa21zX2Zyb21fb2JqKG9iaik7CisJc3RydWN0IG1zbV9rbXNfc3RhdGUgKnN0YXRlID0gbXNt X2ttc19zdGF0ZV9mcm9tX3ByaXYob2JqLT5zdGF0ZSk7CisJc3RydWN0IG1zbV9rbXNfc3RhdGUg Km5ld19zdGF0ZTsKKworCW5ld19zdGF0ZSA9IGt6YWxsb2Moc2l6ZW9mKCpuZXdfc3RhdGUpLCBH RlBfS0VSTkVMKTsKKwlpZiAoIW5ld19zdGF0ZSkKKwkJcmV0dXJuIE5VTEw7CisKKwlpZiAoa21z LT5mdW5jcy0+ZHVwbGljYXRlX3N0YXRlKQorCQluZXdfc3RhdGUtPnN0YXRlID0ga21zLT5mdW5j cy0+ZHVwbGljYXRlX3N0YXRlKHN0YXRlLT5zdGF0ZSk7CisKKwlfX2RybV9hdG9taWNfaGVscGVy X3ByaXZhdGVfb2JqX2R1cGxpY2F0ZV9zdGF0ZShvYmosICZuZXdfc3RhdGUtPmJhc2UpOworCisJ cmV0dXJuICZuZXdfc3RhdGUtPmJhc2U7Cit9CisKK3N0YXRpYyB2b2lkIG1zbV9rbXNfZGVzdHJv eV9zdGF0ZShzdHJ1Y3QgZHJtX3ByaXZhdGVfb2JqICpvYmosCisJCQkJICBzdHJ1Y3QgZHJtX3By aXZhdGVfc3RhdGUgKnByaXZfc3RhdGUpCit7CisJc3RydWN0IG1zbV9rbXMgKmttcyA9IG1zbV9r bXNfZnJvbV9vYmoob2JqKTsKKwlzdHJ1Y3QgbXNtX2ttc19zdGF0ZSAqc3RhdGUgPSBtc21fa21z X3N0YXRlX2Zyb21fcHJpdihwcml2X3N0YXRlKTsKKworCWlmIChrbXMtPmZ1bmNzLT5kZXN0cm95 X3N0YXRlKQorCQlrbXMtPmZ1bmNzLT5kZXN0cm95X3N0YXRlKHN0YXRlLT5zdGF0ZSk7CisJa2Zy ZWUoc3RhdGUpOworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9wcml2YXRlX3N0YXRlX2Z1 bmNzIGttc19zdGF0ZV9mdW5jcyA9IHsKKwkuYXRvbWljX2R1cGxpY2F0ZV9zdGF0ZSA9IG1zbV9r bXNfZHVwbGljYXRlX3N0YXRlLAorCS5hdG9taWNfZGVzdHJveV9zdGF0ZSA9IG1zbV9rbXNfZGVz dHJveV9zdGF0ZSwKK307CisKKwogI2lmZGVmIENPTkZJR19EUk1fTVNNX1JFR0lTVEVSX0xPR0dJ TkcKIHN0YXRpYyBib29sIHJlZ2xvZyA9IGZhbHNlOwogTU9EVUxFX1BBUk1fREVTQyhyZWdsb2cs ICJFbmFibGUgcmVnaXN0ZXIgcmVhZC93cml0ZSBsb2dnaW5nIik7CkBAIC0yNDUsNiArMzEzLDgg QEAgc3RhdGljIGludCBtc21fZHJtX3VuaW5pdChzdHJ1Y3QgZGV2aWNlICpkZXYpCiAJZmx1c2hf d29ya3F1ZXVlKHByaXYtPmF0b21pY193cSk7CiAJZGVzdHJveV93b3JrcXVldWUocHJpdi0+YXRv bWljX3dxKTsKIAorCWRybV9hdG9taWNfcHJpdmF0ZV9vYmpfZmluaSgma21zLT5iYXNlKTsKKwog CWlmIChrbXMgJiYga21zLT5mdW5jcykKIAkJa21zLT5mdW5jcy0+ZGVzdHJveShrbXMpOwogCkBA IC0zNTYsNiArNDI2LDcgQEAgc3RhdGljIGludCBtc21fZHJtX2luaXQoc3RydWN0IGRldmljZSAq ZGV2LCBzdHJ1Y3QgZHJtX2RyaXZlciAqZHJ2KQogCXN0cnVjdCBkcm1fZGV2aWNlICpkZGV2Owog CXN0cnVjdCBtc21fZHJtX3ByaXZhdGUgKnByaXY7CiAJc3RydWN0IG1zbV9rbXMgKmttczsKKwlz dHJ1Y3QgbXNtX2ttc19zdGF0ZSAqaW5pdGlhbF9zdGF0ZTsKIAlpbnQgcmV0OwogCiAJZGRldiA9 IGRybV9kZXZfYWxsb2MoZHJ2LCBkZXYpOwpAQCAtMzY0LDYgKzQzNSwxMCBAQCBzdGF0aWMgaW50 IG1zbV9kcm1faW5pdChzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkcm1fZHJpdmVyICpkcnYp CiAJCXJldHVybiBQVFJfRVJSKGRkZXYpOwogCX0KIAorCWluaXRpYWxfc3RhdGUgPSBremFsbG9j KHNpemVvZigqaW5pdGlhbF9zdGF0ZSksIEdGUF9LRVJORUwpOworCWlmICghaW5pdGlhbF9zdGF0 ZSkKKwkJcmV0dXJuIC1FTk9NRU07CisKIAlwbGF0Zm9ybV9zZXRfZHJ2ZGF0YShwZGV2LCBkZGV2 KTsKIAogCXByaXYgPSBremFsbG9jKHNpemVvZigqcHJpdiksIEdGUF9LRVJORUwpOwpAQCAtMzk0 LDcgKzQ2OSw3IEBAIHN0YXRpYyBpbnQgbXNtX2RybV9pbml0KHN0cnVjdCBkZXZpY2UgKmRldiwg c3RydWN0IGRybV9kcml2ZXIgKmRydikKIAlkcm1fbW9kZV9jb25maWdfaW5pdChkZGV2KTsKIAog CS8qIEJpbmQgYWxsIG91ciBzdWItY29tcG9uZW50czogKi8KLQlyZXQgPSBjb21wb25lbnRfYmlu ZF9hbGwoZGV2LCBkZGV2KTsKKwlyZXQgPSBjb21wb25lbnRfYmluZF9hbGwoZGV2LCBpbml0aWFs X3N0YXRlKTsKIAlpZiAocmV0KSB7CiAJCW1zbV9tZHNzX2Rlc3Ryb3koZGRldik7CiAJCWtmcmVl KHByaXYpOwpAQCAtNDMzLDYgKzUwOCwxMCBAQCBzdGF0aWMgaW50IG1zbV9kcm1faW5pdChzdHJ1 Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkcm1fZHJpdmVyICpkcnYpCiAJCWdvdG8gZmFpbDsKIAl9 CiAKKwlkcm1fYXRvbWljX3ByaXZhdGVfb2JqX2luaXQoJmttcy0+YmFzZSwKKwkJCQkgICAgJmlu aXRpYWxfc3RhdGUtPmJhc2UsCisJCQkJICAgICZrbXNfc3RhdGVfZnVuY3MpOworCiAJaWYgKGtt cykgewogCQlyZXQgPSBrbXMtPmZ1bmNzLT5od19pbml0KGttcyk7CiAJCWlmIChyZXQpIHsKZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2Rydi5oIGIvZHJpdmVycy9ncHUvZHJt L21zbS9tc21fZHJ2LmgKaW5kZXggNDhlZDViOWE4NTgwLi5jNWI4Yzk4OWI4NTkgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2Rydi5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9t c20vbXNtX2Rydi5oCkBAIC0xNjIsOSArMTYyLDYgQEAgc3RydWN0IG1zbV9mb3JtYXQgewogCiBp bnQgbXNtX2F0b21pY19jb21taXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAkJc3RydWN0IGRy bV9hdG9taWNfc3RhdGUgKnN0YXRlLCBib29sIG5vbmJsb2NrKTsKLXN0cnVjdCBkcm1fYXRvbWlj X3N0YXRlICptc21fYXRvbWljX3N0YXRlX2FsbG9jKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwot dm9pZCBtc21fYXRvbWljX3N0YXRlX2NsZWFyKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0 ZSk7Ci12b2lkIG1zbV9hdG9taWNfc3RhdGVfZnJlZShzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAq c3RhdGUpOwogCiB2b2lkIG1zbV9nZW1fdW5tYXBfdm1hKHN0cnVjdCBtc21fZ2VtX2FkZHJlc3Nf c3BhY2UgKmFzcGFjZSwKIAkJc3RydWN0IG1zbV9nZW1fdm1hICp2bWEsIHN0cnVjdCBzZ190YWJs ZSAqc2d0KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2ttcy5oIGIvZHJp dmVycy9ncHUvZHJtL21zbS9tc21fa21zLmgKaW5kZXggMTdkNTgyNDQxN2FkLi4yNGQwOWZjZWJm MTYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2ttcy5oCisrKyBiL2RyaXZl cnMvZ3B1L2RybS9tc20vbXNtX2ttcy5oCkBAIC00Miw2ICs0Miw4IEBAIHN0cnVjdCBtc21fa21z X2Z1bmNzIHsKIAl2b2lkICgqZGlzYWJsZV92YmxhbmspKHN0cnVjdCBtc21fa21zICprbXMsIHN0 cnVjdCBkcm1fY3J0YyAqY3J0Yyk7CiAJLyogc3dhcCBnbG9iYWwgYXRvbWljIHN0YXRlOiAqLwog CXZvaWQgKCpzd2FwX3N0YXRlKShzdHJ1Y3QgbXNtX2ttcyAqa21zLCBzdHJ1Y3QgZHJtX2F0b21p Y19zdGF0ZSAqc3RhdGUpOworCXZvaWQgKigqZHVwbGljYXRlX3N0YXRlKSh2b2lkICpzdGF0ZSk7 CisJdm9pZCAoKmRlc3Ryb3lfc3RhdGUpKHZvaWQgKnN0YXRlKTsKIAkvKiBtb2Rlc2V0LCBicmFj a2V0aW5nIGF0b21pY19jb21taXQoKTogKi8KIAl2b2lkICgqcHJlcGFyZV9jb21taXQpKHN0cnVj dCBtc21fa21zICprbXMsIHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSk7CiAJdm9pZCAo KmNvbXBsZXRlX2NvbW1pdCkoc3RydWN0IG1zbV9rbXMgKmttcywgc3RydWN0IGRybV9hdG9taWNf c3RhdGUgKnN0YXRlKTsKQEAgLTY4LDYgKzcwLDggQEAgc3RydWN0IG1zbV9rbXNfZnVuY3Mgewog fTsKIAogc3RydWN0IG1zbV9rbXMgeworCXN0cnVjdCBkcm1fcHJpdmF0ZV9vYmogYmFzZTsKKwog CWNvbnN0IHN0cnVjdCBtc21fa21zX2Z1bmNzICpmdW5jczsKIAogCS8qIGlycSBudW1iZXIgdG8g YmUgcGFzc2VkIG9uIHRvIGRybV9pcnFfaW5zdGFsbCAqLwpAQCAtNzgsMTYgKzgyLDIzIEBAIHN0 cnVjdCBtc21fa21zIHsKIH07CiAKIC8qKgotICogU3ViY2xhc3Mgb2YgZHJtX2F0b21pY19zdGF0 ZSwgdG8gYWxsb3cga21zIGJhY2tlbmQgdG8gaGF2ZSBkcml2ZXIKKyAqIFN1YmNsYXNzIG9mIGRy bV9wcml2YXRlX3N0YXRlLCB0byBhbGxvdyBrbXMgYmFja2VuZCB0byBoYXZlIGRyaXZlcgogICog cHJpdmF0ZSBnbG9iYWwgc3RhdGUuICBUaGUga21zIGJhY2tlbmQgY2FuIGRvIHdoYXRldmVyIGl0 IHdhbnRzCi0gKiB3aXRoIHRoZSAtPnN0YXRlIHB0ci4gIE9uIC0+YXRvbWljX3N0YXRlX2NsZWFy KCkgdGhlIC0+c3RhdGUgcHRyCi0gKiBpcyBrZnJlZSdkIGFuZCBzZXQgYmFjayB0byBOVUxMLgor ICogd2l0aCB0aGUgLT5zdGF0ZSBwdHIuCiAgKi8KIHN0cnVjdCBtc21fa21zX3N0YXRlIHsKLQlz dHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSBiYXNlOworCXN0cnVjdCBkcm1fcHJpdmF0ZV9zdGF0ZSBi YXNlOwogCXZvaWQgKnN0YXRlOwogfTsKLSNkZWZpbmUgdG9fa21zX3N0YXRlKHgpIGNvbnRhaW5l cl9vZih4LCBzdHJ1Y3QgbXNtX2ttc19zdGF0ZSwgYmFzZSkKKworLyoqCisgKiBFeHRyYWN0cyB0 aGUgbXNtX2ttc19zdGF0ZSBmcm9tIGVpdGhlciBhbiBhdG9taWMgc3RhdGUsIG9yIHRoZSBjdXJy ZW50CisgKiBkZXZpY2UuIE9uZSBvciB0aGUgb3RoZXIgbWlnaHQgYmUgZGVzaXJhYmxlIGRlcGVu ZGluZyBvbiB3aGV0aGVyIHlvdSB3YW50IHRoZQorICogY3VycmVudGx5IGNvbmZpZ3VyZWQgbXNt X2ttc19zdGF0ZSAoZnJvbV9kZXYpLCBvciB5b3Ugd291bGQgbGlrZSB0aGUgc3RhdGUKKyAqIHdo aWNoIGlzIGFib3V0IHRvIGJlIGFwcGxpZWQgKGZyb21fYXRvbWljKS4KKyAqLworc3RydWN0IG1z bV9rbXNfc3RhdGUgKm1zbV9rbXNfc3RhdGVfZnJvbV9kZXYoc3RydWN0IGRybV9kZXZpY2UgKmRl dik7CitzdHJ1Y3QgbXNtX2ttc19zdGF0ZSAqbXNtX2ttc19zdGF0ZV9mcm9tX2F0b21pYyhzdHJ1 Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpOwogCiBzdGF0aWMgaW5saW5lIHZvaWQgbXNtX2tt c19pbml0KHN0cnVjdCBtc21fa21zICprbXMsCiAJCWNvbnN0IHN0cnVjdCBtc21fa21zX2Z1bmNz ICpmdW5jcykKLS0gClNlYW4gUGF1bCwgU29mdHdhcmUgRW5naW5lZXIsIEdvb2dsZSAvIENocm9t aXVtIE9TCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpG cmVlZHJlbm8gbWFpbGluZyBsaXN0CkZyZWVkcmVub0BsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0 cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9mcmVlZHJlbm8K