From: Stephane Viau Subject: [PATCH 3/4] drm/msm/mdp5: add NV12 support for MDP5 Date: Mon, 8 Dec 2014 10:48:58 -0500 Message-ID: <1418053739-9386-4-git-send-email-sviau@codeaurora.org> References: <1418053739-9386-1-git-send-email-sviau@codeaurora.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1418053739-9386-1-git-send-email-sviau@codeaurora.org> 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 Cc: linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, gbeeresh@codeaurora.org List-Id: linux-arm-msm@vger.kernel.org VGhpcyBjaGFuZ2UgYWRkcyB0aGUgTlYxMiBmb3JtYXQgc3VwcG9ydCBmb3IgcHVibGljIHBsYW5l cy4KClNpZ25lZC1vZmYtYnk6IFN0ZXBoYW5lIFZpYXUgPHN2aWF1QGNvZGVhdXJvcmEub3JnPgot LS0KIGRyaXZlcnMvZ3B1L2RybS9tc20vbWRwL21kcDUvbWRwNV9wbGFuZS5jIHwgMjEzICsrKysr KysrKysrKysrKysrKysrKysrKysrKy0tLQogZHJpdmVycy9ncHUvZHJtL21zbS9tc21fZmIuYyAg ICAgICAgICAgICAgfCAgIDIgKy0KIDIgZmlsZXMgY2hhbmdlZCwgMTk0IGluc2VydGlvbnMoKyks IDIxIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vbWRwL21k cDUvbWRwNV9wbGFuZS5jIGIvZHJpdmVycy9ncHUvZHJtL21zbS9tZHAvbWRwNS9tZHA1X3BsYW5l LmMKaW5kZXggOWE1N2U4Ny4uMjYzYTE2YiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL21z bS9tZHAvbWRwNS9tZHA1X3BsYW5lLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9tZHAvbWRw NS9tZHA1X3BsYW5lLmMKQEAgLTI3NCw2ICsyNzQsMTU1IEBAIHN0YXRpYyB2b2lkIHNldF9zY2Fu b3V0X2xvY2tlZChzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKIAlwbGFuZS0+ZmIgPSBmYjsKIH0K IAorLyogTm90ZTogbWRwNV9wbGFuZS0+cGlwZV9sb2NrIG11c3QgYmUgbG9ja2VkICovCitzdGF0 aWMgdm9pZCBjc2NfZGlzYWJsZShzdHJ1Y3QgbWRwNV9rbXMgKm1kcDVfa21zLCBlbnVtIG1kcDVf cGlwZSBwaXBlKQoreworCXVpbnQzMl90IHZhbHVlID0gbWRwNV9yZWFkKG1kcDVfa21zLCBSRUdf TURQNV9QSVBFX09QX01PREUocGlwZSkpICYKKwkJCSB+TURQNV9QSVBFX09QX01PREVfQ1NDXzFf RU47CisKKwltZHA1X3dyaXRlKG1kcDVfa21zLCBSRUdfTURQNV9QSVBFX09QX01PREUocGlwZSks IHZhbHVlKTsKK30KKworLyogTm90ZTogbWRwNV9wbGFuZS0+cGlwZV9sb2NrIG11c3QgYmUgbG9j a2VkICovCitzdGF0aWMgdm9pZCBjc2NfZW5hYmxlKHN0cnVjdCBtZHA1X2ttcyAqbWRwNV9rbXMs IGVudW0gbWRwNV9waXBlIHBpcGUsCisJCXN0cnVjdCBjc2NfY2ZnICpjc2MpCit7CisJdWludDMy X3QgIGksIG1vZGUgPSAwOyAvKiBSR0IsIG5vIENTQyAqLworCXVpbnQzMl90ICptYXRyaXg7CisK KwlpZiAodW5saWtlbHkoIWNzYykpCisJCXJldHVybjsKKworCWlmICgoY3NjLT50eXBlID09IENT Q19ZVVYyUkdCKSB8fCAoQ1NDX1lVVjJZVVYgPT0gY3NjLT50eXBlKSkKKwkJbW9kZSB8PSBNRFA1 X1BJUEVfT1BfTU9ERV9DU0NfU1JDX0RBVEFfRk9STUFUKERBVEFfRk9STUFUX1lVVik7CisJaWYg KChjc2MtPnR5cGUgPT0gQ1NDX1JHQjJZVVYpIHx8IChDU0NfWVVWMllVViA9PSBjc2MtPnR5cGUp KQorCQltb2RlIHw9IE1EUDVfUElQRV9PUF9NT0RFX0NTQ19EU1RfREFUQV9GT1JNQVQoREFUQV9G T1JNQVRfWVVWKTsKKwltb2RlIHw9IE1EUDVfUElQRV9PUF9NT0RFX0NTQ18xX0VOOworCW1kcDVf d3JpdGUobWRwNV9rbXMsIFJFR19NRFA1X1BJUEVfT1BfTU9ERShwaXBlKSwgbW9kZSk7CisKKwlt YXRyaXggPSBjc2MtPm1hdHJpeDsKKwltZHA1X3dyaXRlKG1kcDVfa21zLCBSRUdfTURQNV9QSVBF X0NTQ18xX01BVFJJWF9DT0VGRl8wKHBpcGUpLAorCQkJTURQNV9QSVBFX0NTQ18xX01BVFJJWF9D T0VGRl8wX0NPRUZGXzExKG1hdHJpeFswXSkgfAorCQkJTURQNV9QSVBFX0NTQ18xX01BVFJJWF9D T0VGRl8wX0NPRUZGXzEyKG1hdHJpeFsxXSkpOworCW1kcDVfd3JpdGUobWRwNV9rbXMsIFJFR19N RFA1X1BJUEVfQ1NDXzFfTUFUUklYX0NPRUZGXzEocGlwZSksCisJCQlNRFA1X1BJUEVfQ1NDXzFf TUFUUklYX0NPRUZGXzFfQ09FRkZfMTMobWF0cml4WzJdKSB8CisJCQlNRFA1X1BJUEVfQ1NDXzFf TUFUUklYX0NPRUZGXzFfQ09FRkZfMjEobWF0cml4WzNdKSk7CisJbWRwNV93cml0ZShtZHA1X2tt cywgUkVHX01EUDVfUElQRV9DU0NfMV9NQVRSSVhfQ09FRkZfMihwaXBlKSwKKwkJCU1EUDVfUElQ RV9DU0NfMV9NQVRSSVhfQ09FRkZfMl9DT0VGRl8yMihtYXRyaXhbNF0pIHwKKwkJCU1EUDVfUElQ RV9DU0NfMV9NQVRSSVhfQ09FRkZfMl9DT0VGRl8yMyhtYXRyaXhbNV0pKTsKKwltZHA1X3dyaXRl KG1kcDVfa21zLCBSRUdfTURQNV9QSVBFX0NTQ18xX01BVFJJWF9DT0VGRl8zKHBpcGUpLAorCQkJ TURQNV9QSVBFX0NTQ18xX01BVFJJWF9DT0VGRl8zX0NPRUZGXzMxKG1hdHJpeFs2XSkgfAorCQkJ TURQNV9QSVBFX0NTQ18xX01BVFJJWF9DT0VGRl8zX0NPRUZGXzMyKG1hdHJpeFs3XSkpOworCW1k cDVfd3JpdGUobWRwNV9rbXMsIFJFR19NRFA1X1BJUEVfQ1NDXzFfTUFUUklYX0NPRUZGXzQocGlw ZSksCisJCQlNRFA1X1BJUEVfQ1NDXzFfTUFUUklYX0NPRUZGXzRfQ09FRkZfMzMobWF0cml4Wzhd KSk7CisKKwlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShjc2MtPnByZV9iaWFzKTsgaSsrKSB7 CisJCXVpbnQzMl90ICpwcmVfY2xhbXAgPSBjc2MtPnByZV9jbGFtcDsKKwkJdWludDMyX3QgKnBv c3RfY2xhbXAgPSBjc2MtPnBvc3RfY2xhbXA7CisKKwkJbWRwNV93cml0ZShtZHA1X2ttcywgUkVH X01EUDVfUElQRV9DU0NfMV9QUkVfQ0xBTVAocGlwZSwgaSksCisJCQlNRFA1X1BJUEVfQ1NDXzFf UFJFX0NMQU1QX1JFR19ISUdIKHByZV9jbGFtcFsyKmkrMV0pIHwKKwkJCU1EUDVfUElQRV9DU0Nf MV9QUkVfQ0xBTVBfUkVHX0xPVyhwcmVfY2xhbXBbMippXSkpOworCisJCW1kcDVfd3JpdGUobWRw NV9rbXMsIFJFR19NRFA1X1BJUEVfQ1NDXzFfUE9TVF9DTEFNUChwaXBlLCBpKSwKKwkJCU1EUDVf UElQRV9DU0NfMV9QT1NUX0NMQU1QX1JFR19ISUdIKHBvc3RfY2xhbXBbMippKzFdKSB8CisJCQlN RFA1X1BJUEVfQ1NDXzFfUE9TVF9DTEFNUF9SRUdfTE9XKHBvc3RfY2xhbXBbMippXSkpOworCisJ CW1kcDVfd3JpdGUobWRwNV9rbXMsIFJFR19NRFA1X1BJUEVfQ1NDXzFfUFJFX0JJQVMocGlwZSwg aSksCisJCQlNRFA1X1BJUEVfQ1NDXzFfUFJFX0JJQVNfUkVHX1ZBTFVFKGNzYy0+cHJlX2JpYXNb aV0pKTsKKworCQltZHA1X3dyaXRlKG1kcDVfa21zLCBSRUdfTURQNV9QSVBFX0NTQ18xX1BPU1Rf QklBUyhwaXBlLCBpKSwKKwkJCU1EUDVfUElQRV9DU0NfMV9QT1NUX0JJQVNfUkVHX1ZBTFVFKGNz Yy0+cG9zdF9iaWFzW2ldKSk7CisJfQorfQorCisjZGVmaW5lIFBIQVNFX1NURVBfU0hJRlQJMjEK KyNkZWZpbmUgRE9XTl9TQ0FMRV9SQVRJT19NQVgJMzIJLyogMl4oMjYtMjEpICovCisKK3N0YXRp YyBpbnQgY2FsY19waGFzZV9zdGVwKHVpbnQzMl90IHNyYywgdWludDMyX3QgZHN0LCB1aW50MzJf dCAqb3V0X3BoYXNlKQoreworCXVpbnQzMl90IHVuaXQ7CisKKwlpZiAoc3JjID09IDAgfHwgZHN0 ID09IDApCisJCXJldHVybiAtRUlOVkFMOworCisJLyoKKwkgKiBQSEFTRV9TVEVQX1gvWSBpcyBj b2RlZCBvbiAyNiBiaXRzICgyNTowKSwKKwkgKiB3aGVyZSAyXjIxIHJlcHJlc2VudHMgdGhlIHVu aXR5ICIxIiBpbiBmaXhlZC1wb2ludCBoYXJkd2FyZSBkZXNpZ24uCisJICogVGhpcyBsZWF2ZXMg NSBiaXRzIGZvciB0aGUgaW50ZWdlciBwYXJ0IChkb3duc2NhbGUgY2FzZSk6CisJICoJLT4gbWF4 aW11bSBkb3duc2NhbGUgcmF0aW8gPSAwYjFfMTExMSA9IDMxCisJICovCisJaWYgKHNyYyA+IChk c3QgKiBET1dOX1NDQUxFX1JBVElPX01BWCkpCisJCXJldHVybiAtRU9WRVJGTE9XOworCisJdW5p dCA9IDEgPDwgUEhBU0VfU1RFUF9TSElGVDsKKwkqb3V0X3BoYXNlID0gbXVsdF9mcmFjKHVuaXQs IHNyYywgZHN0KTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IGNhbGNfc2NhbGV4X3N0 ZXBzKHVpbnQzMl90IHBpeGVsX2Zvcm1hdCwgdWludDMyX3Qgc3JjLCB1aW50MzJfdCBkZXN0LAor CQl1aW50MzJfdCBwaGFzZXhfc3RlcHNbMl0pCit7CisJdWludDMyX3QgcGhhc2V4X3N0ZXA7CisJ dW5zaWduZWQgaW50IGhzdWI7CisJaW50IHJldDsKKworCXJldCA9IGNhbGNfcGhhc2Vfc3RlcChz cmMsIGRlc3QsICZwaGFzZXhfc3RlcCk7CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsKKworCWhz dWIgPSBkcm1fZm9ybWF0X2hvcnpfY2hyb21hX3N1YnNhbXBsaW5nKHBpeGVsX2Zvcm1hdCk7CisK KwlwaGFzZXhfc3RlcHNbMF0gPSBwaGFzZXhfc3RlcDsKKwlwaGFzZXhfc3RlcHNbMV0gPSBwaGFz ZXhfc3RlcCAvIGhzdWI7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBjYWxjX3NjYWxl eV9zdGVwcyh1aW50MzJfdCBwaXhlbF9mb3JtYXQsIHVpbnQzMl90IHNyYywgdWludDMyX3QgZGVz dCwKKwkJdWludDMyX3QgcGhhc2V5X3N0ZXBzWzJdKQoreworCXVpbnQzMl90IHBoYXNleV9zdGVw OworCXVuc2lnbmVkIGludCB2c3ViOworCWludCByZXQ7CisKKwlyZXQgPSBjYWxjX3BoYXNlX3N0 ZXAoc3JjLCBkZXN0LCAmcGhhc2V5X3N0ZXApOworCWlmIChyZXQpCisJCXJldHVybiByZXQ7CisK Kwl2c3ViID0gZHJtX2Zvcm1hdF92ZXJ0X2Nocm9tYV9zdWJzYW1wbGluZyhwaXhlbF9mb3JtYXQp OworCisJcGhhc2V5X3N0ZXBzWzBdID0gcGhhc2V5X3N0ZXA7CisJcGhhc2V5X3N0ZXBzWzFdID0g cGhhc2V5X3N0ZXAgLyB2c3ViOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB1aW50MzJfdCBn ZXRfc2NhbGV4X2NvbmZpZyh1aW50MzJfdCBzcmMsIHVpbnQzMl90IGRlc3QpCit7CisJdWludDMy X3QgZmlsdGVyOworCisJZmlsdGVyID0gKHNyYyA8PSBkZXN0KSA/IFNDQUxFX0ZJTFRFUl9CSUwg OiBTQ0FMRV9GSUxURVJfUENNTjsKKworCXJldHVybiAgTURQNV9QSVBFX1NDQUxFX0NPTkZJR19T Q0FMRVhfRU4gfAorCQlNRFA1X1BJUEVfU0NBTEVfQ09ORklHX1NDQUxFWF9NSU5fRklMVEVSKGZp bHRlcikgfAorCQlNRFA1X1BJUEVfU0NBTEVfQ09ORklHX1NDQUxFWF9DUl9GSUxURVIoZmlsdGVy KSAgfAorCQlNRFA1X1BJUEVfU0NBTEVfQ09ORklHX1NDQUxFWF9NQVhfRklMVEVSKGZpbHRlcik7 Cit9CisKK3N0YXRpYyB1aW50MzJfdCBnZXRfc2NhbGV5X2NvbmZpZyh1aW50MzJfdCBzcmMsIHVp bnQzMl90IGRlc3QpCit7CisJdWludDMyX3QgZmlsdGVyOworCisJZmlsdGVyID0gKHNyYyA8PSBk ZXN0KSA/IFNDQUxFX0ZJTFRFUl9CSUwgOiBTQ0FMRV9GSUxURVJfUENNTjsKKworCXJldHVybiAg TURQNV9QSVBFX1NDQUxFX0NPTkZJR19TQ0FMRVlfRU4gfAorCQlNRFA1X1BJUEVfU0NBTEVfQ09O RklHX1NDQUxFWV9NSU5fRklMVEVSKGZpbHRlcikgfAorCQlNRFA1X1BJUEVfU0NBTEVfQ09ORklH X1NDQUxFWV9DUl9GSUxURVIoZmlsdGVyKSAgfAorCQlNRFA1X1BJUEVfU0NBTEVfQ09ORklHX1ND QUxFWV9NQVhfRklMVEVSKGZpbHRlcik7Cit9CisKIHN0YXRpYyBpbnQgbWRwNV9wbGFuZV9tb2Rl X3NldChzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKIAkJc3RydWN0IGRybV9jcnRjICpjcnRjLCBz dHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiwKIAkJaW50IGNydGNfeCwgaW50IGNydGNfeSwKQEAg LTI4MywxMSArNDMyLDE0IEBAIHN0YXRpYyBpbnQgbWRwNV9wbGFuZV9tb2RlX3NldChzdHJ1Y3Qg ZHJtX3BsYW5lICpwbGFuZSwKIHsKIAlzdHJ1Y3QgbWRwNV9wbGFuZSAqbWRwNV9wbGFuZSA9IHRv X21kcDVfcGxhbmUocGxhbmUpOwogCXN0cnVjdCBtZHA1X2ttcyAqbWRwNV9rbXMgPSBnZXRfa21z KHBsYW5lKTsKKwlzdHJ1Y3QgZGV2aWNlICpkZXYgPSBtZHA1X2ttcy0+ZGV2LT5kZXY7CiAJZW51 bSBtZHA1X3BpcGUgcGlwZSA9IG1kcDVfcGxhbmUtPnBpcGU7CiAJY29uc3Qgc3RydWN0IG1kcF9m b3JtYXQgKmZvcm1hdDsKIAl1aW50MzJfdCBucGxhbmVzLCBjb25maWcgPSAwOwotCXVpbnQzMl90 IHBoYXNleF9zdGVwID0gMCwgcGhhc2V5X3N0ZXAgPSAwOworCS8qIGJlbG93IGFycmF5IC0+IGlu ZGV4IDA6IGNvbXAgMC8zIDsgaW5kZXggMTogY29tcCAxLzIgKi8KKwl1aW50MzJfdCBwaGFzZXhf c3RlcFsyXSA9IHswLH0sIHBoYXNleV9zdGVwWzJdID0gezAsfTsKIAl1aW50MzJfdCBoZGVjbSA9 IDAsIHZkZWNtID0gMDsKKwl1aW50MzJfdCBwaXhfZm9ybWF0OwogCXVuc2lnbmVkIGxvbmcgZmxh Z3M7CiAJaW50IHJldDsKIApAQCAtMjk3LDYgKzQ0OSw5IEBAIHN0YXRpYyBpbnQgbWRwNV9wbGFu ZV9tb2RlX3NldChzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKIAlpZiAoV0FSTl9PTihucGxhbmVz ID4gcGlwZTJuY2xpZW50cyhwaXBlKSkpCiAJCXJldHVybiAtRUlOVkFMOwogCisJZm9ybWF0ID0g dG9fbWRwX2Zvcm1hdChtc21fZnJhbWVidWZmZXJfZm9ybWF0KGZiKSk7CisJcGl4X2Zvcm1hdCA9 IGZvcm1hdC0+YmFzZS5waXhlbF9mb3JtYXQ7CisKIAkvKiBzcmMgdmFsdWVzIGFyZSBpbiBRMTYg Zml4ZWQgcG9pbnQsIGNvbnZlcnQgdG8gaW50ZWdlcjogKi8KIAlzcmNfeCA9IHNyY194ID4+IDE2 OwogCXNyY195ID0gc3JjX3kgPj4gMTY7CkBAIC0zMjEsMTQgKzQ3NiwyOCBAQCBzdGF0aWMgaW50 IG1kcDVfcGxhbmVfbW9kZV9zZXQoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCiAJICovCiAJbWRw NV9zbXBfY29uZmlndXJlKG1kcDVfa21zLT5zbXAsIHBpcGUpOwogCi0JaWYgKHNyY193ICE9IGNy dGNfdykgewotCQljb25maWcgfD0gTURQNV9QSVBFX1NDQUxFX0NPTkZJR19TQ0FMRVhfRU47Ci0J CS8qIFRPRE8gY2FsYyBwaGFzZXhfc3RlcCwgaGRlY20gKi8KKwkvKiBTQ0FMRSBpcyB1c2VkIHRv IGJvdGggc2NhbGUgYW5kIHVwLXNhbXBsZSBjaHJvbWEgY29tcG9uZW50cyAqLworCisJaWYgKChz cmNfdyAhPSBjcnRjX3cpIHx8IE1EUF9GT1JNQVRfSVNfWVVWKGZvcm1hdCkpIHsKKwkJLyogVE9E TyBjYWxjIGhkZWNtICovCisJCXJldCA9IGNhbGNfc2NhbGV4X3N0ZXBzKHBpeF9mb3JtYXQsIHNy Y193LCBjcnRjX3csIHBoYXNleF9zdGVwKTsKKwkJaWYgKHJldCkgeworCQkJZGV2X2VycihkZXYs ICJYIHNjYWxpbmcgKCVkIC0+ICVkKSBmYWlsZWQ6ICVkXG4iLAorCQkJCQlzcmNfdywgY3J0Y193 LCByZXQpOworCQkJcmV0dXJuIHJldDsKKwkJfQorCQljb25maWcgfD0gZ2V0X3NjYWxleF9jb25m aWcoc3JjX3csIGNydGNfdyk7CiAJfQogCi0JaWYgKHNyY19oICE9IGNydGNfaCkgewotCQljb25m aWcgfD0gTURQNV9QSVBFX1NDQUxFX0NPTkZJR19TQ0FMRVlfRU47Ci0JCS8qIFRPRE8gY2FsYyBw aGFzZXlfc3RlcCwgdmRlY20gKi8KKwlpZiAoKHNyY19oICE9IGNydGNfaCkgfHwgTURQX0ZPUk1B VF9JU19ZVVYoZm9ybWF0KSkgeworCQkvKiBUT0RPIGNhbGMgdmRlY20gKi8KKwkJcmV0ID0gY2Fs Y19zY2FsZXlfc3RlcHMocGl4X2Zvcm1hdCwgc3JjX2gsIGNydGNfaCwgcGhhc2V5X3N0ZXApOwor CQlpZiAocmV0KSB7CisJCQlkZXZfZXJyKGRldiwgIlkgc2NhbGluZyAoJWQgLT4gJWQpIGZhaWxl ZDogJWRcbiIsCisJCQkJCXNyY19oLCBjcnRjX2gsIHJldCk7CisJCQlyZXR1cm4gcmV0OworCQl9 CisJCWNvbmZpZyB8PSBnZXRfc2NhbGV5X2NvbmZpZyhzcmNfaCwgY3J0Y19oKTsKIAl9CiAKIAlz cGluX2xvY2tfaXJxc2F2ZSgmbWRwNV9wbGFuZS0+cGlwZV9sb2NrLCBmbGFncyk7CkBAIC0zNTMs OCArNTIyLDYgQEAgc3RhdGljIGludCBtZHA1X3BsYW5lX21vZGVfc2V0KHN0cnVjdCBkcm1fcGxh bmUgKnBsYW5lLAogCQkJTURQNV9QSVBFX09VVF9YWV9YKGNydGNfeCkgfAogCQkJTURQNV9QSVBF X09VVF9YWV9ZKGNydGNfeSkpOwogCi0JZm9ybWF0ID0gdG9fbWRwX2Zvcm1hdChtc21fZnJhbWVi dWZmZXJfZm9ybWF0KGZiKSk7Ci0KIAltZHA1X3dyaXRlKG1kcDVfa21zLCBSRUdfTURQNV9QSVBF X1NSQ19GT1JNQVQocGlwZSksCiAJCQlNRFA1X1BJUEVfU1JDX0ZPUk1BVF9BX0JQQyhmb3JtYXQt PmJwY19hKSB8CiAJCQlNRFA1X1BJUEVfU1JDX0ZPUk1BVF9SX0JQQyhmb3JtYXQtPmJwY19yKSB8 CkBAIC0zNjQsOCArNTMxLDggQEAgc3RhdGljIGludCBtZHA1X3BsYW5lX21vZGVfc2V0KHN0cnVj dCBkcm1fcGxhbmUgKnBsYW5lLAogCQkJTURQNV9QSVBFX1NSQ19GT1JNQVRfQ1BQKGZvcm1hdC0+ Y3BwIC0gMSkgfAogCQkJTURQNV9QSVBFX1NSQ19GT1JNQVRfVU5QQUNLX0NPVU5UKGZvcm1hdC0+ dW5wYWNrX2NvdW50IC0gMSkgfAogCQkJQ09ORChmb3JtYXQtPnVucGFja190aWdodCwgTURQNV9Q SVBFX1NSQ19GT1JNQVRfVU5QQUNLX1RJR0hUKSB8Ci0JCQlNRFA1X1BJUEVfU1JDX0ZPUk1BVF9O VU1fUExBTkVTKG5wbGFuZXMgLSAxKSB8Ci0JCQlNRFA1X1BJUEVfU1JDX0ZPUk1BVF9DSFJPTUFf U0FNUChDSFJPTUFfUkdCKSk7CisJCQlNRFA1X1BJUEVfU1JDX0ZPUk1BVF9OVU1fUExBTkVTKGZv cm1hdC0+ZmV0Y2hfdHlwZSkgfAorCQkJTURQNV9QSVBFX1NSQ19GT1JNQVRfQ0hST01BX1NBTVAo Zm9ybWF0LT5jaHJvbWFfc2FtcGxlKSk7CiAKIAltZHA1X3dyaXRlKG1kcDVfa21zLCBSRUdfTURQ NV9QSVBFX1NSQ19VTlBBQ0socGlwZSksCiAJCQlNRFA1X1BJUEVfU1JDX1VOUEFDS19FTEVNMChm b3JtYXQtPnVucGFja1swXSkgfApAQCAtMzc5LDE4ICs1NDYsMjQgQEAgc3RhdGljIGludCBtZHA1 X3BsYW5lX21vZGVfc2V0KHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAogCS8qIG5vdCB1c2luZyBz ZWN1cmUgbW9kZTogKi8KIAltZHA1X3dyaXRlKG1kcDVfa21zLCBSRUdfTURQNV9QSVBFX1NSQ19B RERSX1NXX1NUQVRVUyhwaXBlKSwgMCk7CiAKLQltZHA1X3dyaXRlKG1kcDVfa21zLCBSRUdfTURQ NV9QSVBFX1NDQUxFX1BIQVNFX1NURVBfWChwaXBlKSwgcGhhc2V4X3N0ZXApOwotCW1kcDVfd3Jp dGUobWRwNV9rbXMsIFJFR19NRFA1X1BJUEVfU0NBTEVfUEhBU0VfU1RFUF9ZKHBpcGUpLCBwaGFz ZXlfc3RlcCk7CisJbWRwNV93cml0ZShtZHA1X2ttcywgUkVHX01EUDVfUElQRV9TQ0FMRV9QSEFT RV9TVEVQX1gocGlwZSksCisJCQlwaGFzZXhfc3RlcFswXSk7CisJbWRwNV93cml0ZShtZHA1X2tt cywgUkVHX01EUDVfUElQRV9TQ0FMRV9QSEFTRV9TVEVQX1kocGlwZSksCisJCQlwaGFzZXlfc3Rl cFswXSk7CisJbWRwNV93cml0ZShtZHA1X2ttcywgUkVHX01EUDVfUElQRV9TQ0FMRV9DUl9QSEFT RV9TVEVQX1gocGlwZSksCisJCQlwaGFzZXhfc3RlcFsxXSk7CisJbWRwNV93cml0ZShtZHA1X2tt cywgUkVHX01EUDVfUElQRV9TQ0FMRV9DUl9QSEFTRV9TVEVQX1kocGlwZSksCisJCQlwaGFzZXlf c3RlcFsxXSk7CiAJbWRwNV93cml0ZShtZHA1X2ttcywgUkVHX01EUDVfUElQRV9ERUNJTUFUSU9O KHBpcGUpLAogCQkJTURQNV9QSVBFX0RFQ0lNQVRJT05fVkVSVCh2ZGVjbSkgfAogCQkJTURQNV9Q SVBFX0RFQ0lNQVRJT05fSE9SWihoZGVjbSkpOwotCW1kcDVfd3JpdGUobWRwNV9rbXMsIFJFR19N RFA1X1BJUEVfU0NBTEVfQ09ORklHKHBpcGUpLAotCQkJTURQNV9QSVBFX1NDQUxFX0NPTkZJR19T Q0FMRVhfTUlOX0ZJTFRFUihTQ0FMRV9GSUxURVJfTkVBUkVTVCkgfAotCQkJTURQNV9QSVBFX1ND QUxFX0NPTkZJR19TQ0FMRVlfTUlOX0ZJTFRFUihTQ0FMRV9GSUxURVJfTkVBUkVTVCkgfAotCQkJ TURQNV9QSVBFX1NDQUxFX0NPTkZJR19TQ0FMRVhfQ1JfRklMVEVSKFNDQUxFX0ZJTFRFUl9ORUFS RVNUKSB8Ci0JCQlNRFA1X1BJUEVfU0NBTEVfQ09ORklHX1NDQUxFWV9DUl9GSUxURVIoU0NBTEVf RklMVEVSX05FQVJFU1QpIHwKLQkJCU1EUDVfUElQRV9TQ0FMRV9DT05GSUdfU0NBTEVYX01BWF9G SUxURVIoU0NBTEVfRklMVEVSX05FQVJFU1QpIHwKLQkJCU1EUDVfUElQRV9TQ0FMRV9DT05GSUdf U0NBTEVZX01BWF9GSUxURVIoU0NBTEVfRklMVEVSX05FQVJFU1QpKTsKKwltZHA1X3dyaXRlKG1k cDVfa21zLCBSRUdfTURQNV9QSVBFX1NDQUxFX0NPTkZJRyhwaXBlKSwgY29uZmlnKTsKKworCWlm IChNRFBfRk9STUFUX0lTX1lVVihmb3JtYXQpKQorCQljc2NfZW5hYmxlKG1kcDVfa21zLCBwaXBl LAorCQkJCW1kcF9nZXRfZGVmYXVsdF9jc2NfY2ZnKENTQ19ZVVYyUkdCKSk7CisJZWxzZQorCQlj c2NfZGlzYWJsZShtZHA1X2ttcywgcGlwZSk7CiAKIAlzZXRfc2Nhbm91dF9sb2NrZWQocGxhbmUs IGZiKTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9tc21fZmIuYyBiL2RyaXZl cnMvZ3B1L2RybS9tc20vbXNtX2ZiLmMKaW5kZXggZDFhN2E0NS4uNmI1NzNlNiAxMDA2NDQKLS0t IGEvZHJpdmVycy9ncHUvZHJtL21zbS9tc21fZmIuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNt L21zbV9mYi5jCkBAIC0xMjIsNyArMTIyLDcgQEAgdWludDMyX3QgbXNtX2ZyYW1lYnVmZmVyX2lv dmEoc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIsIGludCBpZCwgaW50IHBsYW5lKQogCXN0cnVj dCBtc21fZnJhbWVidWZmZXIgKm1zbV9mYiA9IHRvX21zbV9mcmFtZWJ1ZmZlcihmYik7CiAJaWYg KCFtc21fZmItPnBsYW5lc1twbGFuZV0pCiAJCXJldHVybiAwOwotCXJldHVybiBtc21fZ2VtX2lv dmEobXNtX2ZiLT5wbGFuZXNbcGxhbmVdLCBpZCk7CisJcmV0dXJuIG1zbV9nZW1faW92YShtc21f ZmItPnBsYW5lc1twbGFuZV0sIGlkKSArIGZiLT5vZmZzZXRzW3BsYW5lXTsKIH0KIAogc3RydWN0 IGRybV9nZW1fb2JqZWN0ICptc21fZnJhbWVidWZmZXJfYm8oc3RydWN0IGRybV9mcmFtZWJ1ZmZl ciAqZmIsIGludCBwbGFuZSkKLS0gClF1YWxjb21tIElubm92YXRpb24gQ2VudGVyLCBJbmMuCgpU aGUgUXVhbGNvbW0gSW5ub3ZhdGlvbiBDZW50ZXIsIEluYy4gaXMgYSBtZW1iZXIgb2YgdGhlIENv ZGUgQXVyb3JhIEZvcnVtLCBhIExpbnV4IEZvdW5kYXRpb24gQ29sbGFib3JhdGl2ZSBQcm9qZWN0 CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2 ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xp c3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=