From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH 12/18] drm/i915: Defer request emission Date: Wed, 14 Sep 2016 07:52:44 +0100 Message-ID: <20160914065250.15482-13-chris@chris-wilson.co.uk> References: <20160914065250.15482-1-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-x244.google.com (mail-wm0-x244.google.com [IPv6:2a00:1450:400c:c09::244]) by gabe.freedesktop.org (Postfix) with ESMTPS id 3A6C66E6A8 for ; Wed, 14 Sep 2016 06:53:13 +0000 (UTC) Received: by mail-wm0-x244.google.com with SMTP id b187so1020271wme.0 for ; Tue, 13 Sep 2016 23:53:13 -0700 (PDT) In-Reply-To: <20160914065250.15482-1-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 TW92ZSB0aGUgYWN0dWFsIGVtaXNzaW9uIG9mIHRoZSByZXF1ZXN0ICh0aGUgY2xvc2luZyBicmVh ZGNydW1iKSBmcm9tCmk5MTVfYWRkX3JlcXVlc3QoKSB0byB0aGUgc3VibWl0IGNhbGxiYWNrLiAo SXQgY2FuIGJlIG1vdmVkIGxhdGVyIHdoZW4KcmVxdWlyZWQuKSBUaGlzIGFsbG93cyB1cyB0byBk ZWZlciB0aGUgYWxsb2NhdGlvbiBvZiB0aGUgZ2xvYmFsX3NlcW5vCmZyb20gcmVxdWVzdCBjb25z dHJ1Y3Rpb24gdG8gYWN0dWFsIHN1Ym1pc3Npb24sIGFsbG93aW5nIHVzIHRvIGVtaXQgdGhlCnJl cXVlc3RzIG91dCBvZiBvcmRlciAod3J0IHRvIHRoZSBvcmRlciBvZiB0aGVpciBjb25zdHJ1Y3Rp b24sIHRoZXkKc3RpbGwgd2lsbCBvbmx5IGJlIGV4ZWN1dGVkIG9uZSBhbGwgb2YgdGhlaXIgZGVw ZW5kZW5jaWVzIGFyZSByZXNvbHZlZAppbmNsdWRpbmcgdGhhdCBhbGwgZWFybGllciByZXF1ZXN0 cyBvbiB0aGVpciB0aW1lbGluZSBoYXZlIGJlZW4Kc3VibWl0dGVkLikgV2UgaGF2ZSB0byBzcGVj aWFsaXNlIGhvdyB3ZSB0aGVuIGVtaXQgdGhlIHJlcXVlc3QgaW4gb3JkZXIKdG8gd3JpdGUgaW50 byB0aGUgcHJlYWxsb2NhdGVkIHNwYWNlLCByYXRoZXIgdGhhbiBhdCB0aGUgdGFpbCBvZiB0aGUK cmluZ2J1ZmZlciAod2hpY2ggd2lsbCBoYXZlIGJlZW4gYWR2YW5jZWQgYnkgdGhlIGFkZGl0aW9u IG9mIG5ldwpyZXF1ZXN0cykuCgpTaWduZWQtb2ZmLWJ5OiBDaHJpcyBXaWxzb24gPGNocmlzQGNo cmlzLXdpbHNvbi5jby51az4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9yZXF1 ZXN0LmMgfCAgMjYgKystLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jICAgICAg ICB8IDEyMSArKysrKysrKy0tLS0tLS0tLS0tLS0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfcmluZ2J1ZmZlci5jIHwgMTY4ICsrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmggfCAgMTAgKy0KIDQgZmlsZXMg Y2hhbmdlZCwgMTEyIGluc2VydGlvbnMoKyksIDIxMyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9yZXF1ZXN0LmMgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2dlbV9yZXF1ZXN0LmMKaW5kZXggOWE3MzVlMmQ1YWVhLi5mMjgwOWUzNjRm ZDcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3JlcXVlc3QuYwor KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9yZXF1ZXN0LmMKQEAgLTYzMCw5ICs2 MzAsNyBAQCB2b2lkIF9faTkxNV9hZGRfcmVxdWVzdChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVl c3QgKnJlcXVlc3QsIGJvb2wgZmx1c2hfY2FjaGVzKQogCXN0cnVjdCBpbnRlbF9yaW5nICpyaW5n ID0gcmVxdWVzdC0+cmluZzsKIAlzdHJ1Y3QgaW50ZWxfdGltZWxpbmUgKnRpbWVsaW5lID0gcmVx dWVzdC0+dGltZWxpbmU7CiAJc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpwcmV2OwotCXUz MiByZXF1ZXN0X3N0YXJ0OwotCXUzMiByZXNlcnZlZF90YWlsOwotCWludCByZXQ7CisJaW50IGVy cjsKIAogCXRyYWNlX2k5MTVfZ2VtX3JlcXVlc3RfYWRkKHJlcXVlc3QpOwogCkBAIC02NDEsOCAr NjM5LDYgQEAgdm9pZCBfX2k5MTVfYWRkX3JlcXVlc3Qoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1 ZXN0ICpyZXF1ZXN0LCBib29sIGZsdXNoX2NhY2hlcykKIAkgKiBzaG91bGQgYWxyZWFkeSBoYXZl IGJlZW4gcmVzZXJ2ZWQgaW4gdGhlIHJpbmcgYnVmZmVyLiBMZXQgdGhlIHJpbmcKIAkgKiBrbm93 IHRoYXQgaXQgaXMgdGltZSB0byB1c2UgdGhhdCBzcGFjZSB1cC4KIAkgKi8KLQlyZXF1ZXN0X3N0 YXJ0ID0gcmluZy0+dGFpbDsKLQlyZXNlcnZlZF90YWlsID0gcmVxdWVzdC0+cmVzZXJ2ZWRfc3Bh Y2U7CiAJcmVxdWVzdC0+cmVzZXJ2ZWRfc3BhY2UgPSAwOwogCiAJLyoKQEAgLTY1MywxMCArNjQ5 LDEwIEBAIHZvaWQgX19pOTE1X2FkZF9yZXF1ZXN0KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVz dCAqcmVxdWVzdCwgYm9vbCBmbHVzaF9jYWNoZXMpCiAJICogd2hhdC4KIAkgKi8KIAlpZiAoZmx1 c2hfY2FjaGVzKSB7Ci0JCXJldCA9IGVuZ2luZS0+ZW1pdF9mbHVzaChyZXF1ZXN0LCBFTUlUX0ZM VVNIKTsKKwkJZXJyID0gZW5naW5lLT5lbWl0X2ZsdXNoKHJlcXVlc3QsIEVNSVRfRkxVU0gpOwog CiAJCS8qIE5vdCBhbGxvd2VkIHRvIGZhaWwhICovCi0JCVdBUk4ocmV0LCAiZW5naW5lLT5lbWl0 X2ZsdXNoKCkgZmFpbGVkOiAlZCFcbiIsIHJldCk7CisJCVdBUk4oZXJyLCAiZW5naW5lLT5lbWl0 X2ZsdXNoKCkgZmFpbGVkOiAlZCFcbiIsIGVycik7CiAJfQogCiAJLyogUmVjb3JkIHRoZSBwb3Np dGlvbiBvZiB0aGUgc3RhcnQgb2YgdGhlIGJyZWFkY3J1bWIgc28gdGhhdApAQCAtNjY0LDIwICs2 NjAsMTIgQEAgdm9pZCBfX2k5MTVfYWRkX3JlcXVlc3Qoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1 ZXN0ICpyZXF1ZXN0LCBib29sIGZsdXNoX2NhY2hlcykKIAkgKiBHUFUgcHJvY2Vzc2luZyB0aGUg cmVxdWVzdCwgd2UgbmV2ZXIgb3Zlci1lc3RpbWF0ZSB0aGUKIAkgKiBwb3NpdGlvbiBvZiB0aGUg cmluZydzIEhFQUQuCiAJICovCisJZXJyID0gaW50ZWxfcmluZ19iZWdpbihyZXF1ZXN0LCBlbmdp bmUtPmVtaXRfcmVxdWVzdF9zeik7CisJR0VNX0JVR19PTihlcnIpOwogCXJlcXVlc3QtPnBvc3Rm aXggPSByaW5nLT50YWlsOwogCi0JLyogTm90IGFsbG93ZWQgdG8gZmFpbCEgKi8KLQlyZXQgPSBl bmdpbmUtPmVtaXRfcmVxdWVzdChyZXF1ZXN0KTsKLQlXQVJOKHJldCwgIiglcyktPmVtaXRfcmVx dWVzdCBmYWlsZWQ6ICVkIVxuIiwgZW5naW5lLT5uYW1lLCByZXQpOwotCi0JLyogU2FuaXR5IGNo ZWNrIHRoYXQgdGhlIHJlc2VydmVkIHNpemUgd2FzIGxhcmdlIGVub3VnaC4gKi8KLQlyZXQgPSBy aW5nLT50YWlsIC0gcmVxdWVzdF9zdGFydDsKLQlpZiAocmV0IDwgMCkKLQkJcmV0ICs9IHJpbmct PnNpemU7Ci0JV0FSTl9PTkNFKHJldCA+IHJlc2VydmVkX3RhaWwsCi0JCSAgIk5vdCBlbm91Z2gg c3BhY2UgcmVzZXJ2ZWQgKCVkIGJ5dGVzKSAiCi0JCSAgImZvciBhZGRpbmcgdGhlIHJlcXVlc3Qg KCVkIGJ5dGVzKVxuIiwKLQkJICByZXNlcnZlZF90YWlsLCByZXQpOworCWVuZ2luZS0+ZW1pdF9y ZXF1ZXN0KHJlcXVlc3QsIHJlcXVlc3QtPnJpbmctPnZhZGRyICsgcmVxdWVzdC0+cG9zdGZpeCk7 CisJcmluZy0+dGFpbCArPSBlbmdpbmUtPmVtaXRfcmVxdWVzdF9zeiAqIHNpemVvZih1MzIpOwog CiAJLyogU2VhbCB0aGUgcmVxdWVzdCBhbmQgbWFyayBpdCBhcyBwZW5kaW5nIGV4ZWN1dGlvbi4g Tm90ZSB0aGF0CiAJICogd2UgbWF5IGluc3BlY3QgdGhpcyBzdGF0ZSwgd2l0aG91dCBob2xkaW5n IGFueSBsb2NrcywgZHVyaW5nCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9scmMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jCmluZGV4IDdlOTQ0YTBh Y2MxMC4uZmYwODFjZTRhMmFhIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9scmMuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYwpAQCAtMzYwLDcg KzM2MCw3IEBAIHN0YXRpYyB1NjQgZXhlY2xpc3RzX3VwZGF0ZV9jb250ZXh0KHN0cnVjdCBkcm1f aTkxNV9nZW1fcmVxdWVzdCAqcnEpCiAJc3RydWN0IGk5MTVfaHdfcHBndHQgKnBwZ3R0ID0gcnEt PmN0eC0+cHBndHQ7CiAJdTMyICpyZWdfc3RhdGUgPSBjZS0+bHJjX3JlZ19zdGF0ZTsKIAotCXJl Z19zdGF0ZVtDVFhfUklOR19UQUlMKzFdID0gaW50ZWxfcmluZ19vZmZzZXQocnEtPnJpbmcsIHJx LT50YWlsKTsKKwlyZWdfc3RhdGVbQ1RYX1JJTkdfVEFJTCsxXSA9IHJxLT50YWlsOwogCiAJLyog VHJ1ZSAzMmIgUFBHVFQgd2l0aCBkeW5hbWljIHBhZ2UgYWxsb2NhdGlvbjogdXBkYXRlIFBEUAog CSAqIHJlZ2lzdGVycyBhbmQgcG9pbnQgdGhlIHVuYWxsb2NhdGVkIFBEUHMgdG8gc2NyYXRjaCBw YWdlLgpAQCAtNTk0LDYgKzU5NCwxNSBAQCBzdGF0aWMgdm9pZCBleGVjbGlzdHNfc3VibWl0X3Jl cXVlc3Qoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXF1ZXN0KQogCiAJc3Bpbl9sb2Nr X2lycXNhdmUoJmVuZ2luZS0+ZXhlY2xpc3RfbG9jaywgZmxhZ3MpOwogCisJLyogV2Uga2VlcCB0 aGUgcHJldmlvdXMgY29udGV4dCBhbGl2ZSB1bnRpbCB3ZSByZXRpcmUgdGhlIGZvbGxvd2luZwor CSAqIHJlcXVlc3QuIFRoaXMgZW5zdXJlcyB0aGF0IGFueSB0aGUgY29udGV4dCBvYmplY3QgaXMg c3RpbGwgcGlubmVkCisJICogZm9yIGFueSByZXNpZHVhbCB3cml0ZXMgdGhlIEhXIG1ha2VzIGlu dG8gaXQgb24gdGhlIGNvbnRleHQgc3dpdGNoCisJICogaW50byB0aGUgbmV4dCBvYmplY3QgZm9s bG93aW5nIHRoZSBicmVhZGNydW1iLiBPdGhlcndpc2UsIHdlIG1heQorCSAqIHJldGlyZSB0aGUg Y29udGV4dCB0b28gZWFybHkuCisJICovCisJcmVxdWVzdC0+cHJldmlvdXNfY29udGV4dCA9IGVu Z2luZS0+bGFzdF9jb250ZXh0OworCWVuZ2luZS0+bGFzdF9jb250ZXh0ID0gcmVxdWVzdC0+Y3R4 OworCiAJbGlzdF9hZGRfdGFpbCgmcmVxdWVzdC0+ZXhlY2xpc3RfbGluaywgJmVuZ2luZS0+ZXhl Y2xpc3RfcXVldWUpOwogCWlmIChleGVjbGlzdHNfZWxzcF9pZGxlKGVuZ2luZSkpCiAJCXRhc2ts ZXRfaGlfc2NoZWR1bGUoJmVuZ2luZS0+aXJxX3Rhc2tsZXQpOwpAQCAtNjYzLDQ2ICs2NzIsNiBA QCBlcnJfdW5waW46CiAJcmV0dXJuIHJldDsKIH0KIAotLyoKLSAqIGludGVsX2xvZ2ljYWxfcmlu Z19hZHZhbmNlKCkgLSBhZHZhbmNlIHRoZSB0YWlsIGFuZCBwcmVwYXJlIGZvciBzdWJtaXNzaW9u Ci0gKiBAcmVxdWVzdDogUmVxdWVzdCB0byBhZHZhbmNlIHRoZSBsb2dpY2FsIHJpbmdidWZmZXIg b2YuCi0gKgotICogVGhlIHRhaWwgaXMgdXBkYXRlZCBpbiBvdXIgbG9naWNhbCByaW5nYnVmZmVy IHN0cnVjdCwgbm90IGluIHRoZSBhY3R1YWwgY29udGV4dC4gV2hhdAotICogcmVhbGx5IGhhcHBl bnMgZHVyaW5nIHN1Ym1pc3Npb24gaXMgdGhhdCB0aGUgY29udGV4dCBhbmQgY3VycmVudCB0YWls IHdpbGwgYmUgcGxhY2VkCi0gKiBvbiBhIHF1ZXVlIHdhaXRpbmcgZm9yIHRoZSBFTFNQIHRvIGJl IHJlYWR5IHRvIGFjY2VwdCBhIG5ldyBjb250ZXh0IHN1Ym1pc3Npb24uIEF0IHRoYXQKLSAqIHBv aW50LCB0aGUgdGFpbCAqaW5zaWRlKiB0aGUgY29udGV4dCBpcyB1cGRhdGVkIGFuZCB0aGUgRUxT UCB3cml0dGVuIHRvLgotICovCi1zdGF0aWMgaW50Ci1pbnRlbF9sb2dpY2FsX3JpbmdfYWR2YW5j ZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcXVlc3QpCi17Ci0Jc3RydWN0IGludGVs X3JpbmcgKnJpbmcgPSByZXF1ZXN0LT5yaW5nOwotCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVu Z2luZSA9IHJlcXVlc3QtPmVuZ2luZTsKLQotCWludGVsX3JpbmdfYWR2YW5jZShyaW5nKTsKLQly ZXF1ZXN0LT50YWlsID0gcmluZy0+dGFpbDsKLQotCS8qCi0JICogSGVyZSB3ZSBhZGQgdHdvIGV4 dHJhIE5PT1BzIGFzIHBhZGRpbmcgdG8gYXZvaWQKLQkgKiBsaXRlIHJlc3RvcmUgb2YgYSBjb250 ZXh0IHdpdGggSEVBRD09VEFJTC4KLQkgKgotCSAqIENhbGxlciBtdXN0IHJlc2VydmUgV0FfVEFJ TF9EV09SRFMgZm9yIHVzIQotCSAqLwotCWludGVsX3JpbmdfZW1pdChyaW5nLCBNSV9OT09QKTsK LQlpbnRlbF9yaW5nX2VtaXQocmluZywgTUlfTk9PUCk7Ci0JaW50ZWxfcmluZ19hZHZhbmNlKHJp bmcpOwotCXJlcXVlc3QtPndhX3RhaWwgPSByaW5nLT50YWlsOwotCi0JLyogV2Uga2VlcCB0aGUg cHJldmlvdXMgY29udGV4dCBhbGl2ZSB1bnRpbCB3ZSByZXRpcmUgdGhlIGZvbGxvd2luZwotCSAq IHJlcXVlc3QuIFRoaXMgZW5zdXJlcyB0aGF0IGFueSB0aGUgY29udGV4dCBvYmplY3QgaXMgc3Rp bGwgcGlubmVkCi0JICogZm9yIGFueSByZXNpZHVhbCB3cml0ZXMgdGhlIEhXIG1ha2VzIGludG8g aXQgb24gdGhlIGNvbnRleHQgc3dpdGNoCi0JICogaW50byB0aGUgbmV4dCBvYmplY3QgZm9sbG93 aW5nIHRoZSBicmVhZGNydW1iLiBPdGhlcndpc2UsIHdlIG1heQotCSAqIHJldGlyZSB0aGUgY29u dGV4dCB0b28gZWFybHkuCi0JICovCi0JcmVxdWVzdC0+cHJldmlvdXNfY29udGV4dCA9IGVuZ2lu ZS0+bGFzdF9jb250ZXh0OwotCWVuZ2luZS0+bGFzdF9jb250ZXh0ID0gcmVxdWVzdC0+Y3R4Owot CXJldHVybiAwOwotfQotCiBzdGF0aWMgaW50IGludGVsX2xyX2NvbnRleHRfcGluKHN0cnVjdCBp OTE1X2dlbV9jb250ZXh0ICpjdHgsCiAJCQkJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5l KQogewpAQCAtMTU0OCw0MSArMTUxNywzNiBAQCBzdGF0aWMgdm9pZCBieHRfYV9zZXFub19iYXJy aWVyKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKICAqIHJlc3RvcmUgd2l0aCBIRUFE PT1UQUlMIChXYUlkbGVMaXRlUmVzdG9yZSkuCiAgKi8KICNkZWZpbmUgV0FfVEFJTF9EV09SRFMg MgotCi1zdGF0aWMgaW50IGdlbjhfZW1pdF9yZXF1ZXN0KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVx dWVzdCAqcmVxdWVzdCkKK3N0YXRpYyB2b2lkIGdlbjhfZW1pdF93YV90YWlsKHN0cnVjdCBkcm1f aTkxNV9nZW1fcmVxdWVzdCAqcmVxdWVzdCwgdTMyICpvdXQpCiB7Ci0Jc3RydWN0IGludGVsX3Jp bmcgKnJpbmcgPSByZXF1ZXN0LT5yaW5nOwotCWludCByZXQ7Ci0KLQlyZXQgPSBpbnRlbF9yaW5n X2JlZ2luKHJlcXVlc3QsIDYgKyBXQV9UQUlMX0RXT1JEUyk7Ci0JaWYgKHJldCkKLQkJcmV0dXJu IHJldDsKKwlvdXRbMF0gPSBNSV9OT09QOworCW91dFsxXSA9IE1JX05PT1A7CisJcmVxdWVzdC0+ d2FfdGFpbCA9IGludGVsX3Jpbmdfb2Zmc2V0KHJlcXVlc3QtPnJpbmcsCisJCQkJCSAgICAgb3V0 ICsgV0FfVEFJTF9EV09SRFMpOworfQogCitzdGF0aWMgdm9pZCBnZW44X2VtaXRfcmVxdWVzdChz dHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcXVlc3QsCisJCQkgICAgICB1MzIgKm91dCkK K3sKIAkvKiB3L2E6IGJpdCA1IG5lZWRzIHRvIGJlIHplcm8gZm9yIE1JX0ZMVVNIX0RXIGFkZHJl c3MuICovCiAJQlVJTERfQlVHX09OKEk5MTVfR0VNX0hXU19JTkRFWF9BRERSICYgKDEgPDwgNSkp OwogCi0JaW50ZWxfcmluZ19lbWl0KHJpbmcsIChNSV9GTFVTSF9EVyArIDEpIHwgTUlfRkxVU0hf RFdfT1BfU1RPUkVEVyk7Ci0JaW50ZWxfcmluZ19lbWl0KHJpbmcsCi0JCQlpbnRlbF9od3Nfc2Vx bm9fYWRkcmVzcyhyZXF1ZXN0LT5lbmdpbmUpIHwKLQkJCU1JX0ZMVVNIX0RXX1VTRV9HVFQpOwot CWludGVsX3JpbmdfZW1pdChyaW5nLCAwKTsKLQlpbnRlbF9yaW5nX2VtaXQocmluZywgcmVxdWVz dC0+Z2xvYmFsX3NlcW5vKTsKLQlpbnRlbF9yaW5nX2VtaXQocmluZywgTUlfVVNFUl9JTlRFUlJV UFQpOwotCWludGVsX3JpbmdfZW1pdChyaW5nLCBNSV9OT09QKTsKLQlyZXR1cm4gaW50ZWxfbG9n aWNhbF9yaW5nX2FkdmFuY2UocmVxdWVzdCk7CisJb3V0WzBdID0gKE1JX0ZMVVNIX0RXICsgMSkg fCBNSV9GTFVTSF9EV19PUF9TVE9SRURXOworCW91dFsxXSA9IGludGVsX2h3c19zZXFub19hZGRy ZXNzKHJlcXVlc3QtPmVuZ2luZSkgfCBNSV9GTFVTSF9EV19VU0VfR1RUOworCW91dFsyXSA9IDA7 CisJb3V0WzNdID0gcmVxdWVzdC0+Z2xvYmFsX3NlcW5vOworCW91dFs0XSA9IE1JX1VTRVJfSU5U RVJSVVBUOworCW91dFs1XSA9IE1JX05PT1A7CisJcmVxdWVzdC0+dGFpbCA9IGludGVsX3Jpbmdf b2Zmc2V0KHJlcXVlc3QtPnJpbmcsIG91dCArIDYpOworCisJZ2VuOF9lbWl0X3dhX3RhaWwocmVx dWVzdCwgb3V0ICsgNik7CiB9CiAKIHN0YXRpYyBjb25zdCBpbnQgZ2VuOF9lbWl0X3JlcXVlc3Rf c3ogPSA2ICsgV0FfVEFJTF9EV09SRFM7CiAKLXN0YXRpYyBpbnQgZ2VuOF9lbWl0X3JlcXVlc3Rf cmVuZGVyKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxdWVzdCkKK3N0YXRpYyB2b2lk IGdlbjhfZW1pdF9yZXF1ZXN0X3JlbmRlcihzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJl cXVlc3QsCisJCQkJICAgICB1MzIgKm91dCkKIHsKLQlzdHJ1Y3QgaW50ZWxfcmluZyAqcmluZyA9 IHJlcXVlc3QtPnJpbmc7Ci0JaW50IHJldDsKLQotCXJldCA9IGludGVsX3JpbmdfYmVnaW4ocmVx dWVzdCwgOCArIFdBX1RBSUxfRFdPUkRTKTsKLQlpZiAocmV0KQotCQlyZXR1cm4gcmV0OwotCiAJ LyogV2UncmUgdXNpbmcgcXdvcmQgd3JpdGUsIHNlcW5vIHNob3VsZCBiZSBhbGlnbmVkIHRvIDgg Ynl0ZXMuICovCiAJQlVJTERfQlVHX09OKEk5MTVfR0VNX0hXU19JTkRFWCAmIDEpOwogCkBAIC0x NTkwLDE5ICsxNTU0LDIwIEBAIHN0YXRpYyBpbnQgZ2VuOF9lbWl0X3JlcXVlc3RfcmVuZGVyKHN0 cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxdWVzdCkKIAkgKiBuZWVkIGEgcHJpb3IgQ1Nf U1RBTEwsIHdoaWNoIGlzIGVtaXR0ZWQgYnkgdGhlIGZsdXNoCiAJICogZm9sbG93aW5nIHRoZSBi YXRjaC4KIAkgKi8KLQlpbnRlbF9yaW5nX2VtaXQocmluZywgR0ZYX09QX1BJUEVfQ09OVFJPTCg2 KSk7Ci0JaW50ZWxfcmluZ19lbWl0KHJpbmcsCi0JCQkoUElQRV9DT05UUk9MX0dMT0JBTF9HVFRf SVZCIHwKLQkJCSBQSVBFX0NPTlRST0xfQ1NfU1RBTEwgfAotCQkJIFBJUEVfQ09OVFJPTF9RV19X UklURSkpOwotCWludGVsX3JpbmdfZW1pdChyaW5nLCBpbnRlbF9od3Nfc2Vxbm9fYWRkcmVzcyhy ZXF1ZXN0LT5lbmdpbmUpKTsKLQlpbnRlbF9yaW5nX2VtaXQocmluZywgMCk7Ci0JaW50ZWxfcmlu Z19lbWl0KHJpbmcsIHJlcXVlc3QtPmdsb2JhbF9zZXFubyk7CisJb3V0WzBdID0gR0ZYX09QX1BJ UEVfQ09OVFJPTCg2KTsKKwlvdXRbMV0gPSAoUElQRV9DT05UUk9MX0dMT0JBTF9HVFRfSVZCIHwK KwkJICBQSVBFX0NPTlRST0xfQ1NfU1RBTEwgfAorCQkgIFBJUEVfQ09OVFJPTF9RV19XUklURSk7 CisJb3V0WzJdID0gaW50ZWxfaHdzX3NlcW5vX2FkZHJlc3MocmVxdWVzdC0+ZW5naW5lKTsKKwlv dXRbM10gPSAwOworCW91dFs0XSA9IHJlcXVlc3QtPmdsb2JhbF9zZXFubzsKIAkvKiBXZSdyZSB0 aHJhc2hpbmcgb25lIGR3b3JkIG9mIEhXUy4gKi8KLQlpbnRlbF9yaW5nX2VtaXQocmluZywgMCk7 Ci0JaW50ZWxfcmluZ19lbWl0KHJpbmcsIE1JX1VTRVJfSU5URVJSVVBUKTsKLQlpbnRlbF9yaW5n X2VtaXQocmluZywgTUlfTk9PUCk7Ci0JcmV0dXJuIGludGVsX2xvZ2ljYWxfcmluZ19hZHZhbmNl KHJlcXVlc3QpOworCW91dFs1XSA9IDA7CisJb3V0WzZdID0gTUlfVVNFUl9JTlRFUlJVUFQ7CisJ b3V0WzddID0gTUlfTk9PUDsKKwlyZXF1ZXN0LT50YWlsID0gaW50ZWxfcmluZ19vZmZzZXQocmVx dWVzdC0+cmluZywgb3V0ICsgOCk7CisKKwlnZW44X2VtaXRfd2FfdGFpbChyZXF1ZXN0LCBvdXQg KyA4KTsKIH0KIAogc3RhdGljIGNvbnN0IGludCBnZW44X2VtaXRfcmVxdWVzdF9yZW5kZXJfc3og PSA4ICsgV0FfVEFJTF9EV09SRFM7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9yaW5nYnVmZmVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVy LmMKaW5kZXggYzhjOWFkNDBmZDkzLi44M2QyYTNmNzJjZTEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9yaW5nYnVmZmVyLmMKQEAgLTEyNzEsODkgKzEyNzEsNjEgQEAgc3RhdGljIHZvaWQg cmVuZGVyX3JpbmdfY2xlYW51cChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiAJaTkx NV92bWFfdW5waW5fYW5kX3JlbGVhc2UoJmRldl9wcml2LT5zZW1hcGhvcmUpOwogfQogCi1zdGF0 aWMgaW50IGdlbjhfcmNzX3NpZ25hbChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSkK K3N0YXRpYyB1MzIgKmdlbjhfcmNzX3NpZ25hbChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3Qg KnJlcSwgdTMyICpvdXQpCiB7Ci0Jc3RydWN0IGludGVsX3JpbmcgKnJpbmcgPSByZXEtPnJpbmc7 CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gcmVxLT5pOTE1OwogCXN0cnVj dCBpbnRlbF9lbmdpbmVfY3MgKndhaXRlcjsKIAllbnVtIGludGVsX2VuZ2luZV9pZCBpZDsKLQlp bnQgcmV0LCBudW1fcmluZ3M7Ci0KLQludW1fcmluZ3MgPSBJTlRFTF9JTkZPKGRldl9wcml2KS0+ bnVtX3JpbmdzOwotCXJldCA9IGludGVsX3JpbmdfYmVnaW4ocmVxLCAobnVtX3JpbmdzLTEpICog OCk7Ci0JaWYgKHJldCkKLQkJcmV0dXJuIHJldDsKIAogCWZvcl9lYWNoX2VuZ2luZV9pZCh3YWl0 ZXIsIGRldl9wcml2LCBpZCkgewogCQl1NjQgZ3R0X29mZnNldCA9IHJlcS0+ZW5naW5lLT5zZW1h cGhvcmUuc2lnbmFsX2dndHRbaWRdOwogCQlpZiAoZ3R0X29mZnNldCA9PSBNSV9TRU1BUEhPUkVf U1lOQ19JTlZBTElEKQogCQkJY29udGludWU7CiAKLQkJaW50ZWxfcmluZ19lbWl0KHJpbmcsIEdG WF9PUF9QSVBFX0NPTlRST0woNikpOwotCQlpbnRlbF9yaW5nX2VtaXQocmluZywKLQkJCQlQSVBF X0NPTlRST0xfR0xPQkFMX0dUVF9JVkIgfAotCQkJCVBJUEVfQ09OVFJPTF9RV19XUklURSB8Ci0J CQkJUElQRV9DT05UUk9MX0NTX1NUQUxMKTsKLQkJaW50ZWxfcmluZ19lbWl0KHJpbmcsIGxvd2Vy XzMyX2JpdHMoZ3R0X29mZnNldCkpOwotCQlpbnRlbF9yaW5nX2VtaXQocmluZywgdXBwZXJfMzJf Yml0cyhndHRfb2Zmc2V0KSk7Ci0JCWludGVsX3JpbmdfZW1pdChyaW5nLCByZXEtPmdsb2JhbF9z ZXFubyk7Ci0JCWludGVsX3JpbmdfZW1pdChyaW5nLCAwKTsKLQkJaW50ZWxfcmluZ19lbWl0KHJp bmcsCi0JCQkJTUlfU0VNQVBIT1JFX1NJR05BTCB8Ci0JCQkJTUlfU0VNQVBIT1JFX1RBUkdFVCh3 YWl0ZXItPmh3X2lkKSk7Ci0JCWludGVsX3JpbmdfZW1pdChyaW5nLCAwKTsKKwkJKm91dCsrID0g R0ZYX09QX1BJUEVfQ09OVFJPTCg2KTsKKwkJKm91dCsrID0gKFBJUEVfQ09OVFJPTF9HTE9CQUxf R1RUX0lWQiB8CisJCQkgIFBJUEVfQ09OVFJPTF9RV19XUklURSB8CisJCQkgIFBJUEVfQ09OVFJP TF9DU19TVEFMTCk7CisJCSpvdXQrKyA9IGxvd2VyXzMyX2JpdHMoZ3R0X29mZnNldCk7CisJCSpv dXQrKyA9IHVwcGVyXzMyX2JpdHMoZ3R0X29mZnNldCk7CisJCSpvdXQrKyA9IHJlcS0+Z2xvYmFs X3NlcW5vOworCQkqb3V0KysgPSAwOworCQkqb3V0KysgPSAoTUlfU0VNQVBIT1JFX1NJR05BTCB8 CisJCQkgIE1JX1NFTUFQSE9SRV9UQVJHRVQod2FpdGVyLT5od19pZCkpOworCQkqb3V0KysgPSAw OwogCX0KLQlpbnRlbF9yaW5nX2FkdmFuY2UocmluZyk7CiAKLQlyZXR1cm4gMDsKKwlyZXR1cm4g b3V0OwogfQogCi1zdGF0aWMgaW50IGdlbjhfeGNzX3NpZ25hbChzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X3JlcXVlc3QgKnJlcSkKK3N0YXRpYyB1MzIgKmdlbjhfeGNzX3NpZ25hbChzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX3JlcXVlc3QgKnJlcSwgdTMyICpvdXQpCiB7Ci0Jc3RydWN0IGludGVsX3JpbmcgKnJp bmcgPSByZXEtPnJpbmc7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gcmVx LT5pOTE1OwogCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKndhaXRlcjsKIAllbnVtIGludGVsX2Vu Z2luZV9pZCBpZDsKLQlpbnQgcmV0LCBudW1fcmluZ3M7Ci0KLQludW1fcmluZ3MgPSBJTlRFTF9J TkZPKGRldl9wcml2KS0+bnVtX3JpbmdzOwotCXJldCA9IGludGVsX3JpbmdfYmVnaW4ocmVxLCAo bnVtX3JpbmdzLTEpICogNik7Ci0JaWYgKHJldCkKLQkJcmV0dXJuIHJldDsKIAogCWZvcl9lYWNo X2VuZ2luZV9pZCh3YWl0ZXIsIGRldl9wcml2LCBpZCkgewogCQl1NjQgZ3R0X29mZnNldCA9IHJl cS0+ZW5naW5lLT5zZW1hcGhvcmUuc2lnbmFsX2dndHRbaWRdOwogCQlpZiAoZ3R0X29mZnNldCA9 PSBNSV9TRU1BUEhPUkVfU1lOQ19JTlZBTElEKQogCQkJY29udGludWU7CiAKLQkJaW50ZWxfcmlu Z19lbWl0KHJpbmcsCi0JCQkJKE1JX0ZMVVNIX0RXICsgMSkgfCBNSV9GTFVTSF9EV19PUF9TVE9S RURXKTsKLQkJaW50ZWxfcmluZ19lbWl0KHJpbmcsCi0JCQkJbG93ZXJfMzJfYml0cyhndHRfb2Zm c2V0KSB8Ci0JCQkJTUlfRkxVU0hfRFdfVVNFX0dUVCk7Ci0JCWludGVsX3JpbmdfZW1pdChyaW5n LCB1cHBlcl8zMl9iaXRzKGd0dF9vZmZzZXQpKTsKLQkJaW50ZWxfcmluZ19lbWl0KHJpbmcsIHJl cS0+Z2xvYmFsX3NlcW5vKTsKLQkJaW50ZWxfcmluZ19lbWl0KHJpbmcsCi0JCQkJTUlfU0VNQVBI T1JFX1NJR05BTCB8Ci0JCQkJTUlfU0VNQVBIT1JFX1RBUkdFVCh3YWl0ZXItPmh3X2lkKSk7Ci0J CWludGVsX3JpbmdfZW1pdChyaW5nLCAwKTsKKwkJKm91dCsrID0gKE1JX0ZMVVNIX0RXICsgMSkg fCBNSV9GTFVTSF9EV19PUF9TVE9SRURXOworCQkqb3V0KysgPSBsb3dlcl8zMl9iaXRzKGd0dF9v ZmZzZXQpIHwgTUlfRkxVU0hfRFdfVVNFX0dUVDsKKwkJKm91dCsrID0gdXBwZXJfMzJfYml0cyhn dHRfb2Zmc2V0KTsKKwkJKm91dCsrID0gcmVxLT5nbG9iYWxfc2Vxbm87CisJCSpvdXQrKyA9IChN SV9TRU1BUEhPUkVfU0lHTkFMIHwKKwkJCSAgTUlfU0VNQVBIT1JFX1RBUkdFVCh3YWl0ZXItPmh3 X2lkKSk7CisJCSpvdXQrKyA9IDA7CiAJfQotCWludGVsX3JpbmdfYWR2YW5jZShyaW5nKTsKIAot CXJldHVybiAwOworCXJldHVybiBvdXQ7CiB9CiAKLXN0YXRpYyBpbnQgZ2VuNl9zaWduYWwoc3Ry dWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEpCitzdGF0aWMgdTMyICpnZW42X3NpZ25hbChz dHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwgdTMyICpvdXQpCiB7Ci0Jc3RydWN0IGlu dGVsX3JpbmcgKnJpbmcgPSByZXEtPnJpbmc7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2ID0gcmVxLT5pOTE1OwogCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZTsKLQlp bnQgcmV0LCBudW1fcmluZ3M7Ci0KLQludW1fcmluZ3MgPSBJTlRFTF9JTkZPKGRldl9wcml2KS0+ bnVtX3JpbmdzOwotCXJldCA9IGludGVsX3JpbmdfYmVnaW4ocmVxLCByb3VuZF91cCgobnVtX3Jp bmdzLTEpICogMywgMikpOwotCWlmIChyZXQpCi0JCXJldHVybiByZXQ7CisJaW50IG51bV9yaW5n cyA9IDA7CiAKIAlmb3JfZWFjaF9lbmdpbmUoZW5naW5lLCBkZXZfcHJpdikgewogCQlpOTE1X3Jl Z190IG1ib3hfcmVnOwpAQCAtMTM2Myw0NiArMTMzNSwzNCBAQCBzdGF0aWMgaW50IGdlbjZfc2ln bmFsKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxKQogCiAJCW1ib3hfcmVnID0gcmVx LT5lbmdpbmUtPnNlbWFwaG9yZS5tYm94LnNpZ25hbFtlbmdpbmUtPmh3X2lkXTsKIAkJaWYgKGk5 MTVfbW1pb19yZWdfdmFsaWQobWJveF9yZWcpKSB7Ci0JCQlpbnRlbF9yaW5nX2VtaXQocmluZywg TUlfTE9BRF9SRUdJU1RFUl9JTU0oMSkpOwotCQkJaW50ZWxfcmluZ19lbWl0X3JlZyhyaW5nLCBt Ym94X3JlZyk7Ci0JCQlpbnRlbF9yaW5nX2VtaXQocmluZywgcmVxLT5nbG9iYWxfc2Vxbm8pOwor CQkJKm91dCsrID0gTUlfTE9BRF9SRUdJU1RFUl9JTU0oMSk7CisJCQkqb3V0KysgPSBpOTE1X21t aW9fcmVnX29mZnNldChtYm94X3JlZyk7CisJCQkqb3V0KysgPSByZXEtPmdsb2JhbF9zZXFubzsK KwkJCW51bV9yaW5ncysrOwogCQl9CiAJfQorCWlmIChudW1fcmluZ3MgJiAxKQorCQkqb3V0Kysg PSBNSV9OT09QOwogCi0JLyogSWYgbnVtX2R3b3JkcyB3YXMgcm91bmRlZCwgbWFrZSBzdXJlIHRo ZSB0YWlsIHBvaW50ZXIgaXMgY29ycmVjdCAqLwotCWlmIChudW1fcmluZ3MgJSAyID09IDApCi0J CWludGVsX3JpbmdfZW1pdChyaW5nLCBNSV9OT09QKTsKLQlpbnRlbF9yaW5nX2FkdmFuY2Uocmlu Zyk7Ci0KLQlyZXR1cm4gMDsKKwlyZXR1cm4gb3V0OwogfQogCiBzdGF0aWMgdm9pZCBpOXh4X3N1 Ym1pdF9yZXF1ZXN0KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxdWVzdCkKIHsKIAlz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSByZXF1ZXN0LT5pOTE1OwogCi0JSTkx NV9XUklURV9UQUlMKHJlcXVlc3QtPmVuZ2luZSwKLQkJCWludGVsX3Jpbmdfb2Zmc2V0KHJlcXVl c3QtPnJpbmcsIHJlcXVlc3QtPnRhaWwpKTsKKwlJOTE1X1dSSVRFX1RBSUwocmVxdWVzdC0+ZW5n aW5lLCByZXF1ZXN0LT50YWlsKTsKIH0KIAotc3RhdGljIGludCBpOXh4X2VtaXRfcmVxdWVzdChz dHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSkKK3N0YXRpYyB2b2lkIGk5eHhfZW1pdF9y ZXF1ZXN0KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLAorCQkJICAgICAgdTMyICpv dXQpCiB7Ci0Jc3RydWN0IGludGVsX3JpbmcgKnJpbmcgPSByZXEtPnJpbmc7Ci0JaW50IHJldDsK LQotCXJldCA9IGludGVsX3JpbmdfYmVnaW4ocmVxLCA0KTsKLQlpZiAocmV0KQotCQlyZXR1cm4g cmV0OwotCi0JaW50ZWxfcmluZ19lbWl0KHJpbmcsIE1JX1NUT1JFX0RXT1JEX0lOREVYKTsKLQlp bnRlbF9yaW5nX2VtaXQocmluZywgSTkxNV9HRU1fSFdTX0lOREVYIDw8IE1JX1NUT1JFX0RXT1JE X0lOREVYX1NISUZUKTsKLQlpbnRlbF9yaW5nX2VtaXQocmluZywgcmVxLT5nbG9iYWxfc2Vxbm8p OwotCWludGVsX3JpbmdfZW1pdChyaW5nLCBNSV9VU0VSX0lOVEVSUlVQVCk7Ci0JaW50ZWxfcmlu Z19hZHZhbmNlKHJpbmcpOwotCi0JcmVxLT50YWlsID0gcmluZy0+dGFpbDsKKwlvdXRbMF0gPSBN SV9TVE9SRV9EV09SRF9JTkRFWDsKKwlvdXRbMV0gPSBJOTE1X0dFTV9IV1NfSU5ERVggPDwgTUlf U1RPUkVfRFdPUkRfSU5ERVhfU0hJRlQ7CisJb3V0WzJdID0gcmVxLT5nbG9iYWxfc2Vxbm87CisJ b3V0WzNdID0gTUlfVVNFUl9JTlRFUlJVUFQ7CiAKLQlyZXR1cm4gMDsKKwlyZXEtPnRhaWwgPSBp bnRlbF9yaW5nX29mZnNldChyZXEtPnJpbmcsIG91dCArIDQpOwogfQogCiBzdGF0aWMgY29uc3Qg aW50IGk5eHhfZW1pdF9yZXF1ZXN0X3N6ID0gNDsKQEAgLTE0MTUsNDkgKzEzNzUsMzMgQEAgc3Rh dGljIGNvbnN0IGludCBpOXh4X2VtaXRfcmVxdWVzdF9zeiA9IDQ7CiAgKiBVcGRhdGUgdGhlIG1h aWxib3ggcmVnaXN0ZXJzIGluIHRoZSAqb3RoZXIqIHJpbmdzIHdpdGggdGhlIGN1cnJlbnQgc2Vx bm8uCiAgKiBUaGlzIGFjdHMgbGlrZSBhIHNpZ25hbCBpbiB0aGUgY2Fub25pY2FsIHNlbWFwaG9y ZS4KICAqLwotc3RhdGljIGludCBnZW42X3NlbWFfZW1pdF9yZXF1ZXN0KHN0cnVjdCBkcm1faTkx NV9nZW1fcmVxdWVzdCAqcmVxKQorc3RhdGljIHZvaWQgZ2VuNl9zZW1hX2VtaXRfcmVxdWVzdChz dHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwKKwkJCQkgICB1MzIgKm91dCkKIHsKLQlp bnQgcmV0OwotCi0JcmV0ID0gcmVxLT5lbmdpbmUtPnNlbWFwaG9yZS5zaWduYWwocmVxKTsKLQlp ZiAocmV0KQotCQlyZXR1cm4gcmV0OwotCi0JcmV0dXJuIGk5eHhfZW1pdF9yZXF1ZXN0KHJlcSk7 CisJcmV0dXJuIGk5eHhfZW1pdF9yZXF1ZXN0KHJlcSwgcmVxLT5lbmdpbmUtPnNlbWFwaG9yZS5z aWduYWwocmVxLCBvdXQpKTsKIH0KIAotc3RhdGljIGludCBnZW44X3JlbmRlcl9lbWl0X3JlcXVl c3Qoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEpCitzdGF0aWMgdm9pZCBnZW44X3Jl bmRlcl9lbWl0X3JlcXVlc3Qoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsCisJCQkJ ICAgICB1MzIgKm91dCkKIHsKIAlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUgPSByZXEt PmVuZ2luZTsKLQlzdHJ1Y3QgaW50ZWxfcmluZyAqcmluZyA9IHJlcS0+cmluZzsKLQlpbnQgcmV0 OwogCi0JaWYgKGVuZ2luZS0+c2VtYXBob3JlLnNpZ25hbCkgewotCQlyZXQgPSBlbmdpbmUtPnNl bWFwaG9yZS5zaWduYWwocmVxKTsKLQkJaWYgKHJldCkKLQkJCXJldHVybiByZXQ7Ci0JfQotCi0J cmV0ID0gaW50ZWxfcmluZ19iZWdpbihyZXEsIDgpOwotCWlmIChyZXQpCi0JCXJldHVybiByZXQ7 CisJaWYgKGVuZ2luZS0+c2VtYXBob3JlLnNpZ25hbCkKKwkJb3V0ID0gZW5naW5lLT5zZW1hcGhv cmUuc2lnbmFsKHJlcSwgb3V0KTsKIAotCWludGVsX3JpbmdfZW1pdChyaW5nLCBHRlhfT1BfUElQ RV9DT05UUk9MKDYpKTsKLQlpbnRlbF9yaW5nX2VtaXQocmluZywgKFBJUEVfQ09OVFJPTF9HTE9C QUxfR1RUX0lWQiB8CisJb3V0WzBdID0gR0ZYX09QX1BJUEVfQ09OVFJPTCg2KTsKKwlvdXRbMV0g PSAoUElQRV9DT05UUk9MX0dMT0JBTF9HVFRfSVZCIHwKIAkJCSAgICAgICBQSVBFX0NPTlRST0xf Q1NfU1RBTEwgfAotCQkJICAgICAgIFBJUEVfQ09OVFJPTF9RV19XUklURSkpOwotCWludGVsX3Jp bmdfZW1pdChyaW5nLCBpbnRlbF9od3Nfc2Vxbm9fYWRkcmVzcyhlbmdpbmUpKTsKLQlpbnRlbF9y aW5nX2VtaXQocmluZywgMCk7Ci0JaW50ZWxfcmluZ19lbWl0KHJpbmcsIHJlcS0+Z2xvYmFsX3Nl cW5vKTsKKwkJCSAgICAgICBQSVBFX0NPTlRST0xfUVdfV1JJVEUpOworCW91dFsyXSA9IGludGVs X2h3c19zZXFub19hZGRyZXNzKGVuZ2luZSk7CisJb3V0WzNdID0gMDsKKwlvdXRbNF0gPSByZXEt Pmdsb2JhbF9zZXFubzsKIAkvKiBXZSdyZSB0aHJhc2hpbmcgb25lIGR3b3JkIG9mIEhXUy4gKi8K LQlpbnRlbF9yaW5nX2VtaXQocmluZywgMCk7Ci0JaW50ZWxfcmluZ19lbWl0KHJpbmcsIE1JX1VT RVJfSU5URVJSVVBUKTsKLQlpbnRlbF9yaW5nX2VtaXQocmluZywgTUlfTk9PUCk7Ci0JaW50ZWxf cmluZ19hZHZhbmNlKHJpbmcpOwotCi0JcmVxLT50YWlsID0gcmluZy0+dGFpbDsKKwlvdXRbNV0g PSAwOworCW91dFs2XSA9IE1JX1VTRVJfSU5URVJSVVBUOworCW91dFs3XSA9IE1JX05PT1A7CiAK LQlyZXR1cm4gMDsKKwlyZXEtPnRhaWwgPSBpbnRlbF9yaW5nX29mZnNldChyZXEtPnJpbmcsIG91 dCArIDgpOwogfQogCiBzdGF0aWMgY29uc3QgaW50IGdlbjhfcmVuZGVyX2VtaXRfcmVxdWVzdF9z eiA9IDg7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVy LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmgKaW5kZXggNDdhZDE5 ZjU0NDFkLi5hMmY5YzdkNjAzODEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX3JpbmdidWZmZXIuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVm ZmVyLmgKQEAgLTIyNSw3ICsyMjUsOCBAQCBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzIHsKICNkZWZp bmUgSTkxNV9ESVNQQVRDSF9TRUNVUkUgQklUKDApCiAjZGVmaW5lIEk5MTVfRElTUEFUQ0hfUElO TkVEIEJJVCgxKQogI2RlZmluZSBJOTE1X0RJU1BBVENIX1JTICAgICBCSVQoMikKLQlpbnQJCSgq ZW1pdF9yZXF1ZXN0KShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSk7CisJdm9pZAkJ KCplbWl0X3JlcXVlc3QpKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLAorCQkJCQl1 MzIgKm91dCk7CiAJaW50CQllbWl0X3JlcXVlc3Rfc3o7CiAKIAkvKiBQYXNzIHRoZSByZXF1ZXN0 IHRvIHRoZSBoYXJkd2FyZSBxdWV1ZSAoZS5nLiBkaXJlY3RseSBpbnRvCkBAIC0zMDEsNyArMzAy LDcgQEAgc3RydWN0IGludGVsX2VuZ2luZV9jcyB7CiAJCS8qIEFLQSB3YWl0KCkgKi8KIAkJaW50 CSgqc3luY190bykoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsCiAJCQkJICAgc3Ry dWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpzaWduYWwpOwotCQlpbnQJKCpzaWduYWwpKHN0cnVj dCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxKTsKKwkJdTMyCSooKnNpZ25hbCkoc3RydWN0IGRy bV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsIHUzMiAqb3V0KTsKIAl9IHNlbWFwaG9yZTsKIAogCS8q IEV4ZWNsaXN0cyAqLwpAQCAtNDYzLDEwICs0NjQsMTEgQEAgc3RhdGljIGlubGluZSB2b2lkIGlu dGVsX3JpbmdfYWR2YW5jZShzdHJ1Y3QgaW50ZWxfcmluZyAqcmluZykKIAkgKi8KIH0KIAotc3Rh dGljIGlubGluZSB1MzIgaW50ZWxfcmluZ19vZmZzZXQoc3RydWN0IGludGVsX3JpbmcgKnJpbmcs IHUzMiB2YWx1ZSkKK3N0YXRpYyBpbmxpbmUgdTMyIGludGVsX3Jpbmdfb2Zmc2V0KHN0cnVjdCBp bnRlbF9yaW5nICpyaW5nLCB2b2lkICphZGRyKQogewogCS8qIERvbid0IHdyaXRlIHJpbmctPnNp emUgKGVxdWl2YWxlbnQgdG8gMCkgYXMgdGhhdCBoYW5ncyBzb21lIEdQVXMuICovCi0JcmV0dXJu IHZhbHVlICYgKHJpbmctPnNpemUgLSAxKTsKKwl1MzIgb2Zmc2V0ID0gYWRkciAtIHJpbmctPnZh ZGRyOworCXJldHVybiBvZmZzZXQgJiAocmluZy0+c2l6ZSAtIDEpOwogfQogCiBpbnQgX19pbnRl bF9yaW5nX3NwYWNlKGludCBoZWFkLCBpbnQgdGFpbCwgaW50IHNpemUpOwotLSAKMi45LjMKCl9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBt YWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3Rz LmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=