From mboxrd@z Thu Jan 1 00:00:00 1970 From: Shashank Sharma Subject: [PATCH v5 07/17] drm/edid: parse YCBCR 420 videomodes from EDID Date: Tue, 4 Jul 2017 19:41:54 +0530 Message-ID: <1499177524-26292-8-git-send-email-shashank.sharma@intel.com> References: <1499177524-26292-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: <1499177524-26292-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: dri-devel@lists.freedesktop.org, intel-gfx@lists.freedesktop.org Cc: Jose Abreu , Emil Velikov List-Id: intel-gfx@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 cy4KClNpZ25lZC1vZmYtYnk6IFNoYXNoYW5rIFNoYXJtYSA8c2hhc2hhbmsuc2hhcm1hQGludGVs LmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vZHJtX2VkaWQuYyAgfCAxNDggKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0KIGluY2x1ZGUvZHJtL2RybV9jb25uZWN0 b3IuaCB8ICAyMCArKysrKysKIDIgZmlsZXMgY2hhbmdlZCwgMTY2IGluc2VydGlvbnMoKyksIDIg ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9lZGlkLmMgYi9k cml2ZXJzL2dwdS9kcm0vZHJtX2VkaWQuYwppbmRleCBkMGIyN2I1Li40NGJlMTI4IDEwMDY0NAot LS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2VkaWQuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJt X2VkaWQuYwpAQCAtMjc4Myw2ICsyNzgzLDggQEAgYWRkX2RldGFpbGVkX21vZGVzKHN0cnVjdCBk cm1fY29ubmVjdG9yICpjb25uZWN0b3IsIHN0cnVjdCBlZGlkICplZGlkLAogI2RlZmluZSBTUEVB S0VSX0JMT0NLCTB4MDQKICNkZWZpbmUgVVNFX0VYVEVOREVEX1RBRyAweDA3CiAjZGVmaW5lIEVY VF9WSURFT19DQVBBQklMSVRZX0JMT0NLIDB4MDAKKyNkZWZpbmUgRVhUX1ZJREVPX0RBVEFfQkxP Q0tfNDIwCTB4MEUKKyNkZWZpbmUgRVhUX1ZJREVPX0NBUF9CTE9DS19ZNDIwQ01EQiAweDBGCiAj ZGVmaW5lIEVESURfQkFTSUNfQVVESU8JKDEgPDwgNikKICNkZWZpbmUgRURJRF9DRUFfWUNSQ0I0 NDQJKDEgPDwgNSkKICNkZWZpbmUgRURJRF9DRUFfWUNSQ0I0MjIJKDEgPDwgNCkKQEAgLTMxNTUs MTUgKzMxNTcsNzkgQEAgZHJtX2Rpc3BsYXlfbW9kZV9mcm9tX3ZpY19pbmRleChzdHJ1Y3QgZHJt X2Nvbm5lY3RvciAqY29ubmVjdG9yLAogCXJldHVybiBuZXdtb2RlOwogfQogCisvKgorICogZG9f eTQyMHZkYl9tb2RlcyAtIFBhcnNlIFlDQkNSIDQyMCBvbmx5IG1vZGVzCisgKiBAY29ubmVjdG9y OiBjb25uZWN0b3IgY29ycmVzcG9uZGluZyB0byB0aGUgSERNSSBzaW5rCisgKiBAc3Zkczogc3Rh cnQgb2YgdGhlIGRhdGEgYmxvY2sgb2YgQ0VBIFlDQkNSIDQyMCBWREIKKyAqIEBsZW46IGxlbmd0 aCBvZiB0aGUgQ0VBIFlDQkNSIDQyMCBWREIKKyAqCisgKiBQYXJzZSB0aGUgQ0VBLTg2MS1GIFlD QkNSIDQyMCBWaWRlbyBEYXRhIEJsb2NrIChZNDIwVkRCKQorICogd2hpY2ggY29udGFpbnMgbW9k ZXMgd2hpY2ggY2FuIGJlIHN1cHBvcnRlZCBpbiBZQ0JDUiA0MjAKKyAqIG91dHB1dCBmb3JtYXQg b25seS4KKyAqLworc3RhdGljIGludCBkb195NDIwdmRiX21vZGVzKHN0cnVjdCBkcm1fY29ubmVj dG9yICpjb25uZWN0b3IsCisJCQkJICAgY29uc3QgdTggKnN2ZHMsIHU4IHN2ZHNfbGVuKQorewor CWludCBtb2RlcyA9IDAsIGk7CisJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNvbm5lY3Rvci0+ ZGV2OworCXN0cnVjdCBkcm1fZGlzcGxheV9pbmZvICppbmZvID0gJmNvbm5lY3Rvci0+ZGlzcGxh eV9pbmZvOworCXN0cnVjdCBkcm1faGRtaV9pbmZvICpoZG1pID0gJmluZm8tPmhkbWk7CisKKwlm b3IgKGkgPSAwOyBpIDwgc3Zkc19sZW47IGkrKykgeworCQl1OCB2aWMgPSBzdmRfdG9fdmljKHN2 ZHNbaV0pOworCQlzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbmV3bW9kZTsKKworCQluZXdtb2Rl ID0gZHJtX21vZGVfZHVwbGljYXRlKGRldiwgJmVkaWRfY2VhX21vZGVzW3ZpY10pOworCQlpZiAo IW5ld21vZGUpCisJCQlicmVhazsKKwkJYml0bWFwX3NldChoZG1pLT55NDIwX3ZkYl9tb2Rlcywg dmljLCAxKTsKKwkJZHJtX21vZGVfcHJvYmVkX2FkZChjb25uZWN0b3IsIG5ld21vZGUpOworCQlt b2RlcysrOworCX0KKworCWlmIChtb2RlcyA+IDApCisJCWluZm8tPmNvbG9yX2Zvcm1hdHMgfD0g RFJNX0NPTE9SX0ZPUk1BVF9ZQ1JDQjQyMDsKKwlyZXR1cm4gbW9kZXM7Cit9CisKKy8qCisgKiBk cm1fYWRkX2NtZGJfbW9kZXMgLSBBZGQgYSBZQ0JDUiA0MjAgbW9kZSBpbnRvIGJpdG1hcAorICog QGNvbm5lY3RvcjogY29ubmVjdG9yIGNvcnJlc3BvbmRpbmcgdG8gdGhlIEhETUkgc2luaworICog QHZpYzogQ0VBIHZpYyBmb3IgdGhlIHZpZGVvIG1vZGUgdG8gYmUgYWRkZWQgaW4gdGhlIG1hcAor ICoKKyAqIE1ha2VzIGFuIGVudHJ5IGZvciBhIHZpZGVvbW9kZSBpbiB0aGUgWUNCQ1IgNDIwIGJp dG1hcAorICovCitzdGF0aWMgdm9pZAorZHJtX2FkZF9jbWRiX21vZGVzKHN0cnVjdCBkcm1fY29u bmVjdG9yICpjb25uZWN0b3IsIHU4IHN2ZCkKK3sKKwl1OCB2aWMgPSBzdmRfdG9fdmljKHN2ZCk7 CisJc3RydWN0IGRybV9oZG1pX2luZm8gKmhkbWkgPSAmY29ubmVjdG9yLT5kaXNwbGF5X2luZm8u aGRtaTsKKworCWJpdG1hcF9zZXQoaGRtaS0+eTQyMF9jbWRiX21vZGVzLCB2aWMsIDEpOworfQor CiBzdGF0aWMgaW50CiBkb19jZWFfbW9kZXMoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3Rv ciwgY29uc3QgdTggKmRiLCB1OCBsZW4pCiB7CiAJaW50IGksIG1vZGVzID0gMDsKKwlzdHJ1Y3Qg ZHJtX2hkbWlfaW5mbyAqaGRtaSA9ICZjb25uZWN0b3ItPmRpc3BsYXlfaW5mby5oZG1pOwogCiAJ Zm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKSB7CiAJCXN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICpt b2RlOwogCQltb2RlID0gZHJtX2Rpc3BsYXlfbW9kZV9mcm9tX3ZpY19pbmRleChjb25uZWN0b3Is IGRiLCBsZW4sIGkpOwogCQlpZiAobW9kZSkgeworCQkJLyoKKwkJCSAqIFlDQkNSNDIwIGNhcGFi aWxpdHkgYmxvY2sgY29udGFpbnMgYSBiaXRtYXAgd2hpY2gKKwkJCSAqIGdpdmVzIHRoZSBpbmRl eCBvZiBDRUEgbW9kZXMgZnJvbSBDRUEgVkRCLCB3aGljaAorCQkJICogY2FuIHN1cHBvcnQgWUNC Q1IgNDIwIHNhbXBsaW5nIG91dHB1dCBhbHNvIChhcGFydAorCQkJICogZnJvbSBSR0IvWUNCQ1I0 NDQgZXRjKS4KKwkJCSAqIEZvciBleGFtcGxlLCBpZiB0aGUgYml0IDAgaW4gYml0bWFwIGlzIHNl dCwKKwkJCSAqIGZpcnN0IG1vZGUgaW4gVkRCIGNhbiBzdXBwb3J0IFlDQkNSNDIwIG91dHB1dCB0 b28uCisJCQkgKiBBZGQgWUNCQ1I0MjAgbW9kZXMgb25seSBpZiBzaW5rIGlzIEhETUkgMi4wIGNh cGFibGUuCisJCQkgKi8KKwkJCWlmIChoZG1pLT55NDIwX2NtZGJfbWFwICYgKDEgPDwgaSkpCisJ CQkJZHJtX2FkZF9jbWRiX21vZGVzKGNvbm5lY3RvciwgZGJbaV0pOworCiAJCQlkcm1fbW9kZV9w cm9iZWRfYWRkKGNvbm5lY3RvciwgbW9kZSk7CiAJCQltb2RlcysrOwogCQl9CkBAIC0zNTA1LDkg KzM1NzEsNzggQEAgc3RhdGljIGJvb2wgY2VhX2RiX2lzX2hkbWlfZm9ydW1fdnNkYihjb25zdCB1 OCAqZGIpCiAJcmV0dXJuIG91aSA9PSBIRE1JX0ZPUlVNX0lFRUVfT1VJOwogfQogCitzdGF0aWMg Ym9vbCBjZWFfZGJfaXNfeTQyMGNtZGIoY29uc3QgdTggKmRiKQoreworCisJaWYgKGNlYV9kYl90 YWcoZGIpICE9IFVTRV9FWFRFTkRFRF9UQUcpCisJCXJldHVybiBmYWxzZTsKKworCWlmICghY2Vh X2RiX3BheWxvYWRfbGVuKGRiKSkKKwkJcmV0dXJuIGZhbHNlOworCisJaWYgKGNlYV9kYl9leHRl bmRlZF90YWcoZGIpICE9IEVYVF9WSURFT19DQVBfQkxPQ0tfWTQyMENNREIpCisJCXJldHVybiBm YWxzZTsKKworCXJldHVybiB0cnVlOworfQorCitzdGF0aWMgYm9vbCBjZWFfZGJfaXNfeTQyMHZk Yihjb25zdCB1OCAqZGIpCit7CisJaWYgKGNlYV9kYl90YWcoZGIpICE9IFVTRV9FWFRFTkRFRF9U QUcpCisJCXJldHVybiBmYWxzZTsKKworCWlmICghY2VhX2RiX3BheWxvYWRfbGVuKGRiKSkKKwkJ cmV0dXJuIGZhbHNlOworCisJaWYgKGNlYV9kYl9leHRlbmRlZF90YWcoZGIpICE9IEVYVF9WSURF T19EQVRBX0JMT0NLXzQyMCkKKwkJcmV0dXJuIGZhbHNlOworCisJcmV0dXJuIHRydWU7Cit9CisK ICNkZWZpbmUgZm9yX2VhY2hfY2VhX2RiKGNlYSwgaSwgc3RhcnQsIGVuZCkgXAogCWZvciAoKGkp ID0gKHN0YXJ0KTsgKGkpIDwgKGVuZCkgJiYgKGkpICsgY2VhX2RiX3BheWxvYWRfbGVuKCYoY2Vh KVsoaSldKSA8IChlbmQpOyAoaSkgKz0gY2VhX2RiX3BheWxvYWRfbGVuKCYoY2VhKVsoaSldKSAr IDEpCiAKK3N0YXRpYyB2b2lkIGRybV9wYXJzZV95NDIwY21kYl9iaXRtYXAoc3RydWN0IGRybV9j b25uZWN0b3IgKmNvbm5lY3RvciwKKwkJCQkgICAgIGNvbnN0IHU4ICpkYikKK3sKKwlzdHJ1Y3Qg ZHJtX2Rpc3BsYXlfaW5mbyAqaW5mbyA9ICZjb25uZWN0b3ItPmRpc3BsYXlfaW5mbzsKKwlzdHJ1 Y3QgZHJtX2hkbWlfaW5mbyAqaGRtaSA9ICZpbmZvLT5oZG1pOworCXU4IG1hcF9sZW4gPSBjZWFf ZGJfcGF5bG9hZF9sZW4oZGIpIC0gMTsKKwl1OCBjb3VudDsKKwl1NjQgbWFwID0gMDsKKworCWlm IChtYXBfbGVuID09IDApIHsKKwkJLyogQWxsIENFQSBtb2RlcyBzdXBwb3J0IHljYmNyNDIwIHNh bXBsaW5nIGFsc28uKi8KKwkJaGRtaS0+eTQyMF9jbWRiX21hcCA9IFU2NF9NQVg7CisJCWluZm8t PmNvbG9yX2Zvcm1hdHMgfD0gRFJNX0NPTE9SX0ZPUk1BVF9ZQ1JDQjQyMDsKKwkJcmV0dXJuOwor CX0KKworCS8qCisJICogVGhpcyBtYXAgaW5kaWNhdGVzIHdoaWNoIG9mIHRoZSBleGlzdGluZyBD RUEgYmxvY2sgbW9kZXMKKwkgKiBmcm9tIFZEQiBjYW4gc3VwcG9ydCBZQ0JDUjQyMCBvdXRwdXQg dG9vLiBTbyBpZiBiaXQ9MCBpcworCSAqIHNldCwgZmlyc3QgbW9kZSBmcm9tIFZEQiBjYW4gc3Vw cG9ydCBZQ0JDUjQyMCBvdXRwdXQgdG9vLgorCSAqIFdlIHdpbGwgcGFyc2UgYW5kIGtlZXAgdGhp cyBtYXAsIGJlZm9yZSBwYXJzaW5nIFZEQiBpdHNlbGYKKwkgKiB0byBhdm9pZCBnb2luZyB0aHJv dWdoIHRoZSBzYW1lIGJsb2NrIGFnYWluIGFuZCBhZ2Fpbi4KKwkgKgorCSAqIFNwZWMgaXMgbm90 IGNsZWFyIGFib3V0IG1heCBwb3NzaWJsZSBzaXplIG9mIHRoaXMgYmxvY2suCisJICogQ2xhbXBp bmcgbWF4IGJpdG1hcCBibG9jayBzaXplIGF0IDggYnl0ZXMuIEV2ZXJ5IGJ5dGUgY2FuCisJICog YWRkcmVzcyA4IENFQSBtb2RlcywgaW4gdGhpcyB3YXkgdGhpcyBtYXAgY2FuIGFkZHJlc3MKKwkg KiA4KjggPSBmaXJzdCA2NCBTVkRzLgorCSAqLworCWlmIChXQVJOX09OX09OQ0UobWFwX2xlbiA+ IDgpKQorCQltYXBfbGVuID0gODsKKworCWZvciAoY291bnQgPSAwOyBjb3VudCA8IG1hcF9sZW47 IGNvdW50KyspCisJCW1hcCB8PSAodTY0KWRiWzIgKyBjb3VudF0gPDwgKDggKiBjb3VudCk7CisK KwlpZiAobWFwKQorCQlpbmZvLT5jb2xvcl9mb3JtYXRzIHw9IERSTV9DT0xPUl9GT1JNQVRfWUNS Q0I0MjA7CisKKwloZG1pLT55NDIwX2NtZGJfbWFwID0gbWFwOworfQorCiBzdGF0aWMgaW50CiBh ZGRfY2VhX21vZGVzKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsIHN0cnVjdCBlZGlk ICplZGlkKQogewpAQCAtMzUzMCwxMCArMzY2NSwxNiBAQCBhZGRfY2VhX21vZGVzKHN0cnVjdCBk cm1fY29ubmVjdG9yICpjb25uZWN0b3IsIHN0cnVjdCBlZGlkICplZGlkKQogCQkJCXZpZGVvID0g ZGIgKyAxOwogCQkJCXZpZGVvX2xlbiA9IGRibDsKIAkJCQltb2RlcyArPSBkb19jZWFfbW9kZXMo Y29ubmVjdG9yLCB2aWRlbywgZGJsKTsKLQkJCX0KLQkJCWVsc2UgaWYgKGNlYV9kYl9pc19oZG1p X3ZzZGIoZGIpKSB7CisJCQl9IGVsc2UgaWYgKGNlYV9kYl9pc19oZG1pX3ZzZGIoZGIpKSB7CiAJ CQkJaGRtaSA9IGRiOwogCQkJCWhkbWlfbGVuID0gZGJsOworCQkJfSBlbHNlIGlmIChjZWFfZGJf aXNfeTQyMHZkYihkYikpIHsKKwkJCQljb25zdCB1OCAqdmRiNDIwID0gJmRiWzJdOworCisJCQkJ LyogQWRkIDQ6MjowKG9ubHkpIG1vZGVzIHByZXNlbnQgaW4gRURJRCAqLworCQkJCW1vZGVzICs9 IGRvX3k0MjB2ZGJfbW9kZXMoY29ubmVjdG9yLAorCQkJCQkJCSAgdmRiNDIwLAorCQkJCQkJCSAg ZGJsIC0gMSk7CiAJCQl9CiAJCX0KIAl9CkBAIC00MjE2LDYgKzQzNTcsOCBAQCBzdGF0aWMgdm9p ZCBkcm1fcGFyc2VfY2VhX2V4dChzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLAogCQkJ ZHJtX3BhcnNlX2hkbWlfdnNkYl92aWRlbyhjb25uZWN0b3IsIGRiKTsKIAkJaWYgKGNlYV9kYl9p c19oZG1pX2ZvcnVtX3ZzZGIoZGIpKQogCQkJZHJtX3BhcnNlX2hkbWlfZm9ydW1fdnNkYihjb25u ZWN0b3IsIGRiKTsKKwkJaWYgKGNlYV9kYl9pc195NDIwY21kYihkYikpCisJCQlkcm1fcGFyc2Vf eTQyMGNtZGJfYml0bWFwKGNvbm5lY3RvciwgZGIpOwogCX0KIH0KIApAQCAtNDQ3Nyw2ICs0NjIw LDcgQEAgaW50IGRybV9hZGRfZWRpZF9tb2RlcyhzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVj dG9yLCBzdHJ1Y3QgZWRpZCAqZWRpZCkKIAludW1fbW9kZXMgKz0gYWRkX2NlYV9tb2Rlcyhjb25u ZWN0b3IsIGVkaWQpOwogCW51bV9tb2RlcyArPSBhZGRfYWx0ZXJuYXRlX2NlYV9tb2Rlcyhjb25u ZWN0b3IsIGVkaWQpOwogCW51bV9tb2RlcyArPSBhZGRfZGlzcGxheWlkX2RldGFpbGVkX21vZGVz KGNvbm5lY3RvciwgZWRpZCk7CisKIAlpZiAoZWRpZC0+ZmVhdHVyZXMgJiBEUk1fRURJRF9GRUFU VVJFX0RFRkFVTFRfR1RGKQogCQludW1fbW9kZXMgKz0gYWRkX2luZmVycmVkX21vZGVzKGNvbm5l Y3RvciwgZWRpZCk7CiAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHJtL2RybV9jb25uZWN0b3IuaCBi L2luY2x1ZGUvZHJtL2RybV9jb25uZWN0b3IuaAppbmRleCA4YTc4YWFhLi4yMjVlMDkyIDEwMDY0 NAotLS0gYS9pbmNsdWRlL2RybS9kcm1fY29ubmVjdG9yLmgKKysrIGIvaW5jbHVkZS9kcm0vZHJt X2Nvbm5lY3Rvci5oCkBAIC0xMzUsNiArMTM1LDI1IEBAIHN0cnVjdCBkcm1fc2NkYyB7CiBzdHJ1 Y3QgZHJtX2hkbWlfaW5mbyB7CiAJLyoqIEBzY2RjOiBzaW5rJ3Mgc2NkYyBzdXBwb3J0IGFuZCBj YXBhYmlsaXRpZXMgKi8KIAlzdHJ1Y3QgZHJtX3NjZGMgc2NkYzsKKworCS8qKgorCSAqIEB5NDIw X3ZkYl9tb2RlczogYml0bWFwIG9mIG1vZGVzIHdoaWNoIGNhbiBzdXBwb3J0IHljYmNyNDIwCisJ ICogb3V0cHV0IG9ubHkgKG5vdCBub3JtYWwgUkdCL1lDQkNSNDQ0LzQyMiBvdXRwdXRzKS4gVGhl cmUgYXJlIHRvdGFsCisJICogMTA3IFZJQ3MgZGVmaW5lZCBieSBDRUEtODYxLUYgc3BlYywgc28g dGhlIHNpemUgaXMgMTI4IGJpdHMgdG8gbWFwCisJICogdXB0byAxMjggVklDczsKKwkgKi8KKwl1 bnNpZ25lZCBsb25nIHk0MjBfdmRiX21vZGVzW0JJVFNfVE9fTE9OR1MoMTI4KV07CisKKwkvKioK KwkgKiBAeTQyMF9jbWRiX21vZGVzOiBiaXRtYXAgb2YgbW9kZXMgd2hpY2ggY2FuIHN1cHBvcnQg eWNiY3I0MjAKKwkgKiBvdXRwdXQgYWxzbywgYWxvbmcgd2l0aCBub3JtYWwgSERNSSBvdXRwdXRz LiBUaGVyZSBhcmUgdG90YWwgMTA3CisJICogVklDcyBkZWZpbmVkIGJ5IENFQS04NjEtRiBzcGVj LCBzbyB0aGUgc2l6ZSBpcyAxMjggYml0cyB0byBtYXAgdXB0bworCSAqIDEyOCBWSUNzOworCSAq LworCXVuc2lnbmVkIGxvbmcgeTQyMF9jbWRiX21vZGVzW0JJVFNfVE9fTE9OR1MoMTI4KV07CisK KwkvKiogQHk0MjBfY21kYl9tYXA6IGJpdG1hcCBvZiBTVkQgaW5kZXgsIHRvIGV4dHJheHQgdmNi IG1vZGVzICovCisJdTY0IHk0MjBfY21kYl9tYXA7CiB9OwogCiAvKioKQEAgLTE5OCw2ICsyMTcs NyBAQCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfaW5mbyB7CiAjZGVmaW5lIERSTV9DT0xPUl9GT1JNQVRf UkdCNDQ0CQkoMTw8MCkKICNkZWZpbmUgRFJNX0NPTE9SX0ZPUk1BVF9ZQ1JDQjQ0NAkoMTw8MSkK ICNkZWZpbmUgRFJNX0NPTE9SX0ZPUk1BVF9ZQ1JDQjQyMgkoMTw8MikKKyNkZWZpbmUgRFJNX0NP TE9SX0ZPUk1BVF9ZQ1JDQjQyMAkoMTw8MykKIAogCS8qKgogCSAqIEBjb2xvcl9mb3JtYXRzOiBI RE1JIENvbG9yIGZvcm1hdHMsIHNlbGVjdHMgYmV0d2VlbiBSR0IgYW5kIFlDckNiCi0tIAoyLjcu NAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRl dmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8v bGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==