From mboxrd@z Thu Jan 1 00:00:00 1970 From: Yu Zhang Subject: [PATCH v7 2/5] x86/ioreq server: Add DMOP to map guest ram with p2m_ioreq_server to an ioreq server. Date: Wed, 8 Mar 2017 23:33:49 +0800 Message-ID: <1488987232-12349-3-git-send-email-yu.c.zhang@linux.intel.com> References: <1488987232-12349-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: <1488987232-12349-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 QSBuZXcgRE1PUCAtIFhFTl9ETU9QX21hcF9tZW1fdHlwZV90b19pb3JlcV9zZXJ2ZXIsIGlzIGFk ZGVkIHRvCmxldCBvbmUgaW9yZXEgc2VydmVyIGNsYWltL2Rpc2NsYWltIGl0cyByZXNwb25zaWJp bGl0eSBmb3IgdGhlCmhhbmRsaW5nIG9mIGd1ZXN0IHBhZ2VzIHdpdGggcDJtIHR5cGUgcDJtX2lv cmVxX3NlcnZlci4gVXNlcnMKb2YgdGhpcyBETU9QIGNhbiBzcGVjaWZ5IHdoaWNoIGtpbmQgb2Yg b3BlcmF0aW9uIGlzIHN1cHBvc2VkCnRvIGJlIGVtdWxhdGVkIGluIGEgcGFyYW1ldGVyIG5hbWVk IGZsYWdzLiBDdXJyZW50bHksIHRoaXMgRE1PUApvbmx5IHN1cHBvcnQgdGhlIGVtdWxhdGlvbiBv ZiB3cml0ZSBvcGVyYXRpb25zLiBBbmQgaXQgY2FuIGJlCmZ1cnRoZXIgZXh0ZW5kZWQgdG8gc3Vw cG9ydCB0aGUgZW11bGF0aW9uIG9mIHJlYWQgb25lcyBpZiBhbgppb3JlcSBzZXJ2ZXIgaGFzIHN1 Y2ggcmVxdWlyZW1lbnQgaW4gdGhlIGZ1dHVyZS4KCkZvciBub3csIHdlIG9ubHkgc3VwcG9ydCBv bmUgaW9yZXEgc2VydmVyIGZvciB0aGlzIHAybSB0eXBlLCBzbwpvbmNlIGFuIGlvcmVxIHNlcnZl ciBoYXMgY2xhaW1lZCBpdHMgb3duZXJzaGlwLCBzdWJzZXF1ZW50IGNhbGxzCm9mIHRoZSBYRU5f RE1PUF9tYXBfbWVtX3R5cGVfdG9faW9yZXFfc2VydmVyIHdpbGwgZmFpbC4gVXNlcnMgY2FuCmFs c28gZGlzY2xhaW0gdGhlIG93bmVyc2hpcCBvZiBndWVzdCByYW0gcGFnZXMgd2l0aCBwMm1faW9y ZXFfc2VydmVyLApieSB0cmlnZ2VyaW5nIHRoaXMgbmV3IERNT1AsIHdpdGggaW9yZXEgc2VydmVy IGlkIHNldCB0byB0aGUgY3VycmVudApvd25lcidzIGFuZCBmbGFncyBwYXJhbWV0ZXIgc2V0IHRv IDAuCgpOb3RlIGJvdGggWEVOX0RNT1BfbWFwX21lbV90eXBlX3RvX2lvcmVxX3NlcnZlciBhbmQg cDJtX2lvcmVxX3NlcnZlcgphcmUgb25seSBzdXBwb3J0ZWQgZm9yIEhWTXMgd2l0aCBIQVAgZW5h YmxlZC4KCkFsc28gbm90ZSB0aGF0IG9ubHkgYWZ0ZXIgb25lIGlvcmVxIHNlcnZlciBjbGFpbXMg aXRzIG93bmVyc2hpcApvZiBwMm1faW9yZXFfc2VydmVyLCB3aWxsIHRoZSBwMm0gdHlwZSBjaGFu Z2UgdG8gcDJtX2lvcmVxX3NlcnZlcgpiZSBhbGxvd2VkLgoKU2lnbmVkLW9mZi1ieTogUGF1bCBE dXJyYW50IDxwYXVsLmR1cnJhbnRAY2l0cml4LmNvbT4KU2lnbmVkLW9mZi1ieTogWXUgWmhhbmcg PHl1LmMuemhhbmdAbGludXguaW50ZWwuY29tPgpBY2tlZC1ieTogVGltIERlZWdhbiA8dGltQHhl bi5vcmc+Ci0tLQpDYzogSmFuIEJldWxpY2ggPGpiZXVsaWNoQHN1c2UuY29tPgpDYzogQW5kcmV3 IENvb3BlciA8YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNvbT4KQ2M6IFBhdWwgRHVycmFudCA8cGF1 bC5kdXJyYW50QGNpdHJpeC5jb20+CkNjOiBHZW9yZ2UgRHVubGFwIDxnZW9yZ2UuZHVubGFwQGV1 LmNpdHJpeC5jb20+CkNjOiBKdW4gTmFrYWppbWEgPGp1bi5uYWthamltYUBpbnRlbC5jb20+CkNj OiBLZXZpbiBUaWFuIDxrZXZpbi50aWFuQGludGVsLmNvbT4KQ2M6IFRpbSBEZWVnYW4gPHRpbUB4 ZW4ub3JnPgoKY2hhbmdlcyBpbiB2NzogCiAgLSBVc2UgbmV3IGlvcmVxIHNlcnZlciBpbnRlcmZh Y2UgLSBYRU5fRE1PUF9tYXBfbWVtX3R5cGVfdG9faW9yZXFfc2VydmVyLgogIC0gQWNjb3JkaW5n IHRvIGNvbW1lbnRzIGZyb20gR2VvcmdlOiByZW1vdmVkIGRvbWFpbl9wYXVzZS91bnBhdXNlKCkg aW4KICAgIGh2bV9tYXBfbWVtX3R5cGVfdG9faW9yZXFfc2VydmVyKCksIGJlY2F1c2UgaXQncyB0 b28gZXhwZW5zaXZlLAogICAgYW5kIHdlIGNhbiBhdm9pZCB0aGU6IAogICAgYT4gZGVhZGxvY2sg YmV0d2VlbiBwMm0gbG9jayBhbmQgaW9yZXEgc2VydmVyIGxvY2sgYnkgdXNpbmcgdGhlc2UgbG9j a3MKICAgICAgIGluIHRoZSBzYW1lIG9yZGVyIC0gc29sdmVkIGluIHBhdGNoIDQ7CiAgICBiPiBm b3IgcmFjZSBjb25kaXRpb24gYmV0d2VlbiB2bSBleGl0IGFuZCBpb3JlcSBzZXJ2ZXIgdW5iaW5k aW5nLCB3ZSBjYW4KICAgICAgIGp1c3QgcmV0cnkgdGhpcyBpbnN0cnVjdGlvbi4KICAtIEFjY29y ZGluZyB0byBjb21tZW50cyBmcm9tIEphbiBhbmQgR2VvcmdlOiBjb250aW51ZSB0byBjbGFyaWZ5 IGxvZ2ljIGluCiAgICBodm1lbXVsX2RvX2lvKCkuCiAgLSBBY2NvcmRpbmcgdG8gY29tbWVudHMg ZnJvbSBKYW46IGNsYXJpZnkgY29tbWVudCBpbiBwMm1fc2V0X2lvcmVxX3NlcnZlcigpLgoKY2hh bmdlcyBpbiB2NjogCiAgLSBDbGFyaWZ5IGxvZ2ljIGluIGh2bWVtdWxfZG9faW8oKS4KICAtIFVz ZSByZWN1cnNpdmUgbG9jayBmb3IgaW9yZXEgc2VydmVyIGxvY2suCiAgLSBSZW1vdmUgZGVidWcg cHJpbnQgd2hlbiBtYXBwaW5nIGlvcmVxIHNlcnZlci4KICAtIENsYXJpZnkgY29kZSBpbiBlcHRf cDJtX3R5cGVfdG9fZmxhZ3MoKSBmb3IgY29uc2lzdGVuY3kuCiAgLSBSZW1vdmUgZGVmaW5pdGlv biBvZiBQMk1fSU9SRVFfSEFORExFX1dSSVRFX0FDQ0VTUy4KICAtIEFkZCBjb21tZW50cyBmb3Ig SFZNTUVNX2lvcmVxX3NlcnZlciB0byBub3RlIG9ubHkgY2hhbmdlcwogICAgdG8vZnJvbSBIVk1N RU1fcmFtX3J3IGFyZSBwZXJtaXR0ZWQuCiAgLSBBZGQgZG9tYWluX3BhdXNlL3VucGF1c2UoKSBp biBodm1fbWFwX21lbV90eXBlX3RvX2lvcmVxX3NlcnZlcigpCiAgICB0byBhdm9pZCB0aGUgcmFj ZSBjb25kaXRpb24gd2hlbiBhIHZtIGV4aXQgaGFwcGVucyBvbiBhIHdyaXRlLQogICAgcHJvdGVj dGVkIHBhZ2UsIGp1c3QgdG8gZmluZCB0aGUgaW9yZXEgc2VydmVyIGhhcyBiZWVuIHVubWFwcGVk CiAgICBhbHJlYWR5LgogIC0gSW50cm9kdWNlIGEgc2VwZXJhdGUgcGF0Y2ggdG8gZGVsYXkgdGhl IHJlbGVhc2Ugb2YgcDJtIAogICAgbG9jayB0byBhdm9pZCB0aGUgcmFjZSBjb25kaXRpb24uCiAg LSBJbnRyb2R1Y2UgYSBzZXBlcmF0ZSBwYXRjaCB0byBoYW5kbGUgdGhlIHJlYWQtbW9kaWZ5LXdy aXRlCiAgICBvcGVyYXRpb25zIG9uIGEgd3JpdGUgcHJvdGVjdGVkIHBhZ2UuCgpjaGFuZ2VzIGlu IHY1OiAKICAtIFNpbXBsaWZ5IGxvZ2ljIGluIGh2bWVtdWxfZG9faW8oKS4KICAtIFVzZSBuYXR1 YWwgd2lkdGggdHlwZXMgaW5zdGVhZCBvZiBmaXhlZCB3aWR0aCB0eXBlcyB3aGVuIHBvc3NpYmxl LgogIC0gRG8gbm90IGdyYW50IGV4ZWN1dGFibGUgcGVybWlzc2lvbiBmb3IgcDJtX2lvcmVxX3Nl cnZlciBlbnRyaWVzLgogIC0gQ2xhcmlmeSBjb21tZW50cyBhbmQgY29tbWl0IG1lc3NhZ2UuCiAg LSBJbnRyb2R1Y2UgYSBzZXBlcmF0ZSBwYXRjaCB0byByZWNhbGN1bGF0ZSB0aGUgcDJtIHR5cGVz IGFmdGVyCiAgICB0aGUgaW9yZXEgc2VydmVyIHVubWFwcyB0aGUgcDJtX2lvcmVxX3NlcnZlci4K CmNoYW5nZXMgaW4gdjQ6CiAgLSBBY2NvcmRpbmcgdG8gUGF1bCdzIGFkdmljZSwgYWRkIGNvbW1l bnRzIGFyb3VuZCB0aGUgZGVmaW5pdGlvbgogICAgb2YgSFZNTUVNX2lvcmVfc2VydmVyIGluIGh2 bV9vcC5oLgogIC0gQWNjb3JkaW5nIHRvIFdlaSBMaXUncyBjb21tZW50cywgY2hhbmdlIHRoZSBm b3JtYXQgb2YgdGhlIGNvbW1pdAogICAgbWVzc2FnZS4KCmNoYW5nZXMgaW4gdjM6CiAgLSBPbmx5 IHN1cHBvcnQgd3JpdGUgZW11bGF0aW9uIGluIHRoaXMgcGF0Y2g7CiAgLSBSZW1vdmUgdGhlIGNv ZGUgdG8gaGFuZGxlIHJhY2UgY29uZGl0aW9uIGluIGh2bWVtdWxfZG9faW8oKSwKICAtIE5vIG5l ZWQgdG8gcmVzZXQgdGhlIHAybSB0eXBlIGFmdGVyIGFuIGlvcmVxIHNlcnZlciBoYXMgZGlzY2xh aW1lZAogICAgaXRzIG93bmVyc2hpcCBvZiBwMm1faW9yZXFfc2VydmVyOwogIC0gT25seSBhbGxv dyBwMm0gdHlwZSBjaGFuZ2UgdG8gcDJtX2lvcmVxX3NlcnZlciBhZnRlciBhbiBpb3JlcQogICAg c2VydmVyIGhhcyBjbGFpbWVkIGl0cyBvd25lcnNoaXAgb2YgcDJtX2lvcmVxX3NlcnZlcjsKICAt IE9ubHkgYWxsb3cgcDJtIHR5cGUgY2hhbmdlIHRvIHAybV9pb3JlcV9zZXJ2ZXIgZnJvbSBwYWdl cyB3aXRoIHR5cGUKICAgIHAybV9yYW1fcncsIGFuZCB2aWNlIHZlcnNhOwogIC0gSFZNT1BfbWFw X21lbV90eXBlX3RvX2lvcmVxX3NlcnZlciBpbnRlcmZhY2UgY2hhbmdlIC0gdXNlIHVpbnQxNiwK ICAgIGluc3RlYWQgb2YgZW51bSB0byBzcGVjaWZ5IHRoZSBtZW1vcnkgdHlwZTsKICAtIEZ1bmN0 aW9uIHByb3RvdHlwZSBjaGFuZ2UgdG8gcDJtX2dldF9pb3JlcV9zZXJ2ZXIoKTsKICAtIENvZGlu ZyBzdHlsZSBjaGFuZ2VzOwogIC0gQ29tbWl0IG1lc3NhZ2UgY2hhbmdlczsKICAtIEFkZCBUaW0n cyBBY2tlZC1ieS4KCmNoYW5nZXMgaW4gdjI6CiAgLSBPbmx5IHN1cHBvcnQgSEFQIGVuYWJsZWQg SFZNczsKICAtIFJlcGxhY2UgcDJtX21lbV90eXBlX2NoYW5nZWQoKSB3aXRoIHAybV9jaGFuZ2Vf ZW50cnlfdHlwZV9nbG9iYWwoKQogICAgdG8gcmVzZXQgdGhlIHAybSB0eXBlLCB3aGVuIGFuIGlv cmVxIHNlcnZlciB0cmllcyB0byBjbGFpbS9kaXNjbGFpbQogICAgaXRzIG93bmVyc2hpcCBvZiBw Mm1faW9yZXFfc2VydmVyOwogIC0gQ29tbWVudHMgY2hhbmdlcy4KLS0tCiB4ZW4vYXJjaC94ODYv aHZtL2RtLmMgICAgICAgICAgICB8IDQwICsrKysrKysrKysrKysrKysrKysrLS0KIHhlbi9hcmNo L3g4Ni9odm0vZW11bGF0ZS5jICAgICAgIHwgNjQgKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKystLQogeGVuL2FyY2gveDg2L2h2bS9pb3JlcS5jICAgICAgICAgfCAzOCArKysrKysrKysr KysrKysrKysrKysKIHhlbi9hcmNoL3g4Ni9tbS9oYXAvbmVzdGVkX2hhcC5jIHwgIDIgKy0KIHhl bi9hcmNoL3g4Ni9tbS9wMm0tZXB0LmMgICAgICAgIHwgIDggKysrKy0KIHhlbi9hcmNoL3g4Ni9t bS9wMm0tcHQuYyAgICAgICAgIHwgMjAgKysrKysrKy0tLS0KIHhlbi9hcmNoL3g4Ni9tbS9wMm0u YyAgICAgICAgICAgIHwgNzQgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KwogeGVuL2FyY2gveDg2L21tL3NoYWRvdy9tdWx0aS5jICAgfCAgMyArLQogeGVuL2luY2x1ZGUv YXNtLXg4Ni9odm0vaW9yZXEuaCAgfCAgMiArKwogeGVuL2luY2x1ZGUvYXNtLXg4Ni9wMm0uaCAg ICAgICAgfCAyNiArKysrKysrKysrKystLQogeGVuL2luY2x1ZGUvcHVibGljL2h2bS9kbV9vcC5o ICAgfCAyNiArKysrKysrKysrKysrKwogeGVuL2luY2x1ZGUvcHVibGljL2h2bS9odm1fb3AuaCAg fCAgOCArKysrLQogMTIgZmlsZXMgY2hhbmdlZCwgMjkyIGluc2VydGlvbnMoKyksIDE5IGRlbGV0 aW9ucygtKQoKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9odm0vZG0uYyBiL3hlbi9hcmNoL3g4 Ni9odm0vZG0uYwppbmRleCAyMTIyYzQ1Li5mOTc0NzhiIDEwMDY0NAotLS0gYS94ZW4vYXJjaC94 ODYvaHZtL2RtLmMKKysrIGIveGVuL2FyY2gveDg2L2h2bS9kbS5jCkBAIC0xNzMsOSArMTczLDE0 IEBAIHN0YXRpYyBpbnQgbW9kaWZpZWRfbWVtb3J5KHN0cnVjdCBkb21haW4gKmQsCiAKIHN0YXRp YyBib29sIGFsbG93X3AybV90eXBlX2NoYW5nZShwMm1fdHlwZV90IG9sZCwgcDJtX3R5cGVfdCBu ZXcpCiB7CisgICAgaWYgKCBuZXcgPT0gcDJtX2lvcmVxX3NlcnZlciApCisgICAgICAgIHJldHVy biBvbGQgPT0gcDJtX3JhbV9ydzsKKworICAgIGlmICggb2xkID09IHAybV9pb3JlcV9zZXJ2ZXIg KQorICAgICAgICByZXR1cm4gbmV3ID09IHAybV9yYW1fcnc7CisKICAgICByZXR1cm4gcDJtX2lz X3JhbShvbGQpIHx8Ci0gICAgICAgICAgIChwMm1faXNfaG9sZShvbGQpICYmIG5ldyA9PSBwMm1f bW1pb19kbSkgfHwKLSAgICAgICAgICAgKG9sZCA9PSBwMm1faW9yZXFfc2VydmVyICYmIG5ldyA9 PSBwMm1fcmFtX3J3KTsKKyAgICAgICAgICAgKHAybV9pc19ob2xlKG9sZCkgJiYgbmV3ID09IHAy bV9tbWlvX2RtKTsKIH0KIAogc3RhdGljIGludCBzZXRfbWVtX3R5cGUoc3RydWN0IGRvbWFpbiAq ZCwKQEAgLTIwMiw2ICsyMDcsMTkgQEAgc3RhdGljIGludCBzZXRfbWVtX3R5cGUoc3RydWN0IGRv bWFpbiAqZCwKICAgICAgICAgIHVubGlrZWx5KGRhdGEtPm1lbV90eXBlID09IEhWTU1FTV91bnVz ZWQpICkKICAgICAgICAgcmV0dXJuIC1FSU5WQUw7CiAKKyAgICBpZiAoIGRhdGEtPm1lbV90eXBl ICA9PSBIVk1NRU1faW9yZXFfc2VydmVyICkKKyAgICB7CisgICAgICAgIHVuc2lnbmVkIGludCBm bGFnczsKKworICAgICAgICAvKiBIVk1NRU1faW9yZXFfc2VydmVyIGlzIG9ubHkgc3VwcG9ydGVk IGZvciBIQVAgZW5hYmxlZCBodm0uICovCisgICAgICAgIGlmICggIWhhcF9lbmFibGVkKGQpICkK KyAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOworCisgICAgICAgIC8qIERvIG5vdCBjaGFuZ2Ug dG8gSFZNTUVNX2lvcmVxX3NlcnZlciBpZiBubyBpb3JlcSBzZXJ2ZXIgbWFwcGVkLiAqLworICAg ICAgICBpZiAoICFwMm1fZ2V0X2lvcmVxX3NlcnZlcihkLCAmZmxhZ3MpICkKKyAgICAgICAgICAg IHJldHVybiAtRUlOVkFMOworICAgIH0KKwogICAgIHdoaWxlICggaXRlciA8IGRhdGEtPm5yICkK ICAgICB7CiAgICAgICAgIHVuc2lnbmVkIGxvbmcgcGZuID0gZGF0YS0+Zmlyc3RfcGZuICsgaXRl cjsKQEAgLTM2NSw2ICszODMsMjQgQEAgc3RhdGljIGludCBkbV9vcChkb21pZF90IGRvbWlkLAog ICAgICAgICBicmVhazsKICAgICB9CiAKKyAgICBjYXNlIFhFTl9ETU9QX21hcF9tZW1fdHlwZV90 b19pb3JlcV9zZXJ2ZXI6CisgICAgeworICAgICAgICBjb25zdCBzdHJ1Y3QgeGVuX2RtX29wX21h cF9tZW1fdHlwZV90b19pb3JlcV9zZXJ2ZXIgKmRhdGEgPQorICAgICAgICAgICAgJm9wLnUubWFw X21lbV90eXBlX3RvX2lvcmVxX3NlcnZlcjsKKworICAgICAgICByYyA9IC1FSU5WQUw7CisgICAg ICAgIGlmICggZGF0YS0+cGFkICkKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIC8qIE9u bHkgc3VwcG9ydCBmb3IgSEFQIGVuYWJsZWQgaHZtLiAqLworICAgICAgICBpZiAoICFoYXBfZW5h YmxlZChkKSApCisgICAgICAgICAgICBicmVhazsKKworICAgICAgICByYyA9IGh2bV9tYXBfbWVt X3R5cGVfdG9faW9yZXFfc2VydmVyKGQsIGRhdGEtPmlkLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtPnR5cGUsIGRhdGEtPmZsYWdzKTsKKyAgICAg ICAgYnJlYWs7CisgICAgfQorCiAgICAgY2FzZSBYRU5fRE1PUF9zZXRfaW9yZXFfc2VydmVyX3N0 YXRlOgogICAgIHsKICAgICAgICAgY29uc3Qgc3RydWN0IHhlbl9kbV9vcF9zZXRfaW9yZXFfc2Vy dmVyX3N0YXRlICpkYXRhID0KZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9odm0vZW11bGF0ZS5j IGIveGVuL2FyY2gveDg2L2h2bS9lbXVsYXRlLmMKaW5kZXggMWM2NjAxMC4uZmI1NmY3YiAxMDA2 NDQKLS0tIGEveGVuL2FyY2gveDg2L2h2bS9lbXVsYXRlLmMKKysrIGIveGVuL2FyY2gveDg2L2h2 bS9lbXVsYXRlLmMKQEAgLTk5LDYgKzk5LDcgQEAgc3RhdGljIGludCBodm1lbXVsX2RvX2lvKAog ICAgIHVpbnQ4X3QgZGlyLCBib29sX3QgZGYsIGJvb2xfdCBkYXRhX2lzX2FkZHIsIHVpbnRwdHJf dCBkYXRhKQogewogICAgIHN0cnVjdCB2Y3B1ICpjdXJyID0gY3VycmVudDsKKyAgICBzdHJ1Y3Qg ZG9tYWluICpjdXJyZCA9IGN1cnItPmRvbWFpbjsKICAgICBzdHJ1Y3QgaHZtX3ZjcHVfaW8gKnZp byA9ICZjdXJyLT5hcmNoLmh2bV92Y3B1Lmh2bV9pbzsKICAgICBpb3JlcV90IHAgPSB7CiAgICAg ICAgIC50eXBlID0gaXNfbW1pbyA/IElPUkVRX1RZUEVfQ09QWSA6IElPUkVRX1RZUEVfUElPLApA QCAtMTQwLDcgKzE0MSw3IEBAIHN0YXRpYyBpbnQgaHZtZW11bF9kb19pbygKICAgICAgICAgICAg ICAocC5kaXIgIT0gZGlyKSB8fAogICAgICAgICAgICAgIChwLmRmICE9IGRmKSB8fAogICAgICAg ICAgICAgIChwLmRhdGFfaXNfcHRyICE9IGRhdGFfaXNfYWRkcikgKQotICAgICAgICAgICAgZG9t YWluX2NyYXNoKGN1cnItPmRvbWFpbik7CisgICAgICAgICAgICBkb21haW5fY3Jhc2goY3VycmQp OwogCiAgICAgICAgIGlmICggZGF0YV9pc19hZGRyICkKICAgICAgICAgICAgIHJldHVybiBYODZF TVVMX1VOSEFORExFQUJMRTsKQEAgLTE3Nyw4ICsxNzgsNjUgQEAgc3RhdGljIGludCBodm1lbXVs X2RvX2lvKAogICAgICAgICBicmVhazsKICAgICBjYXNlIFg4NkVNVUxfVU5IQU5ETEVBQkxFOgog ICAgIHsKLSAgICAgICAgc3RydWN0IGh2bV9pb3JlcV9zZXJ2ZXIgKnMgPQotICAgICAgICAgICAg aHZtX3NlbGVjdF9pb3JlcV9zZXJ2ZXIoY3Vyci0+ZG9tYWluLCAmcCk7CisgICAgICAgIC8qCisg ICAgICAgICAqIFhlbiBpc24ndCBlbXVsYXRpbmcgdGhlIGluc3RydWN0aW9uIGludGVybmFsbHks IHNvIHNlZSBpZgorICAgICAgICAgKiB0aGVyZSdzIGFuIGlvcmVxIHNlcnZlciB0aGF0IGNhbiBo YW5kbGUgaXQuIFJ1bGVzOgorICAgICAgICAgKgorICAgICAgICAgKiAtIFBJTyBhbmQgIm5vcm1h bCIgbW1pbyBydW4gdGhyb3VnaCBodm1fc2VsZWN0X2lvcmVxX3NlcnZlcigpCisgICAgICAgICAq IHRvIGNob29zZSB0aGUgaW9yZXEgc2VydmVyIGJ5IHJhbmdlLiBJZiBubyBzZXJ2ZXIgaXMgZm91 bmQsCisgICAgICAgICAqIHRoZSBhY2Nlc3MgaXMgaWdub3JlZC4KKyAgICAgICAgICoKKyAgICAg ICAgICogLSBwMm1faW9yZXFfc2VydmVyIGFjY2Vzc2VzIGFyZSBoYW5kbGVkIGJ5IHRoZSBjdXJy ZW50CisgICAgICAgICAqIGlvcmVxX3NlcnZlciBmb3IgdGhlIGRvbWFpbiwgYnV0IHRoZXJlIGFy ZSBzb21lIGNvcm5lcgorICAgICAgICAgKiBjYXNlczoKKyAgICAgICAgICoKKyAgICAgICAgICog ICAtIElmIHRoZSBkb21haW4gaW9yZXFfc2VydmVyIGlzIE5VTEwsIGFzc3VtZSB0aGlzIGlzIGEK KyAgICAgICAgICogICByYWNlIGJldHdlZW4gdGhlIHVuYmluZGluZyBvZiBpb3JlcSBzZXJ2ZXIg YW5kIGd1ZXN0IGZhdWx0CisgICAgICAgICAqICAgc28gcmUtdHJ5IHRoZSBpbnN0cnVjdGlvbi4K KyAgICAgICAgICoKKyAgICAgICAgICogICAtIElmIHRoZSBJT1JFUV9NRU1fQUNDRVNTX1dSSVRF IGZsYWcgaXMgbm90IHNldCwgdHJlYXQgaXQKKyAgICAgICAgICogICBsaWtlIGEgbm9ybWFsIFBJ TyBvciBNTUlPIHRoYXQgZG9lc24ndCBoYXZlIGFuIGlvcmVxCisgICAgICAgICAqICAgc2VydmVy IChpLmUuLCBieSBpZ25vcmluZyBpdCkuCisgICAgICAgICAqLworICAgICAgICBzdHJ1Y3QgaHZt X2lvcmVxX3NlcnZlciAqcyA9IE5VTEw7CisgICAgICAgIHAybV90eXBlX3QgcDJtdCA9IHAybV9p bnZhbGlkOworCisgICAgICAgIGlmICggaXNfbW1pbyApCisgICAgICAgIHsKKyAgICAgICAgICAg IHVuc2lnbmVkIGxvbmcgZ21mbiA9IHBhZGRyX3RvX3BmbihhZGRyKTsKKworICAgICAgICAgICAg KHZvaWQpIGdldF9nZm5fcXVlcnlfdW5sb2NrZWQoY3VycmQsIGdtZm4sICZwMm10KTsKKworICAg ICAgICAgICAgaWYgKCBwMm10ID09IHAybV9pb3JlcV9zZXJ2ZXIgKQorICAgICAgICAgICAgewor ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBmbGFnczsKKworICAgICAgICAgICAgICAgIHMg PSBwMm1fZ2V0X2lvcmVxX3NlcnZlcihjdXJyZCwgJmZsYWdzKTsKKworICAgICAgICAgICAgICAg IC8qCisgICAgICAgICAgICAgICAgICogSWYgcDJtdCBpcyBpb3JlcV9zZXJ2ZXIgYnV0IGlvcmVx X3NlcnZlciBpcyBOVUxMLAorICAgICAgICAgICAgICAgICAqIHdlIHByb2JhYmx5IGxvc3QgYSBy YWNlIHdpdGggdW5iaW5kaW5nIG9mIGlvcmVxCisgICAgICAgICAgICAgICAgICogc2VydmVyLCBq dXN0IHJldHJ5IHRoZSBhY2Nlc3MuCisgICAgICAgICAgICAgICAgICovCisgICAgICAgICAgICAg ICAgaWYgKCBzID09IE5VTEwgKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAg ICAgcmMgPSBYODZFTVVMX1JFVFJZOworICAgICAgICAgICAgICAgICAgICB2aW8tPmlvX3JlcS5z dGF0ZSA9IFNUQVRFX0lPUkVRX05PTkU7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAg ICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgICAgICog SWYgdGhlIElPUkVRX01FTV9BQ0NFU1NfV1JJVEUgZmxhZyBpcyBub3Qgc2V0LAorICAgICAgICAg ICAgICAgICAqIHdlIHNob3VsZCBzZXQgcyB0byBOVUxMLCBhbmQganVzdCBpZ25vcmUgc3VjaAor ICAgICAgICAgICAgICAgICAqIGFjY2Vzcy4KKyAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAg ICAgICAgICBpZiAoICEoZmxhZ3MgJiBYRU5fRE1PUF9JT1JFUV9NRU1fQUNDRVNTX1dSSVRFKSAp CisgICAgICAgICAgICAgICAgICAgIHMgPSBOVUxMOworICAgICAgICAgICAgfQorICAgICAgICB9 CisKKyAgICAgICAgaWYgKCAhcyAmJiBwMm10ICE9IHAybV9pb3JlcV9zZXJ2ZXIgKQorICAgICAg ICAgICAgcyA9IGh2bV9zZWxlY3RfaW9yZXFfc2VydmVyKGN1cnJkLCAmcCk7CiAKICAgICAgICAg LyogSWYgdGhlcmUgaXMgbm8gc3VpdGFibGUgYmFja2luZyBETSwganVzdCBpZ25vcmUgYWNjZXNz ZXMgKi8KICAgICAgICAgaWYgKCAhcyApCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvaHZtL2lv cmVxLmMgYi94ZW4vYXJjaC94ODYvaHZtL2lvcmVxLmMKaW5kZXggZWJiM2VjYS4uZmNiOWYzOCAx MDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L2h2bS9pb3JlcS5jCisrKyBiL3hlbi9hcmNoL3g4Ni9o dm0vaW9yZXEuYwpAQCAtNzUzLDYgKzc1Myw4IEBAIGludCBodm1fZGVzdHJveV9pb3JlcV9zZXJ2 ZXIoc3RydWN0IGRvbWFpbiAqZCwgaW9zZXJ2aWRfdCBpZCkKIAogICAgICAgICBkb21haW5fcGF1 c2UoZCk7CiAKKyAgICAgICAgcDJtX2Rlc3Ryb3lfaW9yZXFfc2VydmVyKGQsIHMpOworCiAgICAg ICAgIGh2bV9pb3JlcV9zZXJ2ZXJfZGlzYWJsZShzLCAwKTsKIAogICAgICAgICBsaXN0X2RlbCgm cy0+bGlzdF9lbnRyeSk7CkBAIC05MTQsNiArOTE2LDQyIEBAIGludCBodm1fdW5tYXBfaW9fcmFu Z2VfZnJvbV9pb3JlcV9zZXJ2ZXIoc3RydWN0IGRvbWFpbiAqZCwgaW9zZXJ2aWRfdCBpZCwKICAg ICByZXR1cm4gcmM7CiB9CiAKK2ludCBodm1fbWFwX21lbV90eXBlX3RvX2lvcmVxX3NlcnZlcihz dHJ1Y3QgZG9tYWluICpkLCBpb3NlcnZpZF90IGlkLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHVpbnQzMl90IHR5cGUsIHVpbnQzMl90IGZsYWdzKQoreworICAgIHN0cnVj dCBodm1faW9yZXFfc2VydmVyICpzOworICAgIGludCByYzsKKworICAgIC8qIEZvciBub3csIG9u bHkgSFZNTUVNX2lvcmVxX3NlcnZlciBpcyBzdXBwb3J0ZWQuICovCisgICAgaWYgKCB0eXBlICE9 IEhWTU1FTV9pb3JlcV9zZXJ2ZXIgKQorICAgICAgICByZXR1cm4gLUVJTlZBTDsKKworICAgIC8q IEZvciBub3csIG9ubHkgd3JpdGUgZW11bGF0aW9uIGlzIHN1cHBvcnRlZC4gKi8KKyAgICBpZiAo IGZsYWdzICYgfihYRU5fRE1PUF9JT1JFUV9NRU1fQUNDRVNTX1dSSVRFKSApCisgICAgICAgIHJl dHVybiAtRUlOVkFMOworCisgICAgc3Bpbl9sb2NrX3JlY3Vyc2l2ZSgmZC0+YXJjaC5odm1fZG9t YWluLmlvcmVxX3NlcnZlci5sb2NrKTsKKworICAgIHJjID0gLUVOT0VOVDsKKyAgICBsaXN0X2Zv cl9lYWNoX2VudHJ5ICggcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJmQtPmFyY2guaHZt X2RvbWFpbi5pb3JlcV9zZXJ2ZXIubGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgbGlz dF9lbnRyeSApCisgICAgeworICAgICAgICBpZiAoIHMgPT0gZC0+YXJjaC5odm1fZG9tYWluLmRl ZmF1bHRfaW9yZXFfc2VydmVyICkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGlm ICggcy0+aWQgPT0gaWQgKQorICAgICAgICB7CisgICAgICAgICAgICByYyA9IHAybV9zZXRfaW9y ZXFfc2VydmVyKGQsIGZsYWdzLCBzKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9Cisg ICAgfQorCisgICAgc3Bpbl91bmxvY2tfcmVjdXJzaXZlKCZkLT5hcmNoLmh2bV9kb21haW4uaW9y ZXFfc2VydmVyLmxvY2spOworCisgICAgcmV0dXJuIHJjOworfQorCiBpbnQgaHZtX3NldF9pb3Jl cV9zZXJ2ZXJfc3RhdGUoc3RydWN0IGRvbWFpbiAqZCwgaW9zZXJ2aWRfdCBpZCwKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBib29sX3QgZW5hYmxlZCkKIHsKZGlmZiAtLWdpdCBhL3hl bi9hcmNoL3g4Ni9tbS9oYXAvbmVzdGVkX2hhcC5jIGIveGVuL2FyY2gveDg2L21tL2hhcC9uZXN0 ZWRfaGFwLmMKaW5kZXggMTYyYWZlZC4uNDA4ZWE3ZiAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2 L21tL2hhcC9uZXN0ZWRfaGFwLmMKKysrIGIveGVuL2FyY2gveDg2L21tL2hhcC9uZXN0ZWRfaGFw LmMKQEAgLTE3Miw3ICsxNzIsNyBAQCBuZXN0ZWRoYXBfd2Fsa19MMF9wMm0oc3RydWN0IHAybV9k b21haW4gKnAybSwgcGFkZHJfdCBMMV9ncGEsIHBhZGRyX3QgKkwwX2dwYSwKICAgICBpZiAoICpw Mm10ID09IHAybV9tbWlvX2RpcmVjdCApCiAgICAgICAgIGdvdG8gZGlyZWN0X21taW9fb3V0Owog ICAgIHJjID0gTkVTVEVESFZNX1BBR0VGQVVMVF9NTUlPOwotICAgIGlmICggKnAybXQgPT0gcDJt X21taW9fZG0gKQorICAgIGlmICggKnAybXQgPT0gcDJtX21taW9fZG0gfHwgKnAybXQgPT0gcDJt X2lvcmVxX3NlcnZlciApCiAgICAgICAgIGdvdG8gb3V0OwogCiAgICAgcmMgPSBORVNURURIVk1f UEFHRUZBVUxUX0wwX0VSUk9SOwpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L21tL3AybS1lcHQu YyBiL3hlbi9hcmNoL3g4Ni9tbS9wMm0tZXB0LmMKaW5kZXggNTY4OTQ0Zi4uY2MxZWIyMSAxMDA2 NDQKLS0tIGEveGVuL2FyY2gveDg2L21tL3AybS1lcHQuYworKysgYi94ZW4vYXJjaC94ODYvbW0v cDJtLWVwdC5jCkBAIC0xMzEsNiArMTMxLDEzIEBAIHN0YXRpYyB2b2lkIGVwdF9wMm1fdHlwZV90 b19mbGFncyhzdHJ1Y3QgcDJtX2RvbWFpbiAqcDJtLCBlcHRfZW50cnlfdCAqZW50cnksCiAgICAg ICAgICAgICBlbnRyeS0+ciA9IGVudHJ5LT53ID0gZW50cnktPnggPSAxOwogICAgICAgICAgICAg ZW50cnktPmEgPSBlbnRyeS0+ZCA9ICEhY3B1X2hhc192bXhfZXB0X2FkOwogICAgICAgICAgICAg YnJlYWs7CisgICAgICAgIGNhc2UgcDJtX2lvcmVxX3NlcnZlcjoKKyAgICAgICAgICAgIGVudHJ5 LT5yID0gMTsKKyAgICAgICAgICAgIGVudHJ5LT53ID0gIShwMm0tPmlvcmVxLmZsYWdzICYgWEVO X0RNT1BfSU9SRVFfTUVNX0FDQ0VTU19XUklURSk7CisgICAgICAgICAgICBlbnRyeS0+eCA9IDA7 CisgICAgICAgICAgICBlbnRyeS0+YSA9ICEhY3B1X2hhc192bXhfZXB0X2FkOworICAgICAgICAg ICAgZW50cnktPmQgPSBlbnRyeS0+dyAmJiBlbnRyeS0+YTsKKyAgICAgICAgICAgIGJyZWFrOwog ICAgICAgICBjYXNlIHAybV9tbWlvX2RpcmVjdDoKICAgICAgICAgICAgIGVudHJ5LT5yID0gZW50 cnktPnggPSAxOwogICAgICAgICAgICAgZW50cnktPncgPSAhcmFuZ2VzZXRfY29udGFpbnNfc2lu Z2xldG9uKG1taW9fcm9fcmFuZ2VzLApAQCAtMTcwLDcgKzE3Nyw2IEBAIHN0YXRpYyB2b2lkIGVw dF9wMm1fdHlwZV90b19mbGFncyhzdHJ1Y3QgcDJtX2RvbWFpbiAqcDJtLCBlcHRfZW50cnlfdCAq ZW50cnksCiAgICAgICAgICAgICBlbnRyeS0+YSA9IGVudHJ5LT5kID0gISFjcHVfaGFzX3ZteF9l cHRfYWQ7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBwMm1fZ3JhbnRfbWFwX3Jv OgotICAgICAgICBjYXNlIHAybV9pb3JlcV9zZXJ2ZXI6CiAgICAgICAgICAgICBlbnRyeS0+ciA9 IDE7CiAgICAgICAgICAgICBlbnRyeS0+dyA9IGVudHJ5LT54ID0gMDsKICAgICAgICAgICAgIGVu dHJ5LT5hID0gISFjcHVfaGFzX3ZteF9lcHRfYWQ7CmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYv bW0vcDJtLXB0LmMgYi94ZW4vYXJjaC94ODYvbW0vcDJtLXB0LmMKaW5kZXggYmJmYTU0ZS4uOTdk YzI1ZCAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L21tL3AybS1wdC5jCisrKyBiL3hlbi9hcmNo L3g4Ni9tbS9wMm0tcHQuYwpAQCAtNzAsNyArNzAsOSBAQCBzdGF0aWMgY29uc3QgdW5zaWduZWQg bG9uZyBwZ3RbXSA9IHsKICAgICBQR1RfbDNfcGFnZV90YWJsZQogfTsKIAotc3RhdGljIHVuc2ln bmVkIGxvbmcgcDJtX3R5cGVfdG9fZmxhZ3MocDJtX3R5cGVfdCB0LCBtZm5fdCBtZm4sCitzdGF0 aWMgdW5zaWduZWQgbG9uZyBwMm1fdHlwZV90b19mbGFncyhjb25zdCBzdHJ1Y3QgcDJtX2RvbWFp biAqcDJtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcDJtX3R5cGVf dCB0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWZuX3QgbWZuLAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGxldmVs KQogewogICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7CkBAIC05Miw4ICs5NCwxMyBAQCBzdGF0aWMg dW5zaWduZWQgbG9uZyBwMm1fdHlwZV90b19mbGFncyhwMm1fdHlwZV90IHQsIG1mbl90IG1mbiwK ICAgICBkZWZhdWx0OgogICAgICAgICByZXR1cm4gZmxhZ3MgfCBfUEFHRV9OWF9CSVQ7CiAgICAg Y2FzZSBwMm1fZ3JhbnRfbWFwX3JvOgotICAgIGNhc2UgcDJtX2lvcmVxX3NlcnZlcjoKICAgICAg ICAgcmV0dXJuIGZsYWdzIHwgUDJNX0JBU0VfRkxBR1MgfCBfUEFHRV9OWF9CSVQ7CisgICAgY2Fz ZSBwMm1faW9yZXFfc2VydmVyOgorICAgICAgICBmbGFncyB8PSBQMk1fQkFTRV9GTEFHUyB8IF9Q QUdFX1JXIHwgX1BBR0VfTlhfQklUOworICAgICAgICBpZiAoIHAybS0+aW9yZXEuZmxhZ3MgJiBY RU5fRE1PUF9JT1JFUV9NRU1fQUNDRVNTX1dSSVRFICkKKyAgICAgICAgICAgIHJldHVybiBmbGFn cyAmIH5fUEFHRV9SVzsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmV0dXJuIGZsYWdzOwog ICAgIGNhc2UgcDJtX3JhbV9ybzoKICAgICBjYXNlIHAybV9yYW1fbG9nZGlydHk6CiAgICAgY2Fz ZSBwMm1fcmFtX3NoYXJlZDoKQEAgLTQ0MCw3ICs0NDcsOCBAQCBzdGF0aWMgaW50IGRvX3JlY2Fs YyhzdHJ1Y3QgcDJtX2RvbWFpbiAqcDJtLCB1bnNpZ25lZCBsb25nIGdmbikKICAgICAgICAgICAg IHAybV90eXBlX3QgcDJtdCA9IHAybV9pc19sb2dkaXJ0eV9yYW5nZShwMm0sIGdmbiAmIG1hc2ss IGdmbiB8IH5tYXNrKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBwMm1fcmFtX2xv Z2RpcnR5IDogcDJtX3JhbV9ydzsKICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgbWZuID0gbDFl X2dldF9wZm4oZSk7Ci0gICAgICAgICAgICB1bnNpZ25lZCBsb25nIGZsYWdzID0gcDJtX3R5cGVf dG9fZmxhZ3MocDJtdCwgX21mbihtZm4pLCBsZXZlbCk7CisgICAgICAgICAgICB1bnNpZ25lZCBs b25nIGZsYWdzID0gcDJtX3R5cGVfdG9fZmxhZ3MocDJtLCBwMm10LAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9tZm4obWZuKSwgbGV2ZWwpOwog CiAgICAgICAgICAgICBpZiAoIGxldmVsICkKICAgICAgICAgICAgIHsKQEAgLTU3OCw3ICs1ODYs NyBAQCBwMm1fcHRfc2V0X2VudHJ5KHN0cnVjdCBwMm1fZG9tYWluICpwMm0sIHVuc2lnbmVkIGxv bmcgZ2ZuLCBtZm5fdCBtZm4sCiAgICAgICAgIEFTU0VSVCghbWZuX3ZhbGlkKG1mbikgfHwgcDJt dCAhPSBwMm1fbW1pb19kaXJlY3QpOwogICAgICAgICBsM2VfY29udGVudCA9IG1mbl92YWxpZCht Zm4pIHx8IHAybV9hbGxvd3NfaW52YWxpZF9tZm4ocDJtdCkKICAgICAgICAgICAgID8gbDNlX2Zy b21fcGZuKG1mbl94KG1mbiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBwMm1fdHlwZV90 b19mbGFncyhwMm10LCBtZm4sIDIpIHwgX1BBR0VfUFNFKQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgcDJtX3R5cGVfdG9fZmxhZ3MocDJtLCBwMm10LCBtZm4sIDIpIHwgX1BBR0VfUFNFKQog ICAgICAgICAgICAgOiBsM2VfZW1wdHkoKTsKICAgICAgICAgZW50cnlfY29udGVudC5sMSA9IGwz ZV9jb250ZW50LmwzOwogCkBAIC02MTUsNyArNjIzLDcgQEAgcDJtX3B0X3NldF9lbnRyeShzdHJ1 Y3QgcDJtX2RvbWFpbiAqcDJtLCB1bnNpZ25lZCBsb25nIGdmbiwgbWZuX3QgbWZuLAogCiAgICAg ICAgIGlmICggbWZuX3ZhbGlkKG1mbikgfHwgcDJtX2FsbG93c19pbnZhbGlkX21mbihwMm10KSAp CiAgICAgICAgICAgICBlbnRyeV9jb250ZW50ID0gcDJtX2wxZV9mcm9tX3BmbihtZm5feChtZm4p LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcDJtX3R5cGVf dG9fZmxhZ3MocDJtdCwgbWZuLCAwKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHAybV90eXBlX3RvX2ZsYWdzKHAybSwgcDJtdCwgbWZuLCAwKSk7CiAgICAgICAg IGVsc2UKICAgICAgICAgICAgIGVudHJ5X2NvbnRlbnQgPSBsMWVfZW1wdHkoKTsKIApAQCAtNjUy LDcgKzY2MCw3IEBAIHAybV9wdF9zZXRfZW50cnkoc3RydWN0IHAybV9kb21haW4gKnAybSwgdW5z aWduZWQgbG9uZyBnZm4sIG1mbl90IG1mbiwKICAgICAgICAgQVNTRVJUKCFtZm5fdmFsaWQobWZu KSB8fCBwMm10ICE9IHAybV9tbWlvX2RpcmVjdCk7CiAgICAgICAgIGlmICggbWZuX3ZhbGlkKG1m bikgfHwgcDJtX2FsbG93c19pbnZhbGlkX21mbihwMm10KSApCiAgICAgICAgICAgICBsMmVfY29u dGVudCA9IGwyZV9mcm9tX3BmbihtZm5feChtZm4pLAotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgcDJtX3R5cGVfdG9fZmxhZ3MocDJtdCwgbWZuLCAxKSB8CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwMm1fdHlwZV90b19mbGFncyhwMm0sIHAy bXQsIG1mbiwgMSkgfAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1BB R0VfUFNFKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgbDJlX2NvbnRlbnQgPSBsMmVfZW1w dHkoKTsKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9tbS9wMm0uYyBiL3hlbi9hcmNoL3g4Ni9t bS9wMm0uYwppbmRleCAyZWVlOWNkLi4wZWRmYzYxIDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYv bW0vcDJtLmMKKysrIGIveGVuL2FyY2gveDg2L21tL3AybS5jCkBAIC04Miw2ICs4Miw4IEBAIHN0 YXRpYyBpbnQgcDJtX2luaXRpYWxpc2Uoc3RydWN0IGRvbWFpbiAqZCwgc3RydWN0IHAybV9kb21h aW4gKnAybSkKICAgICBlbHNlCiAgICAgICAgIHAybV9wdF9pbml0KHAybSk7CiAKKyAgICBzcGlu X2xvY2tfaW5pdCgmcDJtLT5pb3JlcS5sb2NrKTsKKwogICAgIHJldHVybiByZXQ7CiB9CiAKQEAg LTI4Niw2ICsyODgsNzggQEAgdm9pZCBwMm1fbWVtb3J5X3R5cGVfY2hhbmdlZChzdHJ1Y3QgZG9t YWluICpkKQogICAgIH0KIH0KIAoraW50IHAybV9zZXRfaW9yZXFfc2VydmVyKHN0cnVjdCBkb21h aW4gKmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGZsYWdzLAorICAg ICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBodm1faW9yZXFfc2VydmVyICpzKQoreworICAg IHN0cnVjdCBwMm1fZG9tYWluICpwMm0gPSBwMm1fZ2V0X2hvc3RwMm0oZCk7CisgICAgaW50IHJj OworCisgICAgLyoKKyAgICAgKiBVc2UgbG9jayB0byBwcmV2ZW50IGNvbmN1cnJlbnQgc2V0dGlu ZyBhdHRlbXB0cworICAgICAqIGZyb20gbXVsdGlwbGUgaW9yZXEgc2VyZXJzLgorICAgICAqLwor ICAgIHNwaW5fbG9jaygmcDJtLT5pb3JlcS5sb2NrKTsKKworICAgIC8qIFVubWFwIGlvcmVxIHNl cnZlciBmcm9tIHAybSB0eXBlIGJ5IHBhc3NpbmcgZmxhZ3Mgd2l0aCAwLiAqLworICAgIGlmICgg ZmxhZ3MgPT0gMCApCisgICAgeworICAgICAgICByYyA9IC1FSU5WQUw7CisgICAgICAgIGlmICgg cDJtLT5pb3JlcS5zZXJ2ZXIgIT0gcyApCisgICAgICAgICAgICBnb3RvIG91dDsKKworICAgICAg ICBwMm0tPmlvcmVxLnNlcnZlciA9IE5VTEw7CisgICAgICAgIHAybS0+aW9yZXEuZmxhZ3MgPSAw OworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICByYyA9IC1FQlVTWTsKKyAgICAgICAg aWYgKCBwMm0tPmlvcmVxLnNlcnZlciAhPSBOVUxMICkKKyAgICAgICAgICAgIGdvdG8gb3V0Owor CisgICAgICAgIHAybS0+aW9yZXEuc2VydmVyID0gczsKKyAgICAgICAgcDJtLT5pb3JlcS5mbGFn cyA9IGZsYWdzOworICAgIH0KKworICAgIHJjID0gMDsKKworIG91dDoKKyAgICBzcGluX3VubG9j aygmcDJtLT5pb3JlcS5sb2NrKTsKKworICAgIHJldHVybiByYzsKK30KKworc3RydWN0IGh2bV9p b3JlcV9zZXJ2ZXIgKnAybV9nZXRfaW9yZXFfc2VydmVyKHN0cnVjdCBkb21haW4gKmQsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50ICpm bGFncykKK3sKKyAgICBzdHJ1Y3QgcDJtX2RvbWFpbiAqcDJtID0gcDJtX2dldF9ob3N0cDJtKGQp OworICAgIHN0cnVjdCBodm1faW9yZXFfc2VydmVyICpzOworCisgICAgc3Bpbl9sb2NrKCZwMm0t PmlvcmVxLmxvY2spOworCisgICAgcyA9IHAybS0+aW9yZXEuc2VydmVyOworICAgICpmbGFncyA9 IHAybS0+aW9yZXEuZmxhZ3M7CisKKyAgICBzcGluX3VubG9jaygmcDJtLT5pb3JlcS5sb2NrKTsK KyAgICByZXR1cm4gczsKK30KKwordm9pZCBwMm1fZGVzdHJveV9pb3JlcV9zZXJ2ZXIoY29uc3Qg c3RydWN0IGRvbWFpbiAqZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0 cnVjdCBodm1faW9yZXFfc2VydmVyICpzKQoreworICAgIHN0cnVjdCBwMm1fZG9tYWluICpwMm0g PSBwMm1fZ2V0X2hvc3RwMm0oZCk7CisKKyAgICBzcGluX2xvY2soJnAybS0+aW9yZXEubG9jayk7 CisKKyAgICBpZiAoIHAybS0+aW9yZXEuc2VydmVyID09IHMgKQorICAgIHsKKyAgICAgICAgcDJt LT5pb3JlcS5zZXJ2ZXIgPSBOVUxMOworICAgICAgICBwMm0tPmlvcmVxLmZsYWdzID0gMDsKKyAg ICB9CisKKyAgICBzcGluX3VubG9jaygmcDJtLT5pb3JlcS5sb2NrKTsKK30KKwogdm9pZCBwMm1f ZW5hYmxlX2hhcmR3YXJlX2xvZ19kaXJ0eShzdHJ1Y3QgZG9tYWluICpkKQogewogICAgIHN0cnVj dCBwMm1fZG9tYWluICpwMm0gPSBwMm1fZ2V0X2hvc3RwMm0oZCk7CmRpZmYgLS1naXQgYS94ZW4v YXJjaC94ODYvbW0vc2hhZG93L211bHRpLmMgYi94ZW4vYXJjaC94ODYvbW0vc2hhZG93L211bHRp LmMKaW5kZXggMTI4ODA5ZC4uNzQxNDA2MCAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L21tL3No YWRvdy9tdWx0aS5jCisrKyBiL3hlbi9hcmNoL3g4Ni9tbS9zaGFkb3cvbXVsdGkuYwpAQCAtMzIx MSw4ICszMjExLDcgQEAgc3RhdGljIGludCBzaF9wYWdlX2ZhdWx0KHN0cnVjdCB2Y3B1ICp2LAog ICAgIH0KIAogICAgIC8qIE5lZWQgdG8gaGFuZCBvZmYgZGV2aWNlLW1vZGVsIE1NSU8gdG8gdGhl IGRldmljZSBtb2RlbCAqLwotICAgIGlmICggcDJtdCA9PSBwMm1fbW1pb19kbQotICAgICAgICAg fHwgKHAybXQgPT0gcDJtX2lvcmVxX3NlcnZlciAmJiBmdCA9PSBmdF9kZW1hbmRfd3JpdGUpICkK KyAgICBpZiAoIHAybXQgPT0gcDJtX21taW9fZG0gKQogICAgIHsKICAgICAgICAgZ3BhID0gZ3Vl c3Rfd2Fsa190b19ncGEoJmd3KTsKICAgICAgICAgZ290byBtbWlvOwpkaWZmIC0tZ2l0IGEveGVu L2luY2x1ZGUvYXNtLXg4Ni9odm0vaW9yZXEuaCBiL3hlbi9pbmNsdWRlL2FzbS14ODYvaHZtL2lv cmVxLmgKaW5kZXggZmJmMmM3NC4uYjQzNjY3YSAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUvYXNt LXg4Ni9odm0vaW9yZXEuaAorKysgYi94ZW4vaW5jbHVkZS9hc20teDg2L2h2bS9pb3JlcS5oCkBA IC0zNyw2ICszNyw4IEBAIGludCBodm1fbWFwX2lvX3JhbmdlX3RvX2lvcmVxX3NlcnZlcihzdHJ1 Y3QgZG9tYWluICpkLCBpb3NlcnZpZF90IGlkLAogaW50IGh2bV91bm1hcF9pb19yYW5nZV9mcm9t X2lvcmVxX3NlcnZlcihzdHJ1Y3QgZG9tYWluICpkLCBpb3NlcnZpZF90IGlkLAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCB0eXBlLCB1aW50NjRfdCBz dGFydCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDY0X3Qg ZW5kKTsKK2ludCBodm1fbWFwX21lbV90eXBlX3RvX2lvcmVxX3NlcnZlcihzdHJ1Y3QgZG9tYWlu ICpkLCBpb3NlcnZpZF90IGlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHVpbnQzMl90IHR5cGUsIHVpbnQzMl90IGZsYWdzKTsKIGludCBodm1fc2V0X2lvcmVxX3NlcnZl cl9zdGF0ZShzdHJ1Y3QgZG9tYWluICpkLCBpb3NlcnZpZF90IGlkLAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGJvb2xfdCBlbmFibGVkKTsKIApkaWZmIC0tZ2l0IGEveGVuL2luY2x1 ZGUvYXNtLXg4Ni9wMm0uaCBiL3hlbi9pbmNsdWRlL2FzbS14ODYvcDJtLmgKaW5kZXggNDcwZDI5 ZC4uMzc4NjY4MCAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9wMm0uaAorKysgYi94 ZW4vaW5jbHVkZS9hc20teDg2L3AybS5oCkBAIC04OSw3ICs4OSw4IEBAIHR5cGVkZWYgdW5zaWdu ZWQgaW50IHAybV9xdWVyeV90OwogICAgICAgICAgICAgICAgICAgICAgICB8IHAybV90b19tYXNr KHAybV9yYW1fcGFnaW5nX291dCkgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgIHwgcDJt X3RvX21hc2socDJtX3JhbV9wYWdlZCkgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAg ICAgfCBwMm1fdG9fbWFzayhwMm1fcmFtX3BhZ2luZ19pbikgICAgICAgXAotICAgICAgICAgICAg ICAgICAgICAgICB8IHAybV90b19tYXNrKHAybV9yYW1fc2hhcmVkKSkKKyAgICAgICAgICAgICAg ICAgICAgICAgfCBwMm1fdG9fbWFzayhwMm1fcmFtX3NoYXJlZCkgICAgICAgICAgXAorICAgICAg ICAgICAgICAgICAgICAgICB8IHAybV90b19tYXNrKHAybV9pb3JlcV9zZXJ2ZXIpKQogCiAvKiBU eXBlcyB0aGF0IHJlcHJlc2VudCBhIHBoeXNtYXAgaG9sZSB0aGF0IGlzIG9rIHRvIHJlcGxhY2Ug d2l0aCBhIHNoYXJlZAogICogZW50cnkgKi8KQEAgLTExMSw4ICsxMTIsNyBAQCB0eXBlZGVmIHVu c2lnbmVkIGludCBwMm1fcXVlcnlfdDsKICNkZWZpbmUgUDJNX1JPX1RZUEVTIChwMm1fdG9fbWFz ayhwMm1fcmFtX2xvZ2RpcnR5KSAgICAgXAogICAgICAgICAgICAgICAgICAgICAgIHwgcDJtX3Rv X21hc2socDJtX3JhbV9ybykgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgfCBwMm1f dG9fbWFzayhwMm1fZ3JhbnRfbWFwX3JvKSAgIFwKLSAgICAgICAgICAgICAgICAgICAgICB8IHAy bV90b19tYXNrKHAybV9yYW1fc2hhcmVkKSAgICAgXAotICAgICAgICAgICAgICAgICAgICAgIHwg cDJtX3RvX21hc2socDJtX2lvcmVxX3NlcnZlcikpCisgICAgICAgICAgICAgICAgICAgICAgfCBw Mm1fdG9fbWFzayhwMm1fcmFtX3NoYXJlZCkpCiAKIC8qIFdyaXRlLWRpc2NhcmQgdHlwZXMsIHdo aWNoIHNob3VsZCBkaXNjYXJkIHRoZSB3cml0ZSBvcGVyYXRpb25zICovCiAjZGVmaW5lIFAyTV9E SVNDQVJEX1dSSVRFX1RZUEVTIChwMm1fdG9fbWFzayhwMm1fcmFtX3JvKSAgICAgXApAQCAtMzM2 LDYgKzMzNiwyMCBAQCBzdHJ1Y3QgcDJtX2RvbWFpbiB7CiAgICAgICAgIHN0cnVjdCBlcHRfZGF0 YSBlcHQ7CiAgICAgICAgIC8qIE5QVC1lcXVpdmFsZW50IHN0cnVjdHVyZSBjb3VsZCBiZSBhZGRl ZCBoZXJlLiAqLwogICAgIH07CisKKyAgICAgc3RydWN0IHsKKyAgICAgICAgIHNwaW5sb2NrX3Qg bG9jazsKKyAgICAgICAgIC8qCisgICAgICAgICAgKiBpb3JlcSBzZXJ2ZXIgd2hvJ3MgcmVzcG9u c2libGUgZm9yIHRoZSBlbXVsYXRpb24gb2YKKyAgICAgICAgICAqIGdmbnMgd2l0aCBzcGVjaWZp YyBwMm0gdHlwZShmb3Igbm93LCBwMm1faW9yZXFfc2VydmVyKS4KKyAgICAgICAgICAqLworICAg ICAgICAgc3RydWN0IGh2bV9pb3JlcV9zZXJ2ZXIgKnNlcnZlcjsKKyAgICAgICAgIC8qCisgICAg ICAgICAgKiBmbGFncyBzcGVjaWZpZXMgd2hldGhlciByZWFkLCB3cml0ZSBvciBib3RoIG9wZXJh dGlvbnMKKyAgICAgICAgICAqIGFyZSB0byBiZSBlbXVsYXRlZCBieSBhbiBpb3JlcSBzZXJ2ZXIu CisgICAgICAgICAgKi8KKyAgICAgICAgIHVuc2lnbmVkIGludCBmbGFnczsKKyAgICAgfSBpb3Jl cTsKIH07CiAKIC8qIGdldCBob3N0IHAybSB0YWJsZSAqLwpAQCAtODI3LDYgKzg0MSwxMiBAQCBz dGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCBwMm1fZ2V0X2lvbW11X2ZsYWdzKHAybV90eXBlX3Qg cDJtdCwgbWZuX3QgbWZuKQogICAgIHJldHVybiBmbGFnczsKIH0KIAoraW50IHAybV9zZXRfaW9y ZXFfc2VydmVyKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGludCBmbGFncywKKyAgICAgICAg ICAgICAgICAgICAgICAgICBzdHJ1Y3QgaHZtX2lvcmVxX3NlcnZlciAqcyk7CitzdHJ1Y3QgaHZt X2lvcmVxX3NlcnZlciAqcDJtX2dldF9pb3JlcV9zZXJ2ZXIoc3RydWN0IGRvbWFpbiAqZCwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQg KmZsYWdzKTsKK3ZvaWQgcDJtX2Rlc3Ryb3lfaW9yZXFfc2VydmVyKGNvbnN0IHN0cnVjdCBkb21h aW4gKmQsIGNvbnN0IHN0cnVjdCBodm1faW9yZXFfc2VydmVyICpzKTsKKwogI2VuZGlmIC8qIF9Y RU5fQVNNX1g4Nl9QMk1fSCAqLwogCiAvKgpkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvcHVibGlj L2h2bS9kbV9vcC5oIGIveGVuL2luY2x1ZGUvcHVibGljL2h2bS9kbV9vcC5oCmluZGV4IGY1NGNl Y2UuLmM2NDNiNjcgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL3B1YmxpYy9odm0vZG1fb3AuaAor KysgYi94ZW4vaW5jbHVkZS9wdWJsaWMvaHZtL2RtX29wLmgKQEAgLTMxOCw2ICszMTgsMzAgQEAg c3RydWN0IHhlbl9kbV9vcF9pbmplY3RfbXNpIHsKICAgICB1aW50NjRfYWxpZ25lZF90IGFkZHI7 CiB9OwogCisvKgorICogWEVOX0RNT1BfbWFwX21lbV90eXBlX3RvX2lvcmVxX3NlcnZlciA6IG1h cCBvciB1bm1hcCB0aGUgSU9SRVEgU2VydmVyIDxpZD4KKyAqICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB0byBzcGVjaWZpYyBtZW1yb3kgdHlwZSA8dHlwZT4KKyAqICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3Igc3BlY2lmaWMgYWNjZXNzZXMgPGZs YWdzPgorICoKKyAqIEZvciBub3csIGZsYWdzIG9ubHkgYWNjZXB0IHRoZSB2YWx1ZSBvZiBYRU5f RE1PUF9JT1JFUV9NRU1fQUNDRVNTX1dSSVRFLAorICogd2hpY2ggbWVhbnMgb25seSB3cml0ZSBv cGVyYXRpb25zIGFyZSB0byBiZSBmb3J3YXJkZWQgdG8gYW4gaW9yZXEgc2VydmVyLgorICogU3Vw cG9ydCBmb3IgdGhlIGVtdWxhdGlvbiBvZiByZWFkIG9wZXJhdGlvbnMgY2FuIGJlIGFkZGVkIHdo ZW4gYW4gaW9yZXEKKyAqIHNlcnZlciBoYXMgc3VjaCByZXF1aXJlbWVudCBpbiBmdXR1cmUuCisg Ki8KKyNkZWZpbmUgWEVOX0RNT1BfbWFwX21lbV90eXBlX3RvX2lvcmVxX3NlcnZlciAxNQorCitz dHJ1Y3QgeGVuX2RtX29wX21hcF9tZW1fdHlwZV90b19pb3JlcV9zZXJ2ZXIgeworICAgIGlvc2Vy dmlkX3QgaWQ7ICAgICAgLyogSU4gLSBpb3JlcSBzZXJ2ZXIgaWQgKi8KKyAgICB1aW50MTZfdCB0 eXBlOyAgICAgIC8qIElOIC0gbWVtb3J5IHR5cGUgKi8KKyAgICB1aW50MTZfdCBwYWQ7CisgICAg dWludDMyX3QgZmxhZ3M7ICAgICAvKiBJTiAtIHR5cGVzIG9mIGFjY2Vzc2VzIHRvIGJlIGZvcndh cmRlZCB0byB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGlvcmVxIHNlcnZlci4gZmxh Z3Mgd2l0aCAwIG1lYW5zIHRvIHVubWFwIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAg aW9yZXEgc2VydmVyICovCisKKyNkZWZpbmUgWEVOX0RNT1BfSU9SRVFfTUVNX0FDQ0VTU19SRUFE ICgxdSA8PCAwKQorI2RlZmluZSBYRU5fRE1PUF9JT1JFUV9NRU1fQUNDRVNTX1dSSVRFICgxdSA8 PCAxKQorfTsKKwogc3RydWN0IHhlbl9kbV9vcCB7CiAgICAgdWludDMyX3Qgb3A7CiAgICAgdWlu dDMyX3QgcGFkOwpAQCAtMzM2LDYgKzM2MCw4IEBAIHN0cnVjdCB4ZW5fZG1fb3AgewogICAgICAg ICBzdHJ1Y3QgeGVuX2RtX29wX3NldF9tZW1fdHlwZSBzZXRfbWVtX3R5cGU7CiAgICAgICAgIHN0 cnVjdCB4ZW5fZG1fb3BfaW5qZWN0X2V2ZW50IGluamVjdF9ldmVudDsKICAgICAgICAgc3RydWN0 IHhlbl9kbV9vcF9pbmplY3RfbXNpIGluamVjdF9tc2k7CisgICAgICAgIHN0cnVjdCB4ZW5fZG1f b3BfbWFwX21lbV90eXBlX3RvX2lvcmVxX3NlcnZlcgorICAgICAgICAgICAgICAgIG1hcF9tZW1f dHlwZV90b19pb3JlcV9zZXJ2ZXI7CiAgICAgfSB1OwogfTsKIApkaWZmIC0tZ2l0IGEveGVuL2lu Y2x1ZGUvcHVibGljL2h2bS9odm1fb3AuaCBiL3hlbi9pbmNsdWRlL3B1YmxpYy9odm0vaHZtX29w LmgKaW5kZXggYmMwMGVmMC4uMGJkYWZkZiAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUvcHVibGlj L2h2bS9odm1fb3AuaAorKysgYi94ZW4vaW5jbHVkZS9wdWJsaWMvaHZtL2h2bV9vcC5oCkBAIC05 Myw3ICs5MywxMyBAQCB0eXBlZGVmIGVudW0gewogICAgIEhWTU1FTV91bnVzZWQsICAgICAgICAg ICAgIC8qIFBsYWNlaG9sZGVyOyBzZXR0aW5nIG1lbW9yeSB0byB0aGlzIHR5cGUKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB3aWxsIGZhaWwgZm9yIGNvZGUgYWZ0ZXIgNC43LjAg Ki8KICNlbmRpZgotICAgIEhWTU1FTV9pb3JlcV9zZXJ2ZXIKKyAgICBIVk1NRU1faW9yZXFfc2Vy dmVyICAgICAgICAvKiBNZW1vcnkgdHlwZSBjbGFpbWVkIGJ5IGFuIGlvcmVxIHNlcnZlcjsgdHlw ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZXMgdG8gdGhpcyB2YWx1 ZSBhcmUgb25seSBhbGxvd2VkIGFmdGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgYW4gaW9yZXEgc2VydmVyIGhhcyBjbGFpbWVkIGl0cyBvd25lcnNoaXAuCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgT25seSBwYWdlcyB3aXRoIEhWTU1FTV9yYW1fcncgYXJl IGFsbG93ZWQgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2UgdG8g dGhpcyB0eXBlOyBjb252ZXJzZWx5LCBwYWdlcyB3aXRoCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgdGhpcyB0eXBlIGFyZSBvbmx5IGFsbG93ZWQgdG8gYmUgY2hhbmdlZCBiYWNr CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gSFZNTUVNX3JhbV9ydy4gKi8K IH0gaHZtbWVtX3R5cGVfdDsKIAogLyogSGludCBmcm9tIFBWIGRyaXZlcnMgZm9yIHBhZ2V0YWJs ZSBkZXN0cnVjdGlvbi4gKi8KLS0gCjEuOS4xCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlz dHMueGVuLm9yZwpodHRwczovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==