From patchwork Thu Oct 5 14:45:07 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sudeep Holla X-Patchwork-Id: 13410173 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 10B6DE92709 for ; Thu, 5 Oct 2023 14:46:15 +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:Cc:To:In-Reply-To:References:Message-Id :MIME-Version:Subject:Date:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=JTvLlpPWXEaV2PjYIIusin8v4Ff12bxr3LHXHIUvpPU=; b=k4mqVIjCctH+76 xQ6IDM83g9aDkC03K8wFo72n6o3CAS4ulHN5uv/S7ckTjKbvRM+bvEmA9VHZk4eu8tJ31d0xau4+J ReTO4sAQypZS6g1XlFW/dpN4/UjkXiZCIZZ8qGMr4Ni3xqg54U7lVNAbl7RkyFmYVaqdyEGUnI6W6 Imsq9J7Ft0VwAkdwuI7mxsiqJGK2bwlHuTxIn0YMthnSFWzxkVxqLO/laxVPKxSc/EueGC0BeGiRg tNvK7xcKpLl8ZJtvWn0CzGTovjQr57gzMkYH2aSx37F5BEob71xfk166Mq+nb1b64OaroJ7LQadGc 9hLeaVWLxVPligAG5A5Q==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1qoPbl-003m0R-1x; Thu, 05 Oct 2023 14:45:45 +0000 Received: from foss.arm.com ([217.140.110.172]) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1qoPbS-003lb4-2V for linux-arm-kernel@lists.infradead.org; Thu, 05 Oct 2023 14:45:32 +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 C90EC1650; Thu, 5 Oct 2023 07:46:04 -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 A87D53F641; Thu, 5 Oct 2023 07:45:24 -0700 (PDT) From: Sudeep Holla Date: Thu, 05 Oct 2023 15:45:07 +0100 Subject: [PATCH v4 14/17] KVM: arm64: FFA: Remove access of endpoint memory access descriptor array MIME-Version: 1.0 Message-Id: <20231005-ffa_v1-1_notif-v4-14-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 Cc: Marc Zyngier , Oliver Upton , Will Deacon , Quentin Perret X-Mailer: b4 0.12.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=3232; i=sudeep.holla@arm.com; h=from:subject:message-id; bh=SS6JRBjjCJQqFwvnNz13s81gsvYnAl3iEKszag6Pbtw=; b=owEBbQKS/ZANAwAIAQBBurwxfuKYAcsmYgBlHsvydd/+94+47JnCF7cTSk3FzmX9PSPrdF9Ly GN4PBA5oLqJAjMEAAEIAB0WIQS6ceUSBvMeskPdk+EAQbq8MX7imAUCZR7L8gAKCRAAQbq8MX7i mLjxEADBX6incMiMnSXjh5fzCkWAWrvI9bfk0iqevZkcvD1/rbY6wqo3eJMbTL8rhsCA9DphjKX wscGHUig6QHtuR6KFqbQVId6lgMAPFL8yCfALoAp1RbZtNe0FKoFN6YoPtGM42ckpNthk+9XA7j ohxfcrgBkmGYRAChnxFguIvAk8FXHWS81BY6XGhacN1OnSfUNhmhZvs/MAqdeDh5TO3mEQ2ckA/ nYWRc1JBvLGg6tpYzyZiAh5tV3gDSqUehDjjTqZMn9bMQrsFaxYg+psry4m3jdNoDf+Wkg+D4Pm qA11X7O6BdsBI8mD+Hg7l3u/vkzJ3026jUUPUVtTaMWxxMX3VlrWtqcWSENBoPIPwopVECspfQ0 yBGGZhhA3fOL5gZQ23newDuhWt+cuJlXtwGzFdRGtC2idSBQd0Cnm2BPbBX9uc7u2kkyOIAkkdt NQuIpW5Ib8xcMhJcStZ8lj73YiQsWf1BoXROHcljTWTFyEJrV5AJBC9e1gPPMReQMLlRPMyQ/gD eJlreACercAiLNVQk8uCf3RfGBNoB6bIBmbh/C5T6iDWi7EU8mpzPJkpHOZildEw450NjWCqzpS I9o4IfUm5LWPwOfuh4H+Na+Xiz2z4v2Jbw8o4K+3carzaVhIRM91dw/oAjgK2o4TScC8WIfi7ot x1XvkKUx7I2W/kw== 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_074527_018399_61994FC2 X-CRM114-Status: GOOD ( 13.54 ) 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: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org FF-A v1.1 removes the fixed location of endpoint memory access descriptor array within the memory transaction descriptor structure. In preparation to remove the ep_mem_access member from the ffa_mem_region structure, provide the accessor to fetch the offset and use the same in FF-A proxy implementation. The accessor take the FF-A version as the argument from which the memory access descriptor format can be determined. v1.0 uses the old format while v1.1 onwards use the new format specified in the v1.1 specification. Cc: Marc Zyngier Cc: Oliver Upton Cc: Will Deacon Cc: Quentin Perret Signed-off-by: Sudeep Holla Acked-by: Marc Zyngier --- arch/arm64/kvm/hyp/nvhe/ffa.c | 10 ++++++++-- include/linux/arm_ffa.h | 6 ++++++ 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/arch/arm64/kvm/hyp/nvhe/ffa.c b/arch/arm64/kvm/hyp/nvhe/ffa.c index 6e4dba9eadef..320f2eaa14a9 100644 --- a/arch/arm64/kvm/hyp/nvhe/ffa.c +++ b/arch/arm64/kvm/hyp/nvhe/ffa.c @@ -423,6 +423,7 @@ static __always_inline void do_ffa_mem_xfer(const u64 func_id, DECLARE_REG(u32, fraglen, ctxt, 2); DECLARE_REG(u64, addr_mbz, ctxt, 3); DECLARE_REG(u32, npages_mbz, ctxt, 4); + struct ffa_mem_region_attributes *ep_mem_access; struct ffa_composite_mem_region *reg; struct ffa_mem_region *buf; u32 offset, nr_ranges; @@ -452,7 +453,9 @@ static __always_inline void do_ffa_mem_xfer(const u64 func_id, buf = hyp_buffers.tx; memcpy(buf, host_buffers.tx, fraglen); - offset = buf->ep_mem_access[0].composite_off; + ep_mem_access = (void *)buf + + ffa_mem_desc_offset(buf, 0, FFA_VERSION_1_0); + offset = ep_mem_access->composite_off; if (!offset || buf->ep_count != 1 || buf->sender_id != HOST_FFA_ID) { ret = FFA_RET_INVALID_PARAMETERS; goto out_unlock; @@ -504,6 +507,7 @@ static void do_ffa_mem_reclaim(struct arm_smccc_res *res, DECLARE_REG(u32, handle_lo, ctxt, 1); DECLARE_REG(u32, handle_hi, ctxt, 2); DECLARE_REG(u32, flags, ctxt, 3); + struct ffa_mem_region_attributes *ep_mem_access; struct ffa_composite_mem_region *reg; u32 offset, len, fraglen, fragoff; struct ffa_mem_region *buf; @@ -528,7 +532,9 @@ static void do_ffa_mem_reclaim(struct arm_smccc_res *res, len = res->a1; fraglen = res->a2; - offset = buf->ep_mem_access[0].composite_off; + ep_mem_access = (void *)buf + + ffa_mem_desc_offset(buf, 0, FFA_VERSION_1_0); + offset = ep_mem_access->composite_off; /* * We can trust the SPMD to get this right, but let's at least * check that we end up with something that doesn't look _completely_ diff --git a/include/linux/arm_ffa.h b/include/linux/arm_ffa.h index 748d0a83a4bc..2444d596b703 100644 --- a/include/linux/arm_ffa.h +++ b/include/linux/arm_ffa.h @@ -357,6 +357,12 @@ struct ffa_mem_region { #define CONSTITUENTS_OFFSET(x) \ (offsetof(struct ffa_composite_mem_region, constituents[x])) +static inline u32 +ffa_mem_desc_offset(struct ffa_mem_region *buf, int count, u32 ffa_version) +{ + return COMPOSITE_OFFSET(0); +} + struct ffa_mem_ops_args { bool use_txbuf; u32 nattrs;