From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andre Przywara Subject: [PATCH v10 18/32] ARM: vITS: introduce translation table walks Date: Fri, 26 May 2017 18:35:26 +0100 Message-ID: <20170526173540.10066-19-andre.przywara@arm.com> References: <20170526173540.10066-1-andre.przywara@arm.com> 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 1dEJ9q-0005Rk-QS for xen-devel@lists.xenproject.org; Fri, 26 May 2017 17:36:14 +0000 In-Reply-To: <20170526173540.10066-1-andre.przywara@arm.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Julien Grall , Stefano Stabellini Cc: xen-devel@lists.xenproject.org, Vijaya Kumar K , Vijay Kilari , Shanker Donthineni List-Id: xen-devel@lists.xenproject.org VGhlIElUUyBzdG9yZXMgdGhlIHRhcmdldCAodilDUFUgYW5kIHRoZSAodmlydHVhbCkgTFBJIG51 bWJlciBpbiB0YWJsZXMuCkludHJvZHVjZSBmdW5jdGlvbnMgdG8gd2FsayB0aG9zZSB0YWJsZXMg YW5kIHRyYW5zbGF0ZSBhbiBkZXZpY2UgSUQgLQpldmVudCBJRCBwYWlyIGludG8gYSBwYWlyIG9m IHZpcnR1YWwgTFBJIGFuZCB2Q1BVLgpXZSBtYXAgdGhvc2UgdGFibGVzIG9uIGRlbWFuZCAtIHdo aWNoIGlzIGNoZWFwIG9uIGFybTY0IC0gYW5kIGNvcHkgdGhlCnJlc3BlY3RpdmUgZW50cmllcyBi ZWZvcmUgdXNpbmcgdGhlbSwgdG8gYXZvaWQgdGhlIGd1ZXN0IHRhbXBlcmluZyB3aXRoCnRoZW0g bWVhbndoaWxlLgoKVG8gYWxsb3cgY29tcGlsaW5nIHdpdGhvdXQgd2FybmluZ3MsIHdlIGRlY2xh cmUgdHdvIGZ1bmN0aW9ucyBhcwpub24tc3RhdGljIGZvciB0aGUgbW9tZW50LCB3aGljaCB0d28g bGF0ZXIgcGF0Y2hlcyB3aWxsIGZpeC4KClNpZ25lZC1vZmYtYnk6IEFuZHJlIFByenl3YXJhIDxh bmRyZS5wcnp5d2FyYUBhcm0uY29tPgotLS0KIHhlbi9hcmNoL2FybS92Z2ljLXYzLWl0cy5jIHwg MTY3ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogMSBmaWxl IGNoYW5nZWQsIDE2NyBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEveGVuL2FyY2gvYXJtL3Zn aWMtdjMtaXRzLmMgYi94ZW4vYXJjaC9hcm0vdmdpYy12My1pdHMuYwppbmRleCAyYzdmMjJmLi44 ZjRhOWUxIDEwMDY0NAotLS0gYS94ZW4vYXJjaC9hcm0vdmdpYy12My1pdHMuYworKysgYi94ZW4v YXJjaC9hcm0vdmdpYy12My1pdHMuYwpAQCAtOTYsOSArOTYsMTc2IEBAIHR5cGVkZWYgdWludDY0 X3QgZGV2X3RhYmxlX2VudHJ5X3Q7CiAjZGVmaW5lIERFVl9UQUJMRV9FTlRSWShhZGRyLCBiaXRz KSAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgKCgoYWRkcikgJiBHRU5NQVNLKDUxLCA4 KSkgfCAoKChiaXRzKSAtIDEpICYgR0VOTUFTSyg0LCAwKSkpCiAKKyNkZWZpbmUgVU5NQVBQRURf Q09MTEVDVElPTiAgICAgICgoY29sbF90YWJsZV9lbnRyeV90KX4wKQogI2RlZmluZSBHSVRTX0JB U0VSX1JPX01BU0sgICAgICAgKEdJVFNfQkFTRVJfVFlQRV9NQVNLIHwgXAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICgweDFmTCA8PCBHSVRTX0JBU0VSX0VOVFJZX1NJWkVfU0hJ RlQpKQogCisvKgorICogVGhlIHBoeXNpY2FsIGFkZHJlc3MgaXMgZW5jb2RlZCBzbGlnaHRseSBk aWZmZXJlbnRseSBkZXBlbmRpbmcgb24KKyAqIHRoZSB1c2VkIHBhZ2Ugc2l6ZTogdGhlIGhpZ2hl c3QgZm91ciBiaXRzIGFyZSBzdG9yZWQgaW4gdGhlIGxvd2VzdAorICogZm91ciBiaXRzIG9mIHRo ZSBmaWVsZCBmb3IgNjRLIHBhZ2VzLgorICovCitzdGF0aWMgcGFkZHJfdCBnZXRfYmFzZXJfcGh5 c19hZGRyKHVpbnQ2NF90IHJlZykKK3sKKyAgICBpZiAoIHJlZyAmIEJJVCg5KSApCisgICAgICAg IHJldHVybiAocmVnICYgR0VOTUFTSyg0NywgMTYpKSB8CisgICAgICAgICAgICAgICAgKChyZWcg JiBHRU5NQVNLKDE1LCAxMikpIDw8IDM2KTsKKyAgICBlbHNlCisgICAgICAgIHJldHVybiByZWcg JiBHRU5NQVNLKDQ3LCAxMik7Cit9CisKKy8qIE11c3QgYmUgY2FsbGVkIHdpdGggdGhlIElUUyBs b2NrIGhlbGQuICovCitzdGF0aWMgc3RydWN0IHZjcHUgKmdldF92Y3B1X2Zyb21fY29sbGVjdGlv bihzdHJ1Y3QgdmlydF9pdHMgKml0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHVpbnQxNl90IGNvbGxpZCkKK3sKKyAgICBwYWRkcl90IGFkZHIgPSBnZXRf YmFzZXJfcGh5c19hZGRyKGl0cy0+YmFzZXJfY29sbCk7CisgICAgY29sbF90YWJsZV9lbnRyeV90 IHZjcHVfaWQ7CisgICAgaW50IHJldDsKKworICAgIEFTU0VSVChzcGluX2lzX2xvY2tlZCgmaXRz LT5pdHNfbG9jaykpOworCisgICAgaWYgKCBjb2xsaWQgPj0gaXRzLT5tYXhfY29sbGVjdGlvbnMg KQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIHJldCA9IHZnaWNfYWNjZXNzX2d1ZXN0X21l bW9yeShpdHMtPmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZHIgKyBj b2xsaWQgKiBzaXplb2YoY29sbF90YWJsZV9lbnRyeV90KSwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgJnZjcHVfaWQsIHNpemVvZihjb2xsX3RhYmxlX2VudHJ5X3QpLCBmYWxz ZSk7CisgICAgaWYgKCByZXQgKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGlmICggdmNw dV9pZCA9PSBVTk1BUFBFRF9DT0xMRUNUSU9OIHx8IHZjcHVfaWQgPj0gaXRzLT5kLT5tYXhfdmNw dXMgKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIHJldHVybiBpdHMtPmQtPnZjcHVbdmNw dV9pZF07Cit9CisKKy8qCisgKiBMb29rdXAgdGhlIGFkZHJlc3Mgb2YgdGhlIEludGVycnVwdCBU cmFuc2xhdGlvbiBUYWJsZSBhc3NvY2lhdGVkIHdpdGgKKyAqIHRoYXQgZGV2aWNlIElELgorICog VE9ETzogYWRkIHN1cHBvcnQgZm9yIHdhbGtpbmcgaW5kaXJlY3QgdGFibGVzLgorICovCitzdGF0 aWMgaW50IGl0c19nZXRfaXR0KHN0cnVjdCB2aXJ0X2l0cyAqaXRzLCB1aW50MzJfdCBkZXZpZCwK KyAgICAgICAgICAgICAgICAgICAgICAgZGV2X3RhYmxlX2VudHJ5X3QgKml0dCkKK3sKKyAgICBw YWRkcl90IGFkZHIgPSBnZXRfYmFzZXJfcGh5c19hZGRyKGl0cy0+YmFzZXJfZGV2KTsKKworICAg IGlmICggZGV2aWQgPj0gaXRzLT5tYXhfZGV2aWNlcyApCisgICAgICAgIHJldHVybiAtRUlOVkFM OworCisgICAgcmV0dXJuIHZnaWNfYWNjZXNzX2d1ZXN0X21lbW9yeShpdHMtPmQsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyICsgZGV2aWQgKiBzaXplb2YoZGV2X3Rh YmxlX2VudHJ5X3QpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXR0LCBz aXplb2YoKml0dCksIGZhbHNlKTsKK30KKworLyoKKyAqIExvb2t1cCB0aGUgYWRkcmVzcyBvZiB0 aGUgSW50ZXJydXB0IFRyYW5zbGF0aW9uIFRhYmxlIGFzc29jaWF0ZWQgd2l0aAorICogYSBkZXZp Y2UgSUQgYW5kIHJldHVybiB0aGUgYWRkcmVzcyBvZiB0aGUgSVRURSBiZWxvbmdpbmcgdG8gdGhl IGV2ZW50IElECisgKiAod2hpY2ggaXMgYW4gaW5kZXggaW50byB0aGF0IHRhYmxlKS4KKyAqLwor c3RhdGljIHBhZGRyX3QgaXRzX2dldF9pdHRlX2FkZHJlc3Moc3RydWN0IHZpcnRfaXRzICppdHMs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBkZXZpZCwgdWlu dDMyX3QgZXZpZCkKK3sKKyAgICBkZXZfdGFibGVfZW50cnlfdCBpdHQ7CisgICAgaW50IHJldDsK KworICAgIHJldCA9IGl0c19nZXRfaXR0KGl0cywgZGV2aWQsICZpdHQpOworICAgIGlmICggcmV0 ICkKKyAgICAgICAgcmV0dXJuIElOVkFMSURfUEFERFI7CisKKyAgICBpZiAoIGV2aWQgPj0gREVW X1RBQkxFX0lUVF9TSVpFKGl0dCkgfHwKKyAgICAgICAgIERFVl9UQUJMRV9JVFRfQUREUihpdHQp ID09IElOVkFMSURfUEFERFIgKQorICAgICAgICByZXR1cm4gSU5WQUxJRF9QQUREUjsKKworICAg IHJldHVybiBERVZfVEFCTEVfSVRUX0FERFIoaXR0KSArIGV2aWQgKiBzaXplb2Yoc3RydWN0IHZp dHNfaXR0ZSk7Cit9CisKKy8qCisgKiBRdWVyaWVzIHRoZSBjb2xsZWN0aW9uIGFuZCBkZXZpY2Ug dGFibGVzIHRvIGdldCB0aGUgdkNQVSBhbmQgdmlydHVhbAorICogTFBJIG51bWJlciBmb3IgYSBn aXZlbiBndWVzdCBldmVudC4gVGhpcyBmaXJzdCBhY2Nlc3NlcyB0aGUgZ3Vlc3QgbWVtb3J5Cisg KiB0byByZXNvbHZlIHRoZSBhZGRyZXNzIG9mIHRoZSBJVFRFLCB0aGVuIHJlYWRzIHRoZSBJVFRF IGVudHJ5IGF0IHRoaXMKKyAqIGFkZHJlc3MgYW5kIHB1dHMgdGhlIHJlc3VsdCBpbiB2Y3B1X3B0 ciBhbmQgdmxwaV9wdHIuCisgKiBNdXN0IGJlIGNhbGxlZCB3aXRoIHRoZSBJVFMgbG9jayBoZWxk LgorICovCitzdGF0aWMgYm9vbCByZWFkX2l0dGVfbG9ja2VkKHN0cnVjdCB2aXJ0X2l0cyAqaXRz LCB1aW50MzJfdCBkZXZpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3Qg ZXZpZCwgc3RydWN0IHZjcHUgKip2Y3B1X3B0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgdWludDMyX3QgKnZscGlfcHRyKQoreworICAgIHBhZGRyX3QgYWRkcjsKKyAgICBzdHJ1Y3Qg dml0c19pdHRlIGl0dGU7CisgICAgc3RydWN0IHZjcHUgKnZjcHU7CisKKyAgICBBU1NFUlQoc3Bp bl9pc19sb2NrZWQoJml0cy0+aXRzX2xvY2spKTsKKworICAgIGFkZHIgPSBpdHNfZ2V0X2l0dGVf YWRkcmVzcyhpdHMsIGRldmlkLCBldmlkKTsKKyAgICBpZiAoIGFkZHIgPT0gSU5WQUxJRF9QQURE UiApCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICggdmdpY19hY2Nlc3NfZ3Vlc3Rf bWVtb3J5KGl0cy0+ZCwgYWRkciwgJml0dGUsIHNpemVvZihpdHRlKSwgZmFsc2UpICkKKyAgICAg ICAgcmV0dXJuIGZhbHNlOworCisgICAgdmNwdSA9IGdldF92Y3B1X2Zyb21fY29sbGVjdGlvbihp dHMsIGl0dGUuY29sbGVjdGlvbik7CisgICAgaWYgKCAhdmNwdSApCisgICAgICAgIHJldHVybiBm YWxzZTsKKworICAgICp2Y3B1X3B0ciA9IHZjcHU7CisgICAgKnZscGlfcHRyID0gaXR0ZS52bHBp OworICAgIHJldHVybiB0cnVlOworfQorCisvKgorICogVGhpcyBmdW5jdGlvbiB0YWtlcyBjYXJl IG9mIHRoZSBsb2NraW5nIGJ5IHRha2luZyB0aGUgaXRzX2xvY2sgaXRzZWxmLCBzbworICogYSBj YWxsZXIgc2hhbGwgbm90IGhvbGQgdGhpcy4gQmVmb3JlIHJldHVybmluZywgdGhlIGxvY2sgaXMg ZHJvcHBlZCBhZ2Fpbi4KKyAqLworYm9vbCByZWFkX2l0dGUoc3RydWN0IHZpcnRfaXRzICppdHMs IHVpbnQzMl90IGRldmlkLCB1aW50MzJfdCBldmlkLAorICAgICAgICAgICAgICAgc3RydWN0IHZj cHUgKip2Y3B1X3B0ciwgdWludDMyX3QgKnZscGlfcHRyKQoreworICAgIGJvb2wgcmV0OworCisg ICAgc3Bpbl9sb2NrKCZpdHMtPml0c19sb2NrKTsKKyAgICByZXQgPSByZWFkX2l0dGVfbG9ja2Vk KGl0cywgZGV2aWQsIGV2aWQsIHZjcHVfcHRyLCB2bHBpX3B0cik7CisgICAgc3Bpbl91bmxvY2so Jml0cy0+aXRzX2xvY2spOworCisgICAgcmV0dXJuIHJldDsKK30KKworLyoKKyAqIFF1ZXJpZXMg dGhlIGNvbGxlY3Rpb24gYW5kIGRldmljZSB0YWJsZXMgdG8gdHJhbnNsYXRlIHRoZSBkZXZpY2Ug SUQgYW5kCisgKiBldmVudCBJRCBhbmQgZmluZCB0aGUgYXBwcm9wcmlhdGUgSVRURS4gVGhlIGdp dmVuIGNvbGxlY3Rpb24gSUQgYW5kIHRoZQorICogdmlydHVhbCBMUEkgbnVtYmVyIGFyZSB0aGVu IHN0b3JlZCBpbnRvIHRoYXQgZW50cnkuCisgKiBJZiB2Y3B1X3B0ciBpcyBwcm92aWRlZCwgcmV0 dXJucyB0aGUgVkNQVSBiZWxvbmdpbmcgdG8gdGhhdCBjb2xsZWN0aW9uLgorICogTXVzdCBiZSBj YWxsZWQgd2l0aCB0aGUgSVRTIGxvY2sgaGVsZC4KKyAqLworYm9vbCB3cml0ZV9pdHRlX2xvY2tl ZChzdHJ1Y3QgdmlydF9pdHMgKml0cywgdWludDMyX3QgZGV2aWQsCisgICAgICAgICAgICAgICAg ICAgICAgIHVpbnQzMl90IGV2aWQsIHVpbnQzMl90IGNvbGxpZCwgdWludDMyX3QgdmxwaSwKKyAg ICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHZjcHUgKip2Y3B1X3B0cikKK3sKKyAgICBwYWRk cl90IGFkZHI7CisgICAgc3RydWN0IHZpdHNfaXR0ZSBpdHRlOworCisgICAgQVNTRVJUKHNwaW5f aXNfbG9ja2VkKCZpdHMtPml0c19sb2NrKSk7CisKKyAgICBpZiAoIGNvbGxpZCA+PSBpdHMtPm1h eF9jb2xsZWN0aW9ucyApCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICggdmxwaSA+ PSBpdHMtPmQtPmFyY2gudmdpYy5ucl9scGlzICkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisg ICAgYWRkciA9IGl0c19nZXRfaXR0ZV9hZGRyZXNzKGl0cywgZGV2aWQsIGV2aWQpOworICAgIGlm ICggYWRkciA9PSBJTlZBTElEX1BBRERSICkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg aXR0ZS5jb2xsZWN0aW9uID0gY29sbGlkOworICAgIGl0dGUudmxwaSA9IHZscGk7CisKKyAgICBp ZiAoIHZnaWNfYWNjZXNzX2d1ZXN0X21lbW9yeShpdHMtPmQsIGFkZHIsICZpdHRlLCBzaXplb2Yo aXR0ZSksIHRydWUpICkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKCB2Y3B1X3B0 ciApCisgICAgICAgICp2Y3B1X3B0ciA9IGdldF92Y3B1X2Zyb21fY29sbGVjdGlvbihpdHMsIGNv bGxpZCk7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogLyoqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqCiAgKiBGdW5jdGlvbnMgdGhhdCBoYW5kbGUgSVRTIGNvbW1hbmRzICoK ICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLS0gCjIuOS4wCgoKX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1h aWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwczovL2xpc3RzLnhlbi5vcmcv eGVuLWRldmVsCg==