From mboxrd@z Thu Jan 1 00:00:00 1970 From: Maarten Lankhorst Subject: [PATCH 10/12] drm/i915: Nuke fbc members from intel_crtc->atomic. Date: Thu, 19 Nov 2015 16:07:23 +0100 Message-ID: <1447945645-32005-11-git-send-email-maarten.lankhorst@linux.intel.com> References: <1447945645-32005-1-git-send-email-maarten.lankhorst@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mblankhorst.nl (mblankhorst.nl [141.105.120.124]) by gabe.freedesktop.org (Postfix) with ESMTPS id 5C2D16E98F for ; Thu, 19 Nov 2015 07:07:38 -0800 (PST) In-Reply-To: <1447945645-32005-1-git-send-email-maarten.lankhorst@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org VGhpcyBsZWF2ZXMgaW50ZWxfY3J0Yy0+YXRvbWljIGVtcHR5LCBzbyB6YXAgaXQgYXMgd2VsbC4K ClNpZ25lZC1vZmYtYnk6IE1hYXJ0ZW4gTGFua2hvcnN0IDxtYWFydGVuLmxhbmtob3JzdEBsaW51 eC5pbnRlbC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIHwg ODcgKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9kcnYuaCAgICAgfCAxNiAtLS0tLS0tCiAyIGZpbGVzIGNoYW5nZWQsIDMzIGlu c2VydGlvbnMoKyksIDcwIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2Rpc3BsYXkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3Bs YXkuYwppbmRleCA5NTUwMWFiYTdkMjMuLjdmNjlmOThkOGIyMyAxMDA2NDQKLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2Rpc3BsYXkuYwpAQCAtNDczNCw3ICs0NzM0LDYgQEAgc3RhdGljIHZvaWQgaW50ZWxf cG9zdF9wbGFuZV91cGRhdGUoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKm9sZF9jcnRjX3N0YXRl KQogewogCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0YyhvbGRfY3J0Y19z dGF0ZS0+YmFzZS5jcnRjKTsKIAlzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqb2xkX3N0YXRlID0g b2xkX2NydGNfc3RhdGUtPmJhc2Uuc3RhdGU7Ci0Jc3RydWN0IGludGVsX2NydGNfYXRvbWljX2Nv bW1pdCAqYXRvbWljID0gJmNydGMtPmF0b21pYzsKIAlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAq cGlwZV9jb25maWcgPQogCQl0b19pbnRlbF9jcnRjX3N0YXRlKGNydGMtPmJhc2Uuc3RhdGUpOwog CXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLT5iYXNlLmRldjsKQEAgLTQ3NTAsMTUgKzQ3 NDksMTUgQEAgc3RhdGljIHZvaWQgaW50ZWxfcG9zdF9wbGFuZV91cGRhdGUoc3RydWN0IGludGVs X2NydGNfc3RhdGUgKm9sZF9jcnRjX3N0YXRlKQogCWlmIChwaXBlX2NvbmZpZy0+d21fY2hhbmdl ZCAmJiBwaXBlX2NvbmZpZy0+YmFzZS5hY3RpdmUpCiAJCWludGVsX3VwZGF0ZV93YXRlcm1hcmtz KCZjcnRjLT5iYXNlKTsKIAotCWlmIChhdG9taWMtPnVwZGF0ZV9mYmMpCi0JCWludGVsX2ZiY191 cGRhdGUoZGV2X3ByaXYpOwotCiAJaWYgKG9sZF9wcmlfc3RhdGUpIHsKIAkJc3RydWN0IGludGVs X3BsYW5lX3N0YXRlICpwcmltYXJ5X3N0YXRlID0KIAkJCXRvX2ludGVsX3BsYW5lX3N0YXRlKHBy aW1hcnktPnN0YXRlKTsKIAkJc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpvbGRfcHJpbWFyeV9z dGF0ZSA9CiAJCQl0b19pbnRlbF9wbGFuZV9zdGF0ZShvbGRfcHJpX3N0YXRlKTsKIAorCQlpZiAo cHJpbWFyeV9zdGF0ZS0+dmlzaWJsZSkKKwkJCWludGVsX2ZiY191cGRhdGUoZGV2X3ByaXYpOwor CiAJCWlmIChwcmltYXJ5X3N0YXRlLT52aXNpYmxlICYmCiAJCSAgICAobmVlZHNfbW9kZXNldCgm cGlwZV9jb25maWctPmJhc2UpIHx8CiAJCSAgICAgIW9sZF9wcmltYXJ5X3N0YXRlLT52aXNpYmxl KSkKQEAgLTQ3NjcsOCArNDc2Niw2IEBAIHN0YXRpYyB2b2lkIGludGVsX3Bvc3RfcGxhbmVfdXBk YXRlKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpvbGRfY3J0Y19zdGF0ZSkKIAogCWlmIChuZWVk c19tb2Rlc2V0KCZwaXBlX2NvbmZpZy0+YmFzZSkpCiAJCWludGVsX2Rpc3BsYXlfcG93ZXJfcHV0 KGRldl9wcml2LCBQT1dFUl9ET01BSU5fTU9ERVNFVCk7Ci0KLQltZW1zZXQoYXRvbWljLCAwLCBz aXplb2YoKmF0b21pYykpOwogfQogCiBzdGF0aWMgdm9pZCBpbnRlbF9wcmVfcGxhbmVfdXBkYXRl KHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpvbGRfY3J0Y19zdGF0ZSkKQEAgLTQ3NzYsNyArNDc3 Myw2IEBAIHN0YXRpYyB2b2lkIGludGVsX3ByZV9wbGFuZV91cGRhdGUoc3RydWN0IGludGVsX2Ny dGNfc3RhdGUgKm9sZF9jcnRjX3N0YXRlKQogCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9f aW50ZWxfY3J0YyhvbGRfY3J0Y19zdGF0ZS0+YmFzZS5jcnRjKTsKIAlzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2ID0gY3J0Yy0+YmFzZS5kZXY7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKLQlzdHJ1Y3QgaW50ZWxfY3J0Y19hdG9taWNfY29tbWl0 ICphdG9taWMgPSAmY3J0Yy0+YXRvbWljOwogCXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpwaXBl X2NvbmZpZyA9CiAJCXRvX2ludGVsX2NydGNfc3RhdGUoY3J0Yy0+YmFzZS5zdGF0ZSk7CiAJc3Ry dWN0IGRybV9hdG9taWNfc3RhdGUgKm9sZF9zdGF0ZSA9IG9sZF9jcnRjX3N0YXRlLT5iYXNlLnN0 YXRlOwpAQCAtNDc4NSw5ICs0NzgxLDYgQEAgc3RhdGljIHZvaWQgaW50ZWxfcHJlX3BsYW5lX3Vw ZGF0ZShzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqb2xkX2NydGNfc3RhdGUpCiAJCWRybV9hdG9t aWNfZ2V0X2V4aXN0aW5nX3BsYW5lX3N0YXRlKG9sZF9zdGF0ZSwgcHJpbWFyeSk7CiAJYm9vbCBt b2Rlc2V0ID0gbmVlZHNfbW9kZXNldCgmcGlwZV9jb25maWctPmJhc2UpOwogCi0JaWYgKGF0b21p Yy0+ZGlzYWJsZV9mYmMpCi0JCWludGVsX2ZiY19kaXNhYmxlX2NydGMoY3J0Yyk7Ci0KIAlpZiAo b2xkX3ByaV9zdGF0ZSkgewogCQlzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnByaW1hcnlfc3Rh dGUgPQogCQkJdG9faW50ZWxfcGxhbmVfc3RhdGUocHJpbWFyeS0+c3RhdGUpOwpAQCAtNDc5NSw4 ICs0Nzg4LDI3IEBAIHN0YXRpYyB2b2lkIGludGVsX3ByZV9wbGFuZV91cGRhdGUoc3RydWN0IGlu dGVsX2NydGNfc3RhdGUgKm9sZF9jcnRjX3N0YXRlKQogCQkJdG9faW50ZWxfcGxhbmVfc3RhdGUo b2xkX3ByaV9zdGF0ZSk7CiAKIAkJaWYgKG9sZF9wcmltYXJ5X3N0YXRlLT52aXNpYmxlICYmCi0J CSAgICAobW9kZXNldCB8fCAhcHJpbWFyeV9zdGF0ZS0+dmlzaWJsZSkpCisJCSAgICAobW9kZXNl dCB8fCAhcHJpbWFyeV9zdGF0ZS0+dmlzaWJsZSkpIHsKKwkJCWludGVsX2ZiY19kaXNhYmxlX2Ny dGMoY3J0Yyk7CisKIAkJCWludGVsX3ByZV9kaXNhYmxlX3ByaW1hcnkoJmNydGMtPmJhc2UpOwor CQl9IGVsc2UgaWYgKHByaW1hcnlfc3RhdGUtPnZpc2libGUgJiYKKwkJCSBJTlRFTF9JTkZPKGRl dl9wcml2KS0+Z2VuIDw9IDQgJiYgIUlTX0c0WChkZXZfcHJpdikgJiYKKwkJCSBkZXZfcHJpdi0+ ZmJjLmNydGMgPT0gY3J0YyAmJgorCQkJIHByaW1hcnlfc3RhdGUtPmJhc2Uucm90YXRpb24gIT0g QklUKERSTV9ST1RBVEVfMCkpIHsKKwkJCS8qCisJCQkgKiBGQkMgZG9lcyBub3Qgd29yayBvbiBz b21lIHBsYXRmb3JtcyBmb3Igcm90YXRlZAorCQkJICogcGxhbmVzLCBzbyBkaXNhYmxlIGl0IHdo ZW4gcm90YXRpb24gaXMgbm90IDAgYW5kCisJCQkgKiB1cGRhdGUgaXQgd2hlbiByb3RhdGlvbiBp cyBzZXQgYmFjayB0byAwLgorCQkJICoKKwkJCSAqIEZJWE1FOiBUaGlzIGlzIHJlZHVuZGFudCB3 aXRoIHRoZSBmYmMgdXBkYXRlIGRvbmUgaW4KKwkJCSAqIHRoZSBwcmltYXJ5IHBsYW5lIGVuYWJs ZSBmdW5jdGlvbiBleGNlcHQgdGhhdCB0aGF0CisJCQkgKiBvbmUgaXMgZG9uZSB0b28gbGF0ZS4g V2UgZXZlbnR1YWxseSBuZWVkIHRvIHVuaWZ5CisJCQkgKiB0aGlzLgorCQkJICovCisKKwkJCWlu dGVsX2ZiY19kaXNhYmxlX2NydGMoY3J0Yyk7CisJCX0KIAl9CiAKIAlpZiAocGlwZV9jb25maWct PmRpc2FibGVfY3hzcikgewpAQCAtMTE2ODYsNyArMTE2OTgsNiBAQCBpbnQgaW50ZWxfcGxhbmVf YXRvbWljX2NhbGNfY2hhbmdlcyhzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCiAJ c3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMgPSB0b19pbnRlbF9jcnRjKGNydGMpOwogCXN0 cnVjdCBkcm1fcGxhbmUgKnBsYW5lID0gcGxhbmVfc3RhdGUtPnBsYW5lOwogCXN0cnVjdCBkcm1f ZGV2aWNlICpkZXYgPSBjcnRjLT5kZXY7Ci0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKIAlzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKm9sZF9w bGFuZV9zdGF0ZSA9CiAJCXRvX2ludGVsX3BsYW5lX3N0YXRlKHBsYW5lLT5zdGF0ZSk7CiAJaW50 IGlkeCA9IGludGVsX2NydGMtPmJhc2UuYmFzZS5pZCwgcmV0OwpAQCAtMTE3NDUsNDYgKzExNzU2 LDE3IEBAIGludCBpbnRlbF9wbGFuZV9hdG9taWNfY2FsY19jaGFuZ2VzKHN0cnVjdCBkcm1fY3J0 Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKIAlpZiAodmlzaWJsZSB8fCB3YXNfdmlzaWJsZSkKIAkJcGlw ZV9jb25maWctPmZiX2JpdHMgfD0gdG9faW50ZWxfcGxhbmUocGxhbmUpLT5mcm9udGJ1ZmZlcl9i aXQ7CiAKLQlzd2l0Y2ggKHBsYW5lLT50eXBlKSB7Ci0JY2FzZSBEUk1fUExBTkVfVFlQRV9QUklN QVJZOgotCQlpZiAodHVybl9vZmYpCi0JCQlpbnRlbF9jcnRjLT5hdG9taWMuZGlzYWJsZV9mYmMg PSB0cnVlOwotCi0JCS8qCi0JCSAqIEZCQyBkb2VzIG5vdCB3b3JrIG9uIHNvbWUgcGxhdGZvcm1z IGZvciByb3RhdGVkCi0JCSAqIHBsYW5lcywgc28gZGlzYWJsZSBpdCB3aGVuIHJvdGF0aW9uIGlz IG5vdCAwIGFuZAotCQkgKiB1cGRhdGUgaXQgd2hlbiByb3RhdGlvbiBpcyBzZXQgYmFjayB0byAw LgotCQkgKgotCQkgKiBGSVhNRTogVGhpcyBpcyByZWR1bmRhbnQgd2l0aCB0aGUgZmJjIHVwZGF0 ZSBkb25lIGluCi0JCSAqIHRoZSBwcmltYXJ5IHBsYW5lIGVuYWJsZSBmdW5jdGlvbiBleGNlcHQg dGhhdCB0aGF0Ci0JCSAqIG9uZSBpcyBkb25lIHRvbyBsYXRlLiBXZSBldmVudHVhbGx5IG5lZWQg dG8gdW5pZnkKLQkJICogdGhpcy4KLQkJICovCi0KLQkJaWYgKHZpc2libGUgJiYKLQkJICAgIElO VEVMX0lORk8oZGV2KS0+Z2VuIDw9IDQgJiYgIUlTX0c0WChkZXYpICYmCi0JCSAgICBkZXZfcHJp di0+ZmJjLmNydGMgPT0gaW50ZWxfY3J0YyAmJgotCQkgICAgcGxhbmVfc3RhdGUtPnJvdGF0aW9u ICE9IEJJVChEUk1fUk9UQVRFXzApKQotCQkJaW50ZWxfY3J0Yy0+YXRvbWljLmRpc2FibGVfZmJj ID0gdHJ1ZTsKLQotCQlpbnRlbF9jcnRjLT5hdG9taWMudXBkYXRlX2ZiYyB8PSB2aXNpYmxlIHx8 IG1vZGVfY2hhbmdlZDsKLQkJYnJlYWs7Ci0JY2FzZSBEUk1fUExBTkVfVFlQRV9DVVJTT1I6Ci0J CWJyZWFrOwotCWNhc2UgRFJNX1BMQU5FX1RZUEVfT1ZFUkxBWToKLQkJLyoKLQkJICogV2FDeFNS RGlzYWJsZWRGb3JTcHJpdGVTY2FsaW5nOml2YgotCQkgKgotCQkgKiBjc3RhdGUtPnVwZGF0ZV93 bSB3YXMgYWxyZWFkeSBzZXQgYWJvdmUsIHNvIHRoaXMgZmxhZyB3aWxsCi0JCSAqIHRha2UgZWZm ZWN0IHdoZW4gd2UgY29tbWl0IGFuZCBwcm9ncmFtIHdhdGVybWFya3MuCi0JCSAqLwotCQlpZiAo SVNfSVZZQlJJREdFKGRldikgJiYKLQkJICAgIG5lZWRzX3NjYWxpbmcodG9faW50ZWxfcGxhbmVf c3RhdGUocGxhbmVfc3RhdGUpKSAmJgotCQkgICAgIW5lZWRzX3NjYWxpbmcob2xkX3BsYW5lX3N0 YXRlKSkKLQkJCXBpcGVfY29uZmlnLT5kaXNhYmxlX2xwX3dtID0gdHJ1ZTsKKwkvKgorCSAqIFdh Q3hTUkRpc2FibGVkRm9yU3ByaXRlU2NhbGluZzppdmIKKwkgKgorCSAqIGNzdGF0ZS0+dXBkYXRl X3dtIHdhcyBhbHJlYWR5IHNldCBhYm92ZSwgc28gdGhpcyBmbGFnIHdpbGwKKwkgKiB0YWtlIGVm ZmVjdCB3aGVuIHdlIGNvbW1pdCBhbmQgcHJvZ3JhbSB3YXRlcm1hcmtzLgorCSAqLworCWlmIChw bGFuZS0+dHlwZSA9PSBEUk1fUExBTkVfVFlQRV9PVkVSTEFZICYmIElTX0lWWUJSSURHRShkZXYp ICYmCisJICAgIG5lZWRzX3NjYWxpbmcodG9faW50ZWxfcGxhbmVfc3RhdGUocGxhbmVfc3RhdGUp KSAmJgorCSAgICAhbmVlZHNfc2NhbGluZyhvbGRfcGxhbmVfc3RhdGUpKQorCQlwaXBlX2NvbmZp Zy0+ZGlzYWJsZV9scF93bSA9IHRydWU7CiAKLQkJYnJlYWs7Ci0JfQogCXJldHVybiAwOwogfQog CkBAIC0xMzE2Niw5ICsxMzE0OCw2IEBAIHN0YXRpYyBpbnQgaW50ZWxfYXRvbWljX2NoZWNrKHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJCXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpwaXBlX2Nv bmZpZyA9CiAJCQl0b19pbnRlbF9jcnRjX3N0YXRlKGNydGNfc3RhdGUpOwogCi0JCW1lbXNldCgm dG9faW50ZWxfY3J0YyhjcnRjKS0+YXRvbWljLCAwLAotCQkgICAgICAgc2l6ZW9mKHN0cnVjdCBp bnRlbF9jcnRjX2F0b21pY19jb21taXQpKTsKLQogCQkvKiBDYXRjaCBJOTE1X01PREVfRkxBR19J TkhFUklURUQgKi8KIAkJaWYgKGNydGNfc3RhdGUtPm1vZGUucHJpdmF0ZV9mbGFncyAhPSBjcnRj LT5zdGF0ZS0+bW9kZS5wcml2YXRlX2ZsYWdzKQogCQkJY3J0Y19zdGF0ZS0+bW9kZV9jaGFuZ2Vk ID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKaW5kZXggMzVhZTgyN2FiOTIzLi5kMmUx ZGM2OThmY2EgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCisr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCkBAIC01MjcsMjAgKzUyNyw2IEBA IHN0cnVjdCBpbnRlbF9tbWlvX2ZsaXAgewogCXVuc2lnbmVkIGludCByb3RhdGlvbjsKIH07CiAK LS8qCi0gKiBUcmFja2luZyBvZiBvcGVyYXRpb25zIHRoYXQgbmVlZCB0byBiZSBwZXJmb3JtZWQg YXQgdGhlIGJlZ2lubmluZy9lbmQgb2YgYW4KLSAqIGF0b21pYyBjb21taXQsIG91dHNpZGUgdGhl IGF0b21pYyBzZWN0aW9uIHdoZXJlIGludGVycnVwdHMgYXJlIGRpc2FibGVkLgotICogVGhlc2Ug YXJlIGdlbmVyYWxseSBvcGVyYXRpb25zIHRoYXQgZ3JhYiBtdXRleGVzIG9yIG1pZ2h0IG90aGVy d2lzZSBzbGVlcAotICogYW5kIHRodXMgY2FuJ3QgYmUgcnVuIHdpdGggaW50ZXJydXB0cyBkaXNh YmxlZC4KLSAqLwotc3RydWN0IGludGVsX2NydGNfYXRvbWljX2NvbW1pdCB7Ci0JLyogU2xlZXBh YmxlIG9wZXJhdGlvbnMgdG8gcGVyZm9ybSBiZWZvcmUgY29tbWl0ICovCi0JYm9vbCBkaXNhYmxl X2ZiYzsKLQotCS8qIFNsZWVwYWJsZSBvcGVyYXRpb25zIHRvIHBlcmZvcm0gYWZ0ZXIgY29tbWl0 ICovCi0JYm9vbCB1cGRhdGVfZmJjOwotfTsKLQogc3RydWN0IGludGVsX2NydGMgewogCXN0cnVj dCBkcm1fY3J0YyBiYXNlOwogCWVudW0gcGlwZSBwaXBlOwpAQCAtNjAxLDggKzU4Nyw2IEBAIHN0 cnVjdCBpbnRlbF9jcnRjIHsKIAkJaW50IHNjYW5saW5lX3N0YXJ0OwogCX0gZGVidWc7CiAKLQlz dHJ1Y3QgaW50ZWxfY3J0Y19hdG9taWNfY29tbWl0IGF0b21pYzsKLQogCS8qIHNjYWxlcnMgYXZh aWxhYmxlIG9uIHRoaXMgY3J0YyAqLwogCWludCBudW1fc2NhbGVyczsKIAotLSAKMi4xLjAKCl9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBt YWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMu ZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==