[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PULL 04/29] arm/kvm: add support for MTE
From: |
Peter Maydell |
Subject: |
Re: [PULL 04/29] arm/kvm: add support for MTE |
Date: |
Fri, 19 May 2023 15:52:38 +0100 |
On Fri, 19 May 2023 at 14:31, Peter Maydell <peter.maydell@linaro.org> wrote:
>
> On Fri, 19 May 2023 at 13:55, Alex Bennée <alex.bennee@linaro.org> wrote:
> >
> >
> > Peter Maydell <peter.maydell@linaro.org> writes:
> >
> > > From: Cornelia Huck <cohuck@redhat.com>
> > >
> > > Extend the 'mte' property for the virt machine to cover KVM as
> > > well. For KVM, we don't allocate tag memory, but instead enable the
> > > capability.
> > >
> > > If MTE has been enabled, we need to disable migration, as we do not
> > > yet have a way to migrate the tags as well. Therefore, MTE will stay
> > > off with KVM unless requested explicitly.
> > >
> > > Signed-off-by: Cornelia Huck <cohuck@redhat.com>
> > > Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
> > > Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
> > > Message-id: 20230428095533.21747-2-cohuck@redhat.com
> > > Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
> >
> > I bisected to this commit which causes a segfault on one of my test
> > kernels (6.3.2 arm64):
> >
> > ➜ ag MTE .config
> > 486:CONFIG_ARM64_AS_HAS_MTE=y
> > 487:CONFIG_ARM64_MTE=y
> > 2949:CONFIG_WLAN_VENDOR_ADMTEK=y
> > 3573:# CONFIG_I2C_SIMTEC is not set
> > 5278:# CONFIG_DRM_PANEL_TPO_TD043MTEA1 is not set
> > 9749:CONFIG_ARCH_USE_MEMTEST=y
> > 9750:CONFIG_MEMTEST=y
>
> Try this entirely untested patch?
>
> diff --git a/target/arm/cpu.c b/target/arm/cpu.c
> index f6a88e52ac2..f350661a928 100644
> --- a/target/arm/cpu.c
> +++ b/target/arm/cpu.c
> @@ -1593,6 +1593,15 @@ static void arm_cpu_realizefn(DeviceState *dev,
> Error **errp)
> }
> }
>
> + /*
> + * For TCG, we can only present MTE to the guest if the board gave us
> + * tag RAM. Set has_mte appropriately so code below doesn't need to
> + * care whether we're TCG or KVM when deciding if MTE is present.
> + */
> + if (tcg_enabled() || qtest_enabled()) {
> + cpu->has_mte = cpu->tag_memory != NULL;
> + }
> +
> if (!tcg_enabled() && !qtest_enabled()) {
> /*
> * We assume that no accelerator except TCG (and the "not really an
Hmm, actually I don't think that's the only fix needed. It's OK for
TCG, but for KVM I can't see anywhere in the code that ever sets
has_mte to false. We default it to on in the cpu.c code, but
then the board code only sets it to true if MTE is enabled
(via kvm_arm_enable_mte()).
Let's just revert the patch while we figure out the right logic.
I'll send a revert patch in a moment.
thanks
-- PMM
[PULL 08/29] target/arm: Create decodetree skeleton for A64, Peter Maydell, 2023/05/18
[PULL 07/29] target/arm: Split out disas_a64_legacy, Peter Maydell, 2023/05/18
[PULL 05/29] target/arm: add RAZ/WI handling for DBGDTR[TX|RX], Peter Maydell, 2023/05/18
[PULL 26/29] target/arm: Convert ERET, ERETAA, ERETAB to decodetree, Peter Maydell, 2023/05/18
[PULL 02/29] target/arm: Fix vd == vm overlap in sve_ldff1_z, Peter Maydell, 2023/05/18
[PULL 03/29] Maintainers: add myself as reviewer for sbsa-ref, Peter Maydell, 2023/05/18
[PULL 09/29] target/arm: Pull calls to disas_sve() and disas_sme() out of legacy decoder, Peter Maydell, 2023/05/18
[PULL 10/29] target/arm: Convert PC-rel addressing to decodetree, Peter Maydell, 2023/05/18