From mboxrd@z Thu Jan 1 00:00:00 1970 From: Maarten Lankhorst Subject: [PATCH i-g-t v3 5/8] tests/kms_plane_scaling: Clean up tests to work better with igt_kms, v2. Date: Mon, 15 Jan 2018 15:28:31 +0100 Message-ID: <20180115142834.65798-6-maarten.lankhorst@linux.intel.com> References: <20180115142834.65798-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 [IPv6:2a02:2308::216:3eff:fe92:dfa3]) by gabe.freedesktop.org (Postfix) with ESMTPS id 7A4A56E0F7 for ; Mon, 15 Jan 2018 14:28:40 +0000 (UTC) In-Reply-To: <20180115142834.65798-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 c3RzLgoKQ2hhbmdlcyBzaW5jZSB2MToKLSBSZWJhc2Ugb24gdG9wIG9mIG51bV9zY2FsZXJzIGNo YW5nZXMuCgpTaWduZWQtb2ZmLWJ5OiBNYWFydGVuIExhbmtob3JzdCA8bWFhcnRlbi5sYW5raG9y c3RAbGludXguaW50ZWwuY29tPgotLS0KIHRlc3RzL2ttc19wbGFuZV9zY2FsaW5nLmMgfCAyMzUg KysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogMSBmaWxlIGNo YW5nZWQsIDk5IGluc2VydGlvbnMoKyksIDEzNiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS90 ZXN0cy9rbXNfcGxhbmVfc2NhbGluZy5jIGIvdGVzdHMva21zX3BsYW5lX3NjYWxpbmcuYwppbmRl eCBkMWFmY2M4MTlkMGEuLjBiYTIwOWEzMTE2YiAxMDA2NDQKLS0tIGEvdGVzdHMva21zX3BsYW5l X3NjYWxpbmcuYworKysgYi90ZXN0cy9rbXNfcGxhbmVfc2NhbGluZy5jCkBAIC0zOCwxNyArMzgs MTAgQEAgdHlwZWRlZiBzdHJ1Y3QgewogCWludCBpbWFnZV93OwogCWludCBpbWFnZV9oOwogCi0J c3RydWN0IGlndF9mYiBmYjE7Ci0Jc3RydWN0IGlndF9mYiBmYjI7Ci0Jc3RydWN0IGlndF9mYiBm YjM7Ci0JaW50IGZiX2lkMTsKLQlpbnQgZmJfaWQyOwotCWludCBmYl9pZDM7Ci0KKwlzdHJ1Y3Qg aWd0X2ZiIGZiWzNdOwogCWlndF9wbGFuZV90ICpwbGFuZTE7CiAJaWd0X3BsYW5lX3QgKnBsYW5l MjsKIAlpZ3RfcGxhbmVfdCAqcGxhbmUzOwotCWlndF9wbGFuZV90ICpwbGFuZTQ7CiB9IGRhdGFf dDsKIAogc3RhdGljIGludCBnZXRfbnVtX3NjYWxlcnModWludDMyX3QgZGV2aWQsIGVudW0gcGlw ZSBwaXBlKQpAQCAtNjEsNzggKzU0LDYwIEBAIHN0YXRpYyBpbnQgZ2V0X251bV9zY2FsZXJzKHVp bnQzMl90IGRldmlkLCBlbnVtIHBpcGUgcGlwZSkKIAkJcmV0dXJuIDE7CiB9CiAKLXN0YXRpYyB2 b2lkIHByZXBhcmVfY3J0YyhkYXRhX3QgKmRhdGEsIGlndF9vdXRwdXRfdCAqb3V0cHV0LCBlbnVt IHBpcGUgcGlwZSwKLQkJCWlndF9wbGFuZV90ICpwbGFuZSwgZHJtTW9kZU1vZGVJbmZvICptb2Rl LCBlbnVtIGlndF9jb21taXRfc3R5bGUgcykKK3N0YXRpYyB2b2lkIGNsZWFudXBfY3J0YyhkYXRh X3QgKmRhdGEpCiB7Ci0JaWd0X2Rpc3BsYXlfdCAqZGlzcGxheSA9ICZkYXRhLT5kaXNwbGF5Owot Ci0JaWd0X291dHB1dF9zZXRfcGlwZShvdXRwdXQsIHBpcGUpOworCWludCBpOwogCi0JLyogY3Jl YXRlIHRoZSBwaXBlX2NyYyBvYmplY3QgZm9yIHRoaXMgcGlwZSAqLwogCWlndF9waXBlX2NyY19m cmVlKGRhdGEtPnBpcGVfY3JjKTsKLQlkYXRhLT5waXBlX2NyYyA9IGlndF9waXBlX2NyY19uZXco ZGF0YS0+ZHJtX2ZkLCBwaXBlLCBJTlRFTF9QSVBFX0NSQ19TT1VSQ0VfQVVUTyk7Ci0KLQkvKiBi ZWZvcmUgYWxsb2NhdGluZywgZnJlZSBpZiBhbnkgb2xkZXIgZmIgKi8KLQlpZiAoZGF0YS0+ZmJf aWQxKSB7Ci0JCWlndF9yZW1vdmVfZmIoZGF0YS0+ZHJtX2ZkLCAmZGF0YS0+ZmIxKTsKLQkJZGF0 YS0+ZmJfaWQxID0gMDsKLQl9CisJZGF0YS0+cGlwZV9jcmMgPSBOVUxMOwogCi0JLyogYWxsb2Nh dGUgZmIgZm9yIHBsYW5lIDEgKi8KLQlkYXRhLT5mYl9pZDEgPSBpZ3RfY3JlYXRlX3BhdHRlcm5f ZmIoZGF0YS0+ZHJtX2ZkLAotCQkJCQkgICAgIG1vZGUtPmhkaXNwbGF5LCBtb2RlLT52ZGlzcGxh eSwKLQkJCQkJICAgICBEUk1fRk9STUFUX1hSR0I4ODg4LAotCQkJCQkgICAgIExPQ0FMX0k5MTVf Rk9STUFUX01PRF9YX1RJTEVELCAvKiB0aWxlZCAqLwotCQkJCQkgICAgICZkYXRhLT5mYjEpOwot CWlndF9hc3NlcnQoZGF0YS0+ZmJfaWQxKTsKLQotCS8qCi0JICogV2UgYWx3YXlzIHNldCB0aGUg cHJpbWFyeSBwbGFuZSB0byBhY3R1YWxseSBlbmFibGUgdGhlIHBpcGUgYXMKLQkgKiB0aGVyZSdz IG5vIHdheSAodGhhdCB3b3JrcykgdG8gbGlnaHQgdXAgYSBwaXBlIHdpdGggb25seSBhIHNwcml0 ZQotCSAqIHBsYW5lIGVuYWJsZWQgYXQgdGhlIG1vbWVudC4KLQkgKi8KLQlpZiAocGxhbmUtPnR5 cGUgIT0gRFJNX1BMQU5FX1RZUEVfUFJJTUFSWSkgewotCQlpZ3RfcGxhbmVfdCAqcHJpbWFyeTsK Kwlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShkYXRhLT5mYik7IGkrKykgeworCQlpZiAoIWRh dGEtPmZiW2ldLmZiX2lkKQorCQkJY29udGludWU7CiAKLQkJcHJpbWFyeSA9IGlndF9vdXRwdXRf Z2V0X3BsYW5lX3R5cGUob3V0cHV0LCBEUk1fUExBTkVfVFlQRV9QUklNQVJZKTsKLQkJaWd0X3Bs YW5lX3NldF9mYihwcmltYXJ5LCAmZGF0YS0+ZmIxKTsKKwkJaWd0X3JlbW92ZV9mYihkYXRhLT5k cm1fZmQsICZkYXRhLT5mYltpXSk7CisJCWRhdGEtPmZiW2ldLmZiX2lkID0gMDsKIAl9Ci0KLQlp Z3RfcGxhbmVfc2V0X2ZiKHBsYW5lLCAmZGF0YS0+ZmIxKTsKLQlpZ3RfZGlzcGxheV9jb21taXQy KGRpc3BsYXksIHMpOwogfQogCi1zdGF0aWMgdm9pZCBjbGVhbnVwX2NydGMoZGF0YV90ICpkYXRh LCBpZ3Rfb3V0cHV0X3QgKm91dHB1dCwgaWd0X3BsYW5lX3QgKnBsYW5lKQorc3RhdGljIHZvaWQg cHJlcGFyZV9jcnRjKGRhdGFfdCAqZGF0YSwgaWd0X291dHB1dF90ICpvdXRwdXQsIGVudW0gcGlw ZSBwaXBlLAorCQkJaWd0X3BsYW5lX3QgKnBsYW5lLCBkcm1Nb2RlTW9kZUluZm8gKm1vZGUpCiB7 CiAJaWd0X2Rpc3BsYXlfdCAqZGlzcGxheSA9ICZkYXRhLT5kaXNwbGF5OwogCi0JaWd0X3BpcGVf Y3JjX2ZyZWUoZGF0YS0+cGlwZV9jcmMpOwotCWRhdGEtPnBpcGVfY3JjID0gTlVMTDsKKwljbGVh bnVwX2NydGMoZGF0YSk7CiAKLQlpZiAoZGF0YS0+ZmJfaWQxKSB7Ci0JCWlndF9yZW1vdmVfZmIo ZGF0YS0+ZHJtX2ZkLCAmZGF0YS0+ZmIxKTsKLQkJZGF0YS0+ZmJfaWQxID0gMDsKLQl9Ci0JaWYg KGRhdGEtPmZiX2lkMikgewotCQlpZ3RfcmVtb3ZlX2ZiKGRhdGEtPmRybV9mZCwgJmRhdGEtPmZi Mik7Ci0JCWRhdGEtPmZiX2lkMiA9IDA7Ci0JfQotCWlmIChkYXRhLT5mYl9pZDMpIHsKLQkJaWd0 X3JlbW92ZV9mYihkYXRhLT5kcm1fZmQsICZkYXRhLT5mYjMpOwotCQlkYXRhLT5mYl9pZDMgPSAw OwotCX0KKwlpZ3RfZGlzcGxheV9yZXNldChkaXNwbGF5KTsKKwlpZ3Rfb3V0cHV0X3NldF9waXBl KG91dHB1dCwgcGlwZSk7CisKKwkvKiBjcmVhdGUgdGhlIHBpcGVfY3JjIG9iamVjdCBmb3IgdGhp cyBwaXBlICovCisJZGF0YS0+cGlwZV9jcmMgPSBpZ3RfcGlwZV9jcmNfbmV3KGRhdGEtPmRybV9m ZCwgcGlwZSwgSU5URUxfUElQRV9DUkNfU09VUkNFX0FVVE8pOworCisJLyogYWxsb2NhdGUgZmIg Zm9yIHBsYW5lIDEgKi8KKwlpZ3RfY3JlYXRlX3BhdHRlcm5fZmIoZGF0YS0+ZHJtX2ZkLCBtb2Rl LT5oZGlzcGxheSwgbW9kZS0+dmRpc3BsYXksCisJCQkgICAgICBEUk1fRk9STUFUX1hSR0I4ODg4 LAorCQkJICAgICAgTE9DQUxfSTkxNV9GT1JNQVRfTU9EX1hfVElMRUQsIC8qIHRpbGVkICovCisJ CQkgICAgICAmZGF0YS0+ZmJbMF0pOworCisJaWd0X3BsYW5lX3NldF9mYihwbGFuZSwgJmRhdGEt PmZiWzBdKTsKIAogCWlmIChwbGFuZS0+dHlwZSAhPSBEUk1fUExBTkVfVFlQRV9QUklNQVJZKSB7 CiAJCWlndF9wbGFuZV90ICpwcmltYXJ5OworCQlpbnQgcmV0OworCisJCS8qIERvIHdlIHN1Y2Nl ZWQgd2l0aG91dCBlbmFibGluZyB0aGUgcHJpbWFyeSBwbGFuZT8gKi8KKwkJcmV0ID0gaWd0X2Rp c3BsYXlfdHJ5X2NvbW1pdDIoZGlzcGxheSwgQ09NTUlUX0FUT01JQyk7CisJCWlmICghcmV0KQor CQkJcmV0dXJuOwogCisJCS8qCisJCSAqIEZhbGxiYWNrOiBzZXQgdGhlIHByaW1hcnkgcGxhbmUg dG8gYWN0dWFsbHkgZW5hYmxlIHRoZSBwaXBlLgorCQkgKiBTb21lIGRyaXZlcnMgYWx3YXlzIHJl cXVpcmUgdGhlIHByaW1hcnkgcGxhbmUgdG8gYmUgZW5hYmxlZC4KKwkJICovCiAJCXByaW1hcnkg PSBpZ3Rfb3V0cHV0X2dldF9wbGFuZV90eXBlKG91dHB1dCwgRFJNX1BMQU5FX1RZUEVfUFJJTUFS WSk7Ci0JCWlndF9wbGFuZV9zZXRfZmIocHJpbWFyeSwgTlVMTCk7CisJCWlndF9wbGFuZV9zZXRf ZmIocHJpbWFyeSwgJmRhdGEtPmZiWzBdKTsKIAl9Ci0KLQlpZ3RfcGxhbmVfc2V0X2ZiKHBsYW5l LCBOVUxMKTsKLQlpZ3Rfb3V0cHV0X3NldF9waXBlKG91dHB1dCwgUElQRV9BTlkpOwotCi0JaWd0 X2Rpc3BsYXlfY29tbWl0MihkaXNwbGF5LCBDT01NSVRfVU5JVkVSU0FMKTsKKwlpZ3RfZGlzcGxh eV9jb21taXQyKGRpc3BsYXksIENPTU1JVF9BVE9NSUMpOwogfQogCiAvKiBkb2VzIGl0ZXJhdGl2 ZSBzY2FsaW5nIG9uIHBsYW5lMiAqLwpAQCAtMTQwLDMzICsxMTUsMzIgQEAgc3RhdGljIHZvaWQg aXRlcmF0ZV9wbGFuZV9zY2FsaW5nKGRhdGFfdCAqZCwgZHJtTW9kZU1vZGVJbmZvICptb2RlKQog ewogCWlndF9kaXNwbGF5X3QgKmRpc3BsYXkgPSAmZC0+ZGlzcGxheTsKIAotCWlmIChtb2RlLT5o ZGlzcGxheSA+PSBkLT5mYjIud2lkdGgpIHsKKwlpZiAobW9kZS0+aGRpc3BsYXkgPj0gZC0+ZmJb MV0ud2lkdGgpIHsKIAkJaW50IHcsIGg7CiAJCS8qIGZpeGVkIGZiICovCi0JCWlndF9mYl9zZXRf cG9zaXRpb24oJmQtPmZiMiwgZC0+cGxhbmUyLCAwLCAwKTsKLQkJaWd0X2ZiX3NldF9zaXplKCZk LT5mYjIsIGQtPnBsYW5lMiwgZC0+ZmIyLndpZHRoLCBkLT5mYjIuaGVpZ2h0KTsKKwkJaWd0X2Zi X3NldF9wb3NpdGlvbigmZC0+ZmJbMV0sIGQtPnBsYW5lMiwgMCwgMCk7CisJCWlndF9mYl9zZXRf c2l6ZSgmZC0+ZmJbMV0sIGQtPnBsYW5lMiwgZC0+ZmJbMV0ud2lkdGgsIGQtPmZiWzFdLmhlaWdo dCk7CiAJCWlndF9wbGFuZV9zZXRfcG9zaXRpb24oZC0+cGxhbmUyLCAwLCAwKTsKIAogCQkvKiBh ZGp1c3QgcGxhbmUgc2l6ZSAqLwotCQlmb3IgKHcgPSBkLT5mYjIud2lkdGg7IHcgPD0gbW9kZS0+ aGRpc3BsYXk7IHcrPTEwKSB7Ci0JCQloID0gdyAqIGQtPmZiMi5oZWlnaHQgLyBkLT5mYjIud2lk dGg7CisJCWZvciAodyA9IGQtPmZiWzFdLndpZHRoOyB3IDw9IG1vZGUtPmhkaXNwbGF5OyB3Kz0x MCkgeworCQkJaCA9IHcgKiBkLT5mYlsxXS5oZWlnaHQgLyBkLT5mYlsxXS53aWR0aDsKIAkJCWln dF9wbGFuZV9zZXRfc2l6ZShkLT5wbGFuZTIsIHcsIGgpOwotCQkJaWd0X2Rpc3BsYXlfY29tbWl0 MihkaXNwbGF5LCBDT01NSVRfVU5JVkVSU0FMKTsKKwkJCWlndF9kaXNwbGF5X2NvbW1pdDIoZGlz cGxheSwgQ09NTUlUX0FUT01JQyk7CiAJCX0KIAl9IGVsc2UgewogCQlpbnQgdywgaDsKIAkJLyog Zml4ZWQgcGxhbmUgKi8KIAkJaWd0X3BsYW5lX3NldF9wb3NpdGlvbihkLT5wbGFuZTIsIDAsIDAp OwogCQlpZ3RfcGxhbmVfc2V0X3NpemUoZC0+cGxhbmUyLCBtb2RlLT5oZGlzcGxheSwgbW9kZS0+ dmRpc3BsYXkpOwotCQlpZ3RfZmJfc2V0X3Bvc2l0aW9uKCZkLT5mYjIsIGQtPnBsYW5lMiwgMCwg MCk7CisJCWlndF9mYl9zZXRfcG9zaXRpb24oJmQtPmZiWzFdLCBkLT5wbGFuZTIsIDAsIDApOwog CiAJCS8qIGFkanVzdCBmYiBzaXplICovCi0JCWZvciAodyA9IG1vZGUtPmhkaXNwbGF5OyB3IDw9 IGQtPmZiMi53aWR0aDsgdys9MTApIHsKKwkJZm9yICh3ID0gbW9kZS0+aGRpc3BsYXk7IHcgPD0g ZC0+ZmJbMV0ud2lkdGg7IHcrPTEwKSB7CiAJCQkvKiBTb3VyY2UgY29vcmRpbmF0ZXMgbXVzdCBu b3QgYmUgY2xpcHBlZC4gKi8KLQkJCWggPSBtaW4odyAqIG1vZGUtPmhkaXNwbGF5IC8gbW9kZS0+ dmRpc3BsYXksIGQtPmZiMi5oZWlnaHQpOwotCi0JCQlpZ3RfZmJfc2V0X3NpemUoJmQtPmZiMiwg ZC0+cGxhbmUyLCB3LCBoKTsKLQkJCWlndF9kaXNwbGF5X2NvbW1pdDIoZGlzcGxheSwgQ09NTUlU X1VOSVZFUlNBTCk7CisJCQloID0gbWluKHcgKiBtb2RlLT5oZGlzcGxheSAvIG1vZGUtPnZkaXNw bGF5LCBkLT5mYlsxXS5oZWlnaHQpOworCQkJaWd0X2ZiX3NldF9zaXplKCZkLT5mYlsxXSwgZC0+ cGxhbmUyLCB3LCBoKTsKKwkJCWlndF9kaXNwbGF5X2NvbW1pdDIoZGlzcGxheSwgQ09NTUlUX0FU T01JQyk7CiAJCX0KIAl9CiB9CkBAIC0xNzgsMTMwICsxNTIsMTE4IEBAIHRlc3RfcGxhbmVfc2Nh bGluZ19vbl9waXBlKGRhdGFfdCAqZCwgZW51bSBwaXBlIHBpcGUsIGlndF9vdXRwdXRfdCAqb3V0 cHV0KQogCWRybU1vZGVNb2RlSW5mbyAqbW9kZTsKIAlpbnQgcHJpbWFyeV9wbGFuZV9zY2FsaW5n ID0gMDsgLyogRm9yIG5vdyAqLwogCi0JaWd0X2Rpc3BsYXlfcmVzZXQoZGlzcGxheSk7Ci0JaWd0 X291dHB1dF9zZXRfcGlwZShvdXRwdXQsIHBpcGUpOwogCW1vZGUgPSBpZ3Rfb3V0cHV0X2dldF9t b2RlKG91dHB1dCk7CiAKLQlkLT5mYl9pZDIgPSBpZ3RfY3JlYXRlX2NvbG9yX3BhdHRlcm5fZmIo ZGlzcGxheS0+ZHJtX2ZkLCA2MDAsIDYwMCwKLQkJCQkJCURSTV9GT1JNQVRfWFJHQjg4ODgsCi0J CQkJCQlMT0NBTF9JOTE1X0ZPUk1BVF9NT0RfWF9USUxFRCwgLyogdGlsZWQgKi8KLQkJCQkJCS41 LCAuNSwgLjUsICZkLT5mYjIpOwotCWlndF9hc3NlcnQoZC0+ZmJfaWQyKTsKKwkvKiBTZXQgdXAg ZGlzcGxheSB3aXRoIHBsYW5lIDEgKi8KKwlkLT5wbGFuZTEgPSAmZGlzcGxheS0+cGlwZXNbcGlw ZV0ucGxhbmVzWzBdOworCXByZXBhcmVfY3J0YyhkLCBvdXRwdXQsIHBpcGUsIGQtPnBsYW5lMSwg bW9kZSk7CiAKLQlkLT5mYl9pZDMgPSBpZ3RfY3JlYXRlX3BhdHRlcm5fZmIoZC0+ZHJtX2ZkLAot CQkJCQkgIG1vZGUtPmhkaXNwbGF5LCBtb2RlLT52ZGlzcGxheSwKLQkJCQkJICBEUk1fRk9STUFU X1hSR0I4ODg4LAotCQkJCQkgIExPQ0FMX0k5MTVfRk9STUFUX01PRF9YX1RJTEVELCAvKiB0aWxl ZCAqLwotCQkJCQkgICZkLT5mYjMpOwotCWlndF9hc3NlcnQoZC0+ZmJfaWQzKTsKKwlpZ3RfY3Jl YXRlX2NvbG9yX3BhdHRlcm5fZmIoZGlzcGxheS0+ZHJtX2ZkLCA2MDAsIDYwMCwKKwkJCQkgICAg RFJNX0ZPUk1BVF9YUkdCODg4OCwKKwkJCQkgICAgTE9DQUxfSTkxNV9GT1JNQVRfTU9EX1hfVElM RUQsIC8qIHRpbGVkICovCisJCQkJICAgIC41LCAuNSwgLjUsICZkLT5mYlsxXSk7CiAKLQkvKiBT ZXQgdXAgZGlzcGxheSB3aXRoIHBsYW5lIDEgKi8KLQlkLT5wbGFuZTEgPSBpZ3Rfb3V0cHV0X2dl dF9wbGFuZShvdXRwdXQsIDApOwotCXByZXBhcmVfY3J0YyhkLCBvdXRwdXQsIHBpcGUsIGQtPnBs YW5lMSwgbW9kZSwgQ09NTUlUX1VOSVZFUlNBTCk7CisJaWd0X2NyZWF0ZV9wYXR0ZXJuX2ZiKGQt PmRybV9mZCwKKwkJCSAgICAgIG1vZGUtPmhkaXNwbGF5LCBtb2RlLT52ZGlzcGxheSwKKwkJCSAg ICAgIERSTV9GT1JNQVRfWFJHQjg4ODgsCisJCQkgICAgICBMT0NBTF9JOTE1X0ZPUk1BVF9NT0Rf WF9USUxFRCwgLyogdGlsZWQgKi8KKwkJCSAgICAgICZkLT5mYlsyXSk7CiAKIAlpZiAocHJpbWFy eV9wbGFuZV9zY2FsaW5nKSB7CiAJCS8qIFByaW1hcnkgcGxhbmUgdXBzY2FsaW5nICovCi0JCWln dF9mYl9zZXRfcG9zaXRpb24oJmQtPmZiMSwgZC0+cGxhbmUxLCAxMDAsIDEwMCk7Ci0JCWlndF9m Yl9zZXRfc2l6ZSgmZC0+ZmIxLCBkLT5wbGFuZTEsIDUwMCwgNTAwKTsKKwkJaWd0X2ZiX3NldF9w b3NpdGlvbigmZC0+ZmJbMF0sIGQtPnBsYW5lMSwgMTAwLCAxMDApOworCQlpZ3RfZmJfc2V0X3Np emUoJmQtPmZiWzBdLCBkLT5wbGFuZTEsIDUwMCwgNTAwKTsKIAkJaWd0X3BsYW5lX3NldF9wb3Np dGlvbihkLT5wbGFuZTEsIDAsIDApOwogCQlpZ3RfcGxhbmVfc2V0X3NpemUoZC0+cGxhbmUxLCBt b2RlLT5oZGlzcGxheSwgbW9kZS0+dmRpc3BsYXkpOwotCQlpZ3RfZGlzcGxheV9jb21taXQyKGRp c3BsYXksIENPTU1JVF9VTklWRVJTQUwpOworCQlpZ3RfZGlzcGxheV9jb21taXQyKGRpc3BsYXks IENPTU1JVF9BVE9NSUMpOwogCiAJCS8qIFByaW1hcnkgcGxhbmUgMToxIG5vIHNjYWxpbmcgKi8K LQkJaWd0X2ZiX3NldF9wb3NpdGlvbigmZC0+ZmIxLCBkLT5wbGFuZTEsIDAsIDApOwotCQlpZ3Rf ZmJfc2V0X3NpemUoJmQtPmZiMSwgZC0+cGxhbmUxLCBkLT5mYjEud2lkdGgsIGQtPmZiMS5oZWln aHQpOworCQlpZ3RfZmJfc2V0X3Bvc2l0aW9uKCZkLT5mYlswXSwgZC0+cGxhbmUxLCAwLCAwKTsK KwkJaWd0X2ZiX3NldF9zaXplKCZkLT5mYlswXSwgZC0+cGxhbmUxLCBkLT5mYlswXS53aWR0aCwg ZC0+ZmJbMF0uaGVpZ2h0KTsKIAkJaWd0X3BsYW5lX3NldF9wb3NpdGlvbihkLT5wbGFuZTEsIDAs IDApOwogCQlpZ3RfcGxhbmVfc2V0X3NpemUoZC0+cGxhbmUxLCBtb2RlLT5oZGlzcGxheSwgbW9k ZS0+dmRpc3BsYXkpOwotCQlpZ3RfZGlzcGxheV9jb21taXQyKGRpc3BsYXksIENPTU1JVF9VTklW RVJTQUwpOworCQlpZ3RfZGlzcGxheV9jb21taXQyKGRpc3BsYXksIENPTU1JVF9BVE9NSUMpOwog CX0KIAotCS8qIFNldCB1cCBmYjItPnBsYW5lMiBtYXBwaW5nLiAqLworCS8qIFNldCB1cCBmYlsx XS0+cGxhbmUyIG1hcHBpbmcuICovCiAJZC0+cGxhbmUyID0gaWd0X291dHB1dF9nZXRfcGxhbmUo b3V0cHV0LCAxKTsKLQlpZ3RfcGxhbmVfc2V0X2ZiKGQtPnBsYW5lMiwgJmQtPmZiMik7CisJaWd0 X3BsYW5lX3NldF9mYihkLT5wbGFuZTIsICZkLT5mYlsxXSk7CiAKIAkvKiAybmQgcGxhbmUgd2lu ZG93ZWQgKi8KLQlpZ3RfZmJfc2V0X3Bvc2l0aW9uKCZkLT5mYjIsIGQtPnBsYW5lMiwgMTAwLCAx MDApOwotCWlndF9mYl9zZXRfc2l6ZSgmZC0+ZmIyLCBkLT5wbGFuZTIsIGQtPmZiMi53aWR0aC0y MDAsIGQtPmZiMi5oZWlnaHQtMjAwKTsKKwlpZ3RfZmJfc2V0X3Bvc2l0aW9uKCZkLT5mYlsxXSwg ZC0+cGxhbmUyLCAxMDAsIDEwMCk7CisJaWd0X2ZiX3NldF9zaXplKCZkLT5mYlsxXSwgZC0+cGxh bmUyLCBkLT5mYlsxXS53aWR0aC0yMDAsIGQtPmZiWzFdLmhlaWdodC0yMDApOwogCWlndF9wbGFu ZV9zZXRfcG9zaXRpb24oZC0+cGxhbmUyLCAxMDAsIDEwMCk7CiAJaWd0X3BsYW5lX3NldF9zaXpl KGQtPnBsYW5lMiwgbW9kZS0+aGRpc3BsYXktMjAwLCBtb2RlLT52ZGlzcGxheS0yMDApOwotCWln dF9kaXNwbGF5X2NvbW1pdDIoZGlzcGxheSwgQ09NTUlUX1VOSVZFUlNBTCk7CisJaWd0X2Rpc3Bs YXlfY29tbWl0MihkaXNwbGF5LCBDT01NSVRfQVRPTUlDKTsKIAogCWl0ZXJhdGVfcGxhbmVfc2Nh bGluZyhkLCBtb2RlKTsKIAogCS8qIDJuZCBwbGFuZSB1cCBzY2FsaW5nICovCi0JaWd0X2ZiX3Nl dF9wb3NpdGlvbigmZC0+ZmIyLCBkLT5wbGFuZTIsIDEwMCwgMTAwKTsKLQlpZ3RfZmJfc2V0X3Np emUoJmQtPmZiMiwgZC0+cGxhbmUyLCA1MDAsIDUwMCk7CisJaWd0X2ZiX3NldF9wb3NpdGlvbigm ZC0+ZmJbMV0sIGQtPnBsYW5lMiwgMTAwLCAxMDApOworCWlndF9mYl9zZXRfc2l6ZSgmZC0+ZmJb MV0sIGQtPnBsYW5lMiwgNTAwLCA1MDApOwogCWlndF9wbGFuZV9zZXRfcG9zaXRpb24oZC0+cGxh bmUyLCAxMCwgMTApOwogCWlndF9wbGFuZV9zZXRfc2l6ZShkLT5wbGFuZTIsIG1vZGUtPmhkaXNw bGF5LTIwLCBtb2RlLT52ZGlzcGxheS0yMCk7Ci0JaWd0X2Rpc3BsYXlfY29tbWl0MihkaXNwbGF5 LCBDT01NSVRfVU5JVkVSU0FMKTsKKwlpZ3RfZGlzcGxheV9jb21taXQyKGRpc3BsYXksIENPTU1J VF9BVE9NSUMpOwogCiAJLyogMm5kIHBsYW5lIGRvd25zY2FsaW5nICovCi0JaWd0X2ZiX3NldF9w b3NpdGlvbigmZC0+ZmIyLCBkLT5wbGFuZTIsIDAsIDApOwotCWlndF9mYl9zZXRfc2l6ZSgmZC0+ ZmIyLCBkLT5wbGFuZTIsIGQtPmZiMi53aWR0aCwgZC0+ZmIyLmhlaWdodCk7CisJaWd0X2ZiX3Nl dF9wb3NpdGlvbigmZC0+ZmJbMV0sIGQtPnBsYW5lMiwgMCwgMCk7CisJaWd0X2ZiX3NldF9zaXpl KCZkLT5mYlsxXSwgZC0+cGxhbmUyLCBkLT5mYlsxXS53aWR0aCwgZC0+ZmJbMV0uaGVpZ2h0KTsK IAlpZ3RfcGxhbmVfc2V0X3Bvc2l0aW9uKGQtPnBsYW5lMiwgMTAsIDEwKTsKIAogCS8qIERvd25z Y2FsZSAoMTAvOSl4IG9mIG9yaWdpbmFsIGltYWdlICovCi0JaWd0X3BsYW5lX3NldF9zaXplKGQt PnBsYW5lMiwgKGQtPmZiMi53aWR0aCAqIDEwKS85LCAoZC0+ZmIyLmhlaWdodCAqIDEwKS85KTsK LQlpZ3RfZGlzcGxheV9jb21taXQyKGRpc3BsYXksIENPTU1JVF9VTklWRVJTQUwpOworCWlndF9w bGFuZV9zZXRfc2l6ZShkLT5wbGFuZTIsIChkLT5mYlsxXS53aWR0aCAqIDEwKS85LCAoZC0+ZmJb MV0uaGVpZ2h0ICogMTApLzkpOworCWlndF9kaXNwbGF5X2NvbW1pdDIoZGlzcGxheSwgQ09NTUlU X0FUT01JQyk7CiAKIAlpZiAocHJpbWFyeV9wbGFuZV9zY2FsaW5nKSB7CiAJCS8qIFByaW1hcnkg cGxhbmUgdXAgc2NhbGluZyAqLwotCQlpZ3RfZmJfc2V0X3Bvc2l0aW9uKCZkLT5mYjEsIGQtPnBs YW5lMSwgMTAwLCAxMDApOwotCQlpZ3RfZmJfc2V0X3NpemUoJmQtPmZiMSwgZC0+cGxhbmUxLCA1 MDAsIDUwMCk7CisJCWlndF9mYl9zZXRfcG9zaXRpb24oJmQtPmZiWzBdLCBkLT5wbGFuZTEsIDEw MCwgMTAwKTsKKwkJaWd0X2ZiX3NldF9zaXplKCZkLT5mYlswXSwgZC0+cGxhbmUxLCA1MDAsIDUw MCk7CiAJCWlndF9wbGFuZV9zZXRfcG9zaXRpb24oZC0+cGxhbmUxLCAwLCAwKTsKIAkJaWd0X3Bs YW5lX3NldF9zaXplKGQtPnBsYW5lMSwgbW9kZS0+aGRpc3BsYXksIG1vZGUtPnZkaXNwbGF5KTsK LQkJaWd0X2Rpc3BsYXlfY29tbWl0MihkaXNwbGF5LCBDT01NSVRfVU5JVkVSU0FMKTsKKwkJaWd0 X2Rpc3BsYXlfY29tbWl0MihkaXNwbGF5LCBDT01NSVRfQVRPTUlDKTsKIAl9CiAKLQkvKiBTZXQg dXAgZmIzLT5wbGFuZTMgbWFwcGluZy4gKi8KKwkvKiBTZXQgdXAgZmJbMl0tPnBsYW5lMyBtYXBw aW5nLiAqLwogCWQtPnBsYW5lMyA9IGlndF9vdXRwdXRfZ2V0X3BsYW5lKG91dHB1dCwgMik7Ci0J aWd0X3BsYW5lX3NldF9mYihkLT5wbGFuZTMsICZkLT5mYjMpOworCWlndF9wbGFuZV9zZXRfZmIo ZC0+cGxhbmUzLCAmZC0+ZmJbMl0pOwogCiAJaWYoZC0+cGxhbmUzLT50eXBlID09IERSTV9QTEFO RV9UWVBFX0NVUlNPUikgewogCQlpZ3RfZGVidWcoIlBsYW5lLTMgZG9lc250IGV4aXN0IG9uIHBp cGUgJXNcbiIsIGttc3Rlc3RfcGlwZV9uYW1lKHBpcGUpKTsKLQkJZ290byBjbGVhbnVwOworCQly ZXR1cm47CiAJfQogCiAJLyogM3JkIHBsYW5lIHdpbmRvd2VkIC0gbm8gc2NhbGluZyAqLwotCWln dF9mYl9zZXRfcG9zaXRpb24oJmQtPmZiMywgZC0+cGxhbmUzLCAxMDAsIDEwMCk7Ci0JaWd0X2Zi X3NldF9zaXplKCZkLT5mYjMsIGQtPnBsYW5lMywgZC0+ZmIzLndpZHRoLTMwMCwgZC0+ZmIzLmhl aWdodC0zMDApOworCWlndF9mYl9zZXRfcG9zaXRpb24oJmQtPmZiWzJdLCBkLT5wbGFuZTMsIDEw MCwgMTAwKTsKKwlpZ3RfZmJfc2V0X3NpemUoJmQtPmZiWzJdLCBkLT5wbGFuZTMsIGQtPmZiWzJd LndpZHRoLTMwMCwgZC0+ZmJbMl0uaGVpZ2h0LTMwMCk7CiAJaWd0X3BsYW5lX3NldF9wb3NpdGlv bihkLT5wbGFuZTMsIDEwMCwgMTAwKTsKIAlpZ3RfcGxhbmVfc2V0X3NpemUoZC0+cGxhbmUzLCBt b2RlLT5oZGlzcGxheS0zMDAsIG1vZGUtPnZkaXNwbGF5LTMwMCk7Ci0JaWd0X2Rpc3BsYXlfY29t bWl0MihkaXNwbGF5LCBDT01NSVRfVU5JVkVSU0FMKTsKKwlpZ3RfZGlzcGxheV9jb21taXQyKGRp c3BsYXksIENPTU1JVF9BVE9NSUMpOwogCiAJLyogU3dpdGNoIHNjYWxlciBmcm9tIHBsYW5lIDIg dG8gcGxhbmUgMyAqLwotCWlndF9mYl9zZXRfcG9zaXRpb24oJmQtPmZiMiwgZC0+cGxhbmUyLCAx MDAsIDEwMCk7Ci0JaWd0X2ZiX3NldF9zaXplKCZkLT5mYjIsIGQtPnBsYW5lMiwgZC0+ZmIyLndp ZHRoLTIwMCwgZC0+ZmIyLmhlaWdodC0yMDApOworCWlndF9mYl9zZXRfcG9zaXRpb24oJmQtPmZi WzFdLCBkLT5wbGFuZTIsIDEwMCwgMTAwKTsKKwlpZ3RfZmJfc2V0X3NpemUoJmQtPmZiWzFdLCBk LT5wbGFuZTIsIGQtPmZiWzFdLndpZHRoLTIwMCwgZC0+ZmJbMV0uaGVpZ2h0LTIwMCk7CiAJaWd0 X3BsYW5lX3NldF9wb3NpdGlvbihkLT5wbGFuZTIsIDEwMCwgMTAwKTsKLQlpZ3RfcGxhbmVfc2V0 X3NpemUoZC0+cGxhbmUyLCBkLT5mYjIud2lkdGgtMjAwLCBkLT5mYjIuaGVpZ2h0LTIwMCk7CisJ aWd0X3BsYW5lX3NldF9zaXplKGQtPnBsYW5lMiwgZC0+ZmJbMV0ud2lkdGgtMjAwLCBkLT5mYlsx XS5oZWlnaHQtMjAwKTsKIAotCWlndF9mYl9zZXRfcG9zaXRpb24oJmQtPmZiMywgZC0+cGxhbmUz LCAxMDAsIDEwMCk7Ci0JaWd0X2ZiX3NldF9zaXplKCZkLT5mYjMsIGQtPnBsYW5lMywgZC0+ZmIz LndpZHRoLTQwMCwgZC0+ZmIzLmhlaWdodC00MDApOworCWlndF9mYl9zZXRfcG9zaXRpb24oJmQt PmZiWzJdLCBkLT5wbGFuZTMsIDEwMCwgMTAwKTsKKwlpZ3RfZmJfc2V0X3NpemUoJmQtPmZiWzJd LCBkLT5wbGFuZTMsIGQtPmZiWzJdLndpZHRoLTQwMCwgZC0+ZmJbMl0uaGVpZ2h0LTQwMCk7CiAJ aWd0X3BsYW5lX3NldF9wb3NpdGlvbihkLT5wbGFuZTMsIDEwLCAxMCk7CiAJaWd0X3BsYW5lX3Nl dF9zaXplKGQtPnBsYW5lMywgbW9kZS0+aGRpc3BsYXktMzAwLCBtb2RlLT52ZGlzcGxheS0zMDAp OwotCWlndF9kaXNwbGF5X2NvbW1pdDIoZGlzcGxheSwgQ09NTUlUX1VOSVZFUlNBTCk7CisJaWd0 X2Rpc3BsYXlfY29tbWl0MihkaXNwbGF5LCBDT01NSVRfQVRPTUlDKTsKIAogCWlmIChwcmltYXJ5 X3BsYW5lX3NjYWxpbmcpIHsKIAkJLyogU3dpdGNoIHNjYWxlciBmcm9tIHBsYW5lIDEgdG8gcGxh bmUgMiAqLwotCQlpZ3RfZmJfc2V0X3Bvc2l0aW9uKCZkLT5mYjEsIGQtPnBsYW5lMSwgMCwgMCk7 Ci0JCWlndF9mYl9zZXRfc2l6ZSgmZC0+ZmIxLCBkLT5wbGFuZTEsIGQtPmZiMS53aWR0aCwgZC0+ ZmIxLmhlaWdodCk7CisJCWlndF9mYl9zZXRfcG9zaXRpb24oJmQtPmZiWzBdLCBkLT5wbGFuZTEs IDAsIDApOworCQlpZ3RfZmJfc2V0X3NpemUoJmQtPmZiWzBdLCBkLT5wbGFuZTEsIGQtPmZiWzBd LndpZHRoLCBkLT5mYlswXS5oZWlnaHQpOwogCQlpZ3RfcGxhbmVfc2V0X3Bvc2l0aW9uKGQtPnBs YW5lMSwgMCwgMCk7CiAJCWlndF9wbGFuZV9zZXRfc2l6ZShkLT5wbGFuZTEsIG1vZGUtPmhkaXNw bGF5LCBtb2RlLT52ZGlzcGxheSk7CiAKLQkJaWd0X2ZiX3NldF9wb3NpdGlvbigmZC0+ZmIyLCBk LT5wbGFuZTIsIDEwMCwgMTAwKTsKLQkJaWd0X2ZiX3NldF9zaXplKCZkLT5mYjIsIGQtPnBsYW5l MiwgZC0+ZmIyLndpZHRoLTUwMCxkLT5mYjIuaGVpZ2h0LTUwMCk7CisJCWlndF9mYl9zZXRfcG9z aXRpb24oJmQtPmZiWzFdLCBkLT5wbGFuZTIsIDEwMCwgMTAwKTsKKwkJaWd0X2ZiX3NldF9zaXpl KCZkLT5mYlsxXSwgZC0+cGxhbmUyLCBkLT5mYlsxXS53aWR0aC01MDAsZC0+ZmJbMV0uaGVpZ2h0 LTUwMCk7CiAJCWlndF9wbGFuZV9zZXRfcG9zaXRpb24oZC0+cGxhbmUyLCAxMDAsIDEwMCk7CiAJ CWlndF9wbGFuZV9zZXRfc2l6ZShkLT5wbGFuZTIsIG1vZGUtPmhkaXNwbGF5LTIwMCwgbW9kZS0+ dmRpc3BsYXktMjAwKTsKLQkJaWd0X2Rpc3BsYXlfY29tbWl0MihkaXNwbGF5LCBDT01NSVRfVU5J VkVSU0FMKTsKKwkJaWd0X2Rpc3BsYXlfY29tbWl0MihkaXNwbGF5LCBDT01NSVRfQVRPTUlDKTsK IAl9Ci0KLWNsZWFudXA6Ci0JLyogYmFjayB0byBzaW5nbGUgcGxhbmUgbW9kZSAqLwotCWlndF9w bGFuZV9zZXRfZmIoZC0+cGxhbmUyLCBOVUxMKTsKLQlpZ3RfcGxhbmVfc2V0X2ZiKGQtPnBsYW5l MywgTlVMTCk7Ci0JaWd0X2Rpc3BsYXlfY29tbWl0MihkaXNwbGF5LCBDT01NSVRfVU5JVkVSU0FM KTsKLQotCWNsZWFudXBfY3J0YyhkLCBvdXRwdXQsIGQtPnBsYW5lMSk7CiB9CiAKIGlndF9tYWlu CkBAIC0zMTYsNiArMjc4LDcgQEAgaWd0X21haW4KIAkJaWd0X3JlcXVpcmVfcGlwZV9jcmMoZGF0 YS5kcm1fZmQpOwogCQlpZ3RfZGlzcGxheV9pbml0KCZkYXRhLmRpc3BsYXksIGRhdGEuZHJtX2Zk KTsKIAkJZGF0YS5kZXZpZCA9IGludGVsX2dldF9kcm1fZGV2aWQoZGF0YS5kcm1fZmQpOworCQlp Z3RfcmVxdWlyZShkYXRhLmRpc3BsYXkuaXNfYXRvbWljKTsKIAl9CiAKIAlmb3JfZWFjaF9waXBl X3N0YXRpYyhwaXBlKSBpZ3Rfc3VidGVzdF9ncm91cCB7Ci0tIAoyLjE1LjEKCl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxp c3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNr dG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=