From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH 01/62] drm/i915: Only start retire worker when idle Date: Fri, 3 Jun 2016 17:36:26 +0100 Message-ID: <1464971847-15809-2-git-send-email-chris@chris-wilson.co.uk> References: <1464971847-15809-1-git-send-email-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wm0-x242.google.com (mail-wm0-x242.google.com [IPv6:2a00:1450:400c:c09::242]) by gabe.freedesktop.org (Postfix) with ESMTPS id D31BF6E17A for ; Fri, 3 Jun 2016 16:37:37 +0000 (UTC) Received: by mail-wm0-x242.google.com with SMTP id a20so597922wma.3 for ; Fri, 03 Jun 2016 09:37:37 -0700 (PDT) In-Reply-To: <1464971847-15809-1-git-send-email-chris@chris-wilson.co.uk> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org VGhlIHJldGlyZSB3b3JrZXIgaXMgYSBsb3cgZnJlcXVlbmN5IHRhc2sgdGhhdCBtYWtlcyBzdXJl IHdlIHJldGlyZQpvdXRzdGFuZGluZyByZXF1ZXN0cyBpZiB1c2Vyc3BhY2UgaXMgYmVpbmcgbGF4 LiBXZSBvbmx5IG5lZWQgdG8gc3RhcnQgaXQKb25jZSBhcyBpdCByZW1haW5zIGFjdGl2ZSB1bnRp bCB0aGUgR1BVIGlzIGlkbGUsIHNvIGRvIGEgY2hlYXAgdGVzdApiZWZvcmUgdGhlIG1vcmUgZXhw ZW5zaXZlIHF1ZXVlX3dvcmsoKS4gQSBjb25zZXF1ZW5jZSBvZiB0aGlzIGlzIHRoYXQgd2UKbmVl ZCBjb3JyZWN0IGxvY2tpbmcgaW4gdGhlIHdvcmtlciB0byBtYWtlIHRoZSBob3QgcGF0aCBvZiBy ZXF1ZXN0CnN1Ym1pc3Npb24gY2hlYXAuIFRvIGtlZXAgdGhlIHN5bW1ldHJ5IGFuZCBrZWVwIGhh bmdjaGVjayBzdHJpY3RseSBib3VuZApieSB0aGUgR1BVJ3Mgd2FrZWxvY2ssIHdlIG1vdmUgdGhl IGNhbmNlbF9zeW5jKGhhbmdjaGVjaykgdG8gdGhlIGlkbGUKd29ya2VyIGJlZm9yZSBkcm9wcGlu ZyB0aGUgd2FrZWxvY2suCgp2MjogR3VhcmQgYWdhaW5zdCBSQ1UgZm91bGluZyB0aGUgYnJlYWRj cnVtYnMgYm90dG9tLWhhbGYgd2hpbHN0IHdlIGtpY2sKdGhlIHdhaXRlci4KdjM6IFJlbW92ZSB0 aGUgd2FrZXJlZiBhc3NlcnRpb24gc3F1ZWxjaGluZyAobm93IHdlIGhvbGQgYSB3YWtlcmVmIGZv cgp0aGUgaGFuZ2NoZWNrLCBhbnkgcnBtIGVycm9yIHRoZXJlIGlzIGdlbnVpbmUpLgp2NDogVG8g cHJldmVudCBleGNlc3Mgd29yayB3aGVuIHJldGlyaW5nIHJlcXVlc3RzLCB3ZSBzcGxpdCB0aGUg YnVzeQpmbGFnIGludG8gdHdvLCBhIGJvb2xlYW4gdG8gZGVub3RlIHdoZXRoZXIgd2UgaG9sZCB0 aGUgd2FrZXJlZiBhbmQgYQpiaXRtYXNrIG9mIGFjdGl2ZSBlbmdpbmVzLgoKU2lnbmVkLW9mZi1i eTogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+ClJlZmVyZW5jZXM6IGh0 dHBzOi8vYnVncy5mcmVlZGVza3RvcC5vcmcvc2hvd19idWcuY2dpP2lkPTg4NDM3Ci0tLQogZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMgICAgICAgIHwgICA1ICstCiBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jICAgICAgICAgICAgfCAgIDIgLQogZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAgICAgICAgIHwgIDU2ICsrKysrKystLS0tLS0tCiBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jICAgICAgICAgICAgfCAxMTQgKysrKysrKysrKysr KysrKysrLS0tLS0tLS0tLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2V4ZWNidWZm ZXIuYyB8ICAgNiArKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEuYyAgICAgICAgICAg IHwgIDE1ICstLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyAgICAgICB8 ICAyNiAtLS0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jICAgICAgICAgICAg fCAgIDIgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaCAgICB8ICAg NCArLQogOSBmaWxlcyBjaGFuZ2VkLCAxMTUgaW5zZXJ0aW9ucygrKSwgMTE1IGRlbGV0aW9ucygt KQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKaW5kZXggNzJkYWU2ZmIwYWEyLi5kZDZj ZjIyMmU4ZjUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5j CisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCkBAIC0yNDM3LDcgKzI0 MzcsOCBAQCBzdGF0aWMgaW50IGk5MTVfcnBzX2Jvb3N0X2luZm8oc3RydWN0IHNlcV9maWxlICpt LCB2b2lkICpkYXRhKQogCXN0cnVjdCBkcm1fZmlsZSAqZmlsZTsKIAogCXNlcV9wcmludGYobSwg IlJQUyBlbmFibGVkPyAlZFxuIiwgZGV2X3ByaXYtPnJwcy5lbmFibGVkKTsKLQlzZXFfcHJpbnRm KG0sICJHUFUgYnVzeT8gJWRcbiIsIGRldl9wcml2LT5tbS5idXN5KTsKKwlzZXFfcHJpbnRmKG0s ICJHUFUgYnVzeT8gJXMgWyV4XVxuIiwKKwkJICAgeWVzbm8oZGV2X3ByaXYtPmd0LmF3YWtlKSwg ZGV2X3ByaXYtPmd0LmFjdGl2ZV9lbmdpbmVzKTsKIAlzZXFfcHJpbnRmKG0sICJDUFUgd2FpdGlu Zz8gJWRcbiIsIGNvdW50X2lycV93YWl0ZXJzKGRldl9wcml2KSk7CiAJc2VxX3ByaW50ZihtLCAi RnJlcXVlbmN5IHJlcXVlc3RlZCAlZDsgbWluIGhhcmQ6JWQsIHNvZnQ6JWQ7IG1heCBzb2Z0OiVk LCBoYXJkOiVkXG4iLAogCQkgICBpbnRlbF9ncHVfZnJlcShkZXZfcHJpdiwgZGV2X3ByaXYtPnJw cy5jdXJfZnJlcSksCkBAIC0yNzc3LDcgKzI3NzgsNyBAQCBzdGF0aWMgaW50IGk5MTVfcnVudGlt ZV9wbV9zdGF0dXMoc3RydWN0IHNlcV9maWxlICptLCB2b2lkICp1bnVzZWQpCiAJaWYgKCFIQVNf UlVOVElNRV9QTShkZXZfcHJpdikpCiAJCXNlcV9wdXRzKG0sICJSdW50aW1lIHBvd2VyIG1hbmFn ZW1lbnQgbm90IHN1cHBvcnRlZFxuIik7CiAKLQlzZXFfcHJpbnRmKG0sICJHUFUgaWRsZTogJXNc biIsIHllc25vKCFkZXZfcHJpdi0+bW0uYnVzeSkpOworCXNlcV9wcmludGYobSwgIkdQVSBpZGxl OiAlc1xuIiwgeWVzbm8oIWRldl9wcml2LT5ndC5hd2FrZSkpOwogCXNlcV9wcmludGYobSwgIklS UXMgZGlzYWJsZWQ6ICVzXG4iLAogCQkgICB5ZXNubyghaW50ZWxfaXJxc19lbmFibGVkKGRldl9w cml2KSkpOwogI2lmZGVmIENPTkZJR19QTQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9kcnYuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMKaW5kZXggM2M4 Yzc1Yzc3NTc0Li41ZjcyMDhkMmZkYmYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZHJ2LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYwpAQCAtMjY5 Nyw4ICsyNjk3LDYgQEAgc3RhdGljIGludCBpbnRlbF9ydW50aW1lX3N1c3BlbmQoc3RydWN0IGRl dmljZSAqZGV2aWNlKQogCWk5MTVfZ2VtX3JlbGVhc2VfYWxsX21tYXBzKGRldl9wcml2KTsKIAlt dXRleF91bmxvY2soJmRldi0+c3RydWN0X211dGV4KTsKIAotCWNhbmNlbF9kZWxheWVkX3dvcmtf c3luYygmZGV2X3ByaXYtPmdwdV9lcnJvci5oYW5nY2hlY2tfd29yayk7Ci0KIAlpbnRlbF9ndWNf c3VzcGVuZChkZXYpOwogCiAJaW50ZWxfc3VzcGVuZF9ndF9wb3dlcnNhdmUoZGV2X3ByaXYpOwpk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZHJ2LmgKaW5kZXggODhkOTI0MjM5OGNlLi4zZjA3NWFkZjllODQgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9kcnYuaApAQCAtMTMwNSwzNyArMTMwNSwxMSBAQCBzdHJ1Y3QgaTkx NV9nZW1fbW0gewogCXN0cnVjdCBsaXN0X2hlYWQgZmVuY2VfbGlzdDsKIAogCS8qKgotCSAqIFdl IGxlYXZlIHRoZSB1c2VyIElSUSBvZmYgYXMgbXVjaCBhcyBwb3NzaWJsZSwKLQkgKiBidXQgdGhp cyBtZWFucyB0aGF0IHJlcXVlc3RzIHdpbGwgZmluaXNoIGFuZCBuZXZlcgotCSAqIGJlIHJldGly ZWQgb25jZSB0aGUgc3lzdGVtIGdvZXMgaWRsZS4gU2V0IGEgdGltZXIgdG8KLQkgKiBmaXJlIHBl cmlvZGljYWxseSB3aGlsZSB0aGUgcmluZyBpcyBydW5uaW5nLiBXaGVuIGl0Ci0JICogZmlyZXMs IGdvIHJldGlyZSByZXF1ZXN0cy4KLQkgKi8KLQlzdHJ1Y3QgZGVsYXllZF93b3JrIHJldGlyZV93 b3JrOwotCi0JLyoqCi0JICogV2hlbiB3ZSBkZXRlY3QgYW4gaWRsZSBHUFUsIHdlIHdhbnQgdG8g dHVybiBvbgotCSAqIHBvd2Vyc2F2aW5nIGZlYXR1cmVzLiBTbyBvbmNlIHdlIHNlZSB0aGF0IHRo ZXJlCi0JICogYXJlIG5vIG1vcmUgcmVxdWVzdHMgb3V0c3RhbmRpbmcgYW5kIG5vIG1vcmUKLQkg KiBhcnJpdmUgd2l0aGluIGEgc21hbGwgcGVyaW9kIG9mIHRpbWUsIHdlIGZpcmUKLQkgKiBvZmYg dGhlIGlkbGVfd29yay4KLQkgKi8KLQlzdHJ1Y3QgZGVsYXllZF93b3JrIGlkbGVfd29yazsKLQot CS8qKgogCSAqIEFyZSB3ZSBpbiBhIG5vbi1pbnRlcnJ1cHRpYmxlIHNlY3Rpb24gb2YgY29kZSBs aWtlCiAJICogbW9kZXNldHRpbmc/CiAJICovCiAJYm9vbCBpbnRlcnJ1cHRpYmxlOwogCi0JLyoq Ci0JICogSXMgdGhlIEdQVSBjdXJyZW50bHkgY29uc2lkZXJlZCBpZGxlLCBvciBidXN5IGV4ZWN1 dGluZyB1c2Vyc3BhY2UKLQkgKiByZXF1ZXN0cz8gIFdoaWxzdCBpZGxlLCB3ZSBhdHRlbXB0IHRv IHBvd2VyIGRvd24gdGhlIGhhcmR3YXJlIGFuZAotCSAqIGRpc3BsYXkgY2xvY2tzLiBJbiBvcmRl ciB0byByZWR1Y2UgdGhlIGVmZmVjdCBvbiBwZXJmb3JtYW5jZSwgdGhlcmUKLQkgKiBpcyBhIHNs aWdodCBkZWxheSBiZWZvcmUgd2UgZG8gc28uCi0JICovCi0JYm9vbCBidXN5OwotCiAJLyogdGhl IGluZGljYXRvciBmb3IgZGlzcGF0Y2ggdmlkZW8gY29tbWFuZHMgb24gdHdvIEJTRCByaW5ncyAq LwogCXVuc2lnbmVkIGludCBic2RfcmluZ19kaXNwYXRjaF9pbmRleDsKIApAQCAtMjAzNCw2ICsy MDA4LDM0IEBAIHN0cnVjdCBkcm1faTkxNV9wcml2YXRlIHsKIAkJaW50ICgqaW5pdF9lbmdpbmVz KShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKIAkJdm9pZCAoKmNsZWFudXBfZW5naW5lKShzdHJ1 Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpOwogCQl2b2lkICgqc3RvcF9lbmdpbmUpKHN0cnVj dCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSk7CisKKwkJLyoqCisJCSAqIElzIHRoZSBHUFUgY3Vy cmVudGx5IGNvbnNpZGVyZWQgaWRsZSwgb3IgYnVzeSBleGVjdXRpbmcKKwkJICogdXNlcnNwYWNl IHJlcXVlc3RzPyBXaGlsc3QgaWRsZSwgd2UgYWxsb3cgcnVudGltZSBwb3dlcgorCQkgKiBtYW5h Z2VtZW50IHRvIHBvd2VyIGRvd24gdGhlIGhhcmR3YXJlIGFuZCBkaXNwbGF5IGNsb2Nrcy4KKwkJ ICogSW4gb3JkZXIgdG8gcmVkdWNlIHRoZSBlZmZlY3Qgb24gcGVyZm9ybWFuY2UsIHRoZXJlCisJ CSAqIGlzIGEgc2xpZ2h0IGRlbGF5IGJlZm9yZSB3ZSBkbyBzby4KKwkJICovCisJCXVuc2lnbmVk IGFjdGl2ZV9lbmdpbmVzOworCQlib29sIGF3YWtlOworCisJCS8qKgorCQkgKiBXZSBsZWF2ZSB0 aGUgdXNlciBJUlEgb2ZmIGFzIG11Y2ggYXMgcG9zc2libGUsCisJCSAqIGJ1dCB0aGlzIG1lYW5z IHRoYXQgcmVxdWVzdHMgd2lsbCBmaW5pc2ggYW5kIG5ldmVyCisJCSAqIGJlIHJldGlyZWQgb25j ZSB0aGUgc3lzdGVtIGdvZXMgaWRsZS4gU2V0IGEgdGltZXIgdG8KKwkJICogZmlyZSBwZXJpb2Rp Y2FsbHkgd2hpbGUgdGhlIHJpbmcgaXMgcnVubmluZy4gV2hlbiBpdAorCQkgKiBmaXJlcywgZ28g cmV0aXJlIHJlcXVlc3RzLgorCQkgKi8KKwkJc3RydWN0IGRlbGF5ZWRfd29yayByZXRpcmVfd29y azsKKworCQkvKioKKwkJICogV2hlbiB3ZSBkZXRlY3QgYW4gaWRsZSBHUFUsIHdlIHdhbnQgdG8g dHVybiBvbgorCQkgKiBwb3dlcnNhdmluZyBmZWF0dXJlcy4gU28gb25jZSB3ZSBzZWUgdGhhdCB0 aGVyZQorCQkgKiBhcmUgbm8gbW9yZSByZXF1ZXN0cyBvdXRzdGFuZGluZyBhbmQgbm8gbW9yZQor CQkgKiBhcnJpdmUgd2l0aGluIGEgc21hbGwgcGVyaW9kIG9mIHRpbWUsIHdlIGZpcmUKKwkJICog b2ZmIHRoZSBpZGxlX3dvcmsuCisJCSAqLworCQlzdHJ1Y3QgZGVsYXllZF93b3JrIGlkbGVfd29y azsKIAl9IGd0OwogCiAJLyogcGVyZm9ybSBQSFkgc3RhdGUgc2FuaXR5IGNoZWNrcz8gKi8KQEAg LTMyNDcsNyArMzI0OSw3IEBAIGludCBfX211c3RfY2hlY2sgaTkxNV9nZW1fc2V0X3NlcW5vKHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYsIHUzMiBzZXFubyk7CiBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3Jl cXVlc3QgKgogaTkxNV9nZW1fZmluZF9hY3RpdmVfcmVxdWVzdChzdHJ1Y3QgaW50ZWxfZW5naW5l X2NzICplbmdpbmUpOwogCi1ib29sIGk5MTVfZ2VtX3JldGlyZV9yZXF1ZXN0cyhzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwordm9pZCBpOTE1X2dlbV9yZXRpcmVfcmVxdWVzdHMo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKIHZvaWQgaTkxNV9nZW1fcmV0aXJl X3JlcXVlc3RzX3Jpbmcoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKTsKIAogc3RhdGlj IGlubGluZSB1MzIgaTkxNV9yZXNldF9jb3VudGVyKHN0cnVjdCBpOTE1X2dwdV9lcnJvciAqZXJy b3IpCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYwppbmRleCBmNGU1NTBkZGFhNWQuLjVhNzEzMWI3NDlh MiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYworKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCkBAIC0yNTU0LDYgKzI1NTQsMjYgQEAgaTkxNV9n ZW1fZ2V0X3NlcW5vKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgdTMyICpzZXFu bykKIAlyZXR1cm4gMDsKIH0KIAorc3RhdGljIHZvaWQgaTkxNV9nZW1fbWFya19idXN5KHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKKwkJCSAgICAgICBjb25zdCBzdHJ1Y3QgaW50 ZWxfZW5naW5lX2NzICplbmdpbmUpCit7CisJZGV2X3ByaXYtPmd0LmFjdGl2ZV9lbmdpbmVzIHw9 IGludGVsX2VuZ2luZV9mbGFnKGVuZ2luZSk7CisJaWYgKGRldl9wcml2LT5ndC5hd2FrZSkKKwkJ cmV0dXJuOworCisJaW50ZWxfcnVudGltZV9wbV9nZXRfbm9yZXN1bWUoZGV2X3ByaXYpOworCWRl dl9wcml2LT5ndC5hd2FrZSA9IHRydWU7CisKKwlpbnRlbF9lbmFibGVfZ3RfcG93ZXJzYXZlKGRl dl9wcml2KTsKKwlpOTE1X3VwZGF0ZV9nZnhfdmFsKGRldl9wcml2KTsKKwlpZiAoSU5URUxfSU5G TyhkZXZfcHJpdiktPmdlbiA+PSA2KQorCQlnZW42X3Jwc19idXN5KGRldl9wcml2KTsKKworCXF1 ZXVlX2RlbGF5ZWRfd29yayhkZXZfcHJpdi0+d3EsCisJCQkgICAmZGV2X3ByaXYtPmd0LnJldGly ZV93b3JrLAorCQkJICAgcm91bmRfamlmZmllc191cF9yZWxhdGl2ZShIWikpOworfQorCiAvKgog ICogTkI6IFRoaXMgZnVuY3Rpb24gaXMgbm90IGFsbG93ZWQgdG8gZmFpbC4gRG9pbmcgc28gd291 bGQgbWVhbiB0aGUgdGhlCiAgKiByZXF1ZXN0IGlzIG5vdCBiZWluZyB0cmFja2VkIGZvciBjb21w bGV0aW9uIGJ1dCB0aGUgd29yayBpdHNlbGYgaXMKQEAgLTI2NDAsMTIgKzI2NjAsNiBAQCB2b2lk IF9faTkxNV9hZGRfcmVxdWVzdChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcXVlc3Qs CiAJfQogCS8qIE5vdCBhbGxvd2VkIHRvIGZhaWwhICovCiAJV0FSTihyZXQsICJlbWl0fGFkZF9y ZXF1ZXN0IGZhaWxlZDogJWQhXG4iLCByZXQpOwotCi0JcXVldWVfZGVsYXllZF93b3JrKGRldl9w cml2LT53cSwKLQkJCSAgICZkZXZfcHJpdi0+bW0ucmV0aXJlX3dvcmssCi0JCQkgICByb3VuZF9q aWZmaWVzX3VwX3JlbGF0aXZlKEhaKSk7Ci0JaW50ZWxfbWFya19idXN5KGRldl9wcml2KTsKLQog CS8qIFNhbml0eSBjaGVjayB0aGF0IHRoZSByZXNlcnZlZCBzaXplIHdhcyBsYXJnZSBlbm91Z2gu ICovCiAJcmV0ID0gaW50ZWxfcmluZ19nZXRfdGFpbChyaW5nYnVmKSAtIHJlcXVlc3Rfc3RhcnQ7 CiAJaWYgKHJldCA8IDApCkBAIC0yNjU0LDYgKzI2NjgsOCBAQCB2b2lkIF9faTkxNV9hZGRfcmVx dWVzdChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcXVlc3QsCiAJCSAgIk5vdCBlbm91 Z2ggc3BhY2UgcmVzZXJ2ZWQgKCVkIGJ5dGVzKSAiCiAJCSAgImZvciBhZGRpbmcgdGhlIHJlcXVl c3QgKCVkIGJ5dGVzKVxuIiwKIAkJICByZXNlcnZlZF90YWlsLCByZXQpOworCisJaTkxNV9nZW1f bWFya19idXN5KGRldl9wcml2LCBlbmdpbmUpOwogfQogCiBzdGF0aWMgYm9vbCBpOTE1X2NvbnRl eHRfaXNfYmFubmVkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKQEAgLTI5Njgs NDYgKzI5ODQsNDcgQEAgaTkxNV9nZW1fcmV0aXJlX3JlcXVlc3RzX3Jpbmcoc3RydWN0IGludGVs X2VuZ2luZV9jcyAqZW5naW5lKQogCVdBUk5fT04oaTkxNV92ZXJpZnlfbGlzdHMoZW5naW5lLT5k ZXYpKTsKIH0KIAotYm9vbAotaTkxNV9nZW1fcmV0aXJlX3JlcXVlc3RzKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdikKK3ZvaWQgaTkxNV9nZW1fcmV0aXJlX3JlcXVlc3RzKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIHsKIAlzdHJ1Y3QgaW50ZWxfZW5naW5lX2Nz ICplbmdpbmU7Ci0JYm9vbCBpZGxlID0gdHJ1ZTsKKworCWlmIChkZXZfcHJpdi0+Z3QuYWN0aXZl X2VuZ2luZXMgPT0gMCkKKwkJcmV0dXJuOworCisJR0VNX0JVR19PTighZGV2X3ByaXYtPmd0LmF3 YWtlKTsKIAogCWZvcl9lYWNoX2VuZ2luZShlbmdpbmUsIGRldl9wcml2KSB7CiAJCWk5MTVfZ2Vt X3JldGlyZV9yZXF1ZXN0c19yaW5nKGVuZ2luZSk7Ci0JCWlkbGUgJj0gbGlzdF9lbXB0eSgmZW5n aW5lLT5yZXF1ZXN0X2xpc3QpOwotCQlpZiAoaTkxNS5lbmFibGVfZXhlY2xpc3RzKSB7Ci0JCQlz cGluX2xvY2tfYmgoJmVuZ2luZS0+ZXhlY2xpc3RfbG9jayk7Ci0JCQlpZGxlICY9IGxpc3RfZW1w dHkoJmVuZ2luZS0+ZXhlY2xpc3RfcXVldWUpOwotCQkJc3Bpbl91bmxvY2tfYmgoJmVuZ2luZS0+ ZXhlY2xpc3RfbG9jayk7Ci0JCX0KKwkJaWYgKGxpc3RfZW1wdHkoJmVuZ2luZS0+cmVxdWVzdF9s aXN0KSkKKwkJCWRldl9wcml2LT5ndC5hY3RpdmVfZW5naW5lcyAmPSB+aW50ZWxfZW5naW5lX2Zs YWcoZW5naW5lKTsKIAl9CiAKLQlpZiAoaWRsZSkKKwlpZiAoZGV2X3ByaXYtPmd0LmFjdGl2ZV9l bmdpbmVzID09IDApCiAJCW1vZF9kZWxheWVkX3dvcmsoZGV2X3ByaXYtPndxLAotCQkJCSAmZGV2 X3ByaXYtPm1tLmlkbGVfd29yaywKKwkJCQkgJmRldl9wcml2LT5ndC5pZGxlX3dvcmssCiAJCQkJ IG1zZWNzX3RvX2ppZmZpZXMoMTAwKSk7Ci0KLQlyZXR1cm4gaWRsZTsKIH0KIAogc3RhdGljIHZv aWQKIGk5MTVfZ2VtX3JldGlyZV93b3JrX2hhbmRsZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3Jr KQogewogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9Ci0JCWNvbnRhaW5lcl9v Zih3b3JrLCB0eXBlb2YoKmRldl9wcml2KSwgbW0ucmV0aXJlX3dvcmsud29yayk7CisJCWNvbnRh aW5lcl9vZih3b3JrLCB0eXBlb2YoKmRldl9wcml2KSwgZ3QucmV0aXJlX3dvcmsud29yayk7CiAJ c3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGRldl9wcml2LT5kZXY7Ci0JYm9vbCBpZGxlOwogCiAJ LyogQ29tZSBiYWNrIGxhdGVyIGlmIHRoZSBkZXZpY2UgaXMgYnVzeS4uLiAqLwotCWlkbGUgPSBm YWxzZTsKIAlpZiAobXV0ZXhfdHJ5bG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpKSB7Ci0JCWlkbGUg PSBpOTE1X2dlbV9yZXRpcmVfcmVxdWVzdHMoZGV2X3ByaXYpOworCQlpOTE1X2dlbV9yZXRpcmVf cmVxdWVzdHMoZGV2X3ByaXYpOwogCQltdXRleF91bmxvY2soJmRldi0+c3RydWN0X211dGV4KTsK IAl9Ci0JaWYgKCFpZGxlKQotCQlxdWV1ZV9kZWxheWVkX3dvcmsoZGV2X3ByaXYtPndxLCAmZGV2 X3ByaXYtPm1tLnJldGlyZV93b3JrLAorCisJLyogS2VlcCB0aGUgcmV0aXJlIGhhbmRsZXIgcnVu bmluZyB1bnRpbCB3ZSBhcmUgZmluYWxseSBpZGxlLgorCSAqIFdlIGRvIG5vdCBuZWVkIHRvIGRv IHRoaXMgdGVzdCB1bmRlciBsb2NraW5nIGFzIGluIHRoZSB3b3JzdC1jYXNlCisJICogd2UgcXVl dWUgdGhlIHJldGlyZSB3b3JrZXIgb25jZSB0b28gb2Z0ZW4uCisJICovCisJaWYgKFJFQURfT05D RShkZXZfcHJpdi0+Z3QuYXdha2UpKQorCQlxdWV1ZV9kZWxheWVkX3dvcmsoZGV2X3ByaXYtPndx LAorCQkJCSAgICZkZXZfcHJpdi0+Z3QucmV0aXJlX3dvcmssCiAJCQkJICAgcm91bmRfamlmZmll c191cF9yZWxhdGl2ZShIWikpOwogfQogCkBAIC0zMDE1LDI1ICszMDMyLDM2IEBAIHN0YXRpYyB2 b2lkCiBpOTE1X2dlbV9pZGxlX3dvcmtfaGFuZGxlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmsp CiB7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0KLQkJY29udGFpbmVyX29m KHdvcmssIHR5cGVvZigqZGV2X3ByaXYpLCBtbS5pZGxlX3dvcmsud29yayk7CisJCWNvbnRhaW5l cl9vZih3b3JrLCB0eXBlb2YoKmRldl9wcml2KSwgZ3QuaWRsZV93b3JrLndvcmspOwogCXN0cnVj dCBkcm1fZGV2aWNlICpkZXYgPSBkZXZfcHJpdi0+ZGV2OwogCXN0cnVjdCBpbnRlbF9lbmdpbmVf Y3MgKmVuZ2luZTsKIAotCWZvcl9lYWNoX2VuZ2luZShlbmdpbmUsIGRldl9wcml2KQotCQlpZiAo IWxpc3RfZW1wdHkoJmVuZ2luZS0+cmVxdWVzdF9saXN0KSkKLQkJCXJldHVybjsKKwlpZiAoIVJF QURfT05DRShkZXZfcHJpdi0+Z3QuYXdha2UpKQorCQlyZXR1cm47CiAKLQkvKiB3ZSBwcm9iYWJs eSBzaG91bGQgc3luYyB3aXRoIGhhbmdjaGVjayBoZXJlLCB1c2luZyBjYW5jZWxfd29ya19zeW5j LgotCSAqIEFsc28gbG9ja2luZyBzZWVtcyB0byBiZSBmdWJhciBoZXJlLCBlbmdpbmUtPnJlcXVl c3RfbGlzdCBpcyBwcm90ZWN0ZWQKLQkgKiBieSBkZXYtPnN0cnVjdF9tdXRleC4gKi8KKwltdXRl eF9sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7CisJaWYgKGRldl9wcml2LT5ndC5hY3RpdmVfZW5n aW5lcykKKwkJZ290byBvdXQ7CiAKLQlpbnRlbF9tYXJrX2lkbGUoZGV2X3ByaXYpOworCWZvcl9l YWNoX2VuZ2luZShlbmdpbmUsIGRldl9wcml2KQorCQlpOTE1X2dlbV9iYXRjaF9wb29sX2Zpbmko JmVuZ2luZS0+YmF0Y2hfcG9vbCk7CiAKLQlpZiAobXV0ZXhfdHJ5bG9jaygmZGV2LT5zdHJ1Y3Rf bXV0ZXgpKSB7Ci0JCWZvcl9lYWNoX2VuZ2luZShlbmdpbmUsIGRldl9wcml2KQotCQkJaTkxNV9n ZW1fYmF0Y2hfcG9vbF9maW5pKCZlbmdpbmUtPmJhdGNoX3Bvb2wpOworCUdFTV9CVUdfT04oIWRl dl9wcml2LT5ndC5hd2FrZSk7CisJZGV2X3ByaXYtPmd0LmF3YWtlID0gZmFsc2U7CiAKLQkJbXV0 ZXhfdW5sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7CisJaWYgKElOVEVMX0lORk8oZGV2X3ByaXYp LT5nZW4gPj0gNikKKwkJZ2VuNl9ycHNfaWRsZShkZXZfcHJpdik7CisJaW50ZWxfcnVudGltZV9w bV9wdXQoZGV2X3ByaXYpOworb3V0OgorCW11dGV4X3VubG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgp OworCisJaWYgKCFkZXZfcHJpdi0+Z3QuYXdha2UgJiYKKwkgICAgY2FuY2VsX2RlbGF5ZWRfd29y a19zeW5jKCZkZXZfcHJpdi0+Z3B1X2Vycm9yLmhhbmdjaGVja193b3JrKSkgeworCQl1bnNpZ25l ZCBzdHVjayA9IGludGVsX2tpY2tfd2FpdGVycyhkZXZfcHJpdik7CisJCWlmICh1bmxpa2VseShz dHVjaykpIHsKKwkJCURSTV9ERUJVR19EUklWRVIoImtpY2tlZCBzdHVjayB3YWl0ZXJzLi4ubWlz c2VkIGlycVxuIik7CisJCQlkZXZfcHJpdi0+Z3B1X2Vycm9yLm1pc3NlZF9pcnFfcmluZ3MgfD0g c3R1Y2s7CisJCX0KIAl9CiB9CiAKQEAgLTQxNTQsNyArNDE4Miw3IEBAIGk5MTVfZ2VtX3Jpbmdf dGhyb3R0bGUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgc3RydWN0IGRybV9maWxlICpmaWxlKQog CiAJcmV0ID0gX19pOTE1X3dhaXRfcmVxdWVzdCh0YXJnZXQsIHRydWUsIE5VTEwsIE5VTEwpOwog CWlmIChyZXQgPT0gMCkKLQkJcXVldWVfZGVsYXllZF93b3JrKGRldl9wcml2LT53cSwgJmRldl9w cml2LT5tbS5yZXRpcmVfd29yaywgMCk7CisJCXF1ZXVlX2RlbGF5ZWRfd29yayhkZXZfcHJpdi0+ d3EsICZkZXZfcHJpdi0+Z3QucmV0aXJlX3dvcmssIDApOwogCiAJaTkxNV9nZW1fcmVxdWVzdF91 bnJlZmVyZW5jZSh0YXJnZXQpOwogCkBAIC00NjcyLDEzICs0NzAwLDEzIEBAIGk5MTVfZ2VtX3N1 c3BlbmQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIAltdXRleF91bmxvY2soJmRldi0+c3RydWN0 X211dGV4KTsKIAogCWNhbmNlbF9kZWxheWVkX3dvcmtfc3luYygmZGV2X3ByaXYtPmdwdV9lcnJv ci5oYW5nY2hlY2tfd29yayk7Ci0JY2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKCZkZXZfcHJpdi0+ bW0ucmV0aXJlX3dvcmspOwotCWZsdXNoX2RlbGF5ZWRfd29yaygmZGV2X3ByaXYtPm1tLmlkbGVf d29yayk7CisJY2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKCZkZXZfcHJpdi0+Z3QucmV0aXJlX3dv cmspOworCWZsdXNoX2RlbGF5ZWRfd29yaygmZGV2X3ByaXYtPmd0LmlkbGVfd29yayk7CiAKIAkv KiBBc3NlcnQgdGhhdCB3ZSBzdWNlc3NmdWxseSBmbHVzaGVkIGFsbCB0aGUgd29yayBhbmQKIAkg KiByZXNldCB0aGUgR1BVIGJhY2sgdG8gaXRzIGlkbGUsIGxvdyBwb3dlciBzdGF0ZS4KIAkgKi8K LQlXQVJOX09OKGRldl9wcml2LT5tbS5idXN5KTsKKwlXQVJOX09OKGRldl9wcml2LT5ndC5hd2Fr ZSk7CiAKIAlyZXR1cm4gMDsKIApAQCAtNDk4Miw5ICs1MDEwLDkgQEAgaTkxNV9nZW1fbG9hZF9p bml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiAJCWluaXRfZW5naW5lX2xpc3RzKCZkZXZfcHJp di0+ZW5naW5lW2ldKTsKIAlmb3IgKGkgPSAwOyBpIDwgSTkxNV9NQVhfTlVNX0ZFTkNFUzsgaSsr KQogCQlJTklUX0xJU1RfSEVBRCgmZGV2X3ByaXYtPmZlbmNlX3JlZ3NbaV0ubHJ1X2xpc3QpOwot CUlOSVRfREVMQVlFRF9XT1JLKCZkZXZfcHJpdi0+bW0ucmV0aXJlX3dvcmssCisJSU5JVF9ERUxB WUVEX1dPUksoJmRldl9wcml2LT5ndC5yZXRpcmVfd29yaywKIAkJCSAgaTkxNV9nZW1fcmV0aXJl X3dvcmtfaGFuZGxlcik7Ci0JSU5JVF9ERUxBWUVEX1dPUksoJmRldl9wcml2LT5tbS5pZGxlX3dv cmssCisJSU5JVF9ERUxBWUVEX1dPUksoJmRldl9wcml2LT5ndC5pZGxlX3dvcmssCiAJCQkgIGk5 MTVfZ2VtX2lkbGVfd29ya19oYW5kbGVyKTsKIAlpbml0X3dhaXRxdWV1ZV9oZWFkKCZkZXZfcHJp di0+Z3B1X2Vycm9yLndhaXRfcXVldWUpOwogCWluaXRfd2FpdHF1ZXVlX2hlYWQoJmRldl9wcml2 LT5ncHVfZXJyb3IucmVzZXRfcXVldWUpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9nZW1fZXhlY2J1ZmZlci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1f ZXhlY2J1ZmZlci5jCmluZGV4IDgwOTc2OThiOTYyMi4uZDMyOTdkYWIwMjk4IDEwMDY0NAotLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9leGVjYnVmZmVyLmMKKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZXhlY2J1ZmZlci5jCkBAIC0xNDc3LDYgKzE0NzcsMTIg QEAgaTkxNV9nZW1fZG9fZXhlY2J1ZmZlcihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpk YXRhLAogCQlkaXNwYXRjaF9mbGFncyB8PSBJOTE1X0RJU1BBVENIX1JTOwogCX0KIAorCS8qIFRh a2UgYSBsb2NhbCB3YWtlcmVmIGZvciBwcmVwYXJpbmcgdG8gZGlzcGF0Y2ggdGhlIGV4ZWNidWYg YXMKKwkgKiB3ZSBleHBlY3QgdG8gYWNjZXNzIHRoZSBoYXJkd2FyZSBmYWlybHkgZnJlcXVlbnRs eSBpbiB0aGUKKwkgKiBwcm9jZXNzLiBVcG9uIGZpcnN0IGRpc3BhdGNoLCB3ZSBhY3F1aXJlIGFu b3RoZXIgcHJvbG9uZ2VkCisJICogd2FrZXJlZiB0aGF0IHdlIGhvbGQgdW50aWwgdGhlIEdQVSBo YXMgYmVlbiBpZGxlIGZvciBhdCBsZWFzdAorCSAqIDEwMG1zLgorCSAqLwogCWludGVsX3J1bnRp bWVfcG1fZ2V0KGRldl9wcml2KTsKIAogCXJldCA9IGk5MTVfbXV0ZXhfbG9ja19pbnRlcnJ1cHRp YmxlKGRldik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2lycS5jIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEuYwppbmRleCBmNzRmNTcyN2VhNzcuLjdhMmRj OGYxZjY0ZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEuYworKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2lycS5jCkBAIC0zMTAyLDEyICszMTAyLDggQEAg c3RhdGljIHZvaWQgaTkxNV9oYW5nY2hlY2tfZWxhcHNlZChzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndv cmspCiAJaWYgKCFpOTE1LmVuYWJsZV9oYW5nY2hlY2spCiAJCXJldHVybjsKIAotCS8qCi0JICog VGhlIGhhbmdjaGVjayB3b3JrIGlzIHN5bmNlZCBkdXJpbmcgcnVudGltZSBzdXNwZW5kLCB3ZSBk b24ndAotCSAqIHJlcXVpcmUgYSB3YWtlcmVmLiBUT0RPOiBpbnN0ZWFkIG9mIGRpc2FibGluZyB0 aGUgYXNzZXJ0cyBtYWtlCi0JICogc3VyZSB0aGF0IHdlIGhvbGQgYSByZWZlcmVuY2Ugd2hlbiB0 aGlzIHdvcmsgaXMgcnVubmluZy4KLQkgKi8KLQlESVNBQkxFX1JQTV9XQUtFUkVGX0FTU0VSVFMo ZGV2X3ByaXYpOworCWlmICghUkVBRF9PTkNFKGRldl9wcml2LT5ndC5hd2FrZSkpCisJCXJldHVy bjsKIAogCS8qIEFzIGVuYWJsaW5nIHRoZSBHUFUgcmVxdWlyZXMgZmFpcmx5IGV4dGVuc2l2ZSBt bWlvIGFjY2VzcywKIAkgKiBwZXJpb2RpY2FsbHkgYXJtIHRoZSBtbWlvIGNoZWNrZXIgdG8gc2Vl IGlmIHdlIGFyZSB0cmlnZ2VyaW5nCkBAIC0zMjE1LDE3ICszMjExLDEyIEBAIHN0YXRpYyB2b2lk IGk5MTVfaGFuZ2NoZWNrX2VsYXBzZWQoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQogCQl9CiAJ fQogCi0JaWYgKHJpbmdzX2h1bmcpIHsKKwlpZiAocmluZ3NfaHVuZykKIAkJaTkxNV9oYW5kbGVf ZXJyb3IoZGV2X3ByaXYsIHJpbmdzX2h1bmcsICJFbmdpbmUocykgaHVuZyIpOwotCQlnb3RvIG91 dDsKLQl9CiAKIAkvKiBSZXNldCB0aW1lciBpbiBjYXNlIEdQVSBoYW5ncyB3aXRob3V0IGFub3Ro ZXIgcmVxdWVzdCBiZWluZyBhZGRlZCAqLwogCWlmIChidXN5X2NvdW50KQogCQlpOTE1X3F1ZXVl X2hhbmdjaGVjayhkZXZfcHJpdik7Ci0KLW91dDoKLQlFTkFCTEVfUlBNX1dBS0VSRUZfQVNTRVJU UyhkZXZfcHJpdik7CiB9CiAKIHN0YXRpYyB2b2lkIGlieF9pcnFfcmVzZXQoc3RydWN0IGRybV9k ZXZpY2UgKmRldikKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3Bs YXkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwppbmRleCBiYjA5ZWU2 ZDFhM2YuLjE0ZTQxZmRkODExMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZGlzcGxheS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwpA QCAtMTA5NjksMzIgKzEwOTY5LDYgQEAgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmludGVsX2Ny dGNfbW9kZV9nZXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAlyZXR1cm4gbW9kZTsKIH0KIAot dm9pZCBpbnRlbF9tYXJrX2J1c3koc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQot ewotCWlmIChkZXZfcHJpdi0+bW0uYnVzeSkKLQkJcmV0dXJuOwotCi0JaW50ZWxfcnVudGltZV9w bV9nZXQoZGV2X3ByaXYpOwotCWludGVsX2VuYWJsZV9ndF9wb3dlcnNhdmUoZGV2X3ByaXYpOwot CWk5MTVfdXBkYXRlX2dmeF92YWwoZGV2X3ByaXYpOwotCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYp ID49IDYpCi0JCWdlbjZfcnBzX2J1c3koZGV2X3ByaXYpOwotCWRldl9wcml2LT5tbS5idXN5ID0g dHJ1ZTsKLX0KLQotdm9pZCBpbnRlbF9tYXJrX2lkbGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2KQotewotCWlmICghZGV2X3ByaXYtPm1tLmJ1c3kpCi0JCXJldHVybjsKLQotCWRl dl9wcml2LT5tbS5idXN5ID0gZmFsc2U7Ci0KLQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA2 KQotCQlnZW42X3Jwc19pZGxlKGRldl9wcml2KTsKLQotCWludGVsX3J1bnRpbWVfcG1fcHV0KGRl dl9wcml2KTsKLX0KLQogc3RhdGljIHZvaWQgaW50ZWxfY3J0Y19kZXN0cm95KHN0cnVjdCBkcm1f Y3J0YyAqY3J0YykKIHsKIAlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVs X2NydGMoY3J0Yyk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5j IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYwppbmRleCA3MTJiZDBkZWJiOTEuLjM1 YmI5YTIzY2QyZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYwor KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCkBAIC00ODUwLDcgKzQ4NTAsNyBA QCB2b2lkIGdlbjZfcnBzX2Jvb3N0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwK IAkvKiBUaGlzIGlzIGludGVudGlvbmFsbHkgcmFjeSEgV2UgcGVlayBhdCB0aGUgc3RhdGUgaGVy ZSwgdGhlbgogCSAqIHZhbGlkYXRlIGluc2lkZSB0aGUgUlBTIHdvcmtlci4KIAkgKi8KLQlpZiAo IShkZXZfcHJpdi0+bW0uYnVzeSAmJgorCWlmICghKGRldl9wcml2LT5ndC5hd2FrZSAmJgogCSAg ICAgIGRldl9wcml2LT5ycHMuZW5hYmxlZCAmJgogCSAgICAgIGRldl9wcml2LT5ycHMuY3VyX2Zy ZXEgPCBkZXZfcHJpdi0+cnBzLm1heF9mcmVxX3NvZnRsaW1pdCkpCiAJCXJldHVybjsKZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaCBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaAppbmRleCAxNjZmMWEzODI5YjAuLmQwY2Q5 YTFhYTgwZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZl ci5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaApAQCAtMzcy LDEzICszNzIsMTMgQEAgc3RydWN0IGludGVsX2VuZ2luZV9jcyB7CiB9OwogCiBzdGF0aWMgaW5s aW5lIGJvb2wKLWludGVsX2VuZ2luZV9pbml0aWFsaXplZChzdHJ1Y3QgaW50ZWxfZW5naW5lX2Nz ICplbmdpbmUpCitpbnRlbF9lbmdpbmVfaW5pdGlhbGl6ZWQoY29uc3Qgc3RydWN0IGludGVsX2Vu Z2luZV9jcyAqZW5naW5lKQogewogCXJldHVybiBlbmdpbmUtPmk5MTUgIT0gTlVMTDsKIH0KIAog c3RhdGljIGlubGluZSB1bnNpZ25lZAotaW50ZWxfZW5naW5lX2ZsYWcoc3RydWN0IGludGVsX2Vu Z2luZV9jcyAqZW5naW5lKQoraW50ZWxfZW5naW5lX2ZsYWcoY29uc3Qgc3RydWN0IGludGVsX2Vu Z2luZV9jcyAqZW5naW5lKQogewogCXJldHVybiAxIDw8IGVuZ2luZS0+aWQ7CiB9Ci0tIAoyLjgu MQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwt Z2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8v bGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==