From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-15.2 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,NICE_REPLY_A,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED, USER_AGENT_SANE_1 autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id B1A1EC43460 for ; Mon, 3 May 2021 11:39:13 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 3432F6121D for ; Mon, 3 May 2021 11:39:13 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 3432F6121D Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=tuxedocomputers.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=dri-devel-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 2B9366E0CD; Mon, 3 May 2021 11:39:12 +0000 (UTC) Received: from srv6.fidu.org (srv6.fidu.org [IPv6:2a01:4f8:231:de0::2]) by gabe.freedesktop.org (Postfix) with ESMTPS id B618C6E0AA; Mon, 3 May 2021 11:39:10 +0000 (UTC) Received: from localhost (localhost.localdomain [127.0.0.1]) by srv6.fidu.org (Postfix) with ESMTP id A3260C800BC; Mon, 3 May 2021 13:39:06 +0200 (CEST) X-Virus-Scanned: Debian amavisd-new at srv6.fidu.org Received: from srv6.fidu.org ([127.0.0.1]) by localhost (srv6.fidu.org [127.0.0.1]) (amavisd-new, port 10024) with LMTP id ZxvWVMT4vCPl; Mon, 3 May 2021 13:39:06 +0200 (CEST) Received: from [IPv6:2003:e3:7f39:8600:1a8b:79e0:b24c:b29d] (p200300e37f3986001a8B79E0b24cB29d.dip0.t-ipconnect.de [IPv6:2003:e3:7f39:8600:1a8b:79e0:b24c:b29d]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (No client certificate requested) (Authenticated sender: wse@tuxedocomputers.com) by srv6.fidu.org (Postfix) with ESMTPSA id C5EAFC800BB; Mon, 3 May 2021 13:39:05 +0200 (CEST) To: =?UTF-8?B?VmlsbGUgU3lyasOkbMOk?= References: <20210429120553.7823-1-wse@tuxedocomputers.com> From: Werner Sembach Subject: Re: [PATCH] drm/i915/display Try YCbCr420 color when RGB fails Message-ID: Date: Mon, 3 May 2021 13:39:04 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.7.1 MIME-Version: 1.0 In-Reply-To: Content-Language: en-US X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: airlied@linux.ie, intel-gfx@lists.freedesktop.org, linux-kernel@vger.kernel.org, stable@vger.kernel.org, dri-devel@lists.freedesktop.org Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" VGhhbmtzIGZvciB0aGUgZmVlZGJhY2suIEkgZ290IHNvbWUgcXVlc3Rpb25zIGJlbG93Lgo+IE9u IFRodSwgQXByIDI5LCAyMDIxIGF0IDAyOjA1OjUzUE0gKzAyMDAsIFdlcm5lciBTZW1iYWNoIHdy b3RlOgo+PiBXaGVuIGVuY29kZXIgdmFsaWRhdGlvbiBvZiBhIGRpc3BsYXkgbW9kZSBmYWlscywg cmV0cnkgd2l0aCBsZXNzIGJhbmR3aWR0aAo+PiBoZWF2eSBZQ2JDcjQyMCBjb2xvciBtb2RlLCBp ZiBhdmFpbGFibGUuIFRoaXMgZW5hYmxlcyBzb21lIEhETUkgMS40IHNldHVwcwo+PiB0byBzdXBw b3J0IDRrNjBIeiBvdXRwdXQsIHdoaWNoIHByZXZpb3VzbHkgZmFpbGVkIHNpbGVudGx5Lgo+Pgo+ PiBBTURHUFUgaGFkIG5lYXJseSB0aGUgZXhhY3Qgc2FtZSBpc3N1ZS4gVGhpcyBwcm9ibGVtIGRl c2NyaXB0aW9uIGlzCj4+IHRoZXJlZm9yZSBjb3BpZWQgZnJvbSBteSBjb21taXQgbWVzc2FnZSBv ZiB0aGUgQU1ER1BVIHBhdGNoLgo+Pgo+PiBPbiBzb21lIHNldHVwcywgd2hpbGUgdGhlIG1vbml0 b3IgYW5kIHRoZSBncHUgc3VwcG9ydCBkaXNwbGF5IG1vZGVzIHdpdGgKPj4gcGl4ZWwgY2xvY2tz IG9mIHVwIHRvIDYwME1IeiwgdGhlIGxpbmsgZW5jb2RlciBtaWdodCBub3QuIFRoaXMgcHJldmVu dHMKPj4gWUNiQ3I0NDQgYW5kIFJHQiBlbmNvZGluZyBmb3IgNGs2MEh6LCBidXQgWUNiQ3I0MjAg ZW5jb2RpbmcgbWlnaHQgc3RpbGwgYmUKPj4gcG9zc2libGUuIEhvd2V2ZXIsIHdoaWNoIGNvbG9y IG1vZGUgaXMgdXNlZCBpcyBkZWNpZGVkIGJlZm9yZSB0aGUgbGluawo+PiBlbmNvZGVyIGNhcGFi aWxpdGllcyBhcmUgY2hlY2tlZC4gVGhpcyBwYXRjaCBmaXhlcyB0aGUgcHJvYmxlbSBieSByZXRy eWluZwo+PiB0byBmaW5kIGEgZGlzcGxheSBtb2RlIHdpdGggWUNiQ3I0MjAgZW5mb3JjZWQgYW5k IHVzaW5nIGl0LCBpZiBpdCBpcwo+PiB2YWxpZC4KPj4KPj4gSSdtIG5vdCBlbnRpZXJseSBzdXJl IGlmIHRoZSBzZWNvbmQKPj4gImlmIChIQVNfUENIX1NQTElUKGRldl9wcml2KSAmJiAhSEFTX0RE SShkZXZfcHJpdikpIiBjaGVjayBpbgo+PiBpbnRlbF9oZG1pX2NvbXB1dGVfY29uZmlnKC4uLikg YWZ0ZXIgZm9yY2luZyB5Y2JjcjQyMCBpcyBuZWNlc3NhcnkuIEkKPj4gaW5jbHVkZWQgaXQgdG8g YmV0dGVyIGJlIHNhZmUgdGhlbiBzb3JyeS4KPj4KPj4gU2lnbmVkLW9mZi1ieTogV2VybmVyIFNl bWJhY2ggPHdzZUB0dXhlZG9jb21wdXRlcnMuY29tPgo+PiBDYzogPHN0YWJsZUB2Z2VyLmtlcm5l bC5vcmc+Cj4+IC0tLQo+PiBSZWJhc2VkIGZyb20gNS4xMiB0byBkcm0tdGlwIGFuZCByZXNlbmQg dG8gcmVzb2x2ZSBtZXJnZSBjb25mbGljdC4KPj4KPj4gPkZyb20gODc2YzFjOGQ5NzBmZjJhNDEx ZWU4ZDA4NjUxYmQ0ZWRiZTllY2IzZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKPj4gRnJvbTog V2VybmVyIFNlbWJhY2ggPHdzZUB0dXhlZG9jb21wdXRlcnMuY29tPgo+PiBEYXRlOiBUaHUsIDI5 IEFwciAyMDIxIDEzOjU5OjMwICswMjAwCj4+IFN1YmplY3Q6IFtQQVRDSF0gUmV0cnkgdXNpbmcg WUNiQ3I0MjAgZW5jb2RpbmcgaWYgY2xvY2sgc2V0dXAgZm9yIFJHQiBmYWlscwo+Pgo+PiAtLS0K Pj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfaGRtaS5jIHwgODAgKysrKysr KysrKysrKysrKystLS0tLS0KPj4gIDEgZmlsZSBjaGFuZ2VkLCA2MCBpbnNlcnRpb25zKCspLCAy MCBkZWxldGlvbnMoLSkKPj4KPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rp c3BsYXkvaW50ZWxfaGRtaS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9o ZG1pLmMKPj4gaW5kZXggNDZkZTU2YWYzM2RiLi5jOWI1YTdkN2Y5YzYgMTAwNjQ0Cj4+IC0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfaGRtaS5jCj4+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfaGRtaS5jCj4+IEBAIC0xODYxLDYgKzE4NjEs MzAgQEAgc3RhdGljIGludCBpbnRlbF9oZG1pX3BvcnRfY2xvY2soaW50IGNsb2NrLCBpbnQgYnBj KQo+PiAgCXJldHVybiBjbG9jayAqIGJwYyAvIDg7Cj4+ICB9Cj4+ICAKPj4gK3N0YXRpYyBlbnVt IGRybV9tb2RlX3N0YXR1cwo+PiAraW50ZWxfaGRtaV9jaGVja19icGMoc3RydWN0IGludGVsX2hk bWkgKmhkbWksIGludCBjbG9jaywgYm9vbCBoYXNfaGRtaV9zaW5rLCBzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYpCj4gRG9uJ3QgcGFzcyBkZXZfcHJpdi4gSXQgY2FuIGJlIGV4dHJh Y3RlZCBmcm9tIHRoZSBpbnRlbF9oZG1pLgo+Cj4gVGhlIG5hbWUgb2YgdGhlIGZ1bmN0aW9uIGlz bid0IHJlYWxseSBzaXR0aW5nIHN1cGVyIHdlbGwgd2l0aCBtZS4KPiBJIGd1ZXNzIEknZCBqdXN0 IGNhbGwgaXQgc29tZXRoaW5nIGxpa2UgaW50ZWxfaGRtaV9tb2RlX2Nsb2NrX3ZhbGlkKCkuCj4K PiBXZSBzaG91bGQgYWxzbyBzcGxpdCB0aGlzIGJpZyBwYXRjaCB1cCBpbnRvIHNtYWxsZXIgcGFy dHMuIEp1c3QgdGhpcwo+IG1lY2hhbmljYWwgZXh0cmFjdGlvbiBvZiB0aGlzIGZ1bmN0aW9uIHdp dGhvdXQgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcwo+IGNvdWxkIGJlIGEgbmljZSBmaXJzdCBwYXRj aCBpbiB0aGUgc2VyaWVzLgo+Cj4+ICt7Cj4+ICsJZW51bSBkcm1fbW9kZV9zdGF0dXMgc3RhdHVz Owo+PiArCj4+ICsJLyogY2hlY2sgaWYgd2UgY2FuIGRvIDhicGMgKi8KPj4gKwlzdGF0dXMgPSBo ZG1pX3BvcnRfY2xvY2tfdmFsaWQoaGRtaSwgaW50ZWxfaGRtaV9wb3J0X2Nsb2NrKGNsb2NrLCA4 KSwKPj4gKwkJCQkgICAgICAgdHJ1ZSwgaGFzX2hkbWlfc2luayk7Cj4+ICsKPj4gKwlpZiAoaGFz X2hkbWlfc2luaykgewo+PiArCQkvKiBpZiB3ZSBjYW4ndCBkbyA4YnBjIHdlIG1heSBzdGlsbCBi ZSBhYmxlIHRvIGRvIDEyYnBjICovCj4+ICsJCWlmIChzdGF0dXMgIT0gTU9ERV9PSyAmJiAhSEFT X0dNQ0goZGV2X3ByaXYpKQo+PiArCQkJc3RhdHVzID0gaGRtaV9wb3J0X2Nsb2NrX3ZhbGlkKGhk bWksIGludGVsX2hkbWlfcG9ydF9jbG9jayhjbG9jaywgMTIpLAo+PiArCQkJCQkJICAgICAgIHRy dWUsIGhhc19oZG1pX3NpbmspOwo+PiArCj4+ICsJCS8qIGlmIHdlIGNhbid0IGRvIDgsMTJicGMg d2UgbWF5IHN0aWxsIGJlIGFibGUgdG8gZG8gMTBicGMgKi8KPj4gKwkJaWYgKHN0YXR1cyAhPSBN T0RFX09LICYmIERJU1BMQVlfVkVSKGRldl9wcml2KSA+PSAxMSkKPj4gKwkJCXN0YXR1cyA9IGhk bWlfcG9ydF9jbG9ja192YWxpZChoZG1pLCBpbnRlbF9oZG1pX3BvcnRfY2xvY2soY2xvY2ssIDEw KSwKPj4gKwkJCQkJCSAgICAgICB0cnVlLCBoYXNfaGRtaV9zaW5rKTsKPj4gKwl9Cj4+ICsKPj4g KwlyZXR1cm4gc3RhdHVzOwo+PiArfQo+PiArCj4+ICBzdGF0aWMgZW51bSBkcm1fbW9kZV9zdGF0 dXMKPj4gIGludGVsX2hkbWlfbW9kZV92YWxpZChzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVj dG9yLAo+PiAgCQkgICAgICBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSkKPj4gQEAgLTE4 OTEsMjMgKzE5MTUsMTggQEAgaW50ZWxfaGRtaV9tb2RlX3ZhbGlkKHN0cnVjdCBkcm1fY29ubmVj dG9yICpjb25uZWN0b3IsCj4+ICAJaWYgKGRybV9tb2RlX2lzXzQyMF9vbmx5KCZjb25uZWN0b3It PmRpc3BsYXlfaW5mbywgbW9kZSkpCj4+ICAJCWNsb2NrIC89IDI7Cj4+ICAKPj4gLQkvKiBjaGVj ayBpZiB3ZSBjYW4gZG8gOGJwYyAqLwo+PiAtCXN0YXR1cyA9IGhkbWlfcG9ydF9jbG9ja192YWxp ZChoZG1pLCBpbnRlbF9oZG1pX3BvcnRfY2xvY2soY2xvY2ssIDgpLAo+PiAtCQkJCSAgICAgICB0 cnVlLCBoYXNfaGRtaV9zaW5rKTsKPj4gKwlzdGF0dXMgPSBpbnRlbF9oZG1pX2NoZWNrX2JwYyho ZG1pLCBjbG9jaywgaGFzX2hkbWlfc2luaywgZGV2X3ByaXYpOwo+PiAgCj4+IC0JaWYgKGhhc19o ZG1pX3NpbmspIHsKPj4gLQkJLyogaWYgd2UgY2FuJ3QgZG8gOGJwYyB3ZSBtYXkgc3RpbGwgYmUg YWJsZSB0byBkbyAxMmJwYyAqLwo+PiAtCQlpZiAoc3RhdHVzICE9IE1PREVfT0sgJiYgIUhBU19H TUNIKGRldl9wcml2KSkKPj4gLQkJCXN0YXR1cyA9IGhkbWlfcG9ydF9jbG9ja192YWxpZChoZG1p LCBpbnRlbF9oZG1pX3BvcnRfY2xvY2soY2xvY2ssIDEyKSwKPj4gLQkJCQkJCSAgICAgICB0cnVl LCBoYXNfaGRtaV9zaW5rKTsKPj4gKwlpZiAoc3RhdHVzICE9IE1PREVfT0spIHsKPj4gKwkJaWYg KGRybV9tb2RlX2lzXzQyMF9hbHNvKCZjb25uZWN0b3ItPmRpc3BsYXlfaW5mbywgbW9kZSkpIHsK PiBXZSBhbHNvIG5lZWQgYSBjb25uZWN0b3ItPnljYmNyXzQyMF9hbGxvd2VkIGNoZWNrIGhlcmUu Cj4KPj4gKwkJCS8qIGlmIHdlIGNhbid0IGRvIGZ1bGwgY29sb3IgcmVzb2x1dGlvbiB3ZSBtYXkg c3RpbGwgYmUgYWJsZSB0byBkbyByZWR1Y2VkIGNvbG9yIHJlc29sdXRpb24gKi8KPj4gKwkJCWNs b2NrIC89IDI7Cj4+ICAKPj4gLQkJLyogaWYgd2UgY2FuJ3QgZG8gOCwxMmJwYyB3ZSBtYXkgc3Rp bGwgYmUgYWJsZSB0byBkbyAxMGJwYyAqLwo+PiAtCQlpZiAoc3RhdHVzICE9IE1PREVfT0sgJiYg RElTUExBWV9WRVIoZGV2X3ByaXYpID49IDExKQo+PiAtCQkJc3RhdHVzID0gaGRtaV9wb3J0X2Ns b2NrX3ZhbGlkKGhkbWksIGludGVsX2hkbWlfcG9ydF9jbG9jayhjbG9jaywgMTApLAo+PiAtCQkJ CQkJICAgICAgIHRydWUsIGhhc19oZG1pX3NpbmspOwo+PiArCQkJc3RhdHVzID0gaW50ZWxfaGRt aV9jaGVja19icGMoaGRtaSwgY2xvY2ssIGhhc19oZG1pX3NpbmssIGRldl9wcml2KTsKPj4gKwkJ fQo+PiArCQlpZiAoc3RhdHVzICE9IE1PREVfT0spCj4+ICsJCQlyZXR1cm4gc3RhdHVzOwo+PiAg CX0KPj4gLQlpZiAoc3RhdHVzICE9IE1PREVfT0spCj4+IC0JCXJldHVybiBzdGF0dXM7Cj4+ICAK Pj4gIAlyZXR1cm4gaW50ZWxfbW9kZV92YWxpZF9tYXhfcGxhbmVfc2l6ZShkZXZfcHJpdiwgbW9k ZSwgZmFsc2UpOwo+PiAgfQo+PiBAQCAtMTk5MCwxNCArMjAwOSwxNyBAQCBzdGF0aWMgYm9vbCBo ZG1pX2RlZXBfY29sb3JfcG9zc2libGUoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNy dGNfc3RhdGUsCj4+ICAKPj4gIHN0YXRpYyBpbnQKPj4gIGludGVsX2hkbWlfeWNiY3I0MjBfY29u ZmlnKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+PiAtCQkJICAgY29uc3Qg c3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKmNvbm5fc3RhdGUpCj4+ICsJCQkgICBjb25zdCBz dHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqY29ubl9zdGF0ZSwKPj4gKwkJCSAgIGNvbnN0IGJv b2wgZm9yY2VfeWNiY3I0MjApCj4+ICB7Cj4+ICAJc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5l Y3RvciA9IGNvbm5fc3RhdGUtPmNvbm5lY3RvcjsKPj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqaTkxNSA9IHRvX2k5MTUoY29ubmVjdG9yLT5kZXYpOwo+PiAgCWNvbnN0IHN0cnVjdCBkcm1f ZGlzcGxheV9tb2RlICphZGp1c3RlZF9tb2RlID0KPj4gIAkJJmNydGNfc3RhdGUtPmh3LmFkanVz dGVkX21vZGU7Cj4+ICAKPj4gLQlpZiAoIWRybV9tb2RlX2lzXzQyMF9vbmx5KCZjb25uZWN0b3It PmRpc3BsYXlfaW5mbywgYWRqdXN0ZWRfbW9kZSkpCj4+ICsJaWYgKCEoZHJtX21vZGVfaXNfNDIw X29ubHkoJmNvbm5lY3Rvci0+ZGlzcGxheV9pbmZvLCBhZGp1c3RlZF9tb2RlKSB8fAo+PiArCQkJ KGZvcmNlX3ljYmNyNDIwICYmCj4+ICsJCQlkcm1fbW9kZV9pc180MjBfYWxzbygmY29ubmVjdG9y LT5kaXNwbGF5X2luZm8sIGFkanVzdGVkX21vZGUpKSkpCj4+ICAJCXJldHVybiAwOwo+PiAgCj4g VGhpcyBmdW5jdGlvbiBJIHRoaW5rIHdlIGp1c3Qgd2FudCB0byB0aHJvdyBvdXQgYW5kIHJvbGwg c29tZXRoaW5nCj4gYSBiaXQgYmV0dGVyLgo+Cj4gU29tZXRoaW5nIGxpa2UgdGhpcyBJIGJlbGll dmUgc2hvdWxkIHdvcmsgbmljZWx5Ogo+Cj4gaW50ZWxfaGRtaV9jb21wdXRlX291dHB1dF9mb3Jt YXQoKQo+IHsKPiAJaWYgKGRybV9tb2RlX2lzXzQyMF9vbmx5KCkpCj4gCQljcnRjX3N0YXRlLT5v dXRwdXRfZm9ybWF0ID0gSU5URUxfT1VUUFVUX0ZPUk1BVF9ZQ0JDUjQyMDsKPiAJZWxzZQo+IAkJ Y3J0Y19zdGF0ZS0+b3V0cHV0X2Zvcm1hdCA9IElOVEVMX09VVFBVVF9GT1JNQVRfUkdCOwo+Cj4g CXJldCA9IGludGVsX2hkbWlfY29tcHV0ZV9jbG9jaygpOwo+IAlpZiAocmV0KSB7Cj4gCQlpZiAo Y3J0Y19zdGF0ZS0+b3V0cHV0X2Zvcm1hdCA9PSBJTlRFTF9PVVRQVVRfRk9STUFUX1lDQkNSNDIw KQo+IAkJCXJldHVybiByZXQ7Cj4KPiAJCWNydGNfc3RhdGUtPm91dHB1dF9mb3JtYXQgPSBJTlRF TF9PVVRQVVRfRk9STUFUX1lDQkNSNDIwOwo+Cj4gCQlyZXQgPSBpbnRlbF9oZG1pX2NvbXB1dGVf Y2xvY2soKQo+IAkJaWYgKHJldCkKPiAJCQlyZXR1cm4gcmV0Owo+IAl9Cj4KPiAJcmV0dXJuIDA7 Cj4gfQoKQ2FuIHlvdSBnaXZlIGNsYXJpZmljYXRpb24gb24gdGhlIDMgY2hlY2tzIGNvbWluZyBp biBiZXR3ZWVuIGludGVsX2hkbWlfeWNiY3I0MjBfY29uZmlnIGFuZCBpbnRlbF9oZG1pX2NvbXB1 dGVfY2xvY2s/CgpJIGd1ZXNzIHRoaXMgY2FuIGJlIGRvbmUgYmVmb3JlOgoKcGlwZV9jb25maWct Pmhhc19hdWRpbyA9CsKgwqDCoCDCoMKgwqAgaW50ZWxfaGRtaV9oYXNfYXVkaW8oZW5jb2Rlciwg cGlwZV9jb25maWcsIGNvbm5fc3RhdGUpOwoKVGhpcyBvbmUgYmVoYXZlcyBkaWZmZXJlbnRseSB3 aGV0aGVyIG9yIG5vdCBSR0Igb3IgWUNiQ3IgaXMgdXNlZCwgYnV0IEkgZ3Vlc3MgZG9lcyBub3Qg Y2hhbmdlIHRoZSByZXF1aXJlZCBjbG9jayBzcGVlZD8gSSdtIHVuc3VyZSBhYm91dCB0aGlzIGhv d2V2ZXIuIElmIGl0IGhhcyBubyBlZmZlY3Qgb24gdGhlIGNsb2NrIEkgd291bGQgY2FsbCBpdCBh ZnRlciBpbnRlbF9oZG1pX2NvbXB1dGVfY2xvY2s6CgpwaXBlX2NvbmZpZy0+bGltaXRlZF9jb2xv cl9yYW5nZSA9CsKgwqDCoCDCoMKgwqAgaW50ZWxfaGRtaV9saW1pdGVkX2NvbG9yX3JhbmdlKHBp cGVfY29uZmlnLCBjb25uX3N0YXRlKTsKCkkgZG9uJ3Qga25vdyB3aGF0IHRoaXMgYWN0dWFsbHkg ZG9lcywgYnV0IGl0IGRvZXNuJ3Qgc2VlbSB0byBoYXZlIHRvIGRvIHNvbWV0aGluZyB3aXRoIGNv bG9yIGVuY29kaW5nIHNvLCBsaWtlIHRoZSBoYXNfYXVkaW8gY2hlY2ssIGl0IGNhbiBiZSBkb25l IGJlZm9yZSBkZWNpZGluZyBvbiBSR0Igb3IgWUNiQ3I0MjA/IENvcnJlY3QgbWUgaWYgSSdtIHdy b25nOgoKaWYgKEhBU19QQ0hfU1BMSVQoZGV2X3ByaXYpICYmICFIQVNfRERJKGRldl9wcml2KSkK wqDCoMKgIMKgwqDCoCBwaXBlX2NvbmZpZy0+aGFzX3BjaF9lbmNvZGVyID0gdHJ1ZTsKCj4gYXNz dW1pbmcgd2UgbWFrZSBpbnRlbF9oZG1pX2NvbXB1dGVfY2xvY2soKSBjaGVjayB3aGV0aGVyIDQy MCBvdXRwdXQKPiBpcyBhY3R1YWxseSBzdXBwb3J0ZWQuCgpDdXJyZW50bHkgaXQncyBjaGVjayB5 Y2JjcjQyMCB0aGVuIHNldC4gVGhpcyB3b3VsZCB0dXJuIHRoaXMgYXJvdW5kLiBDaGVjayBmaXJz dCBpcyBtb3JlIGxvZ2ljYWwgZm9yIG15IGJyYWluIGhvd2V2ZXIuCgp3aGF0IGFib3V0IHNvbWV0 aGluZyBsaWtlIHRoaXM/CgppbnRlbF9oZG1pX2NvbXB1dGVfb3V0cHV0X2Zvcm1hdCgpCnsKwqDC oMKgIGlmIChkcm1fbW9kZV9pc180MjBfb25seSgpKQrCoMKgwqAgwqDCoMKgIGNydGNfc3RhdGUt Pm91dHB1dF9mb3JtYXQgPSBJTlRFTF9PVVRQVVRfRk9STUFUX1lDQkNSNDIwOwrCoMKgwqAgZWxz ZQrCoMKgwqAgwqDCoMKgIGNydGNfc3RhdGUtPm91dHB1dF9mb3JtYXQgPSBJTlRFTF9PVVRQVVRf Rk9STUFUX1JHQjsKCsKgwqDCoCByZXQgPSBpbnRlbF9oZG1pX2NvbXB1dGVfY2xvY2soKTsKwqDC oMKgIGlmIChyZXQpIHsKwqDCoMKgIMKgwqDCoCBpZiAoY3J0Y19zdGF0ZS0+b3V0cHV0X2Zvcm1h dCA9PSBJTlRFTF9PVVRQVVRfRk9STUFUX1lDQkNSNDIwIHx8CsKgwqDCoCDCoMKgwqAgwqDCoMKg IMKgwqDCoCAhZHJtX21vZGVfaXNfNDIwX2Fsc28oKSB8fArCoMKgwqAgwqDCoMKgIMKgwqDCoCDC oMKgwqAgIWNvbm5lY3Rvci0+eWNiY3JfNDIwX2FsbG93ZWQpCsKgwqDCoCDCoMKgwqAgwqDCoMKg IHJldHVybiByZXQ7CgrCoMKgwqAgwqDCoMKgIGNydGNfc3RhdGUtPm91dHB1dF9mb3JtYXQgPSBJ TlRFTF9PVVRQVVRfRk9STUFUX1lDQkNSNDIwOwoKwqDCoMKgIMKgwqDCoCByZXQgPSBpbnRlbF9o ZG1pX2NvbXB1dGVfY2xvY2soKQrCoMKgwqAgwqDCoMKgIGlmIChyZXQpCsKgwqDCoCDCoMKgwqAg wqDCoMKgIHJldHVybiByZXQ7CsKgwqDCoCB9CgrCoMKgwqAgcmV0dXJuIDA7Cn0KCj4gQ291bGQg cm9sbCBhIHNtYWxsIGhlbHBlciBmb3IgdGhhdC4gU29tZXRoaW5nIGFsb25nIHRoZXNlIGxpbmVz IHBlcmhhcHM6Cj4gc3RhdGljIGJvb2wgaW50ZWxfaGRtaV95Y2Jjcl80MjBfc3VwcG9ydGVkKCkK PiB7Cj4gCXJldHVybiBjb25uZWN0b3ItPnljYmNyXzQyMF9hbGxvd2VkICYmCj4gCSAgICAgICAo ZHJtX21vZGVfaXNfNDIwX29ubHkoKSB8fCBkcm1fbW9kZV9pc180MjBfYWxzbygpKTsKPiB9Cj4K PiBUaGUgaW50ZWxfcGNoX3BhbmVsX2ZpdHRpbmcoKSBjYWxsIHNob3VsZCBwcm9iYWJseSBqdXN0 IGJlIGhvaXN0ZWQKPiBpbnRvIGludGVsX2hkbWlfY29tcHV0ZV9jb25maWcoKSBhZnRlciB3ZSd2 ZSBjYWxsZWQgdGhlIG5ldwo+IGludGVsX2hkbWlfY29tcHV0ZV9vdXRwdXRfZm9ybWF0KCkuCj4K PiBJIHRoaW5rIGEgdGhyZWUgcGF0Y2ggc2VyaWVzIGlzIHByb2JhYmx5IHdoYXQgd2Ugd2FudCBm b3IgdGhpczoKPiBwYXRjaCAxOiBleHRyYWN0IGludGVsX2hkbWlfbW9kZV9jbG9ja192YWxpZCgp IHdpdGhvdXQgNDIwX2Fsc28gaGFuZGxpbmcKPiBwYXRjaCAyOiBpbnRyb2R1Y2UgaW50ZWxfaGRt aV9jb21wdXRlX291dHB1dF9mb3JtYXQoKSB3aXRob3V0IDQyMF9hbHNvIGhhbmRsaW5nCj4gcGF0 Y2ggMzogZHJvcCBpbiB0aGUgNDIwX2Fsc28gaGFuZGxpbmcgZXZlcnl3aGVyZQo+Cj4gVGhhdCB3 YXkgaWYgdGhlcmUncyBhbnkgcmVncmVzc2lvbiBkdWUgdG8gdGhlIDQyMF9hbHNvIHN0dWZmIGF0 IGxlYXN0Cj4gd2Ugd29uJ3QgaGF2ZSB0byByZXZlcnQgdGhlIHdob2xlIHRoaW5nLCBhbmQgY2Fu IHRoZW4gbW9yZSBlYXNpbHkgd29yawo+IG9uIGZpeGluZyB3aGF0ZXZlciBuZWVkcyBmaXhpbmcu Cj4KPj4gIAlpZiAoIWNvbm5lY3Rvci0+eWNiY3JfNDIwX2FsbG93ZWQpIHsKPj4gQEAgLTIxMjYs NyArMjE0OCw3IEBAIGludCBpbnRlbF9oZG1pX2NvbXB1dGVfY29uZmlnKHN0cnVjdCBpbnRlbF9l bmNvZGVyICplbmNvZGVyLAo+PiAgCXN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICphZGp1c3RlZF9t b2RlID0gJnBpcGVfY29uZmlnLT5ody5hZGp1c3RlZF9tb2RlOwo+PiAgCXN0cnVjdCBkcm1fY29u bmVjdG9yICpjb25uZWN0b3IgPSBjb25uX3N0YXRlLT5jb25uZWN0b3I7Cj4+ICAJc3RydWN0IGRy bV9zY2RjICpzY2RjID0gJmNvbm5lY3Rvci0+ZGlzcGxheV9pbmZvLmhkbWkuc2NkYzsKPj4gLQlp bnQgcmV0Owo+PiArCWludCByZXQsIHJldF9zYXZlZDsKPj4gIAo+PiAgCWlmIChhZGp1c3RlZF9t b2RlLT5mbGFncyAmIERSTV9NT0RFX0ZMQUdfREJMU0NBTikKPj4gIAkJcmV0dXJuIC1FSU5WQUw7 Cj4+IEBAIC0yMTQxLDcgKzIxNjMsNyBAQCBpbnQgaW50ZWxfaGRtaV9jb21wdXRlX2NvbmZpZyhz dHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPj4gIAlpZiAoYWRqdXN0ZWRfbW9kZS0+Zmxh Z3MgJiBEUk1fTU9ERV9GTEFHX0RCTENMSykKPj4gIAkJcGlwZV9jb25maWctPnBpeGVsX211bHRp cGxpZXIgPSAyOwo+PiAgCj4+IC0JcmV0ID0gaW50ZWxfaGRtaV95Y2JjcjQyMF9jb25maWcocGlw ZV9jb25maWcsIGNvbm5fc3RhdGUpOwo+PiArCXJldCA9IGludGVsX2hkbWlfeWNiY3I0MjBfY29u ZmlnKHBpcGVfY29uZmlnLCBjb25uX3N0YXRlLCBmYWxzZSk7Cj4+ICAJaWYgKHJldCkKPj4gIAkJ cmV0dXJuIHJldDsKPj4gIAo+PiBAQCAtMjE1NSw4ICsyMTc3LDI2IEBAIGludCBpbnRlbF9oZG1p X2NvbXB1dGVfY29uZmlnKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+PiAgCQlpbnRl bF9oZG1pX2hhc19hdWRpbyhlbmNvZGVyLCBwaXBlX2NvbmZpZywgY29ubl9zdGF0ZSk7Cj4+ICAK Pj4gIAlyZXQgPSBpbnRlbF9oZG1pX2NvbXB1dGVfY2xvY2soZW5jb2RlciwgcGlwZV9jb25maWcp Owo+PiAtCWlmIChyZXQpCj4+IC0JCXJldHVybiByZXQ7Cj4+ICsJaWYgKHJldCkgewo+PiArCQly ZXRfc2F2ZWQgPSByZXQ7Cj4+ICsKPj4gKwkJcmV0ID0gaW50ZWxfaGRtaV95Y2JjcjQyMF9jb25m aWcocGlwZV9jb25maWcsIGNvbm5fc3RhdGUsIHRydWUpOwo+PiArCQlpZiAocmV0KQo+PiArCQkJ cmV0dXJuIHJldDsKPj4gKwo+PiArCQlpZiAocGlwZV9jb25maWctPm91dHB1dF9mb3JtYXQgIT0g SU5URUxfT1VUUFVUX0ZPUk1BVF9ZQ0JDUjQyMCkKPj4gKwkJCXJldHVybiByZXRfc2F2ZWQ7Cj4+ ICsKPj4gKwkJcGlwZV9jb25maWctPmxpbWl0ZWRfY29sb3JfcmFuZ2UgPQo+PiArCQkJaW50ZWxf aGRtaV9saW1pdGVkX2NvbG9yX3JhbmdlKHBpcGVfY29uZmlnLCBjb25uX3N0YXRlKTsKPj4gKwo+ PiArCQlpZiAoSEFTX1BDSF9TUExJVChkZXZfcHJpdikgJiYgIUhBU19EREkoZGV2X3ByaXYpKQo+ PiArCQkJcGlwZV9jb25maWctPmhhc19wY2hfZW5jb2RlciA9IHRydWU7Cj4+ICsKPj4gKwkJcmV0 ID0gaW50ZWxfaGRtaV9jb21wdXRlX2Nsb2NrKGVuY29kZXIsIHBpcGVfY29uZmlnKTsKPj4gKwkJ aWYgKHJldCkKPj4gKwkJCXJldHVybiByZXQ7Cj4+ICsJfQo+PiAgCj4+ICAJaWYgKGNvbm5fc3Rh dGUtPnBpY3R1cmVfYXNwZWN0X3JhdGlvKQo+PiAgCQlhZGp1c3RlZF9tb2RlLT5waWN0dXJlX2Fz cGVjdF9yYXRpbyA9Cj4+IC0tIAo+PiAyLjI1LjEKPj4KPj4gX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KPj4gZHJpLWRldmVsIG1haWxpbmcgbGlzdAo+PiBk cmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4+IGh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0 b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCgpfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZl bEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFp bG1hbi9saXN0aW5mby9kcmktZGV2ZWwK