From mboxrd@z Thu Jan 1 00:00:00 1970 From: Yu Zhang Subject: [PATCH v3 3/3] x86/ioreq server: Add HVMOP to map guest ram with p2m_ioreq_server to an ioreq server. Date: Mon, 25 Apr 2016 18:35:40 +0800 Message-ID: <1461580540-9314-4-git-send-email-yu.c.zhang@linux.intel.com> References: <1461580540-9314-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: <1461580540-9314-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 , Keir Fraser , Jun Nakajima , George Dunlap , Andrew Cooper , Tim Deegan , Paul Durrant , zhiyuan.lv@intel.com, Jan Beulich , wei.liu2@citrix.com 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 cDJtX2lvcmVxX3NlcnZlcgpiZSBhbGxvd2VkLgoKY2hhbmdlcyBpbiB2MzoKICAtIE9ubHkgc3Vw cG9ydCB3cml0ZSBlbXVsYXRpb24gaW4gdGhpcyBwYXRjaDsKICAtIFJlbW92ZSB0aGUgY29kZSB0 byBoYW5kbGUgcmFjZSBjb25kaXRpb24gaW4gaHZtZW11bF9kb19pbygpLAogIC0gTm8gbmVlZCB0 byByZXNldCB0aGUgcDJtIHR5cGUgYWZ0ZXIgYW4gaW9yZXEgc2VydmVyIGhhcyBkaXNjbGFpbWVk CiAgICBpdHMgb3duZXJzaGlwIG9mIHAybV9pb3JlcV9zZXJ2ZXI7CiAgLSBPbmx5IGFsbG93IHAy bSB0eXBlIGNoYW5nZSB0byBwMm1faW9yZXFfc2VydmVyIGFmdGVyIGFuIGlvcmVxCiAgICBzZXJ2 ZXIgaGFzIGNsYWltZWQgaXRzIG93bmVyc2hpcCBvZiBwMm1faW9yZXFfc2VydmVyOwogIC0gT25s eSBhbGxvdyBwMm0gdHlwZSBjaGFuZ2UgdG8gcDJtX2lvcmVxX3NlcnZlciBmcm9tIHBhZ2VzIHdp dGggdHlwZQogICAgcDJtX3JhbV9ydywgYW5kIHZpY2UgdmVyc2E7CiAgLSBIVk1PUF9tYXBfbWVt X3R5cGVfdG9faW9yZXFfc2VydmVyIGludGVyZmFjZSBjaGFuZ2UgLSB1c2UgdWludDE2LAogICAg aW5zdGVhZCBvZiBlbnVtIHRvIHNwZWNpZnkgdGhlIG1lbW9yeSB0eXBlOwogIC0gRnVuY3Rpb24g cHJvdG90eXBlIGNoYW5nZSB0byBwMm1fZ2V0X2lvcmVxX3NlcnZlcigpOwogIC0gQ29kaW5nIHN0 eWxlIGNoYW5nZXM7CiAgLSBDb21taXQgbWVzc2FnZSBjaGFuZ2VzOwogIC0gQWRkIFRpbSdzIEFj a2VkLWJ5LgoKY2hhbmdlcyBpbiB2MjoKICAtIE9ubHkgc3VwcG9ydCBIQVAgZW5hYmxlZCBIVk1z OwogIC0gUmVwbGFjZSBwMm1fbWVtX3R5cGVfY2hhbmdlZCgpIHdpdGggcDJtX2NoYW5nZV9lbnRy eV90eXBlX2dsb2JhbCgpCiAgICB0byByZXNldCB0aGUgcDJtIHR5cGUsIHdoZW4gYW4gaW9yZXEg c2VydmVyIHRyaWVzIHRvIGNsYWltL2Rpc2NsYWltCiAgICBpdHMgb3duZXJzaGlwIG9mIHAybV9p b3JlcV9zZXJ2ZXI7CiAgLSBDb21tZW50cyBjaGFuZ2VzLgoKU2lnbmVkLW9mZi1ieTogUGF1bCBE dXJyYW50IDxwYXVsLmR1cnJhbnRAY2l0cml4LmNvbT4KU2lnbmVkLW9mZi1ieTogWXUgWmhhbmcg PHl1LmMuemhhbmdAbGludXguaW50ZWwuY29tPgpBY2tlZC1ieTogVGltIERlZWdhbiA8dGltQHhl bi5vcmc+CkNjOiBLZWlyIEZyYXNlciA8a2VpckB4ZW4ub3JnPgpDYzogSmFuIEJldWxpY2ggPGpi ZXVsaWNoQHN1c2UuY29tPgpDYzogQW5kcmV3IENvb3BlciA8YW5kcmV3LmNvb3BlcjNAY2l0cml4 LmNvbT4KQ2M6IEdlb3JnZSBEdW5sYXAgPGdlb3JnZS5kdW5sYXBAZXUuY2l0cml4LmNvbT4KQ2M6 IEp1biBOYWthamltYSA8anVuLm5ha2FqaW1hQGludGVsLmNvbT4KQ2M6IEtldmluIFRpYW4gPGtl dmluLnRpYW5AaW50ZWwuY29tPgpDYzogVGltIERlZWdhbiA8dGltQHhlbi5vcmc+Ci0tLQogeGVu L2FyY2gveDg2L2h2bS9lbXVsYXRlLmMgICAgICAgfCAzMiArKysrKysrKysrKysrKysrLS0KIHhl bi9hcmNoL3g4Ni9odm0vaHZtLmMgICAgICAgICAgIHwgNjMgKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKy0tCiB4ZW4vYXJjaC94ODYvaHZtL2lvcmVxLmMgICAgICAgICB8IDQxICsr KysrKysrKysrKysrKysrKysrKysrCiB4ZW4vYXJjaC94ODYvbW0vaGFwL25lc3RlZF9oYXAuYyB8 ICAyICstCiB4ZW4vYXJjaC94ODYvbW0vcDJtLWVwdC5jICAgICAgICB8ICA3ICsrKy0KIHhlbi9h cmNoL3g4Ni9tbS9wMm0tcHQuYyAgICAgICAgIHwgMjMgKysrKysrKysrLS0tLQogeGVuL2FyY2gv eDg2L21tL3AybS5jICAgICAgICAgICAgfCA3MCArKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrCiB4ZW4vYXJjaC94ODYvbW0vc2hhZG93L211bHRpLmMgICB8ICAzICstCiB4 ZW4vaW5jbHVkZS9hc20teDg2L2h2bS9pb3JlcS5oICB8ICAyICsrCiB4ZW4vaW5jbHVkZS9hc20t eDg2L3AybS5oICAgICAgICB8IDMwICsrKysrKysrKysrKysrKy0tCiB4ZW4vaW5jbHVkZS9wdWJs aWMvaHZtL2h2bV9vcC5oICB8IDMxICsrKysrKysrKysrKysrKysrKwogMTEgZmlsZXMgY2hhbmdl ZCwgMjg2IGluc2VydGlvbnMoKyksIDE4IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3hlbi9h cmNoL3g4Ni9odm0vZW11bGF0ZS5jIGIveGVuL2FyY2gveDg2L2h2bS9lbXVsYXRlLmMKaW5kZXgg Y2MwYjg0MS4uZmQzNTBiZCAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L2h2bS9lbXVsYXRlLmMK KysrIGIveGVuL2FyY2gveDg2L2h2bS9lbXVsYXRlLmMKQEAgLTEwMCw2ICsxMDAsNyBAQCBzdGF0 aWMgaW50IGh2bWVtdWxfZG9faW8oCiAgICAgdWludDhfdCBkaXIsIGJvb2xfdCBkZiwgYm9vbF90 IGRhdGFfaXNfYWRkciwgdWludHB0cl90IGRhdGEpCiB7CiAgICAgc3RydWN0IHZjcHUgKmN1cnIg PSBjdXJyZW50OworICAgIHN0cnVjdCBkb21haW4gKmN1cnJkID0gY3Vyci0+ZG9tYWluOwogICAg IHN0cnVjdCBodm1fdmNwdV9pbyAqdmlvID0gJmN1cnItPmFyY2guaHZtX3ZjcHUuaHZtX2lvOwog ICAgIGlvcmVxX3QgcCA9IHsKICAgICAgICAgLnR5cGUgPSBpc19tbWlvID8gSU9SRVFfVFlQRV9D T1BZIDogSU9SRVFfVFlQRV9QSU8sCkBAIC0xNDEsNyArMTQyLDcgQEAgc3RhdGljIGludCBodm1l bXVsX2RvX2lvKAogICAgICAgICAgICAgIChwLmRpciAhPSBkaXIpIHx8CiAgICAgICAgICAgICAg KHAuZGYgIT0gZGYpIHx8CiAgICAgICAgICAgICAgKHAuZGF0YV9pc19wdHIgIT0gZGF0YV9pc19h ZGRyKSApCi0gICAgICAgICAgICBkb21haW5fY3Jhc2goY3Vyci0+ZG9tYWluKTsKKyAgICAgICAg ICAgIGRvbWFpbl9jcmFzaChjdXJyZCk7CiAKICAgICAgICAgaWYgKCBkYXRhX2lzX2FkZHIgKQog ICAgICAgICAgICAgcmV0dXJuIFg4NkVNVUxfVU5IQU5ETEVBQkxFOwpAQCAtMTY5LDggKzE3MCwz MyBAQCBzdGF0aWMgaW50IGh2bWVtdWxfZG9faW8oCiAgICAgICAgIGJyZWFrOwogICAgIGNhc2Ug WDg2RU1VTF9VTkhBTkRMRUFCTEU6CiAgICAgewotICAgICAgICBzdHJ1Y3QgaHZtX2lvcmVxX3Nl cnZlciAqcyA9Ci0gICAgICAgICAgICBodm1fc2VsZWN0X2lvcmVxX3NlcnZlcihjdXJyLT5kb21h aW4sICZwKTsKKyAgICAgICAgc3RydWN0IGh2bV9pb3JlcV9zZXJ2ZXIgKnM7CisgICAgICAgIHAy bV90eXBlX3QgcDJtdDsKKworICAgICAgICBpZiAoIGlzX21taW8gKQorICAgICAgICB7CisgICAg ICAgICAgICB1bnNpZ25lZCBsb25nIGdtZm4gPSBwYWRkcl90b19wZm4oYWRkcik7CisKKyAgICAg ICAgICAgICh2b2lkKSBnZXRfZ2ZuX3F1ZXJ5X3VubG9ja2VkKGN1cnJkLCBnbWZuLCAmcDJtdCk7 CisKKyAgICAgICAgICAgIGlmICggcDJtdCA9PSBwMm1faW9yZXFfc2VydmVyICkKKyAgICAgICAg ICAgIHsKKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGZsYWdzOworCisgICAgICAgICAg ICAgICAgcyA9IHAybV9nZXRfaW9yZXFfc2VydmVyKGN1cnJkLCAmZmxhZ3MpOworCisgICAgICAg ICAgICAgICAgaWYgKCBkaXIgPT0gSU9SRVFfV1JJVEUgJiYKKyAgICAgICAgICAgICAgICAgICAg ICEoZmxhZ3MgJiBQMk1fSU9SRVFfSEFORExFX1dSSVRFX0FDQ0VTUykgKQorICAgICAgICAgICAg ICAgICAgICBzID0gTlVMTDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UKKyAgICAg ICAgICAgICAgICBzID0gaHZtX3NlbGVjdF9pb3JlcV9zZXJ2ZXIoY3VycmQsICZwKTsKKyAgICAg ICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIHAybXQgPSBwMm1faW52 YWxpZDsKKyAgICAgICAgICAgIHMgPSBodm1fc2VsZWN0X2lvcmVxX3NlcnZlcihjdXJyZCwgJnAp OworICAgICAgICB9CiAKICAgICAgICAgLyogSWYgdGhlcmUgaXMgbm8gc3VpdGFibGUgYmFja2lu ZyBETSwganVzdCBpZ25vcmUgYWNjZXNzZXMgKi8KICAgICAgICAgaWYgKCAhcyApCmRpZmYgLS1n aXQgYS94ZW4vYXJjaC94ODYvaHZtL2h2bS5jIGIveGVuL2FyY2gveDg2L2h2bS9odm0uYwppbmRl eCA2MDc1NDZjLi4wYmE2NmEyIDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvaHZtL2h2bS5jCisr KyBiL3hlbi9hcmNoL3g4Ni9odm0vaHZtLmMKQEAgLTQ3MTEsNiArNDcxMSw0MCBAQCBzdGF0aWMg aW50IGh2bW9wX3VubWFwX2lvX3JhbmdlX2Zyb21faW9yZXFfc2VydmVyKAogICAgIHJldHVybiBy YzsKIH0KIAorc3RhdGljIGludCBodm1vcF9tYXBfbWVtX3R5cGVfdG9faW9yZXFfc2VydmVyKAor ICAgIFhFTl9HVUVTVF9IQU5ETEVfUEFSQU0oeGVuX2h2bV9tYXBfbWVtX3R5cGVfdG9faW9yZXFf c2VydmVyX3QpIHVvcCkKK3sKKyAgICB4ZW5faHZtX21hcF9tZW1fdHlwZV90b19pb3JlcV9zZXJ2 ZXJfdCBvcDsKKyAgICBzdHJ1Y3QgZG9tYWluICpkOworICAgIGludCByYzsKKworICAgIGlmICgg Y29weV9mcm9tX2d1ZXN0KCZvcCwgdW9wLCAxKSApCisgICAgICAgIHJldHVybiAtRUZBVUxUOwor CisgICAgcmMgPSByY3VfbG9ja19yZW1vdGVfZG9tYWluX2J5X2lkKG9wLmRvbWlkLCAmZCk7Cisg ICAgaWYgKCByYyAhPSAwICkKKyAgICAgICAgcmV0dXJuIHJjOworCisgICAgcmMgPSAtRUlOVkFM OworICAgIGlmICggIWlzX2h2bV9kb21haW4oZCkgKQorICAgICAgICBnb3RvIG91dDsKKworICAg IC8qIE9ubHkgc3VwcG9ydCBmb3IgSEFQIGVuYWJsZWQgaHZtICovCisgICAgaWYgKCAhaGFwX2Vu YWJsZWQoZCkgKQorICAgICAgICBnb3RvIG91dDsKKworICAgIHJjID0geHNtX2h2bV9pb3JlcV9z ZXJ2ZXIoWFNNX0RNX1BSSVYsIGQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIVk1P UF9tYXBfbWVtX3R5cGVfdG9faW9yZXFfc2VydmVyKTsKKyAgICBpZiAoIHJjICE9IDAgKQorICAg ICAgICBnb3RvIG91dDsKKworICAgIHJjID0gaHZtX21hcF9tZW1fdHlwZV90b19pb3JlcV9zZXJ2 ZXIoZCwgb3AuaWQsIG9wLnR5cGUsIG9wLmZsYWdzKTsKKworIG91dDoKKyAgICByY3VfdW5sb2Nr X2RvbWFpbihkKTsKKyAgICByZXR1cm4gcmM7Cit9CisKIHN0YXRpYyBpbnQgaHZtb3Bfc2V0X2lv cmVxX3NlcnZlcl9zdGF0ZSgKICAgICBYRU5fR1VFU1RfSEFORExFX1BBUkFNKHhlbl9odm1fc2V0 X2lvcmVxX3NlcnZlcl9zdGF0ZV90KSB1b3ApCiB7CkBAIC01MzQ0LDkgKzUzNzgsMTQgQEAgc3Rh dGljIGludCBodm1vcF9nZXRfbWVtX3R5cGUoCiAKIHN0YXRpYyBib29sX3QgaHZtX2FsbG93X3Ay bV90eXBlX2NoYW5nZShwMm1fdHlwZV90IG9sZCwgcDJtX3R5cGVfdCBuZXcpCiB7CisgICAgaWYg KCBuZXcgPT0gcDJtX2lvcmVxX3NlcnZlciApCisgICAgICAgIHJldHVybiBvbGQgPT0gcDJtX3Jh bV9ydzsKKworICAgIGlmICggb2xkID09IHAybV9pb3JlcV9zZXJ2ZXIgKQorICAgICAgICByZXR1 cm4gbmV3ID09IHAybV9yYW1fcnc7CisKICAgICBpZiAoIHAybV9pc19yYW0ob2xkKSB8fAotICAg ICAgICAgKHAybV9pc19ob2xlKG9sZCkgJiYgbmV3ID09IHAybV9tbWlvX2RtKSB8fAotICAgICAg ICAgKG9sZCA9PSBwMm1faW9yZXFfc2VydmVyICYmIG5ldyA9PSBwMm1fcmFtX3J3KSApCisgICAg ICAgICAocDJtX2lzX2hvbGUob2xkKSAmJiBuZXcgPT0gcDJtX21taW9fZG0pICkKICAgICAgICAg cmV0dXJuIDE7CiAKICAgICByZXR1cm4gMDsKQEAgLTUzODEsNiArNTQyMCwyMSBAQCBzdGF0aWMg aW50IGh2bW9wX3NldF9tZW1fdHlwZSgKICAgICBpZiAoICFpc19odm1fZG9tYWluKGQpICkKICAg ICAgICAgZ290byBvdXQ7CiAKKyAgICBpZiAoIGEuaHZtbWVtX3R5cGUgPT0gSFZNTUVNX2lvcmVx X3NlcnZlciApCisgICAgeworICAgICAgICB1bnNpZ25lZCBsb25nIGZsYWdzOworICAgICAgICBz dHJ1Y3QgaHZtX2lvcmVxX3NlcnZlciAqczsKKworICAgICAgICAvKiBIVk1NRU1faW9yZXFfc2Vy dmVyIGlzIG9ubHkgc3VwcG9ydGVkIGZvciBIQVAgZW5hYmxlZCBodm0uICovCisgICAgICAgIGlm ICggIWhhcF9lbmFibGVkKGQpICkKKyAgICAgICAgICAgIGdvdG8gb3V0OworCisgICAgICAgIC8q IERvIG5vdCBjaGFuZ2UgdG8gSFZNTUVNX2lvcmVxX3NlcnZlciBpZiBubyBpb3JlcSBzZXJ2ZXIg bWFwcGVkLiAqLworICAgICAgICBzID0gcDJtX2dldF9pb3JlcV9zZXJ2ZXIoZCwgJmZsYWdzKTsK KyAgICAgICAgaWYgKCBzID09IE5VTEwgKQorICAgICAgICAgICAgZ290byBvdXQ7CisgICAgfQor CiAgICAgcmMgPSB4c21faHZtX2NvbnRyb2woWFNNX0RNX1BSSVYsIGQsIEhWTU9QX3NldF9tZW1f dHlwZSk7CiAgICAgaWYgKCByYyApCiAgICAgICAgIGdvdG8gb3V0OwpAQCAtNTQ4Miw2ICs1NTM2 LDExIEBAIGxvbmcgZG9faHZtX29wKHVuc2lnbmVkIGxvbmcgb3AsIFhFTl9HVUVTVF9IQU5ETEVf UEFSQU0odm9pZCkgYXJnKQogICAgICAgICAgICAgZ3Vlc3RfaGFuZGxlX2Nhc3QoYXJnLCB4ZW5f aHZtX2lvX3JhbmdlX3QpKTsKICAgICAgICAgYnJlYWs7CiAKKyAgICBjYXNlIEhWTU9QX21hcF9t ZW1fdHlwZV90b19pb3JlcV9zZXJ2ZXI6CisgICAgICAgIHJjID0gaHZtb3BfbWFwX21lbV90eXBl X3RvX2lvcmVxX3NlcnZlcigKKyAgICAgICAgICAgIGd1ZXN0X2hhbmRsZV9jYXN0KGFyZywgeGVu X2h2bV9tYXBfbWVtX3R5cGVfdG9faW9yZXFfc2VydmVyX3QpKTsKKyAgICAgICAgYnJlYWs7CisK ICAgICBjYXNlIEhWTU9QX3NldF9pb3JlcV9zZXJ2ZXJfc3RhdGU6CiAgICAgICAgIHJjID0gaHZt b3Bfc2V0X2lvcmVxX3NlcnZlcl9zdGF0ZSgKICAgICAgICAgICAgIGd1ZXN0X2hhbmRsZV9jYXN0 KGFyZywgeGVuX2h2bV9zZXRfaW9yZXFfc2VydmVyX3N0YXRlX3QpKTsKZGlmZiAtLWdpdCBhL3hl bi9hcmNoL3g4Ni9odm0vaW9yZXEuYyBiL3hlbi9hcmNoL3g4Ni9odm0vaW9yZXEuYwppbmRleCA2 OTBlNDc4Li4yZTRkZWE1IDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvaHZtL2lvcmVxLmMKKysr IGIveGVuL2FyY2gveDg2L2h2bS9pb3JlcS5jCkBAIC03MjksNiArNzI5LDggQEAgaW50IGh2bV9k ZXN0cm95X2lvcmVxX3NlcnZlcihzdHJ1Y3QgZG9tYWluICpkLCBpb3NlcnZpZF90IGlkKQogCiAg ICAgICAgIGRvbWFpbl9wYXVzZShkKTsKIAorICAgICAgICBwMm1fZGVzdHJveV9pb3JlcV9zZXJ2 ZXIoZCwgcyk7CisKICAgICAgICAgaHZtX2lvcmVxX3NlcnZlcl9kaXNhYmxlKHMsIDApOwogCiAg ICAgICAgIGxpc3RfZGVsKCZzLT5saXN0X2VudHJ5KTsKQEAgLTg5MCw2ICs4OTIsNDUgQEAgaW50 IGh2bV91bm1hcF9pb19yYW5nZV9mcm9tX2lvcmVxX3NlcnZlcihzdHJ1Y3QgZG9tYWluICpkLCBp b3NlcnZpZF90IGlkLAogICAgIHJldHVybiByYzsKIH0KIAoraW50IGh2bV9tYXBfbWVtX3R5cGVf dG9faW9yZXFfc2VydmVyKHN0cnVjdCBkb21haW4gKmQsIGlvc2VydmlkX3QgaWQsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDE2X3QgdHlwZSwgdWludDMyX3QgZmxh Z3MpCit7CisgICAgc3RydWN0IGh2bV9pb3JlcV9zZXJ2ZXIgKnM7CisgICAgaW50IHJjOworCisg ICAgLyogRm9yIG5vdywgb25seSBIVk1NRU1faW9yZXFfc2VydmVyIGlzIHN1cHBvcnRlZC4gKi8K KyAgICBpZiAoIHR5cGUgIT0gSFZNTUVNX2lvcmVxX3NlcnZlciApCisgICAgICAgIHJldHVybiAt RUlOVkFMOworCisgICAgLyogRm9yIG5vdywgb25seSB3cml0ZSBlbXVsYXRpb24gaXMgc3VwcG9y dGVkLiAqLworICAgIGlmICggZmxhZ3MgJiB+KEhWTU9QX0lPUkVRX01FTV9BQ0NFU1NfV1JJVEUp ICkKKyAgICAgICAgcmV0dXJuIC1FSU5WQUw7CisKKyAgICBzcGluX2xvY2soJmQtPmFyY2guaHZt X2RvbWFpbi5pb3JlcV9zZXJ2ZXIubG9jayk7CisKKyAgICByYyA9IC1FTk9FTlQ7CisgICAgbGlz dF9mb3JfZWFjaF9lbnRyeSAoIHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICZkLT5hcmNo Lmh2bV9kb21haW4uaW9yZXFfc2VydmVyLmxpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAg IGxpc3RfZW50cnkgKQorICAgIHsKKyAgICAgICAgaWYgKCBzID09IGQtPmFyY2guaHZtX2RvbWFp bi5kZWZhdWx0X2lvcmVxX3NlcnZlciApCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAg ICBpZiAoIHMtPmlkID09IGlkICkKKyAgICAgICAgeworICAgICAgICAgICAgcmMgPSBwMm1fc2V0 X2lvcmVxX3NlcnZlcihkLCBmbGFncywgcyk7CisgICAgICAgICAgICBpZiAoIHJjID09IDAgKQor ICAgICAgICAgICAgICAgIGRwcmludGsoWEVOTE9HX0RFQlVHLCAiJXUgJXMgdHlwZSBIVk1NRU1f aW9yZXFfc2VydmVyLlxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzLT5pZCwgKGZsYWdz ICE9IDApID8gIm1hcHBlZCB0byIgOiAidW5tYXBwZWQgZnJvbSIpOworCisgICAgICAgICAgICBi cmVhazsKKyAgICAgICAgfQorICAgIH0KKworICAgIHNwaW5fdW5sb2NrKCZkLT5hcmNoLmh2bV9k b21haW4uaW9yZXFfc2VydmVyLmxvY2spOworICAgIHJldHVybiByYzsKK30KKwogaW50IGh2bV9z ZXRfaW9yZXFfc2VydmVyX3N0YXRlKHN0cnVjdCBkb21haW4gKmQsIGlvc2VydmlkX3QgaWQsCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbF90IGVuYWJsZWQpCiB7CmRpZmYgLS1n aXQgYS94ZW4vYXJjaC94ODYvbW0vaGFwL25lc3RlZF9oYXAuYyBiL3hlbi9hcmNoL3g4Ni9tbS9o YXAvbmVzdGVkX2hhcC5jCmluZGV4IDljZWU1YTAuLmJiYjZkODUgMTAwNjQ0Ci0tLSBhL3hlbi9h cmNoL3g4Ni9tbS9oYXAvbmVzdGVkX2hhcC5jCisrKyBiL3hlbi9hcmNoL3g4Ni9tbS9oYXAvbmVz dGVkX2hhcC5jCkBAIC0xNzQsNyArMTc0LDcgQEAgbmVzdGVkaGFwX3dhbGtfTDBfcDJtKHN0cnVj dCBwMm1fZG9tYWluICpwMm0sIHBhZGRyX3QgTDFfZ3BhLCBwYWRkcl90ICpMMF9ncGEsCiAgICAg aWYgKCAqcDJtdCA9PSBwMm1fbW1pb19kaXJlY3QgKQogICAgICAgICBnb3RvIGRpcmVjdF9tbWlv X291dDsKICAgICByYyA9IE5FU1RFREhWTV9QQUdFRkFVTFRfTU1JTzsKLSAgICBpZiAoICpwMm10 ID09IHAybV9tbWlvX2RtICkKKyAgICBpZiAoICpwMm10ID09IHAybV9tbWlvX2RtIHx8ICpwMm10 ID09IHAybV9pb3JlcV9zZXJ2ZXIgKQogICAgICAgICBnb3RvIG91dDsKIAogICAgIHJjID0gTkVT VEVESFZNX1BBR0VGQVVMVF9MMF9FUlJPUjsKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9tbS9w Mm0tZXB0LmMgYi94ZW4vYXJjaC94ODYvbW0vcDJtLWVwdC5jCmluZGV4IDM4MGVjMjUuLmI4MDM2 OTQgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9tbS9wMm0tZXB0LmMKKysrIGIveGVuL2FyY2gv eDg2L21tL3AybS1lcHQuYwpAQCAtMTMyLDYgKzEzMiwxMiBAQCBzdGF0aWMgdm9pZCBlcHRfcDJt X3R5cGVfdG9fZmxhZ3Moc3RydWN0IHAybV9kb21haW4gKnAybSwgZXB0X2VudHJ5X3QgKmVudHJ5 LAogICAgICAgICAgICAgZW50cnktPnIgPSBlbnRyeS0+dyA9IGVudHJ5LT54ID0gMTsKICAgICAg ICAgICAgIGVudHJ5LT5hID0gZW50cnktPmQgPSAhIWNwdV9oYXNfdm14X2VwdF9hZDsKICAgICAg ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIHAybV9pb3JlcV9zZXJ2ZXI6CisgICAgICAgICAg ICBlbnRyeS0+ciA9IGVudHJ5LT54ID0gMTsKKyAgICAgICAgICAgIGVudHJ5LT53ID0gIShwMm0t PmlvcmVxLmZsYWdzICYgUDJNX0lPUkVRX0hBTkRMRV9XUklURV9BQ0NFU1MpOworICAgICAgICAg ICAgZW50cnktPmEgPSAhIWNwdV9oYXNfdm14X2VwdF9hZDsKKyAgICAgICAgICAgIGVudHJ5LT5k ID0gZW50cnktPncgJiYgY3B1X2hhc192bXhfZXB0X2FkOworICAgICAgICAgICAgYnJlYWs7CiAg ICAgICAgIGNhc2UgcDJtX21taW9fZGlyZWN0OgogICAgICAgICAgICAgZW50cnktPnIgPSBlbnRy eS0+eCA9IDE7CiAgICAgICAgICAgICBlbnRyeS0+dyA9ICFyYW5nZXNldF9jb250YWluc19zaW5n bGV0b24obW1pb19yb19yYW5nZXMsCkBAIC0xNzEsNyArMTc3LDYgQEAgc3RhdGljIHZvaWQgZXB0 X3AybV90eXBlX3RvX2ZsYWdzKHN0cnVjdCBwMm1fZG9tYWluICpwMm0sIGVwdF9lbnRyeV90ICpl bnRyeSwKICAgICAgICAgICAgIGVudHJ5LT5hID0gZW50cnktPmQgPSAhIWNwdV9oYXNfdm14X2Vw dF9hZDsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIHAybV9ncmFudF9tYXBfcm86 Ci0gICAgICAgIGNhc2UgcDJtX2lvcmVxX3NlcnZlcjoKICAgICAgICAgICAgIGVudHJ5LT5yID0g MTsKICAgICAgICAgICAgIGVudHJ5LT53ID0gZW50cnktPnggPSAwOwogICAgICAgICAgICAgZW50 cnktPmEgPSAhIWNwdV9oYXNfdm14X2VwdF9hZDsKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9t bS9wMm0tcHQuYyBiL3hlbi9hcmNoL3g4Ni9tbS9wMm0tcHQuYwppbmRleCBlYWJkMmUzLi5iZjc1 YWZhIDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvbW0vcDJtLXB0LmMKKysrIGIveGVuL2FyY2gv eDg2L21tL3AybS1wdC5jCkBAIC03Miw3ICs3Miw5IEBAIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBs b25nIHBndFtdID0gewogICAgIFBHVF9sM19wYWdlX3RhYmxlCiB9OwogCi1zdGF0aWMgdW5zaWdu ZWQgbG9uZyBwMm1fdHlwZV90b19mbGFncyhwMm1fdHlwZV90IHQsIG1mbl90IG1mbiwKK3N0YXRp YyB1bnNpZ25lZCBsb25nIHAybV90eXBlX3RvX2ZsYWdzKGNvbnN0IHN0cnVjdCBwMm1fZG9tYWlu ICpwMm0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwMm1fdHlwZV90 IHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZm5fdCBtZm4sCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgbGV2ZWwp CiB7CiAgICAgdW5zaWduZWQgbG9uZyBmbGFnczsKQEAgLTk0LDggKzk2LDE2IEBAIHN0YXRpYyB1 bnNpZ25lZCBsb25nIHAybV90eXBlX3RvX2ZsYWdzKHAybV90eXBlX3QgdCwgbWZuX3QgbWZuLAog ICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVybiBmbGFncyB8IF9QQUdFX05YX0JJVDsKICAgICBj YXNlIHAybV9ncmFudF9tYXBfcm86Ci0gICAgY2FzZSBwMm1faW9yZXFfc2VydmVyOgogICAgICAg ICByZXR1cm4gZmxhZ3MgfCBQMk1fQkFTRV9GTEFHUyB8IF9QQUdFX05YX0JJVDsKKyAgICBjYXNl IHAybV9pb3JlcV9zZXJ2ZXI6CisgICAgeworICAgICAgICBmbGFncyB8PSBQMk1fQkFTRV9GTEFH UyB8IF9QQUdFX1JXOworCisgICAgICAgIGlmICggcDJtLT5pb3JlcS5mbGFncyAmIFAyTV9JT1JF UV9IQU5ETEVfV1JJVEVfQUNDRVNTICkKKyAgICAgICAgICAgIHJldHVybiBmbGFncyAmIH5fUEFH RV9SVzsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmV0dXJuIGZsYWdzOworICAgIH0KICAg ICBjYXNlIHAybV9yYW1fcm86CiAgICAgY2FzZSBwMm1fcmFtX2xvZ2RpcnR5OgogICAgIGNhc2Ug cDJtX3JhbV9zaGFyZWQ6CkBAIC00NDIsNyArNDUyLDggQEAgc3RhdGljIGludCBkb19yZWNhbGMo c3RydWN0IHAybV9kb21haW4gKnAybSwgdW5zaWduZWQgbG9uZyBnZm4pCiAgICAgICAgICAgICBw Mm1fdHlwZV90IHAybXQgPSBwMm1faXNfbG9nZGlydHlfcmFuZ2UocDJtLCBnZm4gJiBtYXNrLCBn Zm4gfCB+bWFzaykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gcDJtX3JhbV9sb2dk aXJ0eSA6IHAybV9yYW1fcnc7CiAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIG1mbiA9IGwxZV9n ZXRfcGZuKGUpOwotICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBmbGFncyA9IHAybV90eXBlX3Rv X2ZsYWdzKHAybXQsIF9tZm4obWZuKSwgbGV2ZWwpOworICAgICAgICAgICAgdW5zaWduZWQgbG9u ZyBmbGFncyA9IHAybV90eXBlX3RvX2ZsYWdzKHAybSwgcDJtdCwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfbWZuKG1mbiksIGxldmVsKTsKIAog ICAgICAgICAgICAgaWYgKCBsZXZlbCApCiAgICAgICAgICAgICB7CkBAIC01NzksNyArNTkwLDcg QEAgcDJtX3B0X3NldF9lbnRyeShzdHJ1Y3QgcDJtX2RvbWFpbiAqcDJtLCB1bnNpZ25lZCBsb25n IGdmbiwgbWZuX3QgbWZuLAogICAgICAgICBBU1NFUlQoIW1mbl92YWxpZChtZm4pIHx8IHAybXQg IT0gcDJtX21taW9fZGlyZWN0KTsKICAgICAgICAgbDNlX2NvbnRlbnQgPSBtZm5fdmFsaWQobWZu KSB8fCBwMm1fYWxsb3dzX2ludmFsaWRfbWZuKHAybXQpCiAgICAgICAgICAgICA/IGwzZV9mcm9t X3BmbihtZm5feChtZm4pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgcDJtX3R5cGVfdG9f ZmxhZ3MocDJtdCwgbWZuLCAyKSB8IF9QQUdFX1BTRSkKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgIHAybV90eXBlX3RvX2ZsYWdzKHAybSwgcDJtdCwgbWZuLCAyKSB8IF9QQUdFX1BTRSkKICAg ICAgICAgICAgIDogbDNlX2VtcHR5KCk7CiAgICAgICAgIGVudHJ5X2NvbnRlbnQubDEgPSBsM2Vf Y29udGVudC5sMzsKIApAQCAtNjE1LDcgKzYyNiw3IEBAIHAybV9wdF9zZXRfZW50cnkoc3RydWN0 IHAybV9kb21haW4gKnAybSwgdW5zaWduZWQgbG9uZyBnZm4sIG1mbl90IG1mbiwKIAogICAgICAg ICBpZiAoIG1mbl92YWxpZChtZm4pIHx8IHAybV9hbGxvd3NfaW52YWxpZF9tZm4ocDJtdCkgKQog ICAgICAgICAgICAgZW50cnlfY29udGVudCA9IHAybV9sMWVfZnJvbV9wZm4obWZuX3gobWZuKSwK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAybV90eXBlX3Rv X2ZsYWdzKHAybXQsIG1mbiwgMCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBwMm1fdHlwZV90b19mbGFncyhwMm0sIHAybXQsIG1mbiwgMCkpOwogICAgICAgICBl bHNlCiAgICAgICAgICAgICBlbnRyeV9jb250ZW50ID0gbDFlX2VtcHR5KCk7CiAKQEAgLTY1MSw3 ICs2NjIsNyBAQCBwMm1fcHRfc2V0X2VudHJ5KHN0cnVjdCBwMm1fZG9tYWluICpwMm0sIHVuc2ln bmVkIGxvbmcgZ2ZuLCBtZm5fdCBtZm4sCiAgICAgICAgIEFTU0VSVCghbWZuX3ZhbGlkKG1mbikg fHwgcDJtdCAhPSBwMm1fbW1pb19kaXJlY3QpOwogICAgICAgICBpZiAoIG1mbl92YWxpZChtZm4p IHx8IHAybV9hbGxvd3NfaW52YWxpZF9tZm4ocDJtdCkgKQogICAgICAgICAgICAgbDJlX2NvbnRl bnQgPSBsMmVfZnJvbV9wZm4obWZuX3gobWZuKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHAybV90eXBlX3RvX2ZsYWdzKHAybXQsIG1mbiwgMSkgfAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcDJtX3R5cGVfdG9fZmxhZ3MocDJtLCBwMm10 LCBtZm4sIDEpIHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9QQUdF X1BTRSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGwyZV9jb250ZW50ID0gbDJlX2VtcHR5 KCk7CmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvbW0vcDJtLmMgYi94ZW4vYXJjaC94ODYvbW0v cDJtLmMKaW5kZXggYjNmY2UxYi4uMjMxZDQxZCAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L21t L3AybS5jCisrKyBiL3hlbi9hcmNoL3g4Ni9tbS9wMm0uYwpAQCAtODMsNiArODMsOCBAQCBzdGF0 aWMgaW50IHAybV9pbml0aWFsaXNlKHN0cnVjdCBkb21haW4gKmQsIHN0cnVjdCBwMm1fZG9tYWlu ICpwMm0pCiAgICAgZWxzZQogICAgICAgICBwMm1fcHRfaW5pdChwMm0pOwogCisgICAgc3Bpbl9s b2NrX2luaXQoJnAybS0+aW9yZXEubG9jayk7CisKICAgICByZXR1cm4gcmV0OwogfQogCkBAIC0y ODksNiArMjkxLDc0IEBAIHZvaWQgcDJtX21lbW9yeV90eXBlX2NoYW5nZWQoc3RydWN0IGRvbWFp biAqZCkKICAgICB9CiB9CiAKK2ludCBwMm1fc2V0X2lvcmVxX3NlcnZlcihzdHJ1Y3QgZG9tYWlu ICpkLAorICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3MsCisgICAg ICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGh2bV9pb3JlcV9zZXJ2ZXIgKnMpCit7CisgICAg c3RydWN0IHAybV9kb21haW4gKnAybSA9IHAybV9nZXRfaG9zdHAybShkKTsKKyAgICBpbnQgcmM7 CisKKyAgICBzcGluX2xvY2soJnAybS0+aW9yZXEubG9jayk7CisKKyAgICBpZiAoIGZsYWdzID09 IDAgKQorICAgIHsKKyAgICAgICAgcmMgPSAtRUlOVkFMOworICAgICAgICBpZiAoIHAybS0+aW9y ZXEuc2VydmVyICE9IHMgKQorICAgICAgICAgICAgZ290byBvdXQ7CisKKyAgICAgICAgLyogVW5t YXAgaW9yZXEgc2VydmVyIGZyb20gcDJtIHR5cGUgYnkgcGFzc2luZyBmbGFncyB3aXRoIDAuICov CisgICAgICAgIHAybS0+aW9yZXEuc2VydmVyID0gTlVMTDsKKyAgICAgICAgcDJtLT5pb3JlcS5m bGFncyA9IDA7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIHJjID0gLUVCVVNZOwor ICAgICAgICBpZiAoIHAybS0+aW9yZXEuc2VydmVyICE9IE5VTEwgKQorICAgICAgICAgICAgZ290 byBvdXQ7CisKKyAgICAgICAgcDJtLT5pb3JlcS5zZXJ2ZXIgPSBzOworICAgICAgICBwMm0tPmlv cmVxLmZsYWdzID0gZmxhZ3M7CisgICAgfQorCisgICAgcmMgPSAwOworCisgb3V0OgorICAgIHNw aW5fdW5sb2NrKCZwMm0tPmlvcmVxLmxvY2spOworCisgICAgcmV0dXJuIHJjOworfQorCitzdHJ1 Y3QgaHZtX2lvcmVxX3NlcnZlciAqcDJtX2dldF9pb3JlcV9zZXJ2ZXIoc3RydWN0IGRvbWFpbiAq ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25l ZCBsb25nICpmbGFncykKK3sKKyAgICBzdHJ1Y3QgcDJtX2RvbWFpbiAqcDJtID0gcDJtX2dldF9o b3N0cDJtKGQpOworICAgIHN0cnVjdCBodm1faW9yZXFfc2VydmVyICpzOworCisgICAgc3Bpbl9s b2NrKCZwMm0tPmlvcmVxLmxvY2spOworCisgICAgcyA9IHAybS0+aW9yZXEuc2VydmVyOworICAg ICpmbGFncyA9IHAybS0+aW9yZXEuZmxhZ3M7CisKKyAgICBzcGluX3VubG9jaygmcDJtLT5pb3Jl cS5sb2NrKTsKKyAgICByZXR1cm4gczsKK30KKwordm9pZCBwMm1fZGVzdHJveV9pb3JlcV9zZXJ2 ZXIoc3RydWN0IGRvbWFpbiAqZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVj dCBodm1faW9yZXFfc2VydmVyICpzKQoreworICAgIHN0cnVjdCBwMm1fZG9tYWluICpwMm0gPSBw Mm1fZ2V0X2hvc3RwMm0oZCk7CisKKyAgICBzcGluX2xvY2soJnAybS0+aW9yZXEubG9jayk7CisK KyAgICBpZiAoIHAybS0+aW9yZXEuc2VydmVyID09IHMgKQorICAgIHsKKyAgICAgICAgcDJtLT5p b3JlcS5zZXJ2ZXIgPSBOVUxMOworICAgICAgICBwMm0tPmlvcmVxLmZsYWdzID0gMDsKKyAgICB9 CisKKyAgICBzcGluX3VubG9jaygmcDJtLT5pb3JlcS5sb2NrKTsKK30KKwogdm9pZCBwMm1fZW5h YmxlX2hhcmR3YXJlX2xvZ19kaXJ0eShzdHJ1Y3QgZG9tYWluICpkKQogewogICAgIHN0cnVjdCBw Mm1fZG9tYWluICpwMm0gPSBwMm1fZ2V0X2hvc3RwMm0oZCk7CmRpZmYgLS1naXQgYS94ZW4vYXJj aC94ODYvbW0vc2hhZG93L211bHRpLmMgYi94ZW4vYXJjaC94ODYvbW0vc2hhZG93L211bHRpLmMK aW5kZXggYzgxMzAyYS4uMmUwZDI1OCAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L21tL3NoYWRv dy9tdWx0aS5jCisrKyBiL3hlbi9hcmNoL3g4Ni9tbS9zaGFkb3cvbXVsdGkuYwpAQCAtMzIyNCw4 ICszMjI0LDcgQEAgc3RhdGljIGludCBzaF9wYWdlX2ZhdWx0KHN0cnVjdCB2Y3B1ICp2LAogICAg IH0KIAogICAgIC8qIE5lZWQgdG8gaGFuZCBvZmYgZGV2aWNlLW1vZGVsIE1NSU8gdG8gdGhlIGRl dmljZSBtb2RlbCAqLwotICAgIGlmICggcDJtdCA9PSBwMm1fbW1pb19kbQotICAgICAgICAgfHwg KHAybXQgPT0gcDJtX2lvcmVxX3NlcnZlciAmJiBmdCA9PSBmdF9kZW1hbmRfd3JpdGUpICkKKyAg ICBpZiAoIHAybXQgPT0gcDJtX21taW9fZG0gKQogICAgIHsKICAgICAgICAgZ3BhID0gZ3Vlc3Rf d2Fsa190b19ncGEoJmd3KTsKICAgICAgICAgZ290byBtbWlvOwpkaWZmIC0tZ2l0IGEveGVuL2lu Y2x1ZGUvYXNtLXg4Ni9odm0vaW9yZXEuaCBiL3hlbi9pbmNsdWRlL2FzbS14ODYvaHZtL2lvcmVx LmgKaW5kZXggYTE3NzhlZS4uYjAzYzY0ZCAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUvYXNtLXg4 Ni9odm0vaW9yZXEuaAorKysgYi94ZW4vaW5jbHVkZS9hc20teDg2L2h2bS9pb3JlcS5oCkBAIC0z Niw2ICszNiw4IEBAIGludCBodm1fbWFwX2lvX3JhbmdlX3RvX2lvcmVxX3NlcnZlcihzdHJ1Y3Qg ZG9tYWluICpkLCBpb3NlcnZpZF90IGlkLAogaW50IGh2bV91bm1hcF9pb19yYW5nZV9mcm9tX2lv cmVxX3NlcnZlcihzdHJ1Y3QgZG9tYWluICpkLCBpb3NlcnZpZF90IGlkLAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCB0eXBlLCB1aW50NjRfdCBzdGFy dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDY0X3QgZW5k KTsKK2ludCBodm1fbWFwX21lbV90eXBlX3RvX2lvcmVxX3NlcnZlcihzdHJ1Y3QgZG9tYWluICpk LCBpb3NlcnZpZF90IGlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVp bnQxNl90IHR5cGUsIHVpbnQzMl90IGZsYWdzKTsKIGludCBodm1fc2V0X2lvcmVxX3NlcnZlcl9z dGF0ZShzdHJ1Y3QgZG9tYWluICpkLCBpb3NlcnZpZF90IGlkLAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGJvb2xfdCBlbmFibGVkKTsKIApkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUv YXNtLXg4Ni9wMm0uaCBiL3hlbi9pbmNsdWRlL2FzbS14ODYvcDJtLmgKaW5kZXggZWUyZWE5Yy4u MzU4NjA1YiAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9wMm0uaAorKysgYi94ZW4v aW5jbHVkZS9hc20teDg2L3AybS5oCkBAIC04OSw3ICs4OSw4IEBAIHR5cGVkZWYgdW5zaWduZWQg aW50IHAybV9xdWVyeV90OwogICAgICAgICAgICAgICAgICAgICAgICB8IHAybV90b19tYXNrKHAy bV9yYW1fcGFnaW5nX291dCkgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgIHwgcDJtX3Rv X21hc2socDJtX3JhbV9wYWdlZCkgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAg fCBwMm1fdG9fbWFzayhwMm1fcmFtX3BhZ2luZ19pbikgICAgICAgXAotICAgICAgICAgICAgICAg ICAgICAgICB8IHAybV90b19tYXNrKHAybV9yYW1fc2hhcmVkKSkKKyAgICAgICAgICAgICAgICAg ICAgICAgfCBwMm1fdG9fbWFzayhwMm1fcmFtX3NoYXJlZCkgICAgICAgICAgXAorICAgICAgICAg ICAgICAgICAgICAgICB8IHAybV90b19tYXNrKHAybV9pb3JlcV9zZXJ2ZXIpKQogCiAvKiBUeXBl cyB0aGF0IHJlcHJlc2VudCBhIHBoeXNtYXAgaG9sZSB0aGF0IGlzIG9rIHRvIHJlcGxhY2Ugd2l0 aCBhIHNoYXJlZAogICogZW50cnkgKi8KQEAgLTExMSw4ICsxMTIsNyBAQCB0eXBlZGVmIHVuc2ln bmVkIGludCBwMm1fcXVlcnlfdDsKICNkZWZpbmUgUDJNX1JPX1RZUEVTIChwMm1fdG9fbWFzayhw Mm1fcmFtX2xvZ2RpcnR5KSAgICAgXAogICAgICAgICAgICAgICAgICAgICAgIHwgcDJtX3RvX21h c2socDJtX3JhbV9ybykgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgfCBwMm1fdG9f bWFzayhwMm1fZ3JhbnRfbWFwX3JvKSAgIFwKLSAgICAgICAgICAgICAgICAgICAgICB8IHAybV90 b19tYXNrKHAybV9yYW1fc2hhcmVkKSAgICAgXAotICAgICAgICAgICAgICAgICAgICAgIHwgcDJt X3RvX21hc2socDJtX2lvcmVxX3NlcnZlcikpCisgICAgICAgICAgICAgICAgICAgICAgfCBwMm1f dG9fbWFzayhwMm1fcmFtX3NoYXJlZCkpCiAKIC8qIFdyaXRlLWRpc2NhcmQgdHlwZXMsIHdoaWNo IHNob3VsZCBkaXNjYXJkIHRoZSB3cml0ZSBvcGVyYXRpb25zICovCiAjZGVmaW5lIFAyTV9ESVND QVJEX1dSSVRFX1RZUEVTIChwMm1fdG9fbWFzayhwMm1fcmFtX3JvKSAgICAgXApAQCAtMzIwLDYg KzMyMCwyNCBAQCBzdHJ1Y3QgcDJtX2RvbWFpbiB7CiAgICAgICAgIHN0cnVjdCBlcHRfZGF0YSBl cHQ7CiAgICAgICAgIC8qIE5QVC1lcXVpdmFsZW50IHN0cnVjdHVyZSBjb3VsZCBiZSBhZGRlZCBo ZXJlLiAqLwogICAgIH07CisKKyAgICBzdHJ1Y3QgeworICAgICAgICBzcGlubG9ja190IGxvY2s7 CisgICAgICAgIC8qCisgICAgICAgICAqIGlvcmVxIHNlcnZlciB3aG8ncyByZXNwb25zaWJsZSBm b3IgdGhlIGVtdWxhdGlvbiBvZgorICAgICAgICAgKiBnZm5zIHdpdGggc3BlY2lmaWMgcDJtIHR5 cGUoZm9yIG5vdywgcDJtX2lvcmVxX3NlcnZlcikuCisgICAgICAgICAqLworICAgICAgICBzdHJ1 Y3QgaHZtX2lvcmVxX3NlcnZlciAqc2VydmVyOworICAgICAgICAvKgorICAgICAgICAgKiBmbGFn cyBzcGVjaWZpZXMgd2hldGhlciByZWFkLCB3cml0ZSBvciBib3RoIG9wZXJhdGlvbnMKKyAgICAg ICAgICogYXJlIHRvIGJlIGVtdWxhdGVkIGJ5IGFuIGlvcmVxIHNlcnZlci4KKyAgICAgICAgICov CisgICAgICAgIHVuc2lnbmVkIGludCBmbGFnczsKKworI2RlZmluZSBQMk1fSU9SRVFfSEFORExF X1dSSVRFX0FDQ0VTUyBIVk1PUF9JT1JFUV9NRU1fQUNDRVNTX1dSSVRFCisjZGVmaW5lIFAyTV9J T1JFUV9IQU5ETEVfUkVBRF9BQ0NFU1MgIEhWTU9QX0lPUkVRX01FTV9BQ0NFU1NfUkVBRAorCisg ICAgfSBpb3JlcTsKIH07CiAKIC8qIGdldCBob3N0IHAybSB0YWJsZSAqLwpAQCAtODIxLDYgKzgz OSwxMiBAQCBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCBwMm1fZ2V0X2lvbW11X2ZsYWdzKHAy bV90eXBlX3QgcDJtdCkKICAgICByZXR1cm4gZmxhZ3M7CiB9CiAKK2ludCBwMm1fc2V0X2lvcmVx X3NlcnZlcihzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIGZsYWdzLAorICAgICAgICAg ICAgICAgICAgICAgICAgIHN0cnVjdCBodm1faW9yZXFfc2VydmVyICpzKTsKK3N0cnVjdCBodm1f aW9yZXFfc2VydmVyICpwMm1fZ2V0X2lvcmVxX3NlcnZlcihzdHJ1Y3QgZG9tYWluICpkLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcg KmZsYWdzKTsKK3ZvaWQgcDJtX2Rlc3Ryb3lfaW9yZXFfc2VydmVyKHN0cnVjdCBkb21haW4gKmQs IHN0cnVjdCBodm1faW9yZXFfc2VydmVyICpzKTsKKwogI2VuZGlmIC8qIF9YRU5fUDJNX0ggKi8K IAogLyoKZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL3B1YmxpYy9odm0vaHZtX29wLmggYi94ZW4v aW5jbHVkZS9wdWJsaWMvaHZtL2h2bV9vcC5oCmluZGV4IGIzZTQ1Y2YuLjZhNmRlNDMgMTAwNjQ0 Ci0tLSBhL3hlbi9pbmNsdWRlL3B1YmxpYy9odm0vaHZtX29wLmgKKysrIGIveGVuL2luY2x1ZGUv cHVibGljL2h2bS9odm1fb3AuaApAQCAtMzgzLDYgKzM4MywzNyBAQCBzdHJ1Y3QgeGVuX2h2bV9z ZXRfaW9yZXFfc2VydmVyX3N0YXRlIHsKIHR5cGVkZWYgc3RydWN0IHhlbl9odm1fc2V0X2lvcmVx X3NlcnZlcl9zdGF0ZSB4ZW5faHZtX3NldF9pb3JlcV9zZXJ2ZXJfc3RhdGVfdDsKIERFRklORV9Y RU5fR1VFU1RfSEFORExFKHhlbl9odm1fc2V0X2lvcmVxX3NlcnZlcl9zdGF0ZV90KTsKIAorLyoK KyAqIEhWTU9QX21hcF9tZW1fdHlwZV90b19pb3JlcV9zZXJ2ZXIgOiBtYXAgb3IgdW5tYXAgdGhl IElPUkVRIFNlcnZlciA8aWQ+CisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgdG8gc3BlY2lmaWMgbWVtcm95IHR5cGUgPHR5cGU+CisgKiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgZm9yIHNwZWNpZmljIGFjY2Vzc2VzIDxmbGFncz4KKyAqCisgKiBG b3Igbm93LCBmbGFncyBvbmx5IGFjY2VwdCB0aGUgdmFsdWUgb2YgSFZNT1BfSU9SRVFfTUVNX0FD Q0VTU19XUklURSwKKyAqIHdoaWNoIG1lYW5zIG9ubHkgd3JpdGUgb3BlcmF0aW9ucyBhcmUgdG8g YmUgZm9yd2FyZGVkIHRvIGFuIGlvcmVxIHNlcnZlci4KKyAqIFN1cHBvcnQgZm9yIHRoZSBlbXVs YXRpb24gb2YgcmVhZCBvcGVyYXRpb25zIGNhbiBiZSBhZGRlZCB3aGVuIGFuIGlvcmVxCisgKiBz ZXJ2ZXIgaGFzIHN1Y2ggcmVxdWlyZW1lbnQgaW4gZnV0dXJlLgorICovCisjZGVmaW5lIEhWTU9Q X21hcF9tZW1fdHlwZV90b19pb3JlcV9zZXJ2ZXIgMjYKK3N0cnVjdCB4ZW5faHZtX21hcF9tZW1f dHlwZV90b19pb3JlcV9zZXJ2ZXIgeworICAgIGRvbWlkX3QgZG9taWQ7ICAgICAgLyogSU4gLSBk b21haW4gdG8gYmUgc2VydmljZWQgKi8KKyAgICBpb3NlcnZpZF90IGlkOyAgICAgIC8qIElOIC0g aW9yZXEgc2VydmVyIGlkICovCisgICAgdWludDE2X3QgdHlwZTsgICAgICAvKiBJTiAtIG1lbW9y eSB0eXBlICovCisgICAgdWludDE2X3QgcGFkOworICAgIHVpbnQzMl90IGZsYWdzOyAgICAgLyog SU4gLSB0eXBlcyBvZiBhY2Nlc3NlcyB0byBiZSBmb3J3YXJkZWQgdG8gdGhlCisgICAgICAgICAg ICAgICAgICAgICAgICAgICBpb3JlcSBzZXJ2ZXIuIGZsYWdzIHdpdGggMCBtZWFucyB0byB1bm1h cCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGlvcmVxIHNlcnZlciAqLworI2RlZmlu ZSBfSFZNT1BfSU9SRVFfTUVNX0FDQ0VTU19SRUFEIDAKKyNkZWZpbmUgSFZNT1BfSU9SRVFfTUVN X0FDQ0VTU19SRUFEIFwKKyAgICAoMXUgPDwgX0hWTU9QX0lPUkVRX01FTV9BQ0NFU1NfUkVBRCkK KworI2RlZmluZSBfSFZNT1BfSU9SRVFfTUVNX0FDQ0VTU19XUklURSAxCisjZGVmaW5lIEhWTU9Q X0lPUkVRX01FTV9BQ0NFU1NfV1JJVEUgXAorICAgICgxdSA8PCBfSFZNT1BfSU9SRVFfTUVNX0FD Q0VTU19XUklURSkKK307Cit0eXBlZGVmIHN0cnVjdCB4ZW5faHZtX21hcF9tZW1fdHlwZV90b19p b3JlcV9zZXJ2ZXIKKyAgICB4ZW5faHZtX21hcF9tZW1fdHlwZV90b19pb3JlcV9zZXJ2ZXJfdDsK K0RFRklORV9YRU5fR1VFU1RfSEFORExFKHhlbl9odm1fbWFwX21lbV90eXBlX3RvX2lvcmVxX3Nl cnZlcl90KTsKKwogI2VuZGlmIC8qIGRlZmluZWQoX19YRU5fXykgfHwgZGVmaW5lZChfX1hFTl9U T09MU19fKSAqLwogCiAjaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX3g4Nl82NF9f KQotLSAKMS45LjEKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHA6 Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=