From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jordan Crouse Subject: [PATCH 11/14] drm/msm: Add support for iommu-sva PASIDs Date: Wed, 21 Feb 2018 15:59:21 -0700 Message-ID: <20180221225924.30737-12-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 VGhlIElPTU1VIGNvcmUgY2FuIHN1cHBvcnQgY3JlYXRpbmcgbXVsdGlwbGUgcGFnZXRhYmxlcwpm b3IgYSBzcGVjaWZpYyBkb21haSBhbmQgbWFraW5nIHRoZW0gYXZhaWxhYmxlIHRvIGEgY2xpZW50 CmRyaXZlciB0aGF0IGhhcyB0aGUgbWVhbnMgdG8gbWFuYWdlIHRoZSBwYWdldGFibGUgaXRzZWxm LgoKUEFTSURzIGFyZSB1bmlxdWUgaW5kZXhlcyB0byBhIHNvZnR3YXJlIGNyZWF0ZWQgcGFnZXRh YmxlIHdpdGgKdGhlIHNhbWUgZm9ybWF0IGFuZCBjaGFyYWN0ZXJpc3RpY3MgYXMgdGhlIHBhcmVu dCBJT01NVSBkZXZpY2UuClRoZSBJT01NVSBkcml2ZXIgYWxsb2NhdGVzIHRoZSBwYWdldGFibGUg YW5kIHRyYWNrcyBpdCB3aXRoIGEKdW5pcXVlIHRva2VuIChQQVNJRCkgLSBpdCBkb2VzIG5vdCB0 b3VjaCB0aGUgYWN0dWFsIGhhcmR3YXJlLgogVGhlIGNsaWVudCBkcml2ZXIgaXMgZXhwZWN0ZWQg dG8gYmUgYWJsZSB0byBtYW5hZ2UgdGhlIHBhZ2V0YWJsZXMKYW5kIGRvIHNvbWV0aGluZyBpbnRl cmVzdGluZyB3aXRoIHRoZW0uCgpTb21lIGZsYXZvcnMgb2YgdGhlIE1TTSBHUFUgYXJlIGFibGUg dG8gYWxsb3cgZWFjaCBEUk0gaW5zdGFuY2UKdG8gaGF2ZSBpdHMgb3duIHBhZ2V0YWJsZSAoYW5k IHZpcnR1YWwgbWVtb3J5IHNwYWNlKSBhbmQgc3dpdGNoIHRoZW0KYXN5bmNocm9ub3VzbHkgYXQg dGhlIGJlZ2lubmluZyBvZiBhIGNvbW1hbmQuICBUaGlzIHByb3RlY3RzIGFnYWluc3QKYWNjaWRl bnRhbCBvciBtYWxpY2lvdXMgY29ycnVwdGlvbiBvciBjb3B5aW5nIG9mIGJ1ZmZlcnMgZnJvbSBv dGhlcgppbnN0YW5jZXMuCgpUaGUgZmlyc3Qgc3RlcCBpcyB0byBhZGQgYSBNTVUgaW1wbGVtZW50 YXRpb24gdGhhdCBjYW4gYWxsb2NhdGUgYQpQQVNJRCBhbmQgc2V0IHVwIGEgbXNtX21tdSBzdHJ1 Y3QgdG8gYWJzdHJhY3QgKG1vc3QpIG9mIHRoZSBkZXRhaWxzCmZyb20gdGhlIHJlc3Qgb2YgdGhl IHN5c3RlbS4KClNpZ25lZC1vZmYtYnk6IEpvcmRhbiBDcm91c2UgPGpjcm91c2VAY29kZWF1cm9y YS5vcmc+Ci0tLQogZHJpdmVycy9ncHUvZHJtL21zbS9tc21faW9tbXUuYyB8IDE4NCArKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBkcml2ZXJzL2dwdS9kcm0vbXNtL21z bV9tbXUuaCAgIHwgICA2ICsrCiAyIGZpbGVzIGNoYW5nZWQsIDE5MCBpbnNlcnRpb25zKCspCgpk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9tc21faW9tbXUuYyBiL2RyaXZlcnMvZ3B1 L2RybS9tc20vbXNtX2lvbW11LmMKaW5kZXggZmRiZTFhODM3MmYwLi5kZTg2NjljOWE1YTEgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2lvbW11LmMKKysrIGIvZHJpdmVycy9n cHUvZHJtL21zbS9tc21faW9tbXUuYwpAQCAtMTUsNiArMTUsOSBAQAogICogdGhpcyBwcm9ncmFt LiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgogICovCiAKKyNp bmNsdWRlIDxsaW51eC9oYXNodGFibGUuaD4KKyNpbmNsdWRlIDxsaW51eC9hcm0tc21tdS5oPgor CiAjaW5jbHVkZSAibXNtX2Rydi5oIgogI2luY2x1ZGUgIm1zbV9tbXUuaCIKIApAQCAtMzQsMTIg KzM3LDI5IEBAIHN0YXRpYyBpbnQgbXNtX2ZhdWx0X2hhbmRsZXIoc3RydWN0IGlvbW11X2RvbWFp biAqZG9tYWluLCBzdHJ1Y3QgZGV2aWNlICpkZXYsCiAJcmV0dXJuIDA7CiB9CiAKK3N0YXRpYyBi b29sIG1zbV9pb21tdV9jaGVja19wZXJfaW5zdGFuY2Uoc3RydWN0IG1zbV9pb21tdSAqaW9tbXUp Cit7CisJaW50IHZhbDsKKworCWlmICghSVNfRU5BQkxFRChDT05GSUdfSU9NTVVfU1ZBKSkKKwkJ cmV0dXJuIGZhbHNlOworCisJaWYgKGlvbW11X2RvbWFpbl9nZXRfYXR0cihpb21tdS0+ZG9tYWlu LCBET01BSU5fQVRUUl9FTkFCTEVfVFRCUjEsCisJCSZ2YWwpKQorCQlyZXR1cm4gZmFsc2U7CisK KwlyZXR1cm4gdmFsID8gdHJ1ZSA6IGZhbHNlOworfQorCiBzdGF0aWMgaW50IG1zbV9pb21tdV9h dHRhY2goc3RydWN0IG1zbV9tbXUgKm1tdSwgY29uc3QgY2hhciAqIGNvbnN0ICpuYW1lcywKIAkJ CSAgICBpbnQgY250KQogewogCXN0cnVjdCBtc21faW9tbXUgKmlvbW11ID0gdG9fbXNtX2lvbW11 KG1tdSk7CiAJaW50IHJldDsKIAorCWlmIChtc21faW9tbXVfY2hlY2tfcGVyX2luc3RhbmNlKGlv bW11KSkKKwkJbXNtX21tdV9zZXRfZmVhdHVyZShtbXUsIE1NVV9GRUFUVVJFX1BFUl9JTlNUQU5D RV9UQUJMRVMpOworCiAJcG1fcnVudGltZV9nZXRfc3luYyhtbXUtPmRldik7CiAJcmV0ID0gaW9t bXVfYXR0YWNoX2RldmljZShpb21tdS0+ZG9tYWluLCBtbXUtPmRldik7CiAJcG1fcnVudGltZV9w dXRfc3luYyhtbXUtPmRldik7CkBAIC0xMTIsMyArMTMyLDE2NyBAQCBzdHJ1Y3QgbXNtX21tdSAq bXNtX2lvbW11X25ldyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBpb21tdV9kb21haW4gKmRv bWFpbikKIAogCXJldHVybiAmaW9tbXUtPmJhc2U7CiB9CisKK3N0cnVjdCBwYXNpZF9lbnRyeSB7 CisJaW50IHBhc2lkOworCXU2NCB0dGJyOworCXUzMiBhc2lkOworCXN0cnVjdCBobGlzdF9ub2Rl IG5vZGU7Cit9OworCitERUNMQVJFX0hBU0hUQUJMRShwYXNpZF90YWJsZSwgNCk7CisKK3N0YXRp YyBpbnQgaW5zdGFsbF9wYXNpZF9jYihpbnQgcGFzaWQsIHU2NCB0dGJyLCB1MzIgYXNpZCwgdm9p ZCAqZGF0YSkKK3sKKwlzdHJ1Y3QgcGFzaWRfZW50cnkgKmVudHJ5ID0ga3phbGxvYyhzaXplb2Yo KmVudHJ5KSwgR0ZQX0tFUk5FTCk7CisKKwlpZiAoIWVudHJ5KQorCQlyZXR1cm4gLUVOT01FTTsK KworCWVudHJ5LT5wYXNpZCA9IHBhc2lkOworCWVudHJ5LT50dGJyID0gdHRicjsKKwllbnRyeS0+ YXNpZCA9IGFzaWQ7CisKKwkvKiBGSVhNRTogQXNzdW1lIHRoYXQgd2UnbGwgbmV2ZXIgaGF2ZSBh IHBhc2lkIGNvbmZsaWN0PyAqLworCS8qIEZJWE1FOiBsb2Nrcz8gUkNVPyAqLworCWhhc2hfYWRk KHBhc2lkX3RhYmxlLCAmZW50cnktPm5vZGUsIHBhc2lkKTsKKwlyZXR1cm4gMDsKK30KKworc3Rh dGljIHZvaWQgcmVtb3ZlX3Bhc2lkX2NiKGludCBwYXNpZCwgdm9pZCAqZGF0YSkKK3sKKwlzdHJ1 Y3QgcGFzaWRfZW50cnkgKmVudHJ5OworCisJaGFzaF9mb3JfZWFjaF9wb3NzaWJsZShwYXNpZF90 YWJsZSwgZW50cnksIG5vZGUsIHBhc2lkKSB7CisJCWlmIChwYXNpZCA9PSBlbnRyeS0+cGFzaWQp IHsKKwkJCWhhc2hfZGVsKCZlbnRyeS0+bm9kZSk7CisJCQlrZnJlZShlbnRyeSk7CisJCQlyZXR1 cm47CisJCX0KKwl9Cit9CisKK3N0cnVjdCBtc21faW9tbXVfcGFzaWQgeworCXN0cnVjdCBtc21f bW11IGJhc2U7CisJaW50IHBhc2lkOworCXU2NCB0dGJyOworCXUzMiBhc2lkOworfTsKKyNkZWZp bmUgdG9fbXNtX2lvbW11X3Bhc2lkKHgpIGNvbnRhaW5lcl9vZih4LCBzdHJ1Y3QgbXNtX2lvbW11 X3Bhc2lkLCBiYXNlKQorCitzdGF0aWMgaW50IG1zbV9pb21tdV9wYXNpZF9hdHRhY2goc3RydWN0 IG1zbV9tbXUgKm1tdSwKKwkJY29uc3QgY2hhciAqIGNvbnN0ICpuYW1lcywgaW50IGNudCkKK3sK KwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBtc21faW9tbXVfcGFzaWRfbWFwKHN0cnVjdCBt c21fbW11ICptbXUsIHVpbnQ2NF90IGlvdmEsCisJCXN0cnVjdCBzZ190YWJsZSAqc2d0LCB1bnNp Z25lZCBsZW4sIGludCBwcm90KQoreworCXN0cnVjdCBtc21faW9tbXVfcGFzaWQgKnBhc2lkID0g dG9fbXNtX2lvbW11X3Bhc2lkKG1tdSk7CisJaW50IHJldDsKKworCXJldCA9IGlvbW11X3N2YV9t YXBfc2cocGFzaWQtPnBhc2lkLCBpb3ZhLCBzZ3QtPnNnbCwgc2d0LT5uZW50cywgcHJvdCk7CisJ V0FSTl9PTihyZXQgPCAwKTsKKworCXJldHVybiAocmV0ID09IGxlbikgPyAwIDogLUVJTlZBTDsK K30KKworc3RhdGljIGludCBtc21faW9tbXVfcGFzaWRfdW5tYXAoc3RydWN0IG1zbV9tbXUgKm1t dSwgdWludDY0X3QgaW92YSwKKwkJc3RydWN0IHNnX3RhYmxlICpzZ3QsIHVuc2lnbmVkIGxlbikK K3sKKwlzdHJ1Y3QgbXNtX2lvbW11X3Bhc2lkICpwYXNpZCA9IHRvX21zbV9pb21tdV9wYXNpZCht bXUpOworCisJaW9tbXVfc3ZhX3VubWFwKHBhc2lkLT5wYXNpZCwgaW92YSwgbGVuKTsKKworCXJl dHVybiAwOworfQorCitzdGF0aWMgdm9pZCBtc21faW9tbXVfcGFzaWRfZGV0YWNoKHN0cnVjdCBt c21fbW11ICptbXUsCisJCWNvbnN0IGNoYXIgKiBjb25zdCAqbmFtZXMsIGludCBjbnQpCit7Cit9 CisKK3N0YXRpYyB2b2lkIG1zbV9pb21tdV9wYXNpZF9kZXN0cm95KHN0cnVjdCBtc21fbW11ICpt bXUpCit7CisJc3RydWN0IG1zbV9pb21tdV9wYXNpZCAqcGFzaWQgPSB0b19tc21faW9tbXVfcGFz aWQobW11KTsKKworCWlvbW11X3N2YV9mcmVlX3Bhc2lkKHBhc2lkLT5wYXNpZCk7CisJa2ZyZWUo cGFzaWQpOworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0IG1zbV9tbXVfZnVuY3MgcGFzaWRfZnVu Y3MgPSB7CisJCS5hdHRhY2ggPSBtc21faW9tbXVfcGFzaWRfYXR0YWNoLAorCQkuZGV0YWNoID0g bXNtX2lvbW11X3Bhc2lkX2RldGFjaCwKKwkJLm1hcCA9IG1zbV9pb21tdV9wYXNpZF9tYXAsCisJ CS51bm1hcCA9IG1zbV9pb21tdV9wYXNpZF91bm1hcCwKKwkJLmRlc3Ryb3kgPSBtc21faW9tbXVf cGFzaWRfZGVzdHJveSwKK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgYXJtX3NtbXVfcGFzaWRf b3BzIG1zbV9pb21tdV9wYXNpZF9vcHMgPSB7CisJLmluc3RhbGxfcGFzaWQgPSBpbnN0YWxsX3Bh c2lkX2NiLAorCS5yZW1vdmVfcGFzaWQgPSByZW1vdmVfcGFzaWRfY2IsCit9OworCitzdHJ1Y3Qg bXNtX21tdSAqbXNtX2lvbW11X3Bhc2lkX25ldyhzdHJ1Y3QgbXNtX21tdSAqcGFyZW50KQorewor CXN0cnVjdCBtc21faW9tbXUgKnBhcmVudF9pb21tdSA9IHRvX21zbV9pb21tdShwYXJlbnQpOwor CXN0cnVjdCBtc21faW9tbXVfcGFzaWQgKnBhc2lkOworCWludCBpZDsKKworCWlmICghbXNtX21t dV9oYXNfZmVhdHVyZShwYXJlbnQsIE1NVV9GRUFUVVJFX1BFUl9JTlNUQU5DRV9UQUJMRVMpKQor CQlyZXR1cm4gRVJSX1BUUigtRU9QTk9UU1VQUCk7CisKKwlwYXNpZCA9IGt6YWxsb2Moc2l6ZW9m KCpwYXNpZCksIEdGUF9LRVJORUwpOworCWlmICghcGFzaWQpCisJCXJldHVybiBFUlJfUFRSKC1F Tk9NRU0pOworCisJYXJtX3NtbXVfYWRkX3Bhc2lkX29wcyhwYXJlbnRfaW9tbXUtPmRvbWFpbiwg Jm1zbV9pb21tdV9wYXNpZF9vcHMsCisJCU5VTEwpOworCisJaWQgPSBpb21tdV9zdmFfYWxsb2Nf cGFzaWQocGFyZW50X2lvbW11LT5kb21haW4sIHBhcmVudC0+ZGV2KTsKKwlpZiAoaWQgPCAwKSB7 CisJCWtmcmVlKHBhc2lkKTsKKwkJcmV0dXJuIEVSUl9QVFIoaWQpOworCX0KKworCXBhc2lkLT5w YXNpZCA9IGlkOworCW1zbV9tbXVfaW5pdCgmcGFzaWQtPmJhc2UsIHBhcmVudC0+ZGV2LCAmcGFz aWRfZnVuY3MpOworCisJcmV0dXJuICZwYXNpZC0+YmFzZTsKK30KKworLyogR2l2ZW4gYSBwYXNp ZCByZXR1cm4gdGhlIFRUQlIgYW5kIEFTSUQgYXNzb2NpYXRlZCB3aXRoIGl0ICovCitpbnQgbXNt X2lvbW11X3Bhc2lkX2luZm8oc3RydWN0IG1zbV9tbXUgKm1tdSwgdTY0ICp0dGJyLCB1MzIgKmFz aWQpCit7CisJc3RydWN0IG1zbV9pb21tdV9wYXNpZCAqcGFzaWQ7CisJc3RydWN0IHBhc2lkX2Vu dHJ5ICplbnRyeTsKKworCWlmIChtbXUtPmZ1bmNzLT5tYXAgIT0gbXNtX2lvbW11X3Bhc2lkX21h cCkKKwkJcmV0dXJuIC1FTk9ERVY7CisKKwlwYXNpZCA9IHRvX21zbV9pb21tdV9wYXNpZChtbXUp OworCisJaWYgKCFwYXNpZC0+dHRicikgeworCQkvKiBGaW5kIHRoZSBwYXNpZCBlbnRyeSBpbiB0 aGUgaGFzaCAqLworCQloYXNoX2Zvcl9lYWNoX3Bvc3NpYmxlKHBhc2lkX3RhYmxlLCBlbnRyeSwg bm9kZSwgcGFzaWQtPnBhc2lkKSB7CisJCQlpZiAocGFzaWQtPnBhc2lkID09IGVudHJ5LT5wYXNp ZCkgeworCQkJCXBhc2lkLT50dGJyID0gZW50cnktPnR0YnI7CisJCQkJcGFzaWQtPmFzaWQgPSBl bnRyeS0+YXNpZDsKKwkJCQlnb3RvIG91dDsKKwkJCX0KKwkJfQorCisJCVdBUk4oMSwgIkNvdWxk bid0IGZpbmQgdGhlIGVudHJ5IGZvciBwYXNpZCAlZFxuIiwgcGFzaWQtPnBhc2lkKTsKKwkJcmV0 dXJuIC1FSU5WQUw7CisJfQorCitvdXQ6CisJaWYgKCp0dGJyKQorCQkqdHRiciA9IHBhc2lkLT50 dGJyOworCisJaWYgKCphc2lkKQorCQkqYXNpZCA9IHBhc2lkLT5hc2lkOworCisJcmV0dXJuIDA7 Cit9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9tbXUuaCBiL2RyaXZlcnMv Z3B1L2RybS9tc20vbXNtX21tdS5oCmluZGV4IDg1ZGY3OGQ3MTM5OC4uMjk0MzZiOWRhYTczIDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9tbXUuaAorKysgYi9kcml2ZXJzL2dw dS9kcm0vbXNtL21zbV9tbXUuaApAQCAtMzAsNiArMzAsOSBAQCBzdHJ1Y3QgbXNtX21tdV9mdW5j cyB7CiAJdm9pZCAoKmRlc3Ryb3kpKHN0cnVjdCBtc21fbW11ICptbXUpOwogfTsKIAorLyogTU1V IGZlYXR1cmVzICovCisjZGVmaW5lIE1NVV9GRUFUVVJFX1BFUl9JTlNUQU5DRV9UQUJMRVMgKDEg PDwgMCkKKwogc3RydWN0IG1zbV9tbXUgewogCWNvbnN0IHN0cnVjdCBtc21fbW11X2Z1bmNzICpm dW5jczsKIAlzdHJ1Y3QgZGV2aWNlICpkZXY7CkBAIC00OCw2ICs1MSw5IEBAIHN0YXRpYyBpbmxp bmUgdm9pZCBtc21fbW11X2luaXQoc3RydWN0IG1zbV9tbXUgKm1tdSwgc3RydWN0IGRldmljZSAq ZGV2LAogc3RydWN0IG1zbV9tbXUgKm1zbV9pb21tdV9uZXcoc3RydWN0IGRldmljZSAqZGV2LCBz dHJ1Y3QgaW9tbXVfZG9tYWluICpkb21haW4pOwogc3RydWN0IG1zbV9tbXUgKm1zbV9ncHVtbXVf bmV3KHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IG1zbV9ncHUgKmdwdSk7CiAKK3N0cnVjdCBt c21fbW11ICptc21faW9tbXVfcGFzaWRfbmV3KHN0cnVjdCBtc21fbW11ICpwYXJlbnQpOworaW50 IG1zbV9pb21tdV9wYXNpZF9pbmZvKHN0cnVjdCBtc21fbW11ICptbXUsIHU2NCAqdHRiciwgdTMy ICphc2lkKTsKKwogc3RhdGljIGlubGluZSB2b2lkIG1zbV9tbXVfc2V0X2ZhdWx0X2hhbmRsZXIo c3RydWN0IG1zbV9tbXUgKm1tdSwgdm9pZCAqYXJnLAogCQlpbnQgKCpoYW5kbGVyKSh2b2lkICph cmcsIHVuc2lnbmVkIGxvbmcgaW92YSwgaW50IGZsYWdzKSkKIHsKLS0gCjIuMTYuMQoKX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KRnJlZWRyZW5vIG1haWxp bmcgbGlzdApGcmVlZHJlbm9AbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJl ZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZnJlZWRyZW5vCg==