From mboxrd@z Thu Jan 1 00:00:00 1970 From: Haozhong Zhang Subject: [RFC XEN PATCH v4 34/41] tools/libacpi: probe QEMU ACPI ROMs via fw_cfg interface Date: Thu, 7 Dec 2017 18:10:23 +0800 Message-ID: <20171207101030.22364-35-haozhong.zhang@intel.com> References: <20171207101030.22364-1-haozhong.zhang@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20171207101030.22364-1-haozhong.zhang@intel.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: xen-devel@lists.xen.org Cc: Haozhong Zhang , Stefano Stabellini , Wei Liu , George Dunlap , Andrew Cooper , Ian Jackson , Tim Deegan , Jan Beulich , Chao Peng , Dan Williams List-Id: xen-devel@lists.xenproject.org UHJvYmUgZm9sbG93aW5nIFFFTVUgQUNQSSBST01zOgogKiBldGMvYWNwaS9yc2RwOiAgICAgICBR RU1VIFJTRFAsIHdoaWNoIGlzIHVzZWQgdG8gaXRlcmF0ZSBvdGhlcgogICAgICAgICAgICAgICAg ICAgICAgICBRRU1VIEFDUEkgdGFibGVzIGluIGV0Yy9hY3BpL3RhYmxlcwoKICogZXRjL2FjcGkv dGFibGVzOiAgICAgb3RoZXIgUUVNVSBBQ1BJIHRhYmxlcwoKICogZXRjL3RhYmxlLWxvYWRlcjog ICAgUUVNVSBCSU9TTGlua2VyTG9hZGVyIFJPTSwgd2hpY2ggY2FuIGJlCiAgICAgICAgICAgICAg ICAgICAgICAgIGV4ZWN1dGVkIHRvIGxvYWQgUUVNVSBBQ1BJIHRhYmxlcwoKICogZXRjL2FjcGkv bnZkaW1tLW1lbTogUkFNIHdoaWNoIGlzIHVzZWQgYXMgTlZESU1NIEFDUEkgRFNNIGJ1ZmZlciwK ICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGV4YWN0IGxvY2F0aW9uIHdpbGwgYmUgYWxsb2Nh dGVkIGR1cmluZwogICAgICAgICAgICAgICAgICAgICAgICB0aGUgZXhlY3V0aW9uIG9mIC9ldGMv dGFibGUtbG9hZGVyCgpTaWduZWQtb2ZmLWJ5OiBIYW96aG9uZyBaaGFuZyA8aGFvemhvbmcuemhh bmdAaW50ZWwuY29tPgotLS0KQ2M6IEFuZHJldyBDb29wZXIgPGFuZHJldy5jb29wZXIzQGNpdHJp eC5jb20+CkNjOiBHZW9yZ2UgRHVubGFwIDxHZW9yZ2UuRHVubGFwQGV1LmNpdHJpeC5jb20+CkNj OiBJYW4gSmFja3NvbiA8aWFuLmphY2tzb25AZXUuY2l0cml4LmNvbT4KQ2M6IEphbiBCZXVsaWNo IDxqYmV1bGljaEBzdXNlLmNvbT4KQ2M6IEtvbnJhZCBSemVzenV0ZWsgV2lsayA8a29ucmFkLndp bGtAb3JhY2xlLmNvbT4KQ2M6IFN0ZWZhbm8gU3RhYmVsbGluaSA8c3N0YWJlbGxpbmlAa2VybmVs Lm9yZz4KQ2M6IFRpbSBEZWVnYW4gPHRpbUB4ZW4ub3JnPgpDYzogV2VpIExpdSA8d2VpLmxpdTJA Y2l0cml4LmNvbT4KLS0tCiB0b29scy9maXJtd2FyZS9odm1sb2FkZXIvTWFrZWZpbGUgfCAgMyAr LQogdG9vbHMvZmlybXdhcmUvaHZtbG9hZGVyL3V0aWwuaCAgIHwgMTMgKysrKysrKwogdG9vbHMv bGliYWNwaS9xZW11LmggICAgICAgICAgICAgIHwgNTIgKysrKysrKysrKysrKysrKysrKysrKysr KwogdG9vbHMvbGliYWNwaS9xZW11X2Z3X2NmZy5jICAgICAgIHwgMjcgKysrKysrKysrKysrKwog dG9vbHMvbGliYWNwaS9xZW11X2xvYWRlci5jICAgICAgIHwgODIgKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrCiB0b29scy9saWJhY3BpL3FlbXVfc3R1Yi5jICAgICAgICAg fCAxMSArKysrKysKIDYgZmlsZXMgY2hhbmdlZCwgMTg3IGluc2VydGlvbnMoKyksIDEgZGVsZXRp b24oLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCB0b29scy9saWJhY3BpL3FlbXUuaAogY3JlYXRlIG1v ZGUgMTAwNjQ0IHRvb2xzL2xpYmFjcGkvcWVtdV9sb2FkZXIuYwoKZGlmZiAtLWdpdCBhL3Rvb2xz L2Zpcm13YXJlL2h2bWxvYWRlci9NYWtlZmlsZSBiL3Rvb2xzL2Zpcm13YXJlL2h2bWxvYWRlci9N YWtlZmlsZQppbmRleCA1M2I5OWUyYzI4Li5lYWExNzVlY2U2IDEwMDY0NAotLS0gYS90b29scy9m aXJtd2FyZS9odm1sb2FkZXIvTWFrZWZpbGUKKysrIGIvdG9vbHMvZmlybXdhcmUvaHZtbG9hZGVy L01ha2VmaWxlCkBAIC03NiwxMiArNzYsMTMgQEAgc21iaW9zLm86IENGTEFHUyArPSAtRF9fU01C SU9TX0RBVEVfXz0iXCIkKFNNQklPU19SRUxfREFURSlcIiIKIAogQUNQSV9QQVRIID0gLi4vLi4v bGliYWNwaQogRFNEVF9GSUxFUyA9IGRzZHRfYW55Y3B1LmMgZHNkdF8xNWNwdS5jIGRzZHRfYW55 Y3B1X3FlbXVfeGVuLmMKLUFDUElfT0JKUyA9ICQocGF0c3Vic3QgJS5jLCUubywkKERTRFRfRklM RVMpKSBidWlsZC5vIHN0YXRpY190YWJsZXMubyBxZW11X2Z3X2NmZy5vCitBQ1BJX09CSlMgPSAk KHBhdHN1YnN0ICUuYywlLm8sJChEU0RUX0ZJTEVTKSkgYnVpbGQubyBzdGF0aWNfdGFibGVzLm8g cWVtdV9md19jZmcubyBxZW11X2xvYWRlci5vCiAkKEFDUElfT0JKUyk6IENGTEFHUyArPSAtSS4g LURMSUJBQ1BJX1NURFVUSUxTPVwiJChDVVJESVIpL3V0aWwuaFwiCiBDRkxBR1MgKz0gLUkkKEFD UElfUEFUSCkKIHZwYXRoIGJ1aWxkLmMgJChBQ1BJX1BBVEgpCiB2cGF0aCBzdGF0aWNfdGFibGVz LmMgJChBQ1BJX1BBVEgpCiB2cGF0aCBxZW11X2Z3X2NmZy5jICQoQUNQSV9QQVRIKQordnBhdGgg cWVtdV9sb2FkZXIuYyAkKEFDUElfUEFUSCkKIE9CSlMgKz0gJChBQ1BJX09CSlMpCiAKIGh2bWxv YWRlcjogJChPQkpTKQpkaWZmIC0tZ2l0IGEvdG9vbHMvZmlybXdhcmUvaHZtbG9hZGVyL3V0aWwu aCBiL3Rvb2xzL2Zpcm13YXJlL2h2bWxvYWRlci91dGlsLmgKaW5kZXggZTMyYjgzZTcyMS4uMTYy NDRiYjBiNCAxMDA2NDQKLS0tIGEvdG9vbHMvZmlybXdhcmUvaHZtbG9hZGVyL3V0aWwuaAorKysg Yi90b29scy9maXJtd2FyZS9odm1sb2FkZXIvdXRpbC5oCkBAIC02Niw2ICs2NiwxOSBAQCBzdGF0 aWMgaW5saW5lIGludCB0ZXN0X2FuZF9jbGVhcl9iaXQoaW50IG5yLCB2b2xhdGlsZSB2b2lkICph ZGRyKQogICAgIHJldHVybiBvbGRiaXQ7CiB9CiAKK3N0YXRpYyBpbmxpbmUgdWludDMyX3QgYmUz Ml90b19jcHUodWludDMyX3QgdikKK3sKKyAgICByZXR1cm4gKCh2ICYgMHgwMDAwMDBmZlVMKSA8 PCAyNCkgfAorICAgICAgICAgICAoKHYgJiAweDAwMDBmZjAwVUwpIDw8IDgpICB8CisgICAgICAg ICAgICgodiAmIDB4MDBmZjAwMDBVTCkgPj4gOCkgIHwKKyAgICAgICAgICAgKCh2ICYgMHhmZjAw MDAwMFVMKSA+PiAyNCk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdWludDE2X3QgYmUxNl90b19jcHUo dWludDE2X3QgdikKK3sKKyAgICByZXR1cm4gKCh2ICYgMHgwMGZmKSA8PCA4KSB8ICgodiAmIDB4 ZmYwMCkgPj4gOCk7Cit9CisKIC8qIE1TUiBhY2Nlc3MgKi8KIHZvaWQgd3Jtc3IodWludDMyX3Qg aWR4LCB1aW50NjRfdCB2KTsKIHVpbnQ2NF90IHJkbXNyKHVpbnQzMl90IGlkeCk7CmRpZmYgLS1n aXQgYS90b29scy9saWJhY3BpL3FlbXUuaCBiL3Rvb2xzL2xpYmFjcGkvcWVtdS5oCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjk0MDgxNmJmMjcKLS0tIC9kZXYvbnVsbAor KysgYi90b29scy9saWJhY3BpL3FlbXUuaApAQCAtMCwwICsxLDUyIEBACisvKgorICogbGliYWNw aS9xZW11LmgKKyAqCisgKiBIZWFkZXIgZmlsZSBvZiBRRU1VIGRyaXZlcnMuCisgKgorICogQ29w eXJpZ2h0IChDKSAyMDE3LCAgSW50ZWwgQ29ycG9yYXRpb24KKyAqCisgKiBUaGlzIGxpYnJhcnkg aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2Rp ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisg KiBMaWNlbnNlLCB2ZXJzaW9uIDIuMSwgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7 IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZ IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExl c3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91 IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1 YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgSWYgbm90LCBzZWUgPGh0 dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorICovCisKKyNpZm5kZWYgX19RRU1VX0hfXwor I2RlZmluZSBfX1FFTVVfSF9fCisKKyNpbmNsdWRlIExJQkFDUElfU1REVVRJTFMKKyNpbmNsdWRl ICJsaWJhY3BpLmgiCisKKyNkZWZpbmUgRldfQ0ZHX0ZJTEVfUEFUSF9NQVhfTEVOR1RIIDU2CisK Ky8qIEFuIGluZGl2aWR1YWwgZmlsZSBlbnRyeSwgNjQgYnl0ZXMgdG90YWwuICovCitzdHJ1Y3Qg ZndfY2ZnX2ZpbGUgeworICAgIHVpbnQzMl90IHNpemU7ICAgICAgLyogc2l6ZSBvZiByZWZlcmVu Y2VkIGZ3X2NmZyBpdGVtLCBiaWctZW5kaWFuICovCisgICAgdWludDE2X3Qgc2VsZWN0OyAgICAv KiBzZWxlY3RvciBrZXkgb2YgZndfY2ZnIGl0ZW0sIGJpZy1lbmRpYW4gKi8KKyAgICB1aW50MTZf dCByZXNlcnZlZDsKKyAgICBjaGFyIG5hbWVbRldfQ0ZHX0ZJTEVfUEFUSF9NQVhfTEVOR1RIXTsg LyogZndfY2ZnIGl0ZW0gbmFtZSwgICAgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgLyogTlVMLXRlcm1pbmF0ZWQgYXNjaWkgKi8KK307CisKK2ludCBmd19j ZmdfcHJvYmVfcm9tcyhzdHJ1Y3QgYWNwaV9jdHh0ICpjdHh0KTsKKworaW50IGxvYWRlcl9hZGRf cm9tKHN0cnVjdCBhY3BpX2N0eHQqIGN0eHQsIGNvbnN0IHN0cnVjdCBmd19jZmdfZmlsZSAqZmls ZSk7CisKKyNlbmRpZiAvKiAhX19RRU1VX0hfXyAqLworCisvKgorICogTG9jYWwgdmFyaWFibGVz OgorICogbW9kZTogQworICogYy1maWxlLXN0eWxlOiAiQlNEIgorICogYy1iYXNpYy1vZmZzZXQ6 IDQKKyAqIHRhYi13aWR0aDogNAorICogaW5kZW50LXRhYnMtbW9kZTogbmlsCisgKiBFbmQ6Cisg Ki8KZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYmFjcGkvcWVtdV9md19jZmcuYyBiL3Rvb2xzL2xpYmFj cGkvcWVtdV9md19jZmcuYwppbmRleCAyNTRkMmY1NzVkLi40NThiNmVhYmRjIDEwMDY0NAotLS0g YS90b29scy9saWJhY3BpL3FlbXVfZndfY2ZnLmMKKysrIGIvdG9vbHMvbGliYWNwaS9xZW11X2Z3 X2NmZy5jCkBAIC0yMSw2ICsyMSw3IEBACiAKICNpbmNsdWRlIExJQkFDUElfU1REVVRJTFMKICNp bmNsdWRlICJsaWJhY3BpLmgiCisjaW5jbHVkZSAicWVtdS5oIgogCiAvKiBRRU1VIGZ3X2NmZyBJ L08gcG9ydHMgb24geDg2ICovCiAjZGVmaW5lIEZXX0NGR19QT1JUX1NFTCAgICAgICAgIDB4NTEw CkBAIC0yOCw2ICsyOSw3IEBACiAKIC8qIFFFTVUgZndfY2ZnIGVudHJpZXMgKi8KICNkZWZpbmUg RldfQ0ZHX1NJR05BVFVSRSAgICAgICAgMHgwMDAwCisjZGVmaW5lIEZXX0NGR19GSUxFX0RJUiAg ICAgICAgIDB4MDAxOQogCiBzdGF0aWMgaW5saW5lIHZvaWQgZndfY2ZnX3NlbGVjdCh1aW50MTZf dCBlbnRyeSkKIHsKQEAgLTU1LDYgKzU3LDMxIEBAIGJvb2wgZndfY2ZnX2V4aXN0cyh2b2lkKQog ICAgIHJldHVybiBzaWcgPT0gMHg1NTRkNDU1MSAvKiAiUUVNVSIgKi87CiB9CiAKK2ludCBmd19j ZmdfcHJvYmVfcm9tcyhzdHJ1Y3QgYWNwaV9jdHh0ICpjdHh0KQoreworICAgIHN0cnVjdCBmd19j ZmdfZmlsZSBmaWxlOworICAgIHVpbnQzMl90IGNvdW50LCBpOworICAgIGludCByYyA9IDA7CisK KyAgICBmd19jZmdfcmVhZF9lbnRyeShGV19DRkdfRklMRV9ESVIsICZjb3VudCwgc2l6ZW9mKGNv dW50KSk7CisgICAgY291bnQgPSBiZTMyX3RvX2NwdShjb3VudCk7CisKKyAgICBmb3IgKCBpID0g MDsgaSA8IGNvdW50OyBpKysgKQorICAgIHsKKyAgICAgICAgZndfY2ZnX3JlYWQoJmZpbGUsIHNp emVvZihmaWxlKSk7CisgICAgICAgIHJjID0gbG9hZGVyX2FkZF9yb20oY3R4dCwgJmZpbGUpOwor ICAgICAgICBpZiAoIHJjICkKKyAgICAgICAgeworICAgICAgICAgICAgZmlsZS5uYW1lW0ZXX0NG R19GSUxFX1BBVEhfTUFYX0xFTkdUSCAtIDFdID0gJ1wwJzsKKyAgICAgICAgICAgIHByaW50Zigi RVJST1I6IGZhaWxlZCB0byBsb2FkIFFFTVUgUk9NICVzLCBlcnIgJWRcbiIsCisgICAgICAgICAg ICAgICAgICAgZmlsZS5uYW1lLCByYyk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQor ICAgIH0KKworICAgIHJldHVybiByYzsKK30KKwogLyoKICAqIExvY2FsIHZhcmlhYmxlczoKICAq IG1vZGU6IEMKZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYmFjcGkvcWVtdV9sb2FkZXIuYyBiL3Rvb2xz L2xpYmFjcGkvcWVtdV9sb2FkZXIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw MDAwLi5jMGVkM2IwYWQwCi0tLSAvZGV2L251bGwKKysrIGIvdG9vbHMvbGliYWNwaS9xZW11X2xv YWRlci5jCkBAIC0wLDAgKzEsODIgQEAKKy8qCisgKiBsaWJhY3BpL3FlbXVfbG9hZGVyLmMKKyAq CisgKiBEcml2ZXIgb2YgUUVNVSBCSU9TTGlua2VyTG9hZGVyIGludGVyZmFjZS4gVGhlIHJlZmVy ZW5jZSBkb2N1bWVudAorICogY2FuIGJlIGZvdW5kIGF0CisgKiBodHRwczovL2dpdGh1Yi5jb20v cWVtdS9xZW11L2Jsb2IvbWFzdGVyL2h3L2FjcGkvYmlvcy1saW5rZXItbG9hZGVyLmMuCisgKgor ICogQ29weXJpZ2h0IChDKSAyMDE3LCAgSW50ZWwgQ29ycG9yYXRpb24KKyAqCisgKiBUaGlzIGxp YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisg KiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVi bGljCisgKiBMaWNlbnNlLCB2ZXJzaW9uIDIuMSwgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGlu IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FS UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRB QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUK KyAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgor ICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5l cmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgSWYgbm90LCBz ZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorICovCisKKyNpbmNsdWRlIExJQkFD UElfU1REVVRJTFMKKyNpbmNsdWRlICJsaWJhY3BpLmgiCisjaW5jbHVkZSAicWVtdS5oIgorCitz dHJ1Y3Qgcm9tIHsKKyAgICBzdHJ1Y3QgZndfY2ZnX2ZpbGUgZmlsZTsKKyAgICBzdHJ1Y3Qgcm9t ICpuZXh0OworfTsKKworc3RhdGljIHN0cnVjdCByb20gKnJvbXMgPSBOVUxMOworc3RhdGljIHN0 cnVjdCByb20gKmJpb3NfbG9hZGVyID0gTlVMTDsKKworc3RhdGljIGJvb2wgcm9tX25lZWRlZChj b25zdCBjaGFyICpmaWxlX25hbWUpCit7CisgICAgcmV0dXJuCisgICAgICAgICFzdHJuY21wKGZp bGVfbmFtZSwgImV0Yy9hY3BpL3JzZHAiLCBGV19DRkdfRklMRV9QQVRIX01BWF9MRU5HVEgpIHx8 CisgICAgICAgICFzdHJuY21wKGZpbGVfbmFtZSwgImV0Yy9hY3BpL3RhYmxlcyIsIEZXX0NGR19G SUxFX1BBVEhfTUFYX0xFTkdUSCkgfHwKKyAgICAgICAgIXN0cm5jbXAoZmlsZV9uYW1lLCAiZXRj L3RhYmxlLWxvYWRlciIsIEZXX0NGR19GSUxFX1BBVEhfTUFYX0xFTkdUSCkgfHwKKyAgICAgICAg IXN0cm5jbXAoZmlsZV9uYW1lLCAiZXRjL2FjcGkvbnZkaW1tLW1lbSIsIEZXX0NGR19GSUxFX1BB VEhfTUFYX0xFTkdUSCk7Cit9CisKK2ludCBsb2FkZXJfYWRkX3JvbShzdHJ1Y3QgYWNwaV9jdHh0 ICpjdHh0LCBjb25zdCBzdHJ1Y3QgZndfY2ZnX2ZpbGUgKmZpbGUpCit7CisgICAgY29uc3QgY2hh ciAqbmFtZSA9IGZpbGUtPm5hbWU7CisgICAgc3RydWN0IHJvbSAqcm9tOworCisgICAgaWYgKCAh cm9tX25lZWRlZChuYW1lKSApCisgICAgICAgIHJldHVybiAwOworCisgICAgcm9tID0gcm9tczsK KyAgICB3aGlsZSAoIHJvbSApCisgICAgeworICAgICAgICBpZiAoICFzdHJuY21wKHJvbS0+Zmls ZS5uYW1lLCBuYW1lLCBGV19DRkdfRklMRV9QQVRIX01BWF9MRU5HVEgpICkKKyAgICAgICAgICAg IHJldHVybiAtRUVYSVNUOworICAgICAgICByb20gPSByb20tPm5leHQ7CisgICAgfQorCisgICAg cm9tID0gY3R4dC0+bWVtX29wcy5hbGxvYyhjdHh0LCBzaXplb2YoKnJvbSksIDApOworICAgIGlm ICggIXJvbSApCisgICAgICAgIHJldHVybiAtRU5PTUVNOworCisgICAgbWVtY3B5KCZyb20tPmZp bGUsIGZpbGUsIHNpemVvZigqZmlsZSkpOworICAgIHJvbS0+bmV4dCA9IHJvbXM7CisgICAgcm9t cyA9IHJvbTsKKworICAgIGlmICggIXN0cm5jbXAobmFtZSwgImV0Yy90YWJsZS1sb2FkZXIiLCBG V19DRkdfRklMRV9QQVRIX01BWF9MRU5HVEgpICkKKyAgICAgICAgYmlvc19sb2FkZXIgPSByb207 CisKKyAgICByZXR1cm4gMDsKK30KKworLyoKKyAqIExvY2FsIHZhcmlhYmxlczoKKyAqIG1vZGU6 IEMKKyAqIGMtZmlsZS1zdHlsZTogIkJTRCIKKyAqIGMtYmFzaWMtb2Zmc2V0OiA0CisgKiB0YWIt d2lkdGg6IDQKKyAqIGluZGVudC10YWJzLW1vZGU6IG5pbAorICogRW5kOgorICovCmRpZmYgLS1n aXQgYS90b29scy9saWJhY3BpL3FlbXVfc3R1Yi5jIGIvdG9vbHMvbGliYWNwaS9xZW11X3N0dWIu YwppbmRleCA2NTA2ZGUyZDljLi5mZGJhNTI5NGUxIDEwMDY0NAotLS0gYS90b29scy9saWJhY3Bp L3FlbXVfc3R1Yi5jCisrKyBiL3Rvb2xzL2xpYmFjcGkvcWVtdV9zdHViLmMKQEAgLTIyLDEyICsy MiwyMyBAQAogCiAjaW5jbHVkZSBMSUJBQ1BJX1NURFVUSUxTCiAjaW5jbHVkZSAibGliYWNwaS5o IgorI2luY2x1ZGUgInFlbXUuaCIKIAogYm9vbCBmd19jZmdfZXhpc3RzKHZvaWQpCiB7CiAgICAg cmV0dXJuIGZhbHNlOwogfQogCitpbnQgZndfY2ZnX3Byb2JlX3JvbXMoc3RydWN0IGFjcGlfY3R4 dCAqY3R4dCkKK3sKKyAgICByZXR1cm4gLUVOT1NZUzsKK30KKworaW50IGxvYWRlcl9hZGRfcm9t KHN0cnVjdCBhY3BpX2N0eHQqIGN0eHQsIGNvbnN0IHN0cnVjdCBmd19jZmdfZmlsZSAqZmlsZSkK K3sKKyAgICByZXR1cm4gLUVOT1NZUzsKK30KKwogLyoKICAqIExvY2FsIHZhcmlhYmxlczoKICAq IG1vZGU6IEMKLS0gCjIuMTUuMQoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbnBy b2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby94 ZW4tZGV2ZWw=