From mboxrd@z Thu Jan 1 00:00:00 1970 From: Lucas Stach Subject: [PATCH v2 1/2] drm/etnaviv: switch MMU page tables to writecombine memory Date: Tue, 8 May 2018 15:23:15 +0200 Message-ID: <20180508132316.22018-1-l.stach@pengutronix.de> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from metis.ext.pengutronix.de (metis.ext.pengutronix.de [IPv6:2001:67c:670:201:290:27ff:fe1d:cc33]) by gabe.freedesktop.org (Postfix) with ESMTPS id 20D566E173 for ; Tue, 8 May 2018 13:23:18 +0000 (UTC) List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: etnaviv@lists.freedesktop.org Cc: patchwork-lst@pengutronix.de, kernel@pengutronix.de, dri-devel@lists.freedesktop.org, Russell King List-Id: dri-devel@lists.freedesktop.org V2UgYXJlIGxpa2VseSB0byB3cml0ZSBtdWx0aXBsZSBwYWdlIGVudHJpZXMgYXQgb25jZSBhbmQg YWxyZWFkeSBlbnN1cmUKcHJvcGVyIHdyaXRlIGJ1ZmZlciBmbHVzaGluZyBiZWZvcmUgR1BVIHN1 Ym1pdCwgc28gdGhpcyBpbXByb3ZlcyBDUFUKdGltZSB1c2FnZSBpbiB0aGUgc3VibWl0IHBhdGgg d2l0aG91dCBhbnkgZG93bnNpZGVzLgoKU2lnbmVkLW9mZi1ieTogTHVjYXMgU3RhY2ggPGwuc3Rh Y2hAcGVuZ3V0cm9uaXguZGU+Ci0tLQp2MjogdXNlIHNob3J0ZXIgX3djIGZ1bmN0aW9uIG5hbWVz LgotLS0KIGRyaXZlcnMvZ3B1L2RybS9ldG5hdml2L2V0bmF2aXZfaW9tbXUuYyAgICB8IDM0ICsr KysrLS0tLS0KIGRyaXZlcnMvZ3B1L2RybS9ldG5hdml2L2V0bmF2aXZfaW9tbXVfdjIuYyB8IDc0 ICsrKysrKysrKystLS0tLS0tLS0tLS0KIDIgZmlsZXMgY2hhbmdlZCwgNDkgaW5zZXJ0aW9ucygr KSwgNTkgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2V0bmF2aXYv ZXRuYXZpdl9pb21tdS5jIGIvZHJpdmVycy9ncHUvZHJtL2V0bmF2aXYvZXRuYXZpdl9pb21tdS5j CmluZGV4IDRiOWIxMWNhNmYwMy4uNGFkYTE5MDU0NDQzIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dw dS9kcm0vZXRuYXZpdi9ldG5hdml2X2lvbW11LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2V0bmF2 aXYvZXRuYXZpdl9pb21tdS5jCkBAIC00NywxMSArNDcsMTAgQEAgc3RhdGljIGludCBfX2V0bmF2 aXZfaW9tbXVfaW5pdChzdHJ1Y3QgZXRuYXZpdl9pb21tdXYxX2RvbWFpbiAqZXRuYXZpdl9kb21h aW4pCiAJdTMyICpwOwogCWludCBpOwogCi0JZXRuYXZpdl9kb21haW4tPmJhc2UuYmFkX3BhZ2Vf Y3B1ID0gZG1hX2FsbG9jX2NvaGVyZW50KAotCQkJCQkJZXRuYXZpdl9kb21haW4tPmJhc2UuZGV2 LAotCQkJCQkJU1pfNEssCi0JCQkJCQkmZXRuYXZpdl9kb21haW4tPmJhc2UuYmFkX3BhZ2VfZG1h LAotCQkJCQkJR0ZQX0tFUk5FTCk7CisJZXRuYXZpdl9kb21haW4tPmJhc2UuYmFkX3BhZ2VfY3B1 ID0KKwkJCWRtYV9hbGxvY193YyhldG5hdml2X2RvbWFpbi0+YmFzZS5kZXYsIFNaXzRLLAorCQkJ CSAgICAgJmV0bmF2aXZfZG9tYWluLT5iYXNlLmJhZF9wYWdlX2RtYSwKKwkJCQkgICAgIEdGUF9L RVJORUwpOwogCWlmICghZXRuYXZpdl9kb21haW4tPmJhc2UuYmFkX3BhZ2VfY3B1KQogCQlyZXR1 cm4gLUVOT01FTTsKIApAQCAtNTksMTQgKzU4LDE0IEBAIHN0YXRpYyBpbnQgX19ldG5hdml2X2lv bW11X2luaXQoc3RydWN0IGV0bmF2aXZfaW9tbXV2MV9kb21haW4gKmV0bmF2aXZfZG9tYWluKQog CWZvciAoaSA9IDA7IGkgPCBTWl80SyAvIDQ7IGkrKykKIAkJKnArKyA9IDB4ZGVhZDU1YWE7CiAK LQlldG5hdml2X2RvbWFpbi0+cGd0YWJsZV9jcHUgPQotCQkJZG1hX2FsbG9jX2NvaGVyZW50KGV0 bmF2aXZfZG9tYWluLT5iYXNlLmRldiwgUFRfU0laRSwKLQkJCQkJICAgJmV0bmF2aXZfZG9tYWlu LT5wZ3RhYmxlX2RtYSwKLQkJCQkJICAgR0ZQX0tFUk5FTCk7CisJZXRuYXZpdl9kb21haW4tPnBn dGFibGVfY3B1ID0gZG1hX2FsbG9jX3djKGV0bmF2aXZfZG9tYWluLT5iYXNlLmRldiwKKwkJCQkJ CSAgIFBUX1NJWkUsCisJCQkJCQkgICAmZXRuYXZpdl9kb21haW4tPnBndGFibGVfZG1hLAorCQkJ CQkJICAgR0ZQX0tFUk5FTCk7CiAJaWYgKCFldG5hdml2X2RvbWFpbi0+cGd0YWJsZV9jcHUpIHsK LQkJZG1hX2ZyZWVfY29oZXJlbnQoZXRuYXZpdl9kb21haW4tPmJhc2UuZGV2LCBTWl80SywKLQkJ CQkgIGV0bmF2aXZfZG9tYWluLT5iYXNlLmJhZF9wYWdlX2NwdSwKLQkJCQkgIGV0bmF2aXZfZG9t YWluLT5iYXNlLmJhZF9wYWdlX2RtYSk7CisJCWRtYV9mcmVlX3djKGV0bmF2aXZfZG9tYWluLT5i YXNlLmRldiwgU1pfNEssCisJCQkgICAgZXRuYXZpdl9kb21haW4tPmJhc2UuYmFkX3BhZ2VfY3B1 LAorCQkJICAgIGV0bmF2aXZfZG9tYWluLT5iYXNlLmJhZF9wYWdlX2RtYSk7CiAJCXJldHVybiAt RU5PTUVNOwogCX0KIApAQCAtODEsMTMgKzgwLDEyIEBAIHN0YXRpYyB2b2lkIGV0bmF2aXZfaW9t bXV2MV9kb21haW5fZnJlZShzdHJ1Y3QgZXRuYXZpdl9pb21tdV9kb21haW4gKmRvbWFpbikKIAlz dHJ1Y3QgZXRuYXZpdl9pb21tdXYxX2RvbWFpbiAqZXRuYXZpdl9kb21haW4gPQogCQkJdG9fZXRu YXZpdl9kb21haW4oZG9tYWluKTsKIAotCWRtYV9mcmVlX2NvaGVyZW50KGV0bmF2aXZfZG9tYWlu LT5iYXNlLmRldiwgUFRfU0laRSwKLQkJCSAgZXRuYXZpdl9kb21haW4tPnBndGFibGVfY3B1LAot CQkJICBldG5hdml2X2RvbWFpbi0+cGd0YWJsZV9kbWEpOworCWRtYV9mcmVlX3djKGV0bmF2aXZf ZG9tYWluLT5iYXNlLmRldiwgUFRfU0laRSwKKwkJICAgIGV0bmF2aXZfZG9tYWluLT5wZ3RhYmxl X2NwdSwgZXRuYXZpdl9kb21haW4tPnBndGFibGVfZG1hKTsKIAotCWRtYV9mcmVlX2NvaGVyZW50 KGV0bmF2aXZfZG9tYWluLT5iYXNlLmRldiwgU1pfNEssCi0JCQkgIGV0bmF2aXZfZG9tYWluLT5i YXNlLmJhZF9wYWdlX2NwdSwKLQkJCSAgZXRuYXZpdl9kb21haW4tPmJhc2UuYmFkX3BhZ2VfZG1h KTsKKwlkbWFfZnJlZV93YyhldG5hdml2X2RvbWFpbi0+YmFzZS5kZXYsIFNaXzRLLAorCQkgICAg ZXRuYXZpdl9kb21haW4tPmJhc2UuYmFkX3BhZ2VfY3B1LAorCQkgICAgZXRuYXZpdl9kb21haW4t PmJhc2UuYmFkX3BhZ2VfZG1hKTsKIAogCWtmcmVlKGV0bmF2aXZfZG9tYWluKTsKIH0KZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9ldG5hdml2L2V0bmF2aXZfaW9tbXVfdjIuYyBiL2RyaXZl cnMvZ3B1L2RybS9ldG5hdml2L2V0bmF2aXZfaW9tbXVfdjIuYwppbmRleCA5NzUyZGJkNWQyOGIu LjQ3Nzg1ZDYxY2Q5NSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2V0bmF2aXYvZXRuYXZp dl9pb21tdV92Mi5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9ldG5hdml2L2V0bmF2aXZfaW9tbXVf djIuYwpAQCAtMTA0LDExICsxMDQsMTAgQEAgc3RhdGljIGludCBldG5hdml2X2lvbW11djJfaW5p dChzdHJ1Y3QgZXRuYXZpdl9pb21tdXYyX2RvbWFpbiAqZXRuYXZpdl9kb21haW4pCiAJaW50IHJl dCwgaSwgajsKIAogCS8qIGFsbG9jYXRlIHNjcmF0Y2ggcGFnZSAqLwotCWV0bmF2aXZfZG9tYWlu LT5iYXNlLmJhZF9wYWdlX2NwdSA9IGRtYV9hbGxvY19jb2hlcmVudCgKLQkJCQkJCWV0bmF2aXZf ZG9tYWluLT5iYXNlLmRldiwKLQkJCQkJCVNaXzRLLAotCQkJCQkJJmV0bmF2aXZfZG9tYWluLT5i YXNlLmJhZF9wYWdlX2RtYSwKLQkJCQkJCUdGUF9LRVJORUwpOworCWV0bmF2aXZfZG9tYWluLT5i YXNlLmJhZF9wYWdlX2NwdSA9CisJCQlkbWFfYWxsb2Nfd2MoZXRuYXZpdl9kb21haW4tPmJhc2Uu ZGV2LCBTWl80SywKKwkJCQkgICAgICZldG5hdml2X2RvbWFpbi0+YmFzZS5iYWRfcGFnZV9kbWEs CisJCQkJICAgICBHRlBfS0VSTkVMKTsKIAlpZiAoIWV0bmF2aXZfZG9tYWluLT5iYXNlLmJhZF9w YWdlX2NwdSkgewogCQlyZXQgPSAtRU5PTUVNOwogCQlnb3RvIGZhaWxfbWVtOwpAQCAtMTE3LDE5 ICsxMTYsMTcgQEAgc3RhdGljIGludCBldG5hdml2X2lvbW11djJfaW5pdChzdHJ1Y3QgZXRuYXZp dl9pb21tdXYyX2RvbWFpbiAqZXRuYXZpdl9kb21haW4pCiAJZm9yIChpID0gMDsgaSA8IFNaXzRL IC8gNDsgaSsrKQogCQkqcCsrID0gMHhkZWFkNTVhYTsKIAotCWV0bmF2aXZfZG9tYWluLT5wdGFf Y3B1ID0gZG1hX2FsbG9jX2NvaGVyZW50KGV0bmF2aXZfZG9tYWluLT5iYXNlLmRldiwKLQkJCQkJ CSAgICAgU1pfNEssCi0JCQkJCQkgICAgICZldG5hdml2X2RvbWFpbi0+cHRhX2RtYSwKLQkJCQkJ CSAgICAgR0ZQX0tFUk5FTCk7CisJZXRuYXZpdl9kb21haW4tPnB0YV9jcHUgPSBkbWFfYWxsb2Nf d2MoZXRuYXZpdl9kb21haW4tPmJhc2UuZGV2LAorCQkJCQkgICAgICAgU1pfNEssICZldG5hdml2 X2RvbWFpbi0+cHRhX2RtYSwKKwkJCQkJICAgICAgIEdGUF9LRVJORUwpOwogCWlmICghZXRuYXZp dl9kb21haW4tPnB0YV9jcHUpIHsKIAkJcmV0ID0gLUVOT01FTTsKIAkJZ290byBmYWlsX21lbTsK IAl9CiAKLQlldG5hdml2X2RvbWFpbi0+bXRsYl9jcHUgPSBkbWFfYWxsb2NfY29oZXJlbnQoZXRu YXZpdl9kb21haW4tPmJhc2UuZGV2LAotCQkJCQkJICBTWl80SywKLQkJCQkJCSAgJmV0bmF2aXZf ZG9tYWluLT5tdGxiX2RtYSwKLQkJCQkJCSAgR0ZQX0tFUk5FTCk7CisJZXRuYXZpdl9kb21haW4t Pm10bGJfY3B1ID0gZG1hX2FsbG9jX3djKGV0bmF2aXZfZG9tYWluLT5iYXNlLmRldiwKKwkJCQkJ CVNaXzRLLCAmZXRuYXZpdl9kb21haW4tPm10bGJfZG1hLAorCQkJCQkJR0ZQX0tFUk5FTCk7CiAJ aWYgKCFldG5hdml2X2RvbWFpbi0+bXRsYl9jcHUpIHsKIAkJcmV0ID0gLUVOT01FTTsKIAkJZ290 byBmYWlsX21lbTsKQEAgLTEzOCwxMCArMTM1LDkgQEAgc3RhdGljIGludCBldG5hdml2X2lvbW11 djJfaW5pdChzdHJ1Y3QgZXRuYXZpdl9pb21tdXYyX2RvbWFpbiAqZXRuYXZpdl9kb21haW4pCiAJ LyogcHJlLXBvcHVsYXRlIFNUTEIgcGFnZXMgKG1heSB3YW50IHRvIHN3aXRjaCB0byBvbi1kZW1h bmQgbGF0ZXIpICovCiAJZm9yIChpID0gMDsgaSA8IE1NVXYyX01BWF9TVExCX0VOVFJJRVM7IGkr KykgewogCQlldG5hdml2X2RvbWFpbi0+c3RsYl9jcHVbaV0gPQotCQkJCWRtYV9hbGxvY19jb2hl cmVudChldG5hdml2X2RvbWFpbi0+YmFzZS5kZXYsCi0JCQkJCQkgICBTWl80SywKLQkJCQkJCSAg ICZldG5hdml2X2RvbWFpbi0+c3RsYl9kbWFbaV0sCi0JCQkJCQkgICBHRlBfS0VSTkVMKTsKKwkJ CQlkbWFfYWxsb2Nfd2MoZXRuYXZpdl9kb21haW4tPmJhc2UuZGV2LCBTWl80SywKKwkJCQkJICAg ICAmZXRuYXZpdl9kb21haW4tPnN0bGJfZG1hW2ldLAorCQkJCQkgICAgIEdGUF9LRVJORUwpOwog CQlpZiAoIWV0bmF2aXZfZG9tYWluLT5zdGxiX2NwdVtpXSkgewogCQkJcmV0ID0gLUVOT01FTTsK IAkJCWdvdG8gZmFpbF9tZW07CkBAIC0xNTgsMjUgKzE1NCwyMyBAQCBzdGF0aWMgaW50IGV0bmF2 aXZfaW9tbXV2Ml9pbml0KHN0cnVjdCBldG5hdml2X2lvbW11djJfZG9tYWluICpldG5hdml2X2Rv bWFpbikKIAogZmFpbF9tZW06CiAJaWYgKGV0bmF2aXZfZG9tYWluLT5iYXNlLmJhZF9wYWdlX2Nw dSkKLQkJZG1hX2ZyZWVfY29oZXJlbnQoZXRuYXZpdl9kb21haW4tPmJhc2UuZGV2LCBTWl80SywK LQkJCQkgIGV0bmF2aXZfZG9tYWluLT5iYXNlLmJhZF9wYWdlX2NwdSwKLQkJCQkgIGV0bmF2aXZf ZG9tYWluLT5iYXNlLmJhZF9wYWdlX2RtYSk7CisJCWRtYV9mcmVlX3djKGV0bmF2aXZfZG9tYWlu LT5iYXNlLmRldiwgU1pfNEssCisJCQkgICAgZXRuYXZpdl9kb21haW4tPmJhc2UuYmFkX3BhZ2Vf Y3B1LAorCQkJICAgIGV0bmF2aXZfZG9tYWluLT5iYXNlLmJhZF9wYWdlX2RtYSk7CiAKIAlpZiAo ZXRuYXZpdl9kb21haW4tPnB0YV9jcHUpCi0JCWRtYV9mcmVlX2NvaGVyZW50KGV0bmF2aXZfZG9t YWluLT5iYXNlLmRldiwgU1pfNEssCi0JCQkJICBldG5hdml2X2RvbWFpbi0+cHRhX2NwdSwKLQkJ CQkgIGV0bmF2aXZfZG9tYWluLT5wdGFfZG1hKTsKKwkJZG1hX2ZyZWVfd2MoZXRuYXZpdl9kb21h aW4tPmJhc2UuZGV2LCBTWl80SywKKwkJCSAgICBldG5hdml2X2RvbWFpbi0+cHRhX2NwdSwgZXRu YXZpdl9kb21haW4tPnB0YV9kbWEpOwogCiAJaWYgKGV0bmF2aXZfZG9tYWluLT5tdGxiX2NwdSkK LQkJZG1hX2ZyZWVfY29oZXJlbnQoZXRuYXZpdl9kb21haW4tPmJhc2UuZGV2LCBTWl80SywKLQkJ CQkgIGV0bmF2aXZfZG9tYWluLT5tdGxiX2NwdSwKLQkJCQkgIGV0bmF2aXZfZG9tYWluLT5tdGxi X2RtYSk7CisJCWRtYV9mcmVlX3djKGV0bmF2aXZfZG9tYWluLT5iYXNlLmRldiwgU1pfNEssCisJ CQkgICAgZXRuYXZpdl9kb21haW4tPm10bGJfY3B1LCBldG5hdml2X2RvbWFpbi0+bXRsYl9kbWEp OwogCiAJZm9yIChpID0gMDsgaSA8IE1NVXYyX01BWF9TVExCX0VOVFJJRVM7IGkrKykgewogCQlp ZiAoZXRuYXZpdl9kb21haW4tPnN0bGJfY3B1W2ldKQotCQkJZG1hX2ZyZWVfY29oZXJlbnQoZXRu YXZpdl9kb21haW4tPmJhc2UuZGV2LCBTWl80SywKLQkJCQkJICBldG5hdml2X2RvbWFpbi0+c3Rs Yl9jcHVbaV0sCi0JCQkJCSAgZXRuYXZpdl9kb21haW4tPnN0bGJfZG1hW2ldKTsKKwkJCWRtYV9m cmVlX3djKGV0bmF2aXZfZG9tYWluLT5iYXNlLmRldiwgU1pfNEssCisJCQkJICAgIGV0bmF2aXZf ZG9tYWluLT5zdGxiX2NwdVtpXSwKKwkJCQkgICAgZXRuYXZpdl9kb21haW4tPnN0bGJfZG1hW2ld KTsKIAl9CiAKIAlyZXR1cm4gcmV0OwpAQCAtMTg4LDIzICsxODIsMjEgQEAgc3RhdGljIHZvaWQg ZXRuYXZpdl9pb21tdXYyX2RvbWFpbl9mcmVlKHN0cnVjdCBldG5hdml2X2lvbW11X2RvbWFpbiAq ZG9tYWluKQogCQkJdG9fZXRuYXZpdl9kb21haW4oZG9tYWluKTsKIAlpbnQgaTsKIAotCWRtYV9m cmVlX2NvaGVyZW50KGV0bmF2aXZfZG9tYWluLT5iYXNlLmRldiwgU1pfNEssCi0JCQkgIGV0bmF2 aXZfZG9tYWluLT5iYXNlLmJhZF9wYWdlX2NwdSwKLQkJCSAgZXRuYXZpdl9kb21haW4tPmJhc2Uu YmFkX3BhZ2VfZG1hKTsKKwlkbWFfZnJlZV93YyhldG5hdml2X2RvbWFpbi0+YmFzZS5kZXYsIFNa XzRLLAorCQkgICAgZXRuYXZpdl9kb21haW4tPmJhc2UuYmFkX3BhZ2VfY3B1LAorCQkgICAgZXRu YXZpdl9kb21haW4tPmJhc2UuYmFkX3BhZ2VfZG1hKTsKIAotCWRtYV9mcmVlX2NvaGVyZW50KGV0 bmF2aXZfZG9tYWluLT5iYXNlLmRldiwgU1pfNEssCi0JCQkgIGV0bmF2aXZfZG9tYWluLT5wdGFf Y3B1LAotCQkJICBldG5hdml2X2RvbWFpbi0+cHRhX2RtYSk7CisJZG1hX2ZyZWVfd2MoZXRuYXZp dl9kb21haW4tPmJhc2UuZGV2LCBTWl80SywKKwkJICAgIGV0bmF2aXZfZG9tYWluLT5wdGFfY3B1 LCBldG5hdml2X2RvbWFpbi0+cHRhX2RtYSk7CiAKLQlkbWFfZnJlZV9jb2hlcmVudChldG5hdml2 X2RvbWFpbi0+YmFzZS5kZXYsIFNaXzRLLAotCQkJICBldG5hdml2X2RvbWFpbi0+bXRsYl9jcHUs Ci0JCQkgIGV0bmF2aXZfZG9tYWluLT5tdGxiX2RtYSk7CisJZG1hX2ZyZWVfd2MoZXRuYXZpdl9k b21haW4tPmJhc2UuZGV2LCBTWl80SywKKwkJICAgIGV0bmF2aXZfZG9tYWluLT5tdGxiX2NwdSwg ZXRuYXZpdl9kb21haW4tPm10bGJfZG1hKTsKIAogCWZvciAoaSA9IDA7IGkgPCBNTVV2Ml9NQVhf U1RMQl9FTlRSSUVTOyBpKyspIHsKIAkJaWYgKGV0bmF2aXZfZG9tYWluLT5zdGxiX2NwdVtpXSkK LQkJCWRtYV9mcmVlX2NvaGVyZW50KGV0bmF2aXZfZG9tYWluLT5iYXNlLmRldiwgU1pfNEssCi0J CQkJCSAgZXRuYXZpdl9kb21haW4tPnN0bGJfY3B1W2ldLAotCQkJCQkgIGV0bmF2aXZfZG9tYWlu LT5zdGxiX2RtYVtpXSk7CisJCQlkbWFfZnJlZV93YyhldG5hdml2X2RvbWFpbi0+YmFzZS5kZXYs IFNaXzRLLAorCQkJCSAgICBldG5hdml2X2RvbWFpbi0+c3RsYl9jcHVbaV0sCisJCQkJICAgIGV0 bmF2aXZfZG9tYWluLT5zdGxiX2RtYVtpXSk7CiAJfQogCiAJdmZyZWUoZXRuYXZpdl9kb21haW4p OwotLSAKMi4xNy4wCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5v cmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2 ZWwK