From mboxrd@z Thu Jan 1 00:00:00 1970 From: Maarten Lankhorst Subject: [PATCH 4/5] drm/i915: Move all locking for plane updates to caller Date: Fri, 9 Feb 2018 10:54:03 +0100 Message-ID: <20180209095404.76418-5-maarten.lankhorst@linux.intel.com> References: <20180209095404.76418-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 CFE346E7A5 for ; Fri, 9 Feb 2018 09:54:58 +0000 (UTC) In-Reply-To: <20180209095404.76418-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 U2lnbmVkLW9mZi1ieTogTWFhcnRlbiBMYW5raG9yc3QgPG1hYXJ0ZW4ubGFua2hvcnN0QGxpbnV4 LmludGVsLmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3RyYWNlLmggICAgfCAx NSArKystLS0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIHwgNzQgKysr KysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9wbS5jICAgICAgfCAxNiArKysrLS0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf c3ByaXRlLmMgIHwgNjEgKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIDQgZmlsZXMgY2hh bmdlZCwgNTIgaW5zZXJ0aW9ucygrKSwgMTE0IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdHJhY2UuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfdHJhY2UuaAppbmRleCBkNGE1Nzc2MjgyZmYuLjg0YmFkMzhiMjBhZSAxMDA2NDQKLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV90cmFjZS5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfdHJhY2UuaApAQCAtMTk0LDkgKzE5NCw4IEBAIFRSQUNFX0VWRU5UKHZsdl9maWZv X3NpemUsCiAKIAkgICAgVFBfZmFzdF9hc3NpZ24oCiAJCQkgICBfX2VudHJ5LT5waXBlID0gY3J0 Yy0+cGlwZTsKLQkJCSAgIF9fZW50cnktPmZyYW1lID0gY3J0Yy0+YmFzZS5kZXYtPmRyaXZlci0+ Z2V0X3ZibGFua19jb3VudGVyKGNydGMtPmJhc2UuZGV2LAotCQkJCQkJCQkJCSAgICAgICBjcnRj LT5waXBlKTsKLQkJCSAgIF9fZW50cnktPnNjYW5saW5lID0gaW50ZWxfZ2V0X2NydGNfc2Nhbmxp bmUoY3J0Yyk7CisJCQkgICBfX2VudHJ5LT5mcmFtZSA9IF9faW50ZWxfY3J0Y19nZXRfdmJsYW5r X2NvdW50ZXIoY3J0Yyk7CisJCQkgICBfX2VudHJ5LT5zY2FubGluZSA9IF9faW50ZWxfZ2V0X2Ny dGNfc2NhbmxpbmUoY3J0Yyk7CiAJCQkgICBfX2VudHJ5LT5zcHJpdGUwX3N0YXJ0ID0gc3ByaXRl MF9zdGFydDsKIAkJCSAgIF9fZW50cnktPnNwcml0ZTFfc3RhcnQgPSBzcHJpdGUxX3N0YXJ0Owog CQkJICAgX19lbnRyeS0+Zmlmb19zaXplID0gZmlmb19zaXplOwpAQCAtMjI2LDkgKzIyNSw4IEBA IFRSQUNFX0VWRU5UKGludGVsX3VwZGF0ZV9wbGFuZSwKIAkgICAgVFBfZmFzdF9hc3NpZ24oCiAJ CQkgICBfX2VudHJ5LT5waXBlID0gY3J0Yy0+cGlwZTsKIAkJCSAgIF9fZW50cnktPm5hbWUgPSBw bGFuZS0+bmFtZTsKLQkJCSAgIF9fZW50cnktPmZyYW1lID0gY3J0Yy0+YmFzZS5kZXYtPmRyaXZl ci0+Z2V0X3ZibGFua19jb3VudGVyKGNydGMtPmJhc2UuZGV2LAotCQkJCQkJCQkJCSAgICAgICBj cnRjLT5waXBlKTsKLQkJCSAgIF9fZW50cnktPnNjYW5saW5lID0gaW50ZWxfZ2V0X2NydGNfc2Nh bmxpbmUoY3J0Yyk7CisJCQkgICBfX2VudHJ5LT5mcmFtZSA9IF9faW50ZWxfY3J0Y19nZXRfdmJs YW5rX2NvdW50ZXIoY3J0Yyk7CisJCQkgICBfX2VudHJ5LT5zY2FubGluZSA9IF9faW50ZWxfZ2V0 X2NydGNfc2NhbmxpbmUoY3J0Yyk7CiAJCQkgICBtZW1jcHkoX19lbnRyeS0+c3JjLCAmcGxhbmUt PnN0YXRlLT5zcmMsIHNpemVvZihfX2VudHJ5LT5zcmMpKTsKIAkJCSAgIG1lbWNweShfX2VudHJ5 LT5kc3QsICZwbGFuZS0+c3RhdGUtPmRzdCwgc2l6ZW9mKF9fZW50cnktPmRzdCkpOwogCQkJICAg KSwKQEAgLTI1NCw5ICsyNTIsOCBAQCBUUkFDRV9FVkVOVChpbnRlbF9kaXNhYmxlX3BsYW5lLAog CSAgICBUUF9mYXN0X2Fzc2lnbigKIAkJCSAgIF9fZW50cnktPnBpcGUgPSBjcnRjLT5waXBlOwog CQkJICAgX19lbnRyeS0+bmFtZSA9IHBsYW5lLT5uYW1lOwotCQkJICAgX19lbnRyeS0+ZnJhbWUg PSBjcnRjLT5iYXNlLmRldi0+ZHJpdmVyLT5nZXRfdmJsYW5rX2NvdW50ZXIoY3J0Yy0+YmFzZS5k ZXYsCi0JCQkJCQkJCQkJICAgICAgIGNydGMtPnBpcGUpOwotCQkJICAgX19lbnRyeS0+c2Nhbmxp bmUgPSBpbnRlbF9nZXRfY3J0Y19zY2FubGluZShjcnRjKTsKKwkJCSAgIF9fZW50cnktPmZyYW1l ID0gX19pbnRlbF9jcnRjX2dldF92YmxhbmtfY291bnRlcihjcnRjKTsKKwkJCSAgIF9fZW50cnkt PnNjYW5saW5lID0gX19pbnRlbF9nZXRfY3J0Y19zY2FubGluZShjcnRjKTsKIAkJCSAgICksCiAK IAkgICAgVFBfcHJpbnRrKCJwaXBlICVjLCBwbGFuZSAlcywgZnJhbWU9JXUsIHNjYW5saW5lPSV1 IiwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwppbmRleCA2MGJhNWJiM2YzNGMuLjAy ZjkxYTE1ZDJhYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxh eS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwpAQCAtMjczNCwx NCArMjczNCwxNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9wbGFuZV9kaXNhYmxlX25vYXRvbWljKHN0 cnVjdCBpbnRlbF9jcnRjICpjcnRjLAogCQl0b19pbnRlbF9jcnRjX3N0YXRlKGNydGMtPmJhc2Uu c3RhdGUpOwogCXN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUgPQogCQl0b19p bnRlbF9wbGFuZV9zdGF0ZShwbGFuZS0+YmFzZS5zdGF0ZSk7CisJc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjcnRjLT5iYXNlLmRldik7CiAKIAlpbnRlbF9zZXRf cGxhbmVfdmlzaWJsZShjcnRjX3N0YXRlLCBwbGFuZV9zdGF0ZSwgZmFsc2UpOwogCiAJaWYgKHBs YW5lLT5pZCA9PSBQTEFORV9QUklNQVJZKQogCQlpbnRlbF9wcmVfZGlzYWJsZV9wcmltYXJ5X25v YXRvbWljKCZjcnRjLT5iYXNlKTsKIAorCXNwaW5fbG9ja19pcnEoJmRldl9wcml2LT51bmNvcmUu bG9jayk7CiAJdHJhY2VfaW50ZWxfZGlzYWJsZV9wbGFuZSgmcGxhbmUtPmJhc2UsIGNydGMpOwog CXBsYW5lLT5kaXNhYmxlX3BsYW5lKHBsYW5lLCBjcnRjKTsKKwlzcGluX3VubG9ja19pcnEoJmRl dl9wcml2LT51bmNvcmUubG9jayk7CiB9CiAKIHN0YXRpYyB2b2lkCkBAIC0zMjU1LDcgKzMyNTgs NiBAQCBzdGF0aWMgdm9pZCBpOXh4X3VwZGF0ZV9wbGFuZShzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBs YW5lLAogCWk5MTVfcmVnX3QgcmVnID0gRFNQQ05UUihpOXh4X3BsYW5lKTsKIAlpbnQgeCA9IHBs YW5lX3N0YXRlLT5tYWluLng7CiAJaW50IHkgPSBwbGFuZV9zdGF0ZS0+bWFpbi55OwotCXVuc2ln bmVkIGxvbmcgaXJxZmxhZ3M7CiAJdTMyIGRzcGFkZHJfb2Zmc2V0OwogCiAJbGluZWFyX29mZnNl dCA9IGludGVsX2ZiX3h5X3RvX2xpbmVhcih4LCB5LCBwbGFuZV9zdGF0ZSwgMCk7CkBAIC0zMjY1 LDggKzMyNjcsNiBAQCBzdGF0aWMgdm9pZCBpOXh4X3VwZGF0ZV9wbGFuZShzdHJ1Y3QgaW50ZWxf cGxhbmUgKnBsYW5lLAogCWVsc2UKIAkJZHNwYWRkcl9vZmZzZXQgPSBsaW5lYXJfb2Zmc2V0Owog Ci0Jc3Bpbl9sb2NrX2lycXNhdmUoJmRldl9wcml2LT51bmNvcmUubG9jaywgaXJxZmxhZ3MpOwot CiAJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPCA0KSB7CiAJCS8qIHBpcGVzcmMgYW5kIGRzcHNp emUgY29udHJvbCB0aGUgc2l6ZSB0aGF0IGlzIHNjYWxlZCBmcm9tLAogCQkgKiB3aGljaCBzaG91 bGQgYWx3YXlzIGJlIHRoZSB1c2VyJ3MgcmVxdWVzdGVkIHNpemUuCkBAIC0zMzAzLDggKzMzMDMs NiBAQCBzdGF0aWMgdm9pZCBpOXh4X3VwZGF0ZV9wbGFuZShzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBs YW5lLAogCQkJICAgICAgZHNwYWRkcl9vZmZzZXQpOwogCX0KIAlQT1NUSU5HX1JFQURfRlcocmVn KTsKLQotCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmRldl9wcml2LT51bmNvcmUubG9jaywgaXJx ZmxhZ3MpOwogfQogCiBzdGF0aWMgdm9pZCBpOXh4X2Rpc2FibGVfcGxhbmUoc3RydWN0IGludGVs X3BsYW5lICpwbGFuZSwKQEAgLTMzMTIsOSArMzMxMCw2IEBAIHN0YXRpYyB2b2lkIGk5eHhfZGlz YWJsZV9wbGFuZShzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lLAogewogCXN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUocGxhbmUtPmJhc2UuZGV2KTsKIAllbnVtIGk5 eHhfcGxhbmVfaWQgaTl4eF9wbGFuZSA9IHBsYW5lLT5pOXh4X3BsYW5lOwotCXVuc2lnbmVkIGxv bmcgaXJxZmxhZ3M7Ci0KLQlzcGluX2xvY2tfaXJxc2F2ZSgmZGV2X3ByaXYtPnVuY29yZS5sb2Nr LCBpcnFmbGFncyk7CiAKIAlJOTE1X1dSSVRFX0ZXKERTUENOVFIoaTl4eF9wbGFuZSksIDApOwog CWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDQpCkBAIC0zMzIyLDggKzMzMTcsNiBAQCBzdGF0 aWMgdm9pZCBpOXh4X2Rpc2FibGVfcGxhbmUoc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSwKIAll bHNlCiAJCUk5MTVfV1JJVEVfRlcoRFNQQUREUihpOXh4X3BsYW5lKSwgMCk7CiAJUE9TVElOR19S RUFEX0ZXKERTUENOVFIoaTl4eF9wbGFuZSkpOwotCi0Jc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgm ZGV2X3ByaXYtPnVuY29yZS5sb2NrLCBpcnFmbGFncyk7CiB9CiAKIHN0YXRpYyBib29sIGk5eHhf cGxhbmVfZ2V0X2h3X3N0YXRlKHN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUpCkBAIC0zMzY0LDkg KzMzNTcsOSBAQCBzdGF0aWMgdm9pZCBza2xfZGV0YWNoX3NjYWxlcihzdHJ1Y3QgaW50ZWxfY3J0 YyAqaW50ZWxfY3J0YywgaW50IGlkKQogCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBpbnRlbF9j cnRjLT5iYXNlLmRldjsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19p OTE1KGRldik7CiAKLQlJOTE1X1dSSVRFKFNLTF9QU19DVFJMKGludGVsX2NydGMtPnBpcGUsIGlk KSwgMCk7Ci0JSTkxNV9XUklURShTS0xfUFNfV0lOX1BPUyhpbnRlbF9jcnRjLT5waXBlLCBpZCks IDApOwotCUk5MTVfV1JJVEUoU0tMX1BTX1dJTl9TWihpbnRlbF9jcnRjLT5waXBlLCBpZCksIDAp OworCUk5MTVfV1JJVEVfRlcoU0tMX1BTX0NUUkwoaW50ZWxfY3J0Yy0+cGlwZSwgaWQpLCAwKTsK KwlJOTE1X1dSSVRFX0ZXKFNLTF9QU19XSU5fUE9TKGludGVsX2NydGMtPnBpcGUsIGlkKSwgMCk7 CisJSTkxNV9XUklURV9GVyhTS0xfUFNfV0lOX1NaKGludGVsX2NydGMtPnBpcGUsIGlkKSwgMCk7 CiB9CiAKIC8qCkBAIC0zNzUyLDkgKzM3NDUsOSBAQCBzdGF0aWMgdm9pZCBpbnRlbF91cGRhdGVf cGlwZV9jb25maWcoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKm9sZF9jcnRjX3N0YQog CSAqIHNpemVkIHN1cmZhY2UuCiAJICovCiAKLQlJOTE1X1dSSVRFKFBJUEVTUkMoY3J0Yy0+cGlw ZSksCi0JCSAgICgobmV3X2NydGNfc3RhdGUtPnBpcGVfc3JjX3cgLSAxKSA8PCAxNikgfAotCQkg ICAobmV3X2NydGNfc3RhdGUtPnBpcGVfc3JjX2ggLSAxKSk7CisJSTkxNV9XUklURV9GVyhQSVBF U1JDKGNydGMtPnBpcGUpLAorCQkgICAgICAoKG5ld19jcnRjX3N0YXRlLT5waXBlX3NyY193IC0g MSkgPDwgMTYpIHwKKwkJICAgICAgKG5ld19jcnRjX3N0YXRlLT5waXBlX3NyY19oIC0gMSkpOwog CiAJLyogb24gc2t5bGFrZSB0aGlzIGlzIGRvbmUgYnkgZGV0YWNoaW5nIHNjYWxlcnMgKi8KIAlp ZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA5KSB7CkBAIC00ODQxLDEwICs0ODM0LDEwIEBAIHN0 YXRpYyB2b2lkIHNreWxha2VfcGZpdF9lbmFibGUoc3RydWN0IGludGVsX2NydGMgKmNydGMpCiAJ CQlyZXR1cm47CiAKIAkJaWQgPSBzY2FsZXJfc3RhdGUtPnNjYWxlcl9pZDsKLQkJSTkxNV9XUklU RShTS0xfUFNfQ1RSTChwaXBlLCBpZCksIFBTX1NDQUxFUl9FTiB8CisJCUk5MTVfV1JJVEVfRlco U0tMX1BTX0NUUkwocGlwZSwgaWQpLCBQU19TQ0FMRVJfRU4gfAogCQkJUFNfRklMVEVSX01FRElV TSB8IHNjYWxlcl9zdGF0ZS0+c2NhbGVyc1tpZF0ubW9kZSk7Ci0JCUk5MTVfV1JJVEUoU0tMX1BT X1dJTl9QT1MocGlwZSwgaWQpLCBjcnRjLT5jb25maWctPnBjaF9wZml0LnBvcyk7Ci0JCUk5MTVf V1JJVEUoU0tMX1BTX1dJTl9TWihwaXBlLCBpZCksIGNydGMtPmNvbmZpZy0+cGNoX3BmaXQuc2l6 ZSk7CisJCUk5MTVfV1JJVEVfRlcoU0tMX1BTX1dJTl9QT1MocGlwZSwgaWQpLCBjcnRjLT5jb25m aWctPnBjaF9wZml0LnBvcyk7CisJCUk5MTVfV1JJVEVfRlcoU0tMX1BTX1dJTl9TWihwaXBlLCBp ZCksIGNydGMtPmNvbmZpZy0+cGNoX3BmaXQuc2l6ZSk7CiAJfQogfQogCkBAIC00ODYwLDEyICs0 ODUzLDEyIEBAIHN0YXRpYyB2b2lkIGlyb25sYWtlX3BmaXRfZW5hYmxlKHN0cnVjdCBpbnRlbF9j cnRjICpjcnRjKQogCQkgKiBlLmcuIHgyMDEuCiAJCSAqLwogCQlpZiAoSVNfSVZZQlJJREdFKGRl dl9wcml2KSB8fCBJU19IQVNXRUxMKGRldl9wcml2KSkKLQkJCUk5MTVfV1JJVEUoUEZfQ1RMKHBp cGUpLCBQRl9FTkFCTEUgfCBQRl9GSUxURVJfTUVEXzN4MyB8CisJCQlJOTE1X1dSSVRFX0ZXKFBG X0NUTChwaXBlKSwgUEZfRU5BQkxFIHwgUEZfRklMVEVSX01FRF8zeDMgfAogCQkJCQkJIFBGX1BJ UEVfU0VMX0lWQihwaXBlKSk7CiAJCWVsc2UKLQkJCUk5MTVfV1JJVEUoUEZfQ1RMKHBpcGUpLCBQ Rl9FTkFCTEUgfCBQRl9GSUxURVJfTUVEXzN4Myk7Ci0JCUk5MTVfV1JJVEUoUEZfV0lOX1BPUyhw aXBlKSwgY3J0Yy0+Y29uZmlnLT5wY2hfcGZpdC5wb3MpOwotCQlJOTE1X1dSSVRFKFBGX1dJTl9T WihwaXBlKSwgY3J0Yy0+Y29uZmlnLT5wY2hfcGZpdC5zaXplKTsKKwkJCUk5MTVfV1JJVEVfRlco UEZfQ1RMKHBpcGUpLCBQRl9FTkFCTEUgfCBQRl9GSUxURVJfTUVEXzN4Myk7CisJCUk5MTVfV1JJ VEVfRlcoUEZfV0lOX1BPUyhwaXBlKSwgY3J0Yy0+Y29uZmlnLT5wY2hfcGZpdC5wb3MpOworCQlJ OTE1X1dSSVRFX0ZXKFBGX1dJTl9TWihwaXBlKSwgY3J0Yy0+Y29uZmlnLT5wY2hfcGZpdC5zaXpl KTsKIAl9CiB9CiAKQEAgLTUxNzIsMTQgKzUxNjUsMTcgQEAgc3RhdGljIHZvaWQgaW50ZWxfcHJl X3BsYW5lX3VwZGF0ZShzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqb2xkX2NydGNfc3RhdGUsCiBz dGF0aWMgdm9pZCBpbnRlbF9jcnRjX2Rpc2FibGVfcGxhbmVzKHN0cnVjdCBkcm1fY3J0YyAqY3J0 YywgdW5zaWduZWQgcGxhbmVfbWFzaykKIHsKIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY3J0 Yy0+ZGV2OworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2 KTsKIAlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Yyk7 CiAJc3RydWN0IGRybV9wbGFuZSAqcDsKIAlpbnQgcGlwZSA9IGludGVsX2NydGMtPnBpcGU7CiAK IAlpbnRlbF9jcnRjX2RwbXNfb3ZlcmxheV9kaXNhYmxlKGludGVsX2NydGMpOwogCisJc3Bpbl9s b2NrX2lycSgmZGV2X3ByaXYtPnVuY29yZS5sb2NrKTsKIAlkcm1fZm9yX2VhY2hfcGxhbmVfbWFz ayhwLCBkZXYsIHBsYW5lX21hc2spCiAJCXRvX2ludGVsX3BsYW5lKHApLT5kaXNhYmxlX3BsYW5l KHRvX2ludGVsX3BsYW5lKHApLCBpbnRlbF9jcnRjKTsKKwlzcGluX3VubG9ja19pcnEoJmRldl9w cml2LT51bmNvcmUubG9jayk7CiAKIAkvKgogCSAqIEZJWE1FOiBPbmNlIHdlIGdyb3cgcHJvcGVy IG51Y2xlYXIgZmxpcCBzdXBwb3J0IG91dCBvZiB0aGlzIHdlIG5lZWQKQEAgLTU0NzcsMTAgKzU0 NzMsMTIgQEAgc3RhdGljIHZvaWQgaGFzd2VsbF9jcnRjX2VuYWJsZShzdHJ1Y3QgaW50ZWxfY3J0 Y19zdGF0ZSAqcGlwZV9jb25maWcsCiAJaWYgKHBzbF9jbGtnYXRlX3dhKQogCQlnbGtfcGlwZV9z Y2FsZXJfY2xvY2tfZ2F0aW5nX3dhKGRldl9wcml2LCBwaXBlLCB0cnVlKTsKIAorCXNwaW5fbG9j a19pcnEoJmRldl9wcml2LT51bmNvcmUubG9jayk7CiAJaWYgKElOVEVMX0dFTihkZXZfcHJpdikg Pj0gOSkKIAkJc2t5bGFrZV9wZml0X2VuYWJsZShpbnRlbF9jcnRjKTsKIAllbHNlCiAJCWlyb25s YWtlX3BmaXRfZW5hYmxlKGludGVsX2NydGMpOworCXNwaW5fdW5sb2NrX2lycSgmZGV2X3ByaXYt PnVuY29yZS5sb2NrKTsKIAogCS8qCiAJICogT24gSUxLKyBMVVQgbXVzdCBiZSBsb2FkZWQgYmVm b3JlIHRoZSBwaXBlIGlzIHJ1bm5pbmcgYnV0IHdpdGgKQEAgLTU1MzMsOSArNTUzMSw5IEBAIHN0 YXRpYyB2b2lkIGlyb25sYWtlX3BmaXRfZGlzYWJsZShzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0Yywg Ym9vbCBmb3JjZSkKIAkvKiBUbyBhdm9pZCB1cHNldHRpbmcgdGhlIHBvd2VyIHdlbGwgb24gaGFz d2VsbCBvbmx5IGRpc2FibGUgdGhlIHBmaXQgaWYKIAkgKiBpdCdzIGluIHVzZS4gVGhlIGh3IHN0 YXRlIGNvZGUgd2lsbCBtYWtlIHN1cmUgd2UgZ2V0IHRoaXMgcmlnaHQuICovCiAJaWYgKGZvcmNl IHx8IGNydGMtPmNvbmZpZy0+cGNoX3BmaXQuZW5hYmxlZCkgewotCQlJOTE1X1dSSVRFKFBGX0NU TChwaXBlKSwgMCk7Ci0JCUk5MTVfV1JJVEUoUEZfV0lOX1BPUyhwaXBlKSwgMCk7Ci0JCUk5MTVf V1JJVEUoUEZfV0lOX1NaKHBpcGUpLCAwKTsKKwkJSTkxNV9XUklURV9GVyhQRl9DVEwocGlwZSks IDApOworCQlJOTE1X1dSSVRFX0ZXKFBGX1dJTl9QT1MocGlwZSksIDApOworCQlJOTE1X1dSSVRF X0ZXKFBGX1dJTl9TWihwaXBlKSwgMCk7CiAJfQogfQogCkBAIC01NjIzLDEwICs1NjIxLDEyIEBA IHN0YXRpYyB2b2lkIGhhc3dlbGxfY3J0Y19kaXNhYmxlKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRl ICpvbGRfY3J0Y19zdGF0ZSwKIAlpZiAoIXRyYW5zY29kZXJfaXNfZHNpKGNwdV90cmFuc2NvZGVy KSkKIAkJaW50ZWxfZGRpX2Rpc2FibGVfdHJhbnNjb2Rlcl9mdW5jKGRldl9wcml2LCBjcHVfdHJh bnNjb2Rlcik7CiAKKwlzcGluX2xvY2tfaXJxKCZkZXZfcHJpdi0+dW5jb3JlLmxvY2spOwogCWlm IChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDkpCiAJCXNreWxha2Vfc2NhbGVyX2Rpc2FibGUoaW50 ZWxfY3J0Yyk7CiAJZWxzZQogCQlpcm9ubGFrZV9wZml0X2Rpc2FibGUoaW50ZWxfY3J0YywgZmFs c2UpOworCXNwaW5fdW5sb2NrX2lycSgmZGV2X3ByaXYtPnVuY29yZS5sb2NrKTsKIAogCWlmICgh dHJhbnNjb2Rlcl9pc19kc2koY3B1X3RyYW5zY29kZXIpKQogCQlpbnRlbF9kZGlfZGlzYWJsZV9w aXBlX2Nsb2NrKGludGVsX2NydGMtPmNvbmZpZyk7CkBAIC05NDYyLDcgKzk0NjIsNiBAQCBzdGF0 aWMgdm9pZCBpODQ1X3VwZGF0ZV9jdXJzb3Ioc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSwKIHsK IAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KHBsYW5lLT5iYXNl LmRldik7CiAJdTMyIGNudGwgPSAwLCBiYXNlID0gMCwgcG9zID0gMCwgc2l6ZSA9IDA7Ci0JdW5z aWduZWQgbG9uZyBpcnFmbGFnczsKIAogCWlmIChwbGFuZV9zdGF0ZSAmJiBwbGFuZV9zdGF0ZS0+ YmFzZS52aXNpYmxlKSB7CiAJCXVuc2lnbmVkIGludCB3aWR0aCA9IHBsYW5lX3N0YXRlLT5iYXNl LmNydGNfdzsKQEAgLTk0NzUsOCArOTQ3NCw2IEBAIHN0YXRpYyB2b2lkIGk4NDVfdXBkYXRlX2N1 cnNvcihzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lLAogCQlwb3MgPSBpbnRlbF9jdXJzb3JfcG9z aXRpb24ocGxhbmVfc3RhdGUpOwogCX0KIAotCXNwaW5fbG9ja19pcnFzYXZlKCZkZXZfcHJpdi0+ dW5jb3JlLmxvY2ssIGlycWZsYWdzKTsKLQogCS8qIE9uIHRoZXNlIGNoaXBzZXRzIHdlIGNhbiBv bmx5IG1vZGlmeSB0aGUgYmFzZS9zaXplL3N0cmlkZQogCSAqIHdoaWxzdCB0aGUgY3Vyc29yIGlz IGRpc2FibGVkLgogCSAqLwpAQCAtOTQ5Nyw4ICs5NDk0LDYgQEAgc3RhdGljIHZvaWQgaTg0NV91 cGRhdGVfY3Vyc29yKHN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUsCiAJfQogCiAJUE9TVElOR19S RUFEX0ZXKENVUkNOVFIoUElQRV9BKSk7Ci0KLQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZkZXZf cHJpdi0+dW5jb3JlLmxvY2ssIGlycWZsYWdzKTsKIH0KIAogc3RhdGljIHZvaWQgaTg0NV9kaXNh YmxlX2N1cnNvcihzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lLApAQCAtOTY1Nyw3ICs5NjUyLDYg QEAgc3RhdGljIHZvaWQgaTl4eF91cGRhdGVfY3Vyc29yKHN0cnVjdCBpbnRlbF9wbGFuZSAqcGxh bmUsCiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShwbGFuZS0+ YmFzZS5kZXYpOwogCWVudW0gcGlwZSBwaXBlID0gcGxhbmUtPnBpcGU7CiAJdTMyIGNudGwgPSAw LCBiYXNlID0gMCwgcG9zID0gMCwgZmJjX2N0bCA9IDA7Ci0JdW5zaWduZWQgbG9uZyBpcnFmbGFn czsKIAogCWlmIChwbGFuZV9zdGF0ZSAmJiBwbGFuZV9zdGF0ZS0+YmFzZS52aXNpYmxlKSB7CiAJ CWNudGwgPSBwbGFuZV9zdGF0ZS0+Y3RsOwpAQCAtOTY2OSw4ICs5NjYzLDYgQEAgc3RhdGljIHZv aWQgaTl4eF91cGRhdGVfY3Vyc29yKHN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUsCiAJCXBvcyA9 IGludGVsX2N1cnNvcl9wb3NpdGlvbihwbGFuZV9zdGF0ZSk7CiAJfQogCi0Jc3Bpbl9sb2NrX2ly cXNhdmUoJmRldl9wcml2LT51bmNvcmUubG9jaywgaXJxZmxhZ3MpOwotCiAJLyoKIAkgKiBPbiBz b21lIHBsYXRmb3JtcyB3cml0aW5nIENVUkNOVFIgZmlyc3Qgd2lsbCBhbHNvCiAJICogY2F1c2Ug Q1VSUE9TIHRvIGJlIGFybWVkIGJ5IHRoZSBDVVJCQVNFIHdyaXRlLgpAQCAtOTcwNyw4ICs5Njk5 LDYgQEAgc3RhdGljIHZvaWQgaTl4eF91cGRhdGVfY3Vyc29yKHN0cnVjdCBpbnRlbF9wbGFuZSAq cGxhbmUsCiAJfQogCiAJUE9TVElOR19SRUFEX0ZXKENVUkJBU0UocGlwZSkpOwotCi0Jc3Bpbl91 bmxvY2tfaXJxcmVzdG9yZSgmZGV2X3ByaXYtPnVuY29yZS5sb2NrLCBpcnFmbGFncyk7CiB9CiAK IHN0YXRpYyB2b2lkIGk5eHhfZGlzYWJsZV9jdXJzb3Ioc3RydWN0IGludGVsX3BsYW5lICpwbGFu ZSwKQEAgLTEyMDcwLDE2ICsxMjA2MCw2IEBAIHN0YXRpYyBpbnQgaW50ZWxfYXRvbWljX3ByZXBh cmVfY29tbWl0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJcmV0dXJuIGRybV9hdG9taWNfaGVs cGVyX3ByZXBhcmVfcGxhbmVzKGRldiwgc3RhdGUpOwogfQogCi11MzIgaW50ZWxfY3J0Y19nZXRf dmJsYW5rX2NvdW50ZXIoc3RydWN0IGludGVsX2NydGMgKmNydGMpCi17Ci0Jc3RydWN0IGRybV9k ZXZpY2UgKmRldiA9IGNydGMtPmJhc2UuZGV2OwotCi0JaWYgKCFkZXYtPm1heF92YmxhbmtfY291 bnQpCi0JCXJldHVybiBkcm1fY3J0Y19hY2N1cmF0ZV92YmxhbmtfY291bnQoJmNydGMtPmJhc2Up OwotCi0JcmV0dXJuIGRldi0+ZHJpdmVyLT5nZXRfdmJsYW5rX2NvdW50ZXIoZGV2LCBjcnRjLT5w aXBlKTsKLX0KLQogc3RhdGljIHZvaWQgaW50ZWxfdXBkYXRlX2NydGMoc3RydWN0IGRybV9jcnRj ICpjcnRjLAogCQkJICAgICAgc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlLAogCQkJICAg ICAgc3RydWN0IGRybV9jcnRjX3N0YXRlICpvbGRfY3J0Y19zdGF0ZSwKQEAgLTEzMTMwLDYgKzEz MTEwLDcgQEAgaW50ZWxfbGVnYWN5X2N1cnNvcl91cGRhdGUoc3RydWN0IGRybV9wbGFuZSAqcGxh bmUsCiAJLyogU3dhcCBwbGFuZSBzdGF0ZSAqLwogCXBsYW5lLT5zdGF0ZSA9IG5ld19wbGFuZV9z dGF0ZTsKIAorCXNwaW5fbG9ja19pcnEoJmRldl9wcml2LT51bmNvcmUubG9jayk7CiAJaWYgKHBs YW5lLT5zdGF0ZS0+dmlzaWJsZSkgewogCQl0cmFjZV9pbnRlbF91cGRhdGVfcGxhbmUocGxhbmUs IHRvX2ludGVsX2NydGMoY3J0YykpOwogCQlpbnRlbF9wbGFuZS0+dXBkYXRlX3BsYW5lKGludGVs X3BsYW5lLApAQCAtMTMxMzksNiArMTMxMjAsNyBAQCBpbnRlbF9sZWdhY3lfY3Vyc29yX3VwZGF0 ZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKIAkJdHJhY2VfaW50ZWxfZGlzYWJsZV9wbGFuZShw bGFuZSwgdG9faW50ZWxfY3J0YyhjcnRjKSk7CiAJCWludGVsX3BsYW5lLT5kaXNhYmxlX3BsYW5l KGludGVsX3BsYW5lLCB0b19pbnRlbF9jcnRjKGNydGMpKTsKIAl9CisJc3Bpbl91bmxvY2tfaXJx KCZkZXZfcHJpdi0+dW5jb3JlLmxvY2spOwogCiAJb2xkX3ZtYSA9IGZldGNoX2FuZF96ZXJvKCZ0 b19pbnRlbF9wbGFuZV9zdGF0ZShvbGRfcGxhbmVfc3RhdGUpLT52bWEpOwogCWlmIChvbGRfdm1h KQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX3BtLmMKaW5kZXggYjJmNWUzYjlhZGE4Li4xODk5ZGFkNWI5ZDkg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMKKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYwpAQCAtMTk2NCw3ICsxOTY0LDYgQEAgc3RhdGljIHZv aWQgdmx2X2F0b21pY191cGRhdGVfZmlmbyhzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0 ZSwKIAkgKiBpbnRlbF9waXBlX3VwZGF0ZV9zdGFydCgpIGhhcyBhbHJlYWR5IGRpc2FibGVkIGlu dGVycnVwdHMKIAkgKiBmb3IgdXMsIHNvIGEgcGxhaW4gc3Bpbl9sb2NrKCkgaXMgc3VmZmljaWVu dCBoZXJlLgogCSAqLwotCXNwaW5fbG9jaygmZGV2X3ByaXYtPnVuY29yZS5sb2NrKTsKIAogCXN3 aXRjaCAoY3J0Yy0+cGlwZSkgewogCQl1aW50MzJfdCBkc3BhcmIsIGRzcGFyYjIsIGRzcGFyYjM7 CkBAIC0yMDI0LDggKzIwMjMsNiBAQCBzdGF0aWMgdm9pZCB2bHZfYXRvbWljX3VwZGF0ZV9maWZv KHN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKnN0YXRlLAogCX0KIAogCVBPU1RJTkdfUkVBRF9G VyhEU1BBUkIpOwotCi0Jc3Bpbl91bmxvY2soJmRldl9wcml2LT51bmNvcmUubG9jayk7CiB9CiAK ICN1bmRlZiBWTFZfRklGTwpAQCAtNDc5NSw5ICs0NzkyLDkgQEAgc3RhdGljIHZvaWQgc2tsX2Rk Yl9lbnRyeV93cml0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJCQkJY29u c3Qgc3RydWN0IHNrbF9kZGJfZW50cnkgKmVudHJ5KQogewogCWlmIChlbnRyeS0+ZW5kKQotCQlJ OTE1X1dSSVRFKHJlZywgKGVudHJ5LT5lbmQgLSAxKSA8PCAxNiB8IGVudHJ5LT5zdGFydCk7CisJ CUk5MTVfV1JJVEVfRlcocmVnLCAoZW50cnktPmVuZCAtIDEpIDw8IDE2IHwgZW50cnktPnN0YXJ0 KTsKIAllbHNlCi0JCUk5MTVfV1JJVEUocmVnLCAwKTsKKwkJSTkxNV9XUklURV9GVyhyZWcsIDAp OwogfQogCiBzdGF0aWMgdm9pZCBza2xfd3JpdGVfd21fbGV2ZWwoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2LApAQCAtNDgxMiw3ICs0ODA5LDcgQEAgc3RhdGljIHZvaWQgc2tsX3dy aXRlX3dtX2xldmVsKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAkJdmFsIHw9 IGxldmVsLT5wbGFuZV9yZXNfbCA8PCBQTEFORV9XTV9MSU5FU19TSElGVDsKIAl9CiAKLQlJOTE1 X1dSSVRFKHJlZywgdmFsKTsKKwlJOTE1X1dSSVRFX0ZXKHJlZywgdmFsKTsKIH0KIAogc3RhdGlj IHZvaWQgc2tsX3dyaXRlX3BsYW5lX3dtKHN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjLApA QCAtNTE4MSw3ICs1MTc4LDcgQEAgc3RhdGljIHZvaWQgc2tsX2F0b21pY191cGRhdGVfY3J0Y193 bShzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSwKIAlpZiAoIShzdGF0ZS0+d21fcmVz dWx0cy5kaXJ0eV9waXBlcyAmIGRybV9jcnRjX21hc2soJmNydGMtPmJhc2UpKSkKIAkJcmV0dXJu OwogCi0JSTkxNV9XUklURShQSVBFX1dNX0xJTkVUSU1FKHBpcGUpLCBwaXBlX3dtLT5saW5ldGlt ZSk7CisJSTkxNV9XUklURV9GVyhQSVBFX1dNX0xJTkVUSU1FKHBpcGUpLCBwaXBlX3dtLT5saW5l dGltZSk7CiAKIAlmb3JfZWFjaF9wbGFuZV9pZF9vbl9jcnRjKGNydGMsIHBsYW5lX2lkKSB7CiAJ CWlmIChwbGFuZV9pZCAhPSBQTEFORV9DVVJTT1IpCkBAIC01MjA4LDggKzUyMDUsMTEgQEAgc3Rh dGljIHZvaWQgc2tsX2luaXRpYWxfd20oc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqc3RhdGUs CiAKIAltdXRleF9sb2NrKCZkZXZfcHJpdi0+d20ud21fbXV0ZXgpOwogCi0JaWYgKGNzdGF0ZS0+ YmFzZS5hY3RpdmVfY2hhbmdlZCkKKwlpZiAoY3N0YXRlLT5iYXNlLmFjdGl2ZV9jaGFuZ2VkKSB7 CisJCXNwaW5fbG9ja19pcnEoJmRldl9wcml2LT51bmNvcmUubG9jayk7CiAJCXNrbF9hdG9taWNf dXBkYXRlX2NydGNfd20oc3RhdGUsIGNzdGF0ZSk7CisJCXNwaW5fdW5sb2NrX2lycSgmZGV2X3By aXYtPnVuY29yZS5sb2NrKTsKKwl9CiAKIAlza2xfY29weV93bV9mb3JfcGlwZShod192YWxzLCBy ZXN1bHRzLCBwaXBlKTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf c3ByaXRlLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9zcHJpdGUuYwppbmRleCA5NWYw OTk5ZWExOGEuLjA5NGIzMzFiNTIyZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfc3ByaXRlLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfc3ByaXRlLmMK QEAgLTk4LDYgKzk4LDkgQEAgdm9pZCBpbnRlbF9waXBlX3VwZGF0ZV9zdGFydChjb25zdCBzdHJ1 Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqbmV3X2NydGNfc3RhdGUpCiAJCWludGVsX2NydGNfaGFzX3R5 cGUobmV3X2NydGNfc3RhdGUsIElOVEVMX09VVFBVVF9EU0kpOwogCURFRklORV9XQUlUKHdhaXQp OwogCisJLyogTXVzdCBiZSBjYWxsZWQgYmVmb3JlIHdlIGFjcXVpcmUgdGhlIHNwaW5sb2NrLiAq LworCVdBUk5fT04oZHJtX2NydGNfdmJsYW5rX2dldCgmY3J0Yy0+YmFzZSkpOworCiAJdmJsYW5r X3N0YXJ0ID0gYWRqdXN0ZWRfbW9kZS0+Y3J0Y192Ymxhbmtfc3RhcnQ7CiAJaWYgKGFkanVzdGVk X21vZGUtPmZsYWdzICYgRFJNX01PREVfRkxBR19JTlRFUkxBQ0UpCiAJCXZibGFua19zdGFydCA9 IERJVl9ST1VORF9VUCh2Ymxhbmtfc3RhcnQsIDIpOwpAQCAtMTA3LDEwICsxMTAsNyBAQCB2b2lk IGludGVsX3BpcGVfdXBkYXRlX3N0YXJ0KGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpu ZXdfY3J0Y19zdGF0ZSkKIAkJCQkJCSAgICAgIFZCTEFOS19FVkFTSU9OX1RJTUVfVVMpOwogCW1h eCA9IHZibGFua19zdGFydCAtIDE7CiAKLQlsb2NhbF9pcnFfZGlzYWJsZSgpOwotCi0JaWYgKFdB Uk5fT04oZHJtX2NydGNfdmJsYW5rX2dldCgmY3J0Yy0+YmFzZSkpKQotCQlyZXR1cm47CisJc3Bp bl9sb2NrX2lycSgmZGV2X3ByaXYtPnVuY29yZS5sb2NrKTsKIAogCWlmIChtaW4gPD0gMCB8fCBt YXggPD0gMCkKIAkJcmV0dXJuOwpAQCAtMTE4LDcgKzExOCw2IEBAIHZvaWQgaW50ZWxfcGlwZV91 cGRhdGVfc3RhcnQoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKm5ld19jcnRjX3N0YXRl KQogCWNydGMtPmRlYnVnLm1pbl92YmwgPSBtaW47CiAJY3J0Yy0+ZGVidWcubWF4X3ZibCA9IG1h eDsKIAotCXNwaW5fbG9jaygmZGV2X3ByaXYtPnVuY29yZS5sb2NrKTsKIAl0cmFjZV9pOTE1X3Bp cGVfdXBkYXRlX3N0YXJ0KGNydGMpOwogCiAJZm9yICg7OykgewpAQCAtMTY2LDEwICsxNjUsOSBA QCB2b2lkIGludGVsX3BpcGVfdXBkYXRlX3N0YXJ0KGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0 YXRlICpuZXdfY3J0Y19zdGF0ZSkKIAl3aGlsZSAobmVlZF92bHZfZHNpX3dhICYmIHNjYW5saW5l ID09IHZibGFua19zdGFydCkKIAkJc2NhbmxpbmUgPSBfX2ludGVsX2dldF9jcnRjX3NjYW5saW5l KGNydGMpOwogCi0Jc3Bpbl91bmxvY2soJmRldl9wcml2LT51bmNvcmUubG9jayk7CiAJY3J0Yy0+ ZGVidWcuc2NhbmxpbmVfc3RhcnQgPSBzY2FubGluZTsKIAljcnRjLT5kZWJ1Zy5zdGFydF92Ymxf dGltZSA9IGt0aW1lX2dldCgpOwotCWNydGMtPmRlYnVnLnN0YXJ0X3ZibF9jb3VudCA9IGludGVs X2NydGNfZ2V0X3ZibGFua19jb3VudGVyKGNydGMpOworCWNydGMtPmRlYnVnLnN0YXJ0X3ZibF9j b3VudCA9IF9faW50ZWxfY3J0Y19nZXRfdmJsYW5rX2NvdW50ZXIoY3J0Yyk7CiAKIAl0cmFjZV9p OTE1X3BpcGVfdXBkYXRlX3ZibGFua19ldmFkZWQoY3J0Yyk7CiB9CkBAIC0xODYsOCArMTg0LDgg QEAgdm9pZCBpbnRlbF9waXBlX3VwZGF0ZV9lbmQoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKm5l d19jcnRjX3N0YXRlKQogewogCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0 YyhuZXdfY3J0Y19zdGF0ZS0+YmFzZS5jcnRjKTsKIAllbnVtIHBpcGUgcGlwZSA9IGNydGMtPnBp cGU7Ci0JaW50IHNjYW5saW5lX2VuZCA9IGludGVsX2dldF9jcnRjX3NjYW5saW5lKGNydGMpOwot CXUzMiBlbmRfdmJsX2NvdW50ID0gaW50ZWxfY3J0Y19nZXRfdmJsYW5rX2NvdW50ZXIoY3J0Yyk7 CisJaW50IHNjYW5saW5lX2VuZCA9IF9faW50ZWxfZ2V0X2NydGNfc2NhbmxpbmUoY3J0Yyk7CisJ dTMyIGVuZF92YmxfY291bnQgPSBfX2ludGVsX2NydGNfZ2V0X3ZibGFua19jb3VudGVyKGNydGMp OwogCWt0aW1lX3QgZW5kX3ZibF90aW1lID0ga3RpbWVfZ2V0KCk7CiAJc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjcnRjLT5iYXNlLmRldik7CiAKQEAgLTE5Nywx MSArMTk1LDExIEBAIHZvaWQgaW50ZWxfcGlwZV91cGRhdGVfZW5kKHN0cnVjdCBpbnRlbF9jcnRj X3N0YXRlICpuZXdfY3J0Y19zdGF0ZSkKIAkgKiBXb3VsZCBiZSBzbGlnaHRseSBuaWNlIHRvIGp1 c3QgZ3JhYiB0aGUgdmJsYW5rIGNvdW50IGFuZCBhcm0gdGhlCiAJICogZXZlbnQgb3V0c2lkZSBv ZiB0aGUgY3JpdGljYWwgc2VjdGlvbiAtIHRoZSBzcGlubG9jayBtaWdodCBzcGluIGZvciBhCiAJ ICogd2hpbGUgLi4uICovCisJc3Bpbl91bmxvY2soJmRldl9wcml2LT51bmNvcmUubG9jayk7CiAJ aWYgKG5ld19jcnRjX3N0YXRlLT5iYXNlLmV2ZW50KSB7CiAJCXNwaW5fbG9jaygmY3J0Yy0+YmFz ZS5kZXYtPmV2ZW50X2xvY2spOwogCQlkcm1fY3J0Y19hcm1fdmJsYW5rX2V2ZW50KCZjcnRjLT5i YXNlLCBuZXdfY3J0Y19zdGF0ZS0+YmFzZS5ldmVudCk7CiAJCXNwaW5fdW5sb2NrKCZjcnRjLT5i YXNlLmRldi0+ZXZlbnRfbG9jayk7Ci0KIAkJbmV3X2NydGNfc3RhdGUtPmJhc2UuZXZlbnQgPSBO VUxMOwogCX0gZWxzZQogCQlkcm1fY3J0Y192YmxhbmtfcHV0KCZjcnRjLT5iYXNlKTsKQEAgLTIx MSw3ICsyMDksOCBAQCB2b2lkIGludGVsX3BpcGVfdXBkYXRlX2VuZChzdHJ1Y3QgaW50ZWxfY3J0 Y19zdGF0ZSAqbmV3X2NydGNfc3RhdGUpCiAJaWYgKGludGVsX3ZncHVfYWN0aXZlKGRldl9wcml2 KSkKIAkJcmV0dXJuOwogCi0JaWYgKGNydGMtPmRlYnVnLnN0YXJ0X3ZibF9jb3VudCAmJgorCWlm IChJTlRFTF9HRU4oZGV2X3ByaXYpIDwgOSAmJgorCSAgICBjcnRjLT5kZWJ1Zy5zdGFydF92Ymxf Y291bnQgJiYKIAkgICAgY3J0Yy0+ZGVidWcuc3RhcnRfdmJsX2NvdW50ICE9IGVuZF92YmxfY291 bnQpIHsKIAkJRFJNX0VSUk9SKCJBdG9taWMgdXBkYXRlIGZhaWx1cmUgb24gcGlwZSAlYyAoc3Rh cnQ9JXUgZW5kPSV1KSB0aW1lICVsbGQgdXMsIG1pbiAlZCwgbWF4ICVkLCBzY2FubGluZSBzdGFy dCAlZCwgZW5kICVkXG4iLAogCQkJICBwaXBlX25hbWUocGlwZSksIGNydGMtPmRlYnVnLnN0YXJ0 X3ZibF9jb3VudCwKQEAgLTI1Myw3ICsyNTIsNiBAQCBza2xfdXBkYXRlX3BsYW5lKHN0cnVjdCBp bnRlbF9wbGFuZSAqcGxhbmUsCiAJdWludDMyX3QgeSA9IHBsYW5lX3N0YXRlLT5tYWluLnk7CiAJ dWludDMyX3Qgc3JjX3cgPSBkcm1fcmVjdF93aWR0aCgmcGxhbmVfc3RhdGUtPmJhc2Uuc3JjKSA+ PiAxNjsKIAl1aW50MzJfdCBzcmNfaCA9IGRybV9yZWN0X2hlaWdodCgmcGxhbmVfc3RhdGUtPmJh c2Uuc3JjKSA+PiAxNjsKLQl1bnNpZ25lZCBsb25nIGlycWZsYWdzOwogCiAJLyogU2l6ZXMgYXJl IDAgYmFzZWQgKi8KIAlzcmNfdy0tOwpAQCAtMjYxLDggKzI1OSw2IEBAIHNrbF91cGRhdGVfcGxh bmUoc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSwKIAljcnRjX3ctLTsKIAljcnRjX2gtLTsKIAot CXNwaW5fbG9ja19pcnFzYXZlKCZkZXZfcHJpdi0+dW5jb3JlLmxvY2ssIGlycWZsYWdzKTsKLQog CWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDEwIHx8IElTX0dFTUlOSUxBS0UoZGV2X3ByaXYp KQogCQlJOTE1X1dSSVRFX0ZXKFBMQU5FX0NPTE9SX0NUTChwaXBlLCBwbGFuZV9pZCksCiAJCQkg ICAgICBwbGFuZV9zdGF0ZS0+Y29sb3JfY3RsKTsKQEAgLTMwMyw4ICsyOTksNiBAQCBza2xfdXBk YXRlX3BsYW5lKHN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUsCiAJSTkxNV9XUklURV9GVyhQTEFO RV9TVVJGKHBpcGUsIHBsYW5lX2lkKSwKIAkJICAgICAgaW50ZWxfcGxhbmVfZ2d0dF9vZmZzZXQo cGxhbmVfc3RhdGUpICsgc3VyZl9hZGRyKTsKIAlQT1NUSU5HX1JFQURfRlcoUExBTkVfU1VSRihw aXBlLCBwbGFuZV9pZCkpOwotCi0Jc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZGV2X3ByaXYtPnVu Y29yZS5sb2NrLCBpcnFmbGFncyk7CiB9CiAKIHZvaWQKQEAgLTMxMywxNiArMzA3LDExIEBAIHNr bF9kaXNhYmxlX3BsYW5lKHN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUsIHN0cnVjdCBpbnRlbF9j cnRjICpjcnRjKQogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUo cGxhbmUtPmJhc2UuZGV2KTsKIAllbnVtIHBsYW5lX2lkIHBsYW5lX2lkID0gcGxhbmUtPmlkOwog CWVudW0gcGlwZSBwaXBlID0gcGxhbmUtPnBpcGU7Ci0JdW5zaWduZWQgbG9uZyBpcnFmbGFnczsK LQotCXNwaW5fbG9ja19pcnFzYXZlKCZkZXZfcHJpdi0+dW5jb3JlLmxvY2ssIGlycWZsYWdzKTsK IAogCUk5MTVfV1JJVEVfRlcoUExBTkVfQ1RMKHBpcGUsIHBsYW5lX2lkKSwgMCk7CiAKIAlJOTE1 X1dSSVRFX0ZXKFBMQU5FX1NVUkYocGlwZSwgcGxhbmVfaWQpLCAwKTsKIAlQT1NUSU5HX1JFQURf RlcoUExBTkVfU1VSRihwaXBlLCBwbGFuZV9pZCkpOwotCi0Jc3Bpbl91bmxvY2tfaXJxcmVzdG9y ZSgmZGV2X3ByaXYtPnVuY29yZS5sb2NrLCBpcnFmbGFncyk7CiB9CiAKIGJvb2wKQEAgLTQ2Nyw3 ICs0NTYsNiBAQCB2bHZfdXBkYXRlX3BsYW5lKHN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUsCiAJ dWludDMyX3QgY3J0Y19oID0gZHJtX3JlY3RfaGVpZ2h0KCZwbGFuZV9zdGF0ZS0+YmFzZS5kc3Qp OwogCXVpbnQzMl90IHggPSBwbGFuZV9zdGF0ZS0+bWFpbi54OwogCXVpbnQzMl90IHkgPSBwbGFu ZV9zdGF0ZS0+bWFpbi55OwotCXVuc2lnbmVkIGxvbmcgaXJxZmxhZ3M7CiAKIAkvKiBTaXplcyBh cmUgMCBiYXNlZCAqLwogCWNydGNfdy0tOwpAQCAtNDc1LDggKzQ2Myw2IEBAIHZsdl91cGRhdGVf cGxhbmUoc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSwKIAogCWxpbmVhcl9vZmZzZXQgPSBpbnRl bF9mYl94eV90b19saW5lYXIoeCwgeSwgcGxhbmVfc3RhdGUsIDApOwogCi0Jc3Bpbl9sb2NrX2ly cXNhdmUoJmRldl9wcml2LT51bmNvcmUubG9jaywgaXJxZmxhZ3MpOwotCiAJaWYgKElTX0NIRVJS WVZJRVcoZGV2X3ByaXYpICYmIHBpcGUgPT0gUElQRV9CKQogCQljaHZfdXBkYXRlX2NzYyhwbGFu ZSwgZmItPmZvcm1hdC0+Zm9ybWF0KTsKIApAQCAtNTAwLDggKzQ4Niw2IEBAIHZsdl91cGRhdGVf cGxhbmUoc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSwKIAlJOTE1X1dSSVRFX0ZXKFNQU1VSRihw aXBlLCBwbGFuZV9pZCksCiAJCSAgICAgIGludGVsX3BsYW5lX2dndHRfb2Zmc2V0KHBsYW5lX3N0 YXRlKSArIHNwcnN1cmZfb2Zmc2V0KTsKIAlQT1NUSU5HX1JFQURfRlcoU1BTVVJGKHBpcGUsIHBs YW5lX2lkKSk7Ci0KLQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZkZXZfcHJpdi0+dW5jb3JlLmxv Y2ssIGlycWZsYWdzKTsKIH0KIAogc3RhdGljIHZvaWQKQEAgLTUxMCwxNiArNDk0LDExIEBAIHZs dl9kaXNhYmxlX3BsYW5lKHN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUsIHN0cnVjdCBpbnRlbF9j cnRjICpjcnRjKQogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUo cGxhbmUtPmJhc2UuZGV2KTsKIAllbnVtIHBpcGUgcGlwZSA9IHBsYW5lLT5waXBlOwogCWVudW0g cGxhbmVfaWQgcGxhbmVfaWQgPSBwbGFuZS0+aWQ7Ci0JdW5zaWduZWQgbG9uZyBpcnFmbGFnczsK LQotCXNwaW5fbG9ja19pcnFzYXZlKCZkZXZfcHJpdi0+dW5jb3JlLmxvY2ssIGlycWZsYWdzKTsK IAogCUk5MTVfV1JJVEVfRlcoU1BDTlRSKHBpcGUsIHBsYW5lX2lkKSwgMCk7CiAKIAlJOTE1X1dS SVRFX0ZXKFNQU1VSRihwaXBlLCBwbGFuZV9pZCksIDApOwogCVBPU1RJTkdfUkVBRF9GVyhTUFNV UkYocGlwZSwgcGxhbmVfaWQpKTsKLQotCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmRldl9wcml2 LT51bmNvcmUubG9jaywgaXJxZmxhZ3MpOwogfQogCiBzdGF0aWMgYm9vbApAQCAtNjE4LDcgKzU5 Nyw2IEBAIGl2Yl91cGRhdGVfcGxhbmUoc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSwKIAl1aW50 MzJfdCB5ID0gcGxhbmVfc3RhdGUtPm1haW4ueTsKIAl1aW50MzJfdCBzcmNfdyA9IGRybV9yZWN0 X3dpZHRoKCZwbGFuZV9zdGF0ZS0+YmFzZS5zcmMpID4+IDE2OwogCXVpbnQzMl90IHNyY19oID0g ZHJtX3JlY3RfaGVpZ2h0KCZwbGFuZV9zdGF0ZS0+YmFzZS5zcmMpID4+IDE2OwotCXVuc2lnbmVk IGxvbmcgaXJxZmxhZ3M7CiAKIAkvKiBTaXplcyBhcmUgMCBiYXNlZCAqLwogCXNyY193LS07CkBA IC02MzEsOCArNjA5LDYgQEAgaXZiX3VwZGF0ZV9wbGFuZShzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBs YW5lLAogCiAJbGluZWFyX29mZnNldCA9IGludGVsX2ZiX3h5X3RvX2xpbmVhcih4LCB5LCBwbGFu ZV9zdGF0ZSwgMCk7CiAKLQlzcGluX2xvY2tfaXJxc2F2ZSgmZGV2X3ByaXYtPnVuY29yZS5sb2Nr LCBpcnFmbGFncyk7Ci0KIAlpZiAoa2V5LT5mbGFncykgewogCQlJOTE1X1dSSVRFX0ZXKFNQUktF WVZBTChwaXBlKSwga2V5LT5taW5fdmFsdWUpOwogCQlJOTE1X1dSSVRFX0ZXKFNQUktFWU1BWChw aXBlKSwga2V5LT5tYXhfdmFsdWUpOwpAQCAtNjU4LDggKzYzNCw2IEBAIGl2Yl91cGRhdGVfcGxh bmUoc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSwKIAlJOTE1X1dSSVRFX0ZXKFNQUlNVUkYocGlw ZSksCiAJCSAgICAgIGludGVsX3BsYW5lX2dndHRfb2Zmc2V0KHBsYW5lX3N0YXRlKSArIHNwcnN1 cmZfb2Zmc2V0KTsKIAlQT1NUSU5HX1JFQURfRlcoU1BSU1VSRihwaXBlKSk7Ci0KLQlzcGluX3Vu bG9ja19pcnFyZXN0b3JlKCZkZXZfcHJpdi0+dW5jb3JlLmxvY2ssIGlycWZsYWdzKTsKIH0KIAog c3RhdGljIHZvaWQKQEAgLTY2Nyw5ICs2NDEsNiBAQCBpdmJfZGlzYWJsZV9wbGFuZShzdHJ1Y3Qg aW50ZWxfcGxhbmUgKnBsYW5lLCBzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YykKIHsKIAlzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KHBsYW5lLT5iYXNlLmRldik7CiAJ ZW51bSBwaXBlIHBpcGUgPSBwbGFuZS0+cGlwZTsKLQl1bnNpZ25lZCBsb25nIGlycWZsYWdzOwot Ci0Jc3Bpbl9sb2NrX2lycXNhdmUoJmRldl9wcml2LT51bmNvcmUubG9jaywgaXJxZmxhZ3MpOwog CiAJSTkxNV9XUklURV9GVyhTUFJDVEwocGlwZSksIDApOwogCS8qIENhbid0IGxlYXZlIHRoZSBz Y2FsZXIgZW5hYmxlZC4uLiAqLwpAQCAtNjc4LDggKzY0OSw2IEBAIGl2Yl9kaXNhYmxlX3BsYW5l KHN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUsIHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjKQogCiAJ STkxNV9XUklURV9GVyhTUFJTVVJGKHBpcGUpLCAwKTsKIAlQT1NUSU5HX1JFQURfRlcoU1BSU1VS RihwaXBlKSk7Ci0KLQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZkZXZfcHJpdi0+dW5jb3JlLmxv Y2ssIGlycWZsYWdzKTsKIH0KIAogc3RhdGljIGJvb2wKQEAgLTc3NCw3ICs3NDMsNiBAQCBnNHhf dXBkYXRlX3BsYW5lKHN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUsCiAJdWludDMyX3QgeSA9IHBs YW5lX3N0YXRlLT5tYWluLnk7CiAJdWludDMyX3Qgc3JjX3cgPSBkcm1fcmVjdF93aWR0aCgmcGxh bmVfc3RhdGUtPmJhc2Uuc3JjKSA+PiAxNjsKIAl1aW50MzJfdCBzcmNfaCA9IGRybV9yZWN0X2hl aWdodCgmcGxhbmVfc3RhdGUtPmJhc2Uuc3JjKSA+PiAxNjsKLQl1bnNpZ25lZCBsb25nIGlycWZs YWdzOwogCiAJLyogU2l6ZXMgYXJlIDAgYmFzZWQgKi8KIAlzcmNfdy0tOwpAQCAtNzg3LDggKzc1 NSw2IEBAIGc0eF91cGRhdGVfcGxhbmUoc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSwKIAogCWxp bmVhcl9vZmZzZXQgPSBpbnRlbF9mYl94eV90b19saW5lYXIoeCwgeSwgcGxhbmVfc3RhdGUsIDAp OwogCi0Jc3Bpbl9sb2NrX2lycXNhdmUoJmRldl9wcml2LT51bmNvcmUubG9jaywgaXJxZmxhZ3Mp OwotCiAJaWYgKGtleS0+ZmxhZ3MpIHsKIAkJSTkxNV9XUklURV9GVyhEVlNLRVlWQUwocGlwZSks IGtleS0+bWluX3ZhbHVlKTsKIAkJSTkxNV9XUklURV9GVyhEVlNLRVlNQVgocGlwZSksIGtleS0+ bWF4X3ZhbHVlKTsKQEAgLTgwOSw4ICs3NzUsNiBAQCBnNHhfdXBkYXRlX3BsYW5lKHN0cnVjdCBp bnRlbF9wbGFuZSAqcGxhbmUsCiAJSTkxNV9XUklURV9GVyhEVlNTVVJGKHBpcGUpLAogCQkgICAg ICBpbnRlbF9wbGFuZV9nZ3R0X29mZnNldChwbGFuZV9zdGF0ZSkgKyBkdnNzdXJmX29mZnNldCk7 CiAJUE9TVElOR19SRUFEX0ZXKERWU1NVUkYocGlwZSkpOwotCi0Jc3Bpbl91bmxvY2tfaXJxcmVz dG9yZSgmZGV2X3ByaXYtPnVuY29yZS5sb2NrLCBpcnFmbGFncyk7CiB9CiAKIHN0YXRpYyB2b2lk CkBAIC04MTgsOSArNzgyLDYgQEAgZzR4X2Rpc2FibGVfcGxhbmUoc3RydWN0IGludGVsX3BsYW5l ICpwbGFuZSwgc3RydWN0IGludGVsX2NydGMgKmNydGMpCiB7CiAJc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShwbGFuZS0+YmFzZS5kZXYpOwogCWVudW0gcGlwZSBw aXBlID0gcGxhbmUtPnBpcGU7Ci0JdW5zaWduZWQgbG9uZyBpcnFmbGFnczsKLQotCXNwaW5fbG9j a19pcnFzYXZlKCZkZXZfcHJpdi0+dW5jb3JlLmxvY2ssIGlycWZsYWdzKTsKIAogCUk5MTVfV1JJ VEVfRlcoRFZTQ05UUihwaXBlKSwgMCk7CiAJLyogRGlzYWJsZSB0aGUgc2NhbGVyICovCkBAIC04 MjgsOCArNzg5LDYgQEAgZzR4X2Rpc2FibGVfcGxhbmUoc3RydWN0IGludGVsX3BsYW5lICpwbGFu ZSwgc3RydWN0IGludGVsX2NydGMgKmNydGMpCiAKIAlJOTE1X1dSSVRFX0ZXKERWU1NVUkYocGlw ZSksIDApOwogCVBPU1RJTkdfUkVBRF9GVyhEVlNTVVJGKHBpcGUpKTsKLQotCXNwaW5fdW5sb2Nr X2lycXJlc3RvcmUoJmRldl9wcml2LT51bmNvcmUubG9jaywgaXJxZmxhZ3MpOwogfQogCiBzdGF0 aWMgYm9vbAotLSAKMi4xNi4xCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVz a3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9p bnRlbC1nZngK