From mboxrd@z Thu Jan 1 00:00:00 1970 From: Shashank Sharma Subject: [RESEND-CI v4 09/15] drm: add helper functions for YCBCR output handling Date: Wed, 21 Jun 2017 16:04:06 +0530 Message-ID: <1498041253-16426-9-git-send-email-shashank.sharma@intel.com> References: <1498041253-16426-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: <1498041253-16426-1-git-send-email-shashank.sharma@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, intel-gfx@lists.freedesktop.org, ville.syrjala@linux.intel.com Cc: Jose Abreu List-Id: intel-gfx@lists.freedesktop.org VGhpcyBwYXRjaCBhZGRzIHNldCBvZiBoZWxwZXIgZnVuY3Rpb25zIGZvciBZQ0JDUiBIRE1JIG91 dHB1dApoYW5kbGluZy4gVGhlc2UgZnVuY3Rpb25zIHByb3ZpZGUgZnVuY3Rpb25hbGl0eSBsaWtl OgotIGNoZWNrIGlmIGEgZ2l2ZW4gdmlkZW8gbW9kZSBpcyBZQ0JDUiA0MjAgb25seSBtb2RlLgot IGNoZWNrIGlmIGEgZ2l2ZW4gdmlkZW8gbW9kZSBpcyBZQ0JDUiA0MjAgbW9kZS4KLSBnZXQgdGhl IGhpZ2hlc3Qgc3Vic2FtbGVkIHljYmNyIG91dHB1dC4KLSBnZXQgdGhlIGxvd2VzdCBzdWJzYW1s ZWQgeWNiY3Igb3V0cHV0LgotIGNoZWNrIGlmIGEgZ2l2ZW4gc291cmNlIGFuZCBzaW5rIGNvbWJp bmF0aW9uIGNhbiBzdXBwb3J0IGFueQogIFlDQkNSIEhETUkgb3V0cHV0LgotIGNoZWNrIGlmIGEg Z2l2ZW4gc291cmNlIGFuZCBzaW5rIGNvbWJpbmF0aW9uIGNhbiBzdXBwb3J0IGEgcGFydGljdWxh cgogIFlDQkNSIEhETUkgb3V0cHV0LgoKQ3VycmVudGx5IGFsbCB0aGVzZSBoZWxwZXJzIGFyZSBr ZXB0IHN0YXRpYywgYW5kIG9ubHkgb25lIHdyYXBwZXIgZnVuY3Rpb24KaXMgZXhwb3NlZCB0byBj YWxsZXJzLCB3aGljaCBpcyAiZHJtX2ZpbmRfaGRtaV9vdXRwdXRfdHlwZSIuIFRoaXMgZnVuY3Rp b24KdGFrZXMgaW5wdXRzIGFzIGN1cnJlbnQgbW9kZSwgdXNlciBwcmVmZXJlbmNlIGFuZCBzcmMg KyBzaW5rIGNhcGFiaWxpdGllcywKYW5kIHByb3ZpZGVzIHRoZSBtb3N0IHN1aXRhYmxlIEhETUkg b3V0cHV0IGZvcm1hdCB0byBtYXRjaCBhbGwgb2YgdGhlc2UKaW5wdXRzLgoKVGhpcyB3cmFwcGVy IGZ1bmN0aW9uIHdpbGwgYmUgdXNlZCBpbiBuZXh0IGZldyBwYXRjaGVzIGluIHRoaXMKc2VyaWVz IGZyb20gSTkxNSBkcml2ZXIuCgpWMjogQWRkZWQgWUNCQ1IgZnVuY3Rpb25zIGFzIGhlbHBlcnMg aW4gRFJNIGxheWVyLCBpbnN0ZWFkIG9mCiAgICBrZWVwaW5nIGl0IGluIEk5MTUgbGF5ZXIuClYz OiBBZGRlZCBoYW5kbGluZyBmb3IgWUNCQ1ItNDIwIG9ubHkgbW9kZXMgdG9vLgpWNDogRVhQT1JU X1NZTUJPTChkcm1fZmluZF9oZG1pX291dHB1dF90eXBlKQoKQ2M6IFZpbGxlIFN5cmphbGEgPHZp bGxlLnN5cmphbGFAbGludXguaW50ZWwuY29tPgpDYzogSm9zZSBBYnJldSA8Sm9zZS5BYnJldUBz eW5vcHN5cy5jb20+ClNpZ25lZC1vZmYtYnk6IFNoYXNoYW5rIFNoYXJtYSA8c2hhc2hhbmsuc2hh cm1hQGludGVsLmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vZHJtX2VkaWQuYyAgfCAgIDIgKy0K IGRyaXZlcnMvZ3B1L2RybS9kcm1fbW9kZXMuYyB8IDMwNyArKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKwogaW5jbHVkZS9kcm0vZHJtX2VkaWQuaCAgICAgIHwgICAx ICsKIGluY2x1ZGUvZHJtL2RybV9tb2Rlcy5oICAgICB8ICAgNSArCiA0IGZpbGVzIGNoYW5nZWQs IDMxNCBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2RybV9lZGlkLmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2VkaWQuYwppbmRleCBlZGJh MTkwLi4yZjg4MTBhIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2VkaWQuYworKysg Yi9kcml2ZXJzL2dwdS9kcm0vZHJtX2VkaWQuYwpAQCAtMjk0OSw3ICsyOTQ5LDcgQEAgdTggZHJt X21hdGNoX2NlYV9tb2RlKGNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICp0b19tYXRjaCkK IH0KIEVYUE9SVF9TWU1CT0woZHJtX21hdGNoX2NlYV9tb2RlKTsKIAotc3RhdGljIGJvb2wgZHJt X3ZhbGlkX2NlYV92aWModTggdmljKQorYm9vbCBkcm1fdmFsaWRfY2VhX3ZpYyh1OCB2aWMpCiB7 CiAJcmV0dXJuIHZpYyA+IDAgJiYgdmljIDwgQVJSQVlfU0laRShlZGlkX2NlYV9tb2Rlcyk7CiB9 CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX21vZGVzLmMgYi9kcml2ZXJzL2dwdS9k cm0vZHJtX21vZGVzLmMKaW5kZXggZjI0OTNiOS4uMDllNmIxMCAxMDA2NDQKLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2RybV9tb2Rlcy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fbW9kZXMuYwpA QCAtMTU3NiwzICsxNTc2LDMxMCBAQCBpbnQgZHJtX21vZGVfY29udmVydF91bW9kZShzdHJ1Y3Qg ZHJtX2Rpc3BsYXlfbW9kZSAqb3V0LAogb3V0OgogCXJldHVybiByZXQ7CiB9CisKKy8qKgorICog ZHJtX21vZGVfaXNfNDIwX29ubHkgLSBpZiBhIGdpdmVuIHZpZGVvbW9kZSBjYW4gYmUgb25seSBz dXBwb3J0ZWQgaW4gWUNCQ1I0MjAKKyAqIG91dHB1dCBmb3JtYXQKKyAqCisgKiBAY29ubmVjdG9y OiBkcm0gY29ubmVjdG9yIHVuZGVyIGFjdGlvbi4KKyAqIEBtb2RlOiB2aWRlbyBtb2RlIHRvIGJl IHRlc3RlZC4KKyAqCisgKiBSZXR1cm5zOgorICogdHJ1ZSBpZiB0aGUgbW9kZSBjYW4gc3VwcG9y dCBZQ0JDUjQyMCBvdXRwdXQKKyAqIGZhbHNlIGlmIG5vdC4KKyAqLworc3RhdGljIGJvb2wgZHJt X21vZGVfaXNfNDIwX29ubHkoc3RydWN0IGRybV9kaXNwbGF5X2luZm8gKmRpc3BsYXksCisJCQlz dHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSkKK3sKKwl1OCB2aWMgPSBkcm1fbWF0Y2hfY2Vh X21vZGUobW9kZSk7CisKKwkvKgorCSAqIFJlcXVpcmVtZW50cyBvZiBhIDQyMF9vbmx5IG1vZGU6 CisJICogbXVzdCBiZSBhIHZhbGlkIGNlYSBtb2RlCisJICogZW50cnkgaW4gNDIwX29ubHkgYml0 bWFwCisJICovCisJaWYgKCFkcm1fdmFsaWRfY2VhX3ZpYyh2aWMpKQorCQlyZXR1cm4gZmFsc2U7 CisKKwlyZXR1cm4gdGVzdF9iaXQodmljLCBkaXNwbGF5LT5oZG1pLnk0MjBfdmRiX21vZGVzKTsK K30KKworLyoqCisgKiBkcm1fbW9kZV9pc180MjBfYWxzbyAtIGlmIGEgZ2l2ZW4gdmlkZW9tb2Rl IGNhbiBiZSBzdXBwb3J0ZWQgaW4gWUNCQ1I0MjAKKyAqIG91dHB1dCBmb3JtYXQgYWxzbyAoYWxv bmcgd2l0aCBSR0IvWUNCQ1I0NDQvNDIyKQorICoKKyAqIEBkaXNwbGF5OiBkaXNwbGF5IHVuZGVy IGFjdGlvbi4KKyAqIEBtb2RlOiB2aWRlbyBtb2RlIHRvIGJlIHRlc3RlZC4KKyAqCisgKiBSZXR1 cm5zOgorICogdHJ1ZSBpZiB0aGUgbW9kZSBjYW4gc3VwcG9ydCBZQ0JDUjQyMCBvdXRwdXQKKyAq IGZhbHNlIGlmIG5vdC4KKyAqLworc3RhdGljIGJvb2wgZHJtX21vZGVfaXNfNDIwX2Fsc28oc3Ry dWN0IGRybV9kaXNwbGF5X2luZm8gKmRpc3BsYXksCisJCQlzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9k ZSAqbW9kZSkKK3sKKwl1OCB2aWMgPSBkcm1fbWF0Y2hfY2VhX21vZGUobW9kZSk7CisKKwkvKgor CSAqIFJlcXVpcmVtZW50cyBvZiBhIDQyMF9hbHNvIG1vZGU6CisJICogbXVzdCBiZSBhIHZhbGlk IGNlYSBtb2RlCisJICogZW50cnkgaW4gNDIwX2Fsc28gYml0bWFwCisJICovCisJaWYgKCFkcm1f dmFsaWRfY2VhX3ZpYyh2aWMpKQorCQlyZXR1cm4gZmFsc2U7CisKKwlyZXR1cm4gdGVzdF9iaXQo dmljLCBkaXNwbGF5LT5oZG1pLnk0MjBfY21kYl9tb2Rlcyk7Cit9CisKKworc3RhdGljIGJvb2wg ZHJtX21vZGVfaXNfNDIwKHN0cnVjdCBkcm1fZGlzcGxheV9pbmZvICpkaXNwbGF5LAorCQkJc3Ry dWN0IGRybV9kaXNwbGF5X21vZGUgKm1vZGUpCit7CisJcmV0dXJuIGRybV9tb2RlX2lzXzQyMF9v bmx5KGRpc3BsYXksIG1vZGUpIHx8CisJCQlkcm1fbW9kZV9pc180MjBfYWxzbyhkaXNwbGF5LCBt b2RlKTsKK30KKworLyoqCisgKiBkcm1fY2FuX3N1cHBvcnRfdGhpc195Y2Jjcl9vdXRwdXQgLSBj YW4gYSBnaXZlbiBzb3VyY2UgYW5kIHNpbmsgY29tYmluYXRpb24KKyAqIHN1cHBvcnQgYSBwYXJ0 aWN1bGFyIFlDQkNSIG91dHB1dCB0eXBlLgorICoKKyAqIEBkaXNwbGF5OiBzaW5rIGluZm9ybWF0 aW9uLgorICogQG1vZGU6IHZpZGVvIG1vZGUgZnJvbSBtb2Rlc2V0CisgKiBAdHlwZTogZW51bSBp bmRpY2F0aW5nIFlDQkNSIG91dHB1dCB0eXBlCisgKiBAc291cmNlX291dHB1dHM6IGJpdG1hcCBv ZiBzb3VyY2Ugc3VwcG9ydGVkIEhETUkgb3V0cHV0IGZvcm1hdHMuCisgKgorICogUmV0dXJuczoK KyAqIHRydWUgb24gc3VjY2Vzcy4KKyAqIGZhbHNlIG9uIGZhaWx1cmUuCisgKi8KK3N0YXRpYyBi b29sIGRybV9jYW5fc3VwcG9ydF90aGlzX3ljYmNyX291dHB1dChzdHJ1Y3QgZHJtX2Rpc3BsYXlf aW5mbyAqZGlzcGxheSwKKwkJCQkJc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm1vZGUsCisJCQkJ CWVudW0gZHJtX2hkbWlfb3V0cHV0X3R5cGUgdHlwZSwKKwkJCQkJdTMyIHNvdXJjZV9vdXRwdXRz KQoreworCS8qIFlDQkNSNDIwIG91dHB1dCBzdXBwb3J0IGNhbiBiZSBwZXIgbW9kZSBiYXNpcyAq LworCWlmICh0eXBlID09IERSTV9IRE1JX09VVFBVVF9ZQ0JDUjQyMCAmJgorCQkhZHJtX21vZGVf aXNfNDIwKGRpc3BsYXksIG1vZGUpKQorCQlyZXR1cm4gZmFsc2U7CisKKwlyZXR1cm4gZGlzcGxh eS0+Y29sb3JfZm9ybWF0cyAmIHNvdXJjZV9vdXRwdXRzICYgdHlwZTsKK30KKworLyoqCisgKiBk cm1fY2FuX3N1cHBvcnRfeWNiY3Jfb3V0cHV0IC0gY2FuIGEgZ2l2ZW4gc291cmNlIGFuZCBzaW5r IGNvbWJpbmF0aW9uCisgKiBzdXBwb3J0IGFueSBZQ0JDUiBvdXRwdXRzID8KKyAqCisgKiBAZGlz cGxheTogc2luayBpbmZvcm1hdGlvbi4KKyAqIEBzb3VyY2Vfb3V0cHV0czogYml0bWFwIG9mIHNv dXJjZSBzdXBwb3J0ZWQgSERNSSBvdXRwdXQgZm9ybWF0cy4KKyAqCisgKiBSZXR1cm5zOgorICog dHJ1ZSBvbiBzdWNjZXNzLgorICogZmFsc2Ugb24gZmFpbHVyZS4KKyAqLworc3RhdGljIGJvb2wg ZHJtX2Nhbl9zdXBwb3J0X3ljYmNyX291dHB1dChzdHJ1Y3QgZHJtX2Rpc3BsYXlfaW5mbyAqZGlz cGxheSwKKwkJCQkJdTMyIHNvdXJjZV9vdXRwdXRzKQoreworCXUzMiBzdXBwb3J0ZWRfZm9ybWF0 czsKKworCWlmICghc291cmNlX291dHB1dHMgfHwgIWRpc3BsYXktPmNvbG9yX2Zvcm1hdHMpIHsK KwkJRFJNX0RFQlVHX0tNUygiU291cmNlL1NpbmsgZG9lc24ndCBzdXBwb3J0IGFueSBvdXRwdXQg P1xuIik7CisJCXJldHVybiBEUk1fSERNSV9PVVRQVVRfSU5WQUxJRDsKKwl9CisKKwkvKiBHZXQg dGhlIGNvbW1vbiBzdXBwb3J0ZWQgZnJvbWF0cyBiZXR3ZWVuIHNvdXJjZSBhbmQgc2luayAqLwor CXN1cHBvcnRlZF9mb3JtYXRzID0gZGlzcGxheS0+Y29sb3JfZm9ybWF0cyAmIHNvdXJjZV9vdXRw dXRzOworCWlmICghc3VwcG9ydGVkX2Zvcm1hdHMgfHwgKHN1cHBvcnRlZF9mb3JtYXRzID09CisJ CURSTV9DT0xPUl9GT1JNQVRfUkdCNDQ0KSkgeworCQlEUk1fRVJST1IoIk5vIGNvbW1vbiBZQ0JD UiBmb3JtYXRzIGJldHdlZW4gc291cmNlIGFuZCBzaW5rXG4iKTsKKwkJcmV0dXJuIGZhbHNlOwor CX0KKworCURSTV9ERUJVR19LTVMoIlNyYyBhbmQgU2luayBjb21iaW5hdGlvbiBjYW4gc3VwcG9y dCBZQ0JDUiBvdXRwdXRcbiIpOworCXJldHVybiB0cnVlOworfQorCisvKioKKyAqIGRybV9nZXRf aGlnaGVzdF9xdWFsaXR5X3ljYmNyX3N1cHBvcnRlZCAtIGdldCB0aGUgeWNiY3Igb3V0cHV0IG1v ZGUKKyAqIHdpdGggaGlnaGVzdCBzdWJzYW1wbGluZyByYXRlCisgKiBAZGlzcGxheTogc3RydWN0 IGRybV9kaXNwbGF5X2luZm8gZnJvbSBjdXJyZW50IGNvbm5lY3RvcgorICogQG1vZGU6IHZpZGVv IG1vZGUgZnJvbSBtb2Rlc2V0CisgKiBAc291cmNlX291dHB1dF9tYXA6IGJpdG1hcCBvZiBzdXBw b3J0ZWQgSERNSSBvdXRwdXQgbW9kZXMgZnJvbSBzb3VyY2UKKyAqCisgKiBGaW5kcyB0aGUgYmVz dCBwb3NzaWJsZSB5Y2JjciBvdXRwdXQgbW9kZSAoYmFzZWQgb24gc3Vic2FtcGxpbmcpLCBmb3Ig dGhlCisgKiBnaXZlbiBzb3VyY2UgYW5kIHNpbmsgY29tYmluYXRpb24uCisgKgorICogUmV0dXJu czoKKyAqIGVudW0gY29ycmVzcG9uZGluZyB0byBiZXN0IG91dHB1dCBtb2RlIG9uIHN1Y2Nlc3Mu CisgKiBEUk1fSERNSV9PVVRQVVRfSU5WQUxJRCBvbiBmYWlsdXJlLgorICovCitzdGF0aWMgZW51 bSBkcm1faGRtaV9vdXRwdXRfdHlwZQorZHJtX2dldF9oaWdoZXN0X3F1YWxpdHlfeWNiY3Jfc3Vw cG9ydGVkKHN0cnVjdCBkcm1fZGlzcGxheV9pbmZvICpkaXNwbGF5LAorCQkJCQlzdHJ1Y3QgZHJt X2Rpc3BsYXlfbW9kZSAqbW9kZSwKKwkJCQkJdTMyIHNvdXJjZV9vdXRwdXRfbWFwKQoreworCWVu dW0gZHJtX2hkbWlfb3V0cHV0X3R5cGUgb3V0cHV0ID0gRFJNX0hETUlfT1VUUFVUX0lOVkFMSUQ7 CisJdTMyIHN1cHBvcnRlZF9mb3JtYXRzID0gc291cmNlX291dHB1dF9tYXAgJiBkaXNwbGF5LT5j b2xvcl9mb3JtYXRzOworCisJLyoKKwkgKiBHZXQgdGhlIHljYmNyIG91dHB1dCB3aXRoIHRoZSBo aWdoZXN0IHBvc3NpYmxlIHN1YnNhbXBsaW5nIHJhdGUuCisJICogUHJlZmVyZW5jZSBzaG91bGQg Z28gYXM6CisJICogeWNiY3IgNDQ0CisJICogeWNiY3IgNDIyCisJICogeWNiY3IgNDIwCisJICov CisJaWYgKHN1cHBvcnRlZF9mb3JtYXRzICYgRFJNX0NPTE9SX0ZPUk1BVF9ZQ1JDQjQ0NCkKKwkJ b3V0cHV0ID0gRFJNX0NPTE9SX0ZPUk1BVF9ZQ1JDQjQ0NDsKKwllbHNlIGlmIChzdXBwb3J0ZWRf Zm9ybWF0cyAmIERSTV9DT0xPUl9GT1JNQVRfWUNSQ0I0MjIpCisJCW91dHB1dCA9IERSTV9DT0xP Ul9GT1JNQVRfWUNSQ0I0MjI7CisJZWxzZSBpZiAoc3VwcG9ydGVkX2Zvcm1hdHMgJiBEUk1fQ09M T1JfRk9STUFUX1lDUkNCNDIwICYmCisJCQlkcm1fbW9kZV9pc180MjAoZGlzcGxheSwgbW9kZSkp CisJCW91dHB1dCA9IERSTV9DT0xPUl9GT1JNQVRfWUNSQ0I0MjA7CisKKwlEUk1fREVCVUdfS01T KCJIaWdoZXN0IHN1YnNhbXBsZWQgWUNCQ1IgbW9kZSBzdXBwb3J0ZWQgaXMgJXNcbiIsCisJCQlk cm1fZ2V0X2hkbWlfb3V0cHV0X25hbWUoc3VwcG9ydGVkX2Zvcm1hdHMpKTsKKwlyZXR1cm4gb3V0 cHV0OworfQorCisvKioKKyAqIGRybV9nZXRfbG93ZXN0X3F1YWxpdHlfeWNiY3Jfc3VwcG9ydGVk IC0gZ2V0IHRoZSB5Y2JjciBvdXRwdXQgbW9kZQorICogd2l0aCBsb3dlc3Qgc3Vic2FtcGxpbmcg cmF0ZQorICogQGRpc3BsYXk6IHN0cnVjdCBkcm1fZGlzcGxheV9pbmZvIGZyb20gY3VycmVudCBj b25uZWN0b3IKKyAqIEBtb2RlOiB2aWRlbyBtb2RlIGZyb20gbW9kZXNldAorICogQHNvdXJjZV9v dXRwdXRfbWFwOiBiaXRtYXAgb2Ygc3VwcG9ydGVkIEhETUkgb3V0cHV0IG1vZGVzIGZyb20gc291 cmNlCisgKgorICogRmluZHMgdGhlIGxvd2VzdCBwb3NzaWJsZSB5Y2JjciBvdXRwdXQgbW9kZSAo YmFzZWQgb24gc3Vic2FtcGxpbmcpLCBmb3IgdGhlCisgKiBnaXZlbiBzb3VyY2UgYW5kIHNpbmsg Y29tYmluYXRpb24uCisgKgorICogUmV0dXJuczoKKyAqIGVudW0gY29ycmVzcG9uZGluZyB0byBi ZXN0IG91dHB1dCBtb2RlIG9uIHN1Y2Nlc3MuCisgKiBEUk1fSERNSV9PVVRQVVRfSU5WQUxJRCBv biBmYWlsdXJlLgorICovCitzdGF0aWMgZW51bSBkcm1faGRtaV9vdXRwdXRfdHlwZQorZHJtX2dl dF9sb3dlc3RfcXVhbGl0eV95Y2Jjcl9zdXBwb3J0ZWQoc3RydWN0IGRybV9kaXNwbGF5X2luZm8g KmRpc3BsYXksCisJCQkJCXN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlLAorCQkJCQl1MzIg c291cmNlX291dHB1dF9tYXApCit7CisJZW51bSBkcm1faGRtaV9vdXRwdXRfdHlwZSBvdXRwdXQg PSBEUk1fSERNSV9PVVRQVVRfSU5WQUxJRDsKKwl1MzIgc3VwcG9ydGVkX2Zvcm1hdHMgPSBzb3Vy Y2Vfb3V0cHV0X21hcCAmIGRpc3BsYXktPmNvbG9yX2Zvcm1hdHM7CisKKwkvKgorCSAqIEdldCB0 aGUgeWNiY3Igb3V0cHV0IHdpdGggdGhlIGxvd2VzdCBwb3NzaWJsZSBzdWJzYW1wbGluZyByYXRl LgorCSAqIFByZWZlcmVuY2Ugc2hvdWxkIGdvIGFzOgorCSAqIHljYmNyIDQyMAorCSAqIHljYmNy IDQyMgorCSAqIHljYmNyIDQ0NAorCSAqLworCWlmIChzdXBwb3J0ZWRfZm9ybWF0cyAmIERSTV9D T0xPUl9GT1JNQVRfWUNSQ0I0MjAgJiYKKwkJZHJtX21vZGVfaXNfNDIwKGRpc3BsYXksIG1vZGUp KQorCQlvdXRwdXQgPSBEUk1fSERNSV9PVVRQVVRfWUNCQ1I0MjA7CisJZWxzZSBpZiAoZGlzcGxh eS0+Y29sb3JfZm9ybWF0cyAmIERSTV9DT0xPUl9GT1JNQVRfWUNSQ0I0MjIpCisJCW91dHB1dCA9 IERSTV9IRE1JX09VVFBVVF9ZQ0JDUjQyMjsKKwllbHNlIGlmIChkaXNwbGF5LT5jb2xvcl9mb3Jt YXRzICYgRFJNX0NPTE9SX0ZPUk1BVF9ZQ1JDQjQ0NCkKKwkJb3V0cHV0ID0gRFJNX0hETUlfT1VU UFVUX1lDQkNSNDIwOworCisJRFJNX0RFQlVHX0tNUygiTG93ZXN0IHN1YnNhbXBsZWQgWUNCQ1Ig bW9kZSBzdXBwb3J0ZWQgaXMgJXNcbiIsCisJCQlkcm1fZ2V0X2hkbWlfb3V0cHV0X25hbWUoc3Vw cG9ydGVkX2Zvcm1hdHMpKTsKKwlyZXR1cm4gb3V0cHV0OworfQorCisvKioKKyAqIGRybV9maW5k X2hkbWlfb3V0cHV0X3R5cGUgLSBnZXQgdGhlIG1vc3Qgc3VpdGFibGUgb3V0cHV0CisgKiBGaW5k IHRoZSBiZXN0IHN1aXRhYmxlIEhETUkgb3V0cHV0IGNvbnNpZGVyaW5nIHNvdXJjZSBjYXBhYmls aXR5LAorICogc2luayBjYXBhYmlsaXR5IGFuZCB1c2VyJ3MgY2hvaWNlIChleHByZXNzZWQgaW4g Zm9ybSBvZiBkcm0gcHJvcGVydHkpCisgKgorICogQGNvbm5lY3RvcjogZHJtIGNvbm5lY3RvciBp biBhY3Rpb24KKyAqIEBtb2RlOiB2aWRlbyBtb2RlIHVuZGVyIG1vZGVzZXQKKyAqIEB0eXBlOiB1 c2VyJ3MgY2hvaWNlIGZvciBwcmVmZXJyZWQgbW9kZSwgc2V0IHZpYSBkcm0gcHJvcGVydHkKKyAq CSJoZG1pX291dHB1dF9mb3JtYXQiCisgKiBAc3JjX291dHB1dF9jYXA6IGJpdG1hcCBvZiBzb3Vy Y2UncyBzdXBwb3J0ZWQgb3V0cHV0cyBmb3JtYXRzCisgKglzcmNfb3V0cHV0X2NhcCA9ICgxIDw8 IERSTV9DT0xPUl9GT1JNQVRfUkdCNDQ0KSBtZWFucyBzb3VyY2UKKyAqCXN1cHBvcnRzIFJHQjQ0 NAorICoJc3JjX291dHB1dF9jYXAgPSAoMSA8PCBEUk1fQ09MT1JfRk9STUFUX1lDUkNCNDQ0KSBt ZWFucyBzb3VyY2UKKyAqCXN1cHBvcnRzIFlVVjQ0NCwgYW5kIHNvIG9uLgorICoKKyAqIFJldHVy bnM6CisgKiBlbnVtIGNvcnJlc3BvbmRpbmcgdG8gYmVzdCBzdWl0YWJsZSBvdXRwdXQgdHlwZSBv biBzdWNjZXNzLgorICogRFJNX0hETUlfT1VUUFVUX0lOVkFMSUQgb24gZmFpbHVyZS4KKyAqLwor ZW51bSBkcm1faGRtaV9vdXRwdXRfdHlwZQorZHJtX2ZpbmRfaGRtaV9vdXRwdXRfdHlwZShzdHJ1 Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLAorCQkJCXN0cnVjdCBkcm1fZGlzcGxheV9tb2Rl ICptb2RlLAorCQkJCWVudW0gZHJtX2hkbWlfb3V0cHV0X3R5cGUgdHlwZSwKKwkJCQl1MzIgc3Jj X291dHB1dF9jYXApCit7CisJYm9vbCByZXQ7CisJc3RydWN0IGRybV9kaXNwbGF5X2luZm8gKmlu Zm8gPSAmY29ubmVjdG9yLT5kaXNwbGF5X2luZm87CisJYm9vbCBtb2RlX2lzXzQyMF9vbmx5ID0g ZHJtX21vZGVfaXNfNDIwX29ubHkoaW5mbywgbW9kZSk7CisKKwkvKgorCSAqIElmIHRoZSBwcmVm ZXJyZWQgb3V0cHV0IGlzIG5vdCBzZXQgdG8gWUNCQ1IgYnkgdXNlciwgYW5kIHRoZSBtb2RlCisJ ICogZG9lc24ndCBmb3JjZSB1cyB0byBkcml2ZSBZQ0JDUjQyMCBvdXRwdXQsIHJlc3BlY3QgdGhl IHVzZXIKKwkgKiBwcmVmZXJlbmNlIGZvciB0aGUgb3V0cHV0IHR5cGUuIEJ1dCBpZiB0aGUgbW9k ZSBpcyA0MjBfb25seSwgd2Ugd2lsbAorCSAqIGJlIGZvcmNlIHRvIGRyaXZlIFlDQkNSNDIwIG91 dHB1dC4KKwkgKi8KKwlpZiAoIW1vZGVfaXNfNDIwX29ubHkpIHsKKwkJaWYgKHR5cGUgPT0gRFJN X0hETUlfT1VUUFVUX0RFRkFVTFRfUkdCKQorCQkJcmV0dXJuIERSTV9IRE1JX09VVFBVVF9ERUZB VUxUX1JHQjsKKwl9IGVsc2UgeworCQl0eXBlID0gRFJNX0hETUlfT1VUUFVUX1lDQkNSNDIwOwor CQlEUk1fREVCVUdfS01TKCJHb3QgYSA0MjAgb25seSBtb2RlKCVzKVxuIiwgbW9kZS0+bmFtZSk7 CisJfQorCisJLyogSWYgIHRoaXMgc3JjICsgc2luayBjb21iaW5hdGlvbiBjYW4gc3VwcG9ydCBh bnkgWUNCQ1Igb3V0cHV0ICovCisJcmV0ID0gZHJtX2Nhbl9zdXBwb3J0X3ljYmNyX291dHB1dChp bmZvLCBzcmNfb3V0cHV0X2NhcCk7CisJaWYgKCFyZXQpIHsKKwkJRFJNX0VSUk9SKCJObyBzdXBw b3J0ZWQgWUNCQ1Igb3V0cHV0XG4iKTsKKwkJcmV0dXJuIERSTV9IRE1JX09VVFBVVF9JTlZBTElE OworCX0KKworCXN3aXRjaCAodHlwZSkgeworCWNhc2UgRFJNX0hETUlfT1VUUFVUX1lDQkNSX0hR OgorCQl0eXBlID0gZHJtX2dldF9oaWdoZXN0X3F1YWxpdHlfeWNiY3Jfc3VwcG9ydGVkKGluZm8s IG1vZGUsCisJCQkJCQkJCXNyY19vdXRwdXRfY2FwKTsKKwkJYnJlYWs7CisKKwljYXNlIERSTV9I RE1JX09VVFBVVF9ZQ0JDUl9MUToKKwkJdHlwZSA9IGRybV9nZXRfbG93ZXN0X3F1YWxpdHlfeWNi Y3Jfc3VwcG9ydGVkKGluZm8sIG1vZGUsCisJCQkJCQkJCXNyY19vdXRwdXRfY2FwKTsKKwkJYnJl YWs7CisKKwljYXNlIERSTV9IRE1JX09VVFBVVF9ZQ0JDUjQyMDoKKwkJcmV0ID0gZHJtX21vZGVf aXNfNDIwKGluZm8sIG1vZGUpOworCQlpZiAoIXJldCkgeworCQkJRFJNX0VSUk9SKCJNb2RlICVz IGRvZXNuJ3Qgc3VwcG9ydCA0MjAgb3V0cHV0XG4iLAorCQkJCSAgIG1vZGUtPm5hbWUpOworCQkJ dHlwZSA9IERSTV9IRE1JX09VVFBVVF9JTlZBTElEOworCQl9CisKKwkJYnJlYWs7CisKKwkvKiBC ZWxvdyBjYXNlcyBhcmUganVzdCB0byBzYXRpc2Z5IGNoZWNrcGF0Y2gncyBBSSAqLworCWNhc2Ug RFJNX0hETUlfT1VUUFVUX0RFRkFVTFRfUkdCOgorCWNhc2UgRFJNX0hETUlfT1VUUFVUX1lDQkNS NDQ0OgorCWNhc2UgRFJNX0hETUlfT1VUUFVUX1lDQkNSNDIyOgorCQlicmVhazsKKworCWRlZmF1 bHQ6CisJCXR5cGUgPSBEUk1fSERNSV9PVVRQVVRfSU5WQUxJRDsKKwl9CisKKwlpZiAodHlwZSA9 PSBEUk1fSERNSV9PVVRQVVRfSU5WQUxJRCkgeworCQlEUk1fRVJST1IoIkNhbid0IHN1cHBvcnQg bW9kZSAlcyBpbiBZQ0JDUiBmb3JtYXRcbiIsCisJCQkJbW9kZS0+bmFtZSk7CisJCXJldHVybiBE Uk1fSERNSV9PVVRQVVRfSU5WQUxJRDsKKwl9CisKKwkvKiBUZXN0IGlmIHRoaXMgc3JjL3Npbmsv bW9kZSBjb21iaW5hdGlvbiBjYW4gc3VwcG9ydCBzZWxlY3RlZCBvdXRwdXQgKi8KKwlyZXQgPSBk cm1fY2FuX3N1cHBvcnRfdGhpc195Y2Jjcl9vdXRwdXQoaW5mbywgbW9kZSwgdHlwZSwKKwkJCQkJ CXNyY19vdXRwdXRfY2FwKTsKKwlpZiAoIXJldCkgeworCQlEUk1fRVJST1IoIk91dHB1dCAlcyBj YW4ndCBiZSBzdXBwb3J0ZWRcbiIsCisJCQkJCWRybV9nZXRfaGRtaV9vdXRwdXRfbmFtZSh0eXBl KSk7CisJCXJldHVybiBEUk1fSERNSV9PVVRQVVRfSU5WQUxJRDsKKwl9CisKKwlEUk1fREVCVUdf S01TKCJCZXN0IHN1cHBvcnRlZCBvdXRwdXQgaXM6ICVzXG4iLAorCQkJZHJtX2dldF9oZG1pX291 dHB1dF9uYW1lKHR5cGUpKTsKKwlyZXR1cm4gdHlwZTsKK30KK0VYUE9SVF9TWU1CT0woZHJtX2Zp bmRfaGRtaV9vdXRwdXRfdHlwZSk7CmRpZmYgLS1naXQgYS9pbmNsdWRlL2RybS9kcm1fZWRpZC5o IGIvaW5jbHVkZS9kcm0vZHJtX2VkaWQuaAppbmRleCAzZWE4MzNmLi40ODNmNjY4IDEwMDY0NAot LS0gYS9pbmNsdWRlL2RybS9kcm1fZWRpZC5oCisrKyBiL2luY2x1ZGUvZHJtL2RybV9lZGlkLmgK QEAgLTQ2OCw2ICs0NjgsNyBAQCBpbnQgZHJtX2FkZF9lZGlkX21vZGVzKHN0cnVjdCBkcm1fY29u bmVjdG9yICpjb25uZWN0b3IsIHN0cnVjdCBlZGlkICplZGlkKTsKIAogdTggZHJtX21hdGNoX2Nl YV9tb2RlKGNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICp0b19tYXRjaCk7CiBlbnVtIGhk bWlfcGljdHVyZV9hc3BlY3QgZHJtX2dldF9jZWFfYXNwZWN0X3JhdGlvKGNvbnN0IHU4IHZpZGVv X2NvZGUpOworYm9vbCBkcm1fdmFsaWRfY2VhX3ZpYyh1OCB2aWMpOwogYm9vbCBkcm1fZGV0ZWN0 X2hkbWlfbW9uaXRvcihzdHJ1Y3QgZWRpZCAqZWRpZCk7CiBib29sIGRybV9kZXRlY3RfbW9uaXRv cl9hdWRpbyhzdHJ1Y3QgZWRpZCAqZWRpZCk7CiBib29sIGRybV9yZ2JfcXVhbnRfcmFuZ2Vfc2Vs ZWN0YWJsZShzdHJ1Y3QgZWRpZCAqZWRpZCk7CmRpZmYgLS1naXQgYS9pbmNsdWRlL2RybS9kcm1f bW9kZXMuaCBiL2luY2x1ZGUvZHJtL2RybV9tb2Rlcy5oCmluZGV4IDk0YWM3NzEuLjNjMjM3ZTEg MTAwNjQ0Ci0tLSBhL2luY2x1ZGUvZHJtL2RybV9tb2Rlcy5oCisrKyBiL2luY2x1ZGUvZHJtL2Ry bV9tb2Rlcy5oCkBAIC00NTEsNiArNDUxLDExIEBAIGludCBkcm1fbW9kZV9jb252ZXJ0X3Vtb2Rl KHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICpvdXQsCiB2b2lkIGRybV9tb2RlX3Byb2JlZF9hZGQo c3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3Rvciwgc3RydWN0IGRybV9kaXNwbGF5X21vZGUg Km1vZGUpOwogdm9pZCBkcm1fbW9kZV9kZWJ1Z19wcmludG1vZGVsaW5lKGNvbnN0IHN0cnVjdCBk cm1fZGlzcGxheV9tb2RlICptb2RlKTsKIAorZW51bSBkcm1faGRtaV9vdXRwdXRfdHlwZQorZHJt X2ZpbmRfaGRtaV9vdXRwdXRfdHlwZShzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLAor CQkJICBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSwKKwkJCSAgZW51bSBkcm1faGRtaV9v dXRwdXRfdHlwZSB0eXBlLAorCQkJICB1MzIgc3JjX291dHB1dF9jYXApOwogc3RydWN0IGRybV9k aXNwbGF5X21vZGUgKmRybV9jdnRfbW9kZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCQkJCSAg ICAgIGludCBoZGlzcGxheSwgaW50IHZkaXNwbGF5LCBpbnQgdnJlZnJlc2gsCiAJCQkJICAgICAg Ym9vbCByZWR1Y2VkLCBib29sIGludGVybGFjZWQsCi0tIAoyLjcuNAoKX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJ bnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Au b3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==