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 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 smtp.lore.kernel.org (Postfix) with ESMTPS id 773F0C433EF for ; Sat, 22 Jan 2022 04:03:54 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=4/rQ4+3SYYSRMmpLy33WJeJITojveCrGK8stDFCbeXQ=; b=2JgcoJSn6U+7M9 JXi7so1A3x2Y+Z8/KeY0ogfZaOtel0HibJmk9nkbVC+zioS/dVMTPMK3obUflnMO2po6qP9NaShfi SzacznB2WyuXcO9UlgVki2Bdo3BqD5BG0e8tExmcdMv8KsamcsVetxovUbCmchTmrL6NqtW6IJux/ 3sfBNhaCP5Mi0Xdl8BcPKmKZI/o9o2rGXDviABik3Amg6PFtE/W2rh/2YhXlGyAELZXAjvCh3/ibH uG7VrWMV4Ul4D4hv9QmtCVG2p+gMyd7++uMTu6Xy1dB9+C2fPV2fLEHjixvNf9RoJtUFFRWDY/VLc x2nkPz0y76gaM7Qh8dQg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1nB7aS-00GW55-I8; Sat, 22 Jan 2022 04:01:13 +0000 Received: from mail-pl1-x634.google.com ([2607:f8b0:4864:20::634]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1nB7UT-00GSz3-BN for linux-arm-kernel@lists.infradead.org; Sat, 22 Jan 2022 03:55:04 +0000 Received: by mail-pl1-x634.google.com with SMTP id e8so10460166plh.8 for ; Fri, 21 Jan 2022 19:55:01 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=Rstih+bCUvI8qAsoOEFphlMMvh1FNlDra3LljL6dx4g=; b=b8Np5CfAwmYacAM1cntSktfj9EngIXuFis1GJEPT0s34kMoc3CunPKJvPpOX4KVjIO kpNpdKnqFPdScyqiamWBmaaN1v+BBcmYxzh6kqr4gaKW2Ok21LOUl4zNyfEwetj+KaOt s81tuSNgNAm8AY/ajc8jPF24UgAX5XYtapmovhqGG7lQGIeuqmld3SaPAvVIVqA2zrxh T0UBafQkfkEG+5NSwY6rPD3Luk7cQhlmeiT7EnN2UCUHuhrTQU6WU75TGNm+82VZlym9 2BBeaL5vf4iNqdOHDVWrUvhZiuavIQqHcuRdSzKcrMw4DF8cL1GJTOLyekbpO8qhXa95 fSOA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=Rstih+bCUvI8qAsoOEFphlMMvh1FNlDra3LljL6dx4g=; b=hB9YKoAsjkqk7Alil6GlOUztXySroPmIdgBIxI4Vtt0w5jSpieEcfOtMLLNtog4zG6 6zv6Fh2MiYznMrpw3/z4JFQ14wAt6L8eAvANcdDe3IjkKQAmIW6HunfDFajEc4Q9rUAk wTLHYL5losx9LAgjXWdPZ0N3f4cgzreH7ycGxujaEIoEA9TrBZqreSjp+PJsHIX67uiV FJm47eemPvnJonuQfgwNDIi8dlv1ZGGwjU9dldrpNJ6bc9BFkz9FgT9MSGSrqAmEs5Zx A34LSp9t2F7ZULTN2FHk1pPS9y9G3nLzzDPQTqEswp6Eyz587AsR8/sg6y8w90HN5cBy PsAg== X-Gm-Message-State: AOAM531Q+k9lhV5WdkhckcjlxxFIm/Tp8g2gaYbOn5A6zluRmOwcVJY/ ViG6QwsP9zqa5hHIjz1KdIMcddcwo1o= X-Google-Smtp-Source: ABdhPJwVyZbUIgjV0k63poA6oysZewo8wDokaLYLS/DJqHD4243wcBR59+RF6I/B5WkBMBGSAbFoDQ== X-Received: by 2002:a17:90a:6782:: with SMTP id o2mr3624424pjj.116.1642823700061; Fri, 21 Jan 2022 19:55:00 -0800 (PST) Received: from fainelli-desktop.igp.broadcom.net ([192.19.223.252]) by smtp.gmail.com with ESMTPSA id a1sm667255pjm.1.2022.01.21.19.54.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 21 Jan 2022 19:54:59 -0800 (PST) From: Florian Fainelli To: linux-arm-kernel@lists.infradead.org Cc: Florian Fainelli , bcm-kernel-feedback-list@broadcom.com (maintainer:BROADCOM BCM7XXX ARM ARCHITECTURE), Mark Rutland , Lorenzo Pieralisi , linux-kernel@vger.kernel.org (open list) Subject: [PATCH 3/4] soc: bcm: brcmstb: Added support for PSCI system suspend operations Date: Fri, 21 Jan 2022 19:54:20 -0800 Message-Id: <20220122035421.4086618-4-f.fainelli@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220122035421.4086618-1-f.fainelli@gmail.com> References: <20220122035421.4086618-1-f.fainelli@gmail.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20220121_195501_696979_4064FC49 X-CRM114-Status: GOOD ( 30.57 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org QWRkIHN1cHBvcnQgZm9yIHRoZSBCcm9hZGNvbSBTVEIgc3lzdGVtIHN1c3BlbmQgb3BlcmF0aW9u cyB3aGljaApsZXZlcmFnZSB0aGUgc3RhbmRhcmQgUFNDSSBmdW5jdGlvbnMgYW5kIHVzZXMgdGhl CnBzY2lfY3B1X3N1c3BlbmRfZW50ZXIoKSBvcGVyYXRpb24gdG8gcG93ZXIgb2ZmIHRoZSBzeXN0 ZW0gd2l0aCBvcgp3aXRob3V0IHJldGVudGlvbiAoImVjaG8gc3RhbmRieSA+IC9zeXMvcG93ZXIv c3RhdGUiKS4KClRoZSBzeXN0ZW0gcmVzZXQgcGF0aCBhbHNvIHN1cHBvcnRzIGEgc3BlY2lhbCAi cG93ZXJjeWNsZSIgbW9kZSB3aGljaApzaWduYWxzIHRvIHRoZSBBUk0gVHJ1c3RlZCBGaXJtd2Fy ZSB0aGF0IGFuIGV4dGVybmFsIFBNSUMgY2hpcCBtdXN0CmZvcmNlIHRoZSBTb0MgaW50byBhIHBv d2VyIGN5Y2xlLgoKQXMgbXVjaCBhcyBwb3NzaWJsZSBleHRlbnNpb25zIHdlcmUgYnVpbHQgdXNp bmcgdGhlIFNJUCBuYW1lc3BhY2UgcmF0aGVyCnRoYW4gdGhlIHN0YW5kYXJkIFBTQ0kgbmFtZXNw YWNlLCBob3dldmVyIGNvbXBhdGliaWxpdHkgd2l0aCB0aGUKc3RhbmRhcmQgUFNDSSBpbXBsZW1l bnRhdGlvbiBpcyByZXRhaW5lZCB3aGVuIENPTkZJR19CUkNNU1RCX1BNIGlzIG5vdApzZWxlY3Rl ZC4KClNpZ25lZC1vZmYtYnk6IEZsb3JpYW4gRmFpbmVsbGkgPGYuZmFpbmVsbGlAZ21haWwuY29t PgotLS0KIGRyaXZlcnMvc29jL2JjbS9icmNtc3RiL0tjb25maWcgICAgICAgICAgIHwgICA0ICst CiBkcml2ZXJzL3NvYy9iY20vYnJjbXN0Yi9wbS9NYWtlZmlsZSAgICAgICB8ICAgMSArCiBkcml2 ZXJzL3NvYy9iY20vYnJjbXN0Yi9wbS9wbS1wc2NpLmMgICAgICB8IDMxNSArKysrKysrKysrKysr KysrKysrKysrCiBpbmNsdWRlL2xpbnV4L3NvYy9icmNtc3RiL2JyY21zdGItc21jY2MuaCB8ICA4 NCArKysrKysKIDQgZmlsZXMgY2hhbmdlZCwgNDAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25z KC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9zb2MvYmNtL2JyY21zdGIvcG0vcG0tcHNj aS5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgaW5jbHVkZS9saW51eC9zb2MvYnJjbXN0Yi9icmNtc3Ri LXNtY2NjLmgKCmRpZmYgLS1naXQgYS9kcml2ZXJzL3NvYy9iY20vYnJjbXN0Yi9LY29uZmlnIGIv ZHJpdmVycy9zb2MvYmNtL2JyY21zdGIvS2NvbmZpZwppbmRleCAzOGU0NzY5MDVkOTYuLmEyYjMx NzE3MDk2ZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zb2MvYmNtL2JyY21zdGIvS2NvbmZpZworKysg Yi9kcml2ZXJzL3NvYy9iY20vYnJjbXN0Yi9LY29uZmlnCkBAIC0yLDggKzIsOCBAQAogaWYgU09D X0JSQ01TVEIKIAogY29uZmlnIEJSQ01TVEJfUE0KLQlib29sICJTdXBwb3J0IHN1c3BlbmQvcmVz dW1lIGZvciBTVEIgcGxhdGZvcm1zIgotCWRlZmF1bHQgeQorCXRyaXN0YXRlICJTdXBwb3J0IHN1 c3BlbmQvcmVzdW1lIGZvciBTVEIgcGxhdGZvcm1zIgorCWRlZmF1bHQgQVJDSF9CUkNNU1RCIHx8 IEJNSVBTX0dFTkVSSUMKIAlkZXBlbmRzIG9uIFBNCiAJZGVwZW5kcyBvbiBBUkNIX0JSQ01TVEIg fHwgQk1JUFNfR0VORVJJQwogCXNlbGVjdCBBUk1fQ1BVX1NVU1BFTkQgaWYgQVJNCmRpZmYgLS1n aXQgYS9kcml2ZXJzL3NvYy9iY20vYnJjbXN0Yi9wbS9NYWtlZmlsZSBiL2RyaXZlcnMvc29jL2Jj bS9icmNtc3RiL3BtL01ha2VmaWxlCmluZGV4IDg2MDA0NDU4MjYwYy4uNGVjZTUzZGI4OTM3IDEw MDY0NAotLS0gYS9kcml2ZXJzL3NvYy9iY20vYnJjbXN0Yi9wbS9NYWtlZmlsZQorKysgYi9kcml2 ZXJzL3NvYy9iY20vYnJjbXN0Yi9wbS9NYWtlZmlsZQpAQCAtMSw0ICsxLDUgQEAKICMgU1BEWC1M aWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seQorb2JqLSQoQ09ORklHX0JSQ01TVEJfUE0p CSs9IHBtLXBzY2kubwogaWZuZGVmIENPTkZJR19BUk1fUFNDSV9GVwogb2JqLSQoQ09ORklHX0FS TSkJCSs9IHMyLWFybS5vIHBtLWFybS5vCiBBRkxBR1NfczItYXJtLm8JCQk6PSAtbWFyY2g9YXJt djctYQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zb2MvYmNtL2JyY21zdGIvcG0vcG0tcHNjaS5jIGIv ZHJpdmVycy9zb2MvYmNtL2JyY21zdGIvcG0vcG0tcHNjaS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAwMDAwMC4uN2JhMzRkMDFjMmZjCi0tLSAvZGV2L251bGwKKysrIGIvZHJp dmVycy9zb2MvYmNtL2JyY21zdGIvcG0vcG0tcHNjaS5jCkBAIC0wLDAgKzEsMzE1IEBACisvLyBT UERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMAorLyoKKyAqIEJyb2FkY29tIFNUQiBQU0NJ IGJhc2VkIHN5c3RlbSB3aWRlIFBNIHN1cHBvcnQKKyAqCisgKiBDb3B5cmlnaHQgwqkgMjAxOC0y MDIyIEJyb2FkY29tCisgKi8KKworI2RlZmluZSBwcl9mbXQoZm10KSAiYnJjbXN0Yi1wbS1wc2Np OiAiIGZtdAorCisjaW5jbHVkZSA8bGludXgva2VybmVsLmg+CisjaW5jbHVkZSA8bGludXgvbW9k dWxlLmg+CisjaW5jbHVkZSA8bGludXgvYXJtLXNtY2NjLmg+CisjaW5jbHVkZSA8bGludXgvcGFu aWNfbm90aWZpZXIuaD4KKyNpbmNsdWRlIDxsaW51eC9wc2NpLmg+CisjaW5jbHVkZSA8bGludXgv c3VzcGVuZC5oPgorI2luY2x1ZGUgPGxpbnV4L3NvYy9icmNtc3RiL2JyY21zdGIuaD4KKyNpbmNs dWRlIDxsaW51eC9zb2MvYnJjbXN0Yi9icmNtc3RiLXNtY2NjLmg+CisjaW5jbHVkZSA8bGludXgv cmVib290Lmg+CisjaW5jbHVkZSA8bGludXgva29iamVjdC5oPgorCisjaW5jbHVkZSA8dWFwaS9s aW51eC9wc2NpLmg+CisKKyNpbmNsdWRlIDxhc20vc3VzcGVuZC5oPgorI2luY2x1ZGUgPGFzbS9z eXN0ZW1fbWlzYy5oPgorCisjaW5jbHVkZSAiYW9uX2RlZnMuaCIKKworc3RhdGljIHBzY2lfZm4g Kmludm9rZV9wc2NpX2ZuOworc3RhdGljIGJvb2wgYnJjbXN0Yl9wc2NpX3N5c3RlbV9yZXNldDJf c3VwcG9ydGVkOworc3RhdGljIGJvb2wgYnJjbXN0Yl9wc2NpX3N5c3RlbV9zdXNwZW5kX3N1cHBv cnRlZDsKK3N0YXRpYyBib29sIGJyY21zdGJfcHNjaV9jcHVfcmV0ZW50aW9uID0gdHJ1ZTsKKwor c3RhdGljIGludCBicmNtc3RiX3BzY2lfaW50ZWdfcmVnaW9uKHVuc2lnbmVkIGxvbmcgZnVuY3Rp b25faWQsCisJCQkJICAgICB1bnNpZ25lZCBsb25nIGJhc2UsCisJCQkJICAgICB1bnNpZ25lZCBs b25nIHNpemUpCit7CisJdW5zaWduZWQgbG9uZyBlbmQ7CisKKwlpZiAoIXNpemUpCisJCXJldHVy biAtRUlOVkFMOworCisJZW5kID0gRElWX1JPVU5EX1VQKGJhc2UgKyBzaXplLCBTSVBfTUlOX1JF R0lPTl9TSVpFKTsKKwliYXNlIC89IFNJUF9NSU5fUkVHSU9OX1NJWkU7CisJc2l6ZSA9IGVuZCAt IGJhc2U7CisKKwlyZXR1cm4gaW52b2tlX3BzY2lfZm4oZnVuY3Rpb25faWQsIGJhc2UsIHNpemUs IDApOworfQorCitzdGF0aWMgaW50IF9fbWF5YmVfdW51c2VkIGJyY21zdGJfcHNjaV9pbnRlZ19y ZWdpb25fc2V0KHVuc2lnbmVkIGxvbmcgYmFzZSwKKwkJCQkJCQl1bnNpZ25lZCBsb25nIHNpemUp Cit7CisJcmV0dXJuIGJyY21zdGJfcHNjaV9pbnRlZ19yZWdpb24oU0lQX0ZVTkNfSU5URUdfUkVH SU9OX1NFVCwgYmFzZSwgc2l6ZSk7Cit9CisKK3N0YXRpYyBpbnQgX19tYXliZV91bnVzZWQgYnJj bXN0Yl9wc2NpX2ludGVnX3JlZ2lvbl9kZWwodW5zaWduZWQgbG9uZyBiYXNlLAorCQkJCQkJCXVu c2lnbmVkIGxvbmcgc2l6ZSkKK3sKKwlyZXR1cm4gYnJjbXN0Yl9wc2NpX2ludGVnX3JlZ2lvbihT SVBfRlVOQ19JTlRFR19SRUdJT05fREVMLCBiYXNlLCBzaXplKTsKK30KKworc3RhdGljIGludCBi cmNtc3RiX3BzY2lfaW50ZWdfcmVnaW9uX3Jlc2V0X2FsbCh2b2lkKQoreworCXJldHVybiBpbnZv a2VfcHNjaV9mbihTSVBfRlVOQ19JTlRFR19SRUdJT05fUkVTRVRfQUxMLCAwLCAwLCAwKTsKK30K Kworc3RhdGljIGludCBicmNtc3RiX3BzY2lfc3lzX3Jlc2V0KHN0cnVjdCBub3RpZmllcl9ibG9j ayAqbmIsCisJCQkJICB1bnNpZ25lZCBsb25nIGFjdGlvbiwgdm9pZCAqZGF0YSkKK3sKKwljb25z dCBjaGFyICpjbWQgPSBkYXRhOworCS8qCisJICogcmVzZXRfdHlwZVszMV0gPSAwIChhcmNoaXRl Y3R1cmFsKQorCSAqIHJlc2V0X3R5cGVbMzA6MF0gPSAwIChTWVNURU1fV0FSTV9SRVNFVCkKKwkg KiBjb29raWUgPSAwIChpZ25vcmVkIGJ5IHRoZSBpbXBsZW1lbnRhdGlvbikKKwkgKi8KKwl1aW50 MzJfdCByZWJvb3RfdHlwZSA9IDA7CisKKwlpZiAoKGFjdGlvbiA9PSBSRUJPT1RfQ09MRCB8fCBh Y3Rpb24gPT0gUkVCT09UX1dBUk0gfHwKKwkgICAgYWN0aW9uID09IFJFQk9PVF9TT0ZUKSAmJgor CSAgICBicmNtc3RiX3BzY2lfc3lzdGVtX3Jlc2V0Ml9zdXBwb3J0ZWQpIHsKKwkJaWYgKGNtZCAm JiAhc3RyY21wKGNtZCwgInBvd2VyY3ljbGUiKSkKKwkJCXJlYm9vdF90eXBlID0gQklUKDMxKSB8 IDE7CisJCWludm9rZV9wc2NpX2ZuKFBTQ0lfRk5fTkFUSVZFKDFfMSwgU1lTVEVNX1JFU0VUMiks IHJlYm9vdF90eXBlLCAwLCAwKTsKKwl9IGVsc2UgeworCQlpbnZva2VfcHNjaV9mbihQU0NJXzBf Ml9GTl9TWVNURU1fUkVTRVQsIDAsIDAsIDApOworCX0KKworCXJldHVybiBOT1RJRllfRE9ORTsK K30KKworc3RhdGljIHN0cnVjdCBub3RpZmllcl9ibG9jayBicmNtc3RiX3BzY2lfc3lzX3Jlc2V0 X25iID0geworCS5ub3RpZmllcl9jYWxsCT0gYnJjbXN0Yl9wc2NpX3N5c19yZXNldCwKKwkucHJp b3JpdHkJPSAxMjgsCit9OworCit2b2lkIGJyY21zdGJfcHNjaV9zeXNfcG93ZXJvZmYodm9pZCkK K3sKKwlpbnZva2VfcHNjaV9mbihQU0NJXzBfMl9GTl9TWVNURU1fT0ZGLCAwLCAwLCAwKTsKK30K Kworc3RhdGljIGludCBwc2NpX2ZlYXR1cmVzKHUzMiBwc2NpX2Z1bmNfaWQpCit7CisJdTMyIGZl YXR1cmVzX2Z1bmNfaWQ7CisKKwlzd2l0Y2ggKEFSTV9TTUNDQ19PV05FUl9OVU0ocHNjaV9mdW5j X2lkKSkgeworCWNhc2UgQVJNX1NNQ0NDX09XTkVSX1NJUDoKKwkJZmVhdHVyZXNfZnVuY19pZCA9 IFNJUF9GVU5DX1BTQ0lfRkVBVFVSRVM7CisJCWJyZWFrOworCWNhc2UgQVJNX1NNQ0NDX09XTkVS X1NUQU5EQVJEOgorCQlmZWF0dXJlc19mdW5jX2lkID0gUFNDSV8xXzBfRk5fUFNDSV9GRUFUVVJF UzsKKwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJcmV0dXJuIFBTQ0lfUkVUX05PVF9TVVBQT1JURUQ7 CisJfQorCisJcmV0dXJuIGludm9rZV9wc2NpX2ZuKGZlYXR1cmVzX2Z1bmNfaWQsIHBzY2lfZnVu Y19pZCwgMCwgMCk7Cit9CisKK3N0YXRpYyBpbnQgYnJjbXN0Yl9wc2NpX2VudGVyKHN1c3BlbmRf c3RhdGVfdCBzdGF0ZSkKK3sKKwkvKiBSZXF1ZXN0IGEgU1lTVEVNIGxldmVsIHBvd2VyIHN0YXRl IHdpdGggcmV0ZW50aW9uICovCisJdTMyIHBzdGF0ZSA9IDIgPDwgUFNDSV8wXzJfUE9XRVJfU1RB VEVfQUZGTF9TSElGVCB8CisJCSAgICAgIWJyY21zdGJfcHNjaV9jcHVfcmV0ZW50aW9uIDw8IFBT Q0lfMF8yX1BPV0VSX1NUQVRFX1RZUEVfU0hJRlQ7CisJaW50IHJldCA9IC1FSU5WQUw7CisKKwlz d2l0Y2ggKHN0YXRlKSB7CisJY2FzZSBQTV9TVVNQRU5EX1NUQU5EQlk6CisJCXJldCA9IHBzY2lf Y3B1X3N1c3BlbmRfZW50ZXIocHN0YXRlKTsKKwkJYnJlYWs7CisJY2FzZSBQTV9TVVNQRU5EX01F TToKKwkJcmV0ID0gYnJjbXN0Yl9wc2NpX3N5c3RlbV9zdXNwZW5kX3N1cHBvcnRlZCA/CisJCQkg cHNjaV9zeXN0ZW1fc3VzcGVuZF9lbnRlcihzdGF0ZSkgOiAtRUlOVkFMOworCQlicmVhazsKKwl9 CisKKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgaW50IGJyY21zdGJfcHNjaV92YWxpZChzdXNw ZW5kX3N0YXRlX3Qgc3RhdGUpCit7CisJc3dpdGNoIChzdGF0ZSkgeworCWNhc2UgUE1fU1VTUEVO RF9TVEFOREJZOgorCQlyZXR1cm4gdHJ1ZTsKKwljYXNlIFBNX1NVU1BFTkRfTUVNOgorCQlyZXR1 cm4gYnJjbXN0Yl9wc2NpX3N5c3RlbV9zdXNwZW5kX3N1cHBvcnRlZDsKKwlkZWZhdWx0OgorCQly ZXR1cm4gZmFsc2U7CisJfQorfQorCitzdGF0aWMgY29uc3Qgc3RydWN0IHBsYXRmb3JtX3N1c3Bl bmRfb3BzIGJyY21zdGJfcHNjaV9vcHMgPSB7CisJLmVudGVyCT0gYnJjbXN0Yl9wc2NpX2VudGVy LAorCS52YWxpZAk9IGJyY21zdGJfcHNjaV92YWxpZCwKK307CisKK3N0YXRpYyBpbnQgYnJjbXN0 Yl9wc2NpX3BhbmljX25vdGlmeShzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm5iLAorCQkJCSAgICAg dW5zaWduZWQgbG9uZyBhY3Rpb24sIHZvaWQgKmRhdGEpCit7CisJaW50IHJldDsKKworCXJldCA9 IGludm9rZV9wc2NpX2ZuKFNJUF9GVU5DX1BBTklDX05PVElGWSwgQlJDTVNUQl9QQU5JQ19NQUdJ QywgMCwgMCk7CisJaWYgKHJldCAhPSBQU0NJX1JFVF9TVUNDRVNTKQorCQlyZXR1cm4gTk9USUZZ X0JBRDsKKworCXJldHVybiBOT1RJRllfRE9ORTsKK30KKworc3RhdGljIHN0cnVjdCBub3RpZmll cl9ibG9jayBicmNtc3RiX3BzY2lfbmIgPSB7CisJLm5vdGlmaWVyX2NhbGwgPSBicmNtc3RiX3Bz Y2lfcGFuaWNfbm90aWZ5LAorfTsKKworc3RhdGljIHNzaXplX3QgYnJjbXN0Yl9wc2NpX3ZlcnNp b25fc2hvdyhzdHJ1Y3Qga29iamVjdCAqa29iaiwKKwkJCQkJIHN0cnVjdCBrb2JqX2F0dHJpYnV0 ZSAqYXR0ciwKKwkJCQkJIGNoYXIgKmJ1ZikKK3sKKwlzdHJ1Y3QgYXJtX3NtY2NjX3JlcyByZXMg PSB7IH07CisJdTMyIHZlcnNpb247CisKKwlpZiAoaW52b2tlX3BzY2lfZm4gPT0gX19pbnZva2Vf cHNjaV9mbl9odmMpCisJCWFybV9zbWNjY19odmMoU0lQX0ZVTkNfUFNDSV9CUkNNU1RCX1ZFUlNJ T04sCisJCQkgICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAmcmVzKTsKKwllbHNlCisJCWFybV9z bWNjY19zbWMoU0lQX0ZVTkNfUFNDSV9CUkNNU1RCX1ZFUlNJT04sCisJCQkgICAgICAwLCAwLCAw LCAwLCAwLCAwLCAwLCAmcmVzKTsKKworCWlmIChyZXMuYTAgIT0gUFNDSV9SRVRfU1VDQ0VTUykK KwkJcmV0dXJuIC1FT1BOT1RTVVBQOworCisJdmVyc2lvbiA9IHJlcy5hMTsKKworCXJldHVybiBz cHJpbnRmKGJ1ZiwgIiVkLiVkLiVkLiVkXG4iLAorCQkgICAgICAgKHZlcnNpb24gPj4gMjQpICYg MHhmZiwgKHZlcnNpb24gPj4gMTYpICYgMHhmZiwKKwkJICAgICAgICh2ZXJzaW9uID4+IDgpICYg MHhmZiwgdmVyc2lvbiAmIDB4ZmYpOworfQorCitzdGF0aWMgc3RydWN0IGtvYmpfYXR0cmlidXRl IGJyY21zdGJfcHNjaV92ZXJzaW9uX2F0dHIgPQorCV9fQVRUUihtb25fdmVyc2lvbiwgMDQwMCwg YnJjbXN0Yl9wc2NpX3ZlcnNpb25fc2hvdywgTlVMTCk7CisKK3N0YXRpYyBzc2l6ZV90IGJyY21z dGJfcHNjaV9jcHVfcmV0ZW50aW9uX3Nob3coc3RydWN0IGtvYmplY3QgKmtvYmosCisJCQkJCSAg ICAgICBzdHJ1Y3Qga29ial9hdHRyaWJ1dGUgKmF0dHIsCisJCQkJCSAgICAgICBjaGFyICpidWYp Cit7CisJcmV0dXJuIHNwcmludGYoYnVmLCAiJWRcbiIsIGJyY21zdGJfcHNjaV9jcHVfcmV0ZW50 aW9uKTsKK30KKworc3RhdGljIHNzaXplX3QgYnJjbXN0Yl9wc2NpX2NwdV9yZXRlbnRpb25fc3Rv cmUoc3RydWN0IGtvYmplY3QgKmtvYmosCisJCQkJCQlzdHJ1Y3Qga29ial9hdHRyaWJ1dGUgKmF0 dHIsCisJCQkJCQljb25zdCBjaGFyICpidWYsIHNpemVfdCBjb3VudCkKK3sKKwlpbnQgcmV0LCB2 YWw7CisKKwlyZXQgPSBrc3RydG9pbnQoYnVmLCAxMCwgJnZhbCk7CisJaWYgKHJldCA8IDApCisJ CXJldHVybiByZXQ7CisKKwlpZiAodmFsICE9IDAgJiYgdmFsICE9IDEpCisJCXJldHVybiAtRUlO VkFMOworCisJYnJjbXN0Yl9wc2NpX2NwdV9yZXRlbnRpb24gPSAhIXZhbDsKKworCXJldHVybiBj b3VudDsKK30KKworc3RhdGljIHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSBicmNtc3RiX3BzY2lfY3B1 X3JldGVudGlvbl9hdHRyID0KKwlfX0FUVFIoY3B1X3JldGVudGlvbiwgMDY0NCwgYnJjbXN0Yl9w c2NpX2NwdV9yZXRlbnRpb25fc2hvdywKKwkgICAgICAgYnJjbXN0Yl9wc2NpX2NwdV9yZXRlbnRp b25fc3RvcmUpOworCitzdGF0aWMgY29uc3Qgc3RydWN0IGF0dHJpYnV0ZSAqYnJjbXN0Yl9wc2Np X2F0dHJpYnV0ZXNbXSA9IHsKKwkmYnJjbXN0Yl9wc2NpX3ZlcnNpb25fYXR0ci5hdHRyLAorCSZi cmNtc3RiX3BzY2lfY3B1X3JldGVudGlvbl9hdHRyLmF0dHIsCisJTlVMTCwKK307CisKK3N0YXRp YyBpbnQgYnJjbXN0Yl9wbV9wc2NpX2luaXQodm9pZCkKK3sKKwl1bnNpZ25lZCBsb25nIGZ1bmNz X2lkW10gPSB7CisJCVBTQ0lfMF8yX0ZOX1NZU1RFTV9PRkYsCisJCVNJUF9GVU5DX0lOVEVHX1JF R0lPTl9TRVQsCisJCVNJUF9GVU5DX0lOVEVHX1JFR0lPTl9ERUwsCisJCVNJUF9GVU5DX0lOVEVH X1JFR0lPTl9SRVNFVF9BTEwsCisJfTsKKwlzdHJ1Y3QgYXJtX3NtY2NjX3JlcyByZXMgPSB7IH07 CisJc3RydWN0IGtvYmplY3QgKmJyY21zdGJfa29iajsKKwl1bnNpZ25lZCBpbnQgaTsKKwlpbnQg cmV0OworCisJc3dpdGNoIChhcm1fc21jY2NfMV8xX2dldF9jb25kdWl0KCkpIHsKKwljYXNlIFNN Q0NDX0NPTkRVSVRfSFZDOgorCQlpbnZva2VfcHNjaV9mbiA9IF9faW52b2tlX3BzY2lfZm5faHZj OworCQlicmVhazsKKwljYXNlIFNNQ0NDX0NPTkRVSVRfU01DOgorCQlpbnZva2VfcHNjaV9mbiA9 IF9faW52b2tlX3BzY2lfZm5fc21jOworCQlicmVhazsKKwlkZWZhdWx0OgorCQlyZXR1cm4gLUVJ TlZBTDsKKwl9CisKKwkvKiBDaGVjayB0aGUgcmV2aXNpb24gb2YgbW9uaXRvciAqLworCWlmIChp bnZva2VfcHNjaV9mbiA9PSBfX2ludm9rZV9wc2NpX2ZuX2h2YykKKwkJYXJtX3NtY2NjX2h2YyhT SVBfU1ZDX1JFVklTSU9OLAorCQkJICAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgJnJlcyk7CisJ ZWxzZQorCQlhcm1fc21jY2Nfc21jKFNJUF9TVkNfUkVWSVNJT04sCisJCQkgICAgICAwLCAwLCAw LCAwLCAwLCAwLCAwLCAmcmVzKTsKKworCS8qIFRlc3QgZm9yIG91ciBzdXBwb3J0ZWQgZmVhdHVy ZXMgKi8KKwlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShmdW5jc19pZCk7IGkrKykgeworCQly ZXQgPSBwc2NpX2ZlYXR1cmVzKGZ1bmNzX2lkW2ldKTsKKwkJaWYgKHJldCA9PSBQU0NJX1JFVF9O T1RfU1VQUE9SVEVEKSB7CisJCQlwcl9lcnIoIkZpcm13YXJlIGRvZXMgbm90IHN1cHBvcnQgZnVu Y3Rpb24gMHglbHhcbiIsCisJCQkgICAgICAgZnVuY3NfaWRbaV0pOworCQkJcmV0dXJuIC1FT1BO T1RTVVBQOworCQl9CisJfQorCisJcmV0ID0gcHNjaV9mZWF0dXJlcyhQU0NJX0ZOX05BVElWRSgx XzEsIFNZU1RFTV9SRVNFVDIpKTsKKwlpZiAocmV0ICE9IFBTQ0lfUkVUX05PVF9TVVBQT1JURUQp CisJCWJyY21zdGJfcHNjaV9zeXN0ZW1fcmVzZXQyX3N1cHBvcnRlZCA9IHRydWU7CisKKwlyZXQg PSBwc2NpX2ZlYXR1cmVzKFBTQ0lfRk5fTkFUSVZFKDFfMCwgU1lTVEVNX1NVU1BFTkQpKTsKKwlp ZiAocmV0ICE9IFBTQ0lfUkVUX05PVF9TVVBQT1JURUQpCisJCWJyY21zdGJfcHNjaV9zeXN0ZW1f c3VzcGVuZF9zdXBwb3J0ZWQgPSB0cnVlOworCisJcmV0ID0gYnJjbXN0Yl9wc2NpX2ludGVnX3Jl Z2lvbl9yZXNldF9hbGwoKTsKKwlpZiAocmV0ICE9IFBTQ0lfUkVUX1NVQ0NFU1MpIHsKKwkJcHJf ZXJyKCJFcnJvciByZXNldHRpbmcgYWxsIGludGVncml0eSBjaGVja2luZyByZWdpb25zXG4iKTsK KwkJcmV0dXJuIC1FSU87CisJfQorCisJaWYgKHJlcy5hMCA9PSBTSVBfUkVWSVNJT05fTUFKT1Ig JiYgcmVzLmExIDwgU0lQX1JFVklTSU9OX01JTk9SKSB7CisJCXByX2luZm8oIkZpcm13YXJlIGlz IHRvbyBvbGQhIFBsZWFzZSB1cGRhdGVcbiIpOworCQlyZXR1cm4gLUVPUE5PVFNVUFA7CisJfQor CisJYnJjbXN0Yl9rb2JqID0ga29iamVjdF9jcmVhdGVfYW5kX2FkZCgiYnJjbXN0YiIsIGZpcm13 YXJlX2tvYmopOworCWlmIChicmNtc3RiX2tvYmopIHsKKwkJcmV0ID0gc3lzZnNfY3JlYXRlX2Zp bGVzKGJyY21zdGJfa29iaiwgYnJjbXN0Yl9wc2NpX2F0dHJpYnV0ZXMpOworCQlpZiAocmV0KQor CQkJcmV0dXJuIHJldDsKKwl9CisKKwlwbV9wb3dlcl9vZmYgPSBicmNtc3RiX3BzY2lfc3lzX3Bv d2Vyb2ZmOworCXJlZ2lzdGVyX3Jlc3RhcnRfaGFuZGxlcigmYnJjbXN0Yl9wc2NpX3N5c19yZXNl dF9uYik7CisJc3VzcGVuZF9zZXRfb3BzKCZicmNtc3RiX3BzY2lfb3BzKTsKKwlhdG9taWNfbm90 aWZpZXJfY2hhaW5fcmVnaXN0ZXIoJnBhbmljX25vdGlmaWVyX2xpc3QsCisJCQkJICAgICAgICZi cmNtc3RiX3BzY2lfbmIpOworCisJcHJfaW5mbygiVXNpbmcgUFNDSSBiYXNlZCBzeXN0ZW0gUE0g KGZ1bGwgZmVhdHVyZWQpXG4iKTsKKworCXJldHVybiAwOworfQorbW9kdWxlX2luaXQoYnJjbXN0 Yl9wbV9wc2NpX2luaXQpOworCitNT0RVTEVfQVVUSE9SKCJCcm9hZGNvbSIpOworTU9EVUxFX0RF U0NSSVBUSU9OKCJCcm9hZGNvbSBTVEIgUE0gUFNDSSBvcGVyYXRpb25zIik7CitNT0RVTEVfTElD RU5TRSgiR1BMIHYyIik7CmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3NvYy9icmNtc3RiL2Jy Y21zdGItc21jY2MuaCBiL2luY2x1ZGUvbGludXgvc29jL2JyY21zdGIvYnJjbXN0Yi1zbWNjYy5o Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMjg2M2U4OTRlMWM3Ci0t LSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9saW51eC9zb2MvYnJjbXN0Yi9icmNtc3RiLXNtY2Nj LmgKQEAgLTAsMCArMSw4NCBAQAorLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAg Ki8KKyNpZm5kZWYgX19CUkNNU1RCX1NNQ0NDX0gKKyNkZWZpbmUgX19CUkNNU1RCX1NNQ0NDX0gK KworI2luY2x1ZGUgPGxpbnV4L2FybS1zbWNjYy5oPgorI2luY2x1ZGUgPHVhcGkvbGludXgvcHNj aS5oPgorCisjaWZkZWYgQ09ORklHXzY0QklUCisjZGVmaW5lIFBTQ0lfRk5fTkFUSVZFKHZlcnNp b24sIG5hbWUpICAgUFNDSV8jI3ZlcnNpb24jI19GTjY0XyMjbmFtZQorI2Vsc2UKKyNkZWZpbmUg UFNDSV9GTl9OQVRJVkUodmVyc2lvbiwgbmFtZSkgICBQU0NJXyMjdmVyc2lvbiMjX0ZOXyMjbmFt ZQorI2VuZGlmCisKKy8qIEJyb2FkY29tIFNUQiBjdXN0b20gU0lQIGZ1bmN0aW9uIGNhbGxzICov CisjZGVmaW5lIFNJUF9GVU5DX0lOVEVHX1JFR0lPTl9TRVQJXAorCUFSTV9TTUNDQ19DQUxMX1ZB TChBUk1fU01DQ0NfRkFTVF9DQUxMLCBcCisJCQkgICBJU19FTkFCTEVEKENPTkZJR182NEJJVCks IFwKKwkJCSAgIEFSTV9TTUNDQ19PV05FUl9TSVAsIFwKKwkJCSAgIDApCisjZGVmaW5lIFNJUF9G VU5DX0lOVEVHX1JFR0lPTl9ERUwJXAorCUFSTV9TTUNDQ19DQUxMX1ZBTChBUk1fU01DQ0NfRkFT VF9DQUxMLCBcCisJCQkgICBJU19FTkFCTEVEKENPTkZJR182NEJJVCksIFwKKwkJCSAgIEFSTV9T TUNDQ19PV05FUl9TSVAsIFwKKwkJCSAgIDEpCisjZGVmaW5lIFNJUF9GVU5DX0lOVEVHX1JFR0lP Tl9SRVNFVF9BTEwJXAorCUFSTV9TTUNDQ19DQUxMX1ZBTChBUk1fU01DQ0NfRkFTVF9DQUxMLCBc CisJCQkgICBJU19FTkFCTEVEKENPTkZJR182NEJJVCksIFwKKwkJCSAgIEFSTV9TTUNDQ19PV05F Ul9TSVAsIFwKKwkJCSAgIDIpCisjZGVmaW5lIFNJUF9GVU5DX1BBTklDX05PVElGWQkJXAorCUFS TV9TTUNDQ19DQUxMX1ZBTChBUk1fU01DQ0NfRkFTVF9DQUxMLCBcCisJCQkgICBJU19FTkFCTEVE KENPTkZJR182NEJJVCksIFwKKwkJCSAgIEFSTV9TTUNDQ19PV05FUl9TSVAsIFwKKwkJCSAgIDMp CisjZGVmaW5lIFNJUF9GVU5DX1BTQ0lfRkVBVFVSRVMJCVwKKwlBUk1fU01DQ0NfQ0FMTF9WQUwo QVJNX1NNQ0NDX0ZBU1RfQ0FMTCwgXAorCQkJICAgSVNfRU5BQkxFRChDT05GSUdfNjRCSVQpLCBc CisJCQkgICBBUk1fU01DQ0NfT1dORVJfU0lQLCBcCisJCQkgICA0KQorI2RlZmluZSBTSVBfRlVO Q19QU0NJX0JSQ01TVEJfVkVSU0lPTgkJXAorCUFSTV9TTUNDQ19DQUxMX1ZBTChBUk1fU01DQ0Nf RkFTVF9DQUxMLCBcCisJCQkgICBJU19FTkFCTEVEKENPTkZJR182NEJJVCksIFwKKwkJCSAgIEFS TV9TTUNDQ19PV05FUl9TSVAsIFwKKwkJCSAgIDUpCisKKyNkZWZpbmUgU0lQX1NWQ19SRVZJU0lP TgkJXAorCUFSTV9TTUNDQ19DQUxMX1ZBTChBUk1fU01DQ0NfRkFTVF9DQUxMLCBcCisJCQkgICBJ U19FTkFCTEVEKENPTkZJR182NEJJVCksIFwKKwkJCSAgIEFSTV9TTUNDQ19PV05FUl9TSVAsIFwK KwkJCSAgIDB4RkYwMikKKworI2RlZmluZSBTSVBfTUlOX1JFR0lPTl9TSVpFCTQwOTYKKyNkZWZp bmUgU0lQX1JFVklTSU9OX01BSk9SCTAKKyNkZWZpbmUgU0lQX1JFVklTSU9OX01JTk9SCTIKKwor dHlwZWRlZiB1bnNpZ25lZCBsb25nIChwc2NpX2ZuKSh1bnNpZ25lZCBsb25nLCB1bnNpZ25lZCBs b25nLAorCQkJCXVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcpOworCitzdGF0aWMgaW5saW5l IHVuc2lnbmVkIGxvbmcgX19pbnZva2VfcHNjaV9mbl9odmModW5zaWduZWQgbG9uZyBmdW5jdGlv bl9pZCwKKwkJCQkJCSB1bnNpZ25lZCBsb25nIGFyZzAsCisJCQkJCQkgdW5zaWduZWQgbG9uZyBh cmcxLAorCQkJCQkJIHVuc2lnbmVkIGxvbmcgYXJnMikKK3sKKwlzdHJ1Y3QgYXJtX3NtY2NjX3Jl cyByZXM7CisKKwlhcm1fc21jY2NfaHZjKGZ1bmN0aW9uX2lkLCBhcmcwLCBhcmcxLCBhcmcyLCAw LCAwLCAwLCAwLCAmcmVzKTsKKworCXJldHVybiByZXMuYTA7Cit9CisKK3N0YXRpYyBpbmxpbmUg dW5zaWduZWQgbG9uZyBfX2ludm9rZV9wc2NpX2ZuX3NtYyh1bnNpZ25lZCBsb25nIGZ1bmN0aW9u X2lkLAorCQkJCQkJIHVuc2lnbmVkIGxvbmcgYXJnMCwKKwkJCQkJCSB1bnNpZ25lZCBsb25nIGFy ZzEsCisJCQkJCQkgdW5zaWduZWQgbG9uZyBhcmcyKQoreworCXN0cnVjdCBhcm1fc21jY2NfcmVz IHJlczsKKworCWFybV9zbWNjY19zbWMoZnVuY3Rpb25faWQsIGFyZzAsIGFyZzEsIGFyZzIsIDAs IDAsIDAsIDAsICZyZXMpOworCisJcmV0dXJuIHJlcy5hMDsKK30KKworCisjZW5kaWYgLyogX19C UkNNU1RCX1NNQ0NDX0ggKi8KLS0gCjIuMjUuMQoKCl9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fCmxpbnV4LWFybS1rZXJuZWwgbWFpbGluZyBsaXN0CmxpbnV4 LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9y Zy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LWFybS1rZXJuZWwK