From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jani Nikula Subject: Re: [PATCH 3/4] drm/i915: Sanitize watermarks after hardware state readout (v2) Date: Wed, 04 Nov 2015 16:12:33 +0200 Message-ID: <871tc5onu6.fsf@intel.com> References: <87k2pzo0yd.fsf@intel.com> <1446569697-17425-1-git-send-email-matthew.d.roper@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTP id 863EC89170 for ; Wed, 4 Nov 2015 06:10:03 -0800 (PST) In-Reply-To: <1446569697-17425-1-git-send-email-matthew.d.roper@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Matt Roper , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gVHVlLCAwMyBOb3YgMjAxNSwgTWF0dCBSb3BlciA8bWF0dGhldy5kLnJvcGVyQGludGVsLmNv bT4gd3JvdGU6Cj4gQWx0aG91Z2ggd2UgY2FuIGRvIGEgZ29vZCBqb2Igb2YgcmVhZGluZyBvdXQg aGFyZHdhcmUgc3RhdGUsIHRoZQo+IGdyYXBoaWNzIGZpcm13YXJlIG1heSBoYXZlIHByb2dyYW1t ZWQgdGhlIHdhdGVybWFya3MgaW4gYSBjcmVhdGl2ZSB3YXkKPiB0aGF0IGRvZXNuJ3QgbWF0Y2gg aG93IGk5MTUgd291bGQgaGF2ZSBjaG9zZW4gdG8gcHJvZ3JhbSB0aGVtLiAgV2UKPiBzaG91bGRu J3QgdHJ1c3QgdGhlIGZpcm13YXJlJ3Mgd2F0ZXJtYXJrIHByb2dyYW1taW5nLCBidXQgc2hvdWxk IHJhdGhlcgo+IHJlLWNhbGN1bGF0ZSBob3cgd2UgdGhpbmsgV00ncyBzaG91bGQgYmUgcHJvZ3Jh bW1lZCBhbmQgdGhlbiBzaG92ZSB0aG9zZQo+IHZhbHVlcyBpbnRvIHRoZSBoYXJkd2FyZS4KPgo+ IFdlIGNhbiBkbyB0aGlzIHByZXR0eSBlYXNpbHkgYnkgY3JlYXRpbmcgYSBkdW1teSB0b3AtbGV2 ZWwgc3RhdGUsCj4gcnVubmluZyBpdCB0aHJvdWdoIHRoZSBjaGVjayBwcm9jZXNzIHRvIGNhbGN1 bGF0ZSBhbGwgdGhlIHZhbHVlcywgYW5kCj4gdGhlbiBqdXN0IHByb2dyYW1taW5nIHRoZSB3YXRl cm1hcmtzIGZvciBlYWNoIENSVEMuCj4KPiB2MjogIE1vdmUgd2F0ZXJtYXJrIHNhbml0aXphdGlv biBhZnRlciBvdXIgQklPUyBmYiByZWNvbnN0cnVjdGlvbjsgdGhlCj4gICAgICB3YXRlcm1hcmsg Y2FsY3VsYXRpb25zIHRoYXQgd2UgZG8gaGVyZSBuZWVkIHRvIGxvb2sgYXQgcHN0YXRlLT5mYiwK PiAgICAgIHdoaWNoIGlzbid0IHNldHVwIHlldCBpbiBpbnRlbF9tb2Rlc2V0X3NldHVwX2h3X3N0 YXRlKCksIGV2ZW4KPiAgICAgIHRob3VnaCB3ZSBoYXZlIGFuIGVuYWJsZWQgJiB2aXNpYmxlIHBs YW5lLgo+Cj4gQ2M6IEphbmkgTmlrdWxhIDxqYW5pLm5pa3VsYUBpbnRlbC5jb20+Cj4gQ2M6IE1h YXJ0ZW4gTGFua2hvcnN0IDxtYWFydGVuLmxhbmtob3JzdEBsaW51eC5pbnRlbC5jb20+Cj4gU2ln bmVkLW9mZi1ieTogTWF0dCBSb3BlciA8bWF0dGhldy5kLnJvcGVyQGludGVsLmNvbT4KPiAtLS0K PiBKYW5pLCBiYXNlZCBvbiB5b3VyIGxvZ3MgaXQgbG9va3MgbGlrZSB0aGUgY3VscHJpdCBpcyB0 aGF0IHdlJ3JlIGNhbGN1bGF0aW5nCj4gd2F0ZXJtYXJrcyBhdCBzdGFydHVwIHRpbWUgYWZ0ZXIg d2UndmUgcmVhZCBvdXQgcHJlbGltaW5hcnkgaGFyZHdhcmUgc3RhdGUgKHNvCj4gd2Uga25vdyB0 aGUgcHJpbWFyeSBwbGFuZSBpcyBlbmFibGVkICYgdmlzaWJsZSksIGJ1dCBiZWZvcmUgd2UgcmVj b25zdHJ1Y3QgdGhlCj4gQklPUyBmYiAoc28gcHN0YXRlLT5mYiBpcyBOVUxMKS4gIEkgdGhpbmsg bW92aW5nIHRoZSB3YXRlcm1hcmsgc2FuaXRpemF0aW9uCj4gbGF0ZXIgaW4gdGhlIHByb2Nlc3Mg c28gdGhhdCB3ZSdsbCBoYXZlIGEgcHJvcGVyIGZiIHNldHVwIHNob3VsZCBob3BlZnVsbHkKPiBz b2x2ZSB0aGUgaXNzdWUuICBDYW4geW91IHRlc3QgdGhpcyB2ZXJzaW9uIHdoZW4geW91IGdldCBh IGNoYW5jZT8gIEknbGwgYWxzbwo+IHNlbmQgYSByZWJhc2VkIHBhdGNoICM0IHNpbmNlIHRoZSBj b2RlIG1vdmVtZW50IGhlcmUgbWVhbnMgdGhhdCB0aGUgcHJldmlvdXMKPiB2ZXJzaW9uIHdvbid0 IGFwcGx5IGNsZWFubHkuCgpTb3JyeSBNYXR0LCBibGFjayBzY3JlZW4gd2l0aCBuZXcgdmVyc2lv bnMgb2YgcGF0Y2hlcyAzLTQuIERtZXNnIGF0Cmh0dHA6Ly9wYXN0ZWJpbi5jb20vM0xYWnd2V3UK CkJSLApKYW5pLgoKCgo+Cj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggICAgICB8 ICAxICsKPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIHwgNTUgKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX3BtLmMgICAgICB8IDE0ICsrKysrLS0tLQo+ICAzIGZpbGVzIGNoYW5nZWQsIDY0IGluc2Vy dGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCj4KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiBpbmRl eCAyMGNkNmQ4Li4wOTgwN2M4IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZHJ2LmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gQEAgLTYy OSw2ICs2MjksNyBAQCBzdHJ1Y3QgZHJtX2k5MTVfZGlzcGxheV9mdW5jcyB7Cj4gIAkJCSAgc3Ry dWN0IGRwbGwgKmJlc3RfY2xvY2spOwo+ICAJaW50ICgqY29tcHV0ZV9waXBlX3dtKShzdHJ1Y3Qg aW50ZWxfY3J0YyAqY3J0YywKPiAgCQkJICAgICAgIHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpz dGF0ZSk7Cj4gKwl2b2lkICgqcHJvZ3JhbV93YXRlcm1hcmtzKShzdHJ1Y3QgaW50ZWxfY3J0Y19z dGF0ZSAqY3N0YXRlKTsKPiAgCXZvaWQgKCp1cGRhdGVfd20pKHN0cnVjdCBkcm1fY3J0YyAqY3J0 Yyk7Cj4gIAlpbnQgKCptb2Rlc2V0X2NhbGNfY2RjbGspKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRl ICpzdGF0ZSk7Cj4gIAl2b2lkICgqbW9kZXNldF9jb21taXRfY2RjbGspKHN0cnVjdCBkcm1fYXRv bWljX3N0YXRlICpzdGF0ZSk7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2Rpc3BsYXkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+IGlu ZGV4IDdiM2NmYjYuLmUyODkzMTEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZGlzcGxheS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxh eS5jCj4gQEAgLTE0OTM2LDYgKzE0OTM2LDU0IEBAIHZvaWQgaW50ZWxfbW9kZXNldF9pbml0X2h3 KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gIAlpbnRlbF9lbmFibGVfZ3RfcG93ZXJzYXZlKGRl dik7Cj4gIH0KPiAgCj4gKy8qCj4gKyAqIENhbGN1bGF0ZSB3aGF0IHdlIHRoaW5rIHRoZSB3YXRl cm1hcmtzIHNob3VsZCBiZSBmb3IgdGhlIHN0YXRlIHdlJ3ZlIHJlYWQKPiArICogb3V0IG9mIHRo ZSBoYXJkd2FyZSBhbmQgdGhlbiBpbW1lZGlhdGVseSBwcm9ncmFtIHRob3NlIHdhdGVybWFya3Mg c28gdGhhdAo+ICsgKiB3ZSBlbnN1cmUgdGhlIGhhcmR3YXJlIHNldHRpbmdzIG1hdGNoIG91ciBp bnRlcm5hbCBzdGF0ZS4KPiArICovCj4gK3N0YXRpYyB2b2lkIHNhbml0aXplX3dhdGVybWFya3Mo c3RydWN0IGRybV9kZXZpY2UgKmRldikKPiArewo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2ID0gdG9faTkxNShkZXYpOwo+ICsJc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0 YXRlOwo+ICsJc3RydWN0IGRybV9jcnRjICpjcnRjOwo+ICsJc3RydWN0IGRybV9jcnRjX3N0YXRl ICpjc3RhdGU7Cj4gKwlpbnQgcmV0Owo+ICsJaW50IGk7Cj4gKwo+ICsJLyogT25seSBzdXBwb3J0 ZWQgb24gcGxhdGZvcm1zIHRoYXQgdXNlIGF0b21pYyB3YXRlcm1hcmsgZGVzaWduICovCj4gKwlp ZiAoIWRldl9wcml2LT5kaXNwbGF5LnByb2dyYW1fd2F0ZXJtYXJrcykKPiArCQlyZXR1cm47Cj4g Kwo+ICsJLyoKPiArCSAqIENhbGN1bGF0ZSB3aGF0IHdlIHRoaW5rIFdNJ3Mgc2hvdWxkIGJlIGJ5 IGNyZWF0aW5nIGEgZHVtbXkgc3RhdGUgYW5kCj4gKwkgKiBydW5uaW5nIGl0IHRocm91Z2ggdGhl IGF0b21pYyBjaGVjayBjb2RlLgo+ICsJICovCj4gKwlzdGF0ZSA9IGRybV9hdG9taWNfaGVscGVy X2R1cGxpY2F0ZV9zdGF0ZShkZXYsCj4gKwkJCQkJCSAgZGV2LT5tb2RlX2NvbmZpZy5hY3F1aXJl X2N0eCk7Cj4gKwlpZiAoV0FSTl9PTihJU19FUlIoc3RhdGUpKSkKPiArCQlyZXR1cm47Cj4gKwo+ ICsJcmV0ID0gaW50ZWxfYXRvbWljX2NoZWNrKGRldiwgc3RhdGUpOwo+ICsJaWYgKHJldCkgewo+ ICsJCS8qCj4gKwkJICogSnVzdCBnaXZlIHVwIGFuZCBsZWF2ZSB3YXRlcm1hcmtzIHVudG91Y2hl ZCBpZiB3ZSBnZXQgYW4KPiArCQkgKiBlcnJvciBiYWNrIGZyb20gJ2NoZWNrJwo+ICsJCSAqLwo+ ICsJCURSTV9ERUJVR19LTVMoIkNvdWxkIG5vdCBkZXRlcm1pbmUgdmFsaWQgd2F0ZXJtYXJrcyBm b3IgaW5oZXJpdGVkIHN0YXRlXG4iKTsKPiArCQlyZXR1cm47Cj4gKwl9Cj4gKwo+ICsJLyogV3Jp dGUgY2FsY3VsYXRlZCB3YXRlcm1hcmsgdmFsdWVzIGJhY2sgKi8KPiArCXRvX2k5MTUoZGV2KS0+ d20uY29uZmlnID0gdG9faW50ZWxfYXRvbWljX3N0YXRlKHN0YXRlKS0+d21fY29uZmlnOwo+ICsJ Zm9yX2VhY2hfY3J0Y19pbl9zdGF0ZShzdGF0ZSwgY3J0YywgY3N0YXRlLCBpKSB7Cj4gKwkJc3Ry dWN0IGludGVsX2NydGNfc3RhdGUgKmNzID0gdG9faW50ZWxfY3J0Y19zdGF0ZShjc3RhdGUpOwo+ ICsKPiArCQlkZXZfcHJpdi0+ZGlzcGxheS5wcm9ncmFtX3dhdGVybWFya3MoY3MpOwo+ICsJfQo+ ICsKPiArCWRybV9hdG9taWNfc3RhdGVfZnJlZShzdGF0ZSk7Cj4gK30KPiArCj4gIHZvaWQgaW50 ZWxfbW9kZXNldF9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gIHsKPiAgCXN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4gQEAgLTE1MDU5 LDYgKzE1MTA3LDEzIEBAIHZvaWQgaW50ZWxfbW9kZXNldF9pbml0KHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYpCj4gIAkJICovCj4gIAkJaW50ZWxfZmluZF9pbml0aWFsX3BsYW5lX29iaihjcnRjLCAm cGxhbmVfY29uZmlnKTsKPiAgCX0KPiArCj4gKwkvKgo+ICsJICogTWFrZSBzdXJlIGhhcmR3YXJl IHdhdGVybWFya3MgcmVhbGx5IG1hdGNoIHRoZSBzdGF0ZSB3ZSByZWFkIG91dC4KPiArCSAqIE5v dGUgdGhhdCB3ZSBuZWVkIHRvIGRvIHRoaXMgYWZ0ZXIgcmVjb25zdHJ1Y3RpbmcgdGhlIEJJT1Mg ZmIncwo+ICsJICogc2luY2UgdGhlIHdhdGVybWFyayBjYWxjdWxhdGlvbiBkb25lIGhlcmUgd2ls bCB1c2UgcHN0YXRlLT5mYi4KPiArCSAqLwo+ICsJc2FuaXRpemVfd2F0ZXJtYXJrcyhkZXYpOwo+ ICB9Cj4gIAo+ICBzdGF0aWMgdm9pZCBpbnRlbF9lbmFibGVfcGlwZV9hKHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYpCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCj4gaW5kZXggMTgwMzQ4Yi4uZmJjYjA3 MiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCj4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYwo+IEBAIC0zNjExLDE1ICszNjExLDE5IEBA IHN0YXRpYyB2b2lkIHNrbF91cGRhdGVfd20oc3RydWN0IGRybV9jcnRjICpjcnRjKQo+ICAJZGV2 X3ByaXYtPndtLnNrbF9odyA9ICpyZXN1bHRzOwo+ICB9Cj4gIAo+IC1zdGF0aWMgdm9pZCBpbGtf cHJvZ3JhbV93YXRlcm1hcmtzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAr c3RhdGljIHZvaWQgaWxrX3Byb2dyYW1fd2F0ZXJtYXJrcyhzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0 ZSAqY3N0YXRlKQo+ICB7Cj4gLQlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gZGV2X3ByaXYtPmRl djsKPiArCXN0cnVjdCBkcm1fY3J0YyAqY3J0YyA9IGNzdGF0ZS0+YmFzZS5jcnRjOwo+ICsJc3Ry dWN0IGRybV9kZXZpY2UgKmRldiA9IGNydGMtPmRldjsKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKPiAgCXN0cnVjdCBpbnRlbF9waXBlX3dtIGxw X3dtXzFfMiA9IHt9LCBscF93bV81XzYgPSB7fSwgKmJlc3RfbHBfd207Cj4gIAlzdHJ1Y3QgaWxr X3dtX21heGltdW1zIG1heDsKPiAgCXN0cnVjdCBpbnRlbF93bV9jb25maWcgKmNvbmZpZyA9ICZk ZXZfcHJpdi0+d20uY29uZmlnOwo+ICAJc3RydWN0IGlsa193bV92YWx1ZXMgcmVzdWx0cyA9IHt9 Owo+ICAJZW51bSBpbnRlbF9kZGJfcGFydGl0aW9uaW5nIHBhcnRpdGlvbmluZzsKPiAgCj4gKwl0 b19pbnRlbF9jcnRjKGNydGMpLT53bS5hY3RpdmUuaWxrID0gY3N0YXRlLT53bS5vcHRpbWFsLmls azsKPiArCj4gIAlpbGtfY29tcHV0ZV93bV9tYXhpbXVtcyhkZXYsIDEsIGNvbmZpZywgSU5URUxf RERCX1BBUlRfMV8yLCAmbWF4KTsKPiAgCWlsa193bV9tZXJnZShkZXYsIGNvbmZpZywgJm1heCwg JmxwX3dtXzFfMik7Cj4gIAo+IEBAIC0zNjQ0LDcgKzM2NDgsNiBAQCBzdGF0aWMgdm9pZCBpbGtf cHJvZ3JhbV93YXRlcm1hcmtzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAg Cj4gIHN0YXRpYyB2b2lkIGlsa191cGRhdGVfd20oc3RydWN0IGRybV9jcnRjICpjcnRjKQo+ICB7 Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNydGMtPmRl dik7Cj4gIAlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0 Yyk7Cj4gIAlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3N0YXRlID0gdG9faW50ZWxfY3J0Y19z dGF0ZShjcnRjLT5zdGF0ZSk7Cj4gIAo+IEBAIC0zNjYyLDkgKzM2NjUsNyBAQCBzdGF0aWMgdm9p ZCBpbGtfdXBkYXRlX3dtKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKPiAgCQlpbnRlbF93YWl0X2Zv cl92YmxhbmsoY3J0Yy0+ZGV2LCBpbnRlbF9jcnRjLT5waXBlKTsKPiAgCX0KPiAgCj4gLQlpbnRl bF9jcnRjLT53bS5hY3RpdmUuaWxrID0gY3N0YXRlLT53bS5vcHRpbWFsLmlsazsKPiAtCj4gLQlp bGtfcHJvZ3JhbV93YXRlcm1hcmtzKGRldl9wcml2KTsKPiArCWlsa19wcm9ncmFtX3dhdGVybWFy a3MoY3N0YXRlKTsKPiAgfQo+ICAKPiAgc3RhdGljIHZvaWQgc2tsX3BpcGVfd21fYWN0aXZlX3N0 YXRlKHVpbnQzMl90IHZhbCwKPiBAQCAtNjk3Miw2ICs2OTczLDcgQEAgdm9pZCBpbnRlbF9pbml0 X3BtKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gIAkJICAgICBkZXZfcHJpdi0+d20uc3ByX2xh dGVuY3lbMF0gJiYgZGV2X3ByaXYtPndtLmN1cl9sYXRlbmN5WzBdKSkgewo+ICAJCQlkZXZfcHJp di0+ZGlzcGxheS51cGRhdGVfd20gPSBpbGtfdXBkYXRlX3dtOwo+ICAJCQlkZXZfcHJpdi0+ZGlz cGxheS5jb21wdXRlX3BpcGVfd20gPSBpbGtfY29tcHV0ZV9waXBlX3dtOwo+ICsJCQlkZXZfcHJp di0+ZGlzcGxheS5wcm9ncmFtX3dhdGVybWFya3MgPSBpbGtfcHJvZ3JhbV93YXRlcm1hcmtzOwo+ ICAJCX0gZWxzZSB7Cj4gIAkJCURSTV9ERUJVR19LTVMoIkZhaWxlZCB0byByZWFkIGRpc3BsYXkg cGxhbmUgbGF0ZW5jeS4gIgo+ICAJCQkJICAgICAgIkRpc2FibGUgQ3hTUlxuIik7CgotLSAKSmFu aSBOaWt1bGEsIEludGVsIE9wZW4gU291cmNlIFRlY2hub2xvZ3kgQ2VudGVyCl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxp c3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0 b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==