[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PULL 04/29] arm/kvm: add support for MTE
|
From: |
Alex Bennée |
|
Subject: |
Re: [PULL 04/29] arm/kvm: add support for MTE |
|
Date: |
Mon, 22 May 2023 11:12:58 +0100 |
|
User-agent: |
mu4e 1.11.6; emacs 29.0.91 |
Cornelia Huck <cohuck@redhat.com> writes:
> On Fri, May 19 2023, Peter Maydell <peter.maydell@linaro.org> wrote:
>
>> 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
>
> Sigh, this patch seems to be cursed :( Apologies for the fallout.
>
> (I'm wondering what makes this pop up, maybe the CONFIG_MEMTEST?)
>
>>>
>>> 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()).
>
> Hrm, do we need explicit init of this field? Probably needless to say
> that I didn't hit this problem in any of my tests... I suspect that only
> specific kernels hit this?
Yes - my local test kernel usually has a rotating case of all the bells
and whistles enabled so catches things like this. I didn't attempt to
bisect the config but here is the current state if its useful:
config.gz
Description: config for my failing kernel setup
I think it would be worthwhile adding a specific MTE enabled kernel to
the avocado tests if none of the existing ones can be booted up with MTE
enabled.
--
Alex Bennée
Virtualisation Tech Lead @ Linaro
[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
[PULL 11/29] target/arm: Split gen_add_CC and gen_sub_CC, Peter Maydell, 2023/05/18
[PULL 15/29] target/arm: Convert Logical (immediate) to decodetree, Peter Maydell, 2023/05/18