From mboxrd@z Thu Jan 1 00:00:00 1970 From: Robert Foss Subject: [PATCH i-g-t v2 04/33] lib/igt_kms: Implement dynamic plane count support Date: Tue, 24 Jan 2017 18:33:31 -0500 Message-ID: <20170124233400.5053-5-robert.foss@collabora.com> References: <20170124233400.5053-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 C52146E889 for ; Tue, 24 Jan 2017 23:34:35 +0000 (UTC) In-Reply-To: <20170124233400.5053-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 , Petri Latvala List-Id: intel-gfx@lists.freedesktop.org SW4gdXBjb21pbmcgZHJtLW1pc2MtbmV4dCBjaGFuZ2VzLCB0aGUgbnVtYmVyIG9mIHBsYW5lcyBw ZXIgcGlwZSBoYXMKYmVlbiBpbmNyZWFzZWQgYXMgbW9yZSB0aGFuIG9uZSBwcmltYXJ5IHBsYW5l IGNhbiBiZSBhc3NvY2lhdGVkIHdpdGgKYSBwaXBlLgoKVGhlIHNpbXBsZSBmaXggZm9yIHRoaXMg d291bGQgYmUgdG8gc2ltcGx5IGJ1bXAgaGFyZGNvZGVkIHZhbHVlIGZvcgpudW1iZXIgb2YgZnJh bWVzIHBlciBwaXBlLgpCdXQgYSBiZXR0ZXIgc29sdXRpb24gd291bGQgYmUgdG8gYWRkIHN1cHBv cnQgZm9yIGR5bmFtaWMgbnVtYmVyIG9mCnBsYW5lcyBwZXIgcGlwZSB0byBpLWctdC4KClNpZ25l ZC1vZmYtYnk6IFJvYmVydCBGb3NzIDxyb2JlcnQuZm9zc0Bjb2xsYWJvcmEuY29tPgotLS0KIGxp Yi9pZ3Rfa21zLmMgfCAxNjAgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKystLS0tLS0tLS0tLS0tLQogbGliL2lndF9rbXMuaCB8ICAzNSArKysrKysrKy0tLS0tCiAy IGZpbGVzIGNoYW5nZWQsIDE0MiBpbnNlcnRpb25zKCspLCA1MyBkZWxldGlvbnMoLSkKCmRpZmYg LS1naXQgYS9saWIvaWd0X2ttcy5jIGIvbGliL2lndF9rbXMuYwppbmRleCA4ZmE0MGMyOC4uYmZl NWVhYjQgMTAwNjQ0Ci0tLSBhL2xpYi9pZ3Rfa21zLmMKKysrIGIvbGliL2lndF9rbXMuYwpAQCAt MzQ1LDcgKzM0NSw3IEBAIGludCBrbXN0ZXN0X3BpcGVfdG9faW5kZXgoY2hhciBwaXBlKQogICog a21zdGVzdF9wbGFuZV9uYW1lOgogICogQHBsYW5lOiBkaXNwbGF5IHBsYW5lCiAgKgotICogUmV0 dXJuczogU3RyaW5nIHJlcHJlc250aW5nIEBwaXBlLCBlLmcuICJwbGFuZTEiLgorICogUmV0dXJu czogU3RyaW5nIHJlcHJlc2VudGluZyBAcGxhbmUsIGUuZy4gInBsYW5lMSIuCiAgKi8KIGNvbnN0 IGNoYXIgKmttc3Rlc3RfcGxhbmVfbmFtZShlbnVtIGlndF9wbGFuZSBwbGFuZSkKIHsKQEAgLTM2 Nyw2ICszNjcsMjUgQEAgY29uc3QgY2hhciAqa21zdGVzdF9wbGFuZV9uYW1lKGVudW0gaWd0X3Bs YW5lIHBsYW5lKQogCXJldHVybiBuYW1lc1twbGFuZV07CiB9CiAKKy8qKgorICoga21zdGVzdF9w bGFuZV90eXBlX25hbWU6CisgKiBAcGxhbmU6IGRpc3BsYXkgcGxhbmUKKyAqCisgKiBSZXR1cm5z OiBTdHJpbmcgcmVwcmVzZW50aW5nIEBwbGFuZSwgZS5nLiAib3ZlcmxheSIuCisgKi8KK2NvbnN0 IGNoYXIgKmttc3Rlc3RfcGxhbmVfdHlwZV9uYW1lKGludCBwbGFuZV90eXBlKQoreworCXN0YXRp YyBjb25zdCBjaGFyICpuYW1lc1tdID0geworCQlbRFJNX1BMQU5FX1RZUEVfT1ZFUkxBWV0gPSAi b3ZlcmxheSIsCisJCVtEUk1fUExBTkVfVFlQRV9QUklNQVJZXSA9ICJwcmltYXJ5IiwKKwkJW0RS TV9QTEFORV9UWVBFX0NVUlNPUl0gPSAiY3Vyc29yIiwKKwl9OworCisJaWd0X2Fzc2VydChwbGFu ZV90eXBlIDwgQVJSQVlfU0laRShuYW1lcykgJiYgbmFtZXNbcGxhbmVfdHlwZV0pOworCisJcmV0 dXJuIG5hbWVzW3BsYW5lX3R5cGVdOworfQorCiBzdGF0aWMgY29uc3QgY2hhciAqbW9kZV9zdGVy ZW9fbmFtZShjb25zdCBkcm1Nb2RlTW9kZUluZm8gKm1vZGUpCiB7CiAJc3dpdGNoIChtb2RlLT5m bGFncyAmIERSTV9NT0RFX0ZMQUdfM0RfTUFTSykgewpAQCAtMTUzMiwxNCArMTU1MSwxNyBAQCB2 b2lkIGlndF9kaXNwbGF5X2luaXQoaWd0X2Rpc3BsYXlfdCAqZGlzcGxheSwgaW50IGRybV9mZCkK IAlmb3IgKGkgPSAwOyBpIDwgZGlzcGxheS0+bl9waXBlczsgaSsrKSB7CiAJCWlndF9waXBlX3Qg KnBpcGUgPSAmZGlzcGxheS0+cGlwZXNbaV07CiAJCWlndF9wbGFuZV90ICpwbGFuZTsKLQkJaW50 IHAgPSBJR1RfUExBTkVfMjsKKwkJaW50IHAgPSAxOwogCQlpbnQgaiwgdHlwZTsKLQkJdWludDhf dCBuX3BsYW5lcyA9IDA7CisJCXVpbnQ4X3QgbGFzdF9wbGFuZSA9IDAsIG5fcGxhbmVzID0gMDsK IAkJdWludDY0X3QgcHJvcF92YWx1ZTsKIAogCQlwaXBlLT5jcnRjX2lkID0gcmVzb3VyY2VzLT5j cnRjc1tpXTsKIAkJcGlwZS0+ZGlzcGxheSA9IGRpc3BsYXk7CiAJCXBpcGUtPnBpcGUgPSBpOwor CQlwaXBlLT5wbGFuZV9jdXJzb3IgPSAtMTsKKwkJcGlwZS0+cGxhbmVfcHJpbWFyeSA9IC0xOwor CQlwaXBlLT5wbGFuZXMgPSBOVUxMOwogCiAJCWdldF9jcnRjX3Byb3BlcnR5KGRpc3BsYXktPmRy bV9mZCwgcGlwZS0+Y3J0Y19pZCwKIAkJCQkgICAgImJhY2tncm91bmRfY29sb3IiLApAQCAtMTU2 NSw2ICsxNTg3LDI3IEBAIHZvaWQgaWd0X2Rpc3BsYXlfaW5pdChpZ3RfZGlzcGxheV90ICpkaXNw bGF5LCBpbnQgZHJtX2ZkKQogCiAJCWlndF9hdG9taWNfZmlsbF9waXBlX3Byb3BzKGRpc3BsYXks IHBpcGUsIElHVF9OVU1fQ1JUQ19QUk9QUywgaWd0X2NydGNfcHJvcF9uYW1lcyk7CiAKKwkJLyog Y291bnQgbnVtYmVyIG9mIHZhbGlkIHBsYW5lcyAqLworCQlmb3IgKGogPSAwOyBqIDwgcGxhbmVf cmVzb3VyY2VzLT5jb3VudF9wbGFuZXM7IGorKykgeworCQkJZHJtTW9kZVBsYW5lICpkcm1fcGxh bmU7CisKKwkJCWRybV9wbGFuZSA9IGRybU1vZGVHZXRQbGFuZShkaXNwbGF5LT5kcm1fZmQsCisJ CQkJCQkgICAgcGxhbmVfcmVzb3VyY2VzLT5wbGFuZXNbal0pOworCQkJaWd0X2Fzc2VydChkcm1f cGxhbmUpOworCisJCQlpZiAoIShkcm1fcGxhbmUtPnBvc3NpYmxlX2NydGNzICYgKDEgPDwgaSkp KSB7CisJCQkJZHJtTW9kZUZyZWVQbGFuZShkcm1fcGxhbmUpOworCQkJCWNvbnRpbnVlOworICAg ICAgICAgICAgfQorCisJCSAgICBuX3BsYW5lcysrOworCQl9CisKKwkJaWd0X2Fzc2VydF9sdGUo MCwgbl9wbGFuZXMpOworCQlwaXBlLT5wbGFuZXMgPSBjYWxsb2Moc2l6ZW9mKGlndF9wbGFuZV90 KSwgbl9wbGFuZXMpOworCQlpZ3RfYXNzZXJ0X2YocGlwZS0+cGxhbmVzLCAiRmFpbGVkIHRvIGFs bG9jYXRlIG1lbW9yeSBmb3IgJWQgcGxhbmVzXG4iLCBuX3BsYW5lcyk7CisJCWxhc3RfcGxhbmUg PSBuX3BsYW5lcyAtIDE7CisKIAkJLyogYWRkIHRoZSBwbGFuZXMgdGhhdCBjYW4gYmUgdXNlZCB3 aXRoIHRoYXQgcGlwZSAqLwogCQlmb3IgKGogPSAwOyBqIDwgcGxhbmVfcmVzb3VyY2VzLT5jb3Vu dF9wbGFuZXM7IGorKykgewogCQkJZHJtTW9kZVBsYW5lICpkcm1fcGxhbmU7CkBAIC0xNTgyLDIy ICsxNjI1LDI3IEBAIHZvaWQgaWd0X2Rpc3BsYXlfaW5pdChpZ3RfZGlzcGxheV90ICpkaXNwbGF5 LCBpbnQgZHJtX2ZkKQogCQkJCQkJICBwbGFuZV9yZXNvdXJjZXMtPnBsYW5lc1tqXSk7CiAJCQlz d2l0Y2ggKHR5cGUpIHsKIAkJCWNhc2UgRFJNX1BMQU5FX1RZUEVfUFJJTUFSWToKLQkJCQlwbGFu ZSA9ICZwaXBlLT5wbGFuZXNbSUdUX1BMQU5FX1BSSU1BUlldOworCQkJCWlmIChwaXBlLT5wbGFu ZV9wcmltYXJ5ID09IC0xKSB7CisJCQkJCXBsYW5lID0gJnBpcGUtPnBsYW5lc1swXTsKKwkJCQkJ cGxhbmUtPmluZGV4ID0gMDsKKwkJCQkJcGlwZS0+cGxhbmVfcHJpbWFyeSA9IDA7CisJCQkJfSBl bHNlIHsKKwkJCQkJcGxhbmUgPSAmcGlwZS0+cGxhbmVzW3BdOworCQkJCQlwbGFuZS0+aW5kZXgg PSBwKys7CisJCQkJfQogCQkJCXBsYW5lLT5pc19wcmltYXJ5ID0gMTsKLQkJCQlwbGFuZS0+aW5k ZXggPSBJR1RfUExBTkVfUFJJTUFSWTsKIAkJCQlicmVhazsKIAkJCWNhc2UgRFJNX1BMQU5FX1RZ UEVfQ1VSU09SOgotCQkJCS8qCi0JCQkJICogQ3Vyc29yIHNob3VsZCBiZSB0aGUgaGlnaGVzdCBp bmRleCBpbiBvdXIKLQkJCQkgKiBpbnRlcm5hbCBsaXN0LCBidXQgd2UgZG9uJ3Qga25vdyB3aGF0 IHRoYXQKLQkJCQkgKiBpcyB5ZXQuICBKdXN0IHN0aWNrIGl0IGluIHRoZSBsYXN0IHNsb3QKLQkJ CQkgKiBmb3Igbm93IGFuZCB3ZSdsbCBtb3ZlIGl0IGxhdGVyLCBpZgotCQkJCSAqIG5lY2Vzc2Fy eS4KLQkJCQkgKi8KLQkJCQlwbGFuZSA9ICZwaXBlLT5wbGFuZXNbSUdUX1BMQU5FX0NVUlNPUl07 Ci0JCQkJcGxhbmUtPmlzX2N1cnNvciA9IDE7Ci0JCQkJcGxhbmUtPmluZGV4ID0gSUdUX1BMQU5F X0NVUlNPUjsKKwkJCQlpZiAocGlwZS0+cGxhbmVfY3Vyc29yID09IC0xKSB7CisJCQkJCXBsYW5l ID0gJnBpcGUtPnBsYW5lc1tsYXN0X3BsYW5lXTsKKwkJCQkJcGxhbmUtPmluZGV4ID0gbGFzdF9w bGFuZTsKKwkJCQkJcGlwZS0+cGxhbmVfY3Vyc29yID0gbGFzdF9wbGFuZTsKKwkJCQl9IGVsc2Ug eworCQkJCQlwbGFuZSA9ICZwaXBlLT5wbGFuZXNbcF07CisJCQkJCXBsYW5lLT5pbmRleCA9IHAr KzsKKwkJCQl9CiAJCQkJZGlzcGxheS0+aGFzX2N1cnNvcl9wbGFuZSA9IHRydWU7CisJCQkJcGxh bmUtPmlzX2N1cnNvciA9IDE7CiAJCQkJYnJlYWs7CiAJCQlkZWZhdWx0OgogCQkJCXBsYW5lID0g JnBpcGUtPnBsYW5lc1twXTsKQEAgLTE2MDUsNyArMTY1Myw4IEBAIHZvaWQgaWd0X2Rpc3BsYXlf aW5pdChpZ3RfZGlzcGxheV90ICpkaXNwbGF5LCBpbnQgZHJtX2ZkKQogCQkJCWJyZWFrOwogCQkJ fQogCi0JCQluX3BsYW5lcysrOworCQkJaWd0X2Fzc2VydF9mKHBsYW5lLT5pbmRleCA8IG5fcGxh bmVzLCAibl9wbGFuZXMgPCBwbGFuZS0+aW5kZXggZmFpbGVkXG4iKTsKKwkJCXBsYW5lLT50eXBl ID0gdHlwZTsKIAkJCXBsYW5lLT5waXBlID0gcGlwZTsKIAkJCXBsYW5lLT5kcm1fcGxhbmUgPSBk cm1fcGxhbmU7CiAKQEAgLTE2MjYsNyArMTY3NSw3IEBAIHZvaWQgaWd0X2Rpc3BsYXlfaW5pdChp Z3RfZGlzcGxheV90ICpkaXNwbGF5LCBpbnQgZHJtX2ZkKQogCQkgKiBBdCB0aGUgYmFyZSBtaW5p bXVtLCB3ZSBzaG91bGQgZXhwZWN0IHRvIGhhdmUgYSBwcmltYXJ5CiAJCSAqIHBsYW5lCiAJCSAq LwotCQlpZ3RfYXNzZXJ0KHBpcGUtPnBsYW5lc1tJR1RfUExBTkVfUFJJTUFSWV0uZHJtX3BsYW5l KTsKKwkJaWd0X2Fzc2VydChwaXBlLT5wbGFuZXNbcGlwZS0+cGxhbmVfcHJpbWFyeV0uZHJtX3Bs YW5lKTsKIAogCQlpZiAoZGlzcGxheS0+aGFzX2N1cnNvcl9wbGFuZSkgewogCQkJLyoKQEAgLTE2 MzQsMTEgKzE2ODMsMTEgQEAgdm9pZCBpZ3RfZGlzcGxheV9pbml0KGlndF9kaXNwbGF5X3QgKmRp c3BsYXksIGludCBkcm1fZmQpCiAJCQkgKiBvbmx5IDEgc3ByaXRlLCB0aGF0J3MgdGhlIHdyb25n IHNsb3QgYW5kIHdlIG5lZWQgdG8KIAkJCSAqIG1vdmUgaXQgZG93bi4KIAkJCSAqLwotCQkJaWYg KHAgIT0gSUdUX1BMQU5FX0NVUlNPUikgeworCQkJaWYgKHAgIT0gbGFzdF9wbGFuZSkgewogCQkJ CXBpcGUtPnBsYW5lc1twXSA9Ci0JCQkJCXBpcGUtPnBsYW5lc1tJR1RfUExBTkVfQ1VSU09SXTsK KwkJCQkJcGlwZS0+cGxhbmVzW2xhc3RfcGxhbmVdOwogCQkJCXBpcGUtPnBsYW5lc1twXS5pbmRl eCA9IHA7Ci0JCQkJbWVtc2V0KCZwaXBlLT5wbGFuZXNbSUdUX1BMQU5FX0NVUlNPUl0sIDAsCisJ CQkJbWVtc2V0KCZwaXBlLT5wbGFuZXNbbGFzdF9wbGFuZV0sIDAsCiAJCQkJICAgICAgIHNpemVv ZiAqcGxhbmUpOwogCQkJfQogCQl9IGVsc2UgewpAQCAtMTY0Niw3ICsxNjk1LDcgQEAgdm9pZCBp Z3RfZGlzcGxheV9pbml0KGlndF9kaXNwbGF5X3QgKmRpc3BsYXksIGludCBkcm1fZmQpCiAJCQlw bGFuZSA9ICZwaXBlLT5wbGFuZXNbcF07CiAJCQlwbGFuZS0+cGlwZSA9IHBpcGU7CiAJCQlwbGFu ZS0+aW5kZXggPSBwOwotCQkJcGxhbmUtPmlzX2N1cnNvciA9IHRydWU7CisJCQlwbGFuZS0+dHlw ZSA9IERSTV9QTEFORV9UWVBFX0NVUlNPUjsKIAkJfQogCiAJCXBpcGUtPm5fcGxhbmVzID0gbl9w bGFuZXM7CkBAIC0xNjU0LDkgKzE3MDMsNiBAQCB2b2lkIGlndF9kaXNwbGF5X2luaXQoaWd0X2Rp c3BsYXlfdCAqZGlzcGxheSwgaW50IGRybV9mZCkKIAkJZm9yX2VhY2hfcGxhbmVfb25fcGlwZShk aXNwbGF5LCBpLCBwbGFuZSkKIAkJCXBsYW5lLT5mYl9jaGFuZ2VkID0gdHJ1ZTsKIAotCQkvKiBt YWtlIHN1cmUgd2UgZG9uJ3Qgb3ZlcmZsb3cgdGhlIHBsYW5lIGFycmF5ICovCi0JCWlndF9hc3Nl cnRfbHRlKHBpcGUtPm5fcGxhbmVzLCBJR1RfTUFYX1BMQU5FUyk7Ci0KIAkJcGlwZS0+bW9kZV9j aGFuZ2VkID0gdHJ1ZTsKIAl9CiAKQEAgLTE3MDksNiArMTc1NSw5IEBAIHN0YXRpYyB2b2lkIGln dF9waXBlX2ZpbmkoaWd0X3BpcGVfdCAqcGlwZSkKIAkJCXBsYW5lLT5kcm1fcGxhbmUgPSBOVUxM OwogCQl9CiAJfQorCisJZnJlZShwaXBlLT5wbGFuZXMpOworCXBpcGUtPnBsYW5lcyA9IE5VTEw7 CiB9CiAKIHN0YXRpYyB2b2lkIGlndF9vdXRwdXRfZmluaShpZ3Rfb3V0cHV0X3QgKm91dHB1dCkK QEAgLTE3OTcsMjAgKzE4NDYsNDEgQEAgc3RhdGljIGlndF9waXBlX3QgKmlndF9vdXRwdXRfZ2V0 X2RyaXZpbmdfcGlwZShpZ3Rfb3V0cHV0X3QgKm91dHB1dCkKIAlyZXR1cm4gJmRpc3BsYXktPnBp cGVzW3BpcGVdOwogfQogCi1zdGF0aWMgaWd0X3BsYW5lX3QgKmlndF9waXBlX2dldF9wbGFuZShp Z3RfcGlwZV90ICpwaXBlLCBlbnVtIGlndF9wbGFuZSBwbGFuZSkKK3N0YXRpYyBpZ3RfcGxhbmVf dCAqaWd0X3BpcGVfZ2V0X3BsYW5lKGlndF9waXBlX3QgKnBpcGUsIGludCBwbGFuZV9pZHgpCiB7 Ci0JaW50IGlkeDsKKwlpZ3RfYXNzZXJ0X2YocGxhbmVfaWR4ID49IDAgJiYgcGxhbmVfaWR4IDwg cGlwZS0+bl9wbGFuZXMsCisJCSJWYWxpZCBwaXBlLT5wbGFuZXMgcGxhbmVfaWR4IG5vdCBmb3Vu ZCwgcGxhbmVfaWR4PSVkIG5fcGxhbmVzPSVkIiwKKwkJcGxhbmVfaWR4LCBwaXBlLT5uX3BsYW5l cyk7CiAKLQkvKiBDdXJzb3IgcGxhbmUgaXMgYWx3YXlzIHRoZSBoaWdoZXN0IGluZGV4ICovCi0J aWYgKHBsYW5lID09IElHVF9QTEFORV9DVVJTT1IpCi0JCWlkeCA9IHBpcGUtPm5fcGxhbmVzIC0g MTsKLQllbHNlIHsKLQkJaWd0X2Fzc2VydF9mKHBsYW5lID49IDAgJiYgcGxhbmUgPCAocGlwZS0+ bl9wbGFuZXMpLAotCQkJICAgICAicGxhbmU9JWRcbiIsIHBsYW5lKTsKLQkJaWR4ID0gcGxhbmU7 CisJcmV0dXJuICZwaXBlLT5wbGFuZXNbcGxhbmVfaWR4XTsKK30KKworCitpZ3RfcGxhbmVfdCAq aWd0X3BpcGVfZ2V0X3BsYW5lX3R5cGUoaWd0X3BpcGVfdCAqcGlwZSwgaW50IHBsYW5lX3R5cGUp Cit7CisJaW50IGksIHBsYW5lX2lkeCA9IC0xOworCisJc3dpdGNoKHBsYW5lX3R5cGUpIHsKKwlj YXNlIERSTV9QTEFORV9UWVBFX0NVUlNPUjoKKwkJcGxhbmVfaWR4ID0gcGlwZS0+cGxhbmVfY3Vy c29yOworCQlicmVhazsKKwljYXNlIERSTV9QTEFORV9UWVBFX1BSSU1BUlk6CisJCXBsYW5lX2lk eCA9IHBpcGUtPnBsYW5lX3ByaW1hcnk7CisJCWJyZWFrOworCWNhc2UgRFJNX1BMQU5FX1RZUEVf T1ZFUkxBWToKKwkJZm9yKGkgPSAwOyBpIDwgcGlwZS0+bl9wbGFuZXM7IGkrKykKKwkJCWlmIChw aXBlLT5wbGFuZXNbaV0udHlwZSA9PSBEUk1fUExBTkVfVFlQRV9PVkVSTEFZKQorCQkJICAgIHBs YW5lX2lkeCA9IGk7CisJCWJyZWFrOworCWRlZmF1bHQ6CisJCWJyZWFrOwogCX0KIAotCXJldHVy biAmcGlwZS0+cGxhbmVzW2lkeF07CisJaWd0X2Fzc2VydF9mKHBsYW5lX2lkeCA+PSAwICYmIHBs YW5lX2lkeCA8IHBpcGUtPm5fcGxhbmVzLAorCQkiVmFsaWQgcGlwZS0+cGxhbmVzIGlkeCBub3Qg Zm91bmQuIHBsYW5lX2lkeD0lZCBwbGFuZV90eXBlPSVkIG5fcGxhbmVzPSVkXG4iLAorCQlwbGFu ZV9pZHgsIHBsYW5lX3R5cGUsIHBpcGUtPm5fcGxhbmVzKTsKKworCXJldHVybiAmcGlwZS0+cGxh bmVzW3BsYW5lX2lkeF07CiB9CiAKIHN0YXRpYyBpZ3Rfb3V0cHV0X3QgKmlndF9waXBlX2dldF9v dXRwdXQoaWd0X3BpcGVfdCAqcGlwZSkKQEAgLTIxNTUsOSArMjIyNSw5IEBAIHN0YXRpYyBpbnQg aWd0X3BsYW5lX2NvbW1pdChpZ3RfcGxhbmVfdCAqcGxhbmUsCiAJCQkgICAgZW51bSBpZ3RfY29t bWl0X3N0eWxlIHMsCiAJCQkgICAgYm9vbCBmYWlsX29uX2Vycm9yKQogewotCWlmIChwbGFuZS0+ aXNfY3Vyc29yICYmIHMgPT0gQ09NTUlUX0xFR0FDWSkgeworCWlmIChwbGFuZS0+dHlwZSA9PSBE Uk1fUExBTkVfVFlQRV9DVVJTT1IgJiYgcyA9PSBDT01NSVRfTEVHQUNZKSB7CiAJCXJldHVybiBp Z3RfY3Vyc29yX2NvbW1pdF9sZWdhY3kocGxhbmUsIHBpcGUsIGZhaWxfb25fZXJyb3IpOwotCX0g ZWxzZSBpZiAocGxhbmUtPmlzX3ByaW1hcnkgJiYgcyA9PSBDT01NSVRfTEVHQUNZKSB7CisJfSBl bHNlIGlmIChwbGFuZS0+dHlwZSA9PSBEUk1fUExBTkVfVFlQRV9QUklNQVJZICYmIHMgPT0gQ09N TUlUX0xFR0FDWSkgewogCQlyZXR1cm4gaWd0X3ByaW1hcnlfcGxhbmVfY29tbWl0X2xlZ2FjeShw bGFuZSwgcGlwZSwKIAkJCQkJCSAgICAgICBmYWlsX29uX2Vycm9yKTsKIAl9IGVsc2UgewpAQCAt MjM3NCw3ICsyNDQ0LDkgQEAgZGlzcGxheV9jb21taXRfY2hhbmdlZChpZ3RfZGlzcGxheV90ICpk aXNwbGF5LCBlbnVtIGlndF9jb21taXRfc3R5bGUgcykKIAkJCXBsYW5lLT5wb3NpdGlvbl9jaGFu Z2VkID0gZmFsc2U7CiAJCQlwbGFuZS0+c2l6ZV9jaGFuZ2VkID0gZmFsc2U7CiAKLQkJCWlmIChz ICE9IENPTU1JVF9MRUdBQ1kgfHwgIShwbGFuZS0+aXNfcHJpbWFyeSB8fCBwbGFuZS0+aXNfY3Vy c29yKSkKKwkJCWlmIChzICE9IENPTU1JVF9MRUdBQ1kgfHwKKwkJCSAgICAhKHBsYW5lLT50eXBl ID09IERSTV9QTEFORV9UWVBFX1BSSU1BUlkgfHwKKwkJCSAgICAgIHBsYW5lLT50eXBlID09IERS TV9QTEFORV9UWVBFX0NVUlNPUikpCiAJCQkJcGxhbmUtPnJvdGF0aW9uX2NoYW5nZWQgPSBmYWxz ZTsKIAkJfQogCX0KQEAgLTI2NTQsMTQgKzI3MjYsMjQgQEAgdm9pZCBpZ3Rfb3V0cHV0X3NldF9z Y2FsaW5nX21vZGUoaWd0X291dHB1dF90ICpvdXRwdXQsIHVpbnQ2NF90IHNjYWxpbmdfbW9kZSkK IAlpZ3RfcmVxdWlyZShvdXRwdXQtPmNvbmZpZy5hdG9taWNfcHJvcHNfY29ubmVjdG9yW0lHVF9D T05ORUNUT1JfU0NBTElOR19NT0RFXSk7CiB9CiAKLWlndF9wbGFuZV90ICppZ3Rfb3V0cHV0X2dl dF9wbGFuZShpZ3Rfb3V0cHV0X3QgKm91dHB1dCwgZW51bSBpZ3RfcGxhbmUgcGxhbmUpCitpZ3Rf cGxhbmVfdCAqaWd0X291dHB1dF9nZXRfcGxhbmUoaWd0X291dHB1dF90ICpvdXRwdXQsIGludCBw bGFuZV9pZHgpCit7CisJaWd0X3BpcGVfdCAqcGlwZTsKKworCXBpcGUgPSBpZ3Rfb3V0cHV0X2dl dF9kcml2aW5nX3BpcGUob3V0cHV0KTsKKwlpZ3RfYXNzZXJ0KHBpcGUpOworCisJcmV0dXJuIGln dF9waXBlX2dldF9wbGFuZShwaXBlLCBwbGFuZV9pZHgpOworfQorCitpZ3RfcGxhbmVfdCAqaWd0 X291dHB1dF9nZXRfcGxhbmVfdHlwZShpZ3Rfb3V0cHV0X3QgKm91dHB1dCwgaW50IHBsYW5lX3R5 cGUpCiB7CiAJaWd0X3BpcGVfdCAqcGlwZTsKIAogCXBpcGUgPSBpZ3Rfb3V0cHV0X2dldF9kcml2 aW5nX3BpcGUob3V0cHV0KTsKIAlpZ3RfYXNzZXJ0KHBpcGUpOwogCi0JcmV0dXJuIGlndF9waXBl X2dldF9wbGFuZShwaXBlLCBwbGFuZSk7CisJcmV0dXJuIGlndF9waXBlX2dldF9wbGFuZV90eXBl KHBpcGUsIHBsYW5lX3R5cGUpOwogfQogCiB2b2lkIGlndF9wbGFuZV9zZXRfZmIoaWd0X3BsYW5l X3QgKnBsYW5lLCBzdHJ1Y3QgaWd0X2ZiICpmYikKZGlmZiAtLWdpdCBhL2xpYi9pZ3Rfa21zLmgg Yi9saWIvaWd0X2ttcy5oCmluZGV4IDNiYzY5Yjg0Li5kZWE1MGRmMyAxMDA2NDQKLS0tIGEvbGli L2lndF9rbXMuaAorKysgYi9saWIvaWd0X2ttcy5oCkBAIC02MSwyMSArNjEsMjIgQEAgaW50IGtt c3Rlc3RfcGlwZV90b19pbmRleChjaGFyIHBpcGUpOwogCiAvKiBXZSBuYW1lc3BhY2UgdGhpcyBl bnVtIHRvIG5vdCBjb25mbGljdCB3aXRoIHRoZSBBbmRyb2lkIGk5MTVfZHJtLmggKi8KIGVudW0g aWd0X3BsYW5lIHsKLQlJR1RfUExBTkVfMSA9IDAsCi0JSUdUX1BMQU5FX1BSSU1BUlkgPSBJR1Rf UExBTkVfMSwKLQlJR1RfUExBTkVfMiwKLQlJR1RfUExBTkVfMywKLQlJR1RfUExBTkVfNCwKLQlJ R1RfUExBTkVfNSwKLQlJR1RfUExBTkVfNiwKLQlJR1RfUExBTkVfNywKLQlJR1RfUExBTkVfOCwK LQlJR1RfUExBTkVfOSwKLQlJR1RfUExBTkVfQ1VSU09SLCAvKiBJR1RfUExBTkVfQ1VSU09SIGlz IGFsd2F5cyB0aGUgbGFzdCBwbGFuZS4gKi8KLQlJR1RfTUFYX1BMQU5FUywKKyAgICAgICAgSUdU X1BMQU5FXzEgPSAwLAorICAgICAgICBJR1RfUExBTkVfUFJJTUFSWSA9IElHVF9QTEFORV8xLAor ICAgICAgICBJR1RfUExBTkVfMiwKKyAgICAgICAgSUdUX1BMQU5FXzMsCisgICAgICAgIElHVF9Q TEFORV80LAorICAgICAgICBJR1RfUExBTkVfNSwKKyAgICAgICAgSUdUX1BMQU5FXzYsCisgICAg ICAgIElHVF9QTEFORV83LAorICAgICAgICBJR1RfUExBTkVfOCwKKyAgICAgICAgSUdUX1BMQU5F XzksCisgICAgICAgIElHVF9QTEFORV9DVVJTT1IsIC8qIElHVF9QTEFORV9DVVJTT1IgaXMgYWx3 YXlzIHRoZSBsYXN0IHBsYW5lLiAqLworICAgICAgICBJR1RfTUFYX1BMQU5FUywKIH07CiAKIGNv bnN0IGNoYXIgKmttc3Rlc3RfcGxhbmVfbmFtZShlbnVtIGlndF9wbGFuZSBwbGFuZSk7Citjb25z dCBjaGFyICprbXN0ZXN0X3BsYW5lX3R5cGVfbmFtZShpbnQgcGxhbmVfdHlwZSk7CiAKIGVudW0g cG9ydCB7CiAgICAgICAgIFBPUlRfQSA9IDAsCkBAIC0yNTYsNiArMjU3LDcgQEAgdHlwZWRlZiBz dHJ1Y3QgewogCWlndF9waXBlX3QgKnBpcGU7CiAJaW50IGluZGV4OwogCS8qIGNhcGFiaWxpdGll cyAqLworCWludCB0eXBlOwogCXVuc2lnbmVkIGludCBpc19wcmltYXJ5ICAgICAgIDogMTsKIAl1 bnNpZ25lZCBpbnQgaXNfY3Vyc29yICAgICAgICA6IDE7CiAJLyogc3RhdGUgdHJhY2tpbmcgKi8K QEAgLTI5Miw4ICsyOTQsMTEgQEAgc3RydWN0IGlndF9waXBlIHsKIAlpZ3RfZGlzcGxheV90ICpk aXNwbGF5OwogCWVudW0gcGlwZSBwaXBlOwogCWJvb2wgZW5hYmxlZDsKKwogCWludCBuX3BsYW5l czsKLQlpZ3RfcGxhbmVfdCBwbGFuZXNbSUdUX01BWF9QTEFORVNdOworCWludCBwbGFuZV9jdXJz b3I7CisJaW50IHBsYW5lX3ByaW1hcnk7CisJaWd0X3BsYW5lX3QgKnBsYW5lczsKIAogCXVpbnQz Ml90IGF0b21pY19wcm9wc19jcnRjW0lHVF9OVU1fQ1JUQ19QUk9QU107CiAKQEAgLTM1Myw3ICsz NTgsOSBAQCBkcm1Nb2RlTW9kZUluZm8gKmlndF9vdXRwdXRfZ2V0X21vZGUoaWd0X291dHB1dF90 ICpvdXRwdXQpOwogdm9pZCBpZ3Rfb3V0cHV0X292ZXJyaWRlX21vZGUoaWd0X291dHB1dF90ICpv dXRwdXQsIGRybU1vZGVNb2RlSW5mbyAqbW9kZSk7CiB2b2lkIGlndF9vdXRwdXRfc2V0X3BpcGUo aWd0X291dHB1dF90ICpvdXRwdXQsIGVudW0gcGlwZSBwaXBlKTsKIHZvaWQgaWd0X291dHB1dF9z ZXRfc2NhbGluZ19tb2RlKGlndF9vdXRwdXRfdCAqb3V0cHV0LCB1aW50NjRfdCBzY2FsaW5nX21v ZGUpOwotaWd0X3BsYW5lX3QgKmlndF9vdXRwdXRfZ2V0X3BsYW5lKGlndF9vdXRwdXRfdCAqb3V0 cHV0LCBlbnVtIGlndF9wbGFuZSBwbGFuZSk7CitpZ3RfcGxhbmVfdCAqaWd0X291dHB1dF9nZXRf cGxhbmUoaWd0X291dHB1dF90ICpvdXRwdXQsIGludCBwbGFuZV9pZHgpOworaWd0X3BsYW5lX3Qg KmlndF9vdXRwdXRfZ2V0X3BsYW5lX3R5cGUoaWd0X291dHB1dF90ICpvdXRwdXQsIGludCBwbGFu ZV90eXBlKTsKK2lndF9wbGFuZV90ICppZ3RfcGlwZV9nZXRfcGxhbmVfdHlwZShpZ3RfcGlwZV90 ICpwaXBlLCBpbnQgcGxhbmVfdHlwZSk7CiBib29sIGlndF9waXBlX2dldF9wcm9wZXJ0eShpZ3Rf cGlwZV90ICpwaXBlLCBjb25zdCBjaGFyICpuYW1lLAogCQkJICAgdWludDMyX3QgKnByb3BfaWQs IHVpbnQ2NF90ICp2YWx1ZSwKIAkJCSAgIGRybU1vZGVQcm9wZXJ0eVB0ciAqcHJvcCk7Ci0tIAoy LjExLjAuNDUzLmc3ODdmNzVmMDUKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVk ZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZv L2ludGVsLWdmeAo=