From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tamas K Lengyel Subject: [PATCH v3 1/2] x86/mem-sharing: Bulk mem-sharing entire domains Date: Thu, 12 May 2016 09:25:51 -0600 Message-ID: <1463066752-23969-1-git-send-email-tamas@tklengyel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta6.messagelabs.com ([85.158.143.247]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1b0sUy-0004IL-OS for xen-devel@lists.xenproject.org; Thu, 12 May 2016 15:26:00 +0000 Received: by mail-ig0-f193.google.com with SMTP id rc4so32454igc.0 for ; Thu, 12 May 2016 08:25:59 -0700 (PDT) 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: Tamas K Lengyel List-Id: xen-devel@lists.xenproject.org Q3VycmVudGx5IG1lbS1zaGFyaW5nIGNhbiBiZSBwZXJmb3JtZWQgb24gYSBwYWdlLWJ5LXBhZ2Ug YmFzZSBmcm9tIHRoZSBjb250cm9sCmRvbWFpbi4gSG93ZXZlciwgd2hlbiBjb21wbGV0ZWx5IGRl ZHVwbGljYXRpbmcgKGNsb25pbmcpIGEgVk0sIHRoaXMgcmVxdWlyZXMKYXQgbGVhc3QgMyBoeXBl cmNhbGxzIHBlciBwYWdlLiBBcyB0aGUgdXNlciBoYXMgdG8gbG9vcCB0aHJvdWdoIGFsbCBwYWdl cyB1cAp0byBtYXhfZ3BmbiwgdGhpcyBwcm9jZXNzIGlzIHZlcnkgc2xvdyBhbmQgd2FzdGVmdWwu CgpUaGlzIHBhdGNoIGludHJvZHVjZXMgYSBuZXcgbWVtX3NoYXJpbmcgbWVtb3AgZm9yIGJ1bGsg ZGVkdXBsaWNhdGlvbiB3aGVyZQp0aGUgdXNlciBkb2Vzbid0IGhhdmUgdG8gc2VwYXJhdGVseSBu b21pbmF0ZSBlYWNoIHBhZ2UgaW4gYm90aCB0aGUgc291cmNlIGFuZApkZXN0aW5hdGlvbiBkb21h aW4sIGFuZCB0aGUgbG9vcGluZyBvdmVyIGFsbCBwYWdlcyBoYXBwZW4gaW4gdGhlIGh5cGVydmlz b3IuClRoaXMgc2lnbmlmaWNhbnRseSByZWR1Y2VzIHRoZSBvdmVyaGVhZCBvZiBjb21wbGV0ZWx5 IGRlZHVwbGljYXRpbmcgZW50aXJlCmRvbWFpbnMuCgpTaWduZWQtb2ZmLWJ5OiBUYW1hcyBLIExl bmd5ZWwgPHRhbWFzQHRrbGVuZ3llbC5jb20+CkFja2VkLWJ5OiBXZWkgTGl1IDx3ZWkubGl1MkBj aXRyaXguY29tPgotLS0KSWFuIEphY2tzb24gPGlhbi5qYWNrc29uQGV1LmNpdHJpeC5jb20+Ckdl b3JnZSBEdW5sYXAgPGdlb3JnZS5kdW5sYXBAZXUuY2l0cml4LmNvbT4KSmFuIEJldWxpY2ggPGpi ZXVsaWNoQHN1c2UuY29tPgpBbmRyZXcgQ29vcGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29t PgoKdjM6IEJhaWwgaWYgZG9tYWlucyBhcmUgbm90IHBhdXNlZAogICAgUmVuYW1lIGJ1bGtfc2hh cmUgc3RydWN0IHRvIGp1c3QgYnVsawogICAgUmV0dXJuIC1FTk9NRU0gZXJyb3IgaWYgbm9taW5h dGlvbiBmYWlscwogICAgUmV0dXJuIHRvdGFsIG51bWJlciBvZiBzaGFyZWQgcGFnZXMgKG5vdCBr ZWVwaW5nIHNlcGFyYXRlIGNvdW50KQp2MjogU3Rhc2ggaHlwZXJjYWxsIGNvbnRpbnVhdGlvbiBz dGFydCBwb2ludCBpbiB4ZW5fbWVtX3NoYXJpbmdfb3BfdAogICAgUmV0dXJuIG51bWJlciBvZiBz dWNjZXNzZnVsbHkgc2hhcmVkIHBhZ2VzIGluIHhlbl9tZW1fc2hhcmluZ19vcF90Ci0tLQogdG9v bHMvbGlieGMvaW5jbHVkZS94ZW5jdHJsLmggfCAgMTUgKysrKysrKwogdG9vbHMvbGlieGMveGNf bWVtc2hyLmMgICAgICAgfCAgMTkgKysrKysrKysKIHhlbi9hcmNoL3g4Ni9tbS9tZW1fc2hhcmlu Zy5jIHwgMTAwICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogeGVu L2luY2x1ZGUvcHVibGljL21lbW9yeS5oICAgfCAgMTQgKysrKystCiA0IGZpbGVzIGNoYW5nZWQs IDE0NyBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvdG9vbHMvbGli eGMvaW5jbHVkZS94ZW5jdHJsLmggYi90b29scy9saWJ4Yy9pbmNsdWRlL3hlbmN0cmwuaAppbmRl eCBkYzU0NjEyLi4yOWZmMTNlIDEwMDY0NAotLS0gYS90b29scy9saWJ4Yy9pbmNsdWRlL3hlbmN0 cmwuaAorKysgYi90b29scy9saWJ4Yy9pbmNsdWRlL3hlbmN0cmwuaApAQCAtMjMyNyw2ICsyMzI3 LDIxIEBAIGludCB4Y19tZW1zaHJfYWRkX3RvX3BoeXNtYXAoeGNfaW50ZXJmYWNlICp4Y2gsCiAg ICAgICAgICAgICAgICAgICAgIGRvbWlkX3QgY2xpZW50X2RvbWFpbiwKICAgICAgICAgICAgICAg ICAgICAgdW5zaWduZWQgbG9uZyBjbGllbnRfZ2ZuKTsKIAorLyogQWxsb3dzIHRvIGRlZHVwbGlj YXRlIHRoZSBlbnRpcmUgbWVtb3J5IG9mIGEgY2xpZW50IGRvbWFpbiBpbiBidWxrLiBVc2luZwor ICogdGhpcyBmdW5jdGlvbiBpcyBlcXVpdmFsZW50IG9mIGNhbGxpbmcgeGNfbWVtc2hyX25vbWlu YXRlX2dmbiBmb3IgZWFjaCBnZm4KKyAqIGluIHRoZSB0d28gZG9tYWlucyBmb2xsb3dlZCBieSB4 Y19tZW1zaHJfc2hhcmVfZ2Zucy4gSWYgc3VjY2Vzc2Z1bGwsCisgKiByZXR1cm5zIHRoZSBudW1i ZXIgb2Ygc2hhcmVkIHBhZ2VzIGluICdzaGFyZWQnLiBCb3RoIGRvbWFpbnMgbXVzdCBiZSBwYXVz ZWQuCisgKgorICogTWF5IGZhaWwgd2l0aCAtRUlOVkFMIGlmIHRoZSBzb3VyY2UgYW5kIGNsaWVu dCBkb21haW4gaGF2ZSBkaWZmZXJlbnQKKyAqIG1lbW9yeSBzaXplIG9yIGlmIG1lbW9yeSBzaGFy aW5nIGlzIG5vdCBlbmFibGVkIG9uIGVpdGhlciBvZiB0aGUgZG9tYWlucy4KKyAqIE1heSBhbHNv IGZhaWwgd2l0aCAtRU5PTUVNIGlmIHRoZXJlIGlzbid0IGVub3VnaCBtZW1vcnkgYXZhaWxhYmxl IHRvIHN0b3JlCisgKiB0aGUgc2hhcmluZyBtZXRhZGF0YSBiZWZvcmUgZGVkdXBsaWNhdGlvbiBj YW4gaGFwcGVuLgorICovCitpbnQgeGNfbWVtc2hyX2J1bGtfc2hhcmUoeGNfaW50ZXJmYWNlICp4 Y2gsCisgICAgICAgICAgICAgICAgICAgICAgICAgZG9taWRfdCBzb3VyY2VfZG9tYWluLAorICAg ICAgICAgICAgICAgICAgICAgICAgIGRvbWlkX3QgY2xpZW50X2RvbWFpbiwKKyAgICAgICAgICAg ICAgICAgICAgICAgICB1aW50NjRfdCAqc2hhcmVkKTsKKwogLyogRGVidWcgY2FsbHM6IHJldHVy biB0aGUgbnVtYmVyIG9mIHBhZ2VzIHJlZmVyZW5jaW5nIHRoZSBzaGFyZWQgZnJhbWUgYmFja2lu ZwogICogdGhlIGlucHV0IGFyZ3VtZW50LiBTaG91bGQgYmUgb25lIG9yIGdyZWF0ZXIuIAogICoK ZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnhjL3hjX21lbXNoci5jIGIvdG9vbHMvbGlieGMveGNfbWVt c2hyLmMKaW5kZXggZGViMGFhNC4uNzEzNTBkMiAxMDA2NDQKLS0tIGEvdG9vbHMvbGlieGMveGNf bWVtc2hyLmMKKysrIGIvdG9vbHMvbGlieGMveGNfbWVtc2hyLmMKQEAgLTE4MSw2ICsxODEsMjUg QEAgaW50IHhjX21lbXNocl9hZGRfdG9fcGh5c21hcCh4Y19pbnRlcmZhY2UgKnhjaCwKICAgICBy ZXR1cm4geGNfbWVtc2hyX21lbW9wKHhjaCwgc291cmNlX2RvbWFpbiwgJm1zbyk7CiB9CiAKK2lu dCB4Y19tZW1zaHJfYnVsa19zaGFyZSh4Y19pbnRlcmZhY2UgKnhjaCwKKyAgICAgICAgICAgICAg ICAgICAgICAgICBkb21pZF90IHNvdXJjZV9kb21haW4sCisgICAgICAgICAgICAgICAgICAgICAg ICAgZG9taWRfdCBjbGllbnRfZG9tYWluLAorICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ2 NF90ICpzaGFyZWQpCit7CisgICAgaW50IHJjOworICAgIHhlbl9tZW1fc2hhcmluZ19vcF90IG1z bzsKKworICAgIG1lbXNldCgmbXNvLCAwLCBzaXplb2YobXNvKSk7CisKKyAgICBtc28ub3AgPSBY RU5NRU1fc2hhcmluZ19vcF9idWxrX3NoYXJlOworICAgIG1zby51LmJ1bGsuY2xpZW50X2RvbWFp biA9IGNsaWVudF9kb21haW47CisKKyAgICByYyA9IHhjX21lbXNocl9tZW1vcCh4Y2gsIHNvdXJj ZV9kb21haW4sICZtc28pOworICAgIGlmICggIXJjICYmIHNoYXJlZCApICpzaGFyZWQgPSBtc28u dS5idWxrLnNoYXJlZDsKKworICAgIHJldHVybiByYzsKK30KKwogaW50IHhjX21lbXNocl9kb21h aW5fcmVzdW1lKHhjX2ludGVyZmFjZSAqeGNoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg IGRvbWlkX3QgZG9taWQpCiB7CmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvbW0vbWVtX3NoYXJp bmcuYyBiL3hlbi9hcmNoL3g4Ni9tbS9tZW1fc2hhcmluZy5jCmluZGV4IGE1MjI0MjMuLjA2MTc2 YWEgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9tbS9tZW1fc2hhcmluZy5jCisrKyBiL3hlbi9h cmNoL3g4Ni9tbS9tZW1fc2hhcmluZy5jCkBAIC0xMjk0LDYgKzEyOTQsNDMgQEAgaW50IHJlbGlu cXVpc2hfc2hhcmVkX3BhZ2VzKHN0cnVjdCBkb21haW4gKmQpCiAgICAgcmV0dXJuIHJjOwogfQog CitzdGF0aWMgaW50IGJ1bGtfc2hhcmUoc3RydWN0IGRvbWFpbiAqZCwgc3RydWN0IGRvbWFpbiAq Y2QsIHVuc2lnbmVkIGxvbmcgbWF4LAorICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBtZW1f c2hhcmluZ19vcF9idWxrICpidWxrKQoreworICAgIGludCByYzsKKyAgICBzaHJfaGFuZGxlX3Qg c2gsIGNoOworCisgICAgd2hpbGUoIGJ1bGstPnN0YXJ0IDw9IG1heCApCisgICAgeworICAgICAg ICByYyA9IG1lbV9zaGFyaW5nX25vbWluYXRlX3BhZ2UoZCwgYnVsay0+c3RhcnQsIDAsICZzaCk7 CisgICAgICAgIGlmICggcmMgPT0gLUVOT01FTSApCisgICAgICAgICAgICBicmVhazsKKyAgICAg ICAgaWYgKCAhcmMgKQorICAgICAgICB7CisgICAgICAgICAgICByYyA9IG1lbV9zaGFyaW5nX25v bWluYXRlX3BhZ2UoY2QsIGJ1bGstPnN0YXJ0LCAwLCAmY2gpOworICAgICAgICAgICAgaWYgKCBy YyA9PSAtRU5PTUVNICkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGlmICgg IXJjICkKKyAgICAgICAgICAgICAgICBtZW1fc2hhcmluZ19zaGFyZV9wYWdlcyhkLCBidWxrLT5z dGFydCwgc2gsIGNkLCBidWxrLT5zdGFydCwgY2gpOworICAgICAgICB9CisKKyAgICAgICAgKyso YnVsay0+c3RhcnQpOworCisgICAgICAgIC8qIENoZWNrIGZvciBjb250aW51YXRpb24gaWYgaXQn cyBub3QgdGhlIGxhc3QgaXRlcmF0aW9uLiAqLworICAgICAgICBpZiAoIGJ1bGstPnN0YXJ0IDwg bWF4ICYmIGh5cGVyY2FsbF9wcmVlbXB0X2NoZWNrKCkgKQorICAgICAgICB7CisgICAgICAgICAg ICByYyA9IDE7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8q IFdlIG9ubHkgcHJvcGFnYXRlIC1FTk9NRU0gc28gcmVzZXQgcmMgaGVyZSAqLworICAgIGlmICgg cmMgPCAwICYmIHJjICE9IC1FTk9NRU0gKQorICAgICAgICByYyA9IDA7CisKKyAgICByZXR1cm4g cmM7Cit9CisKIGludCBtZW1fc2hhcmluZ19tZW1vcChYRU5fR1VFU1RfSEFORExFX1BBUkFNKHhl bl9tZW1fc2hhcmluZ19vcF90KSBhcmcpCiB7CiAgICAgaW50IHJjOwpAQCAtMTQ2OCw2ICsxNTA1 LDY5IEBAIGludCBtZW1fc2hhcmluZ19tZW1vcChYRU5fR1VFU1RfSEFORExFX1BBUkFNKHhlbl9t ZW1fc2hhcmluZ19vcF90KSBhcmcpCiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAKKyAgICAg ICAgY2FzZSBYRU5NRU1fc2hhcmluZ19vcF9idWxrX3NoYXJlOgorICAgICAgICB7CisgICAgICAg ICAgICB1bnNpZ25lZCBsb25nIG1heF9zZ2ZuLCBtYXhfY2dmbjsKKyAgICAgICAgICAgIHN0cnVj dCBkb21haW4gKmNkOworCisgICAgICAgICAgICByYyA9IC1FSU5WQUw7CisgICAgICAgICAgICBp ZiAoICFtZW1fc2hhcmluZ19lbmFibGVkKGQpICkKKyAgICAgICAgICAgICAgICBnb3RvIG91dDsK KworICAgICAgICAgICAgcmMgPSByY3VfbG9ja19saXZlX3JlbW90ZV9kb21haW5fYnlfaWQobXNv LnUuYnVsay5jbGllbnRfZG9tYWluLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgJmNkKTsKKyAgICAgICAgICAgIGlmICggcmMgKQorICAgICAgICAg ICAgICAgIGdvdG8gb3V0OworCisgICAgICAgICAgICByYyA9IHhzbV9tZW1fc2hhcmluZ19vcChY U01fRE1fUFJJViwgZCwgY2QsIG1zby5vcCk7CisgICAgICAgICAgICBpZiAoIHJjICkKKyAgICAg ICAgICAgIHsKKyAgICAgICAgICAgICAgICByY3VfdW5sb2NrX2RvbWFpbihjZCk7CisgICAgICAg ICAgICAgICAgZ290byBvdXQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICggIW1l bV9zaGFyaW5nX2VuYWJsZWQoY2QpICkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBy Y3VfdW5sb2NrX2RvbWFpbihjZCk7CisgICAgICAgICAgICAgICAgcmMgPSAtRUlOVkFMOworICAg ICAgICAgICAgICAgIGdvdG8gb3V0OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAo ICFhdG9taWNfcmVhZCgmZC0+cGF1c2VfY291bnQpIHx8CisgICAgICAgICAgICAgICAgICFhdG9t aWNfcmVhZCgmY2QtPnBhdXNlX2NvdW50KSApCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg ICAgcmN1X3VubG9ja19kb21haW4oY2QpOworICAgICAgICAgICAgICAgIHJjID0gLUVJTlZBTDsK KyAgICAgICAgICAgICAgICBnb3RvIG91dDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg bWF4X3NnZm4gPSBkb21haW5fZ2V0X21heGltdW1fZ3BmbihkKTsKKyAgICAgICAgICAgIG1heF9j Z2ZuID0gZG9tYWluX2dldF9tYXhpbXVtX2dwZm4oY2QpOworCisgICAgICAgICAgICBpZiAoIG1h eF9zZ2ZuICE9IG1heF9jZ2ZuIHx8IG1heF9zZ2ZuIDwgbXNvLnUuYnVsay5zdGFydCApCisgICAg ICAgICAgICB7CisgICAgICAgICAgICAgICAgcmN1X3VubG9ja19kb21haW4oY2QpOworICAgICAg ICAgICAgICAgIHJjID0gLUVJTlZBTDsKKyAgICAgICAgICAgICAgICBnb3RvIG91dDsKKyAgICAg ICAgICAgIH0KKworICAgICAgICAgICAgcmMgPSBidWxrX3NoYXJlKGQsIGNkLCBtYXhfc2dmbiwg Jm1zby51LmJ1bGspOworICAgICAgICAgICAgaWYgKCByYyA+IDAgKQorICAgICAgICAgICAgewor ICAgICAgICAgICAgICAgIGlmICggX19jb3B5X3RvX2d1ZXN0KGFyZywgJm1zbywgMSkgKQorICAg ICAgICAgICAgICAgICAgICByYyA9IC1FRkFVTFQ7CisgICAgICAgICAgICAgICAgZWxzZQorICAg ICAgICAgICAgICAgICAgICByYyA9IGh5cGVyY2FsbF9jcmVhdGVfY29udGludWF0aW9uKF9fSFlQ RVJWSVNPUl9tZW1vcnlfb3AsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgImxoIiwgWEVOTUVNX3NoYXJpbmdfb3AsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJnKTsKKyAgICAgICAg ICAgIH0KKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBtc28udS5idWxrLnNoYXJl ZCA9IGF0b21pY19yZWFkKCZjZC0+c2hyX3BhZ2VzKTsKKworICAgICAgICAgICAgcmN1X3VubG9j a19kb21haW4oY2QpOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworCiAgICAgICAgIGNhc2Ug WEVOTUVNX3NoYXJpbmdfb3BfZGVidWdfZ2ZuOgogICAgICAgICB7CiAgICAgICAgICAgICB1bnNp Z25lZCBsb25nIGdmbiA9IG1zby51LmRlYnVnLnUuZ2ZuOwpkaWZmIC0tZ2l0IGEveGVuL2luY2x1 ZGUvcHVibGljL21lbW9yeS5oIGIveGVuL2luY2x1ZGUvcHVibGljL21lbW9yeS5oCmluZGV4IGZl NTJlZTEuLjIwMjI1MGEgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL3B1YmxpYy9tZW1vcnkuaAor KysgYi94ZW4vaW5jbHVkZS9wdWJsaWMvbWVtb3J5LmgKQEAgLTQ1Myw2ICs0NTMsNyBAQCBERUZJ TkVfWEVOX0dVRVNUX0hBTkRMRSh4ZW5fbWVtX2FjY2Vzc19vcF90KTsKICNkZWZpbmUgWEVOTUVN X3NoYXJpbmdfb3BfZGVidWdfZ3JlZiAgICAgICAgNQogI2RlZmluZSBYRU5NRU1fc2hhcmluZ19v cF9hZGRfcGh5c21hcCAgICAgICA2CiAjZGVmaW5lIFhFTk1FTV9zaGFyaW5nX29wX2F1ZGl0ICAg ICAgICAgICAgIDcKKyNkZWZpbmUgWEVOTUVNX3NoYXJpbmdfb3BfYnVsa19zaGFyZSAgICAgICAg OAogCiAjZGVmaW5lIFhFTk1FTV9TSEFSSU5HX09QX1NfSEFORExFX0lOVkFMSUQgICgtMTApCiAj ZGVmaW5lIFhFTk1FTV9TSEFSSU5HX09QX0NfSEFORExFX0lOVkFMSUQgICgtOSkKQEAgLTQ4OCw3 ICs0ODksMTggQEAgc3RydWN0IHhlbl9tZW1fc2hhcmluZ19vcCB7CiAgICAgICAgICAgICB1aW50 NjRfYWxpZ25lZF90IGNsaWVudF9nZm47ICAgIC8qIElOOiB0aGUgY2xpZW50IGdmbiAqLwogICAg ICAgICAgICAgdWludDY0X2FsaWduZWRfdCBjbGllbnRfaGFuZGxlOyAvKiBJTjogaGFuZGxlIHRv IHRoZSBjbGllbnQgcGFnZSAqLwogICAgICAgICAgICAgZG9taWRfdCAgY2xpZW50X2RvbWFpbjsg LyogSU46IHRoZSBjbGllbnQgZG9tYWluIGlkICovCi0gICAgICAgIH0gc2hhcmU7IAorICAgICAg ICB9IHNoYXJlOworICAgICAgICBzdHJ1Y3QgbWVtX3NoYXJpbmdfb3BfYnVsayB7ICAgICAgICAg LyogT1BfQlVMS19TSEFSRSAqLworICAgICAgICAgICAgdWludDY0X2FsaWduZWRfdCBzdGFydDsg ICAgICAgICAgLyogSU46IHN0YXJ0IGdmbi4gU2V0IHRvIDAgZm9yCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdWxsIGRlZHVwbGljYXRpb24uIEZpZWxk IGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2Vk IGludGVybmFsbHkgYW5kIG1heSBjaGFuZ2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHdoZW4gdGhlIGh5cGVyY2FsbCByZXR1cm5zLiAqLworICAgICAg ICAgICAgdWludDY0X2FsaWduZWRfdCBzaGFyZWQ7ICAgICAgICAgLyogT1VUOiB0aGUgbnVtYmVy IG9mIGdmbnMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHRoYXQgYXJlIHNoYXJlZCBhZnRlciB0aGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBvcGVyYXRpb24gaW5jbHVkaW5nIHBhZ2VzCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHJlYWR5IHNoYXJlZCBiZWZv cmUgKi8KKyAgICAgICAgICAgIGRvbWlkX3QgY2xpZW50X2RvbWFpbjsgICAgICAgICAgIC8qIElO OiB0aGUgY2xpZW50IGRvbWFpbiBpZCAqLworICAgICAgICB9IGJ1bGs7CiAgICAgICAgIHN0cnVj dCBtZW1fc2hhcmluZ19vcF9kZWJ1ZyB7ICAgICAvKiBPUF9ERUJVR194eHggKi8KICAgICAgICAg ICAgIHVuaW9uIHsKICAgICAgICAgICAgICAgICB1aW50NjRfYWxpZ25lZF90IGdmbjsgICAgICAv KiBJTjogZ2ZuIHRvIGRlYnVnICAgICAgICAgICovCi0tIAoyLjguMQoKCl9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QK WGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cDovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==