From mboxrd@z Thu Jan 1 00:00:00 1970 From: Yi Sun Subject: [PATCH v10 17/25] x86: refactor psr: CDP: implement set value callback functions. Date: Sat, 1 Apr 2017 21:53:48 +0800 Message-ID: <1491054836-30488-18-git-send-email-yi.y.sun@linux.intel.com> References: <1491054836-30488-1-git-send-email-yi.y.sun@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta3.messagelabs.com ([195.245.230.39]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cuJU2-00066C-Ew for xen-devel@lists.xenproject.org; Sat, 01 Apr 2017 13:54:26 +0000 In-Reply-To: <1491054836-30488-1-git-send-email-yi.y.sun@linux.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.xenproject.org Cc: kevin.tian@intel.com, wei.liu2@citrix.com, andrew.cooper3@citrix.com, dario.faggioli@citrix.com, he.chen@linux.intel.com, ian.jackson@eu.citrix.com, Yi Sun , mengxu@cis.upenn.edu, jbeulich@suse.com, chao.p.peng@linux.intel.com, roger.pau@citrix.com List-Id: xen-devel@lists.xenproject.org VGhpcyBwYXRjaCBpbXBsZW1lbnRzIEwzIENEUCBzZXQgdmFsdWUgcmVsYXRlZCBjYWxsYmFjayBm dW5jdGlvbnMuCgpXaXRoIHRoaXMgcGF0Y2gsICdwc3ItY2F0LWNibS1zZXQnIGNvbW1hbmQgY2Fu IHdvcmsgZm9yIEwzIENEUC4KClNpZ25lZC1vZmYtYnk6IFlpIFN1biA8eWkueS5zdW5AbGludXgu aW50ZWwuY29tPgotLS0KdjEwOgogICAgLSByZW1vdmUgJ2wzX2NkcF9nZXRfb2xkX3ZhbCcgYW5k IHVzZSAnbDNfY2RwX2dldF92YWwnIHRvIHJlcGxhY2UgaXQuCiAgICAgIChzdWdnZXN0ZWQgYnkg SmFuIEJldWxpY2gpCiAgICAtIHJlbW92ZSAnbDNfY2RwX3NldF9uZXdfdmFsJy4KICAgIC0gbW9k aWZ5ICdpbnNlcnRfdmFsX3RvX2FycmF5JyBmbG93IHRvIGhhbmRsZSBtdWx0aXBsZSBDT1NzIGNh c2UuCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCiAgICAtIHJlbW92ZSAnbDNfY2Rw X2NvbXBhcmVfdmFsJyBhbmQgaW1wbGVtZW50IGEgZ2VuZXJpYyBmdW5jdGlvbgogICAgICAnY29t YXByZV92YWwnLgogICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKQogICAgLSByZW1vdmUg J2wzX2NkcF9maXRzX2Nvc19tYXgnLgogICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKQog ICAgLSBpbnRyb2R1Y2UgbWFjcm8gJ1BTUl9NQVhfQ09TX05VTScuCiAgICAtIGludHJvZHVjZSBh IG5ldyBtZW1iZXIgaW4gJ2ZlYXRfcHJvcHMnLCAndHlwZVtQU1JfTUFYX0NPU19OVU1dJyB0byBy ZWNvcmQKICAgICAgYWxsICdjYm1fdHlwZScgdGhlIGZlYXR1cmUgaGFzLgogICAgICAoc3VnZ2Vz dGVkIGJ5IEphbiBCZXVsaWNoKQogICAgLSBtb2RpZnkgJ2dhdGhlcl92YWxfYXJyYXknIGZsb3cg dG8gaGFuZGxlIG11bHRpcGxlIENPU3MgY2FzZS4KICAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1 bGljaCkKICAgIC0gbW9kaWZ5ICdmaW5kX2NvcycgZmxvdyBhbmQgaW1wbGVtZW50ICdjb21wYXJl X3ZhbCcgdG8gaGFuZGxlIG11bHRpcGxlCiAgICAgIENPU3MgY2FzZS4KICAgICAgKHN1Z2dlc3Rl ZCBieSBKYW4gQmV1bGljaCkKICAgIC0gbW9kaWZ5ICdmaXRzX2Nvc19tYXgnIGZsb3cgdG8gaGFu ZGxlIG11bHRpcGxlIENPU3MgY2FzZS4KICAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkK ICAgIC0gY2hhbmdlcyBhYm91dCAncHJvcHMnLgogICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVs aWNoKQogICAgLSByZW1vdmUgY2FzdCBpbiAnbDNfY2RwX3dyaXRlX21zcicuCiAgICAgIChzdWdn ZXN0ZWQgYnkgSmFuIEJldWxpY2gpCiAgICAtIGltcGxlbWVudCAnY29tcGFyZV92YWwnIGZ1bmN0 aW9uIHRvIGNvbXBhcmUgaWYgZmVhdHVyZSB2YWx1ZXMgYXJlIHdoYXQKICAgICAgd2UgZXhwZWN0 IGluIGZpbmRpbmcgZmxvdy4KICAgIC0gaW1wbGVtZW50ICdyZXN0b3JlX2RlZmF1bHRfdmFsJyBm dW5jdGlvbiB0byByZXN0b3JlIGZlYXR1cmUncyBDT1MgdmFsdWVzCiAgICAgIHRvIGRlZmF1bHQg aWYgdGhlIGZlYXR1cmUgaGFzIG11bHRpcGxlIENPU3MuIEl0IGlzIGNhbGxlZCB3aGVuIHRoZSBD T1MKICAgICAgSUQgaXMgcmVkdWNlZCB0byAwLgp2OToKICAgIC0gYWRkIGNvbW1lbnQgdG8gZXhw bGFpbiB3aHkgQ0RQIHVzZXMgMiBDT1NzLgogICAgICAoc3VnZ2VzdGVkIGJ5IFdlaSBMaXUpCiAg ICAtIHVzZSAnY2F0X2RlZmF1bHRfdmFsJy4KICAgICAgKHN1Z2dlc3RlZCBieSBXZWkgTGl1KQog ICAgLSByZW1vdmUgJ2wzX2NkcF9nZXRfY29zX251bScgYmVjYXVzZSB3ZSBjYW4gZGlyZWN0bHkg Z2V0IGNvc19udW0gZnJvbQogICAgICBmZWF0X25vZGUgbm93LgogICAgICAoc3VnZ2VzdGVkIGJ5 IEphbiBCZXVsaWNoKQogICAgLSByZW1vdmUgY29zIGNoZWNraW5nIGJlY2F1c2UgaXQgaGFzIGJl ZW4gbW92ZWQgdG8gY29tbW9uIGZ1bmN0aW9uLgogICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVs aWNoKQogICAgLSBsM19jZHBfc2V0X25ld192YWwgcGFyYW1ldGVyICdtJyBpcyBjaGFuZ2VkIHRv ICduZXdfdmFsJy4KICAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkKICAgIC0gZGlyZWN0 bHkgdXNlIGdldF9jZHBfZGF0YShmZWF0LCAwKSBhbmQgZ2V0X2NkcF9jb2RlKGZlYXQsIDApIHRv IGdldAogICAgICBkZWZhdWx0IHZhbHVlLgogICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNo KQogICAgLSBtb2RpZnkgJ2wzX2NkcF93cml0ZV9tc3InIGZsb3cgdG8gd3JpdGUgdmFsdWUgaW50 byByZWdpc3RlciBhY2NvcmRpbmcKICAgICAgdG8gaW5wdXQgdHlwZS4KICAgIC0gY2hhbmdlcyBh Ym91dCAndWludDY0X3QnIHRvICd1aW50MzJfdCcuCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJl dWxpY2gpCnY4OgogICAgLSBtb2RpZnkgJ2wzX2NkcF93cml0ZV9tc3InIHR5cGUgdG8gJ3ZvaWQn Lgp2NToKICAgIC0gcmVtb3ZlIHR5cGUgY2hlY2sgaW4gY2FsbGJhY2sgZnVuY3Rpb24uCiAgICAg IChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCiAgICAtIG1vZGlmeSByZXR1cm4gdmFsdWUgb2Yg Y2FsbGJhY2sgZnVuY3Rpb25zIGJlY2F1c2Ugd2UgZG8gbm90IG5lZWQgdGhlbQogICAgICB0byBy ZXR1cm4gbnVtYmVyIG9mIGVudHJpZXMgdGhlIGZlYXR1cmUgdXNlcy4gSW4gY2FsbGVyLCB3ZSBj YWxsCiAgICAgICdnZXRfY29zX251bScgdG8gZ2V0IHRoZSBudW1iZXIgb2YgZW50cmllcyB0aGUg ZmVhdHVyZSB1c2VzLgogICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKQogICAgLSByZW1v dmUgJ2wzX2NkcF9nZXRfY29zX21heF9mcm9tX3R5cGUnLgogICAgLSByZW5hbWUgJ2wzX2NkcF9l eGNlZWRzX2Nvc19tYXgnIHRvICdsM19jZHBfZml0c19jb3NfbWF4Jy4KICAgICAgKHN1Z2dlc3Rl ZCBieSBKYW4gQmV1bGljaCkKdjQ6CiAgICAtIGNyZWF0ZSB0aGlzIHBhdGNoIHRvIG1ha2UgY29k ZXMgZWFzaWVyIHRvIHVuZGVyc3RhbmQuCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gp Ci0tLQogeGVuL2FyY2gveDg2L3Bzci5jIHwgMjI2ICsrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKystLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgMTgzIGluc2VydGlv bnMoKyksIDQzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9wc3IuYyBi L3hlbi9hcmNoL3g4Ni9wc3IuYwppbmRleCBhY2VkMDEyLi5iZmExNzc3IDEwMDY0NAotLS0gYS94 ZW4vYXJjaC94ODYvcHNyLmMKKysrIGIveGVuL2FyY2gveDg2L3Bzci5jCkBAIC01MSw2ICs1MSwx NCBAQAogCiAjZGVmaW5lIFBTUl9BU1NPQ19SRUdfU0hJRlQgMzIKIAorLyoKKyAqIEV2ZXJ5IFBT UiBmZWF0dXJlIHVzZXMgc29tZSBDT1MgcmVnaXN0ZXJzIGZvciBlYWNoIENPUyBJRCwgZS5nLiBD RFAgdXNlcyAyCisgKiBDT1MgcmVnaXN0ZXJzIChEQVRBIGFuZCBDT0RFKSBmb3Igb25lIENPUyBJ RCwgYnV0IENBVCB1c2VzIDEgQ09TIHJlZ2lzdGVyLgorICogV2UgdXNlIGJlbG93IG1hY3JvIGFz IHRoZSBtYXggbnVtYmVyIG9mIENPUyByZWdpc3RlcnMgdXNlZCBieSBhbGwgZmVhdHVyZXMuCisg KiBTbyBmYXIsIGl0IGlzIDIgd2hpY2ggbWVhbnMgQ0RQJ3MgQ09TIHJlZ2lzdGVycyBudW1iZXIu CisgKi8KKyNkZWZpbmUgUFNSX01BWF9DT1NfTlVNIDIKKwogZW51bSBwc3JfZmVhdF90eXBlIHsK ICAgICBQU1JfU09DS0VUX0wzX0NBVCwKICAgICBQU1JfU09DS0VUX0wzX0NEUCwKQEAgLTk0LDYg KzEwMiwxMyBAQCBzdHJ1Y3QgZmVhdF9ub2RlIHsKICAgICAgICAgdW5zaWduZWQgaW50IGNvc19t YXg7CiAgICAgICAgIHVuc2lnbmVkIGludCBjYm1fbGVuOwogCisgICAgICAgIC8qCisgICAgICAg ICAqIEFuIGFycmF5IHRvIHNhdmUgYWxsICdlbnVtIGNibV90eXBlJyB2YWx1ZXMgb2YgdGhlIGZl YXR1cmUuIEl0IGlzCisgICAgICAgICAqIHVzZWQgd2l0aCBjb3NfbnVtIHRvZ2V0aGVyIHRvIGdl dC93cml0ZSBhIGZlYXR1cmUncyBDT1MgcmVnaXN0ZXJzCisgICAgICAgICAqIHZhbHVlcyBvbmUg Ynkgb25lLgorICAgICAgICAgKi8KKyAgICAgICAgZW51bSBjYm1fdHlwZSB0eXBlW1BTUl9NQVhf Q09TX05VTV07CisKICAgICAgICAgLyogZ2V0X2ZlYXRfaW5mbyBpcyB1c2VkIHRvIGdldCBmZWF0 dXJlIEhXIGluZm8uICovCiAgICAgICAgIGJvb2wgKCpnZXRfZmVhdF9pbmZvKShjb25zdCBzdHJ1 Y3QgZmVhdF9ub2RlICpmZWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMy X3QgZGF0YVtdLCB1bnNpZ25lZCBpbnQgYXJyYXlfbGVuKTsKQEAgLTEwNCw3ICsxMTksNyBAQCBz dHJ1Y3QgZmVhdF9ub2RlIHsKIAogICAgICAgICAvKiB3cml0ZV9tc3IgaXMgdXNlZCB0byB3cml0 ZSBvdXQgZmVhdHVyZSBNU1IgcmVnaXN0ZXIuICovCiAgICAgICAgIHZvaWQgKCp3cml0ZV9tc3Ip KHVuc2lnbmVkIGludCBjb3MsIHVpbnQzMl90IHZhbCwKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgc3RydWN0IGZlYXRfbm9kZSAqZmVhdCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgIGVu dW0gY2JtX3R5cGUgdHlwZSwgc3RydWN0IGZlYXRfbm9kZSAqZmVhdCk7CiAgICAgfSAqcHJvcHM7 CiAKICAgICB1aW50MzJfdCBjb3NfcmVnX3ZhbFtNQVhfQ09TX1JFR19DTlRdOwpAQCAtMjkyLDYg KzMwNyw4IEBAIHN0YXRpYyB2b2lkIGNhdF9pbml0X2ZlYXR1cmUoY29uc3Qgc3RydWN0IGNwdWlk X2xlYWYgKnJlZ3MsCiAgICAgICAgIC8qIGNvcz0wIGlzIHJlc2VydmVkIGFzIGRlZmF1bHQgY2Jt KGFsbCBiaXRzIHdpdGhpbiBjYm1fbGVuIGFyZSAxKS4gKi8KICAgICAgICAgZmVhdC0+Y29zX3Jl Z192YWxbMF0gPSBjYXRfZGVmYXVsdF92YWwoZmVhdC0+cHJvcHMtPmNibV9sZW4pOwogCisgICAg ICAgIGZlYXQtPnByb3BzLT50eXBlWzBdID0gUFNSX0NCTV9UWVBFX0wzOworCiAgICAgICAgIC8q CiAgICAgICAgICAqIFRvIGhhbmRsZSBjcHUgb2ZmbGluZSBhbmQgdGhlbiBvbmxpbmUgY2FzZSwg d2UgbmVlZCByZXN0b3JlIE1TUnMgdG8KICAgICAgICAgICogZGVmYXVsdCB2YWx1ZXMuCkBAIC0z MjAsNiArMzM3LDkgQEAgc3RhdGljIHZvaWQgY2F0X2luaXRfZmVhdHVyZShjb25zdCBzdHJ1Y3Qg Y3B1aWRfbGVhZiAqcmVncywKICAgICAgICAgZ2V0X2NkcF9jb2RlKGZlYXQsIDApID0gY2F0X2Rl ZmF1bHRfdmFsKGZlYXQtPnByb3BzLT5jYm1fbGVuKTsKICAgICAgICAgZ2V0X2NkcF9kYXRhKGZl YXQsIDApID0gY2F0X2RlZmF1bHRfdmFsKGZlYXQtPnByb3BzLT5jYm1fbGVuKTsKIAorICAgICAg ICBmZWF0LT5wcm9wcy0+dHlwZVswXSA9IFBTUl9DQk1fVFlQRV9MM19EQVRBOworICAgICAgICBm ZWF0LT5wcm9wcy0+dHlwZVsxXSA9IFBTUl9DQk1fVFlQRV9MM19DT0RFOworCiAgICAgICAgIC8q CiAgICAgICAgICAqIFRvIGhhbmRsZSBjcHUgb2ZmbGluZSBhbmQgdGhlbiBvbmxpbmUgY2FzZSwg d2UgbmVlZCByZXN0b3JlIE1TUnMgdG8KICAgICAgICAgICogZGVmYXVsdCB2YWx1ZXMuCkBAIC0z NzMsNyArMzkzLDcgQEAgc3RhdGljIHZvaWQgY2F0X2dldF92YWwoY29uc3Qgc3RydWN0IGZlYXRf bm9kZSAqZmVhdCwgdW5zaWduZWQgaW50IGNvcywKIAogLyogTDMgQ0FUIG9wcyAqLwogc3RhdGlj IHZvaWQgbDNfY2F0X3dyaXRlX21zcih1bnNpZ25lZCBpbnQgY29zLCB1aW50MzJfdCB2YWwsCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBmZWF0X25vZGUgKmZlYXQpCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGVudW0gY2JtX3R5cGUgdHlwZSwgc3RydWN0IGZlYXRf bm9kZSAqZmVhdCkKIHsKICAgICBpZiAoIGZlYXQtPmNvc19yZWdfdmFsW2Nvc10gIT0gdmFsICkK ICAgICB7CkBAIC00MTAsMTAgKzQzMCwyOCBAQCBzdGF0aWMgdm9pZCBsM19jZHBfZ2V0X3ZhbChj b25zdCBzdHJ1Y3QgZmVhdF9ub2RlICpmZWF0LCB1bnNpZ25lZCBpbnQgY29zLAogICAgICAgICAq dmFsID0gZ2V0X2NkcF9jb2RlKGZlYXQsIGNvcyk7CiB9CiAKK3N0YXRpYyB2b2lkIGwzX2NkcF93 cml0ZV9tc3IodW5zaWduZWQgaW50IGNvcywgdWludDMyX3QgdmFsLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBlbnVtIGNibV90eXBlIHR5cGUsIHN0cnVjdCBmZWF0X25vZGUgKmZlYXQp Cit7CisgICAgLyogRGF0YSAqLworICAgIGlmICggdHlwZSA9PSBQU1JfQ0JNX1RZUEVfTDNfREFU QSAmJiBnZXRfY2RwX2RhdGEoZmVhdCwgY29zKSAhPSB2YWwgKQorICAgIHsKKyAgICAgICAgZ2V0 X2NkcF9kYXRhKGZlYXQsIGNvcykgPSB2YWw7CisgICAgICAgIHdybXNybChNU1JfSUEzMl9QU1Jf TDNfTUFTS19EQVRBKGNvcyksIHZhbCk7CisgICAgfQorICAgIC8qIENvZGUgKi8KKyAgICBpZiAo IHR5cGUgPT0gUFNSX0NCTV9UWVBFX0wzX0NPREUgJiYgZ2V0X2NkcF9jb2RlKGZlYXQsIGNvcykg IT0gdmFsICkKKyAgICB7CisgICAgICAgIGdldF9jZHBfY29kZShmZWF0LCBjb3MpID0gdmFsOwor ICAgICAgICB3cm1zcmwoTVNSX0lBMzJfUFNSX0wzX01BU0tfQ09ERShjb3MpLCB2YWwpOworICAg IH0KK30KKwogc3RhdGljIHN0cnVjdCBmZWF0X3Byb3BzIGwzX2NkcF9wcm9wcyA9IHsKICAgICAu Y29zX251bSA9IDIsCiAgICAgLmdldF9mZWF0X2luZm8gPSBsM19jZHBfZ2V0X2ZlYXRfaW5mbywK ICAgICAuZ2V0X3ZhbCA9IGwzX2NkcF9nZXRfdmFsLAorICAgIC53cml0ZV9tc3IgPSBsM19jZHBf d3JpdGVfbXNyLAogfTsKIAogc3RhdGljIHZvaWQgX19pbml0IHBhcnNlX3Bzcl9ib29sKGNoYXIg KnMsIGNoYXIgKnZhbHVlLCBjaGFyICpmZWF0dXJlLApAQCAtNzQxLDcgKzc3OSw3IEBAIHN0YXRp YyBpbnQgZ2F0aGVyX3ZhbF9hcnJheSh1aW50MzJfdCB2YWxbXSwKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBjb25zdCBzdHJ1Y3QgcHNyX3NvY2tldF9pbmZvICppbmZvLAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBvbGRfY29zKQogewotICAgIHVuc2lnbmVk IGludCBpOworICAgIHVuc2lnbmVkIGludCBpLCBqOwogCiAgICAgaWYgKCAhdmFsICkKICAgICAg ICAgcmV0dXJuIC1FSU5WQUw7CkBAIC03NjQsOCArODAyLDEzIEBAIHN0YXRpYyBpbnQgZ2F0aGVy X3ZhbF9hcnJheSh1aW50MzJfdCB2YWxbXSwKICAgICAgICAgaWYgKCBjb3MgPiBmZWF0LT5wcm9w cy0+Y29zX21heCApCiAgICAgICAgICAgICBjb3MgPSAwOwogCi0gICAgICAgIC8qIFZhbHVlIGdl dHRpbmcgb3JkZXIgaXMgc2FtZSBhcyBmZWF0dXJlIGFycmF5LiAqLwotICAgICAgICBmZWF0LT5w cm9wcy0+Z2V0X3ZhbChmZWF0LCBjb3MsIDAsICZ2YWxbMF0pOworICAgICAgICAvKgorICAgICAg ICAgKiBWYWx1ZSBnZXR0aW5nIG9yZGVyIGlzIHNhbWUgYXMgZmVhdHVyZSBhcnJheS4KKyAgICAg ICAgICogRm9yIENEUCwgaXQgaGFzIHR3byBDT1MgdmFsdWVzIHRvIGdldC4gV2UgZ2V0IHRoZW0g aW4gdGhpcyBvcmRlcjoKKyAgICAgICAgICogREFUQSBpcyBmaXJzdCwgQ09ERSBpcyBzZWNvbmQu CisgICAgICAgICAqLworICAgICAgICBmb3IgKCBqID0gMDsgaiA8IGZlYXQtPnByb3BzLT5jb3Nf bnVtOyBqKysgKQorICAgICAgICAgICAgZmVhdC0+cHJvcHMtPmdldF92YWwoZmVhdCwgY29zLCBm ZWF0LT5wcm9wcy0+dHlwZVtqXSwgJnZhbFtqXSk7CiAKICAgICAgICAgYXJyYXlfbGVuIC09IGZl YXQtPnByb3BzLT5jb3NfbnVtOwogCkBAIC04MTIsMTIgKzg1NSw2NiBAQCBzdGF0aWMgaW50IGlu c2VydF92YWxfdG9fYXJyYXkodWludDMyX3QgdmFsW10sCiAgICAgaWYgKCAhcHNyX2NoZWNrX2Ni bShmZWF0LT5wcm9wcy0+Y2JtX2xlbiwgbmV3X3ZhbCkgKQogICAgICAgICByZXR1cm4gLUVJTlZB TDsKIAotICAgIC8qIFZhbHVlIHNldHRpbmcgcG9zaXRpb24gaXMgc2FtZSBhcyBmZWF0dXJlIGFy cmF5LiAqLwotICAgIHZhbFswXSA9IG5ld192YWw7CisgICAgLyoKKyAgICAgKiBWYWx1ZSBzZXR0 aW5nIHBvc2l0aW9uIGlzIHNhbWUgYXMgZmVhdHVyZSBhcnJheS4KKyAgICAgKiBEaWZmZXJlbnQg ZmVhdHVyZXMgbWF5IGhhdmUgZGlmZmVyZW50IHNldHRpbmcgYmVoYXZpb3JzLCBlLmcuIENEUAor ICAgICAqIGhhcyB0d28gdmFsdWVzIChEQVRBL0NPREUpIHdoaWNoIG5lZWQgdXMgdG8gc2F2ZSBp bnB1dCB2YWx1ZSB0bworICAgICAqIGRpZmZlcmVudCBwb3NpdGlvbiBpbiB0aGUgYXJyYXkgYWNj b3JkaW5nIHRvIHR5cGUuCisgICAgICovCisgICAgZm9yICggaSA9IDA7IGkgPCBmZWF0LT5wcm9w cy0+Y29zX251bTsgaSsrICkKKyAgICB7CisgICAgICAgIGlmICggdHlwZSA9PSBmZWF0LT5wcm9w cy0+dHlwZVtpXSApCisgICAgICAgICAgICB2YWxbaV0gPSBuZXdfdmFsOworICAgIH0KIAogICAg IHJldHVybiAwOwogfQogCitzdGF0aWMgaW50IGNvbXBhcmVfdmFsKGNvbnN0IHVpbnQzMl90IHZh bFtdLAorICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgZmVhdF9ub2RlICpmZWF0 LAorICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgY29zKQoreworICAgIGludCBy YyA9IDA7CisgICAgdW5zaWduZWQgaW50IGk7CisKKyAgICBmb3IgKCBpID0gMDsgaSA8IGZlYXQt PnByb3BzLT5jb3NfbnVtOyBpKysgKQorICAgIHsKKyAgICAgICAgdWludDMyX3QgZmVhdF92YWwg PSAwOworCisgICAgICAgIHJjID0gMDsKKworICAgICAgICAvKiBJZiBjb3MgaXMgYmlnZ2VyIHRo YW4gY29zX21heCwgd2UgbmVlZCBjb21wYXJlIGRlZmF1bHQgdmFsdWUuICovCisgICAgICAgIGlm ICggY29zID4gZmVhdC0+cHJvcHMtPmNvc19tYXggKQorICAgICAgICB7CisgICAgICAgICAgICAv KgorICAgICAgICAgICAgICogQ09TIElEIDAgYWx3YXlzIHN0b3JlcyB0aGUgZGVmYXVsdCB2YWx1 ZSBzbyBpbnB1dCAwIHRvIGdldAorICAgICAgICAgICAgICogZGVmYXVsdCB2YWx1ZS4KKyAgICAg ICAgICAgICAqLworICAgICAgICAgICAgZmVhdC0+cHJvcHMtPmdldF92YWwoZmVhdCwgMCwgZmVh dC0+cHJvcHMtPnR5cGVbaV0sICZmZWF0X3ZhbCk7CisKKyAgICAgICAgICAgIC8qCisgICAgICAg ICAgICAgKiBJZiBjb3MgaXMgYmlnZ2VyIHRoYW4gZmVhdHVyZSdzIGNvc19tYXgsIHRoZSB2YWwg c2hvdWxkIGJlCisgICAgICAgICAgICAgKiBkZWZhdWx0IHZhbHVlLiBPdGhlcndpc2UsIGl0IGZh aWxzIHRvIGZpbmQgYSBDT1MgSUQuIFNvIHdlCisgICAgICAgICAgICAgKiBoYXZlIHRvIGV4aXQg ZmluZCBmbG93LgorICAgICAgICAgICAgICovCisgICAgICAgICAgICBpZiAoIHZhbFtpXSAhPSBm ZWF0X3ZhbCApCisgICAgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7CisKKyAgICAgICAgICAg IHJjID0gMTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAgLyog Rm9yIENEUCwgREFUQSBpcyB0aGUgZmlyc3QgaXRlbSBpbiB2YWxbXSwgQ09ERSBpcyB0aGUgc2Vj b25kLiAqLworICAgICAgICBmZWF0LT5wcm9wcy0+Z2V0X3ZhbChmZWF0LCBjb3MsIGZlYXQtPnBy b3BzLT50eXBlW2ldLCAmZmVhdF92YWwpOworICAgICAgICBpZiAoIHZhbFtpXSAhPSBmZWF0X3Zh bCApCisgICAgICAgICAgICBicmVhazsKKworICAgICAgICByYyA9IDE7CisgICAgfQorCisgICAg cmV0dXJuIHJjOworfQorCiBzdGF0aWMgaW50IGZpbmRfY29zKGNvbnN0IHVpbnQzMl90IHZhbFtd LCB1bnNpZ25lZCBpbnQgYXJyYXlfbGVuLAogICAgICAgICAgICAgICAgICAgICBlbnVtIHBzcl9m ZWF0X3R5cGUgZmVhdF90eXBlLAogICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgcHNy X3NvY2tldF9pbmZvICppbmZvLApAQCAtODQwLDcgKzkzNyw3IEBAIHN0YXRpYyBpbnQgZmluZF9j b3MoY29uc3QgdWludDMyX3QgdmFsW10sIHVuc2lnbmVkIGludCBhcnJheV9sZW4sCiAgICAgZm9y ICggY29zID0gMDsgY29zIDw9IGNvc19tYXg7IGNvcysrICkKICAgICB7CiAgICAgICAgIGNvbnN0 IHVpbnQzMl90ICp2YWxfcHRyID0gdmFsOwotICAgICAgICBib29sIGZvdW5kID0gZmFsc2U7Cisg ICAgICAgIGludCByYyA9IDA7CiAKICAgICAgICAgaWYgKCBjb3MgJiYgIXJlZltjb3NdICkKICAg ICAgICAgICAgIGNvbnRpbnVlOwpAQCAtODUxLDQzICs5NDgsMjEgQEAgc3RhdGljIGludCBmaW5k X2Nvcyhjb25zdCB1aW50MzJfdCB2YWxbXSwgdW5zaWduZWQgaW50IGFycmF5X2xlbiwKICAgICAg ICAgICovCiAgICAgICAgIGZvciAoIGkgPSAwOyBpIDwgUFNSX1NPQ0tFVF9NQVhfRkVBVDsgaSsr ICkKICAgICAgICAgewotICAgICAgICAgICAgdWludDMyX3QgZGVmYXVsdF92YWwgPSAwOwotCiAg ICAgICAgICAgICBmZWF0ID0gaW5mby0+ZmVhdHVyZXNbaV07CiAgICAgICAgICAgICBpZiAoICFm ZWF0ICkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICAgICAgLyoKLSAgICAg ICAgICAgICAqIENPUyBJRCAwIGFsd2F5cyBzdG9yZXMgdGhlIGRlZmF1bHQgdmFsdWUgc28gaW5w dXQgMCB0byBnZXQKLSAgICAgICAgICAgICAqIGRlZmF1bHQgdmFsdWUuCi0gICAgICAgICAgICAg Ki8KLSAgICAgICAgICAgIGZlYXQtPnByb3BzLT5nZXRfdmFsKGZlYXQsIDAsIDAsICZkZWZhdWx0 X3ZhbCk7Ci0KLSAgICAgICAgICAgIC8qCiAgICAgICAgICAgICAgKiBDb21wYXJlIHZhbHVlIGFj Y29yZGluZyB0byBmZWF0dXJlIGFycmF5IG9yZGVyLgogICAgICAgICAgICAgICogV2UgbXVzdCBm b2xsb3cgdGhpcyBvcmRlciBiZWNhdXNlIHZhbHVlIGFycmF5IGlzIGFzc2VtYmxlZAogICAgICAg ICAgICAgICogYXMgdGhpcyBvcmRlci4KICAgICAgICAgICAgICAqLwotICAgICAgICAgICAgaWYg KCBjb3MgPiBmZWF0LT5wcm9wcy0+Y29zX21heCApCi0gICAgICAgICAgICB7Ci0gICAgICAgICAg ICAgICAgLyoKLSAgICAgICAgICAgICAgICAgKiBJZiBjb3MgaXMgYmlnZ2VyIHRoYW4gZmVhdHVy ZSdzIGNvc19tYXgsIHRoZSB2YWwgc2hvdWxkIGJlCi0gICAgICAgICAgICAgICAgICogZGVmYXVs dCB2YWx1ZS4gT3RoZXJ3aXNlLCBpdCBmYWlscyB0byBmaW5kIGEgQ09TIElELiBTbyB3ZQotICAg ICAgICAgICAgICAgICAqIGhhdmUgdG8gZXhpdCBmaW5kIGZsb3cuCi0gICAgICAgICAgICAgICAg ICovCi0gICAgICAgICAgICAgICAgaWYgKCB2YWxbMF0gIT0gZGVmYXVsdF92YWwgKQotICAgICAg ICAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKLQotICAgICAgICAgICAgICAgIGZvdW5kID0g dHJ1ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHsKLSAg ICAgICAgICAgICAgICBpZiAoIHZhbFswXSA9PSBmZWF0LT5jb3NfcmVnX3ZhbFtjb3NdICkKLSAg ICAgICAgICAgICAgICAgICAgZm91bmQgPSB0cnVlOwotICAgICAgICAgICAgfQorICAgICAgICAg ICAgcmMgPSBjb21wYXJlX3ZhbCh2YWwsIGZlYXQsIGNvcyk7CisgICAgICAgICAgICBpZiAoIHJj IDwgMCApCisgICAgICAgICAgICAgICAgcmV0dXJuIHJjOwogCiAgICAgICAgICAgICAvKiBJZiBm YWlsIHRvIG1hdGNoLCBnbyB0byBuZXh0IGNvcyB0byBjb21wYXJlLiAqLwotICAgICAgICAgICAg aWYgKCAhZm91bmQgKQorICAgICAgICAgICAgaWYgKCAhcmMgKQogICAgICAgICAgICAgICAgIGJy ZWFrOwogCiAgICAgICAgICAgICB2YWxfcHRyICs9IGZlYXQtPnByb3BzLT5jb3NfbnVtOwpAQCAt ODk2LDcgKzk3MSw3IEBAIHN0YXRpYyBpbnQgZmluZF9jb3MoY29uc3QgdWludDMyX3QgdmFsW10s IHVuc2lnbmVkIGludCBhcnJheV9sZW4sCiAgICAgICAgIH0KIAogICAgICAgICAvKiBGb3IgdGhp cyBDT1MgSUQgYWxsIGVudHJpZXMgaW4gdGhlIHZhbHVlcyBhcnJheSBkbyBtYXRjaC4gVXNlIGl0 LiAqLwotICAgICAgICBpZiAoIGZvdW5kICkKKyAgICAgICAgaWYgKCByYyApCiAgICAgICAgICAg ICByZXR1cm4gY29zOwogICAgIH0KIApAQCAtOTA4LDcgKzk4Myw3IEBAIHN0YXRpYyBib29sIGZp dHNfY29zX21heChjb25zdCB1aW50MzJfdCB2YWxbXSwKICAgICAgICAgICAgICAgICAgICAgICAg ICBjb25zdCBzdHJ1Y3QgcHNyX3NvY2tldF9pbmZvICppbmZvLAogICAgICAgICAgICAgICAgICAg ICAgICAgIHVuc2lnbmVkIGludCBjb3MpCiB7Ci0gICAgdW5zaWduZWQgaW50IGk7CisgICAgdW5z aWduZWQgaW50IGksIGo7CiAKICAgICBmb3IgKCBpID0gMDsgaSA8IFBTUl9TT0NLRVRfTUFYX0ZF QVQ7IGkrKyApCiAgICAgewpAQCAtOTIyLDkgKzk5NywxNCBAQCBzdGF0aWMgYm9vbCBmaXRzX2Nv c19tYXgoY29uc3QgdWludDMyX3QgdmFsW10sCiAKICAgICAgICAgaWYgKCBjb3MgPiBmZWF0LT5w cm9wcy0+Y29zX21heCApCiAgICAgICAgIHsKLSAgICAgICAgICAgIGZlYXQtPnByb3BzLT5nZXRf dmFsKGZlYXQsIDAsIDAsICZkZWZhdWx0X3ZhbCk7Ci0gICAgICAgICAgICBpZiAoIHZhbFswXSAh PSBkZWZhdWx0X3ZhbCApCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAg ICAgLyogRm9yIENEUCwgREFUQSBpcyB0aGUgZmlyc3QgaXRlbSBpbiB2YWxbXSwgQ09ERSBpcyB0 aGUgc2Vjb25kLiAqLworICAgICAgICAgICAgZm9yICggaiA9IDA7IGogPCBmZWF0LT5wcm9wcy0+ Y29zX251bTsgaisrICkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBmZWF0LT5wcm9w cy0+Z2V0X3ZhbChmZWF0LCAwLCBmZWF0LT5wcm9wcy0+dHlwZVtqXSwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAmZGVmYXVsdF92YWwpOworICAgICAgICAgICAgICAgIGlm ICggdmFsW2pdICE9IGRlZmF1bHRfdmFsICkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZh bHNlOworICAgICAgICAgICAgfQogICAgICAgICB9CiAKICAgICAgICAgYXJyYXlfbGVuIC09IGZl YXQtPnByb3BzLT5jb3NfbnVtOwpAQCAtOTk0LDYgKzEwNzQsNyBAQCBzdHJ1Y3QgY29zX3dyaXRl X2luZm8KICAgICB1bnNpZ25lZCBpbnQgY29zOwogICAgIHN0cnVjdCBmZWF0X25vZGUgKmZlYXR1 cmU7CiAgICAgdWludDMyX3QgdmFsOworICAgIGVudW0gY2JtX3R5cGUgdHlwZTsKIH07CiAKIHN0 YXRpYyB2b2lkIGRvX3dyaXRlX3Bzcl9tc3Iodm9pZCAqZGF0YSkKQEAgLTEwMDUsMTEgKzEwODYs MTIgQEAgc3RhdGljIHZvaWQgZG9fd3JpdGVfcHNyX21zcih2b2lkICpkYXRhKQogICAgIGlmICgg Y29zID4gZmVhdC0+cHJvcHMtPmNvc19tYXggKQogICAgICAgICByZXR1cm47CiAKLSAgICBmZWF0 LT5wcm9wcy0+d3JpdGVfbXNyKGNvcywgaW5mby0+dmFsLCBmZWF0KTsKKyAgICBmZWF0LT5wcm9w cy0+d3JpdGVfbXNyKGNvcywgaW5mby0+dmFsLCBpbmZvLT50eXBlLCBmZWF0KTsKIH0KIAogc3Rh dGljIGludCB3cml0ZV9wc3JfbXNyKHVuc2lnbmVkIGludCBzb2NrZXQsIHVuc2lnbmVkIGludCBj b3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgdmFsLCBlbnVtIHBzcl9mZWF0 X3R5cGUgZmVhdF90eXBlKQorICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHZhbCwg ZW51bSBjYm1fdHlwZSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgIGVudW0gcHNyX2Zl YXRfdHlwZSBmZWF0X3R5cGUpCiB7CiAgICAgc3RydWN0IHBzcl9zb2NrZXRfaW5mbyAqaW5mbyA9 IGdldF9zb2NrZXRfaW5mbyhzb2NrZXQpOwogICAgIHN0cnVjdCBjb3Nfd3JpdGVfaW5mbyBkYXRh ID0KQEAgLTEwMTcsNiArMTA5OSw3IEBAIHN0YXRpYyBpbnQgd3JpdGVfcHNyX21zcih1bnNpZ25l ZCBpbnQgc29ja2V0LCB1bnNpZ25lZCBpbnQgY29zLAogICAgICAgICAuY29zID0gY29zLAogICAg ICAgICAuZmVhdHVyZSA9IGluZm8tPmZlYXR1cmVzW2ZlYXRfdHlwZV0sCiAgICAgICAgIC52YWwg PSB2YWwsCisgICAgICAgIC50eXBlID0gdHlwZSwKICAgICB9OwogCiAgICAgaWYgKCBzb2NrZXQg PT0gY3B1X3RvX3NvY2tldChzbXBfcHJvY2Vzc29yX2lkKCkpICkKQEAgLTEwMzMsNiArMTExNiw0 MCBAQCBzdGF0aWMgaW50IHdyaXRlX3Bzcl9tc3IodW5zaWduZWQgaW50IHNvY2tldCwgdW5zaWdu ZWQgaW50IGNvcywKICAgICByZXR1cm4gMDsKIH0KIAorc3RhdGljIHZvaWQgcmVzdG9yZV9kZWZh dWx0X3ZhbCh1bnNpZ25lZCBpbnQgc29ja2V0LCB1bnNpZ25lZCBpbnQgY29zLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBlbnVtIHBzcl9mZWF0X3R5cGUgZmVhdF90eXBlKQorewor ICAgIHVuc2lnbmVkIGludCBpLCBqOworICAgIHVpbnQzMl90IGRlZmF1bHRfdmFsOworICAgIGNv bnN0IHN0cnVjdCBwc3Jfc29ja2V0X2luZm8gKmluZm8gPSBnZXRfc29ja2V0X2luZm8oc29ja2V0 KTsKKworICAgIGZvciAoIGkgPSAwOyBpIDwgUFNSX1NPQ0tFVF9NQVhfRkVBVDsgaSsrICkKKyAg ICB7CisgICAgICAgIGNvbnN0IHN0cnVjdCBmZWF0X25vZGUgKmZlYXQgPSBpbmZvLT5mZWF0dXJl c1tpXTsKKyAgICAgICAgLyoKKyAgICAgICAgICogVGhlcmUgYXJlIGZvdXIganVkZ2VtZW50czoK KyAgICAgICAgICogMS4gSW5wdXQgJ2ZlYXRfdHlwZScgaXMgdmFsaWQgc28gd2UgaGF2ZSB0byBn ZXQgZmVhdHVyZSBhY2NvcmRpbmcgdG8KKyAgICAgICAgICogICAgaXQuIElmIGN1cnJlbnQgZmVh dHVyZSB0eXBlIChpKSBkb2VzIG5vdCBtYXRjaCAnZmVhdF90eXBlJywgd2UKKyAgICAgICAgICog ICAgbmVlZCBza2lwIGl0LCBzbyBjb250aW51ZSB0byBjaGVjayBuZXh0IGZlYXR1cmUuCisgICAg ICAgICAqIDIuIElucHV0ICdmZWF0X3R5cGUnIGlzICdQU1JfU09DS0VUX01BWF9GRUFUJyB3aGlj aCBtZWFucyB3ZSBzaG91bGQKKyAgICAgICAgICogICAgaGFuZGxlIGFsbCBmZWF0dXJlcyBpbiB0 aGlzIGNhc2UuIFNvLCBnbyB0byBuZXh0IGxvb3AuCisgICAgICAgICAqIDMuIERvIG5vdCBuZWVk IHJlc3RvcmUgdGhlIENPUyB2YWx1ZSBiYWNrIHRvIGRlZmF1bHQgaWYgY29zX251bSBpcyAxLAor ICAgICAgICAgKiAgICBlLmcuIEwzIENBVC4gQmVjYXVzZSBuZXh0IHZhbHVlIHNldHRpbmcgd2ls bCBvdmVyd3JpdGUgaXQuCisgICAgICAgICAqIDQuICdmZWF0JyB3ZSBnb3QgaXMgTlVMTCwgY29u dGludWUuCisgICAgICAgICAqLworICAgICAgICBpZiAoICggZmVhdF90eXBlICE9IFBTUl9TT0NL RVRfTUFYX0ZFQVQgJiYgZmVhdF90eXBlICE9IGkgKSB8fAorICAgICAgICAgICAgICFmZWF0IHx8 IGZlYXQtPnByb3BzLT5jb3NfbnVtID09IDEgKQorICAgICAgICAgICAgY29udGludWU7CisKKyAg ICAgICAgZm9yICggaiA9IDA7IGogPCBmZWF0LT5wcm9wcy0+Y29zX251bTsgaisrICkKKyAgICAg ICAgeworICAgICAgICAgICAgZmVhdC0+cHJvcHMtPmdldF92YWwoZmVhdCwgMCwgZmVhdC0+cHJv cHMtPnR5cGVbal0sICZkZWZhdWx0X3ZhbCk7CisgICAgICAgICAgICB3cml0ZV9wc3JfbXNyKHNv Y2tldCwgY29zLCBkZWZhdWx0X3ZhbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZmVhdC0+ cHJvcHMtPnR5cGVbal0sIGkpOworICAgICAgICB9CisgICAgfQorfQorCiAvKiBUaGUgd2hvbGUg c2V0IHByb2Nlc3MgaXMgcHJvdGVjdGVkIGJ5IGRvbWN0bF9sb2NrLiAqLwogaW50IHBzcl9zZXRf dmFsKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGludCBzb2NrZXQsCiAgICAgICAgICAgICAg ICAgdWludDMyX3QgdmFsLCBlbnVtIGNibV90eXBlIHR5cGUpCkBAIC0xMTI1LDcgKzEyNDIsNyBA QCBpbnQgcHNyX3NldF92YWwoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgaW50IHNvY2tldCwK ICAgICAgICAgICogU3RlcCA0OgogICAgICAgICAgKiBXcml0ZSBhbGwgZmVhdHVyZXMgTVNScyBh Y2NvcmRpbmcgdG8gdGhlIENPUyBJRC4KICAgICAgICAgICovCi0gICAgICAgIHJldCA9IHdyaXRl X3Bzcl9tc3Ioc29ja2V0LCBjb3MsIHZhbCwgZmVhdF90eXBlKTsKKyAgICAgICAgcmV0ID0gd3Jp dGVfcHNyX21zcihzb2NrZXQsIGNvcywgdmFsLCB0eXBlLCBmZWF0X3R5cGUpOwogICAgICAgICBp ZiAoIHJldCApCiAgICAgICAgICAgICBnb3RvIHVubG9ja19mcmVlX2FycmF5OwogICAgIH0KQEAg LTExMzksMTAgKzEyNTYsMjYgQEAgaW50IHBzcl9zZXRfdmFsKHN0cnVjdCBkb21haW4gKmQsIHVu c2lnbmVkIGludCBzb2NrZXQsCiAgICAgQVNTRVJUKCFjb3MgfHwgcmVmW2Nvc10pOwogICAgIEFT U0VSVCghb2xkX2NvcyB8fCByZWZbb2xkX2Nvc10pOwogICAgIHJlZltvbGRfY29zXS0tOwotICAg IHNwaW5fdW5sb2NrKCZpbmZvLT5yZWZfbG9jayk7CiAKICAgICAvKgogICAgICAqIFN0ZXAgNjoK KyAgICAgKiBGb3IgZmVhdHVyZXMsICBlLmcuIENEUCwgd2hpY2ggY29zX251bSBpcyBtb3JlIHRo YW4gMSwgd2UgaGF2ZSB0bworICAgICAqIHJlc3RvcmUgdGhlIG9sZF9jb3MgdmFsdWUgYmFjayB0 byBkZWZhdWx0IHdoZW4gcmVmW29sZF9jb3NdIGlzIDAuCisgICAgICogT3RoZXJ3aXNlLCB1c2Vy IHdpbGwgc2VlIHdyb25nIHZhbHVlcyB3aGVuIHRoaXMgQ09TIElEIGlzIHJldXNlZC4gRS5nLgor ICAgICAqIHVzZXIgd2FudHMgdG8gc2V0IERBVEEgdG8gMHgzZmYgZm9yIGEgbmV3IGRvbWFpbi4g SGUgaG9wZXMgdG8gc2VlIHRoZQorICAgICAqIERBVEEgaXMgc2V0IHRvIDB4M2ZmIGFuZCBDT0RF IHNob3VsZCBiZSB0aGUgZGVmYXVsdCB2YWx1ZSwgMHg3ZmYuIEJ1dAorICAgICAqIGlmIHRoZSBD T1MgSUQgcGlja2VkIGZvciB0aGlzIGFjdGlvbiBpcyB0aGUgb25lIHRoYXQgaGFzIGJlZW4gdXNl ZCBieQorICAgICAqIG90aGVyIGRvbWFpbiBhbmQgdGhlIENPREUgaGFzIGJlZW4gc2V0IHRvIDB4 MWZmLiBUaGVuLCB1c2VyIHdpbGwgc2VlCisgICAgICogREFUQTogMHgzZmYsIENPREU6IDB4MWZm LiBTbywgd2UgaGF2ZSB0byByZXN0b3JlIENPUyB2YWx1ZXMgZm9yIGZlYXR1cmVzCisgICAgICog dXNpbmcgbXVsdGlwbGUgQ09Tcy4KKyAgICAgKi8KKyAgICBpZiAoIG9sZF9jb3MgJiYgIXJlZltv bGRfY29zXSApCisgICAgICAgIHJlc3RvcmVfZGVmYXVsdF92YWwoc29ja2V0LCBvbGRfY29zLCBm ZWF0X3R5cGUpOworCisgICAgc3Bpbl91bmxvY2soJmluZm8tPnJlZl9sb2NrKTsKKworICAgIC8q CisgICAgICogU3RlcCA3OgogICAgICAqIFNhdmUgdGhlIENPUyBJRCBpbnRvIGN1cnJlbnQgZG9t YWluJ3MgcHNyX2Nvc19pZHNbXSBzbyB0aGF0IHdlIGNhbiBrbm93CiAgICAgICogd2hpY2ggQ09T IHRoZSBkb21haW4gaXMgdXNpbmcgb24gdGhlIHNvY2tldC4gT25lIGRvbWFpbiBjYW4gb25seSB1 c2UKICAgICAgKiBvbmUgQ09TIElEIGF0IHNhbWUgdGltZSBvbiBlYWNoIHNvY2tldC4KQEAgLTEx ODMsNiArMTMxNiwxMyBAQCBzdGF0aWMgdm9pZCBwc3JfZnJlZV9jb3Moc3RydWN0IGRvbWFpbiAq ZCkKICAgICAgICAgc3Bpbl9sb2NrKCZpbmZvLT5yZWZfbG9jayk7CiAgICAgICAgIEFTU0VSVCgh Y29zIHx8IGluZm8tPmNvc19yZWZbY29zXSk7CiAgICAgICAgIGluZm8tPmNvc19yZWZbY29zXS0t OworICAgICAgICAvKgorICAgICAgICAgKiBUaGUgJ2Nvc19yZWZbY29zXScgb2YgJ2QnIGlzIDAg bm93IHNvIHdlIG5lZWQgcmVzdG9yZSBjb3JyZXNwb25kaW5nCisgICAgICAgICAqIENPUyByZWdp c3RlcnMgdG8gZGVmYXVsdCB2YWx1ZS4gQmVjYXVzZSB0aGlzIGNhc2UgaGFwcGVucyB3aGVuIGEK KyAgICAgICAgICogZG9tYWluIGlzIGRlc3Ryb2llZCwgd2UgbmVlZCByZXN0b3JlIGFsbCBmZWF0 dXJlcy4KKyAgICAgICAgICovCisgICAgICAgIGlmICggIWluZm8tPmNvc19yZWZbY29zXSApCisg ICAgICAgICAgICByZXN0b3JlX2RlZmF1bHRfdmFsKHNvY2tldCwgY29zLCBQU1JfU09DS0VUX01B WF9GRUFUKTsKICAgICAgICAgc3Bpbl91bmxvY2soJmluZm8tPnJlZl9sb2NrKTsKICAgICB9CiAK LS0gCjEuOS4xCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwczov L2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==