From mboxrd@z Thu Jan 1 00:00:00 1970 From: Wei Liu Subject: [PATCH v3 14/21] x86/mm: move and rename guest_{, un}map_l1e Date: Thu, 20 Jul 2017 17:04:19 +0100 Message-ID: <20170720160426.2343-15-wei.liu2@citrix.com> References: <20170720160426.2343-1-wei.liu2@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta5.messagelabs.com ([195.245.231.135]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dYE7u-0002vW-4i for xen-devel@lists.xenproject.org; Thu, 20 Jul 2017 16:16:34 +0000 In-Reply-To: <20170720160426.2343-1-wei.liu2@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Xen-devel Cc: George Dunlap , Andrew Cooper , Wei Liu , Jan Beulich List-Id: xen-devel@lists.xenproject.org TW92ZSB0aGVtIHRvIHB2L21tLmMgYW5kIHJlbmFtZSB0aGVtIHB2X3ssdW59bWFwX2d1ZXN0X2wx ZS4KClNpZ25lZC1vZmYtYnk6IFdlaSBMaXUgPHdlaS5saXUyQGNpdHJpeC5jb20+Ci0tLQogeGVu L2FyY2gveDg2L21tLmMgICAgICAgICAgIHwgNjMgKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCiB4ZW4vYXJjaC94ODYvcHYvbW0uYyAgICAgICAgfCAzMyArKysr KysrKysrKysrKysrKysrKysrKysKIHhlbi9pbmNsdWRlL2FzbS14ODYvcHYvbW0uaCB8ICA5ICsr KysrKysKIDMgZmlsZXMgY2hhbmdlZCwgNTcgaW5zZXJ0aW9ucygrKSwgNDggZGVsZXRpb25zKC0p CgpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L21tLmMgYi94ZW4vYXJjaC94ODYvbW0uYwppbmRl eCBjMGE2ZWNjNWI2Li41YTljYzcxNzNhIDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvbW0uYwor KysgYi94ZW4vYXJjaC94ODYvbW0uYwpAQCAtNTM1LDM5ICs1MzUsNiBAQCB2b2lkIHVwZGF0ZV9j cjMoc3RydWN0IHZjcHUgKnYpCiAgICAgbWFrZV9jcjModiwgY3IzX21mbik7CiB9CiAKLS8qIEdl dCBhIG1hcHBpbmcgb2YgYSBQViBndWVzdCdzIGwxZSBmb3IgdGhpcyB2aXJ0dWFsIGFkZHJlc3Mu ICovCi1zdGF0aWMgbDFfcGdlbnRyeV90ICpndWVzdF9tYXBfbDFlKHVuc2lnbmVkIGxvbmcgYWRk ciwgdW5zaWduZWQgbG9uZyAqZ2wxbWZuKQotewotICAgIGwyX3BnZW50cnlfdCBsMmU7Ci0KLSAg ICBBU1NFUlQoIXBhZ2luZ19tb2RlX3RyYW5zbGF0ZShjdXJyZW50LT5kb21haW4pKTsKLSAgICBB U1NFUlQoIXBhZ2luZ19tb2RlX2V4dGVybmFsKGN1cnJlbnQtPmRvbWFpbikpOwotCi0gICAgaWYg KCB1bmxpa2VseSghX19hZGRyX29rKGFkZHIpKSApCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0g ICAgLyogRmluZCB0aGlzIGwxZSBhbmQgaXRzIGVuY2xvc2luZyBsMW1mbiBpbiB0aGUgbGluZWFy IG1hcC4gKi8KLSAgICBpZiAoIF9fY29weV9mcm9tX3VzZXIoJmwyZSwKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgJl9fbGluZWFyX2wyX3RhYmxlW2wyX2xpbmVhcl9vZmZzZXQoYWRkcildLAot ICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YobDJfcGdlbnRyeV90KSkgKQotICAgICAg ICByZXR1cm4gTlVMTDsKLQotICAgIC8qIENoZWNrIGZsYWdzIHRoYXQgaXQgd2lsbCBiZSBzYWZl IHRvIHJlYWQgdGhlIGwxZS4gKi8KLSAgICBpZiAoIChsMmVfZ2V0X2ZsYWdzKGwyZSkgJiAoX1BB R0VfUFJFU0VOVCB8IF9QQUdFX1BTRSkpICE9IF9QQUdFX1BSRVNFTlQgKQotICAgICAgICByZXR1 cm4gTlVMTDsKLQotICAgICpnbDFtZm4gPSBsMmVfZ2V0X3BmbihsMmUpOwotCi0gICAgcmV0dXJu IChsMV9wZ2VudHJ5X3QgKiltYXBfZG9tYWluX3BhZ2UoX21mbigqZ2wxbWZuKSkgKwotICAgICAg ICAgICBsMV90YWJsZV9vZmZzZXQoYWRkcik7Ci19Ci0KLS8qIFB1bGwgZG93biB0aGUgbWFwcGlu ZyB3ZSBnb3QgZnJvbSBndWVzdF9tYXBfbDFlKCkuICovCi1zdGF0aWMgaW5saW5lIHZvaWQgZ3Vl c3RfdW5tYXBfbDFlKHZvaWQgKnApCi17Ci0gICAgdW5tYXBfZG9tYWluX3BhZ2UocCk7Ci19Ci0K IHN0YXRpYyBpbmxpbmUgdm9pZCBwYWdlX3NldF90bGJmbHVzaF90aW1lc3RhbXAoc3RydWN0IHBh Z2VfaW5mbyAqcGFnZSkKIHsKICAgICAvKgpAQCAtNDAxNCw3ICszOTgxLDcgQEAgc3RhdGljIGlu dCBjcmVhdGVfZ3JhbnRfdmFfbWFwcGluZygKIAogICAgIGFkanVzdF9ndWVzdF9sMWUobmwxZSwg ZCk7CiAKLSAgICBwbDFlID0gZ3Vlc3RfbWFwX2wxZSh2YSwgJmdsMW1mbik7CisgICAgcGwxZSA9 IHB2X21hcF9ndWVzdF9sMWUodmEsICZnbDFtZm4pOwogICAgIGlmICggIXBsMWUgKQogICAgIHsK ICAgICAgICAgZ2RwcmludGsoWEVOTE9HX1dBUk5JTkcsICJDb3VsZCBub3QgZmluZCBMMSBQVEUg Zm9yIGFkZHJlc3MgJWx4XG4iLCB2YSk7CkBAIC00MDIzLDcgKzM5OTAsNyBAQCBzdGF0aWMgaW50 IGNyZWF0ZV9ncmFudF92YV9tYXBwaW5nKAogCiAgICAgaWYgKCBnZXRfcGFnZV9mcm9tX3BhZ2Vu cihnbDFtZm4sIGN1cnJlbnQtPmRvbWFpbikgKQogICAgIHsKLSAgICAgICAgZ3Vlc3RfdW5tYXBf bDFlKHBsMWUpOworICAgICAgICBwdl91bm1hcF9ndWVzdF9sMWUocGwxZSk7CiAgICAgICAgIHJl dHVybiBHTlRTVF9nZW5lcmFsX2Vycm9yOwogICAgIH0KIApAQCAtNDAzMSw3ICszOTk4LDcgQEAg c3RhdGljIGludCBjcmVhdGVfZ3JhbnRfdmFfbWFwcGluZygKICAgICBpZiAoICFwYWdlX2xvY2so bDFwZykgKQogICAgIHsKICAgICAgICAgcHV0X3BhZ2UobDFwZyk7Ci0gICAgICAgIGd1ZXN0X3Vu bWFwX2wxZShwbDFlKTsKKyAgICAgICAgcHZfdW5tYXBfZ3Vlc3RfbDFlKHBsMWUpOwogICAgICAg ICByZXR1cm4gR05UU1RfZ2VuZXJhbF9lcnJvcjsKICAgICB9CiAKQEAgLTQwMzksNyArNDAwNiw3 IEBAIHN0YXRpYyBpbnQgY3JlYXRlX2dyYW50X3ZhX21hcHBpbmcoCiAgICAgewogICAgICAgICBw YWdlX3VubG9jayhsMXBnKTsKICAgICAgICAgcHV0X3BhZ2UobDFwZyk7Ci0gICAgICAgIGd1ZXN0 X3VubWFwX2wxZShwbDFlKTsKKyAgICAgICAgcHZfdW5tYXBfZ3Vlc3RfbDFlKHBsMWUpOwogICAg ICAgICByZXR1cm4gR05UU1RfZ2VuZXJhbF9lcnJvcjsKICAgICB9CiAKQEAgLTQwNDgsNyArNDAx NSw3IEBAIHN0YXRpYyBpbnQgY3JlYXRlX2dyYW50X3ZhX21hcHBpbmcoCiAKICAgICBwYWdlX3Vu bG9jayhsMXBnKTsKICAgICBwdXRfcGFnZShsMXBnKTsKLSAgICBndWVzdF91bm1hcF9sMWUocGwx ZSk7CisgICAgcHZfdW5tYXBfZ3Vlc3RfbDFlKHBsMWUpOwogCiAgICAgaWYgKCBva2F5ICkKICAg ICAgICAgcHV0X3BhZ2VfZnJvbV9sMWUob2wxZSwgZCk7CkBAIC00MDY0LDcgKzQwMzEsNyBAQCBz dGF0aWMgaW50IHJlcGxhY2VfZ3JhbnRfdmFfbWFwcGluZygKICAgICBzdHJ1Y3QgcGFnZV9pbmZv ICpsMXBnOwogICAgIGludCByYyA9IDA7CiAKLSAgICBwbDFlID0gZ3Vlc3RfbWFwX2wxZShhZGRy LCAmZ2wxbWZuKTsKKyAgICBwbDFlID0gcHZfbWFwX2d1ZXN0X2wxZShhZGRyLCAmZ2wxbWZuKTsK ICAgICBpZiAoICFwbDFlICkKICAgICB7CiAgICAgICAgIGdkcHJpbnRrKFhFTkxPR19XQVJOSU5H LCAiQ291bGQgbm90IGZpbmQgTDEgUFRFIGZvciBhZGRyZXNzICVseFxuIiwgYWRkcik7CkBAIC00 MTE1LDcgKzQwODIsNyBAQCBzdGF0aWMgaW50IHJlcGxhY2VfZ3JhbnRfdmFfbWFwcGluZygKICAg ICBwYWdlX3VubG9jayhsMXBnKTsKICAgICBwdXRfcGFnZShsMXBnKTsKICBvdXQ6Ci0gICAgZ3Vl c3RfdW5tYXBfbDFlKHBsMWUpOworICAgIHB2X3VubWFwX2d1ZXN0X2wxZShwbDFlKTsKICAgICBy ZXR1cm4gcmM7CiB9CiAKQEAgLTQxNzMsNyArNDE0MCw3IEBAIGludCByZXBsYWNlX2dyYW50X3B2 X21hcHBpbmcodWludDY0X3QgYWRkciwgdW5zaWduZWQgbG9uZyBmcmFtZSwKICAgICBpZiAoICFu ZXdfYWRkciApCiAgICAgICAgIHJldHVybiBkZXN0cm95X2dyYW50X3ZhX21hcHBpbmcoYWRkciwg ZnJhbWUsIGN1cnIpOwogCi0gICAgcGwxZSA9IGd1ZXN0X21hcF9sMWUobmV3X2FkZHIsICZnbDFt Zm4pOworICAgIHBsMWUgPSBwdl9tYXBfZ3Vlc3RfbDFlKG5ld19hZGRyLCAmZ2wxbWZuKTsKICAg ICBpZiAoICFwbDFlICkKICAgICB7CiAgICAgICAgIGdkcHJpbnRrKFhFTkxPR19XQVJOSU5HLApA QCAtNDE4Myw3ICs0MTUwLDcgQEAgaW50IHJlcGxhY2VfZ3JhbnRfcHZfbWFwcGluZyh1aW50NjRf dCBhZGRyLCB1bnNpZ25lZCBsb25nIGZyYW1lLAogCiAgICAgaWYgKCBnZXRfcGFnZV9mcm9tX3Bh Z2VucihnbDFtZm4sIGN1cnJlbnQtPmRvbWFpbikgKQogICAgIHsKLSAgICAgICAgZ3Vlc3RfdW5t YXBfbDFlKHBsMWUpOworICAgICAgICBwdl91bm1hcF9ndWVzdF9sMWUocGwxZSk7CiAgICAgICAg IHJldHVybiBHTlRTVF9nZW5lcmFsX2Vycm9yOwogICAgIH0KIApAQCAtNDE5MSw3ICs0MTU4LDcg QEAgaW50IHJlcGxhY2VfZ3JhbnRfcHZfbWFwcGluZyh1aW50NjRfdCBhZGRyLCB1bnNpZ25lZCBs b25nIGZyYW1lLAogICAgIGlmICggIXBhZ2VfbG9jayhsMXBnKSApCiAgICAgewogICAgICAgICBw dXRfcGFnZShsMXBnKTsKLSAgICAgICAgZ3Vlc3RfdW5tYXBfbDFlKHBsMWUpOworICAgICAgICBw dl91bm1hcF9ndWVzdF9sMWUocGwxZSk7CiAgICAgICAgIHJldHVybiBHTlRTVF9nZW5lcmFsX2Vy cm9yOwogICAgIH0KIApAQCAtNDE5OSw3ICs0MTY2LDcgQEAgaW50IHJlcGxhY2VfZ3JhbnRfcHZf bWFwcGluZyh1aW50NjRfdCBhZGRyLCB1bnNpZ25lZCBsb25nIGZyYW1lLAogICAgIHsKICAgICAg ICAgcGFnZV91bmxvY2sobDFwZyk7CiAgICAgICAgIHB1dF9wYWdlKGwxcGcpOwotICAgICAgICBn dWVzdF91bm1hcF9sMWUocGwxZSk7CisgICAgICAgIHB2X3VubWFwX2d1ZXN0X2wxZShwbDFlKTsK ICAgICAgICAgcmV0dXJuIEdOVFNUX2dlbmVyYWxfZXJyb3I7CiAgICAgfQogCkBAIC00MjExLDEz ICs0MTc4LDEzIEBAIGludCByZXBsYWNlX2dyYW50X3B2X21hcHBpbmcodWludDY0X3QgYWRkciwg dW5zaWduZWQgbG9uZyBmcmFtZSwKICAgICAgICAgcGFnZV91bmxvY2sobDFwZyk7CiAgICAgICAg IHB1dF9wYWdlKGwxcGcpOwogICAgICAgICBnZHByaW50ayhYRU5MT0dfV0FSTklORywgIkNhbm5v dCBkZWxldGUgUFRFIGVudHJ5IGF0ICVwXG4iLCBwbDFlKTsKLSAgICAgICAgZ3Vlc3RfdW5tYXBf bDFlKHBsMWUpOworICAgICAgICBwdl91bm1hcF9ndWVzdF9sMWUocGwxZSk7CiAgICAgICAgIHJl dHVybiBHTlRTVF9nZW5lcmFsX2Vycm9yOwogICAgIH0KIAogICAgIHBhZ2VfdW5sb2NrKGwxcGcp OwogICAgIHB1dF9wYWdlKGwxcGcpOwotICAgIGd1ZXN0X3VubWFwX2wxZShwbDFlKTsKKyAgICBw dl91bm1hcF9ndWVzdF9sMWUocGwxZSk7CiAKICAgICByYyA9IHJlcGxhY2VfZ3JhbnRfdmFfbWFw cGluZyhhZGRyLCBmcmFtZSwgb2wxZSwgY3Vycik7CiAgICAgaWYgKCByYyApCkBAIC00MzUxLDcg KzQzMTgsNyBAQCBzdGF0aWMgaW50IF9fZG9fdXBkYXRlX3ZhX21hcHBpbmcoCiAgICAgICAgIHJl dHVybiByYzsKIAogICAgIHJjID0gLUVJTlZBTDsKLSAgICBwbDFlID0gZ3Vlc3RfbWFwX2wxZSh2 YSwgJmdsMW1mbik7CisgICAgcGwxZSA9IHB2X21hcF9ndWVzdF9sMWUodmEsICZnbDFtZm4pOwog ICAgIGlmICggdW5saWtlbHkoIXBsMWUgfHwgZ2V0X3BhZ2VfZnJvbV9wYWdlbnIoZ2wxbWZuLCBk KSkgKQogICAgICAgICBnb3RvIG91dDsKIApAQCAtNDM3Niw3ICs0MzQzLDcgQEAgc3RhdGljIGlu dCBfX2RvX3VwZGF0ZV92YV9tYXBwaW5nKAogCiAgb3V0OgogICAgIGlmICggcGwxZSApCi0gICAg ICAgIGd1ZXN0X3VubWFwX2wxZShwbDFlKTsKKyAgICAgICAgcHZfdW5tYXBfZ3Vlc3RfbDFlKHBs MWUpOwogCiAgICAgc3dpdGNoICggZmxhZ3MgJiBVVk1GX0ZMVVNIVFlQRV9NQVNLICkKICAgICB7 CmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvcHYvbW0uYyBiL3hlbi9hcmNoL3g4Ni9wdi9tbS5j CmluZGV4IDJjYjU5OTVlNjIuLjMyZTczZDU5ZGYgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9w di9tbS5jCisrKyBiL3hlbi9hcmNoL3g4Ni9wdi9tbS5jCkBAIC02Myw2ICs2MywzOSBAQCB2b2lk IHB2X2dldF9ndWVzdF9lZmZfa2Vybl9sMWUoc3RydWN0IHZjcHUgKnYsIHVuc2lnbmVkIGxvbmcg YWRkciwKICAgICAgICAgdG9nZ2xlX2d1ZXN0X21vZGUodik7CiB9CiAKKy8qIEdldCBhIG1hcHBp bmcgb2YgYSBQViBndWVzdCdzIGwxZSBmb3IgdGhpcyB2aXJ0dWFsIGFkZHJlc3MuICovCitsMV9w Z2VudHJ5X3QgKnB2X21hcF9ndWVzdF9sMWUodW5zaWduZWQgbG9uZyBhZGRyLCB1bnNpZ25lZCBs b25nICpnbDFtZm4pCit7CisgICAgbDJfcGdlbnRyeV90IGwyZTsKKworICAgIEFTU0VSVCghcGFn aW5nX21vZGVfdHJhbnNsYXRlKGN1cnJlbnQtPmRvbWFpbikpOworICAgIEFTU0VSVCghcGFnaW5n X21vZGVfZXh0ZXJuYWwoY3VycmVudC0+ZG9tYWluKSk7CisKKyAgICBpZiAoIHVubGlrZWx5KCFf X2FkZHJfb2soYWRkcikpICkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICAvKiBGaW5kIHRo aXMgbDFlIGFuZCBpdHMgZW5jbG9zaW5nIGwxbWZuIGluIHRoZSBsaW5lYXIgbWFwLiAqLworICAg IGlmICggX19jb3B5X2Zyb21fdXNlcigmbDJlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAm X19saW5lYXJfbDJfdGFibGVbbDJfbGluZWFyX29mZnNldChhZGRyKV0sCisgICAgICAgICAgICAg ICAgICAgICAgICAgIHNpemVvZihsMl9wZ2VudHJ5X3QpKSApCisgICAgICAgIHJldHVybiBOVUxM OworCisgICAgLyogQ2hlY2sgZmxhZ3MgdGhhdCBpdCB3aWxsIGJlIHNhZmUgdG8gcmVhZCB0aGUg bDFlLiAqLworICAgIGlmICggKGwyZV9nZXRfZmxhZ3MobDJlKSAmIChfUEFHRV9QUkVTRU5UIHwg X1BBR0VfUFNFKSkgIT0gX1BBR0VfUFJFU0VOVCApCisgICAgICAgIHJldHVybiBOVUxMOworCisg ICAgKmdsMW1mbiA9IGwyZV9nZXRfcGZuKGwyZSk7CisKKyAgICByZXR1cm4gKGwxX3BnZW50cnlf dCAqKW1hcF9kb21haW5fcGFnZShfbWZuKCpnbDFtZm4pKSArCisgICAgICAgICAgIGwxX3RhYmxl X29mZnNldChhZGRyKTsKK30KKworLyogUHVsbCBkb3duIHRoZSBtYXBwaW5nIHdlIGdvdCBmcm9t IHB2X21hcF9ndWVzdF9sMWUoKS4gKi8KK3ZvaWQgcHZfdW5tYXBfZ3Vlc3RfbDFlKHZvaWQgKnAp Cit7CisgICAgdW5tYXBfZG9tYWluX3BhZ2UocCk7Cit9CisKIC8qCiAgKiBIb3cgdG8gd3JpdGUg YW4gZW50cnkgdG8gdGhlIGd1ZXN0IHBhZ2V0YWJsZXMuCiAgKiBSZXR1cm5zIGZhbHNlIGZvciBm YWlsdXJlIChwb2ludGVyIG5vdCB2YWxpZCksIHRydWUgZm9yIHN1Y2Nlc3MuCmRpZmYgLS1naXQg YS94ZW4vaW5jbHVkZS9hc20teDg2L3B2L21tLmggYi94ZW4vaW5jbHVkZS9hc20teDg2L3B2L21t LmgKaW5kZXggNDkzMWJjY2IyOS4uYTcxY2U5MzRmYSAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUv YXNtLXg4Ni9wdi9tbS5oCisrKyBiL3hlbi9pbmNsdWRlL2FzbS14ODYvcHYvbW0uaApAQCAtODcs NiArODcsOSBAQCBib29sIHB2X3VwZGF0ZV9pbnRwdGUoaW50cHRlX3QgKnAsIGludHB0ZV90IG9s ZCwgaW50cHRlX3QgbmV3LAogICAgICAgICAgICAgICAgICAgICAgX3QgIyMgZV9nZXRfaW50cHRl KF9vKSwgX3QgIyMgZV9nZXRfaW50cHRlKF9uKSwgICBcCiAgICAgICAgICAgICAgICAgICAgICAo X20pLCAoX3YpLCAoX2FkKSkKIAorbDFfcGdlbnRyeV90ICpwdl9tYXBfZ3Vlc3RfbDFlKHVuc2ln bmVkIGxvbmcgYWRkciwgdW5zaWduZWQgbG9uZyAqZ2wxbWZuKTsKK3ZvaWQgcHZfdW5tYXBfZ3Vl c3RfbDFlKHZvaWQgKnApOworCiAjZWxzZQogCiBzdGF0aWMgaW5saW5lIHZvaWQgcHZfZ2V0X2d1 ZXN0X2VmZl9sMWUodW5zaWduZWQgbG9uZyBhZGRyLApAQCAtMTAyLDYgKzEwNSwxMiBAQCBzdGF0 aWMgaW5saW5lIGJvb2wgcHZfdXBkYXRlX2ludHB0ZShpbnRwdGVfdCAqcCwgaW50cHRlX3Qgb2xk LCBpbnRwdGVfdCBuZXcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQg cHJlc2VydmVfYWQpCiB7IHJldHVybiBmYWxzZTsgfQogCitzdGF0aWMgaW5saW5lIGwxX3BnZW50 cnlfdCAqcHZfbWFwX2d1ZXN0X2wxZSh1bnNpZ25lZCBsb25nIGFkZHIsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nICpnbDFtZm4pOwor eyByZXR1cm4gTlVMTDsgfQorCitzdGF0aWMgaW5saW5lIHZvaWQgcHZfdW5tYXBfZ3Vlc3RfbDFl KHZvaWQgKnApIHt9CisKICNlbmRpZgogCiAjZW5kaWYgLyogX19YODZfUFZfTU1fSF9fICovCi0t IAoyLjExLjAKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f XwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHBzOi8v bGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK