From mboxrd@z Thu Jan 1 00:00:00 1970 From: Julien Grall Subject: [PATCH v2 04/15] xen/arm: p2m: Find the memory attributes based on the p2m type Date: Thu, 28 Jul 2016 15:20:09 +0100 Message-ID: <1469715620-4670-5-git-send-email-julien.grall@arm.com> References: <1469715620-4670-1-git-send-email-julien.grall@arm.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1469715620-4670-1-git-send-email-julien.grall@arm.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xen.org Cc: proskurin@sec.in.tum.de, Julien Grall , sstabellini@kernel.org, steve.capper@arm.com, wei.chen@linaro.org List-Id: xen-devel@lists.xenproject.org Q3VycmVudGx5LCBtZm5fdG9fcDJtX2VudHJ5IGlzIHJlbHlpbmcgb24gdGhlIGNhbGxlciB0byBw cm92aWRlIHRoZQpjb3JyZWN0IG1lbW9yeSBhdHRyaWJ1dGUgYW5kIHdpbGwgZGVkdWNlIHRoZSBz aGFyYWJpbGl0eSBiYXNlZCBvbiBpdC4KClNvbWUgb2YgdGhlIGNhbGxlcnMsIHN1Y2ggYXMgcDJt X2NyZWF0ZV90YWJsZSwgYXJlIHVzaW5nIHNhbWUgbWVtb3J5CmF0dHJpYnV0ZSByZWdhcmRsZXNz IHRoZSB1bmRlcmx5aW5nIHAybSB0eXBlLiBGb3IgaW5zdGFuY2UsIHRoaXMgd2lsbApsZWFkIHRv IHVzZSBjaGFuZ2UgdGhlIG1lbW9yeSBhdHRyaWJ1dGUgZnJvbSBNQVRUUl9ERVYgdG8gTUFUVFJf TUVNIHdoZW4KYSBNTUlPIHN1cGVycGFnZSBpcyBzaGF0dGVyZWQuCgpGdXJ0aGVybW9yZSwgaXQg bWFrZXMgbW9yZSBkaWZmaWN1bHQgdG8gc3VwcG9ydCBkaWZmZXJlbnQgc2hhcmVhYmlsaXR5Cndp dGggdGhlIHNhbWUgbWVtb3J5IGF0dHJpYnV0ZS4KCkFsbCB0aGUgbWVtb3J5IGF0dHJpYnV0ZXMg Y291bGQgYmUgZGVkdWNlZCB2aWEgdGhlIHAybSB0eXBlLiBUaGlzIHdpbGwKc2ltcGxpZnkgdGhl IGNvZGUgYnkgZHJvcHBpbmcgb25lIHBhcmFtZXRlci4KClNpZ25lZC1vZmYtYnk6IEp1bGllbiBH cmFsbCA8anVsaWVuLmdyYWxsQGFybS5jb20+ClJldmlld2VkLWJ5OiBTdGVmYW5vIFN0YWJlbGxp bmkgPHNzdGFiZWxsaW5pQGtlcm5lbC5vcmc+CgotLS0KICAgIEkgYW0gbm90IHN1cmUgd2hldGhl ciBwMm1fZGlyZWN0X21taW9fYyAoY2FjaGVhYmxlIE1NSU8pIHNob3VsZCB1c2UKICAgIHRoZSBv dXRlci1zaGFyZWFiaWxpdHkgb3IgaW5uZXItc2hhcmVhYmlsaXR5LiBBbnkgb3BpbmlvbnM/Cgog ICAgQ2hhbmdlcyBpbiB2MjoKICAgICAgICAtIEZvcmdvdCB0byBhZGQgbXkgc2lnbmVkLW9mZi1i eQogICAgICAgIC0gQWRkIFN0ZWZhbm8ncyByZXZpZXdlZC1ieQotLS0KIHhlbi9hcmNoL2FybS9w Mm0uYyB8IDU1ICsrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDI0IGluc2VydGlvbnMoKyksIDMxIGRlbGV0aW9ucygt KQoKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL2FybS9wMm0uYyBiL3hlbi9hcmNoL2FybS9wMm0uYwpp bmRleCBjZmZiMTJlLi4wOGYzZjE3IDEwMDY0NAotLS0gYS94ZW4vYXJjaC9hcm0vcDJtLmMKKysr IGIveGVuL2FyY2gvYXJtL3AybS5jCkBAIC0zMjUsOCArMzI1LDcgQEAgc3RhdGljIHZvaWQgcDJt X3NldF9wZXJtaXNzaW9uKGxwYWVfdCAqZSwgcDJtX3R5cGVfdCB0LCBwMm1fYWNjZXNzX3QgYSkK ICAgICB9CiB9CiAKLXN0YXRpYyBscGFlX3QgbWZuX3RvX3AybV9lbnRyeShtZm5fdCBtZm4sIHVu c2lnbmVkIGludCBtYXR0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwMm1fdHlw ZV90IHQsIHAybV9hY2Nlc3NfdCBhKQorc3RhdGljIGxwYWVfdCBtZm5fdG9fcDJtX2VudHJ5KG1m bl90IG1mbiwgcDJtX3R5cGVfdCB0LCBwMm1fYWNjZXNzX3QgYSkKIHsKICAgICAvKgogICAgICAq IHNoLCB4biBhbmQgd3JpdGUgYml0IHdpbGwgYmUgZGVmaW5lZCBpbiB0aGUgZm9sbG93aW5nIHN3 aXRjaGVzCkBAIC0zMzUsNyArMzM0LDYgQEAgc3RhdGljIGxwYWVfdCBtZm5fdG9fcDJtX2VudHJ5 KG1mbl90IG1mbiwgdW5zaWduZWQgaW50IG1hdHRyLAogICAgIGxwYWVfdCBlID0gKGxwYWVfdCkg ewogICAgICAgICAucDJtLmFmID0gMSwKICAgICAgICAgLnAybS5yZWFkID0gMSwKLSAgICAgICAg LnAybS5tYXR0ciA9IG1hdHRyLAogICAgICAgICAucDJtLnRhYmxlID0gMSwKICAgICAgICAgLnAy bS52YWxpZCA9IDEsCiAgICAgICAgIC5wMm0udHlwZSA9IHQsCkBAIC0zNDMsMTggKzM0MSwyMSBA QCBzdGF0aWMgbHBhZV90IG1mbl90b19wMm1fZW50cnkobWZuX3QgbWZuLCB1bnNpZ25lZCBpbnQg bWF0dHIsCiAKICAgICBCVUlMRF9CVUdfT04ocDJtX21heF9yZWFsX3R5cGUgPiAoMSA8PCA0KSk7 CiAKLSAgICBzd2l0Y2ggKG1hdHRyKQorICAgIHN3aXRjaCAoIHQgKQogICAgIHsKLSAgICBjYXNl IE1BVFRSX01FTToKLSAgICAgICAgZS5wMm0uc2ggPSBMUEFFX1NIX0lOTkVSOworICAgIGNhc2Ug cDJtX21taW9fZGlyZWN0X25jOgorICAgICAgICBlLnAybS5tYXR0ciA9IE1BVFRSX0RFVjsKKyAg ICAgICAgZS5wMm0uc2ggPSBMUEFFX1NIX09VVEVSOwogICAgICAgICBicmVhazsKIAotICAgIGNh c2UgTUFUVFJfREVWOgorICAgIGNhc2UgcDJtX21taW9fZGlyZWN0X2M6CisgICAgICAgIGUucDJt Lm1hdHRyID0gTUFUVFJfTUVNOwogICAgICAgICBlLnAybS5zaCA9IExQQUVfU0hfT1VURVI7CiAg ICAgICAgIGJyZWFrOworCiAgICAgZGVmYXVsdDoKLSAgICAgICAgQlVHKCk7Ci0gICAgICAgIGJy ZWFrOworICAgICAgICBlLnAybS5tYXR0ciA9IE1BVFRSX01FTTsKKyAgICAgICAgZS5wMm0uc2gg PSBMUEFFX1NIX0lOTkVSOwogICAgIH0KIAogICAgIHAybV9zZXRfcGVybWlzc2lvbigmZSwgdCwg YSk7CkBAIC00MjIsNyArNDIzLDcgQEAgc3RhdGljIGludCBwMm1fY3JlYXRlX3RhYmxlKHN0cnVj dCBkb21haW4gKmQsIGxwYWVfdCAqZW50cnksCiAgICAgICAgICBmb3IgKCBpPTAgOyBpIDwgTFBB RV9FTlRSSUVTOyBpKysgKQogICAgICAgICAgewogICAgICAgICAgICAgIHB0ZSA9IG1mbl90b19w Mm1fZW50cnkobWZuX2FkZChtZm4sIGkgPDwgKGxldmVsX3NoaWZ0IC0gTFBBRV9TSElGVCkpLAot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTUFUVFJfTUVNLCB0LCBwMm0tPmRl ZmF1bHRfYWNjZXNzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQsIHAy bS0+ZGVmYXVsdF9hY2Nlc3MpOwogCiAgICAgICAgICAgICAgLyoKICAgICAgICAgICAgICAgKiBG aXJzdCBhbmQgc2Vjb25kIGxldmVsIHN1cGVyIHBhZ2VzIHNldCBwMm0udGFibGUgPSAwLCBidXQK QEAgLTQ0NCw3ICs0NDUsNyBAQCBzdGF0aWMgaW50IHAybV9jcmVhdGVfdGFibGUoc3RydWN0IGRv bWFpbiAqZCwgbHBhZV90ICplbnRyeSwKIAogICAgIHVubWFwX2RvbWFpbl9wYWdlKHApOwogCi0g ICAgcHRlID0gbWZuX3RvX3AybV9lbnRyeShfbWZuKHBhZ2VfdG9fbWZuKHBhZ2UpKSwgTUFUVFJf TUVNLCBwMm1faW52YWxpZCwKKyAgICBwdGUgPSBtZm5fdG9fcDJtX2VudHJ5KF9tZm4ocGFnZV90 b19tZm4ocGFnZSkpLCBwMm1faW52YWxpZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAy bS0+ZGVmYXVsdF9hY2Nlc3MpOwogCiAgICAgcDJtX3dyaXRlX3B0ZShlbnRyeSwgcHRlLCBmbHVz aF9jYWNoZSk7CkBAIC02NjUsNyArNjY2LDYgQEAgc3RhdGljIGludCBhcHBseV9vbmVfbGV2ZWwo c3RydWN0IGRvbWFpbiAqZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRyX3QgKmFk ZHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkcl90ICptYWRkciwKICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGJvb2xfdCAqZmx1c2gsCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICBpbnQgbWF0dHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwMm1fdHlwZV90IHQs CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwMm1fYWNjZXNzX3QgYSkKIHsKQEAgLTY5NCw3 ICs2OTQsNyBAQCBzdGF0aWMgaW50IGFwcGx5X29uZV9sZXZlbChzdHJ1Y3QgZG9tYWluICpkLAog ICAgICAgICAgICAgICAgIHJldHVybiByYzsKIAogICAgICAgICAgICAgLyogTmV3IG1hcHBpbmcg aXMgc3VwZXJwYWdlIGFsaWduZWQsIG1ha2UgaXQgKi8KLSAgICAgICAgICAgIHB0ZSA9IG1mbl90 b19wMm1fZW50cnkoX21mbigqbWFkZHIgPj4gUEFHRV9TSElGVCksIG1hdHRyLCB0LCBhKTsKKyAg ICAgICAgICAgIHB0ZSA9IG1mbl90b19wMm1fZW50cnkoX21mbigqbWFkZHIgPj4gUEFHRV9TSElG VCksIHQsIGEpOwogICAgICAgICAgICAgaWYgKCBsZXZlbCA8IDMgKQogICAgICAgICAgICAgICAg IHB0ZS5wMm0udGFibGUgPSAwOyAvKiBTdXBlcnBhZ2UgZW50cnkgKi8KIApAQCAtOTE0LDcgKzkx NCw2IEBAIHN0YXRpYyBpbnQgYXBwbHlfcDJtX2NoYW5nZXMoc3RydWN0IGRvbWFpbiAqZCwKICAg ICAgICAgICAgICAgICAgICAgIGdmbl90IHNnZm4sCiAgICAgICAgICAgICAgICAgICAgICB1bnNp Z25lZCBsb25nIG5yLAogICAgICAgICAgICAgICAgICAgICAgbWZuX3Qgc21mbiwKLSAgICAgICAg ICAgICAgICAgICAgIGludCBtYXR0ciwKICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IG1h c2ssCiAgICAgICAgICAgICAgICAgICAgICBwMm1fdHlwZV90IHQsCiAgICAgICAgICAgICAgICAg ICAgICBwMm1fYWNjZXNzX3QgYSkKQEAgLTEwNTMsNyArMTA1Miw3IEBAIHN0YXRpYyBpbnQgYXBw bHlfcDJtX2NoYW5nZXMoc3RydWN0IGRvbWFpbiAqZCwKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBsZXZlbCwgZmx1c2hfcHQsIG9wLAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHN0YXJ0X2dwYWRkciwgZW5kX2dwYWRkciwKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAmYWRkciwgJm1hZGRyLCAmZmx1c2gsCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgbWF0dHIsIHQsIGEpOworICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHQsIGEpOwogICAgICAgICAgICAgaWYgKCByZXQgPCAwICkgeyByYyA9IHJldCA7IGdv dG8gb3V0OyB9CiAgICAgICAgICAgICBjb3VudCArPSByZXQ7CiAKQEAgLTExNjIsNyArMTE2MSw3 IEBAIG91dDoKICAgICAgICAgICogbWFwcGluZy4KICAgICAgICAgICovCiAgICAgICAgIGFwcGx5 X3AybV9jaGFuZ2VzKGQsIFJFTU9WRSwgc2dmbiwgZ2ZuIC0gZ2ZuX3goc2dmbiksIHNtZm4sCi0g ICAgICAgICAgICAgICAgICAgICAgICAgIG1hdHRyLCAwLCBwMm1faW52YWxpZCwgZC0+YXJjaC5w Mm0uZGVmYXVsdF9hY2Nlc3MpOworICAgICAgICAgICAgICAgICAgICAgICAgICAwLCBwMm1faW52 YWxpZCwgZC0+YXJjaC5wMm0uZGVmYXVsdF9hY2Nlc3MpOwogICAgIH0KIAogICAgIHJldHVybiBy YzsKQEAgLTExNzIsMTAgKzExNzEsMTAgQEAgc3RhdGljIGlubGluZSBpbnQgcDJtX2luc2VydF9t YXBwaW5nKHN0cnVjdCBkb21haW4gKmQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZ2ZuX3Qgc3RhcnRfZ2ZuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHVuc2lnbmVkIGxvbmcgbnIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgbWZuX3QgbWZuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBt YXR0ciwgcDJtX3R5cGVfdCB0KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHAybV90eXBlX3QgdCkKIHsKICAgICByZXR1cm4gYXBwbHlfcDJtX2NoYW5nZXMoZCwgSU5TRVJU LCBzdGFydF9nZm4sIG5yLCBtZm4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdHRy LCAwLCB0LCBkLT5hcmNoLnAybS5kZWZhdWx0X2FjY2Vzcyk7CisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDAsIHQsIGQtPmFyY2gucDJtLmRlZmF1bHRfYWNjZXNzKTsKIH0KIAogc3RhdGlj IGlubGluZSBpbnQgcDJtX3JlbW92ZV9tYXBwaW5nKHN0cnVjdCBkb21haW4gKmQsCkBAIC0xMTg1 LDggKzExODQsNyBAQCBzdGF0aWMgaW5saW5lIGludCBwMm1fcmVtb3ZlX21hcHBpbmcoc3RydWN0 IGRvbWFpbiAqZCwKIHsKICAgICByZXR1cm4gYXBwbHlfcDJtX2NoYW5nZXMoZCwgUkVNT1ZFLCBz dGFydF9nZm4sIG5yLCBtZm4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGFyZ3Vt ZW50cyBiZWxvdyBub3QgdXNlZCB3aGVuIHJlbW92aW5nIG1hcHBpbmcgKi8KLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgTUFUVFJfTUVNLCAwLCBwMm1faW52YWxpZCwKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgZC0+YXJjaC5wMm0uZGVmYXVsdF9hY2Nlc3MpOworICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAwLCBwMm1faW52YWxpZCwgZC0+YXJjaC5wMm0uZGVmYXVsdF9h Y2Nlc3MpOwogfQogCiBpbnQgbWFwX3JlZ2lvbnNfcndfY2FjaGUoc3RydWN0IGRvbWFpbiAqZCwK QEAgLTExOTQsOCArMTE5Miw3IEBAIGludCBtYXBfcmVnaW9uc19yd19jYWNoZShzdHJ1Y3QgZG9t YWluICpkLAogICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgbnIsCiAgICAg ICAgICAgICAgICAgICAgICAgICAgbWZuX3QgbWZuKQogewotICAgIHJldHVybiBwMm1faW5zZXJ0 X21hcHBpbmcoZCwgZ2ZuLCBuciwgbWZuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg TUFUVFJfTUVNLCBwMm1fbW1pb19kaXJlY3RfYyk7CisgICAgcmV0dXJuIHAybV9pbnNlcnRfbWFw cGluZyhkLCBnZm4sIG5yLCBtZm4sIHAybV9tbWlvX2RpcmVjdF9jKTsKIH0KIAogaW50IHVubWFw X3JlZ2lvbnNfcndfY2FjaGUoc3RydWN0IGRvbWFpbiAqZCwKQEAgLTEyMTEsOCArMTIwOCw3IEBA IGludCBtYXBfbW1pb19yZWdpb25zKHN0cnVjdCBkb21haW4gKmQsCiAgICAgICAgICAgICAgICAg ICAgICB1bnNpZ25lZCBsb25nIG5yLAogICAgICAgICAgICAgICAgICAgICAgbWZuX3QgbWZuKQog ewotICAgIHJldHVybiBwMm1faW5zZXJ0X21hcHBpbmcoZCwgc3RhcnRfZ2ZuLCBuciwgbWZuLAot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTUFUVFJfREVWLCBwMm1fbW1pb19kaXJlY3Rf bmMpOworICAgIHJldHVybiBwMm1faW5zZXJ0X21hcHBpbmcoZCwgc3RhcnRfZ2ZuLCBuciwgbWZu LCBwMm1fbW1pb19kaXJlY3RfbmMpOwogfQogCiBpbnQgdW5tYXBfbW1pb19yZWdpb25zKHN0cnVj dCBkb21haW4gKmQsCkBAIC0xMjUwLDggKzEyNDYsNyBAQCBpbnQgZ3Vlc3RfcGh5c21hcF9hZGRf ZW50cnkoc3RydWN0IGRvbWFpbiAqZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNp Z25lZCBsb25nIHBhZ2Vfb3JkZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcDJtX3R5 cGVfdCB0KQogewotICAgIHJldHVybiBwMm1faW5zZXJ0X21hcHBpbmcoZCwgZ2ZuLCAoMSA8PCBw YWdlX29yZGVyKSwgbWZuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTUFUVFJfTUVN LCB0KTsKKyAgICByZXR1cm4gcDJtX2luc2VydF9tYXBwaW5nKGQsIGdmbiwgKDEgPDwgcGFnZV9v cmRlciksIG1mbiwgdCk7CiB9CiAKIHZvaWQgZ3Vlc3RfcGh5c21hcF9yZW1vdmVfcGFnZShzdHJ1 Y3QgZG9tYWluICpkLApAQCAtMTQxMSw3ICsxNDA2LDcgQEAgaW50IHJlbGlucXVpc2hfcDJtX21h cHBpbmcoc3RydWN0IGRvbWFpbiAqZCkKICAgICBuciA9IGdmbl94KHAybS0+bWF4X21hcHBlZF9n Zm4pIC0gZ2ZuX3gocDJtLT5sb3dlc3RfbWFwcGVkX2dmbik7CiAKICAgICByZXR1cm4gYXBwbHlf cDJtX2NoYW5nZXMoZCwgUkVMSU5RVUlTSCwgcDJtLT5sb3dlc3RfbWFwcGVkX2dmbiwgbnIsCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgIElOVkFMSURfTUZOLCBNQVRUUl9NRU0sIDAsIHAy bV9pbnZhbGlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJTlZBTElEX01GTiwgMCwg cDJtX2ludmFsaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQtPmFyY2gucDJtLmRl ZmF1bHRfYWNjZXNzKTsKIH0KIApAQCAtMTQyNCw4ICsxNDE5LDcgQEAgaW50IHAybV9jYWNoZV9m bHVzaChzdHJ1Y3QgZG9tYWluICpkLCBnZm5fdCBzdGFydCwgdW5zaWduZWQgbG9uZyBucikKICAg ICBlbmQgPSBnZm5fbWluKGVuZCwgcDJtLT5tYXhfbWFwcGVkX2dmbik7CiAKICAgICByZXR1cm4g YXBwbHlfcDJtX2NoYW5nZXMoZCwgQ0FDSEVGTFVTSCwgc3RhcnQsIG5yLCBJTlZBTElEX01GTiwK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTUFUVFJfTUVNLCAwLCBwMm1faW52YWxpZCwK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZC0+YXJjaC5wMm0uZGVmYXVsdF9hY2Nlc3Mp OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCBwMm1faW52YWxpZCwgZC0+YXJjaC5w Mm0uZGVmYXVsdF9hY2Nlc3MpOwogfQogCiBtZm5fdCBnZm5fdG9fbWZuKHN0cnVjdCBkb21haW4g KmQsIGdmbl90IGdmbikKQEAgLTE4MjYsOCArMTgyMCw3IEBAIGxvbmcgcDJtX3NldF9tZW1fYWNj ZXNzKHN0cnVjdCBkb21haW4gKmQsIGdmbl90IGdmbiwgdWludDMyX3QgbnIsCiAgICAgfQogCiAg ICAgcmMgPSBhcHBseV9wMm1fY2hhbmdlcyhkLCBNRU1BQ0NFU1MsIGdmbl9hZGQoZ2ZuLCBzdGFy dCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAobnIgLSBzdGFydCksIElOVkFMSURfTUZO LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgTUFUVFJfTUVNLCBtYXNrLCAwLCBhKTsKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgIChuciAtIHN0YXJ0KSwgSU5WQUxJRF9NRk4sIG1hc2ss IDAsIGEpOwogICAgIGlmICggcmMgPCAwICkKICAgICAgICAgcmV0dXJuIHJjOwogICAgIGVsc2Ug aWYgKCByYyA+IDAgKQotLSAKMS45LjEKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54 ZW4ub3JnCmh0dHBzOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK