From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville Syrjala Subject: [PATCH 10/12] drm/i915: Refactor LUT read functions Date: Thu, 7 Nov 2019 17:17:23 +0200 Message-ID: <20191107151725.10507-11-ville.syrjala@linux.intel.com> References: <20191107151725.10507-1-ville.syrjala@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20191107151725.10507-1-ville.syrjala@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: intel-gfx@lists.freedesktop.org Cc: Swati Sharma , dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org RnJvbTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KCkV4 dHJhY3QgYWxsIHRoZSAnaHcgdmFsdWUgLT4gTFVUIGVudHJ5JyBzdHVmZiBpbnRvIHNtYWxsIGhl bHBlcnMKdG8gbWFrZSB0aGUgbWFpbiAncmVhZCBvdXQgdGhlIGVudGlyZSBMVVQnIGxvb3AgbGVz cyBib2dnZWQgZG93bgpieSBzdWNoIG11bmRhbmUgZGV0YWlscy4KClNpZ25lZC1vZmYtYnk6IFZp bGxlIFN5cmrDpGzDpCA8dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb20+Ci0tLQogZHJpdmVy cy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9jb2xvci5jIHwgMTI4ICsrKysrKysrKystLS0t LS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDY0IGluc2VydGlvbnMoKyksIDY0IGRlbGV0aW9ucygt KQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfY29sb3Iu YyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfY29sb3IuYwppbmRleCBkNmEy MGQ3NTIyYTkuLjRiMmJkNWFjMGU4ZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv ZGlzcGxheS9pbnRlbF9jb2xvci5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkv aW50ZWxfY29sb3IuYwpAQCAtMzY3LDYgKzM2NywxOSBAQCBzdGF0aWMgdm9pZCBjaHZfbG9hZF9j Z21fY3NjKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAogCUk5MTVfV1JJVEUoQ0dNX1BJUEVfQ1ND X0NPRUZGOChwaXBlKSwgY29lZmZzWzhdKTsKIH0KIAorLyogY29udmVydCBodyB2YWx1ZSB3aXRo IGdpdmVuIGJpdF9wcmVjaXNpb24gdG8gbHV0IHByb3BlcnR5IHZhbCAqLworc3RhdGljIHUzMiBp bnRlbF9jb2xvcl9sdXRfcGFjayh1MzIgdmFsLCBpbnQgYml0X3ByZWNpc2lvbikKK3sKKwl1MzIg bWF4ID0gMHhmZmZmID4+ICgxNiAtIGJpdF9wcmVjaXNpb24pOworCisJdmFsID0gY2xhbXBfdmFs KHZhbCwgMCwgbWF4KTsKKworCWlmIChiaXRfcHJlY2lzaW9uIDwgMTYpCisJCXZhbCA8PD0gMTYg LSBiaXRfcHJlY2lzaW9uOworCisJcmV0dXJuIHZhbDsKK30KKwogc3RhdGljIHUzMiBpOXh4X2x1 dF84KGNvbnN0IHN0cnVjdCBkcm1fY29sb3JfbHV0ICpjb2xvcikKIHsKIAlyZXR1cm4gZHJtX2Nv bG9yX2x1dF9leHRyYWN0KGNvbG9yLT5yZWQsIDgpIDw8IDE2IHwKQEAgLTM3NCw2ICszODcsMTMg QEAgc3RhdGljIHUzMiBpOXh4X2x1dF84KGNvbnN0IHN0cnVjdCBkcm1fY29sb3JfbHV0ICpjb2xv cikKIAkJZHJtX2NvbG9yX2x1dF9leHRyYWN0KGNvbG9yLT5ibHVlLCA4KTsKIH0KIAorc3RhdGlj IHZvaWQgaTl4eF9sdXRfOF9wYWNrKHN0cnVjdCBkcm1fY29sb3JfbHV0ICplbnRyeSwgdTMyIHZh bCkKK3sKKwllbnRyeS0+cmVkID0gaW50ZWxfY29sb3JfbHV0X3BhY2soUkVHX0ZJRUxEX0dFVChM R0NfUEFMRVRURV9SRURfTUFTSywgdmFsKSwgOCk7CisJZW50cnktPmdyZWVuID0gaW50ZWxfY29s b3JfbHV0X3BhY2soUkVHX0ZJRUxEX0dFVChMR0NfUEFMRVRURV9HUkVFTl9NQVNLLCB2YWwpLCA4 KTsKKwllbnRyeS0+Ymx1ZSA9IGludGVsX2NvbG9yX2x1dF9wYWNrKFJFR19GSUVMRF9HRVQoTEdD X1BBTEVUVEVfQkxVRV9NQVNLLCB2YWwpLCA4KTsKK30KKwogLyogaTk2NSsgIjEwLjYiIGJpdCBp bnRlcnBvbGF0ZWQgZm9ybWF0ICJldmVuIERXIiAobG93IDggYml0cykgKi8KIHN0YXRpYyB1MzIg aTk2NV9sdXRfMTBwNl9sZHcoY29uc3Qgc3RydWN0IGRybV9jb2xvcl9sdXQgKmNvbG9yKQogewpA QCAtMzkwLDYgKzQxMCwyMSBAQCBzdGF0aWMgdTMyIGk5NjVfbHV0XzEwcDZfdWR3KGNvbnN0IHN0 cnVjdCBkcm1fY29sb3JfbHV0ICpjb2xvcikKIAkJKGNvbG9yLT5ibHVlID4+IDgpOwogfQogCitz dGF0aWMgdm9pZCBpOTY1X2x1dF8xMHA2X3BhY2soc3RydWN0IGRybV9jb2xvcl9sdXQgKmVudHJ5 LCB1MzIgbGR3LCB1MzIgdWR3KQoreworCWVudHJ5LT5yZWQgPSBSRUdfRklFTERfR0VUKFBBTEVU VEVfUkVEX01BU0ssIHVkdykgPDwgOCB8CisJCVJFR19GSUVMRF9HRVQoUEFMRVRURV9SRURfTUFT SywgbGR3KTsKKwllbnRyeS0+Z3JlZW4gPSBSRUdfRklFTERfR0VUKFBBTEVUVEVfR1JFRU5fTUFT SywgdWR3KSA8PCA4IHwKKwkJUkVHX0ZJRUxEX0dFVChQQUxFVFRFX0dSRUVOX01BU0ssIGxkdyk7 CisJZW50cnktPmJsdWUgPSBSRUdfRklFTERfR0VUKFBBTEVUVEVfQkxVRV9NQVNLLCB1ZHcpIDw8 IDggfAorCQlSRUdfRklFTERfR0VUKFBBTEVUVEVfQkxVRV9NQVNLLCBsZHcpOworfQorCitzdGF0 aWMgdTE2IGk5NjVfbHV0XzExcDZfbWF4X3BhY2sodTMyIHZhbCkKK3sKKwlyZXR1cm4gUkVHX0ZJ RUxEX0dFVChQSVBFR0NNQVhfUkdCX01BU0ssIHZhbCk7Cit9CisKIHN0YXRpYyB1MzIgaWxrX2x1 dF8xMChjb25zdCBzdHJ1Y3QgZHJtX2NvbG9yX2x1dCAqY29sb3IpCiB7CiAJcmV0dXJuIGRybV9j b2xvcl9sdXRfZXh0cmFjdChjb2xvci0+cmVkLCAxMCkgPDwgMjAgfApAQCAtMzk3LDYgKzQzMiwx MyBAQCBzdGF0aWMgdTMyIGlsa19sdXRfMTAoY29uc3Qgc3RydWN0IGRybV9jb2xvcl9sdXQgKmNv bG9yKQogCQlkcm1fY29sb3JfbHV0X2V4dHJhY3QoY29sb3ItPmJsdWUsIDEwKTsKIH0KIAorc3Rh dGljIHZvaWQgaWxrX2x1dF8xMF9wYWNrKHN0cnVjdCBkcm1fY29sb3JfbHV0ICplbnRyeSwgdTMy IHZhbCkKK3sKKwllbnRyeS0+cmVkID0gaW50ZWxfY29sb3JfbHV0X3BhY2soUkVHX0ZJRUxEX0dF VChQUkVDX1BBTEVUVEVfUkVEX01BU0ssIHZhbCksIDEwKTsKKwllbnRyeS0+Z3JlZW4gPSBpbnRl bF9jb2xvcl9sdXRfcGFjayhSRUdfRklFTERfR0VUKFBSRUNfUEFMRVRURV9HUkVFTl9NQVNLLCB2 YWwpLCAxMCk7CisJZW50cnktPmJsdWUgPSBpbnRlbF9jb2xvcl9sdXRfcGFjayhSRUdfRklFTERf R0VUKFBSRUNfUEFMRVRURV9CTFVFX01BU0ssIHZhbCksIDEwKTsKK30KKwogc3RhdGljIHZvaWQg aTl4eF9jb2xvcl9jb21taXQoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3Rh dGUpCiB7CiAJc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRjKGNydGNfc3Rh dGUtPnVhcGkuY3J0Yyk7CkBAIC05NTMsNiArOTk1LDEzIEBAIHN0YXRpYyB1MzIgY2h2X2NnbV9k ZWdhbW1hX3Vkdyhjb25zdCBzdHJ1Y3QgZHJtX2NvbG9yX2x1dCAqY29sb3IpCiAJcmV0dXJuIGRy bV9jb2xvcl9sdXRfZXh0cmFjdChjb2xvci0+cmVkLCAxNCk7CiB9CiAKK3N0YXRpYyB2b2lkIGNo dl9jZ21fZ2FtbWFfcGFjayhzdHJ1Y3QgZHJtX2NvbG9yX2x1dCAqZW50cnksIHUzMiBsZHcsIHUz MiB1ZHcpCit7CisJZW50cnktPmdyZWVuID0gaW50ZWxfY29sb3JfbHV0X3BhY2soUkVHX0ZJRUxE X0dFVChDR01fUElQRV9HQU1NQV9HUkVFTl9NQVNLLCBsZHcpLCAxMCk7CisJZW50cnktPmJsdWUg PSBpbnRlbF9jb2xvcl9sdXRfcGFjayhSRUdfRklFTERfR0VUKENHTV9QSVBFX0dBTU1BX0JMVUVf TUFTSywgbGR3KSwgMTApOworCWVudHJ5LT5yZWQgPSBpbnRlbF9jb2xvcl9sdXRfcGFjayhSRUdf RklFTERfR0VUKENHTV9QSVBFX0dBTU1BX1JFRF9NQVNLLCB1ZHcpLCAxMCk7Cit9CisKIHN0YXRp YyB2b2lkIGNodl9sb2FkX2NnbV9kZWdhbW1hKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAogCQkJ CSBjb25zdCBzdHJ1Y3QgZHJtX3Byb3BlcnR5X2Jsb2IgKmJsb2IpCiB7CkBAIC0xNjQwLDE5ICsx Njg5LDYgQEAgYm9vbCBpbnRlbF9jb2xvcl9sdXRfZXF1YWwoc3RydWN0IGRybV9wcm9wZXJ0eV9i bG9iICpibG9iMSwKIAlyZXR1cm4gdHJ1ZTsKIH0KIAotLyogY29udmVydCBodyB2YWx1ZSB3aXRo IGdpdmVuIGJpdF9wcmVjaXNpb24gdG8gbHV0IHByb3BlcnR5IHZhbCAqLwotc3RhdGljIHUzMiBp bnRlbF9jb2xvcl9sdXRfcGFjayh1MzIgdmFsLCBpbnQgYml0X3ByZWNpc2lvbikKLXsKLQl1MzIg bWF4ID0gMHhmZmZmID4+ICgxNiAtIGJpdF9wcmVjaXNpb24pOwotCi0JdmFsID0gY2xhbXBfdmFs KHZhbCwgMCwgbWF4KTsKLQotCWlmIChiaXRfcHJlY2lzaW9uIDwgMTYpCi0JCXZhbCA8PD0gMTYg LSBiaXRfcHJlY2lzaW9uOwotCi0JcmV0dXJuIHZhbDsKLX0KLQogc3RhdGljIHN0cnVjdCBkcm1f cHJvcGVydHlfYmxvYiAqCiBpOXh4X3JlYWRfbHV0XzgoY29uc3Qgc3RydWN0IGludGVsX2NydGNf c3RhdGUgKmNydGNfc3RhdGUpCiB7CkBAIC0xNjc0LDEyICsxNzEwLDcgQEAgaTl4eF9yZWFkX2x1 dF84KGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQogCWZvciAoaSA9 IDA7IGkgPCBMRUdBQ1lfTFVUX0xFTkdUSDsgaSsrKSB7CiAJCXUzMiB2YWwgPSBJOTE1X1JFQUQo UEFMRVRURShwaXBlLCBpKSk7CiAKLQkJbHV0W2ldLnJlZCA9IGludGVsX2NvbG9yX2x1dF9wYWNr KFJFR19GSUVMRF9HRVQoCi0JCQkJCQkJTEdDX1BBTEVUVEVfUkVEX01BU0ssIHZhbCksIDgpOwot CQlsdXRbaV0uZ3JlZW4gPSBpbnRlbF9jb2xvcl9sdXRfcGFjayhSRUdfRklFTERfR0VUKAotCQkJ CQkJCSAgTEdDX1BBTEVUVEVfR1JFRU5fTUFTSywgdmFsKSwgOCk7Ci0JCWx1dFtpXS5ibHVlID0g aW50ZWxfY29sb3JfbHV0X3BhY2soUkVHX0ZJRUxEX0dFVCgKLQkJCQkJCQkgTEdDX1BBTEVUVEVf QkxVRV9NQVNLLCB2YWwpLCA4KTsKKwkJaTl4eF9sdXRfOF9wYWNrKCZsdXRbaV0sIHZhbCk7CiAJ fQogCiAJcmV0dXJuIGJsb2I7CkBAIC0xNzEyLDIzICsxNzQzLDE1IEBAIGk5NjVfcmVhZF9sdXRf MTBwNihjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKIAlsdXQgPSBi bG9iLT5kYXRhOwogCiAJZm9yIChpID0gMDsgaSA8IGx1dF9zaXplIC0gMTsgaSsrKSB7Ci0JCXUz MiB2YWwxID0gSTkxNV9SRUFEKFBBTEVUVEUocGlwZSwgMiAqIGkgKyAwKSk7Ci0JCXUzMiB2YWwy ID0gSTkxNV9SRUFEKFBBTEVUVEUocGlwZSwgMiAqIGkgKyAxKSk7Ci0KLQkJbHV0W2ldLnJlZCA9 IFJFR19GSUVMRF9HRVQoUEFMRVRURV9SRURfTUFTSywgdmFsMikgPDwgOCB8Ci0JCQkJCQkgUkVH X0ZJRUxEX0dFVChQQUxFVFRFX1JFRF9NQVNLLCB2YWwxKTsKLQkJbHV0W2ldLmdyZWVuID0gUkVH X0ZJRUxEX0dFVChQQUxFVFRFX0dSRUVOX01BU0ssIHZhbDIpIDw8IDggfAotCQkJCQkJICAgUkVH X0ZJRUxEX0dFVChQQUxFVFRFX0dSRUVOX01BU0ssIHZhbDEpOwotCQlsdXRbaV0uYmx1ZSA9IFJF R19GSUVMRF9HRVQoUEFMRVRURV9CTFVFX01BU0ssIHZhbDIpIDw8IDggfAotCQkJCQkJICBSRUdf RklFTERfR0VUKFBBTEVUVEVfQkxVRV9NQVNLLCB2YWwxKTsKKwkJdTMyIGxkdyA9IEk5MTVfUkVB RChQQUxFVFRFKHBpcGUsIDIgKiBpICsgMCkpOworCQl1MzIgdWR3ID0gSTkxNV9SRUFEKFBBTEVU VEUocGlwZSwgMiAqIGkgKyAxKSk7CisKKwkJaTk2NV9sdXRfMTBwNl9wYWNrKCZsdXRbaV0sIGxk dywgdWR3KTsKIAl9CiAKLQlsdXRbaV0ucmVkID0gUkVHX0ZJRUxEX0dFVChQSVBFR0NNQVhfUkdC X01BU0ssCi0JCQkJCSBJOTE1X1JFQUQoUElQRUdDTUFYKHBpcGUsIDApKSk7Ci0JbHV0W2ldLmdy ZWVuID0gUkVHX0ZJRUxEX0dFVChQSVBFR0NNQVhfUkdCX01BU0ssCi0JCQkJCSAgIEk5MTVfUkVB RChQSVBFR0NNQVgocGlwZSwgMSkpKTsKLQlsdXRbaV0uYmx1ZSA9IFJFR19GSUVMRF9HRVQoUElQ RUdDTUFYX1JHQl9NQVNLLAotCQkJCQkgIEk5MTVfUkVBRChQSVBFR0NNQVgocGlwZSwgMikpKTsK KwlsdXRbaV0ucmVkID0gaTk2NV9sdXRfMTFwNl9tYXhfcGFjayhJOTE1X1JFQUQoUElQRUdDTUFY KHBpcGUsIDApKSk7CisJbHV0W2ldLmdyZWVuID0gaTk2NV9sdXRfMTFwNl9tYXhfcGFjayhJOTE1 X1JFQUQoUElQRUdDTUFYKHBpcGUsIDEpKSk7CisJbHV0W2ldLmJsdWUgPSBpOTY1X2x1dF8xMXA2 X21heF9wYWNrKEk5MTVfUkVBRChQSVBFR0NNQVgocGlwZSwgMikpKTsKIAogCXJldHVybiBibG9i OwogfQpAQCAtMTc2MywxNyArMTc4NiwxMCBAQCBjaHZfcmVhZF9jZ21fZ2FtbWEoY29uc3Qgc3Ry dWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCiAJbHV0ID0gYmxvYi0+ZGF0YTsKIAog CWZvciAoaSA9IDA7IGkgPCBsdXRfc2l6ZTsgaSsrKSB7Ci0JCXUzMiB2YWw7Ci0KLQkJdmFsID0g STkxNV9SRUFEKENHTV9QSVBFX0dBTU1BKHBpcGUsIGksIDApKTsKLQkJbHV0W2ldLmdyZWVuID0g aW50ZWxfY29sb3JfbHV0X3BhY2soUkVHX0ZJRUxEX0dFVCgKLQkJCQkJCQkgIENHTV9QSVBFX0dB TU1BX0dSRUVOX01BU0ssIHZhbCksIDEwKTsKLQkJbHV0W2ldLmJsdWUgPSBpbnRlbF9jb2xvcl9s dXRfcGFjayhSRUdfRklFTERfR0VUKAotCQkJCQkJCSBDR01fUElQRV9HQU1NQV9CTFVFX01BU0ss IHZhbCksIDEwKTsKKwkJdTMyIGxkdyA9IEk5MTVfUkVBRChDR01fUElQRV9HQU1NQShwaXBlLCBp LCAwKSk7CisJCXUzMiB1ZHcgPSBJOTE1X1JFQUQoQ0dNX1BJUEVfR0FNTUEocGlwZSwgaSwgMSkp OwogCi0JCXZhbCA9IEk5MTVfUkVBRChDR01fUElQRV9HQU1NQShwaXBlLCBpLCAxKSk7Ci0JCWx1 dFtpXS5yZWQgPSBpbnRlbF9jb2xvcl9sdXRfcGFjayhSRUdfRklFTERfR0VUKAotCQkJCQkJCUNH TV9QSVBFX0dBTU1BX1JFRF9NQVNLLCB2YWwpLCAxMCk7CisJCWNodl9jZ21fZ2FtbWFfcGFjaygm bHV0W2ldLCBsZHcsIHVkdyk7CiAJfQogCiAJcmV0dXJuIGJsb2I7CkBAIC0xODA4LDEyICsxODI0 LDcgQEAgaWxrX3JlYWRfbHV0XzgoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNf c3RhdGUpCiAJZm9yIChpID0gMDsgaSA8IExFR0FDWV9MVVRfTEVOR1RIOyBpKyspIHsKIAkJdTMy IHZhbCA9IEk5MTVfUkVBRChMR0NfUEFMRVRURShwaXBlLCBpKSk7CiAKLQkJbHV0W2ldLnJlZCA9 IGludGVsX2NvbG9yX2x1dF9wYWNrKFJFR19GSUVMRF9HRVQoCi0JCQkJCQkJTEdDX1BBTEVUVEVf UkVEX01BU0ssIHZhbCksIDgpOwotCQlsdXRbaV0uZ3JlZW4gPSBpbnRlbF9jb2xvcl9sdXRfcGFj ayhSRUdfRklFTERfR0VUKAotCQkJCQkJCSAgTEdDX1BBTEVUVEVfR1JFRU5fTUFTSywgdmFsKSwg OCk7Ci0JCWx1dFtpXS5ibHVlID0gaW50ZWxfY29sb3JfbHV0X3BhY2soUkVHX0ZJRUxEX0dFVCgK LQkJCQkJCQkgTEdDX1BBTEVUVEVfQkxVRV9NQVNLLCB2YWwpLCA4KTsKKwkJaTl4eF9sdXRfOF9w YWNrKCZsdXRbaV0sIHZhbCk7CiAJfQogCiAJcmV0dXJuIGJsb2I7CkBAIC0xODQwLDEyICsxODUx LDcgQEAgaWxrX3JlYWRfbHV0XzEwKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRj X3N0YXRlKQogCWZvciAoaSA9IDA7IGkgPCBsdXRfc2l6ZTsgaSsrKSB7CiAJCXUzMiB2YWwgPSBJ OTE1X1JFQUQoUFJFQ19QQUxFVFRFKHBpcGUsIGkpKTsKIAotCQlsdXRbaV0ucmVkID0gaW50ZWxf Y29sb3JfbHV0X3BhY2soUkVHX0ZJRUxEX0dFVCgKLQkJCQkJCQlQUkVDX1BBTEVUVEVfUkVEX01B U0ssIHZhbCksIDEwKTsKLQkJbHV0W2ldLmdyZWVuID0gaW50ZWxfY29sb3JfbHV0X3BhY2soUkVH X0ZJRUxEX0dFVCgKLQkJCQkJCQkgIFBSRUNfUEFMRVRURV9HUkVFTl9NQVNLLCB2YWwpLCAxMCk7 Ci0JCWx1dFtpXS5ibHVlID0gaW50ZWxfY29sb3JfbHV0X3BhY2soUkVHX0ZJRUxEX0dFVCgKLQkJ CQkJCQkgUFJFQ19QQUxFVFRFX0JMVUVfTUFTSywgdmFsKSwgMTApOworCQlpbGtfbHV0XzEwX3Bh Y2soJmx1dFtpXSwgdmFsKTsKIAl9CiAKIAlyZXR1cm4gYmxvYjsKQEAgLTE4ODMsMTggKzE4ODks MTIgQEAgZ2xrX3JlYWRfbHV0XzEwKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRj X3N0YXRlLCB1MzIgcHJlY19pbmRleCkKIAogCWx1dCA9IGJsb2ItPmRhdGE7CiAKLQlJOTE1X1dS SVRFKFBSRUNfUEFMX0lOREVYKHBpcGUpLCBwcmVjX2luZGV4IHwKLQkJICAgUEFMX1BSRUNfQVVU T19JTkNSRU1FTlQpOworCUk5MTVfV1JJVEUoUFJFQ19QQUxfSU5ERVgocGlwZSksIHByZWNfaW5k ZXggfCBQQUxfUFJFQ19BVVRPX0lOQ1JFTUVOVCk7CiAKIAlmb3IgKGkgPSAwOyBpIDwgaHdfbHV0 X3NpemU7IGkrKykgewogCQl1MzIgdmFsID0gSTkxNV9SRUFEKFBSRUNfUEFMX0RBVEEocGlwZSkp OwogCi0JCWx1dFtpXS5yZWQgPSBpbnRlbF9jb2xvcl9sdXRfcGFjayhSRUdfRklFTERfR0VUKAot CQkJCQkJCVBSRUNfUEFMX0RBVEFfUkVEX01BU0ssIHZhbCksIDEwKTsKLQkJbHV0W2ldLmdyZWVu ID0gaW50ZWxfY29sb3JfbHV0X3BhY2soUkVHX0ZJRUxEX0dFVCgKLQkJCQkJCQlQUkVDX1BBTF9E QVRBX0dSRUVOX01BU0ssIHZhbCksIDEwKTsKLQkJbHV0W2ldLmJsdWUgPSBpbnRlbF9jb2xvcl9s dXRfcGFjayhSRUdfRklFTERfR0VUKAotCQkJCQkJCVBSRUNfUEFMX0RBVEFfQkxVRV9NQVNLLCB2 YWwpLCAxMCk7CisJCWlsa19sdXRfMTBfcGFjaygmbHV0W2ldLCB2YWwpOwogCX0KIAogCUk5MTVf V1JJVEUoUFJFQ19QQUxfSU5ERVgocGlwZSksIDApOwotLSAKMi4yMy4wCgpfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0 CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3Rv cC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWw= 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=-6.9 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, UNWANTED_LANGUAGE_BODY,URIBL_BLOCKED,USER_AGENT_GIT autolearn=unavailable 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 2F85EC43331 for ; Thu, 7 Nov 2019 15:18:11 +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 101BE21882 for ; Thu, 7 Nov 2019 15:18:11 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 101BE21882 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 E93596F6EE; Thu, 7 Nov 2019 15:18:09 +0000 (UTC) Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTPS id 088166F6ED; Thu, 7 Nov 2019 15:18:08 +0000 (UTC) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga003.fm.intel.com ([10.253.24.29]) by fmsmga102.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 07 Nov 2019 07:18:07 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.68,278,1569308400"; d="scan'208";a="230539157" Received: from stinkbox.fi.intel.com (HELO stinkbox) ([10.237.72.174]) by FMSMGA003.fm.intel.com with SMTP; 07 Nov 2019 07:18:05 -0800 Received: by stinkbox (sSMTP sendmail emulation); Thu, 07 Nov 2019 17:18:04 +0200 From: Ville Syrjala To: intel-gfx@lists.freedesktop.org Date: Thu, 7 Nov 2019 17:17:23 +0200 Message-Id: <20191107151725.10507-11-ville.syrjala@linux.intel.com> X-Mailer: git-send-email 2.23.0 In-Reply-To: <20191107151725.10507-1-ville.syrjala@linux.intel.com> References: <20191107151725.10507-1-ville.syrjala@linux.intel.com> MIME-Version: 1.0 Subject: [Intel-gfx] [PATCH 10/12] drm/i915: Refactor LUT read functions 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: , Cc: dri-devel@lists.freedesktop.org Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" Message-ID: <20191107151723.j4ICPeM1Y9Gzgk21GLZ__ZdmKbxMLUMVqe1WxYlq1xI@z> RnJvbTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KCkV4 dHJhY3QgYWxsIHRoZSAnaHcgdmFsdWUgLT4gTFVUIGVudHJ5JyBzdHVmZiBpbnRvIHNtYWxsIGhl bHBlcnMKdG8gbWFrZSB0aGUgbWFpbiAncmVhZCBvdXQgdGhlIGVudGlyZSBMVVQnIGxvb3AgbGVz cyBib2dnZWQgZG93bgpieSBzdWNoIG11bmRhbmUgZGV0YWlscy4KClNpZ25lZC1vZmYtYnk6IFZp bGxlIFN5cmrDpGzDpCA8dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb20+Ci0tLQogZHJpdmVy cy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9jb2xvci5jIHwgMTI4ICsrKysrKysrKystLS0t LS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDY0IGluc2VydGlvbnMoKyksIDY0IGRlbGV0aW9ucygt KQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfY29sb3Iu YyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfY29sb3IuYwppbmRleCBkNmEy MGQ3NTIyYTkuLjRiMmJkNWFjMGU4ZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv ZGlzcGxheS9pbnRlbF9jb2xvci5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkv aW50ZWxfY29sb3IuYwpAQCAtMzY3LDYgKzM2NywxOSBAQCBzdGF0aWMgdm9pZCBjaHZfbG9hZF9j Z21fY3NjKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAogCUk5MTVfV1JJVEUoQ0dNX1BJUEVfQ1ND X0NPRUZGOChwaXBlKSwgY29lZmZzWzhdKTsKIH0KIAorLyogY29udmVydCBodyB2YWx1ZSB3aXRo IGdpdmVuIGJpdF9wcmVjaXNpb24gdG8gbHV0IHByb3BlcnR5IHZhbCAqLworc3RhdGljIHUzMiBp bnRlbF9jb2xvcl9sdXRfcGFjayh1MzIgdmFsLCBpbnQgYml0X3ByZWNpc2lvbikKK3sKKwl1MzIg bWF4ID0gMHhmZmZmID4+ICgxNiAtIGJpdF9wcmVjaXNpb24pOworCisJdmFsID0gY2xhbXBfdmFs KHZhbCwgMCwgbWF4KTsKKworCWlmIChiaXRfcHJlY2lzaW9uIDwgMTYpCisJCXZhbCA8PD0gMTYg LSBiaXRfcHJlY2lzaW9uOworCisJcmV0dXJuIHZhbDsKK30KKwogc3RhdGljIHUzMiBpOXh4X2x1 dF84KGNvbnN0IHN0cnVjdCBkcm1fY29sb3JfbHV0ICpjb2xvcikKIHsKIAlyZXR1cm4gZHJtX2Nv bG9yX2x1dF9leHRyYWN0KGNvbG9yLT5yZWQsIDgpIDw8IDE2IHwKQEAgLTM3NCw2ICszODcsMTMg QEAgc3RhdGljIHUzMiBpOXh4X2x1dF84KGNvbnN0IHN0cnVjdCBkcm1fY29sb3JfbHV0ICpjb2xv cikKIAkJZHJtX2NvbG9yX2x1dF9leHRyYWN0KGNvbG9yLT5ibHVlLCA4KTsKIH0KIAorc3RhdGlj IHZvaWQgaTl4eF9sdXRfOF9wYWNrKHN0cnVjdCBkcm1fY29sb3JfbHV0ICplbnRyeSwgdTMyIHZh bCkKK3sKKwllbnRyeS0+cmVkID0gaW50ZWxfY29sb3JfbHV0X3BhY2soUkVHX0ZJRUxEX0dFVChM R0NfUEFMRVRURV9SRURfTUFTSywgdmFsKSwgOCk7CisJZW50cnktPmdyZWVuID0gaW50ZWxfY29s b3JfbHV0X3BhY2soUkVHX0ZJRUxEX0dFVChMR0NfUEFMRVRURV9HUkVFTl9NQVNLLCB2YWwpLCA4 KTsKKwllbnRyeS0+Ymx1ZSA9IGludGVsX2NvbG9yX2x1dF9wYWNrKFJFR19GSUVMRF9HRVQoTEdD X1BBTEVUVEVfQkxVRV9NQVNLLCB2YWwpLCA4KTsKK30KKwogLyogaTk2NSsgIjEwLjYiIGJpdCBp bnRlcnBvbGF0ZWQgZm9ybWF0ICJldmVuIERXIiAobG93IDggYml0cykgKi8KIHN0YXRpYyB1MzIg aTk2NV9sdXRfMTBwNl9sZHcoY29uc3Qgc3RydWN0IGRybV9jb2xvcl9sdXQgKmNvbG9yKQogewpA QCAtMzkwLDYgKzQxMCwyMSBAQCBzdGF0aWMgdTMyIGk5NjVfbHV0XzEwcDZfdWR3KGNvbnN0IHN0 cnVjdCBkcm1fY29sb3JfbHV0ICpjb2xvcikKIAkJKGNvbG9yLT5ibHVlID4+IDgpOwogfQogCitz dGF0aWMgdm9pZCBpOTY1X2x1dF8xMHA2X3BhY2soc3RydWN0IGRybV9jb2xvcl9sdXQgKmVudHJ5 LCB1MzIgbGR3LCB1MzIgdWR3KQoreworCWVudHJ5LT5yZWQgPSBSRUdfRklFTERfR0VUKFBBTEVU VEVfUkVEX01BU0ssIHVkdykgPDwgOCB8CisJCVJFR19GSUVMRF9HRVQoUEFMRVRURV9SRURfTUFT SywgbGR3KTsKKwllbnRyeS0+Z3JlZW4gPSBSRUdfRklFTERfR0VUKFBBTEVUVEVfR1JFRU5fTUFT SywgdWR3KSA8PCA4IHwKKwkJUkVHX0ZJRUxEX0dFVChQQUxFVFRFX0dSRUVOX01BU0ssIGxkdyk7 CisJZW50cnktPmJsdWUgPSBSRUdfRklFTERfR0VUKFBBTEVUVEVfQkxVRV9NQVNLLCB1ZHcpIDw8 IDggfAorCQlSRUdfRklFTERfR0VUKFBBTEVUVEVfQkxVRV9NQVNLLCBsZHcpOworfQorCitzdGF0 aWMgdTE2IGk5NjVfbHV0XzExcDZfbWF4X3BhY2sodTMyIHZhbCkKK3sKKwlyZXR1cm4gUkVHX0ZJ RUxEX0dFVChQSVBFR0NNQVhfUkdCX01BU0ssIHZhbCk7Cit9CisKIHN0YXRpYyB1MzIgaWxrX2x1 dF8xMChjb25zdCBzdHJ1Y3QgZHJtX2NvbG9yX2x1dCAqY29sb3IpCiB7CiAJcmV0dXJuIGRybV9j b2xvcl9sdXRfZXh0cmFjdChjb2xvci0+cmVkLCAxMCkgPDwgMjAgfApAQCAtMzk3LDYgKzQzMiwx MyBAQCBzdGF0aWMgdTMyIGlsa19sdXRfMTAoY29uc3Qgc3RydWN0IGRybV9jb2xvcl9sdXQgKmNv bG9yKQogCQlkcm1fY29sb3JfbHV0X2V4dHJhY3QoY29sb3ItPmJsdWUsIDEwKTsKIH0KIAorc3Rh dGljIHZvaWQgaWxrX2x1dF8xMF9wYWNrKHN0cnVjdCBkcm1fY29sb3JfbHV0ICplbnRyeSwgdTMy IHZhbCkKK3sKKwllbnRyeS0+cmVkID0gaW50ZWxfY29sb3JfbHV0X3BhY2soUkVHX0ZJRUxEX0dF VChQUkVDX1BBTEVUVEVfUkVEX01BU0ssIHZhbCksIDEwKTsKKwllbnRyeS0+Z3JlZW4gPSBpbnRl bF9jb2xvcl9sdXRfcGFjayhSRUdfRklFTERfR0VUKFBSRUNfUEFMRVRURV9HUkVFTl9NQVNLLCB2 YWwpLCAxMCk7CisJZW50cnktPmJsdWUgPSBpbnRlbF9jb2xvcl9sdXRfcGFjayhSRUdfRklFTERf R0VUKFBSRUNfUEFMRVRURV9CTFVFX01BU0ssIHZhbCksIDEwKTsKK30KKwogc3RhdGljIHZvaWQg aTl4eF9jb2xvcl9jb21taXQoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3Rh dGUpCiB7CiAJc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRjKGNydGNfc3Rh dGUtPnVhcGkuY3J0Yyk7CkBAIC05NTMsNiArOTk1LDEzIEBAIHN0YXRpYyB1MzIgY2h2X2NnbV9k ZWdhbW1hX3Vkdyhjb25zdCBzdHJ1Y3QgZHJtX2NvbG9yX2x1dCAqY29sb3IpCiAJcmV0dXJuIGRy bV9jb2xvcl9sdXRfZXh0cmFjdChjb2xvci0+cmVkLCAxNCk7CiB9CiAKK3N0YXRpYyB2b2lkIGNo dl9jZ21fZ2FtbWFfcGFjayhzdHJ1Y3QgZHJtX2NvbG9yX2x1dCAqZW50cnksIHUzMiBsZHcsIHUz MiB1ZHcpCit7CisJZW50cnktPmdyZWVuID0gaW50ZWxfY29sb3JfbHV0X3BhY2soUkVHX0ZJRUxE X0dFVChDR01fUElQRV9HQU1NQV9HUkVFTl9NQVNLLCBsZHcpLCAxMCk7CisJZW50cnktPmJsdWUg PSBpbnRlbF9jb2xvcl9sdXRfcGFjayhSRUdfRklFTERfR0VUKENHTV9QSVBFX0dBTU1BX0JMVUVf TUFTSywgbGR3KSwgMTApOworCWVudHJ5LT5yZWQgPSBpbnRlbF9jb2xvcl9sdXRfcGFjayhSRUdf RklFTERfR0VUKENHTV9QSVBFX0dBTU1BX1JFRF9NQVNLLCB1ZHcpLCAxMCk7Cit9CisKIHN0YXRp YyB2b2lkIGNodl9sb2FkX2NnbV9kZWdhbW1hKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAogCQkJ CSBjb25zdCBzdHJ1Y3QgZHJtX3Byb3BlcnR5X2Jsb2IgKmJsb2IpCiB7CkBAIC0xNjQwLDE5ICsx Njg5LDYgQEAgYm9vbCBpbnRlbF9jb2xvcl9sdXRfZXF1YWwoc3RydWN0IGRybV9wcm9wZXJ0eV9i bG9iICpibG9iMSwKIAlyZXR1cm4gdHJ1ZTsKIH0KIAotLyogY29udmVydCBodyB2YWx1ZSB3aXRo IGdpdmVuIGJpdF9wcmVjaXNpb24gdG8gbHV0IHByb3BlcnR5IHZhbCAqLwotc3RhdGljIHUzMiBp bnRlbF9jb2xvcl9sdXRfcGFjayh1MzIgdmFsLCBpbnQgYml0X3ByZWNpc2lvbikKLXsKLQl1MzIg bWF4ID0gMHhmZmZmID4+ICgxNiAtIGJpdF9wcmVjaXNpb24pOwotCi0JdmFsID0gY2xhbXBfdmFs KHZhbCwgMCwgbWF4KTsKLQotCWlmIChiaXRfcHJlY2lzaW9uIDwgMTYpCi0JCXZhbCA8PD0gMTYg LSBiaXRfcHJlY2lzaW9uOwotCi0JcmV0dXJuIHZhbDsKLX0KLQogc3RhdGljIHN0cnVjdCBkcm1f cHJvcGVydHlfYmxvYiAqCiBpOXh4X3JlYWRfbHV0XzgoY29uc3Qgc3RydWN0IGludGVsX2NydGNf c3RhdGUgKmNydGNfc3RhdGUpCiB7CkBAIC0xNjc0LDEyICsxNzEwLDcgQEAgaTl4eF9yZWFkX2x1 dF84KGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQogCWZvciAoaSA9 IDA7IGkgPCBMRUdBQ1lfTFVUX0xFTkdUSDsgaSsrKSB7CiAJCXUzMiB2YWwgPSBJOTE1X1JFQUQo UEFMRVRURShwaXBlLCBpKSk7CiAKLQkJbHV0W2ldLnJlZCA9IGludGVsX2NvbG9yX2x1dF9wYWNr KFJFR19GSUVMRF9HRVQoCi0JCQkJCQkJTEdDX1BBTEVUVEVfUkVEX01BU0ssIHZhbCksIDgpOwot CQlsdXRbaV0uZ3JlZW4gPSBpbnRlbF9jb2xvcl9sdXRfcGFjayhSRUdfRklFTERfR0VUKAotCQkJ CQkJCSAgTEdDX1BBTEVUVEVfR1JFRU5fTUFTSywgdmFsKSwgOCk7Ci0JCWx1dFtpXS5ibHVlID0g aW50ZWxfY29sb3JfbHV0X3BhY2soUkVHX0ZJRUxEX0dFVCgKLQkJCQkJCQkgTEdDX1BBTEVUVEVf QkxVRV9NQVNLLCB2YWwpLCA4KTsKKwkJaTl4eF9sdXRfOF9wYWNrKCZsdXRbaV0sIHZhbCk7CiAJ fQogCiAJcmV0dXJuIGJsb2I7CkBAIC0xNzEyLDIzICsxNzQzLDE1IEBAIGk5NjVfcmVhZF9sdXRf MTBwNihjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKIAlsdXQgPSBi bG9iLT5kYXRhOwogCiAJZm9yIChpID0gMDsgaSA8IGx1dF9zaXplIC0gMTsgaSsrKSB7Ci0JCXUz MiB2YWwxID0gSTkxNV9SRUFEKFBBTEVUVEUocGlwZSwgMiAqIGkgKyAwKSk7Ci0JCXUzMiB2YWwy ID0gSTkxNV9SRUFEKFBBTEVUVEUocGlwZSwgMiAqIGkgKyAxKSk7Ci0KLQkJbHV0W2ldLnJlZCA9 IFJFR19GSUVMRF9HRVQoUEFMRVRURV9SRURfTUFTSywgdmFsMikgPDwgOCB8Ci0JCQkJCQkgUkVH X0ZJRUxEX0dFVChQQUxFVFRFX1JFRF9NQVNLLCB2YWwxKTsKLQkJbHV0W2ldLmdyZWVuID0gUkVH X0ZJRUxEX0dFVChQQUxFVFRFX0dSRUVOX01BU0ssIHZhbDIpIDw8IDggfAotCQkJCQkJICAgUkVH X0ZJRUxEX0dFVChQQUxFVFRFX0dSRUVOX01BU0ssIHZhbDEpOwotCQlsdXRbaV0uYmx1ZSA9IFJF R19GSUVMRF9HRVQoUEFMRVRURV9CTFVFX01BU0ssIHZhbDIpIDw8IDggfAotCQkJCQkJICBSRUdf RklFTERfR0VUKFBBTEVUVEVfQkxVRV9NQVNLLCB2YWwxKTsKKwkJdTMyIGxkdyA9IEk5MTVfUkVB RChQQUxFVFRFKHBpcGUsIDIgKiBpICsgMCkpOworCQl1MzIgdWR3ID0gSTkxNV9SRUFEKFBBTEVU VEUocGlwZSwgMiAqIGkgKyAxKSk7CisKKwkJaTk2NV9sdXRfMTBwNl9wYWNrKCZsdXRbaV0sIGxk dywgdWR3KTsKIAl9CiAKLQlsdXRbaV0ucmVkID0gUkVHX0ZJRUxEX0dFVChQSVBFR0NNQVhfUkdC X01BU0ssCi0JCQkJCSBJOTE1X1JFQUQoUElQRUdDTUFYKHBpcGUsIDApKSk7Ci0JbHV0W2ldLmdy ZWVuID0gUkVHX0ZJRUxEX0dFVChQSVBFR0NNQVhfUkdCX01BU0ssCi0JCQkJCSAgIEk5MTVfUkVB RChQSVBFR0NNQVgocGlwZSwgMSkpKTsKLQlsdXRbaV0uYmx1ZSA9IFJFR19GSUVMRF9HRVQoUElQ RUdDTUFYX1JHQl9NQVNLLAotCQkJCQkgIEk5MTVfUkVBRChQSVBFR0NNQVgocGlwZSwgMikpKTsK KwlsdXRbaV0ucmVkID0gaTk2NV9sdXRfMTFwNl9tYXhfcGFjayhJOTE1X1JFQUQoUElQRUdDTUFY KHBpcGUsIDApKSk7CisJbHV0W2ldLmdyZWVuID0gaTk2NV9sdXRfMTFwNl9tYXhfcGFjayhJOTE1 X1JFQUQoUElQRUdDTUFYKHBpcGUsIDEpKSk7CisJbHV0W2ldLmJsdWUgPSBpOTY1X2x1dF8xMXA2 X21heF9wYWNrKEk5MTVfUkVBRChQSVBFR0NNQVgocGlwZSwgMikpKTsKIAogCXJldHVybiBibG9i OwogfQpAQCAtMTc2MywxNyArMTc4NiwxMCBAQCBjaHZfcmVhZF9jZ21fZ2FtbWEoY29uc3Qgc3Ry dWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCiAJbHV0ID0gYmxvYi0+ZGF0YTsKIAog CWZvciAoaSA9IDA7IGkgPCBsdXRfc2l6ZTsgaSsrKSB7Ci0JCXUzMiB2YWw7Ci0KLQkJdmFsID0g STkxNV9SRUFEKENHTV9QSVBFX0dBTU1BKHBpcGUsIGksIDApKTsKLQkJbHV0W2ldLmdyZWVuID0g aW50ZWxfY29sb3JfbHV0X3BhY2soUkVHX0ZJRUxEX0dFVCgKLQkJCQkJCQkgIENHTV9QSVBFX0dB TU1BX0dSRUVOX01BU0ssIHZhbCksIDEwKTsKLQkJbHV0W2ldLmJsdWUgPSBpbnRlbF9jb2xvcl9s dXRfcGFjayhSRUdfRklFTERfR0VUKAotCQkJCQkJCSBDR01fUElQRV9HQU1NQV9CTFVFX01BU0ss IHZhbCksIDEwKTsKKwkJdTMyIGxkdyA9IEk5MTVfUkVBRChDR01fUElQRV9HQU1NQShwaXBlLCBp LCAwKSk7CisJCXUzMiB1ZHcgPSBJOTE1X1JFQUQoQ0dNX1BJUEVfR0FNTUEocGlwZSwgaSwgMSkp OwogCi0JCXZhbCA9IEk5MTVfUkVBRChDR01fUElQRV9HQU1NQShwaXBlLCBpLCAxKSk7Ci0JCWx1 dFtpXS5yZWQgPSBpbnRlbF9jb2xvcl9sdXRfcGFjayhSRUdfRklFTERfR0VUKAotCQkJCQkJCUNH TV9QSVBFX0dBTU1BX1JFRF9NQVNLLCB2YWwpLCAxMCk7CisJCWNodl9jZ21fZ2FtbWFfcGFjaygm bHV0W2ldLCBsZHcsIHVkdyk7CiAJfQogCiAJcmV0dXJuIGJsb2I7CkBAIC0xODA4LDEyICsxODI0 LDcgQEAgaWxrX3JlYWRfbHV0XzgoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNf c3RhdGUpCiAJZm9yIChpID0gMDsgaSA8IExFR0FDWV9MVVRfTEVOR1RIOyBpKyspIHsKIAkJdTMy IHZhbCA9IEk5MTVfUkVBRChMR0NfUEFMRVRURShwaXBlLCBpKSk7CiAKLQkJbHV0W2ldLnJlZCA9 IGludGVsX2NvbG9yX2x1dF9wYWNrKFJFR19GSUVMRF9HRVQoCi0JCQkJCQkJTEdDX1BBTEVUVEVf UkVEX01BU0ssIHZhbCksIDgpOwotCQlsdXRbaV0uZ3JlZW4gPSBpbnRlbF9jb2xvcl9sdXRfcGFj ayhSRUdfRklFTERfR0VUKAotCQkJCQkJCSAgTEdDX1BBTEVUVEVfR1JFRU5fTUFTSywgdmFsKSwg OCk7Ci0JCWx1dFtpXS5ibHVlID0gaW50ZWxfY29sb3JfbHV0X3BhY2soUkVHX0ZJRUxEX0dFVCgK LQkJCQkJCQkgTEdDX1BBTEVUVEVfQkxVRV9NQVNLLCB2YWwpLCA4KTsKKwkJaTl4eF9sdXRfOF9w YWNrKCZsdXRbaV0sIHZhbCk7CiAJfQogCiAJcmV0dXJuIGJsb2I7CkBAIC0xODQwLDEyICsxODUx LDcgQEAgaWxrX3JlYWRfbHV0XzEwKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRj X3N0YXRlKQogCWZvciAoaSA9IDA7IGkgPCBsdXRfc2l6ZTsgaSsrKSB7CiAJCXUzMiB2YWwgPSBJ OTE1X1JFQUQoUFJFQ19QQUxFVFRFKHBpcGUsIGkpKTsKIAotCQlsdXRbaV0ucmVkID0gaW50ZWxf Y29sb3JfbHV0X3BhY2soUkVHX0ZJRUxEX0dFVCgKLQkJCQkJCQlQUkVDX1BBTEVUVEVfUkVEX01B U0ssIHZhbCksIDEwKTsKLQkJbHV0W2ldLmdyZWVuID0gaW50ZWxfY29sb3JfbHV0X3BhY2soUkVH X0ZJRUxEX0dFVCgKLQkJCQkJCQkgIFBSRUNfUEFMRVRURV9HUkVFTl9NQVNLLCB2YWwpLCAxMCk7 Ci0JCWx1dFtpXS5ibHVlID0gaW50ZWxfY29sb3JfbHV0X3BhY2soUkVHX0ZJRUxEX0dFVCgKLQkJ CQkJCQkgUFJFQ19QQUxFVFRFX0JMVUVfTUFTSywgdmFsKSwgMTApOworCQlpbGtfbHV0XzEwX3Bh Y2soJmx1dFtpXSwgdmFsKTsKIAl9CiAKIAlyZXR1cm4gYmxvYjsKQEAgLTE4ODMsMTggKzE4ODks MTIgQEAgZ2xrX3JlYWRfbHV0XzEwKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRj X3N0YXRlLCB1MzIgcHJlY19pbmRleCkKIAogCWx1dCA9IGJsb2ItPmRhdGE7CiAKLQlJOTE1X1dS SVRFKFBSRUNfUEFMX0lOREVYKHBpcGUpLCBwcmVjX2luZGV4IHwKLQkJICAgUEFMX1BSRUNfQVVU T19JTkNSRU1FTlQpOworCUk5MTVfV1JJVEUoUFJFQ19QQUxfSU5ERVgocGlwZSksIHByZWNfaW5k ZXggfCBQQUxfUFJFQ19BVVRPX0lOQ1JFTUVOVCk7CiAKIAlmb3IgKGkgPSAwOyBpIDwgaHdfbHV0 X3NpemU7IGkrKykgewogCQl1MzIgdmFsID0gSTkxNV9SRUFEKFBSRUNfUEFMX0RBVEEocGlwZSkp OwogCi0JCWx1dFtpXS5yZWQgPSBpbnRlbF9jb2xvcl9sdXRfcGFjayhSRUdfRklFTERfR0VUKAot CQkJCQkJCVBSRUNfUEFMX0RBVEFfUkVEX01BU0ssIHZhbCksIDEwKTsKLQkJbHV0W2ldLmdyZWVu ID0gaW50ZWxfY29sb3JfbHV0X3BhY2soUkVHX0ZJRUxEX0dFVCgKLQkJCQkJCQlQUkVDX1BBTF9E QVRBX0dSRUVOX01BU0ssIHZhbCksIDEwKTsKLQkJbHV0W2ldLmJsdWUgPSBpbnRlbF9jb2xvcl9s dXRfcGFjayhSRUdfRklFTERfR0VUKAotCQkJCQkJCVBSRUNfUEFMX0RBVEFfQkxVRV9NQVNLLCB2 YWwpLCAxMCk7CisJCWlsa19sdXRfMTBfcGFjaygmbHV0W2ldLCB2YWwpOwogCX0KIAogCUk5MTVf V1JJVEUoUFJFQ19QQUxfSU5ERVgocGlwZSksIDApOwotLSAKMi4yMy4wCgpfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0 CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3Rv cC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZng=