From mboxrd@z Thu Jan 1 00:00:00 1970 From: Maarten Lankhorst Subject: [PATCH i-g-t v2 5/8] lib/igt_kms: Rework plane properties to be more atomic, v3. Date: Thu, 28 Sep 2017 12:28:40 +0200 Message-ID: <20170928102840.1978-1-maarten.lankhorst@linux.intel.com> References: <20170927181635.21170-6-maarten.lankhorst@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mblankhorst.nl (mblankhorst.nl [IPv6:2a02:2308::216:3eff:fe92:dfa3]) by gabe.freedesktop.org (Postfix) with ESMTPS id E01056E8DC for ; Thu, 28 Sep 2017 10:28:47 +0000 (UTC) In-Reply-To: <20170927181635.21170-6-maarten.lankhorst@linux.intel.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 List-Id: intel-gfx@lists.freedesktop.org SW4gdGhlIGZ1dHVyZSBJIHdhbnQgdG8gYWxsb3cgdGVzdHMgdG8gY29tbWl0IG1vcmUgcHJvcGVy dGllcywKYnV0IGZvciB0aGlzIHRvIHdvcmsgSSBoYXZlIHRvIGZpeCBhbGwgcHJvcGVydGllcyB0 byB3b3JrIGJldHRlcgp3aXRoIGF0b21pYyBjb21taXQuIEluc3RlYWQgb2Ygc3BlY2lhbCBjYXNp bmcgZWFjaApwcm9wZXJ0eSBtYWtlIGEgYml0bWFzayBmb3IgYWxsIHByb3BlcnR5IGNoYW5nZWQg ZmxhZ3MsIGFuZCB0cnkgdG8KY29tbWl0IGFsbCBwcm9wZXJ0aWVzLgoKQ2hhbmdlcyBzaW5jZSB2 MToKLSBSZW1vdmUgc3BlY2lhbCBkdW1waW5nIG9mIHNyYyBhbmQgY3J0YyBjb29yZGluYXRlcy4K LSBEdW1wIGFsbCBtb2RpZmllZCBjb29yZGluYXRlcy4KQ2hhbmdlcyBzaW5jZSB2MjoKLSBNb3Zl IGlndF9wbGFuZV9zZXRfcHJvcF9jaGFuZ2VkIHVwIHNsaWdodGx5LgoKU2lnbmVkLW9mZi1ieTog TWFhcnRlbiBMYW5raG9yc3QgPG1hYXJ0ZW4ubGFua2hvcnN0QGxpbnV4LmludGVsLmNvbT4KLS0t CiBsaWIvaWd0X2ttcy5jICAgICAgICAgICAgICAgICAgICB8IDI5MyArKysrKysrKysrKysrKysr Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIGxpYi9pZ3Rfa21zLmggICAgICAgICAgICAgICAgICAg IHwgIDU5ICsrKystLS0tCiB0ZXN0cy9rbXNfYXRvbWljX2ludGVycnVwdGlibGUuYyB8ICAxMiAr LQogdGVzdHMva21zX3JvdGF0aW9uX2NyYy5jICAgICAgICAgfCAgIDQgKy0KIDQgZmlsZXMgY2hh bmdlZCwgMTU5IGluc2VydGlvbnMoKyksIDIwOSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9s aWIvaWd0X2ttcy5jIGIvbGliL2lndF9rbXMuYwppbmRleCAwN2QyMDc0YzJiMWEuLjZlMDA1MmVi ZTdhNyAxMDA2NDQKLS0tIGEvbGliL2lndF9rbXMuYworKysgYi9saWIvaWd0X2ttcy5jCkBAIC0x OTIsMTEgKzE5MiwxMSBAQCBjb25zdCBjaGFyICppZ3RfY29ubmVjdG9yX3Byb3BfbmFtZXNbSUdU X05VTV9DT05ORUNUT1JfUFJPUFNdID0gewogCiAvKgogICogUmV0cmlldmUgYWxsIHRoZSBwcm9w ZXJpZXMgc3BlY2lmaWVkIGluIHByb3BzX25hbWUgYW5kIHN0b3JlIHRoZW0gaW50bwotICogcGxh bmUtPmF0b21pY19wcm9wc19wbGFuZS4KKyAqIHBsYW5lLT5wcm9wcy4KICAqLwogc3RhdGljIHZv aWQKLWlndF9hdG9taWNfZmlsbF9wbGFuZV9wcm9wcyhpZ3RfZGlzcGxheV90ICpkaXNwbGF5LCBp Z3RfcGxhbmVfdCAqcGxhbmUsCi0JCQlpbnQgbnVtX3Byb3BzLCBjb25zdCBjaGFyICoqcHJvcF9u YW1lcykKK2lndF9maWxsX3BsYW5lX3Byb3BzKGlndF9kaXNwbGF5X3QgKmRpc3BsYXksIGlndF9w bGFuZV90ICpwbGFuZSwKKwkJICAgICBpbnQgbnVtX3Byb3BzLCBjb25zdCBjaGFyICoqcHJvcF9u YW1lcykKIHsKIAlkcm1Nb2RlT2JqZWN0UHJvcGVydGllc1B0ciBwcm9wczsKIAlpbnQgaSwgaiwg ZmQ7CkBAIC0yMTQsNyArMjE0LDcgQEAgaWd0X2F0b21pY19maWxsX3BsYW5lX3Byb3BzKGlndF9k aXNwbGF5X3QgKmRpc3BsYXksIGlndF9wbGFuZV90ICpwbGFuZSwKIAkJCWlmIChzdHJjbXAocHJv cC0+bmFtZSwgcHJvcF9uYW1lc1tqXSkgIT0gMCkKIAkJCQljb250aW51ZTsKIAotCQkJcGxhbmUt PmF0b21pY19wcm9wc19wbGFuZVtqXSA9IHByb3BzLT5wcm9wc1tpXTsKKwkJCXBsYW5lLT5wcm9w c1tqXSA9IHByb3BzLT5wcm9wc1tpXTsKIAkJCWJyZWFrOwogCQl9CiAKQEAgLTE2NTksNyArMTY1 OSw2IEBAIHZvaWQgaWd0X2Rpc3BsYXlfaW5pdChpZ3RfZGlzcGxheV90ICpkaXNwbGF5LCBpbnQg ZHJtX2ZkKQogCWRybU1vZGVSZXMgKnJlc291cmNlczsKIAlkcm1Nb2RlUGxhbmVSZXMgKnBsYW5l X3Jlc291cmNlczsKIAlpbnQgaTsKLQlpbnQgaXNfYXRvbWljID0gMDsKIAogCW1lbXNldChkaXNw bGF5LCAwLCBzaXplb2YoaWd0X2Rpc3BsYXlfdCkpOwogCkBAIC0xNjc5LDcgKzE2NzgsOSBAQCB2 b2lkIGlndF9kaXNwbGF5X2luaXQoaWd0X2Rpc3BsYXlfdCAqZGlzcGxheSwgaW50IGRybV9mZCkK IAlpZ3RfYXNzZXJ0X2YoZGlzcGxheS0+cGlwZXMsICJGYWlsZWQgdG8gYWxsb2NhdGUgbWVtb3J5 IGZvciAlZCBwaXBlc1xuIiwgZGlzcGxheS0+bl9waXBlcyk7CiAKIAlkcm1TZXRDbGllbnRDYXAo ZHJtX2ZkLCBEUk1fQ0xJRU5UX0NBUF9VTklWRVJTQUxfUExBTkVTLCAxKTsKLQlpc19hdG9taWMg PSBkcm1TZXRDbGllbnRDYXAoZHJtX2ZkLCBEUk1fQ0xJRU5UX0NBUF9BVE9NSUMsIDEpOworCWlm IChkcm1TZXRDbGllbnRDYXAoZHJtX2ZkLCBEUk1fQ0xJRU5UX0NBUF9BVE9NSUMsIDEpID09IDAp CisJCWRpc3BsYXktPmlzX2F0b21pYyA9IDE7CisKIAlwbGFuZV9yZXNvdXJjZXMgPSBkcm1Nb2Rl R2V0UGxhbmVSZXNvdXJjZXMoZGlzcGxheS0+ZHJtX2ZkKTsKIAlpZ3RfYXNzZXJ0KHBsYW5lX3Jl c291cmNlcyk7CiAKQEAgLTE3NzYsMTkgKzE3NzcsMTkgQEAgdm9pZCBpZ3RfZGlzcGxheV9pbml0 KGlndF9kaXNwbGF5X3QgKmRpc3BsYXksIGludCBkcm1fZmQpCiAJCQlwbGFuZS0+dHlwZSA9IHR5 cGU7CiAJCQlwbGFuZS0+cGlwZSA9IHBpcGU7CiAJCQlwbGFuZS0+ZHJtX3BsYW5lID0gZHJtX3Bs YW5lOwotCQkJcGxhbmUtPmZlbmNlX2ZkID0gLTE7CisJCQlwbGFuZS0+dmFsdWVzW0lHVF9QTEFO RV9JTl9GRU5DRV9GRF0gPSB+MFVMTDsKIAotCQkJaWYgKGlzX2F0b21pYyA9PSAwKSB7Ci0JCQkJ ZGlzcGxheS0+aXNfYXRvbWljID0gMTsKLQkJCQlpZ3RfYXRvbWljX2ZpbGxfcGxhbmVfcHJvcHMo ZGlzcGxheSwgcGxhbmUsIElHVF9OVU1fUExBTkVfUFJPUFMsIGlndF9wbGFuZV9wcm9wX25hbWVz KTsKLQkJCX0KKwkJCWlndF9maWxsX3BsYW5lX3Byb3BzKGRpc3BsYXksIHBsYW5lLCBJR1RfTlVN X1BMQU5FX1BST1BTLCBpZ3RfcGxhbmVfcHJvcF9uYW1lcyk7CiAKIAkJCWdldF9wbGFuZV9wcm9w ZXJ0eShkaXNwbGF5LT5kcm1fZmQsIGRybV9wbGFuZS0+cGxhbmVfaWQsCiAJCQkJCSAgICJyb3Rh dGlvbiIsCi0JCQkJCSAgICZwbGFuZS0+cm90YXRpb25fcHJvcGVydHksCi0JCQkJCSAgICZwcm9w X3ZhbHVlLAorCQkJCQkgICAmcGxhbmUtPnByb3BzW0lHVF9QTEFORV9ST1RBVElPTl0sCisJCQkJ CSAgICZwbGFuZS0+dmFsdWVzW0lHVF9QTEFORV9ST1RBVElPTl0sCiAJCQkJCSAgIE5VTEwpOwot CQkJcGxhbmUtPnJvdGF0aW9uID0gKGlndF9yb3RhdGlvbl90KXByb3BfdmFsdWU7CisKKwkJCS8q IENsZWFyIGFueSByZXNpZHVhbCBmcmFtZWJ1ZmZlciBvbiBmaXJzdCBjb21taXQuICovCisJCQlp Z3RfcGxhbmVfc2V0X3Byb3BfY2hhbmdlZChwbGFuZSwgSUdUX1BMQU5FX0ZCX0lEKTsKKwkJCWln dF9wbGFuZV9zZXRfcHJvcF9jaGFuZ2VkKHBsYW5lLCBJR1RfUExBTkVfQ1JUQ19JRCk7CiAJCX0K IAogCQkvKgpAQCAtMTgwNSw5ICsxODA2LDYgQEAgdm9pZCBpZ3RfZGlzcGxheV9pbml0KGlndF9k aXNwbGF5X3QgKmRpc3BsYXksIGludCBkcm1fZmQpCiAKIAkJcGlwZS0+bl9wbGFuZXMgPSBuX3Bs YW5lczsKIAotCQlmb3JfZWFjaF9wbGFuZV9vbl9waXBlKGRpc3BsYXksIGksIHBsYW5lKQotCQkJ cGxhbmUtPmZiX2NoYW5nZWQgPSB0cnVlOwotCiAJCXBpcGUtPm1vZGVfY2hhbmdlZCA9IHRydWU7 CiAJfQogCkBAIC0yMDcwLDE4ICsyMDY4LDcgQEAgYm9vbCBpZ3RfcGlwZV9nZXRfcHJvcGVydHko aWd0X3BpcGVfdCAqcGlwZSwgY29uc3QgY2hhciAqbmFtZSwKIAogc3RhdGljIHVpbnQzMl90IGln dF9wbGFuZV9nZXRfZmJfaWQoaWd0X3BsYW5lX3QgKnBsYW5lKQogewotCWlmIChwbGFuZS0+ZmIp Ci0JCXJldHVybiBwbGFuZS0+ZmItPmZiX2lkOwotCWVsc2UKLQkJcmV0dXJuIDA7Ci19Ci0KLXN0 YXRpYyB1aW50MzJfdCBpZ3RfcGxhbmVfZ2V0X2ZiX2dlbV9oYW5kbGUoaWd0X3BsYW5lX3QgKnBs YW5lKQotewotCWlmIChwbGFuZS0+ZmIpCi0JCXJldHVybiBwbGFuZS0+ZmItPmdlbV9oYW5kbGU7 Ci0JZWxzZQotCQlyZXR1cm4gMDsKKwlyZXR1cm4gcGxhbmUtPnZhbHVlc1tJR1RfUExBTkVfRkJf SURdOwogfQogCiAjZGVmaW5lIENIRUNLX1JFVFVSTihyLCBmYWlsKSB7CVwKQEAgLTIwOTAsOSAr MjA3Nyw2IEBAIHN0YXRpYyB1aW50MzJfdCBpZ3RfcGxhbmVfZ2V0X2ZiX2dlbV9oYW5kbGUoaWd0 X3BsYW5lX3QgKnBsYW5lKQogCWlndF9hc3NlcnRfZXEociwgMCk7CVwKIH0KIAotCi0KLQogLyoK ICAqIEFkZCBwb3NpdGlvbiBhbmQgZmIgY2hhbmdlcyBvZiBhIHBsYW5lIHRvIHRoZSBhdG9taWMg cHJvcGVydHkgc2V0CiAgKi8KQEAgLTIxMDEsNjMgKzIwODUsMzEgQEAgaWd0X2F0b21pY19wcmVw YXJlX3BsYW5lX2NvbW1pdChpZ3RfcGxhbmVfdCAqcGxhbmUsIGlndF9waXBlX3QgKnBpcGUsCiAJ ZHJtTW9kZUF0b21pY1JlcSAqcmVxKQogewogCWlndF9kaXNwbGF5X3QgKmRpc3BsYXkgPSBwaXBl LT5kaXNwbGF5OwotCXVpbnQzMl90IGZiX2lkLCBjcnRjX2lkOworCWludCBpOwogCiAJaWd0X2Fz c2VydChwbGFuZS0+ZHJtX3BsYW5lKTsKIAotCS8qIGl0J3MgYW4gZXJyb3IgdG8gdHJ5IGFuIHVu c3VwcG9ydGVkIGZlYXR1cmUgKi8KLQlpZ3RfYXNzZXJ0KGlndF9wbGFuZV9zdXBwb3J0c19yb3Rh dGlvbihwbGFuZSkgfHwKLQkJCSFwbGFuZS0+cm90YXRpb25fY2hhbmdlZCk7Ci0KLQlmYl9pZCA9 IGlndF9wbGFuZV9nZXRfZmJfaWQocGxhbmUpOwotCWNydGNfaWQgPSBwaXBlLT5jcnRjX2lkOwot CiAJTE9HKGRpc3BsYXksCiAJICAgICJwb3B1bGF0aW5nIHBsYW5lIGRhdGE6ICVzLiVkLCBmYiAl dVxuIiwKIAkgICAga21zdGVzdF9waXBlX25hbWUocGlwZS0+cGlwZSksCiAJICAgIHBsYW5lLT5p bmRleCwKLQkgICAgZmJfaWQpOwotCi0JaWYgKHBsYW5lLT5mZW5jZV9mZCA+PSAwKSB7Ci0JCXVp bnQ2NF90IGZlbmNlX2ZkID0gKGludDY0X3QpIHBsYW5lLT5mZW5jZV9mZDsKLQkJaWd0X2F0b21p Y19wb3B1bGF0ZV9wbGFuZV9yZXEocmVxLCBwbGFuZSwgSUdUX1BMQU5FX0lOX0ZFTkNFX0ZELCBm ZW5jZV9mZCk7Ci0JfQorCSAgICBpZ3RfcGxhbmVfZ2V0X2ZiX2lkKHBsYW5lKSk7CiAKLQlpZiAo cGxhbmUtPmZiX2NoYW5nZWQpIHsKLQkJaWd0X2F0b21pY19wb3B1bGF0ZV9wbGFuZV9yZXEocmVx LCBwbGFuZSwgSUdUX1BMQU5FX0NSVENfSUQsIGZiX2lkID8gY3J0Y19pZCA6IDApOwotCQlpZ3Rf YXRvbWljX3BvcHVsYXRlX3BsYW5lX3JlcShyZXEsIHBsYW5lLCBJR1RfUExBTkVfRkJfSUQsIGZi X2lkKTsKLQl9Ci0KLQlpZiAocGxhbmUtPnBvc2l0aW9uX2NoYW5nZWQgfHwgcGxhbmUtPnNpemVf Y2hhbmdlZCkgewotCQl1aW50MzJfdCBzcmNfeCA9IElHVF9GSVhFRChwbGFuZS0+c3JjX3gsIDAp OyAvKiBzcmNfeCAqLwotCQl1aW50MzJfdCBzcmNfeSA9IElHVF9GSVhFRChwbGFuZS0+c3JjX3ks IDApOyAvKiBzcmNfeSAqLwotCQl1aW50MzJfdCBzcmNfdyA9IElHVF9GSVhFRChwbGFuZS0+c3Jj X3csIDApOyAvKiBzcmNfdyAqLwotCQl1aW50MzJfdCBzcmNfaCA9IElHVF9GSVhFRChwbGFuZS0+ c3JjX2gsIDApOyAvKiBzcmNfaCAqLwotCQlpbnQzMl90IGNydGNfeCA9IHBsYW5lLT5jcnRjX3g7 Ci0JCWludDMyX3QgY3J0Y195ID0gcGxhbmUtPmNydGNfeTsKLQkJdWludDMyX3QgY3J0Y193ID0g cGxhbmUtPmNydGNfdzsKLQkJdWludDMyX3QgY3J0Y19oID0gcGxhbmUtPmNydGNfaDsKKwlmb3Ig KGkgPSAwOyBpIDwgSUdUX05VTV9QTEFORV9QUk9QUzsgaSsrKSB7CisJCWlmICghaWd0X3BsYW5l X2lzX3Byb3BfY2hhbmdlZChwbGFuZSwgaSkpCisJCQljb250aW51ZTsKIAotCQlMT0coZGlzcGxh eSwKLQkJInNyYyA9ICglZCwgJWQpICV1IHggJXUgIgotCQkiZHN0ID0gKCVkLCAlZCkgJXUgeCAl dVxuIiwKLQkJc3JjX3ggPj4gMTYsIHNyY195ID4+IDE2LCBzcmNfdyA+PiAxNiwgc3JjX2ggPj4g MTYsCi0JCWNydGNfeCwgY3J0Y195LCBjcnRjX3csIGNydGNfaCk7CisJCS8qIGl0J3MgYW4gZXJy b3IgdG8gdHJ5IGFuIHVuc3VwcG9ydGVkIGZlYXR1cmUgKi8KKwkJaWd0X2Fzc2VydChwbGFuZS0+ cHJvcHNbaV0pOwogCi0JCWlndF9hdG9taWNfcG9wdWxhdGVfcGxhbmVfcmVxKHJlcSwgcGxhbmUs IElHVF9QTEFORV9TUkNfWCwgc3JjX3gpOwotCQlpZ3RfYXRvbWljX3BvcHVsYXRlX3BsYW5lX3Jl cShyZXEsIHBsYW5lLCBJR1RfUExBTkVfU1JDX1ksIHNyY195KTsKLQkJaWd0X2F0b21pY19wb3B1 bGF0ZV9wbGFuZV9yZXEocmVxLCBwbGFuZSwgSUdUX1BMQU5FX1NSQ19XLCBzcmNfdyk7Ci0JCWln dF9hdG9taWNfcG9wdWxhdGVfcGxhbmVfcmVxKHJlcSwgcGxhbmUsIElHVF9QTEFORV9TUkNfSCwg c3JjX2gpOworCQlpZ3RfZGVidWcoInBsYW5lICVzLiVkOiBTZXR0aW5nIHByb3BlcnR5IFwiJXNc IiB0byAweCUiUFJJeDY0Ii8lIlBSSWk2NCJcbiIsCisJCQlrbXN0ZXN0X3BpcGVfbmFtZShwaXBl LT5waXBlKSwgcGxhbmUtPmluZGV4LCBpZ3RfcGxhbmVfcHJvcF9uYW1lc1tpXSwKKwkJCXBsYW5l LT52YWx1ZXNbaV0sIHBsYW5lLT52YWx1ZXNbaV0pOwogCi0JCWlndF9hdG9taWNfcG9wdWxhdGVf cGxhbmVfcmVxKHJlcSwgcGxhbmUsIElHVF9QTEFORV9DUlRDX1gsIGNydGNfeCk7Ci0JCWlndF9h dG9taWNfcG9wdWxhdGVfcGxhbmVfcmVxKHJlcSwgcGxhbmUsIElHVF9QTEFORV9DUlRDX1ksIGNy dGNfeSk7Ci0JCWlndF9hdG9taWNfcG9wdWxhdGVfcGxhbmVfcmVxKHJlcSwgcGxhbmUsIElHVF9Q TEFORV9DUlRDX1csIGNydGNfdyk7Ci0JCWlndF9hdG9taWNfcG9wdWxhdGVfcGxhbmVfcmVxKHJl cSwgcGxhbmUsIElHVF9QTEFORV9DUlRDX0gsIGNydGNfaCk7CisJCWlndF9hc3NlcnRfbHQoMCwg ZHJtTW9kZUF0b21pY0FkZFByb3BlcnR5KHJlcSwgcGxhbmUtPmRybV9wbGFuZS0+cGxhbmVfaWQs CisJCQkJCQkgIHBsYW5lLT5wcm9wc1tpXSwKKwkJCQkJCSAgcGxhbmUtPnZhbHVlc1tpXSkpOwog CX0KLQotCWlmIChwbGFuZS0+cm90YXRpb25fY2hhbmdlZCkKLQkJaWd0X2F0b21pY19wb3B1bGF0 ZV9wbGFuZV9yZXEocmVxLCBwbGFuZSwKLQkJCUlHVF9QTEFORV9ST1RBVElPTiwgcGxhbmUtPnJv dGF0aW9uKTsKIH0KIAogCkBAIC0yMTgzLDE3ICsyMTM1LDIwIEBAIHN0YXRpYyBpbnQgaWd0X2Ry bV9wbGFuZV9jb21taXQoaWd0X3BsYW5lX3QgKnBsYW5lLAogCWludDMyX3QgY3J0Y195OwogCXVp bnQzMl90IGNydGNfdzsKIAl1aW50MzJfdCBjcnRjX2g7CisJYm9vbCBzZXRwbGFuZSA9CisJCWln dF9wbGFuZV9pc19wcm9wX2NoYW5nZWQocGxhbmUsIElHVF9QTEFORV9GQl9JRCkgfHwKKwkJcGxh bmUtPmNoYW5nZWQgJiBJR1RfUExBTkVfQ09PUkRfQ0hBTkdFRF9NQVNLOwogCiAJaWd0X2Fzc2Vy dChwbGFuZS0+ZHJtX3BsYW5lKTsKIAogCS8qIGl0J3MgYW4gZXJyb3IgdG8gdHJ5IGFuIHVuc3Vw cG9ydGVkIGZlYXR1cmUgKi8KIAlpZ3RfYXNzZXJ0KGlndF9wbGFuZV9zdXBwb3J0c19yb3RhdGlv bihwbGFuZSkgfHwKLQkJICAgIXBsYW5lLT5yb3RhdGlvbl9jaGFuZ2VkKTsKKwkJICAgIWlndF9w bGFuZV9pc19wcm9wX2NoYW5nZWQocGxhbmUsIElHVF9QTEFORV9ST1RBVElPTikpOwogCiAJZmJf aWQgPSBpZ3RfcGxhbmVfZ2V0X2ZiX2lkKHBsYW5lKTsKIAljcnRjX2lkID0gcGlwZS0+Y3J0Y19p ZDsKIAotCWlmICgocGxhbmUtPmZiX2NoYW5nZWQgfHwgcGxhbmUtPnNpemVfY2hhbmdlZCkgJiYg ZmJfaWQgPT0gMCkgeworCWlmIChzZXRwbGFuZSAmJiBmYl9pZCA9PSAwKSB7CiAJCUxPRyhkaXNw bGF5LAogCQkgICAgIlNldFBsYW5lIHBpcGUgJXMsIHBsYW5lICVkLCBkaXNhYmxpbmdcbiIsCiAJ CSAgICBrbXN0ZXN0X3BpcGVfbmFtZShwaXBlLT5waXBlKSwKQEAgLTIyMTIsMTYgKzIxNjcsMTUg QEAgc3RhdGljIGludCBpZ3RfZHJtX3BsYW5lX2NvbW1pdChpZ3RfcGxhbmVfdCAqcGxhbmUsCiAJ CQkJICAgICAgSUdUX0ZJWEVEKDAsMCkgLyogc3JjX2ggKi8pOwogCiAJCUNIRUNLX1JFVFVSTihy ZXQsIGZhaWxfb25fZXJyb3IpOwotCX0gZWxzZSBpZiAocGxhbmUtPmZiX2NoYW5nZWQgfHwgcGxh bmUtPnBvc2l0aW9uX2NoYW5nZWQgfHwKLQkJcGxhbmUtPnNpemVfY2hhbmdlZCkgewotCQlzcmNf eCA9IElHVF9GSVhFRChwbGFuZS0+c3JjX3gsMCk7IC8qIHNyY194ICovCi0JCXNyY195ID0gSUdU X0ZJWEVEKHBsYW5lLT5zcmNfeSwwKTsgLyogc3JjX3kgKi8KLQkJc3JjX3cgPSBJR1RfRklYRUQo cGxhbmUtPnNyY193LDApOyAvKiBzcmNfdyAqLwotCQlzcmNfaCA9IElHVF9GSVhFRChwbGFuZS0+ c3JjX2gsMCk7IC8qIHNyY19oICovCi0JCWNydGNfeCA9IHBsYW5lLT5jcnRjX3g7Ci0JCWNydGNf eSA9IHBsYW5lLT5jcnRjX3k7Ci0JCWNydGNfdyA9IHBsYW5lLT5jcnRjX3c7Ci0JCWNydGNfaCA9 IHBsYW5lLT5jcnRjX2g7CisJfSBlbHNlIGlmIChzZXRwbGFuZSkgeworCQlzcmNfeCA9IHBsYW5l LT52YWx1ZXNbSUdUX1BMQU5FX1NSQ19YXTsKKwkJc3JjX3kgPSBwbGFuZS0+dmFsdWVzW0lHVF9Q TEFORV9TUkNfWV07CisJCXNyY193ID0gcGxhbmUtPnZhbHVlc1tJR1RfUExBTkVfU1JDX1ddOwor CQlzcmNfaCA9IHBsYW5lLT52YWx1ZXNbSUdUX1BMQU5FX1NSQ19IXTsKKwkJY3J0Y194ID0gcGxh bmUtPnZhbHVlc1tJR1RfUExBTkVfQ1JUQ19YXTsKKwkJY3J0Y195ID0gcGxhbmUtPnZhbHVlc1tJ R1RfUExBTkVfQ1JUQ19ZXTsKKwkJY3J0Y193ID0gcGxhbmUtPnZhbHVlc1tJR1RfUExBTkVfQ1JU Q19XXTsKKwkJY3J0Y19oID0gcGxhbmUtPnZhbHVlc1tJR1RfUExBTkVfQ1JUQ19IXTsKIAogCQlM T0coZGlzcGxheSwKIAkJICAgICJTZXRQbGFuZSAlcy4lZCwgZmIgJXUsIHNyYyA9ICglZCwgJWQp ICIKQEAgLTIyNDUsOSArMjE5OSwxMCBAQCBzdGF0aWMgaW50IGlndF9kcm1fcGxhbmVfY29tbWl0 KGlndF9wbGFuZV90ICpwbGFuZSwKIAkJQ0hFQ0tfUkVUVVJOKHJldCwgZmFpbF9vbl9lcnJvcik7 CiAJfQogCi0JaWYgKHBsYW5lLT5yb3RhdGlvbl9jaGFuZ2VkKSB7Ci0JCXJldCA9IGlndF9wbGFu ZV9zZXRfcHJvcGVydHkocGxhbmUsIHBsYW5lLT5yb3RhdGlvbl9wcm9wZXJ0eSwKLQkJCQkgICAg ICAgcGxhbmUtPnJvdGF0aW9uKTsKKwlpZiAoaWd0X3BsYW5lX2lzX3Byb3BfY2hhbmdlZChwbGFu ZSwgSUdUX1BMQU5FX1JPVEFUSU9OKSkgeworCQlyZXQgPSBpZ3RfcGxhbmVfc2V0X3Byb3BlcnR5 KHBsYW5lLAorCQkJCQkgICAgIHBsYW5lLT5wcm9wc1tJR1RfUExBTkVfUk9UQVRJT05dLAorCQkJ CQkgICAgIHBsYW5lLT52YWx1ZXNbSUdUX1BMQU5FX1JPVEFUSU9OXSk7CiAKIAkJQ0hFQ0tfUkVU VVJOKHJldCwgZmFpbF9vbl9lcnJvcik7CiAJfQpAQCAtMjI2OSwzNSArMjIyNCwzMCBAQCBzdGF0 aWMgaW50IGlndF9jdXJzb3JfY29tbWl0X2xlZ2FjeShpZ3RfcGxhbmVfdCAqY3Vyc29yLAogCXVp bnQzMl90IGNydGNfaWQgPSBwaXBlLT5jcnRjX2lkOwogCWludCByZXQ7CiAKLQlpZiAoY3Vyc29y LT5mYl9jaGFuZ2VkKSB7Ci0JCXVpbnQzMl90IGdlbV9oYW5kbGUgPSBpZ3RfcGxhbmVfZ2V0X2Zi X2dlbV9oYW5kbGUoY3Vyc29yKTsKLQotCQlpZiAoZ2VtX2hhbmRsZSkgeworCWlmIChpZ3RfcGxh bmVfaXNfcHJvcF9jaGFuZ2VkKGN1cnNvciwgSUdUX1BMQU5FX0ZCX0lEKSkgeworCQlpZiAoY3Vy c29yLT5nZW1faGFuZGxlKQogCQkJTE9HKGRpc3BsYXksCiAJCQkgICAgIlNldEN1cnNvciBwaXBl ICVzLCBmYiAldSAlZHglZFxuIiwKIAkJCSAgICBrbXN0ZXN0X3BpcGVfbmFtZShwaXBlLT5waXBl KSwKLQkJCSAgICBnZW1faGFuZGxlLAotCQkJICAgIGN1cnNvci0+Y3J0Y193LCBjdXJzb3ItPmNy dGNfaCk7Ci0KLQkJCXJldCA9IGRybU1vZGVTZXRDdXJzb3IoZGlzcGxheS0+ZHJtX2ZkLCBjcnRj X2lkLAotCQkJCQkgICAgICAgZ2VtX2hhbmRsZSwKLQkJCQkJICAgICAgIGN1cnNvci0+Y3J0Y193 LAotCQkJCQkgICAgICAgY3Vyc29yLT5jcnRjX2gpOwotCQl9IGVsc2UgeworCQkJICAgIGN1cnNv ci0+Z2VtX2hhbmRsZSwKKwkJCSAgICAodW5zaWduZWQpY3Vyc29yLT52YWx1ZXNbSUdUX1BMQU5F X0NSVENfV10sCisJCQkgICAgKHVuc2lnbmVkKWN1cnNvci0+dmFsdWVzW0lHVF9QTEFORV9DUlRD X0hdKTsKKwkJZWxzZQogCQkJTE9HKGRpc3BsYXksCiAJCQkgICAgIlNldEN1cnNvciBwaXBlICVz LCBkaXNhYmxpbmdcbiIsCiAJCQkgICAga21zdGVzdF9waXBlX25hbWUocGlwZS0+cGlwZSkpOwog Ci0JCQlyZXQgPSBkcm1Nb2RlU2V0Q3Vyc29yKGRpc3BsYXktPmRybV9mZCwgY3J0Y19pZCwKLQkJ CQkJICAgICAgIDAsIDAsIDApOwotCQl9Ci0KKwkJcmV0ID0gZHJtTW9kZVNldEN1cnNvcihkaXNw bGF5LT5kcm1fZmQsIGNydGNfaWQsCisJCQkJICAgICAgIGN1cnNvci0+Z2VtX2hhbmRsZSwKKwkJ CQkgICAgICAgY3Vyc29yLT52YWx1ZXNbSUdUX1BMQU5FX0NSVENfV10sCisJCQkJICAgICAgIGN1 cnNvci0+dmFsdWVzW0lHVF9QTEFORV9DUlRDX0hdKTsKIAkJQ0hFQ0tfUkVUVVJOKHJldCwgZmFp bF9vbl9lcnJvcik7CiAJfQogCi0JaWYgKGN1cnNvci0+cG9zaXRpb25fY2hhbmdlZCkgewotCQlp bnQgeCA9IGN1cnNvci0+Y3J0Y194OwotCQlpbnQgeSA9IGN1cnNvci0+Y3J0Y195OworCWlmIChp Z3RfcGxhbmVfaXNfcHJvcF9jaGFuZ2VkKGN1cnNvciwgSUdUX1BMQU5FX0NSVENfWCkgfHwKKwkg ICAgaWd0X3BsYW5lX2lzX3Byb3BfY2hhbmdlZChjdXJzb3IsIElHVF9QTEFORV9DUlRDX1kpKSB7 CisJCWludCB4ID0gY3Vyc29yLT52YWx1ZXNbSUdUX1BMQU5FX0NSVENfWF07CisJCWludCB5ID0g Y3Vyc29yLT52YWx1ZXNbSUdUX1BMQU5FX0NSVENfWV07CiAKIAkJTE9HKGRpc3BsYXksCiAJCSAg ICAiTW92ZUN1cnNvciBwaXBlICVzLCAoJWQsICVkKVxuIiwKQEAgLTIzMjYsMTMgKzIyNzYsMTQg QEAgc3RhdGljIGludCBpZ3RfcHJpbWFyeV9wbGFuZV9jb21taXRfbGVnYWN5KGlndF9wbGFuZV90 ICpwcmltYXJ5LAogCWludCByZXQ7CiAKIAkvKiBQcmltYXJ5IHBsYW5lcyBjYW4ndCBiZSB3aW5k b3dlZCB3aGVuIHVzaW5nIGEgbGVnYWN5IGNvbW1pdCAqLwotCWlndF9hc3NlcnQoKHByaW1hcnkt PmNydGNfeCA9PSAwICYmIHByaW1hcnktPmNydGNfeSA9PSAwKSk7CisJaWd0X2Fzc2VydCgocHJp bWFyeS0+dmFsdWVzW0lHVF9QTEFORV9DUlRDX1hdID09IDAgJiYgcHJpbWFyeS0+dmFsdWVzW0lH VF9QTEFORV9DUlRDX1ldID09IDApKTsKIAogCS8qIG5vciByb3RhdGVkICovCi0JaWd0X2Fzc2Vy dCghcHJpbWFyeS0+cm90YXRpb25fY2hhbmdlZCk7CisJaWd0X2Fzc2VydCghaWd0X3BsYW5lX2lz X3Byb3BfY2hhbmdlZChwcmltYXJ5LCBJR1RfUExBTkVfUk9UQVRJT04pKTsKIAotCWlmICghcHJp bWFyeS0+ZmJfY2hhbmdlZCAmJiAhcHJpbWFyeS0+cG9zaXRpb25fY2hhbmdlZCAmJgotCSAgICAh cHJpbWFyeS0+c2l6ZV9jaGFuZ2VkICYmICFwcmltYXJ5LT5waXBlLT5tb2RlX2NoYW5nZWQpCisJ aWYgKCFpZ3RfcGxhbmVfaXNfcHJvcF9jaGFuZ2VkKHByaW1hcnksIElHVF9QTEFORV9GQl9JRCkg JiYKKwkgICAgIShwcmltYXJ5LT5jaGFuZ2VkICYgSUdUX1BMQU5FX0NPT1JEX0NIQU5HRURfTUFT SykgJiYKKwkgICAgIXByaW1hcnktPnBpcGUtPm1vZGVfY2hhbmdlZCkKIAkJcmV0dXJuIDA7CiAK IAljcnRjX2lkID0gcGlwZS0+Y3J0Y19pZDsKQEAgLTIzNDMsMTkgKzIyOTQsMjIgQEAgc3RhdGlj IGludCBpZ3RfcHJpbWFyeV9wbGFuZV9jb21taXRfbGVnYWN5KGlndF9wbGFuZV90ICpwcmltYXJ5 LAogCQltb2RlID0gTlVMTDsKIAogCWlmIChmYl9pZCkgeworCQl1aW50MzJfdCBzcmNfeCA9IHBy aW1hcnktPnZhbHVlc1tJR1RfUExBTkVfU1JDX1hdID4+IDE2OworCQl1aW50MzJfdCBzcmNfeSA9 IHByaW1hcnktPnZhbHVlc1tJR1RfUExBTkVfU1JDX1ldID4+IDE2OworCiAJCUxPRyhkaXNwbGF5 LAogCQkgICAgIiVzOiBTZXRDcnRjIHBpcGUgJXMsIGZiICV1LCBzcmMgKCVkLCAlZCksICIKIAkJ ICAgICJtb2RlICVkeCVkXG4iLAogCQkgICAgaWd0X291dHB1dF9uYW1lKG91dHB1dCksCiAJCSAg ICBrbXN0ZXN0X3BpcGVfbmFtZShwaXBlLT5waXBlKSwKIAkJICAgIGZiX2lkLAotCQkgICAgcHJp bWFyeS0+c3JjX3gsIHByaW1hcnktPnNyY195LAorCQkgICAgc3JjX3gsIHNyY195LAogCQkgICAg bW9kZS0+aGRpc3BsYXksIG1vZGUtPnZkaXNwbGF5KTsKIAogCQlyZXQgPSBkcm1Nb2RlU2V0Q3J0 YyhkaXNwbGF5LT5kcm1fZmQsCiAJCQkJICAgICBjcnRjX2lkLAogCQkJCSAgICAgZmJfaWQsCi0J CQkJICAgICBwcmltYXJ5LT5zcmNfeCwgcHJpbWFyeS0+c3JjX3ksCisJCQkJICAgICBzcmNfeCwg c3JjX3ksCiAJCQkJICAgICAmb3V0cHV0LT5pZCwKIAkJCQkgICAgIDEsCiAJCQkJICAgICBtb2Rl KTsKQEAgLTI2MDgsMTggKzI1NjIsMjcgQEAgZGlzcGxheV9jb21taXRfY2hhbmdlZChpZ3RfZGlz cGxheV90ICpkaXNwbGF5LCBlbnVtIGlndF9jb21taXRfc3R5bGUgcykKIAkJfQogCiAJCWZvcl9l YWNoX3BsYW5lX29uX3BpcGUoZGlzcGxheSwgcGlwZSwgcGxhbmUpIHsKLQkJCXBsYW5lLT5mYl9j aGFuZ2VkID0gZmFsc2U7Ci0JCQlwbGFuZS0+cG9zaXRpb25fY2hhbmdlZCA9IGZhbHNlOwotCQkJ cGxhbmUtPnNpemVfY2hhbmdlZCA9IGZhbHNlOworCQkJaWYgKHMgPT0gQ09NTUlUX0FUT01JQykg eworCQkJCWludCBmZDsKKwkJCQlwbGFuZS0+Y2hhbmdlZCA9IDA7CiAKLQkJCWlmIChzICE9IENP TU1JVF9MRUdBQ1kgfHwKLQkJCSAgICAhKHBsYW5lLT50eXBlID09IERSTV9QTEFORV9UWVBFX1BS SU1BUlkgfHwKLQkJCSAgICAgIHBsYW5lLT50eXBlID09IERSTV9QTEFORV9UWVBFX0NVUlNPUikp Ci0JCQkJcGxhbmUtPnJvdGF0aW9uX2NoYW5nZWQgPSBmYWxzZTsKKwkJCQlmZCA9IHBsYW5lLT52 YWx1ZXNbSUdUX1BMQU5FX0lOX0ZFTkNFX0ZEXTsKKwkJCQlpZiAoZmQgIT0gLTEpCisJCQkJCWNs b3NlKGZkKTsKIAotCQkJaWYgKHMgPT0gQ09NTUlUX0FUT01JQykKIAkJCQkvKiByZXNldCBmZW5j ZV9mZCB0byBwcmV2ZW50IGl0IGZyb20gYmVpbmcgc2V0IGZvciB0aGUgbmV4dCBjb21taXQgKi8K LQkJCQlpZ3RfcGxhbmVfc2V0X2ZlbmNlX2ZkKHBsYW5lLCAtMSk7CisJCQkJcGxhbmUtPnZhbHVl c1tJR1RfUExBTkVfSU5fRkVOQ0VfRkRdID0gLTE7CisJCQl9IGVsc2UgeworCQkJCXBsYW5lLT5j aGFuZ2VkICY9IH5JR1RfUExBTkVfQ09PUkRfQ0hBTkdFRF9NQVNLOworCisJCQkJaWd0X3BsYW5l X2NsZWFyX3Byb3BfY2hhbmdlZChwbGFuZSwgSUdUX1BMQU5FX0NSVENfSUQpOworCQkJCWlndF9w bGFuZV9jbGVhcl9wcm9wX2NoYW5nZWQocGxhbmUsIElHVF9QTEFORV9GQl9JRCk7CisKKwkJCQlp ZiAocyAhPSBDT01NSVRfTEVHQUNZIHx8CisJCQkJICAgICEocGxhbmUtPnR5cGUgPT0gRFJNX1BM QU5FX1RZUEVfUFJJTUFSWSB8fAorCQkJCSAgICAgIHBsYW5lLT50eXBlID09IERSTV9QTEFORV9U WVBFX0NVUlNPUikpCisJCQkJCWlndF9wbGFuZV9jbGVhcl9wcm9wX2NoYW5nZWQocGxhbmUsIElH VF9QTEFORV9ST1RBVElPTik7CisJCQl9CiAJCX0KIAl9CiAKQEAgLTI5MTMsMzAgKzI4NzYsMzEg QEAgdm9pZCBpZ3RfcGxhbmVfc2V0X2ZiKGlndF9wbGFuZV90ICpwbGFuZSwgc3RydWN0IGlndF9m YiAqZmIpCiAJTE9HKGRpc3BsYXksICIlcy4lZDogcGxhbmVfc2V0X2ZiKCVkKVxuIiwga21zdGVz dF9waXBlX25hbWUocGlwZS0+cGlwZSksCiAJICAgIHBsYW5lLT5pbmRleCwgZmIgPyBmYi0+ZmJf aWQgOiAwKTsKIAotCXBsYW5lLT5mYiA9IGZiOworCWlndF9wbGFuZV9zZXRfcHJvcF92YWx1ZShw bGFuZSwgSUdUX1BMQU5FX0NSVENfSUQsIGZiID8gcGlwZS0+Y3J0Y19pZCA6IDApOworCWlndF9w bGFuZV9zZXRfcHJvcF92YWx1ZShwbGFuZSwgSUdUX1BMQU5FX0ZCX0lELCBmYiA/IGZiLT5mYl9p ZCA6IDApOworCisJaWYgKHBsYW5lLT50eXBlID09IERSTV9QTEFORV9UWVBFX0NVUlNPUiAmJiBm YikKKwkJcGxhbmUtPmdlbV9oYW5kbGUgPSBmYi0+Z2VtX2hhbmRsZTsKKwllbHNlCisJCXBsYW5l LT5nZW1faGFuZGxlID0gMDsKKwogCS8qIGhhY2sgdG8ga2VlcCB0ZXN0cyB3b3JraW5nIHRoYXQg ZG9uJ3QgY2FsbCBpZ3RfcGxhbmVfc2V0X3NpemUoKSAqLwogCWlmIChmYikgewogCQkvKiBzZXQg ZGVmYXVsdCBwbGFuZSBzaXplIGFzIGZiIHNpemUgKi8KLQkJcGxhbmUtPmNydGNfdyA9IGZiLT53 aWR0aDsKLQkJcGxhbmUtPmNydGNfaCA9IGZiLT5oZWlnaHQ7CisJCWlndF9wbGFuZV9zZXRfcG9z aXRpb24ocGxhbmUsIDAsIDApOworCQlpZ3RfcGxhbmVfc2V0X3NpemUocGxhbmUsIGZiLT53aWR0 aCwgZmItPmhlaWdodCk7CiAKIAkJLyogc2V0IGRlZmF1bHQgc3JjIHBvcy9zaXplIGFzIGZiIHNp emUgKi8KLQkJcGxhbmUtPnNyY194ID0gMDsKLQkJcGxhbmUtPnNyY195ID0gMDsKLQkJcGxhbmUt PnNyY193ID0gZmItPndpZHRoOwotCQlwbGFuZS0+c3JjX2ggPSBmYi0+aGVpZ2h0OworCQlpZ3Rf ZmJfc2V0X3Bvc2l0aW9uKGZiLCBwbGFuZSwgMCwgMCk7CisJCWlndF9mYl9zZXRfc2l6ZShmYiwg cGxhbmUsIGZiLT53aWR0aCwgZmItPmhlaWdodCk7CiAJfSBlbHNlIHsKLQkJcGxhbmUtPnNyY194 ID0gMDsKLQkJcGxhbmUtPnNyY195ID0gMDsKLQkJcGxhbmUtPnNyY193ID0gMDsKLQkJcGxhbmUt PnNyY19oID0gMDsKKwkJaWd0X3BsYW5lX3NldF9wb3NpdGlvbihwbGFuZSwgMCwgMCk7CisJCWln dF9wbGFuZV9zZXRfc2l6ZShwbGFuZSwgMCwgMCk7CiAKLQkJcGxhbmUtPmNydGNfdyA9IDA7Ci0J CXBsYW5lLT5jcnRjX2ggPSAwOworCQkvKiBzZXQgZGVmYXVsdCBzcmMgcG9zL3NpemUgYXMgZmIg c2l6ZSAqLworCQlpZ3RfZmJfc2V0X3Bvc2l0aW9uKGZiLCBwbGFuZSwgMCwgMCk7CisJCWlndF9m Yl9zZXRfc2l6ZShmYiwgcGxhbmUsIDAsIDApOwogCX0KLQotCXBsYW5lLT5mYl9jaGFuZ2VkID0g dHJ1ZTsKLQlwbGFuZS0+c2l6ZV9jaGFuZ2VkID0gdHJ1ZTsKIH0KIAogLyoqCkBAIC0yOTQ5LDEy ICsyOTEzLDE5IEBAIHZvaWQgaWd0X3BsYW5lX3NldF9mYihpZ3RfcGxhbmVfdCAqcGxhbmUsIHN0 cnVjdCBpZ3RfZmIgKmZiKQogICovCiB2b2lkIGlndF9wbGFuZV9zZXRfZmVuY2VfZmQoaWd0X3Bs YW5lX3QgKnBsYW5lLCBpbnQgZmVuY2VfZmQpCiB7Ci0JY2xvc2UocGxhbmUtPmZlbmNlX2ZkKTsK KwlpbnQ2NF90IGZkOwogCi0JaWYgKGZjbnRsKGZlbmNlX2ZkLCBGX0dFVEZEKSAhPSAtMSkKLQkJ cGxhbmUtPmZlbmNlX2ZkID0gZHVwKGZlbmNlX2ZkKTsKLQllbHNlCi0JCXBsYW5lLT5mZW5jZV9m ZCA9IC0xOworCWZkID0gcGxhbmUtPnZhbHVlc1tJR1RfUExBTkVfSU5fRkVOQ0VfRkRdOworCWlm IChmZCAhPSAtMSkKKwkJY2xvc2UoZmQpOworCisJaWYgKGZlbmNlX2ZkICE9IC0xKSB7CisJCWZk ID0gZHVwKGZlbmNlX2ZkKTsKKwkJaWd0X2ZhaWxfb24oZmQgPT0gLTEpOworCX0gZWxzZQorCQlm ZCA9IC0xOworCisJaWd0X3BsYW5lX3NldF9wcm9wX3ZhbHVlKHBsYW5lLCBJR1RfUExBTkVfSU5f RkVOQ0VfRkQsIGZkKTsKIH0KIAogdm9pZCBpZ3RfcGxhbmVfc2V0X3Bvc2l0aW9uKGlndF9wbGFu ZV90ICpwbGFuZSwgaW50IHgsIGludCB5KQpAQCAtMjk2NSwxMCArMjkzNiw4IEBAIHZvaWQgaWd0 X3BsYW5lX3NldF9wb3NpdGlvbihpZ3RfcGxhbmVfdCAqcGxhbmUsIGludCB4LCBpbnQgeSkKIAlM T0coZGlzcGxheSwgIiVzLiVkOiBwbGFuZV9zZXRfcG9zaXRpb24oJWQsJWQpXG4iLAogCSAgICBr bXN0ZXN0X3BpcGVfbmFtZShwaXBlLT5waXBlKSwgcGxhbmUtPmluZGV4LCB4LCB5KTsKIAotCXBs YW5lLT5jcnRjX3ggPSB4OwotCXBsYW5lLT5jcnRjX3kgPSB5OwotCi0JcGxhbmUtPnBvc2l0aW9u X2NoYW5nZWQgPSB0cnVlOworCWlndF9wbGFuZV9zZXRfcHJvcF92YWx1ZShwbGFuZSwgSUdUX1BM QU5FX0NSVENfWCwgeCk7CisJaWd0X3BsYW5lX3NldF9wcm9wX3ZhbHVlKHBsYW5lLCBJR1RfUExB TkVfQ1JUQ19ZLCB5KTsKIH0KIAogLyoqCkBAIC0yOTg5LDEwICsyOTU4LDggQEAgdm9pZCBpZ3Rf cGxhbmVfc2V0X3NpemUoaWd0X3BsYW5lX3QgKnBsYW5lLCBpbnQgdywgaW50IGgpCiAJTE9HKGRp c3BsYXksICIlcy4lZDogcGxhbmVfc2V0X3NpemUgKCVkeCVkKVxuIiwKIAkgICAga21zdGVzdF9w aXBlX25hbWUocGlwZS0+cGlwZSksIHBsYW5lLT5pbmRleCwgdywgaCk7CiAKLQlwbGFuZS0+Y3J0 Y193ID0gdzsKLQlwbGFuZS0+Y3J0Y19oID0gaDsKLQotCXBsYW5lLT5zaXplX2NoYW5nZWQgPSB0 cnVlOworCWlndF9wbGFuZV9zZXRfcHJvcF92YWx1ZShwbGFuZSwgSUdUX1BMQU5FX0NSVENfVywg dyk7CisJaWd0X3BsYW5lX3NldF9wcm9wX3ZhbHVlKHBsYW5lLCBJR1RfUExBTkVfQ1JUQ19ILCBo KTsKIH0KIAogLyoqCkBAIC0zMDE0LDEwICsyOTgxLDggQEAgdm9pZCBpZ3RfZmJfc2V0X3Bvc2l0 aW9uKHN0cnVjdCBpZ3RfZmIgKmZiLCBpZ3RfcGxhbmVfdCAqcGxhbmUsCiAJTE9HKGRpc3BsYXks ICIlcy4lZDogZmJfc2V0X3Bvc2l0aW9uKCVkLCVkKVxuIiwKIAkgICAga21zdGVzdF9waXBlX25h bWUocGlwZS0+cGlwZSksIHBsYW5lLT5pbmRleCwgeCwgeSk7CiAKLQlwbGFuZS0+c3JjX3ggPSB4 OwotCXBsYW5lLT5zcmNfeSA9IHk7Ci0KLQlwbGFuZS0+ZmJfY2hhbmdlZCA9IHRydWU7CisJaWd0 X3BsYW5lX3NldF9wcm9wX3ZhbHVlKHBsYW5lLCBJR1RfUExBTkVfU1JDX1gsIElHVF9GSVhFRCh4 LCAwKSk7CisJaWd0X3BsYW5lX3NldF9wcm9wX3ZhbHVlKHBsYW5lLCBJR1RfUExBTkVfU1JDX1ks IElHVF9GSVhFRCh5LCAwKSk7CiB9CiAKIC8qKgpAQCAtMzA0MCwxMCArMzAwNSw4IEBAIHZvaWQg aWd0X2ZiX3NldF9zaXplKHN0cnVjdCBpZ3RfZmIgKmZiLCBpZ3RfcGxhbmVfdCAqcGxhbmUsCiAJ TE9HKGRpc3BsYXksICIlcy4lZDogZmJfc2V0X3NpemUoJWR4JWQpXG4iLAogCSAgICBrbXN0ZXN0 X3BpcGVfbmFtZShwaXBlLT5waXBlKSwgcGxhbmUtPmluZGV4LCB3LCBoKTsKIAotCXBsYW5lLT5z cmNfdyA9IHc7Ci0JcGxhbmUtPnNyY19oID0gaDsKLQotCXBsYW5lLT5mYl9jaGFuZ2VkID0gdHJ1 ZTsKKwlpZ3RfcGxhbmVfc2V0X3Byb3BfdmFsdWUocGxhbmUsIElHVF9QTEFORV9TUkNfVywgSUdU X0ZJWEVEKHcsIDApKTsKKwlpZ3RfcGxhbmVfc2V0X3Byb3BfdmFsdWUocGxhbmUsIElHVF9QTEFO RV9TUkNfSCwgSUdUX0ZJWEVEKGgsIDApKTsKIH0KIAogc3RhdGljIGNvbnN0IGNoYXIgKnJvdGF0 aW9uX25hbWUoaWd0X3JvdGF0aW9uX3Qgcm90YXRpb24pCkBAIC0zMDcxLDkgKzMwMzQsNyBAQCB2 b2lkIGlndF9wbGFuZV9zZXRfcm90YXRpb24oaWd0X3BsYW5lX3QgKnBsYW5lLCBpZ3Rfcm90YXRp b25fdCByb3RhdGlvbikKIAkgICAga21zdGVzdF9waXBlX25hbWUocGlwZS0+cGlwZSksCiAJICAg IHBsYW5lLT5pbmRleCwgcm90YXRpb25fbmFtZShyb3RhdGlvbikpOwogCi0JcGxhbmUtPnJvdGF0 aW9uID0gcm90YXRpb247Ci0KLQlwbGFuZS0+cm90YXRpb25fY2hhbmdlZCA9IHRydWU7CisJaWd0 X3BsYW5lX3NldF9wcm9wX3ZhbHVlKHBsYW5lLCBJR1RfUExBTkVfUk9UQVRJT04sIHJvdGF0aW9u KTsKIH0KIAogLyoqCmRpZmYgLS1naXQgYS9saWIvaWd0X2ttcy5oIGIvbGliL2lndF9rbXMuaApp bmRleCAxZWYxMGU3ZDUyNWMuLmY4N2Y4YmUzMTQyMSAxMDA2NDQKLS0tIGEvbGliL2lndF9rbXMu aAorKysgYi9saWIvaWd0X2ttcy5oCkBAIC0yNTIsNiArMjUyLDkgQEAgZW51bSBpZ3RfYXRvbWlj X3BsYW5lX3Byb3BlcnRpZXMgewogICAgICAgIElHVF9QTEFORV9DUlRDX1csCiAgICAgICAgSUdU X1BMQU5FX0NSVENfSCwKIAorLyogQXBwZW5kIG5ldyBwcm9wZXJ0aWVzIGFmdGVyIElHVF9QTEFO RV9DT09SRF9DSEFOR0VEX01BU0sgKi8KKyNkZWZpbmUgSUdUX1BMQU5FX0NPT1JEX0NIQU5HRURf TUFTSyAweGZmCisKICAgICAgICBJR1RfUExBTkVfRkJfSUQsCiAgICAgICAgSUdUX1BMQU5FX0NS VENfSUQsCiAgICAgICAgSUdUX1BMQU5FX0lOX0ZFTkNFX0ZELApAQCAtMjg2LDM3ICsyODksMTkg QEAgdHlwZWRlZiBzdHJ1Y3QgewogCWludCBpbmRleDsKIAkvKiBjYXBhYmlsaXRpZXMgKi8KIAlp bnQgdHlwZTsKLQkvKiBzdGF0ZSB0cmFja2luZyAqLwotCXVuc2lnbmVkIGludCBmYl9jaGFuZ2Vk ICAgICAgIDogMTsKLQl1bnNpZ25lZCBpbnQgcG9zaXRpb25fY2hhbmdlZCA6IDE7Ci0JdW5zaWdu ZWQgaW50IHJvdGF0aW9uX2NoYW5nZWQgOiAxOwotCXVuc2lnbmVkIGludCBzaXplX2NoYW5nZWQg ICAgIDogMTsKKwogCS8qCiAJICogZHJtX3BsYW5lIGNhbiBiZSBOVUxMIGZvciBwcmltYXJ5IGFu ZCBjdXJzb3IgcGxhbmVzICh3aGVuIG5vdAogCSAqIHVzaW5nIHRoZSBhdG9taWMgbW9kZXNldCBB UEkpCiAJICovCiAJZHJtTW9kZVBsYW5lICpkcm1fcGxhbmU7Ci0Jc3RydWN0IGlndF9mYiAqZmI7 Ci0KLQl1aW50MzJfdCByb3RhdGlvbl9wcm9wZXJ0eTsKLQotCS8qIHBvc2l0aW9uIHdpdGhpbiBw aXBlX3NyY193IHggcGlwZV9zcmNfaCAqLwotCWludCBjcnRjX3gsIGNydGNfeTsKLQkvKiBzaXpl IHdpdGhpbiBwaXBlX3NyY193IHggcGlwZV9zcmNfaCAqLwotCWludCBjcnRjX3csIGNydGNfaDsK IAotCS8qIHBvc2l0aW9uIHdpdGhpbiB0aGUgZnJhbWVidWZmZXIgKi8KLQl1aW50MzJfdCBzcmNf eDsKLQl1aW50MzJfdCBzcmNfeTsKLQkvKiBzaXplIHdpdGhpbiB0aGUgZnJhbWVidWZmZXIqLwot CXVpbnQzMl90IHNyY193OwotCXVpbnQzMl90IHNyY19oOworCS8qIGdlbSBoYW5kbGUgZm9yIGZi ICovCisJdWludDMyX3QgZ2VtX2hhbmRsZTsKIAotCWlndF9yb3RhdGlvbl90IHJvdGF0aW9uOwot Ci0JLyogaW4gZmVuY2UgZmQgKi8KLQlpbnQgZmVuY2VfZmQ7Ci0JdWludDMyX3QgYXRvbWljX3By b3BzX3BsYW5lW0lHVF9OVU1fUExBTkVfUFJPUFNdOworCXVpbnQ2NF90IGNoYW5nZWQ7CisJdWlu dDMyX3QgcHJvcHNbSUdUX05VTV9QTEFORV9QUk9QU107CisJdWludDY0X3QgdmFsdWVzW0lHVF9O VU1fUExBTkVfUFJPUFNdOwogfSBpZ3RfcGxhbmVfdDsKIAogc3RydWN0IGlndF9waXBlIHsKQEAg LTQwNyw3ICszOTIsNyBAQCBib29sIGlndF9waXBlX2dldF9wcm9wZXJ0eShpZ3RfcGlwZV90ICpw aXBlLCBjb25zdCBjaGFyICpuYW1lLAogCiBzdGF0aWMgaW5saW5lIGJvb2wgaWd0X3BsYW5lX3N1 cHBvcnRzX3JvdGF0aW9uKGlndF9wbGFuZV90ICpwbGFuZSkKIHsKLQlyZXR1cm4gcGxhbmUtPnJv dGF0aW9uX3Byb3BlcnR5ICE9IDA7CisJcmV0dXJuIHBsYW5lLT5wcm9wc1tJR1RfUExBTkVfUk9U QVRJT05dICE9IDA7CiB9CiB2b2lkIGlndF9waXBlX3JlcXVlc3Rfb3V0X2ZlbmNlKGlndF9waXBl X3QgKnBpcGUpOwogdm9pZCBpZ3RfcGlwZV9zZXRfZGVnYW1tYV9sdXQoaWd0X3BpcGVfdCAqcGlw ZSwgdm9pZCAqcHRyLCBzaXplX3QgbGVuZ3RoKTsKQEAgLTUyNywxNiArNTEyLDIwIEBAIHN0YXRp YyBpbmxpbmUgYm9vbCBpZ3Rfb3V0cHV0X2lzX2Nvbm5lY3RlZChpZ3Rfb3V0cHV0X3QgKm91dHB1 dCkKIAogI2RlZmluZSBJR1RfRklYRUQoaSxmKQkoKGkpIDw8IDE2IHwgKGYpKQogCi0vKioKLSAq IGlndF9hdG9taWNfcG9wdWxhdGVfcGxhbmVfcmVxOgotICogQHJlcTogQSBwb2ludGVyIHRvIGRy bU1vZGVBdG9taWNSZXEKLSAqIEBwbGFuZTogQSBwb2ludGVyIGlndF9wbGFuZV90Ci0gKiBAcHJv cDogb25lIG9mIGlndF9hdG9taWNfcGxhbmVfcHJvcGVydGllcwotICogQHZhbHVlOiB0aGUgdmFs dWUgdG8gYWRkCi0gKi8KLSNkZWZpbmUgaWd0X2F0b21pY19wb3B1bGF0ZV9wbGFuZV9yZXEocmVx LCBwbGFuZSwgcHJvcCwgdmFsdWUpIFwKLQlpZ3RfYXNzZXJ0X2x0KDAsIGRybU1vZGVBdG9taWNB ZGRQcm9wZXJ0eShyZXEsIHBsYW5lLT5kcm1fcGxhbmUtPnBsYW5lX2lkLFwKLQkJCQkJCSAgcGxh bmUtPmF0b21pY19wcm9wc19wbGFuZVtwcm9wXSwgdmFsdWUpKQorI2RlZmluZSBpZ3RfcGxhbmVf aXNfcHJvcF9jaGFuZ2VkKHBsYW5lLCBwcm9wKSBcCisJKCEhKChwbGFuZSktPmNoYW5nZWQgJiAo MSA8PCAocHJvcCkpKSkKKworI2RlZmluZSBpZ3RfcGxhbmVfc2V0X3Byb3BfY2hhbmdlZChwbGFu ZSwgcHJvcCkgXAorCShwbGFuZSktPmNoYW5nZWQgfD0gMSA8PCAocHJvcCkKKworI2RlZmluZSBp Z3RfcGxhbmVfY2xlYXJfcHJvcF9jaGFuZ2VkKHBsYW5lLCBwcm9wKSBcCisJKHBsYW5lKS0+Y2hh bmdlZCAmPSB+KDEgPDwgKHByb3ApKQorCisjZGVmaW5lIGlndF9wbGFuZV9zZXRfcHJvcF92YWx1 ZShwbGFuZSwgcHJvcCwgdmFsdWUpIFwKKwlkbyB7IFwKKwkJcGxhbmUtPnZhbHVlc1twcm9wXSA9 IHZhbHVlOyBcCisJCWlndF9wbGFuZV9zZXRfcHJvcF9jaGFuZ2VkKHBsYW5lLCBwcm9wKTsgXAor CX0gd2hpbGUgKDApCiAKIC8qKgogICogaWd0X2F0b21pY19wb3B1bGF0ZV9jcnRjX3JlcToKZGlm ZiAtLWdpdCBhL3Rlc3RzL2ttc19hdG9taWNfaW50ZXJydXB0aWJsZS5jIGIvdGVzdHMva21zX2F0 b21pY19pbnRlcnJ1cHRpYmxlLmMKaW5kZXggMmQxOWZlOTY3ODA5Li41NTcwODU0MzkwZWEgMTAw NjQ0Ci0tLSBhL3Rlc3RzL2ttc19hdG9taWNfaW50ZXJydXB0aWJsZS5jCisrKyBiL3Rlc3RzL2tt c19hdG9taWNfaW50ZXJydXB0aWJsZS5jCkBAIC0xNjEsMTIgKzE2MSwxMiBAQCBzdGF0aWMgdm9p ZCBydW5fcGxhbmVfdGVzdChpZ3RfZGlzcGxheV90ICpkaXNwbGF5LCBlbnVtIHBpcGUgcGlwZSwg aWd0X291dHB1dF90CiAJCQkJCS8qIGNvbm5lY3RvcjogMSBwcm9wICovCiAJCQkJCW91dHB1dC0+ cHJvcHNbSUdUX0NPTk5FQ1RPUl9DUlRDX0lEXSwKIAkJCQkJLyogcGxhbmU6IHJlbWFpbmRlciBw cm9wcyAqLwotCQkJCQlwbGFuZS0+YXRvbWljX3Byb3BzX3BsYW5lW0lHVF9QTEFORV9DUlRDX0lE XSwKLQkJCQkJcGxhbmUtPmF0b21pY19wcm9wc19wbGFuZVtJR1RfUExBTkVfRkJfSURdLAotCQkJ CQlwbGFuZS0+YXRvbWljX3Byb3BzX3BsYW5lW0lHVF9QTEFORV9TUkNfV10sCi0JCQkJCXBsYW5l LT5hdG9taWNfcHJvcHNfcGxhbmVbSUdUX1BMQU5FX1NSQ19IXSwKLQkJCQkJcGxhbmUtPmF0b21p Y19wcm9wc19wbGFuZVtJR1RfUExBTkVfQ1JUQ19XXSwKLQkJCQkJcGxhbmUtPmF0b21pY19wcm9w c19wbGFuZVtJR1RfUExBTkVfQ1JUQ19IXQorCQkJCQlwbGFuZS0+cHJvcHNbSUdUX1BMQU5FX0NS VENfSURdLAorCQkJCQlwbGFuZS0+cHJvcHNbSUdUX1BMQU5FX0ZCX0lEXSwKKwkJCQkJcGxhbmUt PnByb3BzW0lHVF9QTEFORV9TUkNfV10sCisJCQkJCXBsYW5lLT5wcm9wc1tJR1RfUExBTkVfU1JD X0hdLAorCQkJCQlwbGFuZS0+cHJvcHNbSUdUX1BMQU5FX0NSVENfV10sCisJCQkJCXBsYW5lLT5w cm9wc1tJR1RfUExBTkVfQ1JUQ19IXQogCQkJCX07CiAJCQkJdWludDY0X3QgcHJvcF92YWxzW10g PSB7CiAJCQkJCS8qIGNydGMgKi8KZGlmZiAtLWdpdCBhL3Rlc3RzL2ttc19yb3RhdGlvbl9jcmMu YyBiL3Rlc3RzL2ttc19yb3RhdGlvbl9jcmMuYwppbmRleCA0ZDJlZjFjMTg0ZjAuLjQ5MzJhMGQ0 NDQxMCAxMDA2NDQKLS0tIGEvdGVzdHMva21zX3JvdGF0aW9uX2NyYy5jCisrKyBiL3Rlc3RzL2tt c19yb3RhdGlvbl9jcmMuYwpAQCAtMTIyLDExICsxMjIsMTEgQEAgc3RhdGljIHZvaWQgcHJlcGFy ZV9jcnRjKGRhdGFfdCAqZGF0YSwgaWd0X291dHB1dF90ICpvdXRwdXQsIGVudW0gcGlwZSBwaXBl LAogCWlndF9wbGFuZV9zZXRfZmIocHJpbWFyeSwgJmRhdGEtPmZiX21vZGVzZXQpOwogCiAJaWYg KGNvbW1pdCA8IENPTU1JVF9BVE9NSUMpIHsKLQkJcHJpbWFyeS0+cm90YXRpb25fY2hhbmdlZCA9 IGZhbHNlOworCQlpZ3RfcGxhbmVfY2xlYXJfcHJvcF9jaGFuZ2VkKHByaW1hcnksIElHVF9QTEFO RV9ST1RBVElPTik7CiAJCWlndF9kaXNwbGF5X2NvbW1pdChkaXNwbGF5KTsKIAogCQlpZiAocGxh bmUtPnR5cGUgPT0gRFJNX1BMQU5FX1RZUEVfUFJJTUFSWSkKLQkJCXByaW1hcnktPnJvdGF0aW9u X2NoYW5nZWQgPSB0cnVlOworCQkJaWd0X3BsYW5lX3NldF9wcm9wX2NoYW5nZWQocHJpbWFyeSwg SUdUX1BMQU5FX1JPVEFUSU9OKTsKIAl9CiAKIAlpZ3RfcGxhbmVfc2V0X2ZiKHBsYW5lLCBOVUxM KTsKLS0gCjIuMTQuMQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Au b3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwt Z2Z4Cg==