From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville Syrjala Subject: [PATCH v2 07/18] video/hdmi: Handle the NTSC VBI infoframe Date: Fri, 21 Sep 2018 18:10:17 +0300 Message-ID: <20180921151017.13133-1-ville.syrjala@linux.intel.com> References: <20180920185145.1912-8-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: <20180920185145.1912-8-ville.syrjala@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: dri-devel@lists.freedesktop.org Cc: intel-gfx@lists.freedesktop.org, Hans Verkuil , linux-media@vger.kernel.org List-Id: intel-gfx@lists.freedesktop.org RnJvbTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KCkFk ZCB0aGUgY29kZSB0byBkZWFsIHdpdGggdGhlIE5UU0MgVkJJIGluZm9mcmFtZS4KCkkgZGVjaWRl ZCBhZ2FpbnN0IHBhcnNpbmcgdGhlIFBFU19kYXRhX2ZpZWxkIGFuZCBqdXN0IGxlYXZlCml0IGFz IGFuIG9wYXF1ZSBibG9iLCBqdXN0IGR1bXBpbmcgaXQgb3V0IGFzIGhleCBpbiB0aGUgbG9nLgoK QmxpbmRseSB0eXBlZCBmcm9tIHRoZSBzcGVjLCBhbmQgdG90YWxseSB1bnRlc3RlZC4KCnYyOiBS ZWJhc2UKCkNjOiBUaGllcnJ5IFJlZGluZyA8dGhpZXJyeS5yZWRpbmdAZ21haWwuY29tPgpDYzog SGFucyBWZXJrdWlsIDxoYW5zLnZlcmt1aWxAY2lzY28uY29tPgpDYzogbGludXgtbWVkaWFAdmdl ci5rZXJuZWwub3JnClNpZ25lZC1vZmYtYnk6IFZpbGxlIFN5cmrDpGzDpCA8dmlsbGUuc3lyamFs YUBsaW51eC5pbnRlbC5jb20+Ci0tLQogZHJpdmVycy92aWRlby9oZG1pLmMgfCAyMDggKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBpbmNsdWRlL2xp bnV4L2hkbWkuaCB8ICAxOCArKysrKwogMiBmaWxlcyBjaGFuZ2VkLCAyMjYgaW5zZXJ0aW9ucygr KQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmlkZW8vaGRtaS5jIGIvZHJpdmVycy92aWRlby9oZG1p LmMKaW5kZXggNmYzOWI5YWU1NmI5Li5iMTQyMDJmYzU4NTQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv dmlkZW8vaGRtaS5jCisrKyBiL2RyaXZlcnMvdmlkZW8vaGRtaS5jCkBAIC04MzEsNiArODMxLDEz OSBAQCBzc2l6ZV90IGhkbWlfbXBlZ19zb3VyY2VfaW5mb2ZyYW1lX3BhY2soc3RydWN0IGhkbWlf bXBlZ19zb3VyY2VfaW5mb2ZyYW1lICpmcmFtZQogfQogRVhQT1JUX1NZTUJPTChoZG1pX21wZWdf c291cmNlX2luZm9mcmFtZV9wYWNrKTsKIAorLyoqCisgKiBoZG1pX250c2NfdmJpX2luZm9mcmFt ZV9pbml0KCkgLSBpbml0aWFsaXplIGFuIEhETUkgTlRTQyBWQkkgaW5mb2ZyYW1lCisgKiBAZnJh bWU6IEhETUkgTlRTQyBWQkkgaW5mb2ZyYW1lCisgKiBAcGVzX2RhdGFfZmllbGQ6IEFOU0kvU0NU RSAxMjcgUEVTX2RhdGFfZmllbGQKKyAqIEBsZW5ndGg6IEFOU0kvU0NURSAxMjcgUEVTX2RhdGFf ZmllbGQgbGVuZ3RoCisgKgorICogUmV0dXJucyAwIG9uIHN1Y2Nlc3Mgb3IgYSBuZWdhdGl2ZSBl cnJvciBjb2RlIG9uIGZhaWx1cmUuCisgKi8KK2ludCBoZG1pX250c2NfdmJpX2luZm9mcmFtZV9p bml0KHN0cnVjdCBoZG1pX250c2NfdmJpX2luZm9mcmFtZSAqZnJhbWUsCisJCQkJIGNvbnN0IHZv aWQgKnBlc19kYXRhX2ZpZWxkLAorCQkJCSBzaXplX3QgbGVuZ3RoKQoreworCWlmIChsZW5ndGgg PCAxIHx8IGxlbmd0aCA+IDI3KQorCQlyZXR1cm4gLUVJTlZBTDsKKworCW1lbXNldChmcmFtZSwg MCwgc2l6ZW9mKCpmcmFtZSkpOworCisJZnJhbWUtPnR5cGUgPSBIRE1JX0lORk9GUkFNRV9UWVBF X05UU0NfVkJJOworCWZyYW1lLT52ZXJzaW9uID0gMTsKKwlmcmFtZS0+bGVuZ3RoID0gbGVuZ3Ro OworCisJbWVtY3B5KGZyYW1lLT5wZXNfZGF0YV9maWVsZCwgcGVzX2RhdGFfZmllbGQsIGxlbmd0 aCk7CisKKwlyZXR1cm4gMDsKK30KK0VYUE9SVF9TWU1CT0woaGRtaV9udHNjX3ZiaV9pbmZvZnJh bWVfaW5pdCk7CisKK3N0YXRpYyBpbnQgaGRtaV9udHNjX3ZiaV9pbmZvZnJhbWVfY2hlY2tfb25s eShjb25zdCBzdHJ1Y3QgaGRtaV9udHNjX3ZiaV9pbmZvZnJhbWUgKmZyYW1lKQoreworCWlmIChm cmFtZS0+dHlwZSAhPSBIRE1JX0lORk9GUkFNRV9UWVBFX05UU0NfVkJJIHx8CisJICAgIGZyYW1l LT52ZXJzaW9uICE9IDEgfHwKKwkgICAgZnJhbWUtPmxlbmd0aCA8IDEgfHwgZnJhbWUtPmxlbmd0 aCA+IDI3KQorCQlyZXR1cm4gLUVJTlZBTDsKKworCWlmIChmcmFtZS0+cGVzX2RhdGFfZmllbGRb MF0gIT0gMHg5OSkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwlyZXR1cm4gMDsKK30KKworLyoqCisg KiBoZG1pX250c2NfdmJpX2luZm9mcmFtZV9jaGVjaygpIC0gQ2hlY2sgYW5kIGNoZWNrIGEgSERN SSBOVFNDIFZCSSBpbmZvZnJhbWUKKyAqIEBmcmFtZTogSERNSSBOVFNDIFZCSSBpbmZvZnJhbWUK KyAqCisgKiBWYWxpZGF0ZXMgdGhhdCB0aGUgaW5mb2ZyYW1lIGlzIGNvbnNpc3RlbnQgYW5kIHVw ZGF0ZXMgZGVyaXZlZCBmaWVsZHMKKyAqIChlZy4gbGVuZ3RoKSBiYXNlZCBvbiBvdGhlciBmaWVs ZHMuCisgKgorICogUmV0dXJucyAwIG9uIHN1Y2Nlc3Mgb3IgYSBuZWdhdGl2ZSBlcnJvciBjb2Rl IG9uIGZhaWx1cmUuCisgKi8KK2ludCBoZG1pX250c2NfdmJpX2luZm9mcmFtZV9jaGVjayhzdHJ1 Y3QgaGRtaV9udHNjX3ZiaV9pbmZvZnJhbWUgKmZyYW1lKQoreworCXJldHVybiBoZG1pX250c2Nf dmJpX2luZm9mcmFtZV9jaGVja19vbmx5KGZyYW1lKTsKK30KK0VYUE9SVF9TWU1CT0woaGRtaV9u dHNjX3ZiaV9pbmZvZnJhbWVfY2hlY2spOworCisvKioKKyAqIGhkbWlfbnRzY192YmlfaW5mb2Zy YW1lX3BhY2tfb25seSgpIC0gd3JpdGUgSERNSSBOVFNDIFZCSSBpbmZvZnJhbWUgdG8gYmluYXJ5 IGJ1ZmZlcgorICogQGZyYW1lOiBIRE1JIE5UU0MgVkJJIGluZm9mcmFtZQorICogQGJ1ZmZlcjog ZGVzdGluYXRpb24gYnVmZmVyCisgKiBAc2l6ZTogc2l6ZSBvZiBidWZmZXIKKyAqCisgKiBQYWNr cyB0aGUgaW5mb3JtYXRpb24gY29udGFpbmVkIGluIHRoZSBAZnJhbWUgc3RydWN0dXJlIGludG8g YSBiaW5hcnkKKyAqIHJlcHJlc2VudGF0aW9uIHRoYXQgY2FuIGJlIHdyaXR0ZW4gaW50byB0aGUg Y29ycmVzcG9uZGluZyBjb250cm9sbGVyCisgKiByZWdpc3RlcnMuIEFsc28gY29tcHV0ZXMgdGhl IGNoZWNrc3VtIGFzIHJlcXVpcmVkIGJ5IHNlY3Rpb24gNS4zLjUgb2YKKyAqIHRoZSBIRE1JIDEu NCBzcGVjaWZpY2F0aW9uLgorICoKKyAqIFJldHVybnMgdGhlIG51bWJlciBvZiBieXRlcyBwYWNr ZWQgaW50byB0aGUgYmluYXJ5IGJ1ZmZlciBvciBhIG5lZ2F0aXZlCisgKiBlcnJvciBjb2RlIG9u IGZhaWx1cmUuCisgKi8KK3NzaXplX3QgaGRtaV9udHNjX3ZiaV9pbmZvZnJhbWVfcGFja19vbmx5 KGNvbnN0IHN0cnVjdCBoZG1pX250c2NfdmJpX2luZm9mcmFtZSAqZnJhbWUsCisJCQkJCSAgdm9p ZCAqYnVmZmVyLCBzaXplX3Qgc2l6ZSkKK3sKKwl1OCAqcHRyID0gYnVmZmVyOworCXNpemVfdCBs ZW5ndGg7CisJaW50IHJldDsKKworCXJldCA9IGhkbWlfbnRzY192YmlfaW5mb2ZyYW1lX2NoZWNr X29ubHkoZnJhbWUpOworCWlmIChyZXQpCisJCXJldHVybiByZXQ7CisKKwlsZW5ndGggPSBIRE1J X0lORk9GUkFNRV9IRUFERVJfU0laRSArIGZyYW1lLT5sZW5ndGg7CisKKwlpZiAoc2l6ZSA8IGxl bmd0aCkKKwkJcmV0dXJuIC1FTk9TUEM7CisKKwltZW1zZXQoYnVmZmVyLCAwLCBzaXplKTsKKwor CXB0clswXSA9IGZyYW1lLT50eXBlOworCXB0clsxXSA9IGZyYW1lLT52ZXJzaW9uOworCXB0clsy XSA9IGZyYW1lLT5sZW5ndGg7CisJcHRyWzNdID0gMDsgLyogY2hlY2tzdW0gKi8KKworCS8qIHN0 YXJ0IGluZm9mcmFtZSBwYXlsb2FkICovCisJcHRyICs9IEhETUlfSU5GT0ZSQU1FX0hFQURFUl9T SVpFOworCisJbWVtY3B5KHB0ciwgZnJhbWUtPnBlc19kYXRhX2ZpZWxkLCBmcmFtZS0+bGVuZ3Ro KTsKKworCWhkbWlfaW5mb2ZyYW1lX3NldF9jaGVja3N1bShidWZmZXIsIGxlbmd0aCk7CisKKwly ZXR1cm4gbGVuZ3RoOworfQorRVhQT1JUX1NZTUJPTChoZG1pX250c2NfdmJpX2luZm9mcmFtZV9w YWNrX29ubHkpOworCisvKioKKyAqIGhkbWlfbnRzY192YmlfaW5mb2ZyYW1lX3BhY2soKSAtIGNo ZWNrIGEgSERNSSBOVFNDIFZCSSBpbmZvZnJhbWUsCisgKiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBhbmQgd3JpdGUgaXQgdG8gYmluYXJ5IGJ1ZmZlcgorICogQGZyYW1lOiBIRE1J IE5UU0MgVkJJIGluZm9mcmFtZQorICogQGJ1ZmZlcjogZGVzdGluYXRpb24gYnVmZmVyCisgKiBA c2l6ZTogc2l6ZSBvZiBidWZmZXIKKyAqCisgKiBWYWxpZGF0ZXMgdGhhdCB0aGUgaW5mb2ZyYW1l IGlzIGNvbnNpc3RlbnQgYW5kIHVwZGF0ZXMgZGVyaXZlZCBmaWVsZHMKKyAqIChlZy4gbGVuZ3Ro KSBiYXNlZCBvbiBvdGhlciBmaWVsZHMsIGFmdGVyIHdoaWNoIHBhY2tzIHRoZSBpbmZvcm1hdGlv bgorICogY29udGFpbmVkIGluIHRoZSBAZnJhbWUgc3RydWN0dXJlIGludG8gYSBiaW5hcnkgcmVw cmVzZW50YXRpb24gdGhhdAorICogY2FuIGJlIHdyaXR0ZW4gaW50byB0aGUgY29ycmVzcG9uZGlu ZyBjb250cm9sbGVyIHJlZ2lzdGVycy4gVGhpcyBmdW5jdGlvbgorICogYWxzbyBjb21wdXRlcyB0 aGUgY2hlY2tzdW0gYXMgcmVxdWlyZWQgYnkgc2VjdGlvbiA1LjMuNSBvZiB0aGUgSERNSSAxLjQK KyAqIHNwZWNpZmljYXRpb24uCisgKgorICogUmV0dXJucyB0aGUgbnVtYmVyIG9mIGJ5dGVzIHBh Y2tlZCBpbnRvIHRoZSBiaW5hcnkgYnVmZmVyIG9yIGEgbmVnYXRpdmUKKyAqIGVycm9yIGNvZGUg b24gZmFpbHVyZS4KKyAqLworc3NpemVfdCBoZG1pX250c2NfdmJpX2luZm9mcmFtZV9wYWNrKHN0 cnVjdCBoZG1pX250c2NfdmJpX2luZm9mcmFtZSAqZnJhbWUsCisJCQkJICAgICB2b2lkICpidWZm ZXIsIHNpemVfdCBzaXplKQoreworCWludCByZXQ7CisKKwlyZXQgPSBoZG1pX250c2NfdmJpX2lu Zm9mcmFtZV9jaGVjayhmcmFtZSk7CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsKKworCXJldHVy biBoZG1pX250c2NfdmJpX2luZm9mcmFtZV9wYWNrX29ubHkoZnJhbWUsIGJ1ZmZlciwgc2l6ZSk7 Cit9CitFWFBPUlRfU1lNQk9MKGhkbWlfbnRzY192YmlfaW5mb2ZyYW1lX3BhY2spOworCiAvKioK ICAqIGhkbWlfaW5mb2ZyYW1lX2NoZWNrKCkgLSBjaGVjayBhIEhETUkgaW5mb2ZyYW1lCiAgKiBA ZnJhbWU6IEhETUkgaW5mb2ZyYW1lCkBAIC04NTQsNiArOTg3LDggQEAgaGRtaV9pbmZvZnJhbWVf Y2hlY2sodW5pb24gaGRtaV9pbmZvZnJhbWUgKmZyYW1lKQogCQlyZXR1cm4gaGRtaV92ZW5kb3Jf YW55X2luZm9mcmFtZV9jaGVjaygmZnJhbWUtPnZlbmRvcik7CiAJY2FzZSBIRE1JX0lORk9GUkFN RV9UWVBFX01QRUdfU09VUkNFOgogCQlyZXR1cm4gaGRtaV9tcGVnX3NvdXJjZV9pbmZvZnJhbWVf Y2hlY2soJmZyYW1lLT5tcGVnX3NvdXJjZSk7CisJY2FzZSBIRE1JX0lORk9GUkFNRV9UWVBFX05U U0NfVkJJOgorCQlyZXR1cm4gaGRtaV9udHNjX3ZiaV9pbmZvZnJhbWVfY2hlY2soJmZyYW1lLT5u dHNjX3ZiaSk7CiAJZGVmYXVsdDoKIAkJV0FSTigxLCAiQmFkIGluZm9mcmFtZSB0eXBlICVkXG4i LCBmcmFtZS0+YW55LnR5cGUpOwogCQlyZXR1cm4gLUVJTlZBTDsKQEAgLTkwMSw2ICsxMDM2LDEw IEBAIGhkbWlfaW5mb2ZyYW1lX3BhY2tfb25seShjb25zdCB1bmlvbiBoZG1pX2luZm9mcmFtZSAq ZnJhbWUsIHZvaWQgKmJ1ZmZlciwgc2l6ZV90CiAJCWxlbmd0aCA9IGhkbWlfbXBlZ19zb3VyY2Vf aW5mb2ZyYW1lX3BhY2tfb25seSgmZnJhbWUtPm1wZWdfc291cmNlLAogCQkJCQkJCSAgICAgIGJ1 ZmZlciwgc2l6ZSk7CiAJCWJyZWFrOworCWNhc2UgSERNSV9JTkZPRlJBTUVfVFlQRV9OVFNDX1ZC SToKKwkJbGVuZ3RoID0gaGRtaV9udHNjX3ZiaV9pbmZvZnJhbWVfcGFja19vbmx5KCZmcmFtZS0+ bnRzY192YmksCisJCQkJCQkJICAgYnVmZmVyLCBzaXplKTsKKwkJYnJlYWs7CiAJZGVmYXVsdDoK IAkJV0FSTigxLCAiQmFkIGluZm9mcmFtZSB0eXBlICVkXG4iLCBmcmFtZS0+YW55LnR5cGUpOwog CQlsZW5ndGggPSAtRUlOVkFMOwpAQCAtOTUxLDYgKzEwOTAsMTAgQEAgaGRtaV9pbmZvZnJhbWVf cGFjayh1bmlvbiBoZG1pX2luZm9mcmFtZSAqZnJhbWUsCiAJCWxlbmd0aCA9IGhkbWlfbXBlZ19z b3VyY2VfaW5mb2ZyYW1lX3BhY2soJmZyYW1lLT5tcGVnX3NvdXJjZSwKIAkJCQkJCQkgYnVmZmVy LCBzaXplKTsKIAkJYnJlYWs7CisJY2FzZSBIRE1JX0lORk9GUkFNRV9UWVBFX05UU0NfVkJJOgor CQlsZW5ndGggPSBoZG1pX250c2NfdmJpX2luZm9mcmFtZV9wYWNrKCZmcmFtZS0+bnRzY192Ymks CisJCQkJCQkgICAgICBidWZmZXIsIHNpemUpOworCQlicmVhazsKIAlkZWZhdWx0OgogCQlXQVJO KDEsICJCYWQgaW5mb2ZyYW1lIHR5cGUgJWRcbiIsIGZyYW1lLT5hbnkudHlwZSk7CiAJCWxlbmd0 aCA9IC1FSU5WQUw7CkBAIC05NzUsNiArMTExOCw4IEBAIHN0YXRpYyBjb25zdCBjaGFyICpoZG1p X2luZm9mcmFtZV90eXBlX2dldF9uYW1lKGVudW0gaGRtaV9pbmZvZnJhbWVfdHlwZSB0eXBlKQog CQlyZXR1cm4gIkF1ZGlvIjsKIAljYXNlIEhETUlfSU5GT0ZSQU1FX1RZUEVfTVBFR19TT1VSQ0U6 CiAJCXJldHVybiAiTVBFRyBTb3VyY2UiOworCWNhc2UgSERNSV9JTkZPRlJBTUVfVFlQRV9OVFND X1ZCSToKKwkJcmV0dXJuICJOVFNDIFZCSSI7CiAJfQogCXJldHVybiAiUmVzZXJ2ZWQiOwogfQpA QCAtMTUyNiw2ICsxNjcxLDIyIEBAIHN0YXRpYyB2b2lkIGhkbWlfbXBlZ19zb3VyY2VfaW5mb2Zy YW1lX2xvZyhjb25zdCBjaGFyICpsZXZlbCwKIAkJIGZyYW1lLT5maWVsZF9yZXBlYXQgPyAiWWVz IiA6ICJObyIpOwogfQogCisvKioKKyAqIGhkbWlfbnRzY192YmlfaW5mb2ZyYW1lX2xvZygpIC0g bG9nIGluZm8gb2YgSERNSSBOVFNDIFZCSSBpbmZvZnJhbWUKKyAqIEBsZXZlbDogbG9nZ2luZyBs ZXZlbAorICogQGRldjogZGV2aWNlCisgKiBAZnJhbWU6IEhETUkgTlRTQyBWQkkgaW5mb2ZyYW1l CisgKi8KK3N0YXRpYyB2b2lkIGhkbWlfbnRzY192YmlfaW5mb2ZyYW1lX2xvZyhjb25zdCBjaGFy ICpsZXZlbCwKKwkJCQkJc3RydWN0IGRldmljZSAqZGV2LAorCQkJCQljb25zdCBzdHJ1Y3QgaGRt aV9udHNjX3ZiaV9pbmZvZnJhbWUgKmZyYW1lKQoreworCWhkbWlfaW5mb2ZyYW1lX2xvZ19oZWFk ZXIobGV2ZWwsIGRldiwKKwkJCQkgIChjb25zdCBzdHJ1Y3QgaGRtaV9hbnlfaW5mb2ZyYW1lICop ZnJhbWUpOworCisJaGRtaV9sb2coIiAgICAlKnBoXG4iLCBmcmFtZS0+bGVuZ3RoLCBmcmFtZS0+ cGVzX2RhdGFfZmllbGQpOworfQorCiAvKioKICAqIGhkbWlfaW5mb2ZyYW1lX2xvZygpIC0gbG9n IGluZm8gb2YgSERNSSBpbmZvZnJhbWUKICAqIEBsZXZlbDogbG9nZ2luZyBsZXZlbApAQCAtMTU1 Miw2ICsxNzEzLDkgQEAgdm9pZCBoZG1pX2luZm9mcmFtZV9sb2coY29uc3QgY2hhciAqbGV2ZWws CiAJY2FzZSBIRE1JX0lORk9GUkFNRV9UWVBFX01QRUdfU09VUkNFOgogCQloZG1pX21wZWdfc291 cmNlX2luZm9mcmFtZV9sb2cobGV2ZWwsIGRldiwgJmZyYW1lLT5tcGVnX3NvdXJjZSk7CiAJCWJy ZWFrOworCWNhc2UgSERNSV9JTkZPRlJBTUVfVFlQRV9OVFNDX1ZCSToKKwkJaGRtaV9udHNjX3Zi aV9pbmZvZnJhbWVfbG9nKGxldmVsLCBkZXYsICZmcmFtZS0+bnRzY192YmkpOworCQlicmVhazsK IAl9CiB9CiBFWFBPUlRfU1lNQk9MKGhkbWlfaW5mb2ZyYW1lX2xvZyk7CkBAIC0xODQwLDYgKzIw MDQsNDcgQEAgc3RhdGljIGludCBoZG1pX21wZWdfc291cmNlX2luZm9mcmFtZV91bnBhY2soc3Ry dWN0IGhkbWlfbXBlZ19zb3VyY2VfaW5mb2ZyYW1lICoKIAlyZXR1cm4gMDsKIH0KIAorLyoqCisg KiBoZG1pX250c2NfdmJpX2luZm9mcmFtZV91bnBhY2soKSAtIHVucGFjayBiaW5hcnkgYnVmZmVy IHRvIGEgSERNSSBNUEVHIFNvdXJjZSBpbmZvZnJhbWUKKyAqIEBmcmFtZTogSERNSSBNUEVHIFNv dXJjZSBpbmZvZnJhbWUKKyAqIEBidWZmZXI6IHNvdXJjZSBidWZmZXIKKyAqIEBzaXplOiBzaXpl IG9mIGJ1ZmZlcgorICoKKyAqIFVucGFja3MgdGhlIGluZm9ybWF0aW9uIGNvbnRhaW5lZCBpbiBi aW5hcnkgQGJ1ZmZlciBpbnRvIGEgc3RydWN0dXJlZAorICogQGZyYW1lIG9mIHRoZSBIRE1JIE1Q RUcgU291cmNlIGluZm9ybWF0aW9uIGZyYW1lLgorICogQWxzbyB2ZXJpZmllcyB0aGUgY2hlY2tz dW0gYXMgcmVxdWlyZWQgYnkgc2VjdGlvbiA1LjMuNSBvZiB0aGUgSERNSSAxLjQKKyAqIHNwZWNp ZmljYXRpb24uCisgKgorICogUmV0dXJucyAwIG9uIHN1Y2Nlc3Mgb3IgYSBuZWdhdGl2ZSBlcnJv ciBjb2RlIG9uIGZhaWx1cmUuCisgKi8KK3N0YXRpYyBpbnQgaGRtaV9udHNjX3ZiaV9pbmZvZnJh bWVfdW5wYWNrKHN0cnVjdCBoZG1pX250c2NfdmJpX2luZm9mcmFtZSAqZnJhbWUsCisJCQkJCSAg Y29uc3Qgdm9pZCAqYnVmZmVyLCBzaXplX3Qgc2l6ZSkKK3sKKwljb25zdCB1OCAqcHRyID0gYnVm ZmVyOworCXNpemVfdCBsZW5ndGg7CisKKwlpZiAoc2l6ZSA8IEhETUlfSU5GT0ZSQU1FX0hFQURF Ul9TSVpFKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCWlmIChwdHJbMF0gIT0gSERNSV9JTkZPRlJB TUVfVFlQRV9OVFNDX1ZCSSB8fAorCSAgICBwdHJbMV0gIT0gMSB8fAorCSAgICBwdHJbMl0gPCAx IHx8IHB0clsyXSA+IDI3KQorCQlyZXR1cm4gLUVJTlZBTDsKKworCWxlbmd0aCA9IHB0clsyXTsK KworCWlmIChzaXplIDwgSERNSV9JTkZPRlJBTUVfSEVBREVSX1NJWkUgKyBsZW5ndGgpCisJCXJl dHVybiAtRUlOVkFMOworCisJaWYgKGhkbWlfaW5mb2ZyYW1lX2NoZWNrc3VtKGJ1ZmZlciwKKwkJ CQkgICAgSERNSV9JTkZPRlJBTUVfSEVBREVSX1NJWkUgKyBsZW5ndGgpICE9IDApCisJCXJldHVy biAtRUlOVkFMOworCisJcHRyICs9IEhETUlfSU5GT0ZSQU1FX0hFQURFUl9TSVpFOworCisJcmV0 dXJuIGhkbWlfbnRzY192YmlfaW5mb2ZyYW1lX2luaXQoZnJhbWUsIHB0ciwgbGVuZ3RoKTsKK30K KwogLyoqCiAgKiBoZG1pX2luZm9mcmFtZV91bnBhY2soKSAtIHVucGFjayBiaW5hcnkgYnVmZmVy IHRvIGEgSERNSSBpbmZvZnJhbWUKICAqIEBmcmFtZTogSERNSSBpbmZvZnJhbWUKQEAgLTE4Nzgs NiArMjA4Myw5IEBAIGludCBoZG1pX2luZm9mcmFtZV91bnBhY2sodW5pb24gaGRtaV9pbmZvZnJh bWUgKmZyYW1lLAogCWNhc2UgSERNSV9JTkZPRlJBTUVfVFlQRV9NUEVHX1NPVVJDRToKIAkJcmV0 ID0gaGRtaV9tcGVnX3NvdXJjZV9pbmZvZnJhbWVfdW5wYWNrKCZmcmFtZS0+bXBlZ19zb3VyY2Us IGJ1ZmZlciwgc2l6ZSk7CiAJCWJyZWFrOworCWNhc2UgSERNSV9JTkZPRlJBTUVfVFlQRV9OVFND X1ZCSToKKwkJcmV0ID0gaGRtaV9udHNjX3ZiaV9pbmZvZnJhbWVfdW5wYWNrKCZmcmFtZS0+bnRz Y192YmksIGJ1ZmZlciwgc2l6ZSk7CisJCWJyZWFrOwogCWRlZmF1bHQ6CiAJCXJldCA9IC1FSU5W QUw7CiAJCWJyZWFrOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9oZG1pLmggYi9pbmNsdWRl L2xpbnV4L2hkbWkuaAppbmRleCAyYzkzMjJmNzUzOGQuLjM4MjE1MTZiMzM2YyAxMDA2NDQKLS0t IGEvaW5jbHVkZS9saW51eC9oZG1pLmgKKysrIGIvaW5jbHVkZS9saW51eC9oZG1pLmgKQEAgLTQ4 LDYgKzQ4LDcgQEAgZW51bSBoZG1pX2luZm9mcmFtZV90eXBlIHsKIAlIRE1JX0lORk9GUkFNRV9U WVBFX1NQRCA9IDB4ODMsCiAJSERNSV9JTkZPRlJBTUVfVFlQRV9BVURJTyA9IDB4ODQsCiAJSERN SV9JTkZPRlJBTUVfVFlQRV9NUEVHX1NPVVJDRSA9IDB4ODUsCisJSERNSV9JTkZPRlJBTUVfVFlQ RV9OVFNDX1ZCSSA9IDB4ODYsCiB9OwogCiAjZGVmaW5lIEhETUlfSUVFRV9PVUkgMHgwMDBjMDMK QEAgLTM2Miw2ICszNjMsMjEgQEAgc3NpemVfdCBoZG1pX21wZWdfc291cmNlX2luZm9mcmFtZV9w YWNrX29ubHkoY29uc3Qgc3RydWN0IGhkbWlfbXBlZ19zb3VyY2VfaW5mb2YKIAkJCQkJICAgICB2 b2lkICpidWZmZXIsIHNpemVfdCBzaXplKTsKIGludCBoZG1pX21wZWdfc291cmNlX2luZm9mcmFt ZV9jaGVjayhzdHJ1Y3QgaGRtaV9tcGVnX3NvdXJjZV9pbmZvZnJhbWUgKmZyYW1lKTsKIAorc3Ry dWN0IGhkbWlfbnRzY192YmlfaW5mb2ZyYW1lIHsKKwllbnVtIGhkbWlfaW5mb2ZyYW1lX3R5cGUg dHlwZTsKKwl1bnNpZ25lZCBjaGFyIHZlcnNpb247CisJdW5zaWduZWQgY2hhciBsZW5ndGg7CisJ dW5zaWduZWQgY2hhciBwZXNfZGF0YV9maWVsZFsyN107Cit9OworCitpbnQgaGRtaV9udHNjX3Zi aV9pbmZvZnJhbWVfaW5pdChzdHJ1Y3QgaGRtaV9udHNjX3ZiaV9pbmZvZnJhbWUgKmZyYW1lLAor CQkJCSBjb25zdCB2b2lkICpwZXNfZGF0YV9maWVsZCwgc2l6ZV90IGxlbmd0aCk7Citzc2l6ZV90 IGhkbWlfbnRzY192YmlfaW5mb2ZyYW1lX3BhY2soc3RydWN0IGhkbWlfbnRzY192YmlfaW5mb2Zy YW1lICpmcmFtZSwKKwkJCQkgICAgIHZvaWQgKmJ1ZmZlciwgc2l6ZV90IHNpemUpOworc3NpemVf dCBoZG1pX250c2NfdmJpX2luZm9mcmFtZV9wYWNrX29ubHkoY29uc3Qgc3RydWN0IGhkbWlfbnRz Y192YmlfaW5mb2ZyYW1lICpmcmFtZSwKKwkJCQkJICB2b2lkICpidWZmZXIsIHNpemVfdCBzaXpl KTsKK2ludCBoZG1pX250c2NfdmJpX2luZm9mcmFtZV9jaGVjayhzdHJ1Y3QgaGRtaV9udHNjX3Zi aV9pbmZvZnJhbWUgKmZyYW1lKTsKKwogLyoqCiAgKiB1bmlvbiBoZG1pX2luZm9mcmFtZSAtIG92 ZXJhbGwgdW5pb24gb2YgYWxsIGFic3RyYWN0IGluZm9mcmFtZSByZXByZXNlbnRhdGlvbnMKICAq IEBhbnk6IGdlbmVyaWMgaW5mb2ZyYW1lCkBAIC0zNzAsNiArMzg2LDcgQEAgaW50IGhkbWlfbXBl Z19zb3VyY2VfaW5mb2ZyYW1lX2NoZWNrKHN0cnVjdCBoZG1pX21wZWdfc291cmNlX2luZm9mcmFt ZSAqZnJhbWUpOwogICogQHZlbmRvcjogdW5pb24gb2YgYWxsIHZlbmRvciBpbmZvZnJhbWVzCiAg KiBAYXVkaW86IGF1ZGlvIGluZm9mcmFtZQogICogQG1wZWdfc291cmNlOiBtcGVnIHNvdXJjZSBp bmZvZnJhbWUKKyAqIEBudHNjX3ZiaTogbnRzYyB2YmkgaW5mb2ZyYW1lCiAgKgogICogVGhpcyBp cyB1c2VkIGJ5IHRoZSBnZW5lcmljIHBhY2sgZnVuY3Rpb24uIFRoaXMgd29ya3Mgc2luY2UgYWxs IGluZm9mcmFtZXMKICAqIGhhdmUgdGhlIHNhbWUgaGVhZGVyIHdoaWNoIGFsc28gaW5kaWNhdGVz IHdoaWNoIHR5cGUgb2YgaW5mb2ZyYW1lIHNob3VsZCBiZQpAQCAtMzgyLDYgKzM5OSw3IEBAIHVu aW9uIGhkbWlfaW5mb2ZyYW1lIHsKIAl1bmlvbiBoZG1pX3ZlbmRvcl9hbnlfaW5mb2ZyYW1lIHZl bmRvcjsKIAlzdHJ1Y3QgaGRtaV9hdWRpb19pbmZvZnJhbWUgYXVkaW87CiAJc3RydWN0IGhkbWlf bXBlZ19zb3VyY2VfaW5mb2ZyYW1lIG1wZWdfc291cmNlOworCXN0cnVjdCBoZG1pX250c2NfdmJp X2luZm9mcmFtZSBudHNjX3ZiaTsKIH07CiAKIHNzaXplX3QgaGRtaV9pbmZvZnJhbWVfcGFjayh1 bmlvbiBoZG1pX2luZm9mcmFtZSAqZnJhbWUsIHZvaWQgKmJ1ZmZlciwKLS0gCjIuMTYuNAoKX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1h aWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMu ZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==