From mboxrd@z Thu Jan 1 00:00:00 1970 From: Imre Deak Subject: [RFC] drm/i915: Check if we hold a wakeref during ioread32/iowrite32 Date: Tue, 23 Feb 2016 16:47:17 +0200 Message-ID: <1456238837-9665-1-git-send-email-imre.deak@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTP id DAADE6E353 for ; Tue, 23 Feb 2016 14:47:20 +0000 (UTC) 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 VGhlIGRldmljZSBuZWVkcyB0byBiZSBpbiBEMCBzdGF0ZSB3aGVuZXZlciB3ZSBjYWxsIHRoZXNl IGZ1bmN0aW9ucywgc28KYWRkIHRoZSBjb3JyZXNwb25kaW5nIGFzc2VydCBjaGVja3MuCgpJIGhh ZCB0byBtb3ZlIGFyb3VuZCBzb21lIGhlbHBlcnMgZHVlIHRvIGRlcGVuZGVuY2llcyBhZGRlZCBi eSBuZXN0ZWQKaW5jbHVkZXMuCgpTaWduZWQtb2ZmLWJ5OiBJbXJlIERlYWsgPGltcmUuZGVha0Bp bnRlbC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAgICAgICAg IHwgMTE3ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2dlbV9leGVjYnVmZmVyLmMgfCAgIDQgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZ2VtX2d0dC5jICAgICAgICB8ICAgOCArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9p cnEuYyAgICAgICAgICAgIHwgICA4ICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9iaW9z LmMgICAgICAgICAgfCAgIDcgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oICAg ICAgICAgICB8ICA3NSAtLS0tLS0tLS0tLS0tLS0tLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2xyYy5jICAgICAgICAgICB8ICAgMyArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf bHJjLmggICAgICAgICAgIHwgIDE3IC0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9v dmVybGF5LmMgICAgICAgfCAgNDQgKysrKysrLS0tLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX3JpbmdidWZmZXIuYyAgICB8ICAgMyArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf cmluZ2J1ZmZlci5oICAgIHwgIDEzICstLS0KIDExIGZpbGVzIGNoYW5nZWQsIDE2MSBpbnNlcnRp b25zKCspLCAxMzggZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKaW5kZXggOWU3 NmJmYy4uYzc5NDY2NCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYu aAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCkBAIC0zNTA5LDYgKzM1MDks MTIzIEBAIGludCBpbnRlbF9mcmVxX29wY29kZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYsIGludCB2YWwpOwogI2RlZmluZSBJOTE1X1JFQURfTk9UUkFDRShyZWcpCQlkZXZfcHJp di0+dW5jb3JlLmZ1bmNzLm1taW9fcmVhZGwoZGV2X3ByaXYsIChyZWcpLCBmYWxzZSkKICNkZWZp bmUgSTkxNV9XUklURV9OT1RSQUNFKHJlZywgdmFsKQlkZXZfcHJpdi0+dW5jb3JlLmZ1bmNzLm1t aW9fd3JpdGVsKGRldl9wcml2LCAocmVnKSwgKHZhbCksIGZhbHNlKQogCitzdGF0aWMgaW5saW5l IHZvaWQKK2Fzc2VydF9ycG1fZGV2aWNlX25vdF9zdXNwZW5kZWQoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2KQoreworCVdBUk5fT05DRShkZXZfcHJpdi0+cG0uc3VzcGVuZGVkLAor CQkgICJEZXZpY2Ugc3VzcGVuZGVkIGR1cmluZyBIVyBhY2Nlc3NcbiIpOworfQorCitzdGF0aWMg aW5saW5lIHZvaWQKK2Fzc2VydF9ycG1fd2FrZWxvY2tfaGVsZChzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYpCit7CisJYXNzZXJ0X3JwbV9kZXZpY2Vfbm90X3N1c3BlbmRlZChkZXZf cHJpdik7CisJLyogRklYTUU6IE5lZWRzIHRvIGJlIGNvbnZlcnRlZCBiYWNrIHRvIFdBUk5fT05D RSwgYnV0IGN1cnJlbnRseSBjYXVzZXMKKwkgKiB0b28gbXVjaCBub2lzZS4gKi8KKwlpZiAoIWF0 b21pY19yZWFkKCZkZXZfcHJpdi0+cG0ud2FrZXJlZl9jb3VudCkpCisJCURSTV9ERUJVR19EUklW RVIoIlJQTSB3YWtlbG9jayByZWYgbm90IGhlbGQgZHVyaW5nIEhXIGFjY2VzcyIpOworfQorCitz dGF0aWMgaW5saW5lIGludAorYXNzZXJ0X3JwbV9hdG9taWNfYmVnaW4oc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2KQoreworCWludCBzZXEgPSBhdG9taWNfcmVhZCgmZGV2X3ByaXYt PnBtLmF0b21pY19zZXEpOworCisJYXNzZXJ0X3JwbV93YWtlbG9ja19oZWxkKGRldl9wcml2KTsK KworCXJldHVybiBzZXE7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZAorYXNzZXJ0X3JwbV9hdG9t aWNfZW5kKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgaW50IGJlZ2luX3NlcSkK K3sKKwlXQVJOX09OQ0UoYXRvbWljX3JlYWQoJmRldl9wcml2LT5wbS5hdG9taWNfc2VxKSAhPSBi ZWdpbl9zZXEsCisJCSAgIkhXIGFjY2VzcyBvdXRzaWRlIG9mIFJQTSBhdG9taWMgc2VjdGlvblxu Iik7Cit9CisKKy8qKgorICogZGlzYWJsZV9ycG1fd2FrZXJlZl9hc3NlcnRzIC0gZGlzYWJsZSB0 aGUgUlBNIGFzc2VydCBjaGVja3MKKyAqIEBkZXZfcHJpdjogaTkxNSBkZXZpY2UgaW5zdGFuY2UK KyAqCisgKiBUaGlzIGZ1bmN0aW9uIGRpc2FibGUgYXNzZXJ0cyB0aGF0IGNoZWNrIGlmIHdlIGhv bGQgYW4gUlBNIHdha2Vsb2NrCisgKiByZWZlcmVuY2UsIHdoaWxlIGtlZXBpbmcgdGhlIGRldmlj ZS1ub3Qtc3VzcGVuZGVkIGNoZWNrcyBzdGlsbCBlbmFibGVkLgorICogSXQncyBtZWFudCB0byBi ZSB1c2VkIG9ubHkgaW4gc3BlY2lhbCBjaXJjdW1zdGFuY2VzIHdoZXJlIG91ciBydWxlIGFib3V0 CisgKiB0aGUgd2FrZWxvY2sgcmVmY291bnQgd3J0LiB0aGUgZGV2aWNlIHBvd2VyIHN0YXRlIGRv ZXNuJ3QgaG9sZC4gQWNjb3JkaW5nCisgKiB0byB0aGlzIHJ1bGUgYXQgYW55IHBvaW50IHdoZXJl IHdlIGFjY2VzcyB0aGUgSFcgb3Igd2FudCB0byBrZWVwIHRoZSBIVyBpbgorICogYW4gYWN0aXZl IHN0YXRlIHdlIG11c3QgaG9sZCBhbiBSUE0gd2FrZWxvY2sgcmVmZXJlbmNlIGFjcXVpcmVkIHZp YSBvbmUgb2YKKyAqIHRoZSBpbnRlbF9ydW50aW1lX3BtX2dldCgpIGhlbHBlcnMuIEN1cnJlbnRs eSB0aGVyZSBhcmUgYSBmZXcgc3BlY2lhbCBzcG90cworICogd2hlcmUgdGhpcyBydWxlIGRvZXNu J3QgaG9sZDogdGhlIElSUSBhbmQgc3VzcGVuZC9yZXN1bWUgaGFuZGxlcnMsIHRoZQorICogZm9y Y2V3YWtlIHJlbGVhc2UgdGltZXIsIGFuZCB0aGUgR1BVIFJQUyBhbmQgaGFuZ2NoZWNrIHdvcmtz LiBBbGwgb3RoZXIKKyAqIHVzZXJzIHNob3VsZCBhdm9pZCB1c2luZyB0aGlzIGZ1bmN0aW9uLgor ICoKKyAqIEFueSBjYWxscyB0byB0aGlzIGZ1bmN0aW9uIG11c3QgaGF2ZSBhIHN5bW1ldHJpYyBj YWxsIHRvCisgKiBlbmFibGVfcnBtX3dha2VyZWZfYXNzZXJ0cygpLgorICovCitzdGF0aWMgaW5s aW5lIHZvaWQKK2Rpc2FibGVfcnBtX3dha2VyZWZfYXNzZXJ0cyhzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYpCit7CisJYXRvbWljX2luYygmZGV2X3ByaXYtPnBtLndha2VyZWZfY291 bnQpOworfQorCisvKioKKyAqIGVuYWJsZV9ycG1fd2FrZXJlZl9hc3NlcnRzIC0gcmUtZW5hYmxl IHRoZSBSUE0gYXNzZXJ0IGNoZWNrcworICogQGRldl9wcml2OiBpOTE1IGRldmljZSBpbnN0YW5j ZQorICoKKyAqIFRoaXMgZnVuY3Rpb24gcmUtZW5hYmxlcyB0aGUgUlBNIGFzc2VydCBjaGVja3Mg YWZ0ZXIgZGlzYWJsaW5nIHRoZW0gd2l0aAorICogZGlzYWJsZV9ycG1fd2FrZXJlZl9hc3NlcnRz LiBJdCdzIG1lYW50IHRvIGJlIHVzZWQgb25seSBpbiBzcGVjaWFsCisgKiBjaXJjdW1zdGFuY2Vz IG90aGVyd2lzZSBpdHMgdXNlIHNob3VsZCBiZSBhdm9pZGVkLgorICoKKyAqIEFueSBjYWxscyB0 byB0aGlzIGZ1bmN0aW9uIG11c3QgaGF2ZSBhIHN5bW1ldHJpYyBjYWxsIHRvCisgKiBkaXNhYmxl X3JwbV93YWtlcmVmX2Fzc2VydHMoKS4KKyAqLworc3RhdGljIGlubGluZSB2b2lkCitlbmFibGVf cnBtX3dha2VyZWZfYXNzZXJ0cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCit7 CisJYXRvbWljX2RlYygmZGV2X3ByaXYtPnBtLndha2VyZWZfY291bnQpOworfQorCisKKyNkZWZp bmUgSTkxNV9JT1dSSVRFMzIodmFsLCBhZGRyKSAoewkJCVwKKwlhc3NlcnRfcnBtX3dha2Vsb2Nr X2hlbGQoZGV2X3ByaXYpOwkJXAorCWlvd3JpdGUzMih2YWwsIGFkZHIpOyB9KQorCisjZGVmaW5l IEk5MTVfSU9SRUFEMzIoYWRkcikgKHsJCQkJXAorCWFzc2VydF9ycG1fd2FrZWxvY2tfaGVsZChk ZXZfcHJpdik7CQlcCisJaW9yZWFkMzIoYWRkcik7IH0pCisKK3N0YXRpYyBpbmxpbmUgdm9pZCBp bnRlbF9yaW5nX2VtaXQoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZywKKwkJCQkgICB1MzIg ZGF0YSkKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KHJp bmctPmRldik7CisJc3RydWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmdidWYgPSByaW5nLT5idWZm ZXI7CisKKwlJOTE1X0lPV1JJVEUzMihkYXRhLCByaW5nYnVmLT52aXJ0dWFsX3N0YXJ0ICsgcmlu Z2J1Zi0+dGFpbCk7CisJcmluZ2J1Zi0+dGFpbCArPSA0OworfQorc3RhdGljIGlubGluZSB2b2lk IGludGVsX3JpbmdfZW1pdF9yZWcoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZywKKwkJCQkg ICAgICAgaTkxNV9yZWdfdCByZWcpCit7CisJaW50ZWxfcmluZ19lbWl0KHJpbmcsIGk5MTVfbW1p b19yZWdfb2Zmc2V0KHJlZykpOworfQorLyoqCisgKiBpbnRlbF9sb2dpY2FsX3JpbmdfZW1pdCgp IC0gd3JpdGUgYSBEV09SRCB0byB0aGUgcmluZ2J1ZmZlci4KKyAqIEByaW5nYnVmOiBSaW5nYnVm ZmVyIHRvIHdyaXRlIHRvLgorICogQGRhdGE6IERXT1JEIHRvIHdyaXRlLgorICovCitzdGF0aWMg aW5saW5lIHZvaWQgaW50ZWxfbG9naWNhbF9yaW5nX2VtaXQoc3RydWN0IGludGVsX3JpbmdidWZm ZXIgKnJpbmdidWYsCisJCQkJCSAgIHUzMiBkYXRhKQoreworCXN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUocmluZ2J1Zi0+cmluZy0+ZGV2KTsKKworCUk5MTVfSU9X UklURTMyKGRhdGEsIHJpbmdidWYtPnZpcnR1YWxfc3RhcnQgKyByaW5nYnVmLT50YWlsKTsKKwly aW5nYnVmLT50YWlsICs9IDQ7Cit9CitzdGF0aWMgaW5saW5lIHZvaWQgaW50ZWxfbG9naWNhbF9y aW5nX2VtaXRfcmVnKHN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nYnVmLAorCQkJCQkgICAg ICAgaTkxNV9yZWdfdCByZWcpCit7CisJaW50ZWxfbG9naWNhbF9yaW5nX2VtaXQocmluZ2J1Ziwg aTkxNV9tbWlvX3JlZ19vZmZzZXQocmVnKSk7Cit9CisKIC8qIEJlIHZlcnkgY2FyZWZ1bCB3aXRo IHJlYWQvd3JpdGUgNjQtYml0IHZhbHVlcy4gT24gMzItYml0IG1hY2hpbmVzLCB0aGV5CiAgKiB3 aWxsIGJlIGltcGxlbWVudGVkIHVzaW5nIDIgMzItYml0IHdyaXRlcyBpbiBhbiBhcmJpdHJhcnkg b3JkZXIgd2l0aAogICogYW4gYXJiaXRyYXJ5IGRlbGF5IGJldHdlZW4gdGhlbS4gVGhpcyBjYW4g Y2F1c2UgdGhlIGhhcmR3YXJlIHRvCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dlbV9leGVjYnVmZmVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9leGVj YnVmZmVyLmMKaW5kZXggOGZkMDBkMi4uMWFkNTg5YyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9nZW1fZXhlY2J1ZmZlci5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZ2VtX2V4ZWNidWZmZXIuYwpAQCAtMzMyLDcgKzMzMiw3IEBAIHJlbG9jYXRlX2VudHJ5 X2d0dChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAogCW9mZnNldCArPSByZWxvYy0+ b2Zmc2V0OwogCXJlbG9jX3BhZ2UgPSBpb19tYXBwaW5nX21hcF9hdG9taWNfd2MoZGV2X3ByaXYt Pmd0dC5tYXBwYWJsZSwKIAkJCQkJICAgICAgb2Zmc2V0ICYgUEFHRV9NQVNLKTsKLQlpb3dyaXRl MzIobG93ZXJfMzJfYml0cyhkZWx0YSksIHJlbG9jX3BhZ2UgKyBvZmZzZXRfaW5fcGFnZShvZmZz ZXQpKTsKKwlJOTE1X0lPV1JJVEUzMihsb3dlcl8zMl9iaXRzKGRlbHRhKSwgcmVsb2NfcGFnZSAr IG9mZnNldF9pbl9wYWdlKG9mZnNldCkpOwogCiAJaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID49 IDgpIHsKIAkJb2Zmc2V0ICs9IHNpemVvZih1aW50MzJfdCk7CkBAIC0zNDQsNyArMzQ0LDcgQEAg cmVsb2NhdGVfZW50cnlfZ3R0KHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCiAJCQkJ CQkJIG9mZnNldCk7CiAJCX0KIAotCQlpb3dyaXRlMzIodXBwZXJfMzJfYml0cyhkZWx0YSksCisJ CUk5MTVfSU9XUklURTMyKHVwcGVyXzMyX2JpdHMoZGVsdGEpLAogCQkJICByZWxvY19wYWdlICsg b2Zmc2V0X2luX3BhZ2Uob2Zmc2V0KSk7CiAJfQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2dlbV9ndHQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0 dC5jCmluZGV4IDkxMjdmOGYuLjY2YjAzZGQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZ2VtX2d0dC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0 dC5jCkBAIC0yMzU3LDggKzIzNTcsOCBAQCBzdGF0aWMgdm9pZCBnZW44X3NldF9wdGUodm9pZCBf X2lvbWVtICphZGRyLCBnZW44X3B0ZV90IHB0ZSkKICNpZmRlZiB3cml0ZXEKIAl3cml0ZXEocHRl LCBhZGRyKTsKICNlbHNlCi0JaW93cml0ZTMyKCh1MzIpcHRlLCBhZGRyKTsKLQlpb3dyaXRlMzIo cHRlID4+IDMyLCBhZGRyICsgNCk7CisJSTkxNV9JT1dSSVRFMzIoKHUzMilwdGUsIGFkZHIpOwor CUk5MTVfSU9XUklURTMyKHB0ZSA+PiAzMiwgYWRkciArIDQpOwogI2VuZGlmCiB9CiAKQEAgLTI0 NTcsNyArMjQ1Nyw3IEBAIHN0YXRpYyB2b2lkIGdlbjZfZ2d0dF9pbnNlcnRfZW50cmllcyhzdHJ1 Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSwKIAogCWZvcl9lYWNoX3NnX3BhZ2Uoc3QtPnNnbCwg JnNnX2l0ZXIsIHN0LT5uZW50cywgMCkgewogCQlhZGRyID0gc2dfcGFnZV9pdGVyX2RtYV9hZGRy ZXNzKCZzZ19pdGVyKTsKLQkJaW93cml0ZTMyKHZtLT5wdGVfZW5jb2RlKGFkZHIsIGxldmVsLCB0 cnVlLCBmbGFncyksICZndHRfZW50cmllc1tpXSk7CisJCUk5MTVfSU9XUklURTMyKHZtLT5wdGVf ZW5jb2RlKGFkZHIsIGxldmVsLCB0cnVlLCBmbGFncyksICZndHRfZW50cmllc1tpXSk7CiAJCWkr KzsKIAl9CiAKQEAgLTI1MzgsNyArMjUzOCw3IEBAIHN0YXRpYyB2b2lkIGdlbjZfZ2d0dF9jbGVh cl9yYW5nZShzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSwKIAkJCQkgICAgIEk5MTVfQ0FD SEVfTExDLCB1c2Vfc2NyYXRjaCwgMCk7CiAKIAlmb3IgKGkgPSAwOyBpIDwgbnVtX2VudHJpZXM7 IGkrKykKLQkJaW93cml0ZTMyKHNjcmF0Y2hfcHRlLCAmZ3R0X2Jhc2VbaV0pOworCQlJOTE1X0lP V1JJVEUzMihzY3JhdGNoX3B0ZSwgJmd0dF9iYXNlW2ldKTsKIAlyZWFkbChndHRfYmFzZSk7CiAK IAlhc3NlcnRfcnBtX2F0b21pY19lbmQoZGV2X3ByaXYsIHJwbV9hdG9taWNfc2VxKTsKZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfaXJxLmMgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2lycS5jCmluZGV4IGQxYTQ2ZWYuLmExODhmMDEgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfaXJxLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9pcnEuYwpAQCAtMjkwOCw3ICsyOTA4LDcgQEAgc2VtYXBob3JlX3dhaXRzX2ZvcihzdHJ1Y3Qg aW50ZWxfZW5naW5lX2NzICpyaW5nLCB1MzIgKnNlcW5vKQogCQloZWFkICY9IHJpbmctPmJ1ZmZl ci0+c2l6ZSAtIDE7CiAKIAkJLyogVGhpcyBoZXJlIHNlZW1zIHRvIGJsb3cgdXAgKi8KLQkJY21k ID0gaW9yZWFkMzIocmluZy0+YnVmZmVyLT52aXJ0dWFsX3N0YXJ0ICsgaGVhZCk7CisJCWNtZCA9 IEk5MTVfSU9SRUFEMzIocmluZy0+YnVmZmVyLT52aXJ0dWFsX3N0YXJ0ICsgaGVhZCk7CiAJCWlm IChjbWQgPT0gaXBlaHIpCiAJCQlicmVhazsKIApAQCAtMjkxOCwxMSArMjkxOCwxMSBAQCBzZW1h cGhvcmVfd2FpdHNfZm9yKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcsIHUzMiAqc2Vxbm8p CiAJaWYgKCFpKQogCQlyZXR1cm4gTlVMTDsKIAotCSpzZXFubyA9IGlvcmVhZDMyKHJpbmctPmJ1 ZmZlci0+dmlydHVhbF9zdGFydCArIGhlYWQgKyA0KSArIDE7CisJKnNlcW5vID0gSTkxNV9JT1JF QUQzMihyaW5nLT5idWZmZXItPnZpcnR1YWxfc3RhcnQgKyBoZWFkICsgNCkgKyAxOwogCWlmIChJ TlRFTF9JTkZPKHJpbmctPmRldiktPmdlbiA+PSA4KSB7Ci0JCW9mZnNldCA9IGlvcmVhZDMyKHJp bmctPmJ1ZmZlci0+dmlydHVhbF9zdGFydCArIGhlYWQgKyAxMik7CisJCW9mZnNldCA9IEk5MTVf SU9SRUFEMzIocmluZy0+YnVmZmVyLT52aXJ0dWFsX3N0YXJ0ICsgaGVhZCArIDEyKTsKIAkJb2Zm c2V0IDw8PSAzMjsKLQkJb2Zmc2V0ID0gaW9yZWFkMzIocmluZy0+YnVmZmVyLT52aXJ0dWFsX3N0 YXJ0ICsgaGVhZCArIDgpOworCQlvZmZzZXQgPSBJOTE1X0lPUkVBRDMyKHJpbmctPmJ1ZmZlci0+ dmlydHVhbF9zdGFydCArIGhlYWQgKyA4KTsKIAl9CiAJcmV0dXJuIHNlbWFwaG9yZV93YWl0X3Rv X3NpZ25hbGxlcl9yaW5nKHJpbmcsIGlwZWhyLCBvZmZzZXQpOwogfQpkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYmlvcy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfYmlvcy5jCmluZGV4IGJmNjJhMTkuLjY1MmJjNDAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2Jpb3MuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9i aW9zLmMKQEAgLTEzNDMsNyArMTM0Myw4IEBAIGJvb2wgaW50ZWxfYmlvc19pc192YWxpZF92YnQo Y29uc3Qgdm9pZCAqYnVmLCBzaXplX3Qgc2l6ZSkKIAlyZXR1cm4gdmJ0OwogfQogCi1zdGF0aWMg Y29uc3Qgc3RydWN0IHZidF9oZWFkZXIgKmZpbmRfdmJ0KHZvaWQgX19pb21lbSAqYmlvcywgc2l6 ZV90IHNpemUpCitzdGF0aWMgY29uc3Qgc3RydWN0IHZidF9oZWFkZXIgKmZpbmRfdmJ0KHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKKwkJCQkJIHZvaWQgX19pb21lbSAqYmlvcywg c2l6ZV90IHNpemUpCiB7CiAJc2l6ZV90IGk7CiAKQEAgLTEzNTEsNyArMTM1Miw3IEBAIHN0YXRp YyBjb25zdCBzdHJ1Y3QgdmJ0X2hlYWRlciAqZmluZF92YnQodm9pZCBfX2lvbWVtICpiaW9zLCBz aXplX3Qgc2l6ZSkKIAlmb3IgKGkgPSAwOyBpICsgNCA8IHNpemU7IGkrKykgewogCQl2b2lkICp2 YnQ7CiAKLQkJaWYgKGlvcmVhZDMyKGJpb3MgKyBpKSAhPSAqKChjb25zdCB1MzIgKikgIiRWQlQi KSkKKwkJaWYgKEk5MTVfSU9SRUFEMzIoYmlvcyArIGkpICE9ICooKGNvbnN0IHUzMiAqKSAiJFZC VCIpKQogCQkJY29udGludWU7CiAKIAkJLyoKQEAgLTEzOTcsNyArMTM5OCw3IEBAIGludGVsX2Jp b3NfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJCWlmICghYmlvcykK IAkJCXJldHVybiAtMTsKIAotCQl2YnQgPSBmaW5kX3ZidChiaW9zLCBzaXplKTsKKwkJdmJ0ID0g ZmluZF92YnQoZGV2X3ByaXYsIGJpb3MsIHNpemUpOwogCQlpZiAoIXZidCkgewogCQkJcGNpX3Vu bWFwX3JvbShwZGV2LCBiaW9zKTsKIAkJCXJldHVybiAtMTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2 LmgKaW5kZXggNDg1MjA0OS4uMzVhMGFjOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZHJ2LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKQEAg LTE0NDEsODEgKzE0NDEsNiBAQCBib29sIGludGVsX2Rpc3BsYXlfcG93ZXJfZ2V0X2lmX2VuYWJs ZWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogdm9pZCBpbnRlbF9kaXNwbGF5 X3Bvd2VyX3B1dChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJCQkgICAgIGVu dW0gaW50ZWxfZGlzcGxheV9wb3dlcl9kb21haW4gZG9tYWluKTsKIAotc3RhdGljIGlubGluZSB2 b2lkCi1hc3NlcnRfcnBtX2RldmljZV9ub3Rfc3VzcGVuZGVkKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdikKLXsKLQlXQVJOX09OQ0UoZGV2X3ByaXYtPnBtLnN1c3BlbmRlZCwKLQkJ ICAiRGV2aWNlIHN1c3BlbmRlZCBkdXJpbmcgSFcgYWNjZXNzXG4iKTsKLX0KLQotc3RhdGljIGlu bGluZSB2b2lkCi1hc3NlcnRfcnBtX3dha2Vsb2NrX2hlbGQoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2KQotewotCWFzc2VydF9ycG1fZGV2aWNlX25vdF9zdXNwZW5kZWQoZGV2X3By aXYpOwotCS8qIEZJWE1FOiBOZWVkcyB0byBiZSBjb252ZXJ0ZWQgYmFjayB0byBXQVJOX09OQ0Us IGJ1dCBjdXJyZW50bHkgY2F1c2VzCi0JICogdG9vIG11Y2ggbm9pc2UuICovCi0JaWYgKCFhdG9t aWNfcmVhZCgmZGV2X3ByaXYtPnBtLndha2VyZWZfY291bnQpKQotCQlEUk1fREVCVUdfRFJJVkVS KCJSUE0gd2FrZWxvY2sgcmVmIG5vdCBoZWxkIGR1cmluZyBIVyBhY2Nlc3MiKTsKLX0KLQotc3Rh dGljIGlubGluZSBpbnQKLWFzc2VydF9ycG1fYXRvbWljX2JlZ2luKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdikKLXsKLQlpbnQgc2VxID0gYXRvbWljX3JlYWQoJmRldl9wcml2LT5w bS5hdG9taWNfc2VxKTsKLQotCWFzc2VydF9ycG1fd2FrZWxvY2tfaGVsZChkZXZfcHJpdik7Ci0K LQlyZXR1cm4gc2VxOwotfQotCi1zdGF0aWMgaW5saW5lIHZvaWQKLWFzc2VydF9ycG1fYXRvbWlj X2VuZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGludCBiZWdpbl9zZXEpCi17 Ci0JV0FSTl9PTkNFKGF0b21pY19yZWFkKCZkZXZfcHJpdi0+cG0uYXRvbWljX3NlcSkgIT0gYmVn aW5fc2VxLAotCQkgICJIVyBhY2Nlc3Mgb3V0c2lkZSBvZiBSUE0gYXRvbWljIHNlY3Rpb25cbiIp OwotfQotCi0vKioKLSAqIGRpc2FibGVfcnBtX3dha2VyZWZfYXNzZXJ0cyAtIGRpc2FibGUgdGhl IFJQTSBhc3NlcnQgY2hlY2tzCi0gKiBAZGV2X3ByaXY6IGk5MTUgZGV2aWNlIGluc3RhbmNlCi0g KgotICogVGhpcyBmdW5jdGlvbiBkaXNhYmxlIGFzc2VydHMgdGhhdCBjaGVjayBpZiB3ZSBob2xk IGFuIFJQTSB3YWtlbG9jawotICogcmVmZXJlbmNlLCB3aGlsZSBrZWVwaW5nIHRoZSBkZXZpY2Ut bm90LXN1c3BlbmRlZCBjaGVja3Mgc3RpbGwgZW5hYmxlZC4KLSAqIEl0J3MgbWVhbnQgdG8gYmUg dXNlZCBvbmx5IGluIHNwZWNpYWwgY2lyY3Vtc3RhbmNlcyB3aGVyZSBvdXIgcnVsZSBhYm91dAot ICogdGhlIHdha2Vsb2NrIHJlZmNvdW50IHdydC4gdGhlIGRldmljZSBwb3dlciBzdGF0ZSBkb2Vz bid0IGhvbGQuIEFjY29yZGluZwotICogdG8gdGhpcyBydWxlIGF0IGFueSBwb2ludCB3aGVyZSB3 ZSBhY2Nlc3MgdGhlIEhXIG9yIHdhbnQgdG8ga2VlcCB0aGUgSFcgaW4KLSAqIGFuIGFjdGl2ZSBz dGF0ZSB3ZSBtdXN0IGhvbGQgYW4gUlBNIHdha2Vsb2NrIHJlZmVyZW5jZSBhY3F1aXJlZCB2aWEg b25lIG9mCi0gKiB0aGUgaW50ZWxfcnVudGltZV9wbV9nZXQoKSBoZWxwZXJzLiBDdXJyZW50bHkg dGhlcmUgYXJlIGEgZmV3IHNwZWNpYWwgc3BvdHMKLSAqIHdoZXJlIHRoaXMgcnVsZSBkb2Vzbid0 IGhvbGQ6IHRoZSBJUlEgYW5kIHN1c3BlbmQvcmVzdW1lIGhhbmRsZXJzLCB0aGUKLSAqIGZvcmNl d2FrZSByZWxlYXNlIHRpbWVyLCBhbmQgdGhlIEdQVSBSUFMgYW5kIGhhbmdjaGVjayB3b3Jrcy4g QWxsIG90aGVyCi0gKiB1c2VycyBzaG91bGQgYXZvaWQgdXNpbmcgdGhpcyBmdW5jdGlvbi4KLSAq Ci0gKiBBbnkgY2FsbHMgdG8gdGhpcyBmdW5jdGlvbiBtdXN0IGhhdmUgYSBzeW1tZXRyaWMgY2Fs bCB0bwotICogZW5hYmxlX3JwbV93YWtlcmVmX2Fzc2VydHMoKS4KLSAqLwotc3RhdGljIGlubGlu ZSB2b2lkCi1kaXNhYmxlX3JwbV93YWtlcmVmX2Fzc2VydHMoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2KQotewotCWF0b21pY19pbmMoJmRldl9wcml2LT5wbS53YWtlcmVmX2NvdW50 KTsKLX0KLQotLyoqCi0gKiBlbmFibGVfcnBtX3dha2VyZWZfYXNzZXJ0cyAtIHJlLWVuYWJsZSB0 aGUgUlBNIGFzc2VydCBjaGVja3MKLSAqIEBkZXZfcHJpdjogaTkxNSBkZXZpY2UgaW5zdGFuY2UK LSAqCi0gKiBUaGlzIGZ1bmN0aW9uIHJlLWVuYWJsZXMgdGhlIFJQTSBhc3NlcnQgY2hlY2tzIGFm dGVyIGRpc2FibGluZyB0aGVtIHdpdGgKLSAqIGRpc2FibGVfcnBtX3dha2VyZWZfYXNzZXJ0cy4g SXQncyBtZWFudCB0byBiZSB1c2VkIG9ubHkgaW4gc3BlY2lhbAotICogY2lyY3Vtc3RhbmNlcyBv dGhlcndpc2UgaXRzIHVzZSBzaG91bGQgYmUgYXZvaWRlZC4KLSAqCi0gKiBBbnkgY2FsbHMgdG8g dGhpcyBmdW5jdGlvbiBtdXN0IGhhdmUgYSBzeW1tZXRyaWMgY2FsbCB0bwotICogZGlzYWJsZV9y cG1fd2FrZXJlZl9hc3NlcnRzKCkuCi0gKi8KLXN0YXRpYyBpbmxpbmUgdm9pZAotZW5hYmxlX3Jw bV93YWtlcmVmX2Fzc2VydHMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQotewot CWF0b21pY19kZWMoJmRldl9wcml2LT5wbS53YWtlcmVmX2NvdW50KTsKLX0KLQogLyogVE9ETzog Y29udmVydCB1c2VycyBvZiB0aGVzZSB0byByZWx5IGluc3RlYWQgb24gcHJvcGVyIFJQTSByZWZj b3VudGluZyAqLwogI2RlZmluZSBESVNBQkxFX1JQTV9XQUtFUkVGX0FTU0VSVFMoZGV2X3ByaXYp CVwKIAlkaXNhYmxlX3JwbV93YWtlcmVmX2Fzc2VydHMoZGV2X3ByaXYpCmRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2xyYy5jCmluZGV4IDNhMDM2NDYuLmZmYjhlOWUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2xyYy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xy Yy5jCkBAIC04MDQsMTMgKzgwNCwxNCBAQCBpbnRlbF9sb2dpY2FsX3JpbmdfYWR2YW5jZV9hbmRf c3VibWl0KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxdWVzdCkKIAogc3RhdGljIHZv aWQgX193cmFwX3JpbmdfYnVmZmVyKHN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nYnVmKQog eworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUocmluZ2J1Zi0+ b2JqLT5iYXNlLmRldik7CiAJdWludDMyX3QgX19pb21lbSAqdmlydDsKIAlpbnQgcmVtID0gcmlu Z2J1Zi0+c2l6ZSAtIHJpbmdidWYtPnRhaWw7CiAKIAl2aXJ0ID0gcmluZ2J1Zi0+dmlydHVhbF9z dGFydCArIHJpbmdidWYtPnRhaWw7CiAJcmVtIC89IDQ7CiAJd2hpbGUgKHJlbS0tKQotCQlpb3dy aXRlMzIoTUlfTk9PUCwgdmlydCsrKTsKKwkJSTkxNV9JT1dSSVRFMzIoTUlfTk9PUCwgdmlydCsr KTsKIAogCXJpbmdidWYtPnRhaWwgPSAwOwogCWludGVsX3JpbmdfdXBkYXRlX3NwYWNlKHJpbmdi dWYpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmggYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuaAppbmRleCBlNmNkYTNlLi4xYmRjMjYwIDEwMDY0 NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuaAorKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9scmMuaApAQCAtNzMsMjMgKzczLDYgQEAgc3RhdGljIGlubGluZSB2 b2lkIGludGVsX2xvZ2ljYWxfcmluZ19hZHZhbmNlKHN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpy aW5nYnVmKQogewogCXJpbmdidWYtPnRhaWwgJj0gcmluZ2J1Zi0+c2l6ZSAtIDE7CiB9Ci0vKioK LSAqIGludGVsX2xvZ2ljYWxfcmluZ19lbWl0KCkgLSB3cml0ZSBhIERXT1JEIHRvIHRoZSByaW5n YnVmZmVyLgotICogQHJpbmdidWY6IFJpbmdidWZmZXIgdG8gd3JpdGUgdG8uCi0gKiBAZGF0YTog RFdPUkQgdG8gd3JpdGUuCi0gKi8KLXN0YXRpYyBpbmxpbmUgdm9pZCBpbnRlbF9sb2dpY2FsX3Jp bmdfZW1pdChzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZ2J1ZiwKLQkJCQkJICAgdTMyIGRh dGEpCi17Ci0JaW93cml0ZTMyKGRhdGEsIHJpbmdidWYtPnZpcnR1YWxfc3RhcnQgKyByaW5nYnVm LT50YWlsKTsKLQlyaW5nYnVmLT50YWlsICs9IDQ7Ci19Ci1zdGF0aWMgaW5saW5lIHZvaWQgaW50 ZWxfbG9naWNhbF9yaW5nX2VtaXRfcmVnKHN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nYnVm LAotCQkJCQkgICAgICAgaTkxNV9yZWdfdCByZWcpCi17Ci0JaW50ZWxfbG9naWNhbF9yaW5nX2Vt aXQocmluZ2J1ZiwgaTkxNV9tbWlvX3JlZ19vZmZzZXQocmVnKSk7Ci19Ci0KIC8qIExvZ2ljYWwg UmluZyBDb250ZXh0cyAqLwogCiAvKiBPbmUgZXh0cmEgcGFnZSBpcyBhZGRlZCBiZWZvcmUgTFJD IGZvciBHdUMgYXMgc2hhcmVkIGRhdGEgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX292ZXJsYXkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX292ZXJsYXku YwppbmRleCA5MTY4NDEzLi45ZmNkNjIwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9vdmVybGF5LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfb3Zlcmxh eS5jCkBAIC01OTQsNiArNTk0LDcgQEAgc3RhdGljIGJvb2wgdXBkYXRlX3NjYWxpbmdfZmFjdG9y cyhzdHJ1Y3QgaW50ZWxfb3ZlcmxheSAqb3ZlcmxheSwKIAkJCQkgICBzdHJ1Y3Qgb3ZlcmxheV9y ZWdpc3RlcnMgX19pb21lbSAqcmVncywKIAkJCQkgICBzdHJ1Y3QgcHV0X2ltYWdlX3BhcmFtcyAq cGFyYW1zKQogeworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUo b3ZlcmxheS0+ZGV2KTsKIAkvKiBmaXhlZCBwb2ludCB3aXRoIGEgMTIgYml0IHNoaWZ0ICovCiAJ dTMyIHhzY2FsZSwgeXNjYWxlLCB4c2NhbGVfVVYsIHlzY2FsZV9VVjsKICNkZWZpbmUgRlBfU0hJ RlQgMTIKQEAgLTYzMCwxNyArNjMxLDE3IEBAIHN0YXRpYyBib29sIHVwZGF0ZV9zY2FsaW5nX2Zh Y3RvcnMoc3RydWN0IGludGVsX292ZXJsYXkgKm92ZXJsYXksCiAJb3ZlcmxheS0+b2xkX3hzY2Fs ZSA9IHhzY2FsZTsKIAlvdmVybGF5LT5vbGRfeXNjYWxlID0geXNjYWxlOwogCi0JaW93cml0ZTMy KCgoeXNjYWxlICYgRlJBQ1RfTUFTSykgPDwgMjApIHwKKwlJOTE1X0lPV1JJVEUzMigoKHlzY2Fs ZSAmIEZSQUNUX01BU0spIDw8IDIwKSB8CiAJCSAgKCh4c2NhbGUgPj4gRlBfU0hJRlQpICA8PCAx NikgfAogCQkgICgoeHNjYWxlICYgRlJBQ1RfTUFTSykgPDwgMyksCiAJCSAmcmVncy0+WVJHQlND QUxFKTsKIAotCWlvd3JpdGUzMigoKHlzY2FsZV9VViAmIEZSQUNUX01BU0spIDw8IDIwKSB8CisJ STkxNV9JT1dSSVRFMzIoKCh5c2NhbGVfVVYgJiBGUkFDVF9NQVNLKSA8PCAyMCkgfAogCQkgICgo eHNjYWxlX1VWID4+IEZQX1NISUZUKSAgPDwgMTYpIHwKIAkJICAoKHhzY2FsZV9VViAmIEZSQUNU X01BU0spIDw8IDMpLAogCQkgJnJlZ3MtPlVWU0NBTEUpOwogCi0JaW93cml0ZTMyKCgoKHlzY2Fs ZSAgICA+PiBGUF9TSElGVCkgPDwgMTYpIHwKKwlJOTE1X0lPV1JJVEUzMigoKCh5c2NhbGUgICAg Pj4gRlBfU0hJRlQpIDw8IDE2KSB8CiAJCSAgICgoeXNjYWxlX1VWID4+IEZQX1NISUZUKSA8PCAw KSksCiAJCSAmcmVncy0+VVZTQ0FMRVYpOwogCkBAIC02NTMsNiArNjU0LDcgQEAgc3RhdGljIGJv b2wgdXBkYXRlX3NjYWxpbmdfZmFjdG9ycyhzdHJ1Y3QgaW50ZWxfb3ZlcmxheSAqb3ZlcmxheSwK IHN0YXRpYyB2b2lkIHVwZGF0ZV9jb2xvcmtleShzdHJ1Y3QgaW50ZWxfb3ZlcmxheSAqb3Zlcmxh eSwKIAkJCSAgICBzdHJ1Y3Qgb3ZlcmxheV9yZWdpc3RlcnMgX19pb21lbSAqcmVncykKIHsKKwlz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KG92ZXJsYXktPmRldik7 CiAJdTMyIGtleSA9IG92ZXJsYXktPmNvbG9yX2tleTsKIAl1MzIgZmxhZ3M7CiAKQEAgLTY4Miw4 ICs2ODQsOCBAQCBzdGF0aWMgdm9pZCB1cGRhdGVfY29sb3JrZXkoc3RydWN0IGludGVsX292ZXJs YXkgKm92ZXJsYXksCiAJCWJyZWFrOwogCX0KIAotCWlvd3JpdGUzMihrZXksICZyZWdzLT5EQ0xS S1YpOwotCWlvd3JpdGUzMihmbGFncywgJnJlZ3MtPkRDTFJLTSk7CisJSTkxNV9JT1dSSVRFMzIo a2V5LCAmcmVncy0+RENMUktWKTsKKwlJOTE1X0lPV1JJVEUzMihmbGFncywgJnJlZ3MtPkRDTFJL TSk7CiB9CiAKIHN0YXRpYyB1MzIgb3ZlcmxheV9jbWRfcmVnKHN0cnVjdCBwdXRfaW1hZ2VfcGFy YW1zICpwYXJhbXMpCkBAIC03MzUsNiArNzM3LDcgQEAgc3RhdGljIGludCBpbnRlbF9vdmVybGF5 X2RvX3B1dF9pbWFnZShzdHJ1Y3QgaW50ZWxfb3ZlcmxheSAqb3ZlcmxheSwKIAkJCQkgICAgICBz dHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqbmV3X2JvLAogCQkJCSAgICAgIHN0cnVjdCBwdXRf aW1hZ2VfcGFyYW1zICpwYXJhbXMpCiB7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2ID0gdG9faTkxNShvdmVybGF5LT5kZXYpOwogCWludCByZXQsIHRtcF93aWR0aDsKIAlzdHJ1 Y3Qgb3ZlcmxheV9yZWdpc3RlcnMgX19pb21lbSAqcmVnczsKIAlib29sIHNjYWxlX2NoYW5nZWQg PSBmYWxzZTsKQEAgLTc3MCw3ICs3NzMsNyBAQCBzdGF0aWMgaW50IGludGVsX292ZXJsYXlfZG9f cHV0X2ltYWdlKHN0cnVjdCBpbnRlbF9vdmVybGF5ICpvdmVybGF5LAogCQkJb2NvbmZpZyB8PSBP Q09ORl9DU0NfTU9ERV9CVDcwOTsKIAkJb2NvbmZpZyB8PSBwaXBlID09IDAgPwogCQkJT0NPTkZf UElQRV9BIDogT0NPTkZfUElQRV9COwotCQlpb3dyaXRlMzIob2NvbmZpZywgJnJlZ3MtPk9DT05G SUcpOworCQlJOTE1X0lPV1JJVEUzMihvY29uZmlnLCAmcmVncy0+T0NPTkZJRyk7CiAJCWludGVs X292ZXJsYXlfdW5tYXBfcmVncyhvdmVybGF5LCByZWdzKTsKIAogCQlyZXQgPSBpbnRlbF9vdmVy bGF5X29uKG92ZXJsYXkpOwpAQCAtNzg0LDggKzc4Nyw4IEBAIHN0YXRpYyBpbnQgaW50ZWxfb3Zl cmxheV9kb19wdXRfaW1hZ2Uoc3RydWN0IGludGVsX292ZXJsYXkgKm92ZXJsYXksCiAJCWdvdG8g b3V0X3VucGluOwogCX0KIAotCWlvd3JpdGUzMigocGFyYW1zLT5kc3RfeSA8PCAxNikgfCBwYXJh bXMtPmRzdF94LCAmcmVncy0+RFdJTlBPUyk7Ci0JaW93cml0ZTMyKChwYXJhbXMtPmRzdF9oIDw8 IDE2KSB8IHBhcmFtcy0+ZHN0X3csICZyZWdzLT5EV0lOU1opOworCUk5MTVfSU9XUklURTMyKChw YXJhbXMtPmRzdF95IDw8IDE2KSB8IHBhcmFtcy0+ZHN0X3gsICZyZWdzLT5EV0lOUE9TKTsKKwlJ OTE1X0lPV1JJVEUzMigocGFyYW1zLT5kc3RfaCA8PCAxNikgfCBwYXJhbXMtPmRzdF93LCAmcmVn cy0+RFdJTlNaKTsKIAogCWlmIChwYXJhbXMtPmZvcm1hdCAmIEk5MTVfT1ZFUkxBWV9ZVVZfUEFD S0VEKQogCQl0bXBfd2lkdGggPSBwYWNrZWRfd2lkdGhfYnl0ZXMocGFyYW1zLT5mb3JtYXQsIHBh cmFtcy0+c3JjX3cpOwpAQCAtNzk1LDcgKzc5OCw3IEBAIHN0YXRpYyBpbnQgaW50ZWxfb3Zlcmxh eV9kb19wdXRfaW1hZ2Uoc3RydWN0IGludGVsX292ZXJsYXkgKm92ZXJsYXksCiAJc3dpZHRoID0g cGFyYW1zLT5zcmNfdzsKIAlzd2lkdGhzdyA9IGNhbGNfc3dpZHRoc3cob3ZlcmxheS0+ZGV2LCBw YXJhbXMtPm9mZnNldF9ZLCB0bXBfd2lkdGgpOwogCXNoZWlnaHQgPSBwYXJhbXMtPnNyY19oOwot CWlvd3JpdGUzMihpOTE1X2dlbV9vYmpfZ2d0dF9vZmZzZXQobmV3X2JvKSArIHBhcmFtcy0+b2Zm c2V0X1ksICZyZWdzLT5PQlVGXzBZKTsKKwlJOTE1X0lPV1JJVEUzMihpOTE1X2dlbV9vYmpfZ2d0 dF9vZmZzZXQobmV3X2JvKSArIHBhcmFtcy0+b2Zmc2V0X1ksICZyZWdzLT5PQlVGXzBZKTsKIAlv c3RyaWRlID0gcGFyYW1zLT5zdHJpZGVfWTsKIAogCWlmIChwYXJhbXMtPmZvcm1hdCAmIEk5MTVf T1ZFUkxBWV9ZVVZfUExBTkFSKSB7CkBAIC04MDksMjEgKzgxMiwyMSBAQCBzdGF0aWMgaW50IGlu dGVsX292ZXJsYXlfZG9fcHV0X2ltYWdlKHN0cnVjdCBpbnRlbF9vdmVybGF5ICpvdmVybGF5LAog CQkJCSAgICAgIHBhcmFtcy0+c3JjX3cvdXZfaHNjYWxlKTsKIAkJc3dpZHRoc3cgfD0gbWF4X3Qo dTMyLCB0bXBfVSwgdG1wX1YpIDw8IDE2OwogCQlzaGVpZ2h0IHw9IChwYXJhbXMtPnNyY19oL3V2 X3ZzY2FsZSkgPDwgMTY7Ci0JCWlvd3JpdGUzMihpOTE1X2dlbV9vYmpfZ2d0dF9vZmZzZXQobmV3 X2JvKSArIHBhcmFtcy0+b2Zmc2V0X1UsICZyZWdzLT5PQlVGXzBVKTsKLQkJaW93cml0ZTMyKGk5 MTVfZ2VtX29ial9nZ3R0X29mZnNldChuZXdfYm8pICsgcGFyYW1zLT5vZmZzZXRfViwgJnJlZ3Mt Pk9CVUZfMFYpOworCQlJOTE1X0lPV1JJVEUzMihpOTE1X2dlbV9vYmpfZ2d0dF9vZmZzZXQobmV3 X2JvKSArIHBhcmFtcy0+b2Zmc2V0X1UsICZyZWdzLT5PQlVGXzBVKTsKKwkJSTkxNV9JT1dSSVRF MzIoaTkxNV9nZW1fb2JqX2dndHRfb2Zmc2V0KG5ld19ibykgKyBwYXJhbXMtPm9mZnNldF9WLCAm cmVncy0+T0JVRl8wVik7CiAJCW9zdHJpZGUgfD0gcGFyYW1zLT5zdHJpZGVfVVYgPDwgMTY7CiAJ fQogCi0JaW93cml0ZTMyKHN3aWR0aCwgJnJlZ3MtPlNXSURUSCk7Ci0JaW93cml0ZTMyKHN3aWR0 aHN3LCAmcmVncy0+U1dJRFRIU1cpOwotCWlvd3JpdGUzMihzaGVpZ2h0LCAmcmVncy0+U0hFSUdI VCk7Ci0JaW93cml0ZTMyKG9zdHJpZGUsICZyZWdzLT5PU1RSSURFKTsKKwlJOTE1X0lPV1JJVEUz Mihzd2lkdGgsICZyZWdzLT5TV0lEVEgpOworCUk5MTVfSU9XUklURTMyKHN3aWR0aHN3LCAmcmVn cy0+U1dJRFRIU1cpOworCUk5MTVfSU9XUklURTMyKHNoZWlnaHQsICZyZWdzLT5TSEVJR0hUKTsK KwlJOTE1X0lPV1JJVEUzMihvc3RyaWRlLCAmcmVncy0+T1NUUklERSk7CiAKIAlzY2FsZV9jaGFu Z2VkID0gdXBkYXRlX3NjYWxpbmdfZmFjdG9ycyhvdmVybGF5LCByZWdzLCBwYXJhbXMpOwogCiAJ dXBkYXRlX2NvbG9ya2V5KG92ZXJsYXksIHJlZ3MpOwogCi0JaW93cml0ZTMyKG92ZXJsYXlfY21k X3JlZyhwYXJhbXMpLCAmcmVncy0+T0NNRCk7CisJSTkxNV9JT1dSSVRFMzIob3ZlcmxheV9jbWRf cmVnKHBhcmFtcyksICZyZWdzLT5PQ01EKTsKIAogCWludGVsX292ZXJsYXlfdW5tYXBfcmVncyhv dmVybGF5LCByZWdzKTsKIApAQCAtODQ5LDYgKzg1Miw3IEBAIG91dF91bnBpbjoKIAogaW50IGlu dGVsX292ZXJsYXlfc3dpdGNoX29mZihzdHJ1Y3QgaW50ZWxfb3ZlcmxheSAqb3ZlcmxheSkKIHsK KwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KG92ZXJsYXktPmRl dik7CiAJc3RydWN0IG92ZXJsYXlfcmVnaXN0ZXJzIF9faW9tZW0gKnJlZ3M7CiAJc3RydWN0IGRy bV9kZXZpY2UgKmRldiA9IG92ZXJsYXktPmRldjsKIAlpbnQgcmV0OwpAQCAtODY4LDcgKzg3Miw3 IEBAIGludCBpbnRlbF9vdmVybGF5X3N3aXRjaF9vZmYoc3RydWN0IGludGVsX292ZXJsYXkgKm92 ZXJsYXkpCiAJCXJldHVybiByZXQ7CiAKIAlyZWdzID0gaW50ZWxfb3ZlcmxheV9tYXBfcmVncyhv dmVybGF5KTsKLQlpb3dyaXRlMzIoMCwgJnJlZ3MtPk9DTUQpOworCUk5MTVfSU9XUklURTMyKDAs ICZyZWdzLT5PQ01EKTsKIAlpbnRlbF9vdmVybGF5X3VubWFwX3JlZ3Mob3ZlcmxheSwgcmVncyk7 CiAKIAlyZXQgPSBpbnRlbF9vdmVybGF5X29mZihvdmVybGF5KTsKQEAgLTEyMzIsOSArMTIzNiwx MSBAQCBvdXRfZnJlZToKIHN0YXRpYyB2b2lkIHVwZGF0ZV9yZWdfYXR0cnMoc3RydWN0IGludGVs X292ZXJsYXkgKm92ZXJsYXksCiAJCQkgICAgIHN0cnVjdCBvdmVybGF5X3JlZ2lzdGVycyBfX2lv bWVtICpyZWdzKQogewotCWlvd3JpdGUzMigob3ZlcmxheS0+Y29udHJhc3QgPDwgMTgpIHwgKG92 ZXJsYXktPmJyaWdodG5lc3MgJiAweGZmKSwKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYgPSB0b19pOTE1KG92ZXJsYXktPmRldik7CisKKwlJOTE1X0lPV1JJVEUzMigob3Zlcmxh eS0+Y29udHJhc3QgPDwgMTgpIHwgKG92ZXJsYXktPmJyaWdodG5lc3MgJiAweGZmKSwKIAkJICAm cmVncy0+T0NMUkMwKTsKLQlpb3dyaXRlMzIob3ZlcmxheS0+c2F0dXJhdGlvbiwgJnJlZ3MtPk9D TFJDMSk7CisJSTkxNV9JT1dSSVRFMzIob3ZlcmxheS0+c2F0dXJhdGlvbiwgJnJlZ3MtPk9DTFJD MSk7CiB9CiAKIHN0YXRpYyBib29sIGNoZWNrX2dhbW1hX2JvdW5kcyh1MzIgZ2FtbWExLCB1MzIg Z2FtbWEyKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZl ci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jCmluZGV4IDQ1Y2U0 NWEuLjEyZGM4ZTAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Jpbmdi dWZmZXIuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMKQEAg LTIzMzEsMTMgKzIzMzEsMTQgQEAgc3RhdGljIGludCByaW5nX3dhaXRfZm9yX3NwYWNlKHN0cnVj dCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcsIGludCBuKQogCiBzdGF0aWMgdm9pZCBfX3dyYXBfcmlu Z19idWZmZXIoc3RydWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmdidWYpCiB7CisJc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShyaW5nYnVmLT5yaW5nLT5kZXYpOwog CXVpbnQzMl90IF9faW9tZW0gKnZpcnQ7CiAJaW50IHJlbSA9IHJpbmdidWYtPnNpemUgLSByaW5n YnVmLT50YWlsOwogCiAJdmlydCA9IHJpbmdidWYtPnZpcnR1YWxfc3RhcnQgKyByaW5nYnVmLT50 YWlsOwogCXJlbSAvPSA0OwogCXdoaWxlIChyZW0tLSkKLQkJaW93cml0ZTMyKE1JX05PT1AsIHZp cnQrKyk7CisJCUk5MTVfSU9XUklURTMyKE1JX05PT1AsIHZpcnQrKyk7CiAKIAlyaW5nYnVmLT50 YWlsID0gMDsKIAlpbnRlbF9yaW5nX3VwZGF0ZV9zcGFjZShyaW5nYnVmKTsKZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaCBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaAppbmRleCA1NjZiMGFlLi5jYWUxYWFjIDEwMDY0NAot LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmgKKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5oCkBAIC00NDYsMTggKzQ0Niw3IEBAIGlu dCBpbnRlbF9yaW5nX2FsbG9jX3JlcXVlc3RfZXh0cmFzKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVx dWVzdCAqcmVxdWVzdCk7CiAKIGludCBfX211c3RfY2hlY2sgaW50ZWxfcmluZ19iZWdpbihzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwgaW50IG4pOwogaW50IF9fbXVzdF9jaGVjayBp bnRlbF9yaW5nX2NhY2hlbGluZV9hbGlnbihzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJl cSk7Ci1zdGF0aWMgaW5saW5lIHZvaWQgaW50ZWxfcmluZ19lbWl0KHN0cnVjdCBpbnRlbF9lbmdp bmVfY3MgKnJpbmcsCi0JCQkJICAgdTMyIGRhdGEpCi17Ci0Jc3RydWN0IGludGVsX3JpbmdidWZm ZXIgKnJpbmdidWYgPSByaW5nLT5idWZmZXI7Ci0JaW93cml0ZTMyKGRhdGEsIHJpbmdidWYtPnZp cnR1YWxfc3RhcnQgKyByaW5nYnVmLT50YWlsKTsKLQlyaW5nYnVmLT50YWlsICs9IDQ7Ci19Ci1z dGF0aWMgaW5saW5lIHZvaWQgaW50ZWxfcmluZ19lbWl0X3JlZyhzdHJ1Y3QgaW50ZWxfZW5naW5l X2NzICpyaW5nLAotCQkJCSAgICAgICBpOTE1X3JlZ190IHJlZykKLXsKLQlpbnRlbF9yaW5nX2Vt aXQocmluZywgaTkxNV9tbWlvX3JlZ19vZmZzZXQocmVnKSk7Ci19CisKIHN0YXRpYyBpbmxpbmUg dm9pZCBpbnRlbF9yaW5nX2FkdmFuY2Uoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZykKIHsK IAlzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZ2J1ZiA9IHJpbmctPmJ1ZmZlcjsKLS0gCjIu NS4wCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRl bC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6 Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK