From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH 20/40] drm/i915: Track all held rpm wakerefs Date: Wed, 19 Sep 2018 20:55:24 +0100 Message-ID: <20180919195544.1511-20-chris@chris-wilson.co.uk> References: <20180919195544.1511-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 fireflyinternet.com (mail.fireflyinternet.com [109.228.58.192]) by gabe.freedesktop.org (Postfix) with ESMTPS id 346836E1BB for ; Wed, 19 Sep 2018 19:56:14 +0000 (UTC) In-Reply-To: <20180919195544.1511-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 RXZlcnl0aW1lIHdlIHRha2UgYSB3YWtlcmVmLCByZWNvcmQgdGhlIHN0YWNrIHRyYWNlIG9mIHdo ZXJlIGl0IHdhcwp0YWtlbjsgY2xlYXJpbmcgdGhlIHNldCBpZiB3ZSBldmVyIGRyb3AgYmFjayB0 byBubyBvd25lcnMuIEZvciBkZWJ1Z2dpbmcKYSBycG0gbGVhaywgd2UgY2FuIGxvb2sgYXQgYWxs IHRoZSBjdXJyZW50IHdha2VyZWZzIGFuZCBjaGVjayBpZiB0aGV5CmhhdmUgYSBtYXRjaGluZyBy cG1fcHV0LgoKU2lnbmVkLW9mZi1ieTogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24u Y28udWs+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvS2NvbmZpZy5kZWJ1ZyAgICAgICAgICAg IHwgICAyICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYyAgICAgICAgICAg fCAgIDYgKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYyAgICAgICAgICAgICAgIHwg ICA4ICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oICAgICAgICAgICAgICAgfCAg IDcgKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggICAgICAgICAgICAgIHwgIDQ0 ICsrLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcnVudGltZV9wbS5jICAgICAgIHwgMjY3 ICsrKysrKysrKysrKysrKystLQogLi4uL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvbW9ja19nZW1f ZGV2aWNlLmMgIHwgICA4ICstCiA3IGZpbGVzIGNoYW5nZWQsIDI5MiBpbnNlcnRpb25zKCspLCA1 MCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9LY29uZmln LmRlYnVnIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvS2NvbmZpZy5kZWJ1ZwppbmRleCA5ZTM2ZmZi NWViN2MuLmE5NzkyOWM0NzQ2NiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvS2Nv bmZpZy5kZWJ1ZworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9LY29uZmlnLmRlYnVnCkBAIC0y MSwxMSArMjEsMTEgQEAgY29uZmlnIERSTV9JOTE1X0RFQlVHCiAgICAgICAgIHNlbGVjdCBERUJV R19GUwogICAgICAgICBzZWxlY3QgUFJFRU1QVF9DT1VOVAogICAgICAgICBzZWxlY3QgSTJDX0NI QVJERVYKKyAgICAgICAgc2VsZWN0IFNUQUNLREVQT1QKICAgICAgICAgc2VsZWN0IERSTV9EUF9B VVhfQ0hBUkRFVgogICAgICAgICBzZWxlY3QgWDg2X01TUiAjIHVzZWQgYnkgaWd0L3BtX3JwbQog ICAgICAgICBzZWxlY3QgRFJNX1ZHRU0gIyB1c2VkIGJ5IGlndC9wcmltZV92Z2VtIChkbWFidWYg aW50ZXJvcCBjaGVja3MpCiAgICAgICAgIHNlbGVjdCBEUk1fREVCVUdfTU0gaWYgRFJNPXkKLSAg ICAgICAgc2VsZWN0IFNUQUNLREVQT1QgaWYgRFJNPXkgIyBmb3IgRFJNX0RFQlVHX01NCiAJc2Vs ZWN0IERSTV9ERUJVR19TRUxGVEVTVAogCXNlbGVjdCBTV19TWU5DICMgc2lnbmFsaW5nIHZhbGlk YXRpb24gZnJhbWV3b3JrIChpZ3Qvc3luY29iaiopCiAJc2VsZWN0IERSTV9JOTE1X1NXX0ZFTkNF X0RFQlVHX09CSkVDVFMKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVi dWdmcy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKaW5kZXggMzlmMzE5 YzQ5ZGVmLi42ZDJlMWNjNjE5MDYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZGVidWdmcy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCkBA IC0yNjk5LDYgKzI2OTksMTIgQEAgc3RhdGljIGludCBpOTE1X3J1bnRpbWVfcG1fc3RhdHVzKHN0 cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqdW51c2VkKQogCQkgICBwY2lfcG93ZXJfbmFtZShwZGV2 LT5jdXJyZW50X3N0YXRlKSwKIAkJICAgcGRldi0+Y3VycmVudF9zdGF0ZSk7CiAKKwlpZiAoSVNf RU5BQkxFRChDT05GSUdfRFJNX0k5MTVfREVCVUdfUlVOVElNRV9QTSkpIHsKKwkJc3RydWN0IGRy bV9wcmludGVyIHAgPSBkcm1fc2VxX2ZpbGVfcHJpbnRlcihtKTsKKworCQlwcmludF9pbnRlbF9y dW50aW1lX3BtX3dha2VyZWYoZGV2X3ByaXYsICZwKTsKKwl9CisKIAlyZXR1cm4gMDsKIH0KIApk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZHJ2LmMKaW5kZXggNDRlMmMwZjVlYzUwLi45ODg0OTAyYTRhOWMgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMKKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9kcnYuYwpAQCAtODk1LDYgKzg5NSw3IEBAIHN0YXRpYyBpbnQgaTkx NV9kcml2ZXJfaW5pdF9lYXJseShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJ bXV0ZXhfaW5pdCgmZGV2X3ByaXYtPnBwc19tdXRleCk7CiAKIAlpOTE1X21lbWNweV9pbml0X2Vh cmx5KGRldl9wcml2KTsKKwlpbnRlbF9ydW50aW1lX3BtX2luaXRfZWFybHkoZGV2X3ByaXYpOwog CiAJcmV0ID0gaTkxNV93b3JrcXVldWVzX2luaXQoZGV2X3ByaXYpOwogCWlmIChyZXQgPCAwKQpA QCAtMTc4OSw4ICsxNzkwLDcgQEAgdm9pZCBpOTE1X2RyaXZlcl91bmxvYWQoc3RydWN0IGRybV9k ZXZpY2UgKmRldikKIAlpOTE1X2RyaXZlcl9jbGVhbnVwX21taW8oZGV2X3ByaXYpOwogCiAJZW5h YmxlX3JwbV93YWtlcmVmX2Fzc2VydHMoZGV2X3ByaXYpOwotCi0JV0FSTl9PTihhdG9taWNfcmVh ZCgmZGV2X3ByaXYtPnJ1bnRpbWVfcG0ud2FrZXJlZl9jb3VudCkpOworCWludGVsX3J1bnRpbWVf cG1fY2xlYW51cChkZXZfcHJpdik7CiB9CiAKIHN0YXRpYyB2b2lkIGk5MTVfZHJpdmVyX3JlbGVh c2Uoc3RydWN0IGRybV9kZXZpY2UgKmRldikKQEAgLTE5OTQsNiArMTk5NCw4IEBAIHN0YXRpYyBp bnQgaTkxNV9kcm1fc3VzcGVuZF9sYXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGJvb2wgaGli ZXJuYXRpb24pCiAKIG91dDoKIAllbmFibGVfcnBtX3dha2VyZWZfYXNzZXJ0cyhkZXZfcHJpdik7 CisJaWYgKCFkZXZfcHJpdi0+dW5jb3JlLnVzZXJfZm9yY2V3YWtlLmNvdW50KQorCQlpbnRlbF9y dW50aW1lX3BtX2NsZWFudXAoZGV2X3ByaXYpOwogCiAJcmV0dXJuIHJldDsKIH0KQEAgLTI5NDgs NyArMjk1MCw3IEBAIHN0YXRpYyBpbnQgaW50ZWxfcnVudGltZV9zdXNwZW5kKHN0cnVjdCBkZXZp Y2UgKmtkZXYpCiAJfQogCiAJZW5hYmxlX3JwbV93YWtlcmVmX2Fzc2VydHMoZGV2X3ByaXYpOwot CVdBUk5fT05fT05DRShhdG9taWNfcmVhZCgmZGV2X3ByaXYtPnJ1bnRpbWVfcG0ud2FrZXJlZl9j b3VudCkpOworCWludGVsX3J1bnRpbWVfcG1fY2xlYW51cChkZXZfcHJpdik7CiAKIAlpZiAoaW50 ZWxfdW5jb3JlX2FybV91bmNsYWltZWRfbW1pb19kZXRlY3Rpb24oZGV2X3ByaXYpKQogCQlEUk1f RVJST1IoIlVuY2xhaW1lZCBhY2Nlc3MgZGV0ZWN0ZWQgcHJpb3IgdG8gc3VzcGVuZGluZ1xuIik7 CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9kcnYuaAppbmRleCBiOTAyYmI5NmUwYmUuLmYxMjQ4MjdjZWU2NyAx MDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAorKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCkBAIC00NSw2ICs0NSw3IEBACiAjaW5jbHVkZSA8bGlu dXgvcG1fcW9zLmg+CiAjaW5jbHVkZSA8bGludXgvcmVzZXJ2YXRpb24uaD4KICNpbmNsdWRlIDxs aW51eC9zaG1lbV9mcy5oPgorI2luY2x1ZGUgPGxpbnV4L3N0YWNrZGVwb3QuaD4KIAogI2luY2x1 ZGUgPGRybS9kcm1QLmg+CiAjaW5jbHVkZSA8ZHJtL2ludGVsLWd0dC5oPgpAQCAtMTI4OCw2ICsx Mjg5LDEyIEBAIHN0cnVjdCBpOTE1X3J1bnRpbWVfcG0gewogCWF0b21pY190IHdha2VyZWZfY291 bnQ7CiAJYm9vbCBzdXNwZW5kZWQ7CiAJYm9vbCBpcnFzX2VuYWJsZWQ7CisKKyNpZiBJU19FTkFC TEVEKENPTkZJR19EUk1fSTkxNV9ERUJVR19SVU5USU1FX1BNKQorCXNwaW5sb2NrX3QgZGVidWdf bG9jazsKKwlkZXBvdF9zdGFja19oYW5kbGVfdCAqZGVidWdfb3duZXJzOworCXVuc2lnbmVkIGxv bmcgZGVidWdfY291bnQ7CisjZW5kaWYKIH07CiAKIGVudW0gaW50ZWxfcGlwZV9jcmNfc291cmNl IHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKaW5kZXggNWEwN2ZhZTM1NzhiLi5iYzYzOTYzNjYw MTYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCisrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCkBAIC00MCw2ICs0MCw4IEBACiAjaW5jbHVk ZSA8ZHJtL2RybV9hdG9taWMuaD4KICNpbmNsdWRlIDxtZWRpYS9jZWMtbm90aWZpZXIuaD4KIAor c3RydWN0IGRybV9wcmludGVyOworCiAvKioKICAqIF9fd2FpdF9mb3IgLSBtYWdpYyB3YWl0IG1h Y3JvCiAgKgpAQCAtMTk2MSw2ICsxOTYzLDcgQEAgaW50IGludGVsX3Bzcl93YWl0X2Zvcl9pZGxl KGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpuZXdfY3J0Y19zdGF0ZSwKIAkJCSAgICB1 MzIgKm91dF92YWx1ZSk7CiAKIC8qIGludGVsX3J1bnRpbWVfcG0uYyAqLwordm9pZCBpbnRlbF9y dW50aW1lX3BtX2luaXRfZWFybHkoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsK IGludCBpbnRlbF9wb3dlcl9kb21haW5zX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKik7 CiB2b2lkIGludGVsX3Bvd2VyX2RvbWFpbnNfY2xlYW51cChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYpOwogdm9pZCBpbnRlbF9wb3dlcl9kb21haW5zX2luaXRfaHcoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCBib29sIHJlc3VtZSk7CkBAIC0xOTgxLDYgKzE5ODQs NyBAQCB2b2lkIGJ4dF9kaXNwbGF5X2NvcmVfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYsIGJvb2wgcmVzdW1lKTsKIHZvaWQgYnh0X2Rpc3BsYXlfY29yZV91bmluaXQoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKIHZvaWQgaW50ZWxfcnVudGltZV9wbV9l bmFibGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKIHZvaWQgaW50ZWxfcnVu dGltZV9wbV9kaXNhYmxlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7Cit2b2lk IGludGVsX3J1bnRpbWVfcG1fY2xlYW51cChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYpOwogY29uc3QgY2hhciAqCiBpbnRlbF9kaXNwbGF5X3Bvd2VyX2RvbWFpbl9zdHIoZW51bSBp bnRlbF9kaXNwbGF5X3Bvd2VyX2RvbWFpbiBkb21haW4pOwogCkBAIC0xOTk4LDIzICsyMDAyLDIz IEBAIHZvaWQgaWNsX2RidWZfc2xpY2VzX3VwZGF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYsCiAJCQkgICAgdTggcmVxX3NsaWNlcyk7CiAKIHN0YXRpYyBpbmxpbmUgdm9pZAot YXNzZXJ0X3JwbV9kZXZpY2Vfbm90X3N1c3BlbmRlZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYpCithc3NlcnRfcnBtX2RldmljZV9ub3Rfc3VzcGVuZGVkKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICppOTE1KQogewotCVdBUk5fT05DRShkZXZfcHJpdi0+cnVudGltZV9wbS5zdXNw ZW5kZWQsCisJV0FSTl9PTkNFKGk5MTUtPnJ1bnRpbWVfcG0uc3VzcGVuZGVkLAogCQkgICJEZXZp Y2Ugc3VzcGVuZGVkIGR1cmluZyBIVyBhY2Nlc3NcbiIpOwogfQogCiBzdGF0aWMgaW5saW5lIHZv aWQKLWFzc2VydF9ycG1fd2FrZWxvY2tfaGVsZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYpCithc3NlcnRfcnBtX3dha2Vsb2NrX2hlbGQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg Kmk5MTUpCiB7Ci0JYXNzZXJ0X3JwbV9kZXZpY2Vfbm90X3N1c3BlbmRlZChkZXZfcHJpdik7Ci0J V0FSTl9PTkNFKCFhdG9taWNfcmVhZCgmZGV2X3ByaXYtPnJ1bnRpbWVfcG0ud2FrZXJlZl9jb3Vu dCksCisJYXNzZXJ0X3JwbV9kZXZpY2Vfbm90X3N1c3BlbmRlZChpOTE1KTsKKwlXQVJOX09OQ0Uo IWF0b21pY19yZWFkKCZpOTE1LT5ydW50aW1lX3BtLndha2VyZWZfY291bnQpLAogCQkgICJSUE0g d2FrZWxvY2sgcmVmIG5vdCBoZWxkIGR1cmluZyBIVyBhY2Nlc3MiKTsKIH0KIAogLyoqCiAgKiBk aXNhYmxlX3JwbV93YWtlcmVmX2Fzc2VydHMgLSBkaXNhYmxlIHRoZSBSUE0gYXNzZXJ0IGNoZWNr cwotICogQGRldl9wcml2OiBpOTE1IGRldmljZSBpbnN0YW5jZQorICogQGk5MTU6IGk5MTUgZGV2 aWNlIGluc3RhbmNlCiAgKgogICogVGhpcyBmdW5jdGlvbiBkaXNhYmxlIGFzc2VydHMgdGhhdCBj aGVjayBpZiB3ZSBob2xkIGFuIFJQTSB3YWtlbG9jawogICogcmVmZXJlbmNlLCB3aGlsZSBrZWVw aW5nIHRoZSBkZXZpY2Utbm90LXN1c3BlbmRlZCBjaGVja3Mgc3RpbGwgZW5hYmxlZC4KQEAgLTIw MzEsMTQgKzIwMzUsMTQgQEAgYXNzZXJ0X3JwbV93YWtlbG9ja19oZWxkKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdikKICAqIGVuYWJsZV9ycG1fd2FrZXJlZl9hc3NlcnRzKCkuCiAg Ki8KIHN0YXRpYyBpbmxpbmUgdm9pZAotZGlzYWJsZV9ycG1fd2FrZXJlZl9hc3NlcnRzKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKK2Rpc2FibGVfcnBtX3dha2VyZWZfYXNzZXJ0 cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKIHsKLQlhdG9taWNfaW5jKCZkZXZfcHJp di0+cnVudGltZV9wbS53YWtlcmVmX2NvdW50KTsKKwlhdG9taWNfaW5jKCZpOTE1LT5ydW50aW1l X3BtLndha2VyZWZfY291bnQpOwogfQogCiAvKioKICAqIGVuYWJsZV9ycG1fd2FrZXJlZl9hc3Nl cnRzIC0gcmUtZW5hYmxlIHRoZSBSUE0gYXNzZXJ0IGNoZWNrcwotICogQGRldl9wcml2OiBpOTE1 IGRldmljZSBpbnN0YW5jZQorICogQGk5MTU6IGk5MTUgZGV2aWNlIGluc3RhbmNlCiAgKgogICog VGhpcyBmdW5jdGlvbiByZS1lbmFibGVzIHRoZSBSUE0gYXNzZXJ0IGNoZWNrcyBhZnRlciBkaXNh YmxpbmcgdGhlbSB3aXRoCiAgKiBkaXNhYmxlX3JwbV93YWtlcmVmX2Fzc2VydHMuIEl0J3MgbWVh bnQgdG8gYmUgdXNlZCBvbmx5IGluIHNwZWNpYWwKQEAgLTIwNDgsMTUgKzIwNTIsMjUgQEAgZGlz YWJsZV9ycG1fd2FrZXJlZl9hc3NlcnRzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp dikKICAqIGRpc2FibGVfcnBtX3dha2VyZWZfYXNzZXJ0cygpLgogICovCiBzdGF0aWMgaW5saW5l IHZvaWQKLWVuYWJsZV9ycG1fd2FrZXJlZl9hc3NlcnRzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdikKK2VuYWJsZV9ycG1fd2FrZXJlZl9hc3NlcnRzKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICppOTE1KQogewotCWF0b21pY19kZWMoJmRldl9wcml2LT5ydW50aW1lX3BtLndha2Vy ZWZfY291bnQpOworCWF0b21pY19kZWMoJmk5MTUtPnJ1bnRpbWVfcG0ud2FrZXJlZl9jb3VudCk7 CiB9CiAKLXZvaWQgaW50ZWxfcnVudGltZV9wbV9nZXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2KTsKLWJvb2wgaW50ZWxfcnVudGltZV9wbV9nZXRfaWZfaW5fdXNlKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7Ci12b2lkIGludGVsX3J1bnRpbWVfcG1fZ2V0X25v cmVzdW1lKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7Ci12b2lkIGludGVsX3J1 bnRpbWVfcG1fcHV0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7Cit2b2lkIGlu dGVsX3J1bnRpbWVfcG1fZ2V0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KTsKK2Jvb2wg aW50ZWxfcnVudGltZV9wbV9nZXRfaWZfaW5fdXNlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpp OTE1KTsKK3ZvaWQgaW50ZWxfcnVudGltZV9wbV9nZXRfbm9yZXN1bWUoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmk5MTUpOwordm9pZCBpbnRlbF9ydW50aW1lX3BtX3B1dChzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqaTkxNSk7CisKKyNpZiBJU19FTkFCTEVEKENPTkZJR19EUk1fSTkxNV9ERUJV R19SVU5USU1FX1BNKQordm9pZCBwcmludF9pbnRlbF9ydW50aW1lX3BtX3dha2VyZWYoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCisJCQkJICAgIHN0cnVjdCBkcm1fcHJpbnRlciAqcCk7 CisjZWxzZQorc3RhdGljIGlubGluZSB2b2lkIHByaW50X2ludGVsX3J1bnRpbWVfcG1fd2FrZXJl ZihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKKwkJCQkJCSAgc3RydWN0IGRybV9wcmlu dGVyICpwKQoreworfQorI2VuZGlmCiAKIHZvaWQgY2h2X3BoeV9wb3dlcmdhdGVfbGFuZXMoc3Ry dWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCiAJCQkgICAgIGJvb2wgb3ZlcnJpZGUsIHVuc2ln bmVkIGludCBtYXNrKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3J1 bnRpbWVfcG0uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3J1bnRpbWVfcG0uYwppbmRl eCAwZmRhYmNlNjQ3YWIuLmVkOGUwYmNlYTA3OCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfcnVudGltZV9wbS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X3J1bnRpbWVfcG0uYwpAQCAtMjksNiArMjksOCBAQAogI2luY2x1ZGUgPGxpbnV4L3BtX3J1bnRp bWUuaD4KICNpbmNsdWRlIDxsaW51eC92Z2FhcmIuaD4KIAorI2luY2x1ZGUgPGRybS9kcm1fcHJp bnQuaD4KKwogI2luY2x1ZGUgImk5MTVfZHJ2LmgiCiAjaW5jbHVkZSAiaW50ZWxfZHJ2LmgiCiAK QEAgLTQ5LDYgKzUxLDE4OSBAQAogICogcHJlc2VudCBmb3IgYSBnaXZlbiBwbGF0Zm9ybS4KICAq LwogCisjaWYgSVNfRU5BQkxFRChDT05GSUdfRFJNX0k5MTVfREVCVUdfUlVOVElNRV9QTSkKKwor I2luY2x1ZGUgPGxpbnV4L3NvcnQuaD4KKworI2RlZmluZSBTVEFDS0RFUFRIIDgKKworc3RhdGlj IHZvaWQgaW5pdF9pbnRlbF9ydW50aW1lX3BtX3dha2VyZWYoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmk5MTUpCit7CisJc3Bpbl9sb2NrX2luaXQoJmk5MTUtPnJ1bnRpbWVfcG0uZGVidWdfbG9j ayk7Cit9CisKK3N0YXRpYyBub2lubGluZSB2b2lkCit0cmFja19pbnRlbF9ydW50aW1lX3BtX3dh a2VyZWYoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCit7CisJc3RydWN0IGk5MTVfcnVu dGltZV9wbSAqcnBtID0gJmk5MTUtPnJ1bnRpbWVfcG07CisJdW5zaWduZWQgbG9uZyBlbnRyaWVz W1NUQUNLREVQVEhdOworCXN0cnVjdCBzdGFja190cmFjZSB0cmFjZSA9IHsKKwkJLmVudHJpZXMg PSBlbnRyaWVzLAorCQkubWF4X2VudHJpZXMgPSBBUlJBWV9TSVpFKGVudHJpZXMpLAorCQkuc2tp cCA9IDEKKwl9OworCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CisJZGVwb3Rfc3RhY2tfaGFuZGxlX3Qg c3RhY2ssICpzdGFja3M7CisKKwlpZiAoIUhBU19SVU5USU1FX1BNKGk5MTUpKQorCQlyZXR1cm47 CisKKwlzYXZlX3N0YWNrX3RyYWNlKCZ0cmFjZSk7CisJaWYgKHRyYWNlLm5yX2VudHJpZXMgJiYK KwkgICAgdHJhY2UuZW50cmllc1t0cmFjZS5ucl9lbnRyaWVzIC0gMV0gPT0gVUxPTkdfTUFYKQor CQl0cmFjZS5ucl9lbnRyaWVzLS07CisKKwlzdGFjayA9IGRlcG90X3NhdmVfc3RhY2soJnRyYWNl LCBHRlBfTk9XQUlUIHwgX19HRlBfTk9XQVJOKTsKKwlpZiAoIXN0YWNrKQorCQlyZXR1cm47CisK KwlzcGluX2xvY2tfaXJxc2F2ZSgmcnBtLT5kZWJ1Z19sb2NrLCBmbGFncyk7CisJc3RhY2tzID0g a3JlYWxsb2MocnBtLT5kZWJ1Z19vd25lcnMsCisJCQkgIChycG0tPmRlYnVnX2NvdW50ICsgMSkg KiBzaXplb2YoKnN0YWNrcyksCisJCQkgIEdGUF9OT1dBSVQgfCBfX0dGUF9OT1dBUk4pOworCWlm IChzdGFja3MpIHsKKwkJc3RhY2tzW3JwbS0+ZGVidWdfY291bnQrK10gPSBzdGFjazsKKwkJcnBt LT5kZWJ1Z19vd25lcnMgPSBzdGFja3M7CisJfQorCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnJw bS0+ZGVidWdfbG9jaywgZmxhZ3MpOworfQorCitzdGF0aWMgdm9pZCB1bnRyYWNrX2ludGVsX3J1 bnRpbWVfcG1fd2FrZXJlZihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKK3sKKwlzdHJ1 Y3QgaTkxNV9ydW50aW1lX3BtICpycG0gPSAmaTkxNS0+cnVudGltZV9wbTsKKwlkZXBvdF9zdGFj a19oYW5kbGVfdCAqc3RhY2tzOworCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CisKKwlzcGluX2xvY2tf aXJxc2F2ZSgmcnBtLT5kZWJ1Z19sb2NrLCBmbGFncyk7CisJc3RhY2tzID0gZmV0Y2hfYW5kX3pl cm8oJnJwbS0+ZGVidWdfb3duZXJzKTsKKwlycG0tPmRlYnVnX2NvdW50ID0gMDsKKwlzcGluX3Vu bG9ja19pcnFyZXN0b3JlKCZycG0tPmRlYnVnX2xvY2ssIGZsYWdzKTsKKworCWtmcmVlKHN0YWNr cyk7Cit9CisKK3N0YXRpYyBpbnQgY21waGFuZGxlKGNvbnN0IHZvaWQgKl9hLCBjb25zdCB2b2lk ICpfYikKK3sKKwljb25zdCBkZXBvdF9zdGFja19oYW5kbGVfdCAqIGNvbnN0IGEgPSBfYSwgKiBj b25zdCBiID0gX2I7CisKKwlpZiAoKmEgPCAqYikKKwkJcmV0dXJuIC0xOworCWVsc2UgaWYgKCph ID4gKmIpCisJCXJldHVybiAxOworCWVsc2UKKwkJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lk IF9fcHJpbnRfaW50ZWxfcnVudGltZV9wbV93YWtlcmVmKHN0cnVjdCBkcm1fcHJpbnRlciAqcCwK KwkJCQkJICAgICBkZXBvdF9zdGFja19oYW5kbGVfdCAqc3RhY2tzLAorCQkJCQkgICAgIHVuc2ln bmVkIGxvbmcgY291bnQpCit7CisJdW5zaWduZWQgbG9uZyBlbnRyaWVzW1NUQUNLREVQVEhdOwor CXVuc2lnbmVkIGxvbmcgaTsKKwljaGFyICpidWY7CisKKwlkcm1fcHJpbnRmKHAsICJXYWtlcmVm IGNvdW50OiAlbHVcbiIsIGNvdW50KTsKKworCWJ1ZiA9IGttYWxsb2MoUEFHRV9TSVpFLCBHRlBf S0VSTkVMKTsKKwlpZiAoIWJ1ZikKKwkJcmV0dXJuOworCisJc29ydChzdGFja3MsIGNvdW50LCBz aXplb2YoKnN0YWNrcyksIGNtcGhhbmRsZSwgTlVMTCk7CisKKwlmb3IgKGkgPSAwOyBpIDwgY291 bnQ7IGkrKykgeworCQlzdHJ1Y3Qgc3RhY2tfdHJhY2UgdHJhY2UgPSB7CisJCQkuZW50cmllcyA9 IGVudHJpZXMsCisJCQkubWF4X2VudHJpZXMgPSBBUlJBWV9TSVpFKGVudHJpZXMpLAorCQl9Owor CQlkZXBvdF9zdGFja19oYW5kbGVfdCBzdGFjayA9IHN0YWNrc1tpXTsKKwkJdW5zaWduZWQgbG9u ZyByZXA7CisKKwkJcmVwID0gMTsKKwkJd2hpbGUgKGkgKyAxIDwgY291bnQgJiYgc3RhY2tzW2kg KyAxXSA9PSBzdGFjaykKKwkJCXJlcCsrLCBpKys7CisJCWRlcG90X2ZldGNoX3N0YWNrKHN0YWNr LCAmdHJhY2UpOworCQlzbnByaW50X3N0YWNrX3RyYWNlKGJ1ZiwgUEFHRV9TSVpFLCAmdHJhY2Us IDIpOworCQlkcm1fcHJpbnRmKHAsICJXYWtlcmVmIHglbHUgdGFrZW4gYXQ6XG4lcyIsIHJlcCwg YnVmKTsKKwl9CisKKwlrZnJlZShidWYpOworfQorCitzdGF0aWMgdm9pZCBzaG93X2ludGVsX3J1 bnRpbWVfcG1fd2FrZXJlZihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKK3sKKwlzdHJ1 Y3QgaTkxNV9ydW50aW1lX3BtICpycG0gPSAmaTkxNS0+cnVudGltZV9wbTsKKwlkZXBvdF9zdGFj a19oYW5kbGVfdCAqc3RhY2tzOworCXVuc2lnbmVkIGxvbmcgZmxhZ3MsIGNvdW50OworCXN0cnVj dCBkcm1fcHJpbnRlciBwOworCisJc3Bpbl9sb2NrX2lycXNhdmUoJnJwbS0+ZGVidWdfbG9jaywg ZmxhZ3MpOworCXN0YWNrcyA9IGZldGNoX2FuZF96ZXJvKCZycG0tPmRlYnVnX293bmVycyk7CisJ Y291bnQgPSBmZXRjaF9hbmRfemVybygmcnBtLT5kZWJ1Z19jb3VudCk7CisJc3Bpbl91bmxvY2tf aXJxcmVzdG9yZSgmcnBtLT5kZWJ1Z19sb2NrLCBmbGFncyk7CisJaWYgKCFjb3VudCkKKwkJcmV0 dXJuOworCisJcCA9IGRybV9kZWJ1Z19wcmludGVyKCJpOTE1Iik7CisJX19wcmludF9pbnRlbF9y dW50aW1lX3BtX3dha2VyZWYoJnAsIHN0YWNrcywgY291bnQpOworCisJa2ZyZWUoc3RhY2tzKTsK K30KKwordm9pZCBwcmludF9pbnRlbF9ydW50aW1lX3BtX3dha2VyZWYoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmk5MTUsCisJCQkJICAgIHN0cnVjdCBkcm1fcHJpbnRlciAqcCkKK3sKKwlkZXBv dF9zdGFja19oYW5kbGVfdCAqc3RhY2tzID0gTlVMTDsKKwl1bnNpZ25lZCBsb25nIGNvdW50ID0g MDsKKworCWRvIHsKKwkJc3RydWN0IGk5MTVfcnVudGltZV9wbSAqcnBtID0gJmk5MTUtPnJ1bnRp bWVfcG07CisJCXVuc2lnbmVkIGxvbmcgYWxsb2MgPSBjb3VudDsKKwkJZGVwb3Rfc3RhY2tfaGFu ZGxlX3QgKnM7CisKKwkJc3Bpbl9sb2NrX2lycSgmcnBtLT5kZWJ1Z19sb2NrKTsKKwkJY291bnQg PSBycG0tPmRlYnVnX2NvdW50OworCQlpZiAoY291bnQgPT0gYWxsb2MpIHsKKwkJCW1lbWNweShz dGFja3MsCisJCQkgICAgICAgcnBtLT5kZWJ1Z19vd25lcnMsCisJCQkgICAgICAgY291bnQgKiBz aXplb2YoKnN0YWNrcykpOworCQl9CisJCXNwaW5fdW5sb2NrX2lycSgmcnBtLT5kZWJ1Z19sb2Nr KTsKKwkJaWYgKGNvdW50ID09IGFsbG9jKQorCQkJYnJlYWs7CisKKwkJcyA9IGtyZWFsbG9jKHN0 YWNrcywgY291bnQgKiBzaXplb2YoKnN0YWNrcyksIEdGUF9LRVJORUwpOworCQlpZiAoIXMpCisJ CQlnb3RvIG91dDsKKworCQlzdGFja3MgPSBzOworCX0gd2hpbGUgKDEpOworCisJX19wcmludF9p bnRlbF9ydW50aW1lX3BtX3dha2VyZWYocCwgc3RhY2tzLCBjb3VudCk7CisKK291dDoKKwlrZnJl ZShzdGFja3MpOworfQorCisjZWxzZQorCitzdGF0aWMgdm9pZCBpbml0X2ludGVsX3J1bnRpbWVf cG1fd2FrZXJlZihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKK3sKK30KKworc3RhdGlj IHZvaWQgdHJhY2tfaW50ZWxfcnVudGltZV9wbV93YWtlcmVmKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICppOTE1KQoreworfQorCitzdGF0aWMgdm9pZCB1bnRyYWNrX2ludGVsX3J1bnRpbWVfcG1f d2FrZXJlZihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKK3sKK30KKworc3RhdGljIHZv aWQgc2hvd19pbnRlbF9ydW50aW1lX3BtX3dha2VyZWYoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg Kmk5MTUpCit7Cit9CisKKyNlbmRpZgorCiBib29sIGludGVsX2Rpc3BsYXlfcG93ZXJfd2VsbF9p c19lbmFibGVkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAkJCQkJIGVudW0g aTkxNV9wb3dlcl93ZWxsX2lkIHBvd2VyX3dlbGxfaWQpOwogCkBAIC00MDA0LDcgKzQxODksNyBA QCBzdGF0aWMgdm9pZCBpbnRlbF9wb3dlcl9kb21haW5zX3ZlcmlmeV9zdGF0ZShzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAKIC8qKgogICogaW50ZWxfcnVudGltZV9wbV9nZXQg LSBncmFiIGEgcnVudGltZSBwbSByZWZlcmVuY2UKLSAqIEBkZXZfcHJpdjogaTkxNSBkZXZpY2Ug aW5zdGFuY2UKKyAqIEBpOTE1OiBpOTE1IGRldmljZSBpbnN0YW5jZQogICoKICAqIFRoaXMgZnVu Y3Rpb24gZ3JhYnMgYSBkZXZpY2UtbGV2ZWwgcnVudGltZSBwbSByZWZlcmVuY2UgKG1vc3RseSB1 c2VkIGZvciBHRU0KICAqIGNvZGUgdG8gZW5zdXJlIHRoZSBHVFQgb3IgR1QgaXMgb24pIGFuZCBl bnN1cmVzIHRoYXQgaXQgaXMgcG93ZXJlZCB1cC4KQEAgLTQwMTIsMjIgKzQxOTcsMjQgQEAgc3Rh dGljIHZvaWQgaW50ZWxfcG93ZXJfZG9tYWluc192ZXJpZnlfc3RhdGUoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2KQogICogQW55IHJ1bnRpbWUgcG0gcmVmZXJlbmNlIG9idGFpbmVk IGJ5IHRoaXMgZnVuY3Rpb24gbXVzdCBoYXZlIGEgc3ltbWV0cmljCiAgKiBjYWxsIHRvIGludGVs X3J1bnRpbWVfcG1fcHV0KCkgdG8gcmVsZWFzZSB0aGUgcmVmZXJlbmNlIGFnYWluLgogICovCi12 b2lkIGludGVsX3J1bnRpbWVfcG1fZ2V0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp dikKK3ZvaWQgaW50ZWxfcnVudGltZV9wbV9nZXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5 MTUpCiB7Ci0Jc3RydWN0IHBjaV9kZXYgKnBkZXYgPSBkZXZfcHJpdi0+ZHJtLnBkZXY7CisJc3Ry dWN0IHBjaV9kZXYgKnBkZXYgPSBpOTE1LT5kcm0ucGRldjsKIAlzdHJ1Y3QgZGV2aWNlICprZGV2 ID0gJnBkZXYtPmRldjsKIAlpbnQgcmV0OwogCiAJcmV0ID0gcG1fcnVudGltZV9nZXRfc3luYyhr ZGV2KTsKIAlXQVJOX09OQ0UocmV0IDwgMCwgInBtX3J1bnRpbWVfZ2V0X3N5bmMoKSBmYWlsZWQ6 ICVkXG4iLCByZXQpOwogCi0JYXRvbWljX2luYygmZGV2X3ByaXYtPnJ1bnRpbWVfcG0ud2FrZXJl Zl9jb3VudCk7Ci0JYXNzZXJ0X3JwbV93YWtlbG9ja19oZWxkKGRldl9wcml2KTsKKwlhdG9taWNf aW5jKCZpOTE1LT5ydW50aW1lX3BtLndha2VyZWZfY291bnQpOworCWFzc2VydF9ycG1fd2FrZWxv Y2tfaGVsZChpOTE1KTsKKworCXRyYWNrX2ludGVsX3J1bnRpbWVfcG1fd2FrZXJlZihpOTE1KTsK IH0KIAogLyoqCiAgKiBpbnRlbF9ydW50aW1lX3BtX2dldF9pZl9pbl91c2UgLSBncmFiIGEgcnVu dGltZSBwbSByZWZlcmVuY2UgaWYgZGV2aWNlIGluIHVzZQotICogQGRldl9wcml2OiBpOTE1IGRl dmljZSBpbnN0YW5jZQorICogQGk5MTU6IGk5MTUgZGV2aWNlIGluc3RhbmNlCiAgKgogICogVGhp cyBmdW5jdGlvbiBncmFicyBhIGRldmljZS1sZXZlbCBydW50aW1lIHBtIHJlZmVyZW5jZSBpZiB0 aGUgZGV2aWNlIGlzCiAgKiBhbHJlYWR5IGluIHVzZSBhbmQgZW5zdXJlcyB0aGF0IGl0IGlzIHBv d2VyZWQgdXAuIEl0IGlzIGlsbGVnYWwgdG8gdHJ5CkBAIC00MDM4LDEwICs0MjI1LDEwIEBAIHZv aWQgaW50ZWxfcnVudGltZV9wbV9nZXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 KQogICoKICAqIFJldHVybnM6IFRydWUgaWYgdGhlIHdha2VyZWYgd2FzIGFjcXVpcmVkLCBvciBG YWxzZSBvdGhlcndpc2UuCiAgKi8KLWJvb2wgaW50ZWxfcnVudGltZV9wbV9nZXRfaWZfaW5fdXNl KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKK2Jvb2wgaW50ZWxfcnVudGltZV9w bV9nZXRfaWZfaW5fdXNlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQogewogCWlmIChJ U19FTkFCTEVEKENPTkZJR19QTSkpIHsKLQkJc3RydWN0IHBjaV9kZXYgKnBkZXYgPSBkZXZfcHJp di0+ZHJtLnBkZXY7CisJCXN0cnVjdCBwY2lfZGV2ICpwZGV2ID0gaTkxNS0+ZHJtLnBkZXY7CiAJ CXN0cnVjdCBkZXZpY2UgKmtkZXYgPSAmcGRldi0+ZGV2OwogCiAJCS8qCkBAIC00MDU0LDE1ICs0 MjQxLDE3IEBAIGJvb2wgaW50ZWxfcnVudGltZV9wbV9nZXRfaWZfaW5fdXNlKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAkJCXJldHVybiBmYWxzZTsKIAl9CiAKLQlhdG9taWNf aW5jKCZkZXZfcHJpdi0+cnVudGltZV9wbS53YWtlcmVmX2NvdW50KTsKLQlhc3NlcnRfcnBtX3dh a2Vsb2NrX2hlbGQoZGV2X3ByaXYpOworCWF0b21pY19pbmMoJmk5MTUtPnJ1bnRpbWVfcG0ud2Fr ZXJlZl9jb3VudCk7CisJYXNzZXJ0X3JwbV93YWtlbG9ja19oZWxkKGk5MTUpOworCisJdHJhY2tf aW50ZWxfcnVudGltZV9wbV93YWtlcmVmKGk5MTUpOwogCiAJcmV0dXJuIHRydWU7CiB9CiAKIC8q KgogICogaW50ZWxfcnVudGltZV9wbV9nZXRfbm9yZXN1bWUgLSBncmFiIGEgcnVudGltZSBwbSBy ZWZlcmVuY2UKLSAqIEBkZXZfcHJpdjogaTkxNSBkZXZpY2UgaW5zdGFuY2UKKyAqIEBpOTE1OiBp OTE1IGRldmljZSBpbnN0YW5jZQogICoKICAqIFRoaXMgZnVuY3Rpb24gZ3JhYnMgYSBkZXZpY2Ut bGV2ZWwgcnVudGltZSBwbSByZWZlcmVuY2UgKG1vc3RseSB1c2VkIGZvciBHRU0KICAqIGNvZGUg dG8gZW5zdXJlIHRoZSBHVFQgb3IgR1QgaXMgb24pLgpAQCAtNDA3NywzMiArNDI2NiwzNSBAQCBi b29sIGludGVsX3J1bnRpbWVfcG1fZ2V0X2lmX2luX3VzZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYpCiAgKiBBbnkgcnVudGltZSBwbSByZWZlcmVuY2Ugb2J0YWluZWQgYnkgdGhp cyBmdW5jdGlvbiBtdXN0IGhhdmUgYSBzeW1tZXRyaWMKICAqIGNhbGwgdG8gaW50ZWxfcnVudGlt ZV9wbV9wdXQoKSB0byByZWxlYXNlIHRoZSByZWZlcmVuY2UgYWdhaW4uCiAgKi8KLXZvaWQgaW50 ZWxfcnVudGltZV9wbV9nZXRfbm9yZXN1bWUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2KQordm9pZCBpbnRlbF9ydW50aW1lX3BtX2dldF9ub3Jlc3VtZShzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqaTkxNSkKIHsKLQlzdHJ1Y3QgcGNpX2RldiAqcGRldiA9IGRldl9wcml2LT5kcm0u cGRldjsKKwlzdHJ1Y3QgcGNpX2RldiAqcGRldiA9IGk5MTUtPmRybS5wZGV2OwogCXN0cnVjdCBk ZXZpY2UgKmtkZXYgPSAmcGRldi0+ZGV2OwogCi0JYXNzZXJ0X3JwbV93YWtlbG9ja19oZWxkKGRl dl9wcml2KTsKKwlhc3NlcnRfcnBtX3dha2Vsb2NrX2hlbGQoaTkxNSk7CiAJcG1fcnVudGltZV9n ZXRfbm9yZXN1bWUoa2Rldik7CiAKLQlhdG9taWNfaW5jKCZkZXZfcHJpdi0+cnVudGltZV9wbS53 YWtlcmVmX2NvdW50KTsKKwlhdG9taWNfaW5jKCZpOTE1LT5ydW50aW1lX3BtLndha2VyZWZfY291 bnQpOworCisJdHJhY2tfaW50ZWxfcnVudGltZV9wbV93YWtlcmVmKGk5MTUpOwogfQogCiAvKioK ICAqIGludGVsX3J1bnRpbWVfcG1fcHV0IC0gcmVsZWFzZSBhIHJ1bnRpbWUgcG0gcmVmZXJlbmNl Ci0gKiBAZGV2X3ByaXY6IGk5MTUgZGV2aWNlIGluc3RhbmNlCisgKiBAaTkxNTogaTkxNSBkZXZp Y2UgaW5zdGFuY2UKICAqCiAgKiBUaGlzIGZ1bmN0aW9uIGRyb3BzIHRoZSBkZXZpY2UtbGV2ZWwg cnVudGltZSBwbSByZWZlcmVuY2Ugb2J0YWluZWQgYnkKICAqIGludGVsX3J1bnRpbWVfcG1fZ2V0 KCkgYW5kIG1pZ2h0IHBvd2VyIGRvd24gdGhlIGNvcnJlc3BvbmRpbmcKICAqIGhhcmR3YXJlIGJs b2NrIHJpZ2h0IGF3YXkgaWYgdGhpcyBpcyB0aGUgbGFzdCByZWZlcmVuY2UuCiAgKi8KLXZvaWQg aW50ZWxfcnVudGltZV9wbV9wdXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQor dm9pZCBpbnRlbF9ydW50aW1lX3BtX3B1dChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkK IHsKLQlzdHJ1Y3QgcGNpX2RldiAqcGRldiA9IGRldl9wcml2LT5kcm0ucGRldjsKKwlzdHJ1Y3Qg cGNpX2RldiAqcGRldiA9IGk5MTUtPmRybS5wZGV2OwogCXN0cnVjdCBkZXZpY2UgKmtkZXYgPSAm cGRldi0+ZGV2OwogCi0JYXNzZXJ0X3JwbV93YWtlbG9ja19oZWxkKGRldl9wcml2KTsKLQlhdG9t aWNfZGVjKCZkZXZfcHJpdi0+cnVudGltZV9wbS53YWtlcmVmX2NvdW50KTsKKwlhc3NlcnRfcnBt X3dha2Vsb2NrX2hlbGQoaTkxNSk7CisJaWYgKGF0b21pY19kZWNfYW5kX3Rlc3QoJmk5MTUtPnJ1 bnRpbWVfcG0ud2FrZXJlZl9jb3VudCkpCisJCXVudHJhY2tfaW50ZWxfcnVudGltZV9wbV93YWtl cmVmKGk5MTUpOwogCiAJcG1fcnVudGltZV9tYXJrX2xhc3RfYnVzeShrZGV2KTsKIAlwbV9ydW50 aW1lX3B1dF9hdXRvc3VzcGVuZChrZGV2KTsKQEAgLTQxMTAsNyArNDMwMiw3IEBAIHZvaWQgaW50 ZWxfcnVudGltZV9wbV9wdXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCiAv KioKICAqIGludGVsX3J1bnRpbWVfcG1fZW5hYmxlIC0gZW5hYmxlIHJ1bnRpbWUgcG0KLSAqIEBk ZXZfcHJpdjogaTkxNSBkZXZpY2UgaW5zdGFuY2UKKyAqIEBpOTE1OiBpOTE1IGRldmljZSBpbnN0 YW5jZQogICoKICAqIFRoaXMgZnVuY3Rpb24gZW5hYmxlcyBydW50aW1lIHBtIGF0IHRoZSBlbmQg b2YgdGhlIGRyaXZlciBsb2FkIHNlcXVlbmNlLgogICoKQEAgLTQxMTgsOSArNDMxMCw5IEBAIHZv aWQgaW50ZWxfcnVudGltZV9wbV9wdXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 KQogICogc3Vib3JkaW5hdGUgZGlzcGxheSBwb3dlciBkb21haW5zLiBUaGF0IGlzIGRvbmUgYnkK ICAqIGludGVsX3Bvd2VyX2RvbWFpbnNfZW5hYmxlKCkuCiAgKi8KLXZvaWQgaW50ZWxfcnVudGlt ZV9wbV9lbmFibGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQordm9pZCBpbnRl bF9ydW50aW1lX3BtX2VuYWJsZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKIHsKLQlz dHJ1Y3QgcGNpX2RldiAqcGRldiA9IGRldl9wcml2LT5kcm0ucGRldjsKKwlzdHJ1Y3QgcGNpX2Rl diAqcGRldiA9IGk5MTUtPmRybS5wZGV2OwogCXN0cnVjdCBkZXZpY2UgKmtkZXYgPSAmcGRldi0+ ZGV2OwogCiAJLyoKQEAgLTQxNDIsNyArNDMzNCw3IEBAIHZvaWQgaW50ZWxfcnVudGltZV9wbV9l bmFibGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCSAqIHNvIHRoZSBkcml2 ZXIncyBvd24gUlBNIHJlZmVyZW5jZSB0cmFja2luZyBhc3NlcnRzIGFsc28gd29yayBvbgogCSAq IHBsYXRmb3JtcyB3aXRob3V0IFJQTSBzdXBwb3J0LgogCSAqLwotCWlmICghSEFTX1JVTlRJTUVf UE0oZGV2X3ByaXYpKSB7CisJaWYgKCFIQVNfUlVOVElNRV9QTShpOTE1KSkgewogCQlpbnQgcmV0 OwogCiAJCXBtX3J1bnRpbWVfZG9udF91c2VfYXV0b3N1c3BlbmQoa2Rldik7CkBAIC00MTYwLDE3 ICs0MzUyLDM2IEBAIHZvaWQgaW50ZWxfcnVudGltZV9wbV9lbmFibGUoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2KQogCXBtX3J1bnRpbWVfcHV0X2F1dG9zdXNwZW5kKGtkZXYpOwog fQogCi12b2lkIGludGVsX3J1bnRpbWVfcG1fZGlzYWJsZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYpCit2b2lkIGludGVsX3J1bnRpbWVfcG1fZGlzYWJsZShzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqaTkxNSkKIHsKLQlzdHJ1Y3QgcGNpX2RldiAqcGRldiA9IGRldl9wcml2LT5k cm0ucGRldjsKKwlzdHJ1Y3QgcGNpX2RldiAqcGRldiA9IGk5MTUtPmRybS5wZGV2OwogCXN0cnVj dCBkZXZpY2UgKmtkZXYgPSAmcGRldi0+ZGV2OwogCiAJLyogVHJhbnNmZXIgcnBtIG93bmVyc2hp cCBiYWNrIHRvIGNvcmUgKi8KLQlXQVJOKHBtX3J1bnRpbWVfZ2V0X3N5bmMoJmRldl9wcml2LT5k cm0ucGRldi0+ZGV2KSA8IDAsCisJV0FSTihwbV9ydW50aW1lX2dldF9zeW5jKGtkZXYpIDwgMCwK IAkgICAgICJGYWlsZWQgdG8gcGFzcyBycG0gb3duZXJzaGlwIGJhY2sgdG8gY29yZVxuIik7CiAK IAlwbV9ydW50aW1lX2RvbnRfdXNlX2F1dG9zdXNwZW5kKGtkZXYpOwogCi0JaWYgKCFIQVNfUlVO VElNRV9QTShkZXZfcHJpdikpCisJaWYgKCFIQVNfUlVOVElNRV9QTShpOTE1KSkKIAkJcG1fcnVu dGltZV9wdXQoa2Rldik7CiB9CisKK3ZvaWQgaW50ZWxfcnVudGltZV9wbV9jbGVhbnVwKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICppOTE1KQoreworCXN0cnVjdCBpOTE1X3J1bnRpbWVfcG0gKnJw bSA9ICZpOTE1LT5ydW50aW1lX3BtOworCisJaWYgKFdBUk4oYXRvbWljX3JlYWQoJnJwbS0+d2Fr ZXJlZl9jb3VudCksCisJCSAiaTkxNS0+cnVudGltZV9wbS53YWtlcmVmX2NvdW50PSVkIG9uIGNs ZWFudXBcbiIsCisJCSBhdG9taWNfcmVhZCgmcnBtLT53YWtlcmVmX2NvdW50KSkpIHsKKwkJc2hv d19pbnRlbF9ydW50aW1lX3BtX3dha2VyZWYoaTkxNSk7CisJCWF0b21pY19zZXQoJnJwbS0+d2Fr ZXJlZl9jb3VudCwgMCk7CisJfQorCisJdW50cmFja19pbnRlbF9ydW50aW1lX3BtX3dha2VyZWYo aTkxNSk7Cit9CisKK3ZvaWQgaW50ZWxfcnVudGltZV9wbV9pbml0X2Vhcmx5KHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICppOTE1KQoreworCWluaXRfaW50ZWxfcnVudGltZV9wbV93YWtlcmVmKGk5 MTUpOworfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL21vY2tf Z2VtX2RldmljZS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL21vY2tfZ2VtX2Rl dmljZS5jCmluZGV4IDQzZWQ4YjI4YWVhYS4uMGViMjgzZTdmYzk2IDEwMDY0NAotLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvbW9ja19nZW1fZGV2aWNlLmMKKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL21vY2tfZ2VtX2RldmljZS5jCkBAIC0xNTQsMTUgKzE1 NCwxNyBAQCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqbW9ja19nZW1fZGV2aWNlKHZvaWQpCiAJ cGRldi0+ZGV2LmFyY2hkYXRhLmlvbW11ID0gKHZvaWQgKiktMTsKICNlbmRpZgogCisJaTkxNSA9 IChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqKShwZGV2ICsgMSk7CisJcGNpX3NldF9kcnZkYXRh KHBkZXYsIGk5MTUpOworCisJaW50ZWxfcnVudGltZV9wbV9pbml0X2Vhcmx5KGk5MTUpOworCiAJ ZGV2X3BtX2RvbWFpbl9zZXQoJnBkZXYtPmRldiwgJnBtX2RvbWFpbik7CiAJcG1fcnVudGltZV9l bmFibGUoJnBkZXYtPmRldik7CiAJcG1fcnVudGltZV9kb250X3VzZV9hdXRvc3VzcGVuZCgmcGRl di0+ZGV2KTsKIAlpZiAocG1fcnVudGltZV9lbmFibGVkKCZwZGV2LT5kZXYpKQogCQlXQVJOX09O KHBtX3J1bnRpbWVfZ2V0X3N5bmMoJnBkZXYtPmRldikpOwogCi0JaTkxNSA9IChzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqKShwZGV2ICsgMSk7Ci0JcGNpX3NldF9kcnZkYXRhKHBkZXYsIGk5MTUp OwotCiAJZXJyID0gZHJtX2Rldl9pbml0KCZpOTE1LT5kcm0sICZtb2NrX2RyaXZlciwgJnBkZXYt PmRldik7CiAJaWYgKGVycikgewogCQlwcl9lcnIoIkZhaWxlZCB0byBpbml0aWFsaXNlIG1vY2sg R0VNIGRldmljZTogZXJyPSVkXG4iLCBlcnIpOwotLSAKMi4xOS4wCgpfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0Cklu dGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5v cmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK