From mboxrd@z Thu Jan 1 00:00:00 1970 From: Yu Zhang Subject: [PATCH v4 3/3] x86/ioreq server: Add HVMOP to map guest ram with p2m_ioreq_server to an ioreq server. Date: Thu, 19 May 2016 17:05:11 +0800 Message-ID: <1463648711-26595-4-git-send-email-yu.c.zhang@linux.intel.com> References: <1463648711-26595-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: <1463648711-26595-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 ZiB3cml0ZSBvcGVyYXRpb25zLiBBbmQgaXQgY2FuIGJlCmVhc2lseSBleHRlbmRlZCB0byBzdXBw b3J0IHRoZSBlbXVsYXRpb24gb2YgcmVhZCBvbmVzIGlmIGFuCmlvcmVxIHNlcnZlciBoYXMgc3Vj aCByZXF1aXJlbWVudCBpbiB0aGUgZnV0dXJlLgoKRm9yIG5vdywgd2Ugb25seSBzdXBwb3J0IG9u ZSBpb3JlcSBzZXJ2ZXIgZm9yIHRoaXMgcDJtIHR5cGUsIHNvCm9uY2UgYW4gaW9yZXEgc2VydmVy IGhhcyBjbGFpbWVkIGl0cyBvd25lcnNoaXAsIHN1YnNlcXVlbnQgY2FsbHMKb2YgdGhlIEhWTU9Q X21hcF9tZW1fdHlwZV90b19pb3JlcV9zZXJ2ZXIgd2lsbCBmYWlsLiBVc2VycyBjYW4gYWxzbwpk aXNjbGFpbSB0aGUgb3duZXJzaGlwIG9mIGd1ZXN0IHJhbSBwYWdlcyB3aXRoIHAybV9pb3JlcV9z ZXJ2ZXIsIGJ5CnRyaWdnZXJpbmcgdGhpcyBuZXcgSFZNT1AsIHdpdGggaW9yZXEgc2VydmVyIGlk IHNldCB0byB0aGUgY3VycmVudApvd25lcidzIGFuZCBmbGFncyBwYXJhbWV0ZXIgc2V0IHRvIDAu CgpOb3RlIGJvdGggSFZNT1BfbWFwX21lbV90eXBlX3RvX2lvcmVxX3NlcnZlciBhbmQgcDJtX2lv cmVxX3NlcnZlcgphcmUgb25seSBzdXBwb3J0ZWQgZm9yIEhWTXMgd2l0aCBIQVAgZW5hYmxlZC4K CkFsc28gbm90ZSB0aGF0IG9ubHkgYWZ0ZXIgb25lIGlvcmVxIHNlcnZlciBjbGFpbXMgaXRzIG93 bmVyc2hpcApvZiBwMm1faW9yZXFfc2VydmVyLCB3aWxsIHRoZSBwMm0gdHlwZSBjaGFuZ2UgdG8g cDJtX2lvcmVxX3NlcnZlcgpiZSBhbGxvd2VkLgoKU2lnbmVkLW9mZi1ieTogUGF1bCBEdXJyYW50 IDxwYXVsLmR1cnJhbnRAY2l0cml4LmNvbT4KU2lnbmVkLW9mZi1ieTogWXUgWmhhbmcgPHl1LmMu emhhbmdAbGludXguaW50ZWwuY29tPgpBY2tlZC1ieTogVGltIERlZWdhbiA8dGltQHhlbi5vcmc+ Ci0tLQpDYzogUGF1bCBEdXJyYW50IDxwYXVsLmR1cnJhbnRAY2l0cml4LmNvbT4KQ2M6IEphbiBC ZXVsaWNoIDxqYmV1bGljaEBzdXNlLmNvbT4KQ2M6IEFuZHJldyBDb29wZXIgPGFuZHJldy5jb29w ZXIzQGNpdHJpeC5jb20+CkNjOiBHZW9yZ2UgRHVubGFwIDxnZW9yZ2UuZHVubGFwQGV1LmNpdHJp eC5jb20+CkNjOiBKdW4gTmFrYWppbWEgPGp1bi5uYWthamltYUBpbnRlbC5jb20+CkNjOiBLZXZp biBUaWFuIDxrZXZpbi50aWFuQGludGVsLmNvbT4KQ2M6IFRpbSBEZWVnYW4gPHRpbUB4ZW4ub3Jn PgoKY2hhbmdlcyBpbiB2NDoKICAtIEFjY29yZGluZyB0byBQYXVsJ3MgYWR2aWNlLCBhZGQgY29t bWVudHMgYXJvdW5kIHRoZSBkZWZpbml0aW9uCiAgICBvZiBIVk1NRU1faW9yZV9zZXJ2ZXIgaW4g aHZtX29wLmguCiAgLSBBY2NvcmRpbmcgdG8gV2VpIExpdSdzIGNvbW1lbnRzLCBjaGFuZ2UgdGhl IGZvcm1hdCBvZiB0aGUgY29tbWl0CiAgICBtZXNzYWdlLgoKY2hhbmdlcyBpbiB2MzoKICAtIE9u bHkgc3VwcG9ydCB3cml0ZSBlbXVsYXRpb24gaW4gdGhpcyBwYXRjaDsKICAtIFJlbW92ZSB0aGUg Y29kZSB0byBoYW5kbGUgcmFjZSBjb25kaXRpb24gaW4gaHZtZW11bF9kb19pbygpLAogIC0gTm8g bmVlZCB0byByZXNldCB0aGUgcDJtIHR5cGUgYWZ0ZXIgYW4gaW9yZXEgc2VydmVyIGhhcyBkaXNj bGFpbWVkCiAgICBpdHMgb3duZXJzaGlwIG9mIHAybV9pb3JlcV9zZXJ2ZXI7CiAgLSBPbmx5IGFs bG93IHAybSB0eXBlIGNoYW5nZSB0byBwMm1faW9yZXFfc2VydmVyIGFmdGVyIGFuIGlvcmVxCiAg ICBzZXJ2ZXIgaGFzIGNsYWltZWQgaXRzIG93bmVyc2hpcCBvZiBwMm1faW9yZXFfc2VydmVyOwog IC0gT25seSBhbGxvdyBwMm0gdHlwZSBjaGFuZ2UgdG8gcDJtX2lvcmVxX3NlcnZlciBmcm9tIHBh Z2VzIHdpdGggdHlwZQogICAgcDJtX3JhbV9ydywgYW5kIHZpY2UgdmVyc2E7CiAgLSBIVk1PUF9t YXBfbWVtX3R5cGVfdG9faW9yZXFfc2VydmVyIGludGVyZmFjZSBjaGFuZ2UgLSB1c2UgdWludDE2 LAogICAgaW5zdGVhZCBvZiBlbnVtIHRvIHNwZWNpZnkgdGhlIG1lbW9yeSB0eXBlOwogIC0gRnVu Y3Rpb24gcHJvdG90eXBlIGNoYW5nZSB0byBwMm1fZ2V0X2lvcmVxX3NlcnZlcigpOwogIC0gQ29k aW5nIHN0eWxlIGNoYW5nZXM7CiAgLSBDb21taXQgbWVzc2FnZSBjaGFuZ2VzOwogIC0gQWRkIFRp bSdzIEFja2VkLWJ5LgoKY2hhbmdlcyBpbiB2MjogCiAgLSBPbmx5IHN1cHBvcnQgSEFQIGVuYWJs ZWQgSFZNczsKICAtIFJlcGxhY2UgcDJtX21lbV90eXBlX2NoYW5nZWQoKSB3aXRoIHAybV9jaGFu Z2VfZW50cnlfdHlwZV9nbG9iYWwoKQogICAgdG8gcmVzZXQgdGhlIHAybSB0eXBlLCB3aGVuIGFu IGlvcmVxIHNlcnZlciB0cmllcyB0byBjbGFpbS9kaXNjbGFpbQogICAgaXRzIG93bmVyc2hpcCBv ZiBwMm1faW9yZXFfc2VydmVyOwogIC0gQ29tbWVudHMgY2hhbmdlcy4KLS0tCiB4ZW4vYXJjaC94 ODYvaHZtL2VtdWxhdGUuYyAgICAgICB8IDMyICsrKysrKysrKysrKysrKystLQogeGVuL2FyY2gv eDg2L2h2bS9odm0uYyAgICAgICAgICAgfCA2MyArKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrLS0KIHhlbi9hcmNoL3g4Ni9odm0vaW9yZXEuYyAgICAgICAgIHwgNDEgKysrKysrKysr KysrKysrKysrKysrKysKIHhlbi9hcmNoL3g4Ni9tbS9oYXAvbmVzdGVkX2hhcC5jIHwgIDIgKy0K IHhlbi9hcmNoL3g4Ni9tbS9wMm0tZXB0LmMgICAgICAgIHwgIDcgKysrLQogeGVuL2FyY2gveDg2 L21tL3AybS1wdC5jICAgICAgICAgfCAyMyArKysrKysrKystLS0tCiB4ZW4vYXJjaC94ODYvbW0v cDJtLmMgICAgICAgICAgICB8IDcwICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysKIHhlbi9hcmNoL3g4Ni9tbS9zaGFkb3cvbXVsdGkuYyAgIHwgIDMgKy0KIHhlbi9pbmNs dWRlL2FzbS14ODYvaHZtL2lvcmVxLmggIHwgIDIgKysKIHhlbi9pbmNsdWRlL2FzbS14ODYvcDJt LmggICAgICAgIHwgMzAgKysrKysrKysrKysrKysrLS0KIHhlbi9pbmNsdWRlL3B1YmxpYy9odm0v aHZtX29wLmggIHwgMzUgKysrKysrKysrKysrKysrKysrKy0KIDExIGZpbGVzIGNoYW5nZWQsIDI4 OSBpbnNlcnRpb25zKCspLCAxOSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94 ODYvaHZtL2VtdWxhdGUuYyBiL3hlbi9hcmNoL3g4Ni9odm0vZW11bGF0ZS5jCmluZGV4IGI5Y2Fj OGUuLjQ1NzEyOTQgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9odm0vZW11bGF0ZS5jCisrKyBi L3hlbi9hcmNoL3g4Ni9odm0vZW11bGF0ZS5jCkBAIC0xMDAsNiArMTAwLDcgQEAgc3RhdGljIGlu dCBodm1lbXVsX2RvX2lvKAogICAgIHVpbnQ4X3QgZGlyLCBib29sX3QgZGYsIGJvb2xfdCBkYXRh X2lzX2FkZHIsIHVpbnRwdHJfdCBkYXRhKQogewogICAgIHN0cnVjdCB2Y3B1ICpjdXJyID0gY3Vy cmVudDsKKyAgICBzdHJ1Y3QgZG9tYWluICpjdXJyZCA9IGN1cnItPmRvbWFpbjsKICAgICBzdHJ1 Y3QgaHZtX3ZjcHVfaW8gKnZpbyA9ICZjdXJyLT5hcmNoLmh2bV92Y3B1Lmh2bV9pbzsKICAgICBp b3JlcV90IHAgPSB7CiAgICAgICAgIC50eXBlID0gaXNfbW1pbyA/IElPUkVRX1RZUEVfQ09QWSA6 IElPUkVRX1RZUEVfUElPLApAQCAtMTQxLDcgKzE0Miw3IEBAIHN0YXRpYyBpbnQgaHZtZW11bF9k b19pbygKICAgICAgICAgICAgICAocC5kaXIgIT0gZGlyKSB8fAogICAgICAgICAgICAgIChwLmRm ICE9IGRmKSB8fAogICAgICAgICAgICAgIChwLmRhdGFfaXNfcHRyICE9IGRhdGFfaXNfYWRkcikg KQotICAgICAgICAgICAgZG9tYWluX2NyYXNoKGN1cnItPmRvbWFpbik7CisgICAgICAgICAgICBk b21haW5fY3Jhc2goY3VycmQpOwogCiAgICAgICAgIGlmICggZGF0YV9pc19hZGRyICkKICAgICAg ICAgICAgIHJldHVybiBYODZFTVVMX1VOSEFORExFQUJMRTsKQEAgLTE3OCw4ICsxNzksMzMgQEAg c3RhdGljIGludCBodm1lbXVsX2RvX2lvKAogICAgICAgICBicmVhazsKICAgICBjYXNlIFg4NkVN VUxfVU5IQU5ETEVBQkxFOgogICAgIHsKLSAgICAgICAgc3RydWN0IGh2bV9pb3JlcV9zZXJ2ZXIg KnMgPQotICAgICAgICAgICAgaHZtX3NlbGVjdF9pb3JlcV9zZXJ2ZXIoY3Vyci0+ZG9tYWluLCAm cCk7CisgICAgICAgIHN0cnVjdCBodm1faW9yZXFfc2VydmVyICpzOworICAgICAgICBwMm1fdHlw ZV90IHAybXQ7CisKKyAgICAgICAgaWYgKCBpc19tbWlvICkKKyAgICAgICAgeworICAgICAgICAg ICAgdW5zaWduZWQgbG9uZyBnbWZuID0gcGFkZHJfdG9fcGZuKGFkZHIpOworCisgICAgICAgICAg ICAodm9pZCkgZ2V0X2dmbl9xdWVyeV91bmxvY2tlZChjdXJyZCwgZ21mbiwgJnAybXQpOworCisg ICAgICAgICAgICBpZiAoIHAybXQgPT0gcDJtX2lvcmVxX3NlcnZlciApCisgICAgICAgICAgICB7 CisgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBmbGFnczsKKworICAgICAgICAgICAgICAg IHMgPSBwMm1fZ2V0X2lvcmVxX3NlcnZlcihjdXJyZCwgJmZsYWdzKTsKKworICAgICAgICAgICAg ICAgIGlmICggZGlyID09IElPUkVRX1dSSVRFICYmCisgICAgICAgICAgICAgICAgICAgICAhKGZs YWdzICYgUDJNX0lPUkVRX0hBTkRMRV9XUklURV9BQ0NFU1MpICkKKyAgICAgICAgICAgICAgICAg ICAgcyA9IE5VTEw7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAg ICAgICAgcyA9IGh2bV9zZWxlY3RfaW9yZXFfc2VydmVyKGN1cnJkLCAmcCk7CisgICAgICAgIH0K KyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICBwMm10ID0gcDJtX2ludmFsaWQ7 CisgICAgICAgICAgICBzID0gaHZtX3NlbGVjdF9pb3JlcV9zZXJ2ZXIoY3VycmQsICZwKTsKKyAg ICAgICAgfQogCiAgICAgICAgIC8qIElmIHRoZXJlIGlzIG5vIHN1aXRhYmxlIGJhY2tpbmcgRE0s IGp1c3QgaWdub3JlIGFjY2Vzc2VzICovCiAgICAgICAgIGlmICggIXMgKQpkaWZmIC0tZ2l0IGEv eGVuL2FyY2gveDg2L2h2bS9odm0uYyBiL3hlbi9hcmNoL3g4Ni9odm0vaHZtLmMKaW5kZXggMzQ2 ZGE5Ny4uMjNhYmViMiAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L2h2bS9odm0uYworKysgYi94 ZW4vYXJjaC94ODYvaHZtL2h2bS5jCkBAIC00NzE5LDYgKzQ3MTksNDAgQEAgc3RhdGljIGludCBo dm1vcF91bm1hcF9pb19yYW5nZV9mcm9tX2lvcmVxX3NlcnZlcigKICAgICByZXR1cm4gcmM7CiB9 CiAKK3N0YXRpYyBpbnQgaHZtb3BfbWFwX21lbV90eXBlX3RvX2lvcmVxX3NlcnZlcigKKyAgICBY RU5fR1VFU1RfSEFORExFX1BBUkFNKHhlbl9odm1fbWFwX21lbV90eXBlX3RvX2lvcmVxX3NlcnZl cl90KSB1b3ApCit7CisgICAgeGVuX2h2bV9tYXBfbWVtX3R5cGVfdG9faW9yZXFfc2VydmVyX3Qg b3A7CisgICAgc3RydWN0IGRvbWFpbiAqZDsKKyAgICBpbnQgcmM7CisKKyAgICBpZiAoIGNvcHlf ZnJvbV9ndWVzdCgmb3AsIHVvcCwgMSkgKQorICAgICAgICByZXR1cm4gLUVGQVVMVDsKKworICAg IHJjID0gcmN1X2xvY2tfcmVtb3RlX2RvbWFpbl9ieV9pZChvcC5kb21pZCwgJmQpOworICAgIGlm ICggcmMgIT0gMCApCisgICAgICAgIHJldHVybiByYzsKKworICAgIHJjID0gLUVJTlZBTDsKKyAg ICBpZiAoICFpc19odm1fZG9tYWluKGQpICkKKyAgICAgICAgZ290byBvdXQ7CisKKyAgICAvKiBP bmx5IHN1cHBvcnQgZm9yIEhBUCBlbmFibGVkIGh2bSAqLworICAgIGlmICggIWhhcF9lbmFibGVk KGQpICkKKyAgICAgICAgZ290byBvdXQ7CisKKyAgICByYyA9IHhzbV9odm1faW9yZXFfc2VydmVy KFhTTV9ETV9QUklWLCBkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSFZNT1BfbWFw X21lbV90eXBlX3RvX2lvcmVxX3NlcnZlcik7CisgICAgaWYgKCByYyAhPSAwICkKKyAgICAgICAg Z290byBvdXQ7CisKKyAgICByYyA9IGh2bV9tYXBfbWVtX3R5cGVfdG9faW9yZXFfc2VydmVyKGQs IG9wLmlkLCBvcC50eXBlLCBvcC5mbGFncyk7CisKKyBvdXQ6CisgICAgcmN1X3VubG9ja19kb21h aW4oZCk7CisgICAgcmV0dXJuIHJjOworfQorCiBzdGF0aWMgaW50IGh2bW9wX3NldF9pb3JlcV9z ZXJ2ZXJfc3RhdGUoCiAgICAgWEVOX0dVRVNUX0hBTkRMRV9QQVJBTSh4ZW5faHZtX3NldF9pb3Jl cV9zZXJ2ZXJfc3RhdGVfdCkgdW9wKQogewpAQCAtNTM1Miw5ICs1Mzg2LDE0IEBAIHN0YXRpYyBp bnQgaHZtb3BfZ2V0X21lbV90eXBlKAogCiBzdGF0aWMgYm9vbF90IGh2bV9hbGxvd19wMm1fdHlw ZV9jaGFuZ2UocDJtX3R5cGVfdCBvbGQsIHAybV90eXBlX3QgbmV3KQogeworICAgIGlmICggbmV3 ID09IHAybV9pb3JlcV9zZXJ2ZXIgKQorICAgICAgICByZXR1cm4gb2xkID09IHAybV9yYW1fcnc7 CisKKyAgICBpZiAoIG9sZCA9PSBwMm1faW9yZXFfc2VydmVyICkKKyAgICAgICAgcmV0dXJuIG5l dyA9PSBwMm1fcmFtX3J3OworCiAgICAgaWYgKCBwMm1faXNfcmFtKG9sZCkgfHwKLSAgICAgICAg IChwMm1faXNfaG9sZShvbGQpICYmIG5ldyA9PSBwMm1fbW1pb19kbSkgfHwKLSAgICAgICAgIChv bGQgPT0gcDJtX2lvcmVxX3NlcnZlciAmJiBuZXcgPT0gcDJtX3JhbV9ydykgKQorICAgICAgICAg KHAybV9pc19ob2xlKG9sZCkgJiYgbmV3ID09IHAybV9tbWlvX2RtKSApCiAgICAgICAgIHJldHVy biAxOwogCiAgICAgcmV0dXJuIDA7CkBAIC01Mzg5LDYgKzU0MjgsMjEgQEAgc3RhdGljIGludCBo dm1vcF9zZXRfbWVtX3R5cGUoCiAgICAgaWYgKCAhaXNfaHZtX2RvbWFpbihkKSApCiAgICAgICAg IGdvdG8gb3V0OwogCisgICAgaWYgKCBhLmh2bW1lbV90eXBlID09IEhWTU1FTV9pb3JlcV9zZXJ2 ZXIgKQorICAgIHsKKyAgICAgICAgdW5zaWduZWQgbG9uZyBmbGFnczsKKyAgICAgICAgc3RydWN0 IGh2bV9pb3JlcV9zZXJ2ZXIgKnM7CisKKyAgICAgICAgLyogSFZNTUVNX2lvcmVxX3NlcnZlciBp cyBvbmx5IHN1cHBvcnRlZCBmb3IgSEFQIGVuYWJsZWQgaHZtLiAqLworICAgICAgICBpZiAoICFo YXBfZW5hYmxlZChkKSApCisgICAgICAgICAgICBnb3RvIG91dDsKKworICAgICAgICAvKiBEbyBu b3QgY2hhbmdlIHRvIEhWTU1FTV9pb3JlcV9zZXJ2ZXIgaWYgbm8gaW9yZXEgc2VydmVyIG1hcHBl ZC4gKi8KKyAgICAgICAgcyA9IHAybV9nZXRfaW9yZXFfc2VydmVyKGQsICZmbGFncyk7CisgICAg ICAgIGlmICggcyA9PSBOVUxMICkKKyAgICAgICAgICAgIGdvdG8gb3V0OworICAgIH0KKwogICAg IHJjID0geHNtX2h2bV9jb250cm9sKFhTTV9ETV9QUklWLCBkLCBIVk1PUF9zZXRfbWVtX3R5cGUp OwogICAgIGlmICggcmMgKQogICAgICAgICBnb3RvIG91dDsKQEAgLTU0OTAsNiArNTU0NCwxMSBA QCBsb25nIGRvX2h2bV9vcCh1bnNpZ25lZCBsb25nIG9wLCBYRU5fR1VFU1RfSEFORExFX1BBUkFN KHZvaWQpIGFyZykKICAgICAgICAgICAgIGd1ZXN0X2hhbmRsZV9jYXN0KGFyZywgeGVuX2h2bV9p b19yYW5nZV90KSk7CiAgICAgICAgIGJyZWFrOwogCisgICAgY2FzZSBIVk1PUF9tYXBfbWVtX3R5 cGVfdG9faW9yZXFfc2VydmVyOgorICAgICAgICByYyA9IGh2bW9wX21hcF9tZW1fdHlwZV90b19p b3JlcV9zZXJ2ZXIoCisgICAgICAgICAgICBndWVzdF9oYW5kbGVfY2FzdChhcmcsIHhlbl9odm1f bWFwX21lbV90eXBlX3RvX2lvcmVxX3NlcnZlcl90KSk7CisgICAgICAgIGJyZWFrOworCiAgICAg Y2FzZSBIVk1PUF9zZXRfaW9yZXFfc2VydmVyX3N0YXRlOgogICAgICAgICByYyA9IGh2bW9wX3Nl dF9pb3JlcV9zZXJ2ZXJfc3RhdGUoCiAgICAgICAgICAgICBndWVzdF9oYW5kbGVfY2FzdChhcmcs IHhlbl9odm1fc2V0X2lvcmVxX3NlcnZlcl9zdGF0ZV90KSk7CmRpZmYgLS1naXQgYS94ZW4vYXJj aC94ODYvaHZtL2lvcmVxLmMgYi94ZW4vYXJjaC94ODYvaHZtL2lvcmVxLmMKaW5kZXggMzMzY2Ux NC4uZDI0ZTEwOCAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L2h2bS9pb3JlcS5jCisrKyBiL3hl bi9hcmNoL3g4Ni9odm0vaW9yZXEuYwpAQCAtNzUzLDYgKzc1Myw4IEBAIGludCBodm1fZGVzdHJv eV9pb3JlcV9zZXJ2ZXIoc3RydWN0IGRvbWFpbiAqZCwgaW9zZXJ2aWRfdCBpZCkKIAogICAgICAg ICBkb21haW5fcGF1c2UoZCk7CiAKKyAgICAgICAgcDJtX2Rlc3Ryb3lfaW9yZXFfc2VydmVyKGQs IHMpOworCiAgICAgICAgIGh2bV9pb3JlcV9zZXJ2ZXJfZGlzYWJsZShzLCAwKTsKIAogICAgICAg ICBsaXN0X2RlbCgmcy0+bGlzdF9lbnRyeSk7CkBAIC05MTQsNiArOTE2LDQ1IEBAIGludCBodm1f dW5tYXBfaW9fcmFuZ2VfZnJvbV9pb3JlcV9zZXJ2ZXIoc3RydWN0IGRvbWFpbiAqZCwgaW9zZXJ2 aWRfdCBpZCwKICAgICByZXR1cm4gcmM7CiB9CiAKK2ludCBodm1fbWFwX21lbV90eXBlX3RvX2lv cmVxX3NlcnZlcihzdHJ1Y3QgZG9tYWluICpkLCBpb3NlcnZpZF90IGlkLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQxNl90IHR5cGUsIHVpbnQzMl90IGZsYWdzKQor eworICAgIHN0cnVjdCBodm1faW9yZXFfc2VydmVyICpzOworICAgIGludCByYzsKKworICAgIC8q IEZvciBub3csIG9ubHkgSFZNTUVNX2lvcmVxX3NlcnZlciBpcyBzdXBwb3J0ZWQuICovCisgICAg aWYgKCB0eXBlICE9IEhWTU1FTV9pb3JlcV9zZXJ2ZXIgKQorICAgICAgICByZXR1cm4gLUVJTlZB TDsKKworICAgIC8qIEZvciBub3csIG9ubHkgd3JpdGUgZW11bGF0aW9uIGlzIHN1cHBvcnRlZC4g Ki8KKyAgICBpZiAoIGZsYWdzICYgfihIVk1PUF9JT1JFUV9NRU1fQUNDRVNTX1dSSVRFKSApCisg ICAgICAgIHJldHVybiAtRUlOVkFMOworCisgICAgc3Bpbl9sb2NrKCZkLT5hcmNoLmh2bV9kb21h aW4uaW9yZXFfc2VydmVyLmxvY2spOworCisgICAgcmMgPSAtRU5PRU5UOworICAgIGxpc3RfZm9y X2VhY2hfZW50cnkgKCBzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAmZC0+YXJjaC5odm1f ZG9tYWluLmlvcmVxX3NlcnZlci5saXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0 X2VudHJ5ICkKKyAgICB7CisgICAgICAgIGlmICggcyA9PSBkLT5hcmNoLmh2bV9kb21haW4uZGVm YXVsdF9pb3JlcV9zZXJ2ZXIgKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgaWYg KCBzLT5pZCA9PSBpZCApCisgICAgICAgIHsKKyAgICAgICAgICAgIHJjID0gcDJtX3NldF9pb3Jl cV9zZXJ2ZXIoZCwgZmxhZ3MsIHMpOworICAgICAgICAgICAgaWYgKCByYyA9PSAwICkKKyAgICAg ICAgICAgICAgICBkcHJpbnRrKFhFTkxPR19ERUJVRywgIiV1ICVzIHR5cGUgSFZNTUVNX2lvcmVx X3NlcnZlci5cbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgcy0+aWQsIChmbGFncyAhPSAw KSA/ICJtYXBwZWQgdG8iIDogInVubWFwcGVkIGZyb20iKTsKKworICAgICAgICAgICAgYnJlYWs7 CisgICAgICAgIH0KKyAgICB9CisKKyAgICBzcGluX3VubG9jaygmZC0+YXJjaC5odm1fZG9tYWlu LmlvcmVxX3NlcnZlci5sb2NrKTsKKyAgICByZXR1cm4gcmM7Cit9CisKIGludCBodm1fc2V0X2lv cmVxX3NlcnZlcl9zdGF0ZShzdHJ1Y3QgZG9tYWluICpkLCBpb3NlcnZpZF90IGlkLAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2xfdCBlbmFibGVkKQogewpkaWZmIC0tZ2l0IGEv eGVuL2FyY2gveDg2L21tL2hhcC9uZXN0ZWRfaGFwLmMgYi94ZW4vYXJjaC94ODYvbW0vaGFwL25l c3RlZF9oYXAuYwppbmRleCBkNDFiYjA5Li5hYTkwYTYyIDEwMDY0NAotLS0gYS94ZW4vYXJjaC94 ODYvbW0vaGFwL25lc3RlZF9oYXAuYworKysgYi94ZW4vYXJjaC94ODYvbW0vaGFwL25lc3RlZF9o YXAuYwpAQCAtMTc0LDcgKzE3NCw3IEBAIG5lc3RlZGhhcF93YWxrX0wwX3AybShzdHJ1Y3QgcDJt X2RvbWFpbiAqcDJtLCBwYWRkcl90IEwxX2dwYSwgcGFkZHJfdCAqTDBfZ3BhLAogICAgIGlmICgg KnAybXQgPT0gcDJtX21taW9fZGlyZWN0ICkKICAgICAgICAgZ290byBkaXJlY3RfbW1pb19vdXQ7 CiAgICAgcmMgPSBORVNURURIVk1fUEFHRUZBVUxUX01NSU87Ci0gICAgaWYgKCAqcDJtdCA9PSBw Mm1fbW1pb19kbSApCisgICAgaWYgKCAqcDJtdCA9PSBwMm1fbW1pb19kbSB8fCAqcDJtdCA9PSBw Mm1faW9yZXFfc2VydmVyICkKICAgICAgICAgZ290byBvdXQ7CiAKICAgICByYyA9IE5FU1RFREhW TV9QQUdFRkFVTFRfTDBfRVJST1I7CmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvbW0vcDJtLWVw dC5jIGIveGVuL2FyY2gveDg2L21tL3AybS1lcHQuYwppbmRleCBhNDVhNTczLi5jNWQxMzA1IDEw MDY0NAotLS0gYS94ZW4vYXJjaC94ODYvbW0vcDJtLWVwdC5jCisrKyBiL3hlbi9hcmNoL3g4Ni9t bS9wMm0tZXB0LmMKQEAgLTEzMiw2ICsxMzIsMTIgQEAgc3RhdGljIHZvaWQgZXB0X3AybV90eXBl X3RvX2ZsYWdzKHN0cnVjdCBwMm1fZG9tYWluICpwMm0sIGVwdF9lbnRyeV90ICplbnRyeSwKICAg ICAgICAgICAgIGVudHJ5LT5yID0gZW50cnktPncgPSBlbnRyeS0+eCA9IDE7CiAgICAgICAgICAg ICBlbnRyeS0+YSA9IGVudHJ5LT5kID0gISFjcHVfaGFzX3ZteF9lcHRfYWQ7CiAgICAgICAgICAg ICBicmVhazsKKyAgICAgICAgY2FzZSBwMm1faW9yZXFfc2VydmVyOgorICAgICAgICAgICAgZW50 cnktPnIgPSBlbnRyeS0+eCA9IDE7CisgICAgICAgICAgICBlbnRyeS0+dyA9ICEocDJtLT5pb3Jl cS5mbGFncyAmIFAyTV9JT1JFUV9IQU5ETEVfV1JJVEVfQUNDRVNTKTsKKyAgICAgICAgICAgIGVu dHJ5LT5hID0gISFjcHVfaGFzX3ZteF9lcHRfYWQ7CisgICAgICAgICAgICBlbnRyeS0+ZCA9IGVu dHJ5LT53ICYmIGNwdV9oYXNfdm14X2VwdF9hZDsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAg ICBjYXNlIHAybV9tbWlvX2RpcmVjdDoKICAgICAgICAgICAgIGVudHJ5LT5yID0gZW50cnktPngg PSAxOwogICAgICAgICAgICAgZW50cnktPncgPSAhcmFuZ2VzZXRfY29udGFpbnNfc2luZ2xldG9u KG1taW9fcm9fcmFuZ2VzLApAQCAtMTcxLDcgKzE3Nyw2IEBAIHN0YXRpYyB2b2lkIGVwdF9wMm1f dHlwZV90b19mbGFncyhzdHJ1Y3QgcDJtX2RvbWFpbiAqcDJtLCBlcHRfZW50cnlfdCAqZW50cnks CiAgICAgICAgICAgICBlbnRyeS0+YSA9IGVudHJ5LT5kID0gISFjcHVfaGFzX3ZteF9lcHRfYWQ7 CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBwMm1fZ3JhbnRfbWFwX3JvOgotICAg ICAgICBjYXNlIHAybV9pb3JlcV9zZXJ2ZXI6CiAgICAgICAgICAgICBlbnRyeS0+ciA9IDE7CiAg ICAgICAgICAgICBlbnRyeS0+dyA9IGVudHJ5LT54ID0gMDsKICAgICAgICAgICAgIGVudHJ5LT5h ID0gISFjcHVfaGFzX3ZteF9lcHRfYWQ7CmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvbW0vcDJt LXB0LmMgYi94ZW4vYXJjaC94ODYvbW0vcDJtLXB0LmMKaW5kZXggZWFiZDJlMy4uYmY3NWFmYSAx MDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L21tL3AybS1wdC5jCisrKyBiL3hlbi9hcmNoL3g4Ni9t bS9wMm0tcHQuYwpAQCAtNzIsNyArNzIsOSBAQCBzdGF0aWMgY29uc3QgdW5zaWduZWQgbG9uZyBw Z3RbXSA9IHsKICAgICBQR1RfbDNfcGFnZV90YWJsZQogfTsKIAotc3RhdGljIHVuc2lnbmVkIGxv bmcgcDJtX3R5cGVfdG9fZmxhZ3MocDJtX3R5cGVfdCB0LCBtZm5fdCBtZm4sCitzdGF0aWMgdW5z aWduZWQgbG9uZyBwMm1fdHlwZV90b19mbGFncyhjb25zdCBzdHJ1Y3QgcDJtX2RvbWFpbiAqcDJt LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcDJtX3R5cGVfdCB0LAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWZuX3QgbWZuLAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGxldmVsKQogewog ICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7CkBAIC05NCw4ICs5NiwxNiBAQCBzdGF0aWMgdW5zaWdu ZWQgbG9uZyBwMm1fdHlwZV90b19mbGFncyhwMm1fdHlwZV90IHQsIG1mbl90IG1mbiwKICAgICBk ZWZhdWx0OgogICAgICAgICByZXR1cm4gZmxhZ3MgfCBfUEFHRV9OWF9CSVQ7CiAgICAgY2FzZSBw Mm1fZ3JhbnRfbWFwX3JvOgotICAgIGNhc2UgcDJtX2lvcmVxX3NlcnZlcjoKICAgICAgICAgcmV0 dXJuIGZsYWdzIHwgUDJNX0JBU0VfRkxBR1MgfCBfUEFHRV9OWF9CSVQ7CisgICAgY2FzZSBwMm1f aW9yZXFfc2VydmVyOgorICAgIHsKKyAgICAgICAgZmxhZ3MgfD0gUDJNX0JBU0VfRkxBR1MgfCBf UEFHRV9SVzsKKworICAgICAgICBpZiAoIHAybS0+aW9yZXEuZmxhZ3MgJiBQMk1fSU9SRVFfSEFO RExFX1dSSVRFX0FDQ0VTUyApCisgICAgICAgICAgICByZXR1cm4gZmxhZ3MgJiB+X1BBR0VfUlc7 CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJldHVybiBmbGFnczsKKyAgICB9CiAgICAgY2Fz ZSBwMm1fcmFtX3JvOgogICAgIGNhc2UgcDJtX3JhbV9sb2dkaXJ0eToKICAgICBjYXNlIHAybV9y YW1fc2hhcmVkOgpAQCAtNDQyLDcgKzQ1Miw4IEBAIHN0YXRpYyBpbnQgZG9fcmVjYWxjKHN0cnVj dCBwMm1fZG9tYWluICpwMm0sIHVuc2lnbmVkIGxvbmcgZ2ZuKQogICAgICAgICAgICAgcDJtX3R5 cGVfdCBwMm10ID0gcDJtX2lzX2xvZ2RpcnR5X3JhbmdlKHAybSwgZ2ZuICYgbWFzaywgZ2ZuIHwg fm1hc2spCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHAybV9yYW1fbG9nZGlydHkg OiBwMm1fcmFtX3J3OwogICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBtZm4gPSBsMWVfZ2V0X3Bm bihlKTsKLSAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3MgPSBwMm1fdHlwZV90b19mbGFn cyhwMm10LCBfbWZuKG1mbiksIGxldmVsKTsKKyAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgZmxh Z3MgPSBwMm1fdHlwZV90b19mbGFncyhwMm0sIHAybXQsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX21mbihtZm4pLCBsZXZlbCk7CiAKICAgICAg ICAgICAgIGlmICggbGV2ZWwgKQogICAgICAgICAgICAgewpAQCAtNTc5LDcgKzU5MCw3IEBAIHAy bV9wdF9zZXRfZW50cnkoc3RydWN0IHAybV9kb21haW4gKnAybSwgdW5zaWduZWQgbG9uZyBnZm4s IG1mbl90IG1mbiwKICAgICAgICAgQVNTRVJUKCFtZm5fdmFsaWQobWZuKSB8fCBwMm10ICE9IHAy bV9tbWlvX2RpcmVjdCk7CiAgICAgICAgIGwzZV9jb250ZW50ID0gbWZuX3ZhbGlkKG1mbikgfHwg cDJtX2FsbG93c19pbnZhbGlkX21mbihwMm10KQogICAgICAgICAgICAgPyBsM2VfZnJvbV9wZm4o bWZuX3gobWZuKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHAybV90eXBlX3RvX2ZsYWdz KHAybXQsIG1mbiwgMikgfCBfUEFHRV9QU0UpCisgICAgICAgICAgICAgICAgICAgICAgICAgICBw Mm1fdHlwZV90b19mbGFncyhwMm0sIHAybXQsIG1mbiwgMikgfCBfUEFHRV9QU0UpCiAgICAgICAg ICAgICA6IGwzZV9lbXB0eSgpOwogICAgICAgICBlbnRyeV9jb250ZW50LmwxID0gbDNlX2NvbnRl bnQubDM7CiAKQEAgLTYxNSw3ICs2MjYsNyBAQCBwMm1fcHRfc2V0X2VudHJ5KHN0cnVjdCBwMm1f ZG9tYWluICpwMm0sIHVuc2lnbmVkIGxvbmcgZ2ZuLCBtZm5fdCBtZm4sCiAKICAgICAgICAgaWYg KCBtZm5fdmFsaWQobWZuKSB8fCBwMm1fYWxsb3dzX2ludmFsaWRfbWZuKHAybXQpICkKICAgICAg ICAgICAgIGVudHJ5X2NvbnRlbnQgPSBwMm1fbDFlX2Zyb21fcGZuKG1mbl94KG1mbiksCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwMm1fdHlwZV90b19mbGFn cyhwMm10LCBtZm4sIDApKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgcDJtX3R5cGVfdG9fZmxhZ3MocDJtLCBwMm10LCBtZm4sIDApKTsKICAgICAgICAgZWxzZQog ICAgICAgICAgICAgZW50cnlfY29udGVudCA9IGwxZV9lbXB0eSgpOwogCkBAIC02NTEsNyArNjYy LDcgQEAgcDJtX3B0X3NldF9lbnRyeShzdHJ1Y3QgcDJtX2RvbWFpbiAqcDJtLCB1bnNpZ25lZCBs b25nIGdmbiwgbWZuX3QgbWZuLAogICAgICAgICBBU1NFUlQoIW1mbl92YWxpZChtZm4pIHx8IHAy bXQgIT0gcDJtX21taW9fZGlyZWN0KTsKICAgICAgICAgaWYgKCBtZm5fdmFsaWQobWZuKSB8fCBw Mm1fYWxsb3dzX2ludmFsaWRfbWZuKHAybXQpICkKICAgICAgICAgICAgIGwyZV9jb250ZW50ID0g bDJlX2Zyb21fcGZuKG1mbl94KG1mbiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBwMm1fdHlwZV90b19mbGFncyhwMm10LCBtZm4sIDEpIHwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHAybV90eXBlX3RvX2ZsYWdzKHAybSwgcDJtdCwgbWZu LCAxKSB8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfUEFHRV9QU0Up OwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBsMmVfY29udGVudCA9IGwyZV9lbXB0eSgpOwpk aWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L21tL3AybS5jIGIveGVuL2FyY2gveDg2L21tL3AybS5j CmluZGV4IDliMTk3NjkuLjU5YWZhMmMgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9tbS9wMm0u YworKysgYi94ZW4vYXJjaC94ODYvbW0vcDJtLmMKQEAgLTgzLDYgKzgzLDggQEAgc3RhdGljIGlu dCBwMm1faW5pdGlhbGlzZShzdHJ1Y3QgZG9tYWluICpkLCBzdHJ1Y3QgcDJtX2RvbWFpbiAqcDJt KQogICAgIGVsc2UKICAgICAgICAgcDJtX3B0X2luaXQocDJtKTsKIAorICAgIHNwaW5fbG9ja19p bml0KCZwMm0tPmlvcmVxLmxvY2spOworCiAgICAgcmV0dXJuIHJldDsKIH0KIApAQCAtMjg5LDYg KzI5MSw3NCBAQCB2b2lkIHAybV9tZW1vcnlfdHlwZV9jaGFuZ2VkKHN0cnVjdCBkb21haW4gKmQp CiAgICAgfQogfQogCitpbnQgcDJtX3NldF9pb3JlcV9zZXJ2ZXIoc3RydWN0IGRvbWFpbiAqZCwK KyAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGZsYWdzLAorICAgICAgICAg ICAgICAgICAgICAgICAgIHN0cnVjdCBodm1faW9yZXFfc2VydmVyICpzKQoreworICAgIHN0cnVj dCBwMm1fZG9tYWluICpwMm0gPSBwMm1fZ2V0X2hvc3RwMm0oZCk7CisgICAgaW50IHJjOworCisg ICAgc3Bpbl9sb2NrKCZwMm0tPmlvcmVxLmxvY2spOworCisgICAgaWYgKCBmbGFncyA9PSAwICkK KyAgICB7CisgICAgICAgIHJjID0gLUVJTlZBTDsKKyAgICAgICAgaWYgKCBwMm0tPmlvcmVxLnNl cnZlciAhPSBzICkKKyAgICAgICAgICAgIGdvdG8gb3V0OworCisgICAgICAgIC8qIFVubWFwIGlv cmVxIHNlcnZlciBmcm9tIHAybSB0eXBlIGJ5IHBhc3NpbmcgZmxhZ3Mgd2l0aCAwLiAqLworICAg ICAgICBwMm0tPmlvcmVxLnNlcnZlciA9IE5VTEw7CisgICAgICAgIHAybS0+aW9yZXEuZmxhZ3Mg PSAwOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICByYyA9IC1FQlVTWTsKKyAgICAg ICAgaWYgKCBwMm0tPmlvcmVxLnNlcnZlciAhPSBOVUxMICkKKyAgICAgICAgICAgIGdvdG8gb3V0 OworCisgICAgICAgIHAybS0+aW9yZXEuc2VydmVyID0gczsKKyAgICAgICAgcDJtLT5pb3JlcS5m bGFncyA9IGZsYWdzOworICAgIH0KKworICAgIHJjID0gMDsKKworIG91dDoKKyAgICBzcGluX3Vu bG9jaygmcDJtLT5pb3JlcS5sb2NrKTsKKworICAgIHJldHVybiByYzsKK30KKworc3RydWN0IGh2 bV9pb3JlcV9zZXJ2ZXIgKnAybV9nZXRfaW9yZXFfc2VydmVyKHN0cnVjdCBkb21haW4gKmQsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9u ZyAqZmxhZ3MpCit7CisgICAgc3RydWN0IHAybV9kb21haW4gKnAybSA9IHAybV9nZXRfaG9zdHAy bShkKTsKKyAgICBzdHJ1Y3QgaHZtX2lvcmVxX3NlcnZlciAqczsKKworICAgIHNwaW5fbG9jaygm cDJtLT5pb3JlcS5sb2NrKTsKKworICAgIHMgPSBwMm0tPmlvcmVxLnNlcnZlcjsKKyAgICAqZmxh Z3MgPSBwMm0tPmlvcmVxLmZsYWdzOworCisgICAgc3Bpbl91bmxvY2soJnAybS0+aW9yZXEubG9j ayk7CisgICAgcmV0dXJuIHM7Cit9CisKK3ZvaWQgcDJtX2Rlc3Ryb3lfaW9yZXFfc2VydmVyKHN0 cnVjdCBkb21haW4gKmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgaHZt X2lvcmVxX3NlcnZlciAqcykKK3sKKyAgICBzdHJ1Y3QgcDJtX2RvbWFpbiAqcDJtID0gcDJtX2dl dF9ob3N0cDJtKGQpOworCisgICAgc3Bpbl9sb2NrKCZwMm0tPmlvcmVxLmxvY2spOworCisgICAg aWYgKCBwMm0tPmlvcmVxLnNlcnZlciA9PSBzICkKKyAgICB7CisgICAgICAgIHAybS0+aW9yZXEu c2VydmVyID0gTlVMTDsKKyAgICAgICAgcDJtLT5pb3JlcS5mbGFncyA9IDA7CisgICAgfQorCisg ICAgc3Bpbl91bmxvY2soJnAybS0+aW9yZXEubG9jayk7Cit9CisKIHZvaWQgcDJtX2VuYWJsZV9o YXJkd2FyZV9sb2dfZGlydHkoc3RydWN0IGRvbWFpbiAqZCkKIHsKICAgICBzdHJ1Y3QgcDJtX2Rv bWFpbiAqcDJtID0gcDJtX2dldF9ob3N0cDJtKGQpOwpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2 L21tL3NoYWRvdy9tdWx0aS5jIGIveGVuL2FyY2gveDg2L21tL3NoYWRvdy9tdWx0aS5jCmluZGV4 IGIzMjIyOTMuLmFlODQ1ZDIgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9tbS9zaGFkb3cvbXVs dGkuYworKysgYi94ZW4vYXJjaC94ODYvbW0vc2hhZG93L211bHRpLmMKQEAgLTMyMjUsOCArMzIy NSw3IEBAIHN0YXRpYyBpbnQgc2hfcGFnZV9mYXVsdChzdHJ1Y3QgdmNwdSAqdiwKICAgICB9CiAK ICAgICAvKiBOZWVkIHRvIGhhbmQgb2ZmIGRldmljZS1tb2RlbCBNTUlPIHRvIHRoZSBkZXZpY2Ug bW9kZWwgKi8KLSAgICBpZiAoIHAybXQgPT0gcDJtX21taW9fZG0KLSAgICAgICAgIHx8IChwMm10 ID09IHAybV9pb3JlcV9zZXJ2ZXIgJiYgZnQgPT0gZnRfZGVtYW5kX3dyaXRlKSApCisgICAgaWYg KCBwMm10ID09IHAybV9tbWlvX2RtICkKICAgICB7CiAgICAgICAgIGdwYSA9IGd1ZXN0X3dhbGtf dG9fZ3BhKCZndyk7CiAgICAgICAgIGdvdG8gbW1pbzsKZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRl L2FzbS14ODYvaHZtL2lvcmVxLmggYi94ZW4vaW5jbHVkZS9hc20teDg2L2h2bS9pb3JlcS5oCmlu ZGV4IGZiZjJjNzQuLjM0MGFlM2UgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL2FzbS14ODYvaHZt L2lvcmVxLmgKKysrIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9odm0vaW9yZXEuaApAQCAtMzcsNiAr MzcsOCBAQCBpbnQgaHZtX21hcF9pb19yYW5nZV90b19pb3JlcV9zZXJ2ZXIoc3RydWN0IGRvbWFp biAqZCwgaW9zZXJ2aWRfdCBpZCwKIGludCBodm1fdW5tYXBfaW9fcmFuZ2VfZnJvbV9pb3JlcV9z ZXJ2ZXIoc3RydWN0IGRvbWFpbiAqZCwgaW9zZXJ2aWRfdCBpZCwKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgdHlwZSwgdWludDY0X3Qgc3RhcnQsCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ2NF90IGVuZCk7Citp bnQgaHZtX21hcF9tZW1fdHlwZV90b19pb3JlcV9zZXJ2ZXIoc3RydWN0IGRvbWFpbiAqZCwgaW9z ZXJ2aWRfdCBpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MTZf dCB0eXBlLCB1aW50MzJfdCBmbGFncyk7CiBpbnQgaHZtX3NldF9pb3JlcV9zZXJ2ZXJfc3RhdGUo c3RydWN0IGRvbWFpbiAqZCwgaW9zZXJ2aWRfdCBpZCwKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBib29sX3QgZW5hYmxlZCk7CiAKZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL2FzbS14 ODYvcDJtLmggYi94ZW4vaW5jbHVkZS9hc20teDg2L3AybS5oCmluZGV4IGYzZTg3ZDYuLjNhYTBk ZDcgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL2FzbS14ODYvcDJtLmgKKysrIGIveGVuL2luY2x1 ZGUvYXNtLXg4Ni9wMm0uaApAQCAtODksNyArODksOCBAQCB0eXBlZGVmIHVuc2lnbmVkIGludCBw Mm1fcXVlcnlfdDsKICAgICAgICAgICAgICAgICAgICAgICAgfCBwMm1fdG9fbWFzayhwMm1fcmFt X3BhZ2luZ19vdXQpICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICB8IHAybV90b19tYXNr KHAybV9yYW1fcGFnZWQpICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgIHwgcDJt X3RvX21hc2socDJtX3JhbV9wYWdpbmdfaW4pICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAg ICAgfCBwMm1fdG9fbWFzayhwMm1fcmFtX3NoYXJlZCkpCisgICAgICAgICAgICAgICAgICAgICAg IHwgcDJtX3RvX21hc2socDJtX3JhbV9zaGFyZWQpICAgICAgICAgIFwKKyAgICAgICAgICAgICAg ICAgICAgICAgfCBwMm1fdG9fbWFzayhwMm1faW9yZXFfc2VydmVyKSkKIAogLyogVHlwZXMgdGhh dCByZXByZXNlbnQgYSBwaHlzbWFwIGhvbGUgdGhhdCBpcyBvayB0byByZXBsYWNlIHdpdGggYSBz aGFyZWQKICAqIGVudHJ5ICovCkBAIC0xMTEsOCArMTEyLDcgQEAgdHlwZWRlZiB1bnNpZ25lZCBp bnQgcDJtX3F1ZXJ5X3Q7CiAjZGVmaW5lIFAyTV9ST19UWVBFUyAocDJtX3RvX21hc2socDJtX3Jh bV9sb2dkaXJ0eSkgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICB8IHAybV90b19tYXNrKHAy bV9yYW1fcm8pICAgICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgIHwgcDJtX3RvX21hc2so cDJtX2dyYW50X21hcF9ybykgICBcCi0gICAgICAgICAgICAgICAgICAgICAgfCBwMm1fdG9fbWFz ayhwMm1fcmFtX3NoYXJlZCkgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICB8IHAybV90b19t YXNrKHAybV9pb3JlcV9zZXJ2ZXIpKQorICAgICAgICAgICAgICAgICAgICAgIHwgcDJtX3RvX21h c2socDJtX3JhbV9zaGFyZWQpKQogCiAvKiBXcml0ZS1kaXNjYXJkIHR5cGVzLCB3aGljaCBzaG91 bGQgZGlzY2FyZCB0aGUgd3JpdGUgb3BlcmF0aW9ucyAqLwogI2RlZmluZSBQMk1fRElTQ0FSRF9X UklURV9UWVBFUyAocDJtX3RvX21hc2socDJtX3JhbV9ybykgICAgIFwKQEAgLTMzNiw2ICszMzYs MjQgQEAgc3RydWN0IHAybV9kb21haW4gewogICAgICAgICBzdHJ1Y3QgZXB0X2RhdGEgZXB0Owog ICAgICAgICAvKiBOUFQtZXF1aXZhbGVudCBzdHJ1Y3R1cmUgY291bGQgYmUgYWRkZWQgaGVyZS4g Ki8KICAgICB9OworCisgICAgc3RydWN0IHsKKyAgICAgICAgc3BpbmxvY2tfdCBsb2NrOworICAg ICAgICAvKgorICAgICAgICAgKiBpb3JlcSBzZXJ2ZXIgd2hvJ3MgcmVzcG9uc2libGUgZm9yIHRo ZSBlbXVsYXRpb24gb2YKKyAgICAgICAgICogZ2ZucyB3aXRoIHNwZWNpZmljIHAybSB0eXBlKGZv ciBub3csIHAybV9pb3JlcV9zZXJ2ZXIpLgorICAgICAgICAgKi8KKyAgICAgICAgc3RydWN0IGh2 bV9pb3JlcV9zZXJ2ZXIgKnNlcnZlcjsKKyAgICAgICAgLyoKKyAgICAgICAgICogZmxhZ3Mgc3Bl Y2lmaWVzIHdoZXRoZXIgcmVhZCwgd3JpdGUgb3IgYm90aCBvcGVyYXRpb25zCisgICAgICAgICAq IGFyZSB0byBiZSBlbXVsYXRlZCBieSBhbiBpb3JlcSBzZXJ2ZXIuCisgICAgICAgICAqLworICAg ICAgICB1bnNpZ25lZCBpbnQgZmxhZ3M7CisKKyNkZWZpbmUgUDJNX0lPUkVRX0hBTkRMRV9XUklU RV9BQ0NFU1MgSFZNT1BfSU9SRVFfTUVNX0FDQ0VTU19XUklURQorI2RlZmluZSBQMk1fSU9SRVFf SEFORExFX1JFQURfQUNDRVNTICBIVk1PUF9JT1JFUV9NRU1fQUNDRVNTX1JFQUQKKworICAgIH0g aW9yZXE7CiB9OwogCiAvKiBnZXQgaG9zdCBwMm0gdGFibGUgKi8KQEAgLTg0Myw2ICs4NjEsMTIg QEAgc3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQgcDJtX2dldF9pb21tdV9mbGFncyhwMm1fdHlw ZV90IHAybXQpCiAgICAgcmV0dXJuIGZsYWdzOwogfQogCitpbnQgcDJtX3NldF9pb3JlcV9zZXJ2 ZXIoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9uZyBmbGFncywKKyAgICAgICAgICAgICAg ICAgICAgICAgICBzdHJ1Y3QgaHZtX2lvcmVxX3NlcnZlciAqcyk7CitzdHJ1Y3QgaHZtX2lvcmVx X3NlcnZlciAqcDJtX2dldF9pb3JlcV9zZXJ2ZXIoc3RydWN0IGRvbWFpbiAqZCwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nICpmbGFn cyk7Cit2b2lkIHAybV9kZXN0cm95X2lvcmVxX3NlcnZlcihzdHJ1Y3QgZG9tYWluICpkLCBzdHJ1 Y3QgaHZtX2lvcmVxX3NlcnZlciAqcyk7CisKICNlbmRpZiAvKiBfWEVOX1AyTV9IICovCiAKIC8q CmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9wdWJsaWMvaHZtL2h2bV9vcC5oIGIveGVuL2luY2x1 ZGUvcHVibGljL2h2bS9odm1fb3AuaAppbmRleCBiM2U0NWNmLi4yMmMxNWE3IDEwMDY0NAotLS0g YS94ZW4vaW5jbHVkZS9wdWJsaWMvaHZtL2h2bV9vcC5oCisrKyBiL3hlbi9pbmNsdWRlL3B1Ymxp Yy9odm0vaHZtX29wLmgKQEAgLTg5LDcgKzg5LDkgQEAgdHlwZWRlZiBlbnVtIHsKICAgICBIVk1N RU1fdW51c2VkLCAgICAgICAgICAgICAvKiBQbGFjZWhvbGRlcjsgc2V0dGluZyBtZW1vcnkgdG8g dGhpcyB0eXBlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lsbCBmYWlsIGZv ciBjb2RlIGFmdGVyIDQuNy4wICovCiAjZW5kaWYKLSAgICBIVk1NRU1faW9yZXFfc2VydmVyCisg ICAgSFZNTUVNX2lvcmVxX3NlcnZlciAgICAgICAgLyogTWVtb3J5IHR5cGUgY2xhaW1lZCBieSBh biBpb3JlcSBzZXJ2ZXI7IHR5cGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj aGFuZ2VzIHRvIHRoaXMgdmFsdWUgYXJlIG9ubHkgYWxsb3dlZCBhZnRlcgorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGFuIGlvcmVxIHNlcnZlciBoYXMgY2xhaW1lZCBpdHMgb3du ZXJzaGlwICovCiB9IGh2bW1lbV90eXBlX3Q7CiAKIC8qIEZvbGxvd2luZyB0b29scy1vbmx5IGlu dGVyZmFjZXMgbWF5IGNoYW5nZSBpbiBmdXR1cmUuICovCkBAIC0zODMsNiArMzg1LDM3IEBAIHN0 cnVjdCB4ZW5faHZtX3NldF9pb3JlcV9zZXJ2ZXJfc3RhdGUgewogdHlwZWRlZiBzdHJ1Y3QgeGVu X2h2bV9zZXRfaW9yZXFfc2VydmVyX3N0YXRlIHhlbl9odm1fc2V0X2lvcmVxX3NlcnZlcl9zdGF0 ZV90OwogREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUoeGVuX2h2bV9zZXRfaW9yZXFfc2VydmVyX3N0 YXRlX3QpOwogCisvKgorICogSFZNT1BfbWFwX21lbV90eXBlX3RvX2lvcmVxX3NlcnZlciA6IG1h cCBvciB1bm1hcCB0aGUgSU9SRVEgU2VydmVyIDxpZD4KKyAqICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB0byBzcGVjaWZpYyBtZW1yb3kgdHlwZSA8dHlwZT4KKyAqICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3Igc3BlY2lmaWMgYWNjZXNzZXMgPGZs YWdzPgorICoKKyAqIEZvciBub3csIGZsYWdzIG9ubHkgYWNjZXB0IHRoZSB2YWx1ZSBvZiBIVk1P UF9JT1JFUV9NRU1fQUNDRVNTX1dSSVRFLAorICogd2hpY2ggbWVhbnMgb25seSB3cml0ZSBvcGVy YXRpb25zIGFyZSB0byBiZSBmb3J3YXJkZWQgdG8gYW4gaW9yZXEgc2VydmVyLgorICogU3VwcG9y dCBmb3IgdGhlIGVtdWxhdGlvbiBvZiByZWFkIG9wZXJhdGlvbnMgY2FuIGJlIGFkZGVkIHdoZW4g YW4gaW9yZXEKKyAqIHNlcnZlciBoYXMgc3VjaCByZXF1aXJlbWVudCBpbiBmdXR1cmUuCisgKi8K KyNkZWZpbmUgSFZNT1BfbWFwX21lbV90eXBlX3RvX2lvcmVxX3NlcnZlciAyNgorc3RydWN0IHhl bl9odm1fbWFwX21lbV90eXBlX3RvX2lvcmVxX3NlcnZlciB7CisgICAgZG9taWRfdCBkb21pZDsg ICAgICAvKiBJTiAtIGRvbWFpbiB0byBiZSBzZXJ2aWNlZCAqLworICAgIGlvc2VydmlkX3QgaWQ7 ICAgICAgLyogSU4gLSBpb3JlcSBzZXJ2ZXIgaWQgKi8KKyAgICB1aW50MTZfdCB0eXBlOyAgICAg IC8qIElOIC0gbWVtb3J5IHR5cGUgKi8KKyAgICB1aW50MTZfdCBwYWQ7CisgICAgdWludDMyX3Qg ZmxhZ3M7ICAgICAvKiBJTiAtIHR5cGVzIG9mIGFjY2Vzc2VzIHRvIGJlIGZvcndhcmRlZCB0byB0 aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGlvcmVxIHNlcnZlci4gZmxhZ3Mgd2l0aCAw IG1lYW5zIHRvIHVubWFwIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgaW9yZXEgc2Vy dmVyICovCisjZGVmaW5lIF9IVk1PUF9JT1JFUV9NRU1fQUNDRVNTX1JFQUQgMAorI2RlZmluZSBI Vk1PUF9JT1JFUV9NRU1fQUNDRVNTX1JFQUQgXAorICAgICgxdSA8PCBfSFZNT1BfSU9SRVFfTUVN X0FDQ0VTU19SRUFEKQorCisjZGVmaW5lIF9IVk1PUF9JT1JFUV9NRU1fQUNDRVNTX1dSSVRFIDEK KyNkZWZpbmUgSFZNT1BfSU9SRVFfTUVNX0FDQ0VTU19XUklURSBcCisgICAgKDF1IDw8IF9IVk1P UF9JT1JFUV9NRU1fQUNDRVNTX1dSSVRFKQorfTsKK3R5cGVkZWYgc3RydWN0IHhlbl9odm1fbWFw X21lbV90eXBlX3RvX2lvcmVxX3NlcnZlcgorICAgIHhlbl9odm1fbWFwX21lbV90eXBlX3RvX2lv cmVxX3NlcnZlcl90OworREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUoeGVuX2h2bV9tYXBfbWVtX3R5 cGVfdG9faW9yZXFfc2VydmVyX3QpOworCiAjZW5kaWYgLyogZGVmaW5lZChfX1hFTl9fKSB8fCBk ZWZpbmVkKF9fWEVOX1RPT0xTX18pICovCiAKICNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZp bmVkKF9feDg2XzY0X18pCi0tIAoxLjkuMQoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3Rz Lnhlbi5vcmcKaHR0cDovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==