From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?q?Noralf=20Tr=C3=B8nnes?= Subject: [PATCH v5 03/11] drm/fb-helper: No need to cache rotation and sw_rotations Date: Mon, 6 May 2019 20:01:31 +0200 Message-ID: <20190506180139.6913-4-noralf@tronnes.org> References: <20190506180139.6913-1-noralf@tronnes.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20190506180139.6913-1-noralf@tronnes.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: dri-devel@lists.freedesktop.org Cc: Maxime Ripard , Hans de Goede , intel-gfx@lists.freedesktop.org, Daniel Vetter List-Id: dri-devel@lists.freedesktop.org R2V0dGluZyByb3RhdGlvbiBpbmZvIGlzIGNoZWFwIHNvIHdlIGNhbiBkbyBpdCBvbiBkZW1hbmQu CgpUaGlzIGlzIGRvbmUgaW4gcHJlcGFyYXRpb24gZm9yIHRoZSByZW1vdmFsIG9mIHN0cnVjdCBk cm1fZmJfaGVscGVyX2NydGMuCgpDYzogSGFucyBkZSBHb2VkZSA8aGRlZ29lZGVAcmVkaGF0LmNv bT4KU2lnbmVkLW9mZi1ieTogTm9yYWxmIFRyw7hubmVzIDxub3JhbGZAdHJvbm5lcy5vcmc+CkFj a2VkLWJ5OiBEYW5pZWwgVmV0dGVyIDxkYW5pZWwudmV0dGVyQGZmd2xsLmNoPgpSZXZpZXdlZC1i eTogTWF4aW1lIFJpcGFyZCA8bWF4aW1lLnJpcGFyZEBib290bGluLmNvbT4KLS0tCiBkcml2ZXJz L2dwdS9kcm0vZHJtX2ZiX2hlbHBlci5jIHwgMTMxICsrKysrKysrKysrKysrKystLS0tLS0tLS0t LS0tLS0tCiBpbmNsdWRlL2RybS9kcm1fZmJfaGVscGVyLmggICAgIHwgICA4IC0tCiAyIGZpbGVz IGNoYW5nZWQsIDY1IGluc2VydGlvbnMoKyksIDc0IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9kcm1fZmJfaGVscGVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2Zi X2hlbHBlci5jCmluZGV4IDZiNGNlNjA2MDk4NC4uNjQ2NTBiYjJhNDZiIDEwMDY0NAotLS0gYS9k cml2ZXJzL2dwdS9kcm0vZHJtX2ZiX2hlbHBlci5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1f ZmJfaGVscGVyLmMKQEAgLTM4OCw2ICszODgsNDkgQEAgaW50IGRybV9mYl9oZWxwZXJfZGVidWdf bGVhdmUoc3RydWN0IGZiX2luZm8gKmluZm8pCiB9CiBFWFBPUlRfU1lNQk9MKGRybV9mYl9oZWxw ZXJfZGVidWdfbGVhdmUpOwogCisvKiBDaGVjayBpZiB0aGUgcGxhbmUgY2FuIGh3IHJvdGF0ZSB0 byBtYXRjaCBwYW5lbCBvcmllbnRhdGlvbiAqLworc3RhdGljIGJvb2wgZHJtX2ZiX2hlbHBlcl9w YW5lbF9yb3RhdGlvbihzdHJ1Y3QgZHJtX21vZGVfc2V0ICptb2Rlc2V0LAorCQkJCQkgdW5zaWdu ZWQgaW50ICpyb3RhdGlvbikKK3sKKwlzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yID0g bW9kZXNldC0+Y29ubmVjdG9yc1swXTsKKwlzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSA9IG1vZGVz ZXQtPmNydGMtPnByaW1hcnk7CisJdTY0IHZhbGlkX21hc2sgPSAwOworCXVuc2lnbmVkIGludCBp OworCisJaWYgKCFtb2Rlc2V0LT5udW1fY29ubmVjdG9ycykKKwkJcmV0dXJuIGZhbHNlOworCisJ c3dpdGNoIChjb25uZWN0b3ItPmRpc3BsYXlfaW5mby5wYW5lbF9vcmllbnRhdGlvbikgeworCWNh c2UgRFJNX01PREVfUEFORUxfT1JJRU5UQVRJT05fQk9UVE9NX1VQOgorCQkqcm90YXRpb24gPSBE Uk1fTU9ERV9ST1RBVEVfMTgwOworCQlicmVhazsKKwljYXNlIERSTV9NT0RFX1BBTkVMX09SSUVO VEFUSU9OX0xFRlRfVVA6CisJCSpyb3RhdGlvbiA9IERSTV9NT0RFX1JPVEFURV85MDsKKwkJYnJl YWs7CisJY2FzZSBEUk1fTU9ERV9QQU5FTF9PUklFTlRBVElPTl9SSUdIVF9VUDoKKwkJKnJvdGF0 aW9uID0gRFJNX01PREVfUk9UQVRFXzI3MDsKKwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJKnJvdGF0 aW9uID0gRFJNX01PREVfUk9UQVRFXzA7CisJfQorCisJLyoKKwkgKiBUT0RPOiBzdXBwb3J0IDkw IC8gMjcwIGRlZ3JlZSBoYXJkd2FyZSByb3RhdGlvbiwKKwkgKiBkZXBlbmRpbmcgb24gdGhlIGhh cmR3YXJlIHRoaXMgbWF5IHJlcXVpcmUgdGhlIGZyYW1lYnVmZmVyCisJICogdG8gYmUgaW4gYSBz cGVjaWZpYyB0aWxpbmcgZm9ybWF0LgorCSAqLworCWlmICgqcm90YXRpb24gIT0gRFJNX01PREVf Uk9UQVRFXzE4MCB8fCAhcGxhbmUtPnJvdGF0aW9uX3Byb3BlcnR5KQorCQlyZXR1cm4gZmFsc2U7 CisKKwlmb3IgKGkgPSAwOyBpIDwgcGxhbmUtPnJvdGF0aW9uX3Byb3BlcnR5LT5udW1fdmFsdWVz OyBpKyspCisJCXZhbGlkX21hc2sgfD0gKDFVTEwgPDwgcGxhbmUtPnJvdGF0aW9uX3Byb3BlcnR5 LT52YWx1ZXNbaV0pOworCisJaWYgKCEoKnJvdGF0aW9uICYgdmFsaWRfbWFzaykpCisJCXJldHVy biBmYWxzZTsKKworCXJldHVybiB0cnVlOworfQorCiBzdGF0aWMgaW50IHJlc3RvcmVfZmJkZXZf bW9kZV9hdG9taWMoc3RydWN0IGRybV9mYl9oZWxwZXIgKmZiX2hlbHBlciwgYm9vbCBhY3RpdmUp CiB7CiAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGZiX2hlbHBlci0+ZGV2OwpAQCAtNDI4LDEw ICs0NzEsMTMgQEAgc3RhdGljIGludCByZXN0b3JlX2ZiZGV2X21vZGVfYXRvbWljKHN0cnVjdCBk cm1fZmJfaGVscGVyICpmYl9oZWxwZXIsIGJvb2wgYWN0aXYKIAlmb3IgKGkgPSAwOyBpIDwgZmJf aGVscGVyLT5jcnRjX2NvdW50OyBpKyspIHsKIAkJc3RydWN0IGRybV9tb2RlX3NldCAqbW9kZV9z ZXQgPSAmZmJfaGVscGVyLT5jcnRjX2luZm9baV0ubW9kZV9zZXQ7CiAJCXN0cnVjdCBkcm1fcGxh bmUgKnByaW1hcnkgPSBtb2RlX3NldC0+Y3J0Yy0+cHJpbWFyeTsKKwkJdW5zaWduZWQgaW50IHJv dGF0aW9uOwogCi0JCS8qIENhbm5vdCBmYWlsIGFzIHdlJ3ZlIGFscmVhZHkgZ290dGVuIHRoZSBw bGFuZSBzdGF0ZSBhYm92ZSAqLwotCQlwbGFuZV9zdGF0ZSA9IGRybV9hdG9taWNfZ2V0X25ld19w bGFuZV9zdGF0ZShzdGF0ZSwgcHJpbWFyeSk7Ci0JCXBsYW5lX3N0YXRlLT5yb3RhdGlvbiA9IGZi X2hlbHBlci0+Y3J0Y19pbmZvW2ldLnJvdGF0aW9uOworCQlpZiAoZHJtX2ZiX2hlbHBlcl9wYW5l bF9yb3RhdGlvbihtb2RlX3NldCwgJnJvdGF0aW9uKSkgeworCQkJLyogQ2Fubm90IGZhaWwgYXMg d2UndmUgYWxyZWFkeSBnb3R0ZW4gdGhlIHBsYW5lIHN0YXRlIGFib3ZlICovCisJCQlwbGFuZV9z dGF0ZSA9IGRybV9hdG9taWNfZ2V0X25ld19wbGFuZV9zdGF0ZShzdGF0ZSwgcHJpbWFyeSk7CisJ CQlwbGFuZV9zdGF0ZS0+cm90YXRpb24gPSByb3RhdGlvbjsKKwkJfQogCiAJCXJldCA9IF9fZHJt X2F0b21pY19oZWxwZXJfc2V0X2NvbmZpZyhtb2RlX3NldCwgc3RhdGUpOwogCQlpZiAocmV0ICE9 IDApCkBAIC04ODEsNyArOTI3LDYgQEAgaW50IGRybV9mYl9oZWxwZXJfaW5pdChzdHJ1Y3QgZHJt X2RldmljZSAqZGV2LAogCQlpZiAoIWZiX2hlbHBlci0+Y3J0Y19pbmZvW2ldLm1vZGVfc2V0LmNv bm5lY3RvcnMpCiAJCQlnb3RvIG91dF9mcmVlOwogCQlmYl9oZWxwZXItPmNydGNfaW5mb1tpXS5t b2RlX3NldC5udW1fY29ubmVjdG9ycyA9IDA7Ci0JCWZiX2hlbHBlci0+Y3J0Y19pbmZvW2ldLnJv dGF0aW9uID0gRFJNX01PREVfUk9UQVRFXzA7CiAJfQogCiAJaSA9IDA7CkBAIC0yNTEwLDYyICsy NTU1LDYgQEAgc3RhdGljIGludCBkcm1fcGlja19jcnRjcyhzdHJ1Y3QgZHJtX2ZiX2hlbHBlciAq ZmJfaGVscGVyLAogCXJldHVybiBiZXN0X3Njb3JlOwogfQogCi0vKgotICogVGhpcyBmdW5jdGlv biBjaGVja3MgaWYgcm90YXRpb24gaXMgbmVjZXNzYXJ5IGJlY2F1c2Ugb2YgcGFuZWwgb3JpZW50 YXRpb24KLSAqIGFuZCBpZiBpdCBpcywgaWYgaXQgaXMgc3VwcG9ydGVkLgotICogSWYgcm90YXRp b24gaXMgbmVjZXNzYXJ5IGFuZCBzdXBwb3J0ZWQsIGl0IGdldHMgc2V0IGluIGZiX2NydGMucm90 YXRpb24uCi0gKiBJZiByb3RhdGlvbiBpcyBuZWNlc3NhcnkgYnV0IG5vdCBzdXBwb3J0ZWQsIGEg RFJNX01PREVfUk9UQVRFXyogZmxhZyBnZXRzCi0gKiBvci1lZCBpbnRvIGZiX2hlbHBlci0+c3df cm90YXRpb25zLiBJbiBkcm1fc2V0dXBfY3J0Y3NfZmIoKSB3ZSBjaGVjayBpZiBvbmx5Ci0gKiBv bmUgYml0IGlzIHNldCBhbmQgdGhlbiB3ZSBzZXQgZmJfaW5mby5mYmNvbl9yb3RhdGVfaGludCB0 byBtYWtlIGZiY29uIGRvCi0gKiB0aGUgdW5zdXBwb3J0ZWQgcm90YXRpb24uCi0gKi8KLXN0YXRp YyB2b2lkIGRybV9zZXR1cF9jcnRjX3JvdGF0aW9uKHN0cnVjdCBkcm1fZmJfaGVscGVyICpmYl9o ZWxwZXIsCi0JCQkJICAgIHN0cnVjdCBkcm1fZmJfaGVscGVyX2NydGMgKmZiX2NydGMsCi0JCQkJ ICAgIHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IpCi17Ci0Jc3RydWN0IGRybV9wbGFu ZSAqcGxhbmUgPSBmYl9jcnRjLT5tb2RlX3NldC5jcnRjLT5wcmltYXJ5OwotCXVpbnQ2NF90IHZh bGlkX21hc2sgPSAwOwotCWludCBpLCByb3RhdGlvbjsKLQotCWZiX2NydGMtPnJvdGF0aW9uID0g RFJNX01PREVfUk9UQVRFXzA7Ci0KLQlzd2l0Y2ggKGNvbm5lY3Rvci0+ZGlzcGxheV9pbmZvLnBh bmVsX29yaWVudGF0aW9uKSB7Ci0JY2FzZSBEUk1fTU9ERV9QQU5FTF9PUklFTlRBVElPTl9CT1RU T01fVVA6Ci0JCXJvdGF0aW9uID0gRFJNX01PREVfUk9UQVRFXzE4MDsKLQkJYnJlYWs7Ci0JY2Fz ZSBEUk1fTU9ERV9QQU5FTF9PUklFTlRBVElPTl9MRUZUX1VQOgotCQlyb3RhdGlvbiA9IERSTV9N T0RFX1JPVEFURV85MDsKLQkJYnJlYWs7Ci0JY2FzZSBEUk1fTU9ERV9QQU5FTF9PUklFTlRBVElP Tl9SSUdIVF9VUDoKLQkJcm90YXRpb24gPSBEUk1fTU9ERV9ST1RBVEVfMjcwOwotCQlicmVhazsK LQlkZWZhdWx0OgotCQlyb3RhdGlvbiA9IERSTV9NT0RFX1JPVEFURV8wOwotCX0KLQotCS8qCi0J ICogVE9ETzogc3VwcG9ydCA5MCAvIDI3MCBkZWdyZWUgaGFyZHdhcmUgcm90YXRpb24sCi0JICog ZGVwZW5kaW5nIG9uIHRoZSBoYXJkd2FyZSB0aGlzIG1heSByZXF1aXJlIHRoZSBmcmFtZWJ1ZmZl cgotCSAqIHRvIGJlIGluIGEgc3BlY2lmaWMgdGlsaW5nIGZvcm1hdC4KLQkgKi8KLQlpZiAocm90 YXRpb24gIT0gRFJNX01PREVfUk9UQVRFXzE4MCB8fCAhcGxhbmUtPnJvdGF0aW9uX3Byb3BlcnR5 KSB7Ci0JCWZiX2hlbHBlci0+c3dfcm90YXRpb25zIHw9IHJvdGF0aW9uOwotCQlyZXR1cm47Ci0J fQotCi0JZm9yIChpID0gMDsgaSA8IHBsYW5lLT5yb3RhdGlvbl9wcm9wZXJ0eS0+bnVtX3ZhbHVl czsgaSsrKQotCQl2YWxpZF9tYXNrIHw9ICgxVUxMIDw8IHBsYW5lLT5yb3RhdGlvbl9wcm9wZXJ0 eS0+dmFsdWVzW2ldKTsKLQotCWlmICghKHJvdGF0aW9uICYgdmFsaWRfbWFzaykpIHsKLQkJZmJf aGVscGVyLT5zd19yb3RhdGlvbnMgfD0gcm90YXRpb247Ci0JCXJldHVybjsKLQl9Ci0KLQlmYl9j cnRjLT5yb3RhdGlvbiA9IHJvdGF0aW9uOwotCS8qIFJvdGF0aW5nIGluIGhhcmR3YXJlLCBmYmNv biBzaG91bGQgbm90IHJvdGF0ZSAqLwotCWZiX2hlbHBlci0+c3dfcm90YXRpb25zIHw9IERSTV9N T0RFX1JPVEFURV8wOwotfQotCiBzdGF0aWMgc3RydWN0IGRybV9mYl9oZWxwZXJfY3J0YyAqCiBk cm1fZmJfaGVscGVyX2NydGMoc3RydWN0IGRybV9mYl9oZWxwZXIgKmZiX2hlbHBlciwgc3RydWN0 IGRybV9jcnRjICpjcnRjKQogewpAQCAtMjgxMiw3ICsyODAxLDYgQEAgc3RhdGljIHZvaWQgZHJt X3NldHVwX2NydGNzKHN0cnVjdCBkcm1fZmJfaGVscGVyICpmYl9oZWxwZXIsCiAJCWRybV9mYl9o ZWxwZXJfbW9kZXNldF9yZWxlYXNlKGZiX2hlbHBlciwKIAkJCQkJICAgICAgJmZiX2hlbHBlci0+ Y3J0Y19pbmZvW2ldLm1vZGVfc2V0KTsKIAotCWZiX2hlbHBlci0+c3dfcm90YXRpb25zID0gMDsK IAlkcm1fZmJfaGVscGVyX2Zvcl9lYWNoX2Nvbm5lY3RvcihmYl9oZWxwZXIsIGkpIHsKIAkJc3Ry dWN0IGRybV9kaXNwbGF5X21vZGUgKm1vZGUgPSBtb2Rlc1tpXTsKIAkJc3RydWN0IGRybV9mYl9o ZWxwZXJfY3J0YyAqZmJfY3J0YyA9IGNydGNzW2ldOwpAQCAtMjgzMiw3ICsyODIwLDYgQEAgc3Rh dGljIHZvaWQgZHJtX3NldHVwX2NydGNzKHN0cnVjdCBkcm1fZmJfaGVscGVyICpmYl9oZWxwZXIs CiAJCQltb2Rlc2V0LT5tb2RlID0gZHJtX21vZGVfZHVwbGljYXRlKGRldiwKIAkJCQkJCQkgICBm Yl9jcnRjLT5kZXNpcmVkX21vZGUpOwogCQkJZHJtX2Nvbm5lY3Rvcl9nZXQoY29ubmVjdG9yKTsK LQkJCWRybV9zZXR1cF9jcnRjX3JvdGF0aW9uKGZiX2hlbHBlciwgZmJfY3J0YywgY29ubmVjdG9y KTsKIAkJCW1vZGVzZXQtPmNvbm5lY3RvcnNbbW9kZXNldC0+bnVtX2Nvbm5lY3RvcnMrK10gPSBj b25uZWN0b3I7CiAJCQltb2Rlc2V0LT54ID0gb2Zmc2V0LT54OwogCQkJbW9kZXNldC0+eSA9IG9m ZnNldC0+eTsKQEAgLTI4NTUsMTEgKzI4NDIsMjMgQEAgc3RhdGljIHZvaWQgZHJtX3NldHVwX2Ny dGNzKHN0cnVjdCBkcm1fZmJfaGVscGVyICpmYl9oZWxwZXIsCiBzdGF0aWMgdm9pZCBkcm1fc2V0 dXBfY3J0Y3NfZmIoc3RydWN0IGRybV9mYl9oZWxwZXIgKmZiX2hlbHBlcikKIHsKIAlzdHJ1Y3Qg ZmJfaW5mbyAqaW5mbyA9IGZiX2hlbHBlci0+ZmJkZXY7CisJdW5zaWduZWQgaW50IHJvdGF0aW9u LCBzd19yb3RhdGlvbnMgPSAwOwogCWludCBpOwogCi0JZm9yIChpID0gMDsgaSA8IGZiX2hlbHBl ci0+Y3J0Y19jb3VudDsgaSsrKQotCQlpZiAoZmJfaGVscGVyLT5jcnRjX2luZm9baV0ubW9kZV9z ZXQubnVtX2Nvbm5lY3RvcnMpCi0JCQlmYl9oZWxwZXItPmNydGNfaW5mb1tpXS5tb2RlX3NldC5m YiA9IGZiX2hlbHBlci0+ZmI7CisJZm9yIChpID0gMDsgaSA8IGZiX2hlbHBlci0+Y3J0Y19jb3Vu dDsgaSsrKSB7CisJCXN0cnVjdCBkcm1fbW9kZV9zZXQgKm1vZGVzZXQgPSAmZmJfaGVscGVyLT5j cnRjX2luZm9baV0ubW9kZV9zZXQ7CisKKwkJaWYgKCFtb2Rlc2V0LT5udW1fY29ubmVjdG9ycykK KwkJCWNvbnRpbnVlOworCisJCW1vZGVzZXQtPmZiID0gZmJfaGVscGVyLT5mYjsKKworCQlpZiAo ZHJtX2ZiX2hlbHBlcl9wYW5lbF9yb3RhdGlvbihtb2Rlc2V0LCAmcm90YXRpb24pKQorCQkJLyog Um90YXRpbmcgaW4gaGFyZHdhcmUsIGZiY29uIHNob3VsZCBub3Qgcm90YXRlICovCisJCQlzd19y b3RhdGlvbnMgfD0gRFJNX01PREVfUk9UQVRFXzA7CisJCWVsc2UKKwkJCXN3X3JvdGF0aW9ucyB8 PSByb3RhdGlvbjsKKwl9CiAKIAltdXRleF9sb2NrKCZmYl9oZWxwZXItPmRldi0+bW9kZV9jb25m aWcubXV0ZXgpOwogCWRybV9mYl9oZWxwZXJfZm9yX2VhY2hfY29ubmVjdG9yKGZiX2hlbHBlciwg aSkgewpAQCAtMjg3NSw3ICsyODc0LDcgQEAgc3RhdGljIHZvaWQgZHJtX3NldHVwX2NydGNzX2Zi KHN0cnVjdCBkcm1fZmJfaGVscGVyICpmYl9oZWxwZXIpCiAJfQogCW11dGV4X3VubG9jaygmZmJf aGVscGVyLT5kZXYtPm1vZGVfY29uZmlnLm11dGV4KTsKIAotCXN3aXRjaCAoZmJfaGVscGVyLT5z d19yb3RhdGlvbnMpIHsKKwlzd2l0Y2ggKHN3X3JvdGF0aW9ucykgewogCWNhc2UgRFJNX01PREVf Uk9UQVRFXzA6CiAJCWluZm8tPmZiY29uX3JvdGF0ZV9oaW50ID0gRkJfUk9UQVRFX1VSOwogCQli cmVhazsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHJtL2RybV9mYl9oZWxwZXIuaCBiL2luY2x1ZGUv ZHJtL2RybV9mYl9oZWxwZXIuaAppbmRleCA0MGFmMjg2NmMyNmEuLmIwYTE0YWVmMmUzOSAxMDA2 NDQKLS0tIGEvaW5jbHVkZS9kcm0vZHJtX2ZiX2hlbHBlci5oCisrKyBiL2luY2x1ZGUvZHJtL2Ry bV9mYl9oZWxwZXIuaApAQCAtNTEsNyArNTEsNiBAQCBzdHJ1Y3QgZHJtX2ZiX2hlbHBlcl9jcnRj IHsKIAlzdHJ1Y3QgZHJtX21vZGVfc2V0IG1vZGVfc2V0OwogCXN0cnVjdCBkcm1fZGlzcGxheV9t b2RlICpkZXNpcmVkX21vZGU7CiAJaW50IHgsIHk7Ci0JaW50IHJvdGF0aW9uOwogfTsKIAogLyoq CkBAIC0xNTEsMTMgKzE1MCw2IEBAIHN0cnVjdCBkcm1fZmJfaGVscGVyIHsKIAlzdHJ1Y3QgZHJt X2ZiX2hlbHBlcl9jcnRjICpjcnRjX2luZm87CiAJaW50IGNvbm5lY3Rvcl9jb3VudDsKIAlpbnQg Y29ubmVjdG9yX2luZm9fYWxsb2NfY291bnQ7Ci0JLyoqCi0JICogQHN3X3JvdGF0aW9uczoKLQkg KiBCaXRtYXNrIG9mIGFsbCByb3RhdGlvbnMgcmVxdWVzdGVkIGZvciBwYW5lbC1vcmllbnRhdGlv biB3aGljaAotCSAqIGNvdWxkIG5vdCBiZSBoYW5kbGVkIGluIGhhcmR3YXJlLiBJZiBvbmx5IG9u ZSBiaXQgaXMgc2V0Ci0JICogZmJkZXYtPmZiY29uX3JvdGF0ZV9oaW50IGdldHMgc2V0IHRvIHRo ZSByZXF1ZXN0ZWQgcm90YXRpb24uCi0JICovCi0JaW50IHN3X3JvdGF0aW9uczsKIAkvKioKIAkg KiBAY29ubmVjdG9yX2luZm86CiAJICoKLS0gCjIuMjAuMQoKX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2 ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21h aWxtYW4vbGlzdGluZm8vZHJpLWRldmVs