From mboxrd@z Thu Jan 1 00:00:00 1970 From: Robert Foss Subject: [PATCH i-g-t v1 04/32] lib/igt_kms: Implement dynamic plane count support Date: Fri, 20 Jan 2017 12:45:26 -0500 Message-ID: <20170120174554.14195-5-robert.foss@collabora.com> References: <20170120174554.14195-1-robert.foss@collabora.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from bhuna.collabora.co.uk (bhuna.collabora.co.uk [IPv6:2a00:1098:0:82:1000:25:2eeb:e3e3]) by gabe.freedesktop.org (Postfix) with ESMTPS id 5E2F06EC2A for ; Fri, 20 Jan 2017 17:46:44 +0000 (UTC) In-Reply-To: <20170120174554.14195-1-robert.foss@collabora.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: intel-gfx@lists.freedesktop.org, Tomeu Vizoso , Maarten Lankhorst , Gustavo Padovan , Daniel Stone , Mika Kahola List-Id: intel-gfx@lists.freedesktop.org SW4gdXBjb21pbmcgZHJtLW1pc2MtbmV4dCBjaGFuZ2VzLCB0aGUgbnVtYmVyIG9mIHBsYW5lcyBw ZXIgcGlwZSBoYXMKYmVlbiBpbmNyZWFzZWQgYXMgbW9yZSB0aGFuIG9uZSBwcmltYXJ5IHBsYW5l IGNhbiBiZSBhc3NvY2lhdGVkIHdpdGgKYSBwaXBlLgoKVGhlIHNpbXBsZSBmaXggZm9yIHRoaXMg d291bGQgYmUgdG8gc2ltcGx5IGJ1bXAgaGFyZGNvZGVkIHZhbHVlIGZvcgpudW1iZXIgb2YgZnJh bWVzIHBlciBwaXBlLgpCdXQgYSBiZXR0ZXIgc29sdXRpb24gd291bGQgYmUgdG8gYWRkIHN1cHBv cnQgZm9yIGR5bmFtaWMgbnVtYmVyIG9mCnBsYW5lcyBwZXIgcGlwZSB0byBpLWctdC4KClNpZ25l ZC1vZmYtYnk6IFJvYmVydCBGb3NzIDxyb2JlcnQuZm9zc0Bjb2xsYWJvcmEuY29tPgotLS0KIGxp Yi9pZ3Rfa21zLmMgfCAxNTcgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr LS0tLS0tLS0tLS0tLS0tLS0tLQogbGliL2lndF9rbXMuaCB8ICAzMiArKysrLS0tLS0tLS0KIDIg ZmlsZXMgY2hhbmdlZCwgMTE0IGluc2VydGlvbnMoKyksIDc1IGRlbGV0aW9ucygtKQoKZGlmZiAt LWdpdCBhL2xpYi9pZ3Rfa21zLmMgYi9saWIvaWd0X2ttcy5jCmluZGV4IDhmYTQwYzI4Li41OGU2 MmUyYiAxMDA2NDQKLS0tIGEvbGliL2lndF9rbXMuYworKysgYi9saWIvaWd0X2ttcy5jCkBAIC0z NDcsMjQgKzM0NywxNyBAQCBpbnQga21zdGVzdF9waXBlX3RvX2luZGV4KGNoYXIgcGlwZSkKICAq CiAgKiBSZXR1cm5zOiBTdHJpbmcgcmVwcmVzbnRpbmcgQHBpcGUsIGUuZy4gInBsYW5lMSIuCiAg Ki8KLWNvbnN0IGNoYXIgKmttc3Rlc3RfcGxhbmVfbmFtZShlbnVtIGlndF9wbGFuZSBwbGFuZSkK K2NvbnN0IGNoYXIgKmttc3Rlc3RfcGxhbmVfdHlwZV9uYW1lKGludCBwbGFuZV90eXBlKQogewog CXN0YXRpYyBjb25zdCBjaGFyICpuYW1lc1tdID0gewotCQlbSUdUX1BMQU5FXzFdID0gInBsYW5l MSIsCi0JCVtJR1RfUExBTkVfMl0gPSAicGxhbmUyIiwKLQkJW0lHVF9QTEFORV8zXSA9ICJwbGFu ZTMiLAotCQlbSUdUX1BMQU5FXzRdID0gInBsYW5lNCIsCi0JCVtJR1RfUExBTkVfNV0gPSAicGxh bmU1IiwKLQkJW0lHVF9QTEFORV82XSA9ICJwbGFuZTYiLAotCQlbSUdUX1BMQU5FXzddID0gInBs YW5lNyIsCi0JCVtJR1RfUExBTkVfOF0gPSAicGxhbmU4IiwKLQkJW0lHVF9QTEFORV85XSA9ICJw bGFuZTkiLAotCQlbSUdUX1BMQU5FX0NVUlNPUl0gPSAiY3Vyc29yIiwKKwkJW0RSTV9QTEFORV9U WVBFX09WRVJMQVldID0gIm92ZXJsYXkiLAorCQlbRFJNX1BMQU5FX1RZUEVfUFJJTUFSWV0gPSAi cHJpbWFyeSIsCisJCVtEUk1fUExBTkVfVFlQRV9DVVJTT1JdID0gImN1cnNvciIsCiAJfTsKIAot CWlndF9hc3NlcnQocGxhbmUgPCBBUlJBWV9TSVpFKG5hbWVzKSAmJiBuYW1lc1twbGFuZV0pOwor CWlndF9hc3NlcnQocGxhbmVfdHlwZSA8IEFSUkFZX1NJWkUobmFtZXMpICYmIG5hbWVzW3BsYW5l X3R5cGVdKTsKIAotCXJldHVybiBuYW1lc1twbGFuZV07CisJcmV0dXJuIG5hbWVzW3BsYW5lX3R5 cGVdOwogfQogCiBzdGF0aWMgY29uc3QgY2hhciAqbW9kZV9zdGVyZW9fbmFtZShjb25zdCBkcm1N b2RlTW9kZUluZm8gKm1vZGUpCkBAIC0xNTMyLDE0ICsxNTI1LDE3IEBAIHZvaWQgaWd0X2Rpc3Bs YXlfaW5pdChpZ3RfZGlzcGxheV90ICpkaXNwbGF5LCBpbnQgZHJtX2ZkKQogCWZvciAoaSA9IDA7 IGkgPCBkaXNwbGF5LT5uX3BpcGVzOyBpKyspIHsKIAkJaWd0X3BpcGVfdCAqcGlwZSA9ICZkaXNw bGF5LT5waXBlc1tpXTsKIAkJaWd0X3BsYW5lX3QgKnBsYW5lOwotCQlpbnQgcCA9IElHVF9QTEFO RV8yOworCQlpbnQgcCA9IDE7CiAJCWludCBqLCB0eXBlOwotCQl1aW50OF90IG5fcGxhbmVzID0g MDsKKwkJdWludDhfdCBsYXN0X3BsYW5lID0gMCwgbl9wbGFuZXMgPSAwOwogCQl1aW50NjRfdCBw cm9wX3ZhbHVlOwogCiAJCXBpcGUtPmNydGNfaWQgPSByZXNvdXJjZXMtPmNydGNzW2ldOwogCQlw aXBlLT5kaXNwbGF5ID0gZGlzcGxheTsKIAkJcGlwZS0+cGlwZSA9IGk7CisJCXBpcGUtPnBsYW5l X2N1cnNvciA9IC0xOworCQlwaXBlLT5wbGFuZV9wcmltYXJ5ID0gLTE7CisJCXBpcGUtPnBsYW5l cyA9IE5VTEw7CiAKIAkJZ2V0X2NydGNfcHJvcGVydHkoZGlzcGxheS0+ZHJtX2ZkLCBwaXBlLT5j cnRjX2lkLAogCQkJCSAgICAiYmFja2dyb3VuZF9jb2xvciIsCkBAIC0xNTY1LDYgKzE1NjEsMjcg QEAgdm9pZCBpZ3RfZGlzcGxheV9pbml0KGlndF9kaXNwbGF5X3QgKmRpc3BsYXksIGludCBkcm1f ZmQpCiAKIAkJaWd0X2F0b21pY19maWxsX3BpcGVfcHJvcHMoZGlzcGxheSwgcGlwZSwgSUdUX05V TV9DUlRDX1BST1BTLCBpZ3RfY3J0Y19wcm9wX25hbWVzKTsKIAorCQkvKiBjb3VudCBudW1iZXIg b2YgdmFsaWQgcGxhbmVzICovCisJCWZvciAoaiA9IDA7IGogPCBwbGFuZV9yZXNvdXJjZXMtPmNv dW50X3BsYW5lczsgaisrKSB7CisJCQlkcm1Nb2RlUGxhbmUgKmRybV9wbGFuZTsKKworCQkJZHJt X3BsYW5lID0gZHJtTW9kZUdldFBsYW5lKGRpc3BsYXktPmRybV9mZCwKKwkJCQkJCSAgICBwbGFu ZV9yZXNvdXJjZXMtPnBsYW5lc1tqXSk7CisJCQlpZ3RfYXNzZXJ0KGRybV9wbGFuZSk7CisKKwkJ CWlmICghKGRybV9wbGFuZS0+cG9zc2libGVfY3J0Y3MgJiAoMSA8PCBpKSkpIHsKKwkJCQlkcm1N b2RlRnJlZVBsYW5lKGRybV9wbGFuZSk7CisJCQkJY29udGludWU7CisgICAgICAgICAgICB9CisK KwkJICAgIG5fcGxhbmVzKys7CisJCX0KKworCQlpZ3RfYXNzZXJ0X2x0ZSgwLCBuX3BsYW5lcyk7 CisJCXBpcGUtPnBsYW5lcyA9IGNhbGxvYyhzaXplb2YoaWd0X3BsYW5lX3QpLCBuX3BsYW5lcyk7 CisJCWlndF9hc3NlcnRfZihwaXBlLT5wbGFuZXMsICJGYWlsZWQgdG8gYWxsb2NhdGUgbWVtb3J5 IGZvciAlZCBwbGFuZXNcbiIsIG5fcGxhbmVzKTsKKwkJbGFzdF9wbGFuZSA9IG5fcGxhbmVzIC0g MTsKKwogCQkvKiBhZGQgdGhlIHBsYW5lcyB0aGF0IGNhbiBiZSB1c2VkIHdpdGggdGhhdCBwaXBl ICovCiAJCWZvciAoaiA9IDA7IGogPCBwbGFuZV9yZXNvdXJjZXMtPmNvdW50X3BsYW5lczsgaisr KSB7CiAJCQlkcm1Nb2RlUGxhbmUgKmRybV9wbGFuZTsKQEAgLTE1ODIsMjEgKzE1OTksMjQgQEAg dm9pZCBpZ3RfZGlzcGxheV9pbml0KGlndF9kaXNwbGF5X3QgKmRpc3BsYXksIGludCBkcm1fZmQp CiAJCQkJCQkgIHBsYW5lX3Jlc291cmNlcy0+cGxhbmVzW2pdKTsKIAkJCXN3aXRjaCAodHlwZSkg ewogCQkJY2FzZSBEUk1fUExBTkVfVFlQRV9QUklNQVJZOgotCQkJCXBsYW5lID0gJnBpcGUtPnBs YW5lc1tJR1RfUExBTkVfUFJJTUFSWV07Ci0JCQkJcGxhbmUtPmlzX3ByaW1hcnkgPSAxOwotCQkJ CXBsYW5lLT5pbmRleCA9IElHVF9QTEFORV9QUklNQVJZOworCQkJCWlmIChwaXBlLT5wbGFuZV9w cmltYXJ5ID09IC0xKSB7CisJCQkJCXBsYW5lID0gJnBpcGUtPnBsYW5lc1swXTsKKwkJCQkJcGxh bmUtPmluZGV4ID0gMDsKKwkJCQkJcGlwZS0+cGxhbmVfcHJpbWFyeSA9IDA7CisJCQkJfSBlbHNl IHsKKwkJCQkJcGxhbmUgPSAmcGlwZS0+cGxhbmVzW3BdOworCQkJCQlwbGFuZS0+aW5kZXggPSBw Kys7CisJCQkJfQogCQkJCWJyZWFrOwogCQkJY2FzZSBEUk1fUExBTkVfVFlQRV9DVVJTT1I6Ci0J CQkJLyoKLQkJCQkgKiBDdXJzb3Igc2hvdWxkIGJlIHRoZSBoaWdoZXN0IGluZGV4IGluIG91cgot CQkJCSAqIGludGVybmFsIGxpc3QsIGJ1dCB3ZSBkb24ndCBrbm93IHdoYXQgdGhhdAotCQkJCSAq IGlzIHlldC4gIEp1c3Qgc3RpY2sgaXQgaW4gdGhlIGxhc3Qgc2xvdAotCQkJCSAqIGZvciBub3cg YW5kIHdlJ2xsIG1vdmUgaXQgbGF0ZXIsIGlmCi0JCQkJICogbmVjZXNzYXJ5LgotCQkJCSAqLwot CQkJCXBsYW5lID0gJnBpcGUtPnBsYW5lc1tJR1RfUExBTkVfQ1VSU09SXTsKLQkJCQlwbGFuZS0+ aXNfY3Vyc29yID0gMTsKLQkJCQlwbGFuZS0+aW5kZXggPSBJR1RfUExBTkVfQ1VSU09SOworCQkJ CWlmIChwaXBlLT5wbGFuZV9jdXJzb3IgPT0gLTEpIHsKKwkJCQkJcGxhbmUgPSAmcGlwZS0+cGxh bmVzW2xhc3RfcGxhbmVdOworCQkJCQlwbGFuZS0+aW5kZXggPSBsYXN0X3BsYW5lOworCQkJCQlw aXBlLT5wbGFuZV9jdXJzb3IgPSBsYXN0X3BsYW5lOworCQkJCX0gZWxzZSB7CisJCQkJCXBsYW5l ID0gJnBpcGUtPnBsYW5lc1twXTsKKwkJCQkJcGxhbmUtPmluZGV4ID0gcCsrOworCQkJCX0KIAkJ CQlkaXNwbGF5LT5oYXNfY3Vyc29yX3BsYW5lID0gdHJ1ZTsKIAkJCQlicmVhazsKIAkJCWRlZmF1 bHQ6CkBAIC0xNjA1LDcgKzE2MjUsNyBAQCB2b2lkIGlndF9kaXNwbGF5X2luaXQoaWd0X2Rpc3Bs YXlfdCAqZGlzcGxheSwgaW50IGRybV9mZCkKIAkJCQlicmVhazsKIAkJCX0KIAotCQkJbl9wbGFu ZXMrKzsKKwkJCXBsYW5lLT50eXBlID0gdHlwZTsKIAkJCXBsYW5lLT5waXBlID0gcGlwZTsKIAkJ CXBsYW5lLT5kcm1fcGxhbmUgPSBkcm1fcGxhbmU7CiAKQEAgLTE2MjYsNyArMTY0Niw3IEBAIHZv aWQgaWd0X2Rpc3BsYXlfaW5pdChpZ3RfZGlzcGxheV90ICpkaXNwbGF5LCBpbnQgZHJtX2ZkKQog CQkgKiBBdCB0aGUgYmFyZSBtaW5pbXVtLCB3ZSBzaG91bGQgZXhwZWN0IHRvIGhhdmUgYSBwcmlt YXJ5CiAJCSAqIHBsYW5lCiAJCSAqLwotCQlpZ3RfYXNzZXJ0KHBpcGUtPnBsYW5lc1tJR1RfUExB TkVfUFJJTUFSWV0uZHJtX3BsYW5lKTsKKwkJaWd0X2Fzc2VydChwaXBlLT5wbGFuZXNbcGlwZS0+ cGxhbmVfcHJpbWFyeV0uZHJtX3BsYW5lKTsKIAogCQlpZiAoZGlzcGxheS0+aGFzX2N1cnNvcl9w bGFuZSkgewogCQkJLyoKQEAgLTE2MzQsMTEgKzE2NTQsMTEgQEAgdm9pZCBpZ3RfZGlzcGxheV9p bml0KGlndF9kaXNwbGF5X3QgKmRpc3BsYXksIGludCBkcm1fZmQpCiAJCQkgKiBvbmx5IDEgc3By aXRlLCB0aGF0J3MgdGhlIHdyb25nIHNsb3QgYW5kIHdlIG5lZWQgdG8KIAkJCSAqIG1vdmUgaXQg ZG93bi4KIAkJCSAqLwotCQkJaWYgKHAgIT0gSUdUX1BMQU5FX0NVUlNPUikgeworCQkJaWYgKHAg IT0gbGFzdF9wbGFuZSkgewogCQkJCXBpcGUtPnBsYW5lc1twXSA9Ci0JCQkJCXBpcGUtPnBsYW5l c1tJR1RfUExBTkVfQ1VSU09SXTsKKwkJCQkJcGlwZS0+cGxhbmVzW2xhc3RfcGxhbmVdOwogCQkJ CXBpcGUtPnBsYW5lc1twXS5pbmRleCA9IHA7Ci0JCQkJbWVtc2V0KCZwaXBlLT5wbGFuZXNbSUdU X1BMQU5FX0NVUlNPUl0sIDAsCisJCQkJbWVtc2V0KCZwaXBlLT5wbGFuZXNbbGFzdF9wbGFuZV0s IDAsCiAJCQkJICAgICAgIHNpemVvZiAqcGxhbmUpOwogCQkJfQogCQl9IGVsc2UgewpAQCAtMTY0 Niw3ICsxNjY2LDcgQEAgdm9pZCBpZ3RfZGlzcGxheV9pbml0KGlndF9kaXNwbGF5X3QgKmRpc3Bs YXksIGludCBkcm1fZmQpCiAJCQlwbGFuZSA9ICZwaXBlLT5wbGFuZXNbcF07CiAJCQlwbGFuZS0+ cGlwZSA9IHBpcGU7CiAJCQlwbGFuZS0+aW5kZXggPSBwOwotCQkJcGxhbmUtPmlzX2N1cnNvciA9 IHRydWU7CisJCQlwbGFuZS0+dHlwZSA9IERSTV9QTEFORV9UWVBFX0NVUlNPUjsKIAkJfQogCiAJ CXBpcGUtPm5fcGxhbmVzID0gbl9wbGFuZXM7CkBAIC0xNjU0LDkgKzE2NzQsNiBAQCB2b2lkIGln dF9kaXNwbGF5X2luaXQoaWd0X2Rpc3BsYXlfdCAqZGlzcGxheSwgaW50IGRybV9mZCkKIAkJZm9y X2VhY2hfcGxhbmVfb25fcGlwZShkaXNwbGF5LCBpLCBwbGFuZSkKIAkJCXBsYW5lLT5mYl9jaGFu Z2VkID0gdHJ1ZTsKIAotCQkvKiBtYWtlIHN1cmUgd2UgZG9uJ3Qgb3ZlcmZsb3cgdGhlIHBsYW5l IGFycmF5ICovCi0JCWlndF9hc3NlcnRfbHRlKHBpcGUtPm5fcGxhbmVzLCBJR1RfTUFYX1BMQU5F Uyk7Ci0KIAkJcGlwZS0+bW9kZV9jaGFuZ2VkID0gdHJ1ZTsKIAl9CiAKQEAgLTE3MDksNiArMTcy Niw5IEBAIHN0YXRpYyB2b2lkIGlndF9waXBlX2ZpbmkoaWd0X3BpcGVfdCAqcGlwZSkKIAkJCXBs YW5lLT5kcm1fcGxhbmUgPSBOVUxMOwogCQl9CiAJfQorCisJZnJlZShwaXBlLT5wbGFuZXMpOwor CXBpcGUtPnBsYW5lcyA9IE5VTEw7CiB9CiAKIHN0YXRpYyB2b2lkIGlndF9vdXRwdXRfZmluaShp Z3Rfb3V0cHV0X3QgKm91dHB1dCkKQEAgLTE3OTcsMjAgKzE4MTcsNDEgQEAgc3RhdGljIGlndF9w aXBlX3QgKmlndF9vdXRwdXRfZ2V0X2RyaXZpbmdfcGlwZShpZ3Rfb3V0cHV0X3QgKm91dHB1dCkK IAlyZXR1cm4gJmRpc3BsYXktPnBpcGVzW3BpcGVdOwogfQogCi1zdGF0aWMgaWd0X3BsYW5lX3Qg KmlndF9waXBlX2dldF9wbGFuZShpZ3RfcGlwZV90ICpwaXBlLCBlbnVtIGlndF9wbGFuZSBwbGFu ZSkKK3N0YXRpYyBpZ3RfcGxhbmVfdCAqaWd0X3BpcGVfZ2V0X3BsYW5lKGlndF9waXBlX3QgKnBp cGUsIGludCBwbGFuZV9pZHgpCiB7Ci0JaW50IGlkeDsKKwlpZ3RfYXNzZXJ0X2YocGxhbmVfaWR4 ID49IDAgJiYgcGxhbmVfaWR4IDwgcGlwZS0+bl9wbGFuZXMsCisJCSJWYWxpZCBwaXBlLT5wbGFu ZXMgcGxhbmVfaWR4IG5vdCBmb3VuZCwgcGxhbmVfaWR4PSVkIG5fcGxhbmVzPSVkIiwKKwkJcGxh bmVfaWR4LCBwaXBlLT5uX3BsYW5lcyk7CiAKLQkvKiBDdXJzb3IgcGxhbmUgaXMgYWx3YXlzIHRo ZSBoaWdoZXN0IGluZGV4ICovCi0JaWYgKHBsYW5lID09IElHVF9QTEFORV9DVVJTT1IpCi0JCWlk eCA9IHBpcGUtPm5fcGxhbmVzIC0gMTsKLQllbHNlIHsKLQkJaWd0X2Fzc2VydF9mKHBsYW5lID49 IDAgJiYgcGxhbmUgPCAocGlwZS0+bl9wbGFuZXMpLAotCQkJICAgICAicGxhbmU9JWRcbiIsIHBs YW5lKTsKLQkJaWR4ID0gcGxhbmU7CisJcmV0dXJuICZwaXBlLT5wbGFuZXNbcGxhbmVfaWR4XTsK K30KKworCitpZ3RfcGxhbmVfdCAqaWd0X3BpcGVfZ2V0X3BsYW5lX3R5cGUoaWd0X3BpcGVfdCAq cGlwZSwgaW50IHBsYW5lX3R5cGUpCit7CisJaW50IGksIHBsYW5lX2lkeCA9IC0xOworCisJc3dp dGNoKHBsYW5lX3R5cGUpIHsKKwljYXNlIERSTV9QTEFORV9UWVBFX0NVUlNPUjoKKwkJcGxhbmVf aWR4ID0gcGlwZS0+cGxhbmVfY3Vyc29yOworCQlicmVhazsKKwljYXNlIERSTV9QTEFORV9UWVBF X1BSSU1BUlk6CisJCXBsYW5lX2lkeCA9IHBpcGUtPnBsYW5lX3ByaW1hcnk7CisJCWJyZWFrOwor CWNhc2UgRFJNX1BMQU5FX1RZUEVfT1ZFUkxBWToKKwkJZm9yKGkgPSAwOyBpIDwgcGlwZS0+bl9w bGFuZXM7IGkrKykKKwkJCWlmIChwaXBlLT5wbGFuZXNbaV0udHlwZSA9PSBEUk1fUExBTkVfVFlQ RV9PVkVSTEFZKQorCQkJICAgIHBsYW5lX2lkeCA9IGk7CisJCWJyZWFrOworCWRlZmF1bHQ6CisJ CWJyZWFrOwogCX0KIAotCXJldHVybiAmcGlwZS0+cGxhbmVzW2lkeF07CisJaWd0X2Fzc2VydF9m KHBsYW5lX2lkeCA+PSAwICYmIHBsYW5lX2lkeCA8IHBpcGUtPm5fcGxhbmVzLAorCQkiVmFsaWQg cGlwZS0+cGxhbmVzIGlkeCBub3QgZm91bmQuIHBsYW5lX2lkeD0lZCBwbGFuZV90eXBlPSVkIG5f cGxhbmVzPSVkXG4iLAorCQlwbGFuZV9pZHgsIHBsYW5lX3R5cGUsIHBpcGUtPm5fcGxhbmVzKTsK KworCXJldHVybiAmcGlwZS0+cGxhbmVzW3BsYW5lX2lkeF07CiB9CiAKIHN0YXRpYyBpZ3Rfb3V0 cHV0X3QgKmlndF9waXBlX2dldF9vdXRwdXQoaWd0X3BpcGVfdCAqcGlwZSkKQEAgLTIxNTUsOSAr MjE5Niw5IEBAIHN0YXRpYyBpbnQgaWd0X3BsYW5lX2NvbW1pdChpZ3RfcGxhbmVfdCAqcGxhbmUs CiAJCQkgICAgZW51bSBpZ3RfY29tbWl0X3N0eWxlIHMsCiAJCQkgICAgYm9vbCBmYWlsX29uX2Vy cm9yKQogewotCWlmIChwbGFuZS0+aXNfY3Vyc29yICYmIHMgPT0gQ09NTUlUX0xFR0FDWSkgewor CWlmIChwbGFuZS0+dHlwZSA9PSBEUk1fUExBTkVfVFlQRV9DVVJTT1IgJiYgcyA9PSBDT01NSVRf TEVHQUNZKSB7CiAJCXJldHVybiBpZ3RfY3Vyc29yX2NvbW1pdF9sZWdhY3kocGxhbmUsIHBpcGUs IGZhaWxfb25fZXJyb3IpOwotCX0gZWxzZSBpZiAocGxhbmUtPmlzX3ByaW1hcnkgJiYgcyA9PSBD T01NSVRfTEVHQUNZKSB7CisJfSBlbHNlIGlmIChwbGFuZS0+dHlwZSA9PSBEUk1fUExBTkVfVFlQ RV9QUklNQVJZICYmIHMgPT0gQ09NTUlUX0xFR0FDWSkgewogCQlyZXR1cm4gaWd0X3ByaW1hcnlf cGxhbmVfY29tbWl0X2xlZ2FjeShwbGFuZSwgcGlwZSwKIAkJCQkJCSAgICAgICBmYWlsX29uX2Vy cm9yKTsKIAl9IGVsc2UgewpAQCAtMjM3NCw3ICsyNDE1LDkgQEAgZGlzcGxheV9jb21taXRfY2hh bmdlZChpZ3RfZGlzcGxheV90ICpkaXNwbGF5LCBlbnVtIGlndF9jb21taXRfc3R5bGUgcykKIAkJ CXBsYW5lLT5wb3NpdGlvbl9jaGFuZ2VkID0gZmFsc2U7CiAJCQlwbGFuZS0+c2l6ZV9jaGFuZ2Vk ID0gZmFsc2U7CiAKLQkJCWlmIChzICE9IENPTU1JVF9MRUdBQ1kgfHwgIShwbGFuZS0+aXNfcHJp bWFyeSB8fCBwbGFuZS0+aXNfY3Vyc29yKSkKKwkJCWlmIChzICE9IENPTU1JVF9MRUdBQ1kgfHwK KwkJCSAgICAhKHBsYW5lLT50eXBlID09IERSTV9QTEFORV9UWVBFX1BSSU1BUlkgfHwKKwkJCSAg ICAgIHBsYW5lLT50eXBlID09IERSTV9QTEFORV9UWVBFX0NVUlNPUikpCiAJCQkJcGxhbmUtPnJv dGF0aW9uX2NoYW5nZWQgPSBmYWxzZTsKIAkJfQogCX0KQEAgLTI2NTQsMTQgKzI2OTcsMjQgQEAg dm9pZCBpZ3Rfb3V0cHV0X3NldF9zY2FsaW5nX21vZGUoaWd0X291dHB1dF90ICpvdXRwdXQsIHVp bnQ2NF90IHNjYWxpbmdfbW9kZSkKIAlpZ3RfcmVxdWlyZShvdXRwdXQtPmNvbmZpZy5hdG9taWNf cHJvcHNfY29ubmVjdG9yW0lHVF9DT05ORUNUT1JfU0NBTElOR19NT0RFXSk7CiB9CiAKLWlndF9w bGFuZV90ICppZ3Rfb3V0cHV0X2dldF9wbGFuZShpZ3Rfb3V0cHV0X3QgKm91dHB1dCwgZW51bSBp Z3RfcGxhbmUgcGxhbmUpCitpZ3RfcGxhbmVfdCAqaWd0X291dHB1dF9nZXRfcGxhbmUoaWd0X291 dHB1dF90ICpvdXRwdXQsIGludCBwbGFuZV9pZHgpCit7CisJaWd0X3BpcGVfdCAqcGlwZTsKKwor CXBpcGUgPSBpZ3Rfb3V0cHV0X2dldF9kcml2aW5nX3BpcGUob3V0cHV0KTsKKwlpZ3RfYXNzZXJ0 KHBpcGUpOworCisJcmV0dXJuIGlndF9waXBlX2dldF9wbGFuZShwaXBlLCBwbGFuZV9pZHgpOwor fQorCitpZ3RfcGxhbmVfdCAqaWd0X291dHB1dF9nZXRfcGxhbmVfdHlwZShpZ3Rfb3V0cHV0X3Qg Km91dHB1dCwgaW50IHBsYW5lX3R5cGUpCiB7CiAJaWd0X3BpcGVfdCAqcGlwZTsKIAogCXBpcGUg PSBpZ3Rfb3V0cHV0X2dldF9kcml2aW5nX3BpcGUob3V0cHV0KTsKIAlpZ3RfYXNzZXJ0KHBpcGUp OwogCi0JcmV0dXJuIGlndF9waXBlX2dldF9wbGFuZShwaXBlLCBwbGFuZSk7CisJcmV0dXJuIGln dF9waXBlX2dldF9wbGFuZV90eXBlKHBpcGUsIHBsYW5lX3R5cGUpOwogfQogCiB2b2lkIGlndF9w bGFuZV9zZXRfZmIoaWd0X3BsYW5lX3QgKnBsYW5lLCBzdHJ1Y3QgaWd0X2ZiICpmYikKZGlmZiAt LWdpdCBhL2xpYi9pZ3Rfa21zLmggYi9saWIvaWd0X2ttcy5oCmluZGV4IDg1OWM3OWFhLi5kYzE3 MmVjOSAxMDA2NDQKLS0tIGEvbGliL2lndF9rbXMuaAorKysgYi9saWIvaWd0X2ttcy5oCkBAIC01 NywyNSArNTcsNyBAQCBlbnVtIHBpcGUgewogICAgICAgICBJOTE1X01BWF9QSVBFUwogfTsKIGNv bnN0IGNoYXIgKmttc3Rlc3RfcGlwZV9uYW1lKGVudW0gcGlwZSBwaXBlKTsKLWludCBrbXN0ZXN0 X3BpcGVfdG9faW5kZXgoY2hhciBwaXBlKTsKLQotLyogV2UgbmFtZXNwYWNlIHRoaXMgZW51bSB0 byBub3QgY29uZmxpY3Qgd2l0aCB0aGUgQW5kcm9pZCBpOTE1X2RybS5oICovCi1lbnVtIGlndF9w bGFuZSB7Ci0JSUdUX1BMQU5FXzEgPSAwLAotCUlHVF9QTEFORV9QUklNQVJZID0gSUdUX1BMQU5F XzEsCi0JSUdUX1BMQU5FXzIsCi0JSUdUX1BMQU5FXzMsCi0JSUdUX1BMQU5FXzQsCi0JSUdUX1BM QU5FXzUsCi0JSUdUX1BMQU5FXzYsCi0JSUdUX1BMQU5FXzcsCi0JSUdUX1BMQU5FXzgsCi0JSUdU X1BMQU5FXzksCi0JSUdUX1BMQU5FX0NVUlNPUiwgLyogSUdUX1BMQU5FX0NVUlNPUiBpcyBhbHdh eXMgdGhlIGxhc3QgcGxhbmUuICovCi0JSUdUX01BWF9QTEFORVMsCi19OwotCi1jb25zdCBjaGFy ICprbXN0ZXN0X3BsYW5lX25hbWUoZW51bSBpZ3RfcGxhbmUgcGxhbmUpOworY29uc3QgY2hhciAq a21zdGVzdF9wbGFuZV90eXBlX25hbWUoaW50IHBsYW5lX3R5cGUpOwogCiBlbnVtIHBvcnQgewog ICAgICAgICBQT1JUX0EgPSAwLApAQCAtMjU3LDggKzIzOSw3IEBAIHR5cGVkZWYgc3RydWN0IHsK IAlpZ3RfcGlwZV90ICpwaXBlOwogCWludCBpbmRleDsKIAkvKiBjYXBhYmlsaXRpZXMgKi8KLQl1 bnNpZ25lZCBpbnQgaXNfcHJpbWFyeSAgICAgICA6IDE7Ci0JdW5zaWduZWQgaW50IGlzX2N1cnNv ciAgICAgICAgOiAxOworCWludCB0eXBlOwogCS8qIHN0YXRlIHRyYWNraW5nICovCiAJdW5zaWdu ZWQgaW50IGZiX2NoYW5nZWQgICAgICAgOiAxOwogCXVuc2lnbmVkIGludCBwb3NpdGlvbl9jaGFu Z2VkIDogMTsKQEAgLTI5Myw4ICsyNzQsMTEgQEAgc3RydWN0IGlndF9waXBlIHsKIAlpZ3RfZGlz cGxheV90ICpkaXNwbGF5OwogCWVudW0gcGlwZSBwaXBlOwogCWJvb2wgZW5hYmxlZDsKKwogCWlu dCBuX3BsYW5lczsKLQlpZ3RfcGxhbmVfdCBwbGFuZXNbSUdUX01BWF9QTEFORVNdOworCWludCBw bGFuZV9jdXJzb3I7CisJaW50IHBsYW5lX3ByaW1hcnk7CisJaWd0X3BsYW5lX3QgKnBsYW5lczsK IAogCXVpbnQzMl90IGF0b21pY19wcm9wc19jcnRjW0lHVF9OVU1fQ1JUQ19QUk9QU107CiAKQEAg LTM1NCw3ICszMzgsOSBAQCBkcm1Nb2RlTW9kZUluZm8gKmlndF9vdXRwdXRfZ2V0X21vZGUoaWd0 X291dHB1dF90ICpvdXRwdXQpOwogdm9pZCBpZ3Rfb3V0cHV0X292ZXJyaWRlX21vZGUoaWd0X291 dHB1dF90ICpvdXRwdXQsIGRybU1vZGVNb2RlSW5mbyAqbW9kZSk7CiB2b2lkIGlndF9vdXRwdXRf c2V0X3BpcGUoaWd0X291dHB1dF90ICpvdXRwdXQsIGVudW0gcGlwZSBwaXBlKTsKIHZvaWQgaWd0 X291dHB1dF9zZXRfc2NhbGluZ19tb2RlKGlndF9vdXRwdXRfdCAqb3V0cHV0LCB1aW50NjRfdCBz Y2FsaW5nX21vZGUpOwotaWd0X3BsYW5lX3QgKmlndF9vdXRwdXRfZ2V0X3BsYW5lKGlndF9vdXRw dXRfdCAqb3V0cHV0LCBlbnVtIGlndF9wbGFuZSBwbGFuZSk7CitpZ3RfcGxhbmVfdCAqaWd0X291 dHB1dF9nZXRfcGxhbmUoaWd0X291dHB1dF90ICpvdXRwdXQsIGludCBwbGFuZV9pZHgpOworaWd0 X3BsYW5lX3QgKmlndF9vdXRwdXRfZ2V0X3BsYW5lX3R5cGUoaWd0X291dHB1dF90ICpvdXRwdXQs IGludCBwbGFuZV90eXBlKTsKK2lndF9wbGFuZV90ICppZ3RfcGlwZV9nZXRfcGxhbmVfdHlwZShp Z3RfcGlwZV90ICpwaXBlLCBpbnQgcGxhbmVfdHlwZSk7CiBib29sIGlndF9waXBlX2dldF9wcm9w ZXJ0eShpZ3RfcGlwZV90ICpwaXBlLCBjb25zdCBjaGFyICpuYW1lLAogCQkJICAgdWludDMyX3Qg KnByb3BfaWQsIHVpbnQ2NF90ICp2YWx1ZSwKIAkJCSAgIGRybU1vZGVQcm9wZXJ0eVB0ciAqcHJv cCk7Ci0tIAoyLjExLjAKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9w Lm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVs LWdmeAo=