From mboxrd@z Thu Jan 1 00:00:00 1970 From: Roger Pau Monne Subject: [PATCH v6 1/2] xen/pvh: use a custom IO bitmap for PVH hardware domains Date: Mon, 11 May 2015 16:57:37 +0200 Message-ID: <1431356258-31269-2-git-send-email-roger.pau@citrix.com> References: <1431356258-31269-1-git-send-email-roger.pau@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta3.messagelabs.com ([195.245.230.39]) by lists.xen.org with esmtp (Exim 4.72) (envelope-from ) id 1YrpA1-0000wL-Tg for xen-devel@lists.xenproject.org; Mon, 11 May 2015 14:58:26 +0000 In-Reply-To: <1431356258-31269-1-git-send-email-roger.pau@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: xen-devel@lists.xenproject.org Cc: Kevin Tian , Jan Beulich , Jun Nakajima , Andrew Cooper , Eddie Dong , Aravind Gopalakrishnan , Suravee Suthikulpanit , Boris Ostrovsky , Roger Pau Monne List-Id: xen-devel@lists.xenproject.org U2luY2UgYSBQVkggaGFyZHdhcmUgZG9tYWluIGhhcyBhY2Nlc3MgdG8gdGhlIHBoeXNpY2FsIGhh cmR3YXJlIGNyZWF0ZSBhCmN1c3RvbSBtb3JlIHBlcm1pc3NpdmUgSU8gYml0bWFwLiBUaGUgcGVy bWlzc2lvbnMgc2V0IG9uIHRoZSBiaXRtYXAgYXJlCnBvcHVsYXRlZCBiYXNlZCBvbiB0aGUgY29u dGVudHMgb2YgdGhlIGlvcG9ydHMgcmFuZ2VzZXQuCgpTaWduZWQtb2ZmLWJ5OiBSb2dlciBQYXUg TW9ubsOpIDxyb2dlci5wYXVAY2l0cml4LmNvbT4KQ2M6IEphbiBCZXVsaWNoIDxqYmV1bGljaEBz dXNlLmNvbT4KQ2M6IEFuZHJldyBDb29wZXIgPGFuZHJldy5jb29wZXIzQGNpdHJpeC5jb20+CkNj OiBCb3JpcyBPc3Ryb3Zza3kgPGJvcmlzLm9zdHJvdnNreUBvcmFjbGUuY29tPgpDYzogU3VyYXZl ZSBTdXRoaWt1bHBhbml0IDxzdXJhdmVlLnN1dGhpa3VscGFuaXRAYW1kLmNvbT4KQ2M6IEFyYXZp bmQgR29wYWxha3Jpc2huYW4gPEFyYXZpbmQuR29wYWxha3Jpc2huYW5AYW1kLmNvbT4KQ2M6IEp1 biBOYWthamltYSA8anVuLm5ha2FqaW1hQGludGVsLmNvbT4KQ2M6IEVkZGllIERvbmcgPGVkZGll LmRvbmdAaW50ZWwuY29tPgpDYzogS2V2aW4gVGlhbiA8a2V2aW4udGlhbkBpbnRlbC5jb20+Ci0t LQpDaGFuZ2VzIHNpbmNlIHY1OgogLSBGaXggYnVpbGQgd2l0aCBYU00gKENPTkZJR19MQVRFX0hX RE9NKS4KCkNoYW5nZXMgc2luY2UgdjQ6CiAtIFNwbGl0IGNoYW5nZXMgYWxzbyBhZmZlY3Rpbmcg UFYgdG8gYSBzZXBhcmF0ZSBwYXRjaC4KIC0gVXNlIGludCB3aXRoIF9fY2xlYXJfYml0LgogLSBE cm9wIHBvaW50bGVzcyBjYXN0IGluIHZtY2IuYy4KIC0gTWFrZSBIVk1fSU9CSVRNQVBfU0laRSBj b250YWluIHRoZSBzaXplIG9mIHRoZSBpbyBiaXRtYXAgcGFnZXMgaW4gYnl0ZXMuCiAtIE1ha2Ug c2V0dXBfaW9fYml0bWFwIGEgaGFyZHdhcmUgZG9tYWluIHNwZWNpZmljIGZ1bmN0aW9uLCBhbmQg YWxsb3cgaXQgdG8KICAgd29yayB3aXRoIGxhdGUgaHcgZG9tYWluIGluaXQuCgpDaGFuZ2VzIHNp bmNlIHYzOgogLSBBZGQgdGhlIFJUQyBJTyBwb3J0cyB0byB0aGUgbGlzdCBvZiBibG9ja2VkIHBv cnRzLgogLSBSZW1vdmUgYWRtaW5faW9fb2theSBzaW5jZSBpdCdzIGp1c3QgYSB3cmFwcGVyIGFy b3VuZAogICBpb3BvcnRzX2FjY2Vzc19wZXJtaXR0ZWQuCgpDaGFuZ2VzIHNpbmNlIHYyOgogLSBB ZGQgMHhjZjgtMHhjZmIgdG8gdGhlIHJhbmdlIG9mIGJsb2NrZWQgKHRyYXBwZWQpIElPIHBvcnRz LgogLSBVc2UgcmFuZ2VzZXRfcmVwb3J0X3JhbmdlcyBpbiBvcmRlciB0byBpdGVyYXRlIG92ZXIg dGhlIHJhbmdlIG9mIG5vdAogICB0cmFwcGVkIElPIHBvcnRzLgogLSBBbGxvY2F0ZSB0aGUgRG9t MCBQVkggSU8gYml0bWFwIHdpdGggX3htYWxsb2NfYXJyYXksIHdoaWNoIGFsbG93cyBzZXR0aW5n CiAgIHRoZSBhbGlnbm1lbnQgdG8gUEFHRV9TSVpFLgogLSBUZXN0ZWQgd2l0aCBMaW51eCBQVi9Q VkggdXNpbmcgMy4xOCBhbmQgRnJlZUJTRCBQVkggSEVBRC4KCkNoYW5nZXMgc2luY2UgdjE6CiAt IER5bmFtaWNhbGx5IGFsbG9jYXRlIFBWSCBEb20wIElPIGJpdG1hcCBpZiBuZWVkZWQuCiAtIERy b3AgY2FzdCBmcm9tIGNvbnN0cnVjdF92bWNzIHdoZW4gd3JpdGluZyB0aGUgSU8gYml0bWFwLgog LSBDcmVhdGUgYSBuZXcgZnVuY3Rpb24gdGhhdCBzZXRzIHVwIHRoZSBiaXRtYXAgYmVmb3JlIGxh dW5jaGluZyBEb20wLiBUaGlzCiAgIGlzIG5lZWRlZCBiZWNhdXNlIG5zMTY1NTBfZW5kYm9vdCBp cyBjYWxsZWQgYWZ0ZXIgY29uc3RydWN0X2RvbTAuCi0tLQogeGVuL2FyY2gveDg2L2h2bS9odm0u YyAgICAgICAgICAgfCAyNCArKysrKysrKysrKysrKysrKysrKysrLS0KIHhlbi9hcmNoL3g4Ni9o dm0vc3ZtL3ZtY2IuYyAgICAgIHwgIDIgKy0KIHhlbi9hcmNoL3g4Ni9odm0vdm14L3ZtY3MuYyAg ICAgIHwgIDUgKysrLS0KIHhlbi9hcmNoL3g4Ni9zZXR1cC5jICAgICAgICAgICAgIHwgMjkgKysr KysrKysrKysrKysrKysrKysrKysrKysrKysKIHhlbi9jb21tb24vZG9tYWluLmMgICAgICAgICAg ICAgIHwgIDIgKysKIHhlbi9pbmNsdWRlL2FzbS14ODYvaHZtL2RvbWFpbi5oIHwgIDIgKysKIHhl bi9pbmNsdWRlL2FzbS14ODYvc2V0dXAuaCAgICAgIHwgIDEgKwogNyBmaWxlcyBjaGFuZ2VkLCA2 MCBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4 Ni9odm0vaHZtLmMgYi94ZW4vYXJjaC94ODYvaHZtL2h2bS5jCmluZGV4IDNhMDk0MzkuLmVhMDUy YzQgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9odm0vaHZtLmMKKysrIGIveGVuL2FyY2gveDg2 L2h2bS9odm0uYwpAQCAtNzcsOSArNzcsMTMgQEAgaW50ZWdlcl9wYXJhbSgiaHZtX2RlYnVnIiwg b3B0X2h2bV9kZWJ1Z19sZXZlbCk7CiAKIHN0cnVjdCBodm1fZnVuY3Rpb25fdGFibGUgaHZtX2Z1 bmNzIF9fcmVhZF9tb3N0bHk7CiAKLS8qIEkvTyBwZXJtaXNzaW9uIGJpdG1hcCBpcyBnbG9iYWxs eSBzaGFyZWQgYnkgYWxsIEhWTSBndWVzdHMuICovCisjZGVmaW5lIEhWTV9JT0JJVE1BUF9TSVpF ICAgKDMqUEFHRV9TSVpFKQorLyoKKyAqIFRoZSBJL08gcGVybWlzc2lvbiBiaXRtYXAgaXMgZ2xv YmFsbHkgc2hhcmVkIGJ5IGFsbCBIVk0gZ3Vlc3RzIGV4Y2VwdAorICogdGhlIGhhcmR3YXJlIGRv bWFpbiB0aGF0IGhhcyBhIG1vcmUgcGVybWlzc2l2ZSBJTyBiaXRtYXAuCisgKi8KIHVuc2lnbmVk IGxvbmcgX19hdHRyaWJ1dGVfXyAoKF9fc2VjdGlvbl9fICgiLmJzcy5wYWdlX2FsaWduZWQiKSkp Ci0gICAgaHZtX2lvX2JpdG1hcFszKlBBR0VfU0laRS9CWVRFU19QRVJfTE9OR107CisgICAgaHZt X2lvX2JpdG1hcFtIVk1fSU9CSVRNQVBfU0laRS9CWVRFU19QRVJfTE9OR107CiAKIC8qIFhlbiBj b21tYW5kLWxpbmUgb3B0aW9uIHRvIGVuYWJsZSBIQVAgKi8KIHN0YXRpYyBib29sX3QgX19pbml0 ZGF0YSBvcHRfaGFwX2VuYWJsZWQgPSAxOwpAQCAtMTQ2MSw2ICsxNDY1LDIwIEBAIGludCBodm1f ZG9tYWluX2luaXRpYWxpc2Uoc3RydWN0IGRvbWFpbiAqZCkKICAgICAgICAgZ290byBmYWlsMTsK ICAgICBkLT5hcmNoLmh2bV9kb21haW4uaW9faGFuZGxlci0+bnVtX3Nsb3QgPSAwOwogCisgICAg LyogU2V0IHRoZSBkZWZhdWx0IElPIEJpdG1hcCAqLworICAgIGlmICggaXNfaGFyZHdhcmVfZG9t YWluKGQpICkKKyAgICB7CisgICAgICAgIGQtPmFyY2guaHZtX2RvbWFpbi5pb19iaXRtYXAgPSBf eG1hbGxvYyhIVk1fSU9CSVRNQVBfU0laRSwgUEFHRV9TSVpFKTsKKyAgICAgICAgaWYgKCBkLT5h cmNoLmh2bV9kb21haW4uaW9fYml0bWFwID09IE5VTEwgKQorICAgICAgICB7CisgICAgICAgICAg ICByYyA9IC1FTk9NRU07CisgICAgICAgICAgICBnb3RvIGZhaWwxOworICAgICAgICB9CisgICAg ICAgIG1lbXNldChkLT5hcmNoLmh2bV9kb21haW4uaW9fYml0bWFwLCB+MCwgSFZNX0lPQklUTUFQ X1NJWkUpOworICAgIH0KKyAgICBlbHNlCisgICAgICAgIGQtPmFyY2guaHZtX2RvbWFpbi5pb19i aXRtYXAgPSBodm1faW9fYml0bWFwOworCiAgICAgaWYgKCBpc19wdmhfZG9tYWluKGQpICkKICAg ICB7CiAgICAgICAgIHJlZ2lzdGVyX3BvcnRpb19oYW5kbGVyKGQsIDAsIDB4MTAwMDMsIGhhbmRs ZV9wdmhfaW8pOwpAQCAtMTQ5Niw2ICsxNTE0LDggQEAgaW50IGh2bV9kb21haW5faW5pdGlhbGlz ZShzdHJ1Y3QgZG9tYWluICpkKQogICAgIHN0ZHZnYV9kZWluaXQoZCk7CiAgICAgdmlvYXBpY19k ZWluaXQoZCk7CiAgZmFpbDE6CisgICAgaWYgKCBpc19oYXJkd2FyZV9kb21haW4oZCkgKQorICAg ICAgICB4ZnJlZShkLT5hcmNoLmh2bV9kb21haW4uaW9fYml0bWFwKTsKICAgICB4ZnJlZShkLT5h cmNoLmh2bV9kb21haW4uaW9faGFuZGxlcik7CiAgICAgeGZyZWUoZC0+YXJjaC5odm1fZG9tYWlu LnBhcmFtcyk7CiAgZmFpbDA6CmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvaHZtL3N2bS92bWNi LmMgYi94ZW4vYXJjaC94ODYvaHZtL3N2bS92bWNiLmMKaW5kZXggMjEyOTJiYi4uMTBhZmQ0NCAx MDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L2h2bS9zdm0vdm1jYi5jCisrKyBiL3hlbi9hcmNoL3g4 Ni9odm0vc3ZtL3ZtY2IuYwpAQCAtMTE4LDcgKzExOCw3IEBAIHN0YXRpYyBpbnQgY29uc3RydWN0 X3ZtY2Ioc3RydWN0IHZjcHUgKnYpCiAgICAgICAgIHN2bV9kaXNhYmxlX2ludGVyY2VwdF9mb3Jf bXNyKHYsIE1TUl9BTUQ2NF9MV1BfQ0JBRERSKTsKIAogICAgIHZtY2ItPl9tc3JwbV9iYXNlX3Bh ID0gKHU2NCl2aXJ0X3RvX21hZGRyKGFyY2hfc3ZtLT5tc3JwbSk7Ci0gICAgdm1jYi0+X2lvcG1f YmFzZV9wYSAgPSAodTY0KXZpcnRfdG9fbWFkZHIoaHZtX2lvX2JpdG1hcCk7CisgICAgdm1jYi0+ X2lvcG1fYmFzZV9wYSA9IHZpcnRfdG9fbWFkZHIodi0+ZG9tYWluLT5hcmNoLmh2bV9kb21haW4u aW9fYml0bWFwKTsKIAogICAgIC8qIFZpcnR1YWxpc2UgRUZMQUdTLklGIGFuZCBMQVBJQyBUUFIg KENSOCkuICovCiAgICAgdm1jYi0+X3ZpbnRyLmZpZWxkcy5pbnRyX21hc2tpbmcgPSAxOwpkaWZm IC0tZ2l0IGEveGVuL2FyY2gveDg2L2h2bS92bXgvdm1jcy5jIGIveGVuL2FyY2gveDg2L2h2bS92 bXgvdm1jcy5jCmluZGV4IDMxMjM3MDYuLmE3MTQ1NDkgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4 Ni9odm0vdm14L3ZtY3MuYworKysgYi94ZW4vYXJjaC94ODYvaHZtL3ZteC92bWNzLmMKQEAgLTEw MzIsOCArMTAzMiw5IEBAIHN0YXRpYyBpbnQgY29uc3RydWN0X3ZtY3Moc3RydWN0IHZjcHUgKnYp CiAgICAgfQogCiAgICAgLyogSS9PIGFjY2VzcyBiaXRtYXAuICovCi0gICAgX192bXdyaXRlKElP X0JJVE1BUF9BLCB2aXJ0X3RvX21hZGRyKChjaGFyICopaHZtX2lvX2JpdG1hcCArIDApKTsKLSAg ICBfX3Ztd3JpdGUoSU9fQklUTUFQX0IsIHZpcnRfdG9fbWFkZHIoKGNoYXIgKilodm1faW9fYml0 bWFwICsgUEFHRV9TSVpFKSk7CisgICAgX192bXdyaXRlKElPX0JJVE1BUF9BLCB2aXJ0X3RvX21h ZGRyKGQtPmFyY2guaHZtX2RvbWFpbi5pb19iaXRtYXApKTsKKyAgICBfX3Ztd3JpdGUoSU9fQklU TUFQX0IsIHZpcnRfdG9fbWFkZHIoZC0+YXJjaC5odm1fZG9tYWluLmlvX2JpdG1hcCkgKworICAg ICAgICAgICAgICAgICAgICAgICAgICAgUEFHRV9TSVpFKTsKIAogICAgIGlmICggY3B1X2hhc192 bXhfdmlydHVhbF9pbnRyX2RlbGl2ZXJ5ICkKICAgICB7CmRpZmYgLS1naXQgYS94ZW4vYXJjaC94 ODYvc2V0dXAuYyBiL3hlbi9hcmNoL3g4Ni9zZXR1cC5jCmluZGV4IDJiOTc4N2EuLjNiOWFlZTUg MTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9zZXR1cC5jCisrKyBiL3hlbi9hcmNoL3g4Ni9zZXR1 cC5jCkBAIC0xNDQ2LDYgKzE0NDYsOSBAQCB2b2lkIF9faW5pdCBub3JldHVybiBfX3N0YXJ0X3hl bih1bnNpZ25lZCBsb25nIG1iaV9wKQogCiAgICAgZG1pX2VuZF9ib290KCk7CiAKKyAgICBpZiAo IGlzX2hhcmR3YXJlX2RvbWFpbihkb20wKSApCisgICAgICAgIHNldHVwX2lvX2JpdG1hcChkb20w KTsKKwogICAgIHN5c3RlbV9zdGF0ZSA9IFNZU19TVEFURV9hY3RpdmU7CiAKICAgICBkb21haW5f dW5wYXVzZV9ieV9zeXN0ZW1jb250cm9sbGVyKGRvbTApOwpAQCAtMTUwOSw2ICsxNTEyLDMyIEBA IGludCBfX2h3ZG9tX2luaXQgeGVuX2luX3JhbmdlKHVuc2lnbmVkIGxvbmcgbWZuKQogICAgIHJl dHVybiAwOwogfQogCitzdGF0aWMgaW50IF9faHdkb21faW5pdCBpb19iaXRtYXBfY2IodW5zaWdu ZWQgbG9uZyBzLCB1bnNpZ25lZCBsb25nIGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgdm9pZCAqY3R4KQoreworICAgIHN0cnVjdCBkb21haW4gKmQgPSBjdHg7CisgICAg aW50IGk7CisKKyAgICBBU1NFUlQocyA8PSBJTlRfTUFYICYmIGUgPD0gSU5UX01BWCk7CisgICAg Zm9yICggaSA9IHM7IGkgPD0gZTsgaSsrICkKKyAgICAgICAgX19jbGVhcl9iaXQoaSwgZC0+YXJj aC5odm1fZG9tYWluLmlvX2JpdG1hcCk7CisKKyAgICByZXR1cm4gMDsKK30KKwordm9pZCBfX2h3 ZG9tX2luaXQgc2V0dXBfaW9fYml0bWFwKHN0cnVjdCBkb21haW4gKmQpCit7CisgICAgaW50IHJj OworCisgICAgQVNTRVJUKGlzX2hhcmR3YXJlX2RvbWFpbihkKSk7CisgICAgaWYgKCBoYXNfaHZt X2NvbnRhaW5lcl9kb21haW4oZCkgKQorICAgIHsKKyAgICAgICAgcmMgPSByYW5nZXNldF9yZXBv cnRfcmFuZ2VzKGQtPmFyY2guaW9wb3J0X2NhcHMsIDAsIDB4MTAwMDAsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBpb19iaXRtYXBfY2IsIGQpOworICAgICAgICBCVUdfT04o cmMpOworICAgIH0KK30KKwogLyoKICAqIExvY2FsIHZhcmlhYmxlczoKICAqIG1vZGU6IEMKZGlm ZiAtLWdpdCBhL3hlbi9jb21tb24vZG9tYWluLmMgYi94ZW4vY29tbW9uL2RvbWFpbi5jCmluZGV4 IDY4MDNjNGQuLmI2YjAwMzQgMTAwNjQ0Ci0tLSBhL3hlbi9jb21tb24vZG9tYWluLmMKKysrIGIv eGVuL2NvbW1vbi9kb21haW4uYwpAQCAtNDIsNiArNDIsNyBAQAogI2luY2x1ZGUgPHhzbS94c20u aD4KICNpbmNsdWRlIDx4ZW4vdHJhY2UuaD4KICNpbmNsdWRlIDx4ZW4vdG1lbS5oPgorI2luY2x1 ZGUgPGFzbS9zZXR1cC5oPgogCiAvKiBMaW51eCBjb25maWcgb3B0aW9uOiBwcm9wYWdldGVkIHRv IGRvbWFpbjAgKi8KIC8qIHhlbl9wcm9jZXNzb3JfcG1iaXRzOiB4ZW4gY29udHJvbCBDeCwgUHgs IC4uLiAqLwpAQCAtMjE5LDYgKzIyMCw3IEBAIHN0YXRpYyBpbnQgbGF0ZV9od2RvbV9pbml0KHN0 cnVjdCBkb21haW4gKmQpCiAgICAgcmFuZ2VzZXRfc3dhcChkLT5pb21lbV9jYXBzLCBkb20wLT5p b21lbV9jYXBzKTsKICNpZmRlZiBDT05GSUdfWDg2CiAgICAgcmFuZ2VzZXRfc3dhcChkLT5hcmNo LmlvcG9ydF9jYXBzLCBkb20wLT5hcmNoLmlvcG9ydF9jYXBzKTsKKyAgICBzZXR1cF9pb19iaXRt YXAoZCk7CiAjZW5kaWYKIAogICAgIHJjdV91bmxvY2tfZG9tYWluKGRvbTApOwpkaWZmIC0tZ2l0 IGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9odm0vZG9tYWluLmggYi94ZW4vaW5jbHVkZS9hc20teDg2 L2h2bS9kb21haW4uaAppbmRleCAwZjhiMTlhLi5lMjUwNzkxIDEwMDY0NAotLS0gYS94ZW4vaW5j bHVkZS9hc20teDg2L2h2bS9kb21haW4uaAorKysgYi94ZW4vaW5jbHVkZS9hc20teDg2L2h2bS9k b21haW4uaApAQCAtMTQxLDYgKzE0MSw4IEBAIHN0cnVjdCBodm1fZG9tYWluIHsKICAgICAgKi8K ICAgICB1aW50NjRfdCBzeW5jX3RzYzsKIAorICAgIHVuc2lnbmVkIGxvbmcgICAgICAgICAqaW9f Yml0bWFwOworCiAgICAgdW5pb24gewogICAgICAgICBzdHJ1Y3Qgdm14X2RvbWFpbiB2bXg7CiAg ICAgICAgIHN0cnVjdCBzdm1fZG9tYWluIHN2bTsKZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL2Fz bS14ODYvc2V0dXAuaCBiL3hlbi9pbmNsdWRlL2FzbS14ODYvc2V0dXAuaAppbmRleCAwOGJjMjNh Li4zODFkOWY4IDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS9hc20teDg2L3NldHVwLmgKKysrIGIv eGVuL2luY2x1ZGUvYXNtLXg4Ni9zZXR1cC5oCkBAIC0zMiw2ICszMiw3IEBAIGludCBjb25zdHJ1 Y3RfZG9tMCgKICAgICBtb2R1bGVfdCAqaW5pdHJkLAogICAgIHZvaWQgKigqYm9vdHN0cmFwX21h cCkoY29uc3QgbW9kdWxlX3QgKiksCiAgICAgY2hhciAqY21kbGluZSk7Cit2b2lkIHNldHVwX2lv X2JpdG1hcChzdHJ1Y3QgZG9tYWluICpkKTsKIAogdW5zaWduZWQgbG9uZyBpbml0aWFsX2ltYWdl c19ucnBhZ2VzKG5vZGVpZF90IG5vZGUpOwogdm9pZCBkaXNjYXJkX2luaXRpYWxfaW1hZ2VzKHZv aWQpOwotLSAKMS45LjUgKEFwcGxlIEdpdC01MC4zKQoKCl9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVs QGxpc3RzLnhlbi5vcmcKaHR0cDovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==