From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chao Gao Subject: [PATCH v7 06/10] microcode: split out apply_microcode() from cpu_request_microcode() Date: Mon, 27 May 2019 16:31:27 +0800 Message-ID: <1558945891-3015-7-git-send-email-chao.gao@intel.com> References: <1558945891-3015-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 1hVAyp-0004El-Vl for xen-devel@lists.xenproject.org; Mon, 27 May 2019 08:27:40 +0000 In-Reply-To: <1558945891-3015-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 , Ashok Raj , Wei Liu , 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 bGQgYmUgaW52b2tlZCBleHBsaWNpdGx5IGluIHRoZSBjb21tb24gY29kZS4KClByZXZpb3VzbHks IGFwcGx5X21pY3JvY29kZSgpIGdldHMgdGhlIG1pY3JvY29kZSBwYXRjaCB0byBiZSBhcHBsaWVk IGZyb20KdGhlIG1pY3JvY29kZSBjYWNoZS4gTm93LCB0aGUgcGF0Y2ggaXMgcGFzc2VkIGFzIGEg ZnVuY3Rpb24gYXJndW1lbnQgYW5kCmEgcGF0Y2ggaXMgY2FjaGVkIGZvciBjcHUtaG90cGx1ZyBh bmQgY3B1IHJlc3VtaW5nLCBvbmx5IGFmdGVyIGl0IGhhcwpiZWVuIGxvYWRlZCB0byBhIGNwdSB3 aXRob3V0IGFueSBlcnJvci4gQXMgYSBjb25zZXF1ZW5jZSwgdGhlCidtYXRjaF9jcHUnIGNoZWNr IGluIG1pY3JvY29kZV91cGRhdGVfY2FjaGUgaXMgcmVtb3ZlZCwgd2hpY2ggb3RoZXJ3aXNlCndv dWxkIGZhaWwuCgpBc3N1bWluZyB0aGF0IGFsbCBDUFVzIGhhdmUgdGhlIHNhbWUgc2lnbmF0dXJl LCBvbmUgcGF0Y2ggbWF0Y2hpbmcgd2l0aApjdXJyZW50IENQVSBzaG91bGQgbWF0Y2ggd2l0aCBv dGhlcnMuIFRoZW4gcGFyc2luZyBtaWNyb2NvZGUgb25seSBuZWVkcwp0byBiZSBkb25lIG9uY2U7 IGNwdV9yZXF1ZXN0X21pY3JvY29kZSgpIGlzIGFsc28gbW92ZWQgb3V0IG9mCm1pY3JvY29kZV91 cGRhdGVfY3B1KCkuCgpPbiBBTUQgc2lkZSwgc3ZtX2hvc3Rfb3N2d19pbml0KCkgaXMgc3VwcG9z ZWQgdG8gYmUgY2FsbGVkIGFmdGVyCm1pY3JvY29kZSB1cGRhdGUuIEFzIGFwcGx5X21pY3Jjb2Rl KCkgd29uJ3QgYmUgY2FsbGVkIGJ5CmNwdV9yZXF1ZXN0X21pY3JvY29kZSgpIG5vdywgc3ZtX2hv c3Rfb3N2d19pbml0KCkgaXMgbW92ZWQgdG8gdGhlCmVuZCBvZiBhcHBseV9taWNyb2NvZGUoKS4K ClNpZ25lZC1vZmYtYnk6IENoYW8gR2FvIDxjaGFvLmdhb0BpbnRlbC5jb20+Ci0tLQpDaGFuZ2Vz IGluIHY3OgogLSB0byBoYW5kbGUgbG9hZCBmYWlsdXJlLCB1bnZhbGlkYXRlZCBwYXRjaGVzIHdv bid0IGJlIGNhY2hlZC4gVGhleQogYXJlIHBhc3NlZCBhcyBmdW5jdGlvbiBhcmd1bWVudHMuIFNv IGlmIHVwZGF0ZSBmYWlsZWQsIHdlIG5lZWRuJ3QKIGFueSBjbGVhbnVwIHRvIG1pY3JvY29kZSBj YWNoZS4KIC0gbWljcm9jb2RlX2luZm8gd2hpY2ggcGFzc2VzIG1pY3JvY29kZSBibG9iIHRvIGJl IHBhcnNlZCB0byBlYWNoIENQVSBpcwogcmVwbGFjZWQgYnkgbWljcm9jb2RlX3BhdGNoLgoKQ2hh bmdlcyBpbiB2NjoKIC0gZHVyaW5nIGVhcmx5IG1pY3JvY29kZSB1cGRhdGUsIEJTUCBhbmQgQVBz IGNhbGwgZGlmZmVyZW50IGZ1bmN0aW9ucy4KICAgVGh1cyBBUCBjYW4gYnlwYXNzIHBhcnNpbmcg bWljcm9jb2RlIGJsb2IuCi0tLQogeGVuL2FyY2gveDg2L2FjcGkvcG93ZXIuYyAgICAgICB8ICAg MiArLQogeGVuL2FyY2gveDg2L21pY3JvY29kZS5jICAgICAgICB8IDIwOSArKysrKysrKysrKysr KysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tCiB4ZW4vYXJjaC94ODYvbWljcm9jb2RlX2FtZC5j ICAgIHwgIDQxICsrKystLS0tCiB4ZW4vYXJjaC94ODYvbWljcm9jb2RlX2ludGVsLmMgIHwgIDY5 ICsrKysrKy0tLS0tLS0KIHhlbi9hcmNoL3g4Ni9zbXBib290LmMgICAgICAgICAgfCAgIDUgKy0K IHhlbi9pbmNsdWRlL2FzbS14ODYvbWljcm9jb2RlLmggfCAgIDggKy0KIHhlbi9pbmNsdWRlL2Fz bS14ODYvcHJvY2Vzc29yLmggfCAgIDMgKy0KIDcgZmlsZXMgY2hhbmdlZCwgMTkzIGluc2VydGlv bnMoKyksIDE0NCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvYWNwaS9w b3dlci5jIGIveGVuL2FyY2gveDg2L2FjcGkvcG93ZXIuYwppbmRleCA0ZjIxOTAzLi45NTgzMTcy IDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvYWNwaS9wb3dlci5jCisrKyBiL3hlbi9hcmNoL3g4 Ni9hY3BpL3Bvd2VyLmMKQEAgLTI1Myw3ICsyNTMsNyBAQCBzdGF0aWMgaW50IGVudGVyX3N0YXRl KHUzMiBzdGF0ZSkKIAogICAgIGNvbnNvbGVfZW5kX3N5bmMoKTsKIAotICAgIG1pY3JvY29kZV9y ZXN1bWVfY3B1KCk7CisgICAgZWFybHlfbWljcm9jb2RlX3VwZGF0ZV9jcHUoKTsKIAogICAgIGlm ICggIXJlY2hlY2tfY3B1X2ZlYXR1cmVzKDApICkKICAgICAgICAgcGFuaWMoIk1pc3NpbmcgcHJl dmlvdXNseSBhdmFpbGFibGUgZmVhdHVyZShzKVxuIik7CmRpZmYgLS1naXQgYS94ZW4vYXJjaC94 ODYvbWljcm9jb2RlLmMgYi94ZW4vYXJjaC94ODYvbWljcm9jb2RlLmMKaW5kZXggMTZhNmQ1MC4u MjNjZjU1MCAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L21pY3JvY29kZS5jCisrKyBiL3hlbi9h cmNoL3g4Ni9taWNyb2NvZGUuYwpAQCAtMTg5LDM2ICsxODksNjIgQEAgc3RhdGljIERFRklORV9T UElOTE9DSyhtaWNyb2NvZGVfbXV0ZXgpOwogCiBERUZJTkVfUEVSX0NQVShzdHJ1Y3QgY3B1X3Np Z25hdHVyZSwgY3B1X3NpZyk7CiAKLXN0cnVjdCBtaWNyb2NvZGVfaW5mbyB7Ci0gICAgdW5zaWdu ZWQgaW50IGNwdTsKLSAgICB1aW50MzJfdCBidWZmZXJfc2l6ZTsKLSAgICBpbnQgZXJyb3I7Ci0g ICAgY2hhciBidWZmZXJbMV07Ci19OworLyoKKyAqIFJldHVybiB0aGUgcGF0Y2ggd2l0aCB0aGUg aGlnaGVzdCByZXZpc2lvbiBpZCBhbW9uZyBhbGwgbWF0Y2hpbmcKKyAqIHBhdGNoZXMgaW4gdGhl IGJsb2IuIFJldHVybiBOVUxMIGlmIG5vIHN1aXRhYmxlIHBhdGNoLgorICovCitzdGF0aWMgc3Ry dWN0IG1pY3JvY29kZV9wYXRjaCAqbWljcm9jb2RlX3BhcnNlX2Jsb2IoY29uc3QgY2hhciAqYnVm LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVp bnQzMl90IGxlbikKK3sKKyAgICBpZiAoIGxpa2VseSghbWljcm9jb2RlX29wcy0+Y29sbGVjdF9j cHVfaW5mbygmdGhpc19jcHUoY3B1X3NpZykpKSApCisgICAgICAgIHJldHVybiBtaWNyb2NvZGVf b3BzLT5jcHVfcmVxdWVzdF9taWNyb2NvZGUoYnVmLCBsZW4pOwogCi1pbnQgbWljcm9jb2RlX3Jl c3VtZV9jcHUodm9pZCkKKyAgICByZXR1cm4gTlVMTDsKK30KKworLyoKKyAqIExvYWQgYSBtaWNy b2NvZGUgdXBkYXRlIHRvIGN1cnJlbnQgQ1BVLgorICoKKyAqIElmIG5vIHBhdGNoIGlzIHByb3Zp ZGVkLCB0aGUgY2FjaGVkIHBhdGNoIHdpbGwgYmUgbG9hZGVkLiBNaWNyb2NvZGUgdXBkYXRlCisg KiBkdXJpbmcgQVBzIGJyaW5ndXAgYW5kIENQVSByZXN1bWluZyBmYWxscyBpbnRvIHRoaXMgY2Fz ZS4KKyAqLworc3RhdGljIGludCBtaWNyb2NvZGVfdXBkYXRlX2NwdShzdHJ1Y3QgbWljcm9jb2Rl X3BhdGNoICpwYXRjaCkKIHsKLSAgICBpbnQgZXJyOwotICAgIHN0cnVjdCBjcHVfc2lnbmF0dXJl ICpzaWcgPSAmdGhpc19jcHUoY3B1X3NpZyk7CisgICAgaW50IHJldCA9IG1pY3JvY29kZV9vcHMt PmNvbGxlY3RfY3B1X2luZm8oJnRoaXNfY3B1KGNwdV9zaWcpKTsKIAotICAgIGlmICggIW1pY3Jv Y29kZV9vcHMgKQotICAgICAgICByZXR1cm4gMDsKKyAgICBpZiAoIHVubGlrZWx5KHJldCkgKQor ICAgICAgICByZXR1cm4gcmV0OwogCiAgICAgc3Bpbl9sb2NrKCZtaWNyb2NvZGVfbXV0ZXgpOwog Ci0gICAgZXJyID0gbWljcm9jb2RlX29wcy0+Y29sbGVjdF9jcHVfaW5mbyhzaWcpOwotICAgIGlm ICggbGlrZWx5KCFlcnIpICkKLSAgICAgICAgZXJyID0gbWljcm9jb2RlX29wcy0+YXBwbHlfbWlj cm9jb2RlKCk7Ci0gICAgc3Bpbl91bmxvY2soJm1pY3JvY29kZV9tdXRleCk7CisgICAgaWYgKCBw YXRjaCApCisgICAgeworICAgICAgICAvKgorICAgICAgICAgKiBJZiBhIHBhdGNoIGlzIHNwZWNp ZmllZCwgaXQgc2hvdWxkIGhhcyBuZXdlciByZXZpc2lvbiB0aGFuCisgICAgICAgICAqIHRoYXQg b2YgdGhlIHBhdGNoIGNhY2hlZC4KKyAgICAgICAgICovCisgICAgICAgIGlmICggbWljcm9jb2Rl X2NhY2hlICYmCisgICAgICAgICAgICAgbWljcm9jb2RlX29wcy0+Y29tcGFyZV9wYXRjaChwYXRj aCwgbWljcm9jb2RlX2NhY2hlKSAhPSBORVdfVUNPREUgKQorICAgICAgICB7CisgICAgICAgICAg ICBzcGluX3VubG9jaygmbWljcm9jb2RlX211dGV4KTsKKyAgICAgICAgICAgIHJldHVybiAtRUlO VkFMOworICAgICAgICB9CiAKLSAgICByZXR1cm4gZXJyOwotfQorICAgICAgICByZXQgPSBtaWNy b2NvZGVfb3BzLT5hcHBseV9taWNyb2NvZGUocGF0Y2gpOworICAgIH0KKyAgICBlbHNlIGlmICgg bWljcm9jb2RlX2NhY2hlICkKKyAgICB7CisgICAgICAgIHJldCA9IG1pY3JvY29kZV9vcHMtPmFw cGx5X21pY3JvY29kZShtaWNyb2NvZGVfY2FjaGUpOworICAgICAgICBpZiAoIHJldCA9PSAtRUlP ICkKKyAgICAgICAgICAgIHByaW50aygiVXBkYXRlIGZhaWxlZC4gUmVib290IG5lZWRlZFxuIik7 CisgICAgfQorICAgIGVsc2UKKyAgICAgICAgLyogTm8gcGF0Y2ggdG8gdXBkYXRlICovCisgICAg ICAgIHJldCA9IC1FSU5WQUw7CiAKLWNvbnN0IHN0cnVjdCBtaWNyb2NvZGVfcGF0Y2ggKm1pY3Jv Y29kZV9nZXRfY2FjaGUodm9pZCkKLXsKLSAgICBBU1NFUlQoc3Bpbl9pc19sb2NrZWQoJm1pY3Jv Y29kZV9tdXRleCkpOworICAgIHNwaW5fdW5sb2NrKCZtaWNyb2NvZGVfbXV0ZXgpOwogCi0gICAg cmV0dXJuIG1pY3JvY29kZV9jYWNoZTsKKyAgICByZXR1cm4gcmV0OwogfQogCiAvKiBSZXR1cm4g dHJ1ZSBpZiBjYWNoZSBnZXRzIHVwZGF0ZWQuIE90aGVyd2lzZSwgcmV0dXJuIGZhbHNlICovCkBA IC0yMjcsOSArMjUzLDYgQEAgYm9vbCBtaWNyb2NvZGVfdXBkYXRlX2NhY2hlKHN0cnVjdCBtaWNy b2NvZGVfcGF0Y2ggKnBhdGNoKQogCiAgICAgQVNTRVJUKHNwaW5faXNfbG9ja2VkKCZtaWNyb2Nv ZGVfbXV0ZXgpKTsKIAotICAgIGlmICggIW1pY3JvY29kZV9vcHMtPm1hdGNoX2NwdShwYXRjaCkg KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KICAgICBpZiAoICFtaWNyb2NvZGVfY2FjaGUgKQog ICAgICAgICBtaWNyb2NvZGVfY2FjaGUgPSBwYXRjaDsKICAgICBlbHNlIGlmICggbWljcm9jb2Rl X29wcy0+Y29tcGFyZV9wYXRjaChwYXRjaCwgbWljcm9jb2RlX2NhY2hlKSA9PQpAQCAtMjQ3LDQ2 ICsyNzAsMzIgQEAgYm9vbCBtaWNyb2NvZGVfdXBkYXRlX2NhY2hlKHN0cnVjdCBtaWNyb2NvZGVf cGF0Y2ggKnBhdGNoKQogICAgIHJldHVybiB0cnVlOwogfQogCi1zdGF0aWMgaW50IG1pY3JvY29k ZV91cGRhdGVfY3B1KGNvbnN0IHZvaWQgKmJ1Ziwgc2l6ZV90IHNpemUpCitzdGF0aWMgbG9uZyBk b19taWNyb2NvZGVfdXBkYXRlKHZvaWQgKnBhdGNoKQogewotICAgIGludCBlcnI7Ci0gICAgdW5z aWduZWQgaW50IGNwdSA9IHNtcF9wcm9jZXNzb3JfaWQoKTsKLSAgICBzdHJ1Y3QgY3B1X3NpZ25h dHVyZSAqc2lnID0gJnBlcl9jcHUoY3B1X3NpZywgY3B1KTsKLQotICAgIHNwaW5fbG9jaygmbWlj cm9jb2RlX211dGV4KTsKKyAgICBpbnQgZXJyb3IsIGNwdTsKIAotICAgIGVyciA9IG1pY3JvY29k ZV9vcHMtPmNvbGxlY3RfY3B1X2luZm8oc2lnKTsKLSAgICBpZiAoIGxpa2VseSghZXJyKSApCi0g ICAgICAgIGVyciA9IG1pY3JvY29kZV9vcHMtPmNwdV9yZXF1ZXN0X21pY3JvY29kZShidWYsIHNp emUpOwotICAgIHNwaW5fdW5sb2NrKCZtaWNyb2NvZGVfbXV0ZXgpOwotCi0gICAgcmV0dXJuIGVy cjsKLX0KLQotc3RhdGljIGxvbmcgZG9fbWljcm9jb2RlX3VwZGF0ZSh2b2lkICpfaW5mbykKLXsK LSAgICBzdHJ1Y3QgbWljcm9jb2RlX2luZm8gKmluZm8gPSBfaW5mbzsKLSAgICBpbnQgZXJyb3I7 CisgICAgZXJyb3IgPSBtaWNyb2NvZGVfdXBkYXRlX2NwdShwYXRjaCk7CisgICAgaWYgKCBlcnJv ciApCisgICAgeworICAgICAgICBtaWNyb2NvZGVfb3BzLT5mcmVlX3BhdGNoKG1pY3JvY29kZV9j YWNoZSk7CisgICAgICAgIHJldHVybiBlcnJvcjsKKyAgICB9CiAKLSAgICBCVUdfT04oaW5mby0+ Y3B1ICE9IHNtcF9wcm9jZXNzb3JfaWQoKSk7CiAKLSAgICBlcnJvciA9IG1pY3JvY29kZV91cGRh dGVfY3B1KGluZm8tPmJ1ZmZlciwgaW5mby0+YnVmZmVyX3NpemUpOwotICAgIGlmICggZXJyb3Ig KQotICAgICAgICBpbmZvLT5lcnJvciA9IGVycm9yOworICAgIGNwdSA9IGNwdW1hc2tfbmV4dChz bXBfcHJvY2Vzc29yX2lkKCksICZjcHVfb25saW5lX21hcCk7CisgICAgaWYgKCBjcHUgPCBucl9j cHVfaWRzICkKKyAgICAgICAgcmV0dXJuIGNvbnRpbnVlX2h5cGVyY2FsbF9vbl9jcHUoY3B1LCBk b19taWNyb2NvZGVfdXBkYXRlLCBwYXRjaCk7CiAKLSAgICBpbmZvLT5jcHUgPSBjcHVtYXNrX25l eHQoaW5mby0+Y3B1LCAmY3B1X29ubGluZV9tYXApOwotICAgIGlmICggaW5mby0+Y3B1IDwgbnJf Y3B1X2lkcyApCi0gICAgICAgIHJldHVybiBjb250aW51ZV9oeXBlcmNhbGxfb25fY3B1KGluZm8t PmNwdSwgZG9fbWljcm9jb2RlX3VwZGF0ZSwgaW5mbyk7CisgICAgbWljcm9jb2RlX3VwZGF0ZV9j YWNoZShwYXRjaCk7CiAKLSAgICBlcnJvciA9IGluZm8tPmVycm9yOwotICAgIHhmcmVlKGluZm8p OwogICAgIHJldHVybiBlcnJvcjsKIH0KIAogaW50IG1pY3JvY29kZV91cGRhdGUoWEVOX0dVRVNU X0hBTkRMRV9QQVJBTShjb25zdF92b2lkKSBidWYsIHVuc2lnbmVkIGxvbmcgbGVuKQogewogICAg IGludCByZXQ7Ci0gICAgc3RydWN0IG1pY3JvY29kZV9pbmZvICppbmZvOworICAgIHZvaWQgKmJ1 ZmZlcjsKKyAgICBzdHJ1Y3QgbWljcm9jb2RlX3BhdGNoICpwYXRjaDsKIAogICAgIGlmICggbGVu ICE9ICh1aW50MzJfdClsZW4gKQogICAgICAgICByZXR1cm4gLUUyQklHOwpAQCAtMjk0LDMyICsz MDMsNDkgQEAgaW50IG1pY3JvY29kZV91cGRhdGUoWEVOX0dVRVNUX0hBTkRMRV9QQVJBTShjb25z dF92b2lkKSBidWYsIHVuc2lnbmVkIGxvbmcgbGVuKQogICAgIGlmICggbWljcm9jb2RlX29wcyA9 PSBOVUxMICkKICAgICAgICAgcmV0dXJuIC1FSU5WQUw7CiAKLSAgICBpbmZvID0geG1hbGxvY19i eXRlcyhzaXplb2YoKmluZm8pICsgbGVuKTsKLSAgICBpZiAoIGluZm8gPT0gTlVMTCApCi0gICAg ICAgIHJldHVybiAtRU5PTUVNOwotCi0gICAgcmV0ID0gY29weV9mcm9tX2d1ZXN0KGluZm8tPmJ1 ZmZlciwgYnVmLCBsZW4pOwotICAgIGlmICggcmV0ICE9IDAgKQorICAgIGJ1ZmZlciA9IHhtYWxs b2NfYnl0ZXMobGVuKTsKKyAgICBpZiAoICFidWZmZXIgKQogICAgIHsKLSAgICAgICAgeGZyZWUo aW5mbyk7Ci0gICAgICAgIHJldHVybiByZXQ7CisgICAgICAgIHJldCA9IC1FTk9NRU07CisgICAg ICAgIGdvdG8gZnJlZTsKICAgICB9CiAKLSAgICBpbmZvLT5idWZmZXJfc2l6ZSA9IGxlbjsKLSAg ICBpbmZvLT5lcnJvciA9IDA7Ci0gICAgaW5mby0+Y3B1ID0gY3B1bWFza19maXJzdCgmY3B1X29u bGluZV9tYXApOworICAgIGlmICggY29weV9mcm9tX2d1ZXN0KGJ1ZmZlciwgYnVmLCBsZW4pICkK KyAgICB7CisgICAgICAgIHJldCA9IC1FRkFVTFQ7CisgICAgICAgIGdvdG8gZnJlZTsKKyAgICB9 CiAKICAgICBpZiAoIG1pY3JvY29kZV9vcHMtPnN0YXJ0X3VwZGF0ZSApCiAgICAgewogICAgICAg ICByZXQgPSBtaWNyb2NvZGVfb3BzLT5zdGFydF91cGRhdGUoKTsKICAgICAgICAgaWYgKCByZXQg IT0gMCApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHhmcmVlKGluZm8pOwotICAgICAgICAgICAg cmV0dXJuIHJldDsKLSAgICAgICAgfQorICAgICAgICAgICAgZ290byBmcmVlOwogICAgIH0KIAot ICAgIHJldHVybiBjb250aW51ZV9oeXBlcmNhbGxfb25fY3B1KGluZm8tPmNwdSwgZG9fbWljcm9j b2RlX3VwZGF0ZSwgaW5mbyk7CisgICAgcGF0Y2ggPSBtaWNyb2NvZGVfcGFyc2VfYmxvYihidWZm ZXIsIGxlbik7CisgICAgaWYgKCBJU19FUlIocGF0Y2gpICkKKyAgICB7CisgICAgICAgIHByaW50 ayhYRU5MT0dfRVJSICJQYXJzaW5nIG1pY3JvY29kZSBibG9iIGVycm9yICVsZFxuIiwgUFRSX0VS UihwYXRjaCkpOworICAgICAgICByZXQgPSBQVFJfRVJSKHBhdGNoKTsKKyAgICAgICAgZ290byBm cmVlOworICAgIH0KKworICAgIGlmICggIW1pY3JvY29kZV9vcHMtPm1hdGNoX2NwdShwYXRjaCkg KQorICAgIHsKKyAgICAgICAgcHJpbnRrKFhFTkxPR19FUlIgIk5vIG1hdGNoaW5nIG9yIG5ld2Vy IHVjb2RlIGZvdW5kLiBVcGRhdGUgYWJvcnRlZCFcbiIpOworICAgICAgICBpZiAoIHBhdGNoICkK KyAgICAgICAgICAgIG1pY3JvY29kZV9vcHMtPmZyZWVfcGF0Y2gocGF0Y2gpOworICAgICAgICBy ZXQgPSAtRUlOVkFMOworICAgICAgICBnb3RvIGZyZWU7CisgICAgfQorCisgICAgcmV0ID0gY29u dGludWVfaHlwZXJjYWxsX29uX2NwdShjcHVtYXNrX2ZpcnN0KCZjcHVfb25saW5lX21hcCksCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb19taWNyb2NvZGVfdXBkYXRlLCBw YXRjaCk7CisKKyBmcmVlOgorICAgIHhmcmVlKGJ1ZmZlcik7CisgICAgcmV0dXJuIHJldDsKIH0K IAogc3RhdGljIGludCBfX2luaXQgbWljcm9jb2RlX2luaXQodm9pZCkKQEAgLTM0NCw3ICszNzAs MTYgQEAgc3RhdGljIGludCBfX2luaXQgbWljcm9jb2RlX2luaXQodm9pZCkKIH0KIF9faW5pdGNh bGwobWljcm9jb2RlX2luaXQpOwogCi1pbnQgX19pbml0IGVhcmx5X21pY3JvY29kZV91cGRhdGVf Y3B1KGJvb2wgc3RhcnRfdXBkYXRlKQoraW50IGVhcmx5X21pY3JvY29kZV91cGRhdGVfY3B1KHZv aWQpCit7CisgICAgcmV0dXJuIG1pY3JvY29kZV9vcHMgPyBtaWNyb2NvZGVfdXBkYXRlX2NwdShO VUxMKSA6IDA7Cit9CisKKy8qCisgKiBCU1AgbmVlZHMgdG8gcGFyc2UgdGhlIHVjb2RlIGJsb2Ig YW5kIHRoZW4gYXBwbHkgYW4gdXBkYXRlLgorICogQVBzIGp1c3QgYXBwbHkgYW4gdXBkYXRlIGJ5 IGNhbGxpbmcgZWFybHlfbWljcm9jb2RlX3VwZGF0ZV9jcHUoKS4KKyAqLworc3RhdGljIGludCBf X2luaXQgZWFybHlfbWljcm9jb2RlX3BhcnNlX2FuZF91cGRhdGVfY3B1KHZvaWQpCiB7CiAgICAg aW50IHJjID0gMDsKICAgICB2b2lkICpkYXRhID0gTlVMTDsKQEAgLTM2MiwxMyArMzk3LDQxIEBA IGludCBfX2luaXQgZWFybHlfbWljcm9jb2RlX3VwZGF0ZV9jcHUoYm9vbCBzdGFydF91cGRhdGUp CiAgICAgfQogICAgIGlmICggZGF0YSApCiAgICAgewotICAgICAgICBpZiAoIHN0YXJ0X3VwZGF0 ZSAmJiBtaWNyb2NvZGVfb3BzLT5zdGFydF91cGRhdGUgKQorICAgICAgICBzdHJ1Y3QgbWljcm9j b2RlX3BhdGNoICpwYXRjaDsKKworICAgICAgICBpZiAoIG1pY3JvY29kZV9vcHMtPnN0YXJ0X3Vw ZGF0ZSApCiAgICAgICAgICAgICByYyA9IG1pY3JvY29kZV9vcHMtPnN0YXJ0X3VwZGF0ZSgpOwog CiAgICAgICAgIGlmICggcmMgKQogICAgICAgICAgICAgcmV0dXJuIHJjOwogCi0gICAgICAgIHJl dHVybiBtaWNyb2NvZGVfdXBkYXRlX2NwdShkYXRhLCBsZW4pOworICAgICAgICBwYXRjaCA9IG1p Y3JvY29kZV9wYXJzZV9ibG9iKGRhdGEsIGxlbik7CisgICAgICAgIGlmICggSVNfRVJSKHBhdGNo KSApCisgICAgICAgIHsKKyAgICAgICAgICAgIHByaW50ayhYRU5MT0dfRVJSICJQYXJzaW5nIG1p Y3JvY29kZSBibG9iIGVycm9yICVsZFxuIiwKKyAgICAgICAgICAgICAgICAgICBQVFJfRVJSKHBh dGNoKSk7CisgICAgICAgICAgICByZXR1cm4gUFRSX0VSUihwYXRjaCk7CisgICAgICAgIH0KKwor ICAgICAgICBpZiAoICFtaWNyb2NvZGVfb3BzLT5tYXRjaF9jcHUocGF0Y2gpICkKKyAgICAgICAg eworICAgICAgICAgICAgcHJpbnRrKFhFTkxPR19FUlIgIk5vIG1hdGNoaW5nIG9yIG5ld2VyIHVj b2RlIGZvdW5kLiBVcGRhdGUgYWJvcnRlZCFcbiIpOworICAgICAgICAgICAgaWYgKCBwYXRjaCAp CisgICAgICAgICAgICAgICAgbWljcm9jb2RlX29wcy0+ZnJlZV9wYXRjaChwYXRjaCk7CisgICAg ICAgICAgICByZXR1cm4gLUVJTlZBTDsKKyAgICAgICAgfQorCisgICAgICAgIHJjID0gbWljcm9j b2RlX3VwZGF0ZV9jcHUocGF0Y2gpOworICAgICAgICBpZiAoICFyYyApCisgICAgICAgIHsKKyAg ICAgICAgICAgIHNwaW5fbG9jaygmbWljcm9jb2RlX211dGV4KTsKKyAgICAgICAgICAgIG1pY3Jv Y29kZV91cGRhdGVfY2FjaGUocGF0Y2gpOworICAgICAgICAgICAgc3Bpbl91bmxvY2soJm1pY3Jv Y29kZV9tdXRleCk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbWljcm9j b2RlX29wcy0+ZnJlZV9wYXRjaChwYXRjaCk7CisKKyAgICAgICAgcmV0dXJuIHJjOwogICAgIH0K ICAgICBlbHNlCiAgICAgICAgIHJldHVybiAtRU5PTUVNOwpAQCAtMzg3LDggKzQ1MCwxMCBAQCBp bnQgX19pbml0IGVhcmx5X21pY3JvY29kZV9pbml0KHZvaWQpCiAgICAgICAgIHJldHVybiByYzsK IAogICAgIGlmICggbWljcm9jb2RlX29wcyApCisgICAgewogICAgICAgICBpZiAoIHVjb2RlX21v ZC5tb2RfZW5kIHx8IHVjb2RlX2Jsb2Iuc2l6ZSApCi0gICAgICAgICAgICByYyA9IGVhcmx5X21p Y3JvY29kZV91cGRhdGVfY3B1KHRydWUpOworICAgICAgICAgICAgcmMgPSBlYXJseV9taWNyb2Nv ZGVfcGFyc2VfYW5kX3VwZGF0ZV9jcHUoKTsKKyAgICB9CiAKICAgICByZXR1cm4gcmM7CiB9CmRp ZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvbWljcm9jb2RlX2FtZC5jIGIveGVuL2FyY2gveDg2L21p Y3JvY29kZV9hbWQuYwppbmRleCAwMTQ0ZGYxLi5jODE5MDI4IDEwMDY0NAotLS0gYS94ZW4vYXJj aC94ODYvbWljcm9jb2RlX2FtZC5jCisrKyBiL3hlbi9hcmNoL3g4Ni9taWNyb2NvZGVfYW1kLmMK QEAgLTI0OSw3ICsyNDksNyBAQCBzdGF0aWMgZW51bSBtaWNyb2NvZGVfbWF0Y2hfcmVzdWx0IGNv bXBhcmVfcGF0Y2goCiAgICAgcmV0dXJuIE1JU19VQ09ERTsKIH0KIAotc3RhdGljIGludCBhcHBs eV9taWNyb2NvZGUodm9pZCkKK3N0YXRpYyBpbnQgYXBwbHlfbWljcm9jb2RlKGNvbnN0IHN0cnVj dCBtaWNyb2NvZGVfcGF0Y2ggKnBhdGNoKQogewogICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAg ICAgdWludDMyX3QgcmV2OwpAQCAtMjU3LDcgKzI1Nyw2IEBAIHN0YXRpYyBpbnQgYXBwbHlfbWlj cm9jb2RlKHZvaWQpCiAgICAgdW5zaWduZWQgaW50IGNwdSA9IHNtcF9wcm9jZXNzb3JfaWQoKTsK ICAgICBzdHJ1Y3QgY3B1X3NpZ25hdHVyZSAqc2lnID0gJnBlcl9jcHUoY3B1X3NpZywgY3B1KTsK ICAgICBjb25zdCBzdHJ1Y3QgbWljcm9jb2RlX2hlYWRlcl9hbWQgKmhkcjsKLSAgICBjb25zdCBz dHJ1Y3QgbWljcm9jb2RlX3BhdGNoICpwYXRjaCA9IG1pY3JvY29kZV9nZXRfY2FjaGUoKTsKIAog ICAgIGlmICggIW1hdGNoX2NwdShwYXRjaCkgKQogICAgICAgICByZXR1cm4gLUVJTlZBTDsKQEAg LTI5Miw2ICsyOTEsMTAgQEAgc3RhdGljIGludCBhcHBseV9taWNyb2NvZGUodm9pZCkKIAogICAg IHNpZy0+cmV2ID0gcmV2OwogCisjaWZkZWYgQ09ORklHX0hWTQorICAgIHN2bV9ob3N0X29zdndf aW5pdCgpOworI2VuZGlmCisKICAgICByZXR1cm4gMDsKIH0KIApAQCAtNDQ5LDkgKzQ1MiwxMSBA QCBzdGF0aWMgYm9vbCBjaGVja19maW5hbF9wYXRjaF9sZXZlbHModm9pZCkKICAgICByZXR1cm4g MDsKIH0KIAotc3RhdGljIGludCBjcHVfcmVxdWVzdF9taWNyb2NvZGUoY29uc3Qgdm9pZCAqYnVm LCBzaXplX3QgYnVmc2l6ZSkKK3N0YXRpYyBzdHJ1Y3QgbWljcm9jb2RlX3BhdGNoICpjcHVfcmVx dWVzdF9taWNyb2NvZGUoY29uc3Qgdm9pZCAqYnVmLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgYnVmc2l6ZSkKIHsKICAgICBzdHJ1 Y3QgbWljcm9jb2RlX2FtZCAqbWNfYW1kOworICAgIHN0cnVjdCBtaWNyb2NvZGVfcGF0Y2ggKnBh dGNoID0gTlVMTDsKICAgICBzaXplX3Qgb2Zmc2V0ID0gMDsKICAgICBpbnQgZXJyb3IgPSAwOwog ICAgIHVuc2lnbmVkIGludCBjdXJyZW50X2NwdV9pZDsKQEAgLTU1MSwxNyArNTU2LDE2IEBAIHN0 YXRpYyBpbnQgY3B1X3JlcXVlc3RfbWljcm9jb2RlKGNvbnN0IHZvaWQgKmJ1Ziwgc2l6ZV90IGJ1 ZnNpemUpCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCi0gICAgICAgIGlmICggbWF0 Y2hfY3B1KG5ld19wYXRjaCkgKQotICAgICAgICAgICAgbWljcm9jb2RlX3VwZGF0ZV9jYWNoZShu ZXdfcGF0Y2gpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBmcmVlX3BhdGNoKG5ld19wYXRj aCk7Ci0KLSAgICAgICAgaWYgKCBtYXRjaF9jcHUobWljcm9jb2RlX2dldF9jYWNoZSgpKSApCisg ICAgICAgIC8qIENvbXBhcmUgcGF0Y2hlcyBhbmQgc3RvcmUgdGhlIG9uZSB3aXRoIGhpZ2hlciBy ZXZpc2lvbiAqLworICAgICAgICBpZiAoICFwYXRjaCAmJiBtYXRjaF9jcHUobmV3X3BhdGNoKSAp CisgICAgICAgICAgICBwYXRjaCA9IG5ld19wYXRjaDsKKyAgICAgICAgZWxzZSBpZiAoIHBhdGNo ICYmIChjb21wYXJlX3BhdGNoKG5ld19wYXRjaCwgcGF0Y2gpID09IE5FV19VQ09ERSkgKQogICAg ICAgICB7Ci0gICAgICAgICAgICBlcnJvciA9IGFwcGx5X21pY3JvY29kZSgpOwotICAgICAgICAg ICAgaWYgKCBlcnJvciApCi0gICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBmcmVl X3BhdGNoKHBhdGNoKTsKKyAgICAgICAgICAgIHBhdGNoID0gbmV3X3BhdGNoOwogICAgICAgICB9 CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGZyZWVfcGF0Y2gobmV3X3BhdGNoKTsKIAogICAg ICAgICBpZiAoIG9mZnNldCA+PSBidWZzaXplICkKICAgICAgICAgICAgIGJyZWFrOwpAQCAtNTky LDE3ICs1OTYsMTAgQEAgc3RhdGljIGludCBjcHVfcmVxdWVzdF9taWNyb2NvZGUoY29uc3Qgdm9p ZCAqYnVmLCBzaXplX3QgYnVmc2l6ZSkKICAgICB9CiAKICAgb3V0OgotI2lmIENPTkZJR19IVk0K LSAgICBzdm1faG9zdF9vc3Z3X2luaXQoKTsKLSNlbmRpZgorICAgIGlmICggZXJyb3IgJiYgIXBh dGNoICkKKyAgICAgICAgcGF0Y2ggPSBFUlJfUFRSKGVycm9yKTsKIAotICAgIC8qCi0gICAgICog SW4gc29tZSBjYXNlcyB3ZSBtYXkgcmV0dXJuIGFuIGVycm9yIGV2ZW4gaWYgcHJvY2Vzc29yJ3Mg bWljcm9jb2RlIGhhcwotICAgICAqIGJlZW4gdXBkYXRlZC4gRm9yIGV4YW1wbGUsIHRoZSBmaXJz dCBwYXRjaCBpbiBhIGNvbnRhaW5lciBmaWxlIGlzIGxvYWRlZAotICAgICAqIHN1Y2Nlc3NmdWxs eSBidXQgc3Vic2VxdWVudCBjb250YWluZXIgZmlsZSBwcm9jZXNzaW5nIGVuY291bnRlcnMgYQot ICAgICAqIGZhaWx1cmUuCi0gICAgICovCi0gICAgcmV0dXJuIGVycm9yOworICAgIHJldHVybiBw YXRjaDsKIH0KIAogc3RhdGljIGludCBzdGFydF91cGRhdGUodm9pZCkKZGlmZiAtLWdpdCBhL3hl bi9hcmNoL3g4Ni9taWNyb2NvZGVfaW50ZWwuYyBiL3hlbi9hcmNoL3g4Ni9taWNyb2NvZGVfaW50 ZWwuYwppbmRleCBiNjY4NDRkLi42NTA0OTVkIDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvbWlj cm9jb2RlX2ludGVsLmMKKysrIGIveGVuL2FyY2gveDg2L21pY3JvY29kZV9pbnRlbC5jCkBAIC0y NzMsNDYgKzI3MywyNyBAQCBzdGF0aWMgZW51bSBtaWNyb2NvZGVfbWF0Y2hfcmVzdWx0IGNvbXBh cmVfcGF0Y2goCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2xkX2hlYWRlci0+ cGYsIG9sZF9oZWFkZXItPnJldik7CiB9CiAKLS8qCi0gKiByZXR1cm4gMCAtIG5vIHVwZGF0ZSBm b3VuZAotICogcmV0dXJuIDEgLSBmb3VuZCB1cGRhdGUKLSAqIHJldHVybiA8IDAgLSBlcnJvcgot ICovCi1zdGF0aWMgaW50IGdldF9tYXRjaGluZ19taWNyb2NvZGUoY29uc3Qgdm9pZCAqbWMpCitz dGF0aWMgc3RydWN0IG1pY3JvY29kZV9wYXRjaCAqYWxsb3dfbWljcm9jb2RlX3BhdGNoKAorICAg IGNvbnN0IHN0cnVjdCBtaWNyb2NvZGVfaGVhZGVyX2ludGVsICptY19oZWFkZXIpCiB7Ci0gICAg Y29uc3Qgc3RydWN0IG1pY3JvY29kZV9oZWFkZXJfaW50ZWwgKm1jX2hlYWRlciA9IG1jOwogICAg IHVuc2lnbmVkIGxvbmcgdG90YWxfc2l6ZSA9IGdldF90b3RhbHNpemUobWNfaGVhZGVyKTsKICAg ICB2b2lkICpuZXdfbWMgPSB4bWFsbG9jX2J5dGVzKHRvdGFsX3NpemUpOwogICAgIHN0cnVjdCBt aWNyb2NvZGVfcGF0Y2ggKm5ld19wYXRjaCA9IHhtYWxsb2Moc3RydWN0IG1pY3JvY29kZV9wYXRj aCk7Ci0gICAgdW5zaWduZWQgaW50IF9fbWF5YmVfdW51c2VkIGNwdSA9IHNtcF9wcm9jZXNzb3Jf aWQoKTsKIAogICAgIGlmICggIW5ld19wYXRjaCB8fCAhbmV3X21jICkKICAgICB7CiAgICAgICAg IHhmcmVlKG5ld19wYXRjaCk7CiAgICAgICAgIHhmcmVlKG5ld19tYyk7CiAgICAgICAgIHByaW50 ayhYRU5MT0dfRVJSICJtaWNyb2NvZGU6IENhbiBub3QgYWxsb2NhdGUgbWVtb3J5XG4iKTsKLSAg ICAgICAgcmV0dXJuIC1FTk9NRU07CisgICAgICAgIHJldHVybiBFUlJfUFRSKC1FTk9NRU0pOwog ICAgIH0KLSAgICBtZW1jcHkobmV3X21jLCBtYywgdG90YWxfc2l6ZSk7CisgICAgbWVtY3B5KG5l d19tYywgbWNfaGVhZGVyLCB0b3RhbF9zaXplKTsKICAgICBuZXdfcGF0Y2gtPm1jX2ludGVsID0g bmV3X21jOwogCi0gICAgaWYgKCAhbWF0Y2hfY3B1KG5ld19wYXRjaCkgKQotICAgIHsKLSAgICAg ICAgZnJlZV9wYXRjaChuZXdfcGF0Y2gpOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0KLSAg ICBpZiAoICFtaWNyb2NvZGVfdXBkYXRlX2NhY2hlKG5ld19wYXRjaCkgKQotICAgICAgICByZXR1 cm4gMDsKLQotICAgIHByX2RlYnVnKCJtaWNyb2NvZGU6IENQVSVkIGZvdW5kIGEgbWF0Y2hpbmcg bWljcm9jb2RlIHVwZGF0ZSB3aXRoIgotICAgICAgICAgICAgICIgdmVyc2lvbiAlI3ggKGN1cnJl bnQ9JSN4KVxuIiwKLSAgICAgICAgICAgICBjcHUsIG1jX2hlYWRlci0+cmV2LCB0aGlzX2NwdShj cHVfc2lnKS5yZXYpOwotCi0gICAgcmV0dXJuIDE7CisgICAgcmV0dXJuIG5ld19wYXRjaDsKIH0K IAotc3RhdGljIGludCBhcHBseV9taWNyb2NvZGUodm9pZCkKK3N0YXRpYyBpbnQgYXBwbHlfbWlj cm9jb2RlKGNvbnN0IHN0cnVjdCBtaWNyb2NvZGVfcGF0Y2ggKnBhdGNoKQogewogICAgIHVuc2ln bmVkIGxvbmcgZmxhZ3M7CiAgICAgdWludDY0X3QgbXNyX2NvbnRlbnQ7CkBAIC0zMjAsNyArMzAx LDYgQEAgc3RhdGljIGludCBhcHBseV9taWNyb2NvZGUodm9pZCkKICAgICB1bnNpZ25lZCBpbnQg Y3B1X251bSA9IHJhd19zbXBfcHJvY2Vzc29yX2lkKCk7CiAgICAgc3RydWN0IGNwdV9zaWduYXR1 cmUgKnNpZyA9ICZ0aGlzX2NwdShjcHVfc2lnKTsKICAgICBjb25zdCBzdHJ1Y3QgbWljcm9jb2Rl X2ludGVsICptY19pbnRlbDsKLSAgICBjb25zdCBzdHJ1Y3QgbWljcm9jb2RlX3BhdGNoICpwYXRj aCA9IG1pY3JvY29kZV9nZXRfY2FjaGUoKTsKIAogICAgIGlmICggIW1hdGNoX2NwdShwYXRjaCkg KQogICAgICAgICByZXR1cm4gLUVJTlZBTDsKQEAgLTM4OCwyNiArMzY4LDM5IEBAIHN0YXRpYyBs b25nIGdldF9uZXh0X3Vjb2RlX2Zyb21fYnVmZmVyKHZvaWQgKiptYywgY29uc3QgdTggKmJ1ZiwK ICAgICByZXR1cm4gb2Zmc2V0ICsgdG90YWxfc2l6ZTsKIH0KIAotc3RhdGljIGludCBjcHVfcmVx dWVzdF9taWNyb2NvZGUoY29uc3Qgdm9pZCAqYnVmLCBzaXplX3Qgc2l6ZSkKK3N0YXRpYyBzdHJ1 Y3QgbWljcm9jb2RlX3BhdGNoICpjcHVfcmVxdWVzdF9taWNyb2NvZGUoY29uc3Qgdm9pZCAqYnVm LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz aXplX3Qgc2l6ZSkKIHsKICAgICBsb25nIG9mZnNldCA9IDA7CiAgICAgaW50IGVycm9yID0gMDsK ICAgICB2b2lkICptYzsKKyAgICBzdHJ1Y3QgbWljcm9jb2RlX3BhdGNoICpwYXRjaCA9IE5VTEw7 CiAKICAgICB3aGlsZSAoIChvZmZzZXQgPSBnZXRfbmV4dF91Y29kZV9mcm9tX2J1ZmZlcigmbWMs IGJ1Ziwgc2l6ZSwgb2Zmc2V0KSkgPiAwICkKICAgICB7CisgICAgICAgIHN0cnVjdCBtaWNyb2Nv ZGVfcGF0Y2ggKm5ld19wYXRjaDsKKwogICAgICAgICBlcnJvciA9IG1pY3JvY29kZV9zYW5pdHlf Y2hlY2sobWMpOwogICAgICAgICBpZiAoIGVycm9yICkKICAgICAgICAgICAgIGJyZWFrOwotICAg ICAgICBlcnJvciA9IGdldF9tYXRjaGluZ19taWNyb2NvZGUobWMpOwotICAgICAgICBpZiAoIGVy cm9yIDwgMCApCisKKyAgICAgICAgbmV3X3BhdGNoID0gYWxsb3dfbWljcm9jb2RlX3BhdGNoKG1j KTsKKyAgICAgICAgaWYgKCBJU19FUlIobmV3X3BhdGNoKSApCisgICAgICAgIHsKKyAgICAgICAg ICAgIGVycm9yID0gUFRSX0VSUihuZXdfcGF0Y2gpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAg ICAgIC8qCi0gICAgICAgICAqIEl0J3MgcG9zc2libGUgdGhlIGRhdGEgZmlsZSBoYXMgbXVsdGlw bGUgbWF0Y2hpbmcgdWNvZGUsCi0gICAgICAgICAqIGxldHMga2VlcCBzZWFyY2hpbmcgdGlsbCB0 aGUgbGF0ZXN0IHZlcnNpb24KLSAgICAgICAgICovCi0gICAgICAgIGlmICggZXJyb3IgPT0gMSAp Ci0gICAgICAgICAgICBlcnJvciA9IDA7CisgICAgICAgIH0KKworICAgICAgICAvKiBDb21wYXJl IHBhdGNoZXMgYW5kIHN0b3JlIHRoZSBvbmUgd2l0aCBoaWdoZXIgcmV2aXNpb24gKi8KKyAgICAg ICAgaWYgKCAhcGF0Y2ggJiYgbWF0Y2hfY3B1KG5ld19wYXRjaCkgKQorICAgICAgICAgICAgcGF0 Y2ggPSBuZXdfcGF0Y2g7CisgICAgICAgIGVsc2UgaWYgKCBwYXRjaCAmJiAoY29tcGFyZV9wYXRj aChuZXdfcGF0Y2gsIHBhdGNoKSA9PSBORVdfVUNPREUpICkKKyAgICAgICAgeworICAgICAgICAg ICAgZnJlZV9wYXRjaChwYXRjaCk7CisgICAgICAgICAgICBwYXRjaCA9IG5ld19wYXRjaDsKKyAg ICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgICAgICBmcmVlX3BhdGNoKG5ld19wYXRjaCk7 CiAKICAgICAgICAgeGZyZWUobWMpOwogICAgIH0KQEAgLTQxNiwxMCArNDA5LDEwIEBAIHN0YXRp YyBpbnQgY3B1X3JlcXVlc3RfbWljcm9jb2RlKGNvbnN0IHZvaWQgKmJ1Ziwgc2l6ZV90IHNpemUp CiAgICAgaWYgKCBvZmZzZXQgPCAwICkKICAgICAgICAgZXJyb3IgPSBvZmZzZXQ7CiAKLSAgICBp ZiAoICFlcnJvciAmJiBtYXRjaF9jcHUobWljcm9jb2RlX2dldF9jYWNoZSgpKSApCi0gICAgICAg IGVycm9yID0gYXBwbHlfbWljcm9jb2RlKCk7CisgICAgaWYgKCBlcnJvciAmJiAhcGF0Y2ggKQor ICAgICAgICBwYXRjaCA9IEVSUl9QVFIoZXJyb3IpOwogCi0gICAgcmV0dXJuIGVycm9yOworICAg IHJldHVybiBwYXRjaDsKIH0KIAogc3RhdGljIGNvbnN0IHN0cnVjdCBtaWNyb2NvZGVfb3BzIG1p Y3JvY29kZV9pbnRlbF9vcHMgPSB7CmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvc21wYm9vdC5j IGIveGVuL2FyY2gveDg2L3NtcGJvb3QuYwppbmRleCBkZTE5YjY3Li5jZDVmOWNjIDEwMDY0NAot LS0gYS94ZW4vYXJjaC94ODYvc21wYm9vdC5jCisrKyBiL3hlbi9hcmNoL3g4Ni9zbXBib290LmMK QEAgLTM2MywxMCArMzYzLDcgQEAgdm9pZCBzdGFydF9zZWNvbmRhcnkodm9pZCAqdW51c2VkKQog CiAgICAgaW5pdGlhbGl6ZV9jcHVfZGF0YShjcHUpOwogCi0gICAgaWYgKCBzeXN0ZW1fc3RhdGUg PD0gU1lTX1NUQVRFX3NtcF9ib290ICkKLSAgICAgICAgZWFybHlfbWljcm9jb2RlX3VwZGF0ZV9j cHUoZmFsc2UpOwotICAgIGVsc2UKLSAgICAgICAgbWljcm9jb2RlX3Jlc3VtZV9jcHUoKTsKKyAg ICBlYXJseV9taWNyb2NvZGVfdXBkYXRlX2NwdSgpOwogCiAgICAgLyoKICAgICAgKiBJZiBNU1Jf U1BFQ19DVFJMIGlzIGF2YWlsYWJsZSwgYXBwbHkgWGVuJ3MgZGVmYXVsdCBzZXR0aW5nIGFuZCBk aXNjYXJkCmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9hc20teDg2L21pY3JvY29kZS5oIGIveGVu L2luY2x1ZGUvYXNtLXg4Ni9taWNyb2NvZGUuaAppbmRleCBlNjg0MmQ0Li4zZmEzYWNkIDEwMDY0 NAotLS0gYS94ZW4vaW5jbHVkZS9hc20teDg2L21pY3JvY29kZS5oCisrKyBiL3hlbi9pbmNsdWRl L2FzbS14ODYvbWljcm9jb2RlLmgKQEAgLTE5LDkgKzE5LDEwIEBAIHN0cnVjdCBtaWNyb2NvZGVf cGF0Y2ggewogfTsKIAogc3RydWN0IG1pY3JvY29kZV9vcHMgewotICAgIGludCAoKmNwdV9yZXF1 ZXN0X21pY3JvY29kZSkoY29uc3Qgdm9pZCAqYnVmLCBzaXplX3Qgc2l6ZSk7CisgICAgc3RydWN0 IG1pY3JvY29kZV9wYXRjaCAqKCpjcHVfcmVxdWVzdF9taWNyb2NvZGUpKGNvbnN0IHZvaWQgKmJ1 ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg c2l6ZV90IHNpemUpOwogICAgIGludCAoKmNvbGxlY3RfY3B1X2luZm8pKHN0cnVjdCBjcHVfc2ln bmF0dXJlICpjc2lnKTsKLSAgICBpbnQgKCphcHBseV9taWNyb2NvZGUpKHZvaWQpOworICAgIGlu dCAoKmFwcGx5X21pY3JvY29kZSkoY29uc3Qgc3RydWN0IG1pY3JvY29kZV9wYXRjaCAqcGF0Y2gp OwogICAgIGludCAoKnN0YXJ0X3VwZGF0ZSkodm9pZCk7CiAgICAgdm9pZCAoKmZyZWVfcGF0Y2gp KHN0cnVjdCBtaWNyb2NvZGVfcGF0Y2ggKnBhdGNoKTsKICAgICBib29sICgqbWF0Y2hfY3B1KShj b25zdCBzdHJ1Y3QgbWljcm9jb2RlX3BhdGNoICpwYXRjaCk7CkBAIC0zOSw3ICs0MCw0IEBAIHN0 cnVjdCBjcHVfc2lnbmF0dXJlIHsKIERFQ0xBUkVfUEVSX0NQVShzdHJ1Y3QgY3B1X3NpZ25hdHVy ZSwgY3B1X3NpZyk7CiBleHRlcm4gY29uc3Qgc3RydWN0IG1pY3JvY29kZV9vcHMgKm1pY3JvY29k ZV9vcHM7CiAKLWNvbnN0IHN0cnVjdCBtaWNyb2NvZGVfcGF0Y2ggKm1pY3JvY29kZV9nZXRfY2Fj aGUodm9pZCk7Ci1ib29sIG1pY3JvY29kZV91cGRhdGVfY2FjaGUoc3RydWN0IG1pY3JvY29kZV9w YXRjaCAqcGF0Y2gpOwotCiAjZW5kaWYgLyogQVNNX1g4Nl9fTUlDUk9DT0RFX0ggKi8KZGlmZiAt LWdpdCBhL3hlbi9pbmNsdWRlL2FzbS14ODYvcHJvY2Vzc29yLmggYi94ZW4vaW5jbHVkZS9hc20t eDg2L3Byb2Nlc3Nvci5oCmluZGV4IDhiN2U0ODQuLmQ4NjY4ZTYgMTAwNjQ0Ci0tLSBhL3hlbi9p bmNsdWRlL2FzbS14ODYvcHJvY2Vzc29yLmgKKysrIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9wcm9j ZXNzb3IuaApAQCAtNTczLDggKzU3Myw3IEBAIGludCBndWVzdF93cm1zcl94ZW4oc3RydWN0IHZj cHUgKnYsIHVpbnQzMl90IGlkeCwgdWludDY0X3QgdmFsKTsKIAogdm9pZCBtaWNyb2NvZGVfc2V0 X21vZHVsZSh1bnNpZ25lZCBpbnQpOwogaW50IG1pY3JvY29kZV91cGRhdGUoWEVOX0dVRVNUX0hB TkRMRV9QQVJBTShjb25zdF92b2lkKSwgdW5zaWduZWQgbG9uZyBsZW4pOwotaW50IG1pY3JvY29k ZV9yZXN1bWVfY3B1KHZvaWQpOwotaW50IGVhcmx5X21pY3JvY29kZV91cGRhdGVfY3B1KGJvb2wg c3RhcnRfdXBkYXRlKTsKK2ludCBlYXJseV9taWNyb2NvZGVfdXBkYXRlX2NwdSh2b2lkKTsKIGlu dCBlYXJseV9taWNyb2NvZGVfaW5pdCh2b2lkKTsKIGludCBtaWNyb2NvZGVfaW5pdF9pbnRlbCh2 b2lkKTsKIGludCBtaWNyb2NvZGVfaW5pdF9hbWQodm9pZCk7Ci0tIAoxLjguMy4xCgoKX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxp bmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5w cm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3hlbi1kZXZlbA== From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.0 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 7A757C07542 for ; Mon, 27 May 2019 08:27:55 +0000 (UTC) Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 4C28C21734 for ; Mon, 27 May 2019 08:27:55 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 4C28C21734 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=intel.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=xen-devel-bounces@lists.xenproject.org Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1hVAyr-0004FH-Ad; Mon, 27 May 2019 08:27:41 +0000 Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1hVAyp-0004El-Vl for xen-devel@lists.xenproject.org; Mon, 27 May 2019 08:27:40 +0000 X-Inumbo-ID: 493a4e8e-8059-11e9-8980-bc764e045a96 Received: from mga12.intel.com (unknown [192.55.52.136]) by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS id 493a4e8e-8059-11e9-8980-bc764e045a96; Mon, 27 May 2019 08:27:38 +0000 (UTC) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga005.jf.intel.com ([10.7.209.41]) by fmsmga106.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 27 May 2019 01:27:37 -0700 X-ExtLoop1: 1 Received: from gao-cwp.sh.intel.com ([10.239.159.26]) by orsmga005.jf.intel.com with ESMTP; 27 May 2019 01:27:35 -0700 From: Chao Gao To: xen-devel@lists.xenproject.org Date: Mon, 27 May 2019 16:31:27 +0800 Message-Id: <1558945891-3015-7-git-send-email-chao.gao@intel.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1558945891-3015-1-git-send-email-chao.gao@intel.com> References: <1558945891-3015-1-git-send-email-chao.gao@intel.com> Subject: [Xen-devel] [PATCH v7 06/10] microcode: split out apply_microcode() from cpu_request_microcode() X-BeenThere: xen-devel@lists.xenproject.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Cc: Sergey Dyasli , Ashok Raj , Wei Liu , Andrew Cooper , Jan Beulich , Chao Gao , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: base64 Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" Message-ID: <20190527083127.2OmIcTotB8uf1JWTDhX4CWNKbjqKL22J6bm4Pzj3mwU@z> RHVyaW5nIGxhdGUgbWljcm9jb2RlIHVwZGF0ZSwgYXBwbHlfbWljcm9jb2RlKCkgaXMgaW52b2tl ZCBpbgpjcHVfcmVxdWVzdF9taWNyb2NvZGUoKS4gVG8gbWFrZSBsYXRlIG1pY3JvY29kZSB1cGRh dGUgbW9yZSByZWxpYWJsZSwKd2Ugd2FudCB0byBwdXQgdGhlIGFwcGx5X21pY3JvY29kZSgpIGlu dG8gc3RvcF9tYWNoaW5lIGNvbnRleHQuIFNvCndlIHNwbGl0IG91dCBpdCBmcm9tIGNwdV9yZXF1 ZXN0X21pY3JvY29kZSgpLiBBcyBhIGNvbnNlcXVlbmNlLAphcHBseV9taWNyb2NvZGUoKSBzaG91 bGQgYmUgaW52b2tlZCBleHBsaWNpdGx5IGluIHRoZSBjb21tb24gY29kZS4KClByZXZpb3VzbHks IGFwcGx5X21pY3JvY29kZSgpIGdldHMgdGhlIG1pY3JvY29kZSBwYXRjaCB0byBiZSBhcHBsaWVk IGZyb20KdGhlIG1pY3JvY29kZSBjYWNoZS4gTm93LCB0aGUgcGF0Y2ggaXMgcGFzc2VkIGFzIGEg ZnVuY3Rpb24gYXJndW1lbnQgYW5kCmEgcGF0Y2ggaXMgY2FjaGVkIGZvciBjcHUtaG90cGx1ZyBh bmQgY3B1IHJlc3VtaW5nLCBvbmx5IGFmdGVyIGl0IGhhcwpiZWVuIGxvYWRlZCB0byBhIGNwdSB3 aXRob3V0IGFueSBlcnJvci4gQXMgYSBjb25zZXF1ZW5jZSwgdGhlCidtYXRjaF9jcHUnIGNoZWNr IGluIG1pY3JvY29kZV91cGRhdGVfY2FjaGUgaXMgcmVtb3ZlZCwgd2hpY2ggb3RoZXJ3aXNlCndv dWxkIGZhaWwuCgpBc3N1bWluZyB0aGF0IGFsbCBDUFVzIGhhdmUgdGhlIHNhbWUgc2lnbmF0dXJl LCBvbmUgcGF0Y2ggbWF0Y2hpbmcgd2l0aApjdXJyZW50IENQVSBzaG91bGQgbWF0Y2ggd2l0aCBv dGhlcnMuIFRoZW4gcGFyc2luZyBtaWNyb2NvZGUgb25seSBuZWVkcwp0byBiZSBkb25lIG9uY2U7 IGNwdV9yZXF1ZXN0X21pY3JvY29kZSgpIGlzIGFsc28gbW92ZWQgb3V0IG9mCm1pY3JvY29kZV91 cGRhdGVfY3B1KCkuCgpPbiBBTUQgc2lkZSwgc3ZtX2hvc3Rfb3N2d19pbml0KCkgaXMgc3VwcG9z ZWQgdG8gYmUgY2FsbGVkIGFmdGVyCm1pY3JvY29kZSB1cGRhdGUuIEFzIGFwcGx5X21pY3Jjb2Rl KCkgd29uJ3QgYmUgY2FsbGVkIGJ5CmNwdV9yZXF1ZXN0X21pY3JvY29kZSgpIG5vdywgc3ZtX2hv c3Rfb3N2d19pbml0KCkgaXMgbW92ZWQgdG8gdGhlCmVuZCBvZiBhcHBseV9taWNyb2NvZGUoKS4K ClNpZ25lZC1vZmYtYnk6IENoYW8gR2FvIDxjaGFvLmdhb0BpbnRlbC5jb20+Ci0tLQpDaGFuZ2Vz IGluIHY3OgogLSB0byBoYW5kbGUgbG9hZCBmYWlsdXJlLCB1bnZhbGlkYXRlZCBwYXRjaGVzIHdv bid0IGJlIGNhY2hlZC4gVGhleQogYXJlIHBhc3NlZCBhcyBmdW5jdGlvbiBhcmd1bWVudHMuIFNv IGlmIHVwZGF0ZSBmYWlsZWQsIHdlIG5lZWRuJ3QKIGFueSBjbGVhbnVwIHRvIG1pY3JvY29kZSBj YWNoZS4KIC0gbWljcm9jb2RlX2luZm8gd2hpY2ggcGFzc2VzIG1pY3JvY29kZSBibG9iIHRvIGJl IHBhcnNlZCB0byBlYWNoIENQVSBpcwogcmVwbGFjZWQgYnkgbWljcm9jb2RlX3BhdGNoLgoKQ2hh bmdlcyBpbiB2NjoKIC0gZHVyaW5nIGVhcmx5IG1pY3JvY29kZSB1cGRhdGUsIEJTUCBhbmQgQVBz IGNhbGwgZGlmZmVyZW50IGZ1bmN0aW9ucy4KICAgVGh1cyBBUCBjYW4gYnlwYXNzIHBhcnNpbmcg bWljcm9jb2RlIGJsb2IuCi0tLQogeGVuL2FyY2gveDg2L2FjcGkvcG93ZXIuYyAgICAgICB8ICAg MiArLQogeGVuL2FyY2gveDg2L21pY3JvY29kZS5jICAgICAgICB8IDIwOSArKysrKysrKysrKysr KysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tCiB4ZW4vYXJjaC94ODYvbWljcm9jb2RlX2FtZC5j ICAgIHwgIDQxICsrKystLS0tCiB4ZW4vYXJjaC94ODYvbWljcm9jb2RlX2ludGVsLmMgIHwgIDY5 ICsrKysrKy0tLS0tLS0KIHhlbi9hcmNoL3g4Ni9zbXBib290LmMgICAgICAgICAgfCAgIDUgKy0K IHhlbi9pbmNsdWRlL2FzbS14ODYvbWljcm9jb2RlLmggfCAgIDggKy0KIHhlbi9pbmNsdWRlL2Fz bS14ODYvcHJvY2Vzc29yLmggfCAgIDMgKy0KIDcgZmlsZXMgY2hhbmdlZCwgMTkzIGluc2VydGlv bnMoKyksIDE0NCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvYWNwaS9w b3dlci5jIGIveGVuL2FyY2gveDg2L2FjcGkvcG93ZXIuYwppbmRleCA0ZjIxOTAzLi45NTgzMTcy IDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvYWNwaS9wb3dlci5jCisrKyBiL3hlbi9hcmNoL3g4 Ni9hY3BpL3Bvd2VyLmMKQEAgLTI1Myw3ICsyNTMsNyBAQCBzdGF0aWMgaW50IGVudGVyX3N0YXRl KHUzMiBzdGF0ZSkKIAogICAgIGNvbnNvbGVfZW5kX3N5bmMoKTsKIAotICAgIG1pY3JvY29kZV9y ZXN1bWVfY3B1KCk7CisgICAgZWFybHlfbWljcm9jb2RlX3VwZGF0ZV9jcHUoKTsKIAogICAgIGlm ICggIXJlY2hlY2tfY3B1X2ZlYXR1cmVzKDApICkKICAgICAgICAgcGFuaWMoIk1pc3NpbmcgcHJl dmlvdXNseSBhdmFpbGFibGUgZmVhdHVyZShzKVxuIik7CmRpZmYgLS1naXQgYS94ZW4vYXJjaC94 ODYvbWljcm9jb2RlLmMgYi94ZW4vYXJjaC94ODYvbWljcm9jb2RlLmMKaW5kZXggMTZhNmQ1MC4u MjNjZjU1MCAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L21pY3JvY29kZS5jCisrKyBiL3hlbi9h cmNoL3g4Ni9taWNyb2NvZGUuYwpAQCAtMTg5LDM2ICsxODksNjIgQEAgc3RhdGljIERFRklORV9T UElOTE9DSyhtaWNyb2NvZGVfbXV0ZXgpOwogCiBERUZJTkVfUEVSX0NQVShzdHJ1Y3QgY3B1X3Np Z25hdHVyZSwgY3B1X3NpZyk7CiAKLXN0cnVjdCBtaWNyb2NvZGVfaW5mbyB7Ci0gICAgdW5zaWdu ZWQgaW50IGNwdTsKLSAgICB1aW50MzJfdCBidWZmZXJfc2l6ZTsKLSAgICBpbnQgZXJyb3I7Ci0g ICAgY2hhciBidWZmZXJbMV07Ci19OworLyoKKyAqIFJldHVybiB0aGUgcGF0Y2ggd2l0aCB0aGUg aGlnaGVzdCByZXZpc2lvbiBpZCBhbW9uZyBhbGwgbWF0Y2hpbmcKKyAqIHBhdGNoZXMgaW4gdGhl IGJsb2IuIFJldHVybiBOVUxMIGlmIG5vIHN1aXRhYmxlIHBhdGNoLgorICovCitzdGF0aWMgc3Ry dWN0IG1pY3JvY29kZV9wYXRjaCAqbWljcm9jb2RlX3BhcnNlX2Jsb2IoY29uc3QgY2hhciAqYnVm LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVp bnQzMl90IGxlbikKK3sKKyAgICBpZiAoIGxpa2VseSghbWljcm9jb2RlX29wcy0+Y29sbGVjdF9j cHVfaW5mbygmdGhpc19jcHUoY3B1X3NpZykpKSApCisgICAgICAgIHJldHVybiBtaWNyb2NvZGVf b3BzLT5jcHVfcmVxdWVzdF9taWNyb2NvZGUoYnVmLCBsZW4pOwogCi1pbnQgbWljcm9jb2RlX3Jl c3VtZV9jcHUodm9pZCkKKyAgICByZXR1cm4gTlVMTDsKK30KKworLyoKKyAqIExvYWQgYSBtaWNy b2NvZGUgdXBkYXRlIHRvIGN1cnJlbnQgQ1BVLgorICoKKyAqIElmIG5vIHBhdGNoIGlzIHByb3Zp ZGVkLCB0aGUgY2FjaGVkIHBhdGNoIHdpbGwgYmUgbG9hZGVkLiBNaWNyb2NvZGUgdXBkYXRlCisg KiBkdXJpbmcgQVBzIGJyaW5ndXAgYW5kIENQVSByZXN1bWluZyBmYWxscyBpbnRvIHRoaXMgY2Fz ZS4KKyAqLworc3RhdGljIGludCBtaWNyb2NvZGVfdXBkYXRlX2NwdShzdHJ1Y3QgbWljcm9jb2Rl X3BhdGNoICpwYXRjaCkKIHsKLSAgICBpbnQgZXJyOwotICAgIHN0cnVjdCBjcHVfc2lnbmF0dXJl ICpzaWcgPSAmdGhpc19jcHUoY3B1X3NpZyk7CisgICAgaW50IHJldCA9IG1pY3JvY29kZV9vcHMt PmNvbGxlY3RfY3B1X2luZm8oJnRoaXNfY3B1KGNwdV9zaWcpKTsKIAotICAgIGlmICggIW1pY3Jv Y29kZV9vcHMgKQotICAgICAgICByZXR1cm4gMDsKKyAgICBpZiAoIHVubGlrZWx5KHJldCkgKQor ICAgICAgICByZXR1cm4gcmV0OwogCiAgICAgc3Bpbl9sb2NrKCZtaWNyb2NvZGVfbXV0ZXgpOwog Ci0gICAgZXJyID0gbWljcm9jb2RlX29wcy0+Y29sbGVjdF9jcHVfaW5mbyhzaWcpOwotICAgIGlm ICggbGlrZWx5KCFlcnIpICkKLSAgICAgICAgZXJyID0gbWljcm9jb2RlX29wcy0+YXBwbHlfbWlj cm9jb2RlKCk7Ci0gICAgc3Bpbl91bmxvY2soJm1pY3JvY29kZV9tdXRleCk7CisgICAgaWYgKCBw YXRjaCApCisgICAgeworICAgICAgICAvKgorICAgICAgICAgKiBJZiBhIHBhdGNoIGlzIHNwZWNp ZmllZCwgaXQgc2hvdWxkIGhhcyBuZXdlciByZXZpc2lvbiB0aGFuCisgICAgICAgICAqIHRoYXQg b2YgdGhlIHBhdGNoIGNhY2hlZC4KKyAgICAgICAgICovCisgICAgICAgIGlmICggbWljcm9jb2Rl X2NhY2hlICYmCisgICAgICAgICAgICAgbWljcm9jb2RlX29wcy0+Y29tcGFyZV9wYXRjaChwYXRj aCwgbWljcm9jb2RlX2NhY2hlKSAhPSBORVdfVUNPREUgKQorICAgICAgICB7CisgICAgICAgICAg ICBzcGluX3VubG9jaygmbWljcm9jb2RlX211dGV4KTsKKyAgICAgICAgICAgIHJldHVybiAtRUlO VkFMOworICAgICAgICB9CiAKLSAgICByZXR1cm4gZXJyOwotfQorICAgICAgICByZXQgPSBtaWNy b2NvZGVfb3BzLT5hcHBseV9taWNyb2NvZGUocGF0Y2gpOworICAgIH0KKyAgICBlbHNlIGlmICgg bWljcm9jb2RlX2NhY2hlICkKKyAgICB7CisgICAgICAgIHJldCA9IG1pY3JvY29kZV9vcHMtPmFw cGx5X21pY3JvY29kZShtaWNyb2NvZGVfY2FjaGUpOworICAgICAgICBpZiAoIHJldCA9PSAtRUlP ICkKKyAgICAgICAgICAgIHByaW50aygiVXBkYXRlIGZhaWxlZC4gUmVib290IG5lZWRlZFxuIik7 CisgICAgfQorICAgIGVsc2UKKyAgICAgICAgLyogTm8gcGF0Y2ggdG8gdXBkYXRlICovCisgICAg ICAgIHJldCA9IC1FSU5WQUw7CiAKLWNvbnN0IHN0cnVjdCBtaWNyb2NvZGVfcGF0Y2ggKm1pY3Jv Y29kZV9nZXRfY2FjaGUodm9pZCkKLXsKLSAgICBBU1NFUlQoc3Bpbl9pc19sb2NrZWQoJm1pY3Jv Y29kZV9tdXRleCkpOworICAgIHNwaW5fdW5sb2NrKCZtaWNyb2NvZGVfbXV0ZXgpOwogCi0gICAg cmV0dXJuIG1pY3JvY29kZV9jYWNoZTsKKyAgICByZXR1cm4gcmV0OwogfQogCiAvKiBSZXR1cm4g dHJ1ZSBpZiBjYWNoZSBnZXRzIHVwZGF0ZWQuIE90aGVyd2lzZSwgcmV0dXJuIGZhbHNlICovCkBA IC0yMjcsOSArMjUzLDYgQEAgYm9vbCBtaWNyb2NvZGVfdXBkYXRlX2NhY2hlKHN0cnVjdCBtaWNy b2NvZGVfcGF0Y2ggKnBhdGNoKQogCiAgICAgQVNTRVJUKHNwaW5faXNfbG9ja2VkKCZtaWNyb2Nv ZGVfbXV0ZXgpKTsKIAotICAgIGlmICggIW1pY3JvY29kZV9vcHMtPm1hdGNoX2NwdShwYXRjaCkg KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KICAgICBpZiAoICFtaWNyb2NvZGVfY2FjaGUgKQog ICAgICAgICBtaWNyb2NvZGVfY2FjaGUgPSBwYXRjaDsKICAgICBlbHNlIGlmICggbWljcm9jb2Rl X29wcy0+Y29tcGFyZV9wYXRjaChwYXRjaCwgbWljcm9jb2RlX2NhY2hlKSA9PQpAQCAtMjQ3LDQ2 ICsyNzAsMzIgQEAgYm9vbCBtaWNyb2NvZGVfdXBkYXRlX2NhY2hlKHN0cnVjdCBtaWNyb2NvZGVf cGF0Y2ggKnBhdGNoKQogICAgIHJldHVybiB0cnVlOwogfQogCi1zdGF0aWMgaW50IG1pY3JvY29k ZV91cGRhdGVfY3B1KGNvbnN0IHZvaWQgKmJ1Ziwgc2l6ZV90IHNpemUpCitzdGF0aWMgbG9uZyBk b19taWNyb2NvZGVfdXBkYXRlKHZvaWQgKnBhdGNoKQogewotICAgIGludCBlcnI7Ci0gICAgdW5z aWduZWQgaW50IGNwdSA9IHNtcF9wcm9jZXNzb3JfaWQoKTsKLSAgICBzdHJ1Y3QgY3B1X3NpZ25h dHVyZSAqc2lnID0gJnBlcl9jcHUoY3B1X3NpZywgY3B1KTsKLQotICAgIHNwaW5fbG9jaygmbWlj cm9jb2RlX211dGV4KTsKKyAgICBpbnQgZXJyb3IsIGNwdTsKIAotICAgIGVyciA9IG1pY3JvY29k ZV9vcHMtPmNvbGxlY3RfY3B1X2luZm8oc2lnKTsKLSAgICBpZiAoIGxpa2VseSghZXJyKSApCi0g ICAgICAgIGVyciA9IG1pY3JvY29kZV9vcHMtPmNwdV9yZXF1ZXN0X21pY3JvY29kZShidWYsIHNp emUpOwotICAgIHNwaW5fdW5sb2NrKCZtaWNyb2NvZGVfbXV0ZXgpOwotCi0gICAgcmV0dXJuIGVy cjsKLX0KLQotc3RhdGljIGxvbmcgZG9fbWljcm9jb2RlX3VwZGF0ZSh2b2lkICpfaW5mbykKLXsK LSAgICBzdHJ1Y3QgbWljcm9jb2RlX2luZm8gKmluZm8gPSBfaW5mbzsKLSAgICBpbnQgZXJyb3I7 CisgICAgZXJyb3IgPSBtaWNyb2NvZGVfdXBkYXRlX2NwdShwYXRjaCk7CisgICAgaWYgKCBlcnJv ciApCisgICAgeworICAgICAgICBtaWNyb2NvZGVfb3BzLT5mcmVlX3BhdGNoKG1pY3JvY29kZV9j YWNoZSk7CisgICAgICAgIHJldHVybiBlcnJvcjsKKyAgICB9CiAKLSAgICBCVUdfT04oaW5mby0+ Y3B1ICE9IHNtcF9wcm9jZXNzb3JfaWQoKSk7CiAKLSAgICBlcnJvciA9IG1pY3JvY29kZV91cGRh dGVfY3B1KGluZm8tPmJ1ZmZlciwgaW5mby0+YnVmZmVyX3NpemUpOwotICAgIGlmICggZXJyb3Ig KQotICAgICAgICBpbmZvLT5lcnJvciA9IGVycm9yOworICAgIGNwdSA9IGNwdW1hc2tfbmV4dChz bXBfcHJvY2Vzc29yX2lkKCksICZjcHVfb25saW5lX21hcCk7CisgICAgaWYgKCBjcHUgPCBucl9j cHVfaWRzICkKKyAgICAgICAgcmV0dXJuIGNvbnRpbnVlX2h5cGVyY2FsbF9vbl9jcHUoY3B1LCBk b19taWNyb2NvZGVfdXBkYXRlLCBwYXRjaCk7CiAKLSAgICBpbmZvLT5jcHUgPSBjcHVtYXNrX25l eHQoaW5mby0+Y3B1LCAmY3B1X29ubGluZV9tYXApOwotICAgIGlmICggaW5mby0+Y3B1IDwgbnJf Y3B1X2lkcyApCi0gICAgICAgIHJldHVybiBjb250aW51ZV9oeXBlcmNhbGxfb25fY3B1KGluZm8t PmNwdSwgZG9fbWljcm9jb2RlX3VwZGF0ZSwgaW5mbyk7CisgICAgbWljcm9jb2RlX3VwZGF0ZV9j YWNoZShwYXRjaCk7CiAKLSAgICBlcnJvciA9IGluZm8tPmVycm9yOwotICAgIHhmcmVlKGluZm8p OwogICAgIHJldHVybiBlcnJvcjsKIH0KIAogaW50IG1pY3JvY29kZV91cGRhdGUoWEVOX0dVRVNU X0hBTkRMRV9QQVJBTShjb25zdF92b2lkKSBidWYsIHVuc2lnbmVkIGxvbmcgbGVuKQogewogICAg IGludCByZXQ7Ci0gICAgc3RydWN0IG1pY3JvY29kZV9pbmZvICppbmZvOworICAgIHZvaWQgKmJ1 ZmZlcjsKKyAgICBzdHJ1Y3QgbWljcm9jb2RlX3BhdGNoICpwYXRjaDsKIAogICAgIGlmICggbGVu ICE9ICh1aW50MzJfdClsZW4gKQogICAgICAgICByZXR1cm4gLUUyQklHOwpAQCAtMjk0LDMyICsz MDMsNDkgQEAgaW50IG1pY3JvY29kZV91cGRhdGUoWEVOX0dVRVNUX0hBTkRMRV9QQVJBTShjb25z dF92b2lkKSBidWYsIHVuc2lnbmVkIGxvbmcgbGVuKQogICAgIGlmICggbWljcm9jb2RlX29wcyA9 PSBOVUxMICkKICAgICAgICAgcmV0dXJuIC1FSU5WQUw7CiAKLSAgICBpbmZvID0geG1hbGxvY19i eXRlcyhzaXplb2YoKmluZm8pICsgbGVuKTsKLSAgICBpZiAoIGluZm8gPT0gTlVMTCApCi0gICAg ICAgIHJldHVybiAtRU5PTUVNOwotCi0gICAgcmV0ID0gY29weV9mcm9tX2d1ZXN0KGluZm8tPmJ1 ZmZlciwgYnVmLCBsZW4pOwotICAgIGlmICggcmV0ICE9IDAgKQorICAgIGJ1ZmZlciA9IHhtYWxs b2NfYnl0ZXMobGVuKTsKKyAgICBpZiAoICFidWZmZXIgKQogICAgIHsKLSAgICAgICAgeGZyZWUo aW5mbyk7Ci0gICAgICAgIHJldHVybiByZXQ7CisgICAgICAgIHJldCA9IC1FTk9NRU07CisgICAg ICAgIGdvdG8gZnJlZTsKICAgICB9CiAKLSAgICBpbmZvLT5idWZmZXJfc2l6ZSA9IGxlbjsKLSAg ICBpbmZvLT5lcnJvciA9IDA7Ci0gICAgaW5mby0+Y3B1ID0gY3B1bWFza19maXJzdCgmY3B1X29u bGluZV9tYXApOworICAgIGlmICggY29weV9mcm9tX2d1ZXN0KGJ1ZmZlciwgYnVmLCBsZW4pICkK KyAgICB7CisgICAgICAgIHJldCA9IC1FRkFVTFQ7CisgICAgICAgIGdvdG8gZnJlZTsKKyAgICB9 CiAKICAgICBpZiAoIG1pY3JvY29kZV9vcHMtPnN0YXJ0X3VwZGF0ZSApCiAgICAgewogICAgICAg ICByZXQgPSBtaWNyb2NvZGVfb3BzLT5zdGFydF91cGRhdGUoKTsKICAgICAgICAgaWYgKCByZXQg IT0gMCApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHhmcmVlKGluZm8pOwotICAgICAgICAgICAg cmV0dXJuIHJldDsKLSAgICAgICAgfQorICAgICAgICAgICAgZ290byBmcmVlOwogICAgIH0KIAot ICAgIHJldHVybiBjb250aW51ZV9oeXBlcmNhbGxfb25fY3B1KGluZm8tPmNwdSwgZG9fbWljcm9j b2RlX3VwZGF0ZSwgaW5mbyk7CisgICAgcGF0Y2ggPSBtaWNyb2NvZGVfcGFyc2VfYmxvYihidWZm ZXIsIGxlbik7CisgICAgaWYgKCBJU19FUlIocGF0Y2gpICkKKyAgICB7CisgICAgICAgIHByaW50 ayhYRU5MT0dfRVJSICJQYXJzaW5nIG1pY3JvY29kZSBibG9iIGVycm9yICVsZFxuIiwgUFRSX0VS UihwYXRjaCkpOworICAgICAgICByZXQgPSBQVFJfRVJSKHBhdGNoKTsKKyAgICAgICAgZ290byBm cmVlOworICAgIH0KKworICAgIGlmICggIW1pY3JvY29kZV9vcHMtPm1hdGNoX2NwdShwYXRjaCkg KQorICAgIHsKKyAgICAgICAgcHJpbnRrKFhFTkxPR19FUlIgIk5vIG1hdGNoaW5nIG9yIG5ld2Vy IHVjb2RlIGZvdW5kLiBVcGRhdGUgYWJvcnRlZCFcbiIpOworICAgICAgICBpZiAoIHBhdGNoICkK KyAgICAgICAgICAgIG1pY3JvY29kZV9vcHMtPmZyZWVfcGF0Y2gocGF0Y2gpOworICAgICAgICBy ZXQgPSAtRUlOVkFMOworICAgICAgICBnb3RvIGZyZWU7CisgICAgfQorCisgICAgcmV0ID0gY29u dGludWVfaHlwZXJjYWxsX29uX2NwdShjcHVtYXNrX2ZpcnN0KCZjcHVfb25saW5lX21hcCksCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb19taWNyb2NvZGVfdXBkYXRlLCBw YXRjaCk7CisKKyBmcmVlOgorICAgIHhmcmVlKGJ1ZmZlcik7CisgICAgcmV0dXJuIHJldDsKIH0K IAogc3RhdGljIGludCBfX2luaXQgbWljcm9jb2RlX2luaXQodm9pZCkKQEAgLTM0NCw3ICszNzAs MTYgQEAgc3RhdGljIGludCBfX2luaXQgbWljcm9jb2RlX2luaXQodm9pZCkKIH0KIF9faW5pdGNh bGwobWljcm9jb2RlX2luaXQpOwogCi1pbnQgX19pbml0IGVhcmx5X21pY3JvY29kZV91cGRhdGVf Y3B1KGJvb2wgc3RhcnRfdXBkYXRlKQoraW50IGVhcmx5X21pY3JvY29kZV91cGRhdGVfY3B1KHZv aWQpCit7CisgICAgcmV0dXJuIG1pY3JvY29kZV9vcHMgPyBtaWNyb2NvZGVfdXBkYXRlX2NwdShO VUxMKSA6IDA7Cit9CisKKy8qCisgKiBCU1AgbmVlZHMgdG8gcGFyc2UgdGhlIHVjb2RlIGJsb2Ig YW5kIHRoZW4gYXBwbHkgYW4gdXBkYXRlLgorICogQVBzIGp1c3QgYXBwbHkgYW4gdXBkYXRlIGJ5 IGNhbGxpbmcgZWFybHlfbWljcm9jb2RlX3VwZGF0ZV9jcHUoKS4KKyAqLworc3RhdGljIGludCBf X2luaXQgZWFybHlfbWljcm9jb2RlX3BhcnNlX2FuZF91cGRhdGVfY3B1KHZvaWQpCiB7CiAgICAg aW50IHJjID0gMDsKICAgICB2b2lkICpkYXRhID0gTlVMTDsKQEAgLTM2MiwxMyArMzk3LDQxIEBA IGludCBfX2luaXQgZWFybHlfbWljcm9jb2RlX3VwZGF0ZV9jcHUoYm9vbCBzdGFydF91cGRhdGUp CiAgICAgfQogICAgIGlmICggZGF0YSApCiAgICAgewotICAgICAgICBpZiAoIHN0YXJ0X3VwZGF0 ZSAmJiBtaWNyb2NvZGVfb3BzLT5zdGFydF91cGRhdGUgKQorICAgICAgICBzdHJ1Y3QgbWljcm9j b2RlX3BhdGNoICpwYXRjaDsKKworICAgICAgICBpZiAoIG1pY3JvY29kZV9vcHMtPnN0YXJ0X3Vw ZGF0ZSApCiAgICAgICAgICAgICByYyA9IG1pY3JvY29kZV9vcHMtPnN0YXJ0X3VwZGF0ZSgpOwog CiAgICAgICAgIGlmICggcmMgKQogICAgICAgICAgICAgcmV0dXJuIHJjOwogCi0gICAgICAgIHJl dHVybiBtaWNyb2NvZGVfdXBkYXRlX2NwdShkYXRhLCBsZW4pOworICAgICAgICBwYXRjaCA9IG1p Y3JvY29kZV9wYXJzZV9ibG9iKGRhdGEsIGxlbik7CisgICAgICAgIGlmICggSVNfRVJSKHBhdGNo KSApCisgICAgICAgIHsKKyAgICAgICAgICAgIHByaW50ayhYRU5MT0dfRVJSICJQYXJzaW5nIG1p Y3JvY29kZSBibG9iIGVycm9yICVsZFxuIiwKKyAgICAgICAgICAgICAgICAgICBQVFJfRVJSKHBh dGNoKSk7CisgICAgICAgICAgICByZXR1cm4gUFRSX0VSUihwYXRjaCk7CisgICAgICAgIH0KKwor ICAgICAgICBpZiAoICFtaWNyb2NvZGVfb3BzLT5tYXRjaF9jcHUocGF0Y2gpICkKKyAgICAgICAg eworICAgICAgICAgICAgcHJpbnRrKFhFTkxPR19FUlIgIk5vIG1hdGNoaW5nIG9yIG5ld2VyIHVj b2RlIGZvdW5kLiBVcGRhdGUgYWJvcnRlZCFcbiIpOworICAgICAgICAgICAgaWYgKCBwYXRjaCAp CisgICAgICAgICAgICAgICAgbWljcm9jb2RlX29wcy0+ZnJlZV9wYXRjaChwYXRjaCk7CisgICAg ICAgICAgICByZXR1cm4gLUVJTlZBTDsKKyAgICAgICAgfQorCisgICAgICAgIHJjID0gbWljcm9j b2RlX3VwZGF0ZV9jcHUocGF0Y2gpOworICAgICAgICBpZiAoICFyYyApCisgICAgICAgIHsKKyAg ICAgICAgICAgIHNwaW5fbG9jaygmbWljcm9jb2RlX211dGV4KTsKKyAgICAgICAgICAgIG1pY3Jv Y29kZV91cGRhdGVfY2FjaGUocGF0Y2gpOworICAgICAgICAgICAgc3Bpbl91bmxvY2soJm1pY3Jv Y29kZV9tdXRleCk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbWljcm9j b2RlX29wcy0+ZnJlZV9wYXRjaChwYXRjaCk7CisKKyAgICAgICAgcmV0dXJuIHJjOwogICAgIH0K ICAgICBlbHNlCiAgICAgICAgIHJldHVybiAtRU5PTUVNOwpAQCAtMzg3LDggKzQ1MCwxMCBAQCBp bnQgX19pbml0IGVhcmx5X21pY3JvY29kZV9pbml0KHZvaWQpCiAgICAgICAgIHJldHVybiByYzsK IAogICAgIGlmICggbWljcm9jb2RlX29wcyApCisgICAgewogICAgICAgICBpZiAoIHVjb2RlX21v ZC5tb2RfZW5kIHx8IHVjb2RlX2Jsb2Iuc2l6ZSApCi0gICAgICAgICAgICByYyA9IGVhcmx5X21p Y3JvY29kZV91cGRhdGVfY3B1KHRydWUpOworICAgICAgICAgICAgcmMgPSBlYXJseV9taWNyb2Nv ZGVfcGFyc2VfYW5kX3VwZGF0ZV9jcHUoKTsKKyAgICB9CiAKICAgICByZXR1cm4gcmM7CiB9CmRp ZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvbWljcm9jb2RlX2FtZC5jIGIveGVuL2FyY2gveDg2L21p Y3JvY29kZV9hbWQuYwppbmRleCAwMTQ0ZGYxLi5jODE5MDI4IDEwMDY0NAotLS0gYS94ZW4vYXJj aC94ODYvbWljcm9jb2RlX2FtZC5jCisrKyBiL3hlbi9hcmNoL3g4Ni9taWNyb2NvZGVfYW1kLmMK QEAgLTI0OSw3ICsyNDksNyBAQCBzdGF0aWMgZW51bSBtaWNyb2NvZGVfbWF0Y2hfcmVzdWx0IGNv bXBhcmVfcGF0Y2goCiAgICAgcmV0dXJuIE1JU19VQ09ERTsKIH0KIAotc3RhdGljIGludCBhcHBs eV9taWNyb2NvZGUodm9pZCkKK3N0YXRpYyBpbnQgYXBwbHlfbWljcm9jb2RlKGNvbnN0IHN0cnVj dCBtaWNyb2NvZGVfcGF0Y2ggKnBhdGNoKQogewogICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAg ICAgdWludDMyX3QgcmV2OwpAQCAtMjU3LDcgKzI1Nyw2IEBAIHN0YXRpYyBpbnQgYXBwbHlfbWlj cm9jb2RlKHZvaWQpCiAgICAgdW5zaWduZWQgaW50IGNwdSA9IHNtcF9wcm9jZXNzb3JfaWQoKTsK ICAgICBzdHJ1Y3QgY3B1X3NpZ25hdHVyZSAqc2lnID0gJnBlcl9jcHUoY3B1X3NpZywgY3B1KTsK ICAgICBjb25zdCBzdHJ1Y3QgbWljcm9jb2RlX2hlYWRlcl9hbWQgKmhkcjsKLSAgICBjb25zdCBz dHJ1Y3QgbWljcm9jb2RlX3BhdGNoICpwYXRjaCA9IG1pY3JvY29kZV9nZXRfY2FjaGUoKTsKIAog ICAgIGlmICggIW1hdGNoX2NwdShwYXRjaCkgKQogICAgICAgICByZXR1cm4gLUVJTlZBTDsKQEAg LTI5Miw2ICsyOTEsMTAgQEAgc3RhdGljIGludCBhcHBseV9taWNyb2NvZGUodm9pZCkKIAogICAg IHNpZy0+cmV2ID0gcmV2OwogCisjaWZkZWYgQ09ORklHX0hWTQorICAgIHN2bV9ob3N0X29zdndf aW5pdCgpOworI2VuZGlmCisKICAgICByZXR1cm4gMDsKIH0KIApAQCAtNDQ5LDkgKzQ1MiwxMSBA QCBzdGF0aWMgYm9vbCBjaGVja19maW5hbF9wYXRjaF9sZXZlbHModm9pZCkKICAgICByZXR1cm4g MDsKIH0KIAotc3RhdGljIGludCBjcHVfcmVxdWVzdF9taWNyb2NvZGUoY29uc3Qgdm9pZCAqYnVm LCBzaXplX3QgYnVmc2l6ZSkKK3N0YXRpYyBzdHJ1Y3QgbWljcm9jb2RlX3BhdGNoICpjcHVfcmVx dWVzdF9taWNyb2NvZGUoY29uc3Qgdm9pZCAqYnVmLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgYnVmc2l6ZSkKIHsKICAgICBzdHJ1 Y3QgbWljcm9jb2RlX2FtZCAqbWNfYW1kOworICAgIHN0cnVjdCBtaWNyb2NvZGVfcGF0Y2ggKnBh dGNoID0gTlVMTDsKICAgICBzaXplX3Qgb2Zmc2V0ID0gMDsKICAgICBpbnQgZXJyb3IgPSAwOwog ICAgIHVuc2lnbmVkIGludCBjdXJyZW50X2NwdV9pZDsKQEAgLTU1MSwxNyArNTU2LDE2IEBAIHN0 YXRpYyBpbnQgY3B1X3JlcXVlc3RfbWljcm9jb2RlKGNvbnN0IHZvaWQgKmJ1Ziwgc2l6ZV90IGJ1 ZnNpemUpCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCi0gICAgICAgIGlmICggbWF0 Y2hfY3B1KG5ld19wYXRjaCkgKQotICAgICAgICAgICAgbWljcm9jb2RlX3VwZGF0ZV9jYWNoZShu ZXdfcGF0Y2gpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBmcmVlX3BhdGNoKG5ld19wYXRj aCk7Ci0KLSAgICAgICAgaWYgKCBtYXRjaF9jcHUobWljcm9jb2RlX2dldF9jYWNoZSgpKSApCisg ICAgICAgIC8qIENvbXBhcmUgcGF0Y2hlcyBhbmQgc3RvcmUgdGhlIG9uZSB3aXRoIGhpZ2hlciBy ZXZpc2lvbiAqLworICAgICAgICBpZiAoICFwYXRjaCAmJiBtYXRjaF9jcHUobmV3X3BhdGNoKSAp CisgICAgICAgICAgICBwYXRjaCA9IG5ld19wYXRjaDsKKyAgICAgICAgZWxzZSBpZiAoIHBhdGNo ICYmIChjb21wYXJlX3BhdGNoKG5ld19wYXRjaCwgcGF0Y2gpID09IE5FV19VQ09ERSkgKQogICAg ICAgICB7Ci0gICAgICAgICAgICBlcnJvciA9IGFwcGx5X21pY3JvY29kZSgpOwotICAgICAgICAg ICAgaWYgKCBlcnJvciApCi0gICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBmcmVl X3BhdGNoKHBhdGNoKTsKKyAgICAgICAgICAgIHBhdGNoID0gbmV3X3BhdGNoOwogICAgICAgICB9 CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGZyZWVfcGF0Y2gobmV3X3BhdGNoKTsKIAogICAg ICAgICBpZiAoIG9mZnNldCA+PSBidWZzaXplICkKICAgICAgICAgICAgIGJyZWFrOwpAQCAtNTky LDE3ICs1OTYsMTAgQEAgc3RhdGljIGludCBjcHVfcmVxdWVzdF9taWNyb2NvZGUoY29uc3Qgdm9p ZCAqYnVmLCBzaXplX3QgYnVmc2l6ZSkKICAgICB9CiAKICAgb3V0OgotI2lmIENPTkZJR19IVk0K LSAgICBzdm1faG9zdF9vc3Z3X2luaXQoKTsKLSNlbmRpZgorICAgIGlmICggZXJyb3IgJiYgIXBh dGNoICkKKyAgICAgICAgcGF0Y2ggPSBFUlJfUFRSKGVycm9yKTsKIAotICAgIC8qCi0gICAgICog SW4gc29tZSBjYXNlcyB3ZSBtYXkgcmV0dXJuIGFuIGVycm9yIGV2ZW4gaWYgcHJvY2Vzc29yJ3Mg bWljcm9jb2RlIGhhcwotICAgICAqIGJlZW4gdXBkYXRlZC4gRm9yIGV4YW1wbGUsIHRoZSBmaXJz dCBwYXRjaCBpbiBhIGNvbnRhaW5lciBmaWxlIGlzIGxvYWRlZAotICAgICAqIHN1Y2Nlc3NmdWxs eSBidXQgc3Vic2VxdWVudCBjb250YWluZXIgZmlsZSBwcm9jZXNzaW5nIGVuY291bnRlcnMgYQot ICAgICAqIGZhaWx1cmUuCi0gICAgICovCi0gICAgcmV0dXJuIGVycm9yOworICAgIHJldHVybiBw YXRjaDsKIH0KIAogc3RhdGljIGludCBzdGFydF91cGRhdGUodm9pZCkKZGlmZiAtLWdpdCBhL3hl bi9hcmNoL3g4Ni9taWNyb2NvZGVfaW50ZWwuYyBiL3hlbi9hcmNoL3g4Ni9taWNyb2NvZGVfaW50 ZWwuYwppbmRleCBiNjY4NDRkLi42NTA0OTVkIDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvbWlj cm9jb2RlX2ludGVsLmMKKysrIGIveGVuL2FyY2gveDg2L21pY3JvY29kZV9pbnRlbC5jCkBAIC0y NzMsNDYgKzI3MywyNyBAQCBzdGF0aWMgZW51bSBtaWNyb2NvZGVfbWF0Y2hfcmVzdWx0IGNvbXBh cmVfcGF0Y2goCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2xkX2hlYWRlci0+ cGYsIG9sZF9oZWFkZXItPnJldik7CiB9CiAKLS8qCi0gKiByZXR1cm4gMCAtIG5vIHVwZGF0ZSBm b3VuZAotICogcmV0dXJuIDEgLSBmb3VuZCB1cGRhdGUKLSAqIHJldHVybiA8IDAgLSBlcnJvcgot ICovCi1zdGF0aWMgaW50IGdldF9tYXRjaGluZ19taWNyb2NvZGUoY29uc3Qgdm9pZCAqbWMpCitz dGF0aWMgc3RydWN0IG1pY3JvY29kZV9wYXRjaCAqYWxsb3dfbWljcm9jb2RlX3BhdGNoKAorICAg IGNvbnN0IHN0cnVjdCBtaWNyb2NvZGVfaGVhZGVyX2ludGVsICptY19oZWFkZXIpCiB7Ci0gICAg Y29uc3Qgc3RydWN0IG1pY3JvY29kZV9oZWFkZXJfaW50ZWwgKm1jX2hlYWRlciA9IG1jOwogICAg IHVuc2lnbmVkIGxvbmcgdG90YWxfc2l6ZSA9IGdldF90b3RhbHNpemUobWNfaGVhZGVyKTsKICAg ICB2b2lkICpuZXdfbWMgPSB4bWFsbG9jX2J5dGVzKHRvdGFsX3NpemUpOwogICAgIHN0cnVjdCBt aWNyb2NvZGVfcGF0Y2ggKm5ld19wYXRjaCA9IHhtYWxsb2Moc3RydWN0IG1pY3JvY29kZV9wYXRj aCk7Ci0gICAgdW5zaWduZWQgaW50IF9fbWF5YmVfdW51c2VkIGNwdSA9IHNtcF9wcm9jZXNzb3Jf aWQoKTsKIAogICAgIGlmICggIW5ld19wYXRjaCB8fCAhbmV3X21jICkKICAgICB7CiAgICAgICAg IHhmcmVlKG5ld19wYXRjaCk7CiAgICAgICAgIHhmcmVlKG5ld19tYyk7CiAgICAgICAgIHByaW50 ayhYRU5MT0dfRVJSICJtaWNyb2NvZGU6IENhbiBub3QgYWxsb2NhdGUgbWVtb3J5XG4iKTsKLSAg ICAgICAgcmV0dXJuIC1FTk9NRU07CisgICAgICAgIHJldHVybiBFUlJfUFRSKC1FTk9NRU0pOwog ICAgIH0KLSAgICBtZW1jcHkobmV3X21jLCBtYywgdG90YWxfc2l6ZSk7CisgICAgbWVtY3B5KG5l d19tYywgbWNfaGVhZGVyLCB0b3RhbF9zaXplKTsKICAgICBuZXdfcGF0Y2gtPm1jX2ludGVsID0g bmV3X21jOwogCi0gICAgaWYgKCAhbWF0Y2hfY3B1KG5ld19wYXRjaCkgKQotICAgIHsKLSAgICAg ICAgZnJlZV9wYXRjaChuZXdfcGF0Y2gpOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0KLSAg ICBpZiAoICFtaWNyb2NvZGVfdXBkYXRlX2NhY2hlKG5ld19wYXRjaCkgKQotICAgICAgICByZXR1 cm4gMDsKLQotICAgIHByX2RlYnVnKCJtaWNyb2NvZGU6IENQVSVkIGZvdW5kIGEgbWF0Y2hpbmcg bWljcm9jb2RlIHVwZGF0ZSB3aXRoIgotICAgICAgICAgICAgICIgdmVyc2lvbiAlI3ggKGN1cnJl bnQ9JSN4KVxuIiwKLSAgICAgICAgICAgICBjcHUsIG1jX2hlYWRlci0+cmV2LCB0aGlzX2NwdShj cHVfc2lnKS5yZXYpOwotCi0gICAgcmV0dXJuIDE7CisgICAgcmV0dXJuIG5ld19wYXRjaDsKIH0K IAotc3RhdGljIGludCBhcHBseV9taWNyb2NvZGUodm9pZCkKK3N0YXRpYyBpbnQgYXBwbHlfbWlj cm9jb2RlKGNvbnN0IHN0cnVjdCBtaWNyb2NvZGVfcGF0Y2ggKnBhdGNoKQogewogICAgIHVuc2ln bmVkIGxvbmcgZmxhZ3M7CiAgICAgdWludDY0X3QgbXNyX2NvbnRlbnQ7CkBAIC0zMjAsNyArMzAx LDYgQEAgc3RhdGljIGludCBhcHBseV9taWNyb2NvZGUodm9pZCkKICAgICB1bnNpZ25lZCBpbnQg Y3B1X251bSA9IHJhd19zbXBfcHJvY2Vzc29yX2lkKCk7CiAgICAgc3RydWN0IGNwdV9zaWduYXR1 cmUgKnNpZyA9ICZ0aGlzX2NwdShjcHVfc2lnKTsKICAgICBjb25zdCBzdHJ1Y3QgbWljcm9jb2Rl X2ludGVsICptY19pbnRlbDsKLSAgICBjb25zdCBzdHJ1Y3QgbWljcm9jb2RlX3BhdGNoICpwYXRj aCA9IG1pY3JvY29kZV9nZXRfY2FjaGUoKTsKIAogICAgIGlmICggIW1hdGNoX2NwdShwYXRjaCkg KQogICAgICAgICByZXR1cm4gLUVJTlZBTDsKQEAgLTM4OCwyNiArMzY4LDM5IEBAIHN0YXRpYyBs b25nIGdldF9uZXh0X3Vjb2RlX2Zyb21fYnVmZmVyKHZvaWQgKiptYywgY29uc3QgdTggKmJ1ZiwK ICAgICByZXR1cm4gb2Zmc2V0ICsgdG90YWxfc2l6ZTsKIH0KIAotc3RhdGljIGludCBjcHVfcmVx dWVzdF9taWNyb2NvZGUoY29uc3Qgdm9pZCAqYnVmLCBzaXplX3Qgc2l6ZSkKK3N0YXRpYyBzdHJ1 Y3QgbWljcm9jb2RlX3BhdGNoICpjcHVfcmVxdWVzdF9taWNyb2NvZGUoY29uc3Qgdm9pZCAqYnVm LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz aXplX3Qgc2l6ZSkKIHsKICAgICBsb25nIG9mZnNldCA9IDA7CiAgICAgaW50IGVycm9yID0gMDsK ICAgICB2b2lkICptYzsKKyAgICBzdHJ1Y3QgbWljcm9jb2RlX3BhdGNoICpwYXRjaCA9IE5VTEw7 CiAKICAgICB3aGlsZSAoIChvZmZzZXQgPSBnZXRfbmV4dF91Y29kZV9mcm9tX2J1ZmZlcigmbWMs IGJ1Ziwgc2l6ZSwgb2Zmc2V0KSkgPiAwICkKICAgICB7CisgICAgICAgIHN0cnVjdCBtaWNyb2Nv ZGVfcGF0Y2ggKm5ld19wYXRjaDsKKwogICAgICAgICBlcnJvciA9IG1pY3JvY29kZV9zYW5pdHlf Y2hlY2sobWMpOwogICAgICAgICBpZiAoIGVycm9yICkKICAgICAgICAgICAgIGJyZWFrOwotICAg ICAgICBlcnJvciA9IGdldF9tYXRjaGluZ19taWNyb2NvZGUobWMpOwotICAgICAgICBpZiAoIGVy cm9yIDwgMCApCisKKyAgICAgICAgbmV3X3BhdGNoID0gYWxsb3dfbWljcm9jb2RlX3BhdGNoKG1j KTsKKyAgICAgICAgaWYgKCBJU19FUlIobmV3X3BhdGNoKSApCisgICAgICAgIHsKKyAgICAgICAg ICAgIGVycm9yID0gUFRSX0VSUihuZXdfcGF0Y2gpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAg ICAgIC8qCi0gICAgICAgICAqIEl0J3MgcG9zc2libGUgdGhlIGRhdGEgZmlsZSBoYXMgbXVsdGlw bGUgbWF0Y2hpbmcgdWNvZGUsCi0gICAgICAgICAqIGxldHMga2VlcCBzZWFyY2hpbmcgdGlsbCB0 aGUgbGF0ZXN0IHZlcnNpb24KLSAgICAgICAgICovCi0gICAgICAgIGlmICggZXJyb3IgPT0gMSAp Ci0gICAgICAgICAgICBlcnJvciA9IDA7CisgICAgICAgIH0KKworICAgICAgICAvKiBDb21wYXJl IHBhdGNoZXMgYW5kIHN0b3JlIHRoZSBvbmUgd2l0aCBoaWdoZXIgcmV2aXNpb24gKi8KKyAgICAg ICAgaWYgKCAhcGF0Y2ggJiYgbWF0Y2hfY3B1KG5ld19wYXRjaCkgKQorICAgICAgICAgICAgcGF0 Y2ggPSBuZXdfcGF0Y2g7CisgICAgICAgIGVsc2UgaWYgKCBwYXRjaCAmJiAoY29tcGFyZV9wYXRj aChuZXdfcGF0Y2gsIHBhdGNoKSA9PSBORVdfVUNPREUpICkKKyAgICAgICAgeworICAgICAgICAg ICAgZnJlZV9wYXRjaChwYXRjaCk7CisgICAgICAgICAgICBwYXRjaCA9IG5ld19wYXRjaDsKKyAg ICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgICAgICBmcmVlX3BhdGNoKG5ld19wYXRjaCk7 CiAKICAgICAgICAgeGZyZWUobWMpOwogICAgIH0KQEAgLTQxNiwxMCArNDA5LDEwIEBAIHN0YXRp YyBpbnQgY3B1X3JlcXVlc3RfbWljcm9jb2RlKGNvbnN0IHZvaWQgKmJ1Ziwgc2l6ZV90IHNpemUp CiAgICAgaWYgKCBvZmZzZXQgPCAwICkKICAgICAgICAgZXJyb3IgPSBvZmZzZXQ7CiAKLSAgICBp ZiAoICFlcnJvciAmJiBtYXRjaF9jcHUobWljcm9jb2RlX2dldF9jYWNoZSgpKSApCi0gICAgICAg IGVycm9yID0gYXBwbHlfbWljcm9jb2RlKCk7CisgICAgaWYgKCBlcnJvciAmJiAhcGF0Y2ggKQor ICAgICAgICBwYXRjaCA9IEVSUl9QVFIoZXJyb3IpOwogCi0gICAgcmV0dXJuIGVycm9yOworICAg IHJldHVybiBwYXRjaDsKIH0KIAogc3RhdGljIGNvbnN0IHN0cnVjdCBtaWNyb2NvZGVfb3BzIG1p Y3JvY29kZV9pbnRlbF9vcHMgPSB7CmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvc21wYm9vdC5j IGIveGVuL2FyY2gveDg2L3NtcGJvb3QuYwppbmRleCBkZTE5YjY3Li5jZDVmOWNjIDEwMDY0NAot LS0gYS94ZW4vYXJjaC94ODYvc21wYm9vdC5jCisrKyBiL3hlbi9hcmNoL3g4Ni9zbXBib290LmMK QEAgLTM2MywxMCArMzYzLDcgQEAgdm9pZCBzdGFydF9zZWNvbmRhcnkodm9pZCAqdW51c2VkKQog CiAgICAgaW5pdGlhbGl6ZV9jcHVfZGF0YShjcHUpOwogCi0gICAgaWYgKCBzeXN0ZW1fc3RhdGUg PD0gU1lTX1NUQVRFX3NtcF9ib290ICkKLSAgICAgICAgZWFybHlfbWljcm9jb2RlX3VwZGF0ZV9j cHUoZmFsc2UpOwotICAgIGVsc2UKLSAgICAgICAgbWljcm9jb2RlX3Jlc3VtZV9jcHUoKTsKKyAg ICBlYXJseV9taWNyb2NvZGVfdXBkYXRlX2NwdSgpOwogCiAgICAgLyoKICAgICAgKiBJZiBNU1Jf U1BFQ19DVFJMIGlzIGF2YWlsYWJsZSwgYXBwbHkgWGVuJ3MgZGVmYXVsdCBzZXR0aW5nIGFuZCBk aXNjYXJkCmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9hc20teDg2L21pY3JvY29kZS5oIGIveGVu L2luY2x1ZGUvYXNtLXg4Ni9taWNyb2NvZGUuaAppbmRleCBlNjg0MmQ0Li4zZmEzYWNkIDEwMDY0 NAotLS0gYS94ZW4vaW5jbHVkZS9hc20teDg2L21pY3JvY29kZS5oCisrKyBiL3hlbi9pbmNsdWRl L2FzbS14ODYvbWljcm9jb2RlLmgKQEAgLTE5LDkgKzE5LDEwIEBAIHN0cnVjdCBtaWNyb2NvZGVf cGF0Y2ggewogfTsKIAogc3RydWN0IG1pY3JvY29kZV9vcHMgewotICAgIGludCAoKmNwdV9yZXF1 ZXN0X21pY3JvY29kZSkoY29uc3Qgdm9pZCAqYnVmLCBzaXplX3Qgc2l6ZSk7CisgICAgc3RydWN0 IG1pY3JvY29kZV9wYXRjaCAqKCpjcHVfcmVxdWVzdF9taWNyb2NvZGUpKGNvbnN0IHZvaWQgKmJ1 ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg c2l6ZV90IHNpemUpOwogICAgIGludCAoKmNvbGxlY3RfY3B1X2luZm8pKHN0cnVjdCBjcHVfc2ln bmF0dXJlICpjc2lnKTsKLSAgICBpbnQgKCphcHBseV9taWNyb2NvZGUpKHZvaWQpOworICAgIGlu dCAoKmFwcGx5X21pY3JvY29kZSkoY29uc3Qgc3RydWN0IG1pY3JvY29kZV9wYXRjaCAqcGF0Y2gp OwogICAgIGludCAoKnN0YXJ0X3VwZGF0ZSkodm9pZCk7CiAgICAgdm9pZCAoKmZyZWVfcGF0Y2gp KHN0cnVjdCBtaWNyb2NvZGVfcGF0Y2ggKnBhdGNoKTsKICAgICBib29sICgqbWF0Y2hfY3B1KShj b25zdCBzdHJ1Y3QgbWljcm9jb2RlX3BhdGNoICpwYXRjaCk7CkBAIC0zOSw3ICs0MCw0IEBAIHN0 cnVjdCBjcHVfc2lnbmF0dXJlIHsKIERFQ0xBUkVfUEVSX0NQVShzdHJ1Y3QgY3B1X3NpZ25hdHVy ZSwgY3B1X3NpZyk7CiBleHRlcm4gY29uc3Qgc3RydWN0IG1pY3JvY29kZV9vcHMgKm1pY3JvY29k ZV9vcHM7CiAKLWNvbnN0IHN0cnVjdCBtaWNyb2NvZGVfcGF0Y2ggKm1pY3JvY29kZV9nZXRfY2Fj aGUodm9pZCk7Ci1ib29sIG1pY3JvY29kZV91cGRhdGVfY2FjaGUoc3RydWN0IG1pY3JvY29kZV9w YXRjaCAqcGF0Y2gpOwotCiAjZW5kaWYgLyogQVNNX1g4Nl9fTUlDUk9DT0RFX0ggKi8KZGlmZiAt LWdpdCBhL3hlbi9pbmNsdWRlL2FzbS14ODYvcHJvY2Vzc29yLmggYi94ZW4vaW5jbHVkZS9hc20t eDg2L3Byb2Nlc3Nvci5oCmluZGV4IDhiN2U0ODQuLmQ4NjY4ZTYgMTAwNjQ0Ci0tLSBhL3hlbi9p bmNsdWRlL2FzbS14ODYvcHJvY2Vzc29yLmgKKysrIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9wcm9j ZXNzb3IuaApAQCAtNTczLDggKzU3Myw3IEBAIGludCBndWVzdF93cm1zcl94ZW4oc3RydWN0IHZj cHUgKnYsIHVpbnQzMl90IGlkeCwgdWludDY0X3QgdmFsKTsKIAogdm9pZCBtaWNyb2NvZGVfc2V0 X21vZHVsZSh1bnNpZ25lZCBpbnQpOwogaW50IG1pY3JvY29kZV91cGRhdGUoWEVOX0dVRVNUX0hB TkRMRV9QQVJBTShjb25zdF92b2lkKSwgdW5zaWduZWQgbG9uZyBsZW4pOwotaW50IG1pY3JvY29k ZV9yZXN1bWVfY3B1KHZvaWQpOwotaW50IGVhcmx5X21pY3JvY29kZV91cGRhdGVfY3B1KGJvb2wg c3RhcnRfdXBkYXRlKTsKK2ludCBlYXJseV9taWNyb2NvZGVfdXBkYXRlX2NwdSh2b2lkKTsKIGlu dCBlYXJseV9taWNyb2NvZGVfaW5pdCh2b2lkKTsKIGludCBtaWNyb2NvZGVfaW5pdF9pbnRlbCh2 b2lkKTsKIGludCBtaWNyb2NvZGVfaW5pdF9hbWQodm9pZCk7Ci0tIAoxLjguMy4xCgoKX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxp bmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5w cm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3hlbi1kZXZlbA==