From mboxrd@z Thu Jan 1 00:00:00 1970 From: Thierry Reding Subject: [PATCH 07/12] gpu: host1x: Support DMA mapping of buffers Date: Mon, 28 Oct 2019 13:37:13 +0100 Message-ID: <20191028123718.3890217-8-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 RnJvbTogVGhpZXJyeSBSZWRpbmcgPHRyZWRpbmdAbnZpZGlhLmNvbT4KCklmIGhvc3QxeF9ib19w aW4oKSByZXR1cm5zIGFuIFNHIHRhYmxlLCBjcmVhdGUgYSBETUEgbWFwcGluZyBmb3IgdGhlCmJ1 ZmZlci4gRm9yIGJ1ZmZlcnMgdGhhdCB0aGUgaG9zdDF4IGNsaWVudCBoYXMgYWxyZWFkeSBtYXBw ZWQgaXRzZWxmLApob3N0MXhfYm9fcGluKCkgcmV0dXJucyBOVUxMIGFuZCB0aGUgZXhpc3Rpbmcg RE1BIGFkZHJlc3MgaXMgdXNlZC4KClNpZ25lZC1vZmYtYnk6IFRoaWVycnkgUmVkaW5nIDx0cmVk aW5nQG52aWRpYS5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL3RlZ3JhL2dlbS5jIHwgMTggKysr KysrKy0tCiBkcml2ZXJzL2dwdS9ob3N0MXgvZGV2LmMgICAgfCAxNiArKy0tLS0tLQogZHJpdmVy cy9ncHUvaG9zdDF4L2pvYi5jICAgIHwgNzMgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KystLS0tLQogZHJpdmVycy9ncHUvaG9zdDF4L2pvYi5oICAgIHwgIDQgKysKIDQgZmlsZXMgY2hh bmdlZCwgODcgaW5zZXJ0aW9ucygrKSwgMjQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL3RlZ3JhL2dlbS5jIGIvZHJpdmVycy9ncHUvZHJtL3RlZ3JhL2dlbS5jCmlu ZGV4IDU2NGVmNjBmNjdjMi4uNzQ2ZGFlMzJjNDg0IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9k cm0vdGVncmEvZ2VtLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL3RlZ3JhL2dlbS5jCkBAIC0zNCw5 ICszNCwxOSBAQCBzdGF0aWMgc3RydWN0IHNnX3RhYmxlICp0ZWdyYV9ib19waW4oc3RydWN0IGRl dmljZSAqZGV2LCBzdHJ1Y3QgaG9zdDF4X2JvICpibywKIAlzdHJ1Y3Qgc2dfdGFibGUgKnNndDsK IAlpbnQgZXJyOwogCi0JaWYgKHBoeXMpCisJLyoKKwkgKiBJZiB3ZSd2ZSBtYW51YWxseSBtYXBw ZWQgdGhlIGJ1ZmZlciBvYmplY3QgdGhyb3VnaCB0aGUgSU9NTVUsIG1ha2UKKwkgKiBzdXJlIHRv IHJldHVybiB0aGUgSU9WQSBhZGRyZXNzIG9mIG91ciBtYXBwaW5nLgorCSAqLworCWlmIChwaHlz ICYmIG9iai0+bW0pIHsKIAkJKnBoeXMgPSBvYmotPmlvdmE7CisJCXJldHVybiBOVUxMOworCX0K IAorCS8qCisJICogSWYgd2UgZG9uJ3QgaGF2ZSBhIG1hcHBpbmcgZm9yIHRoaXMgYnVmZmVyIHll dCwgcmV0dXJuIGFuIFNHIHRhYmxlCisJICogc28gdGhhdCBob3N0MXggY2FuIGRvIHRoZSBtYXBw aW5nIGZvciB1cyB2aWEgdGhlIERNQSBBUEkuCisJICovCiAJc2d0ID0ga3phbGxvYyhzaXplb2Yo KnNndCksIEdGUF9LRVJORUwpOwogCWlmICghc2d0KQogCQlyZXR1cm4gRVJSX1BUUigtRU5PTUVN KTsKQEAgLTYyLDggKzcyLDEwIEBAIHN0YXRpYyBzdHJ1Y3Qgc2dfdGFibGUgKnRlZ3JhX2JvX3Bp bihzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBob3N0MXhfYm8gKmJvLAogCiBzdGF0aWMgdm9p ZCB0ZWdyYV9ib191bnBpbihzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBzZ190YWJsZSAqc2d0 KQogewotCXNnX2ZyZWVfdGFibGUoc2d0KTsKLQlrZnJlZShzZ3QpOworCWlmIChzZ3QpIHsKKwkJ c2dfZnJlZV90YWJsZShzZ3QpOworCQlrZnJlZShzZ3QpOworCX0KIH0KIAogc3RhdGljIHZvaWQg KnRlZ3JhX2JvX21tYXAoc3RydWN0IGhvc3QxeF9ibyAqYm8pCmRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9ob3N0MXgvZGV2LmMgYi9kcml2ZXJzL2dwdS9ob3N0MXgvZGV2LmMKaW5kZXggZjMwYjg0 NDdhMzE5Li41YmRjNDg0Mzk4ZjQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2hvc3QxeC9kZXYu YworKysgYi9kcml2ZXJzL2dwdS9ob3N0MXgvZGV2LmMKQEAgLTE4LDEwICsxOCw2IEBACiAjaW5j bHVkZSA8dHJhY2UvZXZlbnRzL2hvc3QxeC5oPgogI3VuZGVmIENSRUFURV9UUkFDRV9QT0lOVFMK IAotI2lmIElTX0VOQUJMRUQoQ09ORklHX0FSTV9ETUFfVVNFX0lPTU1VKQotI2luY2x1ZGUgPGFz bS9kbWEtaW9tbXUuaD4KLSNlbmRpZgotCiAjaW5jbHVkZSAiYnVzLmgiCiAjaW5jbHVkZSAiY2hh bm5lbC5oIgogI2luY2x1ZGUgImRlYnVnLmgiCkBAIC0yNzYsMTcgKzI3MiwxMyBAQCBzdGF0aWMg aW50IGhvc3QxeF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQogCQlkZXZfZXJy KCZwZGV2LT5kZXYsICJmYWlsZWQgdG8gZ2V0IHJlc2V0OiAlZFxuIiwgZXJyKTsKIAkJcmV0dXJu IGVycjsKIAl9Ci0jaWYgSVNfRU5BQkxFRChDT05GSUdfQVJNX0RNQV9VU0VfSU9NTVUpCi0JaWYg KGhvc3QtPmRldi0+YXJjaGRhdGEubWFwcGluZykgewotCQlzdHJ1Y3QgZG1hX2lvbW11X21hcHBp bmcgKm1hcHBpbmcgPQotCQkJCXRvX2RtYV9pb21tdV9tYXBwaW5nKGhvc3QtPmRldik7Ci0JCWFy bV9pb21tdV9kZXRhY2hfZGV2aWNlKGhvc3QtPmRldik7Ci0JCWFybV9pb21tdV9yZWxlYXNlX21h cHBpbmcobWFwcGluZyk7Ci0JfQotI2VuZGlmCisKIAlpZiAoSVNfRU5BQkxFRChDT05GSUdfVEVH UkFfSE9TVDFYX0ZJUkVXQUxMKSkKIAkJZ290byBza2lwX2lvbW11OwogCisJaWYgKGlvbW11X2dl dF9kb21haW5fZm9yX2RldigmcGRldi0+ZGV2KSkKKwkJZ290byBza2lwX2lvbW11OworCiAJaG9z dC0+Z3JvdXAgPSBpb21tdV9ncm91cF9nZXQoJnBkZXYtPmRldik7CiAJaWYgKGhvc3QtPmdyb3Vw KSB7CiAJCXN0cnVjdCBpb21tdV9kb21haW5fZ2VvbWV0cnkgKmdlb21ldHJ5OwpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvaG9zdDF4L2pvYi5jIGIvZHJpdmVycy9ncHUvaG9zdDF4L2pvYi5jCmlu ZGV4IDJlMGMzZTBjYTFmYS4uMjVjYTU0ZGU4ZmM1IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9o b3N0MXgvam9iLmMKKysrIGIvZHJpdmVycy9ncHUvaG9zdDF4L2pvYi5jCkBAIC05OSw3ICs5OSw4 IEBAIEVYUE9SVF9TWU1CT0woaG9zdDF4X2pvYl9hZGRfZ2F0aGVyKTsKIAogc3RhdGljIHVuc2ln bmVkIGludCBwaW5fam9iKHN0cnVjdCBob3N0MXggKmhvc3QsIHN0cnVjdCBob3N0MXhfam9iICpq b2IpCiB7Ci0Jc3RydWN0IGRldmljZSAqZGV2ID0gam9iLT5jbGllbnQtPmRldjsKKwlzdHJ1Y3Qg aG9zdDF4X2NsaWVudCAqY2xpZW50ID0gam9iLT5jbGllbnQ7CisJc3RydWN0IGRldmljZSAqZGV2 ID0gY2xpZW50LT5kZXY7CiAJdW5zaWduZWQgaW50IGk7CiAJaW50IGVycjsKIApAQCAtMTA3LDgg KzEwOCw4IEBAIHN0YXRpYyB1bnNpZ25lZCBpbnQgcGluX2pvYihzdHJ1Y3QgaG9zdDF4ICpob3N0 LCBzdHJ1Y3QgaG9zdDF4X2pvYiAqam9iKQogCiAJZm9yIChpID0gMDsgaSA8IGpvYi0+bnVtX3Jl bG9jczsgaSsrKSB7CiAJCXN0cnVjdCBob3N0MXhfcmVsb2MgKnJlbG9jID0gJmpvYi0+cmVsb2Nz W2ldOworCQlkbWFfYWRkcl90IHBoeXNfYWRkciwgKnBoeXM7CiAJCXN0cnVjdCBzZ190YWJsZSAq c2d0OwotCQlkbWFfYWRkcl90IHBoeXNfYWRkcjsKIAogCQlyZWxvYy0+dGFyZ2V0LmJvID0gaG9z dDF4X2JvX2dldChyZWxvYy0+dGFyZ2V0LmJvKTsKIAkJaWYgKCFyZWxvYy0+dGFyZ2V0LmJvKSB7 CkBAIC0xMTYsMTIgKzExNyw1MSBAQCBzdGF0aWMgdW5zaWduZWQgaW50IHBpbl9qb2Ioc3RydWN0 IGhvc3QxeCAqaG9zdCwgc3RydWN0IGhvc3QxeF9qb2IgKmpvYikKIAkJCWdvdG8gdW5waW47CiAJ CX0KIAotCQlzZ3QgPSBob3N0MXhfYm9fcGluKGRldiwgcmVsb2MtPnRhcmdldC5ibywgJnBoeXNf YWRkcik7CisJCWlmIChjbGllbnQtPmdyb3VwKQorCQkJcGh5cyA9ICZwaHlzX2FkZHI7CisJCWVs c2UKKwkJCXBoeXMgPSBOVUxMOworCisJCXNndCA9IGhvc3QxeF9ib19waW4oZGV2LCByZWxvYy0+ dGFyZ2V0LmJvLCBwaHlzKTsKIAkJaWYgKElTX0VSUihzZ3QpKSB7CiAJCQllcnIgPSBQVFJfRVJS KHNndCk7CiAJCQlnb3RvIHVucGluOwogCQl9CiAKKwkJaWYgKHNndCkgeworCQkJdW5zaWduZWQg bG9uZyBtYXNrID0gSE9TVDFYX1JFTE9DX1JFQUQgfAorCQkJCQkgICAgIEhPU1QxWF9SRUxPQ19X UklURTsKKwkJCWVudW0gZG1hX2RhdGFfZGlyZWN0aW9uIGRpcjsKKworCQkJc3dpdGNoIChyZWxv Yy0+ZmxhZ3MgJiBtYXNrKSB7CisJCQljYXNlIEhPU1QxWF9SRUxPQ19SRUFEOgorCQkJCWRpciA9 IERNQV9UT19ERVZJQ0U7CisJCQkJYnJlYWs7CisKKwkJCWNhc2UgSE9TVDFYX1JFTE9DX1dSSVRF OgorCQkJCWRpciA9IERNQV9GUk9NX0RFVklDRTsKKwkJCQlicmVhazsKKworCQkJY2FzZSBIT1NU MVhfUkVMT0NfUkVBRCB8IEhPU1QxWF9SRUxPQ19XUklURToKKwkJCQlkaXIgPSBETUFfQklESVJF Q1RJT05BTDsKKwkJCQlicmVhazsKKworCQkJZGVmYXVsdDoKKwkJCQllcnIgPSAtRUlOVkFMOwor CQkJCWdvdG8gdW5waW47CisJCQl9CisKKwkJCWVyciA9IGRtYV9tYXBfc2coZGV2LCBzZ3QtPnNn bCwgc2d0LT5uZW50cywgZGlyKTsKKwkJCWlmICghZXJyKSB7CisJCQkJZXJyID0gLUVOT01FTTsK KwkJCQlnb3RvIHVucGluOworCQkJfQorCisJCQlqb2ItPnVucGluc1tqb2ItPm51bV91bnBpbnNd LmRldiA9IGRldjsKKwkJCWpvYi0+dW5waW5zW2pvYi0+bnVtX3VucGluc10uZGlyID0gZGlyOwor CQkJcGh5c19hZGRyID0gc2dfZG1hX2FkZHJlc3Moc2d0LT5zZ2wpOworCQl9CisKIAkJam9iLT5h ZGRyX3BoeXNbam9iLT5udW1fdW5waW5zXSA9IHBoeXNfYWRkcjsKIAkJam9iLT51bnBpbnNbam9i LT5udW1fdW5waW5zXS5ibyA9IHJlbG9jLT50YXJnZXQuYm87CiAJCWpvYi0+dW5waW5zW2pvYi0+ bnVtX3VucGluc10uc2d0ID0gc2d0OwpAQCAtMTQ0LDcgKzE4NCw3IEBAIHN0YXRpYyB1bnNpZ25l ZCBpbnQgcGluX2pvYihzdHJ1Y3QgaG9zdDF4ICpob3N0LCBzdHJ1Y3QgaG9zdDF4X2pvYiAqam9i KQogCQkJZ290byB1bnBpbjsKIAkJfQogCi0JCXNndCA9IGhvc3QxeF9ib19waW4oaG9zdC0+ZGV2 LCBnLT5ibywgJnBoeXNfYWRkcik7CisJCXNndCA9IGhvc3QxeF9ib19waW4oaG9zdC0+ZGV2LCBn LT5ibywgTlVMTCk7CiAJCWlmIChJU19FUlIoc2d0KSkgewogCQkJZXJyID0gUFRSX0VSUihzZ3Qp OwogCQkJZ290byB1bnBpbjsKQEAgLTE3MiwxNSArMjEyLDI0IEBAIHN0YXRpYyB1bnNpZ25lZCBp bnQgcGluX2pvYihzdHJ1Y3QgaG9zdDF4ICpob3N0LCBzdHJ1Y3QgaG9zdDF4X2pvYiAqam9iKQog CQkJCWdvdG8gdW5waW47CiAJCQl9CiAKLQkJCWpvYi0+YWRkcl9waHlzW2pvYi0+bnVtX3VucGlu c10gPQotCQkJCWlvdmFfZG1hX2FkZHIoJmhvc3QtPmlvdmEsIGFsbG9jKTsKIAkJCWpvYi0+dW5w aW5zW2pvYi0+bnVtX3VucGluc10uc2l6ZSA9IGdhdGhlcl9zaXplOworCQkJcGh5c19hZGRyID0g aW92YV9kbWFfYWRkcigmaG9zdC0+aW92YSwgYWxsb2MpOwogCQl9IGVsc2UgewotCQkJam9iLT5h ZGRyX3BoeXNbam9iLT5udW1fdW5waW5zXSA9IHBoeXNfYWRkcjsKKwkJCWVyciA9IGRtYV9tYXBf c2coaG9zdC0+ZGV2LCBzZ3QtPnNnbCwgc2d0LT5uZW50cywKKwkJCQkJIERNQV9UT19ERVZJQ0Up OworCQkJaWYgKCFlcnIpIHsKKwkJCQllcnIgPSAtRU5PTUVNOworCQkJCWdvdG8gdW5waW47CisJ CQl9CisKKwkJCWpvYi0+dW5waW5zW2pvYi0+bnVtX3VucGluc10uZGV2ID0gaG9zdC0+ZGV2Owor CQkJcGh5c19hZGRyID0gc2dfZG1hX2FkZHJlc3Moc2d0LT5zZ2wpOwogCQl9CiAKLQkJam9iLT5n YXRoZXJfYWRkcl9waHlzW2ldID0gam9iLT5hZGRyX3BoeXNbam9iLT5udW1fdW5waW5zXTsKKwkJ am9iLT5hZGRyX3BoeXNbam9iLT5udW1fdW5waW5zXSA9IHBoeXNfYWRkcjsKKwkJam9iLT5nYXRo ZXJfYWRkcl9waHlzW2ldID0gcGh5c19hZGRyOwogCisJCWpvYi0+dW5waW5zW2pvYi0+bnVtX3Vu cGluc10uZGlyID0gRE1BX1RPX0RFVklDRTsKIAkJam9iLT51bnBpbnNbam9iLT5udW1fdW5waW5z XS5ibyA9IGctPmJvOwogCQlqb2ItPnVucGluc1tqb2ItPm51bV91bnBpbnNdLnNndCA9IHNndDsK IAkJam9iLT5udW1fdW5waW5zKys7CkBAIC01NjcsNiArNjE2LDggQEAgdm9pZCBob3N0MXhfam9i X3VucGluKHN0cnVjdCBob3N0MXhfam9iICpqb2IpCiAKIAlmb3IgKGkgPSAwOyBpIDwgam9iLT5u dW1fdW5waW5zOyBpKyspIHsKIAkJc3RydWN0IGhvc3QxeF9qb2JfdW5waW5fZGF0YSAqdW5waW4g PSAmam9iLT51bnBpbnNbaV07CisJCXN0cnVjdCBkZXZpY2UgKmRldiA9IHVucGluLT5kZXYgPzog aG9zdC0+ZGV2OworCQlzdHJ1Y3Qgc2dfdGFibGUgKnNndCA9IHVucGluLT5zZ3Q7CiAKIAkJaWYg KCFJU19FTkFCTEVEKENPTkZJR19URUdSQV9IT1NUMVhfRklSRVdBTEwpICYmCiAJCSAgICB1bnBp bi0+c2l6ZSAmJiBob3N0LT5kb21haW4pIHsKQEAgLTU3Niw3ICs2MjcsMTEgQEAgdm9pZCBob3N0 MXhfam9iX3VucGluKHN0cnVjdCBob3N0MXhfam9iICpqb2IpCiAJCQkJaW92YV9wZm4oJmhvc3Qt PmlvdmEsIGpvYi0+YWRkcl9waHlzW2ldKSk7CiAJCX0KIAotCQlob3N0MXhfYm9fdW5waW4oaG9z dC0+ZGV2LCB1bnBpbi0+Ym8sIHVucGluLT5zZ3QpOworCQlpZiAodW5waW4tPmRldiAmJiBzZ3Qp CisJCQlkbWFfdW5tYXBfc2codW5waW4tPmRldiwgc2d0LT5zZ2wsIHNndC0+bmVudHMsCisJCQkJ ICAgICB1bnBpbi0+ZGlyKTsKKworCQlob3N0MXhfYm9fdW5waW4oZGV2LCB1bnBpbi0+Ym8sIHNn dCk7CiAJCWhvc3QxeF9ib19wdXQodW5waW4tPmJvKTsKIAl9CiAKZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2hvc3QxeC9qb2IuaCBiL2RyaXZlcnMvZ3B1L2hvc3QxeC9qb2IuaAppbmRleCA2MmI4 ODA1ZTZiMzUuLjk0YmMyZTRhZTI0MSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvaG9zdDF4L2pv Yi5oCisrKyBiL2RyaXZlcnMvZ3B1L2hvc3QxeC9qb2IuaApAQCAtOCw2ICs4LDggQEAKICNpZm5k ZWYgX19IT1NUMVhfSk9CX0gKICNkZWZpbmUgX19IT1NUMVhfSk9CX0gKIAorI2luY2x1ZGUgPGxp bnV4L2RtYS1kaXJlY3Rpb24uaD4KKwogc3RydWN0IGhvc3QxeF9qb2JfZ2F0aGVyIHsKIAl1bnNp Z25lZCBpbnQgd29yZHM7CiAJZG1hX2FkZHJfdCBiYXNlOwpAQCAtMTksNyArMjEsOSBAQCBzdHJ1 Y3QgaG9zdDF4X2pvYl9nYXRoZXIgewogc3RydWN0IGhvc3QxeF9qb2JfdW5waW5fZGF0YSB7CiAJ c3RydWN0IGhvc3QxeF9ibyAqYm87CiAJc3RydWN0IHNnX3RhYmxlICpzZ3Q7CisJc3RydWN0IGRl dmljZSAqZGV2OwogCXNpemVfdCBzaXplOworCWVudW0gZG1hX2RhdGFfZGlyZWN0aW9uIGRpcjsK IH07CiAKIC8qCi0tIAoyLjIzLjAKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVk ZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZv L2RyaS1kZXZlbA==