From mboxrd@z Thu Jan 1 00:00:00 1970 From: Robert Foss Subject: [PATCH i-g-t rfc 03/29] lib/igt_kms: Implement dynamic plane count support Date: Wed, 11 Jan 2017 15:41:38 -0500 Message-ID: <20170111204204.7727-4-robert.foss@collabora.com> References: <20170111204204.7727-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 [46.235.227.227]) by gabe.freedesktop.org (Postfix) with ESMTPS id 6AC6B6EA00 for ; Wed, 11 Jan 2017 20:42:21 +0000 (UTC) In-Reply-To: <20170111204204.7727-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 List-Id: intel-gfx@lists.freedesktop.org SW4gdXBjb21pbmcgZHJtLW1pc2MtbmV4dCBjaGFuZ2VzLCB0aGUgbnVtYmVyIG9mIHBsYW5lcyBw ZXIgcGlwZSBoYXMKYmVlbiBpbmNyZWFzZWQgYXMgbW9yZSB0aGFuIG9uZSBwcmltYXJ5IHBsYW5l IGNhbiBiZSBhc3NvY2lhdGVkIHdpdGgKYSBwaXBlLgoKVGhlIHNpbXBsZSBmaXggZm9yIHRoaXMg d291bGQgYmUgdG8gc2ltcGx5IGJ1bXAgaGFyZGNvZGVkIHZhbHVlIGZvcgpudW1iZXIgb2YgZnJh bWVzIHBlciBwaXBlLgpCdXQgYSBiZXR0ZXIgc29sdXRpb24gd291bGQgYmUgdG8gYWRkIHN1cHBv cnQgZm9yIGR5bmFtaWMgbnVtYmVyIG9mCnBsYW5lcyBwZXIgcGlwZSB0byBpLWctdC4KClNpZ25l ZC1vZmYtYnk6IFJvYmVydCBGb3NzIDxyb2JlcnQuZm9zc0Bjb2xsYWJvcmEuY29tPgotLS0KIGxp Yi9pZ3Rfa21zLmMgfCAxNTcgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr LS0tLS0tLS0tLS0tLS0tLS0tLQogbGliL2lndF9rbXMuaCB8ICAzMiArKysrLS0tLS0tLS0KIDIg ZmlsZXMgY2hhbmdlZCwgMTE1IGluc2VydGlvbnMoKyksIDc0IGRlbGV0aW9ucygtKQoKZGlmZiAt LWdpdCBhL2xpYi9pZ3Rfa21zLmMgYi9saWIvaWd0X2ttcy5jCmluZGV4IDBiODg1MWYyLi4yOTRh ODExMyAxMDA2NDQKLS0tIGEvbGliL2lndF9rbXMuYworKysgYi9saWIvaWd0X2ttcy5jCkBAIC0z MjksMjQgKzMyOSwxNyBAQCBjb25zdCBjaGFyICprbXN0ZXN0X3BpcGVfbmFtZShlbnVtIHBpcGUg cGlwZSkKICAqCiAgKiBSZXR1cm5zOiBTdHJpbmcgcmVwcmVzbnRpbmcgQHBpcGUsIGUuZy4gInBs YW5lMSIuCiAgKi8KLWNvbnN0IGNoYXIgKmttc3Rlc3RfcGxhbmVfbmFtZShlbnVtIGlndF9wbGFu ZSBwbGFuZSkKK2NvbnN0IGNoYXIgKmttc3Rlc3RfcGxhbmVfdHlwZV9uYW1lKGludCBwbGFuZV90 eXBlKQogewogCXN0YXRpYyBjb25zdCBjaGFyICpuYW1lc1tdID0gewotCQlbSUdUX1BMQU5FXzFd ID0gInBsYW5lMSIsCi0JCVtJR1RfUExBTkVfMl0gPSAicGxhbmUyIiwKLQkJW0lHVF9QTEFORV8z XSA9ICJwbGFuZTMiLAotCQlbSUdUX1BMQU5FXzRdID0gInBsYW5lNCIsCi0JCVtJR1RfUExBTkVf NV0gPSAicGxhbmU1IiwKLQkJW0lHVF9QTEFORV82XSA9ICJwbGFuZTYiLAotCQlbSUdUX1BMQU5F XzddID0gInBsYW5lNyIsCi0JCVtJR1RfUExBTkVfOF0gPSAicGxhbmU4IiwKLQkJW0lHVF9QTEFO RV85XSA9ICJwbGFuZTkiLAotCQlbSUdUX1BMQU5FX0NVUlNPUl0gPSAiY3Vyc29yIiwKKwkJW0RS TV9QTEFORV9UWVBFX09WRVJMQVldID0gIm92ZXJsYXkiLAorCQlbRFJNX1BMQU5FX1RZUEVfUFJJ TUFSWV0gPSAicHJpbWFyeSIsCisJCVtEUk1fUExBTkVfVFlQRV9DVVJTT1JdID0gImN1cnNvciIs CiAJfTsKIAotCWlndF9hc3NlcnQocGxhbmUgPCBBUlJBWV9TSVpFKG5hbWVzKSAmJiBuYW1lc1tw bGFuZV0pOworCWlndF9hc3NlcnQocGxhbmVfdHlwZSA8IEFSUkFZX1NJWkUobmFtZXMpICYmIG5h bWVzW3BsYW5lX3R5cGVdKTsKIAotCXJldHVybiBuYW1lc1twbGFuZV07CisJcmV0dXJuIG5hbWVz W3BsYW5lX3R5cGVdOwogfQogCiBzdGF0aWMgY29uc3QgY2hhciAqbW9kZV9zdGVyZW9fbmFtZShj b25zdCBkcm1Nb2RlTW9kZUluZm8gKm1vZGUpCkBAIC0xMzU1LDE0ICsxMzQ4LDE3IEBAIHZvaWQg aWd0X2Rpc3BsYXlfaW5pdChpZ3RfZGlzcGxheV90ICpkaXNwbGF5LCBpbnQgZHJtX2ZkKQogCWZv ciAoaSA9IDA7IGkgPCBkaXNwbGF5LT5uX3BpcGVzOyBpKyspIHsKIAkJaWd0X3BpcGVfdCAqcGlw ZSA9ICZkaXNwbGF5LT5waXBlc1tpXTsKIAkJaWd0X3BsYW5lX3QgKnBsYW5lOwotCQlpbnQgcCA9 IElHVF9QTEFORV8yOworCQlpbnQgcCA9IDE7CiAJCWludCBqLCB0eXBlOwotCQl1aW50OF90IG5f cGxhbmVzID0gMDsKKwkJdWludDhfdCBsYXN0X3BsYW5lID0gMCwgbl9wbGFuZXMgPSAwOwogCQl1 aW50NjRfdCBwcm9wX3ZhbHVlOwogCiAJCXBpcGUtPmNydGNfaWQgPSByZXNvdXJjZXMtPmNydGNz W2ldOwogCQlwaXBlLT5kaXNwbGF5ID0gZGlzcGxheTsKIAkJcGlwZS0+cGlwZSA9IGk7CisJCXBp cGUtPnBsYW5lX2N1cnNvciA9IC0xOworCQlwaXBlLT5wbGFuZV9wcmltYXJ5ID0gLTE7CisJCXBp cGUtPnBsYW5lcyA9IE5VTEw7CiAKIAkJZ2V0X2NydGNfcHJvcGVydHkoZGlzcGxheS0+ZHJtX2Zk LCBwaXBlLT5jcnRjX2lkLAogCQkJCSAgICAiYmFja2dyb3VuZF9jb2xvciIsCkBAIC0xMzg4LDYg KzEzODQsMjcgQEAgdm9pZCBpZ3RfZGlzcGxheV9pbml0KGlndF9kaXNwbGF5X3QgKmRpc3BsYXks IGludCBkcm1fZmQpCiAKIAkJaWd0X2F0b21pY19maWxsX3BpcGVfcHJvcHMoZGlzcGxheSwgcGlw ZSwgSUdUX05VTV9DUlRDX1BST1BTLCBpZ3RfY3J0Y19wcm9wX25hbWVzKTsKIAorCQkvKiBjb3Vu dCBudW1iZXIgb2YgdmFsaWQgcGxhbmVzICovCisJCWZvciAoaiA9IDA7IGogPCBwbGFuZV9yZXNv dXJjZXMtPmNvdW50X3BsYW5lczsgaisrKSB7CisJCQlkcm1Nb2RlUGxhbmUgKmRybV9wbGFuZTsK KworCQkJZHJtX3BsYW5lID0gZHJtTW9kZUdldFBsYW5lKGRpc3BsYXktPmRybV9mZCwKKwkJCQkJ CSAgICBwbGFuZV9yZXNvdXJjZXMtPnBsYW5lc1tqXSk7CisJCQlpZ3RfYXNzZXJ0KGRybV9wbGFu ZSk7CisKKwkJCWlmICghKGRybV9wbGFuZS0+cG9zc2libGVfY3J0Y3MgJiAoMSA8PCBpKSkpIHsK KwkJCQlkcm1Nb2RlRnJlZVBsYW5lKGRybV9wbGFuZSk7CisJCQkJY29udGludWU7CisgICAgICAg ICAgICB9CisKKwkJICAgIG5fcGxhbmVzKys7CisJCX0KKworCQlpZ3RfYXNzZXJ0X2x0ZSgwLCBu X3BsYW5lcyk7CisJCXBpcGUtPnBsYW5lcyA9IGNhbGxvYyhzaXplb2YoaWd0X3BsYW5lX3QpLCBu X3BsYW5lcyk7CisJCWlndF9hc3NlcnRfZihwaXBlLT5wbGFuZXMgIT0gTlVMTCwgIkZhaWxlZCB0 byBhbGxvY2F0ZSBtZW1vcnkgZm9yICVkIHBsYW5lc1xuIiwgbl9wbGFuZXMpOworCQlsYXN0X3Bs YW5lID0gbl9wbGFuZXMgLSAxOworCiAJCS8qIGFkZCB0aGUgcGxhbmVzIHRoYXQgY2FuIGJlIHVz ZWQgd2l0aCB0aGF0IHBpcGUgKi8KIAkJZm9yIChqID0gMDsgaiA8IHBsYW5lX3Jlc291cmNlcy0+ Y291bnRfcGxhbmVzOyBqKyspIHsKIAkJCWRybU1vZGVQbGFuZSAqZHJtX3BsYW5lOwpAQCAtMTQw NSwyMSArMTQyMiwyNCBAQCB2b2lkIGlndF9kaXNwbGF5X2luaXQoaWd0X2Rpc3BsYXlfdCAqZGlz cGxheSwgaW50IGRybV9mZCkKIAkJCQkJCSAgcGxhbmVfcmVzb3VyY2VzLT5wbGFuZXNbal0pOwog CQkJc3dpdGNoICh0eXBlKSB7CiAJCQljYXNlIERSTV9QTEFORV9UWVBFX1BSSU1BUlk6Ci0JCQkJ cGxhbmUgPSAmcGlwZS0+cGxhbmVzW0lHVF9QTEFORV9QUklNQVJZXTsKLQkJCQlwbGFuZS0+aXNf cHJpbWFyeSA9IDE7Ci0JCQkJcGxhbmUtPmluZGV4ID0gSUdUX1BMQU5FX1BSSU1BUlk7CisJCQkJ aWYgKHBpcGUtPnBsYW5lX3ByaW1hcnkgPT0gLTEpIHsKKwkJCQkJcGxhbmUgPSAmcGlwZS0+cGxh bmVzWzBdOworCQkJCQlwbGFuZS0+aW5kZXggPSAwOworCQkJCQlwaXBlLT5wbGFuZV9wcmltYXJ5 ID0gMDsKKwkJCQl9IGVsc2UgeworCQkJCQlwbGFuZSA9ICZwaXBlLT5wbGFuZXNbcF07CisJCQkJ CXBsYW5lLT5pbmRleCA9IHArKzsKKwkJCQl9CiAJCQkJYnJlYWs7CiAJCQljYXNlIERSTV9QTEFO RV9UWVBFX0NVUlNPUjoKLQkJCQkvKgotCQkJCSAqIEN1cnNvciBzaG91bGQgYmUgdGhlIGhpZ2hl c3QgaW5kZXggaW4gb3VyCi0JCQkJICogaW50ZXJuYWwgbGlzdCwgYnV0IHdlIGRvbid0IGtub3cg d2hhdCB0aGF0Ci0JCQkJICogaXMgeWV0LiAgSnVzdCBzdGljayBpdCBpbiB0aGUgbGFzdCBzbG90 Ci0JCQkJICogZm9yIG5vdyBhbmQgd2UnbGwgbW92ZSBpdCBsYXRlciwgaWYKLQkJCQkgKiBuZWNl c3NhcnkuCi0JCQkJICovCi0JCQkJcGxhbmUgPSAmcGlwZS0+cGxhbmVzW0lHVF9QTEFORV9DVVJT T1JdOwotCQkJCXBsYW5lLT5pc19jdXJzb3IgPSAxOwotCQkJCXBsYW5lLT5pbmRleCA9IElHVF9Q TEFORV9DVVJTT1I7CisJCQkJaWYgKHBpcGUtPnBsYW5lX2N1cnNvciA9PSAtMSkgeworCQkJCQlw bGFuZSA9ICZwaXBlLT5wbGFuZXNbbGFzdF9wbGFuZV07CisJCQkJCXBsYW5lLT5pbmRleCA9IGxh c3RfcGxhbmU7CisJCQkJCXBpcGUtPnBsYW5lX2N1cnNvciA9IGxhc3RfcGxhbmU7CisJCQkJfSBl bHNlIHsKKwkJCQkJcGxhbmUgPSAmcGlwZS0+cGxhbmVzW3BdOworCQkJCQlwbGFuZS0+aW5kZXgg PSBwKys7CisJCQkJfQogCQkJCWRpc3BsYXktPmhhc19jdXJzb3JfcGxhbmUgPSB0cnVlOwogCQkJ CWJyZWFrOwogCQkJZGVmYXVsdDoKQEAgLTE0MjgsNyArMTQ0OCw3IEBAIHZvaWQgaWd0X2Rpc3Bs YXlfaW5pdChpZ3RfZGlzcGxheV90ICpkaXNwbGF5LCBpbnQgZHJtX2ZkKQogCQkJCWJyZWFrOwog CQkJfQogCi0JCQluX3BsYW5lcysrOworCQkJcGxhbmUtPnR5cGUgPSB0eXBlOwogCQkJcGxhbmUt PnBpcGUgPSBwaXBlOwogCQkJcGxhbmUtPmRybV9wbGFuZSA9IGRybV9wbGFuZTsKIApAQCAtMTQ0 OSw3ICsxNDY5LDcgQEAgdm9pZCBpZ3RfZGlzcGxheV9pbml0KGlndF9kaXNwbGF5X3QgKmRpc3Bs YXksIGludCBkcm1fZmQpCiAJCSAqIEF0IHRoZSBiYXJlIG1pbmltdW0sIHdlIHNob3VsZCBleHBl Y3QgdG8gaGF2ZSBhIHByaW1hcnkKIAkJICogcGxhbmUKIAkJICovCi0JCWlndF9hc3NlcnQocGlw ZS0+cGxhbmVzW0lHVF9QTEFORV9QUklNQVJZXS5kcm1fcGxhbmUpOworCQlpZ3RfYXNzZXJ0KHBp cGUtPnBsYW5lc1twaXBlLT5wbGFuZV9wcmltYXJ5XS5kcm1fcGxhbmUpOwogCiAJCWlmIChkaXNw bGF5LT5oYXNfY3Vyc29yX3BsYW5lKSB7CiAJCQkvKgpAQCAtMTQ1NywxMSArMTQ3NywxMSBAQCB2 b2lkIGlndF9kaXNwbGF5X2luaXQoaWd0X2Rpc3BsYXlfdCAqZGlzcGxheSwgaW50IGRybV9mZCkK IAkJCSAqIG9ubHkgMSBzcHJpdGUsIHRoYXQncyB0aGUgd3Jvbmcgc2xvdCBhbmQgd2UgbmVlZCB0 bwogCQkJICogbW92ZSBpdCBkb3duLgogCQkJICovCi0JCQlpZiAocCAhPSBJR1RfUExBTkVfQ1VS U09SKSB7CisJCQlpZiAocCAhPSBsYXN0X3BsYW5lKSB7CiAJCQkJcGlwZS0+cGxhbmVzW3BdID0K LQkJCQkJcGlwZS0+cGxhbmVzW0lHVF9QTEFORV9DVVJTT1JdOworCQkJCQlwaXBlLT5wbGFuZXNb bGFzdF9wbGFuZV07CiAJCQkJcGlwZS0+cGxhbmVzW3BdLmluZGV4ID0gcDsKLQkJCQltZW1zZXQo JnBpcGUtPnBsYW5lc1tJR1RfUExBTkVfQ1VSU09SXSwgMCwKKwkJCQltZW1zZXQoJnBpcGUtPnBs YW5lc1tsYXN0X3BsYW5lXSwgMCwKIAkJCQkgICAgICAgc2l6ZW9mICpwbGFuZSk7CiAJCQl9CiAJ CX0gZWxzZSB7CkBAIC0xNDY5LDcgKzE0ODksNyBAQCB2b2lkIGlndF9kaXNwbGF5X2luaXQoaWd0 X2Rpc3BsYXlfdCAqZGlzcGxheSwgaW50IGRybV9mZCkKIAkJCXBsYW5lID0gJnBpcGUtPnBsYW5l c1twXTsKIAkJCXBsYW5lLT5waXBlID0gcGlwZTsKIAkJCXBsYW5lLT5pbmRleCA9IHA7Ci0JCQlw bGFuZS0+aXNfY3Vyc29yID0gdHJ1ZTsKKwkJCXBsYW5lLT50eXBlID0gRFJNX1BMQU5FX1RZUEVf Q1VSU09SOwogCQl9CiAKIAkJcGlwZS0+bl9wbGFuZXMgPSBuX3BsYW5lczsKQEAgLTE0NzcsOSAr MTQ5Nyw2IEBAIHZvaWQgaWd0X2Rpc3BsYXlfaW5pdChpZ3RfZGlzcGxheV90ICpkaXNwbGF5LCBp bnQgZHJtX2ZkKQogCQlmb3JfZWFjaF9wbGFuZV9vbl9waXBlKGRpc3BsYXksIGksIHBsYW5lKQog CQkJcGxhbmUtPmZiX2NoYW5nZWQgPSB0cnVlOwogCi0JCS8qIG1ha2Ugc3VyZSB3ZSBkb24ndCBv dmVyZmxvdyB0aGUgcGxhbmUgYXJyYXkgKi8KLQkJaWd0X2Fzc2VydF9sdGUocGlwZS0+bl9wbGFu ZXMsIElHVF9NQVhfUExBTkVTKTsKLQogCQlwaXBlLT5tb2RlX2NoYW5nZWQgPSB0cnVlOwogCX0K IApAQCAtMTUzMiw2ICsxNTQ5LDkgQEAgc3RhdGljIHZvaWQgaWd0X3BpcGVfZmluaShpZ3RfcGlw ZV90ICpwaXBlKQogCQkJcGxhbmUtPmRybV9wbGFuZSA9IE5VTEw7CiAJCX0KIAl9CisKKwlmcmVl KHBpcGUtPnBsYW5lcyk7CisJcGlwZS0+cGxhbmVzID0gTlVMTDsKIH0KIAogc3RhdGljIHZvaWQg aWd0X291dHB1dF9maW5pKGlndF9vdXRwdXRfdCAqb3V0cHV0KQpAQCAtMTYxOSwyMCArMTYzOSw0 MSBAQCBzdGF0aWMgaWd0X3BpcGVfdCAqaWd0X291dHB1dF9nZXRfZHJpdmluZ19waXBlKGlndF9v dXRwdXRfdCAqb3V0cHV0KQogCXJldHVybiAmZGlzcGxheS0+cGlwZXNbcGlwZV07CiB9CiAKLXN0 YXRpYyBpZ3RfcGxhbmVfdCAqaWd0X3BpcGVfZ2V0X3BsYW5lKGlndF9waXBlX3QgKnBpcGUsIGVu dW0gaWd0X3BsYW5lIHBsYW5lKQorc3RhdGljIGlndF9wbGFuZV90ICppZ3RfcGlwZV9nZXRfcGxh bmUoaWd0X3BpcGVfdCAqcGlwZSwgaW50IHBsYW5lX2lkeCkKIHsKLQlpbnQgaWR4OworCWlndF9h c3NlcnRfZihwbGFuZV9pZHggPj0gMCAmJiBwbGFuZV9pZHggPCBwaXBlLT5uX3BsYW5lcywKKwkJ IlZhbGlkIHBpcGUtPnBsYW5lcyBwbGFuZV9pZHggbm90IGZvdW5kLCBwbGFuZV9pZHg9JWQgbl9w bGFuZXM9JWQiLAorCQlwbGFuZV9pZHgsIHBpcGUtPm5fcGxhbmVzKTsKIAotCS8qIEN1cnNvciBw bGFuZSBpcyBhbHdheXMgdGhlIGhpZ2hlc3QgaW5kZXggKi8KLQlpZiAocGxhbmUgPT0gSUdUX1BM QU5FX0NVUlNPUikKLQkJaWR4ID0gcGlwZS0+bl9wbGFuZXMgLSAxOwotCWVsc2UgewotCQlpZ3Rf YXNzZXJ0X2YocGxhbmUgPj0gMCAmJiBwbGFuZSA8IChwaXBlLT5uX3BsYW5lcyksCi0JCQkgICAg ICJwbGFuZT0lZFxuIiwgcGxhbmUpOwotCQlpZHggPSBwbGFuZTsKKwlyZXR1cm4gJnBpcGUtPnBs YW5lc1twbGFuZV9pZHhdOworfQorCisKK2lndF9wbGFuZV90ICppZ3RfcGlwZV9nZXRfcGxhbmVf dHlwZShpZ3RfcGlwZV90ICpwaXBlLCBpbnQgcGxhbmVfdHlwZSkKK3sKKwlpbnQgaSwgcGxhbmVf aWR4ID0gLTE7CisKKwlzd2l0Y2gocGxhbmVfdHlwZSkgeworCWNhc2UgRFJNX1BMQU5FX1RZUEVf Q1VSU09SOgorCQlwbGFuZV9pZHggPSBwaXBlLT5wbGFuZV9jdXJzb3I7CisJCWJyZWFrOworCWNh c2UgRFJNX1BMQU5FX1RZUEVfUFJJTUFSWToKKwkJcGxhbmVfaWR4ID0gcGlwZS0+cGxhbmVfcHJp bWFyeTsKKwkJYnJlYWs7CisJY2FzZSBEUk1fUExBTkVfVFlQRV9PVkVSTEFZOgorCQlmb3IoaSA9 IDA7IGkgPCBwaXBlLT5uX3BsYW5lczsgaSsrKQorCQkJaWYgKHBpcGUtPnBsYW5lc1tpXS50eXBl ID09IERSTV9QTEFORV9UWVBFX09WRVJMQVkpCisJCQkgICAgcGxhbmVfaWR4ID0gaTsKKwkJYnJl YWs7CisJZGVmYXVsdDoKKwkJYnJlYWs7CiAJfQogCi0JcmV0dXJuICZwaXBlLT5wbGFuZXNbaWR4 XTsKKwlpZ3RfYXNzZXJ0X2YocGxhbmVfaWR4ID49IDAgJiYgcGxhbmVfaWR4IDwgcGlwZS0+bl9w bGFuZXMsCisJCSJWYWxpZCBwaXBlLT5wbGFuZXMgaWR4IG5vdCBmb3VuZC4gcGxhbmVfaWR4PSVk IHBsYW5lX3R5cGU9JWQgbl9wbGFuZXM9JWRcbiIsCisJCXBsYW5lX2lkeCwgcGxhbmVfdHlwZSwg cGlwZS0+bl9wbGFuZXMpOworCisJcmV0dXJuICZwaXBlLT5wbGFuZXNbcGxhbmVfaWR4XTsKIH0K IAogc3RhdGljIGlndF9vdXRwdXRfdCAqaWd0X3BpcGVfZ2V0X291dHB1dChpZ3RfcGlwZV90ICpw aXBlKQpAQCAtMTk3Nyw5ICsyMDE4LDkgQEAgc3RhdGljIGludCBpZ3RfcGxhbmVfY29tbWl0KGln dF9wbGFuZV90ICpwbGFuZSwKIAkJCSAgICBlbnVtIGlndF9jb21taXRfc3R5bGUgcywKIAkJCSAg ICBib29sIGZhaWxfb25fZXJyb3IpCiB7Ci0JaWYgKHBsYW5lLT5pc19jdXJzb3IgJiYgcyA9PSBD T01NSVRfTEVHQUNZKSB7CisJaWYgKHBsYW5lLT50eXBlID09IERSTV9QTEFORV9UWVBFX0NVUlNP UiAmJiBzID09IENPTU1JVF9MRUdBQ1kpIHsKIAkJcmV0dXJuIGlndF9jdXJzb3JfY29tbWl0X2xl Z2FjeShwbGFuZSwgcGlwZSwgZmFpbF9vbl9lcnJvcik7Ci0JfSBlbHNlIGlmIChwbGFuZS0+aXNf cHJpbWFyeSAmJiBzID09IENPTU1JVF9MRUdBQ1kpIHsKKwl9IGVsc2UgaWYgKHBsYW5lLT50eXBl ID09IERSTV9QTEFORV9UWVBFX1BSSU1BUlkgJiYgcyA9PSBDT01NSVRfTEVHQUNZKSB7CiAJCXJl dHVybiBpZ3RfcHJpbWFyeV9wbGFuZV9jb21taXRfbGVnYWN5KHBsYW5lLCBwaXBlLAogCQkJCQkJ ICAgICAgIGZhaWxfb25fZXJyb3IpOwogCX0gZWxzZSB7CkBAIC0yMTk2LDcgKzIyMzcsOSBAQCBk aXNwbGF5X2NvbW1pdF9jaGFuZ2VkKGlndF9kaXNwbGF5X3QgKmRpc3BsYXksIGVudW0gaWd0X2Nv bW1pdF9zdHlsZSBzKQogCQkJcGxhbmUtPnBvc2l0aW9uX2NoYW5nZWQgPSBmYWxzZTsKIAkJCXBs YW5lLT5zaXplX2NoYW5nZWQgPSBmYWxzZTsKIAotCQkJaWYgKHMgIT0gQ09NTUlUX0xFR0FDWSB8 fCAhKHBsYW5lLT5pc19wcmltYXJ5IHx8IHBsYW5lLT5pc19jdXJzb3IpKQorCQkJaWYgKHMgIT0g Q09NTUlUX0xFR0FDWSB8fAorCQkJICAgICEocGxhbmUtPnR5cGUgPT0gRFJNX1BMQU5FX1RZUEVf UFJJTUFSWSB8fAorCQkJICAgICAgcGxhbmUtPnR5cGUgPT0gRFJNX1BMQU5FX1RZUEVfQ1VSU09S KSkKIAkJCQlwbGFuZS0+cm90YXRpb25fY2hhbmdlZCA9IGZhbHNlOwogCQl9CiAJfQpAQCAtMjQ3 NiwxNCArMjUxOSwyNCBAQCB2b2lkIGlndF9vdXRwdXRfc2V0X3NjYWxpbmdfbW9kZShpZ3Rfb3V0 cHV0X3QgKm91dHB1dCwgdWludDY0X3Qgc2NhbGluZ19tb2RlKQogCWlndF9yZXF1aXJlKG91dHB1 dC0+Y29uZmlnLmF0b21pY19wcm9wc19jb25uZWN0b3JbSUdUX0NPTk5FQ1RPUl9TQ0FMSU5HX01P REVdKTsKIH0KIAotaWd0X3BsYW5lX3QgKmlndF9vdXRwdXRfZ2V0X3BsYW5lKGlndF9vdXRwdXRf dCAqb3V0cHV0LCBlbnVtIGlndF9wbGFuZSBwbGFuZSkKK2lndF9wbGFuZV90ICppZ3Rfb3V0cHV0 X2dldF9wbGFuZShpZ3Rfb3V0cHV0X3QgKm91dHB1dCwgaW50IHBsYW5lX2lkeCkKK3sKKwlpZ3Rf cGlwZV90ICpwaXBlOworCisJcGlwZSA9IGlndF9vdXRwdXRfZ2V0X2RyaXZpbmdfcGlwZShvdXRw dXQpOworCWlndF9hc3NlcnQocGlwZSk7CisKKwlyZXR1cm4gaWd0X3BpcGVfZ2V0X3BsYW5lKHBp cGUsIHBsYW5lX2lkeCk7Cit9CisKK2lndF9wbGFuZV90ICppZ3Rfb3V0cHV0X2dldF9wbGFuZV90 eXBlKGlndF9vdXRwdXRfdCAqb3V0cHV0LCBpbnQgcGxhbmVfdHlwZSkKIHsKIAlpZ3RfcGlwZV90 ICpwaXBlOwogCiAJcGlwZSA9IGlndF9vdXRwdXRfZ2V0X2RyaXZpbmdfcGlwZShvdXRwdXQpOwog CWlndF9hc3NlcnQocGlwZSk7CiAKLQlyZXR1cm4gaWd0X3BpcGVfZ2V0X3BsYW5lKHBpcGUsIHBs YW5lKTsKKwlyZXR1cm4gaWd0X3BpcGVfZ2V0X3BsYW5lX3R5cGUocGlwZSwgcGxhbmVfdHlwZSk7 CiB9CiAKIHZvaWQgaWd0X3BsYW5lX3NldF9mYihpZ3RfcGxhbmVfdCAqcGxhbmUsIHN0cnVjdCBp Z3RfZmIgKmZiKQpkaWZmIC0tZ2l0IGEvbGliL2lndF9rbXMuaCBiL2xpYi9pZ3Rfa21zLmgKaW5k ZXggNTIzNGY2YzEuLjA4ODEyNDYxIDEwMDY0NAotLS0gYS9saWIvaWd0X2ttcy5oCisrKyBiL2xp Yi9pZ3Rfa21zLmgKQEAgLTU3LDI0ICs1Nyw3IEBAIGVudW0gcGlwZSB7CiAgICAgICAgIEk5MTVf TUFYX1BJUEVTCiB9OwogY29uc3QgY2hhciAqa21zdGVzdF9waXBlX25hbWUoZW51bSBwaXBlIHBp cGUpOwotCi0vKiBXZSBuYW1lc3BhY2UgdGhpcyBlbnVtIHRvIG5vdCBjb25mbGljdCB3aXRoIHRo ZSBBbmRyb2lkIGk5MTVfZHJtLmggKi8KLWVudW0gaWd0X3BsYW5lIHsKLQlJR1RfUExBTkVfMSA9 IDAsCi0JSUdUX1BMQU5FX1BSSU1BUlkgPSBJR1RfUExBTkVfMSwKLQlJR1RfUExBTkVfMiwKLQlJ R1RfUExBTkVfMywKLQlJR1RfUExBTkVfNCwKLQlJR1RfUExBTkVfNSwKLQlJR1RfUExBTkVfNiwK LQlJR1RfUExBTkVfNywKLQlJR1RfUExBTkVfOCwKLQlJR1RfUExBTkVfOSwKLQlJR1RfUExBTkVf Q1VSU09SLCAvKiBJR1RfUExBTkVfQ1VSU09SIGlzIGFsd2F5cyB0aGUgbGFzdCBwbGFuZS4gKi8K LQlJR1RfTUFYX1BMQU5FUywKLX07Ci0KLWNvbnN0IGNoYXIgKmttc3Rlc3RfcGxhbmVfbmFtZShl bnVtIGlndF9wbGFuZSBwbGFuZSk7Citjb25zdCBjaGFyICprbXN0ZXN0X3BsYW5lX3R5cGVfbmFt ZShpbnQgcGxhbmVfdHlwZSk7CiAKIGVudW0gcG9ydCB7CiAgICAgICAgIFBPUlRfQSA9IDAsCkBA IC0yMzIsOCArMjE1LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgewogCWlndF9waXBlX3QgKnBpcGU7CiAJ aW50IGluZGV4OwogCS8qIGNhcGFiaWxpdGllcyAqLwotCXVuc2lnbmVkIGludCBpc19wcmltYXJ5 ICAgICAgIDogMTsKLQl1bnNpZ25lZCBpbnQgaXNfY3Vyc29yICAgICAgICA6IDE7CisJaW50IHR5 cGU7CiAJLyogc3RhdGUgdHJhY2tpbmcgKi8KIAl1bnNpZ25lZCBpbnQgZmJfY2hhbmdlZCAgICAg ICA6IDE7CiAJdW5zaWduZWQgaW50IHBvc2l0aW9uX2NoYW5nZWQgOiAxOwpAQCAtMjY4LDggKzI1 MCwxMSBAQCBzdHJ1Y3QgaWd0X3BpcGUgewogCWlndF9kaXNwbGF5X3QgKmRpc3BsYXk7CiAJZW51 bSBwaXBlIHBpcGU7CiAJYm9vbCBlbmFibGVkOworCiAJaW50IG5fcGxhbmVzOwotCWlndF9wbGFu ZV90IHBsYW5lc1tJR1RfTUFYX1BMQU5FU107CisJaW50IHBsYW5lX2N1cnNvcjsKKwlpbnQgcGxh bmVfcHJpbWFyeTsKKwlpZ3RfcGxhbmVfdCAqcGxhbmVzOwogCiAJdWludDMyX3QgYXRvbWljX3By b3BzX2NydGNbSUdUX05VTV9DUlRDX1BST1BTXTsKIApAQCAtMzI5LDcgKzMxNCwxMCBAQCBkcm1N b2RlTW9kZUluZm8gKmlndF9vdXRwdXRfZ2V0X21vZGUoaWd0X291dHB1dF90ICpvdXRwdXQpOwog dm9pZCBpZ3Rfb3V0cHV0X292ZXJyaWRlX21vZGUoaWd0X291dHB1dF90ICpvdXRwdXQsIGRybU1v ZGVNb2RlSW5mbyAqbW9kZSk7CiB2b2lkIGlndF9vdXRwdXRfc2V0X3BpcGUoaWd0X291dHB1dF90 ICpvdXRwdXQsIGVudW0gcGlwZSBwaXBlKTsKIHZvaWQgaWd0X291dHB1dF9zZXRfc2NhbGluZ19t b2RlKGlndF9vdXRwdXRfdCAqb3V0cHV0LCB1aW50NjRfdCBzY2FsaW5nX21vZGUpOwotaWd0X3Bs YW5lX3QgKmlndF9vdXRwdXRfZ2V0X3BsYW5lKGlndF9vdXRwdXRfdCAqb3V0cHV0LCBlbnVtIGln dF9wbGFuZSBwbGFuZSk7CitpZ3RfcGxhbmVfdCAqaWd0X291dHB1dF9nZXRfcGxhbmUoaWd0X291 dHB1dF90ICpvdXRwdXQsIGludCBwbGFuZV9pZHgpOworaWd0X3BsYW5lX3QgKmlndF9vdXRwdXRf Z2V0X3BsYW5lX3R5cGUoaWd0X291dHB1dF90ICpvdXRwdXQsIGludCBwbGFuZV90eXBlKTsKK2lu dCBpZ3RfcGlwZV9nZXRfbGFzdF9vdXRfZmVuY2UoaWd0X3BpcGVfdCAqcGlwZSk7CitpZ3RfcGxh bmVfdCAqaWd0X3BpcGVfZ2V0X3BsYW5lX3R5cGUoaWd0X3BpcGVfdCAqcGlwZSwgaW50IHBsYW5l X3R5cGUpOwogYm9vbCBpZ3RfcGlwZV9nZXRfcHJvcGVydHkoaWd0X3BpcGVfdCAqcGlwZSwgY29u c3QgY2hhciAqbmFtZSwKIAkJCSAgIHVpbnQzMl90ICpwcm9wX2lkLCB1aW50NjRfdCAqdmFsdWUs CiAJCQkgICBkcm1Nb2RlUHJvcGVydHlQdHIgKnByb3ApOwotLSAKMi4xMS4wCgpfX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBs aXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVz a3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK