From mboxrd@z Thu Jan 1 00:00:00 1970 From: Subject: [PATCH 01/14] drm/amd/display: Add MST atomic routines Date: Tue, 1 Oct 2019 12:17:08 -0400 Message-ID: <20191001161721.13793-2-mikita.lipski@amd.com> References: <20191001161721.13793-1-mikita.lipski@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20191001161721.13793-1-mikita.lipski-5C7GfCeVMHo@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: amd-gfx-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "amd-gfx" To: amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Cc: dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, Jerry Zuo , Mikita Lipski , Harry Wentland , Nicholas Kazlauskas List-Id: dri-devel@lists.freedesktop.org RnJvbTogTWlraXRhIExpcHNraSA8bWlraXRhLmxpcHNraUBhbWQuY29tPgoKLSBBZGRpbmcgZW5j b2RlciBhdG9taWMgY2hlY2sgdG8gZmluZCB2Y3BpIHNsb3RzIGZvciBhIGNvbm5lY3RvcgotIFVz aW5nIERSTSBoZWxwZXIgZnVuY3Rpb25zIHRvIGNhbGN1bGF0ZSBQQk4KLSBBZGRpbmcgY29ubmVj dG9yIGF0b21pYyBjaGVjayB0byByZWxlYXNlIHZjcGkgc2xvdHMgaWYgY29ubmVjdG9yCmxvc2Vz IENSVEMKLSBDYWxjdWxhdGUgIFBCTiBhbmQgVkNQSSBzbG90cyBvbmx5IG9uY2UgZHVyaW5nIGF0 b21pYwpjaGVjayBhbmQgc3RvcmUgdGhlbSBvbiBhbWRncHUgY29ubmVjdG9yIHRvIGVsaW1pbmF0 ZQpyZWR1bmRhbnQgY2FsY3VsYXRpb24KLSBDYWxsIGRybV9kcF9tc3RfYXRvbWljX2NoZWNrIHRv IHZlcmlmeSB2YWxpZGl0eSBvZiBNU1QgdG9wb2xvZ3kKZHVyaW5nIHN0YXRlIGF0b21pYyBjaGVj awoKdjI6IHNxdWFzaGVkIHByZXZpb3VzIDMgc2VwYXJhdGUgcGF0Y2hlcywgcmVtb3ZlZCBEU0Mg UEJOIGNhbGN1bGF0aW9uLAphbmQgYWRkZWQgUEJOIGFuZCBWQ1BJIHNsb3RzIHByb3BlcnRpZXMg dG8gYW1kZ3B1IGNvbm5lY3RvcgoKQ2M6IEplcnJ5IFp1byA8SmVycnkuWnVvQGFtZC5jb20+CkNj OiBIYXJyeSBXZW50bGFuZCA8aGFycnkud2VudGxhbmRAYW1kLmNvbT4KQ2M6IE5pY2hvbGFzIEth emxhdXNrYXMgPG5pY2hvbGFzLmthemxhdXNrYXNAYW1kLmNvbT4KQ2M6IEx5dWRlIFBhdWwgPGx5 dWRlQHJlZGhhdC5jb20+ClNpZ25lZC1vZmYtYnk6IE1pa2l0YSBMaXBza2kgPG1pa2l0YS5saXBz a2lAYW1kLmNvbT4KLS0tCiAuLi4vZ3B1L2RybS9hbWQvZGlzcGxheS9hbWRncHVfZG0vYW1kZ3B1 X2RtLmMgfCA0MiArKysrKysrKysrKysrKysrKysrCiAuLi4vZ3B1L2RybS9hbWQvZGlzcGxheS9h bWRncHVfZG0vYW1kZ3B1X2RtLmggfCAgNCArKwogLi4uL2FtZC9kaXNwbGF5L2FtZGdwdV9kbS9h bWRncHVfZG1faGVscGVycy5jIHwgNDIgKystLS0tLS0tLS0tLS0tLS0tLQogLi4uL2Rpc3BsYXkv YW1kZ3B1X2RtL2FtZGdwdV9kbV9tc3RfdHlwZXMuYyAgIHwgMzIgKysrKysrKysrKysrKysKIDQg ZmlsZXMgY2hhbmdlZCwgODEgaW5zZXJ0aW9ucygrKSwgMzkgZGVsZXRpb25zKC0pCgpkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2FtZGdwdV9kbS9hbWRncHVfZG0uYyBi L2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9hbWRncHVfZG0vYW1kZ3B1X2RtLmMKaW5kZXgg MjM5YjFhZTg2MDA3Li4zZmMxYWZjY2JiMzMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9h bWQvZGlzcGxheS9hbWRncHVfZG0vYW1kZ3B1X2RtLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2Ft ZC9kaXNwbGF5L2FtZGdwdV9kbS9hbWRncHVfZG0uYwpAQCAtNDU3Myw2ICs0NTczLDQxIEBAIHN0 YXRpYyBpbnQgZG1fZW5jb2Rlcl9oZWxwZXJfYXRvbWljX2NoZWNrKHN0cnVjdCBkcm1fZW5jb2Rl ciAqZW5jb2RlciwKIAkJCQkJICBzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCiAJ CQkJCSAgc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKmNvbm5fc3RhdGUpCiB7CisJc3RydWN0 IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlID0gY3J0Y19zdGF0ZS0+c3RhdGU7CisJc3RydWN0IGRy bV9jb25uZWN0b3IgKmNvbm5lY3RvciA9IGNvbm5fc3RhdGUtPmNvbm5lY3RvcjsKKwlzdHJ1Y3Qg YW1kZ3B1X2RtX2Nvbm5lY3RvciAqYWNvbm5lY3RvciA9IHRvX2FtZGdwdV9kbV9jb25uZWN0b3Io Y29ubmVjdG9yKTsKKwlzdHJ1Y3QgZG1fY3J0Y19zdGF0ZSAqZG1fbmV3X2NydGNfc3RhdGUgPSB0 b19kbV9jcnRjX3N0YXRlKGNydGNfc3RhdGUpOworCWNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9t b2RlICphZGp1c3RlZF9tb2RlID0gJmNydGNfc3RhdGUtPmFkanVzdGVkX21vZGU7CisJc3RydWN0 IGRybV9kcF9tc3RfdG9wb2xvZ3lfbWdyICptc3RfbWdyOworCXN0cnVjdCBkcm1fZHBfbXN0X3Bv cnQgKm1zdF9wb3J0OworCWludCBjbG9jaywgYnBwID0gMDsKKworCWlmICghZG1fbmV3X2NydGNf c3RhdGUpCisJCXJldHVybiAwOworCisJaWYgKCFhY29ubmVjdG9yLT5wb3J0IHx8ICFhY29ubmVj dG9yLT5kY19zaW5rKQorCQlyZXR1cm4gMDsKKworCW1zdF9wb3J0ID0gYWNvbm5lY3Rvci0+cG9y dDsKKwltc3RfbWdyID0gJmFjb25uZWN0b3ItPm1zdF9wb3J0LT5tc3RfbWdyOworCisJaWYgKCFj cnRjX3N0YXRlLT5jb25uZWN0b3JzX2NoYW5nZWQgJiYgIWNydGNfc3RhdGUtPm1vZGVfY2hhbmdl ZCkKKwkJcmV0dXJuIDA7CisKKwlpZighc3RhdGUtPmR1cGxpY2F0ZWQpIHsKKwkJYnBwID0gKHVp bnQ4X3QpY29ubmVjdG9yLT5kaXNwbGF5X2luZm8uYnBjICogMzsKKwkJY2xvY2sgPSBhZGp1c3Rl ZF9tb2RlLT5jbG9jazsKKwkJYWNvbm5lY3Rvci0+cGJuID0gZHJtX2RwX2NhbGNfcGJuX21vZGUo Y2xvY2ssIGJwcCk7CisJfQorCWFjb25uZWN0b3ItPnZjcGlfc2xvdHMgPSBkcm1fZHBfYXRvbWlj X2ZpbmRfdmNwaV9zbG90cyhzdGF0ZSwKKwkJCQkJCQkgICAgICAgbXN0X21nciwKKwkJCQkJCQkg ICAgICAgbXN0X3BvcnQsCisJCQkJCQkJICAgICAgIGFjb25uZWN0b3ItPnBibik7CisKKwlpZiAo YWNvbm5lY3Rvci0+dmNwaV9zbG90cyA8IDApIHsKKwkJRFJNX0RFQlVHX0FUT01JQygiZmFpbGVk IGZpbmRpbmcgdmNwaSBzbG90czogJWRcbiIsIGFjb25uZWN0b3ItPnZjcGlfc2xvdHMpOworCQly ZXR1cm4gYWNvbm5lY3Rvci0+dmNwaV9zbG90czsKKwl9CiAJcmV0dXJuIDA7CiB9CiAKQEAgLTUx OTcsNiArNTIzMiw4IEBAIHZvaWQgYW1kZ3B1X2RtX2Nvbm5lY3Rvcl9pbml0X2hlbHBlcihzdHJ1 Y3QgYW1kZ3B1X2Rpc3BsYXlfbWFuYWdlciAqZG0sCiAJYWNvbm5lY3Rvci0+YmFzZS5kcG1zID0g RFJNX01PREVfRFBNU19PRkY7CiAJYWNvbm5lY3Rvci0+aHBkLmhwZCA9IEFNREdQVV9IUERfTk9O RTsgLyogbm90IHVzZWQgKi8KIAlhY29ubmVjdG9yLT5hdWRpb19pbnN0ID0gLTE7CisJYWNvbm5l Y3Rvci0+dmNwaV9zbG90cyA9IDA7CisJYWNvbm5lY3Rvci0+cGJuID0gMDsKIAltdXRleF9pbml0 KCZhY29ubmVjdG9yLT5ocGRfbG9jayk7CiAKIAkvKgpAQCAtNzU5Miw2ICs3NjI5LDExIEBAIHN0 YXRpYyBpbnQgYW1kZ3B1X2RtX2F0b21pY19jaGVjayhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAog CWlmIChyZXQpCiAJCWdvdG8gZmFpbDsKIAorCS8qIFBlcmZvcm0gdmFsaWRhdGlvbiBvZiBNU1Qg dG9wb2xvZ3kgaW4gdGhlIHN0YXRlKi8KKwlyZXQgPSBkcm1fZHBfbXN0X2F0b21pY19jaGVjayhz dGF0ZSk7CisJaWYgKHJldCkKKwkJZ290byBmYWlsOworCiAJaWYgKHN0YXRlLT5sZWdhY3lfY3Vy c29yX3VwZGF0ZSkgewogCQkvKgogCQkgKiBUaGlzIGlzIGEgZmFzdCBjdXJzb3IgdXBkYXRlIGNv bWluZyBmcm9tIHRoZSBwbGFuZSB1cGRhdGUKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9h bWQvZGlzcGxheS9hbWRncHVfZG0vYW1kZ3B1X2RtLmggYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rp c3BsYXkvYW1kZ3B1X2RtL2FtZGdwdV9kbS5oCmluZGV4IGM2ZmRlYmVlNzE4OS4uM2NlMTA0MzI0 MDk2IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvYW1kZ3B1X2RtL2Ft ZGdwdV9kbS5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9hbWRncHVfZG0vYW1k Z3B1X2RtLmgKQEAgLTI4MCw2ICsyODAsMTAgQEAgc3RydWN0IGFtZGdwdV9kbV9jb25uZWN0b3Ig ewogCXN0cnVjdCBhbWRncHVfZG1fY29ubmVjdG9yICptc3RfcG9ydDsKIAlzdHJ1Y3QgYW1kZ3B1 X2VuY29kZXIgKm1zdF9lbmNvZGVyOwogCisJLyogTVNUIHNwZWNpZmljICovCisJdWludDMyX3Qg dmNwaV9zbG90czsKKwl1aW50MzJfdCBwYm47CisKIAkvKiBUT0RPIHNlZSBpZiB3ZSBjYW4gbWVy Z2Ugd2l0aCBkZGNfYnVzIG9yIG1ha2UgYSBkbV9jb25uZWN0b3IgKi8KIAlzdHJ1Y3QgYW1kZ3B1 X2kyY19hZGFwdGVyICppMmM7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlz cGxheS9hbWRncHVfZG0vYW1kZ3B1X2RtX2hlbHBlcnMuYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQv ZGlzcGxheS9hbWRncHVfZG0vYW1kZ3B1X2RtX2hlbHBlcnMuYwppbmRleCAxMWU1Nzg0YWE2MmEu LjUyNTZhYmUzMmU5MiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2Ft ZGdwdV9kbS9hbWRncHVfZG1faGVscGVycy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlz cGxheS9hbWRncHVfZG0vYW1kZ3B1X2RtX2hlbHBlcnMuYwpAQCAtMTg0LDExICsxODQsNyBAQCBi b29sIGRtX2hlbHBlcnNfZHBfbXN0X3dyaXRlX3BheWxvYWRfYWxsb2NhdGlvbl90YWJsZSgKIAlz dHJ1Y3QgYW1kZ3B1X2RtX2Nvbm5lY3RvciAqYWNvbm5lY3RvcjsKIAlzdHJ1Y3QgZHJtX2RwX21z dF90b3BvbG9neV9tZ3IgKm1zdF9tZ3I7CiAJc3RydWN0IGRybV9kcF9tc3RfcG9ydCAqbXN0X3Bv cnQ7Ci0JaW50IHNsb3RzID0gMDsKIAlib29sIHJldDsKLQlpbnQgY2xvY2s7Ci0JaW50IGJwcCA9 IDA7Ci0JaW50IHBibiA9IDA7CiAKIAlhY29ubmVjdG9yID0gKHN0cnVjdCBhbWRncHVfZG1fY29u bmVjdG9yICopc3RyZWFtLT5kbV9zdHJlYW1fY29udGV4dDsKIApAQCAtMjAzLDQyICsxOTksMTAg QEAgYm9vbCBkbV9oZWxwZXJzX2RwX21zdF93cml0ZV9wYXlsb2FkX2FsbG9jYXRpb25fdGFibGUo CiAJbXN0X3BvcnQgPSBhY29ubmVjdG9yLT5wb3J0OwogCiAJaWYgKGVuYWJsZSkgewotCQljbG9j ayA9IHN0cmVhbS0+dGltaW5nLnBpeF9jbGtfMTAwaHogLyAxMDsKLQotCQlzd2l0Y2ggKHN0cmVh bS0+dGltaW5nLmRpc3BsYXlfY29sb3JfZGVwdGgpIHsKLQotCQljYXNlIENPTE9SX0RFUFRIXzY2 NjoKLQkJCWJwcCA9IDY7Ci0JCQlicmVhazsKLQkJY2FzZSBDT0xPUl9ERVBUSF84ODg6Ci0JCQli cHAgPSA4OwotCQkJYnJlYWs7Ci0JCWNhc2UgQ09MT1JfREVQVEhfMTAxMDEwOgotCQkJYnBwID0g MTA7Ci0JCQlicmVhazsKLQkJY2FzZSBDT0xPUl9ERVBUSF8xMjEyMTI6Ci0JCQlicHAgPSAxMjsK LQkJCWJyZWFrOwotCQljYXNlIENPTE9SX0RFUFRIXzE0MTQxNDoKLQkJCWJwcCA9IDE0OwotCQkJ YnJlYWs7Ci0JCWNhc2UgQ09MT1JfREVQVEhfMTYxNjE2OgotCQkJYnBwID0gMTY7Ci0JCQlicmVh azsKLQkJZGVmYXVsdDoKLQkJCUFTU0VSVChicHAgIT0gMCk7Ci0JCQlicmVhazsKLQkJfQotCi0J CWJwcCA9IGJwcCAqIDM7Ci0KLQkJLyogVE9ETyBuZWVkIHRvIGtub3cgbGluayByYXRlICovCi0K LQkJcGJuID0gZHJtX2RwX2NhbGNfcGJuX21vZGUoY2xvY2ssIGJwcCk7Ci0KLQkJc2xvdHMgPSBk cm1fZHBfZmluZF92Y3BpX3Nsb3RzKG1zdF9tZ3IsIHBibik7Ci0JCXJldCA9IGRybV9kcF9tc3Rf YWxsb2NhdGVfdmNwaShtc3RfbWdyLCBtc3RfcG9ydCwgcGJuLCBzbG90cyk7CiAKKwkJcmV0ID0g ZHJtX2RwX21zdF9hbGxvY2F0ZV92Y3BpKG1zdF9tZ3IsIG1zdF9wb3J0LAorCQkJCQkgICAgICAg YWNvbm5lY3Rvci0+cGJuLAorCQkJCQkgICAgICAgYWNvbm5lY3Rvci0+dmNwaV9zbG90cyk7CiAJ CWlmICghcmV0KQogCQkJcmV0dXJuIGZhbHNlOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vYW1kL2Rpc3BsYXkvYW1kZ3B1X2RtL2FtZGdwdV9kbV9tc3RfdHlwZXMuYyBiL2RyaXZlcnMv Z3B1L2RybS9hbWQvZGlzcGxheS9hbWRncHVfZG0vYW1kZ3B1X2RtX21zdF90eXBlcy5jCmluZGV4 IDNhZjJiNDI5ZmYxYi4uN2YzY2UyOWJkMTRjIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0v YW1kL2Rpc3BsYXkvYW1kZ3B1X2RtL2FtZGdwdV9kbV9tc3RfdHlwZXMuYworKysgYi9kcml2ZXJz L2dwdS9kcm0vYW1kL2Rpc3BsYXkvYW1kZ3B1X2RtL2FtZGdwdV9kbV9tc3RfdHlwZXMuYwpAQCAt MjUwLDEwICsyNTAsNDIgQEAgZG1fbXN0X2F0b21pY19iZXN0X2VuY29kZXIoc3RydWN0IGRybV9j b25uZWN0b3IgKmNvbm5lY3RvciwKIAlyZXR1cm4gJnRvX2FtZGdwdV9kbV9jb25uZWN0b3IoY29u bmVjdG9yKS0+bXN0X2VuY29kZXItPmJhc2U7CiB9CiAKK3N0YXRpYyBpbnQgZG1fZHBfbXN0X2F0 b21pY19jaGVjayhzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLAorCQkJCXN0cnVjdCBk cm1fYXRvbWljX3N0YXRlICpzdGF0ZSkKK3sKKwlzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAq bmV3X2Nvbm5fc3RhdGUgPQorCQkJZHJtX2F0b21pY19nZXRfbmV3X2Nvbm5lY3Rvcl9zdGF0ZShz dGF0ZSwgY29ubmVjdG9yKTsKKwlzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqb2xkX2Nvbm5f c3RhdGUgPQorCQkJZHJtX2F0b21pY19nZXRfb2xkX2Nvbm5lY3Rvcl9zdGF0ZShzdGF0ZSwgY29u bmVjdG9yKTsKKwlzdHJ1Y3QgYW1kZ3B1X2RtX2Nvbm5lY3RvciAqYWNvbm5lY3RvciA9IHRvX2Ft ZGdwdV9kbV9jb25uZWN0b3IoY29ubmVjdG9yKTsKKwlzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKm5l d19jcnRjX3N0YXRlOworCXN0cnVjdCBkcm1fZHBfbXN0X3RvcG9sb2d5X21nciAqbXN0X21ncjsK KwlzdHJ1Y3QgZHJtX2RwX21zdF9wb3J0ICptc3RfcG9ydDsKKworCW1zdF9wb3J0ID0gYWNvbm5l Y3Rvci0+cG9ydDsKKwltc3RfbWdyID0gJmFjb25uZWN0b3ItPm1zdF9wb3J0LT5tc3RfbWdyOwor CisJaWYgKCFvbGRfY29ubl9zdGF0ZS0+Y3J0YykKKwkJcmV0dXJuIDA7CisKKwlpZiAobmV3X2Nv bm5fc3RhdGUtPmNydGMpIHsKKwkJbmV3X2NydGNfc3RhdGUgPSBkcm1fYXRvbWljX2dldF9vbGRf Y3J0Y19zdGF0ZShzdGF0ZSwgbmV3X2Nvbm5fc3RhdGUtPmNydGMpOworCQlpZiAoIW5ld19jcnRj X3N0YXRlIHx8CisJCSAgICAhZHJtX2F0b21pY19jcnRjX25lZWRzX21vZGVzZXQobmV3X2NydGNf c3RhdGUpIHx8CisJCSAgICBuZXdfY3J0Y19zdGF0ZS0+ZW5hYmxlKQorCQkJcmV0dXJuIDA7CisJ CX0KKworCXJldHVybiBkcm1fZHBfYXRvbWljX3JlbGVhc2VfdmNwaV9zbG90cyhzdGF0ZSwKKwkJ CQkJCW1zdF9tZ3IsCisJCQkJCQltc3RfcG9ydCk7Cit9CisKIHN0YXRpYyBjb25zdCBzdHJ1Y3Qg ZHJtX2Nvbm5lY3Rvcl9oZWxwZXJfZnVuY3MgZG1fZHBfbXN0X2Nvbm5lY3Rvcl9oZWxwZXJfZnVu Y3MgPSB7CiAJLmdldF9tb2RlcyA9IGRtX2RwX21zdF9nZXRfbW9kZXMsCiAJLm1vZGVfdmFsaWQg PSBhbWRncHVfZG1fY29ubmVjdG9yX21vZGVfdmFsaWQsCiAJLmF0b21pY19iZXN0X2VuY29kZXIg PSBkbV9tc3RfYXRvbWljX2Jlc3RfZW5jb2RlciwKKwkuYXRvbWljX2NoZWNrID0gZG1fZHBfbXN0 X2F0b21pY19jaGVjaywKIH07CiAKIHN0YXRpYyB2b2lkIGFtZGdwdV9kbV9lbmNvZGVyX2Rlc3Ry b3koc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyKQotLSAKMi4xNy4xCgpfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwphbWQtZ2Z4IG1haWxpbmcgbGlzdAph bWQtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9y Zy9tYWlsbWFuL2xpc3RpbmZvL2FtZC1nZng=