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 E570FE71D40 for ; Fri, 29 Sep 2023 15:04:13 +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:To:In-Reply-To:References:Message-Id: MIME-Version:Subject:Date:From:Reply-To:Cc:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=QemGLNy2UKFLXQgepDymkIOQTcxO6Zzh+/6N2A50N1w=; b=vryWAAASaCvSku sjKUxfSYbBLQq61ROjb6s5LoXcq87M30uvNwCtqZSw/3IpSe91jJ7ZqQ+ZjdCkGs4hQKG8FZxSa2o Y+3jDpsykuTqgfmmlkWhNOaxNPLNg198KKcETOSPFN2aHkkWMXGLoESTfTb3An2MqkuDQWEbrY7Jl Uz0MeA9quxRd9JXPCmiXEjVTT5Ot2byX0xmHlcu7r0cdMvGPxcQdPi4ITQnVMnnnrOMBAZm6u0r1s /aSBZXdvSVvQH4jYSAUqcCDMbEH5othyJlDZqS5u7Wqfqo37fMaJvBDxluFwGb/6Xs41duWoUOPXK 14dxbb1e/p45xVlNQSAw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1qmF1p-0088Qo-02; Fri, 29 Sep 2023 15:03:41 +0000 Received: from foss.arm.com ([217.140.110.172]) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1qmF1a-0088HZ-2o for linux-arm-kernel@lists.infradead.org; Fri, 29 Sep 2023 15:03:28 +0000 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 948B91007; Fri, 29 Sep 2023 08:04:02 -0700 (PDT) Received: from e103737-lin.cambridge.arm.com (e103737-lin.cambridge.arm.com [10.1.197.49]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 3DA393F5A1; Fri, 29 Sep 2023 08:03:23 -0700 (PDT) From: Sudeep Holla Date: Fri, 29 Sep 2023 16:02:57 +0100 Subject: [PATCH v3 08/17] firmware: arm_ffa: Initial support for scheduler receiver interrupt MIME-Version: 1.0 Message-Id: <20230929-ffa_v1-1_notif-v3-8-c8e4f15190c8@arm.com> References: <20230929-ffa_v1-1_notif-v3-0-c8e4f15190c8@arm.com> In-Reply-To: <20230929-ffa_v1-1_notif-v3-0-c8e4f15190c8@arm.com> To: linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, Sudeep Holla , Marc Bonnici , Jens Wiklander , Coboy Chen , Lorenzo Pieralisi , Olivier Deprez X-Mailer: b4 0.12.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=7567; i=sudeep.holla@arm.com; h=from:subject:message-id; bh=cEqV4YVf1LWm1xYaB7cZIwUpKEDLEWd8Uc3+Kj3BYQI=; b=owEBbAKT/ZANAwAIAQBBurwxfuKYAcsmYgBlFucvCcxjPXx8TBj4nbCzrmy1KuOnDdP4lGixl 6UZ6ZzDsruJAjIEAAEIAB0WIQS6ceUSBvMeskPdk+EAQbq8MX7imAUCZRbnLwAKCRAAQbq8MX7i mJWaD/ifHyJbruDUC9theNrtvo0jGb1ru5UA3xiOU0FdjmfkTlfhzrKsEIf3vD/VNiWrVIrLpeh iQD7oj49Afj2+HakhGwbMo1ML25XWx8ZA2TFScS1VISOorUwxXS0+s8Ve8krpWjQRaztztHRiQP JDjtuBIa5u9fw04zDIsPPyJE4WpAPaAv+8vjG5dzjO6caEmnJ+HJNsn2aKFeuJ4csOXa5yATwGk 8gvOk7wbJ9/PIKlU1/+UcXPWpyA3ZpBpVbaMho7X7D/142ZKGvp2L8F3YWo2Z1okmafVUbrwyNq a6hgu8//Ux/MjxiQZVHww2tpc44zqr+TeWZwCa8NVGO7bA8U6XLx9eyaZ16PigxKMXnFnCeyBzc EK451CBMexA+OmxNNLSgDsHgSzxROs0SuSo75sPoEIjg2KZ1yS9eGNVOkLBbdGUhQQHvR8FeOhf sw6NaJdPLAPqjv6dcfuM/bm155YP9GbJsl97CkXjHZuHcVGTTCkTL2pYVMsxIimUd5gWKnXOEhe BP4gcnAlQSLEe6aKPsAGEtiphMBcfQo0EO8wquHZqE45eOF7QZjVYTsZmQp4XhSYsvYfQ2zwktP syZVXcfXmPIeVpY7tsvAj62CY+Nho0TP0PJCEK0S+atI+XGQWbUTBeoBJPFJxvAqTLNOACitipc DA8CCM3Y9PMV4 X-Developer-Key: i=sudeep.holla@arm.com; a=openpgp; fpr=7360A21742ADF5A11767C1C139CFD4755FE2D5B4 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230929_080327_021707_2FC6890F X-CRM114-Status: GOOD ( 21.62 ) 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 VGhlIEZyYW1ld29yayB1c2VzIHRoZSBzY2hlZHVsZSByZWNlaXZlciBpbnRlcnJ1cHQgdG8gaW5m b3JtIHRoZQpyZWNlaXZlcuKAmXMgc2NoZWR1bGVyIHRoYXQgdGhlIHJlY2VpdmVyIG11c3QgYmUg cnVuIHRvIGhhbmRsZSBhIHBlbmRpbmcKbm90aWZpY2F0aW9uLiBBIHJlY2VpdmVy4oCZcyBzY2hl ZHVsZXIgY2FuIG9idGFpbiB0aGUgZGVzY3JpcHRpb24gb2YgdGhlCnNjaGVkdWxlIHJlY2VpdmVy IGludGVycnVwdCBieSBpbnZva2luZyB0aGUgRkZBX0ZFQVRVUkVTIGludGVyZmFjZS4KClRoZSBk ZWxpdmVyeSBvZiB0aGUgcGh5c2ljYWwgc2NoZWR1bGUgcmVjZWl2ZXIgaW50ZXJydXB0IGZyb20g dGhlIHNlY3VyZQpzdGF0ZSB0byB0aGUgbm9uLXNlY3VyZSBzdGF0ZSBkZXBlbmRzIHVwb24gdGhl IHN0YXRlIG9mIHRoZSBpbnRlcnJ1cHQKY29udHJvbGxlciBhcyBjb25maWd1cmVkIGJ5IHRoZSBo eXBlcnZpc29yLgoKVGhlIHNjaGVkdWxlIHNlY2VpdmVyIGludGVycnVwdCBpcyBhc3N1bWVkIHRv IGJlIGEgU0dJLiBUaGUgQXJtIEdJQwpzcGVjaWZpY2F0aW9uIGRlZmluZXMgMTYgU0dJcy4gSXQg cmVjb21tZW5kcyB0aGF0IHRoZXkgYXJlIGVxdWFsbHkKZGl2aWRlZCBiZXR3ZWVuIHRoZSBub24t c2VjdXJlIGFuZCBzZWN1cmUgc3RhdGVzLiBPUyBsaWtlIExpbnV4IGtlcm5lbAppbiB0aGUgbm9u LXNlY3VyZSBzdGF0ZSB0eXBpY2FsbHkgZG8gbm90IGhhdmUgU0dJcyB0byBzcGFyZS4gVGhlIHVz YWdlCm9mIFNHSXMgaW4gdGhlIHNlY3VyZSBzdGF0ZSBpcyBob3dldmVyIGxpbWl0ZWQuIEl0IGlz IG1vcmUgbGlrZWx5IHRoYXQKc29mdHdhcmUgaW4gdGhlIFNlY3VyZSB3b3JsZCBkb2VzIG5vdCB1 c2UgYWxsIHRoZSBTR0lzIGFsbG9jYXRlZCB0byBpdC4KCkl0IGlzIHJlY29tbWVuZGVkIHRoYXQg dGhlIHNlY3VyZSB3b3JsZCBzb2Z0d2FyZSBkb25hdGVzIGFuIHVudXNlZCBTR0kKdG8gdGhlIG5v cm1hbCB3b3JsZCBmb3IgdXNlIGFzIHRoZSBzY2hlZHVsZSByZWNlaXZlciBpbnRlcnJ1cHQuIFRo aXMKaW1wbGllcyB0aGF0IHNlY3VyZSB3b3JsZCBzb2Z0d2FyZSBtdXN0IGNvbmZpZ3VyZSB0aGUg U0dJIGluIHRoZSBHSUMKYXMgYSBub24tc2VjdXJlIGludGVycnVwdCBiZWZvcmUgcHJlc2VudGlu ZyBpdCB0byB0aGUgbm9ybWFsIHdvcmxkLgoKU2lnbmVkLW9mZi1ieTogU3VkZWVwIEhvbGxhIDxz dWRlZXAuaG9sbGFAYXJtLmNvbT4KLS0tCiBkcml2ZXJzL2Zpcm13YXJlL2FybV9mZmEvZHJpdmVy LmMgfCAxOTIgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0KIDEgZmlsZSBj aGFuZ2VkLCAxODIgaW5zZXJ0aW9ucygrKSwgMTAgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEv ZHJpdmVycy9maXJtd2FyZS9hcm1fZmZhL2RyaXZlci5jIGIvZHJpdmVycy9maXJtd2FyZS9hcm1f ZmZhL2RyaXZlci5jCmluZGV4IGRmZWViNzUxYmViZS4uYTBjODBlZmYwNGM0IDEwMDY0NAotLS0g YS9kcml2ZXJzL2Zpcm13YXJlL2FybV9mZmEvZHJpdmVyLmMKKysrIGIvZHJpdmVycy9maXJtd2Fy ZS9hcm1fZmZhL2RyaXZlci5jCkBAIC0yMiwxNSArMjIsMjAgQEAKICNkZWZpbmUgRFJJVkVSX05B TUUgIkFSTSBGRi1BIgogI2RlZmluZSBwcl9mbXQoZm10KSBEUklWRVJfTkFNRSAiOiAiIGZtdAog CisjaW5jbHVkZSA8bGludXgvYWNwaS5oPgogI2luY2x1ZGUgPGxpbnV4L2FybV9mZmEuaD4KICNp bmNsdWRlIDxsaW51eC9iaXRmaWVsZC5oPgorI2luY2x1ZGUgPGxpbnV4L2NwdWhvdHBsdWcuaD4K ICNpbmNsdWRlIDxsaW51eC9kZXZpY2UuaD4KKyNpbmNsdWRlIDxsaW51eC9pbnRlcnJ1cHQuaD4K ICNpbmNsdWRlIDxsaW51eC9pby5oPgogI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPgogI2luY2x1 ZGUgPGxpbnV4L21vZHVsZS5oPgogI2luY2x1ZGUgPGxpbnV4L21tLmg+CisjaW5jbHVkZSA8bGlu dXgvb2ZfaXJxLmg+CiAjaW5jbHVkZSA8bGludXgvc2NhdHRlcmxpc3QuaD4KICNpbmNsdWRlIDxs aW51eC9zbGFiLmg+CisjaW5jbHVkZSA8bGludXgvc21wLmg+CiAjaW5jbHVkZSA8bGludXgvdXVp ZC5oPgogCiAjaW5jbHVkZSAiY29tbW9uLmgiCkBAIC03Niw2ICs4MSwxMCBAQCBzdGF0aWMgaW5s aW5lIGludCBmZmFfdG9fbGludXhfZXJybm8oaW50IGVycm5vKQogCXJldHVybiAtRUlOVkFMOwog fQogCitzdHJ1Y3QgZmZhX3BjcHVfaXJxIHsKKwlzdHJ1Y3QgZmZhX2Rydl9pbmZvICppbmZvOwor fTsKKwogc3RydWN0IGZmYV9kcnZfaW5mbyB7CiAJdTMyIHZlcnNpb247CiAJdTE2IHZtX2lkOwpA QCAtODUsNiArOTQsMTIgQEAgc3RydWN0IGZmYV9kcnZfaW5mbyB7CiAJdm9pZCAqdHhfYnVmZmVy OwogCWJvb2wgbWVtX29wc19uYXRpdmU7CiAJYm9vbCBiaXRtYXBfY3JlYXRlZDsKKwl1bnNpZ25l ZCBpbnQgc2NoZWRfcmVjdl9pcnE7CisJdW5zaWduZWQgaW50IGNwdWhwX3N0YXRlOworCXN0cnVj dCBmZmFfcGNwdV9pcnEgX19wZXJjcHUgKmlycV9wY3B1OworCXN0cnVjdCB3b3JrcXVldWVfc3Ry dWN0ICpub3RpZl9wY3B1X3dxOworCXN0cnVjdCB3b3JrX3N0cnVjdCBpcnFfd29yazsKKwlib29s IGluZm9fZ2V0XzY0YjsKIH07CiAKIHN0YXRpYyBzdHJ1Y3QgZmZhX2Rydl9pbmZvICpkcnZfaW5m bzsKQEAgLTkyMiw5ICs5MzcsMTUzIEBAIHN0YXRpYyB2b2lkIGZmYV9zZXR1cF9wYXJ0aXRpb25z KHZvaWQpCiAJa2ZyZWUocGJ1Zik7CiB9CiAKKy8qIEZGQSBGRUFUVVJFIElEcyAqLworI2RlZmlu ZSBGRkFfRkVBVF9OT1RJRklDQVRJT05fUEVORElOR19JTlQJKDEpCisjZGVmaW5lIEZGQV9GRUFU X1NDSEVEVUxFX1JFQ0VJVkVSX0lOVAkJKDIpCisjZGVmaW5lIEZGQV9GRUFUX01BTkFHRURfRVhJ VF9JTlQJCSgzKQorCitzdGF0aWMgaXJxcmV0dXJuX3QgaXJxX2hhbmRsZXIoaW50IGlycSwgdm9p ZCAqaXJxX2RhdGEpCit7CisJc3RydWN0IGZmYV9wY3B1X2lycSAqcGNwdSA9IGlycV9kYXRhOwor CXN0cnVjdCBmZmFfZHJ2X2luZm8gKmluZm8gPSBwY3B1LT5pbmZvOworCisJcXVldWVfd29yayhp bmZvLT5ub3RpZl9wY3B1X3dxLCAmaW5mby0+aXJxX3dvcmspOworCisJcmV0dXJuIElSUV9IQU5E TEVEOworfQorCitzdGF0aWMgdm9pZCBmZmFfc2NoZWRfcmVjdl9pcnFfd29ya19mbihzdHJ1Y3Qg d29ya19zdHJ1Y3QgKndvcmspCit7CisJc3RydWN0IGZmYV9kcnZfaW5mbyAqaW5mbyA9IGNvbnRh aW5lcl9vZih3b3JrLCBzdHJ1Y3QgZmZhX2Rydl9pbmZvLAorCQkJCQkJIGlycV93b3JrKTsKKwor CWZmYV9ub3RpZmljYXRpb25faW5mb19nZXQoaW5mby0+aW5mb19nZXRfNjRiKTsKK30KKworc3Rh dGljIGludCBmZmFfc2NoZWRfcmVjdl9pcnFfbWFwKHZvaWQpCit7CisJaW50IHJldCwgaXJxLCBz cl9pbnRpZDsKKworCS8qIFRoZSByZXR1cm5lZCBzcl9pbnRpZCBpcyBhc3N1bWVkIHRvIGJlIFNH SSBkb25hdGVkIHRvIE5TIHdvcmxkICovCisJcmV0ID0gZmZhX2ZlYXR1cmVzKEZGQV9GRUFUX1ND SEVEVUxFX1JFQ0VJVkVSX0lOVCwgMCwgJnNyX2ludGlkLCBOVUxMKTsKKwlpZiAocmV0IDwgMCkg eworCQlpZiAocmV0ICE9IC1FT1BOT1RTVVBQKQorCQkJcHJfZXJyKCJGYWlsZWQgdG8gcmV0cmll dmUgc2NoZWR1bGVyIFJ4IGludGVycnVwdFxuIik7CisJCXJldHVybiByZXQ7CisJfQorCisJaWYg KGFjcGlfZGlzYWJsZWQpIHsKKwkJc3RydWN0IG9mX3BoYW5kbGVfYXJncyBvaXJxID0ge307CisJ CXN0cnVjdCBkZXZpY2Vfbm9kZSAqZ2ljOworCisJCS8qIE9ubHkgR0lDdjMgc3VwcG9ydGVkIGN1 cnJlbnRseSB3aXRoIHRoZSBkZXZpY2UgdHJlZSAqLworCQlnaWMgPSBvZl9maW5kX2NvbXBhdGli bGVfbm9kZShOVUxMLCBOVUxMLCAiYXJtLGdpYy12MyIpOworCQlpZiAoIWdpYykKKwkJCXJldHVy biAtRU5YSU87CisKKwkJb2lycS5ucCA9IGdpYzsKKwkJb2lycS5hcmdzX2NvdW50ID0gMTsKKwkJ b2lycS5hcmdzWzBdID0gc3JfaW50aWQ7CisJCWlycSA9IGlycV9jcmVhdGVfb2ZfbWFwcGluZygm b2lycSk7CisJCW9mX25vZGVfcHV0KGdpYyk7CisjaWZkZWYgQ09ORklHX0FDUEkKKwl9IGVsc2Ug eworCQlpcnEgPSBhY3BpX3JlZ2lzdGVyX2dzaShOVUxMLCBzcl9pbnRpZCwgQUNQSV9FREdFX1NF TlNJVElWRSwKKwkJCQkJQUNQSV9BQ1RJVkVfSElHSCk7CisjZW5kaWYKKwl9CisKKwlpZiAoaXJx IDw9IDApIHsKKwkJcHJfZXJyKCJGYWlsZWQgdG8gY3JlYXRlIElSUSBtYXBwaW5nIVxuIik7CisJ CXJldHVybiAtRU5PREFUQTsKKwl9CisKKwlyZXR1cm4gaXJxOworfQorCitzdGF0aWMgdm9pZCBm ZmFfc2NoZWRfcmVjdl9pcnFfdW5tYXAodm9pZCkKK3sKKwlpZiAoZHJ2X2luZm8tPnNjaGVkX3Jl Y3ZfaXJxKQorCQlpcnFfZGlzcG9zZV9tYXBwaW5nKGRydl9pbmZvLT5zY2hlZF9yZWN2X2lycSk7 Cit9CisKK3N0YXRpYyBpbnQgZmZhX2NwdWhwX3BjcHVfaXJxX2VuYWJsZSh1bnNpZ25lZCBpbnQg Y3B1KQoreworCWVuYWJsZV9wZXJjcHVfaXJxKGRydl9pbmZvLT5zY2hlZF9yZWN2X2lycSwgSVJR X1RZUEVfTk9ORSk7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgZmZhX2NwdWhwX3BjcHVf aXJxX2Rpc2FibGUodW5zaWduZWQgaW50IGNwdSkKK3sKKwlkaXNhYmxlX3BlcmNwdV9pcnEoZHJ2 X2luZm8tPnNjaGVkX3JlY3ZfaXJxKTsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQgZmZh X3VuaW5pdF9wY3B1X2lycSh2b2lkKQoreworCWlmIChkcnZfaW5mby0+Y3B1aHBfc3RhdGUpCisJ CWNwdWhwX3JlbW92ZV9zdGF0ZShkcnZfaW5mby0+Y3B1aHBfc3RhdGUpOworCisJaWYgKGRydl9p bmZvLT5ub3RpZl9wY3B1X3dxKQorCQlkZXN0cm95X3dvcmtxdWV1ZShkcnZfaW5mby0+bm90aWZf cGNwdV93cSk7CisKKwlpZiAoZHJ2X2luZm8tPnNjaGVkX3JlY3ZfaXJxKQorCQlmcmVlX3BlcmNw dV9pcnEoZHJ2X2luZm8tPnNjaGVkX3JlY3ZfaXJxLCBkcnZfaW5mby0+aXJxX3BjcHUpOworCisJ aWYgKGRydl9pbmZvLT5pcnFfcGNwdSkKKwkJZnJlZV9wZXJjcHUoZHJ2X2luZm8tPmlycV9wY3B1 KTsKK30KKworc3RhdGljIGludCBmZmFfaW5pdF9wY3B1X2lycSh1bnNpZ25lZCBpbnQgaXJxKQor eworCXN0cnVjdCBmZmFfcGNwdV9pcnEgX19wZXJjcHUgKmlycV9wY3B1OworCWludCByZXQsIGNw dTsKKworCWlycV9wY3B1ID0gYWxsb2NfcGVyY3B1KHN0cnVjdCBmZmFfcGNwdV9pcnEpOworCWlm ICghaXJxX3BjcHUpCisJCXJldHVybiAtRU5PTUVNOworCisJZm9yX2VhY2hfcHJlc2VudF9jcHUo Y3B1KQorCQlwZXJfY3B1X3B0cihpcnFfcGNwdSwgY3B1KS0+aW5mbyA9IGRydl9pbmZvOworCisJ ZHJ2X2luZm8tPmlycV9wY3B1ID0gaXJxX3BjcHU7CisKKwlyZXQgPSByZXF1ZXN0X3BlcmNwdV9p cnEoaXJxLCBpcnFfaGFuZGxlciwgIkFSTS1GRkEiLCBpcnFfcGNwdSk7CisJaWYgKHJldCkgewor CQlwcl9lcnIoIkVycm9yIHJlZ2lzdGVyaW5nIG5vdGlmaWNhdGlvbiBJUlEgJWQ6ICVkXG4iLCBp cnEsIHJldCk7CisJCXJldHVybiByZXQ7CisJfQorCisJSU5JVF9XT1JLKCZkcnZfaW5mby0+aXJx X3dvcmssIGZmYV9zY2hlZF9yZWN2X2lycV93b3JrX2ZuKTsKKwlkcnZfaW5mby0+bm90aWZfcGNw dV93cSA9IGNyZWF0ZV93b3JrcXVldWUoImZmYV9wY3B1X2lycV9ub3RpZmljYXRpb24iKTsKKwlp ZiAoIWRydl9pbmZvLT5ub3RpZl9wY3B1X3dxKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCXJldCA9 IGNwdWhwX3NldHVwX3N0YXRlKENQVUhQX0FQX09OTElORV9EWU4sICJmZmEvcGNwdS1pcnE6c3Rh cnRpbmciLAorCQkJCWZmYV9jcHVocF9wY3B1X2lycV9lbmFibGUsCisJCQkJZmZhX2NwdWhwX3Bj cHVfaXJxX2Rpc2FibGUpOworCisJaWYgKHJldCA8IDApCisJCXJldHVybiByZXQ7CisKKwlkcnZf aW5mby0+Y3B1aHBfc3RhdGUgPSByZXQ7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkIGZm YV9ub3RpZmljYXRpb25zX2NsZWFudXAodm9pZCkKK3sKKwlmZmFfdW5pbml0X3BjcHVfaXJxKCk7 CisJZmZhX3NjaGVkX3JlY3ZfaXJxX3VubWFwKCk7CisKKwlpZiAoZHJ2X2luZm8tPmJpdG1hcF9j cmVhdGVkKSB7CisJCWZmYV9ub3RpZmljYXRpb25fYml0bWFwX2Rlc3Ryb3koKTsKKwkJZHJ2X2lu Zm8tPmJpdG1hcF9jcmVhdGVkID0gZmFsc2U7CisJfQorfQorCiBzdGF0aWMgaW50IGZmYV9ub3Rp ZmljYXRpb25zX3NldHVwKHZvaWQpCiB7Ci0JaW50IHJldDsKKwlpbnQgcmV0LCBpcnE7CiAKIAly ZXQgPSBmZmFfZmVhdHVyZXMoRkZBX05PVElGSUNBVElPTl9CSVRNQVBfQ1JFQVRFLCAwLCBOVUxM LCBOVUxMKTsKIAlpZiAoIXJldCkgewpAQCAtOTM2LDE1ICsxMDk1LDI0IEBAIHN0YXRpYyBpbnQg ZmZhX25vdGlmaWNhdGlvbnNfc2V0dXAodm9pZCkKIAl9CiAJZHJ2X2luZm8tPmJpdG1hcF9jcmVh dGVkID0gdHJ1ZTsKIAotCXJldHVybiAwOwotfQorCWlycSA9IGZmYV9zY2hlZF9yZWN2X2lycV9t YXAoKTsKKwlpZiAoaXJxIDw9IDApCisJCWdvdG8gY2xlYW51cDsKIAotc3RhdGljIHZvaWQgZmZh X25vdGlmaWNhdGlvbnNfY2xlYW51cCh2b2lkKQotewotCWlmIChkcnZfaW5mby0+Yml0bWFwX2Ny ZWF0ZWQpIHsKLQkJZmZhX25vdGlmaWNhdGlvbl9iaXRtYXBfZGVzdHJveSgpOwotCQlkcnZfaW5m by0+Yml0bWFwX2NyZWF0ZWQgPSBmYWxzZTsKLQl9CisJaWYgKEZGQV9GTl9OQVRJVkUoTk9USUZJ Q0FUSU9OX0lORk9fR0VUKSA9PQorCQlGRkFfRk42NF9OT1RJRklDQVRJT05fSU5GT19HRVQpCisJ CWRydl9pbmZvLT5pbmZvX2dldF82NGIgPSB0cnVlOworCisJZHJ2X2luZm8tPnNjaGVkX3JlY3Zf aXJxID0gaXJxOworCisJcmV0ID0gZmZhX2luaXRfcGNwdV9pcnEoaXJxKTsKKwlpZiAocmV0KQor CQlnb3RvIGNsZWFudXA7CisKKwlyZXR1cm4gMDsKK2NsZWFudXA6CisJZmZhX25vdGlmaWNhdGlv bnNfY2xlYW51cCgpOworCXJldHVybiByZXQ7CiB9CiAKIHN0YXRpYyBpbnQgX19pbml0IGZmYV9p bml0KHZvaWQpCkBAIC0xMDAyLDcgKzExNzAsMTEgQEAgc3RhdGljIGludCBfX2luaXQgZmZhX2lu aXQodm9pZCkKIAogCWZmYV9zZXRfdXBfbWVtX29wc19uYXRpdmVfZmxhZygpOwogCi0JcmV0dXJu IGZmYV9ub3RpZmljYXRpb25zX3NldHVwKCk7CisJcmV0ID0gZmZhX25vdGlmaWNhdGlvbnNfc2V0 dXAoKTsKKwlpZiAocmV0KQorCQlnb3RvIGZyZWVfcGFnZXM7CisKKwlyZXR1cm4gMDsKIGZyZWVf cGFnZXM6CiAJaWYgKGRydl9pbmZvLT50eF9idWZmZXIpCiAJCWZyZWVfcGFnZXNfZXhhY3QoZHJ2 X2luZm8tPnR4X2J1ZmZlciwgUlhUWF9CVUZGRVJfU0laRSk7CgotLSAKMi40Mi4wCgoKX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KbGludXgtYXJtLWtlcm5l bCBtYWlsaW5nIGxpc3QKbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6 Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtYXJtLWtlcm5lbAo=