From mboxrd@z Thu Jan 1 00:00:00 1970 From: Roger Pau Monne Subject: [PATCH v7 08/32] libxc: rework BSP initialization Date: Fri, 2 Oct 2015 17:48:39 +0200 Message-ID: <1443800943-17668-9-git-send-email-roger.pau@citrix.com> References: <1443800943-17668-1-git-send-email-roger.pau@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta5.messagelabs.com ([195.245.231.135]) by lists.xen.org with esmtp (Exim 4.72) (envelope-from ) id 1Zi2aK-0008OY-5l for xen-devel@lists.xenproject.org; Fri, 02 Oct 2015 15:49:24 +0000 In-Reply-To: <1443800943-17668-1-git-send-email-roger.pau@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: xen-devel@lists.xenproject.org Cc: Wei Liu , Stefano Stabellini , Ian Jackson , Ian Campbell , Roger Pau Monne List-Id: xen-devel@lists.xenproject.org UGxhY2UgdGhlIGNhbGxzIHRvIHhjX3ZjcHVfc2V0Y29udGV4dCBhbmQgdGhlIGFsbG9jYXRpb24g b2YgdGhlIGh5cGVyY2FsbApidWZmZXIgaW50byB0aGUgYXJjaC1zcGVjaWZpYyB2Y3B1IGhvb2tz LiBUaGlzIGlzIG5lZWRlZCBpbiBvcmRlciB0bwppbnRyb2R1Y2UgYSBuZXcgYnVpbGRlciwgc28g eDg2IEhWTSBndWVzdHMgY2FuIGluaXRpYWxpemUgdGhlIEJTUCB1c2luZwpYRU5fRE9NQ1RMX3Nl dGh2bWNvbnRleHQgaW5zdGVhZCBvZiBYRU5fRE9NQ1RMX3NldHZjcHVjb250ZXh0LgoKVGhpcyBw YXRjaCBzaG91bGQgbm90IGludHJvZHVjZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2UuCgpTaWduZWQt b2ZmLWJ5OiBSb2dlciBQYXUgTW9ubsOpIDxyb2dlci5wYXVAY2l0cml4LmNvbT4KUmV2aWV3ZWQt Ynk6IEFuZHJldyBDb29wZXIgPGFuZHJldy5jb29wZXIzQGNpdHJpeC5jb20+CkFja2VkLWJ5OiBX ZWkgTGl1IDx3ZWkubGl1MkBjaXRyaXguY29tPgpDYzogSWFuIEphY2tzb24gPGlhbi5qYWNrc29u QGV1LmNpdHJpeC5jb20+CkNjOiBTdGVmYW5vIFN0YWJlbGxpbmkgPHN0ZWZhbm8uc3RhYmVsbGlu aUBldS5jaXRyaXguY29tPgpDYzogSWFuIENhbXBiZWxsIDxpYW4uY2FtcGJlbGxAY2l0cml4LmNv bT4KQ2M6IFdlaSBMaXUgPHdlaS5saXUyQGNpdHJpeC5jb20+Ci0tLQpDaGFuZ2VzIHNpbmNlIHY1 OgogLSBSZXdvcmQgY29tbWl0IG1lc3NhZ2UgdG8gcmVtb3ZlIGEgcmVmZXJlbmNlIHRvICJuZXh0 IHBhdGNoIi4KCkNoYW5nZXMgc2luY2UgdjQ6CiAtIEFkZCBBbmRyZXcgQ29vcGVyIFJldmlld2Vk LWJ5LgotLS0KIHRvb2xzL2xpYnhjL2luY2x1ZGUveGNfZG9tLmggfCAgMiArLQogdG9vbHMvbGli eGMveGNfZG9tX2FybS5jICAgICB8IDI2ICsrKysrKysrKysrKysrKysrKy0tLS0tLQogdG9vbHMv bGlieGMveGNfZG9tX2Jvb3QuYyAgICB8IDIzICstLS0tLS0tLS0tLS0tLS0tLS0tLQogdG9vbHMv bGlieGMveGNfZG9tX3g4Ni5jICAgICB8IDQ4ICsrKysrKysrKysrKysrKysrKysrKysrKysrKyst LS0tLS0tLS0tLS0tLS0tCiA0IGZpbGVzIGNoYW5nZWQsIDUzIGluc2VydGlvbnMoKyksIDQ2IGRl bGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnhjL2luY2x1ZGUveGNfZG9tLmggYi90 b29scy9saWJ4Yy9pbmNsdWRlL3hjX2RvbS5oCmluZGV4IGNlZDZhZTIuLjI0OThjZjcgMTAwNjQ0 Ci0tLSBhL3Rvb2xzL2xpYnhjL2luY2x1ZGUveGNfZG9tLmgKKysrIGIvdG9vbHMvbGlieGMvaW5j bHVkZS94Y19kb20uaApAQCAtMjE5LDcgKzIxOSw3IEBAIHN0cnVjdCB4Y19kb21fYXJjaCB7CiAg ICAgLyogYXJjaC1zcGVjaWZpYyBkYXRhIHN0cnVjdHMgc2V0dXAgKi8KICAgICBpbnQgKCpzdGFy dF9pbmZvKSAoc3RydWN0IHhjX2RvbV9pbWFnZSAqIGRvbSk7CiAgICAgaW50ICgqc2hhcmVkX2lu Zm8pIChzdHJ1Y3QgeGNfZG9tX2ltYWdlICogZG9tLCB2b2lkICpzaGFyZWRfaW5mbyk7Ci0gICAg aW50ICgqdmNwdSkgKHN0cnVjdCB4Y19kb21faW1hZ2UgKiBkb20sIHZvaWQgKnZjcHVfY3R4dCk7 CisgICAgaW50ICgqdmNwdSkgKHN0cnVjdCB4Y19kb21faW1hZ2UgKiBkb20pOwogICAgIGludCAo KmJvb3RlYXJseSkgKHN0cnVjdCB4Y19kb21faW1hZ2UgKiBkb20pOwogICAgIGludCAoKmJvb3Rs YXRlKSAoc3RydWN0IHhjX2RvbV9pbWFnZSAqIGRvbSk7CiAKZGlmZiAtLWdpdCBhL3Rvb2xzL2xp YnhjL3hjX2RvbV9hcm0uYyBiL3Rvb2xzL2xpYnhjL3hjX2RvbV9hcm0uYwppbmRleCBlYzNhNzU3 Li4zOTdlZWYwIDEwMDY0NAotLS0gYS90b29scy9saWJ4Yy94Y19kb21fYXJtLmMKKysrIGIvdG9v bHMvbGlieGMveGNfZG9tX2FybS5jCkBAIC0xMTksOSArMTE5LDExIEBAIHN0YXRpYyBpbnQgc2hh cmVkX2luZm9fYXJtKHN0cnVjdCB4Y19kb21faW1hZ2UgKmRvbSwgdm9pZCAqcHRyKQogCiAvKiAt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0gKi8KIAotc3RhdGljIGludCB2Y3B1X2FybTMyKHN0cnVjdCB4Y19kb21f aW1hZ2UgKmRvbSwgdm9pZCAqcHRyKQorc3RhdGljIGludCB2Y3B1X2FybTMyKHN0cnVjdCB4Y19k b21faW1hZ2UgKmRvbSkKIHsKLSAgICB2Y3B1X2d1ZXN0X2NvbnRleHRfdCAqY3R4dCA9IHB0cjsK KyAgICB2Y3B1X2d1ZXN0X2NvbnRleHRfYW55X3QgYW55X2N0eDsKKyAgICB2Y3B1X2d1ZXN0X2Nv bnRleHRfdCAqY3R4dCA9ICZhbnlfY3R4LmM7CisgICAgaW50IHJjOwogCiAgICAgRE9NUFJJTlRG X0NBTExFRChkb20tPnhjaCk7CiAKQEAgLTE1NCwxMiArMTU2LDE5IEBAIHN0YXRpYyBpbnQgdmNw dV9hcm0zMihzdHJ1Y3QgeGNfZG9tX2ltYWdlICpkb20sIHZvaWQgKnB0cikKICAgICBET01QUklO VEYoIkluaXRpYWwgc3RhdGUgQ1BTUiAlIyJQUkl4MzIiIFBDICUjIlBSSXgzMiwKICAgICAgICAg ICAgY3R4dC0+dXNlcl9yZWdzLmNwc3IsIGN0eHQtPnVzZXJfcmVncy5wYzMyKTsKIAotICAgIHJl dHVybiAwOworICAgIHJjID0geGNfdmNwdV9zZXRjb250ZXh0KGRvbS0+eGNoLCBkb20tPmd1ZXN0 X2RvbWlkLCAwLCAmYW55X2N0eCk7CisgICAgaWYgKCByYyAhPSAwICkKKyAgICAgICAgeGNfZG9t X3BhbmljKGRvbS0+eGNoLCBYQ19JTlRFUk5BTF9FUlJPUiwKKyAgICAgICAgICAgICAgICAgICAg ICIlczogU0VUVkNQVUNPTlRFWFQgZmFpbGVkIChyYz0lZCkiLCBfX2Z1bmNfXywgcmMpOworCisg ICAgcmV0dXJuIHJjOwogfQogCi1zdGF0aWMgaW50IHZjcHVfYXJtNjQoc3RydWN0IHhjX2RvbV9p bWFnZSAqZG9tLCB2b2lkICpwdHIpCitzdGF0aWMgaW50IHZjcHVfYXJtNjQoc3RydWN0IHhjX2Rv bV9pbWFnZSAqZG9tKQogewotICAgIHZjcHVfZ3Vlc3RfY29udGV4dF90ICpjdHh0ID0gcHRyOwor ICAgIHZjcHVfZ3Vlc3RfY29udGV4dF9hbnlfdCBhbnlfY3R4OworICAgIHZjcHVfZ3Vlc3RfY29u dGV4dF90ICpjdHh0ID0gJmFueV9jdHguYzsKKyAgICBpbnQgcmM7CiAKICAgICBET01QUklOVEZf Q0FMTEVEKGRvbS0+eGNoKTsKICAgICAvKiBjbGVhciBldmVyeXRoaW5nICovCkBAIC0xODksNyAr MTk4LDEyIEBAIHN0YXRpYyBpbnQgdmNwdV9hcm02NChzdHJ1Y3QgeGNfZG9tX2ltYWdlICpkb20s IHZvaWQgKnB0cikKICAgICBET01QUklOVEYoIkluaXRpYWwgc3RhdGUgQ1BTUiAlIyJQUkl4MzIi IFBDICUjIlBSSXg2NCwKICAgICAgICAgICAgY3R4dC0+dXNlcl9yZWdzLmNwc3IsIGN0eHQtPnVz ZXJfcmVncy5wYzY0KTsKIAotICAgIHJldHVybiAwOworICAgIHJjID0geGNfdmNwdV9zZXRjb250 ZXh0KGRvbS0+eGNoLCBkb20tPmd1ZXN0X2RvbWlkLCAwLCAmYW55X2N0eCk7CisgICAgaWYgKCBy YyAhPSAwICkKKyAgICAgICAgeGNfZG9tX3BhbmljKGRvbS0+eGNoLCBYQ19JTlRFUk5BTF9FUlJP UiwKKyAgICAgICAgICAgICAgICAgICAgICIlczogU0VUVkNQVUNPTlRFWFQgZmFpbGVkIChyYz0l ZCkiLCBfX2Z1bmNfXywgcmMpOworCisgICAgcmV0dXJuIHJjOwogfQogCiAvKiAtLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0gKi8KZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnhjL3hjX2RvbV9ib290LmMgYi90b29scy9s aWJ4Yy94Y19kb21fYm9vdC5jCmluZGV4IGU2Zjc3OTQuLjc5MTA0MWIgMTAwNjQ0Ci0tLSBhL3Rv b2xzL2xpYnhjL3hjX2RvbV9ib290LmMKKysrIGIvdG9vbHMvbGlieGMveGNfZG9tX2Jvb3QuYwpA QCAtNjIsMTkgKzYyLDYgQEAgc3RhdGljIGludCBzZXR1cF9oeXBlcmNhbGxfcGFnZShzdHJ1Y3Qg eGNfZG9tX2ltYWdlICpkb20pCiAgICAgcmV0dXJuIHJjOwogfQogCi1zdGF0aWMgaW50IGxhdW5j aF92bSh4Y19pbnRlcmZhY2UgKnhjaCwgZG9taWRfdCBkb21pZCwKLSAgICAgICAgICAgICAgICAg ICAgIHZjcHVfZ3Vlc3RfY29udGV4dF9hbnlfdCAqY3R4dCkKLXsKLSAgICBpbnQgcmM7Ci0KLSAg ICB4Y19kb21fcHJpbnRmKHhjaCwgIiVzOiBjYWxsZWQsIGN0eHQ9JXAiLCBfX0ZVTkNUSU9OX18s IGN0eHQpOwotICAgIHJjID0geGNfdmNwdV9zZXRjb250ZXh0KHhjaCwgZG9taWQsIDAsIGN0eHQp OwotICAgIGlmICggcmMgIT0gMCApCi0gICAgICAgIHhjX2RvbV9wYW5pYyh4Y2gsIFhDX0lOVEVS TkFMX0VSUk9SLAotICAgICAgICAgICAgICAgICAgICAgIiVzOiBTRVRWQ1BVQ09OVEVYVCBmYWls ZWQgKHJjPSVkKSIsIF9fRlVOQ1RJT05fXywgcmMpOwotICAgIHJldHVybiByYzsKLX0KLQogc3Rh dGljIGludCBjbGVhcl9wYWdlKHN0cnVjdCB4Y19kb21faW1hZ2UgKmRvbSwgeGVuX3Bmbl90IHBm bikKIHsKICAgICB4ZW5fcGZuX3QgZHN0OwpAQCAtMTk3LDE0ICsxODQsOSBAQCB2b2lkICp4Y19k b21fYm9vdF9kb21VX21hcChzdHJ1Y3QgeGNfZG9tX2ltYWdlICpkb20sIHhlbl9wZm5fdCBwZm4s CiAKIGludCB4Y19kb21fYm9vdF9pbWFnZShzdHJ1Y3QgeGNfZG9tX2ltYWdlICpkb20pCiB7Ci0g ICAgREVDTEFSRV9IWVBFUkNBTExfQlVGRkVSKHZjcHVfZ3Vlc3RfY29udGV4dF9hbnlfdCwgY3R4 dCk7CiAgICAgeGNfZG9taW5mb190IGluZm87CiAgICAgaW50IHJjOwogCi0gICAgY3R4dCA9IHhj X2h5cGVyY2FsbF9idWZmZXJfYWxsb2MoZG9tLT54Y2gsIGN0eHQsIHNpemVvZigqY3R4dCkpOwot ICAgIGlmICggY3R4dCA9PSBOVUxMICkKLSAgICAgICAgcmV0dXJuIC0xOwotCiAgICAgRE9NUFJJ TlRGX0NBTExFRChkb20tPnhjaCk7CiAKICAgICAvKiBtaXNjIHN0dWZmKi8KQEAgLTI1OSwxMyAr MjQxLDEwIEBAIGludCB4Y19kb21fYm9vdF9pbWFnZShzdHJ1Y3QgeGNfZG9tX2ltYWdlICpkb20p CiAgICAgICAgIHJldHVybiByYzsKIAogICAgIC8qIGxldCB0aGUgdm0gcnVuICovCi0gICAgbWVt c2V0KGN0eHQsIDAsIHNpemVvZigqY3R4dCkpOwotICAgIGlmICggKHJjID0gZG9tLT5hcmNoX2hv b2tzLT52Y3B1KGRvbSwgY3R4dCkpICE9IDAgKQorICAgIGlmICggKHJjID0gZG9tLT5hcmNoX2hv b2tzLT52Y3B1KGRvbSkpICE9IDAgKQogICAgICAgICByZXR1cm4gcmM7CiAgICAgeGNfZG9tX3Vu bWFwX2FsbChkb20pOwotICAgIHJjID0gbGF1bmNoX3ZtKGRvbS0+eGNoLCBkb20tPmd1ZXN0X2Rv bWlkLCBjdHh0KTsKIAotICAgIHhjX2h5cGVyY2FsbF9idWZmZXJfZnJlZShkb20tPnhjaCwgY3R4 dCk7CiAgICAgcmV0dXJuIHJjOwogfQogCmRpZmYgLS1naXQgYS90b29scy9saWJ4Yy94Y19kb21f eDg2LmMgYi90b29scy9saWJ4Yy94Y19kb21feDg2LmMKaW5kZXggYjQ4ZGMxYi4uYWI4ODk5NiAx MDA2NDQKLS0tIGEvdG9vbHMvbGlieGMveGNfZG9tX3g4Ni5jCisrKyBiL3Rvb2xzL2xpYnhjL3hj X2RvbV94ODYuYwpAQCAtNTg0LDEwICs1ODQsMTIgQEAgc3RhdGljIGludCBzaGFyZWRfaW5mb194 ODZfNjQoc3RydWN0IHhjX2RvbV9pbWFnZSAqZG9tLCB2b2lkICpwdHIpCiAKIC8qIC0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSAqLwogCi1zdGF0aWMgaW50IHZjcHVfeDg2XzMyKHN0cnVjdCB4Y19kb21faW1hZ2Ug KmRvbSwgdm9pZCAqcHRyKQorc3RhdGljIGludCB2Y3B1X3g4Nl8zMihzdHJ1Y3QgeGNfZG9tX2lt YWdlICpkb20pCiB7Ci0gICAgdmNwdV9ndWVzdF9jb250ZXh0X3g4Nl8zMl90ICpjdHh0ID0gcHRy OworICAgIHZjcHVfZ3Vlc3RfY29udGV4dF9hbnlfdCBhbnlfY3R4OworICAgIHZjcHVfZ3Vlc3Rf Y29udGV4dF94ODZfMzJfdCAqY3R4dCA9ICZhbnlfY3R4LngzMjsKICAgICB4ZW5fcGZuX3QgY3Iz X3BmbjsKKyAgICBpbnQgcmM7CiAKICAgICBET01QUklOVEZfQ0FMTEVEKGRvbS0+eGNoKTsKIApA QCAtNjExLDI2ICs2MTMsMzMgQEAgc3RhdGljIGludCB2Y3B1X3g4Nl8zMihzdHJ1Y3QgeGNfZG9t X2ltYWdlICpkb20sIHZvaWQgKnB0cikKICAgICBET01QUklOVEYoIiVzOiBjcjM6IHBmbiAweCUi IFBSSXBmbiAiIG1mbiAweCUiIFBSSXBmbiAiIiwKICAgICAgICAgICAgICAgX19GVU5DVElPTl9f LCBkb20tPnBndGFibGVzX3NlZy5wZm4sIGNyM19wZm4pOwogCi0gICAgaWYgKCBkb20tPnB2aF9l bmFibGVkICkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBjdHh0LT51c2VyX3JlZ3MuZHMgPSBG TEFUX0tFUk5FTF9EU19YODZfMzI7Ci0gICAgY3R4dC0+dXNlcl9yZWdzLmVzID0gRkxBVF9LRVJO RUxfRFNfWDg2XzMyOwotICAgIGN0eHQtPnVzZXJfcmVncy5mcyA9IEZMQVRfS0VSTkVMX0RTX1g4 Nl8zMjsKLSAgICBjdHh0LT51c2VyX3JlZ3MuZ3MgPSBGTEFUX0tFUk5FTF9EU19YODZfMzI7Ci0g ICAgY3R4dC0+dXNlcl9yZWdzLnNzID0gRkxBVF9LRVJORUxfU1NfWDg2XzMyOwotICAgIGN0eHQt PnVzZXJfcmVncy5jcyA9IEZMQVRfS0VSTkVMX0NTX1g4Nl8zMjsKKyAgICBpZiAoICFkb20tPnB2 aF9lbmFibGVkICkKKyAgICB7CisgICAgICAgIGN0eHQtPnVzZXJfcmVncy5kcyA9IEZMQVRfS0VS TkVMX0RTX1g4Nl8zMjsKKyAgICAgICAgY3R4dC0+dXNlcl9yZWdzLmVzID0gRkxBVF9LRVJORUxf RFNfWDg2XzMyOworICAgICAgICBjdHh0LT51c2VyX3JlZ3MuZnMgPSBGTEFUX0tFUk5FTF9EU19Y ODZfMzI7CisgICAgICAgIGN0eHQtPnVzZXJfcmVncy5ncyA9IEZMQVRfS0VSTkVMX0RTX1g4Nl8z MjsKKyAgICAgICAgY3R4dC0+dXNlcl9yZWdzLnNzID0gRkxBVF9LRVJORUxfU1NfWDg2XzMyOwor ICAgICAgICBjdHh0LT51c2VyX3JlZ3MuY3MgPSBGTEFUX0tFUk5FTF9DU19YODZfMzI7CisKKyAg ICAgICAgY3R4dC0+a2VybmVsX3NzID0gY3R4dC0+dXNlcl9yZWdzLnNzOworICAgICAgICBjdHh0 LT5rZXJuZWxfc3AgPSBjdHh0LT51c2VyX3JlZ3MuZXNwOworICAgIH0KIAotICAgIGN0eHQtPmtl cm5lbF9zcyA9IGN0eHQtPnVzZXJfcmVncy5zczsKLSAgICBjdHh0LT5rZXJuZWxfc3AgPSBjdHh0 LT51c2VyX3JlZ3MuZXNwOworICAgIHJjID0geGNfdmNwdV9zZXRjb250ZXh0KGRvbS0+eGNoLCBk b20tPmd1ZXN0X2RvbWlkLCAwLCAmYW55X2N0eCk7CisgICAgaWYgKCByYyAhPSAwICkKKyAgICAg ICAgeGNfZG9tX3BhbmljKGRvbS0+eGNoLCBYQ19JTlRFUk5BTF9FUlJPUiwKKyAgICAgICAgICAg ICAgICAgICAgICIlczogU0VUVkNQVUNPTlRFWFQgZmFpbGVkIChyYz0lZCkiLCBfX2Z1bmNfXywg cmMpOwogCi0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIHJjOwogfQogCi1zdGF0aWMgaW50IHZj cHVfeDg2XzY0KHN0cnVjdCB4Y19kb21faW1hZ2UgKmRvbSwgdm9pZCAqcHRyKQorc3RhdGljIGlu dCB2Y3B1X3g4Nl82NChzdHJ1Y3QgeGNfZG9tX2ltYWdlICpkb20pCiB7Ci0gICAgdmNwdV9ndWVz dF9jb250ZXh0X3g4Nl82NF90ICpjdHh0ID0gcHRyOworICAgIHZjcHVfZ3Vlc3RfY29udGV4dF9h bnlfdCBhbnlfY3R4OworICAgIHZjcHVfZ3Vlc3RfY29udGV4dF94ODZfNjRfdCAqY3R4dCA9ICZh bnlfY3R4Lng2NDsKICAgICB4ZW5fcGZuX3QgY3IzX3BmbjsKKyAgICBpbnQgcmM7CiAKICAgICBE T01QUklOVEZfQ0FMTEVEKGRvbS0+eGNoKTsKIApAQCAtNjYzLDcgKzY3MiwxMiBAQCBzdGF0aWMg aW50IHZjcHVfeDg2XzY0KHN0cnVjdCB4Y19kb21faW1hZ2UgKmRvbSwgdm9pZCAqcHRyKQogICAg IGN0eHQtPmtlcm5lbF9zcyA9IGN0eHQtPnVzZXJfcmVncy5zczsKICAgICBjdHh0LT5rZXJuZWxf c3AgPSBjdHh0LT51c2VyX3JlZ3MuZXNwOwogCi0gICAgcmV0dXJuIDA7CisgICAgcmMgPSB4Y192 Y3B1X3NldGNvbnRleHQoZG9tLT54Y2gsIGRvbS0+Z3Vlc3RfZG9taWQsIDAsICZhbnlfY3R4KTsK KyAgICBpZiAoIHJjICE9IDAgKQorICAgICAgICB4Y19kb21fcGFuaWMoZG9tLT54Y2gsIFhDX0lO VEVSTkFMX0VSUk9SLAorICAgICAgICAgICAgICAgICAgICAgIiVzOiBTRVRWQ1BVQ09OVEVYVCBm YWlsZWQgKHJjPSVkKSIsIF9fZnVuY19fLCByYyk7CisKKyAgICByZXR1cm4gcmM7CiB9CiAKIC8q IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSAqLwotLSAKMS45LjUgKEFwcGxlIEdpdC01MC4zKQoKCl9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5n IGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cDovL2xpc3RzLnhlbi5vcmcveGVuLWRl dmVsCg==