From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH 11/18] drm/i915: Update reset path to fix incomplete requests Date: Tue, 30 Aug 2016 09:18:05 +0100 Message-ID: <20160830081812.4110-12-chris@chris-wilson.co.uk> References: <20160830081812.4110-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-x243.google.com (mail-wm0-x243.google.com [IPv6:2a00:1450:400c:c09::243]) by gabe.freedesktop.org (Postfix) with ESMTPS id 1DE3F6E5E9 for ; Tue, 30 Aug 2016 08:18:33 +0000 (UTC) Received: by mail-wm0-x243.google.com with SMTP id o80so2038445wme.0 for ; Tue, 30 Aug 2016 01:18:33 -0700 (PDT) In-Reply-To: <20160830081812.4110-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 VXBkYXRlIHJlc2V0IHBhdGggaW4gcHJlcGFyYXRpb24gZm9yIGVuZ2luZSByZXNldCB3aGljaCBy ZXF1aXJlcwppZGVudGlmaWNhdGlvbiBvZiBpbmNvbXBsZXRlIHJlcXVlc3RzIGFuZCBhc3NvY2lh dGVkIGNvbnRleHQgYW5kIGZpeGluZwp0aGVpciBzdGF0ZSBzbyB0aGF0IGVuZ2luZSBjYW4gcmVz dW1lIGNvcnJlY3RseSBhZnRlciByZXNldC4KClRoZSByZXF1ZXN0IHRoYXQgY2F1c2VkIHRoZSBo YW5nIHdpbGwgYmUgc2tpcHBlZCBhbmQgaGVhZCBpcyByZXNldCB0byB0aGUKc3RhcnQgb2YgYnJl YWRjcnVtYi4gVGhpcyBhbGxvd3MgdXMgdG8gcmVzdW1lIGZyb20gd2hlcmUgd2UgbGVmdC1vZmYu ClNpbmNlIHRoaXMgcmVxdWVzdCBkaWRuJ3QgY29tcGxldGUgbm9ybWFsbHkgd2UgYWxzbyBuZWVk IHRvIGNsZWFudXAgZWxzcApxdWV1ZSBtYW51YWxseS4gVGhpcyBpcyB2aXRhbCBpZiB3ZSBlbXBs b3kgbm9uYmxvY2tpbmcgcmVxdWVzdApzdWJtaXNzaW9uIHdoZXJlIHdlIG1heSBoYXZlIGEgd2Vi IG9mIGRlcGVuZGVuY2llcyB1cG9uIHRoZSBodW5nIHJlcXVlc3QKYW5kIHNvIGFkdmFuY2luZyB0 aGUgc2Vxbm8gbWFudWFsbHkgaXMgbm8gbG9uZ2VyIHRyaXZpYWwuCgp2MjogTGVnYWN5IHJpbmdi dWZmZXIgc3VibWlzc2lvbiByZXF1aXJlZCBhIHJlc2V0IGZvbGxvd2luZyBoaWJlcm5hdGlvbiwK b3IgZWxzZSB3ZSByZXN0b3JlIHN0YWxlIHZhbHVlcyB0byB0aGUgUklOR19IRUFEIGFuZCB3YWxr ZWQgb3ZlcgpzdG9sZW4gZ2FyYmFnZS4KCnYzOiBHdUMgcmVxdWlyZXMgcmVwbGF5aW5nIHRoZSBy ZXF1ZXN0cyBhZnRlciBhIHJlc2V0LgoKQ2M6IFR2cnRrbyBVcnN1bGluIDx0dnJ0a28udXJzdWxp bkBpbnRlbC5jb20+CkNjOiBNaWthIEt1b3BwYWxhIDxtaWthLmt1b3BwYWxhQGludGVsLmNvbT4K Q2M6IEFydW4gU2lsdXZlcnkgPGFydW4uc2lsdXZlcnlAbGludXguaW50ZWwuY29tPgpTaWduZWQt b2ZmLWJ5OiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4KLS0tCiBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jICAgICAgICAgICAgfCAgIDggKy0KIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggICAgICAgICAgICB8ICAgNSArLQogZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9nZW0uYyAgICAgICAgICAgIHwgMTE0ICsrKysrKysrKysrKysrKystLS0t LS0tLS0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMgICAgfCAg MTYgLS0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fcmVxdWVzdC5jICAgIHwgICAy ICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2d1Y19zdWJtaXNzaW9uLmMgfCAgIDggKy0K IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2VuZ2luZV9jcy5jICAgICB8ICAgMSAtCiBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYyAgICAgICAgICAgfCAgNDEgKysrKysrKysrKy0K IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5oICAgICAgICAgICB8ICAgMyArLQogZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jICAgIHwgIDQ1ICsrKysrKysrLS0t LQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5oICAgIHwgICA2ICstCiAx MSBmaWxlcyBjaGFuZ2VkLCAxNTEgaW5zZXJ0aW9ucygrKSwgOTggZGVsZXRpb25zKC0pCgpkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZHJ2LmMKaW5kZXggZWE3ZDNlODc4MTVjLi40NDlmY2ZhNDAzMTkgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMKKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9kcnYuYwpAQCAtNTgyLDcgKzU4Miw2IEBAIHN0YXRpYyB2b2lkIGk5MTVf Z2VtX2Zpbmkoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIAl9CiAKIAltdXRleF9sb2NrKCZkZXYt PnN0cnVjdF9tdXRleCk7Ci0JaTkxNV9nZW1fcmVzZXQoZGV2KTsKIAlpOTE1X2dlbV9jbGVhbnVw X2VuZ2luZXMoZGV2KTsKIAlpOTE1X2dlbV9jb250ZXh0X2ZpbmkoZGV2KTsKIAltdXRleF91bmxv Y2soJmRldi0+c3RydWN0X211dGV4KTsKQEAgLTE2MDIsNyArMTYwMSw3IEBAIHN0YXRpYyBpbnQg aTkxNV9kcm1fcmVzdW1lKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiAJbXV0ZXhfbG9jaygmZGV2 LT5zdHJ1Y3RfbXV0ZXgpOwogCWlmIChpOTE1X2dlbV9pbml0X2h3KGRldikpIHsKIAkJRFJNX0VS Uk9SKCJmYWlsZWQgdG8gcmUtaW5pdGlhbGl6ZSBHUFUsIGRlY2xhcmluZyB3ZWRnZWQhXG4iKTsK LQkJc2V0X2JpdChJOTE1X1dFREdFRCwgJmRldl9wcml2LT5ncHVfZXJyb3IuZmxhZ3MpOworCQlp OTE1X2dlbV9zZXRfd2VkZ2VkKGRldl9wcml2KTsKIAl9CiAJbXV0ZXhfdW5sb2NrKCZkZXYtPnN0 cnVjdF9tdXRleCk7CiAKQEAgLTE3NzksOCArMTc3OCw2IEBAIGludCBpOTE1X3Jlc2V0KHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAogCXByX25vdGljZSgiZHJtL2k5MTU6IFJl c2V0dGluZyBjaGlwIGFmdGVyIGdwdSBoYW5nXG4iKTsKIAotCWk5MTVfZ2VtX3Jlc2V0KGRldik7 Ci0KIAlyZXQgPSBpbnRlbF9ncHVfcmVzZXQoZGV2X3ByaXYsIEFMTF9FTkdJTkVTKTsKIAlpZiAo cmV0KSB7CiAJCWlmIChyZXQgIT0gLUVOT0RFVikKQEAgLTE3OTAsNiArMTc4Nyw3IEBAIGludCBp OTE1X3Jlc2V0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAkJZ290byBlcnJv cjsKIAl9CiAKKwlpOTE1X2dlbV9yZXNldChkZXZfcHJpdik7CiAJaW50ZWxfb3ZlcmxheV9yZXNl dChkZXZfcHJpdik7CiAKIAkvKiBPaywgbm93IGdldCB0aGluZ3MgZ29pbmcgYWdhaW4uLi4gKi8K QEAgLTE4MjQsNyArMTgyMiw3IEBAIGludCBpOTE1X3Jlc2V0KHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdikKIAlyZXR1cm4gMDsKIAogZXJyb3I6Ci0Jc2V0X2JpdChJOTE1X1dFREdF RCwgJmVycm9yLT5mbGFncyk7CisJaTkxNV9nZW1fc2V0X3dlZGdlZChkZXZfcHJpdik7CiAJcmV0 dXJuIHJldDsKIH0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYu aCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKaW5kZXggYzZkYmM2YjU3OThhLi40 MzZlZWM5NDU4MzcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgK KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaApAQCAtMjAyMyw2ICsyMDIzLDcg QEAgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgewogCiAJLyogQWJzdHJhY3QgdGhlIHN1Ym1pc3Np b24gbWVjaGFuaXNtIChsZWdhY3kgcmluZ2J1ZmZlciBvciBleGVjbGlzdHMpIGF3YXkgKi8KIAlz dHJ1Y3QgeworCQl2b2lkICgqcmVzdW1lKShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqKTsKIAkJ dm9pZCAoKmNsZWFudXBfZW5naW5lKShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpOwog CiAJCS8qKgpAQCAtMzI1Niw3ICszMjU3LDggQEAgc3RhdGljIGlubGluZSB1MzIgaTkxNV9yZXNl dF9jb3VudChzdHJ1Y3QgaTkxNV9ncHVfZXJyb3IgKmVycm9yKQogCXJldHVybiBSRUFEX09OQ0Uo ZXJyb3ItPnJlc2V0X2NvdW50KTsKIH0KIAotdm9pZCBpOTE1X2dlbV9yZXNldChzdHJ1Y3QgZHJt X2RldmljZSAqZGV2KTsKK3ZvaWQgaTkxNV9nZW1fcmVzZXQoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2KTsKK3ZvaWQgaTkxNV9nZW1fc2V0X3dlZGdlZChzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYpOwogYm9vbCBpOTE1X2dlbV9jbGZsdXNoX29iamVjdChzdHJ1Y3Qg ZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLCBib29sIGZvcmNlKTsKIGludCBfX211c3RfY2hlY2sg aTkxNV9nZW1faW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKIGludCBfX211c3RfY2hlY2sg aTkxNV9nZW1faW5pdF9odyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKQEAgLTMzODUsNyArMzM4 Nyw2IEBAIHZvaWQgaTkxNV9nZW1fb2JqZWN0X3NhdmVfYml0XzE3X3N3aXp6bGUoc3RydWN0IGRy bV9pOTE1X2dlbV9vYmplY3QgKm9iaik7CiBpbnQgX19tdXN0X2NoZWNrIGk5MTVfZ2VtX2NvbnRl eHRfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKIHZvaWQgaTkxNV9nZW1fY29udGV4dF9s b3N0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7CiB2b2lkIGk5MTVfZ2VtX2Nv bnRleHRfZmluaShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKLXZvaWQgaTkxNV9nZW1fY29udGV4 dF9yZXNldChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKIGludCBpOTE1X2dlbV9jb250ZXh0X29w ZW4oc3RydWN0IGRybV9kZXZpY2UgKmRldiwgc3RydWN0IGRybV9maWxlICpmaWxlKTsKIHZvaWQg aTkxNV9nZW1fY29udGV4dF9jbG9zZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3QgZHJt X2ZpbGUgKmZpbGUpOwogaW50IGk5MTVfc3dpdGNoX2NvbnRleHQoc3RydWN0IGRybV9pOTE1X2dl bV9yZXF1ZXN0ICpyZXEpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9n ZW0uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKaW5kZXggY2M1NjVmNzg1ODg4 Li5lNWE1YTc2OTVjZjIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2Vt LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYwpAQCAtMjU1NCwzMCArMjU1 NCw3NiBAQCBpOTE1X2dlbV9maW5kX2FjdGl2ZV9yZXF1ZXN0KHN0cnVjdCBpbnRlbF9lbmdpbmVf Y3MgKmVuZ2luZSkKIAlyZXR1cm4gTlVMTDsKIH0KIAotc3RhdGljIHZvaWQgaTkxNV9nZW1fcmVz ZXRfZW5naW5lX3N0YXR1cyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCitzdGF0aWMg dm9pZCByZXNldF9yZXF1ZXN0KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxdWVzdCkK K3sKKwl2b2lkICp2YWRkciA9IHJlcXVlc3QtPnJpbmctPnZhZGRyOworCXUzMiBoZWFkOworCisJ LyogQXMgdGhpcyByZXF1ZXN0IGxpa2VseSBkZXBlbmRzIG9uIHN0YXRlIGZyb20gdGhlIGxvc3QK KwkgKiBjb250ZXh0LCBjbGVhciBvdXQgYWxsIHRoZSB1c2VyIG9wZXJhdGlvbnMgbGVhdmluZyB0 aGUKKwkgKiBicmVhZGNydW1iIGF0IHRoZSBlbmQgKHNvIHdlIGdldCB0aGUgZmVuY2Ugbm90aWZp Y2F0aW9ucykuCisJICovCisJaGVhZCA9IHJlcXVlc3QtPmhlYWQ7CisJaWYgKHJlcXVlc3QtPnBv c3RmaXggPCBoZWFkKSB7CisJCW1lbXNldCh2YWRkciArIGhlYWQsIDAsIHJlcXVlc3QtPnJpbmct PnNpemUgLSBoZWFkKTsKKwkJaGVhZCA9IDA7CisJfQorCW1lbXNldCh2YWRkciArIGhlYWQsIDAs IHJlcXVlc3QtPnBvc3RmaXggLSBoZWFkKTsKKworCWk5MTVfc2V0X3Jlc2V0X3N0YXR1cyhyZXF1 ZXN0LT5jdHgsIGZhbHNlKTsKK30KKworc3RhdGljIHZvaWQgaTkxNV9nZW1fcmVzZXRfZW5naW5l KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X3JlcXVlc3QgKnJlcXVlc3Q7CisJc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmluY29tcGxldGVf Y3R4OwogCWJvb2wgcmluZ19odW5nOwogCisJLyogRW5zdXJlIGlycSBoYW5kbGVyIGZpbmlzaGVz LCBhbmQgbm90IHJ1biBhZ2Fpbi4gKi8KKwl0YXNrbGV0X2tpbGwoJmVuZ2luZS0+aXJxX3Rhc2ts ZXQpOworCiAJcmVxdWVzdCA9IGk5MTVfZ2VtX2ZpbmRfYWN0aXZlX3JlcXVlc3QoZW5naW5lKTsK LQlpZiAocmVxdWVzdCA9PSBOVUxMKQorCWlmICghcmVxdWVzdCkKIAkJcmV0dXJuOwogCiAJcmlu Z19odW5nID0gZW5naW5lLT5oYW5nY2hlY2suc2NvcmUgPj0gSEFOR0NIRUNLX1NDT1JFX1JJTkdf SFVORzsKLQogCWk5MTVfc2V0X3Jlc2V0X3N0YXR1cyhyZXF1ZXN0LT5jdHgsIHJpbmdfaHVuZyk7 CisKKwkvKiBTZXR1cCB0aGUgQ1MgdG8gcmVzdW1lIGZyb20gdGhlIGJyZWFkY3J1bWIgb2YgdGhl IGh1bmcgcmVxdWVzdCAqLworCWVuZ2luZS0+cmVzZXRfaHcoZW5naW5lLCByZXF1ZXN0KTsKKwor CS8qIFVzZXJzIG9mIHRoZSBkZWZhdWx0IGNvbnRleHQgZG8gbm90IHJlbHkgb24gbG9naWNhbCBz dGF0ZQorCSAqIHByZXNlcnZlZCBiZXR3ZWVuIGJhdGNoZXMuIFRoZXkgaGF2ZSB0byBlbWl0IGZ1 bGwgc3RhdGUgb24KKwkgKiBldmVyeSBiYXRjaCBhbmQgc28gaXQgaXMgc2FmZSB0byBleGVjdXRl IHF1ZXVlZCByZXF1ZXN0cyBmb2xsb3dpbmcKKwkgKiB0aGUgaGFuZy4KKwkgKgorCSAqIE90aGVy IGNvbnRleHRzIHByZXNlcnZlIHN0YXRlLCBub3cgY29ycnVwdC4gV2Ugd2FudCB0byBza2lwIGFs bAorCSAqIHF1ZXVlZCByZXF1ZXN0cyB0aGF0IHJlZmVyZW5jZSB0aGUgY29ycnVwdCBjb250ZXh0 LgorCSAqLworCWluY29tcGxldGVfY3R4ID0gcmVxdWVzdC0+Y3R4OworCWlmIChpOTE1X2dlbV9j b250ZXh0X2lzX2RlZmF1bHQoaW5jb21wbGV0ZV9jdHgpKQorCQlyZXR1cm47CisKIAlsaXN0X2Zv cl9lYWNoX2VudHJ5X2NvbnRpbnVlKHJlcXVlc3QsICZlbmdpbmUtPnJlcXVlc3RfbGlzdCwgbGlu aykKLQkJaTkxNV9zZXRfcmVzZXRfc3RhdHVzKHJlcXVlc3QtPmN0eCwgZmFsc2UpOworCQlpZiAo cmVxdWVzdC0+Y3R4ID09IGluY29tcGxldGVfY3R4KQorCQkJcmVzZXRfcmVxdWVzdChyZXF1ZXN0 KTsKIH0KIAotc3RhdGljIHZvaWQgaTkxNV9nZW1fcmVzZXRfZW5naW5lX2NsZWFudXAoc3RydWN0 IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQordm9pZCBpOTE1X2dlbV9yZXNldChzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiB7Ci0Jc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0 ICpyZXF1ZXN0OwotCXN0cnVjdCBpbnRlbF9yaW5nICpyaW5nOworCXN0cnVjdCBpbnRlbF9lbmdp bmVfY3MgKmVuZ2luZTsKIAotCS8qIEVuc3VyZSBpcnEgaGFuZGxlciBmaW5pc2hlcywgYW5kIG5v dCBydW4gYWdhaW4uICovCi0JdGFza2xldF9raWxsKCZlbmdpbmUtPmlycV90YXNrbGV0KTsKKwlp OTE1X2dlbV9yZXRpcmVfcmVxdWVzdHMoZGV2X3ByaXYpOworCisJZm9yX2VhY2hfZW5naW5lKGVu Z2luZSwgZGV2X3ByaXYpCisJCWk5MTVfZ2VtX3Jlc2V0X2VuZ2luZShlbmdpbmUpOworCisJaTkx NV9nZW1fY29udGV4dF9sb3N0KGRldl9wcml2KTsKKwlpOTE1X2dlbV9yZXN0b3JlX2ZlbmNlcygm ZGV2X3ByaXYtPmRybSk7Cit9CiAKK3N0YXRpYyB2b2lkIGk5MTVfZ2VtX2NsZWFudXBfZW5naW5l KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKK3sKIAkvKiBNYXJrIGFsbCBwZW5kaW5n IHJlcXVlc3RzIGFzIGNvbXBsZXRlIHNvIHRoYXQgYW55IGNvbmN1cnJlbnQKIAkgKiAobG9ja2xl c3MpIGxvb2t1cCBkb2Vzbid0IHRyeSBhbmQgd2FpdCB1cG9uIHRoZSByZXF1ZXN0IGFzIHdlCiAJ ICogcmVzZXQgaXQuCkBAIC0yNTk5LDU0ICsyNjQ1LDE5IEBAIHN0YXRpYyB2b2lkIGk5MTVfZ2Vt X3Jlc2V0X2VuZ2luZV9jbGVhbnVwKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIAkJ c3Bpbl91bmxvY2soJmVuZ2luZS0+ZXhlY2xpc3RfbG9jayk7CiAJfQogCi0JLyoKLQkgKiBXZSBt dXN0IGZyZWUgdGhlIHJlcXVlc3RzIGFmdGVyIGFsbCB0aGUgY29ycmVzcG9uZGluZyBvYmplY3Rz IGhhdmUKLQkgKiBiZWVuIG1vdmVkIG9mZiBhY3RpdmUgbGlzdHMuIFdoaWNoIGlzIHRoZSBzYW1l IG9yZGVyIGFzIHRoZSBub3JtYWwKLQkgKiByZXRpcmVfcmVxdWVzdHMgZnVuY3Rpb24gZG9lcy4g VGhpcyBpcyBpbXBvcnRhbnQgaWYgb2JqZWN0IGhvbGQKLQkgKiBpbXBsaWNpdCByZWZlcmVuY2Vz IG9uIHRoaW5ncyBsaWtlIGUuZy4gcHBndHQgYWRkcmVzcyBzcGFjZXMgdGhyb3VnaAotCSAqIHRo ZSByZXF1ZXN0LgotCSAqLwotCXJlcXVlc3QgPSBpOTE1X2dlbV9hY3RpdmVfcmF3KCZlbmdpbmUt Pmxhc3RfcmVxdWVzdCwKLQkJCQkgICAgICAmZW5naW5lLT5pOTE1LT5kcm0uc3RydWN0X211dGV4 KTsKLQlpZiAocmVxdWVzdCkKLQkJaTkxNV9nZW1fcmVxdWVzdF9yZXRpcmVfdXB0byhyZXF1ZXN0 KTsKLQlHRU1fQlVHX09OKGludGVsX2VuZ2luZV9pc19hY3RpdmUoZW5naW5lKSk7Ci0KLQkvKiBI YXZpbmcgZmx1c2hlZCBhbGwgcmVxdWVzdHMgZnJvbSBhbGwgcXVldWVzLCB3ZSBrbm93IHRoYXQg YWxsCi0JICogcmluZ2J1ZmZlcnMgbXVzdCBub3cgYmUgZW1wdHkuIEhvd2V2ZXIsIHNpbmNlIHdl IGRvIG5vdCByZWNsYWltCi0JICogYWxsIHNwYWNlIHdoZW4gcmV0aXJpbmcgdGhlIHJlcXVlc3Qg KHRvIHByZXZlbnQgSEVBRHMgY29sbGlkaW5nCi0JICogd2l0aCByYXBpZCByaW5nYnVmZmVyIHdy YXBhcm91bmQpIHRoZSBhbW91bnQgb2YgYXZhaWxhYmxlIHNwYWNlCi0JICogdXBvbiByZXNldCBp cyBsZXNzIHRoYW4gd2hlbiB3ZSBzdGFydC4gRG8gb25lIG1vcmUgcGFzcyBvdmVyCi0JICogYWxs IHRoZSByaW5nYnVmZmVycyB0byByZXNldCBsYXN0X3JldGlyZWRfaGVhZC4KLQkgKi8KLQlsaXN0 X2Zvcl9lYWNoX2VudHJ5KHJpbmcsICZlbmdpbmUtPmJ1ZmZlcnMsIGxpbmspIHsKLQkJcmluZy0+ bGFzdF9yZXRpcmVkX2hlYWQgPSByaW5nLT50YWlsOwotCQlpbnRlbF9yaW5nX3VwZGF0ZV9zcGFj ZShyaW5nKTsKLQl9Ci0KIAllbmdpbmUtPmk5MTUtPmd0LmFjdGl2ZV9lbmdpbmVzICY9IH5pbnRl bF9lbmdpbmVfZmxhZyhlbmdpbmUpOwogfQogCi12b2lkIGk5MTVfZ2VtX3Jlc2V0KHN0cnVjdCBk cm1fZGV2aWNlICpkZXYpCit2b2lkIGk5MTVfZ2VtX3NldF93ZWRnZWQoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2KQogewotCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diA9IHRvX2k5MTUoZGV2KTsKIAlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmU7CiAKLQkv KgotCSAqIEJlZm9yZSB3ZSBmcmVlIHRoZSBvYmplY3RzIGZyb20gdGhlIHJlcXVlc3RzLCB3ZSBu ZWVkIHRvIGluc3BlY3QKLQkgKiB0aGVtIGZvciBmaW5kaW5nIHRoZSBndWlsdHkgcGFydHkuIEFz IHRoZSByZXF1ZXN0cyBvbmx5IGJvcnJvdwotCSAqIHRoZWlyIHJlZmVyZW5jZSB0byB0aGUgb2Jq ZWN0cywgdGhlIGluc3BlY3Rpb24gbXVzdCBiZSBkb25lIGZpcnN0LgotCSAqLwotCWZvcl9lYWNo X2VuZ2luZShlbmdpbmUsIGRldl9wcml2KQotCQlpOTE1X2dlbV9yZXNldF9lbmdpbmVfc3RhdHVz KGVuZ2luZSk7CisJbG9ja2RlcF9hc3NlcnRfaGVsZCgmZGV2X3ByaXYtPmRybS5zdHJ1Y3RfbXV0 ZXgpOworCXNldF9iaXQoSTkxNV9XRURHRUQsICZkZXZfcHJpdi0+Z3B1X2Vycm9yLmZsYWdzKTsK IAogCWZvcl9lYWNoX2VuZ2luZShlbmdpbmUsIGRldl9wcml2KQotCQlpOTE1X2dlbV9yZXNldF9l bmdpbmVfY2xlYW51cChlbmdpbmUpOworCQlpOTE1X2dlbV9jbGVhbnVwX2VuZ2luZShlbmdpbmUp OwogCW1vZF9kZWxheWVkX3dvcmsoZGV2X3ByaXYtPndxLCAmZGV2X3ByaXYtPmd0LmlkbGVfd29y aywgMCk7Ci0KLQlpOTE1X2dlbV9jb250ZXh0X3Jlc2V0KGRldik7Ci0KLQlpOTE1X2dlbV9yZXN0 b3JlX2ZlbmNlcyhkZXYpOwogfQogCiBzdGF0aWMgdm9pZApAQCAtNDMzOSw4ICs0MzUwLDcgQEAg dm9pZCBpOTE1X2dlbV9yZXN1bWUoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIAkgKiBndWFyYW50 ZWUgdGhhdCB0aGUgY29udGV4dCBpbWFnZSBpcyBjb21wbGV0ZS4gU28gbGV0J3MganVzdCByZXNl dAogCSAqIGl0IGFuZCBzdGFydCBhZ2Fpbi4KIAkgKi8KLQlpZiAoaTkxNS5lbmFibGVfZXhlY2xp c3RzKQotCQlpbnRlbF9scl9jb250ZXh0X3Jlc2V0KGRldl9wcml2LCBkZXZfcHJpdi0+a2VybmVs X2NvbnRleHQpOworCWRldl9wcml2LT5ndC5yZXN1bWUoZGV2X3ByaXYpOwogCiAJbXV0ZXhfdW5s b2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7CiB9CkBAIC00NDkyLDggKzQ1MDIsMTAgQEAgaW50IGk5 MTVfZ2VtX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIAltdXRleF9sb2NrKCZkZXYtPnN0 cnVjdF9tdXRleCk7CiAKIAlpZiAoIWk5MTUuZW5hYmxlX2V4ZWNsaXN0cykgeworCQlkZXZfcHJp di0+Z3QucmVzdW1lID0gaW50ZWxfbGVnYWN5X3N1Ym1pc3Npb25fcmVzdW1lOwogCQlkZXZfcHJp di0+Z3QuY2xlYW51cF9lbmdpbmUgPSBpbnRlbF9lbmdpbmVfY2xlYW51cDsKIAl9IGVsc2Ugewor CQlkZXZfcHJpdi0+Z3QucmVzdW1lID0gaW50ZWxfbHJfY29udGV4dF9yZXN1bWU7CiAJCWRldl9w cml2LT5ndC5jbGVhbnVwX2VuZ2luZSA9IGludGVsX2xvZ2ljYWxfcmluZ19jbGVhbnVwOwogCX0K IApAQCAtNDUyNiw3ICs0NTM4LDcgQEAgaW50IGk5MTVfZ2VtX2luaXQoc3RydWN0IGRybV9kZXZp Y2UgKmRldikKIAkJICogZm9yIGFsbCBvdGhlciBmYWlsdXJlLCBzdWNoIGFzIGFuIGFsbG9jYXRp b24gZmFpbHVyZSwgYmFpbC4KIAkJICovCiAJCURSTV9FUlJPUigiRmFpbGVkIHRvIGluaXRpYWxp emUgR1BVLCBkZWNsYXJpbmcgaXQgd2VkZ2VkXG4iKTsKLQkJc2V0X2JpdChJOTE1X1dFREdFRCwg JmRldl9wcml2LT5ncHVfZXJyb3IuZmxhZ3MpOworCQlpOTE1X2dlbV9zZXRfd2VkZ2VkKGRldl9w cml2KTsKIAkJcmV0ID0gMDsKIAl9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZ2VtX2NvbnRleHQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRl eHQuYwppbmRleCAzNTk1MGVlNDZhMWQuLmRmMTBmNGU5NTczNiAxMDA2NDQKLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZ2VtX2NvbnRleHQuYwpAQCAtNDIwLDIyICs0MjAsNiBAQCBzdGF0aWMgdm9pZCBp OTE1X2dlbV9jb250ZXh0X3VucGluKHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgsCiAJfQog fQogCi12b2lkIGk5MTVfZ2VtX2NvbnRleHRfcmVzZXQoc3RydWN0IGRybV9kZXZpY2UgKmRldikK LXsKLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRldik7Ci0K LQlsb2NrZGVwX2Fzc2VydF9oZWxkKCZkZXYtPnN0cnVjdF9tdXRleCk7Ci0KLQlpZiAoaTkxNS5l bmFibGVfZXhlY2xpc3RzKSB7Ci0JCXN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHg7Ci0KLQkJ bGlzdF9mb3JfZWFjaF9lbnRyeShjdHgsICZkZXZfcHJpdi0+Y29udGV4dF9saXN0LCBsaW5rKQot CQkJaW50ZWxfbHJfY29udGV4dF9yZXNldChkZXZfcHJpdiwgY3R4KTsKLQl9Ci0KLQlpOTE1X2dl bV9jb250ZXh0X2xvc3QoZGV2X3ByaXYpOwotfQotCiBpbnQgaTkxNV9nZW1fY29udGV4dF9pbml0 KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiB7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2ID0gdG9faTkxNShkZXYpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9nZW1fcmVxdWVzdC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fcmVxdWVz dC5jCmluZGV4IDEwYTExYjdkMTExNC4uZjMxMjQ2Y2Y0ZjZlIDEwMDY0NAotLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9yZXF1ZXN0LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9nZW1fcmVxdWVzdC5jCkBAIC03MTYsNyArNzE2LDcgQEAgd2FrZXVwOgogCQlpZiAo ZmxhZ3MgJiBJOTE1X1dBSVRfTE9DS0VEICYmCiAJCSAgICBpOTE1X3Jlc2V0X2luX3Byb2dyZXNz KCZyZXEtPmk5MTUtPmdwdV9lcnJvcikpIHsKIAkJCV9fc2V0X2N1cnJlbnRfc3RhdGUoVEFTS19S VU5OSU5HKTsKLQkJCWlmICghaTkxNV9yZXNldChyZXEtPmk5MTUpKQorCQkJaWYgKGk5MTVfcmVz ZXQocmVxLT5pOTE1KSkKIAkJCQlnb3RvIHdha2V1cDsKIAogCQkJYnJlYWs7CmRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2d1Y19zdWJtaXNzaW9uLmMgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2d1Y19zdWJtaXNzaW9uLmMKaW5kZXggMzI2OTlhNzQ0YWNhLi5lNTFm Y2U4YzExY2EgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3VjX3N1Ym1p c3Npb24uYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2d1Y19zdWJtaXNzaW9uLmMK QEAgLTk5OCw2ICs5OTgsNyBAQCBpbnQgaTkxNV9ndWNfc3VibWlzc2lvbl9lbmFibGUoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCXN0cnVjdCBpbnRlbF9ndWMgKmd1YyA9ICZk ZXZfcHJpdi0+Z3VjOwogCXN0cnVjdCBpOTE1X2d1Y19jbGllbnQgKmNsaWVudDsKIAlzdHJ1Y3Qg aW50ZWxfZW5naW5lX2NzICplbmdpbmU7CisJc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpy ZXF1ZXN0OwogCiAJLyogY2xpZW50IGZvciBleGVjYnVmIHN1Ym1pc3Npb24gKi8KIAljbGllbnQg PSBndWNfY2xpZW50X2FsbG9jKGRldl9wcml2LApAQCAtMTAxNCw5ICsxMDE1LDE0IEBAIGludCBp OTE1X2d1Y19zdWJtaXNzaW9uX2VuYWJsZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYpCiAJZ3VjX2luaXRfZG9vcmJlbGxfaHcoZ3VjKTsKIAogCS8qIFRha2Ugb3ZlciBmcm9tIG1h bnVhbCBjb250cm9sIG9mIEVMU1AgKGV4ZWNsaXN0cykgKi8KLQlmb3JfZWFjaF9lbmdpbmUoZW5n aW5lLCBkZXZfcHJpdikKKwlmb3JfZWFjaF9lbmdpbmUoZW5naW5lLCBkZXZfcHJpdikgewogCQll bmdpbmUtPnN1Ym1pdF9yZXF1ZXN0ID0gaTkxNV9ndWNfc3VibWl0OwogCisJCS8qIFJlcGxheSB0 aGUgY3VycmVudCBzZXQgb2YgcHJldmlvdXNseSBzdWJtaXR0ZWQgcmVxdWVzdHMgKi8KKwkJbGlz dF9mb3JfZWFjaF9lbnRyeShyZXF1ZXN0LCAmZW5naW5lLT5yZXF1ZXN0X2xpc3QsIGxpbmspCisJ CQlpOTE1X2d1Y19zdWJtaXQocmVxdWVzdCk7CisJfQorCiAJcmV0dXJuIDA7CiB9CiAKZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2VuZ2luZV9jcy5jIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZW5naW5lX2NzLmMKaW5kZXggMmU5NmE4NjEwNWMyLi4wZGVkYzJm YTQ5N2EgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2VuZ2luZV9jcy5j CisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2VuZ2luZV9jcy5jCkBAIC0yMzAsNyAr MjMwLDYgQEAgc3RhdGljIHZvaWQgaW50ZWxfZW5naW5lX2luaXRfcmVxdWVzdHMoc3RydWN0IGlu dGVsX2VuZ2luZV9jcyAqZW5naW5lKQogICovCiB2b2lkIGludGVsX2VuZ2luZV9zZXR1cF9jb21t b24oc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogewotCUlOSVRfTElTVF9IRUFEKCZl bmdpbmUtPmJ1ZmZlcnMpOwogCUlOSVRfTElTVF9IRUFEKCZlbmdpbmUtPmV4ZWNsaXN0X3F1ZXVl KTsKIAlzcGluX2xvY2tfaW5pdCgmZW5naW5lLT5leGVjbGlzdF9sb2NrKTsKIApkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9scmMuYwppbmRleCA4NjRiNTI0ODI3OWEuLmUyZTcwZWNkMDc3ZiAxMDA2NDQKLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfbHJjLmMKQEAgLTEyMjMsNiArMTIyMyw3IEBAIHN0YXRpYyBpbnQgZ2VuOF9p bml0X2NvbW1vbl9yaW5nKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIHsKIAlzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBlbmdpbmUtPmk5MTU7CiAKKwlpbnRlbF9t b2NzX2luaXRfZW5naW5lKGVuZ2luZSk7CiAJbHJjX2luaXRfaHdzKGVuZ2luZSk7CiAKIAlJOTE1 X1dSSVRFX0lNUihlbmdpbmUsCkBAIC0xMjQyLDcgKzEyNDMsMTAgQEAgc3RhdGljIGludCBnZW44 X2luaXRfY29tbW9uX3Jpbmcoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogCiAJaW50 ZWxfZW5naW5lX2luaXRfaGFuZ2NoZWNrKGVuZ2luZSk7CiAKLQlyZXR1cm4gaW50ZWxfbW9jc19p bml0X2VuZ2luZShlbmdpbmUpOworCWlmICghZXhlY2xpc3RzX2Vsc3BfaWRsZShlbmdpbmUpKQor CQlleGVjbGlzdHNfc3VibWl0X3BvcnRzKGVuZ2luZSk7CisKKwlyZXR1cm4gMDsKIH0KIAogc3Rh dGljIGludCBnZW44X2luaXRfcmVuZGVyX3Jpbmcoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5n aW5lKQpAQCAtMTI3OCw2ICsxMjgyLDM2IEBAIHN0YXRpYyBpbnQgZ2VuOV9pbml0X3JlbmRlcl9y aW5nKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIAlyZXR1cm4gaW5pdF93b3JrYXJv dW5kc19yaW5nKGVuZ2luZSk7CiB9CiAKK3N0YXRpYyB2b2lkIHJlc2V0X2NvbW1vbl9yaW5nKHN0 cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKKwkJCSAgICAgIHN0cnVjdCBkcm1faTkxNV9n ZW1fcmVxdWVzdCAqcmVxdWVzdCkKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYgPSBlbmdpbmUtPmk5MTU7CisJc3RydWN0IGV4ZWNsaXN0X3BvcnQgKnBvcnQgPSBlbmdpbmUt PmV4ZWNsaXN0X3BvcnQ7CisJc3RydWN0IGludGVsX2NvbnRleHQgKmNlID0gJnJlcXVlc3QtPmN0 eC0+ZW5naW5lW2VuZ2luZS0+aWRdOworCisJLyogTW92ZSB0aGUgUklOR19IRUFEIG9udG8gdGhl IGJyZWFkY3J1bWIsIHBhc3QgdGhlIGhhbmdpbmcgYmF0Y2ggKi8KKwljZS0+bHJjX3JlZ19zdGF0 ZVtDVFhfUklOR19IRUFEKzFdID0gcmVxdWVzdC0+cG9zdGZpeDsKKwlyZXF1ZXN0LT5yaW5nLT5o ZWFkID0gcmVxdWVzdC0+cG9zdGZpeDsKKwlyZXF1ZXN0LT5yaW5nLT5sYXN0X3JldGlyZWRfaGVh ZCA9IC0xOworCWludGVsX3JpbmdfdXBkYXRlX3NwYWNlKHJlcXVlc3QtPnJpbmcpOworCisJaWYg KGk5MTUuZW5hYmxlX2d1Y19zdWJtaXNzaW9uKQorCQlyZXR1cm47CisKKwkvKiBDYXRjaCB1cCB3 aXRoIGFueSBtaXNzZWQgY29udGV4dC1zd2l0Y2ggaW50ZXJydXB0cyAqLworCUk5MTVfV1JJVEUo UklOR19DT05URVhUX1NUQVRVU19QVFIoZW5naW5lKSwgX01BU0tFRF9GSUVMRCgweGZmZmYsIDAp KTsKKwlpZiAocmVxdWVzdC0+Y3R4ICE9IHBvcnRbMF0ucmVxdWVzdC0+Y3R4KSB7CisJCWk5MTVf Z2VtX3JlcXVlc3RfcHV0KHBvcnRbMF0ucmVxdWVzdCk7CisJCXBvcnRbMF0gPSBwb3J0WzFdOwor CQltZW1zZXQoJnBvcnRbMV0sIDAsIHNpemVvZihwb3J0WzFdKSk7CisJfQorCisJLyogQ1MgaXMg c3RvcHBlZCwgYW5kIHdlIHdpbGwgcmVzdWJtaXQgYm90aCBwb3J0cyBvbiByZXN1bWUgKi8KKwlH RU1fQlVHX09OKHJlcXVlc3QtPmN0eCAhPSBwb3J0WzBdLnJlcXVlc3QtPmN0eCk7CisJcG9ydFsw XS5jb3VudCA9IDA7CisJcG9ydFsxXS5jb3VudCA9IDA7Cit9CisKIHN0YXRpYyBpbnQgaW50ZWxf bG9naWNhbF9yaW5nX2VtaXRfcGRwcyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSkK IHsKIAlzdHJ1Y3QgaTkxNV9od19wcGd0dCAqcHBndHQgPSByZXEtPmN0eC0+cHBndHQ7CkBAIC0x NjQwLDYgKzE2NzQsNyBAQCBsb2dpY2FsX3JpbmdfZGVmYXVsdF92ZnVuY3Moc3RydWN0IGludGVs X2VuZ2luZV9jcyAqZW5naW5lKQogewogCS8qIERlZmF1bHQgdmZ1bmNzIHdoaWNoIGNhbiBiZSBv dmVycmlkZW4gYnkgZWFjaCBlbmdpbmUuICovCiAJZW5naW5lLT5pbml0X2h3ID0gZ2VuOF9pbml0 X2NvbW1vbl9yaW5nOworCWVuZ2luZS0+cmVzZXRfaHcgPSByZXNldF9jb21tb25fcmluZzsKIAll bmdpbmUtPmVtaXRfZmx1c2ggPSBnZW44X2VtaXRfZmx1c2g7CiAJZW5naW5lLT5lbWl0X3JlcXVl c3QgPSBnZW44X2VtaXRfcmVxdWVzdDsKIAllbmdpbmUtPnN1Ym1pdF9yZXF1ZXN0ID0gZXhlY2xp c3RzX3N1Ym1pdF9yZXF1ZXN0OwpAQCAtMjA5Miw5ICsyMTI3LDkgQEAgZXJyb3JfZGVyZWZfb2Jq OgogCXJldHVybiByZXQ7CiB9CiAKLXZvaWQgaW50ZWxfbHJfY29udGV4dF9yZXNldChzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCi0JCQkgICAgc3RydWN0IGk5MTVfZ2VtX2NvbnRl eHQgKmN0eCkKK3ZvaWQgaW50ZWxfbHJfY29udGV4dF9yZXN1bWUoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2KQogeworCXN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHggPSBkZXZf cHJpdi0+a2VybmVsX2NvbnRleHQ7CiAJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lOwog CiAJZm9yX2VhY2hfZW5naW5lKGVuZ2luZSwgZGV2X3ByaXYpIHsKZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf bHJjLmgKaW5kZXggNGQ3MDM0NjUwMGMyLi40ZmVkODE2NWY5OGEgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2xyYy5oCkBAIC04Nyw4ICs4Nyw3IEBAIHZvaWQgaW50ZWxfbHJfY29udGV4dF91bnBpbihz dHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4LAogCiBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZTsK IAotdm9pZCBpbnRlbF9scl9jb250ZXh0X3Jlc2V0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiwKLQkJCSAgICBzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4KTsKK3ZvaWQgaW50 ZWxfbHJfY29udGV4dF9yZXN1bWUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsK IHVpbnQ2NF90IGludGVsX2xyX2NvbnRleHRfZGVzY3JpcHRvcihzdHJ1Y3QgaTkxNV9nZW1fY29u dGV4dCAqY3R4LAogCQkJCSAgICAgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKTsKIApk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jCmluZGV4IGZhNGYzNzMxYmUyOS4u ODcwZDZiMDI1ODUwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5n YnVmZmVyLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jCkBA IC01NzcsMzQgKzU3NywzMyBAQCBzdGF0aWMgaW50IGluaXRfcmluZ19jb21tb24oc3RydWN0IGlu dGVsX2VuZ2luZV9jcyAqZW5naW5lKQogCWlmIChJOTE1X1JFQURfSEVBRChlbmdpbmUpKQogCQlE Uk1fREVCVUcoIiVzIGluaXRpYWxpemF0aW9uIGZhaWxlZCBbaGVhZD0lMDh4XSwgZnVkZ2luZ1xu IiwKIAkJCSAgZW5naW5lLT5uYW1lLCBJOTE1X1JFQURfSEVBRChlbmdpbmUpKTsKLQlJOTE1X1dS SVRFX0hFQUQoZW5naW5lLCAwKTsKLQkodm9pZClJOTE1X1JFQURfSEVBRChlbmdpbmUpOworCisJ aW50ZWxfcmluZ191cGRhdGVfc3BhY2UocmluZyk7CisJSTkxNV9XUklURV9IRUFEKGVuZ2luZSwg cmluZy0+aGVhZCk7CisJSTkxNV9XUklURV9UQUlMKGVuZ2luZSwgcmluZy0+dGFpbCk7CisJKHZv aWQpSTkxNV9SRUFEX1RBSUwoZW5naW5lKTsKIAogCUk5MTVfV1JJVEVfQ1RMKGVuZ2luZSwKIAkJ CSgocmluZy0+c2l6ZSAtIFBBR0VfU0laRSkgJiBSSU5HX05SX1BBR0VTKQogCQkJfCBSSU5HX1ZB TElEKTsKIAogCS8qIElmIHRoZSBoZWFkIGlzIHN0aWxsIG5vdCB6ZXJvLCB0aGUgcmluZyBpcyBk ZWFkICovCi0JaWYgKHdhaXRfZm9yKChJOTE1X1JFQURfQ1RMKGVuZ2luZSkgJiBSSU5HX1ZBTElE KSAhPSAwICYmCi0JCSAgICAgSTkxNV9SRUFEX1NUQVJUKGVuZ2luZSkgPT0gaTkxNV9nZ3R0X29m ZnNldChyaW5nLT52bWEpICYmCi0JCSAgICAgKEk5MTVfUkVBRF9IRUFEKGVuZ2luZSkgJiBIRUFE X0FERFIpID09IDAsIDUwKSkgeworCWlmIChpbnRlbF93YWl0X2Zvcl9yZWdpc3Rlcl9mdyhkZXZf cHJpdiwgUklOR19DVEwoZW5naW5lLT5tbWlvX2Jhc2UpLAorCQkJCSAgICAgICBSSU5HX1ZBTElE LCBSSU5HX1ZBTElELAorCQkJCSAgICAgICA1MCkpIHsKIAkJRFJNX0VSUk9SKCIlcyBpbml0aWFs aXphdGlvbiBmYWlsZWQgIgotCQkJICAiY3RsICUwOHggKHZhbGlkPyAlZCkgaGVhZCAlMDh4IHRh aWwgJTA4eCBzdGFydCAlMDh4IFtleHBlY3RlZCAlMDh4XVxuIiwKKwkJCSAgImN0bCAlMDh4ICh2 YWxpZD8gJWQpIGhlYWQgJTA4eCBbJTA4eF0gdGFpbCAlMDh4IFslMDh4XSBzdGFydCAlMDh4IFtl eHBlY3RlZCAlMDh4XVxuIiwKIAkJCSAgZW5naW5lLT5uYW1lLAogCQkJICBJOTE1X1JFQURfQ1RM KGVuZ2luZSksCiAJCQkgIEk5MTVfUkVBRF9DVEwoZW5naW5lKSAmIFJJTkdfVkFMSUQsCi0JCQkg IEk5MTVfUkVBRF9IRUFEKGVuZ2luZSksIEk5MTVfUkVBRF9UQUlMKGVuZ2luZSksCisJCQkgIEk5 MTVfUkVBRF9IRUFEKGVuZ2luZSksIHJpbmctPmhlYWQsCisJCQkgIEk5MTVfUkVBRF9UQUlMKGVu Z2luZSksIHJpbmctPnRhaWwsCiAJCQkgIEk5MTVfUkVBRF9TVEFSVChlbmdpbmUpLAogCQkJICBp OTE1X2dndHRfb2Zmc2V0KHJpbmctPnZtYSkpOwogCQlyZXQgPSAtRUlPOwogCQlnb3RvIG91dDsK IAl9CiAKLQlyaW5nLT5sYXN0X3JldGlyZWRfaGVhZCA9IC0xOwotCXJpbmctPmhlYWQgPSBJOTE1 X1JFQURfSEVBRChlbmdpbmUpOwotCXJpbmctPnRhaWwgPSBJOTE1X1JFQURfVEFJTChlbmdpbmUp ICYgVEFJTF9BRERSOwotCWludGVsX3JpbmdfdXBkYXRlX3NwYWNlKHJpbmcpOwotCiAJaW50ZWxf ZW5naW5lX2luaXRfaGFuZ2NoZWNrKGVuZ2luZSk7CiAKIG91dDoKQEAgLTYxMyw2ICs2MTIsMTUg QEAgb3V0OgogCXJldHVybiByZXQ7CiB9CiAKK3N0YXRpYyB2b2lkIHJlc2V0X3JpbmdfY29tbW9u KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKKwkJCSAgICAgIHN0cnVjdCBkcm1faTkx NV9nZW1fcmVxdWVzdCAqcmVxdWVzdCkKK3sKKwlzdHJ1Y3QgaW50ZWxfcmluZyAqcmluZyA9IHJl cXVlc3QtPnJpbmc7CisKKwlyaW5nLT5oZWFkID0gcmVxdWVzdC0+cG9zdGZpeDsKKwlyaW5nLT5s YXN0X3JldGlyZWRfaGVhZCA9IC0xOworfQorCiBzdGF0aWMgaW50IGludGVsX3Jpbmdfd29ya2Fy b3VuZHNfZW1pdChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSkKIHsKIAlzdHJ1Y3Qg aW50ZWxfcmluZyAqcmluZyA9IHJlcS0+cmluZzsKQEAgLTIwMDcsNyArMjAxNSw2IEBAIGludGVs X2VuZ2luZV9jcmVhdGVfcmluZyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsIGludCBz aXplKQogCX0KIAlyaW5nLT52bWEgPSB2bWE7CiAKLQlsaXN0X2FkZCgmcmluZy0+bGluaywgJmVu Z2luZS0+YnVmZmVycyk7CiAJcmV0dXJuIHJpbmc7CiB9CiAKQEAgLTIwMTUsNyArMjAyMiw2IEBA IHZvaWQKIGludGVsX3JpbmdfZnJlZShzdHJ1Y3QgaW50ZWxfcmluZyAqcmluZykKIHsKIAlpOTE1 X3ZtYV9wdXQocmluZy0+dm1hKTsKLQlsaXN0X2RlbCgmcmluZy0+bGluayk7CiAJa2ZyZWUocmlu Zyk7CiB9CiAKQEAgLTIxNjksNiArMjE3NSwxNiBAQCB2b2lkIGludGVsX2VuZ2luZV9jbGVhbnVw KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIAllbmdpbmUtPmk5MTUgPSBOVUxMOwog fQogCit2b2lkIGludGVsX2xlZ2FjeV9zdWJtaXNzaW9uX3Jlc3VtZShzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYpCit7CisJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lOwor CisJZm9yX2VhY2hfZW5naW5lKGVuZ2luZSwgZGV2X3ByaXYpIHsKKwkJZW5naW5lLT5idWZmZXIt PmhlYWQgPSBlbmdpbmUtPmJ1ZmZlci0+dGFpbDsKKwkJZW5naW5lLT5idWZmZXItPmxhc3RfcmV0 aXJlZF9oZWFkID0gLTE7CisJfQorfQorCiBpbnQgaW50ZWxfcmluZ19hbGxvY19yZXF1ZXN0X2V4 dHJhcyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcXVlc3QpCiB7CiAJaW50IHJldDsK QEAgLTI2NTQsNiArMjY3MCw3IEBAIHN0YXRpYyB2b2lkIGludGVsX3JpbmdfZGVmYXVsdF92ZnVu Y3Moc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCWludGVsX3JpbmdfaW5pdF9z ZW1hcGhvcmVzKGRldl9wcml2LCBlbmdpbmUpOwogCiAJZW5naW5lLT5pbml0X2h3ID0gaW5pdF9y aW5nX2NvbW1vbjsKKwllbmdpbmUtPnJlc2V0X2h3ID0gcmVzZXRfcmluZ19jb21tb247CiAKIAll bmdpbmUtPmVtaXRfcmVxdWVzdCA9IGk5eHhfZW1pdF9yZXF1ZXN0OwogCWlmIChpOTE1LnNlbWFw aG9yZXMpCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVy LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmgKaW5kZXggMjE4MWQw YTQxYTk2Li5hMDhkYmU3M2IwZWUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX3JpbmdidWZmZXIuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVm ZmVyLmgKQEAgLTg3LDcgKzg3LDYgQEAgc3RydWN0IGludGVsX3JpbmcgewogCXZvaWQgKnZhZGRy OwogCiAJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lOwotCXN0cnVjdCBsaXN0X2hlYWQg bGluazsKIAogCXN0cnVjdCBsaXN0X2hlYWQgcmVxdWVzdF9saXN0OwogCkBAIC0xNTcsNyArMTU2 LDYgQEAgc3RydWN0IGludGVsX2VuZ2luZV9jcyB7CiAJdTMyCQltbWlvX2Jhc2U7CiAJdW5zaWdu ZWQgaW50IGlycV9zaGlmdDsKIAlzdHJ1Y3QgaW50ZWxfcmluZyAqYnVmZmVyOwotCXN0cnVjdCBs aXN0X2hlYWQgYnVmZmVyczsKIAogCS8qIFJhdGhlciB0aGFuIGhhdmUgZXZlcnkgY2xpZW50IHdh aXQgdXBvbiBhbGwgdXNlciBpbnRlcnJ1cHRzLAogCSAqIHdpdGggdGhlIGhlcmQgd2FraW5nIGFm dGVyIGV2ZXJ5IGludGVycnVwdCBhbmQgZWFjaCBkb2luZyB0aGUKQEAgLTIxMSw2ICsyMDksOCBA QCBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzIHsKIAl2b2lkCQkoKmlycV9kaXNhYmxlKShzdHJ1Y3Qg aW50ZWxfZW5naW5lX2NzICplbmdpbmUpOwogCiAJaW50CQkoKmluaXRfaHcpKHN0cnVjdCBpbnRl bF9lbmdpbmVfY3MgKmVuZ2luZSk7CisJdm9pZAkJKCpyZXNldF9odykoc3RydWN0IGludGVsX2Vu Z2luZV9jcyAqZW5naW5lLAorCQkJCSAgICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJl cSk7CiAKIAlpbnQJCSgqaW5pdF9jb250ZXh0KShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3Qg KnJlcSk7CiAKQEAgLTQ0NCw2ICs0NDQsOCBAQCB2b2lkIGludGVsX3JpbmdfZnJlZShzdHJ1Y3Qg aW50ZWxfcmluZyAqcmluZyk7CiB2b2lkIGludGVsX2VuZ2luZV9zdG9wKHN0cnVjdCBpbnRlbF9l bmdpbmVfY3MgKmVuZ2luZSk7CiB2b2lkIGludGVsX2VuZ2luZV9jbGVhbnVwKHN0cnVjdCBpbnRl bF9lbmdpbmVfY3MgKmVuZ2luZSk7CiAKK3ZvaWQgaW50ZWxfbGVnYWN5X3N1Ym1pc3Npb25fcmVz dW1lKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7CisKIGludCBpbnRlbF9yaW5n X2FsbG9jX3JlcXVlc3RfZXh0cmFzKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxdWVz dCk7CiAKIGludCBfX211c3RfY2hlY2sgaW50ZWxfcmluZ19iZWdpbihzdHJ1Y3QgZHJtX2k5MTVf Z2VtX3JlcXVlc3QgKnJlcSwgaW50IG4pOwotLSAKMi45LjMKCl9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwt Z2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9t YWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=