From mboxrd@z Thu Jan 1 00:00:00 1970 From: Vivek Gautam Subject: [PATCH v18 2/5] iommu/arm-smmu: Invoke pm_runtime during probe, add/remove device Date: Tue, 27 Nov 2018 15:41:42 +0530 Message-ID: <20181127101145.7682-3-vivek.gautam@codeaurora.org> References: <20181127101145.7682-1-vivek.gautam@codeaurora.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20181127101145.7682-1-vivek.gautam-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: joro-zLv9SwRftAIdnm+yROfE0A@public.gmane.org, robh+dt-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org, robin.murphy-5wv7dgnIgG8@public.gmane.org, will.deacon-5wv7dgnIgG8@public.gmane.org, iommu-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org, devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org Cc: mark.rutland-5wv7dgnIgG8@public.gmane.org, architt-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org, jcrouse-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org, linux-pm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, sboyd-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org, sricharan-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org, thor.thayer-VuQAYsv1563Yd54FQh9/CA@public.gmane.org, rjw-LthD3rsA81gm4RdzfppkhA@public.gmane.org, robdclark-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org, linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, alex.williamson-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org, Vivek Gautam , linux-arm-msm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, tfiga-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org, freedreno-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, m.szyprowski-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org List-Id: devicetree@vger.kernel.org RnJvbTogU3JpY2hhcmFuIFIgPHNyaWNoYXJhbkBjb2RlYXVyb3JhLm9yZz4KClRoZSBzbW11IGRl dmljZSBwcm9iZS9yZW1vdmUgYW5kIGFkZC9yZW1vdmUgbWFzdGVyIGRldmljZSBjYWxsYmFja3MK Z2V0cyBjYWxsZWQgd2hlbiB0aGUgc21tdSBpcyBub3QgbGlua2VkIHRvIGl0cyBtYXN0ZXIsIHRo YXQgaXMgd2l0aG91dAp0aGUgY29udGV4dCBvZiB0aGUgbWFzdGVyIGRldmljZS4gU28gY2FsbGlu ZyBydW50aW1lIGFwaXMgaW4gdGhvc2UgcGxhY2VzCnNlcGFyYXRlbHkuCkdsb2JhbCBsb2NrcyBh cmUgYWxzbyBpbml0aWFsaXplZCBiZWZvcmUgZW5hYmxpbmcgcnVudGltZSBwbSBhcyB0aGUKcnVu dGltZV9yZXN1bWUoKSBjYWxscyBkZXZpY2VfcmVzZXQoKSB3aGljaCBkb2VzIHRsYl9zeW5jX2ds b2JhbCgpCnRoYXQgdWx0aW1hdGVseSByZXF1aXJlcyBsb2NrcyB0byBiZSBpbml0aWFsaXplZC4K ClNpZ25lZC1vZmYtYnk6IFNyaWNoYXJhbiBSIDxzcmljaGFyYW5AY29kZWF1cm9yYS5vcmc+Clt2 aXZlazogQ2xlYW51cCBwbSBydW50aW1lIGNhbGxzXQpTaWduZWQtb2ZmLWJ5OiBWaXZlayBHYXV0 YW0gPHZpdmVrLmdhdXRhbUBjb2RlYXVyb3JhLm9yZz4KUmV2aWV3ZWQtYnk6IFRvbWFzeiBGaWdh IDx0ZmlnYUBjaHJvbWl1bS5vcmc+ClRlc3RlZC1ieTogU3Jpbml2YXMgS2FuZGFnYXRsYSA8c3Jp bml2YXMua2FuZGFnYXRsYUBsaW5hcm8ub3JnPgpSZXZpZXdlZC1ieTogUm9iaW4gTXVycGh5IDxy b2Jpbi5tdXJwaHlAYXJtLmNvbT4KLS0tCiBkcml2ZXJzL2lvbW11L2FybS1zbW11LmMgfCAxMDgg KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0KIDEgZmlsZSBj aGFuZ2VkLCA5OCBpbnNlcnRpb25zKCspLCAxMCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9k cml2ZXJzL2lvbW11L2FybS1zbW11LmMgYi9kcml2ZXJzL2lvbW11L2FybS1zbW11LmMKaW5kZXgg ZTQ3Yzg0MGZjNmE4Li41NjEwY2M3MzZmOWQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaW9tbXUvYXJt LXNtbXUuYworKysgYi9kcml2ZXJzL2lvbW11L2FybS1zbW11LmMKQEAgLTI3MSw2ICsyNzEsMjAg QEAgc3RhdGljIHN0cnVjdCBhcm1fc21tdV9vcHRpb25fcHJvcCBhcm1fc21tdV9vcHRpb25zW10g PSB7CiAJeyAwLCBOVUxMfSwKIH07CiAKK3N0YXRpYyBpbmxpbmUgaW50IGFybV9zbW11X3JwbV9n ZXQoc3RydWN0IGFybV9zbW11X2RldmljZSAqc21tdSkKK3sKKwlpZiAocG1fcnVudGltZV9lbmFi bGVkKHNtbXUtPmRldikpCisJCXJldHVybiBwbV9ydW50aW1lX2dldF9zeW5jKHNtbXUtPmRldik7 CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGlubGluZSB2b2lkIGFybV9zbW11X3JwbV9wdXQo c3RydWN0IGFybV9zbW11X2RldmljZSAqc21tdSkKK3sKKwlpZiAocG1fcnVudGltZV9lbmFibGVk KHNtbXUtPmRldikpCisJCXBtX3J1bnRpbWVfcHV0KHNtbXUtPmRldik7Cit9CisKIHN0YXRpYyBz dHJ1Y3QgYXJtX3NtbXVfZG9tYWluICp0b19zbW11X2RvbWFpbihzdHJ1Y3QgaW9tbXVfZG9tYWlu ICpkb20pCiB7CiAJcmV0dXJuIGNvbnRhaW5lcl9vZihkb20sIHN0cnVjdCBhcm1fc21tdV9kb21h aW4sIGRvbWFpbik7CkBAIC05MzAsMTEgKzk0NCwxNSBAQCBzdGF0aWMgdm9pZCBhcm1fc21tdV9k ZXN0cm95X2RvbWFpbl9jb250ZXh0KHN0cnVjdCBpb21tdV9kb21haW4gKmRvbWFpbikKIAlzdHJ1 Y3QgYXJtX3NtbXVfZG9tYWluICpzbW11X2RvbWFpbiA9IHRvX3NtbXVfZG9tYWluKGRvbWFpbik7 CiAJc3RydWN0IGFybV9zbW11X2RldmljZSAqc21tdSA9IHNtbXVfZG9tYWluLT5zbW11OwogCXN0 cnVjdCBhcm1fc21tdV9jZmcgKmNmZyA9ICZzbW11X2RvbWFpbi0+Y2ZnOwotCWludCBpcnE7CisJ aW50IHJldCwgaXJxOwogCiAJaWYgKCFzbW11IHx8IGRvbWFpbi0+dHlwZSA9PSBJT01NVV9ET01B SU5fSURFTlRJVFkpCiAJCXJldHVybjsKIAorCXJldCA9IGFybV9zbW11X3JwbV9nZXQoc21tdSk7 CisJaWYgKHJldCA8IDApCisJCXJldHVybjsKKwogCS8qCiAJICogRGlzYWJsZSB0aGUgY29udGV4 dCBiYW5rIGFuZCBmcmVlIHRoZSBwYWdlIHRhYmxlcyBiZWZvcmUgZnJlZWluZwogCSAqIGl0LgpA QCAtOTQ5LDYgKzk2Nyw4IEBAIHN0YXRpYyB2b2lkIGFybV9zbW11X2Rlc3Ryb3lfZG9tYWluX2Nv bnRleHQoc3RydWN0IGlvbW11X2RvbWFpbiAqZG9tYWluKQogCiAJZnJlZV9pb19wZ3RhYmxlX29w cyhzbW11X2RvbWFpbi0+cGd0Ymxfb3BzKTsKIAlfX2FybV9zbW11X2ZyZWVfYml0bWFwKHNtbXUt PmNvbnRleHRfbWFwLCBjZmctPmNibmR4KTsKKworCWFybV9zbW11X3JwbV9wdXQoc21tdSk7CiB9 CiAKIHN0YXRpYyBzdHJ1Y3QgaW9tbXVfZG9tYWluICphcm1fc21tdV9kb21haW5fYWxsb2ModW5z aWduZWQgdHlwZSkKQEAgLTEyMzAsMTAgKzEyNTAsMTUgQEAgc3RhdGljIGludCBhcm1fc21tdV9h dHRhY2hfZGV2KHN0cnVjdCBpb21tdV9kb21haW4gKmRvbWFpbiwgc3RydWN0IGRldmljZSAqZGV2 KQogCQlyZXR1cm4gLUVOT0RFVjsKIAogCXNtbXUgPSBmd3NwZWNfc21tdShmd3NwZWMpOworCisJ cmV0ID0gYXJtX3NtbXVfcnBtX2dldChzbW11KTsKKwlpZiAocmV0IDwgMCkKKwkJcmV0dXJuIHJl dDsKKwogCS8qIEVuc3VyZSB0aGF0IHRoZSBkb21haW4gaXMgZmluYWxpc2VkICovCiAJcmV0ID0g YXJtX3NtbXVfaW5pdF9kb21haW5fY29udGV4dChkb21haW4sIHNtbXUpOwogCWlmIChyZXQgPCAw KQotCQlyZXR1cm4gcmV0OworCQlnb3RvIHJwbV9wdXQ7CiAKIAkvKgogCSAqIFNhbml0eSBjaGVj ayB0aGUgZG9tYWluLiBXZSBkb24ndCBzdXBwb3J0IGRvbWFpbnMgYWNyb3NzCkBAIC0xMjQzLDQ5 ICsxMjY4LDc0IEBAIHN0YXRpYyBpbnQgYXJtX3NtbXVfYXR0YWNoX2RldihzdHJ1Y3QgaW9tbXVf ZG9tYWluICpkb21haW4sIHN0cnVjdCBkZXZpY2UgKmRldikKIAkJZGV2X2VycihkZXYsCiAJCQki Y2Fubm90IGF0dGFjaCB0byBTTU1VICVzIHdoaWxzdCBhbHJlYWR5IGF0dGFjaGVkIHRvIGRvbWFp biBvbiBTTU1VICVzXG4iLAogCQkJZGV2X25hbWUoc21tdV9kb21haW4tPnNtbXUtPmRldiksIGRl dl9uYW1lKHNtbXUtPmRldikpOwotCQlyZXR1cm4gLUVJTlZBTDsKKwkJcmV0ID0gLUVJTlZBTDsK KwkJZ290byBycG1fcHV0OwogCX0KIAogCS8qIExvb2tzIG9rLCBzbyBhZGQgdGhlIGRldmljZSB0 byB0aGUgZG9tYWluICovCi0JcmV0dXJuIGFybV9zbW11X2RvbWFpbl9hZGRfbWFzdGVyKHNtbXVf ZG9tYWluLCBmd3NwZWMpOworCXJldCA9IGFybV9zbW11X2RvbWFpbl9hZGRfbWFzdGVyKHNtbXVf ZG9tYWluLCBmd3NwZWMpOworCitycG1fcHV0OgorCWFybV9zbW11X3JwbV9wdXQoc21tdSk7CisJ cmV0dXJuIHJldDsKIH0KIAogc3RhdGljIGludCBhcm1fc21tdV9tYXAoc3RydWN0IGlvbW11X2Rv bWFpbiAqZG9tYWluLCB1bnNpZ25lZCBsb25nIGlvdmEsCiAJCQlwaHlzX2FkZHJfdCBwYWRkciwg c2l6ZV90IHNpemUsIGludCBwcm90KQogewogCXN0cnVjdCBpb19wZ3RhYmxlX29wcyAqb3BzID0g dG9fc21tdV9kb21haW4oZG9tYWluKS0+cGd0Ymxfb3BzOworCXN0cnVjdCBhcm1fc21tdV9kZXZp Y2UgKnNtbXUgPSB0b19zbW11X2RvbWFpbihkb21haW4pLT5zbW11OworCWludCByZXQ7CiAKIAlp ZiAoIW9wcykKIAkJcmV0dXJuIC1FTk9ERVY7CiAKLQlyZXR1cm4gb3BzLT5tYXAob3BzLCBpb3Zh LCBwYWRkciwgc2l6ZSwgcHJvdCk7CisJYXJtX3NtbXVfcnBtX2dldChzbW11KTsKKwlyZXQgPSBv cHMtPm1hcChvcHMsIGlvdmEsIHBhZGRyLCBzaXplLCBwcm90KTsKKwlhcm1fc21tdV9ycG1fcHV0 KHNtbXUpOworCisJcmV0dXJuIHJldDsKIH0KIAogc3RhdGljIHNpemVfdCBhcm1fc21tdV91bm1h cChzdHJ1Y3QgaW9tbXVfZG9tYWluICpkb21haW4sIHVuc2lnbmVkIGxvbmcgaW92YSwKIAkJCSAg ICAgc2l6ZV90IHNpemUpCiB7CiAJc3RydWN0IGlvX3BndGFibGVfb3BzICpvcHMgPSB0b19zbW11 X2RvbWFpbihkb21haW4pLT5wZ3RibF9vcHM7CisJc3RydWN0IGFybV9zbW11X2RldmljZSAqc21t dSA9IHRvX3NtbXVfZG9tYWluKGRvbWFpbiktPnNtbXU7CisJc2l6ZV90IHJldDsKIAogCWlmICgh b3BzKQogCQlyZXR1cm4gMDsKIAotCXJldHVybiBvcHMtPnVubWFwKG9wcywgaW92YSwgc2l6ZSk7 CisJYXJtX3NtbXVfcnBtX2dldChzbW11KTsKKwlyZXQgPSBvcHMtPnVubWFwKG9wcywgaW92YSwg c2l6ZSk7CisJYXJtX3NtbXVfcnBtX3B1dChzbW11KTsKKworCXJldHVybiByZXQ7CiB9CiAKIHN0 YXRpYyB2b2lkIGFybV9zbW11X2ZsdXNoX2lvdGxiX2FsbChzdHJ1Y3QgaW9tbXVfZG9tYWluICpk b21haW4pCiB7CiAJc3RydWN0IGFybV9zbW11X2RvbWFpbiAqc21tdV9kb21haW4gPSB0b19zbW11 X2RvbWFpbihkb21haW4pOworCXN0cnVjdCBhcm1fc21tdV9kZXZpY2UgKnNtbXUgPSBzbW11X2Rv bWFpbi0+c21tdTsKIAotCWlmIChzbW11X2RvbWFpbi0+dGxiX29wcykKKwlpZiAoc21tdV9kb21h aW4tPnRsYl9vcHMpIHsKKwkJYXJtX3NtbXVfcnBtX2dldChzbW11KTsKIAkJc21tdV9kb21haW4t PnRsYl9vcHMtPnRsYl9mbHVzaF9hbGwoc21tdV9kb21haW4pOworCQlhcm1fc21tdV9ycG1fcHV0 KHNtbXUpOworCX0KIH0KIAogc3RhdGljIHZvaWQgYXJtX3NtbXVfaW90bGJfc3luYyhzdHJ1Y3Qg aW9tbXVfZG9tYWluICpkb21haW4pCiB7CiAJc3RydWN0IGFybV9zbW11X2RvbWFpbiAqc21tdV9k b21haW4gPSB0b19zbW11X2RvbWFpbihkb21haW4pOworCXN0cnVjdCBhcm1fc21tdV9kZXZpY2Ug KnNtbXUgPSBzbW11X2RvbWFpbi0+c21tdTsKIAotCWlmIChzbW11X2RvbWFpbi0+dGxiX29wcykK KwlpZiAoc21tdV9kb21haW4tPnRsYl9vcHMpIHsKKwkJYXJtX3NtbXVfcnBtX2dldChzbW11KTsK IAkJc21tdV9kb21haW4tPnRsYl9vcHMtPnRsYl9zeW5jKHNtbXVfZG9tYWluKTsKKwkJYXJtX3Nt bXVfcnBtX3B1dChzbW11KTsKKwl9CiB9CiAKIHN0YXRpYyBwaHlzX2FkZHJfdCBhcm1fc21tdV9p b3ZhX3RvX3BoeXNfaGFyZChzdHJ1Y3QgaW9tbXVfZG9tYWluICpkb21haW4sCkBAIC0xMzAwLDYg KzEzNTAsMTEgQEAgc3RhdGljIHBoeXNfYWRkcl90IGFybV9zbW11X2lvdmFfdG9fcGh5c19oYXJk KHN0cnVjdCBpb21tdV9kb21haW4gKmRvbWFpbiwKIAl1MzIgdG1wOwogCXU2NCBwaHlzOwogCXVu c2lnbmVkIGxvbmcgdmEsIGZsYWdzOworCWludCByZXQ7CisKKwlyZXQgPSBhcm1fc21tdV9ycG1f Z2V0KHNtbXUpOworCWlmIChyZXQgPCAwKQorCQlyZXR1cm4gMDsKIAogCWNiX2Jhc2UgPSBBUk1f U01NVV9DQihzbW11LCBjZmctPmNibmR4KTsKIApAQCAtMTMyOCw2ICsxMzgzLDggQEAgc3RhdGlj IHBoeXNfYWRkcl90IGFybV9zbW11X2lvdmFfdG9fcGh5c19oYXJkKHN0cnVjdCBpb21tdV9kb21h aW4gKmRvbWFpbiwKIAkJcmV0dXJuIDA7CiAJfQogCisJYXJtX3NtbXVfcnBtX3B1dChzbW11KTsK KwogCXJldHVybiAocGh5cyAmIEdFTk1BU0tfVUxMKDM5LCAxMikpIHwgKGlvdmEgJiAweGZmZik7 CiB9CiAKQEAgLTE0MzIsNyArMTQ4OSwxMyBAQCBzdGF0aWMgaW50IGFybV9zbW11X2FkZF9kZXZp Y2Uoc3RydWN0IGRldmljZSAqZGV2KQogCXdoaWxlIChpLS0pCiAJCWNmZy0+c21lbmR4W2ldID0g SU5WQUxJRF9TTUVORFg7CiAKKwlyZXQgPSBhcm1fc21tdV9ycG1fZ2V0KHNtbXUpOworCWlmIChy ZXQgPCAwKQorCQlnb3RvIG91dF9jZmdfZnJlZTsKKwogCXJldCA9IGFybV9zbW11X21hc3Rlcl9h bGxvY19zbWVzKGRldik7CisJYXJtX3NtbXVfcnBtX3B1dChzbW11KTsKKwogCWlmIChyZXQpCiAJ CWdvdG8gb3V0X2NmZ19mcmVlOwogCkBAIC0xNDUyLDcgKzE1MTUsNyBAQCBzdGF0aWMgdm9pZCBh cm1fc21tdV9yZW1vdmVfZGV2aWNlKHN0cnVjdCBkZXZpY2UgKmRldikKIAlzdHJ1Y3QgaW9tbXVf ZndzcGVjICpmd3NwZWMgPSBkZXYtPmlvbW11X2Z3c3BlYzsKIAlzdHJ1Y3QgYXJtX3NtbXVfbWFz dGVyX2NmZyAqY2ZnOwogCXN0cnVjdCBhcm1fc21tdV9kZXZpY2UgKnNtbXU7Ci0KKwlpbnQgcmV0 OwogCiAJaWYgKCFmd3NwZWMgfHwgZndzcGVjLT5vcHMgIT0gJmFybV9zbW11X29wcykKIAkJcmV0 dXJuOwpAQCAtMTQ2MCw4ICsxNTIzLDE1IEBAIHN0YXRpYyB2b2lkIGFybV9zbW11X3JlbW92ZV9k ZXZpY2Uoc3RydWN0IGRldmljZSAqZGV2KQogCWNmZyAgPSBmd3NwZWMtPmlvbW11X3ByaXY7CiAJ c21tdSA9IGNmZy0+c21tdTsKIAorCXJldCA9IGFybV9zbW11X3JwbV9nZXQoc21tdSk7CisJaWYg KHJldCA8IDApCisJCXJldHVybjsKKwogCWlvbW11X2RldmljZV91bmxpbmsoJnNtbXUtPmlvbW11 LCBkZXYpOwogCWFybV9zbW11X21hc3Rlcl9mcmVlX3NtZXMoZndzcGVjKTsKKworCWFybV9zbW11 X3JwbV9wdXQoc21tdSk7CisKIAlpb21tdV9ncm91cF9yZW1vdmVfZGV2aWNlKGRldik7CiAJa2Zy ZWUoZndzcGVjLT5pb21tdV9wcml2KTsKIAlpb21tdV9md3NwZWNfZnJlZShkZXYpOwpAQCAtMjI1 NSw2ICsyMzI1LDE3IEBAIHN0YXRpYyBpbnQgYXJtX3NtbXVfZGV2aWNlX3Byb2JlKHN0cnVjdCBw bGF0Zm9ybV9kZXZpY2UgKnBkZXYpCiAJYXJtX3NtbXVfZGV2aWNlX3Jlc2V0KHNtbXUpOwogCWFy bV9zbW11X3Rlc3Rfc21yX21hc2tzKHNtbXUpOwogCisJLyoKKwkgKiBXZSB3YW50IHRvIGF2b2lk IHRvdWNoaW5nIGRldi0+cG93ZXIubG9jayBpbiBmYXN0cGF0aHMgdW5sZXNzCisJICogaXQncyBy ZWFsbHkgZ29pbmcgdG8gZG8gc29tZXRoaW5nIHVzZWZ1bCAtIHBtX3J1bnRpbWVfZW5hYmxlZCgp CisJICogY2FuIHNlcnZlIGFzIGFuIGlkZWFsIHByb3h5IGZvciB0aGF0IGRlY2lzaW9uLiBTbywg Y29uZGl0aW9uYWxseQorCSAqIGVuYWJsZSBwbV9ydW50aW1lLgorCSAqLworCWlmIChkZXYtPnBt X2RvbWFpbikgeworCQlwbV9ydW50aW1lX3NldF9hY3RpdmUoZGV2KTsKKwkJcG1fcnVudGltZV9l bmFibGUoZGV2KTsKKwl9CisKIAkvKgogCSAqIEZvciBBQ1BJIGFuZCBnZW5lcmljIERUIGJpbmRp bmdzLCBhbiBTTU1VIHdpbGwgYmUgcHJvYmVkIGJlZm9yZQogCSAqIGFueSBkZXZpY2Ugd2hpY2gg bWlnaHQgbmVlZCBpdCwgc28gd2Ugd2FudCB0aGUgYnVzIG9wcyBpbiBwbGFjZQpAQCAtMjI5MCwx MCArMjM3MSwxNyBAQCBzdGF0aWMgaW50IGFybV9zbW11X2RldmljZV9yZW1vdmUoc3RydWN0IHBs YXRmb3JtX2RldmljZSAqcGRldikKIAlpZiAoIWJpdG1hcF9lbXB0eShzbW11LT5jb250ZXh0X21h cCwgQVJNX1NNTVVfTUFYX0NCUykpCiAJCWRldl9lcnIoJnBkZXYtPmRldiwgInJlbW92aW5nIGRl dmljZSB3aXRoIGFjdGl2ZSBkb21haW5zIVxuIik7CiAKKwlhcm1fc21tdV9ycG1fZ2V0KHNtbXUp OwogCS8qIFR1cm4gdGhlIHRoaW5nIG9mZiAqLwogCXdyaXRlbChzQ1IwX0NMSUVOVFBELCBBUk1f U01NVV9HUjBfTlMoc21tdSkgKyBBUk1fU01NVV9HUjBfc0NSMCk7CisJYXJtX3NtbXVfcnBtX3B1 dChzbW11KTsKKworCWlmIChwbV9ydW50aW1lX2VuYWJsZWQoc21tdS0+ZGV2KSkKKwkJcG1fcnVu dGltZV9mb3JjZV9zdXNwZW5kKHNtbXUtPmRldik7CisJZWxzZQorCQljbGtfYnVsa19kaXNhYmxl KHNtbXUtPm51bV9jbGtzLCBzbW11LT5jbGtzKTsKIAotCWNsa19idWxrX2Rpc2FibGVfdW5wcmVw YXJlKHNtbXUtPm51bV9jbGtzLCBzbW11LT5jbGtzKTsKKwljbGtfYnVsa191bnByZXBhcmUoc21t dS0+bnVtX2Nsa3MsIHNtbXUtPmNsa3MpOwogCiAJcmV0dXJuIDA7CiB9Ci0tIApRVUFMQ09NTSBJ TkRJQSwgb24gYmVoYWxmIG9mIFF1YWxjb21tIElubm92YXRpb24gQ2VudGVyLCBJbmMuIGlzIGEg bWVtYmVyCm9mIENvZGUgQXVyb3JhIEZvcnVtLCBob3N0ZWQgYnkgVGhlIExpbnV4IEZvdW5kYXRp b24KCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkZyZWVk cmVubyBtYWlsaW5nIGxpc3QKRnJlZWRyZW5vQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczov L2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ZyZWVkcmVubwo=