From mboxrd@z Thu Jan 1 00:00:00 1970 From: Konrad Rzeszutek Wilk Subject: [PATCH v1 12/12] tmem: Batch and squash XEN_SYSCTL_TMEM_OP_SAVE_GET_POOL_[FLAGS, NPAGES, UUID] in one sub-call: XEN_SYSCTL_TMEM_OP_GET_POOLS. Date: Wed, 28 Sep 2016 05:42:26 -0400 Message-ID: <1475055746-22401-13-git-send-email-konrad.wilk@oracle.com> References: <1475055746-22401-1-git-send-email-konrad.wilk@oracle.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta5.messagelabs.com ([195.245.231.135]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1bpBOC-0000Kk-PM for xen-devel@lists.xenproject.org; Wed, 28 Sep 2016 09:42:56 +0000 In-Reply-To: <1475055746-22401-1-git-send-email-konrad.wilk@oracle.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, konrad@kernel.org Cc: Wei Liu , Ian Jackson , Konrad Rzeszutek Wilk List-Id: xen-devel@lists.xenproject.org VGhlc2Ugb3BlcmF0aW9ucyBhcmUgdXNlZCBkdXJpbmcgdGhlIHNhdmUgcHJvY2VzcyBvZiBtaWdy YXRpb24uCkluc3RlYWQgb2YgZG9pbmcgNjQgaHlwZXJjYWxscyBsZXRzIGRvIGp1c3Qgb25lLiBX ZSBtb2RpZnkKdGhlICdzdHJ1Y3QgdG1lbV9jbGllbnQnIHN0cnVjdHVyZSAodXNlZCBpbgpYRU5f U1lTQ1RMX1RNRU1fT1BfW0dFVHxTRVRdX0NMSUVOVF9JTkZPKSB0byBoYXZlIGFuIGV4dHJhIGZp ZWxkCiducl9wb29scycuIEFybWVkIHdpdGggdGhhdCB0aGUgY29kZSBzbHVycGluZyB1cCBwYWdl cyBmcm9tIHRoZQpoeXBlcnZpc29yIGNhbiBhbGxvY2F0ZSBhIGJpZyBlbm91Z2ggc3RydWN0dXJl IChzdHJ1Y3QgdG1lbV9wb29sX2luZm8pCnRvIGNvbnRhaW4gYWxsIHRoZSBhY3RpdmUgcG9vbHMu IEFuZCB0aGVuIGp1c3QgaXRlcmF0ZSBvdmVyIGVhY2gKb25lIGFuZCBzYXZlIGl0IGluIHRoZSBz dHJlYW0uCgpJbiB0aGUgeGNfdG1lbV9bc2F2ZXxyZXN0b3JlXSB3ZSBhbHNvIGFkZGVkIHByb3Bl ciBtZW1vcnkgaGFuZGxpbmcKb2YgdGhlICdidWYnIGFuZCAncG9vbHMnLiBCZWNhdXNlIG9mIHRo ZSBsb29wcyBhbmQgdG8gbWFrZSBpdCBhcwplYXN5IGFzIHBvc3NpYmxlIHRvIHJldmlldyB3ZSBh ZGQgYSBnb3RvIGxhYmVsIGFuZCBmb3IgYWxtb3N0CmFsbCBlcnJvciBjb25kaXRpb25zIGp1bXAg aW4gaXQuCgpUaGUgaW5jbHVkZSBmb3IgaW50dHlwZXMgaXMgcmVxdWlyZWQgZm9yIHRoZSBQUklk NjQgbWFjcm8gdG8Kd29yayAod2hpY2ggaXMgbmVlZGVkIHRvIGNvbXBpbGUgdGhpcyBjb2RlIHVu ZGVyIDMyLWJpdCkuCgpTaWduZWQtb2ZmLWJ5OiBLb25yYWQgUnplc3p1dGVrIFdpbGsgPGtvbnJh ZC53aWxrQG9yYWNsZS5jb20+CgotLS0KQ2M6IElhbiBKYWNrc29uIDxpYW4uamFja3NvbkBldS5j aXRyaXguY29tPgpDYzogV2VpIExpdSA8d2VpLmxpdTJAY2l0cml4LmNvbT4KCnYxOiBGaXJzdCBz dWJtaXNzaW9uLgotLS0KIHRvb2xzL2xpYnhjL3hjX3RtZW0uYyAgICAgICB8IDE1OSArKysrKysr KysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLQogeGVuL2NvbW1vbi90bWVtLmMg ICAgICAgICAgIHwgICAzICsKIHhlbi9jb21tb24vdG1lbV9jb250cm9sLmMgICB8ICA4MCArKysr KysrKysrKysrLS0tLS0tLS0tCiB4ZW4vaW5jbHVkZS9wdWJsaWMvc3lzY3RsLmggfCAgMzMgKysr KysrKystCiA0IGZpbGVzIGNoYW5nZWQsIDE3NCBpbnNlcnRpb25zKCspLCAxMDEgZGVsZXRpb25z KC0pCgpkaWZmIC0tZ2l0IGEvdG9vbHMvbGlieGMveGNfdG1lbS5jIGIvdG9vbHMvbGlieGMveGNf dG1lbS5jCmluZGV4IDA3ZmExMDEuLmNmYTNmYjYgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2xpYnhjL3hj X3RtZW0uYworKysgYi90b29scy9saWJ4Yy94Y190bWVtLmMKQEAgLTE4LDYgKzE4LDcgQEAKICAq LwogCiAjaW5jbHVkZSAieGNfcHJpdmF0ZS5oIgorI2luY2x1ZGUgPGludHR5cGVzLmg+CiAjaW5j bHVkZSA8YXNzZXJ0Lmg+CiAjaW5jbHVkZSA8eGVuL3RtZW0uaD4KIApAQCAtMjE2LDExICsyMTcs MTEgQEAgaW50IHhjX3RtZW1fc2F2ZSh4Y19pbnRlcmZhY2UgKnhjaCwKIHsKICAgICBpbnQgbWFy a2VyID0gZmllbGRfbWFya2VyOwogICAgIGludCBpLCBqLCByYzsKLSAgICB1aW50MzJfdCBmbGFn czsKICAgICB1aW50MzJfdCBtaW51c29uZSA9IC0xOwotICAgIHVpbnQzMl90IHBvb2xfaWQ7CiAg ICAgc3RydWN0IHRtZW1faGFuZGxlICpoOwogICAgIHhlbl9zeXNjdGxfdG1lbV9jbGllbnRfdCBp bmZvOworICAgIHhlbl9zeXNjdGxfdG1lbV9wb29sX2luZm9fdCAqcG9vbHM7CisgICAgY2hhciAq YnVmID0gTlVMTDsKIAogICAgIHJjID0geGNfdG1lbV9jb250cm9sKHhjaCwgMCwgWEVOX1NZU0NU TF9UTUVNX09QX1NBVkVfQkVHSU4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgZG9tLCAwIC8q IGxlbiovICwgbGl2ZSwgTlVMTCk7CkBAIC0yMzMsNzIgKzIzNCw4MiBAQCBpbnQgeGNfdG1lbV9z YXZlKHhjX2ludGVyZmFjZSAqeGNoLAogICAgICAgICByZXR1cm4gcmM7CiAgICAgfQogCi0gICAg aWYgKCB3cml0ZV9leGFjdChpb19mZCwgJm1hcmtlciwgc2l6ZW9mKG1hcmtlcikpICkKLSAgICAg ICAgcmV0dXJuIC0xOwotCiAgICAgaWYgKCB4Y190bWVtX2NvbnRyb2woeGNoLCAwIC8qIHBvb2xf aWQgKi8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgWEVOX1NZU0NUTF9UTUVNX09QX0dFVF9D TElFTlRfSU5GTywKICAgICAgICAgICAgICAgICAgICAgICAgICBkb20gLyogY2xpX2lkICovLCBz aXplb2YoaW5mbyksIDAgLyogYXJnICovLAogICAgICAgICAgICAgICAgICAgICAgICAgICZpbmZv KSA8IDAgKQogICAgICAgICByZXR1cm4gLTE7CiAKLSAgICBpZiAoIHdyaXRlX2V4YWN0KGlvX2Zk LCAmaW5mbywgc2l6ZW9mKGluZm8pKSApCisgICAgLyogTm90aGluZyB0byBkby4gKi8KKyAgICBp ZiAoICFpbmZvLm5yX3Bvb2xzICkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBwb29scyA9IGNh bGxvYyhpbmZvLm5yX3Bvb2xzLCBzaXplb2YoKnBvb2xzKSk7CisgICAgaWYgKCAhcG9vbHMgKQog ICAgICAgICByZXR1cm4gLTE7CisKKyAgICByYyA9IHhjX3RtZW1fY29udHJvbCh4Y2gsIDAgLyog cG9vbF9pZCBpcyBpZ25vcmVkLiAqLywKKyAgICAgICAgICAgICAgICAgICAgICAgICBYRU5fU1lT Q1RMX1RNRU1fT1BfR0VUX1BPT0xTLAorICAgICAgICAgICAgICAgICAgICAgICAgIGRvbSAvKiBj bGlfaWQgKi8sIHNpemVvZigqcG9vbHMpICogaW5mby5ucl9wb29scywKKyAgICAgICAgICAgICAg ICAgICAgICAgICAwIC8qIGFyZyAqLywgcG9vbHMpOworCisgICAgaWYgKCByYyA8IDAgfHwgKHVp bnQzMl90KXJjID4gaW5mby5ucl9wb29scyApCisgICAgICAgIGdvdG8gb3V0X21lbW9yeTsKKwor ICAgIC8qIFVwZGF0ZSBpdCAtIGFzIHdlIGhhdmUgbGVzcyBwb29scyBiZXR3ZWVuIHRoZSB0d28g aHlwZXJjYWxscy4gKi8KKyAgICBpbmZvLm5yX3Bvb2xzID0gKHVpbnQzMl90KXJjOworCisgICAg aWYgKCB3cml0ZV9leGFjdChpb19mZCwgJm1hcmtlciwgc2l6ZW9mKG1hcmtlcikpICkKKyAgICAg ICAgZ290byBvdXRfbWVtb3J5OworCisgICAgaWYgKCB3cml0ZV9leGFjdChpb19mZCwgJmluZm8s IHNpemVvZihpbmZvKSkgKQorICAgICAgICBnb3RvIG91dF9tZW1vcnk7CisKICAgICBpZiAoIHdy aXRlX2V4YWN0KGlvX2ZkLCAmbWludXNvbmUsIHNpemVvZihtaW51c29uZSkpICkKLSAgICAgICAg cmV0dXJuIC0xOwotICAgIGZvciAoIGkgPSAwOyBpIDwgaW5mby5tYXhwb29sczsgaSsrICkKKyAg ICAgICAgZ290byBvdXRfbWVtb3J5OworCisgICAgZm9yICggaSA9IDA7IGkgPCBpbmZvLm5yX3Bv b2xzOyBpKysgKQogICAgIHsKLSAgICAgICAgdWludDY0X3QgdXVpZFsyXTsKLSAgICAgICAgdWlu dDMyX3Qgbl9wYWdlczsKICAgICAgICAgdWludDMyX3QgcGFnZXNpemU7Ci0gICAgICAgIGNoYXIg KmJ1ZiA9IE5VTEw7CiAgICAgICAgIGludCBidWZzaXplID0gMDsKICAgICAgICAgaW50IGNoZWNr c3VtID0gMDsKKyAgICAgICAgeGVuX3N5c2N0bF90bWVtX3Bvb2xfaW5mb190ICpwb29sID0gJnBv b2xzW2ldOwogCi0gICAgICAgIC8qIGdldCBwb29sIGlkLCBmbGFncywgcGFnZXNpemUsIG5fcGFn ZXMsIHV1aWQgKi8KLSAgICAgICAgZmxhZ3MgPSB4Y190bWVtX2NvbnRyb2woeGNoLGksWEVOX1NZ U0NUTF9UTUVNX09QX1NBVkVfR0VUX1BPT0xfRkxBR1MsZG9tLDAsMCxOVUxMKTsKLSAgICAgICAg aWYgKCBmbGFncyAhPSAtMSApCisgICAgICAgIGlmICggcG9vbC0+ZmxhZ3MucmF3ICE9IC0xICkK ICAgICAgICAgewotICAgICAgICAgICAgcG9vbF9pZCA9IGk7Ci0gICAgICAgICAgICBuX3BhZ2Vz ID0geGNfdG1lbV9jb250cm9sKHhjaCxpLFhFTl9TWVNDVExfVE1FTV9PUF9TQVZFX0dFVF9QT09M X05QQUdFUyxkb20sMCwwLE5VTEwpOwotICAgICAgICAgICAgaWYgKCAhKGZsYWdzICYgVE1FTV9Q T09MX1BFUlNJU1QpICkKLSAgICAgICAgICAgICAgICBuX3BhZ2VzID0gMDsKLSAgICAgICAgICAg ICh2b2lkKXhjX3RtZW1fY29udHJvbCh4Y2gsaSxYRU5fU1lTQ1RMX1RNRU1fT1BfU0FWRV9HRVRf UE9PTF9VVUlELGRvbSxzaXplb2YodXVpZCksMCwmdXVpZCk7Ci0gICAgICAgICAgICBpZiAoIHdy aXRlX2V4YWN0KGlvX2ZkLCAmcG9vbF9pZCwgc2l6ZW9mKHBvb2xfaWQpKSApCi0gICAgICAgICAg ICAgICAgcmV0dXJuIC0xOwotICAgICAgICAgICAgaWYgKCB3cml0ZV9leGFjdChpb19mZCwgJmZs YWdzLCBzaXplb2YoZmxhZ3MpKSApCi0gICAgICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAg ICAgICAgaWYgKCB3cml0ZV9leGFjdChpb19mZCwgJm5fcGFnZXMsIHNpemVvZihuX3BhZ2VzKSkg KQotICAgICAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgICAgIGlmICggd3JpdGVfZXhh Y3QoaW9fZmQsICZ1dWlkLCBzaXplb2YodXVpZCkpICkKLSAgICAgICAgICAgICAgICByZXR1cm4g LTE7Ci0gICAgICAgICAgICBpZiAoIG5fcGFnZXMgPT0gMCApCisgICAgICAgICAgICBpZiAoICFw b29sLT5mbGFncy51LnBlcnNpc3QgKQorICAgICAgICAgICAgICAgIHBvb2wtPm5fcGFnZXMgPSAw OworCisgICAgICAgICAgICBpZiAoIHdyaXRlX2V4YWN0KGlvX2ZkLCBwb29sLCBzaXplb2YoKnBv b2wpKSApCisgICAgICAgICAgICAgICAgZ290byBvdXRfbWVtb3J5OworCisgICAgICAgICAgICBp ZiAoICFwb29sLT5mbGFncy51LnBlcnNpc3QgKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwog Ci0gICAgICAgICAgICBwYWdlc2l6ZSA9IDEgPDwgKCgoZmxhZ3MgPj4gVE1FTV9QT09MX1BBR0VT SVpFX1NISUZUKSAmCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUTUVNX1BPT0xfUEFH RVNJWkVfTUFTSykgKyAxMik7CisgICAgICAgICAgICBwYWdlc2l6ZSA9IDEgPDwgKHBvb2wtPmZs YWdzLnUucGFnZWJpdHMgKyAxMik7CiAgICAgICAgICAgICBpZiAoIHBhZ2VzaXplID4gYnVmc2l6 ZSApCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgYnVmc2l6ZSA9IHBhZ2VzaXplICsg c2l6ZW9mKHN0cnVjdCB0bWVtX2hhbmRsZSk7CiAgICAgICAgICAgICAgICAgaWYgKCAoYnVmID0g cmVhbGxvYyhidWYsYnVmc2l6ZSkpID09IE5VTEwgKQotICAgICAgICAgICAgICAgICAgICByZXR1 cm4gLTE7CisgICAgICAgICAgICAgICAgICAgIGdvdG8gb3V0X21lbW9yeTsKICAgICAgICAgICAg IH0KLSAgICAgICAgICAgIGZvciAoIGogPSBuX3BhZ2VzOyBqID4gMDsgai0tICkKKyAgICAgICAg ICAgIGZvciAoIGogPSBwb29sLT5uX3BhZ2VzOyBqID4gMDsgai0tICkKICAgICAgICAgICAgIHsK ICAgICAgICAgICAgICAgICBpbnQgcmV0OwotICAgICAgICAgICAgICAgIGlmICggKHJldCA9IHhj X3RtZW1fY29udHJvbCh4Y2gsIHBvb2xfaWQsCisgICAgICAgICAgICAgICAgaWYgKCAocmV0ID0g eGNfdG1lbV9jb250cm9sKHhjaCwgcG9vbC0+aWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFhFTl9TWVNDVExfVE1FTV9PUF9TQVZFX0dFVF9ORVhUX1BBR0Us IGRvbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmc2l6 ZSwgMCwgYnVmKSkgPiAwICkKICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAg IGggPSAoc3RydWN0IHRtZW1faGFuZGxlICopYnVmOwogICAgICAgICAgICAgICAgICAgICBpZiAo IHdyaXRlX2V4YWN0KGlvX2ZkLCAmaC0+b2lkLCBzaXplb2YoaC0+b2lkKSkgKQotICAgICAgICAg ICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgICAgICAgICAgICAgZ290byBv dXRfbWVtb3J5OworCiAgICAgICAgICAgICAgICAgICAgIGlmICggd3JpdGVfZXhhY3QoaW9fZmQs ICZoLT5pbmRleCwgc2l6ZW9mKGgtPmluZGV4KSkgKQotICAgICAgICAgICAgICAgICAgICAgICAg cmV0dXJuIC0xOworICAgICAgICAgICAgICAgICAgICAgICAgZ290byBvdXRfbWVtb3J5OwogICAg ICAgICAgICAgICAgICAgICBoKys7CiAgICAgICAgICAgICAgICAgICAgIGNoZWNrc3VtICs9ICoo Y2hhciAqKWg7CiAgICAgICAgICAgICAgICAgICAgIGlmICggd3JpdGVfZXhhY3QoaW9fZmQsIGgs IHBhZ2VzaXplKSApCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAg ICAgICAgICAgICAgICAgICBnb3RvIG91dF9tZW1vcnk7CiAgICAgICAgICAgICAgICAgfSBlbHNl IGlmICggcmV0ID09IDAgKSB7CiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAg ICAgICAgICAgIH0gZWxzZSB7CkBAIC0zMDYsMTQgKzMxNywyMiBAQCBpbnQgeGNfdG1lbV9zYXZl KHhjX2ludGVyZmFjZSAqeGNoLAogICAgICAgICAgICAgICAgICAgICBoID0gKHN0cnVjdCB0bWVt X2hhbmRsZSAqKWJ1ZjsKICAgICAgICAgICAgICAgICAgICAgaC0+b2lkLm9pZFswXSA9IGgtPm9p ZC5vaWRbMV0gPSBoLT5vaWQub2lkWzJdID0gLTFMOwogICAgICAgICAgICAgICAgICAgICBpZiAo IHdyaXRlX2V4YWN0KGlvX2ZkLCAmaC0+b2lkLCBzaXplb2YoaC0+b2lkKSkgKQorICAgICAgICAg ICAgICAgICAgICB7Cisgb3V0X21lbW9yeToKKyAgICAgICAgICAgICAgICAgICAgICAgIGZyZWUo cG9vbHMpOworICAgICAgICAgICAgICAgICAgICAgICAgZnJlZShidWYpOwogICAgICAgICAgICAg ICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KLSAgICAg ICAgICAgIERQUklOVEYoInNhdmVkICVkIHRtZW0gcGFnZXMgZm9yIGRvbT0lZCBwb29sPSVkLCBj aGVja3N1bT0leFxuIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICBuX3BhZ2VzLWosZG9tLHBv b2xfaWQsY2hlY2tzdW0pOworICAgICAgICAgICAgRFBSSU5URigic2F2ZWQgJSJQUklkNjQiIHRt ZW0gcGFnZXMgZm9yIGRvbT0lZCBwb29sPSVkLCBjaGVja3N1bT0leFxuIiwKKyAgICAgICAgICAg ICAgICAgICAgcG9vbC0+bl9wYWdlcyAtIGosIGRvbSwgcG9vbC0+aWQsIGNoZWNrc3VtKTsKICAg ICAgICAgfQogICAgIH0KKyAgICBmcmVlKHBvb2xzKTsKKyAgICBmcmVlKGJ1Zik7CisKICAgICAv KiBwb29sIGxpc3QgdGVybWluYXRvciAqLwogICAgIG1pbnVzb25lID0gLTE7CiAgICAgaWYgKCB3 cml0ZV9leGFjdChpb19mZCwgJm1pbnVzb25lLCBzaXplb2YobWludXNvbmUpKSApCkBAIC0zODIs MTQgKzQwMSwxOSBAQCBzdGF0aWMgaW50IHhjX3RtZW1fcmVzdG9yZV9uZXdfcG9vbCgKIAogaW50 IHhjX3RtZW1fcmVzdG9yZSh4Y19pbnRlcmZhY2UgKnhjaCwgaW50IGRvbSwgaW50IGlvX2ZkKQog ewotICAgIHVpbnQzMl90IHBvb2xfaWQ7CiAgICAgdWludDMyX3QgbWludXNvbmU7Ci0gICAgdWlu dDMyX3QgZmxhZ3M7CiAgICAgeGVuX3N5c2N0bF90bWVtX2NsaWVudF90IGluZm87CiAgICAgaW50 IGNoZWNrc3VtID0gMDsKKyAgICB1bnNpZ25lZCBpbnQgaTsKKyAgICBjaGFyICpidWYgPSBOVUxM OwogCiAgICAgaWYgKCByZWFkX2V4YWN0KGlvX2ZkLCAmaW5mbywgc2l6ZW9mKGluZm8pKSApCiAg ICAgICAgIHJldHVybiAtMTsKKworICAgIC8qIFdlIHdvdWxkIG5ldmVyIHNhdmUgaWYgdGhlcmUg d2VyZW4ndCBhbnkgcG9vbHMhICovCisgICAgaWYgKCAhaW5mby5ucl9wb29scyApCisgICAgICAg IHJldHVybiAtMTsKKwogICAgIGlmICggeGNfdG1lbV9jb250cm9sKHhjaCwwLFhFTl9TWVNDVExf VE1FTV9PUF9SRVNUT1JFX0JFR0lOLGRvbSwwLDAsTlVMTCkgPCAwICkKICAgICAgICAgcmV0dXJu IC0xOwogCkBAIC00MDEsNjIgKzQyNSw2MyBAQCBpbnQgeGNfdG1lbV9yZXN0b3JlKHhjX2ludGVy ZmFjZSAqeGNoLCBpbnQgZG9tLCBpbnQgaW9fZmQpCiAKICAgICBpZiAoIHJlYWRfZXhhY3QoaW9f ZmQsICZtaW51c29uZSwgc2l6ZW9mKG1pbnVzb25lKSkgKQogICAgICAgICByZXR1cm4gLTE7Ci0g ICAgd2hpbGUgKCByZWFkX2V4YWN0KGlvX2ZkLCAmcG9vbF9pZCwgc2l6ZW9mKHBvb2xfaWQpKSA9 PSAwICYmIHBvb2xfaWQgIT0gLTEgKQorCisgICAgZm9yICggaSA9IDA7IGkgPCBpbmZvLm5yX3Bv b2xzOyBpKysgKQogICAgIHsKLSAgICAgICAgdWludDY0X3QgdXVpZFsyXTsKLSAgICAgICAgdWlu dDMyX3Qgbl9wYWdlczsKLSAgICAgICAgY2hhciAqYnVmID0gTlVMTDsKICAgICAgICAgaW50IGJ1 ZnNpemUgPSAwLCBwYWdlc2l6ZTsKICAgICAgICAgaW50IGo7CisgICAgICAgIHhlbl9zeXNjdGxf dG1lbV9wb29sX2luZm9fdCBwb29sOwogCi0gICAgICAgIGlmICggcmVhZF9leGFjdChpb19mZCwg JmZsYWdzLCBzaXplb2YoZmxhZ3MpKSApCi0gICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAg IGlmICggcmVhZF9leGFjdChpb19mZCwgJm5fcGFnZXMsIHNpemVvZihuX3BhZ2VzKSkgKQotICAg ICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICBpZiAoIHJlYWRfZXhhY3QoaW9fZmQsICZ1dWlk LCBzaXplb2YodXVpZCkpICkKLSAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgaWYgKCB4 Y190bWVtX3Jlc3RvcmVfbmV3X3Bvb2woeGNoLCBkb20sIHBvb2xfaWQsCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBmbGFncywgdXVpZFswXSwgdXVpZFsxXSkgPCAwKQotICAgICAg ICAgICAgcmV0dXJuIC0xOwotICAgICAgICBpZiAoIG5fcGFnZXMgPD0gMCApCisgICAgICAgIGlm ICggcmVhZF9leGFjdChpb19mZCwgJnBvb2wsIHNpemVvZihwb29sKSkgKQorICAgICAgICAgICAg Z290byBvdXRfbWVtb3J5OworCisgICAgICAgIGlmICggeGNfdG1lbV9yZXN0b3JlX25ld19wb29s KHhjaCwgZG9tLCBwb29sLmlkLCBwb29sLmZsYWdzLnJhdywKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgcG9vbC51dWlkWzBdLCBwb29sLnV1aWRbMV0pIDwgMCApCisgICAg ICAgICAgICBnb3RvIG91dF9tZW1vcnk7CisKKyAgICAgICAgaWYgKCBwb29sLm5fcGFnZXMgPD0g MCApCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBwYWdlc2l6ZSA9IDEgPDwgKCgo ZmxhZ3MgPj4gVE1FTV9QT09MX1BBR0VTSVpFX1NISUZUKSAmCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBUTUVNX1BPT0xfUEFHRVNJWkVfTUFTSykgKyAxMik7CisgICAgICAgIHBhZ2Vz aXplID0gMSA8PCAocG9vbC5mbGFncy51LnBhZ2ViaXRzICsgMTIpOwogICAgICAgICBpZiAoIHBh Z2VzaXplID4gYnVmc2l6ZSApCiAgICAgICAgIHsKICAgICAgICAgICAgIGJ1ZnNpemUgPSBwYWdl c2l6ZTsKICAgICAgICAgICAgIGlmICggKGJ1ZiA9IHJlYWxsb2MoYnVmLGJ1ZnNpemUpKSA9PSBO VUxMICkKLSAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICAgICAgZ290byBv dXRfbWVtb3J5OwogICAgICAgICB9Ci0gICAgICAgIGZvciAoIGogPSBuX3BhZ2VzOyBqID4gMDsg ai0tICkKKyAgICAgICAgZm9yICggaiA9IHBvb2wubl9wYWdlczsgaiA+IDA7IGotLSApCiAgICAg ICAgIHsKICAgICAgICAgICAgIHN0cnVjdCB4ZW5fdG1lbV9vaWQgb2lkOwogICAgICAgICAgICAg dWludDMyX3QgaW5kZXg7CiAgICAgICAgICAgICBpbnQgcmM7CisKICAgICAgICAgICAgIGlmICgg cmVhZF9leGFjdChpb19mZCwgJm9pZCwgc2l6ZW9mKG9pZCkpICkKLSAgICAgICAgICAgICAgICBy ZXR1cm4gLTE7CisgICAgICAgICAgICAgICAgZ290byBvdXRfbWVtb3J5OworCiAgICAgICAgICAg ICBpZiAoIG9pZC5vaWRbMF0gPT0gLTFMICYmIG9pZC5vaWRbMV0gPT0gLTFMICYmIG9pZC5vaWRb Ml0gPT0gLTFMICkKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGlmICggcmVh ZF9leGFjdChpb19mZCwgJmluZGV4LCBzaXplb2YoaW5kZXgpKSApCi0gICAgICAgICAgICAgICAg cmV0dXJuIC0xOworICAgICAgICAgICAgICAgIGdvdG8gb3V0X21lbW9yeTsKKwogICAgICAgICAg ICAgaWYgKCByZWFkX2V4YWN0KGlvX2ZkLCBidWYsIHBhZ2VzaXplKSApCi0gICAgICAgICAgICAg ICAgcmV0dXJuIC0xOworICAgICAgICAgICAgICAgIGdvdG8gb3V0X21lbW9yeTsKKwogICAgICAg ICAgICAgY2hlY2tzdW0gKz0gKmJ1ZjsKLSAgICAgICAgICAgIGlmICggKHJjID0geGNfdG1lbV9j b250cm9sX29pZCh4Y2gsIHBvb2xfaWQsCisgICAgICAgICAgICBpZiAoIChyYyA9IHhjX3RtZW1f Y29udHJvbF9vaWQoeGNoLCBwb29sLmlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFhFTl9TWVNDVExfVE1FTV9PUF9SRVNUT1JFX1BVVF9QQUdFLCBkb20sCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmc2l6ZSwgaW5kZXgs IG9pZCwgYnVmKSkgPD0gMCApCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgRFBSSU5U RigieGNfdG1lbV9yZXN0b3JlOiBwdXR0aW5nIHBhZ2UgZmFpbGVkLCByYz0lZFxuIixyYyk7Cisg b3V0X21lbW9yeToKKyAgICAgICAgICAgICAgICBmcmVlKGJ1Zik7CiAgICAgICAgICAgICAgICAg cmV0dXJuIC0xOwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIGlmICggbl9wYWdl cyApCi0gICAgICAgICAgICBEUFJJTlRGKCJyZXN0b3JlZCAlZCB0bWVtIHBhZ2VzIGZvciBkb209 JWQgcG9vbD0lZCwgY2hlY2s9JXhcbiIsCi0gICAgICAgICAgICAgICAgICAgIG5fcGFnZXMtaixk b20scG9vbF9pZCxjaGVja3N1bSk7CisgICAgICAgIGlmICggcG9vbC5uX3BhZ2VzICkKKyAgICAg ICAgICAgIERQUklOVEYoInJlc3RvcmVkICUiUFJJZDY0IiB0bWVtIHBhZ2VzIGZvciBkb209JWQg cG9vbD0lZCwgY2hlY2s9JXhcbiIsCisgICAgICAgICAgICAgICAgICAgIHBvb2wubl9wYWdlcyAt IGosIGRvbSwgcG9vbC5pZCwgY2hlY2tzdW0pOwogICAgIH0KLSAgICBpZiAoIHBvb2xfaWQgIT0g LTEgKQotICAgICAgICByZXR1cm4gLTE7CisgICAgZnJlZShidWYpOwogCiAgICAgcmV0dXJuIDA7 CiB9CmRpZmYgLS1naXQgYS94ZW4vY29tbW9uL3RtZW0uYyBiL3hlbi9jb21tb24vdG1lbS5jCmlu ZGV4IDI5NGYwY2QuLjc5Yjg1M2QgMTAwNjQ0Ci0tLSBhL3hlbi9jb21tb24vdG1lbS5jCisrKyBi L3hlbi9jb21tb24vdG1lbS5jCkBAIC04ODAsNiArODgwLDcgQEAgc3RhdGljIHZvaWQgY2xpZW50 X2ZsdXNoKHN0cnVjdCBjbGllbnQgKmNsaWVudCkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAg ICAgICBwb29sX2ZsdXNoKHBvb2wsIGNsaWVudC0+Y2xpX2lkKTsKICAgICAgICAgY2xpZW50LT5w b29sc1tpXSA9IE5VTEw7CisgICAgICAgIGNsaWVudC0+aW5mby5ucl9wb29scy0tOwogICAgIH0K ICAgICBjbGllbnRfZnJlZShjbGllbnQpOwogfQpAQCAtMTQzMCw2ICsxNDMxLDcgQEAgc3RhdGlj IGludCBkb190bWVtX2Rlc3Ryb3lfcG9vbCh1aW50MzJfdCBwb29sX2lkKQogICAgICAgICByZXR1 cm4gMDsKICAgICBjbGllbnQtPnBvb2xzW3Bvb2xfaWRdID0gTlVMTDsKICAgICBwb29sX2ZsdXNo KHBvb2wsIGNsaWVudC0+Y2xpX2lkKTsKKyAgICBjbGllbnQtPmluZm8ubnJfcG9vbHMtLTsKICAg ICByZXR1cm4gMTsKIH0KIApAQCAtMTU5Miw2ICsxNTk0LDcgQEAgc3RhdGljIGludCBkb190bWVt X25ld19wb29sKGRvbWlkX3QgdGhpc19jbGlfaWQsCiAKIG91dDoKICAgICB0bWVtX2NsaWVudF9p bmZvKCJwb29sX2lkPSVkXG4iLCBkX3Bvb2xpZCk7CisgICAgY2xpZW50LT5pbmZvLm5yX3Bvb2xz ICsrOwogICAgIHJldHVybiBkX3Bvb2xpZDsKIAogZmFpbDoKZGlmZiAtLWdpdCBhL3hlbi9jb21t b24vdG1lbV9jb250cm9sLmMgYi94ZW4vY29tbW9uL3RtZW1fY29udHJvbC5jCmluZGV4IGNmYmM4 YjAuLmE5OTYwYjcgMTAwNjQ0Ci0tLSBhL3hlbi9jb21tb24vdG1lbV9jb250cm9sLmMKKysrIGIv eGVuL2NvbW1vbi90bWVtX2NvbnRyb2wuYwpAQCAtMjc2LDYgKzI3Niw4IEBAIHN0YXRpYyBpbnQg X190bWVtY19zZXRfdmFyKHN0cnVjdCBjbGllbnQgKmNsaWVudCwKICAgICBpZiAoIGluZm8ubWF4 cG9vbHMgPiBNQVhfUE9PTFNfUEVSX0RPTUFJTiApCiAgICAgICAgIHJldHVybiAtRVJBTkdFOwog CisgICAgLyogSWdub3JlIGluZm8ubnJfcG9vbHMuICovCisKICAgICBpZiAoIGluZm8ud2VpZ2h0 ICE9IGNsaWVudC0+aW5mby53ZWlnaHQgKQogICAgIHsKICAgICAgICAgb2xkX3dlaWdodCA9IGNs aWVudC0+aW5mby53ZWlnaHQ7CkBAIC0zNDIsNDYgKzM0NCw2MyBAQCBzdGF0aWMgaW50IHRtZW1j X2dldF9jbGllbnRfaW5mbyhpbnQgY2xpX2lkLAogICAgIHJldHVybiAwOwogfQogCi1zdGF0aWMg aW50IHRtZW1jX3NhdmVfc3Vib3AoaW50IGNsaV9pZCwgdWludDMyX3QgcG9vbF9pZCwgdWludDMy X3Qgc3Vib3AsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgWEVOX0dVRVNUX0hBTkRMRV9Q QVJBTSh2b2lkKSBidWYsIHVpbnQzMl90IGFyZykKK3N0YXRpYyBpbnQgdG1lbWNfZ2V0X3Bvb2wo aW50IGNsaV9pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgWEVOX0dVRVNUX0hBTkRMRV9Q QVJBTSh4ZW5fc3lzY3RsX3RtZW1fcG9vbF9pbmZvX3QpIHBvb2xzLAorICAgICAgICAgICAgICAg ICAgICAgICAgICB1aW50MzJfdCBsZW4pCiB7CiAgICAgc3RydWN0IGNsaWVudCAqY2xpZW50ID0g dG1lbV9jbGllbnRfZnJvbV9jbGlfaWQoY2xpX2lkKTsKLSAgICBzdHJ1Y3QgdG1lbV9wb29sICpw b29sID0gKGNsaWVudCA9PSBOVUxMIHx8IHBvb2xfaWQgPj0gTUFYX1BPT0xTX1BFUl9ET01BSU4p Ci0gICAgICAgICAgICAgICAgICAgPyBOVUxMIDogY2xpZW50LT5wb29sc1twb29sX2lkXTsKLSAg ICBpbnQgcmMgPSAtMTsKKyAgICB1bnNpZ25lZCBpbnQgaSwgaWR4OworICAgIGludCByYyA9IDA7 CisgICAgdW5zaWduZWQgaW50IG5yID0gbGVuIC8gc2l6ZW9mKHhlbl9zeXNjdGxfdG1lbV9wb29s X2luZm9fdCk7CisKKyAgICBpZiAoIGxlbiAlIHNpemVvZih4ZW5fc3lzY3RsX3RtZW1fcG9vbF9p bmZvX3QpICkKKyAgICAgICAgcmV0dXJuIC1FSU5WQUw7CisKKyAgICBpZiAoIG5yID49IE1BWF9Q T09MU19QRVJfRE9NQUlOICkKKyAgICAgICAgcmV0dXJuIC1FMkJJRzsKKworICAgIGlmICggIWd1 ZXN0X2hhbmRsZV9va2F5KHBvb2xzLCBucikgKQorICAgICAgICByZXR1cm4gLUVJTlZBTDsKIAot ICAgIHN3aXRjaChzdWJvcCkKKyAgICBpZiAoICFjbGllbnQgKQorICAgICAgICByZXR1cm4gLUVJ TlZBTDsKKworICAgIGZvciAoIGlkeCA9IDAsIGkgPSAwOyBpIDwgTUFYX1BPT0xTX1BFUl9ET01B SU47IGkrKyApCiAgICAgewotICAgIGNhc2UgWEVOX1NZU0NUTF9UTUVNX09QX1NBVkVfR0VUX1BP T0xfRkxBR1M6Ci0gICAgICAgICBpZiAoIHBvb2wgPT0gTlVMTCApCi0gICAgICAgICAgICAgYnJl YWs7Ci0gICAgICAgICByYyA9IChwb29sLT5wZXJzaXN0ZW50ID8gVE1FTV9QT09MX1BFUlNJU1Qg OiAwKSB8CisgICAgICAgIHN0cnVjdCB0bWVtX3Bvb2wgKnBvb2wgPSBjbGllbnQtPnBvb2xzW2ld OworICAgICAgICB4ZW5fc3lzY3RsX3RtZW1fcG9vbF9pbmZvX3Qgb3V0OworCisgICAgICAgIGlm ICggcG9vbCA9PSBOVUxMICkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIG91dC5m bGFncy5yYXcgPSAocG9vbC0+cGVyc2lzdGVudCA/IFRNRU1fUE9PTF9QRVJTSVNUIDogMCkgfAog ICAgICAgICAgICAgICAocG9vbC0+c2hhcmVkID8gVE1FTV9QT09MX1NIQVJFRCA6IDApIHwKICAg ICAgICAgICAgICAgKFBPT0xfUEFHRVNISUZUIDw8IFRNRU1fUE9PTF9QQUdFU0laRV9TSElGVCkg fAogICAgICAgICAgICAgICAoVE1FTV9TUEVDX1ZFUlNJT04gPDwgVE1FTV9QT09MX1ZFUlNJT05f U0hJRlQpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFhFTl9TWVNDVExfVE1FTV9PUF9TQVZF X0dFVF9QT09MX05QQUdFUzoKLSAgICAgICAgIGlmICggcG9vbCA9PSBOVUxMICkKLSAgICAgICAg ICAgICBicmVhazsKLSAgICAgICAgcmMgPSBfYXRvbWljX3JlYWQocG9vbC0+cGdwX2NvdW50KTsK LSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBYRU5fU1lTQ1RMX1RNRU1fT1BfU0FWRV9HRVRfUE9P TF9VVUlEOgotICAgICAgICAgaWYgKCBwb29sID09IE5VTEwgKQotICAgICAgICAgICAgIGJyZWFr OwotICAgICAgICByYyA9IDA7Ci0gICAgICAgIGlmICggY29weV90b19ndWVzdChndWVzdF9oYW5k bGVfY2FzdChidWYsIHZvaWQpLCBwb29sLT51dWlkLCAyKSApCisgICAgICAgIG91dC5uX3BhZ2Vz ID0gX2F0b21pY19yZWFkKHBvb2wtPnBncF9jb3VudCk7CisgICAgICAgIG91dC51dWlkWzBdID0g cG9vbC0+dXVpZFswXTsKKyAgICAgICAgb3V0LnV1aWRbMV0gPSBwb29sLT51dWlkWzFdOworICAg ICAgICBvdXQuaWQgPSBpOworCisgICAgICAgIC8qIE4uQi4gJ2lkeCcgIT0gJ2knLiAqLworICAg ICAgICBpZiAoIF9fY29weV90b19ndWVzdF9vZmZzZXQocG9vbHMsIGlkeCwgJm91dCwgMSkgKQor ICAgICAgICB7CiAgICAgICAgICAgICByYyA9IC1FRkFVTFQ7Ci0gICAgICAgIGJyZWFrOwotICAg IGRlZmF1bHQ6Ci0gICAgICAgIHJjID0gLTE7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg fQorICAgICAgICBpZHggKys7CisgICAgICAgIC8qIERvbid0IHRyeSB0byBwdXQgbW9yZSB0aGFu IHdoYXQgd2FzIHJlcXVlc3RlZC4gKi8KKyAgICAgICAgaWYgKCBpZHggPj0gbnIgKQorICAgICAg ICAgICAgYnJlYWs7CiAgICAgfQotICAgIHJldHVybiByYzsKKworICAgIC8qIEFuZCBob3cgbWFu eSB3ZSBoYXZlIHByb2Nlc3NlZC4gKi8KKyAgICByZXR1cm4gcmMgPyA6IGlkeDsKIH0KIAogaW50 IHRtZW1fY29udHJvbChzdHJ1Y3QgeGVuX3N5c2N0bF90bWVtX29wICpvcCkKIHsKICAgICBpbnQg cmV0OwotICAgIHVpbnQzMl90IHBvb2xfaWQgPSBvcC0+cG9vbF9pZDsKICAgICB1aW50MzJfdCBj bWQgPSBvcC0+Y21kOwogCiAgICAgaWYgKCBvcC0+cGFkICE9IDAgKQpAQCAtNDE0LDExICs0MzMs MTAgQEAgaW50IHRtZW1fY29udHJvbChzdHJ1Y3QgeGVuX3N5c2N0bF90bWVtX29wICpvcCkKICAg ICAgICAgcmV0ID0gdG1lbWNfZ2V0X2NsaWVudF9pbmZvKG9wLT5jbGlfaWQsCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBndWVzdF9oYW5kbGVfY2FzdChvcC0+dS5jbGllbnQs IHhlbl9zeXNjdGxfdG1lbV9jbGllbnRfdCkpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFhF Tl9TWVNDVExfVE1FTV9PUF9TQVZFX0dFVF9QT09MX0ZMQUdTOgotICAgIGNhc2UgWEVOX1NZU0NU TF9UTUVNX09QX1NBVkVfR0VUX1BPT0xfTlBBR0VTOgotICAgIGNhc2UgWEVOX1NZU0NUTF9UTUVN X09QX1NBVkVfR0VUX1BPT0xfVVVJRDoKLSAgICAgICAgcmV0ID0gdG1lbWNfc2F2ZV9zdWJvcChv cC0+Y2xpX2lkLCBwb29sX2lkLCBjbWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Z3Vlc3RfaGFuZGxlX2Nhc3Qob3AtPnUuYnVmLCB2b2lkKSwgb3AtPmFyZyk7CisgICAgY2FzZSBY RU5fU1lTQ1RMX1RNRU1fT1BfR0VUX1BPT0xTOgorICAgICAgICByZXQgPSB0bWVtY19nZXRfcG9v bChvcC0+Y2xpX2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndWVzdF9oYW5kbGVf Y2FzdChvcC0+dS5wb29sLCB4ZW5fc3lzY3RsX3RtZW1fcG9vbF9pbmZvX3QpLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBvcC0+bGVuKTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVs dDoKICAgICAgICAgcmV0ID0gZG9fdG1lbV9jb250cm9sKG9wKTsKZGlmZiAtLWdpdCBhL3hlbi9p bmNsdWRlL3B1YmxpYy9zeXNjdGwuaCBiL3hlbi9pbmNsdWRlL3B1YmxpYy9zeXNjdGwuaAppbmRl eCBhOWY5NWY4Li44ODk5YzUwIDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS9wdWJsaWMvc3lzY3Rs LmgKKysrIGIveGVuL2luY2x1ZGUvcHVibGljL3N5c2N0bC5oCkBAIC03NjAsOSArNzYwLDcgQEAg REVGSU5FX1hFTl9HVUVTVF9IQU5ETEUoeGVuX3N5c2N0bF9wc3JfY2F0X29wX3QpOwogI2RlZmlu ZSBYRU5fU1lTQ1RMX1RNRU1fT1BfU0FWRV9CRUdJTiAgICAgICAgICAgICAxMAogI2RlZmluZSBY RU5fU1lTQ1RMX1RNRU1fT1BfR0VUX0NMSUVOVF9JTkZPICAgICAgICAxMQogI2RlZmluZSBYRU5f U1lTQ1RMX1RNRU1fT1BfU0VUX0NMSUVOVF9JTkZPICAgICAgICAxMgotI2RlZmluZSBYRU5fU1lT Q1RMX1RNRU1fT1BfU0FWRV9HRVRfUE9PTF9GTEFHUyAgICAxNgotI2RlZmluZSBYRU5fU1lTQ1RM X1RNRU1fT1BfU0FWRV9HRVRfUE9PTF9OUEFHRVMgICAxNwotI2RlZmluZSBYRU5fU1lTQ1RMX1RN RU1fT1BfU0FWRV9HRVRfUE9PTF9VVUlEICAgICAxOAorI2RlZmluZSBYRU5fU1lTQ1RMX1RNRU1f T1BfR0VUX1BPT0xTICAgICAgICAgICAgICAxNgogI2RlZmluZSBYRU5fU1lTQ1RMX1RNRU1fT1Bf U0FWRV9HRVRfTkVYVF9QQUdFICAgICAxOQogI2RlZmluZSBYRU5fU1lTQ1RMX1RNRU1fT1BfU0FW RV9HRVRfTkVYVF9JTlYgICAgICAyMAogI2RlZmluZSBYRU5fU1lTQ1RMX1RNRU1fT1BfU0FWRV9F TkQgICAgICAgICAgICAgICAyMQpAQCAtNzkwLDYgKzc4OCw3IEBAIHN0cnVjdCB0bWVtX2NsaWVu dCB7CiAgICAgdWludDMyX3QgdmVyc2lvbjsgICAvKiBJZiBtaXNtYXRjaGVkIHdlIHdpbGwgZ2V0 IFhFTl9FTk9TUEMuICovCiAgICAgdWludDMyX3QgbWF4cG9vbHM7ICAvKiBJZiBncmVhdGVyIHRo YW4gd2hhdCBoeXBlcnZpc29yIHN1cHBvcnRzLCB3aWxsIGdldAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgWEVOX0VSQU5HRS4gKi8KKyAgICB1aW50MzJfdCBucl9wb29sczsgIC8qIEN1cnJl bnQgYW1vdW50IG9mIHBvb2xzLiBJZ25vcmVkIG9uIFNFVCovCiAgICAgdW5pb24geyAgICAgICAg ICAgICAvKiBTZWUgVE1FTV9DTElFTlRfW0NPTVBSRVNTLEZST1pFTl0gKi8KICAgICAgICAgdWlu dDMyX3QgcmF3OwogICAgICAgICBzdHJ1Y3QgewpAQCAtODAzLDYgKzgwMiwzMSBAQCBzdHJ1Y3Qg dG1lbV9jbGllbnQgewogdHlwZWRlZiBzdHJ1Y3QgdG1lbV9jbGllbnQgeGVuX3N5c2N0bF90bWVt X2NsaWVudF90OwogREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUoeGVuX3N5c2N0bF90bWVtX2NsaWVu dF90KTsKIAorLyoKKyAqIFhFTl9TWVNDVExfVE1FTV9PUF9HRVRfUE9PTFMgdXNlcyB0aGUgJ3Bv b2wnIGFycmF5IGluCisgKiB4ZW5fc3lzY3RsX3RtZW1fb3Agd2l0aCB0aGlzIHN0cnVjdHVyZS4g VGhlIGh5cGVyY2FsbCB3aWxsCisgKiByZXR1cm4gdGhlIG51bWJlciBvZiBlbnRyaWVzIGluICdw b29sJyBvciBhIG5lZ2F0aXZlIHZhbHVlCisgKiBpZiBhbiBlcnJvciB3YXMgZW5jb3VudGVyZWQu CisgKi8KK3N0cnVjdCB0bWVtX3Bvb2xfaW5mbyB7CisgICAgdW5pb24geworICAgICAgICB1aW50 MzJfdCByYXc7CisgICAgICAgIHN0cnVjdCB7CisgICAgICAgICAgICB1aW50MzJfdCBwZXJzaXN0 OjEsICAgIC8qIFNlZSBUTUVNX1BPT0xfUEVSU0lTVC4gKi8KKyAgICAgICAgICAgICAgICAgICAg IHNoYXJlZDoxLCAgICAgLyogU2VlIFRNRU1fUE9PTF9TSEFSRUQuICovCisgICAgICAgICAgICAg ICAgICAgICByc3Y6MiwKKyAgICAgICAgICAgICAgICAgICAgIHBhZ2ViaXRzOjgsICAgLyogVE1F TV9QT09MX1BBR0VTSVpFX1tTSElGVCxNQVNLXS4gKi8KKyAgICAgICAgICAgICAgICAgICAgIHJz djI6MTIsCisgICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uOjg7ICAgIC8qIFRNRU1fUE9PTF9W RVJTSU9OX1tTSElGVCxNQVNLXS4gKi8KKyAgICAgICAgfSB1OworICAgIH0gZmxhZ3M7CisgICAg dWludDMyX3QgaWQ7ICAgICAgICAgICAgICAgICAgLyogTGVzcyB0aGFuIHRtZW1fY2xpZW50Lm1h eHBvb2xzLiAqLworICAgIHVpbnQ2NF90IG5fcGFnZXM7CisgICAgdWludDY0X3QgdXVpZFsyXTsK K307Cit0eXBlZGVmIHN0cnVjdCB0bWVtX3Bvb2xfaW5mbyB4ZW5fc3lzY3RsX3RtZW1fcG9vbF9p bmZvX3Q7CitERUZJTkVfWEVOX0dVRVNUX0hBTkRMRSh4ZW5fc3lzY3RsX3RtZW1fcG9vbF9pbmZv X3QpOworCiBzdHJ1Y3QgeGVuX3N5c2N0bF90bWVtX29wIHsKICAgICB1aW50MzJfdCBjbWQ7ICAg ICAgIC8qIElOOiBYRU5fU1lTQ1RMX1RNRU1fT1BfKiAuICovCiAgICAgaW50MzJfdCBwb29sX2lk OyAgICAvKiBJTjogMCBieSBkZWZhdWx0IHVubGVzcyBfU0FWRV8qLCBSRVNUT1JFXyogLiovCkBA IC04MTcsNiArODQxLDkgQEAgc3RydWN0IHhlbl9zeXNjdGxfdG1lbV9vcCB7CiAgICAgICAgIFhF Tl9HVUVTVF9IQU5ETEVfNjQoY2hhcikgYnVmOyAvKiBJTi9PVVQ6IEJ1ZmZlciB0byBzYXZlL3Jl c3RvcmUgKi8KICAgICAgICAgWEVOX0dVRVNUX0hBTkRMRV82NCh4ZW5fc3lzY3RsX3RtZW1fY2xp ZW50X3QpIGNsaWVudDsgLyogSU4vT1VUIGZvciAqLwogICAgICAgICAgICAgICAgICAgICAgICAg LyogIFhFTl9TWVNDVExfVE1FTV9PUF9bR0VULFNBVkVdX0NMSUVOVC4gKi8KKyAgICAgICAgWEVO X0dVRVNUX0hBTkRMRV82NCh4ZW5fc3lzY3RsX3RtZW1fcG9vbF9pbmZvX3QpIHBvb2w7IC8qIE9V VCBmb3IgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgIC8qIFhFTl9TWVNDVExfVE1FTV9PUF9H RVRfUE9PTFMuIE11c3QgaGF2ZSAnbGVuJyAqLworICAgICAgICAgICAgICAgICAgICAgICAgLyog b2YgdGhlbS4gKi8KICAgICB9IHU7CiB9OwogdHlwZWRlZiBzdHJ1Y3QgeGVuX3N5c2N0bF90bWVt X29wIHhlbl9zeXNjdGxfdG1lbV9vcF90OwotLSAKMi40LjExCgoKX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4t ZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwczovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==