From mboxrd@z Thu Jan 1 00:00:00 1970 From: Wei Liu Subject: [PATCH v2 14/62] x86: Common cpuid faulting support Date: Fri, 12 Jan 2018 11:28:22 +0000 Message-ID: <20180112112910.16762-15-wei.liu2@citrix.com> References: <20180112112910.16762-1-wei.liu2@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1eZxyj-00031x-Cw for xen-devel@lists.xenproject.org; Fri, 12 Jan 2018 11:58:33 +0000 In-Reply-To: <20180112112910.16762-1-wei.liu2@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: Xen-devel Cc: wei.liu2@citrix.com List-Id: xen-devel@lists.xenproject.org RnJvbTogQW5kcmV3IENvb3BlciA8YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNvbT4KCldpdGggQ1BV SUQgRmF1bHRpbmcgb2ZmZXJlZCB0byBTVk0gZ3Vlc3RzLCBtb3ZlIFhlbidzIGZhdWx0aW5nIGNv ZGUgdG8gYmVpbmcKY29tbW9uIHJhdGhlciB0aGFuIEludGVsIHNwZWNpZmljLgoKVGhpcyBpcyBu ZWNlc3NhcnkgZm9yIG5lc3RlZCBYZW4gKGluYy4gcHYtc2hpbSBtb2RlKSB0byBwcmV2ZW50IFBW IGd1ZXN0cyBmcm9tCmZpbmRpbmcgdGhlIG91dGVyIEhWTSBYZW4gbGVhdmVzIHZpYSBuYXRpdmUg Y3B1aWQuCgpTaWduZWQtb2ZmLWJ5OiBBbmRyZXcgQ29vcGVyIDxhbmRyZXcuY29vcGVyM0BjaXRy aXguY29tPgotLS0KIHhlbi9hcmNoL3g4Ni9jcHUvYW1kLmMgICAgICAgICAgfCAxNiArKysrKy0t LQogeGVuL2FyY2gveDg2L2NwdS9jb21tb24uYyAgICAgICB8IDc2ICsrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKy0tCiB4ZW4vYXJjaC94ODYvY3B1L2ludGVsLmMgICAgICAgIHwg ODEgKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIHhlbi9pbmNsdWRl L2FzbS14ODYvY3B1aWQuaCAgICAgfCAgMyAtLQogeGVuL2luY2x1ZGUvYXNtLXg4Ni9wcm9jZXNz b3IuaCB8ICA0ICstCiA1IGZpbGVzIGNoYW5nZWQsIDk4IGluc2VydGlvbnMoKyksIDgyIGRlbGV0 aW9ucygtKQoKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9jcHUvYW1kLmMgYi94ZW4vYXJjaC94 ODYvY3B1L2FtZC5jCmluZGV4IDVmMzZhYzc1YTcuLjJiZmYzZWUzNzcgMTAwNjQ0Ci0tLSBhL3hl bi9hcmNoL3g4Ni9jcHUvYW1kLmMKKysrIGIveGVuL2FyY2gveDg2L2NwdS9hbWQuYwpAQCAtMTk4 LDExICsxOTgsMTIgQEAgc3RhdGljIHZvaWQgX19pbml0IG5vaW5saW5lIHByb2JlX21hc2tpbmdf bXNycyh2b2lkKQogfQogCiAvKgotICogQ29udGV4dCBzd2l0Y2ggbGV2ZWxsaW5nIHN0YXRlIHRv IHRoZSBuZXh0IGRvbWFpbi4gIEEgcGFyYW1ldGVyIG9mIE5VTEwgaXMKLSAqIHVzZWQgdG8gY29u dGV4dCBzd2l0Y2ggdG8gdGhlIGRlZmF1bHQgaG9zdCBzdGF0ZSAoYnkgdGhlIGNwdSBicmluZ3Vw LWNvZGUsCi0gKiBjcmFzaCBwYXRoLCBldGMpLgorICogQ29udGV4dCBzd2l0Y2ggQ1BVSUQgbWFz a2luZyBzdGF0ZSB0byB0aGUgbmV4dCBkb21haW4uICBPbmx5IGNhbGxlZCBpZgorICogQ1BVSUQg RmF1bHRpbmcgaXNuJ3QgYXZhaWxhYmxlLCBidXQgbWFza2luZyBNU1JzIGhhdmUgYmVlbiBkZXRl Y3RlZC4gIEEKKyAqIHBhcmFtZXRlciBvZiBOVUxMIGlzIHVzZWQgdG8gY29udGV4dCBzd2l0Y2gg dG8gdGhlIGRlZmF1bHQgaG9zdCBzdGF0ZSAoYnkKKyAqIHRoZSBjcHUgYnJpbmd1cC1jb2RlLCBj cmFzaCBwYXRoLCBldGMpLgogICovCi1zdGF0aWMgdm9pZCBhbWRfY3R4dF9zd2l0Y2hfbGV2ZWxs aW5nKGNvbnN0IHN0cnVjdCB2Y3B1ICpuZXh0KQorc3RhdGljIHZvaWQgYW1kX2N0eHRfc3dpdGNo X21hc2tpbmcoY29uc3Qgc3RydWN0IHZjcHUgKm5leHQpCiB7CiAJc3RydWN0IGNwdWlkbWFza3Mg KnRoZXNlX21hc2tzID0gJnRoaXNfY3B1KGNwdWlkbWFza3MpOwogCWNvbnN0IHN0cnVjdCBkb21h aW4gKm5leHRkID0gbmV4dCA/IG5leHQtPmRvbWFpbiA6IE5VTEw7CkBAIC0yNjMsNiArMjY0LDkg QEAgc3RhdGljIHZvaWQgX19pbml0IG5vaW5saW5lIGFtZF9pbml0X2xldmVsbGluZyh2b2lkKQog ewogCWNvbnN0IHN0cnVjdCBjcHVpZG1hc2sgKm0gPSBOVUxMOwogCisJaWYgKHByb2JlX2NwdWlk X2ZhdWx0aW5nKCkpCisJCXJldHVybjsKKwogCXByb2JlX21hc2tpbmdfbXNycygpOwogCiAJaWYg KCpvcHRfZmFtcmV2ICE9ICdcMCcpIHsKQEAgLTM1Miw3ICszNTYsNyBAQCBzdGF0aWMgdm9pZCBf X2luaXQgbm9pbmxpbmUgYW1kX2luaXRfbGV2ZWxsaW5nKHZvaWQpCiAJfQogCiAJaWYgKGxldmVs bGluZ19jYXBzKQotCQljdHh0X3N3aXRjaF9sZXZlbGxpbmcgPSBhbWRfY3R4dF9zd2l0Y2hfbGV2 ZWxsaW5nOworCQljdHh0X3N3aXRjaF9tYXNraW5nID0gYW1kX2N0eHRfc3dpdGNoX21hc2tpbmc7 CiB9CiAKIC8qCkBAIC01MTgsNyArNTIyLDcgQEAgc3RhdGljIHZvaWQgZWFybHlfaW5pdF9hbWQo c3RydWN0IGNwdWluZm9feDg2ICpjKQogCWlmIChjID09ICZib290X2NwdV9kYXRhKQogCQlhbWRf aW5pdF9sZXZlbGxpbmcoKTsKIAotCWFtZF9jdHh0X3N3aXRjaF9sZXZlbGxpbmcoTlVMTCk7CisJ Y3R4dF9zd2l0Y2hfbGV2ZWxsaW5nKE5VTEwpOwogfQogCiBzdGF0aWMgdm9pZCBpbml0X2FtZChz dHJ1Y3QgY3B1aW5mb194ODYgKmMpCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvY3B1L2NvbW1v bi5jIGIveGVuL2FyY2gveDg2L2NwdS9jb21tb24uYwppbmRleCAwNmUwZWFiMTMyLi4xZmYxMjE4 ODdjIDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvY3B1L2NvbW1vbi5jCisrKyBiL3hlbi9hcmNo L3g4Ni9jcHUvY29tbW9uLmMKQEAgLTExMywxMiArMTEzLDgwIEBAIHN0YXRpYyBjb25zdCBzdHJ1 Y3QgY3B1X2RldiBkZWZhdWx0X2NwdSA9IHsKIH07CiBzdGF0aWMgY29uc3Qgc3RydWN0IGNwdV9k ZXYgKnRoaXNfY3B1ID0gJmRlZmF1bHRfY3B1OwogCi1zdGF0aWMgdm9pZCBkZWZhdWx0X2N0eHRf c3dpdGNoX2xldmVsbGluZyhjb25zdCBzdHJ1Y3QgdmNwdSAqbmV4dCkKK3N0YXRpYyBERUZJTkVf UEVSX0NQVSh1aW50NjRfdCwgbXNyX21pc2NfZmVhdHVyZXMpOwordm9pZCAoKiBfX3JlYWRfbW9z dGx5IGN0eHRfc3dpdGNoX21hc2tpbmcpKGNvbnN0IHN0cnVjdCB2Y3B1ICpuZXh0KTsKKworYm9v bCBfX2luaXQgcHJvYmVfY3B1aWRfZmF1bHRpbmcodm9pZCkKK3sKKwl1aW50NjRfdCB2YWw7CisK KwlpZiAocmRtc3Jfc2FmZShNU1JfSU5URUxfUExBVEZPUk1fSU5GTywgdmFsKSB8fAorCSAgICAh KHZhbCAmIE1TUl9QTEFURk9STV9JTkZPX0NQVUlEX0ZBVUxUSU5HKSB8fAorCSAgICByZG1zcl9z YWZlKE1TUl9JTlRFTF9NSVNDX0ZFQVRVUkVTX0VOQUJMRVMsCisJCSAgICAgICB0aGlzX2NwdSht c3JfbWlzY19mZWF0dXJlcykpKQorCXsKKwkJc2V0dXBfY2xlYXJfY3B1X2NhcChYODZfRkVBVFVS RV9DUFVJRF9GQVVMVElORyk7CisJCXJldHVybiBmYWxzZTsKKwl9CisKKwlleHBlY3RlZF9sZXZl bGxpbmdfY2FwIHw9IExDQVBfZmF1bHRpbmc7CisJbGV2ZWxsaW5nX2NhcHMgfD0gIExDQVBfZmF1 bHRpbmc7CisJc2V0dXBfZm9yY2VfY3B1X2NhcChYODZfRkVBVFVSRV9DUFVJRF9GQVVMVElORyk7 CisKKwlyZXR1cm4gdHJ1ZTsKK30KKworc3RhdGljIHZvaWQgc2V0X2NwdWlkX2ZhdWx0aW5nKGJv b2wgZW5hYmxlKQoreworCXVpbnQ2NF90ICp0aGlzX21pc2NfZmVhdHVyZXMgPSAmdGhpc19jcHUo bXNyX21pc2NfZmVhdHVyZXMpOworCXVpbnQ2NF90IHZhbCA9ICp0aGlzX21pc2NfZmVhdHVyZXM7 CisKKwlpZiAoISEodmFsICYgTVNSX01JU0NfRkVBVFVSRVNfQ1BVSURfRkFVTFRJTkcpID09IGVu YWJsZSkKKwkJcmV0dXJuOworCisJdmFsIF49IE1TUl9NSVNDX0ZFQVRVUkVTX0NQVUlEX0ZBVUxU SU5HOworCisJd3Jtc3JsKE1TUl9JTlRFTF9NSVNDX0ZFQVRVUkVTX0VOQUJMRVMsIHZhbCk7CisJ KnRoaXNfbWlzY19mZWF0dXJlcyA9IHZhbDsKK30KKwordm9pZCBjdHh0X3N3aXRjaF9sZXZlbGxp bmcoY29uc3Qgc3RydWN0IHZjcHUgKm5leHQpCiB7Ci0JLyogTm9wICovCisJY29uc3Qgc3RydWN0 IGRvbWFpbiAqbmV4dGQgPSBuZXh0ID8gbmV4dC0+ZG9tYWluIDogTlVMTDsKKworCWlmIChjcHVf aGFzX2NwdWlkX2ZhdWx0aW5nKSB7CisJCS8qCisJCSAqIE5vIG5lZWQgdG8gYWx0ZXIgdGhlIGZh dWx0aW5nIHNldHRpbmcgaWYgd2UgYXJlIHN3aXRjaGluZworCQkgKiB0byBpZGxlOyBpdCB3b24n dCBhZmZlY3QgYW55IGNvZGUgcnVubmluZyBpbiBpZGxlIGNvbnRleHQuCisJCSAqLworCQlpZiAo bmV4dGQgJiYgaXNfaWRsZV9kb21haW4obmV4dGQpKQorCQkJcmV0dXJuOworCQkvKgorCQkgKiBX ZSAqc2hvdWxkKiBiZSBlbmFibGluZyBmYXVsdGluZyBmb3IgdGhlIGNvbnRyb2wgZG9tYWluLgor CQkgKgorCQkgKiBVbmZvcnR1bmF0ZWx5LCB0aGUgZG9tYWluIGJ1aWxkZXIgKGhhdmluZyBvbmx5 IGV2ZXIgYmVlbiBhCisJCSAqIFBWIGd1ZXN0KSBleHBlY3RzIHRvIGJlIGFibGUgdG8gc2VlIGhv c3QgY3B1aWQgc3RhdGUgaW4gYQorCQkgKiBuYXRpdmUgQ1BVSUQgaW5zdHJ1Y3Rpb24sIHRvIGNv cnJlY3RseSBidWlsZCBhIENQVUlEIHBvbGljeQorCQkgKiBmb3IgSFZNIGd1ZXN0cyAobm90YWJs eSB0aGUgeHN0YXRlIGxlYXZlcykuCisJCSAqCisJCSAqIFRoaXMgbG9naWMgaXMgZnVuZGltZW50 YWxseSBicm9rZW4gZm9yIEhWTSB0b29sc3RhY2sKKwkJICogZG9tYWlucywgYW5kIGZhdWx0aW5n IGNhdXNlcyBQViBndWVzdHMgdG8gYmVoYXZlIGxpa2UgSFZNCisJCSAqIGd1ZXN0cyBmcm9tIHRo ZWlyIHBvaW50IG9mIHZpZXcuCisJCSAqCisJCSAqIEZ1dHVyZSBkZXZlbG9wbWVudCBwbGFucyB3 aWxsIG1vdmUgcmVzcG9uc2liaWxpdHkgZm9yCisJCSAqIGdlbmVyYXRpbmcgdGhlIG1heGltdW0g ZnVsbCBjcHVpZCBwb2xpY3kgaW50byBYZW4sIGF0IHdoaWNoCisJCSAqIHRoaXMgcHJvYmxlbSB3 aWxsIGRpc2FwcGVhci4KKwkJICovCisJCXNldF9jcHVpZF9mYXVsdGluZyhuZXh0ZCAmJiAhaXNf Y29udHJvbF9kb21haW4obmV4dGQpICYmCisJCQkJICAgKGlzX3B2X2RvbWFpbihuZXh0ZCkgfHwK KwkJCQkgICAgbmV4dC0+YXJjaC5tc3ItPgorCQkJCSAgICBtaXNjX2ZlYXR1cmVzX2VuYWJsZXMu Y3B1aWRfZmF1bHRpbmcpKTsKKwkJcmV0dXJuOworCX0KKworCWlmIChjdHh0X3N3aXRjaF9tYXNr aW5nKQorCQljdHh0X3N3aXRjaF9tYXNraW5nKG5leHQpOwogfQotdm9pZCAoKiBfX3JlYWRfbW9z dGx5IGN0eHRfc3dpdGNoX2xldmVsbGluZykoY29uc3Qgc3RydWN0IHZjcHUgKm5leHQpID0KLQlk ZWZhdWx0X2N0eHRfc3dpdGNoX2xldmVsbGluZzsKIAogYm9vbF90IG9wdF9jcHVfaW5mbzsKIGJv b2xlYW5fcGFyYW0oImNwdWluZm8iLCBvcHRfY3B1X2luZm8pOwpkaWZmIC0tZ2l0IGEveGVuL2Fy Y2gveDg2L2NwdS9pbnRlbC5jIGIveGVuL2FyY2gveDg2L2NwdS9pbnRlbC5jCmluZGV4IDgzMTE5 NTJmMWYuLjA4ODhmNzYxNjEgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9jcHUvaW50ZWwuYwor KysgYi94ZW4vYXJjaC94ODYvY3B1L2ludGVsLmMKQEAgLTE1LDQwICsxNSw2IEBACiAKICNpbmNs dWRlICJjcHUuaCIKIAotc3RhdGljIGJvb2wgX19pbml0IHByb2JlX2ludGVsX2NwdWlkX2ZhdWx0 aW5nKHZvaWQpCi17Ci0JdWludDY0X3QgeDsKLQotCWlmIChyZG1zcl9zYWZlKE1TUl9JTlRFTF9Q TEFURk9STV9JTkZPLCB4KSB8fAotCSAgICAhKHggJiBNU1JfUExBVEZPUk1fSU5GT19DUFVJRF9G QVVMVElORykpCi0JCXJldHVybiAwOwotCi0JZXhwZWN0ZWRfbGV2ZWxsaW5nX2NhcCB8PSBMQ0FQ X2ZhdWx0aW5nOwotCWxldmVsbGluZ19jYXBzIHw9ICBMQ0FQX2ZhdWx0aW5nOwotCXNldHVwX2Zv cmNlX2NwdV9jYXAoWDg2X0ZFQVRVUkVfQ1BVSURfRkFVTFRJTkcpOwotCXJldHVybiAxOwotfQot Ci1ERUZJTkVfUEVSX0NQVShib29sLCBjcHVpZF9mYXVsdGluZ19lbmFibGVkKTsKLQotc3RhdGlj IHZvaWQgc2V0X2NwdWlkX2ZhdWx0aW5nKGJvb2wgZW5hYmxlKQotewotCWJvb2wgKnRoaXNfZW5h YmxlZCA9ICZ0aGlzX2NwdShjcHVpZF9mYXVsdGluZ19lbmFibGVkKTsKLQl1aW50MzJfdCBoaSwg bG87Ci0KLQlBU1NFUlQoY3B1X2hhc19jcHVpZF9mYXVsdGluZyk7Ci0KLQlpZiAoKnRoaXNfZW5h YmxlZCA9PSBlbmFibGUpCi0JCXJldHVybjsKLQotCXJkbXNyKE1TUl9JTlRFTF9NSVNDX0ZFQVRV UkVTX0VOQUJMRVMsIGxvLCBoaSk7Ci0JbG8gJj0gfk1TUl9NSVNDX0ZFQVRVUkVTX0NQVUlEX0ZB VUxUSU5HOwotCWlmIChlbmFibGUpCi0JCWxvIHw9IE1TUl9NSVNDX0ZFQVRVUkVTX0NQVUlEX0ZB VUxUSU5HOwotCXdybXNyKE1TUl9JTlRFTF9NSVNDX0ZFQVRVUkVTX0VOQUJMRVMsIGxvLCBoaSk7 Ci0KLQkqdGhpc19lbmFibGVkID0gZW5hYmxlOwotfQogCiAvKgogICogU2V0IGNhcHMgaW4gZXhw ZWN0ZWRfbGV2ZWxsaW5nX2NhcCwgcHJvYmUgYSBzcGVjaWZpYyBtYXNraW5nIE1TUiwgYW5kIHNl dApAQCAtMTQ1LDQwICsxMTEsMTcgQEAgc3RhdGljIHZvaWQgX19pbml0IHByb2JlX21hc2tpbmdf bXNycyh2b2lkKQogfQogCiAvKgotICogQ29udGV4dCBzd2l0Y2ggbGV2ZWxsaW5nIHN0YXRlIHRv IHRoZSBuZXh0IGRvbWFpbi4gIEEgcGFyYW1ldGVyIG9mIE5VTEwgaXMKLSAqIHVzZWQgdG8gY29u dGV4dCBzd2l0Y2ggdG8gdGhlIGRlZmF1bHQgaG9zdCBzdGF0ZSAoYnkgdGhlIGNwdSBicmluZ3Vw LWNvZGUsCi0gKiBjcmFzaCBwYXRoLCBldGMpLgorICogQ29udGV4dCBzd2l0Y2ggQ1BVSUQgbWFz a2luZyBzdGF0ZSB0byB0aGUgbmV4dCBkb21haW4uICBPbmx5IGNhbGxlZCBpZgorICogQ1BVSUQg RmF1bHRpbmcgaXNuJ3QgYXZhaWxhYmxlLCBidXQgbWFza2luZyBNU1JzIGhhdmUgYmVlbiBkZXRl Y3RlZC4gIEEKKyAqIHBhcmFtZXRlciBvZiBOVUxMIGlzIHVzZWQgdG8gY29udGV4dCBzd2l0Y2gg dG8gdGhlIGRlZmF1bHQgaG9zdCBzdGF0ZSAoYnkKKyAqIHRoZSBjcHUgYnJpbmd1cC1jb2RlLCBj cmFzaCBwYXRoLCBldGMpLgogICovCi1zdGF0aWMgdm9pZCBpbnRlbF9jdHh0X3N3aXRjaF9sZXZl bGxpbmcoY29uc3Qgc3RydWN0IHZjcHUgKm5leHQpCitzdGF0aWMgdm9pZCBpbnRlbF9jdHh0X3N3 aXRjaF9tYXNraW5nKGNvbnN0IHN0cnVjdCB2Y3B1ICpuZXh0KQogewogCXN0cnVjdCBjcHVpZG1h c2tzICp0aGVzZV9tYXNrcyA9ICZ0aGlzX2NwdShjcHVpZG1hc2tzKTsKIAljb25zdCBzdHJ1Y3Qg ZG9tYWluICpuZXh0ZCA9IG5leHQgPyBuZXh0LT5kb21haW4gOiBOVUxMOwotCWNvbnN0IHN0cnVj dCBjcHVpZG1hc2tzICptYXNrczsKLQotCWlmIChjcHVfaGFzX2NwdWlkX2ZhdWx0aW5nKSB7Ci0J CS8qCi0JCSAqIFdlICpzaG91bGQqIGJlIGVuYWJsaW5nIGZhdWx0aW5nIGZvciB0aGUgY29udHJv bCBkb21haW4uCi0JCSAqCi0JCSAqIFVuZm9ydHVuYXRlbHksIHRoZSBkb21haW4gYnVpbGRlciAo aGF2aW5nIG9ubHkgZXZlciBiZWVuIGEKLQkJICogUFYgZ3Vlc3QpIGV4cGVjdHMgdG8gYmUgYWJs ZSB0byBzZWUgaG9zdCBjcHVpZCBzdGF0ZSBpbiBhCi0JCSAqIG5hdGl2ZSBDUFVJRCBpbnN0cnVj dGlvbiwgdG8gY29ycmVjdGx5IGJ1aWxkIGEgQ1BVSUQgcG9saWN5Ci0JCSAqIGZvciBIVk0gZ3Vl c3RzIChub3RhYmx5IHRoZSB4c3RhdGUgbGVhdmVzKS4KLQkJICoKLQkJICogVGhpcyBsb2dpYyBp cyBmdW5kaW1lbnRhbGx5IGJyb2tlbiBmb3IgSFZNIHRvb2xzdGFjawotCQkgKiBkb21haW5zLCBh bmQgZmF1bHRpbmcgY2F1c2VzIFBWIGd1ZXN0cyB0byBiZWhhdmUgbGlrZSBIVk0KLQkJICogZ3Vl c3RzIGZyb20gdGhlaXIgcG9pbnQgb2Ygdmlldy4KLQkJICoKLQkJICogRnV0dXJlIGRldmVsb3Bt ZW50IHBsYW5zIHdpbGwgbW92ZSByZXNwb25zaWJpbGl0eSBmb3IKLQkJICogZ2VuZXJhdGluZyB0 aGUgbWF4aW11bSBmdWxsIGNwdWlkIHBvbGljeSBpbnRvIFhlbiwgYXQgd2hpY2gKLQkJICogdGhp cyBwcm9ibGVtIHdpbGwgZGlzYXBwZWFyLgotCQkgKi8KLQkJc2V0X2NwdWlkX2ZhdWx0aW5nKG5l eHRkICYmICFpc19jb250cm9sX2RvbWFpbihuZXh0ZCkgJiYKLQkJCQkgICAoaXNfcHZfZG9tYWlu KG5leHRkKSB8fAotCQkJCSAgICBuZXh0LT5hcmNoLm1zci0+bWlzY19mZWF0dXJlc19lbmFibGVz LmNwdWlkX2ZhdWx0aW5nKSk7Ci0JCXJldHVybjsKLQl9Ci0KLQltYXNrcyA9IChuZXh0ZCAmJiBp c19wdl9kb21haW4obmV4dGQpICYmIG5leHRkLT5hcmNoLnB2X2RvbWFpbi5jcHVpZG1hc2tzKQor CWNvbnN0IHN0cnVjdCBjcHVpZG1hc2tzICptYXNrcyA9CisJCShuZXh0ZCAmJiBpc19wdl9kb21h aW4obmV4dGQpICYmIG5leHRkLT5hcmNoLnB2X2RvbWFpbi5jcHVpZG1hc2tzKQogCQk/IG5leHRk LT5hcmNoLnB2X2RvbWFpbi5jcHVpZG1hc2tzIDogJmNwdWlkbWFza19kZWZhdWx0czsKIAogICAg ICAgICBpZiAobXNyX2Jhc2ljKSB7CkBAIC0yMjMsOCArMTY2LDEwIEBAIHN0YXRpYyB2b2lkIGlu dGVsX2N0eHRfc3dpdGNoX2xldmVsbGluZyhjb25zdCBzdHJ1Y3QgdmNwdSAqbmV4dCkKICAqLwog c3RhdGljIHZvaWQgX19pbml0IG5vaW5saW5lIGludGVsX2luaXRfbGV2ZWxsaW5nKHZvaWQpCiB7 Ci0JaWYgKCFwcm9iZV9pbnRlbF9jcHVpZF9mYXVsdGluZygpKQotCQlwcm9iZV9tYXNraW5nX21z cnMoKTsKKwlpZiAocHJvYmVfY3B1aWRfZmF1bHRpbmcoKSkKKwkJcmV0dXJuOworCisJcHJvYmVf bWFza2luZ19tc3JzKCk7CiAKIAlpZiAobXNyX2Jhc2ljKSB7CiAJCXVpbnQzMl90IGVjeCwgZWR4 LCB0bXA7CkBAIC0yNzgsNyArMjIzLDcgQEAgc3RhdGljIHZvaWQgX19pbml0IG5vaW5saW5lIGlu dGVsX2luaXRfbGV2ZWxsaW5nKHZvaWQpCiAJfQogCiAJaWYgKGxldmVsbGluZ19jYXBzKQotCQlj dHh0X3N3aXRjaF9sZXZlbGxpbmcgPSBpbnRlbF9jdHh0X3N3aXRjaF9sZXZlbGxpbmc7CisJCWN0 eHRfc3dpdGNoX21hc2tpbmcgPSBpbnRlbF9jdHh0X3N3aXRjaF9tYXNraW5nOwogfQogCiBzdGF0 aWMgdm9pZCBlYXJseV9pbml0X2ludGVsKHN0cnVjdCBjcHVpbmZvX3g4NiAqYykKQEAgLTMxNiw3 ICsyNjEsNyBAQCBzdGF0aWMgdm9pZCBlYXJseV9pbml0X2ludGVsKHN0cnVjdCBjcHVpbmZvX3g4 NiAqYykKIAlpZiAoYyA9PSAmYm9vdF9jcHVfZGF0YSkKIAkJaW50ZWxfaW5pdF9sZXZlbGxpbmco KTsKIAotCWludGVsX2N0eHRfc3dpdGNoX2xldmVsbGluZyhOVUxMKTsKKwljdHh0X3N3aXRjaF9s ZXZlbGxpbmcoTlVMTCk7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9hc20teDg2 L2NwdWlkLmggYi94ZW4vaW5jbHVkZS9hc20teDg2L2NwdWlkLmgKaW5kZXggZDJkZDg0MWUxNS4u NzRkNmYxMjNlNSAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9jcHVpZC5oCisrKyBi L3hlbi9pbmNsdWRlL2FzbS14ODYvY3B1aWQuaApAQCAtNTgsOSArNTgsNiBAQCBERUNMQVJFX1BF Ul9DUFUoc3RydWN0IGNwdWlkbWFza3MsIGNwdWlkbWFza3MpOwogLyogRGVmYXVsdCBtYXNraW5n IE1TUiB2YWx1ZXMsIGNhbGN1bGF0ZWQgYXQgYm9vdC4gKi8KIGV4dGVybiBzdHJ1Y3QgY3B1aWRt YXNrcyBjcHVpZG1hc2tfZGVmYXVsdHM7CiAKLS8qIFdoZXRoZXIgb3Igbm90IGNwdWlkIGZhdWx0 aW5nIGlzIGF2YWlsYWJsZSBmb3IgdGhlIGN1cnJlbnQgZG9tYWluLiAqLwotREVDTEFSRV9QRVJf Q1BVKGJvb2wsIGNwdWlkX2ZhdWx0aW5nX2VuYWJsZWQpOwotCiAjZGVmaW5lIENQVUlEX0dVRVNU X05SX0JBU0lDICAgICAgKDB4ZHUgKyAxKQogI2RlZmluZSBDUFVJRF9HVUVTVF9OUl9GRUFUICAg ICAgICgwdSArIDEpCiAjZGVmaW5lIENQVUlEX0dVRVNUX05SX0NBQ0hFICAgICAgKDV1ICsgMSkK ZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL2FzbS14ODYvcHJvY2Vzc29yLmggYi94ZW4vaW5jbHVk ZS9hc20teDg2L3Byb2Nlc3Nvci5oCmluZGV4IDQxYThkOGMzMmYuLmM5NjAxYjJmYjIgMTAwNjQ0 Ci0tLSBhL3hlbi9pbmNsdWRlL2FzbS14ODYvcHJvY2Vzc29yLmgKKysrIGIveGVuL2luY2x1ZGUv YXNtLXg4Ni9wcm9jZXNzb3IuaApAQCAtMTUxLDcgKzE1MSw5IEBAIGV4dGVybiBzdHJ1Y3QgY3B1 aW5mb194ODYgYm9vdF9jcHVfZGF0YTsKIGV4dGVybiBzdHJ1Y3QgY3B1aW5mb194ODYgY3B1X2Rh dGFbXTsKICNkZWZpbmUgY3VycmVudF9jcHVfZGF0YSBjcHVfZGF0YVtzbXBfcHJvY2Vzc29yX2lk KCldCiAKLWV4dGVybiB2b2lkICgqY3R4dF9zd2l0Y2hfbGV2ZWxsaW5nKShjb25zdCBzdHJ1Y3Qg dmNwdSAqbmV4dCk7CitleHRlcm4gYm9vbCBwcm9iZV9jcHVpZF9mYXVsdGluZyh2b2lkKTsKK2V4 dGVybiB2b2lkIGN0eHRfc3dpdGNoX2xldmVsbGluZyhjb25zdCBzdHJ1Y3QgdmNwdSAqbmV4dCk7 CitleHRlcm4gdm9pZCAoKmN0eHRfc3dpdGNoX21hc2tpbmcpKGNvbnN0IHN0cnVjdCB2Y3B1ICpu ZXh0KTsKIAogZXh0ZXJuIHU2NCBob3N0X3BhdDsKIGV4dGVybiBib29sX3Qgb3B0X2NwdV9pbmZv OwotLSAKMi4xMS4wCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5v cmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3hlbi1kZXZl bA==