From mboxrd@z Thu Jan 1 00:00:00 1970 From: Benoit Parrot Subject: [Patch v4 6/8] drm/omap: dynamically assign hw overlays to planes Date: Fri, 12 Oct 2018 15:17:01 -0500 Message-ID: <20181012201703.29065-7-bparrot@ti.com> References: <20181012201703.29065-1-bparrot@ti.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from lelv0142.ext.ti.com (lelv0142.ext.ti.com [198.47.23.249]) by gabe.freedesktop.org (Postfix) with ESMTPS id 960806E4B3 for ; Fri, 12 Oct 2018 20:17:20 +0000 (UTC) In-Reply-To: <20181012201703.29065-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, linux-kernel@vger.kernel.org, Laurent Pinchart , Daniel Vetter Cc: Peter Ujfalusi , Tomi Valkeinen , Jyri Sarha List-Id: dri-devel@lists.freedesktop.org KHJlKWFzc2lnbiB0aGUgaHcgb3ZlcmxheXMgdG8gcGxhbmVzIGJhc2VkIG9uIHJlcXVpcmVkIGNh cHMsIGFuZCB0bwpoYW5kbGUgc2l0dWF0aW9ucyB3aGVyZSB3ZSBjb3VsZCBub3QgbW9kaWZ5IGFu IGluLXVzZSBwbGFuZS4KClRoaXMgbWVhbnMgYWxsIHBsYW5lcyBhZHZlcnRpc2UgdGhlIHN1cGVy c2V0IG9mIGZvcm1hdHMgYW5kIHByb3BlcnRpZXMuClVzZXJzcGFjZSBtdXN0IChhcyBhbHdheXMp IHVzZSBhdG9taWMgVEVTVF9PTkxZIHN0ZXAgZm9yIGF0b21pYyB1cGRhdGVzLAphcyBub3QgYWxs IHBsYW5lcyBtYXkgYmUgYXZhaWxhYmxlIGZvciB1c2Ugb24gZXZlcnkgZnJhbWUuCgpUaGUgbWFw cGluZyBvZiBod292ZXJsYXlzIHRvIHBsYW5lIGlzIHN0b3JlZCBpbiBvbWFwX2dsb2JhbF9zdGF0 ZSwgc28KdGhhdCBzdGF0ZSB1cGRhdGVzIGFyZSBhdG9taWNhbGx5IGNvbW1pdHRlZCBpbiB0aGUg c2FtZSB3YXkgdGhhdApwbGFuZS9ldGMgc3RhdGUgdXBkYXRlcyBhcmUgbWFuYWdlZC4gIFRoaXMg aXMgbmVlZGVkIGJlY2F1c2UgdGhlCm9tYXBfcGxhbmVfc3RhdGUga2VlcHMgYSBwb2ludGVyIHRv IHRoZSBod292ZXJsYXksIGFuZCB3ZSBkb24ndCB3YW50Cmdsb2JhbCBzdGF0ZSB0byBiZWNvbWUg b3V0IG9mIHN5bmMgd2l0aCB0aGUgcGxhbmUgc3RhdGUgaWYgYW4gYXRvbWljCnVwZGF0ZSBmYWls cywgd2UgaGl0IGRlYWRsb2NrLyBiYWNrb2ZmIHNjZW5hcmlvLCBldGMuICBUaGUgdXNlIG9mCmds b2JhbF9zdGF0ZV9sb2NrIGtlZXBzIG11bHRpcGxlIHBhcmFsbGVsIHVwZGF0ZXMgd2hpY2ggYm90 aCByZS1hc3NpZ24KaHdvdmVybGF5cyBwcm9wZXJseSBzZXJpYWxpemVkLgoKU2lnbmVkLW9mZi1i eTogQmVub2l0IFBhcnJvdCA8YnBhcnJvdEB0aS5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL29t YXBkcm0vb21hcF9kcnYuaCAgICAgfCAgIDMgKwogZHJpdmVycy9ncHUvZHJtL29tYXBkcm0vb21h cF9vdmVybGF5LmMgfCAxNDMgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBkcml2ZXJz L2dwdS9kcm0vb21hcGRybS9vbWFwX292ZXJsYXkuaCB8ICAgOSArKwogZHJpdmVycy9ncHUvZHJt L29tYXBkcm0vb21hcF9wbGFuZS5jICAgfCAxNTMgKysrKysrKysrKysrKysrKysrKysrKysrKyst LS0tLS0tCiA0IGZpbGVzIGNoYW5nZWQsIDI3NiBpbnNlcnRpb25zKCspLCAzMiBkZWxldGlvbnMo LSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vb21hcGRybS9vbWFwX2Rydi5oIGIvZHJp dmVycy9ncHUvZHJtL29tYXBkcm0vb21hcF9kcnYuaAppbmRleCBmMzc0ZGMxMDA0NDcuLjAwMzI2 ZjJhMmMyYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL29tYXBkcm0vb21hcF9kcnYuaAor KysgYi9kcml2ZXJzL2dwdS9kcm0vb21hcGRybS9vbWFwX2Rydi5oCkBAIC02NCw2ICs2NCw5IEBA IHN0cnVjdCBvbWFwX2dsb2JhbF9zdGF0ZSB7CiAJc3RydWN0IGRybV9wcml2YXRlX3N0YXRlIGJh c2U7CiAKIAlzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGU7CisKKwkvKiBnbG9iYWwgYXRv bWljIHN0YXRlIG9mIGFzc2lnbm1lbnQgYmV0d2VlbiBvdmVybGF5cyBhbmQgcGxhbmVzICovCisJ c3RydWN0IGRybV9wbGFuZSAqaHdvdmVybGF5X3RvX3BsYW5lWzhdOwogfTsKIAogc3RydWN0IG9t YXBfZHJtX3ByaXZhdGUgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL29tYXBkcm0vb21h cF9vdmVybGF5LmMgYi9kcml2ZXJzL2dwdS9kcm0vb21hcGRybS9vbWFwX292ZXJsYXkuYwppbmRl eCA3YTA5YjBhYTgyM2EuLjNhNTg1ODJjZDU2ZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJt L29tYXBkcm0vb21hcF9vdmVybGF5LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL29tYXBkcm0vb21h cF9vdmVybGF5LmMKQEAgLTIxLDYgKzIxLDE0OSBAQCBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0 IG92ZXJsYXlfaWRfdG9fbmFtZVtdID0gewogCVtPTUFQX0RTU19WSURFTzNdID0gInZpZDMiLAog fTsKIAorc3RhdGljIHN0cnVjdCBvbWFwX2h3X292ZXJsYXkgKgorb21hcF9wbGFuZV9maW5kX2Zy ZWVfb3ZlcmxheShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAorCQkJICAgICBzdHJ1Y3QgZHJtX3Bs YW5lICpod292ZXJsYXlfdG9fcGxhbmVbXSwKKwkJCSAgICAgdTMyIGNhcHMsIHUzMiBmb3VyY2Ms IHUzMiBjcnRjX21hc2spCit7CisJc3RydWN0IG9tYXBfZHJtX3ByaXZhdGUgKnByaXYgPSBkZXYt PmRldl9wcml2YXRlOworCWNvbnN0IHN0cnVjdCBkaXNwY19vcHMgKm9wcyA9IHByaXYtPmRpc3Bj X29wczsKKwlpbnQgaTsKKworCURCRygiY2FwczogJXggZm91cmNjOiAleCBjcnRjOiAleCIsIGNh cHMsIGZvdXJjYywgY3J0Y19tYXNrKTsKKworCWZvciAoaSA9IDA7IGkgPCBwcml2LT5udW1fb3Zs czsgaSsrKSB7CisJCXN0cnVjdCBvbWFwX2h3X292ZXJsYXkgKmN1ciA9IHByaXYtPm92ZXJsYXlz W2ldOworCisJCURCRygiJWQ6IGlkOiAlZCBjdXItPmNhcHM6ICV4IGN1ci0+Y3J0YzogJXgiLAor CQkgICAgY3VyLT5pZHgsIGN1ci0+b3ZlcmxheV9pZCwgY3VyLT5jYXBzLCBjdXItPnBvc3NpYmxl X2NydGNzKTsKKworCQkvKiBza2lwIGlmIGFscmVhZHkgaW4tdXNlICovCisJCWlmIChod292ZXJs YXlfdG9fcGxhbmVbY3VyLT5pZHhdKQorCQkJY29udGludWU7CisKKwkJLyogY2hlY2sgaWYgYWxs b3dlZCBvbiBjcnRjICovCisJCWlmICghKGN1ci0+cG9zc2libGVfY3J0Y3MgJiBjcnRjX21hc2sp KQorCQkJY29udGludWU7CisKKwkJLyogc2tpcCBpZiBkb2Vzbid0IHN1cHBvcnQgc29tZSByZXF1 aXJlZCBjYXBzOiAqLworCQlpZiAoY2FwcyAmIH5jdXItPmNhcHMpCisJCQljb250aW51ZTsKKwor CQkvKiBjaGVjayBzdXBwb3J0ZWQgZm9ybWF0ICovCisJCWlmICghb3BzLT5vdmxfY29sb3JfbW9k ZV9zdXBwb3J0ZWQocHJpdi0+ZGlzcGMsCisJCQkJCQkgICBjdXItPm92ZXJsYXlfaWQsCisJCQkJ CQkgICBmb3VyY2MpKQorCQkJY29udGludWU7CisKKwkJcmV0dXJuIGN1cjsKKwl9CisKKwlEQkco Im5vIG1hdGNoIik7CisJcmV0dXJuIE5VTEw7Cit9CisKK2ludCBvbWFwX292ZXJsYXlfYXNzaWdu KHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzLCBzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKKwkJ CXUzMiBjYXBzLCB1MzIgZm91cmNjLCB1MzIgY3J0Y19tYXNrLAorCQkJc3RydWN0IG9tYXBfaHdf b3ZlcmxheSAqKm92ZXJsYXkpCit7CisJc3RydWN0IG9tYXBfZHJtX3ByaXZhdGUgKnByaXYgPSBz LT5kZXYtPmRldl9wcml2YXRlOworCXN0cnVjdCBvbWFwX2dsb2JhbF9zdGF0ZSAqbmV3X2dsb2Jh bF9zdGF0ZSwgKm9sZF9nbG9iYWxfc3RhdGU7CisJc3RydWN0IGRybV9wbGFuZSAqKm92ZXJsYXlf bWFwOworCXN0cnVjdCBvbWFwX2h3X292ZXJsYXkgKm92bDsKKworCW5ld19nbG9iYWxfc3RhdGUg PSBvbWFwX2dldF9nbG9iYWxfc3RhdGUocyk7CisJaWYgKElTX0VSUihuZXdfZ2xvYmFsX3N0YXRl KSkKKwkJcmV0dXJuIFBUUl9FUlIobmV3X2dsb2JhbF9zdGF0ZSk7CisKKwkvKgorCSAqIGdyYWIg b2xkX3N0YXRlIGFmdGVyIG9tYXBfZ2V0X2dsb2JhbF9zdGF0ZSgpLAorCSAqIHNpbmNlIG5vdyB3 ZSBob2xkIGxvY2s6CisJICovCisJb2xkX2dsb2JhbF9zdGF0ZSA9IG9tYXBfZ2V0X2V4aXN0aW5n X2dsb2JhbF9zdGF0ZShwcml2KTsKKwlEQkcoIm5ld19nbG9iYWxfc3RhdGU6ICVwIG9sZF9nbG9i YWxfc3RhdGU6ICVwIiwKKwkgICAgbmV3X2dsb2JhbF9zdGF0ZSwgb2xkX2dsb2JhbF9zdGF0ZSk7 CisKKwlvdmVybGF5X21hcCA9IG5ld19nbG9iYWxfc3RhdGUtPmh3b3ZlcmxheV90b19wbGFuZTsK KworCWlmICghKm92ZXJsYXkpIHsKKwkJb3ZsID0gb21hcF9wbGFuZV9maW5kX2ZyZWVfb3Zlcmxh eShzLT5kZXYsIG92ZXJsYXlfbWFwLAorCQkJCQkJICAgY2FwcywgZm91cmNjLCBjcnRjX21hc2sp OworCQlpZiAoIW92bCkKKwkJCXJldHVybiAtRU5PTUVNOworCisJCW92bC0+cG9zc2libGVfY3J0 Y3MgPSBjcnRjX21hc2s7CisJCW92ZXJsYXlfbWFwW292bC0+aWR4XSA9IHBsYW5lOworCQkqb3Zl cmxheSA9IG92bDsKKworCQlEQkcoIiVzOiBhc3NpZ24gdG8gcGxhbmUgJXMgY2FwcyAleCBvbiBj cnRjICV4IiwKKwkJICAgICgqb3ZlcmxheSktPm5hbWUsIHBsYW5lLT5uYW1lLCBjYXBzLCBjcnRj X21hc2spOworCX0KKworCXJldHVybiAwOworfQorCit2b2lkIG9tYXBfb3ZlcmxheV9yZWxlYXNl KHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzLAorCQkJICBzdHJ1Y3QgZHJtX3BsYW5lICpwbGFu ZSwKKwkJCSAgc3RydWN0IG9tYXBfaHdfb3ZlcmxheSAqb3ZlcmxheSkKK3sKKwlzdHJ1Y3Qgb21h cF9nbG9iYWxfc3RhdGUgKnN0YXRlID0gb21hcF9nZXRfZ2xvYmFsX3N0YXRlKHMpOworCXN0cnVj dCBkcm1fcGxhbmUgKipvdmVybGF5X21hcCA9IHN0YXRlLT5od292ZXJsYXlfdG9fcGxhbmU7CisK KwlpZiAoIW92ZXJsYXkpCisJCXJldHVybjsKKworCWlmIChXQVJOX09OKCFvdmVybGF5X21hcFtv dmVybGF5LT5pZHhdKSkKKwkJcmV0dXJuOworCS8qCisJICogQ2hlY2sgdGhhdCB0aGUgb3Zlcmxh eSB3ZSBhcmUgcmVsZWFzaW5nIGlzIGFjdHVhbGx5CisJICogYXNzaWduZWQgdG8gdGhlIHBsYW5l IHdlIGFyZSB0cnlpbmcgdG8gcmVsZWFzZSBpdCBmcm9tLgorCSAqLworCWlmIChvdmVybGF5X21h cFtvdmVybGF5LT5pZHhdID09IHBsYW5lKSB7CisJCURCRygiJXM6IHJlbGVhc2UgZnJvbSBwbGFu ZSAlcyIsIG92ZXJsYXktPm5hbWUsIHBsYW5lLT5uYW1lKTsKKworCQlvdmVybGF5X21hcFtvdmVy bGF5LT5pZHhdID0gTlVMTDsKKwl9Cit9CisKK3ZvaWQgb21hcF9vdmVybGF5X2Rpc2FibGUoc3Ry dWN0IGRybV9hdG9taWNfc3RhdGUgKnMsCisJCQkgIHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAor CQkJICBzdHJ1Y3Qgb21hcF9od19vdmVybGF5ICpvdmVybGF5KQoreworCXN0cnVjdCBvbWFwX2Ry bV9wcml2YXRlICpwcml2ID0gcy0+ZGV2LT5kZXZfcHJpdmF0ZTsKKwlzdHJ1Y3QgZHJtX3BsYW5l ICoqb3ZlcmxheV9tYXA7CisJc3RydWN0IG9tYXBfZ2xvYmFsX3N0YXRlICpvbGRfc3RhdGU7CisK KwlvbGRfc3RhdGUgPSBvbWFwX2dldF9leGlzdGluZ19nbG9iYWxfc3RhdGUocHJpdik7CisJb3Zl cmxheV9tYXAgPSBvbGRfc3RhdGUtPmh3b3ZlcmxheV90b19wbGFuZTsKKworCWlmICghb3Zlcmxh eSkKKwkJcmV0dXJuOworCisJLyoKKwkgKiBDaGVjayB0aGF0IHRoZSBvdmVybGF5IHdlIGFyZSB0 cnlpbmcgdG8gZGlzYWJsZSBoYXMgbm90CisJICogYmVlbiByZS1hc3NpZ25lZCB0byBhbm90aGVy IHBsYW5lIGFscmVhZHkKKwkgKi8KKwlpZiAoIW92ZXJsYXlfbWFwW292ZXJsYXktPmlkeF0pIHsK KwkJREJHKCIlczogb24gJXMgZGlzYWJsZWQiLCBvdmVybGF5LT5uYW1lLCBwbGFuZS0+bmFtZSk7 CisKKwkJLyogZGlzYWJsZSB0aGUgb3ZlcmxheSAqLworCQlwcml2LT5kaXNwY19vcHMtPm92bF9l bmFibGUocHJpdi0+ZGlzcGMsCisJCQkJCSAgICBvdmVybGF5LT5vdmVybGF5X2lkLCBmYWxzZSk7 CisKKwkJLyoKKwkJICogU2luY2Ugd2UgYXJlIGRpc2FibGluZyB0aGlzIG92ZXJsYXkgaW4gdGhp cworCQkgKiBhdG9taWMgY3ljbGUgd2UgY2FuIHJlc2V0IHRoZSBhdmFpbGFibGUgY3J0Y3MKKwkJ ICogaXQgY2FuIGJlIHVzZWQgb24KKwkJICovCisJCW92ZXJsYXktPnBvc3NpYmxlX2NydGNzID0g KDEgPDwgcHJpdi0+bnVtX3BpcGVzKSAtIDE7CisJfQorCisJLyoKKwkgKiBPdGhlcndpc2UgdGhl IG92ZXJsYXkgaXMgc3RpbGwgaW4gdXNlIHNvIGxlYXZlIGl0IGFsb25lCisJICovCit9CisKIHN0 YXRpYyB2b2lkIG9tYXBfb3ZlcmxheV9kZXN0cm95KHN0cnVjdCBvbWFwX2h3X292ZXJsYXkgKm92 ZXJsYXkpCiB7CiAJa2ZyZWUob3ZlcmxheSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v b21hcGRybS9vbWFwX292ZXJsYXkuaCBiL2RyaXZlcnMvZ3B1L2RybS9vbWFwZHJtL29tYXBfb3Zl cmxheS5oCmluZGV4IDg5MmZlY2I2N2FkYi4uZDUwMzNlZTQ4MWMyIDEwMDY0NAotLS0gYS9kcml2 ZXJzL2dwdS9kcm0vb21hcGRybS9vbWFwX292ZXJsYXkuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0v b21hcGRybS9vbWFwX292ZXJsYXkuaApAQCAtMjgsNCArMjgsMTMgQEAgc3RydWN0IG9tYXBfaHdf b3ZlcmxheSB7CiAKIGludCBvbWFwX2h3b3ZlcmxheXNfaW5pdChzdHJ1Y3Qgb21hcF9kcm1fcHJp dmF0ZSAqcHJpdik7CiB2b2lkIG9tYXBfaHdvdmVybGF5c19kZXN0cm95KHN0cnVjdCBvbWFwX2Ry bV9wcml2YXRlICpwcml2KTsKK2ludCBvbWFwX292ZXJsYXlfYXNzaWduKHN0cnVjdCBkcm1fYXRv bWljX3N0YXRlICpzLCBzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKKwkJCXUzMiBjYXBzLCB1MzIg Zm91cmNjLCB1MzIgY3J0Y19tYXNrLAorCQkJc3RydWN0IG9tYXBfaHdfb3ZlcmxheSAqKm92ZXJs YXkpOwordm9pZCBvbWFwX292ZXJsYXlfcmVsZWFzZShzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAq cywKKwkJCSAgc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCisJCQkgIHN0cnVjdCBvbWFwX2h3X292 ZXJsYXkgKm92ZXJsYXkpOwordm9pZCBvbWFwX292ZXJsYXlfZGlzYWJsZShzdHJ1Y3QgZHJtX2F0 b21pY19zdGF0ZSAqcywKKwkJCSAgc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCisJCQkgIHN0cnVj dCBvbWFwX2h3X292ZXJsYXkgKm92ZXJsYXkpOwogI2VuZGlmIC8qIF9fT01BUERSTV9PVkVSTEFZ X0hfXyAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL29tYXBkcm0vb21hcF9wbGFuZS5j IGIvZHJpdmVycy9ncHUvZHJtL29tYXBkcm0vb21hcF9wbGFuZS5jCmluZGV4IGIwZTYwMTE5YzBh MS4uMjI0NTIwMzQ4ZmM1IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vb21hcGRybS9vbWFw X3BsYW5lLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL29tYXBkcm0vb21hcF9wbGFuZS5jCkBAIC0z MCw2ICszMCw4IEBACiAKIHN0cnVjdCBvbWFwX3BsYW5lX3N0YXRlIHsKIAlzdHJ1Y3QgZHJtX3Bs YW5lX3N0YXRlIGJhc2U7CisKKwlzdHJ1Y3Qgb21hcF9od19vdmVybGF5ICpvdmVybGF5OwogfTsK IAogI2RlZmluZSB0b19vbWFwX3BsYW5lKHgpIGNvbnRhaW5lcl9vZih4LCBzdHJ1Y3Qgb21hcF9w bGFuZSwgYmFzZSkKQEAgLTM4LDggKzQwLDYgQEAgc3RydWN0IG9tYXBfcGxhbmUgewogCXN0cnVj dCBkcm1fcGxhbmUgYmFzZTsKIAllbnVtIG9tYXBfcGxhbmVfaWQgaWQ7CiAJY29uc3QgY2hhciAq bmFtZTsKLQotCXN0cnVjdCBvbWFwX2h3X292ZXJsYXkgKm92ZXJsYXk7CiB9OwogCiBzdGF0aWMg aW50IG9tYXBfcGxhbmVfcHJlcGFyZV9mYihzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKQEAgLTY0 LDEwICs2NCwyNSBAQCBzdGF0aWMgdm9pZCBvbWFwX3BsYW5lX2F0b21pY191cGRhdGUoc3RydWN0 IGRybV9wbGFuZSAqcGxhbmUsCiAJc3RydWN0IG9tYXBfZHJtX3ByaXZhdGUgKnByaXYgPSBwbGFu ZS0+ZGV2LT5kZXZfcHJpdmF0ZTsKIAlzdHJ1Y3Qgb21hcF9wbGFuZSAqb21hcF9wbGFuZSA9IHRv X29tYXBfcGxhbmUocGxhbmUpOwogCXN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKnN0YXRlID0gcGxh bmUtPnN0YXRlOworCXN0cnVjdCBvbWFwX3BsYW5lX3N0YXRlICpuZXdfb21hcF9zdGF0ZTsKKwlz dHJ1Y3Qgb21hcF9wbGFuZV9zdGF0ZSAqb2xkX29tYXBfc3RhdGU7CiAJc3RydWN0IG9tYXBfb3Zl cmxheV9pbmZvIGluZm87Ci0JZW51bSBvbWFwX3BsYW5lX2lkIG92bF9pZCA9IG9tYXBfcGxhbmUt Pm92ZXJsYXktPm92ZXJsYXlfaWQ7CisJZW51bSBvbWFwX3BsYW5lX2lkIG92bF9pZDsKIAlpbnQg cmV0OwogCisJbmV3X29tYXBfc3RhdGUgPSB0b19vbWFwX3BsYW5lX3N0YXRlKHN0YXRlKTsKKwlv bGRfb21hcF9zdGF0ZSA9IHRvX29tYXBfcGxhbmVfc3RhdGUob2xkX3N0YXRlKTsKKworCS8qIENs ZWFudXAgcHJldmlvdXNseSBoZWxkIG92ZXJsYXkgaWYgbmVlZGVkICovCisJb21hcF9vdmVybGF5 X2Rpc2FibGUob2xkX3N0YXRlLT5zdGF0ZSwgcGxhbmUsIG9sZF9vbWFwX3N0YXRlLT5vdmVybGF5 KTsKKworCWlmICghbmV3X29tYXBfc3RhdGUtPm92ZXJsYXkpIHsKKwkJREJHKCJbUExBTkU6JWQ6 JXNdIG92ZXJsYXlfaWQ6ID8/PyAoJXApIiwgcGxhbmUtPmJhc2UuaWQsIHBsYW5lLT5uYW1lLAor CQkgICAgbmV3X29tYXBfc3RhdGUtPm92ZXJsYXkpOworCQlyZXR1cm47CisJfQorCisJb3ZsX2lk ID0gbmV3X29tYXBfc3RhdGUtPm92ZXJsYXktPm92ZXJsYXlfaWQ7CiAJREJHKCJbUExBTkU6JWQ6 JXNdIG92ZXJsYXlfaWQ6ICVkIiwgcGxhbmUtPmJhc2UuaWQsIHBsYW5lLT5uYW1lLAogCSAgICBv dmxfaWQpOwogCURCRygiJXMsIGNydGM9JXAgZmI9JXAiLCBvbWFwX3BsYW5lLT5uYW1lLCBzdGF0 ZS0+Y3J0Yywgc3RhdGUtPmZiKTsKQEAgLTgxLDExICs5NiwxMSBAQCBzdGF0aWMgdm9pZCBvbWFw X3BsYW5lX2F0b21pY191cGRhdGUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCiAJLyogdXBkYXRl IHNjYW5vdXQ6ICovCiAJb21hcF9mcmFtZWJ1ZmZlcl91cGRhdGVfc2Nhbm91dChzdGF0ZS0+ZmIs IHN0YXRlLCAmaW5mbyk7CiAKLQlEQkcoIiVkeCVkIC0+ICVkeCVkICglZCkiLCBpbmZvLndpZHRo LCBpbmZvLmhlaWdodCwKLQkJCWluZm8ub3V0X3dpZHRoLCBpbmZvLm91dF9oZWlnaHQsCi0JCQlp bmZvLnNjcmVlbl93aWR0aCk7CisJREJHKCIlczogJWR4JWQgLT4gJWR4JWQgKCVkKSIsCisJICAg IG5ld19vbWFwX3N0YXRlLT5vdmVybGF5LT5uYW1lLCBpbmZvLndpZHRoLCBpbmZvLmhlaWdodCwK KwkgICAgaW5mby5vdXRfd2lkdGgsIGluZm8ub3V0X2hlaWdodCwgaW5mby5zY3JlZW5fd2lkdGgp OwogCURCRygiJWQsJWQgJXBhZCAlcGFkIiwgaW5mby5wb3NfeCwgaW5mby5wb3NfeSwKLQkJCSZp bmZvLnBhZGRyLCAmaW5mby5wX3V2X2FkZHIpOworCSAgICAmaW5mby5wYWRkciwgJmluZm8ucF91 dl9hZGRyKTsKIAogCS8qIGFuZCBmaW5hbGx5LCB1cGRhdGUgb21hcGRzczogKi8KIAlyZXQgPSBw cml2LT5kaXNwY19vcHMtPm92bF9zZXR1cChwcml2LT5kaXNwYywgb3ZsX2lkLCAmaW5mbywKQEAg LTEwNCw1MyArMTE5LDYyIEBAIHN0YXRpYyB2b2lkIG9tYXBfcGxhbmVfYXRvbWljX3VwZGF0ZShz dHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKIHN0YXRpYyB2b2lkIG9tYXBfcGxhbmVfYXRvbWljX2Rp c2FibGUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCiAJCQkJICAgICAgc3RydWN0IGRybV9wbGFu ZV9zdGF0ZSAqb2xkX3N0YXRlKQogewotCXN0cnVjdCBvbWFwX2RybV9wcml2YXRlICpwcml2ID0g cGxhbmUtPmRldi0+ZGV2X3ByaXZhdGU7Ci0Jc3RydWN0IG9tYXBfcGxhbmUgKm9tYXBfcGxhbmUg PSB0b19vbWFwX3BsYW5lKHBsYW5lKTsKLQllbnVtIG9tYXBfcGxhbmVfaWQgb3ZsX2lkID0gb21h cF9wbGFuZS0+b3ZlcmxheS0+b3ZlcmxheV9pZDsKKwlzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpz dGF0ZSA9IHBsYW5lLT5zdGF0ZTsKKwlzdHJ1Y3Qgb21hcF9wbGFuZV9zdGF0ZSAqbmV3X29tYXBf c3RhdGU7CisJc3RydWN0IG9tYXBfcGxhbmVfc3RhdGUgKm9sZF9vbWFwX3N0YXRlOworCisJbmV3 X29tYXBfc3RhdGUgPSB0b19vbWFwX3BsYW5lX3N0YXRlKHN0YXRlKTsKKwlvbGRfb21hcF9zdGF0 ZSA9IHRvX29tYXBfcGxhbmVfc3RhdGUob2xkX3N0YXRlKTsKKworCWlmICghb2xkX29tYXBfc3Rh dGUtPm92ZXJsYXkpCisJCXJldHVybjsKIAogCXBsYW5lLT5zdGF0ZS0+cm90YXRpb24gPSBEUk1f TU9ERV9ST1RBVEVfMDsKIAlwbGFuZS0+c3RhdGUtPnpwb3MgPSBwbGFuZS0+dHlwZSA9PSBEUk1f UExBTkVfVFlQRV9QUklNQVJZCi0JCQkgICA/IDAgOiBvdmxfaWQ7CisJCQkgICA/IDAgOiBvbGRf b21hcF9zdGF0ZS0+b3ZlcmxheS0+b3ZlcmxheV9pZDsKIAotCXByaXYtPmRpc3BjX29wcy0+b3Zs X2VuYWJsZShwcml2LT5kaXNwYywgb3ZsX2lkLCBmYWxzZSk7CisJb21hcF9vdmVybGF5X2Rpc2Fi bGUob2xkX3N0YXRlLT5zdGF0ZSwgcGxhbmUsIG9sZF9vbWFwX3N0YXRlLT5vdmVybGF5KTsKKwlu ZXdfb21hcF9zdGF0ZS0+b3ZlcmxheSA9IE5VTEw7CiB9CiAKKyNkZWZpbmUgRlJBQ18xNl8xNiht dWx0LCBkaXYpICAgICgoKG11bHQpIDw8IDE2KSAvIChkaXYpKQogc3RhdGljIGludCBvbWFwX3Bs YW5lX2F0b21pY19jaGVjayhzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKIAkJCQkgICBzdHJ1Y3Qg ZHJtX3BsYW5lX3N0YXRlICpzdGF0ZSkKIHsKIAlzdHJ1Y3Qgb21hcF9kcm1fcHJpdmF0ZSAqcHJp diA9IHBsYW5lLT5kZXYtPmRldl9wcml2YXRlOworCXN0cnVjdCBkcm1fY3J0YyAqY3J0YzsKIAlz dHJ1Y3QgZHJtX2NydGNfc3RhdGUgKmNydGNfc3RhdGU7CiAJdTE2IHdpZHRoLCBoZWlnaHQ7CiAJ dTMyIHdpZHRoX2ZwLCBoZWlnaHRfZnA7CisJc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqb2xkX3N0 YXRlID0gcGxhbmUtPnN0YXRlOworCXN0cnVjdCBvbWFwX3BsYW5lX3N0YXRlICpvbWFwX3N0YXRl ID0gdG9fb21hcF9wbGFuZV9zdGF0ZShzdGF0ZSk7CisJc3RydWN0IG9tYXBfZ2xvYmFsX3N0YXRl ICpvbWFwX292ZXJsYXlfZ2xvYmFsX3N0YXRlOworCXUzMiBjcnRjX21hc2s7CisJdTMyIGZvdXJj YzsKKwl1MzIgY2FwcyA9IDA7CisJYm9vbCBuZXdfaHdfb3ZlcmxheSA9IGZhbHNlOworCWludCBt aW5fc2NhbGUsIG1heF9zY2FsZTsKKwlpbnQgcmV0OwogCi0JaWYgKCFzdGF0ZS0+ZmIpCi0JCXJl dHVybiAwOworCW9tYXBfb3ZlcmxheV9nbG9iYWxfc3RhdGUgPSBvbWFwX2dldF9nbG9iYWxfc3Rh dGUoc3RhdGUtPnN0YXRlKTsKKwlpZiAoSVNfRVJSKG9tYXBfb3ZlcmxheV9nbG9iYWxfc3RhdGUp KQorCQlyZXR1cm4gUFRSX0VSUihvbWFwX292ZXJsYXlfZ2xvYmFsX3N0YXRlKTsKKwlEQkcoIiVz OiBvbWFwX292ZXJsYXlfZ2xvYmFsX3N0YXRlOiAlcCIsIHBsYW5lLT5uYW1lLAorCSAgICBvbWFw X292ZXJsYXlfZ2xvYmFsX3N0YXRlKTsKIAogCXByaXYtPmRpc3BjX29wcy0+b3ZsX2dldF9tYXhf c2l6ZShwcml2LT5kaXNwYywgJndpZHRoLCAmaGVpZ2h0KTsKIAl3aWR0aF9mcCA9IHdpZHRoIDw8 IDE2OwogCWhlaWdodF9mcCA9IGhlaWdodCA8PCAxNjsKIAotCS8qIGNydGMgc2hvdWxkIG9ubHkg YmUgTlVMTCB3aGVuIGRpc2FibGluZyAoaS5lLiwgIXN0YXRlLT5mYikgKi8KLQlpZiAoV0FSTl9P Tighc3RhdGUtPmNydGMpKQorCWNydGMgPSBzdGF0ZS0+Y3J0YyA/IHN0YXRlLT5jcnRjIDogcGxh bmUtPnN0YXRlLT5jcnRjOworCWlmICghY3J0YykKIAkJcmV0dXJuIDA7CiAKLQljcnRjX3N0YXRl ID0gZHJtX2F0b21pY19nZXRfZXhpc3RpbmdfY3J0Y19zdGF0ZShzdGF0ZS0+c3RhdGUsIHN0YXRl LT5jcnRjKTsKKwljcnRjX3N0YXRlID0gZHJtX2F0b21pY19nZXRfZXhpc3RpbmdfY3J0Y19zdGF0 ZShzdGF0ZS0+c3RhdGUsIGNydGMpOwogCS8qIHdlIHNob3VsZCBoYXZlIGEgY3J0YyBzdGF0ZSBp ZiB0aGUgcGxhbmUgaXMgYXR0YWNoZWQgdG8gYSBjcnRjICovCiAJaWYgKFdBUk5fT04oIWNydGNf c3RhdGUpKQogCQlyZXR1cm4gMDsKIAotCWlmICghY3J0Y19zdGF0ZS0+ZW5hYmxlKQotCQlyZXR1 cm4gMDsKLQotCWlmIChzdGF0ZS0+Y3J0Y194IDwgMCB8fCBzdGF0ZS0+Y3J0Y195IDwgMCkKLQkJ cmV0dXJuIC1FSU5WQUw7Ci0KLQlpZiAoc3RhdGUtPmNydGNfeCArIHN0YXRlLT5jcnRjX3cgPiBj cnRjX3N0YXRlLT5hZGp1c3RlZF9tb2RlLmhkaXNwbGF5KQotCQlyZXR1cm4gLUVJTlZBTDsKLQot CWlmIChzdGF0ZS0+Y3J0Y195ICsgc3RhdGUtPmNydGNfaCA+IGNydGNfc3RhdGUtPmFkanVzdGVk X21vZGUudmRpc3BsYXkpCi0JCXJldHVybiAtRUlOVkFMOwotCiAJLyogTWFrZSBzdXJlIGRpbWVu c2lvbnMgYXJlIHdpdGhpbiBib3VuZHMuICovCiAJaWYgKHN0YXRlLT5zcmNfaCA+IGhlaWdodF9m cCB8fCBzdGF0ZS0+Y3J0Y19oID4gaGVpZ2h0KQogCQlyZXR1cm4gLUVJTlZBTDsKQEAgLTE1OCwx MCArMTgyLDc2IEBAIHN0YXRpYyBpbnQgb21hcF9wbGFuZV9hdG9taWNfY2hlY2soc3RydWN0IGRy bV9wbGFuZSAqcGxhbmUsCiAJaWYgKHN0YXRlLT5zcmNfdyA+IHdpZHRoX2ZwIHx8IHN0YXRlLT5j cnRjX3cgPiB3aWR0aCkKIAkJcmV0dXJuIC1FSU5WQUw7CiAKKwltaW5fc2NhbGUgPSBGUkFDXzE2 XzE2KDEsIDQpOworCW1heF9zY2FsZSA9IEZSQUNfMTZfMTYoOCwgMSk7CisKKwlyZXQgPSBkcm1f YXRvbWljX2hlbHBlcl9jaGVja19wbGFuZV9zdGF0ZShzdGF0ZSwgY3J0Y19zdGF0ZSwKKwkJCQkJ CSAgbWluX3NjYWxlLCBtYXhfc2NhbGUsCisJCQkJCQkgIHRydWUsIHRydWUpOworCWlmIChyZXQp CisJCXJldHVybiByZXQ7CisKIAlpZiAoc3RhdGUtPnJvdGF0aW9uICE9IERSTV9NT0RFX1JPVEFU RV8wICYmCiAJICAgICFvbWFwX2ZyYW1lYnVmZmVyX3N1cHBvcnRzX3JvdGF0aW9uKHN0YXRlLT5m YikpCiAJCXJldHVybiAtRUlOVkFMOwogCisJREJHKCIlczogY2hlY2sgKCVkIC0+ICVkKSIsIHBs YW5lLT5uYW1lLAorCSAgICBvbGRfc3RhdGUtPnZpc2libGUsIHN0YXRlLT52aXNpYmxlKTsKKwor CWlmIChzdGF0ZS0+dmlzaWJsZSkgeworCQlpZiAoKHN0YXRlLT5zcmNfdyA+PiAxNikgIT0gc3Rh dGUtPmNydGNfdyB8fAorCQkgICAgKHN0YXRlLT5zcmNfaCA+PiAxNikgIT0gc3RhdGUtPmNydGNf aCkKKwkJCWNhcHMgfD0gT01BUF9EU1NfT1ZMX0NBUF9TQ0FMRTsKKworCQlmb3VyY2MgPSBzdGF0 ZS0+ZmItPmZvcm1hdC0+Zm9ybWF0OworCQljcnRjX21hc2sgPSBkcm1fY3J0Y19tYXNrKHN0YXRl LT5jcnRjKTsKKworCQkvKgorCQkgKiAocmUpYWxsb2NhdGUgaHcgb3ZlcmxheSBpZiB3ZSBkb24n dCBoYXZlIG9uZSBvcgorCQkgKiB0aGVyZSBpcyBhIGNhcHMgbWlzbWF0Y2gKKwkJICovCisJCWlm ICghb21hcF9zdGF0ZS0+b3ZlcmxheSB8fAorCQkgICAgKGNhcHMgJiB+b21hcF9zdGF0ZS0+b3Zl cmxheS0+Y2FwcykpIHsKKwkJCW5ld19od19vdmVybGF5ID0gdHJ1ZTsKKwkJfSBlbHNlIHsKKwkJ CS8qIGNoZWNrIGlmIGFsbG93ZWQgb24gY3J0YyAqLworCQkJaWYgKCEob21hcF9zdGF0ZS0+b3Zl cmxheS0+cG9zc2libGVfY3J0Y3MgJiBjcnRjX21hc2spKQorCQkJCW5ld19od19vdmVybGF5ID0g dHJ1ZTsKKworCQkJLyogY2hlY2sgc3VwcG9ydGVkIGZvcm1hdCAqLworCQkJaWYgKCFwcml2LT5k aXNwY19vcHMtPm92bF9jb2xvcl9tb2RlX3N1cHBvcnRlZChwcml2LT5kaXNwYywKKwkJCQkJCW9t YXBfc3RhdGUtPm92ZXJsYXktPm92ZXJsYXlfaWQsCisJCQkJCQlmb3VyY2MpKQorCQkJCW5ld19o d19vdmVybGF5ID0gdHJ1ZTsKKwkJfQorCisJCWlmIChuZXdfaHdfb3ZlcmxheSkgeworCQkJc3Ry dWN0IG9tYXBfaHdfb3ZlcmxheSAqb2xkX292bCA9CisJCQkJCQlvbWFwX3N0YXRlLT5vdmVybGF5 OworCQkJc3RydWN0IG9tYXBfaHdfb3ZlcmxheSAqbmV3X292bCA9IE5VTEw7CisKKwkJCW9tYXBf b3ZlcmxheV9yZWxlYXNlKHN0YXRlLT5zdGF0ZSwgcGxhbmUsIG9sZF9vdmwpOworCisJCQlyZXQg PSBvbWFwX292ZXJsYXlfYXNzaWduKHN0YXRlLT5zdGF0ZSwgcGxhbmUsIGNhcHMsCisJCQkJCQkg IGZvdXJjYywgY3J0Y19tYXNrLCAmbmV3X292bCk7CisJCQlpZiAocmV0KSB7CisJCQkJREJHKCIl czogZmFpbGVkIHRvIGFzc2lnbiBod19vdmVybGF5KHMpISIsCisJCQkJICAgIHBsYW5lLT5uYW1l KTsKKwkJCQlvbWFwX3N0YXRlLT5vdmVybGF5ID0gTlVMTDsKKwkJCQlyZXR1cm4gcmV0OworCQkJ fQorCisJCQlvbWFwX3N0YXRlLT5vdmVybGF5ID0gbmV3X292bDsKKwkJfQorCX0gZWxzZSB7CisJ CW9tYXBfb3ZlcmxheV9yZWxlYXNlKHN0YXRlLT5zdGF0ZSwgcGxhbmUsIG9tYXBfc3RhdGUtPm92 ZXJsYXkpOworCQlvbWFwX3N0YXRlLT5vdmVybGF5ID0gTlVMTDsKKwl9CisKKwlpZiAob21hcF9z dGF0ZS0+b3ZlcmxheSkKKwkJREJHKCJwbGFuZTogJXMgb3ZlcmxheV9pZDogJWQiLCBwbGFuZS0+ bmFtZSwKKwkJICAgIG9tYXBfc3RhdGUtPm92ZXJsYXktPm92ZXJsYXlfaWQpOworCiAJcmV0dXJu IDA7CiB9CiAKQEAgLTIzNiw3ICszMjYsNyBAQCBzdGF0aWMgdm9pZCBvbWFwX3BsYW5lX3Jlc2V0 KHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lKQogCSAqIHBsYW5lLgogCSAqLwogCXBsYW5lLT5zdGF0 ZS0+enBvcyA9IHBsYW5lLT50eXBlID09IERSTV9QTEFORV9UWVBFX1BSSU1BUlkKLQkJCSAgID8g MCA6IG9tYXBfcGxhbmUtPm92ZXJsYXktPm92ZXJsYXlfaWQ7CisJCQkgICA/IDAgOiBvbWFwX3Bs YW5lLT5pZDsKIH0KIAogc3RhdGljIHN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKgpAQCAtMzI4LDE0 ICs0MTgsMTMgQEAgc3RydWN0IGRybV9wbGFuZSAqb21hcF9wbGFuZV9pbml0KHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYsCiAKIAlvbWFwX3BsYW5lLT5pZCA9IGlkeDsKIAlvbWFwX3BsYW5lLT5uYW1l ID0gcGxhbmVfaWRfdG9fbmFtZVtpZHhdOwotCW9tYXBfcGxhbmUtPm92ZXJsYXkgPSBwcml2LT5v dmVybGF5c1tpZHhdOwogCiAJREJHKCIlczogdHlwZT0lZCIsIG9tYXBfcGxhbmUtPm5hbWUsIHR5 cGUpOwogCURCRygiCW9tYXBfcGxhbmUtPmlkOiAlZCIsIG9tYXBfcGxhbmUtPmlkKTsKIAlEQkco IgljcnRjX21hc2s6IDB4JTA0eCIsIHBvc3NpYmxlX2NydGNzKTsKIAogCWZvcm1hdHMgPSBwcml2 LT5kaXNwY19vcHMtPm92bF9nZXRfY29sb3JfbW9kZXMocHJpdi0+ZGlzcGMsCi0JCQkJCQkgICAg ICAgb21hcF9wbGFuZS0+b3ZlcmxheS0+b3ZlcmxheV9pZCk7CisJCQkJCQkgICAgICAgb21hcF9w bGFuZS0+aWQpOwogCWZvciAobmZvcm1hdHMgPSAwOyBmb3JtYXRzW25mb3JtYXRzXTsgKytuZm9y bWF0cykKIAkJOwogCi0tIAoyLjkuMAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJl ZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGlu Zm8vZHJpLWRldmVsCg==