From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-10.7 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_PASS,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 2804FC04EB8 for ; Tue, 4 Dec 2018 19:04:55 +0000 (UTC) Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id E758D2081C for ; Tue, 4 Dec 2018 19:04:54 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="RDiUul/H" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org E758D2081C Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=bootlin.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=qKkGhP+io5MyGTKDUr5PWPAkAXNlxXsYKoHP08frpbI=; b=RDiUul/HzZbH3f BM8Fa96YvJq2TGhwKWL0w8CogZx9tOYzXPp5f2dfRCUIRCVuBmSX17Oj1NntoNc0g+GA81ic0JQwi x3Q1vG2W7CtYMsJwmpuvIGr4i1NmcnT/tL6CS2HSIK7nl98n42ArztmCrwNz3mVGXrxjby2E/U2Of U6GBKGgkxrF8bnsEeI5Ci14N5+StR7lMAY0HXQsE/w2pnnNNxygpIdO17MapXa86liyHwtCRKN9B9 6/1cn5v2gc8WIyoxz/Bljm41N76f2vVcrKr20GJw+PX6Gg/fmgIhkK7XmnSYLWTcGG3I06QcvMSZW U9YGn0o03cQajtWCg+sw==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.90_1 #2 (Red Hat Linux)) id 1gUG02-0002ce-7R; Tue, 04 Dec 2018 19:04:50 +0000 Received: from mail.bootlin.com ([62.4.15.54]) by bombadil.infradead.org with esmtp (Exim 4.90_1 #2 (Red Hat Linux)) id 1gUFzA-0001he-74 for linux-arm-kernel@lists.infradead.org; Tue, 04 Dec 2018 19:04:00 +0000 Received: by mail.bootlin.com (Postfix, from userid 110) id 0FB2220A59; Tue, 4 Dec 2018 20:03:46 +0100 (CET) Received: from localhost.localdomain (unknown [91.224.148.103]) by mail.bootlin.com (Postfix) with ESMTPSA id B62DB207A8; Tue, 4 Dec 2018 20:03:34 +0100 (CET) From: Miquel Raynal To: Gregory Clement , Jason Cooper , Andrew Lunn , Sebastian Hesselbarth , Zhang Rui , Eduardo Valentin , Daniel Lezcano Subject: [PATCH v3 1/6] thermal: armada: add overheat interrupt support Date: Tue, 4 Dec 2018 20:03:27 +0100 Message-Id: <20181204190332.10351-2-miquel.raynal@bootlin.com> X-Mailer: git-send-email 2.19.1 In-Reply-To: <20181204190332.10351-1-miquel.raynal@bootlin.com> References: <20181204190332.10351-1-miquel.raynal@bootlin.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20181204_110356_633110_A279910A X-CRM114-Status: GOOD ( 28.58 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Mark Rutland , devicetree@vger.kernel.org, linux-pm@vger.kernel.org, Antoine Tenart , Catalin Marinas , Will Deacon , Russell King , Maxime Chevallier , Nadav Haklai , Marc Zyngier , David Sniatkiwicz , Rob Herring , Thomas Petazzoni , Miquel Raynal , linux-arm-kernel@lists.infradead.org Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org VGhlIElQIGNhbiBtYW5hZ2UgdG8gdHJpZ2dlciBpbnRlcnJ1cHRzIG9uIG92ZXJoZWF0IHNpdHVh dGlvbiBmcm9tIGFsbAp0aGUgc2Vuc29ycy4KCkhvd2V2ZXIsIHRoZSBpbnRlcnJ1cHQgc291cmNl IGNoYW5nZXMgYWxvbmcgd2l0aCB0aGUgbGFzdCBzZWxlY3RlZApzb3VyY2UgKGllLiB0aGUgbGFz dCByZWFkIHNlbnNvciksIHdoaWNoIGlzIGFuIGluY29uc2lzdGVudCBiZWhhdmlvci4KQXZvaWQg cG9zc2libGUgZ2xpdGNoZXMgYnkgYWx3YXlzIHNlbGVjdGluZyBiYWNrIG9ubHkgb25lIGNoYW5u ZWwgd2hpY2gKd2lsbCB0aGVuIGJlIHJlZmVyZW5jZWQgYXMgdGhlICJvdmVyaGVhdF9zZW5zb3Ii IChhcmJpdHJhcmlseTogdGhlIGZpcnN0CmluIHRoZSBEVCB3aGljaCBoYXMgYSBjcml0aWNhbCB0 cmlwIHBvaW50IGZpbGxlZCBpbikuCgpJdCBpcyBwb3NzaWJsZSB0aGF0IHRoZSBzY2FuIG9mIGFs bCB0aGVybWFsIHpvbmUgbm9kZXMgZGlkIG5vdCBicmluZyBhCmNyaXRpY2FsIHRyaXAgcG9pbnQg ZnJvbSB3aGljaCB0aGUgb3ZlcmhlYXQgaW50ZXJydXB0IGNvdWxkIGJlCmNvbmZpZ3VyZWQuIElu IHRoaXMgY2FzZSBqdXN0IGNvbXBsYWluIGJ1dCBkbyBub3QgZmFpbCB0aGUgcHJvYmUuCgpBbHNv IGRpc2FibGUgc2Vuc29yIHN3aXRjaCBkdXJpbmcgb3ZlcmhlYXQgc2l0dWF0aW9ucyBiZWNhdXNl IGNoYW5naW5nCnRoZSBjaGFubmVsIHdoaWxlIHRoZSBzeXN0ZW0gaXMgdG9vIGhvdCBjb3VsZCBj bGVhciB0aGUgb3ZlcmhlYXQgc3RhdGUKYnkgY2hhbmdpbmcgdGhlIHNvdXJjZSB3aGlsZSB0aGUg dGVtcGVyYXR1cmUgaXMgc3RpbGwgdmVyeSBoaWdoLgoKRXZlbiBpZiB0aGUgb3ZlcmhlYXQgc3Rh dGUgaXMgbm90IGRlY2xhcmVkLCBvdmVyaGVhdCBpbnRlcnJ1cHQgbXVzdCBiZQpjbGVhcmVkIGJ5 IHJlYWRpbmcgdGhlIERGWCBpbnRlcnJ1cHQgY2F1c2UgX2FmdGVyXyB0aGUgdGVtcGVyYXR1cmUg aGFzCmZhbGxlbiBkb3duIHRvIHRoZSBsb3cgdGhyZXNob2xkLCBvdGhlcndpc2UgZnV0dXJlIHBv c3NpYmxlIGludGVycnVwdHMKd291bGQgbm90IGJlIHNlcnZlZC4gQSB3b3JrIHBvbGxzIHRoZSBj b3JyZXNwb25kaW5nIHJlZ2lzdGVyIHVudGlsIHRoZQpvdmVyaGVhdCBmbGFnIGdldHMgY2xlYXJl ZCBpbiB0aGlzIGNhc2UuCgpTdWdnZXN0ZWQtYnk6IERhdmlkIFNuaWF0a2l3aWN6IDxkYXZpZHNu QG1hcnZlbGwuY29tPgpTaWduZWQtb2ZmLWJ5OiBNaXF1ZWwgUmF5bmFsIDxtaXF1ZWwucmF5bmFs QGJvb3RsaW4uY29tPgotLS0KIGRyaXZlcnMvdGhlcm1hbC9hcm1hZGFfdGhlcm1hbC5jIHwgMjcw ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0KIDEgZmlsZSBjaGFuZ2VkLCAyNjkgaW5z ZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdGhlcm1hbC9h cm1hZGFfdGhlcm1hbC5jIGIvZHJpdmVycy90aGVybWFsL2FybWFkYV90aGVybWFsLmMKaW5kZXgg OTJmNjdkNDBmMmU5Li45M2FiODEzYmZlMjEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdGhlcm1hbC9h cm1hZGFfdGhlcm1hbC5jCisrKyBiL2RyaXZlcnMvdGhlcm1hbC9hcm1hZGFfdGhlcm1hbC5jCkBA IC0yNiw2ICsyNiwxMSBAQAogI2luY2x1ZGUgPGxpbnV4L2lvcG9sbC5oPgogI2luY2x1ZGUgPGxp bnV4L21mZC9zeXNjb24uaD4KICNpbmNsdWRlIDxsaW51eC9yZWdtYXAuaD4KKyNpbmNsdWRlIDxs aW51eC9pbnRlcnJ1cHQuaD4KKworI2luY2x1ZGUgInRoZXJtYWxfY29yZS5oIgorCisjZGVmaW5l IFRPX01DRUxTSVVTKGMpCQkJKChjKSAqIDEwMDApCiAKIC8qIFRoZXJtYWwgTWFuYWdlciBDb250 cm9sIGFuZCBTdGF0dXMgUmVnaXN0ZXIgKi8KICNkZWZpbmUgUE1VX1REQzBfU1dfUlNUX01BU0sJ CSgweDEgPDwgMSkKQEAgLTYxLDkgKzY2LDEzIEBACiAjZGVmaW5lIENPTlRST0wxX1RTRU5fQVZH X01BU0sJCTB4NwogI2RlZmluZSBDT05UUk9MMV9FWFRfVFNFTl9TV19SRVNFVAlCSVQoNykKICNk ZWZpbmUgQ09OVFJPTDFfRVhUX1RTRU5fSFdfUkVTRVRuCUJJVCg4KQorI2RlZmluZSBDT05UUk9M MV9UU0VOX0lOVF9FTgkJQklUKDI1KQorI2RlZmluZSBDT05UUk9MMV9UU0VOX1NFTEVDVF9PRkYJ MjEKKyNkZWZpbmUgQ09OVFJPTDFfVFNFTl9TRUxFQ1RfTUFTSwkweDMKIAogI2RlZmluZSBTVEFU VVNfUE9MTF9QRVJJT0RfVVMJCTEwMDAKICNkZWZpbmUgU1RBVFVTX1BPTExfVElNRU9VVF9VUwkJ MTAwMDAwCisjZGVmaW5lIE9WRVJIRUFUX0lOVF9QT0xMX0RFTEFZX01TCTEwMDAKIAogc3RydWN0 IGFybWFkYV90aGVybWFsX2RhdGE7CiAKQEAgLTc1LDcgKzg0LDExIEBAIHN0cnVjdCBhcm1hZGFf dGhlcm1hbF9wcml2IHsKIAkvKiBzZXJpYWxpemUgdGVtcGVyYXR1cmUgcmVhZHMvdXBkYXRlcyAq LwogCXN0cnVjdCBtdXRleCB1cGRhdGVfbG9jazsKIAlzdHJ1Y3QgYXJtYWRhX3RoZXJtYWxfZGF0 YSAqZGF0YTsKKwlzdHJ1Y3QgdGhlcm1hbF96b25lX2RldmljZSAqb3ZlcmhlYXRfc2Vuc29yOwor CWludCBpbnRlcnJ1cHRfc291cmNlOwogCWludCBjdXJyZW50X2NoYW5uZWw7CisJbG9uZyBjdXJy ZW50X3RocmVzaG9sZDsKKwlsb25nIGN1cnJlbnRfaHlzdGVyZXNpczsKIH07CiAKIHN0cnVjdCBh cm1hZGFfdGhlcm1hbF9kYXRhIHsKQEAgLTkzLDEyICsxMDYsMjAgQEAgc3RydWN0IGFybWFkYV90 aGVybWFsX2RhdGEgewogCS8qIFJlZ2lzdGVyIHNoaWZ0IGFuZCBtYXNrIHRvIGFjY2VzcyB0aGUg c2Vuc29yIHRlbXBlcmF0dXJlICovCiAJdW5zaWduZWQgaW50IHRlbXBfc2hpZnQ7CiAJdW5zaWdu ZWQgaW50IHRlbXBfbWFzazsKKwl1bnNpZ25lZCBpbnQgdGhyZXNoX3NoaWZ0OworCXVuc2lnbmVk IGludCBoeXN0X3NoaWZ0OworCXVuc2lnbmVkIGludCBoeXN0X21hc2s7CiAJdTMyIGlzX3ZhbGlk X2JpdDsKIAogCS8qIFN5c2NvbiBhY2Nlc3MgKi8KIAl1bnNpZ25lZCBpbnQgc3lzY29uX2NvbnRy b2wwX29mZjsKIAl1bnNpZ25lZCBpbnQgc3lzY29uX2NvbnRyb2wxX29mZjsKIAl1bnNpZ25lZCBp bnQgc3lzY29uX3N0YXR1c19vZmY7CisJdW5zaWduZWQgaW50IGRmeF9pcnFfY2F1c2Vfb2ZmOwor CXVuc2lnbmVkIGludCBkZnhfaXJxX21hc2tfb2ZmOworCXVuc2lnbmVkIGludCBkZnhfb3Zlcmhl YXRfaXJxOworCXVuc2lnbmVkIGludCBkZnhfc2VydmVyX2lycV9tYXNrX29mZjsKKwl1bnNpZ25l ZCBpbnQgZGZ4X3NlcnZlcl9pcnFfZW47CiAKIAkvKiBPbmUgc2Vuc29yIGlzIGluIHRoZSB0aGVy bWFsIElDLCB0aGUgb3RoZXJzIGFyZSBpbiB0aGUgQ1BVcyBpZiBhbnkgKi8KIAl1bnNpZ25lZCBp bnQgY3B1X25yOwpAQCAtMjcyLDYgKzI5Myw0MSBAQCBzdGF0aWMgYm9vbCBhcm1hZGFfaXNfdmFs aWQoc3RydWN0IGFybWFkYV90aGVybWFsX3ByaXYgKnByaXYpCiAJcmV0dXJuIHJlZyAmIHByaXYt PmRhdGEtPmlzX3ZhbGlkX2JpdDsKIH0KIAorc3RhdGljIHZvaWQgYXJtYWRhX2VuYWJsZV9vdmVy aGVhdF9pbnRlcnJ1cHQoc3RydWN0IGFybWFkYV90aGVybWFsX3ByaXYgKnByaXYpCit7CisJc3Ry dWN0IGFybWFkYV90aGVybWFsX2RhdGEgKmRhdGEgPSBwcml2LT5kYXRhOworCXUzMiByZWc7CisK KwkvKiBDbGVhciBERlggdGVtcGVyYXR1cmUgSVJRIGNhdXNlICovCisJcmVnbWFwX3JlYWQocHJp di0+c3lzY29uLCBkYXRhLT5kZnhfaXJxX2NhdXNlX29mZiwgJnJlZyk7CisKKwkvKiBFbmFibGUg REZYIFRlbXBlcmF0dXJlIElSUSAqLworCXJlZ21hcF9yZWFkKHByaXYtPnN5c2NvbiwgZGF0YS0+ ZGZ4X2lycV9tYXNrX29mZiwgJnJlZyk7CisJcmVnIHw9IGRhdGEtPmRmeF9vdmVyaGVhdF9pcnE7 CisJcmVnbWFwX3dyaXRlKHByaXYtPnN5c2NvbiwgZGF0YS0+ZGZ4X2lycV9tYXNrX29mZiwgcmVn KTsKKworCS8qIEVuYWJsZSBERlggc2VydmVyIElSUSAqLworCXJlZ21hcF9yZWFkKHByaXYtPnN5 c2NvbiwgZGF0YS0+ZGZ4X3NlcnZlcl9pcnFfbWFza19vZmYsICZyZWcpOworCXJlZyB8PSBkYXRh LT5kZnhfc2VydmVyX2lycV9lbjsKKwlyZWdtYXBfd3JpdGUocHJpdi0+c3lzY29uLCBkYXRhLT5k Znhfc2VydmVyX2lycV9tYXNrX29mZiwgcmVnKTsKKworCS8qIEVuYWJsZSBvdmVyaGVhdCBpbnRl cnJ1cHQgKi8KKwlyZWdtYXBfcmVhZChwcml2LT5zeXNjb24sIGRhdGEtPnN5c2Nvbl9jb250cm9s MV9vZmYsICZyZWcpOworCXJlZyB8PSBDT05UUk9MMV9UU0VOX0lOVF9FTjsKKwlyZWdtYXBfd3Jp dGUocHJpdi0+c3lzY29uLCBkYXRhLT5zeXNjb25fY29udHJvbDFfb2ZmLCByZWcpOworfQorCitz dGF0aWMgdm9pZCBfX21heWJlX3VudXNlZAorYXJtYWRhX2Rpc2FibGVfb3ZlcmhlYXRfaW50ZXJy dXB0KHN0cnVjdCBhcm1hZGFfdGhlcm1hbF9wcml2ICpwcml2KQoreworCXN0cnVjdCBhcm1hZGFf dGhlcm1hbF9kYXRhICpkYXRhID0gcHJpdi0+ZGF0YTsKKwl1MzIgcmVnOworCisJcmVnbWFwX3Jl YWQocHJpdi0+c3lzY29uLCBkYXRhLT5zeXNjb25fY29udHJvbDFfb2ZmLCAmcmVnKTsKKwlyZWcg Jj0gfkNPTlRST0wxX1RTRU5fSU5UX0VOOworCXJlZ21hcF93cml0ZShwcml2LT5zeXNjb24sIGRh dGEtPnN5c2Nvbl9jb250cm9sMV9vZmYsIHJlZyk7Cit9CisKIC8qIFRoZXJlIGlzIGN1cnJlbnRs eSBubyBib2FyZCB3aXRoIG1vcmUgdGhhbiBvbmUgc2Vuc29yIHBlciBjaGFubmVsICovCiBzdGF0 aWMgaW50IGFybWFkYV9zZWxlY3RfY2hhbm5lbChzdHJ1Y3QgYXJtYWRhX3RoZXJtYWxfcHJpdiAq cHJpdiwgaW50IGNoYW5uZWwpCiB7CkBAIC0zODgsNiArNDQ0LDE0IEBAIHN0YXRpYyBpbnQgYXJt YWRhX2dldF90ZW1wKHZvaWQgKl9zZW5zb3IsIGludCAqdGVtcCkKIAogCS8qIERvIHRoZSBhY3R1 YWwgcmVhZGluZyAqLwogCXJldCA9IGFybWFkYV9yZWFkX3NlbnNvcihwcml2LCB0ZW1wKTsKKwlp ZiAocmV0KQorCQlnb3RvIHVubG9ja19tdXRleDsKKworCS8qCisJICogU2VsZWN0IGJhY2sgdGhl IGludGVycnVwdCBzb3VyY2UgY2hhbm5lbCBmcm9tIHdoaWNoIGEgcG90ZW50aWFsCisJICogY3Jp dGljYWwgdHJpcCBwb2ludCBoYXMgYmVlbiBzZXQuCisJICovCisJcmV0ID0gYXJtYWRhX3NlbGVj dF9jaGFubmVsKHByaXYsIHByaXYtPmludGVycnVwdF9zb3VyY2UpOwogCiB1bmxvY2tfbXV0ZXg6 CiAJbXV0ZXhfdW5sb2NrKCZwcml2LT51cGRhdGVfbG9jayk7CkBAIC0zOTksNiArNDYzLDEyMyBA QCBzdGF0aWMgc3RydWN0IHRoZXJtYWxfem9uZV9vZl9kZXZpY2Vfb3BzIG9mX29wcyA9IHsKIAku Z2V0X3RlbXAgPSBhcm1hZGFfZ2V0X3RlbXAsCiB9OwogCitzdGF0aWMgdW5zaWduZWQgaW50IGFy bWFkYV9tY190b19yZWdfdGVtcChzdHJ1Y3QgYXJtYWRhX3RoZXJtYWxfZGF0YSAqZGF0YSwKKwkJ CQkJICB1bnNpZ25lZCBpbnQgdGVtcF9tYykKK3sKKwlzNjQgYiA9IGRhdGEtPmNvZWZfYjsKKwlz NjQgbSA9IGRhdGEtPmNvZWZfbTsKKwlzNjQgZGl2ID0gZGF0YS0+Y29lZl9kaXY7CisJdW5zaWdu ZWQgaW50IHNhbXBsZTsKKworCWlmIChkYXRhLT5pbnZlcnRlZCkKKwkJc2FtcGxlID0gZGl2X3M2 NCgoKHRlbXBfbWMgKiBkaXYpICsgYiksIG0pOworCWVsc2UKKwkJc2FtcGxlID0gZGl2X3M2NCgo YiAtICh0ZW1wX21jICogZGl2KSksIG0pOworCisJcmV0dXJuIHNhbXBsZSAmIGRhdGEtPnRlbXBf bWFzazsKK30KKworLyoKKyAqIFRoZSBkb2N1bWVudGF0aW9uIHN0YXRlczoKKyAqIGhpZ2gvbG93 IHdhdGVybWFyayA9IHRocmVzaG9sZCArLy0gMC40NzYxICogMl4oaHlzdGVyZXNpcyArIDIpCisg KiB3aGljaCBpcyB0aGUgbWF0aGVtYXRpY2FsIGRlcml2YXRpb24gZm9yOgorICogMHgwIDw9PiAx LjnCsEMsIDB4MSA8PT4gMy44wrBDLCAweDIgPD0+IDcuNsKwQywgMHgzIDw9PiAxNS4ywrBDCisg Ki8KK3N0YXRpYyB1bnNpZ25lZCBpbnQgaHlzdF9sZXZlbHNfbWNbXSA9IHsxOTAwLCAzODAwLCA3 NjAwLCAxNTIwMH07CisKK3N0YXRpYyB1bnNpZ25lZCBpbnQgYXJtYWRhX21jX3RvX3JlZ19oeXN0 KHN0cnVjdCBhcm1hZGFfdGhlcm1hbF9kYXRhICpkYXRhLAorCQkJCQkgIHVuc2lnbmVkIGludCBo eXN0X21jKQoreworCWludCBpOworCisJLyoKKwkgKiBXZSB3aWxsIGFsd2F5cyB0YWtlIHRoZSBz bWFsbGVzdCBwb3NzaWJsZSBoeXN0ZXJlc2lzIHRvIGF2b2lkIHJpc2tpbmcKKwkgKiB0aGUgaGFy ZHdhcmUgaW50ZWdyaXR5IGJ5IGVubGFyZ2luZyB0aGUgdGhyZXNob2xkIGJ5ICs4wrBDIGluIHRo ZQorCSAqIHdvcnN0IGNhc2UuCisJICovCisJZm9yIChpID0gQVJSQVlfU0laRShoeXN0X2xldmVs c19tYykgLSAxOyBpID4gMDsgaS0tKQorCQlpZiAoaHlzdF9tYyA+PSBoeXN0X2xldmVsc19tY1tp XSkKKwkJCWJyZWFrOworCisJcmV0dXJuIGkgJiBkYXRhLT5oeXN0X21hc2s7Cit9CisKK3N0YXRp YyB2b2lkIGFybWFkYV9zZXRfb3ZlcmhlYXRfdGhyZXNob2xkcyhzdHJ1Y3QgYXJtYWRhX3RoZXJt YWxfcHJpdiAqcHJpdiwKKwkJCQkJICAgaW50IHRocmVzaF9tYywgaW50IGh5c3RfbWMpCit7CisJ c3RydWN0IGFybWFkYV90aGVybWFsX2RhdGEgKmRhdGEgPSBwcml2LT5kYXRhOworCXVuc2lnbmVk IGludCB0aHJlc2hvbGQgPSBhcm1hZGFfbWNfdG9fcmVnX3RlbXAoZGF0YSwgdGhyZXNoX21jKTsK Kwl1bnNpZ25lZCBpbnQgaHlzdGVyZXNpcyA9IGFybWFkYV9tY190b19yZWdfaHlzdChkYXRhLCBo eXN0X21jKTsKKwl1MzIgY3RybDE7CisKKwlyZWdtYXBfcmVhZChwcml2LT5zeXNjb24sIGRhdGEt PnN5c2Nvbl9jb250cm9sMV9vZmYsICZjdHJsMSk7CisKKwkvKiBTZXQgVGhyZXNob2xkICovCisJ aWYgKHRocmVzaF9tYyA+PSAwKSB7CisJCWN0cmwxICY9IH4oZGF0YS0+dGVtcF9tYXNrIDw8IGRh dGEtPnRocmVzaF9zaGlmdCk7CisJCWN0cmwxIHw9IHRocmVzaG9sZCA8PCBkYXRhLT50aHJlc2hf c2hpZnQ7CisJCXByaXYtPmN1cnJlbnRfdGhyZXNob2xkID0gdGhyZXNoX21jOworCX0KKworCS8q IFNldCBIeXN0ZXJlc2lzICovCisJaWYgKGh5c3RfbWMgPj0gMCkgeworCQljdHJsMSAmPSB+KGRh dGEtPmh5c3RfbWFzayA8PCBkYXRhLT5oeXN0X3NoaWZ0KTsKKwkJY3RybDEgfD0gaHlzdGVyZXNp cyA8PCBkYXRhLT5oeXN0X3NoaWZ0OworCQlwcml2LT5jdXJyZW50X2h5c3RlcmVzaXMgPSBoeXN0 X21jOworCX0KKworCXJlZ21hcF93cml0ZShwcml2LT5zeXNjb24sIGRhdGEtPnN5c2Nvbl9jb250 cm9sMV9vZmYsIGN0cmwxKTsKK30KKworc3RhdGljIGlycXJldHVybl90IGFybWFkYV9vdmVyaGVh dF9pc3IoaW50IGlycSwgdm9pZCAqYmxvYikKK3sKKwkvKgorCSAqIERpc2FibGUgdGhlIElSUSBh bmQgY29udGludWUgaW4gdGhyZWFkIGNvbnRleHQgKHRoZXJtYWwgY29yZQorCSAqIG5vdGlmaWNh dGlvbiBhbmQgdGVtcGVyYXR1cmUgbW9uaXRvcmluZykuCisJICovCisJZGlzYWJsZV9pcnFfbm9z eW5jKGlycSk7CisKKwlyZXR1cm4gSVJRX1dBS0VfVEhSRUFEOworfQorCitzdGF0aWMgaXJxcmV0 dXJuX3QgYXJtYWRhX292ZXJoZWF0X2lzcl90aHJlYWQoaW50IGlycSwgdm9pZCAqYmxvYikKK3sK KwlzdHJ1Y3QgYXJtYWRhX3RoZXJtYWxfcHJpdiAqcHJpdiA9IGJsb2I7CisJaW50IGxvd190aHJl c2hvbGQgPSBwcml2LT5jdXJyZW50X3RocmVzaG9sZCAtIHByaXYtPmN1cnJlbnRfaHlzdGVyZXNp czsKKwlpbnQgdGVtcGVyYXR1cmU7CisJdTMyIGR1bW15OworCWludCByZXQ7CisKKwkvKiBOb3Rp ZnkgdGhlIGNvcmUgaW4gdGhyZWFkIGNvbnRleHQgKi8KKwl0aGVybWFsX3pvbmVfZGV2aWNlX3Vw ZGF0ZShwcml2LT5vdmVyaGVhdF9zZW5zb3IsCisJCQkJICAgVEhFUk1BTF9FVkVOVF9VTlNQRUNJ RklFRCk7CisKKwkvKgorCSAqIFRoZSBvdmVyaGVhdCBpbnRlcnJ1cHQgbXVzdCBiZSBjbGVhcmVk IGJ5IHJlYWRpbmcgdGhlIERGWCBpbnRlcnJ1cHQKKwkgKiBjYXVzZSBfYWZ0ZXJfIHRoZSB0ZW1w ZXJhdHVyZSBoYXMgZmFsbGVuIGRvd24gdG8gdGhlIGxvdyB0aHJlc2hvbGQuCisJICogT3RoZXJ3 aXNlIGZ1dHVyZSBpbnRlcnJ1cHRzIG1pZ2h0IG5vdCBiZSBzZXJ2ZWQuCisJICovCisJZG8gewor CQltc2xlZXAoT1ZFUkhFQVRfSU5UX1BPTExfREVMQVlfTVMpOworCQltdXRleF9sb2NrKCZwcml2 LT51cGRhdGVfbG9jayk7CisJCXJldCA9IGFybWFkYV9yZWFkX3NlbnNvcihwcml2LCAmdGVtcGVy YXR1cmUpOworCQltdXRleF91bmxvY2soJnByaXYtPnVwZGF0ZV9sb2NrKTsKKwkJaWYgKHJldCkK KwkJCWdvdG8gZW5hYmxlX2lycTsKKwl9IHdoaWxlICh0ZW1wZXJhdHVyZSA+PSBsb3dfdGhyZXNo b2xkKTsKKworCXJlZ21hcF9yZWFkKHByaXYtPnN5c2NvbiwgcHJpdi0+ZGF0YS0+ZGZ4X2lycV9j YXVzZV9vZmYsICZkdW1teSk7CisKKwkvKiBOb3RpZnkgdGhlIHRoZXJtYWwgY29yZSB0aGF0IHRo ZSB0ZW1wZXJhdHVyZSBpcyBhY2NlcHRhYmxlIGFnYWluICovCisJdGhlcm1hbF96b25lX2Rldmlj ZV91cGRhdGUocHJpdi0+b3ZlcmhlYXRfc2Vuc29yLAorCQkJCSAgIFRIRVJNQUxfRVZFTlRfVU5T UEVDSUZJRUQpOworCitlbmFibGVfaXJxOgorCWVuYWJsZV9pcnEoaXJxKTsKKworCXJldHVybiBJ UlFfSEFORExFRDsKK30KKwogc3RhdGljIGNvbnN0IHN0cnVjdCBhcm1hZGFfdGhlcm1hbF9kYXRh IGFybWFkYXhwX2RhdGEgPSB7CiAJLmluaXQgPSBhcm1hZGF4cF9pbml0LAogCS50ZW1wX3NoaWZ0 ID0gMTAsCkBAIC00NTQsNiArNjM1LDkgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBhcm1hZGFfdGhl cm1hbF9kYXRhIGFybWFkYV9hcDgwNl9kYXRhID0gewogCS5pc192YWxpZF9iaXQgPSBCSVQoMTYp LAogCS50ZW1wX3NoaWZ0ID0gMCwKIAkudGVtcF9tYXNrID0gMHgzZmYsCisJLnRocmVzaF9zaGlm dCA9IDMsCisJLmh5c3Rfc2hpZnQgPSAxOSwKKwkuaHlzdF9tYXNrID0gMHgzLAogCS5jb2VmX2Ig PSAtMTUwMDAwTEwsCiAJLmNvZWZfbSA9IDQyM1VMTCwKIAkuY29lZl9kaXYgPSAxLApAQCAtNDYy LDYgKzY0NiwxMSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGFybWFkYV90aGVybWFsX2RhdGEgYXJt YWRhX2FwODA2X2RhdGEgPSB7CiAJLnN5c2Nvbl9jb250cm9sMF9vZmYgPSAweDg0LAogCS5zeXNj b25fY29udHJvbDFfb2ZmID0gMHg4OCwKIAkuc3lzY29uX3N0YXR1c19vZmYgPSAweDhDLAorCS5k ZnhfaXJxX2NhdXNlX29mZiA9IDB4MTA4LAorCS5kZnhfaXJxX21hc2tfb2ZmID0gMHgxMEMsCisJ LmRmeF9vdmVyaGVhdF9pcnEgPSBCSVQoMjIpLAorCS5kZnhfc2VydmVyX2lycV9tYXNrX29mZiA9 IDB4MTA0LAorCS5kZnhfc2VydmVyX2lycV9lbiA9IEJJVCgxKSwKIAkuY3B1X25yID0gNCwKIH07 CiAKQEAgLTQ3MCw2ICs2NTksOSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGFybWFkYV90aGVybWFs X2RhdGEgYXJtYWRhX2NwMTEwX2RhdGEgPSB7CiAJLmlzX3ZhbGlkX2JpdCA9IEJJVCgxMCksCiAJ LnRlbXBfc2hpZnQgPSAwLAogCS50ZW1wX21hc2sgPSAweDNmZiwKKwkudGhyZXNoX3NoaWZ0ID0g MTYsCisJLmh5c3Rfc2hpZnQgPSAyNiwKKwkuaHlzdF9tYXNrID0gMHgzLAogCS5jb2VmX2IgPSAx MTcyNDk5MTAwVUxMLAogCS5jb2VmX20gPSAyMDAwMDk2VUxMLAogCS5jb2VmX2RpdiA9IDQyMDEs CkBAIC00NzcsNiArNjY5LDExIEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgYXJtYWRhX3RoZXJtYWxf ZGF0YSBhcm1hZGFfY3AxMTBfZGF0YSA9IHsKIAkuc3lzY29uX2NvbnRyb2wwX29mZiA9IDB4NzAs CiAJLnN5c2Nvbl9jb250cm9sMV9vZmYgPSAweDc0LAogCS5zeXNjb25fc3RhdHVzX29mZiA9IDB4 NzgsCisJLmRmeF9pcnFfY2F1c2Vfb2ZmID0gMHgxMDgsCisJLmRmeF9pcnFfbWFza19vZmYgPSAw eDEwQywKKwkuZGZ4X292ZXJoZWF0X2lycSA9IEJJVCgyMCksCisJLmRmeF9zZXJ2ZXJfaXJxX21h c2tfb2ZmID0gMHgxMDQsCisJLmRmeF9zZXJ2ZXJfaXJxX2VuID0gQklUKDEpLAogfTsKIAogc3Rh dGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgYXJtYWRhX3RoZXJtYWxfaWRfdGFibGVbXSA9 IHsKQEAgLTU5Miw2ICs3ODksNDggQEAgc3RhdGljIHZvaWQgYXJtYWRhX3NldF9zYW5lX25hbWUo c3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiwKIAl9IHdoaWxlIChpbnNhbmVfY2hhcik7CiB9 CiAKKy8qCisgKiBUaGUgSVAgY2FuIG1hbmFnZSB0byB0cmlnZ2VyIGludGVycnVwdHMgb24gb3Zl cmhlYXQgc2l0dWF0aW9uIGZyb20gYWxsIHRoZQorICogc2Vuc29ycy4gSG93ZXZlciwgdGhlIGlu dGVycnVwdCBzb3VyY2UgY2hhbmdlcyBhbG9uZyB3aXRoIHRoZSBsYXN0IHNlbGVjdGVkCisgKiBz b3VyY2UgKGllLiB0aGUgbGFzdCByZWFkIHNlbnNvciksIHdoaWNoIGlzIGFuIGluY29uc2lzdGVu dCBiZWhhdmlvci4gQXZvaWQKKyAqIHBvc3NpYmxlIGdsaXRjaGVzIGJ5IGFsd2F5cyBzZWxlY3Rp bmcgYmFjayBvbmx5IG9uZSBjaGFubmVsIChhcmJpdHJhcmlseTogdGhlCisgKiBmaXJzdCBpbiB0 aGUgRFQgd2hpY2ggaGFzIGEgY3JpdGljYWwgdHJpcCBwb2ludCkuIFdlIGFsc28gZGlzYWJsZSBz ZW5zb3IKKyAqIHN3aXRjaCBkdXJpbmcgb3ZlcmhlYXQgc2l0dWF0aW9ucy4KKyAqLworc3RhdGlj IGludCBhcm1hZGFfY29uZmlndXJlX292ZXJoZWF0X2ludChzdHJ1Y3QgYXJtYWRhX3RoZXJtYWxf cHJpdiAqcHJpdiwKKwkJCQkJIHN0cnVjdCB0aGVybWFsX3pvbmVfZGV2aWNlICp0eiwKKwkJCQkJ IGludCBzZW5zb3JfaWQpCit7CisJLyogUmV0cmlldmUgdGhlIGNyaXRpY2FsIHRyaXAgcG9pbnQg dG8gZW5hYmxlIHRoZSBvdmVyaGVhdCBpbnRlcnJ1cHQgKi8KKwljb25zdCBzdHJ1Y3QgdGhlcm1h bF90cmlwICp0cmlwcyA9IG9mX3RoZXJtYWxfZ2V0X3RyaXBfcG9pbnRzKHR6KTsKKwlpbnQgcmV0 OworCWludCBpOworCisJaWYgKCF0cmlwcykKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwlmb3IgKGkg PSAwOyBpIDwgb2ZfdGhlcm1hbF9nZXRfbnRyaXBzKHR6KTsgaSsrKQorCQlpZiAodHJpcHNbaV0u dHlwZSA9PSBUSEVSTUFMX1RSSVBfQ1JJVElDQUwpCisJCQlicmVhazsKKworCWlmIChpID09IG9m X3RoZXJtYWxfZ2V0X250cmlwcyh0eikpCisJCXJldHVybiAtRUlOVkFMOworCisJcmV0ID0gYXJt YWRhX3NlbGVjdF9jaGFubmVsKHByaXYsIHNlbnNvcl9pZCk7CisJaWYgKHJldCkKKwkJcmV0dXJu IHJldDsKKworCWFybWFkYV9zZXRfb3ZlcmhlYXRfdGhyZXNob2xkcyhwcml2LAorCQkJCSAgICAg ICB0cmlwc1tpXS50ZW1wZXJhdHVyZSwKKwkJCQkgICAgICAgdHJpcHNbaV0uaHlzdGVyZXNpcyk7 CisJcHJpdi0+b3ZlcmhlYXRfc2Vuc29yID0gdHo7CisJcHJpdi0+aW50ZXJydXB0X3NvdXJjZSA9 IHNlbnNvcl9pZDsKKworCWFybWFkYV9lbmFibGVfb3ZlcmhlYXRfaW50ZXJydXB0KHByaXYpOwor CisJcmV0dXJuIDA7Cit9CisKIHN0YXRpYyBpbnQgYXJtYWRhX3RoZXJtYWxfcHJvYmUoc3RydWN0 IHBsYXRmb3JtX2RldmljZSAqcGRldikKIHsKIAlzdHJ1Y3QgdGhlcm1hbF96b25lX2RldmljZSAq dHo7CkBAIC01OTksNyArODM4LDcgQEAgc3RhdGljIGludCBhcm1hZGFfdGhlcm1hbF9wcm9iZShz dHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQogCXN0cnVjdCBhcm1hZGFfZHJ2ZGF0YSAqZHJ2 ZGF0YTsKIAljb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkICptYXRjaDsKIAlzdHJ1Y3QgYXJtYWRh X3RoZXJtYWxfcHJpdiAqcHJpdjsKLQlpbnQgc2Vuc29yX2lkOworCWludCBzZW5zb3JfaWQsIGly cTsKIAlpbnQgcmV0OwogCiAJbWF0Y2ggPSBvZl9tYXRjaF9kZXZpY2UoYXJtYWRhX3RoZXJtYWxf aWRfdGFibGUsICZwZGV2LT5kZXYpOwpAQCAtNjY5LDYgKzkwOCwyMyBAQCBzdGF0aWMgaW50IGFy bWFkYV90aGVybWFsX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCiAJZHJ2ZGF0 YS0+ZGF0YS5wcml2ID0gcHJpdjsKIAlwbGF0Zm9ybV9zZXRfZHJ2ZGF0YShwZGV2LCBkcnZkYXRh KTsKIAorCWlycSA9IHBsYXRmb3JtX2dldF9pcnEocGRldiwgMCk7CisJaWYgKGlycSA9PSAtRVBS T0JFX0RFRkVSKQorCQlyZXR1cm4gaXJxOworCisJLyogVGhlIG92ZXJoZWF0IGludGVycnVwdCBm ZWF0dXJlIGlzIG5vdCBtYW5kYXRvcnkgKi8KKwlpZiAoaXJxID4gMCkgeworCQlyZXQgPSBkZXZt X3JlcXVlc3RfdGhyZWFkZWRfaXJxKCZwZGV2LT5kZXYsIGlycSwKKwkJCQkJCWFybWFkYV9vdmVy aGVhdF9pc3IsCisJCQkJCQlhcm1hZGFfb3ZlcmhlYXRfaXNyX3RocmVhZCwKKwkJCQkJCTAsIE5V TEwsIHByaXYpOworCQlpZiAocmV0KSB7CisJCQlkZXZfZXJyKCZwZGV2LT5kZXYsICJDYW5ub3Qg cmVxdWVzdCB0aHJlYWRlZCBJUlEgJWRcbiIsCisJCQkJaXJxKTsKKwkJCXJldHVybiByZXQ7CisJ CX0KKwl9CisKIAkvKgogCSAqIFRoZXJlIGlzIG9uZSBjaGFubmVsIGZvciB0aGUgSUMgYW5kIG9u ZSBwZXIgQ1BVIChpZiBhbnkpLCBlYWNoCiAJICogY2hhbm5lbCBoYXMgb25lIHNlbnNvci4KQEAg LTY5Miw4ICs5NDgsMjAgQEAgc3RhdGljIGludCBhcm1hZGFfdGhlcm1hbF9wcm9iZShzdHJ1Y3Qg cGxhdGZvcm1fZGV2aWNlICpwZGV2KQogCQkJZGV2bV9rZnJlZSgmcGRldi0+ZGV2LCBzZW5zb3Ip OwogCQkJY29udGludWU7CiAJCX0KKworCQkvKgorCQkgKiBUaGUgZmlyc3QgY2hhbm5lbCB0aGF0 IGhhcyBhIGNyaXRpY2FsIHRyaXAgcG9pbnQgcmVnaXN0ZXJlZAorCQkgKiBpbiB0aGUgRFQgd2ls bCBzZXJ2ZSBhcyBpbnRlcnJ1cHQgc291cmNlLiBPdGhlcnMgcG9zc2libGUKKwkJICogY3JpdGlj YWwgdHJpcCBwb2ludHMgd2lsbCBzaW1wbHkgYmUgaWdub3JlZCBieSB0aGUgZHJpdmVyLgorCQkg Ki8KKwkJaWYgKGlycSA+IDAgJiYgIXByaXYtPm92ZXJoZWF0X3NlbnNvcikKKwkJCWFybWFkYV9j b25maWd1cmVfb3ZlcmhlYXRfaW50KHByaXYsIHR6LCBzZW5zb3ItPmlkKTsKIAl9CiAKKwkvKiBK dXN0IGNvbXBsYWluIGlmIG5vIG92ZXJoZWF0IGludGVycnVwdCB3YXMgc2V0IHVwICovCisJaWYg KCFwcml2LT5vdmVyaGVhdF9zZW5zb3IpCisJCWRldl93YXJuKCZwZGV2LT5kZXYsICJPdmVyaGVh dCBpbnRlcnJ1cHQgbm90IGF2YWlsYWJsZVxuIik7CisKIAlyZXR1cm4gMDsKIH0KIAotLSAKMi4x OS4xCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KbGlu dXgtYXJtLWtlcm5lbCBtYWlsaW5nIGxpc3QKbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRl YWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgt YXJtLWtlcm5lbAo=