From mboxrd@z Thu Jan 1 00:00:00 1970 From: Shashank Sharma Subject: [PATCH v2 06/14] drm/edid: parse YCBCR420 videomodes from EDID Date: Thu, 13 Jul 2017 21:03:12 +0530 Message-ID: <1499960000-9232-7-git-send-email-shashank.sharma@intel.com> References: <1499960000-9232-1-git-send-email-shashank.sharma@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1499960000-9232-1-git-send-email-shashank.sharma@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: Jose Abreu , Emil Velikov List-Id: dri-devel@lists.freedesktop.org SERNSSAyLjAgc3BlYyBhZGRzIHN1cHBvcnQgZm9yIFlDQkNSNDIwIHN1Yi1zYW1wbGVkIG91dHB1 dC4KQ0VBLTg2MS1GIGFkZHMgdHdvIG5ldyBibG9ja3MgaW4gRURJRCdzIENFQSBleHRlbnNpb24g YmxvY2tzLAp0byBwcm92aWRlIGluZm9ybWF0aW9uIGFib3V0IHNpbmsncyBZQ0JDUjQyMCBvdXRw dXQgY2FwYWJpbGl0aWVzLgoKVGhlc2UgYmxvY2tzIGFyZToKCi0gWUNCQ1I0MjB2ZGIoWUNCQ1Ig NDIwIHZpZGVvIGRhdGEgYmxvY2spOgpUaGlzIGJsb2NrIGNvbnRhaW5zIFZJQ3Mgb2YgdmlkZW8g bW9kZXMsIHdoaWNoIGNhbiBiZSBzb3Bwb3J0ZWQgb25seQppbiBZQ0JDUjQyMCBvdXRwdXQgbW9k ZSAoTm90IGluIFJHQi9ZQ0JDUjQ0NC80MjIuIEl0cyBsaWtlIGEgbm9ybWFsClNWRCBibG9jaywg dmFsaWQgZm9yIFlDQkNSNDIwIG1vZGVzIG9ubHkuCgotIFlDQkNSNDIwY21kYihZQ0JDUiA0MjAg Y2FwYWJpbGl0eSBtYXAgZGF0YSBibG9jayk6ClRoaXMgYmxvY2sgZ2l2ZXMgaW5mb3JtYXRpb24g YWJvdXQgdmlkZW8gbW9kZXMgd2hpY2ggY2FuIHN1cHBvcnQKWUNCQ1I0MjAgb3V0cHV0IG1vZGUg YWxzbyAoYWxvbmcgd2l0aCBSR0IsWUNCQ1I0NDQvNDIyIGV0YykgVGhpcwpibG9jayBjb250YWlu cyBhIGJpdG1hcCBpbmRleCBvZiBub3JtYWwgc3ZkIHZpZGVvbW9kZXMsIHdoaWNoIGNhbgpzdXBw b3J0IFlDQkNSNDIwIG91dHB1dCB0b28uClNvIGlmIGJpdCAwIGZyb20gZmlyc3QgdmNiIGJ5dGUg aXMgc2V0LCBmaXJzdCB2aWRlbyBtb2RlIGluIHRoZSBzdmQKbGlzdCBjYW4gc3VwcG9ydCBZQ0JD UjQyMCBvdXRwdXQgdG9vLiBCaXQgMSBtZWFucyBzZWNvbmQgdmlkZW8gbW9kZQpmcm9tIHN2ZCBs aXN0IGNhbiBzdXBwb3J0IFlDQkNSNDIwIG91dHB1dCB0b28sIGFuZCBzbyBvbi4KClRoaXMgcGF0 Y2ggYWRkcyB0d28gYml0bWFwcyBpbiBkaXNwbGF5J3MgaGRtaV9pbmZvIHN0cnVjdHVyZSwgb25l IGVhY2gKZm9yIFZDQiBhbmQgVkRCIG1vZGVzLiBJZiB0aGUgc291cmNlIGlzIEhETUkgMi4wIGNh cGFibGUsIHRoaXMgcGF0Y2gKYWRkczoKLSBWREIgbW9kZXMgKFlDQkNSIDQyMCBvbmx5IG1vZGVz KSBpbiBjb25uZWN0b3IncyBtb2RlIGxpc3QsIGFsc28gbWFrZXMKICBhbiBlbnRyeSBpbiB0aGUg dmRiX2JpdG1hcCBwZXIgdmljLgotIFZDQiBtb2RlcyAoWUNCQ1IgNDIwIGFsc28gbW9kZXMpIG9u bHkgZW50cnkgaW4gdGhlIHZjYl9iaXRtYXAuCgpDYzogVmlsbGUgU3lyamFsYSA8dmlsbGUuc3ly amFsYUBsaW51eC5pbnRlbC5jb20+CkNjOiBKb3NlIEFicmV1IDxqb2FicmV1QHN5bm9wc3lzLmNv bT4KQ2M6IEVtaWwgVmVsaWtvdiA8ZW1pbC5sLnZlbGlrb3ZAZ21haWwuY29tPgoKVjI6IEFkZHJl c3NlZAogICAgUmV2aWV3IGNvbW1lbnRzIGZyb20gRW1pbDoKICAgIC0gVXNlIDFVTEw8PGkgaW5z dGVhZCBvZiAxPDxpIHRvIG1ha2Ugc3VyZSB0aGUgb3V0cHV0IGlzIDY0Yml0LgogICAgLSBVc2Ug dGhlIHN1Z2dlc3RlZCBtZXRob2QgZm9yIHVwZGF0aW5nIGRibWFwLgogICAgLSBBZGQgZG9jdW1l bnRhdGlvbiBmb3IgWUNCQ1I0MjBfdmNiX21hcCB0byBmaXgga2J1aWxkIHdhcm5pbmcuCgogICAg UmV2aWV3IGNvbW1lbnRzIGZyb20gVmlsbGU6CiAgICAtIERvIG5vdCBleHBvc2UgdGhlIFlDQkNS NDIwIGZsYWdzIGluIHVhYmkgbGF5ZXIsIGtlZXAgaXQgaW50ZXJuYWwuCiAgICAtIFNhdmUgYSBt YXAgb2YgWUNCQ1I0MjAgbW9kZXMgZm9yIGZ1dHVyZSByZWZlcmVuY2UuCiAgICAtIENoZWNrIGRi IGxlbmd0aCBiZWZvcmUgdHJ5aW5nIHRvIHBhcnNlIGV4dGVuZGVkIHRhZy4KICAgIC0gQWRkIGEg d2FybmluZyBpZiB0aGVyZSBhcmUgPiA2NCBtb2RlcyBpbiBjYXBhYmlsaXR5IG1hcCBibG9jay4K ICAgIC0gVXNlIHk0MjBjbWRiIGluIGZ1bmN0aW9uIG5hbWVzIGFuZCBtYWNyb3Mgd2hpbGUgZGVh bGluZyB3aXRoIHZjYgogICAgICB0byBiZSBhbGlnbmVkIHdpdGggc3BlYy4KICAgIC0gTW92ZSB0 aGUgZGlzcGxheSBpbmZvcm1hdGlvbiBwYXJzaW5nIGJsb2NrIGFoZWFkIG9mIG1vZGUgcGFyc2lu ZwogICAgICBibG9ja3MuCgpWMzogQWRkcmVzc2VkIGRlc2lnbi9yZXZpZXcgY29tbWVudHMgZnJv bSBWaWxsZQogICAgLSBEbyBub3QgYWRkIGZsYWdzIGluIHZpZGVvIG1vZGVzLCBlbHNlIHdlIGhh dmUgdG8gZXhwb3NlIHRoZW0gdG8gdXNlcgogICAgLSBUaGVyZSBzaG91bGQgbm90IGJlIGEgVUFC SSBjaGFuZ2UsIGFuZCBrZXJuZWwgc2hvdWxkIGRldGVjdCB0aGUKICAgICAgY2hvaWNlIG9mIHRo ZSBvdXRwdXQgYmFzZWQgb24gdHlwZSBvZiBtb2RlLCBhbmQgdGhlIGJpdG1hcHMuCiAgICAtIFVz ZSBzdGFuZGFyZCBiaXRvcHMgZnJvbSBrZXJuZWwgYml0bWFwIGhlYWRlciwgaW5zdGVhZCBvZiBj YWxjdWxhdGluZwogICAgICBiaXQgcG9zaXRpb25zIG1hbnVhbGx5LgoKVjQ6IEFkZHJlc3NlZCBy ZXZpZXcgY29tbWVudHMgZnJvbSBWaWxsZToKICAgIC0gcy95Y2Jjcl80MjBfdmRiL3k0MjB2ZGIK ICAgIC0gcy95Y2Jjcl80MjBfdmNiL3k0MjBjbWRiCiAgICAtIEJlIGxlc3MgdmVyYm9zZSBvbiBk ZXNjcmlwdGlvbiBvZiBkb195NDIwdmRiX21vZGVzCiAgICAtIE1vdmUgbmV3bW9kZSB2YXJpYWJs ZSBpbiB0aGUgbG9vcCBzY29wZS4KICAgIC0gVXNlIHN2ZF90b192aWMoKSB0byBnZXQgYSBWSUMs IGluc3RlYWQgb2YgMHg3ZgogICAgLSBSZW1vdmUgYml0bWFwIGRlc2NyaXB0aW9uIGZvciBDTURC IG1vZGVzICYgVkRCIG1vZGVzCiAgICAtIERvbnQgYWRkIGNvbm5lY3Rvci0+eWNiY3JfNDIwX2Fs bG93ZWQgY2hlY2sgZm9yIGNtZGIgbW9kZXMKICAgIC0gUmVtb3ZlICdsZW4nIHZhcmlhYmxlLCBp biBpc195NDIwY21kYiBmdW5jdGlvbiwgd2hpY2ggaXMgdXNlZAogICAgICBvbmx5IG9uY2UKICAg IC0gQWRkIGxlbmd0aCBjaGVjayBpbiBpc195NDIwdmRiIGZ1bmN0aW9uCiAgICAtIFJlbW92ZSB1 bm5lY2Vzc2FyeSBpZiAoIWRiKSBjaGVjayBpbiBmdW5jdGlvbiBwYXJzZV95NDIwY21kYl9iaXRt YXAKICAgIC0gRG8gbm90IGFkZCBwcmludCBhYm91dCBZQ0JDUiA0MjAgbW9kZXMKICAgIC0gRml4 IGluZGVudGF0aW9uIGluIGZldyBwbGFjZXMKICAgIC0gTW92ZSB5Y2JjcjQyMF9kY19tb2RlcyBp biBuZXh0IHBhdGNoLCB3aGVyZSBpdHMgdXNlZAogICAgLSBBZGQgYSBzZXBhcmF0ZSBwYXRjaCBm b3IgbW92ZW1lbnQgb2YgZHJtX2FkZF9kaXNwbGF5X2luZm8oKQoKVjU6IEFkZHJlc3NlZCByZXZp ZXcgY29tbWVudHMgZnJvbSBWaWxsZToKICAgIC0gQWRkIHRoZSBwYXRjaCB3aGljaCBjbGVhbnMg dXAgdGhlIGN1cnJlbnQgRVhURU5ERURfVEFHIHVzYWdlCiAgICAtIE1ha2UgeTQyMF9jbWRiX21h cCB1NjQKICAgIC0gRG8gbm90IGJsb2NrIHljYmNyNDIwIG1vZGVzIHdoaWxlIHBhcnNpbmcgdGhl IEVESUQsIHJhdGhlcgogICAgICBhZGQgYSBzZXBhcmF0ZSBoZWxwZXIgZnVuY3Rpb24gdG8gcHJ1 bmUgeWNiY3I0MjAtb25seSBtb2RlcyBmcm9tCiAgICAgIGNvbm5lY3RvcidzIHByb2JlZCBtb2Rl cy4KClY2OiBSZWJhc2UKVjc6IE1vdmUgdGhpcyBwYXRjaCBhZnRlciB0aGUgNDIwX29ubHkgdmFs aWRhdGlvbiBwYXRjaCAoVmlsbGUpCgpTaWduZWQtb2ZmLWJ5OiBTaGFzaGFuayBTaGFybWEgPHNo YXNoYW5rLnNoYXJtYUBpbnRlbC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2RybV9lZGlkLmMg IHwgMTQ4ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystCiBpbmNs dWRlL2RybS9kcm1fY29ubmVjdG9yLmggfCAgMTIgKysrKwogMiBmaWxlcyBjaGFuZ2VkLCAxNTgg aW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vZHJtX2VkaWQuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fZWRpZC5jCmluZGV4IDk2ZWVlNWEu LmI4NmFmYjkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fZWRpZC5jCisrKyBiL2Ry aXZlcnMvZ3B1L2RybS9kcm1fZWRpZC5jCkBAIC0yNzgzLDYgKzI3ODMsOCBAQCBhZGRfZGV0YWls ZWRfbW9kZXMoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3Rvciwgc3RydWN0IGVkaWQgKmVk aWQsCiAjZGVmaW5lIFNQRUFLRVJfQkxPQ0sJMHgwNAogI2RlZmluZSBVU0VfRVhURU5ERURfVEFH IDB4MDcKICNkZWZpbmUgRVhUX1ZJREVPX0NBUEFCSUxJVFlfQkxPQ0sgMHgwMAorI2RlZmluZSBF WFRfVklERU9fREFUQV9CTE9DS180MjAJMHgwRQorI2RlZmluZSBFWFRfVklERU9fQ0FQX0JMT0NL X1k0MjBDTURCIDB4MEYKICNkZWZpbmUgRURJRF9CQVNJQ19BVURJTwkoMSA8PCA2KQogI2RlZmlu ZSBFRElEX0NFQV9ZQ1JDQjQ0NAkoMSA8PCA1KQogI2RlZmluZSBFRElEX0NFQV9ZQ1JDQjQyMgko MSA8PCA0KQpAQCAtMzE1NSwxNSArMzE1Nyw3OSBAQCBkcm1fZGlzcGxheV9tb2RlX2Zyb21fdmlj X2luZGV4KHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsCiAJcmV0dXJuIG5ld21vZGU7 CiB9CiAKKy8qCisgKiBkb195NDIwdmRiX21vZGVzIC0gUGFyc2UgWUNCQ1IgNDIwIG9ubHkgbW9k ZXMKKyAqIEBjb25uZWN0b3I6IGNvbm5lY3RvciBjb3JyZXNwb25kaW5nIHRvIHRoZSBIRE1JIHNp bmsKKyAqIEBzdmRzOiBzdGFydCBvZiB0aGUgZGF0YSBibG9jayBvZiBDRUEgWUNCQ1IgNDIwIFZE QgorICogQGxlbjogbGVuZ3RoIG9mIHRoZSBDRUEgWUNCQ1IgNDIwIFZEQgorICoKKyAqIFBhcnNl IHRoZSBDRUEtODYxLUYgWUNCQ1IgNDIwIFZpZGVvIERhdGEgQmxvY2sgKFk0MjBWREIpCisgKiB3 aGljaCBjb250YWlucyBtb2RlcyB3aGljaCBjYW4gYmUgc3VwcG9ydGVkIGluIFlDQkNSIDQyMAor ICogb3V0cHV0IGZvcm1hdCBvbmx5LgorICovCitzdGF0aWMgaW50IGRvX3k0MjB2ZGJfbW9kZXMo c3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwKKwkJCQkgICBjb25zdCB1OCAqc3Zkcywg dTggc3Zkc19sZW4pCit7CisJaW50IG1vZGVzID0gMCwgaTsKKwlzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2ID0gY29ubmVjdG9yLT5kZXY7CisJc3RydWN0IGRybV9kaXNwbGF5X2luZm8gKmluZm8gPSAm Y29ubmVjdG9yLT5kaXNwbGF5X2luZm87CisJc3RydWN0IGRybV9oZG1pX2luZm8gKmhkbWkgPSAm aW5mby0+aGRtaTsKKworCWZvciAoaSA9IDA7IGkgPCBzdmRzX2xlbjsgaSsrKSB7CisJCXU4IHZp YyA9IHN2ZF90b192aWMoc3Zkc1tpXSk7CisJCXN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICpuZXdt b2RlOworCisJCW5ld21vZGUgPSBkcm1fbW9kZV9kdXBsaWNhdGUoZGV2LCAmZWRpZF9jZWFfbW9k ZXNbdmljXSk7CisJCWlmICghbmV3bW9kZSkKKwkJCWJyZWFrOworCQliaXRtYXBfc2V0KGhkbWkt Pnk0MjBfdmRiX21vZGVzLCB2aWMsIDEpOworCQlkcm1fbW9kZV9wcm9iZWRfYWRkKGNvbm5lY3Rv ciwgbmV3bW9kZSk7CisJCW1vZGVzKys7CisJfQorCisJaWYgKG1vZGVzID4gMCkKKwkJaW5mby0+ Y29sb3JfZm9ybWF0cyB8PSBEUk1fQ09MT1JfRk9STUFUX1lDUkNCNDIwOworCXJldHVybiBtb2Rl czsKK30KKworLyoKKyAqIGRybV9hZGRfY21kYl9tb2RlcyAtIEFkZCBhIFlDQkNSIDQyMCBtb2Rl IGludG8gYml0bWFwCisgKiBAY29ubmVjdG9yOiBjb25uZWN0b3IgY29ycmVzcG9uZGluZyB0byB0 aGUgSERNSSBzaW5rCisgKiBAdmljOiBDRUEgdmljIGZvciB0aGUgdmlkZW8gbW9kZSB0byBiZSBh ZGRlZCBpbiB0aGUgbWFwCisgKgorICogTWFrZXMgYW4gZW50cnkgZm9yIGEgdmlkZW9tb2RlIGlu IHRoZSBZQ0JDUiA0MjAgYml0bWFwCisgKi8KK3N0YXRpYyB2b2lkCitkcm1fYWRkX2NtZGJfbW9k ZXMoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwgdTggc3ZkKQoreworCXU4IHZpYyA9 IHN2ZF90b192aWMoc3ZkKTsKKwlzdHJ1Y3QgZHJtX2hkbWlfaW5mbyAqaGRtaSA9ICZjb25uZWN0 b3ItPmRpc3BsYXlfaW5mby5oZG1pOworCisJYml0bWFwX3NldChoZG1pLT55NDIwX2NtZGJfbW9k ZXMsIHZpYywgMSk7Cit9CisKIHN0YXRpYyBpbnQKIGRvX2NlYV9tb2RlcyhzdHJ1Y3QgZHJtX2Nv bm5lY3RvciAqY29ubmVjdG9yLCBjb25zdCB1OCAqZGIsIHU4IGxlbikKIHsKIAlpbnQgaSwgbW9k ZXMgPSAwOworCXN0cnVjdCBkcm1faGRtaV9pbmZvICpoZG1pID0gJmNvbm5lY3Rvci0+ZGlzcGxh eV9pbmZvLmhkbWk7CiAKIAlmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKIAkJc3RydWN0IGRy bV9kaXNwbGF5X21vZGUgKm1vZGU7CiAJCW1vZGUgPSBkcm1fZGlzcGxheV9tb2RlX2Zyb21fdmlj X2luZGV4KGNvbm5lY3RvciwgZGIsIGxlbiwgaSk7CiAJCWlmIChtb2RlKSB7CisJCQkvKgorCQkJ ICogWUNCQ1I0MjAgY2FwYWJpbGl0eSBibG9jayBjb250YWlucyBhIGJpdG1hcCB3aGljaAorCQkJ ICogZ2l2ZXMgdGhlIGluZGV4IG9mIENFQSBtb2RlcyBmcm9tIENFQSBWREIsIHdoaWNoCisJCQkg KiBjYW4gc3VwcG9ydCBZQ0JDUiA0MjAgc2FtcGxpbmcgb3V0cHV0IGFsc28gKGFwYXJ0CisJCQkg KiBmcm9tIFJHQi9ZQ0JDUjQ0NCBldGMpLgorCQkJICogRm9yIGV4YW1wbGUsIGlmIHRoZSBiaXQg MCBpbiBiaXRtYXAgaXMgc2V0LAorCQkJICogZmlyc3QgbW9kZSBpbiBWREIgY2FuIHN1cHBvcnQg WUNCQ1I0MjAgb3V0cHV0IHRvby4KKwkJCSAqIEFkZCBZQ0JDUjQyMCBtb2RlcyBvbmx5IGlmIHNp bmsgaXMgSERNSSAyLjAgY2FwYWJsZS4KKwkJCSAqLworCQkJaWYgKGhkbWktPnk0MjBfY21kYl9t YXAgJiAoMSA8PCBpKSkKKwkJCQlkcm1fYWRkX2NtZGJfbW9kZXMoY29ubmVjdG9yLCBkYltpXSk7 CisKIAkJCWRybV9tb2RlX3Byb2JlZF9hZGQoY29ubmVjdG9yLCBtb2RlKTsKIAkJCW1vZGVzKys7 CiAJCX0KQEAgLTM1MDUsOSArMzU3MSw3OCBAQCBzdGF0aWMgYm9vbCBjZWFfZGJfaXNfaGRtaV9m b3J1bV92c2RiKGNvbnN0IHU4ICpkYikKIAlyZXR1cm4gb3VpID09IEhETUlfRk9SVU1fSUVFRV9P VUk7CiB9CiAKK3N0YXRpYyBib29sIGNlYV9kYl9pc195NDIwY21kYihjb25zdCB1OCAqZGIpCit7 CisKKwlpZiAoY2VhX2RiX3RhZyhkYikgIT0gVVNFX0VYVEVOREVEX1RBRykKKwkJcmV0dXJuIGZh bHNlOworCisJaWYgKCFjZWFfZGJfcGF5bG9hZF9sZW4oZGIpKQorCQlyZXR1cm4gZmFsc2U7CisK KwlpZiAoY2VhX2RiX2V4dGVuZGVkX3RhZyhkYikgIT0gRVhUX1ZJREVPX0NBUF9CTE9DS19ZNDIw Q01EQikKKwkJcmV0dXJuIGZhbHNlOworCisJcmV0dXJuIHRydWU7Cit9CisKK3N0YXRpYyBib29s IGNlYV9kYl9pc195NDIwdmRiKGNvbnN0IHU4ICpkYikKK3sKKwlpZiAoY2VhX2RiX3RhZyhkYikg IT0gVVNFX0VYVEVOREVEX1RBRykKKwkJcmV0dXJuIGZhbHNlOworCisJaWYgKCFjZWFfZGJfcGF5 bG9hZF9sZW4oZGIpKQorCQlyZXR1cm4gZmFsc2U7CisKKwlpZiAoY2VhX2RiX2V4dGVuZGVkX3Rh ZyhkYikgIT0gRVhUX1ZJREVPX0RBVEFfQkxPQ0tfNDIwKQorCQlyZXR1cm4gZmFsc2U7CisKKwly ZXR1cm4gdHJ1ZTsKK30KKwogI2RlZmluZSBmb3JfZWFjaF9jZWFfZGIoY2VhLCBpLCBzdGFydCwg ZW5kKSBcCiAJZm9yICgoaSkgPSAoc3RhcnQpOyAoaSkgPCAoZW5kKSAmJiAoaSkgKyBjZWFfZGJf cGF5bG9hZF9sZW4oJihjZWEpWyhpKV0pIDwgKGVuZCk7IChpKSArPSBjZWFfZGJfcGF5bG9hZF9s ZW4oJihjZWEpWyhpKV0pICsgMSkKIAorc3RhdGljIHZvaWQgZHJtX3BhcnNlX3k0MjBjbWRiX2Jp dG1hcChzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLAorCQkJCSAgICAgY29uc3QgdTgg KmRiKQoreworCXN0cnVjdCBkcm1fZGlzcGxheV9pbmZvICppbmZvID0gJmNvbm5lY3Rvci0+ZGlz cGxheV9pbmZvOworCXN0cnVjdCBkcm1faGRtaV9pbmZvICpoZG1pID0gJmluZm8tPmhkbWk7CisJ dTggbWFwX2xlbiA9IGNlYV9kYl9wYXlsb2FkX2xlbihkYikgLSAxOworCXU4IGNvdW50OworCXU2 NCBtYXAgPSAwOworCisJaWYgKG1hcF9sZW4gPT0gMCkgeworCQkvKiBBbGwgQ0VBIG1vZGVzIHN1 cHBvcnQgeWNiY3I0MjAgc2FtcGxpbmcgYWxzby4qLworCQloZG1pLT55NDIwX2NtZGJfbWFwID0g VTY0X01BWDsKKwkJaW5mby0+Y29sb3JfZm9ybWF0cyB8PSBEUk1fQ09MT1JfRk9STUFUX1lDUkNC NDIwOworCQlyZXR1cm47CisJfQorCisJLyoKKwkgKiBUaGlzIG1hcCBpbmRpY2F0ZXMgd2hpY2gg b2YgdGhlIGV4aXN0aW5nIENFQSBibG9jayBtb2RlcworCSAqIGZyb20gVkRCIGNhbiBzdXBwb3J0 IFlDQkNSNDIwIG91dHB1dCB0b28uIFNvIGlmIGJpdD0wIGlzCisJICogc2V0LCBmaXJzdCBtb2Rl IGZyb20gVkRCIGNhbiBzdXBwb3J0IFlDQkNSNDIwIG91dHB1dCB0b28uCisJICogV2Ugd2lsbCBw YXJzZSBhbmQga2VlcCB0aGlzIG1hcCwgYmVmb3JlIHBhcnNpbmcgVkRCIGl0c2VsZgorCSAqIHRv IGF2b2lkIGdvaW5nIHRocm91Z2ggdGhlIHNhbWUgYmxvY2sgYWdhaW4gYW5kIGFnYWluLgorCSAq CisJICogU3BlYyBpcyBub3QgY2xlYXIgYWJvdXQgbWF4IHBvc3NpYmxlIHNpemUgb2YgdGhpcyBi bG9jay4KKwkgKiBDbGFtcGluZyBtYXggYml0bWFwIGJsb2NrIHNpemUgYXQgOCBieXRlcy4gRXZl cnkgYnl0ZSBjYW4KKwkgKiBhZGRyZXNzIDggQ0VBIG1vZGVzLCBpbiB0aGlzIHdheSB0aGlzIG1h cCBjYW4gYWRkcmVzcworCSAqIDgqOCA9IGZpcnN0IDY0IFNWRHMuCisJICovCisJaWYgKFdBUk5f T05fT05DRShtYXBfbGVuID4gOCkpCisJCW1hcF9sZW4gPSA4OworCisJZm9yIChjb3VudCA9IDA7 IGNvdW50IDwgbWFwX2xlbjsgY291bnQrKykKKwkJbWFwIHw9ICh1NjQpZGJbMiArIGNvdW50XSA8 PCAoOCAqIGNvdW50KTsKKworCWlmIChtYXApCisJCWluZm8tPmNvbG9yX2Zvcm1hdHMgfD0gRFJN X0NPTE9SX0ZPUk1BVF9ZQ1JDQjQyMDsKKworCWhkbWktPnk0MjBfY21kYl9tYXAgPSBtYXA7Cit9 CisKIHN0YXRpYyBpbnQKIGFkZF9jZWFfbW9kZXMoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5l Y3Rvciwgc3RydWN0IGVkaWQgKmVkaWQpCiB7CkBAIC0zNTMwLDEwICszNjY1LDE2IEBAIGFkZF9j ZWFfbW9kZXMoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3Rvciwgc3RydWN0IGVkaWQgKmVk aWQpCiAJCQkJdmlkZW8gPSBkYiArIDE7CiAJCQkJdmlkZW9fbGVuID0gZGJsOwogCQkJCW1vZGVz ICs9IGRvX2NlYV9tb2Rlcyhjb25uZWN0b3IsIHZpZGVvLCBkYmwpOwotCQkJfQotCQkJZWxzZSBp ZiAoY2VhX2RiX2lzX2hkbWlfdnNkYihkYikpIHsKKwkJCX0gZWxzZSBpZiAoY2VhX2RiX2lzX2hk bWlfdnNkYihkYikpIHsKIAkJCQloZG1pID0gZGI7CiAJCQkJaGRtaV9sZW4gPSBkYmw7CisJCQl9 IGVsc2UgaWYgKGNlYV9kYl9pc195NDIwdmRiKGRiKSkgeworCQkJCWNvbnN0IHU4ICp2ZGI0MjAg PSAmZGJbMl07CisKKwkJCQkvKiBBZGQgNDoyOjAob25seSkgbW9kZXMgcHJlc2VudCBpbiBFRElE ICovCisJCQkJbW9kZXMgKz0gZG9feTQyMHZkYl9tb2Rlcyhjb25uZWN0b3IsCisJCQkJCQkJICB2 ZGI0MjAsCisJCQkJCQkJICBkYmwgLSAxKTsKIAkJCX0KIAkJfQogCX0KQEAgLTQyMTYsNiArNDM1 Nyw4IEBAIHN0YXRpYyB2b2lkIGRybV9wYXJzZV9jZWFfZXh0KHN0cnVjdCBkcm1fY29ubmVjdG9y ICpjb25uZWN0b3IsCiAJCQlkcm1fcGFyc2VfaGRtaV92c2RiX3ZpZGVvKGNvbm5lY3RvciwgZGIp OwogCQlpZiAoY2VhX2RiX2lzX2hkbWlfZm9ydW1fdnNkYihkYikpCiAJCQlkcm1fcGFyc2VfaGRt aV9mb3J1bV92c2RiKGNvbm5lY3RvciwgZGIpOworCQlpZiAoY2VhX2RiX2lzX3k0MjBjbWRiKGRi KSkKKwkJCWRybV9wYXJzZV95NDIwY21kYl9iaXRtYXAoY29ubmVjdG9yLCBkYik7CiAJfQogfQog CkBAIC00NDc3LDYgKzQ2MjAsNyBAQCBpbnQgZHJtX2FkZF9lZGlkX21vZGVzKHN0cnVjdCBkcm1f Y29ubmVjdG9yICpjb25uZWN0b3IsIHN0cnVjdCBlZGlkICplZGlkKQogCW51bV9tb2RlcyArPSBh ZGRfY2VhX21vZGVzKGNvbm5lY3RvciwgZWRpZCk7CiAJbnVtX21vZGVzICs9IGFkZF9hbHRlcm5h dGVfY2VhX21vZGVzKGNvbm5lY3RvciwgZWRpZCk7CiAJbnVtX21vZGVzICs9IGFkZF9kaXNwbGF5 aWRfZGV0YWlsZWRfbW9kZXMoY29ubmVjdG9yLCBlZGlkKTsKKwogCWlmIChlZGlkLT5mZWF0dXJl cyAmIERSTV9FRElEX0ZFQVRVUkVfREVGQVVMVF9HVEYpCiAJCW51bV9tb2RlcyArPSBhZGRfaW5m ZXJyZWRfbW9kZXMoY29ubmVjdG9yLCBlZGlkKTsKIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0v ZHJtX2Nvbm5lY3Rvci5oIGIvaW5jbHVkZS9kcm0vZHJtX2Nvbm5lY3Rvci5oCmluZGV4IDI2ZGQz ZWIuLjIyNWUwOTIgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvZHJtL2RybV9jb25uZWN0b3IuaAorKysg Yi9pbmNsdWRlL2RybS9kcm1fY29ubmVjdG9yLmgKQEAgLTE0Myw2ICsxNDMsMTcgQEAgc3RydWN0 IGRybV9oZG1pX2luZm8gewogCSAqIHVwdG8gMTI4IFZJQ3M7CiAJICovCiAJdW5zaWduZWQgbG9u ZyB5NDIwX3ZkYl9tb2Rlc1tCSVRTX1RPX0xPTkdTKDEyOCldOworCisJLyoqCisJICogQHk0MjBf Y21kYl9tb2RlczogYml0bWFwIG9mIG1vZGVzIHdoaWNoIGNhbiBzdXBwb3J0IHljYmNyNDIwCisJ ICogb3V0cHV0IGFsc28sIGFsb25nIHdpdGggbm9ybWFsIEhETUkgb3V0cHV0cy4gVGhlcmUgYXJl IHRvdGFsIDEwNworCSAqIFZJQ3MgZGVmaW5lZCBieSBDRUEtODYxLUYgc3BlYywgc28gdGhlIHNp emUgaXMgMTI4IGJpdHMgdG8gbWFwIHVwdG8KKwkgKiAxMjggVklDczsKKwkgKi8KKwl1bnNpZ25l ZCBsb25nIHk0MjBfY21kYl9tb2Rlc1tCSVRTX1RPX0xPTkdTKDEyOCldOworCisJLyoqIEB5NDIw X2NtZGJfbWFwOiBiaXRtYXAgb2YgU1ZEIGluZGV4LCB0byBleHRyYXh0IHZjYiBtb2RlcyAqLwor CXU2NCB5NDIwX2NtZGJfbWFwOwogfTsKIAogLyoqCkBAIC0yMDYsNiArMjE3LDcgQEAgc3RydWN0 IGRybV9kaXNwbGF5X2luZm8gewogI2RlZmluZSBEUk1fQ09MT1JfRk9STUFUX1JHQjQ0NAkJKDE8 PDApCiAjZGVmaW5lIERSTV9DT0xPUl9GT1JNQVRfWUNSQ0I0NDQJKDE8PDEpCiAjZGVmaW5lIERS TV9DT0xPUl9GT1JNQVRfWUNSQ0I0MjIJKDE8PDIpCisjZGVmaW5lIERSTV9DT0xPUl9GT1JNQVRf WUNSQ0I0MjAJKDE8PDMpCiAKIAkvKioKIAkgKiBAY29sb3JfZm9ybWF0czogSERNSSBDb2xvciBm b3JtYXRzLCBzZWxlY3RzIGJldHdlZW4gUkdCIGFuZCBZQ3JDYgotLSAKMi43LjQKCl9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5n IGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVk ZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=