From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jordan Crouse Subject: [PATCH 02/14] iommu/arm-smmu: Add support for TTBR1 Date: Wed, 21 Feb 2018 15:59:12 -0700 Message-ID: <20180221225924.30737-3-jcrouse@codeaurora.org> References: <20180221225924.30737-1-jcrouse@codeaurora.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20180221225924.30737-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: iommu@lists.linux-foundation.org QWxsb3cgYSBTTU1VIGRldmljZSB0byBvcHQgaW50byBhbGxvY2F0aW5nIGEgVFRCUjEgcGFnZXRh YmxlLgoKVGhlIHNpemUgb2YgdGhlIFRUQlIxIHJlZ2lvbiB3aWxsIGJlIHRoZSBzYW1lIGFzCnRo ZSBUVEJSMCBzaXplIHdpdGggdGhlIHNpZ24gZXh0ZW5zaW9uIGJpdCBzZXQgb24gdGhlIGhpZ2hl c3QKYml0IGluIHRoZSByZWdpb24gdW5sZXNzIHRoZSB1cHN0cmVhbSBzaXplIGlzIDQ5IGJpdHMg YW5kIHRoZW4KdGhlIHNpZ24tZXh0ZW5zaW9uIGJpdCB3aWxsIGJlIHNldCBvbiB0aGUgNDl0aCBi aXQuCgpUaGUgbWFwL3VubWFwIG9wZXJhdGlvbnMgd2lsbCBhdXRvbWF0aWNhbGx5IHVzZSB0aGUg YXBwcm9wcmlhdGUKcGFnZXRhYmxlIGJhc2VkIG9uIHRoZSBzcGVjaWZpZWQgaW92YSBhbmQgdGhl IGV4aXN0aW5nIG1hc2suCgpTaWduZWQtb2ZmLWJ5OiBKb3JkYW4gQ3JvdXNlIDxqY3JvdXNlQGNv ZGVhdXJvcmEub3JnPgotLS0KIGRyaXZlcnMvaW9tbXUvYXJtLXNtbXUtcmVncy5oICB8ICAgMiAt CiBkcml2ZXJzL2lvbW11L2FybS1zbW11LmMgICAgICAgfCAgMjIgKysrKy0tCiBkcml2ZXJzL2lv bW11L2lvLXBndGFibGUtYXJtLmMgfCAxNjAgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrLS0tLS0KIGRyaXZlcnMvaW9tbXUvaW8tcGd0YWJsZS1hcm0uaCB8ICAyMCArKysrKysK IGRyaXZlcnMvaW9tbXUvaW8tcGd0YWJsZS5oICAgICB8ICAxNiArKysrLQogNSBmaWxlcyBjaGFu Z2VkLCAxOTIgaW5zZXJ0aW9ucygrKSwgMjggZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJp dmVycy9pb21tdS9hcm0tc21tdS1yZWdzLmggYi9kcml2ZXJzL2lvbW11L2FybS1zbW11LXJlZ3Mu aAppbmRleCBhMTIyNmU0YWI1ZjguLjBjZTg1ZDViMjJlOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9p b21tdS9hcm0tc21tdS1yZWdzLmgKKysrIGIvZHJpdmVycy9pb21tdS9hcm0tc21tdS1yZWdzLmgK QEAgLTE5Myw4ICsxOTMsNiBAQCBlbnVtIGFybV9zbW11X3MyY3JfcHJpdmNmZyB7CiAjZGVmaW5l IFJFU1VNRV9SRVRSWQkJCSgwIDw8IDApCiAjZGVmaW5lIFJFU1VNRV9URVJNSU5BVEUJCSgxIDw8 IDApCiAKLSNkZWZpbmUgVFRCQ1IyX1NFUF9TSElGVAkJMTUKLSNkZWZpbmUgVFRCQ1IyX1NFUF9V UFNUUkVBTQkJKDB4NyA8PCBUVEJDUjJfU0VQX1NISUZUKQogI2RlZmluZSBUVEJDUjJfQVMJCQko MSA8PCA0KQogCiAjZGVmaW5lIFRUQlJuX0FTSURfU0hJRlQJCTQ4CmRpZmYgLS1naXQgYS9kcml2 ZXJzL2lvbW11L2FybS1zbW11LmMgYi9kcml2ZXJzL2lvbW11L2FybS1zbW11LmMKaW5kZXggNjll N2M2MDc5MmE4Li5lYmZhNTliNTk2MjIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaW9tbXUvYXJtLXNt bXUuYworKysgYi9kcml2ZXJzL2lvbW11L2FybS1zbW11LmMKQEAgLTI0OCw2ICsyNDgsNyBAQCBz dHJ1Y3QgYXJtX3NtbXVfZG9tYWluIHsKIAllbnVtIGFybV9zbW11X2RvbWFpbl9zdGFnZQlzdGFn ZTsKIAlzdHJ1Y3QgbXV0ZXgJCQlpbml0X211dGV4OyAvKiBQcm90ZWN0cyBzbW11IHBvaW50ZXIg Ki8KIAlzcGlubG9ja190CQkJY2JfbG9jazsgLyogU2VyaWFsaXNlcyBBVFMxKiBvcHMgYW5kIFRM QiBzeW5jcyAqLworCXUzMiBhdHRyaWJ1dGVzOwogCXN0cnVjdCBpb21tdV9kb21haW4JCWRvbWFp bjsKIH07CiAKQEAgLTU5OCw3ICs1OTksNiBAQCBzdGF0aWMgdm9pZCBhcm1fc21tdV9pbml0X2Nv bnRleHRfYmFuayhzdHJ1Y3QgYXJtX3NtbXVfZG9tYWluICpzbW11X2RvbWFpbiwKIAkJfSBlbHNl IHsKIAkJCWNiLT50Y3JbMF0gPSBwZ3RibF9jZmctPmFybV9scGFlX3MxX2NmZy50Y3I7CiAJCQlj Yi0+dGNyWzFdID0gcGd0YmxfY2ZnLT5hcm1fbHBhZV9zMV9jZmcudGNyID4+IDMyOwotCQkJY2It PnRjclsxXSB8PSBUVEJDUjJfU0VQX1VQU1RSRUFNOwogCQkJaWYgKGNmZy0+Zm10ID09IEFSTV9T TU1VX0NUWF9GTVRfQUFSQ0g2NCkKIAkJCQljYi0+dGNyWzFdIHw9IFRUQkNSMl9BUzsKIAkJfQpA QCAtNzI5LDYgKzcyOSw5IEBAIHN0YXRpYyBpbnQgYXJtX3NtbXVfaW5pdF9kb21haW5fY29udGV4 dChzdHJ1Y3QgaW9tbXVfZG9tYWluICpkb21haW4sCiAJZW51bSBpb19wZ3RhYmxlX2ZtdCBmbXQ7 CiAJc3RydWN0IGFybV9zbW11X2RvbWFpbiAqc21tdV9kb21haW4gPSB0b19zbW11X2RvbWFpbihk b21haW4pOwogCXN0cnVjdCBhcm1fc21tdV9jZmcgKmNmZyA9ICZzbW11X2RvbWFpbi0+Y2ZnOwor CXVuc2lnbmVkIGludCBxdWlya3MgPQorCQlzbW11X2RvbWFpbi0+YXR0cmlidXRlcyAmICgxIDw8 IERPTUFJTl9BVFRSX0VOQUJMRV9UVEJSMSkgPworCQkJSU9fUEdUQUJMRV9RVUlSS19BUk1fVFRC UjEgOiAwOwogCiAJbXV0ZXhfbG9jaygmc21tdV9kb21haW4tPmluaXRfbXV0ZXgpOwogCWlmIChz bW11X2RvbWFpbi0+c21tdSkKQEAgLTg1Miw3ICs4NTUsMTEgQEAgc3RhdGljIGludCBhcm1fc21t dV9pbml0X2RvbWFpbl9jb250ZXh0KHN0cnVjdCBpb21tdV9kb21haW4gKmRvbWFpbiwKIAllbHNl CiAJCWNmZy0+YXNpZCA9IGNmZy0+Y2JuZHggKyBzbW11LT5jYXZpdW1faWRfYmFzZTsKIAorCWlm IChzbW11LT5mZWF0dXJlcyAmIEFSTV9TTU1VX0ZFQVRfQ09IRVJFTlRfV0FMSykKKwkJcXVpcmtz IHw9IElPX1BHVEFCTEVfUVVJUktfTk9fRE1BOworCiAJcGd0YmxfY2ZnID0gKHN0cnVjdCBpb19w Z3RhYmxlX2NmZykgeworCQkucXVpcmtzCQk9IHF1aXJrcywKIAkJLnBnc2l6ZV9iaXRtYXAJPSBz bW11LT5wZ3NpemVfYml0bWFwLAogCQkuaWFzCQk9IGlhcywKIAkJLm9hcwkJPSBvYXMsCkBAIC04 NjAsOSArODY3LDYgQEAgc3RhdGljIGludCBhcm1fc21tdV9pbml0X2RvbWFpbl9jb250ZXh0KHN0 cnVjdCBpb21tdV9kb21haW4gKmRvbWFpbiwKIAkJLmlvbW11X2Rldgk9IHNtbXUtPmRldiwKIAl9 OwogCi0JaWYgKHNtbXUtPmZlYXR1cmVzICYgQVJNX1NNTVVfRkVBVF9DT0hFUkVOVF9XQUxLKQot CQlwZ3RibF9jZmcucXVpcmtzID0gSU9fUEdUQUJMRV9RVUlSS19OT19ETUE7Ci0KIAlzbW11X2Rv bWFpbi0+c21tdSA9IHNtbXU7CiAJcGd0Ymxfb3BzID0gYWxsb2NfaW9fcGd0YWJsZV9vcHMoZm10 LCAmcGd0YmxfY2ZnLCBzbW11X2RvbWFpbik7CiAJaWYgKCFwZ3RibF9vcHMpIHsKQEAgLTE0Nzcs NiArMTQ4MSwxMCBAQCBzdGF0aWMgaW50IGFybV9zbW11X2RvbWFpbl9nZXRfYXR0cihzdHJ1Y3Qg aW9tbXVfZG9tYWluICpkb21haW4sCiAJY2FzZSBET01BSU5fQVRUUl9ORVNUSU5HOgogCQkqKGlu dCAqKWRhdGEgPSAoc21tdV9kb21haW4tPnN0YWdlID09IEFSTV9TTU1VX0RPTUFJTl9ORVNURUQp OwogCQlyZXR1cm4gMDsKKwljYXNlIERPTUFJTl9BVFRSX0VOQUJMRV9UVEJSMToKKwkJKigoaW50 ICopZGF0YSkgPSAhIShzbW11X2RvbWFpbi0+YXR0cmlidXRlcworCQkJCQkmICgxIDw8IERPTUFJ Tl9BVFRSX0VOQUJMRV9UVEJSMSkpOworCQlyZXR1cm4gMDsKIAlkZWZhdWx0OgogCQlyZXR1cm4g LUVOT0RFVjsKIAl9CkBAIC0xNTA1LDYgKzE1MTMsMTIgQEAgc3RhdGljIGludCBhcm1fc21tdV9k b21haW5fc2V0X2F0dHIoc3RydWN0IGlvbW11X2RvbWFpbiAqZG9tYWluLAogCQllbHNlCiAJCQlz bW11X2RvbWFpbi0+c3RhZ2UgPSBBUk1fU01NVV9ET01BSU5fUzE7CiAKKwkJYnJlYWs7CisJY2Fz ZSBET01BSU5fQVRUUl9FTkFCTEVfVFRCUjE6CisJCWlmICgqKChpbnQgKilkYXRhKSkKKwkJCXNt bXVfZG9tYWluLT5hdHRyaWJ1dGVzIHw9CisJCQkJMSA8PCBET01BSU5fQVRUUl9FTkFCTEVfVFRC UjE7CisJCXJldCA9IDA7CiAJCWJyZWFrOwogCWRlZmF1bHQ6CiAJCXJldCA9IC1FTk9ERVY7CmRp ZmYgLS1naXQgYS9kcml2ZXJzL2lvbW11L2lvLXBndGFibGUtYXJtLmMgYi9kcml2ZXJzL2lvbW11 L2lvLXBndGFibGUtYXJtLmMKaW5kZXggZmZmMGI2YmEwYTY5Li4xYmQwMDQ1ZjJjYjcgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvaW9tbXUvaW8tcGd0YWJsZS1hcm0uYworKysgYi9kcml2ZXJzL2lvbW11 L2lvLXBndGFibGUtYXJtLmMKQEAgLTE1Miw3ICsxNTIsNyBAQCBzdHJ1Y3QgYXJtX2xwYWVfaW9f cGd0YWJsZSB7CiAJdW5zaWduZWQgbG9uZwkJcGdfc2hpZnQ7CiAJdW5zaWduZWQgbG9uZwkJYml0 c19wZXJfbGV2ZWw7CiAKLQl2b2lkCQkJKnBnZDsKKwl2b2lkCQkJKnBnZFsyXTsKIH07CiAKIHR5 cGVkZWYgdTY0IGFybV9scGFlX2lvcHRlOwpAQCAtMzk0LDIwICszOTQsNDggQEAgc3RhdGljIGFy bV9scGFlX2lvcHRlIGFybV9scGFlX3Byb3RfdG9fcHRlKHN0cnVjdCBhcm1fbHBhZV9pb19wZ3Rh YmxlICpkYXRhLAogCXJldHVybiBwdGU7CiB9CiAKK3N0YXRpYyBpbmxpbmUgYXJtX2xwYWVfaW9w dGUgKgorYXJtX2xwYWVfZ2V0X3RhYmxlKHN0cnVjdCBhcm1fbHBhZV9pb19wZ3RhYmxlICpkYXRh LCB1bnNpZ25lZCBsb25nIGlvdmEpCit7CisJc3RydWN0IGlvX3BndGFibGVfY2ZnICpjZmcgPSAm ZGF0YS0+aW9wLmNmZzsKKworCWlmIChjZmctPnF1aXJrcyAmIElPX1BHVEFCTEVfUVVJUktfQVJN X1RUQlIxKSAgeworCQl1bnNpZ25lZCBsb25nIG1hc2s7CisKKwkJLyoKKwkJICogaWYgaWFzIGlz IDQ4IGl0IHJlYWxseSBtZWFucyB0aGF0IGJpdCA0OCBpcyB0aGUgc2lnbgorCQkgKiBleHRlbnNp b24gYml0LCBvdGhlcndpc2UgdGhlIHNpZ24gZXh0ZW5zaW9uIGJpdCBpcyBpYXMgLSAxCisJCSAq IChmb3IgZXhhbXBsZSwgYml0IDMxIGZvciBpYXMgMzIpCisJCSAqLworCQltYXNrID0gKGNmZy0+ aWFzID09IDQ4KSA/ICgxVUwgPDwgNDgpIDoKKwkJCSgxVUwgPDwgKGNmZy0+aWFzIC0gMSkpOwor CisJCWlmIChpb3ZhICYgbWFzaykKKwkJCXJldHVybiBkYXRhLT5wZ2RbMV07CisJfQorCisJcmV0 dXJuIGRhdGEtPnBnZFswXTsKK30KKwogc3RhdGljIGludCBhcm1fbHBhZV9tYXAoc3RydWN0IGlv X3BndGFibGVfb3BzICpvcHMsIHVuc2lnbmVkIGxvbmcgaW92YSwKIAkJCXBoeXNfYWRkcl90IHBh ZGRyLCBzaXplX3Qgc2l6ZSwgaW50IGlvbW11X3Byb3QpCiB7CiAJc3RydWN0IGFybV9scGFlX2lv X3BndGFibGUgKmRhdGEgPSBpb19wZ3RhYmxlX29wc190b19kYXRhKG9wcyk7Ci0JYXJtX2xwYWVf aW9wdGUgKnB0ZXAgPSBkYXRhLT5wZ2Q7CisJYXJtX2xwYWVfaW9wdGUgKnB0ZXA7CiAJaW50IHJl dCwgbHZsID0gQVJNX0xQQUVfU1RBUlRfTFZMKGRhdGEpOwogCWFybV9scGFlX2lvcHRlIHByb3Q7 CiAKKwlwdGVwID0gYXJtX2xwYWVfZ2V0X3RhYmxlKGRhdGEsIGlvdmEpOworCiAJLyogSWYgbm8g YWNjZXNzLCB0aGVuIG5vdGhpbmcgdG8gZG8gKi8KIAlpZiAoIShpb21tdV9wcm90ICYgKElPTU1V X1JFQUQgfCBJT01NVV9XUklURSkpKQogCQlyZXR1cm4gMDsKIAotCWlmIChXQVJOX09OKGlvdmEg Pj0gKDFVTEwgPDwgZGF0YS0+aW9wLmNmZy5pYXMpIHx8Ci0JCSAgICBwYWRkciA+PSAoMVVMTCA8 PCBkYXRhLT5pb3AuY2ZnLm9hcykpKQorCWlmIChXQVJOX09OKHBhZGRyID49ICgxVUxMIDw8IGRh dGEtPmlvcC5jZmcub2FzKSkpCisJCXJldHVybiAtRVJBTkdFOworCisJaWYgKFdBUk5fT04oIShk YXRhLT5pb3AuY2ZnLnF1aXJrcyAmIElPX1BHVEFCTEVfUVVJUktfQVJNX1RUQlIxKSAmJgorCQkg ICAgaW92YSA+PSAoMVVMTCA8PCBkYXRhLT5pb3AuY2ZnLmlhcykpKQogCQlyZXR1cm4gLUVSQU5H RTsKIAogCXByb3QgPSBhcm1fbHBhZV9wcm90X3RvX3B0ZShkYXRhLCBpb21tdV9wcm90KTsKQEAg LTQ1Niw3ICs0ODQsMTAgQEAgc3RhdGljIHZvaWQgYXJtX2xwYWVfZnJlZV9wZ3RhYmxlKHN0cnVj dCBpb19wZ3RhYmxlICppb3ApCiB7CiAJc3RydWN0IGFybV9scGFlX2lvX3BndGFibGUgKmRhdGEg PSBpb19wZ3RhYmxlX3RvX2RhdGEoaW9wKTsKIAotCV9fYXJtX2xwYWVfZnJlZV9wZ3RhYmxlKGRh dGEsIEFSTV9MUEFFX1NUQVJUX0xWTChkYXRhKSwgZGF0YS0+cGdkKTsKKwlfX2FybV9scGFlX2Zy ZWVfcGd0YWJsZShkYXRhLCBBUk1fTFBBRV9TVEFSVF9MVkwoZGF0YSksIGRhdGEtPnBnZFswXSk7 CisJaWYgKGRhdGEtPnBnZFsxXSkKKwkJX19hcm1fbHBhZV9mcmVlX3BndGFibGUoZGF0YSwgQVJN X0xQQUVfU1RBUlRfTFZMKGRhdGEpLAorCQkJZGF0YS0+cGdkWzFdKTsKIAlrZnJlZShkYXRhKTsK IH0KIApAQCAtNTY0LDEwICs1OTUsMTMgQEAgc3RhdGljIGludCBhcm1fbHBhZV91bm1hcChzdHJ1 Y3QgaW9fcGd0YWJsZV9vcHMgKm9wcywgdW5zaWduZWQgbG9uZyBpb3ZhLAogCQkJICBzaXplX3Qg c2l6ZSkKIHsKIAlzdHJ1Y3QgYXJtX2xwYWVfaW9fcGd0YWJsZSAqZGF0YSA9IGlvX3BndGFibGVf b3BzX3RvX2RhdGEob3BzKTsKLQlhcm1fbHBhZV9pb3B0ZSAqcHRlcCA9IGRhdGEtPnBnZDsKKwlh cm1fbHBhZV9pb3B0ZSAqcHRlcDsKIAlpbnQgbHZsID0gQVJNX0xQQUVfU1RBUlRfTFZMKGRhdGEp OwogCi0JaWYgKFdBUk5fT04oaW92YSA+PSAoMVVMTCA8PCBkYXRhLT5pb3AuY2ZnLmlhcykpKQor CXB0ZXAgPSBhcm1fbHBhZV9nZXRfdGFibGUoZGF0YSwgaW92YSk7CisKKwlpZiAoV0FSTl9PTigh KGRhdGEtPmlvcC5jZmcucXVpcmtzICYgSU9fUEdUQUJMRV9RVUlSS19BUk1fVFRCUjEpICYmCisJ CSAgICBpb3ZhID49ICgxVUxMIDw8IGRhdGEtPmlvcC5jZmcuaWFzKSkpCiAJCXJldHVybiAwOwog CiAJcmV0dXJuIF9fYXJtX2xwYWVfdW5tYXAoZGF0YSwgaW92YSwgc2l6ZSwgbHZsLCBwdGVwKTsK QEAgLTU3Nyw5ICs2MTEsMTEgQEAgc3RhdGljIHBoeXNfYWRkcl90IGFybV9scGFlX2lvdmFfdG9f cGh5cyhzdHJ1Y3QgaW9fcGd0YWJsZV9vcHMgKm9wcywKIAkJCQkJIHVuc2lnbmVkIGxvbmcgaW92 YSkKIHsKIAlzdHJ1Y3QgYXJtX2xwYWVfaW9fcGd0YWJsZSAqZGF0YSA9IGlvX3BndGFibGVfb3Bz X3RvX2RhdGEob3BzKTsKLQlhcm1fbHBhZV9pb3B0ZSBwdGUsICpwdGVwID0gZGF0YS0+cGdkOwor CWFybV9scGFlX2lvcHRlIHB0ZSwgKnB0ZXA7CiAJaW50IGx2bCA9IEFSTV9MUEFFX1NUQVJUX0xW TChkYXRhKTsKIAorCXB0ZXAgPSBhcm1fbHBhZV9nZXRfdGFibGUoZGF0YSwgaW92YSk7CisKIAlk byB7CiAJCS8qIFZhbGlkIElPUFRFIHBvaW50ZXI/ICovCiAJCWlmICghcHRlcCkKQEAgLTY4OSwx MyArNzI1LDgyIEBAIGFybV9scGFlX2FsbG9jX3BndGFibGUoc3RydWN0IGlvX3BndGFibGVfY2Zn ICpjZmcpCiAJcmV0dXJuIGRhdGE7CiB9CiAKK3N0YXRpYyB1NjQgYXJtXzY0X2xwYWVfc2V0dXBf dHRicjEoc3RydWN0IGlvX3BndGFibGVfY2ZnICpjZmcsCisJCXN0cnVjdCBhcm1fbHBhZV9pb19w Z3RhYmxlICpkYXRhKQorCit7CisJdTY0IHJlZzsKKworCS8qIElmIFRUQlIxIGlzIGRpc2FibGVk LCBkaXNhYmxlIHNwZWN1bGF0aXZlIHdhbGtzIHRocm91Z2ggdGhlIFRUQlIxICovCisJaWYgKCEo Y2ZnLT5xdWlya3MgJiBJT19QR1RBQkxFX1FVSVJLX0FSTV9UVEJSMSkpIHsKKwkJcmVnID0gQVJN X0xQQUVfVENSX0VQRDE7CisJCXJlZyB8PSAoQVJNX0xQQUVfVENSX1NFUF9VUFNUUkVBTSA8PCBB Uk1fTFBBRV9UQ1JfU0VQX1NISUZUKTsKKwkJcmV0dXJuIHJlZzsKKwl9CisKKwlyZWcgPSAoQVJN X0xQQUVfVENSX1NIX0lTIDw8IEFSTV9MUEFFX1RDUl9TSDFfU0hJRlQpIHwKKwkgICAgICAoQVJN X0xQQUVfVENSX1JHTl9XQldBIDw8IEFSTV9MUEFFX1RDUl9JUkdOMV9TSElGVCkgfAorCSAgICAg IChBUk1fTFBBRV9UQ1JfUkdOX1dCV0EgPDwgQVJNX0xQQUVfVENSX09SR04xX1NISUZUKTsKKwor CXN3aXRjaCAoMSA8PCBkYXRhLT5wZ19zaGlmdCkgeworCWNhc2UgU1pfNEs6CisJCXJlZyB8PSBB Uk1fTFBBRV9UQ1JfVEcxXzRLOworCQlicmVhazsKKwljYXNlIFNaXzE2SzoKKwkJcmVnIHw9IEFS TV9MUEFFX1RDUl9URzFfMTZLOworCQlicmVhazsKKwljYXNlIFNaXzY0SzoKKwkJcmVnIHw9IEFS TV9MUEFFX1RDUl9URzFfNjRLOworCQlicmVhazsKKwl9CisKKwkvKiBTZXQgVDFTWiAqLworCXJl ZyB8PSAoNjRVTEwgLSBjZmctPmlhcykgPDwgQVJNX0xQQUVfVENSX1QxU1pfU0hJRlQ7CisKKwkv KiBTZXQgdGhlIFNFUCBiaXQgYmFzZWQgb24gdGhlIHNpemUgKi8KKwlzd2l0Y2ggKGNmZy0+aWFz KSB7CisJY2FzZSAzMjoKKwkJcmVnIHw9IChBUk1fTFBBRV9UQ1JfU0VQXzMxIDw8IEFSTV9MUEFF X1RDUl9TRVBfU0hJRlQpOworCQlicmVhazsKKwljYXNlIDM2OgorCQlyZWcgfD0gKEFSTV9MUEFF X1RDUl9TRVBfMzUgPDwgQVJNX0xQQUVfVENSX1NFUF9TSElGVCk7CisJCWJyZWFrOworCWNhc2Ug NDA6CisJCXJlZyB8PSAoQVJNX0xQQUVfVENSX1NFUF8zOSA8PCBBUk1fTFBBRV9UQ1JfU0VQX1NI SUZUKTsKKwkJYnJlYWs7CisJY2FzZSA0MjoKKwkJcmVnIHw9IChBUk1fTFBBRV9UQ1JfU0VQXzQx IDw8IEFSTV9MUEFFX1RDUl9TRVBfU0hJRlQpOworCQlicmVhazsKKwljYXNlIDQ0OgorCQlyZWcg fD0gKEFSTV9MUEFFX1RDUl9TRVBfNDMgPDwgQVJNX0xQQUVfVENSX1NFUF9TSElGVCk7CisJCWJy ZWFrOworCWNhc2UgNDg6CisJCS8qCisJCSAqIElmIGlhcyBpcyA0OCB0aGVuIHRoYXQgcHJvYmFi bHkgbWVhbnMgdGhhdCB0aGUgVUJTIG9uIHRoZQorCQkgKiBkZXZpY2Ugd2FzIDAxMDFiICg0OSkg d2hpY2ggaXMgYSBzcGVjaWFsIGNhc2UgdGhhdCBhc3N1bWVzCisJCSAqIGJpdCA0OCBpcyB0aGUg c2lnbiBleHRlbnNpb24gYml0LiBJbiB0aGlzIGNhc2Ugd2UgYXJlCisJCSAqIGV4cGVjdGVkIHRv IHVzZSBBUk1fTFBBRV9UQ1JfU0VQX1VQU1RSRUFNIHRvIHVzZSBiaXQgNDggYXMKKwkJICogdGhl IGV4dGVuc2lvbiBiaXQuIE9uZSBtaWdodCBiZSBjb25mdXNlZCBiZWNhdXNlIHRoZXJlIGlzCisJ CSAqIGFsc28gYW4gb3B0aW9uIHRvIHNldCB0aGUgU0VQIHRvIGJpdCA0NyBidXQgdGhpcyBpcyBw cm9iYWJseQorCQkgKiBub3Qgd2hhdCB0aGUgYXJtLXNtbXUgZHJpdmVyIGludGVuZGVkLgorCQkg Ki8KKwlkZWZhdWx0OgorCQlyZWcgfD0gKEFSTV9MUEFFX1RDUl9TRVBfVVBTVFJFQU0gPDwgQVJN X0xQQUVfVENSX1NFUF9TSElGVCk7CisJCWJyZWFrOworCX0KKworCXJldHVybiByZWc7Cit9CisK IHN0YXRpYyBzdHJ1Y3QgaW9fcGd0YWJsZSAqCiBhcm1fNjRfbHBhZV9hbGxvY19wZ3RhYmxlX3Mx KHN0cnVjdCBpb19wZ3RhYmxlX2NmZyAqY2ZnLCB2b2lkICpjb29raWUpCiB7CiAJdTY0IHJlZzsK IAlzdHJ1Y3QgYXJtX2xwYWVfaW9fcGd0YWJsZSAqZGF0YTsKIAotCWlmIChjZmctPnF1aXJrcyAm IH4oSU9fUEdUQUJMRV9RVUlSS19BUk1fTlMgfCBJT19QR1RBQkxFX1FVSVJLX05PX0RNQSkpCisJ aWYgKGNmZy0+cXVpcmtzICYgfihJT19QR1RBQkxFX1FVSVJLX0FSTV9OUyB8CisJCQlJT19QR1RB QkxFX1FVSVJLX05PX0RNQSB8CisJCQlJT19QR1RBQkxFX1FVSVJLX0FSTV9UVEJSMSkpCiAJCXJl dHVybiBOVUxMOwogCiAJZGF0YSA9IGFybV9scGFlX2FsbG9jX3BndGFibGUoY2ZnKTsKQEAgLTc0 NCw4ICs4NDksOSBAQCBhcm1fNjRfbHBhZV9hbGxvY19wZ3RhYmxlX3MxKHN0cnVjdCBpb19wZ3Rh YmxlX2NmZyAqY2ZnLCB2b2lkICpjb29raWUpCiAKIAlyZWcgfD0gKDY0VUxMIC0gY2ZnLT5pYXMp IDw8IEFSTV9MUEFFX1RDUl9UMFNaX1NISUZUOwogCi0JLyogRGlzYWJsZSBzcGVjdWxhdGl2ZSB3 YWxrcyB0aHJvdWdoIFRUQlIxICovCi0JcmVnIHw9IEFSTV9MUEFFX1RDUl9FUEQxOworCS8qIEJy aW5nIGluIHRoZSBUVEJSMSBjb25maWd1cmF0aW9uICovCisJcmVnIHw9IGFybV82NF9scGFlX3Nl dHVwX3R0YnIxKGNmZywgZGF0YSk7CisKIAljZmctPmFybV9scGFlX3MxX2NmZy50Y3IgPSByZWc7 CiAKIAkvKiBNQUlScyAqLwpAQCAtNzYwLDE2ICs4NjYsMzIgQEAgYXJtXzY0X2xwYWVfYWxsb2Nf cGd0YWJsZV9zMShzdHJ1Y3QgaW9fcGd0YWJsZV9jZmcgKmNmZywgdm9pZCAqY29va2llKQogCWNm Zy0+YXJtX2xwYWVfczFfY2ZnLm1haXJbMV0gPSAwOwogCiAJLyogTG9va2luZyBnb29kOyBhbGxv Y2F0ZSBhIHBnZCAqLwotCWRhdGEtPnBnZCA9IF9fYXJtX2xwYWVfYWxsb2NfcGFnZXMoZGF0YS0+ cGdkX3NpemUsIEdGUF9LRVJORUwsIGNmZyk7Ci0JaWYgKCFkYXRhLT5wZ2QpCisJZGF0YS0+cGdk WzBdID0gX19hcm1fbHBhZV9hbGxvY19wYWdlcyhkYXRhLT5wZ2Rfc2l6ZSwgR0ZQX0tFUk5FTCwg Y2ZnKTsKKwlpZiAoIWRhdGEtPnBnZFswXSkKIAkJZ290byBvdXRfZnJlZV9kYXRhOwogCisKKwlp ZiAoY2ZnLT5xdWlya3MgJiBJT19QR1RBQkxFX1FVSVJLX0FSTV9UVEJSMSkgeworCQlkYXRhLT5w Z2RbMV0gPSBfX2FybV9scGFlX2FsbG9jX3BhZ2VzKGRhdGEtPnBnZF9zaXplLAorCQkJR0ZQX0tF Uk5FTCwgY2ZnKTsKKwkJaWYgKCFkYXRhLT5wZ2RbMV0pIHsKKwkJCV9fYXJtX2xwYWVfZnJlZV9w YWdlcyhkYXRhLT5wZ2RbMF0sIGRhdGEtPnBnZF9zaXplLAorCQkJCWNmZyk7CisJCQlnb3RvIG91 dF9mcmVlX2RhdGE7CisJCX0KKwl9IGVsc2UgeworCQlkYXRhLT5wZ2RbMV0gPSBOVUxMOworCX0K KwogCS8qIEVuc3VyZSB0aGUgZW1wdHkgcGdkIGlzIHZpc2libGUgYmVmb3JlIGFueSBhY3R1YWwg VFRCUiB3cml0ZSAqLwogCXdtYigpOwogCiAJLyogVFRCUnMgKi8KLQljZmctPmFybV9scGFlX3Mx X2NmZy50dGJyWzBdID0gdmlydF90b19waHlzKGRhdGEtPnBnZCk7Ci0JY2ZnLT5hcm1fbHBhZV9z MV9jZmcudHRiclsxXSA9IDA7CisJY2ZnLT5hcm1fbHBhZV9zMV9jZmcudHRiclswXSA9IHZpcnRf dG9fcGh5cyhkYXRhLT5wZ2RbMF0pOworCisJaWYgKGRhdGEtPnBnZFsxXSkKKwkJY2ZnLT5hcm1f bHBhZV9zMV9jZmcudHRiclsxXSA9IHZpcnRfdG9fcGh5cyhkYXRhLT5wZ2RbMV0pOworCiAJcmV0 dXJuICZkYXRhLT5pb3A7CiAKIG91dF9mcmVlX2RhdGE6CkBAIC04NTQsMTUgKzk3NiwxNSBAQCBh cm1fNjRfbHBhZV9hbGxvY19wZ3RhYmxlX3MyKHN0cnVjdCBpb19wZ3RhYmxlX2NmZyAqY2ZnLCB2 b2lkICpjb29raWUpCiAJY2ZnLT5hcm1fbHBhZV9zMl9jZmcudnRjciA9IHJlZzsKIAogCS8qIEFs bG9jYXRlIHBnZCBwYWdlcyAqLwotCWRhdGEtPnBnZCA9IF9fYXJtX2xwYWVfYWxsb2NfcGFnZXMo ZGF0YS0+cGdkX3NpemUsIEdGUF9LRVJORUwsIGNmZyk7Ci0JaWYgKCFkYXRhLT5wZ2QpCisJZGF0 YS0+cGdkWzBdID0gX19hcm1fbHBhZV9hbGxvY19wYWdlcyhkYXRhLT5wZ2Rfc2l6ZSwgR0ZQX0tF Uk5FTCwgY2ZnKTsKKwlpZiAoIWRhdGEtPnBnZFswXSkKIAkJZ290byBvdXRfZnJlZV9kYXRhOwog CiAJLyogRW5zdXJlIHRoZSBlbXB0eSBwZ2QgaXMgdmlzaWJsZSBiZWZvcmUgYW55IGFjdHVhbCBU VEJSIHdyaXRlICovCiAJd21iKCk7CiAKIAkvKiBWVFRCUiAqLwotCWNmZy0+YXJtX2xwYWVfczJf Y2ZnLnZ0dGJyID0gdmlydF90b19waHlzKGRhdGEtPnBnZCk7CisJY2ZnLT5hcm1fbHBhZV9zMl9j ZmcudnR0YnIgPSB2aXJ0X3RvX3BoeXMoZGF0YS0+cGdkWzBdKTsKIAlyZXR1cm4gJmRhdGEtPmlv cDsKIAogb3V0X2ZyZWVfZGF0YToKQEAgLTk2MCw3ICsxMDgyLDcgQEAgc3RhdGljIHZvaWQgX19p bml0IGFybV9scGFlX2R1bXBfb3BzKHN0cnVjdCBpb19wZ3RhYmxlX29wcyAqb3BzKQogCQljZmct PnBnc2l6ZV9iaXRtYXAsIGNmZy0+aWFzKTsKIAlwcl9lcnIoImRhdGE6ICVkIGxldmVscywgMHgl enggcGdkX3NpemUsICVsdSBwZ19zaGlmdCwgJWx1IGJpdHNfcGVyX2xldmVsLCBwZ2QgQCAlcFxu IiwKIAkJZGF0YS0+bGV2ZWxzLCBkYXRhLT5wZ2Rfc2l6ZSwgZGF0YS0+cGdfc2hpZnQsCi0JCWRh dGEtPmJpdHNfcGVyX2xldmVsLCBkYXRhLT5wZ2QpOworCQlkYXRhLT5iaXRzX3Blcl9sZXZlbCwg ZGF0YS0+cGdkWzBdKTsKIH0KIAogI2RlZmluZSBfX0ZBSUwob3BzLCBpKQkoewkJCQkJCVwKZGlm ZiAtLWdpdCBhL2RyaXZlcnMvaW9tbXUvaW8tcGd0YWJsZS1hcm0uaCBiL2RyaXZlcnMvaW9tbXUv aW8tcGd0YWJsZS1hcm0uaAppbmRleCBjYjMxMzE0OTcxYWMuLjYzNDRiMWQzNTlhNSAxMDA2NDQK LS0tIGEvZHJpdmVycy9pb21tdS9pby1wZ3RhYmxlLWFybS5oCisrKyBiL2RyaXZlcnMvaW9tbXUv aW8tcGd0YWJsZS1hcm0uaApAQCAtMjUsMTQgKzI1LDIxIEBACiAjZGVmaW5lIEFSTV9MUEFFX1RD Ul9URzBfNjRLCQkoMSA8PCAxNCkKICNkZWZpbmUgQVJNX0xQQUVfVENSX1RHMF8xNksJCSgyIDw8 IDE0KQogCisjZGVmaW5lIEFSTV9MUEFFX1RDUl9URzFfMTZLICAgICAgICAgICAgKDEgPDwgMzAp CisjZGVmaW5lIEFSTV9MUEFFX1RDUl9URzFfNEsgICAgICAgICAgICAgKDIgPDwgMzApCisjZGVm aW5lIEFSTV9MUEFFX1RDUl9URzFfNjRLICAgICAgICAgICAgKDMgPDwgMzApCisKICNkZWZpbmUg QVJNX0xQQUVfVENSX1NIMF9TSElGVAkJMTIKKyNkZWZpbmUgQVJNX0xQQUVfVENSX1NIMV9TSElG VAkJMjgKICNkZWZpbmUgQVJNX0xQQUVfVENSX1NIMF9NQVNLCQkweDMKICNkZWZpbmUgQVJNX0xQ QUVfVENSX1NIX05TCQkwCiAjZGVmaW5lIEFSTV9MUEFFX1RDUl9TSF9PUwkJMgogI2RlZmluZSBB Uk1fTFBBRV9UQ1JfU0hfSVMJCTMKIAogI2RlZmluZSBBUk1fTFBBRV9UQ1JfT1JHTjBfU0hJRlQJ MTAKKyNkZWZpbmUgQVJNX0xQQUVfVENSX09SR04xX1NISUZUCTI2CiAjZGVmaW5lIEFSTV9MUEFF X1RDUl9JUkdOMF9TSElGVAk4CisjZGVmaW5lIEFSTV9MUEFFX1RDUl9JUkdOMV9TSElGVAkyNAog I2RlZmluZSBBUk1fTFBBRV9UQ1JfUkdOX01BU0sJCTB4MwogI2RlZmluZSBBUk1fTFBBRV9UQ1Jf UkdOX05DCQkwCiAjZGVmaW5lIEFSTV9MUEFFX1RDUl9SR05fV0JXQQkJMQpAQCAtNDUsNiArNTIs OSBAQAogI2RlZmluZSBBUk1fTFBBRV9UQ1JfVDBTWl9TSElGVAkJMAogI2RlZmluZSBBUk1fTFBB RV9UQ1JfU1pfTUFTSwkJMHgzZgogCisjZGVmaW5lIEFSTV9MUEFFX1RDUl9UMVNaX1NISUZUICAg ICAgICAgMTYKKyNkZWZpbmUgQVJNX0xQQUVfVENSX1QxU1pfTUFTSyAgICAgICAgICAweDNmCisK ICNkZWZpbmUgQVJNX0xQQUVfVENSX1BTX1NISUZUCQkxNgogI2RlZmluZSBBUk1fTFBBRV9UQ1Jf UFNfTUFTSwkJMHg3CiAKQEAgLTU4LDYgKzY4LDE2IEBACiAjZGVmaW5lIEFSTV9MUEFFX1RDUl9Q U180NF9CSVQJCTB4NFVMTAogI2RlZmluZSBBUk1fTFBBRV9UQ1JfUFNfNDhfQklUCQkweDVVTEwK IAorI2RlZmluZSBBUk1fTFBBRV9UQ1JfU0VQX1NISUZUCQkoMTUgKyAzMikKKworI2RlZmluZSBB Uk1fTFBBRV9UQ1JfU0VQXzMxCQkweDBVTEwKKyNkZWZpbmUgQVJNX0xQQUVfVENSX1NFUF8zNQkJ MHgxVUxMCisjZGVmaW5lIEFSTV9MUEFFX1RDUl9TRVBfMzkJCTB4MlVMTAorI2RlZmluZSBBUk1f TFBBRV9UQ1JfU0VQXzQxCQkweDNVTEwKKyNkZWZpbmUgQVJNX0xQQUVfVENSX1NFUF80MwkJMHg0 VUxMCisjZGVmaW5lIEFSTV9MUEFFX1RDUl9TRVBfNDcJCTB4NVVMTAorI2RlZmluZSBBUk1fTFBB RV9UQ1JfU0VQX1VQU1RSRUFNCTB4N1VMTAorCiAjZGVmaW5lIEFSTV9MUEFFX01BSVJfQVRUUl9T SElGVChuKQkoKG4pIDw8IDMpCiAjZGVmaW5lIEFSTV9MUEFFX01BSVJfQVRUUl9NQVNLCQkweGZm CiAjZGVmaW5lIEFSTV9MUEFFX01BSVJfQVRUUl9ERVZJQ0UJMHgwNApkaWZmIC0tZ2l0IGEvZHJp dmVycy9pb21tdS9pby1wZ3RhYmxlLmggYi9kcml2ZXJzL2lvbW11L2lvLXBndGFibGUuaAppbmRl eCBjZDJlMWVhZmZmZTYuLjU1ZjdiNjBjYzQ0ZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9pb21tdS9p by1wZ3RhYmxlLmgKKysrIGIvZHJpdmVycy9pb21tdS9pby1wZ3RhYmxlLmgKQEAgLTcxLDEyICs3 MSwxOCBAQCBzdHJ1Y3QgaW9fcGd0YWJsZV9jZmcgewogCSAqCWJlIGFjY2Vzc2VkIGJ5IGEgZnVs bHkgY2FjaGUtY29oZXJlbnQgSU9NTVUgb3IgQ1BVIChlLmcuIGZvciBhCiAJICoJc29mdHdhcmUt ZW11bGF0ZWQgSU9NTVUpLCBzdWNoIHRoYXQgcGFnZXRhYmxlIHVwZGF0ZXMgbmVlZCBub3QKIAkg KgliZSB0cmVhdGVkIGFzIGV4cGxpY2l0IERNQSBkYXRhLgorCSAqCisJICogUEdUQUJMRV9RVUlS S19BUk1fVFRCUjE6IFNwZWNpZmllcyB0aGF0IFRUQlIxIGhhcyBiZWVuIGVuYWJsZWQgb24KKwkg Kgl0aGlzIGRvbWFpbi4gU2V0IHVwIHRoZSBjb25maWd1cmF0aW9uIHJlZ2lzdGVycyBhbmQgZHlh bm1pY2FsbHkKKwkgKiAgICAgIGNob29zZSB3aGljaCBwYWdldGFibGUgKFRUQlIwIG9yIFRUQlIx KSBhIG1hcHBpbmcgc2hvdWxkIGdvIGludG8KKwkgKgliYXNlZCBvbiB0aGUgYWRkcmVzcy4KIAkg Ki8KIAkjZGVmaW5lIElPX1BHVEFCTEVfUVVJUktfQVJNX05TCQlCSVQoMCkKIAkjZGVmaW5lIElP X1BHVEFCTEVfUVVJUktfTk9fUEVSTVMJQklUKDEpCiAJI2RlZmluZSBJT19QR1RBQkxFX1FVSVJL X1RMQklfT05fTUFQCUJJVCgyKQogCSNkZWZpbmUgSU9fUEdUQUJMRV9RVUlSS19BUk1fTVRLXzRH QglCSVQoMykKIAkjZGVmaW5lIElPX1BHVEFCTEVfUVVJUktfTk9fRE1BCQlCSVQoNCkKKwkjZGVm aW5lIElPX1BHVEFCTEVfUVVJUktfQVJNX1RUQlIxICAgICAgQklUKDUpCiAJdW5zaWduZWQgbG9u ZwkJCXF1aXJrczsKIAl1bnNpZ25lZCBsb25nCQkJcGdzaXplX2JpdG1hcDsKIAl1bnNpZ25lZCBp bnQJCQlpYXM7CkBAIC0xNzMsMTggKzE3OSwyMiBAQCBzdHJ1Y3QgaW9fcGd0YWJsZSB7CiAKIHN0 YXRpYyBpbmxpbmUgdm9pZCBpb19wZ3RhYmxlX3RsYl9mbHVzaF9hbGwoc3RydWN0IGlvX3BndGFi bGUgKmlvcCkKIHsKLQlpb3AtPmNmZy50bGItPnRsYl9mbHVzaF9hbGwoaW9wLT5jb29raWUpOwor CWlmIChpb3AtPmNmZy50bGIpCisJCWlvcC0+Y2ZnLnRsYi0+dGxiX2ZsdXNoX2FsbChpb3AtPmNv b2tpZSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgdm9pZCBpb19wZ3RhYmxlX3RsYl9hZGRfZmx1c2go c3RydWN0IGlvX3BndGFibGUgKmlvcCwKIAkJdW5zaWduZWQgbG9uZyBpb3ZhLCBzaXplX3Qgc2l6 ZSwgc2l6ZV90IGdyYW51bGUsIGJvb2wgbGVhZikKIHsKLQlpb3AtPmNmZy50bGItPnRsYl9hZGRf Zmx1c2goaW92YSwgc2l6ZSwgZ3JhbnVsZSwgbGVhZiwgaW9wLT5jb29raWUpOworCWlmIChpb3At PmNmZy50bGIpCisJCWlvcC0+Y2ZnLnRsYi0+dGxiX2FkZF9mbHVzaChpb3ZhLCBzaXplLCBncmFu dWxlLCBsZWFmLAorCQkJaW9wLT5jb29raWUpOwogfQogCiBzdGF0aWMgaW5saW5lIHZvaWQgaW9f cGd0YWJsZV90bGJfc3luYyhzdHJ1Y3QgaW9fcGd0YWJsZSAqaW9wKQogewotCWlvcC0+Y2ZnLnRs Yi0+dGxiX3N5bmMoaW9wLT5jb29raWUpOworCWlmIChpb3AtPmNmZy50bGIpCisJCWlvcC0+Y2Zn LnRsYi0+dGxiX3N5bmMoaW9wLT5jb29raWUpOwogfQogCiAvKioKLS0gCjIuMTYuMQoKX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KRnJlZWRyZW5vIG1haWxp bmcgbGlzdApGcmVlZHJlbm9AbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJl ZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZnJlZWRyZW5vCg==