Received: by 2002:a05:7412:518d:b0:e2:908c:2ebd with SMTP id fn13csp373978rdb; Thu, 5 Oct 2023 08:22:15 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFUcHejBjG2dZWIw2RRcnvceoh38AOjQULBIXkayooMYqpoT+74/GrqgmGkbJ8POGgYYU85 X-Received: by 2002:a17:902:e890:b0:1c7:3156:ca48 with SMTP id w16-20020a170902e89000b001c73156ca48mr5349116plg.47.1696519335472; Thu, 05 Oct 2023 08:22:15 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1696519335; cv=none; d=google.com; s=arc-20160816; b=FJw+pe9lW5iL0PYzy9/aHP7VJgQ9poVe/Y0BNbDd4EWGujQ+S0d+elTakQBLWjMCSt LjpAiHO5ytPrI40o2vn4VZeqE8YdThNpkt8OwPd32IITEDUDX6k4GISeqZXLE930ZC9N JG5BeUbClKhF0UkfBAWebFwb5pJGDamJx97ZEOJLc8UInxN3SXfdbJmsOjfHHnebK0Yt VxmVcTDvodxXNJNdi64fa62rscsNWGrUMVXv/66Ci4+MjOilB39cTvinZEENmm6lEHXu rG73d8LGQZ9iEW0Z7K6MNzDQcSL0JHjAUKYiFbrhcYSdKlzByQ93UkNKiNq1hUkNU/MU QIrQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:in-reply-to:references:message-id :content-transfer-encoding:mime-version:subject:date:from; bh=8/EJURBtgep5wweahOXlRWmeVdKSPIsXDFvuIXkBxH4=; fh=6OYY6fD5PfTLF1F737Vl+bRsEmFHuj4gbYLrOs5QYVs=; b=UievLo+Ij6laktZsNHlcvSrp4k7iFMsBQlo8Yf2PCXbdEZKf7mKR5DLPA8IqekCNDT LlY9EGauqOfWtpPA9H2xxfDn8tAPAQaXPLTLUWJG/+QuHvf6UUqPBFrGxb5A8o/C1f10 n8KNUz8RTGmCV3QiN0oOWeznc2O9ykVitfZzdS4e2oREIsD+rVgX1xaiVKMzNEVJfjRA 2vrmrKEif5FHC+Xp7OdpgeZ18dIPHpnujaO5BAjaqEFIUhO5L4wrBgRXGhzHc5kxdwsV aOYc2j6ozAWNrBi85yJ+soK+U5J24YqZX3hICKcwdRQ2TXIbwb4+M4wVtT6OZlCBP+DP efDQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.36 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=arm.com Return-Path: Received: from pete.vger.email (pete.vger.email. [23.128.96.36]) by mx.google.com with ESMTPS id a16-20020a170902ecd000b001c7380aca09si1829874plh.512.2023.10.05.08.22.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 05 Oct 2023 08:22:15 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.36 as permitted sender) client-ip=23.128.96.36; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.36 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=arm.com Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by pete.vger.email (Postfix) with ESMTP id E503D83DB339; Thu, 5 Oct 2023 08:22:10 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at pete.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231586AbjJEPVv (ORCPT + 99 others); Thu, 5 Oct 2023 11:21:51 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:42784 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233390AbjJEPVF (ORCPT ); Thu, 5 Oct 2023 11:21:05 -0400 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id 52F8C21342 for ; Thu, 5 Oct 2023 07:45:44 -0700 (PDT) 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 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit 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-Spam-Status: No, score=-0.8 required=5.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on pete.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (pete.vger.email [0.0.0.0]); Thu, 05 Oct 2023 08:22:11 -0700 (PDT) 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 --- 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; -- 2.42.0