From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sergej Proskurin Subject: [PATCH v4 6/9] arm/mem_access: Add software guest-page-table walk Date: Tue, 20 Jun 2017 22:33:29 +0200 Message-ID: <20170620203332.17833-7-proskurin@sec.in.tum.de> References: <20170620203332.17833-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.bemta6.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dNPqo-0007qI-PS for xen-devel@lists.xenproject.org; Tue, 20 Jun 2017 20:34:14 +0000 In-Reply-To: <20170620203332.17833-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 VGhlIGZ1bmN0aW9uIHAybV9tZW1fYWNjZXNzX2NoZWNrX2FuZF9nZXRfcGFnZSBpbiBtZW1fYWNj ZXNzLmMKdHJhbnNsYXRlcyBhIGd2YSB0byBhbiBpcGEgYnkgbWVhbnMgb2YgdGhlIGhhcmR3YXJl IGZ1bmN0aW9uYWxpdHkgb2YgdGhlCkFSTSBhcmNoaXRlY3R1cmUuIFRoaXMgaXMgaW1wbGVtZW50 ZWQgaW4gdGhlIGZ1bmN0aW9uIGd2YV90b19pcGEuIElmCm1lbV9hY2Nlc3MgaXMgYWN0aXZlLCBo YXJkd2FyZS1iYXNlZCBndmEgdG8gaXBhIHRyYW5zbGF0aW9uIG1pZ2h0IGZhaWwsCmFzIGd2YV90 b19pcGEgdXNlcyB0aGUgZ3Vlc3QncyB0cmFuc2xhdGlvbiB0YWJsZXMsIGFjY2VzcyB0byB3aGlj aCBtaWdodApiZSByZXN0cmljdGVkIGJ5IHRoZSBhY3RpdmUgVlRUQlIuIFRvIGFkZHJlc3MgdGhp cyBpc3N1ZSwgaW4gdGhpcyBjb21taXQKd2UgYWRkIGEgc29mdHdhcmUtYmFzZWQgZ3Vlc3QtcGFn ZS10YWJsZSB3YWxrLCB3aGljaCB3aWxsIGJlIHVzZWQgYnkgdGhlCmZ1bmN0aW9uIHAybV9tZW1f YWNjZXNzX2NoZWNrX2FuZF9nZXRfcGFnZSBwZXJmb3JtIHRoZSBndmEgdG8gaXBhCnRyYW5zbGF0 aW9uIGluIHNvZnR3YXJlIGluIG9uZSBvZiB0aGUgZm9sbG93aW5nIGNvbW1pdHMuCgpOb3RlOiBU aGUgaW50cm9kdWNlZCBmdW5jdGlvbiBndWVzdF93YWxrX3RhYmxlcyBhc3N1bWVzIHRoYXQgdGhl IGRvbWFpbiwKdGhlIGd2YSBvZiB3aGljaCBpcyB0byBiZSB0cmFuc2xhdGVkLCBpcyBydW5uaW5n IG9uIHRoZSBjdXJyZW50bHkgYWN0aXZlCnZDUFUuIFRvIHdhbGsgdGhlIGd1ZXN0J3MgcGFnZSB0 YWJsZXMgb24gYSBkaWZmZXJlbnQgdkNQVSwgdGhlIGZvbGxvd2luZwpyZWdpc3RlcnMgd291bGQg bmVlZCB0byBiZSBsb2FkZWQ6IFRDUl9FTDEsIFRUQlIwX0VMMSwgVFRCUjFfRUwxLCBhbmQKU0NU TFJfRUwxLgoKU2lnbmVkLW9mZi1ieTogU2VyZ2VqIFByb3NrdXJpbiA8cHJvc2t1cmluQHNlYy5p bi50dW0uZGU+Ci0tLQpDYzogU3RlZmFubyBTdGFiZWxsaW5pIDxzc3RhYmVsbGluaUBrZXJuZWwu b3JnPgpDYzogSnVsaWVuIEdyYWxsIDxqdWxpZW4uZ3JhbGxAYXJtLmNvbT4KLS0tCnYyOiBSZW5h bWUgcDJtX2d2YV90b19pcGEgdG8gcDJtX3dhbGtfZ3B0IGFuZCBtb3ZlIGl0IHRvIHAybS5jLgoK ICAgIE1vdmUgdGhlIGZ1bmN0aW9uYWxpdHkgcmVzcG9uc2libGUgZm9yIHdhbGtpbmcgbG9uZy1k ZXNjcmlwdG9yIGJhc2VkCiAgICB0cmFuc2xhdGlvbiB0YWJsZXMgb3V0IG9mIHRoZSBmdW5jdGlv biBwMm1fd2Fsa19ncHQuIEFsc28gbW92ZSBvdXQKICAgIHRoZSBsb25nLWRlc2NyaXB0b3IgYmFz ZWQgdHJhbnNsYXRpb24gb3V0IG9mIHRoaXMgY29tbWl0LgoKICAgIENoYW5nZSBmdW5jdGlvbiBw YXJhbWV0ZXJzIGluIG9yZGVyIHRvIHJldHVybiBhY2Nlc3MgYWNjZXNzIHJpZ2h0cwogICAgdG8g YSByZXF1ZXN0ZWQgZ3ZhLgoKICAgIENvc21ldGljIGZpeGVzLgoKdjM6IFJlbmFtZSB0aGUgaW50 cm9kdWNlZCBmdW5jdGlvbnMgdG8gZ3Vlc3Rfd2Fsa18odGFibGVzfHNkfGxkKSBhbmQKICAgIG1v dmUgdGhlIGltcGxlbWVudGF0aW9uIHRvIGd1ZXN0X2NvcHkuKGN8aCkuCgogICAgU2V0IHBlcm1p c3Npb25zIGluIGd1ZXN0X3dhbGtfdGFibGVzIGFsc28gaWYgdGhlIE1NVSBpcyBkaXNhYmxlZC4K CiAgICBDaGFuZ2UgdGhlIGZ1bmN0aW9uIHBhcmFtZXRlciBvZiB0eXBlICJzdHJ1Y3QgcDJtX2Rv bWFpbiAqIiB0bwogICAgInN0cnVjdCB2Y3B1ICoiIGluIHRoZSBmdW5jdGlvbiBndWVzdF93YWxr X3RhYmxlcy4KCnY0OiBDaGFuZ2UgdGhlIGZ1bmN0aW9uIHBhcmFtZXRlciBvZiB0eXBlICJzdHJ1 Y3QgcDJtX2RvbWFpbiAqIiB0bwogICAgInN0cnVjdCB2Y3B1ICoiIGluIHRoZSBmdW5jdGlvbnMg Z3Vlc3Rfd2Fsa18oc2R8bGQpIGFzIHdlbGwuCi0tLQogeGVuL2FyY2gvYXJtL01ha2VmaWxlICAg ICAgICAgICAgfCAgMSArCiB4ZW4vYXJjaC9hcm0vZ3Vlc3Rfd2Fsay5jICAgICAgICB8IDkxICsr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIHhlbi9pbmNsdWRlL2FzbS1h cm0vZ3Vlc3Rfd2Fsay5oIHwgMTkgKysrKysrKysrCiAzIGZpbGVzIGNoYW5nZWQsIDExMSBpbnNl cnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgeGVuL2FyY2gvYXJtL2d1ZXN0X3dhbGsuYwog Y3JlYXRlIG1vZGUgMTAwNjQ0IHhlbi9pbmNsdWRlL2FzbS1hcm0vZ3Vlc3Rfd2Fsay5oCgpkaWZm IC0tZ2l0IGEveGVuL2FyY2gvYXJtL01ha2VmaWxlIGIveGVuL2FyY2gvYXJtL01ha2VmaWxlCmlu ZGV4IDQ5ZTFmYjJmODQuLjI4MmQyYzI5NDkgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL2FybS9NYWtl ZmlsZQorKysgYi94ZW4vYXJjaC9hcm0vTWFrZWZpbGUKQEAgLTIxLDYgKzIxLDcgQEAgb2JqLSQo Q09ORklHX0hBU19HSUNWMykgKz0gZ2ljLXYzLm8KIG9iai0kKENPTkZJR19IQVNfSVRTKSArPSBn aWMtdjMtaXRzLm8KIG9iai0kKENPTkZJR19IQVNfSVRTKSArPSBnaWMtdjMtbHBpLm8KIG9iai15 ICs9IGd1ZXN0Y29weS5vCitvYmoteSArPSBndWVzdF93YWxrLm8KIG9iai15ICs9IGh2bS5vCiBv YmoteSArPSBpby5vCiBvYmoteSArPSBpcnEubwpkaWZmIC0tZ2l0IGEveGVuL2FyY2gvYXJtL2d1 ZXN0X3dhbGsuYyBiL3hlbi9hcmNoL2FybS9ndWVzdF93YWxrLmMKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMDAwMC4uYjhiYjU1M2E2ZQotLS0gL2Rldi9udWxsCisrKyBiL3hlbi9h cmNoL2FybS9ndWVzdF93YWxrLmMKQEAgLTAsMCArMSw5MSBAQAorLyoKKyAqIEd1ZXN0IHBhZ2Ug dGFibGUgd2FsaworICogQ29weXJpZ2h0IChjKSAyMDE3IFNlcmdlaiBQcm9za3VyaW4gPHByb3Nr dXJpbkBzZWMuaW4udHVtLmRlPgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJl OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0CisgKiB1bmRlciB0aGUg dGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLAor ICogdmVyc2lvbiAyLCBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv bi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgaXQgd2ls bCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCisgKiBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0 aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IKKyAqIEZJVE5FU1MgRk9S IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBmb3IKKyAqIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg YSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZyB3aXRoCisgKiB0 aGlzIHByb2dyYW07IElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4K KyAqLworCisjaW5jbHVkZSA8eGVuL3NjaGVkLmg+CisKKy8qCisgKiBUaGUgZnVuY3Rpb24gZ3Vl c3Rfd2Fsa19zZCB0cmFuc2xhdGVzIGEgZ2l2ZW4gR1ZBIGludG8gYW4gSVBBIHVzaW5nIHRoZQor ICogc2hvcnQtZGVzY3JpcHRvciB0cmFuc2xhdGlvbiB0YWJsZSBmb3JtYXQgaW4gc29mdHdhcmUu IFRoaXMgZnVuY3Rpb24gYXNzdW1lcworICogdGhhdCB0aGUgZG9tYWluIGlzIHJ1bm5pbmcgb24g dGhlIGN1cnJlbnRseSBhY3RpdmUgdkNQVS4gVG8gd2FsayB0aGUgZ3Vlc3QncworICogcGFnZSB0 YWJsZSBvbiBhIGRpZmZlcmVudCB2Q1BVLCB0aGUgZm9sbG93aW5nIHJlZ2lzdGVycyB3b3VsZCBu ZWVkIHRvIGJlCisgKiBsb2FkZWQ6IFRDUl9FTDEsIFRUQlIwX0VMMSwgVFRCUjFfRUwxLCBhbmQg U0NUTFJfRUwxLgorICovCitzdGF0aWMgaW50IGd1ZXN0X3dhbGtfc2QoY29uc3Qgc3RydWN0IHZj cHUgKnYsCisgICAgICAgICAgICAgICAgICAgICAgICAgdmFkZHJfdCBndmEsIHBhZGRyX3QgKmlw YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgKnBlcm1zKQoreworICAg IC8qIE5vdCBpbXBsZW1lbnRlZCB5ZXQuICovCisgICAgcmV0dXJuIC1FRkFVTFQ7Cit9CisKKy8q CisgKiBUaGUgZnVuY3Rpb24gZ3Vlc3Rfd2Fsa19sZCB0cmFuc2xhdGVzIGEgZ2l2ZW4gR1ZBIGlu dG8gYW4gSVBBIHVzaW5nIHRoZQorICogbG9uZy1kZXNjcmlwdG9yIHRyYW5zbGF0aW9uIHRhYmxl IGZvcm1hdCBpbiBzb2Z0d2FyZS4gVGhpcyBmdW5jdGlvbiBhc3N1bWVzCisgKiB0aGF0IHRoZSBk b21haW4gaXMgcnVubmluZyBvbiB0aGUgY3VycmVudGx5IGFjdGl2ZSB2Q1BVLiBUbyB3YWxrIHRo ZSBndWVzdCdzCisgKiBwYWdlIHRhYmxlIG9uIGEgZGlmZmVyZW50IHZDUFUsIHRoZSBmb2xsb3dp bmcgcmVnaXN0ZXJzIHdvdWxkIG5lZWQgdG8gYmUKKyAqIGxvYWRlZDogVENSX0VMMSwgVFRCUjBf RUwxLCBUVEJSMV9FTDEsIGFuZCBTQ1RMUl9FTDEuCisgKi8KK3N0YXRpYyBpbnQgZ3Vlc3Rfd2Fs a19sZChjb25zdCBzdHJ1Y3QgdmNwdSAqdiwKKyAgICAgICAgICAgICAgICAgICAgICAgICB2YWRk cl90IGd2YSwgcGFkZHJfdCAqaXBhLAorICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVk IGludCAqcGVybXMpCit7CisgICAgLyogTm90IGltcGxlbWVudGVkIHlldC4gKi8KKyAgICByZXR1 cm4gLUVGQVVMVDsKK30KKworaW50IGd1ZXN0X3dhbGtfdGFibGVzKGNvbnN0IHN0cnVjdCB2Y3B1 ICp2LCB2YWRkcl90IGd2YSwKKyAgICAgICAgICAgICAgICAgICAgICBwYWRkcl90ICppcGEsIHVu c2lnbmVkIGludCAqcGVybXMpCit7CisgICAgdWludDMyX3Qgc2N0bHIgPSBSRUFEX1NZU1JFRyhT Q1RMUl9FTDEpOworICAgIHJlZ2lzdGVyX3QgdGNyID0gUkVBRF9TWVNSRUcoVENSX0VMMSk7Cisg ICAgdW5zaWduZWQgaW50IF9wZXJtcyA9IEdWMk1fUkVBRDsKKworICAgIC8qIFdlIGFzc3VtZSB0 aGF0IHRoZSBkb21haW4gaXMgcnVubmluZyBvbiB0aGUgY3VycmVudGx5IGFjdGl2ZSBkb21haW4u ICovCisgICAgaWYgKCB2ICE9IGN1cnJlbnQgKQorICAgICAgICByZXR1cm4gLUVGQVVMVDsKKwor ICAgIC8qIEFsbG93IHBlcm1zIHRvIGJlIE5VTEwuICovCisgICAgcGVybXMgPSBwZXJtcyA/OiAm X3Blcm1zOworCisgICAgLyogSWYgdGhlIE1NVSBpcyBkaXNhYmxlZCwgdGhlcmUgaXMgbm8gbmVl ZCB0byB0cmFuc2xhdGUgdGhlIGd2YS4gKi8KKyAgICBpZiAoICEoc2N0bHIgJiBTQ1RMUl9NKSAp CisgICAgeworICAgICAgICAqaXBhID0gZ3ZhOworCisgICAgICAgIC8qIE1lbW9yeSBjYW4gYmUg YWNjZXNzZWQgd2l0aG91dCBhbnkgcmVzdHJpY3Rpb25zLiAqLworICAgICAgICAqcGVybXMgPSBH VjJNX1JFQUR8R1YyTV9XUklURXxHVjJNX0VYRUM7CisKKyAgICAgICAgcmV0dXJuIDA7CisgICAg fQorCisgICAgaWYgKCBpc18zMmJpdF9kb21haW4odi0+ZG9tYWluKSApCisgICAgeworICAgICAg ICBpZiAoICEodGNyICYgVFRCQ1JfRUFFKSApCisgICAgICAgICAgICByZXR1cm4gZ3Vlc3Rfd2Fs a19zZCh2LCBndmEsIGlwYSwgcGVybXMpOworICAgIH0KKworICAgIHJldHVybiBndWVzdF93YWxr X2xkKHYsIGd2YSwgaXBhLCBwZXJtcyk7Cit9CisKKy8qCisgKiBMb2NhbCB2YXJpYWJsZXM6Cisg KiBtb2RlOiBDCisgKiBjLWZpbGUtc3R5bGU6ICJCU0QiCisgKiBjLWJhc2ljLW9mZnNldDogNAor ICogaW5kZW50LXRhYnMtbW9kZTogbmlsCisgKiBFbmQ6CisgKi8KZGlmZiAtLWdpdCBhL3hlbi9p bmNsdWRlL2FzbS1hcm0vZ3Vlc3Rfd2Fsay5oIGIveGVuL2luY2x1ZGUvYXNtLWFybS9ndWVzdF93 YWxrLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uNGVkODQ3NmUwOAot LS0gL2Rldi9udWxsCisrKyBiL3hlbi9pbmNsdWRlL2FzbS1hcm0vZ3Vlc3Rfd2Fsay5oCkBAIC0w LDAgKzEsMTkgQEAKKyNpZm5kZWYgX1hFTl9HVUVTVF9XQUxLX0gKKyNkZWZpbmUgX1hFTl9HVUVT VF9XQUxLX0gKKworLyogV2FsayB0aGUgZ3Vlc3QncyBwYWdlIHRhYmxlcyBpbiBzb2Z0d2FyZS4g Ki8KK2ludCBndWVzdF93YWxrX3RhYmxlcyhjb25zdCBzdHJ1Y3QgdmNwdSAqdiwKKyAgICAgICAg ICAgICAgICAgICAgICB2YWRkcl90IGd2YSwKKyAgICAgICAgICAgICAgICAgICAgICBwYWRkcl90 ICppcGEsCisgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50ICpwZXJtcyk7CisKKyNl bmRpZiAvKiBfWEVOX0dVRVNUX1dBTEtfSCAqLworCisvKgorICogTG9jYWwgdmFyaWFibGVzOgor ICogbW9kZTogQworICogYy1maWxlLXN0eWxlOiAiQlNEIgorICogYy1iYXNpYy1vZmZzZXQ6IDQK KyAqIGluZGVudC10YWJzLW1vZGU6IG5pbAorICogRW5kOgorICovCi0tIAoyLjEyLjIKCgpfX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFp bGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHBzOi8vbGlzdHMueGVuLm9yZy94 ZW4tZGV2ZWwK