From mboxrd@z Thu Jan 1 00:00:00 1970 From: Yu Zhang Subject: [PATCH v5 3/4] x86/ioreq server: Add HVMOP to map guest ram with p2m_ioreq_server to an ioreq server. Date: Tue, 12 Jul 2016 17:02:08 +0800 Message-ID: <1468314129-28465-4-git-send-email-yu.c.zhang@linux.intel.com> References: <1468314129-28465-1-git-send-email-yu.c.zhang@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1468314129-28465-1-git-send-email-yu.c.zhang@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.xen.org Cc: Kevin Tian , Jun Nakajima , George Dunlap , Andrew Cooper , Tim Deegan , Paul Durrant , zhiyuan.lv@intel.com, Jan Beulich List-Id: xen-devel@lists.xenproject.org QSBuZXcgSFZNT1AgLSBIVk1PUF9tYXBfbWVtX3R5cGVfdG9faW9yZXFfc2VydmVyLCBpcyBhZGRl ZCB0bwpsZXQgb25lIGlvcmVxIHNlcnZlciBjbGFpbS9kaXNjbGFpbSBpdHMgcmVzcG9uc2liaWxp dHkgZm9yIHRoZQpoYW5kbGluZyBvZiBndWVzdCBwYWdlcyB3aXRoIHAybSB0eXBlIHAybV9pb3Jl cV9zZXJ2ZXIuIFVzZXJzCm9mIHRoaXMgSFZNT1AgY2FuIHNwZWNpZnkgd2hpY2gga2luZCBvZiBv cGVyYXRpb24gaXMgc3VwcG9zZWQKdG8gYmUgZW11bGF0ZWQgaW4gYSBwYXJhbWV0ZXIgbmFtZWQg ZmxhZ3MuIEN1cnJlbnRseSwgdGhpcyBIVk1PUApvbmx5IHN1cHBvcnQgdGhlIGVtdWxhdGlvbiBv ZiB3cml0ZSBvcGVyYXRpb25zLiBBbmQgaXQgY2FuIGJlCmZ1cnRoZXIgZXh0ZW5kZWQgdG8gc3Vw cG9ydCB0aGUgZW11bGF0aW9uIG9mIHJlYWQgb25lcyBpZiBhbgppb3JlcSBzZXJ2ZXIgaGFzIHN1 Y2ggcmVxdWlyZW1lbnQgaW4gdGhlIGZ1dHVyZS4KCkZvciBub3csIHdlIG9ubHkgc3VwcG9ydCBv bmUgaW9yZXEgc2VydmVyIGZvciB0aGlzIHAybSB0eXBlLCBzbwpvbmNlIGFuIGlvcmVxIHNlcnZl ciBoYXMgY2xhaW1lZCBpdHMgb3duZXJzaGlwLCBzdWJzZXF1ZW50IGNhbGxzCm9mIHRoZSBIVk1P UF9tYXBfbWVtX3R5cGVfdG9faW9yZXFfc2VydmVyIHdpbGwgZmFpbC4gVXNlcnMgY2FuIGFsc28K ZGlzY2xhaW0gdGhlIG93bmVyc2hpcCBvZiBndWVzdCByYW0gcGFnZXMgd2l0aCBwMm1faW9yZXFf c2VydmVyLCBieQp0cmlnZ2VyaW5nIHRoaXMgbmV3IEhWTU9QLCB3aXRoIGlvcmVxIHNlcnZlciBp ZCBzZXQgdG8gdGhlIGN1cnJlbnQKb3duZXIncyBhbmQgZmxhZ3MgcGFyYW1ldGVyIHNldCB0byAw LgoKTm90ZSBib3RoIEhWTU9QX21hcF9tZW1fdHlwZV90b19pb3JlcV9zZXJ2ZXIgYW5kIHAybV9p b3JlcV9zZXJ2ZXIKYXJlIG9ubHkgc3VwcG9ydGVkIGZvciBIVk1zIHdpdGggSEFQIGVuYWJsZWQu CgpBbHNvIG5vdGUgdGhhdCBvbmx5IGFmdGVyIG9uZSBpb3JlcSBzZXJ2ZXIgY2xhaW1zIGl0cyBv d25lcnNoaXAKb2YgcDJtX2lvcmVxX3NlcnZlciwgd2lsbCB0aGUgcDJtIHR5cGUgY2hhbmdlIHRv IHAybV9pb3JlcV9zZXJ2ZXIKYmUgYWxsb3dlZC4KClNpZ25lZC1vZmYtYnk6IFBhdWwgRHVycmFu dCA8cGF1bC5kdXJyYW50QGNpdHJpeC5jb20+ClNpZ25lZC1vZmYtYnk6IFl1IFpoYW5nIDx5dS5j LnpoYW5nQGxpbnV4LmludGVsLmNvbT4KQWNrZWQtYnk6IFRpbSBEZWVnYW4gPHRpbUB4ZW4ub3Jn PgotLS0KQ2M6IFBhdWwgRHVycmFudCA8cGF1bC5kdXJyYW50QGNpdHJpeC5jb20+CkNjOiBKYW4g QmV1bGljaCA8amJldWxpY2hAc3VzZS5jb20+CkNjOiBBbmRyZXcgQ29vcGVyIDxhbmRyZXcuY29v cGVyM0BjaXRyaXguY29tPgpDYzogR2VvcmdlIER1bmxhcCA8Z2VvcmdlLmR1bmxhcEBldS5jaXRy aXguY29tPgpDYzogSnVuIE5ha2FqaW1hIDxqdW4ubmFrYWppbWFAaW50ZWwuY29tPgpDYzogS2V2 aW4gVGlhbiA8a2V2aW4udGlhbkBpbnRlbC5jb20+CkNjOiBUaW0gRGVlZ2FuIDx0aW1AeGVuLm9y Zz4KCmNoYW5nZXMgaW4gdjU6CiAgLSBTaW1wbGlmeSBsb2dpYyBpbiBodm1lbXVsX2RvX2lvKCku CiAgLSBVc2UgbmF0dWFsIHdpZHRoIHR5cGVzIGluc3RlYWQgb2YgZml4ZWQgd2lkdGggdHlwZXMg d2hlbiBwb3NzaWJsZS4KICAtIERvIG5vdCBncmFudCBleGVjdXRhYmxlIHBlcm1pc3Npb24gZm9y IHAybV9pb3JlcV9zZXJ2ZXIgZW50cmllcy4KICAtIENsYXJpZnkgY29tbWVudHMgYW5kIGNvbW1p dCBtZXNzYWdlLgogIC0gSW50cm9kdWNlIGEgc2VwZXJhdGUgcGF0Y2ggdG8gcmVjYWxjdWxhdGUg dGhlIHAybSB0eXBlcyBhZnRlcgogICAgdGhlIGlvcmVxIHNlcnZlciB1bm1hcHMgdGhlIHAybV9p b3JlcV9zZXJ2ZXIuCgpjaGFuZ2VzIGluIHY0OgogIC0gQWNjb3JkaW5nIHRvIFBhdWwncyBhZHZp Y2UsIGFkZCBjb21tZW50cyBhcm91bmQgdGhlIGRlZmluaXRpb24KICAgIG9mIEhWTU1FTV9pb3Jl X3NlcnZlciBpbiBodm1fb3AuaC4KICAtIEFjY29yZGluZyB0byBXZWkgTGl1J3MgY29tbWVudHMs IGNoYW5nZSB0aGUgZm9ybWF0IG9mIHRoZSBjb21taXQKICAgIG1lc3NhZ2UuCgpjaGFuZ2VzIGlu IHYzOgogIC0gT25seSBzdXBwb3J0IHdyaXRlIGVtdWxhdGlvbiBpbiB0aGlzIHBhdGNoOwogIC0g UmVtb3ZlIHRoZSBjb2RlIHRvIGhhbmRsZSByYWNlIGNvbmRpdGlvbiBpbiBodm1lbXVsX2RvX2lv KCksCiAgLSBObyBuZWVkIHRvIHJlc2V0IHRoZSBwMm0gdHlwZSBhZnRlciBhbiBpb3JlcSBzZXJ2 ZXIgaGFzIGRpc2NsYWltZWQKICAgIGl0cyBvd25lcnNoaXAgb2YgcDJtX2lvcmVxX3NlcnZlcjsK ICAtIE9ubHkgYWxsb3cgcDJtIHR5cGUgY2hhbmdlIHRvIHAybV9pb3JlcV9zZXJ2ZXIgYWZ0ZXIg YW4gaW9yZXEKICAgIHNlcnZlciBoYXMgY2xhaW1lZCBpdHMgb3duZXJzaGlwIG9mIHAybV9pb3Jl cV9zZXJ2ZXI7CiAgLSBPbmx5IGFsbG93IHAybSB0eXBlIGNoYW5nZSB0byBwMm1faW9yZXFfc2Vy dmVyIGZyb20gcGFnZXMgd2l0aCB0eXBlCiAgICBwMm1fcmFtX3J3LCBhbmQgdmljZSB2ZXJzYTsK ICAtIEhWTU9QX21hcF9tZW1fdHlwZV90b19pb3JlcV9zZXJ2ZXIgaW50ZXJmYWNlIGNoYW5nZSAt IHVzZSB1aW50MTYsCiAgICBpbnN0ZWFkIG9mIGVudW0gdG8gc3BlY2lmeSB0aGUgbWVtb3J5IHR5 cGU7CiAgLSBGdW5jdGlvbiBwcm90b3R5cGUgY2hhbmdlIHRvIHAybV9nZXRfaW9yZXFfc2VydmVy KCk7CiAgLSBDb2Rpbmcgc3R5bGUgY2hhbmdlczsKICAtIENvbW1pdCBtZXNzYWdlIGNoYW5nZXM7 CiAgLSBBZGQgVGltJ3MgQWNrZWQtYnkuCgpjaGFuZ2VzIGluIHYyOiAKICAtIE9ubHkgc3VwcG9y dCBIQVAgZW5hYmxlZCBIVk1zOwogIC0gUmVwbGFjZSBwMm1fbWVtX3R5cGVfY2hhbmdlZCgpIHdp dGggcDJtX2NoYW5nZV9lbnRyeV90eXBlX2dsb2JhbCgpCiAgICB0byByZXNldCB0aGUgcDJtIHR5 cGUsIHdoZW4gYW4gaW9yZXEgc2VydmVyIHRyaWVzIHRvIGNsYWltL2Rpc2NsYWltCiAgICBpdHMg b3duZXJzaGlwIG9mIHAybV9pb3JlcV9zZXJ2ZXI7CiAgLSBDb21tZW50cyBjaGFuZ2VzLgotLS0K IHhlbi9hcmNoL3g4Ni9odm0vZW11bGF0ZS5jICAgICAgIHwgMzMgKysrKysrKysrKysrKysrKy0t CiB4ZW4vYXJjaC94ODYvaHZtL2h2bS5jICAgICAgICAgICB8IDY2ICsrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKy0tCiB4ZW4vYXJjaC94ODYvaHZtL2lvcmVxLmMgICAgICAgICB8IDQx ICsrKysrKysrKysrKysrKysrKysrKysKIHhlbi9hcmNoL3g4Ni9tbS9oYXAvbmVzdGVkX2hhcC5j IHwgIDIgKy0KIHhlbi9hcmNoL3g4Ni9tbS9wMm0tZXB0LmMgICAgICAgIHwgIDggKysrKy0KIHhl bi9hcmNoL3g4Ni9tbS9wMm0tcHQuYyAgICAgICAgIHwgMjAgKysrKysrKy0tLS0KIHhlbi9hcmNo L3g4Ni9tbS9wMm0uYyAgICAgICAgICAgIHwgNzQgKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKwogeGVuL2FyY2gveDg2L21tL3NoYWRvdy9tdWx0aS5jICAgfCAgMyArLQog eGVuL2luY2x1ZGUvYXNtLXg4Ni9odm0vaW9yZXEuaCAgfCAgMiArKwogeGVuL2luY2x1ZGUvYXNt LXg4Ni9wMm0uaCAgICAgICAgfCAyOSArKysrKysrKysrKysrKy0tCiB4ZW4vaW5jbHVkZS9wdWJs aWMvaHZtL2h2bV9vcC5oICB8IDMxICsrKysrKysrKysrKysrKystCiAxMSBmaWxlcyBjaGFuZ2Vk LCAyOTAgaW5zZXJ0aW9ucygrKSwgMTkgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEveGVuL2Fy Y2gveDg2L2h2bS9lbXVsYXRlLmMgYi94ZW4vYXJjaC94ODYvaHZtL2VtdWxhdGUuYwppbmRleCA4 NTVhZjRkLi5jMjM1YTQwIDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvaHZtL2VtdWxhdGUuYwor KysgYi94ZW4vYXJjaC94ODYvaHZtL2VtdWxhdGUuYwpAQCAtMTAwLDYgKzEwMCw3IEBAIHN0YXRp YyBpbnQgaHZtZW11bF9kb19pbygKICAgICB1aW50OF90IGRpciwgYm9vbF90IGRmLCBib29sX3Qg ZGF0YV9pc19hZGRyLCB1aW50cHRyX3QgZGF0YSkKIHsKICAgICBzdHJ1Y3QgdmNwdSAqY3VyciA9 IGN1cnJlbnQ7CisgICAgc3RydWN0IGRvbWFpbiAqY3VycmQgPSBjdXJyLT5kb21haW47CiAgICAg c3RydWN0IGh2bV92Y3B1X2lvICp2aW8gPSAmY3Vyci0+YXJjaC5odm1fdmNwdS5odm1faW87CiAg ICAgaW9yZXFfdCBwID0gewogICAgICAgICAudHlwZSA9IGlzX21taW8gPyBJT1JFUV9UWVBFX0NP UFkgOiBJT1JFUV9UWVBFX1BJTywKQEAgLTE0MSw3ICsxNDIsNyBAQCBzdGF0aWMgaW50IGh2bWVt dWxfZG9faW8oCiAgICAgICAgICAgICAgKHAuZGlyICE9IGRpcikgfHwKICAgICAgICAgICAgICAo cC5kZiAhPSBkZikgfHwKICAgICAgICAgICAgICAocC5kYXRhX2lzX3B0ciAhPSBkYXRhX2lzX2Fk ZHIpICkKLSAgICAgICAgICAgIGRvbWFpbl9jcmFzaChjdXJyLT5kb21haW4pOworICAgICAgICAg ICAgZG9tYWluX2NyYXNoKGN1cnJkKTsKIAogICAgICAgICBpZiAoIGRhdGFfaXNfYWRkciApCiAg ICAgICAgICAgICByZXR1cm4gWDg2RU1VTF9VTkhBTkRMRUFCTEU7CkBAIC0xNzgsOCArMTc5LDM0 IEBAIHN0YXRpYyBpbnQgaHZtZW11bF9kb19pbygKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBY ODZFTVVMX1VOSEFORExFQUJMRToKICAgICB7Ci0gICAgICAgIHN0cnVjdCBodm1faW9yZXFfc2Vy dmVyICpzID0KLSAgICAgICAgICAgIGh2bV9zZWxlY3RfaW9yZXFfc2VydmVyKGN1cnItPmRvbWFp biwgJnApOworICAgICAgICBzdHJ1Y3QgaHZtX2lvcmVxX3NlcnZlciAqczsKKworICAgICAgICBp ZiAoIGlzX21taW8gKQorICAgICAgICB7CisgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGdtZm4g PSBwYWRkcl90b19wZm4oYWRkcik7CisgICAgICAgICAgICBwMm1fdHlwZV90IHAybXQ7CisKKyAg ICAgICAgICAgICh2b2lkKSBnZXRfZ2ZuX3F1ZXJ5X3VubG9ja2VkKGN1cnJkLCBnbWZuLCAmcDJt dCk7CisKKyAgICAgICAgICAgIGlmICggcDJtdCA9PSBwMm1faW9yZXFfc2VydmVyICkKKyAgICAg ICAgICAgIHsKKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgZmxhZ3M7CisKKyAgICAgICAg ICAgICAgICBpZiAoIGRpciAhPSBJT1JFUV9XUklURSApCisgICAgICAgICAgICAgICAgICAgIHMg PSBOVUxMOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB7CisgICAgICAg ICAgICAgICAgICAgIHMgPSBwMm1fZ2V0X2lvcmVxX3NlcnZlcihjdXJyZCwgJmZsYWdzKTsKKwor ICAgICAgICAgICAgICAgICAgICBpZiAoICEoZmxhZ3MgJiBQMk1fSU9SRVFfSEFORExFX1dSSVRF X0FDQ0VTUykgKQorICAgICAgICAgICAgICAgICAgICAgICAgcyA9IE5VTEw7CisgICAgICAgICAg ICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAg IHMgPSBodm1fc2VsZWN0X2lvcmVxX3NlcnZlcihjdXJyZCwgJnApOworICAgICAgICB9CisgICAg ICAgIGVsc2UKKyAgICAgICAgICAgIHMgPSBodm1fc2VsZWN0X2lvcmVxX3NlcnZlcihjdXJyZCwg JnApOwogCiAgICAgICAgIC8qIElmIHRoZXJlIGlzIG5vIHN1aXRhYmxlIGJhY2tpbmcgRE0sIGp1 c3QgaWdub3JlIGFjY2Vzc2VzICovCiAgICAgICAgIGlmICggIXMgKQpkaWZmIC0tZ2l0IGEveGVu L2FyY2gveDg2L2h2bS9odm0uYyBiL3hlbi9hcmNoL3g4Ni9odm0vaHZtLmMKaW5kZXggNDQ1M2Vj MC4uNGQ5OGNjNiAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L2h2bS9odm0uYworKysgYi94ZW4v YXJjaC94ODYvaHZtL2h2bS5jCkBAIC01NDEwLDkgKzU0MTAsMTQgQEAgc3RhdGljIGludCBodm1v cF9nZXRfbWVtX3R5cGUoCiAKIHN0YXRpYyBib29sX3QgaHZtX2FsbG93X3AybV90eXBlX2NoYW5n ZShwMm1fdHlwZV90IG9sZCwgcDJtX3R5cGVfdCBuZXcpCiB7CisgICAgaWYgKCBuZXcgPT0gcDJt X2lvcmVxX3NlcnZlciApCisgICAgICAgIHJldHVybiBvbGQgPT0gcDJtX3JhbV9ydzsKKworICAg IGlmICggb2xkID09IHAybV9pb3JlcV9zZXJ2ZXIgKQorICAgICAgICByZXR1cm4gbmV3ID09IHAy bV9yYW1fcnc7CisKICAgICBpZiAoIHAybV9pc19yYW0ob2xkKSB8fAotICAgICAgICAgKHAybV9p c19ob2xlKG9sZCkgJiYgbmV3ID09IHAybV9tbWlvX2RtKSB8fAotICAgICAgICAgKG9sZCA9PSBw Mm1faW9yZXFfc2VydmVyICYmIG5ldyA9PSBwMm1fcmFtX3J3KSApCisgICAgICAgICAocDJtX2lz X2hvbGUob2xkKSAmJiBuZXcgPT0gcDJtX21taW9fZG0pICkKICAgICAgICAgcmV0dXJuIDE7CiAK ICAgICByZXR1cm4gMDsKQEAgLTU0NDcsNiArNTQ1MiwyMSBAQCBzdGF0aWMgaW50IGh2bW9wX3Nl dF9tZW1fdHlwZSgKICAgICBpZiAoICFpc19odm1fZG9tYWluKGQpICkKICAgICAgICAgZ290byBv dXQ7CiAKKyAgICBpZiAoIGEuaHZtbWVtX3R5cGUgPT0gSFZNTUVNX2lvcmVxX3NlcnZlciApCisg ICAgeworICAgICAgICB1bnNpZ25lZCBpbnQgZmxhZ3M7CisgICAgICAgIHN0cnVjdCBodm1faW9y ZXFfc2VydmVyICpzOworCisgICAgICAgIC8qIEhWTU1FTV9pb3JlcV9zZXJ2ZXIgaXMgb25seSBz dXBwb3J0ZWQgZm9yIEhBUCBlbmFibGVkIGh2bS4gKi8KKyAgICAgICAgaWYgKCAhaGFwX2VuYWJs ZWQoZCkgKQorICAgICAgICAgICAgZ290byBvdXQ7CisKKyAgICAgICAgLyogRG8gbm90IGNoYW5n ZSB0byBIVk1NRU1faW9yZXFfc2VydmVyIGlmIG5vIGlvcmVxIHNlcnZlciBtYXBwZWQuICovCisg ICAgICAgIHMgPSBwMm1fZ2V0X2lvcmVxX3NlcnZlcihkLCAmZmxhZ3MpOworICAgICAgICBpZiAo IHMgPT0gTlVMTCApCisgICAgICAgICAgICBnb3RvIG91dDsKKyAgICB9CisKICAgICByYyA9IHhz bV9odm1fY29udHJvbChYU01fRE1fUFJJViwgZCwgSFZNT1Bfc2V0X21lbV90eXBlKTsKICAgICBp ZiAoIHJjICkKICAgICAgICAgZ290byBvdXQ7CkBAIC01NTA5LDYgKzU1MjksNDMgQEAgc3RhdGlj IGludCBodm1vcF9zZXRfbWVtX3R5cGUoCiAgICAgcmV0dXJuIHJjOwogfQogCitzdGF0aWMgaW50 IGh2bW9wX21hcF9tZW1fdHlwZV90b19pb3JlcV9zZXJ2ZXIoCisgICAgWEVOX0dVRVNUX0hBTkRM RV9QQVJBTSh4ZW5faHZtX21hcF9tZW1fdHlwZV90b19pb3JlcV9zZXJ2ZXJfdCkgdW9wKQorewor ICAgIHhlbl9odm1fbWFwX21lbV90eXBlX3RvX2lvcmVxX3NlcnZlcl90IG9wOworICAgIHN0cnVj dCBkb21haW4gKmQ7CisgICAgaW50IHJjOworCisgICAgaWYgKCBjb3B5X2Zyb21fZ3Vlc3QoJm9w LCB1b3AsIDEpICkKKyAgICAgICAgcmV0dXJuIC1FRkFVTFQ7CisKKyAgICByYyA9IHJjdV9sb2Nr X3JlbW90ZV9kb21haW5fYnlfaWQob3AuZG9taWQsICZkKTsKKyAgICBpZiAoIHJjICE9IDAgKQor ICAgICAgICByZXR1cm4gcmM7CisKKyAgICByYyA9IC1FSU5WQUw7CisgICAgaWYgKCAhaXNfaHZt X2RvbWFpbihkKSApCisgICAgICAgIGdvdG8gb3V0OworCisgICAgaWYgKCBvcC5wYWQgIT0gMCAp CisgICAgICAgIGdvdG8gb3V0OworCisgICAgLyogT25seSBzdXBwb3J0IGZvciBIQVAgZW5hYmxl ZCBodm0uICovCisgICAgaWYgKCAhaGFwX2VuYWJsZWQoZCkgKQorICAgICAgICBnb3RvIG91dDsK KworICAgIHJjID0geHNtX2h2bV9pb3JlcV9zZXJ2ZXIoWFNNX0RNX1BSSVYsIGQsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBIVk1PUF9tYXBfbWVtX3R5cGVfdG9faW9yZXFfc2VydmVy KTsKKyAgICBpZiAoIHJjICE9IDAgKQorICAgICAgICBnb3RvIG91dDsKKworICAgIHJjID0gaHZt X21hcF9tZW1fdHlwZV90b19pb3JlcV9zZXJ2ZXIoZCwgb3AuaWQsIG9wLnR5cGUsIG9wLmZsYWdz KTsKKworIG91dDoKKyAgICByY3VfdW5sb2NrX2RvbWFpbihkKTsKKyAgICByZXR1cm4gcmM7Cit9 CisKIGxvbmcgZG9faHZtX29wKHVuc2lnbmVkIGxvbmcgb3AsIFhFTl9HVUVTVF9IQU5ETEVfUEFS QU0odm9pZCkgYXJnKQogewogICAgIHVuc2lnbmVkIGxvbmcgc3RhcnRfaXRlciwgbWFzazsKQEAg LTU1NDgsNiArNTYwNSwxMSBAQCBsb25nIGRvX2h2bV9vcCh1bnNpZ25lZCBsb25nIG9wLCBYRU5f R1VFU1RfSEFORExFX1BBUkFNKHZvaWQpIGFyZykKICAgICAgICAgICAgIGd1ZXN0X2hhbmRsZV9j YXN0KGFyZywgeGVuX2h2bV9pb19yYW5nZV90KSk7CiAgICAgICAgIGJyZWFrOwogCisgICAgY2Fz ZSBIVk1PUF9tYXBfbWVtX3R5cGVfdG9faW9yZXFfc2VydmVyOgorICAgICAgICByYyA9IGh2bW9w X21hcF9tZW1fdHlwZV90b19pb3JlcV9zZXJ2ZXIoCisgICAgICAgICAgICBndWVzdF9oYW5kbGVf Y2FzdChhcmcsIHhlbl9odm1fbWFwX21lbV90eXBlX3RvX2lvcmVxX3NlcnZlcl90KSk7CisgICAg ICAgIGJyZWFrOworCiAgICAgY2FzZSBIVk1PUF9zZXRfaW9yZXFfc2VydmVyX3N0YXRlOgogICAg ICAgICByYyA9IGh2bW9wX3NldF9pb3JlcV9zZXJ2ZXJfc3RhdGUoCiAgICAgICAgICAgICBndWVz dF9oYW5kbGVfY2FzdChhcmcsIHhlbl9odm1fc2V0X2lvcmVxX3NlcnZlcl9zdGF0ZV90KSk7CmRp ZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvaHZtL2lvcmVxLmMgYi94ZW4vYXJjaC94ODYvaHZtL2lv cmVxLmMKaW5kZXggNzE0OGFjNC4uMzZhMjI5OCAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L2h2 bS9pb3JlcS5jCisrKyBiL3hlbi9hcmNoL3g4Ni9odm0vaW9yZXEuYwpAQCAtNzUzLDYgKzc1Myw4 IEBAIGludCBodm1fZGVzdHJveV9pb3JlcV9zZXJ2ZXIoc3RydWN0IGRvbWFpbiAqZCwgaW9zZXJ2 aWRfdCBpZCkKIAogICAgICAgICBkb21haW5fcGF1c2UoZCk7CiAKKyAgICAgICAgcDJtX2Rlc3Ry b3lfaW9yZXFfc2VydmVyKGQsIHMpOworCiAgICAgICAgIGh2bV9pb3JlcV9zZXJ2ZXJfZGlzYWJs ZShzLCAwKTsKIAogICAgICAgICBsaXN0X2RlbCgmcy0+bGlzdF9lbnRyeSk7CkBAIC05MTQsNiAr OTE2LDQ1IEBAIGludCBodm1fdW5tYXBfaW9fcmFuZ2VfZnJvbV9pb3JlcV9zZXJ2ZXIoc3RydWN0 IGRvbWFpbiAqZCwgaW9zZXJ2aWRfdCBpZCwKICAgICByZXR1cm4gcmM7CiB9CiAKK2ludCBodm1f bWFwX21lbV90eXBlX3RvX2lvcmVxX3NlcnZlcihzdHJ1Y3QgZG9tYWluICpkLCBpb3NlcnZpZF90 IGlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHR5cGUs IHVpbnQzMl90IGZsYWdzKQoreworICAgIHN0cnVjdCBodm1faW9yZXFfc2VydmVyICpzOworICAg IGludCByYzsKKworICAgIC8qIEZvciBub3csIG9ubHkgSFZNTUVNX2lvcmVxX3NlcnZlciBpcyBz dXBwb3J0ZWQuICovCisgICAgaWYgKCB0eXBlICE9IEhWTU1FTV9pb3JlcV9zZXJ2ZXIgKQorICAg ICAgICByZXR1cm4gLUVJTlZBTDsKKworICAgIC8qIEZvciBub3csIG9ubHkgd3JpdGUgZW11bGF0 aW9uIGlzIHN1cHBvcnRlZC4gKi8KKyAgICBpZiAoIGZsYWdzICYgfihYRU5fSFZNT1BfSU9SRVFf TUVNX0FDQ0VTU19XUklURSkgKQorICAgICAgICByZXR1cm4gLUVJTlZBTDsKKworICAgIHNwaW5f bG9jaygmZC0+YXJjaC5odm1fZG9tYWluLmlvcmVxX3NlcnZlci5sb2NrKTsKKworICAgIHJjID0g LUVOT0VOVDsKKyAgICBsaXN0X2Zvcl9lYWNoX2VudHJ5ICggcywKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgJmQtPmFyY2guaHZtX2RvbWFpbi5pb3JlcV9zZXJ2ZXIubGlzdCwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgbGlzdF9lbnRyeSApCisgICAgeworICAgICAgICBpZiAoIHMgPT0g ZC0+YXJjaC5odm1fZG9tYWluLmRlZmF1bHRfaW9yZXFfc2VydmVyICkKKyAgICAgICAgICAgIGNv bnRpbnVlOworCisgICAgICAgIGlmICggcy0+aWQgPT0gaWQgKQorICAgICAgICB7CisgICAgICAg ICAgICByYyA9IHAybV9zZXRfaW9yZXFfc2VydmVyKGQsIGZsYWdzLCBzKTsKKyAgICAgICAgICAg IGlmICggcmMgPT0gMCApCisgICAgICAgICAgICAgICAgZHByaW50ayhYRU5MT0dfREVCVUcsICIl dSAlcyB0eXBlIEhWTU1FTV9pb3JlcV9zZXJ2ZXIuXG4iLAorICAgICAgICAgICAgICAgICAgICAg ICAgIHMtPmlkLCAoZmxhZ3MgIT0gMCkgPyAibWFwcGVkIHRvIiA6ICJ1bm1hcHBlZCBmcm9tIik7 CisKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorCisgICAgc3Bpbl91bmxv Y2soJmQtPmFyY2guaHZtX2RvbWFpbi5pb3JlcV9zZXJ2ZXIubG9jayk7CisgICAgcmV0dXJuIHJj OworfQorCiBpbnQgaHZtX3NldF9pb3JlcV9zZXJ2ZXJfc3RhdGUoc3RydWN0IGRvbWFpbiAqZCwg aW9zZXJ2aWRfdCBpZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sX3QgZW5h YmxlZCkKIHsKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9tbS9oYXAvbmVzdGVkX2hhcC5jIGIv eGVuL2FyY2gveDg2L21tL2hhcC9uZXN0ZWRfaGFwLmMKaW5kZXggZDQxYmIwOS4uYWE5MGE2MiAx MDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L21tL2hhcC9uZXN0ZWRfaGFwLmMKKysrIGIveGVuL2Fy Y2gveDg2L21tL2hhcC9uZXN0ZWRfaGFwLmMKQEAgLTE3NCw3ICsxNzQsNyBAQCBuZXN0ZWRoYXBf d2Fsa19MMF9wMm0oc3RydWN0IHAybV9kb21haW4gKnAybSwgcGFkZHJfdCBMMV9ncGEsIHBhZGRy X3QgKkwwX2dwYSwKICAgICBpZiAoICpwMm10ID09IHAybV9tbWlvX2RpcmVjdCApCiAgICAgICAg IGdvdG8gZGlyZWN0X21taW9fb3V0OwogICAgIHJjID0gTkVTVEVESFZNX1BBR0VGQVVMVF9NTUlP OwotICAgIGlmICggKnAybXQgPT0gcDJtX21taW9fZG0gKQorICAgIGlmICggKnAybXQgPT0gcDJt X21taW9fZG0gfHwgKnAybXQgPT0gcDJtX2lvcmVxX3NlcnZlciApCiAgICAgICAgIGdvdG8gb3V0 OwogCiAgICAgcmMgPSBORVNURURIVk1fUEFHRUZBVUxUX0wwX0VSUk9SOwpkaWZmIC0tZ2l0IGEv eGVuL2FyY2gveDg2L21tL3AybS1lcHQuYyBiL3hlbi9hcmNoL3g4Ni9tbS9wMm0tZXB0LmMKaW5k ZXggN2FkYzc3ZC4uNWYwNmQ0MCAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L21tL3AybS1lcHQu YworKysgYi94ZW4vYXJjaC94ODYvbW0vcDJtLWVwdC5jCkBAIC0xMzIsNiArMTMyLDEzIEBAIHN0 YXRpYyB2b2lkIGVwdF9wMm1fdHlwZV90b19mbGFncyhzdHJ1Y3QgcDJtX2RvbWFpbiAqcDJtLCBl cHRfZW50cnlfdCAqZW50cnksCiAgICAgICAgICAgICBlbnRyeS0+ciA9IGVudHJ5LT53ID0gZW50 cnktPnggPSAxOwogICAgICAgICAgICAgZW50cnktPmEgPSBlbnRyeS0+ZCA9ICEhY3B1X2hhc192 bXhfZXB0X2FkOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgcDJtX2lvcmVxX3Nl cnZlcjoKKyAgICAgICAgICAgIGVudHJ5LT5yID0gMTsKKyAgICAgICAgICAgIGVudHJ5LT53ID0g IShwMm0tPmlvcmVxLmZsYWdzICYgUDJNX0lPUkVRX0hBTkRMRV9XUklURV9BQ0NFU1MpOworICAg ICAgICAgICAgZW50cnktPnggPSAwOworICAgICAgICAgICAgZW50cnktPmEgPSAhIWNwdV9oYXNf dm14X2VwdF9hZDsKKyAgICAgICAgICAgIGVudHJ5LT5kID0gZW50cnktPncgJiYgY3B1X2hhc192 bXhfZXB0X2FkOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgcDJtX21taW9fZGly ZWN0OgogICAgICAgICAgICAgZW50cnktPnIgPSBlbnRyeS0+eCA9IDE7CiAgICAgICAgICAgICBl bnRyeS0+dyA9ICFyYW5nZXNldF9jb250YWluc19zaW5nbGV0b24obW1pb19yb19yYW5nZXMsCkBA IC0xNzEsNyArMTc4LDYgQEAgc3RhdGljIHZvaWQgZXB0X3AybV90eXBlX3RvX2ZsYWdzKHN0cnVj dCBwMm1fZG9tYWluICpwMm0sIGVwdF9lbnRyeV90ICplbnRyeSwKICAgICAgICAgICAgIGVudHJ5 LT5hID0gZW50cnktPmQgPSAhIWNwdV9oYXNfdm14X2VwdF9hZDsKICAgICAgICAgICAgIGJyZWFr OwogICAgICAgICBjYXNlIHAybV9ncmFudF9tYXBfcm86Ci0gICAgICAgIGNhc2UgcDJtX2lvcmVx X3NlcnZlcjoKICAgICAgICAgICAgIGVudHJ5LT5yID0gMTsKICAgICAgICAgICAgIGVudHJ5LT53 ID0gZW50cnktPnggPSAwOwogICAgICAgICAgICAgZW50cnktPmEgPSAhIWNwdV9oYXNfdm14X2Vw dF9hZDsKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9tbS9wMm0tcHQuYyBiL3hlbi9hcmNoL3g4 Ni9tbS9wMm0tcHQuYwppbmRleCAwNWFhZjhmLi42MjA5ZTdiIDEwMDY0NAotLS0gYS94ZW4vYXJj aC94ODYvbW0vcDJtLXB0LmMKKysrIGIveGVuL2FyY2gveDg2L21tL3AybS1wdC5jCkBAIC03Miw3 ICs3Miw5IEBAIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBsb25nIHBndFtdID0gewogICAgIFBHVF9s M19wYWdlX3RhYmxlCiB9OwogCi1zdGF0aWMgdW5zaWduZWQgbG9uZyBwMm1fdHlwZV90b19mbGFn cyhwMm1fdHlwZV90IHQsIG1mbl90IG1mbiwKK3N0YXRpYyB1bnNpZ25lZCBsb25nIHAybV90eXBl X3RvX2ZsYWdzKGNvbnN0IHN0cnVjdCBwMm1fZG9tYWluICpwMm0sCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBwMm1fdHlwZV90IHQsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBtZm5fdCBtZm4sCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgbGV2ZWwpCiB7CiAgICAgdW5zaWduZWQgbG9uZyBm bGFnczsKQEAgLTk0LDggKzk2LDEzIEBAIHN0YXRpYyB1bnNpZ25lZCBsb25nIHAybV90eXBlX3Rv X2ZsYWdzKHAybV90eXBlX3QgdCwgbWZuX3QgbWZuLAogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJl dHVybiBmbGFncyB8IF9QQUdFX05YX0JJVDsKICAgICBjYXNlIHAybV9ncmFudF9tYXBfcm86Ci0g ICAgY2FzZSBwMm1faW9yZXFfc2VydmVyOgogICAgICAgICByZXR1cm4gZmxhZ3MgfCBQMk1fQkFT RV9GTEFHUyB8IF9QQUdFX05YX0JJVDsKKyAgICBjYXNlIHAybV9pb3JlcV9zZXJ2ZXI6CisgICAg ICAgIGZsYWdzIHw9IFAyTV9CQVNFX0ZMQUdTIHwgX1BBR0VfUlcgfCBfUEFHRV9OWF9CSVQ7Cisg ICAgICAgIGlmICggcDJtLT5pb3JlcS5mbGFncyAmIFAyTV9JT1JFUV9IQU5ETEVfV1JJVEVfQUND RVNTICkKKyAgICAgICAgICAgIHJldHVybiBmbGFncyAmIH5fUEFHRV9SVzsKKyAgICAgICAgZWxz ZQorICAgICAgICAgICAgcmV0dXJuIGZsYWdzOwogICAgIGNhc2UgcDJtX3JhbV9ybzoKICAgICBj YXNlIHAybV9yYW1fbG9nZGlydHk6CiAgICAgY2FzZSBwMm1fcmFtX3NoYXJlZDoKQEAgLTQ0Miw3 ICs0NDksOCBAQCBzdGF0aWMgaW50IGRvX3JlY2FsYyhzdHJ1Y3QgcDJtX2RvbWFpbiAqcDJtLCB1 bnNpZ25lZCBsb25nIGdmbikKICAgICAgICAgICAgIHAybV90eXBlX3QgcDJtdCA9IHAybV9pc19s b2dkaXJ0eV9yYW5nZShwMm0sIGdmbiAmIG1hc2ssIGdmbiB8IH5tYXNrKQogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgPyBwMm1fcmFtX2xvZ2RpcnR5IDogcDJtX3JhbV9ydzsKICAgICAg ICAgICAgIHVuc2lnbmVkIGxvbmcgbWZuID0gbDFlX2dldF9wZm4oZSk7Ci0gICAgICAgICAgICB1 bnNpZ25lZCBsb25nIGZsYWdzID0gcDJtX3R5cGVfdG9fZmxhZ3MocDJtdCwgX21mbihtZm4pLCBs ZXZlbCk7CisgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGZsYWdzID0gcDJtX3R5cGVfdG9fZmxh Z3MocDJtLCBwMm10LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIF9tZm4obWZuKSwgbGV2ZWwpOwogCiAgICAgICAgICAgICBpZiAoIGxldmVsICkK ICAgICAgICAgICAgIHsKQEAgLTU3OSw3ICs1ODcsNyBAQCBwMm1fcHRfc2V0X2VudHJ5KHN0cnVj dCBwMm1fZG9tYWluICpwMm0sIHVuc2lnbmVkIGxvbmcgZ2ZuLCBtZm5fdCBtZm4sCiAgICAgICAg IEFTU0VSVCghbWZuX3ZhbGlkKG1mbikgfHwgcDJtdCAhPSBwMm1fbW1pb19kaXJlY3QpOwogICAg ICAgICBsM2VfY29udGVudCA9IG1mbl92YWxpZChtZm4pIHx8IHAybV9hbGxvd3NfaW52YWxpZF9t Zm4ocDJtdCkKICAgICAgICAgICAgID8gbDNlX2Zyb21fcGZuKG1mbl94KG1mbiksCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICBwMm1fdHlwZV90b19mbGFncyhwMm10LCBtZm4sIDIpIHwgX1BB R0VfUFNFKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgcDJtX3R5cGVfdG9fZmxhZ3MocDJt LCBwMm10LCBtZm4sIDIpIHwgX1BBR0VfUFNFKQogICAgICAgICAgICAgOiBsM2VfZW1wdHkoKTsK ICAgICAgICAgZW50cnlfY29udGVudC5sMSA9IGwzZV9jb250ZW50LmwzOwogCkBAIC02MTUsNyAr NjIzLDcgQEAgcDJtX3B0X3NldF9lbnRyeShzdHJ1Y3QgcDJtX2RvbWFpbiAqcDJtLCB1bnNpZ25l ZCBsb25nIGdmbiwgbWZuX3QgbWZuLAogCiAgICAgICAgIGlmICggbWZuX3ZhbGlkKG1mbikgfHwg cDJtX2FsbG93c19pbnZhbGlkX21mbihwMm10KSApCiAgICAgICAgICAgICBlbnRyeV9jb250ZW50 ID0gcDJtX2wxZV9mcm9tX3BmbihtZm5feChtZm4pLAotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgcDJtX3R5cGVfdG9fZmxhZ3MocDJtdCwgbWZuLCAwKSk7Cisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAybV90eXBlX3RvX2ZsYWdz KHAybSwgcDJtdCwgbWZuLCAwKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGVudHJ5X2Nv bnRlbnQgPSBsMWVfZW1wdHkoKTsKIApAQCAtNjUxLDcgKzY1OSw3IEBAIHAybV9wdF9zZXRfZW50 cnkoc3RydWN0IHAybV9kb21haW4gKnAybSwgdW5zaWduZWQgbG9uZyBnZm4sIG1mbl90IG1mbiwK ICAgICAgICAgQVNTRVJUKCFtZm5fdmFsaWQobWZuKSB8fCBwMm10ICE9IHAybV9tbWlvX2RpcmVj dCk7CiAgICAgICAgIGlmICggbWZuX3ZhbGlkKG1mbikgfHwgcDJtX2FsbG93c19pbnZhbGlkX21m bihwMm10KSApCiAgICAgICAgICAgICBsMmVfY29udGVudCA9IGwyZV9mcm9tX3BmbihtZm5feCht Zm4pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcDJtX3R5cGVfdG9f ZmxhZ3MocDJtdCwgbWZuLCAxKSB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBwMm1fdHlwZV90b19mbGFncyhwMm0sIHAybXQsIG1mbiwgMSkgfAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgX1BBR0VfUFNFKTsKICAgICAgICAgZWxzZQogICAg ICAgICAgICAgbDJlX2NvbnRlbnQgPSBsMmVfZW1wdHkoKTsKZGlmZiAtLWdpdCBhL3hlbi9hcmNo L3g4Ni9tbS9wMm0uYyBiL3hlbi9hcmNoL3g4Ni9tbS9wMm0uYwppbmRleCAxNjczM2E0Li41NTY3 MTgxIDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvbW0vcDJtLmMKKysrIGIveGVuL2FyY2gveDg2 L21tL3AybS5jCkBAIC04Myw2ICs4Myw4IEBAIHN0YXRpYyBpbnQgcDJtX2luaXRpYWxpc2Uoc3Ry dWN0IGRvbWFpbiAqZCwgc3RydWN0IHAybV9kb21haW4gKnAybSkKICAgICBlbHNlCiAgICAgICAg IHAybV9wdF9pbml0KHAybSk7CiAKKyAgICBzcGluX2xvY2tfaW5pdCgmcDJtLT5pb3JlcS5sb2Nr KTsKKwogICAgIHJldHVybiByZXQ7CiB9CiAKQEAgLTI4OSw2ICsyOTEsNzggQEAgdm9pZCBwMm1f bWVtb3J5X3R5cGVfY2hhbmdlZChzdHJ1Y3QgZG9tYWluICpkKQogICAgIH0KIH0KIAoraW50IHAy bV9zZXRfaW9yZXFfc2VydmVyKHN0cnVjdCBkb21haW4gKmQsCisgICAgICAgICAgICAgICAgICAg ICAgICAgdW5zaWduZWQgaW50IGZsYWdzLAorICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVj dCBodm1faW9yZXFfc2VydmVyICpzKQoreworICAgIHN0cnVjdCBwMm1fZG9tYWluICpwMm0gPSBw Mm1fZ2V0X2hvc3RwMm0oZCk7CisgICAgaW50IHJjOworCisgICAgLyoKKyAgICAgKiBVc2UgbG9j ayB0byBwcmV2ZW50IGNvbmN1cnJlbnQgc2V0dGluZyByZXF1aXJlbWVudHMKKyAgICAgKiBmcm9t IG11bHRpcGxlIGlvcmVxIHNlcmVycy4KKyAgICAgKi8KKyAgICBzcGluX2xvY2soJnAybS0+aW9y ZXEubG9jayk7CisKKyAgICAvKiBVbm1hcCBpb3JlcSBzZXJ2ZXIgZnJvbSBwMm0gdHlwZSBieSBw YXNzaW5nIGZsYWdzIHdpdGggMC4gKi8KKyAgICBpZiAoIGZsYWdzID09IDAgKQorICAgIHsKKyAg ICAgICAgcmMgPSAtRUlOVkFMOworICAgICAgICBpZiAoIHAybS0+aW9yZXEuc2VydmVyICE9IHMg KQorICAgICAgICAgICAgZ290byBvdXQ7CisKKyAgICAgICAgcDJtLT5pb3JlcS5zZXJ2ZXIgPSBO VUxMOworICAgICAgICBwMm0tPmlvcmVxLmZsYWdzID0gMDsKKyAgICB9CisgICAgZWxzZQorICAg IHsKKyAgICAgICAgcmMgPSAtRUJVU1k7CisgICAgICAgIGlmICggcDJtLT5pb3JlcS5zZXJ2ZXIg IT0gTlVMTCApCisgICAgICAgICAgICBnb3RvIG91dDsKKworICAgICAgICBwMm0tPmlvcmVxLnNl cnZlciA9IHM7CisgICAgICAgIHAybS0+aW9yZXEuZmxhZ3MgPSBmbGFnczsKKyAgICB9CisKKyAg ICByYyA9IDA7CisKKyBvdXQ6CisgICAgc3Bpbl91bmxvY2soJnAybS0+aW9yZXEubG9jayk7CisK KyAgICByZXR1cm4gcmM7Cit9CisKK3N0cnVjdCBodm1faW9yZXFfc2VydmVyICpwMm1fZ2V0X2lv cmVxX3NlcnZlcihzdHJ1Y3QgZG9tYWluICpkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCAqZmxhZ3MpCit7CisgICAgc3RydWN0IHAy bV9kb21haW4gKnAybSA9IHAybV9nZXRfaG9zdHAybShkKTsKKyAgICBzdHJ1Y3QgaHZtX2lvcmVx X3NlcnZlciAqczsKKworICAgIHNwaW5fbG9jaygmcDJtLT5pb3JlcS5sb2NrKTsKKworICAgIHMg PSBwMm0tPmlvcmVxLnNlcnZlcjsKKyAgICAqZmxhZ3MgPSBwMm0tPmlvcmVxLmZsYWdzOworCisg ICAgc3Bpbl91bmxvY2soJnAybS0+aW9yZXEubG9jayk7CisgICAgcmV0dXJuIHM7Cit9CisKK3Zv aWQgcDJtX2Rlc3Ryb3lfaW9yZXFfc2VydmVyKGNvbnN0IHN0cnVjdCBkb21haW4gKmQsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgaHZtX2lvcmVxX3NlcnZlciAq cykKK3sKKyAgICBzdHJ1Y3QgcDJtX2RvbWFpbiAqcDJtID0gcDJtX2dldF9ob3N0cDJtKGQpOwor CisgICAgc3Bpbl9sb2NrKCZwMm0tPmlvcmVxLmxvY2spOworCisgICAgaWYgKCBwMm0tPmlvcmVx LnNlcnZlciA9PSBzICkKKyAgICB7CisgICAgICAgIHAybS0+aW9yZXEuc2VydmVyID0gTlVMTDsK KyAgICAgICAgcDJtLT5pb3JlcS5mbGFncyA9IDA7CisgICAgfQorCisgICAgc3Bpbl91bmxvY2so JnAybS0+aW9yZXEubG9jayk7Cit9CisKIHZvaWQgcDJtX2VuYWJsZV9oYXJkd2FyZV9sb2dfZGly dHkoc3RydWN0IGRvbWFpbiAqZCkKIHsKICAgICBzdHJ1Y3QgcDJtX2RvbWFpbiAqcDJtID0gcDJt X2dldF9ob3N0cDJtKGQpOwpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L21tL3NoYWRvdy9tdWx0 aS5jIGIveGVuL2FyY2gveDg2L21tL3NoYWRvdy9tdWx0aS5jCmluZGV4IDhjNGIyMGUuLjJmNDA4 MTYgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9tbS9zaGFkb3cvbXVsdGkuYworKysgYi94ZW4v YXJjaC94ODYvbW0vc2hhZG93L211bHRpLmMKQEAgLTMyMjUsOCArMzIyNSw3IEBAIHN0YXRpYyBp bnQgc2hfcGFnZV9mYXVsdChzdHJ1Y3QgdmNwdSAqdiwKICAgICB9CiAKICAgICAvKiBOZWVkIHRv IGhhbmQgb2ZmIGRldmljZS1tb2RlbCBNTUlPIHRvIHRoZSBkZXZpY2UgbW9kZWwgKi8KLSAgICBp ZiAoIHAybXQgPT0gcDJtX21taW9fZG0KLSAgICAgICAgIHx8IChwMm10ID09IHAybV9pb3JlcV9z ZXJ2ZXIgJiYgZnQgPT0gZnRfZGVtYW5kX3dyaXRlKSApCisgICAgaWYgKCBwMm10ID09IHAybV9t bWlvX2RtICkKICAgICB7CiAgICAgICAgIGdwYSA9IGd1ZXN0X3dhbGtfdG9fZ3BhKCZndyk7CiAg ICAgICAgIGdvdG8gbW1pbzsKZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL2FzbS14ODYvaHZtL2lv cmVxLmggYi94ZW4vaW5jbHVkZS9hc20teDg2L2h2bS9pb3JlcS5oCmluZGV4IGZiZjJjNzQuLmI0 MzY2N2EgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL2FzbS14ODYvaHZtL2lvcmVxLmgKKysrIGIv eGVuL2luY2x1ZGUvYXNtLXg4Ni9odm0vaW9yZXEuaApAQCAtMzcsNiArMzcsOCBAQCBpbnQgaHZt X21hcF9pb19yYW5nZV90b19pb3JlcV9zZXJ2ZXIoc3RydWN0IGRvbWFpbiAqZCwgaW9zZXJ2aWRf dCBpZCwKIGludCBodm1fdW5tYXBfaW9fcmFuZ2VfZnJvbV9pb3JlcV9zZXJ2ZXIoc3RydWN0IGRv bWFpbiAqZCwgaW9zZXJ2aWRfdCBpZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgdWludDMyX3QgdHlwZSwgdWludDY0X3Qgc3RhcnQsCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ2NF90IGVuZCk7CitpbnQgaHZtX21hcF9tZW1f dHlwZV90b19pb3JlcV9zZXJ2ZXIoc3RydWN0IGRvbWFpbiAqZCwgaW9zZXJ2aWRfdCBpZCwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCB0eXBlLCB1aW50MzJf dCBmbGFncyk7CiBpbnQgaHZtX3NldF9pb3JlcV9zZXJ2ZXJfc3RhdGUoc3RydWN0IGRvbWFpbiAq ZCwgaW9zZXJ2aWRfdCBpZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sX3Qg ZW5hYmxlZCk7CiAKZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL2FzbS14ODYvcDJtLmggYi94ZW4v aW5jbHVkZS9hc20teDg2L3AybS5oCmluZGV4IDY3ODU2NjkuLjA5NTBhOTEgMTAwNjQ0Ci0tLSBh L3hlbi9pbmNsdWRlL2FzbS14ODYvcDJtLmgKKysrIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9wMm0u aApAQCAtODksNyArODksOCBAQCB0eXBlZGVmIHVuc2lnbmVkIGludCBwMm1fcXVlcnlfdDsKICAg ICAgICAgICAgICAgICAgICAgICAgfCBwMm1fdG9fbWFzayhwMm1fcmFtX3BhZ2luZ19vdXQpICAg ICAgXAogICAgICAgICAgICAgICAgICAgICAgICB8IHAybV90b19tYXNrKHAybV9yYW1fcGFnZWQp ICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgIHwgcDJtX3RvX21hc2socDJtX3Jh bV9wYWdpbmdfaW4pICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgfCBwMm1fdG9fbWFz ayhwMm1fcmFtX3NoYXJlZCkpCisgICAgICAgICAgICAgICAgICAgICAgIHwgcDJtX3RvX21hc2so cDJtX3JhbV9zaGFyZWQpICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgfCBwMm1f dG9fbWFzayhwMm1faW9yZXFfc2VydmVyKSkKIAogLyogVHlwZXMgdGhhdCByZXByZXNlbnQgYSBw aHlzbWFwIGhvbGUgdGhhdCBpcyBvayB0byByZXBsYWNlIHdpdGggYSBzaGFyZWQKICAqIGVudHJ5 ICovCkBAIC0xMTEsOCArMTEyLDcgQEAgdHlwZWRlZiB1bnNpZ25lZCBpbnQgcDJtX3F1ZXJ5X3Q7 CiAjZGVmaW5lIFAyTV9ST19UWVBFUyAocDJtX3RvX21hc2socDJtX3JhbV9sb2dkaXJ0eSkgICAg IFwKICAgICAgICAgICAgICAgICAgICAgICB8IHAybV90b19tYXNrKHAybV9yYW1fcm8pICAgICAg ICAgXAogICAgICAgICAgICAgICAgICAgICAgIHwgcDJtX3RvX21hc2socDJtX2dyYW50X21hcF9y bykgICBcCi0gICAgICAgICAgICAgICAgICAgICAgfCBwMm1fdG9fbWFzayhwMm1fcmFtX3NoYXJl ZCkgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICB8IHAybV90b19tYXNrKHAybV9pb3JlcV9z ZXJ2ZXIpKQorICAgICAgICAgICAgICAgICAgICAgIHwgcDJtX3RvX21hc2socDJtX3JhbV9zaGFy ZWQpKQogCiAvKiBXcml0ZS1kaXNjYXJkIHR5cGVzLCB3aGljaCBzaG91bGQgZGlzY2FyZCB0aGUg d3JpdGUgb3BlcmF0aW9ucyAqLwogI2RlZmluZSBQMk1fRElTQ0FSRF9XUklURV9UWVBFUyAocDJt X3RvX21hc2socDJtX3JhbV9ybykgICAgIFwKQEAgLTMzNiw2ICszMzYsMjMgQEAgc3RydWN0IHAy bV9kb21haW4gewogICAgICAgICBzdHJ1Y3QgZXB0X2RhdGEgZXB0OwogICAgICAgICAvKiBOUFQt ZXF1aXZhbGVudCBzdHJ1Y3R1cmUgY291bGQgYmUgYWRkZWQgaGVyZS4gKi8KICAgICB9OworCisg ICAgc3RydWN0IHsKKyAgICAgICAgc3BpbmxvY2tfdCBsb2NrOworICAgICAgICAvKgorICAgICAg ICAgKiBpb3JlcSBzZXJ2ZXIgd2hvJ3MgcmVzcG9uc2libGUgZm9yIHRoZSBlbXVsYXRpb24gb2YK KyAgICAgICAgICogZ2ZucyB3aXRoIHNwZWNpZmljIHAybSB0eXBlKGZvciBub3csIHAybV9pb3Jl cV9zZXJ2ZXIpLgorICAgICAgICAgKi8KKyAgICAgICAgc3RydWN0IGh2bV9pb3JlcV9zZXJ2ZXIg KnNlcnZlcjsKKyAgICAgICAgLyoKKyAgICAgICAgICogZmxhZ3Mgc3BlY2lmaWVzIHdoZXRoZXIg cmVhZCwgd3JpdGUgb3IgYm90aCBvcGVyYXRpb25zCisgICAgICAgICAqIGFyZSB0byBiZSBlbXVs YXRlZCBieSBhbiBpb3JlcSBzZXJ2ZXIuCisgICAgICAgICAqLworICAgICAgICB1bnNpZ25lZCBp bnQgZmxhZ3M7CisKKyNkZWZpbmUgUDJNX0lPUkVRX0hBTkRMRV9XUklURV9BQ0NFU1MgWEVOX0hW TU9QX0lPUkVRX01FTV9BQ0NFU1NfV1JJVEUKKyNkZWZpbmUgUDJNX0lPUkVRX0hBTkRMRV9SRUFE X0FDQ0VTUyAgWEVOX0hWTU9QX0lPUkVRX01FTV9BQ0NFU1NfUkVBRAorICAgIH0gaW9yZXE7CiB9 OwogCiAvKiBnZXQgaG9zdCBwMm0gdGFibGUgKi8KQEAgLTg0Miw2ICs4NTksMTIgQEAgc3RhdGlj IGlubGluZSB1bnNpZ25lZCBpbnQgcDJtX2dldF9pb21tdV9mbGFncyhwMm1fdHlwZV90IHAybXQp CiAgICAgcmV0dXJuIGZsYWdzOwogfQogCitpbnQgcDJtX3NldF9pb3JlcV9zZXJ2ZXIoc3RydWN0 IGRvbWFpbiAqZCwgdW5zaWduZWQgaW50IGZsYWdzLAorICAgICAgICAgICAgICAgICAgICAgICAg IHN0cnVjdCBodm1faW9yZXFfc2VydmVyICpzKTsKK3N0cnVjdCBodm1faW9yZXFfc2VydmVyICpw Mm1fZ2V0X2lvcmVxX3NlcnZlcihzdHJ1Y3QgZG9tYWluICpkLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCAqZmxhZ3MpOwordm9pZCBw Mm1fZGVzdHJveV9pb3JlcV9zZXJ2ZXIoY29uc3Qgc3RydWN0IGRvbWFpbiAqZCwgY29uc3Qgc3Ry dWN0IGh2bV9pb3JlcV9zZXJ2ZXIgKnMpOworCiAjZW5kaWYgLyogX1hFTl9QMk1fSCAqLwogCiAv KgpkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvcHVibGljL2h2bS9odm1fb3AuaCBiL3hlbi9pbmNs dWRlL3B1YmxpYy9odm0vaHZtX29wLmgKaW5kZXggYjNlNDVjZi4uZDQ4NGM1ZiAxMDA2NDQKLS0t IGEveGVuL2luY2x1ZGUvcHVibGljL2h2bS9odm1fb3AuaAorKysgYi94ZW4vaW5jbHVkZS9wdWJs aWMvaHZtL2h2bV9vcC5oCkBAIC04OSw3ICs4OSw5IEBAIHR5cGVkZWYgZW51bSB7CiAgICAgSFZN TUVNX3VudXNlZCwgICAgICAgICAgICAgLyogUGxhY2Vob2xkZXI7IHNldHRpbmcgbWVtb3J5IHRv IHRoaXMgdHlwZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbGwgZmFpbCBm b3IgY29kZSBhZnRlciA0LjcuMCAqLwogI2VuZGlmCi0gICAgSFZNTUVNX2lvcmVxX3NlcnZlcgor ICAgIEhWTU1FTV9pb3JlcV9zZXJ2ZXIgICAgICAgIC8qIE1lbW9yeSB0eXBlIGNsYWltZWQgYnkg YW4gaW9yZXEgc2VydmVyOyB0eXBlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Y2hhbmdlcyB0byB0aGlzIHZhbHVlIGFyZSBvbmx5IGFsbG93ZWQgYWZ0ZXIKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBhbiBpb3JlcSBzZXJ2ZXIgaGFzIGNsYWltZWQgaXRzIG93 bmVyc2hpcC4gKi8KIH0gaHZtbWVtX3R5cGVfdDsKIAogLyogRm9sbG93aW5nIHRvb2xzLW9ubHkg aW50ZXJmYWNlcyBtYXkgY2hhbmdlIGluIGZ1dHVyZS4gKi8KQEAgLTM4Myw2ICszODUsMzMgQEAg c3RydWN0IHhlbl9odm1fc2V0X2lvcmVxX3NlcnZlcl9zdGF0ZSB7CiB0eXBlZGVmIHN0cnVjdCB4 ZW5faHZtX3NldF9pb3JlcV9zZXJ2ZXJfc3RhdGUgeGVuX2h2bV9zZXRfaW9yZXFfc2VydmVyX3N0 YXRlX3Q7CiBERUZJTkVfWEVOX0dVRVNUX0hBTkRMRSh4ZW5faHZtX3NldF9pb3JlcV9zZXJ2ZXJf c3RhdGVfdCk7CiAKKy8qCisgKiBIVk1PUF9tYXBfbWVtX3R5cGVfdG9faW9yZXFfc2VydmVyIDog bWFwIG9yIHVubWFwIHRoZSBJT1JFUSBTZXJ2ZXIgPGlkPgorICogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHRvIHNwZWNpZmljIG1lbXJveSB0eXBlIDx0eXBlPgorICogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBzcGVjaWZpYyBhY2Nlc3NlcyA8 ZmxhZ3M+CisgKgorICogRm9yIG5vdywgZmxhZ3Mgb25seSBhY2NlcHQgdGhlIHZhbHVlIG9mIEhW TU9QX0lPUkVRX01FTV9BQ0NFU1NfV1JJVEUsCisgKiB3aGljaCBtZWFucyBvbmx5IHdyaXRlIG9w ZXJhdGlvbnMgYXJlIHRvIGJlIGZvcndhcmRlZCB0byBhbiBpb3JlcSBzZXJ2ZXIuCisgKiBTdXBw b3J0IGZvciB0aGUgZW11bGF0aW9uIG9mIHJlYWQgb3BlcmF0aW9ucyBjYW4gYmUgYWRkZWQgd2hl biBhbiBpb3JlcQorICogc2VydmVyIGhhcyBzdWNoIHJlcXVpcmVtZW50IGluIGZ1dHVyZS4KKyAq LworI2RlZmluZSBIVk1PUF9tYXBfbWVtX3R5cGVfdG9faW9yZXFfc2VydmVyIDI2CitzdHJ1Y3Qg eGVuX2h2bV9tYXBfbWVtX3R5cGVfdG9faW9yZXFfc2VydmVyIHsKKyAgICBkb21pZF90IGRvbWlk OyAgICAgIC8qIElOIC0gZG9tYWluIHRvIGJlIHNlcnZpY2VkICovCisgICAgaW9zZXJ2aWRfdCBp ZDsgICAgICAvKiBJTiAtIGlvcmVxIHNlcnZlciBpZCAqLworICAgIHVpbnQxNl90IHR5cGU7ICAg ICAgLyogSU4gLSBtZW1vcnkgdHlwZSAqLworICAgIHVpbnQxNl90IHBhZDsKKyAgICB1aW50MzJf dCBmbGFnczsgICAgIC8qIElOIC0gdHlwZXMgb2YgYWNjZXNzZXMgdG8gYmUgZm9yd2FyZGVkIHRv IHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgaW9yZXEgc2VydmVyLiBmbGFncyB3aXRo IDAgbWVhbnMgdG8gdW5tYXAgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICBpb3JlcSBz ZXJ2ZXIgKi8KKworI2RlZmluZSBYRU5fSFZNT1BfSU9SRVFfTUVNX0FDQ0VTU19SRUFEICgxdSA8 PCAwKQorI2RlZmluZSBYRU5fSFZNT1BfSU9SRVFfTUVNX0FDQ0VTU19XUklURSAoMXUgPDwgMSkK K307Cit0eXBlZGVmIHN0cnVjdCB4ZW5faHZtX21hcF9tZW1fdHlwZV90b19pb3JlcV9zZXJ2ZXIK KyAgICB4ZW5faHZtX21hcF9tZW1fdHlwZV90b19pb3JlcV9zZXJ2ZXJfdDsKK0RFRklORV9YRU5f R1VFU1RfSEFORExFKHhlbl9odm1fbWFwX21lbV90eXBlX3RvX2lvcmVxX3NlcnZlcl90KTsKKwog I2VuZGlmIC8qIGRlZmluZWQoX19YRU5fXykgfHwgZGVmaW5lZChfX1hFTl9UT09MU19fKSAqLwog CiAjaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX3g4Nl82NF9fKQotLSAKMS45LjEK CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2 ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHBzOi8vbGlzdHMueGVu Lm9yZy94ZW4tZGV2ZWwK