From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH 32/38] drm/i915: Defer request emission Date: Tue, 20 Sep 2016 09:30:06 +0100 Message-ID: <20160920083012.2754-33-chris@chris-wilson.co.uk> References: <20160920083012.2754-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 17A5D89F3B for ; Tue, 20 Sep 2016 08:30:56 +0000 (UTC) Received: by mail-wm0-x244.google.com with SMTP id l132so2075192wmf.1 for ; Tue, 20 Sep 2016 01:30:56 -0700 (PDT) In-Reply-To: <20160920083012.2754-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 Cc: mika.kuoppala@intel.com List-Id: intel-gfx@lists.freedesktop.org TW92ZSB0aGUgYWN0dWFsIGVtaXNzaW9uIG9mIHRoZSByZXF1ZXN0ICh0aGUgY2xvc2luZyBicmVh ZGNydW1iKSBmcm9tCmk5MTVfYWRkX3JlcXVlc3QoKSB0byB0aGUgc3VibWl0IGNhbGxiYWNrLiAo SXQgY2FuIGJlIG1vdmVkIGxhdGVyIHdoZW4KcmVxdWlyZWQuKSBUaGlzIGFsbG93cyB1cyB0byBk ZWZlciB0aGUgYWxsb2NhdGlvbiBvZiB0aGUgZ2xvYmFsX3NlcW5vCmZyb20gcmVxdWVzdCBjb25z dHJ1Y3Rpb24gdG8gYWN0dWFsIHN1Ym1pc3Npb24sIGFsbG93aW5nIHVzIHRvIGVtaXQgdGhlCnJl cXVlc3RzIG91dCBvZiBvcmRlciAod3J0IHRvIHRoZSBvcmRlciBvZiB0aGVpciBjb25zdHJ1Y3Rp b24sIHRoZXkKc3RpbGwgd2lsbCBvbmx5IGJlIGV4ZWN1dGVkIG9uZSBhbGwgb2YgdGhlaXIgZGVw ZW5kZW5jaWVzIGFyZSByZXNvbHZlZAppbmNsdWRpbmcgdGhhdCBhbGwgZWFybGllciByZXF1ZXN0 cyBvbiB0aGVpciB0aW1lbGluZSBoYXZlIGJlZW4Kc3VibWl0dGVkLikgV2UgaGF2ZSB0byBzcGVj aWFsaXNlIGhvdyB3ZSB0aGVuIGVtaXQgdGhlIHJlcXVlc3QgaW4gb3JkZXIKdG8gd3JpdGUgaW50 byB0aGUgcHJlYWxsb2NhdGVkIHNwYWNlLCByYXRoZXIgdGhhbiBhdCB0aGUgdGFpbCBvZiB0aGUK cmluZ2J1ZmZlciAod2hpY2ggd2lsbCBoYXZlIGJlZW4gYWR2YW5jZWQgYnkgdGhlIGFkZGl0aW9u IG9mIG5ldwpyZXF1ZXN0cykuCgpTaWduZWQtb2ZmLWJ5OiBDaHJpcyBXaWxzb24gPGNocmlzQGNo cmlzLXdpbHNvbi5jby51az4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9yZXF1 ZXN0LmMgfCAgMjYgKystLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jICAgICAg ICB8IDEyMCArKysrKysrKy0tLS0tLS0tLS0tLS0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfcmluZ2J1ZmZlci5jIHwgMTY4ICsrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmggfCAgMTAgKy0KIDQgZmlsZXMg Y2hhbmdlZCwgMTExIGluc2VydGlvbnMoKyksIDIxMyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9yZXF1ZXN0LmMgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2dlbV9yZXF1ZXN0LmMKaW5kZXggYzZjMzFhYWI5ZTM4Li5jMzFjYjdjNGE2 MWYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3JlcXVlc3QuYwor KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9yZXF1ZXN0LmMKQEAgLTYzMiw5ICs2 MzIsNyBAQCB2b2lkIF9faTkxNV9hZGRfcmVxdWVzdChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVl c3QgKnJlcXVlc3QsIGJvb2wgZmx1c2hfY2FjaGVzKQogCXN0cnVjdCBpbnRlbF9yaW5nICpyaW5n ID0gcmVxdWVzdC0+cmluZzsKIAlzdHJ1Y3QgaW50ZWxfdGltZWxpbmUgKnRpbWVsaW5lID0gcmVx dWVzdC0+dGltZWxpbmU7CiAJc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpwcmV2OwotCXUz MiByZXF1ZXN0X3N0YXJ0OwotCXUzMiByZXNlcnZlZF90YWlsOwotCWludCByZXQ7CisJaW50IGVy cjsKIAogCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJnJlcXVlc3QtPmk5MTUtPmRybS5zdHJ1Y3RfbXV0 ZXgpOwogCXRyYWNlX2k5MTVfZ2VtX3JlcXVlc3RfYWRkKHJlcXVlc3QpOwpAQCAtNjQ0LDggKzY0 Miw2IEBAIHZvaWQgX19pOTE1X2FkZF9yZXF1ZXN0KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVz dCAqcmVxdWVzdCwgYm9vbCBmbHVzaF9jYWNoZXMpCiAJICogc2hvdWxkIGFscmVhZHkgaGF2ZSBi ZWVuIHJlc2VydmVkIGluIHRoZSByaW5nIGJ1ZmZlci4gTGV0IHRoZSByaW5nCiAJICoga25vdyB0 aGF0IGl0IGlzIHRpbWUgdG8gdXNlIHRoYXQgc3BhY2UgdXAuCiAJICovCi0JcmVxdWVzdF9zdGFy dCA9IHJpbmctPnRhaWw7Ci0JcmVzZXJ2ZWRfdGFpbCA9IHJlcXVlc3QtPnJlc2VydmVkX3NwYWNl OwogCXJlcXVlc3QtPnJlc2VydmVkX3NwYWNlID0gMDsKIAogCS8qCkBAIC02NTYsMTAgKzY1Miwx MCBAQCB2b2lkIF9faTkxNV9hZGRfcmVxdWVzdChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3Qg KnJlcXVlc3QsIGJvb2wgZmx1c2hfY2FjaGVzKQogCSAqIHdoYXQuCiAJICovCiAJaWYgKGZsdXNo X2NhY2hlcykgewotCQlyZXQgPSBlbmdpbmUtPmVtaXRfZmx1c2gocmVxdWVzdCwgRU1JVF9GTFVT SCk7CisJCWVyciA9IGVuZ2luZS0+ZW1pdF9mbHVzaChyZXF1ZXN0LCBFTUlUX0ZMVVNIKTsKIAog CQkvKiBOb3QgYWxsb3dlZCB0byBmYWlsISAqLwotCQlXQVJOKHJldCwgImVuZ2luZS0+ZW1pdF9m bHVzaCgpIGZhaWxlZDogJWQhXG4iLCByZXQpOworCQlXQVJOKGVyciwgImVuZ2luZS0+ZW1pdF9m bHVzaCgpIGZhaWxlZDogJWQhXG4iLCBlcnIpOwogCX0KIAogCS8qIFJlY29yZCB0aGUgcG9zaXRp b24gb2YgdGhlIHN0YXJ0IG9mIHRoZSBicmVhZGNydW1iIHNvIHRoYXQKQEAgLTY2NywyMCArNjYz LDEyIEBAIHZvaWQgX19pOTE1X2FkZF9yZXF1ZXN0KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVz dCAqcmVxdWVzdCwgYm9vbCBmbHVzaF9jYWNoZXMpCiAJICogR1BVIHByb2Nlc3NpbmcgdGhlIHJl cXVlc3QsIHdlIG5ldmVyIG92ZXItZXN0aW1hdGUgdGhlCiAJICogcG9zaXRpb24gb2YgdGhlIHJp bmcncyBIRUFELgogCSAqLworCWVyciA9IGludGVsX3JpbmdfYmVnaW4ocmVxdWVzdCwgZW5naW5l LT5lbWl0X3JlcXVlc3Rfc3opOworCUdFTV9CVUdfT04oZXJyKTsKIAlyZXF1ZXN0LT5wb3N0Zml4 ID0gcmluZy0+dGFpbDsKIAotCS8qIE5vdCBhbGxvd2VkIHRvIGZhaWwhICovCi0JcmV0ID0gZW5n aW5lLT5lbWl0X3JlcXVlc3QocmVxdWVzdCk7Ci0JV0FSTihyZXQsICIoJXMpLT5lbWl0X3JlcXVl c3QgZmFpbGVkOiAlZCFcbiIsIGVuZ2luZS0+bmFtZSwgcmV0KTsKLQotCS8qIFNhbml0eSBjaGVj ayB0aGF0IHRoZSByZXNlcnZlZCBzaXplIHdhcyBsYXJnZSBlbm91Z2guICovCi0JcmV0ID0gcmlu Zy0+dGFpbCAtIHJlcXVlc3Rfc3RhcnQ7Ci0JaWYgKHJldCA8IDApCi0JCXJldCArPSByaW5nLT5z aXplOwotCVdBUk5fT05DRShyZXQgPiByZXNlcnZlZF90YWlsLAotCQkgICJOb3QgZW5vdWdoIHNw YWNlIHJlc2VydmVkICglZCBieXRlcykgIgotCQkgICJmb3IgYWRkaW5nIHRoZSByZXF1ZXN0ICgl ZCBieXRlcylcbiIsCi0JCSAgcmVzZXJ2ZWRfdGFpbCwgcmV0KTsKKwllbmdpbmUtPmVtaXRfcmVx dWVzdChyZXF1ZXN0LCByZXF1ZXN0LT5yaW5nLT52YWRkciArIHJlcXVlc3QtPnBvc3RmaXgpOwor CXJpbmctPnRhaWwgKz0gZW5naW5lLT5lbWl0X3JlcXVlc3Rfc3ogKiBzaXplb2YodTMyKTsKIAog CS8qIFNlYWwgdGhlIHJlcXVlc3QgYW5kIG1hcmsgaXQgYXMgcGVuZGluZyBleGVjdXRpb24uIE5v dGUgdGhhdAogCSAqIHdlIG1heSBpbnNwZWN0IHRoaXMgc3RhdGUsIHdpdGhvdXQgaG9sZGluZyBh bnkgbG9ja3MsIGR1cmluZwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf bHJjLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYwppbmRleCA4N2U2YmY0Mzky ZmQuLmZmYmI0ZGE2Y2Y5NSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf bHJjLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKQEAgLTM2MCw3ICsz NjAsNyBAQCBzdGF0aWMgdTY0IGV4ZWNsaXN0c191cGRhdGVfY29udGV4dChzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX3JlcXVlc3QgKnJxKQogCXN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpwcGd0dCA9IHJxLT5j dHgtPnBwZ3R0OwogCXUzMiAqcmVnX3N0YXRlID0gY2UtPmxyY19yZWdfc3RhdGU7CiAKLQlyZWdf c3RhdGVbQ1RYX1JJTkdfVEFJTCsxXSA9IGludGVsX3Jpbmdfb2Zmc2V0KHJxLT5yaW5nLCBycS0+ dGFpbCk7CisJcmVnX3N0YXRlW0NUWF9SSU5HX1RBSUwrMV0gPSBycS0+dGFpbDsKIAogCS8qIFRy dWUgMzJiIFBQR1RUIHdpdGggZHluYW1pYyBwYWdlIGFsbG9jYXRpb246IHVwZGF0ZSBQRFAKIAkg KiByZWdpc3RlcnMgYW5kIHBvaW50IHRoZSB1bmFsbG9jYXRlZCBQRFBzIHRvIHNjcmF0Y2ggcGFn ZS4KQEAgLTU5NCw2ICs1OTQsMTUgQEAgc3RhdGljIHZvaWQgZXhlY2xpc3RzX3N1Ym1pdF9yZXF1 ZXN0KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxdWVzdCkKIAogCXNwaW5fbG9ja19p cnFzYXZlKCZlbmdpbmUtPmV4ZWNsaXN0X2xvY2ssIGZsYWdzKTsKIAorCS8qIFdlIGtlZXAgdGhl IHByZXZpb3VzIGNvbnRleHQgYWxpdmUgdW50aWwgd2UgcmV0aXJlIHRoZSBmb2xsb3dpbmcKKwkg KiByZXF1ZXN0LiBUaGlzIGVuc3VyZXMgdGhhdCBhbnkgdGhlIGNvbnRleHQgb2JqZWN0IGlzIHN0 aWxsIHBpbm5lZAorCSAqIGZvciBhbnkgcmVzaWR1YWwgd3JpdGVzIHRoZSBIVyBtYWtlcyBpbnRv IGl0IG9uIHRoZSBjb250ZXh0IHN3aXRjaAorCSAqIGludG8gdGhlIG5leHQgb2JqZWN0IGZvbGxv d2luZyB0aGUgYnJlYWRjcnVtYi4gT3RoZXJ3aXNlLCB3ZSBtYXkKKwkgKiByZXRpcmUgdGhlIGNv bnRleHQgdG9vIGVhcmx5LgorCSAqLworCXJlcXVlc3QtPnByZXZpb3VzX2NvbnRleHQgPSBlbmdp bmUtPmxhc3RfY29udGV4dDsKKwllbmdpbmUtPmxhc3RfY29udGV4dCA9IHJlcXVlc3QtPmN0eDsK KwogCWxpc3RfYWRkX3RhaWwoJnJlcXVlc3QtPmV4ZWNsaXN0X2xpbmssICZlbmdpbmUtPmV4ZWNs aXN0X3F1ZXVlKTsKIAlpZiAoZXhlY2xpc3RzX2Vsc3BfaWRsZShlbmdpbmUpKQogCQl0YXNrbGV0 X2hpX3NjaGVkdWxlKCZlbmdpbmUtPmlycV90YXNrbGV0KTsKQEAgLTY2Myw0NiArNjcyLDYgQEAg ZXJyX3VucGluOgogCXJldHVybiByZXQ7CiB9CiAKLS8qCi0gKiBpbnRlbF9sb2dpY2FsX3Jpbmdf YWR2YW5jZSgpIC0gYWR2YW5jZSB0aGUgdGFpbCBhbmQgcHJlcGFyZSBmb3Igc3VibWlzc2lvbgot ICogQHJlcXVlc3Q6IFJlcXVlc3QgdG8gYWR2YW5jZSB0aGUgbG9naWNhbCByaW5nYnVmZmVyIG9m LgotICoKLSAqIFRoZSB0YWlsIGlzIHVwZGF0ZWQgaW4gb3VyIGxvZ2ljYWwgcmluZ2J1ZmZlciBz dHJ1Y3QsIG5vdCBpbiB0aGUgYWN0dWFsIGNvbnRleHQuIFdoYXQKLSAqIHJlYWxseSBoYXBwZW5z IGR1cmluZyBzdWJtaXNzaW9uIGlzIHRoYXQgdGhlIGNvbnRleHQgYW5kIGN1cnJlbnQgdGFpbCB3 aWxsIGJlIHBsYWNlZAotICogb24gYSBxdWV1ZSB3YWl0aW5nIGZvciB0aGUgRUxTUCB0byBiZSBy ZWFkeSB0byBhY2NlcHQgYSBuZXcgY29udGV4dCBzdWJtaXNzaW9uLiBBdCB0aGF0Ci0gKiBwb2lu dCwgdGhlIHRhaWwgKmluc2lkZSogdGhlIGNvbnRleHQgaXMgdXBkYXRlZCBhbmQgdGhlIEVMU1Ag d3JpdHRlbiB0by4KLSAqLwotc3RhdGljIGludAotaW50ZWxfbG9naWNhbF9yaW5nX2FkdmFuY2Uo c3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXF1ZXN0KQotewotCXN0cnVjdCBpbnRlbF9y aW5nICpyaW5nID0gcmVxdWVzdC0+cmluZzsKLQlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdp bmUgPSByZXF1ZXN0LT5lbmdpbmU7Ci0KLQlpbnRlbF9yaW5nX2FkdmFuY2UocmluZyk7Ci0JcmVx dWVzdC0+dGFpbCA9IHJpbmctPnRhaWw7Ci0KLQkvKgotCSAqIEhlcmUgd2UgYWRkIHR3byBleHRy YSBOT09QcyBhcyBwYWRkaW5nIHRvIGF2b2lkCi0JICogbGl0ZSByZXN0b3JlIG9mIGEgY29udGV4 dCB3aXRoIEhFQUQ9PVRBSUwuCi0JICoKLQkgKiBDYWxsZXIgbXVzdCByZXNlcnZlIFdBX1RBSUxf RFdPUkRTIGZvciB1cyEKLQkgKi8KLQlpbnRlbF9yaW5nX2VtaXQocmluZywgTUlfTk9PUCk7Ci0J aW50ZWxfcmluZ19lbWl0KHJpbmcsIE1JX05PT1ApOwotCWludGVsX3JpbmdfYWR2YW5jZShyaW5n KTsKLQlyZXF1ZXN0LT53YV90YWlsID0gcmluZy0+dGFpbDsKLQotCS8qIFdlIGtlZXAgdGhlIHBy ZXZpb3VzIGNvbnRleHQgYWxpdmUgdW50aWwgd2UgcmV0aXJlIHRoZSBmb2xsb3dpbmcKLQkgKiBy ZXF1ZXN0LiBUaGlzIGVuc3VyZXMgdGhhdCBhbnkgdGhlIGNvbnRleHQgb2JqZWN0IGlzIHN0aWxs IHBpbm5lZAotCSAqIGZvciBhbnkgcmVzaWR1YWwgd3JpdGVzIHRoZSBIVyBtYWtlcyBpbnRvIGl0 IG9uIHRoZSBjb250ZXh0IHN3aXRjaAotCSAqIGludG8gdGhlIG5leHQgb2JqZWN0IGZvbGxvd2lu ZyB0aGUgYnJlYWRjcnVtYi4gT3RoZXJ3aXNlLCB3ZSBtYXkKLQkgKiByZXRpcmUgdGhlIGNvbnRl eHQgdG9vIGVhcmx5LgotCSAqLwotCXJlcXVlc3QtPnByZXZpb3VzX2NvbnRleHQgPSBlbmdpbmUt Pmxhc3RfY29udGV4dDsKLQllbmdpbmUtPmxhc3RfY29udGV4dCA9IHJlcXVlc3QtPmN0eDsKLQly ZXR1cm4gMDsKLX0KLQogc3RhdGljIGludCBpbnRlbF9scl9jb250ZXh0X3BpbihzdHJ1Y3QgaTkx NV9nZW1fY29udGV4dCAqY3R4LAogCQkJCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkK IHsKQEAgLTE1NDgsNDEgKzE1MTcsMzUgQEAgc3RhdGljIHZvaWQgYnh0X2Ffc2Vxbm9fYmFycmll cihzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiAgKiByZXN0b3JlIHdpdGggSEVBRD09 VEFJTCAoV2FJZGxlTGl0ZVJlc3RvcmUpLgogICovCiAjZGVmaW5lIFdBX1RBSUxfRFdPUkRTIDIK LQotc3RhdGljIGludCBnZW44X2VtaXRfcmVxdWVzdChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVl c3QgKnJlcXVlc3QpCitzdGF0aWMgdm9pZCBnZW44X2VtaXRfd2FfdGFpbChzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX3JlcXVlc3QgKnJlcXVlc3QsIHUzMiAqb3V0KQogewotCXN0cnVjdCBpbnRlbF9yaW5n ICpyaW5nID0gcmVxdWVzdC0+cmluZzsKLQlpbnQgcmV0OwotCi0JcmV0ID0gaW50ZWxfcmluZ19i ZWdpbihyZXF1ZXN0LCA2ICsgV0FfVEFJTF9EV09SRFMpOwotCWlmIChyZXQpCi0JCXJldHVybiBy ZXQ7CisJKm91dCsrID0gTUlfTk9PUDsKKwkqb3V0KysgPSBNSV9OT09QOworCXJlcXVlc3QtPndh X3RhaWwgPSBpbnRlbF9yaW5nX29mZnNldChyZXF1ZXN0LT5yaW5nLCBvdXQpOworfQogCitzdGF0 aWMgdm9pZCBnZW44X2VtaXRfcmVxdWVzdChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJl cXVlc3QsCisJCQkgICAgICB1MzIgKm91dCkKK3sKIAkvKiB3L2E6IGJpdCA1IG5lZWRzIHRvIGJl IHplcm8gZm9yIE1JX0ZMVVNIX0RXIGFkZHJlc3MuICovCiAJQlVJTERfQlVHX09OKEk5MTVfR0VN X0hXU19JTkRFWF9BRERSICYgKDEgPDwgNSkpOwogCi0JaW50ZWxfcmluZ19lbWl0KHJpbmcsIChN SV9GTFVTSF9EVyArIDEpIHwgTUlfRkxVU0hfRFdfT1BfU1RPUkVEVyk7Ci0JaW50ZWxfcmluZ19l bWl0KHJpbmcsCi0JCQlpbnRlbF9od3Nfc2Vxbm9fYWRkcmVzcyhyZXF1ZXN0LT5lbmdpbmUpIHwK LQkJCU1JX0ZMVVNIX0RXX1VTRV9HVFQpOwotCWludGVsX3JpbmdfZW1pdChyaW5nLCAwKTsKLQlp bnRlbF9yaW5nX2VtaXQocmluZywgcmVxdWVzdC0+Z2xvYmFsX3NlcW5vKTsKLQlpbnRlbF9yaW5n X2VtaXQocmluZywgTUlfVVNFUl9JTlRFUlJVUFQpOwotCWludGVsX3JpbmdfZW1pdChyaW5nLCBN SV9OT09QKTsKLQlyZXR1cm4gaW50ZWxfbG9naWNhbF9yaW5nX2FkdmFuY2UocmVxdWVzdCk7CisJ Km91dCsrID0gKE1JX0ZMVVNIX0RXICsgMSkgfCBNSV9GTFVTSF9EV19PUF9TVE9SRURXOworCSpv dXQrKyA9IGludGVsX2h3c19zZXFub19hZGRyZXNzKHJlcXVlc3QtPmVuZ2luZSkgfCBNSV9GTFVT SF9EV19VU0VfR1RUOworCSpvdXQrKyA9IDA7CisJKm91dCsrID0gcmVxdWVzdC0+Z2xvYmFsX3Nl cW5vOworCSpvdXQrKyA9IE1JX1VTRVJfSU5URVJSVVBUOworCSpvdXQrKyA9IE1JX05PT1A7CisJ cmVxdWVzdC0+dGFpbCA9IGludGVsX3Jpbmdfb2Zmc2V0KHJlcXVlc3QtPnJpbmcsIG91dCk7CisK KwlnZW44X2VtaXRfd2FfdGFpbChyZXF1ZXN0LCBvdXQpOwogfQogCiBzdGF0aWMgY29uc3QgaW50 IGdlbjhfZW1pdF9yZXF1ZXN0X3N6ID0gNiArIFdBX1RBSUxfRFdPUkRTOwogCi1zdGF0aWMgaW50 IGdlbjhfZW1pdF9yZXF1ZXN0X3JlbmRlcihzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJl cXVlc3QpCitzdGF0aWMgdm9pZCBnZW44X2VtaXRfcmVxdWVzdF9yZW5kZXIoc3RydWN0IGRybV9p OTE1X2dlbV9yZXF1ZXN0ICpyZXF1ZXN0LAorCQkJCSAgICAgdTMyICpvdXQpCiB7Ci0Jc3RydWN0 IGludGVsX3JpbmcgKnJpbmcgPSByZXF1ZXN0LT5yaW5nOwotCWludCByZXQ7Ci0KLQlyZXQgPSBp bnRlbF9yaW5nX2JlZ2luKHJlcXVlc3QsIDggKyBXQV9UQUlMX0RXT1JEUyk7Ci0JaWYgKHJldCkK LQkJcmV0dXJuIHJldDsKLQogCS8qIFdlJ3JlIHVzaW5nIHF3b3JkIHdyaXRlLCBzZXFubyBzaG91 bGQgYmUgYWxpZ25lZCB0byA4IGJ5dGVzLiAqLwogCUJVSUxEX0JVR19PTihJOTE1X0dFTV9IV1Nf SU5ERVggJiAxKTsKIApAQCAtMTU5MCwxOSArMTU1MywyMCBAQCBzdGF0aWMgaW50IGdlbjhfZW1p dF9yZXF1ZXN0X3JlbmRlcihzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcXVlc3QpCiAJ ICogbmVlZCBhIHByaW9yIENTX1NUQUxMLCB3aGljaCBpcyBlbWl0dGVkIGJ5IHRoZSBmbHVzaAog CSAqIGZvbGxvd2luZyB0aGUgYmF0Y2guCiAJICovCi0JaW50ZWxfcmluZ19lbWl0KHJpbmcsIEdG WF9PUF9QSVBFX0NPTlRST0woNikpOwotCWludGVsX3JpbmdfZW1pdChyaW5nLAotCQkJKFBJUEVf Q09OVFJPTF9HTE9CQUxfR1RUX0lWQiB8Ci0JCQkgUElQRV9DT05UUk9MX0NTX1NUQUxMIHwKLQkJ CSBQSVBFX0NPTlRST0xfUVdfV1JJVEUpKTsKLQlpbnRlbF9yaW5nX2VtaXQocmluZywgaW50ZWxf aHdzX3NlcW5vX2FkZHJlc3MocmVxdWVzdC0+ZW5naW5lKSk7Ci0JaW50ZWxfcmluZ19lbWl0KHJp bmcsIDApOwotCWludGVsX3JpbmdfZW1pdChyaW5nLCByZXF1ZXN0LT5nbG9iYWxfc2Vxbm8pOwor CSpvdXQrKyA9IEdGWF9PUF9QSVBFX0NPTlRST0woNik7CisJKm91dCsrID0gKFBJUEVfQ09OVFJP TF9HTE9CQUxfR1RUX0lWQiB8CisJCSAgUElQRV9DT05UUk9MX0NTX1NUQUxMIHwKKwkJICBQSVBF X0NPTlRST0xfUVdfV1JJVEUpOworCSpvdXQrKyA9IGludGVsX2h3c19zZXFub19hZGRyZXNzKHJl cXVlc3QtPmVuZ2luZSk7CisJKm91dCsrID0gMDsKKwkqb3V0KysgPSByZXF1ZXN0LT5nbG9iYWxf c2Vxbm87CiAJLyogV2UncmUgdGhyYXNoaW5nIG9uZSBkd29yZCBvZiBIV1MuICovCi0JaW50ZWxf cmluZ19lbWl0KHJpbmcsIDApOwotCWludGVsX3JpbmdfZW1pdChyaW5nLCBNSV9VU0VSX0lOVEVS UlVQVCk7Ci0JaW50ZWxfcmluZ19lbWl0KHJpbmcsIE1JX05PT1ApOwotCXJldHVybiBpbnRlbF9s b2dpY2FsX3JpbmdfYWR2YW5jZShyZXF1ZXN0KTsKKwkqb3V0KysgPSAwOworCSpvdXQrKyA9IE1J X1VTRVJfSU5URVJSVVBUOworCSpvdXQrKyA9IE1JX05PT1A7CisJcmVxdWVzdC0+dGFpbCA9IGlu dGVsX3Jpbmdfb2Zmc2V0KHJlcXVlc3QtPnJpbmcsIG91dCk7CisKKwlnZW44X2VtaXRfd2FfdGFp bChyZXF1ZXN0LCBvdXQpOwogfQogCiBzdGF0aWMgY29uc3QgaW50IGdlbjhfZW1pdF9yZXF1ZXN0 X3JlbmRlcl9zeiA9IDggKyBXQV9UQUlMX0RXT1JEUzsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X3JpbmdidWZmZXIuYwppbmRleCA1NjkxNWMxYTliN2QuLmMyYzM5ZGM1NTVlYSAxMDA2NDQKLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuYwpAQCAtMTI3MSw4OSArMTI3MSw2MSBAQCBz dGF0aWMgdm9pZCByZW5kZXJfcmluZ19jbGVhbnVwKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVu Z2luZSkKIAlpOTE1X3ZtYV91bnBpbl9hbmRfcmVsZWFzZSgmZGV2X3ByaXYtPnNlbWFwaG9yZSk7 CiB9CiAKLXN0YXRpYyBpbnQgZ2VuOF9yY3Nfc2lnbmFsKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVx dWVzdCAqcmVxKQorc3RhdGljIHUzMiAqZ2VuOF9yY3Nfc2lnbmFsKHN0cnVjdCBkcm1faTkxNV9n ZW1fcmVxdWVzdCAqcmVxLCB1MzIgKm91dCkKIHsKLQlzdHJ1Y3QgaW50ZWxfcmluZyAqcmluZyA9 IHJlcS0+cmluZzsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSByZXEtPmk5 MTU7CiAJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqd2FpdGVyOwogCWVudW0gaW50ZWxfZW5naW5l X2lkIGlkOwotCWludCByZXQsIG51bV9yaW5nczsKLQotCW51bV9yaW5ncyA9IElOVEVMX0lORk8o ZGV2X3ByaXYpLT5udW1fcmluZ3M7Ci0JcmV0ID0gaW50ZWxfcmluZ19iZWdpbihyZXEsIChudW1f cmluZ3MtMSkgKiA4KTsKLQlpZiAocmV0KQotCQlyZXR1cm4gcmV0OwogCiAJZm9yX2VhY2hfZW5n aW5lX2lkKHdhaXRlciwgZGV2X3ByaXYsIGlkKSB7CiAJCXU2NCBndHRfb2Zmc2V0ID0gcmVxLT5l bmdpbmUtPnNlbWFwaG9yZS5zaWduYWxfZ2d0dFtpZF07CiAJCWlmIChndHRfb2Zmc2V0ID09IE1J X1NFTUFQSE9SRV9TWU5DX0lOVkFMSUQpCiAJCQljb250aW51ZTsKIAotCQlpbnRlbF9yaW5nX2Vt aXQocmluZywgR0ZYX09QX1BJUEVfQ09OVFJPTCg2KSk7Ci0JCWludGVsX3JpbmdfZW1pdChyaW5n LAotCQkJCVBJUEVfQ09OVFJPTF9HTE9CQUxfR1RUX0lWQiB8Ci0JCQkJUElQRV9DT05UUk9MX1FX X1dSSVRFIHwKLQkJCQlQSVBFX0NPTlRST0xfQ1NfU1RBTEwpOwotCQlpbnRlbF9yaW5nX2VtaXQo cmluZywgbG93ZXJfMzJfYml0cyhndHRfb2Zmc2V0KSk7Ci0JCWludGVsX3JpbmdfZW1pdChyaW5n LCB1cHBlcl8zMl9iaXRzKGd0dF9vZmZzZXQpKTsKLQkJaW50ZWxfcmluZ19lbWl0KHJpbmcsIHJl cS0+Z2xvYmFsX3NlcW5vKTsKLQkJaW50ZWxfcmluZ19lbWl0KHJpbmcsIDApOwotCQlpbnRlbF9y aW5nX2VtaXQocmluZywKLQkJCQlNSV9TRU1BUEhPUkVfU0lHTkFMIHwKLQkJCQlNSV9TRU1BUEhP UkVfVEFSR0VUKHdhaXRlci0+aHdfaWQpKTsKLQkJaW50ZWxfcmluZ19lbWl0KHJpbmcsIDApOwor CQkqb3V0KysgPSBHRlhfT1BfUElQRV9DT05UUk9MKDYpOworCQkqb3V0KysgPSAoUElQRV9DT05U Uk9MX0dMT0JBTF9HVFRfSVZCIHwKKwkJCSAgUElQRV9DT05UUk9MX1FXX1dSSVRFIHwKKwkJCSAg UElQRV9DT05UUk9MX0NTX1NUQUxMKTsKKwkJKm91dCsrID0gbG93ZXJfMzJfYml0cyhndHRfb2Zm c2V0KTsKKwkJKm91dCsrID0gdXBwZXJfMzJfYml0cyhndHRfb2Zmc2V0KTsKKwkJKm91dCsrID0g cmVxLT5nbG9iYWxfc2Vxbm87CisJCSpvdXQrKyA9IDA7CisJCSpvdXQrKyA9IChNSV9TRU1BUEhP UkVfU0lHTkFMIHwKKwkJCSAgTUlfU0VNQVBIT1JFX1RBUkdFVCh3YWl0ZXItPmh3X2lkKSk7CisJ CSpvdXQrKyA9IDA7CiAJfQotCWludGVsX3JpbmdfYWR2YW5jZShyaW5nKTsKIAotCXJldHVybiAw OworCXJldHVybiBvdXQ7CiB9CiAKLXN0YXRpYyBpbnQgZ2VuOF94Y3Nfc2lnbmFsKHN0cnVjdCBk cm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxKQorc3RhdGljIHUzMiAqZ2VuOF94Y3Nfc2lnbmFsKHN0 cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLCB1MzIgKm91dCkKIHsKLQlzdHJ1Y3QgaW50 ZWxfcmluZyAqcmluZyA9IHJlcS0+cmluZzsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYgPSByZXEtPmk5MTU7CiAJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqd2FpdGVyOwogCWVu dW0gaW50ZWxfZW5naW5lX2lkIGlkOwotCWludCByZXQsIG51bV9yaW5nczsKLQotCW51bV9yaW5n cyA9IElOVEVMX0lORk8oZGV2X3ByaXYpLT5udW1fcmluZ3M7Ci0JcmV0ID0gaW50ZWxfcmluZ19i ZWdpbihyZXEsIChudW1fcmluZ3MtMSkgKiA2KTsKLQlpZiAocmV0KQotCQlyZXR1cm4gcmV0Owog CiAJZm9yX2VhY2hfZW5naW5lX2lkKHdhaXRlciwgZGV2X3ByaXYsIGlkKSB7CiAJCXU2NCBndHRf b2Zmc2V0ID0gcmVxLT5lbmdpbmUtPnNlbWFwaG9yZS5zaWduYWxfZ2d0dFtpZF07CiAJCWlmIChn dHRfb2Zmc2V0ID09IE1JX1NFTUFQSE9SRV9TWU5DX0lOVkFMSUQpCiAJCQljb250aW51ZTsKIAot CQlpbnRlbF9yaW5nX2VtaXQocmluZywKLQkJCQkoTUlfRkxVU0hfRFcgKyAxKSB8IE1JX0ZMVVNI X0RXX09QX1NUT1JFRFcpOwotCQlpbnRlbF9yaW5nX2VtaXQocmluZywKLQkJCQlsb3dlcl8zMl9i aXRzKGd0dF9vZmZzZXQpIHwKLQkJCQlNSV9GTFVTSF9EV19VU0VfR1RUKTsKLQkJaW50ZWxfcmlu Z19lbWl0KHJpbmcsIHVwcGVyXzMyX2JpdHMoZ3R0X29mZnNldCkpOwotCQlpbnRlbF9yaW5nX2Vt aXQocmluZywgcmVxLT5nbG9iYWxfc2Vxbm8pOwotCQlpbnRlbF9yaW5nX2VtaXQocmluZywKLQkJ CQlNSV9TRU1BUEhPUkVfU0lHTkFMIHwKLQkJCQlNSV9TRU1BUEhPUkVfVEFSR0VUKHdhaXRlci0+ aHdfaWQpKTsKLQkJaW50ZWxfcmluZ19lbWl0KHJpbmcsIDApOworCQkqb3V0KysgPSAoTUlfRkxV U0hfRFcgKyAxKSB8IE1JX0ZMVVNIX0RXX09QX1NUT1JFRFc7CisJCSpvdXQrKyA9IGxvd2VyXzMy X2JpdHMoZ3R0X29mZnNldCkgfCBNSV9GTFVTSF9EV19VU0VfR1RUOworCQkqb3V0KysgPSB1cHBl cl8zMl9iaXRzKGd0dF9vZmZzZXQpOworCQkqb3V0KysgPSByZXEtPmdsb2JhbF9zZXFubzsKKwkJ Km91dCsrID0gKE1JX1NFTUFQSE9SRV9TSUdOQUwgfAorCQkJICBNSV9TRU1BUEhPUkVfVEFSR0VU KHdhaXRlci0+aHdfaWQpKTsKKwkJKm91dCsrID0gMDsKIAl9Ci0JaW50ZWxfcmluZ19hZHZhbmNl KHJpbmcpOwogCi0JcmV0dXJuIDA7CisJcmV0dXJuIG91dDsKIH0KIAotc3RhdGljIGludCBnZW42 X3NpZ25hbChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSkKK3N0YXRpYyB1MzIgKmdl bjZfc2lnbmFsKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLCB1MzIgKm91dCkKIHsK LQlzdHJ1Y3QgaW50ZWxfcmluZyAqcmluZyA9IHJlcS0+cmluZzsKIAlzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYgPSByZXEtPmk5MTU7CiAJc3RydWN0IGludGVsX2VuZ2luZV9jcyAq ZW5naW5lOwotCWludCByZXQsIG51bV9yaW5nczsKLQotCW51bV9yaW5ncyA9IElOVEVMX0lORk8o ZGV2X3ByaXYpLT5udW1fcmluZ3M7Ci0JcmV0ID0gaW50ZWxfcmluZ19iZWdpbihyZXEsIHJvdW5k X3VwKChudW1fcmluZ3MtMSkgKiAzLCAyKSk7Ci0JaWYgKHJldCkKLQkJcmV0dXJuIHJldDsKKwlp bnQgbnVtX3JpbmdzID0gMDsKIAogCWZvcl9lYWNoX2VuZ2luZShlbmdpbmUsIGRldl9wcml2KSB7 CiAJCWk5MTVfcmVnX3QgbWJveF9yZWc7CkBAIC0xMzYzLDQ2ICsxMzM1LDM0IEBAIHN0YXRpYyBp bnQgZ2VuNl9zaWduYWwoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEpCiAKIAkJbWJv eF9yZWcgPSByZXEtPmVuZ2luZS0+c2VtYXBob3JlLm1ib3guc2lnbmFsW2VuZ2luZS0+aHdfaWRd OwogCQlpZiAoaTkxNV9tbWlvX3JlZ192YWxpZChtYm94X3JlZykpIHsKLQkJCWludGVsX3Jpbmdf ZW1pdChyaW5nLCBNSV9MT0FEX1JFR0lTVEVSX0lNTSgxKSk7Ci0JCQlpbnRlbF9yaW5nX2VtaXRf cmVnKHJpbmcsIG1ib3hfcmVnKTsKLQkJCWludGVsX3JpbmdfZW1pdChyaW5nLCByZXEtPmdsb2Jh bF9zZXFubyk7CisJCQkqb3V0KysgPSBNSV9MT0FEX1JFR0lTVEVSX0lNTSgxKTsKKwkJCSpvdXQr KyA9IGk5MTVfbW1pb19yZWdfb2Zmc2V0KG1ib3hfcmVnKTsKKwkJCSpvdXQrKyA9IHJlcS0+Z2xv YmFsX3NlcW5vOworCQkJbnVtX3JpbmdzKys7CiAJCX0KIAl9CisJaWYgKG51bV9yaW5ncyAmIDEp CisJCSpvdXQrKyA9IE1JX05PT1A7CiAKLQkvKiBJZiBudW1fZHdvcmRzIHdhcyByb3VuZGVkLCBt YWtlIHN1cmUgdGhlIHRhaWwgcG9pbnRlciBpcyBjb3JyZWN0ICovCi0JaWYgKG51bV9yaW5ncyAl IDIgPT0gMCkKLQkJaW50ZWxfcmluZ19lbWl0KHJpbmcsIE1JX05PT1ApOwotCWludGVsX3Jpbmdf YWR2YW5jZShyaW5nKTsKLQotCXJldHVybiAwOworCXJldHVybiBvdXQ7CiB9CiAKIHN0YXRpYyB2 b2lkIGk5eHhfc3VibWl0X3JlcXVlc3Qoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXF1 ZXN0KQogewogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHJlcXVlc3QtPmk5 MTU7CiAKLQlJOTE1X1dSSVRFX1RBSUwocmVxdWVzdC0+ZW5naW5lLAotCQkJaW50ZWxfcmluZ19v ZmZzZXQocmVxdWVzdC0+cmluZywgcmVxdWVzdC0+dGFpbCkpOworCUk5MTVfV1JJVEVfVEFJTChy ZXF1ZXN0LT5lbmdpbmUsIHJlcXVlc3QtPnRhaWwpOwogfQogCi1zdGF0aWMgaW50IGk5eHhfZW1p dF9yZXF1ZXN0KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxKQorc3RhdGljIHZvaWQg aTl4eF9lbWl0X3JlcXVlc3Qoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsCisJCQkg ICAgICB1MzIgKm91dCkKIHsKLQlzdHJ1Y3QgaW50ZWxfcmluZyAqcmluZyA9IHJlcS0+cmluZzsK LQlpbnQgcmV0OwotCi0JcmV0ID0gaW50ZWxfcmluZ19iZWdpbihyZXEsIDQpOwotCWlmIChyZXQp Ci0JCXJldHVybiByZXQ7Ci0KLQlpbnRlbF9yaW5nX2VtaXQocmluZywgTUlfU1RPUkVfRFdPUkRf SU5ERVgpOwotCWludGVsX3JpbmdfZW1pdChyaW5nLCBJOTE1X0dFTV9IV1NfSU5ERVggPDwgTUlf U1RPUkVfRFdPUkRfSU5ERVhfU0hJRlQpOwotCWludGVsX3JpbmdfZW1pdChyaW5nLCByZXEtPmds b2JhbF9zZXFubyk7Ci0JaW50ZWxfcmluZ19lbWl0KHJpbmcsIE1JX1VTRVJfSU5URVJSVVBUKTsK LQlpbnRlbF9yaW5nX2FkdmFuY2UocmluZyk7Ci0KLQlyZXEtPnRhaWwgPSByaW5nLT50YWlsOwor CSpvdXQrKyA9IE1JX1NUT1JFX0RXT1JEX0lOREVYOworCSpvdXQrKyA9IEk5MTVfR0VNX0hXU19J TkRFWCA8PCBNSV9TVE9SRV9EV09SRF9JTkRFWF9TSElGVDsKKwkqb3V0KysgPSByZXEtPmdsb2Jh bF9zZXFubzsKKwkqb3V0KysgPSBNSV9VU0VSX0lOVEVSUlVQVDsKIAotCXJldHVybiAwOworCXJl cS0+dGFpbCA9IGludGVsX3Jpbmdfb2Zmc2V0KHJlcS0+cmluZywgb3V0KTsKIH0KIAogc3RhdGlj IGNvbnN0IGludCBpOXh4X2VtaXRfcmVxdWVzdF9zeiA9IDQ7CkBAIC0xNDE1LDQ5ICsxMzc1LDMz IEBAIHN0YXRpYyBjb25zdCBpbnQgaTl4eF9lbWl0X3JlcXVlc3Rfc3ogPSA0OwogICogVXBkYXRl IHRoZSBtYWlsYm94IHJlZ2lzdGVycyBpbiB0aGUgKm90aGVyKiByaW5ncyB3aXRoIHRoZSBjdXJy ZW50IHNlcW5vLgogICogVGhpcyBhY3RzIGxpa2UgYSBzaWduYWwgaW4gdGhlIGNhbm9uaWNhbCBz ZW1hcGhvcmUuCiAgKi8KLXN0YXRpYyBpbnQgZ2VuNl9zZW1hX2VtaXRfcmVxdWVzdChzdHJ1Y3Qg ZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSkKK3N0YXRpYyB2b2lkIGdlbjZfc2VtYV9lbWl0X3Jl cXVlc3Qoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsCisJCQkJICAgdTMyICpvdXQp CiB7Ci0JaW50IHJldDsKLQotCXJldCA9IHJlcS0+ZW5naW5lLT5zZW1hcGhvcmUuc2lnbmFsKHJl cSk7Ci0JaWYgKHJldCkKLQkJcmV0dXJuIHJldDsKLQotCXJldHVybiBpOXh4X2VtaXRfcmVxdWVz dChyZXEpOworCXJldHVybiBpOXh4X2VtaXRfcmVxdWVzdChyZXEsIHJlcS0+ZW5naW5lLT5zZW1h cGhvcmUuc2lnbmFsKHJlcSwgb3V0KSk7CiB9CiAKLXN0YXRpYyBpbnQgZ2VuOF9yZW5kZXJfZW1p dF9yZXF1ZXN0KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxKQorc3RhdGljIHZvaWQg Z2VuOF9yZW5kZXJfZW1pdF9yZXF1ZXN0KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVx LAorCQkJCSAgICAgdTMyICpvdXQpCiB7CiAJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5l ID0gcmVxLT5lbmdpbmU7Ci0Jc3RydWN0IGludGVsX3JpbmcgKnJpbmcgPSByZXEtPnJpbmc7Ci0J aW50IHJldDsKIAotCWlmIChlbmdpbmUtPnNlbWFwaG9yZS5zaWduYWwpIHsKLQkJcmV0ID0gZW5n aW5lLT5zZW1hcGhvcmUuc2lnbmFsKHJlcSk7Ci0JCWlmIChyZXQpCi0JCQlyZXR1cm4gcmV0Owot CX0KLQotCXJldCA9IGludGVsX3JpbmdfYmVnaW4ocmVxLCA4KTsKLQlpZiAocmV0KQotCQlyZXR1 cm4gcmV0OworCWlmIChlbmdpbmUtPnNlbWFwaG9yZS5zaWduYWwpCisJCW91dCA9IGVuZ2luZS0+ c2VtYXBob3JlLnNpZ25hbChyZXEsIG91dCk7CiAKLQlpbnRlbF9yaW5nX2VtaXQocmluZywgR0ZY X09QX1BJUEVfQ09OVFJPTCg2KSk7Ci0JaW50ZWxfcmluZ19lbWl0KHJpbmcsIChQSVBFX0NPTlRS T0xfR0xPQkFMX0dUVF9JVkIgfAorCSpvdXQrKyA9IEdGWF9PUF9QSVBFX0NPTlRST0woNik7CisJ Km91dCsrID0gKFBJUEVfQ09OVFJPTF9HTE9CQUxfR1RUX0lWQiB8CiAJCQkgICAgICAgUElQRV9D T05UUk9MX0NTX1NUQUxMIHwKLQkJCSAgICAgICBQSVBFX0NPTlRST0xfUVdfV1JJVEUpKTsKLQlp bnRlbF9yaW5nX2VtaXQocmluZywgaW50ZWxfaHdzX3NlcW5vX2FkZHJlc3MoZW5naW5lKSk7Ci0J aW50ZWxfcmluZ19lbWl0KHJpbmcsIDApOwotCWludGVsX3JpbmdfZW1pdChyaW5nLCByZXEtPmds b2JhbF9zZXFubyk7CisJCQkgICAgICAgUElQRV9DT05UUk9MX1FXX1dSSVRFKTsKKwkqb3V0Kysg PSBpbnRlbF9od3Nfc2Vxbm9fYWRkcmVzcyhlbmdpbmUpOworCSpvdXQrKyA9IDA7CisJKm91dCsr ID0gcmVxLT5nbG9iYWxfc2Vxbm87CiAJLyogV2UncmUgdGhyYXNoaW5nIG9uZSBkd29yZCBvZiBI V1MuICovCi0JaW50ZWxfcmluZ19lbWl0KHJpbmcsIDApOwotCWludGVsX3JpbmdfZW1pdChyaW5n LCBNSV9VU0VSX0lOVEVSUlVQVCk7Ci0JaW50ZWxfcmluZ19lbWl0KHJpbmcsIE1JX05PT1ApOwot CWludGVsX3JpbmdfYWR2YW5jZShyaW5nKTsKLQotCXJlcS0+dGFpbCA9IHJpbmctPnRhaWw7CisJ Km91dCsrID0gMDsKKwkqb3V0KysgPSBNSV9VU0VSX0lOVEVSUlVQVDsKKwkqb3V0KysgPSBNSV9O T09QOwogCi0JcmV0dXJuIDA7CisJcmVxLT50YWlsID0gaW50ZWxfcmluZ19vZmZzZXQocmVxLT5y aW5nLCBvdXQpOwogfQogCiBzdGF0aWMgY29uc3QgaW50IGdlbjhfcmVuZGVyX2VtaXRfcmVxdWVz dF9zeiA9IDg7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVm ZmVyLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmgKaW5kZXggMDgx ZGY0MGIzMTExLi45MTg1ZGViOTEzNGEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX3JpbmdidWZmZXIuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5n YnVmZmVyLmgKQEAgLTIyOCw3ICsyMjgsOCBAQCBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzIHsKICNk ZWZpbmUgSTkxNV9ESVNQQVRDSF9TRUNVUkUgQklUKDApCiAjZGVmaW5lIEk5MTVfRElTUEFUQ0hf UElOTkVEIEJJVCgxKQogI2RlZmluZSBJOTE1X0RJU1BBVENIX1JTICAgICBCSVQoMikKLQlpbnQJ CSgqZW1pdF9yZXF1ZXN0KShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSk7CisJdm9p ZAkJKCplbWl0X3JlcXVlc3QpKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLAorCQkJ CQl1MzIgKm91dCk7CiAJaW50CQllbWl0X3JlcXVlc3Rfc3o7CiAKIAkvKiBQYXNzIHRoZSByZXF1 ZXN0IHRvIHRoZSBoYXJkd2FyZSBxdWV1ZSAoZS5nLiBkaXJlY3RseSBpbnRvCkBAIC0zMDQsNyAr MzA1LDcgQEAgc3RydWN0IGludGVsX2VuZ2luZV9jcyB7CiAJCS8qIEFLQSB3YWl0KCkgKi8KIAkJ aW50CSgqc3luY190bykoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsCiAJCQkJICAg c3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpzaWduYWwpOwotCQlpbnQJKCpzaWduYWwpKHN0 cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxKTsKKwkJdTMyCSooKnNpZ25hbCkoc3RydWN0 IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsIHUzMiAqb3V0KTsKIAl9IHNlbWFwaG9yZTsKIAog CS8qIEV4ZWNsaXN0cyAqLwpAQCAtNDY2LDEwICs0NjcsMTEgQEAgc3RhdGljIGlubGluZSB2b2lk IGludGVsX3JpbmdfYWR2YW5jZShzdHJ1Y3QgaW50ZWxfcmluZyAqcmluZykKIAkgKi8KIH0KIAot c3RhdGljIGlubGluZSB1MzIgaW50ZWxfcmluZ19vZmZzZXQoc3RydWN0IGludGVsX3JpbmcgKnJp bmcsIHUzMiB2YWx1ZSkKK3N0YXRpYyBpbmxpbmUgdTMyIGludGVsX3Jpbmdfb2Zmc2V0KHN0cnVj dCBpbnRlbF9yaW5nICpyaW5nLCB2b2lkICphZGRyKQogewogCS8qIERvbid0IHdyaXRlIHJpbmct PnNpemUgKGVxdWl2YWxlbnQgdG8gMCkgYXMgdGhhdCBoYW5ncyBzb21lIEdQVXMuICovCi0JcmV0 dXJuIHZhbHVlICYgKHJpbmctPnNpemUgLSAxKTsKKwl1MzIgb2Zmc2V0ID0gYWRkciAtIHJpbmct PnZhZGRyOworCXJldHVybiBvZmZzZXQgJiAocmluZy0+c2l6ZSAtIDEpOwogfQogCiBpbnQgX19p bnRlbF9yaW5nX3NwYWNlKGludCBoZWFkLCBpbnQgdGFpbCwgaW50IHNpemUpOwotLSAKMi45LjMK Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdm eCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xp c3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=