From mboxrd@z Thu Jan 1 00:00:00 1970 From: Wei Liu Subject: [PATCH RFC v1 58/74] xen/pvshim: add migration support Date: Thu, 4 Jan 2018 13:06:09 +0000 Message-ID: <20180104130625.28605-59-wei.liu2@citrix.com> References: <20180104130625.28605-1-wei.liu2@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1eX5ZR-0003jv-RF for xen-devel@lists.xenproject.org; Thu, 04 Jan 2018 13:28:33 +0000 In-Reply-To: <20180104130625.28605-1-wei.liu2@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: Xen-devel Cc: wei.liu2@citrix.com List-Id: xen-devel@lists.xenproject.org RnJvbTogUm9nZXIgUGF1IE1vbm5lIDxyb2dlci5wYXVAY2l0cml4LmNvbT4KClNpZ25lZC1vZmYt Ynk6IFJvZ2VyIFBhdSBNb25uw6kgPHJvZ2VyLnBhdUBjaXRyaXguY29tPgotLS0KIHhlbi9hcmNo L3g4Ni9ndWVzdC94ZW4uYyAgICAgICAgICB8ICAyOSArKysrKysrCiB4ZW4vYXJjaC94ODYvbW0u YyAgICAgICAgICAgICAgICAgfCAgIDMgKy0KIHhlbi9hcmNoL3g4Ni9wdi9zaGltLmMgICAgICAg ICAgICB8IDE2MyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLQogeGVuL2Nv bW1vbi9kb21haW4uYyAgICAgICAgICAgICAgIHwgIDExICsrLQogeGVuL2NvbW1vbi9zY2hlZHVs ZS5jICAgICAgICAgICAgIHwgICAzICstCiB4ZW4vZHJpdmVycy9jaGFyL3hlbl9wdl9jb25zb2xl LmMgfCAgIDIgKy0KIHhlbi9pbmNsdWRlL2FzbS14ODYvZ3Vlc3QveGVuLmggICB8ICAgNSArKwog eGVuL2luY2x1ZGUvYXNtLXg4Ni9wdi9zaGltLmggICAgIHwgICA1ICstCiB4ZW4vaW5jbHVkZS94 ZW4vc2NoZWQuaCAgICAgICAgICAgfCAgIDIgKy0KIDkgZmlsZXMgY2hhbmdlZCwgMjA2IGluc2Vy dGlvbnMoKyksIDE3IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9ndWVz dC94ZW4uYyBiL3hlbi9hcmNoL3g4Ni9ndWVzdC94ZW4uYwppbmRleCA2NTNhNzM2NmFiLi41NGM5 OTdiOWUwIDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvZ3Vlc3QveGVuLmMKKysrIGIveGVuL2Fy Y2gveDg2L2d1ZXN0L3hlbi5jCkBAIC0zNjEsNiArMzYxLDM1IEBAIHVpbnQzMl90IGh5cGVydmlz b3JfY3B1aWRfYmFzZSh2b2lkKQogICAgIHJldHVybiB4ZW5fY3B1aWRfYmFzZTsKIH0KIAordm9p ZCBhcF9yZXN1bWUodm9pZCAqdW51c2VkKQoreworICAgIG1hcF92Y3B1aW5mbygpOworICAgIGlu aXRfZXZ0Y2huKCk7Cit9CisKK3ZvaWQgaHlwZXJ2aXNvcl9yZXN1bWUodm9pZCkKK3sKKyAgICAv KiBSZXNldCBzaGFyZWQgaW5mbyBwYWdlLiAqLworICAgIG1hcF9zaGFyZWRfaW5mbygpOworCisg ICAgLyoKKyAgICAgKiBSZXNldCB2Y3B1X2luZm8uIEp1c3QgY2xlYW4gdGhlIG1hcHBlZCBiaXRt YXAgYW5kIHRyeSB0byBtYXAgdGhlIHZjcHUKKyAgICAgKiBhcmVhIGFnYWluLiBPbiBmYWlsdXJl IHRvIG1hcCAod2hlbiBpdCB3YXMgcHJldmlvdXNseSBtYXBwZWQpIHBhbmljCisgICAgICogc2lu Y2UgaXQncyBpbXBvc3NpYmxlIHRvIHNhZmVseSBzaHV0IGRvd24gcnVubmluZyBndWVzdCB2Q1BV cyBpbiBvcmRlcgorICAgICAqIHRvIG1lZXQgdGhlIG5ldyBYRU5fTEVHQUNZX01BWF9WQ1BVUyBy ZXF1aXJlbWVudC4KKyAgICAgKi8KKyAgICBtZW1zZXQodmNwdV9pbmZvX21hcHBlZCwgMCwgc2l6 ZW9mKHZjcHVfaW5mb19tYXBwZWQpKTsKKyAgICBpZiAoIG1hcF92Y3B1aW5mbygpICYmIG5yX2Nw dV9pZHMgPiBYRU5fTEVHQUNZX01BWF9WQ1BVUyApCisgICAgICAgIHBhbmljKCJ1bmFibGUgdG8g cmVtYXAgdkNQVSBpbmZvIGFuZCB2Q1BVcyA+IGxlZ2FjeSBsaW1pdCIpOworCisgICAgLyogU2V0 dXAgZXZlbnQgY2hhbm5lbCB1cGNhbGwgdmVjdG9yLiAqLworICAgIGluaXRfZXZ0Y2huKCk7Cisg ICAgc21wX2NhbGxfZnVuY3Rpb24oYXBfcmVzdW1lLCBOVUxMLCAxKTsKKworICAgIGlmICggcHZf Y29uc29sZSApCisgICAgICAgIHB2X2NvbnNvbGVfaW5pdCgpOworfQorCiAvKgogICogTG9jYWwg dmFyaWFibGVzOgogICogbW9kZTogQwpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L21tLmMgYi94 ZW4vYXJjaC94ODYvbW0uYwppbmRleCA0MzMyZDNiYjM5Li5lNzI2YzYyMDY0IDEwMDY0NAotLS0g YS94ZW4vYXJjaC94ODYvbW0uYworKysgYi94ZW4vYXJjaC94ODYvbW0uYwpAQCAtNDY2LDggKzQ2 Niw3IEBAIHZvaWQgc2hhcmVfeGVuX3BhZ2Vfd2l0aF9ndWVzdCgKICAgICBzcGluX3VubG9jaygm ZC0+cGFnZV9hbGxvY19sb2NrKTsKIH0KIAotaW50IF9faW5pdCB1bnNoYXJlX3hlbl9wYWdlX3dp dGhfZ3Vlc3Qoc3RydWN0IHBhZ2VfaW5mbyAqcGFnZSwKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHN0cnVjdCBkb21haW4gKmQpCitpbnQgdW5zaGFyZV94ZW5fcGFnZV93 aXRoX2d1ZXN0KHN0cnVjdCBwYWdlX2luZm8gKnBhZ2UsIHN0cnVjdCBkb21haW4gKmQpCiB7CiAg ICAgaWYgKCBwYWdlX2dldF9vd25lcihwYWdlKSAhPSBkIHx8ICFpc194ZW5faGVhcF9wYWdlKHBh Z2UpICkKICAgICAgICAgcmV0dXJuIC1FSU5WQUw7CmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYv cHYvc2hpbS5jIGIveGVuL2FyY2gveDg2L3B2L3NoaW0uYwppbmRleCA3NGIyNGJmOTUwLi41NmVj YWVhMmQyIDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvcHYvc2hpbS5jCisrKyBiL3hlbi9hcmNo L3g4Ni9wdi9zaGltLmMKQEAgLTE1MSwxMCArMTUxLDE2NyBAQCB2b2lkIF9faW5pdCBwdl9zaGlt X3NldHVwX2RvbShzdHJ1Y3QgZG9tYWluICpkLCBsNF9wZ2VudHJ5X3QgKmw0c3RhcnQsCiAgICAg fQogfQogCi12b2lkIHB2X3NoaW1fc2h1dGRvd24odWludDhfdCByZWFzb24pCitzdGF0aWMgdm9p ZCB3cml0ZV9zdGFydF9pbmZvKHN0cnVjdCBkb21haW4gKmQpCiB7Ci0gICAgLyogWFhYOiBoYW5k bGUgc3VzcGVuZCAqLwotICAgIHhlbl9oeXBlcmNhbGxfc2h1dGRvd24ocmVhc29uKTsKKyAgICBz dHJ1Y3QgY3B1X3VzZXJfcmVncyAqcmVncyA9IGd1ZXN0X2NwdV91c2VyX3JlZ3MoKTsKKyAgICBz dGFydF9pbmZvX3QgKnNpID0gbWFwX2RvbWFpbl9wYWdlKF9tZm4oaXNfcHZfMzJiaXRfZG9tYWlu KGQpID8gcmVncy0+ZWR4CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICA6IHJlZ3MtPnJkeCkpOworICAgIHVpbnQ2NF90IHBh cmFtOworCisgICAgQlVHX09OKCFzaSk7CisKKyAgICBzbnByaW50ZihzaS0+bWFnaWMsIHNpemVv ZihzaS0+bWFnaWMpLCAieGVuLTMuMC14ODZfJXMiLAorICAgICAgICAgICAgIGlzX3B2XzMyYml0 X2RvbWFpbihkKSA/ICIzMnAiIDogIjY0Iik7CisgICAgc2ktPm5yX3BhZ2VzID0gZC0+dG90X3Bh Z2VzOworICAgIHNpLT5zaGFyZWRfaW5mbyA9IHZpcnRfdG9fbWFkZHIoZC0+c2hhcmVkX2luZm8p OworICAgIHNpLT5mbGFncyA9ICh4ZW5fcHJvY2Vzc29yX3BtYml0cyA8PCA4KSAmIFNJRl9QTV9N QVNLOworICAgIEJVR19PTih4ZW5faHlwZXJjYWxsX2h2bV9nZXRfcGFyYW0oSFZNX1BBUkFNX1NU T1JFX1BGTiwgJnNpLT5zdG9yZV9tZm4pKTsKKyAgICBCVUdfT04oeGVuX2h5cGVyY2FsbF9odm1f Z2V0X3BhcmFtKEhWTV9QQVJBTV9TVE9SRV9FVlRDSE4sICZwYXJhbSkpOworICAgIHNpLT5zdG9y ZV9ldnRjaG4gPSBwYXJhbTsKKyAgICBCVUdfT04oeGVuX2h5cGVyY2FsbF9odm1fZ2V0X3BhcmFt KEhWTV9QQVJBTV9DT05TT0xFX0VWVENITiwgJnBhcmFtKSk7CisgICAgc2ktPmNvbnNvbGUuZG9t VS5ldnRjaG4gPSBwYXJhbTsKKyAgICBpZiAoICFwdl9jb25zb2xlICkKKyAgICAgICAgQlVHX09O KHhlbl9oeXBlcmNhbGxfaHZtX2dldF9wYXJhbShIVk1fUEFSQU1fQ09OU09MRV9QRk4sCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnNpLT5jb25zb2xlLmRvbVUu bWZuKSk7CisgICAgZWxzZQorICAgICAgICBzaS0+Y29uc29sZS5kb21VLm1mbiA9IHZpcnRfdG9f bWZuKGNvbnNvbGVkX2dldF9yaW5nX2FkZHIoKSk7CisKKyAgICBpZiAoIGlzX3B2XzMyYml0X2Rv bWFpbihkKSApCisgICAgICAgIHhsYXRfc3RhcnRfaW5mbyhzaSwgWExBVF9zdGFydF9pbmZvX2Nv bnNvbGVfZG9tVSk7CisKKyAgICB1bm1hcF9kb21haW5fcGFnZShzaSk7Cit9CisKK2ludCBwdl9z aGltX3NodXRkb3duKHVpbnQ4X3QgcmVhc29uKQoreworICAgIGxvbmcgcmM7CisKKyAgICBpZiAo IHJlYXNvbiA9PSBTSFVURE9XTl9zdXNwZW5kICkKKyAgICB7CisgICAgICAgIHN0cnVjdCBkb21h aW4gKmQgPSBjdXJyZW50LT5kb21haW47CisgICAgICAgIHN0cnVjdCB2Y3B1ICp2OworICAgICAg ICB1bnNpZ25lZCBpbnQgaTsKKyAgICAgICAgdWludDY0X3Qgb2xkX3N0b3JlX3Bmbiwgb2xkX2Nv bnNvbGVfcGZuID0gMCwgc3RvcmVfcGZuLCBjb25zb2xlX3BmbjsKKyAgICAgICAgdWludDY0X3Qg c3RvcmVfZXZ0Y2huLCBjb25zb2xlX2V2dGNobjsKKworICAgICAgICBCVUdfT04oY3VycmVudC0+ dmNwdV9pZCAhPSAwKTsKKworICAgICAgICBCVUdfT04oeGVuX2h5cGVyY2FsbF9odm1fZ2V0X3Bh cmFtKEhWTV9QQVJBTV9TVE9SRV9QRk4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgJm9sZF9zdG9yZV9wZm4pKTsKKyAgICAgICAgaWYgKCAhcHZfY29uc29sZSAp CisgICAgICAgICAgICBCVUdfT04oeGVuX2h5cGVyY2FsbF9odm1fZ2V0X3BhcmFtKEhWTV9QQVJB TV9DT05TT0xFX1BGTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgJm9sZF9jb25zb2xlX3BmbikpOworCisgICAgICAgIC8qIFBhdXNlIHRoZSBvdGhlciB2 Y3B1cyBiZWZvcmUgc3RhcnRpbmcgdGhlIG1pZ3JhdGlvbi4gKi8KKyAgICAgICAgZm9yX2VhY2hf dmNwdShkLCB2KQorICAgICAgICAgICAgaWYgKCB2ICE9IGN1cnJlbnQgKQorICAgICAgICAgICAg ICAgIHZjcHVfcGF1c2VfYnlfc3lzdGVtY29udHJvbGxlcih2KTsKKworICAgICAgICByYyA9IHhl bl9oeXBlcmNhbGxfc2h1dGRvd24oU0hVVERPV05fc3VzcGVuZCk7CisgICAgICAgIGlmICggcmMg KQorICAgICAgICB7CisgICAgICAgICAgICBmb3JfZWFjaF92Y3B1KGQsIHYpCisgICAgICAgICAg ICAgICAgaWYgKCB2ICE9IGN1cnJlbnQgKQorICAgICAgICAgICAgICAgICAgICB2Y3B1X3VucGF1 c2VfYnlfc3lzdGVtY29udHJvbGxlcih2KTsKKworICAgICAgICAgICAgcmV0dXJuIHJjOworICAg ICAgICB9CisKKyAgICAgICAgLyogUmVzdW1lIHRoZSBzaGltIGl0c2VsZiBmaXJzdC4gKi8KKyAg ICAgICAgaHlwZXJ2aXNvcl9yZXN1bWUoKTsKKworICAgICAgICAvKgorICAgICAgICAgKiBBVE0g dGhlcmUncyBub3RoaW5nIFhlbiBjYW4gZG8gaWYgdGhlIGNvbnNvbGUvc3RvcmUgcGZuIGNoYW5n ZXMsCisgICAgICAgICAqIGJlY2F1c2UgWGVuIHdvbid0IGhhdmUgYSBwYWdlX2luZm8gc3RydWN0 IGZvciBpdC4KKyAgICAgICAgICovCisgICAgICAgIEJVR19PTih4ZW5faHlwZXJjYWxsX2h2bV9n ZXRfcGFyYW0oSFZNX1BBUkFNX1NUT1JFX1BGTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAmc3RvcmVfcGZuKSk7CisgICAgICAgIEJVR19PTihvbGRfc3RvcmVf cGZuICE9IHN0b3JlX3Bmbik7CisgICAgICAgIGlmICggIXB2X2NvbnNvbGUgKQorICAgICAgICB7 CisgICAgICAgICAgICBCVUdfT04oeGVuX2h5cGVyY2FsbF9odm1fZ2V0X3BhcmFtKEhWTV9QQVJB TV9DT05TT0xFX1BGTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgJmNvbnNvbGVfcGZuKSk7CisgICAgICAgICAgICBCVUdfT04ob2xkX2NvbnNvbGVfcGZu ICE9IGNvbnNvbGVfcGZuKTsKKyAgICAgICAgfQorCisgICAgICAgIC8qIFVwZGF0ZSBkb21haW4g aWQuICovCisgICAgICAgIGQtPmRvbWFpbl9pZCA9IGdldF9kb20wX2RvbWlkKCk7CisKKyAgICAg ICAgLyogQ2xlYW4gdGhlIGlvbWVtIHJhbmdlLiAqLworICAgICAgICBCVUdfT04oaW9tZW1fZGVu eV9hY2Nlc3MoZCwgMCwgfjBVTCkpOworCisgICAgICAgIC8qIENsZWFuIGdyYW50IGZyYW1lcy4g Ki8KKyAgICAgICAgeGZyZWUoZ3JhbnRfZnJhbWVzKTsKKyAgICAgICAgZ3JhbnRfZnJhbWVzID0g TlVMTDsKKyAgICAgICAgbnJfZ3JhbnRfbGlzdCA9IDA7CisKKyAgICAgICAgLyogQ2xlYW4gZXZl bnQgY2hhbm5lbHMuICovCisgICAgICAgIGZvciAoIGkgPSAwOyBpIDwgRVZUQ0hOXzJMX05SX0NI QU5ORUxTOyBpKysgKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoICFwb3J0X2lzX3ZhbGlk KGQsIGkpICkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgaWYgKCBl dnRjaG5faGFuZGxlZChkLCBpKSApCisgICAgICAgICAgICAgICAgZXZ0Y2huX2Nsb3NlKGQsIGks IGZhbHNlKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBldnRjaG5fZnJlZShk LCBldnRjaG5fZnJvbV9wb3J0KGQsIGkpKTsKKyAgICAgICAgfQorCisgICAgICAgIC8qIFJlc2Vy dmUgc3RvcmUvY29uc29sZSBldmVudCBjaGFubmVsLiAqLworICAgICAgICBCVUdfT04oeGVuX2h5 cGVyY2FsbF9odm1fZ2V0X3BhcmFtKEhWTV9QQVJBTV9TVE9SRV9FVlRDSE4sCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnN0b3JlX2V2dGNobikpOworICAgICAg ICBCVUdfT04oZXZ0Y2huX2FsbG9jYXRlX3BvcnQoZCwgc3RvcmVfZXZ0Y2huKSk7CisgICAgICAg IGV2dGNobl9yZXNlcnZlKGQsIHN0b3JlX2V2dGNobik7CisgICAgICAgIEJVR19PTih4ZW5faHlw ZXJjYWxsX2h2bV9nZXRfcGFyYW0oSFZNX1BBUkFNX0NPTlNPTEVfRVZUQ0hOLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZjb25zb2xlX2V2dGNobikpOworICAg ICAgICBCVUdfT04oZXZ0Y2huX2FsbG9jYXRlX3BvcnQoZCwgY29uc29sZV9ldnRjaG4pKTsKKyAg ICAgICAgZXZ0Y2huX3Jlc2VydmUoZCwgY29uc29sZV9ldnRjaG4pOworCisgICAgICAgIC8qIENs ZWFuIHdhdGNoZG9ncy4gKi8KKyAgICAgICAgd2F0Y2hkb2dfZG9tYWluX2Rlc3Ryb3koZCk7Cisg ICAgICAgIHdhdGNoZG9nX2RvbWFpbl9pbml0KGQpOworCisgICAgICAgIC8qIENsZWFuIHRoZSBQ SVJRIEVPSSBwYWdlLiAqLworICAgICAgICBpZiAoIGQtPmFyY2gucGlycV9lb2lfbWFwICE9IE5V TEwgKQorICAgICAgICB7CisgICAgICAgICAgICB1bm1hcF9kb21haW5fcGFnZV9nbG9iYWwoZC0+ YXJjaC5waXJxX2VvaV9tYXApOworICAgICAgICAgICAgcHV0X3BhZ2VfYW5kX3R5cGUobWZuX3Rv X3BhZ2UoZC0+YXJjaC5waXJxX2VvaV9tYXBfbWZuKSk7CisgICAgICAgICAgICBkLT5hcmNoLnBp cnFfZW9pX21hcCA9IE5VTEw7CisgICAgICAgICAgICBkLT5hcmNoLnBpcnFfZW9pX21hcF9tZm4g PSAwOworICAgICAgICAgICAgZC0+YXJjaC5hdXRvX3VubWFzayA9IDA7CisgICAgICAgIH0KKwor ICAgICAgICAvKgorICAgICAgICAgKiBOQjogdGhlcmUncyBubyBuZWVkIHRvIGZpeHVwIHRoZSBw Mm0sIHNpbmNlIHRoZSBtZm5zIGFzc2lnbmVkCisgICAgICAgICAqIHRvIHRoZSBQViBndWVzdCBo YXZlIG5vdCBjaGFuZ2VkIGF0IGFsbC4gSnVzdCByZS13cml0ZSB0aGUKKyAgICAgICAgICogc3Rh cnRfaW5mbyBmaWVsZHMgd2l0aCB0aGUgYXBwcm9wcmlhdGUgdmFsdWUuCisgICAgICAgICAqLwor ICAgICAgICB3cml0ZV9zdGFydF9pbmZvKGQpOworCisgICAgICAgIGZvcl9lYWNoX3ZjcHUoZCwg dikKKyAgICAgICAgeworICAgICAgICAgICAgLyogVW5tYXAgZ3Vlc3QgdmNwdV9pbmZvIHBhZ2Vz LiAqLworICAgICAgICAgICAgdW5tYXBfdmNwdV9pbmZvKHYpOworCisgICAgICAgICAgICAvKiBS ZXNldCB0aGUgcGVyaW9kaWMgdGltZXIgdG8gdGhlIGRlZmF1bHQgdmFsdWUuICovCisgICAgICAg ICAgICB2LT5wZXJpb2RpY19wZXJpb2QgPSBNSUxMSVNFQ1MoMTApOworICAgICAgICAgICAgLyog U3RvcCB0aGUgc2luZ2xlc2hvdCB0aW1lci4gKi8KKyAgICAgICAgICAgIHN0b3BfdGltZXIoJnYt PnNpbmdsZXNob3RfdGltZXIpOworCisgICAgICAgICAgICBpZiAoIHRlc3RfYml0KF9WUEZfZG93 biwgJnYtPnBhdXNlX2ZsYWdzKSApCisgICAgICAgICAgICAgICAgQlVHX09OKHZjcHVfcmVzZXQo dikpOworCisgICAgICAgICAgICBpZiAoIHYgIT0gY3VycmVudCApCisgICAgICAgICAgICAgICAg dmNwdV91bnBhdXNlX2J5X3N5c3RlbWNvbnRyb2xsZXIodik7CisgICAgICAgICAgICBlbHNlCisg ICAgICAgICAgICAgICAgdmNwdV9mb3JjZV9yZXNjaGVkdWxlKHYpOworICAgICAgICB9CisgICAg fQorICAgIGVsc2UKKyAgICAgICAgLyogRm9yd2FyZCB0byBMMC4gKi8KKyAgICAgICAgcmMgPSB4 ZW5faHlwZXJjYWxsX3NodXRkb3duKHJlYXNvbik7CisKKyAgICByZXR1cm4gcmM7CiB9CiAKIGxv bmcgcHZfc2hpbV9ldmVudF9jaGFubmVsX29wKGludCBjbWQsIFhFTl9HVUVTVF9IQU5ETEVfUEFS QU0odm9pZCkgYXJnKQpkaWZmIC0tZ2l0IGEveGVuL2NvbW1vbi9kb21haW4uYyBiL3hlbi9jb21t b24vZG9tYWluLmMKaW5kZXggZDY1M2EwYjBiYi4uYmMyY2ViMmQzNiAxMDA2NDQKLS0tIGEveGVu L2NvbW1vbi9kb21haW4uYworKysgYi94ZW4vY29tbW9uL2RvbWFpbi5jCkBAIC03MDEsMTUgKzcw MSwxMiBAQCB2b2lkIF9fZG9tYWluX2NyYXNoX3N5bmNocm9ub3VzKHZvaWQpCiB9CiAKIAotdm9p ZCBkb21haW5fc2h1dGRvd24oc3RydWN0IGRvbWFpbiAqZCwgdTggcmVhc29uKQoraW50IGRvbWFp bl9zaHV0ZG93bihzdHJ1Y3QgZG9tYWluICpkLCB1OCByZWFzb24pCiB7CiAgICAgc3RydWN0IHZj cHUgKnY7CiAKICAgICBpZiAoIHB2X3NoaW0gKQotICAgIHsKLSAgICAgICAgcHZfc2hpbV9zaHV0 ZG93bihyZWFzb24pOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgICAgICByZXR1cm4gcHZf c2hpbV9zaHV0ZG93bihyZWFzb24pOwogCiAgICAgc3Bpbl9sb2NrKCZkLT5zaHV0ZG93bl9sb2Nr KTsKIApAQCAtNzIzLDcgKzcyMCw3IEBAIHZvaWQgZG9tYWluX3NodXRkb3duKHN0cnVjdCBkb21h aW4gKmQsIHU4IHJlYXNvbikKICAgICBpZiAoIGQtPmlzX3NodXR0aW5nX2Rvd24gKQogICAgIHsK ICAgICAgICAgc3Bpbl91bmxvY2soJmQtPnNodXRkb3duX2xvY2spOwotICAgICAgICByZXR1cm47 CisgICAgICAgIHJldHVybiAwOwogICAgIH0KIAogICAgIGQtPmlzX3NodXR0aW5nX2Rvd24gPSAx OwpAQCAtNzQ1LDYgKzc0Miw4IEBAIHZvaWQgZG9tYWluX3NodXRkb3duKHN0cnVjdCBkb21haW4g KmQsIHU4IHJlYXNvbikKICAgICBfX2RvbWFpbl9maW5hbGlzZV9zaHV0ZG93bihkKTsKIAogICAg IHNwaW5fdW5sb2NrKCZkLT5zaHV0ZG93bl9sb2NrKTsKKworICAgIHJldHVybiAwOwogfQogCiB2 b2lkIGRvbWFpbl9yZXN1bWUoc3RydWN0IGRvbWFpbiAqZCkKZGlmZiAtLWdpdCBhL3hlbi9jb21t b24vc2NoZWR1bGUuYyBiL3hlbi9jb21tb24vc2NoZWR1bGUuYwppbmRleCA4ODI3OTIxM2U4Li5i Nzg4NDI2M2YyIDEwMDY0NAotLS0gYS94ZW4vY29tbW9uL3NjaGVkdWxlLmMKKysrIGIveGVuL2Nv bW1vbi9zY2hlZHVsZS5jCkBAIC0xMTQ5LDExICsxMTQ5LDEwIEBAIHJldF90IGRvX3NjaGVkX29w KGludCBjbWQsIFhFTl9HVUVTVF9IQU5ETEVfUEFSQU0odm9pZCkgYXJnKQogICAgICAgICBpZiAo IGNvcHlfZnJvbV9ndWVzdCgmc2NoZWRfc2h1dGRvd24sIGFyZywgMSkgKQogICAgICAgICAgICAg YnJlYWs7CiAKLSAgICAgICAgcmV0ID0gMDsKICAgICAgICAgVFJBQ0VfM0QoVFJDX1NDSEVEX1NI VVRET1dOLAogICAgICAgICAgICAgICAgICBjdXJyZW50LT5kb21haW4tPmRvbWFpbl9pZCwgY3Vy cmVudC0+dmNwdV9pZCwKICAgICAgICAgICAgICAgICAgc2NoZWRfc2h1dGRvd24ucmVhc29uKTsK LSAgICAgICAgZG9tYWluX3NodXRkb3duKGN1cnJlbnQtPmRvbWFpbiwgKHU4KXNjaGVkX3NodXRk b3duLnJlYXNvbik7CisgICAgICAgIHJldCA9IGRvbWFpbl9zaHV0ZG93bihjdXJyZW50LT5kb21h aW4sICh1OClzY2hlZF9zaHV0ZG93bi5yZWFzb24pOwogCiAgICAgICAgIGJyZWFrOwogICAgIH0K ZGlmZiAtLWdpdCBhL3hlbi9kcml2ZXJzL2NoYXIveGVuX3B2X2NvbnNvbGUuYyBiL3hlbi9kcml2 ZXJzL2NoYXIveGVuX3B2X2NvbnNvbGUuYwppbmRleCBmYjVhNzg5M2JlLi5kMmEyODQ3OGFjIDEw MDY0NAotLS0gYS94ZW4vZHJpdmVycy9jaGFyL3hlbl9wdl9jb25zb2xlLmMKKysrIGIveGVuL2Ry aXZlcnMvY2hhci94ZW5fcHZfY29uc29sZS5jCkBAIC0zNyw3ICszNyw3IEBAIHN0YXRpYyBERUZJ TkVfU1BJTkxPQ0sodHhfbG9jayk7CiAKIGJvb2wgcHZfY29uc29sZTsKIAotdm9pZCBfX2luaXQg cHZfY29uc29sZV9pbml0KHZvaWQpCit2b2lkIHB2X2NvbnNvbGVfaW5pdCh2b2lkKQogewogICAg IHN0cnVjdCBldnRjaG5fdW5tYXNrIHVubWFzazsKICAgICBsb25nIHI7CmRpZmYgLS1naXQgYS94 ZW4vaW5jbHVkZS9hc20teDg2L2d1ZXN0L3hlbi5oIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9ndWVz dC94ZW4uaAppbmRleCA5NGY3ODFjMzBmLi5jMjQ0NTY5ZTgzIDEwMDY0NAotLS0gYS94ZW4vaW5j bHVkZS9hc20teDg2L2d1ZXN0L3hlbi5oCisrKyBiL3hlbi9pbmNsdWRlL2FzbS14ODYvZ3Vlc3Qv eGVuLmgKQEAgLTQwLDYgKzQwLDcgQEAgdm9pZCBoeXBlcnZpc29yX2ZpeHVwX2U4MjAoc3RydWN0 IGU4MjBtYXAgKmU4MjApOwogdm9pZCBoeXBlcnZpc29yX2luaXRfbWVtb3J5KHZvaWQpOwogY29u c3QgdW5zaWduZWQgbG9uZyAqaHlwZXJ2aXNvcl9yZXNlcnZlZF9wYWdlcyh1bnNpZ25lZCBpbnQg KnNpemUpOwogdWludDMyX3QgaHlwZXJ2aXNvcl9jcHVpZF9iYXNlKHZvaWQpOwordm9pZCBoeXBl cnZpc29yX3Jlc3VtZSh2b2lkKTsKIAogI2Vsc2UKIApAQCAtOTEsNiArOTIsMTAgQEAgc3RhdGlj IGlubGluZSB1aW50MzJfdCBoeXBlcnZpc29yX2NwdWlkX2Jhc2Uodm9pZCkKICAgICBBU1NFUlRf VU5SRUFDSEFCTEUoKTsKICAgICByZXR1cm4gMDsKIH07CitzdGF0aWMgaW5saW5lIHZvaWQgaHlw ZXJ2aXNvcl9yZXN1bWUodm9pZCkKK3sKKyAgICBBU1NFUlRfVU5SRUFDSEFCTEUoKTsKK307CiAK ICNlbmRpZiAvKiBDT05GSUdfWEVOX0dVRVNUICovCiAjZW5kaWYgLyogX19YODZfR1VFU1RfWEVO X0hfXyAqLwpkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9wdi9zaGltLmggYi94ZW4v aW5jbHVkZS9hc20teDg2L3B2L3NoaW0uaAppbmRleCA0N2JjNDI2N2FmLi4wMjA3MzQ4YTg1IDEw MDY0NAotLS0gYS94ZW4vaW5jbHVkZS9hc20teDg2L3B2L3NoaW0uaAorKysgYi94ZW4vaW5jbHVk ZS9hc20teDg2L3B2L3NoaW0uaApAQCAtMzUsNyArMzUsNyBAQCB2b2lkIHB2X3NoaW1fc2V0dXBf ZG9tKHN0cnVjdCBkb21haW4gKmQsIGw0X3BnZW50cnlfdCAqbDRzdGFydCwKICAgICAgICAgICAg ICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB2YV9zdGFydCwgdW5zaWduZWQgbG9uZyBzdG9yZV92 YSwKICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBjb25zb2xlX3ZhLCB1bnNp Z25lZCBsb25nIHZwaHlzbWFwLAogICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9pbmZvX3Qg KnNpKTsKLXZvaWQgcHZfc2hpbV9zaHV0ZG93bih1aW50OF90IHJlYXNvbik7CitpbnQgcHZfc2hp bV9zaHV0ZG93bih1aW50OF90IHJlYXNvbik7CiBsb25nIHB2X3NoaW1fZXZlbnRfY2hhbm5lbF9v cChpbnQgY21kLCBYRU5fR1VFU1RfSEFORExFX1BBUkFNKHZvaWQpIGFyZyk7CiB2b2lkIHB2X3No aW1faW5qZWN0X2V2dGNobih1bnNpZ25lZCBpbnQgcG9ydCk7CiBsb25nIHB2X3NoaW1fZ3JhbnRf dGFibGVfb3AodW5zaWduZWQgaW50IGNtZCwgWEVOX0dVRVNUX0hBTkRMRV9QQVJBTSh2b2lkKSB1 b3AsCkBAIC01Myw5ICs1MywxMCBAQCBzdGF0aWMgaW5saW5lIHZvaWQgcHZfc2hpbV9zZXR1cF9k b20oc3RydWN0IGRvbWFpbiAqZCwgbDRfcGdlbnRyeV90ICpsNHN0YXJ0LAogewogICAgIEFTU0VS VF9VTlJFQUNIQUJMRSgpOwogfQotc3RhdGljIGlubGluZSB2b2lkIHB2X3NoaW1fc2h1dGRvd24o dWludDhfdCByZWFzb24pCitzdGF0aWMgaW5saW5lIGludCBwdl9zaGltX3NodXRkb3duKHVpbnQ4 X3QgcmVhc29uKQogewogICAgIEFTU0VSVF9VTlJFQUNIQUJMRSgpOworICAgIHJldHVybiAwOwog fQogc3RhdGljIGlubGluZSBsb25nIHB2X3NoaW1fZXZlbnRfY2hhbm5lbF9vcChpbnQgY21kLAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYRU5fR1VFU1RfSEFO RExFX1BBUkFNKHZvaWQpIGFyZykKZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL3hlbi9zY2hlZC5o IGIveGVuL2luY2x1ZGUveGVuL3NjaGVkLmgKaW5kZXggYWM2NWQwYzBkZi4uNzBkYjM3N2VhZSAx MDA2NDQKLS0tIGEveGVuL2luY2x1ZGUveGVuL3NjaGVkLmgKKysrIGIveGVuL2luY2x1ZGUveGVu L3NjaGVkLmgKQEAgLTYwNSw3ICs2MDUsNyBAQCBzdGF0aWMgaW5saW5lIHN0cnVjdCBkb21haW4g KnJjdV9sb2NrX2N1cnJlbnRfZG9tYWluKHZvaWQpCiBzdHJ1Y3QgZG9tYWluICpnZXRfZG9tYWlu X2J5X2lkKGRvbWlkX3QgZG9tKTsKIHZvaWQgZG9tYWluX2Rlc3Ryb3koc3RydWN0IGRvbWFpbiAq ZCk7CiBpbnQgZG9tYWluX2tpbGwoc3RydWN0IGRvbWFpbiAqZCk7Ci12b2lkIGRvbWFpbl9zaHV0 ZG93bihzdHJ1Y3QgZG9tYWluICpkLCB1OCByZWFzb24pOworaW50IGRvbWFpbl9zaHV0ZG93bihz dHJ1Y3QgZG9tYWluICpkLCB1OCByZWFzb24pOwogdm9pZCBkb21haW5fcmVzdW1lKHN0cnVjdCBk b21haW4gKmQpOwogdm9pZCBkb21haW5fcGF1c2VfZm9yX2RlYnVnZ2VyKHZvaWQpOwogCi0tIAoy LjExLjAKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpY ZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRw czovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8veGVuLWRldmVs