From mboxrd@z Thu Jan 1 00:00:00 1970 From: Thierry Reding Subject: [PATCH 12/12] drm/tegra: Optionally attach clients to the IOMMU Date: Mon, 28 Oct 2019 13:37:18 +0100 Message-ID: <20191028123718.3890217-13-thierry.reding@gmail.com> References: <20191028123718.3890217-1-thierry.reding@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20191028123718.3890217-1-thierry.reding@gmail.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Thierry Reding Cc: linux-tegra@vger.kernel.org, Sachin Nikam , dri-devel@lists.freedesktop.org, Puneet Saxena List-Id: linux-tegra@vger.kernel.org RnJvbTogVGhpZXJyeSBSZWRpbmcgPHRyZWRpbmdAbnZpZGlhLmNvbT4KCklmIGEgY2xpZW50IGlz IGFscmVhZHkgYXR0YWNoZWQgdG8gYW4gSU9NTVUgZG9tYWluIHRoYXQgaXMgbm90IHRoZQpzaGFy ZWQgZG9tYWluLCBkb24ndCB0cnkgdG8gYXR0YWNoIGl0IGFnYWluLiBUaGlzIGFsbG93cyB1c2lu ZyB0aGUKSU9NTVUtYmFja2VkIERNQSBBUEkuCgpTaW5jZSB0aGUgSU9NTVUtYmFja2VkIERNQSBB UEkgaXMgbm93IHN1cHBvcnRlZCBhbmQgdGhlcmUncyBubyB3YXkKdG8gZGV0YWNoIGZyb20gaXQg b24gNjQtYml0IEFSTSwgZG9uJ3QgYm90aGVyIHRvIGRldGFjaCBmcm9tIGl0IG9uCjMyLWJpdCBB Uk0gZWl0aGVyLgoKU2lnbmVkLW9mZi1ieTogVGhpZXJyeSBSZWRpbmcgPHRyZWRpbmdAbnZpZGlh LmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vdGVncmEvZHJtLmMgfCA2NiArKysrKysrKysrKysr KysrKysrKysrKysrKystLS0tLS0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vdGVncmEvZHJtLmggfCAg MSArCiAyIGZpbGVzIGNoYW5nZWQsIDQ5IGluc2VydGlvbnMoKyksIDE4IGRlbGV0aW9ucygtKQoK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS90ZWdyYS9kcm0uYyBiL2RyaXZlcnMvZ3B1L2Ry bS90ZWdyYS9kcm0uYwppbmRleCBlZmM4YTI3YjllNmEuLjU2ZTVlN2E1YzEwOCAxMDA2NDQKLS0t IGEvZHJpdmVycy9ncHUvZHJtL3RlZ3JhL2RybS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS90ZWdy YS9kcm0uYwpAQCAtMjAsMTAgKzIwLDYgQEAKICNpbmNsdWRlIDxkcm0vZHJtX3ByaW1lLmg+CiAj aW5jbHVkZSA8ZHJtL2RybV92YmxhbmsuaD4KIAotI2lmIElTX0VOQUJMRUQoQ09ORklHX0FSTV9E TUFfVVNFX0lPTU1VKQotI2luY2x1ZGUgPGFzbS9kbWEtaW9tbXUuaD4KLSNlbmRpZgotCiAjaW5j bHVkZSAiZHJtLmgiCiAjaW5jbHVkZSAiZ2VtLmgiCiAKQEAgLTkwOCwzMCArOTA0LDI3IEBAIGlu dCB0ZWdyYV9kcm1fdW5yZWdpc3Rlcl9jbGllbnQoc3RydWN0IHRlZ3JhX2RybSAqdGVncmEsCiAK IGludCBob3N0MXhfY2xpZW50X2lvbW11X2F0dGFjaChzdHJ1Y3QgaG9zdDF4X2NsaWVudCAqY2xp ZW50KQogeworCXN0cnVjdCBpb21tdV9kb21haW4gKmRvbWFpbiA9IGlvbW11X2dldF9kb21haW5f Zm9yX2RldihjbGllbnQtPmRldik7CiAJc3RydWN0IGRybV9kZXZpY2UgKmRybSA9IGRldl9nZXRf ZHJ2ZGF0YShjbGllbnQtPnBhcmVudCk7CiAJc3RydWN0IHRlZ3JhX2RybSAqdGVncmEgPSBkcm0t PmRldl9wcml2YXRlOwogCXN0cnVjdCBpb21tdV9ncm91cCAqZ3JvdXAgPSBOVUxMOwogCWludCBl cnI7CiAKLQlpZiAodGVncmEtPmRvbWFpbikgewotCQlzdHJ1Y3QgaW9tbXVfZG9tYWluICpkb21h aW47CisJLyoKKwkgKiBJZiB0aGUgaG9zdDF4IGNsaWVudCBpcyBhbHJlYWR5IGF0dGFjaGVkIHRv IGFuIElPTU1VIGRvbWFpbiB0aGF0IGlzCisJICogbm90IHRoZSBzaGFyZWQgSU9NTVUgZG9tYWlu LCBkb24ndCB0cnkgdG8gYXR0YWNoIGl0IHRvIGEgZGlmZmVyZW50CisJICogZG9tYWluLiBUaGlz IGFsbG93cyB1c2luZyB0aGUgSU9NTVUtYmFja2VkIERNQSBBUEkuCisJICovCisJaWYgKGRvbWFp biAmJiBkb21haW4gIT0gdGVncmEtPmRvbWFpbikKKwkJcmV0dXJuIDA7CiAKKwlpZiAodGVncmEt PmRvbWFpbikgewogCQlncm91cCA9IGlvbW11X2dyb3VwX2dldChjbGllbnQtPmRldik7CiAJCWlm ICghZ3JvdXApIHsKIAkJCWRldl9lcnIoY2xpZW50LT5kZXYsICJmYWlsZWQgdG8gZ2V0IElPTU1V IGdyb3VwXG4iKTsKIAkJCXJldHVybiAtRU5PREVWOwogCQl9CiAKLSNpZiBJU19FTkFCTEVEKENP TkZJR19BUk1fRE1BX1VTRV9JT01NVSkKLQkJaWYgKGNsaWVudC0+ZGV2LT5hcmNoZGF0YS5tYXBw aW5nKSB7Ci0JCQlzdHJ1Y3QgZG1hX2lvbW11X21hcHBpbmcgKm1hcHBpbmcgPQotCQkJCXRvX2Rt YV9pb21tdV9tYXBwaW5nKGNsaWVudC0+ZGV2KTsKLQkJCWFybV9pb21tdV9kZXRhY2hfZGV2aWNl KGNsaWVudC0+ZGV2KTsKLQkJCWFybV9pb21tdV9yZWxlYXNlX21hcHBpbmcobWFwcGluZyk7Ci0J CX0KLSNlbmRpZgotCi0JCWRvbWFpbiA9IGlvbW11X2dldF9kb21haW5fZm9yX2RldihjbGllbnQt PmRldik7CiAJCWlmIChkb21haW4gIT0gdGVncmEtPmRvbWFpbikgewogCQkJZXJyID0gaW9tbXVf YXR0YWNoX2dyb3VwKHRlZ3JhLT5kb21haW4sIGdyb3VwKTsKIAkJCWlmIChlcnIgPCAwKSB7CkBA IC05MzksNiArOTMyLDggQEAgaW50IGhvc3QxeF9jbGllbnRfaW9tbXVfYXR0YWNoKHN0cnVjdCBo b3N0MXhfY2xpZW50ICpjbGllbnQpCiAJCQkJcmV0dXJuIGVycjsKIAkJCX0KIAkJfQorCisJCXRl Z3JhLT51c2VfZXhwbGljaXRfaW9tbXUgPSB0cnVlOwogCX0KIAogCWNsaWVudC0+Z3JvdXAgPSBn cm91cDsKQEAgLTk2Myw2ICs5NTgsNyBAQCB2b2lkIGhvc3QxeF9jbGllbnRfaW9tbXVfZGV0YWNo KHN0cnVjdCBob3N0MXhfY2xpZW50ICpjbGllbnQpCiAJCQlpb21tdV9kZXRhY2hfZ3JvdXAodGVn cmEtPmRvbWFpbiwgY2xpZW50LT5ncm91cCk7CiAKIAkJaW9tbXVfZ3JvdXBfcHV0KGNsaWVudC0+ Z3JvdXApOworCQljbGllbnQtPmdyb3VwID0gTlVMTDsKIAl9CiB9CiAKQEAgLTEwNDYsNiArMTA0 Miw3IEBAIHZvaWQgdGVncmFfZHJtX2ZyZWUoc3RydWN0IHRlZ3JhX2RybSAqdGVncmEsIHNpemVf dCBzaXplLCB2b2lkICp2aXJ0LAogc3RhdGljIGludCBob3N0MXhfZHJtX3Byb2JlKHN0cnVjdCBo b3N0MXhfZGV2aWNlICpkZXYpCiB7CiAJc3RydWN0IGRybV9kcml2ZXIgKmRyaXZlciA9ICZ0ZWdy YV9kcm1fZHJpdmVyOworCXN0cnVjdCBpb21tdV9kb21haW4gKmRvbWFpbjsKIAlzdHJ1Y3QgdGVn cmFfZHJtICp0ZWdyYTsKIAlzdHJ1Y3QgZHJtX2RldmljZSAqZHJtOwogCWludCBlcnI7CkBAIC0x MDYwLDcgKzEwNTcsMzYgQEAgc3RhdGljIGludCBob3N0MXhfZHJtX3Byb2JlKHN0cnVjdCBob3N0 MXhfZGV2aWNlICpkZXYpCiAJCWdvdG8gcHV0OwogCX0KIAotCWlmIChpb21tdV9wcmVzZW50KCZw bGF0Zm9ybV9idXNfdHlwZSkpIHsKKwkvKgorCSAqIElmIHRoZSBUZWdyYSBEUk0gY2xpZW50cyBh cmUgYmFja2VkIGJ5IGFuIElPTU1VLCBwdXNoIGJ1ZmZlcnMgYXJlCisJICogbGlrZWx5IHRvIGJl IGFsbG9jYXRlZCBiZXlvbmQgdGhlIDMyLWJpdCBib3VuZGFyeSBpZiBzdWZmaWNpZW50CisJICog c3lzdGVtIG1lbW9yeSBpcyBhdmFpbGFibGUuIFRoaXMgaXMgcHJvYmxlbWF0aWMgb24gZWFybGll ciBUZWdyYQorCSAqIGdlbmVyYXRpb25zIHdoZXJlIGhvc3QxeCBzdXBwb3J0cyBhIG1heGltdW0g b2YgMzIgYWRkcmVzcyBiaXRzIGluCisJICogdGhlIEdBVEhFUiBvcGNvZGUuIEluIHRoaXMgY2Fz ZSwgdW5sZXNzIGhvc3QxeCBpcyBiZWhpbmQgYW4gSU9NTVUKKwkgKiBhcyB3ZWxsIGl0IHdvbid0 IGJlIGFibGUgdG8gcHJvY2VzcyBidWZmZXJzIGFsbG9jYXRlZCBiZXlvbmQgdGhlCisJICogMzIt Yml0IGJvdW5kYXJ5LgorCSAqCisJICogVGhlIERNQSBBUEkgd2lsbCB1c2UgYm91bmNlIGJ1ZmZl cnMgaW4gdGhpcyBjYXNlLCBzbyB0aGF0IGNvdWxkCisJICogcGVyaGFwcyBzdGlsbCBiZSBtYWRl IHRvIHdvcmssIGV2ZW4gaWYgbGVzcyBlZmZpY2llbnQsIGJ1dCB0aGVyZQorCSAqIGlzIGFub3Ro ZXIgY2F0Y2g6IGluIG9yZGVyIHRvIHBlcmZvcm0gY2FjaGUgbWFpbnRlbmFuY2Ugb24gcGFnZXMK KwkgKiBhbGxvY2F0ZWQgZm9yIGRpc2NvbnRpZ3VvdXMgYnVmZmVycyB3ZSBuZWVkIHRvIG1hcCBh bmQgdW5tYXAgdGhlCisJICogU0cgdGFibGUgcmVwcmVzZW50aW5nIHRoZXNlIGJ1ZmZlcnMuIFRo aXMgaXMgZmluZSBmb3Igc29tZXRoaW5nCisJICogc21hbGwgbGlrZSBhIHB1c2ggYnVmZmVyLCBi dXQgaXQgZXhoYXVzdHMgdGhlIGJvdW5jZSBidWZmZXIgcG9vbAorCSAqICh0eXBpY2FsbHkgb24g dGhlIG9yZGVyIG9mIGEgZmV3IE1pQikgZm9yIGZyYW1lYnVmZmVycyAobWFueSBNaUIKKwkgKiBm b3IgYW55IG1vZGVybiByZXNvbHV0aW9uKS4KKwkgKgorCSAqIFdvcmsgYXJvdW5kIHRoaXMgYnkg bWFraW5nIHN1cmUgdGhhdCBUZWdyYSBEUk0gY2xpZW50cyBvbmx5IHVzZQorCSAqIGFuIElPTU1V IGlmIHRoZSBwYXJlbnQgaG9zdDF4IGFsc28gdXNlcyBhbiBJT01NVS4KKwkgKgorCSAqIE5vdGUg dGhhdCB0aGVyZSdzIHN0aWxsIGEgc21hbGwgZ2FwIGhlcmUgdGhhdCB3ZSBkb24ndCBjb3Zlcjog aWYKKwkgKiB0aGUgRE1BIEFQSSBpcyBiYWNrZWQgYnkgYW4gSU9NTVUgdGhlcmUncyBubyB3YXkg dG8gY29udHJvbCB3aGljaAorCSAqIGRldmljZSBpcyBhdHRhY2hlZCB0byBhbiBJT01NVSBhbmQg d2hpY2ggaXNuJ3QsIGV4Y2VwdCB2aWEgd2lyaW5nCisJICogdXAgdGhlIGRldmljZSB0cmVlIGFw cHJvcHJpYXRlbHkuIFRoaXMgaXMgY29uc2lkZXJlZCBhbiBwcm9ibGVtCisJICogb2YgaW50ZWdy YXRpb24sIHNvIGNhcmUgbXVzdCBiZSB0YWtlbiBmb3IgdGhlIERUIHRvIGJlIGNvbnNpc3RlbnQu CisJICovCisJZG9tYWluID0gaW9tbXVfZ2V0X2RvbWFpbl9mb3JfZGV2KGRybS0+ZGV2LT5wYXJl bnQpOworCisJaWYgKGRvbWFpbiAmJiBpb21tdV9wcmVzZW50KCZwbGF0Zm9ybV9idXNfdHlwZSkp IHsKIAkJdGVncmEtPmRvbWFpbiA9IGlvbW11X2RvbWFpbl9hbGxvYygmcGxhdGZvcm1fYnVzX3R5 cGUpOwogCQlpZiAoIXRlZ3JhLT5kb21haW4pIHsKIAkJCWVyciA9IC1FTk9NRU07CkBAIC0xMTA0 LDcgKzExMzAsNyBAQCBzdGF0aWMgaW50IGhvc3QxeF9kcm1fcHJvYmUoc3RydWN0IGhvc3QxeF9k ZXZpY2UgKmRldikKIAlpZiAoZXJyIDwgMCkKIAkJZ290byBmYmRldjsKIAotCWlmICh0ZWdyYS0+ ZG9tYWluKSB7CisJaWYgKHRlZ3JhLT51c2VfZXhwbGljaXRfaW9tbXUpIHsKIAkJdTY0IGNhcnZl b3V0X3N0YXJ0LCBjYXJ2ZW91dF9lbmQsIGdlbV9zdGFydCwgZ2VtX2VuZDsKIAkJdTY0IGRtYV9t YXNrID0gZG1hX2dldF9tYXNrKCZkZXYtPmRldik7CiAJCWRtYV9hZGRyX3Qgc3RhcnQsIGVuZDsK QEAgLTExMzIsNiArMTE1OCwxMCBAQCBzdGF0aWMgaW50IGhvc3QxeF9kcm1fcHJvYmUoc3RydWN0 IGhvc3QxeF9kZXZpY2UgKmRldikKIAkJRFJNX0RFQlVHX0RSSVZFUigiICBHRU06ICUjbGx4LSUj bGx4XG4iLCBnZW1fc3RhcnQsIGdlbV9lbmQpOwogCQlEUk1fREVCVUdfRFJJVkVSKCIgIENhcnZl b3V0OiAlI2xseC0lI2xseFxuIiwgY2FydmVvdXRfc3RhcnQsCiAJCQkJIGNhcnZlb3V0X2VuZCk7 CisJfSBlbHNlIGlmICh0ZWdyYS0+ZG9tYWluKSB7CisJCWlvbW11X2RvbWFpbl9mcmVlKHRlZ3Jh LT5kb21haW4pOworCQl0ZWdyYS0+ZG9tYWluID0gTlVMTDsKKwkJaW92YV9jYWNoZV9wdXQoKTsK IAl9CiAKIAlpZiAodGVncmEtPmh1YikgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3Rl Z3JhL2RybS5oIGIvZHJpdmVycy9ncHUvZHJtL3RlZ3JhL2RybS5oCmluZGV4IDI4ZjI4MjBhNzM3 MS4uZDk0MTU1M2Y3YTNkIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vdGVncmEvZHJtLmgK KysrIGIvZHJpdmVycy9ncHUvZHJtL3RlZ3JhL2RybS5oCkBAIC0zNiw2ICszNiw3IEBAIHN0cnVj dCB0ZWdyYV9kcm0gewogCXN0cnVjdCBkcm1fZGV2aWNlICpkcm07CiAKIAlzdHJ1Y3QgaW9tbXVf ZG9tYWluICpkb21haW47CisJYm9vbCB1c2VfZXhwbGljaXRfaW9tbXU7CiAJc3RydWN0IG11dGV4 IG1tX2xvY2s7CiAJc3RydWN0IGRybV9tbSBtbTsKIAotLSAKMi4yMy4wCgpfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0 CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3Rv cC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWw=