From mboxrd@z Thu Jan 1 00:00:00 1970 From: Uma Shankar Subject: [v11 04/12] drm: Enable HDR infoframe support Date: Thu, 16 May 2019 19:40:09 +0530 Message-ID: <1558015817-12025-5-git-send-email-uma.shankar@intel.com> References: <1558015817-12025-1-git-send-email-uma.shankar@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1558015817-12025-1-git-send-email-uma.shankar@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, dri-devel@lists.freedesktop.org Cc: dcastagna@chromium.org, jonas@kwiboo.se, emil.l.velikov@gmail.com, Uma Shankar , seanpaul@chromium.org List-Id: dri-devel@lists.freedesktop.org RW5hYmxlIER5bmFtaWMgUmFuZ2UgYW5kIE1hc3RlcmluZyBJbmZvZnJhbWUgZm9yIEhEUgpjb250 ZW50LCB3aGljaCBpcyBkZWZpbmVkIGluIENFQSA4NjEuMyBzcGVjLgoKVGhlIG1ldGFkYXRhIHdp bGwgYmUgY29tcHV0ZWQgYmFzZWQgb24gYmxlbmRpbmcKcG9saWN5IGluIHVzZXJzcGFjZSBjb21w b3NpdG9ycyBhbmQgcGFzc2VkIGFzIGEgY29ubmVjdG9yCnByb3BlcnR5IGJsb2IgdG8gZHJpdmVy LiBUaGUgc2FtZSB3aWxsIGJlIHNlbnQgYXMgaW5mb2ZyYW1lCnRvIHBhbmVsIHdoaWNoIHN1cHBv cnQgSERSLgoKQWRkZWQgdGhlIGNvbnN0IHZlcnNpb24gb2YgaW5mb2ZyYW1lIGZvciBEUk0gbWV0 YWRhdGEKZm9yIEhEUi4KCnYyOiBSZWJhc2UgYW5kIGFkZGVkIFZpbGxlJ3MgUE9DIGNoYW5nZXMu Cgp2MzogTm8gQ2hhbmdlCgp2NDogQWRkcmVzc2VkIFNoYXNoYW5rJ3MgcmV2aWV3IGNvbW1lbnRz IGFuZCBtZXJnZWQgdGhlCnBhdGNoIG1ha2luZyBkcm0gaW5mb2ZyYW1lIGZ1bmN0aW9uIGFyZ3Vt ZW50cyBhcyBjb25zdGFudC4KCnY1OiBSZWJhc2UKCnY2OiBGaXhlZCBjaGVja3BhdGNoIHdhcm5p bmdzIHdpdGggLS1zdHJpY3Qgb3B0aW9uLiBBZGRyZXNzZWQKU2hhc2hhbmsncyByZXZpZXcgY29t bWVudHMgYW5kIGFkZGVkIGhpcyBSQi4KCnY3OiBBZGRyZXNzZWQgQnJpYW4gU3RhcmtleSdzIHJl dmlldyBjb21tZW50cy4gTWVyZ2VkIDIgcGF0Y2hlcwppbnRvIG9uZS4KCnY4OiBBZGRyZXNzZWQg Sm9uYXMgS2FybG1hbiByZXZpZXcgY29tbWVudHMuCgp2OTogQWRkcmVzc2VkIEpvbmFzIEthcmxt YW4gcmV2aWV3IGNvbW1lbnRzLgoKdjEwOiBBZGRyZXNzZWQgVmlsbGUncyByZXZpZXcgY29tbWVu dHMuCgp2MTE6IEFkZGVkIEJVSUxEX0JVR19PTiBhbmQgc2l6ZW9mIGluc3RlYWQgb2YgbWFnaWMg bnVtYmVycyBhcwpwZXIgVmlsbGUncyBjb21tZW50cy4KClNpZ25lZC1vZmYtYnk6IFVtYSBTaGFu a2FyIDx1bWEuc2hhbmthckBpbnRlbC5jb20+ClNpZ25lZC1vZmYtYnk6IFZpbGxlIFN5cmrDpGzD pCA8dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb20+ClJldmlld2VkLWJ5OiBTaGFzaGFuayBT aGFybWEgPHNoYXNoYW5rLnNoYXJtYUBpbnRlbC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2Ry bV9lZGlkLmMgfCAgNzIgKysrKysrKysrKysrKysrKysKIGRyaXZlcnMvdmlkZW8vaGRtaS5jICAg ICAgIHwgMTkwICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwog aW5jbHVkZS9kcm0vZHJtX2VkaWQuaCAgICAgfCAgIDUgKysKIGluY2x1ZGUvbGludXgvaGRtaS5o ICAgICAgIHwgIDI4ICsrKysrKysKIDQgZmlsZXMgY2hhbmdlZCwgMjk1IGluc2VydGlvbnMoKykK CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2VkaWQuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9kcm1fZWRpZC5jCmluZGV4IGE1ZWY5ZjQuLjczNTYwYzkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv Z3B1L2RybS9kcm1fZWRpZC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fZWRpZC5jCkBAIC00 OTA0LDYgKzQ5MDQsNzggQEAgc3RhdGljIGJvb2wgaXNfaGRtaTJfc2luayhzdHJ1Y3QgZHJtX2Nv bm5lY3RvciAqY29ubmVjdG9yKQogCQljb25uZWN0b3ItPmRpc3BsYXlfaW5mby5jb2xvcl9mb3Jt YXRzICYgRFJNX0NPTE9SX0ZPUk1BVF9ZQ1JDQjQyMDsKIH0KIAorc3RhdGljIGlubGluZSBib29s IGlzX2VvdGZfc3VwcG9ydGVkKHU4IG91dHB1dF9lb3RmLCB1OCBzaW5rX2VvdGYpCit7CisJcmV0 dXJuIHNpbmtfZW90ZiAmIEJJVChvdXRwdXRfZW90Zik7Cit9CisKKy8qKgorICogZHJtX2hkbWlf aW5mb2ZyYW1lX3NldF9oZHJfbWV0YWRhdGEoKSAtIGZpbGwgYW4gSERNSSBEUk0gaW5mb2ZyYW1l IHdpdGgKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIRFIgbWV0 YWRhdGEgZnJvbSB1c2Vyc3BhY2UKKyAqIEBmcmFtZTogSERNSSBEUk0gaW5mb2ZyYW1lCisgKiBA aGRyX21ldGFkYXRhOiBoZHJfc291cmNlX21ldGFkYXRhIGluZm8gZnJvbSB1c2Vyc3BhY2UKKyAq CisgKiBSZXR1cm46IDAgb24gc3VjY2VzcyBvciBhIG5lZ2F0aXZlIGVycm9yIGNvZGUgb24gZmFp bHVyZS4KKyAqLworaW50Citkcm1faGRtaV9pbmZvZnJhbWVfc2V0X2hkcl9tZXRhZGF0YShzdHJ1 Y3QgaGRtaV9kcm1faW5mb2ZyYW1lICpmcmFtZSwKKwkJCQkgICAgY29uc3Qgc3RydWN0IGRybV9j b25uZWN0b3Jfc3RhdGUgKmNvbm5fc3RhdGUpCit7CisJc3RydWN0IGRybV9jb25uZWN0b3IgKmNv bm5lY3RvcjsKKwlzdHJ1Y3QgaGRyX291dHB1dF9tZXRhZGF0YSAqaGRyX21ldGFkYXRhOworCWlu dCBlcnI7CisKKwlpZiAoIWZyYW1lIHx8ICFjb25uX3N0YXRlKQorCQlyZXR1cm4gLUVJTlZBTDsK KworCWNvbm5lY3RvciA9IGNvbm5fc3RhdGUtPmNvbm5lY3RvcjsKKworCWlmICghY29ubl9zdGF0 ZS0+aGRyX291dHB1dF9tZXRhZGF0YSkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwloZHJfbWV0YWRh dGEgPSBjb25uX3N0YXRlLT5oZHJfb3V0cHV0X21ldGFkYXRhLT5kYXRhOworCisJaWYgKCFoZHJf bWV0YWRhdGEgfHwgIWNvbm5lY3RvcikKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwkvKiBTaW5rIEVP VEYgaXMgQml0IG1hcCB3aGlsZSBpbmZvZnJhbWUgaXMgYWJzb2x1dGUgdmFsdWVzICovCisJaWYg KCFpc19lb3RmX3N1cHBvcnRlZChoZHJfbWV0YWRhdGEtPmhkbWlfbWV0YWRhdGFfdHlwZTEuZW90 ZiwKKwkgICAgY29ubmVjdG9yLT5oZHJfc2lua19tZXRhZGF0YS5oZG1pX3R5cGUxLmVvdGYpKSB7 CisJCURSTV9ERUJVR19LTVMoIkVPVEYgTm90IFN1cHBvcnRlZFxuIik7CisJCXJldHVybiAtRUlO VkFMOworCX0KKworCWVyciA9IGhkbWlfZHJtX2luZm9mcmFtZV9pbml0KGZyYW1lKTsKKwlpZiAo ZXJyIDwgMCkKKwkJcmV0dXJuIGVycjsKKworCWZyYW1lLT5lb3RmID0gaGRyX21ldGFkYXRhLT5o ZG1pX21ldGFkYXRhX3R5cGUxLmVvdGY7CisJZnJhbWUtPm1ldGFkYXRhX3R5cGUgPSBoZHJfbWV0 YWRhdGEtPmhkbWlfbWV0YWRhdGFfdHlwZTEubWV0YWRhdGFfdHlwZTsKKworCUJVSUxEX0JVR19P TihzaXplb2YoZnJhbWUtPmRpc3BsYXlfcHJpbWFyaWVzKSAhPQorCQkgICAgIHNpemVvZihoZHJf bWV0YWRhdGEtPmhkbWlfbWV0YWRhdGFfdHlwZTEuZGlzcGxheV9wcmltYXJpZXMpKTsKKwlCVUlM RF9CVUdfT04oc2l6ZW9mKGZyYW1lLT53aGl0ZV9wb2ludCkgIT0KKwkJICAgICBzaXplb2YoaGRy X21ldGFkYXRhLT5oZG1pX21ldGFkYXRhX3R5cGUxLndoaXRlX3BvaW50KSk7CisKKwltZW1jcHko JmZyYW1lLT5kaXNwbGF5X3ByaW1hcmllcywKKwkgICAgICAgJmhkcl9tZXRhZGF0YS0+aGRtaV9t ZXRhZGF0YV90eXBlMS5kaXNwbGF5X3ByaW1hcmllcywKKwkgICAgICAgc2l6ZW9mKGZyYW1lLT5k aXNwbGF5X3ByaW1hcmllcykpOworCisJbWVtY3B5KCZmcmFtZS0+d2hpdGVfcG9pbnQsCisJICAg ICAgICZoZHJfbWV0YWRhdGEtPmhkbWlfbWV0YWRhdGFfdHlwZTEud2hpdGVfcG9pbnQsCisJICAg ICAgIHNpemVvZihmcmFtZS0+d2hpdGVfcG9pbnQpKTsKKworCWZyYW1lLT5tYXhfZGlzcGxheV9t YXN0ZXJpbmdfbHVtaW5hbmNlID0KKwkJaGRyX21ldGFkYXRhLT5oZG1pX21ldGFkYXRhX3R5cGUx Lm1heF9kaXNwbGF5X21hc3RlcmluZ19sdW1pbmFuY2U7CisJZnJhbWUtPm1pbl9kaXNwbGF5X21h c3RlcmluZ19sdW1pbmFuY2UgPQorCQloZHJfbWV0YWRhdGEtPmhkbWlfbWV0YWRhdGFfdHlwZTEu bWluX2Rpc3BsYXlfbWFzdGVyaW5nX2x1bWluYW5jZTsKKwlmcmFtZS0+bWF4X2ZhbGwgPSBoZHJf bWV0YWRhdGEtPmhkbWlfbWV0YWRhdGFfdHlwZTEubWF4X2ZhbGw7CisJZnJhbWUtPm1heF9jbGwg PSBoZHJfbWV0YWRhdGEtPmhkbWlfbWV0YWRhdGFfdHlwZTEubWF4X2NsbDsKKworCXJldHVybiAw OworfQorRVhQT1JUX1NZTUJPTChkcm1faGRtaV9pbmZvZnJhbWVfc2V0X2hkcl9tZXRhZGF0YSk7 CisKIC8qKgogICogZHJtX2hkbWlfYXZpX2luZm9mcmFtZV9mcm9tX2Rpc3BsYXlfbW9kZSgpIC0g ZmlsbCBhbiBIRE1JIEFWSSBpbmZvZnJhbWUgd2l0aAogICogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSBmcm9tIGEgRFJNIGRpc3BsYXkgbW9kZQpkaWZm IC0tZ2l0IGEvZHJpdmVycy92aWRlby9oZG1pLmMgYi9kcml2ZXJzL3ZpZGVvL2hkbWkuYwppbmRl eCA3OTlhZTQ5Li40ODFmMDM2IDEwMDY0NAotLS0gYS9kcml2ZXJzL3ZpZGVvL2hkbWkuYworKysg Yi9kcml2ZXJzL3ZpZGVvL2hkbWkuYwpAQCAtNjUwLDYgKzY1MCwxNTAgQEAgc3NpemVfdCBoZG1p X3ZlbmRvcl9pbmZvZnJhbWVfcGFjayhzdHJ1Y3QgaGRtaV92ZW5kb3JfaW5mb2ZyYW1lICpmcmFt ZSwKIAlyZXR1cm4gMDsKIH0KIAorLyoqCisgKiBoZG1pX2RybV9pbmZvZnJhbWVfaW5pdCgpIC0g aW5pdGlhbGl6ZSBhbiBIRE1JIER5bmFtaW5jIFJhbmdlIGFuZAorICogbWFzdGVyaW5nIGluZm9m cmFtZQorICogQGZyYW1lOiBIRE1JIERSTSBpbmZvZnJhbWUKKyAqCisgKiBSZXR1cm5zIDAgb24g c3VjY2VzcyBvciBhIG5lZ2F0aXZlIGVycm9yIGNvZGUgb24gZmFpbHVyZS4KKyAqLworaW50IGhk bWlfZHJtX2luZm9mcmFtZV9pbml0KHN0cnVjdCBoZG1pX2RybV9pbmZvZnJhbWUgKmZyYW1lKQor eworCW1lbXNldChmcmFtZSwgMCwgc2l6ZW9mKCpmcmFtZSkpOworCisJZnJhbWUtPnR5cGUgPSBI RE1JX0lORk9GUkFNRV9UWVBFX0RSTTsKKwlmcmFtZS0+dmVyc2lvbiA9IDE7CisJZnJhbWUtPmxl bmd0aCA9IEhETUlfRFJNX0lORk9GUkFNRV9TSVpFOworCisJcmV0dXJuIDA7Cit9CitFWFBPUlRf U1lNQk9MKGhkbWlfZHJtX2luZm9mcmFtZV9pbml0KTsKKworc3RhdGljIGludCBoZG1pX2RybV9p bmZvZnJhbWVfY2hlY2tfb25seShjb25zdCBzdHJ1Y3QgaGRtaV9kcm1faW5mb2ZyYW1lICpmcmFt ZSkKK3sKKwlpZiAoZnJhbWUtPnR5cGUgIT0gSERNSV9JTkZPRlJBTUVfVFlQRV9EUk0gfHwKKwkg ICAgZnJhbWUtPnZlcnNpb24gIT0gMSkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwlpZiAoZnJhbWUt Pmxlbmd0aCAhPSBIRE1JX0RSTV9JTkZPRlJBTUVfU0laRSkKKwkJcmV0dXJuIC1FSU5WQUw7CisK KwlyZXR1cm4gMDsKK30KKworLyoqCisgKiBoZG1pX2RybV9pbmZvZnJhbWVfY2hlY2soKSAtIGNo ZWNrIGEgSERNSSBEUk0gaW5mb2ZyYW1lCisgKiBAZnJhbWU6IEhETUkgRFJNIGluZm9mcmFtZQor ICoKKyAqIFZhbGlkYXRlcyB0aGF0IHRoZSBpbmZvZnJhbWUgaXMgY29uc2lzdGVudC4KKyAqIFJl dHVybnMgMCBvbiBzdWNjZXNzIG9yIGEgbmVnYXRpdmUgZXJyb3IgY29kZSBvbiBmYWlsdXJlLgor ICovCitpbnQgaGRtaV9kcm1faW5mb2ZyYW1lX2NoZWNrKHN0cnVjdCBoZG1pX2RybV9pbmZvZnJh bWUgKmZyYW1lKQoreworCXJldHVybiBoZG1pX2RybV9pbmZvZnJhbWVfY2hlY2tfb25seShmcmFt ZSk7Cit9CitFWFBPUlRfU1lNQk9MKGhkbWlfZHJtX2luZm9mcmFtZV9jaGVjayk7CisKKy8qKgor ICogaGRtaV9kcm1faW5mb2ZyYW1lX3BhY2tfb25seSgpIC0gd3JpdGUgSERNSSBEUk0gaW5mb2Zy YW1lIHRvIGJpbmFyeSBidWZmZXIKKyAqIEBmcmFtZTogSERNSSBEUk0gaW5mb2ZyYW1lCisgKiBA YnVmZmVyOiBkZXN0aW5hdGlvbiBidWZmZXIKKyAqIEBzaXplOiBzaXplIG9mIGJ1ZmZlcgorICoK KyAqIFBhY2tzIHRoZSBpbmZvcm1hdGlvbiBjb250YWluZWQgaW4gdGhlIEBmcmFtZSBzdHJ1Y3R1 cmUgaW50byBhIGJpbmFyeQorICogcmVwcmVzZW50YXRpb24gdGhhdCBjYW4gYmUgd3JpdHRlbiBp bnRvIHRoZSBjb3JyZXNwb25kaW5nIGNvbnRyb2xsZXIKKyAqIHJlZ2lzdGVycy4gQWxzbyBjb21w dXRlcyB0aGUgY2hlY2tzdW0gYXMgcmVxdWlyZWQgYnkgc2VjdGlvbiA1LjMuNSBvZgorICogdGhl IEhETUkgMS40IHNwZWNpZmljYXRpb24uCisgKgorICogUmV0dXJucyB0aGUgbnVtYmVyIG9mIGJ5 dGVzIHBhY2tlZCBpbnRvIHRoZSBiaW5hcnkgYnVmZmVyIG9yIGEgbmVnYXRpdmUKKyAqIGVycm9y IGNvZGUgb24gZmFpbHVyZS4KKyAqLworc3NpemVfdCBoZG1pX2RybV9pbmZvZnJhbWVfcGFja19v bmx5KGNvbnN0IHN0cnVjdCBoZG1pX2RybV9pbmZvZnJhbWUgKmZyYW1lLAorCQkJCSAgICAgdm9p ZCAqYnVmZmVyLCBzaXplX3Qgc2l6ZSkKK3sKKwl1OCAqcHRyID0gYnVmZmVyOworCXNpemVfdCBs ZW5ndGg7CisJaW50IGk7CisKKwlsZW5ndGggPSBIRE1JX0lORk9GUkFNRV9IRUFERVJfU0laRSAr IGZyYW1lLT5sZW5ndGg7CisKKwlpZiAoc2l6ZSA8IGxlbmd0aCkKKwkJcmV0dXJuIC1FTk9TUEM7 CisKKwltZW1zZXQoYnVmZmVyLCAwLCBzaXplKTsKKworCXB0clswXSA9IGZyYW1lLT50eXBlOwor CXB0clsxXSA9IGZyYW1lLT52ZXJzaW9uOworCXB0clsyXSA9IGZyYW1lLT5sZW5ndGg7CisJcHRy WzNdID0gMDsgLyogY2hlY2tzdW0gKi8KKworCS8qIHN0YXJ0IGluZm9mcmFtZSBwYXlsb2FkICov CisJcHRyICs9IEhETUlfSU5GT0ZSQU1FX0hFQURFUl9TSVpFOworCisJKnB0cisrID0gZnJhbWUt PmVvdGY7CisJKnB0cisrID0gZnJhbWUtPm1ldGFkYXRhX3R5cGU7CisKKwlmb3IgKGkgPSAwOyBp IDwgMzsgaSsrKSB7CisJCSpwdHIrKyA9IGZyYW1lLT5kaXNwbGF5X3ByaW1hcmllc1tpXS54Owor CQkqcHRyKysgPSBmcmFtZS0+ZGlzcGxheV9wcmltYXJpZXNbaV0ueCA+PiA4OworCQkqcHRyKysg PSBmcmFtZS0+ZGlzcGxheV9wcmltYXJpZXNbaV0ueTsKKwkJKnB0cisrID0gZnJhbWUtPmRpc3Bs YXlfcHJpbWFyaWVzW2ldLnkgPj4gODsKKwl9CisKKwkqcHRyKysgPSBmcmFtZS0+d2hpdGVfcG9p bnQueDsKKwkqcHRyKysgPSBmcmFtZS0+d2hpdGVfcG9pbnQueCA+PiA4OworCisJKnB0cisrID0g ZnJhbWUtPndoaXRlX3BvaW50Lnk7CisJKnB0cisrID0gZnJhbWUtPndoaXRlX3BvaW50LnkgPj4g ODsKKworCSpwdHIrKyA9IGZyYW1lLT5tYXhfZGlzcGxheV9tYXN0ZXJpbmdfbHVtaW5hbmNlOwor CSpwdHIrKyA9IGZyYW1lLT5tYXhfZGlzcGxheV9tYXN0ZXJpbmdfbHVtaW5hbmNlID4+IDg7CisK KwkqcHRyKysgPSBmcmFtZS0+bWluX2Rpc3BsYXlfbWFzdGVyaW5nX2x1bWluYW5jZTsKKwkqcHRy KysgPSBmcmFtZS0+bWluX2Rpc3BsYXlfbWFzdGVyaW5nX2x1bWluYW5jZSA+PiA4OworCisJKnB0 cisrID0gZnJhbWUtPm1heF9jbGw7CisJKnB0cisrID0gZnJhbWUtPm1heF9jbGwgPj4gODsKKwor CSpwdHIrKyA9IGZyYW1lLT5tYXhfZmFsbDsKKwkqcHRyKysgPSBmcmFtZS0+bWF4X2ZhbGwgPj4g ODsKKworCWhkbWlfaW5mb2ZyYW1lX3NldF9jaGVja3N1bShidWZmZXIsIGxlbmd0aCk7CisKKwly ZXR1cm4gbGVuZ3RoOworfQorRVhQT1JUX1NZTUJPTChoZG1pX2RybV9pbmZvZnJhbWVfcGFja19v bmx5KTsKKworLyoqCisgKiBoZG1pX2RybV9pbmZvZnJhbWVfcGFjaygpIC0gY2hlY2sgYSBIRE1J IERSTSBpbmZvZnJhbWUsCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIHdyaXRl IGl0IHRvIGJpbmFyeSBidWZmZXIKKyAqIEBmcmFtZTogSERNSSBEUk0gaW5mb2ZyYW1lCisgKiBA YnVmZmVyOiBkZXN0aW5hdGlvbiBidWZmZXIKKyAqIEBzaXplOiBzaXplIG9mIGJ1ZmZlcgorICoK KyAqIFZhbGlkYXRlcyB0aGF0IHRoZSBpbmZvZnJhbWUgaXMgY29uc2lzdGVudCBhbmQgdXBkYXRl cyBkZXJpdmVkIGZpZWxkcworICogKGVnLiBsZW5ndGgpIGJhc2VkIG9uIG90aGVyIGZpZWxkcywg YWZ0ZXIgd2hpY2ggaXQgcGFja3MgdGhlIGluZm9ybWF0aW9uCisgKiBjb250YWluZWQgaW4gdGhl IEBmcmFtZSBzdHJ1Y3R1cmUgaW50byBhIGJpbmFyeSByZXByZXNlbnRhdGlvbiB0aGF0CisgKiBj YW4gYmUgd3JpdHRlbiBpbnRvIHRoZSBjb3JyZXNwb25kaW5nIGNvbnRyb2xsZXIgcmVnaXN0ZXJz LiBUaGlzIGZ1bmN0aW9uCisgKiBhbHNvIGNvbXB1dGVzIHRoZSBjaGVja3N1bSBhcyByZXF1aXJl ZCBieSBzZWN0aW9uIDUuMy41IG9mIHRoZSBIRE1JIDEuNAorICogc3BlY2lmaWNhdGlvbi4KKyAq CisgKiBSZXR1cm5zIHRoZSBudW1iZXIgb2YgYnl0ZXMgcGFja2VkIGludG8gdGhlIGJpbmFyeSBi dWZmZXIgb3IgYSBuZWdhdGl2ZQorICogZXJyb3IgY29kZSBvbiBmYWlsdXJlLgorICovCitzc2l6 ZV90IGhkbWlfZHJtX2luZm9mcmFtZV9wYWNrKHN0cnVjdCBoZG1pX2RybV9pbmZvZnJhbWUgKmZy YW1lLAorCQkJCXZvaWQgKmJ1ZmZlciwgc2l6ZV90IHNpemUpCit7CisJaW50IHJldDsKKworCXJl dCA9IGhkbWlfZHJtX2luZm9mcmFtZV9jaGVjayhmcmFtZSk7CisJaWYgKHJldCkKKwkJcmV0dXJu IHJldDsKKworCXJldHVybiBoZG1pX2RybV9pbmZvZnJhbWVfcGFja19vbmx5KGZyYW1lLCBidWZm ZXIsIHNpemUpOworfQorRVhQT1JUX1NZTUJPTChoZG1pX2RybV9pbmZvZnJhbWVfcGFjayk7CisK IC8qCiAgKiBoZG1pX3ZlbmRvcl9hbnlfaW5mb2ZyYW1lX2NoZWNrKCkgLSBjaGVjayBhIHZlbmRv ciBpbmZvZnJhbWUKICAqLwpAQCAtNzU4LDYgKzkwMiwxMCBAQCBzc2l6ZV90IGhkbWlfdmVuZG9y X2luZm9mcmFtZV9wYWNrKHN0cnVjdCBoZG1pX3ZlbmRvcl9pbmZvZnJhbWUgKmZyYW1lLAogCQls ZW5ndGggPSBoZG1pX2F2aV9pbmZvZnJhbWVfcGFja19vbmx5KCZmcmFtZS0+YXZpLAogCQkJCQkJ ICAgICAgYnVmZmVyLCBzaXplKTsKIAkJYnJlYWs7CisJY2FzZSBIRE1JX0lORk9GUkFNRV9UWVBF X0RSTToKKwkJbGVuZ3RoID0gaGRtaV9kcm1faW5mb2ZyYW1lX3BhY2tfb25seSgmZnJhbWUtPmRy bSwKKwkJCQkJCSAgICAgIGJ1ZmZlciwgc2l6ZSk7CisJCWJyZWFrOwogCWNhc2UgSERNSV9JTkZP RlJBTUVfVFlQRV9TUEQ6CiAJCWxlbmd0aCA9IGhkbWlfc3BkX2luZm9mcmFtZV9wYWNrX29ubHko JmZyYW1lLT5zcGQsCiAJCQkJCQkgICAgICBidWZmZXIsIHNpemUpOwpAQCAtODA2LDYgKzk1NCw5 IEBAIHNzaXplX3QgaGRtaV92ZW5kb3JfaW5mb2ZyYW1lX3BhY2soc3RydWN0IGhkbWlfdmVuZG9y X2luZm9mcmFtZSAqZnJhbWUsCiAJY2FzZSBIRE1JX0lORk9GUkFNRV9UWVBFX0FWSToKIAkJbGVu Z3RoID0gaGRtaV9hdmlfaW5mb2ZyYW1lX3BhY2soJmZyYW1lLT5hdmksIGJ1ZmZlciwgc2l6ZSk7 CiAJCWJyZWFrOworCWNhc2UgSERNSV9JTkZPRlJBTUVfVFlQRV9EUk06CisJCWxlbmd0aCA9IGhk bWlfZHJtX2luZm9mcmFtZV9wYWNrKCZmcmFtZS0+ZHJtLCBidWZmZXIsIHNpemUpOworCQlicmVh azsKIAljYXNlIEhETUlfSU5GT0ZSQU1FX1RZUEVfU1BEOgogCQlsZW5ndGggPSBoZG1pX3NwZF9p bmZvZnJhbWVfcGFjaygmZnJhbWUtPnNwZCwgYnVmZmVyLCBzaXplKTsKIAkJYnJlYWs7CkBAIC04 MzgsNiArOTg5LDggQEAgc3RhdGljIGNvbnN0IGNoYXIgKmhkbWlfaW5mb2ZyYW1lX3R5cGVfZ2V0 X25hbWUoZW51bSBoZG1pX2luZm9mcmFtZV90eXBlIHR5cGUpCiAJCXJldHVybiAiU291cmNlIFBy b2R1Y3QgRGVzY3JpcHRpb24gKFNQRCkiOwogCWNhc2UgSERNSV9JTkZPRlJBTUVfVFlQRV9BVURJ TzoKIAkJcmV0dXJuICJBdWRpbyI7CisJY2FzZSBIRE1JX0lORk9GUkFNRV9UWVBFX0RSTToKKwkJ cmV0dXJuICJEeW5hbWljIFJhbmdlIGFuZCBNYXN0ZXJpbmciOwogCX0KIAlyZXR1cm4gIlJlc2Vy dmVkIjsKIH0KQEAgLTEyODQsNiArMTQzNyw0MCBAQCBzdGF0aWMgdm9pZCBoZG1pX2F1ZGlvX2lu Zm9mcmFtZV9sb2coY29uc3QgY2hhciAqbGV2ZWwsCiAJCQlmcmFtZS0+ZG93bm1peF9pbmhpYml0 ID8gIlllcyIgOiAiTm8iKTsKIH0KIAorLyoqCisgKiBoZG1pX2RybV9pbmZvZnJhbWVfbG9nKCkg LSBsb2cgaW5mbyBvZiBIRE1JIERSTSBpbmZvZnJhbWUKKyAqIEBsZXZlbDogbG9nZ2luZyBsZXZl bAorICogQGRldjogZGV2aWNlCisgKiBAZnJhbWU6IEhETUkgRFJNIGluZm9mcmFtZQorICovCitz dGF0aWMgdm9pZCBoZG1pX2RybV9pbmZvZnJhbWVfbG9nKGNvbnN0IGNoYXIgKmxldmVsLAorCQkJ CSAgIHN0cnVjdCBkZXZpY2UgKmRldiwKKwkJCQkgICBjb25zdCBzdHJ1Y3QgaGRtaV9kcm1faW5m b2ZyYW1lICpmcmFtZSkKK3sKKwlpbnQgaTsKKworCWhkbWlfaW5mb2ZyYW1lX2xvZ19oZWFkZXIo bGV2ZWwsIGRldiwKKwkJCQkgIChzdHJ1Y3QgaGRtaV9hbnlfaW5mb2ZyYW1lICopZnJhbWUpOwor CWhkbWlfbG9nKCJsZW5ndGg6ICVkXG4iLCBmcmFtZS0+bGVuZ3RoKTsKKwloZG1pX2xvZygibWV0 YWRhdGEgdHlwZTogJWRcbiIsIGZyYW1lLT5tZXRhZGF0YV90eXBlKTsKKwloZG1pX2xvZygiZW90 ZjogJWRcbiIsIGZyYW1lLT5lb3RmKTsKKwlmb3IgKGkgPSAwOyBpIDwgMzsgaSsrKSB7CisJCWhk bWlfbG9nKCJ4WyVkXTogJWRcbiIsIGksIGZyYW1lLT5kaXNwbGF5X3ByaW1hcmllc1tpXS54KTsK KwkJaGRtaV9sb2coInlbJWRdOiAlZFxuIiwgaSwgZnJhbWUtPmRpc3BsYXlfcHJpbWFyaWVzW2ld LnkpOworCX0KKworCWhkbWlfbG9nKCJ3aGl0ZSBwb2ludCB4OiAlZFxuIiwgZnJhbWUtPndoaXRl X3BvaW50LngpOworCWhkbWlfbG9nKCJ3aGl0ZSBwb2ludCB5OiAlZFxuIiwgZnJhbWUtPndoaXRl X3BvaW50LnkpOworCisJaGRtaV9sb2coIm1heF9kaXNwbGF5X21hc3RlcmluZ19sdW1pbmFuY2U6 ICVkXG4iLAorCQkgZnJhbWUtPm1heF9kaXNwbGF5X21hc3RlcmluZ19sdW1pbmFuY2UpOworCWhk bWlfbG9nKCJtaW5fZGlzcGxheV9tYXN0ZXJpbmdfbHVtaW5hbmNlOiAlZFxuIiwKKwkJIGZyYW1l LT5taW5fZGlzcGxheV9tYXN0ZXJpbmdfbHVtaW5hbmNlKTsKKworCWhkbWlfbG9nKCJtYXhfY2xs OiAlZFxuIiwgZnJhbWUtPm1heF9jbGwpOworCWhkbWlfbG9nKCJtYXhfZmFsbDogJWRcbiIsIGZy YW1lLT5tYXhfZmFsbCk7Cit9CisKIHN0YXRpYyBjb25zdCBjaGFyICoKIGhkbWlfM2Rfc3RydWN0 dXJlX2dldF9uYW1lKGVudW0gaGRtaV8zZF9zdHJ1Y3R1cmUgczNkX3N0cnVjdCkKIHsKQEAgLTEz NzIsNiArMTU1OSw5IEBAIHZvaWQgaGRtaV9pbmZvZnJhbWVfbG9nKGNvbnN0IGNoYXIgKmxldmVs LAogCWNhc2UgSERNSV9JTkZPRlJBTUVfVFlQRV9WRU5ET1I6CiAJCWhkbWlfdmVuZG9yX2FueV9p bmZvZnJhbWVfbG9nKGxldmVsLCBkZXYsICZmcmFtZS0+dmVuZG9yKTsKIAkJYnJlYWs7CisJY2Fz ZSBIRE1JX0lORk9GUkFNRV9UWVBFX0RSTToKKwkJaGRtaV9kcm1faW5mb2ZyYW1lX2xvZyhsZXZl bCwgZGV2LCAmZnJhbWUtPmRybSk7CisJCWJyZWFrOwogCX0KIH0KIEVYUE9SVF9TWU1CT0woaGRt aV9pbmZvZnJhbWVfbG9nKTsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHJtL2RybV9lZGlkLmggYi9p bmNsdWRlL2RybS9kcm1fZWRpZC5oCmluZGV4IDlkM2I1YjkuLjBlMjFlOTEgMTAwNjQ0Ci0tLSBh L2luY2x1ZGUvZHJtL2RybV9lZGlkLmgKKysrIGIvaW5jbHVkZS9kcm0vZHJtX2VkaWQuaApAQCAt MjUsNiArMjUsNyBAQAogCiAjaW5jbHVkZSA8bGludXgvdHlwZXMuaD4KICNpbmNsdWRlIDxsaW51 eC9oZG1pLmg+CisjaW5jbHVkZSA8ZHJtL2RybV9tb2RlLmg+CiAKIHN0cnVjdCBkcm1fZGV2aWNl Owogc3RydWN0IGkyY19hZGFwdGVyOwpAQCAtMzcwLDYgKzM3MSwxMCBAQCBpbnQgZHJtX2F2X3N5 bmNfZGVsYXkoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwKIAkJCQkgICBjb25zdCBz dHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSwKIAkJCQkgICBlbnVtIGhkbWlfcXVhbnRpemF0 aW9uX3JhbmdlIHJnYl9xdWFudF9yYW5nZSk7CiAKK2ludAorZHJtX2hkbWlfaW5mb2ZyYW1lX3Nl dF9oZHJfbWV0YWRhdGEoc3RydWN0IGhkbWlfZHJtX2luZm9mcmFtZSAqZnJhbWUsCisJCQkJICAg IGNvbnN0IHN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpjb25uX3N0YXRlKTsKKwogLyoqCiAg KiBkcm1fZWxkX21ubCAtIEdldCBFTEQgbW9uaXRvciBuYW1lIGxlbmd0aCBpbiBieXRlcy4KICAq IEBlbGQ6IHBvaW50ZXIgdG8gYW4gZWxkIG1lbW9yeSBzdHJ1Y3R1cmUgd2l0aCBtbmwgc2V0CmRp ZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2hkbWkuaCBiL2luY2x1ZGUvbGludXgvaGRtaS5oCmlu ZGV4IDY3ODA0NzYuLmJjZjNjNmMgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvaGRtaS5oCisr KyBiL2luY2x1ZGUvbGludXgvaGRtaS5oCkBAIC00Nyw2ICs0Nyw3IEBAIGVudW0gaGRtaV9pbmZv ZnJhbWVfdHlwZSB7CiAJSERNSV9JTkZPRlJBTUVfVFlQRV9BVkkgPSAweDgyLAogCUhETUlfSU5G T0ZSQU1FX1RZUEVfU1BEID0gMHg4MywKIAlIRE1JX0lORk9GUkFNRV9UWVBFX0FVRElPID0gMHg4 NCwKKwlIRE1JX0lORk9GUkFNRV9UWVBFX0RSTSA9IDB4ODcsCiB9OwogCiAjZGVmaW5lIEhETUlf SUVFRV9PVUkgMHgwMDBjMDMKQEAgLTU1LDYgKzU2LDcgQEAgZW51bSBoZG1pX2luZm9mcmFtZV90 eXBlIHsKICNkZWZpbmUgSERNSV9BVklfSU5GT0ZSQU1FX1NJWkUgICAgMTMKICNkZWZpbmUgSERN SV9TUERfSU5GT0ZSQU1FX1NJWkUgICAgMjUKICNkZWZpbmUgSERNSV9BVURJT19JTkZPRlJBTUVf U0laRSAgMTAKKyNkZWZpbmUgSERNSV9EUk1fSU5GT0ZSQU1FX1NJWkUgICAgMjYKIAogI2RlZmlu ZSBIRE1JX0lORk9GUkFNRV9TSVpFKHR5cGUpCVwKIAkoSERNSV9JTkZPRlJBTUVfSEVBREVSX1NJ WkUgKyBIRE1JXyAjIyB0eXBlICMjIF9JTkZPRlJBTUVfU0laRSkKQEAgLTE4NSwxMiArMTg3LDM3 IEBAIHN0cnVjdCBoZG1pX2F2aV9pbmZvZnJhbWUgewogCXVuc2lnbmVkIHNob3J0IHJpZ2h0X2Jh cjsKIH07CiAKKy8qIERSTSBJbmZvZnJhbWUgYXMgcGVyIENUQSA4NjEuRyBzcGVjICovCitzdHJ1 Y3QgaGRtaV9kcm1faW5mb2ZyYW1lIHsKKwllbnVtIGhkbWlfaW5mb2ZyYW1lX3R5cGUgdHlwZTsK Kwl1bnNpZ25lZCBjaGFyIHZlcnNpb247CisJdW5zaWduZWQgY2hhciBsZW5ndGg7CisJZW51bSBo ZG1pX2VvdGYgZW90ZjsKKwllbnVtIGhkbWlfbWV0YWRhdGFfdHlwZSBtZXRhZGF0YV90eXBlOwor CXN0cnVjdCB7CisJCXUxNiB4LCB5OworCX0gZGlzcGxheV9wcmltYXJpZXNbM107CisJc3RydWN0 IHsKKwkJdTE2IHgsIHk7CisJfSB3aGl0ZV9wb2ludDsKKwl1MTYgbWF4X2Rpc3BsYXlfbWFzdGVy aW5nX2x1bWluYW5jZTsKKwl1MTYgbWluX2Rpc3BsYXlfbWFzdGVyaW5nX2x1bWluYW5jZTsKKwl1 MTYgbWF4X2NsbDsKKwl1MTYgbWF4X2ZhbGw7Cit9OworCiBpbnQgaGRtaV9hdmlfaW5mb2ZyYW1l X2luaXQoc3RydWN0IGhkbWlfYXZpX2luZm9mcmFtZSAqZnJhbWUpOwogc3NpemVfdCBoZG1pX2F2 aV9pbmZvZnJhbWVfcGFjayhzdHJ1Y3QgaGRtaV9hdmlfaW5mb2ZyYW1lICpmcmFtZSwgdm9pZCAq YnVmZmVyLAogCQkJCXNpemVfdCBzaXplKTsKIHNzaXplX3QgaGRtaV9hdmlfaW5mb2ZyYW1lX3Bh Y2tfb25seShjb25zdCBzdHJ1Y3QgaGRtaV9hdmlfaW5mb2ZyYW1lICpmcmFtZSwKIAkJCQkgICAg IHZvaWQgKmJ1ZmZlciwgc2l6ZV90IHNpemUpOwogaW50IGhkbWlfYXZpX2luZm9mcmFtZV9jaGVj ayhzdHJ1Y3QgaGRtaV9hdmlfaW5mb2ZyYW1lICpmcmFtZSk7CitpbnQgaGRtaV9kcm1faW5mb2Zy YW1lX2luaXQoc3RydWN0IGhkbWlfZHJtX2luZm9mcmFtZSAqZnJhbWUpOworc3NpemVfdCBoZG1p X2RybV9pbmZvZnJhbWVfcGFjayhzdHJ1Y3QgaGRtaV9kcm1faW5mb2ZyYW1lICpmcmFtZSwgdm9p ZCAqYnVmZmVyLAorCQkJCXNpemVfdCBzaXplKTsKK3NzaXplX3QgaGRtaV9kcm1faW5mb2ZyYW1l X3BhY2tfb25seShjb25zdCBzdHJ1Y3QgaGRtaV9kcm1faW5mb2ZyYW1lICpmcmFtZSwKKwkJCQkg ICAgIHZvaWQgKmJ1ZmZlciwgc2l6ZV90IHNpemUpOworaW50IGhkbWlfZHJtX2luZm9mcmFtZV9j aGVjayhzdHJ1Y3QgaGRtaV9kcm1faW5mb2ZyYW1lICpmcmFtZSk7CiAKIGVudW0gaGRtaV9zcGRf c2RpIHsKIAlIRE1JX1NQRF9TRElfVU5LTk9XTiwKQEAgLTM4MSw2ICs0MDgsNyBAQCBzc2l6ZV90 IGhkbWlfdmVuZG9yX2luZm9mcmFtZV9wYWNrX29ubHkoY29uc3Qgc3RydWN0IGhkbWlfdmVuZG9y X2luZm9mcmFtZSAqZnJhbQogCXN0cnVjdCBoZG1pX3NwZF9pbmZvZnJhbWUgc3BkOwogCXVuaW9u IGhkbWlfdmVuZG9yX2FueV9pbmZvZnJhbWUgdmVuZG9yOwogCXN0cnVjdCBoZG1pX2F1ZGlvX2lu Zm9mcmFtZSBhdWRpbzsKKwlzdHJ1Y3QgaGRtaV9kcm1faW5mb2ZyYW1lIGRybTsKIH07CiAKIHNz aXplX3QgaGRtaV9pbmZvZnJhbWVfcGFjayh1bmlvbiBoZG1pX2luZm9mcmFtZSAqZnJhbWUsIHZv aWQgKmJ1ZmZlciwKLS0gCjEuOS4xCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVl ZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5m by9kcmktZGV2ZWw=