From mboxrd@z Thu Jan 1 00:00:00 1970 From: Maarten Lankhorst Subject: [PATCH i-g-t v2 5/9] tests/kms_plane_scaling: Clean up tests to work better with igt_kms. Date: Fri, 12 Jan 2018 11:21:12 +0100 Message-ID: <20180112102116.4670-6-maarten.lankhorst@linux.intel.com> References: <20180112102116.4670-1-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 [141.105.120.124]) by gabe.freedesktop.org (Postfix) with ESMTPS id 0599D6E72B for ; Fri, 12 Jan 2018 12:48:46 +0000 (UTC) In-Reply-To: <20180112102116.4670-1-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 VGhlIHRlc3Qgb25seSBydW5zIG9uIGdlbjkrLCBzbyB3ZSBjYW4gc2FmZWx5IHJlcGxhY2UgYWxs IGNhbGxzIHdpdGgKQ09NTUlUX0FUT01JQy4KCkFsc28gcGVyZm9ybSBzb21lIGNsZWFudXBzIGJ5 IG1ha2luZyBmYiBhbiBhcnJheSwgYW5kIGNsZWFuaW5nIHVwIGluCnByZXBhcmVfY3J0Yy4gVGhp cyB3YXkgZmFpbGVkIHN1YnRlc3RzIHdvbid0IGNhdXNlIGZhaWx1cmVzIGluIG90aGVyCnN1YnRl c3RzLgoKU2lnbmVkLW9mZi1ieTogTWFhcnRlbiBMYW5raG9yc3QgPG1hYXJ0ZW4ubGFua2hvcnN0 QGxpbnV4LmludGVsLmNvbT4KLS0tCiB0ZXN0cy9rbXNfcGxhbmVfc2NhbGluZy5jIHwgMjM0ICsr KysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIDEgZmlsZSBjaGFu Z2VkLCA5OSBpbnNlcnRpb25zKCspLCAxMzUgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvdGVz dHMva21zX3BsYW5lX3NjYWxpbmcuYyBiL3Rlc3RzL2ttc19wbGFuZV9zY2FsaW5nLmMKaW5kZXgg NjI0ZTIwNDQ3NzgwLi40NGZmOTFkNzczOGYgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2ttc19wbGFuZV9z Y2FsaW5nLmMKKysrIGIvdGVzdHMva21zX3BsYW5lX3NjYWxpbmcuYwpAQCAtNDAsOTMgKzQwLDY4 IEBAIHR5cGVkZWYgc3RydWN0IHsKIAogCWludCBudW1fc2NhbGVyczsKIAotCXN0cnVjdCBpZ3Rf ZmIgZmIxOwotCXN0cnVjdCBpZ3RfZmIgZmIyOwotCXN0cnVjdCBpZ3RfZmIgZmIzOwotCWludCBm Yl9pZDE7Ci0JaW50IGZiX2lkMjsKLQlpbnQgZmJfaWQzOwotCisJc3RydWN0IGlndF9mYiBmYlsz XTsKIAlpZ3RfcGxhbmVfdCAqcGxhbmUxOwogCWlndF9wbGFuZV90ICpwbGFuZTI7CiAJaWd0X3Bs YW5lX3QgKnBsYW5lMzsKLQlpZ3RfcGxhbmVfdCAqcGxhbmU0OwogfSBkYXRhX3Q7CiAKICNkZWZp bmUgRklMRV9OQU1FICAgIjEwODBwLWxlZnQucG5nIgogCi1zdGF0aWMgdm9pZCBwcmVwYXJlX2Ny dGMoZGF0YV90ICpkYXRhLCBpZ3Rfb3V0cHV0X3QgKm91dHB1dCwgZW51bSBwaXBlIHBpcGUsCi0J CQlpZ3RfcGxhbmVfdCAqcGxhbmUsIGRybU1vZGVNb2RlSW5mbyAqbW9kZSwgZW51bSBpZ3RfY29t bWl0X3N0eWxlIHMpCitzdGF0aWMgdm9pZCBjbGVhbnVwX2NydGMoZGF0YV90ICpkYXRhKQogewot CWlndF9kaXNwbGF5X3QgKmRpc3BsYXkgPSAmZGF0YS0+ZGlzcGxheTsKLQotCWlndF9vdXRwdXRf c2V0X3BpcGUob3V0cHV0LCBwaXBlKTsKKwlpbnQgaTsKIAotCS8qIGNyZWF0ZSB0aGUgcGlwZV9j cmMgb2JqZWN0IGZvciB0aGlzIHBpcGUgKi8KIAlpZ3RfcGlwZV9jcmNfZnJlZShkYXRhLT5waXBl X2NyYyk7Ci0JZGF0YS0+cGlwZV9jcmMgPSBpZ3RfcGlwZV9jcmNfbmV3KGRhdGEtPmRybV9mZCwg cGlwZSwgSU5URUxfUElQRV9DUkNfU09VUkNFX0FVVE8pOworCWRhdGEtPnBpcGVfY3JjID0gTlVM TDsKIAotCS8qIGJlZm9yZSBhbGxvY2F0aW5nLCBmcmVlIGlmIGFueSBvbGRlciBmYiAqLwotCWlm IChkYXRhLT5mYl9pZDEpIHsKLQkJaWd0X3JlbW92ZV9mYihkYXRhLT5kcm1fZmQsICZkYXRhLT5m YjEpOwotCQlkYXRhLT5mYl9pZDEgPSAwOwotCX0KKwlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0la RShkYXRhLT5mYik7IGkrKykgeworCQlpZiAoIWRhdGEtPmZiW2ldLmZiX2lkKQorCQkJY29udGlu dWU7CiAKLQkvKiBhbGxvY2F0ZSBmYiBmb3IgcGxhbmUgMSAqLwotCWRhdGEtPmZiX2lkMSA9IGln dF9jcmVhdGVfcGF0dGVybl9mYihkYXRhLT5kcm1fZmQsCi0JCQkJCSAgICAgbW9kZS0+aGRpc3Bs YXksIG1vZGUtPnZkaXNwbGF5LAotCQkJCQkgICAgIERSTV9GT1JNQVRfWFJHQjg4ODgsCi0JCQkJ CSAgICAgTE9DQUxfSTkxNV9GT1JNQVRfTU9EX1hfVElMRUQsIC8qIHRpbGVkICovCi0JCQkJCSAg ICAgJmRhdGEtPmZiMSk7Ci0JaWd0X2Fzc2VydChkYXRhLT5mYl9pZDEpOwotCi0JLyoKLQkgKiBX ZSBhbHdheXMgc2V0IHRoZSBwcmltYXJ5IHBsYW5lIHRvIGFjdHVhbGx5IGVuYWJsZSB0aGUgcGlw ZSBhcwotCSAqIHRoZXJlJ3Mgbm8gd2F5ICh0aGF0IHdvcmtzKSB0byBsaWdodCB1cCBhIHBpcGUg d2l0aCBvbmx5IGEgc3ByaXRlCi0JICogcGxhbmUgZW5hYmxlZCBhdCB0aGUgbW9tZW50LgotCSAq LwotCWlmIChwbGFuZS0+dHlwZSAhPSBEUk1fUExBTkVfVFlQRV9QUklNQVJZKSB7Ci0JCWlndF9w bGFuZV90ICpwcmltYXJ5OwotCi0JCXByaW1hcnkgPSBpZ3Rfb3V0cHV0X2dldF9wbGFuZV90eXBl KG91dHB1dCwgRFJNX1BMQU5FX1RZUEVfUFJJTUFSWSk7Ci0JCWlndF9wbGFuZV9zZXRfZmIocHJp bWFyeSwgJmRhdGEtPmZiMSk7CisJCWlndF9yZW1vdmVfZmIoZGF0YS0+ZHJtX2ZkLCAmZGF0YS0+ ZmJbaV0pOworCQlkYXRhLT5mYltpXS5mYl9pZCA9IDA7CiAJfQotCi0JaWd0X3BsYW5lX3NldF9m YihwbGFuZSwgJmRhdGEtPmZiMSk7Ci0JaWd0X2Rpc3BsYXlfY29tbWl0MihkaXNwbGF5LCBzKTsK IH0KIAotc3RhdGljIHZvaWQgY2xlYW51cF9jcnRjKGRhdGFfdCAqZGF0YSwgaWd0X291dHB1dF90 ICpvdXRwdXQsIGlndF9wbGFuZV90ICpwbGFuZSkKK3N0YXRpYyB2b2lkIHByZXBhcmVfY3J0Yyhk YXRhX3QgKmRhdGEsIGlndF9vdXRwdXRfdCAqb3V0cHV0LCBlbnVtIHBpcGUgcGlwZSwKKwkJCWln dF9wbGFuZV90ICpwbGFuZSwgZHJtTW9kZU1vZGVJbmZvICptb2RlKQogewogCWlndF9kaXNwbGF5 X3QgKmRpc3BsYXkgPSAmZGF0YS0+ZGlzcGxheTsKIAotCWlndF9waXBlX2NyY19mcmVlKGRhdGEt PnBpcGVfY3JjKTsKLQlkYXRhLT5waXBlX2NyYyA9IE5VTEw7CisJY2xlYW51cF9jcnRjKGRhdGEp OwogCi0JaWYgKGRhdGEtPmZiX2lkMSkgewotCQlpZ3RfcmVtb3ZlX2ZiKGRhdGEtPmRybV9mZCwg JmRhdGEtPmZiMSk7Ci0JCWRhdGEtPmZiX2lkMSA9IDA7Ci0JfQotCWlmIChkYXRhLT5mYl9pZDIp IHsKLQkJaWd0X3JlbW92ZV9mYihkYXRhLT5kcm1fZmQsICZkYXRhLT5mYjIpOwotCQlkYXRhLT5m Yl9pZDIgPSAwOwotCX0KLQlpZiAoZGF0YS0+ZmJfaWQzKSB7Ci0JCWlndF9yZW1vdmVfZmIoZGF0 YS0+ZHJtX2ZkLCAmZGF0YS0+ZmIzKTsKLQkJZGF0YS0+ZmJfaWQzID0gMDsKLQl9CisJaWd0X2Rp c3BsYXlfcmVzZXQoZGlzcGxheSk7CisJaWd0X291dHB1dF9zZXRfcGlwZShvdXRwdXQsIHBpcGUp OworCisJLyogY3JlYXRlIHRoZSBwaXBlX2NyYyBvYmplY3QgZm9yIHRoaXMgcGlwZSAqLworCWRh dGEtPnBpcGVfY3JjID0gaWd0X3BpcGVfY3JjX25ldyhkYXRhLT5kcm1fZmQsIHBpcGUsIElOVEVM X1BJUEVfQ1JDX1NPVVJDRV9BVVRPKTsKKworCS8qIGFsbG9jYXRlIGZiIGZvciBwbGFuZSAxICov CisJaWd0X2NyZWF0ZV9wYXR0ZXJuX2ZiKGRhdGEtPmRybV9mZCwgbW9kZS0+aGRpc3BsYXksIG1v ZGUtPnZkaXNwbGF5LAorCQkJICAgICAgRFJNX0ZPUk1BVF9YUkdCODg4OCwKKwkJCSAgICAgIExP Q0FMX0k5MTVfRk9STUFUX01PRF9YX1RJTEVELCAvKiB0aWxlZCAqLworCQkJICAgICAgJmRhdGEt PmZiWzBdKTsKKworCWlndF9wbGFuZV9zZXRfZmIocGxhbmUsICZkYXRhLT5mYlswXSk7CiAKIAlp ZiAocGxhbmUtPnR5cGUgIT0gRFJNX1BMQU5FX1RZUEVfUFJJTUFSWSkgewogCQlpZ3RfcGxhbmVf dCAqcHJpbWFyeTsKKwkJaW50IHJldDsKIAorCQkvKiBEbyB3ZSBzdWNjZWVkIHdpdGhvdXQgZW5h YmxpbmcgdGhlIHByaW1hcnkgcGxhbmU/ICovCisJCXJldCA9IGlndF9kaXNwbGF5X3RyeV9jb21t aXQyKGRpc3BsYXksIENPTU1JVF9BVE9NSUMpOworCQlpZiAoIXJldCkKKwkJCXJldHVybjsKKwor CQkvKgorCQkgKiBGYWxsYmFjazogc2V0IHRoZSBwcmltYXJ5IHBsYW5lIHRvIGFjdHVhbGx5IGVu YWJsZSB0aGUgcGlwZS4KKwkJICogU29tZSBkcml2ZXJzIGFsd2F5cyByZXF1aXJlIHRoZSBwcmlt YXJ5IHBsYW5lIHRvIGJlIGVuYWJsZWQuCisJCSAqLwogCQlwcmltYXJ5ID0gaWd0X291dHB1dF9n ZXRfcGxhbmVfdHlwZShvdXRwdXQsIERSTV9QTEFORV9UWVBFX1BSSU1BUlkpOwotCQlpZ3RfcGxh bmVfc2V0X2ZiKHByaW1hcnksIE5VTEwpOworCQlpZ3RfcGxhbmVfc2V0X2ZiKHByaW1hcnksICZk YXRhLT5mYlswXSk7CiAJfQotCi0JaWd0X3BsYW5lX3NldF9mYihwbGFuZSwgTlVMTCk7Ci0JaWd0 X291dHB1dF9zZXRfcGlwZShvdXRwdXQsIFBJUEVfQU5ZKTsKLQotCWlndF9kaXNwbGF5X2NvbW1p dDIoZGlzcGxheSwgQ09NTUlUX1VOSVZFUlNBTCk7CisJaWd0X2Rpc3BsYXlfY29tbWl0MihkaXNw bGF5LCBDT01NSVRfQVRPTUlDKTsKIH0KIAogLyogZG9lcyBpdGVyYXRpdmUgc2NhbGluZyBvbiBw bGFuZTIgKi8KQEAgLTEzNCwzMSArMTA5LDMxIEBAIHN0YXRpYyB2b2lkIGl0ZXJhdGVfcGxhbmVf c2NhbGluZyhkYXRhX3QgKmQsIGRybU1vZGVNb2RlSW5mbyAqbW9kZSkKIHsKIAlpZ3RfZGlzcGxh eV90ICpkaXNwbGF5ID0gJmQtPmRpc3BsYXk7CiAKLQlpZiAobW9kZS0+aGRpc3BsYXkgPj0gZC0+ ZmIyLndpZHRoKSB7CisJaWYgKG1vZGUtPmhkaXNwbGF5ID49IGQtPmZiWzFdLndpZHRoKSB7CiAJ CWludCB3LCBoOwogCQkvKiBmaXhlZCBmYiAqLwotCQlpZ3RfZmJfc2V0X3Bvc2l0aW9uKCZkLT5m YjIsIGQtPnBsYW5lMiwgMCwgMCk7Ci0JCWlndF9mYl9zZXRfc2l6ZSgmZC0+ZmIyLCBkLT5wbGFu ZTIsIGQtPmZiMi53aWR0aCwgZC0+ZmIyLmhlaWdodCk7CisJCWlndF9mYl9zZXRfcG9zaXRpb24o JmQtPmZiWzFdLCBkLT5wbGFuZTIsIDAsIDApOworCQlpZ3RfZmJfc2V0X3NpemUoJmQtPmZiWzFd LCBkLT5wbGFuZTIsIGQtPmZiWzFdLndpZHRoLCBkLT5mYlsxXS5oZWlnaHQpOwogCQlpZ3RfcGxh bmVfc2V0X3Bvc2l0aW9uKGQtPnBsYW5lMiwgMCwgMCk7CiAKIAkJLyogYWRqdXN0IHBsYW5lIHNp emUgKi8KLQkJZm9yICh3ID0gZC0+ZmIyLndpZHRoOyB3IDw9IG1vZGUtPmhkaXNwbGF5OyB3Kz0x MCkgewotCQkJaCA9IHcgKiBkLT5mYjIuaGVpZ2h0IC8gZC0+ZmIyLndpZHRoOworCQlmb3IgKHcg PSBkLT5mYlsxXS53aWR0aDsgdyA8PSBtb2RlLT5oZGlzcGxheTsgdys9MTApIHsKKwkJCWggPSB3 ICogZC0+ZmJbMV0uaGVpZ2h0IC8gZC0+ZmJbMV0ud2lkdGg7CiAJCQlpZ3RfcGxhbmVfc2V0X3Np emUoZC0+cGxhbmUyLCB3LCBoKTsKLQkJCWlndF9kaXNwbGF5X2NvbW1pdDIoZGlzcGxheSwgQ09N TUlUX1VOSVZFUlNBTCk7CisJCQlpZ3RfZGlzcGxheV9jb21taXQyKGRpc3BsYXksIENPTU1JVF9B VE9NSUMpOwogCQl9CiAJfSBlbHNlIHsKIAkJaW50IHcsIGg7CiAJCS8qIGZpeGVkIHBsYW5lICov CiAJCWlndF9wbGFuZV9zZXRfcG9zaXRpb24oZC0+cGxhbmUyLCAwLCAwKTsKIAkJaWd0X3BsYW5l X3NldF9zaXplKGQtPnBsYW5lMiwgbW9kZS0+aGRpc3BsYXksIG1vZGUtPnZkaXNwbGF5KTsKLQkJ aWd0X2ZiX3NldF9wb3NpdGlvbigmZC0+ZmIyLCBkLT5wbGFuZTIsIDAsIDApOworCQlpZ3RfZmJf c2V0X3Bvc2l0aW9uKCZkLT5mYlsxXSwgZC0+cGxhbmUyLCAwLCAwKTsKIAogCQkvKiBhZGp1c3Qg ZmIgc2l6ZSAqLwotCQlmb3IgKHcgPSBtb2RlLT5oZGlzcGxheTsgdyA8PSBkLT5mYjIud2lkdGg7 IHcrPTEwKSB7CisJCWZvciAodyA9IG1vZGUtPmhkaXNwbGF5OyB3IDw9IGQtPmZiWzFdLndpZHRo OyB3Kz0xMCkgewogCQkJaCA9IHcgKiBtb2RlLT5oZGlzcGxheSAvIG1vZGUtPnZkaXNwbGF5Owot CQkJaWd0X2ZiX3NldF9zaXplKCZkLT5mYjIsIGQtPnBsYW5lMiwgdywgaCk7Ci0JCQlpZ3RfZGlz cGxheV9jb21taXQyKGRpc3BsYXksIENPTU1JVF9VTklWRVJTQUwpOworCQkJaWd0X2ZiX3NldF9z aXplKCZkLT5mYlsxXSwgZC0+cGxhbmUyLCB3LCBoKTsKKwkJCWlndF9kaXNwbGF5X2NvbW1pdDIo ZGlzcGxheSwgQ09NTUlUX0FUT01JQyk7CiAJCX0KIAl9CiB9CkBAIC0xNzIsMTMxICsxNDcsMTE5 IEBAIHRlc3RfcGxhbmVfc2NhbGluZ19vbl9waXBlKGRhdGFfdCAqZCwgZW51bSBwaXBlIHBpcGUs IGlndF9vdXRwdXRfdCAqb3V0cHV0KQogCiAJaWd0X3JlcXVpcmUoZC0+bnVtX3NjYWxlcnMgPiAw KTsKIAotCWlndF9kaXNwbGF5X3Jlc2V0KGRpc3BsYXkpOwotCWlndF9vdXRwdXRfc2V0X3BpcGUo b3V0cHV0LCBwaXBlKTsKIAltb2RlID0gaWd0X291dHB1dF9nZXRfbW9kZShvdXRwdXQpOwogCi0J LyogYWxsb2NhdGUgZmIyIHdpdGggaW1hZ2Ugc2l6ZSAqLwotCWQtPmZiX2lkMiA9IGlndF9jcmVh dGVfaW1hZ2VfZmIoZC0+ZHJtX2ZkLCAwLCAwLAotCQkJCQlEUk1fRk9STUFUX1hSR0I4ODg4LAot CQkJCQlMT0NBTF9JOTE1X0ZPUk1BVF9NT0RfWF9USUxFRCwgLyogdGlsZWQgKi8KLQkJCQkJRklM RV9OQU1FLCAmZC0+ZmIyKTsKLQlpZ3RfYXNzZXJ0KGQtPmZiX2lkMik7CisJLyogU2V0IHVwIGRp c3BsYXkgd2l0aCBwbGFuZSAxICovCisJZC0+cGxhbmUxID0gJmRpc3BsYXktPnBpcGVzW3BpcGVd LnBsYW5lc1swXTsKKwlwcmVwYXJlX2NydGMoZCwgb3V0cHV0LCBwaXBlLCBkLT5wbGFuZTEsIG1v ZGUpOwogCi0JZC0+ZmJfaWQzID0gaWd0X2NyZWF0ZV9wYXR0ZXJuX2ZiKGQtPmRybV9mZCwKLQkJ CQkJICBtb2RlLT5oZGlzcGxheSwgbW9kZS0+dmRpc3BsYXksCi0JCQkJCSAgRFJNX0ZPUk1BVF9Y UkdCODg4OCwKLQkJCQkJICBMT0NBTF9JOTE1X0ZPUk1BVF9NT0RfWF9USUxFRCwgLyogdGlsZWQg Ki8KLQkJCQkJICAmZC0+ZmIzKTsKLQlpZ3RfYXNzZXJ0KGQtPmZiX2lkMyk7CisJLyogYWxsb2Nh dGUgZmJbMV0gd2l0aCBpbWFnZSBzaXplICovCisJaWd0X2NyZWF0ZV9pbWFnZV9mYihkLT5kcm1f ZmQsIDAsIDAsCisJCQkgICAgRFJNX0ZPUk1BVF9YUkdCODg4OCwKKwkJCSAgICBMT0NBTF9JOTE1 X0ZPUk1BVF9NT0RfWF9USUxFRCwgLyogdGlsZWQgKi8KKwkJCSAgICBGSUxFX05BTUUsICZkLT5m YlsxXSk7CiAKLQkvKiBTZXQgdXAgZGlzcGxheSB3aXRoIHBsYW5lIDEgKi8KLQlkLT5wbGFuZTEg PSBpZ3Rfb3V0cHV0X2dldF9wbGFuZShvdXRwdXQsIDApOwotCXByZXBhcmVfY3J0YyhkLCBvdXRw dXQsIHBpcGUsIGQtPnBsYW5lMSwgbW9kZSwgQ09NTUlUX1VOSVZFUlNBTCk7CisJaWd0X2NyZWF0 ZV9wYXR0ZXJuX2ZiKGQtPmRybV9mZCwKKwkJCSAgICAgIG1vZGUtPmhkaXNwbGF5LCBtb2RlLT52 ZGlzcGxheSwKKwkJCSAgICAgIERSTV9GT1JNQVRfWFJHQjg4ODgsCisJCQkgICAgICBMT0NBTF9J OTE1X0ZPUk1BVF9NT0RfWF9USUxFRCwgLyogdGlsZWQgKi8KKwkJCSAgICAgICZkLT5mYlsyXSk7 CiAKIAlpZiAocHJpbWFyeV9wbGFuZV9zY2FsaW5nKSB7CiAJCS8qIFByaW1hcnkgcGxhbmUgdXBz Y2FsaW5nICovCi0JCWlndF9mYl9zZXRfcG9zaXRpb24oJmQtPmZiMSwgZC0+cGxhbmUxLCAxMDAs IDEwMCk7Ci0JCWlndF9mYl9zZXRfc2l6ZSgmZC0+ZmIxLCBkLT5wbGFuZTEsIDUwMCwgNTAwKTsK KwkJaWd0X2ZiX3NldF9wb3NpdGlvbigmZC0+ZmJbMF0sIGQtPnBsYW5lMSwgMTAwLCAxMDApOwor CQlpZ3RfZmJfc2V0X3NpemUoJmQtPmZiWzBdLCBkLT5wbGFuZTEsIDUwMCwgNTAwKTsKIAkJaWd0 X3BsYW5lX3NldF9wb3NpdGlvbihkLT5wbGFuZTEsIDAsIDApOwogCQlpZ3RfcGxhbmVfc2V0X3Np emUoZC0+cGxhbmUxLCBtb2RlLT5oZGlzcGxheSwgbW9kZS0+dmRpc3BsYXkpOwotCQlpZ3RfZGlz cGxheV9jb21taXQyKGRpc3BsYXksIENPTU1JVF9VTklWRVJTQUwpOworCQlpZ3RfZGlzcGxheV9j b21taXQyKGRpc3BsYXksIENPTU1JVF9BVE9NSUMpOwogCiAJCS8qIFByaW1hcnkgcGxhbmUgMTox IG5vIHNjYWxpbmcgKi8KLQkJaWd0X2ZiX3NldF9wb3NpdGlvbigmZC0+ZmIxLCBkLT5wbGFuZTEs IDAsIDApOwotCQlpZ3RfZmJfc2V0X3NpemUoJmQtPmZiMSwgZC0+cGxhbmUxLCBkLT5mYjEud2lk dGgsIGQtPmZiMS5oZWlnaHQpOworCQlpZ3RfZmJfc2V0X3Bvc2l0aW9uKCZkLT5mYlswXSwgZC0+ cGxhbmUxLCAwLCAwKTsKKwkJaWd0X2ZiX3NldF9zaXplKCZkLT5mYlswXSwgZC0+cGxhbmUxLCBk LT5mYlswXS53aWR0aCwgZC0+ZmJbMF0uaGVpZ2h0KTsKIAkJaWd0X3BsYW5lX3NldF9wb3NpdGlv bihkLT5wbGFuZTEsIDAsIDApOwogCQlpZ3RfcGxhbmVfc2V0X3NpemUoZC0+cGxhbmUxLCBtb2Rl LT5oZGlzcGxheSwgbW9kZS0+dmRpc3BsYXkpOwotCQlpZ3RfZGlzcGxheV9jb21taXQyKGRpc3Bs YXksIENPTU1JVF9VTklWRVJTQUwpOworCQlpZ3RfZGlzcGxheV9jb21taXQyKGRpc3BsYXksIENP TU1JVF9BVE9NSUMpOwogCX0KIAotCS8qIFNldCB1cCBmYjItPnBsYW5lMiBtYXBwaW5nLiAqLwor CS8qIFNldCB1cCBmYlsxXS0+cGxhbmUyIG1hcHBpbmcuICovCiAJZC0+cGxhbmUyID0gaWd0X291 dHB1dF9nZXRfcGxhbmUob3V0cHV0LCAxKTsKLQlpZ3RfcGxhbmVfc2V0X2ZiKGQtPnBsYW5lMiwg JmQtPmZiMik7CisJaWd0X3BsYW5lX3NldF9mYihkLT5wbGFuZTIsICZkLT5mYlsxXSk7CiAKIAkv KiAybmQgcGxhbmUgd2luZG93ZWQgKi8KLQlpZ3RfZmJfc2V0X3Bvc2l0aW9uKCZkLT5mYjIsIGQt PnBsYW5lMiwgMTAwLCAxMDApOwotCWlndF9mYl9zZXRfc2l6ZSgmZC0+ZmIyLCBkLT5wbGFuZTIs IGQtPmZiMi53aWR0aC0yMDAsIGQtPmZiMi5oZWlnaHQtMjAwKTsKKwlpZ3RfZmJfc2V0X3Bvc2l0 aW9uKCZkLT5mYlsxXSwgZC0+cGxhbmUyLCAxMDAsIDEwMCk7CisJaWd0X2ZiX3NldF9zaXplKCZk LT5mYlsxXSwgZC0+cGxhbmUyLCBkLT5mYlsxXS53aWR0aC0yMDAsIGQtPmZiWzFdLmhlaWdodC0y MDApOwogCWlndF9wbGFuZV9zZXRfcG9zaXRpb24oZC0+cGxhbmUyLCAxMDAsIDEwMCk7CiAJaWd0 X3BsYW5lX3NldF9zaXplKGQtPnBsYW5lMiwgbW9kZS0+aGRpc3BsYXktMjAwLCBtb2RlLT52ZGlz cGxheS0yMDApOwotCWlndF9kaXNwbGF5X2NvbW1pdDIoZGlzcGxheSwgQ09NTUlUX1VOSVZFUlNB TCk7CisJaWd0X2Rpc3BsYXlfY29tbWl0MihkaXNwbGF5LCBDT01NSVRfQVRPTUlDKTsKIAogCWl0 ZXJhdGVfcGxhbmVfc2NhbGluZyhkLCBtb2RlKTsKIAogCS8qIDJuZCBwbGFuZSB1cCBzY2FsaW5n ICovCi0JaWd0X2ZiX3NldF9wb3NpdGlvbigmZC0+ZmIyLCBkLT5wbGFuZTIsIDEwMCwgMTAwKTsK LQlpZ3RfZmJfc2V0X3NpemUoJmQtPmZiMiwgZC0+cGxhbmUyLCA1MDAsIDUwMCk7CisJaWd0X2Zi X3NldF9wb3NpdGlvbigmZC0+ZmJbMV0sIGQtPnBsYW5lMiwgMTAwLCAxMDApOworCWlndF9mYl9z ZXRfc2l6ZSgmZC0+ZmJbMV0sIGQtPnBsYW5lMiwgNTAwLCA1MDApOwogCWlndF9wbGFuZV9zZXRf cG9zaXRpb24oZC0+cGxhbmUyLCAxMCwgMTApOwogCWlndF9wbGFuZV9zZXRfc2l6ZShkLT5wbGFu ZTIsIG1vZGUtPmhkaXNwbGF5LTIwLCBtb2RlLT52ZGlzcGxheS0yMCk7Ci0JaWd0X2Rpc3BsYXlf Y29tbWl0MihkaXNwbGF5LCBDT01NSVRfVU5JVkVSU0FMKTsKKwlpZ3RfZGlzcGxheV9jb21taXQy KGRpc3BsYXksIENPTU1JVF9BVE9NSUMpOwogCiAJLyogMm5kIHBsYW5lIGRvd25zY2FsaW5nICov Ci0JaWd0X2ZiX3NldF9wb3NpdGlvbigmZC0+ZmIyLCBkLT5wbGFuZTIsIDAsIDApOwotCWlndF9m Yl9zZXRfc2l6ZSgmZC0+ZmIyLCBkLT5wbGFuZTIsIGQtPmZiMi53aWR0aCwgZC0+ZmIyLmhlaWdo dCk7CisJaWd0X2ZiX3NldF9wb3NpdGlvbigmZC0+ZmJbMV0sIGQtPnBsYW5lMiwgMCwgMCk7CisJ aWd0X2ZiX3NldF9zaXplKCZkLT5mYlsxXSwgZC0+cGxhbmUyLCBkLT5mYlsxXS53aWR0aCwgZC0+ ZmJbMV0uaGVpZ2h0KTsKIAlpZ3RfcGxhbmVfc2V0X3Bvc2l0aW9uKGQtPnBsYW5lMiwgMTAsIDEw KTsKIAogCS8qIERvd25zY2FsZSAoMTAvOSl4IG9mIG9yaWdpbmFsIGltYWdlICovCi0JaWd0X3Bs YW5lX3NldF9zaXplKGQtPnBsYW5lMiwgKGQtPmZiMi53aWR0aCAqIDEwKS85LCAoZC0+ZmIyLmhl aWdodCAqIDEwKS85KTsKLQlpZ3RfZGlzcGxheV9jb21taXQyKGRpc3BsYXksIENPTU1JVF9VTklW RVJTQUwpOworCWlndF9wbGFuZV9zZXRfc2l6ZShkLT5wbGFuZTIsIChkLT5mYlsxXS53aWR0aCAq IDEwKS85LCAoZC0+ZmJbMV0uaGVpZ2h0ICogMTApLzkpOworCWlndF9kaXNwbGF5X2NvbW1pdDIo ZGlzcGxheSwgQ09NTUlUX0FUT01JQyk7CiAKIAlpZiAocHJpbWFyeV9wbGFuZV9zY2FsaW5nKSB7 CiAJCS8qIFByaW1hcnkgcGxhbmUgdXAgc2NhbGluZyAqLwotCQlpZ3RfZmJfc2V0X3Bvc2l0aW9u KCZkLT5mYjEsIGQtPnBsYW5lMSwgMTAwLCAxMDApOwotCQlpZ3RfZmJfc2V0X3NpemUoJmQtPmZi MSwgZC0+cGxhbmUxLCA1MDAsIDUwMCk7CisJCWlndF9mYl9zZXRfcG9zaXRpb24oJmQtPmZiWzBd LCBkLT5wbGFuZTEsIDEwMCwgMTAwKTsKKwkJaWd0X2ZiX3NldF9zaXplKCZkLT5mYlswXSwgZC0+ cGxhbmUxLCA1MDAsIDUwMCk7CiAJCWlndF9wbGFuZV9zZXRfcG9zaXRpb24oZC0+cGxhbmUxLCAw LCAwKTsKIAkJaWd0X3BsYW5lX3NldF9zaXplKGQtPnBsYW5lMSwgbW9kZS0+aGRpc3BsYXksIG1v ZGUtPnZkaXNwbGF5KTsKLQkJaWd0X2Rpc3BsYXlfY29tbWl0MihkaXNwbGF5LCBDT01NSVRfVU5J VkVSU0FMKTsKKwkJaWd0X2Rpc3BsYXlfY29tbWl0MihkaXNwbGF5LCBDT01NSVRfQVRPTUlDKTsK IAl9CiAKLQkvKiBTZXQgdXAgZmIzLT5wbGFuZTMgbWFwcGluZy4gKi8KKwkvKiBTZXQgdXAgZmJb Ml0tPnBsYW5lMyBtYXBwaW5nLiAqLwogCWQtPnBsYW5lMyA9IGlndF9vdXRwdXRfZ2V0X3BsYW5l KG91dHB1dCwgMik7Ci0JaWd0X3BsYW5lX3NldF9mYihkLT5wbGFuZTMsICZkLT5mYjMpOworCWln dF9wbGFuZV9zZXRfZmIoZC0+cGxhbmUzLCAmZC0+ZmJbMl0pOwogCiAJaWYoZC0+cGxhbmUzLT50 eXBlID09IERSTV9QTEFORV9UWVBFX0NVUlNPUikgewogCQlpZ3RfZGVidWcoIlBsYW5lLTMgZG9l c250IGV4aXN0IG9uIHBpcGUgJXNcbiIsIGttc3Rlc3RfcGlwZV9uYW1lKHBpcGUpKTsKLQkJZ290 byBjbGVhbnVwOworCQlyZXR1cm47CiAJfQogCiAJLyogM3JkIHBsYW5lIHdpbmRvd2VkIC0gbm8g c2NhbGluZyAqLwotCWlndF9mYl9zZXRfcG9zaXRpb24oJmQtPmZiMywgZC0+cGxhbmUzLCAxMDAs IDEwMCk7Ci0JaWd0X2ZiX3NldF9zaXplKCZkLT5mYjMsIGQtPnBsYW5lMywgZC0+ZmIzLndpZHRo LTMwMCwgZC0+ZmIzLmhlaWdodC0zMDApOworCWlndF9mYl9zZXRfcG9zaXRpb24oJmQtPmZiWzJd LCBkLT5wbGFuZTMsIDEwMCwgMTAwKTsKKwlpZ3RfZmJfc2V0X3NpemUoJmQtPmZiWzJdLCBkLT5w bGFuZTMsIGQtPmZiWzJdLndpZHRoLTMwMCwgZC0+ZmJbMl0uaGVpZ2h0LTMwMCk7CiAJaWd0X3Bs YW5lX3NldF9wb3NpdGlvbihkLT5wbGFuZTMsIDEwMCwgMTAwKTsKIAlpZ3RfcGxhbmVfc2V0X3Np emUoZC0+cGxhbmUzLCBtb2RlLT5oZGlzcGxheS0zMDAsIG1vZGUtPnZkaXNwbGF5LTMwMCk7Ci0J aWd0X2Rpc3BsYXlfY29tbWl0MihkaXNwbGF5LCBDT01NSVRfVU5JVkVSU0FMKTsKKwlpZ3RfZGlz cGxheV9jb21taXQyKGRpc3BsYXksIENPTU1JVF9BVE9NSUMpOwogCiAJLyogU3dpdGNoIHNjYWxl ciBmcm9tIHBsYW5lIDIgdG8gcGxhbmUgMyAqLwotCWlndF9mYl9zZXRfcG9zaXRpb24oJmQtPmZi MiwgZC0+cGxhbmUyLCAxMDAsIDEwMCk7Ci0JaWd0X2ZiX3NldF9zaXplKCZkLT5mYjIsIGQtPnBs YW5lMiwgZC0+ZmIyLndpZHRoLTIwMCwgZC0+ZmIyLmhlaWdodC0yMDApOworCWlndF9mYl9zZXRf cG9zaXRpb24oJmQtPmZiWzFdLCBkLT5wbGFuZTIsIDEwMCwgMTAwKTsKKwlpZ3RfZmJfc2V0X3Np emUoJmQtPmZiWzFdLCBkLT5wbGFuZTIsIGQtPmZiWzFdLndpZHRoLTIwMCwgZC0+ZmJbMV0uaGVp Z2h0LTIwMCk7CiAJaWd0X3BsYW5lX3NldF9wb3NpdGlvbihkLT5wbGFuZTIsIDEwMCwgMTAwKTsK LQlpZ3RfcGxhbmVfc2V0X3NpemUoZC0+cGxhbmUyLCBkLT5mYjIud2lkdGgtMjAwLCBkLT5mYjIu aGVpZ2h0LTIwMCk7CisJaWd0X3BsYW5lX3NldF9zaXplKGQtPnBsYW5lMiwgZC0+ZmJbMV0ud2lk dGgtMjAwLCBkLT5mYlsxXS5oZWlnaHQtMjAwKTsKIAotCWlndF9mYl9zZXRfcG9zaXRpb24oJmQt PmZiMywgZC0+cGxhbmUzLCAxMDAsIDEwMCk7Ci0JaWd0X2ZiX3NldF9zaXplKCZkLT5mYjMsIGQt PnBsYW5lMywgZC0+ZmIzLndpZHRoLTQwMCwgZC0+ZmIzLmhlaWdodC00MDApOworCWlndF9mYl9z ZXRfcG9zaXRpb24oJmQtPmZiWzJdLCBkLT5wbGFuZTMsIDEwMCwgMTAwKTsKKwlpZ3RfZmJfc2V0 X3NpemUoJmQtPmZiWzJdLCBkLT5wbGFuZTMsIGQtPmZiWzJdLndpZHRoLTQwMCwgZC0+ZmJbMl0u aGVpZ2h0LTQwMCk7CiAJaWd0X3BsYW5lX3NldF9wb3NpdGlvbihkLT5wbGFuZTMsIDEwLCAxMCk7 CiAJaWd0X3BsYW5lX3NldF9zaXplKGQtPnBsYW5lMywgbW9kZS0+aGRpc3BsYXktMzAwLCBtb2Rl LT52ZGlzcGxheS0zMDApOwotCWlndF9kaXNwbGF5X2NvbW1pdDIoZGlzcGxheSwgQ09NTUlUX1VO SVZFUlNBTCk7CisJaWd0X2Rpc3BsYXlfY29tbWl0MihkaXNwbGF5LCBDT01NSVRfQVRPTUlDKTsK IAogCWlmIChwcmltYXJ5X3BsYW5lX3NjYWxpbmcpIHsKIAkJLyogU3dpdGNoIHNjYWxlciBmcm9t IHBsYW5lIDEgdG8gcGxhbmUgMiAqLwotCQlpZ3RfZmJfc2V0X3Bvc2l0aW9uKCZkLT5mYjEsIGQt PnBsYW5lMSwgMCwgMCk7Ci0JCWlndF9mYl9zZXRfc2l6ZSgmZC0+ZmIxLCBkLT5wbGFuZTEsIGQt PmZiMS53aWR0aCwgZC0+ZmIxLmhlaWdodCk7CisJCWlndF9mYl9zZXRfcG9zaXRpb24oJmQtPmZi WzBdLCBkLT5wbGFuZTEsIDAsIDApOworCQlpZ3RfZmJfc2V0X3NpemUoJmQtPmZiWzBdLCBkLT5w bGFuZTEsIGQtPmZiWzBdLndpZHRoLCBkLT5mYlswXS5oZWlnaHQpOwogCQlpZ3RfcGxhbmVfc2V0 X3Bvc2l0aW9uKGQtPnBsYW5lMSwgMCwgMCk7CiAJCWlndF9wbGFuZV9zZXRfc2l6ZShkLT5wbGFu ZTEsIG1vZGUtPmhkaXNwbGF5LCBtb2RlLT52ZGlzcGxheSk7CiAKLQkJaWd0X2ZiX3NldF9wb3Np dGlvbigmZC0+ZmIyLCBkLT5wbGFuZTIsIDEwMCwgMTAwKTsKLQkJaWd0X2ZiX3NldF9zaXplKCZk LT5mYjIsIGQtPnBsYW5lMiwgZC0+ZmIyLndpZHRoLTUwMCxkLT5mYjIuaGVpZ2h0LTUwMCk7CisJ CWlndF9mYl9zZXRfcG9zaXRpb24oJmQtPmZiWzFdLCBkLT5wbGFuZTIsIDEwMCwgMTAwKTsKKwkJ aWd0X2ZiX3NldF9zaXplKCZkLT5mYlsxXSwgZC0+cGxhbmUyLCBkLT5mYlsxXS53aWR0aC01MDAs ZC0+ZmJbMV0uaGVpZ2h0LTUwMCk7CiAJCWlndF9wbGFuZV9zZXRfcG9zaXRpb24oZC0+cGxhbmUy LCAxMDAsIDEwMCk7CiAJCWlndF9wbGFuZV9zZXRfc2l6ZShkLT5wbGFuZTIsIG1vZGUtPmhkaXNw bGF5LTIwMCwgbW9kZS0+dmRpc3BsYXktMjAwKTsKLQkJaWd0X2Rpc3BsYXlfY29tbWl0MihkaXNw bGF5LCBDT01NSVRfVU5JVkVSU0FMKTsKKwkJaWd0X2Rpc3BsYXlfY29tbWl0MihkaXNwbGF5LCBD T01NSVRfQVRPTUlDKTsKIAl9Ci0KLWNsZWFudXA6Ci0JLyogYmFjayB0byBzaW5nbGUgcGxhbmUg bW9kZSAqLwotCWlndF9wbGFuZV9zZXRfZmIoZC0+cGxhbmUyLCBOVUxMKTsKLQlpZ3RfcGxhbmVf c2V0X2ZiKGQtPnBsYW5lMywgTlVMTCk7Ci0JaWd0X2Rpc3BsYXlfY29tbWl0MihkaXNwbGF5LCBD T01NSVRfVU5JVkVSU0FMKTsKLQotCWNsZWFudXBfY3J0YyhkLCBvdXRwdXQsIGQtPnBsYW5lMSk7 CiB9CiAKIGlndF9tYWluCkBAIC0zMTIsNiArMjc1LDcgQEAgaWd0X21haW4KIAkJaWd0X2Rpc3Bs YXlfaW5pdCgmZGF0YS5kaXNwbGF5LCBkYXRhLmRybV9mZCk7CiAJCWRhdGEuZGV2aWQgPSBpbnRl bF9nZXRfZHJtX2RldmlkKGRhdGEuZHJtX2ZkKTsKIAkJZGF0YS5udW1fc2NhbGVycyA9IGludGVs X2dlbihkYXRhLmRldmlkKSA+PSA5ID8gMiA6IDA7CisJCWlndF9yZXF1aXJlKGRhdGEuZGlzcGxh eS5pc19hdG9taWMpOwogCX0KIAogCWZvcl9lYWNoX3BpcGVfc3RhdGljKHBpcGUpIGlndF9zdWJ0 ZXN0X2dyb3VwIHsKLS0gCjIuMTUuMQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJl ZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGlu Zm8vaW50ZWwtZ2Z4Cg==