From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville Syrjala Subject: [PATCH] drm/i915: Preload LUTs if the hw isn't currently using them Date: Wed, 30 Oct 2019 21:08:15 +0200 Message-ID: <20191030190815.7359-1-ville.syrjala@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by gabe.freedesktop.org (Postfix) with ESMTPS id 610BB6E46D for ; Wed, 30 Oct 2019 19:08:19 +0000 (UTC) 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 RnJvbTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KClRo ZSBMVVRzIGFyZSBzaW5nbGUgYnVmZmVyZWQgc28gaW4gb3JkZXIgdG8gcHJvZ3JhbSB0aGVtIHdp dGhvdXQKdGVhcmluZyB3ZSdkIGhhdmUgdG8gZG8gaXQgZHVyaW5nIHZibGFuayAoYWN0dWFsbHkg dG8gYmUgMTAwJQplZmZlY3RpdmUgaXQgaGFzIHRvIGhhcHBlbiBiZXR3ZWVuIHN0YXJ0IG9mIHZi bGFuayBhbmQgZnJhbWUgc3RhcnQpLgpXZSBoYXZlIG5vIHByb3BlciBtZWNoYW5pc20gZm9yIHRo YXQgYXQgdGhlIG1vbWVudCBzbyB3ZSBqdXN0CmRlZmVyIGxvYWRpbmcgdGhlbSBhZnRlciB0aGUg dmJsYW5rIHdhaXRzIGhhdmUgaGFwcGVuZWQuIFRoYXQKaXMgbm90IHF1aXRlIHN1ZmZpY2llbnQg KGVzcGVjaWFsbHkgd2hlbiBjb21taXR0aW5nIG11bHRpcGxlIHBpcGVzCndob3NlIHZibGFua3Mg ZG9uJ3QgbGluZSB1cCkgc28gdGhlIExVVCBsb2FkIHdpbGwgb2Z0ZW4gbGVhayBpbnRvCnRoZSBm b2xsb3dpbmcgZnJhbWUgY2F1c2luZyB0ZWFyaW5nLgoKSG93ZXZlciBpbiBjYXNlIHRoZSBoYXJk d2FyZSB3YXNuJ3QgcHJldmlvdXNseSB1c2luZyB0aGUgTFVUIHdlCmNhbiBwcmVsb2FkIGl0IGJl Zm9yZSBzZXR0aW5nIHRoZSBlbmFibGUgYml0ICh3aGljaCBpcyBkb3VibGUKYnVmZmVyZWQgc28g d29uJ3QgdGVhcikuIExldCdzIGRldGVybWluZSBpZiB3ZSBjYW4gZG8gc3VjaApwcmVsb2FkaW5n IGFuZCBtYWtlIGl0IGhhcHBlbi4gU2xpZ2h0IHZhcmlhdGlvbiBiZXR3ZWVuIHRoZQpoYXJkd2Fy ZSByZXF1aXJlcyBzb21lIHBsYXRmb3JtcyBzcGVjaWZpY3MgaW4gdGhlIGNoZWNrcy4KCkhhbnMg aXMgc2VlaW5nIHVnbHkgY29sb3JlZCBmbGFzaCBvbiBWTFYvQ0hWIG1hY2NoaW5lcyAoR1BEIHdp bgphbmQgQXN1cyBUMTAwSEEpIHdoZW4gdGhlIGdhbW1hIExVVCBnZXRzIGxvYWRlZCBmb3IgdGhl IGZpcnN0CnRpbWUgYXMgdGhlIEJJT1MgaGFzIGxlZnQgc29tZSBqdW5rIGluIHRoZSBMVVQgbWVt b3J5LgoKQ2M6IEhhbnMgZGUgR29lZGUgPGhkZWdvZWRlQHJlZGhhdC5jb20+CkZpeGVzOiAwNTFh NmQ4ZDNjYTAgKCJkcm0vaTkxNTogTW92ZSBMVVQgcHJvZ3JhbW1pbmcgdG8gaGFwcGVuIGFmdGVy IHZibGFuayB3YWl0cyIpClNpZ25lZC1vZmYtYnk6IFZpbGxlIFN5cmrDpGzDpCA8dmlsbGUuc3ly amFsYUBsaW51eC5pbnRlbC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9p bnRlbF9hdG9taWMuYyAgIHwgIDEgKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRl bF9jb2xvci5jICAgIHwgNjEgKysrKysrKysrKysrKysrKysrKwogZHJpdmVycy9ncHUvZHJtL2k5 MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5LmMgIHwgIDYgKysKIC4uLi9kcm0vaTkxNS9kaXNwbGF5 L2ludGVsX2Rpc3BsYXlfdHlwZXMuaCAgICB8ICAxICsKIDQgZmlsZXMgY2hhbmdlZCwgNjkgaW5z ZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50 ZWxfYXRvbWljLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2F0b21pYy5j CmluZGV4IDljZDZkMjM0OGExZS4uYzI4NzViMTBhZGY5IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2F0b21pYy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2Rpc3BsYXkvaW50ZWxfYXRvbWljLmMKQEAgLTIwMCw2ICsyMDAsNyBAQCBpbnRlbF9jcnRj X2R1cGxpY2F0ZV9zdGF0ZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCiAJY3J0Y19zdGF0ZS0+dXBk YXRlX3dtX3ByZSA9IGZhbHNlOwogCWNydGNfc3RhdGUtPnVwZGF0ZV93bV9wb3N0ID0gZmFsc2U7 CiAJY3J0Y19zdGF0ZS0+Zmlmb19jaGFuZ2VkID0gZmFsc2U7CisJY3J0Y19zdGF0ZS0+cHJlbG9h ZF9sdXRzID0gZmFsc2U7CiAJY3J0Y19zdGF0ZS0+d20ubmVlZF9wb3N0dmJsX3VwZGF0ZSA9IGZh bHNlOwogCWNydGNfc3RhdGUtPmZiX2JpdHMgPSAwOwogCWNydGNfc3RhdGUtPnVwZGF0ZV9wbGFu ZXMgPSAwOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9j b2xvci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9jb2xvci5jCmluZGV4 IGZhNDRlYjczZDA4OC4uZDMzNjc2ZTgyMTQwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9kaXNwbGF5L2ludGVsX2NvbG9yLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlz cGxheS9pbnRlbF9jb2xvci5jCkBAIC0xMDIyLDYgKzEwMjIsNTUgQEAgdm9pZCBpbnRlbF9jb2xv cl9jb21taXQoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCiAJZGV2 X3ByaXYtPmRpc3BsYXkuY29sb3JfY29tbWl0KGNydGNfc3RhdGUpOwogfQogCitzdGF0aWMgYm9v bCBpbnRlbF9jYW5fcHJlbG9hZF9sdXRzKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpu ZXdfY3J0Y19zdGF0ZSkKK3sKKwlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVsX2Ny dGMobmV3X2NydGNfc3RhdGUtPmJhc2UuY3J0Yyk7CisJc3RydWN0IGludGVsX2F0b21pY19zdGF0 ZSAqc3RhdGUgPQorCQl0b19pbnRlbF9hdG9taWNfc3RhdGUobmV3X2NydGNfc3RhdGUtPmJhc2Uu c3RhdGUpOworCWNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpvbGRfY3J0Y19zdGF0ZSA9 CisJCWludGVsX2F0b21pY19nZXRfb2xkX2NydGNfc3RhdGUoc3RhdGUsIGNydGMpOworCisJcmV0 dXJuICFvbGRfY3J0Y19zdGF0ZS0+YmFzZS5nYW1tYV9sdXQgJiYKKwkJIW9sZF9jcnRjX3N0YXRl LT5iYXNlLmRlZ2FtbWFfbHV0OworfQorCitzdGF0aWMgYm9vbCBjaHZfY2FuX3ByZWxvYWRfbHV0 cyhjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqbmV3X2NydGNfc3RhdGUpCit7CisJc3Ry dWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRjKG5ld19jcnRjX3N0YXRlLT5iYXNl LmNydGMpOworCXN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKnN0YXRlID0KKwkJdG9faW50ZWxf YXRvbWljX3N0YXRlKG5ld19jcnRjX3N0YXRlLT5iYXNlLnN0YXRlKTsKKwljb25zdCBzdHJ1Y3Qg aW50ZWxfY3J0Y19zdGF0ZSAqb2xkX2NydGNfc3RhdGUgPQorCQlpbnRlbF9hdG9taWNfZ2V0X29s ZF9jcnRjX3N0YXRlKHN0YXRlLCBjcnRjKTsKKworCS8qCisJICogQ0dNX1BJUEVfTU9ERSBpcyBp dHNlbGYgc2luZ2xlIGJ1ZmZlcmVkLiBXZSdkIGhhdmUgdG8KKwkgKiBzb21laG93IHNwbGl0IGl0 IG91dCBmcm9tIGNodl9sb2FkX2x1dHMoKSBpZiB3ZSB3YW50ZWQKKwkgKiB0aGUgYWJpbGl0eSB0 byBwcmVsb2FkIHRoZSBHQ00gTFVUcy9DU0Mgd2l0aG91dCB0ZWFyaW5nLgorCSAqLworCWlmIChv bGRfY3J0Y19zdGF0ZS0+Y2dtX21vZGUgfHwgbmV3X2NydGNfc3RhdGUtPmNnbV9tb2RlKQorCQly ZXR1cm4gZmFsc2U7CisKKwlyZXR1cm4gIW9sZF9jcnRjX3N0YXRlLT5iYXNlLmdhbW1hX2x1dDsK K30KKworc3RhdGljIGJvb2wgZ2xrX2Nhbl9wcmVsb2FkX2x1dHMoY29uc3Qgc3RydWN0IGludGVs X2NydGNfc3RhdGUgKm5ld19jcnRjX3N0YXRlKQoreworCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRj ID0gdG9faW50ZWxfY3J0YyhuZXdfY3J0Y19zdGF0ZS0+YmFzZS5jcnRjKTsKKwlzdHJ1Y3QgaW50 ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSA9CisJCXRvX2ludGVsX2F0b21pY19zdGF0ZShuZXdfY3J0 Y19zdGF0ZS0+YmFzZS5zdGF0ZSk7CisJY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKm9s ZF9jcnRjX3N0YXRlID0KKwkJaW50ZWxfYXRvbWljX2dldF9vbGRfY3J0Y19zdGF0ZShzdGF0ZSwg Y3J0Yyk7CisKKwkvKgorCSAqIFRoZSBoYXJkd2FyZSBkZWdhbW1hIGlzIGFjdGl2ZSB3aGVuZXZl ciB0aGUgcGlwZQorCSAqIENTQyBpcyBhY3RpdmUuIFRodXMgZXZlbiBpZiB0aGUgb2xkIHN0YXRl IGhhcyBubworCSAqIHNvZnR3YXJlIGRlZ2FtbWEgd2UgbmVlZCB0byBhdm9pZCBjbG9iYmVyaW5n IHRoZQorCSAqIGxpbmVhciBoYXJkd2FyZSBkZWdhbW1hIG1pZCBzY2Fub3V0LgorCSAqLworCXJl dHVybiAhb2xkX2NydGNfc3RhdGUtPmNzY19lbmFibGUgJiYKKwkJIW9sZF9jcnRjX3N0YXRlLT5i YXNlLmdhbW1hX2x1dDsKK30KKwogaW50IGludGVsX2NvbG9yX2NoZWNrKHN0cnVjdCBpbnRlbF9j cnRjX3N0YXRlICpjcnRjX3N0YXRlKQogewogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiA9IHRvX2k5MTUoY3J0Y19zdGF0ZS0+YmFzZS5jcnRjLT5kZXYpOwpAQCAtMTE2NSw2ICsx MjE0LDggQEAgc3RhdGljIGludCBpOXh4X2NvbG9yX2NoZWNrKHN0cnVjdCBpbnRlbF9jcnRjX3N0 YXRlICpjcnRjX3N0YXRlKQogCWlmIChyZXQpCiAJCXJldHVybiByZXQ7CiAKKwljcnRjX3N0YXRl LT5wcmVsb2FkX2x1dHMgPSBpbnRlbF9jYW5fcHJlbG9hZF9sdXRzKGNydGNfc3RhdGUpOworCiAJ cmV0dXJuIDA7CiB9CiAKQEAgLTEyMTcsNiArMTI2OCw4IEBAIHN0YXRpYyBpbnQgY2h2X2NvbG9y X2NoZWNrKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQogCWlmIChyZXQpCiAJ CXJldHVybiByZXQ7CiAKKwljcnRjX3N0YXRlLT5wcmVsb2FkX2x1dHMgPSBjaHZfY2FuX3ByZWxv YWRfbHV0cyhjcnRjX3N0YXRlKTsKKwogCXJldHVybiAwOwogfQogCkBAIC0xMjcxLDYgKzEzMjQs OCBAQCBzdGF0aWMgaW50IGlsa19jb2xvcl9jaGVjayhzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAq Y3J0Y19zdGF0ZSkKIAlpZiAocmV0KQogCQlyZXR1cm4gcmV0OwogCisJY3J0Y19zdGF0ZS0+cHJl bG9hZF9sdXRzID0gaW50ZWxfY2FuX3ByZWxvYWRfbHV0cyhjcnRjX3N0YXRlKTsKKwogCXJldHVy biAwOwogfQogCkBAIC0xMzI4LDYgKzEzODMsOCBAQCBzdGF0aWMgaW50IGl2Yl9jb2xvcl9jaGVj ayhzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKIAlpZiAocmV0KQogCQlyZXR1 cm4gcmV0OwogCisJY3J0Y19zdGF0ZS0+cHJlbG9hZF9sdXRzID0gaW50ZWxfY2FuX3ByZWxvYWRf bHV0cyhjcnRjX3N0YXRlKTsKKwogCXJldHVybiAwOwogfQogCkBAIC0xMzY2LDYgKzE0MjMsOCBA QCBzdGF0aWMgaW50IGdsa19jb2xvcl9jaGVjayhzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0 Y19zdGF0ZSkKIAlpZiAocmV0KQogCQlyZXR1cm4gcmV0OwogCisJY3J0Y19zdGF0ZS0+cHJlbG9h ZF9sdXRzID0gZ2xrX2Nhbl9wcmVsb2FkX2x1dHMoY3J0Y19zdGF0ZSk7CisKIAlyZXR1cm4gMDsK IH0KIApAQCAtMTQxNSw2ICsxNDc0LDggQEAgc3RhdGljIGludCBpY2xfY29sb3JfY2hlY2soc3Ry dWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCiAKIAljcnRjX3N0YXRlLT5jc2NfbW9k ZSA9IGljbF9jc2NfbW9kZShjcnRjX3N0YXRlKTsKIAorCWNydGNfc3RhdGUtPnByZWxvYWRfbHV0 cyA9IGludGVsX2Nhbl9wcmVsb2FkX2x1dHMoY3J0Y19zdGF0ZSk7CisKIAlyZXR1cm4gMDsKIH0K IApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5 LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXkuYwppbmRleCBh MjMzNzU2MjExODUuLmRkNjU1YmEzNTYwYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlz cGxheS9pbnRlbF9kaXNwbGF5LmMKQEAgLTE0MjAxLDYgKzE0MjAxLDExIEBAIHN0YXRpYyB2b2lk IGludGVsX3VwZGF0ZV9jcnRjKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAogCQkvKiB2Ymxhbmtz IHdvcmsgYWdhaW4sIHJlLWVuYWJsZSBwaXBlIENSQy4gKi8KIAkJaW50ZWxfY3J0Y19lbmFibGVf cGlwZV9jcmMoY3J0Yyk7CiAJfSBlbHNlIHsKKwkJaWYgKG5ld19jcnRjX3N0YXRlLT5wcmVsb2Fk X2x1dHMgJiYKKwkJICAgIChuZXdfY3J0Y19zdGF0ZS0+YmFzZS5jb2xvcl9tZ210X2NoYW5nZWQg fHwKKwkJICAgICBuZXdfY3J0Y19zdGF0ZS0+dXBkYXRlX3BpcGUpKQorCQkJaW50ZWxfY29sb3Jf bG9hZF9sdXRzKG5ld19jcnRjX3N0YXRlKTsKKwogCQlpbnRlbF9wcmVfcGxhbmVfdXBkYXRlKG9s ZF9jcnRjX3N0YXRlLCBuZXdfY3J0Y19zdGF0ZSk7CiAKIAkJaWYgKG5ld19jcnRjX3N0YXRlLT51 cGRhdGVfcGlwZSkKQEAgLTE0NzEzLDYgKzE0NzE4LDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfYXRv bWljX2NvbW1pdF90YWlsKHN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKnN0YXRlKQogCWZvcl9l YWNoX25ld19pbnRlbF9jcnRjX2luX3N0YXRlKHN0YXRlLCBjcnRjLCBuZXdfY3J0Y19zdGF0ZSwg aSkgewogCQlpZiAobmV3X2NydGNfc3RhdGUtPmJhc2UuYWN0aXZlICYmCiAJCSAgICAhbmVlZHNf bW9kZXNldChuZXdfY3J0Y19zdGF0ZSkgJiYKKwkJICAgICFuZXdfY3J0Y19zdGF0ZS0+cHJlbG9h ZF9sdXRzICYmCiAJCSAgICAobmV3X2NydGNfc3RhdGUtPmJhc2UuY29sb3JfbWdtdF9jaGFuZ2Vk IHx8CiAJCSAgICAgbmV3X2NydGNfc3RhdGUtPnVwZGF0ZV9waXBlKSkKIAkJCWludGVsX2NvbG9y X2xvYWRfbHV0cyhuZXdfY3J0Y19zdGF0ZSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfdHlwZXMuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV90eXBlcy5oCmluZGV4IDQwMTg0ZTgyM2M4NC4uYWUzMzIx MTVkYWVlIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rp c3BsYXlfdHlwZXMuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rp c3BsYXlfdHlwZXMuaApAQCAtNzc1LDYgKzc3NSw3IEBAIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRl IHsKIAlib29sIGRpc2FibGVfY3hzcjsKIAlib29sIHVwZGF0ZV93bV9wcmUsIHVwZGF0ZV93bV9w b3N0OyAvKiB3YXRlcm1hcmtzIGFyZSB1cGRhdGVkICovCiAJYm9vbCBmaWZvX2NoYW5nZWQ7IC8q IEZJRk8gc3BsaXQgaXMgY2hhbmdlZCAqLworCWJvb2wgcHJlbG9hZF9sdXRzOwogCiAJLyogUGlw ZSBzb3VyY2Ugc2l6ZSAoaWUuIHBhbmVsIGZpdHRlciBpbnB1dCBzaXplKQogCSAqIEFsbCBwbGFu ZXMgd2lsbCBiZSBwb3NpdGlvbmVkIGluc2lkZSB0aGlzIHNwYWNlLAotLSAKMi4yMy4wCgpfX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFp bGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5m cmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZng= From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.7 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 66602CA9EC5 for ; Wed, 30 Oct 2019 19:08:21 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 4316920856 for ; Wed, 30 Oct 2019 19:08:21 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 4316920856 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=linux.intel.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=intel-gfx-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id B22406E46D; Wed, 30 Oct 2019 19:08:20 +0000 (UTC) Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by gabe.freedesktop.org (Postfix) with ESMTPS id 610BB6E46D for ; Wed, 30 Oct 2019 19:08:19 +0000 (UTC) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga006.jf.intel.com ([10.7.209.51]) by fmsmga104.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 30 Oct 2019 12:08:18 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.68,248,1569308400"; d="scan'208";a="203971730" Received: from stinkbox.fi.intel.com (HELO stinkbox) ([10.237.72.174]) by orsmga006.jf.intel.com with SMTP; 30 Oct 2019 12:08:16 -0700 Received: by stinkbox (sSMTP sendmail emulation); Wed, 30 Oct 2019 21:08:15 +0200 From: Ville Syrjala To: intel-gfx@lists.freedesktop.org Date: Wed, 30 Oct 2019 21:08:15 +0200 Message-Id: <20191030190815.7359-1-ville.syrjala@linux.intel.com> X-Mailer: git-send-email 2.23.0 MIME-Version: 1.0 Subject: [Intel-gfx] [PATCH] drm/i915: Preload LUTs if the hw isn't currently using them X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" Message-ID: <20191030190815.5-FOJ-la3vk_A4BhwsjbuL87chw2zjoXmbSUmehaJSE@z> RnJvbTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KClRo ZSBMVVRzIGFyZSBzaW5nbGUgYnVmZmVyZWQgc28gaW4gb3JkZXIgdG8gcHJvZ3JhbSB0aGVtIHdp dGhvdXQKdGVhcmluZyB3ZSdkIGhhdmUgdG8gZG8gaXQgZHVyaW5nIHZibGFuayAoYWN0dWFsbHkg dG8gYmUgMTAwJQplZmZlY3RpdmUgaXQgaGFzIHRvIGhhcHBlbiBiZXR3ZWVuIHN0YXJ0IG9mIHZi bGFuayBhbmQgZnJhbWUgc3RhcnQpLgpXZSBoYXZlIG5vIHByb3BlciBtZWNoYW5pc20gZm9yIHRo YXQgYXQgdGhlIG1vbWVudCBzbyB3ZSBqdXN0CmRlZmVyIGxvYWRpbmcgdGhlbSBhZnRlciB0aGUg dmJsYW5rIHdhaXRzIGhhdmUgaGFwcGVuZWQuIFRoYXQKaXMgbm90IHF1aXRlIHN1ZmZpY2llbnQg KGVzcGVjaWFsbHkgd2hlbiBjb21taXR0aW5nIG11bHRpcGxlIHBpcGVzCndob3NlIHZibGFua3Mg ZG9uJ3QgbGluZSB1cCkgc28gdGhlIExVVCBsb2FkIHdpbGwgb2Z0ZW4gbGVhayBpbnRvCnRoZSBm b2xsb3dpbmcgZnJhbWUgY2F1c2luZyB0ZWFyaW5nLgoKSG93ZXZlciBpbiBjYXNlIHRoZSBoYXJk d2FyZSB3YXNuJ3QgcHJldmlvdXNseSB1c2luZyB0aGUgTFVUIHdlCmNhbiBwcmVsb2FkIGl0IGJl Zm9yZSBzZXR0aW5nIHRoZSBlbmFibGUgYml0ICh3aGljaCBpcyBkb3VibGUKYnVmZmVyZWQgc28g d29uJ3QgdGVhcikuIExldCdzIGRldGVybWluZSBpZiB3ZSBjYW4gZG8gc3VjaApwcmVsb2FkaW5n IGFuZCBtYWtlIGl0IGhhcHBlbi4gU2xpZ2h0IHZhcmlhdGlvbiBiZXR3ZWVuIHRoZQpoYXJkd2Fy ZSByZXF1aXJlcyBzb21lIHBsYXRmb3JtcyBzcGVjaWZpY3MgaW4gdGhlIGNoZWNrcy4KCkhhbnMg aXMgc2VlaW5nIHVnbHkgY29sb3JlZCBmbGFzaCBvbiBWTFYvQ0hWIG1hY2NoaW5lcyAoR1BEIHdp bgphbmQgQXN1cyBUMTAwSEEpIHdoZW4gdGhlIGdhbW1hIExVVCBnZXRzIGxvYWRlZCBmb3IgdGhl IGZpcnN0CnRpbWUgYXMgdGhlIEJJT1MgaGFzIGxlZnQgc29tZSBqdW5rIGluIHRoZSBMVVQgbWVt b3J5LgoKQ2M6IEhhbnMgZGUgR29lZGUgPGhkZWdvZWRlQHJlZGhhdC5jb20+CkZpeGVzOiAwNTFh NmQ4ZDNjYTAgKCJkcm0vaTkxNTogTW92ZSBMVVQgcHJvZ3JhbW1pbmcgdG8gaGFwcGVuIGFmdGVy IHZibGFuayB3YWl0cyIpClNpZ25lZC1vZmYtYnk6IFZpbGxlIFN5cmrDpGzDpCA8dmlsbGUuc3ly amFsYUBsaW51eC5pbnRlbC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9p bnRlbF9hdG9taWMuYyAgIHwgIDEgKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRl bF9jb2xvci5jICAgIHwgNjEgKysrKysrKysrKysrKysrKysrKwogZHJpdmVycy9ncHUvZHJtL2k5 MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5LmMgIHwgIDYgKysKIC4uLi9kcm0vaTkxNS9kaXNwbGF5 L2ludGVsX2Rpc3BsYXlfdHlwZXMuaCAgICB8ICAxICsKIDQgZmlsZXMgY2hhbmdlZCwgNjkgaW5z ZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50 ZWxfYXRvbWljLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2F0b21pYy5j CmluZGV4IDljZDZkMjM0OGExZS4uYzI4NzViMTBhZGY5IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2F0b21pYy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2Rpc3BsYXkvaW50ZWxfYXRvbWljLmMKQEAgLTIwMCw2ICsyMDAsNyBAQCBpbnRlbF9jcnRj X2R1cGxpY2F0ZV9zdGF0ZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCiAJY3J0Y19zdGF0ZS0+dXBk YXRlX3dtX3ByZSA9IGZhbHNlOwogCWNydGNfc3RhdGUtPnVwZGF0ZV93bV9wb3N0ID0gZmFsc2U7 CiAJY3J0Y19zdGF0ZS0+Zmlmb19jaGFuZ2VkID0gZmFsc2U7CisJY3J0Y19zdGF0ZS0+cHJlbG9h ZF9sdXRzID0gZmFsc2U7CiAJY3J0Y19zdGF0ZS0+d20ubmVlZF9wb3N0dmJsX3VwZGF0ZSA9IGZh bHNlOwogCWNydGNfc3RhdGUtPmZiX2JpdHMgPSAwOwogCWNydGNfc3RhdGUtPnVwZGF0ZV9wbGFu ZXMgPSAwOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9j b2xvci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9jb2xvci5jCmluZGV4 IGZhNDRlYjczZDA4OC4uZDMzNjc2ZTgyMTQwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9kaXNwbGF5L2ludGVsX2NvbG9yLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlz cGxheS9pbnRlbF9jb2xvci5jCkBAIC0xMDIyLDYgKzEwMjIsNTUgQEAgdm9pZCBpbnRlbF9jb2xv cl9jb21taXQoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCiAJZGV2 X3ByaXYtPmRpc3BsYXkuY29sb3JfY29tbWl0KGNydGNfc3RhdGUpOwogfQogCitzdGF0aWMgYm9v bCBpbnRlbF9jYW5fcHJlbG9hZF9sdXRzKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpu ZXdfY3J0Y19zdGF0ZSkKK3sKKwlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVsX2Ny dGMobmV3X2NydGNfc3RhdGUtPmJhc2UuY3J0Yyk7CisJc3RydWN0IGludGVsX2F0b21pY19zdGF0 ZSAqc3RhdGUgPQorCQl0b19pbnRlbF9hdG9taWNfc3RhdGUobmV3X2NydGNfc3RhdGUtPmJhc2Uu c3RhdGUpOworCWNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpvbGRfY3J0Y19zdGF0ZSA9 CisJCWludGVsX2F0b21pY19nZXRfb2xkX2NydGNfc3RhdGUoc3RhdGUsIGNydGMpOworCisJcmV0 dXJuICFvbGRfY3J0Y19zdGF0ZS0+YmFzZS5nYW1tYV9sdXQgJiYKKwkJIW9sZF9jcnRjX3N0YXRl LT5iYXNlLmRlZ2FtbWFfbHV0OworfQorCitzdGF0aWMgYm9vbCBjaHZfY2FuX3ByZWxvYWRfbHV0 cyhjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqbmV3X2NydGNfc3RhdGUpCit7CisJc3Ry dWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRjKG5ld19jcnRjX3N0YXRlLT5iYXNl LmNydGMpOworCXN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKnN0YXRlID0KKwkJdG9faW50ZWxf YXRvbWljX3N0YXRlKG5ld19jcnRjX3N0YXRlLT5iYXNlLnN0YXRlKTsKKwljb25zdCBzdHJ1Y3Qg aW50ZWxfY3J0Y19zdGF0ZSAqb2xkX2NydGNfc3RhdGUgPQorCQlpbnRlbF9hdG9taWNfZ2V0X29s ZF9jcnRjX3N0YXRlKHN0YXRlLCBjcnRjKTsKKworCS8qCisJICogQ0dNX1BJUEVfTU9ERSBpcyBp dHNlbGYgc2luZ2xlIGJ1ZmZlcmVkLiBXZSdkIGhhdmUgdG8KKwkgKiBzb21laG93IHNwbGl0IGl0 IG91dCBmcm9tIGNodl9sb2FkX2x1dHMoKSBpZiB3ZSB3YW50ZWQKKwkgKiB0aGUgYWJpbGl0eSB0 byBwcmVsb2FkIHRoZSBHQ00gTFVUcy9DU0Mgd2l0aG91dCB0ZWFyaW5nLgorCSAqLworCWlmIChv bGRfY3J0Y19zdGF0ZS0+Y2dtX21vZGUgfHwgbmV3X2NydGNfc3RhdGUtPmNnbV9tb2RlKQorCQly ZXR1cm4gZmFsc2U7CisKKwlyZXR1cm4gIW9sZF9jcnRjX3N0YXRlLT5iYXNlLmdhbW1hX2x1dDsK K30KKworc3RhdGljIGJvb2wgZ2xrX2Nhbl9wcmVsb2FkX2x1dHMoY29uc3Qgc3RydWN0IGludGVs X2NydGNfc3RhdGUgKm5ld19jcnRjX3N0YXRlKQoreworCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRj ID0gdG9faW50ZWxfY3J0YyhuZXdfY3J0Y19zdGF0ZS0+YmFzZS5jcnRjKTsKKwlzdHJ1Y3QgaW50 ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSA9CisJCXRvX2ludGVsX2F0b21pY19zdGF0ZShuZXdfY3J0 Y19zdGF0ZS0+YmFzZS5zdGF0ZSk7CisJY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKm9s ZF9jcnRjX3N0YXRlID0KKwkJaW50ZWxfYXRvbWljX2dldF9vbGRfY3J0Y19zdGF0ZShzdGF0ZSwg Y3J0Yyk7CisKKwkvKgorCSAqIFRoZSBoYXJkd2FyZSBkZWdhbW1hIGlzIGFjdGl2ZSB3aGVuZXZl ciB0aGUgcGlwZQorCSAqIENTQyBpcyBhY3RpdmUuIFRodXMgZXZlbiBpZiB0aGUgb2xkIHN0YXRl IGhhcyBubworCSAqIHNvZnR3YXJlIGRlZ2FtbWEgd2UgbmVlZCB0byBhdm9pZCBjbG9iYmVyaW5n IHRoZQorCSAqIGxpbmVhciBoYXJkd2FyZSBkZWdhbW1hIG1pZCBzY2Fub3V0LgorCSAqLworCXJl dHVybiAhb2xkX2NydGNfc3RhdGUtPmNzY19lbmFibGUgJiYKKwkJIW9sZF9jcnRjX3N0YXRlLT5i YXNlLmdhbW1hX2x1dDsKK30KKwogaW50IGludGVsX2NvbG9yX2NoZWNrKHN0cnVjdCBpbnRlbF9j cnRjX3N0YXRlICpjcnRjX3N0YXRlKQogewogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiA9IHRvX2k5MTUoY3J0Y19zdGF0ZS0+YmFzZS5jcnRjLT5kZXYpOwpAQCAtMTE2NSw2ICsx MjE0LDggQEAgc3RhdGljIGludCBpOXh4X2NvbG9yX2NoZWNrKHN0cnVjdCBpbnRlbF9jcnRjX3N0 YXRlICpjcnRjX3N0YXRlKQogCWlmIChyZXQpCiAJCXJldHVybiByZXQ7CiAKKwljcnRjX3N0YXRl LT5wcmVsb2FkX2x1dHMgPSBpbnRlbF9jYW5fcHJlbG9hZF9sdXRzKGNydGNfc3RhdGUpOworCiAJ cmV0dXJuIDA7CiB9CiAKQEAgLTEyMTcsNiArMTI2OCw4IEBAIHN0YXRpYyBpbnQgY2h2X2NvbG9y X2NoZWNrKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQogCWlmIChyZXQpCiAJ CXJldHVybiByZXQ7CiAKKwljcnRjX3N0YXRlLT5wcmVsb2FkX2x1dHMgPSBjaHZfY2FuX3ByZWxv YWRfbHV0cyhjcnRjX3N0YXRlKTsKKwogCXJldHVybiAwOwogfQogCkBAIC0xMjcxLDYgKzEzMjQs OCBAQCBzdGF0aWMgaW50IGlsa19jb2xvcl9jaGVjayhzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAq Y3J0Y19zdGF0ZSkKIAlpZiAocmV0KQogCQlyZXR1cm4gcmV0OwogCisJY3J0Y19zdGF0ZS0+cHJl bG9hZF9sdXRzID0gaW50ZWxfY2FuX3ByZWxvYWRfbHV0cyhjcnRjX3N0YXRlKTsKKwogCXJldHVy biAwOwogfQogCkBAIC0xMzI4LDYgKzEzODMsOCBAQCBzdGF0aWMgaW50IGl2Yl9jb2xvcl9jaGVj ayhzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKIAlpZiAocmV0KQogCQlyZXR1 cm4gcmV0OwogCisJY3J0Y19zdGF0ZS0+cHJlbG9hZF9sdXRzID0gaW50ZWxfY2FuX3ByZWxvYWRf bHV0cyhjcnRjX3N0YXRlKTsKKwogCXJldHVybiAwOwogfQogCkBAIC0xMzY2LDYgKzE0MjMsOCBA QCBzdGF0aWMgaW50IGdsa19jb2xvcl9jaGVjayhzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0 Y19zdGF0ZSkKIAlpZiAocmV0KQogCQlyZXR1cm4gcmV0OwogCisJY3J0Y19zdGF0ZS0+cHJlbG9h ZF9sdXRzID0gZ2xrX2Nhbl9wcmVsb2FkX2x1dHMoY3J0Y19zdGF0ZSk7CisKIAlyZXR1cm4gMDsK IH0KIApAQCAtMTQxNSw2ICsxNDc0LDggQEAgc3RhdGljIGludCBpY2xfY29sb3JfY2hlY2soc3Ry dWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCiAKIAljcnRjX3N0YXRlLT5jc2NfbW9k ZSA9IGljbF9jc2NfbW9kZShjcnRjX3N0YXRlKTsKIAorCWNydGNfc3RhdGUtPnByZWxvYWRfbHV0 cyA9IGludGVsX2Nhbl9wcmVsb2FkX2x1dHMoY3J0Y19zdGF0ZSk7CisKIAlyZXR1cm4gMDsKIH0K IApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5 LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXkuYwppbmRleCBh MjMzNzU2MjExODUuLmRkNjU1YmEzNTYwYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlz cGxheS9pbnRlbF9kaXNwbGF5LmMKQEAgLTE0MjAxLDYgKzE0MjAxLDExIEBAIHN0YXRpYyB2b2lk IGludGVsX3VwZGF0ZV9jcnRjKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAogCQkvKiB2Ymxhbmtz IHdvcmsgYWdhaW4sIHJlLWVuYWJsZSBwaXBlIENSQy4gKi8KIAkJaW50ZWxfY3J0Y19lbmFibGVf cGlwZV9jcmMoY3J0Yyk7CiAJfSBlbHNlIHsKKwkJaWYgKG5ld19jcnRjX3N0YXRlLT5wcmVsb2Fk X2x1dHMgJiYKKwkJICAgIChuZXdfY3J0Y19zdGF0ZS0+YmFzZS5jb2xvcl9tZ210X2NoYW5nZWQg fHwKKwkJICAgICBuZXdfY3J0Y19zdGF0ZS0+dXBkYXRlX3BpcGUpKQorCQkJaW50ZWxfY29sb3Jf bG9hZF9sdXRzKG5ld19jcnRjX3N0YXRlKTsKKwogCQlpbnRlbF9wcmVfcGxhbmVfdXBkYXRlKG9s ZF9jcnRjX3N0YXRlLCBuZXdfY3J0Y19zdGF0ZSk7CiAKIAkJaWYgKG5ld19jcnRjX3N0YXRlLT51 cGRhdGVfcGlwZSkKQEAgLTE0NzEzLDYgKzE0NzE4LDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfYXRv bWljX2NvbW1pdF90YWlsKHN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKnN0YXRlKQogCWZvcl9l YWNoX25ld19pbnRlbF9jcnRjX2luX3N0YXRlKHN0YXRlLCBjcnRjLCBuZXdfY3J0Y19zdGF0ZSwg aSkgewogCQlpZiAobmV3X2NydGNfc3RhdGUtPmJhc2UuYWN0aXZlICYmCiAJCSAgICAhbmVlZHNf bW9kZXNldChuZXdfY3J0Y19zdGF0ZSkgJiYKKwkJICAgICFuZXdfY3J0Y19zdGF0ZS0+cHJlbG9h ZF9sdXRzICYmCiAJCSAgICAobmV3X2NydGNfc3RhdGUtPmJhc2UuY29sb3JfbWdtdF9jaGFuZ2Vk IHx8CiAJCSAgICAgbmV3X2NydGNfc3RhdGUtPnVwZGF0ZV9waXBlKSkKIAkJCWludGVsX2NvbG9y X2xvYWRfbHV0cyhuZXdfY3J0Y19zdGF0ZSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfdHlwZXMuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV90eXBlcy5oCmluZGV4IDQwMTg0ZTgyM2M4NC4uYWUzMzIx MTVkYWVlIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rp c3BsYXlfdHlwZXMuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rp c3BsYXlfdHlwZXMuaApAQCAtNzc1LDYgKzc3NSw3IEBAIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRl IHsKIAlib29sIGRpc2FibGVfY3hzcjsKIAlib29sIHVwZGF0ZV93bV9wcmUsIHVwZGF0ZV93bV9w b3N0OyAvKiB3YXRlcm1hcmtzIGFyZSB1cGRhdGVkICovCiAJYm9vbCBmaWZvX2NoYW5nZWQ7IC8q IEZJRk8gc3BsaXQgaXMgY2hhbmdlZCAqLworCWJvb2wgcHJlbG9hZF9sdXRzOwogCiAJLyogUGlw ZSBzb3VyY2Ugc2l6ZSAoaWUuIHBhbmVsIGZpdHRlciBpbnB1dCBzaXplKQogCSAqIEFsbCBwbGFu ZXMgd2lsbCBiZSBwb3NpdGlvbmVkIGluc2lkZSB0aGlzIHNwYWNlLAotLSAKMi4yMy4wCgpfX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFp bGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5m cmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZng=