From: Sebastian Ene <sebastianene@google.com>
To: Will Deacon <will@kernel.org>
Cc: catalin.marinas@arm.com, joey.gouly@arm.com, maz@kernel.org,
oliver.upton@linux.dev, snehalreddy@google.com,
sudeep.holla@arm.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
Subject: Re: [PATCH v2 3/4] KVM: arm64: Map the hypervisor FF-A buffers on ffa init
Date: Tue, 4 Mar 2025 17:38:02 +0000 [thread overview]
Message-ID: <Z8c6enoolJe7Zeqk@google.com> (raw)
In-Reply-To: <20250304015633.GA30882@willie-the-truck>
On Tue, Mar 04, 2025 at 01:56:35AM +0000, Will Deacon wrote:
> On Tue, Mar 04, 2025 at 12:53:25AM +0000, Sebastian Ene wrote:
> > On Mon, Mar 03, 2025 at 11:43:03PM +0000, Will Deacon wrote:
> > > On Thu, Feb 27, 2025 at 06:17:48PM +0000, Sebastian Ene wrote:
> > > > Map the hypervisor's buffers irrespective to the host and return
> > > > a linux error code from the FF-A error code on failure. Remove
> > > > the unmap ff-a buffers calls from the hypervisor as it will
> > > > never be called.
> > > > Prevent the host from using FF-A directly with Trustzone
> > > > if the hypervisor could not map its own buffers.
> > > >
> > > > Signed-off-by: Sebastian Ene <sebastianene@google.com>
> > > > ---
> > > > arch/arm64/kvm/hyp/nvhe/ffa.c | 46 +++++++++++++----------------------
> > > > 1 file changed, 17 insertions(+), 29 deletions(-)
> > >
> > > [...]
> > >
> > > > @@ -861,6 +842,7 @@ int hyp_ffa_init(void *pages)
> > > > {
> > > > struct arm_smccc_res res;
> > > > void *tx, *rx;
> > > > + int ret;
> > > >
> > > > if (kvm_host_psci_config.smccc_version < ARM_SMCCC_VERSION_1_2)
> > > > return 0;
> > > > @@ -911,5 +893,11 @@ int hyp_ffa_init(void *pages)
> > > > .lock = __HYP_SPIN_LOCK_UNLOCKED,
> > > > };
> > > >
> > > > + /* Map our hypervisor buffers into the SPMD */
> > > > + ret = ffa_map_hyp_buffers();
> > > > + if (ret)
> > > > + return ret;
> > >
> > > Doesn't calling RXTX_MAP here undo the fix from c9c012625e12 ("KVM:
> > > arm64: Trap FFA_VERSION host call in pKVM") where we want to allow for
> > > the host to negotiate the version lazily?
> >
> > We still have the same behaviour where we don't allow memory
> > sharing to happen until the version is negotiated but this
> > separates the hypervisor buffer mapping part from the host.
>
> Sadly, the spec doesn't restrict this to the memory sharing calls:
>
> | [...] negotiation of the version must happen before an invocation of
> | any other FF-A ABI
>
We do that, as the hypervisor negotiates its own version in
hyp_ffa_init. I think the host shouldn't be allowed to overwrite the
hyp_ffa_version obtained from _init, this feels wrong as you
can have a driver that forcefully downgrades the hypervisor to an old
version.
We need to do three things, Sudeep & Will please correct me if I am
wrong, but this is how I see it:
- the hypervisor should act as a separate entity (it has a different ID and
in the current implementation we don't do a distinction between host/hyp) and
it should be able to lock its own version from init.
- keep a separate version negotiated for the host
- trap FFA_ID_GET from the host and return ID=1 because
currently we forward the call to the TZ and it returns the same ID
as the (hypervisor == 0).
> We're also probing the minimum rxtx size in hyp_ffa_post_init() so doing
> this here is doubly wrong.
>
Those operations should happen before the current ffa_map_hyp_buffers()
call, I agree.
Thanks,
Sebastian
> So I think we should probably just drop this patch.
>
> Will
next prev parent reply other threads:[~2025-03-04 17:38 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-02-27 18:17 [PATCH v2 0/4] KVM: arm64: Separate the hyp FF-A buffers init from the host Sebastian Ene
2025-02-27 18:17 ` [PATCH v2 1/4] KVM: arm64: Use the static initializer for the vesion lock Sebastian Ene
2025-03-05 0:39 ` Will Deacon
2025-02-27 18:17 ` [PATCH v2 2/4] KVM: arm64: Move the ffa_to_linux definition to the ffa header Sebastian Ene
2025-02-27 20:25 ` Sudeep Holla
2025-02-27 23:12 ` Sebastian Ene
2025-02-28 10:09 ` Marc Zyngier
2025-03-03 23:44 ` Will Deacon
2025-03-04 0:38 ` Sebastian Ene
2025-03-04 9:54 ` Sudeep Holla
2025-03-04 9:57 ` Sudeep Holla
2025-02-27 18:17 ` [PATCH v2 3/4] KVM: arm64: Map the hypervisor FF-A buffers on ffa init Sebastian Ene
2025-03-03 23:43 ` Will Deacon
2025-03-04 0:53 ` Sebastian Ene
2025-03-04 1:56 ` Will Deacon
2025-03-04 17:38 ` Sebastian Ene [this message]
2025-03-05 0:38 ` Will Deacon
2025-03-05 18:36 ` Sebastian Ene
2025-03-13 12:04 ` Will Deacon
2025-02-27 18:17 ` [PATCH v2 4/4] KVM: arm64: Release the ownership of the hyp rx buffer to Trustzone Sebastian Ene
2025-03-05 0:45 ` Will Deacon
2025-03-05 9:41 ` Sudeep Holla
2025-03-05 19:34 ` Will Deacon
2025-03-06 9:40 ` Sudeep Holla
2025-03-13 12:15 ` Will Deacon
2025-03-13 14:00 ` Sudeep Holla
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=Z8c6enoolJe7Zeqk@google.com \
--to=sebastianene@google.com \
--cc=catalin.marinas@arm.com \
--cc=joey.gouly@arm.com \
--cc=kernel-team@android.com \
--cc=kvmarm@lists.linux.dev \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=maz@kernel.org \
--cc=oliver.upton@linux.dev \
--cc=snehalreddy@google.com \
--cc=sudeep.holla@arm.com \
--cc=suzuki.poulose@arm.com \
--cc=vdonnefort@google.com \
--cc=will@kernel.org \
--cc=yuzenghui@huawei.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.