From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sergej Proskurin Subject: [RFC PATCH v2 7/8] arm/mem_access: Add short-descriptor based gpt Date: Thu, 1 Jun 2017 17:18:57 +0200 Message-ID: <20170601151906.10213-8-proskurin@sec.in.tum.de> References: <20170601151906.10213-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 1dGRtF-0005TK-CO for xen-devel@lists.xenproject.org; Thu, 01 Jun 2017 15:19:57 +0000 In-Reply-To: <20170601151906.10213-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 VGhpcyBjb21taXQgYWRkcyBmdW5jdGlvbmFsaXR5IHRvIHdhbGsgdGhlIGd1ZXN0J3MgcGFnZSB0 YWJsZXMgdXNpbmcgdGhlCnNob3J0LWRlc2NyaXB0b3IgdHJhbnNsYXRpb24gdGFibGUgZm9ybWF0 IGZvciBib3RoIEFSTXY3IGFuZCBBUk12OC4gVGhlCmltcGxlbWVudGF0aW9uIGlzIGJhc2VkIG9u IEFSTSBEREkgMDQ4N0EtZyBHNC00MTg5IGFuZCBBUk0gRERJIDA0MDZDLWIKQjMtMTUwNi4KClNp Z25lZC1vZmYtYnk6IFNlcmdlaiBQcm9za3VyaW4gPHByb3NrdXJpbkBzZWMuaW4udHVtLmRlPgot LS0KQ2M6IFN0ZWZhbm8gU3RhYmVsbGluaSA8c3N0YWJlbGxpbmlAa2VybmVsLm9yZz4KQ2M6IEp1 bGllbiBHcmFsbCA8anVsaWVuLmdyYWxsQGFybS5jb20+Ci0tLQogeGVuL2FyY2gvYXJtL3AybS5j IHwgMTI1ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KystCiAxIGZpbGUgY2hhbmdlZCwgMTIzIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCgpk aWZmIC0tZ2l0IGEveGVuL2FyY2gvYXJtL3AybS5jIGIveGVuL2FyY2gvYXJtL3AybS5jCmluZGV4 IGVhM2JlNmYwNTAuLmZhMTEyYjg3M2MgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL2FybS9wMm0uYwor KysgYi94ZW4vYXJjaC9hcm0vcDJtLmMKQEAgLTE1NTgsOCArMTU1OCwxMjkgQEAgc3RhdGljIGlu dCBfX3AybV93YWxrX2dwdF9zZChzdHJ1Y3QgcDJtX2RvbWFpbiAqcDJtLAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB2YWRkcl90IGd2YSwgcGFkZHJfdCAqaXBhLAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgKnBlcm1fcm8pCiB7Ci0gICAgLyogTm90IGlt cGxlbWVudGVkIHlldC4gKi8KLSAgICByZXR1cm4gLUVGQVVMVDsKKyAgICBpbnQgZGlzYWJsZWQg PSAxOworICAgIGludDMyX3QgdHRicjsKKyAgICBwYWRkcl90IG1hc2s7CisgICAgcHRlX3NkX3Qg cHRlLCAqdGFibGU7CisgICAgc3RydWN0IHBhZ2VfaW5mbyAqcGFnZTsKKyAgICByZWdpc3Rlcl90 IHR0YmNyID0gUkVBRF9TWVNSRUcoVENSX0VMMSk7CisgICAgdW5zaWduZWQgaW50IGxldmVsID0g MCwgbiA9IHR0YmNyICYgVFRCQ1JfTl9NQVNLOworICAgIHN0cnVjdCBkb21haW4gKmQgPSBwMm0t PmRvbWFpbjsKKworICAgIGNvbnN0IHBhZGRyX3Qgb2Zmc2V0c1syXSA9IHsKKyAgICAgICAgKChw YWRkcl90KShndmEgPj4gMjApICYgKCgxVUxMIDw8ICgxMiAtIG4pKSAtIDEpKSwKKyAgICAgICAg KChwYWRkcl90KShndmEgPj4gMTIpICYgKCgxVUxMIDw8IDgpIC0gMSkpCisgICAgfTsKKworICAg IC8qIFRPRE86IERvIHRoZSBzYW1lICgzMSBiaXQpIHdpdGggTFBBRSBjb2RlISEgKi8KKyAgICBt YXNrID0gKCgxVUxMIDw8IFJFR0lTVEVSX1dJRFRIXzMyX0JJVCkgLSAxKSAmCisgICAgICAgICAg IH4oKDFVTEwgPDwgKFJFR0lTVEVSX1dJRFRIXzMyX0JJVCAtIG4pKSAtIDEpOworCisgICAgaWYg KCBuID09IDAgfHwgIShndmEgJiBtYXNrKSApCisgICAgeworICAgICAgICAvKiBVc2UgVFRCUjAg Zm9yIEdWQSB0byBJUEEgdHJhbnNsYXRpb24uICovCisgICAgICAgIHR0YnIgPSBSRUFEX1NZU1JF RzY0KFRUQlIwX0VMMSk7CisKKyAgICAgICAgLyogSWYgVFRCQ1IuUEQwIGlzIHNldCwgdHJhbnNs YXRpb25zIHVzaW5nIFRUQlIwIGFyZSBkaXNhYmxlZC4gKi8KKyAgICAgICAgZGlzYWJsZWQgPSAo IHR0YmNyICYgVFRCQ1JfUEQwICkgPyAxIDogMDsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAg ICAgICAgLyogVXNlIFRUQlIxIGZvciBHVkEgdG8gSVBBIHRyYW5zbGF0aW9uLiAqLworICAgICAg ICB0dGJyID0gUkVBRF9TWVNSRUc2NChUVEJSMV9FTDEpOworCisgICAgICAgIC8qIElmIFRUQkNS LlBEMSBpcyBzZXQsIHRyYW5zbGF0aW9ucyB1c2luZyBUVEJSMSBhcmUgZGlzYWJsZWQuICovCisg ICAgICAgIGRpc2FibGVkID0gKCB0dGJjciAmIFRUQkNSX1BEMSApID8gMSA6IDA7CisgICAgfQor CisgICAgaWYgKCBkaXNhYmxlZCApCisgICAgICAgIHJldHVybiAtRUZBVUxUOworCisgICAgbWFz ayA9ICgxVUxMIDw8ICgxNCAtIG4pKSAtIDE7CisgICAgcGFnZSA9IGdldF9wYWdlX2Zyb21fZ2Zu KGQsIHBhZGRyX3RvX3Bmbih0dGJyICYgfm1hc2spLCBOVUxMLCBQMk1fQUxMT0MpOworICAgIGlm ICggIXBhZ2UgKQorICAgICAgICByZXR1cm4gLUVGQVVMVDsKKworICAgIC8qCisgICAgICogWFhY OiBUaGUgMm5kIGxldmVsIGxvb2t1cCB0YWJsZSBtaWdodCBjb21wcmlzZSA0IGNvbmNhdGVuYXRl ZCA0SworICAgICAqIHBhZ2VzLiAgQ2hlY2sgaG93IHRvIG1hcCBjb25jYXRlbmF0ZWQgdGFibGVz IGF0IG9uY2UuCisgICAgICovCisgICAgdGFibGUgPSBfX21hcF9kb21haW5fcGFnZShwYWdlKTsK KworICAgIC8qIENvbnNpZGVyIG9mZnNldCBpZiBuID4gMi4gKi8KKyAgICBpZiAoIG4gPiAyICkK KyAgICAgICAgdGFibGUgPSAocHRlX3NkX3QgKikoKHVuc2lnbmVkIGxvbmcpdGFibGUgfCAodW5z aWduZWQgbG9uZykodHRiciAmIG1hc2spKTsKKworICAgIHB0ZSA9IHRhYmxlW29mZnNldHNbbGV2 ZWxdXTsKKworICAgIHVubWFwX2RvbWFpbl9wYWdlKHRhYmxlKTsKKyAgICBwdXRfcGFnZShwYWdl KTsKKworICAgIHN3aXRjaCAoIHB0ZS53YWxrLmR0ICkgeworICAgIGNhc2UgMDogLyogSW52YWxp ZCBtYXBwaW5nLiAqLworICAgICAgICByZXR1cm4gLUVGQVVMVDsKKworICAgIGNhc2UgMTogLyog TGFyZ2Ugb3Igc21hbGwgcGFnZS4gKi8KKyAgICAgICAgbGV2ZWwrKzsKKworICAgICAgICBwYWdl ID0gZ2V0X3BhZ2VfZnJvbV9nZm4oZCwgKHB0ZS53YWxrLmJhc2UgPj4gMiksIE5VTEwsIFAyTV9B TExPQyk7CisgICAgICAgIGlmICggIXBhZ2UgKQorICAgICAgICAgICAgcmV0dXJuIC1FRkFVTFQ7 CisKKyAgICAgICAgdGFibGUgPSBfX21hcF9kb21haW5fcGFnZShwYWdlKTsKKyAgICAgICAgdGFi bGUgPSAocHRlX3NkX3QgKikoKHVuc2lnbmVkIGxvbmcpdGFibGUgfCAoKHB0ZS53YWxrLmJhc2Ug JiAweDMpIDw8IDEwKSk7CisKKyAgICAgICAgcHRlID0gdGFibGVbb2Zmc2V0c1tsZXZlbF1dOwor CisgICAgICAgIHVubWFwX2RvbWFpbl9wYWdlKHRhYmxlKTsKKyAgICAgICAgcHV0X3BhZ2UocGFn ZSk7CisKKyAgICAgICAgaWYgKCBwdGUud2Fsay5kdCA9PSAwICkKKyAgICAgICAgICAgIGJyZWFr OworCisgICAgICAgIGlmICggcHRlLndhbGsuZHQgJiAweDIgKSAvKiBTbWFsbCBwYWdlLiAqLwor ICAgICAgICB7CisgICAgICAgICAgICBtYXNrID0gKDFVTEwgPDwgUEFHRV9TSElGVF80SykgLSAx OworICAgICAgICAgICAgKmlwYSA9IChwdGUuYml0cyAmIH5tYXNrKSB8IChndmEgJiBtYXNrKTsK KyAgICAgICAgfQorICAgICAgICBlbHNlIC8qIExhcmdlIHBhZ2UuICovCisgICAgICAgIHsKKyAg ICAgICAgICAgIG1hc2sgPSAoMVVMTCA8PCBQQUdFX1NISUZUXzY0SykgLSAxOworICAgICAgICAg ICAgKmlwYSA9IChwdGUuYml0cyAmIH5tYXNrKSB8IChndmEgJiBtYXNrKTsKKyAgICAgICAgfQor CisgICAgICAgIC8qIFNldCBhY2Nlc3MgcGVybWlzc2lvbnNbMjowXS4gKi8KKyAgICAgICAgKnBl cm1fcm8gPSAocHRlLmJpdHMgJiAweDIwMCkgPj4gOTsKKworICAgICAgICBicmVhazsKKworICAg IGNhc2UgMjogLyogU2VjdGlvbi4gKi8KKyAgICBjYXNlIDM6IC8qIFNlY3Rpb24gb3IgU3VwZXJz ZWN0aW9uLiAqLworICAgICAgICBpZiAoICEocHRlLmJpdHMgJiAoMVVMTCA8PCAxOCkpICkgLyog U2VjdGlvbiAqLworICAgICAgICB7CisgICAgICAgICAgICBtYXNrID0gKDFVTEwgPDwgMjApIC0g MTsKKyAgICAgICAgICAgICppcGEgPSAocHRlLmJpdHMgJiB+bWFzaykgfCAoZ3ZhICYgbWFzayk7 CisgICAgICAgIH0KKyAgICAgICAgZWxzZSAvKiBTdXBlcnNlY3Rpb24gKi8KKyAgICAgICAgewor ICAgICAgICAgICAgbWFzayA9ICgxVUxMIDw8IDI0KSAtIDE7CisgICAgICAgICAgICAqaXBhID0g KHB0ZS5iaXRzICYgfm1hc2spIHwgKGd2YSAmIG1hc2spOworCisgICAgICAgICAgICBtYXNrID0g KCgxVUxMIDw8IDI0KSAtIDEpICYgfigoMVVMTCA8PCAyMCkgLSAxKTsKKyAgICAgICAgICAgICpp cGEgfD0gKHB0ZS5iaXRzICYgbWFzaykgPDwgMzI7CisKKyAgICAgICAgICAgIG1hc2sgPSAoKDFV TEwgPDwgOSkgLSAxKSAmIH4oKDFVTEwgPDwgNSkgLSAxKTsKKyAgICAgICAgICAgICppcGEgfD0g KHB0ZS5iaXRzICYgbWFzaykgPDwgMzY7CisgICAgICAgIH0KKworICAgICAgICAvKiBTZXQgYWNj ZXNzIHBlcm1pc3Npb25bMl0uICovCisgICAgICAgICpwZXJtX3JvID0gKHB0ZS5iaXRzICYgMHg4 MDAwKSA+PiAxNTsKKyAgICB9CisKKyAgICBpZiAoIHB0ZS53YWxrLmR0ID09IDAgKQorICAgICAg ICByZXR1cm4gLUVGQVVMVDsKKworICAgIHJldHVybiAwOwogfQogCiAvKgotLSAKMi4xMi4yCgoK X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVs IG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwczovL2xpc3RzLnhlbi5v cmcveGVuLWRldmVsCg==