From mboxrd@z Thu Jan 1 00:00:00 1970 From: Yu Zhang Subject: [PATCH 3/3] Add HVMOP to map guest ram with p2m_ioreq_server to an ioreq server Date: Wed, 16 Mar 2016 20:22:40 +0800 Message-ID: <1458130960-30109-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: 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@intel.com, keir@xen.org, jbeulich@suse.com, george.dunlap@eu.citrix.com, andrew.cooper3@citrix.com, tim@xen.org, Paul.Durrant@citrix.com, zhiyuan.lv@intel.com, jun.nakajima@intel.com List-Id: xen-devel@lists.xenproject.org QSBuZXcgSFZNT1AgLSBIVk1PUF9tYXBfbWVtX3R5cGVfdG9faW9yZXFfc2VydmVyLCBpcyBhZGRl ZCB0bwpsZXQgb25lIGlvcmVxIHNlcnZlciBjbGFpbSBpdHMgcmVzcG9uc2liaWxpdHkgZm9yIHRo ZSBoYW5kbGluZwpvZiBndWVzdCBwYWdlcyB3aXRoIHAybSB0eXBlIHAybV9pb3JlcV9zZXJ2ZXIu IFVzZXJzIG9mIHRoaXMKSFZNT1AgY2FuIHNwZWNpZnkgd2hldGhlciB0aGUgcDJtX2lvcmVxX3Nl cnZlciBpcyBzdXBwb3NlZCB0bwpoYW5kbGUgd3JpdGUgYWNjZXNzZXMgb3IgcmVhZCBvbmVzIGlu IGEgZmxhZy4gQnkgbm93LCB3ZSBvbmx5CnN1cHBvcnQgb25lIGlvcmVxIHNlcnZlciBmb3IgdGhp cyBwMm0gdHlwZSwgc28gb25jZSBhbiBpb3JlcQpzZXJ2ZXIgaGFzIGNsYWltZWQgaXRzIG93bmVy c2hpcCwgZm9sbG93aW5nIGNhbGxzIG9mIHRoZQpIVk1PUF9tYXBfbWVtX3R5cGVfdG9faW9yZXFf c2VydmVyIHdpbGwgZmFpbC4KCk5vdGU6IHRoaXMgSFZNT1AgZG9lcyBub3QgY2hhbmdlIHRoZSBw Mm0gdHlwZSBvZiBhbnkgZ3Vlc3QgcmFtCnBhZ2UsIHVudGlsIHRoZSBIVk1PUF9zZXRfbWVtX3R5 cGUgaXMgdHJpZ2dlcmVkLiBTbyBub3JtYWxseQp0aGUgc3RlcHMgd291bGQgYmUgdGhlIGJhY2tl bmQgZHJpdmVyIGZpcnN0IGNsYWltcyBpdHMgb3duZXJzaGlwCm9mIGd1ZXN0IHJhbSBwYWdlcyB3 aXRoIHAybV9pb3JlcV9zZXJ2ZXIgdHlwZS4gQXQgdGhlbiBzZXRzIHRoZQptZW1vcnkgdHlwZSB0 byBwMm1faW9yZXFfc2VydmVyIGZvciBzcGVjaWZpZWQgZ3Vlc3QgcmFtIHBhZ2VzLgoKU2lnbmVk LW9mZi1ieTogUGF1bCBEdXJyYW50IDxwYXVsLmR1cnJhbnRAY2l0cml4LmNvbT4KU2lnbmVkLW9m Zi1ieTogWXUgWmhhbmcgPHl1LmMuemhhbmdAbGludXguaW50ZWwuY29tPgotLS0KIHhlbi9hcmNo L3g4Ni9odm0vZW11bGF0ZS5jICAgICAgIHwgMTE4ICsrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKystLQogeGVuL2FyY2gveDg2L2h2bS9odm0uYyAgICAgICAgICAgfCAgOTIgKysr KysrKysrKysrKysrKysrKysrKysrKysrKystCiB4ZW4vYXJjaC94ODYvbW0vaGFwL25lc3RlZF9o YXAuYyB8ICAgMiArLQogeGVuL2FyY2gveDg2L21tL3AybS1lcHQuYyAgICAgICAgfCAgIDkgKyst CiB4ZW4vYXJjaC94ODYvbW0vcDJtLXB0LmMgICAgICAgICB8ICAyNSArKysrKystLS0KIHhlbi9h cmNoL3g4Ni9tbS9wMm0uYyAgICAgICAgICAgIHwgIDc5ICsrKysrKysrKysrKysrKysrKysrKysr KysrCiB4ZW4vYXJjaC94ODYvbW0vc2hhZG93L211bHRpLmMgICB8ICAyNiArKysrKysrKy0KIHhl bi9pbmNsdWRlL2FzbS14ODYvcDJtLmggICAgICAgIHwgIDE5ICsrKysrKy0KIHhlbi9pbmNsdWRl L3B1YmxpYy9odm0vaHZtX29wLmggIHwgIDI0ICsrKysrKysrCiA5IGZpbGVzIGNoYW5nZWQsIDM3 NCBpbnNlcnRpb25zKCspLCAyMCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94 ODYvaHZtL2VtdWxhdGUuYyBiL3hlbi9hcmNoL3g4Ni9odm0vZW11bGF0ZS5jCmluZGV4IGRkYzgw MDcuLmFjZTIzYmEgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9odm0vZW11bGF0ZS5jCisrKyBi L3hlbi9hcmNoL3g4Ni9odm0vZW11bGF0ZS5jCkBAIC05NCwxMSArOTQsNjkgQEAgc3RhdGljIGNv bnN0IHN0cnVjdCBodm1faW9faGFuZGxlciBudWxsX2hhbmRsZXIgPSB7CiAgICAgLm9wcyA9ICZu dWxsX29wcwogfTsKIAorc3RhdGljIGludCBtZW1fcmVhZChjb25zdCBzdHJ1Y3QgaHZtX2lvX2hh bmRsZXIgKmlvX2hhbmRsZXIsCisgICAgICAgICAgICAgICAgICAgIHVpbnQ2NF90IGFkZHIsCisg ICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHNpemUsCisgICAgICAgICAgICAgICAgICAgIHVp bnQ2NF90ICpkYXRhKQoreworICAgIHN0cnVjdCBkb21haW4gKmN1cnJkID0gY3VycmVudC0+ZG9t YWluOworICAgIHVuc2lnbmVkIGxvbmcgZ21mbiA9IHBhZGRyX3RvX3BmbihhZGRyKTsKKyAgICB1 bnNpZ25lZCBsb25nIG9mZnNldCA9IGFkZHIgJiB+UEFHRV9NQVNLOworICAgIHN0cnVjdCBwYWdl X2luZm8gKnBhZ2UgPSBnZXRfcGFnZV9mcm9tX2dmbihjdXJyZCwgZ21mbiwgTlVMTCwgUDJNX1VO U0hBUkUpOworICAgIHVpbnQ4X3QgKnA7CisKKyAgICBpZiAoICFwYWdlICkKKyAgICAgICAgcmV0 dXJuIFg4NkVNVUxfVU5IQU5ETEVBQkxFOworCisgICAgcCA9IF9fbWFwX2RvbWFpbl9wYWdlKHBh Z2UpOworICAgIHAgKz0gb2Zmc2V0OworICAgIG1lbWNweShkYXRhLCBwLCBzaXplKTsKKworICAg IHVubWFwX2RvbWFpbl9wYWdlKHApOworICAgIHB1dF9wYWdlKHBhZ2UpOworCisgICAgcmV0dXJu IFg4NkVNVUxfT0tBWTsKK30KKworc3RhdGljIGludCBtZW1fd3JpdGUoY29uc3Qgc3RydWN0IGh2 bV9pb19oYW5kbGVyICpoYW5kbGVyLAorICAgICAgICAgICAgICAgICAgICAgdWludDY0X3QgYWRk ciwKKyAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHNpemUsCisgICAgICAgICAgICAgICAg ICAgICB1aW50NjRfdCBkYXRhKQoreworICAgIHN0cnVjdCBkb21haW4gKmN1cnJkID0gY3VycmVu dC0+ZG9tYWluOworICAgIHVuc2lnbmVkIGxvbmcgZ21mbiA9IHBhZGRyX3RvX3BmbihhZGRyKTsK KyAgICB1bnNpZ25lZCBsb25nIG9mZnNldCA9IGFkZHIgJiB+UEFHRV9NQVNLOworICAgIHN0cnVj dCBwYWdlX2luZm8gKnBhZ2UgPSBnZXRfcGFnZV9mcm9tX2dmbihjdXJyZCwgZ21mbiwgTlVMTCwg UDJNX1VOU0hBUkUpOworICAgIHVpbnQ4X3QgKnA7CisKKyAgICBpZiAoICFwYWdlICkKKyAgICAg ICAgcmV0dXJuIFg4NkVNVUxfVU5IQU5ETEVBQkxFOworCisgICAgcCA9IF9fbWFwX2RvbWFpbl9w YWdlKHBhZ2UpOworICAgIHAgKz0gb2Zmc2V0OworICAgIG1lbWNweShwLCAmZGF0YSwgc2l6ZSk7 CisKKyAgICB1bm1hcF9kb21haW5fcGFnZShwKTsKKyAgICBwdXRfcGFnZShwYWdlKTsKKworICAg IHJldHVybiBYODZFTVVMX09LQVk7Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaHZtX2lvX29w cyBtZW1fb3BzID0geworICAgIC5yZWFkID0gbWVtX3JlYWQsCisgICAgLndyaXRlID0gbWVtX3dy aXRlCit9OworCitzdGF0aWMgY29uc3Qgc3RydWN0IGh2bV9pb19oYW5kbGVyIG1lbV9oYW5kbGVy ID0geworICAgIC5vcHMgPSAmbWVtX29wcworfTsKKwogc3RhdGljIGludCBodm1lbXVsX2RvX2lv KAogICAgIGJvb2xfdCBpc19tbWlvLCBwYWRkcl90IGFkZHIsIHVuc2lnbmVkIGxvbmcgcmVwcywg dW5zaWduZWQgaW50IHNpemUsCiAgICAgdWludDhfdCBkaXIsIGJvb2xfdCBkZiwgYm9vbF90IGRh dGFfaXNfYWRkciwgdWludHB0cl90IGRhdGEpCiB7CiAgICAgc3RydWN0IHZjcHUgKmN1cnIgPSBj dXJyZW50OworICAgIHN0cnVjdCBkb21haW4gKmN1cnJkID0gY3Vyci0+ZG9tYWluOwogICAgIHN0 cnVjdCBodm1fdmNwdV9pbyAqdmlvID0gJmN1cnItPmFyY2guaHZtX3ZjcHUuaHZtX2lvOwogICAg IGlvcmVxX3QgcCA9IHsKICAgICAgICAgLnR5cGUgPSBpc19tbWlvID8gSU9SRVFfVFlQRV9DT1BZ IDogSU9SRVFfVFlQRV9QSU8sCkBAIC0xNDAsNyArMTk4LDcgQEAgc3RhdGljIGludCBodm1lbXVs X2RvX2lvKAogICAgICAgICAgICAgIChwLmRpciAhPSBkaXIpIHx8CiAgICAgICAgICAgICAgKHAu ZGYgIT0gZGYpIHx8CiAgICAgICAgICAgICAgKHAuZGF0YV9pc19wdHIgIT0gZGF0YV9pc19hZGRy KSApCi0gICAgICAgICAgICBkb21haW5fY3Jhc2goY3Vyci0+ZG9tYWluKTsKKyAgICAgICAgICAg IGRvbWFpbl9jcmFzaChjdXJyZCk7CiAKICAgICAgICAgaWYgKCBkYXRhX2lzX2FkZHIgKQogICAg ICAgICAgICAgcmV0dXJuIFg4NkVNVUxfVU5IQU5ETEVBQkxFOwpAQCAtMTY4LDEzICsyMjYsNjUg QEAgc3RhdGljIGludCBodm1lbXVsX2RvX2lvKAogICAgICAgICBicmVhazsKICAgICBjYXNlIFg4 NkVNVUxfVU5IQU5ETEVBQkxFOgogICAgIHsKLSAgICAgICAgc3RydWN0IGh2bV9pb3JlcV9zZXJ2 ZXIgKnMgPQotICAgICAgICAgICAgaHZtX3NlbGVjdF9pb3JlcV9zZXJ2ZXIoY3Vyci0+ZG9tYWlu LCAmcCk7CisgICAgICAgIHN0cnVjdCBodm1faW9yZXFfc2VydmVyICpzOworICAgICAgICBwMm1f dHlwZV90IHAybXQ7CisKKyAgICAgICAgaWYgKCBpc19tbWlvICkKKyAgICAgICAgeworICAgICAg ICAgICAgdW5zaWduZWQgbG9uZyBnbWZuID0gcGFkZHJfdG9fcGZuKGFkZHIpOworCisgICAgICAg ICAgICAodm9pZCkgZ2V0X2dmbl9xdWVyeV91bmxvY2tlZChjdXJyZCwgZ21mbiwgJnAybXQpOwor CisgICAgICAgICAgICBzd2l0Y2ggKCBwMm10ICkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg ICAgICBjYXNlIHAybV9pb3JlcV9zZXJ2ZXI6CisgICAgICAgICAgICAgICAgeworICAgICAgICAg ICAgICAgICAgICB1bnNpZ25lZCBsb25nIGZsYWdzOworCisgICAgICAgICAgICAgICAgICAgIHAy bV9nZXRfaW9yZXFfc2VydmVyKGN1cnJkLCBwMm10LCAmZmxhZ3MsICZzKTsKKworICAgICAgICAg ICAgICAgICAgICBpZiAoICFzICkKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisg ICAgICAgICAgICAgICAgICAgIGlmICggKGRpciA9PSBJT1JFUV9SRUFEICYmCisgICAgICAgICAg ICAgICAgICAgICAgICAgICEoZmxhZ3MgJiBQMk1fSU9SRVFfSEFORExFX1JFQURfQUNDRVNTKSkg fHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoZGlyID09IElPUkVRX1dSSVRFICYmCisgICAg ICAgICAgICAgICAgICAgICAgICAgICEoZmxhZ3MgJiBQMk1fSU9SRVFfSEFORExFX1dSSVRFX0FD Q0VTUykpICkKKyAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBOVUxMOworCisgICAgICAgICAg ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBjYXNl IHAybV9yYW1fcnc6CisgICAgICAgICAgICAgICAgICAgIHMgPSBOVUxMOworICAgICAgICAgICAg ICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAg ICAgICAgIHMgPSBodm1fc2VsZWN0X2lvcmVxX3NlcnZlcihjdXJyZCwgJnApOworICAgICAgICAg ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNl CisgICAgICAgIHsKKyAgICAgICAgICAgIHAybXQgPSBwMm1faW52YWxpZDsKKworICAgICAgICAg ICAgcyA9IGh2bV9zZWxlY3RfaW9yZXFfc2VydmVyKGN1cnJkLCAmcCk7CisgICAgICAgIH0KIAog ICAgICAgICAvKiBJZiB0aGVyZSBpcyBubyBzdWl0YWJsZSBiYWNraW5nIERNLCBqdXN0IGlnbm9y ZSBhY2Nlc3NlcyAqLwogICAgICAgICBpZiAoICFzICkKICAgICAgICAgewotICAgICAgICAgICAg cmMgPSBodm1fcHJvY2Vzc19pb19pbnRlcmNlcHQoJm51bGxfaGFuZGxlciwgJnApOworICAgICAg ICAgICAgc3dpdGNoICggcDJtdCApCisgICAgICAgICAgICB7CisgICAgICAgICAgICBjYXNlIHAy bV9pb3JlcV9zZXJ2ZXI6CisgICAgICAgICAgICBjYXNlIHAybV9yYW1fcnc6CisgICAgICAgICAg ICAgICAgcmMgPSBodm1fcHJvY2Vzc19pb19pbnRlcmNlcHQoJm1lbV9oYW5kbGVyLCAmcCk7Cisg ICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAg ICAgICAgcmMgPSBodm1fcHJvY2Vzc19pb19pbnRlcmNlcHQoJm51bGxfaGFuZGxlciwgJnApOwor ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCiAgICAgICAgICAgICB2aW8t PmlvX3JlcS5zdGF0ZSA9IFNUQVRFX0lPUkVRX05PTkU7CiAgICAgICAgIH0KICAgICAgICAgZWxz ZQpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2h2bS9odm0uYyBiL3hlbi9hcmNoL3g4Ni9odm0v aHZtLmMKaW5kZXggMDdlZWU0YS4uMjlkZGJjNCAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L2h2 bS9odm0uYworKysgYi94ZW4vYXJjaC94ODYvaHZtL2h2bS5jCkBAIC0xMjUyLDYgKzEyNTIsOCBA QCBzdGF0aWMgaW50IGh2bV9kZXN0cm95X2lvcmVxX3NlcnZlcihzdHJ1Y3QgZG9tYWluICpkLCBp b3NlcnZpZF90IGlkKQogCiAgICAgICAgIGRvbWFpbl9wYXVzZShkKTsKIAorICAgICAgICBwMm1f ZGVzdHJveV9pb3JlcV9zZXJ2ZXIoZCwgcyk7CisKICAgICAgICAgaHZtX2lvcmVxX3NlcnZlcl9k aXNhYmxlKHMsIDApOwogCiAgICAgICAgIGxpc3RfZGVsKCZzLT5saXN0X2VudHJ5KTsKQEAgLTE0 MTEsNiArMTQxMyw1NSBAQCBzdGF0aWMgaW50IGh2bV91bm1hcF9pb19yYW5nZV9mcm9tX2lvcmVx X3NlcnZlcihzdHJ1Y3QgZG9tYWluICpkLCBpb3NlcnZpZF90IGlkLAogICAgIHJldHVybiByYzsK IH0KIAorc3RhdGljIGludCBodm1fbWFwX21lbV90eXBlX3RvX2lvcmVxX3NlcnZlcihzdHJ1Y3Qg ZG9tYWluICpkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp b3NlcnZpZF90IGlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBodm1tZW1fdHlwZV90IHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHVpbnQzMl90IGZsYWdzKQoreworICAgIHN0cnVjdCBodm1faW9yZXFfc2VydmVy ICpzOworICAgIHAybV90eXBlX3QgcDJtdDsKKyAgICBpbnQgcmM7CisKKyAgICBzd2l0Y2ggKCB0 eXBlICkKKyAgICB7CisgICAgY2FzZSBIVk1NRU1faW9yZXFfc2VydmVyOgorICAgICAgICBwMm10 ID0gcDJtX2lvcmVxX3NlcnZlcjsKKyAgICAgICAgYnJlYWs7CisKKyAgICBkZWZhdWx0OgorICAg ICAgICByZXR1cm4gLUVJTlZBTDsKKyAgICB9CisKKyAgICBpZiAoIGZsYWdzICYgfihIVk1PUF9J T1JFUV9NRU1fQUNDRVNTX1JFQUQgfAorICAgICAgICAgICAgICAgICAgIEhWTU9QX0lPUkVRX01F TV9BQ0NFU1NfV1JJVEUpICkKKyAgICAgICAgcmV0dXJuIC1FSU5WQUw7CisKKyAgICBzcGluX2xv Y2soJmQtPmFyY2guaHZtX2RvbWFpbi5pb3JlcV9zZXJ2ZXIubG9jayk7CisKKyAgICByYyA9IC1F Tk9FTlQ7CisgICAgbGlzdF9mb3JfZWFjaF9lbnRyeSAoIHMsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICZkLT5hcmNoLmh2bV9kb21haW4uaW9yZXFfc2VydmVyLmxpc3QsCisgICAgICAgICAg ICAgICAgICAgICAgICAgIGxpc3RfZW50cnkgKQorICAgIHsKKyAgICAgICAgaWYgKCBzID09IGQt PmFyY2guaHZtX2RvbWFpbi5kZWZhdWx0X2lvcmVxX3NlcnZlciApCisgICAgICAgICAgICBjb250 aW51ZTsKKworICAgICAgICBpZiAoIHMtPmlkID09IGlkICkKKyAgICAgICAgeworICAgICAgICAg ICAgcmMgPSBwMm1fc2V0X2lvcmVxX3NlcnZlcihkLCBwMm10LCBmbGFncywgcyk7CisgICAgICAg ICAgICBpZiAoIHJjICkKKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgZ2Rw cmludGsoWEVOTE9HX0RFQlVHLCAiJXUgY2xhaW1lZCB0eXBlIHAybV9pb3JlcV9zZXJ2ZXJcbiIs CisgICAgICAgICAgICAgICAgICAgICBzLT5pZCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBz cGluX3VubG9jaygmZC0+YXJjaC5odm1fZG9tYWluLmlvcmVxX3NlcnZlci5sb2NrKTsKKworICAg IHJldHVybiByYzsKK30KKwogc3RhdGljIGludCBodm1fc2V0X2lvcmVxX3NlcnZlcl9zdGF0ZShz dHJ1Y3QgZG9tYWluICpkLCBpb3NlcnZpZF90IGlkLAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBib29sX3QgZW5hYmxlZCkKIHsKQEAgLTMxNzQsOSArMzIyNSw5IEBAIGlu dCBodm1faGFwX25lc3RlZF9wYWdlX2ZhdWx0KHBhZGRyX3QgZ3BhLCB1bnNpZ25lZCBsb25nIGds YSwKICAgICAgKiBJZiB0aGlzIEdGTiBpcyBlbXVsYXRlZCBNTUlPIG9yIG1hcmtlZCBhcyByZWFk LW9ubHksIHBhc3MgdGhlIGZhdWx0CiAgICAgICogdG8gdGhlIG1taW8gaGFuZGxlci4KICAgICAg Ki8KLSAgICBpZiAoIChwMm10ID09IHAybV9tbWlvX2RtKSB8fCAKLSAgICAgICAgIChucGZlYy53 cml0ZV9hY2Nlc3MgJiYKLSAgICAgICAgICAocDJtX2lzX2Rpc2NhcmRfd3JpdGUocDJtdCkgfHwg KHAybXQgPT0gcDJtX2lvcmVxX3NlcnZlcikpKSApCisgICAgaWYgKCAocDJtdCA9PSBwMm1fbW1p b19kbSkgfHwKKyAgICAgICAgIChwMm10ID09IHAybV9pb3JlcV9zZXJ2ZXIpIHx8CisgICAgICAg ICAobnBmZWMud3JpdGVfYWNjZXNzICYmIHAybV9pc19kaXNjYXJkX3dyaXRlKHAybXQpKSApCiAg ICAgewogICAgICAgICBfX3B1dF9nZm4ocDJtLCBnZm4pOwogICAgICAgICBpZiAoIGFwMm1fYWN0 aXZlICkKQEAgLTU5ODksNiArNjA0MCwzNiBAQCBzdGF0aWMgaW50IGh2bW9wX3VubWFwX2lvX3Jh bmdlX2Zyb21faW9yZXFfc2VydmVyKAogICAgIHJldHVybiByYzsKIH0KIAorc3RhdGljIGludCBo dm1vcF9tYXBfbWVtX3R5cGVfdG9faW9yZXFfc2VydmVyKAorICAgIFhFTl9HVUVTVF9IQU5ETEVf UEFSQU0oeGVuX2h2bV9tYXBfbWVtX3R5cGVfdG9faW9yZXFfc2VydmVyX3QpIHVvcCkKK3sKKyAg ICB4ZW5faHZtX21hcF9tZW1fdHlwZV90b19pb3JlcV9zZXJ2ZXJfdCBvcDsKKyAgICBzdHJ1Y3Qg ZG9tYWluICpkOworICAgIGludCByYzsKKworICAgIGlmICggY29weV9mcm9tX2d1ZXN0KCZvcCwg dW9wLCAxKSApCisgICAgICAgIHJldHVybiAtRUZBVUxUOworCisgICAgcmMgPSByY3VfbG9ja19y ZW1vdGVfZG9tYWluX2J5X2lkKG9wLmRvbWlkLCAmZCk7CisgICAgaWYgKCByYyAhPSAwICkKKyAg ICAgICAgcmV0dXJuIHJjOworCisgICAgcmMgPSAtRUlOVkFMOworICAgIGlmICggIWlzX2h2bV9k b21haW4oZCkgKQorICAgICAgICBnb3RvIG91dDsKKworICAgIHJjID0geHNtX2h2bV9pb3JlcV9z ZXJ2ZXIoWFNNX0RNX1BSSVYsIGQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIVk1P UF9tYXBfbWVtX3R5cGVfdG9faW9yZXFfc2VydmVyKTsKKyAgICBpZiAoIHJjICE9IDAgKQorICAg ICAgICBnb3RvIG91dDsKKworICAgIHJjID0gaHZtX21hcF9tZW1fdHlwZV90b19pb3JlcV9zZXJ2 ZXIoZCwgb3AuaWQsIG9wLnR5cGUsIG9wLmZsYWdzKTsKKworIG91dDoKKyAgICByY3VfdW5sb2Nr X2RvbWFpbihkKTsKKyAgICByZXR1cm4gcmM7Cit9CisKIHN0YXRpYyBpbnQgaHZtb3Bfc2V0X2lv cmVxX3NlcnZlcl9zdGF0ZSgKICAgICBYRU5fR1VFU1RfSEFORExFX1BBUkFNKHhlbl9odm1fc2V0 X2lvcmVxX3NlcnZlcl9zdGF0ZV90KSB1b3ApCiB7CkBAIC02NzU0LDYgKzY4MzUsMTEgQEAgbG9u ZyBkb19odm1fb3AodW5zaWduZWQgbG9uZyBvcCwgWEVOX0dVRVNUX0hBTkRMRV9QQVJBTSh2b2lk KSBhcmcpCiAgICAgICAgICAgICBndWVzdF9oYW5kbGVfY2FzdChhcmcsIHhlbl9odm1faW9fcmFu Z2VfdCkpOwogICAgICAgICBicmVhazsKIAorICAgIGNhc2UgSFZNT1BfbWFwX21lbV90eXBlX3Rv X2lvcmVxX3NlcnZlcjoKKyAgICAgICAgcmMgPSBodm1vcF9tYXBfbWVtX3R5cGVfdG9faW9yZXFf c2VydmVyKAorICAgICAgICAgICAgZ3Vlc3RfaGFuZGxlX2Nhc3QoYXJnLCB4ZW5faHZtX21hcF9t ZW1fdHlwZV90b19pb3JlcV9zZXJ2ZXJfdCkpOworICAgICAgICBicmVhazsKKwogICAgIGNhc2Ug SFZNT1Bfc2V0X2lvcmVxX3NlcnZlcl9zdGF0ZToKICAgICAgICAgcmMgPSBodm1vcF9zZXRfaW9y ZXFfc2VydmVyX3N0YXRlKAogICAgICAgICAgICAgZ3Vlc3RfaGFuZGxlX2Nhc3QoYXJnLCB4ZW5f aHZtX3NldF9pb3JlcV9zZXJ2ZXJfc3RhdGVfdCkpOwpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2 L21tL2hhcC9uZXN0ZWRfaGFwLmMgYi94ZW4vYXJjaC94ODYvbW0vaGFwL25lc3RlZF9oYXAuYwpp bmRleCA5Y2VlNWEwLi5iYmI2ZDg1IDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvbW0vaGFwL25l c3RlZF9oYXAuYworKysgYi94ZW4vYXJjaC94ODYvbW0vaGFwL25lc3RlZF9oYXAuYwpAQCAtMTc0 LDcgKzE3NCw3IEBAIG5lc3RlZGhhcF93YWxrX0wwX3AybShzdHJ1Y3QgcDJtX2RvbWFpbiAqcDJt LCBwYWRkcl90IEwxX2dwYSwgcGFkZHJfdCAqTDBfZ3BhLAogICAgIGlmICggKnAybXQgPT0gcDJt X21taW9fZGlyZWN0ICkKICAgICAgICAgZ290byBkaXJlY3RfbW1pb19vdXQ7CiAgICAgcmMgPSBO RVNURURIVk1fUEFHRUZBVUxUX01NSU87Ci0gICAgaWYgKCAqcDJtdCA9PSBwMm1fbW1pb19kbSAp CisgICAgaWYgKCAqcDJtdCA9PSBwMm1fbW1pb19kbSB8fCAqcDJtdCA9PSBwMm1faW9yZXFfc2Vy dmVyICkKICAgICAgICAgZ290byBvdXQ7CiAKICAgICByYyA9IE5FU1RFREhWTV9QQUdFRkFVTFRf TDBfRVJST1I7CmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvbW0vcDJtLWVwdC5jIGIveGVuL2Fy Y2gveDg2L21tL3AybS1lcHQuYwppbmRleCAzODBlYzI1Li4yMWUwNGNlIDEwMDY0NAotLS0gYS94 ZW4vYXJjaC94ODYvbW0vcDJtLWVwdC5jCisrKyBiL3hlbi9hcmNoL3g4Ni9tbS9wMm0tZXB0LmMK QEAgLTEzMiw2ICsxMzIsMTQgQEAgc3RhdGljIHZvaWQgZXB0X3AybV90eXBlX3RvX2ZsYWdzKHN0 cnVjdCBwMm1fZG9tYWluICpwMm0sIGVwdF9lbnRyeV90ICplbnRyeSwKICAgICAgICAgICAgIGVu dHJ5LT5yID0gZW50cnktPncgPSBlbnRyeS0+eCA9IDE7CiAgICAgICAgICAgICBlbnRyeS0+YSA9 IGVudHJ5LT5kID0gISFjcHVfaGFzX3ZteF9lcHRfYWQ7CiAgICAgICAgICAgICBicmVhazsKKyAg ICAgICAgY2FzZSBwMm1faW9yZXFfc2VydmVyOgorICAgICAgICAgICAgZW50cnktPnIgPSAhKHAy bS0+aW9yZXEuZmxhZ3MgJiBQMk1fSU9SRVFfSEFORExFX1JFQURfQUNDRVNTKTsKKyAgICAgICAg ICAgIGVudHJ5LT53ID0gKGVudHJ5LT5yICYKKyAgICAgICAgICAgICAgICAgICAgICAgICEocDJt LT5pb3JlcS5mbGFncyAmIFAyTV9JT1JFUV9IQU5ETEVfV1JJVEVfQUNDRVNTKSk7CisgICAgICAg ICAgICBlbnRyeS0+eCA9IGVudHJ5LT5yOworICAgICAgICAgICAgZW50cnktPmEgPSAhIWNwdV9o YXNfdm14X2VwdF9hZDsKKyAgICAgICAgICAgIGVudHJ5LT5kID0gMDsKKyAgICAgICAgICAgIGJy ZWFrOwogICAgICAgICBjYXNlIHAybV9tbWlvX2RpcmVjdDoKICAgICAgICAgICAgIGVudHJ5LT5y ID0gZW50cnktPnggPSAxOwogICAgICAgICAgICAgZW50cnktPncgPSAhcmFuZ2VzZXRfY29udGFp bnNfc2luZ2xldG9uKG1taW9fcm9fcmFuZ2VzLApAQCAtMTcxLDcgKzE3OSw2IEBAIHN0YXRpYyB2 b2lkIGVwdF9wMm1fdHlwZV90b19mbGFncyhzdHJ1Y3QgcDJtX2RvbWFpbiAqcDJtLCBlcHRfZW50 cnlfdCAqZW50cnksCiAgICAgICAgICAgICBlbnRyeS0+YSA9IGVudHJ5LT5kID0gISFjcHVfaGFz X3ZteF9lcHRfYWQ7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBwMm1fZ3JhbnRf bWFwX3JvOgotICAgICAgICBjYXNlIHAybV9pb3JlcV9zZXJ2ZXI6CiAgICAgICAgICAgICBlbnRy eS0+ciA9IDE7CiAgICAgICAgICAgICBlbnRyeS0+dyA9IGVudHJ5LT54ID0gMDsKICAgICAgICAg ICAgIGVudHJ5LT5hID0gISFjcHVfaGFzX3ZteF9lcHRfYWQ7CmRpZmYgLS1naXQgYS94ZW4vYXJj aC94ODYvbW0vcDJtLXB0LmMgYi94ZW4vYXJjaC94ODYvbW0vcDJtLXB0LmMKaW5kZXggZWFiZDJl My4uN2EwZGRiOCAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L21tL3AybS1wdC5jCisrKyBiL3hl bi9hcmNoL3g4Ni9tbS9wMm0tcHQuYwpAQCAtNzIsOCArNzIsOCBAQCBzdGF0aWMgY29uc3QgdW5z aWduZWQgbG9uZyBwZ3RbXSA9IHsKICAgICBQR1RfbDNfcGFnZV90YWJsZQogfTsKIAotc3RhdGlj IHVuc2lnbmVkIGxvbmcgcDJtX3R5cGVfdG9fZmxhZ3MocDJtX3R5cGVfdCB0LCBtZm5fdCBtZm4s Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgbGV2 ZWwpCitzdGF0aWMgdW5zaWduZWQgbG9uZyBwMm1fdHlwZV90b19mbGFncyhzdHJ1Y3QgcDJtX2Rv bWFpbiAqcDJtLCBwMm1fdHlwZV90IHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBtZm5fdCBtZm4sIHVuc2lnbmVkIGludCBsZXZlbCkKIHsKICAgICB1bnNpZ25lZCBs b25nIGZsYWdzOwogICAgIC8qCkBAIC05NCw4ICs5NCwxOCBAQCBzdGF0aWMgdW5zaWduZWQgbG9u ZyBwMm1fdHlwZV90b19mbGFncyhwMm1fdHlwZV90IHQsIG1mbl90IG1mbiwKICAgICBkZWZhdWx0 OgogICAgICAgICByZXR1cm4gZmxhZ3MgfCBfUEFHRV9OWF9CSVQ7CiAgICAgY2FzZSBwMm1fZ3Jh bnRfbWFwX3JvOgotICAgIGNhc2UgcDJtX2lvcmVxX3NlcnZlcjoKICAgICAgICAgcmV0dXJuIGZs YWdzIHwgUDJNX0JBU0VfRkxBR1MgfCBfUEFHRV9OWF9CSVQ7CisgICAgY2FzZSBwMm1faW9yZXFf c2VydmVyOgorICAgIHsKKyAgICAgICAgZmxhZ3MgfD0gUDJNX0JBU0VfRkxBR1MgfCBfUEFHRV9S VzsKKworICAgICAgICBpZiAoIHAybS0+aW9yZXEuZmxhZ3MgJiBQMk1fSU9SRVFfSEFORExFX1JF QURfQUNDRVNTICkKKyAgICAgICAgICAgIHJldHVybiBmbGFncyAmIH4oX1BBR0VfUFJFU0VOVCB8 IF9QQUdFX1JXKTsKKyAgICAgICAgZWxzZSBpZiAoIHAybS0+aW9yZXEuZmxhZ3MgJiBQMk1fSU9S RVFfSEFORExFX1dSSVRFX0FDQ0VTUyApCisgICAgICAgICAgICByZXR1cm4gZmxhZ3MgJiB+X1BB R0VfUlc7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJldHVybiBmbGFnczsKKyAgICB9CiAg ICAgY2FzZSBwMm1fcmFtX3JvOgogICAgIGNhc2UgcDJtX3JhbV9sb2dkaXJ0eToKICAgICBjYXNl IHAybV9yYW1fc2hhcmVkOgpAQCAtNDQyLDcgKzQ1Miw4IEBAIHN0YXRpYyBpbnQgZG9fcmVjYWxj KHN0cnVjdCBwMm1fZG9tYWluICpwMm0sIHVuc2lnbmVkIGxvbmcgZ2ZuKQogICAgICAgICAgICAg cDJtX3R5cGVfdCBwMm10ID0gcDJtX2lzX2xvZ2RpcnR5X3JhbmdlKHAybSwgZ2ZuICYgbWFzaywg Z2ZuIHwgfm1hc2spCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHAybV9yYW1fbG9n ZGlydHkgOiBwMm1fcmFtX3J3OwogICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBtZm4gPSBsMWVf Z2V0X3BmbihlKTsKLSAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3MgPSBwMm1fdHlwZV90 b19mbGFncyhwMm10LCBfbWZuKG1mbiksIGxldmVsKTsKKyAgICAgICAgICAgIHVuc2lnbmVkIGxv bmcgZmxhZ3MgPSBwMm1fdHlwZV90b19mbGFncyhwMm0sIHAybXQsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX21mbihtZm4pLCBsZXZlbCk7CiAK ICAgICAgICAgICAgIGlmICggbGV2ZWwgKQogICAgICAgICAgICAgewpAQCAtNTc5LDcgKzU5MCw3 IEBAIHAybV9wdF9zZXRfZW50cnkoc3RydWN0IHAybV9kb21haW4gKnAybSwgdW5zaWduZWQgbG9u ZyBnZm4sIG1mbl90IG1mbiwKICAgICAgICAgQVNTRVJUKCFtZm5fdmFsaWQobWZuKSB8fCBwMm10 ICE9IHAybV9tbWlvX2RpcmVjdCk7CiAgICAgICAgIGwzZV9jb250ZW50ID0gbWZuX3ZhbGlkKG1m bikgfHwgcDJtX2FsbG93c19pbnZhbGlkX21mbihwMm10KQogICAgICAgICAgICAgPyBsM2VfZnJv bV9wZm4obWZuX3gobWZuKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHAybV90eXBlX3Rv X2ZsYWdzKHAybXQsIG1mbiwgMikgfCBfUEFHRV9QU0UpCisgICAgICAgICAgICAgICAgICAgICAg ICAgICBwMm1fdHlwZV90b19mbGFncyhwMm0sIHAybXQsIG1mbiwgMikgfCBfUEFHRV9QU0UpCiAg ICAgICAgICAgICA6IGwzZV9lbXB0eSgpOwogICAgICAgICBlbnRyeV9jb250ZW50LmwxID0gbDNl X2NvbnRlbnQubDM7CiAKQEAgLTYxNSw3ICs2MjYsNyBAQCBwMm1fcHRfc2V0X2VudHJ5KHN0cnVj dCBwMm1fZG9tYWluICpwMm0sIHVuc2lnbmVkIGxvbmcgZ2ZuLCBtZm5fdCBtZm4sCiAKICAgICAg ICAgaWYgKCBtZm5fdmFsaWQobWZuKSB8fCBwMm1fYWxsb3dzX2ludmFsaWRfbWZuKHAybXQpICkK ICAgICAgICAgICAgIGVudHJ5X2NvbnRlbnQgPSBwMm1fbDFlX2Zyb21fcGZuKG1mbl94KG1mbiks Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwMm1fdHlwZV90 b19mbGFncyhwMm10LCBtZm4sIDApKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgcDJtX3R5cGVfdG9fZmxhZ3MocDJtLCBwMm10LCBtZm4sIDApKTsKICAgICAgICAg ZWxzZQogICAgICAgICAgICAgZW50cnlfY29udGVudCA9IGwxZV9lbXB0eSgpOwogCkBAIC02NTEs NyArNjYyLDcgQEAgcDJtX3B0X3NldF9lbnRyeShzdHJ1Y3QgcDJtX2RvbWFpbiAqcDJtLCB1bnNp Z25lZCBsb25nIGdmbiwgbWZuX3QgbWZuLAogICAgICAgICBBU1NFUlQoIW1mbl92YWxpZChtZm4p IHx8IHAybXQgIT0gcDJtX21taW9fZGlyZWN0KTsKICAgICAgICAgaWYgKCBtZm5fdmFsaWQobWZu KSB8fCBwMm1fYWxsb3dzX2ludmFsaWRfbWZuKHAybXQpICkKICAgICAgICAgICAgIGwyZV9jb250 ZW50ID0gbDJlX2Zyb21fcGZuKG1mbl94KG1mbiksCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBwMm1fdHlwZV90b19mbGFncyhwMm10LCBtZm4sIDEpIHwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAybV90eXBlX3RvX2ZsYWdzKHAybSwgcDJt dCwgbWZuLCAxKSB8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfUEFH RV9QU0UpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBsMmVfY29udGVudCA9IGwyZV9lbXB0 eSgpOwpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L21tL3AybS5jIGIveGVuL2FyY2gveDg2L21t L3AybS5jCmluZGV4IGIzZmNlMWIuLjJmOWE2ZDkgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9t bS9wMm0uYworKysgYi94ZW4vYXJjaC94ODYvbW0vcDJtLmMKQEAgLTgzLDYgKzgzLDggQEAgc3Rh dGljIGludCBwMm1faW5pdGlhbGlzZShzdHJ1Y3QgZG9tYWluICpkLCBzdHJ1Y3QgcDJtX2RvbWFp biAqcDJtKQogICAgIGVsc2UKICAgICAgICAgcDJtX3B0X2luaXQocDJtKTsKIAorICAgIHNwaW5f bG9ja19pbml0KCZwMm0tPmlvcmVxLmxvY2spOworCiAgICAgcmV0dXJuIHJldDsKIH0KIApAQCAt Mjg5LDYgKzI5MSw4MyBAQCB2b2lkIHAybV9tZW1vcnlfdHlwZV9jaGFuZ2VkKHN0cnVjdCBkb21h aW4gKmQpCiAgICAgfQogfQogCitpbnQgcDJtX3NldF9pb3JlcV9zZXJ2ZXIoc3RydWN0IGRvbWFp biAqZCwgcDJtX3R5cGVfdCB0LAorICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxv bmcgZmxhZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGh2bV9pb3JlcV9zZXJ2 ZXIgKnMpCit7CisgICAgc3RydWN0IHAybV9kb21haW4gKnAybSA9IHAybV9nZXRfaG9zdHAybShk KTsKKyAgICBpbnQgcmM7CisKKyAgICBzcGluX2xvY2soJnAybS0+aW9yZXEubG9jayk7CisKKyAg ICByYyA9IC1FSU5WQUw7CisgICAgaWYgKCB0ICE9IHAybV9pb3JlcV9zZXJ2ZXIgKQorICAgICAg ICBnb3RvIG91dDsKKworICAgIHJjID0gLUVCVVNZOworICAgIGlmICggKCBwMm0tPmlvcmVxLnNl cnZlciAhPSBOVUxMICkgJiYgKGZsYWdzICE9IDApICkKKyAgICAgICAgZ290byBvdXQ7CisKKyAg ICBpZiAoIGZsYWdzID09IDAgKQorICAgIHsKKyAgICAgICAgcDJtLT5pb3JlcS5zZXJ2ZXIgPSBO VUxMOworICAgICAgICBwMm0tPmlvcmVxLmZsYWdzID0gMDsKKyAgICB9CisgICAgZWxzZQorICAg IHsKKyAgICAgICAgcDJtLT5pb3JlcS5zZXJ2ZXIgPSBzOworICAgICAgICBwMm0tPmlvcmVxLmZs YWdzID0gZmxhZ3M7CisgICAgfQorCisgICAgcDJtX21lbW9yeV90eXBlX2NoYW5nZWQoZCk7CisK KyAgICByYyA9IDA7CisKK291dDoKKyAgICBzcGluX3VubG9jaygmcDJtLT5pb3JlcS5sb2NrKTsK KworICAgIHJldHVybiByYzsKK30KKwordm9pZCBwMm1fZ2V0X2lvcmVxX3NlcnZlcihzdHJ1Y3Qg ZG9tYWluICpkLCBwMm1fdHlwZV90IHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2ln bmVkIGxvbmcgKmZsYWdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgaHZtX2lv cmVxX3NlcnZlciAqKnMpCit7CisgICAgc3RydWN0IHAybV9kb21haW4gKnAybSA9IHAybV9nZXRf aG9zdHAybShkKTsKKworICAgIGlmICggdCAhPSBwMm1faW9yZXFfc2VydmVyICkKKyAgICB7Cisg ICAgICAgICpzID0gTlVMTDsKKyAgICAgICAgKmZsYWdzID0gMDsKKyAgICAgICAgcmV0dXJuOwor ICAgIH0KKworICAgIHNwaW5fbG9jaygmcDJtLT5pb3JlcS5sb2NrKTsKKworICAgICpzID0gcDJt LT5pb3JlcS5zZXJ2ZXI7CisgICAgKmZsYWdzID0gcDJtLT5pb3JlcS5mbGFnczsKKworICAgIHNw aW5fdW5sb2NrKCZwMm0tPmlvcmVxLmxvY2spOworfQorCit2b2lkIHAybV9kZXN0cm95X2lvcmVx X3NlcnZlcihzdHJ1Y3QgZG9tYWluICpkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg c3RydWN0IGh2bV9pb3JlcV9zZXJ2ZXIgKnMpCit7CisgICAgc3RydWN0IHAybV9kb21haW4gKnAy bSA9IHAybV9nZXRfaG9zdHAybShkKTsKKworICAgIHNwaW5fbG9jaygmcDJtLT5pb3JlcS5sb2Nr KTsKKworICAgIGlmICggcDJtLT5pb3JlcS5zZXJ2ZXIgPT0gcyApCisgICAgeworICAgICAgICBw Mm0tPmlvcmVxLnNlcnZlciA9IE5VTEw7CisgICAgICAgIHAybS0+aW9yZXEuZmxhZ3MgPSAwOwor ICAgIH0KKworICAgIHAybV9tZW1vcnlfdHlwZV9jaGFuZ2VkKGQpOworCisgICAgc3Bpbl91bmxv Y2soJnAybS0+aW9yZXEubG9jayk7Cit9CisKIHZvaWQgcDJtX2VuYWJsZV9oYXJkd2FyZV9sb2df ZGlydHkoc3RydWN0IGRvbWFpbiAqZCkKIHsKICAgICBzdHJ1Y3QgcDJtX2RvbWFpbiAqcDJtID0g cDJtX2dldF9ob3N0cDJtKGQpOwpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L21tL3NoYWRvdy9t dWx0aS5jIGIveGVuL2FyY2gveDg2L21tL3NoYWRvdy9tdWx0aS5jCmluZGV4IGM4MTMwMmEuLmM4 MzY1MTcgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9tbS9zaGFkb3cvbXVsdGkuYworKysgYi94 ZW4vYXJjaC94ODYvbW0vc2hhZG93L211bHRpLmMKQEAgLTUzMCw2ICs1MzAsNyBAQCBfc2hfcHJv cGFnYXRlKHN0cnVjdCB2Y3B1ICp2LAogICAgIGd1ZXN0X2wxZV90IGd1ZXN0X2VudHJ5ID0geyBn dWVzdF9pbnRwdGUgfTsKICAgICBzaGFkb3dfbDFlX3QgKnNwID0gc2hhZG93X2VudHJ5X3B0cjsK ICAgICBzdHJ1Y3QgZG9tYWluICpkID0gdi0+ZG9tYWluOworICAgIHN0cnVjdCBwMm1fZG9tYWlu ICpwMm0gPSBkLT5hcmNoLnAybTsKICAgICBzdHJ1Y3Qgc2hfZGlydHlfdnJhbSAqZGlydHlfdnJh bSA9IGQtPmFyY2guaHZtX2RvbWFpbi5kaXJ0eV92cmFtOwogICAgIGdmbl90IHRhcmdldF9nZm4g PSBndWVzdF9sMWVfZ2V0X2dmbihndWVzdF9lbnRyeSk7CiAgICAgdTMyIHBhc3NfdGhydV9mbGFn czsKQEAgLTY5NSw2ICs2OTYsMTUgQEAgX3NoX3Byb3BhZ2F0ZShzdHJ1Y3QgdmNwdSAqdiwKICAg ICAgICAgICAgIHNmbGFncyAmPSB+X1BBR0VfUlc7CiAgICAgfQogCisgICAgaWYgKCBwMm10ID09 IHAybV9pb3JlcV9zZXJ2ZXIgKQorICAgIHsKKyAgICAgICAgaWYgKCBwMm0tPmlvcmVxLmZsYWdz ICYgUDJNX0lPUkVRX0hBTkRMRV9XUklURV9BQ0NFU1MgKQorICAgICAgICAgICAgc2ZsYWdzICY9 IH5fUEFHRV9SVzsKKworICAgICAgICBpZiAoIHAybS0+aW9yZXEuZmxhZ3MgJiBQMk1fSU9SRVFf SEFORExFX1JFQURfQUNDRVNTICkKKyAgICAgICAgICAgIHNmbGFncyAmPSB+X1BBR0VfUFJFU0VO VDsKKyAgICB9CisKICAgICAvKiBSZWFkLW9ubHkgbWVtb3J5ICovCiAgICAgaWYgKCBwMm1faXNf cmVhZG9ubHkocDJtdCkgKQogICAgICAgICBzZmxhZ3MgJj0gfl9QQUdFX1JXOwpAQCAtMjg1NSw2 ICsyODY1LDcgQEAgc3RhdGljIGludCBzaF9wYWdlX2ZhdWx0KHN0cnVjdCB2Y3B1ICp2LAogICAg ICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgY3B1X3VzZXJfcmVncyAqcmVncykKIHsKICAg ICBzdHJ1Y3QgZG9tYWluICpkID0gdi0+ZG9tYWluOworICAgIHN0cnVjdCBwMm1fZG9tYWluICpw Mm0gPSBkLT5hcmNoLnAybTsKICAgICB3YWxrX3QgZ3c7CiAgICAgZ2ZuX3QgZ2ZuID0gX2dmbigw KTsKICAgICBtZm5fdCBnbWZuLCBzbDFtZm4gPSBfbWZuKDApOwpAQCAtMzIyNCwxMyArMzIzNSwy NCBAQCBzdGF0aWMgaW50IHNoX3BhZ2VfZmF1bHQoc3RydWN0IHZjcHUgKnYsCiAgICAgfQogCiAg ICAgLyogTmVlZCB0byBoYW5kIG9mZiBkZXZpY2UtbW9kZWwgTU1JTyB0byB0aGUgZGV2aWNlIG1v ZGVsICovCi0gICAgaWYgKCBwMm10ID09IHAybV9tbWlvX2RtCi0gICAgICAgICB8fCAocDJtdCA9 PSBwMm1faW9yZXFfc2VydmVyICYmIGZ0ID09IGZ0X2RlbWFuZF93cml0ZSkgKQorICAgIGlmICgg cDJtdCA9PSBwMm1fbW1pb19kbSApCiAgICAgewogICAgICAgICBncGEgPSBndWVzdF93YWxrX3Rv X2dwYSgmZ3cpOwogICAgICAgICBnb3RvIG1taW87CiAgICAgfQogCisgICAgaWYgKCBwMm10ID09 IHAybV9pb3JlcV9zZXJ2ZXIgKQorICAgIHsKKyAgICAgICAgaWYgKCAoZnQgPT0gZnRfZGVtYW5k X3dyaXRlICYmCisgICAgICAgICAgICAgIChwMm0tPmlvcmVxLmZsYWdzICYgUDJNX0lPUkVRX0hB TkRMRV9XUklURV9BQ0NFU1MpKSB8fAorICAgICAgICAgICAgIChmdCA9PSBmdF9kZW1hbmRfcmVh ZCAmJgorICAgICAgICAgICAgICAocDJtLT5pb3JlcS5mbGFncyAmIFAyTV9JT1JFUV9IQU5ETEVf UkVBRF9BQ0NFU1MpKSApCisgICAgICAgIHsKKyAgICAgICAgICAgIGdwYSA9IGd1ZXN0X3dhbGtf dG9fZ3BhKCZndyk7CisgICAgICAgICAgICBnb3RvIG1taW87CisgICAgICAgIH0KKyAgICB9CisK ICAgICAvKiBJZ25vcmUgYXR0ZW1wdHMgdG8gd3JpdGUgdG8gcmVhZC1vbmx5IG1lbW9yeS4gKi8K ICAgICBpZiAoIHAybV9pc19yZWFkb25seShwMm10KSAmJiAoZnQgPT0gZnRfZGVtYW5kX3dyaXRl KSApCiAgICAgewpkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9wMm0uaCBiL3hlbi9p bmNsdWRlL2FzbS14ODYvcDJtLmgKaW5kZXggMDg0YTFmMi4uMzA3NmZhOCAxMDA2NDQKLS0tIGEv eGVuL2luY2x1ZGUvYXNtLXg4Ni9wMm0uaAorKysgYi94ZW4vaW5jbHVkZS9hc20teDg2L3AybS5o CkBAIC0xMTEsOCArMTExLDcgQEAgdHlwZWRlZiB1bnNpZ25lZCBpbnQgcDJtX3F1ZXJ5X3Q7CiAj ZGVmaW5lIFAyTV9ST19UWVBFUyAocDJtX3RvX21hc2socDJtX3JhbV9sb2dkaXJ0eSkgICAgIFwK ICAgICAgICAgICAgICAgICAgICAgICB8IHAybV90b19tYXNrKHAybV9yYW1fcm8pICAgICAgICAg XAogICAgICAgICAgICAgICAgICAgICAgIHwgcDJtX3RvX21hc2socDJtX2dyYW50X21hcF9ybykg ICBcCi0gICAgICAgICAgICAgICAgICAgICAgfCBwMm1fdG9fbWFzayhwMm1fcmFtX3NoYXJlZCkg ICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICB8IHAybV90b19tYXNrKHAybV9pb3JlcV9zZXJ2 ZXIpKQorICAgICAgICAgICAgICAgICAgICAgIHwgcDJtX3RvX21hc2socDJtX3JhbV9zaGFyZWQp KQogCiAvKiBXcml0ZS1kaXNjYXJkIHR5cGVzLCB3aGljaCBzaG91bGQgZGlzY2FyZCB0aGUgd3Jp dGUgb3BlcmF0aW9ucyAqLwogI2RlZmluZSBQMk1fRElTQ0FSRF9XUklURV9UWVBFUyAocDJtX3Rv X21hc2socDJtX3JhbV9ybykgICAgIFwKQEAgLTMyMSw2ICszMjAsMTYgQEAgc3RydWN0IHAybV9k b21haW4gewogICAgICAgICBzdHJ1Y3QgZXB0X2RhdGEgZXB0OwogICAgICAgICAvKiBOUFQtZXF1 aXZhbGVudCBzdHJ1Y3R1cmUgY291bGQgYmUgYWRkZWQgaGVyZS4gKi8KICAgICB9OworCisgICAg c3RydWN0IHsKKyAgICAgICAgc3BpbmxvY2tfdCBsb2NrOworICAgICAgICBzdHJ1Y3QgaHZtX2lv cmVxX3NlcnZlciAqc2VydmVyOworICAgICAgICB1bnNpZ25lZCBsb25nIGZsYWdzOworCisjZGVm aW5lIFAyTV9JT1JFUV9IQU5ETEVfV1JJVEVfQUNDRVNTIEhWTU9QX0lPUkVRX01FTV9BQ0NFU1Nf V1JJVEUKKyNkZWZpbmUgUDJNX0lPUkVRX0hBTkRMRV9SRUFEX0FDQ0VTUyAgSFZNT1BfSU9SRVFf TUVNX0FDQ0VTU19SRUFECisKKyAgICB9IGlvcmVxOwogfTsKIAogLyogZ2V0IGhvc3QgcDJtIHRh YmxlICovCkBAIC04MjIsNiArODMxLDEyIEBAIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IHAy bV9nZXRfaW9tbXVfZmxhZ3MocDJtX3R5cGVfdCBwMm10KQogICAgIHJldHVybiBmbGFnczsKIH0K IAoraW50IHAybV9zZXRfaW9yZXFfc2VydmVyKHN0cnVjdCBkb21haW4gKmQsIHAybV90eXBlX3Qg dCwgdW5zaWduZWQgbG9uZyBmbGFncywKKyAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qg aHZtX2lvcmVxX3NlcnZlciAqcyk7Cit2b2lkIHAybV9nZXRfaW9yZXFfc2VydmVyKHN0cnVjdCBk b21haW4gKmQsIHAybV90eXBlX3QgdCwgdW5zaWduZWQgbG9uZyAqZmxhZ3MsCisgICAgICAgICAg ICAgICAgICAgICAgICAgc3RydWN0IGh2bV9pb3JlcV9zZXJ2ZXIgKipzKTsKK3ZvaWQgcDJtX2Rl c3Ryb3lfaW9yZXFfc2VydmVyKHN0cnVjdCBkb21haW4gKmQsIHN0cnVjdCBodm1faW9yZXFfc2Vy dmVyICpzKTsKKwogI2VuZGlmIC8qIF9YRU5fUDJNX0ggKi8KIAogLyoKZGlmZiAtLWdpdCBhL3hl bi9pbmNsdWRlL3B1YmxpYy9odm0vaHZtX29wLmggYi94ZW4vaW5jbHVkZS9wdWJsaWMvaHZtL2h2 bV9vcC5oCmluZGV4IGExZWFlNTIuLmU3ZmM3NWQgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL3B1 YmxpYy9odm0vaHZtX29wLmgKKysrIGIveGVuL2luY2x1ZGUvcHVibGljL2h2bS9odm1fb3AuaApA QCAtNDg5LDYgKzQ4OSwzMCBAQCBzdHJ1Y3QgeGVuX2h2bV9hbHRwMm1fb3AgewogdHlwZWRlZiBz dHJ1Y3QgeGVuX2h2bV9hbHRwMm1fb3AgeGVuX2h2bV9hbHRwMm1fb3BfdDsKIERFRklORV9YRU5f R1VFU1RfSEFORExFKHhlbl9odm1fYWx0cDJtX29wX3QpOwogCisjaWYgZGVmaW5lZChfX1hFTl9f KSB8fCBkZWZpbmVkKF9fWEVOX1RPT0xTX18pCisKKyNkZWZpbmUgSFZNT1BfbWFwX21lbV90eXBl X3RvX2lvcmVxX3NlcnZlciAyNgorc3RydWN0IHhlbl9odm1fbWFwX21lbV90eXBlX3RvX2lvcmVx X3NlcnZlciB7CisgICAgZG9taWRfdCBkb21pZDsgICAgICAvKiBJTiAtIGRvbWFpbiB0byBiZSBz ZXJ2aWNlZCAqLworICAgIGlvc2VydmlkX3QgaWQ7ICAgICAgLyogSU4gLSBzZXJ2ZXIgaWQgKi8K KyAgICBodm1tZW1fdHlwZV90IHR5cGU7IC8qIElOIC0gbWVtb3J5IHR5cGUgKi8KKyAgICB1aW50 MzJfdCBmbGFnczsgICAgIC8qIElOIC0gdHlwZXMgb2YgYWNjZXNzIHRvIGJlCisgICAgICAgICAg ICAgICAgICAgICAgICAgICBpbnRlcmNlcHRlZCAqLworI2RlZmluZSBfSFZNT1BfSU9SRVFfTUVN X0FDQ0VTU19SRUFEIDAKKyNkZWZpbmUgSFZNT1BfSU9SRVFfTUVNX0FDQ0VTU19SRUFEIFwKKyAg ICAoMXUgPDwgX0hWTU9QX0lPUkVRX01FTV9BQ0NFU1NfUkVBRCkKKworI2RlZmluZSBfSFZNT1Bf SU9SRVFfTUVNX0FDQ0VTU19XUklURSAxCisjZGVmaW5lIEhWTU9QX0lPUkVRX01FTV9BQ0NFU1Nf V1JJVEUgXAorICAgICgxdSA8PCBfSFZNT1BfSU9SRVFfTUVNX0FDQ0VTU19XUklURSkKK307Cit0 eXBlZGVmIHN0cnVjdCB4ZW5faHZtX21hcF9tZW1fdHlwZV90b19pb3JlcV9zZXJ2ZXIKKyAgICB4 ZW5faHZtX21hcF9tZW1fdHlwZV90b19pb3JlcV9zZXJ2ZXJfdDsKK0RFRklORV9YRU5fR1VFU1Rf SEFORExFKHhlbl9odm1fbWFwX21lbV90eXBlX3RvX2lvcmVxX3NlcnZlcl90KTsKKworI2VuZGlm IC8qIGRlZmluZWQoX19YRU5fXykgfHwgZGVmaW5lZChfX1hFTl9UT09MU19fKSAqLworCisKICNl bmRpZiAvKiBfX1hFTl9QVUJMSUNfSFZNX0hWTV9PUF9IX18gKi8KIAogLyoKLS0gCjEuOS4xCgoK X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVs IG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwOi8vbGlzdHMueGVuLm9y Zy94ZW4tZGV2ZWwK