From mboxrd@z Thu Jan 1 00:00:00 1970 From: Quan Xu Subject: [PATCH v10 3/3] vt-d: fix vt-d Device-TLB flush timeout issue Date: Fri, 22 Apr 2016 18:54:13 +0800 Message-ID: <1461322453-29216-4-git-send-email-quan.xu@intel.com> References: <1461322453-29216-1-git-send-email-quan.xu@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1461322453-29216-1-git-send-email-quan.xu@intel.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xen.org Cc: Quan Xu , kevin.tian@intel.com, feng.wu@intel.com, dario.faggioli@citrix.com, jbeulich@suse.com List-Id: xen-devel@lists.xenproject.org SWYgRGV2aWNlLVRMQiBmbHVzaCB0aW1lZCBvdXQsIHdlIGhpZGUgdGhlIHRhcmdldCBBVFMgZGV2 aWNlCmltbWVkaWF0ZWx5IGFuZCBjcmFzaCB0aGUgZG9tYWluIG93bmluZyB0aGlzIEFUUyBkZXZp Y2UuIElmCmltcGFjdGVkIGRvbWFpbiBpcyBoYXJkd2FyZSBkb21haW4sIGp1c3QgdGhyb3cgb3V0 IGEgd2FybmluZy4KCkJ5IGhpZGluZyB0aGUgZGV2aWNlLCB3ZSBtYWtlIHN1cmUgaXQgY2FuJ3Qg YmUgYXNzaWduZWQgdG8gYW55CmRvbWFpbiBhbnkgbG9uZ2VyIChzZWUgZGV2aWNlX2Fzc2lnbmVk KS4KClNpZ25lZC1vZmYtYnk6IFF1YW4gWHUgPHF1YW4ueHVAaW50ZWwuY29tPgotLS0KIHhlbi9k cml2ZXJzL3Bhc3N0aHJvdWdoL3BjaS5jICAgICAgICAgfCAgNiArLS0KIHhlbi9kcml2ZXJzL3Bh c3N0aHJvdWdoL3Z0ZC9leHRlcm4uaCAgfCAgNSArKy0KIHhlbi9kcml2ZXJzL3Bhc3N0aHJvdWdo L3Z0ZC9xaW52YWwuYyAgfCA3MSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLQog eGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvdnRkL3g4Ni9hdHMuYyB8IDExICsrKy0tLQogeGVuL2lu Y2x1ZGUveGVuL3BjaS5oICAgICAgICAgICAgICAgICB8ICAxICsKIDUgZmlsZXMgY2hhbmdlZCwg NzkgaW5zZXJ0aW9ucygrKSwgMTUgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEveGVuL2RyaXZl cnMvcGFzc3Rocm91Z2gvcGNpLmMgYi94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9wY2kuYwppbmRl eCA5ZjE3MTZhLi45YTIxNGM2IDEwMDY0NAotLS0gYS94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9w Y2kuYworKysgYi94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9wY2kuYwpAQCAtNDIwLDcgKzQyMCw3 IEBAIHN0YXRpYyB2b2lkIGZyZWVfcGRldihzdHJ1Y3QgcGNpX3NlZyAqcHNlZywgc3RydWN0IHBj aV9kZXYgKnBkZXYpCiAgICAgeGZyZWUocGRldik7CiB9CiAKLXN0YXRpYyB2b2lkIF9wY2lfaGlk ZV9kZXZpY2Uoc3RydWN0IHBjaV9kZXYgKnBkZXYpCit2b2lkIHBjaV9oaWRlX2V4aXN0aW5nX2Rl dmljZShzdHJ1Y3QgcGNpX2RldiAqcGRldikKIHsKICAgICBpZiAoIHBkZXYtPmRvbWFpbiApCiAg ICAgICAgIHJldHVybjsKQEAgLTQzNyw3ICs0MzcsNyBAQCBpbnQgX19pbml0IHBjaV9oaWRlX2Rl dmljZShpbnQgYnVzLCBpbnQgZGV2Zm4pCiAgICAgcGRldiA9IGFsbG9jX3BkZXYoZ2V0X3BzZWco MCksIGJ1cywgZGV2Zm4pOwogICAgIGlmICggcGRldiApCiAgICAgewotICAgICAgICBfcGNpX2hp ZGVfZGV2aWNlKHBkZXYpOworICAgICAgICBwY2lfaGlkZV9leGlzdGluZ19kZXZpY2UocGRldik7 CiAgICAgICAgIHJjID0gMDsKICAgICB9CiAgICAgcGNpZGV2c191bmxvY2soKTsKQEAgLTQ2Nyw3 ICs0NjcsNyBAQCBpbnQgX19pbml0IHBjaV9yb19kZXZpY2UoaW50IHNlZywgaW50IGJ1cywgaW50 IGRldmZuKQogICAgIH0KIAogICAgIF9fc2V0X2JpdChQQ0lfQkRGMihidXMsIGRldmZuKSwgcHNl Zy0+cm9fbWFwKTsKLSAgICBfcGNpX2hpZGVfZGV2aWNlKHBkZXYpOworICAgIHBjaV9oaWRlX2V4 aXN0aW5nX2RldmljZShwZGV2KTsKIAogICAgIHJldHVybiAwOwogfQpkaWZmIC0tZ2l0IGEveGVu L2RyaXZlcnMvcGFzc3Rocm91Z2gvdnRkL2V4dGVybi5oIGIveGVuL2RyaXZlcnMvcGFzc3Rocm91 Z2gvdnRkL2V4dGVybi5oCmluZGV4IGFiN2VjYWQuLmI1NGExNWMgMTAwNjQ0Ci0tLSBhL3hlbi9k cml2ZXJzL3Bhc3N0aHJvdWdoL3Z0ZC9leHRlcm4uaAorKysgYi94ZW4vZHJpdmVycy9wYXNzdGhy b3VnaC92dGQvZXh0ZXJuLmgKQEAgLTYwLDggKzYwLDkgQEAgaW50IGRldl9pbnZhbGlkYXRlX2lv dGxiKHN0cnVjdCBpb21tdSAqaW9tbXUsIHUxNiBkaWQsCiAgICAgICAgICAgICAgICAgICAgICAg ICAgdTY0IGFkZHIsIHVuc2lnbmVkIGludCBzaXplX29yZGVyLCB1NjQgdHlwZSk7CiAKIGludCBf X211c3RfY2hlY2sgcWludmFsX2RldmljZV9pb3RsYl9zeW5jKHN0cnVjdCBpb21tdSAqaW9tbXUs Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1MzIgbWF4X2ludnNf cGVuZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUxNiBzaWQs IHUxNiBzaXplLCB1NjQgYWRkcik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB1MzIgbWF4X2ludnNfcGVuZCwgdTE2IGRpZCwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHUxNiBzZWcsIHU4IGJ1cywgdTggZGV2Zm4sCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1MTYgc2l6ZSwgdTY0IGFkZHIpOwog CiB1bnNpZ25lZCBpbnQgZ2V0X2NhY2hlX2xpbmVfc2l6ZSh2b2lkKTsKIHZvaWQgY2FjaGVsaW5l X2ZsdXNoKGNoYXIgKik7CmRpZmYgLS1naXQgYS94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC92dGQv cWludmFsLmMgYi94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC92dGQvcWludmFsLmMKaW5kZXggNjlj YzZiZi4uYzc5NWU2YiAxMDA2NDQKLS0tIGEveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvdnRkL3Fp bnZhbC5jCisrKyBiL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL3Z0ZC9xaW52YWwuYwpAQCAtMjA2 LDEwICsyMDYsNzEgQEAgc3RhdGljIGludCBpbnZhbGlkYXRlX3N5bmMoc3RydWN0IGlvbW11ICpp b21tdSkKICAgICByZXR1cm4gMDsKIH0KIAorc3RhdGljIHZvaWQgZGV2X2ludmFsaWRhdGVfaW90 bGJfdGltZW91dChzdHJ1Y3QgaW9tbXUgKmlvbW11LCB1MTYgZGlkLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB1MTYgc2VnLCB1OCBidXMsIHU4IGRldmZuKQorewor ICAgIHN0cnVjdCBkb21haW4gKmQgPSBOVUxMOworICAgIHN0cnVjdCBwY2lfZGV2ICpwZGV2Owor CisgICAgaWYgKCB0ZXN0X2JpdChkaWQsIGlvbW11LT5kb21pZF9iaXRtYXApICkKKyAgICAgICAg ZCA9IHJjdV9sb2NrX2RvbWFpbl9ieV9pZChpb21tdS0+ZG9taWRfbWFwW2RpZF0pOworCisgICAg LyoKKyAgICAgKiBJbiBjYXNlIHRoZSBkb21haW4gaGFzIGJlZW4gZnJlZWQgb3IgdGhlIElPTU1V IGRvbWlkIGJpdG1hcCBpcworICAgICAqIG5vdCB2YWxpZCwgdGhlIGRldmljZSBubyBsb25nZXIg YmVsb25ncyB0byB0aGlzIGRvbWFpbi4KKyAgICAgKi8KKyAgICBpZiAoIGQgPT0gTlVMTCApCisg ICAgICAgIHJldHVybjsKKworICAgIHBjaWRldnNfbG9jaygpOworCisgICAgZm9yX2VhY2hfcGRl dihkLCBwZGV2KQorICAgIHsKKyAgICAgICAgaWYgKCAocGRldi0+c2VnID09IHNlZykgJiYKKyAg ICAgICAgICAgICAocGRldi0+YnVzID09IGJ1cykgJiYKKyAgICAgICAgICAgICAocGRldi0+ZGV2 Zm4gPT0gZGV2Zm4pICkKKyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUKHBkZXYtPmRvbWFp bik7CisgICAgICAgICAgICBsaXN0X2RlbCgmcGRldi0+ZG9tYWluX2xpc3QpOworICAgICAgICAg ICAgcGRldi0+ZG9tYWluID0gTlVMTDsKKyAgICAgICAgICAgIHBjaV9oaWRlX2V4aXN0aW5nX2Rl dmljZShwZGV2KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorCisgICAg cGNpZGV2c191bmxvY2soKTsKKworICAgIGlmICggIWlzX2hhcmR3YXJlX2RvbWFpbihkKSApCisg ICAgICAgIGRvbWFpbl9jcmFzaChkKTsKKyAgICBlbHNlCisgICAgICAgIHByaW50ayhYRU5MT0df V0FSTklORyBWVERQUkVGSVgKKyAgICAgICAgICAgICAgICIgZG9tJWQ6IEFUUyBkZXZpY2UgJTA0 eDolMDJ4OiUwMnguJXUgZmx1c2ggZmFpbGVkLlxuIiwKKyAgICAgICAgICAgICAgIGQtPmRvbWFp bl9pZCwKKyAgICAgICAgICAgICAgIHNlZywgYnVzLCBQQ0lfU0xPVChkZXZmbiksIFBDSV9GVU5D KGRldmZuKSk7CisKKyAgICByY3VfdW5sb2NrX2RvbWFpbihkKTsKK30KKworaW50IGRldl9pbnZh bGlkYXRlX3N5bmMoc3RydWN0IGlvbW11ICppb21tdSwgdTE2IGRpZCwKKyAgICAgICAgICAgICAg ICAgICAgICAgIHUxNiBzZWcsIHU4IGJ1cywgdTggZGV2Zm4pCit7CisgICAgc3RydWN0IHFpX2N0 cmwgKnFpX2N0cmwgPSBpb21tdV9xaV9jdHJsKGlvbW11KTsKKyAgICBpbnQgcmMgPSAwOworCisg ICAgaWYgKCBxaV9jdHJsLT5xaW52YWxfbWFkZHIgKQorICAgIHsKKyAgICAgICAgcmMgPSBxdWV1 ZV9pbnZhbGlkYXRlX3dhaXQoaW9tbXUsIDAsIDEsIDEpOworICAgICAgICBpZiAoIHJjID09IC1F VElNRURPVVQgKQorICAgICAgICAgICAgZGV2X2ludmFsaWRhdGVfaW90bGJfdGltZW91dChpb21t dSwgZGlkLCBzZWcsIGJ1cywgZGV2Zm4pOworICAgIH0KKworICAgIHJldHVybiByYzsKK30KKwog aW50IF9fbXVzdF9jaGVjayBxaW52YWxfZGV2aWNlX2lvdGxiX3N5bmMoc3RydWN0IGlvbW11ICpp b21tdSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUzMiBtYXhf aW52c19wZW5kLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdTE2 IHNpZCwgdTE2IHNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB1NjQgYWRkcikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUz MiBtYXhfaW52c19wZW5kLCB1MTYgZGlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgdTE2IHNlZywgdTggYnVzLCB1OCBkZXZmbiwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHUxNiBzaXplLCB1NjQgYWRkcikKIHsKICAgICB1bnNp Z25lZCBsb25nIGZsYWdzOwogICAgIHVuc2lnbmVkIGludCBpbmRleDsKQEAgLTIyNyw3ICsyODgs NyBAQCBpbnQgX19tdXN0X2NoZWNrIHFpbnZhbF9kZXZpY2VfaW90bGJfc3luYyhzdHJ1Y3QgaW9t bXUgKmlvbW11LAogICAgIHFpbnZhbF9lbnRyeS0+cS5kZXZfaW90bGJfaW52X2RzYy5sby5yZXNf MSA9IDA7CiAgICAgcWludmFsX2VudHJ5LT5xLmRldl9pb3RsYl9pbnZfZHNjLmxvLm1heF9pbnZz X3BlbmQgPSBtYXhfaW52c19wZW5kOwogICAgIHFpbnZhbF9lbnRyeS0+cS5kZXZfaW90bGJfaW52 X2RzYy5sby5yZXNfMiA9IDA7Ci0gICAgcWludmFsX2VudHJ5LT5xLmRldl9pb3RsYl9pbnZfZHNj LmxvLnNpZCA9IHNpZDsKKyAgICBxaW52YWxfZW50cnktPnEuZGV2X2lvdGxiX2ludl9kc2MubG8u c2lkID0gUENJX0JERjIoYnVzLCBkZXZmbik7CiAgICAgcWludmFsX2VudHJ5LT5xLmRldl9pb3Rs Yl9pbnZfZHNjLmxvLnJlc18zID0gMDsKIAogICAgIHFpbnZhbF9lbnRyeS0+cS5kZXZfaW90bGJf aW52X2RzYy5oaS5zaXplID0gc2l6ZTsKQEAgLTIzOCw3ICsyOTksNyBAQCBpbnQgX19tdXN0X2No ZWNrIHFpbnZhbF9kZXZpY2VfaW90bGJfc3luYyhzdHJ1Y3QgaW9tbXUgKmlvbW11LAogICAgIHFp bnZhbF91cGRhdGVfcXRhaWwoaW9tbXUsIGluZGV4KTsKICAgICBzcGluX3VubG9ja19pcnFyZXN0 b3JlKCZpb21tdS0+cmVnaXN0ZXJfbG9jaywgZmxhZ3MpOwogCi0gICAgcmV0dXJuIGludmFsaWRh dGVfc3luYyhpb21tdSk7CisgICAgcmV0dXJuIGRldl9pbnZhbGlkYXRlX3N5bmMoaW9tbXUsIGRp ZCwgc2VnLCBidXMsIGRldmZuKTsKIH0KIAogc3RhdGljIGludCBfX211c3RfY2hlY2sgcXVldWVf aW52YWxpZGF0ZV9pZWNfc3luYyhzdHJ1Y3QgaW9tbXUgKmlvbW11LApkaWZmIC0tZ2l0IGEveGVu L2RyaXZlcnMvcGFzc3Rocm91Z2gvdnRkL3g4Ni9hdHMuYyBiL3hlbi9kcml2ZXJzL3Bhc3N0aHJv dWdoL3Z0ZC94ODYvYXRzLmMKaW5kZXggZGZhNGQzMC4uNTAxOTBmMiAxMDA2NDQKLS0tIGEveGVu L2RyaXZlcnMvcGFzc3Rocm91Z2gvdnRkL3g4Ni9hdHMuYworKysgYi94ZW4vZHJpdmVycy9wYXNz dGhyb3VnaC92dGQveDg2L2F0cy5jCkBAIC0xMTYsNyArMTE2LDYgQEAgaW50IGRldl9pbnZhbGlk YXRlX2lvdGxiKHN0cnVjdCBpb21tdSAqaW9tbXUsIHUxNiBkaWQsCiAKICAgICBsaXN0X2Zvcl9l YWNoX2VudHJ5KCBwZGV2LCAmYXRzX2RldmljZXMsIGxpc3QgKQogICAgIHsKLSAgICAgICAgdTE2 IHNpZCA9IFBDSV9CREYyKHBkZXYtPmJ1cywgcGRldi0+ZGV2Zm4pOwogICAgICAgICBib29sX3Qg c2JpdDsKICAgICAgICAgaW50IHJjID0gMDsKIApAQCAtMTM0LDggKzEzMyw5IEBAIGludCBkZXZf aW52YWxpZGF0ZV9pb3RsYihzdHJ1Y3QgaW9tbXUgKmlvbW11LCB1MTYgZGlkLAogICAgICAgICAg ICAgLyogaW52YWxpZGF0ZSBhbGwgdHJhbnNsYXRpb25zOiBzYml0PTEsYml0XzYzPTAsYml0WzYy OjEyXT0xICovCiAgICAgICAgICAgICBzYml0ID0gMTsKICAgICAgICAgICAgIGFkZHIgPSAofjBV TCA8PCBQQUdFX1NISUZUXzRLKSAmIDB4N0ZGRkZGRkZGRkZGRkZGRjsKLSAgICAgICAgICAgIHJj ID0gcWludmFsX2RldmljZV9pb3RsYl9zeW5jKGlvbW11LCBwZGV2LT5hdHNfcXVldWVfZGVwdGgs Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaWQsIHNiaXQsIGFk ZHIpOworICAgICAgICAgICAgcmMgPSBxaW52YWxfZGV2aWNlX2lvdGxiX3N5bmMoaW9tbXUsIHBk ZXYtPmF0c19xdWV1ZV9kZXB0aCwgZGlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgcGRldi0+c2VnLCBwZGV2LT5idXMsIHBkZXYtPmRldmZuLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2JpdCwgYWRkcik7CiAgICAgICAgICAg ICBicmVhazsKICAgICAgICAgY2FzZSBETUFfVExCX1BTSV9GTFVTSDoKICAgICAgICAgICAgIGlm ICggIWRldmljZV9pbl9kb21haW4oaW9tbXUsIHBkZXYsIGRpZCkgKQpAQCAtMTU0LDggKzE1NCw5 IEBAIGludCBkZXZfaW52YWxpZGF0ZV9pb3RsYihzdHJ1Y3QgaW9tbXUgKmlvbW11LCB1MTYgZGlk LAogICAgICAgICAgICAgICAgIGFkZHIgfD0gKCgodTY0KTEgPDwgKHNpemVfb3JkZXIgLSAxKSkg LSAxKSA8PCBQQUdFX1NISUZUXzRLOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICByYyA9 IHFpbnZhbF9kZXZpY2VfaW90bGJfc3luYyhpb21tdSwgcGRldi0+YXRzX3F1ZXVlX2RlcHRoLAot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2lkLCBzYml0LCBhZGRy KTsKKyAgICAgICAgICAgIHJjID0gcWludmFsX2RldmljZV9pb3RsYl9zeW5jKGlvbW11LCBwZGV2 LT5hdHNfcXVldWVfZGVwdGgsIGRpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHBkZXYtPnNlZywgcGRldi0+YnVzLCBwZGV2LT5kZXZmbiwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNiaXQsIGFkZHIpOwogICAgICAgICAgICAg YnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBkcHJpbnRrKFhFTkxPR19XQVJO SU5HIFZURFBSRUZJWCwgImludmFsaWQgdnQtZCBmbHVzaCB0eXBlXG4iKTsKZGlmZiAtLWdpdCBh L3hlbi9pbmNsdWRlL3hlbi9wY2kuaCBiL3hlbi9pbmNsdWRlL3hlbi9wY2kuaAppbmRleCA2ZWQy OWRkLi5lNDk0MGNkIDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS94ZW4vcGNpLmgKKysrIGIveGVu L2luY2x1ZGUveGVuL3BjaS5oCkBAIC0xMTgsNiArMTE4LDcgQEAgaW50IHBjaV9hZGRfZGV2aWNl KHUxNiBzZWcsIHU4IGJ1cywgdTggZGV2Zm4sCiBpbnQgcGNpX3JlbW92ZV9kZXZpY2UodTE2IHNl ZywgdTggYnVzLCB1OCBkZXZmbik7CiBpbnQgcGNpX3JvX2RldmljZShpbnQgc2VnLCBpbnQgYnVz LCBpbnQgZGV2Zm4pOwogaW50IHBjaV9oaWRlX2RldmljZShpbnQgYnVzLCBpbnQgZGV2Zm4pOwor dm9pZCBwY2lfaGlkZV9leGlzdGluZ19kZXZpY2Uoc3RydWN0IHBjaV9kZXYgKnBkZXYpOwogc3Ry dWN0IHBjaV9kZXYgKnBjaV9nZXRfcGRldihpbnQgc2VnLCBpbnQgYnVzLCBpbnQgZGV2Zm4pOwog c3RydWN0IHBjaV9kZXYgKnBjaV9nZXRfcmVhbF9wZGV2KGludCBzZWcsIGludCBidXMsIGludCBk ZXZmbik7CiBzdHJ1Y3QgcGNpX2RldiAqcGNpX2dldF9wZGV2X2J5X2RvbWFpbigKLS0gCjEuOS4x CgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRl dmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwOi8vbGlzdHMueGVu Lm9yZy94ZW4tZGV2ZWwK