From: Catalin Marinas <catalin.marinas@arm.com>
To: "Aneesh Kumar K.V" <aneesh.kumar@kernel.org>
Cc: Marc Zyngier <maz@kernel.org>,
linux-kernel@vger.kernel.org,
linux-arm-kernel@lists.infradead.org, kvmarm@lists.linux.dev,
Oliver Upton <oliver.upton@linux.dev>,
Joey Gouly <joey.gouly@arm.com>,
Zenghui Yu <yuzenghui@huawei.com>, Will Deacon <will@kernel.org>,
Suzuki K Poulose <Suzuki.Poulose@arm.com>,
Steven Price <steven.price@arm.com>,
Peter Collingbourne <pcc@google.com>
Subject: Re: [PATCH] KVM: arm64: Drop mte_allowed check during memslot creation
Date: Wed, 26 Feb 2025 15:58:48 +0000 [thread overview]
Message-ID: <Z786ODqxlYNpj40l@arm.com> (raw)
In-Reply-To: <yq5a8qptauyl.fsf@kernel.org>
On Wed, Feb 26, 2025 at 03:28:26PM +0530, Aneesh Kumar K.V wrote:
> Marc Zyngier <maz@kernel.org> writes:
> > On Mon, 24 Feb 2025 16:44:06 +0000,
> > Aneesh Kumar K.V <aneesh.kumar@kernel.org> wrote:
> >> >> On Mon, Feb 24, 2025 at 12:24:14PM +0000, Marc Zyngier wrote:
> >> >> > > On Mon, Feb 24, 2025 at 03:09:38PM +0530, Aneesh Kumar K.V (Arm) wrote:
> >> >> > > > This change is needed because, without it, users are not able to use MTE
> >> >> > > > with VFIO passthrough (currently the mapping is either Device or
> >> >> > > > NonCacheable for which tag access check is not applied.), as shown
> >> >> > > > below (kvmtool VMM).
[...]
> >> >> > My other concern is that this gives pretty poor consistency to the
> >> >> > guest, which cannot know what can be tagged and what cannot, and
> >> >> > breaks a guarantee that the guest should be able to rely on.
[...]
> >> What if we trigger a memory fault exit with the TAGACCESS flag, allowing
> >> the VMM to use the GPA to retrieve additional details and print extra
> >> information to aid in analysis? BTW, we will do this on the first fault
> >> in cacheable, non-tagged memory even if there is no tagaccess in that
> >> region. This can be further improved using the NoTagAccess series I
> >> posted earlier, which ensures the memory fault exit occurs only on
> >> actual tag access
> >>
> >> Something like below?
> >
> > Something like that, only with:
> >
> > - a capability informing userspace of this behaviour
> >
> > - a per-VM (or per-VMA) flag as a buy-in for that behaviour
>
> If we’re looking for a capability based control, could we tie that up to
> FEAT_MTE_PERM? That’s what I did here:
>
> https://lore.kernel.org/all/20250110110023.2963795-1-aneesh.kumar@kernel.org
>
> That patch set also addresses the issue mentioned here. Let me know if
> you think this is a better approach
From the patch linked above:
| @@ -2152,7 +2162,8 @@ int kvm_arch_prepare_memory_region(struct kvm *kvm,
| if (!vma)
| break;
|
| - if (kvm_has_mte(kvm) && !kvm_vma_mte_allowed(vma)) {
| + if (kvm_has_mte(kvm) &&
| + !kvm_has_mte_perm(kvm) && !kvm_vma_mte_allowed(vma)) {
| ret = -EINVAL;
| break;
| }
we also have the same ABI change every time FEAT_MTE_PERM is present.
TBH, I'd rather have it from the start as per the patch in this thread,
irrespective of FEAT_MTE_PERM. I'm fine, however, with better exit to
VMM information though.
If we don't want to confuse the VMMs, we could skip the
kvm_vma_mte_allowed() check only for VM_ALLOW_ANY_UNCACHED and
VM_PFNMAP vmas, maybe the latter only with FEAT_MTE_PERM. I don't think
the VMM would get it wrong here since a VFIO mmap() would not support
MTE anyway.
--
Catalin
next prev parent reply other threads:[~2025-02-26 15:58 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-02-24 9:39 [PATCH] KVM: arm64: Drop mte_allowed check during memslot creation Aneesh Kumar K.V (Arm)
2025-02-24 10:32 ` Suzuki K Poulose
2025-02-24 11:05 ` Catalin Marinas
2025-02-24 12:24 ` Marc Zyngier
2025-02-24 14:39 ` Catalin Marinas
2025-02-24 15:02 ` Marc Zyngier
2025-02-24 16:44 ` Aneesh Kumar K.V
2025-02-24 17:23 ` Marc Zyngier
2025-02-26 8:02 ` Oliver Upton
2025-02-26 9:58 ` Aneesh Kumar K.V
2025-02-26 15:58 ` Catalin Marinas [this message]
2025-02-26 16:48 ` Aneesh Kumar K.V
2025-02-26 18:02 ` Catalin Marinas
2025-02-24 18:00 ` Catalin Marinas
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=Z786ODqxlYNpj40l@arm.com \
--to=catalin.marinas@arm.com \
--cc=Suzuki.Poulose@arm.com \
--cc=aneesh.kumar@kernel.org \
--cc=joey.gouly@arm.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=pcc@google.com \
--cc=steven.price@arm.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.