From: Jordan Crouse Subject: [PATCH 02/16] iommu/arm-smmu: Add split pagetable support for arm-smmu-v2 Date: Fri, 18 May 2018 15:34:46 -0600 Message-ID: <20180518213500.31595-3-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 QWRkIHN1cHBvcnQgZm9yIGEgc3BsaXQgcGFnZXRhYmxlIChUVEJSMC9UVEJSMSkgc2NoZW1lIGZv cgphcm0tc21tdS12Mi4gSWYgc3BsaXQgcGFnZXRhYmxlcyBhcmUgZW5hYmxlZCwgY3JlYXRlIGEK cGFnZXRhYmxlIGZvciBUVEJSMSBhbmQgc2V0IHVwIHRoZSBzaWduIGV4dGVuc2lvbiBiaXQgc28K dGhhdCBhbGwgSU9WQXMgd2l0aCB0aGF0IGJpdCBzZXQgYXJlIG1hcHBlZCBhbmQgdHJhbnNsYXRl ZApmcm9tIHRoZSBUVEJSMSBwYWdldGFibGUuCgpTaWduZWQtb2ZmLWJ5OiBKb3JkYW4gQ3JvdXNl IDxqY3JvdXNlQGNvZGVhdXJvcmEub3JnPgotLS0KIGRyaXZlcnMvaW9tbXUvYXJtLXNtbXUtcmVn cy5oICB8ICAxOCArKysrCiBkcml2ZXJzL2lvbW11L2FybS1zbW11LmMgICAgICAgfCAxNDggKysr KysrKysrKysrKysrKysrKysrKysrKysrKystLS0tCiBkcml2ZXJzL2lvbW11L2lvLXBndGFibGUt YXJtLmMgfCAgIDMgKy0KIDMgZmlsZXMgY2hhbmdlZCwgMTUzIGluc2VydGlvbnMoKyksIDE2IGRl bGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW9tbXUvYXJtLXNtbXUtcmVncy5oIGIv ZHJpdmVycy9pb21tdS9hcm0tc21tdS1yZWdzLmgKaW5kZXggYTEyMjZlNGFiNWY4Li41NmY5NzA5 M2Y0NmEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaW9tbXUvYXJtLXNtbXUtcmVncy5oCisrKyBiL2Ry aXZlcnMvaW9tbXUvYXJtLXNtbXUtcmVncy5oCkBAIC0xOTMsNyArMTkzLDI1IEBAIGVudW0gYXJt X3NtbXVfczJjcl9wcml2Y2ZnIHsKICNkZWZpbmUgUkVTVU1FX1JFVFJZCQkJKDAgPDwgMCkKICNk ZWZpbmUgUkVTVU1FX1RFUk1JTkFURQkJKDEgPDwgMCkKIAorI2RlZmluZSBUVEJDUl9FUEQxCQkJ KDEgPDwgMjMpCisjZGVmaW5lIFRUQkNSX1QxU1pfU0hJRlQJCTE2CisjZGVmaW5lIFRUQkNSX0lS R04xX1NISUZUCQkyNAorI2RlZmluZSBUVEJDUl9PUkdOMV9TSElGVAkJMjYKKyNkZWZpbmUgVFRC Q1JfUkdOX1dCV0EJCQkxCisjZGVmaW5lIFRUQkNSX1NIMV9TSElGVAkJCTI4CisjZGVmaW5lIFRU QkNSX1NIX0lTCQkJMworCisjZGVmaW5lIFRUQkNSX1RHMV8xNksJCQkoMSA8PCAzMCkKKyNkZWZp bmUgVFRCQ1JfVEcxXzRLCQkJKDIgPDwgMzApCisjZGVmaW5lIFRUQkNSX1RHMV82NEsJCQkoMyA8 PCAzMCkKKwogI2RlZmluZSBUVEJDUjJfU0VQX1NISUZUCQkxNQorI2RlZmluZSBUVEJDUjJfU0VQ XzMxCQkJKDB4MCA8PCBUVEJDUjJfU0VQX1NISUZUKQorI2RlZmluZSBUVEJDUjJfU0VQXzM1CQkJ KDB4MSA8PCBUVEJDUjJfU0VQX1NISUZUKQorI2RlZmluZSBUVEJDUjJfU0VQXzM5CQkJKDB4MiA8 PCBUVEJDUjJfU0VQX1NISUZUKQorI2RlZmluZSBUVEJDUjJfU0VQXzQxCQkJKDB4MyA8PCBUVEJD UjJfU0VQX1NISUZUKQorI2RlZmluZSBUVEJDUjJfU0VQXzQzCQkJKDB4NCA8PCBUVEJDUjJfU0VQ X1NISUZUKQorI2RlZmluZSBUVEJDUjJfU0VQXzQ3CQkJKDB4NSA8PCBUVEJDUjJfU0VQX1NISUZU KQogI2RlZmluZSBUVEJDUjJfU0VQX1VQU1RSRUFNCQkoMHg3IDw8IFRUQkNSMl9TRVBfU0hJRlQp CiAjZGVmaW5lIFRUQkNSMl9BUwkJCSgxIDw8IDQpCiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW9t bXUvYXJtLXNtbXUuYyBiL2RyaXZlcnMvaW9tbXUvYXJtLXNtbXUuYwppbmRleCA2OWU3YzYwNzky YTguLjM1NjhlOGIwNzNlYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9pb21tdS9hcm0tc21tdS5jCisr KyBiL2RyaXZlcnMvaW9tbXUvYXJtLXNtbXUuYwpAQCAtMTQzLDYgKzE0Myw3IEBAIHN0cnVjdCBh cm1fc21tdV9jYiB7CiAJdTMyCQkJCXRjclsyXTsKIAl1MzIJCQkJbWFpclsyXTsKIAlzdHJ1Y3Qg YXJtX3NtbXVfY2ZnCQkqY2ZnOworCXU2NAkJCQlzcGxpdF90YWJsZV9tYXNrOwogfTsKIAogc3Ry dWN0IGFybV9zbW11X21hc3Rlcl9jZmcgewpAQCAtMjAwLDYgKzIwMSw3IEBAIHN0cnVjdCBhcm1f c21tdV9kZXZpY2UgewogCXVuc2lnbmVkIGxvbmcJCQl2YV9zaXplOwogCXVuc2lnbmVkIGxvbmcJ CQlpcGFfc2l6ZTsKIAl1bnNpZ25lZCBsb25nCQkJcGFfc2l6ZTsKKwl1bnNpZ25lZCBsb25nCQkJ dWJzX3NpemU7CiAJdW5zaWduZWQgbG9uZwkJCXBnc2l6ZV9iaXRtYXA7CiAKIAl1MzIJCQkJbnVt X2dsb2JhbF9pcnFzOwpAQCAtMjQyLDEyICsyNDQsMTMgQEAgZW51bSBhcm1fc21tdV9kb21haW5f c3RhZ2UgewogCiBzdHJ1Y3QgYXJtX3NtbXVfZG9tYWluIHsKIAlzdHJ1Y3QgYXJtX3NtbXVfZGV2 aWNlCQkqc21tdTsKLQlzdHJ1Y3QgaW9fcGd0YWJsZV9vcHMJCSpwZ3RibF9vcHM7CisJc3RydWN0 IGlvX3BndGFibGVfb3BzCQkqcGd0Ymxfb3BzWzJdOwogCWNvbnN0IHN0cnVjdCBpb21tdV9nYXRo ZXJfb3BzCSp0bGJfb3BzOwogCXN0cnVjdCBhcm1fc21tdV9jZmcJCWNmZzsKIAllbnVtIGFybV9z bW11X2RvbWFpbl9zdGFnZQlzdGFnZTsKIAlzdHJ1Y3QgbXV0ZXgJCQlpbml0X211dGV4OyAvKiBQ cm90ZWN0cyBzbW11IHBvaW50ZXIgKi8KIAlzcGlubG9ja190CQkJY2JfbG9jazsgLyogU2VyaWFs aXNlcyBBVFMxKiBvcHMgYW5kIFRMQiBzeW5jcyAqLworCXUzMiBhdHRyaWJ1dGVzOwogCXN0cnVj dCBpb21tdV9kb21haW4JCWRvbWFpbjsKIH07CiAKQEAgLTU4Miw2ICs1ODUsNjkgQEAgc3RhdGlj IGlycXJldHVybl90IGFybV9zbW11X2dsb2JhbF9mYXVsdChpbnQgaXJxLCB2b2lkICpkZXYpCiAJ cmV0dXJuIElSUV9IQU5ETEVEOwogfQogCitzdGF0aWMgdm9pZCBhcm1fc21tdV9pbml0X3R0YnIx KHN0cnVjdCBhcm1fc21tdV9kb21haW4gKnNtbXVfZG9tYWluLAorCQlzdHJ1Y3QgaW9fcGd0YWJs ZV9jZmcgKnBndGJsX2NmZykKK3sKKwlzdHJ1Y3QgYXJtX3NtbXVfZGV2aWNlICpzbW11ID0gc21t dV9kb21haW4tPnNtbXU7CisJc3RydWN0IGFybV9zbW11X2NmZyAqY2ZnID0gJnNtbXVfZG9tYWlu LT5jZmc7CisJc3RydWN0IGFybV9zbW11X2NiICpjYiA9ICZzbW11X2RvbWFpbi0+c21tdS0+Y2Jz W2NmZy0+Y2JuZHhdOworCWludCBwZ3NpemUgPSAxIDw8IF9fZmZzKHBndGJsX2NmZy0+cGdzaXpl X2JpdG1hcCk7CisKKwkvKiBFbmFibGUgc3BlY3VsYXRpdmUgd2Fsa3MgdGhyb3VnaCB0aGUgVFRC UjEgKi8KKwljYi0+dGNyWzBdICY9IH5UVEJDUl9FUEQxOworCisJY2ItPnRjclswXSB8PSBUVEJD Ul9TSF9JUyA8PCBUVEJDUl9TSDFfU0hJRlQ7CisJY2ItPnRjclswXSB8PSBUVEJDUl9SR05fV0JX QSA8PCBUVEJDUl9JUkdOMV9TSElGVDsKKwljYi0+dGNyWzBdIHw9IFRUQkNSX1JHTl9XQldBIDw8 IFRUQkNSX09SR04xX1NISUZUOworCisJc3dpdGNoIChwZ3NpemUpIHsKKwljYXNlIFNaXzRLOgor CQljYi0+dGNyWzBdIHw9IFRUQkNSX1RHMV80SzsKKwkJYnJlYWs7CisJY2FzZSBTWl8xNks6CisJ CWNiLT50Y3JbMF0gfD0gVFRCQ1JfVEcxXzE2SzsKKwkJYnJlYWs7CisJY2FzZSBTWl82NEs6CisJ CWNiLT50Y3JbMF0gfD0gVFRCQ1JfVEcxXzY0SzsKKwkJYnJlYWs7CisJfQorCisJY2ItPnRjclsw XSB8PSAoNjRVTEwgLSBzbW11LT52YV9zaXplKSA8PCBUVEJDUl9UMVNaX1NISUZUOworCisJLyog Q2xlYXIgdGhlIGV4aXN0aW5nIFNFUCBjb25maWd1cmF0aW9uICovCisJY2ItPnRjclsxXSAmPSB+ VFRCQ1IyX1NFUF9VUFNUUkVBTTsKKworCS8qIFNldCB1cCB0aGUgc2lnbiBleHRlbmQgYml0ICov CisJc3dpdGNoIChzbW11LT52YV9zaXplKSB7CisJY2FzZSAzMjoKKwkJY2ItPnRjclsxXSB8PSBU VEJDUjJfU0VQXzMxOworCQljYi0+c3BsaXRfdGFibGVfbWFzayA9ICgxVUxMIDw8IDMxKTsKKwkJ YnJlYWs7CisJY2FzZSAzNjoKKwkJY2ItPnRjclsxXSB8PSBUVEJDUjJfU0VQXzM1OworCQljYi0+ c3BsaXRfdGFibGVfbWFzayA9ICgxVUxMIDw8IDM1KTsKKwkJYnJlYWs7CisJY2FzZSA0MDoKKwkJ Y2ItPnRjclsxXSB8PSBUVEJDUjJfU0VQXzM5OworCQljYi0+c3BsaXRfdGFibGVfbWFzayA9ICgx VUxMIDw8IDM5KTsKKwkJYnJlYWs7CisJY2FzZSA0MjoKKwkJY2ItPnRjclsxXSB8PSBUVEJDUjJf U0VQXzQxOworCQljYi0+c3BsaXRfdGFibGVfbWFzayA9ICgxVUxMIDw8IDQxKTsKKwkJYnJlYWs7 CisJY2FzZSA0NDoKKwkJY2ItPnRjclsxXSB8PSBUVEJDUjJfU0VQXzQzOworCQljYi0+c3BsaXRf dGFibGVfbWFzayA9ICgxVUxMIDw8IDQzKTsKKwkJYnJlYWs7CisJY2FzZSA0ODoKKwkJY2ItPnRj clsxXSB8PSBUVEJDUjJfU0VQX1VQU1RSRUFNOworCQljYi0+c3BsaXRfdGFibGVfbWFzayA9ICgx VUxMIDw8IDQ4KTsKKwl9CisKKwljYi0+dHRiclsxXSA9IHBndGJsX2NmZy0+YXJtX2xwYWVfczFf Y2ZnLnR0YnJbMF07CisJY2ItPnR0YnJbMV0gfD0gKHU2NCljZmctPmFzaWQgPDwgVFRCUm5fQVNJ RF9TSElGVDsKK30KKwogc3RhdGljIHZvaWQgYXJtX3NtbXVfaW5pdF9jb250ZXh0X2Jhbmsoc3Ry dWN0IGFybV9zbW11X2RvbWFpbiAqc21tdV9kb21haW4sCiAJCQkJICAgICAgIHN0cnVjdCBpb19w Z3RhYmxlX2NmZyAqcGd0YmxfY2ZnKQogewpAQCAtNjE0LDggKzY4MCwxMiBAQCBzdGF0aWMgdm9p ZCBhcm1fc21tdV9pbml0X2NvbnRleHRfYmFuayhzdHJ1Y3QgYXJtX3NtbXVfZG9tYWluICpzbW11 X2RvbWFpbiwKIAkJfSBlbHNlIHsKIAkJCWNiLT50dGJyWzBdID0gcGd0YmxfY2ZnLT5hcm1fbHBh ZV9zMV9jZmcudHRiclswXTsKIAkJCWNiLT50dGJyWzBdIHw9ICh1NjQpY2ZnLT5hc2lkIDw8IFRU QlJuX0FTSURfU0hJRlQ7Ci0JCQljYi0+dHRiclsxXSA9IHBndGJsX2NmZy0+YXJtX2xwYWVfczFf Y2ZnLnR0YnJbMV07Ci0JCQljYi0+dHRiclsxXSB8PSAodTY0KWNmZy0+YXNpZCA8PCBUVEJSbl9B U0lEX1NISUZUOworCisJCQkvKgorCQkJICogU2V0IFRUQlIxIHRvIGVtcHR5IGJ5IGRlZmF1bHQg LSBpdCB3aWxsIGdldAorCQkJICogcHJvZ3JhbW1lZCBsYXRlciBpZiBpdCBpcyBlbmFibGVkCisJ CQkgKi8KKwkJCWNiLT50dGJyWzFdID0gKHU2NCljZmctPmFzaWQgPDwgVFRCUm5fQVNJRF9TSElG VDsKIAkJfQogCX0gZWxzZSB7CiAJCWNiLT50dGJyWzBdID0gcGd0YmxfY2ZnLT5hcm1fbHBhZV9z Ml9jZmcudnR0YnI7CkBAIC03MjQsMTEgKzc5NCwxMyBAQCBzdGF0aWMgaW50IGFybV9zbW11X2lu aXRfZG9tYWluX2NvbnRleHQoc3RydWN0IGlvbW11X2RvbWFpbiAqZG9tYWluLAogewogCWludCBp cnEsIHN0YXJ0LCByZXQgPSAwOwogCXVuc2lnbmVkIGxvbmcgaWFzLCBvYXM7Ci0Jc3RydWN0IGlv X3BndGFibGVfb3BzICpwZ3RibF9vcHM7CisJc3RydWN0IGlvX3BndGFibGVfb3BzICpwZ3RibF9v cHNbMl07CiAJc3RydWN0IGlvX3BndGFibGVfY2ZnIHBndGJsX2NmZzsKIAllbnVtIGlvX3BndGFi bGVfZm10IGZtdDsKIAlzdHJ1Y3QgYXJtX3NtbXVfZG9tYWluICpzbW11X2RvbWFpbiA9IHRvX3Nt bXVfZG9tYWluKGRvbWFpbik7CiAJc3RydWN0IGFybV9zbW11X2NmZyAqY2ZnID0gJnNtbXVfZG9t YWluLT5jZmc7CisJYm9vbCBzcGxpdF90YWJsZXMgPQorCQkoc21tdV9kb21haW4tPmF0dHJpYnV0 ZXMgJiAoMSA8PCBET01BSU5fQVRUUl9TUExJVF9UQUJMRVMpKTsKIAogCW11dGV4X2xvY2soJnNt bXVfZG9tYWluLT5pbml0X211dGV4KTsKIAlpZiAoc21tdV9kb21haW4tPnNtbXUpCkBAIC03NTgs OCArODMwLDExIEBAIHN0YXRpYyBpbnQgYXJtX3NtbXVfaW5pdF9kb21haW5fY29udGV4dChzdHJ1 Y3QgaW9tbXVfZG9tYWluICpkb21haW4sCiAJICoKIAkgKiBOb3RlIHRoYXQgeW91IGNhbid0IGFj dHVhbGx5IHJlcXVlc3Qgc3RhZ2UtMiBtYXBwaW5ncy4KIAkgKi8KLQlpZiAoIShzbW11LT5mZWF0 dXJlcyAmIEFSTV9TTU1VX0ZFQVRfVFJBTlNfUzEpKQorCWlmICghKHNtbXUtPmZlYXR1cmVzICYg QVJNX1NNTVVfRkVBVF9UUkFOU19TMSkpIHsKIAkJc21tdV9kb21haW4tPnN0YWdlID0gQVJNX1NN TVVfRE9NQUlOX1MyOworCQkvKiBGSVhNRTogZmFpbCBpbnN0ZWFkPyAqLworCQlzcGxpdF90YWJs ZXMgPSBmYWxzZTsKKwl9CiAJaWYgKCEoc21tdS0+ZmVhdHVyZXMgJiBBUk1fU01NVV9GRUFUX1RS QU5TX1MyKSkKIAkJc21tdV9kb21haW4tPnN0YWdlID0gQVJNX1NNTVVfRE9NQUlOX1MxOwogCkBA IC03NzYsOCArODUxLDExIEBAIHN0YXRpYyBpbnQgYXJtX3NtbXVfaW5pdF9kb21haW5fY29udGV4 dChzdHJ1Y3QgaW9tbXVfZG9tYWluICpkb21haW4sCiAJaWYgKElTX0VOQUJMRUQoQ09ORklHX0lP TU1VX0lPX1BHVEFCTEVfQVJNVjdTKSAmJgogCSAgICAhSVNfRU5BQkxFRChDT05GSUdfNjRCSVQp ICYmICFJU19FTkFCTEVEKENPTkZJR19BUk1fTFBBRSkgJiYKIAkgICAgKHNtbXUtPmZlYXR1cmVz ICYgQVJNX1NNTVVfRkVBVF9GTVRfQUFSQ0gzMl9TKSAmJgotCSAgICAoc21tdV9kb21haW4tPnN0 YWdlID09IEFSTV9TTU1VX0RPTUFJTl9TMSkpCisJICAgIChzbW11X2RvbWFpbi0+c3RhZ2UgPT0g QVJNX1NNTVVfRE9NQUlOX1MxKSkgeworCQkvKiBGSVhNRTogZmFpbCBpbnN0ZWFkPyAqLworCQlz cGxpdF90YWJsZXMgPSBmYWxzZTsKIAkJY2ZnLT5mbXQgPSBBUk1fU01NVV9DVFhfRk1UX0FBUkNI MzJfUzsKKwl9CiAJaWYgKChJU19FTkFCTEVEKENPTkZJR182NEJJVCkgfHwgY2ZnLT5mbXQgPT0g QVJNX1NNTVVfQ1RYX0ZNVF9OT05FKSAmJgogCSAgICAoc21tdS0+ZmVhdHVyZXMgJiAoQVJNX1NN TVVfRkVBVF9GTVRfQUFSQ0g2NF82NEsgfAogCQkJICAgICAgIEFSTV9TTU1VX0ZFQVRfRk1UX0FB UkNINjRfMTZLIHwKQEAgLTg2NCw4ICs5NDIsOCBAQCBzdGF0aWMgaW50IGFybV9zbW11X2luaXRf ZG9tYWluX2NvbnRleHQoc3RydWN0IGlvbW11X2RvbWFpbiAqZG9tYWluLAogCQlwZ3RibF9jZmcu cXVpcmtzID0gSU9fUEdUQUJMRV9RVUlSS19OT19ETUE7CiAKIAlzbW11X2RvbWFpbi0+c21tdSA9 IHNtbXU7Ci0JcGd0Ymxfb3BzID0gYWxsb2NfaW9fcGd0YWJsZV9vcHMoZm10LCAmcGd0YmxfY2Zn LCBzbW11X2RvbWFpbik7Ci0JaWYgKCFwZ3RibF9vcHMpIHsKKwlwZ3RibF9vcHNbMF0gPSBhbGxv Y19pb19wZ3RhYmxlX29wcyhmbXQsICZwZ3RibF9jZmcsIHNtbXVfZG9tYWluKTsKKwlpZiAoIXBn dGJsX29wc1swXSkgewogCQlyZXQgPSAtRU5PTUVNOwogCQlnb3RvIG91dF9jbGVhcl9zbW11Owog CX0KQEAgLTg3Nyw2ICs5NTUsMjIgQEAgc3RhdGljIGludCBhcm1fc21tdV9pbml0X2RvbWFpbl9j b250ZXh0KHN0cnVjdCBpb21tdV9kb21haW4gKmRvbWFpbiwKIAogCS8qIEluaXRpYWxpc2UgdGhl IGNvbnRleHQgYmFuayB3aXRoIG91ciBwYWdlIHRhYmxlIGNmZyAqLwogCWFybV9zbW11X2luaXRf Y29udGV4dF9iYW5rKHNtbXVfZG9tYWluLCAmcGd0YmxfY2ZnKTsKKworCXBndGJsX29wc1sxXSA9 IE5VTEw7CisKKwlpZiAoc3BsaXRfdGFibGVzKSB7CisJCS8qIEZJWE1FOiBJIHRoaW5rIGl0IGlz IHNhZmUgdG8gcmV1c2UgcGd0YmxfY2ZnIGhlcmUgKi8KKwkJcGd0Ymxfb3BzWzFdID0gYWxsb2Nf aW9fcGd0YWJsZV9vcHMoZm10LCAmcGd0YmxfY2ZnLAorCQkJc21tdV9kb21haW4pOworCQlpZiAo IXBndGJsX29wc1sxXSkgeworCQkJZnJlZV9pb19wZ3RhYmxlX29wcyhwZ3RibF9vcHNbMF0pOwor CQkJcmV0ID0gLUVOT01FTTsKKwkJCWdvdG8gb3V0X2NsZWFyX3NtbXU7CisJCX0KKworCQlhcm1f c21tdV9pbml0X3R0YnIxKHNtbXVfZG9tYWluLCAmcGd0YmxfY2ZnKTsKKwl9CisKIAlhcm1fc21t dV93cml0ZV9jb250ZXh0X2Jhbmsoc21tdSwgY2ZnLT5jYm5keCk7CiAKIAkvKgpAQCAtODk1LDcg Kzk4OSw5IEBAIHN0YXRpYyBpbnQgYXJtX3NtbXVfaW5pdF9kb21haW5fY29udGV4dChzdHJ1Y3Qg aW9tbXVfZG9tYWluICpkb21haW4sCiAJbXV0ZXhfdW5sb2NrKCZzbW11X2RvbWFpbi0+aW5pdF9t dXRleCk7CiAKIAkvKiBQdWJsaXNoIHBhZ2UgdGFibGUgb3BzIGZvciBtYXAvdW5tYXAgKi8KLQlz bW11X2RvbWFpbi0+cGd0Ymxfb3BzID0gcGd0Ymxfb3BzOworCXNtbXVfZG9tYWluLT5wZ3RibF9v cHNbMF0gPSBwZ3RibF9vcHNbMF07CisJc21tdV9kb21haW4tPnBndGJsX29wc1sxXSA9IHBndGJs X29wc1sxXTsKKwogCXJldHVybiAwOwogCiBvdXRfY2xlYXJfc21tdToKQEAgLTkyNyw3ICsxMDIz LDkgQEAgc3RhdGljIHZvaWQgYXJtX3NtbXVfZGVzdHJveV9kb21haW5fY29udGV4dChzdHJ1Y3Qg aW9tbXVfZG9tYWluICpkb21haW4pCiAJCWRldm1fZnJlZV9pcnEoc21tdS0+ZGV2LCBpcnEsIGRv bWFpbik7CiAJfQogCi0JZnJlZV9pb19wZ3RhYmxlX29wcyhzbW11X2RvbWFpbi0+cGd0Ymxfb3Bz KTsKKwlmcmVlX2lvX3BndGFibGVfb3BzKHNtbXVfZG9tYWluLT5wZ3RibF9vcHNbMF0pOworCWZy ZWVfaW9fcGd0YWJsZV9vcHMoc21tdV9kb21haW4tPnBndGJsX29wc1sxXSk7CisKIAlfX2FybV9z bW11X2ZyZWVfYml0bWFwKHNtbXUtPmNvbnRleHRfbWFwLCBjZmctPmNibmR4KTsKIH0KIApAQCAt MTIzMCwxMCArMTMyOCwyMyBAQCBzdGF0aWMgaW50IGFybV9zbW11X2F0dGFjaF9kZXYoc3RydWN0 IGlvbW11X2RvbWFpbiAqZG9tYWluLCBzdHJ1Y3QgZGV2aWNlICpkZXYpCiAJcmV0dXJuIGFybV9z bW11X2RvbWFpbl9hZGRfbWFzdGVyKHNtbXVfZG9tYWluLCBmd3NwZWMpOwogfQogCitzdGF0aWMg c3RydWN0IGlvX3BndGFibGVfb3BzICoKK2FybV9zbW11X2dldF9wZ3RibF9vcHMoc3RydWN0IGlv bW11X2RvbWFpbiAqZG9tYWluLCB1bnNpZ25lZCBsb25nIGlvdmEpCit7CisJc3RydWN0IGFybV9z bW11X2RvbWFpbiAqc21tdV9kb21haW4gPSB0b19zbW11X2RvbWFpbihkb21haW4pOworCXN0cnVj dCBhcm1fc21tdV9jZmcgKmNmZyA9ICZzbW11X2RvbWFpbi0+Y2ZnOworCXN0cnVjdCBhcm1fc21t dV9jYiAqY2IgPSAmc21tdV9kb21haW4tPnNtbXUtPmNic1tjZmctPmNibmR4XTsKKworCWlmIChp b3ZhICYgY2ItPnNwbGl0X3RhYmxlX21hc2spCisJCXJldHVybiBzbW11X2RvbWFpbi0+cGd0Ymxf b3BzWzFdOworCisJcmV0dXJuIHNtbXVfZG9tYWluLT5wZ3RibF9vcHNbMF07Cit9CisKIHN0YXRp YyBpbnQgYXJtX3NtbXVfbWFwKHN0cnVjdCBpb21tdV9kb21haW4gKmRvbWFpbiwgdW5zaWduZWQg bG9uZyBpb3ZhLAogCQkJcGh5c19hZGRyX3QgcGFkZHIsIHNpemVfdCBzaXplLCBpbnQgcHJvdCkK IHsKLQlzdHJ1Y3QgaW9fcGd0YWJsZV9vcHMgKm9wcyA9IHRvX3NtbXVfZG9tYWluKGRvbWFpbikt PnBndGJsX29wczsKKwlzdHJ1Y3QgaW9fcGd0YWJsZV9vcHMgKm9wcyA9IGFybV9zbW11X2dldF9w Z3RibF9vcHMoZG9tYWluLCBpb3ZhKTsKIAogCWlmICghb3BzKQogCQlyZXR1cm4gLUVOT0RFVjsK QEAgLTEyNDQsNyArMTM1NSw3IEBAIHN0YXRpYyBpbnQgYXJtX3NtbXVfbWFwKHN0cnVjdCBpb21t dV9kb21haW4gKmRvbWFpbiwgdW5zaWduZWQgbG9uZyBpb3ZhLAogc3RhdGljIHNpemVfdCBhcm1f c21tdV91bm1hcChzdHJ1Y3QgaW9tbXVfZG9tYWluICpkb21haW4sIHVuc2lnbmVkIGxvbmcgaW92 YSwKIAkJCSAgICAgc2l6ZV90IHNpemUpCiB7Ci0Jc3RydWN0IGlvX3BndGFibGVfb3BzICpvcHMg PSB0b19zbW11X2RvbWFpbihkb21haW4pLT5wZ3RibF9vcHM7CisJc3RydWN0IGlvX3BndGFibGVf b3BzICpvcHMgPSBhcm1fc21tdV9nZXRfcGd0Ymxfb3BzKGRvbWFpbiwgaW92YSk7CiAKIAlpZiAo IW9wcykKIAkJcmV0dXJuIDA7CkBAIC0xMjY2LDcgKzEzNzcsNyBAQCBzdGF0aWMgcGh5c19hZGRy X3QgYXJtX3NtbXVfaW92YV90b19waHlzX2hhcmQoc3RydWN0IGlvbW11X2RvbWFpbiAqZG9tYWlu LAogCXN0cnVjdCBhcm1fc21tdV9kb21haW4gKnNtbXVfZG9tYWluID0gdG9fc21tdV9kb21haW4o ZG9tYWluKTsKIAlzdHJ1Y3QgYXJtX3NtbXVfZGV2aWNlICpzbW11ID0gc21tdV9kb21haW4tPnNt bXU7CiAJc3RydWN0IGFybV9zbW11X2NmZyAqY2ZnID0gJnNtbXVfZG9tYWluLT5jZmc7Ci0Jc3Ry dWN0IGlvX3BndGFibGVfb3BzICpvcHM9IHNtbXVfZG9tYWluLT5wZ3RibF9vcHM7CisJc3RydWN0 IGlvX3BndGFibGVfb3BzICpvcHMgPSBhcm1fc21tdV9nZXRfcGd0Ymxfb3BzKGRvbWFpbiwgaW92 YSk7CiAJc3RydWN0IGRldmljZSAqZGV2ID0gc21tdS0+ZGV2OwogCXZvaWQgX19pb21lbSAqY2Jf YmFzZTsKIAl1MzIgdG1wOwpAQCAtMTMwNyw3ICsxNDE4LDcgQEAgc3RhdGljIHBoeXNfYWRkcl90 IGFybV9zbW11X2lvdmFfdG9fcGh5cyhzdHJ1Y3QgaW9tbXVfZG9tYWluICpkb21haW4sCiAJCQkJ CWRtYV9hZGRyX3QgaW92YSkKIHsKIAlzdHJ1Y3QgYXJtX3NtbXVfZG9tYWluICpzbW11X2RvbWFp biA9IHRvX3NtbXVfZG9tYWluKGRvbWFpbik7Ci0Jc3RydWN0IGlvX3BndGFibGVfb3BzICpvcHMg PSBzbW11X2RvbWFpbi0+cGd0Ymxfb3BzOworCXN0cnVjdCBpb19wZ3RhYmxlX29wcyAqb3BzID0g YXJtX3NtbXVfZ2V0X3BndGJsX29wcyhkb21haW4sIGlvdmEpOwogCiAJaWYgKGRvbWFpbi0+dHlw ZSA9PSBJT01NVV9ET01BSU5fSURFTlRJVFkpCiAJCXJldHVybiBpb3ZhOwpAQCAtMTQ3Nyw2ICsx NTg4LDEwIEBAIHN0YXRpYyBpbnQgYXJtX3NtbXVfZG9tYWluX2dldF9hdHRyKHN0cnVjdCBpb21t dV9kb21haW4gKmRvbWFpbiwKIAljYXNlIERPTUFJTl9BVFRSX05FU1RJTkc6CiAJCSooaW50ICop ZGF0YSA9IChzbW11X2RvbWFpbi0+c3RhZ2UgPT0gQVJNX1NNTVVfRE9NQUlOX05FU1RFRCk7CiAJ CXJldHVybiAwOworCWNhc2UgRE9NQUlOX0FUVFJfU1BMSVRfVEFCTEVTOgorCQkqKChpbnQgKilk YXRhKSA9ICEhKHNtbXVfZG9tYWluLT5hdHRyaWJ1dGVzCisJCQkJCSYgKDEgPDwgRE9NQUlOX0FU VFJfU1BMSVRfVEFCTEVTKSk7CisJCXJldHVybiAwOwogCWRlZmF1bHQ6CiAJCXJldHVybiAtRU5P REVWOwogCX0KQEAgLTE1MDYsNiArMTYyMSwxMSBAQCBzdGF0aWMgaW50IGFybV9zbW11X2RvbWFp bl9zZXRfYXR0cihzdHJ1Y3QgaW9tbXVfZG9tYWluICpkb21haW4sCiAJCQlzbW11X2RvbWFpbi0+ c3RhZ2UgPSBBUk1fU01NVV9ET01BSU5fUzE7CiAKIAkJYnJlYWs7CisJY2FzZSBET01BSU5fQVRU Ul9TUExJVF9UQUJMRVM6CisJCWlmICgqKChpbnQgKilkYXRhKSkKKwkJCXNtbXVfZG9tYWluLT5h dHRyaWJ1dGVzIHw9CisJCQkJMSA8PCBET01BSU5fQVRUUl9TUExJVF9UQUJMRVM7CisJCWJyZWFr OwogCWRlZmF1bHQ6CiAJCXJldCA9IC1FTk9ERVY7CiAJfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9p b21tdS9pby1wZ3RhYmxlLWFybS5jIGIvZHJpdmVycy9pb21tdS9pby1wZ3RhYmxlLWFybS5jCmlu ZGV4IGZlODUxZWFlOTA1Ny4uOTIwZDlmYWEyYTc2IDEwMDY0NAotLS0gYS9kcml2ZXJzL2lvbW11 L2lvLXBndGFibGUtYXJtLmMKKysrIGIvZHJpdmVycy9pb21tdS9pby1wZ3RhYmxlLWFybS5jCkBA IC00MjIsOCArNDIyLDcgQEAgc3RhdGljIGludCBhcm1fbHBhZV9tYXAoc3RydWN0IGlvX3BndGFi bGVfb3BzICpvcHMsIHVuc2lnbmVkIGxvbmcgaW92YSwKIAlpZiAoIShpb21tdV9wcm90ICYgKElP TU1VX1JFQUQgfCBJT01NVV9XUklURSkpKQogCQlyZXR1cm4gMDsKIAotCWlmIChXQVJOX09OKGlv dmEgPj0gKDFVTEwgPDwgZGF0YS0+aW9wLmNmZy5pYXMpIHx8Ci0JCSAgICBwYWRkciA+PSAoMVVM TCA8PCBkYXRhLT5pb3AuY2ZnLm9hcykpKQorCWlmIChXQVJOX09OKHBhZGRyID49ICgxVUxMIDw8 IGRhdGEtPmlvcC5jZmcub2FzKSkpCiAJCXJldHVybiAtRVJBTkdFOwogCiAJcHJvdCA9IGFybV9s cGFlX3Byb3RfdG9fcHRlKGRhdGEsIGlvbW11X3Byb3QpOwotLSAKMi4xNy4wCgpfX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpGcmVlZHJlbm8gbWFpbGluZyBs aXN0CkZyZWVkcmVub0BsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVz a3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9mcmVlZHJlbm8K