On Fri, 19 May 2023 at 14:31, Peter Maydell <peter.mayd...@linaro.org> wrote:
>
> On Fri, 19 May 2023 at 13:55, Alex Bennée <alex.ben...@linaro.org> wrote:
> >
> >
> > Peter Maydell <peter.mayd...@linaro.org> writes:
> >
> > > From: Cornelia Huck <coh...@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 <coh...@redhat.com>
> > > Reviewed-by: Peter Maydell <peter.mayd...@linaro.org>
> > > Reviewed-by: Richard Henderson <richard.hender...@linaro.org>
> > > Message-id: 20230428095533.21747-2-coh...@redhat.com
> > > Signed-off-by: Peter Maydell <peter.mayd...@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

Reply via email to