From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jordan Crouse Subject: [PATCH 05/14] iommu: arm-smmu: Add pasid implementation Date: Wed, 21 Feb 2018 15:59:15 -0700 Message-ID: <20180221225924.30737-6-jcrouse@codeaurora.org> References: <20180221225924.30737-1-jcrouse@codeaurora.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20180221225924.30737-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: linux-arm-msm@vger.kernel.org QWRkIHN1cHBvcnQgZm9yIGFsbG9jYXRpbmcgYW5kIHBvcHVsYXRpbmcgcGFnZXRhYmxlcwppbmRl eGVkIGJ5IHBhc2lkLiBFYWNoIG5ldyBwYXNpZCBpcyBhbGxvY2F0ZWQgYSBwYWdldGFibGUKd2l0 aCB0aGUgc2FtZSBwYXJhbWV0ZXJzIGFuZCBmb3JtYXQgYXMgdGhlIHBhcmVudCBkb21haW4uCgpT aWduZWQtb2ZmLWJ5OiBKb3JkYW4gQ3JvdXNlIDxqY3JvdXNlQGNvZGVhdXJvcmEub3JnPgotLS0K IGRyaXZlcnMvaW9tbXUvYXJtLXNtbXUuYyB8IDE0OCArKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKystLQogMSBmaWxlIGNoYW5nZWQsIDE0MyBpbnNlcnRpb25zKCsp LCA1IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW9tbXUvYXJtLXNtbXUuYyBi L2RyaXZlcnMvaW9tbXUvYXJtLXNtbXUuYwppbmRleCBlYmZhNTliNTk2MjIuLjQyZjViZmEzZTI2 ZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9pb21tdS9hcm0tc21tdS5jCisrKyBiL2RyaXZlcnMvaW9t bXUvYXJtLXNtbXUuYwpAQCAtMjUwLDYgKzI1MCw5IEBAIHN0cnVjdCBhcm1fc21tdV9kb21haW4g ewogCXNwaW5sb2NrX3QJCQljYl9sb2NrOyAvKiBTZXJpYWxpc2VzIEFUUzEqIG9wcyBhbmQgVExC IHN5bmNzICovCiAJdTMyIGF0dHJpYnV0ZXM7CiAJc3RydWN0IGlvbW11X2RvbWFpbgkJZG9tYWlu OworCisJc3BpbmxvY2tfdAkJCXBhc2lkX2xvY2s7CisJc3RydWN0IGxpc3RfaGVhZAkJcGFzaWRf bGlzdDsKIH07CiAKIHN0cnVjdCBhcm1fc21tdV9vcHRpb25fcHJvcCB7CkBAIC0yNTcsNiArMjYw LDEzOSBAQCBzdHJ1Y3QgYXJtX3NtbXVfb3B0aW9uX3Byb3AgewogCWNvbnN0IGNoYXIgKnByb3A7 CiB9OwogCitzdGF0aWMgc3RydWN0IGFybV9zbW11X2RvbWFpbiAqdG9fc21tdV9kb21haW4oc3Ry dWN0IGlvbW11X2RvbWFpbiAqZG9tKQoreworCXJldHVybiBjb250YWluZXJfb2YoZG9tLCBzdHJ1 Y3QgYXJtX3NtbXVfZG9tYWluLCBkb21haW4pOworfQorCitzdHJ1Y3QgYXJtX3NtbXVfcGFzaWQg eworCXN0cnVjdCBpb21tdV9kb21haW4gKmRvbWFpbjsKKwlzdHJ1Y3QgaW9fcGd0YWJsZV9vcHMJ CSpwZ3RibF9vcHM7CisJc3RydWN0IGxpc3RfaGVhZCBub2RlOworCWludCBwYXNpZDsKK307CisK K3N0cnVjdCBhcm1fc21tdV9wYXNpZCAqYXJtX3NtbXVfZ2V0X3Bhc2lkKHN0cnVjdCBhcm1fc21t dV9kb21haW4gKnNtbXVfZG9tYWluLAorCQlpbnQgcGFzaWQpCit7CisJc3RydWN0IGFybV9zbW11 X3Bhc2lkICpub2RlLCAqb2JqID0gTlVMTDsKKworCXNwaW5fbG9jaygmc21tdV9kb21haW4tPnBh c2lkX2xvY2spOworCWxpc3RfZm9yX2VhY2hfZW50cnkobm9kZSwgJnNtbXVfZG9tYWluLT5wYXNp ZF9saXN0LCBub2RlKSB7CisJCWlmIChub2RlLT5wYXNpZCA9PSBwYXNpZCkgeworCQkJb2JqID0g bm9kZTsKKwkJCWJyZWFrOworCQl9CisJfQorCXNwaW5fdW5sb2NrKCZzbW11X2RvbWFpbi0+cGFz aWRfbG9jayk7CisKKwlyZXR1cm4gb2JqOworfQorCitzdGF0aWMgdm9pZCBhcm1fc21tdV9wYXNp ZF9mcmVlKHN0cnVjdCBpb21tdV9kb21haW4gKmRvbWFpbiwgaW50IHBhc2lkKQoreworCXN0cnVj dCBhcm1fc21tdV9kb21haW4gKnNtbXVfZG9tYWluID0gdG9fc21tdV9kb21haW4oZG9tYWluKTsK KwlzdHJ1Y3QgYXJtX3NtbXVfcGFzaWQgKm5vZGUsICpvYmogPSBOVUxMOworCisJc3Bpbl9sb2Nr KCZzbW11X2RvbWFpbi0+cGFzaWRfbG9jayk7CisJbGlzdF9mb3JfZWFjaF9lbnRyeShub2RlLCAm c21tdV9kb21haW4tPnBhc2lkX2xpc3QsIG5vZGUpIHsKKwkJaWYgKG5vZGUtPnBhc2lkID09IHBh c2lkKSB7CisJCQlvYmogPSBub2RlOworCQkJbGlzdF9kZWwoJm9iai0+bm9kZSk7CisJCQlicmVh azsKKwkJfQorCX0KKwlzcGluX3VubG9jaygmc21tdV9kb21haW4tPnBhc2lkX2xvY2spOworCisJ aWYgKG9iaikKKwkJZnJlZV9pb19wZ3RhYmxlX29wcyhvYmotPnBndGJsX29wcyk7CisKKwlrZnJl ZShvYmopOworfQorCitzdGF0aWMgc2l6ZV90IGFybV9zbW11X3N2YV91bm1hcChzdHJ1Y3QgaW9t bXVfZG9tYWluICpkb21haW4sIGludCBwYXNpZCwKKwkJdW5zaWduZWQgbG9uZyBpb3ZhLCBzaXpl X3Qgc2l6ZSkKK3sKKwlzdHJ1Y3QgYXJtX3NtbXVfcGFzaWQgKm9iaiA9CisJCWFybV9zbW11X2dl dF9wYXNpZCh0b19zbW11X2RvbWFpbihkb21haW4pLCBwYXNpZCk7CisKKwlpZiAoIW9iaikKKwkJ cmV0dXJuIC1FTk9ERVY7CisKKwlyZXR1cm4gb2JqLT5wZ3RibF9vcHMtPnVubWFwKG9iai0+cGd0 Ymxfb3BzLCBpb3ZhLCBzaXplKTsKK30KKworCitzdGF0aWMgaW50IGFybV9zbW11X3N2YV9tYXAo c3RydWN0IGlvbW11X2RvbWFpbiAqZG9tYWluLCBpbnQgcGFzaWQsCisJCXVuc2lnbmVkIGxvbmcg aW92YSwgcGh5c19hZGRyX3QgcGFkZHIsIHNpemVfdCBzaXplLCBpbnQgcHJvdCkKK3sKKwlzdHJ1 Y3QgYXJtX3NtbXVfcGFzaWQgKm9iaiA9CisJCWFybV9zbW11X2dldF9wYXNpZCh0b19zbW11X2Rv bWFpbihkb21haW4pLCBwYXNpZCk7CisKKwlpZiAoIW9iaikKKwkJcmV0dXJuIC1FTk9ERVY7CisK KwlyZXR1cm4gb2JqLT5wZ3RibF9vcHMtPm1hcChvYmotPnBndGJsX29wcywgaW92YSwgcGFkZHIs IHNpemUsIHByb3QpOworfQorCitzdGF0aWMgaW50IGFybV9zbW11X3Bhc2lkX2FsbG9jKHN0cnVj dCBpb21tdV9kb21haW4gKmRvbWFpbiwgc3RydWN0IGRldmljZSAqZGV2LAorCQlpbnQgcGFzaWQp Cit7CisJc3RydWN0IGFybV9zbW11X3Bhc2lkICpvYmo7CisJc3RydWN0IGlvX3BndGFibGVfY2Zn IHBndGJsX2NmZzsKKwlzdHJ1Y3QgYXJtX3NtbXVfZG9tYWluICpzbW11X2RvbWFpbiA9IHRvX3Nt bXVfZG9tYWluKGRvbWFpbik7CisJc3RydWN0IGFybV9zbW11X2RldmljZSAqc21tdSA9IHNtbXVf ZG9tYWluLT5zbW11OworCWVudW0gaW9fcGd0YWJsZV9mbXQgZm10OworCXVuc2lnbmVkIGxvbmcg aWFzLCBvYXM7CisKKwkvKiBPbmx5IGFsbG93IHBhc2lkIGJhY2tlZCB0YWJsZXMgdG8gYmUgY3Jl YXRlZCBvbiBTMSBkb21haW5zICovCisJaWYgKHNtbXVfZG9tYWluLT5zdGFnZSAhPSBBUk1fU01N VV9ET01BSU5fUzEpCisJCXJldHVybiAtRUlOVkFMOworCisJb2JqID0ga3phbGxvYyhzaXplb2Yo Km9iaiksIEdGUF9LRVJORUwpOworCWlmICghb2JqKQorCQlyZXR1cm4gLUVOT01FTTsKKworCS8q IEdldCB0aGUgc2FtZSBleGFjdCBmb3JtYXQgYXMgdGhlIHBhcmVudCBkb21haW4gKi8KKwlpYXMg PSBzbW11LT52YV9zaXplOworCW9hcyA9IHNtbXUtPmlwYV9zaXplOworCisJaWYgKHNtbXVfZG9t YWluLT5jZmcuZm10ID09IEFSTV9TTU1VX0NUWF9GTVRfQUFSQ0g2NCkKKwkJZm10ID0gQVJNXzY0 X0xQQUVfUzE7CisJZWxzZSBpZiAoc21tdV9kb21haW4tPmNmZy5mbXQgPT0gQVJNX1NNTVVfQ1RY X0ZNVF9BQVJDSDMyX0wpIHsKKwkJZm10ID0gQVJNXzMyX0xQQUVfUzE7CisJCWlhcyA9IG1pbihp YXMsIDMyVUwpOworCQlvYXMgPSBtaW4ob2FzLCA0MFVMKTsKKwl9IGVsc2UgeworCQlmbXQgPSBB Uk1fVjdTOworCQlpYXMgPSBtaW4oaWFzLCAzMlVMKTsKKwkJb2FzID0gbWluKG9hcywgMzJVTCk7 CisJfQorCisJcGd0YmxfY2ZnID0gKHN0cnVjdCBpb19wZ3RhYmxlX2NmZykgeworCQkucGdzaXpl X2JpdG1hcCA9IHNtbXUtPnBnc2l6ZV9iaXRtYXAsCisJCS5pYXMgPSBpYXMsCisJCS5vYXMgPSBv YXMsCisJCS50bGIgPSBOVUxMLAorCQkuaW9tbXVfZGV2ID0gc21tdS0+ZGV2CisJfTsKKworCW9i ai0+cGd0Ymxfb3BzID0gYWxsb2NfaW9fcGd0YWJsZV9vcHMoZm10LCAmcGd0YmxfY2ZnLCBzbW11 X2RvbWFpbik7CisJaWYgKCFvYmotPnBndGJsX29wcykgeworCQlrZnJlZShvYmopOworCQlyZXR1 cm4gLUVOT01FTTsKKwl9CisKKwlvYmotPmRvbWFpbiA9IGRvbWFpbjsKKwlvYmotPnBhc2lkID0g cGFzaWQ7CisKKwlzcGluX2xvY2soJnNtbXVfZG9tYWluLT5wYXNpZF9sb2NrKTsKKwlsaXN0X2Fk ZF90YWlsKCZvYmotPm5vZGUsICZzbW11X2RvbWFpbi0+cGFzaWRfbGlzdCk7CisJc3Bpbl91bmxv Y2soJnNtbXVfZG9tYWluLT5wYXNpZF9sb2NrKTsKKworCXJldHVybiAwOworfQorCiBzdGF0aWMg YXRvbWljX3QgY2F2aXVtX3NtbXVfY29udGV4dF9jb3VudCA9IEFUT01JQ19JTklUKDApOwogCiBz dGF0aWMgYm9vbCB1c2luZ19sZWdhY3lfYmluZGluZywgdXNpbmdfZ2VuZXJpY19iaW5kaW5nOwpA QCAtMjY2LDExICs0MDIsNiBAQCBzdGF0aWMgc3RydWN0IGFybV9zbW11X29wdGlvbl9wcm9wIGFy bV9zbW11X29wdGlvbnNbXSA9IHsKIAl7IDAsIE5VTEx9LAogfTsKIAotc3RhdGljIHN0cnVjdCBh cm1fc21tdV9kb21haW4gKnRvX3NtbXVfZG9tYWluKHN0cnVjdCBpb21tdV9kb21haW4gKmRvbSkK LXsKLQlyZXR1cm4gY29udGFpbmVyX29mKGRvbSwgc3RydWN0IGFybV9zbW11X2RvbWFpbiwgZG9t YWluKTsKLX0KLQogc3RhdGljIHZvaWQgcGFyc2VfZHJpdmVyX29wdGlvbnMoc3RydWN0IGFybV9z bW11X2RldmljZSAqc21tdSkKIHsKIAlpbnQgaSA9IDA7CkBAIC05NjEsNiArMTA5Miw5IEBAIHN0 YXRpYyBzdHJ1Y3QgaW9tbXVfZG9tYWluICphcm1fc21tdV9kb21haW5fYWxsb2ModW5zaWduZWQg dHlwZSkKIAltdXRleF9pbml0KCZzbW11X2RvbWFpbi0+aW5pdF9tdXRleCk7CiAJc3Bpbl9sb2Nr X2luaXQoJnNtbXVfZG9tYWluLT5jYl9sb2NrKTsKIAorCXNwaW5fbG9ja19pbml0KCZzbW11X2Rv bWFpbi0+cGFzaWRfbG9jayk7CisJSU5JVF9MSVNUX0hFQUQoJnNtbXVfZG9tYWluLT5wYXNpZF9s aXN0KTsKKwogCXJldHVybiAmc21tdV9kb21haW4tPmRvbWFpbjsKIH0KIApAQCAtMTU4OCw2ICsx NzIyLDEwIEBAIHN0YXRpYyBzdHJ1Y3QgaW9tbXVfb3BzIGFybV9zbW11X29wcyA9IHsKIAkub2Zf eGxhdGUJCT0gYXJtX3NtbXVfb2ZfeGxhdGUsCiAJLmdldF9yZXN2X3JlZ2lvbnMJPSBhcm1fc21t dV9nZXRfcmVzdl9yZWdpb25zLAogCS5wdXRfcmVzdl9yZWdpb25zCT0gYXJtX3NtbXVfcHV0X3Jl c3ZfcmVnaW9ucywKKwkucGFzaWRfYWxsb2MJCT0gYXJtX3NtbXVfcGFzaWRfYWxsb2MsCisJLnN2 YV9tYXAJCT0gYXJtX3NtbXVfc3ZhX21hcCwKKwkuc3ZhX3VubWFwCQk9IGFybV9zbW11X3N2YV91 bm1hcCwKKwkucGFzaWRfZnJlZQkJPSBhcm1fc21tdV9wYXNpZF9mcmVlLAogCS5wZ3NpemVfYml0 bWFwCQk9IC0xVUwsIC8qIFJlc3RyaWN0ZWQgZHVyaW5nIGRldmljZSBhdHRhY2ggKi8KIH07CiAK LS0gCjIuMTYuMQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KRnJlZWRyZW5vIG1haWxpbmcgbGlzdApGcmVlZHJlbm9AbGlzdHMuZnJlZWRlc2t0b3Aub3Jn Cmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZnJlZWRyZW5v Cg==