From: Jordan Crouse Subject: [PATCH 05/16] iommu: arm-smmu: Add support for private PASIDs Date: Fri, 18 May 2018 15:34:49 -0600 Message-ID: <20180518213500.31595-6-jcrouse@codeaurora.org> References: <20180518213500.31595-1-jcrouse@codeaurora.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20180518213500.31595-1-jcrouse-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: freedreno-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "Freedreno" To: freedreno-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Cc: jean-philippe.brucker-5wv7dgnIgG8@public.gmane.org, linux-arm-msm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, tfiga-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org, iommu-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org, vivek.gautam-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org, linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org List-Id: dri-devel@lists.freedesktop.org QWRkIHN1cHBvcnQgZm9yIGFsbG9jYXRpbmcgYW5kIHBvcHVsYXRpbmcgcGFnZXRhYmxlcwppbmRl eGVkIGJ5IHByaXZhdGUgUEFTSURzLiBFYWNoIG5ldyBQQVNJRCBpcyBhbGxvY2F0ZWQgYSBwYWdl dGFibGUKd2l0aCB0aGUgc2FtZSBwYXJhbWV0ZXJzIGFuZCBmb3JtYXQgYXMgdGhlIHBhcmVudCBk b21haW4uCgpTaWduZWQtb2ZmLWJ5OiBKb3JkYW4gQ3JvdXNlIDxqY3JvdXNlQGNvZGVhdXJvcmEu b3JnPgotLS0KIGRyaXZlcnMvaW9tbXUvYXJtLXNtbXUuYyAgIHwgMTU0ICsrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrLS0KIGRyaXZlcnMvaW9tbXUvaW8tcGd0YWJsZS5oIHwgIDEw ICsrLQogMiBmaWxlcyBjaGFuZ2VkLCAxNTUgaW5zZXJ0aW9ucygrKSwgOSBkZWxldGlvbnMoLSkK CmRpZmYgLS1naXQgYS9kcml2ZXJzL2lvbW11L2FybS1zbW11LmMgYi9kcml2ZXJzL2lvbW11L2Fy bS1zbW11LmMKaW5kZXggZDQ1OTkwOTg3N2MzLi41YzdjMTM1YmJiNDQgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvaW9tbXUvYXJtLXNtbXUuYworKysgYi9kcml2ZXJzL2lvbW11L2FybS1zbW11LmMKQEAg LTIwMSw3ICsyMDEsNiBAQCBzdHJ1Y3QgYXJtX3NtbXVfZGV2aWNlIHsKIAl1bnNpZ25lZCBsb25n CQkJdmFfc2l6ZTsKIAl1bnNpZ25lZCBsb25nCQkJaXBhX3NpemU7CiAJdW5zaWduZWQgbG9uZwkJ CXBhX3NpemU7Ci0JdW5zaWduZWQgbG9uZwkJCXVic19zaXplOwogCXVuc2lnbmVkIGxvbmcJCQlw Z3NpemVfYml0bWFwOwogCiAJdTMyCQkJCW51bV9nbG9iYWxfaXJxczsKQEAgLTI1Miw2ICsyNTEs OSBAQCBzdHJ1Y3QgYXJtX3NtbXVfZG9tYWluIHsKIAlzcGlubG9ja190CQkJY2JfbG9jazsgLyog U2VyaWFsaXNlcyBBVFMxKiBvcHMgYW5kIFRMQiBzeW5jcyAqLwogCXUzMiBhdHRyaWJ1dGVzOwog CXN0cnVjdCBpb21tdV9kb21haW4JCWRvbWFpbjsKKworCXNwaW5sb2NrX3QJCQlwYXNpZF9sb2Nr OworCXN0cnVjdCBsaXN0X2hlYWQJCXBhc2lkX2xpc3Q7CiB9OwogCiBzdHJ1Y3QgYXJtX3NtbXVf b3B0aW9uX3Byb3AgewpAQCAtMjU5LDYgKzI2MSwxNDQgQEAgc3RydWN0IGFybV9zbW11X29wdGlv bl9wcm9wIHsKIAljb25zdCBjaGFyICpwcm9wOwogfTsKIAorc3RhdGljIHN0cnVjdCBhcm1fc21t dV9kb21haW4gKnRvX3NtbXVfZG9tYWluKHN0cnVjdCBpb21tdV9kb21haW4gKmRvbSkKK3sKKwly ZXR1cm4gY29udGFpbmVyX29mKGRvbSwgc3RydWN0IGFybV9zbW11X2RvbWFpbiwgZG9tYWluKTsK K30KKworc3RydWN0IGFybV9zbW11X3Bhc2lkIHsKKwlzdHJ1Y3QgaW9tbXVfZG9tYWluICpkb21h aW47CisJc3RydWN0IGlvX3BndGFibGVfb3BzCQkqcGd0Ymxfb3BzOworCXN0cnVjdCBsaXN0X2hl YWQgbm9kZTsKKwlpbnQgcGFzaWQ7Cit9OworCitzdHJ1Y3QgYXJtX3NtbXVfcGFzaWQgKmFybV9z bW11X2dldF9wYXNpZChzdHJ1Y3QgYXJtX3NtbXVfZG9tYWluICpzbW11X2RvbWFpbiwKKwkJaW50 IHBhc2lkKQoreworCXN0cnVjdCBhcm1fc21tdV9wYXNpZCAqbm9kZSwgKm9iaiA9IE5VTEw7CisK KwlzcGluX2xvY2soJnNtbXVfZG9tYWluLT5wYXNpZF9sb2NrKTsKKwlsaXN0X2Zvcl9lYWNoX2Vu dHJ5KG5vZGUsICZzbW11X2RvbWFpbi0+cGFzaWRfbGlzdCwgbm9kZSkgeworCQlpZiAobm9kZS0+ cGFzaWQgPT0gcGFzaWQpIHsKKwkJCW9iaiA9IG5vZGU7CisJCQlicmVhazsKKwkJfQorCX0KKwlz cGluX3VubG9jaygmc21tdV9kb21haW4tPnBhc2lkX2xvY2spOworCisJcmV0dXJuIG9iajsKK30K Kworc3RhdGljIHZvaWQgYXJtX3NtbXVfbW1fZGV0YWNoKHN0cnVjdCBpb21tdV9kb21haW4gKmRv bWFpbiwgc3RydWN0IGRldmljZSAqZGV2LAorCQlzdHJ1Y3QgaW9fbW0gKmlvX21tLCBib29sIHVu dXNlZCkKK3sKKwlzdHJ1Y3QgYXJtX3NtbXVfZG9tYWluICpzbW11X2RvbWFpbiA9IHRvX3NtbXVf ZG9tYWluKGRvbWFpbik7CisJc3RydWN0IGFybV9zbW11X3Bhc2lkICpub2RlLCAqb2JqID0gTlVM TDsKKworCXNwaW5fbG9jaygmc21tdV9kb21haW4tPnBhc2lkX2xvY2spOworCWxpc3RfZm9yX2Vh Y2hfZW50cnkobm9kZSwgJnNtbXVfZG9tYWluLT5wYXNpZF9saXN0LCBub2RlKSB7CisJCWlmIChu b2RlLT5wYXNpZCA9PSBpb19tbS0+cGFzaWQpIHsKKwkJCW9iaiA9IG5vZGU7CisJCQlsaXN0X2Rl bCgmb2JqLT5ub2RlKTsKKwkJCWJyZWFrOworCQl9CisJfQorCXNwaW5fdW5sb2NrKCZzbW11X2Rv bWFpbi0+cGFzaWRfbG9jayk7CisKKwlpZiAob2JqKQorCQlmcmVlX2lvX3BndGFibGVfb3BzKG9i ai0+cGd0Ymxfb3BzKTsKKworCWtmcmVlKG9iaik7Cit9CisKK3N0YXRpYyBzaXplX3QgYXJtX3Nt bXVfc3ZhX3VubWFwKHN0cnVjdCBpb21tdV9kb21haW4gKmRvbWFpbiwgaW50IHBhc2lkLAorCQl1 bnNpZ25lZCBsb25nIGlvdmEsIHNpemVfdCBzaXplKQoreworCXN0cnVjdCBhcm1fc21tdV9wYXNp ZCAqb2JqID0KKwkJYXJtX3NtbXVfZ2V0X3Bhc2lkKHRvX3NtbXVfZG9tYWluKGRvbWFpbiksIHBh c2lkKTsKKworCWlmICghb2JqKQorCQlyZXR1cm4gLUVOT0RFVjsKKworCXJldHVybiBvYmotPnBn dGJsX29wcy0+dW5tYXAob2JqLT5wZ3RibF9vcHMsIGlvdmEsIHNpemUpOworfQorCisKK3N0YXRp YyBpbnQgYXJtX3NtbXVfc3ZhX21hcChzdHJ1Y3QgaW9tbXVfZG9tYWluICpkb21haW4sIGludCBw YXNpZCwKKwkJdW5zaWduZWQgbG9uZyBpb3ZhLCBwaHlzX2FkZHJfdCBwYWRkciwgc2l6ZV90IHNp emUsIGludCBwcm90KQoreworCXN0cnVjdCBhcm1fc21tdV9wYXNpZCAqb2JqID0KKwkJYXJtX3Nt bXVfZ2V0X3Bhc2lkKHRvX3NtbXVfZG9tYWluKGRvbWFpbiksIHBhc2lkKTsKKworCWlmICghb2Jq KQorCQlyZXR1cm4gLUVOT0RFVjsKKworCXJldHVybiBvYmotPnBndGJsX29wcy0+bWFwKG9iai0+ cGd0Ymxfb3BzLCBpb3ZhLCBwYWRkciwgc2l6ZSwgcHJvdCk7Cit9CisKK3N0YXRpYyBpbnQgYXJt X3NtbXVfbW1fYXR0YWNoKHN0cnVjdCBpb21tdV9kb21haW4gKmRvbWFpbiwgc3RydWN0IGRldmlj ZSAqZGV2LAorCQlzdHJ1Y3QgaW9fbW0gKmlvX21tLCBib29sIHVudXNlZCkKK3sKKwlzdHJ1Y3Qg YXJtX3NtbXVfcGFzaWQgKm9iajsKKwlzdHJ1Y3QgaW9fcGd0YWJsZV9jZmcgcGd0YmxfY2ZnOwor CXN0cnVjdCBhcm1fc21tdV9kb21haW4gKnNtbXVfZG9tYWluID0gdG9fc21tdV9kb21haW4oZG9t YWluKTsKKwlzdHJ1Y3QgYXJtX3NtbXVfZGV2aWNlICpzbW11ID0gc21tdV9kb21haW4tPnNtbXU7 CisJZW51bSBpb19wZ3RhYmxlX2ZtdCBmbXQ7CisJdW5zaWduZWQgbG9uZyBpYXMsIG9hczsKKwor CS8qIE9ubHkgYWxsb3cgcHJpdmF0ZSBwYXNpZHMgKi8KKwlpZiAoaW9fbW0tPnR5cGUgIT0gSU9f VFlQRV9QUklWQVRFIHx8IGlvX21tLT5tbSkKKwkJcmV0dXJuIC1FTk9ERVY7CisKKwkvKiBPbmx5 IGFsbG93IHBhc2lkIGJhY2tlZCB0YWJsZXMgdG8gYmUgY3JlYXRlZCBvbiBTMSBkb21haW5zICov CisJaWYgKHNtbXVfZG9tYWluLT5zdGFnZSAhPSBBUk1fU01NVV9ET01BSU5fUzEpCisJCXJldHVy biAtRU5PREVWOworCisJb2JqID0ga3phbGxvYyhzaXplb2YoKm9iaiksIEdGUF9LRVJORUwpOwor CWlmICghb2JqKQorCQlyZXR1cm4gLUVOT01FTTsKKworCS8qIEdldCB0aGUgc2FtZSBleGFjdCBm b3JtYXQgYXMgdGhlIHBhcmVudCBkb21haW4gKi8KKwlpYXMgPSBzbW11LT52YV9zaXplOworCW9h cyA9IHNtbXUtPmlwYV9zaXplOworCisJaWYgKHNtbXVfZG9tYWluLT5jZmcuZm10ID09IEFSTV9T TU1VX0NUWF9GTVRfQUFSQ0g2NCkKKwkJZm10ID0gQVJNXzY0X0xQQUVfUzE7CisJZWxzZSBpZiAo c21tdV9kb21haW4tPmNmZy5mbXQgPT0gQVJNX1NNTVVfQ1RYX0ZNVF9BQVJDSDMyX0wpIHsKKwkJ Zm10ID0gQVJNXzMyX0xQQUVfUzE7CisJCWlhcyA9IG1pbihpYXMsIDMyVUwpOworCQlvYXMgPSBt aW4ob2FzLCA0MFVMKTsKKwl9IGVsc2UgeworCQlmbXQgPSBBUk1fVjdTOworCQlpYXMgPSBtaW4o aWFzLCAzMlVMKTsKKwkJb2FzID0gbWluKG9hcywgMzJVTCk7CisJfQorCisJcGd0YmxfY2ZnID0g KHN0cnVjdCBpb19wZ3RhYmxlX2NmZykgeworCQkucGdzaXplX2JpdG1hcCA9IHNtbXUtPnBnc2l6 ZV9iaXRtYXAsCisJCS5pYXMgPSBpYXMsCisJCS5vYXMgPSBvYXMsCisJCS50bGIgPSBOVUxMLAor CQkuaW9tbXVfZGV2ID0gc21tdS0+ZGV2CisJfTsKKworCW9iai0+cGd0Ymxfb3BzID0gYWxsb2Nf aW9fcGd0YWJsZV9vcHMoZm10LCAmcGd0YmxfY2ZnLCBzbW11X2RvbWFpbik7CisJaWYgKCFvYmot PnBndGJsX29wcykgeworCQlrZnJlZShvYmopOworCQlyZXR1cm4gLUVOT01FTTsKKwl9CisKKwlv YmotPmRvbWFpbiA9IGRvbWFpbjsKKwlvYmotPnBhc2lkID0gaW9fbW0tPnBhc2lkOworCisJc3Bp bl9sb2NrKCZzbW11X2RvbWFpbi0+cGFzaWRfbG9jayk7CisJbGlzdF9hZGRfdGFpbCgmb2JqLT5u b2RlLCAmc21tdV9kb21haW4tPnBhc2lkX2xpc3QpOworCXNwaW5fdW5sb2NrKCZzbW11X2RvbWFp bi0+cGFzaWRfbG9jayk7CisKKwlyZXR1cm4gMDsKK30KKwogc3RhdGljIGF0b21pY190IGNhdml1 bV9zbW11X2NvbnRleHRfY291bnQgPSBBVE9NSUNfSU5JVCgwKTsKIAogc3RhdGljIGJvb2wgdXNp bmdfbGVnYWN5X2JpbmRpbmcsIHVzaW5nX2dlbmVyaWNfYmluZGluZzsKQEAgLTI2OCwxMSArNDA4 LDYgQEAgc3RhdGljIHN0cnVjdCBhcm1fc21tdV9vcHRpb25fcHJvcCBhcm1fc21tdV9vcHRpb25z W10gPSB7CiAJeyAwLCBOVUxMfSwKIH07CiAKLXN0YXRpYyBzdHJ1Y3QgYXJtX3NtbXVfZG9tYWlu ICp0b19zbW11X2RvbWFpbihzdHJ1Y3QgaW9tbXVfZG9tYWluICpkb20pCi17Ci0JcmV0dXJuIGNv bnRhaW5lcl9vZihkb20sIHN0cnVjdCBhcm1fc21tdV9kb21haW4sIGRvbWFpbik7Ci19Ci0KIHN0 YXRpYyB2b2lkIHBhcnNlX2RyaXZlcl9vcHRpb25zKHN0cnVjdCBhcm1fc21tdV9kZXZpY2UgKnNt bXUpCiB7CiAJaW50IGkgPSAwOwpAQCAtMTA1NSw2ICsxMTkwLDkgQEAgc3RhdGljIHN0cnVjdCBp b21tdV9kb21haW4gKmFybV9zbW11X2RvbWFpbl9hbGxvYyh1bnNpZ25lZCB0eXBlKQogCW11dGV4 X2luaXQoJnNtbXVfZG9tYWluLT5pbml0X211dGV4KTsKIAlzcGluX2xvY2tfaW5pdCgmc21tdV9k b21haW4tPmNiX2xvY2spOwogCisJc3Bpbl9sb2NrX2luaXQoJnNtbXVfZG9tYWluLT5wYXNpZF9s b2NrKTsKKwlJTklUX0xJU1RfSEVBRCgmc21tdV9kb21haW4tPnBhc2lkX2xpc3QpOworCiAJcmV0 dXJuICZzbW11X2RvbWFpbi0+ZG9tYWluOwogfQogCkBAIC0xNjk0LDYgKzE4MzIsMTAgQEAgc3Rh dGljIHN0cnVjdCBpb21tdV9vcHMgYXJtX3NtbXVfb3BzID0gewogCS5vZl94bGF0ZQkJPSBhcm1f c21tdV9vZl94bGF0ZSwKIAkuZ2V0X3Jlc3ZfcmVnaW9ucwk9IGFybV9zbW11X2dldF9yZXN2X3Jl Z2lvbnMsCiAJLnB1dF9yZXN2X3JlZ2lvbnMJPSBhcm1fc21tdV9wdXRfcmVzdl9yZWdpb25zLAor CS5tbV9hdHRhY2gJCT0gYXJtX3NtbXVfbW1fYXR0YWNoLAorCS5zdmFfbWFwCQk9IGFybV9zbW11 X3N2YV9tYXAsCisJLnN2YV91bm1hcAkJPSBhcm1fc21tdV9zdmFfdW5tYXAsCisJLm1tX2RldGFj aAkJPSBhcm1fc21tdV9tbV9kZXRhY2gsCiAJLnBnc2l6ZV9iaXRtYXAJCT0gLTFVTCwgLyogUmVz dHJpY3RlZCBkdXJpbmcgZGV2aWNlIGF0dGFjaCAqLwogfTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVy cy9pb21tdS9pby1wZ3RhYmxlLmggYi9kcml2ZXJzL2lvbW11L2lvLXBndGFibGUuaAppbmRleCBm ZDlmMGZjNGViNjAuLjY5ZmNlZTc2MzQ0NiAxMDA2NDQKLS0tIGEvZHJpdmVycy9pb21tdS9pby1w Z3RhYmxlLmgKKysrIGIvZHJpdmVycy9pb21tdS9pby1wZ3RhYmxlLmgKQEAgLTE3MywxOCArMTcz LDIyIEBAIHN0cnVjdCBpb19wZ3RhYmxlIHsKIAogc3RhdGljIGlubGluZSB2b2lkIGlvX3BndGFi bGVfdGxiX2ZsdXNoX2FsbChzdHJ1Y3QgaW9fcGd0YWJsZSAqaW9wKQogewotCWlvcC0+Y2ZnLnRs Yi0+dGxiX2ZsdXNoX2FsbChpb3AtPmNvb2tpZSk7CisJaWYgKGlvcC0+Y2ZnLnRsYikKKwkJaW9w LT5jZmcudGxiLT50bGJfZmx1c2hfYWxsKGlvcC0+Y29va2llKTsKIH0KIAogc3RhdGljIGlubGlu ZSB2b2lkIGlvX3BndGFibGVfdGxiX2FkZF9mbHVzaChzdHJ1Y3QgaW9fcGd0YWJsZSAqaW9wLAog CQl1bnNpZ25lZCBsb25nIGlvdmEsIHNpemVfdCBzaXplLCBzaXplX3QgZ3JhbnVsZSwgYm9vbCBs ZWFmKQogewotCWlvcC0+Y2ZnLnRsYi0+dGxiX2FkZF9mbHVzaChpb3ZhLCBzaXplLCBncmFudWxl LCBsZWFmLCBpb3AtPmNvb2tpZSk7CisJaWYgKGlvcC0+Y2ZnLnRsYikKKwkJaW9wLT5jZmcudGxi LT50bGJfYWRkX2ZsdXNoKGlvdmEsIHNpemUsIGdyYW51bGUsIGxlYWYsCisJCQlpb3AtPmNvb2tp ZSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgdm9pZCBpb19wZ3RhYmxlX3RsYl9zeW5jKHN0cnVjdCBp b19wZ3RhYmxlICppb3ApCiB7Ci0JaW9wLT5jZmcudGxiLT50bGJfc3luYyhpb3AtPmNvb2tpZSk7 CisJaWYgKGlvcC0+Y2ZnLnRsYikKKwkJaW9wLT5jZmcudGxiLT50bGJfc3luYyhpb3AtPmNvb2tp ZSk7CiB9CiAKIC8qKgotLSAKMi4xNy4wCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwpGcmVlZHJlbm8gbWFpbGluZyBsaXN0CkZyZWVkcmVub0BsaXN0cy5m cmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0 aW5mby9mcmVlZHJlbm8K