From mboxrd@z Thu Jan 1 00:00:00 1970 From: Bhupinder Thakur Subject: [PATCH 27/27 v10] xen/arm: vpl011: Correct the logic for asserting/de-asserting SBSA UART TX interrupt Date: Fri, 22 Sep 2017 13:53:26 +0530 Message-ID: <1506068606-17066-28-git-send-email-bhupinder.thakur@linaro.org> References: <1506068606-17066-1-git-send-email-bhupinder.thakur@linaro.org> 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 1dvJGe-000577-Nn for xen-devel@lists.xenproject.org; Fri, 22 Sep 2017 08:25:00 +0000 Received: by mail-pg0-f43.google.com with SMTP id 7so239736pgd.13 for ; Fri, 22 Sep 2017 01:24:55 -0700 (PDT) In-Reply-To: <1506068606-17066-1-git-send-email-bhupinder.thakur@linaro.org> 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: Andre Przywara , Julien Grall , Stefano Stabellini List-Id: xen-devel@lists.xenproject.org VGhpcyBwYXRjaCBmaXhlcyB0aGUgaXNzdWUgb2JzZXJ2ZWQgd2hlbiBwbDAxMSBwYXRjaGVzIHdl cmUgdGVzdGVkIG9uCnRoZSBqdW5vcyBoYXJkd2FyZSBieSBBbmRyZS9KdWxpZW4uIEl0IHdhcyBv YnNlcnZlZCB0aGF0IHdoZW4gbGFyZ2Ugb3V0cHV0IGlzCmdlbmVyYXRlZCBzdWNoIGFzIG9uIHJ1 bm5pbmcgJ2ZpbmQgLycsIG91dHB1dCB3YXMgZ2V0dGluZyB0cnVuY2F0ZWQgaW50ZXJtaXR0ZW50 bHkKZHVlIHRvIE9VVCByaW5nIGJ1ZmZlciBnZXR0aW5nIGZ1bGwuCgpUaGlzIGlzc3VlIHdhcyBk dWUgdG8gdGhlIGZhY3QgdGhhdCB0aGUgU0JTQSBVQVJUIGRyaXZlciBleHBlY3RzIHRoYXQgd2hl bgphIFRYIGludGVycnVwdCBpcyBhc3NlcnRlZCB0aGVuIHRoZSBGSUZPIHF1ZXVlIHNob3VsZCBi ZSBhdGxlYXN0IGhhbGYgZW1wdHkgYW5kCnRoYXQgaXQgY2FuIHdyaXRlIE4gYnl0ZXMgaW4gdGhl IEZJRk8sIHdoZXJlIE4gaXMgaGFsZiB0aGUgRklGTyBxdWV1ZSBzaXplLCB3aXRob3V0CnRoZSBi eXRlcyBnZXR0aW5nIGRyb3BwZWQgZHVlIHRvIEZJRk8gZ2V0dGluZyBmdWxsLgoKVGhlIFNCU0Eg VUFSVCBlbXVsYXRpb24gbG9naWMgd2FzIGFzc2VydGluZyB0aGUgVFggaW50ZXJydXB0IGFzIHNv b24gYXMKYW55IHNwYWNlIGJlY2FtZSBhdmFpbGFibGUgaW4gdGhlIEZJRk8gYW5kIHRoZSBTQlNB IFVBUlQgZHJpdmVyIHRyaWVkIHRvIHdyaXRlCm1vcmUgZGF0YSAodXB0byAxNiBieXRlcykgaW4g dGhlIEZJRk8gZXhwZWN0aW5nIHRoYXQgdGhlcmUgaXMgZW5vdWdoIHNwYWNlCmF2YWlsYWJsZSBs ZWFkaW5nIHRvIGRyb3BwZWQgYnl0ZXMuCgpUaGUgU0JTQSBzcGVjIFsxXSBkb2VzIG5vdCBzcGVj aWZ5IHdoZW4gdGhlIFRYIGludGVycnVwdCBzaG91bGQgYmUgYXNzZXJ0ZWQKb3IgZGUtYXNzZXJ0 ZWQuIER1ZSB0byBsYWNrIG9mIGNsYXJpdHkgb24gdGhlIGV4cGVjdGVkIGJlaGF2aW9yLCBpdCBp cwphc3N1bWVkIGZvciBub3cgdGhhdCBUWCBpbnRlcnJ1cHQgc2hvdWxkIGJlIGFzc2VydGVkIG9u bHkgd2hlbiB0aGUgRklGTyBnb2VzCmhhbGYgZW1wdHkuCgpUQkQ6IE9uY2UgdGhlIFNCU0Egc3Bl YyBpcyB1cGRhdGVkIHdpdGggdGhlIGV4cGVjdGVkIGJlaGF2aW9yLCB0aGUgaW1wbGVtZW50YXRp b24Kd2lsbCBiZSBtb2RpZmllZCB0byBhbGlnbiB3aXRoIHRoZSBzcGVjIHJlcXVpcmVtZW50LgoK WzFdIGh0dHA6Ly9pbmZvY2VudGVyLmFybS5jb20vaGVscC90b3BpYy9jb20uYXJtLmRvYy5kZGkw MTgzZi9EREkwMTgzLnBkZgoKU2lnbmVkLW9mZi1ieTogQmh1cGluZGVyIFRoYWt1ciA8Ymh1cGlu ZGVyLnRoYWt1ckBsaW5hcm8ub3JnPgotLS0KQ0M6IEp1bGllbiBHcmFsbCA8anVsaWVuLmdyYWxs QGFybS5jb20+CkNDOiBBbmRyZSBQcnp5d2FyYSA8YW5kcmUucHJ6eXdhcmFAYXJtLmNvbT4KQ0M6 IFN0ZWZhbm8gU3RhYmVsbGluaSA8c3N0YWJlbGxpbmlAa2VybmVsLm9yZz4KCkNoYW5nZXMgc2lu Y2Ugdjg6Ci0gVXNlZCB2YXJpYWJsZXMgZmlmb19sZXZlbC9maWZvX3RocmVzaG9sZCBmb3IgbW9y ZSBjbGFyaXR5Ci0gQWRkZWQgYSBuZXcgbWFjcm8gU0JTQV9VQVJUX0ZJRk9fU0laRSBpbnN0ZWFk IG9mIHVzaW5nIGEgbWFnaWMgbnVtYmVyCi0gUmVuYW1lZCByaW5nX3FzaXplIHZhcmlhYmxlcyB0 byBmaWZvX2xldmVsIGZvciBjb25zaXN0ZW5jeSAKCiB4ZW4vYXJjaC9hcm0vdnBsMDExLmMgICAg ICAgIHwgODcgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0KIHhl bi9pbmNsdWRlL2FzbS1hcm0vdnBsMDExLmggfCAgMiArCiAyIGZpbGVzIGNoYW5nZWQsIDYxIGlu c2VydGlvbnMoKyksIDI4IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL2FybS92 cGwwMTEuYyBiL3hlbi9hcmNoL2FybS92cGwwMTEuYwppbmRleCAzNjc5NGQ4Li4xZjk3MjYxIDEw MDY0NAotLS0gYS94ZW4vYXJjaC9hcm0vdnBsMDExLmMKKysrIGIveGVuL2FyY2gvYXJtL3ZwbDAx MS5jCkBAIC05MSwyMCArOTEsMjQgQEAgc3RhdGljIHVpbnQ4X3QgdnBsMDExX3JlYWRfZGF0YShz dHJ1Y3QgZG9tYWluICpkKQogICAgICAqLwogICAgIGlmICggeGVuY29uc19xdWV1ZWQoaW5fcHJv ZCwgaW5fY29ucywgc2l6ZW9mKGludGYtPmluKSkgPiAwICkKICAgICB7CisgICAgICAgIHVuc2ln bmVkIGludCBmaWZvX2xldmVsOworCiAgICAgICAgIGRhdGEgPSBpbnRmLT5pblt4ZW5jb25zX21h c2soaW5fY29ucywgc2l6ZW9mKGludGYtPmluKSldOwogICAgICAgICBpbl9jb25zICs9IDE7CiAg ICAgICAgIHNtcF9tYigpOwogICAgICAgICBpbnRmLT5pbl9jb25zID0gaW5fY29uczsKKworICAg ICAgICBmaWZvX2xldmVsID0geGVuY29uc19xdWV1ZWQoaW5fcHJvZCwgaW5fY29ucywgc2l6ZW9m KGludGYtPmluKSk7CisKKyAgICAgICAgaWYgKCBmaWZvX2xldmVsID09IDAgKQorICAgICAgICB7 CisgICAgICAgICAgICB2cGwwMTEtPnVhcnRmciB8PSBSWEZFOworICAgICAgICAgICAgdnBsMDEx LT51YXJ0cmlzICY9IH5SWEk7CisgICAgICAgIH0KICAgICB9CiAgICAgZWxzZQogICAgICAgICBn cHJpbnRrKFhFTkxPR19FUlIsICJ2cGwwMTE6IFVuZXhwZWN0ZWQgSU4gcmluZyBidWZmZXIgZW1w dHlcbiIpOwogCi0gICAgaWYgKCB4ZW5jb25zX3F1ZXVlZChpbl9wcm9kLCBpbl9jb25zLCBzaXpl b2YoaW50Zi0+aW4pKSA9PSAwICkKLSAgICB7Ci0gICAgICAgIHZwbDAxMS0+dWFydGZyIHw9IFJY RkU7Ci0gICAgICAgIHZwbDAxMS0+dWFydHJpcyAmPSB+UlhJOwotICAgIH0KLQogICAgIHZwbDAx MS0+dWFydGZyICY9IH5SWEZGOwogCiAgICAgdnBsMDExX3VwZGF0ZV9pbnRlcnJ1cHRfc3RhdHVz KGQpOwpAQCAtMTQ0LDI4ICsxNDgsNDEgQEAgc3RhdGljIHZvaWQgdnBsMDExX3dyaXRlX2RhdGEo c3RydWN0IGRvbWFpbiAqZCwgdWludDhfdCBkYXRhKQogICAgIGlmICggeGVuY29uc19xdWV1ZWQo b3V0X3Byb2QsIG91dF9jb25zLCBzaXplb2YoaW50Zi0+b3V0KSkgIT0KICAgICAgICAgIHNpemVv ZiAoaW50Zi0+b3V0KSApCiAgICAgeworICAgICAgICB1bnNpZ25lZCBpbnQgZmlmb19sZXZlbCwg Zmlmb190aHJlc2hvbGQ7CisKICAgICAgICAgaW50Zi0+b3V0W3hlbmNvbnNfbWFzayhvdXRfcHJv ZCwgc2l6ZW9mKGludGYtPm91dCkpXSA9IGRhdGE7CiAgICAgICAgIG91dF9wcm9kICs9IDE7CiAg ICAgICAgIHNtcF93bWIoKTsKICAgICAgICAgaW50Zi0+b3V0X3Byb2QgPSBvdXRfcHJvZDsKLSAg ICB9Ci0gICAgZWxzZQotICAgICAgICBncHJpbnRrKFhFTkxPR19FUlIsICJ2cGwwMTE6IFVuZXhw ZWN0ZWQgT1VUIHJpbmcgYnVmZmVyIGZ1bGxcbiIpOwogCi0gICAgaWYgKCB4ZW5jb25zX3F1ZXVl ZChvdXRfcHJvZCwgb3V0X2NvbnMsIHNpemVvZihpbnRmLT5vdXQpKSA9PQotICAgICAgICAgc2l6 ZW9mIChpbnRmLT5vdXQpICkKLSAgICB7Ci0gICAgICAgIHZwbDAxMS0+dWFydGZyIHw9IFRYRkY7 Ci0gICAgICAgIHZwbDAxMS0+dWFydHJpcyAmPSB+VFhJOworICAgICAgICBmaWZvX2xldmVsID0g eGVuY29uc19xdWV1ZWQob3V0X3Byb2QsIG91dF9jb25zLCBzaXplb2YoaW50Zi0+b3V0KSk7CisK KyAgICAgICAgaWYgKCBmaWZvX2xldmVsID09IHNpemVvZiAoaW50Zi0+b3V0KSApCisgICAgICAg IHsKKyAgICAgICAgICAgIHZwbDAxMS0+dWFydGZyIHw9IFRYRkY7CisKKyAgICAgICAgICAgIC8q CisgICAgICAgICAgICAgKiBUaGlzIGJpdCBpcyBzZXQgb25seSB3aGVuIEZJRk8gYmVjb21lcyBm dWxsLiBUaGlzIGVuc3VyZXMgdGhhdAorICAgICAgICAgICAgICogdGhlIFNCU0EgVUFSVCBkcml2 ZXIgY2FuIHdyaXRlIHRoZSBlYXJseSBjb25zb2xlIGRhdGEgYXMgZmFzdCBhcworICAgICAgICAg ICAgICogcG9zc2libGUsIHdpdGhvdXQgd2FpdGluZyBmb3IgdGhlIEJVU1kgYml0IHRvIGdldCBj bGVhcmVkIGJlZm9yZQorICAgICAgICAgICAgICogd3JpdGluZyBlYWNoIGJ5dGUuCisgICAgICAg ICAgICAgKi8KKyAgICAgICAgICAgIHZwbDAxMS0+dWFydGZyIHw9IEJVU1k7CisgICAgICAgIH0K IAogICAgICAgICAvKgotICAgICAgICAgKiBUaGlzIGJpdCBpcyBzZXQgb25seSB3aGVuIEZJRk8g YmVjb21lcyBmdWxsLiBUaGlzIGVuc3VyZXMgdGhhdAotICAgICAgICAgKiB0aGUgU0JTQSBVQVJU IGRyaXZlciBjYW4gd3JpdGUgdGhlIGVhcmx5IGNvbnNvbGUgZGF0YSBhcyBmYXN0IGFzCi0gICAg ICAgICAqIHBvc3NpYmxlLCB3aXRob3V0IHdhaXRpbmcgZm9yIHRoZSBCVVNZIGJpdCB0byBnZXQg Y2xlYXJlZCBiZWZvcmUKLSAgICAgICAgICogd3JpdGluZyBlYWNoIGJ5dGUuCisgICAgICAgICAq IENsZWFyIHRoZSBUWEkgYml0IGlmIHRoZSBmaWZvIGxldmVsIGV4Y2VlZHMgZmlmb19zaXplLzIg bWFyayB3aGljaAorICAgICAgICAgKiBpcyB0aGUgdHJpZ2dlciBsZXZlbCBmb3IgYXNzZXJ0aW5n L2RlLWFzc3RlcnRpbmcgdGhlIFRYIGludGVycnVwdC4KICAgICAgICAgICovCi0gICAgICAgIHZw bDAxMS0+dWFydGZyIHw9IEJVU1k7CisgICAgICAgIGZpZm9fdGhyZXNob2xkID0gc2l6ZW9mIChp bnRmLT5vdXQpIC0gU0JTQV9VQVJUX0ZJRk9fU0laRS8yOworCisgICAgICAgIGlmICggZmlmb19s ZXZlbCA8PSBmaWZvX3RocmVzaG9sZCApCisgICAgICAgICAgICB2cGwwMTEtPnVhcnRyaXMgfD0g VFhJOworICAgICAgICBlbHNlCisgICAgICAgICAgICB2cGwwMTEtPnVhcnRyaXMgJj0gflRYSTsK ICAgICB9CisgICAgZWxzZQorICAgICAgICBncHJpbnRrKFhFTkxPR19FUlIsICJ2cGwwMTE6IFVu ZXhwZWN0ZWQgT1VUIHJpbmcgYnVmZmVyIGZ1bGxcbiIpOwogCiAgICAgdnBsMDExLT51YXJ0ZnIg Jj0gflRYRkU7CiAKQEAgLTM0Miw3ICszNTksNyBAQCBzdGF0aWMgdm9pZCB2cGwwMTFfZGF0YV9h dmFpbChzdHJ1Y3QgZG9tYWluICpkKQogICAgIHN0cnVjdCB2cGwwMTEgKnZwbDAxMSA9ICZkLT5h cmNoLnZwbDAxMTsKICAgICBzdHJ1Y3QgeGVuY29uc19pbnRlcmZhY2UgKmludGYgPSB2cGwwMTEt PnJpbmdfYnVmOwogICAgIFhFTkNPTlNfUklOR19JRFggaW5fY29ucywgaW5fcHJvZCwgb3V0X2Nv bnMsIG91dF9wcm9kOwotICAgIFhFTkNPTlNfUklOR19JRFggaW5fcmluZ19xc2l6ZSwgb3V0X3Jp bmdfcXNpemU7CisgICAgWEVOQ09OU19SSU5HX0lEWCBpbl9maWZvX2xldmVsLCBvdXRfZmlmb19s ZXZlbDsKIAogICAgIFZQTDAxMV9MT0NLKGQsIGZsYWdzKTsKIApAQCAtMzUzLDM3ICszNzAsNTEg QEAgc3RhdGljIHZvaWQgdnBsMDExX2RhdGFfYXZhaWwoc3RydWN0IGRvbWFpbiAqZCkKIAogICAg IHNtcF9ybWIoKTsKIAotICAgIGluX3JpbmdfcXNpemUgPSB4ZW5jb25zX3F1ZXVlZChpbl9wcm9k LAorICAgIGluX2ZpZm9fbGV2ZWwgPSB4ZW5jb25zX3F1ZXVlZChpbl9wcm9kLAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBpbl9jb25zLAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBzaXplb2YoaW50Zi0+aW4pKTsKIAotICAgIG91dF9yaW5nX3FzaXplID0g eGVuY29uc19xdWV1ZWQob3V0X3Byb2QsCisgICAgb3V0X2ZpZm9fbGV2ZWwgPSB4ZW5jb25zX3F1 ZXVlZChvdXRfcHJvZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dF9j b25zLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKGludGYtPm91 dCkpOwogCiAgICAgLyogVXBkYXRlIHRoZSB1YXJ0IHJ4IHN0YXRlIGlmIHRoZSBidWZmZXIgaXMg bm90IGVtcHR5LiAqLwotICAgIGlmICggaW5fcmluZ19xc2l6ZSAhPSAwICkKKyAgICBpZiAoIGlu X2ZpZm9fbGV2ZWwgIT0gMCApCiAgICAgewogICAgICAgICB2cGwwMTEtPnVhcnRmciAmPSB+UlhG RTsKLSAgICAgICAgaWYgKCBpbl9yaW5nX3FzaXplID09IHNpemVvZihpbnRmLT5pbikgKQorCisg ICAgICAgIGlmICggaW5fZmlmb19sZXZlbCA9PSBzaXplb2YoaW50Zi0+aW4pICkKICAgICAgICAg ICAgIHZwbDAxMS0+dWFydGZyIHw9IFJYRkY7CisKICAgICAgICAgdnBsMDExLT51YXJ0cmlzIHw9 IFJYSTsKICAgICB9CiAKICAgICAvKiBVcGRhdGUgdGhlIHVhcnQgdHggc3RhdGUgaWYgdGhlIGJ1 ZmZlciBpcyBub3QgZnVsbC4gKi8KLSAgICBpZiAoIG91dF9yaW5nX3FzaXplICE9IHNpemVvZihp bnRmLT5vdXQpICkKKyAgICBpZiAoIG91dF9maWZvX2xldmVsICE9IHNpemVvZihpbnRmLT5vdXQp ICkKICAgICB7CisgICAgICAgIHVuc2lnbmVkIGludCBvdXRfZmlmb190aHJlc2hvbGQ7CisKICAg ICAgICAgdnBsMDExLT51YXJ0ZnIgJj0gflRYRkY7Ci0gICAgICAgIHZwbDAxMS0+dWFydHJpcyB8 PSBUWEk7CiAKICAgICAgICAgLyoKLSAgICAgICAgICogQ2xlYXIgdGhlIEJVU1kgYml0IGFzIHNv b24gYXMgc3BhY2UgYmVjb21lcyBhdmFpbGFibGUKKyAgICAgICAgICogQ2xlYXIgdGhlIEJVU1kg Yml0IGFzIHNvb24gYXMgc3BhY2UgYmVjb21lcyBhdmFsaWFibGUKICAgICAgICAgICogc28gdGhh dCB0aGUgU0JTQSBVQVJUIGRyaXZlciBjYW4gc3RhcnQgd3JpdGluZyBtb3JlIGRhdGEKICAgICAg ICAgICogd2l0aG91dCBhbnkgZnVydGhlciBkZWxheS4KICAgICAgICAgICovCiAgICAgICAgIHZw bDAxMS0+dWFydGZyICY9IH5CVVNZOwogCi0gICAgICAgIGlmICggb3V0X3JpbmdfcXNpemUgPT0g MCApCisgICAgICAgIC8qCisgICAgICAgICAqIFNldCB0aGUgVFhJIGJpdCBvbmx5IHdoZW4gdGhl cmUgaXMgc3BhY2UgZm9yIGZpZm9fc2l6ZS8yIGJ5dGVzIHdoaWNoCisgICAgICAgICAqIGlzIHRo ZSB0cmlnZ2VyIGxldmVsIGZvciBhc3NlcnRpbmcvZGUtYXNzdGVydGluZyB0aGUgVFggaW50ZXJy dXB0LgorICAgICAgICAgKi8KKyAgICAgICAgb3V0X2ZpZm9fdGhyZXNob2xkID0gc2l6ZW9mKGlu dGYtPm91dCkgLSBTQlNBX1VBUlRfRklGT19TSVpFLzI7CisKKyAgICAgICAgaWYgKCBvdXRfZmlm b19sZXZlbCA8PSBvdXRfZmlmb190aHJlc2hvbGQgKQorICAgICAgICAgICAgdnBsMDExLT51YXJ0 cmlzIHw9IFRYSTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgdnBsMDExLT51YXJ0cmlzICY9 IH5UWEk7CisKKyAgICAgICAgaWYgKCBvdXRfZmlmb19sZXZlbCA9PSAwICkKICAgICAgICAgICAg IHZwbDAxMS0+dWFydGZyIHw9IFRYRkU7CiAgICAgfQogCmRpZmYgLS1naXQgYS94ZW4vaW5jbHVk ZS9hc20tYXJtL3ZwbDAxMS5oIGIveGVuL2luY2x1ZGUvYXNtLWFybS92cGwwMTEuaAppbmRleCAx YjU4M2RhLi5kYjk1ZmY4IDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS9hc20tYXJtL3ZwbDAxMS5o CisrKyBiL3hlbi9pbmNsdWRlL2FzbS1hcm0vdnBsMDExLmgKQEAgLTI4LDYgKzI4LDggQEAKICNk ZWZpbmUgVlBMMDExX0xPQ0soZCxmbGFncykgc3Bpbl9sb2NrX2lycXNhdmUoJihkKS0+YXJjaC52 cGwwMTEubG9jaywgZmxhZ3MpCiAjZGVmaW5lIFZQTDAxMV9VTkxPQ0soZCxmbGFncykgc3Bpbl91 bmxvY2tfaXJxcmVzdG9yZSgmKGQpLT5hcmNoLnZwbDAxMS5sb2NrLCBmbGFncykKIAorI2RlZmlu ZSBTQlNBX1VBUlRfRklGT19TSVpFIDMyCisKIHN0cnVjdCB2cGwwMTEgewogICAgIHZvaWQgKnJp bmdfYnVmOwogICAgIHN0cnVjdCBwYWdlX2luZm8gKnJpbmdfcGFnZTsKLS0gCjIuNy40CgoKX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1h aWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwczovL2xpc3RzLnhlbi5vcmcv eGVuLWRldmVsCg==