From mboxrd@z Thu Jan 1 00:00:00 1970 From: Alexandre Courbot Subject: [PATCH v2 14/14] secboot: abstract LS firmware loading functions Date: Thu, 27 Oct 2016 13:37:08 +0900 Message-ID: <20161027043708.22538-15-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 VGhlIFdQUiBhbmQgTFNCIGhlYWRlcnMsIHVzZWQgdG8gZ2VuZXJhdGUgdGhlIExTIGJsb2IsIG1h eSBoYXZlIGEKZGlmZmVyZW50IGxheW91dCBhbmQgc2l6ZXMgZGVwZW5kaW5nIG9uIHRoZSBkcml2 ZXIgdmVyc2lvbiB0aGV5IGNvbWUKZnJvbS4gQWJzdHJhY3QgdGhlbSBhbmQgY29uZmluZSB0aGVp ciB1c2UgdG8gZHJpdmVyLXNwZWNpZmljIGNvZGUuCgpTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kcmUg Q291cmJvdCA8YWNvdXJib3RAbnZpZGlhLmNvbT4KLS0tCiBkcm0vbm91dmVhdS9udmttL3N1YmRl di9zZWNib290L2Fjcl9yMzUyLmMgICAgfCAgOTcgKysrKysrKysrKysrKy0tLS0tLS0tCiBkcm0v bm91dmVhdS9udmttL3N1YmRldi9zZWNib290L2Fjcl9yMzUyLmggICAgfCAxMTkgKysrKysrKysr KysrKysrKysrKysrKysrKysKIGRybS9ub3V2ZWF1L252a20vc3ViZGV2L3NlY2Jvb3QvYWNyX3Iz NjEuYyAgICB8ICAgOSArLQogZHJtL25vdXZlYXUvbnZrbS9zdWJkZXYvc2VjYm9vdC9sc191Y29k ZS5oICAgIHwgMTAwICstLS0tLS0tLS0tLS0tLS0tLS0tLS0KIGRybS9ub3V2ZWF1L252a20vc3Vi ZGV2L3NlY2Jvb3QvbHNfdWNvZGVfZ3IuYyB8ICAzOSArKysrLS0tLS0KIDUgZmlsZXMgY2hhbmdl ZCwgMjA4IGluc2VydGlvbnMoKyksIDE1NiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcm0v bm91dmVhdS9udmttL3N1YmRldi9zZWNib290L2Fjcl9yMzUyLmMgYi9kcm0vbm91dmVhdS9udmtt L3N1YmRldi9zZWNib290L2Fjcl9yMzUyLmMKaW5kZXggNzI5ODVhYTFlNTUzLi4zMTBiYjY1ZDk3 YzkgMTAwNjQ0Ci0tLSBhL2RybS9ub3V2ZWF1L252a20vc3ViZGV2L3NlY2Jvb3QvYWNyX3IzNTIu YworKysgYi9kcm0vbm91dmVhdS9udmttL3N1YmRldi9zZWNib290L2Fjcl9yMzUyLmMKQEAgLTIx LDcgKzIxLDYgQEAKICAqLwogCiAjaW5jbHVkZSAiYWNyX3IzNTIuaCIKLSNpbmNsdWRlICJsc191 Y29kZS5oIgogCiAjaW5jbHVkZSA8Y29yZS9ncHVvYmouaD4KICNpbmNsdWRlIDxjb3JlL2Zpcm13 YXJlLmg+CkBAIC0xNDAsMjQgKzEzOSw0NiBAQCB0eXBlZGVmIGludCAoKmxzZl9sb2FkX2Z1bmMp KGNvbnN0IHN0cnVjdCBudmttX3N1YmRldiAqLCBzdHJ1Y3QgbHNfdWNvZGVfaW1nICopOwogLyoq CiAgKiBsc191Y29kZV9pbWdfbG9hZCgpIC0gY3JlYXRlIGEgbHNmX3Vjb2RlX2ltZyBhbmQgbG9h ZCBpdAogICovCi1zdGF0aWMgc3RydWN0IGxzX3Vjb2RlX2ltZyAqCi1sc191Y29kZV9pbWdfbG9h ZChjb25zdCBzdHJ1Y3QgbnZrbV9zdWJkZXYgKnN1YmRldiwgbHNmX2xvYWRfZnVuYyBsb2FkX2Z1 bmMpCitzdHJ1Y3QgbHNfdWNvZGVfaW1nICoKK2Fjcl9yMzUyX2xzX3Vjb2RlX2ltZ19sb2FkKGNv bnN0IHN0cnVjdCBudmttX2Fjcl9yMzUyICphY3IsCisJCQkgICBlbnVtIG52a21fZmFsY29uaWR4 IGZhbGNvbl9pZCkKIHsKLQlzdHJ1Y3QgbHNfdWNvZGVfaW1nICppbWc7CisJY29uc3Qgc3RydWN0 IG52a21fc3ViZGV2ICpzdWJkZXYgPSBhY3ItPmJhc2Uuc3ViZGV2OworCXN0cnVjdCBsc191Y29k ZV9pbWdfcjM1MiAqaW1nOworCWxzZl9sb2FkX2Z1bmMgbG9hZF9mdW5jOwogCWludCByZXQ7CiAK IAlpbWcgPSBremFsbG9jKHNpemVvZigqaW1nKSwgR0ZQX0tFUk5FTCk7CiAJaWYgKCFpbWcpCiAJ CXJldHVybiBFUlJfUFRSKC1FTk9NRU0pOwogCi0JcmV0ID0gbG9hZF9mdW5jKHN1YmRldiwgaW1n KTsKKwlpbWctPmJhc2UuZmFsY29uX2lkID0gZmFsY29uX2lkOworCisJbG9hZF9mdW5jID0gYWNy LT5mdW5jLT5sc19mdW5jW2ZhbGNvbl9pZF0tPmxvYWQ7CisKKwlyZXQgPSBsb2FkX2Z1bmMoc3Vi ZGV2LCAmaW1nLT5iYXNlKTsKIAogCWlmIChyZXQpIHsKKwkJa2ZyZWUoaW1nLT5iYXNlLnVjb2Rl X2RhdGEpOworCQlrZnJlZShpbWctPmJhc2Uuc2lnKTsKIAkJa2ZyZWUoaW1nKTsKIAkJcmV0dXJu IEVSUl9QVFIocmV0KTsKIAl9CiAKLQlyZXR1cm4gaW1nOworCS8qIENoZWNrIHRoYXQgdGhlIHNp Z25hdHVyZSBzaXplIG1hdGNoZXMgb3VyIGV4cGVjdGF0aW9ucy4uLiAqLworCWlmIChpbWctPmJh c2Uuc2lnX3NpemUgIT0gc2l6ZW9mKGltZy0+bHNiX2hlYWRlci5zaWduYXR1cmUpKSB7CisJCW52 a21fZXJyb3Ioc3ViZGV2LCAiaW52YWxpZCBzaWduYXR1cmUgc2l6ZSBmb3IgJXMgZmFsY29uIVxu IiwKKwkJCSAgIG52a21fZmFsY29uX25hbWVbZmFsY29uX2lkXSk7CisJCXJldHVybiBFUlJfUFRS KC1FSU5WQUwpOworCX0KKworCS8qIENvcHkgc2lnbmF0dXJlIHRvIHRoZSByaWdodCBwbGFjZSAq LworCW1lbWNweSgmaW1nLT5sc2JfaGVhZGVyLnNpZ25hdHVyZSwgaW1nLT5iYXNlLnNpZywgaW1n LT5iYXNlLnNpZ19zaXplKTsKKworCS8qIG5vdCBuZWVkZWQ/IHRoZSBzaWduYXR1cmUgc2hvdWxk IGFscmVhZHkgaGF2ZSB0aGUgcmlnaHQgdmFsdWUgKi8KKwlpbWctPmxzYl9oZWFkZXIuc2lnbmF0 dXJlLmZhbGNvbl9pZCA9IGZhbGNvbl9pZDsKKworCXJldHVybiAmaW1nLT5iYXNlOwogfQogCiAK QEAgLTE2NywxMSArMTg4LDEyIEBAIGxzX3Vjb2RlX2ltZ19sb2FkKGNvbnN0IHN0cnVjdCBudmtt X3N1YmRldiAqc3ViZGV2LCBsc2ZfbG9hZF9mdW5jIGxvYWRfZnVuYykKICAqLwogc3RhdGljIHZv aWQKIGFjcl9yMzUyX2dlbmVyYXRlX2ZsY25fYmxfZGVzYyhjb25zdCBzdHJ1Y3QgbnZrbV9hY3Ig KmFjciwKLQkJCSAgICAgICBjb25zdCBzdHJ1Y3QgbHNfdWNvZGVfaW1nICppbWcsIHU2NCB3cHJf YWRkciwKKwkJCSAgICAgICBjb25zdCBzdHJ1Y3QgbHNfdWNvZGVfaW1nICpfaW1nLCB1NjQgd3By X2FkZHIsCiAJCQkgICAgICAgdm9pZCAqX2Rlc2MpCiB7CisJc3RydWN0IGxzX3Vjb2RlX2ltZ19y MzUyICppbWcgPSBsc191Y29kZV9pbWdfcjM1MihfaW1nKTsKIAlzdHJ1Y3QgYWNyX3IzNTJfZmxj bl9ibF9kZXNjICpkZXNjID0gX2Rlc2M7Ci0JY29uc3Qgc3RydWN0IGxzX3Vjb2RlX2ltZ19kZXNj ICpwZGVzYyA9ICZpbWctPnVjb2RlX2Rlc2M7CisJY29uc3Qgc3RydWN0IGxzX3Vjb2RlX2ltZ19k ZXNjICpwZGVzYyA9ICZfaW1nLT51Y29kZV9kZXNjOwogCXU2NCBiYXNlOwogCiAJYmFzZSA9IHdw cl9hZGRyICsgaW1nLT5sc2JfaGVhZGVyLnVjb2RlX29mZiArIHBkZXNjLT5hcHBfc3RhcnRfb2Zm c2V0OwpAQCAtMTkyLDcgKzIxNCw3IEBAIGFjcl9yMzUyX2dlbmVyYXRlX2ZsY25fYmxfZGVzYyhj b25zdCBzdHJ1Y3QgbnZrbV9hY3IgKmFjciwKICNkZWZpbmUgTFNGX1VDT0RFX0RBVEFfQUxJR04g NDA5NgogCiAvKioKLSAqIGxzX3Vjb2RlX2ltZ19maWxsX2hlYWRlcnMgLSBmaWxsIHRoZSBXUFIg YW5kIExTQiBoZWFkZXJzIG9mIGFuIGltYWdlCisgKiBhY3JfcjM1Ml9sc19pbWdfZmlsbF9oZWFk ZXJzIC0gZmlsbCB0aGUgV1BSIGFuZCBMU0IgaGVhZGVycyBvZiBhbiBpbWFnZQogICogQGFjcjoJ QUNSIHRvIHVzZQogICogQGltZzoJaW1hZ2UgdG8gZ2VuZXJhdGUgZm9yCiAgKiBAb2Zmc2V0Oglv ZmZzZXQgaW4gdGhlIFdQUiByZWdpb24gd2hlcmUgdGhpcyBpbWFnZSBzdGFydHMKQEAgLTIwMywy NCArMjI1LDI1IEBAIGFjcl9yMzUyX2dlbmVyYXRlX2ZsY25fYmxfZGVzYyhjb25zdCBzdHJ1Y3Qg bnZrbV9hY3IgKmFjciwKICAqIFJldHVybjogb2Zmc2V0IGF0IHRoZSBlbmQgb2YgdGhpcyBpbWFn ZS4KICAqLwogc3RhdGljIHUzMgotbHNfdWNvZGVfaW1nX2ZpbGxfaGVhZGVycyhzdHJ1Y3QgbnZr bV9hY3JfcjM1MiAqYWNyLCBzdHJ1Y3QgbHNfdWNvZGVfaW1nICppbWcsCi0JCQkgIHUzMiBvZmZz ZXQpCithY3JfcjM1Ml9sc19pbWdfZmlsbF9oZWFkZXJzKHN0cnVjdCBudmttX2Fjcl9yMzUyICph Y3IsCisJCQkgICAgIHN0cnVjdCBsc191Y29kZV9pbWcgKl9pbWcsIHUzMiBvZmZzZXQpCiB7Ci0J c3RydWN0IGxzZl93cHJfaGVhZGVyICp3aGRyID0gJmltZy0+d3ByX2hlYWRlcjsKLQlzdHJ1Y3Qg bHNmX2xzYl9oZWFkZXIgKmxoZHIgPSAmaW1nLT5sc2JfaGVhZGVyOwotCXN0cnVjdCBsc191Y29k ZV9pbWdfZGVzYyAqZGVzYyA9ICZpbWctPnVjb2RlX2Rlc2M7CisJc3RydWN0IGxzX3Vjb2RlX2lt Z19yMzUyICppbWcgPSBsc191Y29kZV9pbWdfcjM1MihfaW1nKTsKKwlzdHJ1Y3QgYWNyX3IzNTJf bHNmX3dwcl9oZWFkZXIgKndoZHIgPSAmaW1nLT53cHJfaGVhZGVyOworCXN0cnVjdCBhY3JfcjM1 Ml9sc2ZfbHNiX2hlYWRlciAqbGhkciA9ICZpbWctPmxzYl9oZWFkZXI7CisJc3RydWN0IGxzX3Vj b2RlX2ltZ19kZXNjICpkZXNjID0gJl9pbWctPnVjb2RlX2Rlc2M7CiAJY29uc3Qgc3RydWN0IG52 a21fYWNyX3IzNTJfbHNfZnVuYyAqZnVuYyA9Ci0JCQkJCSAgICBhY3ItPmZ1bmMtPmxzX2Z1bmNb aW1nLT5mYWxjb25faWRdOworCQkJCQkgICAgYWNyLT5mdW5jLT5sc19mdW5jW19pbWctPmZhbGNv bl9pZF07CiAKIAkvKiBGaWxsIFdQUiBoZWFkZXIgKi8KLQl3aGRyLT5mYWxjb25faWQgPSBpbWct PmZhbGNvbl9pZDsKKwl3aGRyLT5mYWxjb25faWQgPSBfaW1nLT5mYWxjb25faWQ7CiAJd2hkci0+ Ym9vdHN0cmFwX293bmVyID0gYWNyLT5iYXNlLmZ1bmMtPmJvb3RfZmFsY29uOwogCXdoZHItPnN0 YXR1cyA9IExTRl9JTUFHRV9TVEFUVVNfQ09QWTsKIAogCS8qIEFsaWduLCBzYXZlIG9mZiwgYW5k IGluY2x1ZGUgYW4gTFNCIGhlYWRlciBzaXplICovCiAJb2Zmc2V0ID0gQUxJR04ob2Zmc2V0LCBM U0ZfTFNCX0hFQURFUl9BTElHTik7CiAJd2hkci0+bHNiX29mZnNldCA9IG9mZnNldDsKLQlvZmZz ZXQgKz0gc2l6ZW9mKHN0cnVjdCBsc2ZfbHNiX2hlYWRlcik7CisJb2Zmc2V0ICs9IHNpemVvZihz dHJ1Y3QgYWNyX3IzNTJfbHNmX2xzYl9oZWFkZXIpOwogCiAJLyoKIAkgKiBBbGlnbiwgc2F2ZSBv ZmYsIGFuZCBpbmNsdWRlIHRoZSBvcmlnaW5hbCAoc3RhdGljKSB1Y29kZQpAQCAtMjI4LDcgKzI1 MSw3IEBAIGxzX3Vjb2RlX2ltZ19maWxsX2hlYWRlcnMoc3RydWN0IG52a21fYWNyX3IzNTIgKmFj ciwgc3RydWN0IGxzX3Vjb2RlX2ltZyAqaW1nLAogCSAqLwogCW9mZnNldCA9IEFMSUdOKG9mZnNl dCwgTFNGX1VDT0RFX0RBVEFfQUxJR04pOwogCWxoZHItPnVjb2RlX29mZiA9IG9mZnNldDsKLQlv ZmZzZXQgKz0gaW1nLT51Y29kZV9zaXplOworCW9mZnNldCArPSBfaW1nLT51Y29kZV9zaXplOwog CiAJLyoKIAkgKiBGb3IgZmFsY29ucyB0aGF0IHVzZSBhIGJvb3QgbG9hZGVyIChCTCksIHdlIGFw cGVuZCBhIGxvYWRlcgpAQCAtMjU4LDcgKzI4MSw3IEBAIGxzX3Vjb2RlX2ltZ19maWxsX2hlYWRl cnMoc3RydWN0IG52a21fYWNyX3IzNTIgKmFjciwgc3RydWN0IGxzX3Vjb2RlX2ltZyAqaW1nLAog CWxoZHItPmFwcF9kYXRhX3NpemUgPSBkZXNjLT5hcHBfcmVzaWRlbnRfZGF0YV9zaXplOwogCiAJ bGhkci0+ZmxhZ3MgPSBmdW5jLT5saGRyX2ZsYWdzOwotCWlmIChpbWctPmZhbGNvbl9pZCA9PSBh Y3ItPmJhc2UuZnVuYy0+Ym9vdF9mYWxjb24pCisJaWYgKF9pbWctPmZhbGNvbl9pZCA9PSBhY3It PmJhc2UuZnVuYy0+Ym9vdF9mYWxjb24pCiAJCWxoZHItPmZsYWdzIHw9IExTRl9GTEFHX0RNQUNU TF9SRVFfQ1RYOwogCiAKQEAgLTI3OCw3ICszMDEsNyBAQCBsc191Y29kZV9pbWdfZmlsbF9oZWFk ZXJzKHN0cnVjdCBudmttX2Fjcl9yMzUyICphY3IsIHN0cnVjdCBsc191Y29kZV9pbWcgKmltZywK IC8qKgogICogYWNyX3IzNTJfbHNfZmlsbF9oZWFkZXJzIC0gZmlsbCBXUFIgYW5kIExTQiBoZWFk ZXJzIG9mIGFsbCBtYW5hZ2VkIGltYWdlcwogICovCi1zdGF0aWMgaW50CitpbnQKIGFjcl9yMzUy X2xzX2ZpbGxfaGVhZGVycyhzdHJ1Y3QgbnZrbV9hY3JfcjM1MiAqYWNyLCBzdHJ1Y3QgbGlzdF9o ZWFkICppbWdzKQogewogCXN0cnVjdCBsc191Y29kZV9pbWcgKmltZzsKQEAgLTI5NiwzNCArMzE5 LDM1IEBAIGFjcl9yMzUyX2xzX2ZpbGxfaGVhZGVycyhzdHJ1Y3QgbnZrbV9hY3JfcjM1MiAqYWNy LCBzdHJ1Y3QgbGlzdF9oZWFkICppbWdzKQogCSAqIHJlYWQgb2YgdGhpcyBhcnJheSBhbmQgY2Fj aGUgaXQgaW50ZXJuYWxseSBzbyBpdCdzIG9rIHRvIHBhY2sgdGhlc2UuCiAJICogQWxzbywgd2Ug YWRkIDEgdG8gdGhlIGZhbGNvbiBjb3VudCB0byBpbmRpY2F0ZSB0aGUgZW5kIG9mIHRoZSBhcnJh eS4KIAkgKi8KLQlvZmZzZXQgPSBzaXplb2Yoc3RydWN0IGxzZl93cHJfaGVhZGVyKSAqIChjb3Vu dCArIDEpOworCW9mZnNldCA9IHNpemVvZihzdHJ1Y3QgYWNyX3IzNTJfbHNmX3dwcl9oZWFkZXIp ICogKGNvdW50ICsgMSk7CiAKIAkvKgogCSAqIFdhbGsgdGhlIG1hbmFnZWQgZmFsY29ucywgYWNj b3VudGluZyBmb3IgdGhlIExTQiBzdHJ1Y3RzCiAJICogYXMgd2VsbCBhcyB0aGUgdWNvZGUgaW1h Z2VzLgogCSAqLwogCWxpc3RfZm9yX2VhY2hfZW50cnkoaW1nLCBpbWdzLCBub2RlKSB7Ci0JCW9m ZnNldCA9IGxzX3Vjb2RlX2ltZ19maWxsX2hlYWRlcnMoYWNyLCBpbWcsIG9mZnNldCk7CisJCW9m ZnNldCA9IGFjcl9yMzUyX2xzX2ltZ19maWxsX2hlYWRlcnMoYWNyLCBpbWcsIG9mZnNldCk7CiAJ fQogCiAJcmV0dXJuIG9mZnNldDsKIH0KIAogLyoqCi0gKiBsc191Y29kZV9tZ3Jfd3JpdGVfd3By IC0gd3JpdGUgdGhlIFdQUiBibG9iIGNvbnRlbnRzCisgKiBhY3JfcjM1Ml9sc193cml0ZV93cHIg LSB3cml0ZSB0aGUgV1BSIGJsb2IgY29udGVudHMKICAqLwotc3RhdGljIGludAotbHNfdWNvZGVf bWdyX3dyaXRlX3dwcihzdHJ1Y3QgbnZrbV9hY3JfcjM1MiAqYWNyLCBzdHJ1Y3QgbGlzdF9oZWFk ICppbWdzLAoraW50CithY3JfcjM1Ml9sc193cml0ZV93cHIoc3RydWN0IG52a21fYWNyX3IzNTIg KmFjciwgc3RydWN0IGxpc3RfaGVhZCAqaW1ncywKIAkJICAgICAgIHN0cnVjdCBudmttX2dwdW9i aiAqd3ByX2Jsb2IsIHUzMiB3cHJfYWRkcikKIHsKLQlzdHJ1Y3QgbHNfdWNvZGVfaW1nICppbWc7 CisJc3RydWN0IGxzX3Vjb2RlX2ltZyAqX2ltZzsKIAl1MzIgcG9zID0gMDsKIAogCW52a21fa21h cCh3cHJfYmxvYik7CiAKLQlsaXN0X2Zvcl9lYWNoX2VudHJ5KGltZywgaW1ncywgbm9kZSkgewor CWxpc3RfZm9yX2VhY2hfZW50cnkoX2ltZywgaW1ncywgbm9kZSkgeworCQlzdHJ1Y3QgbHNfdWNv ZGVfaW1nX3IzNTIgKmltZyA9IGxzX3Vjb2RlX2ltZ19yMzUyKF9pbWcpOwogCQljb25zdCBzdHJ1 Y3QgbnZrbV9hY3JfcjM1Ml9sc19mdW5jICpsc19mdW5jID0KLQkJCQkJICAgICBhY3ItPmZ1bmMt PmxzX2Z1bmNbaW1nLT5mYWxjb25faWRdOworCQkJCQkgICAgYWNyLT5mdW5jLT5sc19mdW5jW19p bWctPmZhbGNvbl9pZF07CiAJCXU4IGdkZXNjW2xzX2Z1bmMtPmJsX2Rlc2Nfc2l6ZV07CiAKIAkJ bnZrbV9ncHVvYmpfbWVtY3B5X3RvKHdwcl9ibG9iLCBwb3MsICZpbWctPndwcl9oZWFkZXIsCkBA IC0zMzMsMTQgKzM1NywxNCBAQCBsc191Y29kZV9tZ3Jfd3JpdGVfd3ByKHN0cnVjdCBudmttX2Fj cl9yMzUyICphY3IsIHN0cnVjdCBsaXN0X2hlYWQgKmltZ3MsCiAJCQkJICAgICAmaW1nLT5sc2Jf aGVhZGVyLCBzaXplb2YoaW1nLT5sc2JfaGVhZGVyKSk7CiAKIAkJLyogR2VuZXJhdGUgYW5kIHdy aXRlIEJMIGRlc2NyaXB0b3IgKi8KLQkJbHNfZnVuYy0+Z2VuZXJhdGVfYmxfZGVzYygmYWNyLT5i YXNlLCBpbWcsIHdwcl9hZGRyLCAmZ2Rlc2MpOworCQlsc19mdW5jLT5nZW5lcmF0ZV9ibF9kZXNj KCZhY3ItPmJhc2UsIF9pbWcsIHdwcl9hZGRyLCAmZ2Rlc2MpOwogCiAJCW52a21fZ3B1b2JqX21l bWNweV90byh3cHJfYmxvYiwgaW1nLT5sc2JfaGVhZGVyLmJsX2RhdGFfb2ZmLAogCQkJCSAgICAg ICZnZGVzYywgbHNfZnVuYy0+YmxfZGVzY19zaXplKTsKIAogCQkvKiBDb3B5IHVjb2RlICovCiAJ CW52a21fZ3B1b2JqX21lbWNweV90byh3cHJfYmxvYiwgaW1nLT5sc2JfaGVhZGVyLnVjb2RlX29m ZiwKLQkJCQkgICAgICBpbWctPnVjb2RlX2RhdGEsIGltZy0+dWNvZGVfc2l6ZSk7CisJCQkJICAg ICAgX2ltZy0+dWNvZGVfZGF0YSwgX2ltZy0+dWNvZGVfc2l6ZSk7CiAKIAkJcG9zICs9IHNpemVv ZihpbWctPndwcl9oZWFkZXIpOwogCX0KQEAgLTM4MCwxMyArNDA0LDEyIEBAIGFjcl9yMzUyX3By ZXBhcmVfbHNfYmxvYihzdHJ1Y3QgbnZrbV9hY3JfcjM1MiAqYWNyLCB1NjQgd3ByX2FkZHIsIHUz MiB3cHJfc2l6ZSwKIAlmb3JfZWFjaF9zZXRfYml0KGZhbGNvbl9pZCwgJm1hbmFnZWRfZmFsY29u cywgTlZLTV9GQUxDT05fRU5EKSB7CiAJCXN0cnVjdCBsc191Y29kZV9pbWcgKmltZzsKIAotCQlp bWcgPSBsc191Y29kZV9pbWdfbG9hZChzdWJkZXYsCi0JCQkJCWFjci0+ZnVuYy0+bHNfZnVuY1tm YWxjb25faWRdLT5sb2FkKTsKLQorCQlpbWcgPSBhY3ItPmZ1bmMtPmxzX3Vjb2RlX2ltZ19sb2Fk KGFjciwgZmFsY29uX2lkKTsKIAkJaWYgKElTX0VSUihpbWcpKSB7CiAJCQlyZXQgPSBQVFJfRVJS KGltZyk7CiAJCQlnb3RvIGNsZWFudXA7CiAJCX0KKwogCQlsaXN0X2FkZF90YWlsKCZpbWctPm5v ZGUsICZpbWdzKTsKIAkJbWFuYWdlZF9jb3VudCsrOwogCX0KQEAgLTM5NSw3ICs0MTgsNyBAQCBh Y3JfcjM1Ml9wcmVwYXJlX2xzX2Jsb2Ioc3RydWN0IG52a21fYWNyX3IzNTIgKmFjciwgdTY0IHdw cl9hZGRyLCB1MzIgd3ByX3NpemUsCiAJICogRmlsbCB0aGUgV1BSIGFuZCBMU0YgaGVhZGVycyB3 aXRoIHRoZSByaWdodCBvZmZzZXRzIGFuZCBjb21wdXRlCiAJICogcmVxdWlyZWQgV1BSIHNpemUK IAkgKi8KLQlpbWFnZV93cHJfc2l6ZSA9IGFjcl9yMzUyX2xzX2ZpbGxfaGVhZGVycyhhY3IsICZp bWdzKTsKKwlpbWFnZV93cHJfc2l6ZSA9IGFjci0+ZnVuYy0+bHNfZmlsbF9oZWFkZXJzKGFjciwg JmltZ3MpOwogCWltYWdlX3dwcl9zaXplID0gQUxJR04oaW1hZ2Vfd3ByX3NpemUsIFdQUl9BTElH Tk1FTlQpOwogCiAJLyogQWxsb2NhdGUgR1BVIG9iamVjdCB0aGF0IHdpbGwgY29udGFpbiB0aGUg V1BSIHJlZ2lvbiAqLwpAQCAtNDI0LDEzICs0NDcsMTQgQEAgYWNyX3IzNTJfcHJlcGFyZV9sc19i bG9iKHN0cnVjdCBudmttX2Fjcl9yMzUyICphY3IsIHU2NCB3cHJfYWRkciwgdTMyIHdwcl9zaXpl LAogCX0KIAogCS8qIFdyaXRlIExTIGJsb2IgKi8KLQlyZXQgPSBsc191Y29kZV9tZ3Jfd3JpdGVf d3ByKGFjciwgJmltZ3MsIGFjci0+bHNfYmxvYiwgd3ByX2FkZHIpOworCXJldCA9IGFjci0+ZnVu Yy0+bHNfd3JpdGVfd3ByKGFjciwgJmltZ3MsIGFjci0+bHNfYmxvYiwgd3ByX2FkZHIpOwogCWlm IChyZXQpCiAJCW52a21fZ3B1b2JqX2RlbCgmYWNyLT5sc19ibG9iKTsKIAogY2xlYW51cDoKIAls aXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoaW1nLCB0LCAmaW1ncywgbm9kZSkgewogCQlrZnJlZShp bWctPnVjb2RlX2RhdGEpOworCQlrZnJlZShpbWctPnNpZyk7CiAJCWtmcmVlKGltZyk7CiAJfQog CkBAIC04NTksNiArODgzLDkgQEAgY29uc3Qgc3RydWN0IG52a21fYWNyX3IzNTJfZnVuYwogYWNy X3IzNTJfZnVuYyA9IHsKIAkuZ2VuZXJhdGVfaHNfYmxfZGVzYyA9IGFjcl9yMzUyX2dlbmVyYXRl X2hsX2JsX2Rlc2MsCiAJLmhzX2JsX2Rlc2Nfc2l6ZSA9IHNpemVvZihzdHJ1Y3QgYWNyX3IzNTJf Zmxjbl9ibF9kZXNjKSwKKwkubHNfdWNvZGVfaW1nX2xvYWQgPSBhY3JfcjM1Ml9sc191Y29kZV9p bWdfbG9hZCwKKwkubHNfZmlsbF9oZWFkZXJzID0gYWNyX3IzNTJfbHNfZmlsbF9oZWFkZXJzLAor CS5sc193cml0ZV93cHIgPSBhY3JfcjM1Ml9sc193cml0ZV93cHIsCiAJLmxzX2Z1bmMgPSB7CiAJ CVtOVktNX0ZBTENPTl9GRUNTXSA9ICZhY3JfcjM1Ml9sc19mZWNzX2Z1bmMsCiAJCVtOVktNX0ZB TENPTl9HUENDU10gPSAmYWNyX3IzNTJfbHNfZ3BjY3NfZnVuYywKZGlmZiAtLWdpdCBhL2RybS9u b3V2ZWF1L252a20vc3ViZGV2L3NlY2Jvb3QvYWNyX3IzNTIuaCBiL2RybS9ub3V2ZWF1L252a20v c3ViZGV2L3NlY2Jvb3QvYWNyX3IzNTIuaAppbmRleCAxZDAxMzhiNDFiMTcuLjZkMjFiY2FjNjZk MiAxMDA2NDQKLS0tIGEvZHJtL25vdXZlYXUvbnZrbS9zdWJkZXYvc2VjYm9vdC9hY3JfcjM1Mi5o CisrKyBiL2RybS9ub3V2ZWF1L252a20vc3ViZGV2L3NlY2Jvb3QvYWNyX3IzNTIuaApAQCAtMjMs MTEgKzIzLDExNiBAQAogI2RlZmluZSBfX05WS01fU0VDQk9PVF9BQ1JfUjM1Ml9IX18KIAogI2lu Y2x1ZGUgImFjci5oIgorI2luY2x1ZGUgImxzX3Vjb2RlLmgiCiAKIHN0cnVjdCBsc191Y29kZV9p bWc7CiAKICNkZWZpbmUgQUNSX1IzNTJfTUFYX0FQUFMgOAogCisvKgorICoKKyAqIExTIGJsb2Ig c3RydWN0dXJlcworICoKKyAqLworCisvKioKKyAqIHN0cnVjdCBhY3JfcjM1Ml9sc2ZfbHNiX2hl YWRlciAtIExTIGZpcm13YXJlIGhlYWRlcgorICogQHNpZ25hdHVyZToJCXNpZ25hdHVyZSB0byB2 ZXJpZnkgdGhlIGZpcm13YXJlIGFnYWluc3QKKyAqIEB1Y29kZV9vZmY6CQlvZmZzZXQgb2YgdGhl IHVjb2RlIGJsb2IgaW4gdGhlIFdQUiByZWdpb24uIFRoZSB1Y29kZQorICogICAgICAgICAgICAg ICAgICAgICAgYmxvYiBjb250YWlucyB0aGUgYm9vdGxvYWRlciwgY29kZSBhbmQgZGF0YSBvZiB0 aGUKKyAqICAgICAgICAgICAgICAgICAgICAgIExTIGZhbGNvbgorICogQHVjb2RlX3NpemU6CQlz aXplIG9mIHRoZSB1Y29kZSBibG9iLCBpbmNsdWRpbmcgYm9vdGxvYWRlcgorICogQGRhdGFfc2l6 ZToJCXNpemUgb2YgdGhlIHVjb2RlIGJsb2IgZGF0YQorICogQGJsX2NvZGVfc2l6ZToJc2l6ZSBv ZiB0aGUgYm9vdGxvYWRlciBjb2RlCisgKiBAYmxfaW1lbV9vZmY6CW9mZnNldCBpbiBpbWVtIG9m IHRoZSBib290bG9hZGVyCisgKiBAYmxfZGF0YV9vZmY6CW9mZnNldCBvZiB0aGUgYm9vdGxvYWRl ciBkYXRhIGluIFdQUiByZWdpb24KKyAqIEBibF9kYXRhX3NpemU6CXNpemUgb2YgdGhlIGJvb3Rs b2FkZXIgZGF0YQorICogQGFwcF9jb2RlX29mZjoJb2Zmc2V0IG9mIHRoZSBhcHAgY29kZSByZWxh dGl2ZSB0byB1Y29kZV9vZmYKKyAqIEBhcHBfY29kZV9zaXplOglzaXplIG9mIHRoZSBhcHAgY29k ZQorICogQGFwcF9kYXRhX29mZjoJb2Zmc2V0IG9mIHRoZSBhcHAgZGF0YSByZWxhdGl2ZSB0byB1 Y29kZV9vZmYKKyAqIEBhcHBfZGF0YV9zaXplOglzaXplIG9mIHRoZSBhcHAgZGF0YQorICogQGZs YWdzOgkJZmxhZ3MgZm9yIHRoZSBzZWN1cmUgYm9vdGxvYWRlcgorICoKKyAqIFRoaXMgc3RydWN0 dXJlIGlzIHdyaXR0ZW4gaW50byB0aGUgV1BSIHJlZ2lvbiBmb3IgZWFjaCBtYW5hZ2VkIGZhbGNv bi4gRWFjaAorICogaW5zdGFuY2UgaXMgcmVmZXJlbmNlZCBieSB0aGUgbHNiX29mZnNldCBtZW1i ZXIgb2YgdGhlIGNvcnJlc3BvbmRpbmcKKyAqIGxzZl93cHJfaGVhZGVyLgorICovCitzdHJ1Y3Qg YWNyX3IzNTJfbHNmX2xzYl9oZWFkZXIgeworCS8qKgorCSAqIExTIGZhbGNvbiBzaWduYXR1cmVz CisJICogQHByZF9rZXlzOgkJc2lnbmF0dXJlIHRvIHVzZSBpbiBwcm9kdWN0aW9uIG1vZGUKKwkg KiBAZGdiX2tleXM6CQlzaWduYXR1cmUgdG8gdXNlIGluIGRlYnVnIG1vZGUKKwkgKiBAYl9wcmRf cHJlc2VudDoJd2hldGhlciB0aGUgcHJvZHVjdGlvbiBrZXkgaXMgcHJlc2VudAorCSAqIEBiX2Rn Yl9wcmVzZW50Ogl3aGV0aGVyIHRoZSBkZWJ1ZyBrZXkgaXMgcHJlc2VudAorCSAqIEBmYWxjb25f aWQ6CQlJRCBvZiB0aGUgZmFsY29uIHRoZSB1Y29kZSBhcHBsaWVzIHRvCisJICovCisJc3RydWN0 IHsKKwkJdTggcHJkX2tleXNbMl1bMTZdOworCQl1OCBkYmdfa2V5c1syXVsxNl07CisJCXUzMiBi X3ByZF9wcmVzZW50OworCQl1MzIgYl9kYmdfcHJlc2VudDsKKwkJdTMyIGZhbGNvbl9pZDsKKwl9 IHNpZ25hdHVyZTsKKwl1MzIgdWNvZGVfb2ZmOworCXUzMiB1Y29kZV9zaXplOworCXUzMiBkYXRh X3NpemU7CisJdTMyIGJsX2NvZGVfc2l6ZTsKKwl1MzIgYmxfaW1lbV9vZmY7CisJdTMyIGJsX2Rh dGFfb2ZmOworCXUzMiBibF9kYXRhX3NpemU7CisJdTMyIGFwcF9jb2RlX29mZjsKKwl1MzIgYXBw X2NvZGVfc2l6ZTsKKwl1MzIgYXBwX2RhdGFfb2ZmOworCXUzMiBhcHBfZGF0YV9zaXplOworCXUz MiBmbGFnczsKKyNkZWZpbmUgTFNGX0ZMQUdfTE9BRF9DT0RFX0FUXzAJCTEKKyNkZWZpbmUgTFNG X0ZMQUdfRE1BQ1RMX1JFUV9DVFgJCTQKKyNkZWZpbmUgTFNGX0ZMQUdfRk9SQ0VfUFJJVl9MT0FE CTgKK307CisKKy8qKgorICogc3RydWN0IGFjcl9yMzUyX2xzZl93cHJfaGVhZGVyIC0gTFMgYmxv YiBXUFIgSGVhZGVyCisgKiBAZmFsY29uX2lkOgkJTFMgZmFsY29uIElECisgKiBAbHNiX29mZnNl dDoJCW9mZnNldCBvZiB0aGUgbHNiX2xzZl9oZWFkZXIgaW4gdGhlIFdQUiByZWdpb24KKyAqIEBi b290c3RyYXBfb3duZXI6CXNlY3VyZSBmYWxjb24gcmVwb25zaWJsZSBmb3IgYm9vdHN0cmFwcGlu ZyB0aGUgTFMgZmFsY29uCisgKiBAbGF6eV9ib290c3RyYXA6CXNraXAgYm9vdHN0cmFwcGluZyBi eSBBQ1IKKyAqIEBzdGF0dXM6CQlib290c3RyYXBwaW5nIHN0YXR1cworICoKKyAqIEFuIGFycmF5 IG9mIHRoZXNlIGlzIHdyaXR0ZW4gYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgV1BSIHJlZ2lvbiwg b25lIGZvcgorICogZWFjaCBtYW5hZ2VkIGZhbGNvbi4gVGhlIGFycmF5IGlzIHRlcm1pbmF0ZWQg YnkgYW4gaW5zdGFuY2Ugd2hpY2ggZmFsY29uX2lkCisgKiBpcyBMU0ZfRkFMQ09OX0lEX0lOVkFM SUQuCisgKi8KK3N0cnVjdCBhY3JfcjM1Ml9sc2Zfd3ByX2hlYWRlciB7CisJdTMyIGZhbGNvbl9p ZDsKKwl1MzIgbHNiX29mZnNldDsKKwl1MzIgYm9vdHN0cmFwX293bmVyOworCXUzMiBsYXp5X2Jv b3RzdHJhcDsKKwl1MzIgc3RhdHVzOworI2RlZmluZSBMU0ZfSU1BR0VfU1RBVFVTX05PTkUJCQkJ MAorI2RlZmluZSBMU0ZfSU1BR0VfU1RBVFVTX0NPUFkJCQkJMQorI2RlZmluZSBMU0ZfSU1BR0Vf U1RBVFVTX1ZBTElEQVRJT05fQ09ERV9GQUlMRUQJCTIKKyNkZWZpbmUgTFNGX0lNQUdFX1NUQVRV U19WQUxJREFUSU9OX0RBVEFfRkFJTEVECQkzCisjZGVmaW5lIExTRl9JTUFHRV9TVEFUVVNfVkFM SURBVElPTl9ET05FCQk0CisjZGVmaW5lIExTRl9JTUFHRV9TVEFUVVNfVkFMSURBVElPTl9TS0lQ UEVECQk1CisjZGVmaW5lIExTRl9JTUFHRV9TVEFUVVNfQk9PVFNUUkFQX1JFQURZCQk2Cit9Owor CisvKioKKyAqIHN0cnVjdCBsc191Y29kZV9pbWdfcjM1MiAtIHVjb2RlIGltYWdlIGF1Z21lbnRl ZCB3aXRoIHIzNTIgaGVhZGVycworICovCitzdHJ1Y3QgbHNfdWNvZGVfaW1nX3IzNTIgeworCXN0 cnVjdCBsc191Y29kZV9pbWcgYmFzZTsKKworCXN0cnVjdCBhY3JfcjM1Ml9sc2Zfd3ByX2hlYWRl ciB3cHJfaGVhZGVyOworCXN0cnVjdCBhY3JfcjM1Ml9sc2ZfbHNiX2hlYWRlciBsc2JfaGVhZGVy OworfTsKKyNkZWZpbmUgbHNfdWNvZGVfaW1nX3IzNTIoaSkgY29udGFpbmVyX29mKGksIHN0cnVj dCBsc191Y29kZV9pbWdfcjM1MiwgYmFzZSkKKworCisvKgorICogSFMgYmxvYiBzdHJ1Y3R1cmVz CisgKi8KKwogc3RydWN0IGhzZl9sb2FkX2hlYWRlcl9hcHAgewogCXUzMiBzZWNfY29kZV9vZmY7 CiAJdTMyIHNlY19jb2RlX3NpemU7CkBAIC02Miw2ICsxNjcsOCBAQCBzdHJ1Y3QgbnZrbV9hY3Jf cjM1Ml9sc19mdW5jIHsKIAl1MzIgbGhkcl9mbGFnczsKIH07CiAKK3N0cnVjdCBudmttX2Fjcl9y MzUyOworCiAvKioKICAqIHN0cnVjdCBudmttX2Fjcl9yMzUyX2Z1bmMgLSBtYW5hZ2VzIG51YW5j ZXMgYmV0d2VlbiBBQ1IgdmVyc2lvbnMKICAqCkBAIC03NCw2ICsxODEsMTIgQEAgc3RydWN0IG52 a21fYWNyX3IzNTJfZnVuYyB7CiAJCQkJICAgIHU2NCk7CiAJdTMyIGhzX2JsX2Rlc2Nfc2l6ZTsK IAorCXN0cnVjdCBsc191Y29kZV9pbWcgKigqbHNfdWNvZGVfaW1nX2xvYWQpKGNvbnN0IHN0cnVj dCBudmttX2Fjcl9yMzUyICosCisJCQkJCQkgIGVudW0gbnZrbV9mYWxjb25pZHgpOworCWludCAo KmxzX2ZpbGxfaGVhZGVycykoc3RydWN0IG52a21fYWNyX3IzNTIgKiwgc3RydWN0IGxpc3RfaGVh ZCAqKTsKKwlpbnQgKCpsc193cml0ZV93cHIpKHN0cnVjdCBudmttX2Fjcl9yMzUyICosIHN0cnVj dCBsaXN0X2hlYWQgKiwKKwkJCSAgICBzdHJ1Y3QgbnZrbV9ncHVvYmogKiwgdTMyKTsKKwogCWNv bnN0IHN0cnVjdCBudmttX2Fjcl9yMzUyX2xzX2Z1bmMgKmxzX2Z1bmNbTlZLTV9GQUxDT05fRU5E XTsKIH07CiAKQEAgLTEyNCw0ICsyMzcsMTAgQEAgc3RydWN0IG52a21fYWNyX3IzNTIgewogCiBz dHJ1Y3QgbnZrbV9hY3IgKl9udmttX2Fjcl9yMzUyX25ldyhjb25zdCBzdHJ1Y3QgbnZrbV9hY3Jf cjM1Ml9mdW5jICopOwogCitzdHJ1Y3QgbHNfdWNvZGVfaW1nICphY3JfcjM1Ml9sc191Y29kZV9p bWdfbG9hZChjb25zdCBzdHJ1Y3QgbnZrbV9hY3JfcjM1MiAqLAorCQkJCQkJZW51bSBudmttX2Zh bGNvbmlkeCk7CitpbnQgYWNyX3IzNTJfbHNfZmlsbF9oZWFkZXJzKHN0cnVjdCBudmttX2Fjcl9y MzUyICosIHN0cnVjdCBsaXN0X2hlYWQgKik7CitpbnQgYWNyX3IzNTJfbHNfd3JpdGVfd3ByKHN0 cnVjdCBudmttX2Fjcl9yMzUyICosIHN0cnVjdCBsaXN0X2hlYWQgKiwKKwkJCSAgc3RydWN0IG52 a21fZ3B1b2JqICosIHUzMik7CisKICNlbmRpZgpkaWZmIC0tZ2l0IGEvZHJtL25vdXZlYXUvbnZr bS9zdWJkZXYvc2VjYm9vdC9hY3JfcjM2MS5jIGIvZHJtL25vdXZlYXUvbnZrbS9zdWJkZXYvc2Vj Ym9vdC9hY3JfcjM2MS5jCmluZGV4IDVhNTI5MDhjZjlkOS4uYjk3MjFjZDAxODg4IDEwMDY0NAot LS0gYS9kcm0vbm91dmVhdS9udmttL3N1YmRldi9zZWNib290L2Fjcl9yMzYxLmMKKysrIGIvZHJt L25vdXZlYXUvbnZrbS9zdWJkZXYvc2VjYm9vdC9hY3JfcjM2MS5jCkBAIC0yMSw3ICsyMSw2IEBA CiAgKi8KIAogI2luY2x1ZGUgImFjcl9yMzUyLmgiCi0jaW5jbHVkZSAibHNfdWNvZGUuaCIKIAog LyoqCiAgKiBzdHJ1Y3QgYWNyX3IzNjFfZmxjbl9ibF9kZXNjIC0gRE1FTSBib290bG9hZGVyIGRl c2NyaXB0b3IKQEAgLTYyLDExICs2MSwxMiBAQCBzdHJ1Y3QgYWNyX3IzNjFfZmxjbl9ibF9kZXNj IHsKIAogc3RhdGljIHZvaWQKIGFjcl9yMzYxX2dlbmVyYXRlX2xzX2JsX2Rlc2MoY29uc3Qgc3Ry dWN0IG52a21fYWNyICphY3IsCi0JCQkgICAgIGNvbnN0IHN0cnVjdCBsc191Y29kZV9pbWcgKmlt ZywgdTY0IHdwcl9hZGRyLAorCQkJICAgICBjb25zdCBzdHJ1Y3QgbHNfdWNvZGVfaW1nICpfaW1n LCB1NjQgd3ByX2FkZHIsCiAJCQkgICAgIHZvaWQgKl9kZXNjKQogeworCXN0cnVjdCBsc191Y29k ZV9pbWdfcjM1MiAqaW1nID0gbHNfdWNvZGVfaW1nX3IzNTIoX2ltZyk7CiAJc3RydWN0IGFjcl9y MzYxX2ZsY25fYmxfZGVzYyAqZGVzYyA9IF9kZXNjOwotCWNvbnN0IHN0cnVjdCBsc191Y29kZV9p bWdfZGVzYyAqcGRlc2MgPSAmaW1nLT51Y29kZV9kZXNjOworCWNvbnN0IHN0cnVjdCBsc191Y29k ZV9pbWdfZGVzYyAqcGRlc2MgPSAmaW1nLT5iYXNlLnVjb2RlX2Rlc2M7CiAJdTY0IGJhc2U7CiAK IAliYXNlID0gd3ByX2FkZHIgKyBpbWctPmxzYl9oZWFkZXIudWNvZGVfb2ZmICsgcGRlc2MtPmFw cF9zdGFydF9vZmZzZXQ7CkBAIC0xMjQsNiArMTI0LDkgQEAgY29uc3Qgc3RydWN0IG52a21fYWNy X3IzNTJfZnVuYwogYWNyX3IzNjFfZnVuYyA9IHsKIAkuZ2VuZXJhdGVfaHNfYmxfZGVzYyA9IGFj cl9yMzYxX2dlbmVyYXRlX2hsX2JsX2Rlc2MsCiAJLmhzX2JsX2Rlc2Nfc2l6ZSA9IHNpemVvZihz dHJ1Y3QgYWNyX3IzNjFfZmxjbl9ibF9kZXNjKSwKKwkubHNfdWNvZGVfaW1nX2xvYWQgPSBhY3Jf cjM1Ml9sc191Y29kZV9pbWdfbG9hZCwKKwkubHNfZmlsbF9oZWFkZXJzID0gYWNyX3IzNTJfbHNf ZmlsbF9oZWFkZXJzLAorCS5sc193cml0ZV93cHIgPSBhY3JfcjM1Ml9sc193cml0ZV93cHIsCiAJ LmxzX2Z1bmMgPSB7CiAJCVtOVktNX0ZBTENPTl9GRUNTXSA9ICZhY3JfcjM2MV9sc19mZWNzX2Z1 bmMsCiAJCVtOVktNX0ZBTENPTl9HUENDU10gPSAmYWNyX3IzNjFfbHNfZ3BjY3NfZnVuYywKZGlm ZiAtLWdpdCBhL2RybS9ub3V2ZWF1L252a20vc3ViZGV2L3NlY2Jvb3QvbHNfdWNvZGUuaCBiL2Ry bS9ub3V2ZWF1L252a20vc3ViZGV2L3NlY2Jvb3QvbHNfdWNvZGUuaAppbmRleCAzZDhjNDJlMTE4 NDcuLjdmNDI5MmY3NDBiNSAxMDA2NDQKLS0tIGEvZHJtL25vdXZlYXUvbnZrbS9zdWJkZXYvc2Vj Ym9vdC9sc191Y29kZS5oCisrKyBiL2RybS9ub3V2ZWF1L252a20vc3ViZGV2L3NlY2Jvb3QvbHNf dWNvZGUuaApAQCAtMjcsOTggKzI3LDYgQEAKICNpbmNsdWRlIDxjb3JlL2ZhbGNvbi5oPgogI2lu Y2x1ZGUgPGNvcmUvc3ViZGV2Lmg+CiAKLS8qCi0gKgotICogTFMgYmxvYiBzdHJ1Y3R1cmVzCi0g KgotICovCi0KLS8qKgotICogc3RydWN0IGxzZl91Y29kZV9kZXNjIC0gTFMgZmFsY29uIHNpZ25h dHVyZXMKLSAqIEBwcmRfa2V5czoJCXNpZ25hdHVyZSB0byB1c2Ugd2hlbiB0aGUgR1BVIGlzIGlu IHByb2R1Y3Rpb24gbW9kZQotICogQGRnYl9rZXlzOgkJc2lnbmF0dXJlIHRvIHVzZSB3aGVuIHRo ZSBHUFUgaXMgaW4gZGVidWcgbW9kZQotICogQGJfcHJkX3ByZXNlbnQ6CXdoZXRoZXIgdGhlIHBy b2R1Y3Rpb24ga2V5IGlzIHByZXNlbnQKLSAqIEBiX2RnYl9wcmVzZW50Ogl3aGV0aGVyIHRoZSBk ZWJ1ZyBrZXkgaXMgcHJlc2VudAotICogQGZhbGNvbl9pZDoJCUlEIG9mIHRoZSBmYWxjb24gdGhl IHVjb2RlIGFwcGxpZXMgdG8KLSAqCi0gKiBEaXJlY3RseSBsb2FkZWQgZnJvbSBhIHNpZ25hdHVy ZSBmaWxlLgotICovCi1zdHJ1Y3QgbHNmX3Vjb2RlX2Rlc2MgewotCXU4IHByZF9rZXlzWzJdWzE2 XTsKLQl1OCBkYmdfa2V5c1syXVsxNl07Ci0JdTMyIGJfcHJkX3ByZXNlbnQ7Ci0JdTMyIGJfZGJn X3ByZXNlbnQ7Ci0JdTMyIGZhbGNvbl9pZDsKLX07Ci0KLS8qKgotICogc3RydWN0IGxzZl9sc2Jf aGVhZGVyIC0gTFMgZmlybXdhcmUgaGVhZGVyCi0gKiBAc2lnbmF0dXJlOgkJc2lnbmF0dXJlIHRv IHZlcmlmeSB0aGUgZmlybXdhcmUgYWdhaW5zdAotICogQHVjb2RlX29mZjoJCW9mZnNldCBvZiB0 aGUgdWNvZGUgYmxvYiBpbiB0aGUgV1BSIHJlZ2lvbi4gVGhlIHVjb2RlCi0gKiAgICAgICAgICAg ICAgICAgICAgICBibG9iIGNvbnRhaW5zIHRoZSBib290bG9hZGVyLCBjb2RlIGFuZCBkYXRhIG9m IHRoZQotICogICAgICAgICAgICAgICAgICAgICAgTFMgZmFsY29uCi0gKiBAdWNvZGVfc2l6ZToJ CXNpemUgb2YgdGhlIHVjb2RlIGJsb2IsIGluY2x1ZGluZyBib290bG9hZGVyCi0gKiBAZGF0YV9z aXplOgkJc2l6ZSBvZiB0aGUgdWNvZGUgYmxvYiBkYXRhCi0gKiBAYmxfY29kZV9zaXplOglzaXpl IG9mIHRoZSBib290bG9hZGVyIGNvZGUKLSAqIEBibF9pbWVtX29mZjoJb2Zmc2V0IGluIGltZW0g b2YgdGhlIGJvb3Rsb2FkZXIKLSAqIEBibF9kYXRhX29mZjoJb2Zmc2V0IG9mIHRoZSBib290bG9h ZGVyIGRhdGEgaW4gV1BSIHJlZ2lvbgotICogQGJsX2RhdGFfc2l6ZToJc2l6ZSBvZiB0aGUgYm9v dGxvYWRlciBkYXRhCi0gKiBAYXBwX2NvZGVfb2ZmOglvZmZzZXQgb2YgdGhlIGFwcCBjb2RlIHJl bGF0aXZlIHRvIHVjb2RlX29mZgotICogQGFwcF9jb2RlX3NpemU6CXNpemUgb2YgdGhlIGFwcCBj b2RlCi0gKiBAYXBwX2RhdGFfb2ZmOglvZmZzZXQgb2YgdGhlIGFwcCBkYXRhIHJlbGF0aXZlIHRv IHVjb2RlX29mZgotICogQGFwcF9kYXRhX3NpemU6CXNpemUgb2YgdGhlIGFwcCBkYXRhCi0gKiBA ZmxhZ3M6CQlmbGFncyBmb3IgdGhlIHNlY3VyZSBib290bG9hZGVyCi0gKgotICogVGhpcyBzdHJ1 Y3R1cmUgaXMgd3JpdHRlbiBpbnRvIHRoZSBXUFIgcmVnaW9uIGZvciBlYWNoIG1hbmFnZWQgZmFs Y29uLiBFYWNoCi0gKiBpbnN0YW5jZSBpcyByZWZlcmVuY2VkIGJ5IHRoZSBsc2Jfb2Zmc2V0IG1l bWJlciBvZiB0aGUgY29ycmVzcG9uZGluZwotICogbHNmX3dwcl9oZWFkZXIuCi0gKi8KLXN0cnVj dCBsc2ZfbHNiX2hlYWRlciB7Ci0Jc3RydWN0IGxzZl91Y29kZV9kZXNjIHNpZ25hdHVyZTsKLQl1 MzIgdWNvZGVfb2ZmOwotCXUzMiB1Y29kZV9zaXplOwotCXUzMiBkYXRhX3NpemU7Ci0JdTMyIGJs X2NvZGVfc2l6ZTsKLQl1MzIgYmxfaW1lbV9vZmY7Ci0JdTMyIGJsX2RhdGFfb2ZmOwotCXUzMiBi bF9kYXRhX3NpemU7Ci0JdTMyIGFwcF9jb2RlX29mZjsKLQl1MzIgYXBwX2NvZGVfc2l6ZTsKLQl1 MzIgYXBwX2RhdGFfb2ZmOwotCXUzMiBhcHBfZGF0YV9zaXplOwotCXUzMiBmbGFnczsKLSNkZWZp bmUgTFNGX0ZMQUdfTE9BRF9DT0RFX0FUXzAJCTEKLSNkZWZpbmUgTFNGX0ZMQUdfRE1BQ1RMX1JF UV9DVFgJCTQKLSNkZWZpbmUgTFNGX0ZMQUdfRk9SQ0VfUFJJVl9MT0FECTgKLX07Ci0KLS8qKgot ICogc3RydWN0IGxzZl93cHJfaGVhZGVyIC0gTFMgYmxvYiBXUFIgSGVhZGVyCi0gKiBAZmFsY29u X2lkOgkJTFMgZmFsY29uIElECi0gKiBAbHNiX29mZnNldDoJCW9mZnNldCBvZiB0aGUgbHNiX2xz Zl9oZWFkZXIgaW4gdGhlIFdQUiByZWdpb24KLSAqIEBib290c3RyYXBfb3duZXI6CXNlY3VyZSBm YWxjb24gcmVwb25zaWJsZSBmb3IgYm9vdHN0cmFwcGluZyB0aGUgTFMgZmFsY29uCi0gKiBAbGF6 eV9ib290c3RyYXA6CXNraXAgYm9vdHN0cmFwcGluZyBieSBBQ1IKLSAqIEBzdGF0dXM6CQlib290 c3RyYXBwaW5nIHN0YXR1cwotICoKLSAqIEFuIGFycmF5IG9mIHRoZXNlIGlzIHdyaXR0ZW4gYXQg dGhlIGJlZ2lubmluZyBvZiB0aGUgV1BSIHJlZ2lvbiwgb25lIGZvcgotICogZWFjaCBtYW5hZ2Vk IGZhbGNvbi4gVGhlIGFycmF5IGlzIHRlcm1pbmF0ZWQgYnkgYW4gaW5zdGFuY2Ugd2hpY2ggZmFs Y29uX2lkCi0gKiBpcyBMU0ZfRkFMQ09OX0lEX0lOVkFMSUQuCi0gKi8KLXN0cnVjdCBsc2Zfd3By X2hlYWRlciB7Ci0JdTMyIGZhbGNvbl9pZDsKLQl1MzIgbHNiX29mZnNldDsKLQl1MzIgYm9vdHN0 cmFwX293bmVyOwotCXUzMiBsYXp5X2Jvb3RzdHJhcDsKLQl1MzIgc3RhdHVzOwotI2RlZmluZSBM U0ZfSU1BR0VfU1RBVFVTX05PTkUJCQkJMAotI2RlZmluZSBMU0ZfSU1BR0VfU1RBVFVTX0NPUFkJ CQkJMQotI2RlZmluZSBMU0ZfSU1BR0VfU1RBVFVTX1ZBTElEQVRJT05fQ09ERV9GQUlMRUQJCTIK LSNkZWZpbmUgTFNGX0lNQUdFX1NUQVRVU19WQUxJREFUSU9OX0RBVEFfRkFJTEVECQkzCi0jZGVm aW5lIExTRl9JTUFHRV9TVEFUVVNfVkFMSURBVElPTl9ET05FCQk0Ci0jZGVmaW5lIExTRl9JTUFH RV9TVEFUVVNfVkFMSURBVElPTl9TS0lQUEVECQk1Ci0jZGVmaW5lIExTRl9JTUFHRV9TVEFUVVNf Qk9PVFNUUkFQX1JFQURZCQk2Ci19OwotCiAKIC8qKgogICogc3RydWN0IGxzX3Vjb2RlX2ltZ19k ZXNjIC0gZGVzY3JpcHRvciBvZiBmaXJtd2FyZSBpbWFnZQpAQCAtMTc1LDggKzgzLDggQEAgc3Ry dWN0IGxzX3Vjb2RlX2ltZ19kZXNjIHsKICAqIEB1Y29kZV9kZXNjOgkJbG9hZGVkIG9yIGdlbmVy YXRlZCBtYXAgb2YgdWNvZGVfZGF0YQogICogQHVjb2RlX2RhdGE6CQlmaXJtd2FyZSBwYXlsb2Fk IChjb2RlIGFuZCBkYXRhKQogICogQHVjb2RlX3NpemU6CQlzaXplIGluIGJ5dGVzIG9mIGRhdGEg aW4gdWNvZGVfZGF0YQotICogQHdwcl9oZWFkZXI6CQlXUFIgaGVhZGVyIHRvIGJlIHdyaXR0ZW4g dG8gdGhlIExTIGJsb2IKLSAqIEBsc2JfaGVhZGVyOgkJTFNCIGhlYWRlciB0byBiZSB3cml0dGVu IHRvIHRoZSBMUyBibG9iCisgKiBAc2lnOgkJc2lnbmF0dXJlIGZvciB0aGlzIGZpcm13YXJlCisg KiBAc2lnOnNpemU6CQlzaXplIG9mIHRoZSBzaWduYXR1cmUgaW4gYnl0ZXMKICAqCiAgKiBQcmVw YXJpbmcgdGhlIFdQUiBMUyBibG9iIHJlcXVpcmVzIGluZm9ybWF0aW9uIGFib3V0IGFsbCB0aGUg TFMgZmlybXdhcmVzCiAgKiAoc2l6ZSwgZXRjKSB0byBiZSBrbm93bi4gVGhpcyBzdHJ1Y3R1cmUg Y29udGFpbnMgYWxsIHRoZSBkYXRhIG9mIG9uZSBMUwpAQCAtMTkwLDggKzk4LDggQEAgc3RydWN0 IGxzX3Vjb2RlX2ltZyB7CiAJdTggKnVjb2RlX2RhdGE7CiAJdTMyIHVjb2RlX3NpemU7CiAKLQlz dHJ1Y3QgbHNmX3dwcl9oZWFkZXIgd3ByX2hlYWRlcjsKLQlzdHJ1Y3QgbHNmX2xzYl9oZWFkZXIg bHNiX2hlYWRlcjsKKwl1OCAqc2lnOworCXUzMiBzaWdfc2l6ZTsKIH07CiAKIC8qKgpkaWZmIC0t Z2l0IGEvZHJtL25vdXZlYXUvbnZrbS9zdWJkZXYvc2VjYm9vdC9sc191Y29kZV9nci5jIGIvZHJt L25vdXZlYXUvbnZrbS9zdWJkZXYvc2VjYm9vdC9sc191Y29kZV9nci5jCmluZGV4IDFjMzJjYjBm MTZmOS4uNDBhNmRmNzdiYjhhIDEwMDY0NAotLS0gYS9kcm0vbm91dmVhdS9udmttL3N1YmRldi9z ZWNib290L2xzX3Vjb2RlX2dyLmMKKysrIGIvZHJtL25vdXZlYXUvbnZrbS9zdWJkZXYvc2VjYm9v dC9sc191Y29kZV9nci5jCkBAIC05MSwxMCArOTEsOSBAQCBsc191Y29kZV9pbWdfYnVpbGQoY29u c3Qgc3RydWN0IGZpcm13YXJlICpibCwgY29uc3Qgc3RydWN0IGZpcm13YXJlICpjb2RlLAogICov CiBzdGF0aWMgaW50CiBsc191Y29kZV9pbWdfbG9hZF9ncihjb25zdCBzdHJ1Y3QgbnZrbV9zdWJk ZXYgKnN1YmRldiwgc3RydWN0IGxzX3Vjb2RlX2ltZyAqaW1nLAotCQkgICAgIGNvbnN0IGNoYXIg KmZhbGNvbl9uYW1lLCBjb25zdCB1MzIgZmFsY29uX2lkKQorCQkgICAgIGNvbnN0IGNoYXIgKmZh bGNvbl9uYW1lKQogewotCWNvbnN0IHN0cnVjdCBmaXJtd2FyZSAqYmwsICpjb2RlLCAqZGF0YTsK LQlzdHJ1Y3QgbHNmX3Vjb2RlX2Rlc2MgKmxzZl9kZXNjOworCWNvbnN0IHN0cnVjdCBmaXJtd2Fy ZSAqYmwsICpjb2RlLCAqZGF0YSwgKnNpZzsKIAljaGFyIGZbNjRdOwogCWludCByZXQ7CiAKQEAg LTExMyw2ICsxMTIsMTcgQEAgbHNfdWNvZGVfaW1nX2xvYWRfZ3IoY29uc3Qgc3RydWN0IG52a21f c3ViZGV2ICpzdWJkZXYsIHN0cnVjdCBsc191Y29kZV9pbWcgKmltZywKIAlpZiAocmV0KQogCQln b3RvIGZyZWVfaW5zdDsKIAorCXNucHJpbnRmKGYsIHNpemVvZihmKSwgImdyLyVzX3NpZyIsIGZh bGNvbl9uYW1lKTsKKwlyZXQgPSBudmttX2Zpcm13YXJlX2dldChzdWJkZXYtPmRldmljZSwgZiwg JnNpZyk7CisJaWYgKHJldCkKKwkJZ290byBmcmVlX2RhdGE7CisJaW1nLT5zaWcgPSBrbWVtZHVw KHNpZy0+ZGF0YSwgc2lnLT5zaXplLCBHRlBfS0VSTkVMKTsKKwlpZiAoIWltZy0+c2lnKSB7CisJ CXJldCA9IC1FTk9NRU07CisJCWdvdG8gZnJlZV9zaWc7CisJfQorCWltZy0+c2lnX3NpemUgPSBz aWctPnNpemU7CisKIAlpbWctPnVjb2RlX2RhdGEgPSBsc191Y29kZV9pbWdfYnVpbGQoYmwsIGNv ZGUsIGRhdGEsCiAJCQkJCSAgICAgJmltZy0+dWNvZGVfZGVzYyk7CiAJaWYgKElTX0VSUihpbWct PnVjb2RlX2RhdGEpKSB7CkBAIC0xMjEsMjMgKzEzMSw4IEBAIGxzX3Vjb2RlX2ltZ19sb2FkX2dy KGNvbnN0IHN0cnVjdCBudmttX3N1YmRldiAqc3ViZGV2LCBzdHJ1Y3QgbHNfdWNvZGVfaW1nICpp bWcsCiAJfQogCWltZy0+dWNvZGVfc2l6ZSA9IGltZy0+dWNvZGVfZGVzYy5pbWFnZV9zaXplOwog Ci0Jc25wcmludGYoZiwgc2l6ZW9mKGYpLCAiZ3IvJXNfc2lnIiwgZmFsY29uX25hbWUpOwotCWxz Zl9kZXNjID0gbnZrbV9hY3JfbG9hZF9maXJtd2FyZShzdWJkZXYsIGYsIHNpemVvZigqbHNmX2Rl c2MpKTsKLQlpZiAoSVNfRVJSKGxzZl9kZXNjKSkgewotCQlyZXQgPSBQVFJfRVJSKGxzZl9kZXNj KTsKLQkJZ290byBmcmVlX2ltYWdlOwotCX0KLQkvKiBub3QgbmVlZGVkPyB0aGUgc2lnbmF0dXJl IHNob3VsZCBhbHJlYWR5IGhhdmUgdGhlIHJpZ2h0IHZhbHVlICovCi0JbHNmX2Rlc2MtPmZhbGNv bl9pZCA9IGZhbGNvbl9pZDsKLQltZW1jcHkoJmltZy0+bHNiX2hlYWRlci5zaWduYXR1cmUsIGxz Zl9kZXNjLCBzaXplb2YoKmxzZl9kZXNjKSk7Ci0JaW1nLT5mYWxjb25faWQgPSBsc2ZfZGVzYy0+ ZmFsY29uX2lkOwotCWtmcmVlKGxzZl9kZXNjKTsKLQotCS8qIHN1Y2Nlc3MgcGF0aCAtIG9ubHkg ZnJlZSByZXF1ZXN0ZWQgZmlybXdhcmUgZmlsZXMgKi8KLQlnb3RvIGZyZWVfZGF0YTsKLQotZnJl ZV9pbWFnZToKLQlrZnJlZShpbWctPnVjb2RlX2RhdGEpOworZnJlZV9zaWc6CisJbnZrbV9maXJt d2FyZV9wdXQoc2lnKTsKIGZyZWVfZGF0YToKIAludmttX2Zpcm13YXJlX3B1dChkYXRhKTsKIGZy ZWVfaW5zdDoKQEAgLTE1MiwxMiArMTQ3LDEyIEBAIGludAogYWNyX2xzX3Vjb2RlX2xvYWRfZmVj cyhjb25zdCBzdHJ1Y3QgbnZrbV9zdWJkZXYgKnN1YmRldiwKIAkJICAgICAgIHN0cnVjdCBsc191 Y29kZV9pbWcgKmltZykKIHsKLQlyZXR1cm4gbHNfdWNvZGVfaW1nX2xvYWRfZ3Ioc3ViZGV2LCBp bWcsICJmZWNzIiwgTlZLTV9GQUxDT05fRkVDUyk7CisJcmV0dXJuIGxzX3Vjb2RlX2ltZ19sb2Fk X2dyKHN1YmRldiwgaW1nLCAiZmVjcyIpOwogfQogCiBpbnQKIGFjcl9sc191Y29kZV9sb2FkX2dw Y2NzKGNvbnN0IHN0cnVjdCBudmttX3N1YmRldiAqc3ViZGV2LAogCQkJc3RydWN0IGxzX3Vjb2Rl X2ltZyAqaW1nKQogewotCXJldHVybiBsc191Y29kZV9pbWdfbG9hZF9ncihzdWJkZXYsIGltZywg ImdwY2NzIiwgTlZLTV9GQUxDT05fR1BDQ1MpOworCXJldHVybiBsc191Y29kZV9pbWdfbG9hZF9n cihzdWJkZXYsIGltZywgImdwY2NzIik7CiB9Ci0tIAoyLjEwLjAKCl9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk5vdXZlYXUgbWFpbGluZyBsaXN0Ck5vdXZl YXVAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21h aWxtYW4vbGlzdGluZm8vbm91dmVhdQo=