From mboxrd@z Thu Jan 1 00:00:00 1970 From: Haozhong Zhang Subject: [PATCH v4 03/11] x86/mce: handle host LMCE Date: Mon, 26 Jun 2017 17:16:17 +0800 Message-ID: <20170626091625.19655-4-haozhong.zhang@intel.com> References: <20170626091625.19655-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: <20170626091625.19655-1-haozhong.zhang@intel.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xen.org Cc: Haozhong Zhang , Jan Beulich , Andrew Cooper List-Id: xen-devel@lists.xenproject.org QSByb3VuZCBvZiBtY2Vfc29mdGlycSgpIG1heSBoYW5kbGUgbXVsdGlwbGUgZGVmZXJyZWQgTUNF J3MuCiAxLyBJZiBhbGwgb2YgdGhlbSBhcmUgTE1DRSdzLCB0aGVuIG1jZV9zb2Z0aXJxKCkgaXMg Y2FsbGVkIG9uIG9uZSBDUFUKICAgIGFuZCBzaG91bGQgbm90IHdhaXQgZm9yIG90aGVycy4KIDIv IElmIGF0IGxlYXN0IG9uZSBvZiB0aGVtIGlzIG5vbi1sb2NhbCBNQ0UsIHRoZW4gbWNlX3NvZnRp cnEoKQogICAgc2hvdWxkIHN5bmMgd2l0aCBvdGhlciBDUFVzLiBtY2Vfc29mdGlycSgpIHNob3Vs ZCBjaGVjayB0aG9zZSB0d28KICAgIGNhc2VzIGFuZCBoYW5kbGUgdGhlbSBhY2NvcmRpbmdseS4K CkJlY2F1c2UgbWNlX3NvZnRpcnEoKSBjYW4gYmUgaW50ZXJydXB0ZWQgYnkgTUMjIGFnYWluLCB3 ZSBzaG91bGQgYWxzbwplbnN1cmUgdGhlIGRlZmVycmVkIE1DRSBoYW5kbGluZyBpbiBtY2Vfc29m dGlycSgpIGlzIGltbXV0YWJsZSB0byB0aGUKY2hhbmdlIG9mIHRoZSBjaGVja2luZyByZXN1bHQu CgpBIHBlci1jcHUgbGlzdCAnbG1jZV9wZW5kaW5nJyBpcyBpbnRyb2R1Y2VkIHRvICdzdHJ1Y3Qg bWNfdGVsZW1fY3B1X2N0bCcKYWxvbmcgd2l0aCB0aGUgZXhpc3RpbmcgcGVyLWNwdSBsaXN0ICdw ZW5kaW5nJyBmb3IgTE1DRSBoYW5kbGluZy4KCk1DIyBoYW5kbGVyIG1jaGVja19jbW5faGFuZGxl cigpIGVuc3VyZXMgdGhhdAogMS8gaWYgYWxsIGRlZmVycmVkIE1DRSdzIG9uIGEgQ1BVIGFyZSBM TUNFJ3MsIHRoZW4gYWxsIG9mIHRoZWlyCiAgICB0ZWxlbWV0cmllcyB3aWxsIGJlIG9ubHkgaW4g J2xtY2VfcGVuZGluZycgb24gdGhhdCBDUFU7CiAyLyBpZiBhdCBsZWFzdCBvbmUgb2YgZGVmZXJy ZWQgTUNFIG9uIGEgQ1BVIGlzIG5vdCBMTUNFLCB0aGVuIGFsbAogICAgdGVsZW1ldHJpZXMgb2Yg ZGVmZXJyZWQgTUNFJ3Mgb24gdGhhdCBDUFUgd2lsbCBiZSBvbmx5IGluCiAgICAncGVuZGluZycg b24gdGhhdCBDUFUuCgpUaGVyZWZvcmUsIHRoZSBub24tZW1wdHkgb2YgJ2xtY2VfcGVuZGluZycg Y2FuIGJlIHVzZWQgdG8gZGV0ZXJtaW5lCndoZXRoZXIgaXQncyB0aGUgZm9ybWVyIG9mIHRoZSBi ZWdpbm5pbmcgdHdvIGNhc2VzIGluIE1DRSBzb2Z0aXJxCmhhbmRsZXIgbWNlX3NvZnRpcnEoKS4K Cm1jZV9zb2Z0aXJxKCkgYXRvbWljYWxseSBtb3ZlcyBkZWZlcnJlZCBNQ0UncyBmcm9tIGVpdGhl ciBsaXN0CidsbWNlX3BlbmRpbmcnIG9uIHRoZSBjdXJyZW50IENQVSBvciBsaXN0cyAncGVuZGlu Zycgb24gdGhlIGN1cnJlbnQgb3IKb3RoZXIgQ1BVcyB0byBsaXN0ICdwcm9jZXNzaW5nJyBpbiB0 aGUgY3VycmVudCBDUFUsIGFuZCB0aGVuIGhhbmRsZXMKZGVmZXJyZWQgTUNFJ3MgaW4gbGlzdCAn cHJvY2Vzc2luZycuICBOZXcgY29taW5nIE1DIyBiZWZvcmUgYW5kIGFmdGVyCnRoZSBhdG9taWMg bW92ZSwgd2hpY2ggY2hhbmdlIHRoZSByZXN1bHQgb2YgdGhlIGNoZWNrLCBkbyBub3QgY2hhbmdl CndoZXRoZXIgTUNFJ3MgaW4gJ3Byb2Nlc3NpbmcnIGFyZSBMTUNFIG9yIG5vdCwgc28gbWNlX3Nv ZnRpcnEoKSBjYW4Kc3RpbGwgaGFuZGxlICdwcm9jZXNzaW5nJyBhY2NvcmRpbmcgdG8gdGhlIHJl c3VsdCBvZiBwcmV2aW91cyBjaGVjay4KClNpZ25lZC1vZmYtYnk6IEhhb3pob25nIFpoYW5nIDxo YW96aG9uZy56aGFuZ0BpbnRlbC5jb20+Ci0tLQpDYzogSmFuIEJldWxpY2ggPGpiZXVsaWNoQHN1 c2UuY29tPgpDYzogQW5kcmV3IENvb3BlciA8YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNvbT4KLS0t CiB4ZW4vYXJjaC94ODYvY3B1L21jaGVjay9tY2FjdGlvbi5jIHwgIDQgKy0KIHhlbi9hcmNoL3g4 Ni9jcHUvbWNoZWNrL21jZS5jICAgICAgfCA2NiArKysrKysrKysrKysrKy0tLS0tLS0tLS0tLQog eGVuL2FyY2gveDg2L2NwdS9tY2hlY2svbWNlLmggICAgICB8ICAxICsKIHhlbi9hcmNoL3g4Ni9j cHUvbWNoZWNrL21jdGVsZW0uYyAgfCA5NSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKy0tLQogeGVuL2FyY2gveDg2L2NwdS9tY2hlY2svbWN0ZWxlbS5oICB8ICA1ICstCiB4ZW4v YXJjaC94ODYvY3B1L21jaGVjay94ODZfbWNhLmggIHwgIDQgKy0KIDYgZmlsZXMgY2hhbmdlZCwg MTM1IGluc2VydGlvbnMoKyksIDQwIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3hlbi9hcmNo L3g4Ni9jcHUvbWNoZWNrL21jYWN0aW9uLmMgYi94ZW4vYXJjaC94ODYvY3B1L21jaGVjay9tY2Fj dGlvbi5jCmluZGV4IGRhYjllYWMzMDYuLmNhMTdkMjJiZDggMTAwNjQ0Ci0tLSBhL3hlbi9hcmNo L3g4Ni9jcHUvbWNoZWNrL21jYWN0aW9uLmMKKysrIGIveGVuL2FyY2gveDg2L2NwdS9tY2hlY2sv bWNhY3Rpb24uYwpAQCAtOTYsNyArOTYsOSBAQCBtY19tZW1lcnJfZGhhbmRsZXIoc3RydWN0IG1j YV9iaW5mbyAqYmluZm8sCiAKICAgICAgICAgICAgICAgICBiYW5rLT5tY19hZGRyID0gZ2ZuIDw8 IFBBR0VfU0hJRlQgfAogICAgICAgICAgICAgICAgICAgKGJhbmstPm1jX2FkZHIgJiAoUEFHRV9T SVpFIC0xICkpOwotICAgICAgICAgICAgICAgIGlmIChmaWxsX3Ztc3JfZGF0YShiYW5rLCBkLCBn bG9iYWwtPm1jX2dzdGF0dXMsCisgICAgICAgICAgICAgICAgLyogVE9ETzogc3VwcG9ydCBpbmpl Y3RpbmcgTE1DRSAqLworICAgICAgICAgICAgICAgIGlmIChmaWxsX3Ztc3JfZGF0YShiYW5rLCBk LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbG9iYWwtPm1jX2dzdGF0dXMg JiB+TUNHX1NUQVRVU19MTUNFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2 bWNlX3ZjcHVpZCA9PSBWTUNFX0lOSkVDVF9CUk9BRENBU1QpKQogICAgICAgICAgICAgICAgIHsK ICAgICAgICAgICAgICAgICAgICAgbWNlX3ByaW50ayhNQ0VfUVVJRVQsICJGaWxsIHZNQ0UjIGRh dGEgZm9yIERPTSVkICIKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9jcHUvbWNoZWNrL21jZS5j IGIveGVuL2FyY2gveDg2L2NwdS9tY2hlY2svbWNlLmMKaW5kZXggMWUwYjAzYzM4Yi4uMjQyOGNj MDc2MiAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L2NwdS9tY2hlY2svbWNlLmMKKysrIGIveGVu L2FyY2gveDg2L2NwdS9tY2hlY2svbWNlLmMKQEAgLTM4Nyw2ICszODcsNyBAQCBtY2hlY2tfbWNh X2xvZ291dChlbnVtIG1jYV9zb3VyY2Ugd2hvLCBzdHJ1Y3QgbWNhX2JhbmtzICpiYW5rbWFzaywK ICAgICAgICAgc3AtPmVycmNudCA9IGVycmNudDsKICAgICAgICAgc3AtPnJpcHYgPSAoZ3N0YXR1 cyAmIE1DR19TVEFUVVNfUklQVikgIT0gMDsKICAgICAgICAgc3AtPmVpcHYgPSAoZ3N0YXR1cyAm IE1DR19TVEFUVVNfRUlQVikgIT0gMDsKKyAgICAgICAgc3AtPmxtY2UgPSAoZ3N0YXR1cyAmIE1D R19TVEFUVVNfTE1DRSkgIT0gMDsKICAgICAgICAgc3AtPnVjID0gdWM7CiAgICAgICAgIHNwLT5w Y2MgPSBwY2M7CiAgICAgICAgIHNwLT5yZWNvdmVyYWJsZSA9IHJlY292ZXI7CkBAIC00NTQsNiAr NDU1LDcgQEAgdm9pZCBtY2hlY2tfY21uX2hhbmRsZXIoY29uc3Qgc3RydWN0IGNwdV91c2VyX3Jl Z3MgKnJlZ3MpCiAgICAgdWludDY0X3QgZ3N0YXR1czsKICAgICBtY3RlbGVtX2Nvb2tpZV90IG1j dGMgPSBOVUxMOwogICAgIHN0cnVjdCBtY2Ffc3VtbWFyeSBiczsKKyAgICBib29sIGxtY2U7CiAK ICAgICBtY2Vfc3Bpbl9sb2NrKCZtY2VfbG9nb3V0X2xvY2spOwogCkBAIC00NjIsNiArNDY0LDcg QEAgdm9pZCBtY2hlY2tfY21uX2hhbmRsZXIoY29uc3Qgc3RydWN0IGNwdV91c2VyX3JlZ3MgKnJl Z3MpCiAgICAgICAgICAgICBzaXplb2YobG9uZykgKiBCSVRTX1RPX0xPTkdTKGNsZWFyX2Jhbmst Pm51bSkpOwogICAgIH0KICAgICBtY3RjID0gbWNoZWNrX21jYV9sb2dvdXQoTUNBX01DRV9TQ0FO LCBiYW5rbWFzaywgJmJzLCBjbGVhcl9iYW5rKTsKKyAgICBsbWNlID0gYnMubG1jZTsKIAogICAg IGlmIChicy5lcnJjbnQpIHsKICAgICAgICAgLyoKQEAgLTQ3MCw3ICs0NzMsNyBAQCB2b2lkIG1j aGVja19jbW5faGFuZGxlcihjb25zdCBzdHJ1Y3QgY3B1X3VzZXJfcmVncyAqcmVncykKICAgICAg ICAgaWYgKGJzLnVjIHx8IGJzLnBjYykgewogICAgICAgICAgICAgYWRkX3RhaW50KFRBSU5UX01B Q0hJTkVfQ0hFQ0spOwogICAgICAgICAgICAgaWYgKG1jdGMgIT0gTlVMTCkKLSAgICAgICAgICAg ICAgICBtY3RlbGVtX2RlZmVyKG1jdGMpOworICAgICAgICAgICAgICAgIG1jdGVsZW1fZGVmZXIo bWN0YywgbG1jZSk7CiAgICAgICAgICAgICAvKgogICAgICAgICAgICAgICogRm9yIFBDQz0xIGFu ZCBjYW4ndCBiZSByZWNvdmVyZWQsIGNvbnRleHQgaXMgbG9zdCwgc28KICAgICAgICAgICAgICAq IHJlYm9vdCBub3cgd2l0aG91dCBjbGVhcmluZyB0aGUgYmFua3MsIGFuZCBkZWFsIHdpdGgKQEAg LTQ5NywxNiArNTAwLDE2IEBAIHZvaWQgbWNoZWNrX2Ntbl9oYW5kbGVyKGNvbnN0IHN0cnVjdCBj cHVfdXNlcl9yZWdzICpyZWdzKQogICAgIH0KICAgICBtY2Vfc3Bpbl91bmxvY2soJm1jZV9sb2dv dXRfbG9jayk7CiAKLSAgICBtY2VfYmFycmllcl9lbnRlcigmbWNlX3RyYXBfYmFyLCBmYWxzZSk7 CisgICAgbWNlX2JhcnJpZXJfZW50ZXIoJm1jZV90cmFwX2JhciwgbG1jZSk7CiAgICAgaWYgKCBt Y3RjICE9IE5VTEwgJiYgbWNlX3VyZ2VudF9hY3Rpb24ocmVncywgbWN0YykpCiAgICAgICAgIGNw dW1hc2tfc2V0X2NwdShzbXBfcHJvY2Vzc29yX2lkKCksICZtY2VfZmF0YWxfY3B1cyk7Ci0gICAg bWNlX2JhcnJpZXJfZXhpdCgmbWNlX3RyYXBfYmFyLCBmYWxzZSk7CisgICAgbWNlX2JhcnJpZXJf ZXhpdCgmbWNlX3RyYXBfYmFyLCBsbWNlKTsKIAogICAgIC8qCiAgICAgICogV2FpdCB1bnRpbCBl dmVyeWJvZHkgaGFzIHByb2Nlc3NlZCB0aGUgdHJhcC4KICAgICAgKi8KLSAgICBtY2VfYmFycmll cl9lbnRlcigmbWNlX3RyYXBfYmFyLCBmYWxzZSk7Ci0gICAgaWYgKGF0b21pY19yZWFkKCZzZXZl cml0eV9jcHUpID09IHNtcF9wcm9jZXNzb3JfaWQoKSkKKyAgICBtY2VfYmFycmllcl9lbnRlcigm bWNlX3RyYXBfYmFyLCBsbWNlKTsKKyAgICBpZiAobG1jZSB8fCBhdG9taWNfcmVhZCgmc2V2ZXJp dHlfY3B1KSA9PSBzbXBfcHJvY2Vzc29yX2lkKCkpCiAgICAgewogICAgICAgICAvKiBBY2NvcmRp bmcgdG8gU0RNLCBpZiBubyBlcnJvciBiYW5rIGZvdW5kIG9uIGFueSBjcHVzLAogICAgICAgICAg KiBzb21ldGhpbmcgdW5leHBlY3RlZCBoYXBwZW5pbmcsIHdlIGNhbid0IGRvIGFueQpAQCAtNTI0 LDE2ICs1MjcsMTYgQEAgdm9pZCBtY2hlY2tfY21uX2hhbmRsZXIoY29uc3Qgc3RydWN0IGNwdV91 c2VyX3JlZ3MgKnJlZ3MpCiAgICAgICAgIGF0b21pY19zZXQoJmZvdW5kX2Vycm9yLCAwKTsKICAg ICAgICAgYXRvbWljX3NldCgmc2V2ZXJpdHlfY3B1LCAtMSk7CiAgICAgfQotICAgIG1jZV9iYXJy aWVyX2V4aXQoJm1jZV90cmFwX2JhciwgZmFsc2UpOworICAgIG1jZV9iYXJyaWVyX2V4aXQoJm1j ZV90cmFwX2JhciwgbG1jZSk7CiAKICAgICAvKiBDbGVhciBmbGFncyBhZnRlciBhYm92ZSBmYXRh bCBjaGVjayAqLwotICAgIG1jZV9iYXJyaWVyX2VudGVyKCZtY2VfdHJhcF9iYXIsIGZhbHNlKTsK KyAgICBtY2VfYmFycmllcl9lbnRlcigmbWNlX3RyYXBfYmFyLCBsbWNlKTsKICAgICBnc3RhdHVz ID0gbWNhX3JkbXNyKE1TUl9JQTMyX01DR19TVEFUVVMpOwogICAgIGlmICgoZ3N0YXR1cyAmIE1D R19TVEFUVVNfTUNJUCkgIT0gMCkgewogICAgICAgICBtY2VfcHJpbnRrKE1DRV9DUklUSUNBTCwg Ik1DRTogQ2xlYXIgTUNJUEAgbGFzdCBzdGVwIik7CiAgICAgICAgIG1jYV93cm1zcihNU1JfSUEz Ml9NQ0dfU1RBVFVTLCAwKTsKICAgICB9Ci0gICAgbWNlX2JhcnJpZXJfZXhpdCgmbWNlX3RyYXBf YmFyLCBmYWxzZSk7CisgICAgbWNlX2JhcnJpZXJfZXhpdCgmbWNlX3RyYXBfYmFyLCBsbWNlKTsK IAogICAgIHJhaXNlX3NvZnRpcnEoTUFDSElORV9DSEVDS19TT0ZUSVJRKTsKIH0KQEAgLTE1NjIs NyArMTU2NSw4IEBAIHN0YXRpYyB2b2lkIG1jX3BhbmljX2R1bXAodm9pZCkKIAogICAgIGRwcmlu dGsoWEVOTE9HX0VSUiwgIkJlZ2luIGR1bXAgbWNfaW5mb1xuIik7CiAgICAgZm9yX2VhY2hfb25s aW5lX2NwdShjcHUpCi0gICAgICAgIG1jdGVsZW1fcHJvY2Vzc19kZWZlcnJlZChjcHUsIHg4Nl9t Y2luZm9fZHVtcF9wYW5pYyk7CisgICAgICAgIG1jdGVsZW1fcHJvY2Vzc19kZWZlcnJlZChjcHUs IHg4Nl9tY2luZm9fZHVtcF9wYW5pYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IG1jdGVsZW1faGFzX2RlZmVycmVkX2xtY2UoY3B1KSk7CiAgICAgZHByaW50ayhYRU5MT0dfRVJS LCAiRW5kIGR1bXAgbWNfaW5mbywgJXggbWNpbmZvIGR1bXBlZFxuIiwgbWNpbmZvX2R1bXBwZWQp OwogfQogCkBAIC0xNzAwLDM4ICsxNzA0LDQyIEBAIHN0YXRpYyB2b2lkIG1jZV9zb2Z0aXJxKHZv aWQpCiAgICAgc3RhdGljIGF0b21pY190IHNldmVyaXR5X2NwdTsKICAgICBpbnQgY3B1ID0gc21w X3Byb2Nlc3Nvcl9pZCgpOwogICAgIHVuc2lnbmVkIGludCB3b3JrY3B1OworICAgIGJvb2wgbG1j ZSA9IG1jdGVsZW1faGFzX2RlZmVycmVkX2xtY2UoY3B1KTsKIAogICAgIG1jZV9wcmludGsoTUNF X1ZFUkJPU0UsICJDUFUlZCBlbnRlciBzb2Z0aXJxXG4iLCBjcHUpOwogCi0gICAgbWNlX2JhcnJp ZXJfZW50ZXIoJm1jZV9pbnNpZGVfYmFyLCBmYWxzZSk7CisgICAgbWNlX2JhcnJpZXJfZW50ZXIo Jm1jZV9pbnNpZGVfYmFyLCBsbWNlKTsKIAotICAgIC8qCi0gICAgICogRXZlcnlib2R5IGlzIGhl cmUuIE5vdyBsZXQncyBzZWUgd2hvIGdldHMgdG8gZG8gdGhlCi0gICAgICogcmVjb3Zlcnkgd29y ay4gUmlnaHQgbm93IHdlIGp1c3Qgc2VlIGlmIHRoZXJlJ3MgYSBDUFUKLSAgICAgKiB0aGF0IGRp ZCBub3QgaGF2ZSBhbnkgcHJvYmxlbXMsIGFuZCBwaWNrIHRoYXQgb25lLgotICAgICAqCi0gICAg ICogRmlyc3QsIGp1c3Qgc2V0IGEgZGVmYXVsdCB2YWx1ZTogdGhlIGxhc3QgQ1BVIHdobyByZWFj aGVzIHRoaXMKLSAgICAgKiB3aWxsIG92ZXJ3cml0ZSB0aGUgdmFsdWUgYW5kIGJlY29tZSB0aGUg ZGVmYXVsdC4KLSAgICAgKi8KLQotICAgIGF0b21pY19zZXQoJnNldmVyaXR5X2NwdSwgY3B1KTsK KyAgICBpZiAoIWxtY2UpIHsKKyAgICAgICAgLyoKKyAgICAgICAgICogRXZlcnlib2R5IGlzIGhl cmUuIE5vdyBsZXQncyBzZWUgd2hvIGdldHMgdG8gZG8gdGhlCisgICAgICAgICAqIHJlY292ZXJ5 IHdvcmsuIFJpZ2h0IG5vdyB3ZSBqdXN0IHNlZSBpZiB0aGVyZSdzIGEgQ1BVCisgICAgICAgICAq IHRoYXQgZGlkIG5vdCBoYXZlIGFueSBwcm9ibGVtcywgYW5kIHBpY2sgdGhhdCBvbmUuCisgICAg ICAgICAqCisgICAgICAgICAqIEZpcnN0LCBqdXN0IHNldCBhIGRlZmF1bHQgdmFsdWU6IHRoZSBs YXN0IENQVSB3aG8gcmVhY2hlcyB0aGlzCisgICAgICAgICAqIHdpbGwgb3ZlcndyaXRlIHRoZSB2 YWx1ZSBhbmQgYmVjb21lIHRoZSBkZWZhdWx0LgorICAgICAgICAgKi8KIAotICAgIG1jZV9iYXJy aWVyX2VudGVyKCZtY2Vfc2V2ZXJpdHlfYmFyLCBmYWxzZSk7Ci0gICAgaWYgKCFtY3RlbGVtX2hh c19kZWZlcnJlZChjcHUpKQogICAgICAgICBhdG9taWNfc2V0KCZzZXZlcml0eV9jcHUsIGNwdSk7 Ci0gICAgbWNlX2JhcnJpZXJfZXhpdCgmbWNlX3NldmVyaXR5X2JhciwgZmFsc2UpOwogCi0gICAg LyogV2UgY2hvb3NlIHNldmVyaXR5X2NwdSBmb3IgZnVydGhlciBwcm9jZXNzaW5nICovCi0gICAg aWYgKGF0b21pY19yZWFkKCZzZXZlcml0eV9jcHUpID09IGNwdSkgeworICAgICAgICBtY2VfYmFy cmllcl9lbnRlcigmbWNlX3NldmVyaXR5X2JhciwgZmFsc2UpOworICAgICAgICBpZiAoIW1jdGVs ZW1faGFzX2RlZmVycmVkKGNwdSkpCisgICAgICAgICAgICBhdG9taWNfc2V0KCZzZXZlcml0eV9j cHUsIGNwdSk7CisgICAgICAgIG1jZV9iYXJyaWVyX2V4aXQoJm1jZV9zZXZlcml0eV9iYXIsIGZh bHNlKTsKKyAgICB9CiAKKyAgICAvKiBXZSBjaG9vc2Ugc2V2ZXJpdHlfY3B1IGZvciBmdXJ0aGVy IHByb2Nlc3NpbmcgKi8KKyAgICBpZiAobG1jZSB8fCBhdG9taWNfcmVhZCgmc2V2ZXJpdHlfY3B1 KSA9PSBjcHUpIHsKICAgICAgICAgbWNlX3ByaW50ayhNQ0VfVkVSQk9TRSwgIkNQVSVkIGhhbmRs aW5nIGVycm9yc1xuIiwgY3B1KTsKIAogICAgICAgICAvKiBTdGVwMTogRmlsbCBET00wIExPRyBi dWZmZXIsIHZNQ0UgaW5qZWN0aW9uIGJ1ZmZlciBhbmQKICAgICAgICAgICogdk1DRSBNU1JzIHZp cnR1YWxpemF0aW9uIGJ1ZmZlcgogICAgICAgICAgKi8KLSAgICAgICAgZm9yX2VhY2hfb25saW5l X2NwdSh3b3JrY3B1KSB7Ci0gICAgICAgICAgICBtY3RlbGVtX3Byb2Nlc3NfZGVmZXJyZWQod29y a2NwdSwgbWNlX2RlbGF5ZWRfYWN0aW9uKTsKLSAgICAgICAgfQorICAgICAgICBpZiAobG1jZSkK KyAgICAgICAgICAgIG1jdGVsZW1fcHJvY2Vzc19kZWZlcnJlZChjcHUsIG1jZV9kZWxheWVkX2Fj dGlvbiwgdHJ1ZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGZvcl9lYWNoX29ubGluZV9j cHUod29ya2NwdSkKKyAgICAgICAgICAgICAgICBtY3RlbGVtX3Byb2Nlc3NfZGVmZXJyZWQod29y a2NwdSwgbWNlX2RlbGF5ZWRfYWN0aW9uLCBmYWxzZSk7CiAKICAgICAgICAgLyogU3RlcDI6IFNl bmQgTG9nIHRvIERPTTAgdGhyb3VnaCB2SVJRICovCiAgICAgICAgIGlmIChkb20wX3ZtY2VfZW5h YmxlZCgpKSB7CkBAIC0xNzQwLDcgKzE3NDgsNyBAQCBzdGF0aWMgdm9pZCBtY2Vfc29mdGlycSh2 b2lkKQogICAgICAgICB9CiAgICAgfQogCi0gICAgbWNlX2JhcnJpZXJfZXhpdCgmbWNlX2luc2lk ZV9iYXIsIGZhbHNlKTsKKyAgICBtY2VfYmFycmllcl9leGl0KCZtY2VfaW5zaWRlX2JhciwgbG1j ZSk7CiB9CiAKIC8qIE1hY2hpbmUgQ2hlY2sgb3duZXIganVkZ2UgYWxnb3JpdGhtOgpkaWZmIC0t Z2l0IGEveGVuL2FyY2gveDg2L2NwdS9tY2hlY2svbWNlLmggYi94ZW4vYXJjaC94ODYvY3B1L21j aGVjay9tY2UuaAppbmRleCAxMGU1Y2ViZjhiLi40ZjEzNzkxOTQ4IDEwMDY0NAotLS0gYS94ZW4v YXJjaC94ODYvY3B1L21jaGVjay9tY2UuaAorKysgYi94ZW4vYXJjaC94ODYvY3B1L21jaGVjay9t Y2UuaApAQCAtMTA5LDYgKzEwOSw3IEBAIHN0cnVjdCBtY2Ffc3VtbWFyeSB7CiAgICAgaW50ICAg ICAgICAgZWlwdjsgICAvKiBtZWFuaW5nZnVsIG9uICNNQyAqLwogICAgIGJvb2wgICAgICAgIHVj OyAgICAgLyogVUMgZmxhZyAqLwogICAgIGJvb2wgICAgICAgIHBjYzsgICAgLyogUENDIGZsYWcg Ki8KKyAgICBib29sICAgICAgICBsbWNlOyAgIC8qIExNQ0UgZmxhZyAoSW50ZWwgb25seSkgKi8K ICAgICBib29sICAgICAgICByZWNvdmVyYWJsZTsgLyogc29mdHdhcmUgZXJyb3IgcmVjb3ZlcmFi bGUgZmxhZyAqLwogfTsKIApkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2NwdS9tY2hlY2svbWN0 ZWxlbS5jIGIveGVuL2FyY2gveDg2L2NwdS9tY2hlY2svbWN0ZWxlbS5jCmluZGV4IDU3YWJlYWIz NTcuLjc2YmNhMzI3ODUgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9jcHUvbWNoZWNrL21jdGVs ZW0uYworKysgYi94ZW4vYXJjaC94ODYvY3B1L21jaGVjay9tY3RlbGVtLmMKQEAgLTEwOSw4ICsx MDksMjIgQEAgc3RydWN0IG1jX3RlbGVtX2NwdV9jdGwgewogCS8qCiAJICogUGVyLUNQVSBwcm9j ZXNzaW5nIGxpc3RzLCB1c2VkIGZvciBkZWZlcnJlZCAoc29mdGlycSkKIAkgKiBwcm9jZXNzaW5n IG9mIHRlbGVtZXRyeS4KKwkgKgorCSAqIFRoZSB0d28gcGVuZGluZyBsaXN0cyBAbG1jZV9wZW5k aW5nIGFuZCBAcGVuZGluZyBncm93IGF0CisJICogdGhlIGhlYWQgaW4gdGhlIHJldmVyc2UgY2hy b25vbG9naWNhbCBvcmRlci4KKwkgKgorCSAqIEBwZW5kaW5nIGFuZCBAbG1jZV9wZW5kaW5nIG9u IHRoZSBzYW1lIENQVSBhcmUgbXV0dWFsbHkKKwkgKiBleGNsdXNpdmUsIGkuZS4gZGVmZXJyZWQg TUNFIG9uIGEgQ1BVIGFyZSBlaXRoZXIgYWxsIGluCisJICogQGxtY2VfcGVuZGluZyBvciBhbGwg aW4gQHBlbmRpbmcuIEluIHRoZSBmb3JtZXIgY2FzZSwgYWxsCisJICogZGVmZXJyZWQgTUNFIGFy ZSBMTUNFLiBJbiB0aGUgbGF0dGVyIGNhc2UsIGJvdGggTE1DRSBhbmQKKwkgKiBub24tbG9jYWwg TUNFIGNhbiBiZSBpbiBAcGVuZGluZywgYW5kIEBwZW5kaW5nIGNvbnRhaW5zIGF0CisJICogbGVh c3Qgb25lIG5vbi1sb2NhbCBNQ0UgaWYgaXQncyBub3QgZW1wdHkuCisJICoKKwkgKiBDaGFuZ2Vz IHRvIEBwZW5kaW5nIGFuZCBAbG1jZV9wZW5kaW5nIHNob3VsZCBiZSBwZXJmb3JtZWQKKwkgKiB2 aWEgbWN0ZWxlbV9wcm9jZXNzX2RlZmVycmVkKCkgYW5kIG1jdGVsZW1fZGVmZXIoKSwgaW4gb3Jk ZXIKKwkgKiB0byBndWFyYW50ZWUgdGhlIGFib3ZlIG11dHVhbCBleGNsdXNpdml0eS4KIAkgKi8K LQlzdHJ1Y3QgbWN0ZWxlbV9lbnQgKnBlbmRpbmc7CisJc3RydWN0IG1jdGVsZW1fZW50ICpwZW5k aW5nLCAqbG1jZV9wZW5kaW5nOwogCXN0cnVjdCBtY3RlbGVtX2VudCAqcHJvY2Vzc2luZzsKIH07 CiBzdGF0aWMgREVGSU5FX1BFUl9DUFUoc3RydWN0IG1jX3RlbGVtX2NwdV9jdGwsIG1jdGN0bCk7 CkBAIC0xMzEsMjYgKzE0NSw4OCBAQCBzdGF0aWMgdm9pZCBtY3RlbGVtX3hjaGdfaGVhZChzdHJ1 Y3QgbWN0ZWxlbV9lbnQgKipoZWFkcCwKIAl9CiB9CiAKLQotdm9pZCBtY3RlbGVtX2RlZmVyKG1j dGVsZW1fY29va2llX3QgY29va2llKQorLyoqCisgKiBBcHBlbmQgYSB0ZWxlbWV0cnkgb2YgZGVm ZXJyZWQgTUNFIHRvIGEgcGVyLWNwdSBwZW5kaW5nIGxpc3QsCisgKiBlaXRoZXIgQHBlbmRpbmcg b3IgQGxtY2VfcGVuZGluZywgYWNjb3JkaW5nIHRvIHJ1bGVzIGJlbG93OgorICogIC0gaWYgQHBl bmRpbmcgaXMgbm90IGVtcHR5LCB0aGVuIHRoZSBuZXcgdGVsZW1ldHJ5IHdpbGwgYmUKKyAqICAg IGFwcGVuZGVkIHRvIEBwZW5kaW5nOworICogIC0gaWYgQHBlbmRpbmcgaXMgZW1wdHkgYW5kIHRo ZSBuZXcgdGVsZW1ldHJ5IGlzIGZvciBhIGRlZmVycmVkCisgKiAgICBMTUNFLCB0aGVuIHRoZSBu ZXcgdGVsZW1ldHJ5IHdpbGwgYmUgYXBwZW5kZWQgdG8gQGxtY2VfcGVuZGluZzsKKyAqICAtIGlm IEBwZW5kaW5nIGlzIGVtcHR5IGFuZCB0aGUgbmV3IHRlbGVtZXRyeSBpcyBmb3IgYSBkZWZlcnJl ZAorICogICAgbm9uLWxvY2FsIE1DRSwgYWxsIGV4aXN0aW5nIHRlbGVtZXRyaWVzIGluIEBsbWNl X3BlbmRpbmcgd2lsbCBiZQorICogICAgbW92ZWQgdG8gQHBlbmRpbmcgYW5kIHRoZW4gdGhlIG5l dyB0ZWxlbWV0cnkgd2lsbCBiZSBhcHBlbmRlZCB0bworICogICAgQHBlbmRpbmcuCisgKgorICog VGhpcyBmdW5jdGlvbiBtdXN0IGJlIGNhbGxlZCB3aXRoIE1DSVAgYml0IHNldCwgc28gdGhhdCBp dCBkb2VzIG5vdAorICogbmVlZCB0byB3b3JyeSBhYm91dCBNQyMgcmUtb2NjdXJyaW5nIGluIHRo aXMgZnVuY3Rpb24uCisgKgorICogQXMgYSByZXN1bHQsIHRoaXMgZnVuY3Rpb24gY2FuIHByZXNl cnZlIHRoZSBtdXR1YWwgZXhjbHVzaXZpdHkKKyAqIGJldHdlZW4gQHBlbmRpbmcgYW5kIEBsbWNl X3BlbmRpbmcgKHNlZSB0aGVpciBjb21tZW50cyBpbiBzdHJ1Y3QKKyAqIG1jX3RlbGVtX2NwdV9j dGwpLgorICoKKyAqIFBhcmFtZXRlcnM6CisgKiAgQGNvb2tpZTogdGVsZW1ldHJ5IG9mIHRoZSBk ZWZlcnJlZCBNQ0UKKyAqICBAbG1jZTogICBpbmRpY2F0ZSB3aGV0aGVyIHRoZSB0ZWxlbWV0cnkg aXMgZm9yIExNQ0UKKyAqLwordm9pZCBtY3RlbGVtX2RlZmVyKG1jdGVsZW1fY29va2llX3QgY29v a2llLCBib29sIGxtY2UpCiB7CiAJc3RydWN0IG1jdGVsZW1fZW50ICp0ZXAgPSBDT09LSUUyTUNU RShjb29raWUpOwotCi0JbWN0ZWxlbV94Y2hnX2hlYWQoJnRoaXNfY3B1KG1jdGN0bC5wZW5kaW5n KSwgJnRlcC0+bWN0ZV9uZXh0LCB0ZXApOworCXN0cnVjdCBtY190ZWxlbV9jcHVfY3RsICptY3Rj dGwgPSAmdGhpc19jcHUobWN0Y3RsKTsKKworCUFTU0VSVChtY3RjdGwtPnBlbmRpbmcgPT0gTlVM TCB8fCBtY3RjdGwtPmxtY2VfcGVuZGluZyA9PSBOVUxMKTsKKworCWlmIChtY3RjdGwtPnBlbmRp bmcpCisJCW1jdGVsZW1feGNoZ19oZWFkKCZtY3RjdGwtPnBlbmRpbmcsICZ0ZXAtPm1jdGVfbmV4 dCwgdGVwKTsKKwllbHNlIGlmIChsbWNlKQorCQltY3RlbGVtX3hjaGdfaGVhZCgmbWN0Y3RsLT5s bWNlX3BlbmRpbmcsICZ0ZXAtPm1jdGVfbmV4dCwgdGVwKTsKKwllbHNlIHsKKwkJaWYgKG1jdGN0 bC0+bG1jZV9wZW5kaW5nKQorCQkJbWN0ZWxlbV94Y2hnX2hlYWQoJm1jdGN0bC0+bG1jZV9wZW5k aW5nLAorCQkJCQkgICZtY3RjdGwtPnBlbmRpbmcsIE5VTEwpOworCQltY3RlbGVtX3hjaGdfaGVh ZCgmbWN0Y3RsLT5wZW5kaW5nLCAmdGVwLT5tY3RlX25leHQsIHRlcCk7CisJfQogfQogCisvKioK KyAqIE1vdmUgdGVsZW1ldHJpZXMgb2YgZGVmZXJyZWQgTUNFIGZyb20gdGhlIHBlci1jcHUgcGVu ZGluZyBsaXN0IG9uCisgKiB0aGlzIG9yIGFub3RoZXIgQ1BVIHRvIHRoZSBwZXItY3B1IHByb2Nl c3NpbmcgbGlzdCBvbiB0aGlzIENQVSwgYW5kCisgKiB0aGVuIHByb2Nlc3MgYWxsIGRlZmVycmVk IE1DRSBvbiB0aGUgcHJvY2Vzc2luZyBsaXN0LgorICoKKyAqIFRoaXMgZnVuY3Rpb24gY2FuIGJl IGNhbGxlZCB3aXRoIE1DSVAgYml0IHNldCAoZS5nLiBmcm9tIE1DIworICogaGFuZGxlcikgb3Ig Y2xlYXJlZCAoZnJvbSBNQ0Ugc29mdGlycSBoYW5kbGVyKS4gSW4gdGhlIGxhdHRlciBjYXNlLAor ICogTUMjIG1heSByZS1vY2N1ciBpbiB0aGlzIGZ1bmN0aW9uLgorICoKKyAqIFBhcmFtZXRlcnM6 CisgKiAgQGNwdTogIGluZGljYXRlIHRoZSBDUFUgd2hlcmUgdGhlIHBlbmRpbmcgbGlzdCBpcwor ICogIEBmbjogICB0aGUgZnVuY3Rpb24gdG8gaGFuZGxlIHRoZSBkZWZlcnJlZCBNQ0UKKyAqICBA bG1jZTogaW5kaWNhdGUgd2hpY2ggcGVuZGluZyBsaXN0IG9uIEBjcHUgaXMgaGFuZGxlZAorICov CiB2b2lkIG1jdGVsZW1fcHJvY2Vzc19kZWZlcnJlZCh1bnNpZ25lZCBpbnQgY3B1LAotCQkJICAg ICAgaW50ICgqZm4pKG1jdGVsZW1fY29va2llX3QpKQorCQkJICAgICAgaW50ICgqZm4pKG1jdGVs ZW1fY29va2llX3QpLAorCQkJICAgICAgYm9vbCBsbWNlKQogewogCXN0cnVjdCBtY3RlbGVtX2Vu dCAqdGVwOwogCXN0cnVjdCBtY3RlbGVtX2VudCAqaGVhZCwgKnByZXY7CisJc3RydWN0IG1jX3Rl bGVtX2NwdV9jdGwgKm1jdGN0bCA9ICZwZXJfY3B1KG1jdGN0bCwgY3B1KTsKIAlpbnQgcmV0Owog CiAJLyoKIAkgKiBGaXJzdCwgdW5ob29rIHRoZSBsaXN0IG9mIHRlbGVtZXRyeSBzdHJ1Y3R1cmVz LCBhbmQJCiAJICogaG9vayBpdCB1cCB0byB0aGUgcHJvY2Vzc2luZyBsaXN0IGhlYWQgZm9yIHRo aXMgQ1BVLgorCSAqCisJICogSWYgQGxtY2UgaXMgdHJ1ZSBhbmQgYSBub24tbG9jYWwgTUMjIG9j Y3VycyBiZWZvcmUgdGhlCisJICogZm9sbG93aW5nIGF0b21pYyBleGNoYW5nZSwgQGxtY2Ugd2ls bCBub3QgaG9sZCBhZnRlcgorCSAqIHJlc3VtcHRpb24sIGJlY2F1c2UgYWxsIHRlbGVtZXRyaWVz IGluIEBsbWNlX3BlbmRpbmcgb24KKwkgKiBAY3B1IGFyZSBtb3ZlZCB0byBAcGVuZGluZyBvbiBA Y3B1IGluIG1jaGVja19jbW5faGFuZGxlcigpLgorCSAqIEluIHN1Y2ggYSBjYXNlLCBubyB0ZWxl bWV0cmllcyB3aWxsIGJlIGhhbmRsZWQgaW4gdGhpcworCSAqIGZ1bmN0aW9uIGFmdGVyIHJlc3Vt cHRpb24uIEFub3RoZXIgcm91bmQgb2YgTUNFIHNvZnRpcnEsCisJICogd2hpY2ggd2FzIHJhaXNl ZCBieSBhYm92ZSBtY2hlY2tfY21uX2hhbmRsZXIoKSwgd2lsbCBoYW5kbGUKKwkgKiB0aG9zZSBt b3ZlZCB0ZWxlbWV0cmllcyBpbiBAcGVuZGluZyBvbiBAY3B1LgorCSAqCisJICogSWYgYW5vdGhl ciBNQyMgb2NjdXJzIGFmdGVyIHRoZSBmb2xsb3dpbmcgYXRvbWljIGV4Y2hhbmdlLAorCSAqIGl0 IHdpbGwgYmUgaGFuZGxlZCBieSBhbm90aGVyIHJvdW5kIG9mIE1DRSBzb2Z0aXJxLgogCSAqLwot CW1jdGVsZW1feGNoZ19oZWFkKCZwZXJfY3B1KG1jdGN0bC5wZW5kaW5nLCBjcHUpLAorCW1jdGVs ZW1feGNoZ19oZWFkKGxtY2UgPyAmbWN0Y3RsLT5sbWNlX3BlbmRpbmcgOiAmbWN0Y3RsLT5wZW5k aW5nLAogCQkJICAmdGhpc19jcHUobWN0Y3RsLnByb2Nlc3NpbmcpLCBOVUxMKTsKIAogCWhlYWQg PSB0aGlzX2NwdShtY3RjdGwucHJvY2Vzc2luZyk7CkBAIC0xOTQsNiArMjcwLDExIEBAIGJvb2wg bWN0ZWxlbV9oYXNfZGVmZXJyZWQodW5zaWduZWQgaW50IGNwdSkKIAlyZXR1cm4gZmFsc2U7CiB9 CiAKK2Jvb2wgbWN0ZWxlbV9oYXNfZGVmZXJyZWRfbG1jZSh1bnNpZ25lZCBpbnQgY3B1KQorewor CXJldHVybiBwZXJfY3B1KG1jdGN0bC5sbWNlX3BlbmRpbmcsIGNwdSkgIT0gTlVMTDsKK30KKwog LyogRnJlZSBhbiBlbnRyeSB0byBpdHMgbmF0aXZlIGZyZWUgbGlzdDsgdGhlIGVudHJ5IG11c3Qg bm90IGJlIGxpbmtlZCBvbgogICogYW55IGxpc3QuCiAgKi8KZGlmZiAtLWdpdCBhL3hlbi9hcmNo L3g4Ni9jcHUvbWNoZWNrL21jdGVsZW0uaCBiL3hlbi9hcmNoL3g4Ni9jcHUvbWNoZWNrL21jdGVs ZW0uaAppbmRleCA5ZmNkZTRmNmI4Li5kNGViYTUzYWUwIDEwMDY0NAotLS0gYS94ZW4vYXJjaC94 ODYvY3B1L21jaGVjay9tY3RlbGVtLmgKKysrIGIveGVuL2FyY2gveDg2L2NwdS9tY2hlY2svbWN0 ZWxlbS5oCkBAIC02Nyw5ICs2NywxMCBAQCBleHRlcm4gdm9pZCBtY3RlbGVtX2Rpc21pc3MobWN0 ZWxlbV9jb29raWVfdCk7CiBleHRlcm4gbWN0ZWxlbV9jb29raWVfdCBtY3RlbGVtX2NvbnN1bWVf b2xkZXN0X2JlZ2luKG1jdGVsZW1fY2xhc3NfdCk7CiBleHRlcm4gdm9pZCBtY3RlbGVtX2NvbnN1 bWVfb2xkZXN0X2VuZChtY3RlbGVtX2Nvb2tpZV90KTsKIGV4dGVybiB2b2lkIG1jdGVsZW1fYWNr KG1jdGVsZW1fY2xhc3NfdCwgbWN0ZWxlbV9jb29raWVfdCk7Ci1leHRlcm4gdm9pZCBtY3RlbGVt X2RlZmVyKG1jdGVsZW1fY29va2llX3QpOworZXh0ZXJuIHZvaWQgbWN0ZWxlbV9kZWZlcihtY3Rl bGVtX2Nvb2tpZV90LCBib29sIGxtY2UpOwogZXh0ZXJuIHZvaWQgbWN0ZWxlbV9wcm9jZXNzX2Rl ZmVycmVkKHVuc2lnbmVkIGludCwKLSAgICBpbnQgKCopKG1jdGVsZW1fY29va2llX3QpKTsKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKCopKG1jdGVsZW1fY29va2ll X3QpLCBib29sIGxtY2UpOwogYm9vbCBtY3RlbGVtX2hhc19kZWZlcnJlZCh1bnNpZ25lZCBpbnQp OworYm9vbCBtY3RlbGVtX2hhc19kZWZlcnJlZF9sbWNlKHVuc2lnbmVkIGludCBjcHUpOwogCiAj ZW5kaWYKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9jcHUvbWNoZWNrL3g4Nl9tY2EuaCBiL3hl bi9hcmNoL3g4Ni9jcHUvbWNoZWNrL3g4Nl9tY2EuaAppbmRleCAzNGQxOTIxY2UxLi5kZTAzZjgy OWMzIDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvY3B1L21jaGVjay94ODZfbWNhLmgKKysrIGIv eGVuL2FyY2gveDg2L2NwdS9tY2hlY2sveDg2X21jYS5oCkBAIC00Miw3ICs0Miw5IEBACiAjZGVm aW5lIE1DR19TVEFUVVNfUklQViAgICAgICAgIDB4MDAwMDAwMDAwMDAwMDAwMVVMTAogI2RlZmlu ZSBNQ0dfU1RBVFVTX0VJUFYgICAgICAgICAweDAwMDAwMDAwMDAwMDAwMDJVTEwKICNkZWZpbmUg TUNHX1NUQVRVU19NQ0lQICAgICAgICAgMHgwMDAwMDAwMDAwMDAwMDA0VUxMCi0vKiBCaXRzIDMt NjMgYXJlIHJlc2VydmVkICovCisjZGVmaW5lIE1DR19TVEFUVVNfTE1DRSAgICAgICAgIDB4MDAw MDAwMDAwMDAwMDAwOFVMTCAgLyogSW50ZWwgc3BlY2lmaWMgKi8KKy8qIEJpdHMgMy02MyBhcmUg cmVzZXJ2ZWQgb24gQ1BVIG5vdCBzdXBwb3J0aW5nIExNQ0UgKi8KKy8qIEJpdHMgNC02MyBhcmUg cmVzZXJ2ZWQgb24gQ1BVIHN1cHBvcnRpbmcgTE1DRSAqLwogCiAvKiBCaXRmaWVsZCBvZiBNU1Jf SzhfTUNpX1NUQVRVUyByZWdpc3RlcnMgKi8KIC8qIE1DQSBlcnJvciBjb2RlICovCi0tIAoyLjEx LjAKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4t ZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHBzOi8vbGlzdHMu eGVuLm9yZy94ZW4tZGV2ZWwK