From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH 34/41] drm/i915: Defer breadcrumb emission Date: Thu, 20 Oct 2016 16:04:16 +0100 Message-ID: <20161020150423.4560-35-chris@chris-wilson.co.uk> References: <20161020150423.4560-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-qk0-x244.google.com (mail-qk0-x244.google.com [IPv6:2607:f8b0:400d:c09::244]) by gabe.freedesktop.org (Postfix) with ESMTPS id EAC236EB90 for ; Thu, 20 Oct 2016 15:05:05 +0000 (UTC) Received: by mail-qk0-x244.google.com with SMTP id n189so4793001qke.1 for ; Thu, 20 Oct 2016 08:05:05 -0700 (PDT) In-Reply-To: <20161020150423.4560-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 TW92ZSB0aGUgYWN0dWFsIGVtaXNzaW9uIG9mIHRoZSBicmVhZGNydW1iIGZvciBjbG9zaW5nIHRo ZSByZXF1ZXN0IGZyb20KaTkxNV9hZGRfcmVxdWVzdCgpIHRvIHRoZSBzdWJtaXQgY2FsbGJhY2su IChJdCBjYW4gYmUgbW92ZWQgbGF0ZXIgd2hlbgpyZXF1aXJlZC4pIFRoaXMgYWxsb3dzIHVzIHRv IGRlZmVyIHRoZSBhbGxvY2F0aW9uIG9mIHRoZSBnbG9iYWxfc2Vxbm8KZnJvbSByZXF1ZXN0IGNv bnN0cnVjdGlvbiB0byBhY3R1YWwgc3VibWlzc2lvbiwgYWxsb3dpbmcgdXMgdG8gZW1pdCB0aGUK cmVxdWVzdHMgb3V0IG9mIG9yZGVyICh3cnQgdG8gdGhlIG9yZGVyIG9mIHRoZWlyIGNvbnN0cnVj dGlvbiwgdGhleQpzdGlsbCB3aWxsIG9ubHkgYmUgZXhlY3V0ZWQgb25lIGFsbCBvZiB0aGVpciBk ZXBlbmRlbmNpZXMgYXJlIHJlc29sdmVkCmluY2x1ZGluZyB0aGF0IGFsbCBlYXJsaWVyIHJlcXVl c3RzIG9uIHRoZWlyIHRpbWVsaW5lIGhhdmUgYmVlbgpzdWJtaXR0ZWQuKSBXZSBoYXZlIHRvIHNw ZWNpYWxpc2UgaG93IHdlIHRoZW4gZW1pdCB0aGUgcmVxdWVzdCBpbiBvcmRlcgp0byB3cml0ZSBp bnRvIHRoZSBwcmVhbGxvY2F0ZWQgc3BhY2UsIHJhdGhlciB0aGFuIGF0IHRoZSB0YWlsIG9mIHRo ZQpyaW5nYnVmZmVyICh3aGljaCB3aWxsIGhhdmUgYmVlbiBhZHZhbmNlZCBieSB0aGUgYWRkaXRp b24gb2YgbmV3CnJlcXVlc3RzKS4KClNpZ25lZC1vZmYtYnk6IENocmlzIFdpbHNvbiA8Y2hyaXNA Y2hyaXMtd2lsc29uLmNvLnVrPgpSZXZpZXdlZC1ieTogSm9vbmFzIExhaHRpbmVuIDxqb29uYXMu bGFodGluZW5AbGludXguaW50ZWwuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf Z2VtX3JlcXVlc3QuYyB8ICA0MSArKystLS0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf bHJjLmMgICAgICAgIHwgMTIwICsrKysrKysrLS0tLS0tLS0tLS0tLS0tCiBkcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMgfCAxNjkgKysrKysrKysrKystLS0tLS0tLS0tLS0t LS0tLS0tLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaCB8ICAxMCAr LQogNCBmaWxlcyBjaGFuZ2VkLCAxMTggaW5zZXJ0aW9ucygrKSwgMjIyIGRlbGV0aW9ucygtKQoK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3JlcXVlc3QuYyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3JlcXVlc3QuYwppbmRleCA4YTVhZTYyNGIxMjUu LjMwMjkyZWQyYmFiMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1f cmVxdWVzdC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3JlcXVlc3QuYwpA QCAtMzE4LDE3ICszMTgsMTYgQEAgc3VibWl0X25vdGlmeShzdHJ1Y3QgaTkxNV9zd19mZW5jZSAq ZmVuY2UsIGVudW0gaTkxNV9zd19mZW5jZV9ub3RpZnkgc3RhdGUpCiAJCWNvbnRhaW5lcl9vZihm ZW5jZSwgdHlwZW9mKCpyZXF1ZXN0KSwgc3VibWl0KTsKIAlzdHJ1Y3QgaW50ZWxfZW5naW5lX2Nz ICplbmdpbmUgPSByZXF1ZXN0LT5lbmdpbmU7CiAKKwlpZiAoc3RhdGUgIT0gRkVOQ0VfQ09NUExF VEUpCisJCXJldHVybiBOT1RJRllfRE9ORTsKKwogCS8qIFdpbGwgYmUgY2FsbGVkIGZyb20gaXJx LWNvbnRleHQgd2hlbiB1c2luZyBmb3JlaWduIERNQSBmZW5jZXMgKi8KIAotCXN3aXRjaCAoc3Rh dGUpIHsKLQljYXNlIEZFTkNFX0NPTVBMRVRFOgotCQllbmdpbmUtPnRpbWVsaW5lLT5sYXN0X3N1 Ym1pdHRlZF9zZXFubyA9IHJlcXVlc3QtPmZlbmNlLnNlcW5vOwotCQllbmdpbmUtPnN1Ym1pdF9y ZXF1ZXN0KHJlcXVlc3QpOwotCQlicmVhazsKKwllbmdpbmUtPnRpbWVsaW5lLT5sYXN0X3N1Ym1p dHRlZF9zZXFubyA9IHJlcXVlc3QtPmZlbmNlLnNlcW5vOwogCi0JY2FzZSBGRU5DRV9GUkVFOgot CQlicmVhazsKLQl9CisJZW5naW5lLT5lbWl0X2JyZWFkY3J1bWIocmVxdWVzdCwKKwkJCQlyZXF1 ZXN0LT5yaW5nLT52YWRkciArIHJlcXVlc3QtPnBvc3RmaXgpOworCWVuZ2luZS0+c3VibWl0X3Jl cXVlc3QocmVxdWVzdCk7CiAKIAlyZXR1cm4gTk9USUZZX0RPTkU7CiB9CkBAIC02NDgsOSArNjQ3 LDcgQEAgdm9pZCBfX2k5MTVfYWRkX3JlcXVlc3Qoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0 ICpyZXF1ZXN0LCBib29sIGZsdXNoX2NhY2hlcykKIAlzdHJ1Y3QgaW50ZWxfcmluZyAqcmluZyA9 IHJlcXVlc3QtPnJpbmc7CiAJc3RydWN0IGludGVsX3RpbWVsaW5lICp0aW1lbGluZSA9IHJlcXVl c3QtPnRpbWVsaW5lOwogCXN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcHJldjsKLQl1MzIg cmVxdWVzdF9zdGFydDsKLQl1MzIgcmVzZXJ2ZWRfdGFpbDsKLQlpbnQgcmV0OworCWludCBlcnI7 CiAKIAlsb2NrZGVwX2Fzc2VydF9oZWxkKCZyZXF1ZXN0LT5pOTE1LT5kcm0uc3RydWN0X211dGV4 KTsKIAl0cmFjZV9pOTE1X2dlbV9yZXF1ZXN0X2FkZChyZXF1ZXN0KTsKQEAgLTY2MCw4ICs2NTcs NiBAQCB2b2lkIF9faTkxNV9hZGRfcmVxdWVzdChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3Qg KnJlcXVlc3QsIGJvb2wgZmx1c2hfY2FjaGVzKQogCSAqIHNob3VsZCBhbHJlYWR5IGhhdmUgYmVl biByZXNlcnZlZCBpbiB0aGUgcmluZyBidWZmZXIuIExldCB0aGUgcmluZwogCSAqIGtub3cgdGhh dCBpdCBpcyB0aW1lIHRvIHVzZSB0aGF0IHNwYWNlIHVwLgogCSAqLwotCXJlcXVlc3Rfc3RhcnQg PSByaW5nLT50YWlsOwotCXJlc2VydmVkX3RhaWwgPSByZXF1ZXN0LT5yZXNlcnZlZF9zcGFjZTsK IAlyZXF1ZXN0LT5yZXNlcnZlZF9zcGFjZSA9IDA7CiAKIAkvKgpAQCAtNjcyLDEwICs2NjcsMTAg QEAgdm9pZCBfX2k5MTVfYWRkX3JlcXVlc3Qoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpy ZXF1ZXN0LCBib29sIGZsdXNoX2NhY2hlcykKIAkgKiB3aGF0LgogCSAqLwogCWlmIChmbHVzaF9j YWNoZXMpIHsKLQkJcmV0ID0gZW5naW5lLT5lbWl0X2ZsdXNoKHJlcXVlc3QsIEVNSVRfRkxVU0gp OworCQllcnIgPSBlbmdpbmUtPmVtaXRfZmx1c2gocmVxdWVzdCwgRU1JVF9GTFVTSCk7CiAKIAkJ LyogTm90IGFsbG93ZWQgdG8gZmFpbCEgKi8KLQkJV0FSTihyZXQsICJlbmdpbmUtPmVtaXRfZmx1 c2goKSBmYWlsZWQ6ICVkIVxuIiwgcmV0KTsKKwkJV0FSTihlcnIsICJlbmdpbmUtPmVtaXRfZmx1 c2goKSBmYWlsZWQ6ICVkIVxuIiwgZXJyKTsKIAl9CiAKIAkvKiBSZWNvcmQgdGhlIHBvc2l0aW9u IG9mIHRoZSBzdGFydCBvZiB0aGUgYnJlYWRjcnVtYiBzbyB0aGF0CkBAIC02ODMsMjAgKzY3OCwx MCBAQCB2b2lkIF9faTkxNV9hZGRfcmVxdWVzdChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3Qg KnJlcXVlc3QsIGJvb2wgZmx1c2hfY2FjaGVzKQogCSAqIEdQVSBwcm9jZXNzaW5nIHRoZSByZXF1 ZXN0LCB3ZSBuZXZlciBvdmVyLWVzdGltYXRlIHRoZQogCSAqIHBvc2l0aW9uIG9mIHRoZSByaW5n J3MgSEVBRC4KIAkgKi8KKwllcnIgPSBpbnRlbF9yaW5nX2JlZ2luKHJlcXVlc3QsIGVuZ2luZS0+ ZW1pdF9icmVhZGNydW1iX3N6KTsKKwlHRU1fQlVHX09OKGVycik7CiAJcmVxdWVzdC0+cG9zdGZp eCA9IHJpbmctPnRhaWw7Ci0KLQkvKiBOb3QgYWxsb3dlZCB0byBmYWlsISAqLwotCXJldCA9IGVu Z2luZS0+ZW1pdF9icmVhZGNydW1iKHJlcXVlc3QpOwotCVdBUk4ocmV0LCAiKCVzKS0+ZW1pdF9i cmVhZGNydW1iIGZhaWxlZDogJWQhXG4iLCBlbmdpbmUtPm5hbWUsIHJldCk7Ci0KLQkvKiBTYW5p dHkgY2hlY2sgdGhhdCB0aGUgcmVzZXJ2ZWQgc2l6ZSB3YXMgbGFyZ2UgZW5vdWdoLiAqLwotCXJl dCA9IHJpbmctPnRhaWwgLSByZXF1ZXN0X3N0YXJ0OwotCWlmIChyZXQgPCAwKQotCQlyZXQgKz0g cmluZy0+c2l6ZTsKLQlXQVJOX09OQ0UocmV0ID4gcmVzZXJ2ZWRfdGFpbCwKLQkJICAiTm90IGVu b3VnaCBzcGFjZSByZXNlcnZlZCAoJWQgYnl0ZXMpICIKLQkJICAiZm9yIGFkZGluZyB0aGUgcmVx dWVzdCAoJWQgYnl0ZXMpXG4iLAotCQkgIHJlc2VydmVkX3RhaWwsIHJldCk7CisJcmluZy0+dGFp bCArPSBlbmdpbmUtPmVtaXRfYnJlYWRjcnVtYl9zeiAqIHNpemVvZih1MzIpOwogCiAJLyogU2Vh bCB0aGUgcmVxdWVzdCBhbmQgbWFyayBpdCBhcyBwZW5kaW5nIGV4ZWN1dGlvbi4gTm90ZSB0aGF0 CiAJICogd2UgbWF5IGluc3BlY3QgdGhpcyBzdGF0ZSwgd2l0aG91dCBob2xkaW5nIGFueSBsb2Nr cywgZHVyaW5nCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jCmluZGV4IDgyMjliYWViYjJiMy4uZmEz MDEyYzM0MmNjIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYwor KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYwpAQCAtMzY1LDcgKzM2NSw3IEBA IHN0YXRpYyB1NjQgZXhlY2xpc3RzX3VwZGF0ZV9jb250ZXh0KHN0cnVjdCBkcm1faTkxNV9nZW1f cmVxdWVzdCAqcnEpCiAJc3RydWN0IGk5MTVfaHdfcHBndHQgKnBwZ3R0ID0gcnEtPmN0eC0+cHBn dHQ7CiAJdTMyICpyZWdfc3RhdGUgPSBjZS0+bHJjX3JlZ19zdGF0ZTsKIAotCXJlZ19zdGF0ZVtD VFhfUklOR19UQUlMKzFdID0gaW50ZWxfcmluZ19vZmZzZXQocnEtPnJpbmcsIHJxLT50YWlsKTsK KwlyZWdfc3RhdGVbQ1RYX1JJTkdfVEFJTCsxXSA9IHJxLT50YWlsOwogCiAJLyogVHJ1ZSAzMmIg UFBHVFQgd2l0aCBkeW5hbWljIHBhZ2UgYWxsb2NhdGlvbjogdXBkYXRlIFBEUAogCSAqIHJlZ2lz dGVycyBhbmQgcG9pbnQgdGhlIHVuYWxsb2NhdGVkIFBEUHMgdG8gc2NyYXRjaCBwYWdlLgpAQCAt NTk5LDYgKzU5OSwxNSBAQCBzdGF0aWMgdm9pZCBleGVjbGlzdHNfc3VibWl0X3JlcXVlc3Qoc3Ry dWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXF1ZXN0KQogCiAJc3Bpbl9sb2NrX2lycXNhdmUo JmVuZ2luZS0+ZXhlY2xpc3RfbG9jaywgZmxhZ3MpOwogCisJLyogV2Uga2VlcCB0aGUgcHJldmlv dXMgY29udGV4dCBhbGl2ZSB1bnRpbCB3ZSByZXRpcmUgdGhlIGZvbGxvd2luZworCSAqIHJlcXVl c3QuIFRoaXMgZW5zdXJlcyB0aGF0IGFueSB0aGUgY29udGV4dCBvYmplY3QgaXMgc3RpbGwgcGlu bmVkCisJICogZm9yIGFueSByZXNpZHVhbCB3cml0ZXMgdGhlIEhXIG1ha2VzIGludG8gaXQgb24g dGhlIGNvbnRleHQgc3dpdGNoCisJICogaW50byB0aGUgbmV4dCBvYmplY3QgZm9sbG93aW5nIHRo ZSBicmVhZGNydW1iLiBPdGhlcndpc2UsIHdlIG1heQorCSAqIHJldGlyZSB0aGUgY29udGV4dCB0 b28gZWFybHkuCisJICovCisJcmVxdWVzdC0+cHJldmlvdXNfY29udGV4dCA9IGVuZ2luZS0+bGFz dF9jb250ZXh0OworCWVuZ2luZS0+bGFzdF9jb250ZXh0ID0gcmVxdWVzdC0+Y3R4OworCiAJbGlz dF9hZGRfdGFpbCgmcmVxdWVzdC0+ZXhlY2xpc3RfbGluaywgJmVuZ2luZS0+ZXhlY2xpc3RfcXVl dWUpOwogCWlmIChleGVjbGlzdHNfZWxzcF9pZGxlKGVuZ2luZSkpCiAJCXRhc2tsZXRfaGlfc2No ZWR1bGUoJmVuZ2luZS0+aXJxX3Rhc2tsZXQpOwpAQCAtNjcxLDQ2ICs2ODAsNiBAQCBpbnQgaW50 ZWxfbG9naWNhbF9yaW5nX2FsbG9jX3JlcXVlc3RfZXh0cmFzKHN0cnVjdCBkcm1faTkxNV9nZW1f cmVxdWVzdCAqcmVxdWVzdAogCXJldHVybiByZXQ7CiB9CiAKLS8qCi0gKiBpbnRlbF9sb2dpY2Fs X3JpbmdfYWR2YW5jZSgpIC0gYWR2YW5jZSB0aGUgdGFpbCBhbmQgcHJlcGFyZSBmb3Igc3VibWlz c2lvbgotICogQHJlcXVlc3Q6IFJlcXVlc3QgdG8gYWR2YW5jZSB0aGUgbG9naWNhbCByaW5nYnVm ZmVyIG9mLgotICoKLSAqIFRoZSB0YWlsIGlzIHVwZGF0ZWQgaW4gb3VyIGxvZ2ljYWwgcmluZ2J1 ZmZlciBzdHJ1Y3QsIG5vdCBpbiB0aGUgYWN0dWFsIGNvbnRleHQuIFdoYXQKLSAqIHJlYWxseSBo YXBwZW5zIGR1cmluZyBzdWJtaXNzaW9uIGlzIHRoYXQgdGhlIGNvbnRleHQgYW5kIGN1cnJlbnQg dGFpbCB3aWxsIGJlIHBsYWNlZAotICogb24gYSBxdWV1ZSB3YWl0aW5nIGZvciB0aGUgRUxTUCB0 byBiZSByZWFkeSB0byBhY2NlcHQgYSBuZXcgY29udGV4dCBzdWJtaXNzaW9uLiBBdCB0aGF0Ci0g KiBwb2ludCwgdGhlIHRhaWwgKmluc2lkZSogdGhlIGNvbnRleHQgaXMgdXBkYXRlZCBhbmQgdGhl IEVMU1Agd3JpdHRlbiB0by4KLSAqLwotc3RhdGljIGludAotaW50ZWxfbG9naWNhbF9yaW5nX2Fk dmFuY2Uoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXF1ZXN0KQotewotCXN0cnVjdCBp bnRlbF9yaW5nICpyaW5nID0gcmVxdWVzdC0+cmluZzsKLQlzdHJ1Y3QgaW50ZWxfZW5naW5lX2Nz ICplbmdpbmUgPSByZXF1ZXN0LT5lbmdpbmU7Ci0KLQlpbnRlbF9yaW5nX2FkdmFuY2UocmluZyk7 Ci0JcmVxdWVzdC0+dGFpbCA9IHJpbmctPnRhaWw7Ci0KLQkvKgotCSAqIEhlcmUgd2UgYWRkIHR3 byBleHRyYSBOT09QcyBhcyBwYWRkaW5nIHRvIGF2b2lkCi0JICogbGl0ZSByZXN0b3JlIG9mIGEg Y29udGV4dCB3aXRoIEhFQUQ9PVRBSUwuCi0JICoKLQkgKiBDYWxsZXIgbXVzdCByZXNlcnZlIFdB X1RBSUxfRFdPUkRTIGZvciB1cyEKLQkgKi8KLQlpbnRlbF9yaW5nX2VtaXQocmluZywgTUlfTk9P UCk7Ci0JaW50ZWxfcmluZ19lbWl0KHJpbmcsIE1JX05PT1ApOwotCWludGVsX3JpbmdfYWR2YW5j ZShyaW5nKTsKLQlyZXF1ZXN0LT53YV90YWlsID0gcmluZy0+dGFpbDsKLQotCS8qIFdlIGtlZXAg dGhlIHByZXZpb3VzIGNvbnRleHQgYWxpdmUgdW50aWwgd2UgcmV0aXJlIHRoZSBmb2xsb3dpbmcK LQkgKiByZXF1ZXN0LiBUaGlzIGVuc3VyZXMgdGhhdCBhbnkgdGhlIGNvbnRleHQgb2JqZWN0IGlz IHN0aWxsIHBpbm5lZAotCSAqIGZvciBhbnkgcmVzaWR1YWwgd3JpdGVzIHRoZSBIVyBtYWtlcyBp bnRvIGl0IG9uIHRoZSBjb250ZXh0IHN3aXRjaAotCSAqIGludG8gdGhlIG5leHQgb2JqZWN0IGZv bGxvd2luZyB0aGUgYnJlYWRjcnVtYi4gT3RoZXJ3aXNlLCB3ZSBtYXkKLQkgKiByZXRpcmUgdGhl IGNvbnRleHQgdG9vIGVhcmx5LgotCSAqLwotCXJlcXVlc3QtPnByZXZpb3VzX2NvbnRleHQgPSBl bmdpbmUtPmxhc3RfY29udGV4dDsKLQllbmdpbmUtPmxhc3RfY29udGV4dCA9IHJlcXVlc3QtPmN0 eDsKLQlyZXR1cm4gMDsKLX0KLQogc3RhdGljIGludCBpbnRlbF9scl9jb250ZXh0X3BpbihzdHJ1 Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4LAogCQkJCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVu Z2luZSkKIHsKQEAgLTE1NjYsNDEgKzE1MzUsMzUgQEAgc3RhdGljIHZvaWQgYnh0X2Ffc2Vxbm9f YmFycmllcihzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiAgKiB1c2VkIGFzIGEgd29y a2Fyb3VuZCBmb3Igbm90IGJlaW5nIGFsbG93ZWQgdG8gZG8gbGl0ZQogICogcmVzdG9yZSB3aXRo IEhFQUQ9PVRBSUwgKFdhSWRsZUxpdGVSZXN0b3JlKS4KICAqLwotCi1zdGF0aWMgaW50IGdlbjhf ZW1pdF9icmVhZGNydW1iKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxdWVzdCkKK3N0 YXRpYyB2b2lkIGdlbjhfZW1pdF93YV90YWlsKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAq cmVxdWVzdCwgdTMyICpvdXQpCiB7Ci0Jc3RydWN0IGludGVsX3JpbmcgKnJpbmcgPSByZXF1ZXN0 LT5yaW5nOwotCWludCByZXQ7Ci0KLQlyZXQgPSBpbnRlbF9yaW5nX2JlZ2luKHJlcXVlc3QsIDYg KyBXQV9UQUlMX0RXT1JEUyk7Ci0JaWYgKHJldCkKLQkJcmV0dXJuIHJldDsKKwkqb3V0KysgPSBN SV9OT09QOworCSpvdXQrKyA9IE1JX05PT1A7CisJcmVxdWVzdC0+d2FfdGFpbCA9IGludGVsX3Jp bmdfb2Zmc2V0KHJlcXVlc3QtPnJpbmcsIG91dCk7Cit9CiAKK3N0YXRpYyB2b2lkIGdlbjhfZW1p dF9icmVhZGNydW1iKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxdWVzdCwKKwkJCQkg dTMyICpvdXQpCit7CiAJLyogdy9hOiBiaXQgNSBuZWVkcyB0byBiZSB6ZXJvIGZvciBNSV9GTFVT SF9EVyBhZGRyZXNzLiAqLwogCUJVSUxEX0JVR19PTihJOTE1X0dFTV9IV1NfSU5ERVhfQUREUiAm ICgxIDw8IDUpKTsKIAotCWludGVsX3JpbmdfZW1pdChyaW5nLCAoTUlfRkxVU0hfRFcgKyAxKSB8 IE1JX0ZMVVNIX0RXX09QX1NUT1JFRFcpOwotCWludGVsX3JpbmdfZW1pdChyaW5nLAotCQkJaW50 ZWxfaHdzX3NlcW5vX2FkZHJlc3MocmVxdWVzdC0+ZW5naW5lKSB8Ci0JCQlNSV9GTFVTSF9EV19V U0VfR1RUKTsKLQlpbnRlbF9yaW5nX2VtaXQocmluZywgMCk7Ci0JaW50ZWxfcmluZ19lbWl0KHJp bmcsIHJlcXVlc3QtPmdsb2JhbF9zZXFubyk7Ci0JaW50ZWxfcmluZ19lbWl0KHJpbmcsIE1JX1VT RVJfSU5URVJSVVBUKTsKLQlpbnRlbF9yaW5nX2VtaXQocmluZywgTUlfTk9PUCk7Ci0JcmV0dXJu IGludGVsX2xvZ2ljYWxfcmluZ19hZHZhbmNlKHJlcXVlc3QpOworCSpvdXQrKyA9IChNSV9GTFVT SF9EVyArIDEpIHwgTUlfRkxVU0hfRFdfT1BfU1RPUkVEVzsKKwkqb3V0KysgPSBpbnRlbF9od3Nf c2Vxbm9fYWRkcmVzcyhyZXF1ZXN0LT5lbmdpbmUpIHwgTUlfRkxVU0hfRFdfVVNFX0dUVDsKKwkq b3V0KysgPSAwOworCSpvdXQrKyA9IHJlcXVlc3QtPmdsb2JhbF9zZXFubzsKKwkqb3V0KysgPSBN SV9VU0VSX0lOVEVSUlVQVDsKKwkqb3V0KysgPSBNSV9OT09QOworCXJlcXVlc3QtPnRhaWwgPSBp bnRlbF9yaW5nX29mZnNldChyZXF1ZXN0LT5yaW5nLCBvdXQpOworCisJZ2VuOF9lbWl0X3dhX3Rh aWwocmVxdWVzdCwgb3V0KTsKIH0KIAogc3RhdGljIGNvbnN0IGludCBnZW44X2VtaXRfYnJlYWRj cnVtYl9zeiA9IDYgKyBXQV9UQUlMX0RXT1JEUzsKIAotc3RhdGljIGludCBnZW44X2VtaXRfYnJl YWRjcnVtYl9yZW5kZXIoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXF1ZXN0KQorc3Rh dGljIHZvaWQgZ2VuOF9lbWl0X2JyZWFkY3J1bWJfcmVuZGVyKHN0cnVjdCBkcm1faTkxNV9nZW1f cmVxdWVzdCAqcmVxdWVzdCwKKwkJCQkJdTMyICpvdXQpCiB7Ci0Jc3RydWN0IGludGVsX3Jpbmcg KnJpbmcgPSByZXF1ZXN0LT5yaW5nOwotCWludCByZXQ7Ci0KLQlyZXQgPSBpbnRlbF9yaW5nX2Jl Z2luKHJlcXVlc3QsIDggKyBXQV9UQUlMX0RXT1JEUyk7Ci0JaWYgKHJldCkKLQkJcmV0dXJuIHJl dDsKLQogCS8qIFdlJ3JlIHVzaW5nIHF3b3JkIHdyaXRlLCBzZXFubyBzaG91bGQgYmUgYWxpZ25l ZCB0byA4IGJ5dGVzLiAqLwogCUJVSUxEX0JVR19PTihJOTE1X0dFTV9IV1NfSU5ERVggJiAxKTsK IApAQCAtMTYwOCwxOSArMTU3MSwyMCBAQCBzdGF0aWMgaW50IGdlbjhfZW1pdF9icmVhZGNydW1i X3JlbmRlcihzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcXVlc3QpCiAJICogbmVlZCBh IHByaW9yIENTX1NUQUxMLCB3aGljaCBpcyBlbWl0dGVkIGJ5IHRoZSBmbHVzaAogCSAqIGZvbGxv d2luZyB0aGUgYmF0Y2guCiAJICovCi0JaW50ZWxfcmluZ19lbWl0KHJpbmcsIEdGWF9PUF9QSVBF X0NPTlRST0woNikpOwotCWludGVsX3JpbmdfZW1pdChyaW5nLAotCQkJKFBJUEVfQ09OVFJPTF9H TE9CQUxfR1RUX0lWQiB8Ci0JCQkgUElQRV9DT05UUk9MX0NTX1NUQUxMIHwKLQkJCSBQSVBFX0NP TlRST0xfUVdfV1JJVEUpKTsKLQlpbnRlbF9yaW5nX2VtaXQocmluZywgaW50ZWxfaHdzX3NlcW5v X2FkZHJlc3MocmVxdWVzdC0+ZW5naW5lKSk7Ci0JaW50ZWxfcmluZ19lbWl0KHJpbmcsIDApOwot CWludGVsX3JpbmdfZW1pdChyaW5nLCByZXF1ZXN0LT5nbG9iYWxfc2Vxbm8pOworCSpvdXQrKyA9 IEdGWF9PUF9QSVBFX0NPTlRST0woNik7CisJKm91dCsrID0gKFBJUEVfQ09OVFJPTF9HTE9CQUxf R1RUX0lWQiB8CisJCSAgUElQRV9DT05UUk9MX0NTX1NUQUxMIHwKKwkJICBQSVBFX0NPTlRST0xf UVdfV1JJVEUpOworCSpvdXQrKyA9IGludGVsX2h3c19zZXFub19hZGRyZXNzKHJlcXVlc3QtPmVu Z2luZSk7CisJKm91dCsrID0gMDsKKwkqb3V0KysgPSByZXF1ZXN0LT5nbG9iYWxfc2Vxbm87CiAJ LyogV2UncmUgdGhyYXNoaW5nIG9uZSBkd29yZCBvZiBIV1MuICovCi0JaW50ZWxfcmluZ19lbWl0 KHJpbmcsIDApOwotCWludGVsX3JpbmdfZW1pdChyaW5nLCBNSV9VU0VSX0lOVEVSUlVQVCk7Ci0J aW50ZWxfcmluZ19lbWl0KHJpbmcsIE1JX05PT1ApOwotCXJldHVybiBpbnRlbF9sb2dpY2FsX3Jp bmdfYWR2YW5jZShyZXF1ZXN0KTsKKwkqb3V0KysgPSAwOworCSpvdXQrKyA9IE1JX1VTRVJfSU5U RVJSVVBUOworCSpvdXQrKyA9IE1JX05PT1A7CisJcmVxdWVzdC0+dGFpbCA9IGludGVsX3Jpbmdf b2Zmc2V0KHJlcXVlc3QtPnJpbmcsIG91dCk7CisKKwlnZW44X2VtaXRfd2FfdGFpbChyZXF1ZXN0 LCBvdXQpOwogfQogCiBzdGF0aWMgY29uc3QgaW50IGdlbjhfZW1pdF9icmVhZGNydW1iX3JlbmRl cl9zeiA9IDggKyBXQV9UQUlMX0RXT1JEUzsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX3JpbmdidWZmZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Jpbmdi dWZmZXIuYwppbmRleCA5NWY4YjNiMTMzNTEuLjNjMWRjOWJmOTVmOSAxMDA2NDQKLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX3JpbmdidWZmZXIuYwpAQCAtMTIxNSw5MCArMTIxNSw2MiBAQCBzdGF0aWMg dm9pZCByZW5kZXJfcmluZ19jbGVhbnVwKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkK IAlpOTE1X3ZtYV91bnBpbl9hbmRfcmVsZWFzZSgmZGV2X3ByaXYtPnNlbWFwaG9yZSk7CiB9CiAK LXN0YXRpYyBpbnQgZ2VuOF9yY3Nfc2lnbmFsKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAq cmVxKQorc3RhdGljIHUzMiAqZ2VuOF9yY3Nfc2lnbmFsKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVx dWVzdCAqcmVxLCB1MzIgKm91dCkKIHsKLQlzdHJ1Y3QgaW50ZWxfcmluZyAqcmluZyA9IHJlcS0+ cmluZzsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSByZXEtPmk5MTU7CiAJ c3RydWN0IGludGVsX2VuZ2luZV9jcyAqd2FpdGVyOwogCWVudW0gaW50ZWxfZW5naW5lX2lkIGlk OwotCWludCByZXQsIG51bV9yaW5nczsKLQotCW51bV9yaW5ncyA9IElOVEVMX0lORk8oZGV2X3By aXYpLT5udW1fcmluZ3M7Ci0JcmV0ID0gaW50ZWxfcmluZ19iZWdpbihyZXEsIChudW1fcmluZ3Mt MSkgKiA4KTsKLQlpZiAocmV0KQotCQlyZXR1cm4gcmV0OwogCiAJZm9yX2VhY2hfZW5naW5lKHdh aXRlciwgZGV2X3ByaXYsIGlkKSB7CiAJCXU2NCBndHRfb2Zmc2V0ID0gcmVxLT5lbmdpbmUtPnNl bWFwaG9yZS5zaWduYWxfZ2d0dFtpZF07CiAJCWlmIChndHRfb2Zmc2V0ID09IE1JX1NFTUFQSE9S RV9TWU5DX0lOVkFMSUQpCiAJCQljb250aW51ZTsKIAotCQlpbnRlbF9yaW5nX2VtaXQocmluZywg R0ZYX09QX1BJUEVfQ09OVFJPTCg2KSk7Ci0JCWludGVsX3JpbmdfZW1pdChyaW5nLAotCQkJCVBJ UEVfQ09OVFJPTF9HTE9CQUxfR1RUX0lWQiB8Ci0JCQkJUElQRV9DT05UUk9MX1FXX1dSSVRFIHwK LQkJCQlQSVBFX0NPTlRST0xfQ1NfU1RBTEwpOwotCQlpbnRlbF9yaW5nX2VtaXQocmluZywgbG93 ZXJfMzJfYml0cyhndHRfb2Zmc2V0KSk7Ci0JCWludGVsX3JpbmdfZW1pdChyaW5nLCB1cHBlcl8z Ml9iaXRzKGd0dF9vZmZzZXQpKTsKLQkJaW50ZWxfcmluZ19lbWl0KHJpbmcsIHJlcS0+Z2xvYmFs X3NlcW5vKTsKLQkJaW50ZWxfcmluZ19lbWl0KHJpbmcsIDApOwotCQlpbnRlbF9yaW5nX2VtaXQo cmluZywKLQkJCQlNSV9TRU1BUEhPUkVfU0lHTkFMIHwKLQkJCQlNSV9TRU1BUEhPUkVfVEFSR0VU KHdhaXRlci0+aHdfaWQpKTsKLQkJaW50ZWxfcmluZ19lbWl0KHJpbmcsIDApOworCQkqb3V0Kysg PSBHRlhfT1BfUElQRV9DT05UUk9MKDYpOworCQkqb3V0KysgPSAoUElQRV9DT05UUk9MX0dMT0JB TF9HVFRfSVZCIHwKKwkJCSAgUElQRV9DT05UUk9MX1FXX1dSSVRFIHwKKwkJCSAgUElQRV9DT05U Uk9MX0NTX1NUQUxMKTsKKwkJKm91dCsrID0gbG93ZXJfMzJfYml0cyhndHRfb2Zmc2V0KTsKKwkJ Km91dCsrID0gdXBwZXJfMzJfYml0cyhndHRfb2Zmc2V0KTsKKwkJKm91dCsrID0gcmVxLT5nbG9i YWxfc2Vxbm87CisJCSpvdXQrKyA9IDA7CisJCSpvdXQrKyA9IChNSV9TRU1BUEhPUkVfU0lHTkFM IHwKKwkJCSAgTUlfU0VNQVBIT1JFX1RBUkdFVCh3YWl0ZXItPmh3X2lkKSk7CisJCSpvdXQrKyA9 IDA7CiAJfQotCWludGVsX3JpbmdfYWR2YW5jZShyaW5nKTsKIAotCXJldHVybiAwOworCXJldHVy biBvdXQ7CiB9CiAKLXN0YXRpYyBpbnQgZ2VuOF94Y3Nfc2lnbmFsKHN0cnVjdCBkcm1faTkxNV9n ZW1fcmVxdWVzdCAqcmVxKQorc3RhdGljIHUzMiAqZ2VuOF94Y3Nfc2lnbmFsKHN0cnVjdCBkcm1f aTkxNV9nZW1fcmVxdWVzdCAqcmVxLCB1MzIgKm91dCkKIHsKLQlzdHJ1Y3QgaW50ZWxfcmluZyAq cmluZyA9IHJlcS0+cmluZzsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBy ZXEtPmk5MTU7CiAJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqd2FpdGVyOwogCWVudW0gaW50ZWxf ZW5naW5lX2lkIGlkOwotCWludCByZXQsIG51bV9yaW5nczsKLQotCW51bV9yaW5ncyA9IElOVEVM X0lORk8oZGV2X3ByaXYpLT5udW1fcmluZ3M7Ci0JcmV0ID0gaW50ZWxfcmluZ19iZWdpbihyZXEs IChudW1fcmluZ3MtMSkgKiA2KTsKLQlpZiAocmV0KQotCQlyZXR1cm4gcmV0OwogCiAJZm9yX2Vh Y2hfZW5naW5lKHdhaXRlciwgZGV2X3ByaXYsIGlkKSB7CiAJCXU2NCBndHRfb2Zmc2V0ID0gcmVx LT5lbmdpbmUtPnNlbWFwaG9yZS5zaWduYWxfZ2d0dFtpZF07CiAJCWlmIChndHRfb2Zmc2V0ID09 IE1JX1NFTUFQSE9SRV9TWU5DX0lOVkFMSUQpCiAJCQljb250aW51ZTsKIAotCQlpbnRlbF9yaW5n X2VtaXQocmluZywKLQkJCQkoTUlfRkxVU0hfRFcgKyAxKSB8IE1JX0ZMVVNIX0RXX09QX1NUT1JF RFcpOwotCQlpbnRlbF9yaW5nX2VtaXQocmluZywKLQkJCQlsb3dlcl8zMl9iaXRzKGd0dF9vZmZz ZXQpIHwKLQkJCQlNSV9GTFVTSF9EV19VU0VfR1RUKTsKLQkJaW50ZWxfcmluZ19lbWl0KHJpbmcs IHVwcGVyXzMyX2JpdHMoZ3R0X29mZnNldCkpOwotCQlpbnRlbF9yaW5nX2VtaXQocmluZywgcmVx LT5nbG9iYWxfc2Vxbm8pOwotCQlpbnRlbF9yaW5nX2VtaXQocmluZywKLQkJCQlNSV9TRU1BUEhP UkVfU0lHTkFMIHwKLQkJCQlNSV9TRU1BUEhPUkVfVEFSR0VUKHdhaXRlci0+aHdfaWQpKTsKLQkJ aW50ZWxfcmluZ19lbWl0KHJpbmcsIDApOworCQkqb3V0KysgPSAoTUlfRkxVU0hfRFcgKyAxKSB8 IE1JX0ZMVVNIX0RXX09QX1NUT1JFRFc7CisJCSpvdXQrKyA9IGxvd2VyXzMyX2JpdHMoZ3R0X29m ZnNldCkgfCBNSV9GTFVTSF9EV19VU0VfR1RUOworCQkqb3V0KysgPSB1cHBlcl8zMl9iaXRzKGd0 dF9vZmZzZXQpOworCQkqb3V0KysgPSByZXEtPmdsb2JhbF9zZXFubzsKKwkJKm91dCsrID0gKE1J X1NFTUFQSE9SRV9TSUdOQUwgfAorCQkJICBNSV9TRU1BUEhPUkVfVEFSR0VUKHdhaXRlci0+aHdf aWQpKTsKKwkJKm91dCsrID0gMDsKIAl9Ci0JaW50ZWxfcmluZ19hZHZhbmNlKHJpbmcpOwogCi0J cmV0dXJuIDA7CisJcmV0dXJuIG91dDsKIH0KIAotc3RhdGljIGludCBnZW42X3NpZ25hbChzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSkKK3N0YXRpYyB1MzIgKmdlbjZfc2lnbmFsKHN0 cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLCB1MzIgKm91dCkKIHsKLQlzdHJ1Y3QgaW50 ZWxfcmluZyAqcmluZyA9IHJlcS0+cmluZzsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYgPSByZXEtPmk5MTU7CiAJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lOwogCWVu dW0gaW50ZWxfZW5naW5lX2lkIGlkOwotCWludCByZXQsIG51bV9yaW5nczsKLQotCW51bV9yaW5n cyA9IElOVEVMX0lORk8oZGV2X3ByaXYpLT5udW1fcmluZ3M7Ci0JcmV0ID0gaW50ZWxfcmluZ19i ZWdpbihyZXEsIHJvdW5kX3VwKChudW1fcmluZ3MtMSkgKiAzLCAyKSk7Ci0JaWYgKHJldCkKLQkJ cmV0dXJuIHJldDsKKwlpbnQgbnVtX3JpbmdzID0gMDsKIAogCWZvcl9lYWNoX2VuZ2luZShlbmdp bmUsIGRldl9wcml2LCBpZCkgewogCQlpOTE1X3JlZ190IG1ib3hfcmVnOwpAQCAtMTMwOCw0NiAr MTI4MCwzNCBAQCBzdGF0aWMgaW50IGdlbjZfc2lnbmFsKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVx dWVzdCAqcmVxKQogCiAJCW1ib3hfcmVnID0gcmVxLT5lbmdpbmUtPnNlbWFwaG9yZS5tYm94LnNp Z25hbFtlbmdpbmUtPmh3X2lkXTsKIAkJaWYgKGk5MTVfbW1pb19yZWdfdmFsaWQobWJveF9yZWcp KSB7Ci0JCQlpbnRlbF9yaW5nX2VtaXQocmluZywgTUlfTE9BRF9SRUdJU1RFUl9JTU0oMSkpOwot CQkJaW50ZWxfcmluZ19lbWl0X3JlZyhyaW5nLCBtYm94X3JlZyk7Ci0JCQlpbnRlbF9yaW5nX2Vt aXQocmluZywgcmVxLT5nbG9iYWxfc2Vxbm8pOworCQkJKm91dCsrID0gTUlfTE9BRF9SRUdJU1RF Ul9JTU0oMSk7CisJCQkqb3V0KysgPSBpOTE1X21taW9fcmVnX29mZnNldChtYm94X3JlZyk7CisJ CQkqb3V0KysgPSByZXEtPmdsb2JhbF9zZXFubzsKKwkJCW51bV9yaW5ncysrOwogCQl9CiAJfQor CWlmIChudW1fcmluZ3MgJiAxKQorCQkqb3V0KysgPSBNSV9OT09QOwogCi0JLyogSWYgbnVtX2R3 b3JkcyB3YXMgcm91bmRlZCwgbWFrZSBzdXJlIHRoZSB0YWlsIHBvaW50ZXIgaXMgY29ycmVjdCAq LwotCWlmIChudW1fcmluZ3MgJSAyID09IDApCi0JCWludGVsX3JpbmdfZW1pdChyaW5nLCBNSV9O T09QKTsKLQlpbnRlbF9yaW5nX2FkdmFuY2UocmluZyk7Ci0KLQlyZXR1cm4gMDsKKwlyZXR1cm4g b3V0OwogfQogCiBzdGF0aWMgdm9pZCBpOXh4X3N1Ym1pdF9yZXF1ZXN0KHN0cnVjdCBkcm1faTkx NV9nZW1fcmVxdWVzdCAqcmVxdWVzdCkKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYgPSByZXF1ZXN0LT5pOTE1OwogCi0JSTkxNV9XUklURV9UQUlMKHJlcXVlc3QtPmVuZ2lu ZSwKLQkJCWludGVsX3Jpbmdfb2Zmc2V0KHJlcXVlc3QtPnJpbmcsIHJlcXVlc3QtPnRhaWwpKTsK KwlJOTE1X1dSSVRFX1RBSUwocmVxdWVzdC0+ZW5naW5lLCByZXF1ZXN0LT50YWlsKTsKIH0KIAot c3RhdGljIGludCBpOXh4X2VtaXRfYnJlYWRjcnVtYihzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVl c3QgKnJlcSkKK3N0YXRpYyB2b2lkIGk5eHhfZW1pdF9icmVhZGNydW1iKHN0cnVjdCBkcm1faTkx NV9nZW1fcmVxdWVzdCAqcmVxLAorCQkJCSB1MzIgKm91dCkKIHsKLQlzdHJ1Y3QgaW50ZWxfcmlu ZyAqcmluZyA9IHJlcS0+cmluZzsKLQlpbnQgcmV0OwotCi0JcmV0ID0gaW50ZWxfcmluZ19iZWdp bihyZXEsIDQpOwotCWlmIChyZXQpCi0JCXJldHVybiByZXQ7Ci0KLQlpbnRlbF9yaW5nX2VtaXQo cmluZywgTUlfU1RPUkVfRFdPUkRfSU5ERVgpOwotCWludGVsX3JpbmdfZW1pdChyaW5nLCBJOTE1 X0dFTV9IV1NfSU5ERVggPDwgTUlfU1RPUkVfRFdPUkRfSU5ERVhfU0hJRlQpOwotCWludGVsX3Jp bmdfZW1pdChyaW5nLCByZXEtPmdsb2JhbF9zZXFubyk7Ci0JaW50ZWxfcmluZ19lbWl0KHJpbmcs IE1JX1VTRVJfSU5URVJSVVBUKTsKLQlpbnRlbF9yaW5nX2FkdmFuY2UocmluZyk7Ci0KLQlyZXEt PnRhaWwgPSByaW5nLT50YWlsOworCSpvdXQrKyA9IE1JX1NUT1JFX0RXT1JEX0lOREVYOworCSpv dXQrKyA9IEk5MTVfR0VNX0hXU19JTkRFWCA8PCBNSV9TVE9SRV9EV09SRF9JTkRFWF9TSElGVDsK Kwkqb3V0KysgPSByZXEtPmdsb2JhbF9zZXFubzsKKwkqb3V0KysgPSBNSV9VU0VSX0lOVEVSUlVQ VDsKIAotCXJldHVybiAwOworCXJlcS0+dGFpbCA9IGludGVsX3Jpbmdfb2Zmc2V0KHJlcS0+cmlu Zywgb3V0KTsKIH0KIAogc3RhdGljIGNvbnN0IGludCBpOXh4X2VtaXRfYnJlYWRjcnVtYl9zeiA9 IDQ7CkBAIC0xMzYwLDQ5ICsxMzIwLDM0IEBAIHN0YXRpYyBjb25zdCBpbnQgaTl4eF9lbWl0X2Jy ZWFkY3J1bWJfc3ogPSA0OwogICogVXBkYXRlIHRoZSBtYWlsYm94IHJlZ2lzdGVycyBpbiB0aGUg Km90aGVyKiByaW5ncyB3aXRoIHRoZSBjdXJyZW50IHNlcW5vLgogICogVGhpcyBhY3RzIGxpa2Ug YSBzaWduYWwgaW4gdGhlIGNhbm9uaWNhbCBzZW1hcGhvcmUuCiAgKi8KLXN0YXRpYyBpbnQgZ2Vu Nl9zZW1hX2VtaXRfYnJlYWRjcnVtYihzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSkK K3N0YXRpYyB2b2lkIGdlbjZfc2VtYV9lbWl0X2JyZWFkY3J1bWIoc3RydWN0IGRybV9pOTE1X2dl bV9yZXF1ZXN0ICpyZXEsCisJCQkJICAgICAgdTMyICpvdXQpCiB7Ci0JaW50IHJldDsKLQotCXJl dCA9IHJlcS0+ZW5naW5lLT5zZW1hcGhvcmUuc2lnbmFsKHJlcSk7Ci0JaWYgKHJldCkKLQkJcmV0 dXJuIHJldDsKLQotCXJldHVybiBpOXh4X2VtaXRfYnJlYWRjcnVtYihyZXEpOworCXJldHVybiBp OXh4X2VtaXRfYnJlYWRjcnVtYihyZXEsCisJCQkJICAgIHJlcS0+ZW5naW5lLT5zZW1hcGhvcmUu c2lnbmFsKHJlcSwgb3V0KSk7CiB9CiAKLXN0YXRpYyBpbnQgZ2VuOF9yZW5kZXJfZW1pdF9icmVh ZGNydW1iKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxKQorc3RhdGljIHZvaWQgZ2Vu OF9yZW5kZXJfZW1pdF9icmVhZGNydW1iKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVx LAorCQkJCQl1MzIgKm91dCkKIHsKIAlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUgPSBy ZXEtPmVuZ2luZTsKLQlzdHJ1Y3QgaW50ZWxfcmluZyAqcmluZyA9IHJlcS0+cmluZzsKLQlpbnQg cmV0OwogCi0JaWYgKGVuZ2luZS0+c2VtYXBob3JlLnNpZ25hbCkgewotCQlyZXQgPSBlbmdpbmUt PnNlbWFwaG9yZS5zaWduYWwocmVxKTsKLQkJaWYgKHJldCkKLQkJCXJldHVybiByZXQ7Ci0JfQot Ci0JcmV0ID0gaW50ZWxfcmluZ19iZWdpbihyZXEsIDgpOwotCWlmIChyZXQpCi0JCXJldHVybiBy ZXQ7CisJaWYgKGVuZ2luZS0+c2VtYXBob3JlLnNpZ25hbCkKKwkJb3V0ID0gZW5naW5lLT5zZW1h cGhvcmUuc2lnbmFsKHJlcSwgb3V0KTsKIAotCWludGVsX3JpbmdfZW1pdChyaW5nLCBHRlhfT1Bf UElQRV9DT05UUk9MKDYpKTsKLQlpbnRlbF9yaW5nX2VtaXQocmluZywgKFBJUEVfQ09OVFJPTF9H TE9CQUxfR1RUX0lWQiB8CisJKm91dCsrID0gR0ZYX09QX1BJUEVfQ09OVFJPTCg2KTsKKwkqb3V0 KysgPSAoUElQRV9DT05UUk9MX0dMT0JBTF9HVFRfSVZCIHwKIAkJCSAgICAgICBQSVBFX0NPTlRS T0xfQ1NfU1RBTEwgfAotCQkJICAgICAgIFBJUEVfQ09OVFJPTF9RV19XUklURSkpOwotCWludGVs X3JpbmdfZW1pdChyaW5nLCBpbnRlbF9od3Nfc2Vxbm9fYWRkcmVzcyhlbmdpbmUpKTsKLQlpbnRl bF9yaW5nX2VtaXQocmluZywgMCk7Ci0JaW50ZWxfcmluZ19lbWl0KHJpbmcsIHJlcS0+Z2xvYmFs X3NlcW5vKTsKKwkJCSAgICAgICBQSVBFX0NPTlRST0xfUVdfV1JJVEUpOworCSpvdXQrKyA9IGlu dGVsX2h3c19zZXFub19hZGRyZXNzKGVuZ2luZSk7CisJKm91dCsrID0gMDsKKwkqb3V0KysgPSBy ZXEtPmdsb2JhbF9zZXFubzsKIAkvKiBXZSdyZSB0aHJhc2hpbmcgb25lIGR3b3JkIG9mIEhXUy4g Ki8KLQlpbnRlbF9yaW5nX2VtaXQocmluZywgMCk7Ci0JaW50ZWxfcmluZ19lbWl0KHJpbmcsIE1J X1VTRVJfSU5URVJSVVBUKTsKLQlpbnRlbF9yaW5nX2VtaXQocmluZywgTUlfTk9PUCk7Ci0JaW50 ZWxfcmluZ19hZHZhbmNlKHJpbmcpOwotCi0JcmVxLT50YWlsID0gcmluZy0+dGFpbDsKKwkqb3V0 KysgPSAwOworCSpvdXQrKyA9IE1JX1VTRVJfSU5URVJSVVBUOworCSpvdXQrKyA9IE1JX05PT1A7 CiAKLQlyZXR1cm4gMDsKKwlyZXEtPnRhaWwgPSBpbnRlbF9yaW5nX29mZnNldChyZXEtPnJpbmcs IG91dCk7CiB9CiAKIHN0YXRpYyBjb25zdCBpbnQgZ2VuOF9yZW5kZXJfZW1pdF9icmVhZGNydW1i X3N6ID0gODsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZm ZXIuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaAppbmRleCA3Yjdh YWFmYWMwZGEuLjlkMjI4YmVlMzUxMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfcmluZ2J1ZmZlci5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Jpbmdi dWZmZXIuaApAQCAtMjU1LDcgKzI1NSw4IEBAIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgewogI2Rl ZmluZSBJOTE1X0RJU1BBVENIX1NFQ1VSRSBCSVQoMCkKICNkZWZpbmUgSTkxNV9ESVNQQVRDSF9Q SU5ORUQgQklUKDEpCiAjZGVmaW5lIEk5MTVfRElTUEFUQ0hfUlMgICAgIEJJVCgyKQotCWludAkJ KCplbWl0X2JyZWFkY3J1bWIpKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxKTsKKwl2 b2lkCQkoKmVtaXRfYnJlYWRjcnVtYikoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEs CisJCQkJCSAgIHUzMiAqb3V0KTsKIAlpbnQJCWVtaXRfYnJlYWRjcnVtYl9zejsKIAogCS8qIFBh c3MgdGhlIHJlcXVlc3QgdG8gdGhlIGhhcmR3YXJlIHF1ZXVlIChlLmcuIGRpcmVjdGx5IGludG8K QEAgLTMzMSw3ICszMzIsNyBAQCBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzIHsKIAkJLyogQUtBIHdh aXQoKSAqLwogCQlpbnQJKCpzeW5jX3RvKShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJl cSwKIAkJCQkgICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnNpZ25hbCk7Ci0JCWludAko KnNpZ25hbCkoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEpOworCQl1MzIJKigqc2ln bmFsKShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwgdTMyICpvdXQpOwogCX0gc2Vt YXBob3JlOwogCiAJLyogRXhlY2xpc3RzICovCkBAIC00ODcsMTAgKzQ4OCwxMSBAQCBzdGF0aWMg aW5saW5lIHZvaWQgaW50ZWxfcmluZ19hZHZhbmNlKHN0cnVjdCBpbnRlbF9yaW5nICpyaW5nKQog CSAqLwogfQogCi1zdGF0aWMgaW5saW5lIHUzMiBpbnRlbF9yaW5nX29mZnNldChzdHJ1Y3QgaW50 ZWxfcmluZyAqcmluZywgdTMyIHZhbHVlKQorc3RhdGljIGlubGluZSB1MzIgaW50ZWxfcmluZ19v ZmZzZXQoc3RydWN0IGludGVsX3JpbmcgKnJpbmcsIHZvaWQgKmFkZHIpCiB7CiAJLyogRG9uJ3Qg d3JpdGUgcmluZy0+c2l6ZSAoZXF1aXZhbGVudCB0byAwKSBhcyB0aGF0IGhhbmdzIHNvbWUgR1BV cy4gKi8KLQlyZXR1cm4gdmFsdWUgJiAocmluZy0+c2l6ZSAtIDEpOworCXUzMiBvZmZzZXQgPSBh ZGRyIC0gcmluZy0+dmFkZHI7CisJcmV0dXJuIG9mZnNldCAmIChyaW5nLT5zaXplIC0gMSk7CiB9 CiAKIGludCBfX2ludGVsX3Jpbmdfc3BhY2UoaW50IGhlYWQsIGludCB0YWlsLCBpbnQgc2l6ZSk7 Ci0tIAoyLjkuMwoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3Jn Cmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4 Cg==