From mboxrd@z Thu Jan 1 00:00:00 1970 From: Benoit Parrot Subject: [Patch v2 5/6] drm/omap: Add virtual plane support to omap_plane Date: Mon, 26 Mar 2018 11:21:27 -0500 Message-ID: <20180326162128.8740-6-bparrot@ti.com> References: <20180326162128.8740-1-bparrot@ti.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20180326162128.8740-1-bparrot@ti.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, devicetree@vger.kernel.org, Laurent Pinchart Cc: Peter Ujfalusi , Tomi Valkeinen , Jyri Sarha List-Id: devicetree@vger.kernel.org QWRkIHZpcnR1YWwgd2lkZSBwbGFuZSBzdXBwb3J0IGJ5IGFkZGluZyBhbiBzZWNvbmRhcnkKcGxh bmVfaWQgc28gdGhhdCBhbiAib21hcF9wbGFuZSIgY2FuIGJlIGNvbXBvc2VkIG9mIHVwIHRvCnR3 byBwaHlzaWNhbCBwbGFuZXMuCgpXaGVuIGF0IGxlYXN0IG9uZSAncGxhbmUnIGNoaWxkIG5vZGUg aXMgcHJlc2VudCBpbiBEVCB0aGVuCm9tYXBfcGxhbmVfaW5pdCB3aWxsIG9ubHkgdXNlIHRoZSBw bGFuZSBkZXNjcmliZWQgaW4gRFQuClNvbWUgb2YgdGhlc2Ugbm9kZXMgbWF5IGJlIGEgdmlydHVh bCB3aWRlIHBsYW5lIGlmIHRoZXkgYXJlIGRlZmluZWQKYXMgdHdvIHBoeXNpY2FsIHBsYW5lcy4K UGxhbmVzIGNhbiBhbHNvIGJlIGFzc29jaWF0ZWQgd2l0aCB2YXJpb3VzIGNydGNzIGluZGVwZW5k ZW50bHkuClRoZXJlZm9yZSB3ZSBjYW4gcmVzdHJpY3QgdGhlIHVzZSBvZiB2aXJ0dWFsIHBsYW5l IHRvIHNwZWNpZmljCkNSVEMvdmlkZW8gcG9ydCBpZiBuZWVkIGJlLCBpZiBjcnRjX21hc2sgaXMg bm90IHNwZWNpZmllZCB0aGVuCnRoZSBwbGFuZSB3aWxsIGJlIGF2YWlsYWJsZSB0byBhbGwgYXZh aWxhYmxlIGNydGNzLgpQaHlzaWNhbCBwbGFuZXMgd2hpY2ggYXJlIG5vdCBkZXNjcmliZWQgd2ls bCBlc3NlbnRpYWxseSBiZSBoaWRkZW4KZnJvbSB0aGUgZHJpdmVyLgoKSWYgbm8gJ3BsYW5lJyBj aGlsZCBub2RlcyBleGlzdCB0aGVuIHRoZSBub3JtYWwgcGxhbmUKYWxsb2NhdGlvbiB3aWxsIHRh a2UgcGxhY2UuCgpTaWduZWQtb2ZmLWJ5OiBCZW5vaXQgUGFycm90IDxicGFycm90QHRpLmNvbT4K LS0tCiBkcml2ZXJzL2dwdS9kcm0vb21hcGRybS9vbWFwX2Rydi5jICAgfCAxMjcgKysrKysrKysr KysrKysrKysrKysrKysrKysrLS0KIGRyaXZlcnMvZ3B1L2RybS9vbWFwZHJtL29tYXBfZmIuYyAg ICB8ICA2NiArKysrKysrKysrLS0tLS0KIGRyaXZlcnMvZ3B1L2RybS9vbWFwZHJtL29tYXBfZmIu aCAgICB8ICAgNCArLQogZHJpdmVycy9ncHUvZHJtL29tYXBkcm0vb21hcF9wbGFuZS5jIHwgMTUx ICsrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vb21h cGRybS9vbWFwX3BsYW5lLmggfCAgIDQgKy0KIDUgZmlsZXMgY2hhbmdlZCwgMjgzIGluc2VydGlv bnMoKyksIDY5IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9vbWFw ZHJtL29tYXBfZHJ2LmMgYi9kcml2ZXJzL2dwdS9kcm0vb21hcGRybS9vbWFwX2Rydi5jCmluZGV4 IDM3ZWUyMGM3NzNjNy4uNGM0M2VmMjM5MTM2IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0v b21hcGRybS9vbWFwX2Rydi5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9vbWFwZHJtL29tYXBfZHJ2 LmMKQEAgLTE2LDYgKzE2LDcgQEAKICAqLwogCiAjaW5jbHVkZSA8bGludXgvc3lzX3NvYy5oPgor I2luY2x1ZGUgPGxpbnV4L3NvcnQuaD4KIAogI2luY2x1ZGUgPGRybS9kcm1fYXRvbWljLmg+CiAj aW5jbHVkZSA8ZHJtL2RybV9hdG9taWNfaGVscGVyLmg+CkBAIC0xMTYsNiArMTE3LDExMiBAQCBz dGF0aWMgdm9pZCBvbWFwX2F0b21pY19jb21taXRfdGFpbChzdHJ1Y3QgZHJtX2F0b21pY19zdGF0 ZSAqb2xkX3N0YXRlKQogCXByaXYtPmRpc3BjX29wcy0+cnVudGltZV9wdXQoKTsKIH0KIAorc3Rh dGljIGludCBvbWFwX2F0b21pY19zdGF0ZV96cG9zX2NtcChjb25zdCB2b2lkICphLCBjb25zdCB2 b2lkICpiKQoreworCWNvbnN0IHN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKnNhID0gKihzdHJ1Y3Qg ZHJtX3BsYW5lX3N0YXRlICoqKWE7CisJY29uc3Qgc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqc2Ig PSAqKHN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKiopYjsKKworCWlmIChzYS0+enBvcyAhPSBzYi0+ enBvcykKKwkJcmV0dXJuIHNhLT56cG9zIC0gc2ItPnpwb3M7CisJZWxzZQorCQlyZXR1cm4gc2Et PnBsYW5lLT5iYXNlLmlkIC0gc2ItPnBsYW5lLT5iYXNlLmlkOworfQorCitzdGF0aWMgaW50IG9t YXBfYXRvbWljX2NydGNfbm9ybWFsaXplX3pwb3Moc3RydWN0IGRybV9jcnRjICpjcnRjLAorCQkJ CQkgICBzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCit7CisJc3RydWN0IGRybV9h dG9taWNfc3RhdGUgKnN0YXRlID0gY3J0Y19zdGF0ZS0+c3RhdGU7CisJc3RydWN0IGRybV9kZXZp Y2UgKmRldiA9IGNydGMtPmRldjsKKwlpbnQgdG90YWxfcGxhbmVzID0gZGV2LT5tb2RlX2NvbmZp Zy5udW1fdG90YWxfcGxhbmU7CisJc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqKnN0YXRlczsKKwlz dHJ1Y3QgZHJtX3BsYW5lICpwbGFuZTsKKwlpbnQgaSwgaW5jLCBuID0gMDsKKwlpbnQgcmV0ID0g MDsKKworCURSTV9ERUJVR19BVE9NSUMoIltDUlRDOiVkOiVzXSBjYWxjdWxhdGluZyBub3JtYWxp emVkIHpwb3MgdmFsdWVzXG4iLAorCQkJIGNydGMtPmJhc2UuaWQsIGNydGMtPm5hbWUpOworCisJ c3RhdGVzID0ga21hbGxvY19hcnJheSh0b3RhbF9wbGFuZXMsIHNpemVvZigqc3RhdGVzKSwgR0ZQ X0tFUk5FTCk7CisJaWYgKCFzdGF0ZXMpCisJCXJldHVybiAtRU5PTUVNOworCisJLyoKKwkgKiBO b3JtYWxpemF0aW9uIHByb2Nlc3MgbWlnaHQgY3JlYXRlIG5ldyBzdGF0ZXMgZm9yIHBsYW5lcyB3 aGljaAorCSAqIG5vcm1hbGl6ZWRfenBvcyBoYXMgdG8gYmUgcmVjYWxjdWxhdGVkLgorCSAqLwor CWRybV9mb3JfZWFjaF9wbGFuZV9tYXNrKHBsYW5lLCBkZXYsIGNydGNfc3RhdGUtPnBsYW5lX21h c2spIHsKKwkJc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUgPQorCQkJZHJtX2F0 b21pY19nZXRfcGxhbmVfc3RhdGUoc3RhdGUsIHBsYW5lKTsKKwkJaWYgKElTX0VSUihwbGFuZV9z dGF0ZSkpIHsKKwkJCXJldCA9IFBUUl9FUlIocGxhbmVfc3RhdGUpOworCQkJZ290byBkb25lOwor CQl9CisJCXN0YXRlc1tuKytdID0gcGxhbmVfc3RhdGU7CisJCURSTV9ERUJVR19BVE9NSUMoIltQ TEFORTolZDolc10gcHJvY2Vzc2luZyB6cG9zIHZhbHVlICVkXG4iLAorCQkJCSBwbGFuZS0+YmFz ZS5pZCwgcGxhbmUtPm5hbWUsCisJCQkJIHBsYW5lX3N0YXRlLT56cG9zKTsKKwl9CisKKwlzb3J0 KHN0YXRlcywgbiwgc2l6ZW9mKCpzdGF0ZXMpLCBvbWFwX2F0b21pY19zdGF0ZV96cG9zX2NtcCwg TlVMTCk7CisKKwlmb3IgKGluYyA9IDAsIGkgPSAwOyBpIDwgbjsgaSsrKSB7CisJCXBsYW5lID0g c3RhdGVzW2ldLT5wbGFuZTsKKworCQlzdGF0ZXNbaV0tPm5vcm1hbGl6ZWRfenBvcyA9IGkgKyBp bmM7CisJCURSTV9ERUJVR19BVE9NSUMoIltQTEFORTolZDolc10gbm9ybWFsaXplZCB6cG9zIHZh bHVlICVkXG4iLAorCQkJCSBwbGFuZS0+YmFzZS5pZCwgcGxhbmUtPm5hbWUsIGkgKyBpbmMpOwor CQkvKgorCQkgKiBJZiB0aGUgY3VycmVudCBwbGFuZSBpcyB2aXJ0dWFsIGl0IHVzZXMgMiBodyBw bGFuZXMKKwkJICogdGhlcmVmb3JlIHRoZSB2ZXJ5IG5leHQgenBvcyBpcyB1c2VkIGJ5IHRoZSBz ZWNvbmRhcnkvYXV4CisJCSAqIHBsYW5lIHNvIHdlIG5lZWQgdG8gc2tpcCBvbmUgenBvcyBmcm9t IHRoaXMgcG9pbnQgb24uCisJCSAqLworCQlpZiAoaXNfb21hcF9wbGFuZV92aXJ0dWFsKHBsYW5l KSkKKwkJCWluYysrOworCX0KKwljcnRjX3N0YXRlLT56cG9zX2NoYW5nZWQgPSB0cnVlOworCitk b25lOgorCWtmcmVlKHN0YXRlcyk7CisJcmV0dXJuIHJldDsKK30KKworc3RhdGljIGludCBvbWFw X2F0b21pY19ub3JtYWxpemVfenBvcyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAorCQkJCSAgICAg IHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSkKK3sKKwlzdHJ1Y3QgZHJtX2NydGMgKmNy dGM7CisJc3RydWN0IGRybV9jcnRjX3N0YXRlICpvbGRfY3J0Y19zdGF0ZSwgKm5ld19jcnRjX3N0 YXRlOworCWludCBpLCByZXQgPSAwOworCisJZm9yX2VhY2hfb2xkbmV3X2NydGNfaW5fc3RhdGUo c3RhdGUsIGNydGMsIG9sZF9jcnRjX3N0YXRlLCBuZXdfY3J0Y19zdGF0ZSwgaSkgeworCQlpZiAo b2xkX2NydGNfc3RhdGUtPnBsYW5lX21hc2sgIT0gbmV3X2NydGNfc3RhdGUtPnBsYW5lX21hc2sg fHwKKwkJICAgIG5ld19jcnRjX3N0YXRlLT56cG9zX2NoYW5nZWQpIHsKKwkJCXJldCA9IG9tYXBf YXRvbWljX2NydGNfbm9ybWFsaXplX3pwb3MoY3J0YywKKwkJCQkJCQkgICAgICBuZXdfY3J0Y19z dGF0ZSk7CisJCQlpZiAocmV0KQorCQkJCXJldHVybiByZXQ7CisJCX0KKwl9CisJcmV0dXJuIDA7 Cit9CisKK3N0YXRpYyBpbnQgb21hcF9hdG9taWNfY2hlY2soc3RydWN0IGRybV9kZXZpY2UgKmRl diwKKwkJCSAgICAgc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKQoreworCWludCByZXQ7 CisKKwlyZXQgPSBkcm1fYXRvbWljX2hlbHBlcl9jaGVjayhkZXYsIHN0YXRlKTsKKwlpZiAocmV0 KQorCQlyZXR1cm4gcmV0OworCisJaWYgKGRldi0+bW9kZV9jb25maWcubm9ybWFsaXplX3pwb3Mp IHsKKwkJcmV0ID0gb21hcF9hdG9taWNfbm9ybWFsaXplX3pwb3MoZGV2LCBzdGF0ZSk7CisJCWlm IChyZXQpCisJCQlyZXR1cm4gcmV0OworCX0KKworCXJldHVybiAwOworfQorCiBzdGF0aWMgY29u c3Qgc3RydWN0IGRybV9tb2RlX2NvbmZpZ19oZWxwZXJfZnVuY3Mgb21hcF9tb2RlX2NvbmZpZ19o ZWxwZXJfZnVuY3MgPSB7CiAJLmF0b21pY19jb21taXRfdGFpbCA9IG9tYXBfYXRvbWljX2NvbW1p dF90YWlsLAogfTsKQEAgLTEyMyw3ICsyMzAsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9t b2RlX2NvbmZpZ19oZWxwZXJfZnVuY3Mgb21hcF9tb2RlX2NvbmZpZ19oZWxwZXJfZnVuY3MgPQog c3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fbW9kZV9jb25maWdfZnVuY3Mgb21hcF9tb2RlX2NvbmZp Z19mdW5jcyA9IHsKIAkuZmJfY3JlYXRlID0gb21hcF9mcmFtZWJ1ZmZlcl9jcmVhdGUsCiAJLm91 dHB1dF9wb2xsX2NoYW5nZWQgPSBkcm1fZmJfaGVscGVyX291dHB1dF9wb2xsX2NoYW5nZWQsCi0J LmF0b21pY19jaGVjayA9IGRybV9hdG9taWNfaGVscGVyX2NoZWNrLAorCS5hdG9taWNfY2hlY2sg PSBvbWFwX2F0b21pY19jaGVjaywKIAkuYXRvbWljX2NvbW1pdCA9IGRybV9hdG9taWNfaGVscGVy X2NvbW1pdCwKIH07CiAKQEAgLTE4OCwxMCArMjk1LDkgQEAgc3RhdGljIGludCBvbWFwX2Nvbm5l Y3RfZHNzZGV2cyh2b2lkKQogCXJldHVybiByOwogfQogCi1zdGF0aWMgaW50IG9tYXBfbW9kZXNl dF9pbml0X3Byb3BlcnRpZXMoc3RydWN0IGRybV9kZXZpY2UgKmRldikKK3N0YXRpYyBpbnQgb21h cF9tb2Rlc2V0X2luaXRfcHJvcGVydGllcyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1MzIgbnVt X3BsYW5lcykKIHsKIAlzdHJ1Y3Qgb21hcF9kcm1fcHJpdmF0ZSAqcHJpdiA9IGRldi0+ZGV2X3By aXZhdGU7Ci0JdW5zaWduZWQgaW50IG51bV9wbGFuZXMgPSBwcml2LT5kaXNwY19vcHMtPmdldF9u dW1fb3ZscygpOwogCiAJcHJpdi0+em9yZGVyX3Byb3AgPSBkcm1fcHJvcGVydHlfY3JlYXRlX3Jh bmdlKGRldiwgMCwgInpvcmRlciIsIDAsCiAJCQkJCQkgICAgICBudW1fcGxhbmVzIC0gMSk7CkBA IC0yMTAsMTAgKzMxNiwxOSBAQCBzdGF0aWMgaW50IG9tYXBfbW9kZXNldF9pbml0KHN0cnVjdCBk cm1fZGV2aWNlICpkZXYpCiAJaW50IG51bV9jcnRjcywgY3J0Y19pZHgsIHBsYW5lX2lkeDsKIAlp bnQgcmV0OwogCXUzMiBwbGFuZV9jcnRjX21hc2s7CisJc3RydWN0IGRpc3BjX3BsYW5lX21hcHBp bmdzIHBsYW5lX21hcHBpbmdzID0gezB9OwogCiAJZHJtX21vZGVfY29uZmlnX2luaXQoZGV2KTsK IAotCXJldCA9IG9tYXBfbW9kZXNldF9pbml0X3Byb3BlcnRpZXMoZGV2KTsKKwlyZXQgPSBwcml2 LT5kaXNwY19vcHMtPmdldF9wbGFuZV9tYXBwaW5nKCZwbGFuZV9tYXBwaW5ncyk7CisJaWYgKHJl dCA8IDApCisJCXJldHVybiByZXQ7CisKKwkvKiB1c2UgcGxhbmUgbWFwcGluZ3MgaW5mbyAqLwor CWlmIChwbGFuZV9tYXBwaW5ncy5udW1fcGxhbmVzKQorCQludW1fb3ZscyA9IHBsYW5lX21hcHBp bmdzLm51bV9wbGFuZXM7CisKKwlyZXQgPSBvbWFwX21vZGVzZXRfaW5pdF9wcm9wZXJ0aWVzKGRl diwgbnVtX292bHMpOwogCWlmIChyZXQgPCAwKQogCQlyZXR1cm4gcmV0OwogCkBAIC0yNjYsNyAr MzgxLDcgQEAgc3RhdGljIGludCBvbWFwX21vZGVzZXRfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2KQogCQkJcmV0dXJuIC1FTk9NRU07CiAKIAkJcGxhbmUgPSBvbWFwX3BsYW5lX2luaXQoZGV2 LCBwbGFuZV9pZHgsIERSTV9QTEFORV9UWVBFX1BSSU1BUlksCi0JCQkJCXBsYW5lX2NydGNfbWFz ayk7CisJCQkJCXBsYW5lX2NydGNfbWFzaywgJnBsYW5lX21hcHBpbmdzKTsKIAkJaWYgKElTX0VS UihwbGFuZSkpCiAJCQlyZXR1cm4gUFRSX0VSUihwbGFuZSk7CiAKQEAgLTI5Niw3ICs0MTEsNyBA QCBzdGF0aWMgaW50IG9tYXBfbW9kZXNldF9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiAJ CQlyZXR1cm4gLUVJTlZBTDsKIAogCQlwbGFuZSA9IG9tYXBfcGxhbmVfaW5pdChkZXYsIHBsYW5l X2lkeCwgRFJNX1BMQU5FX1RZUEVfT1ZFUkxBWSwKLQkJCXBsYW5lX2NydGNfbWFzayk7CisJCQkJ CXBsYW5lX2NydGNfbWFzaywgJnBsYW5lX21hcHBpbmdzKTsKIAkJaWYgKElTX0VSUihwbGFuZSkp CiAJCQlyZXR1cm4gUFRSX0VSUihwbGFuZSk7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9vbWFwZHJtL29tYXBfZmIuYyBiL2RyaXZlcnMvZ3B1L2RybS9vbWFwZHJtL29tYXBfZmIuYwpp bmRleCBiMjUzOWE5MGUxYTQuLjgwYjI5YjdmNTY5NiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUv ZHJtL29tYXBkcm0vb21hcF9mYi5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9vbWFwZHJtL29tYXBf ZmIuYwpAQCAtMTUzLDI1ICsxNTMsMjcgQEAgc3RhdGljIHVpbnQzMl90IGRybV9yb3RhdGlvbl90 b190aWxlcih1bnNpZ25lZCBpbnQgZHJtX3JvdCkKIC8qIHVwZGF0ZSBvdmwgaW5mbyBmb3Igc2Nh bm91dCwgaGFuZGxlcyBjYXNlcyBvZiBtdWx0aS1wbGFuYXIgZmIncywgZXRjLgogICovCiB2b2lk IG9tYXBfZnJhbWVidWZmZXJfdXBkYXRlX3NjYW5vdXQoc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAq ZmIsCi0JCXN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKnN0YXRlLCBzdHJ1Y3Qgb21hcF9vdmVybGF5 X2luZm8gKmluZm8pCisJCXN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKnN0YXRlLAorCQlzdHJ1Y3Qg b21hcF9vdmVybGF5X2luZm8gKm1haW5faW5mbywKKwkJc3RydWN0IG9tYXBfb3ZlcmxheV9pbmZv ICphdXhfaW5mbykKIHsKIAlzdHJ1Y3Qgb21hcF9mcmFtZWJ1ZmZlciAqb21hcF9mYiA9IHRvX29t YXBfZnJhbWVidWZmZXIoZmIpOwogCWNvbnN0IHN0cnVjdCBkcm1fZm9ybWF0X2luZm8gKmZvcm1h dCA9IG9tYXBfZmItPmZvcm1hdDsKIAlzdHJ1Y3QgcGxhbmUgKnBsYW5lID0gJm9tYXBfZmItPnBs YW5lc1swXTsKIAl1aW50MzJfdCB4LCB5LCBvcmllbnQgPSAwOwogCi0JaW5mby0+Zm91cmNjID0g ZmItPmZvcm1hdC0+Zm9ybWF0OworCW1haW5faW5mby0+Zm91cmNjID0gZmItPmZvcm1hdC0+Zm9y bWF0OwogCi0JaW5mby0+cG9zX3ggICAgICA9IHN0YXRlLT5jcnRjX3g7Ci0JaW5mby0+cG9zX3kg ICAgICA9IHN0YXRlLT5jcnRjX3k7Ci0JaW5mby0+b3V0X3dpZHRoICA9IHN0YXRlLT5jcnRjX3c7 Ci0JaW5mby0+b3V0X2hlaWdodCA9IHN0YXRlLT5jcnRjX2g7Ci0JaW5mby0+d2lkdGggICAgICA9 IHN0YXRlLT5zcmNfdyA+PiAxNjsKLQlpbmZvLT5oZWlnaHQgICAgID0gc3RhdGUtPnNyY19oID4+ IDE2OworCW1haW5faW5mby0+cG9zX3ggICAgICA9IHN0YXRlLT5jcnRjX3g7CisJbWFpbl9pbmZv LT5wb3NfeSAgICAgID0gc3RhdGUtPmNydGNfeTsKKwltYWluX2luZm8tPm91dF93aWR0aCAgPSBz dGF0ZS0+Y3J0Y193OworCW1haW5faW5mby0+b3V0X2hlaWdodCA9IHN0YXRlLT5jcnRjX2g7CisJ bWFpbl9pbmZvLT53aWR0aCAgICAgID0gc3RhdGUtPnNyY193ID4+IDE2OworCW1haW5faW5mby0+ aGVpZ2h0ICAgICA9IHN0YXRlLT5zcmNfaCA+PiAxNjsKIAogCS8qIERTUyBkcml2ZXIgd2FudHMg dGhlIHcgJiBoIGluIHJvdGF0ZWQgb3JpZW50YXRpb24gKi8KIAlpZiAoZHJtX3JvdGF0aW9uXzkw X29yXzI3MChzdGF0ZS0+cm90YXRpb24pKQotCQlzd2FwKGluZm8tPndpZHRoLCBpbmZvLT5oZWln aHQpOworCQlzd2FwKG1haW5faW5mby0+d2lkdGgsIG1haW5faW5mby0+aGVpZ2h0KTsKIAogCXgg PSBzdGF0ZS0+c3JjX3ggPj4gMTY7CiAJeSA9IHN0YXRlLT5zcmNfeSA+PiAxNjsKQEAgLTIwMiwx MSArMjA0LDEyIEBAIHZvaWQgb21hcF9mcmFtZWJ1ZmZlcl91cGRhdGVfc2Nhbm91dChzdHJ1Y3Qg ZHJtX2ZyYW1lYnVmZmVyICpmYiwKIAogCQkvKiBOb3RlOiB4IGFuZCB5IGFyZSBpbiBUSUxFUiB1 bml0cywgbm90IHBpeGVscyAqLwogCQlvbWFwX2dlbV9yb3RhdGVkX2RtYV9hZGRyKHBsYW5lLT5i bywgb3JpZW50LCB4LCB5LAotCQkJCQkgICZpbmZvLT5wYWRkcik7Ci0JCWluZm8tPnJvdGF0aW9u X3R5cGUgPSBPTUFQX0RTU19ST1RfVElMRVI7Ci0JCWluZm8tPnJvdGF0aW9uID0gc3RhdGUtPnJv dGF0aW9uID86IERSTV9NT0RFX1JPVEFURV8wOworCQkJCQkgICZtYWluX2luZm8tPnBhZGRyKTsK KwkJbWFpbl9pbmZvLT5yb3RhdGlvbl90eXBlID0gT01BUF9EU1NfUk9UX1RJTEVSOworCQltYWlu X2luZm8tPnJvdGF0aW9uID0gc3RhdGUtPnJvdGF0aW9uID86IERSTV9NT0RFX1JPVEFURV8wOwog CQkvKiBOb3RlOiBzdHJpZGUgaW4gVElMRVIgdW5pdHMsIG5vdCBwaXhlbHMgKi8KLQkJaW5mby0+ c2NyZWVuX3dpZHRoICA9IG9tYXBfZ2VtX3RpbGVkX3N0cmlkZShwbGFuZS0+Ym8sIG9yaWVudCk7 CisJCW1haW5faW5mby0+c2NyZWVuX3dpZHRoICA9CisJCQkJb21hcF9nZW1fdGlsZWRfc3RyaWRl KHBsYW5lLT5ibywgb3JpZW50KTsKIAl9IGVsc2UgewogCQlzd2l0Y2ggKHN0YXRlLT5yb3RhdGlv biAmIERSTV9NT0RFX1JPVEFURV9NQVNLKSB7CiAJCWNhc2UgMDoKQEAgLTIyMSwyNyArMjI0LDQ2 IEBAIHZvaWQgb21hcF9mcmFtZWJ1ZmZlcl91cGRhdGVfc2Nhbm91dChzdHJ1Y3QgZHJtX2ZyYW1l YnVmZmVyICpmYiwKIAkJCWJyZWFrOwogCQl9CiAKLQkJaW5mby0+cGFkZHIgICAgICAgICA9IGdl dF9saW5lYXJfYWRkcihwbGFuZSwgZm9ybWF0LCAwLCB4LCB5KTsKLQkJaW5mby0+cm90YXRpb25f dHlwZSA9IE9NQVBfRFNTX1JPVF9OT05FOwotCQlpbmZvLT5yb3RhdGlvbiAgICAgID0gRFJNX01P REVfUk9UQVRFXzA7Ci0JCWluZm8tPnNjcmVlbl93aWR0aCAgPSBwbGFuZS0+cGl0Y2g7CisJCW1h aW5faW5mby0+cGFkZHIgPSBnZXRfbGluZWFyX2FkZHIocGxhbmUsIGZvcm1hdCwgMCwgeCwgeSk7 CisJCW1haW5faW5mby0+cm90YXRpb25fdHlwZSA9IE9NQVBfRFNTX1JPVF9OT05FOworCQltYWlu X2luZm8tPnJvdGF0aW9uID0gRFJNX01PREVfUk9UQVRFXzA7CisJCW1haW5faW5mby0+c2NyZWVu X3dpZHRoID0gcGxhbmUtPnBpdGNoOwogCX0KIAogCS8qIGNvbnZlcnQgdG8gcGl4ZWxzOiAqLwot CWluZm8tPnNjcmVlbl93aWR0aCAvPSBmb3JtYXQtPmNwcFswXTsKKwltYWluX2luZm8tPnNjcmVl bl93aWR0aCAvPSBmb3JtYXQtPmNwcFswXTsKIAogCWlmIChmYi0+Zm9ybWF0LT5mb3JtYXQgPT0g RFJNX0ZPUk1BVF9OVjEyKSB7CiAJCXBsYW5lID0gJm9tYXBfZmItPnBsYW5lc1sxXTsKIAotCQlp ZiAoaW5mby0+cm90YXRpb25fdHlwZSA9PSBPTUFQX0RTU19ST1RfVElMRVIpIHsKKwkJaWYgKG1h aW5faW5mby0+cm90YXRpb25fdHlwZSA9PSBPTUFQX0RTU19ST1RfVElMRVIpIHsKIAkJCVdBUk5f T04oIShvbWFwX2dlbV9mbGFncyhwbGFuZS0+Ym8pICYgT01BUF9CT19USUxFRCkpOwogCQkJb21h cF9nZW1fcm90YXRlZF9kbWFfYWRkcihwbGFuZS0+Ym8sIG9yaWVudCwgeC8yLCB5LzIsCi0JCQkJ CQkgICZpbmZvLT5wX3V2X2FkZHIpOworCQkJCQkJICAmbWFpbl9pbmZvLT5wX3V2X2FkZHIpOwog CQl9IGVsc2UgewotCQkJaW5mby0+cF91dl9hZGRyID0gZ2V0X2xpbmVhcl9hZGRyKHBsYW5lLCBm b3JtYXQsIDEsIHgsIHkpOworCQkJbWFpbl9pbmZvLT5wX3V2X2FkZHIgPQorCQkJCWdldF9saW5l YXJfYWRkcihwbGFuZSwgZm9ybWF0LCAxLCB4LCB5KTsKIAkJfQogCX0gZWxzZSB7Ci0JCWluZm8t PnBfdXZfYWRkciA9IDA7CisJCW1haW5faW5mby0+cF91dl9hZGRyID0gMDsKKwl9CisKKwlpZiAo YXV4X2luZm8pIHsKKwkJbWFpbl9pbmZvLT53aWR0aCAvPSAyOworCQltYWluX2luZm8tPm91dF93 aWR0aCAvPSAyOworCisJCSphdXhfaW5mbyA9ICptYWluX2luZm87CisKKwkJYXV4X2luZm8tPnBv c194ID0gbWFpbl9pbmZvLT5wb3NfeCArIG1haW5faW5mby0+b3V0X3dpZHRoOworCisJCWF1eF9p bmZvLT5wYWRkciA9CisJCQkJZ2V0X2xpbmVhcl9hZGRyKCZvbWFwX2ZiLT5wbGFuZXNbMF0sIGZv cm1hdCwgMCwKKwkJCQkJCXggKyBtYWluX2luZm8tPndpZHRoLCB5KTsKKwkJaWYgKGZiLT5mb3Jt YXQtPmZvcm1hdCA9PSBEUk1fRk9STUFUX05WMTIpIHsKKwkJCWF1eF9pbmZvLT5wX3V2X2FkZHIg PQorCQkJCWdldF9saW5lYXJfYWRkcigmb21hcF9mYi0+cGxhbmVzWzFdLCBmb3JtYXQsIDEsCisJ CQkJCQl4ICsgbWFpbl9pbmZvLT53aWR0aCwgeSk7CisJCX0KIAl9CiB9CiAKZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9vbWFwZHJtL29tYXBfZmIuaCBiL2RyaXZlcnMvZ3B1L2RybS9vbWFw ZHJtL29tYXBfZmIuaAppbmRleCA5NGFkNWY5ZTQ0MDQuLmY2OGU4MTM1MzI4OCAxMDA2NDQKLS0t IGEvZHJpdmVycy9ncHUvZHJtL29tYXBkcm0vb21hcF9mYi5oCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9vbWFwZHJtL29tYXBfZmIuaApAQCAtMzcsNyArMzcsOSBAQCBzdHJ1Y3QgZHJtX2ZyYW1lYnVm ZmVyICpvbWFwX2ZyYW1lYnVmZmVyX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIGludCBv bWFwX2ZyYW1lYnVmZmVyX3BpbihzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYik7CiB2b2lkIG9t YXBfZnJhbWVidWZmZXJfdW5waW4oc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIpOwogdm9pZCBv bWFwX2ZyYW1lYnVmZmVyX3VwZGF0ZV9zY2Fub3V0KHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZi LAotCQlzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpzdGF0ZSwgc3RydWN0IG9tYXBfb3ZlcmxheV9p bmZvICppbmZvKTsKKwkJc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqc3RhdGUsCisJCXN0cnVjdCBv bWFwX292ZXJsYXlfaW5mbyAqbWFpbl9pbmZvLAorCQlzdHJ1Y3Qgb21hcF9vdmVybGF5X2luZm8g KmF1eF9pbmZvKTsKIHN0cnVjdCBkcm1fY29ubmVjdG9yICpvbWFwX2ZyYW1lYnVmZmVyX2dldF9u ZXh0X2Nvbm5lY3RvcigKIAkJc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIsIHN0cnVjdCBkcm1f Y29ubmVjdG9yICpmcm9tKTsKIGJvb2wgb21hcF9mcmFtZWJ1ZmZlcl9zdXBwb3J0c19yb3RhdGlv bihzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vb21hcGRybS9vbWFwX3BsYW5lLmMgYi9kcml2ZXJzL2dwdS9kcm0vb21hcGRybS9vbWFwX3Bs YW5lLmMKaW5kZXggMmMxOWQyMjM5YmM1Li4yMWM5MjdiYmY1YTcgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvZ3B1L2RybS9vbWFwZHJtL29tYXBfcGxhbmUuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vb21h cGRybS9vbWFwX3BsYW5lLmMKQEAgLTMwLDEwICszMCwxNCBAQAogCiBzdHJ1Y3Qgb21hcF9wbGFu ZSB7CiAJc3RydWN0IGRybV9wbGFuZSBiYXNlOwotCWVudW0gb21hcF9wbGFuZV9pZCBpZDsKKwll bnVtIG9tYXBfcGxhbmVfaWQgbWFpbl9pZDsKKwllbnVtIG9tYXBfcGxhbmVfaWQgYXV4X2lkOwog CWNvbnN0IGNoYXIgKm5hbWU7CisJYm9vbCB2aXJ0dWFsX3BsYW5lOwogfTsKIAorc3RhdGljIGNv bnN0IGNoYXIgKnBsYW5lX2lkX3RvX25hbWVbXTsKKwogc3RhdGljIGludCBvbWFwX3BsYW5lX3By ZXBhcmVfZmIoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCiAJCQkJIHN0cnVjdCBkcm1fcGxhbmVf c3RhdGUgKm5ld19zdGF0ZSkKIHsKQEAgLTU2LDM4ICs2MCw3NSBAQCBzdGF0aWMgdm9pZCBvbWFw X3BsYW5lX2F0b21pY191cGRhdGUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCiAJc3RydWN0IG9t YXBfZHJtX3ByaXZhdGUgKnByaXYgPSBwbGFuZS0+ZGV2LT5kZXZfcHJpdmF0ZTsKIAlzdHJ1Y3Qg b21hcF9wbGFuZSAqb21hcF9wbGFuZSA9IHRvX29tYXBfcGxhbmUocGxhbmUpOwogCXN0cnVjdCBk cm1fcGxhbmVfc3RhdGUgKnN0YXRlID0gcGxhbmUtPnN0YXRlOwotCXN0cnVjdCBvbWFwX292ZXJs YXlfaW5mbyBpbmZvOworCXN0cnVjdCBvbWFwX292ZXJsYXlfaW5mbyBtYWluX2luZm8sIGF1eF9p bmZvOwogCWludCByZXQ7CisJYm9vbCBkdWFsX3BsYW5lID0gb21hcF9wbGFuZS0+dmlydHVhbF9w bGFuZTsKIAogCURCRygiJXMsIGNydGM9JXAgZmI9JXAiLCBvbWFwX3BsYW5lLT5uYW1lLCBzdGF0 ZS0+Y3J0Yywgc3RhdGUtPmZiKTsKIAotCW1lbXNldCgmaW5mbywgMCwgc2l6ZW9mKGluZm8pKTsK LQlpbmZvLnJvdGF0aW9uX3R5cGUgPSBPTUFQX0RTU19ST1RfTk9ORTsKLQlpbmZvLnJvdGF0aW9u ID0gRFJNX01PREVfUk9UQVRFXzA7Ci0JaW5mby5nbG9iYWxfYWxwaGEgPSAweGZmOwotCWluZm8u em9yZGVyID0gc3RhdGUtPm5vcm1hbGl6ZWRfenBvczsKKwltZW1zZXQoJm1haW5faW5mbywgMCwg c2l6ZW9mKG1haW5faW5mbykpOworCW1haW5faW5mby5yb3RhdGlvbl90eXBlID0gT01BUF9EU1Nf Uk9UX05PTkU7CisJbWFpbl9pbmZvLnJvdGF0aW9uID0gRFJNX01PREVfUk9UQVRFXzA7CisJbWFp bl9pbmZvLmdsb2JhbF9hbHBoYSA9IDB4ZmY7CisJbWFpbl9pbmZvLnpvcmRlciA9IHN0YXRlLT5u b3JtYWxpemVkX3pwb3M7CiAKLQkvKiB1cGRhdGUgc2Nhbm91dDogKi8KLQlvbWFwX2ZyYW1lYnVm ZmVyX3VwZGF0ZV9zY2Fub3V0KHN0YXRlLT5mYiwgc3RhdGUsICZpbmZvKTsKKwlhdXhfaW5mbyA9 IG1haW5faW5mbzsKIAotCURCRygiJWR4JWQgLT4gJWR4JWQgKCVkKSIsIGluZm8ud2lkdGgsIGlu Zm8uaGVpZ2h0LAotCQkJaW5mby5vdXRfd2lkdGgsIGluZm8ub3V0X2hlaWdodCwKLQkJCWluZm8u c2NyZWVuX3dpZHRoKTsKLQlEQkcoIiVkLCVkICVwYWQgJXBhZCIsIGluZm8ucG9zX3gsIGluZm8u cG9zX3ksCi0JCQkmaW5mby5wYWRkciwgJmluZm8ucF91dl9hZGRyKTsKKwkvKiB1cGRhdGUgc2Nh bm91dDogKi8KKwlvbWFwX2ZyYW1lYnVmZmVyX3VwZGF0ZV9zY2Fub3V0KHN0YXRlLT5mYiwgc3Rh dGUsICZtYWluX2luZm8sCisJCQkJCWR1YWxfcGxhbmUgPyAmYXV4X2luZm8gOiBOVUxMKTsKKwor CURCRygiJXM6ICVkeCVkIC0+ICVkeCVkICglZCkiLAorCSAgICBwbGFuZV9pZF90b19uYW1lW29t YXBfcGxhbmUtPm1haW5faWRdLAorCSAgICBtYWluX2luZm8ud2lkdGgsIG1haW5faW5mby5oZWln aHQsCisJICAgIG1haW5faW5mby5vdXRfd2lkdGgsIG1haW5faW5mby5vdXRfaGVpZ2h0LAorCSAg ICBtYWluX2luZm8uc2NyZWVuX3dpZHRoKTsKKwlEQkcoIiVkLCVkICVwYWQgJXBhZCIsIG1haW5f aW5mby5wb3NfeCwgbWFpbl9pbmZvLnBvc195LAorCSAgICAmbWFpbl9pbmZvLnBhZGRyLCAmbWFp bl9pbmZvLnBfdXZfYWRkcik7CisKKwlpZiAoZHVhbF9wbGFuZSkgeworCQkvKgorCQkgKiBJZiB0 aGUgY3VycmVudCBwbGFuZSBpcyB2aXJ0dWFsIGl0IHVzZXMgMiBodyBwbGFuZXMKKwkJICogdGhl cmVmb3JlIHRoZSB2ZXJ5IG5leHQgem9yZGVyIGlzIHVzZWQgYnkgdGhlIGF1eF9pZAorCQkgKiBw bGFuZSBzbyB3ZSBqdXN0IHVzZSB0aGUgbWFpbl9pZCB6b3JkZXIgKyAxCisJCSAqLworCQlhdXhf aW5mby56b3JkZXIgPSBtYWluX2luZm8uem9yZGVyICsgMTsKKworCQlEQkcoIiVzOiAlZHglZCAt PiAlZHglZCAoJWQpIiwKKwkJICAgIHBsYW5lX2lkX3RvX25hbWVbb21hcF9wbGFuZS0+YXV4X2lk XSwKKwkJICAgIGF1eF9pbmZvLndpZHRoLCBhdXhfaW5mby5oZWlnaHQsCisJCSAgICBhdXhfaW5m by5vdXRfd2lkdGgsIGF1eF9pbmZvLm91dF9oZWlnaHQsCisJCSAgICBhdXhfaW5mby5zY3JlZW5f d2lkdGgpOworCQlEQkcoIiVkLCVkICVwYWQgJXBhZCIsIGF1eF9pbmZvLnBvc194LCBhdXhfaW5m by5wb3NfeSwKKwkJICAgICZhdXhfaW5mby5wYWRkciwgJmF1eF9pbmZvLnBfdXZfYWRkcik7CisJ fQogCi0JLyogYW5kIGZpbmFsbHksIHVwZGF0ZSBvbWFwZHNzOiAqLwotCXJldCA9IHByaXYtPmRp c3BjX29wcy0+b3ZsX3NldHVwKG9tYXBfcGxhbmUtPmlkLCAmaW5mbywKKwlyZXQgPSBwcml2LT5k aXNwY19vcHMtPm92bF9zZXR1cChvbWFwX3BsYW5lLT5tYWluX2lkLCAmbWFpbl9pbmZvLAogCQkJ ICAgICAgb21hcF9jcnRjX3RpbWluZ3Moc3RhdGUtPmNydGMpLCBmYWxzZSwKIAkJCSAgICAgIG9t YXBfY3J0Y19jaGFubmVsKHN0YXRlLT5jcnRjKSk7CiAJaWYgKHJldCkgewotCQlkZXZfZXJyKHBs YW5lLT5kZXYtPmRldiwgIkZhaWxlZCB0byBzZXR1cCBwbGFuZSAlc1xuIiwKKwkJZGV2X2Vycihw bGFuZS0+ZGV2LT5kZXYsICJGYWlsZWQgdG8gc2V0dXAgcGxhbmUxICVzXG4iLAogCQkJb21hcF9w bGFuZS0+bmFtZSk7Ci0JCXByaXYtPmRpc3BjX29wcy0+b3ZsX2VuYWJsZShvbWFwX3BsYW5lLT5p ZCwgZmFsc2UpOworCQlwcml2LT5kaXNwY19vcHMtPm92bF9lbmFibGUob21hcF9wbGFuZS0+bWFp bl9pZCwgZmFsc2UpOwogCQlyZXR1cm47CiAJfQogCi0JcHJpdi0+ZGlzcGNfb3BzLT5vdmxfZW5h YmxlKG9tYXBfcGxhbmUtPmlkLCB0cnVlKTsKKwlwcml2LT5kaXNwY19vcHMtPm92bF9lbmFibGUo b21hcF9wbGFuZS0+bWFpbl9pZCwgdHJ1ZSk7CisKKwlpZiAoZHVhbF9wbGFuZSkgeworCQlyZXQg PSBwcml2LT5kaXNwY19vcHMtPm92bF9zZXR1cChvbWFwX3BsYW5lLT5hdXhfaWQsICZhdXhfaW5m bywKKwkJCQkgICAgICBvbWFwX2NydGNfdGltaW5ncyhzdGF0ZS0+Y3J0YyksIGZhbHNlLAorCQkJ CSAgICAgIG9tYXBfY3J0Y19jaGFubmVsKHN0YXRlLT5jcnRjKSk7CisJCWlmIChyZXQpIHsKKwkJ CWRldl9lcnIocGxhbmUtPmRldi0+ZGV2LCAiRmFpbGVkIHRvIHNldHVwIHBsYW5lMiAlc1xuIiwK KwkJCQlvbWFwX3BsYW5lLT5uYW1lKTsKKwkJCXByaXYtPmRpc3BjX29wcy0+b3ZsX2VuYWJsZShv bWFwX3BsYW5lLT5hdXhfaWQsIGZhbHNlKTsKKwkJCXByaXYtPmRpc3BjX29wcy0+b3ZsX2VuYWJs ZShvbWFwX3BsYW5lLT5tYWluX2lkLCBmYWxzZSk7CisJCQlyZXR1cm47CisJCX0KKworCQlwcml2 LT5kaXNwY19vcHMtPm92bF9lbmFibGUob21hcF9wbGFuZS0+YXV4X2lkLCB0cnVlKTsKKwl9CiB9 CiAKIHN0YXRpYyB2b2lkIG9tYXBfcGxhbmVfYXRvbWljX2Rpc2FibGUoc3RydWN0IGRybV9wbGFu ZSAqcGxhbmUsCkBAIC05NSwxMiArMTM2LDE1IEBAIHN0YXRpYyB2b2lkIG9tYXBfcGxhbmVfYXRv bWljX2Rpc2FibGUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCiB7CiAJc3RydWN0IG9tYXBfZHJt X3ByaXZhdGUgKnByaXYgPSBwbGFuZS0+ZGV2LT5kZXZfcHJpdmF0ZTsKIAlzdHJ1Y3Qgb21hcF9w bGFuZSAqb21hcF9wbGFuZSA9IHRvX29tYXBfcGxhbmUocGxhbmUpOworCWJvb2wgZHVhbF9wbGFu ZSA9IG9tYXBfcGxhbmUtPnZpcnR1YWxfcGxhbmU7CiAKIAlwbGFuZS0+c3RhdGUtPnJvdGF0aW9u ID0gRFJNX01PREVfUk9UQVRFXzA7CiAJcGxhbmUtPnN0YXRlLT56cG9zID0gcGxhbmUtPnR5cGUg PT0gRFJNX1BMQU5FX1RZUEVfUFJJTUFSWQotCQkJICAgPyAwIDogb21hcF9wbGFuZS0+aWQ7CisJ CQkgICA/IDAgOiBvbWFwX3BsYW5lLT5tYWluX2lkOwogCi0JcHJpdi0+ZGlzcGNfb3BzLT5vdmxf ZW5hYmxlKG9tYXBfcGxhbmUtPmlkLCBmYWxzZSk7CisJcHJpdi0+ZGlzcGNfb3BzLT5vdmxfZW5h YmxlKG9tYXBfcGxhbmUtPm1haW5faWQsIGZhbHNlKTsKKwlpZiAoZHVhbF9wbGFuZSkKKwkJcHJp di0+ZGlzcGNfb3BzLT5vdmxfZW5hYmxlKG9tYXBfcGxhbmUtPmF1eF9pZCwgZmFsc2UpOwogfQog CiBzdGF0aWMgaW50IG9tYXBfcGxhbmVfYXRvbWljX2NoZWNrKHN0cnVjdCBkcm1fcGxhbmUgKnBs YW5lLApAQCAtMTU4LDYgKzIwMiwxMyBAQCBzdGF0aWMgdm9pZCBvbWFwX3BsYW5lX2Rlc3Ryb3ko c3RydWN0IGRybV9wbGFuZSAqcGxhbmUpCiAJa2ZyZWUob21hcF9wbGFuZSk7CiB9CiAKK2Jvb2wg aXNfb21hcF9wbGFuZV92aXJ0dWFsKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lKQoreworCXN0cnVj dCBvbWFwX3BsYW5lICpvbWFwX3BsYW5lID0gdG9fb21hcF9wbGFuZShwbGFuZSk7CisKKwlyZXR1 cm4gb21hcF9wbGFuZS0+dmlydHVhbF9wbGFuZTsKK30KKwogLyogaGVscGVyIHRvIGluc3RhbGwg cHJvcGVydGllcyB3aGljaCBhcmUgY29tbW9uIHRvIHBsYW5lcyBhbmQgY3J0Y3MgKi8KIHZvaWQg b21hcF9wbGFuZV9pbnN0YWxsX3Byb3BlcnRpZXMoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCiAJ CXN0cnVjdCBkcm1fbW9kZV9vYmplY3QgKm9iaikKQEAgLTE5NSw3ICsyNDYsNyBAQCBzdGF0aWMg dm9pZCBvbWFwX3BsYW5lX3Jlc2V0KHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lKQogCSAqIHBsYW5l LgogCSAqLwogCXBsYW5lLT5zdGF0ZS0+enBvcyA9IHBsYW5lLT50eXBlID09IERSTV9QTEFORV9U WVBFX1BSSU1BUlkKLQkJCSAgID8gMCA6IG9tYXBfcGxhbmUtPmlkOworCQkJICAgPyAwIDogb21h cF9wbGFuZS0+bWFpbl9pZDsKIH0KIAogc3RhdGljIGludCBvbWFwX3BsYW5lX2F0b21pY19zZXRf cHJvcGVydHkoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCkBAIC0yNDYsNDMgKzI5Nyw2NSBAQCBz dGF0aWMgY29uc3QgY2hhciAqcGxhbmVfaWRfdG9fbmFtZVtdID0gewogCVtPTUFQX0RTU19WSURF TzNdID0gInZpZDMiLAogfTsKIAotc3RhdGljIGNvbnN0IGVudW0gb21hcF9wbGFuZV9pZCBwbGFu ZV9pZHhfdG9faWRbXSA9IHsKLQlPTUFQX0RTU19HRlgsCi0JT01BUF9EU1NfVklERU8xLAotCU9N QVBfRFNTX1ZJREVPMiwKLQlPTUFQX0RTU19WSURFTzMsCitzdGF0aWMgY29uc3QgY2hhciAqIGNv bnN0IHZpcnR1YWxfcGxhbmVfaWRfdG9fbmFtZVtdID0geworCVtPTUFQX0RTU19HRlhdID0gInZp cnQtZ2Z4IiwKKwlbT01BUF9EU1NfVklERU8xXSA9ICJ2aXJ0LXZpZDEiLAorCVtPTUFQX0RTU19W SURFTzJdID0gInZpcnQtdmlkMiIsCisJW09NQVBfRFNTX1ZJREVPM10gPSAidmlydC12aWQzIiwK IH07CiAKLS8qIGluaXRpYWxpemUgcGxhbmUgKi8KIHN0cnVjdCBkcm1fcGxhbmUgKm9tYXBfcGxh bmVfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCQlpbnQgaWR4LCBlbnVtIGRybV9wbGFu ZV90eXBlIHR5cGUsCi0JCXUzMiBwb3NzaWJsZV9jcnRjcykKKwkJdTMyIHBvc3NpYmxlX2NydGNz LAorCQlzdHJ1Y3QgZGlzcGNfcGxhbmVfbWFwcGluZ3MgKnBsYW5lX21hcHBpbmdzKQogewogCXN0 cnVjdCBvbWFwX2RybV9wcml2YXRlICpwcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKIAl1bnNpZ25l ZCBpbnQgbnVtX3BsYW5lcyA9IHByaXYtPmRpc3BjX29wcy0+Z2V0X251bV9vdmxzKCk7CiAJc3Ry dWN0IGRybV9wbGFuZSAqcGxhbmU7CiAJc3RydWN0IG9tYXBfcGxhbmUgKm9tYXBfcGxhbmU7Ci0J ZW51bSBvbWFwX3BsYW5lX2lkIGlkOwogCWludCByZXQ7CiAJdTMyIG5mb3JtYXRzOwogCWNvbnN0 IHUzMiAqZm9ybWF0czsKIAotCWlmIChXQVJOX09OKGlkeCA+PSBBUlJBWV9TSVpFKHBsYW5lX2lk eF90b19pZCkpKQotCQlyZXR1cm4gRVJSX1BUUigtRUlOVkFMKTsKLQotCWlkID0gcGxhbmVfaWR4 X3RvX2lkW2lkeF07CisJaWYgKHBsYW5lX21hcHBpbmdzLT5udW1fcGxhbmVzKQorCQludW1fcGxh bmVzID0gcGxhbmVfbWFwcGluZ3MtPm51bV9wbGFuZXM7CiAKLQlEQkcoIiVzOiB0eXBlPSVkIiwg cGxhbmVfaWRfdG9fbmFtZVtpZF0sIHR5cGUpOworCWlmIChXQVJOX09OKGlkeCA+PSBudW1fcGxh bmVzKSkKKwkJcmV0dXJuIEVSUl9QVFIoLUVJTlZBTCk7CiAKIAlvbWFwX3BsYW5lID0ga3phbGxv YyhzaXplb2YoKm9tYXBfcGxhbmUpLCBHRlBfS0VSTkVMKTsKIAlpZiAoIW9tYXBfcGxhbmUpCiAJ CXJldHVybiBFUlJfUFRSKC1FTk9NRU0pOwogCi0JZm9ybWF0cyA9IHByaXYtPmRpc3BjX29wcy0+ b3ZsX2dldF9jb2xvcl9tb2RlcyhpZCk7CisJaWYgKHBsYW5lX21hcHBpbmdzLT5udW1fcGxhbmVz KSB7CisJCS8qIFVzZSBwbGFuZSBkYXRhIGZyb20gRFQgKi8KKwkJb21hcF9wbGFuZS0+bWFpbl9p ZCA9IHBsYW5lX21hcHBpbmdzLT5wbGFuZVtpZHhdLm1haW5faWQ7CisJCWlmIChwbGFuZV9tYXBw aW5ncy0+cGxhbmVbaWR4XS5pc192aXJ0dWFsKSB7CisJCQlvbWFwX3BsYW5lLT5uYW1lID0KKwkJ CQl2aXJ0dWFsX3BsYW5lX2lkX3RvX25hbWVbb21hcF9wbGFuZS0+bWFpbl9pZF07CisJCQlvbWFw X3BsYW5lLT5hdXhfaWQgPSBwbGFuZV9tYXBwaW5ncy0+cGxhbmVbaWR4XS5hdXhfaWQ7CisJCQlv bWFwX3BsYW5lLT52aXJ0dWFsX3BsYW5lID0gdHJ1ZTsKKwkJfSBlbHNlIHsKKwkJCW9tYXBfcGxh bmUtPm5hbWUgPQorCQkJCXBsYW5lX2lkX3RvX25hbWVbb21hcF9wbGFuZS0+bWFpbl9pZF07CisJ CX0KKwkJaWYgKHBsYW5lX21hcHBpbmdzLT5wbGFuZVtpZHhdLmNydGNfbWFzaykKKwkJCXBvc3Np YmxlX2NydGNzID0gcGxhbmVfbWFwcGluZ3MtPnBsYW5lW2lkeF0uY3J0Y19tYXNrOworCX0gZWxz ZSB7CisJCS8qIFVzZSBsZWdhY3kgcGxhbmUgYWxsb2NhdGlvbiAqLworCQlvbWFwX3BsYW5lLT5t YWluX2lkID0gaWR4OworCQlvbWFwX3BsYW5lLT5uYW1lID0gcGxhbmVfaWRfdG9fbmFtZVtpZHhd OworCX0KKworCURCRygiJXM6IHR5cGU9JWQiLCBvbWFwX3BsYW5lLT5uYW1lLCB0eXBlKTsKKwlE QkcoIglvbWFwX3BsYW5lLT5tYWluX2lkOiAlZCIsIG9tYXBfcGxhbmUtPm1haW5faWQpOworCWlm IChvbWFwX3BsYW5lLT52aXJ0dWFsX3BsYW5lKQorCQlEQkcoIglvbWFwX3BsYW5lLT5hdXhfaWQ6 ICVkIiwgb21hcF9wbGFuZS0+YXV4X2lkKTsKKwlEQkcoIgljcnRjX21hc2s6IDB4JTA0eCIsIHBv c3NpYmxlX2NydGNzKTsKKworCWZvcm1hdHMgPSBwcml2LT5kaXNwY19vcHMtPm92bF9nZXRfY29s b3JfbW9kZXMob21hcF9wbGFuZS0+bWFpbl9pZCk7CiAJZm9yIChuZm9ybWF0cyA9IDA7IGZvcm1h dHNbbmZvcm1hdHNdOyArK25mb3JtYXRzKQogCQk7Ci0Jb21hcF9wbGFuZS0+aWQgPSBpZDsKLQlv bWFwX3BsYW5lLT5uYW1lID0gcGxhbmVfaWRfdG9fbmFtZVtpZF07CiAKIAlwbGFuZSA9ICZvbWFw X3BsYW5lLT5iYXNlOwogCkBAIC0zMDEsNyArMzc0LDcgQEAgc3RydWN0IGRybV9wbGFuZSAqb21h cF9wbGFuZV9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAKIGVycm9yOgogCWRldl9lcnIo ZGV2LT5kZXYsICIlcygpOiBjb3VsZCBub3QgY3JlYXRlIHBsYW5lOiAlc1xuIiwKLQkJX19mdW5j X18sIHBsYW5lX2lkX3RvX25hbWVbaWRdKTsKKwkJX19mdW5jX18sIG9tYXBfcGxhbmUtPm5hbWUp OwogCiAJa2ZyZWUob21hcF9wbGFuZSk7CiAJcmV0dXJuIE5VTEw7CmRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vb21hcGRybS9vbWFwX3BsYW5lLmggYi9kcml2ZXJzL2dwdS9kcm0vb21hcGRy bS9vbWFwX3BsYW5lLmgKaW5kZXggZGM1ZTgyYWQwNjFkLi40ODgxNWEwNWY0ZmUgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvZ3B1L2RybS9vbWFwZHJtL29tYXBfcGxhbmUuaAorKysgYi9kcml2ZXJzL2dw dS9kcm0vb21hcGRybS9vbWFwX3BsYW5lLmgKQEAgLTMwLDggKzMwLDEwIEBAIHN0cnVjdCBkcm1f cGxhbmU7CiAKIHN0cnVjdCBkcm1fcGxhbmUgKm9tYXBfcGxhbmVfaW5pdChzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2LAogCQlpbnQgaWR4LCBlbnVtIGRybV9wbGFuZV90eXBlIHR5cGUsCi0JCXUzMiBw b3NzaWJsZV9jcnRjcyk7CisJCXUzMiBwb3NzaWJsZV9jcnRjcywKKwkJc3RydWN0IGRpc3BjX3Bs YW5lX21hcHBpbmdzICpwbGFuZV9tYXBwaW5ncyk7CiB2b2lkIG9tYXBfcGxhbmVfaW5zdGFsbF9w cm9wZXJ0aWVzKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAogCQlzdHJ1Y3QgZHJtX21vZGVfb2Jq ZWN0ICpvYmopOworYm9vbCBpc19vbWFwX3BsYW5lX3ZpcnR1YWwoc3RydWN0IGRybV9wbGFuZSAq cGxhbmUpOwogCiAjZW5kaWYgLyogX19PTUFQRFJNX1BMQU5FX0hfXyAqLwotLSAKMi45LjAKCl9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBt YWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3Rz LmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=