From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jordan Crouse Subject: [RFC PATCH v1 05/15] iommu/arm-smmu: Add auxiliary domain support for arm-smmuv2 Date: Fri, 1 Mar 2019 12:38:27 -0700 Message-ID: <1551469117-3404-6-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 U3VwcG9ydCB0aGUgbmV3IGF1eGlsaWFyeSBkb21haW4gQVBJIGZvciBhcm0tc21tdXYyIHRvIGlu aXRpYWxpemUgYW5kCnN1cHBvcnQgbXVsdGlwbGUgcGFnZXRhYmxlcyBmb3IgYSBTTU1VIGRldmlj ZS4gU2luY2UgdGhlIHNtbXUtdjIgaGFyZHdhcmUKZG9lc24ndCBoYXZlIGFueSBidWlsdCBpbiBz dXBwb3J0IGZvciBzd2l0Y2hpbmcgdGhlIHBhZ2V0YWJsZSBiYXNlIGl0IGlzCmxlZnQgYXMgYW4g ZXhlcmNpc2UgdG8gdGhlIGNhbGxlciB0byBhY3R1YWxseSB1c2UgdGhlIHBhZ2V0YWJsZTsgYXV4 CmRvbWFpbnMgaW4gdGhlIElPTU1VIGRyaXZlciBhcmUgb25seSBwcmVvY2N1cGllZCB3aXRoIGNy ZWF0aW5nIGFuZCBtYW5hZ2luZwp0aGUgcGFnZXRhYmxlIG1lbW9yeS4KCkZvbGxvd2luZyBpcyBh IHBzZXVkbyBjb2RlIGV4YW1wbGUgb2YgaG93IGEgZG9tYWluIGNhbiBiZSBjcmVhdGVkCgogLyog Q2hlY2sgdG8gc2VlIGlmIGF1eCBkb21haW5zIGFyZSBzdXBwb3J0ZWQgKi8KIGlmIChpb21tdV9k ZXZfaGFzX2ZlYXR1cmUoZGV2LCBJT01NVV9ERVZfRkVBVF9BVVgpKSB7CgkgaW9tbXUgPSBpb21t dV9kb21haW5fYWxsb2MoLi4uKTsKCgkgaWYgKGlvbW11X2F1eF9hdHRhY2hfZGV2aWNlKGRvbWFp biwgZGV2KSkKCQkgcmV0dXJuIEZBSUw7CgoJLyogU2F2ZSB0aGUgYmFzZSBhZGRyZXNzIG9mIHRo ZSBwYWdldGFibGUgZm9yIHVzZSBieSB0aGUgZHJpdmVyCglpb21tdV9kb21haW5fZ2V0X2F0dHIo ZG9tYWluLCBET01BSU5fQVRUUl9QVEJBU0UsICZwdGJhc2UpOwogfQoKQWZ0ZXIgdGhpcyAnZG9t YWluJyBjYW4gYmUgdXNlZCBsaWtlIGFueSBvdGhlciBpb21tdSBkb21haW4gdG8gbWFwIGFuZAp1 bm1hcCBpb3ZhIGFkZHJlc3NlcyBpbiB0aGUgcGFnZXRhYmxlLiBUaGUgZHJpdmVyL2hhcmR3YXJl IGNhbiBiZSB1c2VkCnRvIHN3aXRjaCB0aGUgcGFnZXRhYmxlIGFjY29yZGluZyB0byBpdHMgb3du IHNwZWNpZmljIGltcGxlbWVudGF0aW9uLgoKU2lnbmVkLW9mZi1ieTogSm9yZGFuIENyb3VzZSA8 amNyb3VzZUBjb2RlYXVyb3JhLm9yZz4KLS0tCgogZHJpdmVycy9pb21tdS9hcm0tc21tdS5jIHwg MTM1ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tCiAxIGZp bGUgY2hhbmdlZCwgMTExIGluc2VydGlvbnMoKyksIDI0IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdp dCBhL2RyaXZlcnMvaW9tbXUvYXJtLXNtbXUuYyBiL2RyaXZlcnMvaW9tbXUvYXJtLXNtbXUuYwpp bmRleCAwNWViMTI2Li5iN2I1MDhlIDEwMDY0NAotLS0gYS9kcml2ZXJzL2lvbW11L2FybS1zbW11 LmMKKysrIGIvZHJpdmVycy9pb21tdS9hcm0tc21tdS5jCkBAIC0yNjMsNiArMjYzLDggQEAgc3Ry dWN0IGFybV9zbW11X2RvbWFpbiB7CiAJc3BpbmxvY2tfdAkJCWNiX2xvY2s7IC8qIFNlcmlhbGlz ZXMgQVRTMSogb3BzIGFuZCBUTEIgc3luY3MgKi8KIAl1MzIgYXR0cmlidXRlczsKIAlzdHJ1Y3Qg aW9tbXVfZG9tYWluCQlkb21haW47CisJYm9vbAkJCQlpc19hdXg7CisJdTY0CQkJCXR0YnIwOwog fTsKIAogc3RydWN0IGFybV9zbW11X29wdGlvbl9wcm9wIHsKQEAgLTg3NCw2ICs4NzYsMTIgQEAg c3RhdGljIGludCBhcm1fc21tdV9pbml0X2RvbWFpbl9jb250ZXh0KHN0cnVjdCBpb21tdV9kb21h aW4gKmRvbWFpbiwKIAlpZiAoIShzbW11LT5mZWF0dXJlcyAmIEFSTV9TTU1VX0ZFQVRfVFJBTlNf UzIpKQogCQlzbW11X2RvbWFpbi0+c3RhZ2UgPSBBUk1fU01NVV9ET01BSU5fUzE7CiAKKwkvKiBB dXggZG9tYWlucyBjYW4gb25seSBiZSBjcmVhdGVkIGZvciBzdGFnZS0xIHRhYmxlcyAqLworCWlm IChzbW11X2RvbWFpbi0+aXNfYXV4ICYmIHNtbXVfZG9tYWluLT5zdGFnZSAhPSBBUk1fU01NVV9E T01BSU5fUzEpIHsKKwkJcmV0ID0gLUVJTlZBTDsKKwkJZ290byBvdXRfdW5sb2NrOworCX0KKwog CS8qCiAJICogQ2hvb3NpbmcgYSBzdWl0YWJsZSBjb250ZXh0IGZvcm1hdCBpcyBldmVuIG1vcmUg ZmlkZGx5LiBVbnRpbCB3ZQogCSAqIGdyb3cgc29tZSB3YXkgZm9yIHRoZSBjYWxsZXIgdG8gZXhw cmVzcyBhIHByZWZlcmVuY2UsIGFuZC9vciBtb3ZlCkBAIC05MjAsNyArOTI4LDEwIEBAIHN0YXRp YyBpbnQgYXJtX3NtbXVfaW5pdF9kb21haW5fY29udGV4dChzdHJ1Y3QgaW9tbXVfZG9tYWluICpk b21haW4sCiAJCQlpYXMgPSBtaW4oaWFzLCAzMlVMKTsKIAkJCW9hcyA9IG1pbihvYXMsIDMyVUwp OwogCQl9Ci0JCXNtbXVfZG9tYWluLT50bGJfb3BzID0gJmFybV9zbW11X3MxX3RsYl9vcHM7CisK KwkJLyogYXV4IGRvbWFpbnMgc2hvdWxkbid0IHRvdWNoIGhhcmR3YXJlIHNvIG5vIFRMQiBvcHMg Ki8KKwkJaWYgKCFzbW11X2RvbWFpbi0+aXNfYXV4KQorCQkJc21tdV9kb21haW4tPnRsYl9vcHMg PSAmYXJtX3NtbXVfczFfdGxiX29wczsKIAkJYnJlYWs7CiAJY2FzZSBBUk1fU01NVV9ET01BSU5f TkVTVEVEOgogCQkvKgpAQCAtOTM5LDMyICs5NTAsNDIgQEAgc3RhdGljIGludCBhcm1fc21tdV9p bml0X2RvbWFpbl9jb250ZXh0KHN0cnVjdCBpb21tdV9kb21haW4gKmRvbWFpbiwKIAkJCWlhcyA9 IG1pbihpYXMsIDQwVUwpOwogCQkJb2FzID0gbWluKG9hcywgNDBVTCk7CiAJCX0KLQkJaWYgKHNt bXUtPnZlcnNpb24gPT0gQVJNX1NNTVVfVjIpCi0JCQlzbW11X2RvbWFpbi0+dGxiX29wcyA9ICZh cm1fc21tdV9zMl90bGJfb3BzX3YyOwotCQllbHNlCi0JCQlzbW11X2RvbWFpbi0+dGxiX29wcyA9 ICZhcm1fc21tdV9zMl90bGJfb3BzX3YxOworCisJCWlmICghc21tdV9kb21haW4tPmlzX2F1eCkg eworCQkJaWYgKHNtbXUtPnZlcnNpb24gPT0gQVJNX1NNTVVfVjIpCisJCQkJc21tdV9kb21haW4t PnRsYl9vcHMgPSAmYXJtX3NtbXVfczJfdGxiX29wc192MjsKKwkJCWVsc2UKKwkJCQlzbW11X2Rv bWFpbi0+dGxiX29wcyA9ICZhcm1fc21tdV9zMl90bGJfb3BzX3YxOworCQl9CiAJCWJyZWFrOwog CWRlZmF1bHQ6CiAJCXJldCA9IC1FSU5WQUw7CiAJCWdvdG8gb3V0X3VubG9jazsKIAl9Ci0JcmV0 ID0gX19hcm1fc21tdV9hbGxvY19iaXRtYXAoc21tdS0+Y29udGV4dF9tYXAsIHN0YXJ0LAotCQkJ CSAgICAgIHNtbXUtPm51bV9jb250ZXh0X2JhbmtzKTsKLQlpZiAocmV0IDwgMCkKLQkJZ290byBv dXRfdW5sb2NrOwogCi0JY2ZnLT5jYm5keCA9IHJldDsKLQlpZiAoc21tdS0+dmVyc2lvbiA8IEFS TV9TTU1VX1YyKSB7Ci0JCWNmZy0+aXJwdG5keCA9IGF0b21pY19pbmNfcmV0dXJuKCZzbW11LT5p cnB0bmR4KTsKLQkJY2ZnLT5pcnB0bmR4ICU9IHNtbXUtPm51bV9jb250ZXh0X2lycXM7Ci0JfSBl bHNlIHsKLQkJY2ZnLT5pcnB0bmR4ID0gY2ZnLT5jYm5keDsKLQl9CisJLyoKKwkgKiBBdXggZG9t YWlucyB3aWxsIHVzZSB0aGUgc2FtZSBjb250ZXh0IGJhbmsgYXNzaWduZWQgdG8gdGhlIG1hc3Rl cgorCSAqIGRvbWFpbiBmb3IgdGhlIGRldmljZQorCSAqLworCWlmICghc21tdV9kb21haW4tPmlz X2F1eCkgeworCQlyZXQgPSBfX2FybV9zbW11X2FsbG9jX2JpdG1hcChzbW11LT5jb250ZXh0X21h cCwgc3RhcnQsCisJCQkJCSAgICAgIHNtbXUtPm51bV9jb250ZXh0X2JhbmtzKTsKKwkJaWYgKHJl dCA8IDApCisJCQlnb3RvIG91dF91bmxvY2s7CiAKLQlpZiAoc21tdV9kb21haW4tPnN0YWdlID09 IEFSTV9TTU1VX0RPTUFJTl9TMikKLQkJY2ZnLT52bWlkID0gY2ZnLT5jYm5keCArIDEgKyBzbW11 LT5jYXZpdW1faWRfYmFzZTsKLQllbHNlCi0JCWNmZy0+YXNpZCA9IGNmZy0+Y2JuZHggKyBzbW11 LT5jYXZpdW1faWRfYmFzZTsKKwkJY2ZnLT5jYm5keCA9IHJldDsKKwkJaWYgKHNtbXUtPnZlcnNp b24gPCBBUk1fU01NVV9WMikgeworCQkJY2ZnLT5pcnB0bmR4ID0gYXRvbWljX2luY19yZXR1cm4o JnNtbXUtPmlycHRuZHgpOworCQkJY2ZnLT5pcnB0bmR4ICU9IHNtbXUtPm51bV9jb250ZXh0X2ly cXM7CisJCX0gZWxzZSB7CisJCQljZmctPmlycHRuZHggPSBjZmctPmNibmR4OworCQl9CisKKwkJ aWYgKHNtbXVfZG9tYWluLT5zdGFnZSA9PSBBUk1fU01NVV9ET01BSU5fUzIpCisJCQljZmctPnZt aWQgPSBjZmctPmNibmR4ICsgMSArIHNtbXUtPmNhdml1bV9pZF9iYXNlOworCQllbHNlCisJCQlj ZmctPmFzaWQgPSBjZmctPmNibmR4ICsgc21tdS0+Y2F2aXVtX2lkX2Jhc2U7CisJfQogCiAJcGd0 YmxfY2ZnID0gKHN0cnVjdCBpb19wZ3RhYmxlX2NmZykgewogCQkucGdzaXplX2JpdG1hcAk9IHNt bXUtPnBnc2l6ZV9iaXRtYXAsCkBAIC05ODcsMTYgKzEwMDgsMjYgQEAgc3RhdGljIGludCBhcm1f c21tdV9pbml0X2RvbWFpbl9jb250ZXh0KHN0cnVjdCBpb21tdV9kb21haW4gKmRvbWFpbiwKIAkJ Z290byBvdXRfY2xlYXJfc21tdTsKIAl9CiAKKwkvKiBDYWNoZSB0aGUgVFRCUjAgZm9yIHRoZSBh dXggZG9tYWluICovCisJc21tdV9kb21haW4tPnR0YnIwID0gcGd0YmxfY2ZnLmFybV9scGFlX3Mx X2NmZy50dGJyWzBdOworCiAJLyogVXBkYXRlIHRoZSBkb21haW4ncyBwYWdlIHNpemVzIHRvIHJl ZmxlY3QgdGhlIHBhZ2UgdGFibGUgZm9ybWF0ICovCiAJZG9tYWluLT5wZ3NpemVfYml0bWFwID0g cGd0YmxfY2ZnLnBnc2l6ZV9iaXRtYXA7CiAJZG9tYWluLT5nZW9tZXRyeS5hcGVydHVyZV9lbmQg PSAoMVVMIDw8IGlhcykgLSAxOwogCWRvbWFpbi0+Z2VvbWV0cnkuZm9yY2VfYXBlcnR1cmUgPSB0 cnVlOwogCisJcGd0Ymxfb3BzWzFdID0gTlVMTDsKKworCS8qCisJICogYXV4IGRvbWFpbnMgZG9u J3QgdXNlIHNwbGl0IHRhYmxlcyBvciBwcm9ncmFtIHRoZSBoYXJkd2FyZSBzbyB3ZSdyZQorCSAq IGRvbmUgc2V0dGluZyBpdCB1cAorCSAqLworCWlmIChzbW11X2RvbWFpbi0+aXNfYXV4KQorCQln b3RvIGVuZDsKKwogCS8qIEluaXRpYWxpc2UgdGhlIGNvbnRleHQgYmFuayB3aXRoIG91ciBwYWdl IHRhYmxlIGNmZyAqLwogCWFybV9zbW11X2luaXRfY29udGV4dF9iYW5rKHNtbXVfZG9tYWluLCAm cGd0YmxfY2ZnKTsKIAotCXBndGJsX29wc1sxXSA9IE5VTEw7Ci0KIAlpZiAoc3BsaXRfdGFibGVz KSB7CiAJCS8qIEZJWE1FOiBJIHRoaW5rIGl0IGlzIHNhZmUgdG8gcmV1c2UgcGd0YmxfY2ZnIGhl cmUgKi8KIAkJcGd0Ymxfb3BzWzFdID0gYWxsb2NfaW9fcGd0YWJsZV9vcHMoZm10LCAmcGd0Ymxf Y2ZnLApAQCAtMTAxOCwxMyArMTA0OSwxNSBAQCBzdGF0aWMgaW50IGFybV9zbW11X2luaXRfZG9t YWluX2NvbnRleHQoc3RydWN0IGlvbW11X2RvbWFpbiAqZG9tYWluLAogCSAqLwogCWlycSA9IHNt bXUtPmlycXNbc21tdS0+bnVtX2dsb2JhbF9pcnFzICsgY2ZnLT5pcnB0bmR4XTsKIAlyZXQgPSBk ZXZtX3JlcXVlc3RfaXJxKHNtbXUtPmRldiwgaXJxLCBhcm1fc21tdV9jb250ZXh0X2ZhdWx0LAot CQkJICAgICAgIElSUUZfU0hBUkVELCAiYXJtLXNtbXUtY29udGV4dC1mYXVsdCIsIGRvbWFpbik7 CisJCQkgICAgICAgSVJRRl9TSEFSRUQsICJhcm0tc21tdS1jb250ZXh0LWZhdWx0IiwKKwkJCSAg ICAgICBkb21haW4pOwogCWlmIChyZXQgPCAwKSB7CiAJCWRldl9lcnIoc21tdS0+ZGV2LCAiZmFp bGVkIHRvIHJlcXVlc3QgY29udGV4dCBJUlEgJWQgKCV1KVxuIiwKIAkJCWNmZy0+aXJwdG5keCwg aXJxKTsKIAkJY2ZnLT5pcnB0bmR4ID0gSU5WQUxJRF9JUlBUTkRYOwogCX0KIAorZW5kOgogCW11 dGV4X3VubG9jaygmc21tdV9kb21haW4tPmluaXRfbXV0ZXgpOwogCiAJLyogUHVibGlzaCBwYWdl IHRhYmxlIG9wcyBmb3IgbWFwL3VubWFwICovCkBAIC0xMDUwLDYgKzEwODMsMTIgQEAgc3RhdGlj IHZvaWQgYXJtX3NtbXVfZGVzdHJveV9kb21haW5fY29udGV4dChzdHJ1Y3QgaW9tbXVfZG9tYWlu ICpkb21haW4pCiAJaWYgKCFzbW11IHx8IGRvbWFpbi0+dHlwZSA9PSBJT01NVV9ET01BSU5fSURF TlRJVFkpCiAJCXJldHVybjsKIAorCS8qIEFsbCB3ZSBuZWVkIHRvIGRvIGZvciBhdXggZGV2aWNl cyBpcyBkZXN0cm95IHRoZSBwYWdldGFibGUgKi8KKwlpZiAoc21tdV9kb21haW4tPmlzX2F1eCkg eworCQlmcmVlX2lvX3BndGFibGVfb3BzKHNtbXVfZG9tYWluLT5wZ3RibF9vcHNbMF0pOworCQly ZXR1cm47CisJfQorCiAJcmV0ID0gYXJtX3NtbXVfcnBtX2dldChzbW11KTsKIAlpZiAocmV0IDwg MCkKIAkJcmV0dXJuOwpAQCAtMTMzMCw2ICsxMzY5LDM5IEBAIHN0YXRpYyBpbnQgYXJtX3NtbXVf ZG9tYWluX2FkZF9tYXN0ZXIoc3RydWN0IGFybV9zbW11X2RvbWFpbiAqc21tdV9kb21haW4sCiAJ cmV0dXJuIDA7CiB9CiAKK3N0YXRpYyBib29sIGFybV9zbW11X2Rldl9oYXNfZmVhdChzdHJ1Y3Qg ZGV2aWNlICpkZXYsCisJCWVudW0gaW9tbXVfZGV2X2ZlYXR1cmVzIGZlYXQpCit7CisJLyoKKwkg KiBGSVhNRTogU2hvdWxkIHdlIGRvIHNvbWUgaGFyZHdhcmUgY2hlY2tpbmcgaGVyZSwgbGlrZSB0 byBiZSBzdXJlIHRoaXMKKwkgKiBpcyBhIHN0YWdlIDEgYW5kIHN1Y2g/CisJICovCisKKwkvKiBB bHdheXMgYWxsb3cgYXV4IGRvbWFpbnMgKi8KKwlpZiAoZmVhdCA9PSBJT01NVV9ERVZfRkVBVF9B VVgpCisJCXJldHVybiB0cnVlOworCisJcmV0dXJuIGZhbHNlOworfQorCisvKiBGSVhNRTogQWRk IHN0dWJzIGZvciBkZXZfZW5hYmxlX2ZlYXQgYW5kIGRldl9kaXNhYmxlX2ZlYXQ/ICovCisKKy8q IFNldCB1cCBhIG5ldyBhdXggZG9tYWluIGFuZCBjcmVhdGUgYSBuZXcgcGFnZXRhYmxlIHdpdGgg dGhlIHNhbWUKKyAqIGNoYXJhY3RlcmlzdGljcyBhcyB0aGUgbWFzdGVyCisgKi8KK3N0YXRpYyBp bnQgYXJtX3NtbXVfYXV4X2F0dGFjaF9kZXYoc3RydWN0IGlvbW11X2RvbWFpbiAqZG9tYWluLAor CQlzdHJ1Y3QgZGV2aWNlICpkZXYpCit7CisJc3RydWN0IGlvbW11X2Z3c3BlYyAqZndzcGVjID0g ZGV2X2lvbW11X2Z3c3BlY19nZXQoZGV2KTsKKwlzdHJ1Y3QgYXJtX3NtbXVfZGV2aWNlICpzbW11 ID0gZndzcGVjX3NtbXUoZndzcGVjKTsKKwlzdHJ1Y3QgYXJtX3NtbXVfZG9tYWluICpzbW11X2Rv bWFpbiA9IHRvX3NtbXVfZG9tYWluKGRvbWFpbik7CisKKwlzbW11X2RvbWFpbi0+aXNfYXV4ID0g dHJ1ZTsKKworCS8qIE5vIHBvd2VyIGlzIG5lZWRlZCBiZWNhdXNlIGF1eCBkb21haW4gZG9lc24n dCB0b3VjaCB0aGUgaGFyZHdhcmUgKi8KKwlyZXR1cm4gYXJtX3NtbXVfaW5pdF9kb21haW5fY29u dGV4dChkb21haW4sIHNtbXUpOworfQorCiBzdGF0aWMgaW50IGFybV9zbW11X2F0dGFjaF9kZXYo c3RydWN0IGlvbW11X2RvbWFpbiAqZG9tYWluLCBzdHJ1Y3QgZGV2aWNlICpkZXYpCiB7CiAJaW50 IHJldDsKQEAgLTEzNDIsNiArMTQxNCw4IEBAIHN0YXRpYyBpbnQgYXJtX3NtbXVfYXR0YWNoX2Rl dihzdHJ1Y3QgaW9tbXVfZG9tYWluICpkb21haW4sIHN0cnVjdCBkZXZpY2UgKmRldikKIAkJcmV0 dXJuIC1FTlhJTzsKIAl9CiAKKwkvKiBGSVhNRTogUmVqZWN0IHVubWFuZ2VkIGRvbWFpbnMgc2lu Y2UgdGhvc2Ugc2hvdWxkIGJlIGF1eD8gKi8KKwogCS8qCiAJICogRklYTUU6IFRoZSBhcmNoL2Fy bSBETUEgQVBJIGNvZGUgdHJpZXMgdG8gYXR0YWNoIGRldmljZXMgdG8gaXRzIG93bgogCSAqIGRv bWFpbnMgYmV0d2VlbiBvZl94bGF0ZSgpIGFuZCBhZGRfZGV2aWNlKCkgLSB3ZSBoYXZlIG5vIHdh eSB0byBjb3BlCkBAIC0xMzg4LDcgKzE0NjIsMTMgQEAgYXJtX3NtbXVfZ2V0X3BndGJsX29wcyhz dHJ1Y3QgaW9tbXVfZG9tYWluICpkb21haW4sIHVuc2lnbmVkIGxvbmcgaW92YSkKIHsKIAlzdHJ1 Y3QgYXJtX3NtbXVfZG9tYWluICpzbW11X2RvbWFpbiA9IHRvX3NtbXVfZG9tYWluKGRvbWFpbik7 CiAJc3RydWN0IGFybV9zbW11X2NmZyAqY2ZnID0gJnNtbXVfZG9tYWluLT5jZmc7Ci0Jc3RydWN0 IGFybV9zbW11X2NiICpjYiA9ICZzbW11X2RvbWFpbi0+c21tdS0+Y2JzW2NmZy0+Y2JuZHhdOwor CXN0cnVjdCBhcm1fc21tdV9jYiAqY2I7CisKKwkvKiBxdWljayBlc2NhcGUgZm9yIGRvbWFpbnMg dGhhdCBkb24ndCBoYXZlIHNwbGl0IHBhZ2V0YWJsZXMgZW5hYmxlZCAqLworCWlmICghc21tdV9k b21haW4tPnBndGJsX29wc1sxXSkKKwkJcmV0dXJuIHNtbXVfZG9tYWluLT5wZ3RibF9vcHNbMF07 CisKKwljYiA9ICZzbW11X2RvbWFpbi0+c21tdS0+Y2JzW2NmZy0+Y2JuZHhdOwogCiAJaWYgKGlv dmEgJiBjYi0+c3BsaXRfdGFibGVfbWFzaykKIAkJcmV0dXJuIHNtbXVfZG9tYWluLT5wZ3RibF9v cHNbMV07CkBAIC0xNzAwLDYgKzE3ODAsMTEgQEAgc3RhdGljIGludCBhcm1fc21tdV9kb21haW5f Z2V0X2F0dHIoc3RydWN0IGlvbW11X2RvbWFpbiAqZG9tYWluLAogCQkJCSEhKHNtbXVfZG9tYWlu LT5hdHRyaWJ1dGVzICYKIAkJCQkgICAoMSA8PCBET01BSU5fQVRUUl9TUExJVF9UQUJMRVMpKTsK IAkJCXJldHVybiAwOworCQljYXNlIERPTUFJTl9BVFRSX1BUQkFTRToKKwkJCWlmICghc21tdV9k b21haW4tPmlzX2F1eCkKKwkJCQlyZXR1cm4gLUVOT0RFVjsKKwkJCSooKHU2NCAqKWRhdGEpID0g c21tdV9kb21haW4tPnR0YnIwOworCQkJcmV0dXJuIDA7CiAJCWRlZmF1bHQ6CiAJCQlyZXR1cm4g LUVOT0RFVjsKIAkJfQpAQCAtMTgxMCw3ICsxODk1LDkgQEAgc3RhdGljIHN0cnVjdCBpb21tdV9v cHMgYXJtX3NtbXVfb3BzID0gewogCS5jYXBhYmxlCQk9IGFybV9zbW11X2NhcGFibGUsCiAJLmRv bWFpbl9hbGxvYwkJPSBhcm1fc21tdV9kb21haW5fYWxsb2MsCiAJLmRvbWFpbl9mcmVlCQk9IGFy bV9zbW11X2RvbWFpbl9mcmVlLAorCS5kZXZfaGFzX2ZlYXQJCT0gYXJtX3NtbXVfZGV2X2hhc19m ZWF0LAogCS5hdHRhY2hfZGV2CQk9IGFybV9zbW11X2F0dGFjaF9kZXYsCisJLmF1eF9hdHRhY2hf ZGV2CQk9IGFybV9zbW11X2F1eF9hdHRhY2hfZGV2LAogCS5tYXAJCQk9IGFybV9zbW11X21hcCwK IAkudW5tYXAJCQk9IGFybV9zbW11X3VubWFwLAogCS5mbHVzaF9pb3RsYl9hbGwJPSBhcm1fc21t dV9mbHVzaF9pb3RsYl9hbGwsCi0tIAoyLjcuNAoKX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KRnJlZWRyZW5vIG1haWxpbmcgbGlzdApGcmVlZHJlbm9AbGlz dHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4v bGlzdGluZm8vZnJlZWRyZW5v