From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chao Gao Subject: [PATCH v6 08/12] microcode: split out apply_microcode() from cpu_request_microcode() Date: Mon, 11 Mar 2019 15:57:32 +0800 Message-ID: <1552291056-20286-9-git-send-email-chao.gao@intel.com> References: <1552291056-20286-1-git-send-email-chao.gao@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1h3Fkt-0003rn-Vo for xen-devel@lists.xenproject.org; Mon, 11 Mar 2019 07:53:52 +0000 In-Reply-To: <1552291056-20286-1-git-send-email-chao.gao@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.xenproject.org Cc: Sergey Dyasli , Wei Liu , Ashok Raj , Andrew Cooper , Jan Beulich , Chao Gao , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= List-Id: xen-devel@lists.xenproject.org RHVyaW5nIGxhdGUgbWljcm9jb2RlIHVwZGF0ZSwgYXBwbHlfbWljcm9jb2RlKCkgaXMgaW52b2tl ZCBpbgpjcHVfcmVxdWVzdF9taWNyb2NvZGUoKS4gVG8gbWFrZSBsYXRlIG1pY3JvY29kZSB1cGRh dGUgbW9yZSByZWxpYWJsZSwKd2Ugd2FudCB0byBwdXQgdGhlIGFwcGx5X21pY3JvY29kZSgpIGlu dG8gc3RvcF9tYWNoaW5lIGNvbnRleHQuIFNvCndlIHNwbGl0IG91dCBpdCBmcm9tIGNwdV9yZXF1 ZXN0X21pY3JvY29kZSgpLiBBcyBhIGNvbnNlcXVlbmNlLAphcHBseV9taWNyb2NvZGUoKSBzaG91 bGQgYmUgaW52b2tlZCBleHBsaWNpdGx5IGluIHRoZSBjb21tb24gY29kZS4KCkFsc28gd2l0aCB0 aGUgZ2xvYmFsIHVjb2RlIGNhY2hlLCBtaWNyb2NvZGUgcGFyc2luZyBvbmx5IG5lZWRzCnRvIGJl IGRvbmUgb25jZTsgY3B1X3JlcXVlc3RfbWljcm9jb2RlKCkgaXMgYWxzbyBtb3ZlZCBvdXQgb2YK bWljcm9jb2RlX3VwZGF0ZV9jcHUoKS4KCk9uIEFNRCBzaWRlLCBzdm1faG9zdF9vc3Z3X2luaXQo KSBpcyBzdXBwb3NlZCB0byBiZSBjYWxsZWQgYWZ0ZXIKbWljcm9jb2RlIHVwZGF0ZS4gQXMgYXBw bHlfbWljcmNvZGUoKSB3b24ndCBiZSBjYWxsZWQgYnkKY3B1X3JlcXVlc3RfbWljcm9jb2RlKCkg bm93LCBzdm1faG9zdF9vc3Z3X2luaXQoKSBpcyBtb3ZlZCB0byB0aGUKZW5kIG9mIGFwcGx5X21p Y3JvY29kZSgpLgoKU2lnbmVkLW9mZi1ieTogQ2hhbyBHYW8gPGNoYW8uZ2FvQGludGVsLmNvbT4K LS0tCkNoYW5nZXMgaW4gdjY6CiAtIGR1cmluZyBlYXJseSBtaWNyb2NvZGUgdXBkYXRlLCBCU1Ag YW5kIEFQcyBjYWxsIGRpZmZlcmVudCBmdW5jdGlvbnMuCiAgIFRodXMgQVAgY2FuIGJ5cGFzcyBw YXJzaW5nIG1pY3JvY29kZSBibG9iLgotLS0KIHhlbi9hcmNoL3g4Ni9hY3BpL3Bvd2VyLmMgICAg ICAgfCAgMiArLQogeGVuL2FyY2gveDg2L21pY3JvY29kZS5jICAgICAgICB8IDc3ICsrKysrKysr KysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tCiB4ZW4vYXJjaC94ODYvbWljcm9jb2Rl X2FtZC5jICAgIHwgMTkgKysrKystLS0tLQogeGVuL2FyY2gveDg2L21pY3JvY29kZV9pbnRlbC5j ICB8IDE5ICsrLS0tLS0tLS0KIHhlbi9hcmNoL3g4Ni9zbXBib290LmMgICAgICAgICAgfCAgNSAr LS0KIHhlbi9pbmNsdWRlL2FzbS14ODYvcHJvY2Vzc29yLmggfCAgMyArLQogNiBmaWxlcyBjaGFu Z2VkLCA2MiBpbnNlcnRpb25zKCspLCA2MyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS94ZW4v YXJjaC94ODYvYWNwaS9wb3dlci5jIGIveGVuL2FyY2gveDg2L2FjcGkvcG93ZXIuYwppbmRleCBi NGMzNjY5Li5hZWFjYjU3IDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvYWNwaS9wb3dlci5jCisr KyBiL3hlbi9hcmNoL3g4Ni9hY3BpL3Bvd2VyLmMKQEAgLTI1Myw3ICsyNTMsNyBAQCBzdGF0aWMg aW50IGVudGVyX3N0YXRlKHUzMiBzdGF0ZSkKIAogICAgIGNvbnNvbGVfZW5kX3N5bmMoKTsKIAot ICAgIG1pY3JvY29kZV9yZXN1bWVfY3B1KCk7CisgICAgZWFybHlfbWljcm9jb2RlX3VwZGF0ZV9j cHUoKTsKIAogICAgIGlmICggIXJlY2hlY2tfY3B1X2ZlYXR1cmVzKDApICkKICAgICAgICAgcGFu aWMoIk1pc3NpbmcgcHJldmlvdXNseSBhdmFpbGFibGUgZmVhdHVyZShzKVxuIik7CmRpZmYgLS1n aXQgYS94ZW4vYXJjaC94ODYvbWljcm9jb2RlLmMgYi94ZW4vYXJjaC94ODYvbWljcm9jb2RlLmMK aW5kZXggOGJmZGY5NS4uZTRlMmU3NCAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L21pY3JvY29k ZS5jCisrKyBiL3hlbi9hcmNoL3g4Ni9taWNyb2NvZGUuYwpAQCAtMjYxLDM4ICsyNjEsMzQgQEAg Y29uc3Qgc3RydWN0IG1pY3JvY29kZV9wYXRjaCAqbWljcm9jb2RlX2ZpbmRfcGF0Y2godm9pZCkK ICAgICByZXR1cm4gTlVMTDsKIH0KIAotaW50IG1pY3JvY29kZV9yZXN1bWVfY3B1KHZvaWQpCisv KgorICogUmV0dXJuIHRoZSBudW1iZXIgb2YgdWNvZGUgcGF0Y2ggaW5zZXJ0ZWQgdG8gdGhlIGds b2JhbCBjYWNoZS4KKyAqIFJldHVybiBhIG5lZ3RpdmUgdmFsdWUgb24gZXJyb3IuCisgKi8KK3N0 YXRpYyBpbnQgbWljcm9jb2RlX3BhcnNlX2Jsb2IoY2hhciAqYnVmLCB1aW50MzJfdCBsZW4pCiB7 Ci0gICAgaW50IGVycjsKLSAgICBzdHJ1Y3QgY3B1X3NpZ25hdHVyZSAqc2lnID0gJnRoaXNfY3B1 KGNwdV9zaWcpOwotCi0gICAgaWYgKCAhbWljcm9jb2RlX29wcyApCi0gICAgICAgIHJldHVybiAw OworICAgIGludCByZXQ7CiAKICAgICBzcGluX2xvY2soJm1pY3JvY29kZV9tdXRleCk7Ci0KLSAg ICBlcnIgPSBtaWNyb2NvZGVfb3BzLT5jb2xsZWN0X2NwdV9pbmZvKHNpZyk7Ci0gICAgaWYgKCBs aWtlbHkoIWVycikgKQotICAgICAgICBlcnIgPSBtaWNyb2NvZGVfb3BzLT5hcHBseV9taWNyb2Nv ZGUoKTsKKyAgICByZXQgPSBtaWNyb2NvZGVfb3BzLT5jb2xsZWN0X2NwdV9pbmZvKCZ0aGlzX2Nw dShjcHVfc2lnKSk7CisgICAgaWYgKCBsaWtlbHkoIXJldCkgKQorICAgICAgICByZXQgPSBtaWNy b2NvZGVfb3BzLT5jcHVfcmVxdWVzdF9taWNyb2NvZGUoYnVmLCBsZW4pOwogICAgIHNwaW5fdW5s b2NrKCZtaWNyb2NvZGVfbXV0ZXgpOwogCi0gICAgcmV0dXJuIGVycjsKKyAgICByZXR1cm4gcmV0 OwogfQogCi1zdGF0aWMgaW50IG1pY3JvY29kZV91cGRhdGVfY3B1KGNvbnN0IHZvaWQgKmJ1Ziwg c2l6ZV90IHNpemUpCitzdGF0aWMgaW50IG1pY3JvY29kZV91cGRhdGVfY3B1KHZvaWQpCiB7Ci0g ICAgaW50IGVycjsKLSAgICB1bnNpZ25lZCBpbnQgY3B1ID0gc21wX3Byb2Nlc3Nvcl9pZCgpOwot ICAgIHN0cnVjdCBjcHVfc2lnbmF0dXJlICpzaWcgPSAmcGVyX2NwdShjcHVfc2lnLCBjcHUpOwor ICAgIGludCByZXQ7CiAKICAgICBzcGluX2xvY2soJm1pY3JvY29kZV9tdXRleCk7Ci0KLSAgICBl cnIgPSBtaWNyb2NvZGVfb3BzLT5jb2xsZWN0X2NwdV9pbmZvKHNpZyk7Ci0gICAgaWYgKCBsaWtl bHkoIWVycikgKQotICAgICAgICBlcnIgPSBtaWNyb2NvZGVfb3BzLT5jcHVfcmVxdWVzdF9taWNy b2NvZGUoYnVmLCBzaXplKTsKKyAgICByZXQgPSBtaWNyb2NvZGVfb3BzLT5jb2xsZWN0X2NwdV9p bmZvKCZ0aGlzX2NwdShjcHVfc2lnKSk7CisgICAgaWYgKCBsaWtlbHkoIXJldCkgKQorICAgICAg ICByZXQgPSBtaWNyb2NvZGVfb3BzLT5hcHBseV9taWNyb2NvZGUoKTsKICAgICBzcGluX3VubG9j aygmbWljcm9jb2RlX211dGV4KTsKIAotICAgIHJldHVybiBlcnI7CisgICAgcmV0dXJuIHJldDsK IH0KIAogc3RhdGljIGxvbmcgZG9fbWljcm9jb2RlX3VwZGF0ZSh2b2lkICpfaW5mbykKQEAgLTMw Miw3ICsyOTgsNyBAQCBzdGF0aWMgbG9uZyBkb19taWNyb2NvZGVfdXBkYXRlKHZvaWQgKl9pbmZv KQogCiAgICAgQlVHX09OKGluZm8tPmNwdSAhPSBzbXBfcHJvY2Vzc29yX2lkKCkpOwogCi0gICAg ZXJyb3IgPSBtaWNyb2NvZGVfdXBkYXRlX2NwdShpbmZvLT5idWZmZXIsIGluZm8tPmJ1ZmZlcl9z aXplKTsKKyAgICBlcnJvciA9IG1pY3JvY29kZV91cGRhdGVfY3B1KCk7CiAgICAgaWYgKCBlcnJv ciApCiAgICAgICAgIGluZm8tPmVycm9yID0gZXJyb3I7CiAKQEAgLTMzNywxMCArMzMzLDYgQEAg aW50IG1pY3JvY29kZV91cGRhdGUoWEVOX0dVRVNUX0hBTkRMRV9QQVJBTShjb25zdF92b2lkKSBi dWYsIHVuc2lnbmVkIGxvbmcgbGVuKQogICAgICAgICByZXR1cm4gcmV0OwogICAgIH0KIAotICAg IGluZm8tPmJ1ZmZlcl9zaXplID0gbGVuOwotICAgIGluZm8tPmVycm9yID0gMDsKLSAgICBpbmZv LT5jcHUgPSBjcHVtYXNrX2ZpcnN0KCZjcHVfb25saW5lX21hcCk7Ci0KICAgICBpZiAoIG1pY3Jv Y29kZV9vcHMtPnN0YXJ0X3VwZGF0ZSApCiAgICAgewogICAgICAgICByZXQgPSBtaWNyb2NvZGVf b3BzLT5zdGFydF91cGRhdGUoKTsKQEAgLTM1MSw2ICszNDMsMTggQEAgaW50IG1pY3JvY29kZV91 cGRhdGUoWEVOX0dVRVNUX0hBTkRMRV9QQVJBTShjb25zdF92b2lkKSBidWYsIHVuc2lnbmVkIGxv bmcgbGVuKQogICAgICAgICB9CiAgICAgfQogCisgICAgcmV0ID0gbWljcm9jb2RlX3BhcnNlX2Js b2IoaW5mby0+YnVmZmVyLCBsZW4pOworICAgIGlmICggcmV0IDw9IDAgKQorICAgIHsKKyAgICAg ICAgcHJpbnRrKFhFTkxPR19FUlIgIk5vIHZhbGlkIG9yIG5ld2VyIHVjb2RlIGZvdW5kLiBVcGRh dGUgYWJvcnQhXG4iKTsKKyAgICAgICAgeGZyZWUoaW5mbyk7CisgICAgICAgIHJldHVybiAtRUlO VkFMOworICAgIH0KKworICAgIGluZm8tPmJ1ZmZlcl9zaXplID0gbGVuOworICAgIGluZm8tPmVy cm9yID0gMDsKKyAgICBpbmZvLT5jcHUgPSBjcHVtYXNrX2ZpcnN0KCZjcHVfb25saW5lX21hcCk7 CisKICAgICByZXR1cm4gY29udGludWVfaHlwZXJjYWxsX29uX2NwdShpbmZvLT5jcHUsIGRvX21p Y3JvY29kZV91cGRhdGUsIGluZm8pOwogfQogCkBAIC0zNzYsNyArMzgwLDE2IEBAIHN0YXRpYyBp bnQgX19pbml0IG1pY3JvY29kZV9pbml0KHZvaWQpCiB9CiBfX2luaXRjYWxsKG1pY3JvY29kZV9p bml0KTsKIAotaW50IF9faW5pdCBlYXJseV9taWNyb2NvZGVfdXBkYXRlX2NwdShib29sIHN0YXJ0 X3VwZGF0ZSkKK2ludCBlYXJseV9taWNyb2NvZGVfdXBkYXRlX2NwdSh2b2lkKQoreworICAgIHJl dHVybiBtaWNyb2NvZGVfb3BzID8gbWljcm9jb2RlX3VwZGF0ZV9jcHUoKSA6IDA7Cit9CisKKy8q CisgKiBCU1AgbmVlZHMgdG8gcGFyc2UgdGhlIHVjb2RlIGJsb2IgYW5kIHRoZW4gYXBwbHkgYW4g dXBkYXRlLgorICogQVBzIGp1c3QgYXBwbHkgYW4gdXBkYXRlIGJ5IGNhbGxpbmcgZWFybHlfbWlj cm9jb2RlX3VwZGF0ZV9jcHUoKS4KKyAqLworc3RhdGljIGludCBfX2luaXQgZWFybHlfbWljcm9j b2RlX3BhcnNlX2FuZF91cGRhdGVfY3B1KHZvaWQpCiB7CiAgICAgaW50IHJjID0gMDsKICAgICB2 b2lkICpkYXRhID0gTlVMTDsKQEAgLTM5NCwxMyArNDA3LDE3IEBAIGludCBfX2luaXQgZWFybHlf bWljcm9jb2RlX3VwZGF0ZV9jcHUoYm9vbCBzdGFydF91cGRhdGUpCiAgICAgfQogICAgIGlmICgg ZGF0YSApCiAgICAgewotICAgICAgICBpZiAoIHN0YXJ0X3VwZGF0ZSAmJiBtaWNyb2NvZGVfb3Bz LT5zdGFydF91cGRhdGUgKQorICAgICAgICBpZiAoIG1pY3JvY29kZV9vcHMtPnN0YXJ0X3VwZGF0 ZSApCiAgICAgICAgICAgICByYyA9IG1pY3JvY29kZV9vcHMtPnN0YXJ0X3VwZGF0ZSgpOwogCiAg ICAgICAgIGlmICggcmMgKQogICAgICAgICAgICAgcmV0dXJuIHJjOwogCi0gICAgICAgIHJldHVy biBtaWNyb2NvZGVfdXBkYXRlX2NwdShkYXRhLCBsZW4pOworICAgICAgICByYyA9IG1pY3JvY29k ZV9wYXJzZV9ibG9iKGRhdGEsIGxlbik7CisgICAgICAgIGlmICggcmMgPD0gMCApCisgICAgICAg ICAgICByZXR1cm4gLUVJTlZBTDsKKworICAgICAgICByZXR1cm4gZWFybHlfbWljcm9jb2RlX3Vw ZGF0ZV9jcHUoKTsKICAgICB9CiAgICAgZWxzZQogICAgICAgICByZXR1cm4gLUVOT01FTTsKQEAg LTQxOSw4ICs0MzYsMTAgQEAgaW50IF9faW5pdCBlYXJseV9taWNyb2NvZGVfaW5pdCh2b2lkKQog ICAgICAgICByZXR1cm4gcmM7CiAKICAgICBpZiAoIG1pY3JvY29kZV9vcHMgKQorICAgIHsKICAg ICAgICAgaWYgKCB1Y29kZV9tb2QubW9kX2VuZCB8fCB1Y29kZV9ibG9iLnNpemUgKQotICAgICAg ICAgICAgcmMgPSBlYXJseV9taWNyb2NvZGVfdXBkYXRlX2NwdSh0cnVlKTsKKyAgICAgICAgICAg IHJjID0gZWFybHlfbWljcm9jb2RlX3BhcnNlX2FuZF91cGRhdGVfY3B1KCk7CisgICAgfQogCiAg ICAgcmV0dXJuIHJjOwogfQpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L21pY3JvY29kZV9hbWQu YyBiL3hlbi9hcmNoL3g4Ni9taWNyb2NvZGVfYW1kLmMKaW5kZXggMjU5MzVkZC4uNWMyNWZmMiAx MDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L21pY3JvY29kZV9hbWQuYworKysgYi94ZW4vYXJjaC94 ODYvbWljcm9jb2RlX2FtZC5jCkBAIC0yOTMsNiArMjkzLDEwIEBAIHN0YXRpYyBpbnQgYXBwbHlf bWljcm9jb2RlKHZvaWQpCiAKICAgICBzaWctPnJldiA9IHJldjsKIAorI2lmZGVmIENPTkZJR19I Vk0KKyAgICBzdm1faG9zdF9vc3Z3X2luaXQoKTsKKyNlbmRpZgorCiAgICAgcmV0dXJuIDA7CiB9 CiAKQEAgLTQ1OSw2ICs0NjMsNyBAQCBzdGF0aWMgaW50IGNwdV9yZXF1ZXN0X21pY3JvY29kZShj b25zdCB2b2lkICpidWYsIHNpemVfdCBidWZzaXplKQogICAgIHVuc2lnbmVkIGludCBlcXVpdl9j cHVfaWQ7CiAgICAgdW5zaWduZWQgaW50IGNwdSA9IHNtcF9wcm9jZXNzb3JfaWQoKTsKICAgICBj b25zdCBzdHJ1Y3QgY3B1X3NpZ25hdHVyZSAqc2lnID0gJnBlcl9jcHUoY3B1X3NpZywgY3B1KTsK KyAgICB1bnNpZ25lZCBpbnQgbWF0Y2hlZF9jbnQgPSAwOwogCiAgICAgY3VycmVudF9jcHVfaWQg PSBjcHVpZF9lYXgoMHgwMDAwMDAwMSk7CiAKQEAgLTU1NywxMiArNTYyLDggQEAgc3RhdGljIGlu dCBjcHVfcmVxdWVzdF9taWNyb2NvZGUoY29uc3Qgdm9pZCAqYnVmLCBzaXplX3QgYnVmc2l6ZSkK ICAgICAgICAgICogdGhpcyB1Y29kZSBwYXRjaCBiZWZvcmUgY2hlY2tpbmcgd2hldGhlciBpdCBt YXRjaGVzIHdpdGgKICAgICAgICAgICogY3VycmVudCBDUFUuCiAgICAgICAgICAqLwotICAgICAg ICBpZiAoIG1pY3JvY29kZV9zYXZlX3BhdGNoKG1pY3JvY29kZV9wYXRjaCkgJiYgbWljcm9jb2Rl X2ZpdHMobWNfYW1kKSApCi0gICAgICAgIHsKLSAgICAgICAgICAgIGVycm9yID0gYXBwbHlfbWlj cm9jb2RlKCk7Ci0gICAgICAgICAgICBpZiAoIGVycm9yICkKLSAgICAgICAgICAgICAgICBicmVh azsKLSAgICAgICAgfQorICAgICAgICBpZiAoIG1pY3JvY29kZV9zYXZlX3BhdGNoKG1pY3JvY29k ZV9wYXRjaCkgKQorICAgICAgICAgICAgbWF0Y2hlZF9jbnQrKzsKIAogICAgICAgICBpZiAoIG9m ZnNldCA+PSBidWZzaXplICkKICAgICAgICAgICAgIGJyZWFrOwpAQCAtNTkzLDE3ICs1OTQsMTMg QEAgc3RhdGljIGludCBjcHVfcmVxdWVzdF9taWNyb2NvZGUoY29uc3Qgdm9pZCAqYnVmLCBzaXpl X3QgYnVmc2l6ZSkKICAgICB9CiAKICAgb3V0OgotI2lmIENPTkZJR19IVk0KLSAgICBzdm1faG9z dF9vc3Z3X2luaXQoKTsKLSNlbmRpZgotCiAgICAgLyoKICAgICAgKiBJbiBzb21lIGNhc2VzIHdl IG1heSByZXR1cm4gYW4gZXJyb3IgZXZlbiBpZiBwcm9jZXNzb3IncyBtaWNyb2NvZGUgaGFzCiAg ICAgICogYmVlbiB1cGRhdGVkLiBGb3IgZXhhbXBsZSwgdGhlIGZpcnN0IHBhdGNoIGluIGEgY29u dGFpbmVyIGZpbGUgaXMgbG9hZGVkCiAgICAgICogc3VjY2Vzc2Z1bGx5IGJ1dCBzdWJzZXF1ZW50 IGNvbnRhaW5lciBmaWxlIHByb2Nlc3NpbmcgZW5jb3VudGVycyBhCiAgICAgICogZmFpbHVyZS4K ICAgICAgKi8KLSAgICByZXR1cm4gZXJyb3I7CisgICAgcmV0dXJuIGVycm9yID86IG1hdGNoZWRf Y250OwogfQogCiBzdGF0aWMgaW50IHN0YXJ0X3VwZGF0ZSh2b2lkKQpkaWZmIC0tZ2l0IGEveGVu L2FyY2gveDg2L21pY3JvY29kZV9pbnRlbC5jIGIveGVuL2FyY2gveDg2L21pY3JvY29kZV9pbnRl bC5jCmluZGV4IDE4YzgzM2YuLmM5MjFlYTkgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9taWNy b2NvZGVfaW50ZWwuYworKysgYi94ZW4vYXJjaC94ODYvbWljcm9jb2RlX2ludGVsLmMKQEAgLTMx MCw3ICszMTAsNiBAQCBzdGF0aWMgZW51bSBtaWNyb2NvZGVfbWF0Y2hfcmVzdWx0IGNvbXBhcmVf cGF0Y2goCiAgKi8KIHN0YXRpYyBpbnQgZ2V0X21hdGNoaW5nX21pY3JvY29kZShjb25zdCB2b2lk ICptYywgdW5zaWduZWQgaW50IGNwdSkKIHsKLSAgICBjb25zdCBzdHJ1Y3QgY3B1X3NpZ25hdHVy ZSAqc2lnID0gJnBlcl9jcHUoY3B1X3NpZywgY3B1KTsKICAgICBjb25zdCBzdHJ1Y3QgbWljcm9j b2RlX2hlYWRlcl9pbnRlbCAqbWNfaGVhZGVyID0gbWM7CiAgICAgdW5zaWduZWQgbG9uZyB0b3Rh bF9zaXplID0gZ2V0X3RvdGFsc2l6ZShtY19oZWFkZXIpOwogICAgIHZvaWQgKm5ld19tYyA9IHht YWxsb2NfYnl0ZXModG90YWxfc2l6ZSk7CkBAIC0zMjgsMTggKzMyNyw5IEBAIHN0YXRpYyBpbnQg Z2V0X21hdGNoaW5nX21pY3JvY29kZShjb25zdCB2b2lkICptYywgdW5zaWduZWQgaW50IGNwdSkK IAogICAgIC8qCiAgICAgICogSW4gb3JkZXIgdG8gc3VwcG9ydCBhIHN5c3RlbSB3aXRoIG1peGVk IHN0ZXBwaW5nIENQVXMsIHNhdmUgdGhpcyB1Y29kZQotICAgICAqIHBhdGNoIGJlZm9yZSBjaGVj a2luZyB3aGV0aGVyIGl0IG1hdGNoZXMgd2l0aCBjdXJyZW50IENQVS4KKyAgICAgKiBwYXRjaCB3 aXRob3V0IGNoZWNraW5nIHdoZXRoZXIgaXQgbWF0Y2hlcyB3aXRoIGN1cnJlbnQgQ1BVLgogICAg ICAqLwotICAgIGlmICggIW1pY3JvY29kZV9zYXZlX3BhdGNoKG1pY3JvY29kZV9wYXRjaCkgKQot ICAgICAgICByZXR1cm4gMDsKLQotICAgIGlmICggbWljcm9jb2RlX3VwZGF0ZV9tYXRjaChtYywg c2lnLT5zaWcsIHNpZy0+cGYsIHNpZy0+cmV2KSAhPSBORVdfVUNPREUgKQotICAgICAgICByZXR1 cm4gMDsKLQotICAgIHByX2RlYnVnKCJtaWNyb2NvZGU6IENQVSVkIGZvdW5kIGEgbWF0Y2hpbmcg bWljcm9jb2RlIHVwZGF0ZSB3aXRoIgotICAgICAgICAgICAgICIgdmVyc2lvbiAlI3ggKGN1cnJl bnQ9JSN4KVxuIiwKLSAgICAgICAgICAgICBjcHUsIG1jX2hlYWRlci0+cmV2LCBzaWctPnJldik7 Ci0gICAgcmV0dXJuIDE7CisgICAgcmV0dXJuIG1pY3JvY29kZV9zYXZlX3BhdGNoKG1pY3JvY29k ZV9wYXRjaCk7CiB9CiAKIHN0YXRpYyBpbnQgYXBwbHlfbWljcm9jb2RlKHZvaWQpCkBAIC00NTEs MTAgKzQ0MSw3IEBAIHN0YXRpYyBpbnQgY3B1X3JlcXVlc3RfbWljcm9jb2RlKGNvbnN0IHZvaWQg KmJ1Ziwgc2l6ZV90IHNpemUpCiAgICAgaWYgKCBvZmZzZXQgPCAwICkKICAgICAgICAgZXJyb3Ig PSBvZmZzZXQ7CiAKLSAgICBpZiAoICFlcnJvciAmJiBtYXRjaGluZ19jb3VudCApCi0gICAgICAg IGVycm9yID0gYXBwbHlfbWljcm9jb2RlKCk7Ci0KLSAgICByZXR1cm4gZXJyb3I7CisgICAgcmV0 dXJuIGVycm9yID86IG1hdGNoaW5nX2NvdW50OwogfQogCiBzdGF0aWMgY29uc3Qgc3RydWN0IG1p Y3JvY29kZV9vcHMgbWljcm9jb2RlX2ludGVsX29wcyA9IHsKZGlmZiAtLWdpdCBhL3hlbi9hcmNo L3g4Ni9zbXBib290LmMgYi94ZW4vYXJjaC94ODYvc21wYm9vdC5jCmluZGV4IDc2M2IwYmQuLjJh N2YzMGUgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9zbXBib290LmMKKysrIGIveGVuL2FyY2gv eDg2L3NtcGJvb3QuYwpAQCAtMzYzLDEwICszNjMsNyBAQCB2b2lkIHN0YXJ0X3NlY29uZGFyeSh2 b2lkICp1bnVzZWQpCiAKICAgICBpbml0aWFsaXplX2NwdV9kYXRhKGNwdSk7CiAKLSAgICBpZiAo IHN5c3RlbV9zdGF0ZSA8PSBTWVNfU1RBVEVfc21wX2Jvb3QgKQotICAgICAgICBlYXJseV9taWNy b2NvZGVfdXBkYXRlX2NwdShmYWxzZSk7Ci0gICAgZWxzZQotICAgICAgICBtaWNyb2NvZGVfcmVz dW1lX2NwdSgpOworICAgIGVhcmx5X21pY3JvY29kZV91cGRhdGVfY3B1KCk7CiAKICAgICAvKgog ICAgICAqIElmIE1TUl9TUEVDX0NUUkwgaXMgYXZhaWxhYmxlLCBhcHBseSBYZW4ncyBkZWZhdWx0 IHNldHRpbmcgYW5kIGRpc2NhcmQKZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL2FzbS14ODYvcHJv Y2Vzc29yLmggYi94ZW4vaW5jbHVkZS9hc20teDg2L3Byb2Nlc3Nvci5oCmluZGV4IDE4NmViOGIu Ljk5MjU5MTYgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL2FzbS14ODYvcHJvY2Vzc29yLmgKKysr IGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9wcm9jZXNzb3IuaApAQCAtNTczLDggKzU3Myw3IEBAIGlu dCBndWVzdF93cm1zcl94ZW4oc3RydWN0IHZjcHUgKnYsIHVpbnQzMl90IGlkeCwgdWludDY0X3Qg dmFsKTsKIAogdm9pZCBtaWNyb2NvZGVfc2V0X21vZHVsZSh1bnNpZ25lZCBpbnQpOwogaW50IG1p Y3JvY29kZV91cGRhdGUoWEVOX0dVRVNUX0hBTkRMRV9QQVJBTShjb25zdF92b2lkKSwgdW5zaWdu ZWQgbG9uZyBsZW4pOwotaW50IG1pY3JvY29kZV9yZXN1bWVfY3B1KHZvaWQpOwotaW50IGVhcmx5 X21pY3JvY29kZV91cGRhdGVfY3B1KGJvb2wgc3RhcnRfdXBkYXRlKTsKK2ludCBlYXJseV9taWNy b2NvZGVfdXBkYXRlX2NwdSh2b2lkKTsKIGludCBlYXJseV9taWNyb2NvZGVfaW5pdCh2b2lkKTsK IGludCBtaWNyb2NvZGVfaW5pdF9pbnRlbCh2b2lkKTsKIGludCBtaWNyb2NvZGVfaW5pdF9hbWQo dm9pZCk7Ci0tIAoxLjguMy4xCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVucHJv amVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3hl bi1kZXZlbA==