From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jordan Crouse Subject: [RFC PATCH v1 02/15] iommu/arm-smmu: Add split pagetable support for arm-smmu-v2 Date: Fri, 1 Mar 2019 12:38:24 -0700 Message-ID: <1551469117-3404-3-git-send-email-jcrouse@codeaurora.org> References: <1551469117-3404-1-git-send-email-jcrouse@codeaurora.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1551469117-3404-1-git-send-email-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, Joerg Roedel , Will Deacon , linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, iommu-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org, dianders-uWgjrcJnOmJ4cg9Nei1l7Q@public.gmane.org, hoegsberg-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org, Robin Murphy , linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org, baolu.lu-VuQAYsv1563Yd54FQh9/CA@public.gmane.org List-Id: linux-arm-msm@vger.kernel.org QWRkIHN1cHBvcnQgZm9yIGEgc3BsaXQgcGFnZXRhYmxlIChUVEJSMC9UVEJSMSkgc2NoZW1lIGZv cgphcm0tc21tdS12Mi4gSWYgc3BsaXQgcGFnZXRhYmxlcyBhcmUgZW5hYmxlZCwgY3JlYXRlIGEK cGFnZXRhYmxlIGZvciBUVEJSMSBhbmQgc2V0IHVwIHRoZSBzaWduIGV4dGVuc2lvbiBiaXQgc28K dGhhdCBhbGwgSU9WQXMgd2l0aCB0aGF0IGJpdCBzZXQgYXJlIG1hcHBlZCBhbmQgdHJhbnNsYXRl ZApmcm9tIHRoZSBUVEJSMSBwYWdldGFibGUuCgpTaWduZWQtb2ZmLWJ5OiBKb3JkYW4gQ3JvdXNl IDxqY3JvdXNlQGNvZGVhdXJvcmEub3JnPgotLS0KCiBkcml2ZXJzL2lvbW11L2FybS1zbW11LXJl Z3MuaCAgfCAgMTggKysrKysKIGRyaXZlcnMvaW9tbXUvYXJtLXNtbXUuYyAgICAgICB8IDE0OSAr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLQogZHJpdmVycy9pb21tdS9p by1wZ3RhYmxlLWFybS5jIHwgICAzICstCiAzIGZpbGVzIGNoYW5nZWQsIDE1NCBpbnNlcnRpb25z KCspLCAxNiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2lvbW11L2FybS1zbW11 LXJlZ3MuaCBiL2RyaXZlcnMvaW9tbXUvYXJtLXNtbXUtcmVncy5oCmluZGV4IGExMjI2ZTQuLjU2 Zjk3MDkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaW9tbXUvYXJtLXNtbXUtcmVncy5oCisrKyBiL2Ry aXZlcnMvaW9tbXUvYXJtLXNtbXUtcmVncy5oCkBAIC0xOTMsNyArMTkzLDI1IEBAIGVudW0gYXJt X3NtbXVfczJjcl9wcml2Y2ZnIHsKICNkZWZpbmUgUkVTVU1FX1JFVFJZCQkJKDAgPDwgMCkKICNk ZWZpbmUgUkVTVU1FX1RFUk1JTkFURQkJKDEgPDwgMCkKIAorI2RlZmluZSBUVEJDUl9FUEQxCQkJ KDEgPDwgMjMpCisjZGVmaW5lIFRUQkNSX1QxU1pfU0hJRlQJCTE2CisjZGVmaW5lIFRUQkNSX0lS R04xX1NISUZUCQkyNAorI2RlZmluZSBUVEJDUl9PUkdOMV9TSElGVAkJMjYKKyNkZWZpbmUgVFRC Q1JfUkdOX1dCV0EJCQkxCisjZGVmaW5lIFRUQkNSX1NIMV9TSElGVAkJCTI4CisjZGVmaW5lIFRU QkNSX1NIX0lTCQkJMworCisjZGVmaW5lIFRUQkNSX1RHMV8xNksJCQkoMSA8PCAzMCkKKyNkZWZp bmUgVFRCQ1JfVEcxXzRLCQkJKDIgPDwgMzApCisjZGVmaW5lIFRUQkNSX1RHMV82NEsJCQkoMyA8 PCAzMCkKKwogI2RlZmluZSBUVEJDUjJfU0VQX1NISUZUCQkxNQorI2RlZmluZSBUVEJDUjJfU0VQ XzMxCQkJKDB4MCA8PCBUVEJDUjJfU0VQX1NISUZUKQorI2RlZmluZSBUVEJDUjJfU0VQXzM1CQkJ KDB4MSA8PCBUVEJDUjJfU0VQX1NISUZUKQorI2RlZmluZSBUVEJDUjJfU0VQXzM5CQkJKDB4MiA8 PCBUVEJDUjJfU0VQX1NISUZUKQorI2RlZmluZSBUVEJDUjJfU0VQXzQxCQkJKDB4MyA8PCBUVEJD UjJfU0VQX1NISUZUKQorI2RlZmluZSBUVEJDUjJfU0VQXzQzCQkJKDB4NCA8PCBUVEJDUjJfU0VQ X1NISUZUKQorI2RlZmluZSBUVEJDUjJfU0VQXzQ3CQkJKDB4NSA8PCBUVEJDUjJfU0VQX1NISUZU KQogI2RlZmluZSBUVEJDUjJfU0VQX1VQU1RSRUFNCQkoMHg3IDw8IFRUQkNSMl9TRVBfU0hJRlQp CiAjZGVmaW5lIFRUQkNSMl9BUwkJCSgxIDw8IDQpCiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW9t bXUvYXJtLXNtbXUuYyBiL2RyaXZlcnMvaW9tbXUvYXJtLXNtbXUuYwppbmRleCBhZjE4YTdlLi4w NWViMTI2IDEwMDY0NAotLS0gYS9kcml2ZXJzL2lvbW11L2FybS1zbW11LmMKKysrIGIvZHJpdmVy cy9pb21tdS9hcm0tc21tdS5jCkBAIC0xNTEsNiArMTUxLDcgQEAgc3RydWN0IGFybV9zbW11X2Ni IHsKIAl1MzIJCQkJdGNyWzJdOwogCXUzMgkJCQltYWlyWzJdOwogCXN0cnVjdCBhcm1fc21tdV9j ZmcJCSpjZmc7CisJdTY0CQkJCXNwbGl0X3RhYmxlX21hc2s7CiB9OwogCiBzdHJ1Y3QgYXJtX3Nt bXVfbWFzdGVyX2NmZyB7CkBAIC0yMDgsNiArMjA5LDcgQEAgc3RydWN0IGFybV9zbW11X2Rldmlj ZSB7CiAJdW5zaWduZWQgbG9uZwkJCXZhX3NpemU7CiAJdW5zaWduZWQgbG9uZwkJCWlwYV9zaXpl OwogCXVuc2lnbmVkIGxvbmcJCQlwYV9zaXplOworCXVuc2lnbmVkIGxvbmcJCQl1YnNfc2l6ZTsK IAl1bnNpZ25lZCBsb25nCQkJcGdzaXplX2JpdG1hcDsKIAogCXUzMgkJCQludW1fZ2xvYmFsX2ly cXM7CkBAIC0yNTIsMTMgKzI1NCwxNCBAQCBlbnVtIGFybV9zbW11X2RvbWFpbl9zdGFnZSB7CiAK IHN0cnVjdCBhcm1fc21tdV9kb21haW4gewogCXN0cnVjdCBhcm1fc21tdV9kZXZpY2UJCSpzbW11 OwotCXN0cnVjdCBpb19wZ3RhYmxlX29wcwkJKnBndGJsX29wczsKKwlzdHJ1Y3QgaW9fcGd0YWJs ZV9vcHMJCSpwZ3RibF9vcHNbMl07CiAJY29uc3Qgc3RydWN0IGlvbW11X2dhdGhlcl9vcHMJKnRs Yl9vcHM7CiAJc3RydWN0IGFybV9zbW11X2NmZwkJY2ZnOwogCWVudW0gYXJtX3NtbXVfZG9tYWlu X3N0YWdlCXN0YWdlOwogCWJvb2wJCQkJbm9uX3N0cmljdDsKIAlzdHJ1Y3QgbXV0ZXgJCQlpbml0 X211dGV4OyAvKiBQcm90ZWN0cyBzbW11IHBvaW50ZXIgKi8KIAlzcGlubG9ja190CQkJY2JfbG9j azsgLyogU2VyaWFsaXNlcyBBVFMxKiBvcHMgYW5kIFRMQiBzeW5jcyAqLworCXUzMiBhdHRyaWJ1 dGVzOwogCXN0cnVjdCBpb21tdV9kb21haW4JCWRvbWFpbjsKIH07CiAKQEAgLTYxOCw2ICs2MjEs NjkgQEAgc3RhdGljIGlycXJldHVybl90IGFybV9zbW11X2dsb2JhbF9mYXVsdChpbnQgaXJxLCB2 b2lkICpkZXYpCiAJcmV0dXJuIElSUV9IQU5ETEVEOwogfQogCitzdGF0aWMgdm9pZCBhcm1fc21t dV9pbml0X3R0YnIxKHN0cnVjdCBhcm1fc21tdV9kb21haW4gKnNtbXVfZG9tYWluLAorCQlzdHJ1 Y3QgaW9fcGd0YWJsZV9jZmcgKnBndGJsX2NmZykKK3sKKwlzdHJ1Y3QgYXJtX3NtbXVfZGV2aWNl ICpzbW11ID0gc21tdV9kb21haW4tPnNtbXU7CisJc3RydWN0IGFybV9zbW11X2NmZyAqY2ZnID0g JnNtbXVfZG9tYWluLT5jZmc7CisJc3RydWN0IGFybV9zbW11X2NiICpjYiA9ICZzbW11X2RvbWFp bi0+c21tdS0+Y2JzW2NmZy0+Y2JuZHhdOworCWludCBwZ3NpemUgPSAxIDw8IF9fZmZzKHBndGJs X2NmZy0+cGdzaXplX2JpdG1hcCk7CisKKwkvKiBFbmFibGUgc3BlY3VsYXRpdmUgd2Fsa3MgdGhy b3VnaCB0aGUgVFRCUjEgKi8KKwljYi0+dGNyWzBdICY9IH5UVEJDUl9FUEQxOworCisJY2ItPnRj clswXSB8PSBUVEJDUl9TSF9JUyA8PCBUVEJDUl9TSDFfU0hJRlQ7CisJY2ItPnRjclswXSB8PSBU VEJDUl9SR05fV0JXQSA8PCBUVEJDUl9JUkdOMV9TSElGVDsKKwljYi0+dGNyWzBdIHw9IFRUQkNS X1JHTl9XQldBIDw8IFRUQkNSX09SR04xX1NISUZUOworCisJc3dpdGNoIChwZ3NpemUpIHsKKwlj YXNlIFNaXzRLOgorCQljYi0+dGNyWzBdIHw9IFRUQkNSX1RHMV80SzsKKwkJYnJlYWs7CisJY2Fz ZSBTWl8xNks6CisJCWNiLT50Y3JbMF0gfD0gVFRCQ1JfVEcxXzE2SzsKKwkJYnJlYWs7CisJY2Fz ZSBTWl82NEs6CisJCWNiLT50Y3JbMF0gfD0gVFRCQ1JfVEcxXzY0SzsKKwkJYnJlYWs7CisJfQor CisJY2ItPnRjclswXSB8PSAoNjRVTEwgLSBzbW11LT52YV9zaXplKSA8PCBUVEJDUl9UMVNaX1NI SUZUOworCisJLyogQ2xlYXIgdGhlIGV4aXN0aW5nIFNFUCBjb25maWd1cmF0aW9uICovCisJY2It PnRjclsxXSAmPSB+VFRCQ1IyX1NFUF9VUFNUUkVBTTsKKworCS8qIFNldCB1cCB0aGUgc2lnbiBl eHRlbmQgYml0ICovCisJc3dpdGNoIChzbW11LT52YV9zaXplKSB7CisJY2FzZSAzMjoKKwkJY2It PnRjclsxXSB8PSBUVEJDUjJfU0VQXzMxOworCQljYi0+c3BsaXRfdGFibGVfbWFzayA9ICgxVUxM IDw8IDMxKTsKKwkJYnJlYWs7CisJY2FzZSAzNjoKKwkJY2ItPnRjclsxXSB8PSBUVEJDUjJfU0VQ XzM1OworCQljYi0+c3BsaXRfdGFibGVfbWFzayA9ICgxVUxMIDw8IDM1KTsKKwkJYnJlYWs7CisJ Y2FzZSA0MDoKKwkJY2ItPnRjclsxXSB8PSBUVEJDUjJfU0VQXzM5OworCQljYi0+c3BsaXRfdGFi bGVfbWFzayA9ICgxVUxMIDw8IDM5KTsKKwkJYnJlYWs7CisJY2FzZSA0MjoKKwkJY2ItPnRjclsx XSB8PSBUVEJDUjJfU0VQXzQxOworCQljYi0+c3BsaXRfdGFibGVfbWFzayA9ICgxVUxMIDw8IDQx KTsKKwkJYnJlYWs7CisJY2FzZSA0NDoKKwkJY2ItPnRjclsxXSB8PSBUVEJDUjJfU0VQXzQzOwor CQljYi0+c3BsaXRfdGFibGVfbWFzayA9ICgxVUxMIDw8IDQzKTsKKwkJYnJlYWs7CisJY2FzZSA0 ODoKKwkJY2ItPnRjclsxXSB8PSBUVEJDUjJfU0VQX1VQU1RSRUFNOworCQljYi0+c3BsaXRfdGFi bGVfbWFzayA9ICgxVUxMIDw8IDQ4KTsKKwl9CisKKwljYi0+dHRiclsxXSA9IHBndGJsX2NmZy0+ YXJtX2xwYWVfczFfY2ZnLnR0YnJbMF07CisJY2ItPnR0YnJbMV0gfD0gKHU2NCljZmctPmFzaWQg PDwgVFRCUm5fQVNJRF9TSElGVDsKK30KKwogc3RhdGljIHZvaWQgYXJtX3NtbXVfaW5pdF9jb250 ZXh0X2Jhbmsoc3RydWN0IGFybV9zbW11X2RvbWFpbiAqc21tdV9kb21haW4sCiAJCQkJICAgICAg IHN0cnVjdCBpb19wZ3RhYmxlX2NmZyAqcGd0YmxfY2ZnKQogewpAQCAtNjUwLDggKzcxNiwxMiBA QCBzdGF0aWMgdm9pZCBhcm1fc21tdV9pbml0X2NvbnRleHRfYmFuayhzdHJ1Y3QgYXJtX3NtbXVf ZG9tYWluICpzbW11X2RvbWFpbiwKIAkJfSBlbHNlIHsKIAkJCWNiLT50dGJyWzBdID0gcGd0Ymxf Y2ZnLT5hcm1fbHBhZV9zMV9jZmcudHRiclswXTsKIAkJCWNiLT50dGJyWzBdIHw9ICh1NjQpY2Zn LT5hc2lkIDw8IFRUQlJuX0FTSURfU0hJRlQ7Ci0JCQljYi0+dHRiclsxXSA9IHBndGJsX2NmZy0+ YXJtX2xwYWVfczFfY2ZnLnR0YnJbMV07Ci0JCQljYi0+dHRiclsxXSB8PSAodTY0KWNmZy0+YXNp ZCA8PCBUVEJSbl9BU0lEX1NISUZUOworCisJCQkvKgorCQkJICogU2V0IFRUQlIxIHRvIGVtcHR5 IGJ5IGRlZmF1bHQgLSBpdCB3aWxsIGdldAorCQkJICogcHJvZ3JhbW1lZCBsYXRlciBpZiBpdCBp cyBlbmFibGVkCisJCQkgKi8KKwkJCWNiLT50dGJyWzFdID0gKHU2NCljZmctPmFzaWQgPDwgVFRC Um5fQVNJRF9TSElGVDsKIAkJfQogCX0gZWxzZSB7CiAJCWNiLT50dGJyWzBdID0gcGd0YmxfY2Zn LT5hcm1fbHBhZV9zMl9jZmcudnR0YnI7CkBAIC03NjAsMTEgKzgzMCwxMyBAQCBzdGF0aWMgaW50 IGFybV9zbW11X2luaXRfZG9tYWluX2NvbnRleHQoc3RydWN0IGlvbW11X2RvbWFpbiAqZG9tYWlu LAogewogCWludCBpcnEsIHN0YXJ0LCByZXQgPSAwOwogCXVuc2lnbmVkIGxvbmcgaWFzLCBvYXM7 Ci0Jc3RydWN0IGlvX3BndGFibGVfb3BzICpwZ3RibF9vcHM7CisJc3RydWN0IGlvX3BndGFibGVf b3BzICpwZ3RibF9vcHNbMl07CiAJc3RydWN0IGlvX3BndGFibGVfY2ZnIHBndGJsX2NmZzsKIAll bnVtIGlvX3BndGFibGVfZm10IGZtdDsKIAlzdHJ1Y3QgYXJtX3NtbXVfZG9tYWluICpzbW11X2Rv bWFpbiA9IHRvX3NtbXVfZG9tYWluKGRvbWFpbik7CiAJc3RydWN0IGFybV9zbW11X2NmZyAqY2Zn ID0gJnNtbXVfZG9tYWluLT5jZmc7CisJYm9vbCBzcGxpdF90YWJsZXMgPQorCQkoc21tdV9kb21h aW4tPmF0dHJpYnV0ZXMgJiAoMSA8PCBET01BSU5fQVRUUl9TUExJVF9UQUJMRVMpKTsKIAogCW11 dGV4X2xvY2soJnNtbXVfZG9tYWluLT5pbml0X211dGV4KTsKIAlpZiAoc21tdV9kb21haW4tPnNt bXUpCkBAIC03OTQsOCArODY2LDExIEBAIHN0YXRpYyBpbnQgYXJtX3NtbXVfaW5pdF9kb21haW5f Y29udGV4dChzdHJ1Y3QgaW9tbXVfZG9tYWluICpkb21haW4sCiAJICoKIAkgKiBOb3RlIHRoYXQg eW91IGNhbid0IGFjdHVhbGx5IHJlcXVlc3Qgc3RhZ2UtMiBtYXBwaW5ncy4KIAkgKi8KLQlpZiAo IShzbW11LT5mZWF0dXJlcyAmIEFSTV9TTU1VX0ZFQVRfVFJBTlNfUzEpKQorCWlmICghKHNtbXUt PmZlYXR1cmVzICYgQVJNX1NNTVVfRkVBVF9UUkFOU19TMSkpIHsKIAkJc21tdV9kb21haW4tPnN0 YWdlID0gQVJNX1NNTVVfRE9NQUlOX1MyOworCQkvKiBGSVhNRTogZmFpbCBpbnN0ZWFkPyAqLwor CQlzcGxpdF90YWJsZXMgPSBmYWxzZTsKKwl9CiAJaWYgKCEoc21tdS0+ZmVhdHVyZXMgJiBBUk1f U01NVV9GRUFUX1RSQU5TX1MyKSkKIAkJc21tdV9kb21haW4tPnN0YWdlID0gQVJNX1NNTVVfRE9N QUlOX1MxOwogCkBAIC04MTIsOCArODg3LDExIEBAIHN0YXRpYyBpbnQgYXJtX3NtbXVfaW5pdF9k b21haW5fY29udGV4dChzdHJ1Y3QgaW9tbXVfZG9tYWluICpkb21haW4sCiAJaWYgKElTX0VOQUJM RUQoQ09ORklHX0lPTU1VX0lPX1BHVEFCTEVfQVJNVjdTKSAmJgogCSAgICAhSVNfRU5BQkxFRChD T05GSUdfNjRCSVQpICYmICFJU19FTkFCTEVEKENPTkZJR19BUk1fTFBBRSkgJiYKIAkgICAgKHNt bXUtPmZlYXR1cmVzICYgQVJNX1NNTVVfRkVBVF9GTVRfQUFSQ0gzMl9TKSAmJgotCSAgICAoc21t dV9kb21haW4tPnN0YWdlID09IEFSTV9TTU1VX0RPTUFJTl9TMSkpCisJICAgIChzbW11X2RvbWFp bi0+c3RhZ2UgPT0gQVJNX1NNTVVfRE9NQUlOX1MxKSkgeworCQkvKiBGSVhNRTogZmFpbCBpbnN0 ZWFkPyAqLworCQlzcGxpdF90YWJsZXMgPSBmYWxzZTsKIAkJY2ZnLT5mbXQgPSBBUk1fU01NVV9D VFhfRk1UX0FBUkNIMzJfUzsKKwl9CiAJaWYgKChJU19FTkFCTEVEKENPTkZJR182NEJJVCkgfHwg Y2ZnLT5mbXQgPT0gQVJNX1NNTVVfQ1RYX0ZNVF9OT05FKSAmJgogCSAgICAoc21tdS0+ZmVhdHVy ZXMgJiAoQVJNX1NNTVVfRkVBVF9GTVRfQUFSQ0g2NF82NEsgfAogCQkJICAgICAgIEFSTV9TTU1V X0ZFQVRfRk1UX0FBUkNINjRfMTZLIHwKQEAgLTkwMyw4ICs5ODEsOCBAQCBzdGF0aWMgaW50IGFy bV9zbW11X2luaXRfZG9tYWluX2NvbnRleHQoc3RydWN0IGlvbW11X2RvbWFpbiAqZG9tYWluLAog CQlwZ3RibF9jZmcucXVpcmtzIHw9IElPX1BHVEFCTEVfUVVJUktfTk9OX1NUUklDVDsKIAogCXNt bXVfZG9tYWluLT5zbW11ID0gc21tdTsKLQlwZ3RibF9vcHMgPSBhbGxvY19pb19wZ3RhYmxlX29w cyhmbXQsICZwZ3RibF9jZmcsIHNtbXVfZG9tYWluKTsKLQlpZiAoIXBndGJsX29wcykgeworCXBn dGJsX29wc1swXSA9IGFsbG9jX2lvX3BndGFibGVfb3BzKGZtdCwgJnBndGJsX2NmZywgc21tdV9k b21haW4pOworCWlmICghcGd0Ymxfb3BzWzBdKSB7CiAJCXJldCA9IC1FTk9NRU07CiAJCWdvdG8g b3V0X2NsZWFyX3NtbXU7CiAJfQpAQCAtOTE2LDYgKzk5NCwyMiBAQCBzdGF0aWMgaW50IGFybV9z bW11X2luaXRfZG9tYWluX2NvbnRleHQoc3RydWN0IGlvbW11X2RvbWFpbiAqZG9tYWluLAogCiAJ LyogSW5pdGlhbGlzZSB0aGUgY29udGV4dCBiYW5rIHdpdGggb3VyIHBhZ2UgdGFibGUgY2ZnICov CiAJYXJtX3NtbXVfaW5pdF9jb250ZXh0X2Jhbmsoc21tdV9kb21haW4sICZwZ3RibF9jZmcpOwor CisJcGd0Ymxfb3BzWzFdID0gTlVMTDsKKworCWlmIChzcGxpdF90YWJsZXMpIHsKKwkJLyogRklY TUU6IEkgdGhpbmsgaXQgaXMgc2FmZSB0byByZXVzZSBwZ3RibF9jZmcgaGVyZSAqLworCQlwZ3Ri bF9vcHNbMV0gPSBhbGxvY19pb19wZ3RhYmxlX29wcyhmbXQsICZwZ3RibF9jZmcsCisJCQlzbW11 X2RvbWFpbik7CisJCWlmICghcGd0Ymxfb3BzWzFdKSB7CisJCQlmcmVlX2lvX3BndGFibGVfb3Bz KHBndGJsX29wc1swXSk7CisJCQlyZXQgPSAtRU5PTUVNOworCQkJZ290byBvdXRfY2xlYXJfc21t dTsKKwkJfQorCisJCWFybV9zbW11X2luaXRfdHRicjEoc21tdV9kb21haW4sICZwZ3RibF9jZmcp OworCX0KKwogCWFybV9zbW11X3dyaXRlX2NvbnRleHRfYmFuayhzbW11LCBjZmctPmNibmR4KTsK IAogCS8qCkBAIC05MzQsNyArMTAyOCw5IEBAIHN0YXRpYyBpbnQgYXJtX3NtbXVfaW5pdF9kb21h aW5fY29udGV4dChzdHJ1Y3QgaW9tbXVfZG9tYWluICpkb21haW4sCiAJbXV0ZXhfdW5sb2NrKCZz bW11X2RvbWFpbi0+aW5pdF9tdXRleCk7CiAKIAkvKiBQdWJsaXNoIHBhZ2UgdGFibGUgb3BzIGZv ciBtYXAvdW5tYXAgKi8KLQlzbW11X2RvbWFpbi0+cGd0Ymxfb3BzID0gcGd0Ymxfb3BzOworCXNt bXVfZG9tYWluLT5wZ3RibF9vcHNbMF0gPSBwZ3RibF9vcHNbMF07CisJc21tdV9kb21haW4tPnBn dGJsX29wc1sxXSA9IHBndGJsX29wc1sxXTsKKwogCXJldHVybiAwOwogCiBvdXRfY2xlYXJfc21t dToKQEAgLTk3MCw3ICsxMDY2LDkgQEAgc3RhdGljIHZvaWQgYXJtX3NtbXVfZGVzdHJveV9kb21h aW5fY29udGV4dChzdHJ1Y3QgaW9tbXVfZG9tYWluICpkb21haW4pCiAJCWRldm1fZnJlZV9pcnEo c21tdS0+ZGV2LCBpcnEsIGRvbWFpbik7CiAJfQogCi0JZnJlZV9pb19wZ3RhYmxlX29wcyhzbW11 X2RvbWFpbi0+cGd0Ymxfb3BzKTsKKwlmcmVlX2lvX3BndGFibGVfb3BzKHNtbXVfZG9tYWluLT5w Z3RibF9vcHNbMF0pOworCWZyZWVfaW9fcGd0YWJsZV9vcHMoc21tdV9kb21haW4tPnBndGJsX29w c1sxXSk7CisKIAlfX2FybV9zbW11X2ZyZWVfYml0bWFwKHNtbXUtPmNvbnRleHRfbWFwLCBjZmct PmNibmR4KTsKIAogCWFybV9zbW11X3JwbV9wdXQoc21tdSk7CkBAIC0xMjg1LDEwICsxMzgzLDIz IEBAIHN0YXRpYyBpbnQgYXJtX3NtbXVfYXR0YWNoX2RldihzdHJ1Y3QgaW9tbXVfZG9tYWluICpk b21haW4sIHN0cnVjdCBkZXZpY2UgKmRldikKIAlyZXR1cm4gcmV0OwogfQogCitzdGF0aWMgc3Ry dWN0IGlvX3BndGFibGVfb3BzICoKK2FybV9zbW11X2dldF9wZ3RibF9vcHMoc3RydWN0IGlvbW11 X2RvbWFpbiAqZG9tYWluLCB1bnNpZ25lZCBsb25nIGlvdmEpCit7CisJc3RydWN0IGFybV9zbW11 X2RvbWFpbiAqc21tdV9kb21haW4gPSB0b19zbW11X2RvbWFpbihkb21haW4pOworCXN0cnVjdCBh cm1fc21tdV9jZmcgKmNmZyA9ICZzbW11X2RvbWFpbi0+Y2ZnOworCXN0cnVjdCBhcm1fc21tdV9j YiAqY2IgPSAmc21tdV9kb21haW4tPnNtbXUtPmNic1tjZmctPmNibmR4XTsKKworCWlmIChpb3Zh ICYgY2ItPnNwbGl0X3RhYmxlX21hc2spCisJCXJldHVybiBzbW11X2RvbWFpbi0+cGd0Ymxfb3Bz WzFdOworCisJcmV0dXJuIHNtbXVfZG9tYWluLT5wZ3RibF9vcHNbMF07Cit9CisKIHN0YXRpYyBp bnQgYXJtX3NtbXVfbWFwKHN0cnVjdCBpb21tdV9kb21haW4gKmRvbWFpbiwgdW5zaWduZWQgbG9u ZyBpb3ZhLAogCQkJcGh5c19hZGRyX3QgcGFkZHIsIHNpemVfdCBzaXplLCBpbnQgcHJvdCkKIHsK LQlzdHJ1Y3QgaW9fcGd0YWJsZV9vcHMgKm9wcyA9IHRvX3NtbXVfZG9tYWluKGRvbWFpbiktPnBn dGJsX29wczsKKwlzdHJ1Y3QgaW9fcGd0YWJsZV9vcHMgKm9wcyA9IGFybV9zbW11X2dldF9wZ3Ri bF9vcHMoZG9tYWluLCBpb3ZhKTsKIAlzdHJ1Y3QgYXJtX3NtbXVfZGV2aWNlICpzbW11ID0gdG9f c21tdV9kb21haW4oZG9tYWluKS0+c21tdTsKIAlpbnQgcmV0OwogCkBAIC0xMzA1LDcgKzE0MTYs NyBAQCBzdGF0aWMgaW50IGFybV9zbW11X21hcChzdHJ1Y3QgaW9tbXVfZG9tYWluICpkb21haW4s IHVuc2lnbmVkIGxvbmcgaW92YSwKIHN0YXRpYyBzaXplX3QgYXJtX3NtbXVfdW5tYXAoc3RydWN0 IGlvbW11X2RvbWFpbiAqZG9tYWluLCB1bnNpZ25lZCBsb25nIGlvdmEsCiAJCQkgICAgIHNpemVf dCBzaXplKQogewotCXN0cnVjdCBpb19wZ3RhYmxlX29wcyAqb3BzID0gdG9fc21tdV9kb21haW4o ZG9tYWluKS0+cGd0Ymxfb3BzOworCXN0cnVjdCBpb19wZ3RhYmxlX29wcyAqb3BzID0gYXJtX3Nt bXVfZ2V0X3BndGJsX29wcyhkb21haW4sIGlvdmEpOwogCXN0cnVjdCBhcm1fc21tdV9kZXZpY2Ug KnNtbXUgPSB0b19zbW11X2RvbWFpbihkb21haW4pLT5zbW11OwogCXNpemVfdCByZXQ7CiAKQEAg LTEzNDksNyArMTQ2MCw3IEBAIHN0YXRpYyBwaHlzX2FkZHJfdCBhcm1fc21tdV9pb3ZhX3RvX3Bo eXNfaGFyZChzdHJ1Y3QgaW9tbXVfZG9tYWluICpkb21haW4sCiAJc3RydWN0IGFybV9zbW11X2Rv bWFpbiAqc21tdV9kb21haW4gPSB0b19zbW11X2RvbWFpbihkb21haW4pOwogCXN0cnVjdCBhcm1f c21tdV9kZXZpY2UgKnNtbXUgPSBzbW11X2RvbWFpbi0+c21tdTsKIAlzdHJ1Y3QgYXJtX3NtbXVf Y2ZnICpjZmcgPSAmc21tdV9kb21haW4tPmNmZzsKLQlzdHJ1Y3QgaW9fcGd0YWJsZV9vcHMgKm9w cz0gc21tdV9kb21haW4tPnBndGJsX29wczsKKwlzdHJ1Y3QgaW9fcGd0YWJsZV9vcHMgKm9wcyA9 IGFybV9zbW11X2dldF9wZ3RibF9vcHMoZG9tYWluLCBpb3ZhKTsKIAlzdHJ1Y3QgZGV2aWNlICpk ZXYgPSBzbW11LT5kZXY7CiAJdm9pZCBfX2lvbWVtICpjYl9iYXNlOwogCXUzMiB0bXA7CkBAIC0x Mzk3LDcgKzE1MDgsNyBAQCBzdGF0aWMgcGh5c19hZGRyX3QgYXJtX3NtbXVfaW92YV90b19waHlz KHN0cnVjdCBpb21tdV9kb21haW4gKmRvbWFpbiwKIAkJCQkJZG1hX2FkZHJfdCBpb3ZhKQogewog CXN0cnVjdCBhcm1fc21tdV9kb21haW4gKnNtbXVfZG9tYWluID0gdG9fc21tdV9kb21haW4oZG9t YWluKTsKLQlzdHJ1Y3QgaW9fcGd0YWJsZV9vcHMgKm9wcyA9IHNtbXVfZG9tYWluLT5wZ3RibF9v cHM7CisJc3RydWN0IGlvX3BndGFibGVfb3BzICpvcHMgPSBhcm1fc21tdV9nZXRfcGd0Ymxfb3Bz KGRvbWFpbiwgaW92YSk7CiAKIAlpZiAoZG9tYWluLT50eXBlID09IElPTU1VX0RPTUFJTl9JREVO VElUWSkKIAkJcmV0dXJuIGlvdmE7CkBAIC0xNTg0LDYgKzE2OTUsMTEgQEAgc3RhdGljIGludCBh cm1fc21tdV9kb21haW5fZ2V0X2F0dHIoc3RydWN0IGlvbW11X2RvbWFpbiAqZG9tYWluLAogCQlj YXNlIERPTUFJTl9BVFRSX05FU1RJTkc6CiAJCQkqKGludCAqKWRhdGEgPSAoc21tdV9kb21haW4t PnN0YWdlID09IEFSTV9TTU1VX0RPTUFJTl9ORVNURUQpOwogCQkJcmV0dXJuIDA7CisJCWNhc2Ug RE9NQUlOX0FUVFJfU1BMSVRfVEFCTEVTOgorCQkJKigoaW50ICopZGF0YSkgPQorCQkJCSEhKHNt bXVfZG9tYWluLT5hdHRyaWJ1dGVzICYKKwkJCQkgICAoMSA8PCBET01BSU5fQVRUUl9TUExJVF9U QUJMRVMpKTsKKwkJCXJldHVybiAwOwogCQlkZWZhdWx0OgogCQkJcmV0dXJuIC1FTk9ERVY7CiAJ CX0KQEAgLTE2MjQsNiArMTc0MCwxMSBAQCBzdGF0aWMgaW50IGFybV9zbW11X2RvbWFpbl9zZXRf YXR0cihzdHJ1Y3QgaW9tbXVfZG9tYWluICpkb21haW4sCiAJCQllbHNlCiAJCQkJc21tdV9kb21h aW4tPnN0YWdlID0gQVJNX1NNTVVfRE9NQUlOX1MxOwogCQkJYnJlYWs7CisJCWNhc2UgRE9NQUlO X0FUVFJfU1BMSVRfVEFCTEVTOgorCQkJaWYgKCooKGludCAqKWRhdGEpKQorCQkJCXNtbXVfZG9t YWluLT5hdHRyaWJ1dGVzIHw9CisJCQkJCSgxIDw8IERPTUFJTl9BVFRSX1NQTElUX1RBQkxFUyk7 CisJCQlicmVhazsKIAkJZGVmYXVsdDoKIAkJCXJldCA9IC1FTk9ERVY7CiAJCX0KZGlmZiAtLWdp dCBhL2RyaXZlcnMvaW9tbXUvaW8tcGd0YWJsZS1hcm0uYyBiL2RyaXZlcnMvaW9tbXUvaW8tcGd0 YWJsZS1hcm0uYwppbmRleCAyMzdjYWNkLi5kYzlmYjJlIDEwMDY0NAotLS0gYS9kcml2ZXJzL2lv bW11L2lvLXBndGFibGUtYXJtLmMKKysrIGIvZHJpdmVycy9pb21tdS9pby1wZ3RhYmxlLWFybS5j CkBAIC00NzUsOCArNDc1LDcgQEAgc3RhdGljIGludCBhcm1fbHBhZV9tYXAoc3RydWN0IGlvX3Bn dGFibGVfb3BzICpvcHMsIHVuc2lnbmVkIGxvbmcgaW92YSwKIAlpZiAoIShpb21tdV9wcm90ICYg KElPTU1VX1JFQUQgfCBJT01NVV9XUklURSkpKQogCQlyZXR1cm4gMDsKIAotCWlmIChXQVJOX09O KGlvdmEgPj0gKDFVTEwgPDwgZGF0YS0+aW9wLmNmZy5pYXMpIHx8Ci0JCSAgICBwYWRkciA+PSAo MVVMTCA8PCBkYXRhLT5pb3AuY2ZnLm9hcykpKQorCWlmIChXQVJOX09OKHBhZGRyID49ICgxVUxM IDw8IGRhdGEtPmlvcC5jZmcub2FzKSkpCiAJCXJldHVybiAtRVJBTkdFOwogCiAJcHJvdCA9IGFy bV9scGFlX3Byb3RfdG9fcHRlKGRhdGEsIGlvbW11X3Byb3QpOwotLSAKMi43LjQKCl9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkZyZWVkcmVubyBtYWlsaW5n IGxpc3QKRnJlZWRyZW5vQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVk ZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ZyZWVkcmVubw==