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 AD907E92706 for ; Thu, 5 Oct 2023 14:45:57 +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=T+5YVkoOJWyhAMiG8DD4fBNDvp0bswyreik2dZNpHfY=; b=fHb+WL/CiPMJgk Ehd7acKWXo2XxNlCXZj2YQKWFzb4oh6q+l2RFTNtV8K8sCQqzDFgNHFQNZPHum1SsxaTUlhi5d9gK VZD+fxir6rzVDT9gLZD4c0QX9RAKlKUF7Eta8ITOPhKeRdXLrTCjNqAp9jyc7U/0B7GCMH/KCfbF6 38gqxsDm0Koi/5ZXwcKD9FKHlpaLU2KBpYBjfIwPTRvz1PmnmOSKhPbE2Y8uwH/wuVFTq1cccmlDn 4X/71QhDNdhzjZIyYlpaSGBlUpf6ha8a2RD9ISamazEuyVFqifmiQUAA+5xP7CTfI5+atAgiy0obU 62wkPpsAW5RRIBKD8ocQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1qoPbS-003lgz-1J; Thu, 05 Oct 2023 14:45:26 +0000 Received: from foss.arm.com ([217.140.110.172]) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1qoPbL-003lcW-1r for linux-arm-kernel@lists.infradead.org; Thu, 05 Oct 2023 14:45:24 +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 275C01570; Thu, 5 Oct 2023 07:45:57 -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 719143F641; Thu, 5 Oct 2023 07:45:17 -0700 (PDT) From: Sudeep Holla Date: Thu, 05 Oct 2023 15:45:01 +0100 Subject: [PATCH v4 08/17] firmware: arm_ffa: Initial support for scheduler receiver interrupt MIME-Version: 1.0 Message-Id: <20231005-ffa_v1-1_notif-v4-8-cddd3237809c@arm.com> References: <20231005-ffa_v1-1_notif-v4-0-cddd3237809c@arm.com> In-Reply-To: <20231005-ffa_v1-1_notif-v4-0-cddd3237809c@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=7668; i=sudeep.holla@arm.com; h=from:subject:message-id; bh=yU+hWtBWbLNiVtAMPUpIWeJRLZY4AERdKc+TThgbkq8=; b=owEBbQKS/ZANAwAIAQBBurwxfuKYAcsmYgBlHsvxPVH0CxF7HA2KS9+I8Bsy1VybqF81R5Ap0 SepshdLeK+JAjMEAAEIAB0WIQS6ceUSBvMeskPdk+EAQbq8MX7imAUCZR7L8QAKCRAAQbq8MX7i mOFID/4yQcSmODzazuTJAo2qCM/wRZ1K9colo9iGkyq2Bvf+QlxB71uQbOiwTIUzecMhAAnawZm mdrYi2an/rCfTkPO3SUUTEeBofdZzw7HmIQ1MaFnmEAMzPg7xa9B+DRZd3u3cdvbk0ixmz3btL9 v7RB4Uf+6/aulhX6sZ6m4PpIP/sarkjLNPg7kIsJsYW1oMeQ9DcgYXVCubSRcamdb+kDH+wdwbc rzCs2/5qXsiCIvNZ7DrchAl8GZztkphtUs/scloQcVP70N/TwaO04rspoOpoiQCBaVvWlNk79mp 2ZhfoEBcb5ekI3kxnTG6ej5tRiU2yd37IqKm4rVUIraF8+LJqKJh72HSeSethCmFK0xiRz1dD+s px0VefwJn52EgylDgmgRn/DF2Y4tRfFnzRrJ38GBsRtswEyKr6JIpjKZ4ytzkzY5gLLLCkFwtIT s6t2xlculC6/zXk8Ftbce+ie/HDOitgPWjL/wvc1mM7UE/aZv7OffunAAvLDCGmwBPyLB/MeTaI 9IBqMCFQPjEx7dQPaDd+zk9sjElWRKBtNRLh68rs6U7JLZcbk4O9ifRmb3hKxDgCqAD7XfAVZPX pSPW2/ij0UD8pC3IeHiO3CdXVLxu+OlVmOcEsI88juRU21Khq11M4Lg7O52PL0Aedtj7kK1j2KL KQoTgS+6nEN3SRA== 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-20231005_074519_707447_D73DEB2A X-CRM114-Status: GOOD ( 22.23 ) 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 LmMgfCAxODYgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0KIDEgZmlsZSBj aGFuZ2VkLCAxNzYgaW5zZXJ0aW9ucygrKSwgMTAgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEv ZHJpdmVycy9maXJtd2FyZS9hcm1fZmZhL2RyaXZlci5jIGIvZHJpdmVycy9maXJtd2FyZS9hcm1f ZmZhL2RyaXZlci5jCmluZGV4IGIxZGQ4NTM5YWIwZC4uZjhkMDE4NDBmNWVjIDEwMDY0NAotLS0g YS9kcml2ZXJzL2Zpcm13YXJlL2FybV9mZmEvZHJpdmVyLmMKKysrIGIvZHJpdmVycy9maXJtd2Fy ZS9hcm1fZmZhL2RyaXZlci5jCkBAIC0yMiwxNSArMjIsMjAgQEAKICNkZWZpbmUgRFJJVkVSX05B TUUgIkFSTSBGRi1BIgogI2RlZmluZSBwcl9mbXQoZm10KSBEUklWRVJfTkFNRSAiOiAiIGZtdAog CisjaW5jbHVkZSA8bGludXgvYWNwaS5oPgogI2luY2x1ZGUgPGxpbnV4L2FybV9mZmEuaD4KICNp bmNsdWRlIDxsaW51eC9iaXRmaWVsZC5oPgorI2luY2x1ZGUgPGxpbnV4L2NwdWhvdHBsdWcuaD4K ICNpbmNsdWRlIDxsaW51eC9kZXZpY2UuaD4KKyNpbmNsdWRlIDxsaW51eC9pbnRlcnJ1cHQuaD4K ICNpbmNsdWRlIDxsaW51eC9pby5oPgogI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPgogI2luY2x1 ZGUgPGxpbnV4L21vZHVsZS5oPgogI2luY2x1ZGUgPGxpbnV4L21tLmg+CisjaW5jbHVkZSA8bGlu dXgvb2ZfaXJxLmg+CiAjaW5jbHVkZSA8bGludXgvc2NhdHRlcmxpc3QuaD4KICNpbmNsdWRlIDxs aW51eC9zbGFiLmg+CisjaW5jbHVkZSA8bGludXgvc21wLmg+CiAjaW5jbHVkZSA8bGludXgvdXVp ZC5oPgogCiAjaW5jbHVkZSAiY29tbW9uLmgiCkBAIC03Niw2ICs4MSwxMCBAQCBzdGF0aWMgaW5s aW5lIGludCBmZmFfdG9fbGludXhfZXJybm8oaW50IGVycm5vKQogCXJldHVybiAtRUlOVkFMOwog fQogCitzdHJ1Y3QgZmZhX3BjcHVfaXJxIHsKKwlzdHJ1Y3QgZmZhX2Rydl9pbmZvICppbmZvOwor fTsKKwogc3RydWN0IGZmYV9kcnZfaW5mbyB7CiAJdTMyIHZlcnNpb247CiAJdTE2IHZtX2lkOwpA QCAtODUsNiArOTQsMTEgQEAgc3RydWN0IGZmYV9kcnZfaW5mbyB7CiAJdm9pZCAqdHhfYnVmZmVy OwogCWJvb2wgbWVtX29wc19uYXRpdmU7CiAJYm9vbCBiaXRtYXBfY3JlYXRlZDsKKwl1bnNpZ25l ZCBpbnQgc2NoZWRfcmVjdl9pcnE7CisJdW5zaWduZWQgaW50IGNwdWhwX3N0YXRlOworCXN0cnVj dCBmZmFfcGNwdV9pcnEgX19wZXJjcHUgKmlycV9wY3B1OworCXN0cnVjdCB3b3JrcXVldWVfc3Ry dWN0ICpub3RpZl9wY3B1X3dxOworCXN0cnVjdCB3b3JrX3N0cnVjdCBpcnFfd29yazsKIH07CiAK IHN0YXRpYyBzdHJ1Y3QgZmZhX2Rydl9pbmZvICpkcnZfaW5mbzsKQEAgLTkxNywzNCArOTMxLDE4 MiBAQCBzdGF0aWMgdm9pZCBmZmFfc2V0dXBfcGFydGl0aW9ucyh2b2lkKQogCWtmcmVlKHBidWYp OwogfQogCi1zdGF0aWMgaW50IGZmYV9ub3RpZmljYXRpb25zX3NldHVwKHZvaWQpCisvKiBGRkEg RkVBVFVSRSBJRHMgKi8KKyNkZWZpbmUgRkZBX0ZFQVRfTk9USUZJQ0FUSU9OX1BFTkRJTkdfSU5U CSgxKQorI2RlZmluZSBGRkFfRkVBVF9TQ0hFRFVMRV9SRUNFSVZFUl9JTlQJCSgyKQorI2RlZmlu ZSBGRkFfRkVBVF9NQU5BR0VEX0VYSVRfSU5UCQkoMykKKworc3RhdGljIGlycXJldHVybl90IGly cV9oYW5kbGVyKGludCBpcnEsIHZvaWQgKmlycV9kYXRhKQogewotCWludCByZXQ7CisJc3RydWN0 IGZmYV9wY3B1X2lycSAqcGNwdSA9IGlycV9kYXRhOworCXN0cnVjdCBmZmFfZHJ2X2luZm8gKmlu Zm8gPSBwY3B1LT5pbmZvOwogCi0JcmV0ID0gZmZhX2ZlYXR1cmVzKEZGQV9OT1RJRklDQVRJT05f QklUTUFQX0NSRUFURSwgMCwgTlVMTCwgTlVMTCk7Ci0JaWYgKHJldCkgewotCQlwcl9lcnIoIk5v dGlmaWNhdGlvbnMgbm90IHN1cHBvcnRlZCwgY29udGludWluZyB3aXRoIGl0IC4uXG4iKTsKLQkJ cmV0dXJuIDA7CisJcXVldWVfd29yayhpbmZvLT5ub3RpZl9wY3B1X3dxLCAmaW5mby0+aXJxX3dv cmspOworCisJcmV0dXJuIElSUV9IQU5ETEVEOworfQorCitzdGF0aWMgdm9pZCBmZmFfc2NoZWRf cmVjdl9pcnFfd29ya19mbihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCit7CisJZmZhX25vdGlm aWNhdGlvbl9pbmZvX2dldCgpOworfQorCitzdGF0aWMgaW50IGZmYV9zY2hlZF9yZWN2X2lycV9t YXAodm9pZCkKK3sKKwlpbnQgcmV0LCBpcnEsIHNyX2ludGlkOworCisJLyogVGhlIHJldHVybmVk IHNyX2ludGlkIGlzIGFzc3VtZWQgdG8gYmUgU0dJIGRvbmF0ZWQgdG8gTlMgd29ybGQgKi8KKwly ZXQgPSBmZmFfZmVhdHVyZXMoRkZBX0ZFQVRfU0NIRURVTEVfUkVDRUlWRVJfSU5ULCAwLCAmc3Jf aW50aWQsIE5VTEwpOworCWlmIChyZXQgPCAwKSB7CisJCWlmIChyZXQgIT0gLUVPUE5PVFNVUFAp CisJCQlwcl9lcnIoIkZhaWxlZCB0byByZXRyaWV2ZSBzY2hlZHVsZXIgUnggaW50ZXJydXB0XG4i KTsKKwkJcmV0dXJuIHJldDsKIAl9CiAKLQlyZXQgPSBmZmFfbm90aWZpY2F0aW9uX2JpdG1hcF9j cmVhdGUoKTsKKwlpZiAoYWNwaV9kaXNhYmxlZCkgeworCQlzdHJ1Y3Qgb2ZfcGhhbmRsZV9hcmdz IG9pcnEgPSB7fTsKKwkJc3RydWN0IGRldmljZV9ub2RlICpnaWM7CisKKwkJLyogT25seSBHSUN2 MyBzdXBwb3J0ZWQgY3VycmVudGx5IHdpdGggdGhlIGRldmljZSB0cmVlICovCisJCWdpYyA9IG9m X2ZpbmRfY29tcGF0aWJsZV9ub2RlKE5VTEwsIE5VTEwsICJhcm0sZ2ljLXYzIik7CisJCWlmICgh Z2ljKQorCQkJcmV0dXJuIC1FTlhJTzsKKworCQlvaXJxLm5wID0gZ2ljOworCQlvaXJxLmFyZ3Nf Y291bnQgPSAxOworCQlvaXJxLmFyZ3NbMF0gPSBzcl9pbnRpZDsKKwkJaXJxID0gaXJxX2NyZWF0 ZV9vZl9tYXBwaW5nKCZvaXJxKTsKKwkJb2Zfbm9kZV9wdXQoZ2ljKTsKKyNpZmRlZiBDT05GSUdf QUNQSQorCX0gZWxzZSB7CisJCWlycSA9IGFjcGlfcmVnaXN0ZXJfZ3NpKE5VTEwsIHNyX2ludGlk LCBBQ1BJX0VER0VfU0VOU0lUSVZFLAorCQkJCQlBQ1BJX0FDVElWRV9ISUdIKTsKKyNlbmRpZgor CX0KKworCWlmIChpcnEgPD0gMCkgeworCQlwcl9lcnIoIkZhaWxlZCB0byBjcmVhdGUgSVJRIG1h cHBpbmchXG4iKTsKKwkJcmV0dXJuIC1FTk9EQVRBOworCX0KKworCXJldHVybiBpcnE7Cit9CisK K3N0YXRpYyB2b2lkIGZmYV9zY2hlZF9yZWN2X2lycV91bm1hcCh2b2lkKQoreworCWlmIChkcnZf aW5mby0+c2NoZWRfcmVjdl9pcnEpCisJCWlycV9kaXNwb3NlX21hcHBpbmcoZHJ2X2luZm8tPnNj aGVkX3JlY3ZfaXJxKTsKK30KKworc3RhdGljIGludCBmZmFfY3B1aHBfcGNwdV9pcnFfZW5hYmxl KHVuc2lnbmVkIGludCBjcHUpCit7CisJZW5hYmxlX3BlcmNwdV9pcnEoZHJ2X2luZm8tPnNjaGVk X3JlY3ZfaXJxLCBJUlFfVFlQRV9OT05FKTsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBm ZmFfY3B1aHBfcGNwdV9pcnFfZGlzYWJsZSh1bnNpZ25lZCBpbnQgY3B1KQoreworCWRpc2FibGVf cGVyY3B1X2lycShkcnZfaW5mby0+c2NoZWRfcmVjdl9pcnEpOworCXJldHVybiAwOworfQorCitz dGF0aWMgdm9pZCBmZmFfdW5pbml0X3BjcHVfaXJxKHZvaWQpCit7CisJaWYgKGRydl9pbmZvLT5j cHVocF9zdGF0ZSkKKwkJY3B1aHBfcmVtb3ZlX3N0YXRlKGRydl9pbmZvLT5jcHVocF9zdGF0ZSk7 CisKKwlpZiAoZHJ2X2luZm8tPm5vdGlmX3BjcHVfd3EpCisJCWRlc3Ryb3lfd29ya3F1ZXVlKGRy dl9pbmZvLT5ub3RpZl9wY3B1X3dxKTsKKworCWlmIChkcnZfaW5mby0+c2NoZWRfcmVjdl9pcnEp CisJCWZyZWVfcGVyY3B1X2lycShkcnZfaW5mby0+c2NoZWRfcmVjdl9pcnEsIGRydl9pbmZvLT5p cnFfcGNwdSk7CisKKwlpZiAoZHJ2X2luZm8tPmlycV9wY3B1KQorCQlmcmVlX3BlcmNwdShkcnZf aW5mby0+aXJxX3BjcHUpOworfQorCitzdGF0aWMgaW50IGZmYV9pbml0X3BjcHVfaXJxKHVuc2ln bmVkIGludCBpcnEpCit7CisJc3RydWN0IGZmYV9wY3B1X2lycSBfX3BlcmNwdSAqaXJxX3BjcHU7 CisJaW50IHJldCwgY3B1OworCisJaXJxX3BjcHUgPSBhbGxvY19wZXJjcHUoc3RydWN0IGZmYV9w Y3B1X2lycSk7CisJaWYgKCFpcnFfcGNwdSkKKwkJcmV0dXJuIC1FTk9NRU07CisKKwlmb3JfZWFj aF9wcmVzZW50X2NwdShjcHUpCisJCXBlcl9jcHVfcHRyKGlycV9wY3B1LCBjcHUpLT5pbmZvID0g ZHJ2X2luZm87CisKKwlkcnZfaW5mby0+aXJxX3BjcHUgPSBpcnFfcGNwdTsKKworCXJldCA9IHJl cXVlc3RfcGVyY3B1X2lycShpcnEsIGlycV9oYW5kbGVyLCAiQVJNLUZGQSIsIGlycV9wY3B1KTsK IAlpZiAocmV0KSB7Ci0JCXByX2Vycigibm90aWZpY2F0aW9uX2JpdG1hcF9jcmVhdGUgZXJyb3Ig JWRcbiIsIHJldCk7CisJCXByX2VycigiRXJyb3IgcmVnaXN0ZXJpbmcgbm90aWZpY2F0aW9uIElS USAlZDogJWRcbiIsIGlycSwgcmV0KTsKIAkJcmV0dXJuIHJldDsKIAl9Ci0JZHJ2X2luZm8tPmJp dG1hcF9jcmVhdGVkID0gdHJ1ZTsKIAorCUlOSVRfV09SSygmZHJ2X2luZm8tPmlycV93b3JrLCBm ZmFfc2NoZWRfcmVjdl9pcnFfd29ya19mbik7CisJZHJ2X2luZm8tPm5vdGlmX3BjcHVfd3EgPSBj cmVhdGVfd29ya3F1ZXVlKCJmZmFfcGNwdV9pcnFfbm90aWZpY2F0aW9uIik7CisJaWYgKCFkcnZf aW5mby0+bm90aWZfcGNwdV93cSkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwlyZXQgPSBjcHVocF9z ZXR1cF9zdGF0ZShDUFVIUF9BUF9PTkxJTkVfRFlOLCAiZmZhL3BjcHUtaXJxOnN0YXJ0aW5nIiwK KwkJCQlmZmFfY3B1aHBfcGNwdV9pcnFfZW5hYmxlLAorCQkJCWZmYV9jcHVocF9wY3B1X2lycV9k aXNhYmxlKTsKKworCWlmIChyZXQgPCAwKQorCQlyZXR1cm4gcmV0OworCisJZHJ2X2luZm8tPmNw dWhwX3N0YXRlID0gcmV0OwogCXJldHVybiAwOwogfQogCiBzdGF0aWMgdm9pZCBmZmFfbm90aWZp Y2F0aW9uc19jbGVhbnVwKHZvaWQpCiB7CisJZmZhX3VuaW5pdF9wY3B1X2lycSgpOworCWZmYV9z Y2hlZF9yZWN2X2lycV91bm1hcCgpOworCiAJaWYgKGRydl9pbmZvLT5iaXRtYXBfY3JlYXRlZCkg ewogCQlmZmFfbm90aWZpY2F0aW9uX2JpdG1hcF9kZXN0cm95KCk7CiAJCWRydl9pbmZvLT5iaXRt YXBfY3JlYXRlZCA9IGZhbHNlOwogCX0KIH0KIAorc3RhdGljIGludCBmZmFfbm90aWZpY2F0aW9u c19zZXR1cCh2b2lkKQoreworCWludCByZXQsIGlycTsKKworCXJldCA9IGZmYV9mZWF0dXJlcyhG RkFfTk9USUZJQ0FUSU9OX0JJVE1BUF9DUkVBVEUsIDAsIE5VTEwsIE5VTEwpOworCWlmIChyZXQp IHsKKwkJcHJfZXJyKCJOb3RpZmljYXRpb25zIG5vdCBzdXBwb3J0ZWQsIGNvbnRpbnVpbmcgd2l0 aCBpdCAuLlxuIik7CisJCXJldHVybiAwOworCX0KKworCXJldCA9IGZmYV9ub3RpZmljYXRpb25f Yml0bWFwX2NyZWF0ZSgpOworCWlmIChyZXQpIHsKKwkJcHJfZXJyKCJub3RpZmljYXRpb25fYml0 bWFwX2NyZWF0ZSBlcnJvciAlZFxuIiwgcmV0KTsKKwkJcmV0dXJuIHJldDsKKwl9CisJZHJ2X2lu Zm8tPmJpdG1hcF9jcmVhdGVkID0gdHJ1ZTsKKworCWlycSA9IGZmYV9zY2hlZF9yZWN2X2lycV9t YXAoKTsKKwlpZiAoaXJxIDw9IDApIHsKKwkJcmV0ID0gaXJxOworCQlnb3RvIGNsZWFudXA7CisJ fQorCisJZHJ2X2luZm8tPnNjaGVkX3JlY3ZfaXJxID0gaXJxOworCisJcmV0ID0gZmZhX2luaXRf cGNwdV9pcnEoaXJxKTsKKwlpZiAocmV0KQorCQlnb3RvIGNsZWFudXA7CisKKwlyZXR1cm4gMDsK K2NsZWFudXA6CisJZmZhX25vdGlmaWNhdGlvbnNfY2xlYW51cCgpOworCXJldHVybiByZXQ7Cit9 CisKIHN0YXRpYyBpbnQgX19pbml0IGZmYV9pbml0KHZvaWQpCiB7CiAJaW50IHJldDsKQEAgLTEw MDAsNyArMTE2MiwxMSBAQCBzdGF0aWMgaW50IF9faW5pdCBmZmFfaW5pdCh2b2lkKQogCiAJZmZh X3NldF91cF9tZW1fb3BzX25hdGl2ZV9mbGFnKCk7CiAKLQlyZXR1cm4gZmZhX25vdGlmaWNhdGlv bnNfc2V0dXAoKTsKKwlyZXQgPSBmZmFfbm90aWZpY2F0aW9uc19zZXR1cCgpOworCWlmIChyZXQp CisJCWdvdG8gZnJlZV9wYWdlczsKKworCXJldHVybiAwOwogZnJlZV9wYWdlczoKIAlpZiAoZHJ2 X2luZm8tPnR4X2J1ZmZlcikKIAkJZnJlZV9wYWdlc19leGFjdChkcnZfaW5mby0+dHhfYnVmZmVy LCBSWFRYX0JVRkZFUl9TSVpFKTsKCi0tIAoyLjQyLjAKCgpfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1hcm0ta2VybmVsIG1haWxpbmcgbGlzdAps aW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVh ZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1hcm0ta2VybmVsCg==