From mboxrd@z Thu Jan 1 00:00:00 1970 From: Haozhong Zhang Subject: [RFC XEN PATCH v4 35/41] tools/libacpi: add a QEMU BIOSLinkLoader executor Date: Thu, 7 Dec 2017 18:10:24 +0800 Message-ID: <20171207101030.22364-36-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 , Wei Liu , Ian Jackson , Jan Beulich , Chao Peng , Dan Williams List-Id: xen-devel@lists.xenproject.org VGhlIGV4ZWN1dG9yIGxvYWRzIGFuZCBleGVjdXRlcyB0aGUgUUVNVSBCSU9TTGlua2VyTG9hZGVy IFJPTQpldGMvdGFibGUtbG9hZGVyLiBJdCBjdXJyZW50bHkgc3VwcG9ydHMgdGhyZWUgQklPU0xp bmtlckxvYWRlcgpjb21tYW5kcyBBTExPQ0FURSwgUE9JTlRFUiBhbmQgQ0hFQ0tTVU0sIHdoaWNo IGFyZSBlbm91Z2ggdG8gbG9hZApjdXJyZW50bHkgc3VwcG9ydGVkIFFFTVUgUk9Ncy4KClNpZ25l ZC1vZmYtYnk6IEhhb3pob25nIFpoYW5nIDxoYW96aG9uZy56aGFuZ0BpbnRlbC5jb20+Ci0tLQpD YzogSmFuIEJldWxpY2ggPGpiZXVsaWNoQHN1c2UuY29tPgpDYzogSWFuIEphY2tzb24gPGlhbi5q YWNrc29uQGV1LmNpdHJpeC5jb20+CkNjOiBXZWkgTGl1IDx3ZWkubGl1MkBjaXRyaXguY29tPgot LS0KIHRvb2xzL2xpYmFjcGkvYnVpbGQuYyAgICAgICB8ICAgMyArLQogdG9vbHMvbGliYWNwaS9s aWJhY3BpLmggICAgIHwgICAyICsKIHRvb2xzL2xpYmFjcGkvcWVtdS5oICAgICAgICB8ICAgMiAr CiB0b29scy9saWJhY3BpL3FlbXVfZndfY2ZnLmMgfCAgIDYgKwogdG9vbHMvbGliYWNwaS9xZW11 X2xvYWRlci5jIHwgMzAyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrCiB0b29scy9saWJhY3BpL3FlbXVfc3R1Yi5jICAgfCAgIDkgKysKIDYgZmlsZXMgY2hhbmdl ZCwgMzIyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvdG9vbHMv bGliYWNwaS9idWlsZC5jIGIvdG9vbHMvbGliYWNwaS9idWlsZC5jCmluZGV4IDQ2MDUxYzQ2YWMu LmYyZDY1NTc0ZmYgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2xpYmFjcGkvYnVpbGQuYworKysgYi90b29s cy9saWJhY3BpL2J1aWxkLmMKQEAgLTEwNSw4ICsxMDUsNyBAQCBzdGF0aWMgaW50IGRtX2FjcGlf YmxhY2tsaXN0X3NpZ25hdHVyZShzdHJ1Y3QgYWNwaV9jb25maWcgKmNvbmZpZywgdWludDY0X3Qg c2lnKQogICAgIHJldHVybiAwOwogfQogCi1zdGF0aWMgdm9pZCBzZXRfY2hlY2tzdW0oCi0gICAg dm9pZCAqdGFibGUsIHVpbnQzMl90IGNoZWNrc3VtX29mZnNldCwgdWludDMyX3QgbGVuZ3RoKQor dm9pZCBzZXRfY2hlY2tzdW0odm9pZCAqdGFibGUsIHVpbnQzMl90IGNoZWNrc3VtX29mZnNldCwg dWludDMyX3QgbGVuZ3RoKQogewogICAgIHVpbnQ4X3QgKnAsIHN1bSA9IDA7CiAKZGlmZiAtLWdp dCBhL3Rvb2xzL2xpYmFjcGkvbGliYWNwaS5oIGIvdG9vbHMvbGliYWNwaS9saWJhY3BpLmgKaW5k ZXggODA0MDNmMDRhYi4uYzk3MzMxMWExNSAxMDA2NDQKLS0tIGEvdG9vbHMvbGliYWNwaS9saWJh Y3BpLmgKKysrIGIvdG9vbHMvbGliYWNwaS9saWJhY3BpLmgKQEAgLTEwOCw2ICsxMDgsOCBAQCBp bnQgYWNwaV9idWlsZF90YWJsZXMoc3RydWN0IGFjcGlfY3R4dCAqY3R4dCwgc3RydWN0IGFjcGlf Y29uZmlnICpjb25maWcpOwogCiBib29sIGZ3X2NmZ19leGlzdHModm9pZCk7CiAKK3ZvaWQgc2V0 X2NoZWNrc3VtKHZvaWQgKnRhYmxlLCB1aW50MzJfdCBjaGVja3N1bV9vZmZzZXQsIHVpbnQzMl90 IGxlbmd0aCk7CisKICNlbmRpZiAvKiBfX0xJQkFDUElfSF9fICovCiAKIC8qCmRpZmYgLS1naXQg YS90b29scy9saWJhY3BpL3FlbXUuaCBiL3Rvb2xzL2xpYmFjcGkvcWVtdS5oCmluZGV4IDk0MDgx NmJmMjcuLjIyNGZjNjdlMDIgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2xpYmFjcGkvcWVtdS5oCisrKyBi L3Rvb2xzL2xpYmFjcGkvcWVtdS5oCkBAIC0zNiw4ICszNiwxMCBAQCBzdHJ1Y3QgZndfY2ZnX2Zp bGUgewogfTsKIAogaW50IGZ3X2NmZ19wcm9iZV9yb21zKHN0cnVjdCBhY3BpX2N0eHQgKmN0eHQp Owordm9pZCBmd19jZmdfcmVhZF9maWxlKGNvbnN0IHN0cnVjdCBmd19jZmdfZmlsZSAqZmlsZSwg dm9pZCAqYnVmKTsKIAogaW50IGxvYWRlcl9hZGRfcm9tKHN0cnVjdCBhY3BpX2N0eHQqIGN0eHQs IGNvbnN0IHN0cnVjdCBmd19jZmdfZmlsZSAqZmlsZSk7CitpbnQgbG9hZGVyX2V4ZWMoc3RydWN0 IGFjcGlfY3R4dCAqY3R4dCk7CiAKICNlbmRpZiAvKiAhX19RRU1VX0hfXyAqLwogCmRpZmYgLS1n aXQgYS90b29scy9saWJhY3BpL3FlbXVfZndfY2ZnLmMgYi90b29scy9saWJhY3BpL3FlbXVfZndf Y2ZnLmMKaW5kZXggNDU4YjZlYWJkYy4uMjYwNzI4ZWNiMyAxMDA2NDQKLS0tIGEvdG9vbHMvbGli YWNwaS9xZW11X2Z3X2NmZy5jCisrKyBiL3Rvb2xzL2xpYmFjcGkvcWVtdV9md19jZmcuYwpAQCAt ODIsNiArODIsMTIgQEAgaW50IGZ3X2NmZ19wcm9iZV9yb21zKHN0cnVjdCBhY3BpX2N0eHQgKmN0 eHQpCiAgICAgcmV0dXJuIHJjOwogfQogCit2b2lkIGZ3X2NmZ19yZWFkX2ZpbGUoY29uc3Qgc3Ry dWN0IGZ3X2NmZ19maWxlICpmaWxlLCB2b2lkICpidWYpCit7CisgICAgZndfY2ZnX3JlYWRfZW50 cnkoYmUxNl90b19jcHUoZmlsZS0+c2VsZWN0KSwgYnVmLAorICAgICAgICAgICAgICAgICAgICAg IGJlMzJfdG9fY3B1KGZpbGUtPnNpemUpKTsKK30KKwogLyoKICAqIExvY2FsIHZhcmlhYmxlczoK ICAqIG1vZGU6IEMKZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYmFjcGkvcWVtdV9sb2FkZXIuYyBiL3Rv b2xzL2xpYmFjcGkvcWVtdV9sb2FkZXIuYwppbmRleCBjMGVkM2IwYWQwLi5kMDQxYTM3MjQ2IDEw MDY0NAotLS0gYS90b29scy9saWJhY3BpL3FlbXVfbG9hZGVyLmMKKysrIGIvdG9vbHMvbGliYWNw aS9xZW11X2xvYWRlci5jCkBAIC0yNCw5ICsyNCw3MSBAQAogI2luY2x1ZGUgImxpYmFjcGkuaCIK ICNpbmNsdWRlICJxZW11LmgiCiAKKy8qIFFFTVUgQklPU0xpbmtlckxvYWRlciBpbnRlcmZhY2Uu IEFsbCBmaWVsZHMgaW4gbGl0dGxlLWVuZGlhbi4gKi8KK3N0cnVjdCBsb2FkZXJfZW50cnkgewor ICAgIHVpbnQzMl90IGNvbW1hbmQ7CisgICAgdW5pb24geworICAgICAgICAvKgorICAgICAgICAg KiBDT01NQU5EX0FMTE9DQVRFIC0gYWxsb2NhdGUgYSB0YWJsZSBmcm9tIEBhbGxvYy5maWxlCisg ICAgICAgICAqIHN1YmplY3QgdG8gQGFsbG9jLmFsaWduIGFsaWdubWVudCAobXVzdCBiZSBwb3dl ciBvZiAyKQorICAgICAgICAgKiBhbmQgQGFsbG9jLnpvbmUgKGNhbiBiZSBISUdIIG9yIEZTRUcp IHJlcXVpcmVtZW50cy4KKyAgICAgICAgICoKKyAgICAgICAgICogTXVzdCBhcHBlYXIgZXhhY3Rs eSBvbmNlIGZvciBlYWNoIGZpbGUsIGFuZCBiZWZvcmUKKyAgICAgICAgICogdGhpcyBmaWxlIGlz IHJlZmVyZW5jZWQgYnkgYW55IG90aGVyIGNvbW1hbmQuCisgICAgICAgICAqLworICAgICAgICBz dHJ1Y3QgeworICAgICAgICAgICAgY2hhciBmaWxlW0ZXX0NGR19GSUxFX1BBVEhfTUFYX0xFTkdU SF07CisgICAgICAgICAgICB1aW50MzJfdCBhbGlnbjsKKyAgICAgICAgICAgIHVpbnQ4X3Qgem9u ZTsKKyAgICAgICAgfSBhbGxvYzsKKworICAgICAgICAvKgorICAgICAgICAgKiBDT01NQU5EX0FE RF9QT0lOVEVSIC0gcGF0Y2ggdGhlIHRhYmxlIChvcmlnaW5hdGluZyBmcm9tCisgICAgICAgICAq IEBkZXN0X2ZpbGUpIGF0IEBwb2ludGVyLm9mZnNldCwgYnkgYWRkaW5nIGEgcG9pbnRlciB0byB0 aGUgdGFibGUKKyAgICAgICAgICogb3JpZ2luYXRpbmcgZnJvbSBAc3JjX2ZpbGUuIDEsMiw0IG9y IDggYnl0ZSB1bnNpZ25lZAorICAgICAgICAgKiBhZGRpdGlvbiBpcyB1c2VkIGRlcGVuZGluZyBv biBAcG9pbnRlci5zaXplLgorICAgICAgICAgKi8KKyAgICAgICAgc3RydWN0IHsKKyAgICAgICAg ICAgIGNoYXIgZGVzdF9maWxlW0ZXX0NGR19GSUxFX1BBVEhfTUFYX0xFTkdUSF07CisgICAgICAg ICAgICBjaGFyIHNyY19maWxlW0ZXX0NGR19GSUxFX1BBVEhfTUFYX0xFTkdUSF07CisgICAgICAg ICAgICB1aW50MzJfdCBvZmZzZXQ7CisgICAgICAgICAgICB1aW50OF90IHNpemU7CisgICAgICAg IH0gcG9pbnRlcjsKKworICAgICAgICAvKgorICAgICAgICAgKiBDT01NQU5EX0FERF9DSEVDS1NV TSAtIGNhbGN1bGF0ZSBjaGVja3N1bSBvZiB0aGUgcmFuZ2Ugc3BlY2lmaWVkIGJ5CisgICAgICAg ICAqIEBja3N1bV9zdGFydCBhbmQgQGNrc3VtX2xlbmd0aCBmaWVsZHMsCisgICAgICAgICAqIGFu ZCB0aGVuIGFkZCB0aGUgdmFsdWUgYXQgQGNrc3VtLm9mZnNldC4KKyAgICAgICAgICogQ2hlY2tz dW0gc2ltcGx5IHN1bXMgLVggZm9yIGVhY2ggYnl0ZSBYIGluIHRoZSByYW5nZQorICAgICAgICAg KiB1c2luZyA4LWJpdCBtYXRoLgorICAgICAgICAgKi8KKyAgICAgICAgc3RydWN0IHsKKyAgICAg ICAgICAgIGNoYXIgZmlsZVtGV19DRkdfRklMRV9QQVRIX01BWF9MRU5HVEhdOworICAgICAgICAg ICAgdWludDMyX3Qgb2Zmc2V0OworICAgICAgICAgICAgdWludDMyX3Qgc3RhcnQ7CisgICAgICAg ICAgICB1aW50MzJfdCBsZW5ndGg7CisgICAgICAgIH0gY2tzdW07CisKKyAgICAgICAgLyogcGFk ZGluZyAqLworICAgICAgICBjaGFyIHBhZFsxMjRdOworICAgIH07Cit9IF9fYXR0cmlidXRlX18g KChwYWNrZWQpKTsKKworZW51bSB7CisgICAgQklPU19MSU5LRVJfTE9BREVSX0NPTU1BTkRfQUxM T0NBVEUgICAgICAgICA9IDB4MSwKKyAgICBCSU9TX0xJTktFUl9MT0FERVJfQ09NTUFORF9BRERf UE9JTlRFUiAgICAgID0gMHgyLAorICAgIEJJT1NfTElOS0VSX0xPQURFUl9DT01NQU5EX0FERF9D SEVDS1NVTSAgICAgPSAweDMsCit9OworCitlbnVtIHsKKyAgICBCSU9TX0xJTktFUl9MT0FERVJf QUxMT0NfWk9ORV9ISUdIID0gMHgxLAorICAgIEJJT1NfTElOS0VSX0xPQURFUl9BTExPQ19aT05F X0ZTRUcgPSAweDIsCit9OworCiBzdHJ1Y3Qgcm9tIHsKICAgICBzdHJ1Y3QgZndfY2ZnX2ZpbGUg ZmlsZTsKICAgICBzdHJ1Y3Qgcm9tICpuZXh0OworICAgIHZvaWQgKmRhdGE7CiB9OwogCiBzdGF0 aWMgc3RydWN0IHJvbSAqcm9tcyA9IE5VTEw7CkBAIC00MSw2ICsxMDMsMTc0IEBAIHN0YXRpYyBi b29sIHJvbV9uZWVkZWQoY29uc3QgY2hhciAqZmlsZV9uYW1lKQogICAgICAgICAhc3RybmNtcChm aWxlX25hbWUsICJldGMvYWNwaS9udmRpbW0tbWVtIiwgRldfQ0ZHX0ZJTEVfUEFUSF9NQVhfTEVO R1RIKTsKIH0KIAorc3RhdGljIGludCBsb2FkZXJfbG9hZChzdHJ1Y3QgYWNwaV9jdHh0ICpjdHh0 LCBzdHJ1Y3Qgcm9tICpsb2FkZXIpCit7CisgICAgc3RydWN0IGZ3X2NmZ19maWxlICpmaWxlID0g JmxvYWRlci0+ZmlsZTsKKyAgICB1aW50MzJfdCBzaXplID0gYmUzMl90b19jcHUoZmlsZS0+c2l6 ZSk7CisKKyAgICBsb2FkZXItPmRhdGEgPSBjdHh0LT5tZW1fb3BzLmFsbG9jKGN0eHQsIHNpemUs IDApOworICAgIGlmICggIWxvYWRlci0+ZGF0YSApCisgICAgICAgIHJldHVybiAtRU5PTUVNOwor CisgICAgZndfY2ZnX3JlYWRfZmlsZShmaWxlLCBsb2FkZXItPmRhdGEpOworCisgICAgcmV0dXJu IDA7Cit9CisKK3N0YXRpYyBzdHJ1Y3Qgcm9tICpsb2FkZXJfZmluZF9yb20oY29uc3QgY2hhciAq ZmlsZV9uYW1lKQoreworICAgIHN0cnVjdCByb20gKnJvbSA9IHJvbXM7CisKKyAgICB3aGlsZSAo IHJvbSApCisgICAgeworICAgICAgICBpZiAoICFzdHJuY21wKHJvbS0+ZmlsZS5uYW1lLCBmaWxl X25hbWUsIEZXX0NGR19GSUxFX1BBVEhfTUFYX0xFTkdUSCkgKQorICAgICAgICAgICAgYnJlYWs7 CisgICAgICAgIHJvbSA9IHJvbS0+bmV4dDsKKyAgICB9CisKKyAgICBpZiAoICFyb20gKQorICAg ICAgICBwcmludGYoIkVSUk9SOiBGaWxlICVzIG5vdCBleGlzdFxuIiwgZmlsZV9uYW1lKTsKKwor ICAgIHJldHVybiByb207Cit9CisKK3N0YXRpYyB2b2lkIGxvYWRlcl9jbWRfZGlzcGxheShzdHJ1 Y3QgbG9hZGVyX2VudHJ5ICplbnRyeSkKK3sKKyAgICBzd2l0Y2ggKCBlbnRyeS0+Y29tbWFuZCAp CisgICAgeworICAgIGNhc2UgQklPU19MSU5LRVJfTE9BREVSX0NPTU1BTkRfQUxMT0NBVEU6Cisg ICAgICAgIGVudHJ5LT5hbGxvYy5maWxlW0ZXX0NGR19GSUxFX1BBVEhfTUFYX0xFTkdUSCAtIDFd ID0gJ1wwJzsKKyAgICAgICAgcHJpbnRmKCJDT01NQU5EX0FMTE9DQVRFOiBmaWxlICVzLCBhbGln biAldSwgem9uZSAldVxuIiwKKyAgICAgICAgICAgICAgIGVudHJ5LT5hbGxvYy5maWxlLCBlbnRy eS0+YWxsb2MuYWxpZ24sIGVudHJ5LT5hbGxvYy56b25lKTsKKyAgICAgICAgYnJlYWs7CisKKyAg ICBjYXNlIEJJT1NfTElOS0VSX0xPQURFUl9DT01NQU5EX0FERF9QT0lOVEVSOgorICAgICAgICBl bnRyeS0+cG9pbnRlci5kZXN0X2ZpbGVbRldfQ0ZHX0ZJTEVfUEFUSF9NQVhfTEVOR1RIIC0gMV0g PSAnXDAnOworICAgICAgICBlbnRyeS0+cG9pbnRlci5zcmNfZmlsZVtGV19DRkdfRklMRV9QQVRI X01BWF9MRU5HVEggLSAxXSA9ICdcMCc7CisgICAgICAgIHByaW50ZigiQ09NTUFORF9BRERfUE9J TlRFUjogZHN0ICVzLCBzcmMgJXMsIG9mZnNldCAldSwgc2l6ZSAldVxuIiwKKyAgICAgICAgICAg ICAgIGVudHJ5LT5wb2ludGVyLmRlc3RfZmlsZSwgZW50cnktPnBvaW50ZXIuc3JjX2ZpbGUsCisg ICAgICAgICAgICAgICBlbnRyeS0+cG9pbnRlci5vZmZzZXQsIGVudHJ5LT5wb2ludGVyLnNpemUp OworICAgICAgICBicmVhazsKKworICAgIGNhc2UgQklPU19MSU5LRVJfTE9BREVSX0NPTU1BTkRf QUREX0NIRUNLU1VNOgorICAgICAgICBlbnRyeS0+Y2tzdW0uZmlsZVtGV19DRkdfRklMRV9QQVRI X01BWF9MRU5HVEggLSAxXSA9ICdcMCc7CisgICAgICAgIHByaW50ZigiQ09NTUFORF9BRERfQ0hF Q0tTVU06IGZpbGUgJXMsIG9mZnNldCAldSwgb2Zmc2V0ICV1LCBsZW4gJXVcbiIsCisgICAgICAg ICAgICAgICBlbnRyeS0+Y2tzdW0uZmlsZSwgZW50cnktPmNrc3VtLm9mZnNldCwKKyAgICAgICAg ICAgICAgIGVudHJ5LT5ja3N1bS5zdGFydCwgZW50cnktPmNrc3VtLmxlbmd0aCk7CisgICAgICAg IGJyZWFrOworCisgICAgZGVmYXVsdDoKKyAgICAgICAgcHJpbnRmKCJVbnN1cHBvcnRlZCBjb21t YW5kICV1XG4iLCBlbnRyeS0+Y29tbWFuZCk7CisgICAgfQorfQorCitzdGF0aWMgaW50IGxvYWRl cl9leGVjX2FsbG9jYXRlKHN0cnVjdCBhY3BpX2N0eHQgKmN0eHQsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBsb2FkZXJfZW50cnkgKmVudHJ5KQoreworICAg IHVpbnQzMl90IGFsaWduID0gZW50cnktPmFsbG9jLmFsaWduOworICAgIHVpbnQ4X3Qgem9uZSA9 IGVudHJ5LT5hbGxvYy56b25lOworICAgIHN0cnVjdCByb20gKnJvbTsKKyAgICBzdHJ1Y3QgZndf Y2ZnX2ZpbGUgKmZpbGU7CisKKyAgICByb20gPSBsb2FkZXJfZmluZF9yb20oZW50cnktPmFsbG9j LmZpbGUpOworICAgIGlmICggIXJvbSApCisgICAgICAgIHJldHVybiAtRU5PRU5UOworICAgIGZp bGUgPSAmcm9tLT5maWxlOworCisgICAgaWYgKCBhbGlnbiAmIChhbGlnbiAtIDEpICkKKyAgICB7 CisgICAgICAgIHByaW50ZigiRVJST1I6IEludmFsaWQgYWxpZ25tZW50ICV1LCBub3QgcG93ZXIg b2YgMlxuIiwgYWxpZ24pOworICAgICAgICByZXR1cm4gLUVJTlZBTDsKKyAgICB9CisKKyAgICBp ZiAoIHpvbmUgIT0gQklPU19MSU5LRVJfTE9BREVSX0FMTE9DX1pPTkVfSElHSCAmJgorICAgICAg ICAgem9uZSAhPSBCSU9TX0xJTktFUl9MT0FERVJfQUxMT0NfWk9ORV9GU0VHICkKKyAgICB7Cisg ICAgICAgIHByaW50ZigiRVJST1I6IFVuc3VwcG9ydGVkIHpvbmUgdHlwZSAldVxuIiwgem9uZSk7 CisgICAgICAgIHJldHVybiAtRUlOVkFMOworICAgIH0KKworICAgIHJvbS0+ZGF0YSA9IGN0eHQt Pm1lbV9vcHMuYWxsb2MoY3R4dCwgYmUzMl90b19jcHUoZmlsZS0+c2l6ZSksIGFsaWduKTsKKyAg ICBmd19jZmdfcmVhZF9maWxlKGZpbGUsIHJvbS0+ZGF0YSk7CisKKyAgICByZXR1cm4gMDsKK30K Kworc3RhdGljIGludCBsb2FkZXJfZXhlY19hZGRfcG9pbnRlcihzdHJ1Y3QgYWNwaV9jdHh0ICpj dHh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgbG9h ZGVyX2VudHJ5ICplbnRyeSkKK3sKKyAgICB1aW50MzJfdCBvZmZzZXQgPSBlbnRyeS0+cG9pbnRl ci5vZmZzZXQ7CisgICAgdWludDhfdCBzaXplID0gZW50cnktPnBvaW50ZXIuc2l6ZTsKKyAgICBz dHJ1Y3Qgcm9tICpkc3QsICpzcmM7CisgICAgdWludDY0X3QgcG9pbnRlciwgb2xkX3BvaW50ZXI7 CisKKyAgICBkc3QgPSBsb2FkZXJfZmluZF9yb20oZW50cnktPnBvaW50ZXIuZGVzdF9maWxlKTsK KyAgICBzcmMgPSBsb2FkZXJfZmluZF9yb20oZW50cnktPnBvaW50ZXIuc3JjX2ZpbGUpOworICAg IGlmICggIWRzdCB8fCAhc3JjICkKKyAgICAgICAgcmV0dXJuIC1FTk9FTlQ7CisKKyAgICBpZiAo ICFkc3QtPmRhdGEgKQorICAgIHsKKyAgICAgICAgcHJpbnRmKCJFUlJPUjogTm8gc3BhY2UgYWxs b2NhdGVkIGZvciBmaWxlICVzXG4iLAorICAgICAgICAgICAgICAgZW50cnktPnBvaW50ZXIuZGVz dF9maWxlKTsKKyAgICAgICAgcmV0dXJuIC1FTk9TUEM7CisgICAgfQorICAgIGlmICggIXNyYy0+ ZGF0YSApCisgICAgeworICAgICAgICBwcmludGYoIkVSUk9SOiBObyBzcGFjZSBhbGxvY2F0ZWQg Zm9yIGZpbGUgJXNcbiIsCisgICAgICAgICAgICAgICBlbnRyeS0+cG9pbnRlci5zcmNfZmlsZSk7 CisgICAgICAgIHJldHVybiAtRU5PU1BDOworICAgIH0KKyAgICBpZiAoIG9mZnNldCArIHNpemUg PCBvZmZzZXQgfHwKKyAgICAgICAgIG9mZnNldCArIHNpemUgPiBiZTMyX3RvX2NwdShkc3QtPmZp bGUuc2l6ZSkgKQorICAgIHsKKyAgICAgICAgcHJpbnRmKCJFUlJPUjogSW52YWxpZCBzaXplXG4i KTsKKyAgICAgICAgcmV0dXJuIC1FSU5WQUw7CisgICAgfQorICAgIGlmICggc2l6ZSAhPSAxICYm IHNpemUgIT0gMiAmJiBzaXplICE9IDQgJiYgc2l6ZSAhPSA4ICkKKyAgICB7CisgICAgICAgIHBy aW50ZigiRVJST1I6IEludmFsaWQgcG9pbnRlciBzaXplICV1XG4iLCBzaXplKTsKKyAgICAgICAg cmV0dXJuIC1FSU5WQUw7CisgICAgfQorCisgICAgbWVtY3B5KCZwb2ludGVyLCBkc3QtPmRhdGEg KyBvZmZzZXQsIHNpemUpOworICAgIG9sZF9wb2ludGVyID0gcG9pbnRlcjsKKyAgICBwb2ludGVy ICs9IGN0eHQtPm1lbV9vcHMudjJwKGN0eHQsIHNyYy0+ZGF0YSk7CisgICAgbWVtY3B5KGRzdC0+ ZGF0YSArIG9mZnNldCwgJnBvaW50ZXIsIHNpemUpOworCisgICAgcmV0dXJuIDA7Cit9CisKK3N0 YXRpYyBpbnQgbG9hZGVyX2V4ZWNfYWRkX2NoZWNrc3VtKGNvbnN0IHN0cnVjdCBsb2FkZXJfZW50 cnkgKmVudHJ5KQoreworICAgIHVpbnQzMl90IG9mZnNldCA9IGVudHJ5LT5ja3N1bS5vZmZzZXQ7 CisgICAgdWludDMyX3Qgc3RhcnQgPSBlbnRyeS0+Y2tzdW0uc3RhcnQ7CisgICAgdWludDMyX3Qg bGVuZ3RoID0gZW50cnktPmNrc3VtLmxlbmd0aDsKKyAgICB1aW50MzJfdCBzaXplOworICAgIHN0 cnVjdCByb20gKnJvbTsKKworICAgIHJvbSA9IGxvYWRlcl9maW5kX3JvbShlbnRyeS0+Y2tzdW0u ZmlsZSk7CisgICAgaWYgKCAhcm9tICkKKyAgICAgICAgcmV0dXJuIC1FTk9FTlQ7CisKKyAgICBp ZiAoICFyb20tPmRhdGEgKQorICAgIHsKKyAgICAgICAgcHJpbnRmKCJFUlJPUjogTm8gc3BhY2Ug YWxsb2NhdGVkIGZvciBmaWxlICVzXG4iLCBlbnRyeS0+Y2tzdW0uZmlsZSk7CisgICAgICAgIHJl dHVybiAtRU5PU1BDOworICAgIH0KKworICAgIHNpemUgPSBiZTMyX3RvX2NwdShyb20tPmZpbGUu c2l6ZSk7CisgICAgaWYgKCBvZmZzZXQgPj0gc2l6ZSB8fCBzdGFydCArIGxlbmd0aCA8IHN0YXJ0 IHx8IHN0YXJ0ICsgbGVuZ3RoID4gc2l6ZSApCisgICAgeworICAgICAgICBwcmludGYoIkVSUk9S OiBJbnZhbGlkIHNpemVcbiIpOworICAgICAgICByZXR1cm4gLUVJTlZBTDsKKyAgICB9CisKKyAg ICBzZXRfY2hlY2tzdW0ocm9tLT5kYXRhICsgc3RhcnQsIG9mZnNldCAtIHN0YXJ0LCBsZW5ndGgp OworCisgICAgcmV0dXJuIDA7Cit9CisKIGludCBsb2FkZXJfYWRkX3JvbShzdHJ1Y3QgYWNwaV9j dHh0ICpjdHh0LCBjb25zdCBzdHJ1Y3QgZndfY2ZnX2ZpbGUgKmZpbGUpCiB7CiAgICAgY29uc3Qg Y2hhciAqbmFtZSA9IGZpbGUtPm5hbWU7CkBAIC02Myw2ICsyOTMsNyBAQCBpbnQgbG9hZGVyX2Fk ZF9yb20oc3RydWN0IGFjcGlfY3R4dCAqY3R4dCwgY29uc3Qgc3RydWN0IGZ3X2NmZ19maWxlICpm aWxlKQogCiAgICAgbWVtY3B5KCZyb20tPmZpbGUsIGZpbGUsIHNpemVvZigqZmlsZSkpOwogICAg IHJvbS0+bmV4dCA9IHJvbXM7CisgICAgcm9tLT5kYXRhID0gTlVMTDsKICAgICByb21zID0gcm9t OwogCiAgICAgaWYgKCAhc3RybmNtcChuYW1lLCAiZXRjL3RhYmxlLWxvYWRlciIsIEZXX0NGR19G SUxFX1BBVEhfTUFYX0xFTkdUSCkgKQpAQCAtNzEsNiArMzAyLDc3IEBAIGludCBsb2FkZXJfYWRk X3JvbShzdHJ1Y3QgYWNwaV9jdHh0ICpjdHh0LCBjb25zdCBzdHJ1Y3QgZndfY2ZnX2ZpbGUgKmZp bGUpCiAgICAgcmV0dXJuIDA7CiB9CiAKK2ludCBsb2FkZXJfZXhlYyhzdHJ1Y3QgYWNwaV9jdHh0 ICpjdHh0KQoreworICAgIHN0cnVjdCBsb2FkZXJfZW50cnkgKmVudHJ5OworICAgIHN0cnVjdCBm d19jZmdfZmlsZSAqZmlsZTsKKyAgICB1bnNpZ25lZCBsb25nIHNpemUsIG9mZnNldCA9IDA7Cisg ICAgdm9pZCAqZGF0YTsKKyAgICBpbnQgcmMgPSAwOworCisgICAgaWYgKCAhYmlvc19sb2FkZXIg KQorICAgIHsKKyAgICAgICAgcHJpbnRmKCJFUlJPUjogQ2Fubm90IGZpbmQgQklPU0xpbmtlckxv YWRlclxuIik7CisgICAgICAgIHJldHVybiAtRU5PREVWOworICAgIH0KKworICAgIGZpbGUgPSAm Ymlvc19sb2FkZXItPmZpbGU7CisgICAgc2l6ZSA9IGJlMzJfdG9fY3B1KGZpbGUtPnNpemUpOwor CisgICAgaWYgKCBzaXplICUgc2l6ZW9mKCplbnRyeSkgKQorICAgIHsKKyAgICAgICAgcHJpbnRm KCJFUlJPUjogSW52YWxpZCBCSU9TTGlua2VyTG9hZGVyIHNpemUgJWxkLCAiCisgICAgICAgICAg ICAgICAibm90IG11bHRpcGxlcyBvZiBlbnRyeSBzaXplICVsZFxuIiwKKyAgICAgICAgICAgICAg IHNpemUsICh1bnNpZ25lZCBsb25nKXNpemVvZigqZW50cnkpKTsKKyAgICAgICAgcmV0dXJuIC1F SU5WQUw7CisgICAgfQorCisgICAgcmMgPSBsb2FkZXJfbG9hZChjdHh0LCBiaW9zX2xvYWRlcik7 CisgICAgaWYgKCByYyApCisgICAgeworICAgICAgICBwcmludGYoIkVSUk9SOiBGYWlsZWQgdG8g bG9hZCBCSU9TTGlua2VyTG9hZGVyLCBlcnIgJWRcbiIsIHJjKTsKKyAgICAgICAgcmV0dXJuIHJj OworICAgIH0KKworICAgIGRhdGEgPSBiaW9zX2xvYWRlci0+ZGF0YTsKKworICAgIHdoaWxlICgg b2Zmc2V0IDwgc2l6ZSApCisgICAgeworICAgICAgICBlbnRyeSA9IGRhdGEgKyBvZmZzZXQ7CisK KyAgICAgICAgc3dpdGNoICggZW50cnktPmNvbW1hbmQgKQorICAgICAgICB7CisgICAgICAgIGNh c2UgQklPU19MSU5LRVJfTE9BREVSX0NPTU1BTkRfQUxMT0NBVEU6CisgICAgICAgICAgICByYyA9 IGxvYWRlcl9leGVjX2FsbG9jYXRlKGN0eHQsIGVudHJ5KTsKKyAgICAgICAgICAgIGJyZWFrOwor CisgICAgICAgIGNhc2UgQklPU19MSU5LRVJfTE9BREVSX0NPTU1BTkRfQUREX1BPSU5URVI6Cisg ICAgICAgICAgICByYyA9IGxvYWRlcl9leGVjX2FkZF9wb2ludGVyKGN0eHQsIGVudHJ5KTsKKyAg ICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgQklPU19MSU5LRVJfTE9BREVSX0NPTU1B TkRfQUREX0NIRUNLU1VNOgorICAgICAgICAgICAgcmMgPSBsb2FkZXJfZXhlY19hZGRfY2hlY2tz dW0oZW50cnkpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAg ICAgICAgIC8qIFNraXAgdW5zdXBwb3J0ZWQgY29tbWFuZHMgKi8KKyAgICAgICAgICAgIGJyZWFr OworICAgICAgICB9CisKKyAgICAgICAgaWYgKCByYyApCisgICAgICAgIHsKKyAgICAgICAgICAg IHByaW50ZigiRVJST1I6IEZhaWxlZCB0byBleGVjdXRlIEJJT1NMaW5rZXJMb2FkZXIgY29tbWFu ZDpcbiIpOworICAgICAgICAgICAgbG9hZGVyX2NtZF9kaXNwbGF5KGVudHJ5KTsKKworICAgICAg ICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBvZmZzZXQgKz0gc2l6ZW9mKCplbnRy eSk7CisgICAgfQorCisgICAgcmV0dXJuIHJjOworfQorCiAvKgogICogTG9jYWwgdmFyaWFibGVz OgogICogbW9kZTogQwpkaWZmIC0tZ2l0IGEvdG9vbHMvbGliYWNwaS9xZW11X3N0dWIuYyBiL3Rv b2xzL2xpYmFjcGkvcWVtdV9zdHViLmMKaW5kZXggZmRiYTUyOTRlMS4uMWVlZGY1NDY2ZSAxMDA2 NDQKLS0tIGEvdG9vbHMvbGliYWNwaS9xZW11X3N0dWIuYworKysgYi90b29scy9saWJhY3BpL3Fl bXVfc3R1Yi5jCkBAIC0zNCwxMSArMzQsMjAgQEAgaW50IGZ3X2NmZ19wcm9iZV9yb21zKHN0cnVj dCBhY3BpX2N0eHQgKmN0eHQpCiAgICAgcmV0dXJuIC1FTk9TWVM7CiB9CiAKK3ZvaWQgZndfY2Zn X3JlYWRfZmlsZShjb25zdCBzdHJ1Y3QgZndfY2ZnX2ZpbGUgKmZpbGUsIHZvaWQgKmJ1ZikKK3sK K30KKwogaW50IGxvYWRlcl9hZGRfcm9tKHN0cnVjdCBhY3BpX2N0eHQqIGN0eHQsIGNvbnN0IHN0 cnVjdCBmd19jZmdfZmlsZSAqZmlsZSkKIHsKICAgICByZXR1cm4gLUVOT1NZUzsKIH0KIAoraW50 IGxvYWRlcl9leGVjKHN0cnVjdCBhY3BpX2N0eHQgKmN0eHQpCit7CisgICAgcmV0dXJuIC1FTk9T WVM7Cit9CisKIC8qCiAgKiBMb2NhbCB2YXJpYWJsZXM6CiAgKiBtb2RlOiBDCi0tIAoyLjE1LjEK CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2 ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xp c3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8veGVuLWRldmVs