From mboxrd@z Thu Jan 1 00:00:00 1970 From: Michael Hanselmann Subject: Locking fixes for powermac backlight infrastructure Date: Sat, 8 Jul 2006 14:06:37 +0200 Message-ID: <20060708120637.GA23909@hansmi.ch> Reply-To: linux-fbdev-devel@lists.sourceforge.net Mime-Version: 1.0 Content-Transfer-Encoding: base64 Return-path: Received: from sc8-sf-mx1-b.sourceforge.net ([10.3.1.91] helo=mail.sourceforge.net) by sc8-sf-list1-new.sourceforge.net with esmtp (Exim 4.43) id 1FzBaC-0007KQ-LJ for linux-fbdev-devel@lists.sourceforge.net; Sat, 08 Jul 2006 05:06:48 -0700 Received: from hansmi.home.forkbomb.ch ([213.144.146.165]) by mail.sourceforge.net with esmtps (TLSv1:AES256-SHA:256) (Exim 4.44) id 1FzBaA-0004RE-Nv for linux-fbdev-devel@lists.sourceforge.net; Sat, 08 Jul 2006 05:06:48 -0700 Content-Disposition: inline List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: linux-fbdev-devel-bounces@lists.sourceforge.net Errors-To: linux-fbdev-devel-bounces@lists.sourceforge.net Content-Type: text/plain; charset="iso-8859-1" To: akpm@osdl.org Cc: benh@kernel.crashing.org, johannes@sipsolutions.net, aris@valeta.org, linux-fbdev-devel@lists.sourceforge.net, linux-kernel@killerfox.forkbomb.ch VGhpcyBwYXRjaCBmaXhlcyBsb2NraW5nIGlzc3VlcyBpbiB0aGUgbmV3IHBvd2VybWFjIGJhY2ts aWdodAppbmZyYXN0cnVjdHVyZSBhcyByZXBvcnRlZCBieSBBcmlzdGV1IFMuIFJvemFuc2tpIEYu IDxhcmlzQHZhbGV0YS5vcmc+LgpJdCBhbHNvIGZpeGVzIHRoZSB3cm9uZyBjYWxjdWxhdGlvbiBv ZiBiYWNrbGlnaHQgdmFsdWVzIGluIHNvbWUgb2YgdGhlCmRyaXZlcnMuCgpTaWduZWQtb2ZmLWJ5 OiBNaWNoYWVsIEhhbnNlbG1hbm4gPGxpbnV4LWtlcm5lbEBoYW5zbWkuY2g+CkFja2VkLWJ5OiBS ZW7DqSBOdXNzYmF1bWVyIDxsaW51eC1rZXJuZWxAa2lsbGVyZm94LmZvcmtib21iLmNoPgoKLS0t CmRpZmYgLU5ydXAgLS1leGNsdWRlLWZyb20gbGludXgtZXhjbHVkZS1mcm9tIGxpbnV4LTIuNi4x OC1yYzEub3JpZy9kcml2ZXJzL3ZpZGVvL2F0eS9hdHkxMjhmYi5jIGxpbnV4LTIuNi4xOC1yYzEv ZHJpdmVycy92aWRlby9hdHkvYXR5MTI4ZmIuYwotLS0gbGludXgtMi42LjE4LXJjMS5vcmlnL2Ry aXZlcnMvdmlkZW8vYXR5L2F0eTEyOGZiLmMJMjAwNi0wNy0wOCAxMjoyNzowOS4wMDAwMDAwMDAg KzAyMDAKKysrIGxpbnV4LTIuNi4xOC1yYzEvZHJpdmVycy92aWRlby9hdHkvYXR5MTI4ZmIuYwky MDA2LTA3LTA4IDEyOjI4OjMyLjAwMDAwMDAwMCArMDIwMApAQCAtNDU2LDYgKzQ1Niw3IEBAIHN0 YXRpYyB2b2lkIGRvX3dhaXRfZm9yX2ZpZm8odTE2IGVudHJpZXMKIHN0YXRpYyB2b2lkIHdhaXRf Zm9yX2ZpZm8odTE2IGVudHJpZXMsIHN0cnVjdCBhdHkxMjhmYl9wYXIgKnBhcik7CiBzdGF0aWMg dm9pZCB3YWl0X2Zvcl9pZGxlKHN0cnVjdCBhdHkxMjhmYl9wYXIgKnBhcik7CiBzdGF0aWMgdTMy IGRlcHRoX3RvX2RzdCh1MzIgZGVwdGgpOworc3RhdGljIHZvaWQgYXR5MTI4X2JsX3NldF9wb3dl cihzdHJ1Y3QgZmJfaW5mbyAqaW5mbywgaW50IHBvd2VyKTsKIAogI2RlZmluZSBCSU9TX0lOOCh2 KSAgCShyZWFkYihiaW9zICsgKHYpKSkKICNkZWZpbmUgQklPU19JTjE2KHYpIAkocmVhZGIoYmlv cyArICh2KSkgfCBcCkBAIC0xMjU4LDI1ICsxMjU5LDExIEBAIHN0YXRpYyB2b2lkIGF0eTEyOF9z ZXRfbGNkX2VuYWJsZShzdHJ1Y3QKIAkJcmVnICY9IH5MVkRTX0RJU1BMQVlfRElTOwogCQlhdHlf c3RfbGUzMihMVkRTX0dFTl9DTlRMLCByZWcpOwogI2lmZGVmIENPTkZJR19GQl9BVFkxMjhfQkFD S0xJR0hUCi0JCW11dGV4X2xvY2soJmluZm8tPmJsX211dGV4KTsKLQkJaWYgKGluZm8tPmJsX2Rl dikgewotCQkJZG93bigmaW5mby0+YmxfZGV2LT5zZW0pOwotCQkJaW5mby0+YmxfZGV2LT5wcm9w cy0+dXBkYXRlX3N0YXR1cyhpbmZvLT5ibF9kZXYpOwotCQkJdXAoJmluZm8tPmJsX2Rldi0+c2Vt KTsKLQkJfQotCQltdXRleF91bmxvY2soJmluZm8tPmJsX211dGV4KTsKKwkJYXR5MTI4X2JsX3Nl dF9wb3dlcihpbmZvLCBGQl9CTEFOS19VTkJMQU5LKTsKICNlbmRpZgkKIAl9IGVsc2UgewogI2lm ZGVmIENPTkZJR19GQl9BVFkxMjhfQkFDS0xJR0hUCi0JCW11dGV4X2xvY2soJmluZm8tPmJsX211 dGV4KTsKLQkJaWYgKGluZm8tPmJsX2RldikgewotCQkJZG93bigmaW5mby0+YmxfZGV2LT5zZW0p OwotCQkJaW5mby0+YmxfZGV2LT5wcm9wcy0+YnJpZ2h0bmVzcyA9IDA7Ci0JCQlpbmZvLT5ibF9k ZXYtPnByb3BzLT5wb3dlciA9IEZCX0JMQU5LX1BPV0VSRE9XTjsKLQkJCWluZm8tPmJsX2Rldi0+ cHJvcHMtPnVwZGF0ZV9zdGF0dXMoaW5mby0+YmxfZGV2KTsKLQkJCXVwKCZpbmZvLT5ibF9kZXYt PnNlbSk7Ci0JCX0KLQkJbXV0ZXhfdW5sb2NrKCZpbmZvLT5ibF9tdXRleCk7CisJCWF0eTEyOF9i bF9zZXRfcG93ZXIoaW5mbywgRkJfQkxBTktfUE9XRVJET1dOKTsKICNlbmRpZgkKIAkJcmVnID0g YXR5X2xkX2xlMzIoTFZEU19HRU5fQ05UTCk7CiAJCXJlZyB8PSBMVkRTX0RJU1BMQVlfRElTOwpA QCAtMTcwMyw2ICsxNjkwLDcgQEAgc3RhdGljIGludCBfX2RldmluaXQgYXR5MTI4ZmJfc2V0dXAo Y2hhcgogCiBzdGF0aWMgc3RydWN0IGJhY2tsaWdodF9wcm9wZXJ0aWVzIGF0eTEyOF9ibF9kYXRh OwogCisvKiBDYWxsIHdpdGggZmJfaW5mby0+YmxfbXV0ZXggaGVsZCAqLwogc3RhdGljIGludCBh dHkxMjhfYmxfZ2V0X2xldmVsX2JyaWdodG5lc3Moc3RydWN0IGF0eTEyOGZiX3BhciAqcGFyLAog CQlpbnQgbGV2ZWwpCiB7CkBAIC0xNzEwLDEwICsxNjk4LDggQEAgc3RhdGljIGludCBhdHkxMjhf YmxfZ2V0X2xldmVsX2JyaWdodG5lcwogCWludCBhdHlsZXZlbDsKIAogCS8qIEdldCBhbmQgY29u dmVydCB0aGUgdmFsdWUgKi8KLQltdXRleF9sb2NrKCZpbmZvLT5ibF9tdXRleCk7CiAJYXR5bGV2 ZWwgPSBNQVhfTEVWRUwgLQogCQkoaW5mby0+YmxfY3VydmVbbGV2ZWxdICogRkJfQkFDS0xJR0hU X01BWCAvIE1BWF9MRVZFTCk7Ci0JbXV0ZXhfdW5sb2NrKCZpbmZvLT5ibF9tdXRleCk7CiAKIAlp ZiAoYXR5bGV2ZWwgPCAwKQogCQlhdHlsZXZlbCA9IDA7CkBAIC0xNzMxLDcgKzE3MTcsOCBAQCBz dGF0aWMgaW50IGF0eTEyOF9ibF9nZXRfbGV2ZWxfYnJpZ2h0bmVzCiAvKiBUaGF0IG9uZSBwcmV2 ZW50cyBwcm9wZXIgQ1JUIG91dHB1dCB3aXRoIExDRCBvZmYgKi8KICN1bmRlZiBCQUNLTElHSFRf REFDX09GRgogCi1zdGF0aWMgaW50IGF0eTEyOF9ibF91cGRhdGVfc3RhdHVzKHN0cnVjdCBiYWNr bGlnaHRfZGV2aWNlICpiZCkKKy8qIENhbGwgd2l0aCBmYl9pbmZvLT5ibF9tdXRleCBoZWxkICov CitzdGF0aWMgaW50IF9fYXR5MTI4X2JsX3VwZGF0ZV9zdGF0dXMoc3RydWN0IGJhY2tsaWdodF9k ZXZpY2UgKmJkKQogewogCXN0cnVjdCBhdHkxMjhmYl9wYXIgKnBhciA9IGNsYXNzX2dldF9kZXZk YXRhKCZiZC0+Y2xhc3NfZGV2KTsKIAl1bnNpZ25lZCBpbnQgcmVnID0gYXR5X2xkX2xlMzIoTFZE U19HRU5fQ05UTCk7CkBAIC0xNzg0LDYgKzE3NzEsMTkgQEAgc3RhdGljIGludCBhdHkxMjhfYmxf dXBkYXRlX3N0YXR1cyhzdHJ1YwogCXJldHVybiAwOwogfQogCitzdGF0aWMgaW50IGF0eTEyOF9i bF91cGRhdGVfc3RhdHVzKHN0cnVjdCBiYWNrbGlnaHRfZGV2aWNlICpiZCkKK3sKKwlzdHJ1Y3Qg YXR5MTI4ZmJfcGFyICpwYXIgPSBjbGFzc19nZXRfZGV2ZGF0YSgmYmQtPmNsYXNzX2Rldik7CisJ c3RydWN0IGZiX2luZm8gKmluZm8gPSBwY2lfZ2V0X2RydmRhdGEocGFyLT5wZGV2KTsKKwlpbnQg cmV0OworCisJbXV0ZXhfbG9jaygmaW5mby0+YmxfbXV0ZXgpOworCXJldCA9IF9fYXR5MTI4X2Js X3VwZGF0ZV9zdGF0dXMoYmQpOworCW11dGV4X3VubG9jaygmaW5mby0+YmxfbXV0ZXgpOworCisJ cmV0dXJuIHJldDsKK30KKwogc3RhdGljIGludCBhdHkxMjhfYmxfZ2V0X2JyaWdodG5lc3Moc3Ry dWN0IGJhY2tsaWdodF9kZXZpY2UgKmJkKQogewogCXJldHVybiBiZC0+cHJvcHMtPmJyaWdodG5l c3M7CkBAIC0xNzk2LDYgKzE3OTYsMTYgQEAgc3RhdGljIHN0cnVjdCBiYWNrbGlnaHRfcHJvcGVy dGllcyBhdHkxMgogCS5tYXhfYnJpZ2h0bmVzcwk9IChGQl9CQUNLTElHSFRfTEVWRUxTIC0gMSks CiB9OwogCitzdGF0aWMgdm9pZCBhdHkxMjhfYmxfc2V0X3Bvd2VyKHN0cnVjdCBmYl9pbmZvICpp bmZvLCBpbnQgcG93ZXIpCit7CisJbXV0ZXhfbG9jaygmaW5mby0+YmxfbXV0ZXgpOworCXVwKCZp bmZvLT5ibF9kZXYtPnNlbSk7CisJaW5mby0+YmxfZGV2LT5wcm9wcy0+cG93ZXIgPSBwb3dlcjsK KwlfX2F0eTEyOF9ibF91cGRhdGVfc3RhdHVzKGluZm8tPmJsX2Rldik7CisJZG93bigmaW5mby0+ YmxfZGV2LT5zZW0pOworCW11dGV4X3VubG9jaygmaW5mby0+YmxfbXV0ZXgpOworfQorCiBzdGF0 aWMgdm9pZCBhdHkxMjhfYmxfaW5pdChzdHJ1Y3QgYXR5MTI4ZmJfcGFyICpwYXIpCiB7CiAJc3Ry dWN0IGZiX2luZm8gKmluZm8gPSBwY2lfZ2V0X2RydmRhdGEocGFyLT5wZGV2KTsKQEAgLTIxOTgs MTIgKzIyMDgsOCBAQCBzdGF0aWMgaW50IGF0eTEyOGZiX2JsYW5rKGludCBibGFuaywgc3RyCiAJ CXJldHVybiAwOwogCiAjaWZkZWYgQ09ORklHX0ZCX0FUWTEyOF9CQUNLTElHSFQKLQlpZiAobWFj aGluZV9pcyhwb3dlcm1hYykgJiYgYmxhbmspIHsKLQkJZG93bigmZmItPmJsX2Rldi0+c2VtKTsK LQkJZmItPmJsX2Rldi0+cHJvcHMtPnBvd2VyID0gRkJfQkxBTktfUE9XRVJET1dOOwotCQlmYi0+ YmxfZGV2LT5wcm9wcy0+dXBkYXRlX3N0YXR1cyhmYi0+YmxfZGV2KTsKLQkJdXAoJmZiLT5ibF9k ZXYtPnNlbSk7Ci0JfQorCWlmIChtYWNoaW5lX2lzKHBvd2VybWFjKSAmJiBibGFuaykKKwkJYXR5 MTI4X2JsX3NldF9wb3dlcihmYiwgRkJfQkxBTktfUE9XRVJET1dOKTsKICNlbmRpZgogCiAJaWYg KGJsYW5rICYgRkJfQkxBTktfVlNZTkNfU1VTUEVORCkKQEAgLTIyMTksMTQgKzIyMjUsMTIgQEAg c3RhdGljIGludCBhdHkxMjhmYl9ibGFuayhpbnQgYmxhbmssIHN0cgogCQlhdHkxMjhfc2V0X2Ny dF9lbmFibGUocGFyLCBwYXItPmNydF9vbiAmJiAhYmxhbmspOwogCQlhdHkxMjhfc2V0X2xjZF9l bmFibGUocGFyLCBwYXItPmxjZF9vbiAmJiAhYmxhbmspOwogCX0KKwogI2lmZGVmIENPTkZJR19G Ql9BVFkxMjhfQkFDS0xJR0hUCi0JaWYgKG1hY2hpbmVfaXMocG93ZXJtYWMpICYmICFibGFuaykg ewotCQlkb3duKCZmYi0+YmxfZGV2LT5zZW0pOwotCQlmYi0+YmxfZGV2LT5wcm9wcy0+cG93ZXIg PSBGQl9CTEFOS19VTkJMQU5LOwotCQlmYi0+YmxfZGV2LT5wcm9wcy0+dXBkYXRlX3N0YXR1cyhm Yi0+YmxfZGV2KTsKLQkJdXAoJmZiLT5ibF9kZXYtPnNlbSk7Ci0JfQorCWlmIChtYWNoaW5lX2lz KHBvd2VybWFjKSAmJiAhYmxhbmspCisJCWF0eTEyOF9ibF9zZXRfcG93ZXIoZmIsIEZCX0JMQU5L X1VOQkxBTkspOwogI2VuZGlmCisKIAlyZXR1cm4gMDsKIH0KIApkaWZmIC1OcnVwIC0tZXhjbHVk ZS1mcm9tIGxpbnV4LWV4Y2x1ZGUtZnJvbSBsaW51eC0yLjYuMTgtcmMxLm9yaWcvZHJpdmVycy92 aWRlby9hdHkvYXR5ZmJfYmFzZS5jIGxpbnV4LTIuNi4xOC1yYzEvZHJpdmVycy92aWRlby9hdHkv YXR5ZmJfYmFzZS5jCi0tLSBsaW51eC0yLjYuMTgtcmMxLm9yaWcvZHJpdmVycy92aWRlby9hdHkv YXR5ZmJfYmFzZS5jCTIwMDYtMDctMDggMTI6Mjc6MDkuMDAwMDAwMDAwICswMjAwCisrKyBsaW51 eC0yLjYuMTgtcmMxL2RyaXZlcnMvdmlkZW8vYXR5L2F0eWZiX2Jhc2UuYwkyMDA2LTA3LTA4IDEy OjI4OjMyLjAwMDAwMDAwMCArMDIwMApAQCAtMjEyOSwxNSArMjEyOSwxNCBAQCBzdGF0aWMgaW50 IGF0eWZiX3BjaV9yZXN1bWUoc3RydWN0IHBjaV9kCiAKIHN0YXRpYyBzdHJ1Y3QgYmFja2xpZ2h0 X3Byb3BlcnRpZXMgYXR5X2JsX2RhdGE7CiAKKy8qIENhbGwgd2l0aCBmYl9pbmZvLT5ibF9tdXRl eCBoZWxkICovCiBzdGF0aWMgaW50IGF0eV9ibF9nZXRfbGV2ZWxfYnJpZ2h0bmVzcyhzdHJ1Y3Qg YXR5ZmJfcGFyICpwYXIsIGludCBsZXZlbCkKIHsKIAlzdHJ1Y3QgZmJfaW5mbyAqaW5mbyA9IHBj aV9nZXRfZHJ2ZGF0YShwYXItPnBkZXYpOwogCWludCBhdHlsZXZlbDsKIAogCS8qIEdldCBhbmQg Y29udmVydCB0aGUgdmFsdWUgKi8KLQltdXRleF9sb2NrKCZpbmZvLT5ibF9tdXRleCk7CiAJYXR5 bGV2ZWwgPSBpbmZvLT5ibF9jdXJ2ZVtsZXZlbF0gKiBGQl9CQUNLTElHSFRfTUFYIC8gTUFYX0xF VkVMOwotCW11dGV4X3VubG9jaygmaW5mby0+YmxfbXV0ZXgpOwogCiAJaWYgKGF0eWxldmVsIDwg MCkKIAkJYXR5bGV2ZWwgPSAwOwpAQCAtMjE0Nyw3ICsyMTQ2LDggQEAgc3RhdGljIGludCBhdHlf YmxfZ2V0X2xldmVsX2JyaWdodG5lc3MocwogCXJldHVybiBhdHlsZXZlbDsKIH0KIAotc3RhdGlj IGludCBhdHlfYmxfdXBkYXRlX3N0YXR1cyhzdHJ1Y3QgYmFja2xpZ2h0X2RldmljZSAqYmQpCisv KiBDYWxsIHdpdGggZmJfaW5mby0+YmxfbXV0ZXggaGVsZCAqLworc3RhdGljIGludCBfX2F0eV9i bF91cGRhdGVfc3RhdHVzKHN0cnVjdCBiYWNrbGlnaHRfZGV2aWNlICpiZCkKIHsKIAlzdHJ1Y3Qg YXR5ZmJfcGFyICpwYXIgPSBjbGFzc19nZXRfZGV2ZGF0YSgmYmQtPmNsYXNzX2Rldik7CiAJdW5z aWduZWQgaW50IHJlZyA9IGF0eV9sZF9sY2QoTENEX01JU0NfQ05UTCwgcGFyKTsKQEAgLTIxNzIs NiArMjE3MiwxOSBAQCBzdGF0aWMgaW50IGF0eV9ibF91cGRhdGVfc3RhdHVzKHN0cnVjdCBiCiAJ cmV0dXJuIDA7CiB9CiAKK3N0YXRpYyBpbnQgYXR5X2JsX3VwZGF0ZV9zdGF0dXMoc3RydWN0IGJh Y2tsaWdodF9kZXZpY2UgKmJkKQoreworCXN0cnVjdCBhdHlmYl9wYXIgKnBhciA9IGNsYXNzX2dl dF9kZXZkYXRhKCZiZC0+Y2xhc3NfZGV2KTsKKwlzdHJ1Y3QgZmJfaW5mbyAqaW5mbyA9IHBjaV9n ZXRfZHJ2ZGF0YShwYXItPnBkZXYpOworCWludCByZXQ7CisKKwltdXRleF9sb2NrKCZpbmZvLT5i bF9tdXRleCk7CisJcmV0ID0gX19hdHlfYmxfdXBkYXRlX3N0YXR1cyhiZCk7CisJbXV0ZXhfdW5s b2NrKCZpbmZvLT5ibF9tdXRleCk7CisKKwlyZXR1cm4gcmV0OworfQorCiBzdGF0aWMgaW50IGF0 eV9ibF9nZXRfYnJpZ2h0bmVzcyhzdHJ1Y3QgYmFja2xpZ2h0X2RldmljZSAqYmQpCiB7CiAJcmV0 dXJuIGJkLT5wcm9wcy0+YnJpZ2h0bmVzczsKQEAgLTIxODQsNiArMjE5NywxNiBAQCBzdGF0aWMg c3RydWN0IGJhY2tsaWdodF9wcm9wZXJ0aWVzIGF0eV9iCiAJLm1heF9icmlnaHRuZXNzID0gKEZC X0JBQ0tMSUdIVF9MRVZFTFMgLSAxKSwKIH07CiAKK3N0YXRpYyB2b2lkIGF0eV9ibF9zZXRfcG93 ZXIoc3RydWN0IGZiX2luZm8gKmluZm8sIGludCBwb3dlcikKK3sKKwltdXRleF9sb2NrKCZpbmZv LT5ibF9tdXRleCk7CisJdXAoJmluZm8tPmJsX2Rldi0+c2VtKTsKKwlpbmZvLT5ibF9kZXYtPnBy b3BzLT5wb3dlciA9IHBvd2VyOworCV9fYXR5X2JsX3VwZGF0ZV9zdGF0dXMoaW5mby0+YmxfZGV2 KTsKKwlkb3duKCZpbmZvLT5ibF9kZXYtPnNlbSk7CisJbXV0ZXhfdW5sb2NrKCZpbmZvLT5ibF9t dXRleCk7Cit9CisKIHN0YXRpYyB2b2lkIGF0eV9ibF9pbml0KHN0cnVjdCBhdHlmYl9wYXIgKnBh cikKIHsKIAlzdHJ1Y3QgZmJfaW5mbyAqaW5mbyA9IHBjaV9nZXRfZHJ2ZGF0YShwYXItPnBkZXYp OwpAQCAtMjc5MCwxNiArMjgxMyw4IEBAIHN0YXRpYyBpbnQgYXR5ZmJfYmxhbmsoaW50IGJsYW5r LCBzdHJ1Y3QKIAkJcmV0dXJuIDA7CiAKICNpZmRlZiBDT05GSUdfUE1BQ19CQUNLTElHSFQKLQlp ZiAobWFjaGluZV9pcyhwb3dlcm1hYykgJiYgYmxhbmsgPiBGQl9CTEFOS19OT1JNQUwpIHsKLQkJ bXV0ZXhfbG9jaygmaW5mby0+YmxfbXV0ZXgpOwotCQlpZiAoaW5mby0+YmxfZGV2KSB7Ci0JCQlk b3duKCZpbmZvLT5ibF9kZXYtPnNlbSk7Ci0JCQlpbmZvLT5ibF9kZXYtPnByb3BzLT5wb3dlciA9 IEZCX0JMQU5LX1BPV0VSRE9XTjsKLQkJCWluZm8tPmJsX2Rldi0+cHJvcHMtPnVwZGF0ZV9zdGF0 dXMoaW5mby0+YmxfZGV2KTsKLQkJCXVwKCZpbmZvLT5ibF9kZXYtPnNlbSk7Ci0JCX0KLQkJbXV0 ZXhfdW5sb2NrKCZpbmZvLT5ibF9tdXRleCk7Ci0JfQorCWlmIChtYWNoaW5lX2lzKHBvd2VybWFj KSAmJiBibGFuayA+IEZCX0JMQU5LX05PUk1BTCkKKwkJYXR5X2JsX3NldF9wb3dlcihpbmZvLCBG Ql9CTEFOS19QT1dFUkRPV04pOwogI2VsaWYgZGVmaW5lZChDT05GSUdfRkJfQVRZX0dFTkVSSUNf TENEKQogCWlmIChwYXItPmxjZF90YWJsZSAmJiBibGFuayA+IEZCX0JMQU5LX05PUk1BTCAmJgog CSAgICAoYXR5X2xkX2xjZChMQ0RfR0VOX0NOVEwsIHBhcikgJiBMQ0RfT04pKSB7CkBAIC0yODMw LDE2ICsyODQ1LDggQEAgc3RhdGljIGludCBhdHlmYl9ibGFuayhpbnQgYmxhbmssIHN0cnVjdAog CWF0eV9zdF9sZTMyKENSVENfR0VOX0NOVEwsIGdlbl9jbnRsLCBwYXIpOwogCiAjaWZkZWYgQ09O RklHX1BNQUNfQkFDS0xJR0hUCi0JaWYgKG1hY2hpbmVfaXMocG93ZXJtYWMpICYmIGJsYW5rIDw9 IEZCX0JMQU5LX05PUk1BTCkgewotCQltdXRleF9sb2NrKCZpbmZvLT5ibF9tdXRleCk7Ci0JCWlm IChpbmZvLT5ibF9kZXYpIHsKLQkJCWRvd24oJmluZm8tPmJsX2Rldi0+c2VtKTsKLQkJCWluZm8t PmJsX2Rldi0+cHJvcHMtPnBvd2VyID0gRkJfQkxBTktfVU5CTEFOSzsKLQkJCWluZm8tPmJsX2Rl di0+cHJvcHMtPnVwZGF0ZV9zdGF0dXMoaW5mby0+YmxfZGV2KTsKLQkJCXVwKCZpbmZvLT5ibF9k ZXYtPnNlbSk7Ci0JCX0KLQkJbXV0ZXhfdW5sb2NrKCZpbmZvLT5ibF9tdXRleCk7Ci0JfQorCWlm IChtYWNoaW5lX2lzKHBvd2VybWFjKSAmJiBibGFuayA8PSBGQl9CTEFOS19OT1JNQUwpCisJCWF0 eV9ibF9zZXRfcG93ZXIoaW5mbywgRkJfQkxBTktfVU5CTEFOSyk7CiAjZWxpZiBkZWZpbmVkKENP TkZJR19GQl9BVFlfR0VORVJJQ19MQ0QpCiAJaWYgKHBhci0+bGNkX3RhYmxlICYmIGJsYW5rIDw9 IEZCX0JMQU5LX05PUk1BTCAmJgogCSAgICAoYXR5X2xkX2xjZChMQ0RfR0VOX0NOVEwsIHBhcikg JiBMQ0RfT04pKSB7CmRpZmYgLU5ydXAgLS1leGNsdWRlLWZyb20gbGludXgtZXhjbHVkZS1mcm9t IGxpbnV4LTIuNi4xOC1yYzEub3JpZy9kcml2ZXJzL3ZpZGVvL2NoaXBzZmIuYyBsaW51eC0yLjYu MTgtcmMxL2RyaXZlcnMvdmlkZW8vY2hpcHNmYi5jCi0tLSBsaW51eC0yLjYuMTgtcmMxLm9yaWcv ZHJpdmVycy92aWRlby9jaGlwc2ZiLmMJMjAwNi0wNy0wOCAxMjoyNzowOC4wMDAwMDAwMDAgKzAy MDAKKysrIGxpbnV4LTIuNi4xOC1yYzEvZHJpdmVycy92aWRlby9jaGlwc2ZiLmMJMjAwNi0wNy0w OCAxMjoyODozMi4wMDAwMDAwMDAgKzAyMDAKQEAgLTE1MCwxMiArMTUwLDExIEBAIHN0YXRpYyBp bnQgY2hpcHNmYl9ibGFuayhpbnQgYmxhbmssIHN0cnUKIAltdXRleF9sb2NrKCZwbWFjX2JhY2ts aWdodF9tdXRleCk7CiAKIAlpZiAocG1hY19iYWNrbGlnaHQpIHsKLQkJZG93bigmcG1hY19iYWNr bGlnaHQtPnNlbSk7Ci0KIAkJLyogdXNlZCB0byBkaXNhYmxlIGJhY2tsaWdodCBvbmx5IGZvciBi bGFuayA+IDEsIGJ1dCBpdCBzZWVtcwogCQkgKiB1c2VmdWwgYXQgYmxhbmsgPSAxIHRvbyAoc2F2 ZXMgYmF0dGVyeSwgZXh0ZW5kcyBiYWNrbGlnaHQKIAkJICogbGlmZSkKIAkgCSAqLworCQlkb3du KCZwbWFjX2JhY2tsaWdodC0+c2VtKTsKIAkJaWYgKGJsYW5rKQogCQkJcG1hY19iYWNrbGlnaHQt PnByb3BzLT5wb3dlciA9IEZCX0JMQU5LX1BPV0VSRE9XTjsKIAkJZWxzZQpkaWZmIC1OcnVwIC0t ZXhjbHVkZS1mcm9tIGxpbnV4LWV4Y2x1ZGUtZnJvbSBsaW51eC0yLjYuMTgtcmMxLm9yaWcvZHJp dmVycy92aWRlby9udmlkaWEvbnZfYmFja2xpZ2h0LmMgbGludXgtMi42LjE4LXJjMS9kcml2ZXJz L3ZpZGVvL252aWRpYS9udl9iYWNrbGlnaHQuYwotLS0gbGludXgtMi42LjE4LXJjMS5vcmlnL2Ry aXZlcnMvdmlkZW8vbnZpZGlhL252X2JhY2tsaWdodC5jCTIwMDYtMDctMDggMTI6Mjc6MDkuMDAw MDAwMDAwICswMjAwCisrKyBsaW51eC0yLjYuMTgtcmMxL2RyaXZlcnMvdmlkZW8vbnZpZGlhL252 X2JhY2tsaWdodC5jCTIwMDYtMDctMDggMTI6Mjg6MzIuMDAwMDAwMDAwICswMjAwCkBAIC0yNiw5 ICsyNiwxMSBAQAogICovCiAjZGVmaW5lIE1JTl9MRVZFTCAweDE1OAogI2RlZmluZSBNQVhfTEVW RUwgMHg1MzQKKyNkZWZpbmUgTEVWRUxfU1RFUCAoKE1BWF9MRVZFTCAtIE1JTl9MRVZFTCkgLyBG Ql9CQUNLTElHSFRfTUFYKQogCiBzdGF0aWMgc3RydWN0IGJhY2tsaWdodF9wcm9wZXJ0aWVzIG52 aWRpYV9ibF9kYXRhOwogCisvKiBDYWxsIHdpdGggZmJfaW5mby0+YmxfbXV0ZXggaGVsZCAqLwog c3RhdGljIGludCBudmlkaWFfYmxfZ2V0X2xldmVsX2JyaWdodG5lc3Moc3RydWN0IG52aWRpYV9w YXIgKnBhciwKIAkJaW50IGxldmVsKQogewpAQCAtMzYsOSArMzgsNyBAQCBzdGF0aWMgaW50IG52 aWRpYV9ibF9nZXRfbGV2ZWxfYnJpZ2h0bmVzCiAJaW50IG5sZXZlbDsKIAogCS8qIEdldCBhbmQg Y29udmVydCB0aGUgdmFsdWUgKi8KLQltdXRleF9sb2NrKCZpbmZvLT5ibF9tdXRleCk7Ci0Jbmxl dmVsID0gaW5mby0+YmxfY3VydmVbbGV2ZWxdICogRkJfQkFDS0xJR0hUX01BWCAvIE1BWF9MRVZF TDsKLQltdXRleF91bmxvY2soJmluZm8tPmJsX211dGV4KTsKKwlubGV2ZWwgPSBNSU5fTEVWRUwg KyBpbmZvLT5ibF9jdXJ2ZVtsZXZlbF0gKiBMRVZFTF9TVEVQOwogCiAJaWYgKG5sZXZlbCA8IDAp CiAJCW5sZXZlbCA9IDA7CkBAIC01MCw3ICs1MCw4IEBAIHN0YXRpYyBpbnQgbnZpZGlhX2JsX2dl dF9sZXZlbF9icmlnaHRuZXMKIAlyZXR1cm4gbmxldmVsOwogfQogCi1zdGF0aWMgaW50IG52aWRp YV9ibF91cGRhdGVfc3RhdHVzKHN0cnVjdCBiYWNrbGlnaHRfZGV2aWNlICpiZCkKKy8qIENhbGwg d2l0aCBmYl9pbmZvLT5ibF9tdXRleCBoZWxkICovCitzdGF0aWMgaW50IF9fbnZpZGlhX2JsX3Vw ZGF0ZV9zdGF0dXMoc3RydWN0IGJhY2tsaWdodF9kZXZpY2UgKmJkKQogewogCXN0cnVjdCBudmlk aWFfcGFyICpwYXIgPSBjbGFzc19nZXRfZGV2ZGF0YSgmYmQtPmNsYXNzX2Rldik7CiAJdTMyIHRt cF9wY3J0LCB0bXBfcG1jLCBmcGNvbnRyb2w7CkBAIC04NCw2ICs4NSwxOSBAQCBzdGF0aWMgaW50 IG52aWRpYV9ibF91cGRhdGVfc3RhdHVzKHN0cnVjCiAJcmV0dXJuIDA7CiB9CiAKK3N0YXRpYyBp bnQgbnZpZGlhX2JsX3VwZGF0ZV9zdGF0dXMoc3RydWN0IGJhY2tsaWdodF9kZXZpY2UgKmJkKQor eworCXN0cnVjdCBudmlkaWFfcGFyICpwYXIgPSBjbGFzc19nZXRfZGV2ZGF0YSgmYmQtPmNsYXNz X2Rldik7CisJc3RydWN0IGZiX2luZm8gKmluZm8gPSBwY2lfZ2V0X2RydmRhdGEocGFyLT5wY2lf ZGV2KTsKKwlpbnQgcmV0OworCisJbXV0ZXhfbG9jaygmaW5mby0+YmxfbXV0ZXgpOworCXJldCA9 IF9fbnZpZGlhX2JsX3VwZGF0ZV9zdGF0dXMoYmQpOworCW11dGV4X3VubG9jaygmaW5mby0+Ymxf bXV0ZXgpOworCisJcmV0dXJuIHJldDsKK30KKwogc3RhdGljIGludCBudmlkaWFfYmxfZ2V0X2Jy aWdodG5lc3Moc3RydWN0IGJhY2tsaWdodF9kZXZpY2UgKmJkKQogewogCXJldHVybiBiZC0+cHJv cHMtPmJyaWdodG5lc3M7CkBAIC05Niw2ICsxMTAsMTYgQEAgc3RhdGljIHN0cnVjdCBiYWNrbGln aHRfcHJvcGVydGllcyBudmlkaQogCS5tYXhfYnJpZ2h0bmVzcyA9IChGQl9CQUNLTElHSFRfTEVW RUxTIC0gMSksCiB9OwogCit2b2lkIG52aWRpYV9ibF9zZXRfcG93ZXIoc3RydWN0IGZiX2luZm8g KmluZm8sIGludCBwb3dlcikKK3sKKwltdXRleF9sb2NrKCZpbmZvLT5ibF9tdXRleCk7CisJdXAo JmluZm8tPmJsX2Rldi0+c2VtKTsKKwlpbmZvLT5ibF9kZXYtPnByb3BzLT5wb3dlciA9IHBvd2Vy OworCV9fbnZpZGlhX2JsX3VwZGF0ZV9zdGF0dXMoaW5mby0+YmxfZGV2KTsKKwlkb3duKCZpbmZv LT5ibF9kZXYtPnNlbSk7CisJbXV0ZXhfdW5sb2NrKCZpbmZvLT5ibF9tdXRleCk7Cit9CisKIHZv aWQgbnZpZGlhX2JsX2luaXQoc3RydWN0IG52aWRpYV9wYXIgKnBhcikKIHsKIAlzdHJ1Y3QgZmJf aW5mbyAqaW5mbyA9IHBjaV9nZXRfZHJ2ZGF0YShwYXItPnBjaV9kZXYpOwpkaWZmIC1OcnVwIC0t ZXhjbHVkZS1mcm9tIGxpbnV4LWV4Y2x1ZGUtZnJvbSBsaW51eC0yLjYuMTgtcmMxLm9yaWcvZHJp dmVycy92aWRlby9udmlkaWEvbnZpZGlhLmMgbGludXgtMi42LjE4LXJjMS9kcml2ZXJzL3ZpZGVv L252aWRpYS9udmlkaWEuYwotLS0gbGludXgtMi42LjE4LXJjMS5vcmlnL2RyaXZlcnMvdmlkZW8v bnZpZGlhL252aWRpYS5jCTIwMDYtMDctMDggMTI6Mjc6MDkuMDAwMDAwMDAwICswMjAwCisrKyBs aW51eC0yLjYuMTgtcmMxL2RyaXZlcnMvdmlkZW8vbnZpZGlhL252aWRpYS5jCTIwMDYtMDctMDgg MTI6Mjg6MzIuMDAwMDAwMDAwICswMjAwCkBAIC05MzMsMTYgKzkzMyw3IEBAIHN0YXRpYyBpbnQg bnZpZGlhZmJfYmxhbmsoaW50IGJsYW5rLCBzdHIKIAlOVldyaXRlU2VxKHBhciwgMHgwMSwgdG1w KTsKIAlOVldyaXRlQ3J0YyhwYXIsIDB4MWEsIHZlc2EpOwogCi0jaWZkZWYgQ09ORklHX0ZCX05W SURJQV9CQUNLTElHSFQKLQltdXRleF9sb2NrKCZpbmZvLT5ibF9tdXRleCk7Ci0JaWYgKGluZm8t PmJsX2RldikgewotCQlkb3duKCZpbmZvLT5ibF9kZXYtPnNlbSk7Ci0JCWluZm8tPmJsX2Rldi0+ cHJvcHMtPnBvd2VyID0gYmxhbms7Ci0JCWluZm8tPmJsX2Rldi0+cHJvcHMtPnVwZGF0ZV9zdGF0 dXMoaW5mby0+YmxfZGV2KTsKLQkJdXAoJmluZm8tPmJsX2Rldi0+c2VtKTsKLQl9Ci0JbXV0ZXhf dW5sb2NrKCZpbmZvLT5ibF9tdXRleCk7Ci0jZW5kaWYKKwludmlkaWFfYmxfc2V0X3Bvd2VyKGlu Zm8sIGJsYW5rKTsKIAogCU5WVFJBQ0VfTEVBVkUoKTsKIApkaWZmIC1OcnVwIC0tZXhjbHVkZS1m cm9tIGxpbnV4LWV4Y2x1ZGUtZnJvbSBsaW51eC0yLjYuMTgtcmMxLm9yaWcvZHJpdmVycy92aWRl by9udmlkaWEvbnZfcHJvdG8uaCBsaW51eC0yLjYuMTgtcmMxL2RyaXZlcnMvdmlkZW8vbnZpZGlh L252X3Byb3RvLmgKLS0tIGxpbnV4LTIuNi4xOC1yYzEub3JpZy9kcml2ZXJzL3ZpZGVvL252aWRp YS9udl9wcm90by5oCTIwMDYtMDctMDggMTI6Mjc6MDkuMDAwMDAwMDAwICswMjAwCisrKyBsaW51 eC0yLjYuMTgtcmMxL2RyaXZlcnMvdmlkZW8vbnZpZGlhL252X3Byb3RvLmgJMjAwNi0wNy0wOCAx MjoyODozMi4wMDAwMDAwMDAgKzAyMDAKQEAgLTY4LDkgKzY4LDExIEBAIGV4dGVybiB1OCBieXRl X3JldlsyNTZdOwogI2lmZGVmIENPTkZJR19GQl9OVklESUFfQkFDS0xJR0hUCiBleHRlcm4gdm9p ZCBudmlkaWFfYmxfaW5pdChzdHJ1Y3QgbnZpZGlhX3BhciAqcGFyKTsKIGV4dGVybiB2b2lkIG52 aWRpYV9ibF9leGl0KHN0cnVjdCBudmlkaWFfcGFyICpwYXIpOworZXh0ZXJuIHZvaWQgbnZpZGlh X2JsX3NldF9wb3dlcihzdHJ1Y3QgZmJfaW5mbyAqaW5mbywgaW50IHBvd2VyKTsKICNlbHNlCiBz dGF0aWMgaW5saW5lIHZvaWQgbnZpZGlhX2JsX2luaXQoc3RydWN0IG52aWRpYV9wYXIgKnBhcikg e30KIHN0YXRpYyBpbmxpbmUgdm9pZCBudmlkaWFfYmxfZXhpdChzdHJ1Y3QgbnZpZGlhX3BhciAq cGFyKSB7fQorc3RhdGljIGlubGluZSB2b2lkIG52aWRpYV9ibF9zZXRfcG93ZXIoc3RydWN0IGZi X2luZm8gKmluZm8sIGludCBwb3dlcikge30KICNlbmRpZgogCiAjZW5kaWYJCQkJLyogX19OVl9Q Uk9UT19IX18gKi8KZGlmZiAtTnJ1cCAtLWV4Y2x1ZGUtZnJvbSBsaW51eC1leGNsdWRlLWZyb20g bGludXgtMi42LjE4LXJjMS5vcmlnL2RyaXZlcnMvdmlkZW8vcml2YS9mYmRldi5jIGxpbnV4LTIu Ni4xOC1yYzEvZHJpdmVycy92aWRlby9yaXZhL2ZiZGV2LmMKLS0tIGxpbnV4LTIuNi4xOC1yYzEu b3JpZy9kcml2ZXJzL3ZpZGVvL3JpdmEvZmJkZXYuYwkyMDA2LTA3LTA4IDEyOjI3OjA4LjAwMDAw MDAwMCArMDIwMAorKysgbGludXgtMi42LjE4LXJjMS9kcml2ZXJzL3ZpZGVvL3JpdmEvZmJkZXYu YwkyMDA2LTA3LTA4IDEyOjI4OjMyLjAwMDAwMDAwMCArMDIwMApAQCAtMjc4LDkgKzI3OCwxMSBA QCBzdGF0aWMgY29uc3Qgc3RydWN0IHJpdmFfcmVncyByZWdfdGVtcGxhCiAgKi8KICNkZWZpbmUg TUlOX0xFVkVMIDB4MTU4CiAjZGVmaW5lIE1BWF9MRVZFTCAweDUzNAorI2RlZmluZSBMRVZFTF9T VEVQICgoTUFYX0xFVkVMIC0gTUlOX0xFVkVMKSAvIEZCX0JBQ0tMSUdIVF9NQVgpCiAKIHN0YXRp YyBzdHJ1Y3QgYmFja2xpZ2h0X3Byb3BlcnRpZXMgcml2YV9ibF9kYXRhOwogCisvKiBDYWxsIHdp dGggZmJfaW5mby0+YmxfbXV0ZXggaGVsZCAqLwogc3RhdGljIGludCByaXZhX2JsX2dldF9sZXZl bF9icmlnaHRuZXNzKHN0cnVjdCByaXZhX3BhciAqcGFyLAogCQlpbnQgbGV2ZWwpCiB7CkBAIC0y ODgsOSArMjkwLDcgQEAgc3RhdGljIGludCByaXZhX2JsX2dldF9sZXZlbF9icmlnaHRuZXNzKAog CWludCBubGV2ZWw7CiAKIAkvKiBHZXQgYW5kIGNvbnZlcnQgdGhlIHZhbHVlICovCi0JbXV0ZXhf bG9jaygmaW5mby0+YmxfbXV0ZXgpOwotCW5sZXZlbCA9IGluZm8tPmJsX2N1cnZlW2xldmVsXSAq IEZCX0JBQ0tMSUdIVF9NQVggLyBNQVhfTEVWRUw7Ci0JbXV0ZXhfdW5sb2NrKCZpbmZvLT5ibF9t dXRleCk7CisJbmxldmVsID0gTUlOX0xFVkVMICsgaW5mby0+YmxfY3VydmVbbGV2ZWxdICogTEVW RUxfU1RFUDsKIAogCWlmIChubGV2ZWwgPCAwKQogCQlubGV2ZWwgPSAwOwpAQCAtMzAyLDcgKzMw Miw4IEBAIHN0YXRpYyBpbnQgcml2YV9ibF9nZXRfbGV2ZWxfYnJpZ2h0bmVzcygKIAlyZXR1cm4g bmxldmVsOwogfQogCi1zdGF0aWMgaW50IHJpdmFfYmxfdXBkYXRlX3N0YXR1cyhzdHJ1Y3QgYmFj a2xpZ2h0X2RldmljZSAqYmQpCisvKiBDYWxsIHdpdGggZmJfaW5mby0+YmxfbXV0ZXggaGVsZCAq Lworc3RhdGljIGludCBfX3JpdmFfYmxfdXBkYXRlX3N0YXR1cyhzdHJ1Y3QgYmFja2xpZ2h0X2Rl dmljZSAqYmQpCiB7CiAJc3RydWN0IHJpdmFfcGFyICpwYXIgPSBjbGFzc19nZXRfZGV2ZGF0YSgm YmQtPmNsYXNzX2Rldik7CiAJVTAzMiB0bXBfcGNydCwgdG1wX3BtYzsKQEAgLTMyNyw2ICszMjgs MTkgQEAgc3RhdGljIGludCByaXZhX2JsX3VwZGF0ZV9zdGF0dXMoc3RydWN0IAogCXJldHVybiAw OwogfQogCitzdGF0aWMgaW50IHJpdmFfYmxfdXBkYXRlX3N0YXR1cyhzdHJ1Y3QgYmFja2xpZ2h0 X2RldmljZSAqYmQpCit7CisJc3RydWN0IHJpdmFfcGFyICpwYXIgPSBjbGFzc19nZXRfZGV2ZGF0 YSgmYmQtPmNsYXNzX2Rldik7CisJc3RydWN0IGZiX2luZm8gKmluZm8gPSBwY2lfZ2V0X2RydmRh dGEocGFyLT5wZGV2KTsKKwlpbnQgcmV0OworCisJbXV0ZXhfbG9jaygmaW5mby0+YmxfbXV0ZXgp OworCXJldCA9IF9fcml2YV9ibF91cGRhdGVfc3RhdHVzKGJkKTsKKwltdXRleF91bmxvY2soJmlu Zm8tPmJsX211dGV4KTsKKworCXJldHVybiByZXQ7Cit9CisKIHN0YXRpYyBpbnQgcml2YV9ibF9n ZXRfYnJpZ2h0bmVzcyhzdHJ1Y3QgYmFja2xpZ2h0X2RldmljZSAqYmQpCiB7CiAJcmV0dXJuIGJk LT5wcm9wcy0+YnJpZ2h0bmVzczsKQEAgLTMzOSw2ICszNTMsMTYgQEAgc3RhdGljIHN0cnVjdCBi YWNrbGlnaHRfcHJvcGVydGllcyByaXZhXwogCS5tYXhfYnJpZ2h0bmVzcyA9IChGQl9CQUNLTElH SFRfTEVWRUxTIC0gMSksCiB9OwogCitzdGF0aWMgdm9pZCByaXZhX2JsX3NldF9wb3dlcihzdHJ1 Y3QgZmJfaW5mbyAqaW5mbywgaW50IHBvd2VyKQoreworCW11dGV4X2xvY2soJmluZm8tPmJsX211 dGV4KTsKKwl1cCgmaW5mby0+YmxfZGV2LT5zZW0pOworCWluZm8tPmJsX2Rldi0+cHJvcHMtPnBv d2VyID0gcG93ZXI7CisJX19yaXZhX2JsX3VwZGF0ZV9zdGF0dXMoaW5mby0+YmxfZGV2KTsKKwlk b3duKCZpbmZvLT5ibF9kZXYtPnNlbSk7CisJbXV0ZXhfdW5sb2NrKCZpbmZvLT5ibF9tdXRleCk7 Cit9CisKIHN0YXRpYyB2b2lkIHJpdmFfYmxfaW5pdChzdHJ1Y3Qgcml2YV9wYXIgKnBhcikKIHsK IAlzdHJ1Y3QgZmJfaW5mbyAqaW5mbyA9IHBjaV9nZXRfZHJ2ZGF0YShwYXItPnBkZXYpOwpAQCAt NDE5LDYgKzQ0Myw3IEBAIHN0YXRpYyB2b2lkIHJpdmFfYmxfZXhpdChzdHJ1Y3Qgcml2YV9wYXIK ICNlbHNlCiBzdGF0aWMgaW5saW5lIHZvaWQgcml2YV9ibF9pbml0KHN0cnVjdCByaXZhX3BhciAq cGFyKSB7fQogc3RhdGljIGlubGluZSB2b2lkIHJpdmFfYmxfZXhpdChzdHJ1Y3Qgcml2YV9wYXIg KnBhcikge30KK3N0YXRpYyBpbmxpbmUgdm9pZCByaXZhX2JsX3NldF9wb3dlcihzdHJ1Y3QgZmJf aW5mbyAqaW5mbywgaW50IHBvd2VyKSB7fQogI2VuZGlmIC8qIENPTkZJR19GQl9SSVZBX0JBQ0tM SUdIVCAqLwogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICoKQEAgLTEzMzcsMTYgKzEzNjIsNyBAQCBz dGF0aWMgaW50IHJpdmFmYl9ibGFuayhpbnQgYmxhbmssIHN0cnVjCiAJU0VRb3V0KHBhciwgMHgw MSwgdG1wKTsKIAlDUlRDb3V0KHBhciwgMHgxYSwgdmVzYSk7CiAKLSNpZmRlZiBDT05GSUdfRkJf UklWQV9CQUNLTElHSFQKLQltdXRleF9sb2NrKCZpbmZvLT5ibF9tdXRleCk7Ci0JaWYgKGluZm8t PmJsX2RldikgewotCQlkb3duKCZpbmZvLT5ibF9kZXYtPnNlbSk7Ci0JCWluZm8tPmJsX2Rldi0+ cHJvcHMtPnBvd2VyID0gYmxhbms7Ci0JCWluZm8tPmJsX2Rldi0+cHJvcHMtPnVwZGF0ZV9zdGF0 dXMoaW5mby0+YmxfZGV2KTsKLQkJdXAoJmluZm8tPmJsX2Rldi0+c2VtKTsKLQl9Ci0JbXV0ZXhf dW5sb2NrKCZpbmZvLT5ibF9tdXRleCk7Ci0jZW5kaWYKKwlyaXZhX2JsX3NldF9wb3dlcihpbmZv LCBibGFuayk7CiAKIAlOVlRSQUNFX0xFQVZFKCk7CiAKClVzaW5nIFRvbWNhdCBidXQgbmVlZCB0 byBkbyBtb3JlPyBOZWVkIHRvIHN1cHBvcnQgd2ViIHNlcnZpY2VzLCBzZWN1cml0eT8KR2V0IHN0 dWZmIGRvbmUgcXVpY2tseSB3aXRoIHByZS1pbnRlZ3JhdGVkIHRlY2hub2xvZ3kgdG8gbWFrZSB5 b3VyIGpvYiBlYXNpZXIKRG93bmxvYWQgSUJNIFdlYlNwaGVyZSBBcHBsaWNhdGlvbiBTZXJ2ZXIg di4xLjAuMSBiYXNlZCBvbiBBcGFjaGUgR2Vyb25pbW8KaHR0cDovL3NlbC5hcy11cy5mYWxrYWcu bmV0L3NlbD9jbWQ9bG5rJmtpZD0xMjA3MDkmYmlkPTI2MzA1NyZkYXQ9MTIxNjQyCl9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkxpbnV4LWZiZGV2LWRldmVs IG1haWxpbmcgbGlzdApMaW51eC1mYmRldi1kZXZlbEBsaXN0cy5zb3VyY2Vmb3JnZS5uZXQKaHR0 cHM6Ly9saXN0cy5zb3VyY2Vmb3JnZS5uZXQvbGlzdHMvbGlzdGluZm8vbGludXgtZmJkZXYtZGV2 ZWwK