From mboxrd@z Thu Jan 1 00:00:00 1970 From: Archit Taneja Subject: [PATCH 16/24] drm/msm/mdp5: Create mdp5_hwpipe_mode_set Date: Thu, 23 Mar 2017 15:58:09 +0530 Message-ID: <20170323102817.15017-17-architt@codeaurora.org> References: <20170323102817.15017-1-architt@codeaurora.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20170323102817.15017-1-architt@codeaurora.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: robdclark@gmail.com Cc: linux-arm-msm@vger.kernel.org, dri-devel@lists.freedesktop.org List-Id: linux-arm-msm@vger.kernel.org UmVmYWN0b3IgbWRwNV9wbGFuZV9tb2RlX3NldCB0byBjYWxsIG1kcDVfaHdwaXBlX21vZGVfc2V0 LiBUaGUgbGF0dGVyCmZ1bmMgdGFrZXMgaW4gb25seSB0aGUgaHdwaXBlIGFuZCB0aGUgcGFyYW1l dGVycyB0aGF0IG5lZWQgdG8gYmUKcHJvZ3JhbW1lZCBpbnRvIHRoZSBod3BpcGUgcmVnaXN0ZXJz LiBBbGwgdGhlIGNvZGUgdGhhdCBjYWxjdWxhdGVzIHRoZXNlCnBhcmFtZXRlcnMgaXMgbGVmdCBh cyBpcyBpbiBtZHA1X3BsYW5lX21vZGVfc2V0LgoKSW4gdGhlIGZ1dHVyZSwgd2hlbiB3ZSBsZXQg ZHJtX3BsYW5lIGJlIGNvbXByaXNlZCBvZiAyIGh3cGlwZXMsIHRoaXMgZnVuYwphbGxvdyB1cyB0 byBjb25maWd1cmUgZWFjaCBwaXBlIHdpdGhvdXQgYWRkaW5nIHJlZHVuZGFudCBjb2RlLgoKU2ln bmVkLW9mZi1ieTogQXJjaGl0IFRhbmVqYSA8YXJjaGl0dEBjb2RlYXVyb3JhLm9yZz4KLS0tCiBk cml2ZXJzL2dwdS9kcm0vbXNtL21kcC9tZHA1L21kcDVfcGxhbmUuYyB8IDIyNyArKysrKysrKysr KysrKysrKy0tLS0tLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCAxMzAgaW5zZXJ0aW9ucygrKSwg OTcgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9tZHAvbWRw NS9tZHA1X3BsYW5lLmMgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL21kcC9tZHA1L21kcDVfcGxhbmUu YwppbmRleCAzZGNhM2MwNzc3MGYuLmU1MmJlZTg3NzE5OCAxMDA2NDQKLS0tIGEvZHJpdmVycy9n cHUvZHJtL21zbS9tZHAvbWRwNS9tZHA1X3BsYW5lLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL21z bS9tZHAvbWRwNS9tZHA1X3BsYW5lLmMKQEAgLTQxLDkgKzQxLDYgQEAgc3RhdGljIGludCBtZHA1 X3VwZGF0ZV9jdXJzb3JfcGxhbmVfbGVnYWN5KHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAogCQl1 aW50MzJfdCBzcmNfeCwgdWludDMyX3Qgc3JjX3ksCiAJCXVpbnQzMl90IHNyY193LCB1aW50MzJf dCBzcmNfaCk7CiAKLXN0YXRpYyB2b2lkIHNldF9zY2Fub3V0X2xvY2tlZChzdHJ1Y3QgZHJtX3Bs YW5lICpwbGFuZSwKLQkJc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIpOwotCiBzdGF0aWMgc3Ry dWN0IG1kcDVfa21zICpnZXRfa21zKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lKQogewogCXN0cnVj dCBtc21fZHJtX3ByaXZhdGUgKnByaXYgPSBwbGFuZS0+ZGV2LT5kZXZfcHJpdmF0ZTsKQEAgLTQz OCwxMyArNDM1LDEwIEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX3BsYW5lX2hlbHBlcl9mdW5j cyBtZHA1X3BsYW5lX2hlbHBlcl9mdW5jcyA9IHsKIAkJLmF0b21pY191cGRhdGUgPSBtZHA1X3Bs YW5lX2F0b21pY191cGRhdGUsCiB9OwogCi1zdGF0aWMgdm9pZCBzZXRfc2Nhbm91dF9sb2NrZWQo c3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCi0JCXN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiKQor c3RhdGljIHZvaWQgc2V0X3NjYW5vdXRfbG9ja2VkKHN0cnVjdCBtZHA1X2ttcyAqbWRwNV9rbXMs CisJCQkgICAgICAgZW51bSBtZHA1X3BpcGUgcGlwZSwKKwkJCSAgICAgICBzdHJ1Y3QgZHJtX2Zy YW1lYnVmZmVyICpmYikKIHsKLQlzdHJ1Y3QgbWRwNV9rbXMgKm1kcDVfa21zID0gZ2V0X2ttcyhw bGFuZSk7Ci0Jc3RydWN0IG1kcDVfaHdfcGlwZSAqaHdwaXBlID0gdG9fbWRwNV9wbGFuZV9zdGF0 ZShwbGFuZS0+c3RhdGUpLT5od3BpcGU7Ci0JZW51bSBtZHA1X3BpcGUgcGlwZSA9IGh3cGlwZS0+ cGlwZTsKLQogCW1kcDVfd3JpdGUobWRwNV9rbXMsIFJFR19NRFA1X1BJUEVfU1JDX1NUUklERV9B KHBpcGUpLAogCQkJTURQNV9QSVBFX1NSQ19TVFJJREVfQV9QMChmYi0+cGl0Y2hlc1swXSkgfAog CQkJTURQNV9QSVBFX1NSQ19TVFJJREVfQV9QMShmYi0+cGl0Y2hlc1sxXSkpOwpAQCAtNDYxLDgg KzQ1NSw2IEBAIHN0YXRpYyB2b2lkIHNldF9zY2Fub3V0X2xvY2tlZChzdHJ1Y3QgZHJtX3BsYW5l ICpwbGFuZSwKIAkJCW1zbV9mcmFtZWJ1ZmZlcl9pb3ZhKGZiLCBtZHA1X2ttcy0+aWQsIDIpKTsK IAltZHA1X3dyaXRlKG1kcDVfa21zLCBSRUdfTURQNV9QSVBFX1NSQzNfQUREUihwaXBlKSwKIAkJ CW1zbV9mcmFtZWJ1ZmZlcl9pb3ZhKGZiLCBtZHA1X2ttcy0+aWQsIDMpKTsKLQotCXBsYW5lLT5m YiA9IGZiOwogfQogCiAvKiBOb3RlOiBtZHA1X3BsYW5lLT5waXBlX2xvY2sgbXVzdCBiZSBsb2Nr ZWQgKi8KQEAgLTcxNSw2ICs3MDcsMTE0IEBAIHN0YXRpYyB2b2lkIG1kcDVfd3JpdGVfcGl4ZWxf ZXh0KHN0cnVjdCBtZHA1X2ttcyAqbWRwNV9rbXMsIGVudW0gbWRwNV9waXBlIHBpcGUsCiAJfQog fQogCitzdHJ1Y3QgcGl4ZWxfZXh0IHsKKwlpbnQgbGVmdFtDT01QX01BWF07CisJaW50IHJpZ2h0 W0NPTVBfTUFYXTsKKwlpbnQgdG9wW0NPTVBfTUFYXTsKKwlpbnQgYm90dG9tW0NPTVBfTUFYXTsK K307CisKK3N0cnVjdCBwaGFzZV9zdGVwIHsKKwl1MzIgeFtDT01QX01BWF07CisJdTMyIHlbQ09N UF9NQVhdOworfTsKKworc3RhdGljIHZvaWQgbWRwNV9od3BpcGVfbW9kZV9zZXQoc3RydWN0IG1k cDVfa21zICptZHA1X2ttcywKKwkJCQkgc3RydWN0IG1kcDVfaHdfcGlwZSAqaHdwaXBlLAorCQkJ CSBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiwKKwkJCQkgc3RydWN0IHBoYXNlX3N0ZXAgKnN0 ZXAsCisJCQkJIHN0cnVjdCBwaXhlbF9leHQgKnBlLAorCQkJCSB1MzIgc2NhbGVfY29uZmlnLCB1 MzIgaGRlY20sIHUzMiB2ZGVjbSwKKwkJCQkgYm9vbCBoZmxpcCwgYm9vbCB2ZmxpcCwKKwkJCQkg aW50IGNydGNfeCwgaW50IGNydGNfeSwKKwkJCQkgdW5zaWduZWQgaW50IGNydGNfdywgdW5zaWdu ZWQgaW50IGNydGNfaCwKKwkJCQkgdTMyIHNyY19pbWdfdywgdTMyIHNyY19pbWdfaCwKKwkJCQkg dTMyIHNyY194LCB1MzIgc3JjX3ksCisJCQkJIHUzMiBzcmNfdywgdTMyIHNyY19oKQoreworCWVu dW0gbWRwNV9waXBlIHBpcGUgPSBod3BpcGUtPnBpcGU7CisJYm9vbCBoYXNfcGUgPSBod3BpcGUt PmNhcHMgJiBNRFBfUElQRV9DQVBfU1dfUElYX0VYVDsKKwljb25zdCBzdHJ1Y3QgbWRwX2Zvcm1h dCAqZm9ybWF0ID0KKwkJCXRvX21kcF9mb3JtYXQobXNtX2ZyYW1lYnVmZmVyX2Zvcm1hdChmYikp OworCisJbWRwNV93cml0ZShtZHA1X2ttcywgUkVHX01EUDVfUElQRV9TUkNfSU1HX1NJWkUocGlw ZSksCisJCQlNRFA1X1BJUEVfU1JDX0lNR19TSVpFX1dJRFRIKHNyY19pbWdfdykgfAorCQkJTURQ NV9QSVBFX1NSQ19JTUdfU0laRV9IRUlHSFQoc3JjX2ltZ19oKSk7CisKKwltZHA1X3dyaXRlKG1k cDVfa21zLCBSRUdfTURQNV9QSVBFX1NSQ19TSVpFKHBpcGUpLAorCQkJTURQNV9QSVBFX1NSQ19T SVpFX1dJRFRIKHNyY193KSB8CisJCQlNRFA1X1BJUEVfU1JDX1NJWkVfSEVJR0hUKHNyY19oKSk7 CisKKwltZHA1X3dyaXRlKG1kcDVfa21zLCBSRUdfTURQNV9QSVBFX1NSQ19YWShwaXBlKSwKKwkJ CU1EUDVfUElQRV9TUkNfWFlfWChzcmNfeCkgfAorCQkJTURQNV9QSVBFX1NSQ19YWV9ZKHNyY195 KSk7CisKKwltZHA1X3dyaXRlKG1kcDVfa21zLCBSRUdfTURQNV9QSVBFX09VVF9TSVpFKHBpcGUp LAorCQkJTURQNV9QSVBFX09VVF9TSVpFX1dJRFRIKGNydGNfdykgfAorCQkJTURQNV9QSVBFX09V VF9TSVpFX0hFSUdIVChjcnRjX2gpKTsKKworCW1kcDVfd3JpdGUobWRwNV9rbXMsIFJFR19NRFA1 X1BJUEVfT1VUX1hZKHBpcGUpLAorCQkJTURQNV9QSVBFX09VVF9YWV9YKGNydGNfeCkgfAorCQkJ TURQNV9QSVBFX09VVF9YWV9ZKGNydGNfeSkpOworCisJbWRwNV93cml0ZShtZHA1X2ttcywgUkVH X01EUDVfUElQRV9TUkNfRk9STUFUKHBpcGUpLAorCQkJTURQNV9QSVBFX1NSQ19GT1JNQVRfQV9C UEMoZm9ybWF0LT5icGNfYSkgfAorCQkJTURQNV9QSVBFX1NSQ19GT1JNQVRfUl9CUEMoZm9ybWF0 LT5icGNfcikgfAorCQkJTURQNV9QSVBFX1NSQ19GT1JNQVRfR19CUEMoZm9ybWF0LT5icGNfZykg fAorCQkJTURQNV9QSVBFX1NSQ19GT1JNQVRfQl9CUEMoZm9ybWF0LT5icGNfYikgfAorCQkJQ09O RChmb3JtYXQtPmFscGhhX2VuYWJsZSwgTURQNV9QSVBFX1NSQ19GT1JNQVRfQUxQSEFfRU5BQkxF KSB8CisJCQlNRFA1X1BJUEVfU1JDX0ZPUk1BVF9DUFAoZm9ybWF0LT5jcHAgLSAxKSB8CisJCQlN RFA1X1BJUEVfU1JDX0ZPUk1BVF9VTlBBQ0tfQ09VTlQoZm9ybWF0LT51bnBhY2tfY291bnQgLSAx KSB8CisJCQlDT05EKGZvcm1hdC0+dW5wYWNrX3RpZ2h0LCBNRFA1X1BJUEVfU1JDX0ZPUk1BVF9V TlBBQ0tfVElHSFQpIHwKKwkJCU1EUDVfUElQRV9TUkNfRk9STUFUX0ZFVENIX1RZUEUoZm9ybWF0 LT5mZXRjaF90eXBlKSB8CisJCQlNRFA1X1BJUEVfU1JDX0ZPUk1BVF9DSFJPTUFfU0FNUChmb3Jt YXQtPmNocm9tYV9zYW1wbGUpKTsKKworCW1kcDVfd3JpdGUobWRwNV9rbXMsIFJFR19NRFA1X1BJ UEVfU1JDX1VOUEFDSyhwaXBlKSwKKwkJCU1EUDVfUElQRV9TUkNfVU5QQUNLX0VMRU0wKGZvcm1h dC0+dW5wYWNrWzBdKSB8CisJCQlNRFA1X1BJUEVfU1JDX1VOUEFDS19FTEVNMShmb3JtYXQtPnVu cGFja1sxXSkgfAorCQkJTURQNV9QSVBFX1NSQ19VTlBBQ0tfRUxFTTIoZm9ybWF0LT51bnBhY2tb Ml0pIHwKKwkJCU1EUDVfUElQRV9TUkNfVU5QQUNLX0VMRU0zKGZvcm1hdC0+dW5wYWNrWzNdKSk7 CisKKwltZHA1X3dyaXRlKG1kcDVfa21zLCBSRUdfTURQNV9QSVBFX1NSQ19PUF9NT0RFKHBpcGUp LAorCQkJKGhmbGlwID8gTURQNV9QSVBFX1NSQ19PUF9NT0RFX0ZMSVBfTFIgOiAwKSB8CisJCQko dmZsaXAgPyBNRFA1X1BJUEVfU1JDX09QX01PREVfRkxJUF9VRCA6IDApIHwKKwkJCUNPTkQoaGFz X3BlLCBNRFA1X1BJUEVfU1JDX09QX01PREVfU1dfUElYX0VYVF9PVkVSUklERSkgfAorCQkJTURQ NV9QSVBFX1NSQ19PUF9NT0RFX0JXQyhCV0NfTE9TU0xFU1MpKTsKKworCS8qIG5vdCB1c2luZyBz ZWN1cmUgbW9kZTogKi8KKwltZHA1X3dyaXRlKG1kcDVfa21zLCBSRUdfTURQNV9QSVBFX1NSQ19B RERSX1NXX1NUQVRVUyhwaXBlKSwgMCk7CisKKwlpZiAoaHdwaXBlLT5jYXBzICYgTURQX1BJUEVf Q0FQX1NXX1BJWF9FWFQpCisJCW1kcDVfd3JpdGVfcGl4ZWxfZXh0KG1kcDVfa21zLCBwaXBlLCBm b3JtYXQsCisJCQkJc3JjX3csIHBlLT5sZWZ0LCBwZS0+cmlnaHQsCisJCQkJc3JjX2gsIHBlLT50 b3AsIHBlLT5ib3R0b20pOworCisJaWYgKGh3cGlwZS0+Y2FwcyAmIE1EUF9QSVBFX0NBUF9TQ0FM RSkgeworCQltZHA1X3dyaXRlKG1kcDVfa21zLCBSRUdfTURQNV9QSVBFX1NDQUxFX1BIQVNFX1NU RVBfWChwaXBlKSwKKwkJCQlzdGVwLT54W0NPTVBfMF0pOworCQltZHA1X3dyaXRlKG1kcDVfa21z LCBSRUdfTURQNV9QSVBFX1NDQUxFX1BIQVNFX1NURVBfWShwaXBlKSwKKwkJCQlzdGVwLT55W0NP TVBfMF0pOworCQltZHA1X3dyaXRlKG1kcDVfa21zLCBSRUdfTURQNV9QSVBFX1NDQUxFX0NSX1BI QVNFX1NURVBfWChwaXBlKSwKKwkJCQlzdGVwLT54W0NPTVBfMV8yXSk7CisJCW1kcDVfd3JpdGUo bWRwNV9rbXMsIFJFR19NRFA1X1BJUEVfU0NBTEVfQ1JfUEhBU0VfU1RFUF9ZKHBpcGUpLAorCQkJ CXN0ZXAtPnlbQ09NUF8xXzJdKTsKKwkJbWRwNV93cml0ZShtZHA1X2ttcywgUkVHX01EUDVfUElQ RV9ERUNJTUFUSU9OKHBpcGUpLAorCQkJCU1EUDVfUElQRV9ERUNJTUFUSU9OX1ZFUlQodmRlY20p IHwKKwkJCQlNRFA1X1BJUEVfREVDSU1BVElPTl9IT1JaKGhkZWNtKSk7CisJCW1kcDVfd3JpdGUo bWRwNV9rbXMsIFJFR19NRFA1X1BJUEVfU0NBTEVfQ09ORklHKHBpcGUpLAorCQkJICAgc2NhbGVf Y29uZmlnKTsKKwl9CisKKwlpZiAoaHdwaXBlLT5jYXBzICYgTURQX1BJUEVfQ0FQX0NTQykgewor CQlpZiAoTURQX0ZPUk1BVF9JU19ZVVYoZm9ybWF0KSkKKwkJCWNzY19lbmFibGUobWRwNV9rbXMs IHBpcGUsCisJCQkJCW1kcF9nZXRfZGVmYXVsdF9jc2NfY2ZnKENTQ19ZVVYyUkdCKSk7CisJCWVs c2UKKwkJCWNzY19kaXNhYmxlKG1kcDVfa21zLCBwaXBlKTsKKwl9CisKKwlzZXRfc2Nhbm91dF9s b2NrZWQobWRwNV9rbXMsIHBpcGUsIGZiKTsKK30KIAogc3RhdGljIGludCBtZHA1X3BsYW5lX21v ZGVfc2V0KHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAogCQlzdHJ1Y3QgZHJtX2NydGMgKmNydGMs IHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiLApAQCAtNzI3LDEwICs4MjcsOCBAQCBzdGF0aWMg aW50IG1kcDVfcGxhbmVfbW9kZV9zZXQoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCiAJZW51bSBt ZHA1X3BpcGUgcGlwZSA9IGh3cGlwZS0+cGlwZTsKIAljb25zdCBzdHJ1Y3QgbWRwX2Zvcm1hdCAq Zm9ybWF0OwogCXVpbnQzMl90IG5wbGFuZXMsIGNvbmZpZyA9IDA7Ci0JdWludDMyX3QgcGhhc2V4 X3N0ZXBbQ09NUF9NQVhdID0gezAsfSwgcGhhc2V5X3N0ZXBbQ09NUF9NQVhdID0gezAsfTsKLQli b29sIHBlID0gaHdwaXBlLT5jYXBzICYgTURQX1BJUEVfQ0FQX1NXX1BJWF9FWFQ7Ci0JaW50IHBl X2xlZnRbQ09NUF9NQVhdLCBwZV9yaWdodFtDT01QX01BWF07Ci0JaW50IHBlX3RvcFtDT01QX01B WF0sIHBlX2JvdHRvbVtDT01QX01BWF07CisJc3RydWN0IHBoYXNlX3N0ZXAgc3RlcCA9IHsgMCB9 OworCXN0cnVjdCBwaXhlbF9leHQgcGUgPSB7IDAgfTsKIAl1aW50MzJfdCBoZGVjbSA9IDAsIHZk ZWNtID0gMDsKIAl1aW50MzJfdCBwaXhfZm9ybWF0OwogCXVuc2lnbmVkIGludCByb3RhdGlvbjsK QEAgLTczOSw2ICs4MzcsNyBAQCBzdGF0aWMgaW50IG1kcDVfcGxhbmVfbW9kZV9zZXQoc3RydWN0 IGRybV9wbGFuZSAqcGxhbmUsCiAJdW5zaWduZWQgaW50IGNydGNfdywgY3J0Y19oOwogCXVpbnQz Ml90IHNyY194LCBzcmNfeTsKIAl1aW50MzJfdCBzcmNfdywgc3JjX2g7CisJdWludDMyX3Qgc3Jj X2ltZ193LCBzcmNfaW1nX2g7CiAJdW5zaWduZWQgbG9uZyBmbGFnczsKIAlpbnQgcmV0OwogCkBA IC03NjcsMjMgKzg2NiwyNiBAQCBzdGF0aWMgaW50IG1kcDVfcGxhbmVfbW9kZV9zZXQoc3RydWN0 IGRybV9wbGFuZSAqcGxhbmUsCiAJc3JjX3cgPSBzcmNfdyA+PiAxNjsKIAlzcmNfaCA9IHNyY19o ID4+IDE2OwogCisJc3JjX2ltZ193ID0gbWluKGZiLT53aWR0aCwgc3JjX3cpOworCXNyY19pbWdf aCA9IG1pbihmYi0+aGVpZ2h0LCBzcmNfaCk7CisKIAlEQkcoIiVzOiBGQlsldV0gJXUsJXUsJXUs JXUgLT4gQ1JUQ1sldV0gJWQsJWQsJXUsJXUiLCBwbGFuZS0+bmFtZSwKIAkJCWZiLT5iYXNlLmlk LCBzcmNfeCwgc3JjX3ksIHNyY193LCBzcmNfaCwKIAkJCWNydGMtPmJhc2UuaWQsIGNydGNfeCwg Y3J0Y195LCBjcnRjX3csIGNydGNfaCk7CiAKLQlyZXQgPSBjYWxjX3NjYWxleF9zdGVwcyhwbGFu ZSwgcGl4X2Zvcm1hdCwgc3JjX3csIGNydGNfdywgcGhhc2V4X3N0ZXApOworCXJldCA9IGNhbGNf c2NhbGV4X3N0ZXBzKHBsYW5lLCBwaXhfZm9ybWF0LCBzcmNfdywgY3J0Y193LCBzdGVwLngpOwog CWlmIChyZXQpCiAJCXJldHVybiByZXQ7CiAKLQlyZXQgPSBjYWxjX3NjYWxleV9zdGVwcyhwbGFu ZSwgcGl4X2Zvcm1hdCwgc3JjX2gsIGNydGNfaCwgcGhhc2V5X3N0ZXApOworCXJldCA9IGNhbGNf c2NhbGV5X3N0ZXBzKHBsYW5lLCBwaXhfZm9ybWF0LCBzcmNfaCwgY3J0Y19oLCBzdGVwLnkpOwog CWlmIChyZXQpCiAJCXJldHVybiByZXQ7CiAKIAlpZiAoaHdwaXBlLT5jYXBzICYgTURQX1BJUEVf Q0FQX1NXX1BJWF9FWFQpIHsKLQkJY2FsY19waXhlbF9leHQoZm9ybWF0LCBzcmNfdywgY3J0Y193 LCBwaGFzZXhfc3RlcCwKLQkJCQkJIHBlX2xlZnQsIHBlX3JpZ2h0LCB0cnVlKTsKLQkJY2FsY19w aXhlbF9leHQoZm9ybWF0LCBzcmNfaCwgY3J0Y19oLCBwaGFzZXlfc3RlcCwKLQkJCQkJcGVfdG9w LCBwZV9ib3R0b20sIGZhbHNlKTsKKwkJY2FsY19waXhlbF9leHQoZm9ybWF0LCBzcmNfdywgY3J0 Y193LCBzdGVwLngsCisJCQkgICAgICAgcGUubGVmdCwgcGUucmlnaHQsIHRydWUpOworCQljYWxj X3BpeGVsX2V4dChmb3JtYXQsIHNyY19oLCBjcnRjX2gsIHN0ZXAueSwKKwkJCSAgICAgICBwZS50 b3AsIHBlLmJvdHRvbSwgZmFsc2UpOwogCX0KIAogCS8qIFRPRE8gY2FsYyBoZGVjbSwgdmRlY20g Ki8KQEAgLTgwMiw4NSArOTA0LDE2IEBAIHN0YXRpYyBpbnQgbWRwNV9wbGFuZV9tb2RlX3NldChz dHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKIAogCXNwaW5fbG9ja19pcnFzYXZlKCZtZHA1X3BsYW5l LT5waXBlX2xvY2ssIGZsYWdzKTsKIAotCW1kcDVfd3JpdGUobWRwNV9rbXMsIFJFR19NRFA1X1BJ UEVfU1JDX0lNR19TSVpFKHBpcGUpLAotCQkJTURQNV9QSVBFX1NSQ19JTUdfU0laRV9XSURUSCht aW4oZmItPndpZHRoLCBzcmNfdykpIHwKLQkJCU1EUDVfUElQRV9TUkNfSU1HX1NJWkVfSEVJR0hU KG1pbihmYi0+aGVpZ2h0LCBzcmNfaCkpKTsKLQotCW1kcDVfd3JpdGUobWRwNV9rbXMsIFJFR19N RFA1X1BJUEVfU1JDX1NJWkUocGlwZSksCi0JCQlNRFA1X1BJUEVfU1JDX1NJWkVfV0lEVEgoc3Jj X3cpIHwKLQkJCU1EUDVfUElQRV9TUkNfU0laRV9IRUlHSFQoc3JjX2gpKTsKLQotCW1kcDVfd3Jp dGUobWRwNV9rbXMsIFJFR19NRFA1X1BJUEVfU1JDX1hZKHBpcGUpLAotCQkJTURQNV9QSVBFX1NS Q19YWV9YKHNyY194KSB8Ci0JCQlNRFA1X1BJUEVfU1JDX1hZX1koc3JjX3kpKTsKLQotCW1kcDVf d3JpdGUobWRwNV9rbXMsIFJFR19NRFA1X1BJUEVfT1VUX1NJWkUocGlwZSksCi0JCQlNRFA1X1BJ UEVfT1VUX1NJWkVfV0lEVEgoY3J0Y193KSB8Ci0JCQlNRFA1X1BJUEVfT1VUX1NJWkVfSEVJR0hU KGNydGNfaCkpOwotCi0JbWRwNV93cml0ZShtZHA1X2ttcywgUkVHX01EUDVfUElQRV9PVVRfWFko cGlwZSksCi0JCQlNRFA1X1BJUEVfT1VUX1hZX1goY3J0Y194KSB8Ci0JCQlNRFA1X1BJUEVfT1VU X1hZX1koY3J0Y195KSk7Ci0KLQltZHA1X3dyaXRlKG1kcDVfa21zLCBSRUdfTURQNV9QSVBFX1NS Q19GT1JNQVQocGlwZSksCi0JCQlNRFA1X1BJUEVfU1JDX0ZPUk1BVF9BX0JQQyhmb3JtYXQtPmJw Y19hKSB8Ci0JCQlNRFA1X1BJUEVfU1JDX0ZPUk1BVF9SX0JQQyhmb3JtYXQtPmJwY19yKSB8Ci0J CQlNRFA1X1BJUEVfU1JDX0ZPUk1BVF9HX0JQQyhmb3JtYXQtPmJwY19nKSB8Ci0JCQlNRFA1X1BJ UEVfU1JDX0ZPUk1BVF9CX0JQQyhmb3JtYXQtPmJwY19iKSB8Ci0JCQlDT05EKGZvcm1hdC0+YWxw aGFfZW5hYmxlLCBNRFA1X1BJUEVfU1JDX0ZPUk1BVF9BTFBIQV9FTkFCTEUpIHwKLQkJCU1EUDVf UElQRV9TUkNfRk9STUFUX0NQUChmb3JtYXQtPmNwcCAtIDEpIHwKLQkJCU1EUDVfUElQRV9TUkNf Rk9STUFUX1VOUEFDS19DT1VOVChmb3JtYXQtPnVucGFja19jb3VudCAtIDEpIHwKLQkJCUNPTkQo Zm9ybWF0LT51bnBhY2tfdGlnaHQsIE1EUDVfUElQRV9TUkNfRk9STUFUX1VOUEFDS19USUdIVCkg fAotCQkJTURQNV9QSVBFX1NSQ19GT1JNQVRfRkVUQ0hfVFlQRShmb3JtYXQtPmZldGNoX3R5cGUp IHwKLQkJCU1EUDVfUElQRV9TUkNfRk9STUFUX0NIUk9NQV9TQU1QKGZvcm1hdC0+Y2hyb21hX3Nh bXBsZSkpOwotCi0JbWRwNV93cml0ZShtZHA1X2ttcywgUkVHX01EUDVfUElQRV9TUkNfVU5QQUNL KHBpcGUpLAotCQkJTURQNV9QSVBFX1NSQ19VTlBBQ0tfRUxFTTAoZm9ybWF0LT51bnBhY2tbMF0p IHwKLQkJCU1EUDVfUElQRV9TUkNfVU5QQUNLX0VMRU0xKGZvcm1hdC0+dW5wYWNrWzFdKSB8Ci0J CQlNRFA1X1BJUEVfU1JDX1VOUEFDS19FTEVNMihmb3JtYXQtPnVucGFja1syXSkgfAotCQkJTURQ NV9QSVBFX1NSQ19VTlBBQ0tfRUxFTTMoZm9ybWF0LT51bnBhY2tbM10pKTsKLQotCW1kcDVfd3Jp dGUobWRwNV9rbXMsIFJFR19NRFA1X1BJUEVfU1JDX09QX01PREUocGlwZSksCi0JCQkoaGZsaXAg PyBNRFA1X1BJUEVfU1JDX09QX01PREVfRkxJUF9MUiA6IDApIHwKLQkJCSh2ZmxpcCA/IE1EUDVf UElQRV9TUkNfT1BfTU9ERV9GTElQX1VEIDogMCkgfAotCQkJQ09ORChwZSwgTURQNV9QSVBFX1NS Q19PUF9NT0RFX1NXX1BJWF9FWFRfT1ZFUlJJREUpIHwKLQkJCU1EUDVfUElQRV9TUkNfT1BfTU9E RV9CV0MoQldDX0xPU1NMRVNTKSk7Ci0KLQkvKiBub3QgdXNpbmcgc2VjdXJlIG1vZGU6ICovCi0J bWRwNV93cml0ZShtZHA1X2ttcywgUkVHX01EUDVfUElQRV9TUkNfQUREUl9TV19TVEFUVVMocGlw ZSksIDApOwotCi0JaWYgKGh3cGlwZS0+Y2FwcyAmIE1EUF9QSVBFX0NBUF9TV19QSVhfRVhUKQot CQltZHA1X3dyaXRlX3BpeGVsX2V4dChtZHA1X2ttcywgcGlwZSwgZm9ybWF0LAotCQkJCXNyY193 LCBwZV9sZWZ0LCBwZV9yaWdodCwKLQkJCQlzcmNfaCwgcGVfdG9wLCBwZV9ib3R0b20pOwotCi0J aWYgKGh3cGlwZS0+Y2FwcyAmIE1EUF9QSVBFX0NBUF9TQ0FMRSkgewotCQltZHA1X3dyaXRlKG1k cDVfa21zLCBSRUdfTURQNV9QSVBFX1NDQUxFX1BIQVNFX1NURVBfWChwaXBlKSwKLQkJCQlwaGFz ZXhfc3RlcFtDT01QXzBdKTsKLQkJbWRwNV93cml0ZShtZHA1X2ttcywgUkVHX01EUDVfUElQRV9T Q0FMRV9QSEFTRV9TVEVQX1kocGlwZSksCi0JCQkJcGhhc2V5X3N0ZXBbQ09NUF8wXSk7Ci0JCW1k cDVfd3JpdGUobWRwNV9rbXMsIFJFR19NRFA1X1BJUEVfU0NBTEVfQ1JfUEhBU0VfU1RFUF9YKHBp cGUpLAotCQkJCXBoYXNleF9zdGVwW0NPTVBfMV8yXSk7Ci0JCW1kcDVfd3JpdGUobWRwNV9rbXMs IFJFR19NRFA1X1BJUEVfU0NBTEVfQ1JfUEhBU0VfU1RFUF9ZKHBpcGUpLAotCQkJCXBoYXNleV9z dGVwW0NPTVBfMV8yXSk7Ci0JCW1kcDVfd3JpdGUobWRwNV9rbXMsIFJFR19NRFA1X1BJUEVfREVD SU1BVElPTihwaXBlKSwKLQkJCQlNRFA1X1BJUEVfREVDSU1BVElPTl9WRVJUKHZkZWNtKSB8Ci0J CQkJTURQNV9QSVBFX0RFQ0lNQVRJT05fSE9SWihoZGVjbSkpOwotCQltZHA1X3dyaXRlKG1kcDVf a21zLCBSRUdfTURQNV9QSVBFX1NDQUxFX0NPTkZJRyhwaXBlKSwgY29uZmlnKTsKLQl9Ci0KLQlp ZiAoaHdwaXBlLT5jYXBzICYgTURQX1BJUEVfQ0FQX0NTQykgewotCQlpZiAoTURQX0ZPUk1BVF9J U19ZVVYoZm9ybWF0KSkKLQkJCWNzY19lbmFibGUobWRwNV9rbXMsIHBpcGUsCi0JCQkJCW1kcF9n ZXRfZGVmYXVsdF9jc2NfY2ZnKENTQ19ZVVYyUkdCKSk7Ci0JCWVsc2UKLQkJCWNzY19kaXNhYmxl KG1kcDVfa21zLCBwaXBlKTsKLQl9Ci0KLQlzZXRfc2Nhbm91dF9sb2NrZWQocGxhbmUsIGZiKTsK KwltZHA1X2h3cGlwZV9tb2RlX3NldChtZHA1X2ttcywgaHdwaXBlLCBmYiwgJnN0ZXAsICZwZSwK KwkJCSAgICAgY29uZmlnLCBoZGVjbSwgdmRlY20sIGhmbGlwLCB2ZmxpcCwKKwkJCSAgICAgY3J0 Y194LCBjcnRjX3ksIGNydGNfdywgY3J0Y19oLAorCQkJICAgICBzcmNfaW1nX3csIHNyY19pbWdf aCwKKwkJCSAgICAgc3JjX3gsIHNyY195LCBzcmNfdywgc3JjX2gpOwogCiAJc3Bpbl91bmxvY2tf aXJxcmVzdG9yZSgmbWRwNV9wbGFuZS0+cGlwZV9sb2NrLCBmbGFncyk7CiAKKwlwbGFuZS0+ZmIg PSBmYjsKKwogCXJldHVybiByZXQ7CiB9CiAKLS0gClRoZSBRdWFsY29tbSBJbm5vdmF0aW9uIENl bnRlciwgSW5jLiBpcyBhIG1lbWJlciBvZiB0aGUgQ29kZSBBdXJvcmEgRm9ydW0sCmhvc3RlZCBi eSBUaGUgTGludXggRm91bmRhdGlvbgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJl ZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGlu Zm8vZHJpLWRldmVsCg==