From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sergej Proskurin Subject: [PATCH v2 20/25] arm/altp2m: Add altp2m paging mechanism. Date: Mon, 1 Aug 2016 19:10:23 +0200 Message-ID: <20160801171028.11615-21-proskurin@sec.in.tum.de> References: <20160801171028.11615-1-proskurin@sec.in.tum.de> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta3.messagelabs.com ([195.245.230.39]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1bUGkD-0006LZ-R2 for xen-devel@lists.xenproject.org; Mon, 01 Aug 2016 17:11:14 +0000 In-Reply-To: <20160801171028.11615-1-proskurin@sec.in.tum.de> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xenproject.org Cc: Sergej Proskurin , Julien Grall , Stefano Stabellini List-Id: xen-devel@lists.xenproject.org VGhpcyBjb21taXQgYWRkcyB0aGUgZnVuY3Rpb24gImFsdHAybV9sYXp5X2NvcHkiIGltcGxlbWVu dGluZyB0aGUgYWx0cDJtCnBhZ2luZyBtZWNoYW5pc20uIFRoZSBmdW5jdGlvbiAiYWx0cDJtX2xh enlfY29weSIgbGF6aWx5IGNvcGllcyB0aGUKaG9zdHAybSdzIG1hcHBpbmcgaW50byB0aGUgY3Vy cmVudGx5IGFjdGl2ZSBhbHRwMm0gdmlldyBvbiAybmQgc3RhZ2UKdHJhbnNsYXRpb24gdmlvbGF0 aW9ucyBvbiBpbnN0cnVjdGlvbiBvciBkYXRhIGFjY2Vzcy4gRXZlcnkgYWx0cDJtCnZpb2xhdGlv biBnZW5lcmF0ZXMgYSB2bV9ldmVudC4KClNpZ25lZC1vZmYtYnk6IFNlcmdlaiBQcm9za3VyaW4g PHByb3NrdXJpbkBzZWMuaW4udHVtLmRlPgotLS0KQ2M6IFN0ZWZhbm8gU3RhYmVsbGluaSA8c3N0 YWJlbGxpbmlAa2VybmVsLm9yZz4KQ2M6IEp1bGllbiBHcmFsbCA8anVsaWVuLmdyYWxsQGFybS5j b20+Ci0tLQogeGVuL2FyY2gvYXJtL2FsdHAybS5jICAgICAgICB8ICA4NiArKysrKysrKysrKysr KysrKysrKysrKysrKysrKysKIHhlbi9hcmNoL2FybS9wMm0uYyAgICAgICAgICAgfCAgIDYgKysr CiB4ZW4vYXJjaC9hcm0vdHJhcHMuYyAgICAgICAgIHwgMTI0ICsrKysrKysrKysrKysrKysrKysr KysrKysrKysrKystLS0tLS0tLS0tLS0KIHhlbi9pbmNsdWRlL2FzbS1hcm0vYWx0cDJtLmggfCAg MTUgKysrKy0tCiB4ZW4vaW5jbHVkZS9hc20tYXJtL3AybS5oICAgIHwgICA2ICstLQogNSBmaWxl cyBjaGFuZ2VkLCAxOTYgaW5zZXJ0aW9ucygrKSwgNDEgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0 IGEveGVuL2FyY2gvYXJtL2FsdHAybS5jIGIveGVuL2FyY2gvYXJtL2FsdHAybS5jCmluZGV4IGYz YzFjZmYuLjc4ZmMxZDUgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL2FybS9hbHRwMm0uYworKysgYi94 ZW4vYXJjaC9hcm0vYWx0cDJtLmMKQEAgLTMzLDYgKzMzLDMyIEBAIHN0cnVjdCBwMm1fZG9tYWlu ICphbHRwMm1fZ2V0X2FsdHAybShzdHJ1Y3QgdmNwdSAqdikKICAgICByZXR1cm4gdi0+ZG9tYWlu LT5hcmNoLmFsdHAybV9wMm1baW5kZXhdOwogfQogCitib29sX3QgYWx0cDJtX3N3aXRjaF92Y3B1 X2FsdHAybV9ieV9pZChzdHJ1Y3QgdmNwdSAqdiwgdW5zaWduZWQgaW50IGlkeCkKK3sKKyAgICBz dHJ1Y3QgZG9tYWluICpkID0gdi0+ZG9tYWluOworICAgIGJvb2xfdCByYyA9IDA7CisKKyAgICBp ZiAoIGlkeCA+PSBNQVhfQUxUUDJNICkKKyAgICAgICAgcmV0dXJuIHJjOworCisgICAgYWx0cDJt X2xvY2soZCk7CisKKyAgICBpZiAoIGQtPmFyY2guYWx0cDJtX3Z0dGJyW2lkeF0gIT0gSU5WQUxJ RF9WVFRCUiApCisgICAgeworICAgICAgICBpZiAoIGlkeCAhPSB2Y3B1X2FsdHAybSh2KS5wMm1p ZHggKQorICAgICAgICB7CisgICAgICAgICAgICBhdG9taWNfZGVjKCZhbHRwMm1fZ2V0X2FsdHAy bSh2KS0+YWN0aXZlX3ZjcHVzKTsKKyAgICAgICAgICAgIHZjcHVfYWx0cDJtKHYpLnAybWlkeCA9 IGlkeDsKKyAgICAgICAgICAgIGF0b21pY19pbmMoJmFsdHAybV9nZXRfYWx0cDJtKHYpLT5hY3Rp dmVfdmNwdXMpOworICAgICAgICB9CisgICAgICAgIHJjID0gMTsKKyAgICB9CisKKyAgICBhbHRw Mm1fdW5sb2NrKGQpOworCisgICAgcmV0dXJuIHJjOworfQorCiBpbnQgYWx0cDJtX3N3aXRjaF9k b21haW5fYWx0cDJtX2J5X2lkKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGludCBpZHgpCiB7 CiAgICAgc3RydWN0IHZjcHUgKnY7CkBAIC0xMzMsNiArMTU5LDY2IEBAIG91dDoKICAgICByZXR1 cm4gcmM7CiB9CiAKK2Jvb2xfdCBhbHRwMm1fbGF6eV9jb3B5KHN0cnVjdCB2Y3B1ICp2LAorICAg ICAgICAgICAgICAgICAgICAgICAgcGFkZHJfdCBncGEsCisgICAgICAgICAgICAgICAgICAgICAg ICB1bnNpZ25lZCBsb25nIGd2YSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBucGZl YyBucGZlYywKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBwMm1fZG9tYWluICoqYXAy bSkKK3sKKyAgICBzdHJ1Y3QgZG9tYWluICpkID0gdi0+ZG9tYWluOworICAgIHN0cnVjdCBwMm1f ZG9tYWluICpocDJtID0gcDJtX2dldF9ob3N0cDJtKHYtPmRvbWFpbik7CisgICAgcDJtX3R5cGVf dCBwMm10OworICAgIHhlbm1lbV9hY2Nlc3NfdCB4bWE7CisgICAgZ2ZuX3QgZ2ZuID0gX2dmbihw YWRkcl90b19wZm4oZ3BhKSk7CisgICAgbWZuX3QgbWZuOworICAgIHVuc2lnbmVkIGludCBsZXZl bDsKKyAgICBpbnQgcmMgPSAwOworCisgICAgc3RhdGljIGNvbnN0IHAybV9hY2Nlc3NfdCBtZW1h Y2Nlc3NbXSA9IHsKKyNkZWZpbmUgQUNDRVNTKGFjKSBbWEVOTUVNX2FjY2Vzc18jI2FjXSA9IHAy bV9hY2Nlc3NfIyNhYworICAgICAgICBBQ0NFU1MobiksCisgICAgICAgIEFDQ0VTUyhyKSwKKyAg ICAgICAgQUNDRVNTKHcpLAorICAgICAgICBBQ0NFU1MocncpLAorICAgICAgICBBQ0NFU1MoeCks CisgICAgICAgIEFDQ0VTUyhyeCksCisgICAgICAgIEFDQ0VTUyh3eCksCisgICAgICAgIEFDQ0VT Uyhyd3gpLAorICAgICAgICBBQ0NFU1MocngycncpLAorICAgICAgICBBQ0NFU1MobjJyd3gpLAor I3VuZGVmIEFDQ0VTUworICAgIH07CisKKyAgICAqYXAybSA9IGFsdHAybV9nZXRfYWx0cDJtKHYp OworICAgIGlmICggKmFwMm0gPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICAvKiBD aGVjayBpZiBlbnRyeSBpcyBwYXJ0IG9mIHRoZSBhbHRwMm0gdmlldyAqLworICAgIG1mbiA9IHAy bV9sb29rdXBfYXR0cigqYXAybSwgZ2ZuLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMKTsKKyAgICBp ZiAoICFtZm5fZXEobWZuLCBJTlZBTElEX01GTikgKQorICAgICAgICBnb3RvIG91dDsKKworICAg IC8qIENoZWNrIGlmIGVudHJ5IGlzIHBhcnQgb2YgdGhlIGhvc3QgcDJtIHZpZXcgKi8KKyAgICBt Zm4gPSBwMm1fbG9va3VwX2F0dHIoaHAybSwgZ2ZuLCAmcDJtdCwgJmxldmVsLCBOVUxMLCAmeG1h KTsKKyAgICBpZiAoIG1mbl9lcShtZm4sIElOVkFMSURfTUZOKSApCisgICAgICAgIGdvdG8gb3V0 OworCisgICAgcmMgPSBtb2RpZnlfYWx0cDJtX2VudHJ5KGQsICphcDJtLCBncGEsIHBmbl90b19w YWRkcihtZm5feChtZm4pKSwgbGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAy bXQsIG1lbWFjY2Vzc1t4bWFdKTsKKyAgICBpZiAoIHJjICkKKyAgICB7CisgICAgICAgIGdkcHJp bnRrKFhFTkxPR19FUlIsICJmYWlsZWQgdG8gc2V0IGVudHJ5IGZvciAlbHggLT4gJWx4IHAybSAl bHhcbiIsCisgICAgICAgICAgICAgICAgKHVuc2lnbmVkIGxvbmcpZ3BhLCAodW5zaWduZWQgbG9u ZykocGFkZHJfdG9fcGZuKG1mbl94KG1mbikpKSwKKyAgICAgICAgICAgICAgICAodW5zaWduZWQg bG9uZykqYXAybSk7CisgICAgICAgIGRvbWFpbl9jcmFzaChocDJtLT5kb21haW4pOworICAgIH0K KworICAgIHJjID0gMTsKKworb3V0OgorICAgIHJldHVybiByYzsKK30KKwogc3RhdGljIGlubGlu ZSB2b2lkIGFsdHAybV9yZXNldChzdHJ1Y3QgcDJtX2RvbWFpbiAqcDJtKQogewogICAgIHJlYWRf bG9jaygmcDJtLT5sb2NrKTsKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL2FybS9wMm0uYyBiL3hlbi9h cmNoL2FybS9wMm0uYwppbmRleCAzMTgxMGU2Li5iZWU4YmU3IDEwMDY0NAotLS0gYS94ZW4vYXJj aC9hcm0vcDJtLmMKKysrIGIveGVuL2FyY2gvYXJtL3AybS5jCkBAIC0xODEyLDYgKzE4MTIsMTIg QEAgdm9pZCBfX2luaXQgc2V0dXBfdmlydF9wYWdpbmcodm9pZCkKICAgICBzbXBfY2FsbF9mdW5j dGlvbihzZXR1cF92aXJ0X3BhZ2luZ19vbmUsICh2b2lkICopdmFsLCAxKTsKIH0KIAordm9pZCBw Mm1fYWx0cDJtX2NoZWNrKHN0cnVjdCB2Y3B1ICp2LCB1aW50MTZfdCBpZHgpCit7CisgICAgaWYg KCBhbHRwMm1fYWN0aXZlKHYtPmRvbWFpbikgKQorICAgICAgICBhbHRwMm1fc3dpdGNoX3ZjcHVf YWx0cDJtX2J5X2lkKHYsIGlkeCk7Cit9CisKIGJvb2xfdCBwMm1fbWVtX2FjY2Vzc19jaGVjayhw YWRkcl90IGdwYSwgdmFkZHJfdCBnbGEsIGNvbnN0IHN0cnVjdCBucGZlYyBucGZlYykKIHsKICAg ICBpbnQgcmM7CmRpZmYgLS1naXQgYS94ZW4vYXJjaC9hcm0vdHJhcHMuYyBiL3hlbi9hcmNoL2Fy bS90cmFwcy5jCmluZGV4IDEyYmU3YzkuLjYyOGFiZDcgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL2Fy bS90cmFwcy5jCisrKyBiL3hlbi9hcmNoL2FybS90cmFwcy5jCkBAIC00OCw2ICs0OCw4IEBACiAj aW5jbHVkZSA8YXNtL3ZnaWMuaD4KICNpbmNsdWRlIDxhc20vY3B1ZXJyYXRhLmg+CiAKKyNpbmNs dWRlIDxhc20vYWx0cDJtLmg+CisKIC8qIFRoZSBiYXNlIG9mIHRoZSBzdGFjayBtdXN0IGFsd2F5 cyBiZSBkb3VibGUtd29yZCBhbGlnbmVkLCB3aGljaCBtZWFucwogICogdGhhdCBib3RoIHRoZSBr ZXJuZWwgaGFsZiBvZiBzdHJ1Y3QgY3B1X3VzZXJfcmVncyAod2hpY2ggaXMgcHVzaGVkIGluCiAg KiBlbnRyeS5TKSBhbmQgc3RydWN0IGNwdV9pbmZvICh3aGljaCBsaXZlcyBhdCB0aGUgYm90dG9t IG9mIGEgWGVuCkBAIC0yNDAzLDM1ICsyNDA1LDY0IEBAIHN0YXRpYyB2b2lkIGRvX3RyYXBfaW5z dHJfYWJvcnRfZ3Vlc3Qoc3RydWN0IGNwdV91c2VyX3JlZ3MgKnJlZ3MsCiAgICAgaW50IHJjOwog ICAgIHJlZ2lzdGVyX3QgZ3ZhID0gUkVBRF9TWVNSRUcoRkFSX0VMMik7CiAgICAgdWludDhfdCBm c2MgPSBoc3IuaWFidC5pZnNjICYgfkZTQ19MTF9NQVNLOworICAgIHN0cnVjdCB2Y3B1ICp2ID0g Y3VycmVudDsKKyAgICBzdHJ1Y3QgZG9tYWluICpkID0gdi0+ZG9tYWluOworICAgIHN0cnVjdCBw Mm1fZG9tYWluICpwMm0gPSBOVUxMOworICAgIHBhZGRyX3QgZ3BhOworCisgICAgaWYgKCBocGZh cl9pc192YWxpZChoc3IuaWFidC5zMXB0dywgZnNjKSApCisgICAgICAgIGdwYSA9IGdldF9mYXVs dGluZ19pcGEoZ3ZhKTsKKyAgICBlbHNlCisgICAgeworICAgICAgICAvKgorICAgICAgICAgKiBG bHVzaCB0aGUgVExCIHRvIG1ha2Ugc3VyZSB0aGUgRFRMQiBpcyBjbGVhciBiZWZvcmUKKyAgICAg ICAgICogZG9pbmcgR1ZBLT5JUEEgdHJhbnNsYXRpb24uIElmIHdlIGdvdCBoZXJlIGJlY2F1c2Ug b2YKKyAgICAgICAgICogYW4gZW50cnkgb25seSBwcmVzZW50IGluIHRoZSBJVExCLCB0aGlzIHRy YW5zbGF0aW9uIG1heQorICAgICAgICAgKiBzdGlsbCBiZSBpbmFjY3VyYXRlLgorICAgICAgICAg Ki8KKyAgICAgICAgZmx1c2hfdGxiX2xvY2FsKCk7CisKKyAgICAgICAgcmMgPSBndmFfdG9faXBh KGd2YSwgJmdwYSwgR1YyTV9SRUFEKTsKKyAgICAgICAgaWYgKCByYyA9PSAtRUZBVUxUICkKKyAg ICAgICAgICAgIHJldHVybjsgLyogVHJ5IGFnYWluICovCisgICAgfQogCiAgICAgc3dpdGNoICgg ZnNjICkKICAgICB7CisgICAgY2FzZSBGU0NfRkxUX1RSQU5TOgorICAgIHsKKyAgICAgICAgaWYg KCBhbHRwMm1fYWN0aXZlKGQpICkKKyAgICAgICAgeworICAgICAgICAgICAgY29uc3Qgc3RydWN0 IG5wZmVjIG5wZmVjID0geworICAgICAgICAgICAgICAgIC5pbnNuX2ZldGNoID0gMSwKKyAgICAg ICAgICAgICAgICAuZ2xhX3ZhbGlkID0gMSwKKyAgICAgICAgICAgICAgICAua2luZCA9IGhzci5p YWJ0LnMxcHR3ID8gbnBmZWNfa2luZF9pbl9ncHQgOiBucGZlY19raW5kX3dpdGhfZ2xhCisgICAg ICAgICAgICB9OworCisgICAgICAgICAgICAvKgorICAgICAgICAgICAgICogQ29weSB0aGUgZW50 aXJlIHBhZ2Ugb2YgdGhlIGZhaWxpbmcgaW5zdHJ1Y3Rpb24gaW50byB0aGUKKyAgICAgICAgICAg ICAqIGN1cnJlbnRseSBhY3RpdmUgYWx0cDJtIHZpZXcuCisgICAgICAgICAgICAgKi8KKyAgICAg ICAgICAgIGlmICggYWx0cDJtX2xhenlfY29weSh2LCBncGEsIGd2YSwgbnBmZWMsICZwMm0pICkK KyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIHJjID0gcDJtX21lbV9hY2Nl c3NfY2hlY2soZ3BhLCBndmEsIG5wZmVjKTsKKworICAgICAgICAgICAgLyogVHJhcCB3YXMgdHJp Z2dlcmVkIGJ5IG1lbV9hY2Nlc3MsIHdvcmsgaGVyZSBpcyBkb25lICovCisgICAgICAgICAgICBp ZiAoICFyYyApCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAg YnJlYWs7CisgICAgfQogICAgIGNhc2UgRlNDX0ZMVF9QRVJNOgogICAgIHsKLSAgICAgICAgcGFk ZHJfdCBncGE7CiAgICAgICAgIGNvbnN0IHN0cnVjdCBucGZlYyBucGZlYyA9IHsKICAgICAgICAg ICAgIC5pbnNuX2ZldGNoID0gMSwKICAgICAgICAgICAgIC5nbGFfdmFsaWQgPSAxLAogICAgICAg ICAgICAgLmtpbmQgPSBoc3IuaWFidC5zMXB0dyA/IG5wZmVjX2tpbmRfaW5fZ3B0IDogbnBmZWNf a2luZF93aXRoX2dsYQogICAgICAgICB9OwogCi0gICAgICAgIGlmICggaHBmYXJfaXNfdmFsaWQo aHNyLmlhYnQuczFwdHcsIGZzYykgKQotICAgICAgICAgICAgZ3BhID0gZ2V0X2ZhdWx0aW5nX2lw YShndmEpOwotICAgICAgICBlbHNlCi0gICAgICAgIHsKLSAgICAgICAgICAgIC8qCi0gICAgICAg ICAgICAgKiBGbHVzaCB0aGUgVExCIHRvIG1ha2Ugc3VyZSB0aGUgRFRMQiBpcyBjbGVhciBiZWZv cmUKLSAgICAgICAgICAgICAqIGRvaW5nIEdWQS0+SVBBIHRyYW5zbGF0aW9uLiBJZiB3ZSBnb3Qg aGVyZSBiZWNhdXNlIG9mCi0gICAgICAgICAgICAgKiBhbiBlbnRyeSBvbmx5IHByZXNlbnQgaW4g dGhlIElUTEIsIHRoaXMgdHJhbnNsYXRpb24gbWF5Ci0gICAgICAgICAgICAgKiBzdGlsbCBiZSBp bmFjY3VyYXRlLgotICAgICAgICAgICAgICovCi0gICAgICAgICAgICBmbHVzaF90bGJfbG9jYWwo KTsKLQotICAgICAgICAgICAgcmMgPSBndmFfdG9faXBhKGd2YSwgJmdwYSwgR1YyTV9SRUFEKTsK LSAgICAgICAgICAgIGlmICggcmMgPT0gLUVGQVVMVCApCi0gICAgICAgICAgICAgICAgcmV0dXJu OyAvKiBUcnkgYWdhaW4gKi8KLSAgICAgICAgfQotCiAgICAgICAgIHJjID0gcDJtX21lbV9hY2Nl c3NfY2hlY2soZ3BhLCBndmEsIG5wZmVjKTsKIAogICAgICAgICAvKiBUcmFwIHdhcyB0cmlnZ2Vy ZWQgYnkgbWVtX2FjY2Vzcywgd29yayBoZXJlIGlzIGRvbmUgKi8KQEAgLTI0NTEsNiArMjQ4Miw4 IEBAIHN0YXRpYyB2b2lkIGRvX3RyYXBfZGF0YV9hYm9ydF9ndWVzdChzdHJ1Y3QgY3B1X3VzZXJf cmVncyAqcmVncywKICAgICBpbnQgcmM7CiAgICAgbW1pb19pbmZvX3QgaW5mbzsKICAgICB1aW50 OF90IGZzYyA9IGhzci5kYWJ0LmRmc2MgJiB+RlNDX0xMX01BU0s7CisgICAgc3RydWN0IHZjcHUg KnYgPSBjdXJyZW50OworICAgIHN0cnVjdCBwMm1fZG9tYWluICpwMm0gPSBOVUxMOwogCiAgICAg aW5mby5kYWJ0ID0gZGFidDsKICNpZmRlZiBDT05GSUdfQVJNXzMyCkBAIC0yNDU5LDcgKzI0OTIs NyBAQCBzdGF0aWMgdm9pZCBkb190cmFwX2RhdGFfYWJvcnRfZ3Vlc3Qoc3RydWN0IGNwdV91c2Vy X3JlZ3MgKnJlZ3MsCiAgICAgaW5mby5ndmEgPSBSRUFEX1NZU1JFRzY0KEZBUl9FTDIpOwogI2Vu ZGlmCiAKLSAgICBpZiAoIGhwZmFyX2lzX3ZhbGlkKGhzci5pYWJ0LnMxcHR3LCBmc2MpICkKKyAg ICBpZiAoIGhwZmFyX2lzX3ZhbGlkKGhzci5kYWJ0LnMxcHR3LCBmc2MpICkKICAgICAgICAgaW5m by5ncGEgPSBnZXRfZmF1bHRpbmdfaXBhKGluZm8uZ3ZhKTsKICAgICBlbHNlCiAgICAgewpAQCAt MjQ3MCwyMyArMjUwMywzMSBAQCBzdGF0aWMgdm9pZCBkb190cmFwX2RhdGFfYWJvcnRfZ3Vlc3Qo c3RydWN0IGNwdV91c2VyX3JlZ3MgKnJlZ3MsCiAKICAgICBzd2l0Y2ggKCBmc2MgKQogICAgIHsK LSAgICBjYXNlIEZTQ19GTFRfUEVSTToKKyAgICBjYXNlIEZTQ19GTFRfVFJBTlM6CiAgICAgewot ICAgICAgICBjb25zdCBzdHJ1Y3QgbnBmZWMgbnBmZWMgPSB7Ci0gICAgICAgICAgICAucmVhZF9h Y2Nlc3MgPSAhZGFidC53cml0ZSwKLSAgICAgICAgICAgIC53cml0ZV9hY2Nlc3MgPSBkYWJ0Lndy aXRlLAotICAgICAgICAgICAgLmdsYV92YWxpZCA9IDEsCi0gICAgICAgICAgICAua2luZCA9IGRh YnQuczFwdHcgPyBucGZlY19raW5kX2luX2dwdCA6IG5wZmVjX2tpbmRfd2l0aF9nbGEKLSAgICAg ICAgfTsKKyAgICAgICAgaWYgKCBhbHRwMm1fYWN0aXZlKGN1cnJlbnQtPmRvbWFpbikgKQorICAg ICAgICB7CisgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgbnBmZWMgbnBmZWMgPSB7CisgICAgICAg ICAgICAgICAgLnJlYWRfYWNjZXNzID0gIWRhYnQud3JpdGUsCisgICAgICAgICAgICAgICAgLndy aXRlX2FjY2VzcyA9IGRhYnQud3JpdGUsCisgICAgICAgICAgICAgICAgLmdsYV92YWxpZCA9IDEs CisgICAgICAgICAgICAgICAgLmtpbmQgPSBkYWJ0LnMxcHR3ID8gbnBmZWNfa2luZF9pbl9ncHQg OiBucGZlY19raW5kX3dpdGhfZ2xhCisgICAgICAgICAgICB9OwogCi0gICAgICAgIHJjID0gcDJt X21lbV9hY2Nlc3NfY2hlY2soaW5mby5ncGEsIGluZm8uZ3ZhLCBucGZlYyk7CisgICAgICAgICAg ICAvKgorICAgICAgICAgICAgICogQ29weSB0aGUgZW50aXJlIHBhZ2Ugb2YgdGhlIGZhaWxpbmcg ZGF0YSBhY2Nlc3MgaW50byB0aGUKKyAgICAgICAgICAgICAqIGN1cnJlbnRseSBhY3RpdmUgYWx0 cDJtIHZpZXcuCisgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIGlmICggYWx0cDJtX2xhenlf Y29weSh2LCBpbmZvLmdwYSwgaW5mby5ndmEsIG5wZmVjLCAmcDJtKSApCisgICAgICAgICAgICAg ICAgcmV0dXJuOworCisgICAgICAgICAgICByYyA9IHAybV9tZW1fYWNjZXNzX2NoZWNrKGluZm8u Z3BhLCBpbmZvLmd2YSwgbnBmZWMpOworCisgICAgICAgICAgICAvKiBUcmFwIHdhcyB0cmlnZ2Vy ZWQgYnkgbWVtX2FjY2Vzcywgd29yayBoZXJlIGlzIGRvbmUgKi8KKyAgICAgICAgICAgIGlmICgg IXJjICkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KIAotICAgICAgICAvKiBU cmFwIHdhcyB0cmlnZ2VyZWQgYnkgbWVtX2FjY2Vzcywgd29yayBoZXJlIGlzIGRvbmUgKi8KLSAg ICAgICAgaWYgKCAhcmMgKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBicmVhazsKLSAg ICB9Ci0gICAgY2FzZSBGU0NfRkxUX1RSQU5TOgogICAgICAgICBpZiAoIGRhYnQuczFwdHcgKQog ICAgICAgICAgICAgZ290byBiYWRfZGF0YV9hYm9ydDsKIApAQCAtMjUxNSw2ICsyNTU2LDIzIEBA IHN0YXRpYyB2b2lkIGRvX3RyYXBfZGF0YV9hYm9ydF9ndWVzdChzdHJ1Y3QgY3B1X3VzZXJfcmVn cyAqcmVncywKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBicmVhazsK KyAgICB9CisgICAgY2FzZSBGU0NfRkxUX1BFUk06CisgICAgeworICAgICAgICBjb25zdCBzdHJ1 Y3QgbnBmZWMgbnBmZWMgPSB7CisgICAgICAgICAgICAucmVhZF9hY2Nlc3MgPSAhZGFidC53cml0 ZSwKKyAgICAgICAgICAgIC53cml0ZV9hY2Nlc3MgPSBkYWJ0LndyaXRlLAorICAgICAgICAgICAg LmdsYV92YWxpZCA9IDEsCisgICAgICAgICAgICAua2luZCA9IGRhYnQuczFwdHcgPyBucGZlY19r aW5kX2luX2dwdCA6IG5wZmVjX2tpbmRfd2l0aF9nbGEKKyAgICAgICAgfTsKKworICAgICAgICBy YyA9IHAybV9tZW1fYWNjZXNzX2NoZWNrKGluZm8uZ3BhLCBpbmZvLmd2YSwgbnBmZWMpOworCisg ICAgICAgIC8qIFRyYXAgd2FzIHRyaWdnZXJlZCBieSBtZW1fYWNjZXNzLCB3b3JrIGhlcmUgaXMg ZG9uZSAqLworICAgICAgICBpZiAoICFyYyApCisgICAgICAgICAgICByZXR1cm47CisgICAgICAg IGJyZWFrOworICAgIH0KICAgICBkZWZhdWx0OgogICAgICAgICBncHJpbnRrKFhFTkxPR19XQVJO SU5HLCAiVW5zdXBwb3J0ZWQgREZTQzogSFNSPSUjeCBERlNDPSUjeFxuIiwKICAgICAgICAgICAg ICAgICBoc3IuYml0cywgZGFidC5kZnNjKTsKZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL2FzbS1h cm0vYWx0cDJtLmggYi94ZW4vaW5jbHVkZS9hc20tYXJtL2FsdHAybS5oCmluZGV4IDlhZWI3ZDYu LjhiZmJjNmEgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL2FzbS1hcm0vYWx0cDJtLmgKKysrIGIv eGVuL2luY2x1ZGUvYXNtLWFybS9hbHRwMm0uaApAQCAtMzgsOSArMzgsNyBAQCBzdGF0aWMgaW5s aW5lIGJvb2xfdCBhbHRwMm1fYWN0aXZlKGNvbnN0IHN0cnVjdCBkb21haW4gKmQpCiAvKiBBbHRl cm5hdGUgcDJtIFZDUFUgKi8KIHN0YXRpYyBpbmxpbmUgdWludDE2X3QgYWx0cDJtX3ZjcHVfaWR4 KGNvbnN0IHN0cnVjdCB2Y3B1ICp2KQogewotICAgIC8qIE5vdCBpbXBsZW1lbnRlZCBvbiBBUk0s IHNob3VsZCBub3QgYmUgcmVhY2hlZC4gKi8KLSAgICBCVUcoKTsKLSAgICByZXR1cm4gMDsKKyAg ICByZXR1cm4gdmNwdV9hbHRwMm0odikucDJtaWR4OwogfQogCiBpbnQgYWx0cDJtX2luaXQoc3Ry dWN0IGRvbWFpbiAqZCk7CkBAIC01Miw2ICs1MCwxMCBAQCB2b2lkIGFsdHAybV92Y3B1X2Rlc3Ry b3koc3RydWN0IHZjcHUgKnYpOwogLyogR2V0IGN1cnJlbnQgYWx0ZXJuYXRlIHAybSB0YWJsZS4g Ki8KIHN0cnVjdCBwMm1fZG9tYWluICphbHRwMm1fZ2V0X2FsdHAybShzdHJ1Y3QgdmNwdSAqdik7 CiAKKy8qIFN3aXRjaCBhbHRlcm5hdGUgcDJtIGZvciBhIHNpbmdsZSB2Y3B1LiAqLworYm9vbF90 IGFsdHAybV9zd2l0Y2hfdmNwdV9hbHRwMm1fYnlfaWQoc3RydWN0IHZjcHUgKnYsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgaWR4KTsKKwogLyog U3dpdGNoIGFsdGVybmF0ZSBwMm0gZm9yIGVudGlyZSBkb21haW4gKi8KIGludCBhbHRwMm1fc3dp dGNoX2RvbWFpbl9hbHRwMm1fYnlfaWQoc3RydWN0IGRvbWFpbiAqZCwKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGlkeCk7CkBAIC04MSw2ICs4Mywx MyBAQCBpbnQgYWx0cDJtX3NldF9tZW1fYWNjZXNzKHN0cnVjdCBkb21haW4gKmQsCiAgICAgICAg ICAgICAgICAgICAgICAgICAgIHAybV9hY2Nlc3NfdCBhLAogICAgICAgICAgICAgICAgICAgICAg ICAgICBnZm5fdCBnZm4pOwogCisvKiBBbHRlcm5hdGUgcDJtIHBhZ2luZyBtZWNoYW5pc20uICov Citib29sX3QgYWx0cDJtX2xhenlfY29weShzdHJ1Y3QgdmNwdSAqdiwKKyAgICAgICAgICAgICAg ICAgICAgICAgIHBhZGRyX3QgZ3BhLAorICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQg bG9uZyBnbGEsCisgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgbnBmZWMgbnBmZWMsCisg ICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgcDJtX2RvbWFpbiAqKmFwMm0pOworCiAvKiBQ cm9wYWdhdGVzIGNoYW5nZXMgbWFkZSB0byBob3N0cDJtIHRvIGFmZmVjdGVkIGFsdHAybSB2aWV3 cy4gKi8KIHZvaWQgYWx0cDJtX3Byb3BhZ2F0ZV9jaGFuZ2Uoc3RydWN0IGRvbWFpbiAqZCwKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2ZuX3Qgc2dmbiwKZGlmZiAtLWdpdCBhL3hlbi9p bmNsdWRlL2FzbS1hcm0vcDJtLmggYi94ZW4vaW5jbHVkZS9hc20tYXJtL3AybS5oCmluZGV4IDU5 MTg2YzkuLjE2ZTMzY2EgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL2FzbS1hcm0vcDJtLmgKKysr IGIveGVuL2luY2x1ZGUvYXNtLWFybS9wMm0uaApAQCAtMTQ1LDExICsxNDUsNyBAQCB2b2lkIHAy bV9tZW1fYWNjZXNzX2VtdWxhdGVfY2hlY2soc3RydWN0IHZjcHUgKnYsCiAgICAgLyogTm90IHN1 cHBvcnRlZCBvbiBBUk0uICovCiB9CiAKLXN0YXRpYyBpbmxpbmUKLXZvaWQgcDJtX2FsdHAybV9j aGVjayhzdHJ1Y3QgdmNwdSAqdiwgdWludDE2X3QgaWR4KQotewotICAgIC8qIE5vdCBzdXBwb3J0 ZWQgb24gQVJNLiAqLwotfQordm9pZCBwMm1fYWx0cDJtX2NoZWNrKHN0cnVjdCB2Y3B1ICp2LCB1 aW50MTZfdCBpZHgpOwogCiAvKiBJbml0aWFsaXNlIHZtaWQgYWxsb2NhdG9yICovCiB2b2lkIHAy bV92bWlkX2FsbG9jYXRvcl9pbml0KHZvaWQpOwotLSAKMi45LjAKCgpfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhl bi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHBzOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK