From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH 31/38] drm/i915: Reduce amount of duplicate buffer information captured on error Date: Fri, 3 Jun 2016 17:55:46 +0100 Message-ID: <1464972953-2726-32-git-send-email-chris@chris-wilson.co.uk> References: <1464972953-2726-1-git-send-email-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wm0-x242.google.com (mail-wm0-x242.google.com [IPv6:2a00:1450:400c:c09::242]) by gabe.freedesktop.org (Postfix) with ESMTPS id ADE436EE88 for ; Fri, 3 Jun 2016 16:56:30 +0000 (UTC) Received: by mail-wm0-x242.google.com with SMTP id n184so725962wmn.1 for ; Fri, 03 Jun 2016 09:56:30 -0700 (PDT) In-Reply-To: <1464972953-2726-1-git-send-email-chris@chris-wilson.co.uk> 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 V2hlbiBjYXB0dXJpbmcgdGhlIGVycm9yIHN0YXRlLCB3ZSBkbyBub3QgbmVlZCB0byBrbm93IGFi b3V0IGV2ZXJ5CmFkZHJlc3Mgc3BhY2UgLSBqdXN0IHRob3NlIHRoYXQgYXJlIHJlbGF0ZWQgdG8g dGhlIGVycm9yLiBXZSBrbm93IHdoaWNoCmNvbnRleHQgaXMgYWN0aXZlIGF0IHRoZSB0aW1lLCB0 aGVyZWZvcmUgd2Uga25vdyB3aGljaCBWTSBhcmUgaW1wbGljYXRlZAppbiB0aGUgZXJyb3IuIFdl IGNhbiB0aGVuIHJlc3RyaWN0IHRoZSBWTSB3aGljaCB3ZSByZXBvcnQgdG8gdGhlCnJlbGV2YW50 IHN1YnNldC4KClNpZ25lZC1vZmYtYnk6IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29u LmNvLnVrPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggICAgICAgfCAgIDkg Ky0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3B1X2Vycm9yLmMgfCAxOTggKysrKysrKysr KysrKystLS0tLS0tLS0tLS0tLS0tLS0tLQogMiBmaWxlcyBjaGFuZ2VkLCA4NyBpbnNlcnRpb25z KCspLCAxMjAgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKaW5kZXggZTcyYjdm MzVhOThlLi5kYmQzYzZmM2FiYmMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZHJ2LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaApAQCAtNTA2LDYg KzUwNiw3IEBAIHN0cnVjdCBkcm1faTkxNV9lcnJvcl9zdGF0ZSB7CiAJCWludCBudW1fd2FpdGVy czsKIAkJaW50IGhhbmdjaGVja19zY29yZTsKIAkJZW51bSBpbnRlbF9lbmdpbmVfaGFuZ2NoZWNr X2FjdGlvbiBoYW5nY2hlY2tfYWN0aW9uOworCQlzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2 bTsKIAkJaW50IG51bV9yZXF1ZXN0czsKIAogCQkvKiBvdXIgb3duIHRyYWNraW5nIG9mIHJpbmcg aGVhZCBhbmQgdGFpbCAqLwpAQCAtNTc1LDE3ICs1NzYsMTUgQEAgc3RydWN0IGRybV9pOTE1X2Vy cm9yX3N0YXRlIHsKIAkJdTMyIHJlYWRfZG9tYWluczsKIAkJdTMyIHdyaXRlX2RvbWFpbjsKIAkJ czMyIGZlbmNlX3JlZzpJOTE1X01BWF9OVU1fRkVOQ0VfQklUUzsKLQkJczMyIHBpbm5lZDoyOwog CQl1MzIgdGlsaW5nOjI7CiAJCXUzMiBkaXJ0eToxOwogCQl1MzIgcHVyZ2VhYmxlOjE7CiAJCXUz MiB1c2VycHRyOjE7CiAJCXMzMiByaW5nOjQ7CiAJCXUzMiBjYWNoZV9sZXZlbDozOwotCX0gKiph Y3RpdmVfYm8sICoqcGlubmVkX2JvOwotCi0JdTMyICphY3RpdmVfYm9fY291bnQsICpwaW5uZWRf Ym9fY291bnQ7Ci0JdTMyIHZtX2NvdW50OworCX0gKmFjdGl2ZV9ib1tJOTE1X05VTV9FTkdJTkVT XSwgKnBpbm5lZF9ibzsKKwl1MzIgYWN0aXZlX2JvX2NvdW50W0k5MTVfTlVNX0VOR0lORVNdLCBw aW5uZWRfYm9fY291bnQ7CisJc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqYWN0aXZlX3ZtW0k5 MTVfTlVNX0VOR0lORVNdOwogfTsKIAogc3RydWN0IGludGVsX2Nvbm5lY3RvcjsKZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3B1X2Vycm9yLmMgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2dwdV9lcnJvci5jCmluZGV4IGMyY2Y1YmQ1N2RiNS4uZjAxZjBjYTRiYjg2 IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dwdV9lcnJvci5jCisrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3B1X2Vycm9yLmMKQEAgLTQyLDE2ICs0Miw2IEBA IHN0YXRpYyBjb25zdCBjaGFyICpyaW5nX3N0cihpbnQgcmluZykKIAl9CiB9CiAKLXN0YXRpYyBj b25zdCBjaGFyICpwaW5fZmxhZyhpbnQgcGlubmVkKQotewotCWlmIChwaW5uZWQgPiAwKQotCQly ZXR1cm4gIiBQIjsKLQllbHNlIGlmIChwaW5uZWQgPCAwKQotCQlyZXR1cm4gIiBwIjsKLQllbHNl Ci0JCXJldHVybiAiIjsKLX0KLQogc3RhdGljIGNvbnN0IGNoYXIgKnRpbGluZ19mbGFnKGludCB0 aWxpbmcpCiB7CiAJc3dpdGNoICh0aWxpbmcpIHsKQEAgLTE4OSw3ICsxNzksNyBAQCBzdGF0aWMg dm9pZCBwcmludF9lcnJvcl9idWZmZXJzKHN0cnVjdCBkcm1faTkxNV9lcnJvcl9zdGF0ZV9idWYg Km0sCiB7CiAJaW50IGk7CiAKLQllcnJfcHJpbnRmKG0sICIgICVzIFslZF06XG4iLCBuYW1lLCBj b3VudCk7CisJZXJyX3ByaW50ZihtLCAiJXMgWyVkXTpcbiIsIG5hbWUsIGNvdW50KTsKIAogCXdo aWxlIChjb3VudC0tKSB7CiAJCWVycl9wcmludGYobSwgIiAgICAlMDh4XyUwOHggJTh1ICUwMngg JTAyeCBbICIsCkBAIC0yMDIsNyArMTkyLDYgQEAgc3RhdGljIHZvaWQgcHJpbnRfZXJyb3JfYnVm ZmVycyhzdHJ1Y3QgZHJtX2k5MTVfZXJyb3Jfc3RhdGVfYnVmICptLAogCQkJZXJyX3ByaW50Ziht LCAiJTAyeCAiLCBlcnItPnJzZXFub1tpXSk7CiAKIAkJZXJyX3ByaW50ZihtLCAiXSAlMDJ4Iiwg ZXJyLT53c2Vxbm8pOwotCQllcnJfcHV0cyhtLCBwaW5fZmxhZyhlcnItPnBpbm5lZCkpOwogCQll cnJfcHV0cyhtLCB0aWxpbmdfZmxhZyhlcnItPnRpbGluZykpOwogCQllcnJfcHV0cyhtLCBkaXJ0 eV9mbGFnKGVyci0+ZGlydHkpKTsKIAkJZXJyX3B1dHMobSwgcHVyZ2VhYmxlX2ZsYWcoZXJyLT5w dXJnZWFibGUpKTsKQEAgLTQxNywxOCArNDA2LDI1IEBAIGludCBpOTE1X2Vycm9yX3N0YXRlX3Rv X3N0cihzdHJ1Y3QgZHJtX2k5MTVfZXJyb3Jfc3RhdGVfYnVmICptLAogCWZvciAoaSA9IDA7IGkg PCBBUlJBWV9TSVpFKGVycm9yLT5yaW5nKTsgaSsrKQogCQlpOTE1X3JpbmdfZXJyb3Jfc3RhdGUo bSwgZGV2LCBlcnJvciwgaSk7CiAKLQlmb3IgKGkgPSAwOyBpIDwgZXJyb3ItPnZtX2NvdW50OyBp KyspIHsKLQkJZXJyX3ByaW50ZihtLCAidm1bJWRdXG4iLCBpKTsKKwlmb3IgKGkgPSAwOyBpIDwg STkxNV9OVU1fRU5HSU5FUzsgaSsrKSB7CisJCWlmIChlcnJvci0+YWN0aXZlX3ZtW2ldID09IE5V TEwpCisJCQlicmVhazsKIAotCQlwcmludF9lcnJvcl9idWZmZXJzKG0sICJBY3RpdmUiLAorCQll cnJfcHJpbnRmKG0sICJBY3RpdmUgdm1bJWRdXG4iLCBpKTsKKwkJZm9yIChqID0gMDsgaiA8IEk5 MTVfTlVNX0VOR0lORVM7IGorKykgeworCQkJaWYgKGVycm9yLT5yaW5nW2pdLnZtID09IGVycm9y LT5hY3RpdmVfdm1baV0pCisJCQkJZXJyX3ByaW50ZihtLCAiICAgICVzXG4iLAorCQkJCQkgICBk ZXZfcHJpdi0+ZW5naW5lW2pdLm5hbWUpOworCQl9CisJCXByaW50X2Vycm9yX2J1ZmZlcnMobSwg IiAgQnVmZmVycyIsCiAJCQkJICAgIGVycm9yLT5hY3RpdmVfYm9baV0sCiAJCQkJICAgIGVycm9y LT5hY3RpdmVfYm9fY291bnRbaV0pOwotCi0JCXByaW50X2Vycm9yX2J1ZmZlcnMobSwgIlBpbm5l ZCIsCi0JCQkJICAgIGVycm9yLT5waW5uZWRfYm9baV0sCi0JCQkJICAgIGVycm9yLT5waW5uZWRf Ym9fY291bnRbaV0pOwogCX0KIAorCXByaW50X2Vycm9yX2J1ZmZlcnMobSwgIlBpbm5lZCAoZ2xv YmFsKSIsCisJCQkgICAgZXJyb3ItPnBpbm5lZF9ibywKKwkJCSAgICBlcnJvci0+cGlubmVkX2Jv X2NvdW50KTsKKwogCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKGVycm9yLT5yaW5nKTsgaSsr KSB7CiAJCW9iaiA9IGVycm9yLT5yaW5nW2ldLmJhdGNoYnVmZmVyOwogCQlpZiAob2JqKSB7CkBA IC02MjQsMTMgKzYyMCwxMCBAQCBzdGF0aWMgdm9pZCBpOTE1X2Vycm9yX3N0YXRlX2ZyZWUoc3Ry dWN0IGtyZWYgKmVycm9yX3JlZikKIAogCWk5MTVfZXJyb3Jfb2JqZWN0X2ZyZWUoZXJyb3ItPnNl bWFwaG9yZV9vYmopOwogCi0JZm9yIChpID0gMDsgaSA8IGVycm9yLT52bV9jb3VudDsgaSsrKQor CWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKGVycm9yLT5hY3RpdmVfYm8pOyBpKyspCiAJCWtm cmVlKGVycm9yLT5hY3RpdmVfYm9baV0pOwotCi0Ja2ZyZWUoZXJyb3ItPmFjdGl2ZV9ibyk7Ci0J a2ZyZWUoZXJyb3ItPmFjdGl2ZV9ib19jb3VudCk7CiAJa2ZyZWUoZXJyb3ItPnBpbm5lZF9ibyk7 Ci0Ja2ZyZWUoZXJyb3ItPnBpbm5lZF9ib19jb3VudCk7CisKIAlrZnJlZShlcnJvci0+b3Zlcmxh eSk7CiAJa2ZyZWUoZXJyb3ItPmRpc3BsYXkpOwogCWtmcmVlKGVycm9yKTsKQEAgLTc3Niw5ICs3 NjksNiBAQCBzdGF0aWMgdm9pZCBjYXB0dXJlX2JvKHN0cnVjdCBkcm1faTkxNV9lcnJvcl9idWZm ZXIgKmVyciwKIAllcnItPnJlYWRfZG9tYWlucyA9IG9iai0+YmFzZS5yZWFkX2RvbWFpbnM7CiAJ ZXJyLT53cml0ZV9kb21haW4gPSBvYmotPmJhc2Uud3JpdGVfZG9tYWluOwogCWVyci0+ZmVuY2Vf cmVnID0gb2JqLT5mZW5jZV9yZWc7Ci0JZXJyLT5waW5uZWQgPSAwOwotCWlmIChpOTE1X2dlbV9v YmpfaXNfcGlubmVkKG9iaikpCi0JCWVyci0+cGlubmVkID0gMTsKIAllcnItPnRpbGluZyA9IG9i ai0+dGlsaW5nX21vZGU7CiAJZXJyLT5kaXJ0eSA9IG9iai0+ZGlydHk7CiAJZXJyLT5wdXJnZWFi bGUgPSBvYmotPm1hZHYgIT0gSTkxNV9NQURWX1dJTExORUVEOwpAQCAtNzg2LDEzICs3NzYsMTcg QEAgc3RhdGljIHZvaWQgY2FwdHVyZV9ibyhzdHJ1Y3QgZHJtX2k5MTVfZXJyb3JfYnVmZmVyICpl cnIsCiAJZXJyLT5jYWNoZV9sZXZlbCA9IG9iai0+Y2FjaGVfbGV2ZWw7CiB9CiAKLXN0YXRpYyB1 MzIgY2FwdHVyZV9hY3RpdmVfYm8oc3RydWN0IGRybV9pOTE1X2Vycm9yX2J1ZmZlciAqZXJyLAot CQkJICAgICBpbnQgY291bnQsIHN0cnVjdCBsaXN0X2hlYWQgKmhlYWQpCitzdGF0aWMgdTMyIGNh cHR1cmVfZXJyb3JfYm8oc3RydWN0IGRybV9pOTE1X2Vycm9yX2J1ZmZlciAqZXJyLAorCQkJICAg IGludCBjb3VudCwgc3RydWN0IGxpc3RfaGVhZCAqaGVhZCwKKwkJCSAgICBib29sIHBpbm5lZF9v bmx5KQogewogCXN0cnVjdCBpOTE1X3ZtYSAqdm1hOwogCWludCBpID0gMDsKIAogCWxpc3RfZm9y X2VhY2hfZW50cnkodm1hLCBoZWFkLCB2bV9saW5rKSB7CisJCWlmIChwaW5uZWRfb25seSAmJiAh aTkxNV92bWFfaXNfcGlubmVkKHZtYSkpCisJCQljb250aW51ZTsKKwogCQljYXB0dXJlX2JvKGVy cisrLCB2bWEpOwogCQlpZiAoKytpID09IGNvdW50KQogCQkJYnJlYWs7CkBAIC04MDEsMjggKzc5 NSw2IEBAIHN0YXRpYyB1MzIgY2FwdHVyZV9hY3RpdmVfYm8oc3RydWN0IGRybV9pOTE1X2Vycm9y X2J1ZmZlciAqZXJyLAogCXJldHVybiBpOwogfQogCi1zdGF0aWMgdTMyIGNhcHR1cmVfcGlubmVk X2JvKHN0cnVjdCBkcm1faTkxNV9lcnJvcl9idWZmZXIgKmVyciwKLQkJCSAgICAgaW50IGNvdW50 LCBzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkLAotCQkJICAgICBzdHJ1Y3QgaTkxNV9hZGRyZXNzX3Nw YWNlICp2bSkKLXsKLQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqOwotCXN0cnVjdCBk cm1faTkxNV9lcnJvcl9idWZmZXIgKiBjb25zdCBmaXJzdCA9IGVycjsKLQlzdHJ1Y3QgZHJtX2k5 MTVfZXJyb3JfYnVmZmVyICogY29uc3QgbGFzdCA9IGVyciArIGNvdW50OwotCi0JbGlzdF9mb3Jf ZWFjaF9lbnRyeShvYmosIGhlYWQsIGdsb2JhbF9saXN0KSB7Ci0JCXN0cnVjdCBpOTE1X3ZtYSAq dm1hOwotCi0JCWlmIChlcnIgPT0gbGFzdCkKLQkJCWJyZWFrOwotCi0JCWxpc3RfZm9yX2VhY2hf ZW50cnkodm1hLCAmb2JqLT52bWFfbGlzdCwgb2JqX2xpbmspCi0JCQlpZiAodm1hLT52bSA9PSB2 bSAmJiBpOTE1X3ZtYV9pc19waW5uZWQodm1hKSkKLQkJCQljYXB0dXJlX2JvKGVycisrLCB2bWEp OwotCX0KLQotCXJldHVybiBlcnIgLSBmaXJzdDsKLX0KLQogLyogR2VuZXJhdGUgYSBzZW1pLXVu aXF1ZSBlcnJvciBjb2RlLiBUaGUgY29kZSBpcyBub3QgbWVhbnQgdG8gaGF2ZSBtZWFuaW5nLCBU aGUKICAqIGNvZGUncyBvbmx5IHB1cnBvc2UgaXMgdG8gdHJ5IHRvIHByZXZlbnQgZmFsc2UgZHVw bGljYXRlZCBidWcgcmVwb3J0cyBieQogICogZ3Jvc3NseSBlc3RpbWF0aW5nIGEgR1BVIGVycm9y IHN0YXRlLgpAQCAtMTA2Myw3ICsxMDM1LDYgQEAgc3RhdGljIHZvaWQgaTkxNV9yZWNvcmRfcmlu Z19zdGF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJfQogfQogCi0KIHN0 YXRpYyB2b2lkIGk5MTVfZ2VtX3JlY29yZF9hY3RpdmVfY29udGV4dChzdHJ1Y3QgaW50ZWxfZW5n aW5lX2NzICplbmdpbmUsCiAJCQkJCSAgIHN0cnVjdCBkcm1faTkxNV9lcnJvcl9zdGF0ZSAqZXJy b3IsCiAJCQkJCSAgIHN0cnVjdCBkcm1faTkxNV9lcnJvcl9yaW5nICplcmluZykKQEAgLTExMTEs OSArMTA4MiwxMCBAQCBzdGF0aWMgdm9pZCBpOTE1X2dlbV9yZWNvcmRfcmluZ3Moc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCQkJc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAq dm07CiAJCQlzdHJ1Y3QgaW50ZWxfcmluZyAqcmluZzsKIAotCQkJdm0gPSByZXF1ZXN0LT5jdHgg JiYgcmVxdWVzdC0+Y3R4LT5wcGd0dCA/CisJCQl2bSA9IHJlcXVlc3QtPmN0eC0+cHBndHQgPwog CQkJCSZyZXF1ZXN0LT5jdHgtPnBwZ3R0LT5iYXNlIDoKIAkJCQkmZ2d0dC0+YmFzZTsKKwkJCWVy cm9yLT5yaW5nW2ldLnZtID0gdm07CiAKIAkJCS8qIFdlIG5lZWQgdG8gY29weSB0aGVzZSB0byBh biBhbm9ueW1vdXMgYnVmZmVyCiAJCQkgKiBhcyB0aGUgc2ltcGxlc3QgbWV0aG9kIHRvIGF2b2lk IGJlaW5nIG92ZXJ3cml0dGVuCkBAIC0xMjA1LDg5ICsxMTc3LDgzIEBAIHN0YXRpYyB2b2lkIGk5 MTVfZ2VtX3JlY29yZF9yaW5ncyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJ fQogfQogCi0vKiBGSVhNRTogU2luY2UgcGluIGNvdW50L2JvdW5kIGxpc3QgaXMgZ2xvYmFsLCB3 ZSBkdXBsaWNhdGUgd2hhdCB3ZSBjYXB0dXJlIHBlcgotICogVk0uCi0gKi8KIHN0YXRpYyB2b2lk IGk5MTVfZ2VtX2NhcHR1cmVfdm0oc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAog CQkJCXN0cnVjdCBkcm1faTkxNV9lcnJvcl9zdGF0ZSAqZXJyb3IsCiAJCQkJc3RydWN0IGk5MTVf YWRkcmVzc19zcGFjZSAqdm0sCiAJCQkJY29uc3QgaW50IG5keCkKIHsKLQlzdHJ1Y3QgZHJtX2k5 MTVfZXJyb3JfYnVmZmVyICphY3RpdmVfYm8gPSBOVUxMLCAqcGlubmVkX2JvID0gTlVMTDsKLQlz dHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqOworCXN0cnVjdCBkcm1faTkxNV9lcnJvcl9i dWZmZXIgKmFjdGl2ZV9ibzsKIAlzdHJ1Y3QgaTkxNV92bWEgKnZtYTsKIAlpbnQgaTsKIAogCWkg PSAwOwogCWxpc3RfZm9yX2VhY2hfZW50cnkodm1hLCAmdm0tPmFjdGl2ZV9saXN0LCB2bV9saW5r KQogCQlpKys7Ci0JZXJyb3ItPmFjdGl2ZV9ib19jb3VudFtuZHhdID0gaTsKLQotCWxpc3RfZm9y X2VhY2hfZW50cnkob2JqLCAmZGV2X3ByaXYtPm1tLmJvdW5kX2xpc3QsIGdsb2JhbF9saXN0KSB7 Ci0JCWxpc3RfZm9yX2VhY2hfZW50cnkodm1hLCAmb2JqLT52bWFfbGlzdCwgb2JqX2xpbmspCi0J CQlpZiAodm1hLT52bSA9PSB2bSAmJiBpOTE1X3ZtYV9pc19waW5uZWQodm1hKSkKLQkJCQlpKys7 Ci0JfQotCWVycm9yLT5waW5uZWRfYm9fY291bnRbbmR4XSA9IGkgLSBlcnJvci0+YWN0aXZlX2Jv X2NvdW50W25keF07CiAKLQlpZiAoaSkgeworCWFjdGl2ZV9ibyA9IE5VTEw7CisJaWYgKGkpCiAJ CWFjdGl2ZV9ibyA9IGtjYWxsb2MoaSwgc2l6ZW9mKCphY3RpdmVfYm8pLCBHRlBfQVRPTUlDKTsK LQkJaWYgKGFjdGl2ZV9ibykKLQkJCXBpbm5lZF9ibyA9IGFjdGl2ZV9ibyArIGVycm9yLT5hY3Rp dmVfYm9fY291bnRbbmR4XTsKLQl9Ci0KIAlpZiAoYWN0aXZlX2JvKQotCQllcnJvci0+YWN0aXZl X2JvX2NvdW50W25keF0gPQotCQkJY2FwdHVyZV9hY3RpdmVfYm8oYWN0aXZlX2JvLAotCQkJCQkg IGVycm9yLT5hY3RpdmVfYm9fY291bnRbbmR4XSwKLQkJCQkJICAmdm0tPmFjdGl2ZV9saXN0KTsK LQotCWlmIChwaW5uZWRfYm8pCi0JCWVycm9yLT5waW5uZWRfYm9fY291bnRbbmR4XSA9Ci0JCQlj YXB0dXJlX3Bpbm5lZF9ibyhwaW5uZWRfYm8sCi0JCQkJCSAgZXJyb3ItPnBpbm5lZF9ib19jb3Vu dFtuZHhdLAotCQkJCQkgICZkZXZfcHJpdi0+bW0uYm91bmRfbGlzdCwgdm0pOworCQlpID0gY2Fw dHVyZV9lcnJvcl9ibyhhY3RpdmVfYm8sIGksICZ2bS0+YWN0aXZlX2xpc3QsIGZhbHNlKTsKKwll bHNlCisJCWkgPSAwOworCiAJZXJyb3ItPmFjdGl2ZV9ib1tuZHhdID0gYWN0aXZlX2JvOwotCWVy cm9yLT5waW5uZWRfYm9bbmR4XSA9IHBpbm5lZF9ibzsKKwllcnJvci0+YWN0aXZlX2JvX2NvdW50 W25keF0gPSBpOworCWVycm9yLT5hY3RpdmVfdm1bbmR4XSA9IHZtOwogfQogCi1zdGF0aWMgdm9p ZCBpOTE1X2dlbV9jYXB0dXJlX2J1ZmZlcnMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2LAotCQkJCSAgICAgc3RydWN0IGRybV9pOTE1X2Vycm9yX3N0YXRlICplcnJvcikKK3N0YXRp YyB2b2lkIGk5MTVfY2FwdHVyZV9hY3RpdmVfYnVmZmVycyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYsCisJCQkJCXN0cnVjdCBkcm1faTkxNV9lcnJvcl9zdGF0ZSAqZXJyb3IpCiB7 Ci0Jc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm07Ci0JaW50IGNudCA9IDAsIGkgPSAwOwot Ci0JbGlzdF9mb3JfZWFjaF9lbnRyeSh2bSwgJmRldl9wcml2LT52bV9saXN0LCBnbG9iYWxfbGlu aykKLQkJY250Kys7Ci0KLQllcnJvci0+YWN0aXZlX2JvID0ga2NhbGxvYyhjbnQsIHNpemVvZigq ZXJyb3ItPmFjdGl2ZV9ibyksIEdGUF9BVE9NSUMpOwotCWVycm9yLT5waW5uZWRfYm8gPSBrY2Fs bG9jKGNudCwgc2l6ZW9mKCplcnJvci0+cGlubmVkX2JvKSwgR0ZQX0FUT01JQyk7Ci0JZXJyb3It PmFjdGl2ZV9ib19jb3VudCA9IGtjYWxsb2MoY250LCBzaXplb2YoKmVycm9yLT5hY3RpdmVfYm9f Y291bnQpLAotCQkJCQkgR0ZQX0FUT01JQyk7Ci0JZXJyb3ItPnBpbm5lZF9ib19jb3VudCA9IGtj YWxsb2MoY250LCBzaXplb2YoKmVycm9yLT5waW5uZWRfYm9fY291bnQpLAotCQkJCQkgR0ZQX0FU T01JQyk7Ci0KLQlpZiAoZXJyb3ItPmFjdGl2ZV9ibyA9PSBOVUxMIHx8Ci0JICAgIGVycm9yLT5w aW5uZWRfYm8gPT0gTlVMTCB8fAotCSAgICBlcnJvci0+YWN0aXZlX2JvX2NvdW50ID09IE5VTEwg fHwKLQkgICAgZXJyb3ItPnBpbm5lZF9ib19jb3VudCA9PSBOVUxMKSB7Ci0JCWtmcmVlKGVycm9y LT5hY3RpdmVfYm8pOwotCQlrZnJlZShlcnJvci0+YWN0aXZlX2JvX2NvdW50KTsKLQkJa2ZyZWUo ZXJyb3ItPnBpbm5lZF9ibyk7Ci0JCWtmcmVlKGVycm9yLT5waW5uZWRfYm9fY291bnQpOwotCi0J CWVycm9yLT5hY3RpdmVfYm8gPSBOVUxMOwotCQllcnJvci0+YWN0aXZlX2JvX2NvdW50ID0gTlVM TDsKLQkJZXJyb3ItPnBpbm5lZF9ibyA9IE5VTEw7Ci0JCWVycm9yLT5waW5uZWRfYm9fY291bnQg PSBOVUxMOwotCX0gZWxzZSB7Ci0JCWxpc3RfZm9yX2VhY2hfZW50cnkodm0sICZkZXZfcHJpdi0+ dm1fbGlzdCwgZ2xvYmFsX2xpbmspCi0JCQlpOTE1X2dlbV9jYXB0dXJlX3ZtKGRldl9wcml2LCBl cnJvciwgdm0sIGkrKyk7CisJaW50IGNudCA9IDAsIGksIGo7CisKKwlCVUlMRF9CVUdfT04oQVJS QVlfU0laRShlcnJvci0+cmluZykgPiBBUlJBWV9TSVpFKGVycm9yLT5hY3RpdmVfYm8pKTsKKwlC VUlMRF9CVUdfT04oQVJSQVlfU0laRShlcnJvci0+YWN0aXZlX2JvKSAhPSBBUlJBWV9TSVpFKGVy cm9yLT5hY3RpdmVfdm0pKTsKKwlCVUlMRF9CVUdfT04oQVJSQVlfU0laRShlcnJvci0+YWN0aXZl X2JvKSAhPSBBUlJBWV9TSVpFKGVycm9yLT5hY3RpdmVfYm9fY291bnQpKTsKKworCWZvciAoaSA9 IDA7IGkgPCBJOTE1X05VTV9FTkdJTkVTOyBpKyspIHsKKwkJaWYgKGVycm9yLT5yaW5nW2ldLnZt ID09IE5VTEwpCisJCQljb250aW51ZTsKKworCQlmb3IgKGogPSAwOyBqIDwgaTsgaisrKQorCQkJ aWYgKGVycm9yLT5yaW5nW2pdLnZtID09IGVycm9yLT5yaW5nW2ldLnZtKQorCQkJCWJyZWFrOwor CQlpZiAoaiAhPSBpKQorCQkJY29udGludWU7CiAKLQkJZXJyb3ItPnZtX2NvdW50ID0gY250Owor CQlpOTE1X2dlbV9jYXB0dXJlX3ZtKGRldl9wcml2LCBlcnJvciwgZXJyb3ItPnJpbmdbaV0udm0s IGNudCsrKTsKIAl9CiB9CiAKK3N0YXRpYyB2b2lkIGk5MTVfY2FwdHVyZV9waW5uZWRfYnVmZmVy cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCisJCQkJCXN0cnVjdCBkcm1faTkx NV9lcnJvcl9zdGF0ZSAqZXJyb3IpCit7CisJc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0g PSAmZGV2X3ByaXYtPmdndHQuYmFzZTsKKwlzdHJ1Y3QgZHJtX2k5MTVfZXJyb3JfYnVmZmVyICpi bzsKKwlzdHJ1Y3QgaTkxNV92bWEgKnZtYTsKKwlpbnQgaSwgajsKKworCWkgPSAwOworCWxpc3Rf Zm9yX2VhY2hfZW50cnkodm1hLCAmdm0tPmFjdGl2ZV9saXN0LCB2bV9saW5rKQorCQlpKys7CisK KwlqID0gMDsKKwlsaXN0X2Zvcl9lYWNoX2VudHJ5KHZtYSwgJnZtLT5pbmFjdGl2ZV9saXN0LCB2 bV9saW5rKQorCQlqKys7CisKKwlibyA9IE5VTEw7CisJaWYgKGkgKyBqKQorCQlibyA9IGtjYWxs b2MoaSArIGosIHNpemVvZigqYm8pLCBHRlBfQVRPTUlDKTsKKwlpZiAoYm8gPT0gTlVMTCkKKwkJ cmV0dXJuOworCisJaSA9IGNhcHR1cmVfZXJyb3JfYm8oYm8sIGksICZ2bS0+YWN0aXZlX2xpc3Qs IHRydWUpOworCWogPSBjYXB0dXJlX2Vycm9yX2JvKGJvICsgaSwgaiwgJnZtLT5pbmFjdGl2ZV9s aXN0LCB0cnVlKTsKKwllcnJvci0+cGlubmVkX2JvX2NvdW50ID0gaSArIGo7CisJZXJyb3ItPnBp bm5lZF9ibyA9IGJvOworfQorCiAvKiBDYXB0dXJlIGFsbCByZWdpc3RlcnMgd2hpY2ggZG9uJ3Qg Zml0IGludG8gYW5vdGhlciBjYXRlZ29yeS4gKi8KIHN0YXRpYyB2b2lkIGk5MTVfY2FwdHVyZV9y ZWdfc3RhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCQkJCSAgIHN0cnVj dCBkcm1faTkxNV9lcnJvcl9zdGF0ZSAqZXJyb3IpCkBAIC0xNDMxLDEwICsxMzk3LDEyIEBAIHZv aWQgaTkxNV9jYXB0dXJlX2Vycm9yX3N0YXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiwKIAogCWk5MTVfY2FwdHVyZV9nZW5fc3RhdGUoZGV2X3ByaXYsIGVycm9yKTsKIAlpOTE1 X2NhcHR1cmVfcmVnX3N0YXRlKGRldl9wcml2LCBlcnJvcik7Ci0JaTkxNV9nZW1fY2FwdHVyZV9i dWZmZXJzKGRldl9wcml2LCBlcnJvcik7CiAJaTkxNV9nZW1fcmVjb3JkX2ZlbmNlcyhkZXZfcHJp diwgZXJyb3IpOwogCWk5MTVfZ2VtX3JlY29yZF9yaW5ncyhkZXZfcHJpdiwgZXJyb3IpOwogCisJ aTkxNV9jYXB0dXJlX2FjdGl2ZV9idWZmZXJzKGRldl9wcml2LCBlcnJvcik7CisJaTkxNV9jYXB0 dXJlX3Bpbm5lZF9idWZmZXJzKGRldl9wcml2LCBlcnJvcik7CisKIAlkb19nZXR0aW1lb2ZkYXko JmVycm9yLT50aW1lKTsKIAogCWVycm9yLT5vdmVybGF5ID0gaW50ZWxfb3ZlcmxheV9jYXB0dXJl X2Vycm9yX3N0YXRlKGRldl9wcml2KTsKLS0gCjIuOC4xCgpfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdm eEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFp bG1hbi9saXN0aW5mby9pbnRlbC1nZngK