From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andres Rodriguez Subject: [PATCH 20/25] drm/amdgpu: convert srbm lock to a spinlock v2 Date: Tue, 4 Apr 2017 18:05:46 -0400 Message-ID: <20170404220551.8669-21-andresx7@gmail.com> References: <20170404220551.8669-1-andresx7@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20170404220551.8669-1-andresx7-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> List-Id: Discussion list for AMD gfx List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: amd-gfx-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "amd-gfx" To: amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Cc: andresx7-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org UmVwbGFjZSBhZGV2LT5zcmJtX211dGV4IHdpdGggYSBzcGlubG9jayBhZGV2LT5zcmJtX2xvY2sK CnYyOiByZWJhc2VkIG9uIDQuMTIgYW5kIGluY2x1ZGVkIGdmeDkKU2lnbmVkLW9mZi1ieTogQW5k cmVzIFJvZHJpZ3VleiA8YW5kcmVzeDdAZ21haWwuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9h bWQvYW1kZ3B1L2FtZGdwdS5oICAgICAgICAgICAgICAgfCAgMiArLQogZHJpdmVycy9ncHUvZHJt L2FtZC9hbWRncHUvYW1kZ3B1X2FtZGtmZF9nZnhfdjcuYyB8ICA0ICsrLS0KIGRyaXZlcnMvZ3B1 L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9hbWRrZmRfZ2Z4X3Y4LmMgfCAgNCArKy0tCiBkcml2ZXJz L2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZGV2aWNlLmMgICAgICAgIHwgIDIgKy0KIGRyaXZl cnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2Npa19zZG1hLmMgICAgICAgICAgICAgfCAgNCArKy0tCiBk cml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9nZnhfdjdfMC5jICAgICAgICAgICAgIHwgMjAgKysr KysrKystLS0tLS0tLS0KIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2dmeF92OF8wLmMgICAg ICAgICAgICAgfCAyNiArKysrKysrKysrKy0tLS0tLS0tLS0tLQogZHJpdmVycy9ncHUvZHJtL2Ft ZC9hbWRncHUvZ2Z4X3Y5XzAuYyAgICAgICAgICAgICB8IDI0ICsrKysrKysrKystLS0tLS0tLS0t LQogZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvc2RtYV92Ml80LmMgICAgICAgICAgICB8ICA0 ICsrLS0KIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3NkbWFfdjNfMC5jICAgICAgICAgICAg fCAgNCArKy0tCiAxMCBmaWxlcyBjaGFuZ2VkLCA0NyBpbnNlcnRpb25zKCspLCA0NyBkZWxldGlv bnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHUuaCBi L2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdS5oCmluZGV4IDYyYmZiNTMuLmI1ZWM3 OTIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdS5oCisrKyBi L2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdS5oCkBAIC0xNDkyLDIxICsxNDkyLDIx IEBAIHN0cnVjdCBhbWRncHVfZGV2aWNlIHsKIAlzdHJ1Y3Qgd29ya19zdHJ1Y3QJCXJlc2V0X3dv cms7CiAJc3RydWN0IG5vdGlmaWVyX2Jsb2NrCQlhY3BpX25iOwogCXN0cnVjdCBhbWRncHVfaTJj X2NoYW4JCSppMmNfYnVzW0FNREdQVV9NQVhfSTJDX0JVU107CiAJc3RydWN0IGFtZGdwdV9kZWJ1 Z2ZzCQlkZWJ1Z2ZzW0FNREdQVV9ERUJVR0ZTX01BWF9DT01QT05FTlRTXTsKIAl1bnNpZ25lZAkJ CWRlYnVnZnNfY291bnQ7CiAjaWYgZGVmaW5lZChDT05GSUdfREVCVUdfRlMpCiAJc3RydWN0IGRl bnRyeQkJCSpkZWJ1Z2ZzX3JlZ3NbQU1ER1BVX0RFQlVHRlNfTUFYX0NPTVBPTkVOVFNdOwogI2Vu ZGlmCiAJc3RydWN0IGFtZGdwdV9hdGlmCQlhdGlmOwogCXN0cnVjdCBhbWRncHVfYXRjcwkJYXRj czsKLQlzdHJ1Y3QgbXV0ZXgJCQlzcmJtX211dGV4OworCXNwaW5sb2NrX3QJCQlzcmJtX2xvY2s7 CiAJLyogR1JCTSBpbmRleCBtdXRleC4gUHJvdGVjdHMgY29uY3VycmVudCBhY2Nlc3MgdG8gR1JC TSBpbmRleCAqLwogCXN0cnVjdCBtdXRleCAgICAgICAgICAgICAgICAgICAgZ3JibV9pZHhfbXV0 ZXg7CiAJc3RydWN0IGRldl9wbV9kb21haW4JCXZnYV9wbV9kb21haW47CiAJYm9vbAkJCQloYXZl X2Rpc3BfcG93ZXJfcmVmOwogCiAJLyogQklPUyAqLwogCWJvb2wJCQkJaXNfYXRvbV9mdzsKIAl1 aW50OF90CQkJCSpiaW9zOwogCXVpbnQzMl90CQkJYmlvc19zaXplOwogCXN0cnVjdCBhbWRncHVf Ym8JCSpzdG9sbGVuX3ZnYV9tZW1vcnk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1k L2FtZGdwdS9hbWRncHVfYW1ka2ZkX2dmeF92Ny5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRn cHUvYW1kZ3B1X2FtZGtmZF9nZnhfdjcuYwppbmRleCA1MjU0NTYyLi5hMDA5OTkwIDEwMDY0NAot LS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfYW1ka2ZkX2dmeF92Ny5jCisr KyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9hbWRrZmRfZ2Z4X3Y3LmMKQEAg LTE2MiwzMCArMTYyLDMwIEBAIHN0YXRpYyBpbmxpbmUgc3RydWN0IGFtZGdwdV9kZXZpY2UgKmdl dF9hbWRncHVfZGV2aWNlKHN0cnVjdCBrZ2RfZGV2ICprZ2QpCiB7CiAJcmV0dXJuIChzdHJ1Y3Qg YW1kZ3B1X2RldmljZSAqKWtnZDsKIH0KIAogc3RhdGljIHZvaWQgbG9ja19zcmJtKHN0cnVjdCBr Z2RfZGV2ICprZ2QsIHVpbnQzMl90IG1lYywgdWludDMyX3QgcGlwZSwKIAkJCXVpbnQzMl90IHF1 ZXVlLCB1aW50MzJfdCB2bWlkKQogewogCXN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2ID0gZ2V0 X2FtZGdwdV9kZXZpY2Uoa2dkKTsKIAl1aW50MzJfdCB2YWx1ZSA9IFBJUEVJRChwaXBlKSB8IE1F SUQobWVjKSB8IFZNSUQodm1pZCkgfCBRVUVVRUlEKHF1ZXVlKTsKIAotCW11dGV4X2xvY2soJmFk ZXYtPnNyYm1fbXV0ZXgpOworCXNwaW5fbG9jaygmYWRldi0+c3JibV9sb2NrKTsKIAlXUkVHMzIo bW1TUkJNX0dGWF9DTlRMLCB2YWx1ZSk7CiB9CiAKIHN0YXRpYyB2b2lkIHVubG9ja19zcmJtKHN0 cnVjdCBrZ2RfZGV2ICprZ2QpCiB7CiAJc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYgPSBnZXRf YW1kZ3B1X2RldmljZShrZ2QpOwogCiAJV1JFRzMyKG1tU1JCTV9HRlhfQ05UTCwgMCk7Ci0JbXV0 ZXhfdW5sb2NrKCZhZGV2LT5zcmJtX211dGV4KTsKKwlzcGluX3VubG9jaygmYWRldi0+c3JibV9s b2NrKTsKIH0KIAogc3RhdGljIHZvaWQgYWNxdWlyZV9xdWV1ZShzdHJ1Y3Qga2dkX2RldiAqa2dk LCB1aW50MzJfdCBwaXBlX2lkLAogCQkJCXVpbnQzMl90IHF1ZXVlX2lkKQogewogCXN0cnVjdCBh bWRncHVfZGV2aWNlICphZGV2ID0gZ2V0X2FtZGdwdV9kZXZpY2Uoa2dkKTsKIAogCXVpbnQzMl90 IG1lYyA9ICgrK3BpcGVfaWQgLyBhZGV2LT5nZngubWVjLm51bV9waXBlX3Blcl9tZWMpICsgMTsK IAl1aW50MzJfdCBwaXBlID0gKHBpcGVfaWQgJSBhZGV2LT5nZngubWVjLm51bV9waXBlX3Blcl9t ZWMpOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfYW1k a2ZkX2dmeF92OC5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2FtZGtmZF9n ZnhfdjguYwppbmRleCBkYjc0MTBhLi42YjkzYTVjIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9k cm0vYW1kL2FtZGdwdS9hbWRncHVfYW1ka2ZkX2dmeF92OC5jCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9hbWQvYW1kZ3B1L2FtZGdwdV9hbWRrZmRfZ2Z4X3Y4LmMKQEAgLTEyMywzMCArMTIzLDMwIEBA IHN0YXRpYyBpbmxpbmUgc3RydWN0IGFtZGdwdV9kZXZpY2UgKmdldF9hbWRncHVfZGV2aWNlKHN0 cnVjdCBrZ2RfZGV2ICprZ2QpCiB7CiAJcmV0dXJuIChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqKWtn ZDsKIH0KIAogc3RhdGljIHZvaWQgbG9ja19zcmJtKHN0cnVjdCBrZ2RfZGV2ICprZ2QsIHVpbnQz Ml90IG1lYywgdWludDMyX3QgcGlwZSwKIAkJCXVpbnQzMl90IHF1ZXVlLCB1aW50MzJfdCB2bWlk KQogewogCXN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2ID0gZ2V0X2FtZGdwdV9kZXZpY2Uoa2dk KTsKIAl1aW50MzJfdCB2YWx1ZSA9IFBJUEVJRChwaXBlKSB8IE1FSUQobWVjKSB8IFZNSUQodm1p ZCkgfCBRVUVVRUlEKHF1ZXVlKTsKIAotCW11dGV4X2xvY2soJmFkZXYtPnNyYm1fbXV0ZXgpOwor CXNwaW5fbG9jaygmYWRldi0+c3JibV9sb2NrKTsKIAlXUkVHMzIobW1TUkJNX0dGWF9DTlRMLCB2 YWx1ZSk7CiB9CiAKIHN0YXRpYyB2b2lkIHVubG9ja19zcmJtKHN0cnVjdCBrZ2RfZGV2ICprZ2Qp CiB7CiAJc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYgPSBnZXRfYW1kZ3B1X2RldmljZShrZ2Qp OwogCiAJV1JFRzMyKG1tU1JCTV9HRlhfQ05UTCwgMCk7Ci0JbXV0ZXhfdW5sb2NrKCZhZGV2LT5z cmJtX211dGV4KTsKKwlzcGluX3VubG9jaygmYWRldi0+c3JibV9sb2NrKTsKIH0KIAogc3RhdGlj IHZvaWQgYWNxdWlyZV9xdWV1ZShzdHJ1Y3Qga2dkX2RldiAqa2dkLCB1aW50MzJfdCBwaXBlX2lk LAogCQkJCXVpbnQzMl90IHF1ZXVlX2lkKQogewogCXN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2 ID0gZ2V0X2FtZGdwdV9kZXZpY2Uoa2dkKTsKIAogCXVpbnQzMl90IG1lYyA9ICgrK3BpcGVfaWQg LyBhZGV2LT5nZngubWVjLm51bV9waXBlX3Blcl9tZWMpICsgMTsKIAl1aW50MzJfdCBwaXBlID0g KHBpcGVfaWQgJSBhZGV2LT5nZngubWVjLm51bV9waXBlX3Blcl9tZWMpOwogCmRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZGV2aWNlLmMgYi9kcml2ZXJzL2dw dS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZGV2aWNlLmMKaW5kZXggZjQ4Y2M0ZC4uNDdjZDk1NiAx MDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2RldmljZS5jCisr KyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kZXZpY2UuYwpAQCAtMTg2NSwy MSArMTg2NSwyMSBAQCBpbnQgYW1kZ3B1X2RldmljZV9pbml0KHN0cnVjdCBhbWRncHVfZGV2aWNl ICphZGV2LAogCQkgYW1kZ3B1X2FzaWNfbmFtZVthZGV2LT5hc2ljX3R5cGVdLCBwZGV2LT52ZW5k b3IsIHBkZXYtPmRldmljZSwKIAkJIHBkZXYtPnN1YnN5c3RlbV92ZW5kb3IsIHBkZXYtPnN1YnN5 c3RlbV9kZXZpY2UsIHBkZXYtPnJldmlzaW9uKTsKIAogCS8qIG11dGV4IGluaXRpYWxpemF0aW9u IGFyZSBhbGwgZG9uZSBoZXJlIHNvIHdlCiAJICogY2FuIHJlY2FsbCBmdW5jdGlvbiB3aXRob3V0 IGhhdmluZyBsb2NraW5nIGlzc3VlcyAqLwogCW11dGV4X2luaXQoJmFkZXYtPnZtX21hbmFnZXIu bG9jayk7CiAJYXRvbWljX3NldCgmYWRldi0+aXJxLmloLmxvY2ssIDApOwogCW11dGV4X2luaXQo JmFkZXYtPmZpcm13YXJlLm11dGV4KTsKIAltdXRleF9pbml0KCZhZGV2LT5wbS5tdXRleCk7CiAJ bXV0ZXhfaW5pdCgmYWRldi0+Z2Z4LmdwdV9jbG9ja19tdXRleCk7Ci0JbXV0ZXhfaW5pdCgmYWRl di0+c3JibV9tdXRleCk7CisJc3Bpbl9sb2NrX2luaXQoJmFkZXYtPnNyYm1fbG9jayk7CiAJbXV0 ZXhfaW5pdCgmYWRldi0+Z3JibV9pZHhfbXV0ZXgpOwogCW11dGV4X2luaXQoJmFkZXYtPm1uX2xv Y2spOwogCWhhc2hfaW5pdChhZGV2LT5tbl9oYXNoKTsKIAogCWFtZGdwdV9jaGVja19hcmd1bWVu dHMoYWRldik7CiAKIAkvKiBSZWdpc3RlcnMgbWFwcGluZyAqLwogCS8qIFRPRE86IGJsb2NrIHVz ZXJzcGFjZSBtYXBwaW5nIG9mIGlvIHJlZ2lzdGVyICovCiAJc3Bpbl9sb2NrX2luaXQoJmFkZXYt Pm1taW9faWR4X2xvY2spOwogCXNwaW5fbG9ja19pbml0KCZhZGV2LT5zbWNfaWR4X2xvY2spOwpk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvY2lrX3NkbWEuYyBiL2RyaXZl cnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2Npa19zZG1hLmMKaW5kZXggYzIxNmUxNi4uZmU0NjJlYyAx MDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvY2lrX3NkbWEuYworKysgYi9k cml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9jaWtfc2RtYS5jCkBAIC0zODIsMzAgKzM4MiwzMCBA QCBzdGF0aWMgaW50IGNpa19zZG1hX2dmeF9yZXN1bWUoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFk ZXYpCiAJc3RydWN0IGFtZGdwdV9yaW5nICpyaW5nOwogCXUzMiByYl9jbnRsLCBpYl9jbnRsOwog CXUzMiByYl9idWZzejsKIAl1MzIgd2Jfb2Zmc2V0OwogCWludCBpLCBqLCByOwogCiAJZm9yIChp ID0gMDsgaSA8IGFkZXYtPnNkbWEubnVtX2luc3RhbmNlczsgaSsrKSB7CiAJCXJpbmcgPSAmYWRl di0+c2RtYS5pbnN0YW5jZVtpXS5yaW5nOwogCQl3Yl9vZmZzZXQgPSAocmluZy0+cnB0cl9vZmZz ICogNCk7CiAKLQkJbXV0ZXhfbG9jaygmYWRldi0+c3JibV9tdXRleCk7CisJCXNwaW5fbG9jaygm YWRldi0+c3JibV9sb2NrKTsKIAkJZm9yIChqID0gMDsgaiA8IDE2OyBqKyspIHsKIAkJCWNpa19z cmJtX3NlbGVjdChhZGV2LCAwLCAwLCAwLCBqKTsKIAkJCS8qIFNETUEgR0ZYICovCiAJCQlXUkVH MzIobW1TRE1BMF9HRlhfVklSVFVBTF9BRERSICsgc2RtYV9vZmZzZXRzW2ldLCAwKTsKIAkJCVdS RUczMihtbVNETUEwX0dGWF9BUEUxX0NOVEwgKyBzZG1hX29mZnNldHNbaV0sIDApOwogCQkJLyog WFhYIFNETUEgUkxDIC0gdG9kbyAqLwogCQl9CiAJCWNpa19zcmJtX3NlbGVjdChhZGV2LCAwLCAw LCAwLCAwKTsKLQkJbXV0ZXhfdW5sb2NrKCZhZGV2LT5zcmJtX211dGV4KTsKKwkJc3Bpbl91bmxv Y2soJmFkZXYtPnNyYm1fbG9jayk7CiAKIAkJV1JFRzMyKG1tU0RNQTBfVElMSU5HX0NPTkZJRyAr IHNkbWFfb2Zmc2V0c1tpXSwKIAkJICAgICAgIGFkZXYtPmdmeC5jb25maWcuZ2JfYWRkcl9jb25m aWcgJiAweDcwKTsKIAogCQlXUkVHMzIobW1TRE1BMF9TRU1fSU5DT01QTEVURV9USU1FUl9DTlRM ICsgc2RtYV9vZmZzZXRzW2ldLCAwKTsKIAkJV1JFRzMyKG1tU0RNQTBfU0VNX1dBSVRfRkFJTF9U SU1FUl9DTlRMICsgc2RtYV9vZmZzZXRzW2ldLCAwKTsKIAogCQkvKiBTZXQgcmluZyBidWZmZXIg c2l6ZSBpbiBkd29yZHMgKi8KIAkJcmJfYnVmc3ogPSBvcmRlcl9iYXNlXzIocmluZy0+cmluZ19z aXplIC8gNCk7CiAJCXJiX2NudGwgPSByYl9idWZzeiA8PCAxOwpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2FtZC9hbWRncHUvZ2Z4X3Y3XzAuYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1k Z3B1L2dmeF92N18wLmMKaW5kZXggOGYyZTI2Ni4uYTg0OThmZCAxMDA2NDQKLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2FtZC9hbWRncHUvZ2Z4X3Y3XzAuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1k L2FtZGdwdS9nZnhfdjdfMC5jCkBAIC0xODU2LDMxICsxODU2LDMxIEBAIHN0YXRpYyB2b2lkIGdt Y192N18wX2luaXRfY29tcHV0ZV92bWlkKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KQogCS8q CiAJICogQ29uZmlndXJlIGFwZXJ0dXJlczoKIAkgKiBMRFM6ICAgICAgICAgMHg2MDAwMDAwMCcw MDAwMDAwMCAtIDB4NjAwMDAwMDEnMDAwMDAwMDAgKDRHQikKIAkgKiBTY3JhdGNoOiAgICAgMHg2 MDAwMDAwMScwMDAwMDAwMCAtIDB4NjAwMDAwMDInMDAwMDAwMDAgKDRHQikKIAkgKiBHUFVWTTog ICAgICAgMHg2MDAxMDAwMCcwMDAwMDAwMCAtIDB4NjAwMjAwMDAnMDAwMDAwMDAgKDFUQikKIAkq LwogCXNoX21lbV9iYXNlcyA9IERFRkFVTFRfU0hfTUVNX0JBU0VTIHwgKERFRkFVTFRfU0hfTUVN X0JBU0VTIDw8IDE2KTsKIAlzaF9tZW1fY29uZmlnID0gU0hfTUVNX0FMSUdOTUVOVF9NT0RFX1VO QUxJR05FRCA8PAogCQkJU0hfTUVNX0NPTkZJR19fQUxJR05NRU5UX01PREVfX1NISUZUOwogCXNo X21lbV9jb25maWcgfD0gTVRZUEVfTk9OQ0FDSEVEIDw8IFNIX01FTV9DT05GSUdfX0RFRkFVTFRf TVRZUEVfX1NISUZUOwotCW11dGV4X2xvY2soJmFkZXYtPnNyYm1fbXV0ZXgpOworCXNwaW5fbG9j aygmYWRldi0+c3JibV9sb2NrKTsKIAlmb3IgKGkgPSBGSVJTVF9DT01QVVRFX1ZNSUQ7IGkgPCBM QVNUX0NPTVBVVEVfVk1JRDsgaSsrKSB7CiAJCWNpa19zcmJtX3NlbGVjdChhZGV2LCAwLCAwLCAw LCBpKTsKIAkJLyogQ1AgYW5kIHNoYWRlcnMgKi8KIAkJV1JFRzMyKG1tU0hfTUVNX0NPTkZJRywg c2hfbWVtX2NvbmZpZyk7CiAJCVdSRUczMihtbVNIX01FTV9BUEUxX0JBU0UsIDEpOwogCQlXUkVH MzIobW1TSF9NRU1fQVBFMV9MSU1JVCwgMCk7CiAJCVdSRUczMihtbVNIX01FTV9CQVNFUywgc2hf bWVtX2Jhc2VzKTsKIAl9CiAJY2lrX3NyYm1fc2VsZWN0KGFkZXYsIDAsIDAsIDAsIDApOwotCW11 dGV4X3VubG9jaygmYWRldi0+c3JibV9tdXRleCk7CisJc3Bpbl91bmxvY2soJmFkZXYtPnNyYm1f bG9jayk7CiB9CiAKIHN0YXRpYyB2b2lkIGdmeF92N18wX2NvbmZpZ19pbml0KHN0cnVjdCBhbWRn cHVfZGV2aWNlICphZGV2KQogewogCWFkZXYtPmdmeC5jb25maWcuZG91YmxlX29mZmNoaXBfbGRz X2J1ZiA9IDE7CiB9CiAKIC8qKgogICogZ2Z4X3Y3XzBfZ3B1X2luaXQgLSBzZXR1cCB0aGUgM0Qg ZW5naW5lCiAgKgpAQCAtMTkyOSwzNiArMTkyOSwzNiBAQCBzdGF0aWMgdm9pZCBnZnhfdjdfMF9n cHVfaW5pdChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldikKIAkJCQkgICBNVFlQRV9VQyk7CiAJ c2hfbWVtX2NmZyA9IFJFR19TRVRfRklFTEQoc2hfbWVtX2NmZywgU0hfTUVNX0NPTkZJRywgUFJJ VkFURV9BVEMsIDApOwogCiAJc2hfc3RhdGljX21lbV9jZmcgPSBSRUdfU0VUX0ZJRUxEKDAsIFNI X1NUQVRJQ19NRU1fQ09ORklHLAogCQkJCSAgIFNXSVpaTEVfRU5BQkxFLCAxKTsKIAlzaF9zdGF0 aWNfbWVtX2NmZyA9IFJFR19TRVRfRklFTEQoc2hfc3RhdGljX21lbV9jZmcsIFNIX1NUQVRJQ19N RU1fQ09ORklHLAogCQkJCSAgIEVMRU1FTlRfU0laRSwgMSk7CiAJc2hfc3RhdGljX21lbV9jZmcg PSBSRUdfU0VUX0ZJRUxEKHNoX3N0YXRpY19tZW1fY2ZnLCBTSF9TVEFUSUNfTUVNX0NPTkZJRywK IAkJCQkgICBJTkRFWF9TVFJJREUsIDMpOwogCi0JbXV0ZXhfbG9jaygmYWRldi0+c3JibV9tdXRl eCk7CisJc3Bpbl9sb2NrKCZhZGV2LT5zcmJtX2xvY2spOwogCWZvciAoaSA9IDA7IGkgPCBhZGV2 LT52bV9tYW5hZ2VyLm51bV9pZHM7IGkrKykgewogCQlpZiAoaSA9PSAwKQogCQkJc2hfbWVtX2Jh c2UgPSAwOwogCQllbHNlCiAJCQlzaF9tZW1fYmFzZSA9IGFkZXYtPm1jLnNoYXJlZF9hcGVydHVy ZV9zdGFydCA+PiA0ODsKIAkJY2lrX3NyYm1fc2VsZWN0KGFkZXYsIDAsIDAsIDAsIGkpOwogCQkv KiBDUCBhbmQgc2hhZGVycyAqLwogCQlXUkVHMzIobW1TSF9NRU1fQ09ORklHLCBzaF9tZW1fY2Zn KTsKIAkJV1JFRzMyKG1tU0hfTUVNX0FQRTFfQkFTRSwgMSk7CiAJCVdSRUczMihtbVNIX01FTV9B UEUxX0xJTUlULCAwKTsKIAkJV1JFRzMyKG1tU0hfTUVNX0JBU0VTLCBzaF9tZW1fYmFzZSk7CiAJ CVdSRUczMihtbVNIX1NUQVRJQ19NRU1fQ09ORklHLCBzaF9zdGF0aWNfbWVtX2NmZyk7CiAJfQog CWNpa19zcmJtX3NlbGVjdChhZGV2LCAwLCAwLCAwLCAwKTsKLQltdXRleF91bmxvY2soJmFkZXYt PnNyYm1fbXV0ZXgpOworCXNwaW5fdW5sb2NrKCZhZGV2LT5zcmJtX2xvY2spOwogCiAJZ21jX3Y3 XzBfaW5pdF9jb21wdXRlX3ZtaWQoYWRldik7CiAKIAlXUkVHMzIobW1TWF9ERUJVR18xLCAweDIw KTsKIAogCVdSRUczMihtbVRBX0NOVExfQVVYLCAweDAwMDEwMDAwKTsKIAogCXRtcCA9IFJSRUcz MihtbVNQSV9DT05GSUdfQ05UTCk7CiAJdG1wIHw9IDB4MDMwMDAwMDA7CiAJV1JFRzMyKG1tU1BJ X0NPTkZJR19DTlRMLCB0bXApOwpAQCAtMjk2Miw0MCArMjk2Miw0MCBAQCBzdHJ1Y3QgaHFkX3Jl Z2lzdGVycwogCXUzMiBjcF9ocWRfaHFfc2NoZWR1bGVyMTsKIAl1MzIgY3BfbXFkX2NvbnRyb2w7 CiB9OwogCiBzdGF0aWMgdm9pZCBnZnhfdjdfMF9jb21wdXRlX3BpcGVfaW5pdChzdHJ1Y3QgYW1k Z3B1X2RldmljZSAqYWRldiwgaW50IG1lLCBpbnQgcGlwZSkKIHsKIAl1NjQgZW9wX2dwdV9hZGRy OwogCXUzMiB0bXA7CiAJc2l6ZV90IGVvcF9vZmZzZXQgPSBtZSAqIHBpcGUgKiBHRlg3X01FQ19I UERfU0laRSAqIDI7CiAKLQltdXRleF9sb2NrKCZhZGV2LT5zcmJtX211dGV4KTsKKwlzcGluX2xv Y2soJmFkZXYtPnNyYm1fbG9jayk7CiAJZW9wX2dwdV9hZGRyID0gYWRldi0+Z2Z4Lm1lYy5ocGRf ZW9wX2dwdV9hZGRyICsgZW9wX29mZnNldDsKIAogCWNpa19zcmJtX3NlbGVjdChhZGV2LCBtZSwg cGlwZSwgMCwgMCk7CiAKIAkvKiB3cml0ZSB0aGUgRU9QIGFkZHIgKi8KIAlXUkVHMzIobW1DUF9I UERfRU9QX0JBU0VfQUREUiwgZW9wX2dwdV9hZGRyID4+IDgpOwogCVdSRUczMihtbUNQX0hQRF9F T1BfQkFTRV9BRERSX0hJLCB1cHBlcl8zMl9iaXRzKGVvcF9ncHVfYWRkcikgPj4gOCk7CiAKIAkv KiBzZXQgdGhlIFZNSUQgYXNzaWduZWQgKi8KIAlXUkVHMzIobW1DUF9IUERfRU9QX1ZNSUQsIDAp OwogCiAJLyogc2V0IHRoZSBFT1Agc2l6ZSwgcmVnaXN0ZXIgdmFsdWUgaXMgMl4oRU9QX1NJWkUr MSkgZHdvcmRzICovCiAJdG1wID0gUlJFRzMyKG1tQ1BfSFBEX0VPUF9DT05UUk9MKTsKIAl0bXAg Jj0gfkNQX0hQRF9FT1BfQ09OVFJPTF9fRU9QX1NJWkVfTUFTSzsKIAl0bXAgfD0gb3JkZXJfYmFz ZV8yKEdGWDdfTUVDX0hQRF9TSVpFIC8gOCk7CiAJV1JFRzMyKG1tQ1BfSFBEX0VPUF9DT05UUk9M LCB0bXApOwogCiAJY2lrX3NyYm1fc2VsZWN0KGFkZXYsIDAsIDAsIDAsIDApOwotCW11dGV4X3Vu bG9jaygmYWRldi0+c3JibV9tdXRleCk7CisJc3Bpbl91bmxvY2soJmFkZXYtPnNyYm1fbG9jayk7 CiB9CiAKIHN0YXRpYyBpbnQgZ2Z4X3Y3XzBfbXFkX2RlYWN0aXZhdGUoc3RydWN0IGFtZGdwdV9k ZXZpY2UgKmFkZXYpCiB7CiAJaW50IGk7CiAKIAkvKiBkaXNhYmxlIHRoZSBxdWV1ZSBpZiBpdCdz IGFjdGl2ZSAqLwogCWlmIChSUkVHMzIobW1DUF9IUURfQUNUSVZFKSAmIDEpIHsKIAkJV1JFRzMy KG1tQ1BfSFFEX0RFUVVFVUVfUkVRVUVTVCwgMSk7CiAJCWZvciAoaSA9IDA7IGkgPCBhZGV2LT51 c2VjX3RpbWVvdXQ7IGkrKykgewpAQCAtMzIxMCwyOSArMzIxMCwyOSBAQCBzdGF0aWMgaW50IGdm eF92N18wX2NvbXB1dGVfcXVldWVfaW5pdChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwgaW50 IHJpbmdfaWQpCiAJaWYgKHIpIHsKIAkJZGV2X3dhcm4oYWRldi0+ZGV2LCAiKCVkKSBwaW4gTVFE IGJvIGZhaWxlZFxuIiwgcik7CiAJCWdvdG8gb3V0X3VucmVzZXJ2ZTsKIAl9CiAJciA9IGFtZGdw dV9ib19rbWFwKHJpbmctPm1xZF9vYmosICh2b2lkICoqKSZtcWQpOwogCWlmIChyKSB7CiAJCWRl dl93YXJuKGFkZXYtPmRldiwgIiglZCkgbWFwIE1RRCBibyBmYWlsZWRcbiIsIHIpOwogCQlnb3Rv IG91dF91bnJlc2VydmU7CiAJfQogCi0JbXV0ZXhfbG9jaygmYWRldi0+c3JibV9tdXRleCk7CisJ c3Bpbl9sb2NrKCZhZGV2LT5zcmJtX2xvY2spOwogCWNpa19zcmJtX3NlbGVjdChhZGV2LCByaW5n LT5tZSwgcmluZy0+cGlwZSwgcmluZy0+cXVldWUsIDApOwogCiAJZ2Z4X3Y3XzBfbXFkX2luaXQo YWRldiwgbXFkLCBtcWRfZ3B1X2FkZHIsIHJpbmcpOwogCWdmeF92N18wX21xZF9kZWFjdGl2YXRl KGFkZXYpOwogCWdmeF92N18wX21xZF9jb21taXQoYWRldiwgbXFkKTsKIAogCWNpa19zcmJtX3Nl bGVjdChhZGV2LCAwLCAwLCAwLCAwKTsKLQltdXRleF91bmxvY2soJmFkZXYtPnNyYm1fbXV0ZXgp OworCXNwaW5fdW5sb2NrKCZhZGV2LT5zcmJtX2xvY2spOwogCiAJYW1kZ3B1X2JvX2t1bm1hcChy aW5nLT5tcWRfb2JqKTsKIG91dF91bnJlc2VydmU6CiAJYW1kZ3B1X2JvX3VucmVzZXJ2ZShyaW5n LT5tcWRfb2JqKTsKIG91dDoKIAlyZXR1cm4gMDsKIH0KIAogLyoqCiAgKiBnZnhfdjdfMF9jcF9j b21wdXRlX3Jlc3VtZSAtIHNldHVwIHRoZSBjb21wdXRlIHF1ZXVlIHJlZ2lzdGVycwpAQCAtNTA4 OSwyOCArNTA4OSwyOCBAQCBzdGF0aWMgdm9pZCBnZnhfdjdfMF9zZXRfY29tcHV0ZV9lb3BfaW50 ZXJydXB0X3N0YXRlKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAogCQlEUk1fRVJST1IoIkln bm9yaW5nIHJlcXVlc3QgdG8gZW5hYmxlIGludGVycnVwdHMgZm9yIGludmFsaWQgbWU6JWRcbiIs IG1lKTsKIAkJcmV0dXJuOwogCX0KIAogCWlmIChwaXBlID49IGFkZXYtPmdmeC5tZWMubnVtX3Bp cGVfcGVyX21lYykgewogCQlEUk1fRVJST1IoIklnbm9yaW5nIHJlcXVlc3QgdG8gZW5hYmxlIGlu dGVycnVwdHMgZm9yIGludmFsaWQgIgogCQkJCSJtZTolZCBwaXBlOiVkXG4iLCBwaXBlLCBtZSk7 CiAJCXJldHVybjsKIAl9CiAKLQltdXRleF9sb2NrKCZhZGV2LT5zcmJtX211dGV4KTsKKwlzcGlu X2xvY2soJmFkZXYtPnNyYm1fbG9jayk7CiAJY2lrX3NyYm1fc2VsZWN0KGFkZXYsIG1lLCBwaXBl LCAwLCAwKTsKIAogCVdSRUczMl9GSUVMRChDUENfSU5UX0NOVEwsIFRJTUVfU1RBTVBfSU5UX0VO QUJMRSwKIAkJCXN0YXRlID09IEFNREdQVV9JUlFfU1RBVEVfRElTQUJMRSA/IDAgOiAxKTsKIAog CWNpa19zcmJtX3NlbGVjdChhZGV2LCAwLCAwLCAwLCAwKTsKLQltdXRleF91bmxvY2soJmFkZXYt PnNyYm1fbXV0ZXgpOworCXNwaW5fdW5sb2NrKCZhZGV2LT5zcmJtX2xvY2spOwogfQogCiBzdGF0 aWMgaW50IGdmeF92N18wX3NldF9wcml2X3JlZ19mYXVsdF9zdGF0ZShzdHJ1Y3QgYW1kZ3B1X2Rl dmljZSAqYWRldiwKIAkJCQkJICAgICBzdHJ1Y3QgYW1kZ3B1X2lycV9zcmMgKnNyYywKIAkJCQkJ ICAgICB1bnNpZ25lZCB0eXBlLAogCQkJCQkgICAgIGVudW0gYW1kZ3B1X2ludGVycnVwdF9zdGF0 ZSBzdGF0ZSkKIHsKIAl1MzIgY3BfaW50X2NudGw7CiAKIAlzd2l0Y2ggKHN0YXRlKSB7CmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9nZnhfdjhfMC5jIGIvZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRncHUvZ2Z4X3Y4XzAuYwppbmRleCBkOWU1NGNmLi5mMTcyYjhkIDEwMDY0 NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9nZnhfdjhfMC5jCisrKyBiL2RyaXZl cnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2dmeF92OF8wLmMKQEAgLTM5MDgsMzEgKzM5MDgsMzEgQEAg c3RhdGljIHZvaWQgZ2Z4X3Y4XzBfaW5pdF9jb21wdXRlX3ZtaWQoc3RydWN0IGFtZGdwdV9kZXZp Y2UgKmFkZXYpCiAJICovCiAJc2hfbWVtX2Jhc2VzID0gREVGQVVMVF9TSF9NRU1fQkFTRVMgfCAo REVGQVVMVF9TSF9NRU1fQkFTRVMgPDwgMTYpOwogCiAJc2hfbWVtX2NvbmZpZyA9IFNIX01FTV9B RERSRVNTX01PREVfSFNBNjQgPDwKIAkJCVNIX01FTV9DT05GSUdfX0FERFJFU1NfTU9ERV9fU0hJ RlQgfAogCQkJU0hfTUVNX0FMSUdOTUVOVF9NT0RFX1VOQUxJR05FRCA8PAogCQkJU0hfTUVNX0NP TkZJR19fQUxJR05NRU5UX01PREVfX1NISUZUIHwKIAkJCU1UWVBFX0NDIDw8IFNIX01FTV9DT05G SUdfX0RFRkFVTFRfTVRZUEVfX1NISUZUIHwKIAkJCVNIX01FTV9DT05GSUdfX1BSSVZBVEVfQVRD X01BU0s7CiAKLQltdXRleF9sb2NrKCZhZGV2LT5zcmJtX211dGV4KTsKKwlzcGluX2xvY2soJmFk ZXYtPnNyYm1fbG9jayk7CiAJZm9yIChpID0gRklSU1RfQ09NUFVURV9WTUlEOyBpIDwgTEFTVF9D T01QVVRFX1ZNSUQ7IGkrKykgewogCQl2aV9zcmJtX3NlbGVjdChhZGV2LCAwLCAwLCAwLCBpKTsK IAkJLyogQ1AgYW5kIHNoYWRlcnMgKi8KIAkJV1JFRzMyKG1tU0hfTUVNX0NPTkZJRywgc2hfbWVt X2NvbmZpZyk7CiAJCVdSRUczMihtbVNIX01FTV9BUEUxX0JBU0UsIDEpOwogCQlXUkVHMzIobW1T SF9NRU1fQVBFMV9MSU1JVCwgMCk7CiAJCVdSRUczMihtbVNIX01FTV9CQVNFUywgc2hfbWVtX2Jh c2VzKTsKIAl9CiAJdmlfc3JibV9zZWxlY3QoYWRldiwgMCwgMCwgMCwgMCk7Ci0JbXV0ZXhfdW5s b2NrKCZhZGV2LT5zcmJtX211dGV4KTsKKwlzcGluX3VubG9jaygmYWRldi0+c3JibV9sb2NrKTsK IH0KIAogc3RhdGljIHZvaWQgZ2Z4X3Y4XzBfY29uZmlnX2luaXQoc3RydWN0IGFtZGdwdV9kZXZp Y2UgKmFkZXYpCiB7CiAJc3dpdGNoIChhZGV2LT5hc2ljX3R5cGUpIHsKIAlkZWZhdWx0OgogCQlh ZGV2LT5nZnguY29uZmlnLmRvdWJsZV9vZmZjaGlwX2xkc19idWYgPSAxOwogCQlicmVhazsKIAlj YXNlIENISVBfQ0FSUklaTzoKIAljYXNlIENISVBfU1RPTkVZOgpAQCAtMzk1NywyMSArMzk1Nywy MSBAQCBzdGF0aWMgdm9pZCBnZnhfdjhfMF9ncHVfaW5pdChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAq YWRldikKIAlnZnhfdjhfMF9jb25maWdfaW5pdChhZGV2KTsKIAogCS8qIFhYWCBTSF9NRU0gcmVn cyAqLwogCS8qIHdoZXJlIHRvIHB1dCBMRFMsIHNjcmF0Y2gsIEdQVVZNIGluIEZTQTY0IHNwYWNl ICovCiAJc2hfc3RhdGljX21lbV9jZmcgPSBSRUdfU0VUX0ZJRUxEKDAsIFNIX1NUQVRJQ19NRU1f Q09ORklHLAogCQkJCSAgIFNXSVpaTEVfRU5BQkxFLCAxKTsKIAlzaF9zdGF0aWNfbWVtX2NmZyA9 IFJFR19TRVRfRklFTEQoc2hfc3RhdGljX21lbV9jZmcsIFNIX1NUQVRJQ19NRU1fQ09ORklHLAog CQkJCSAgIEVMRU1FTlRfU0laRSwgMSk7CiAJc2hfc3RhdGljX21lbV9jZmcgPSBSRUdfU0VUX0ZJ RUxEKHNoX3N0YXRpY19tZW1fY2ZnLCBTSF9TVEFUSUNfTUVNX0NPTkZJRywKIAkJCQkgICBJTkRF WF9TVFJJREUsIDMpOwotCW11dGV4X2xvY2soJmFkZXYtPnNyYm1fbXV0ZXgpOworCXNwaW5fbG9j aygmYWRldi0+c3JibV9sb2NrKTsKIAlmb3IgKGkgPSAwOyBpIDwgYWRldi0+dm1fbWFuYWdlci5u dW1faWRzOyBpKyspIHsKIAkJdmlfc3JibV9zZWxlY3QoYWRldiwgMCwgMCwgMCwgaSk7CiAJCS8q IENQIGFuZCBzaGFkZXJzICovCiAJCWlmIChpID09IDApIHsKIAkJCXRtcCA9IFJFR19TRVRfRklF TEQoMCwgU0hfTUVNX0NPTkZJRywgREVGQVVMVF9NVFlQRSwgTVRZUEVfVUMpOwogCQkJdG1wID0g UkVHX1NFVF9GSUVMRCh0bXAsIFNIX01FTV9DT05GSUcsIEFQRTFfTVRZUEUsIE1UWVBFX1VDKTsK IAkJCXRtcCA9IFJFR19TRVRfRklFTEQodG1wLCBTSF9NRU1fQ09ORklHLCBBTElHTk1FTlRfTU9E RSwKIAkJCQkJICAgIFNIX01FTV9BTElHTk1FTlRfTU9ERV9VTkFMSUdORUQpOwogCQkJV1JFRzMy KG1tU0hfTUVNX0NPTkZJRywgdG1wKTsKIAkJCVdSRUczMihtbVNIX01FTV9CQVNFUywgMCk7CkBA IC0zOTgzLDIxICszOTgzLDIxIEBAIHN0YXRpYyB2b2lkIGdmeF92OF8wX2dwdV9pbml0KHN0cnVj dCBhbWRncHVfZGV2aWNlICphZGV2KQogCQkJV1JFRzMyKG1tU0hfTUVNX0NPTkZJRywgdG1wKTsK IAkJCXRtcCA9IGFkZXYtPm1jLnNoYXJlZF9hcGVydHVyZV9zdGFydCA+PiA0ODsKIAkJCVdSRUcz MihtbVNIX01FTV9CQVNFUywgdG1wKTsKIAkJfQogCiAJCVdSRUczMihtbVNIX01FTV9BUEUxX0JB U0UsIDEpOwogCQlXUkVHMzIobW1TSF9NRU1fQVBFMV9MSU1JVCwgMCk7CiAJCVdSRUczMihtbVNI X1NUQVRJQ19NRU1fQ09ORklHLCBzaF9zdGF0aWNfbWVtX2NmZyk7CiAJfQogCXZpX3NyYm1fc2Vs ZWN0KGFkZXYsIDAsIDAsIDAsIDApOwotCW11dGV4X3VubG9jaygmYWRldi0+c3JibV9tdXRleCk7 CisJc3Bpbl91bmxvY2soJmFkZXYtPnNyYm1fbG9jayk7CiAKIAlnZnhfdjhfMF9pbml0X2NvbXB1 dGVfdm1pZChhZGV2KTsKIAogCW11dGV4X2xvY2soJmFkZXYtPmdyYm1faWR4X211dGV4KTsKIAkv KgogCSAqIG1ha2luZyBzdXJlIHRoYXQgdGhlIGZvbGxvd2luZyByZWdpc3RlciB3cml0ZXMgd2ls bCBiZSBicm9hZGNhc3RlZAogCSAqIHRvIGFsbCB0aGUgc2hhZGVycwogCSAqLwogCWdmeF92OF8w X3NlbGVjdF9zZV9zaChhZGV2LCAweGZmZmZmZmZmLCAweGZmZmZmZmZmLCAweGZmZmZmZmZmKTsK IApAQCAtNTEyMiw3MCArNTEyMiw3MCBAQCBzdGF0aWMgaW50IGdmeF92OF8wX2tpcV9pbml0X3F1 ZXVlKHN0cnVjdCBhbWRncHVfcmluZyAqcmluZykKIAogCWlmIChhZGV2LT5nZnguaW5fcmVzZXQp IHsgLyogZm9yIEdQVV9SRVNFVCBjYXNlICovCiAJCS8qIHJlc2V0IE1RRCB0byBhIGNsZWFuIHN0 YXR1cyAqLwogCQlpZiAoYWRldi0+Z2Z4Lm1lYy5tcWRfYmFja3VwW21xZF9pZHhdKQogCQkJbWVt Y3B5KG1xZCwgYWRldi0+Z2Z4Lm1lYy5tcWRfYmFja3VwW21xZF9pZHhdLCBzaXplb2YoKm1xZCkp OwogCiAJCS8qIHJlc2V0IHJpbmcgYnVmZmVyICovCiAJCXJpbmctPndwdHIgPSAwOwogCQlhbWRn cHVfcmluZ19jbGVhcl9yaW5nKHJpbmcpOwogCi0JCW11dGV4X2xvY2soJmFkZXYtPnNyYm1fbXV0 ZXgpOworCQlzcGluX2xvY2soJmFkZXYtPnNyYm1fbG9jayk7CiAJCXZpX3NyYm1fc2VsZWN0KGFk ZXYsIHJpbmctPm1lLCByaW5nLT5waXBlLCByaW5nLT5xdWV1ZSwgMCk7CiAJCXIgPSBnZnhfdjhf MF9tcWRfZGVhY3RpdmF0ZShhZGV2KTsKIAkJaWYgKHIpIHsKIAkJCWRldl9lcnIoYWRldi0+ZGV2 LCAiZmFpbGVkIHRvIGRlYWN0aXZhdGUgcmluZyAlc1xuIiwgcmluZy0+bmFtZSk7CiAJCQlnb3Rv IG91dF91bmxvY2s7CiAJCX0KIAkJZ2Z4X3Y4XzBfZW5hYmxlX2Rvb3JiZWxsKGFkZXYsIHJpbmct PnVzZV9kb29yYmVsbCk7CiAJCWdmeF92OF8wX21xZF9jb21taXQoYWRldiwgbXFkKTsKIAkJdmlf c3JibV9zZWxlY3QoYWRldiwgMCwgMCwgMCwgMCk7Ci0JCW11dGV4X3VubG9jaygmYWRldi0+c3Ji bV9tdXRleCk7CisJCXNwaW5fdW5sb2NrKCZhZGV2LT5zcmJtX2xvY2spOwogCX0gZWxzZSB7Ci0J CW11dGV4X2xvY2soJmFkZXYtPnNyYm1fbXV0ZXgpOworCQlzcGluX2xvY2soJmFkZXYtPnNyYm1f bG9jayk7CiAJCXZpX3NyYm1fc2VsZWN0KGFkZXYsIHJpbmctPm1lLCByaW5nLT5waXBlLCByaW5n LT5xdWV1ZSwgMCk7CiAJCWdmeF92OF8wX21xZF9pbml0KHJpbmcpOwogCQlyID0gZ2Z4X3Y4XzBf bXFkX2RlYWN0aXZhdGUoYWRldik7CiAJCWlmIChyKSB7CiAJCQlkZXZfZXJyKGFkZXYtPmRldiwg ImZhaWxlZCB0byBkZWFjdGl2YXRlIHJpbmcgJXNcbiIsIHJpbmctPm5hbWUpOwogCQkJZ290byBv dXRfdW5sb2NrOwogCQl9CiAJCWdmeF92OF8wX2VuYWJsZV9kb29yYmVsbChhZGV2LCByaW5nLT51 c2VfZG9vcmJlbGwpOwogCQlnZnhfdjhfMF9tcWRfY29tbWl0KGFkZXYsIG1xZCk7CiAJCXZpX3Ny Ym1fc2VsZWN0KGFkZXYsIDAsIDAsIDAsIDApOwotCQltdXRleF91bmxvY2soJmFkZXYtPnNyYm1f bXV0ZXgpOworCQlzcGluX3VubG9jaygmYWRldi0+c3JibV9sb2NrKTsKIAogCQlpZiAoYWRldi0+ Z2Z4Lm1lYy5tcWRfYmFja3VwW21xZF9pZHhdKQogCQkJbWVtY3B5KGFkZXYtPmdmeC5tZWMubXFk X2JhY2t1cFttcWRfaWR4XSwgbXFkLCBzaXplb2YoKm1xZCkpOwogCX0KIAogCXJldHVybiByOwog CiBvdXRfdW5sb2NrOgogCXZpX3NyYm1fc2VsZWN0KGFkZXYsIDAsIDAsIDAsIDApOwotCW11dGV4 X3VubG9jaygmYWRldi0+c3JibV9tdXRleCk7CisJc3Bpbl91bmxvY2soJmFkZXYtPnNyYm1fbG9j ayk7CiAJcmV0dXJuIHI7CiB9CiAKIHN0YXRpYyBpbnQgZ2Z4X3Y4XzBfa2NxX2luaXRfcXVldWUo c3RydWN0IGFtZGdwdV9yaW5nICpyaW5nKQogewogCXN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2 ID0gcmluZy0+YWRldjsKIAlzdHJ1Y3QgdmlfbXFkICptcWQgPSByaW5nLT5tcWRfcHRyOwogCWlu dCBtcWRfaWR4ID0gcmluZyAtICZhZGV2LT5nZnguY29tcHV0ZV9yaW5nWzBdOwogCiAJaWYgKCFh ZGV2LT5nZnguaW5fcmVzZXQgJiYgIWFkZXYtPmdmeC5pbl9zdXNwZW5kKSB7CiAJCW1lbXNldCgo dm9pZCAqKW1xZCwgMCwgc2l6ZW9mKCptcWQpKTsKLQkJbXV0ZXhfbG9jaygmYWRldi0+c3JibV9t dXRleCk7CisJCXNwaW5fbG9jaygmYWRldi0+c3JibV9sb2NrKTsKIAkJdmlfc3JibV9zZWxlY3Qo YWRldiwgcmluZy0+bWUsIHJpbmctPnBpcGUsIHJpbmctPnF1ZXVlLCAwKTsKIAkJZ2Z4X3Y4XzBf bXFkX2luaXQocmluZyk7CiAJCXZpX3NyYm1fc2VsZWN0KGFkZXYsIDAsIDAsIDAsIDApOwotCQlt dXRleF91bmxvY2soJmFkZXYtPnNyYm1fbXV0ZXgpOworCQlzcGluX3VubG9jaygmYWRldi0+c3Ji bV9sb2NrKTsKIAogCQlpZiAoYWRldi0+Z2Z4Lm1lYy5tcWRfYmFja3VwW21xZF9pZHhdKQogCQkJ bWVtY3B5KGFkZXYtPmdmeC5tZWMubXFkX2JhY2t1cFttcWRfaWR4XSwgbXFkLCBzaXplb2YoKm1x ZCkpOwogCX0gZWxzZSBpZiAoYWRldi0+Z2Z4LmluX3Jlc2V0KSB7IC8qIGZvciBHUFVfUkVTRVQg Y2FzZSAqLwogCQkvKiByZXNldCBNUUQgdG8gYSBjbGVhbiBzdGF0dXMgKi8KIAkJaWYgKGFkZXYt PmdmeC5tZWMubXFkX2JhY2t1cFttcWRfaWR4XSkKIAkJCW1lbWNweShtcWQsIGFkZXYtPmdmeC5t ZWMubXFkX2JhY2t1cFttcWRfaWR4XSwgc2l6ZW9mKCptcWQpKTsKIAogCQkvKiByZXNldCByaW5n IGJ1ZmZlciAqLwogCQlyaW5nLT53cHRyID0gMDsKQEAgLTY4NTYsMjggKzY4NTYsMjggQEAgc3Rh dGljIHZvaWQgZ2Z4X3Y4XzBfc2V0X2NvbXB1dGVfZW9wX2ludGVycnVwdF9zdGF0ZShzdHJ1Y3Qg YW1kZ3B1X2RldmljZSAqYWRldiwKIAkJRFJNX0VSUk9SKCJJZ25vcmluZyByZXF1ZXN0IHRvIGVu YWJsZSBpbnRlcnJ1cHRzIGZvciBpbnZhbGlkIG1lOiVkXG4iLCBtZSk7CiAJCXJldHVybjsKIAl9 CiAKIAlpZiAocGlwZSA+PSBhZGV2LT5nZngubWVjLm51bV9waXBlX3Blcl9tZWMpIHsKIAkJRFJN X0VSUk9SKCJJZ25vcmluZyByZXF1ZXN0IHRvIGVuYWJsZSBpbnRlcnJ1cHRzIGZvciBpbnZhbGlk ICIKIAkJCQkibWU6JWQgcGlwZTolZFxuIiwgcGlwZSwgbWUpOwogCQlyZXR1cm47CiAJfQogCi0J bXV0ZXhfbG9jaygmYWRldi0+c3JibV9tdXRleCk7CisJc3Bpbl9sb2NrKCZhZGV2LT5zcmJtX2xv Y2spOwogCXZpX3NyYm1fc2VsZWN0KGFkZXYsIG1lLCBwaXBlLCAwLCAwKTsKIAogCVdSRUczMl9G SUVMRChDUENfSU5UX0NOVEwsIFRJTUVfU1RBTVBfSU5UX0VOQUJMRSwKIAkJCXN0YXRlID09IEFN REdQVV9JUlFfU1RBVEVfRElTQUJMRSA/IDAgOiAxKTsKIAogCXZpX3NyYm1fc2VsZWN0KGFkZXYs IDAsIDAsIDAsIDApOwotCW11dGV4X3VubG9jaygmYWRldi0+c3JibV9tdXRleCk7CisJc3Bpbl91 bmxvY2soJmFkZXYtPnNyYm1fbG9jayk7CiB9CiAKIHN0YXRpYyBpbnQgZ2Z4X3Y4XzBfc2V0X3By aXZfcmVnX2ZhdWx0X3N0YXRlKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAogCQkJCQkgICAg IHN0cnVjdCBhbWRncHVfaXJxX3NyYyAqc291cmNlLAogCQkJCQkgICAgIHVuc2lnbmVkIHR5cGUs CiAJCQkJCSAgICAgZW51bSBhbWRncHVfaW50ZXJydXB0X3N0YXRlIHN0YXRlKQogewogCVdSRUcz Ml9GSUVMRChDUF9JTlRfQ05UTF9SSU5HMCwgUFJJVl9SRUdfSU5UX0VOQUJMRSwKIAkJICAgICBz dGF0ZSA9PSBBTURHUFVfSVJRX1NUQVRFX0RJU0FCTEUgPyAwIDogMSk7CiAKZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2dmeF92OV8wLmMgYi9kcml2ZXJzL2dwdS9kcm0v YW1kL2FtZGdwdS9nZnhfdjlfMC5jCmluZGV4IDBjNjljNjguLmQ2OGM3YTYgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2dmeF92OV8wLmMKKysrIGIvZHJpdmVycy9ncHUv ZHJtL2FtZC9hbWRncHUvZ2Z4X3Y5XzAuYwpAQCAtMTM0NSw2MCArMTM0NSw2MCBAQCBzdGF0aWMg dm9pZCBnZnhfdjlfMF9pbml0X2NvbXB1dGVfdm1pZChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRl dikKIAkgKiBMRFM6ICAgICAgICAgMHg2MDAwMDAwMCcwMDAwMDAwMCAtIDB4NjAwMDAwMDEnMDAw MDAwMDAgKDRHQikKIAkgKiBTY3JhdGNoOiAgICAgMHg2MDAwMDAwMScwMDAwMDAwMCAtIDB4NjAw MDAwMDInMDAwMDAwMDAgKDRHQikKIAkgKiBHUFVWTTogICAgICAgMHg2MDAxMDAwMCcwMDAwMDAw MCAtIDB4NjAwMjAwMDAnMDAwMDAwMDAgKDFUQikKIAkgKi8KIAlzaF9tZW1fYmFzZXMgPSBERUZB VUxUX1NIX01FTV9CQVNFUyB8IChERUZBVUxUX1NIX01FTV9CQVNFUyA8PCAxNik7CiAKIAlzaF9t ZW1fY29uZmlnID0gU0hfTUVNX0FERFJFU1NfTU9ERV82NCB8CiAJCQlTSF9NRU1fQUxJR05NRU5U X01PREVfVU5BTElHTkVEIDw8CiAJCQlTSF9NRU1fQ09ORklHX19BTElHTk1FTlRfTU9ERV9fU0hJ RlQ7IAogCi0JbXV0ZXhfbG9jaygmYWRldi0+c3JibV9tdXRleCk7CisJc3Bpbl9sb2NrKCZhZGV2 LT5zcmJtX2xvY2spOwogCWZvciAoaSA9IEZJUlNUX0NPTVBVVEVfVk1JRDsgaSA8IExBU1RfQ09N UFVURV9WTUlEOyBpKyspIHsKIAkJc29jMTVfZ3JibV9zZWxlY3QoYWRldiwgMCwgMCwgMCwgaSk7 CiAJCS8qIENQIGFuZCBzaGFkZXJzICovCiAJCVdSRUczMihTT0MxNV9SRUdfT0ZGU0VUKEdDLCAw LCBtbVNIX01FTV9DT05GSUcpLCBzaF9tZW1fY29uZmlnKTsKIAkJV1JFRzMyKFNPQzE1X1JFR19P RkZTRVQoR0MsIDAsIG1tU0hfTUVNX0JBU0VTKSwgc2hfbWVtX2Jhc2VzKTsKIAl9CiAJc29jMTVf Z3JibV9zZWxlY3QoYWRldiwgMCwgMCwgMCwgMCk7Ci0JbXV0ZXhfdW5sb2NrKCZhZGV2LT5zcmJt X211dGV4KTsKKwlzcGluX3VubG9jaygmYWRldi0+c3JibV9sb2NrKTsKIH0KIAogc3RhdGljIHZv aWQgZ2Z4X3Y5XzBfZ3B1X2luaXQoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpCiB7CiAJdTMy IHRtcDsKIAlpbnQgaTsKIAogCXRtcCA9IFJSRUczMihTT0MxNV9SRUdfT0ZGU0VUKEdDLCAwLCBt bUdSQk1fQ05UTCkpOwogCXRtcCA9IFJFR19TRVRfRklFTEQodG1wLCBHUkJNX0NOVEwsIFJFQURf VElNRU9VVCwgMHhmZik7CiAJV1JFRzMyKFNPQzE1X1JFR19PRkZTRVQoR0MsIDAsIG1tR1JCTV9D TlRMKSwgdG1wKTsKIAogCWdmeF92OV8wX3RpbGluZ19tb2RlX3RhYmxlX2luaXQoYWRldik7CiAK IAlnZnhfdjlfMF9zZXR1cF9yYihhZGV2KTsKIAlnZnhfdjlfMF9nZXRfY3VfaW5mbyhhZGV2LCAm YWRldi0+Z2Z4LmN1X2luZm8pOwogCiAJLyogWFhYIFNIX01FTSByZWdzICovCiAJLyogd2hlcmUg dG8gcHV0IExEUywgc2NyYXRjaCwgR1BVVk0gaW4gRlNBNjQgc3BhY2UgKi8KLQltdXRleF9sb2Nr KCZhZGV2LT5zcmJtX211dGV4KTsKKwlzcGluX2xvY2soJmFkZXYtPnNyYm1fbG9jayk7CiAJZm9y IChpID0gMDsgaSA8IDE2OyBpKyspIHsKIAkJc29jMTVfZ3JibV9zZWxlY3QoYWRldiwgMCwgMCwg MCwgaSk7CiAJCS8qIENQIGFuZCBzaGFkZXJzICovCiAJCXRtcCA9IDA7CiAJCXRtcCA9IFJFR19T RVRfRklFTEQodG1wLCBTSF9NRU1fQ09ORklHLCBBTElHTk1FTlRfTU9ERSwKIAkJCQkgICAgU0hf TUVNX0FMSUdOTUVOVF9NT0RFX1VOQUxJR05FRCk7CiAJCVdSRUczMihTT0MxNV9SRUdfT0ZGU0VU KEdDLCAwLCBtbVNIX01FTV9DT05GSUcpLCB0bXApOwogCQlXUkVHMzIoU09DMTVfUkVHX09GRlNF VChHQywgMCwgbW1TSF9NRU1fQkFTRVMpLCAwKTsKIAl9CiAJc29jMTVfZ3JibV9zZWxlY3QoYWRl diwgMCwgMCwgMCwgMCk7CiAKLQltdXRleF91bmxvY2soJmFkZXYtPnNyYm1fbXV0ZXgpOworCXNw aW5fdW5sb2NrKCZhZGV2LT5zcmJtX2xvY2spOwogCiAJZ2Z4X3Y5XzBfaW5pdF9jb21wdXRlX3Zt aWQoYWRldik7CiAKIAltdXRleF9sb2NrKCZhZGV2LT5ncmJtX2lkeF9tdXRleCk7CiAJLyoKIAkg KiBtYWtpbmcgc3VyZSB0aGF0IHRoZSBmb2xsb3dpbmcgcmVnaXN0ZXIgd3JpdGVzIHdpbGwgYmUg YnJvYWRjYXN0ZWQKIAkgKiB0byBhbGwgdGhlIHNoYWRlcnMKIAkgKi8KIAlnZnhfdjlfMF9zZWxl Y3Rfc2Vfc2goYWRldiwgMHhmZmZmZmZmZiwgMHhmZmZmZmZmZiwgMHhmZmZmZmZmZik7CiAKQEAg LTIyMzUsNDAgKzIyMzUsNDAgQEAgc3RhdGljIGludCBnZnhfdjlfMF9raXFfaW5pdF9xdWV1ZShz dHJ1Y3QgYW1kZ3B1X3JpbmcgKnJpbmcpCiAJaW50IG1xZF9pZHggPSBBTURHUFVfTUFYX0NPTVBV VEVfUklOR1M7CiAKIAlpZiAoaXNfa2lxKSB7CiAJCWdmeF92OV8wX2tpcV9zZXR0aW5nKCZraXEt PnJpbmcpOwogCX0gZWxzZSB7CiAJCW1xZF9pZHggPSByaW5nIC0gJmFkZXYtPmdmeC5jb21wdXRl X3JpbmdbMF07CiAJfQogCiAJaWYgKCFhZGV2LT5nZnguaW5fcmVzZXQpIHsKIAkJbWVtc2V0KCh2 b2lkICopbXFkLCAwLCBzaXplb2YoKm1xZCkpOwotCQltdXRleF9sb2NrKCZhZGV2LT5zcmJtX211 dGV4KTsKKwkJc3Bpbl9sb2NrKCZhZGV2LT5zcmJtX2xvY2spOwogCQlzb2MxNV9ncmJtX3NlbGVj dChhZGV2LCByaW5nLT5tZSwgcmluZy0+cGlwZSwgcmluZy0+cXVldWUsIDApOwogCQlnZnhfdjlf MF9tcWRfaW5pdChyaW5nKTsKIAkJaWYgKGlzX2tpcSkKIAkJCWdmeF92OV8wX2tpcV9pbml0X3Jl Z2lzdGVyKHJpbmcpOwogCQlzb2MxNV9ncmJtX3NlbGVjdChhZGV2LCAwLCAwLCAwLCAwKTsKLQkJ bXV0ZXhfdW5sb2NrKCZhZGV2LT5zcmJtX211dGV4KTsKKwkJc3Bpbl91bmxvY2soJmFkZXYtPnNy Ym1fbG9jayk7CiAKIAl9IGVsc2UgeyAvKiBmb3IgR1BVX1JFU0VUIGNhc2UgKi8KIAkJLyogcmVz ZXQgTVFEIHRvIGEgY2xlYW4gc3RhdHVzICovCiAKIAkJLyogcmVzZXQgcmluZyBidWZmZXIgKi8K IAkJcmluZy0+d3B0ciA9IDA7CiAKIAkJaWYgKGlzX2tpcSkgewotCQkgICAgbXV0ZXhfbG9jaygm YWRldi0+c3JibV9tdXRleCk7CisJCSAgICBzcGluX2xvY2soJmFkZXYtPnNyYm1fbG9jayk7CiAJ CSAgICBzb2MxNV9ncmJtX3NlbGVjdChhZGV2LCByaW5nLT5tZSwgcmluZy0+cGlwZSwgcmluZy0+ cXVldWUsIDApOwogCQkgICAgZ2Z4X3Y5XzBfa2lxX2luaXRfcmVnaXN0ZXIocmluZyk7CiAJCSAg ICBzb2MxNV9ncmJtX3NlbGVjdChhZGV2LCAwLCAwLCAwLCAwKTsKLQkJICAgIG11dGV4X3VubG9j aygmYWRldi0+c3JibV9tdXRleCk7CisJCSAgICBzcGluX3VubG9jaygmYWRldi0+c3JibV9sb2Nr KTsKIAkJfQogCX0KIAogCWlmIChpc19raXEpCiAJCWdmeF92OV8wX2tpcV9lbmFibGUocmluZyk7 CiAJZWxzZQogCQlnZnhfdjlfMF9tYXBfcXVldWVfZW5hYmxlKCZraXEtPnJpbmcsIHJpbmcpOwog CiAJcmV0dXJuIDA7CiB9CkBAIC0yNjE2LDMxICsyNjE2LDMxIEBAIHN0YXRpYyB2b2lkIGdmeF92 OV8wX3ByaW50X3N0YXR1cyh2b2lkICpoYW5kbGUpCiAJCSBSUkVHMzIoU09DMTVfUkVHX09GRlNF VChHQywgMCwgbW1STENfTEJfQ05UTCkpKTsKIAlkZXZfaW5mbyhhZGV2LT5kZXYsICIgIFJMQ19V Q09ERV9DTlRMPTB4JTA4WFxuIiwKIAkJIFJSRUczMihTT0MxNV9SRUdfT0ZGU0VUKEdDLCAwLCBt bVJMQ19VQ09ERV9DTlRMKSkpOwogCiAJZGV2X2luZm8oYWRldi0+ZGV2LCAiICBSTENfR1BNX0dF TkVSQUxfNj0weCUwOFhcbiIsCiAJCSBSUkVHMzIoU09DMTVfUkVHX09GRlNFVChHQywgMCwgbW1S TENfR1BNX0dFTkVSQUxfNikpKTsKIAlkZXZfaW5mbyhhZGV2LT5kZXYsICIgIFJMQ19HUE1fR0VO RVJBTF8xMj0weCUwOFhcbiIsCiAJCSBSUkVHMzIoU09DMTVfUkVHX09GRlNFVChHQywgMCwgbW1S TENfR1BNX0dFTkVSQUxfMTIpKSk7CiAJZGV2X2luZm8oYWRldi0+ZGV2LCAiICBSTENfR1BNX1RJ TUVSX0lOVF8zPTB4JTA4WFxuIiwKIAkJIFJSRUczMihTT0MxNV9SRUdfT0ZGU0VUKEdDLCAwLCBt bVJMQ19HUE1fVElNRVJfSU5UXzMpKSk7Ci0JbXV0ZXhfbG9jaygmYWRldi0+c3JibV9tdXRleCk7 CisJc3Bpbl9sb2NrKCZhZGV2LT5zcmJtX2xvY2spOwogCWZvciAoaSA9IDA7IGkgPCAxNjsgaSsr KSB7CiAJCXNvYzE1X2dyYm1fc2VsZWN0KGFkZXYsIDAsIDAsIDAsIGkpOwogCQlkZXZfaW5mbyhh ZGV2LT5kZXYsICIgIFZNICVkOlxuIiwgaSk7CiAJCWRldl9pbmZvKGFkZXYtPmRldiwgIiAgU0hf TUVNX0NPTkZJRz0weCUwOFhcbiIsCiAJCQkgUlJFRzMyKFNPQzE1X1JFR19PRkZTRVQoR0MsIDAs IG1tU0hfTUVNX0NPTkZJRykpKTsKIAkJZGV2X2luZm8oYWRldi0+ZGV2LCAiICBTSF9NRU1fQkFT RVM9MHglMDhYXG4iLAogCQkJIFJSRUczMihTT0MxNV9SRUdfT0ZGU0VUKEdDLCAwLCBtbVNIX01F TV9CQVNFUykpKTsKIAl9CiAJc29jMTVfZ3JibV9zZWxlY3QoYWRldiwgMCwgMCwgMCwgMCk7Ci0J bXV0ZXhfdW5sb2NrKCZhZGV2LT5zcmJtX211dGV4KTsKKwlzcGluX3VubG9jaygmYWRldi0+c3Ji bV9sb2NrKTsKIH0KIAogc3RhdGljIGludCBnZnhfdjlfMF9zb2Z0X3Jlc2V0KHZvaWQgKmhhbmRs ZSkKIHsKIAl1MzIgZ3JibV9zb2Z0X3Jlc2V0ID0gMDsKIAl1MzIgdG1wOwogCXN0cnVjdCBhbWRn cHVfZGV2aWNlICphZGV2ID0gKHN0cnVjdCBhbWRncHVfZGV2aWNlICopaGFuZGxlOwogCiAJLyog R1JCTV9TVEFUVVMgKi8KIAl0bXAgPSBSUkVHMzIoU09DMTVfUkVHX09GRlNFVChHQywgMCwgbW1H UkJNX1NUQVRVUykpOwpAQCAtNDA0NCwyMSArNDA0NCwyMSBAQCBzdGF0aWMgaW50IGdmeF92OV8w X2luaXRfcXVldWUoc3RydWN0IGFtZGdwdV9yaW5nICpyaW5nKQogCW1lbXNldChidWYsIDAsIHNp emVvZihzdHJ1Y3QgdjlfbXFkKSk7CiAKIAltcWQgPSAoc3RydWN0IHY5X21xZCAqKWJ1ZjsKIAlt cWQtPmhlYWRlciA9IDB4QzAzMTA4MDA7CiAJbXFkLT5jb21wdXRlX3BpcGVsaW5lc3RhdF9lbmFi bGUgPSAweDAwMDAwMDAxOwogCW1xZC0+Y29tcHV0ZV9zdGF0aWNfdGhyZWFkX21nbXRfc2UwID0g MHhmZmZmZmZmZjsKIAltcWQtPmNvbXB1dGVfc3RhdGljX3RocmVhZF9tZ210X3NlMSA9IDB4ZmZm ZmZmZmY7CiAJbXFkLT5jb21wdXRlX3N0YXRpY190aHJlYWRfbWdtdF9zZTIgPSAweGZmZmZmZmZm OwogCW1xZC0+Y29tcHV0ZV9zdGF0aWNfdGhyZWFkX21nbXRfc2UzID0gMHhmZmZmZmZmZjsKIAlt cWQtPmNvbXB1dGVfbWlzY19yZXNlcnZlZCA9IDB4MDAwMDAwMDM7Ci0JbXV0ZXhfbG9jaygmYWRl di0+c3JibV9tdXRleCk7CisJc3Bpbl9sb2NrKCZhZGV2LT5zcmJtX2xvY2spOwogCXNvYzE1X2dy Ym1fc2VsZWN0KGFkZXYsIHJpbmctPm1lLAogCQkJICAgICAgIHJpbmctPnBpcGUsCiAJCQkgICAg ICAgcmluZy0+cXVldWUsIDApOwogCS8qIGRpc2FibGUgd3B0ciBwb2xsaW5nICovCiAJdG1wID0g UlJFRzMyKFNPQzE1X1JFR19PRkZTRVQoR0MsIDAsIG1tQ1BfUFFfV1BUUl9QT0xMX0NOVEwpKTsK IAl0bXAgPSBSRUdfU0VUX0ZJRUxEKHRtcCwgQ1BfUFFfV1BUUl9QT0xMX0NOVEwsIEVOLCAwKTsK IAlXUkVHMzIoU09DMTVfUkVHX09GRlNFVChHQywgMCwgbW1DUF9QUV9XUFRSX1BPTExfQ05UTCks IHRtcCk7CiAKIAkvKiB3cml0ZSB0aGUgRU9QIGFkZHIgKi8KIAlCVUdfT04ocmluZy0+bWUgIT0g MSB8fCByaW5nLT5waXBlICE9IDApOyAvKiBjYW4ndCBoYW5kbGUgb3RoZXIgY2FzZXMgZW9wIGFk ZHJlc3MgKi8KQEAgLTQxOTAsMjEgKzQxOTAsMjEgQEAgc3RhdGljIGludCBnZnhfdjlfMF9pbml0 X3F1ZXVlKHN0cnVjdCBhbWRncHVfcmluZyAqcmluZykKIAl0bXAgPSBSUkVHMzIoU09DMTVfUkVH X09GRlNFVChHQywgMCwgbW1DUF9IUURfUEVSU0lTVEVOVF9TVEFURSkpOwogCXRtcCA9IFJFR19T RVRfRklFTEQodG1wLCBDUF9IUURfUEVSU0lTVEVOVF9TVEFURSwgUFJFTE9BRF9TSVpFLCAweDUz KTsKIAlXUkVHMzIoU09DMTVfUkVHX09GRlNFVChHQywgMCwgbW1DUF9IUURfUEVSU0lTVEVOVF9T VEFURSksIHRtcCk7CiAJbXFkLT5jcF9ocWRfcGVyc2lzdGVudF9zdGF0ZSA9IHRtcDsKIAogCS8q IGFjdGl2YXRlIHRoZSBxdWV1ZSAqLwogCW1xZC0+Y3BfaHFkX2FjdGl2ZSA9IDE7CiAJV1JFRzMy KFNPQzE1X1JFR19PRkZTRVQoR0MsIDAsIG1tQ1BfSFFEX0FDVElWRSksIG1xZC0+Y3BfaHFkX2Fj dGl2ZSk7CiAKIAlzb2MxNV9ncmJtX3NlbGVjdChhZGV2LCAwLCAwLCAwLCAwKTsKLQltdXRleF91 bmxvY2soJmFkZXYtPnNyYm1fbXV0ZXgpOworCXNwaW5fdW5sb2NrKCZhZGV2LT5zcmJtX2xvY2sp OwogCiAJYW1kZ3B1X2JvX2t1bm1hcChyaW5nLT5tcWRfb2JqKTsKIAlhbWRncHVfYm9fdW5yZXNl cnZlKHJpbmctPm1xZF9vYmopOwogCiAJaWYgKHVzZV9kb29yYmVsbCkgewogCQl0bXAgPSBSUkVH MzIoU09DMTVfUkVHX09GRlNFVChHQywgMCwgbW1DUF9QUV9TVEFUVVMpKTsKIAkJdG1wID0gUkVH X1NFVF9GSUVMRCh0bXAsIENQX1BRX1NUQVRVUywgRE9PUkJFTExfRU5BQkxFLCAxKTsKIAkJV1JF RzMyKFNPQzE1X1JFR19PRkZTRVQoR0MsIDAsIG1tQ1BfUFFfU1RBVFVTKSwgdG1wKTsKIAl9CiAK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3NkbWFfdjJfNC5jIGIvZHJp dmVycy9ncHUvZHJtL2FtZC9hbWRncHUvc2RtYV92Ml80LmMKaW5kZXggZjJkMDcxMC4uMGUwZTM0 NCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvc2RtYV92Ml80LmMKKysr IGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvc2RtYV92Ml80LmMKQEAgLTQxNSwyOSArNDE1 LDI5IEBAIHN0YXRpYyBpbnQgc2RtYV92Ml80X2dmeF9yZXN1bWUoc3RydWN0IGFtZGdwdV9kZXZp Y2UgKmFkZXYpCiAJc3RydWN0IGFtZGdwdV9yaW5nICpyaW5nOwogCXUzMiByYl9jbnRsLCBpYl9j bnRsOwogCXUzMiByYl9idWZzejsKIAl1MzIgd2Jfb2Zmc2V0OwogCWludCBpLCBqLCByOwogCiAJ Zm9yIChpID0gMDsgaSA8IGFkZXYtPnNkbWEubnVtX2luc3RhbmNlczsgaSsrKSB7CiAJCXJpbmcg PSAmYWRldi0+c2RtYS5pbnN0YW5jZVtpXS5yaW5nOwogCQl3Yl9vZmZzZXQgPSAocmluZy0+cnB0 cl9vZmZzICogNCk7CiAKLQkJbXV0ZXhfbG9jaygmYWRldi0+c3JibV9tdXRleCk7CisJCXNwaW5f bG9jaygmYWRldi0+c3JibV9sb2NrKTsKIAkJZm9yIChqID0gMDsgaiA8IDE2OyBqKyspIHsKIAkJ CXZpX3NyYm1fc2VsZWN0KGFkZXYsIDAsIDAsIDAsIGopOwogCQkJLyogU0RNQSBHRlggKi8KIAkJ CVdSRUczMihtbVNETUEwX0dGWF9WSVJUVUFMX0FERFIgKyBzZG1hX29mZnNldHNbaV0sIDApOwog CQkJV1JFRzMyKG1tU0RNQTBfR0ZYX0FQRTFfQ05UTCArIHNkbWFfb2Zmc2V0c1tpXSwgMCk7CiAJ CX0KIAkJdmlfc3JibV9zZWxlY3QoYWRldiwgMCwgMCwgMCwgMCk7Ci0JCW11dGV4X3VubG9jaygm YWRldi0+c3JibV9tdXRleCk7CisJCXNwaW5fdW5sb2NrKCZhZGV2LT5zcmJtX2xvY2spOwogCiAJ CVdSRUczMihtbVNETUEwX1RJTElOR19DT05GSUcgKyBzZG1hX29mZnNldHNbaV0sCiAJCSAgICAg ICBhZGV2LT5nZnguY29uZmlnLmdiX2FkZHJfY29uZmlnICYgMHg3MCk7CiAKIAkJV1JFRzMyKG1t U0RNQTBfU0VNX1dBSVRfRkFJTF9USU1FUl9DTlRMICsgc2RtYV9vZmZzZXRzW2ldLCAwKTsKIAog CQkvKiBTZXQgcmluZyBidWZmZXIgc2l6ZSBpbiBkd29yZHMgKi8KIAkJcmJfYnVmc3ogPSBvcmRl cl9iYXNlXzIocmluZy0+cmluZ19zaXplIC8gNCk7CiAJCXJiX2NudGwgPSBSUkVHMzIobW1TRE1B MF9HRlhfUkJfQ05UTCArIHNkbWFfb2Zmc2V0c1tpXSk7CiAJCXJiX2NudGwgPSBSRUdfU0VUX0ZJ RUxEKHJiX2NudGwsIFNETUEwX0dGWF9SQl9DTlRMLCBSQl9TSVpFLCByYl9idWZzeik7CmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9zZG1hX3YzXzAuYyBiL2RyaXZlcnMv Z3B1L2RybS9hbWQvYW1kZ3B1L3NkbWFfdjNfMC5jCmluZGV4IGE2OWU1ZDQuLmY4YTVkYTMgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3NkbWFfdjNfMC5jCisrKyBiL2Ry aXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L3NkbWFfdjNfMC5jCkBAIC02MDksMjkgKzYwOSwyOSBA QCBzdGF0aWMgaW50IHNkbWFfdjNfMF9nZnhfcmVzdW1lKHN0cnVjdCBhbWRncHVfZGV2aWNlICph ZGV2KQogCXUzMiByYl9idWZzejsKIAl1MzIgd2Jfb2Zmc2V0OwogCXUzMiBkb29yYmVsbDsKIAlp bnQgaSwgaiwgcjsKIAogCWZvciAoaSA9IDA7IGkgPCBhZGV2LT5zZG1hLm51bV9pbnN0YW5jZXM7 IGkrKykgewogCQlyaW5nID0gJmFkZXYtPnNkbWEuaW5zdGFuY2VbaV0ucmluZzsKIAkJYW1kZ3B1 X3JpbmdfY2xlYXJfcmluZyhyaW5nKTsKIAkJd2Jfb2Zmc2V0ID0gKHJpbmctPnJwdHJfb2ZmcyAq IDQpOwogCi0JCW11dGV4X2xvY2soJmFkZXYtPnNyYm1fbXV0ZXgpOworCQlzcGluX2xvY2soJmFk ZXYtPnNyYm1fbG9jayk7CiAJCWZvciAoaiA9IDA7IGogPCAxNjsgaisrKSB7CiAJCQl2aV9zcmJt X3NlbGVjdChhZGV2LCAwLCAwLCAwLCBqKTsKIAkJCS8qIFNETUEgR0ZYICovCiAJCQlXUkVHMzIo bW1TRE1BMF9HRlhfVklSVFVBTF9BRERSICsgc2RtYV9vZmZzZXRzW2ldLCAwKTsKIAkJCVdSRUcz MihtbVNETUEwX0dGWF9BUEUxX0NOVEwgKyBzZG1hX29mZnNldHNbaV0sIDApOwogCQl9CiAJCXZp X3NyYm1fc2VsZWN0KGFkZXYsIDAsIDAsIDAsIDApOwotCQltdXRleF91bmxvY2soJmFkZXYtPnNy Ym1fbXV0ZXgpOworCQlzcGluX3VubG9jaygmYWRldi0+c3JibV9sb2NrKTsKIAogCQlXUkVHMzIo bW1TRE1BMF9USUxJTkdfQ09ORklHICsgc2RtYV9vZmZzZXRzW2ldLAogCQkgICAgICAgYWRldi0+ Z2Z4LmNvbmZpZy5nYl9hZGRyX2NvbmZpZyAmIDB4NzApOwogCiAJCVdSRUczMihtbVNETUEwX1NF TV9XQUlUX0ZBSUxfVElNRVJfQ05UTCArIHNkbWFfb2Zmc2V0c1tpXSwgMCk7CiAKIAkJLyogU2V0 IHJpbmcgYnVmZmVyIHNpemUgaW4gZHdvcmRzICovCiAJCXJiX2J1ZnN6ID0gb3JkZXJfYmFzZV8y KHJpbmctPnJpbmdfc2l6ZSAvIDQpOwogCQlyYl9jbnRsID0gUlJFRzMyKG1tU0RNQTBfR0ZYX1JC X0NOVEwgKyBzZG1hX29mZnNldHNbaV0pOwogCQlyYl9jbnRsID0gUkVHX1NFVF9GSUVMRChyYl9j bnRsLCBTRE1BMF9HRlhfUkJfQ05UTCwgUkJfU0laRSwgcmJfYnVmc3opOwotLSAKMi45LjMKCl9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmFtZC1nZnggbWFp bGluZyBsaXN0CmFtZC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJl ZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vYW1kLWdmeAo=