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 1D47CC19F32 for ; Wed, 5 Mar 2025 09:43:02 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:In-Reply-To: Content-Transfer-Encoding:Content-Type:MIME-Version:References:Message-ID: Subject:Cc:To:From:Date:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=OmCalTysIhaXuo3R6XJ657IeqFNmpneS9N+UC+Q4IVo=; b=gYpzlq9zbLcdEjvkWVl+RfBQmn K0kGCqLXjoRrb9bvH7Vv49LArrBgQ/MvmwPGcdhjlQBiR08IZ9n9R0xYPRSd8pExxELlqUDXCc+V9 g0uabj/zqhJoIJiD95hjWxsd5Uu3XTrRyqwlhrcc6eOA6JNMbvVqd7gDi0EunFH8/Ehn7x2dhwpd9 mwnOfYcl75MTnxEBf2Yu1+W5H6U7a5O5vJKiva1Ivqdn0vN6P7scRDxbSkk9zDeSqcdiMYMoiVHrn B+JFRRgdtWxHB8XDzBlrywo5lqkdNPARtCZ5nZN8cc0nNvVxcksWXqtfszcnDtuRP8EbWTyOdtw4v e3orENnw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1tplH8-00000007XqR-0Hpe; Wed, 05 Mar 2025 09:42:50 +0000 Received: from foss.arm.com ([217.140.110.172]) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1tplFY-00000007Xgm-0AIC for linux-arm-kernel@lists.infradead.org; Wed, 05 Mar 2025 09:41:13 +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 BA06FFEC; Wed, 5 Mar 2025 01:41:24 -0800 (PST) Received: from bogus (unknown [10.57.37.20]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 186323F66E; Wed, 5 Mar 2025 01:41:07 -0800 (PST) Date: Wed, 5 Mar 2025 09:41:04 +0000 From: Sudeep Holla To: Will Deacon Cc: Sebastian Ene , catalin.marinas@arm.com, Sudeep Holla , joey.gouly@arm.com, maz@kernel.org, oliver.upton@linux.dev, snehalreddy@google.com, suzuki.poulose@arm.com, vdonnefort@google.com, yuzenghui@huawei.com, kvmarm@lists.linux.dev, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, kernel-team@android.com, Andrei Homescu Subject: Re: [PATCH v2 4/4] KVM: arm64: Release the ownership of the hyp rx buffer to Trustzone Message-ID: <20250305094104.vctshdtgdukno2aj@bogus> References: <20250227181750.3606372-1-sebastianene@google.com> <20250227181750.3606372-5-sebastianene@google.com> <20250305004522.GC31667@willie-the-truck> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <20250305004522.GC31667@willie-the-truck> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250305_014112_187575_5B1B21BE X-CRM114-Status: GOOD ( 24.28 ) 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 On Wed, Mar 05, 2025 at 12:45:23AM +0000, Will Deacon wrote: > On Thu, Feb 27, 2025 at 06:17:49PM +0000, Sebastian Ene wrote: > > Introduce the release FF-A call to notify Trustzone that the hypervisor > > has finished copying the data from the buffer shared with Trustzone to > > the non-secure partition. > > > > Reported-by: Andrei Homescu > > Signed-off-by: Sebastian Ene > > --- > > arch/arm64/kvm/hyp/nvhe/ffa.c | 7 +++++-- > > 1 file changed, 5 insertions(+), 2 deletions(-) > > > > diff --git a/arch/arm64/kvm/hyp/nvhe/ffa.c b/arch/arm64/kvm/hyp/nvhe/ffa.c > > index 861f24de97cb..7da0203f1ee9 100644 > > --- a/arch/arm64/kvm/hyp/nvhe/ffa.c > > +++ b/arch/arm64/kvm/hyp/nvhe/ffa.c > > @@ -725,6 +725,7 @@ static void do_ffa_part_get(struct arm_smccc_res *res, > > DECLARE_REG(u32, uuid3, ctxt, 4); > > DECLARE_REG(u32, flags, ctxt, 5); > > u32 count, partition_sz, copy_sz; > > + struct arm_smccc_res _res; > > > > hyp_spin_lock(&host_buffers.lock); > > if (!host_buffers.rx) { > > @@ -741,7 +742,7 @@ static void do_ffa_part_get(struct arm_smccc_res *res, > > > > count = res->a2; > > if (!count) > > - goto out_unlock; > > + goto release_rx; > > > > if (hyp_ffa_version > FFA_VERSION_1_0) { > > /* Get the number of partitions deployed in the system */ > > @@ -757,10 +758,12 @@ static void do_ffa_part_get(struct arm_smccc_res *res, > > copy_sz = partition_sz * count; > > if (copy_sz > KVM_FFA_MBOX_NR_PAGES * PAGE_SIZE) { > > ffa_to_smccc_res(res, FFA_RET_ABORTED); > > - goto out_unlock; > > + goto release_rx; > > } > > > > memcpy(host_buffers.rx, hyp_buffers.rx, copy_sz); > > +release_rx: > > + ffa_rx_release(&_res); > > Hmm, the FFA spec is characteristically unclear as to whether or not we > need to release the rx buffer in the case that the flags indicate use of > the rx buffer but the returned partition count is 0. > > Sudeep -- do you know what we should be doing in that case? > We need to call RX_RELEASE here. I went back to the spec to confirm the same again. v1.2 EAC0 spec Section 7.2.2.4.2 Transfer of buffer ownership (Or just look for the section title in any version of the spec) " 2. Ownership transfer for the RX buffer takes place as follows. 2. For a framework message, 1. Completion of the FFA_PARTITION_INFO_GET ABI transfers the ownership of the caller’s RX buffer from the Producer to the Consumer. 3. For both types of messages, an invocation of the following FF-A ABIs transfers the ownership from the Consumer to the Producer. 1. FFA_MSG_WAIT ... 2. FFA_RX_RELEASE. " Hope that helps, can dig deeper if there are any ambiguities around this. -- Regards, Sudeep