From: Rex Zhu Subject: [PATCH 1/4] drm/amd/powerplay: refine code for thermal control in powerplay Date: Tue, 5 Sep 2017 09:29:25 +0800 Message-ID: <1504574968-23945-1-git-send-email-Rex.Zhu@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: List-Id: Discussion list for AMD gfx List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: amd-gfx-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "amd-gfx" To: amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Cc: Rex Zhu YWRkIGZ1bmN0aW9uIHBvaW50IHN0YXJ0X3RoZXJtYWxfY29udHJvbGxlciBpbiBod21nciwKZGVs ZXRlIHRoZXJtYWwgZnVuY3Rpb24gdGFibGUgYW5kIHJlbGF0ZWQgZnVuY3Rpb25zCgpDaGFuZ2Ut SWQ6IEk2MWRiNWI3ZTM3ZDc1ZmRjNTVhY2Q1NzAzNjljYTgzM2I1MzQ2ZDAxClNpZ25lZC1vZmYt Ynk6IFJleCBaaHUgPFJleC5aaHVAYW1kLmNvbT4KLS0tCiAuLi4vZ3B1L2RybS9hbWQvcG93ZXJw bGF5L2h3bWdyL2hhcmR3YXJlbWFuYWdlci5jICB8ICAgNiArLQogZHJpdmVycy9ncHUvZHJtL2Ft ZC9wb3dlcnBsYXkvaHdtZ3IvaHdtZ3IuYyAgICAgICAgfCAgIDEgKwogZHJpdmVycy9ncHUvZHJt L2FtZC9wb3dlcnBsYXkvaHdtZ3Ivc211N19od21nci5jICAgfCAgIDQgKy0KIGRyaXZlcnMvZ3B1 L2RybS9hbWQvcG93ZXJwbGF5L2h3bWdyL3NtdTdfdGhlcm1hbC5jIHwgMTQ4ICsrKy0tLS0tLS0t LS0tLS0tLS0tLQogZHJpdmVycy9ncHUvZHJtL2FtZC9wb3dlcnBsYXkvaHdtZ3Ivc211N190aGVy bWFsLmggfCAgIDUgKy0KIGRyaXZlcnMvZ3B1L2RybS9hbWQvcG93ZXJwbGF5L2h3bWdyL3ZlZ2Ex MF9od21nci5jIHwgICAyICstCiAuLi4vZ3B1L2RybS9hbWQvcG93ZXJwbGF5L2h3bWdyL3ZlZ2Ex MF90aGVybWFsLmMgICB8IDEzNyArKystLS0tLS0tLS0tLS0tLS0tCiAuLi4vZ3B1L2RybS9hbWQv cG93ZXJwbGF5L2h3bWdyL3ZlZ2ExMF90aGVybWFsLmggICB8ICAxMyArLQogZHJpdmVycy9ncHUv ZHJtL2FtZC9wb3dlcnBsYXkvaW5jL2h3bWdyLmggICAgICAgICAgfCAgIDMgKy0KIGRyaXZlcnMv Z3B1L2RybS9hbWQvcG93ZXJwbGF5L2luYy9zbXVtZ3IuaCAgICAgICAgIHwgICA2ICstCiBkcml2 ZXJzL2dwdS9kcm0vYW1kL3Bvd2VycGxheS9zbXVtZ3Ivc211bWdyLmMgICAgICB8ICAgNiArLQog MTEgZmlsZXMgY2hhbmdlZCwgNTUgaW5zZXJ0aW9ucygrKSwgMjc2IGRlbGV0aW9ucygtKQoKZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvcG93ZXJwbGF5L2h3bWdyL2hhcmR3YXJlbWFu YWdlci5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9wb3dlcnBsYXkvaHdtZ3IvaGFyZHdhcmVtYW5h Z2VyLmMKaW5kZXggY2UzNzhiZC4uYTM5OTFjMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJt L2FtZC9wb3dlcnBsYXkvaHdtZ3IvaGFyZHdhcmVtYW5hZ2VyLmMKKysrIGIvZHJpdmVycy9ncHUv ZHJtL2FtZC9wb3dlcnBsYXkvaHdtZ3IvaGFyZHdhcmVtYW5hZ2VyLmMKQEAgLTMwNiw4ICszMDYs MTAgQEAgaW50IHBobV9zdGFydF90aGVybWFsX2NvbnRyb2xsZXIoc3RydWN0IHBwX2h3bWdyICpo d21nciwgc3RydWN0IFBQX1RlbXBlcmF0dXJlUmEKIAkJcmFuZ2UubWluID0gdGVtcGVyYXR1cmVf cmFuZ2UtPm1pbjsKIAl9CiAJaWYgKHBobV9jYXBfZW5hYmxlZChod21nci0+cGxhdGZvcm1fZGVz Y3JpcHRvci5wbGF0Zm9ybUNhcHMsCi0JCQlQSE1fUGxhdGZvcm1DYXBzX1RoZXJtYWxDb250cm9s bGVyKSkKLQkJcmV0dXJuIHBobV9kaXNwYXRjaF90YWJsZShod21nciwgJihod21nci0+c3RhcnRf dGhlcm1hbF9jb250cm9sbGVyKSwgJnJhbmdlLCBOVUxMKTsKKwkJCVBITV9QbGF0Zm9ybUNhcHNf VGhlcm1hbENvbnRyb2xsZXIpCisJCQkmJiBod21nci0+aHdtZ3JfZnVuYy0+c3RhcnRfdGhlcm1h bF9jb250cm9sbGVyICE9IE5VTEwpCisJCXJldHVybiBod21nci0+aHdtZ3JfZnVuYy0+c3RhcnRf dGhlcm1hbF9jb250cm9sbGVyKGh3bWdyLCAmcmFuZ2UpOworCiAJcmV0dXJuIDA7CiB9CiAKZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvcG93ZXJwbGF5L2h3bWdyL2h3bWdyLmMgYi9k cml2ZXJzL2dwdS9kcm0vYW1kL3Bvd2VycGxheS9od21nci9od21nci5jCmluZGV4IDE5YjZmMTEu LmYwZDBkMWYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvcG93ZXJwbGF5L2h3bWdy L2h3bWdyLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9wb3dlcnBsYXkvaHdtZ3IvaHdtZ3Iu YwpAQCAtNzMsNiArNzMsNyBAQCBpbnQgaHdtZ3JfZWFybHlfaW5pdChzdHJ1Y3QgcHBfaW5zdGFu Y2UgKmhhbmRsZSkKIAlod21nci0+ZHBtX2xldmVsID0gQU1EX0RQTV9GT1JDRURfTEVWRUxfQVVU TzsKIAlod21ncl9pbml0X2RlZmF1bHRfY2Fwcyhod21ncik7CiAJaHdtZ3Jfc2V0X3VzZXJfc3Bl Y2lmeV9jYXBzKGh3bWdyKTsKKwlod21nci0+ZmFuX2N0cmxfaXNfaW5fZGVmYXVsdF9tb2RlID0g dHJ1ZTsKIAogCXN3aXRjaCAoaHdtZ3ItPmNoaXBfZmFtaWx5KSB7CiAJY2FzZSBBTURHUFVfRkFN SUxZX0NaOgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9wb3dlcnBsYXkvaHdtZ3Iv c211N19od21nci5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9wb3dlcnBsYXkvaHdtZ3Ivc211N19o d21nci5jCmluZGV4IDc4OTQ5NzguLjc4MWEwNWUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9hbWQvcG93ZXJwbGF5L2h3bWdyL3NtdTdfaHdtZ3IuYworKysgYi9kcml2ZXJzL2dwdS9kcm0v YW1kL3Bvd2VycGxheS9od21nci9zbXU3X2h3bWdyLmMKQEAgLTIyODQsNyArMjI4NCw2IEBAIHN0 YXRpYyBpbnQgc211N19od21ncl9iYWNrZW5kX2Zpbmkoc3RydWN0IHBwX2h3bWdyICpod21ncikK IHsKIAlrZnJlZShod21nci0+ZHluX3N0YXRlLnZkZGNfZGVwX29uX2RhbF9wd3JsKTsKIAlod21n ci0+ZHluX3N0YXRlLnZkZGNfZGVwX29uX2RhbF9wd3JsID0gTlVMTDsKLQlwcF9zbXU3X3RoZXJt YWxfZmluaShod21ncik7CiAJa2ZyZWUoaHdtZ3ItPmJhY2tlbmQpOwogCWh3bWdyLT5iYWNrZW5k ID0gTlVMTDsKIApAQCAtMjMwMSw4ICsyMzAwLDYgQEAgc3RhdGljIGludCBzbXU3X2h3bWdyX2Jh Y2tlbmRfaW5pdChzdHJ1Y3QgcHBfaHdtZ3IgKmh3bWdyKQogCQlyZXR1cm4gLUVOT01FTTsKIAog CWh3bWdyLT5iYWNrZW5kID0gZGF0YTsKLQlwcF9zbXU3X3RoZXJtYWxfaW5pdGlhbGl6ZShod21n cik7Ci0KIAlzbXU3X3BhdGNoX3ZvbHRhZ2Vfd29ya2Fyb3VuZChod21ncik7CiAJc211N19pbml0 X2RwbV9kZWZhdWx0cyhod21ncik7CiAKQEAgLTQ2NjAsNiArNDY1Nyw3IEBAIHN0YXRpYyBpbnQg c211N19hdmZzX2NvbnRyb2woc3RydWN0IHBwX2h3bWdyICpod21nciwgYm9vbCBlbmFibGUpCiAJ LnNldF9wb3dlcl9wcm9maWxlX3N0YXRlID0gc211N19zZXRfcG93ZXJfcHJvZmlsZV9zdGF0ZSwK IAkuYXZmc19jb250cm9sID0gc211N19hdmZzX2NvbnRyb2wsCiAJLmRpc2FibGVfc21jX2Zpcm13 YXJlX2N0ZiA9IHNtdTdfdGhlcm1hbF9kaXNhYmxlX2FsZXJ0LAorCS5zdGFydF90aGVybWFsX2Nv bnRyb2xsZXIgPSBzbXU3X3N0YXJ0X3RoZXJtYWxfY29udHJvbGxlciwKIH07CiAKIHVpbnQ4X3Qg c211N19nZXRfc2xlZXBfZGl2aWRlcl9pZF9mcm9tX2Nsb2NrKHVpbnQzMl90IGNsb2NrLApkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9wb3dlcnBsYXkvaHdtZ3Ivc211N190aGVybWFs LmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL3Bvd2VycGxheS9od21nci9zbXU3X3RoZXJtYWwuYwpp bmRleCBiYWRkYjU2Li5kYTllODQyIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL3Bv d2VycGxheS9od21nci9zbXU3X3RoZXJtYWwuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL3Bv d2VycGxheS9od21nci9zbXU3X3RoZXJtYWwuYwpAQCAtMzY3LDcgKzM2Nyw3IEBAIHN0YXRpYyBp bnQgc211N190aGVybWFsX2luaXRpYWxpemUoc3RydWN0IHBwX2h3bWdyICpod21ncikKICoKICog QHBhcmFtICAgIGh3bWdyIFRoZSBhZGRyZXNzIG9mIHRoZSBoYXJkd2FyZSBtYW5hZ2VyLgogKi8K LWludCBzbXU3X3RoZXJtYWxfZW5hYmxlX2FsZXJ0KHN0cnVjdCBwcF9od21nciAqaHdtZ3IpCitz dGF0aWMgdm9pZCBzbXU3X3RoZXJtYWxfZW5hYmxlX2FsZXJ0KHN0cnVjdCBwcF9od21nciAqaHdt Z3IpCiB7CiAJdWludDMyX3QgYWxlcnQ7CiAKQEAgLTM3OCw3ICszNzgsNyBAQCBpbnQgc211N190 aGVybWFsX2VuYWJsZV9hbGVydChzdHJ1Y3QgcHBfaHdtZ3IgKmh3bWdyKQogCQkJQ0dfVEhFUk1B TF9JTlQsIFRIRVJNX0lOVF9NQVNLLCBhbGVydCk7CiAKIAkvKiBzZW5kIG1lc3NhZ2UgdG8gU01V IHRvIGVuYWJsZSBpbnRlcm5hbCB0aGVybWFsIGludGVycnVwdHMgKi8KLQlyZXR1cm4gc211bV9z ZW5kX21zZ190b19zbWMoaHdtZ3ItPnNtdW1nciwgUFBTTUNfTVNHX1RoZXJtYWxfQ250bF9FbmFi bGUpOworCXNtdW1fc2VuZF9tc2dfdG9fc21jKGh3bWdyLT5zbXVtZ3IsIFBQU01DX01TR19UaGVy bWFsX0NudGxfRW5hYmxlKTsKIH0KIAogLyoqCkBAIC00MjMsOCArNDIzLDcgQEAgaW50IHNtdTdf dGhlcm1hbF9zdG9wX3RoZXJtYWxfY29udHJvbGxlcihzdHJ1Y3QgcHBfaHdtZ3IgKmh3bWdyKQog KiBAcGFyYW0gICAgUmVzdWx0IHRoZSBsYXN0IGZhaWx1cmUgY29kZQogKiBAcmV0dXJuICAgcmVz dWx0IGZyb20gc2V0IHRlbXBlcmF0dXJlIHJhbmdlIHJvdXRpbmUKICovCi1zdGF0aWMgaW50IHRm X3NtdTdfdGhlcm1hbF9zdGFydF9zbWNfZmFuX2NvbnRyb2woc3RydWN0IHBwX2h3bWdyICpod21n ciwKLQkJdm9pZCAqaW5wdXQsIHZvaWQgKm91dHB1dCwgdm9pZCAqc3RvcmFnZSwgaW50IHJlc3Vs dCkKK3N0YXRpYyBpbnQgc211N190aGVybWFsX3N0YXJ0X3NtY19mYW5fY29udHJvbChzdHJ1Y3Qg cHBfaHdtZ3IgKmh3bWdyKQogewogLyogSWYgdGhlIGZhbnRhYmxlIHNldHVwIGhhcyBmYWlsZWQg d2UgY291bGQgaGF2ZSBkaXNhYmxlZAogICogUEhNX1BsYXRmb3JtQ2Fwc19NaWNyb2NvZGVGYW5D b250cm9sIGV2ZW4gYWZ0ZXIKQEAgLTQ0MCwxMDggKzQzOSwzNCBAQCBzdGF0aWMgaW50IHRmX3Nt dTdfdGhlcm1hbF9zdGFydF9zbWNfZmFuX2NvbnRyb2woc3RydWN0IHBwX2h3bWdyICpod21nciwK IAlyZXR1cm4gMDsKIH0KIAotLyoqCi0qIFNldCB0ZW1wZXJhdHVyZSByYW5nZSBmb3IgaGlnaCBh bmQgbG93IGFsZXJ0cwotKiBAcGFyYW0gICAgaHdtZ3IgIHRoZSBhZGRyZXNzIG9mIHRoZSBwb3dl cnBsYXkgaGFyZHdhcmUgbWFuYWdlci4KLSogQHBhcmFtICAgIHBJbnB1dCB0aGUgcG9pbnRlciB0 byBpbnB1dCBkYXRhCi0qIEBwYXJhbSAgICBwT3V0cHV0IHRoZSBwb2ludGVyIHRvIG91dHB1dCBk YXRhCi0qIEBwYXJhbSAgICBwU3RvcmFnZSB0aGUgcG9pbnRlciB0byB0ZW1wb3Jhcnkgc3RvcmFn ZQotKiBAcGFyYW0gICAgUmVzdWx0IHRoZSBsYXN0IGZhaWx1cmUgY29kZQotKiBAcmV0dXJuICAg cmVzdWx0IGZyb20gc2V0IHRlbXBlcmF0dXJlIHJhbmdlIHJvdXRpbmUKLSovCi1zdGF0aWMgaW50 IHRmX3NtdTdfdGhlcm1hbF9zZXRfdGVtcGVyYXR1cmVfcmFuZ2Uoc3RydWN0IHBwX2h3bWdyICpo d21nciwKLQkJdm9pZCAqaW5wdXQsIHZvaWQgKm91dHB1dCwgdm9pZCAqc3RvcmFnZSwgaW50IHJl c3VsdCkKK2ludCBzbXU3X3N0YXJ0X3RoZXJtYWxfY29udHJvbGxlcihzdHJ1Y3QgcHBfaHdtZ3Ig Kmh3bWdyLAorCQkJCXN0cnVjdCBQUF9UZW1wZXJhdHVyZVJhbmdlICpyYW5nZSkKIHsKLQlzdHJ1 Y3QgUFBfVGVtcGVyYXR1cmVSYW5nZSAqcmFuZ2UgPSAoc3RydWN0IFBQX1RlbXBlcmF0dXJlUmFu Z2UgKilpbnB1dDsKKwlpbnQgcmV0ID0gMDsKIAogCWlmIChyYW5nZSA9PSBOVUxMKQogCQlyZXR1 cm4gLUVJTlZBTDsKIAotCXJldHVybiBzbXU3X3RoZXJtYWxfc2V0X3RlbXBlcmF0dXJlX3Jhbmdl KGh3bWdyLCByYW5nZS0+bWluLCByYW5nZS0+bWF4KTsKLX0KLQotLyoqCi0qIFByb2dyYW1zIG9u ZS10aW1lIHNldHRpbmcgcmVnaXN0ZXJzCi0qIEBwYXJhbSAgICBod21nciAgdGhlIGFkZHJlc3Mg b2YgdGhlIHBvd2VycGxheSBoYXJkd2FyZSBtYW5hZ2VyLgotKiBAcGFyYW0gICAgcElucHV0IHRo ZSBwb2ludGVyIHRvIGlucHV0IGRhdGEKLSogQHBhcmFtICAgIHBPdXRwdXQgdGhlIHBvaW50ZXIg dG8gb3V0cHV0IGRhdGEKLSogQHBhcmFtICAgIHBTdG9yYWdlIHRoZSBwb2ludGVyIHRvIHRlbXBv cmFyeSBzdG9yYWdlCi0qIEBwYXJhbSAgICBSZXN1bHQgdGhlIGxhc3QgZmFpbHVyZSBjb2RlCi0q IEByZXR1cm4gICByZXN1bHQgZnJvbSBpbml0aWFsaXplIHRoZXJtYWwgY29udHJvbGxlciByb3V0 aW5lCi0qLwotc3RhdGljIGludCB0Zl9zbXU3X3RoZXJtYWxfaW5pdGlhbGl6ZShzdHJ1Y3QgcHBf aHdtZ3IgKmh3bWdyLAotCQl2b2lkICppbnB1dCwgdm9pZCAqb3V0cHV0LCB2b2lkICpzdG9yYWdl LCBpbnQgcmVzdWx0KQotewotCXJldHVybiBzbXU3X3RoZXJtYWxfaW5pdGlhbGl6ZShod21ncik7 Ci19Ci0KLS8qKgotKiBFbmFibGUgaGlnaCBhbmQgbG93IGFsZXJ0cwotKiBAcGFyYW0gICAgaHdt Z3IgIHRoZSBhZGRyZXNzIG9mIHRoZSBwb3dlcnBsYXkgaGFyZHdhcmUgbWFuYWdlci4KLSogQHBh cmFtICAgIHBJbnB1dCB0aGUgcG9pbnRlciB0byBpbnB1dCBkYXRhCi0qIEBwYXJhbSAgICBwT3V0 cHV0IHRoZSBwb2ludGVyIHRvIG91dHB1dCBkYXRhCi0qIEBwYXJhbSAgICBwU3RvcmFnZSB0aGUg cG9pbnRlciB0byB0ZW1wb3Jhcnkgc3RvcmFnZQotKiBAcGFyYW0gICAgUmVzdWx0IHRoZSBsYXN0 IGZhaWx1cmUgY29kZQotKiBAcmV0dXJuICAgcmVzdWx0IGZyb20gZW5hYmxlIGFsZXJ0IHJvdXRp bmUKLSovCi1zdGF0aWMgaW50IHRmX3NtdTdfdGhlcm1hbF9lbmFibGVfYWxlcnQoc3RydWN0IHBw X2h3bWdyICpod21nciwKLQkJdm9pZCAqaW5wdXQsIHZvaWQgKm91dHB1dCwgdm9pZCAqc3RvcmFn ZSwgaW50IHJlc3VsdCkKLXsKLQlyZXR1cm4gc211N190aGVybWFsX2VuYWJsZV9hbGVydChod21n cik7Ci19Ci0KLS8qKgotKiBEaXNhYmxlIGhpZ2ggYW5kIGxvdyBhbGVydHMKLSogQHBhcmFtICAg IGh3bWdyICB0aGUgYWRkcmVzcyBvZiB0aGUgcG93ZXJwbGF5IGhhcmR3YXJlIG1hbmFnZXIuCi0q IEBwYXJhbSAgICBwSW5wdXQgdGhlIHBvaW50ZXIgdG8gaW5wdXQgZGF0YQotKiBAcGFyYW0gICAg cE91dHB1dCB0aGUgcG9pbnRlciB0byBvdXRwdXQgZGF0YQotKiBAcGFyYW0gICAgcFN0b3JhZ2Ug dGhlIHBvaW50ZXIgdG8gdGVtcG9yYXJ5IHN0b3JhZ2UKLSogQHBhcmFtICAgIFJlc3VsdCB0aGUg bGFzdCBmYWlsdXJlIGNvZGUKLSogQHJldHVybiAgIHJlc3VsdCBmcm9tIGRpc2FibGUgYWxlcnQg cm91dGluZQotKi8KLXN0YXRpYyBpbnQgdGZfc211N190aGVybWFsX2Rpc2FibGVfYWxlcnQoc3Ry dWN0IHBwX2h3bWdyICpod21nciwKLQkJdm9pZCAqaW5wdXQsIHZvaWQgKm91dHB1dCwgdm9pZCAq c3RvcmFnZSwgaW50IHJlc3VsdCkKLXsKLQlyZXR1cm4gc211N190aGVybWFsX2Rpc2FibGVfYWxl cnQoaHdtZ3IpOwotfQorCXNtdTdfdGhlcm1hbF9pbml0aWFsaXplKGh3bWdyKTsKKwlyZXQgPSBz bXU3X3RoZXJtYWxfc2V0X3RlbXBlcmF0dXJlX3JhbmdlKGh3bWdyLCByYW5nZS0+bWluLCByYW5n ZS0+bWF4KTsKKwlpZiAocmV0KQorCQlyZXR1cm4gLUVJTlZBTDsKKwlzbXU3X3RoZXJtYWxfZW5h YmxlX2FsZXJ0KGh3bWdyKTsKKwlyZXQgPSBzbXVtX3RoZXJtYWxfYXZmc19lbmFibGUoaHdtZ3Ip OworCWlmIChyZXQpCisJCXJldHVybiAtRUlOVkFMOwogCi1zdGF0aWMgY29uc3Qgc3RydWN0IHBo bV9tYXN0ZXJfdGFibGVfaXRlbQotcGhtX3RoZXJtYWxfc3RhcnRfdGhlcm1hbF9jb250cm9sbGVy X21hc3Rlcl9saXN0W10gPSB7Ci0JeyAudGFibGVGdW5jdGlvbiA9IHRmX3NtdTdfdGhlcm1hbF9p bml0aWFsaXplIH0sCi0JeyAudGFibGVGdW5jdGlvbiA9IHRmX3NtdTdfdGhlcm1hbF9zZXRfdGVt cGVyYXR1cmVfcmFuZ2UgfSwKLQl7IC50YWJsZUZ1bmN0aW9uID0gdGZfc211N190aGVybWFsX2Vu YWJsZV9hbGVydCB9LAotCXsgLnRhYmxlRnVuY3Rpb24gPSBzbXVtX3RoZXJtYWxfYXZmc19lbmFi bGUgfSwKIC8qIFdlIHNob3VsZCByZXN0cmljdCBwZXJmb3JtYW5jZSBsZXZlbHMgdG8gbG93IGJl Zm9yZSB3ZSBoYWx0IHRoZSBTTUMuCiAgKiBPbiB0aGUgb3RoZXIgaGFuZCB3ZSBhcmUgc3RpbGwg aW4gYm9vdCBzdGF0ZSB3aGVuIHdlIGRvIHRoaXMKICAqIHNvIGl0IHdvdWxkIGJlIHBvaW50bGVz cy4KICAqIElmIHRoaXMgYXNzdW1wdGlvbiBjaGFuZ2VzIHdlIGhhdmUgdG8gcmV2aXNpdCB0aGlz IHRhYmxlLgogICovCi0JeyAudGFibGVGdW5jdGlvbiA9IHNtdW1fdGhlcm1hbF9zZXR1cF9mYW5f dGFibGUgfSwKLQl7IC50YWJsZUZ1bmN0aW9uID0gdGZfc211N190aGVybWFsX3N0YXJ0X3NtY19m YW5fY29udHJvbCB9LAotCXsgfQotfTsKLQotc3RhdGljIGNvbnN0IHN0cnVjdCBwaG1fbWFzdGVy X3RhYmxlX2hlYWRlcgotcGhtX3RoZXJtYWxfc3RhcnRfdGhlcm1hbF9jb250cm9sbGVyX21hc3Rl ciA9IHsKLQkwLAotCVBITV9NYXN0ZXJUYWJsZUZsYWdfTm9uZSwKLQlwaG1fdGhlcm1hbF9zdGFy dF90aGVybWFsX2NvbnRyb2xsZXJfbWFzdGVyX2xpc3QKLX07Ci0KLXN0YXRpYyBjb25zdCBzdHJ1 Y3QgcGhtX21hc3Rlcl90YWJsZV9pdGVtCi1waG1fdGhlcm1hbF9zZXRfdGVtcGVyYXR1cmVfcmFu Z2VfbWFzdGVyX2xpc3RbXSA9IHsKLQl7IC50YWJsZUZ1bmN0aW9uID0gdGZfc211N190aGVybWFs X2Rpc2FibGVfYWxlcnQgfSwKLQl7IC50YWJsZUZ1bmN0aW9uID0gdGZfc211N190aGVybWFsX3Nl dF90ZW1wZXJhdHVyZV9yYW5nZSB9LAotCXsgLnRhYmxlRnVuY3Rpb24gPSB0Zl9zbXU3X3RoZXJt YWxfZW5hYmxlX2FsZXJ0IH0sCi0JeyB9Ci19OwotCi1zdGF0aWMgY29uc3Qgc3RydWN0IHBobV9t YXN0ZXJfdGFibGVfaGVhZGVyCi1waG1fdGhlcm1hbF9zZXRfdGVtcGVyYXR1cmVfcmFuZ2VfbWFz dGVyID0gewotCTAsCi0JUEhNX01hc3RlclRhYmxlRmxhZ19Ob25lLAotCXBobV90aGVybWFsX3Nl dF90ZW1wZXJhdHVyZV9yYW5nZV9tYXN0ZXJfbGlzdAotfTsKKwlzbXVtX3RoZXJtYWxfc2V0dXBf ZmFuX3RhYmxlKGh3bWdyKTsKKwlzbXU3X3RoZXJtYWxfc3RhcnRfc21jX2Zhbl9jb250cm9sKGh3 bWdyKTsKKwlyZXR1cm4gMDsKK30KKworCiAKIGludCBzbXU3X3RoZXJtYWxfY3RybF91bmluaXRp YWxpemVfdGhlcm1hbF9jb250cm9sbGVyKHN0cnVjdCBwcF9od21nciAqaHdtZ3IpCiB7CkBAIC01 NDksMzYgKzQ3NCwzIEBAIGludCBzbXU3X3RoZXJtYWxfY3RybF91bmluaXRpYWxpemVfdGhlcm1h bF9jb250cm9sbGVyKHN0cnVjdCBwcF9od21nciAqaHdtZ3IpCiAJCXNtdTdfZmFuX2N0cmxfc2V0 X2RlZmF1bHRfbW9kZShod21ncik7CiAJcmV0dXJuIDA7CiB9Ci0KLS8qKgotKiBJbml0aWFsaXpl cyB0aGUgdGhlcm1hbCBjb250cm9sbGVyIHJlbGF0ZWQgZnVuY3Rpb25zIGluIHRoZSBIYXJkd2Fy ZSBNYW5hZ2VyIHN0cnVjdHVyZS4KLSogQHBhcmFtICAgIGh3bWdyIFRoZSBhZGRyZXNzIG9mIHRo ZSBoYXJkd2FyZSBtYW5hZ2VyLgotKiBAZXhjZXB0aW9uIEFueSBlcnJvciBjb2RlIGZyb20gdGhl IGxvdy1sZXZlbCBjb21tdW5pY2F0aW9uLgotKi8KLWludCBwcF9zbXU3X3RoZXJtYWxfaW5pdGlh bGl6ZShzdHJ1Y3QgcHBfaHdtZ3IgKmh3bWdyKQotewotCWludCByZXN1bHQ7Ci0KLQlyZXN1bHQg PSBwaG1fY29uc3RydWN0X3RhYmxlKGh3bWdyLAotCQkJJnBobV90aGVybWFsX3NldF90ZW1wZXJh dHVyZV9yYW5nZV9tYXN0ZXIsCi0JCQkmKGh3bWdyLT5zZXRfdGVtcGVyYXR1cmVfcmFuZ2UpKTsK LQotCWlmICghcmVzdWx0KSB7Ci0JCXJlc3VsdCA9IHBobV9jb25zdHJ1Y3RfdGFibGUoaHdtZ3Is Ci0JCQkJJnBobV90aGVybWFsX3N0YXJ0X3RoZXJtYWxfY29udHJvbGxlcl9tYXN0ZXIsCi0JCQkJ Jihod21nci0+c3RhcnRfdGhlcm1hbF9jb250cm9sbGVyKSk7Ci0JCWlmIChyZXN1bHQpCi0JCQlw aG1fZGVzdHJveV90YWJsZShod21nciwgJihod21nci0+c2V0X3RlbXBlcmF0dXJlX3JhbmdlKSk7 Ci0JfQotCi0JaWYgKCFyZXN1bHQpCi0JCWh3bWdyLT5mYW5fY3RybF9pc19pbl9kZWZhdWx0X21v ZGUgPSB0cnVlOwotCXJldHVybiByZXN1bHQ7Ci19Ci0KLXZvaWQgcHBfc211N190aGVybWFsX2Zp bmkoc3RydWN0IHBwX2h3bWdyICpod21ncikKLXsKLQlwaG1fZGVzdHJveV90YWJsZShod21nciwg Jihod21nci0+c2V0X3RlbXBlcmF0dXJlX3JhbmdlKSk7Ci0JcGhtX2Rlc3Ryb3lfdGFibGUoaHdt Z3IsICYoaHdtZ3ItPnN0YXJ0X3RoZXJtYWxfY29udHJvbGxlcikpOwotCXJldHVybjsKLX0KXCBO byBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1k L3Bvd2VycGxheS9od21nci9zbXU3X3RoZXJtYWwuaCBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvcG93 ZXJwbGF5L2h3bWdyL3NtdTdfdGhlcm1hbC5oCmluZGV4IGJhNzFiNjAuLjQyYzFiYTAgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvcG93ZXJwbGF5L2h3bWdyL3NtdTdfdGhlcm1hbC5o CisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvcG93ZXJwbGF5L2h3bWdyL3NtdTdfdGhlcm1hbC5o CkBAIC00NiwxNCArNDYsMTMgQEAKIGV4dGVybiBpbnQgc211N19mYW5fY3RybF9zZXRfc3RhdGlj X21vZGUoc3RydWN0IHBwX2h3bWdyICpod21nciwgdWludDMyX3QgbW9kZSk7CiBleHRlcm4gaW50 IHNtdTdfZmFuX2N0cmxfc2V0X2Zhbl9zcGVlZF9wZXJjZW50KHN0cnVjdCBwcF9od21nciAqaHdt Z3IsIHVpbnQzMl90IHNwZWVkKTsKIGV4dGVybiBpbnQgc211N19mYW5fY3RybF9yZXNldF9mYW5f c3BlZWRfdG9fZGVmYXVsdChzdHJ1Y3QgcHBfaHdtZ3IgKmh3bWdyKTsKLWV4dGVybiBpbnQgcHBf c211N190aGVybWFsX2luaXRpYWxpemUoc3RydWN0IHBwX2h3bWdyICpod21ncik7Ci1leHRlcm4g dm9pZCBwcF9zbXU3X3RoZXJtYWxfZmluaShzdHJ1Y3QgcHBfaHdtZ3IgKmh3bWdyKTsKIGV4dGVy biBpbnQgc211N190aGVybWFsX2N0cmxfdW5pbml0aWFsaXplX3RoZXJtYWxfY29udHJvbGxlcihz dHJ1Y3QgcHBfaHdtZ3IgKmh3bWdyKTsKIGV4dGVybiBpbnQgc211N19mYW5fY3RybF9zZXRfZmFu X3NwZWVkX3JwbShzdHJ1Y3QgcHBfaHdtZ3IgKmh3bWdyLCB1aW50MzJfdCBzcGVlZCk7CiBleHRl cm4gaW50IHNtdTdfZmFuX2N0cmxfZ2V0X2Zhbl9zcGVlZF9ycG0oc3RydWN0IHBwX2h3bWdyICpo d21nciwgdWludDMyX3QgKnNwZWVkKTsKIGV4dGVybiBpbnQgc211N19mYW5fY3RybF9zdG9wX3Nt Y19mYW5fY29udHJvbChzdHJ1Y3QgcHBfaHdtZ3IgKmh3bWdyKTsKLWV4dGVybiBpbnQgc211N190 aGVybWFsX2VuYWJsZV9hbGVydChzdHJ1Y3QgcHBfaHdtZ3IgKmh3bWdyKTsKIGV4dGVybiBpbnQg c211N190aGVybWFsX2Rpc2FibGVfYWxlcnQoc3RydWN0IHBwX2h3bWdyICpod21ncik7CiBleHRl cm4gaW50IHNtdTdfZmFuX2N0cmxfc3RhcnRfc21jX2Zhbl9jb250cm9sKHN0cnVjdCBwcF9od21n ciAqaHdtZ3IpOworZXh0ZXJuIGludCBzbXU3X3N0YXJ0X3RoZXJtYWxfY29udHJvbGxlcihzdHJ1 Y3QgcHBfaHdtZ3IgKmh3bWdyLAorCQkJCXN0cnVjdCBQUF9UZW1wZXJhdHVyZVJhbmdlICp0ZW1w ZXJhdHVyZV9yYW5nZSk7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2Ft ZC9wb3dlcnBsYXkvaHdtZ3IvdmVnYTEwX2h3bWdyLmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL3Bv d2VycGxheS9od21nci92ZWdhMTBfaHdtZ3IuYwppbmRleCA1MTEwMDg2Li5lNWY1MzBiIDEwMDY0 NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL3Bvd2VycGxheS9od21nci92ZWdhMTBfaHdtZ3Iu YworKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL3Bvd2VycGxheS9od21nci92ZWdhMTBfaHdtZ3Iu YwpAQCAtNTExNiw2ICs1MTE2LDYgQEAgaW50IHZlZ2ExMF9od21ncl9pbml0KHN0cnVjdCBwcF9o d21nciAqaHdtZ3IpCiB7CiAJaHdtZ3ItPmh3bWdyX2Z1bmMgPSAmdmVnYTEwX2h3bWdyX2Z1bmNz OwogCWh3bWdyLT5wcHRhYmxlX2Z1bmMgPSAmdmVnYTEwX3BwdGFibGVfZnVuY3M7Ci0JcHBfdmVn YTEwX3RoZXJtYWxfaW5pdGlhbGl6ZShod21ncik7CisKIAlyZXR1cm4gMDsKIH0KZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvcG93ZXJwbGF5L2h3bWdyL3ZlZ2ExMF90aGVybWFsLmMg Yi9kcml2ZXJzL2dwdS9kcm0vYW1kL3Bvd2VycGxheS9od21nci92ZWdhMTBfdGhlcm1hbC5jCmlu ZGV4IGQ4NTUxYWUuLjQyMzhmZDQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvcG93 ZXJwbGF5L2h3bWdyL3ZlZ2ExMF90aGVybWFsLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9w b3dlcnBsYXkvaHdtZ3IvdmVnYTEwX3RoZXJtYWwuYwpAQCAtNTU0LDggKzU1NCw3IEBAIGludCB2 ZWdhMTBfdGhlcm1hbF9zdG9wX3RoZXJtYWxfY29udHJvbGxlcihzdHJ1Y3QgcHBfaHdtZ3IgKmh3 bWdyKQogKiBAcGFyYW0gICAgUmVzdWx0IHRoZSBsYXN0IGZhaWx1cmUgY29kZQogKiBAcmV0dXJu ICAgcmVzdWx0IGZyb20gc2V0IHRlbXBlcmF0dXJlIHJhbmdlIHJvdXRpbmUKICovCi1pbnQgdGZf dmVnYTEwX3RoZXJtYWxfc2V0dXBfZmFuX3RhYmxlKHN0cnVjdCBwcF9od21nciAqaHdtZ3IsCi0J CXZvaWQgKmlucHV0LCB2b2lkICpvdXRwdXQsIHZvaWQgKnN0b3JhZ2UsIGludCByZXN1bHQpCitp bnQgdmVnYTEwX3RoZXJtYWxfc2V0dXBfZmFuX3RhYmxlKHN0cnVjdCBwcF9od21nciAqaHdtZ3Ip CiB7CiAJaW50IHJldDsKIAlzdHJ1Y3QgdmVnYTEwX2h3bWdyICpkYXRhID0gKHN0cnVjdCB2ZWdh MTBfaHdtZ3IgKikoaHdtZ3ItPmJhY2tlbmQpOwpAQCAtNjE5LDggKzYxOCw3IEBAIGludCB0Zl92 ZWdhMTBfdGhlcm1hbF9zZXR1cF9mYW5fdGFibGUoc3RydWN0IHBwX2h3bWdyICpod21nciwKICog QHBhcmFtICAgIFJlc3VsdCB0aGUgbGFzdCBmYWlsdXJlIGNvZGUKICogQHJldHVybiAgIHJlc3Vs dCBmcm9tIHNldCB0ZW1wZXJhdHVyZSByYW5nZSByb3V0aW5lCiAqLwotaW50IHRmX3ZlZ2ExMF90 aGVybWFsX3N0YXJ0X3NtY19mYW5fY29udHJvbChzdHJ1Y3QgcHBfaHdtZ3IgKmh3bWdyLAotCQl2 b2lkICppbnB1dCwgdm9pZCAqb3V0cHV0LCB2b2lkICpzdG9yYWdlLCBpbnQgcmVzdWx0KQoraW50 IHZlZ2ExMF90aGVybWFsX3N0YXJ0X3NtY19mYW5fY29udHJvbChzdHJ1Y3QgcHBfaHdtZ3IgKmh3 bWdyKQogewogLyogSWYgdGhlIGZhbnRhYmxlIHNldHVwIGhhcyBmYWlsZWQgd2UgY291bGQgaGF2 ZSBkaXNhYmxlZAogICogUEhNX1BsYXRmb3JtQ2Fwc19NaWNyb2NvZGVGYW5Db250cm9sIGV2ZW4g YWZ0ZXIKQEAgLTYzNSwxMDcgKzYzMywzNyBAQCBpbnQgdGZfdmVnYTEwX3RoZXJtYWxfc3RhcnRf c21jX2Zhbl9jb250cm9sKHN0cnVjdCBwcF9od21nciAqaHdtZ3IsCiAJcmV0dXJuIDA7CiB9CiAK LS8qKgotKiBTZXQgdGVtcGVyYXR1cmUgcmFuZ2UgZm9yIGhpZ2ggYW5kIGxvdyBhbGVydHMKLSog QHBhcmFtICAgIGh3bWdyICB0aGUgYWRkcmVzcyBvZiB0aGUgcG93ZXJwbGF5IGhhcmR3YXJlIG1h bmFnZXIuCi0qIEBwYXJhbSAgICBwSW5wdXQgdGhlIHBvaW50ZXIgdG8gaW5wdXQgZGF0YQotKiBA cGFyYW0gICAgcE91dHB1dCB0aGUgcG9pbnRlciB0byBvdXRwdXQgZGF0YQotKiBAcGFyYW0gICAg cFN0b3JhZ2UgdGhlIHBvaW50ZXIgdG8gdGVtcG9yYXJ5IHN0b3JhZ2UKLSogQHBhcmFtICAgIFJl c3VsdCB0aGUgbGFzdCBmYWlsdXJlIGNvZGUKLSogQHJldHVybiAgIHJlc3VsdCBmcm9tIHNldCB0 ZW1wZXJhdHVyZSByYW5nZSByb3V0aW5lCi0qLwotaW50IHRmX3ZlZ2ExMF90aGVybWFsX3NldF90 ZW1wZXJhdHVyZV9yYW5nZShzdHJ1Y3QgcHBfaHdtZ3IgKmh3bWdyLAotCQl2b2lkICppbnB1dCwg dm9pZCAqb3V0cHV0LCB2b2lkICpzdG9yYWdlLCBpbnQgcmVzdWx0KQorCitpbnQgdmVnYTEwX3N0 YXJ0X3RoZXJtYWxfY29udHJvbGxlcihzdHJ1Y3QgcHBfaHdtZ3IgKmh3bWdyLAorCQkJCXN0cnVj dCBQUF9UZW1wZXJhdHVyZVJhbmdlICpyYW5nZSkKIHsKLQlzdHJ1Y3QgUFBfVGVtcGVyYXR1cmVS YW5nZSAqcmFuZ2UgPSAoc3RydWN0IFBQX1RlbXBlcmF0dXJlUmFuZ2UgKilpbnB1dDsKKwlpbnQg cmV0ID0gMDsKIAogCWlmIChyYW5nZSA9PSBOVUxMKQogCQlyZXR1cm4gLUVJTlZBTDsKIAotCXJl dHVybiB2ZWdhMTBfdGhlcm1hbF9zZXRfdGVtcGVyYXR1cmVfcmFuZ2UoaHdtZ3IsIHJhbmdlKTsK LX0KLQotLyoqCi0qIFByb2dyYW1zIG9uZS10aW1lIHNldHRpbmcgcmVnaXN0ZXJzCi0qIEBwYXJh bSAgICBod21nciAgdGhlIGFkZHJlc3Mgb2YgdGhlIHBvd2VycGxheSBoYXJkd2FyZSBtYW5hZ2Vy LgotKiBAcGFyYW0gICAgcElucHV0IHRoZSBwb2ludGVyIHRvIGlucHV0IGRhdGEKLSogQHBhcmFt ICAgIHBPdXRwdXQgdGhlIHBvaW50ZXIgdG8gb3V0cHV0IGRhdGEKLSogQHBhcmFtICAgIHBTdG9y YWdlIHRoZSBwb2ludGVyIHRvIHRlbXBvcmFyeSBzdG9yYWdlCi0qIEBwYXJhbSAgICBSZXN1bHQg dGhlIGxhc3QgZmFpbHVyZSBjb2RlCi0qIEByZXR1cm4gICByZXN1bHQgZnJvbSBpbml0aWFsaXpl IHRoZXJtYWwgY29udHJvbGxlciByb3V0aW5lCi0qLwotaW50IHRmX3ZlZ2ExMF90aGVybWFsX2lu aXRpYWxpemUoc3RydWN0IHBwX2h3bWdyICpod21nciwKLQkJdm9pZCAqaW5wdXQsIHZvaWQgKm91 dHB1dCwgdm9pZCAqc3RvcmFnZSwgaW50IHJlc3VsdCkKLXsKLQlyZXR1cm4gdmVnYTEwX3RoZXJt YWxfaW5pdGlhbGl6ZShod21ncik7Ci19Ci0KLS8qKgotKiBFbmFibGUgaGlnaCBhbmQgbG93IGFs ZXJ0cwotKiBAcGFyYW0gICAgaHdtZ3IgIHRoZSBhZGRyZXNzIG9mIHRoZSBwb3dlcnBsYXkgaGFy ZHdhcmUgbWFuYWdlci4KLSogQHBhcmFtICAgIHBJbnB1dCB0aGUgcG9pbnRlciB0byBpbnB1dCBk YXRhCi0qIEBwYXJhbSAgICBwT3V0cHV0IHRoZSBwb2ludGVyIHRvIG91dHB1dCBkYXRhCi0qIEBw YXJhbSAgICBwU3RvcmFnZSB0aGUgcG9pbnRlciB0byB0ZW1wb3Jhcnkgc3RvcmFnZQotKiBAcGFy YW0gICAgUmVzdWx0IHRoZSBsYXN0IGZhaWx1cmUgY29kZQotKiBAcmV0dXJuICAgcmVzdWx0IGZy b20gZW5hYmxlIGFsZXJ0IHJvdXRpbmUKLSovCi1pbnQgdGZfdmVnYTEwX3RoZXJtYWxfZW5hYmxl X2FsZXJ0KHN0cnVjdCBwcF9od21nciAqaHdtZ3IsCi0JCXZvaWQgKmlucHV0LCB2b2lkICpvdXRw dXQsIHZvaWQgKnN0b3JhZ2UsIGludCByZXN1bHQpCi17Ci0JcmV0dXJuIHZlZ2ExMF90aGVybWFs X2VuYWJsZV9hbGVydChod21ncik7Ci19Ci0KLS8qKgotKiBEaXNhYmxlIGhpZ2ggYW5kIGxvdyBh bGVydHMKLSogQHBhcmFtICAgIGh3bWdyICB0aGUgYWRkcmVzcyBvZiB0aGUgcG93ZXJwbGF5IGhh cmR3YXJlIG1hbmFnZXIuCi0qIEBwYXJhbSAgICBwSW5wdXQgdGhlIHBvaW50ZXIgdG8gaW5wdXQg ZGF0YQotKiBAcGFyYW0gICAgcE91dHB1dCB0aGUgcG9pbnRlciB0byBvdXRwdXQgZGF0YQotKiBA cGFyYW0gICAgcFN0b3JhZ2UgdGhlIHBvaW50ZXIgdG8gdGVtcG9yYXJ5IHN0b3JhZ2UKLSogQHBh cmFtICAgIFJlc3VsdCB0aGUgbGFzdCBmYWlsdXJlIGNvZGUKLSogQHJldHVybiAgIHJlc3VsdCBm cm9tIGRpc2FibGUgYWxlcnQgcm91dGluZQotKi8KLXN0YXRpYyBpbnQgdGZfdmVnYTEwX3RoZXJt YWxfZGlzYWJsZV9hbGVydChzdHJ1Y3QgcHBfaHdtZ3IgKmh3bWdyLAotCQl2b2lkICppbnB1dCwg dm9pZCAqb3V0cHV0LCB2b2lkICpzdG9yYWdlLCBpbnQgcmVzdWx0KQotewotCXJldHVybiB2ZWdh MTBfdGhlcm1hbF9kaXNhYmxlX2FsZXJ0KGh3bWdyKTsKLX0KKwl2ZWdhMTBfdGhlcm1hbF9pbml0 aWFsaXplKGh3bWdyKTsKKwlyZXQgPSB2ZWdhMTBfdGhlcm1hbF9zZXRfdGVtcGVyYXR1cmVfcmFu Z2UoaHdtZ3IsIHJhbmdlKTsKKwlpZiAocmV0KQorCQlyZXR1cm4gLUVJTlZBTDsKIAotc3RhdGlj IHN0cnVjdCBwaG1fbWFzdGVyX3RhYmxlX2l0ZW0KLXZlZ2ExMF90aGVybWFsX3N0YXJ0X3RoZXJt YWxfY29udHJvbGxlcl9tYXN0ZXJfbGlzdFtdID0gewotCXsgLnRhYmxlRnVuY3Rpb24gPSB0Zl92 ZWdhMTBfdGhlcm1hbF9pbml0aWFsaXplIH0sCi0JeyAudGFibGVGdW5jdGlvbiA9IHRmX3ZlZ2Ex MF90aGVybWFsX3NldF90ZW1wZXJhdHVyZV9yYW5nZSB9LAotCXsgLnRhYmxlRnVuY3Rpb24gPSB0 Zl92ZWdhMTBfdGhlcm1hbF9lbmFibGVfYWxlcnQgfSwKKwl2ZWdhMTBfdGhlcm1hbF9lbmFibGVf YWxlcnQoaHdtZ3IpOwogLyogV2Ugc2hvdWxkIHJlc3RyaWN0IHBlcmZvcm1hbmNlIGxldmVscyB0 byBsb3cgYmVmb3JlIHdlIGhhbHQgdGhlIFNNQy4KICAqIE9uIHRoZSBvdGhlciBoYW5kIHdlIGFy ZSBzdGlsbCBpbiBib290IHN0YXRlIHdoZW4gd2UgZG8gdGhpcwogICogc28gaXQgd291bGQgYmUg cG9pbnRsZXNzLgogICogSWYgdGhpcyBhc3N1bXB0aW9uIGNoYW5nZXMgd2UgaGF2ZSB0byByZXZp c2l0IHRoaXMgdGFibGUuCiAgKi8KLQl7IC50YWJsZUZ1bmN0aW9uID0gdGZfdmVnYTEwX3RoZXJt YWxfc2V0dXBfZmFuX3RhYmxlIH0sCi0JeyAudGFibGVGdW5jdGlvbiA9IHRmX3ZlZ2ExMF90aGVy bWFsX3N0YXJ0X3NtY19mYW5fY29udHJvbCB9LAotCXsgfQotfTsKKwlyZXQgPSB2ZWdhMTBfdGhl cm1hbF9zZXR1cF9mYW5fdGFibGUoaHdtZ3IpOworCWlmIChyZXQpCisJCXJldHVybiAtRUlOVkFM OwogCi1zdGF0aWMgc3RydWN0IHBobV9tYXN0ZXJfdGFibGVfaGVhZGVyCi12ZWdhMTBfdGhlcm1h bF9zdGFydF90aGVybWFsX2NvbnRyb2xsZXJfbWFzdGVyID0gewotCTAsCi0JUEhNX01hc3RlclRh YmxlRmxhZ19Ob25lLAotCXZlZ2ExMF90aGVybWFsX3N0YXJ0X3RoZXJtYWxfY29udHJvbGxlcl9t YXN0ZXJfbGlzdAotfTsKKwl2ZWdhMTBfdGhlcm1hbF9zdGFydF9zbWNfZmFuX2NvbnRyb2woaHdt Z3IpOwogCi1zdGF0aWMgc3RydWN0IHBobV9tYXN0ZXJfdGFibGVfaXRlbQotdmVnYTEwX3RoZXJt YWxfc2V0X3RlbXBlcmF0dXJlX3JhbmdlX21hc3Rlcl9saXN0W10gPSB7Ci0JeyAudGFibGVGdW5j dGlvbiA9IHRmX3ZlZ2ExMF90aGVybWFsX2Rpc2FibGVfYWxlcnQgfSwKLQl7IC50YWJsZUZ1bmN0 aW9uID0gdGZfdmVnYTEwX3RoZXJtYWxfc2V0X3RlbXBlcmF0dXJlX3JhbmdlIH0sCi0JeyAudGFi bGVGdW5jdGlvbiA9IHRmX3ZlZ2ExMF90aGVybWFsX2VuYWJsZV9hbGVydCB9LAotCXsgfQorCXJl dHVybiAwOwogfTsKIAotc3RydWN0IHBobV9tYXN0ZXJfdGFibGVfaGVhZGVyCi12ZWdhMTBfdGhl cm1hbF9zZXRfdGVtcGVyYXR1cmVfcmFuZ2VfbWFzdGVyID0gewotCTAsCi0JUEhNX01hc3RlclRh YmxlRmxhZ19Ob25lLAotCXZlZ2ExMF90aGVybWFsX3NldF90ZW1wZXJhdHVyZV9yYW5nZV9tYXN0 ZXJfbGlzdAotfTsKKworCiAKIGludCB2ZWdhMTBfdGhlcm1hbF9jdHJsX3VuaW5pdGlhbGl6ZV90 aGVybWFsX2NvbnRyb2xsZXIoc3RydWN0IHBwX2h3bWdyICpod21ncikKIHsKQEAgLTc0NSwzMiAr NjczLDMgQEAgaW50IHZlZ2ExMF90aGVybWFsX2N0cmxfdW5pbml0aWFsaXplX3RoZXJtYWxfY29u dHJvbGxlcihzdHJ1Y3QgcHBfaHdtZ3IgKmh3bWdyKQogCX0KIAlyZXR1cm4gMDsKIH0KLQotLyoq Ci0qIEluaXRpYWxpemVzIHRoZSB0aGVybWFsIGNvbnRyb2xsZXIgcmVsYXRlZCBmdW5jdGlvbnMK LSogaW4gdGhlIEhhcmR3YXJlIE1hbmFnZXIgc3RydWN0dXJlLgotKiBAcGFyYW0gICAgaHdtZ3Ig VGhlIGFkZHJlc3Mgb2YgdGhlIGhhcmR3YXJlIG1hbmFnZXIuCi0qIEBleGNlcHRpb24gQW55IGVy cm9yIGNvZGUgZnJvbSB0aGUgbG93LWxldmVsIGNvbW11bmljYXRpb24uCi0qLwotaW50IHBwX3Zl Z2ExMF90aGVybWFsX2luaXRpYWxpemUoc3RydWN0IHBwX2h3bWdyICpod21ncikKLXsKLQlpbnQg cmVzdWx0OwotCi0JcmVzdWx0ID0gcGhtX2NvbnN0cnVjdF90YWJsZShod21nciwKLQkJCSZ2ZWdh MTBfdGhlcm1hbF9zZXRfdGVtcGVyYXR1cmVfcmFuZ2VfbWFzdGVyLAotCQkJJihod21nci0+c2V0 X3RlbXBlcmF0dXJlX3JhbmdlKSk7Ci0KLQlpZiAoIXJlc3VsdCkgewotCQlyZXN1bHQgPSBwaG1f Y29uc3RydWN0X3RhYmxlKGh3bWdyLAotCQkJCSZ2ZWdhMTBfdGhlcm1hbF9zdGFydF90aGVybWFs X2NvbnRyb2xsZXJfbWFzdGVyLAotCQkJCSYoaHdtZ3ItPnN0YXJ0X3RoZXJtYWxfY29udHJvbGxl cikpOwotCQlpZiAocmVzdWx0KQotCQkJcGhtX2Rlc3Ryb3lfdGFibGUoaHdtZ3IsCi0JCQkJCSYo aHdtZ3ItPnNldF90ZW1wZXJhdHVyZV9yYW5nZSkpOwotCX0KLQotCWlmICghcmVzdWx0KQotCQlo d21nci0+ZmFuX2N0cmxfaXNfaW5fZGVmYXVsdF9tb2RlID0gdHJ1ZTsKLQlyZXR1cm4gcmVzdWx0 OwotfQotCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL3Bvd2VycGxheS9od21nci92 ZWdhMTBfdGhlcm1hbC5oIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9wb3dlcnBsYXkvaHdtZ3IvdmVn YTEwX3RoZXJtYWwuaAppbmRleCA3NzZmM2EyLi5mMzRjZTA0IDEwMDY0NAotLS0gYS9kcml2ZXJz L2dwdS9kcm0vYW1kL3Bvd2VycGxheS9od21nci92ZWdhMTBfdGhlcm1hbC5oCisrKyBiL2RyaXZl cnMvZ3B1L2RybS9hbWQvcG93ZXJwbGF5L2h3bWdyL3ZlZ2ExMF90aGVybWFsLmgKQEAgLTUwLDEz ICs1MCw2IEBAIHN0cnVjdCB2ZWdhMTBfdGVtcGVyYXR1cmUgewogI2RlZmluZSBGRE9fUFdNX01P REVfU1RBVElDX1JQTSA1CiAKIAotZXh0ZXJuIGludCB0Zl92ZWdhMTBfdGhlcm1hbF9pbml0aWFs aXplKHN0cnVjdCBwcF9od21nciAqaHdtZ3IsCi0JCXZvaWQgKmlucHV0LCB2b2lkICpvdXRwdXQs IHZvaWQgKnN0b3JhZ2UsIGludCByZXN1bHQpOwotZXh0ZXJuIGludCB0Zl92ZWdhMTBfdGhlcm1h bF9zZXRfdGVtcGVyYXR1cmVfcmFuZ2Uoc3RydWN0IHBwX2h3bWdyICpod21nciwKLQkJdm9pZCAq aW5wdXQsIHZvaWQgKm91dHB1dCwgdm9pZCAqc3RvcmFnZSwgaW50IHJlc3VsdCk7Ci1leHRlcm4g aW50IHRmX3ZlZ2ExMF90aGVybWFsX2VuYWJsZV9hbGVydChzdHJ1Y3QgcHBfaHdtZ3IgKmh3bWdy LAotCQl2b2lkICppbnB1dCwgdm9pZCAqb3V0cHV0LCB2b2lkICpzdG9yYWdlLCBpbnQgcmVzdWx0 KTsKLQogZXh0ZXJuIGludCB2ZWdhMTBfdGhlcm1hbF9nZXRfdGVtcGVyYXR1cmUoc3RydWN0IHBw X2h3bWdyICpod21ncik7CiBleHRlcm4gaW50IHZlZ2ExMF90aGVybWFsX3N0b3BfdGhlcm1hbF9j b250cm9sbGVyKHN0cnVjdCBwcF9od21nciAqaHdtZ3IpOwogZXh0ZXJuIGludCB2ZWdhMTBfZmFu X2N0cmxfZ2V0X2Zhbl9zcGVlZF9pbmZvKHN0cnVjdCBwcF9od21nciAqaHdtZ3IsCkBAIC02OSw3 ICs2Miw2IEBAIGV4dGVybiBpbnQgdmVnYTEwX2Zhbl9jdHJsX3NldF9zdGF0aWNfbW9kZShzdHJ1 Y3QgcHBfaHdtZ3IgKmh3bWdyLAogZXh0ZXJuIGludCB2ZWdhMTBfZmFuX2N0cmxfc2V0X2Zhbl9z cGVlZF9wZXJjZW50KHN0cnVjdCBwcF9od21nciAqaHdtZ3IsCiAJCXVpbnQzMl90IHNwZWVkKTsK IGV4dGVybiBpbnQgdmVnYTEwX2Zhbl9jdHJsX3Jlc2V0X2Zhbl9zcGVlZF90b19kZWZhdWx0KHN0 cnVjdCBwcF9od21nciAqaHdtZ3IpOwotZXh0ZXJuIGludCBwcF92ZWdhMTBfdGhlcm1hbF9pbml0 aWFsaXplKHN0cnVjdCBwcF9od21nciAqaHdtZ3IpOwogZXh0ZXJuIGludCB2ZWdhMTBfdGhlcm1h bF9jdHJsX3VuaW5pdGlhbGl6ZV90aGVybWFsX2NvbnRyb2xsZXIoCiAJCXN0cnVjdCBwcF9od21n ciAqaHdtZ3IpOwogZXh0ZXJuIGludCB2ZWdhMTBfZmFuX2N0cmxfc2V0X2Zhbl9zcGVlZF9ycG0o c3RydWN0IHBwX2h3bWdyICpod21nciwKQEAgLTc3LDkgKzY5LDEwIEBAIGV4dGVybiBpbnQgdmVn YTEwX2Zhbl9jdHJsX3NldF9mYW5fc3BlZWRfcnBtKHN0cnVjdCBwcF9od21nciAqaHdtZ3IsCiBl eHRlcm4gaW50IHZlZ2ExMF9mYW5fY3RybF9nZXRfZmFuX3NwZWVkX3JwbShzdHJ1Y3QgcHBfaHdt Z3IgKmh3bWdyLAogCQl1aW50MzJfdCAqc3BlZWQpOwogZXh0ZXJuIGludCB2ZWdhMTBfZmFuX2N0 cmxfc3RvcF9zbWNfZmFuX2NvbnRyb2woc3RydWN0IHBwX2h3bWdyICpod21ncik7Ci1leHRlcm4g dWludDMyX3Qgc211N19nZXRfeGNsayhzdHJ1Y3QgcHBfaHdtZ3IgKmh3bWdyKTsKIGV4dGVybiBp bnQgdmVnYTEwX3RoZXJtYWxfZGlzYWJsZV9hbGVydChzdHJ1Y3QgcHBfaHdtZ3IgKmh3bWdyKTsK LWludCB2ZWdhMTBfZmFuX2N0cmxfc3RhcnRfc21jX2Zhbl9jb250cm9sKHN0cnVjdCBwcF9od21n ciAqaHdtZ3IpOworZXh0ZXJuIGludCB2ZWdhMTBfZmFuX2N0cmxfc3RhcnRfc21jX2Zhbl9jb250 cm9sKHN0cnVjdCBwcF9od21nciAqaHdtZ3IpOworCitleHRlcm4gdWludDMyX3Qgc211N19nZXRf eGNsayhzdHJ1Y3QgcHBfaHdtZ3IgKmh3bWdyKTsKIAogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9hbWQvcG93ZXJwbGF5L2luYy9od21nci5oIGIvZHJpdmVycy9ncHUvZHJt L2FtZC9wb3dlcnBsYXkvaW5jL2h3bWdyLmgKaW5kZXggM2JiZTdkNS4uODMxYWRkNCAxMDA2NDQK LS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9wb3dlcnBsYXkvaW5jL2h3bWdyLmgKKysrIGIvZHJp dmVycy9ncHUvZHJtL2FtZC9wb3dlcnBsYXkvaW5jL2h3bWdyLmgKQEAgLTM4MCw2ICszODAsNyBA QCBzdHJ1Y3QgcHBfaHdtZ3JfZnVuYyB7CiAJaW50ICgqZGlzYWJsZV9zbWNfZmlybXdhcmVfY3Rm KShzdHJ1Y3QgcHBfaHdtZ3IgKmh3bWdyKTsKIAlpbnQgKCpzZXRfYWN0aXZlX2Rpc3BsYXlfY291 bnQpKHN0cnVjdCBwcF9od21nciAqaHdtZ3IsIHVpbnQzMl90IGNvdW50KTsKIAlpbnQgKCpzZXRf ZGVlcF9zbGVlcF9kY2VmY2xrKShzdHJ1Y3QgcHBfaHdtZ3IgKmh3bWdyLCB1aW50MzJfdCBjbG9j ayk7CisJaW50ICgqc3RhcnRfdGhlcm1hbF9jb250cm9sbGVyKShzdHJ1Y3QgcHBfaHdtZ3IgKmh3 bWdyLCBzdHJ1Y3QgUFBfVGVtcGVyYXR1cmVSYW5nZSAqcmFuZ2UpOwogfTsKIAogc3RydWN0IHBw X3RhYmxlX2Z1bmMgewpAQCAtNzY2LDggKzc2Nyw2IEBAIHN0cnVjdCBwcF9od21nciB7CiAJc3Ry dWN0IHBobV9ydW50aW1lX3RhYmxlX2hlYWRlciBzZXRfcG93ZXJfc3RhdGU7CiAJc3RydWN0IHBo bV9ydW50aW1lX3RhYmxlX2hlYWRlciBlbmFibGVfY2xvY2tfcG93ZXJfZ2F0aW5nczsKIAlzdHJ1 Y3QgcGhtX3J1bnRpbWVfdGFibGVfaGVhZGVyIGRpc3BsYXlfY29uZmlndXJhdGlvbl9jaGFuZ2Vk OwotCXN0cnVjdCBwaG1fcnVudGltZV90YWJsZV9oZWFkZXIgc3RhcnRfdGhlcm1hbF9jb250cm9s bGVyOwotCXN0cnVjdCBwaG1fcnVudGltZV90YWJsZV9oZWFkZXIgc2V0X3RlbXBlcmF0dXJlX3Jh bmdlOwogCWNvbnN0IHN0cnVjdCBwcF9od21ncl9mdW5jICpod21ncl9mdW5jOwogCWNvbnN0IHN0 cnVjdCBwcF90YWJsZV9mdW5jICpwcHRhYmxlX2Z1bmM7CiAJc3RydWN0IHBwX3Bvd2VyX3N0YXRl ICAgICpwczsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvcG93ZXJwbGF5L2luYy9z bXVtZ3IuaCBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvcG93ZXJwbGF5L2luYy9zbXVtZ3IuaAppbmRl eCA1ZDYxY2M5Li5lYjY2MDkxIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL3Bvd2Vy cGxheS9pbmMvc211bWdyLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9wb3dlcnBsYXkvaW5j L3NtdW1nci5oCkBAIC0xODYsMTAgKzE4Niw4IEBAIGV4dGVybiBpbnQgc211X2FsbG9jYXRlX21l bW9yeSh2b2lkICpkZXZpY2UsIHVpbnQzMl90IHNpemUsCiAKIGV4dGVybiBpbnQgc211bV91cGRh dGVfc21jX3RhYmxlKHN0cnVjdCBwcF9od21nciAqaHdtZ3IsIHVpbnQzMl90IHR5cGUpOwogZXh0 ZXJuIGludCBzbXVtX3Byb2Nlc3NfZmlybXdhcmVfaGVhZGVyKHN0cnVjdCBwcF9od21nciAqaHdt Z3IpOwotZXh0ZXJuIGludCBzbXVtX3RoZXJtYWxfYXZmc19lbmFibGUoc3RydWN0IHBwX2h3bWdy ICpod21nciwKLQkJdm9pZCAqaW5wdXQsIHZvaWQgKm91dHB1dCwgdm9pZCAqc3RvcmFnZSwgaW50 IHJlc3VsdCk7Ci1leHRlcm4gaW50IHNtdW1fdGhlcm1hbF9zZXR1cF9mYW5fdGFibGUoc3RydWN0 IHBwX2h3bWdyICpod21nciwKLQkJdm9pZCAqaW5wdXQsIHZvaWQgKm91dHB1dCwgdm9pZCAqc3Rv cmFnZSwgaW50IHJlc3VsdCk7CitleHRlcm4gaW50IHNtdW1fdGhlcm1hbF9hdmZzX2VuYWJsZShz dHJ1Y3QgcHBfaHdtZ3IgKmh3bWdyKTsKK2V4dGVybiBpbnQgc211bV90aGVybWFsX3NldHVwX2Zh bl90YWJsZShzdHJ1Y3QgcHBfaHdtZ3IgKmh3bWdyKTsKIGV4dGVybiBpbnQgc211bV9pbml0X3Nt Y190YWJsZShzdHJ1Y3QgcHBfaHdtZ3IgKmh3bWdyKTsKIGV4dGVybiBpbnQgc211bV9wb3B1bGF0 ZV9hbGxfZ3JhcGhpY19sZXZlbHMoc3RydWN0IHBwX2h3bWdyICpod21ncik7CiBleHRlcm4gaW50 IHNtdW1fcG9wdWxhdGVfYWxsX21lbW9yeV9sZXZlbHMoc3RydWN0IHBwX2h3bWdyICpod21ncik7 CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL3Bvd2VycGxheS9zbXVtZ3Ivc211bWdy LmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL3Bvd2VycGxheS9zbXVtZ3Ivc211bWdyLmMKaW5kZXgg ZjYyYzg3NS4uNmRlOTJjYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9wb3dlcnBs YXkvc211bWdyL3NtdW1nci5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvcG93ZXJwbGF5L3Nt dW1nci9zbXVtZ3IuYwpAQCAtMTEzLDggKzExMyw3IEBAIGludCBzbXVtX2Vhcmx5X2luaXQoc3Ry dWN0IHBwX2luc3RhbmNlICpoYW5kbGUpCiAJcmV0dXJuIDA7CiB9CiAKLWludCBzbXVtX3RoZXJt YWxfYXZmc19lbmFibGUoc3RydWN0IHBwX2h3bWdyICpod21nciwKLQkJdm9pZCAqaW5wdXQsIHZv aWQgKm91dHB1dCwgdm9pZCAqc3RvcmFnZSwgaW50IHJlc3VsdCkKK2ludCBzbXVtX3RoZXJtYWxf YXZmc19lbmFibGUoc3RydWN0IHBwX2h3bWdyICpod21ncikKIHsKIAlpZiAoTlVMTCAhPSBod21n ci0+c211bWdyLT5zbXVtZ3JfZnVuY3MtPnRoZXJtYWxfYXZmc19lbmFibGUpCiAJCXJldHVybiBo d21nci0+c211bWdyLT5zbXVtZ3JfZnVuY3MtPnRoZXJtYWxfYXZmc19lbmFibGUoaHdtZ3IpOwpA QCAtMTIyLDggKzEyMSw3IEBAIGludCBzbXVtX3RoZXJtYWxfYXZmc19lbmFibGUoc3RydWN0IHBw X2h3bWdyICpod21nciwKIAlyZXR1cm4gMDsKIH0KIAotaW50IHNtdW1fdGhlcm1hbF9zZXR1cF9m YW5fdGFibGUoc3RydWN0IHBwX2h3bWdyICpod21nciwKLQkJdm9pZCAqaW5wdXQsIHZvaWQgKm91 dHB1dCwgdm9pZCAqc3RvcmFnZSwgaW50IHJlc3VsdCkKK2ludCBzbXVtX3RoZXJtYWxfc2V0dXBf ZmFuX3RhYmxlKHN0cnVjdCBwcF9od21nciAqaHdtZ3IpCiB7CiAJaWYgKE5VTEwgIT0gaHdtZ3It PnNtdW1nci0+c211bWdyX2Z1bmNzLT50aGVybWFsX3NldHVwX2Zhbl90YWJsZSkKIAkJcmV0dXJu IGh3bWdyLT5zbXVtZ3ItPnNtdW1ncl9mdW5jcy0+dGhlcm1hbF9zZXR1cF9mYW5fdGFibGUoaHdt Z3IpOwotLSAKMS45LjEKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fCmFtZC1nZnggbWFpbGluZyBsaXN0CmFtZC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3Jn Cmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vYW1kLWdmeAo=