From: Jordan Crouse Subject: [PATCH 11/16] drm/msm: Add support for iommu-sva PASIDs Date: Fri, 18 May 2018 15:34:55 -0600 Message-ID: <20180518213500.31595-12-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 VGhlIElPTU1VIGNvcmUgY2FuIHN1cHBvcnQgY3JlYXRpbmcgbXVsdGlwbGUgcGFnZXRhYmxlcwpm b3IgYSBzcGVjaWZpYyBkb21haSBhbmQgbWFraW5nIHRoZW0gYXZhaWxhYmxlIHRvIGEgY2xpZW50 CmRyaXZlciB0aGF0IGhhcyB0aGUgbWVhbnMgdG8gbWFuYWdlIHRoZSBwYWdldGFibGUgaXRzZWxm LgoKUEFTSURzIGFyZSB1bmlxdWUgaW5kZXhlcyB0byBhIHNvZnR3YXJlIGNyZWF0ZWQgcGFnZXRh YmxlIHdpdGgKdGhlIHNhbWUgZm9ybWF0IGFuZCBjaGFyYWN0ZXJpc3RpY3MgYXMgdGhlIHBhcmVu dCBJT01NVSBkZXZpY2UuClRoZSBJT01NVSBkcml2ZXIgYWxsb2NhdGVzIHRoZSBwYWdldGFibGUg YW5kIHRyYWNrcyBpdCB3aXRoIGEKdW5pcXVlIHRva2VuIChQQVNJRCkgLSBpdCBkb2VzIG5vdCB0 b3VjaCB0aGUgYWN0dWFsIGhhcmR3YXJlLgogVGhlIGNsaWVudCBkcml2ZXIgaXMgZXhwZWN0ZWQg dG8gYmUgYWJsZSB0byBtYW5hZ2UgdGhlIHBhZ2V0YWJsZXMKYW5kIGRvIHNvbWV0aGluZyBpbnRl cmVzdGluZyB3aXRoIHRoZW0uCgpTb21lIGZsYXZvcnMgb2YgdGhlIE1TTSBHUFUgYXJlIGFibGUg dG8gYWxsb3cgZWFjaCBEUk0gaW5zdGFuY2UKdG8gaGF2ZSBpdHMgb3duIHBhZ2V0YWJsZSAoYW5k IHZpcnR1YWwgbWVtb3J5IHNwYWNlKSBhbmQgc3dpdGNoIHRoZW0KYXN5bmNocm9ub3VzbHkgYXQg dGhlIGJlZ2lubmluZyBvZiBhIGNvbW1hbmQuIFRoaXMgcHJvdGVjdHMgYWdhaW5zdAphY2NpZGVu dGFsIG9yIG1hbGljaW91cyBjb3JydXB0aW9uIG9yIGNvcHlpbmcgb2YgYnVmZmVycyBmcm9tIG90 aGVyCmluc3RhbmNlcy4KClRoZSBmaXJzdCBzdGVwIGlzIHRvIGFkZCBhIE1NVSBpbXBsZW1lbnRh dGlvbiB0aGF0IGNhbiBhbGxvY2F0ZSBhClBBU0lEIGFuZCBzZXQgdXAgYSBtc21fbW11IHN0cnVj dCB0byBhYnN0cmFjdCAobW9zdCkgb2YgdGhlIGRldGFpbHMKZnJvbSB0aGUgcmVzdCBvZiB0aGUg c3lzdGVtLgoKU2lnbmVkLW9mZi1ieTogSm9yZGFuIENyb3VzZSA8amNyb3VzZUBjb2RlYXVyb3Jh Lm9yZz4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9pb21tdS5jIHwgMTkwICsrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrCiBkcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9tbXUuaCAg IHwgICA2ICsKIDIgZmlsZXMgY2hhbmdlZCwgMTk2IGluc2VydGlvbnMoKykKCmRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9pb21tdS5jIGIvZHJpdmVycy9ncHUvZHJtL21zbS9t c21faW9tbXUuYwppbmRleCBmZGJlMWE4MzcyZjAuLjk5ZTY2MTE5NjlkNCAxMDA2NDQKLS0tIGEv ZHJpdmVycy9ncHUvZHJtL21zbS9tc21faW9tbXUuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNt L21zbV9pb21tdS5jCkBAIC0xNSw2ICsxNSw5IEBACiAgKiB0aGlzIHByb2dyYW0uICBJZiBub3Qs IHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCiAgKi8KIAorI2luY2x1ZGUgPGxp bnV4L2hhc2h0YWJsZS5oPgorI2luY2x1ZGUgPGxpbnV4L2FybS1zbW11Lmg+CisKICNpbmNsdWRl ICJtc21fZHJ2LmgiCiAjaW5jbHVkZSAibXNtX21tdS5oIgogCkBAIC0zNCwxMiArMzcsMzIgQEAg c3RhdGljIGludCBtc21fZmF1bHRfaGFuZGxlcihzdHJ1Y3QgaW9tbXVfZG9tYWluICpkb21haW4s IHN0cnVjdCBkZXZpY2UgKmRldiwKIAlyZXR1cm4gMDsKIH0KIAorc3RhdGljIGJvb2wgbXNtX2lv bW11X2NoZWNrX3Blcl9pbnN0YW5jZShzdHJ1Y3QgbXNtX2lvbW11ICppb21tdSkKK3sKKwlpbnQg dmFsOworCisJaWYgKCFJU19FTkFCTEVEKENPTkZJR19JT01NVV9TVkEpKQorCQlyZXR1cm4gZmFs c2U7CisKKwlpZiAoaW9tbXVfZG9tYWluX2dldF9hdHRyKGlvbW11LT5kb21haW4sIERPTUFJTl9B VFRSX1NQTElUX1RBQkxFUywKKwkJJnZhbCkpCisJCXJldHVybiBmYWxzZTsKKworCXJldHVybiB2 YWwgPyB0cnVlIDogZmFsc2U7Cit9CisKIHN0YXRpYyBpbnQgbXNtX2lvbW11X2F0dGFjaChzdHJ1 Y3QgbXNtX21tdSAqbW11LCBjb25zdCBjaGFyICogY29uc3QgKm5hbWVzLAogCQkJICAgIGludCBj bnQpCiB7CiAJc3RydWN0IG1zbV9pb21tdSAqaW9tbXUgPSB0b19tc21faW9tbXUobW11KTsKIAlp bnQgcmV0OwogCisJaWYgKG1zbV9pb21tdV9jaGVja19wZXJfaW5zdGFuY2UoaW9tbXUpKSB7CisJ CWlmICghaW9tbXVfc3ZhX2RldmljZV9pbml0KG1tdS0+ZGV2LCAwLCAoMSA8PCAzMSksIE5VTEwp KQorCQkJbXNtX21tdV9zZXRfZmVhdHVyZShtbXUsCisJCQkJTU1VX0ZFQVRVUkVfUEVSX0lOU1RB TkNFX1RBQkxFUyk7CisJfQorCiAJcG1fcnVudGltZV9nZXRfc3luYyhtbXUtPmRldik7CiAJcmV0 ID0gaW9tbXVfYXR0YWNoX2RldmljZShpb21tdS0+ZG9tYWluLCBtbXUtPmRldik7CiAJcG1fcnVu dGltZV9wdXRfc3luYyhtbXUtPmRldik7CkBAIC0xMTIsMyArMTM1LDE3MCBAQCBzdHJ1Y3QgbXNt X21tdSAqbXNtX2lvbW11X25ldyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBpb21tdV9kb21h aW4gKmRvbWFpbikKIAogCXJldHVybiAmaW9tbXUtPmJhc2U7CiB9CisKK3N0cnVjdCBwYXNpZF9l bnRyeSB7CisJaW50IHBhc2lkOworCXU2NCB0dGJyOworCXUzMiBhc2lkOworCXN0cnVjdCBobGlz dF9ub2RlIG5vZGU7Cit9OworCitERUNMQVJFX0hBU0hUQUJMRShwYXNpZF90YWJsZSwgNCk7CisK K3N0YXRpYyBpbnQgaW5zdGFsbF9wYXNpZF9jYihpbnQgcGFzaWQsIHU2NCB0dGJyLCB1MzIgYXNp ZCwgdm9pZCAqZGF0YSkKK3sKKwlzdHJ1Y3QgcGFzaWRfZW50cnkgKmVudHJ5ID0ga3phbGxvYyhz aXplb2YoKmVudHJ5KSwgR0ZQX0tFUk5FTCk7CisKKwlpZiAoIWVudHJ5KQorCQlyZXR1cm4gLUVO T01FTTsKKworCWVudHJ5LT5wYXNpZCA9IHBhc2lkOworCWVudHJ5LT50dGJyID0gdHRicjsKKwll bnRyeS0+YXNpZCA9IGFzaWQ7CisKKwkvKiBGSVhNRTogQXNzdW1lIHRoYXQgd2UnbGwgbmV2ZXIg aGF2ZSBhIHBhc2lkIGNvbmZsaWN0PyAqLworCS8qIEZJWE1FOiBsb2Nrcz8gUkNVPyAqLworCWhh c2hfYWRkKHBhc2lkX3RhYmxlLCAmZW50cnktPm5vZGUsIHBhc2lkKTsKKwlyZXR1cm4gMDsKK30K Kworc3RhdGljIHZvaWQgcmVtb3ZlX3Bhc2lkX2NiKGludCBwYXNpZCwgdm9pZCAqZGF0YSkKK3sK KwlzdHJ1Y3QgcGFzaWRfZW50cnkgKmVudHJ5OworCisJaGFzaF9mb3JfZWFjaF9wb3NzaWJsZShw YXNpZF90YWJsZSwgZW50cnksIG5vZGUsIHBhc2lkKSB7CisJCWlmIChwYXNpZCA9PSBlbnRyeS0+ cGFzaWQpIHsKKwkJCWhhc2hfZGVsKCZlbnRyeS0+bm9kZSk7CisJCQlrZnJlZShlbnRyeSk7CisJ CQlyZXR1cm47CisJCX0KKwl9Cit9CisKK3N0cnVjdCBtc21faW9tbXVfcGFzaWQgeworCXN0cnVj dCBtc21fbW11IGJhc2U7CisJc3RydWN0IGRldmljZSAqZGV2OworCWludCBwYXNpZDsKKwl1NjQg dHRicjsKKwl1MzIgYXNpZDsKK307CisjZGVmaW5lIHRvX21zbV9pb21tdV9wYXNpZCh4KSBjb250 YWluZXJfb2YoeCwgc3RydWN0IG1zbV9pb21tdV9wYXNpZCwgYmFzZSkKKworc3RhdGljIGludCBt c21faW9tbXVfcGFzaWRfYXR0YWNoKHN0cnVjdCBtc21fbW11ICptbXUsCisJCWNvbnN0IGNoYXIg KiBjb25zdCAqbmFtZXMsIGludCBjbnQpCit7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQg bXNtX2lvbW11X3Bhc2lkX21hcChzdHJ1Y3QgbXNtX21tdSAqbW11LCB1aW50NjRfdCBpb3ZhLAor CQlzdHJ1Y3Qgc2dfdGFibGUgKnNndCwgdW5zaWduZWQgbGVuLCBpbnQgcHJvdCkKK3sKKwlzdHJ1 Y3QgbXNtX2lvbW11X3Bhc2lkICpwYXNpZCA9IHRvX21zbV9pb21tdV9wYXNpZChtbXUpOworCWlu dCByZXQ7CisKKwlyZXQgPSBpb21tdV9zdmFfbWFwX3NnKHBhc2lkLT5wYXNpZCwgaW92YSwgc2d0 LT5zZ2wsIHNndC0+bmVudHMsIHByb3QpOworCVdBUk5fT04ocmV0IDwgMCk7CisKKwlyZXR1cm4g KHJldCA9PSBsZW4pID8gMCA6IC1FSU5WQUw7Cit9CisKK3N0YXRpYyBpbnQgbXNtX2lvbW11X3Bh c2lkX3VubWFwKHN0cnVjdCBtc21fbW11ICptbXUsIHVpbnQ2NF90IGlvdmEsCisJCXN0cnVjdCBz Z190YWJsZSAqc2d0LCB1bnNpZ25lZCBsZW4pCit7CisJc3RydWN0IG1zbV9pb21tdV9wYXNpZCAq cGFzaWQgPSB0b19tc21faW9tbXVfcGFzaWQobW11KTsKKworCWlvbW11X3N2YV91bm1hcChwYXNp ZC0+cGFzaWQsIGlvdmEsIGxlbik7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQgbXNt X2lvbW11X3Bhc2lkX2RldGFjaChzdHJ1Y3QgbXNtX21tdSAqbW11LAorCQljb25zdCBjaGFyICog Y29uc3QgKm5hbWVzLCBpbnQgY250KQoreworfQorCitzdGF0aWMgdm9pZCBtc21faW9tbXVfcGFz aWRfZGVzdHJveShzdHJ1Y3QgbXNtX21tdSAqbW11KQoreworCXN0cnVjdCBtc21faW9tbXVfcGFz aWQgKnBhc2lkID0gdG9fbXNtX2lvbW11X3Bhc2lkKG1tdSk7CisKKwlpb21tdV9zdmFfZnJlZV9w YXNpZChwYXNpZC0+cGFzaWQsIHBhc2lkLT5kZXYpOworCWtmcmVlKHBhc2lkKTsKK30KKworc3Rh dGljIGNvbnN0IHN0cnVjdCBtc21fbW11X2Z1bmNzIHBhc2lkX2Z1bmNzID0geworCQkuYXR0YWNo ID0gbXNtX2lvbW11X3Bhc2lkX2F0dGFjaCwKKwkJLmRldGFjaCA9IG1zbV9pb21tdV9wYXNpZF9k ZXRhY2gsCisJCS5tYXAgPSBtc21faW9tbXVfcGFzaWRfbWFwLAorCQkudW5tYXAgPSBtc21faW9t bXVfcGFzaWRfdW5tYXAsCisJCS5kZXN0cm95ID0gbXNtX2lvbW11X3Bhc2lkX2Rlc3Ryb3ksCit9 OworCitzdGF0aWMgY29uc3Qgc3RydWN0IGFybV9zbW11X3Bhc2lkX29wcyBtc21faW9tbXVfcGFz aWRfb3BzID0geworCS5pbnN0YWxsX3Bhc2lkID0gaW5zdGFsbF9wYXNpZF9jYiwKKwkucmVtb3Zl X3Bhc2lkID0gcmVtb3ZlX3Bhc2lkX2NiLAorfTsKKworc3RydWN0IG1zbV9tbXUgKm1zbV9pb21t dV9wYXNpZF9uZXcoc3RydWN0IG1zbV9tbXUgKnBhcmVudCkKK3sKKwlzdHJ1Y3QgbXNtX2lvbW11 ICpwYXJlbnRfaW9tbXUgPSB0b19tc21faW9tbXUocGFyZW50KTsKKwlzdHJ1Y3QgbXNtX2lvbW11 X3Bhc2lkICpwYXNpZDsKKwlpbnQgaWQ7CisKKwlpZiAoIW1zbV9tbXVfaGFzX2ZlYXR1cmUocGFy ZW50LCBNTVVfRkVBVFVSRV9QRVJfSU5TVEFOQ0VfVEFCTEVTKSkKKwkJcmV0dXJuIEVSUl9QVFIo LUVPUE5PVFNVUFApOworCisJcGFzaWQgPSBremFsbG9jKHNpemVvZigqcGFzaWQpLCBHRlBfS0VS TkVMKTsKKwlpZiAoIXBhc2lkKQorCQlyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTsKKworCWFybV9z bW11X2FkZF9wYXNpZF9vcHMocGFyZW50X2lvbW11LT5kb21haW4sICZtc21faW9tbXVfcGFzaWRf b3BzLAorCQlOVUxMKTsKKworCWlkID0gaW9tbXVfc3ZhX2FsbG9jX3Bhc2lkKHBhcmVudF9pb21t dS0+ZG9tYWluLCBwYXJlbnQtPmRldik7CisJaWYgKGlkIDwgMCkgeworCQlrZnJlZShwYXNpZCk7 CisJCXJldHVybiBFUlJfUFRSKGlkKTsKKwl9CisKKwlwYXNpZC0+cGFzaWQgPSBpZDsKKwlwYXNp ZC0+ZGV2ID0gcGFyZW50LT5kZXY7CisKKwltc21fbW11X2luaXQoJnBhc2lkLT5iYXNlLCBwYXJl bnQtPmRldiwgJnBhc2lkX2Z1bmNzKTsKKworCXJldHVybiAmcGFzaWQtPmJhc2U7Cit9CisKKy8q IEdpdmVuIGEgcGFzaWQgcmV0dXJuIHRoZSBUVEJSIGFuZCBBU0lEIGFzc29jaWF0ZWQgd2l0aCBp dCAqLworaW50IG1zbV9pb21tdV9wYXNpZF9pbmZvKHN0cnVjdCBtc21fbW11ICptbXUsIHU2NCAq dHRiciwgdTMyICphc2lkKQoreworCXN0cnVjdCBtc21faW9tbXVfcGFzaWQgKnBhc2lkOworCXN0 cnVjdCBwYXNpZF9lbnRyeSAqZW50cnk7CisKKwlpZiAobW11LT5mdW5jcy0+bWFwICE9IG1zbV9p b21tdV9wYXNpZF9tYXApCisJCXJldHVybiAtRU5PREVWOworCisJcGFzaWQgPSB0b19tc21faW9t bXVfcGFzaWQobW11KTsKKworCWlmICghcGFzaWQtPnR0YnIpIHsKKwkJLyogRmluZCB0aGUgcGFz aWQgZW50cnkgaW4gdGhlIGhhc2ggKi8KKwkJaGFzaF9mb3JfZWFjaF9wb3NzaWJsZShwYXNpZF90 YWJsZSwgZW50cnksIG5vZGUsIHBhc2lkLT5wYXNpZCkgeworCQkJaWYgKHBhc2lkLT5wYXNpZCA9 PSBlbnRyeS0+cGFzaWQpIHsKKwkJCQlwYXNpZC0+dHRiciA9IGVudHJ5LT50dGJyOworCQkJCXBh c2lkLT5hc2lkID0gZW50cnktPmFzaWQ7CisJCQkJZ290byBvdXQ7CisJCQl9CisJCX0KKworCQlX QVJOKDEsICJDb3VsZG4ndCBmaW5kIHRoZSBlbnRyeSBmb3IgcGFzaWQgJWRcbiIsIHBhc2lkLT5w YXNpZCk7CisJCXJldHVybiAtRUlOVkFMOworCX0KKworb3V0OgorCWlmICgqdHRicikKKwkJKnR0 YnIgPSBwYXNpZC0+dHRicjsKKworCWlmICgqYXNpZCkKKwkJKmFzaWQgPSBwYXNpZC0+YXNpZDsK KworCXJldHVybiAwOworfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9tc21fbW11 LmggYi9kcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9tbXUuaAppbmRleCA4NWRmNzhkNzEzOTguLjI5 NDM2YjlkYWE3MyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9tc21fbW11LmgKKysr IGIvZHJpdmVycy9ncHUvZHJtL21zbS9tc21fbW11LmgKQEAgLTMwLDYgKzMwLDkgQEAgc3RydWN0 IG1zbV9tbXVfZnVuY3MgewogCXZvaWQgKCpkZXN0cm95KShzdHJ1Y3QgbXNtX21tdSAqbW11KTsK IH07CiAKKy8qIE1NVSBmZWF0dXJlcyAqLworI2RlZmluZSBNTVVfRkVBVFVSRV9QRVJfSU5TVEFO Q0VfVEFCTEVTICgxIDw8IDApCisKIHN0cnVjdCBtc21fbW11IHsKIAljb25zdCBzdHJ1Y3QgbXNt X21tdV9mdW5jcyAqZnVuY3M7CiAJc3RydWN0IGRldmljZSAqZGV2OwpAQCAtNDgsNiArNTEsOSBA QCBzdGF0aWMgaW5saW5lIHZvaWQgbXNtX21tdV9pbml0KHN0cnVjdCBtc21fbW11ICptbXUsIHN0 cnVjdCBkZXZpY2UgKmRldiwKIHN0cnVjdCBtc21fbW11ICptc21faW9tbXVfbmV3KHN0cnVjdCBk ZXZpY2UgKmRldiwgc3RydWN0IGlvbW11X2RvbWFpbiAqZG9tYWluKTsKIHN0cnVjdCBtc21fbW11 ICptc21fZ3B1bW11X25ldyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBtc21fZ3B1ICpncHUp OwogCitzdHJ1Y3QgbXNtX21tdSAqbXNtX2lvbW11X3Bhc2lkX25ldyhzdHJ1Y3QgbXNtX21tdSAq cGFyZW50KTsKK2ludCBtc21faW9tbXVfcGFzaWRfaW5mbyhzdHJ1Y3QgbXNtX21tdSAqbW11LCB1 NjQgKnR0YnIsIHUzMiAqYXNpZCk7CisKIHN0YXRpYyBpbmxpbmUgdm9pZCBtc21fbW11X3NldF9m YXVsdF9oYW5kbGVyKHN0cnVjdCBtc21fbW11ICptbXUsIHZvaWQgKmFyZywKIAkJaW50ICgqaGFu ZGxlcikodm9pZCAqYXJnLCB1bnNpZ25lZCBsb25nIGlvdmEsIGludCBmbGFncykpCiB7Ci0tIAoy LjE3LjAKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkZy ZWVkcmVubyBtYWlsaW5nIGxpc3QKRnJlZWRyZW5vQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRw czovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ZyZWVkcmVubwo=