From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH 05/33] drm/i915: Reduce amount of duplicate buffer information captured on error Date: Sun, 7 Aug 2016 15:45:13 +0100 Message-ID: <1470581141-14432-6-git-send-email-chris@chris-wilson.co.uk> References: <1470581141-14432-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-x243.google.com (mail-wm0-x243.google.com [IPv6:2a00:1450:400c:c09::243]) by gabe.freedesktop.org (Postfix) with ESMTPS id ABED76E2EA for ; Sun, 7 Aug 2016 14:45:53 +0000 (UTC) Received: by mail-wm0-x243.google.com with SMTP id o80so11076118wme.0 for ; Sun, 07 Aug 2016 07:45:53 -0700 (PDT) In-Reply-To: <1470581141-14432-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 Ky0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3B1X2Vycm9yLmMgfCAyMDIgKysrKysrKysr KysrKystLS0tLS0tLS0tLS0tLS0tLS0tLQogMiBmaWxlcyBjaGFuZ2VkLCA4OSBpbnNlcnRpb25z KCspLCAxMjIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKaW5kZXggM2Q1NDZi NWMyZTRjLi4xNWM0MTE1OGI0Y2YgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZHJ2LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaApAQCAtNTE3LDYg KzUxNyw3IEBAIHN0cnVjdCBkcm1faTkxNV9lcnJvcl9zdGF0ZSB7CiAJCWludCBudW1fd2FpdGVy czsKIAkJaW50IGhhbmdjaGVja19zY29yZTsKIAkJZW51bSBpbnRlbF9lbmdpbmVfaGFuZ2NoZWNr X2FjdGlvbiBoYW5nY2hlY2tfYWN0aW9uOworCQlzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2 bTsKIAkJaW50IG51bV9yZXF1ZXN0czsKIAogCQkvKiBvdXIgb3duIHRyYWNraW5nIG9mIHJpbmcg aGVhZCBhbmQgdGFpbCAqLwpAQCAtNTg2LDE3ICs1ODcsMTUgQEAgc3RydWN0IGRybV9pOTE1X2Vy cm9yX3N0YXRlIHsKIAkJdTMyIHJlYWRfZG9tYWluczsKIAkJdTMyIHdyaXRlX2RvbWFpbjsKIAkJ czMyIGZlbmNlX3JlZzpJOTE1X01BWF9OVU1fRkVOQ0VfQklUUzsKLQkJczMyIHBpbm5lZDoyOwog CQl1MzIgdGlsaW5nOjI7CiAJCXUzMiBkaXJ0eToxOwogCQl1MzIgcHVyZ2VhYmxlOjE7CiAJCXUz MiB1c2VycHRyOjE7CiAJCXMzMiBlbmdpbmU6NDsKIAkJdTMyIGNhY2hlX2xldmVsOjM7Ci0JfSAq KmFjdGl2ZV9ibywgKipwaW5uZWRfYm87Ci0KLQl1MzIgKmFjdGl2ZV9ib19jb3VudCwgKnBpbm5l ZF9ib19jb3VudDsKLQl1MzIgdm1fY291bnQ7CisJfSAqYWN0aXZlX2JvW0k5MTVfTlVNX0VOR0lO RVNdLCAqcGlubmVkX2JvOworCXUzMiBhY3RpdmVfYm9fY291bnRbSTkxNV9OVU1fRU5HSU5FU10s IHBpbm5lZF9ib19jb3VudDsKKwlzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICphY3RpdmVfdm1b STkxNV9OVU1fRU5HSU5FU107CiB9OwogCiBzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yOwpkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ncHVfZXJyb3IuYyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZ3B1X2Vycm9yLmMKaW5kZXggZWVjYjg3MDYzYzg4Li5jZWQyOTY5ODNj YWEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3B1X2Vycm9yLmMKKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ncHVfZXJyb3IuYwpAQCAtNDIsMTYgKzQyLDYg QEAgc3RhdGljIGNvbnN0IGNoYXIgKmVuZ2luZV9zdHIoaW50IGVuZ2luZSkKIAl9CiB9CiAKLXN0 YXRpYyBjb25zdCBjaGFyICpwaW5fZmxhZyhpbnQgcGlubmVkKQotewotCWlmIChwaW5uZWQgPiAw KQotCQlyZXR1cm4gIiBQIjsKLQllbHNlIGlmIChwaW5uZWQgPCAwKQotCQlyZXR1cm4gIiBwIjsK LQllbHNlCi0JCXJldHVybiAiIjsKLX0KLQogc3RhdGljIGNvbnN0IGNoYXIgKnRpbGluZ19mbGFn KGludCB0aWxpbmcpCiB7CiAJc3dpdGNoICh0aWxpbmcpIHsKQEAgLTE4OSw3ICsxNzksNyBAQCBz dGF0aWMgdm9pZCBwcmludF9lcnJvcl9idWZmZXJzKHN0cnVjdCBkcm1faTkxNV9lcnJvcl9zdGF0 ZV9idWYgKm0sCiB7CiAJaW50IGk7CiAKLQllcnJfcHJpbnRmKG0sICIgICVzIFslZF06XG4iLCBu YW1lLCBjb3VudCk7CisJZXJyX3ByaW50ZihtLCAiJXMgWyVkXTpcbiIsIG5hbWUsIGNvdW50KTsK IAogCXdoaWxlIChjb3VudC0tKSB7CiAJCWVycl9wcmludGYobSwgIiAgICAlMDh4XyUwOHggJTh1 ICUwMnggJTAyeCBbICIsCkBAIC0yMDIsNyArMTkyLDYgQEAgc3RhdGljIHZvaWQgcHJpbnRfZXJy b3JfYnVmZmVycyhzdHJ1Y3QgZHJtX2k5MTVfZXJyb3Jfc3RhdGVfYnVmICptLAogCQkJZXJyX3By aW50ZihtLCAiJTAyeCAiLCBlcnItPnJzZXFub1tpXSk7CiAKIAkJZXJyX3ByaW50ZihtLCAiXSAl MDJ4IiwgZXJyLT53c2Vxbm8pOwotCQllcnJfcHV0cyhtLCBwaW5fZmxhZyhlcnItPnBpbm5lZCkp OwogCQllcnJfcHV0cyhtLCB0aWxpbmdfZmxhZyhlcnItPnRpbGluZykpOwogCQllcnJfcHV0cyht LCBkaXJ0eV9mbGFnKGVyci0+ZGlydHkpKTsKIAkJZXJyX3B1dHMobSwgcHVyZ2VhYmxlX2ZsYWco ZXJyLT5wdXJnZWFibGUpKTsKQEAgLTQxNCwxOCArNDAzLDI1IEBAIGludCBpOTE1X2Vycm9yX3N0 YXRlX3RvX3N0cihzdHJ1Y3QgZHJtX2k5MTVfZXJyb3Jfc3RhdGVfYnVmICptLAogCQkJZXJyb3Jf cHJpbnRfZW5naW5lKG0sICZlcnJvci0+ZW5naW5lW2ldKTsKIAl9CiAKLQlmb3IgKGkgPSAwOyBp IDwgZXJyb3ItPnZtX2NvdW50OyBpKyspIHsKLQkJZXJyX3ByaW50ZihtLCAidm1bJWRdXG4iLCBp KTsKKwlmb3IgKGkgPSAwOyBpIDwgSTkxNV9OVU1fRU5HSU5FUzsgaSsrKSB7CisJCWlmICghZXJy b3ItPmFjdGl2ZV92bVtpXSkKKwkJCWJyZWFrOwogCi0JCXByaW50X2Vycm9yX2J1ZmZlcnMobSwg IkFjdGl2ZSIsCisJCWVycl9wcmludGYobSwgIkFjdGl2ZSB2bVslZF1cbiIsIGkpOworCQlmb3Ig KGogPSAwOyBqIDwgSTkxNV9OVU1fRU5HSU5FUzsgaisrKSB7CisJCQlpZiAoZXJyb3ItPmVuZ2lu ZVtqXS52bSA9PSBlcnJvci0+YWN0aXZlX3ZtW2ldKQorCQkJCWVycl9wcmludGYobSwgIiAgICAl c1xuIiwKKwkJCQkJICAgZGV2X3ByaXYtPmVuZ2luZVtqXS5uYW1lKTsKKwkJfQorCQlwcmludF9l cnJvcl9idWZmZXJzKG0sICIgIEJ1ZmZlcnMiLAogCQkJCSAgICBlcnJvci0+YWN0aXZlX2JvW2ld LAogCQkJCSAgICBlcnJvci0+YWN0aXZlX2JvX2NvdW50W2ldKTsKLQotCQlwcmludF9lcnJvcl9i dWZmZXJzKG0sICJQaW5uZWQiLAotCQkJCSAgICBlcnJvci0+cGlubmVkX2JvW2ldLAotCQkJCSAg ICBlcnJvci0+cGlubmVkX2JvX2NvdW50W2ldKTsKIAl9CiAKKwlwcmludF9lcnJvcl9idWZmZXJz KG0sICJQaW5uZWQgKGdsb2JhbCkiLAorCQkJICAgIGVycm9yLT5waW5uZWRfYm8sCisJCQkgICAg ZXJyb3ItPnBpbm5lZF9ib19jb3VudCk7CisKIAlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShl cnJvci0+ZW5naW5lKTsgaSsrKSB7CiAJCXN0cnVjdCBkcm1faTkxNV9lcnJvcl9lbmdpbmUgKmVl ID0gJmVycm9yLT5lbmdpbmVbaV07CiAKQEAgLTYyNiwxMyArNjIyLDEwIEBAIHN0YXRpYyB2b2lk IGk5MTVfZXJyb3Jfc3RhdGVfZnJlZShzdHJ1Y3Qga3JlZiAqZXJyb3JfcmVmKQogCiAJaTkxNV9l cnJvcl9vYmplY3RfZnJlZShlcnJvci0+c2VtYXBob3JlX29iaik7CiAKLQlmb3IgKGkgPSAwOyBp IDwgZXJyb3ItPnZtX2NvdW50OyBpKyspCisJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUoZXJy b3ItPmFjdGl2ZV9ibyk7IGkrKykKIAkJa2ZyZWUoZXJyb3ItPmFjdGl2ZV9ib1tpXSk7Ci0KLQlr ZnJlZShlcnJvci0+YWN0aXZlX2JvKTsKLQlrZnJlZShlcnJvci0+YWN0aXZlX2JvX2NvdW50KTsK IAlrZnJlZShlcnJvci0+cGlubmVkX2JvKTsKLQlrZnJlZShlcnJvci0+cGlubmVkX2JvX2NvdW50 KTsKKwogCWtmcmVlKGVycm9yLT5vdmVybGF5KTsKIAlrZnJlZShlcnJvci0+ZGlzcGxheSk7CiAJ a2ZyZWUoZXJyb3IpOwpAQCAtNzc4LDkgKzc3MSw2IEBAIHN0YXRpYyB2b2lkIGNhcHR1cmVfYm8o c3RydWN0IGRybV9pOTE1X2Vycm9yX2J1ZmZlciAqZXJyLAogCWVyci0+cmVhZF9kb21haW5zID0g b2JqLT5iYXNlLnJlYWRfZG9tYWluczsKIAllcnItPndyaXRlX2RvbWFpbiA9IG9iai0+YmFzZS53 cml0ZV9kb21haW47CiAJZXJyLT5mZW5jZV9yZWcgPSBvYmotPmZlbmNlX3JlZzsKLQllcnItPnBp bm5lZCA9IDA7Ci0JaWYgKGk5MTVfZ2VtX29ial9pc19waW5uZWQob2JqKSkKLQkJZXJyLT5waW5u ZWQgPSAxOwogCWVyci0+dGlsaW5nID0gaTkxNV9nZW1fb2JqZWN0X2dldF90aWxpbmcob2JqKTsK IAllcnItPmRpcnR5ID0gb2JqLT5kaXJ0eTsKIAllcnItPnB1cmdlYWJsZSA9IG9iai0+bWFkdiAh PSBJOTE1X01BRFZfV0lMTE5FRUQ7CkBAIC03ODgsMTMgKzc3OCwxNyBAQCBzdGF0aWMgdm9pZCBj YXB0dXJlX2JvKHN0cnVjdCBkcm1faTkxNV9lcnJvcl9idWZmZXIgKmVyciwKIAllcnItPmNhY2hl X2xldmVsID0gb2JqLT5jYWNoZV9sZXZlbDsKIH0KIAotc3RhdGljIHUzMiBjYXB0dXJlX2FjdGl2 ZV9ibyhzdHJ1Y3QgZHJtX2k5MTVfZXJyb3JfYnVmZmVyICplcnIsCi0JCQkgICAgIGludCBjb3Vu dCwgc3RydWN0IGxpc3RfaGVhZCAqaGVhZCkKK3N0YXRpYyB1MzIgY2FwdHVyZV9lcnJvcl9ibyhz dHJ1Y3QgZHJtX2k5MTVfZXJyb3JfYnVmZmVyICplcnIsCisJCQkgICAgaW50IGNvdW50LCBzdHJ1 Y3QgbGlzdF9oZWFkICpoZWFkLAorCQkJICAgIGJvb2wgcGlubmVkX29ubHkpCiB7CiAJc3RydWN0 IGk5MTVfdm1hICp2bWE7CiAJaW50IGkgPSAwOwogCiAJbGlzdF9mb3JfZWFjaF9lbnRyeSh2bWEs IGhlYWQsIHZtX2xpbmspIHsKKwkJaWYgKHBpbm5lZF9vbmx5ICYmICFpOTE1X3ZtYV9pc19waW5u ZWQodm1hKSkKKwkJCWNvbnRpbnVlOworCiAJCWNhcHR1cmVfYm8oZXJyKyssIHZtYSk7CiAJCWlm ICgrK2kgPT0gY291bnQpCiAJCQlicmVhazsKQEAgLTgwMywyOCArNzk3LDYgQEAgc3RhdGljIHUz MiBjYXB0dXJlX2FjdGl2ZV9ibyhzdHJ1Y3QgZHJtX2k5MTVfZXJyb3JfYnVmZmVyICplcnIsCiAJ cmV0dXJuIGk7CiB9CiAKLXN0YXRpYyB1MzIgY2FwdHVyZV9waW5uZWRfYm8oc3RydWN0IGRybV9p OTE1X2Vycm9yX2J1ZmZlciAqZXJyLAotCQkJICAgICBpbnQgY291bnQsIHN0cnVjdCBsaXN0X2hl YWQgKmhlYWQsCi0JCQkgICAgIHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtKQotewotCXN0 cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmo7Ci0Jc3RydWN0IGRybV9pOTE1X2Vycm9yX2J1 ZmZlciAqIGNvbnN0IGZpcnN0ID0gZXJyOwotCXN0cnVjdCBkcm1faTkxNV9lcnJvcl9idWZmZXIg KiBjb25zdCBsYXN0ID0gZXJyICsgY291bnQ7Ci0KLQlsaXN0X2Zvcl9lYWNoX2VudHJ5KG9iaiwg aGVhZCwgZ2xvYmFsX2xpc3QpIHsKLQkJc3RydWN0IGk5MTVfdm1hICp2bWE7Ci0KLQkJaWYgKGVy ciA9PSBsYXN0KQotCQkJYnJlYWs7Ci0KLQkJbGlzdF9mb3JfZWFjaF9lbnRyeSh2bWEsICZvYmot PnZtYV9saXN0LCBvYmpfbGluaykKLQkJCWlmICh2bWEtPnZtID09IHZtICYmIGk5MTVfdm1hX2lz X3Bpbm5lZCh2bWEpKQotCQkJCWNhcHR1cmVfYm8oZXJyKyssIHZtYSk7Ci0JfQotCi0JcmV0dXJu IGVyciAtIGZpcnN0OwotfQotCiAvKiBHZW5lcmF0ZSBhIHNlbWktdW5pcXVlIGVycm9yIGNvZGUu IFRoZSBjb2RlIGlzIG5vdCBtZWFudCB0byBoYXZlIG1lYW5pbmcsIFRoZQogICogY29kZSdzIG9u bHkgcHVycG9zZSBpcyB0byB0cnkgdG8gcHJldmVudCBmYWxzZSBkdXBsaWNhdGVkIGJ1ZyByZXBv cnRzIGJ5CiAgKiBncm9zc2x5IGVzdGltYXRpbmcgYSBHUFUgZXJyb3Igc3RhdGUuCkBAIC0xMDYy LDcgKzEwMzQsNiBAQCBzdGF0aWMgdm9pZCBlcnJvcl9yZWNvcmRfZW5naW5lX3JlZ2lzdGVycyhz dHJ1Y3QgZHJtX2k5MTVfZXJyb3Jfc3RhdGUgKmVycm9yLAogCX0KIH0KIAotCiBzdGF0aWMgdm9p ZCBpOTE1X2dlbV9yZWNvcmRfYWN0aXZlX2NvbnRleHQoc3RydWN0IGludGVsX2VuZ2luZV9jcyAq ZW5naW5lLAogCQkJCQkgICBzdHJ1Y3QgZHJtX2k5MTVfZXJyb3Jfc3RhdGUgKmVycm9yLAogCQkJ CQkgICBzdHJ1Y3QgZHJtX2k5MTVfZXJyb3JfZW5naW5lICplZSkKQEAgLTExMTUsMTAgKzEwODYs OSBAQCBzdGF0aWMgdm9pZCBpOTE1X2dlbV9yZWNvcmRfcmluZ3Moc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2LAogCiAJCXJlcXVlc3QgPSBpOTE1X2dlbV9maW5kX2FjdGl2ZV9yZXF1 ZXN0KGVuZ2luZSk7CiAJCWlmIChyZXF1ZXN0KSB7Ci0JCQlzdHJ1Y3QgaTkxNV9hZGRyZXNzX3Nw YWNlICp2bTsKIAkJCXN0cnVjdCBpbnRlbF9yaW5nICpyaW5nOwogCi0JCQl2bSA9IHJlcXVlc3Qt PmN0eC0+cHBndHQgPworCQkJZWUtPnZtID0gcmVxdWVzdC0+Y3R4LT5wcGd0dCA/CiAJCQkJJnJl cXVlc3QtPmN0eC0+cHBndHQtPmJhc2UgOiAmZ2d0dC0+YmFzZTsKIAogCQkJLyogV2UgbmVlZCB0 byBjb3B5IHRoZXNlIHRvIGFuIGFub255bW91cyBidWZmZXIKQEAgLTExMjgsNyArMTA5OCw3IEBA IHN0YXRpYyB2b2lkIGk5MTVfZ2VtX3JlY29yZF9yaW5ncyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYsCiAJCQllZS0+YmF0Y2hidWZmZXIgPQogCQkJCWk5MTVfZXJyb3Jfb2JqZWN0 X2NyZWF0ZShkZXZfcHJpdiwKIAkJCQkJCQkgcmVxdWVzdC0+YmF0Y2hfb2JqLAotCQkJCQkJCSB2 bSk7CisJCQkJCQkJIGVlLT52bSk7CiAKIAkJCWlmIChIQVNfQlJPS0VOX0NTX1RMQihkZXZfcHJp dikpCiAJCQkJZWUtPndhX2JhdGNoYnVmZmVyID0KQEAgLTEyMTAsODkgKzExODAsODUgQEAgc3Rh dGljIHZvaWQgaTkxNV9nZW1fcmVjb3JkX3JpbmdzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiwKIAl9CiB9CiAKLS8qIEZJWE1FOiBTaW5jZSBwaW4gY291bnQvYm91bmQgbGlzdCBp cyBnbG9iYWwsIHdlIGR1cGxpY2F0ZSB3aGF0IHdlIGNhcHR1cmUgcGVyCi0gKiBWTS4KLSAqLwog c3RhdGljIHZvaWQgaTkxNV9nZW1fY2FwdHVyZV92bShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYsCiAJCQkJc3RydWN0IGRybV9pOTE1X2Vycm9yX3N0YXRlICplcnJvciwKIAkJCQlz dHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSwKIAkJCQljb25zdCBpbnQgbmR4KQogewotCXN0 cnVjdCBkcm1faTkxNV9lcnJvcl9idWZmZXIgKmFjdGl2ZV9ibyA9IE5VTEwsICpwaW5uZWRfYm8g PSBOVUxMOwotCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmo7CisJc3RydWN0IGRybV9p OTE1X2Vycm9yX2J1ZmZlciAqYWN0aXZlX2JvOwogCXN0cnVjdCBpOTE1X3ZtYSAqdm1hOwogCWlu dCBpOwogCiAJaSA9IDA7CiAJbGlzdF9mb3JfZWFjaF9lbnRyeSh2bWEsICZ2bS0+YWN0aXZlX2xp c3QsIHZtX2xpbmspCiAJCWkrKzsKLQllcnJvci0+YWN0aXZlX2JvX2NvdW50W25keF0gPSBpOwot Ci0JbGlzdF9mb3JfZWFjaF9lbnRyeShvYmosICZkZXZfcHJpdi0+bW0uYm91bmRfbGlzdCwgZ2xv YmFsX2xpc3QpIHsKLQkJbGlzdF9mb3JfZWFjaF9lbnRyeSh2bWEsICZvYmotPnZtYV9saXN0LCBv YmpfbGluaykKLQkJCWlmICh2bWEtPnZtID09IHZtICYmIGk5MTVfdm1hX2lzX3Bpbm5lZCh2bWEp KQotCQkJCWkrKzsKLQl9Ci0JZXJyb3ItPnBpbm5lZF9ib19jb3VudFtuZHhdID0gaSAtIGVycm9y LT5hY3RpdmVfYm9fY291bnRbbmR4XTsKIAotCWlmIChpKSB7CisJYWN0aXZlX2JvID0gTlVMTDsK KwlpZiAoaSkKIAkJYWN0aXZlX2JvID0ga2NhbGxvYyhpLCBzaXplb2YoKmFjdGl2ZV9ibyksIEdG UF9BVE9NSUMpOwotCQlpZiAoYWN0aXZlX2JvKQotCQkJcGlubmVkX2JvID0gYWN0aXZlX2JvICsg ZXJyb3ItPmFjdGl2ZV9ib19jb3VudFtuZHhdOwotCX0KLQogCWlmIChhY3RpdmVfYm8pCi0JCWVy cm9yLT5hY3RpdmVfYm9fY291bnRbbmR4XSA9Ci0JCQljYXB0dXJlX2FjdGl2ZV9ibyhhY3RpdmVf Ym8sCi0JCQkJCSAgZXJyb3ItPmFjdGl2ZV9ib19jb3VudFtuZHhdLAotCQkJCQkgICZ2bS0+YWN0 aXZlX2xpc3QpOwotCi0JaWYgKHBpbm5lZF9ibykKLQkJZXJyb3ItPnBpbm5lZF9ib19jb3VudFtu ZHhdID0KLQkJCWNhcHR1cmVfcGlubmVkX2JvKHBpbm5lZF9ibywKLQkJCQkJICBlcnJvci0+cGlu bmVkX2JvX2NvdW50W25keF0sCi0JCQkJCSAgJmRldl9wcml2LT5tbS5ib3VuZF9saXN0LCB2bSk7 CisJCWkgPSBjYXB0dXJlX2Vycm9yX2JvKGFjdGl2ZV9ibywgaSwgJnZtLT5hY3RpdmVfbGlzdCwg ZmFsc2UpOworCWVsc2UKKwkJaSA9IDA7CisKIAllcnJvci0+YWN0aXZlX2JvW25keF0gPSBhY3Rp dmVfYm87Ci0JZXJyb3ItPnBpbm5lZF9ib1tuZHhdID0gcGlubmVkX2JvOworCWVycm9yLT5hY3Rp dmVfYm9fY291bnRbbmR4XSA9IGk7CisJZXJyb3ItPmFjdGl2ZV92bVtuZHhdID0gdm07CiB9CiAK LXN0YXRpYyB2b2lkIGk5MTVfZ2VtX2NhcHR1cmVfYnVmZmVycyhzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYsCi0JCQkJICAgICBzdHJ1Y3QgZHJtX2k5MTVfZXJyb3Jfc3RhdGUgKmVy cm9yKQorc3RhdGljIHZvaWQgaTkxNV9jYXB0dXJlX2FjdGl2ZV9idWZmZXJzKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiwKKwkJCQkJc3RydWN0IGRybV9pOTE1X2Vycm9yX3N0YXRl ICplcnJvcikKIHsKLQlzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bTsKLQlpbnQgY250ID0g MCwgaSA9IDA7Ci0KLQlsaXN0X2Zvcl9lYWNoX2VudHJ5KHZtLCAmZGV2X3ByaXYtPnZtX2xpc3Qs IGdsb2JhbF9saW5rKQotCQljbnQrKzsKLQotCWVycm9yLT5hY3RpdmVfYm8gPSBrY2FsbG9jKGNu dCwgc2l6ZW9mKCplcnJvci0+YWN0aXZlX2JvKSwgR0ZQX0FUT01JQyk7Ci0JZXJyb3ItPnBpbm5l ZF9ibyA9IGtjYWxsb2MoY250LCBzaXplb2YoKmVycm9yLT5waW5uZWRfYm8pLCBHRlBfQVRPTUlD KTsKLQllcnJvci0+YWN0aXZlX2JvX2NvdW50ID0ga2NhbGxvYyhjbnQsIHNpemVvZigqZXJyb3It PmFjdGl2ZV9ib19jb3VudCksCi0JCQkJCSBHRlBfQVRPTUlDKTsKLQllcnJvci0+cGlubmVkX2Jv X2NvdW50ID0ga2NhbGxvYyhjbnQsIHNpemVvZigqZXJyb3ItPnBpbm5lZF9ib19jb3VudCksCi0J CQkJCSBHRlBfQVRPTUlDKTsKLQotCWlmIChlcnJvci0+YWN0aXZlX2JvID09IE5VTEwgfHwKLQkg ICAgZXJyb3ItPnBpbm5lZF9ibyA9PSBOVUxMIHx8Ci0JICAgIGVycm9yLT5hY3RpdmVfYm9fY291 bnQgPT0gTlVMTCB8fAotCSAgICBlcnJvci0+cGlubmVkX2JvX2NvdW50ID09IE5VTEwpIHsKLQkJ a2ZyZWUoZXJyb3ItPmFjdGl2ZV9ibyk7Ci0JCWtmcmVlKGVycm9yLT5hY3RpdmVfYm9fY291bnQp OwotCQlrZnJlZShlcnJvci0+cGlubmVkX2JvKTsKLQkJa2ZyZWUoZXJyb3ItPnBpbm5lZF9ib19j b3VudCk7Ci0KLQkJZXJyb3ItPmFjdGl2ZV9ibyA9IE5VTEw7Ci0JCWVycm9yLT5hY3RpdmVfYm9f Y291bnQgPSBOVUxMOwotCQllcnJvci0+cGlubmVkX2JvID0gTlVMTDsKLQkJZXJyb3ItPnBpbm5l ZF9ib19jb3VudCA9IE5VTEw7Ci0JfSBlbHNlIHsKLQkJbGlzdF9mb3JfZWFjaF9lbnRyeSh2bSwg JmRldl9wcml2LT52bV9saXN0LCBnbG9iYWxfbGluaykKLQkJCWk5MTVfZ2VtX2NhcHR1cmVfdm0o ZGV2X3ByaXYsIGVycm9yLCB2bSwgaSsrKTsKKwlpbnQgY250ID0gMCwgaSwgajsKKworCUJVSUxE X0JVR19PTihBUlJBWV9TSVpFKGVycm9yLT5lbmdpbmUpID4gQVJSQVlfU0laRShlcnJvci0+YWN0 aXZlX2JvKSk7CisJQlVJTERfQlVHX09OKEFSUkFZX1NJWkUoZXJyb3ItPmFjdGl2ZV9ibykgIT0g QVJSQVlfU0laRShlcnJvci0+YWN0aXZlX3ZtKSk7CisJQlVJTERfQlVHX09OKEFSUkFZX1NJWkUo ZXJyb3ItPmFjdGl2ZV9ibykgIT0gQVJSQVlfU0laRShlcnJvci0+YWN0aXZlX2JvX2NvdW50KSk7 CiAKLQkJZXJyb3ItPnZtX2NvdW50ID0gY250OworCWZvciAoaSA9IDA7IGkgPCBJOTE1X05VTV9F TkdJTkVTOyBpKyspIHsKKwkJc3RydWN0IGRybV9pOTE1X2Vycm9yX2VuZ2luZSAqZWUgPSAmZXJy b3ItPmVuZ2luZVtpXTsKKworCQlpZiAoIWVlLT52bSkKKwkJCWNvbnRpbnVlOworCisJCWZvciAo aiA9IDA7IGogPCBpOyBqKyspCisJCQlpZiAoZXJyb3ItPmVuZ2luZVtqXS52bSA9PSBlZS0+dm0p CisJCQkJYnJlYWs7CisJCWlmIChqICE9IGkpCisJCQljb250aW51ZTsKKworCQlpOTE1X2dlbV9j YXB0dXJlX3ZtKGRldl9wcml2LCBlcnJvciwgZWUtPnZtLCBjbnQrKyk7CiAJfQogfQogCitzdGF0 aWMgdm9pZCBpOTE1X2NhcHR1cmVfcGlubmVkX2J1ZmZlcnMoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2LAorCQkJCQlzdHJ1Y3QgZHJtX2k5MTVfZXJyb3Jfc3RhdGUgKmVycm9yKQor eworCXN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtID0gJmRldl9wcml2LT5nZ3R0LmJhc2U7 CisJc3RydWN0IGRybV9pOTE1X2Vycm9yX2J1ZmZlciAqYm87CisJc3RydWN0IGk5MTVfdm1hICp2 bWE7CisJaW50IGksIGo7CisKKwlpID0gMDsKKwlsaXN0X2Zvcl9lYWNoX2VudHJ5KHZtYSwgJnZt LT5hY3RpdmVfbGlzdCwgdm1fbGluaykKKwkJaSsrOworCisJaiA9IDA7CisJbGlzdF9mb3JfZWFj aF9lbnRyeSh2bWEsICZ2bS0+aW5hY3RpdmVfbGlzdCwgdm1fbGluaykKKwkJaisrOworCisJYm8g PSBOVUxMOworCWlmIChpICsgaikKKwkJYm8gPSBrY2FsbG9jKGkgKyBqLCBzaXplb2YoKmJvKSwg R0ZQX0FUT01JQyk7CisJaWYgKCFibykKKwkJcmV0dXJuOworCisJaSA9IGNhcHR1cmVfZXJyb3Jf Ym8oYm8sIGksICZ2bS0+YWN0aXZlX2xpc3QsIHRydWUpOworCWogPSBjYXB0dXJlX2Vycm9yX2Jv KGJvICsgaSwgaiwgJnZtLT5pbmFjdGl2ZV9saXN0LCB0cnVlKTsKKwllcnJvci0+cGlubmVkX2Jv X2NvdW50ID0gaSArIGo7CisJZXJyb3ItPnBpbm5lZF9ibyA9IGJvOworfQorCiAvKiBDYXB0dXJl IGFsbCByZWdpc3RlcnMgd2hpY2ggZG9uJ3QgZml0IGludG8gYW5vdGhlciBjYXRlZ29yeS4gKi8K IHN0YXRpYyB2b2lkIGk5MTVfY2FwdHVyZV9yZWdfc3RhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2LAogCQkJCSAgIHN0cnVjdCBkcm1faTkxNV9lcnJvcl9zdGF0ZSAqZXJyb3Ip CkBAIC0xNDM2LDEwICsxNDAyLDEyIEBAIHZvaWQgaTkxNV9jYXB0dXJlX2Vycm9yX3N0YXRlKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAogCWk5MTVfY2FwdHVyZV9nZW5fc3Rh dGUoZGV2X3ByaXYsIGVycm9yKTsKIAlpOTE1X2NhcHR1cmVfcmVnX3N0YXRlKGRldl9wcml2LCBl cnJvcik7Ci0JaTkxNV9nZW1fY2FwdHVyZV9idWZmZXJzKGRldl9wcml2LCBlcnJvcik7CiAJaTkx NV9nZW1fcmVjb3JkX2ZlbmNlcyhkZXZfcHJpdiwgZXJyb3IpOwogCWk5MTVfZ2VtX3JlY29yZF9y aW5ncyhkZXZfcHJpdiwgZXJyb3IpOwogCisJaTkxNV9jYXB0dXJlX2FjdGl2ZV9idWZmZXJzKGRl dl9wcml2LCBlcnJvcik7CisJaTkxNV9jYXB0dXJlX3Bpbm5lZF9idWZmZXJzKGRldl9wcml2LCBl cnJvcik7CisKIAlkb19nZXR0aW1lb2ZkYXkoJmVycm9yLT50aW1lKTsKIAogCWVycm9yLT5vdmVy bGF5ID0gaW50ZWxfb3ZlcmxheV9jYXB0dXJlX2Vycm9yX3N0YXRlKGRldl9wcml2KTsKLS0gCjIu OC4xCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRl bC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6 Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK