From mboxrd@z Thu Jan 1 00:00:00 1970 From: Govinda Tatti Subject: [PATCH V2] Xen/pciback: Implement PCI slot or bus reset with 'do_flr' SysFS attribute Date: Wed, 8 Nov 2017 18:06:54 -0500 Message-ID: <20171108230654.2981-1-Govinda.Tatti@Oracle.COM> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta3.messagelabs.com ([195.245.230.39]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1eCZXO-0006v6-GF for xen-devel@lists.xenproject.org; Wed, 08 Nov 2017 23:13:38 +0000 List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xenproject.org, linux-kernel@vger.kernel.org, boris.ostrovsky@Oracle.COM, jgross@suse.com, roger.pau@citrix.com, JBeulich@suse.com Cc: konrad.wilk@Oracle.COM List-Id: xen-devel@lists.xenproject.org VGhlIGxpZmUtY3ljbGUgb2YgYSBQQ0kgZGV2aWNlIGluIFhlbiBwY2liYWNrIGlzIGNvbXBsZXgg YW5kIGlzIGNvbnN0cmFpbmVkCmJ5IHRoZSBnZW5lcmljIFBDSSBsb2NraW5nIG1lY2hhbmlzbS4K Ci0gSXQgc3RhcnRzIHdpdGggdGhlIGRldmljZSBiZWluZyBib3VuZCB0byB1cywgZm9yIHdoaWNo IHdlIGRvIGEgZnVuY3Rpb24KICByZXNldCAoZG9uZSB2aWEgU3lzRlMgc28gdGhlIFBDSSBsb2Nr IGlzIGhlbGQpLgotIElmIHRoZSBkZXZpY2UgaXMgdW5ib3VuZCBmcm9tIHVzLCB3ZSBhbHNvIGRv IGEgZnVuY3Rpb24gcmVzZXQKICAoZG9uZSB2aWEgU3lzRlMgc28gdGhlIFBDSSBsb2NrIGlzIGhl bGQpLgotIElmIHRoZSBkZXZpY2UgaXMgdW4tYXNzaWduZWQgZnJvbSBhIGd1ZXN0IC0gd2UgZG8g YSBmdW5jdGlvbiByZXNldAogIChubyBQQ0kgbG9jayBpcyBoZWxkKS4KCkFsbCByZXNldCBvcGVy YXRpb25zIGFyZSBkb25lIG9uIHRoZSBpbmRpdmlkdWFsIFBDSSBmdW5jdGlvbiBsZXZlbAooc28g YnVzOmRldmljZTpmdW5jdGlvbikuCgpUaGUgcmVzZXQgZm9yIGFuIGluZGl2aWR1YWwgUENJIGZ1 bmN0aW9uIG1lYW5zIGRldmljZSBtdXN0IHN1cHBvcnQgRkxSCihQQ0llIG9yIEFGKSwgUE0gcmVz ZXQgb24gRDNob3QtPkQwIGRldmljZSBzcGVjaWZpYyByZXNldCwgb3IgYSBzZWNvbmRhcnkKYnVz IHJlc2V0IGZvciBhIHNpbmdsZXRvbiBkZXZpY2Ugb24gYSBidXMgYnV0IEZMUiBkb2VzIG5vdCBo YXZlIHdpZGVzcHJlYWQKc3VwcG9ydCBvciBpdCBpcyBub3QgcmVsaWFibGUgaW4gc29tZSBjYXNl cy4gU28sIHdlIG5lZWQgdG8gcHJvdmlkZSBhbgphbHRlcm5hdGUgbWVjaGFuaXNtIHRvIHVzZXJz IHRvIHBlcmZvcm0gYSBzbG90IG9yIGJ1cyBsZXZlbCByZXNldC4KCkN1cnJlbnRseSwgYSBzbG90 IG9yIGJ1cyByZXNldCBpcyBub3QgZXhwb3NlZCBpbiBTeXNGUyBhcyB0aGVyZSBpcyBubyBnb29k CndheSBvZiBleHBvc2luZyBhIGJ1cyB0b3BvbG9neSB0aGVyZS4gVGhpcyBpcyBkdWUgdG8gdGhl IGNvbXBsZXhpdHkgLQp3ZSBNVVNUIGtub3cgdGhhdCB0aGUgZGlmZmVyZW50IGZ1bmN0aW9ucyBv ZiBhIFBDSWUgZGV2aWNlIGFyZSBub3QgaW4gdXNlCmJ5IG90aGVyIGRyaXZlcnMsIG9yIGlmIHRo ZXkgYXJlIGluIHVzZSAoc2F5IG9uZSBvZiB0aGVtIGlzIGFzc2lnbmVkIHRvIGEKZ3Vlc3QgYW5k IHRoZSBvdGhlciBpcyAgaWRsZSkgLSBpdCBpcyBzdGlsbCBPSyB0byByZXNldCB0aGUgc2xvdCAo YXNzdW1pbmcKYm90aCBvZiB0aGVtIGFyZSBvd25lZCBieSBYZW4gcGNpYmFjaykuCgpUaGlzIHBh dGNoIGRvZXMgdGhhdCBieSBkb2luZyBhIHNsb3Qgb3IgYnVzIHJlc2V0IChpZiBzbG90IG5vdCBz dXBwb3J0ZWQpCmlmIGFsbCBvZiB0aGUgZnVuY3Rpb25zIG9mIGEgUENJZSBkZXZpY2UgYmVsb25n IHRvIFhlbiBQQ0liYWNrLgoKRHVlIHRvIHRoZSBjb21wbGV4aXR5IHdpdGggdGhlIFBDSSBsb2Nr IHdlIGNhbm5vdCBkbyB0aGUgcmVzZXQgd2hlbiBhCmRldmljZSBpcyBib3VuZCAoJ2VjaG8gJEJE RiA+IGJpbmQnKSBvciB3aGVuIHVuYm91bmQgKCdlY2hvICRCREYgPiB1bmJpbmQnKQphcyB0aGUg cGNpX1tzbG90fGJ1c11fcmVzZXQgYWxzbyB0YWtlcyB0aGUgc2FtZSBsb2NrIHJlc3VsdGluZyBp biBhCmRlYWQtbG9jay4KClB1dHRpbmcgdGhlIHJlc2V0IGZ1bmN0aW9uIGluIGEgd29yay1xdWV1 ZSBvciB0aHJlYWQgd29uJ3Qgd29yayBlaXRoZXIgLQphcyB3ZSBoYXZlIHRvIGRvIHRoZSByZXNl dCBmdW5jdGlvbiBvdXRzaWRlIHRoZSAndW5iaW5kJyBjb250ZXh0IChpdCBob2xkcwp0aGUgUENJ IGxvY2spLiBCdXQgb25jZSB5b3UgJ3VuYmluZCcgYSBkZXZpY2UgdGhlIGRldmljZSBpcyBubyBs b25nZXIgdW5kZXIKdGhlIG93bmVyc2hpcCBvZiBYZW4gcGNpYmFjayBhbmQgdGhlIHBjaV9zZXRf ZHJ2ZGF0YSBoYXMgYmVlbiByZXNldCwgc28Kd2UgY2Fubm90IHVzZSBhIHRocmVhZCBmb3IgdGhp cy4KCkluc3RlYWQgb2YgZG9pbmcgYWxsIHRoaXMgY29tcGxleCBkYW5jZSwgd2UgZGVwZW5kIG9u IHRoZSB0b29sLXN0YWNrIGRvaW5nCnRoZSByaWdodCB0aGluZy4gQXMgc3VjaCwgd2UgaW1wbGVt ZW50IHRoZSAnZG9fZmxyJyBTeXNGUyBhdHRyaWJ1dGUgd2hpY2gKJ3hsJyB1c2VzIHdoZW4gYSBk ZXZpY2UgaXMgZGV0YWNoZWQgb3IgYXR0YWNoZWQgZnJvbS90byBhIGd1ZXN0LiBJdApieXBhc3Nl cyB0aGUgbmVlZCB0byB3b3JyeSBhYm91dCB0aGUgUENJIGxvY2suCgpUbyBub3QgaW5hZHZlcnRl bnRseSBkbyBhIGJ1cyByZXNldCB0aGF0IHdvdWxkIGFmZmVjdCBkZXZpY2VzIHRoYXQgYXJlIGlu CnVzZSBieSBvdGhlciBkcml2ZXJzIChvdGhlciB0aGFuIFhlbiBwY2liYWNrKSBwcmlvciB0byB0 aGUgcmVzZXQsIHdlIGNoZWNrCnRoYXQgYWxsIG9mIHRoZSBkZXZpY2VzIHVuZGVyIHRoZSBicmlk Z2UgYXJlIG93bmVkIGJ5IFhlbiBwY2liYWNrLiBJZiB0aGV5CmFyZSBub3QsIHdlIHJlZnJhaW4g ZnJvbSBleGVjdXRpbmcgdGhlIGJ1cyAob3Igc2xvdCkgcmVzZXQuCgpTaWduZWQtb2ZmLWJ5OiBH b3ZpbmRhIFRhdHRpIDxHb3ZpbmRhLlRhdHRpQE9yYWNsZS5DT00+ClNpZ25lZC1vZmYtYnk6IEtv bnJhZCBSemVzenV0ZWsgV2lsayA8a29ucmFkLndpbGtAb3JhY2xlLmNvbT4KUmV2aWV3ZWQtYnk6 IEJvcmlzIE9zdHJvdnNreSA8Ym9yaXMub3N0cm92c2t5QG9yYWNsZS5jb20+Ci0tLQogRG9jdW1l bnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1kcml2ZXItcGNpYmFjayB8ICAxMiArKysKIGRyaXZl cnMveGVuL3hlbi1wY2liYWNrL3BjaV9zdHViLmMgICAgICAgICAgICAgfCAxMTkgKysrKysrKysr KysrKysrKysrKysrKysrKwogMiBmaWxlcyBjaGFuZ2VkLCAxMzEgaW5zZXJ0aW9ucygrKQoKZGlm ZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtZHJpdmVyLXBjaWJhY2sg Yi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWRyaXZlci1wY2liYWNrCmluZGV4IDZh NzMzYmYuLmNjZjdkYzAgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lz ZnMtZHJpdmVyLXBjaWJhY2sKKysrIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1k cml2ZXItcGNpYmFjawpAQCAtMTEsMyArMTEsMTUgQEAgRGVzY3JpcHRpb246CiAgICAgICAgICAg ICAgICAgI2VjaG8gMDA6MTkuMC1FMDoyOkZGID4gL3N5cy9idXMvcGNpL2RyaXZlcnMvcGNpYmFj ay9xdWlya3MKICAgICAgICAgICAgICAgICB3aWxsIGFsbG93IHRoZSBndWVzdCB0byByZWFkIGFu ZCB3cml0ZSB0byB0aGUgY29uZmlndXJhdGlvbgogICAgICAgICAgICAgICAgIHJlZ2lzdGVyIDB4 MEUuCisKK1doYXQ6ICAgICAgICAgICAvc3lzL2J1cy9wY2kvZHJpdmVycy9wY2liYWNrL2RvX2Zs cgorRGF0ZTogICAgICAgICAgIE5vdiAyMDE3CitLZXJuZWxWZXJzaW9uOiAgNC4xNQorQ29udGFj dDogICAgICAgIHhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZworRGVzY3JpcHRpb246Cisg ICAgICAgICAgICAgICAgQW4gb3B0aW9uIHRvIHBlcmZvcm0gYSBzbG90IG9yIGJ1cyByZXNldCB3 aGVuIGEgUENJIGRldmljZQorCQlpcyBvd25lZCBieSBYZW4gUENJIGJhY2tlbmQuIFdyaXRpbmcg YSBzdHJpbmcgb2YgRERERDpCQjpERC5GCisJCXdpbGwgY2F1c2UgdGhlIHBjaWJhY2sgZHJpdmVy IHRvIHBlcmZvcm0gYSBzbG90IG9yIGJ1cyByZXNldAorCQlpZiB0aGUgZGV2aWNlIHN1cHBvcnRz IGl0LiBJdCBhbHNvIGNoZWNrcyB0byBtYWtlIHN1cmUgdGhhdAorCQlhbGwgb2YgdGhlIGRldmlj ZXMgdW5kZXIgdGhlIGJyaWRnZSBhcmUgb3duZWQgYnkgWGVuIFBDSQorCQliYWNrZW5kLgpkaWZm IC0tZ2l0IGEvZHJpdmVycy94ZW4veGVuLXBjaWJhY2svcGNpX3N0dWIuYyBiL2RyaXZlcnMveGVu L3hlbi1wY2liYWNrL3BjaV9zdHViLmMKaW5kZXggNjMzMWE5NS4uZTI2NzdhNiAxMDA2NDQKLS0t IGEvZHJpdmVycy94ZW4veGVuLXBjaWJhY2svcGNpX3N0dWIuYworKysgYi9kcml2ZXJzL3hlbi94 ZW4tcGNpYmFjay9wY2lfc3R1Yi5jCkBAIC0yNDQsNiArMjQ0LDkxIEBAIHN0cnVjdCBwY2lfZGV2 ICpwY2lzdHViX2dldF9wY2lfZGV2KHN0cnVjdCB4ZW5fcGNpYmtfZGV2aWNlICpwZGV2LAogCXJl dHVybiBmb3VuZF9kZXY7CiB9CiAKK3N0cnVjdCBwY2lzdHViX2FyZ3MgeworCXN0cnVjdCBwY2lf ZGV2ICpkZXY7CisJdW5zaWduZWQgaW50IGRjb3VudDsKK307CisKK3N0YXRpYyBpbnQgcGNpc3R1 Yl9zZWFyY2hfZGV2KHN0cnVjdCBwY2lfZGV2ICpkZXYsIHZvaWQgKmRhdGEpCit7CisJc3RydWN0 IHBjaXN0dWJfZGV2aWNlICpwc2RldjsKKwlzdHJ1Y3QgcGNpc3R1Yl9hcmdzICphcmcgPSBkYXRh OworCWJvb2wgZm91bmRfZGV2ID0gZmFsc2U7CisJdW5zaWduZWQgbG9uZyBmbGFnczsKKworCXNw aW5fbG9ja19pcnFzYXZlKCZwY2lzdHViX2RldmljZXNfbG9jaywgZmxhZ3MpOworCisJbGlzdF9m b3JfZWFjaF9lbnRyeShwc2RldiwgJnBjaXN0dWJfZGV2aWNlcywgZGV2X2xpc3QpIHsKKwkJaWYg KHBzZGV2LT5kZXYgPT0gZGV2KSB7CisJCQlmb3VuZF9kZXYgPSB0cnVlOworCQkJYXJnLT5kY291 bnQrKzsKKwkJCWJyZWFrOworCQl9CisJfQorCisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmcGNp c3R1Yl9kZXZpY2VzX2xvY2ssIGZsYWdzKTsKKworCS8qIERldmljZSBub3Qgb3duZWQgYnkgcGNp c3R1Yiwgc29tZW9uZSBvd25zIGl0LiBBYm9ydCB0aGUgd2FsayAqLworCWlmICghZm91bmRfZGV2 KQorCQlhcmctPmRldiA9IGRldjsKKworCXJldHVybiBmb3VuZF9kZXYgPyAwIDogMTsKK30KKwor c3RhdGljIGludCBwY2lzdHViX3Jlc2V0X2RldihzdHJ1Y3QgcGNpX2RldiAqZGV2KQoreworCXN0 cnVjdCB4ZW5fcGNpYmtfZGV2X2RhdGEgKmRldl9kYXRhOworCWJvb2wgc2xvdCA9IGZhbHNlLCBi dXMgPSBmYWxzZTsKKwlzdHJ1Y3QgcGNpc3R1Yl9hcmdzIGFyZyA9IHt9OworCisJaWYgKCFkZXYp CisJCXJldHVybiAtRUlOVkFMOworCisJZGV2X2RiZygmZGV2LT5kZXYsICJbJXNdXG4iLCBfX2Z1 bmNfXyk7CisKKwlpZiAoIXBjaV9wcm9iZV9yZXNldF9zbG90KGRldi0+c2xvdCkpCisJCXNsb3Qg PSB0cnVlOworCWVsc2UgaWYgKCghcGNpX3Byb2JlX3Jlc2V0X2J1cyhkZXYtPmJ1cykpICYmCisJ CSAoIXBjaV9pc19yb290X2J1cyhkZXYtPmJ1cykpKQorCQlidXMgPSB0cnVlOworCisJaWYgKCFi dXMgJiYgIXNsb3QpCisJCXJldHVybiAtRU9QTk9UU1VQUDsKKworCS8qCisJICogTWFrZSBzdXJl IGFsbCBkZXZpY2VzIG9uIHRoaXMgYnVzIGFyZSBvd25lZCBieSB0aGUKKwkgKiBQQ0kgYmFja2Vu ZCBzbyB0aGF0IHdlIGNhbiBzYWZlbHkgcmVzZXQgdGhlIHdob2xlIGJ1cy4KKwkgKi8KKwlwY2lf d2Fsa19idXMoZGV2LT5idXMsIHBjaXN0dWJfc2VhcmNoX2RldiwgJmFyZyk7CisKKwkvKiBBbGwg ZGV2aWNlcyB1bmRlciB0aGUgYnVzIHNob3VsZCBiZSBwYXJ0IG9mIHBjaXN0dWIhICovCisJaWYg KGFyZy5kZXYpIHsKKwkJZGV2X2VycigmZGV2LT5kZXYsICIlcyBkZXZpY2Ugb24gYnVzIDB4JXgg aXMgbm90IG93bmVkIGJ5IHBjaXN0dWJcbiIsCisJCQlwY2lfbmFtZShhcmcuZGV2KSwgZGV2LT5i dXMtPm51bWJlcik7CisKKwkJcmV0dXJuIC1FQlVTWTsKKwl9CisKKwlkZXZfZGJnKCZkZXYtPmRl diwgInBjaXN0dWIgb3ducyAlZCBkZXZpY2VzIG9uIGJ1cyAweCV4XG4iLAorCQlhcmcuZGNvdW50 LCBkZXYtPmJ1cy0+bnVtYmVyKTsKKworCWRldl9kYXRhID0gcGNpX2dldF9kcnZkYXRhKGRldik7 CisJaWYgKCFwY2lfbG9hZF9zYXZlZF9zdGF0ZShkZXYsIGRldl9kYXRhLT5wY2lfc2F2ZWRfc3Rh dGUpKQorCQlwY2lfcmVzdG9yZV9zdGF0ZShkZXYpOworCisJLyogVGhpcyBkaXNhYmxlcyB0aGUg ZGV2aWNlLiAqLworCXhlbl9wY2lia19yZXNldF9kZXZpY2UoZGV2KTsKKworCS8qIENsZWFudXAg dXAgYW55IGVtdWxhdGVkIGZpZWxkcyAqLworCXhlbl9wY2lia19jb25maWdfcmVzZXRfZGV2KGRl dik7CisKKwlkZXZfZGJnKCZkZXYtPmRldiwgInJlc2V0dGluZyAlcyBkZXZpY2UgdXNpbmcgJXMg cmVzZXRcbiIsCisJCXBjaV9uYW1lKGRldiksIHNsb3QgPyAic2xvdCIgOiAiYnVzIik7CisKKwly ZXR1cm4gc2xvdCA/IHBjaV90cnlfcmVzZXRfc2xvdChkZXYtPnNsb3QpIDoKKwkJCXBjaV90cnlf cmVzZXRfYnVzKGRldi0+YnVzKTsKK30KKwogLyoKICAqIENhbGxlZCB3aGVuOgogICogIC0gWGVu QnVzIHN0YXRlIGhhcyBiZWVuIHJlY29uZmlndXJlIChwY2kgdW5wbHVnKS4gU2VlIHhlbl9wY2li a19yZW1vdmVfZGV2aWNlCkBAIC0xNDM0LDYgKzE1MTksMzMgQEAgc3RhdGljIHNzaXplX3QgcGVy bWlzc2l2ZV9zaG93KHN0cnVjdCBkZXZpY2VfZHJpdmVyICpkcnYsIGNoYXIgKmJ1ZikKIHN0YXRp YyBEUklWRVJfQVRUUihwZXJtaXNzaXZlLCBTX0lSVVNSIHwgU19JV1VTUiwgcGVybWlzc2l2ZV9z aG93LAogCQkgICBwZXJtaXNzaXZlX2FkZCk7CiAKK3N0YXRpYyBzc2l6ZV90IHBjaXN0dWJfZG9f ZmxyKHN0cnVjdCBkZXZpY2VfZHJpdmVyICpkcnYsIGNvbnN0IGNoYXIgKmJ1ZiwKKwkJCSAgICAg IHNpemVfdCBjb3VudCkKK3sKKwlzdHJ1Y3QgcGNpc3R1Yl9kZXZpY2UgKnBzZGV2OworCWludCBk b21haW4sIGJ1cywgc2xvdCwgZnVuYzsKKwlpbnQgZXJyOworCisJZXJyID0gc3RyX3RvX3Nsb3Qo YnVmLCAmZG9tYWluLCAmYnVzLCAmc2xvdCwgJmZ1bmMpOworCWlmIChlcnIpCisJCXJldHVybiBl cnI7CisKKwlwc2RldiA9IHBjaXN0dWJfZGV2aWNlX2ZpbmQoZG9tYWluLCBidXMsIHNsb3QsIGZ1 bmMpOworCWlmIChwc2RldikgeworCQllcnIgPSBwY2lzdHViX3Jlc2V0X2Rldihwc2Rldi0+ZGV2 KTsKKwkJcGNpc3R1Yl9kZXZpY2VfcHV0KHBzZGV2KTsKKwl9IGVsc2UgeworCQllcnIgPSAtRU5P REVWOworCX0KKworCWlmICghZXJyKQorCQllcnIgPSBjb3VudDsKKworCXJldHVybiBlcnI7Cit9 CisKK3N0YXRpYyBEUklWRVJfQVRUUihkb19mbHIsIFNfSVdVU1IsIE5VTEwsIHBjaXN0dWJfZG9f ZmxyKTsKKwogc3RhdGljIHZvaWQgcGNpc3R1Yl9leGl0KHZvaWQpCiB7CiAJZHJpdmVyX3JlbW92 ZV9maWxlKCZ4ZW5fcGNpYmtfcGNpX2RyaXZlci5kcml2ZXIsICZkcml2ZXJfYXR0cl9uZXdfc2xv dCk7CkBAIC0xNDQ3LDYgKzE1NTksOCBAQCBzdGF0aWMgdm9pZCBwY2lzdHViX2V4aXQodm9pZCkK IAkJCSAgICZkcml2ZXJfYXR0cl9pcnFfaGFuZGxlcnMpOwogCWRyaXZlcl9yZW1vdmVfZmlsZSgm eGVuX3BjaWJrX3BjaV9kcml2ZXIuZHJpdmVyLAogCQkJICAgJmRyaXZlcl9hdHRyX2lycV9oYW5k bGVyX3N0YXRlKTsKKwlkcml2ZXJfcmVtb3ZlX2ZpbGUoJnhlbl9wY2lia19wY2lfZHJpdmVyLmRy aXZlciwKKwkJCSAgICZkcml2ZXJfYXR0cl9kb19mbHIpOwogCXBjaV91bnJlZ2lzdGVyX2RyaXZl cigmeGVuX3BjaWJrX3BjaV9kcml2ZXIpOwogfQogCkBAIC0xNTQwLDYgKzE2NTQsMTEgQEAgc3Rh dGljIGludCBfX2luaXQgcGNpc3R1Yl9pbml0KHZvaWQpCiAJaWYgKCFlcnIpCiAJCWVyciA9IGRy aXZlcl9jcmVhdGVfZmlsZSgmeGVuX3BjaWJrX3BjaV9kcml2ZXIuZHJpdmVyLAogCQkJCQkmZHJp dmVyX2F0dHJfaXJxX2hhbmRsZXJfc3RhdGUpOworCisJaWYgKCFlcnIpCisJCWVyciA9IGRyaXZl cl9jcmVhdGVfZmlsZSgmeGVuX3BjaWJrX3BjaV9kcml2ZXIuZHJpdmVyLAorCQkJCQkgJmRyaXZl cl9hdHRyX2RvX2Zscik7CisKIAlpZiAoZXJyKQogCQlwY2lzdHViX2V4aXQoKTsKIAotLSAKMi45 LjUKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4t ZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHBzOi8vbGlzdHMu eGVuLm9yZy94ZW4tZGV2ZWwK