From mboxrd@z Thu Jan 1 00:00:00 1970 From: Alexandre Courbot Subject: [PATCH v2 07/14] secboot: generate HS BL descriptor in hook Date: Thu, 27 Oct 2016 13:37:01 +0900 Message-ID: <20161027043708.22538-8-acourbot@nvidia.com> References: <20161027043708.22538-1-acourbot@nvidia.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20161027043708.22538-1-acourbot-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: nouveau-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "Nouveau" To: Ben Skeggs Cc: nouveau-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org List-Id: nouveau.vger.kernel.org VXNlIHRoZSBIUyBob29rIHRvIGNvbXBsZXRlbHkgZ2VuZXJhdGUgdGhlIEhTIEJMIGRlc2NyaXB0 b3IsIHNpbWlsYXJseQp0byB3aGF0IGlzIGRvbmUgaW4gdGhlIExTIGhvb2ssIGluc3RlYWQgb2Yg KGFyYml0cmFyaWx5KSB1c2luZyB0aGUKYWNyX3YxIGZvcm1hdCBhcyBhbiBpbnRlcm1lZGlhdGUu CgpUaGlzIGFsbG93cyB1cyB0byBtYWtlIHRoZSBib290bG9hZGVyIGRlc2NyaXB0b3Igc3RydWN0 dXJlcyBwcml2YXRlIHRvCmVhY2ggaW1wbGVtZW50YXRpb24sIHJlc3VsdGluZyBpbiBhIGNsZWFu ZXIgYW4gbW9yZSBjb25zaXN0ZW50IGRlc2lnbi4KClNpZ25lZC1vZmYtYnk6IEFsZXhhbmRyZSBD b3VyYm90IDxhY291cmJvdEBudmlkaWEuY29tPgotLS0KIGRybS9ub3V2ZWF1L252a20vc3ViZGV2 L3NlY2Jvb3QvZ20yMDAuYyB8IDE3NyArKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLQog ZHJtL25vdXZlYXUvbnZrbS9zdWJkZXYvc2VjYm9vdC9nbTIwYi5jIHwgIDQzICsrKy0tLS0tCiBk cm0vbm91dmVhdS9udmttL3N1YmRldi9zZWNib290L3ByaXYuaCAgfCAgNzEgKysrKysrKy0tLS0t LQogMyBmaWxlcyBjaGFuZ2VkLCAxMzcgaW5zZXJ0aW9ucygrKSwgMTU0IGRlbGV0aW9ucygtKQoK ZGlmZiAtLWdpdCBhL2RybS9ub3V2ZWF1L252a20vc3ViZGV2L3NlY2Jvb3QvZ20yMDAuYyBiL2Ry bS9ub3V2ZWF1L252a20vc3ViZGV2L3NlY2Jvb3QvZ20yMDAuYwppbmRleCA4NTcxYTRiNGQ1NmMu LjZmNDU3MDZmODU5OCAxMDA2NDQKLS0tIGEvZHJtL25vdXZlYXUvbnZrbS9zdWJkZXYvc2VjYm9v dC9nbTIwMC5jCisrKyBiL2RybS9ub3V2ZWF1L252a20vc3ViZGV2L3NlY2Jvb3QvZ20yMDAuYwpA QCAtMTc0LDIxICsxNzQsNDUgQEAgc3RydWN0IGhzZl9md19oZWFkZXIgewogCXUzMiBoZHJfc2l6 ZTsKIH07CiAKKwogLyoqCi0gKiBzdHJ1Y3QgaHNmX2xvYWRfaGVhZGVyIC0gSFMgZmlybXdhcmUg bG9hZCBoZWFkZXIKKyAqIHN0cnVjdCBnbTIwMF9mbGNuX2JsX2Rlc2MgLSBETUVNIGJvb3Rsb2Fk ZXIgZGVzY3JpcHRvcgorICogQHNpZ25hdHVyZToJCTE2QiBzaWduYXR1cmUgZm9yIHNlY3VyZSBj b2RlLiAwcyBpZiBubyBzZWN1cmUgY29kZQorICogQGN0eF9kbWE6CQlETUEgY29udGV4dCB0byBi ZSB1c2VkIGJ5IEJMIHdoaWxlIGxvYWRpbmcgY29kZS9kYXRhCisgKiBAY29kZV9kbWFfYmFzZToJ MjU2Qi1hbGlnbmVkIFBoeXNpY2FsIEZCIEFkZHJlc3Mgd2hlcmUgY29kZSBpcyBsb2NhdGVkCisg KgkJCShmYWxjb24ncyAkeGNiYXNlIHJlZ2lzdGVyKQorICogQG5vbl9zZWNfY29kZV9vZmY6CW9m ZnNldCBmcm9tIGNvZGVfZG1hX2Jhc2Ugd2hlcmUgdGhlIG5vbi1zZWN1cmUgY29kZSBpcworICog ICAgICAgICAgICAgICAgICAgICAgbG9jYXRlZC4gVGhlIG9mZnNldCBtdXN0IGJlIG11bHRpcGxl IG9mIDI1NiB0byBoZWxwIHBlcmYKKyAqIEBub25fc2VjX2NvZGVfc2l6ZToJdGhlIHNpemUgb2Yg dGhlIG5vblNlY3VyZSBjb2RlIHBhcnQuCisgKiBAc2VjX2NvZGVfb2ZmOglvZmZzZXQgZnJvbSBj b2RlX2RtYV9iYXNlIHdoZXJlIHRoZSBzZWN1cmUgY29kZSBpcworICogICAgICAgICAgICAgICAg ICAgICAgbG9jYXRlZC4gVGhlIG9mZnNldCBtdXN0IGJlIG11bHRpcGxlIG9mIDI1NiB0byBoZWxw IHBlcmYKKyAqIEBzZWNfY29kZV9zaXplOglvZmZzZXQgZnJvbSBjb2RlX2RtYV9iYXNlIHdoZXJl IHRoZSBzZWN1cmUgY29kZSBpcworICogICAgICAgICAgICAgICAgICAgICAgbG9jYXRlZC4gVGhl IG9mZnNldCBtdXN0IGJlIG11bHRpcGxlIG9mIDI1NiB0byBoZWxwIHBlcmYKKyAqIEBjb2RlX2Vu dHJ5X3BvaW50Ogljb2RlIGVudHJ5IHBvaW50IHdoaWNoIHdpbGwgYmUgaW52b2tlZCBieSBCTCBh ZnRlcgorICogICAgICAgICAgICAgICAgICAgICAgY29kZSBpcyBsb2FkZWQuCisgKiBAZGF0YV9k bWFfYmFzZToJMjU2QiBhbGlnbmVkIFBoeXNpY2FsIEZCIEFkZHJlc3Mgd2hlcmUgZGF0YSBpcyBs b2NhdGVkLgorICoJCQkoZmFsY29uJ3MgJHhkYmFzZSByZWdpc3RlcikKKyAqIEBkYXRhX3NpemU6 CQlzaXplIG9mIGRhdGEgYmxvY2suIFNob3VsZCBiZSBtdWx0aXBsZSBvZiAyNTZCCisgKgorICog U3RydWN0dXJlIHVzZWQgYnkgdGhlIGJvb3Rsb2FkZXIgdG8gbG9hZCB0aGUgcmVzdCBvZiB0aGUg Y29kZS4gVGhpcyBoYXMKKyAqIHRvIGJlIGZpbGxlZCBieSBob3N0IGFuZCBjb3BpZWQgaW50byBE TUVNIGF0IG9mZnNldCBwcm92aWRlZCBpbiB0aGUKKyAqIGhzZmxjbl9ibF9kZXNjLmJsX2Rlc2Nf ZG1lbV9sb2FkX29mZi4KICAqLwotc3RydWN0IGhzZl9sb2FkX2hlYWRlciB7CitzdHJ1Y3QgZ20y MDBfZmxjbl9ibF9kZXNjIHsKKwl1MzIgcmVzZXJ2ZWRbNF07CisJdTMyIHNpZ25hdHVyZVs0XTsK Kwl1MzIgY3R4X2RtYTsKKwlzdHJ1Y3QgZmxjbl91NjQgY29kZV9kbWFfYmFzZTsKIAl1MzIgbm9u X3NlY19jb2RlX29mZjsKIAl1MzIgbm9uX3NlY19jb2RlX3NpemU7Ci0JdTMyIGRhdGFfZG1hX2Jh c2U7CisJdTMyIHNlY19jb2RlX29mZjsKKwl1MzIgc2VjX2NvZGVfc2l6ZTsKKwl1MzIgY29kZV9l bnRyeV9wb2ludDsKKwlzdHJ1Y3QgZmxjbl91NjQgZGF0YV9kbWFfYmFzZTsKIAl1MzIgZGF0YV9z aXplOwotCXUzMiBudW1fYXBwczsKLQlzdHJ1Y3QgewotCQl1MzIgc2VjX2NvZGVfb2ZmOwotCQl1 MzIgc2VjX2NvZGVfc2l6ZTsKLQl9IGFwcFswXTsKIH07CiAKKwogLyoqCiAgKiBDb252ZW5pZW5j ZSBmdW5jdGlvbiB0byBkdXBsaWNhdGUgYSBmaXJtd2FyZSBmaWxlIGluIG1lbW9yeSBhbmQgY2hl Y2sgdGhhdAogICogaXQgaGFzIHRoZSByZXF1aXJlZCBtaW5pbXVtIHNpemUuCkBAIC03MzksMzkg Kzc2Myw2IEBAIGdtMjAwX3NlY2Jvb3RfaHNmX3BhdGNoX3NpZ25hdHVyZShzdHJ1Y3QgZ20yMDBf c2VjYm9vdCAqZ3NiLCB2b2lkICphY3JfaW1hZ2UpCiB9CiAKIC8qKgotICogZ20yMDBfc2VjYm9v dF9wb3B1bGF0ZV9oc2ZfYmxfZGVzYygpIC0gcG9wdWxhdGUgQkwgZGVzY3JpcHRvciBmb3IgSFMg aW1hZ2UKLSAqLwotc3RhdGljIHZvaWQKLWdtMjAwX3NlY2Jvb3RfcG9wdWxhdGVfaHNmX2JsX2Rl c2Modm9pZCAqYWNyX2ltYWdlLAotCQkJCSAgIHN0cnVjdCBnbTIwMF9mbGNuX2JsX2Rlc2MgKmJs X2Rlc2MpCi17Ci0Jc3RydWN0IGZ3X2Jpbl9oZWFkZXIgKmhzYmluX2hkciA9IGFjcl9pbWFnZTsK LQlzdHJ1Y3QgaHNmX2Z3X2hlYWRlciAqZndfaGRyID0gYWNyX2ltYWdlICsgaHNiaW5faGRyLT5o ZWFkZXJfb2Zmc2V0OwotCXN0cnVjdCBoc2ZfbG9hZF9oZWFkZXIgKmxvYWRfaGRyID0gYWNyX2lt YWdlICsgZndfaGRyLT5oZHJfb2Zmc2V0OwotCi0JLyoKLQkgKiBEZXNjcmlwdG9yIGZvciB0aGUg Ym9vdGxvYWRlciB0aGF0IHdpbGwgbG9hZCB0aGUgQUNSIGltYWdlIGludG8KLQkgKiBJTUVNL0RN RU0gbWVtb3J5LgotCSAqLwotCWZ3X2hkciA9IGFjcl9pbWFnZSArIGhzYmluX2hkci0+aGVhZGVy X29mZnNldDsKLQlsb2FkX2hkciA9IGFjcl9pbWFnZSArIGZ3X2hkci0+aGRyX29mZnNldDsKLQlt ZW1zZXQoYmxfZGVzYywgMCwgc2l6ZW9mKCpibF9kZXNjKSk7Ci0JYmxfZGVzYy0+Y3R4X2RtYSA9 IEZBTENPTl9ETUFJRFhfVklSVDsKLQlibF9kZXNjLT5ub25fc2VjX2NvZGVfb2ZmID0gbG9hZF9o ZHItPm5vbl9zZWNfY29kZV9vZmY7Ci0JYmxfZGVzYy0+bm9uX3NlY19jb2RlX3NpemUgPSBsb2Fk X2hkci0+bm9uX3NlY19jb2RlX3NpemU7Ci0JYmxfZGVzYy0+c2VjX2NvZGVfb2ZmID0gbG9hZF9o ZHItPmFwcFswXS5zZWNfY29kZV9vZmY7Ci0JYmxfZGVzYy0+c2VjX2NvZGVfc2l6ZSA9IGxvYWRf aGRyLT5hcHBbMF0uc2VjX2NvZGVfc2l6ZTsKLQlibF9kZXNjLT5jb2RlX2VudHJ5X3BvaW50ID0g MDsKLQkvKgotCSAqIFdlIG5lZWQgdG8gc2V0IGNvZGVfZG1hX2Jhc2UgdG8gdGhlIHZpcnR1YWwg YWRkcmVzcyBvZiB0aGUgYWNyX2Jsb2IsCi0JICogYW5kIGFkZCB0aGlzIGFkZHJlc3MgdG8gZGF0 YV9kbWFfYmFzZSBiZWZvcmUgd3JpdGluZyBpdCBpbnRvIERNRU0KLQkgKi8KLQlibF9kZXNjLT5j b2RlX2RtYV9iYXNlLmxvID0gMDsKLQlibF9kZXNjLT5kYXRhX2RtYV9iYXNlLmxvID0gbG9hZF9o ZHItPmRhdGFfZG1hX2Jhc2U7Ci0JYmxfZGVzYy0+ZGF0YV9zaXplID0gbG9hZF9oZHItPmRhdGFf c2l6ZTsKLX0KLQotLyoqCiAgKiBzdHJ1Y3QgaHNmbGNuX2Fjcl9kZXNjIC0gZGF0YSBzZWN0aW9u IG9mIHRoZSBIUyBmaXJtd2FyZQogICoKICAqIFRoaXMgaGVhZGVyIGlzIHRvIGJlIGNvcGllZCBh dCB0aGUgYmVnaW5uaW5nIG9mIERNRU0gYnkgdGhlIEhTIGJvb3Rsb2FkZXIuCkBAIC04NDYsMzcg KzgzNyw0NCBAQCBnbTIwMF9zZWNib290X2ZpeHVwX2hzX2Rlc2Moc3RydWN0IGdtMjAwX3NlY2Jv b3QgKmdzYiwKIHN0YXRpYyBpbnQKIGdtMjAwX3NlY2Jvb3RfcHJlcGFyZV9oc19ibG9iKHN0cnVj dCBnbTIwMF9zZWNib290ICpnc2IsIGNvbnN0IGNoYXIgKmZ3LAogCQkJICAgICAgc3RydWN0IG52 a21fZ3B1b2JqICoqYmxvYiwKLQkJCSAgICAgIHN0cnVjdCBnbTIwMF9mbGNuX2JsX2Rlc2MgKmJs X2Rlc2MsIGJvb2wgcGF0Y2gpCisJCQkgICAgICBzdHJ1Y3QgaHNmX2xvYWRfaGVhZGVyICpsb2Fk X2hlYWRlciwgYm9vbCBwYXRjaCkKIHsKIAlzdHJ1Y3QgbnZrbV9zdWJkZXYgKnN1YmRldiA9ICZn c2ItPmJhc2Uuc3ViZGV2OwogCXZvaWQgKmFjcl9pbWFnZTsKIAlzdHJ1Y3QgZndfYmluX2hlYWRl ciAqaHNiaW5faGRyOwogCXN0cnVjdCBoc2ZfZndfaGVhZGVyICpmd19oZHI7Ci0Jdm9pZCAqYWNy X2RhdGE7CiAJc3RydWN0IGhzZl9sb2FkX2hlYWRlciAqbG9hZF9oZHI7Ci0Jc3RydWN0IGhzZmxj bl9hY3JfZGVzYyAqZGVzYzsKKwl2b2lkICphY3JfZGF0YTsKIAlpbnQgcmV0OwogCiAJYWNyX2lt YWdlID0gZ20yMDBfc2VjYm9vdF9sb2FkX2Zpcm13YXJlKHN1YmRldiwgZncsIDApOwogCWlmIChJ U19FUlIoYWNyX2ltYWdlKSkKIAkJcmV0dXJuIFBUUl9FUlIoYWNyX2ltYWdlKTsKKwogCWhzYmlu X2hkciA9IGFjcl9pbWFnZTsKKwlmd19oZHIgPSBhY3JfaW1hZ2UgKyBoc2Jpbl9oZHItPmhlYWRl cl9vZmZzZXQ7CisJbG9hZF9oZHIgPSBhY3JfaW1hZ2UgKyBmd19oZHItPmhkcl9vZmZzZXQ7CisJ YWNyX2RhdGEgPSBhY3JfaW1hZ2UgKyBoc2Jpbl9oZHItPmRhdGFfb2Zmc2V0OwogCiAJLyogUGF0 Y2ggc2lnbmF0dXJlICovCiAJZ20yMDBfc2VjYm9vdF9oc2ZfcGF0Y2hfc2lnbmF0dXJlKGdzYiwg YWNyX2ltYWdlKTsKIAotCWFjcl9kYXRhID0gYWNyX2ltYWdlICsgaHNiaW5faGRyLT5kYXRhX29m ZnNldDsKLQogCS8qIFBhdGNoIGRlc2NyaXB0b3Igd2l0aCBXUFIgaW5mb3JtYXRpb24/ICovCiAJ aWYgKHBhdGNoKSB7Ci0JCWZ3X2hkciA9IGFjcl9pbWFnZSArIGhzYmluX2hkci0+aGVhZGVyX29m ZnNldDsKLQkJbG9hZF9oZHIgPSBhY3JfaW1hZ2UgKyBmd19oZHItPmhkcl9vZmZzZXQ7CisJCXN0 cnVjdCBoc2ZsY25fYWNyX2Rlc2MgKmRlc2M7CisKIAkJZGVzYyA9IGFjcl9kYXRhICsgbG9hZF9o ZHItPmRhdGFfZG1hX2Jhc2U7CiAJCWdtMjAwX3NlY2Jvb3RfZml4dXBfaHNfZGVzYyhnc2IsIGRl c2MpOwogCX0KIAotCS8qIEdlbmVyYXRlIEhTIEJMIGRlc2NyaXB0b3IgKi8KLQlnbTIwMF9zZWNi b290X3BvcHVsYXRlX2hzZl9ibF9kZXNjKGFjcl9pbWFnZSwgYmxfZGVzYyk7CisJaWYgKGxvYWRf aGRyLT5udW1fYXBwcyA+IEdNMjAwX0FDUl9NQVhfQVBQUykgeworCQludmttX2Vycm9yKHN1YmRl diwgIm1vcmUgYXBwcyAoJWQpIHRoYW4gc3VwcG9ydGVkICglZCkhIiwKKwkJCSAgIGxvYWRfaGRy LT5udW1fYXBwcywgR00yMDBfQUNSX01BWF9BUFBTKTsKKwkJcmV0ID0gLUVJTlZBTDsKKwkJZ290 byBjbGVhbnVwOworCX0KKwltZW1jcHkobG9hZF9oZWFkZXIsIGxvYWRfaGRyLCBzaXplb2YoKmxv YWRfaGVhZGVyKSArCisJCQkgICAgICAgKHNpemVvZihsb2FkX2hkci0+YXBwWzBdKSAqIGxvYWRf aGRyLT5udW1fYXBwcykpOwogCiAJLyogQ3JlYXRlIEFDUiBibG9iIGFuZCBjb3B5IEhTIGRhdGEg dG8gaXQgKi8KIAlyZXQgPSBudmttX2dwdW9ial9uZXcoc3ViZGV2LT5kZXZpY2UsIEFMSUdOKGhz YmluX2hkci0+ZGF0YV9zaXplLCAyNTYpLApAQCAtOTM3LDcgKzkzNSw3IEBAIGdtMjB4X3NlY2Jv b3RfcHJlcGFyZV9ibG9icyhzdHJ1Y3QgZ20yMDBfc2VjYm9vdCAqZ3NiKQogCWlmICghZ3NiLT5h Y3JfbG9hZF9ibG9iKSB7CiAJCXJldCA9IGdtMjAwX3NlY2Jvb3RfcHJlcGFyZV9oc19ibG9iKGdz YiwgImFjci91Y29kZV9sb2FkIiwKIAkJCQkJCSZnc2ItPmFjcl9sb2FkX2Jsb2IsCi0JCQkJCQkm Z3NiLT5hY3JfbG9hZF9ibF9kZXNjLCB0cnVlKTsKKwkJCQkJCSZnc2ItPmxvYWRfYmxfaGVhZGVy LCB0cnVlKTsKIAkJaWYgKHJldCkKIAkJCXJldHVybiByZXQ7CiAJfQpAQCAtOTY1LDcgKzk2Myw3 IEBAIGdtMjAwX3NlY2Jvb3RfcHJlcGFyZV9ibG9icyhzdHJ1Y3QgZ20yMDBfc2VjYm9vdCAqZ3Ni KQogCWlmICghZ3NiLT5hY3JfdW5sb2FkX2Jsb2IpIHsKIAkJcmV0ID0gZ20yMDBfc2VjYm9vdF9w cmVwYXJlX2hzX2Jsb2IoZ3NiLCAiYWNyL3Vjb2RlX3VubG9hZCIsCiAJCQkJCSAgICAgICAmZ3Ni LT5hY3JfdW5sb2FkX2Jsb2IsCi0JCQkJCSAgICAgICAmZ3NiLT5hY3JfdW5sb2FkX2JsX2Rlc2Ms IGZhbHNlKTsKKwkJCQkJICAgICAgICZnc2ItPnVubG9hZF9ibF9oZWFkZXIsIGZhbHNlKTsKIAkJ aWYgKHJldCkKIAkJCXJldHVybiByZXQ7CiAJfQpAQCAtMTA4NiwzNSArMTA4NCwzNyBAQCBnbTIw MF9zZWNib290X3NldHVwX2ZhbGNvbihzdHJ1Y3QgZ20yMDBfc2VjYm9vdCAqZ3NiKQogICogZ20y MDBfc2VjYm9vdF9ydW5faHNfYmxvYigpIC0gcnVuIHRoZSBnaXZlbiBoaWdoLXNlY3VyZSBibG9i CiAgKi8KIHN0YXRpYyBpbnQKLWdtMjAwX3NlY2Jvb3RfcnVuX2hzX2Jsb2Ioc3RydWN0IGdtMjAw X3NlY2Jvb3QgKmdzYiwgc3RydWN0IG52a21fZ3B1b2JqICpibG9iLAotCQkJICBzdHJ1Y3QgZ20y MDBfZmxjbl9ibF9kZXNjICpkZXNjKQorZ20yMDBfc2VjYm9vdF9ydW5faHNfYmxvYihzdHJ1Y3Qg Z20yMDBfc2VjYm9vdCAqZ3NiLCBzdHJ1Y3QgbnZrbV9ncHVvYmogKmJsb2IpCiB7CiAJc3RydWN0 IG52a21fdm1hIHZtYTsKLQl1NjQgdm1hX2FkZHI7CiAJY29uc3QgdTMyIGJsX2Rlc2Nfc2l6ZSA9 IGdzYi0+ZnVuYy0+YmxfZGVzY19zaXplOworCWNvbnN0IHN0cnVjdCBoc2ZfbG9hZF9oZWFkZXIg KmxvYWRfaGRyOwogCXU4IGJsX2Rlc2NbYmxfZGVzY19zaXplXTsKIAlpbnQgcmV0OwogCisJLyog RmluZCB0aGUgYm9vdGxvYWRlciBkZXNjcmlwdG9yIGZvciBvdXIgYmxvYiBhbmQgY29weSBpdCAq LworCWlmIChibG9iID09IGdzYi0+YWNyX2xvYWRfYmxvYikgeworCQlsb2FkX2hkciA9ICZnc2It PmxvYWRfYmxfaGVhZGVyOworCisJfSBlbHNlIGlmIChibG9iID09IGdzYi0+YWNyX3VubG9hZF9i bG9iKSB7CisJCWxvYWRfaGRyID0gJmdzYi0+dW5sb2FkX2JsX2hlYWRlcjsKKwl9IGVsc2Ugewor CQludmttX2Vycm9yKCZnc2ItPmJhc2Uuc3ViZGV2LCAiaW52YWxpZCBzZWN1cmUgYm9vdCBibG9i IVxuIik7CisJCXJldHVybiAtRUlOVkFMOworCX0KKwogCS8qIE1hcCB0aGUgSFMgZmlybXdhcmUg c28gdGhlIEhTIGJvb3Rsb2FkZXIgY2FuIHNlZSBpdCAqLwogCXJldCA9IG52a21fZ3B1b2JqX21h cChibG9iLCBnc2ItPnZtLCBOVl9NRU1fQUNDRVNTX1JXLCAmdm1hKTsKIAlpZiAocmV0KQogCQly ZXR1cm4gcmV0OwogCi0JLyogQWRkIHRoZSBtYXBwaW5nIGFkZHJlc3MgdG8gdGhlIERNQSBiYXNl cyAqLwotCXZtYV9hZGRyID0gZmxjbjY0X3RvX3U2NChkZXNjLT5jb2RlX2RtYV9iYXNlKSArIHZt YS5vZmZzZXQ7Ci0JZGVzYy0+Y29kZV9kbWFfYmFzZS5sbyA9IGxvd2VyXzMyX2JpdHModm1hX2Fk ZHIpOwotCWRlc2MtPmNvZGVfZG1hX2Jhc2UuaGkgPSB1cHBlcl8zMl9iaXRzKHZtYV9hZGRyKTsK LQl2bWFfYWRkciA9IGZsY242NF90b191NjQoZGVzYy0+ZGF0YV9kbWFfYmFzZSkgKyB2bWEub2Zm c2V0OwotCWRlc2MtPmRhdGFfZG1hX2Jhc2UubG8gPSBsb3dlcl8zMl9iaXRzKHZtYV9hZGRyKTsK LQlkZXNjLT5kYXRhX2RtYV9iYXNlLmhpID0gdXBwZXJfMzJfYml0cyh2bWFfYWRkcik7Ci0KLQkv KiBGaXh1cCB0aGUgQkwgaGVhZGVyICovCi0JZ3NiLT5mdW5jLT5maXh1cF9ibF9kZXNjKGRlc2Ms ICZibF9kZXNjKTsKKwkvKiBHZW5lcmF0ZSB0aGUgQkwgaGVhZGVyICovCisJZ3NiLT5mdW5jLT5n ZW5lcmF0ZV9ibF9kZXNjKGxvYWRfaGRyLCBibF9kZXNjLCB2bWEub2Zmc2V0KTsKIAogCS8qIFJl c2V0IHRoZSBmYWxjb24gYW5kIG1ha2UgaXQgcmVhZHkgdG8gcnVuIHRoZSBIUyBib290bG9hZGVy ICovCiAJcmV0ID0gZ20yMDBfc2VjYm9vdF9zZXR1cF9mYWxjb24oZ3NiKTsKIAlpZiAocmV0KQot CQlnb3RvIGRvbmU7CisJCWdvdG8gZW5kOwogCiAJLyogTG9hZCB0aGUgSFMgYm9vdGxvYWRlciBp bnRvIHRoZSBmYWxjb24ncyBJTUVNL0RNRU0gKi8KIAlnbTIwMF9zZWNib290X2xvYWRfaHNfYmwo Z3NiLCAmYmxfZGVzYywgYmxfZGVzY19zaXplKTsKQEAgLTExMjIsMTcgKzExMjIsOSBAQCBnbTIw MF9zZWNib290X3J1bl9oc19ibG9iKHN0cnVjdCBnbTIwMF9zZWNib290ICpnc2IsIHN0cnVjdCBu dmttX2dwdW9iaiAqYmxvYiwKIAkvKiBTdGFydCB0aGUgSFMgYm9vdGxvYWRlciAqLwogCXJldCA9 IG52a21fc2VjYm9vdF9mYWxjb25fcnVuKCZnc2ItPmJhc2UpOwogCWlmIChyZXQpCi0JCWdvdG8g ZG9uZTsKLQotZG9uZToKLQkvKiBSZXN0b3JlIHRoZSBvcmlnaW5hbCBETUEgYWRkcmVzc2VzICov Ci0Jdm1hX2FkZHIgPSBmbGNuNjRfdG9fdTY0KGRlc2MtPmNvZGVfZG1hX2Jhc2UpIC0gdm1hLm9m ZnNldDsKLQlkZXNjLT5jb2RlX2RtYV9iYXNlLmxvID0gbG93ZXJfMzJfYml0cyh2bWFfYWRkcik7 Ci0JZGVzYy0+Y29kZV9kbWFfYmFzZS5oaSA9IHVwcGVyXzMyX2JpdHModm1hX2FkZHIpOwotCXZt YV9hZGRyID0gZmxjbjY0X3RvX3U2NChkZXNjLT5kYXRhX2RtYV9iYXNlKSAtIHZtYS5vZmZzZXQ7 Ci0JZGVzYy0+ZGF0YV9kbWFfYmFzZS5sbyA9IGxvd2VyXzMyX2JpdHModm1hX2FkZHIpOwotCWRl c2MtPmRhdGFfZG1hX2Jhc2UuaGkgPSB1cHBlcl8zMl9iaXRzKHZtYV9hZGRyKTsKKwkJZ290byBl bmQ7CiAKK2VuZDoKIAkvKiBXZSBkb24ndCBuZWVkIHRoZSBBQ1IgZmlybXdhcmUgYW55bW9yZSAq LwogCW52a21fZ3B1b2JqX3VubWFwKCZ2bWEpOwogCkBAIC0xMTcxLDE1ICsxMTYzLDEzIEBAIGdt MjAwX3NlY2Jvb3RfcmVzZXQoc3RydWN0IG52a21fc2VjYm9vdCAqc2IsIGVudW0gbnZrbV9mYWxj b25pZHggZmFsY29uKQogCS8qIElmIFdQUiBpcyBzZXQgYW5kIHdlIGhhdmUgYW4gdW5sb2FkIGJs b2IsIHJ1biBpdCB0byB1bmxvY2sgV1BSICovCiAJaWYgKGdzYi0+YWNyX3VubG9hZF9ibG9iICYm CiAJICAgIGdzYi0+ZmFsY29uX3N0YXRlW05WS01fRkFMQ09OX0ZFQ1NdICE9IE5PTl9TRUNVUkUp IHsKLQkJcmV0ID0gZ20yMDBfc2VjYm9vdF9ydW5faHNfYmxvYihnc2IsIGdzYi0+YWNyX3VubG9h ZF9ibG9iLAotCQkJCQkJJmdzYi0+YWNyX3VubG9hZF9ibF9kZXNjKTsKKwkJcmV0ID0gZ20yMDBf c2VjYm9vdF9ydW5faHNfYmxvYihnc2IsIGdzYi0+YWNyX3VubG9hZF9ibG9iKTsKIAkJaWYgKHJl dCkKIAkJCXJldHVybiByZXQ7CiAJfQogCiAJLyogUmVsb2FkIGFsbCBtYW5hZ2VkIGZhbGNvbnMg Ki8KLQlyZXQgPSBnbTIwMF9zZWNib290X3J1bl9oc19ibG9iKGdzYiwgZ3NiLT5hY3JfbG9hZF9i bG9iLAotCQkJCQkmZ3NiLT5hY3JfbG9hZF9ibF9kZXNjKTsKKwlyZXQgPSBnbTIwMF9zZWNib290 X3J1bl9oc19ibG9iKGdzYiwgZ3NiLT5hY3JfbG9hZF9ibG9iKTsKIAlpZiAocmV0KQogCQlyZXR1 cm4gcmV0OwogCkBAIC0xMjYzLDggKzEyNTMsNyBAQCBnbTIwMF9zZWNib290X2Zpbmkoc3RydWN0 IG52a21fc2VjYm9vdCAqc2IsIGJvb2wgc3VzcGVuZCkKIAkvKiBSdW4gdGhlIHVubG9hZCBibG9i IHRvIHVucHJvdGVjdCB0aGUgV1BSIHJlZ2lvbiAqLwogCWlmIChnc2ItPmFjcl91bmxvYWRfYmxv YiAmJgogCSAgICBnc2ItPmZhbGNvbl9zdGF0ZVtOVktNX0ZBTENPTl9GRUNTXSAhPSBOT05fU0VD VVJFKQotCQlyZXQgPSBnbTIwMF9zZWNib290X3J1bl9oc19ibG9iKGdzYiwgZ3NiLT5hY3JfdW5s b2FkX2Jsb2IsCi0JCQkJCQkmZ3NiLT5hY3JfdW5sb2FkX2JsX2Rlc2MpOworCQlyZXQgPSBnbTIw MF9zZWNib290X3J1bl9oc19ibG9iKGdzYiwgZ3NiLT5hY3JfdW5sb2FkX2Jsb2IpOwogCiAJZm9y IChpID0gMDsgaSA8IE5WS01fRkFMQ09OX0VORDsgaSsrKQogCQlnc2ItPmZhbGNvbl9zdGF0ZVtp XSA9IE5PTl9TRUNVUkU7CkBAIC0xMzAzLDIxICsxMjkyLDI5IEBAIGdtMjAwX3NlY2Jvb3QgPSB7 CiAJLmJvb3RfZmFsY29uID0gTlZLTV9GQUxDT05fUE1VLAogfTsKIAotLyoqCi0gKiBnbTIwMF9m aXh1cF9ibF9kZXNjIC0ganVzdCBjb3B5IHRoZSBCTCBkZXNjcmlwdG9yCi0gKgotICogVXNlIHRo ZSBHTTIwMCBkZXNjcmlwdG9yIGZvcm1hdCBieSBkZWZhdWx0LgotICovCiBzdGF0aWMgdm9pZAot Z20yMDBfc2VjYm9vdF9maXh1cF9ibF9kZXNjKGNvbnN0IHN0cnVjdCBnbTIwMF9mbGNuX2JsX2Rl c2MgKmRlc2MsIHZvaWQgKnJldCkKK2dtMjAwX3NlY2Jvb3RfZ2VuZXJhdGVfYmxfZGVzYyhjb25z dCBzdHJ1Y3QgaHNmX2xvYWRfaGVhZGVyICpoZHIsCisJCQkgICAgICAgdm9pZCAqX2JsX2Rlc2Ms IHU2NCBvZmZzZXQpCiB7Ci0JbWVtY3B5KHJldCwgZGVzYywgc2l6ZW9mKCpkZXNjKSk7CisJc3Ry dWN0IGdtMjAwX2ZsY25fYmxfZGVzYyAqYmxfZGVzYyA9IF9ibF9kZXNjOworCisJbWVtc2V0KGJs X2Rlc2MsIDAsIHNpemVvZigqYmxfZGVzYykpOworCWJsX2Rlc2MtPmN0eF9kbWEgPSBGQUxDT05f RE1BSURYX1ZJUlQ7CisJYmxfZGVzYy0+bm9uX3NlY19jb2RlX29mZiA9IGhkci0+bm9uX3NlY19j b2RlX29mZjsKKwlibF9kZXNjLT5ub25fc2VjX2NvZGVfc2l6ZSA9IGhkci0+bm9uX3NlY19jb2Rl X3NpemU7CisJYmxfZGVzYy0+c2VjX2NvZGVfb2ZmID0gaGRyLT5hcHBbMF0uc2VjX2NvZGVfb2Zm OworCWJsX2Rlc2MtPnNlY19jb2RlX3NpemUgPSBoZHItPmFwcFswXS5zZWNfY29kZV9zaXplOwor CWJsX2Rlc2MtPmNvZGVfZW50cnlfcG9pbnQgPSAwOworCisJYmxfZGVzYy0+Y29kZV9kbWFfYmFz ZSA9IHU2NF90b19mbGNuNjQob2Zmc2V0KTsKKwlibF9kZXNjLT5kYXRhX2RtYV9iYXNlID0gdTY0 X3RvX2ZsY242NChvZmZzZXQgKyBoZHItPmRhdGFfZG1hX2Jhc2UpOworCWJsX2Rlc2MtPmRhdGFf c2l6ZSA9IGhkci0+ZGF0YV9zaXplOwogfQogCiBzdGF0aWMgY29uc3Qgc3RydWN0IGdtMjAwX3Nl Y2Jvb3RfZnVuYwogZ20yMDBfc2VjYm9vdF9mdW5jID0gewogCS5ibF9kZXNjX3NpemUgPSBzaXpl b2Yoc3RydWN0IGdtMjAwX2ZsY25fYmxfZGVzYyksCi0JLmZpeHVwX2JsX2Rlc2MgPSBnbTIwMF9z ZWNib290X2ZpeHVwX2JsX2Rlc2MsCisJLmdlbmVyYXRlX2JsX2Rlc2MgPSBnbTIwMF9zZWNib290 X2dlbmVyYXRlX2JsX2Rlc2MsCiAJLnByZXBhcmVfYmxvYnMgPSBnbTIwMF9zZWNib290X3ByZXBh cmVfYmxvYnMsCiB9OwogCmRpZmYgLS1naXQgYS9kcm0vbm91dmVhdS9udmttL3N1YmRldi9zZWNi b290L2dtMjBiLmMgYi9kcm0vbm91dmVhdS9udmttL3N1YmRldi9zZWNib290L2dtMjBiLmMKaW5k ZXggZDA2MmNjYzAxNjZmLi40MDNiNGQ2OTA5MDIgMTAwNjQ0Ci0tLSBhL2RybS9ub3V2ZWF1L252 a20vc3ViZGV2L3NlY2Jvb3QvZ20yMGIuYworKysgYi9kcm0vbm91dmVhdS9udmttL3N1YmRldi9z ZWNib290L2dtMjBiLmMKQEAgLTg3LDQxICs4NywyOCBAQCBnbTIwYl9zZWNib290X3ByZXBhcmVf YmxvYnMoc3RydWN0IGdtMjAwX3NlY2Jvb3QgKmdzYikKIAlyZXR1cm4gMDsKIH0KIAotLyoqCi0g KiBnbTIwYl9zZWNib290X2ZpeHVwX2JsX2Rlc2MgLSBhZGFwdCBCTCBkZXNjcmlwdG9yIHRvIGZv cm1hdCB1c2VkIGJ5IEdNMjBCIEZXCi0gKgotICogVGhlcmUgaXMgb25seSBhIHNsaWdodCBmb3Jt YXQgZGlmZmVyZW5jZSAoRE1BIGFkZHJlc3NlcyBiZWluZyAzMi1iaXRzIGFuZAotICogMjU2Qi1h bGlnbmVkKSB0byBhZGRyZXNzLgotICovCiBzdGF0aWMgdm9pZAotZ20yMGJfc2VjYm9vdF9maXh1 cF9ibF9kZXNjKGNvbnN0IHN0cnVjdCBnbTIwMF9mbGNuX2JsX2Rlc2MgKmRlc2MsIHZvaWQgKnJl dCkKK2dtMjBiX3NlY2Jvb3RfZ2VuZXJhdGVfYmxfZGVzYyhjb25zdCBzdHJ1Y3QgaHNmX2xvYWRf aGVhZGVyICpsb2FkX2hkciwKKwkJCSAgICAgICB2b2lkICpfYmxfZGVzYywgdTY0IG9mZnNldCkK IHsKLQlzdHJ1Y3QgZ20yMGJfZmxjbl9ibF9kZXNjICpnZGVzYyA9IHJldDsKLQl1NjQgYWRkcjsK LQotCW1lbWNweShnZGVzYy0+cmVzZXJ2ZWQsIGRlc2MtPnJlc2VydmVkLCBzaXplb2YoZ2Rlc2Mt PnJlc2VydmVkKSk7Ci0JbWVtY3B5KGdkZXNjLT5zaWduYXR1cmUsIGRlc2MtPnNpZ25hdHVyZSwg c2l6ZW9mKGdkZXNjLT5zaWduYXR1cmUpKTsKLQlnZGVzYy0+Y3R4X2RtYSA9IGRlc2MtPmN0eF9k bWE7Ci0JYWRkciA9IGRlc2MtPmNvZGVfZG1hX2Jhc2UuaGk7Ci0JYWRkciA8PD0gMzI7Ci0JYWRk ciB8PSBkZXNjLT5jb2RlX2RtYV9iYXNlLmxvOwotCWdkZXNjLT5jb2RlX2RtYV9iYXNlID0gbG93 ZXJfMzJfYml0cyhhZGRyID4+IDgpOwotCWdkZXNjLT5ub25fc2VjX2NvZGVfb2ZmID0gZGVzYy0+ bm9uX3NlY19jb2RlX29mZjsKLQlnZGVzYy0+bm9uX3NlY19jb2RlX3NpemUgPSBkZXNjLT5ub25f c2VjX2NvZGVfc2l6ZTsKLQlnZGVzYy0+c2VjX2NvZGVfb2ZmID0gZGVzYy0+c2VjX2NvZGVfb2Zm OwotCWdkZXNjLT5zZWNfY29kZV9zaXplID0gZGVzYy0+c2VjX2NvZGVfc2l6ZTsKLQlnZGVzYy0+ Y29kZV9lbnRyeV9wb2ludCA9IGRlc2MtPmNvZGVfZW50cnlfcG9pbnQ7Ci0JYWRkciA9IGRlc2Mt PmRhdGFfZG1hX2Jhc2UuaGk7Ci0JYWRkciA8PD0gMzI7Ci0JYWRkciB8PSBkZXNjLT5kYXRhX2Rt YV9iYXNlLmxvOwotCWdkZXNjLT5kYXRhX2RtYV9iYXNlID0gbG93ZXJfMzJfYml0cyhhZGRyID4+ IDgpOwotCWdkZXNjLT5kYXRhX3NpemUgPSBkZXNjLT5kYXRhX3NpemU7CisJc3RydWN0IGdtMjBi X2ZsY25fYmxfZGVzYyAqYmxfZGVzYyA9IF9ibF9kZXNjOworCisJbWVtc2V0KGJsX2Rlc2MsIDAs IHNpemVvZigqYmxfZGVzYykpOworCWJsX2Rlc2MtPmN0eF9kbWEgPSBGQUxDT05fRE1BSURYX1ZJ UlQ7CisJYmxfZGVzYy0+bm9uX3NlY19jb2RlX29mZiA9IGxvYWRfaGRyLT5ub25fc2VjX2NvZGVf b2ZmOworCWJsX2Rlc2MtPm5vbl9zZWNfY29kZV9zaXplID0gbG9hZF9oZHItPm5vbl9zZWNfY29k ZV9zaXplOworCWJsX2Rlc2MtPnNlY19jb2RlX29mZiA9IGxvYWRfaGRyLT5hcHBbMF0uc2VjX2Nv ZGVfb2ZmOworCWJsX2Rlc2MtPnNlY19jb2RlX3NpemUgPSBsb2FkX2hkci0+YXBwWzBdLnNlY19j b2RlX3NpemU7CisJYmxfZGVzYy0+Y29kZV9lbnRyeV9wb2ludCA9IDA7CisJYmxfZGVzYy0+Y29k ZV9kbWFfYmFzZSA9IG9mZnNldCA+PiA4OworCWJsX2Rlc2MtPmRhdGFfZG1hX2Jhc2UgPSAob2Zm c2V0ICsgbG9hZF9oZHItPmRhdGFfZG1hX2Jhc2UpID4+IDg7CisJYmxfZGVzYy0+ZGF0YV9zaXpl ID0gbG9hZF9oZHItPmRhdGFfc2l6ZTsKIH0KIAogc3RhdGljIGNvbnN0IHN0cnVjdCBnbTIwMF9z ZWNib290X2Z1bmMKIGdtMjBiX3NlY2Jvb3RfZnVuYyA9IHsKIAkuYmxfZGVzY19zaXplID0gc2l6 ZW9mKHN0cnVjdCBnbTIwYl9mbGNuX2JsX2Rlc2MpLAotCS5maXh1cF9ibF9kZXNjID0gZ20yMGJf c2VjYm9vdF9maXh1cF9ibF9kZXNjLAorCS5nZW5lcmF0ZV9ibF9kZXNjID0gZ20yMGJfc2VjYm9v dF9nZW5lcmF0ZV9ibF9kZXNjLAogCS5wcmVwYXJlX2Jsb2JzID0gZ20yMGJfc2VjYm9vdF9wcmVw YXJlX2Jsb2JzLAogfTsKIApkaWZmIC0tZ2l0IGEvZHJtL25vdXZlYXUvbnZrbS9zdWJkZXYvc2Vj Ym9vdC9wcml2LmggYi9kcm0vbm91dmVhdS9udmttL3N1YmRldi9zZWNib290L3ByaXYuaAppbmRl eCAyYTRjNGQ1YTNjOTAuLjE5MjI0MjJmZDUzOSAxMDA2NDQKLS0tIGEvZHJtL25vdXZlYXUvbnZr bS9zdWJkZXYvc2VjYm9vdC9wcml2LmgKKysrIGIvZHJtL25vdXZlYXUvbnZrbS9zdWJkZXYvc2Vj Ym9vdC9wcml2LmgKQEAgLTIxNyw0NiArMjE3LDM5IEBAIHN0cnVjdCBmbGNuX3U2NCB7CiAJdTMy IGxvOwogCXUzMiBoaTsKIH07CisKIHN0YXRpYyBpbmxpbmUgdTY0IGZsY242NF90b191NjQoY29u c3Qgc3RydWN0IGZsY25fdTY0IGYpCiB7CiAJcmV0dXJuICgodTY0KWYuaGkpIDw8IDMyIHwgZi5s bzsKIH0KIAorc3RhdGljIGlubGluZSBzdHJ1Y3QgZmxjbl91NjQgdTY0X3RvX2ZsY242NCh1NjQg dSkKK3sKKwlzdHJ1Y3QgZmxjbl91NjQgcmV0OworCisJcmV0LmhpID0gdXBwZXJfMzJfYml0cyh1 KTsKKwlyZXQubG8gPSBsb3dlcl8zMl9iaXRzKHUpOworCisJcmV0dXJuIHJldDsKK30KKworI2Rl ZmluZSBHTTIwMF9BQ1JfTUFYX0FQUFMgOAorCitzdHJ1Y3QgaHNmX2xvYWRfaGVhZGVyX2FwcCB7 CisJdTMyIHNlY19jb2RlX29mZjsKKwl1MzIgc2VjX2NvZGVfc2l6ZTsKK307CisKIC8qKgotICog c3RydWN0IGdtMjAwX2ZsY25fYmxfZGVzYyAtIERNRU0gYm9vdGxvYWRlciBkZXNjcmlwdG9yCi0g KiBAc2lnbmF0dXJlOgkJMTZCIHNpZ25hdHVyZSBmb3Igc2VjdXJlIGNvZGUuIDBzIGlmIG5vIHNl Y3VyZSBjb2RlCi0gKiBAY3R4X2RtYToJCURNQSBjb250ZXh0IHRvIGJlIHVzZWQgYnkgQkwgd2hp bGUgbG9hZGluZyBjb2RlL2RhdGEKLSAqIEBjb2RlX2RtYV9iYXNlOgkyNTZCLWFsaWduZWQgUGh5 c2ljYWwgRkIgQWRkcmVzcyB3aGVyZSBjb2RlIGlzIGxvY2F0ZWQKLSAqCQkJKGZhbGNvbidzICR4 Y2Jhc2UgcmVnaXN0ZXIpCi0gKiBAbm9uX3NlY19jb2RlX29mZjoJb2Zmc2V0IGZyb20gY29kZV9k bWFfYmFzZSB3aGVyZSB0aGUgbm9uLXNlY3VyZSBjb2RlIGlzCi0gKiAgICAgICAgICAgICAgICAg ICAgICBsb2NhdGVkLiBUaGUgb2Zmc2V0IG11c3QgYmUgbXVsdGlwbGUgb2YgMjU2IHRvIGhlbHAg cGVyZgotICogQG5vbl9zZWNfY29kZV9zaXplOgl0aGUgc2l6ZSBvZiB0aGUgbm9uU2VjdXJlIGNv ZGUgcGFydC4KLSAqIEBzZWNfY29kZV9vZmY6CW9mZnNldCBmcm9tIGNvZGVfZG1hX2Jhc2Ugd2hl cmUgdGhlIHNlY3VyZSBjb2RlIGlzCi0gKiAgICAgICAgICAgICAgICAgICAgICBsb2NhdGVkLiBU aGUgb2Zmc2V0IG11c3QgYmUgbXVsdGlwbGUgb2YgMjU2IHRvIGhlbHAgcGVyZgotICogQHNlY19j b2RlX3NpemU6CW9mZnNldCBmcm9tIGNvZGVfZG1hX2Jhc2Ugd2hlcmUgdGhlIHNlY3VyZSBjb2Rl IGlzCi0gKiAgICAgICAgICAgICAgICAgICAgICBsb2NhdGVkLiBUaGUgb2Zmc2V0IG11c3QgYmUg bXVsdGlwbGUgb2YgMjU2IHRvIGhlbHAgcGVyZgotICogQGNvZGVfZW50cnlfcG9pbnQ6CWNvZGUg ZW50cnkgcG9pbnQgd2hpY2ggd2lsbCBiZSBpbnZva2VkIGJ5IEJMIGFmdGVyCi0gKiAgICAgICAg ICAgICAgICAgICAgICBjb2RlIGlzIGxvYWRlZC4KLSAqIEBkYXRhX2RtYV9iYXNlOgkyNTZCIGFs aWduZWQgUGh5c2ljYWwgRkIgQWRkcmVzcyB3aGVyZSBkYXRhIGlzIGxvY2F0ZWQuCi0gKgkJCShm YWxjb24ncyAkeGRiYXNlIHJlZ2lzdGVyKQotICogQGRhdGFfc2l6ZToJCXNpemUgb2YgZGF0YSBi bG9jay4gU2hvdWxkIGJlIG11bHRpcGxlIG9mIDI1NkIKLSAqCi0gKiBTdHJ1Y3R1cmUgdXNlZCBi eSB0aGUgYm9vdGxvYWRlciB0byBsb2FkIHRoZSByZXN0IG9mIHRoZSBjb2RlLiBUaGlzIGhhcwot ICogdG8gYmUgZmlsbGVkIGJ5IGhvc3QgYW5kIGNvcGllZCBpbnRvIERNRU0gYXQgb2Zmc2V0IHBy b3ZpZGVkIGluIHRoZQotICogaHNmbGNuX2JsX2Rlc2MuYmxfZGVzY19kbWVtX2xvYWRfb2ZmLgor ICogc3RydWN0IGhzZl9sb2FkX2hlYWRlciAtIEhTIGZpcm13YXJlIGxvYWQgaGVhZGVyCiAgKi8K LXN0cnVjdCBnbTIwMF9mbGNuX2JsX2Rlc2MgewotCXUzMiByZXNlcnZlZFs0XTsKLQl1MzIgc2ln bmF0dXJlWzRdOwotCXUzMiBjdHhfZG1hOwotCXN0cnVjdCBmbGNuX3U2NCBjb2RlX2RtYV9iYXNl Oworc3RydWN0IGhzZl9sb2FkX2hlYWRlciB7CiAJdTMyIG5vbl9zZWNfY29kZV9vZmY7CiAJdTMy IG5vbl9zZWNfY29kZV9zaXplOwotCXUzMiBzZWNfY29kZV9vZmY7Ci0JdTMyIHNlY19jb2RlX3Np emU7Ci0JdTMyIGNvZGVfZW50cnlfcG9pbnQ7Ci0Jc3RydWN0IGZsY25fdTY0IGRhdGFfZG1hX2Jh c2U7CisJdTMyIGRhdGFfZG1hX2Jhc2U7CiAJdTMyIGRhdGFfc2l6ZTsKKwl1MzIgbnVtX2FwcHM7 CisJc3RydWN0IGhzZl9sb2FkX2hlYWRlcl9hcHAgYXBwWzBdOwogfTsKIAogLyoqCkBAIC0zMjIs MTEgKzMxNSwxNyBAQCBzdHJ1Y3QgZ20yMDBfc2VjYm9vdCB7CiAJICogb24gVGVncmEgdGhlIEhT IEZXIGNvcGllcyB0aGUgTFMgYmxvYiBpbnRvIHRoZSBmaXhlZCBXUFIgaW5zdGVhZAogCSAqLwog CXN0cnVjdCBudmttX2dwdW9iaiAqYWNyX2xvYWRfYmxvYjsKLQlzdHJ1Y3QgZ20yMDBfZmxjbl9i bF9kZXNjIGFjcl9sb2FkX2JsX2Rlc2M7CisJc3RydWN0IHsKKwkJc3RydWN0IGhzZl9sb2FkX2hl YWRlciBsb2FkX2JsX2hlYWRlcjsKKwkJc3RydWN0IGhzZl9sb2FkX2hlYWRlcl9hcHAgX19sb2Fk X2FwcHNbR00yMDBfQUNSX01BWF9BUFBTXTsKKwl9OwogCiAJLyogSFMgRlcgLSB1bmxvY2sgV1BS IHJlZ2lvbiAoZEdQVSBvbmx5KSAqLwogCXN0cnVjdCBudmttX2dwdW9iaiAqYWNyX3VubG9hZF9i bG9iOwotCXN0cnVjdCBnbTIwMF9mbGNuX2JsX2Rlc2MgYWNyX3VubG9hZF9ibF9kZXNjOworCXN0 cnVjdCB7CisJCXN0cnVjdCBoc2ZfbG9hZF9oZWFkZXIgdW5sb2FkX2JsX2hlYWRlcjsKKwkJc3Ry dWN0IGhzZl9sb2FkX2hlYWRlcl9hcHAgX191bmxvYWRfYXBwc1tHTTIwMF9BQ1JfTUFYX0FQUFNd OworCX07CiAKIAkvKiBIUyBib290bG9hZGVyICovCiAJdm9pZCAqaHNibF9ibG9iOwpAQCAtMzU2 LDkgKzM1NSw5IEBAIHN0cnVjdCBnbTIwMF9zZWNib290IHsKIC8qKgogICogQ29udGFpbnMgZnVu Y3Rpb25zIHdlIHdpc2ggdG8gYWJzdHJhY3QgYmV0d2VlbiBHTTIwMC1saWtlIGltcGxlbWVudGF0 aW9ucwogICogQGJsX2Rlc2Nfc2l6ZToJc2l6ZSBvZiB0aGUgQkwgZGVzY3JpcHRvciB1c2VkIGJ5 IHRoaXMgY2hpcC4KLSAqIEBmaXh1cF9ibF9kZXNjOglob29rIHRoYXQgZ2VuZXJhdGVzIHRoZSBw cm9wZXIgQkwgZGVzY3JpcHRvciBmb3JtYXQgZnJvbQotICoJCQl0aGUgZ2VuZXJpYyBHTTIwMCBm b3JtYXQgaW50byBhIGRhdGEgYXJyYXkgb2Ygc2l6ZQotICoJCQlibF9kZXNjX3NpemUKKyAqIEBn ZW5lcmF0ZV9ibF9kZXNjOglob29rIHRoYXQgZ2VuZXJhdGVzIHRoZSBwcm9wZXIgQkwgZGVzY3Jp cHRvciBmb3JtYXQgZnJvbQorICoJCQl0aGUgaHNmX2xvYWRfaGVhZGVyIGZvcm1hdCBpbnRvIGEg cHJlYWxsb2NhdGVkIGFycmF5IG9mCisgKgkJCXNpemUgYmxfZGVzY19zaXplCiAgKiBAcHJlcGFy ZV9ibG9iczoJcHJlcGFyZXMgdGhlIHZhcmlvdXMgYmxvYnMgbmVlZGVkIGZvciBzZWN1cmUgYm9v dGluZwogICovCiBzdHJ1Y3QgZ20yMDBfc2VjYm9vdF9mdW5jIHsKQEAgLTM2OCw3ICszNjcsNyBA QCBzdHJ1Y3QgZ20yMDBfc2VjYm9vdF9mdW5jIHsKIAkgKiBjYWxsYmFjayBpcyBjYWxsZWQgb24g aXQKIAkgKi8KIAl1MzIgYmxfZGVzY19zaXplOwotCXZvaWQgKCpmaXh1cF9ibF9kZXNjKShjb25z dCBzdHJ1Y3QgZ20yMDBfZmxjbl9ibF9kZXNjICosIHZvaWQgKik7CisJdm9pZCAoKmdlbmVyYXRl X2JsX2Rlc2MpKGNvbnN0IHN0cnVjdCBoc2ZfbG9hZF9oZWFkZXIgKiwgdm9pZCAqLCB1NjQpOwog CiAJaW50ICgqcHJlcGFyZV9ibG9icykoc3RydWN0IGdtMjAwX3NlY2Jvb3QgKik7CiB9OwotLSAK Mi4xMC4wCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpO b3V2ZWF1IG1haWxpbmcgbGlzdApOb3V2ZWF1QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczov L2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL25vdXZlYXUK