From mboxrd@z Thu Jan 1 00:00:00 1970 From: Roger Pau Monne Subject: [PATCH v5 4/9] xen/x86: populate PVHv2 Dom0 physical memory map Date: Thu, 19 Jan 2017 17:29:36 +0000 Message-ID: <20170119172941.65642-5-roger.pau@citrix.com> References: <20170119172941.65642-1-roger.pau@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta6.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cUGXB-0005lJ-M0 for xen-devel@lists.xenproject.org; Thu, 19 Jan 2017 17:30:01 +0000 In-Reply-To: <20170119172941.65642-1-roger.pau@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xenproject.org Cc: Andrew Cooper , boris.ostrovsky@oracle.com, Roger Pau Monne , Jan Beulich , konrad.wilk@oracle.com List-Id: xen-devel@lists.xenproject.org Q3JhZnQgdGhlIERvbTAgZTgyMCBtZW1vcnkgbWFwIGFuZCBwb3B1bGF0ZSBpdC4gSW50cm9kdWNl IGEgaGVscGVyIHRvIHJlbW92ZQptZW1vcnkgcGFnZXMgdGhhdCBhcmUgc2hhcmVkIGJldHdlZW4g WGVuIGFuZCBhIGRvbWFpbiwgYW5kIHVzZSBpdCBpbiBvcmRlciB0bwpyZW1vdmUgbG93IDFNQiBS QU0gcmVnaW9ucyBmcm9tIGRvbV9pbyBpbiBvcmRlciB0byBhc3NpZ24gdGhlbSB0byBhIFBWSHYy IERvbTAuCgpTaWduZWQtb2ZmLWJ5OiBSb2dlciBQYXUgTW9ubsOpIDxyb2dlci5wYXVAY2l0cml4 LmNvbT4KLS0tCkNjOiBKYW4gQmV1bGljaCA8amJldWxpY2hAc3VzZS5jb20+CkNjOiBBbmRyZXcg Q29vcGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPgotLS0KQ2hhbmdlcyBzaW5jZSB2NDoK IC0gTW92ZSBwcm9jZXNzX3BlbmRpbmdfc29mdGlycXMgdG8gcHJldmlvdXMgcGF0Y2guCiAtIEZp eCBvZmYtYnktb25lIGVycm9ycyBpbiBzb21lIGNoZWNrcy4KIC0gTWFrZSB1bnNoYXJlX3hlbl9w YWdlX3dpdGhfZ3Vlc3QgX19pbml0LgogLSBJbXByb3ZlIHVuc2hhcmVfeGVuX3BhZ2Vfd2l0aF9n dWVzdCBieSBtYWtpbmcgdXNlIG9mIGFscmVhZHkgZXhpc3RpbmcKICAgaXNfeGVuX2hlYXBfcGFn ZSBhbmQgcHV0X3BhZ2UuCiAtIHMvaHZtL3B2aC8uCiAtIFVzZSBQQUdFX09SREVSXzRLIGluIHB2 aF9zZXR1cF9lODIwIGluIG9yZGVyIHRvIGtlZXAgY29uc2lzdGVuY3kgd2l0aCB0aGUKICAgcDJt IGNvZGUuCgpDaGFuZ2VzIHNpbmNlIHYzOgogLSBEcm9wIGdldF9vcmRlcl9mcm9tX2J5dGVzX2Zs b29yLCBpdCB3YXMgb25seSB1c2VkIGJ5CiAgIGh2bV9wb3B1bGF0ZV9tZW1vcnlfcmFuZ2UuCiAt IFN3aXRjaCBodm1fcG9wdWxhdGVfbWVtb3J5X3JhbmdlIHRvIHVzZSBmcmFtZSBudW1iZXJzIGlu c3RlYWQgb2YgZnVsbCBtZW1vcnkKICAgYWRkcmVzc2VzLgogLSBBZGQgYSBoZWxwZXIgdG8gc3Rl YWwgdGhlIGxvdyAxTUIgUkFNIGFyZWFzIGZyb20gZG9tX2lvIGFuZCBhZGQgdGhlbSB0byBEb20w CiAgIGFzIG5vcm1hbCBSQU0uCiAtIEludHJvZHVjZSB1bnNoYXJlX3hlbl9wYWdlX3dpdGhfZ3Vl c3QgaW4gb3JkZXIgdG8gcmVtb3ZlIHBhZ2VzIGZyb20gZG9tX2lvLAogICBzbyB0aGV5IGNhbiBi ZSBhc3NpZ25lZCB0byBvdGhlciBkb21haW5zLiBUaGlzIGlzIG5lZWRlZCBpbiBvcmRlciB0byBy ZW1vdmUKICAgdGhlIGxvdyAxTUIgUkFNIHJlZ2lvbnMgZnJvbSBkb21faW8gYW5kIGFzc2lnbiB0 aGVtIHRvIHRoZSBoYXJkd2FyZV9kb21haW4uCiAtIFNpbXBsaWZ5IHRoZSBsb29wIGluIGh2bV9z dGVhbF9yYW0uCiAtIE1vdmUgZGVmaW5pdGlvbiBvZiBtYXBfaWRlbnRpdHlfbW1pbyBpbnRvIHRo aXMgcGF0Y2guCgpDaGFuZ2VzIHNpbmNlIHYyOgogLSBJbnRyb2R1Y2UgZ2V0X29yZGVyX2Zyb21f Ynl0ZXNfZmxvb3IgYXMgYSBsb2NhbCBmdW5jdGlvbiB0bwogICBkb21haW5fYnVpbGQuYy4KIC0g UmVtb3ZlIGV4dHJhIGFzc2VydHMuCiAtIE1ha2UgaHZtX3BvcHVsYXRlX21lbW9yeV9yYW5nZSBy ZXR1cm4gYW4gZXJyb3IgY29kZSBpbnN0ZWFkIG9mIHBhbmlja2luZy4KIC0gRml4IGNvbW1lbnRz IGFuZCBwcmludGtzLgogLSBVc2UgVUxMIHN1Zml4IGluc3RlYWQgb2YgY2FzdGluZyB0byB1aW50 NjRfdC4KIC0gUmVuYW1lIGh2bV9zZXR1cF92bXhfdW5yZXN0cmljdGVkX2d1ZXN0IHRvCiAgIGh2 bV9zZXR1cF92bXhfcmVhbG1vZGVfaGVscGVycy4KIC0gT25seSBzdWJzdHJhY3QgdHdvIHBhZ2Vz IGZyb20gdGhlIG1lbW9yeSBjYWxjdWxhdGlvbiwgdGhhdCB3aWxsIGJlIHVzZWQKICAgYnkgdGhl IE1BRFQgcmVwbGFjZW1lbnQuCiAtIFJlbW92ZSBzb21lIGNvbW1lbnRzLgogLSBSZW1vdmUgcHJp bnRpbmcgYWxsb2NhdGlvbiBpbmZvcm1hdGlvbi4KIC0gRG9uJ3Qgc3Rhc2ggYW55IHBhZ2VzIGZv ciB0aGUgTUFEVCwgVFNTIG9yIGlkZW50IFBULCB0aG9zZSB3aWxsIGJlCiAgIHN1YnRyYWN0ZWQg ZGlyZWN0bHkgZnJvbSBSQU0gcmVnaW9ucyBvZiB0aGUgbWVtb3J5IG1hcC4KIC0gQ291bnQgdGhl IG51bWJlciBvZiBpdGVyYXRpb25zIGJlZm9yZSBjYWxsaW5nIHByb2Nlc3NfcGVuZGluZ19zb2Z0 aXJxcwogICB3aGVuIHBvcHVsYXRpbmcgdGhlIG1lbW9yeSBtYXAuCiAtIE1vdmUgdGhlIGluaXRp YWwgY2FsbCB0byBwcm9jZXNzX3BlbmRpbmdfc29mdGlycXMgaW50byBjb25zdHJ1Y3RfZG9tMCwK ICAgYW5kIHJlbW92ZSB0aGUgb25lcyBmcm9tIGNvbnN0cnVjdF9kb20wX2h2bSBhbmQgY29uc3Ry dWN0X2RvbTBfcHYuCiAtIE1ha2UgbWVtZmxhZ3MgZ2xvYmFsIHNvIGl0IGNhbiBiZSBzaGFyZWQg YmV0d2VlbiBhbGxvY19jaHVuayBhbmQKICAgaHZtX3BvcHVsYXRlX21lbW9yeV9yYW5nZS4KCkNo YW5nZXMgc2luY2UgUkZDOgogLSBVc2UgSVNfQUxJR05FRCBpbnN0ZWFkIG9mIGNoZWNraW5nIHdp dGggUEFHRV9NQVNLLgogLSBVc2UgdGhlIG5ldyAlcEIgc3BlY2lmaWVyIGluIG9yZGVyIHRvIHBy aW50IHNpemVzIGluIGh1bWFuIHJlYWRhYmxlIGZvcm0uCiAtIENyZWF0ZSBhIFZNODYgVFNTIGZv ciBoYXJkd2FyZSB0aGF0IGRvZXNuJ3Qgc3VwcG9ydCB1bnJlc3RyaWN0ZWQgbW9kZS4KIC0gU3Vi dHJhY3QgZ3Vlc3QgUkFNIGZvciB0aGUgaWRlbnRpdHkgcGFnZSB0YWJsZSBhbmQgdGhlIFZNODYg VFNTLgogLSBTcGxpdCB0aGUgY3JlYXRpb24gb2YgdGhlIHVucmVzdHJpY3RlZCBtb2RlIGhlbHBl ciBzdHJ1Y3R1cmVzIHRvIGEKICAgc2VwYXJhdGUgZnVuY3Rpb24uCiAtIFVzZSBwcmVlbXB0aW9u IHdpdGggcGFnaW5nX3NldF9hbGxvY2F0aW9uLgogLSBVc2UgZ2V0X29yZGVyX2Zyb21fYnl0ZXNf Zmxvb3IuCi0tLQogeGVuL2FyY2gveDg2L2RvbWFpbl9idWlsZC5jIHwgMjk5ICsrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystCiB4ZW4vYXJjaC94ODYvbW0uYyAgICAg ICAgICAgfCAgMTYgKysrCiB4ZW4vaW5jbHVkZS9hc20teDg2L21tLmggICAgfCAgIDIgKwogMyBm aWxlcyBjaGFuZ2VkLCAzMTIgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKCmRpZmYgLS1n aXQgYS94ZW4vYXJjaC94ODYvZG9tYWluX2J1aWxkLmMgYi94ZW4vYXJjaC94ODYvZG9tYWluX2J1 aWxkLmMKaW5kZXggNGQ1NTViMS4uZmJjZTFjMiAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L2Rv bWFpbl9idWlsZC5jCisrKyBiL3hlbi9hcmNoL3g4Ni9kb21haW5fYnVpbGQuYwpAQCAtMjIsNiAr MjIsNyBAQAogI2luY2x1ZGUgPHhlbi9jb21wYXQuaD4KICNpbmNsdWRlIDx4ZW4vbGliZWxmLmg+ CiAjaW5jbHVkZSA8eGVuL3Bmbi5oPgorI2luY2x1ZGUgPHhlbi9ndWVzdF9hY2Nlc3MuaD4KICNp bmNsdWRlIDxhc20vcmVncy5oPgogI2luY2x1ZGUgPGFzbS9zeXN0ZW0uaD4KICNpbmNsdWRlIDxh c20vaW8uaD4KQEAgLTQzLDYgKzQ0LDkgQEAgc3RhdGljIGxvbmcgX19pbml0ZGF0YSBkb20wX25y cGFnZXM7CiBzdGF0aWMgbG9uZyBfX2luaXRkYXRhIGRvbTBfbWluX25ycGFnZXM7CiBzdGF0aWMg bG9uZyBfX2luaXRkYXRhIGRvbTBfbWF4X25ycGFnZXMgPSBMT05HX01BWDsKIAorLyogU2l6ZSBv ZiB0aGUgVk04NiBUU1MgZm9yIHZpcnR1YWwgODA4NiBtb2RlIHRvIHVzZS4gKi8KKyNkZWZpbmUg SFZNX1ZNODZfVFNTX1NJWkUgICAxMjgKKwogLyoKICAqIGRvbTBfbWVtPVttaW46PG1pbl9hbXQ+ LF1bbWF4OjxtYXhfYW10PixdWzxhbXQ+XQogICogCkBAIC0yNDQsMTEgKzI0OCwxMiBAQCBib29s ZWFuX3BhcmFtKCJyby1ocGV0Iiwgcm9faHBldCk7CiAjZGVmaW5lIHJvdW5kX3BndXAoX3ApICAg ICgoKF9wKSsoUEFHRV9TSVpFLTEpKSZQQUdFX01BU0spCiAjZGVmaW5lIHJvdW5kX3BnZG93bihf cCkgICgoX3ApJlBBR0VfTUFTSykKIAorc3RhdGljIHVuc2lnbmVkIGludCBfX2luaXRkYXRhIG1l bWZsYWdzID0gTUVNRl9ub19kbWF8TUVNRl9leGFjdF9ub2RlOworCiBzdGF0aWMgc3RydWN0IHBh Z2VfaW5mbyAqIF9faW5pdCBhbGxvY19jaHVuaygKICAgICBzdHJ1Y3QgZG9tYWluICpkLCB1bnNp Z25lZCBsb25nIG1heF9wYWdlcykKIHsKICAgICBzdGF0aWMgdW5zaWduZWQgaW50IF9faW5pdGRh dGEgbGFzdF9vcmRlciA9IE1BWF9PUkRFUjsKLSAgICBzdGF0aWMgdW5zaWduZWQgaW50IF9faW5p dGRhdGEgbWVtZmxhZ3MgPSBNRU1GX25vX2RtYXxNRU1GX2V4YWN0X25vZGU7CiAgICAgc3RydWN0 IHBhZ2VfaW5mbyAqcGFnZTsKICAgICB1bnNpZ25lZCBpbnQgb3JkZXIgPSBnZXRfb3JkZXJfZnJv bV9wYWdlcyhtYXhfcGFnZXMpLCBmcmVlX29yZGVyOwogCkBAIC0zMzMsNyArMzM4LDkgQEAgc3Rh dGljIHVuc2lnbmVkIGxvbmcgX19pbml0IGNvbXB1dGVfZG9tMF9ucl9wYWdlcygKICAgICAgICAg ICAgIGF2YWlsIC09IG1heF9wZHggPj4gczsKICAgICB9CiAKLSAgICBuZWVkX3BhZ2luZyA9IG9w dF9kb20wX3NoYWRvdyB8fCAoaXNfcHZoX2RvbWFpbihkKSAmJiAhaW9tbXVfaGFwX3B0X3NoYXJl KTsKKyAgICBuZWVkX3BhZ2luZyA9IG9wdF9kb20wX3NoYWRvdyB8fAorICAgICAgICAgICAgICAg ICAgKGhhc19odm1fY29udGFpbmVyX2RvbWFpbihkKSAmJiAoIWlvbW11X2hhcF9wdF9zaGFyZSB8 fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIXBh Z2luZ19tb2RlX2hhcChkKSkpOwogICAgIGZvciAoIDsgOyBuZWVkX3BhZ2luZyA9IDAgKQogICAg IHsKICAgICAgICAgbnJfcGFnZXMgPSBkb20wX25ycGFnZXM7CkBAIC0zNjUsNyArMzcyLDggQEAg c3RhdGljIHVuc2lnbmVkIGxvbmcgX19pbml0IGNvbXB1dGVfZG9tMF9ucl9wYWdlcygKICAgICAg ICAgYXZhaWwgLT0gZG9tMF9wYWdpbmdfcGFnZXMoZCwgbnJfcGFnZXMpOwogICAgIH0KIAotICAg IGlmICggKHBhcm1zLT5wMm1fYmFzZSA9PSBVTlNFVF9BRERSKSAmJiAoZG9tMF9ucnBhZ2VzIDw9 IDApICYmCisgICAgaWYgKCBpc19wdl9kb21haW4oZCkgJiYKKyAgICAgICAgIChwYXJtcy0+cDJt X2Jhc2UgPT0gVU5TRVRfQUREUikgJiYgKGRvbTBfbnJwYWdlcyA8PSAwKSAmJgogICAgICAgICAg KChkb20wX21pbl9ucnBhZ2VzIDw9IDApIHx8IChucl9wYWdlcyA+IG1pbl9wYWdlcykpICkKICAg ICB7CiAgICAgICAgIC8qCkBAIC01ODEsNiArNTg5LDcgQEAgc3RhdGljIF9faW5pdCB2b2lkIHB2 aF9zZXR1cF9lODIwKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGxvbmcgbnJfcGFnZXMpCiAg ICAgc3RydWN0IGU4MjBlbnRyeSAqZW50cnksICplbnRyeV9ndWVzdDsKICAgICB1bnNpZ25lZCBp bnQgaTsKICAgICB1bnNpZ25lZCBsb25nIHBhZ2VzLCBjdXJfcGFnZXMgPSAwOworICAgIHVpbnQ2 NF90IHN0YXJ0LCBlbmQ7CiAKICAgICAvKgogICAgICAqIENyYWZ0IHRoZSBlODIwIG1lbW9yeSBt YXAgZm9yIERvbTAgYmFzZWQgb24gdGhlIGhhcmR3YXJlIGU4MjAgbWFwLgpAQCAtNjA4LDggKzYx NywyMiBAQCBzdGF0aWMgX19pbml0IHZvaWQgcHZoX3NldHVwX2U4MjAoc3RydWN0IGRvbWFpbiAq ZCwgdW5zaWduZWQgbG9uZyBucl9wYWdlcykKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAg ICB9CiAKLSAgICAgICAgKmVudHJ5X2d1ZXN0ID0gKmVudHJ5OwotICAgICAgICBwYWdlcyA9IFBG Tl9VUChlbnRyeV9ndWVzdC0+c2l6ZSk7CisgICAgICAgIC8qCisgICAgICAgICAqIE1ha2Ugc3Vy ZSB0aGUgc3RhcnQgYW5kIGxlbmd0aCBhcmUgYWxpZ25lZCB0byBQQUdFX1NJWkUsIGJlY2F1c2UK KyAgICAgICAgICogdGhhdCdzIHRoZSBtaW5pbXVtIGdyYW51bGFyaXR5IG9mIHRoZSAybmQgc3Rh Z2UgdHJhbnNsYXRpb24uIFNpbmNlCisgICAgICAgICAqIHRoZSBwMm0gY29kZSB1c2VzIFBBR0Vf T1JERVJfNEsgaW50ZXJuYWxseSwgYWxzbyB1c2UgaXQgaGVyZSBpbgorICAgICAgICAgKiBvcmRl ciB0byBwcmV2ZW50IHRoaXMgY29kZSBmcm9tIGdldHRpbmcgb3V0IG9mIHN5bmMuCisgICAgICAg ICAqLworICAgICAgICBzdGFydCA9IFJPVU5EVVAoZW50cnktPmFkZHIsIF9BQygxLEwpIDw8IFBB R0VfT1JERVJfNEsgPDwgUEFHRV9TSElGVCk7CisgICAgICAgIGVuZCA9IChlbnRyeS0+YWRkciAr IGVudHJ5LT5zaXplKSAmCisgICAgICAgICAgICAgIH4oKF9BQygxLEwpIDw8IFBBR0VfT1JERVJf NEsgPDwgUEFHRV9TSElGVCkgLSAxICk7CisgICAgICAgIGlmICggc3RhcnQgPj0gZW5kICkKKyAg ICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGVudHJ5X2d1ZXN0LT50eXBlID0gRTgyMF9S QU07CisgICAgICAgIGVudHJ5X2d1ZXN0LT5hZGRyID0gc3RhcnQ7CisgICAgICAgIGVudHJ5X2d1 ZXN0LT5zaXplID0gZW5kIC0gc3RhcnQ7CisgICAgICAgIHBhZ2VzID0gUEZOX0RPV04oZW50cnlf Z3Vlc3QtPnNpemUpOwogICAgICAgICBpZiAoIChjdXJfcGFnZXMgKyBwYWdlcykgPiBucl9wYWdl cyApCiAgICAgICAgIHsKICAgICAgICAgICAgIC8qIFRydW5jYXRlIHJlZ2lvbiAqLwpAQCAtMTY4 MCwxNSArMTcwMywyODEgQEAgb3V0OgogICAgIHJldHVybiByYzsKIH0KIAorc3RhdGljIGludCBf X2luaXQgbW9kaWZ5X2lkZW50aXR5X21taW8oc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9u ZyBwZm4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBs b25nIG5yX3BhZ2VzLCBib29sIG1hcCkKK3sKKyAgICBpbnQgcmM7CisKKyAgICBmb3IgKCA7IDsg KQorICAgIHsKKyAgICAgICAgcmMgPSAobWFwID8gbWFwX21taW9fcmVnaW9ucyA6IHVubWFwX21t aW9fcmVnaW9ucykKKyAgICAgICAgICAgICAoZCwgX2dmbihwZm4pLCBucl9wYWdlcywgX21mbihw Zm4pKTsKKyAgICAgICAgaWYgKCByYyA9PSAwICkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg ICBpZiAoIHJjIDwgMCApCisgICAgICAgIHsKKyAgICAgICAgICAgIHByaW50ayhYRU5MT0dfV0FS TklORworICAgICAgICAgICAgICAgICAgICJGYWlsZWQgdG8gaWRlbnRpdHkgJXNtYXAgWyUjbHgs JSNseCkgZm9yIGQlZDogJWRcbiIsCisgICAgICAgICAgICAgICAgICAgbWFwID8gIiIgOiAidW4i LCBwZm4sIHBmbiArIG5yX3BhZ2VzLCBkLT5kb21haW5faWQsIHJjKTsKKyAgICAgICAgICAgIGJy ZWFrOworICAgICAgICB9CisgICAgICAgIG5yX3BhZ2VzIC09IHJjOworICAgICAgICBwZm4gKz0g cmM7CisgICAgICAgIHByb2Nlc3NfcGVuZGluZ19zb2Z0aXJxcygpOworICAgIH0KKworICAgIHJl dHVybiByYzsKK30KKworLyogUG9wdWxhdGUgYW4gSFZNIG1lbW9yeSByYW5nZSB1c2luZyB0aGUg YmlnZ2VzdCBwb3NzaWJsZSBvcmRlci4gKi8KK3N0YXRpYyBpbnQgX19pbml0IHB2aF9wb3B1bGF0 ZV9tZW1vcnlfcmFuZ2Uoc3RydWN0IGRvbWFpbiAqZCwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBzdGFydCwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBucl9wYWdlcykKK3sK KyAgICB1bnNpZ25lZCBpbnQgb3JkZXIsIGkgPSAwOworICAgIHN0cnVjdCBwYWdlX2luZm8gKnBh Z2U7CisgICAgaW50IHJjOworI2RlZmluZSBNQVBfTUFYX0lURVIgNjQKKworICAgIG9yZGVyID0g TUFYX09SREVSOworICAgIHdoaWxlICggbnJfcGFnZXMgIT0gMCApCisgICAgeworICAgICAgICB1 bnNpZ25lZCBpbnQgcmFuZ2Vfb3JkZXIgPSBnZXRfb3JkZXJfZnJvbV9wYWdlcyhucl9wYWdlcyAr IDEpOworCisgICAgICAgIG9yZGVyID0gbWluKHJhbmdlX29yZGVyID8gcmFuZ2Vfb3JkZXIgLSAx IDogMCwgb3JkZXIpOworICAgICAgICBwYWdlID0gYWxsb2NfZG9taGVhcF9wYWdlcyhkLCBvcmRl ciwgbWVtZmxhZ3MpOworICAgICAgICBpZiAoIHBhZ2UgPT0gTlVMTCApCisgICAgICAgIHsKKyAg ICAgICAgICAgIGlmICggb3JkZXIgPT0gMCAmJiBtZW1mbGFncyApCisgICAgICAgICAgICB7Cisg ICAgICAgICAgICAgICAgLyogVHJ5IGFnYWluIHdpdGhvdXQgYW55IG1lbWZsYWdzLiAqLworICAg ICAgICAgICAgICAgIG1lbWZsYWdzID0gMDsKKyAgICAgICAgICAgICAgICBvcmRlciA9IE1BWF9P UkRFUjsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg ICAgIGlmICggb3JkZXIgPT0gMCApCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcHJp bnRrKCJVbmFibGUgdG8gYWxsb2NhdGUgbWVtb3J5IHdpdGggb3JkZXIgMCFcbiIpOworICAgICAg ICAgICAgICAgIHJldHVybiAtRU5PTUVNOworICAgICAgICAgICAgfQorICAgICAgICAgICAgb3Jk ZXItLTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAgcmMgPSBn dWVzdF9waHlzbWFwX2FkZF9wYWdlKGQsIF9nZm4oc3RhcnQpLCBfbWZuKHBhZ2VfdG9fbWZuKHBh Z2UpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZGVyKTsKKyAgICAg ICAgaWYgKCByYyAhPSAwICkKKyAgICAgICAgeworICAgICAgICAgICAgcHJpbnRrKCJGYWlsZWQg dG8gcG9wdWxhdGUgbWVtb3J5OiBbJSNseCwlbHgpOiAlZFxuIiwKKyAgICAgICAgICAgICAgICAg ICBzdGFydCwgc3RhcnQgKyAoMVVMIDw8IG9yZGVyKSwgcmMpOworICAgICAgICAgICAgcmV0dXJu IC1FTk9NRU07CisgICAgICAgIH0KKyAgICAgICAgc3RhcnQgKz0gMVVMIDw8IG9yZGVyOworICAg ICAgICBucl9wYWdlcyAtPSAxVUwgPDwgb3JkZXI7CisgICAgICAgIGlmICggKCsraSAlIE1BUF9N QVhfSVRFUikgPT0gMCApCisgICAgICAgICAgICBwcm9jZXNzX3BlbmRpbmdfc29mdGlycXMoKTsK KyAgICB9CisKKyAgICByZXR1cm4gMDsKKyN1bmRlZiBNQVBfTUFYX0lURVIKK30KKworc3RhdGlj IGludCBfX2luaXQgcHZoX3N0ZWFsX3JhbShzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBsb25n IHNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRyX3QgbGltaXQsIHBh ZGRyX3QgKmFkZHIpCit7CisgICAgdW5zaWduZWQgaW50IGkgPSBkLT5hcmNoLm5yX2U4MjA7CisK KyAgICB3aGlsZSAoIGktLSApCisgICAgeworICAgICAgICBzdHJ1Y3QgZTgyMGVudHJ5ICplbnRy eSA9ICZkLT5hcmNoLmU4MjBbaV07CisKKyAgICAgICAgaWYgKCBlbnRyeS0+dHlwZSAhPSBFODIw X1JBTSB8fCBlbnRyeS0+c2l6ZSA8IHNpemUgKQorICAgICAgICAgICAgY29udGludWU7CisKKyAg ICAgICAgLyogU3VidHJhY3QgZnJvbSB0aGUgYmVnaW5uaW5nLiAqLworICAgICAgICBpZiAoIGVu dHJ5LT5hZGRyICsgc2l6ZSA8PSBsaW1pdCAmJiBlbnRyeS0+YWRkciA+PSBNQigxKSApCisgICAg ICAgIHsKKyAgICAgICAgICAgICphZGRyID0gZW50cnktPmFkZHI7CisgICAgICAgICAgICBlbnRy eS0+YWRkciArPSBzaXplOworICAgICAgICAgICAgZW50cnktPnNpemUgLT0gc2l6ZTsKKyAgICAg ICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIC1FTk9NRU07 Cit9CisKK3N0YXRpYyBpbnQgX19pbml0IHB2aF9zZXR1cF92bXhfcmVhbG1vZGVfaGVscGVycyhz dHJ1Y3QgZG9tYWluICpkKQoreworICAgIHAybV90eXBlX3QgcDJtdDsKKyAgICB1aW50MzJfdCBy YywgKmlkZW50X3B0OworICAgIHVpbnQ4X3QgKnRzczsKKyAgICBtZm5fdCBtZm47CisgICAgcGFk ZHJfdCBnYWRkcjsKKyAgICB1bnNpZ25lZCBpbnQgaTsKKworICAgIC8qCisgICAgICogU3RlYWwg c29tZSBzcGFjZSBmcm9tIHRoZSBsYXN0IGZvdW5kIFJBTSByZWdpb24uIE9uZSBwYWdlIHdpbGwg YmUKKyAgICAgKiB1c2VkIGZvciB0aGUgaWRlbnRpdHkgcGFnZSB0YWJsZXMsIGFuZCB0aGUgcmVt YWluaW5nIHNwYWNlIGZvciB0aGUKKyAgICAgKiBWTTg2IFRTUy4gTm90ZSB0aGF0IGFmdGVyIHRo aXMgbm90IGFsbCBlODIwIHJlZ2lvbnMgd2lsbCBiZSBhbGlnbmVkCisgICAgICogdG8gUEFHRV9T SVpFLgorICAgICAqLworICAgIGlmICggcHZoX3N0ZWFsX3JhbShkLCBQQUdFX1NJWkUgKyBIVk1f Vk04Nl9UU1NfU0laRSwgVUxPTkdfTUFYLCAmZ2FkZHIpICkKKyAgICB7CisgICAgICAgIHByaW50 aygiVW5hYmxlIHRvIGZpbmQgbWVtb3J5IHRvIHN0YXNoIHRoZSBpZGVudGl0eSBtYXAgYW5kIFRT U1xuIik7CisgICAgICAgIHJldHVybiAtRU5PTUVNOworICAgIH0KKworICAgIC8qCisgICAgICog SWRlbnRpdHktbWFwIHBhZ2UgdGFibGUgaXMgcmVxdWlyZWQgZm9yIHJ1bm5pbmcgd2l0aCBDUjAu UEc9MAorICAgICAqIHdoZW4gdXNpbmcgSW50ZWwgRVBULiBDcmVhdGUgYSAzMi1iaXQgbm9uLVBB RSBwYWdlIGRpcmVjdG9yeSBvZgorICAgICAqIHN1cGVycGFnZXMuCisgICAgICovCisgICAgaWRl bnRfcHQgPSBtYXBfZG9tYWluX2dmbihwMm1fZ2V0X2hvc3RwMm0oZCksIF9nZm4oUEZOX0RPV04o Z2FkZHIpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZtZm4sICZwMm10LCAwLCAm cmMpOworICAgIGlmICggaWRlbnRfcHQgPT0gTlVMTCApCisgICAgeworICAgICAgICBwcmludGso IlVuYWJsZSB0byBtYXAgaWRlbnRpdHkgcGFnZSB0YWJsZXNcbiIpOworICAgICAgICByZXR1cm4g LUVOT01FTTsKKyAgICB9CisgICAgZm9yICggaSA9IDA7IGkgPCBQQUdFX1NJWkUgLyBzaXplb2Yo KmlkZW50X3B0KTsgaSsrICkKKyAgICAgICAgaWRlbnRfcHRbaV0gPSAoKGkgPDwgMjIpIHwgX1BB R0VfUFJFU0VOVCB8IF9QQUdFX1JXIHwgX1BBR0VfVVNFUiB8CisgICAgICAgICAgICAgICAgICAg ICAgIF9QQUdFX0FDQ0VTU0VEIHwgX1BBR0VfRElSVFkgfCBfUEFHRV9QU0UpOworICAgIHVubWFw X2RvbWFpbl9wYWdlKGlkZW50X3B0KTsKKyAgICBwdXRfcGFnZShtZm5fdG9fcGFnZShtZm5feCht Zm4pKSk7CisgICAgZC0+YXJjaC5odm1fZG9tYWluLnBhcmFtc1tIVk1fUEFSQU1fSURFTlRfUFRd ID0gZ2FkZHI7CisgICAgZ2FkZHIgKz0gUEFHRV9TSVpFOworICAgIEFTU0VSVChJU19BTElHTkVE KGdhZGRyLCBQQUdFX1NJWkUpKTsKKworICAgIHRzcyA9IG1hcF9kb21haW5fZ2ZuKHAybV9nZXRf aG9zdHAybShkKSwgX2dmbihQRk5fRE9XTihnYWRkcikpLAorICAgICAgICAgICAgICAgICAgICAg ICAgICZtZm4sICZwMm10LCAwLCAmcmMpOworICAgIGlmICggdHNzID09IE5VTEwgKQorICAgIHsK KyAgICAgICAgcHJpbnRrKCJVbmFibGUgdG8gbWFwIFZNODYgVFNTIGFyZWFcbiIpOworICAgICAg ICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBtZW1zZXQodHNzLCAwLCBIVk1fVk04Nl9UU1NfU0la RSk7CisgICAgdW5tYXBfZG9tYWluX3BhZ2UodHNzKTsKKyAgICBwdXRfcGFnZShtZm5fdG9fcGFn ZShtZm5feChtZm4pKSk7CisgICAgZC0+YXJjaC5odm1fZG9tYWluLnBhcmFtc1tIVk1fUEFSQU1f Vk04Nl9UU1NdID0gZ2FkZHI7CisKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQgX19p bml0IHB2aF9zdGVhbF9sb3dfcmFtKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGxvbmcgc3Rh cnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBu cl9wYWdlcykKK3sKKyAgICB1bnNpZ25lZCBsb25nIG1mbjsKKworICAgIEFTU0VSVChzdGFydCAr IG5yX3BhZ2VzIDw9IFBGTl9ET1dOKE1CKDEpKSk7CisKKyAgICBmb3IgKCBtZm4gPSBzdGFydDsg bWZuIDwgc3RhcnQgKyBucl9wYWdlczsgbWZuKysgKQorICAgIHsKKyAgICAgICAgc3RydWN0IHBh Z2VfaW5mbyAqcGcgPSBtZm5fdG9fcGFnZShtZm4pOworICAgICAgICBpbnQgcmM7CisKKyAgICAg ICAgcmMgPSB1bnNoYXJlX3hlbl9wYWdlX3dpdGhfZ3Vlc3QocGcsIGRvbV9pbyk7CisgICAgICAg IGlmICggcmMgKQorICAgICAgICB7CisgICAgICAgICAgICBwcmludGsoIlVuYWJsZSB0byB1bnNo YXJlIFhlbiBtZm4gJSNseDogJWRcbiIsIG1mbiwgcmMpOworICAgICAgICAgICAgY29udGludWU7 CisgICAgICAgIH0KKworICAgICAgICBzaGFyZV94ZW5fcGFnZV93aXRoX2d1ZXN0KHBnLCBkLCBY RU5TSEFSRV93cml0YWJsZSk7CisgICAgICAgIHJjID0gZ3Vlc3RfcGh5c21hcF9hZGRfZW50cnko ZCwgX2dmbihtZm4pLCBfbWZuKG1mbiksIDAsIHAybV9yYW1fcncpOworICAgICAgICBpZiAoIHJj ICkKKyAgICAgICAgICAgIHByaW50aygiVW5hYmxlIHRvIGFkZCBtZm4gJSNseCB0byBwMm06ICVk XG4iLCBtZm4sIHJjKTsKKyAgICB9Cit9CisKK3N0YXRpYyBpbnQgX19pbml0IHB2aF9zZXR1cF9w Mm0oc3RydWN0IGRvbWFpbiAqZCkKK3sKKyAgICBzdHJ1Y3QgdmNwdSAqdiA9IGQtPnZjcHVbMF07 CisgICAgdW5zaWduZWQgbG9uZyBucl9wYWdlczsKKyAgICB1bnNpZ25lZCBpbnQgaTsKKyAgICBp bnQgcmM7CisgICAgYm9vbCBwcmVlbXB0ZWQ7CisjZGVmaW5lIE1CMV9QQUdFUyBQRk5fRE9XTihN QigxKSkKKworICAgIG5yX3BhZ2VzID0gY29tcHV0ZV9kb20wX25yX3BhZ2VzKGQsIE5VTEwsIDAp OworCisgICAgcHZoX3NldHVwX2U4MjAoZCwgbnJfcGFnZXMpOworICAgIGRvIHsKKyAgICAgICAg cHJlZW1wdGVkID0gZmFsc2U7CisgICAgICAgIHBhZ2luZ19zZXRfYWxsb2NhdGlvbihkLCBkb20w X3BhZ2luZ19wYWdlcyhkLCBucl9wYWdlcyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAmcHJlZW1wdGVkKTsKKyAgICAgICAgcHJvY2Vzc19wZW5kaW5nX3NvZnRpcnFzKCk7CisgICAg fSB3aGlsZSAoIHByZWVtcHRlZCApOworCisgICAgLyoKKyAgICAgKiBNZW1vcnkgYmVsb3cgMU1C IGlzIGlkZW50aXR5IG1hcHBlZC4KKyAgICAgKiBOQjogdGhpcyBvbmx5IG1ha2VzIHNlbnNlIHdo ZW4gYm9vdGVkIGZyb20gbGVnYWN5IEJJT1MuCisgICAgICovCisgICAgcmMgPSBtb2RpZnlfaWRl bnRpdHlfbW1pbyhkLCAwLCBQRk5fRE9XTihNQigxKSksIHRydWUpOworICAgIGlmICggcmMgKQor ICAgIHsKKyAgICAgICAgcHJpbnRrKCJGYWlsZWQgdG8gaWRlbnRpdHkgbWFwIGxvdyAxTUI6ICVk XG4iLCByYyk7CisgICAgICAgIHJldHVybiByYzsKKyAgICB9CisKKyAgICAvKiBQb3B1bGF0ZSBt ZW1vcnkgbWFwLiAqLworICAgIGZvciAoIGkgPSAwOyBpIDwgZC0+YXJjaC5ucl9lODIwOyBpKysg KQorICAgIHsKKyAgICAgICAgdW5zaWduZWQgbG9uZyBhZGRyLCBzaXplOworCisgICAgICAgIGlm ICggZC0+YXJjaC5lODIwW2ldLnR5cGUgIT0gRTgyMF9SQU0gKQorICAgICAgICAgICAgY29udGlu dWU7CisKKyAgICAgICAgYWRkciA9IFBGTl9ET1dOKGQtPmFyY2guZTgyMFtpXS5hZGRyKTsKKyAg ICAgICAgc2l6ZSA9IFBGTl9ET1dOKGQtPmFyY2guZTgyMFtpXS5zaXplKTsKKworICAgICAgICBB U1NFUlQoYWRkciA+PSBNQjFfUEFHRVMgfHwgYWRkciArIHNpemUgPCBNQjFfUEFHRVMpOworCisg ICAgICAgIGlmICggYWRkciA+PSBNQjFfUEFHRVMgKQorICAgICAgICAgICAgcmMgPSBwdmhfcG9w dWxhdGVfbWVtb3J5X3JhbmdlKGQsIGFkZHIsIHNpemUpOworICAgICAgICBlbHNlCisgICAgICAg ICAgICBwdmhfc3RlYWxfbG93X3JhbShkLCBhZGRyLCBzaXplKTsKKworICAgICAgICBpZiAoIHJj ICkKKyAgICAgICAgICAgIHJldHVybiByYzsKKyAgICB9CisKKyAgICBpZiAoIGNwdV9oYXNfdm14 ICYmIHBhZ2luZ19tb2RlX2hhcChkKSAmJiAhdm14X3VucmVzdHJpY3RlZF9ndWVzdCh2KSApCisg ICAgeworICAgICAgICAvKgorICAgICAgICAgKiBTaW5jZSBEb20wIGNhbm5vdCBiZSBtaWdyYXRl ZCwgd2Ugd2lsbCBvbmx5IHNldHVwIHRoZQorICAgICAgICAgKiB1bnJlc3RyaWN0ZWQgZ3Vlc3Qg aGVscGVycyBpZiB0aGV5IGFyZSBuZWVkZWQgYnkgdGhlIGN1cnJlbnQKKyAgICAgICAgICogaGFy ZHdhcmUgd2UgYXJlIHJ1bm5pbmcgb24uCisgICAgICAgICAqLworICAgICAgICByYyA9IHB2aF9z ZXR1cF92bXhfcmVhbG1vZGVfaGVscGVycyhkKTsKKyAgICAgICAgaWYgKCByYyApCisgICAgICAg ICAgICByZXR1cm4gcmM7CisgICAgfQorCisgICAgcmV0dXJuIDA7CisjdW5kZWYgTUIxX1BBR0VT Cit9CisKIHN0YXRpYyBpbnQgX19pbml0IGNvbnN0cnVjdF9kb20wX3B2aChzdHJ1Y3QgZG9tYWlu ICpkLCBjb25zdCBtb2R1bGVfdCAqaW1hZ2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgdW5zaWduZWQgbG9uZyBpbWFnZV9oZWFkcm9vbSwKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBtb2R1bGVfdCAqaW5pdHJkLAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHZvaWQgKigqYm9vdHN0cmFwX21hcCkoY29uc3QgbW9kdWxlX3Qg KiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqY21kbGluZSkK IHsKKyAgICBpbnQgcmM7CiAKICAgICBwcmludGsoIioqIEJ1aWxkaW5nIGEgUFZIIERvbTAgKipc biIpOwogCisgICAgaW9tbXVfaHdkb21faW5pdChkKTsKKworICAgIHJjID0gcHZoX3NldHVwX3Ay bShkKTsKKyAgICBpZiAoIHJjICkKKyAgICB7CisgICAgICAgIHByaW50aygiRmFpbGVkIHRvIHNl dHVwIERvbTAgcGh5c2ljYWwgbWVtb3J5IG1hcFxuIik7CisgICAgICAgIHJldHVybiByYzsKKyAg ICB9CisKICAgICByZXR1cm4gMDsKIH0KIApkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L21tLmMg Yi94ZW4vYXJjaC94ODYvbW0uYwppbmRleCBhNTUyMWYxLi43MjFhNTg3IDEwMDY0NAotLS0gYS94 ZW4vYXJjaC94ODYvbW0uYworKysgYi94ZW4vYXJjaC94ODYvbW0uYwpAQCAtNDc1LDYgKzQ3NSwy MiBAQCB2b2lkIHNoYXJlX3hlbl9wYWdlX3dpdGhfZ3Vlc3QoCiAgICAgc3Bpbl91bmxvY2soJmQt PnBhZ2VfYWxsb2NfbG9jayk7CiB9CiAKK2ludCBfX2luaXQgdW5zaGFyZV94ZW5fcGFnZV93aXRo X2d1ZXN0KHN0cnVjdCBwYWdlX2luZm8gKnBhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBzdHJ1Y3QgZG9tYWluICpkKQoreworICAgIGlmICggcGFnZV9nZXRfb3du ZXIocGFnZSkgIT0gZCB8fCAhaXNfeGVuX2hlYXBfcGFnZShwYWdlKSApCisgICAgICAgIHJldHVy biAtRUlOVkFMOworCisgICAgaWYgKCB0ZXN0X2FuZF9jbGVhcl9iaXQoX1BHQ19hbGxvY2F0ZWQs ICZwYWdlLT5jb3VudF9pbmZvKSApCisgICAgICAgIHB1dF9wYWdlKHBhZ2UpOworCisgICAgLyog UmVtb3ZlIHRoZSBvd25lciBhbmQgY2xlYXIgdGhlIGZsYWdzLiAqLworICAgIHBhZ2UtPnUuaW51 c2UudHlwZV9pbmZvID0gMDsKKyAgICBwYWdlX3NldF9vd25lcihwYWdlLCBOVUxMKTsKKworICAg IHJldHVybiAwOworfQorCiB2b2lkIHNoYXJlX3hlbl9wYWdlX3dpdGhfcHJpdmlsZWdlZF9ndWVz dHMoCiAgICAgc3RydWN0IHBhZ2VfaW5mbyAqcGFnZSwgaW50IHJlYWRvbmx5KQogewpkaWZmIC0t Z2l0IGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9tbS5oIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9tbS5o CmluZGV4IDkzYTA3M2QuLjNkMDJlYmIgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL2FzbS14ODYv bW0uaAorKysgYi94ZW4vaW5jbHVkZS9hc20teDg2L21tLmgKQEAgLTI3Niw2ICsyNzYsOCBAQCBz dHJ1Y3Qgc3BhZ2VfaW5mbwogI2RlZmluZSBYRU5TSEFSRV9yZWFkb25seSAxCiBleHRlcm4gdm9p ZCBzaGFyZV94ZW5fcGFnZV93aXRoX2d1ZXN0KAogICAgIHN0cnVjdCBwYWdlX2luZm8gKnBhZ2Us IHN0cnVjdCBkb21haW4gKmQsIGludCByZWFkb25seSk7CitleHRlcm4gaW50IHVuc2hhcmVfeGVu X3BhZ2Vfd2l0aF9ndWVzdChzdHJ1Y3QgcGFnZV9pbmZvICpwYWdlLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGRvbWFpbiAqZCk7CiBleHRlcm4gdm9pZCBz aGFyZV94ZW5fcGFnZV93aXRoX3ByaXZpbGVnZWRfZ3Vlc3RzKAogICAgIHN0cnVjdCBwYWdlX2lu Zm8gKnBhZ2UsIGludCByZWFkb25seSk7CiBleHRlcm4gdm9pZCBmcmVlX3NoYXJlZF9kb21oZWFw X3BhZ2Uoc3RydWN0IHBhZ2VfaW5mbyAqcGFnZSk7Ci0tIAoyLjEwLjEgKEFwcGxlIEdpdC03OCkK CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2 ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHBzOi8vbGlzdHMueGVu Lm9yZy94ZW4tZGV2ZWwK